From 74783f3b935b7157211bf763290ae712c0f69f0f Mon Sep 17 00:00:00 2001 From: Daniel Wang <99078276+dantaik@users.noreply.github.com> Date: Mon, 18 Sep 2023 13:01:50 +0800 Subject: [PATCH 01/87] feat(protocol): Contestable zkRollup [DRAFT] (#14703) Co-authored-by: Daniel Wang --- .../protocol/contracts/L1/IProofVerifier.sol | 24 - packages/protocol/contracts/L1/IProver.sol | 4 +- .../protocol/contracts/L1/ProofVerifier.sol | 75 --- packages/protocol/contracts/L1/TaikoData.sol | 82 ++-- .../protocol/contracts/L1/TaikoErrors.sol | 25 +- .../protocol/contracts/L1/TaikoEvents.sol | 56 ++- packages/protocol/contracts/L1/TaikoL1.sol | 249 +++++++++- .../protocol/contracts/L1/TaikoL1Base.sol | 265 ----------- .../contracts/L1/libs/LibDepositing.sol | 29 +- .../contracts/L1/libs/LibProposing.sol | 284 ++++++------ .../protocol/contracts/L1/libs/LibProving.sol | 435 +++++++++++++----- .../contracts/L1/libs/LibTaikoToken.sol | 72 --- .../protocol/contracts/L1/libs/LibTiers.sol | 85 ++++ .../protocol/contracts/L1/libs/LibUtils.sol | 108 +++-- .../contracts/L1/libs/LibVerifying.sol | 155 +++++-- .../L1/libs/verifiers/LibZKPVerifier.sol | 45 -- .../L1/verifiers/GuardianVerifier.sol | 46 ++ .../L1/verifiers/IEvidenceVerifier.sol | 19 + .../contracts/L1/verifiers/PseZkVerifier.sol | 110 +++++ .../contracts/L1/verifiers/SGXVerifier.sol | 43 ++ .../contracts/tokenvault/BridgedERC721.sol | 4 +- packages/protocol/docs/DESIGN.md | 0 .../docs/contestable_validity_rollup.md | 95 ++++ packages/protocol/script/DeployOnL1.s.sol | 27 +- packages/protocol/test/L1/TaikoL1.t.sol | 29 +- packages/protocol/test/L1/TaikoL1Oracle.t.sol | 61 ++- packages/protocol/test/L1/TaikoL1TestBase.sol | 44 +- .../protocol/test/misc/GasComparison.t.sol | 320 ------------- 28 files changed, 1425 insertions(+), 1366 deletions(-) delete mode 100644 packages/protocol/contracts/L1/IProofVerifier.sol delete mode 100644 packages/protocol/contracts/L1/ProofVerifier.sol delete mode 100644 packages/protocol/contracts/L1/TaikoL1Base.sol delete mode 100644 packages/protocol/contracts/L1/libs/LibTaikoToken.sol create mode 100644 packages/protocol/contracts/L1/libs/LibTiers.sol delete mode 100644 packages/protocol/contracts/L1/libs/verifiers/LibZKPVerifier.sol create mode 100644 packages/protocol/contracts/L1/verifiers/GuardianVerifier.sol create mode 100644 packages/protocol/contracts/L1/verifiers/IEvidenceVerifier.sol create mode 100644 packages/protocol/contracts/L1/verifiers/PseZkVerifier.sol create mode 100644 packages/protocol/contracts/L1/verifiers/SGXVerifier.sol delete mode 100644 packages/protocol/docs/DESIGN.md create mode 100644 packages/protocol/docs/contestable_validity_rollup.md delete mode 100644 packages/protocol/test/misc/GasComparison.t.sol diff --git a/packages/protocol/contracts/L1/IProofVerifier.sol b/packages/protocol/contracts/L1/IProofVerifier.sol deleted file mode 100644 index 0f10d7e901..0000000000 --- a/packages/protocol/contracts/L1/IProofVerifier.sol +++ /dev/null @@ -1,24 +0,0 @@ -// SPDX-License-Identifier: MIT -// _____ _ _ _ _ -// |_ _|_ _(_) |_____ | | __ _| |__ ___ -// | |/ _` | | / / _ \ | |__/ _` | '_ (_-< -// |_|\__,_|_|_\_\___/ |____\__,_|_.__/__/ - -pragma solidity ^0.8.20; - -/// @title IProofVerifier -/// @notice Contract that is responsible for verifying proofs. -interface IProofVerifier { - /// @notice Verify the given proof(s) for the given blockId. This function - /// should revert if the verification fails. - /// @param blockId Unique identifier for the block. - /// @param blockProofs Raw bytes representing the proof(s). - /// @param instance Hashed evidence & config data. If set to zero, proof is - /// assumed to be from oracle prover. - function verifyProofs( - uint64 blockId, - bytes calldata blockProofs, - bytes32 instance - ) - external; -} diff --git a/packages/protocol/contracts/L1/IProver.sol b/packages/protocol/contracts/L1/IProver.sol index 436f866546..d7fc31f7cd 100644 --- a/packages/protocol/contracts/L1/IProver.sol +++ b/packages/protocol/contracts/L1/IProver.sol @@ -16,11 +16,11 @@ interface IProver { /// @param blockId The ID of the proposed block. Note that the ID is only /// known when the block is proposed, therefore, it should not be used for /// verifying prover authorization. - /// @param input The block's BlockMetadataInput data. + /// @param txListHash The block's txList hash /// @param assignment The assignment to evaluate function onBlockAssigned( uint64 blockId, - TaikoData.BlockMetadataInput calldata input, + bytes32 txListHash, TaikoData.ProverAssignment calldata assignment ) external diff --git a/packages/protocol/contracts/L1/ProofVerifier.sol b/packages/protocol/contracts/L1/ProofVerifier.sol deleted file mode 100644 index 22fbfa1f78..0000000000 --- a/packages/protocol/contracts/L1/ProofVerifier.sol +++ /dev/null @@ -1,75 +0,0 @@ -// SPDX-License-Identifier: MIT -// _____ _ _ _ _ -// |_ _|_ _(_) |_____ | | __ _| |__ ___ -// | |/ _` | | / / _ \ | |__/ _` | '_ (_-< -// |_|\__,_|_|_\_\___/ |____\__,_|_.__/__/ - -pragma solidity ^0.8.20; - -import { AddressResolver } from "../common/AddressResolver.sol"; -import { EssentialContract } from "../common/EssentialContract.sol"; -import { IProofVerifier } from "./IProofVerifier.sol"; -import { LibBytesUtils } from "../thirdparty/LibBytesUtils.sol"; -import { LibZKPVerifier } from "./libs/verifiers/LibZKPVerifier.sol"; -import { Proxied } from "../common/Proxied.sol"; - -/// @title ProofVerifier -/// @notice See the documentation in {IProofVerifier}. -contract ProofVerifier is EssentialContract, IProofVerifier { - uint256[50] private __gap; - - error L1_INVALID_PROOF(); - - /// @notice Initializes the contract with the provided address manager. - /// @param _addressManager The address of the address manager contract. - function init(address _addressManager) external initializer { - EssentialContract._init(_addressManager); - } - - /// @inheritdoc IProofVerifier - function verifyProofs( - // blockId is unused now, but can be used later when supporting - // different types of proofs. - uint64, - bytes calldata blockProofs, - bytes32 instance - ) - external - view - { - // If instance is zero, proof is considered as from oracle prover - // and not checked. - if (instance == 0) return; - - // Validate the instance using bytes utilities. - if ( - !LibBytesUtils.equal( - LibBytesUtils.slice(blockProofs, 2, 32), - bytes.concat(bytes16(0), bytes16(instance)) - ) - ) { - revert L1_INVALID_PROOF(); - } - - if ( - !LibBytesUtils.equal( - LibBytesUtils.slice(blockProofs, 34, 32), - bytes.concat(bytes16(0), bytes16(uint128(uint256(instance)))) - ) - ) { - revert L1_INVALID_PROOF(); - } - - // Extract verifier ID from the proof. - uint16 verifierId = uint16(bytes2(blockProofs[0:2])); - - // Delegate to the ZKP verifier library to validate the proof. - LibZKPVerifier.verifyProof( - AddressResolver(address(this)), blockProofs[2:], verifierId - ); - } -} - -/// @title ProxiedProofVerifier -/// @notice Proxied version of the parent contract. -contract ProxiedProofVerifier is Proxied, ProofVerifier { } diff --git a/packages/protocol/contracts/L1/TaikoData.sol b/packages/protocol/contracts/L1/TaikoData.sol index 629cd659fd..bc5e55ac81 100644 --- a/packages/protocol/contracts/L1/TaikoData.sol +++ b/packages/protocol/contracts/L1/TaikoData.sol @@ -35,8 +35,6 @@ library TaikoData { uint32 blockFeeBaseGas; // The maximum allowed bytes for the proposed transaction list calldata. uint24 blockMaxTxListBytes; - // The expiration time for the block transaction list. - uint256 blockTxListExpiry; // Amount of token to reward to the first block propsoed in each L1 // block. uint256 proposerRewardPerSecond; @@ -44,16 +42,10 @@ library TaikoData { // --------------------------------------------------------------------- // Group 3: Proof related configs // --------------------------------------------------------------------- - // The cooldown period for regular proofs (in minutes). - uint256 proofRegularCooldown; - // The cooldown period for oracle proofs (in minutes). - uint256 proofOracleCooldown; - // The maximum time window allowed for a proof submission (in minutes). - uint16 proofWindow; - // The amount of Taiko token as a bond - uint96 proofBond; + // The amount of Taiko token as a zk proof bond + uint96 assignmentBond; // True to skip proof verification - bool skipProverAssignmentVerificaiton; + bool skipAssignmentVerificaiton; // --------------------------------------------------------------------- // Group 4: ETH deposit related configs // --------------------------------------------------------------------- @@ -73,23 +65,22 @@ library TaikoData { uint256 ethDepositMaxFee; } + struct TierConfig { + bytes32 verifierName; + uint96 proofBond; + uint96 contestBond; + uint24 cooldownWindow; + uint16 provingWindow; + } + /// @dev Struct holding state variables. struct StateVariables { uint64 genesisHeight; uint64 genesisTimestamp; - uint64 numBlocks; - uint64 lastVerifiedBlockId; uint64 nextEthDepositToProcess; uint64 numEthDeposits; - } - - /// @dev Struct representing input data for block metadata. - struct BlockMetadataInput { - bytes32 txListHash; - address proposer; - uint24 txListByteStart; // byte-wise start index (inclusive) - uint24 txListByteEnd; // byte-wise end index (exclusive) - bool cacheTxListInfo; + uint64 numBlocks; + uint64 lastVerifiedBlockId; } /// @dev Struct representing prover assignment @@ -100,19 +91,13 @@ library TaikoData { } /// @dev Struct containing data only required for proving a block - /// Warning: changing this struct requires changing {LibUtils.hashMetadata} - /// accordingly. struct BlockMetadata { - uint64 id; - uint64 timestamp; - uint64 l1Height; bytes32 l1Hash; bytes32 mixHash; bytes32 txListHash; - uint24 txListByteStart; - uint24 txListByteEnd; + uint64 timestamp; + uint64 l1Height; uint32 gasLimit; - address proposer; TaikoData.EthDeposit[] depositsProcessed; } @@ -123,31 +108,36 @@ library TaikoData { bytes32 blockHash; bytes32 signalRoot; bytes32 graffiti; - address prover; - bytes proofs; + uint16 tier; + bytes proof; } /// @dev Struct representing state transition data. - /// 10 slots reserved for upgradability, 4 slots used. + /// 10 slots reserved for upgradability, 6 slots used. struct Transition { - bytes32 key; //only written/read for the 1st state transition. - bytes32 blockHash; - bytes32 signalRoot; - address prover; - uint64 provenAt; - bytes32[6] __reserved; + bytes32 key; // slot 1, only written/read for the 1st state transition. + bytes32 blockHash; // slot 2 + bytes32 signalRoot; // slot 3 + address prover; // slot 4 + uint96 proofBond; + address contester; // slot 5 + uint96 contestBond; + uint64 timestamp; // slot 6 (82 bits) + uint16 tier; + bytes32[4] __reserved; } /// @dev Struct containing data required for verifying a block. /// 10 slots reserved for upgradability, 3 slots used. struct Block { bytes32 metaHash; // slot 1 - address prover; // slot 2 - uint96 proofBond; + address assignedProver; // slot 2 + uint96 assignmentBond; uint64 blockId; // slot 3 uint64 proposedAt; uint32 nextTransitionId; uint32 verifiedTransitionId; + uint16 minTier; bytes32[7] __reserved; } @@ -198,15 +188,11 @@ library TaikoData { uint64 blockId_mod_blockRingBufferSize => mapping(uint32 transitionId => Transition) ) transitions; - // txList cached info - mapping(bytes32 txListHash => TxListInfo) txListInfo; // Ring buffer for Ether deposits mapping(uint256 depositId_mod_ethDepositRingBufferSize => uint256) ethDeposits; - // In-protocol Taiko token balances - mapping(address account => uint256 balance) taikoTokenBalances; - SlotA slotA; // slot 7 - SlotB slotB; // slot 8 - uint256[142] __gap; + SlotA slotA; // slot 5 + SlotB slotB; // slot 6 + uint256[144] __gap; } } diff --git a/packages/protocol/contracts/L1/TaikoErrors.sol b/packages/protocol/contracts/L1/TaikoErrors.sol index 8a5eb8958c..7321ed29fd 100644 --- a/packages/protocol/contracts/L1/TaikoErrors.sol +++ b/packages/protocol/contracts/L1/TaikoErrors.sol @@ -13,29 +13,32 @@ pragma solidity ^0.8.20; abstract contract TaikoErrors { // NOTE: The following custom errors must match the definitions in // `L1/libs/*.sol`. - error L1_ALREADY_PROVEN(); - error L1_BLOCK_ID_MISMATCH(); - error L1_EVIDENCE_MISMATCH(); - error L1_INSUFFICIENT_TOKEN(); + error L1_ALREADY_CONTESTED(); + error L1_ALREADY_PROVED(); + error L1_ASSIGNED_PROVER_NOT_ALLOWED(); + error L1_BLOCK_MISMATCH(); error L1_INVALID_ASSIGNMENT(); error L1_INVALID_BLOCK_ID(); error L1_INVALID_CONFIG(); error L1_INVALID_ETH_DEPOSIT(); error L1_INVALID_EVIDENCE(); error L1_INVALID_METADATA(); - error L1_INVALID_ORACLE_PROVER(); error L1_INVALID_PARAM(); error L1_INVALID_PROOF(); error L1_INVALID_PROPOSER(); error L1_INVALID_PROVER(); error L1_INVALID_PROVER_SIG(); - error L1_NOT_PROVEABLE(); - error L1_SAME_PROOF(); + error L1_INVALID_TIER(); + error L1_NOT_ASSIGNED_PROVER(); + error L1_TIER_NOT_FOUND(); error L1_TOO_MANY_BLOCKS(); + error L1_TRANSITION_ID_ZERO(); error L1_TRANSITION_NOT_FOUND(); - error L1_TX_LIST_NOT_EXIST(); - error L1_TX_LIST_HASH(); - error L1_TX_LIST_RANGE(); - error L1_TX_LIST(); + error L1_TXLIST_INVALID_RANGE(); + error L1_TXLIST_MISMATCH(); + error L1_TXLIST_NOT_FOUND(); + error L1_TXLIST_TOO_LARGE(); + error L1_UNAUTHORIZED(); error L1_UNEXPECTED_TRANSITION_ID(); + error L1_UNEXPECTED_TRANSITION_TIER(); } diff --git a/packages/protocol/contracts/L1/TaikoEvents.sol b/packages/protocol/contracts/L1/TaikoEvents.sol index 4fdc049e9f..e78d8ce71b 100644 --- a/packages/protocol/contracts/L1/TaikoEvents.sol +++ b/packages/protocol/contracts/L1/TaikoEvents.sol @@ -17,50 +17,56 @@ import { TaikoData } from "./TaikoData.sol"; abstract contract TaikoEvents { /// @dev Emitted when a block is proposed. /// @param blockId The ID of the proposed block. - /// @param prover The address of the assigned prover for the block. + /// @param assignedProver The block's assigned prover /// @param reward The proposer's block reward in Taiko token. /// @param meta The block metadata containing information about the proposed /// block. event BlockProposed( uint256 indexed blockId, - address indexed prover, + address indexed assignedProver, + uint96 assignmentBond, uint256 reward, TaikoData.BlockMetadata meta ); - /// @dev Emitted when a block is proven. - /// @param blockId The ID of the proven block. - /// @param parentHash The hash of the parent block. - /// @param blockHash The hash of the proven block. - /// @param signalRoot The signal root of the proven block. - /// @param prover The address of the prover who submitted the proof. - event BlockProven( + /// @dev Emitted when a block is verified. + /// @param blockId The ID of the verified block. + /// @param assignedProver The block's assigned prover + /// @param prover The prover whose transition is used for verifing the + /// block. + /// @param blockHash The hash of the verified block. + event BlockVerified( + uint256 indexed blockId, + address indexed assignedProver, + address indexed prover, + bytes32 blockHash, + bytes32 signalRoot + ); + + /// @dev Emitted when a block transition is proved or re-proved. + event TransitionProved( uint256 indexed blockId, bytes32 parentHash, bytes32 blockHash, bytes32 signalRoot, - address prover + address prover, + uint96 proofBond, + uint16 tier ); - /// @dev Emitted when a block is verified. - /// @param blockId The ID of the verified block. - /// @param prover The address of the prover that proved the block which is - /// verified. - /// @param blockHash The hash of the verified block. - event BlockVerified( - uint256 indexed blockId, address indexed prover, bytes32 blockHash + /// @dev Emitted when a block transition is contested. + event TransitionContested( + uint256 indexed blockId, + bytes32 parentHash, + bytes32 blockHash, + bytes32 signalRoot, + address contester, + uint96 contestBond, + uint16 tier ); /// @dev Emitted when an Ethereum deposit is made. /// @param deposit The Ethereum deposit information including recipient, /// amount, and ID. event EthDeposited(TaikoData.EthDeposit deposit); - - /// @dev The following events are emitted when bonds are received, returned, - /// or rewarded. Note that no event is emitted when a bond is kept/burnt as - /// for a single block, multiple bonds may get burned or retained by the - /// protocol, emitting events will consume more gas. - event BondReceived(address indexed from, uint64 blockId, uint256 bond); - event BondReturned(address indexed to, uint64 blockId, uint256 bond); - event BondRewarded(address indexed to, uint64 blockId, uint256 bond); } diff --git a/packages/protocol/contracts/L1/TaikoL1.sol b/packages/protocol/contracts/L1/TaikoL1.sol index 6de751ca12..95481a8293 100644 --- a/packages/protocol/contracts/L1/TaikoL1.sol +++ b/packages/protocol/contracts/L1/TaikoL1.sol @@ -6,16 +6,251 @@ pragma solidity ^0.8.20; +import { AddressResolver } from "../common/AddressResolver.sol"; +import { EssentialContract } from "../common/EssentialContract.sol"; +import { ICrossChainSync } from "../common/ICrossChainSync.sol"; +import { LibDepositing } from "./libs/LibDepositing.sol"; +import { LibProposing } from "./libs/LibProposing.sol"; +import { LibProving } from "./libs/LibProving.sol"; +import { LibTiers } from "./libs/LibTiers.sol"; +import { LibUtils } from "./libs/LibUtils.sol"; +import { LibVerifying } from "./libs/LibVerifying.sol"; import { Proxied } from "../common/Proxied.sol"; import { TaikoData } from "./TaikoData.sol"; -import { TaikoL1Base } from "./TaikoL1Base.sol"; +import { TaikoErrors } from "./TaikoErrors.sol"; +import { TaikoEvents } from "./TaikoEvents.sol"; -contract TaikoL1 is TaikoL1Base { +/// @title TaikoL1 +/// @notice This contract serves as the "base layer contract" of the Taiko +/// protocol, providing functionalities for proposing, proving, and verifying +/// blocks. The term "base layer contract" means that although this is usually +/// deployed on L1, it can also be deployed on L2s to create L3s ("inception +/// layers"). The contract also handles the deposit and withdrawal of Taiko +/// tokens and Ether. +contract TaikoL1 is + EssentialContract, + ICrossChainSync, + TaikoEvents, + TaikoErrors +{ + TaikoData.State public state; + uint256[100] private __gap; + + /// @dev Fallback function to receive Ether and deposit to to Layer 2. + receive() external payable { + depositEtherToL2(address(0)); + } + + /// @notice Initializes the rollup. + /// @param _addressManager The {AddressManager} address. + /// @param _genesisBlockHash The block hash of the genesis block. + function init( + address _addressManager, + bytes32 _genesisBlockHash + ) + external + initializer + { + EssentialContract._init(_addressManager); + LibVerifying.init({ + state: state, + config: getConfig(), + genesisBlockHash: _genesisBlockHash + }); + } + + /// @notice Proposes a Taiko L2 block. + /// @param txListHash The hash of the block's txList + /// @param assignment Data to assign a prover. + /// @param txList A list of transactions in this block, encoded with RLP. + /// Note, in the corresponding L2 block an "anchor transaction" will be the + /// first transaction in the block. If there are `n` transactions in the + /// `txList`, then there will be up to `n + 1` transactions in the L2 block. + /// @return meta The metadata of the proposed L2 block. + function proposeBlock( + bytes32 txListHash, + bytes calldata assignment, + bytes calldata txList + ) + external + payable + nonReentrant + returns (TaikoData.BlockMetadata memory meta) + { + TaikoData.Config memory config = getConfig(); + meta = LibProposing.proposeBlock({ + state: state, + config: config, + resolver: AddressResolver(this), + txListHash: txListHash, + assignment: abi.decode(assignment, (TaikoData.ProverAssignment)), + txList: txList + }); + if (config.blockMaxVerificationsPerTx > 0) { + LibVerifying.verifyBlocks({ + state: state, + config: config, + resolver: AddressResolver(this), + maxBlocks: config.blockMaxVerificationsPerTx + }); + } + } + + /// @notice Proves or contests a block transition. + /// @param blockId The index of the block to prove. This is also used to + /// select the right implementation version. + /// @param input An abi-encoded {TaikoData.BlockEvidence} object. + function proveBlock( + uint64 blockId, + bytes calldata input + ) + external + nonReentrant + { + TaikoData.Config memory config = getConfig(); + LibProving.proveBlock({ + state: state, + config: config, + resolver: AddressResolver(this), + blockId: blockId, + evidence: abi.decode(input, (TaikoData.BlockEvidence)) + }); + if (config.blockMaxVerificationsPerTx > 0) { + LibVerifying.verifyBlocks({ + state: state, + config: config, + resolver: AddressResolver(this), + maxBlocks: config.blockMaxVerificationsPerTx + }); + } + } + + /// @notice Verifies up to N blocks. + /// @param maxBlocks Max number of blocks to verify. + function verifyBlocks(uint64 maxBlocks) external nonReentrant { + if (maxBlocks == 0) revert L1_INVALID_PARAM(); + LibVerifying.verifyBlocks({ + state: state, + config: getConfig(), + resolver: AddressResolver(this), + maxBlocks: maxBlocks + }); + } + + /// @notice Deposits Ether to Layer 2. + /// @param recipient Address of the recipient for the deposited Ether on + /// Layer 2. + function depositEtherToL2(address recipient) public payable { + LibDepositing.depositEtherToL2({ + state: state, + config: getConfig(), + resolver: AddressResolver(this), + recipient: recipient + }); + } + + /// @notice Checks if Ether deposit is allowed for Layer 2. + /// @param amount Amount of Ether to be deposited. + /// @return true if Ether deposit is allowed, false otherwise. + function canDepositEthToL2(uint256 amount) public view returns (bool) { + return LibDepositing.canDepositEthToL2({ + state: state, + config: getConfig(), + amount: amount + }); + } + + /// @notice Gets the details of a block. + /// @param blockId Index of the block. + /// @return blk The block. + function getBlock(uint64 blockId) + public + view + returns (TaikoData.Block memory blk) + { + return LibUtils.getBlock({ + state: state, + config: getConfig(), + blockId: blockId + }); + } + + /// @notice Gets the state transition for a specific block. + /// @param blockId Index of the block. + /// @param parentHash Parent hash of the block. + /// @return The state transition data of the block. + function getTransition( + uint64 blockId, + bytes32 parentHash + ) + public + view + returns (TaikoData.Transition memory) + { + return LibUtils.getTransition({ + state: state, + config: getConfig(), + blockId: blockId, + parentHash: parentHash + }); + } + + /// @inheritdoc ICrossChainSync + function getCrossChainBlockHash(uint64 blockId) + public + view + override + returns (bytes32) + { + return LibUtils.getVerifyingTransition(state, getConfig(), blockId) + .blockHash; + } + + /// @inheritdoc ICrossChainSync + function getCrossChainSignalRoot(uint64 blockId) + public + view + override + returns (bytes32) + { + return LibUtils.getVerifyingTransition(state, getConfig(), blockId) + .signalRoot; + } + + /// @notice Gets the state variables of the TaikoL1 contract. + /// @return StateVariables struct containing state variables. + function getStateVariables() + public + view + returns (TaikoData.StateVariables memory) + { + return LibUtils.getStateVariables(state); + } + + /// @notice Retrieves the configuration for a specified tier. + /// @param tierId ID of the tier. + /// @return TierConfig struct containing the tier's parameters. This + /// function will revert if the tier is not supported. + function getTierConfig(uint16 tierId) + public + pure + virtual + returns (TaikoData.TierConfig memory) + { + return LibTiers.getTierConfig(tierId); + } + + /// @notice Retrieves the IDs of all supported tiers. + function getTierIds() public pure virtual returns (uint16[] memory) { + return LibTiers.getTierIds(); + } + + /// @notice Gets the configuration of the TaikoL1 contract. + /// @return Config struct containing configuration parameters. function getConfig() public pure virtual - override returns (TaikoData.Config memory) { return TaikoData.Config({ @@ -29,14 +264,10 @@ contract TaikoL1 is TaikoL1Base { blockMaxGasLimit: 8_000_000, blockFeeBaseGas: 20_000, blockMaxTxListBytes: 120_000, - blockTxListExpiry: 0, proposerRewardPerSecond: 25e16, // 0.25 Taiko token proposerRewardMax: 32e18, // 32 Taiko token - proofRegularCooldown: 30 minutes, - proofOracleCooldown: 15 minutes, - proofWindow: 90 minutes, - proofBond: 1024e18, - skipProverAssignmentVerificaiton: false, + assignmentBond: 10_240e18, + skipAssignmentVerificaiton: false, ethDepositRingBufferSize: 1024, ethDepositMinCountPerBlock: 8, ethDepositMaxCountPerBlock: 32, diff --git a/packages/protocol/contracts/L1/TaikoL1Base.sol b/packages/protocol/contracts/L1/TaikoL1Base.sol deleted file mode 100644 index 612066ab5c..0000000000 --- a/packages/protocol/contracts/L1/TaikoL1Base.sol +++ /dev/null @@ -1,265 +0,0 @@ -// SPDX-License-Identifier: MIT -// _____ _ _ _ _ -// |_ _|_ _(_) |_____ | | __ _| |__ ___ -// | |/ _` | | / / _ \ | |__/ _` | '_ (_-< -// |_|\__,_|_|_\_\___/ |____\__,_|_.__/__/ - -pragma solidity ^0.8.20; - -import { AddressResolver } from "../common/AddressResolver.sol"; -import { EssentialContract } from "../common/EssentialContract.sol"; -import { ICrossChainSync } from "../common/ICrossChainSync.sol"; -import { LibDepositing } from "./libs/LibDepositing.sol"; -import { LibProposing } from "./libs/LibProposing.sol"; -import { LibProving } from "./libs/LibProving.sol"; -import { LibTaikoToken } from "./libs/LibTaikoToken.sol"; -import { LibUtils } from "./libs/LibUtils.sol"; -import { LibVerifying } from "./libs/LibVerifying.sol"; -import { TaikoData } from "./TaikoData.sol"; -import { TaikoErrors } from "./TaikoErrors.sol"; -import { TaikoEvents } from "./TaikoEvents.sol"; - -/// @title TaikoL1Base -/// @notice This contract serves as the "base layer contract" of the Taiko -/// protocol, providing functionalities for proposing, proving, and verifying -/// blocks. The term "base layer contract" means that although this is usually -/// deployed on L1, it can also be deployed on L2s to create L3s ("inception -/// layers"). The contract also handles the deposit and withdrawal of Taiko -/// tokens and Ether. -abstract contract TaikoL1Base is - EssentialContract, - ICrossChainSync, - TaikoEvents, - TaikoErrors -{ - using LibUtils for TaikoData.State; - - TaikoData.State public state; - uint256[100] private __gap; - - /// @dev Fallback function to receive Ether and deposit to to Layer 2. - receive() external payable { - depositEtherToL2(address(0)); - } - - /// @notice Initializes the rollup. - /// @param _addressManager The {AddressManager} address. - /// @param _genesisBlockHash The block hash of the genesis block. - function init( - address _addressManager, - bytes32 _genesisBlockHash - ) - external - initializer - { - EssentialContract._init(_addressManager); - LibVerifying.init({ - state: state, - config: getConfig(), - genesisBlockHash: _genesisBlockHash - }); - } - - /// @notice Proposes a Taiko L2 block. - /// @param input An abi-encoded BlockMetadataInput that the actual L2 block - /// header must satisfy. - /// @param assignment Data to assign a prover. - /// @param txList A list of transactions in this block, encoded with RLP. - /// Note, in the corresponding L2 block an "anchor transaction" will be the - /// first transaction in the block. If there are `n` transactions in the - /// `txList`, then there will be up to `n + 1` transactions in the L2 block. - /// @return meta The metadata of the proposed L2 block. - function proposeBlock( - bytes calldata input, - bytes calldata assignment, - bytes calldata txList - ) - external - payable - nonReentrant - returns (TaikoData.BlockMetadata memory meta) - { - TaikoData.Config memory config = getConfig(); - meta = LibProposing.proposeBlock({ - state: state, - config: config, - resolver: AddressResolver(this), - input: abi.decode(input, (TaikoData.BlockMetadataInput)), - assignment: abi.decode(assignment, (TaikoData.ProverAssignment)), - txList: txList - }); - if (config.blockMaxVerificationsPerTx > 0) { - LibVerifying.verifyBlocks({ - state: state, - config: config, - resolver: AddressResolver(this), - maxBlocks: config.blockMaxVerificationsPerTx - }); - } - } - - /// @notice Proves a block with a zero-knowledge proof. - /// @param blockId The index of the block to prove. This is also used to - /// select the right implementation version. - /// @param input An abi-encoded {TaikoData.BlockEvidence} object. - function proveBlock( - uint64 blockId, - bytes calldata input - ) - external - nonReentrant - { - TaikoData.Config memory config = getConfig(); - LibProving.proveBlock({ - state: state, - config: config, - resolver: AddressResolver(this), - blockId: blockId, - evidence: abi.decode(input, (TaikoData.BlockEvidence)) - }); - if (config.blockMaxVerificationsPerTx > 0) { - LibVerifying.verifyBlocks({ - state: state, - config: config, - resolver: AddressResolver(this), - maxBlocks: config.blockMaxVerificationsPerTx - }); - } - } - - /// @notice Verifies up to N blocks. - /// @param maxBlocks Max number of blocks to verify. - function verifyBlocks(uint64 maxBlocks) external nonReentrant { - if (maxBlocks == 0) revert L1_INVALID_PARAM(); - LibVerifying.verifyBlocks({ - state: state, - config: getConfig(), - resolver: AddressResolver(this), - maxBlocks: maxBlocks - }); - } - - /// @notice Deposits Taiko tokens to the contract. - /// @param amount Amount of Taiko tokens to deposit. - function depositTaikoToken(uint256 amount) external nonReentrant { - LibTaikoToken.depositTaikoToken(state, AddressResolver(this), amount); - } - - /// @notice Withdraws Taiko tokens from the contract. - /// @param amount Amount of Taiko tokens to withdraw. - function withdrawTaikoToken(uint256 amount) external nonReentrant { - LibTaikoToken.withdrawTaikoToken(state, AddressResolver(this), amount); - } - - /// @notice Deposits Ether to Layer 2. - /// @param recipient Address of the recipient for the deposited Ether on - /// Layer 2. - function depositEtherToL2(address recipient) public payable { - LibDepositing.depositEtherToL2({ - state: state, - config: getConfig(), - resolver: AddressResolver(this), - recipient: recipient - }); - } - - /// @notice Gets the Taiko token balance for a specific address. - /// @param addr Address to check the Taiko token balance. - /// @return The Taiko token balance of the address. - function getTaikoTokenBalance(address addr) public view returns (uint256) { - return state.taikoTokenBalances[addr]; - } - - /// @notice Checks if Ether deposit is allowed for Layer 2. - /// @param amount Amount of Ether to be deposited. - /// @return true if Ether deposit is allowed, false otherwise. - function canDepositEthToL2(uint256 amount) public view returns (bool) { - return LibDepositing.canDepositEthToL2({ - state: state, - config: getConfig(), - amount: amount - }); - } - - /// @notice Gets the details of a block. - /// @param blockId Index of the block. - /// @return blk The block. - function getBlock(uint64 blockId) - public - view - returns (TaikoData.Block memory blk) - { - return LibProposing.getBlock({ - state: state, - config: getConfig(), - blockId: blockId - }); - } - - /// @notice Gets the state transition for a specific block. - /// @param blockId Index of the block. - /// @param parentHash Parent hash of the block. - /// @return The state transition data of the block. - function getTransition( - uint64 blockId, - bytes32 parentHash - ) - public - view - returns (TaikoData.Transition memory) - { - return LibProving.getTransition({ - state: state, - config: getConfig(), - blockId: blockId, - parentHash: parentHash - }); - } - - /// @inheritdoc ICrossChainSync - function getCrossChainBlockHash(uint64 blockId) - public - view - override - returns (bytes32) - { - return LibUtils.getVerifyingTransition(state, getConfig(), blockId) - .blockHash; - } - - /// @inheritdoc ICrossChainSync - function getCrossChainSignalRoot(uint64 blockId) - public - view - override - returns (bytes32) - { - return LibUtils.getVerifyingTransition(state, getConfig(), blockId) - .signalRoot; - } - - /// @notice Gets the state variables of the TaikoL1 contract. - /// @return StateVariables struct containing state variables. - function getStateVariables() - public - view - returns (TaikoData.StateVariables memory) - { - return state.getStateVariables(); - } - - /// @notice Gets the name of the proof verifier by ID. - /// @param id ID of the verifier. - /// @return Verifier name. - function getVerifierName(uint16 id) public pure returns (bytes32) { - return LibUtils.getVerifierName(id); - } - - /// @notice Gets the configuration of the TaikoL1 contract. - /// @return Config struct containing configuration parameters. - function getConfig() - public - pure - virtual - returns (TaikoData.Config memory); -} diff --git a/packages/protocol/contracts/L1/libs/LibDepositing.sol b/packages/protocol/contracts/L1/libs/LibDepositing.sol index 4a51f18ef0..47f6ed2d57 100644 --- a/packages/protocol/contracts/L1/libs/LibDepositing.sol +++ b/packages/protocol/contracts/L1/libs/LibDepositing.sol @@ -17,15 +17,13 @@ library LibDepositing { using LibAddress for address; using LibMath for uint256; + // Warning: Any events defined here must also be defined in TaikoEvents.sol. event EthDeposited(TaikoData.EthDeposit deposit); + // Warning: Any errors defined here must also be defined in TaikoErrors.sol. error L1_INVALID_ETH_DEPOSIT(); - /// @dev Deposits Ether into Taiko. - /// @param state The current state of the Taiko protocol. - /// @param config The config of the Taiko protocol. - /// @param resolver The {AddressResolver} instance for address resolution. - /// @param recipient The address of the deposit recipient. + /// @dev Deposits Ether to Layer 2. function depositEtherToL2( TaikoData.State storage state, TaikoData.Config memory config, @@ -69,10 +67,6 @@ library LibDepositing { } /// @dev Processes the ETH deposits in a batched manner. - /// @param state The current state of the Taiko protocol. - /// @param config The config of the Taiko protocol. - /// @param feeRecipient Address to receive the deposit fee. - /// @return deposits The array of processed deposits. function processDeposits( TaikoData.State storage state, TaikoData.Config memory config, @@ -136,11 +130,7 @@ library LibDepositing { } } - /// @dev Checks if the given deposit amount is valid. - /// @param state The current state of the Taiko protocol. - /// @param config The config of the Taiko protocol. - /// @param amount The amount to deposit. - /// @return true if the deposit is valid, false otherwise. + /// @dev Checks if Ether deposit is allowed for Layer 2. function canDepositEthToL2( TaikoData.State storage state, TaikoData.Config memory config, @@ -165,17 +155,6 @@ library LibDepositing { } } - /// @dev Computes the hash of the given deposits. - /// @param deposits The deposits to hash. - /// @return The computed hash. - function hashEthDeposits(TaikoData.EthDeposit[] memory deposits) - internal - pure - returns (bytes32) - { - return keccak256(abi.encode(deposits)); - } - /// @dev Encodes the given deposit into a uint256. /// @param addr The address of the deposit recipient. /// @param amount The amount of the deposit. diff --git a/packages/protocol/contracts/L1/libs/LibProposing.sol b/packages/protocol/contracts/L1/libs/LibProposing.sol index 1f31c8fe47..203112507c 100644 --- a/packages/protocol/contracts/L1/libs/LibProposing.sol +++ b/packages/protocol/contracts/L1/libs/LibProposing.sol @@ -15,59 +15,74 @@ import { IProver } from "../IProver.sol"; import { LibAddress } from "../../libs/LibAddress.sol"; import { LibDepositing } from "./LibDepositing.sol"; import { LibMath } from "../../libs/LibMath.sol"; -import { LibTaikoToken } from "./LibTaikoToken.sol"; +import { LibTiers } from "./LibTiers.sol"; import { LibUtils } from "./LibUtils.sol"; import { TaikoData } from "../TaikoData.sol"; import { TaikoToken } from "../TaikoToken.sol"; +/// @title LibProposing +/// @notice A library for handling block proposals in the Taiko protocol. library LibProposing { using Address for address; using ECDSA for bytes32; using LibAddress for address; using LibAddress for address payable; using LibMath for uint256; - using LibUtils for TaikoData.State; bytes4 internal constant EIP1271_MAGICVALUE = 0x1626ba7e; + // Warning: Any events defined here must also be defined in TaikoEvents.sol. event BlockProposed( uint256 indexed blockId, - address indexed prover, + address indexed assignedProver, + uint96 assignmentBond, uint256 reward, TaikoData.BlockMetadata meta ); - event BondReceived(address indexed from, uint64 blockId, uint256 bond); + // Warning: Any errors defined here must also be defined in TaikoErrors.sol. error L1_INVALID_ASSIGNMENT(); - error L1_INVALID_BLOCK_ID(); - error L1_INVALID_METADATA(); - error L1_INVALID_PROPOSER(); - error L1_INVALID_PROVER(); - error L1_INVALID_PROVER_SIG(); error L1_TOO_MANY_BLOCKS(); - error L1_TX_LIST_NOT_EXIST(); - error L1_TX_LIST_HASH(); - error L1_TX_LIST_RANGE(); - error L1_TX_LIST(); + error L1_TXLIST_INVALID_RANGE(); + error L1_TXLIST_MISMATCH(); + error L1_TXLIST_NOT_FOUND(); + error L1_TXLIST_TOO_LARGE(); + error L1_UNAUTHORIZED(); + /// @dev Proposes a Taiko L2 block. function proposeBlock( TaikoData.State storage state, TaikoData.Config memory config, AddressResolver resolver, - TaikoData.BlockMetadataInput memory input, + bytes32 txListHash, TaikoData.ProverAssignment memory assignment, bytes calldata txList ) internal returns (TaikoData.BlockMetadata memory meta) { - // Check proposer + // Taiko, as a Rased Rollup, enables permissionless block proposals. However, + // if the "proposer" address is set to a non-zero value, we ensure that + // only that specific address has the authority to propose blocks. address proposer = resolver.resolve("proposer", true); if (proposer != address(0) && msg.sender != proposer) { - revert L1_INVALID_PROPOSER(); + revert L1_UNAUTHORIZED(); } - // Check prover assignment + if (txList.length > config.blockMaxTxListBytes) { + revert L1_TXLIST_TOO_LARGE(); + } + + // It's necessary to verify that the txHash matches the provided hash. + // However, when we employ a blob for the txList, the verification + // process will differ. + if (txListHash != keccak256(txList)) { + revert L1_TXLIST_MISMATCH(); + } + + // Every proposed block in Taiko must include a non-zero prover referred + // to as the "assigned prover." We enforce that the assigned prover must + // indeed be non-zero, and the prover assignment has not expired. if ( assignment.prover == address(0) || assignment.expiry <= block.timestamp @@ -75,63 +90,80 @@ library LibProposing { revert L1_INVALID_ASSIGNMENT(); } - // Too many unverified blocks? + // It's essential to ensure that the ring buffer for proposed blocks + // still has space for at least one more block. TaikoData.SlotB memory b = state.slotB; if (b.numBlocks >= b.lastVerifiedBlockId + config.blockMaxProposals + 1) { revert L1_TOO_MANY_BLOCKS(); } - if (assignment.prover != LibUtils.ORACLE_PROVER) { - LibTaikoToken.receiveTaikoToken({ - state: state, - resolver: resolver, - from: assignment.prover, - amount: config.proofBond - }); - - emit BondReceived(assignment.prover, b.numBlocks, config.proofBond); - } - - // Pay prover after verifying assignment - if (config.skipProverAssignmentVerificaiton) { + // The assigned prover burns Taiko tokens, referred to as the + // "assignment bond." This bond remains non-refundable to the assigned + // prover under two conditions: if the block's verification transition + // is not the initial one or if it was generated and validated by + // different provers. Instead, a portion of the assignment bond serves + // as a reward for the actual prover. + TaikoToken tt = TaikoToken(resolver.resolve("taiko_token", false)); + tt.burn(assignment.prover, config.assignmentBond); + + // It is now essential to verify that the assignment has received proper + // authorization. + if (config.skipAssignmentVerificaiton) { // For testing only assignment.prover.sendEther(msg.value); } else if (!assignment.prover.isContract()) { - address assignedProver = assignment.prover; - if (assignment.prover == LibUtils.ORACLE_PROVER) { - assignedProver = resolver.resolve("oracle_prover", false); - } - + // To verify an EOA (Externally Owned Account) prover, we perform a + // straightforward check of an ECDSA signature. if ( - _hashAssignment(input, assignment).recover(assignment.data) - != assignedProver + _hashAssignment(txListHash, assignment).recover(assignment.data) + != assignment.prover ) { - revert L1_INVALID_PROVER_SIG(); + revert L1_INVALID_ASSIGNMENT(); } - assignedProver.sendEther(msg.value); + assignment.prover.sendEther(msg.value); } else if ( assignment.prover.supportsInterface(type(IProver).interfaceId) ) { - IProver(assignment.prover).onBlockAssigned{ value: msg.value }( - b.numBlocks, input, assignment - ); + // When the prover's address corresponds to an IProver contract, we + // transfer Ether and invoke its "onBlockAssigned" function for + // verification. Within this function, the prover has the option to + // charge other tokens like ERC20 or NFT as prooving fees, so the + // value of msg.value can be zero. Taiko does not mandate Ether as + // the exclusive proofing fees. + + IProver(assignment.prover).onBlockAssigned{ value: msg.value }({ + blockId: b.numBlocks, + txListHash: txListHash, + assignment: assignment + }); } else if ( assignment.prover.supportsInterface(type(IERC1271).interfaceId) ) { + // If the prover is a contract implementing EIP1271, we invoke its + // "isValidSignature" function for ECDSA signature verification. if ( IERC1271(assignment.prover).isValidSignature( - _hashAssignment(input, assignment), assignment.data + _hashAssignment(txListHash, assignment), assignment.data ) != EIP1271_MAGICVALUE ) { - revert L1_INVALID_PROVER_SIG(); + revert L1_INVALID_ASSIGNMENT(); } assignment.prover.sendEther(msg.value); } else { - revert L1_INVALID_PROVER(); + revert L1_INVALID_ASSIGNMENT(); } - // Reward the proposer + // In situations where the network lacks sufficient transactions for the + // proposer to profit, they are still obligated to pay the prover the + // proving fee, which can be a substantial cost compared to the total L2 + // transaction fees collected. As a solution, Taiko mints additional + // Taiko tokens per second as block rewards. It's important to note that + // if multiple blocks are proposed within the same L1 block, only the + // first one will receive the block reward. + + // The block reward doesn't undergo automatic halving; instead, we + // depend on Taiko DAO to make necessary adjustments to the rewards. uint256 reward; if (config.proposerRewardPerSecond > 0 && config.proposerRewardMax > 0) { @@ -151,145 +183,93 @@ library LibProposing { ); // Reward must be minted - TaikoToken(resolver.resolve("taiko_token", false)).mint( - input.proposer, reward - ); + tt.mint(msg.sender, reward); } } } - if (_validateBlock(state, config, input, txList)) { - // returns true if we need to cache the txList info - state.txListInfo[input.txListHash] = TaikoData.TxListInfo({ - validSince: uint64(block.timestamp), - size: uint24(txList.length) - }); - } - - // Init the metadata // Unchecked is safe: // - equation is done among same variable types // - incrementation (state.slotB.numBlocks++) is fine for 584K years if // we propose at every second unchecked { - meta.id = b.numBlocks; - meta.timestamp = uint64(block.timestamp); - meta.l1Height = uint64(block.number - 1); - meta.l1Hash = blockhash(block.number - 1); - - // After The Merge, L1 mixHash contains the prevrandao - // from the beacon chain. Since multiple Taiko blocks - // can be proposed in one Ethereum block, we need to - // add salt to this random number as L2 mixHash + // Initialize metadata to compute a metaHash, which forms a part of + // the block data to be stored on-chain for future integrity checks. + // If we choose to persist all data fields in the metadata, it will + // require additional storage slots. + meta.l1Hash = blockhash(meta.l1Height); + + // Following the Merge, the L1 mixHash incorporates the prevrandao + // value from the beacon chain. Given the possibility of multiple + // Taiko blocks being proposed within a single Ethereum block, we + // must introduce a salt to this random number as the L2 mixHash. meta.mixHash = bytes32(block.prevrandao * b.numBlocks); - meta.txListHash = input.txListHash; - meta.txListByteStart = input.txListByteStart; - meta.txListByteEnd = input.txListByteEnd; + meta.txListHash = txListHash; + meta.timestamp = uint64(block.timestamp); + meta.l1Height = uint64(block.number - 1); meta.gasLimit = config.blockMaxGasLimit; - meta.proposer = input.proposer; + + // Each transaction must handle a specific quantity of L1-to-L2 + // Ether deposits. meta.depositsProcessed = - LibDepositing.processDeposits(state, config, input.proposer); + LibDepositing.processDeposits(state, config, msg.sender); - // Init the block + // Now, it's essential to initialize the block that will be stored + // on L1. We should aim to utilize as few storage slots as possible, + // alghouth using a ring buffer can minimize storage writes once + // the buffer reaches its capacity. TaikoData.Block storage blk = state.blocks[b.numBlocks % config.blockRingBufferSize]; - blk.metaHash = LibUtils.hashMetadata(meta); - blk.prover = assignment.prover; - blk.proofBond = config.proofBond; - blk.blockId = meta.id; + // Please note that all fields must be re-initialized since we are + // utilizing an existing ring buffer slot, not creating a new + // storage slot. + blk.metaHash = keccak256(abi.encode(meta)); + blk.assignedProver = assignment.prover; + + // Safeguard the assignment bond to ensure its preservation, + // particularly in scenarios where it might be altered after the + // block's proposal but before it has been proven or verified. + blk.assignmentBond = config.assignmentBond; + blk.blockId = b.numBlocks; blk.proposedAt = meta.timestamp; + + // For a new block, the next transition ID is always 1, not 0. blk.nextTransitionId = 1; + + // For unverified block, its verifiedTransitionId is always 0. blk.verifiedTransitionId = 0; + // The LibTiers play a crucial role in determining the minimum tier + // required for the block's validity proof. It's imperative to + // maintain a certain percentage of blocks for each tier to ensure + // that provers are consistently available when needed. + blk.minTier = LibTiers.getMinTier(uint256(blk.metaHash)); + + // Increment the counter (cursor) by 1. + ++state.slotB.numBlocks; + emit BlockProposed({ - blockId: state.slotB.numBlocks++, - prover: blk.prover, + blockId: blk.blockId, + assignedProver: assignment.prover, + assignmentBond: config.assignmentBond, reward: reward, meta: meta }); } } - function getBlock( - TaikoData.State storage state, - TaikoData.Config memory config, - uint64 blockId - ) - internal - view - returns (TaikoData.Block storage blk) - { - blk = state.blocks[blockId % config.blockRingBufferSize]; - if (blk.blockId != blockId) { - revert L1_INVALID_BLOCK_ID(); - } - } - - function _validateBlock( - TaikoData.State storage state, - TaikoData.Config memory config, - TaikoData.BlockMetadataInput memory input, - bytes calldata txList - ) - private - view - returns (bool cacheTxListInfo) - { - if (input.proposer == address(0)) revert L1_INVALID_METADATA(); - - // handling txList - - uint24 size = uint24(txList.length); - if (size > config.blockMaxTxListBytes) revert L1_TX_LIST(); - - if (input.txListByteStart > input.txListByteEnd) { - revert L1_TX_LIST_RANGE(); - } - - if (config.blockTxListExpiry == 0) { - // caching is disabled - if (input.txListByteStart != 0 || input.txListByteEnd != size) { - revert L1_TX_LIST_RANGE(); - } - } else { - // caching is enabled - if (size == 0) { - // This blob shall have been submitted earlier - TaikoData.TxListInfo memory info = - state.txListInfo[input.txListHash]; - - if (input.txListByteEnd > info.size) { - revert L1_TX_LIST_RANGE(); - } - - if ( - info.size == 0 - || info.validSince + config.blockTxListExpiry - < block.timestamp - ) { - revert L1_TX_LIST_NOT_EXIST(); - } - } else { - if (input.txListByteEnd > size) revert L1_TX_LIST_RANGE(); - if (input.txListHash != keccak256(txList)) { - revert L1_TX_LIST_HASH(); - } - - cacheTxListInfo = input.cacheTxListInfo; - } - } - } - function _hashAssignment( - TaikoData.BlockMetadataInput memory input, + bytes32 txListHash, TaikoData.ProverAssignment memory assignment ) private view returns (bytes32) { - return keccak256(abi.encode(input, msg.value, assignment.expiry)); + return keccak256( + abi.encodePacked(txListHash, msg.value, assignment.expiry) + ); } } diff --git a/packages/protocol/contracts/L1/libs/LibProving.sol b/packages/protocol/contracts/L1/libs/LibProving.sol index fc26b687e9..8b0d56a842 100644 --- a/packages/protocol/contracts/L1/libs/LibProving.sol +++ b/packages/protocol/contracts/L1/libs/LibProving.sol @@ -7,33 +7,52 @@ pragma solidity ^0.8.20; import { AddressResolver } from "../../common/AddressResolver.sol"; -import { IProofVerifier } from "../IProofVerifier.sol"; +import { IEvidenceVerifier } from "../verifiers/IEvidenceVerifier.sol"; import { LibMath } from "../../libs/LibMath.sol"; +import { LibTiers } from "./LibTiers.sol"; import { LibUtils } from "./LibUtils.sol"; -import { TaikoData } from "../../L1/TaikoData.sol"; +import { TaikoData } from "../TaikoData.sol"; +import { TaikoToken } from ".././TaikoToken.sol"; +/// @title LibProving +/// @notice A library for handling block contestation and proving in the Taiko +/// protocol. library LibProving { using LibMath for uint256; - event BlockProven( + // Warning: Any events defined here must also be defined in TaikoEvents.sol. + event TransitionProved( uint256 indexed blockId, bytes32 parentHash, bytes32 blockHash, bytes32 signalRoot, - address prover + address prover, + uint96 proofBond, + uint16 tier ); - error L1_ALREADY_PROVEN(); - error L1_BLOCK_ID_MISMATCH(); - error L1_EVIDENCE_MISMATCH(); - error L1_TRANSITION_NOT_FOUND(); + event TransitionContested( + uint256 indexed blockId, + bytes32 parentHash, + bytes32 blockHash, + bytes32 signalRoot, + address contester, + uint96 contestBond, + uint16 tier + ); + + // Warning: Any errors defined here must also be defined in TaikoErrors.sol. + error L1_ALREADY_CONTESTED(); + error L1_ALREADY_PROVED(); + error L1_ASSIGNED_PROVER_NOT_ALLOWED(); + error L1_BLOCK_MISMATCH(); error L1_INVALID_BLOCK_ID(); error L1_INVALID_EVIDENCE(); - error L1_INVALID_ORACLE_PROVER(); - error L1_INVALID_PROOF(); - error L1_NOT_PROVEABLE(); - error L1_SAME_PROOF(); + error L1_INVALID_TIER(); + error L1_NOT_ASSIGNED_PROVER(); + error L1_UNEXPECTED_TRANSITION_TIER(); + /// @dev Proves or contests a block transition. function proveBlock( TaikoData.State storage state, TaikoData.Config memory config, @@ -43,11 +62,10 @@ library LibProving { ) internal { - if ( - evidence.prover == address(0) || evidence.parentHash == 0 - || evidence.blockHash == 0 || evidence.signalRoot == 0 - ) revert L1_INVALID_EVIDENCE(); + // Make sure parentHash is not zero + if (evidence.parentHash == 0) revert L1_INVALID_EVIDENCE(); + // Check that the block has been proposed but has not yet been verified. TaikoData.SlotB memory b = state.slotB; if (blockId <= b.lastVerifiedBlockId || blockId >= b.numBlocks) { revert L1_INVALID_BLOCK_ID(); @@ -56,128 +74,321 @@ library LibProving { uint64 slot = blockId % config.blockRingBufferSize; TaikoData.Block storage blk = state.blocks[slot]; - if (blk.blockId != blockId) revert L1_BLOCK_ID_MISMATCH(); - - // Check the metadata hash matches the proposed block's. This is - // necessary to handle chain reorgs. - if (blk.metaHash != evidence.metaHash) { - revert L1_EVIDENCE_MISMATCH(); + // Check the integrity of the block data. It's worth noting that in + // theory, this check may be skipped, but it's included for added + // caution. + if (blk.blockId != blockId || blk.metaHash != evidence.metaHash) { + revert L1_BLOCK_MISMATCH(); } - if (evidence.prover == LibUtils.ORACLE_PROVER) { - // Oracle prover - if (msg.sender != resolver.resolve("oracle_prover", false)) { - revert L1_INVALID_ORACLE_PROVER(); - } - } else { - // A block can be proven by a regular prover in the following cases: - // 1. The actual prover is the assigned prover - // 2. The block has at least one state transition (which must be - // from the assigned prover) - // 3. The block has become open - if ( - evidence.prover != blk.prover && blk.nextTransitionId == 1 - && block.timestamp <= blk.proposedAt + config.proofWindow - ) revert L1_NOT_PROVEABLE(); - } - - TaikoData.Transition storage tran; - + // Each transition is uniquely identified by the parentHash, with the + // blockHash and signalRoot open for later updates as higher-tier proofs + // become available. In cases where a transition with the specified + // parentHash does not exist, the transition ID (tid) will be set to 0. uint32 tid = LibUtils.getTransitionId(state, blk, slot, evidence.parentHash); + TaikoData.Transition storage tran; if (tid == 0) { - tid = blk.nextTransitionId; - - // Unchecked is safe: - // - Not realistic 2**32 different fork choice per block will be - // proven and none of them is valid + // In cases where a transition with the provided parentHash is not + // found, we must essentially "create" one and set it to its initial + // state. This initial state can be viewed as a special transition + // on tier-0. + // + // Subsequently, we transform this tier-0 transition into a + // non-zero-tier transition with a proof. This approach ensures that + // the same logic is applicable for both 0-to-non-zero transition + // updates and non-zero-to-non-zero transition updates. unchecked { - ++blk.nextTransitionId; + // Unchecked is safe: Not realistic 2**32 different fork choice + // per block will be proven and none of them is valid + tid = blk.nextTransitionId++; } + // Keep in mind that state.transitions are also reusable storage + // slots, so it's necessary to reinitialize all transition fields + // below. tran = state.transitions[slot][tid]; + tran.blockHash = 0; + tran.signalRoot = 0; + tran.proofBond = 0; + tran.contester = address(0); + tran.contestBond = 1; // see below (the value does't matter) + tran.timestamp = uint64(block.timestamp); + tran.tier = 0; if (tid == 1) { - // We only write the key when tid is 1. + // This approach serves as a cost-saving technique for the + // majority of blocks, where the first transition is expected to + // be the correct one. Writing to `tran` is more economical + // since it resides in the ring buffer, whereas writing to + // `transitionIds` is not as cost-effective. tran.key = evidence.parentHash; + + // In the case of this first transition, the block's assigned + // prover has the privilege to re-prove it, but only when the + // assigned prover matches the previous prover. To ensure this, + // we establish the transition's prover as the block's assigned + // prover. Consequently, when we carry out a 0-to-non-zero + // transition update, the previous prover will consistently be + // the block's assigned prover. + // + // While alternative implementations are possible, introducing + // such changes would require additional if-else logic. + tran.prover = blk.assignedProver; } else { + // In scenarios where this transition is not the first one, we + // straightforwardly reset the transition prover to address + // zero. + tran.prover = address(0); + + // Furthermore, we index the transition for future retrieval. + // It's worth emphasizing that this mapping for indexing is not + // reusable. However, given that the majority of blocks will + // only possess one transition — the correct one — we don't need + // to be concerned about the cost in this case. state.transitionIds[blk.blockId][evidence.parentHash] = tid; } - } else if (evidence.prover == LibUtils.ORACLE_PROVER) { - // This is the branch the oracle prover is trying to overwrite - // We need to check the previous proof is not the same as the - // new proof - tran = state.transitions[slot][tid]; - if ( - tran.blockHash == evidence.blockHash - && tran.signalRoot == evidence.signalRoot - ) revert L1_SAME_PROOF(); } else { - revert L1_ALREADY_PROVEN(); + // A transition with the provided parentHash has been located. + tran = state.transitions[slot][tid]; + if (tran.tier < blk.minTier) revert L1_UNEXPECTED_TRANSITION_TIER(); } - tran.blockHash = evidence.blockHash; - tran.signalRoot = evidence.signalRoot; - tran.prover = evidence.prover; - tran.provenAt = uint64(block.timestamp); - - IProofVerifier(resolver.resolve("proof_verifier", false)).verifyProofs( - blockId, evidence.proofs, getInstance(evidence) - ); - - emit BlockProven({ - blockId: blockId, - parentHash: evidence.parentHash, - blockHash: evidence.blockHash, - signalRoot: evidence.signalRoot, - prover: evidence.prover - }); - } + // The new proof must meet or exceed the minimum tier required by the + // block or the previous proof; it cannot be on a lower tier. + if (evidence.tier < blk.minTier || evidence.tier < tran.tier) { + revert L1_INVALID_TIER(); + } - function getTransition( - TaikoData.State storage state, - TaikoData.Config memory config, - uint64 blockId, - bytes32 parentHash - ) - internal - view - returns (TaikoData.Transition storage tran) - { - TaikoData.SlotB memory b = state.slotB; - if (blockId < b.lastVerifiedBlockId || blockId >= b.numBlocks) { - revert L1_INVALID_BLOCK_ID(); + // Retrieve the tier configurations. If the tier is not supported, the + // subsequent action will result in a revert. + TaikoData.TierConfig memory tier = LibTiers.getTierConfig(evidence.tier); + + // We must verify the proof, and any failure in proof verification will + // result in a revert of the following code. + // + // It's crucial to emphasize that the proof can be assessed in two + // potential modes: "proving mode" and "contesting mode." However, the + // precise verification logic is defined within each + // tier'IEvidenceVerifier contract implementation. We simply specify to + // the verifier contract which mode it should utilize - if the new tier + // is higher than the previous tier, we employ the proving mode; + // otherwise, we employ the contesting mode (the new tier cannot be + // lower than the previous tier, this has been checked above). + // + // It's obvious that proof verification is entirely decoupled from + // Taiko's core protocol. + { + address verifier = resolver.resolve(tier.verifierName, true); + + // The verifier can be address-zero, signifying that there are no + // proof checks for the tier. In practice, this only applies to + // optimistic proofs. + if (verifier != address(0)) { + IEvidenceVerifier(verifier).verifyProof({ + blockId: blk.blockId, + prover: msg.sender, + isContesting: evidence.tier == tran.tier + && tier.contestBond != 0, + evidence: evidence + }); + } } - uint64 slot = blockId % config.blockRingBufferSize; - TaikoData.Block storage blk = state.blocks[slot]; - if (blk.blockId != blockId) revert L1_BLOCK_ID_MISMATCH(); + // Prepare to burn either the proof bond or the contest bond below. + TaikoToken tt = TaikoToken(resolver.resolve("taiko_token", false)); - uint32 tid = LibUtils.getTransitionId(state, blk, slot, parentHash); - if (tid == 0) revert L1_TRANSITION_NOT_FOUND(); + if (evidence.tier == tran.tier) { + // Contesting an existing transition or the top tier re-proving an + // existing transition requires either the blockHash or signalRoot + // to be different. This precaution is necessary because this + // `proveBlock` transaction might aim to prove a transition but + // could potentially be front-run by another prover attempting to + // prove the same transition. + if ( + evidence.blockHash == tran.blockHash + && evidence.signalRoot == tran.signalRoot + ) { + revert L1_ALREADY_PROVED(); + } - tran = state.transitions[slot][tid]; - } + if (tier.contestBond == 0) { + // When contestBond is zero for the current tier, it signifies + // it's the top tier. In this case, it can overwrite existing + // transitions without contestation. - function getInstance(TaikoData.BlockEvidence memory evidence) - internal - pure - returns (bytes32 instance) - { - if (evidence.prover == LibUtils.ORACLE_PROVER) { - return 0; + // We should outright prohibit the use of zero values for both + // blockHash and signalRoot since, when we initialize a new + // transition, we set both blockHash and signalRoot to 0. + if (evidence.blockHash == 0 || evidence.signalRoot == 0) { + revert L1_INVALID_EVIDENCE(); + } + + tran.blockHash = evidence.blockHash; + tran.signalRoot = evidence.signalRoot; + tran.prover = msg.sender; + tran.timestamp = uint64(block.timestamp); + } else { + // The new tier is the same as the previous tier, but they are + // not the top tier, we are in the contesting mode. + // + // It's important to note that evidence.blockHash and + // evidence.signalRoot are not permanently stored, so their + // specific values are inconsequential. They only need to differ + // from the existing values to signify a contest. Therefore, a + // contester can conveniently utilize the value 1 for these two + // parameters. + + // The existing transiton must not have been contested. + if (tran.contester != address(0)) revert L1_ALREADY_CONTESTED(); + + // Burn the contest bond from the prover. + tt.burn(msg.sender, tier.contestBond); + + // We retain the contest bond within the transition, just in + // case this configuration is altered to a different value + // before the contest is resolved. + // + // It's worth noting that the previous value of tran.contestBond + // doesn't have any significance. + tran.contestBond = tier.contestBond; + tran.contester = msg.sender; + tran.timestamp = uint64(block.timestamp); + + emit TransitionContested({ + blockId: blk.blockId, + parentHash: evidence.parentHash, + blockHash: tran.blockHash, + signalRoot: tran.signalRoot, + contester: msg.sender, + contestBond: tier.contestBond, + tier: evidence.tier + }); + } } else { - return keccak256( - abi.encode( - evidence.metaHash, - evidence.parentHash, - evidence.blockHash, - evidence.signalRoot, - evidence.graffiti, - evidence.prover - ) - ); + // The new tier is higher than the previous tier, we are in the + // proving mode. This works even if this transition's contester is + // address zero. + + // zero values are not allowed + if (evidence.blockHash == 0 || evidence.signalRoot == 0) { + revert L1_INVALID_EVIDENCE(); + } + + // The ability to prove a transition is granted under the following + // two circumstances: + // + // 1. When the transition has been contested, indicated by + // tran.contester not being address zero. + // + // 2. When the transition's blockHash and/or signalRoot differs. In + // this case, the new prover essentially contests the previous proof + // but immediately validates it, obviating the requirement to set a + // contester, burn the contest bond, and other associated actions. + // This streamlined process is applied to 0-to-non-zero transition + // updates. + if ( + tran.contester == address(0) + && tran.blockHash == evidence.blockHash + && tran.signalRoot == evidence.signalRoot + ) { + // Alternatively, it can be understood that a transition cannot + // be re-approved by higher-tier proofs without undergoing + // contestation. + revert L1_ALREADY_PROVED(); + } + + if (tid == 1 && tran.prover == blk.assignedProver) { + // For the first transition, if the previous prover is still the + // assigned prover, we exclusively grant permission to the + // assigned approver to re-prove the block, unless the proof + // window has elapsed. + if ( + block.timestamp <= tran.timestamp + tier.provingWindow + && msg.sender != blk.assignedProver + ) revert L1_NOT_ASSIGNED_PROVER(); + } else { + // However, if the previous prover of the first transition is + // not the block's assigned prover, or for any other + // transitions, the assigned prover is not permitted to prove + // such transitions. + if (msg.sender == blk.assignedProver) { + revert L1_ASSIGNED_PROVER_NOT_ALLOWED(); + } + } + + // Burn the proof bond from the prover. + tt.burn(msg.sender, tier.proofBond); + + unchecked { + // This is the amount of Taiko tokens to send to the new prover + // and the winner of the contest. + uint256 reward; + if ( + tran.blockHash == evidence.blockHash + && tran.signalRoot == evidence.signalRoot + ) { + // In the event that the previous prover emerges as the + // winner, half of the contest bond is designated as the + // reward, to be divided equally between the new prover and + // the previous prover. + reward = tran.contestBond / 4; + + // Mint the reward and the proof bond and return it to the + // previous prover. + tt.mint(tran.prover, reward + tran.proofBond); + } else { + // In the event that the contester is the winner, half of + // the proof bond is designated as the reward, to be divided + // equally between the new prover and the contester. + reward = tran.proofBond / 4; + + // It's important to note that the contester is set to zero + // for the tier-0 transition. Consequently, we only grant a + // reward to the contester if it is not a zero-address. + if (tran.contester != address(0)) { + tt.mint(tran.contester, reward + tran.contestBond); + } else if (reward != 0) { + //The prover is also the contester, so the reward is + // sent to him. + tt.mint(msg.sender, reward); + } + + // Given that the contester emerges as the winner, the + // previous blockHash and signalRoot are considered + // incorrect, and we must replace them with the correct + // values. + tran.blockHash = evidence.blockHash; + tran.signalRoot = evidence.signalRoot; + } + + // In theory, the reward can also be zero for certain tiers if + // their proof bonds are set to zero. + if (reward != 0) { + tt.mint(msg.sender, reward); + } + } + + // Regardless of whether the previous prover or the contester + // emerges as the winner, we consistently erase the contest history + // to make this transition appear entirely new. + tran.prover = msg.sender; + tran.proofBond = tier.proofBond; + tran.contester = address(0); + tran.contestBond = 1; + tran.timestamp = uint64(block.timestamp); + tran.tier = evidence.tier; + + emit TransitionProved({ + blockId: blk.blockId, + parentHash: evidence.parentHash, + blockHash: evidence.blockHash, + signalRoot: evidence.signalRoot, + prover: msg.sender, + proofBond: tier.proofBond, + tier: evidence.tier + }); } } } diff --git a/packages/protocol/contracts/L1/libs/LibTaikoToken.sol b/packages/protocol/contracts/L1/libs/LibTaikoToken.sol deleted file mode 100644 index 3b4ca51f99..0000000000 --- a/packages/protocol/contracts/L1/libs/LibTaikoToken.sol +++ /dev/null @@ -1,72 +0,0 @@ -// SPDX-License-Identifier: MIT -// _____ _ _ _ _ -// |_ _|_ _(_) |_____ | | __ _| |__ ___ -// | |/ _` | | / / _ \ | |__/ _` | '_ (_-< -// |_|\__,_|_|_\_\___/ |____\__,_|_.__/__/ - -pragma solidity ^0.8.20; - -import { AddressResolver } from "../../common/AddressResolver.sol"; -import { LibFixedPointMath as Math } from - "../../thirdparty/LibFixedPointMath.sol"; -import { LibMath } from "../../libs/LibMath.sol"; -import { TaikoData } from "../TaikoData.sol"; -import { TaikoToken } from "../TaikoToken.sol"; - -library LibTaikoToken { - error L1_INSUFFICIENT_TOKEN(); - - function withdrawTaikoToken( - TaikoData.State storage state, - AddressResolver resolver, - uint256 amount - ) - internal - { - uint256 balance = state.taikoTokenBalances[msg.sender]; - if (balance < amount) revert L1_INSUFFICIENT_TOKEN(); - // Unchecked is safe per above check - unchecked { - state.taikoTokenBalances[msg.sender] -= amount; - } - - TaikoToken(resolver.resolve("taiko_token", false)).transfer( - msg.sender, amount - ); - } - - function depositTaikoToken( - TaikoData.State storage state, - AddressResolver resolver, - uint256 amount - ) - internal - { - if (amount > 0) { - TaikoToken(resolver.resolve("taiko_token", false)).transferFrom( - msg.sender, address(this), amount - ); - state.taikoTokenBalances[msg.sender] += amount; - } - } - - function receiveTaikoToken( - TaikoData.State storage state, - AddressResolver resolver, - address from, - uint256 amount - ) - internal - returns (TaikoToken tt) - { - tt = TaikoToken(resolver.resolve("taiko_token", false)); - if (state.taikoTokenBalances[from] >= amount) { - // Safe, see the above constraint - unchecked { - state.taikoTokenBalances[from] -= amount; - } - } else { - tt.transferFrom(from, address(this), amount); - } - } -} diff --git a/packages/protocol/contracts/L1/libs/LibTiers.sol b/packages/protocol/contracts/L1/libs/LibTiers.sol new file mode 100644 index 0000000000..1e040fa9c1 --- /dev/null +++ b/packages/protocol/contracts/L1/libs/LibTiers.sol @@ -0,0 +1,85 @@ +// SPDX-License-Identifier: MIT +// _____ _ _ _ _ +// |_ _|_ _(_) |_____ | | __ _| |__ ___ +// | |/ _` | | / / _ \ | |__/ _` | '_ (_-< +// |_|\__,_|_|_\_\___/ |____\__,_|_.__/__/ + +pragma solidity ^0.8.20; + +import { TaikoData } from "../../L1/TaikoData.sol"; + +/// @title LibTiers +/// @notice A library for providing tier configurations. +library LibTiers { + uint16 internal constant TIER_OPTIMISTIC = 100; + uint16 internal constant TIER_SGX = 200; + uint16 internal constant TIER_PSE_ZKEVM = 300; + uint16 internal constant TIER_GUARDIAN = 1000; + + // Warning: Any errors defined here must also be defined in TaikoErrors.sol. + error L1_TIER_NOT_FOUND(); + + /// @dev Retrieves the configuration for a specified tier. + function getTierConfig(uint16 tierId) + internal + pure + returns (TaikoData.TierConfig memory) + { + if (tierId == TIER_OPTIMISTIC) { + return TaikoData.TierConfig({ + verifierName: "tier_optimistic", + proofBond: 100_000 ether, // TKO + contestBond: 100_000 ether, // TKO + cooldownWindow: 4 hours, + provingWindow: 20 minutes + }); + } + + if (tierId == TIER_SGX) { + return TaikoData.TierConfig({ + verifierName: "tier_sgx", + proofBond: 50_000 ether, // TKO + contestBond: 50_000 ether, // TKO + cooldownWindow: 3 hours, + provingWindow: 60 minutes + }); + } + + if (tierId == TIER_PSE_ZKEVM) { + return TaikoData.TierConfig({ + verifierName: "tier_pse_zkevm", + proofBond: 10_000 ether, // TKO + contestBond: 10_000 ether, // TKO + cooldownWindow: 2 hours, + provingWindow: 90 minutes + }); + } + + if (tierId == TIER_GUARDIAN) { + return TaikoData.TierConfig({ + verifierName: "tier_guardian", + proofBond: 0, + contestBond: 0, // not contestable + cooldownWindow: 1 hours, + provingWindow: 120 minutes + }); + } + + revert L1_TIER_NOT_FOUND(); + } + + /// @dev Retrieves the IDs of all supported tiers. + function getTierIds() internal pure returns (uint16[] memory tiers) { + tiers = new uint16[](4); + tiers[0] = TIER_OPTIMISTIC; + tiers[1] = TIER_SGX; + tiers[2] = TIER_PSE_ZKEVM; + tiers[3] = TIER_GUARDIAN; + } + + /// @dev Determines the minimal tier for a block based on a random input. + function getMinTier(uint256 rand) internal pure returns (uint16) { + if (rand % 100 == 0) return TIER_PSE_ZKEVM; + else return TIER_OPTIMISTIC; + } +} diff --git a/packages/protocol/contracts/L1/libs/LibUtils.sol b/packages/protocol/contracts/L1/libs/LibUtils.sol index db5f4ffc44..cb47813c9b 100644 --- a/packages/protocol/contracts/L1/libs/LibUtils.sol +++ b/packages/protocol/contracts/L1/libs/LibUtils.sol @@ -10,13 +10,35 @@ import { LibDepositing } from "./LibDepositing.sol"; import { LibMath } from "../../libs/LibMath.sol"; import { TaikoData } from "../TaikoData.sol"; +/// @title LibUtils +/// @notice A library that offers helper functions. library LibUtils { using LibMath for uint256; - address internal constant ORACLE_PROVER = address(1); - + // Warning: Any errors defined here must also be defined in TaikoErrors.sol. + error L1_BLOCK_MISMATCH(); error L1_INVALID_BLOCK_ID(); + error L1_TRANSITION_NOT_FOUND(); + error L1_UNEXPECTED_TRANSITION_ID(); + + /// @dev Retrieves a block based on its ID. + function getBlock( + TaikoData.State storage state, + TaikoData.Config memory config, + uint64 blockId + ) + internal + view + returns (TaikoData.Block storage blk) + { + blk = state.blocks[blockId % config.blockRingBufferSize]; + if (blk.blockId != blockId) { + revert L1_INVALID_BLOCK_ID(); + } + } + /// @dev Retrieves the ID of the transition with a given parentHash. + /// This function will return 0 if the transtion is not found. function getTransitionId( TaikoData.State storage state, TaikoData.Block storage blk, @@ -33,9 +55,38 @@ library LibUtils { tid = state.transitionIds[blk.blockId][parentHash]; } - assert(tid < blk.nextTransitionId); + if (tid >= blk.nextTransitionId) revert L1_UNEXPECTED_TRANSITION_ID(); } + /// @dev Retrieves the transition with a given parentHash. + /// This function will revert if the transition is not found. + function getTransition( + TaikoData.State storage state, + TaikoData.Config memory config, + uint64 blockId, + bytes32 parentHash + ) + internal + view + returns (TaikoData.Transition storage tran) + { + TaikoData.SlotB memory b = state.slotB; + if (blockId < b.lastVerifiedBlockId || blockId >= b.numBlocks) { + revert L1_INVALID_BLOCK_ID(); + } + + uint64 slot = blockId % config.blockRingBufferSize; + TaikoData.Block storage blk = state.blocks[slot]; + if (blk.blockId != blockId) revert L1_BLOCK_MISMATCH(); + + uint32 tid = getTransitionId(state, blk, slot, parentHash); + if (tid == 0) revert L1_TRANSITION_NOT_FOUND(); + + tran = state.transitions[slot][tid]; + } + + /// @dev Retrieves the transition that is used to verify the given block. + /// This function will revert if the block is not verified. function getVerifyingTransition( TaikoData.State storage state, TaikoData.Config memory config, @@ -43,15 +94,17 @@ library LibUtils { ) internal view - returns (TaikoData.Transition memory transition) + returns (TaikoData.Transition memory) { - uint64 id = blockId == 0 ? state.slotB.lastVerifiedBlockId : blockId; - uint64 slot = id % config.blockRingBufferSize; + uint64 _blockId = + blockId == 0 ? state.slotB.lastVerifiedBlockId : blockId; + uint64 slot = _blockId % config.blockRingBufferSize; TaikoData.Block storage blk = state.blocks[slot]; - if (blk.blockId == id) { - transition = state.transitions[slot][blk.verifiedTransitionId]; - } + if (blk.blockId != _blockId) revert L1_BLOCK_MISMATCH(); + if (blk.verifiedTransitionId == 0) revert L1_TRANSITION_NOT_FOUND(); + + return state.transitions[slot][blk.verifiedTransitionId]; } function getStateVariables(TaikoData.State storage state) @@ -65,41 +118,10 @@ library LibUtils { return TaikoData.StateVariables({ genesisHeight: a.genesisHeight, genesisTimestamp: a.genesisTimestamp, - numBlocks: b.numBlocks, - lastVerifiedBlockId: b.lastVerifiedBlockId, nextEthDepositToProcess: a.nextEthDepositToProcess, - numEthDeposits: a.numEthDeposits - a.nextEthDepositToProcess + numEthDeposits: a.numEthDeposits - a.nextEthDepositToProcess, + numBlocks: b.numBlocks, + lastVerifiedBlockId: b.lastVerifiedBlockId }); } - - /// @dev Hashing the block metadata. - function hashMetadata(TaikoData.BlockMetadata memory meta) - internal - pure - returns (bytes32 hash) - { - uint256[6] memory inputs; - - inputs[0] = (uint256(meta.id) << 192) | (uint256(meta.timestamp) << 128) - | (uint256(meta.l1Height) << 64); - - inputs[1] = uint256(meta.l1Hash); - inputs[2] = uint256(meta.mixHash); - inputs[3] = - uint256(LibDepositing.hashEthDeposits(meta.depositsProcessed)); - inputs[4] = uint256(meta.txListHash); - - inputs[5] = (uint256(meta.txListByteStart) << 232) - | (uint256(meta.txListByteEnd) << 208) // - | (uint256(meta.gasLimit) << 176) - | (uint256(uint160(meta.proposer)) << 16); - - assembly { - hash := keccak256(inputs, mul(6, 32)) - } - } - - function getVerifierName(uint16 id) internal pure returns (bytes32) { - return bytes32(uint256(0x1000000) + id); - } } diff --git a/packages/protocol/contracts/L1/libs/LibVerifying.sol b/packages/protocol/contracts/L1/libs/LibVerifying.sol index 578dd1bce0..24622f6317 100644 --- a/packages/protocol/contracts/L1/libs/LibVerifying.sol +++ b/packages/protocol/contracts/L1/libs/LibVerifying.sol @@ -13,25 +13,33 @@ import { IProver } from "../IProver.sol"; import { ISignalService } from "../../signal/ISignalService.sol"; import { LibMath } from "../../libs/LibMath.sol"; import { LibUtils } from "./LibUtils.sol"; +import { LibTiers } from "./LibTiers.sol"; import { TaikoData } from "../../L1/TaikoData.sol"; +import { TaikoToken } from "../TaikoToken.sol"; +/// @title LibVerifying +/// @notice A library for handling block verification in the Taiko protocol. library LibVerifying { using Address for address; - using LibUtils for TaikoData.State; using LibMath for uint256; + // Warning: Any events defined here must also be defined in TaikoEvents.sol. event BlockVerified( - uint256 indexed blockId, address indexed prover, bytes32 blockHash + uint256 indexed blockId, + address indexed assignedProver, + address indexed prover, + bytes32 blockHash, + bytes32 signalRoot ); + event CrossChainSynced( uint64 indexed srcHeight, bytes32 blockHash, bytes32 signalRoot ); - event BondReturned(address indexed to, uint64 blockId, uint256 bond); - event BondRewarded(address indexed to, uint64 blockId, uint256 bond); - error L1_BLOCK_ID_MISMATCH(); + // Warning: Any errors defined here must also be defined in TaikoErrors.sol. + error L1_BLOCK_MISMATCH(); error L1_INVALID_CONFIG(); - error L1_UNEXPECTED_TRANSITION_ID(); + error L1_TRANSITION_ID_ZERO(); function init( TaikoData.State storage state, @@ -45,11 +53,9 @@ library LibVerifying { || config.blockMaxProposals == 1 || config.blockRingBufferSize <= config.blockMaxProposals + 1 || config.blockMaxGasLimit == 0 || config.blockMaxTxListBytes == 0 - || config.blockTxListExpiry > 30 * 24 hours || config.blockMaxTxListBytes > 128 * 1024 //blob up to 128K - || config.proofRegularCooldown < config.proofOracleCooldown - || config.proofWindow == 0 || config.proofBond == 0 - || config.proofBond < 10 * config.proposerRewardPerSecond + || config.assignmentBond == 0 + || config.assignmentBond < 10 * config.proposerRewardPerSecond || config.ethDepositRingBufferSize <= 1 || config.ethDepositMinCountPerBlock == 0 || config.ethDepositMaxCountPerBlock @@ -72,21 +78,26 @@ library LibVerifying { // Init the genesis block TaikoData.Block storage blk = state.blocks[0]; blk.nextTransitionId = 2; - blk.verifiedTransitionId = 1; blk.proposedAt = uint64(block.timestamp); + blk.verifiedTransitionId = 1; // Init the first state transition TaikoData.Transition storage tran = state.transitions[0][1]; tran.blockHash = genesisBlockHash; - tran.provenAt = uint64(block.timestamp); + tran.prover = address(0); + tran.timestamp = uint64(block.timestamp); + tran.tier = LibTiers.TIER_GUARDIAN; emit BlockVerified({ blockId: 0, - prover: LibUtils.ORACLE_PROVER, - blockHash: genesisBlockHash + assignedProver: address(0), + prover: address(0), + blockHash: genesisBlockHash, + signalRoot: 0 }); } + /// @dev Verifies up to N blocks. function verifyBlocks( TaikoData.State storage state, TaikoData.Config memory config, @@ -95,23 +106,31 @@ library LibVerifying { ) internal { + // Retrieve the latest verified block and the associated transition used + // for its verification. TaikoData.SlotB memory b = state.slotB; uint64 blockId = b.lastVerifiedBlockId; uint64 slot = blockId % config.blockRingBufferSize; + TaikoData.Block storage blk = state.blocks[slot]; - if (blk.blockId != blockId) revert L1_BLOCK_ID_MISMATCH(); + if (blk.blockId != blockId) revert L1_BLOCK_MISMATCH(); uint32 tid = blk.verifiedTransitionId; - if (tid == 0) revert L1_UNEXPECTED_TRANSITION_ID(); - bytes32 blockHash = state.transitions[slot][tid].blockHash; + // The following scenario should never occur but is included as a + // precaution. + if (tid == 0) revert L1_TRANSITION_ID_ZERO(); + // The `blockHash` variable represents the most recently trusted + // blockHash on L2. + bytes32 blockHash = state.transitions[slot][tid].blockHash; bytes32 signalRoot; - TaikoData.Transition storage tran; - uint64 processed; + // The Taiko token address which will be initialized as needed. + address tt; + // Unchecked is safe: // - assignment is within ranges // - blockId and processed values incremented will still be OK in the @@ -121,45 +140,79 @@ library LibVerifying { while (blockId < b.numBlocks && processed < maxBlocks) { slot = blockId % config.blockRingBufferSize; + blk = state.blocks[slot]; - if (blk.blockId != blockId) revert L1_BLOCK_ID_MISMATCH(); + if (blk.blockId != blockId) revert L1_BLOCK_MISMATCH(); tid = LibUtils.getTransitionId(state, blk, slot, blockHash); - if (tid == 0) break; - tran = state.transitions[slot][tid]; - if (tran.prover == address(0)) break; + // When `tid` is 0, it indicates that there is no proven + // transition with its parentHash equal to the blockHash of the + // most recently verified block. + if (tid == 0) break; - uint256 proofCooldown = tran.prover == LibUtils.ORACLE_PROVER - ? config.proofOracleCooldown - : config.proofRegularCooldown; - if (block.timestamp <= tran.provenAt + proofCooldown) { + // A transition with the correct `parentHash` has been located. + TaikoData.Transition storage tran = state.transitions[slot][tid]; + + // It's not possible to verify this block if either the + // transition is contested and awaiting higher-tier proof or if + // the transition is still within its cooldown period. + if ( + tran.contester != address(0) + || block.timestamp + <= uint256(tran.timestamp) + + LibTiers.getTierConfig(tran.tier).cooldownWindow + ) { break; } + // Mark this block as verified + blk.verifiedTransitionId = tid; + + // Update variables blockHash = tran.blockHash; signalRoot = tran.signalRoot; - blk.verifiedTransitionId = tid; - // If the default assigned prover is the oracle do not refund - // because was not even charged. - if (blk.prover != LibUtils.ORACLE_PROVER) { - // Refund bond or give 1/4 of it to the actual prover and - // burn the rest. - if ( - tran.prover == LibUtils.ORACLE_PROVER - || tran.provenAt <= blk.proposedAt + config.proofWindow - ) { - state.taikoTokenBalances[blk.prover] += blk.proofBond; - emit BondReturned(blk.prover, blockId, blk.proofBond); - } else { - uint256 rewardAmount = blk.proofBond / 4; - state.taikoTokenBalances[tran.prover] += rewardAmount; - emit BondRewarded(tran.prover, blockId, rewardAmount); - } + // We consistently return the assignment bond and the proof bond + // to the actual prover of the transition utilized for block + // verification. If the actual prover happens to be the block's + // assigned prover, he will receive both deposits, ultimately + // earning the proving fee paid during block proposal. In + // contrast, if the actual prover is different from the block's + // assigned prover, the assignment bond serves as a reward to + // the actual prover, while the assigned prover forfeits his + // assignment bond due to failure to fulfill their commitment. + uint256 bondToReturn = + uint256(tran.proofBond) + blk.assignmentBond; + + // Nevertheless, it's possible for the actual prover to be the + // same individual or entity as the block's assigned prover. + // Consequently, we have chosen to grant the actual prover only + // half of the assignment bond as a reward. + if (tran.prover != blk.assignedProver) { + bondToReturn -= blk.assignmentBond / 2; } - emit BlockVerified(blockId, tran.prover, tran.blockHash); + if (tt == address(0)) { + tt = resolver.resolve("taiko_token", false); + } + TaikoToken(tt).mint(tran.prover, bondToReturn); + + // Note: We exclusively address the bonds linked to the + // transition used for verification. While there may exist + // other transitions for this block, we disregard them entirely. + // The bonds for these other transitions are burned either when + // the transitions are generated or proven. In such cases, both + // the provers and contesters of of those transitions forfeit + // their bonds. + + emit BlockVerified({ + blockId: blockId, + assignedProver: blk.assignedProver, + prover: tran.prover, + blockHash: tran.blockHash, + signalRoot: tran.signalRoot + }); ++blockId; ++processed; @@ -167,14 +220,18 @@ library LibVerifying { if (processed > 0) { uint64 lastVerifiedBlockId = b.lastVerifiedBlockId + processed; + + // Update protocol level state variables state.slotB.lastVerifiedBlockId = lastVerifiedBlockId; state.slotB.lastVerifiedAt = uint64(block.timestamp); if (config.relaySignalRoot) { - // Send the L2's signal root to the signal service so other - // TaikoL1 deployments, if they share the same signal - // service, can relay the signal to their corresponding - // TaikoL2 contract. + // Forward the L2's signal root to the signal service to + // enable other TaikoL1 deployments, which share the same + // signal service, to relay the signal to their respective + // TaikoL2 contracts. This enables direct L1-to-L3 and + // L2-to-L2 bridging without assets passing an intermediary + // layer. ISignalService(resolver.resolve("signal_service", false)) .sendSignal(signalRoot); } diff --git a/packages/protocol/contracts/L1/libs/verifiers/LibZKPVerifier.sol b/packages/protocol/contracts/L1/libs/verifiers/LibZKPVerifier.sol deleted file mode 100644 index 14f4a35a49..0000000000 --- a/packages/protocol/contracts/L1/libs/verifiers/LibZKPVerifier.sol +++ /dev/null @@ -1,45 +0,0 @@ -// SPDX-License-Identifier: MIT -// _____ _ _ _ _ -// |_ _|_ _(_) |_____ | | __ _| |__ ___ -// | |/ _` | | / / _ \ | |__/ _` | '_ (_-< -// |_|\__,_|_|_\_\___/ |____\__,_|_.__/__/ - -pragma solidity ^0.8.20; - -import { AddressResolver } from "../../../common/AddressResolver.sol"; -import { LibUtils } from "../LibUtils.sol"; -import { TaikoData } from "../../TaikoData.sol"; - -/// @title LibZKPVerifier -/// @notice A library for verifying ZK proofs in the Taiko protocol. -library LibZKPVerifier { - error L1_INVALID_PROOF(); - - /// @dev Verifies the provided proof using the designated verifier. - /// @param resolver The {AddressResolver} instance to resolve the verifier's - /// address. - /// @param proof The ZKP to verify. - /// @param verifierId The identifier of the ZKP verifier. - function verifyProof( - AddressResolver resolver, - bytes memory proof, - uint16 verifierId - ) - internal - view - { - // Resolve the verifier's name and obtain its address. - address verifierAddress = - resolver.resolve(LibUtils.getVerifierName(verifierId), false); - - // Call the verifier contract with the provided proof. - (bool verified, bytes memory ret) = - verifierAddress.staticcall(bytes.concat(proof)); - - // Check if the proof is valid. - if (!verified || ret.length != 32 || bytes32(ret) != keccak256("taiko")) - { - revert L1_INVALID_PROOF(); - } - } -} diff --git a/packages/protocol/contracts/L1/verifiers/GuardianVerifier.sol b/packages/protocol/contracts/L1/verifiers/GuardianVerifier.sol new file mode 100644 index 0000000000..512613c9c2 --- /dev/null +++ b/packages/protocol/contracts/L1/verifiers/GuardianVerifier.sol @@ -0,0 +1,46 @@ +// SPDX-License-Identifier: MIT +// _____ _ _ _ _ +// |_ _|_ _(_) |_____ | | __ _| |__ ___ +// | |/ _` | | / / _ \ | |__/ _` | '_ (_-< +// |_|\__,_|_|_\_\___/ |____\__,_|_.__/__/ + +pragma solidity ^0.8.20; + +import { EssentialContract } from "../../common/EssentialContract.sol"; +import { IEvidenceVerifier } from "./IEvidenceVerifier.sol"; +import { Proxied } from "../../common/Proxied.sol"; +import { TaikoData } from "../TaikoData.sol"; + +/// @title GuardianVerifier +contract GuardianVerifier is EssentialContract, IEvidenceVerifier { + uint256[50] private __gap; + + error PERMISSION_DENIED(); + error INVALID_PROOF(); + + /// @notice Initializes the contract with the provided address manager. + /// @param _addressManager The address of the address manager contract. + function init(address _addressManager) external initializer { + EssentialContract._init(_addressManager); + } + + /// @inheritdoc IEvidenceVerifier + function verifyProof( + // blockId is unused now, but can be used later when supporting + // different types of proofs. + uint64, + address prover, + bool, + TaikoData.BlockEvidence calldata evidence + ) + external + view + { + if (evidence.proof.length != 0) revert INVALID_PROOF(); + if (prover != resolve("guardian", false)) revert PERMISSION_DENIED(); + } +} + +/// @title ProxiedGuardianVerifier +/// @notice Proxied version of the parent contract. +contract ProxiedGuardianVerifier is Proxied, GuardianVerifier { } diff --git a/packages/protocol/contracts/L1/verifiers/IEvidenceVerifier.sol b/packages/protocol/contracts/L1/verifiers/IEvidenceVerifier.sol new file mode 100644 index 0000000000..e920c0d42e --- /dev/null +++ b/packages/protocol/contracts/L1/verifiers/IEvidenceVerifier.sol @@ -0,0 +1,19 @@ +// SPDX-License-Identifier: MIT +// _____ _ _ _ _ +// |_ _|_ _(_) |_____ | | __ _| |__ ___ +// | |/ _` | | / / _ \ | |__/ _` | '_ (_-< +// |_|\__,_|_|_\_\___/ |____\__,_|_.__/__/ + +pragma solidity ^0.8.20; + +import { TaikoData } from "../TaikoData.sol"; + +interface IEvidenceVerifier { + function verifyProof( + uint64 blockId, + address prover, + bool isContesting, + TaikoData.BlockEvidence memory evidence + ) + external; +} diff --git a/packages/protocol/contracts/L1/verifiers/PseZkVerifier.sol b/packages/protocol/contracts/L1/verifiers/PseZkVerifier.sol new file mode 100644 index 0000000000..1bc2a2ed73 --- /dev/null +++ b/packages/protocol/contracts/L1/verifiers/PseZkVerifier.sol @@ -0,0 +1,110 @@ +// SPDX-License-Identifier: MIT +// _____ _ _ _ _ +// |_ _|_ _(_) |_____ | | __ _| |__ ___ +// | |/ _` | | / / _ \ | |__/ _` | '_ (_-< +// |_|\__,_|_|_\_\___/ |____\__,_|_.__/__/ + +pragma solidity ^0.8.20; + +import { EssentialContract } from "../../common/EssentialContract.sol"; +import { IEvidenceVerifier } from "./IEvidenceVerifier.sol"; +import { LibBytesUtils } from "../../thirdparty/LibBytesUtils.sol"; +import { Proxied } from "../../common/Proxied.sol"; +import { TaikoData } from "../TaikoData.sol"; + +/// @title PseZkVerifier +/// @notice See the documentation in {IEvidenceVerifier}. +contract PseZkVerifier is EssentialContract, IEvidenceVerifier { + uint256[50] private __gap; + + error L1_INVALID_PROOF(); + + /// @notice Initializes the contract with the provided address manager. + /// @param _addressManager The address of the address manager contract. + function init(address _addressManager) external initializer { + EssentialContract._init(_addressManager); + } + + /// @inheritdoc IEvidenceVerifier + function verifyProof( + // blockId is unused now, but can be used later when supporting + // different types of proofs. + uint64, + address prover, + bool isContesting, + TaikoData.BlockEvidence calldata evidence + ) + external + view + { + // Do not run proof verification to contest an existing proof + if (isContesting) return; + + bytes32 instance = getInstance(prover, evidence); + + // Validate the instance using bytes utilities. + if ( + !LibBytesUtils.equal( + LibBytesUtils.slice(evidence.proof, 2, 32), + bytes.concat(bytes16(0), bytes16(instance)) + ) + ) { + revert L1_INVALID_PROOF(); + } + + if ( + !LibBytesUtils.equal( + LibBytesUtils.slice(evidence.proof, 34, 32), + bytes.concat(bytes16(0), bytes16(uint128(uint256(instance)))) + ) + ) { + revert L1_INVALID_PROOF(); + } + + // Extract verifier ID from the proof. + uint16 verifierId = uint16(bytes2(evidence.proof[0:2])); + + // Delegate to the ZKP verifier library to validate the proof. + + // Resolve the verifier's name and obtain its address. + address verifierAddress = resolve(getVerifierName(verifierId), false); + + // Call the verifier contract with the provided proof. + (bool verified, bytes memory ret) = + verifierAddress.staticcall(bytes.concat(evidence.proof[2:])); + + // Check if the proof is valid. + if (!verified || ret.length != 32 || bytes32(ret) != keccak256("taiko")) + { + revert L1_INVALID_PROOF(); + } + } + + function getInstance( + address prover, + TaikoData.BlockEvidence memory evidence + ) + internal + pure + returns (bytes32 instance) + { + return keccak256( + abi.encode( + evidence.metaHash, + evidence.parentHash, + evidence.blockHash, + evidence.signalRoot, + evidence.graffiti, + prover + ) + ); + } + + function getVerifierName(uint16 id) internal pure returns (bytes32) { + return bytes32(uint256(0x1000000) + id); + } +} + +/// @title ProxiedProofVerifier +/// @notice Proxied version of the parent contract. +contract ProxiedPseZkVerifier is Proxied, PseZkVerifier { } diff --git a/packages/protocol/contracts/L1/verifiers/SGXVerifier.sol b/packages/protocol/contracts/L1/verifiers/SGXVerifier.sol new file mode 100644 index 0000000000..2137939bd0 --- /dev/null +++ b/packages/protocol/contracts/L1/verifiers/SGXVerifier.sol @@ -0,0 +1,43 @@ +// SPDX-License-Identifier: MIT +// _____ _ _ _ _ +// |_ _|_ _(_) |_____ | | __ _| |__ ___ +// | |/ _` | | / / _ \ | |__/ _` | '_ (_-< +// |_|\__,_|_|_\_\___/ |____\__,_|_.__/__/ + +pragma solidity ^0.8.20; + +import { EssentialContract } from "../../common/EssentialContract.sol"; +import { IEvidenceVerifier } from "./IEvidenceVerifier.sol"; +import { Proxied } from "../../common/Proxied.sol"; +import { TaikoData } from "../TaikoData.sol"; + +/// @title GuardianVerifier +contract SGXVerifier is EssentialContract, IEvidenceVerifier { + uint256[50] private __gap; + + /// @notice Initializes the contract with the provided address manager. + /// @param _addressManager The address of the address manager contract. + function init(address _addressManager) external initializer { + EssentialContract._init(_addressManager); + } + + /// @inheritdoc IEvidenceVerifier + function verifyProof( + // blockId is unused now, but can be used later when supporting + // different types of proofs. + uint64, + address, + bool, + TaikoData.BlockEvidence calldata + ) + external + pure + { + // TODO + revert("not implemented"); + } +} + +/// @title ProxiedSGXVerifier +/// @notice Proxied version of the parent contract. +contract ProxiedSGXVerifier is Proxied, SGXVerifier { } diff --git a/packages/protocol/contracts/tokenvault/BridgedERC721.sol b/packages/protocol/contracts/tokenvault/BridgedERC721.sol index 53317f7214..9acc311e14 100644 --- a/packages/protocol/contracts/tokenvault/BridgedERC721.sol +++ b/packages/protocol/contracts/tokenvault/BridgedERC721.sol @@ -124,9 +124,7 @@ contract BridgedERC721 is EssentialContract, ERC721Upgradeable { } /// @notice Returns an empty token URI. - /// @param tokenId ID of the token. - /// @return An empty string. - function tokenURI(uint256 tokenId) + function tokenURI(uint256) public pure virtual diff --git a/packages/protocol/docs/DESIGN.md b/packages/protocol/docs/DESIGN.md deleted file mode 100644 index e69de29bb2..0000000000 diff --git a/packages/protocol/docs/contestable_validity_rollup.md b/packages/protocol/docs/contestable_validity_rollup.md new file mode 100644 index 0000000000..e6f689a27b --- /dev/null +++ b/packages/protocol/docs/contestable_validity_rollup.md @@ -0,0 +1,95 @@ +# About Contestable Validity Rollup + +For a given block, a transition can be uniquely identified by its _parent hash_. The transition's _block hash_ (and _signal root_) may change over time by new proofs, but the transition is always referred to as the same transition in this document. + +## Terminology + +- **The First Transition**: Refers to the transition with ID = 1. + +- **Assignment Bond**: The bond provided by a block's assigned prover, serving as a commitment to initially prove the first transition and to provide post-contest proofs within the corresponding proving window. + +- **Proof Bond**: The bond provided by the actual prover of a proof, signifying their commitment that the proof is indeed correct and that they are ready to withstand a contest. + +- **Contest Bond**: The bond provided by the contester. + +## The First Transition + +The _first transition_ of a block is reserved for the block's assigned prover. However, this exclusivity is contingent upon the assigned prover successfully proving the block within the stipulated proving window of the tier. If the assigned prover fails to meet this deadline, the transition is considered _open_. Upon its opening, the assigned prover is no longer allowed to prove the first transition. + +For all other transitions, the proving window doesn't apply. Here, the principle is straightforward: the quickest prover takes the lead. Importantly, the assigned prover is not allowed to prove transtions other than the first one. + +## Proof Tier Selection + +After a block is contested, it's eligible to be re-proven using a higher-tier proof. The onus of selecting the tier — whether it's one level higher or more — rests entirely with the new prover stepping in to prove the block. + +Each tier is associated with a distinct proving window. Generally, it's advisable for provers to opt for a lower-tier proof when feasible, as choosing a higher-tier proof, despite its acceptability, might not be the most efficient or profitable choice. + +## Proof Bonds and Contest Bonds + +Each tier mandates two values: a _proof bond_ and a _contest bond_. + +Submitting a tier-N proof necessitates depositing a tier-N proof bond into the transition. If a subsequent higher-tier proof invalidates this transition, the bond is burned. Conversely, contesting a tier-N transition requires a contester to deposit the respective contest bond, which is forfeited if the contest is wrong. + +### Contest Bond Configuration + +To determine the size of the contest bond in relation to the proof bond, a few considerations come into play: + +1. **Tier Differences:** As we move up the tiers, the assumed trustworthiness of proofs increases. Given this, contests against higher tiers should necessitate larger bonds, reflecting the increased certainty and reliability of these tiers. A contest against a high-tier transition asserts that a major flaw exists in a supposedly secure tier, and so the bond should match this gravity. + +2. **Optimistic (tier-1):** Given that tier-1 is an optimistic assertion without a proof, it's logical for its contest bond to be equal to its proof bond. This recognizes the provisional nature of such transitions and ensures that contests are neither discouraged nor incentivized excessively. + +In essence, the size of the contest bond should mirror the risk and certainty levels associated with the proofs and contests in each tier. + +## Re-proving a Transition + +Consider Alice proves a transition with a $10,000 bond, and Bob contests it with a bond of $20,000. Now, Cindy can prove this transition with a proof bond of $5,000. + +**If Cindy's proof upholds Alice:** + +- Alice receives $15,000 (= $10,000 + $20,000/4); +- Bob loses all his bond $20,000; +- Cindy's total bond in the transition is $10,000 (= $5,000 + $20,000/4). + +**If Bob's contest stands:** + +- Alice loses all her bond $10,000; +- Bob receives $22,500 (= $20,000 + $10,000/4); +- Cindy's total bond in the transition is $7,500 (= $5,000 + $10,000/4). + +In either scenario, Cindy becomes the new prover for this transition, staking a bond in the transition together with rewards from either Alice or Bob. This bond is retrievable only when the transition is used for block verification. + +The protocol ensures a segment of either the prover's or contester's bond undergoes burning. This safeguards against collusion between the three participants by enforcing a significant cost. Also, retaining the new prover's rewards within the transition and their fresh bond is crucial. The bond and past reward are lost if this prover is later refuted. + +## Erasing Proving History + +Given two transitions, A and B: + +Transition A undergoes a two-tier proving process. Initially, it's validated with a tier-2 proof. Subsequently, after being contested, it's validated by a tier-4 proof. In contrast, Transition B is directly verified with a tier-4 proof. + +Considering the bonds of transitions A and B, should there be any disparity? + +The logical proposition here is that both transitions should bear identical bonds. There's no intrinsic attribute in either transition A or B to denote one as being inherently riskier or more trustworthy than the other. If this rationale is embraced, then it implies that the validation by a superior-tier proof should effectively "reset" or erase the history of the transition. + +To exemplify, given the accepted rationale, the bond distribution dynamics would be as follows: + +**If Cindy's proof upholds Alice:** + +- Alice receives $15,000 (= $10,000 + $20,000/4); +- Bob loses all his bond $20,000; +- Cindy receives $5,000 (= $20,000/4) and deposits a bond of $5,000. + +**If Bob's contest stands:** + +- Alice loses all her bond $10,000; +- Bob receives $22,500 (= $20,000 + $10,000/4); +- Cindy receives $2,500 (= $10,000/4) and deposits a bond of $5,000. + +From an engineering standpoint, this approach of erasing prior proving impacts streamlines the implementation and reduces code complexity. + +Indeed, allowing a new prover to deposit a proof bond that's smaller than the potential reward from either the original prover or the contester is not viewed as a system flaw or bug. The rationale behind this is that the new proof is expected to be more trustworthy than the previous one. + +## Prover Fees + +The prover assignment serves as a social contract between a proposer and a prover. It's crucial that this assignment explicitly defines the fee amount for each acceptable tier. + +Specifically, the assignment details the payment terms **only for the first proof of the first transition**. However, it's important to note that for all other transitions, the initial proof does not receive direct payment. Instead, if the transition is used in the verification of a block, the prover is compensated from a portion of the block's assigned prover's prover bond, which should be much larger in value than the prover fee for the first transition. diff --git a/packages/protocol/script/DeployOnL1.s.sol b/packages/protocol/script/DeployOnL1.s.sol index 5d42d6dc0e..81823268ed 100644 --- a/packages/protocol/script/DeployOnL1.s.sol +++ b/packages/protocol/script/DeployOnL1.s.sol @@ -12,7 +12,7 @@ import "@openzeppelin/contracts/proxy/transparent/TransparentUpgradeableProxy.sol"; import "../contracts/L1/TaikoToken.sol"; import "../contracts/L1/TaikoL1.sol"; -import "../contracts/L1/ProofVerifier.sol"; +import "../contracts/L1/verifiers/PseZkVerifier.sol"; import "../contracts/bridge/Bridge.sol"; import "../contracts/tokenvault/ERC20Vault.sol"; import "../contracts/tokenvault/ERC1155Vault.sol"; @@ -33,7 +33,7 @@ contract DeployOnL1 is Script { address public owner = vm.envAddress("OWNER"); - address public oracleProver = vm.envAddress("ORACLE_PROVER"); + address public oracleProver = vm.envAddress("PLACEHOLDER_ADDR"); address public sharedSignalService = vm.envAddress("SHARED_SIGNAL_SERVICE"); @@ -109,7 +109,7 @@ contract DeployOnL1 is Script { console2.log("BullToken", bullToken); uint64 feePerGas = 10; - uint64 proofWindow = 60 minutes; + uint64 provingWindow = 60 minutes; address taikoL1Proxy = deployProxy( "taiko", @@ -117,7 +117,7 @@ contract DeployOnL1 is Script { bytes.concat( taikoL1.init.selector, abi.encode( - addressManagerProxy, genesisHash, feePerGas, proofWindow + addressManagerProxy, genesisHash, feePerGas, provingWindow ) ) ); @@ -161,8 +161,8 @@ contract DeployOnL1 is Script { ) ); - // ProofVerifier - ProofVerifier proofVerifier = new ProxiedProofVerifier(); + // PseZkVerifier + PseZkVerifier proofVerifier = new ProxiedPseZkVerifier(); deployProxy( "proof_verifier", address(proofVerifier), @@ -195,13 +195,14 @@ contract DeployOnL1 is Script { } function deployPlonkVerifiers() private { - address[] memory plonkVerifiers = new address[](1); - plonkVerifiers[0] = - deployYulContract("contracts/libs/yul/PlonkVerifier.yulp"); - - for (uint16 i = 0; i < plonkVerifiers.length; ++i) { - setAddress(taikoL1.getVerifierName(i), plonkVerifiers[i]); - } + // TODO + // address[] memory plonkVerifiers = new address[](1); + // plonkVerifiers[0] = + // deployYulContract("contracts/libs/yul/PlonkVerifier.yulp"); + + // for (uint16 i = 0; i < plonkVerifiers.length; ++i) { + // setAddress(taikoL1.getVerifierName(i), plonkVerifiers[i]); + // } } function deployYulContract(string memory contractPath) diff --git a/packages/protocol/test/L1/TaikoL1.t.sol b/packages/protocol/test/L1/TaikoL1.t.sol index 537b00ff77..a48d5baeda 100644 --- a/packages/protocol/test/L1/TaikoL1.t.sol +++ b/packages/protocol/test/L1/TaikoL1.t.sol @@ -4,7 +4,7 @@ pragma solidity ^0.8.20; import { Test } from "forge-std/Test.sol"; import { console2 } from "forge-std/console2.sol"; import { AddressManager } from "../../contracts/common/AddressManager.sol"; -import { LibDepositing } from "../../contracts/L1/libs/LibDepositing.sol"; +import { LibUtils } from "../../contracts/L1/libs/LibUtils.sol"; import { TaikoData } from "../../contracts/L1/TaikoData.sol"; import { TaikoL1 } from "../../contracts/L1/TaikoL1.sol"; import { TaikoToken } from "../../contracts/L1/TaikoToken.sol"; @@ -21,13 +21,11 @@ contract TaikoL1_NoCooldown is TaikoL1 { { config = TaikoL1.getConfig(); - config.blockTxListExpiry = 5 minutes; config.blockMaxVerificationsPerTx = 0; config.blockMaxProposals = 10; config.blockRingBufferSize = 12; - config.proofRegularCooldown = 15 minutes; - config.skipProverAssignmentVerificaiton = true; - config.proofBond = 1e18; // 1 Taiko token + config.skipAssignmentVerificaiton = true; + config.assignmentBond = 1e18; // 1 Taiko token config.proposerRewardPerSecond = 1e15; // 0.001 Taiko token } } @@ -45,8 +43,8 @@ contract TaikoL1Test is TaikoL1TestBase { function setUp() public override { TaikoL1TestBase.setUp(); - - registerAddress(L1.getVerifierName(100), address(new Verifier())); + // TODO + // registerAddress(L1.getVerifierName(100), address(new Verifier())); } /// @dev Test we can propose, prove, then verify more blocks than @@ -78,7 +76,8 @@ contract TaikoL1Test is TaikoL1TestBase { bytes32 signalRoot = bytes32(1e9 + blockId); proveBlock(Bob, Bob, meta, parentHash, blockHash, signalRoot); vm.roll(block.number + 15 * 12); - vm.warp(block.timestamp + conf.proofRegularCooldown + 1); + // TODO + // vm.warp(block.timestamp + conf.proofRegularCooldown + 1); verifyBlock(Carol, 1); parentHash = blockHash; } @@ -109,7 +108,8 @@ contract TaikoL1Test is TaikoL1TestBase { proveBlock(Bob, Bob, meta, parentHash, blockHash, signalRoot); vm.roll(block.number + 15 * 12); - vm.warp(block.timestamp + conf.proofRegularCooldown + 1); + // TODO + // vm.warp(block.timestamp + conf.proofRegularCooldown + 1); verifyBlock(Alice, 2); parentHash = blockHash; } @@ -143,7 +143,8 @@ contract TaikoL1Test is TaikoL1TestBase { } vm.roll(block.number + 15 * 12); - vm.warp(block.timestamp + conf.proofRegularCooldown + 1); + // TODO + // vm.warp(block.timestamp + conf.proofRegularCooldown + 1); verifyBlock(Alice, conf.blockMaxProposals - 1); printVariables("after verify"); verifyBlock(Alice, conf.blockMaxProposals); @@ -196,8 +197,7 @@ contract TaikoL1Test is TaikoL1TestBase { printVariables("after processing send-ethers"); assertTrue( - LibDepositing.hashEthDeposits(meta.depositsProcessed) - != emptyDepositsRoot + keccak256(abi.encode(meta.depositsProcessed)) != emptyDepositsRoot ); assertEq(meta.depositsProcessed.length, count); @@ -255,7 +255,8 @@ contract TaikoL1Test is TaikoL1TestBase { ); vm.roll(block.number + 15 * 12); - vm.warp(block.timestamp + conf.proofRegularCooldown + 1); + // TODO + // vm.warp(block.timestamp + conf.proofRegularCooldown + 1); verifyBlock(Carol, 1); @@ -328,7 +329,7 @@ contract TaikoL1Test is TaikoL1TestBase { // calculated with these values) //console2.logBytes32(meta.depositsRoot); assertEq( - LibDepositing.hashEthDeposits(meta.depositsProcessed), + keccak256(abi.encode(meta.depositsProcessed)), 0x41c71a2af0eaa668a1241d7e1b09ac30d0e9ea6b6eb4a5a151029e87158d46f3 ); } diff --git a/packages/protocol/test/L1/TaikoL1Oracle.t.sol b/packages/protocol/test/L1/TaikoL1Oracle.t.sol index 44cc9df379..b71538c515 100644 --- a/packages/protocol/test/L1/TaikoL1Oracle.t.sol +++ b/packages/protocol/test/L1/TaikoL1Oracle.t.sol @@ -22,13 +22,12 @@ contract TaikoL1Oracle is TaikoL1 { { config = TaikoL1.getConfig(); - config.blockTxListExpiry = 5 minutes; config.blockMaxVerificationsPerTx = 0; config.blockMaxProposals = 10; config.blockRingBufferSize = 12; - config.proofRegularCooldown = 15 minutes; - config.skipProverAssignmentVerificaiton = true; - config.proofBond = 1e18; // 1 Taiko token + // config.proofRegularCooldown = 15 minutes; + config.skipAssignmentVerificaiton = true; + config.assignmentBond = 1e18; // 1 Taiko token config.proposerRewardPerSecond = 1e15; // 0.001 Taiko token } } @@ -40,13 +39,17 @@ contract Verifier { } contract TaikoL1OracleTest is TaikoL1TestBase { + // TODO + address PLACEHOLDER_ADDR = address(1); + function deployTaikoL1() internal override returns (TaikoL1 taikoL1) { taikoL1 = new TaikoL1Oracle(); } function setUp() public override { TaikoL1TestBase.setUp(); - registerAddress(L1.getVerifierName(100), address(new Verifier())); + // TODO + // registerAddress(L1.getVerifierName(100), address(new Verifier())); registerAddress("oracle_prover", Alice); } @@ -82,15 +85,11 @@ contract TaikoL1OracleTest is TaikoL1TestBase { proveBlock(Bob, Bob, meta, parentHash, bytes32(blockId), signalRoot); proveBlock( - Carol, - LibUtils.ORACLE_PROVER, - meta, - parentHash, - blockHash, - signalRoot + Carol, PLACEHOLDER_ADDR, meta, parentHash, blockHash, signalRoot ); - vm.warp(block.timestamp + conf.proofRegularCooldown + 1); + // TODO + // vm.warp(block.timestamp + conf.proofRegularCooldown + 1); verifyBlock(Carol, 1); @@ -134,17 +133,14 @@ contract TaikoL1OracleTest is TaikoL1TestBase { // blockhash:blockId proveBlock(Bob, Bob, meta, parentHash, blockHash, signalRoot); - vm.expectRevert(TaikoErrors.L1_SAME_PROOF.selector); + // TODO + // vm.expectRevert(TaikoErrors.L1_SAME_PROOF.selector); proveBlock( - Carol, - LibUtils.ORACLE_PROVER, - meta, - parentHash, - blockHash, - signalRoot + Carol, PLACEHOLDER_ADDR, meta, parentHash, blockHash, signalRoot ); - vm.warp(block.timestamp + conf.proofRegularCooldown + 1); + // TODO + // vm.warp(block.timestamp + conf.proofRegularCooldown + 1); uint256 lastVerifiedBlockId = L1.getStateVariables().lastVerifiedBlockId; @@ -215,7 +211,8 @@ contract TaikoL1OracleTest is TaikoL1TestBase { assertEq(lastVerifiedBlockIdNow, lastVerifiedBlockId); - vm.warp(block.timestamp + conf.proofRegularCooldown + 1); + // TODO + // vm.warp(block.timestamp + conf.proofRegularCooldown + 1); verifyBlock(Carol, 1); lastVerifiedBlockIdNow = L1.getStateVariables().lastVerifiedBlockId; @@ -263,7 +260,8 @@ contract TaikoL1OracleTest is TaikoL1TestBase { uint256 lastVerifiedBlockId = L1.getStateVariables().lastVerifiedBlockId; - vm.warp(block.timestamp + conf.proofRegularCooldown + 1); + // TODO + // vm.warp(block.timestamp + conf.proofRegularCooldown + 1); verifyBlock(Carol, 1); uint256 lastVerifiedBlockIdNow = @@ -312,28 +310,24 @@ contract TaikoL1OracleTest is TaikoL1TestBase { bytes32 signalRoot = bytes32(1e9 + uint256(blockId)); proveBlock( - David, - LibUtils.ORACLE_PROVER, - meta, - parentHash, - blockHash, - signalRoot + David, PLACEHOLDER_ADDR, meta, parentHash, blockHash, signalRoot ); uint256 lastVerifiedBlockId = L1.getStateVariables().lastVerifiedBlockId; // Bob cannot overwrite it - vm.expectRevert(TaikoErrors.L1_ALREADY_PROVEN.selector); + vm.expectRevert(TaikoErrors.L1_ALREADY_PROVED.selector); proveBlock(Bob, Bob, meta, parentHash, blockHash, signalRoot); vm.warp(block.timestamp + 1 seconds); - vm.warp(block.timestamp + conf.proofOracleCooldown); + // TODO + // vm.warp(block.timestamp + conf.proofOracleCooldown); TaikoData.Transition memory transition = L1.getTransition(blockId, parentHash); - assertEq(transition.prover, LibUtils.ORACLE_PROVER); + assertEq(transition.prover, PLACEHOLDER_ADDR); verifyBlock(Carol, 1); @@ -387,14 +381,15 @@ contract TaikoL1OracleTest is TaikoL1TestBase { proveBlock(Bob, Bob, meta, parentHash, blockHash, signalRoot); // Carol could not overwrite it - vm.expectRevert(TaikoErrors.L1_ALREADY_PROVEN.selector); + vm.expectRevert(TaikoErrors.L1_ALREADY_PROVED.selector); proveBlock(Carol, Carol, meta, parentHash, blockHash, signalRoot); /// @notice: Based on the current codebase we still need to wait /// even if the system and oracle proofs are disbaled, which /// @notice: in such case best to set 0 mins (cause noone could /// overwrite a valid fk). - vm.warp(block.timestamp + conf.proofRegularCooldown); + // TODO + // vm.warp(block.timestamp + conf.proofRegularCooldown); verifyBlock(Carol, 1); parentHash = blockHash; diff --git a/packages/protocol/test/L1/TaikoL1TestBase.sol b/packages/protocol/test/L1/TaikoL1TestBase.sol index ecd81e5bb6..69aa06c907 100644 --- a/packages/protocol/test/L1/TaikoL1TestBase.sol +++ b/packages/protocol/test/L1/TaikoL1TestBase.sol @@ -9,7 +9,8 @@ import { LibUtils } from "../../contracts/L1/libs/LibUtils.sol"; import { TaikoData } from "../../contracts/L1/TaikoData.sol"; import { TaikoL1 } from "../../contracts/L1/TaikoL1.sol"; import { TaikoToken } from "../../contracts/L1/TaikoToken.sol"; -import { ProofVerifier } from "../../contracts/L1/ProofVerifier.sol"; + +import { PseZkVerifier } from "../../contracts/L1/verifiers/PseZkVerifier.sol"; import { SignalService } from "../../contracts/signal/SignalService.sol"; import { Strings } from "@openzeppelin/contracts/utils/Strings.sol"; import { AddressResolver } from "../../contracts/common/AddressResolver.sol"; @@ -27,14 +28,14 @@ abstract contract TaikoL1TestBase is TestBase { TaikoL1 public L1; TaikoData.Config conf; uint256 internal logCount; - ProofVerifier public pv; + PseZkVerifier public pv; bytes32 public constant GENESIS_BLOCK_HASH = keccak256("GENESIS_BLOCK_HASH"); // 1 TKO --> it is to huge. It should be in 'wei' (?). // Because otherwise first proposal is around: 1TKO * (1_000_000+20_000) // required as a deposit. // uint32 feePerGas = 10; - // uint16 proofWindow = 60 minutes; + // uint16 provingWindow = 60 minutes; uint64 l2GasExcess = 1e18; address public constant L2Treasury = @@ -56,7 +57,7 @@ abstract contract TaikoL1TestBase is TestBase { ss = new SignalService(); ss.init(address(addressManager)); - pv = new ProofVerifier(); + pv = new PseZkVerifier(); pv.init(address(addressManager)); registerAddress("proof_verifier", address(pv)); @@ -66,8 +67,10 @@ abstract contract TaikoL1TestBase is TestBase { registerL2Address("taiko", address(TaikoL2)); registerL2Address("signal_service", address(L2SS)); registerL2Address("taiko_l2", address(TaikoL2)); - registerAddress(L1.getVerifierName(100), address(new MockVerifier())); - registerAddress(L1.getVerifierName(0), address(new MockVerifier())); + // TODO + // registerAddress(L1.getVerifierName(100), address(new + // MockVerifier())); + // registerAddress(L1.getVerifierName(0), address(new MockVerifier())); tko = new TaikoToken(); registerAddress("taiko_token", address(tko)); @@ -112,13 +115,6 @@ abstract contract TaikoL1TestBase is TestBase { }); bytes memory txList = new bytes(txListSize); - TaikoData.BlockMetadataInput memory input = TaikoData.BlockMetadataInput({ - proposer: proposer, - txListHash: keccak256(txList), - txListByteStart: 0, - txListByteEnd: txListSize, - cacheTxListInfo: false - }); TaikoData.StateVariables memory variables = L1.getStateVariables(); @@ -127,25 +123,20 @@ abstract contract TaikoL1TestBase is TestBase { _mixHash = block.prevrandao * variables.numBlocks; } - meta.id = variables.numBlocks; meta.timestamp = uint64(block.timestamp); meta.l1Height = uint64(block.number - 1); meta.l1Hash = blockhash(block.number - 1); meta.mixHash = bytes32(_mixHash); meta.txListHash = keccak256(txList); - meta.txListByteStart = 0; - meta.txListByteEnd = txListSize; meta.gasLimit = gasLimit; - meta.proposer = proposer; vm.prank(proposer, proposer); - meta = - L1.proposeBlock(abi.encode(input), abi.encode(assignment), txList); + meta = L1.proposeBlock(meta.txListHash, abi.encode(assignment), txList); } function proveBlock( address msgSender, - address prover, + address, /*prover*/ TaikoData.BlockMetadata memory meta, bytes32 parentHash, bytes32 blockHash, @@ -154,19 +145,19 @@ abstract contract TaikoL1TestBase is TestBase { internal { TaikoData.BlockEvidence memory evidence = TaikoData.BlockEvidence({ - metaHash: LibUtils.hashMetadata(meta), + metaHash: keccak256(abi.encode(meta)), parentHash: parentHash, blockHash: blockHash, signalRoot: signalRoot, graffiti: 0x0, - prover: prover, - proofs: new bytes(102) + tier: 1, + proof: new bytes(102) }); - bytes32 instance = LibProving.getInstance(evidence); + bytes32 instance; // TODO = LibTransition.getInstance(prover, evidence); uint16 verifierId = 100; - evidence.proofs = bytes.concat( + evidence.proof = bytes.concat( bytes2(verifierId), bytes16(0), bytes16(instance), @@ -176,7 +167,8 @@ abstract contract TaikoL1TestBase is TestBase { ); vm.prank(msgSender, msgSender); - L1.proveBlock(meta.id, abi.encode(evidence)); + //TODO + // L1.proveBlock(meta.id, abi.encode(evidence)); } function verifyBlock(address verifier, uint64 count) internal { diff --git a/packages/protocol/test/misc/GasComparison.t.sol b/packages/protocol/test/misc/GasComparison.t.sol deleted file mode 100644 index f6a8d45598..0000000000 --- a/packages/protocol/test/misc/GasComparison.t.sol +++ /dev/null @@ -1,320 +0,0 @@ -// SPDX-License-Identifier: MIT -pragma solidity ^0.8.20; - -import "forge-std/Test.sol"; -import "forge-std/console2.sol"; -import "../../contracts/L1/TaikoData.sol"; -import "../../contracts/libs/LibAddress.sol"; -import { Strings } from "@openzeppelin/contracts/utils/Strings.sol"; - -library LibAddress2 { - function sendEther(address to, uint256 amount) internal { - (bool success,) = payable(to).call{ value: amount }(""); - require(success, "ETH transfer failed"); - } -} - -struct MyStruct { - uint256 id; - uint256 l1Height; - bytes32 l1Hash; - uint64 gasLimit; - uint64 timestamp; -} - -contract FooBar { - function loadBlockMetadata_1(bytes memory data) public pure { - abi.decode(data, (MyStruct)); - } - - function loadBlockMetadata_2(bytes calldata data) public pure { - abi.decode(data, (MyStruct)); - } - - function loadBlockMetadata_3(MyStruct memory data) public pure { } - - function loadBlockMetadata_4(MyStruct calldata data) public pure { } - - function loadBlockMetadata_5(bytes calldata data) public pure { - MyStruct memory meta; - meta.id = uint256(bytes32(data[0:32])); - meta.l1Height = uint256(bytes32(data[32:64])); - meta.l1Hash = bytes32(data[64:96]); - meta.gasLimit = uint64(bytes8(data[96:104])); - meta.timestamp = uint64(bytes8(data[104:112])); - } - - function loadBlockMetadata_6() public pure { - MyStruct memory meta; - uint256 a; - assembly { - a := calldatasize() - } - require(a == 84 + 32, "aaa"); - - assembly { - a := calldataload(4) - } - meta.id = a; - assembly { - a := calldataload(36) - } - meta.l1Height = a; - assembly { - a := calldataload(68) - } - meta.l1Hash = bytes32(a); - assembly { - a := calldataload(84) - } - meta.gasLimit = uint64(uint256((a << 128) >> (128 + 64))); - meta.timestamp = uint64(uint256((a << (128 + 64)) >> (128 + 64))); - } - - function return_1() - public - view - returns (TaikoData.BlockMetadata memory meta) - { - meta = TaikoData.BlockMetadata({ - id: 1, - l1Height: 1, - l1Hash: bytes32(uint256(1)), - proposer: address(this), - txListHash: bytes32(uint256(1)), - txListByteStart: 0, - txListByteEnd: 1000, - gasLimit: 1, - mixHash: bytes32(uint256(1)), - timestamp: 1, - depositsProcessed: new TaikoData.EthDeposit[](0) - }); - } - - function return_2() public view { - TaikoData.BlockMetadata({ - id: 1, - l1Height: 1, - l1Hash: bytes32(uint256(1)), - proposer: address(this), - txListHash: bytes32(uint256(1)), - txListByteStart: 0, - txListByteEnd: 1000, - gasLimit: 1, - mixHash: bytes32(uint256(1)), - timestamp: 1, - depositsProcessed: new TaikoData.EthDeposit[](0) - }); - } - - //------ - function hashString_1(string memory str) - public - pure - returns (bytes32 hash) - { - assembly { - hash := keccak256(add(str, 32), mload(str)) - } - } - - function hashString_2(string memory str) - public - pure - returns (bytes32 hash) - { - hash = keccak256(bytes(str)); - } - - //------ - - function hashTwo_1( - address a, - bytes32 b - ) - public - pure - returns (bytes32 hash) - { - assembly { - // Load the free memory pointer and allocate memory for the - // concatenated arguments - let input := mload(64) - - // Store the app address and signal bytes32 value in the allocated - // memory - mstore(input, a) - mstore(add(input, 32), b) - - hash := keccak256(add(input, 12), 52) - - // Free the memory allocated for the input - mstore(0x40, add(input, 64)) - } - } - - function hashTwo_2( - address a, - bytes32 b - ) - public - pure - returns (bytes32 hash) - { - hash = keccak256(bytes.concat(bytes20(uint160(a)), b)); - // the following will work too. - // hash = keccak256(abi.encodePacked(a, b)); - } - - //------ - - function increment_1(uint256 count) public pure { - uint256 a; - for (uint256 i = 0; i < count; i++) { - a += i; - } - } - - function increment_2(uint256 count) public pure { - uint256 a; - for (uint256 i = 0; i < count; ++i) { - a += i; - } - } - - function increment_3(uint256 count) public pure { - uint256 a; - for (uint256 i = 0; i < count;) { - a += i; - unchecked { - i++; - } - } - } - - function increment_4(uint256 count) public pure { - uint256 a; - for (uint256 i = 0; i < count;) { - a += i; - unchecked { - ++i; - } - } - } - - // ------ - function hashKey_1( - uint256 chainId, - string memory name - ) - public - pure - returns (bytes32) - { - return keccak256(bytes(string.concat(Strings.toString(chainId), name))); - } - - function hashKey_2( - uint256 chainId, - string memory name - ) - public - pure - returns (bytes32) - { - return keccak256(abi.encodePacked(chainId, name)); - } - - // ------ - function send0Ether_CheckOutside(address to, uint256 amount) public { - if (amount == 0 || to == address(0)) return; - LibAddress2.sendEther(to, amount); - } - - function send0Ether_CheckInside(address to, uint256 amount) public { - LibAddress.sendEther(to, amount); - } -} - -contract GasComparisonTest is Test { - FooBar foobar; - - function setUp() public { - foobar = new FooBar(); - } - - function testCompare_hashString(uint256 count) public { - vm.assume(count > 10 && count < 1000); - - string memory str = string(new bytes(count)); - assertEq( - foobar.hashString_1(str), - foobar.hashString_2(str) //best - ); - } - - function testCompare_increment(uint256 count) public view { - vm.assume(count > 10 && count < 1000); - foobar.increment_1(count); - foobar.increment_2(count); - foobar.increment_3(count); // best - foobar.increment_4(count); - } - - function testCompare_hashTwo() public { - address a = address(this); - bytes32 b = blockhash(block.number - 1); - assertEq( - foobar.hashTwo_1(a, b), //best - foobar.hashTwo_2(a, b) - ); - } - - function testCompare_hashKey() public view { - foobar.hashKey_1(123, "abc"); - foobar.hashKey_2(123, "abc"); - } - - function testCompare_return() public view { - foobar.return_1(); - foobar.return_2(); // cheaper - } - - function testCompare_loadBlockMetadata() public { - MyStruct memory meta = MyStruct({ - id: 123, - l1Height: 456, - l1Hash: blockhash(block.number - 1), - gasLimit: 333, - timestamp: 999 - }); - - bytes memory b; - - b = abi.encode(meta); - foobar.loadBlockMetadata_1(b); - foobar.loadBlockMetadata_2(b); - foobar.loadBlockMetadata_3(meta); - foobar.loadBlockMetadata_4(meta); // best - - b = bytes.concat( - bytes32(meta.id), - bytes32(meta.l1Height), - meta.l1Hash, - bytes8(meta.gasLimit), - bytes8(meta.timestamp) - ); - - foobar.loadBlockMetadata_5(b); - - bytes memory c = bytes.concat(FooBar.loadBlockMetadata_6.selector, b); - - address(foobar).call(c); - } - - function testCompare_send0Ether() public { - address to = 0x50081b12838240B1bA02b3177153Bca678a86078; - foobar.send0Ether_CheckInside(to, 0); - foobar.send0Ether_CheckOutside(to, 0); - } -} From fb5ca454ed8bc81f17d7f51b92d673a54610f14a Mon Sep 17 00:00:00 2001 From: Daniel Wang Date: Mon, 18 Sep 2023 21:13:54 +0800 Subject: [PATCH 02/87] Update LibProposing.sol --- packages/protocol/contracts/L1/libs/LibProposing.sol | 7 ++----- 1 file changed, 2 insertions(+), 5 deletions(-) diff --git a/packages/protocol/contracts/L1/libs/LibProposing.sol b/packages/protocol/contracts/L1/libs/LibProposing.sol index 203112507c..be65dd7b57 100644 --- a/packages/protocol/contracts/L1/libs/LibProposing.sol +++ b/packages/protocol/contracts/L1/libs/LibProposing.sol @@ -167,11 +167,8 @@ library LibProposing { uint256 reward; if (config.proposerRewardPerSecond > 0 && config.proposerRewardMax > 0) { - // Unchecked is safe: - // - block.timestamp is always greater than block.proposedAt - // (proposed in the past) - // - 1x state.taikoTokenBalances[addr] uint256 could theoretically - // store the whole token supply + // Unchecked is safe as block.timestamp is always greater than + // block.proposedAt (proposed in the past) unchecked { uint256 blockTime = block.timestamp - state.blocks[(b.numBlocks - 1) % config.blockRingBufferSize] From 022745f36713751c5ac18d651c5412cddaa88305 Mon Sep 17 00:00:00 2001 From: Daniel Wang Date: Mon, 18 Sep 2023 21:22:11 +0800 Subject: [PATCH 03/87] more --- packages/protocol/contracts/L1/TaikoData.sol | 2 ++ .../contracts/L1/libs/LibProposing.sol | 24 ++++++++++++++++++- 2 files changed, 25 insertions(+), 1 deletion(-) diff --git a/packages/protocol/contracts/L1/TaikoData.sol b/packages/protocol/contracts/L1/TaikoData.sol index bc5e55ac81..851d691cd5 100644 --- a/packages/protocol/contracts/L1/TaikoData.sol +++ b/packages/protocol/contracts/L1/TaikoData.sol @@ -91,6 +91,8 @@ library TaikoData { } /// @dev Struct containing data only required for proving a block + /// Warning: changing this struct requires changing {LibUtils.hashMetadata} + /// accordingly. struct BlockMetadata { bytes32 l1Hash; bytes32 mixHash; diff --git a/packages/protocol/contracts/L1/libs/LibProposing.sol b/packages/protocol/contracts/L1/libs/LibProposing.sol index be65dd7b57..df788ef9f1 100644 --- a/packages/protocol/contracts/L1/libs/LibProposing.sol +++ b/packages/protocol/contracts/L1/libs/LibProposing.sol @@ -222,7 +222,7 @@ library LibProposing { // Please note that all fields must be re-initialized since we are // utilizing an existing ring buffer slot, not creating a new // storage slot. - blk.metaHash = keccak256(abi.encode(meta)); + blk.metaHash = _hashMetadata(meta); blk.assignedProver = assignment.prover; // Safeguard the assignment bond to ensure its preservation, @@ -269,4 +269,26 @@ library LibProposing { abi.encodePacked(txListHash, msg.value, assignment.expiry) ); } + + /// @dev Hashing the block metadata. + function _hashMetadata(TaikoData.BlockMetadata memory meta) + private + pure + returns (bytes32 hash) + { + uint256[5] memory inputs; + + inputs[0] = uint256(meta.l1Hash); + inputs[1] = uint256(meta.mixHash); + inputs[2] = uint256(meta.txListHash); + + inputs[3] = (uint256(meta.timestamp) << 192) + | (uint256(meta.l1Height) << 128) | (uint256(meta.gasLimit) << 96); + + inputs[4] = uint256(keccak256(abi.encode(meta.depositsProcessed))); + + assembly { + hash := keccak256(inputs, mul(5, 32)) + } + } } From 5fc177d92ae4dd6b327d66309c1f7a6221948180 Mon Sep 17 00:00:00 2001 From: Daniel Wang Date: Mon, 18 Sep 2023 21:22:25 +0800 Subject: [PATCH 04/87] Update LibProposing.sol --- packages/protocol/contracts/L1/libs/LibProposing.sol | 3 --- 1 file changed, 3 deletions(-) diff --git a/packages/protocol/contracts/L1/libs/LibProposing.sol b/packages/protocol/contracts/L1/libs/LibProposing.sol index df788ef9f1..9626387b19 100644 --- a/packages/protocol/contracts/L1/libs/LibProposing.sol +++ b/packages/protocol/contracts/L1/libs/LibProposing.sol @@ -277,14 +277,11 @@ library LibProposing { returns (bytes32 hash) { uint256[5] memory inputs; - inputs[0] = uint256(meta.l1Hash); inputs[1] = uint256(meta.mixHash); inputs[2] = uint256(meta.txListHash); - inputs[3] = (uint256(meta.timestamp) << 192) | (uint256(meta.l1Height) << 128) | (uint256(meta.gasLimit) << 96); - inputs[4] = uint256(keccak256(abi.encode(meta.depositsProcessed))); assembly { From 42e57bbaf22090e05c0403d11ef97f63db0175f8 Mon Sep 17 00:00:00 2001 From: Daniel Wang Date: Mon, 18 Sep 2023 21:24:26 +0800 Subject: [PATCH 05/87] Update TaikoData.sol --- packages/protocol/contracts/L1/TaikoData.sol | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/packages/protocol/contracts/L1/TaikoData.sol b/packages/protocol/contracts/L1/TaikoData.sol index 851d691cd5..64a2e8da49 100644 --- a/packages/protocol/contracts/L1/TaikoData.sol +++ b/packages/protocol/contracts/L1/TaikoData.sol @@ -91,8 +91,8 @@ library TaikoData { } /// @dev Struct containing data only required for proving a block - /// Warning: changing this struct requires changing {LibUtils.hashMetadata} - /// accordingly. + /// Warning: changing this struct requires changing + /// {LibProposing.hashMetadata} accordingly. struct BlockMetadata { bytes32 l1Hash; bytes32 mixHash; From 1f55b21047de067a7430d2187fad1adbaed4f421 Mon Sep 17 00:00:00 2001 From: Daniel Wang Date: Mon, 18 Sep 2023 21:27:02 +0800 Subject: [PATCH 06/87] rename --- packages/protocol/contracts/L1/IProver.sol | 2 +- packages/protocol/contracts/L1/libs/LibProving.sol | 6 +++--- .../protocol/contracts/L1/verifiers/GuardianVerifier.sol | 6 +++--- .../L1/verifiers/{IEvidenceVerifier.sol => IVerifier.sol} | 4 +++- .../protocol/contracts/L1/verifiers/PseZkVerifier.sol | 8 ++++---- packages/protocol/contracts/L1/verifiers/SGXVerifier.sol | 6 +++--- 6 files changed, 17 insertions(+), 15 deletions(-) rename packages/protocol/contracts/L1/verifiers/{IEvidenceVerifier.sol => IVerifier.sol} (79%) diff --git a/packages/protocol/contracts/L1/IProver.sol b/packages/protocol/contracts/L1/IProver.sol index d7fc31f7cd..f666afff33 100644 --- a/packages/protocol/contracts/L1/IProver.sol +++ b/packages/protocol/contracts/L1/IProver.sol @@ -9,7 +9,7 @@ pragma solidity ^0.8.20; import { TaikoData } from "./TaikoData.sol"; /// @title IProver Interface -/// @notice Defines the function that handle prover assignment. +/// @notice Defines the function that handles prover assignment. interface IProver { /// @notice Assigns a prover to a specific block or reverts if this prover /// is not available. diff --git a/packages/protocol/contracts/L1/libs/LibProving.sol b/packages/protocol/contracts/L1/libs/LibProving.sol index 8b0d56a842..7630b1fef7 100644 --- a/packages/protocol/contracts/L1/libs/LibProving.sol +++ b/packages/protocol/contracts/L1/libs/LibProving.sol @@ -7,7 +7,7 @@ pragma solidity ^0.8.20; import { AddressResolver } from "../../common/AddressResolver.sol"; -import { IEvidenceVerifier } from "../verifiers/IEvidenceVerifier.sol"; +import { IVerifier } from "../verifiers/IVerifier.sol"; import { LibMath } from "../../libs/LibMath.sol"; import { LibTiers } from "./LibTiers.sol"; import { LibUtils } from "./LibUtils.sol"; @@ -171,7 +171,7 @@ library LibProving { // It's crucial to emphasize that the proof can be assessed in two // potential modes: "proving mode" and "contesting mode." However, the // precise verification logic is defined within each - // tier'IEvidenceVerifier contract implementation. We simply specify to + // tier'IVerifier contract implementation. We simply specify to // the verifier contract which mode it should utilize - if the new tier // is higher than the previous tier, we employ the proving mode; // otherwise, we employ the contesting mode (the new tier cannot be @@ -186,7 +186,7 @@ library LibProving { // proof checks for the tier. In practice, this only applies to // optimistic proofs. if (verifier != address(0)) { - IEvidenceVerifier(verifier).verifyProof({ + IVerifier(verifier).verifyProof({ blockId: blk.blockId, prover: msg.sender, isContesting: evidence.tier == tran.tier diff --git a/packages/protocol/contracts/L1/verifiers/GuardianVerifier.sol b/packages/protocol/contracts/L1/verifiers/GuardianVerifier.sol index 512613c9c2..2c94a1a52d 100644 --- a/packages/protocol/contracts/L1/verifiers/GuardianVerifier.sol +++ b/packages/protocol/contracts/L1/verifiers/GuardianVerifier.sol @@ -7,12 +7,12 @@ pragma solidity ^0.8.20; import { EssentialContract } from "../../common/EssentialContract.sol"; -import { IEvidenceVerifier } from "./IEvidenceVerifier.sol"; +import { IVerifier } from "./IVerifier.sol"; import { Proxied } from "../../common/Proxied.sol"; import { TaikoData } from "../TaikoData.sol"; /// @title GuardianVerifier -contract GuardianVerifier is EssentialContract, IEvidenceVerifier { +contract GuardianVerifier is EssentialContract, IVerifier { uint256[50] private __gap; error PERMISSION_DENIED(); @@ -24,7 +24,7 @@ contract GuardianVerifier is EssentialContract, IEvidenceVerifier { EssentialContract._init(_addressManager); } - /// @inheritdoc IEvidenceVerifier + /// @inheritdoc IVerifier function verifyProof( // blockId is unused now, but can be used later when supporting // different types of proofs. diff --git a/packages/protocol/contracts/L1/verifiers/IEvidenceVerifier.sol b/packages/protocol/contracts/L1/verifiers/IVerifier.sol similarity index 79% rename from packages/protocol/contracts/L1/verifiers/IEvidenceVerifier.sol rename to packages/protocol/contracts/L1/verifiers/IVerifier.sol index e920c0d42e..6826341538 100644 --- a/packages/protocol/contracts/L1/verifiers/IEvidenceVerifier.sol +++ b/packages/protocol/contracts/L1/verifiers/IVerifier.sol @@ -8,7 +8,9 @@ pragma solidity ^0.8.20; import { TaikoData } from "../TaikoData.sol"; -interface IEvidenceVerifier { +/// @title IVerifier Interface +/// @notice Defines the function that handles proof verification. +interface IVerifier { function verifyProof( uint64 blockId, address prover, diff --git a/packages/protocol/contracts/L1/verifiers/PseZkVerifier.sol b/packages/protocol/contracts/L1/verifiers/PseZkVerifier.sol index 1bc2a2ed73..682a216966 100644 --- a/packages/protocol/contracts/L1/verifiers/PseZkVerifier.sol +++ b/packages/protocol/contracts/L1/verifiers/PseZkVerifier.sol @@ -7,14 +7,14 @@ pragma solidity ^0.8.20; import { EssentialContract } from "../../common/EssentialContract.sol"; -import { IEvidenceVerifier } from "./IEvidenceVerifier.sol"; +import { IVerifier } from "./IVerifier.sol"; import { LibBytesUtils } from "../../thirdparty/LibBytesUtils.sol"; import { Proxied } from "../../common/Proxied.sol"; import { TaikoData } from "../TaikoData.sol"; /// @title PseZkVerifier -/// @notice See the documentation in {IEvidenceVerifier}. -contract PseZkVerifier is EssentialContract, IEvidenceVerifier { +/// @notice See the documentation in {IVerifier}. +contract PseZkVerifier is EssentialContract, IVerifier { uint256[50] private __gap; error L1_INVALID_PROOF(); @@ -25,7 +25,7 @@ contract PseZkVerifier is EssentialContract, IEvidenceVerifier { EssentialContract._init(_addressManager); } - /// @inheritdoc IEvidenceVerifier + /// @inheritdoc IVerifier function verifyProof( // blockId is unused now, but can be used later when supporting // different types of proofs. diff --git a/packages/protocol/contracts/L1/verifiers/SGXVerifier.sol b/packages/protocol/contracts/L1/verifiers/SGXVerifier.sol index 2137939bd0..26e27b5c30 100644 --- a/packages/protocol/contracts/L1/verifiers/SGXVerifier.sol +++ b/packages/protocol/contracts/L1/verifiers/SGXVerifier.sol @@ -7,12 +7,12 @@ pragma solidity ^0.8.20; import { EssentialContract } from "../../common/EssentialContract.sol"; -import { IEvidenceVerifier } from "./IEvidenceVerifier.sol"; +import { IVerifier } from "./IVerifier.sol"; import { Proxied } from "../../common/Proxied.sol"; import { TaikoData } from "../TaikoData.sol"; /// @title GuardianVerifier -contract SGXVerifier is EssentialContract, IEvidenceVerifier { +contract SGXVerifier is EssentialContract, IVerifier { uint256[50] private __gap; /// @notice Initializes the contract with the provided address manager. @@ -21,7 +21,7 @@ contract SGXVerifier is EssentialContract, IEvidenceVerifier { EssentialContract._init(_addressManager); } - /// @inheritdoc IEvidenceVerifier + /// @inheritdoc IVerifier function verifyProof( // blockId is unused now, but can be used later when supporting // different types of proofs. From 72b2de6136ae8b8ed466408f787d9761afc45599 Mon Sep 17 00:00:00 2001 From: adaki2004 Date: Tue, 19 Sep 2023 12:59:18 +0200 Subject: [PATCH 07/87] Fix tran.timestamp for first proveBlock() txn --- packages/protocol/contracts/L1/libs/LibProving.sol | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/protocol/contracts/L1/libs/LibProving.sol b/packages/protocol/contracts/L1/libs/LibProving.sol index 7630b1fef7..b79868eed8 100644 --- a/packages/protocol/contracts/L1/libs/LibProving.sol +++ b/packages/protocol/contracts/L1/libs/LibProving.sol @@ -114,7 +114,7 @@ library LibProving { tran.proofBond = 0; tran.contester = address(0); tran.contestBond = 1; // see below (the value does't matter) - tran.timestamp = uint64(block.timestamp); + tran.timestamp = blk.proposedAt; tran.tier = 0; if (tid == 1) { From 917d26dfb7dcf39ae6ae2e1a7c23c752e2742f43 Mon Sep 17 00:00:00 2001 From: Daniel Wang <99078276+dantaik@users.noreply.github.com> Date: Tue, 19 Sep 2023 22:55:29 +0800 Subject: [PATCH 08/87] refactor(protocol): further improve EIP1559 on L2 (#14724) Co-authored-by: Daniel Wang --- packages/protocol/contracts/L2/TaikoL2.sol | 124 ++++++++----------- packages/protocol/test/L2/TaikoL2.t.sol | 18 +-- packages/protocol/test/L2/TaikoL2_1559.t.sol | 35 +++--- 3 files changed, 78 insertions(+), 99 deletions(-) diff --git a/packages/protocol/contracts/L2/TaikoL2.sol b/packages/protocol/contracts/L2/TaikoL2.sol index e20147b64f..63b1d15b5b 100644 --- a/packages/protocol/contracts/L2/TaikoL2.sol +++ b/packages/protocol/contracts/L2/TaikoL2.sol @@ -27,17 +27,9 @@ contract TaikoL2 is EssentialContract, TaikoL2Signer, ICrossChainSync { bytes32 signalRoot; } - struct EIP1559Params { - uint64 basefee; - uint32 gasIssuedPerSecond; - uint64 gasExcessMax; - uint64 gasTarget; - uint64 ratio2x1x; - } - struct EIP1559Config { + uint128 xscale; uint128 yscale; - uint64 xscale; uint32 gasIssuedPerSecond; } @@ -48,15 +40,11 @@ contract TaikoL2 is EssentialContract, TaikoL2Signer, ICrossChainSync { // A hash to check the integrity of public inputs. bytes32 public publicInputHash; // slot 3 - - EIP1559Config public eip1559Config; // slot 4 - - uint64 public parentTimestamp; // slot 5 + uint64 public parentTimestamp; // slot 4 uint64 public latestSyncedL1Height; uint64 public gasExcess; - uint64 private __reserved1; - uint256[145] private __gap; + uint256[146] private __gap; // Captures all block variables mentioned in // https://docs.soliditylang.org/en/v0.8.20/units-and-global-variables.html @@ -71,8 +59,6 @@ contract TaikoL2 is EssentialContract, TaikoL2Signer, ICrossChainSync { uint64 chainid ); - event EIP1559ConfigUpdated(EIP1559Config config, uint64 gasExcess); - error L2_BASEFEE_MISMATCH(); error L2_INVALID_1559_PARAMS(); error L2_INVALID_CHAIN_ID(); @@ -82,20 +68,14 @@ contract TaikoL2 is EssentialContract, TaikoL2Signer, ICrossChainSync { /// @notice Initializes the TaikoL2 contract. /// @param _addressManager Address of the {AddressManager} contract. - /// @param _param1559 EIP-1559 parameters to set up the gas pricing model. - function init( - address _addressManager, - EIP1559Params calldata _param1559 - ) - external - initializer - { + function init(address _addressManager) external initializer { EssentialContract._init(_addressManager); + if (block.number > 1) revert L2_TOO_LATE(); + if (block.chainid <= 1 || block.chainid >= type(uint64).max) { revert L2_INVALID_CHAIN_ID(); } - if (block.number > 1) revert L2_TOO_LATE(); parentTimestamp = uint64(block.timestamp); (publicInputHash,) = _calcPublicInputHash(block.number); @@ -104,8 +84,6 @@ contract TaikoL2 is EssentialContract, TaikoL2Signer, ICrossChainSync { uint256 parentHeight = block.number - 1; _l2Hashes[parentHeight] = blockhash(parentHeight); } - - updateEIP1559Config(_param1559); } /// @notice Anchors the latest L1 block details to L2 for cross-layer @@ -154,6 +132,11 @@ contract TaikoL2 is EssentialContract, TaikoL2Signer, ICrossChainSync { }); } + // To make sure when EIP-1559 is enabled, the basefee is non-zero + // (Geth never uses 0 values for basefee) + if (basefee == 0) { + basefee = 1; + } // On L2, basefee is not burnt, but sent to a treasury instead. // The circuits will need to verify the basefee recipient is the // designated address. @@ -179,41 +162,6 @@ contract TaikoL2 is EssentialContract, TaikoL2Signer, ICrossChainSync { }); } - /// @notice Updates EIP-1559 configurations. - /// @param _param1559 EIP-1559 parameters to set up the gas pricing model. - function updateEIP1559Config(EIP1559Params calldata _param1559) - public - onlyOwner - { - if (_param1559.gasIssuedPerSecond == 0) { - delete eip1559Config; - delete gasExcess; - } else { - if ( - _param1559.basefee == 0 || _param1559.gasExcessMax == 0 - || _param1559.gasTarget == 0 || _param1559.ratio2x1x == 0 - ) revert L2_INVALID_1559_PARAMS(); - - (uint128 xscale, uint128 yscale) = Lib1559Math.calculateScales({ - xExcessMax: _param1559.gasExcessMax, - price: _param1559.basefee, - target: _param1559.gasTarget, - ratio2x1x: _param1559.ratio2x1x - }); - - if (xscale == 0 || xscale >= type(uint64).max || yscale == 0) { - revert L2_INVALID_1559_PARAMS(); - } - eip1559Config.yscale = yscale; - eip1559Config.xscale = uint64(xscale); - eip1559Config.gasIssuedPerSecond = _param1559.gasIssuedPerSecond; - - gasExcess = _param1559.gasExcessMax / 2; - } - - emit EIP1559ConfigUpdated(eip1559Config, gasExcess); - } - /// @notice Gets the basefee and gas excess using EIP-1559 configuration for /// the given parameters. /// @param timeSinceParent Time elapsed since the parent block's timestamp. @@ -270,16 +218,48 @@ contract TaikoL2 is EssentialContract, TaikoL2Signer, ICrossChainSync { } } - /// @notice Retrieves the current EIP-1559 configuration details. - /// @return The current EIP-1559 configuration details, including the - /// yscale, xscale, and gasIssuedPerSecond parameters. + /// @notice Cauclates the EIP-1559 configurations. + function calcEIP1559Config( + uint64 basefee, + uint32 gasIssuedPerSecond, + uint64 gasExcessMax, + uint64 gasTarget, + uint64 ratio2x1x + ) + public + pure + returns (EIP1559Config memory config) + { + if ( + gasIssuedPerSecond == 0 || basefee == 0 || gasExcessMax == 0 + || gasTarget == 0 || ratio2x1x == 0 + ) revert L2_INVALID_1559_PARAMS(); + + (config.xscale, config.yscale) = Lib1559Math.calculateScales({ + xExcessMax: gasExcessMax, + price: basefee, + target: gasTarget, + ratio2x1x: ratio2x1x + }); + + if (config.xscale == 0 || config.yscale == 0) { + revert L2_INVALID_1559_PARAMS(); + } + config.gasIssuedPerSecond = gasIssuedPerSecond; + } + + /// @notice Returns the current EIP-1559 configuration details. + /// @return config The current EIP-1559 configuration details. function getEIP1559Config() public - view + pure virtual - returns (EIP1559Config memory) + returns (EIP1559Config memory config) { - return eip1559Config; + // The following values are caculated in TestTaikoL2_1559.sol. + config.xscale = 1_488_514_844; + config.yscale = 358_298_803_609_133_338_138_868_404_779; + config.gasIssuedPerSecond = 12_500_000; } function _calcPublicInputHash(uint256 blockId) @@ -337,12 +317,6 @@ contract TaikoL2 is EssentialContract, TaikoL2Signer, ICrossChainSync { xExcess: _gasExcess, xPurchase: 0 }); - - if (_basefee == 0) { - // To make sure when EIP-1559 is enabled, the basefee is non-zero - // (Geth never uses 0 values for basefee) - _basefee = 1; - } } } diff --git a/packages/protocol/test/L2/TaikoL2.t.sol b/packages/protocol/test/L2/TaikoL2.t.sol index 2be6ed5664..7b3f6f683a 100644 --- a/packages/protocol/test/L2/TaikoL2.t.sol +++ b/packages/protocol/test/L2/TaikoL2.t.sol @@ -18,18 +18,18 @@ contract TestTaikoL2 is TestBase { uint256 private logIndex; function setUp() public { - uint16 rand = 2; - TaikoL2.EIP1559Params memory param1559 = TaikoL2.EIP1559Params({ - basefee: (uint256(BLOCK_GAS_LIMIT * 10) * rand).toUint64(), - gasIssuedPerSecond: 1_000_000, - gasExcessMax: (uint256(15_000_000) * 256 * rand).toUint64(), - gasTarget: (uint256(6_000_000) * rand).toUint64(), - ratio2x1x: 11_177 - }); + // uint16 rand = 2; + // TaikoL2.EIP1559Params memory param1559 = TaikoL2.EIP1559Params({ + // basefee: (uint256(BLOCK_GAS_LIMIT * 10) * rand).toUint64(), + // gasIssuedPerSecond: 1_000_000, + // gasExcessMax: (uint256(15_000_000) * 256 * rand).toUint64(), + // gasTarget: (uint256(6_000_000) * rand).toUint64(), + // ratio2x1x: 11_177 + // }); L2 = new TaikoL2(); address dummyAddressManager = getRandomAddress(); - L2.init(dummyAddressManager, param1559); + L2.init(dummyAddressManager); vm.roll(block.number + 1); vm.warp(block.timestamp + 30); diff --git a/packages/protocol/test/L2/TaikoL2_1559.t.sol b/packages/protocol/test/L2/TaikoL2_1559.t.sol index fe12a5af86..f1ed8778c1 100644 --- a/packages/protocol/test/L2/TaikoL2_1559.t.sol +++ b/packages/protocol/test/L2/TaikoL2_1559.t.sol @@ -29,20 +29,14 @@ contract TestTaikoL2_1559 is TestBase { uint64 gasExcessMax = gasIssuedPerSecond * maxSeconds; uint64 initialBasefee = ethereumBasefeeNow / costFactor; + uint64 ratio2x1x = 11_250; // ~12.5% increase + uint64 gasTarget = gasIssuedPerSecond * ethereumBlockTime; - TaikoL2.EIP1559Params memory param1559 = TaikoL2.EIP1559Params({ - basefee: initialBasefee, - gasIssuedPerSecond: gasIssuedPerSecond, - gasExcessMax: gasExcessMax, - gasTarget: gasIssuedPerSecond * ethereumBlockTime, - ratio2x1x: 11_250 // ~12.5% increase - }); - - console2.log("basefee :", param1559.basefee); - console2.log("gasIssuedPerSecond:", param1559.gasIssuedPerSecond); - console2.log("gasExcessMax :", param1559.gasExcessMax); - console2.log("gasTarget :", param1559.gasTarget); - console2.log("ratio2x1x :", param1559.ratio2x1x); + console2.log("basefee :", initialBasefee); + console2.log("gasIssuedPerSecond:", gasIssuedPerSecond); + console2.log("gasExcessMax :", gasExcessMax); + console2.log("gasTarget :", gasTarget); + console2.log("ratio2x1x :", ratio2x1x); // basefee : 1120000000 // gasIssuedPerSecond: 12500000 @@ -51,7 +45,18 @@ contract TestTaikoL2_1559 is TestBase { // ratio2x1x : 11250 TaikoL2 L2 = new TaikoL2(); - address dummyAddressManager = getRandomAddress(); - L2.init(dummyAddressManager, param1559); + L2.init(getRandomAddress()); + + TaikoL2.EIP1559Config memory config = L2.calcEIP1559Config( + initialBasefee, + gasIssuedPerSecond, + gasExcessMax, + gasTarget, + ratio2x1x + ); + + console2.log("config.xscale : ", config.xscale); + console2.log("config.yscale : ", config.yscale); + console2.log("config.gasIssuedPerSecond: ", config.gasIssuedPerSecond); } } From cfe596685c033eee9aaf4d2b73750384e7fedb43 Mon Sep 17 00:00:00 2001 From: D <51912515+adaki2004@users.noreply.github.com> Date: Tue, 19 Sep 2023 17:21:33 +0200 Subject: [PATCH 09/87] feat(protocol): Contestable zkRollup v2 (observations) [DRAFT] (#14721) Co-authored-by: Daniel Wang <99078276+dantaik@users.noreply.github.com> --- .../protocol/contracts/L1/libs/LibProving.sol | 19 +++++++++++-------- 1 file changed, 11 insertions(+), 8 deletions(-) diff --git a/packages/protocol/contracts/L1/libs/LibProving.sol b/packages/protocol/contracts/L1/libs/LibProving.sol index b79868eed8..d8fbbce27a 100644 --- a/packages/protocol/contracts/L1/libs/LibProving.sol +++ b/packages/protocol/contracts/L1/libs/LibProving.sol @@ -300,22 +300,25 @@ library LibProving { } if (tid == 1 && tran.prover == blk.assignedProver) { - // For the first transition, if the previous prover is still the - // assigned prover, we exclusively grant permission to the - // assigned approver to re-prove the block, unless the proof - // window has elapsed. + // For the first transition, (1.) if the previous prover is + // still the assigned prover, we exclusively grant permission to + // the assigned approver to re-prove the block, (2.) unless the + // proof window has elapsed. if ( block.timestamp <= tran.timestamp + tier.provingWindow && msg.sender != blk.assignedProver ) revert L1_NOT_ASSIGNED_PROVER(); - } else { + + if ( + block.timestamp > tran.timestamp + tier.provingWindow + && msg.sender == blk.assignedProver + ) revert L1_ASSIGNED_PROVER_NOT_ALLOWED(); + } else if (msg.sender == blk.assignedProver) { // However, if the previous prover of the first transition is // not the block's assigned prover, or for any other // transitions, the assigned prover is not permitted to prove // such transitions. - if (msg.sender == blk.assignedProver) { - revert L1_ASSIGNED_PROVER_NOT_ALLOWED(); - } + revert L1_ASSIGNED_PROVER_NOT_ALLOWED(); } // Burn the proof bond from the prover. From ea51ba314d1b6e2d2b779477b2a45ed2a8982cbf Mon Sep 17 00:00:00 2001 From: Daniel Wang <99078276+dantaik@users.noreply.github.com> Date: Tue, 19 Sep 2023 23:43:24 +0800 Subject: [PATCH 10/87] Emit an event (#14731) Co-authored-by: adaki2004 --- packages/protocol/contracts/L1/libs/LibProving.sol | 14 ++++++++++++-- 1 file changed, 12 insertions(+), 2 deletions(-) diff --git a/packages/protocol/contracts/L1/libs/LibProving.sol b/packages/protocol/contracts/L1/libs/LibProving.sol index d8fbbce27a..276c7322af 100644 --- a/packages/protocol/contracts/L1/libs/LibProving.sol +++ b/packages/protocol/contracts/L1/libs/LibProving.sol @@ -229,6 +229,16 @@ library LibProving { tran.signalRoot = evidence.signalRoot; tran.prover = msg.sender; tran.timestamp = uint64(block.timestamp); + + emit TransitionProved({ + blockId: blk.blockId, + parentHash: evidence.parentHash, + blockHash: evidence.blockHash, + signalRoot: evidence.signalRoot, + prover: msg.sender, + proofBond: 0, + tier: evidence.tier + }); } else { // The new tier is the same as the previous tier, but they are // not the top tier, we are in the contesting mode. @@ -300,9 +310,9 @@ library LibProving { } if (tid == 1 && tran.prover == blk.assignedProver) { - // For the first transition, (1.) if the previous prover is + // For the first transition, (1) if the previous prover is // still the assigned prover, we exclusively grant permission to - // the assigned approver to re-prove the block, (2.) unless the + // the assigned approver to re-prove the block, (2) unless the // proof window has elapsed. if ( block.timestamp <= tran.timestamp + tier.provingWindow From 0e7258f814d73becae8cb7ef05fc210840a4e7b5 Mon Sep 17 00:00:00 2001 From: Daniel Wang Date: Wed, 20 Sep 2023 13:09:31 +0800 Subject: [PATCH 11/87] Update LibProving.sol --- packages/protocol/contracts/L1/libs/LibProving.sol | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/packages/protocol/contracts/L1/libs/LibProving.sol b/packages/protocol/contracts/L1/libs/LibProving.sol index 276c7322af..7d035fe1d8 100644 --- a/packages/protocol/contracts/L1/libs/LibProving.sol +++ b/packages/protocol/contracts/L1/libs/LibProving.sol @@ -157,7 +157,10 @@ library LibProving { // The new proof must meet or exceed the minimum tier required by the // block or the previous proof; it cannot be on a lower tier. - if (evidence.tier < blk.minTier || evidence.tier < tran.tier) { + if ( + evidence.tier == 0 || evidence.tier < blk.minTier + || evidence.tier < tran.tier + ) { revert L1_INVALID_TIER(); } From 25043b6df6f13241aaa9c6197ccc83f13054756f Mon Sep 17 00:00:00 2001 From: Daniel Wang <99078276+dantaik@users.noreply.github.com> Date: Wed, 20 Sep 2023 18:58:25 +0800 Subject: [PATCH 12/87] fix(protocol): fixed a minor issue with getting EIP1559 base fee function on L2 (#14750) Co-authored-by: Daniel Wang --- packages/protocol/contracts/L2/TaikoL2.sol | 70 ++++++++++++---------- 1 file changed, 38 insertions(+), 32 deletions(-) diff --git a/packages/protocol/contracts/L2/TaikoL2.sol b/packages/protocol/contracts/L2/TaikoL2.sol index 63b1d15b5b..d5321e8e36 100644 --- a/packages/protocol/contracts/L2/TaikoL2.sol +++ b/packages/protocol/contracts/L2/TaikoL2.sol @@ -122,21 +122,13 @@ contract TaikoL2 is EssentialContract, TaikoL2Signer, ICrossChainSync { emit CrossChainSynced(l1Height, l1Hash, l1SignalRoot); // Check EIP-1559 basefee - uint256 basefee; - EIP1559Config memory config = getEIP1559Config(); - if (config.gasIssuedPerSecond != 0) { - (basefee, gasExcess) = _calcBasefee({ - config: config, - timeSinceParent: block.timestamp - parentTimestamp, - parentGasUsed: parentGasUsed - }); - } + uint64 basefee; + (basefee, gasExcess) = _calcBasefee({ + config: getEIP1559Config(), + timeSinceParent: block.timestamp - parentTimestamp, + parentGasUsed: parentGasUsed + }); - // To make sure when EIP-1559 is enabled, the basefee is non-zero - // (Geth never uses 0 values for basefee) - if (basefee == 0) { - basefee = 1; - } // On L2, basefee is not burnt, but sent to a treasury instead. // The circuits will need to verify the basefee recipient is the // designated address. @@ -152,7 +144,7 @@ contract TaikoL2 is EssentialContract, TaikoL2Signer, ICrossChainSync { // this event for debugging purpose. emit Anchored({ number: uint64(block.number), - basefee: uint64(basefee), + basefee: basefee, gaslimit: uint32(block.gaslimit), timestamp: uint64(block.timestamp), parentHash: parentHash, @@ -298,25 +290,39 @@ contract TaikoL2 is EssentialContract, TaikoL2Signer, ICrossChainSync { ) private view - returns (uint256 _basefee, uint64 _gasExcess) + returns (uint64 _basefee, uint64 _gasExcess) { - // Unchecked is safe because: - // - gasExcess is capped at uint64 max ever, so multiplying with a - // uint32 value is safe - // - 'excess' is bigger than 'issued' - unchecked { - uint256 issued = timeSinceParent * config.gasIssuedPerSecond; - uint256 excess = (uint256(gasExcess) + parentGasUsed).max(issued); - // Very important to cap _gasExcess uint64 - _gasExcess = uint64((excess - issued).min(type(uint64).max)); - } + if (config.gasIssuedPerSecond == 0) { + _basefee = 1; + _gasExcess = gasExcess; + } else { + // Unchecked is safe because: + // - gasExcess is capped at uint64 max ever, so multiplying with a + // uint32 value is safe + // - 'excess' is bigger than 'issued' + unchecked { + uint256 issued = timeSinceParent * config.gasIssuedPerSecond; + uint256 excess = + (uint256(gasExcess) + parentGasUsed).max(issued); + // Very important to cap _gasExcess uint64 + _gasExcess = uint64((excess - issued).min(type(uint64).max)); + } - _basefee = Lib1559Math.calculatePrice({ - xscale: config.xscale, - yscale: config.yscale, - xExcess: _gasExcess, - xPurchase: 0 - }); + _basefee = uint64( + Lib1559Math.calculatePrice({ + xscale: config.xscale, + yscale: config.yscale, + xExcess: _gasExcess, + xPurchase: 0 + }).min(type(uint64).max) + ); + + // To make sure when EIP-1559 is enabled, the basefee is non-zero + // (Geth never uses 0 values for basefee) + if (_basefee == 0) { + _basefee = 1; + } + } } } From 381abaabcc704273f81646cd5db9d8680bc2bdf1 Mon Sep 17 00:00:00 2001 From: D <51912515+adaki2004@users.noreply.github.com> Date: Thu, 21 Sep 2023 16:41:37 +0200 Subject: [PATCH 13/87] fix(protocol): Hybrid rollup tests and small fixes (#14766) Co-authored-by: Daniel Wang <99078276+dantaik@users.noreply.github.com> --- packages/protocol/contracts/L1/TaikoData.sol | 1 + .../contracts/L1/libs/LibProposing.sol | 11 +- .../protocol/contracts/L1/libs/LibProving.sol | 137 +-- .../protocol/contracts/L1/libs/LibUtils.sol | 1 + .../contracts/L1/libs/LibVerifying.sol | 1 - .../contracts/L1/verifiers/PseZkVerifier.sol | 5 +- packages/protocol/test/L1/TaikoL1.t.sol | 83 +- .../test/L1/TaikoL1LibProvingWithTiers.t.sol | 805 ++++++++++++++++++ packages/protocol/test/L1/TaikoL1Oracle.t.sol | 399 --------- packages/protocol/test/L1/TaikoL1TestBase.sol | 49 +- 10 files changed, 983 insertions(+), 509 deletions(-) create mode 100644 packages/protocol/test/L1/TaikoL1LibProvingWithTiers.t.sol delete mode 100644 packages/protocol/test/L1/TaikoL1Oracle.t.sol diff --git a/packages/protocol/contracts/L1/TaikoData.sol b/packages/protocol/contracts/L1/TaikoData.sol index 64a2e8da49..10c2ab61f6 100644 --- a/packages/protocol/contracts/L1/TaikoData.sol +++ b/packages/protocol/contracts/L1/TaikoData.sol @@ -97,6 +97,7 @@ library TaikoData { bytes32 l1Hash; bytes32 mixHash; bytes32 txListHash; + uint64 id; uint64 timestamp; uint64 l1Height; uint32 gasLimit; diff --git a/packages/protocol/contracts/L1/libs/LibProposing.sol b/packages/protocol/contracts/L1/libs/LibProposing.sol index 9626387b19..fe91ccce0a 100644 --- a/packages/protocol/contracts/L1/libs/LibProposing.sol +++ b/packages/protocol/contracts/L1/libs/LibProposing.sol @@ -203,6 +203,7 @@ library LibProposing { meta.mixHash = bytes32(block.prevrandao * b.numBlocks); meta.txListHash = txListHash; + meta.id = b.numBlocks; meta.timestamp = uint64(block.timestamp); meta.l1Height = uint64(block.number - 1); meta.gasLimit = config.blockMaxGasLimit; @@ -222,7 +223,7 @@ library LibProposing { // Please note that all fields must be re-initialized since we are // utilizing an existing ring buffer slot, not creating a new // storage slot. - blk.metaHash = _hashMetadata(meta); + blk.metaHash = hashMetadata(meta); blk.assignedProver = assignment.prover; // Safeguard the assignment bond to ensure its preservation, @@ -271,8 +272,8 @@ library LibProposing { } /// @dev Hashing the block metadata. - function _hashMetadata(TaikoData.BlockMetadata memory meta) - private + function hashMetadata(TaikoData.BlockMetadata memory meta) + internal pure returns (bytes32 hash) { @@ -280,8 +281,8 @@ library LibProposing { inputs[0] = uint256(meta.l1Hash); inputs[1] = uint256(meta.mixHash); inputs[2] = uint256(meta.txListHash); - inputs[3] = (uint256(meta.timestamp) << 192) - | (uint256(meta.l1Height) << 128) | (uint256(meta.gasLimit) << 96); + inputs[3] = (uint256(meta.id)) | (uint256(meta.timestamp) << 64) + | (uint256(meta.l1Height) << 128) | (uint256(meta.gasLimit) << 192); inputs[4] = uint256(keccak256(abi.encode(meta.depositsProcessed))); assembly { diff --git a/packages/protocol/contracts/L1/libs/LibProving.sol b/packages/protocol/contracts/L1/libs/LibProving.sol index 7d035fe1d8..33ca05124e 100644 --- a/packages/protocol/contracts/L1/libs/LibProving.sol +++ b/packages/protocol/contracts/L1/libs/LibProving.sol @@ -202,13 +202,14 @@ library LibProving { // Prepare to burn either the proof bond or the contest bond below. TaikoToken tt = TaikoToken(resolver.resolve("taiko_token", false)); - if (evidence.tier == tran.tier) { - // Contesting an existing transition or the top tier re-proving an - // existing transition requires either the blockHash or signalRoot - // to be different. This precaution is necessary because this - // `proveBlock` transaction might aim to prove a transition but - // could potentially be front-run by another prover attempting to - // prove the same transition. + if (tier.contestBond == 0) { + // When contestBond is zero for the current tier, it signifies + // it's the top tier. In this case, it can overwrite existing + // transitions without contestation. + + // We should outright prohibit the use of zero values for both + // blockHash and signalRoot since, when we initialize a new + // transition, we set both blockHash and signalRoot to 0. if ( evidence.blockHash == tran.blockHash && evidence.signalRoot == tran.signalRoot @@ -216,69 +217,73 @@ library LibProving { revert L1_ALREADY_PROVED(); } - if (tier.contestBond == 0) { - // When contestBond is zero for the current tier, it signifies - // it's the top tier. In this case, it can overwrite existing - // transitions without contestation. + if (evidence.blockHash == 0 || evidence.signalRoot == 0) { + revert L1_INVALID_EVIDENCE(); + } - // We should outright prohibit the use of zero values for both - // blockHash and signalRoot since, when we initialize a new - // transition, we set both blockHash and signalRoot to 0. - if (evidence.blockHash == 0 || evidence.signalRoot == 0) { - revert L1_INVALID_EVIDENCE(); - } + tran.blockHash = evidence.blockHash; + tran.signalRoot = evidence.signalRoot; + tran.prover = msg.sender; + tran.timestamp = uint64(block.timestamp); + tran.tier = evidence.tier; - tran.blockHash = evidence.blockHash; - tran.signalRoot = evidence.signalRoot; - tran.prover = msg.sender; - tran.timestamp = uint64(block.timestamp); + emit TransitionProved({ + blockId: blk.blockId, + parentHash: evidence.parentHash, + blockHash: evidence.blockHash, + signalRoot: evidence.signalRoot, + prover: msg.sender, + proofBond: 0, + tier: evidence.tier + }); + } else if (evidence.tier == tran.tier) { + // Contesting an existing transition requires either the blockHash + // or signalRoot to be different. This precaution is necessary + // because this `proveBlock` transaction might aim to prove a + // transition but could potentially be front-run by another prover + // attempting to prove the same transition. + if ( + evidence.blockHash == tran.blockHash + && evidence.signalRoot == tran.signalRoot + ) { + revert L1_ALREADY_PROVED(); + } - emit TransitionProved({ - blockId: blk.blockId, - parentHash: evidence.parentHash, - blockHash: evidence.blockHash, - signalRoot: evidence.signalRoot, - prover: msg.sender, - proofBond: 0, - tier: evidence.tier - }); - } else { - // The new tier is the same as the previous tier, but they are - // not the top tier, we are in the contesting mode. - // - // It's important to note that evidence.blockHash and - // evidence.signalRoot are not permanently stored, so their - // specific values are inconsequential. They only need to differ - // from the existing values to signify a contest. Therefore, a - // contester can conveniently utilize the value 1 for these two - // parameters. - - // The existing transiton must not have been contested. - if (tran.contester != address(0)) revert L1_ALREADY_CONTESTED(); - - // Burn the contest bond from the prover. - tt.burn(msg.sender, tier.contestBond); - - // We retain the contest bond within the transition, just in - // case this configuration is altered to a different value - // before the contest is resolved. - // - // It's worth noting that the previous value of tran.contestBond - // doesn't have any significance. - tran.contestBond = tier.contestBond; - tran.contester = msg.sender; - tran.timestamp = uint64(block.timestamp); + // The new tier is the same as the previous tier, we are in the + // contesting mode. + // + // It's important to note that evidence.blockHash and + // evidence.signalRoot are not permanently stored, so their + // specific values are inconsequential. They only need to differ + // from the existing values to signify a contest. Therefore, a + // contester can conveniently utilize the value 1 for these two + // parameters. + + // The existing transiton must not have been contested. + if (tran.contester != address(0)) revert L1_ALREADY_CONTESTED(); + + // Burn the contest bond from the prover. + tt.burn(msg.sender, tier.contestBond); + + // We retain the contest bond within the transition, just in + // case this configuration is altered to a different value + // before the contest is resolved. + // + // It's worth noting that the previous value of tran.contestBond + // doesn't have any significance. + tran.contestBond = tier.contestBond; + tran.contester = msg.sender; + tran.timestamp = uint64(block.timestamp); - emit TransitionContested({ - blockId: blk.blockId, - parentHash: evidence.parentHash, - blockHash: tran.blockHash, - signalRoot: tran.signalRoot, - contester: msg.sender, - contestBond: tier.contestBond, - tier: evidence.tier - }); - } + emit TransitionContested({ + blockId: blk.blockId, + parentHash: evidence.parentHash, + blockHash: tran.blockHash, + signalRoot: tran.signalRoot, + contester: msg.sender, + contestBond: tier.contestBond, + tier: evidence.tier + }); } else { // The new tier is higher than the previous tier, we are in the // proving mode. This works even if this transition's contester is diff --git a/packages/protocol/contracts/L1/libs/LibUtils.sol b/packages/protocol/contracts/L1/libs/LibUtils.sol index cb47813c9b..45243b27f7 100644 --- a/packages/protocol/contracts/L1/libs/LibUtils.sol +++ b/packages/protocol/contracts/L1/libs/LibUtils.sol @@ -101,6 +101,7 @@ library LibUtils { uint64 slot = _blockId % config.blockRingBufferSize; TaikoData.Block storage blk = state.blocks[slot]; + if (blk.blockId != _blockId) revert L1_BLOCK_MISMATCH(); if (blk.verifiedTransitionId == 0) revert L1_TRANSITION_NOT_FOUND(); diff --git a/packages/protocol/contracts/L1/libs/LibVerifying.sol b/packages/protocol/contracts/L1/libs/LibVerifying.sol index 24622f6317..b05a619c09 100644 --- a/packages/protocol/contracts/L1/libs/LibVerifying.sol +++ b/packages/protocol/contracts/L1/libs/LibVerifying.sol @@ -145,7 +145,6 @@ library LibVerifying { if (blk.blockId != blockId) revert L1_BLOCK_MISMATCH(); tid = LibUtils.getTransitionId(state, blk, slot, blockHash); - // When `tid` is 0, it indicates that there is no proven // transition with its parentHash equal to the blockHash of the // most recently verified block. diff --git a/packages/protocol/contracts/L1/verifiers/PseZkVerifier.sol b/packages/protocol/contracts/L1/verifiers/PseZkVerifier.sol index 682a216966..46fd2f3d3a 100644 --- a/packages/protocol/contracts/L1/verifiers/PseZkVerifier.sol +++ b/packages/protocol/contracts/L1/verifiers/PseZkVerifier.sol @@ -65,7 +65,6 @@ contract PseZkVerifier is EssentialContract, IVerifier { uint16 verifierId = uint16(bytes2(evidence.proof[0:2])); // Delegate to the ZKP verifier library to validate the proof. - // Resolve the verifier's name and obtain its address. address verifierAddress = resolve(getVerifierName(verifierId), false); @@ -84,7 +83,7 @@ contract PseZkVerifier is EssentialContract, IVerifier { address prover, TaikoData.BlockEvidence memory evidence ) - internal + public pure returns (bytes32 instance) { @@ -100,7 +99,7 @@ contract PseZkVerifier is EssentialContract, IVerifier { ); } - function getVerifierName(uint16 id) internal pure returns (bytes32) { + function getVerifierName(uint16 id) public pure returns (bytes32) { return bytes32(uint256(0x1000000) + id); } } diff --git a/packages/protocol/test/L1/TaikoL1.t.sol b/packages/protocol/test/L1/TaikoL1.t.sol index a48d5baeda..b71e532b0e 100644 --- a/packages/protocol/test/L1/TaikoL1.t.sol +++ b/packages/protocol/test/L1/TaikoL1.t.sol @@ -5,7 +5,9 @@ import { Test } from "forge-std/Test.sol"; import { console2 } from "forge-std/console2.sol"; import { AddressManager } from "../../contracts/common/AddressManager.sol"; import { LibUtils } from "../../contracts/L1/libs/LibUtils.sol"; +import { LibTiers } from "../../contracts/L1/libs/LibTiers.sol"; import { TaikoData } from "../../contracts/L1/TaikoData.sol"; +import { TaikoErrors } from "../../contracts/L1/TaikoErrors.sol"; import { TaikoL1 } from "../../contracts/L1/TaikoL1.sol"; import { TaikoToken } from "../../contracts/L1/TaikoToken.sol"; import { SignalService } from "../../contracts/signal/SignalService.sol"; @@ -74,10 +76,24 @@ contract TaikoL1Test is TaikoL1TestBase { bytes32 blockHash = bytes32(1e10 + blockId); bytes32 signalRoot = bytes32(1e9 + blockId); - proveBlock(Bob, Bob, meta, parentHash, blockHash, signalRoot); + proveBlock( + Bob, + Bob, + meta, + parentHash, + blockHash, + signalRoot, + L1.getBlock(meta.id).minTier, + "" + ); vm.roll(block.number + 15 * 12); - // TODO - // vm.warp(block.timestamp + conf.proofRegularCooldown + 1); + + uint16 minTier = L1.getBlock(meta.id).minTier; + vm.warp( + block.timestamp + LibTiers.getTierConfig(minTier).cooldownWindow + + 1 + ); + verifyBlock(Carol, 1); parentHash = blockHash; } @@ -97,7 +113,7 @@ contract TaikoL1Test is TaikoL1TestBase { bytes32 parentHash = GENESIS_BLOCK_HASH; - for (uint256 blockId = 1; blockId <= 2; blockId++) { + for (uint256 blockId = 1; blockId <= 20; blockId++) { printVariables("before propose"); TaikoData.BlockMetadata memory meta = proposeBlock(Alice, Bob, 1_000_000, 1024); @@ -106,10 +122,23 @@ contract TaikoL1Test is TaikoL1TestBase { bytes32 blockHash = bytes32(1e10 + blockId); bytes32 signalRoot = bytes32(1e9 + blockId); - proveBlock(Bob, Bob, meta, parentHash, blockHash, signalRoot); + proveBlock( + Bob, + Bob, + meta, + parentHash, + blockHash, + signalRoot, + L1.getBlock(meta.id).minTier, + "" + ); vm.roll(block.number + 15 * 12); - // TODO - // vm.warp(block.timestamp + conf.proofRegularCooldown + 1); + uint16 minTier = L1.getBlock(meta.id).minTier; + vm.warp( + block.timestamp + LibTiers.getTierConfig(minTier).cooldownWindow + + 1 + ); + verifyBlock(Alice, 2); parentHash = blockHash; } @@ -138,7 +167,16 @@ contract TaikoL1Test is TaikoL1TestBase { bytes32 blockHash = bytes32(1e10 + blockId); bytes32 signalRoot = bytes32(1e9 + blockId); - proveBlock(Bob, Bob, meta, parentHash, blockHash, signalRoot); + proveBlock( + Bob, + Bob, + meta, + parentHash, + blockHash, + signalRoot, + L1.getBlock(meta.id).minTier, + "" + ); parentHash = blockHash; } @@ -219,8 +257,9 @@ contract TaikoL1Test is TaikoL1TestBase { bytes32 genHash = L1.getCrossChainBlockHash(0); assertEq(GENESIS_BLOCK_HASH, genHash); - // Not yet avail. - assertEq(L1.getCrossChainBlockHash(1), bytes32(0)); + // Reverts if block is not yet verified! + vm.expectRevert(TaikoErrors.L1_BLOCK_MISMATCH.selector); + L1.getCrossChainBlockHash(1); } /// @dev getCrossChainSignalRoot tests @@ -238,9 +277,6 @@ contract TaikoL1Test is TaikoL1TestBase { giveEthAndTko(Bob, 1e7 ether, 100_000 ether); console2.log("Bob balance:", tko.balanceOf(Bob)); - // Bob is the staker / prover - vm.prank(Bob, Bob); - // Propose blocks for (uint64 blockId = 1; blockId < count; blockId++) { printVariables("before propose"); @@ -251,12 +287,22 @@ contract TaikoL1Test is TaikoL1TestBase { signalRoot = bytes32(1e9 + uint256(blockId)); proveBlock( - Bob, Bob, meta, parentHashes[blockId - 1], blockHash, signalRoot + Bob, + Bob, + meta, + parentHashes[blockId - 1], + blockHash, + signalRoot, + L1.getBlock(meta.id).minTier, + "" ); vm.roll(block.number + 15 * 12); - // TODO - // vm.warp(block.timestamp + conf.proofRegularCooldown + 1); + uint16 minTier = L1.getBlock(meta.id).minTier; + vm.warp( + block.timestamp + LibTiers.getTierConfig(minTier).cooldownWindow + + 1 + ); verifyBlock(Carol, 1); @@ -277,8 +323,9 @@ contract TaikoL1Test is TaikoL1TestBase { expectedSR = bytes32(1e9 + uint256(queriedBlockId)); assertEq(expectedSR, L1.getCrossChainSignalRoot(queriedBlockId)); - // Not found - assertEq(bytes32(0), L1.getCrossChainSignalRoot((count + 1))); + // Not found -> reverts + vm.expectRevert(TaikoErrors.L1_BLOCK_MISMATCH.selector); + L1.getCrossChainSignalRoot((count + 1)); } function test_L1_deposit_hash_creation() external { diff --git a/packages/protocol/test/L1/TaikoL1LibProvingWithTiers.t.sol b/packages/protocol/test/L1/TaikoL1LibProvingWithTiers.t.sol new file mode 100644 index 0000000000..028fbca064 --- /dev/null +++ b/packages/protocol/test/L1/TaikoL1LibProvingWithTiers.t.sol @@ -0,0 +1,805 @@ +// SPDX-License-Identifier: MIT +pragma solidity ^0.8.20; + +import { Test } from "forge-std/Test.sol"; +import { console2 } from "forge-std/console2.sol"; +import { AddressManager } from "../../contracts/common/AddressManager.sol"; +import { LibUtils } from "../../contracts/L1/libs/LibUtils.sol"; +import { LibTiers } from "../../contracts/L1/libs/LibTiers.sol"; +import { GuardianVerifier } from + "../../contracts/L1/verifiers/GuardianVerifier.sol"; +import { TaikoData } from "../../contracts/L1/TaikoData.sol"; +import { TaikoErrors } from "../../contracts/L1/TaikoErrors.sol"; +import { TaikoL1 } from "../../contracts/L1/TaikoL1.sol"; +import { TaikoToken } from "../../contracts/L1/TaikoToken.sol"; +import { SignalService } from "../../contracts/signal/SignalService.sol"; +import { Strings } from "@openzeppelin/contracts/utils/Strings.sol"; +import { TaikoL1TestBase } from "./TaikoL1TestBase.sol"; + +contract TaikoL1Tiers is TaikoL1 { + function getConfig() + public + pure + override + returns (TaikoData.Config memory config) + { + config = TaikoL1.getConfig(); + + config.blockMaxVerificationsPerTx = 0; + config.blockMaxProposals = 10; + config.blockRingBufferSize = 12; + // config.proofRegularCooldown = 15 minutes; + config.skipAssignmentVerificaiton = true; + config.assignmentBond = 1e18; // 1 Taiko token + config.proposerRewardPerSecond = 1e15; // 0.001 Taiko token + } +} + +contract Verifier { + fallback(bytes calldata) external returns (bytes memory) { + return bytes.concat(keccak256("taiko")); + } +} + +contract TaikoL1LibProvingWithTiers is TaikoL1TestBase { + function deployTaikoL1() internal override returns (TaikoL1 taikoL1) { + taikoL1 = new TaikoL1Tiers(); + } + + function setUp() public override { + TaikoL1TestBase.setUp(); + } + + function test_L1_ContestingWithSameProof() external { + giveEthAndTko(Alice, 1e7 ether, 1000 ether); + giveEthAndTko(Carol, 1e7 ether, 1000 ether); + console2.log("Alice balance:", tko.balanceOf(Alice)); + // This is a very weird test (code?) issue here. + // If this line is uncommented, + // Alice/Bob has no balance.. (Causing reverts !!!) + // Current investigations are ongoing with foundry team + giveEthAndTko(Bob, 1e6 ether, 100 ether); + console2.log("Bob balance:", tko.balanceOf(Bob)); + // Bob + vm.prank(Bob, Bob); + + bytes32 parentHash = GENESIS_BLOCK_HASH; + for ( + uint256 blockId = 1; blockId < conf.blockMaxProposals * 3; blockId++ + ) { + printVariables("before propose"); + TaikoData.BlockMetadata memory meta = + proposeBlock(Alice, Bob, 1_000_000, 1024); + //printVariables("after propose"); + mine(1); + + bytes32 blockHash = bytes32(1e10 + blockId); + bytes32 signalRoot = bytes32(1e9 + blockId); + // This proof cannot be verified obviously because of + // blockhash:blockId + proveBlock( + Bob, + Bob, + meta, + parentHash, + blockHash, + signalRoot, + L1.getBlock(meta.id).minTier, + "" + ); + + // Try to contest - but should revert with L1_ALREADY_PROVED + proveBlock( + Carol, + Carol, + meta, + parentHash, + blockHash, + signalRoot, + L1.getBlock(meta.id).minTier, + TaikoErrors.L1_ALREADY_PROVED.selector + ); + + vm.roll(block.number + 15 * 12); + + uint16 minTier = L1.getBlock(meta.id).minTier; + vm.warp( + block.timestamp + LibTiers.getTierConfig(minTier).cooldownWindow + + 1 + ); + + verifyBlock(Carol, 1); + + parentHash = blockHash; + } + printVariables(""); + } + + function test_L1_ContestingWithDifferentProof() external { + giveEthAndTko(Alice, 1e8 ether, 1000 ether); + giveEthAndTko(Carol, 1e8 ether, 1000 ether); + console2.log("Alice balance:", tko.balanceOf(Alice)); + // This is a very weird test (code?) issue here. + // If this line is uncommented, + // Alice/Bob has no balance.. (Causing reverts !!!) + // Current investigations are ongoing with foundry team + giveEthAndTko(Bob, 1e8 ether, 100 ether); + console2.log("Bob balance:", tko.balanceOf(Bob)); + // Bob + vm.prank(Bob, Bob); + + bytes32 parentHash = GENESIS_BLOCK_HASH; + for ( + uint256 blockId = 1; blockId < conf.blockMaxProposals * 3; blockId++ + ) { + printVariables("before propose"); + TaikoData.BlockMetadata memory meta = + proposeBlock(Alice, Bob, 1_000_000, 1024); + //printVariables("after propose"); + mine(1); + + bytes32 blockHash = bytes32(1e10 + blockId); + bytes32 signalRoot = bytes32(1e9 + blockId); + // This proof cannot be verified obviously because of + // signalRoot instead of blockHash + uint16 minTier = L1.getBlock(meta.id).minTier; + proveBlock( + Bob, Bob, meta, parentHash, signalRoot, signalRoot, minTier, "" + ); + + if (minTier == LibTiers.TIER_OPTIMISTIC) { + // Try to contest + proveBlock( + Carol, + Carol, + meta, + parentHash, + blockHash, + signalRoot, + minTier, + "" + ); + + vm.roll(block.number + 15 * 12); + + vm.warp( + block.timestamp + + LibTiers.getTierConfig(minTier).cooldownWindow + 1 + ); + + // Cannot verify block because it is contested.. + verifyBlock(Carol, 1); + + proveBlock( + Carol, + Carol, + meta, + parentHash, + blockHash, + signalRoot, + LibTiers.TIER_PSE_ZKEVM, + "" + ); + } + + // Otherwise just not contest + vm.warp( + block.timestamp + LibTiers.getTierConfig(minTier).cooldownWindow + + 1 + ); + // Now can verify + verifyBlock(Carol, 1); + + parentHash = blockHash; + } + printVariables(""); + } + + function test_L1_ContestingWithInvalidBlockHash() external { + giveEthAndTko(Alice, 1e8 ether, 1000 ether); + giveEthAndTko(Carol, 1e8 ether, 1000 ether); + console2.log("Alice balance:", tko.balanceOf(Alice)); + // This is a very weird test (code?) issue here. + // If this line is uncommented, + // Alice/Bob has no balance.. (Causing reverts !!!) + // Current investigations are ongoing with foundry team + giveEthAndTko(Bob, 1e8 ether, 100 ether); + console2.log("Bob balance:", tko.balanceOf(Bob)); + // Bob + vm.prank(Bob, Bob); + + bytes32 parentHash = GENESIS_BLOCK_HASH; + for (uint256 blockId = 1; blockId < 10; blockId++) { + printVariables("before propose"); + TaikoData.BlockMetadata memory meta = + proposeBlock(Alice, Bob, 1_000_000, 1024); + //printVariables("after propose"); + mine(1); + + bytes32 blockHash = bytes32(1e10 + blockId); + bytes32 signalRoot = bytes32(1e9 + blockId); + // This proof cannot be verified obviously because of + // signalRoot instead of blockHash + uint16 minTier = L1.getBlock(meta.id).minTier; + proveBlock( + Bob, Bob, meta, parentHash, signalRoot, signalRoot, minTier, "" + ); + + if (minTier == LibTiers.TIER_OPTIMISTIC) { + // Try to contest + proveBlock( + Carol, + Carol, + meta, + parentHash, + blockHash, + signalRoot, + minTier, + "" + ); + + vm.roll(block.number + 15 * 12); + + vm.warp( + block.timestamp + + LibTiers.getTierConfig(minTier).cooldownWindow + 1 + ); + + // Cannot verify block because it is contested.. + verifyBlock(Carol, 1); + + proveBlock( + Carol, + Carol, + meta, + parentHash, + 0, + signalRoot, + LibTiers.TIER_PSE_ZKEVM, + TaikoErrors.L1_INVALID_EVIDENCE.selector + ); + } + + // Otherwise just not contest + vm.warp( + block.timestamp + LibTiers.getTierConfig(minTier).cooldownWindow + + 1 + ); + // Now can verify + verifyBlock(Carol, 1); + + parentHash = blockHash; + } + printVariables(""); + } + + function test_L1_NonAsignedProverCannotBeFirstInProofWindowTime() + external + { + giveEthAndTko(Alice, 1e8 ether, 100 ether); + // This is a very weird test (code?) issue here. + // If this line (or Bob's query balance) is uncommented, + // Alice/Bob has no balance.. (Causing reverts !!!) + console2.log("Alice balance:", tko.balanceOf(Alice)); + giveEthAndTko(Bob, 1e8 ether, 100 ether); + console2.log("Bob balance:", tko.balanceOf(Bob)); + giveEthAndTko(Carol, 1e8 ether, 100 ether); + // Bob + vm.prank(Bob, Bob); + + bytes32 parentHash = GENESIS_BLOCK_HASH; + + for (uint256 blockId = 1; blockId < 10; blockId++) { + //printVariables("before propose"); + TaikoData.BlockMetadata memory meta = + proposeBlock(Alice, Bob, 1_000_000, 1024); + //printVariables("after propose"); + mine(1); + + bytes32 blockHash = bytes32(1e10 + blockId); + bytes32 signalRoot = bytes32(1e9 + blockId); + proveBlock( + Carol, + Carol, + meta, + parentHash, + blockHash, + signalRoot, + L1.getBlock(meta.id).minTier, + TaikoErrors.L1_NOT_ASSIGNED_PROVER.selector + ); + vm.roll(block.number + 15 * 12); + + uint16 minTier = L1.getBlock(meta.id).minTier; + vm.warp( + block.timestamp + LibTiers.getTierConfig(minTier).cooldownWindow + + 1 + ); + + verifyBlock(Carol, 1); + parentHash = blockHash; + } + printVariables(""); + } + + function test_L1_asignedProverCannotProveAfterHisWindowElapsed() external { + giveEthAndTko(Alice, 1e8 ether, 100 ether); + // This is a very weird test (code?) issue here. + // If this line (or Bob's query balance) is uncommented, + // Alice/Bob has no balance.. (Causing reverts !!!) + console2.log("Alice balance:", tko.balanceOf(Alice)); + giveEthAndTko(Bob, 1e8 ether, 100 ether); + console2.log("Bob balance:", tko.balanceOf(Bob)); + giveEthAndTko(Carol, 1e8 ether, 100 ether); + // Bob + vm.prank(Bob, Bob); + + bytes32 parentHash = GENESIS_BLOCK_HASH; + + for (uint256 blockId = 1; blockId < 10; blockId++) { + //printVariables("before propose"); + TaikoData.BlockMetadata memory meta = + proposeBlock(Alice, Bob, 1_000_000, 1024); + //printVariables("after propose"); + mine(1); + + bytes32 blockHash = bytes32(1e10 + blockId); + bytes32 signalRoot = bytes32(1e9 + blockId); + + vm.roll(block.number + 15 * 12); + + uint16 minTier = L1.getBlock(meta.id).minTier; + vm.warp( + block.timestamp + LibTiers.getTierConfig(minTier).cooldownWindow + + 1 + ); + + proveBlock( + Bob, + Bob, + meta, + parentHash, + blockHash, + signalRoot, + L1.getBlock(meta.id).minTier, + TaikoErrors.L1_ASSIGNED_PROVER_NOT_ALLOWED.selector + ); + + verifyBlock(Carol, 1); + parentHash = blockHash; + } + printVariables(""); + } + + function test_L1_GuardianProverCannotOverwriteIfSameProof() external { + registerAddress("guardian", Carol); + + giveEthAndTko(Alice, 1e7 ether, 1000 ether); + giveEthAndTko(Carol, 1e7 ether, 1000 ether); + console2.log("Alice balance:", tko.balanceOf(Alice)); + // This is a very weird test (code?) issue here. + // If this line is uncommented, + // Alice/Bob has no balance.. (Causing reverts !!!) + // Current investigations are ongoing with foundry team + giveEthAndTko(Bob, 1e6 ether, 100 ether); + console2.log("Bob balance:", tko.balanceOf(Bob)); + // Bob + vm.prank(Bob, Bob); + + bytes32 parentHash = GENESIS_BLOCK_HASH; + for ( + uint256 blockId = 1; blockId < conf.blockMaxProposals * 3; blockId++ + ) { + printVariables("before propose"); + TaikoData.BlockMetadata memory meta = + proposeBlock(Alice, Bob, 1_000_000, 1024); + //printVariables("after propose"); + mine(1); + + bytes32 blockHash = bytes32(1e10 + blockId); + bytes32 signalRoot = bytes32(1e9 + blockId); + // This proof cannot be verified obviously because of + // blockhash:blockId + proveBlock( + Bob, + Bob, + meta, + parentHash, + blockHash, + signalRoot, + L1.getBlock(meta.id).minTier, + "" + ); + + // Try to contest - but should revert with L1_ALREADY_PROVED + proveBlock( + Carol, + Carol, + meta, + parentHash, + blockHash, + signalRoot, + LibTiers.TIER_GUARDIAN, + TaikoErrors.L1_ALREADY_PROVED.selector + ); + + vm.roll(block.number + 15 * 12); + + uint16 minTier = L1.getBlock(meta.id).minTier; + vm.warp( + block.timestamp + LibTiers.getTierConfig(minTier).cooldownWindow + + 1 + ); + + verifyBlock(Carol, 1); + + parentHash = blockHash; + } + printVariables(""); + } + + function test_L1_GuardianProverFailsWithInvalidBlockHash() external { + registerAddress("guardian", Carol); + + giveEthAndTko(Alice, 1e7 ether, 1000 ether); + giveEthAndTko(Carol, 1e7 ether, 1000 ether); + console2.log("Alice balance:", tko.balanceOf(Alice)); + // This is a very weird test (code?) issue here. + // If this line is uncommented, + // Alice/Bob has no balance.. (Causing reverts !!!) + // Current investigations are ongoing with foundry team + giveEthAndTko(Bob, 1e6 ether, 100 ether); + console2.log("Bob balance:", tko.balanceOf(Bob)); + // Bob + vm.prank(Bob, Bob); + + bytes32 parentHash = GENESIS_BLOCK_HASH; + for ( + uint256 blockId = 1; blockId < conf.blockMaxProposals * 3; blockId++ + ) { + printVariables("before propose"); + TaikoData.BlockMetadata memory meta = + proposeBlock(Alice, Bob, 1_000_000, 1024); + //printVariables("after propose"); + mine(1); + + bytes32 blockHash = bytes32(1e10 + blockId); + bytes32 signalRoot = bytes32(1e9 + blockId); + // This proof cannot be verified obviously because of + // blockhash:blockId + proveBlock( + Bob, + Bob, + meta, + parentHash, + blockHash, + signalRoot, + L1.getBlock(meta.id).minTier, + "" + ); + + // Try to contest - but should revert with L1_ALREADY_PROVED + proveBlock( + Carol, + Carol, + meta, + parentHash, + 0, + signalRoot, + LibTiers.TIER_GUARDIAN, + TaikoErrors.L1_INVALID_EVIDENCE.selector + ); + + vm.roll(block.number + 15 * 12); + + uint16 minTier = L1.getBlock(meta.id).minTier; + vm.warp( + block.timestamp + LibTiers.getTierConfig(minTier).cooldownWindow + + 1 + ); + + verifyBlock(Carol, 1); + + parentHash = blockHash; + } + printVariables(""); + } + + function test_L1_GuardianProverCanOverwriteIfNotSameProof() external { + registerAddress("guardian", Carol); + + giveEthAndTko(Alice, 1e7 ether, 1000 ether); + giveEthAndTko(Carol, 1e7 ether, 1000 ether); + console2.log("Alice balance:", tko.balanceOf(Alice)); + // This is a very weird test (code?) issue here. + // If this line is uncommented, + // Alice/Bob has no balance.. (Causing reverts !!!) + // Current investigations are ongoing with foundry team + giveEthAndTko(Bob, 1e7 ether, 100 ether); + console2.log("Bob balance:", tko.balanceOf(Bob)); + // Bob + vm.prank(Bob, Bob); + + bytes32 parentHash = GENESIS_BLOCK_HASH; + for ( + uint256 blockId = 1; blockId < conf.blockMaxProposals * 3; blockId++ + ) { + printVariables("before propose"); + TaikoData.BlockMetadata memory meta = + proposeBlock(Alice, Bob, 1_000_000, 1024); + //printVariables("after propose"); + mine(1); + + bytes32 blockHash = bytes32(1e10 + blockId); + bytes32 signalRoot = bytes32(1e9 + blockId); + // This proof cannot be verified obviously because of + // blockhash:blockId + proveBlock( + Bob, + Bob, + meta, + parentHash, + signalRoot, + signalRoot, + L1.getBlock(meta.id).minTier, + "" + ); + + // Prove as guardian + proveBlock( + Carol, + Carol, + meta, + parentHash, + blockHash, + signalRoot, + LibTiers.TIER_GUARDIAN, + "" + ); + + vm.roll(block.number + 15 * 12); + + uint16 minTier = L1.getBlock(meta.id).minTier; + vm.warp( + block.timestamp + LibTiers.getTierConfig(minTier).cooldownWindow + + 1 + ); + + verifyBlock(Carol, 1); + + parentHash = blockHash; + } + printVariables(""); + } + + function test_L1_IfGuardianRoleIsNotGrantedToProver() external { + registerAddress("guardian", Alice); + + giveEthAndTko(Alice, 1e8 ether, 1000 ether); + giveEthAndTko(Carol, 1e8 ether, 1000 ether); + console2.log("Alice balance:", tko.balanceOf(Alice)); + // This is a very weird test (code?) issue here. + // If this line is uncommented, + // Alice/Bob has no balance.. (Causing reverts !!!) + // Current investigations are ongoing with foundry team + giveEthAndTko(Bob, 1e8 ether, 100 ether); + console2.log("Bob balance:", tko.balanceOf(Bob)); + // Bob + vm.prank(Bob, Bob); + + bytes32 parentHash = GENESIS_BLOCK_HASH; + for (uint256 blockId = 1; blockId < 10; blockId++) { + printVariables("before propose"); + TaikoData.BlockMetadata memory meta = + proposeBlock(Alice, Bob, 1_000_000, 1024); + //printVariables("after propose"); + mine(1); + + bytes32 blockHash = bytes32(1e10 + blockId); + bytes32 signalRoot = bytes32(1e9 + blockId); + // This proof cannot be verified obviously because of + // blockhash:blockId + proveBlock( + Bob, + Bob, + meta, + parentHash, + signalRoot, + signalRoot, + L1.getBlock(meta.id).minTier, + "" + ); + + // Prove as guardian but in reality not a guardian + proveBlock( + Carol, + Carol, + meta, + parentHash, + blockHash, + signalRoot, + LibTiers.TIER_GUARDIAN, + GuardianVerifier.PERMISSION_DENIED.selector + ); + + vm.roll(block.number + 15 * 12); + + uint16 minTier = L1.getBlock(meta.id).minTier; + vm.warp( + block.timestamp + LibTiers.getTierConfig(minTier).cooldownWindow + + 1 + ); + + verifyBlock(Carol, 1); + + parentHash = blockHash; + } + printVariables(""); + } + + function test_L1_ProveWithInvalidBlockId() external { + registerAddress("guardian", Alice); + + giveEthAndTko(Alice, 1e8 ether, 1000 ether); + giveEthAndTko(Carol, 1e8 ether, 1000 ether); + console2.log("Alice balance:", tko.balanceOf(Alice)); + // This is a very weird test (code?) issue here. + // If this line is uncommented, + // Alice/Bob has no balance.. (Causing reverts !!!) + // Current investigations are ongoing with foundry team + giveEthAndTko(Bob, 1e8 ether, 100 ether); + console2.log("Bob balance:", tko.balanceOf(Bob)); + // Bob + vm.prank(Bob, Bob); + + bytes32 parentHash = GENESIS_BLOCK_HASH; + for (uint256 blockId = 1; blockId < 10; blockId++) { + printVariables("before propose"); + TaikoData.BlockMetadata memory meta = + proposeBlock(Alice, Bob, 1_000_000, 1024); + //printVariables("after propose"); + mine(1); + + bytes32 blockHash = bytes32(1e10 + blockId); + bytes32 signalRoot = bytes32(1e9 + blockId); + + meta.id = 100; + proveBlock( + Carol, + Carol, + meta, + parentHash, + blockHash, + signalRoot, + LibTiers.TIER_PSE_ZKEVM, + TaikoErrors.L1_INVALID_BLOCK_ID.selector + ); + + parentHash = blockHash; + } + printVariables(""); + } + + function test_L1_ProveWithInvalidMetahash() external { + registerAddress("guardian", Alice); + + giveEthAndTko(Alice, 1e8 ether, 1000 ether); + giveEthAndTko(Carol, 1e8 ether, 1000 ether); + console2.log("Alice balance:", tko.balanceOf(Alice)); + // This is a very weird test (code?) issue here. + // If this line is uncommented, + // Alice/Bob has no balance.. (Causing reverts !!!) + // Current investigations are ongoing with foundry team + giveEthAndTko(Bob, 1e8 ether, 100 ether); + console2.log("Bob balance:", tko.balanceOf(Bob)); + // Bob + vm.prank(Bob, Bob); + + bytes32 parentHash = GENESIS_BLOCK_HASH; + for (uint256 blockId = 1; blockId < 10; blockId++) { + printVariables("before propose"); + TaikoData.BlockMetadata memory meta = + proposeBlock(Alice, Bob, 1_000_000, 1024); + //printVariables("after propose"); + mine(1); + + bytes32 blockHash = bytes32(1e10 + blockId); + bytes32 signalRoot = bytes32(1e9 + blockId); + + // Mess up metahash + meta.l1Height = 200; + proveBlock( + Bob, + Bob, + meta, + parentHash, + blockHash, + signalRoot, + LibTiers.TIER_PSE_ZKEVM, + TaikoErrors.L1_BLOCK_MISMATCH.selector + ); + + parentHash = blockHash; + } + printVariables(""); + } + + function test_L1_GuardianProofCannotBeOverwrittenByLowerTier() external { + registerAddress("guardian", Carol); + + giveEthAndTko(Alice, 1e7 ether, 1000 ether); + giveEthAndTko(Carol, 1e7 ether, 1000 ether); + console2.log("Alice balance:", tko.balanceOf(Alice)); + // This is a very weird test (code?) issue here. + // If this line is uncommented, + // Alice/Bob has no balance.. (Causing reverts !!!) + // Current investigations are onsgoing with foundry team + giveEthAndTko(Bob, 1e7 ether, 100 ether); + console2.log("Bob balance:", tko.balanceOf(Bob)); + // Bob + vm.prank(Bob, Bob); + + bytes32 parentHash = GENESIS_BLOCK_HASH; + for ( + uint256 blockId = 1; blockId < conf.blockMaxProposals * 3; blockId++ + ) { + printVariables("before propose"); + TaikoData.BlockMetadata memory meta = + proposeBlock(Alice, Bob, 1_000_000, 1024); + //printVariables("after propose"); + mine(1); + + bytes32 blockHash = bytes32(1e10 + blockId); + bytes32 signalRoot = bytes32(1e9 + blockId); + // This proof cannot be verified obviously because of blockhash is + // exchanged with signalRoot + proveBlock( + Bob, + Bob, + meta, + parentHash, + signalRoot, + signalRoot, + L1.getBlock(meta.id).minTier, + "" + ); + + // Prove as guardian + proveBlock( + Carol, + Carol, + meta, + parentHash, + blockHash, + signalRoot, + LibTiers.TIER_GUARDIAN, + "" + ); + + // Try to re-prove but reverts + proveBlock( + Bob, + Bob, + meta, + parentHash, + signalRoot, + signalRoot, + LibTiers.TIER_PSE_ZKEVM, + TaikoErrors.L1_INVALID_TIER.selector + ); + + vm.roll(block.number + 15 * 12); + + uint16 minTier = L1.getBlock(meta.id).minTier; + vm.warp( + block.timestamp + LibTiers.getTierConfig(minTier).cooldownWindow + + 1 + ); + + verifyBlock(Carol, 1); + + parentHash = blockHash; + } + printVariables(""); + } +} diff --git a/packages/protocol/test/L1/TaikoL1Oracle.t.sol b/packages/protocol/test/L1/TaikoL1Oracle.t.sol deleted file mode 100644 index b71538c515..0000000000 --- a/packages/protocol/test/L1/TaikoL1Oracle.t.sol +++ /dev/null @@ -1,399 +0,0 @@ -// SPDX-License-Identifier: MIT -pragma solidity ^0.8.20; - -import { Test } from "forge-std/Test.sol"; -import { console2 } from "forge-std/console2.sol"; -import { AddressManager } from "../../contracts/common/AddressManager.sol"; -import { LibUtils } from "../../contracts/L1/libs/LibUtils.sol"; -import { TaikoData } from "../../contracts/L1/TaikoData.sol"; -import { TaikoErrors } from "../../contracts/L1/TaikoErrors.sol"; -import { TaikoL1 } from "../../contracts/L1/TaikoL1.sol"; -import { TaikoToken } from "../../contracts/L1/TaikoToken.sol"; -import { SignalService } from "../../contracts/signal/SignalService.sol"; -import { Strings } from "@openzeppelin/contracts/utils/Strings.sol"; -import { TaikoL1TestBase } from "./TaikoL1TestBase.sol"; - -contract TaikoL1Oracle is TaikoL1 { - function getConfig() - public - pure - override - returns (TaikoData.Config memory config) - { - config = TaikoL1.getConfig(); - - config.blockMaxVerificationsPerTx = 0; - config.blockMaxProposals = 10; - config.blockRingBufferSize = 12; - // config.proofRegularCooldown = 15 minutes; - config.skipAssignmentVerificaiton = true; - config.assignmentBond = 1e18; // 1 Taiko token - config.proposerRewardPerSecond = 1e15; // 0.001 Taiko token - } -} - -contract Verifier { - fallback(bytes calldata) external returns (bytes memory) { - return bytes.concat(keccak256("taiko")); - } -} - -contract TaikoL1OracleTest is TaikoL1TestBase { - // TODO - address PLACEHOLDER_ADDR = address(1); - - function deployTaikoL1() internal override returns (TaikoL1 taikoL1) { - taikoL1 = new TaikoL1Oracle(); - } - - function setUp() public override { - TaikoL1TestBase.setUp(); - // TODO - // registerAddress(L1.getVerifierName(100), address(new Verifier())); - registerAddress("oracle_prover", Alice); - } - - function test_L1_OracleProverCanAlwaysOverwriteIfNotSameProof() external { - // Carol is the oracle prover - registerAddress("oracle_prover", Carol); - - giveEthAndTko(Alice, 1000 ether, 1000 ether); - console2.log("Alice balance:", tko.balanceOf(Alice)); - // This is a very weird test (code?) issue here. - // If this line is uncommented, - // Alice/Bob has no balance.. (Causing reverts !!!) - // Current investigations are ongoing with foundry team - giveEthAndTko(Bob, 1e6 ether, 100 ether); - console2.log("Bob balance:", tko.balanceOf(Bob)); - // Bob - vm.prank(Bob, Bob); - - bytes32 parentHash = GENESIS_BLOCK_HASH; - for ( - uint256 blockId = 1; blockId < conf.blockMaxProposals * 3; blockId++ - ) { - printVariables("before propose"); - TaikoData.BlockMetadata memory meta = - proposeBlock(Alice, Bob, 1_000_000, 1024); - //printVariables("after propose"); - mine(1); - - bytes32 blockHash = bytes32(1e10 + blockId); - bytes32 signalRoot = bytes32(1e9 + blockId); - // This proof cannot be verified obviously because of - // blockhash:blockId - proveBlock(Bob, Bob, meta, parentHash, bytes32(blockId), signalRoot); - - proveBlock( - Carol, PLACEHOLDER_ADDR, meta, parentHash, blockHash, signalRoot - ); - - // TODO - // vm.warp(block.timestamp + conf.proofRegularCooldown + 1); - - verifyBlock(Carol, 1); - - // This is verified, user cannot re-verify it - vm.expectRevert(TaikoErrors.L1_INVALID_BLOCK_ID.selector); - proveBlock(Bob, Bob, meta, parentHash, blockHash, signalRoot); - - parentHash = blockHash; - } - printVariables(""); - } - - function test_L1_OracleProverCannotOverwriteIfSameProof() external { - // Carol is the oracle prover - registerAddress("oracle_prover", Carol); - - giveEthAndTko(Alice, 1000 ether, 1000 ether); - console2.log("Alice balance:", tko.balanceOf(Alice)); - // This is a very weird test (code?) issue here. - // If this line is uncommented, - // Alice/Bob has no balance.. (Causing reverts !!!) - // Current investigations are ongoing with foundry team - giveEthAndTko(Bob, 1e6 ether, 100 ether); - console2.log("Bob balance:", tko.balanceOf(Bob)); - // Bob - vm.prank(Bob, Bob); - - bytes32 parentHash = GENESIS_BLOCK_HASH; - for ( - uint256 blockId = 1; blockId < conf.blockMaxProposals * 3; blockId++ - ) { - printVariables("before propose"); - TaikoData.BlockMetadata memory meta = - proposeBlock(Alice, Bob, 1_000_000, 1024); - //printVariables("after propose"); - mine(1); - - bytes32 blockHash = bytes32(1e10 + blockId); - bytes32 signalRoot = bytes32(1e9 + blockId); - // This proof cannot be verified obviously because of - // blockhash:blockId - proveBlock(Bob, Bob, meta, parentHash, blockHash, signalRoot); - - // TODO - // vm.expectRevert(TaikoErrors.L1_SAME_PROOF.selector); - proveBlock( - Carol, PLACEHOLDER_ADDR, meta, parentHash, blockHash, signalRoot - ); - - // TODO - // vm.warp(block.timestamp + conf.proofRegularCooldown + 1); - uint256 lastVerifiedBlockId = - L1.getStateVariables().lastVerifiedBlockId; - - verifyBlock(Carol, 1); - - // Check if shortly after proving (+verify) the last verify is not - // the same anymore - // no need to have a cooldown period - uint256 lastVerifiedBlockIdNow = - L1.getStateVariables().lastVerifiedBlockId; - - assertFalse(lastVerifiedBlockIdNow == lastVerifiedBlockId); - - parentHash = blockHash; - } - printVariables(""); - } - - /// @dev So in case we have regular proving mechanism we shall check if - /// still a cooldown happens - /// @dev when proving a block (in a normal way). - /// @notice In case oracle_prover is disbaled, there - /// is no reason why - /// @notice cooldowns be above 0 min tho (!). - function test_L1_if_oracle_is_disabled_cooldown_is_still_as_proofRegularCooldown( - ) - external - { - registerAddress("oracle_prover", address(0)); - - giveEthAndTko(Alice, 1000 ether, 1000 ether); - console2.log("Alice balance:", tko.balanceOf(Alice)); - // This is a very weird test (code?) issue here. - // If this line is uncommented, - // Alice/Bob has no balance.. (Causing reverts !!!) - // Current investigations are ongoing with foundry team - giveEthAndTko(Bob, 1e6 ether, 100 ether); - console2.log("Bob balance:", tko.balanceOf(Bob)); - // Bob - vm.prank(Bob, Bob); - - bytes32 parentHash = GENESIS_BLOCK_HASH; - - for ( - uint256 blockId = 1; blockId < conf.blockMaxProposals * 3; blockId++ - ) { - TaikoData.BlockMetadata memory meta = - proposeBlock(Alice, Bob, 1_000_000, 1024); - printVariables("after propose"); - mine(1); - - bytes32 blockHash = bytes32(1e10 + blockId); - bytes32 signalRoot = bytes32(1e9 + blockId); - - proveBlock(Bob, Bob, meta, parentHash, blockHash, signalRoot); - - uint256 lastVerifiedBlockId = - L1.getStateVariables().lastVerifiedBlockId; - - vm.warp(block.timestamp + 1 seconds); - verifyBlock(Carol, 1); - - // Check if shortly after proving (+verify) the last verify is not - // the same anymore - // no need to have a cooldown period - uint256 lastVerifiedBlockIdNow = - L1.getStateVariables().lastVerifiedBlockId; - - assertEq(lastVerifiedBlockIdNow, lastVerifiedBlockId); - - // TODO - // vm.warp(block.timestamp + conf.proofRegularCooldown + 1); - verifyBlock(Carol, 1); - - lastVerifiedBlockIdNow = L1.getStateVariables().lastVerifiedBlockId; - - assertFalse(lastVerifiedBlockIdNow == lastVerifiedBlockId); - - parentHash = blockHash; - } - printVariables(""); - } - - /// @dev Test if oracle proofs can be verified - function test_L1_if_oracle_proofs_can_be_verified_without_regular_proofs() - external - { - // Bob is the oracle prover - registerAddress("oracle_prover", Bob); - - giveEthAndTko(Alice, 1000 ether, 1000 ether); - console2.log("Alice balance:", tko.balanceOf(Alice)); - // This is a very weird test (code?) issue here. - // If this line is uncommented, - // Alice/Bob has no balance.. (Causing reverts !!!) - // Current investigations are ongoing with foundry team - giveEthAndTko(Bob, 1e6 ether, 100 ether); - console2.log("Bob balance:", tko.balanceOf(Bob)); - // Bob - vm.prank(Bob, Bob); - - bytes32 parentHash = GENESIS_BLOCK_HASH; - - for ( - uint256 blockId = 1; blockId < conf.blockMaxProposals * 3; blockId++ - ) { - TaikoData.BlockMetadata memory meta = - proposeBlock(Alice, Bob, 1_000_000, 1024); - printVariables("after propose"); - mine(1); - - bytes32 blockHash = bytes32(1e10 + blockId); - bytes32 signalRoot = bytes32(1e9 + blockId); - - proveBlock(Bob, Bob, meta, parentHash, blockHash, signalRoot); - - uint256 lastVerifiedBlockId = - L1.getStateVariables().lastVerifiedBlockId; - - // TODO - // vm.warp(block.timestamp + conf.proofRegularCooldown + 1); - verifyBlock(Carol, 1); - - uint256 lastVerifiedBlockIdNow = - L1.getStateVariables().lastVerifiedBlockId; - - assertFalse(lastVerifiedBlockIdNow == lastVerifiedBlockId); - - parentHash = blockHash; - } - printVariables(""); - } - - /// @dev Test if oracle prover cannot be overwritten - function test_L1_if_oracle_prover_can_prove_but_regular_provers_can_not_overwrite( - ) - external - { - // David is the oracle prover - registerAddress("oracle_prover", David); - - giveEthAndTko(Alice, 1000 ether, 1000 ether); - console2.log("Alice balance:", tko.balanceOf(Alice)); - // This is a very weird test (code?) issue here. - // If this line is uncommented, - // Alice/Bob has no balance.. (Causing reverts !!!) - // Current investigations are ongoing with foundry team - giveEthAndTko(Bob, 1e6 ether, 100 ether); - console2.log("Bob balance:", tko.balanceOf(Bob)); - giveEthAndTko(Carol, 1e6 ether, 100 ether); - console2.log("Bob balance:", tko.balanceOf(Carol)); - - // Bob - vm.prank(Bob, Bob); - - bytes32 parentHash = GENESIS_BLOCK_HASH; - - for ( - uint64 blockId = 1; blockId < conf.blockMaxProposals * 3; blockId++ - ) { - TaikoData.BlockMetadata memory meta = - proposeBlock(Alice, Bob, 1_000_000, 1024); - printVariables("after propose"); - mine(1); - - bytes32 blockHash = bytes32(1e10 + uint256(blockId)); - bytes32 signalRoot = bytes32(1e9 + uint256(blockId)); - - proveBlock( - David, PLACEHOLDER_ADDR, meta, parentHash, blockHash, signalRoot - ); - - uint256 lastVerifiedBlockId = - L1.getStateVariables().lastVerifiedBlockId; - - // Bob cannot overwrite it - vm.expectRevert(TaikoErrors.L1_ALREADY_PROVED.selector); - proveBlock(Bob, Bob, meta, parentHash, blockHash, signalRoot); - - vm.warp(block.timestamp + 1 seconds); - // TODO - // vm.warp(block.timestamp + conf.proofOracleCooldown); - - TaikoData.Transition memory transition = - L1.getTransition(blockId, parentHash); - - assertEq(transition.prover, PLACEHOLDER_ADDR); - - verifyBlock(Carol, 1); - - // Check if shortly after proving (+verify) the last verify is not - // the same anymore - // no need to have a cooldown period - uint256 lastVerifiedBlockIdNow = - L1.getStateVariables().lastVerifiedBlockId; - - assertFalse(lastVerifiedBlockIdNow == lastVerifiedBlockId); - - parentHash = blockHash; - } - printVariables(""); - } - - /// @dev Test if there is no oracle proofs - function test_L1_if_there_is_no_oracle_prover_there_is_no_overwrite_at_all() - external - { - // Bob is the oracle prover - registerAddress("oracle_prover", address(0)); - - giveEthAndTko(Alice, 1000 ether, 1000 ether); - console2.log("Alice balance:", tko.balanceOf(Alice)); - // This is a very weird test (code?) issue here. - // If this line is uncommented, - // Alice/Bob has no balance.. (Causing reverts !!!) - // Current investigations are ongoing with foundry team - giveEthAndTko(Bob, 1e6 ether, 100 ether); - console2.log("Bob balance:", tko.balanceOf(Bob)); - giveEthAndTko(Carol, 1e6 ether, 100 ether); - console2.log("Bob balance:", tko.balanceOf(Carol)); - - // Bob - vm.prank(Bob, Bob); - - bytes32 parentHash = GENESIS_BLOCK_HASH; - - for ( - uint256 blockId = 1; blockId < conf.blockMaxProposals * 3; blockId++ - ) { - TaikoData.BlockMetadata memory meta = - proposeBlock(Alice, Bob, 1_000_000, 1024); - printVariables("after propose"); - mine(1); - - bytes32 blockHash = bytes32(1e10 + blockId); - bytes32 signalRoot = bytes32(1e9 + blockId); - - proveBlock(Bob, Bob, meta, parentHash, blockHash, signalRoot); - - // Carol could not overwrite it - vm.expectRevert(TaikoErrors.L1_ALREADY_PROVED.selector); - proveBlock(Carol, Carol, meta, parentHash, blockHash, signalRoot); - - /// @notice: Based on the current codebase we still need to wait - /// even if the system and oracle proofs are disbaled, which - /// @notice: in such case best to set 0 mins (cause noone could - /// overwrite a valid fk). - // TODO - // vm.warp(block.timestamp + conf.proofRegularCooldown); - verifyBlock(Carol, 1); - - parentHash = blockHash; - } - printVariables(""); - } -} diff --git a/packages/protocol/test/L1/TaikoL1TestBase.sol b/packages/protocol/test/L1/TaikoL1TestBase.sol index 69aa06c907..dd34cc23e3 100644 --- a/packages/protocol/test/L1/TaikoL1TestBase.sol +++ b/packages/protocol/test/L1/TaikoL1TestBase.sol @@ -5,11 +5,14 @@ import { TestBase } from "../TestBase.sol"; import { console2 } from "forge-std/console2.sol"; import { AddressManager } from "../../contracts/common/AddressManager.sol"; import { LibProving } from "../../contracts/L1/libs/LibProving.sol"; +import { LibTiers } from "../../contracts/L1/libs/LibTiers.sol"; +import { LibProposing } from "../../contracts/L1/libs/LibProposing.sol"; import { LibUtils } from "../../contracts/L1/libs/LibUtils.sol"; import { TaikoData } from "../../contracts/L1/TaikoData.sol"; import { TaikoL1 } from "../../contracts/L1/TaikoL1.sol"; import { TaikoToken } from "../../contracts/L1/TaikoToken.sol"; - +import { GuardianVerifier } from + "../../contracts/L1/verifiers/GuardianVerifier.sol"; import { PseZkVerifier } from "../../contracts/L1/verifiers/PseZkVerifier.sol"; import { SignalService } from "../../contracts/signal/SignalService.sol"; import { Strings } from "@openzeppelin/contracts/utils/Strings.sol"; @@ -29,6 +32,7 @@ abstract contract TaikoL1TestBase is TestBase { TaikoData.Config conf; uint256 internal logCount; PseZkVerifier public pv; + GuardianVerifier public gv; bytes32 public constant GENESIS_BLOCK_HASH = keccak256("GENESIS_BLOCK_HASH"); // 1 TKO --> it is to huge. It should be in 'wei' (?). @@ -60,17 +64,18 @@ abstract contract TaikoL1TestBase is TestBase { pv = new PseZkVerifier(); pv.init(address(addressManager)); - registerAddress("proof_verifier", address(pv)); + gv = new GuardianVerifier(); + gv.init(address(addressManager)); + + registerAddress("tier_pse_zkevm", address(pv)); + registerAddress("tier_guardian", address(gv)); registerAddress("signal_service", address(ss)); registerAddress("ether_vault", address(L1EthVault)); registerL2Address("treasury", L2Treasury); registerL2Address("taiko", address(TaikoL2)); registerL2Address("signal_service", address(L2SS)); registerL2Address("taiko_l2", address(TaikoL2)); - // TODO - // registerAddress(L1.getVerifierName(100), address(new - // MockVerifier())); - // registerAddress(L1.getVerifierName(0), address(new MockVerifier())); + registerAddress(pv.getVerifierName(300), address(new MockVerifier())); tko = new TaikoToken(); registerAddress("taiko_token", address(tko)); @@ -136,26 +141,28 @@ abstract contract TaikoL1TestBase is TestBase { function proveBlock( address msgSender, - address, /*prover*/ + address prover, TaikoData.BlockMetadata memory meta, bytes32 parentHash, bytes32 blockHash, - bytes32 signalRoot + bytes32 signalRoot, + uint16 tier, + bytes4 revertReason ) internal { TaikoData.BlockEvidence memory evidence = TaikoData.BlockEvidence({ - metaHash: keccak256(abi.encode(meta)), + metaHash: LibProposing.hashMetadata(meta), parentHash: parentHash, blockHash: blockHash, signalRoot: signalRoot, graffiti: 0x0, - tier: 1, + tier: tier, proof: new bytes(102) }); - bytes32 instance; // TODO = LibTransition.getInstance(prover, evidence); - uint16 verifierId = 100; + bytes32 instance = pv.getInstance(prover, evidence); + uint16 verifierId = tier; evidence.proof = bytes.concat( bytes2(verifierId), @@ -166,13 +173,21 @@ abstract contract TaikoL1TestBase is TestBase { new bytes(100) ); - vm.prank(msgSender, msgSender); - //TODO - // L1.proveBlock(meta.id, abi.encode(evidence)); + if (tier == LibTiers.TIER_GUARDIAN) { + evidence.proof = ""; + } + + if (revertReason != "") { + vm.prank(msgSender, msgSender); + vm.expectRevert(revertReason); + L1.proveBlock(meta.id, abi.encode(evidence)); + } else { + vm.prank(msgSender, msgSender); + L1.proveBlock(meta.id, abi.encode(evidence)); + } } - function verifyBlock(address verifier, uint64 count) internal { - vm.prank(verifier, verifier); + function verifyBlock(address, uint64 count) internal { L1.verifyBlocks(count); } From 0be3527fc5c021f552ba809977ba4ffb87a33e28 Mon Sep 17 00:00:00 2001 From: Daniel Wang <99078276+dantaik@users.noreply.github.com> Date: Fri, 22 Sep 2023 18:59:49 +0800 Subject: [PATCH 14/87] fix(protocol): allow prover assignment with different proving fees (#14761) Co-authored-by: Daniel Wang --- packages/protocol/contracts/L1/IProver.sol | 28 -- packages/protocol/contracts/L1/TaikoData.sol | 11 +- .../protocol/contracts/L1/TaikoErrors.sol | 5 +- .../protocol/contracts/L1/TaikoEvents.sol | 7 +- packages/protocol/contracts/L1/TaikoL1.sol | 3 +- .../contracts/L1/libs/LibProposing.sol | 333 ++++++++++-------- .../contracts/L1/libs/LibVerifying.sol | 6 +- .../contracts/common/AddressResolver.sol | 1 - .../protocol/contracts/libs/LibAddress.sol | 47 ++- .../contracts/tokenvault/BaseNFTVault.sol | 12 +- .../contracts/tokenvault/BridgedERC1155.sol | 7 +- .../contracts/tokenvault/BridgedERC20.sol | 5 +- .../contracts/tokenvault/BridgedERC721.sol | 5 +- .../contracts/tokenvault/ERC1155Vault.sol | 11 +- .../contracts/tokenvault/ERC721Vault.sol | 14 +- packages/protocol/test/L1/TaikoL1.t.sol | 1 - .../test/L1/TaikoL1LibProvingWithTiers.t.sol | 2 - packages/protocol/test/L1/TaikoL1TestBase.sol | 15 +- 18 files changed, 271 insertions(+), 242 deletions(-) delete mode 100644 packages/protocol/contracts/L1/IProver.sol diff --git a/packages/protocol/contracts/L1/IProver.sol b/packages/protocol/contracts/L1/IProver.sol deleted file mode 100644 index f666afff33..0000000000 --- a/packages/protocol/contracts/L1/IProver.sol +++ /dev/null @@ -1,28 +0,0 @@ -// SPDX-License-Identifier: MIT -// _____ _ _ _ _ -// |_ _|_ _(_) |_____ | | __ _| |__ ___ -// | |/ _` | | / / _ \ | |__/ _` | '_ (_-< -// |_|\__,_|_|_\_\___/ |____\__,_|_.__/__/ - -pragma solidity ^0.8.20; - -import { TaikoData } from "./TaikoData.sol"; - -/// @title IProver Interface -/// @notice Defines the function that handles prover assignment. -interface IProver { - /// @notice Assigns a prover to a specific block or reverts if this prover - /// is not available. - /// @param blockId The ID of the proposed block. Note that the ID is only - /// known when the block is proposed, therefore, it should not be used for - /// verifying prover authorization. - /// @param txListHash The block's txList hash - /// @param assignment The assignment to evaluate - function onBlockAssigned( - uint64 blockId, - bytes32 txListHash, - TaikoData.ProverAssignment calldata assignment - ) - external - payable; -} diff --git a/packages/protocol/contracts/L1/TaikoData.sol b/packages/protocol/contracts/L1/TaikoData.sol index 10c2ab61f6..9bc888003e 100644 --- a/packages/protocol/contracts/L1/TaikoData.sol +++ b/packages/protocol/contracts/L1/TaikoData.sol @@ -44,8 +44,6 @@ library TaikoData { // --------------------------------------------------------------------- // The amount of Taiko token as a zk proof bond uint96 assignmentBond; - // True to skip proof verification - bool skipAssignmentVerificaiton; // --------------------------------------------------------------------- // Group 4: ETH deposit related configs // --------------------------------------------------------------------- @@ -84,10 +82,17 @@ library TaikoData { } /// @dev Struct representing prover assignment + struct TierFee { + uint16 tier; + uint256 fee; + } + struct ProverAssignment { address prover; + address feeToken; + TierFee[] tierFees; uint64 expiry; - bytes data; + bytes signature; } /// @dev Struct containing data only required for proving a block diff --git a/packages/protocol/contracts/L1/TaikoErrors.sol b/packages/protocol/contracts/L1/TaikoErrors.sol index 7321ed29fd..2bb5986d79 100644 --- a/packages/protocol/contracts/L1/TaikoErrors.sol +++ b/packages/protocol/contracts/L1/TaikoErrors.sol @@ -15,9 +15,12 @@ abstract contract TaikoErrors { // `L1/libs/*.sol`. error L1_ALREADY_CONTESTED(); error L1_ALREADY_PROVED(); + error L1_ASSIGNMENT_EXPIRED(); + error L1_ASSIGNMENT_INVALID_SIG(); + error L1_ASSIGNMENT_INVALID_PARAMS(); + error L1_ASSIGNMENT_INSUFFICIENT_FEE(); error L1_ASSIGNED_PROVER_NOT_ALLOWED(); error L1_BLOCK_MISMATCH(); - error L1_INVALID_ASSIGNMENT(); error L1_INVALID_BLOCK_ID(); error L1_INVALID_CONFIG(); error L1_INVALID_ETH_DEPOSIT(); diff --git a/packages/protocol/contracts/L1/TaikoEvents.sol b/packages/protocol/contracts/L1/TaikoEvents.sol index e78d8ce71b..1cce511414 100644 --- a/packages/protocol/contracts/L1/TaikoEvents.sol +++ b/packages/protocol/contracts/L1/TaikoEvents.sol @@ -17,7 +17,9 @@ import { TaikoData } from "./TaikoData.sol"; abstract contract TaikoEvents { /// @dev Emitted when a block is proposed. /// @param blockId The ID of the proposed block. - /// @param assignedProver The block's assigned prover + /// @param assignedProver The block's assigned prover. + /// @param assignmentBond The bond in Taiko token from the assigned prover. + /// @param proverFee The fee paid to the assigned prover. /// @param reward The proposer's block reward in Taiko token. /// @param meta The block metadata containing information about the proposed /// block. @@ -25,13 +27,14 @@ abstract contract TaikoEvents { uint256 indexed blockId, address indexed assignedProver, uint96 assignmentBond, + uint256 proverFee, uint256 reward, TaikoData.BlockMetadata meta ); /// @dev Emitted when a block is verified. /// @param blockId The ID of the verified block. - /// @param assignedProver The block's assigned prover + /// @param assignedProver The block's assigned prover. /// @param prover The prover whose transition is used for verifing the /// block. /// @param blockHash The hash of the verified block. diff --git a/packages/protocol/contracts/L1/TaikoL1.sol b/packages/protocol/contracts/L1/TaikoL1.sol index 95481a8293..7bb377ce37 100644 --- a/packages/protocol/contracts/L1/TaikoL1.sol +++ b/packages/protocol/contracts/L1/TaikoL1.sol @@ -267,7 +267,6 @@ contract TaikoL1 is proposerRewardPerSecond: 25e16, // 0.25 Taiko token proposerRewardMax: 32e18, // 32 Taiko token assignmentBond: 10_240e18, - skipAssignmentVerificaiton: false, ethDepositRingBufferSize: 1024, ethDepositMinCountPerBlock: 8, ethDepositMaxCountPerBlock: 32, @@ -279,6 +278,6 @@ contract TaikoL1 is } } -/// @title TaikoL1 +/// @title ProxiedTaikoL1 /// @notice Proxied version of the parent contract. contract ProxiedTaikoL1 is Proxied, TaikoL1 { } diff --git a/packages/protocol/contracts/L1/libs/LibProposing.sol b/packages/protocol/contracts/L1/libs/LibProposing.sol index fe91ccce0a..e65b8e64c2 100644 --- a/packages/protocol/contracts/L1/libs/LibProposing.sol +++ b/packages/protocol/contracts/L1/libs/LibProposing.sol @@ -6,12 +6,10 @@ pragma solidity ^0.8.20; -import { Address } from "@openzeppelin/contracts/utils/Address.sol"; import { AddressResolver } from "../../common/AddressResolver.sol"; -import { ECDSA } from "@openzeppelin/contracts/utils/cryptography/ECDSA.sol"; -import { IERC1271 } from "@openzeppelin/contracts/interfaces/IERC1271.sol"; +import { ERC20Upgradeable } from + "@openzeppelin/contracts-upgradeable/token/ERC20/ERC20Upgradeable.sol"; import { IMintableERC20 } from "../../common/IMintableERC20.sol"; -import { IProver } from "../IProver.sol"; import { LibAddress } from "../../libs/LibAddress.sol"; import { LibDepositing } from "./LibDepositing.sol"; import { LibMath } from "../../libs/LibMath.sol"; @@ -23,25 +21,25 @@ import { TaikoToken } from "../TaikoToken.sol"; /// @title LibProposing /// @notice A library for handling block proposals in the Taiko protocol. library LibProposing { - using Address for address; - using ECDSA for bytes32; using LibAddress for address; - using LibAddress for address payable; using LibMath for uint256; - bytes4 internal constant EIP1271_MAGICVALUE = 0x1626ba7e; - // Warning: Any events defined here must also be defined in TaikoEvents.sol. event BlockProposed( uint256 indexed blockId, address indexed assignedProver, uint96 assignmentBond, + uint256 proverFee, uint256 reward, TaikoData.BlockMetadata meta ); // Warning: Any errors defined here must also be defined in TaikoErrors.sol. - error L1_INVALID_ASSIGNMENT(); + error L1_ASSIGNMENT_EXPIRED(); + error L1_ASSIGNMENT_INVALID_SIG(); + error L1_ASSIGNMENT_INVALID_PARAMS(); + error L1_ASSIGNMENT_INSUFFICIENT_FEE(); + error L1_TIER_NOT_FOUND(); error L1_TOO_MANY_BLOCKS(); error L1_TXLIST_INVALID_RANGE(); error L1_TXLIST_MISMATCH(); @@ -80,16 +78,6 @@ library LibProposing { revert L1_TXLIST_MISMATCH(); } - // Every proposed block in Taiko must include a non-zero prover referred - // to as the "assigned prover." We enforce that the assigned prover must - // indeed be non-zero, and the prover assignment has not expired. - if ( - assignment.prover == address(0) - || assignment.expiry <= block.timestamp - ) { - revert L1_INVALID_ASSIGNMENT(); - } - // It's essential to ensure that the ring buffer for proposed blocks // still has space for at least one more block. TaikoData.SlotB memory b = state.slotB; @@ -98,62 +86,6 @@ library LibProposing { revert L1_TOO_MANY_BLOCKS(); } - // The assigned prover burns Taiko tokens, referred to as the - // "assignment bond." This bond remains non-refundable to the assigned - // prover under two conditions: if the block's verification transition - // is not the initial one or if it was generated and validated by - // different provers. Instead, a portion of the assignment bond serves - // as a reward for the actual prover. - TaikoToken tt = TaikoToken(resolver.resolve("taiko_token", false)); - tt.burn(assignment.prover, config.assignmentBond); - - // It is now essential to verify that the assignment has received proper - // authorization. - if (config.skipAssignmentVerificaiton) { - // For testing only - assignment.prover.sendEther(msg.value); - } else if (!assignment.prover.isContract()) { - // To verify an EOA (Externally Owned Account) prover, we perform a - // straightforward check of an ECDSA signature. - if ( - _hashAssignment(txListHash, assignment).recover(assignment.data) - != assignment.prover - ) { - revert L1_INVALID_ASSIGNMENT(); - } - assignment.prover.sendEther(msg.value); - } else if ( - assignment.prover.supportsInterface(type(IProver).interfaceId) - ) { - // When the prover's address corresponds to an IProver contract, we - // transfer Ether and invoke its "onBlockAssigned" function for - // verification. Within this function, the prover has the option to - // charge other tokens like ERC20 or NFT as prooving fees, so the - // value of msg.value can be zero. Taiko does not mandate Ether as - // the exclusive proofing fees. - - IProver(assignment.prover).onBlockAssigned{ value: msg.value }({ - blockId: b.numBlocks, - txListHash: txListHash, - assignment: assignment - }); - } else if ( - assignment.prover.supportsInterface(type(IERC1271).interfaceId) - ) { - // If the prover is a contract implementing EIP1271, we invoke its - // "isValidSignature" function for ECDSA signature verification. - if ( - IERC1271(assignment.prover).isValidSignature( - _hashAssignment(txListHash, assignment), assignment.data - ) != EIP1271_MAGICVALUE - ) { - revert L1_INVALID_ASSIGNMENT(); - } - assignment.prover.sendEther(msg.value); - } else { - revert L1_INVALID_ASSIGNMENT(); - } - // In situations where the network lacks sufficient transactions for the // proposer to profit, they are still obligated to pay the prover the // proving fee, which can be a substantial cost compared to the total L2 @@ -161,10 +93,12 @@ library LibProposing { // Taiko tokens per second as block rewards. It's important to note that // if multiple blocks are proposed within the same L1 block, only the // first one will receive the block reward. + TaikoToken tt = TaikoToken(resolver.resolve("taiko_token", false)); // The block reward doesn't undergo automatic halving; instead, we // depend on Taiko DAO to make necessary adjustments to the rewards. uint256 reward; + if (config.proposerRewardPerSecond > 0 && config.proposerRewardMax > 0) { // Unchecked is safe as block.timestamp is always greater than @@ -185,90 +119,98 @@ library LibProposing { } } - // Unchecked is safe: - // - equation is done among same variable types - // - incrementation (state.slotB.numBlocks++) is fine for 584K years if - // we propose at every second + // Initialize metadata to compute a metaHash, which forms a part of + // the block data to be stored on-chain for future integrity checks. + // If we choose to persist all data fields in the metadata, it will + // require additional storage slots. + meta.l1Hash = blockhash(meta.l1Height); + + // Following the Merge, the L1 mixHash incorporates the prevrandao + // value from the beacon chain. Given the possibility of multiple + // Taiko blocks being proposed within a single Ethereum block, we + // must introduce a salt to this random number as the L2 mixHash. unchecked { - // Initialize metadata to compute a metaHash, which forms a part of - // the block data to be stored on-chain for future integrity checks. - // If we choose to persist all data fields in the metadata, it will - // require additional storage slots. - meta.l1Hash = blockhash(meta.l1Height); - - // Following the Merge, the L1 mixHash incorporates the prevrandao - // value from the beacon chain. Given the possibility of multiple - // Taiko blocks being proposed within a single Ethereum block, we - // must introduce a salt to this random number as the L2 mixHash. meta.mixHash = bytes32(block.prevrandao * b.numBlocks); - - meta.txListHash = txListHash; - meta.id = b.numBlocks; - meta.timestamp = uint64(block.timestamp); meta.l1Height = uint64(block.number - 1); - meta.gasLimit = config.blockMaxGasLimit; - - // Each transaction must handle a specific quantity of L1-to-L2 - // Ether deposits. - meta.depositsProcessed = - LibDepositing.processDeposits(state, config, msg.sender); - - // Now, it's essential to initialize the block that will be stored - // on L1. We should aim to utilize as few storage slots as possible, - // alghouth using a ring buffer can minimize storage writes once - // the buffer reaches its capacity. - TaikoData.Block storage blk = - state.blocks[b.numBlocks % config.blockRingBufferSize]; - - // Please note that all fields must be re-initialized since we are - // utilizing an existing ring buffer slot, not creating a new - // storage slot. - blk.metaHash = hashMetadata(meta); - blk.assignedProver = assignment.prover; - - // Safeguard the assignment bond to ensure its preservation, - // particularly in scenarios where it might be altered after the - // block's proposal but before it has been proven or verified. - blk.assignmentBond = config.assignmentBond; - blk.blockId = b.numBlocks; - blk.proposedAt = meta.timestamp; - - // For a new block, the next transition ID is always 1, not 0. - blk.nextTransitionId = 1; - - // For unverified block, its verifiedTransitionId is always 0. - blk.verifiedTransitionId = 0; - - // The LibTiers play a crucial role in determining the minimum tier - // required for the block's validity proof. It's imperative to - // maintain a certain percentage of blocks for each tier to ensure - // that provers are consistently available when needed. - blk.minTier = LibTiers.getMinTier(uint256(blk.metaHash)); - - // Increment the counter (cursor) by 1. - ++state.slotB.numBlocks; + } + + meta.txListHash = txListHash; + meta.id = b.numBlocks; + meta.timestamp = uint64(block.timestamp); + meta.gasLimit = config.blockMaxGasLimit; + + // Each transaction must handle a specific quantity of L1-to-L2 + // Ether deposits. + meta.depositsProcessed = + LibDepositing.processDeposits(state, config, msg.sender); + + // Now, it's essential to initialize the block that will be stored + // on L1. We should aim to utilize as few storage slots as possible, + // alghouth using a ring buffer can minimize storage writes once + // the buffer reaches its capacity. + TaikoData.Block storage blk = + state.blocks[b.numBlocks % config.blockRingBufferSize]; + + // Please note that all fields must be re-initialized since we are + // utilizing an existing ring buffer slot, not creating a new storage + // slot. + blk.metaHash = hashMetadata(meta); + + // Safeguard the assignment bond to ensure its preservation, + // particularly in scenarios where it might be altered after the + // block's proposal but before it has been proven or verified. + blk.assignmentBond = config.assignmentBond; + blk.blockId = b.numBlocks; + blk.proposedAt = meta.timestamp; + + // For a new block, the next transition ID is always 1, not 0. + blk.nextTransitionId = 1; + + // For unverified block, its verifiedTransitionId is always 0. + blk.verifiedTransitionId = 0; + + // The LibTiers play a crucial role in determining the minimum tier + // required for the block's validity proof. It's imperative to + // maintain a certain percentage of blocks for each tier to ensure + // that provers are consistently available when needed. + blk.minTier = LibTiers.getMinTier(uint256(blk.metaHash)); + + // Verify assignment authorization; if prover's address is an IProver + // contract, transfer Ether and call "validateAssignment" for + // verification. + // Prover can charge ERC20/NFT as fees; msg.value can be zero. Taiko + // doesn't mandate Ether as the only proofing fee. + blk.assignedProver = assignment.prover; - emit BlockProposed({ - blockId: blk.blockId, - assignedProver: assignment.prover, - assignmentBond: config.assignmentBond, - reward: reward, - meta: meta - }); + // The assigned prover burns Taiko tokens, referred to as the + // "assignment bond." This bond remains non-refundable to the + // assigned prover under two conditions: if the block's verification + // transition is not the initial one or if it was generated and + // validated by different provers. Instead, a portion of the assignment + // bond serves as a reward for the actual prover. + tt.burn(blk.assignedProver, config.assignmentBond); + + // Increment the counter (cursor) by 1. + unchecked { + ++state.slotB.numBlocks; } - } - function _hashAssignment( - bytes32 txListHash, - TaikoData.ProverAssignment memory assignment - ) - private - view - returns (bytes32) - { - return keccak256( - abi.encodePacked(txListHash, msg.value, assignment.expiry) - ); + // Validate the prover assignment, then charge Ether or ERC20 as the + // prover fee based on the block's minTier. + uint256 proverFee = _validateAssignment({ + minTier: blk.minTier, + txListHash: txListHash, + assignment: assignment + }); + + emit BlockProposed({ + blockId: blk.blockId, + assignedProver: blk.assignedProver, + assignmentBond: config.assignmentBond, + proverFee: proverFee, + reward: reward, + meta: meta + }); } /// @dev Hashing the block metadata. @@ -289,4 +231,87 @@ library LibProposing { hash := keccak256(inputs, mul(5, 32)) } } + + function hashAssignmentForTxList( + TaikoData.ProverAssignment memory assignment, + bytes32 txListHash + ) + internal + pure + returns (bytes32) + { + return keccak256( + abi.encode( + "PROVER_ASSIGNMENT", + txListHash, + assignment.feeToken, + assignment.expiry, + assignment.tierFees + ) + ); + } + + function _validateAssignment( + uint16 minTier, + bytes32 txListHash, + TaikoData.ProverAssignment memory assignment + ) + private + returns (uint256 proverFee) + { + // Check assignment not expired + if (block.timestamp >= assignment.expiry) { + revert L1_ASSIGNMENT_EXPIRED(); + } + + if (txListHash == 0 || assignment.prover == address(0)) { + revert L1_ASSIGNMENT_INVALID_PARAMS(); + } + + // Hash the assignment with the txListHash, this hash will be signed by + // the prover, therefore, we add a string as a prefix. + bytes32 hash = hashAssignmentForTxList(assignment, txListHash); + + if (!assignment.prover.isValidSignature(hash, assignment.signature)) { + revert L1_ASSIGNMENT_INVALID_SIG(); + } + + // Find the prover fee using the minimal tier + proverFee = _getProverFee(assignment.tierFees, minTier); + + // The proposer irrevocably pays a fee to the assigned prover, either in + // Ether or ERC20 tokens. + if (assignment.feeToken == address(0)) { + // Paying Ether + if (msg.value < proverFee) revert L1_ASSIGNMENT_INSUFFICIENT_FEE(); + assignment.prover.sendEther(proverFee); + unchecked { + // Return the extra Ether to the proposer + uint256 refund = msg.value - proverFee; + if (refund != 0) msg.sender.sendEther(refund); + } + } else { + // Paying ERC20 tokens + if (msg.value != 0) msg.sender.sendEther(msg.value); + ERC20Upgradeable(assignment.feeToken).transferFrom( + msg.sender, assignment.prover, proverFee + ); + } + } + + function _getProverFee( + TaikoData.TierFee[] memory tierFees, + uint16 tierId + ) + private + pure + returns (uint256) + { + for (uint256 i; i < tierFees.length; ++i) { + if (tierFees[i].tier == tierId) { + return tierFees[i].fee; + } + } + revert L1_TIER_NOT_FOUND(); + } } diff --git a/packages/protocol/contracts/L1/libs/LibVerifying.sol b/packages/protocol/contracts/L1/libs/LibVerifying.sol index b05a619c09..50ca210301 100644 --- a/packages/protocol/contracts/L1/libs/LibVerifying.sol +++ b/packages/protocol/contracts/L1/libs/LibVerifying.sol @@ -6,10 +6,10 @@ pragma solidity ^0.8.20; -import { Address } from "@openzeppelin/contracts/utils/Address.sol"; +import { AddressUpgradeable } from + "@openzeppelin/contracts-upgradeable/utils/AddressUpgradeable.sol"; import { AddressResolver } from "../../common/AddressResolver.sol"; import { IMintableERC20 } from "../../common/IMintableERC20.sol"; -import { IProver } from "../IProver.sol"; import { ISignalService } from "../../signal/ISignalService.sol"; import { LibMath } from "../../libs/LibMath.sol"; import { LibUtils } from "./LibUtils.sol"; @@ -20,7 +20,7 @@ import { TaikoToken } from "../TaikoToken.sol"; /// @title LibVerifying /// @notice A library for handling block verification in the Taiko protocol. library LibVerifying { - using Address for address; + using AddressUpgradeable for address; using LibMath for uint256; // Warning: Any events defined here must also be defined in TaikoEvents.sol. diff --git a/packages/protocol/contracts/common/AddressResolver.sol b/packages/protocol/contracts/common/AddressResolver.sol index 82befee396..d58343de74 100644 --- a/packages/protocol/contracts/common/AddressResolver.sol +++ b/packages/protocol/contracts/common/AddressResolver.sol @@ -7,7 +7,6 @@ pragma solidity ^0.8.20; import { IAddressManager } from "./AddressManager.sol"; -import { Strings } from "@openzeppelin/contracts/utils/Strings.sol"; /// @title AddressResolver /// @notice This contract acts as a bridge for name-to-address resolution. diff --git a/packages/protocol/contracts/libs/LibAddress.sol b/packages/protocol/contracts/libs/LibAddress.sol index 3aabb8e2d1..87b0e9312e 100644 --- a/packages/protocol/contracts/libs/LibAddress.sol +++ b/packages/protocol/contracts/libs/LibAddress.sol @@ -6,27 +6,24 @@ pragma solidity ^0.8.20; +import { AddressUpgradeable } from + "@openzeppelin/contracts-upgradeable/utils/AddressUpgradeable.sol"; +import { ECDSAUpgradeable } from + "@openzeppelin/contracts-upgradeable/utils/cryptography/ECDSAUpgradeable.sol"; import { IERC165Upgradeable } from "@openzeppelin/contracts-upgradeable/utils/introspection/IERC165Upgradeable.sol"; - +import { IERC1271Upgradeable } from + "@openzeppelin/contracts-upgradeable/interfaces/IERC1271Upgradeable.sol"; /// @title LibAddress /// @dev Provides utilities for address-related operations. -library LibAddress { - /// @dev Sends Ether to the specified address. It is recommended to avoid - /// using `.transfer()` due to potential reentrancy issues. - /// Reference: - /// https://consensys.net/diligence/blog/2019/09/stop-using-soliditys-transfer-now - /// @param to The recipient address. - /// @param amount The amount of Ether to send in wei. - function sendEther(address to, uint256 amount) internal { - // Check for zero-value or zero-address transactions - if (amount == 0 || to == address(0)) return; - // Attempt to send Ether to the recipient address - (bool success,) = payable(to).call{ value: amount }(""); +library LibAddress { + bytes4 private constant EIP1271_MAGICVALUE = 0x1626ba7e; - // Ensure the transfer was successful - require(success, "ETH transfer failed"); + /// @dev Wrap this into a new function so the parameter `to` is `address` + /// instead of `address payable`. + function sendEther(address to, uint256 amount) internal { + AddressUpgradeable.sendValue(payable(to), amount); } function supportsInterface( @@ -43,4 +40,24 @@ library LibAddress { result = _result; } catch { } } + + function isValidSignature( + address addr, + bytes32 hash, + bytes memory sig + ) + internal + view + returns (bool valid) + { + if ( + AddressUpgradeable.isContract(addr) + && IERC1271Upgradeable(addr).isValidSignature(hash, sig) + == EIP1271_MAGICVALUE + ) { + valid = true; + } else if (ECDSAUpgradeable.recover(hash, sig) == addr) { + valid = true; + } + } } diff --git a/packages/protocol/contracts/tokenvault/BaseNFTVault.sol b/packages/protocol/contracts/tokenvault/BaseNFTVault.sol index b7dd9d3c0e..51cd2afbc1 100644 --- a/packages/protocol/contracts/tokenvault/BaseNFTVault.sol +++ b/packages/protocol/contracts/tokenvault/BaseNFTVault.sol @@ -7,12 +7,12 @@ pragma solidity ^0.8.20; import { EssentialContract } from "../common/EssentialContract.sol"; -import { IERC1155Receiver } from - "@openzeppelin/contracts/token/ERC1155/IERC1155Receiver.sol"; -import { IERC165 } from - "@openzeppelin/contracts/utils/introspection/IERC165.sol"; -import { IERC721Receiver } from - "@openzeppelin/contracts/token/ERC721/IERC721Receiver.sol"; +import { IERC1155ReceiverUpgradeable } from + "@openzeppelin/contracts-upgradeable/token/ERC1155/IERC1155ReceiverUpgradeable.sol"; +import { IERC165Upgradeable } from + "@openzeppelin/contracts-upgradeable/utils/introspection/IERC165Upgradeable.sol"; +import { IERC721ReceiverUpgradeable } from + "@openzeppelin/contracts-upgradeable/token/ERC721/IERC721ReceiverUpgradeable.sol"; import { IERC721Upgradeable } from "@openzeppelin/contracts-upgradeable/token/ERC721/IERC721Upgradeable.sol"; import { IRecallableMessageSender, IBridge } from "../bridge/IBridge.sol"; diff --git a/packages/protocol/contracts/tokenvault/BridgedERC1155.sol b/packages/protocol/contracts/tokenvault/BridgedERC1155.sol index f0a3d4b8b1..85a94693f1 100644 --- a/packages/protocol/contracts/tokenvault/BridgedERC1155.sol +++ b/packages/protocol/contracts/tokenvault/BridgedERC1155.sol @@ -14,7 +14,8 @@ import { IERC1155MetadataURIUpgradeable } from import { IERC1155Upgradeable } from "@openzeppelin/contracts-upgradeable/token/ERC1155/IERC1155Upgradeable.sol"; import { Proxied } from "../common/Proxied.sol"; -import { Strings } from "@openzeppelin/contracts/utils/Strings.sol"; +import { StringsUpgradeable } from + "@openzeppelin/contracts-upgradeable/utils/StringsUpgradeable.sol"; /// @title BridgedERC1155 /// @notice Contract for bridging ERC1155 tokens across different chains. @@ -132,7 +133,9 @@ contract BridgedERC1155 is /// @notice Gets the concatenated name of the bridged token. /// @return The concatenated name. function name() public view returns (string memory) { - return string.concat(name_, unicode" ⭀", Strings.toString(srcChainId)); + return string.concat( + name_, unicode" ⭀", StringsUpgradeable.toString(srcChainId) + ); } } diff --git a/packages/protocol/contracts/tokenvault/BridgedERC20.sol b/packages/protocol/contracts/tokenvault/BridgedERC20.sol index d3b7b709d0..a6edb8dfaf 100644 --- a/packages/protocol/contracts/tokenvault/BridgedERC20.sol +++ b/packages/protocol/contracts/tokenvault/BridgedERC20.sol @@ -15,7 +15,8 @@ import { IERC20MetadataUpgradeable } from import { EssentialContract } from "../common/EssentialContract.sol"; import { IMintableERC20 } from "../common/IMintableERC20.sol"; import { Proxied } from "../common/Proxied.sol"; -import { Strings } from "@openzeppelin/contracts/utils/Strings.sol"; +import { StringsUpgradeable } from + "@openzeppelin/contracts-upgradeable/utils/StringsUpgradeable.sol"; /// @title BridgedERC20 /// @notice An upgradeable ERC20 contract that represents tokens bridged from @@ -153,7 +154,7 @@ contract BridgedERC20 is returns (string memory) { return string.concat( - super.name(), unicode" ⭀", Strings.toString(srcChainId) + super.name(), unicode" ⭀", StringsUpgradeable.toString(srcChainId) ); } diff --git a/packages/protocol/contracts/tokenvault/BridgedERC721.sol b/packages/protocol/contracts/tokenvault/BridgedERC721.sol index 9acc311e14..e5e05041b9 100644 --- a/packages/protocol/contracts/tokenvault/BridgedERC721.sol +++ b/packages/protocol/contracts/tokenvault/BridgedERC721.sol @@ -10,7 +10,8 @@ import { EssentialContract } from "../common/EssentialContract.sol"; import { ERC721Upgradeable } from "@openzeppelin/contracts-upgradeable/token/ERC721/ERC721Upgradeable.sol"; import { Proxied } from "../common/Proxied.sol"; -import { Strings } from "@openzeppelin/contracts/utils/Strings.sol"; +import { StringsUpgradeable } from + "@openzeppelin/contracts-upgradeable/utils/StringsUpgradeable.sol"; /// @title BridgedERC721 /// @notice Contract for bridging ERC721 tokens across different chains. @@ -113,7 +114,7 @@ contract BridgedERC721 is EssentialContract, ERC721Upgradeable { returns (string memory) { return string.concat( - super.name(), unicode" ⭀", Strings.toString(srcChainId) + super.name(), unicode" ⭀", StringsUpgradeable.toString(srcChainId) ); } diff --git a/packages/protocol/contracts/tokenvault/ERC1155Vault.sol b/packages/protocol/contracts/tokenvault/ERC1155Vault.sol index d8ebe76831..ef53c26865 100644 --- a/packages/protocol/contracts/tokenvault/ERC1155Vault.sol +++ b/packages/protocol/contracts/tokenvault/ERC1155Vault.sol @@ -12,19 +12,16 @@ import { ERC1155ReceiverUpgradeable } from "@openzeppelin/contracts-upgradeable/token/ERC1155/utils/ERC1155ReceiverUpgradeable.sol"; import { ERC1155Upgradeable } from "@openzeppelin/contracts-upgradeable/token/ERC1155/ERC1155Upgradeable.sol"; -import { IERC1155Receiver } from - "@openzeppelin/contracts/token/ERC1155/IERC1155Receiver.sol"; +import { IERC1155ReceiverUpgradeable } from + "@openzeppelin/contracts-upgradeable/token/ERC1155/IERC1155ReceiverUpgradeable.sol"; import { IERC1155Upgradeable } from "@openzeppelin/contracts-upgradeable/token/ERC1155/IERC1155Upgradeable.sol"; -import { IERC165Upgradeable } from - "@openzeppelin/contracts-upgradeable/utils/introspection/IERC165Upgradeable.sol"; import { IRecallableMessageSender, IBridge } from "../bridge/IBridge.sol"; import { BaseNFTVault } from "./BaseNFTVault.sol"; import { LibAddress } from "../libs/LibAddress.sol"; import { LibVaultUtils } from "./libs/LibVaultUtils.sol"; import { Proxied } from "../common/Proxied.sol"; import { ProxiedBridgedERC1155 } from "./BridgedERC1155.sol"; -import { Strings } from "@openzeppelin/contracts/utils/Strings.sol"; /// @title ERC1155NameAndSymbol /// @notice Interface for ERC1155 contracts that provide name() and symbol() @@ -231,7 +228,7 @@ contract ERC1155Vault is BaseNFTVault, ERC1155ReceiverUpgradeable { pure returns (bytes4) { - return IERC1155Receiver.onERC1155BatchReceived.selector; + return IERC1155ReceiverUpgradeable.onERC1155BatchReceived.selector; } function onERC1155Received( @@ -245,7 +242,7 @@ contract ERC1155Vault is BaseNFTVault, ERC1155ReceiverUpgradeable { pure returns (bytes4) { - return IERC1155Receiver.onERC1155Received.selector; + return IERC1155ReceiverUpgradeable.onERC1155Received.selector; } /// @dev See {IERC165-supportsInterface}. diff --git a/packages/protocol/contracts/tokenvault/ERC721Vault.sol b/packages/protocol/contracts/tokenvault/ERC721Vault.sol index 70b2fa029e..cd1a94ecda 100644 --- a/packages/protocol/contracts/tokenvault/ERC721Vault.sol +++ b/packages/protocol/contracts/tokenvault/ERC721Vault.sol @@ -13,8 +13,8 @@ import { ERC721Upgradeable } from "@openzeppelin/contracts-upgradeable/token/ERC721/ERC721Upgradeable.sol"; import { IERC165Upgradeable } from "@openzeppelin/contracts-upgradeable/utils/introspection/IERC165Upgradeable.sol"; -import { IERC721Receiver } from - "@openzeppelin/contracts/token/ERC721/IERC721Receiver.sol"; +import { IERC721ReceiverUpgradeable } from + "@openzeppelin/contracts-upgradeable/token/ERC721/IERC721ReceiverUpgradeable.sol"; import { IERC721Upgradeable } from "@openzeppelin/contracts-upgradeable/token/ERC721/IERC721Upgradeable.sol"; import { IBridge, IRecallableMessageSender } from "../bridge/IBridge.sol"; @@ -27,7 +27,11 @@ import { ProxiedBridgedERC721 } from "./BridgedERC721.sol"; /// @notice This vault holds all ERC721 tokens that users have deposited. /// It also manages the mapping between canonical tokens and their bridged /// tokens. -contract ERC721Vault is BaseNFTVault, IERC721Receiver, IERC165Upgradeable { +contract ERC721Vault is + BaseNFTVault, + IERC721ReceiverUpgradeable, + IERC165Upgradeable +{ using LibAddress for address; uint256[50] private __gap; @@ -193,7 +197,7 @@ contract ERC721Vault is BaseNFTVault, IERC721Receiver, IERC165Upgradeable { }); } - /// @inheritdoc IERC721Receiver + /// @inheritdoc IERC721ReceiverUpgradeable function onERC721Received( address, address, @@ -204,7 +208,7 @@ contract ERC721Vault is BaseNFTVault, IERC721Receiver, IERC165Upgradeable { pure returns (bytes4) { - return IERC721Receiver.onERC721Received.selector; + return IERC721ReceiverUpgradeable.onERC721Received.selector; } /// @inheritdoc IERC165Upgradeable diff --git a/packages/protocol/test/L1/TaikoL1.t.sol b/packages/protocol/test/L1/TaikoL1.t.sol index b71e532b0e..79f4a7a633 100644 --- a/packages/protocol/test/L1/TaikoL1.t.sol +++ b/packages/protocol/test/L1/TaikoL1.t.sol @@ -26,7 +26,6 @@ contract TaikoL1_NoCooldown is TaikoL1 { config.blockMaxVerificationsPerTx = 0; config.blockMaxProposals = 10; config.blockRingBufferSize = 12; - config.skipAssignmentVerificaiton = true; config.assignmentBond = 1e18; // 1 Taiko token config.proposerRewardPerSecond = 1e15; // 0.001 Taiko token } diff --git a/packages/protocol/test/L1/TaikoL1LibProvingWithTiers.t.sol b/packages/protocol/test/L1/TaikoL1LibProvingWithTiers.t.sol index 028fbca064..f5e73583de 100644 --- a/packages/protocol/test/L1/TaikoL1LibProvingWithTiers.t.sol +++ b/packages/protocol/test/L1/TaikoL1LibProvingWithTiers.t.sol @@ -28,8 +28,6 @@ contract TaikoL1Tiers is TaikoL1 { config.blockMaxVerificationsPerTx = 0; config.blockMaxProposals = 10; config.blockRingBufferSize = 12; - // config.proofRegularCooldown = 15 minutes; - config.skipAssignmentVerificaiton = true; config.assignmentBond = 1e18; // 1 Taiko token config.proposerRewardPerSecond = 1e15; // 0.001 Taiko token } diff --git a/packages/protocol/test/L1/TaikoL1TestBase.sol b/packages/protocol/test/L1/TaikoL1TestBase.sol index dd34cc23e3..53f24a1544 100644 --- a/packages/protocol/test/L1/TaikoL1TestBase.sol +++ b/packages/protocol/test/L1/TaikoL1TestBase.sol @@ -112,12 +112,15 @@ abstract contract TaikoL1TestBase is TestBase { internal returns (TaikoData.BlockMetadata memory meta) { - TaikoData.ProverAssignment memory assignment = TaikoData - .ProverAssignment({ - prover: prover, - expiry: uint64(block.timestamp + 60 minutes), - data: new bytes(0) - }); + TaikoData.ProverAssignment memory assignment; + + // TODO + // = TaikoData + // .ProverAssignment({ + // prover: prover, + // expiry: uint64(block.timestamp + 60 minutes), + // data: new bytes(0) + // }); bytes memory txList = new bytes(txListSize); From e86320fd3d5bb1b3c65bdf9538a50cf697b528d0 Mon Sep 17 00:00:00 2001 From: Daniel Wang <99078276+dantaik@users.noreply.github.com> Date: Fri, 22 Sep 2023 21:43:10 +0800 Subject: [PATCH 15/87] feat(protocol): extract tier configs into a provider contract for decoupling (#14778) Co-authored-by: Daniel Wang --- packages/protocol/contracts/L1/TaikoData.sol | 8 -- packages/protocol/contracts/L1/TaikoL1.sol | 35 ++++++-- .../contracts/L1/libs/LibProposing.sol | 7 +- .../protocol/contracts/L1/libs/LibProving.sol | 6 +- .../protocol/contracts/L1/libs/LibTiers.sol | 85 ------------------- .../contracts/L1/libs/LibVerifying.sol | 13 +-- .../contracts/L1/tiers/ITierProvider.sol | 35 ++++++++ .../contracts/L1/tiers/OPL2ConfigProvider.sol | 84 ++++++++++++++++++ .../contracts/L1/tiers/ZKL2ConfigProvider.sol | 60 +++++++++++++ packages/protocol/test/L1/TaikoL1.t.sol | 16 +--- .../test/L1/TaikoL1LibProvingWithTiers.t.sol | 58 +++---------- packages/protocol/test/L1/TaikoL1TestBase.sol | 2 +- 12 files changed, 240 insertions(+), 169 deletions(-) delete mode 100644 packages/protocol/contracts/L1/libs/LibTiers.sol create mode 100644 packages/protocol/contracts/L1/tiers/ITierProvider.sol create mode 100644 packages/protocol/contracts/L1/tiers/OPL2ConfigProvider.sol create mode 100644 packages/protocol/contracts/L1/tiers/ZKL2ConfigProvider.sol diff --git a/packages/protocol/contracts/L1/TaikoData.sol b/packages/protocol/contracts/L1/TaikoData.sol index 9bc888003e..81c5b7ac01 100644 --- a/packages/protocol/contracts/L1/TaikoData.sol +++ b/packages/protocol/contracts/L1/TaikoData.sol @@ -63,14 +63,6 @@ library TaikoData { uint256 ethDepositMaxFee; } - struct TierConfig { - bytes32 verifierName; - uint96 proofBond; - uint96 contestBond; - uint24 cooldownWindow; - uint16 provingWindow; - } - /// @dev Struct holding state variables. struct StateVariables { uint64 genesisHeight; diff --git a/packages/protocol/contracts/L1/TaikoL1.sol b/packages/protocol/contracts/L1/TaikoL1.sol index 7bb377ce37..7ff254f6e7 100644 --- a/packages/protocol/contracts/L1/TaikoL1.sol +++ b/packages/protocol/contracts/L1/TaikoL1.sol @@ -12,13 +12,13 @@ import { ICrossChainSync } from "../common/ICrossChainSync.sol"; import { LibDepositing } from "./libs/LibDepositing.sol"; import { LibProposing } from "./libs/LibProposing.sol"; import { LibProving } from "./libs/LibProving.sol"; -import { LibTiers } from "./libs/LibTiers.sol"; import { LibUtils } from "./libs/LibUtils.sol"; import { LibVerifying } from "./libs/LibVerifying.sol"; import { Proxied } from "../common/Proxied.sol"; import { TaikoData } from "./TaikoData.sol"; import { TaikoErrors } from "./TaikoErrors.sol"; import { TaikoEvents } from "./TaikoEvents.sol"; +import { ITierProvider } from "./tiers/ITierProvider.sol"; /// @title TaikoL1 /// @notice This contract serves as the "base layer contract" of the Taiko @@ -30,6 +30,7 @@ import { TaikoEvents } from "./TaikoEvents.sol"; contract TaikoL1 is EssentialContract, ICrossChainSync, + ITierProvider, TaikoEvents, TaikoErrors { @@ -229,20 +230,38 @@ contract TaikoL1 is /// @notice Retrieves the configuration for a specified tier. /// @param tierId ID of the tier. - /// @return TierConfig struct containing the tier's parameters. This + /// @return Tier struct containing the tier's parameters. This /// function will revert if the tier is not supported. - function getTierConfig(uint16 tierId) + function getTier(uint16 tierId) public - pure + view virtual - returns (TaikoData.TierConfig memory) + override + returns (ITierProvider.Tier memory) { - return LibTiers.getTierConfig(tierId); + return ITierProvider(resolve("tier_provider", false)).getTier(tierId); } /// @notice Retrieves the IDs of all supported tiers. - function getTierIds() public pure virtual returns (uint16[] memory) { - return LibTiers.getTierIds(); + function getTierIds() + public + view + virtual + override + returns (uint16[] memory) + { + return ITierProvider(resolve("tier_provider", false)).getTierIds(); + } + + /// @notice Determines the minimal tier for a block based on a random input. + function getMinTier(uint256 rand) + public + view + virtual + override + returns (uint16) + { + return ITierProvider(resolve("tier_provider", false)).getMinTier(rand); } /// @notice Gets the configuration of the TaikoL1 contract. diff --git a/packages/protocol/contracts/L1/libs/LibProposing.sol b/packages/protocol/contracts/L1/libs/LibProposing.sol index e65b8e64c2..0c296849ca 100644 --- a/packages/protocol/contracts/L1/libs/LibProposing.sol +++ b/packages/protocol/contracts/L1/libs/LibProposing.sol @@ -11,9 +11,11 @@ import { ERC20Upgradeable } from "@openzeppelin/contracts-upgradeable/token/ERC20/ERC20Upgradeable.sol"; import { IMintableERC20 } from "../../common/IMintableERC20.sol"; import { LibAddress } from "../../libs/LibAddress.sol"; + +import { ITierProvider } from "../tiers/ITierProvider.sol"; + import { LibDepositing } from "./LibDepositing.sol"; import { LibMath } from "../../libs/LibMath.sol"; -import { LibTiers } from "./LibTiers.sol"; import { LibUtils } from "./LibUtils.sol"; import { TaikoData } from "../TaikoData.sol"; import { TaikoToken } from "../TaikoToken.sol"; @@ -173,7 +175,8 @@ library LibProposing { // required for the block's validity proof. It's imperative to // maintain a certain percentage of blocks for each tier to ensure // that provers are consistently available when needed. - blk.minTier = LibTiers.getMinTier(uint256(blk.metaHash)); + blk.minTier = ITierProvider(resolver.resolve("tier_provider", false)) + .getMinTier(uint256(blk.metaHash)); // Verify assignment authorization; if prover's address is an IProver // contract, transfer Ether and call "validateAssignment" for diff --git a/packages/protocol/contracts/L1/libs/LibProving.sol b/packages/protocol/contracts/L1/libs/LibProving.sol index 33ca05124e..a7627dfad4 100644 --- a/packages/protocol/contracts/L1/libs/LibProving.sol +++ b/packages/protocol/contracts/L1/libs/LibProving.sol @@ -7,9 +7,9 @@ pragma solidity ^0.8.20; import { AddressResolver } from "../../common/AddressResolver.sol"; +import { ITierProvider } from "../tiers/ITierProvider.sol"; import { IVerifier } from "../verifiers/IVerifier.sol"; import { LibMath } from "../../libs/LibMath.sol"; -import { LibTiers } from "./LibTiers.sol"; import { LibUtils } from "./LibUtils.sol"; import { TaikoData } from "../TaikoData.sol"; import { TaikoToken } from ".././TaikoToken.sol"; @@ -166,7 +166,9 @@ library LibProving { // Retrieve the tier configurations. If the tier is not supported, the // subsequent action will result in a revert. - TaikoData.TierConfig memory tier = LibTiers.getTierConfig(evidence.tier); + ITierProvider.Tier memory tier = ITierProvider( + resolver.resolve("tier_provider", false) + ).getTier(evidence.tier); // We must verify the proof, and any failure in proof verification will // result in a revert of the following code. diff --git a/packages/protocol/contracts/L1/libs/LibTiers.sol b/packages/protocol/contracts/L1/libs/LibTiers.sol deleted file mode 100644 index 1e040fa9c1..0000000000 --- a/packages/protocol/contracts/L1/libs/LibTiers.sol +++ /dev/null @@ -1,85 +0,0 @@ -// SPDX-License-Identifier: MIT -// _____ _ _ _ _ -// |_ _|_ _(_) |_____ | | __ _| |__ ___ -// | |/ _` | | / / _ \ | |__/ _` | '_ (_-< -// |_|\__,_|_|_\_\___/ |____\__,_|_.__/__/ - -pragma solidity ^0.8.20; - -import { TaikoData } from "../../L1/TaikoData.sol"; - -/// @title LibTiers -/// @notice A library for providing tier configurations. -library LibTiers { - uint16 internal constant TIER_OPTIMISTIC = 100; - uint16 internal constant TIER_SGX = 200; - uint16 internal constant TIER_PSE_ZKEVM = 300; - uint16 internal constant TIER_GUARDIAN = 1000; - - // Warning: Any errors defined here must also be defined in TaikoErrors.sol. - error L1_TIER_NOT_FOUND(); - - /// @dev Retrieves the configuration for a specified tier. - function getTierConfig(uint16 tierId) - internal - pure - returns (TaikoData.TierConfig memory) - { - if (tierId == TIER_OPTIMISTIC) { - return TaikoData.TierConfig({ - verifierName: "tier_optimistic", - proofBond: 100_000 ether, // TKO - contestBond: 100_000 ether, // TKO - cooldownWindow: 4 hours, - provingWindow: 20 minutes - }); - } - - if (tierId == TIER_SGX) { - return TaikoData.TierConfig({ - verifierName: "tier_sgx", - proofBond: 50_000 ether, // TKO - contestBond: 50_000 ether, // TKO - cooldownWindow: 3 hours, - provingWindow: 60 minutes - }); - } - - if (tierId == TIER_PSE_ZKEVM) { - return TaikoData.TierConfig({ - verifierName: "tier_pse_zkevm", - proofBond: 10_000 ether, // TKO - contestBond: 10_000 ether, // TKO - cooldownWindow: 2 hours, - provingWindow: 90 minutes - }); - } - - if (tierId == TIER_GUARDIAN) { - return TaikoData.TierConfig({ - verifierName: "tier_guardian", - proofBond: 0, - contestBond: 0, // not contestable - cooldownWindow: 1 hours, - provingWindow: 120 minutes - }); - } - - revert L1_TIER_NOT_FOUND(); - } - - /// @dev Retrieves the IDs of all supported tiers. - function getTierIds() internal pure returns (uint16[] memory tiers) { - tiers = new uint16[](4); - tiers[0] = TIER_OPTIMISTIC; - tiers[1] = TIER_SGX; - tiers[2] = TIER_PSE_ZKEVM; - tiers[3] = TIER_GUARDIAN; - } - - /// @dev Determines the minimal tier for a block based on a random input. - function getMinTier(uint256 rand) internal pure returns (uint16) { - if (rand % 100 == 0) return TIER_PSE_ZKEVM; - else return TIER_OPTIMISTIC; - } -} diff --git a/packages/protocol/contracts/L1/libs/LibVerifying.sol b/packages/protocol/contracts/L1/libs/LibVerifying.sol index 50ca210301..2ba1ea1ca6 100644 --- a/packages/protocol/contracts/L1/libs/LibVerifying.sol +++ b/packages/protocol/contracts/L1/libs/LibVerifying.sol @@ -12,11 +12,13 @@ import { AddressResolver } from "../../common/AddressResolver.sol"; import { IMintableERC20 } from "../../common/IMintableERC20.sol"; import { ISignalService } from "../../signal/ISignalService.sol"; import { LibMath } from "../../libs/LibMath.sol"; -import { LibUtils } from "./LibUtils.sol"; -import { LibTiers } from "./LibTiers.sol"; -import { TaikoData } from "../../L1/TaikoData.sol"; + +import { ITierProvider } from "../tiers/ITierProvider.sol"; +import { TaikoData } from "../TaikoData.sol"; import { TaikoToken } from "../TaikoToken.sol"; +import { LibUtils } from "./LibUtils.sol"; + /// @title LibVerifying /// @notice A library for handling block verification in the Taiko protocol. library LibVerifying { @@ -86,7 +88,6 @@ library LibVerifying { tran.blockHash = genesisBlockHash; tran.prover = address(0); tran.timestamp = uint64(block.timestamp); - tran.tier = LibTiers.TIER_GUARDIAN; emit BlockVerified({ blockId: 0, @@ -130,6 +131,8 @@ library LibVerifying { // The Taiko token address which will be initialized as needed. address tt; + ITierProvider tierProvider = + ITierProvider(resolver.resolve("tier_provider", false)); // Unchecked is safe: // - assignment is within ranges @@ -160,7 +163,7 @@ library LibVerifying { tran.contester != address(0) || block.timestamp <= uint256(tran.timestamp) - + LibTiers.getTierConfig(tran.tier).cooldownWindow + + tierProvider.getTier(tran.tier).cooldownWindow ) { break; } diff --git a/packages/protocol/contracts/L1/tiers/ITierProvider.sol b/packages/protocol/contracts/L1/tiers/ITierProvider.sol new file mode 100644 index 0000000000..25b504e593 --- /dev/null +++ b/packages/protocol/contracts/L1/tiers/ITierProvider.sol @@ -0,0 +1,35 @@ +// SPDX-License-Identifier: MIT +// _____ _ _ _ _ +// |_ _|_ _(_) |_____ | | __ _| |__ ___ +// | |/ _` | | / / _ \ | |__/ _` | '_ (_-< +// |_|\__,_|_|_\_\___/ |____\__,_|_.__/__/ + +pragma solidity ^0.8.20; + +library LibTiers { + uint16 public constant TIER_OPTIMISTIC = 100; + uint16 public constant TIER_SGX = 200; + uint16 public constant TIER_PSE_ZKEVM = 300; + uint16 public constant TIER_GUARDIAN = 1000; +} + +/// @title ITierProvider +/// @notice Defines interface to return tier configuration. +interface ITierProvider { + struct Tier { + bytes32 verifierName; + uint96 proofBond; + uint96 contestBond; + uint24 cooldownWindow; + uint16 provingWindow; + } + + /// @dev Retrieves the configuration for a specified tier. + function getTier(uint16 tierId) external view returns (Tier memory); + + /// @dev Retrieves the IDs of all supported tiers. + function getTierIds() external view returns (uint16[] memory); + + /// @dev Determines the minimal tier for a block based on a random input. + function getMinTier(uint256 rand) external view returns (uint16); +} diff --git a/packages/protocol/contracts/L1/tiers/OPL2ConfigProvider.sol b/packages/protocol/contracts/L1/tiers/OPL2ConfigProvider.sol new file mode 100644 index 0000000000..8269c3855b --- /dev/null +++ b/packages/protocol/contracts/L1/tiers/OPL2ConfigProvider.sol @@ -0,0 +1,84 @@ +// SPDX-License-Identifier: MIT +// _____ _ _ _ _ +// |_ _|_ _(_) |_____ | | __ _| |__ ___ +// | |/ _` | | / / _ \ | |__/ _` | '_ (_-< +// |_|\__,_|_|_\_\___/ |____\__,_|_.__/__/ + +pragma solidity ^0.8.20; + +import { TaikoData } from "../TaikoData.sol"; + +import { ITierProvider, LibTiers } from "./ITierProvider.sol"; + +/// @title OPL2ConfigProvider +contract OPL2ConfigProvider is ITierProvider { + error TIER_NOT_FOUND(); + + function getTier(uint16 tierId) + public + pure + override + returns (ITierProvider.Tier memory) + { + if (tierId == LibTiers.TIER_OPTIMISTIC) { + return ITierProvider.Tier({ + verifierName: "tier_optimistic", + proofBond: 100_000 ether, // TKO + contestBond: 100_000 ether, // TKO + cooldownWindow: 4 hours, + provingWindow: 20 minutes + }); + } + + if (tierId == LibTiers.TIER_SGX) { + return ITierProvider.Tier({ + verifierName: "tier_sgx", + proofBond: 50_000 ether, // TKO + contestBond: 50_000 ether, // TKO + cooldownWindow: 3 hours, + provingWindow: 60 minutes + }); + } + + if (tierId == LibTiers.TIER_PSE_ZKEVM) { + return ITierProvider.Tier({ + verifierName: "tier_pse_zkevm", + proofBond: 10_000 ether, // TKO + contestBond: 10_000 ether, // TKO + cooldownWindow: 2 hours, + provingWindow: 90 minutes + }); + } + + if (tierId == LibTiers.TIER_GUARDIAN) { + return ITierProvider.Tier({ + verifierName: "tier_guardian", + proofBond: 0, + contestBond: 0, // not contestable + cooldownWindow: 1 hours, + provingWindow: 120 minutes + }); + } + + revert TIER_NOT_FOUND(); + } + + function getTierIds() + public + pure + override + returns (uint16[] memory tiers) + { + tiers = new uint16[](4); + tiers[0] = LibTiers.TIER_OPTIMISTIC; + tiers[1] = LibTiers.TIER_SGX; + tiers[2] = LibTiers.TIER_PSE_ZKEVM; + tiers[3] = LibTiers.TIER_GUARDIAN; + } + + function getMinTier(uint256 rand) public pure override returns (uint16) { + if (rand % 100 == 0) return LibTiers.TIER_PSE_ZKEVM; + // if (rand % 10 == 0) return LibTiers.TIER_SGX; + else return LibTiers.TIER_OPTIMISTIC; + } +} diff --git a/packages/protocol/contracts/L1/tiers/ZKL2ConfigProvider.sol b/packages/protocol/contracts/L1/tiers/ZKL2ConfigProvider.sol new file mode 100644 index 0000000000..72069d4853 --- /dev/null +++ b/packages/protocol/contracts/L1/tiers/ZKL2ConfigProvider.sol @@ -0,0 +1,60 @@ +// SPDX-License-Identifier: MIT +// _____ _ _ _ _ +// |_ _|_ _(_) |_____ | | __ _| |__ ___ +// | |/ _` | | / / _ \ | |__/ _` | '_ (_-< +// |_|\__,_|_|_\_\___/ |____\__,_|_.__/__/ + +pragma solidity ^0.8.20; + +import { TaikoData } from "../TaikoData.sol"; + +import { ITierProvider, LibTiers } from "./ITierProvider.sol"; + +/// @title ZKL2ConfigProvider +contract ZKL2ConfigProvider is ITierProvider { + error TIER_NOT_FOUND(); + + function getTier(uint16 tierId) + public + pure + override + returns (ITierProvider.Tier memory) + { + if (tierId == LibTiers.TIER_PSE_ZKEVM) { + return ITierProvider.Tier({ + verifierName: "tier_pse_zkevm", + proofBond: 10_000 ether, // TKO + contestBond: 10_000 ether, // TKO + cooldownWindow: 2 hours, + provingWindow: 90 minutes + }); + } + + if (tierId == LibTiers.TIER_GUARDIAN) { + return ITierProvider.Tier({ + verifierName: "tier_guardian", + proofBond: 0, + contestBond: 0, // not contestable + cooldownWindow: 1 hours, + provingWindow: 120 minutes + }); + } + + revert TIER_NOT_FOUND(); + } + + function getTierIds() + public + pure + override + returns (uint16[] memory tiers) + { + tiers = new uint16[](2); + tiers[0] = LibTiers.TIER_PSE_ZKEVM; + tiers[1] = LibTiers.TIER_GUARDIAN; + } + + function getMinTier(uint256) public pure override returns (uint16) { + return LibTiers.TIER_PSE_ZKEVM; + } +} diff --git a/packages/protocol/test/L1/TaikoL1.t.sol b/packages/protocol/test/L1/TaikoL1.t.sol index 79f4a7a633..8297ee838c 100644 --- a/packages/protocol/test/L1/TaikoL1.t.sol +++ b/packages/protocol/test/L1/TaikoL1.t.sol @@ -5,7 +5,6 @@ import { Test } from "forge-std/Test.sol"; import { console2 } from "forge-std/console2.sol"; import { AddressManager } from "../../contracts/common/AddressManager.sol"; import { LibUtils } from "../../contracts/L1/libs/LibUtils.sol"; -import { LibTiers } from "../../contracts/L1/libs/LibTiers.sol"; import { TaikoData } from "../../contracts/L1/TaikoData.sol"; import { TaikoErrors } from "../../contracts/L1/TaikoErrors.sol"; import { TaikoL1 } from "../../contracts/L1/TaikoL1.sol"; @@ -88,10 +87,7 @@ contract TaikoL1Test is TaikoL1TestBase { vm.roll(block.number + 15 * 12); uint16 minTier = L1.getBlock(meta.id).minTier; - vm.warp( - block.timestamp + LibTiers.getTierConfig(minTier).cooldownWindow - + 1 - ); + vm.warp(block.timestamp + L1.getTier(minTier).cooldownWindow + 1); verifyBlock(Carol, 1); parentHash = blockHash; @@ -133,10 +129,7 @@ contract TaikoL1Test is TaikoL1TestBase { ); vm.roll(block.number + 15 * 12); uint16 minTier = L1.getBlock(meta.id).minTier; - vm.warp( - block.timestamp + LibTiers.getTierConfig(minTier).cooldownWindow - + 1 - ); + vm.warp(block.timestamp + L1.getTier(minTier).cooldownWindow + 1); verifyBlock(Alice, 2); parentHash = blockHash; @@ -298,10 +291,7 @@ contract TaikoL1Test is TaikoL1TestBase { vm.roll(block.number + 15 * 12); uint16 minTier = L1.getBlock(meta.id).minTier; - vm.warp( - block.timestamp + LibTiers.getTierConfig(minTier).cooldownWindow - + 1 - ); + vm.warp(block.timestamp + L1.getTier(minTier).cooldownWindow + 1); verifyBlock(Carol, 1); diff --git a/packages/protocol/test/L1/TaikoL1LibProvingWithTiers.t.sol b/packages/protocol/test/L1/TaikoL1LibProvingWithTiers.t.sol index f5e73583de..01951d8f53 100644 --- a/packages/protocol/test/L1/TaikoL1LibProvingWithTiers.t.sol +++ b/packages/protocol/test/L1/TaikoL1LibProvingWithTiers.t.sol @@ -5,7 +5,6 @@ import { Test } from "forge-std/Test.sol"; import { console2 } from "forge-std/console2.sol"; import { AddressManager } from "../../contracts/common/AddressManager.sol"; import { LibUtils } from "../../contracts/L1/libs/LibUtils.sol"; -import { LibTiers } from "../../contracts/L1/libs/LibTiers.sol"; import { GuardianVerifier } from "../../contracts/L1/verifiers/GuardianVerifier.sol"; import { TaikoData } from "../../contracts/L1/TaikoData.sol"; @@ -15,6 +14,7 @@ import { TaikoToken } from "../../contracts/L1/TaikoToken.sol"; import { SignalService } from "../../contracts/signal/SignalService.sol"; import { Strings } from "@openzeppelin/contracts/utils/Strings.sol"; import { TaikoL1TestBase } from "./TaikoL1TestBase.sol"; +import { LibTiers } from "../../contracts/L1/tiers/ITierProvider.sol"; contract TaikoL1Tiers is TaikoL1 { function getConfig() @@ -101,10 +101,7 @@ contract TaikoL1LibProvingWithTiers is TaikoL1TestBase { vm.roll(block.number + 15 * 12); uint16 minTier = L1.getBlock(meta.id).minTier; - vm.warp( - block.timestamp + LibTiers.getTierConfig(minTier).cooldownWindow - + 1 - ); + vm.warp(block.timestamp + L1.getTier(minTier).cooldownWindow + 1); verifyBlock(Carol, 1); @@ -161,8 +158,7 @@ contract TaikoL1LibProvingWithTiers is TaikoL1TestBase { vm.roll(block.number + 15 * 12); vm.warp( - block.timestamp - + LibTiers.getTierConfig(minTier).cooldownWindow + 1 + block.timestamp + L1.getTier(minTier).cooldownWindow + 1 ); // Cannot verify block because it is contested.. @@ -181,10 +177,7 @@ contract TaikoL1LibProvingWithTiers is TaikoL1TestBase { } // Otherwise just not contest - vm.warp( - block.timestamp + LibTiers.getTierConfig(minTier).cooldownWindow - + 1 - ); + vm.warp(block.timestamp + L1.getTier(minTier).cooldownWindow + 1); // Now can verify verifyBlock(Carol, 1); @@ -239,8 +232,7 @@ contract TaikoL1LibProvingWithTiers is TaikoL1TestBase { vm.roll(block.number + 15 * 12); vm.warp( - block.timestamp - + LibTiers.getTierConfig(minTier).cooldownWindow + 1 + block.timestamp + L1.getTier(minTier).cooldownWindow + 1 ); // Cannot verify block because it is contested.. @@ -259,10 +251,7 @@ contract TaikoL1LibProvingWithTiers is TaikoL1TestBase { } // Otherwise just not contest - vm.warp( - block.timestamp + LibTiers.getTierConfig(minTier).cooldownWindow - + 1 - ); + vm.warp(block.timestamp + L1.getTier(minTier).cooldownWindow + 1); // Now can verify verifyBlock(Carol, 1); @@ -309,10 +298,7 @@ contract TaikoL1LibProvingWithTiers is TaikoL1TestBase { vm.roll(block.number + 15 * 12); uint16 minTier = L1.getBlock(meta.id).minTier; - vm.warp( - block.timestamp + LibTiers.getTierConfig(minTier).cooldownWindow - + 1 - ); + vm.warp(block.timestamp + L1.getTier(minTier).cooldownWindow + 1); verifyBlock(Carol, 1); parentHash = blockHash; @@ -347,10 +333,7 @@ contract TaikoL1LibProvingWithTiers is TaikoL1TestBase { vm.roll(block.number + 15 * 12); uint16 minTier = L1.getBlock(meta.id).minTier; - vm.warp( - block.timestamp + LibTiers.getTierConfig(minTier).cooldownWindow - + 1 - ); + vm.warp(block.timestamp + L1.getTier(minTier).cooldownWindow + 1); proveBlock( Bob, @@ -424,10 +407,7 @@ contract TaikoL1LibProvingWithTiers is TaikoL1TestBase { vm.roll(block.number + 15 * 12); uint16 minTier = L1.getBlock(meta.id).minTier; - vm.warp( - block.timestamp + LibTiers.getTierConfig(minTier).cooldownWindow - + 1 - ); + vm.warp(block.timestamp + L1.getTier(minTier).cooldownWindow + 1); verifyBlock(Carol, 1); @@ -491,10 +471,7 @@ contract TaikoL1LibProvingWithTiers is TaikoL1TestBase { vm.roll(block.number + 15 * 12); uint16 minTier = L1.getBlock(meta.id).minTier; - vm.warp( - block.timestamp + LibTiers.getTierConfig(minTier).cooldownWindow - + 1 - ); + vm.warp(block.timestamp + L1.getTier(minTier).cooldownWindow + 1); verifyBlock(Carol, 1); @@ -558,10 +535,7 @@ contract TaikoL1LibProvingWithTiers is TaikoL1TestBase { vm.roll(block.number + 15 * 12); uint16 minTier = L1.getBlock(meta.id).minTier; - vm.warp( - block.timestamp + LibTiers.getTierConfig(minTier).cooldownWindow - + 1 - ); + vm.warp(block.timestamp + L1.getTier(minTier).cooldownWindow + 1); verifyBlock(Carol, 1); @@ -623,10 +597,7 @@ contract TaikoL1LibProvingWithTiers is TaikoL1TestBase { vm.roll(block.number + 15 * 12); uint16 minTier = L1.getBlock(meta.id).minTier; - vm.warp( - block.timestamp + LibTiers.getTierConfig(minTier).cooldownWindow - + 1 - ); + vm.warp(block.timestamp + L1.getTier(minTier).cooldownWindow + 1); verifyBlock(Carol, 1); @@ -789,10 +760,7 @@ contract TaikoL1LibProvingWithTiers is TaikoL1TestBase { vm.roll(block.number + 15 * 12); uint16 minTier = L1.getBlock(meta.id).minTier; - vm.warp( - block.timestamp + LibTiers.getTierConfig(minTier).cooldownWindow - + 1 - ); + vm.warp(block.timestamp + L1.getTier(minTier).cooldownWindow + 1); verifyBlock(Carol, 1); diff --git a/packages/protocol/test/L1/TaikoL1TestBase.sol b/packages/protocol/test/L1/TaikoL1TestBase.sol index 53f24a1544..2d84341737 100644 --- a/packages/protocol/test/L1/TaikoL1TestBase.sol +++ b/packages/protocol/test/L1/TaikoL1TestBase.sol @@ -5,7 +5,6 @@ import { TestBase } from "../TestBase.sol"; import { console2 } from "forge-std/console2.sol"; import { AddressManager } from "../../contracts/common/AddressManager.sol"; import { LibProving } from "../../contracts/L1/libs/LibProving.sol"; -import { LibTiers } from "../../contracts/L1/libs/LibTiers.sol"; import { LibProposing } from "../../contracts/L1/libs/LibProposing.sol"; import { LibUtils } from "../../contracts/L1/libs/LibUtils.sol"; import { TaikoData } from "../../contracts/L1/TaikoData.sol"; @@ -17,6 +16,7 @@ import { PseZkVerifier } from "../../contracts/L1/verifiers/PseZkVerifier.sol"; import { SignalService } from "../../contracts/signal/SignalService.sol"; import { Strings } from "@openzeppelin/contracts/utils/Strings.sol"; import { AddressResolver } from "../../contracts/common/AddressResolver.sol"; +import { LibTiers } from "../../contracts/L1/tiers/ITierProvider.sol"; contract MockVerifier { fallback(bytes calldata) external returns (bytes memory) { From edc9ccbd014b2dd18fa82f6d2e31dbf7d3f71018 Mon Sep 17 00:00:00 2001 From: Daniel Wang <99078276+dantaik@users.noreply.github.com> Date: Fri, 22 Sep 2023 21:56:38 +0800 Subject: [PATCH 16/87] refactor(protocol): cleanup solidity imports (#14772) Co-authored-by: Daniel Wang --- packages/protocol/contracts/L1/TaikoL1.sol | 4 +- packages/protocol/contracts/L1/TaikoToken.sol | 14 +++---- .../contracts/L1/libs/LibDepositing.sol | 1 + .../contracts/L1/libs/LibProposing.sol | 13 +++--- .../protocol/contracts/L1/libs/LibProving.sol | 9 ++-- .../protocol/contracts/L1/libs/LibUtils.sol | 4 -- .../contracts/L1/libs/LibVerifying.sol | 41 ++++++++++--------- .../contracts/L1/tiers/OPL2ConfigProvider.sol | 2 +- .../L1/verifiers/GuardianVerifier.sol | 4 +- .../contracts/L1/verifiers/PseZkVerifier.sol | 4 +- .../contracts/L1/verifiers/SGXVerifier.sol | 10 +++-- packages/protocol/contracts/L2/TaikoL2.sol | 4 +- packages/protocol/contracts/bridge/Bridge.sol | 8 ++-- .../protocol/contracts/bridge/EtherVault.sol | 7 +--- .../contracts/bridge/libs/LibBridgeData.sol | 4 +- .../contracts/bridge/libs/LibBridgeInvoke.sol | 3 +- .../bridge/libs/LibBridgeProcess.sol | 8 ++-- .../contracts/bridge/libs/LibBridgeRecall.sol | 4 +- .../contracts/bridge/libs/LibBridgeRetry.sol | 4 +- .../contracts/bridge/libs/LibBridgeSend.sol | 4 +- .../contracts/bridge/libs/LibBridgeStatus.sol | 3 +- .../contracts/common/AddressManager.sol | 4 +- .../contracts/common/EssentialContract.sol | 8 ++-- .../contracts/common/IMintableERC20.sol | 3 +- .../protocol/contracts/common/Proxied.sol | 3 +- .../protocol/contracts/libs/Lib1559Math.sol | 4 +- .../protocol/contracts/libs/LibAddress.sol | 13 +++--- .../contracts/signal/SignalService.sol | 5 ++- .../contracts/test/erc20/FreeMintERC20.sol | 2 +- .../test/erc20/MayFailFreeMintERC20.sol | 2 +- .../contracts/test/erc20/RegularERC20.sol | 2 +- .../contracts/tokenvault/BaseNFTVault.sol | 11 +---- .../contracts/tokenvault/BridgedERC1155.sol | 14 +++---- .../contracts/tokenvault/BridgedERC20.sol | 8 ++-- .../contracts/tokenvault/BridgedERC721.sol | 7 ++-- .../contracts/tokenvault/ERC1155Vault.sol | 25 +++++------ .../contracts/tokenvault/ERC20Vault.sol | 23 ++++++----- .../contracts/tokenvault/ERC721Vault.sol | 21 +++++----- .../tokenvault/libs/LibVaultUtils.sol | 5 ++- .../protocol/genesis/GenerateGenesis.g.sol | 11 +++-- packages/protocol/remappings.txt | 4 +- packages/protocol/script/DeployOnL1.s.sol | 3 +- .../script/upgrade/UpgradeScript.s.sol | 3 +- packages/protocol/test/L1/TaikoL1.t.sol | 1 - .../test/L1/TaikoL1LibProvingWithTiers.t.sol | 3 +- packages/protocol/test/L1/TaikoL1TestBase.sol | 3 +- packages/protocol/test/L1/TaikoToken.t.sol | 2 +- packages/protocol/test/L2/TaikoL2.t.sol | 5 +-- packages/protocol/test/libs/Lib1559Math.t.sol | 3 +- .../test/tokenvault/ERC1155Vault.t.sol | 6 +-- .../protocol/test/tokenvault/ERC20Vault.t.sol | 4 +- .../test/tokenvault/ERC721Vault.t.sol | 6 +-- 52 files changed, 186 insertions(+), 183 deletions(-) diff --git a/packages/protocol/contracts/L1/TaikoL1.sol b/packages/protocol/contracts/L1/TaikoL1.sol index 7ff254f6e7..e6c39acfae 100644 --- a/packages/protocol/contracts/L1/TaikoL1.sol +++ b/packages/protocol/contracts/L1/TaikoL1.sol @@ -9,12 +9,14 @@ pragma solidity ^0.8.20; import { AddressResolver } from "../common/AddressResolver.sol"; import { EssentialContract } from "../common/EssentialContract.sol"; import { ICrossChainSync } from "../common/ICrossChainSync.sol"; +import { Proxied } from "../common/Proxied.sol"; + import { LibDepositing } from "./libs/LibDepositing.sol"; import { LibProposing } from "./libs/LibProposing.sol"; import { LibProving } from "./libs/LibProving.sol"; import { LibUtils } from "./libs/LibUtils.sol"; import { LibVerifying } from "./libs/LibVerifying.sol"; -import { Proxied } from "../common/Proxied.sol"; + import { TaikoData } from "./TaikoData.sol"; import { TaikoErrors } from "./TaikoErrors.sol"; import { TaikoEvents } from "./TaikoEvents.sol"; diff --git a/packages/protocol/contracts/L1/TaikoToken.sol b/packages/protocol/contracts/L1/TaikoToken.sol index c2402bada0..9d8bbde5a4 100644 --- a/packages/protocol/contracts/L1/TaikoToken.sol +++ b/packages/protocol/contracts/L1/TaikoToken.sol @@ -7,21 +7,21 @@ pragma solidity ^0.8.20; import { ERC20BurnableUpgradeable } from - "@openzeppelin/contracts-upgradeable/token/ERC20/extensions/ERC20BurnableUpgradeable.sol"; + "@ozu/token/ERC20/extensions/ERC20BurnableUpgradeable.sol"; import { ERC20PermitUpgradeable } from - "@openzeppelin/contracts-upgradeable/token/ERC20/extensions/draft-ERC20PermitUpgradeable.sol"; + "@ozu/token/ERC20/extensions/draft-ERC20PermitUpgradeable.sol"; import { ERC20SnapshotUpgradeable } from - "@openzeppelin/contracts-upgradeable/token/ERC20/extensions/ERC20SnapshotUpgradeable.sol"; + "@ozu/token/ERC20/extensions/ERC20SnapshotUpgradeable.sol"; import { ERC20Upgradeable, IERC20Upgradeable -} from "@openzeppelin/contracts-upgradeable/token/ERC20/ERC20Upgradeable.sol"; +} from "@ozu/token/ERC20/ERC20Upgradeable.sol"; import { ERC20VotesUpgradeable } from - "@openzeppelin/contracts-upgradeable/token/ERC20/extensions/ERC20VotesUpgradeable.sol"; + "@ozu/token/ERC20/extensions/ERC20VotesUpgradeable.sol"; +import { PausableUpgradeable } from "@ozu/security/PausableUpgradeable.sol"; + import { EssentialContract } from "../common/EssentialContract.sol"; import { IMintableERC20 } from "../common/IMintableERC20.sol"; -import { PausableUpgradeable } from - "@openzeppelin/contracts-upgradeable/security/PausableUpgradeable.sol"; import { Proxied } from "../common/Proxied.sol"; /// @title TaikoToken diff --git a/packages/protocol/contracts/L1/libs/LibDepositing.sol b/packages/protocol/contracts/L1/libs/LibDepositing.sol index 47f6ed2d57..9655cd5e2b 100644 --- a/packages/protocol/contracts/L1/libs/LibDepositing.sol +++ b/packages/protocol/contracts/L1/libs/LibDepositing.sol @@ -9,6 +9,7 @@ pragma solidity ^0.8.20; import { AddressResolver } from "../../common/AddressResolver.sol"; import { LibAddress } from "../../libs/LibAddress.sol"; import { LibMath } from "../../libs/LibMath.sol"; + import { TaikoData } from "../TaikoData.sol"; /// @title LibDepositing diff --git a/packages/protocol/contracts/L1/libs/LibProposing.sol b/packages/protocol/contracts/L1/libs/LibProposing.sol index 0c296849ca..18f26c3922 100644 --- a/packages/protocol/contracts/L1/libs/LibProposing.sol +++ b/packages/protocol/contracts/L1/libs/LibProposing.sol @@ -6,19 +6,22 @@ pragma solidity ^0.8.20; +import { AddressUpgradeable } from "@ozu/utils/AddressUpgradeable.sol"; +import { ECDSAUpgradeable } from "@ozu/utils/cryptography/ECDSAUpgradeable.sol"; +import { ERC20Upgradeable } from "@ozu/token/ERC20/ERC20Upgradeable.sol"; +import { IERC1271Upgradeable } from "@ozu/interfaces/IERC1271Upgradeable.sol"; + import { AddressResolver } from "../../common/AddressResolver.sol"; -import { ERC20Upgradeable } from - "@openzeppelin/contracts-upgradeable/token/ERC20/ERC20Upgradeable.sol"; import { IMintableERC20 } from "../../common/IMintableERC20.sol"; import { LibAddress } from "../../libs/LibAddress.sol"; +import { LibMath } from "../../libs/LibMath.sol"; import { ITierProvider } from "../tiers/ITierProvider.sol"; +import { TaikoData } from "../TaikoData.sol"; +import { TaikoToken } from "../TaikoToken.sol"; import { LibDepositing } from "./LibDepositing.sol"; -import { LibMath } from "../../libs/LibMath.sol"; import { LibUtils } from "./LibUtils.sol"; -import { TaikoData } from "../TaikoData.sol"; -import { TaikoToken } from "../TaikoToken.sol"; /// @title LibProposing /// @notice A library for handling block proposals in the Taiko protocol. diff --git a/packages/protocol/contracts/L1/libs/LibProving.sol b/packages/protocol/contracts/L1/libs/LibProving.sol index a7627dfad4..b8a0354748 100644 --- a/packages/protocol/contracts/L1/libs/LibProving.sol +++ b/packages/protocol/contracts/L1/libs/LibProving.sol @@ -7,19 +7,18 @@ pragma solidity ^0.8.20; import { AddressResolver } from "../../common/AddressResolver.sol"; + import { ITierProvider } from "../tiers/ITierProvider.sol"; import { IVerifier } from "../verifiers/IVerifier.sol"; -import { LibMath } from "../../libs/LibMath.sol"; -import { LibUtils } from "./LibUtils.sol"; import { TaikoData } from "../TaikoData.sol"; -import { TaikoToken } from ".././TaikoToken.sol"; +import { TaikoToken } from "../TaikoToken.sol"; + +import { LibUtils } from "./LibUtils.sol"; /// @title LibProving /// @notice A library for handling block contestation and proving in the Taiko /// protocol. library LibProving { - using LibMath for uint256; - // Warning: Any events defined here must also be defined in TaikoEvents.sol. event TransitionProved( uint256 indexed blockId, diff --git a/packages/protocol/contracts/L1/libs/LibUtils.sol b/packages/protocol/contracts/L1/libs/LibUtils.sol index 45243b27f7..099caf62df 100644 --- a/packages/protocol/contracts/L1/libs/LibUtils.sol +++ b/packages/protocol/contracts/L1/libs/LibUtils.sol @@ -6,15 +6,11 @@ pragma solidity ^0.8.20; -import { LibDepositing } from "./LibDepositing.sol"; -import { LibMath } from "../../libs/LibMath.sol"; import { TaikoData } from "../TaikoData.sol"; /// @title LibUtils /// @notice A library that offers helper functions. library LibUtils { - using LibMath for uint256; - // Warning: Any errors defined here must also be defined in TaikoErrors.sol. error L1_BLOCK_MISMATCH(); error L1_INVALID_BLOCK_ID(); diff --git a/packages/protocol/contracts/L1/libs/LibVerifying.sol b/packages/protocol/contracts/L1/libs/LibVerifying.sol index 2ba1ea1ca6..44ad3b0357 100644 --- a/packages/protocol/contracts/L1/libs/LibVerifying.sol +++ b/packages/protocol/contracts/L1/libs/LibVerifying.sol @@ -6,12 +6,8 @@ pragma solidity ^0.8.20; -import { AddressUpgradeable } from - "@openzeppelin/contracts-upgradeable/utils/AddressUpgradeable.sol"; import { AddressResolver } from "../../common/AddressResolver.sol"; -import { IMintableERC20 } from "../../common/IMintableERC20.sol"; import { ISignalService } from "../../signal/ISignalService.sol"; -import { LibMath } from "../../libs/LibMath.sol"; import { ITierProvider } from "../tiers/ITierProvider.sol"; import { TaikoData } from "../TaikoData.sol"; @@ -22,9 +18,6 @@ import { LibUtils } from "./LibUtils.sol"; /// @title LibVerifying /// @notice A library for handling block verification in the Taiko protocol. library LibVerifying { - using AddressUpgradeable for address; - using LibMath for uint256; - // Warning: Any events defined here must also be defined in TaikoEvents.sol. event BlockVerified( uint256 indexed blockId, @@ -129,10 +122,9 @@ library LibVerifying { bytes32 signalRoot; uint64 processed; - // The Taiko token address which will be initialized as needed. - address tt; - ITierProvider tierProvider = - ITierProvider(resolver.resolve("tier_provider", false)); + // These address are only initialized when necessary + address taikoToken; + address tierProvider; // Unchecked is safe: // - assignment is within ranges @@ -159,13 +151,22 @@ library LibVerifying { // It's not possible to verify this block if either the // transition is contested and awaiting higher-tier proof or if // the transition is still within its cooldown period. - if ( - tran.contester != address(0) - || block.timestamp - <= uint256(tran.timestamp) - + tierProvider.getTier(tran.tier).cooldownWindow - ) { + if (tran.contester != address(0)) { break; + } else { + if (tierProvider == address(0)) { + tierProvider = resolver.resolve("tier_provider", false); + } + if ( + uint256( + ITierProvider(tierProvider).getTier(tran.tier) + .cooldownWindow + ) + tran.timestamp > block.timestamp + ) { + // If cooldownWindow is 0, the block can theoretically + // be proved and verified within the same L1 block. + break; + } } // Mark this block as verified @@ -195,10 +196,10 @@ library LibVerifying { bondToReturn -= blk.assignmentBond / 2; } - if (tt == address(0)) { - tt = resolver.resolve("taiko_token", false); + if (taikoToken == address(0)) { + taikoToken = resolver.resolve("taiko_token", false); } - TaikoToken(tt).mint(tran.prover, bondToReturn); + TaikoToken(taikoToken).mint(tran.prover, bondToReturn); // Note: We exclusively address the bonds linked to the // transition used for verification. While there may exist diff --git a/packages/protocol/contracts/L1/tiers/OPL2ConfigProvider.sol b/packages/protocol/contracts/L1/tiers/OPL2ConfigProvider.sol index 8269c3855b..5aa2229eec 100644 --- a/packages/protocol/contracts/L1/tiers/OPL2ConfigProvider.sol +++ b/packages/protocol/contracts/L1/tiers/OPL2ConfigProvider.sol @@ -78,7 +78,7 @@ contract OPL2ConfigProvider is ITierProvider { function getMinTier(uint256 rand) public pure override returns (uint16) { if (rand % 100 == 0) return LibTiers.TIER_PSE_ZKEVM; - // if (rand % 10 == 0) return LibTiers.TIER_SGX; + // else if (rand % 10 == 0) return LibTiers.TIER_SGX; else return LibTiers.TIER_OPTIMISTIC; } } diff --git a/packages/protocol/contracts/L1/verifiers/GuardianVerifier.sol b/packages/protocol/contracts/L1/verifiers/GuardianVerifier.sol index 2c94a1a52d..5bb1527b78 100644 --- a/packages/protocol/contracts/L1/verifiers/GuardianVerifier.sol +++ b/packages/protocol/contracts/L1/verifiers/GuardianVerifier.sol @@ -7,10 +7,12 @@ pragma solidity ^0.8.20; import { EssentialContract } from "../../common/EssentialContract.sol"; -import { IVerifier } from "./IVerifier.sol"; import { Proxied } from "../../common/Proxied.sol"; + import { TaikoData } from "../TaikoData.sol"; +import { IVerifier } from "./IVerifier.sol"; + /// @title GuardianVerifier contract GuardianVerifier is EssentialContract, IVerifier { uint256[50] private __gap; diff --git a/packages/protocol/contracts/L1/verifiers/PseZkVerifier.sol b/packages/protocol/contracts/L1/verifiers/PseZkVerifier.sol index 46fd2f3d3a..e13b54c0d8 100644 --- a/packages/protocol/contracts/L1/verifiers/PseZkVerifier.sol +++ b/packages/protocol/contracts/L1/verifiers/PseZkVerifier.sol @@ -7,11 +7,13 @@ pragma solidity ^0.8.20; import { EssentialContract } from "../../common/EssentialContract.sol"; -import { IVerifier } from "./IVerifier.sol"; import { LibBytesUtils } from "../../thirdparty/LibBytesUtils.sol"; import { Proxied } from "../../common/Proxied.sol"; + import { TaikoData } from "../TaikoData.sol"; +import { IVerifier } from "./IVerifier.sol"; + /// @title PseZkVerifier /// @notice See the documentation in {IVerifier}. contract PseZkVerifier is EssentialContract, IVerifier { diff --git a/packages/protocol/contracts/L1/verifiers/SGXVerifier.sol b/packages/protocol/contracts/L1/verifiers/SGXVerifier.sol index 26e27b5c30..ffe32dd1be 100644 --- a/packages/protocol/contracts/L1/verifiers/SGXVerifier.sol +++ b/packages/protocol/contracts/L1/verifiers/SGXVerifier.sol @@ -7,14 +7,19 @@ pragma solidity ^0.8.20; import { EssentialContract } from "../../common/EssentialContract.sol"; -import { IVerifier } from "./IVerifier.sol"; import { Proxied } from "../../common/Proxied.sol"; + import { TaikoData } from "../TaikoData.sol"; +import { IVerifier } from "./IVerifier.sol"; + /// @title GuardianVerifier +// TODO(dani): implement this verifier. contract SGXVerifier is EssentialContract, IVerifier { uint256[50] private __gap; + error UNIMPLEMENTED(); + /// @notice Initializes the contract with the provided address manager. /// @param _addressManager The address of the address manager contract. function init(address _addressManager) external initializer { @@ -33,8 +38,7 @@ contract SGXVerifier is EssentialContract, IVerifier { external pure { - // TODO - revert("not implemented"); + revert UNIMPLEMENTED(); } } diff --git a/packages/protocol/contracts/L2/TaikoL2.sol b/packages/protocol/contracts/L2/TaikoL2.sol index d5321e8e36..3306fb1e85 100644 --- a/packages/protocol/contracts/L2/TaikoL2.sol +++ b/packages/protocol/contracts/L2/TaikoL2.sol @@ -8,9 +8,11 @@ pragma solidity ^0.8.20; import { EssentialContract } from "../common/EssentialContract.sol"; import { ICrossChainSync } from "../common/ICrossChainSync.sol"; +import { Proxied } from "../common/Proxied.sol"; + import { Lib1559Math } from "../libs/Lib1559Math.sol"; import { LibMath } from "../libs/LibMath.sol"; -import { Proxied } from "../common/Proxied.sol"; + import { TaikoL2Signer } from "./TaikoL2Signer.sol"; /// @title TaikoL2 diff --git a/packages/protocol/contracts/bridge/Bridge.sol b/packages/protocol/contracts/bridge/Bridge.sol index 719dfd2f21..7c10462455 100644 --- a/packages/protocol/contracts/bridge/Bridge.sol +++ b/packages/protocol/contracts/bridge/Bridge.sol @@ -6,16 +6,18 @@ pragma solidity ^0.8.20; import { AddressResolver } from "../common/AddressResolver.sol"; -import { BridgeErrors } from "./BridgeErrors.sol"; import { EssentialContract } from "../common/EssentialContract.sol"; -import { IBridge } from "./IBridge.sol"; +import { Proxied } from "../common/Proxied.sol"; + import { LibBridgeData } from "./libs/LibBridgeData.sol"; import { LibBridgeProcess } from "./libs/LibBridgeProcess.sol"; import { LibBridgeRecall } from "./libs/LibBridgeRecall.sol"; import { LibBridgeRetry } from "./libs/LibBridgeRetry.sol"; import { LibBridgeSend } from "./libs/LibBridgeSend.sol"; import { LibBridgeStatus } from "./libs/LibBridgeStatus.sol"; -import { Proxied } from "../common/Proxied.sol"; + +import { BridgeErrors } from "./BridgeErrors.sol"; +import { IBridge } from "./IBridge.sol"; /// @title Bridge /// @notice See the documentation for {IBridge}. diff --git a/packages/protocol/contracts/bridge/EtherVault.sol b/packages/protocol/contracts/bridge/EtherVault.sol index 7ee83595c7..534297b717 100644 --- a/packages/protocol/contracts/bridge/EtherVault.sol +++ b/packages/protocol/contracts/bridge/EtherVault.sol @@ -6,14 +6,11 @@ pragma solidity ^0.8.20; -import { BridgeErrors } from "./BridgeErrors.sol"; -import { Create2Upgradeable } from - "@openzeppelin/contracts-upgradeable/utils/Create2Upgradeable.sol"; import { EssentialContract } from "../common/EssentialContract.sol"; import { LibAddress } from "../libs/LibAddress.sol"; import { Proxied } from "../common/Proxied.sol"; -import { SafeERC20Upgradeable } from - "@openzeppelin/contracts-upgradeable/token/ERC20/utils/SafeERC20Upgradeable.sol"; + +import { BridgeErrors } from "./BridgeErrors.sol"; /// @title EtherVault /// @notice This contract is initialized with 2^128 Ether and allows authorized diff --git a/packages/protocol/contracts/bridge/libs/LibBridgeData.sol b/packages/protocol/contracts/bridge/libs/LibBridgeData.sol index d278167b09..582418153b 100644 --- a/packages/protocol/contracts/bridge/libs/LibBridgeData.sol +++ b/packages/protocol/contracts/bridge/libs/LibBridgeData.sol @@ -5,11 +5,9 @@ // |_|\__,_|_|_\_\___/ |____\__,_|_.__/__/ pragma solidity ^0.8.20; -import { AddressResolver } from "../../common/AddressResolver.sol"; import { BlockHeader } from "../../libs/LibBlockHeader.sol"; + import { IBridge } from "../IBridge.sol"; -import { LibAddress } from "../../libs/LibAddress.sol"; -import { LibMath } from "../../libs/LibMath.sol"; /// @title LibBridgeData /// @notice This library provides functions and data structures for storing and diff --git a/packages/protocol/contracts/bridge/libs/LibBridgeInvoke.sol b/packages/protocol/contracts/bridge/libs/LibBridgeInvoke.sol index cab58ed9de..56920f0778 100644 --- a/packages/protocol/contracts/bridge/libs/LibBridgeInvoke.sol +++ b/packages/protocol/contracts/bridge/libs/LibBridgeInvoke.sol @@ -7,7 +7,7 @@ pragma solidity ^0.8.20; import { IBridge } from "../IBridge.sol"; -import { LibAddress } from "../../libs/LibAddress.sol"; + import { LibBridgeData } from "./LibBridgeData.sol"; /// @title LibBridgeInvoke @@ -16,7 +16,6 @@ import { LibBridgeData } from "./LibBridgeData.sol"; /// The library facilitates the interaction with messages sent across the /// bridge, allowing for call execution and state updates. library LibBridgeInvoke { - using LibAddress for address; using LibBridgeData for IBridge.Message; error B_GAS_LIMIT(); diff --git a/packages/protocol/contracts/bridge/libs/LibBridgeProcess.sol b/packages/protocol/contracts/bridge/libs/LibBridgeProcess.sol index 67c8f72744..17a6729c98 100644 --- a/packages/protocol/contracts/bridge/libs/LibBridgeProcess.sol +++ b/packages/protocol/contracts/bridge/libs/LibBridgeProcess.sol @@ -7,14 +7,15 @@ pragma solidity ^0.8.20; import { AddressResolver } from "../../common/AddressResolver.sol"; -import { EtherVault } from "../EtherVault.sol"; -import { IBridge } from "../IBridge.sol"; import { ISignalService } from "../../signal/ISignalService.sol"; import { LibAddress } from "../../libs/LibAddress.sol"; + +import { EtherVault } from "../EtherVault.sol"; +import { IBridge } from "../IBridge.sol"; + import { LibBridgeData } from "./LibBridgeData.sol"; import { LibBridgeInvoke } from "./LibBridgeInvoke.sol"; import { LibBridgeStatus } from "./LibBridgeStatus.sol"; -import { LibMath } from "../../libs/LibMath.sol"; /// @title LibBridgeProcess Library /// @notice This library provides functions for processing bridge messages on @@ -22,7 +23,6 @@ import { LibMath } from "../../libs/LibMath.sol"; /// The library handles the execution of bridge messages, status updates, and /// fee refunds. library LibBridgeProcess { - using LibMath for uint256; using LibAddress for address; using LibBridgeData for IBridge.Message; using LibBridgeData for LibBridgeData.State; diff --git a/packages/protocol/contracts/bridge/libs/LibBridgeRecall.sol b/packages/protocol/contracts/bridge/libs/LibBridgeRecall.sol index cf8727f09c..1746595e7c 100644 --- a/packages/protocol/contracts/bridge/libs/LibBridgeRecall.sol +++ b/packages/protocol/contracts/bridge/libs/LibBridgeRecall.sol @@ -7,11 +7,13 @@ pragma solidity ^0.8.20; import { AddressResolver } from "../../common/AddressResolver.sol"; +import { LibAddress } from "../../libs/LibAddress.sol"; + import { EtherVault } from "../EtherVault.sol"; import { IRecallableMessageSender, IBridge } from "../IBridge.sol"; + import { LibBridgeData } from "./LibBridgeData.sol"; import { LibBridgeStatus } from "./LibBridgeStatus.sol"; -import { LibAddress } from "../../libs/LibAddress.sol"; /// @title LibBridgeRecall /// @notice This library provides functions for releasing Ether and tokens diff --git a/packages/protocol/contracts/bridge/libs/LibBridgeRetry.sol b/packages/protocol/contracts/bridge/libs/LibBridgeRetry.sol index fedb8f831b..82092e68a7 100644 --- a/packages/protocol/contracts/bridge/libs/LibBridgeRetry.sol +++ b/packages/protocol/contracts/bridge/libs/LibBridgeRetry.sol @@ -7,9 +7,11 @@ pragma solidity ^0.8.20; import { AddressResolver } from "../../common/AddressResolver.sol"; +import { LibAddress } from "../../libs/LibAddress.sol"; + import { EtherVault } from "../EtherVault.sol"; import { IBridge } from "../IBridge.sol"; -import { LibAddress } from "../../libs/LibAddress.sol"; + import { LibBridgeData } from "./LibBridgeData.sol"; import { LibBridgeInvoke } from "./LibBridgeInvoke.sol"; import { LibBridgeStatus } from "./LibBridgeStatus.sol"; diff --git a/packages/protocol/contracts/bridge/libs/LibBridgeSend.sol b/packages/protocol/contracts/bridge/libs/LibBridgeSend.sol index e4ea4e222b..ef1f48a19a 100644 --- a/packages/protocol/contracts/bridge/libs/LibBridgeSend.sol +++ b/packages/protocol/contracts/bridge/libs/LibBridgeSend.sol @@ -7,9 +7,11 @@ pragma solidity ^0.8.20; import { AddressResolver } from "../../common/AddressResolver.sol"; -import { IBridge } from "../IBridge.sol"; import { ISignalService } from "../../signal/ISignalService.sol"; import { LibAddress } from "../../libs/LibAddress.sol"; + +import { IBridge } from "../IBridge.sol"; + import { LibBridgeData } from "./LibBridgeData.sol"; /// @title LibBridgeSend diff --git a/packages/protocol/contracts/bridge/libs/LibBridgeStatus.sol b/packages/protocol/contracts/bridge/libs/LibBridgeStatus.sol index b87dfb4eb4..64c45ff200 100644 --- a/packages/protocol/contracts/bridge/libs/LibBridgeStatus.sol +++ b/packages/protocol/contracts/bridge/libs/LibBridgeStatus.sol @@ -9,9 +9,10 @@ pragma solidity ^0.8.20; import { AddressResolver } from "../../common/AddressResolver.sol"; import { BlockHeader, LibBlockHeader } from "../../libs/LibBlockHeader.sol"; import { ICrossChainSync } from "../../common/ICrossChainSync.sol"; -import { LibBridgeData } from "./LibBridgeData.sol"; import { LibTrieProof } from "../../libs/LibTrieProof.sol"; +import { LibBridgeData } from "./LibBridgeData.sol"; + /// @title LibBridgeStatus /// @notice This library provides functions for getting and updating the status /// of bridge messages. diff --git a/packages/protocol/contracts/common/AddressManager.sol b/packages/protocol/contracts/common/AddressManager.sol index 5c3f73837e..d68a6ec0f4 100644 --- a/packages/protocol/contracts/common/AddressManager.sol +++ b/packages/protocol/contracts/common/AddressManager.sol @@ -6,8 +6,8 @@ pragma solidity ^0.8.20; -import { OwnableUpgradeable } from - "@openzeppelin/contracts-upgradeable/access/OwnableUpgradeable.sol"; +import { OwnableUpgradeable } from "@ozu/access/OwnableUpgradeable.sol"; + import { Proxied } from "./Proxied.sol"; /// @title IAddressManager diff --git a/packages/protocol/contracts/common/EssentialContract.sol b/packages/protocol/contracts/common/EssentialContract.sol index 62ba94836a..6a1ed583fd 100644 --- a/packages/protocol/contracts/common/EssentialContract.sol +++ b/packages/protocol/contracts/common/EssentialContract.sol @@ -6,12 +6,12 @@ pragma solidity ^0.8.20; +import { OwnableUpgradeable } from "@ozu/access/OwnableUpgradeable.sol"; +import { ReentrancyGuardUpgradeable } from + "@ozu/security/ReentrancyGuardUpgradeable.sol"; + import { AddressResolver } from "./AddressResolver.sol"; import { IAddressManager } from "./AddressManager.sol"; -import { OwnableUpgradeable } from - "@openzeppelin/contracts-upgradeable/access/OwnableUpgradeable.sol"; -import { ReentrancyGuardUpgradeable } from - "@openzeppelin/contracts-upgradeable/security/ReentrancyGuardUpgradeable.sol"; /// @title EssentialContract /// @notice This contract serves as the base contract for many core components. diff --git a/packages/protocol/contracts/common/IMintableERC20.sol b/packages/protocol/contracts/common/IMintableERC20.sol index f3c8dc4c2b..82994b0311 100644 --- a/packages/protocol/contracts/common/IMintableERC20.sol +++ b/packages/protocol/contracts/common/IMintableERC20.sol @@ -6,8 +6,7 @@ pragma solidity ^0.8.20; -import { IERC20Upgradeable } from - "@openzeppelin/contracts-upgradeable/token/ERC20/IERC20Upgradeable.sol"; +import { IERC20Upgradeable } from "@ozu/token/ERC20/IERC20Upgradeable.sol"; /// @title IMintableERC20 /// @notice Interface for ERC20 tokens with mint and burn functionality. diff --git a/packages/protocol/contracts/common/Proxied.sol b/packages/protocol/contracts/common/Proxied.sol index 26b2472ae2..02f15819d9 100644 --- a/packages/protocol/contracts/common/Proxied.sol +++ b/packages/protocol/contracts/common/Proxied.sol @@ -6,8 +6,7 @@ pragma solidity ^0.8.20; -import { Initializable } from - "@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol"; +import { Initializable } from "@ozu/proxy/utils/Initializable.sol"; /// @title Proxied /// @dev This abstract contract extends Initializable from OpenZeppelin's diff --git a/packages/protocol/contracts/libs/Lib1559Math.sol b/packages/protocol/contracts/libs/Lib1559Math.sol index 99c09bc4a8..200190c274 100644 --- a/packages/protocol/contracts/libs/Lib1559Math.sol +++ b/packages/protocol/contracts/libs/Lib1559Math.sol @@ -6,9 +6,9 @@ pragma solidity ^0.8.20; +import { SafeCastUpgradeable } from "@ozu/utils/math/SafeCastUpgradeable.sol"; + import { LibFixedPointMath } from "../thirdparty/LibFixedPointMath.sol"; -import { SafeCastUpgradeable } from - "@openzeppelin/contracts-upgradeable/utils/math/SafeCastUpgradeable.sol"; /// @title Lib1559Math /// @dev This library provides utilities related to the L2 EIP-1559 diff --git a/packages/protocol/contracts/libs/LibAddress.sol b/packages/protocol/contracts/libs/LibAddress.sol index 87b0e9312e..d072303dfb 100644 --- a/packages/protocol/contracts/libs/LibAddress.sol +++ b/packages/protocol/contracts/libs/LibAddress.sol @@ -6,17 +6,14 @@ pragma solidity ^0.8.20; -import { AddressUpgradeable } from - "@openzeppelin/contracts-upgradeable/utils/AddressUpgradeable.sol"; -import { ECDSAUpgradeable } from - "@openzeppelin/contracts-upgradeable/utils/cryptography/ECDSAUpgradeable.sol"; +import { AddressUpgradeable } from "@ozu/utils/AddressUpgradeable.sol"; +import { ECDSAUpgradeable } from "@ozu/utils/cryptography/ECDSAUpgradeable.sol"; import { IERC165Upgradeable } from - "@openzeppelin/contracts-upgradeable/utils/introspection/IERC165Upgradeable.sol"; -import { IERC1271Upgradeable } from - "@openzeppelin/contracts-upgradeable/interfaces/IERC1271Upgradeable.sol"; + "@ozu/utils/introspection/IERC165Upgradeable.sol"; +import { IERC1271Upgradeable } from "@ozu/interfaces/IERC1271Upgradeable.sol"; + /// @title LibAddress /// @dev Provides utilities for address-related operations. - library LibAddress { bytes4 private constant EIP1271_MAGICVALUE = 0x1626ba7e; diff --git a/packages/protocol/contracts/signal/SignalService.sol b/packages/protocol/contracts/signal/SignalService.sol index 9b770cda67..6a02f09fbc 100644 --- a/packages/protocol/contracts/signal/SignalService.sol +++ b/packages/protocol/contracts/signal/SignalService.sol @@ -8,9 +8,10 @@ pragma solidity ^0.8.20; import { EssentialContract } from "../common/EssentialContract.sol"; import { ICrossChainSync } from "../common/ICrossChainSync.sol"; -import { ISignalService } from "./ISignalService.sol"; -import { LibSecureMerkleTrie } from "../thirdparty/LibSecureMerkleTrie.sol"; import { Proxied } from "../common/Proxied.sol"; +import { LibSecureMerkleTrie } from "../thirdparty/LibSecureMerkleTrie.sol"; + +import { ISignalService } from "./ISignalService.sol"; /// @title SignalService /// @notice See the documentation in {ISignalService} for more details. diff --git a/packages/protocol/contracts/test/erc20/FreeMintERC20.sol b/packages/protocol/contracts/test/erc20/FreeMintERC20.sol index 81ae7b7176..8f4a63f558 100644 --- a/packages/protocol/contracts/test/erc20/FreeMintERC20.sol +++ b/packages/protocol/contracts/test/erc20/FreeMintERC20.sol @@ -6,7 +6,7 @@ pragma solidity ^0.8.20; -import { ERC20 } from "@openzeppelin/contracts/token/ERC20/ERC20.sol"; +import { ERC20 } from "@oz/token/ERC20/ERC20.sol"; // An ERC20 Token with a mint function anyone can call, for free, to receive // 5 tokens. diff --git a/packages/protocol/contracts/test/erc20/MayFailFreeMintERC20.sol b/packages/protocol/contracts/test/erc20/MayFailFreeMintERC20.sol index 3c836083c2..b6f52d033e 100644 --- a/packages/protocol/contracts/test/erc20/MayFailFreeMintERC20.sol +++ b/packages/protocol/contracts/test/erc20/MayFailFreeMintERC20.sol @@ -6,7 +6,7 @@ pragma solidity ^0.8.20; -import { ERC20 } from "@openzeppelin/contracts/token/ERC20/ERC20.sol"; +import { ERC20 } from "@oz/token/ERC20/ERC20.sol"; // An ERC20 token for testing the Taiko Bridge on testnets. // This token has 50% of failure on transfers so we can diff --git a/packages/protocol/contracts/test/erc20/RegularERC20.sol b/packages/protocol/contracts/test/erc20/RegularERC20.sol index aee036b35d..e0d2b73e85 100644 --- a/packages/protocol/contracts/test/erc20/RegularERC20.sol +++ b/packages/protocol/contracts/test/erc20/RegularERC20.sol @@ -2,7 +2,7 @@ pragma solidity ^0.8.20; -import { ERC20 } from "@openzeppelin/contracts/token/ERC20/ERC20.sol"; +import { ERC20 } from "@oz/token/ERC20/ERC20.sol"; contract RegularERC20 is ERC20 { constructor(uint256 initialSupply) ERC20("RegularERC20", "RGL") { diff --git a/packages/protocol/contracts/tokenvault/BaseNFTVault.sol b/packages/protocol/contracts/tokenvault/BaseNFTVault.sol index 51cd2afbc1..4e0106f3b8 100644 --- a/packages/protocol/contracts/tokenvault/BaseNFTVault.sol +++ b/packages/protocol/contracts/tokenvault/BaseNFTVault.sol @@ -7,16 +7,7 @@ pragma solidity ^0.8.20; import { EssentialContract } from "../common/EssentialContract.sol"; -import { IERC1155ReceiverUpgradeable } from - "@openzeppelin/contracts-upgradeable/token/ERC1155/IERC1155ReceiverUpgradeable.sol"; -import { IERC165Upgradeable } from - "@openzeppelin/contracts-upgradeable/utils/introspection/IERC165Upgradeable.sol"; -import { IERC721ReceiverUpgradeable } from - "@openzeppelin/contracts-upgradeable/token/ERC721/IERC721ReceiverUpgradeable.sol"; -import { IERC721Upgradeable } from - "@openzeppelin/contracts-upgradeable/token/ERC721/IERC721Upgradeable.sol"; -import { IRecallableMessageSender, IBridge } from "../bridge/IBridge.sol"; -import { Proxied } from "../common/Proxied.sol"; +import { IRecallableMessageSender } from "../bridge/IBridge.sol"; /// @title BaseNFTVault /// @notice Abstract contract for bridging NFTs across different chains. diff --git a/packages/protocol/contracts/tokenvault/BridgedERC1155.sol b/packages/protocol/contracts/tokenvault/BridgedERC1155.sol index 85a94693f1..ec270855c1 100644 --- a/packages/protocol/contracts/tokenvault/BridgedERC1155.sol +++ b/packages/protocol/contracts/tokenvault/BridgedERC1155.sol @@ -6,16 +6,14 @@ pragma solidity ^0.8.20; -import { ERC1155Upgradeable } from - "@openzeppelin/contracts-upgradeable/token/ERC1155/ERC1155Upgradeable.sol"; -import { EssentialContract } from "../common/EssentialContract.sol"; +import { ERC1155Upgradeable } from "@ozu/token/ERC1155/ERC1155Upgradeable.sol"; import { IERC1155MetadataURIUpgradeable } from - "@openzeppelin/contracts-upgradeable/token/ERC1155/extensions/IERC1155MetadataURIUpgradeable.sol"; -import { IERC1155Upgradeable } from - "@openzeppelin/contracts-upgradeable/token/ERC1155/IERC1155Upgradeable.sol"; + "@ozu/token/ERC1155/extensions/IERC1155MetadataURIUpgradeable.sol"; +import { IERC1155Upgradeable } from "@ozu/token/ERC1155/IERC1155Upgradeable.sol"; +import { StringsUpgradeable } from "@ozu/utils/StringsUpgradeable.sol"; + +import { EssentialContract } from "../common/EssentialContract.sol"; import { Proxied } from "../common/Proxied.sol"; -import { StringsUpgradeable } from - "@openzeppelin/contracts-upgradeable/utils/StringsUpgradeable.sol"; /// @title BridgedERC1155 /// @notice Contract for bridging ERC1155 tokens across different chains. diff --git a/packages/protocol/contracts/tokenvault/BridgedERC20.sol b/packages/protocol/contracts/tokenvault/BridgedERC20.sol index a6edb8dfaf..8962269162 100644 --- a/packages/protocol/contracts/tokenvault/BridgedERC20.sol +++ b/packages/protocol/contracts/tokenvault/BridgedERC20.sol @@ -9,14 +9,14 @@ pragma solidity ^0.8.20; import { ERC20Upgradeable, IERC20Upgradeable -} from "@openzeppelin/contracts-upgradeable/token/ERC20/ERC20Upgradeable.sol"; +} from "@ozu/token/ERC20/ERC20Upgradeable.sol"; import { IERC20MetadataUpgradeable } from - "@openzeppelin/contracts-upgradeable/token/ERC20/extensions/IERC20MetadataUpgradeable.sol"; + "@ozu/token/ERC20/extensions/IERC20MetadataUpgradeable.sol"; +import { StringsUpgradeable } from "@ozu/utils/StringsUpgradeable.sol"; + import { EssentialContract } from "../common/EssentialContract.sol"; import { IMintableERC20 } from "../common/IMintableERC20.sol"; import { Proxied } from "../common/Proxied.sol"; -import { StringsUpgradeable } from - "@openzeppelin/contracts-upgradeable/utils/StringsUpgradeable.sol"; /// @title BridgedERC20 /// @notice An upgradeable ERC20 contract that represents tokens bridged from diff --git a/packages/protocol/contracts/tokenvault/BridgedERC721.sol b/packages/protocol/contracts/tokenvault/BridgedERC721.sol index e5e05041b9..4f0e75063c 100644 --- a/packages/protocol/contracts/tokenvault/BridgedERC721.sol +++ b/packages/protocol/contracts/tokenvault/BridgedERC721.sol @@ -6,12 +6,11 @@ pragma solidity ^0.8.20; +import { ERC721Upgradeable } from "@ozu/token/ERC721/ERC721Upgradeable.sol"; +import { StringsUpgradeable } from "@ozu/utils/StringsUpgradeable.sol"; + import { EssentialContract } from "../common/EssentialContract.sol"; -import { ERC721Upgradeable } from - "@openzeppelin/contracts-upgradeable/token/ERC721/ERC721Upgradeable.sol"; import { Proxied } from "../common/Proxied.sol"; -import { StringsUpgradeable } from - "@openzeppelin/contracts-upgradeable/utils/StringsUpgradeable.sol"; /// @title BridgedERC721 /// @notice Contract for bridging ERC721 tokens across different chains. diff --git a/packages/protocol/contracts/tokenvault/ERC1155Vault.sol b/packages/protocol/contracts/tokenvault/ERC1155Vault.sol index ef53c26865..69a1a3206d 100644 --- a/packages/protocol/contracts/tokenvault/ERC1155Vault.sol +++ b/packages/protocol/contracts/tokenvault/ERC1155Vault.sol @@ -6,21 +6,22 @@ pragma solidity ^0.8.20; -import { Create2Upgradeable } from - "@openzeppelin/contracts-upgradeable/utils/Create2Upgradeable.sol"; -import { ERC1155ReceiverUpgradeable } from - "@openzeppelin/contracts-upgradeable/token/ERC1155/utils/ERC1155ReceiverUpgradeable.sol"; -import { ERC1155Upgradeable } from - "@openzeppelin/contracts-upgradeable/token/ERC1155/ERC1155Upgradeable.sol"; -import { IERC1155ReceiverUpgradeable } from - "@openzeppelin/contracts-upgradeable/token/ERC1155/IERC1155ReceiverUpgradeable.sol"; -import { IERC1155Upgradeable } from - "@openzeppelin/contracts-upgradeable/token/ERC1155/IERC1155Upgradeable.sol"; +import { Create2Upgradeable } from "@ozu/utils/Create2Upgradeable.sol"; +import { + ERC1155ReceiverUpgradeable, + IERC1155ReceiverUpgradeable +} from "@ozu/token/ERC1155/utils/ERC1155ReceiverUpgradeable.sol"; +import { + ERC1155Upgradeable, + IERC1155Upgradeable +} from "@ozu/token/ERC1155/ERC1155Upgradeable.sol"; + +import { Proxied } from "../common/Proxied.sol"; import { IRecallableMessageSender, IBridge } from "../bridge/IBridge.sol"; -import { BaseNFTVault } from "./BaseNFTVault.sol"; import { LibAddress } from "../libs/LibAddress.sol"; + import { LibVaultUtils } from "./libs/LibVaultUtils.sol"; -import { Proxied } from "../common/Proxied.sol"; +import { BaseNFTVault } from "./BaseNFTVault.sol"; import { ProxiedBridgedERC1155 } from "./BridgedERC1155.sol"; /// @title ERC1155NameAndSymbol diff --git a/packages/protocol/contracts/tokenvault/ERC20Vault.sol b/packages/protocol/contracts/tokenvault/ERC20Vault.sol index 45b1eb84f2..23f34537df 100644 --- a/packages/protocol/contracts/tokenvault/ERC20Vault.sol +++ b/packages/protocol/contracts/tokenvault/ERC20Vault.sol @@ -6,29 +6,30 @@ pragma solidity ^0.8.20; -import { BridgedERC20, ProxiedBridgedERC20 } from "./BridgedERC20.sol"; -import { Create2Upgradeable } from - "@openzeppelin/contracts-upgradeable/utils/Create2Upgradeable.sol"; +import { Create2Upgradeable } from "@ozu/utils/Create2Upgradeable.sol"; import { ERC20Upgradeable, IERC20Upgradeable -} from "@openzeppelin/contracts-upgradeable/token/ERC20/ERC20Upgradeable.sol"; -import { EssentialContract } from "../common/EssentialContract.sol"; +} from "@ozu/token/ERC20/ERC20Upgradeable.sol"; +import { SafeERC20Upgradeable } from + "@ozu/token/ERC20/utils/SafeERC20Upgradeable.sol"; import { IERC165Upgradeable } from - "@openzeppelin/contracts-upgradeable/utils/introspection/IERC165Upgradeable.sol"; -import { IRecallableMessageSender, IBridge } from "../bridge/IBridge.sol"; + "@ozu/utils/introspection/IERC165Upgradeable.sol"; + +import { EssentialContract } from "../common/EssentialContract.sol"; import { IMintableERC20 } from "../common/IMintableERC20.sol"; -import { LibAddress } from "../libs/LibAddress.sol"; -import { LibVaultUtils } from "./libs/LibVaultUtils.sol"; import { Proxied } from "../common/Proxied.sol"; -import { SafeERC20Upgradeable } from - "@openzeppelin/contracts-upgradeable/token/ERC20/utils/SafeERC20Upgradeable.sol"; +import { IRecallableMessageSender, IBridge } from "../bridge/IBridge.sol"; +import { LibAddress } from "../libs/LibAddress.sol"; import { TaikoToken } from "../L1/TaikoToken.sol"; +import { BridgedERC20, ProxiedBridgedERC20 } from "./BridgedERC20.sol"; +import { LibVaultUtils } from "./libs/LibVaultUtils.sol"; /// @title ERC20Vault /// @notice This vault holds all ERC20 tokens (excluding Ether) that users have /// deposited. It also manages the mapping between canonical ERC20 tokens and /// their bridged tokens. + contract ERC20Vault is EssentialContract, IERC165Upgradeable, diff --git a/packages/protocol/contracts/tokenvault/ERC721Vault.sol b/packages/protocol/contracts/tokenvault/ERC721Vault.sol index cd1a94ecda..210d4089f2 100644 --- a/packages/protocol/contracts/tokenvault/ERC721Vault.sol +++ b/packages/protocol/contracts/tokenvault/ERC721Vault.sol @@ -6,21 +6,22 @@ pragma solidity ^0.8.20; -import { BaseNFTVault } from "./BaseNFTVault.sol"; -import { Create2Upgradeable } from - "@openzeppelin/contracts-upgradeable/utils/Create2Upgradeable.sol"; -import { ERC721Upgradeable } from - "@openzeppelin/contracts-upgradeable/token/ERC721/ERC721Upgradeable.sol"; +import { Create2Upgradeable } from "@ozu/utils/Create2Upgradeable.sol"; +import { + ERC721Upgradeable, + IERC721Upgradeable +} from "@ozu/token/ERC721/ERC721Upgradeable.sol"; import { IERC165Upgradeable } from - "@openzeppelin/contracts-upgradeable/utils/introspection/IERC165Upgradeable.sol"; + "@ozu/utils/introspection/IERC165Upgradeable.sol"; import { IERC721ReceiverUpgradeable } from - "@openzeppelin/contracts-upgradeable/token/ERC721/IERC721ReceiverUpgradeable.sol"; -import { IERC721Upgradeable } from - "@openzeppelin/contracts-upgradeable/token/ERC721/IERC721Upgradeable.sol"; + "@ozu/token/ERC721/IERC721ReceiverUpgradeable.sol"; + import { IBridge, IRecallableMessageSender } from "../bridge/IBridge.sol"; import { LibAddress } from "../libs/LibAddress.sol"; -import { LibVaultUtils } from "./libs/LibVaultUtils.sol"; import { Proxied } from "../common/Proxied.sol"; + +import { BaseNFTVault } from "./BaseNFTVault.sol"; +import { LibVaultUtils } from "./libs/LibVaultUtils.sol"; import { ProxiedBridgedERC721 } from "./BridgedERC721.sol"; /// @title ERC721Vault diff --git a/packages/protocol/contracts/tokenvault/libs/LibVaultUtils.sol b/packages/protocol/contracts/tokenvault/libs/LibVaultUtils.sol index 6815caed6d..631e99ea54 100644 --- a/packages/protocol/contracts/tokenvault/libs/LibVaultUtils.sol +++ b/packages/protocol/contracts/tokenvault/libs/LibVaultUtils.sol @@ -6,10 +6,11 @@ pragma solidity ^0.8.20; +import { TransparentUpgradeableProxy } from + "@oz/proxy/transparent/TransparentUpgradeableProxy.sol"; + import { AddressResolver } from "../../common/AddressResolver.sol"; import { IBridge } from "../../bridge/IBridge.sol"; -import { TransparentUpgradeableProxy } from - "@openzeppelin/contracts/proxy/transparent/TransparentUpgradeableProxy.sol"; library LibVaultUtils { uint256 public constant MAX_TOKEN_PER_TXN = 10; diff --git a/packages/protocol/genesis/GenerateGenesis.g.sol b/packages/protocol/genesis/GenerateGenesis.g.sol index a17802ed40..506cb9d000 100644 --- a/packages/protocol/genesis/GenerateGenesis.g.sol +++ b/packages/protocol/genesis/GenerateGenesis.g.sol @@ -1,6 +1,12 @@ // SPDX-License-Identifier: MIT pragma solidity ^0.8.20; +import { console2 } from "forge-std/console2.sol"; +import { stdJson } from "forge-std/StdJson.sol"; +import { Test } from "forge-std/Test.sol"; + +import { TransparentUpgradeableProxy } from "@oz/proxy/transparent/TransparentUpgradeableProxy.sol"; + import { AddressManager } from "../contracts/common/AddressManager.sol"; import { AddressResolver } from "../contracts/common/AddressResolver.sol"; import { Bridge } from "../contracts/bridge/Bridge.sol"; @@ -14,10 +20,7 @@ import { LibBridgeStatus } from "../contracts/bridge/libs/LibBridgeStatus.sol"; import { RegularERC20 } from "../contracts/test/erc20/RegularERC20.sol"; import { SignalService } from "../contracts/signal/SignalService.sol"; import { TaikoL2 } from "../contracts/L2/TaikoL2.sol"; -import { Test } from "forge-std/Test.sol"; -import { TransparentUpgradeableProxy } from "@openzeppelin/contracts/proxy/transparent/TransparentUpgradeableProxy.sol"; -import { console2 } from "forge-std/console2.sol"; -import { stdJson } from "forge-std/StdJson.sol"; + contract TestGenerateGenesis is Test, AddressResolver { using stdJson for string; diff --git a/packages/protocol/remappings.txt b/packages/protocol/remappings.txt index 271c727270..73df5859ac 100644 --- a/packages/protocol/remappings.txt +++ b/packages/protocol/remappings.txt @@ -1,5 +1,5 @@ forge-std/=lib/forge-std/src/ solmate/=lib/solmate/src/ ds-test/=lib/forge-std/lib/ds-test/src/ -@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/ -@openzeppelin/contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/ \ No newline at end of file +@oz/=lib/openzeppelin-contracts/contracts/ +@ozu/=lib/openzeppelin-contracts-upgradeable/contracts/ diff --git a/packages/protocol/script/DeployOnL1.s.sol b/packages/protocol/script/DeployOnL1.s.sol index 81823268ed..e036ebc579 100644 --- a/packages/protocol/script/DeployOnL1.s.sol +++ b/packages/protocol/script/DeployOnL1.s.sol @@ -8,8 +8,7 @@ pragma solidity ^0.8.20; import "forge-std/Script.sol"; import "forge-std/console2.sol"; -import - "@openzeppelin/contracts/proxy/transparent/TransparentUpgradeableProxy.sol"; +import "@oz/proxy/transparent/TransparentUpgradeableProxy.sol"; import "../contracts/L1/TaikoToken.sol"; import "../contracts/L1/TaikoL1.sol"; import "../contracts/L1/verifiers/PseZkVerifier.sol"; diff --git a/packages/protocol/script/upgrade/UpgradeScript.s.sol b/packages/protocol/script/upgrade/UpgradeScript.s.sol index 31aece2a5d..b59057ee79 100644 --- a/packages/protocol/script/upgrade/UpgradeScript.s.sol +++ b/packages/protocol/script/upgrade/UpgradeScript.s.sol @@ -8,8 +8,7 @@ pragma solidity ^0.8.20; import "forge-std/Script.sol"; import "forge-std/console2.sol"; -import - "@openzeppelin/contracts/proxy/transparent/TransparentUpgradeableProxy.sol"; +import "@oz/proxy/transparent/TransparentUpgradeableProxy.sol"; contract UpgradeScript is Script { uint256 public deployerPrivateKey = vm.envUint("PRIVATE_KEY"); diff --git a/packages/protocol/test/L1/TaikoL1.t.sol b/packages/protocol/test/L1/TaikoL1.t.sol index 8297ee838c..cdc5711417 100644 --- a/packages/protocol/test/L1/TaikoL1.t.sol +++ b/packages/protocol/test/L1/TaikoL1.t.sol @@ -10,7 +10,6 @@ import { TaikoErrors } from "../../contracts/L1/TaikoErrors.sol"; import { TaikoL1 } from "../../contracts/L1/TaikoL1.sol"; import { TaikoToken } from "../../contracts/L1/TaikoToken.sol"; import { SignalService } from "../../contracts/signal/SignalService.sol"; -import { Strings } from "@openzeppelin/contracts/utils/Strings.sol"; import { TaikoL1TestBase } from "./TaikoL1TestBase.sol"; contract TaikoL1_NoCooldown is TaikoL1 { diff --git a/packages/protocol/test/L1/TaikoL1LibProvingWithTiers.t.sol b/packages/protocol/test/L1/TaikoL1LibProvingWithTiers.t.sol index 01951d8f53..bdc0ca8a0d 100644 --- a/packages/protocol/test/L1/TaikoL1LibProvingWithTiers.t.sol +++ b/packages/protocol/test/L1/TaikoL1LibProvingWithTiers.t.sol @@ -3,6 +3,7 @@ pragma solidity ^0.8.20; import { Test } from "forge-std/Test.sol"; import { console2 } from "forge-std/console2.sol"; + import { AddressManager } from "../../contracts/common/AddressManager.sol"; import { LibUtils } from "../../contracts/L1/libs/LibUtils.sol"; import { GuardianVerifier } from @@ -12,7 +13,7 @@ import { TaikoErrors } from "../../contracts/L1/TaikoErrors.sol"; import { TaikoL1 } from "../../contracts/L1/TaikoL1.sol"; import { TaikoToken } from "../../contracts/L1/TaikoToken.sol"; import { SignalService } from "../../contracts/signal/SignalService.sol"; -import { Strings } from "@openzeppelin/contracts/utils/Strings.sol"; + import { TaikoL1TestBase } from "./TaikoL1TestBase.sol"; import { LibTiers } from "../../contracts/L1/tiers/ITierProvider.sol"; diff --git a/packages/protocol/test/L1/TaikoL1TestBase.sol b/packages/protocol/test/L1/TaikoL1TestBase.sol index 2d84341737..4ad3a3fd58 100644 --- a/packages/protocol/test/L1/TaikoL1TestBase.sol +++ b/packages/protocol/test/L1/TaikoL1TestBase.sol @@ -14,7 +14,8 @@ import { GuardianVerifier } from "../../contracts/L1/verifiers/GuardianVerifier.sol"; import { PseZkVerifier } from "../../contracts/L1/verifiers/PseZkVerifier.sol"; import { SignalService } from "../../contracts/signal/SignalService.sol"; -import { Strings } from "@openzeppelin/contracts/utils/Strings.sol"; +import { StringsUpgradeable as Strings } from + "@ozu/utils/StringsUpgradeable.sol"; import { AddressResolver } from "../../contracts/common/AddressResolver.sol"; import { LibTiers } from "../../contracts/L1/tiers/ITierProvider.sol"; diff --git a/packages/protocol/test/L1/TaikoToken.t.sol b/packages/protocol/test/L1/TaikoToken.t.sol index 2af49e681b..f44b44230c 100644 --- a/packages/protocol/test/L1/TaikoToken.t.sol +++ b/packages/protocol/test/L1/TaikoToken.t.sol @@ -6,7 +6,7 @@ import { AddressManager } from "../../contracts/common/AddressManager.sol"; import { AddressResolver } from "../../contracts/common/AddressResolver.sol"; import { TaikoToken } from "../../contracts/L1/TaikoToken.sol"; import { TransparentUpgradeableProxy } from - "@openzeppelin/contracts/proxy/transparent/TransparentUpgradeableProxy.sol"; + "@oz/proxy/transparent/TransparentUpgradeableProxy.sol"; contract TaikoTokenTest is TestBase { bytes32 GENESIS_BLOCK_HASH; diff --git a/packages/protocol/test/L2/TaikoL2.t.sol b/packages/protocol/test/L2/TaikoL2.t.sol index 7b3f6f683a..db8bd393a2 100644 --- a/packages/protocol/test/L2/TaikoL2.t.sol +++ b/packages/protocol/test/L2/TaikoL2.t.sol @@ -2,9 +2,8 @@ pragma solidity ^0.8.20; import { console2 } from "forge-std/console2.sol"; -import { Strings } from "@openzeppelin/contracts/utils/Strings.sol"; -import { SafeCastUpgradeable } from - "@openzeppelin/contracts-upgradeable/utils/math/SafeCastUpgradeable.sol"; +import { Strings } from "@oz/utils/Strings.sol"; +import { SafeCastUpgradeable } from "@ozu/utils/math/SafeCastUpgradeable.sol"; import { TestBase } from "../TestBase.sol"; import { TaikoL2 } from "../../contracts/L2/TaikoL2.sol"; diff --git a/packages/protocol/test/libs/Lib1559Math.t.sol b/packages/protocol/test/libs/Lib1559Math.t.sol index a628b3cf3f..0fbc0c50b3 100644 --- a/packages/protocol/test/libs/Lib1559Math.t.sol +++ b/packages/protocol/test/libs/Lib1559Math.t.sol @@ -4,8 +4,7 @@ pragma solidity ^0.8.20; import { Test } from "forge-std/Test.sol"; import { console2 } from "forge-std/console2.sol"; import { Lib1559Math as T } from "../../contracts/libs/Lib1559Math.sol"; -import { SafeCastUpgradeable } from - "@openzeppelin/contracts-upgradeable/utils/math/SafeCastUpgradeable.sol"; +import { SafeCastUpgradeable } from "@ozu/utils/math/SafeCastUpgradeable.sol"; contract TestLib1559Math is Test { using SafeCastUpgradeable for uint256; diff --git a/packages/protocol/test/tokenvault/ERC1155Vault.t.sol b/packages/protocol/test/tokenvault/ERC1155Vault.t.sol index 0937bbaa8a..52c5b870f4 100644 --- a/packages/protocol/test/tokenvault/ERC1155Vault.t.sol +++ b/packages/protocol/test/tokenvault/ERC1155Vault.t.sol @@ -22,9 +22,9 @@ import { LibBridgeStatus } from "../../contracts/bridge/libs/LibBridgeStatus.sol"; import { SignalService } from "../../contracts/signal/SignalService.sol"; import { ICrossChainSync } from "../../contracts/common/ICrossChainSync.sol"; -import { ERC1155 } from "@openzeppelin/contracts/token/ERC1155/ERC1155.sol"; -import - "@openzeppelin/contracts/proxy/transparent/TransparentUpgradeableProxy.sol"; +import { ERC1155 } from "@oz/token/ERC1155/ERC1155.sol"; +import { TransparentUpgradeableProxy } from + "@oz/proxy/transparent/TransparentUpgradeableProxy.sol"; contract TestTokenERC1155 is ERC1155 { constructor(string memory baseURI) ERC1155(baseURI) { } diff --git a/packages/protocol/test/tokenvault/ERC20Vault.t.sol b/packages/protocol/test/tokenvault/ERC20Vault.t.sol index fed22ca156..08bd45eaa5 100644 --- a/packages/protocol/test/tokenvault/ERC20Vault.t.sol +++ b/packages/protocol/test/tokenvault/ERC20Vault.t.sol @@ -11,8 +11,8 @@ import { SignalService } from "../../contracts/signal/SignalService.sol"; import { TaikoToken } from "../../contracts/L1/TaikoToken.sol"; import { Test } from "forge-std/Test.sol"; import { ERC20Vault } from "../../contracts/tokenvault/ERC20Vault.sol"; -import - "@openzeppelin/contracts/proxy/transparent/TransparentUpgradeableProxy.sol"; +import { TransparentUpgradeableProxy } from + "@oz/proxy/transparent/TransparentUpgradeableProxy.sol"; // PrankDestBridge lets us simulate a transaction to the ERC20Vault // from a named Bridge, without having to test/run through the real Bridge code, diff --git a/packages/protocol/test/tokenvault/ERC721Vault.t.sol b/packages/protocol/test/tokenvault/ERC721Vault.t.sol index 6fb22d642e..0545351684 100644 --- a/packages/protocol/test/tokenvault/ERC721Vault.t.sol +++ b/packages/protocol/test/tokenvault/ERC721Vault.t.sol @@ -21,9 +21,9 @@ import { LibBridgeStatus } from "../../contracts/bridge/libs/LibBridgeStatus.sol"; import { SignalService } from "../../contracts/signal/SignalService.sol"; import { ICrossChainSync } from "../../contracts/common/ICrossChainSync.sol"; -import { ERC721 } from "@openzeppelin/contracts/token/ERC721/ERC721.sol"; -import - "@openzeppelin/contracts/proxy/transparent/TransparentUpgradeableProxy.sol"; +import { ERC721 } from "@oz/token/ERC721/ERC721.sol"; +import { TransparentUpgradeableProxy } from + "@oz/proxy/transparent/TransparentUpgradeableProxy.sol"; contract TestTokenERC721 is ERC721 { string _baseTokenURI; From a7edd7b03e0cc242ed724e65734e686fb903ac25 Mon Sep 17 00:00:00 2001 From: Daniel Wang Date: Sat, 23 Sep 2023 21:52:36 +0800 Subject: [PATCH 17/87] Update TaikoL2.sol --- packages/protocol/contracts/L2/TaikoL2.sol | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/packages/protocol/contracts/L2/TaikoL2.sol b/packages/protocol/contracts/L2/TaikoL2.sol index 3306fb1e85..891bc40ff1 100644 --- a/packages/protocol/contracts/L2/TaikoL2.sol +++ b/packages/protocol/contracts/L2/TaikoL2.sol @@ -73,11 +73,10 @@ contract TaikoL2 is EssentialContract, TaikoL2Signer, ICrossChainSync { function init(address _addressManager) external initializer { EssentialContract._init(_addressManager); - if (block.number > 1) revert L2_TOO_LATE(); - if (block.chainid <= 1 || block.chainid >= type(uint64).max) { revert L2_INVALID_CHAIN_ID(); } + if (block.number > 1) revert L2_TOO_LATE(); parentTimestamp = uint64(block.timestamp); (publicInputHash,) = _calcPublicInputHash(block.number); From 7f8a1bcb62b686d4af5c5e9b2d804afd7a795db0 Mon Sep 17 00:00:00 2001 From: D <51912515+adaki2004@users.noreply.github.com> Date: Sat, 23 Sep 2023 16:32:27 +0200 Subject: [PATCH 18/87] fix(protocol): Fix tests (#14783) Co-authored-by: Daniel Wang <99078276+dantaik@users.noreply.github.com> Co-authored-by: Daniel Wang --- packages/protocol/contracts/L2/TaikoL2.sol | 4 + packages/protocol/script/DeployOnL1.s.sol | 14 ---- packages/protocol/test/L1/TaikoL1.t.sol | 12 +-- .../test/L1/TaikoL1LibProvingWithTiers.t.sol | 84 ++++++++++++++++++- packages/protocol/test/L1/TaikoL1TestBase.sol | 67 ++++++++++++--- packages/protocol/test/L2/TaikoL2.t.sol | 31 ++++--- packages/protocol/test/TestBase.sol | 6 +- 7 files changed, 172 insertions(+), 46 deletions(-) diff --git a/packages/protocol/contracts/L2/TaikoL2.sol b/packages/protocol/contracts/L2/TaikoL2.sol index 891bc40ff1..f5350f4ca5 100644 --- a/packages/protocol/contracts/L2/TaikoL2.sol +++ b/packages/protocol/contracts/L2/TaikoL2.sol @@ -33,6 +33,7 @@ contract TaikoL2 is EssentialContract, TaikoL2Signer, ICrossChainSync { uint128 xscale; uint128 yscale; uint32 gasIssuedPerSecond; + uint64 gasExcessMax; } // Mapping from L2 block numbers to their block hashes. @@ -81,6 +82,8 @@ contract TaikoL2 is EssentialContract, TaikoL2Signer, ICrossChainSync { parentTimestamp = uint64(block.timestamp); (publicInputHash,) = _calcPublicInputHash(block.number); + gasExcess = getEIP1559Config().gasExcessMax / 2; + if (block.number > 0) { uint256 parentHeight = block.number - 1; _l2Hashes[parentHeight] = blockhash(parentHeight); @@ -253,6 +256,7 @@ contract TaikoL2 is EssentialContract, TaikoL2Signer, ICrossChainSync { config.xscale = 1_488_514_844; config.yscale = 358_298_803_609_133_338_138_868_404_779; config.gasIssuedPerSecond = 12_500_000; + config.gasExcessMax = 90_900_000_000; } function _calcPublicInputHash(uint256 blockId) diff --git a/packages/protocol/script/DeployOnL1.s.sol b/packages/protocol/script/DeployOnL1.s.sol index e036ebc579..b557c36ab6 100644 --- a/packages/protocol/script/DeployOnL1.s.sol +++ b/packages/protocol/script/DeployOnL1.s.sol @@ -187,23 +187,9 @@ contract DeployOnL1 is Script { setAddress("signal_service", sharedSignalService); } - // PlonkVerifier - deployPlonkVerifiers(); - vm.stopBroadcast(); } - function deployPlonkVerifiers() private { - // TODO - // address[] memory plonkVerifiers = new address[](1); - // plonkVerifiers[0] = - // deployYulContract("contracts/libs/yul/PlonkVerifier.yulp"); - - // for (uint16 i = 0; i < plonkVerifiers.length; ++i) { - // setAddress(taikoL1.getVerifierName(i), plonkVerifiers[i]); - // } - } - function deployYulContract(string memory contractPath) private returns (address) diff --git a/packages/protocol/test/L1/TaikoL1.t.sol b/packages/protocol/test/L1/TaikoL1.t.sol index cdc5711417..085bda7af3 100644 --- a/packages/protocol/test/L1/TaikoL1.t.sol +++ b/packages/protocol/test/L1/TaikoL1.t.sol @@ -42,8 +42,6 @@ contract TaikoL1Test is TaikoL1TestBase { function setUp() public override { TaikoL1TestBase.setUp(); - // TODO - // registerAddress(L1.getVerifierName(100), address(new Verifier())); } /// @dev Test we can propose, prove, then verify more blocks than @@ -172,8 +170,6 @@ contract TaikoL1Test is TaikoL1TestBase { } vm.roll(block.number + 15 * 12); - // TODO - // vm.warp(block.timestamp + conf.proofRegularCooldown + 1); verifyBlock(Alice, conf.blockMaxProposals - 1); printVariables("after verify"); verifyBlock(Alice, conf.blockMaxProposals); @@ -317,6 +313,7 @@ contract TaikoL1Test is TaikoL1TestBase { } function test_L1_deposit_hash_creation() external { + giveEthAndTko(Bob, 1e6 ether, 100 ether); giveEthAndTko(Zachary, 1e6 ether, 0); // uint96 minAmount = conf.ethDepositMinAmount; uint96 maxAmount = conf.ethDepositMaxAmount; @@ -357,15 +354,14 @@ contract TaikoL1Test is TaikoL1TestBase { // We shall invoke proposeBlock() because this is what will call the // processDeposits() TaikoData.BlockMetadata memory meta = - proposeBlock(Alice, Zachary, 1_000_000, 1024); - + proposeBlock(Alice, Bob, 1_000_000, 1024); // Expected: - // 0x41c71a2af0eaa668a1241d7e1b09ac30d0e9ea6b6eb4a5a151029e87158d46f3 (pre + // 0x3b61cf81fd007398a8efd07a055ac8fb542bcfa62d76cf6dc28a889371afb21e (pre // calculated with these values) //console2.logBytes32(meta.depositsRoot); assertEq( keccak256(abi.encode(meta.depositsProcessed)), - 0x41c71a2af0eaa668a1241d7e1b09ac30d0e9ea6b6eb4a5a151029e87158d46f3 + 0x3b61cf81fd007398a8efd07a055ac8fb542bcfa62d76cf6dc28a889371afb21e ); } } diff --git a/packages/protocol/test/L1/TaikoL1LibProvingWithTiers.t.sol b/packages/protocol/test/L1/TaikoL1LibProvingWithTiers.t.sol index bdc0ca8a0d..fe4c3fdb4e 100644 --- a/packages/protocol/test/L1/TaikoL1LibProvingWithTiers.t.sol +++ b/packages/protocol/test/L1/TaikoL1LibProvingWithTiers.t.sol @@ -111,7 +111,7 @@ contract TaikoL1LibProvingWithTiers is TaikoL1TestBase { printVariables(""); } - function test_L1_ContestingWithDifferentProof() external { + function test_L1_ContestingWithDifferentButCorrectProof() external { giveEthAndTko(Alice, 1e8 ether, 1000 ether); giveEthAndTko(Carol, 1e8 ether, 1000 ether); console2.log("Alice balance:", tko.balanceOf(Alice)); @@ -187,6 +187,88 @@ contract TaikoL1LibProvingWithTiers is TaikoL1TestBase { printVariables(""); } + function test_L1_ContestingWithDifferentButInCorrectProof() external { + giveEthAndTko(Alice, 1e8 ether, 1000 ether); + giveEthAndTko(Carol, 1e8 ether, 1000 ether); + console2.log("Alice balance:", tko.balanceOf(Alice)); + // This is a very weird test (code?) issue here. + // If this line is uncommented, + // Alice/Bob has no balance.. (Causing reverts !!!) + // Current investigations are ongoing with foundry team + giveEthAndTko(Bob, 1e8 ether, 100 ether); + console2.log("Bob balance:", tko.balanceOf(Bob)); + // Bob + vm.prank(Bob, Bob); + + bytes32 parentHash = GENESIS_BLOCK_HASH; + for ( + uint256 blockId = 1; blockId < conf.blockMaxProposals * 3; blockId++ + ) { + printVariables("before propose"); + console2.log("Propose-olom a block-ot:", blockId); + TaikoData.BlockMetadata memory meta = + proposeBlock(Alice, Bob, 1_000_000, 1024); + //printVariables("after propose"); + mine(1); + + bytes32 blockHash = bytes32(1e10 + blockId); + bytes32 signalRoot = bytes32(1e9 + blockId); + // This proof cannot be verified obviously because of + // signalRoot instead of blockHash + uint16 minTier = L1.getBlock(meta.id).minTier; + + console2.log("Proveolom a block-ot:", blockId); + proveBlock( + Bob, Bob, meta, parentHash, blockHash, signalRoot, minTier, "" + ); + + if (minTier == LibTiers.TIER_OPTIMISTIC) { + // Try to contest + + console2.log("Contest-alom a block-ot:", blockId); + proveBlock( + Carol, + Carol, + meta, + parentHash, + signalRoot, + signalRoot, + minTier, + "" + ); + + vm.roll(block.number + 15 * 12); + + vm.warp( + block.timestamp + L1.getTier(minTier).cooldownWindow + 1 + ); + + // Cannot verify block because it is contested.. + verifyBlock(Carol, 1); + + console2.log("Re-proveolom a block-ot:", blockId); + proveBlock( + Carol, + Carol, + meta, + parentHash, + blockHash, + signalRoot, + LibTiers.TIER_PSE_ZKEVM, + "" + ); + } + + // Otherwise just not contest + vm.warp(block.timestamp + L1.getTier(minTier).cooldownWindow + 1); + // Now can verify + verifyBlock(Carol, 1); + + parentHash = blockHash; + } + printVariables(""); + } + function test_L1_ContestingWithInvalidBlockHash() external { giveEthAndTko(Alice, 1e8 ether, 1000 ether); giveEthAndTko(Carol, 1e8 ether, 1000 ether); diff --git a/packages/protocol/test/L1/TaikoL1TestBase.sol b/packages/protocol/test/L1/TaikoL1TestBase.sol index 4ad3a3fd58..07b002241e 100644 --- a/packages/protocol/test/L1/TaikoL1TestBase.sol +++ b/packages/protocol/test/L1/TaikoL1TestBase.sol @@ -12,6 +12,8 @@ import { TaikoL1 } from "../../contracts/L1/TaikoL1.sol"; import { TaikoToken } from "../../contracts/L1/TaikoToken.sol"; import { GuardianVerifier } from "../../contracts/L1/verifiers/GuardianVerifier.sol"; +import { OPL2ConfigProvider } from + "../../contracts/L1/tiers/OPL2ConfigProvider.sol"; import { PseZkVerifier } from "../../contracts/L1/verifiers/PseZkVerifier.sol"; import { SignalService } from "../../contracts/signal/SignalService.sol"; import { StringsUpgradeable as Strings } from @@ -34,6 +36,7 @@ abstract contract TaikoL1TestBase is TestBase { uint256 internal logCount; PseZkVerifier public pv; GuardianVerifier public gv; + OPL2ConfigProvider public cp; bytes32 public constant GENESIS_BLOCK_HASH = keccak256("GENESIS_BLOCK_HASH"); // 1 TKO --> it is to huge. It should be in 'wei' (?). @@ -68,8 +71,11 @@ abstract contract TaikoL1TestBase is TestBase { gv = new GuardianVerifier(); gv.init(address(addressManager)); + cp = new OPL2ConfigProvider(); + registerAddress("tier_pse_zkevm", address(pv)); registerAddress("tier_guardian", address(gv)); + registerAddress("tier_provider", address(cp)); registerAddress("signal_service", address(ss)); registerAddress("ether_vault", address(L1EthVault)); registerL2Address("treasury", L2Treasury); @@ -113,18 +119,32 @@ abstract contract TaikoL1TestBase is TestBase { internal returns (TaikoData.BlockMetadata memory meta) { - TaikoData.ProverAssignment memory assignment; - - // TODO - // = TaikoData - // .ProverAssignment({ - // prover: prover, - // expiry: uint64(block.timestamp + 60 minutes), - // data: new bytes(0) - // }); + TaikoData.TierFee[] memory tierFees = new TaikoData.TierFee[](2); + // Register the tier fees + // Based on OPL2ConfigTier we need 2: + // - LibTiers.TIER_PSE_ZKEVM; + // - LibTiers.TIER_OPTIMISTIC; + tierFees[0] = TaikoData.TierFee(LibTiers.TIER_OPTIMISTIC, 1 ether); + tierFees[1] = TaikoData.TierFee(LibTiers.TIER_OPTIMISTIC, 2 ether); + // For the test not to fail, set the message.value to the highest, the + // rest will be returned + // anyways + uint256 msgValue = 2 ether; + + TaikoData.ProverAssignment memory assignment = TaikoData + .ProverAssignment({ + prover: prover, + feeToken: address(0), + tierFees: tierFees, + expiry: uint64(block.timestamp + 60 minutes), + signature: new bytes(0) + }); bytes memory txList = new bytes(txListSize); + assignment.signature = + grantWithSignature(prover, assignment, keccak256(txList)); + TaikoData.StateVariables memory variables = L1.getStateVariables(); uint256 _mixHash; @@ -140,7 +160,9 @@ abstract contract TaikoL1TestBase is TestBase { meta.gasLimit = gasLimit; vm.prank(proposer, proposer); - meta = L1.proposeBlock(meta.txListHash, abi.encode(assignment), txList); + meta = L1.proposeBlock{ value: msgValue }( + meta.txListHash, abi.encode(assignment), txList + ); } function proveBlock( @@ -207,6 +229,31 @@ abstract contract TaikoL1TestBase is TestBase { ); } + function grantWithSignature( + address signer, + TaikoData.ProverAssignment memory assignment, + bytes32 txListHash + ) + internal + returns (bytes memory signature) + { + bytes32 digest = + LibProposing.hashAssignmentForTxList(assignment, txListHash); + uint256 signerPrivateKey; + + // In the test suite these are the 3 which acts as provers + if (signer == Alice) { + signerPrivateKey = 0x1; + } else if (signer == Bob) { + signerPrivateKey = 0x2; + } else if (signer == Carol) { + signerPrivateKey = 0x3; + } + + (uint8 v, bytes32 r, bytes32 s) = vm.sign(signerPrivateKey, digest); + signature = abi.encodePacked(r, s, v); + } + function giveEthAndTko( address to, uint256 amountTko, diff --git a/packages/protocol/test/L2/TaikoL2.t.sol b/packages/protocol/test/L2/TaikoL2.t.sol index db8bd393a2..cca6a0ce47 100644 --- a/packages/protocol/test/L2/TaikoL2.t.sol +++ b/packages/protocol/test/L2/TaikoL2.t.sol @@ -7,6 +7,20 @@ import { SafeCastUpgradeable } from "@ozu/utils/math/SafeCastUpgradeable.sol"; import { TestBase } from "../TestBase.sol"; import { TaikoL2 } from "../../contracts/L2/TaikoL2.sol"; +contract TaikoL2CustomConfig is TaikoL2 { + function getEIP1559Config() + public + pure + override + returns (EIP1559Config memory config) + { + config.xscale = 17_617_968_667; + config.yscale = 7_867_664_977_129_350_145_899_915_356_087; + config.gasIssuedPerSecond = 1_000_000; + config.gasExcessMax = 7_680_000_000; + } +} + contract TestTaikoL2 is TestBase { using SafeCastUpgradeable for uint256; @@ -17,16 +31,7 @@ contract TestTaikoL2 is TestBase { uint256 private logIndex; function setUp() public { - // uint16 rand = 2; - // TaikoL2.EIP1559Params memory param1559 = TaikoL2.EIP1559Params({ - // basefee: (uint256(BLOCK_GAS_LIMIT * 10) * rand).toUint64(), - // gasIssuedPerSecond: 1_000_000, - // gasExcessMax: (uint256(15_000_000) * 256 * rand).toUint64(), - // gasTarget: (uint256(6_000_000) * rand).toUint64(), - // ratio2x1x: 11_177 - // }); - - L2 = new TaikoL2(); + L2 = new TaikoL2CustomConfig(); address dummyAddressManager = getRandomAddress(); L2.init(dummyAddressManager); @@ -131,6 +136,12 @@ contract TestTaikoL2 is TestBase { } function test_L2_getBasefee() external { + TaikoL2.EIP1559Config memory config = L2.getEIP1559Config(); + + console2.log(config.xscale); + console2.log(config.yscale); + console2.log(config.gasIssuedPerSecond); + uint64 timeSinceParent = uint64(block.timestamp - L2.parentTimestamp()); assertEq(_getBasefeeAndPrint(timeSinceParent, 0), 317_609_019); diff --git a/packages/protocol/test/TestBase.sol b/packages/protocol/test/TestBase.sol index 6573e29758..282128aecc 100644 --- a/packages/protocol/test/TestBase.sol +++ b/packages/protocol/test/TestBase.sol @@ -21,9 +21,9 @@ abstract contract TestBase is Test { return uint256(keccak256(abi.encodePacked("uint256", _seed++))); } - address internal Alice = getRandomAddress(); - address internal Bob = getRandomAddress(); - address internal Carol = getRandomAddress(); + address internal Alice = vm.addr(0x1); + address internal Bob = vm.addr(0x2); + address internal Carol = vm.addr(0x3); address internal David = getRandomAddress(); address internal Emma = getRandomAddress(); address internal Frank = getRandomAddress(); From 6c17b0a411e33a27983b6b4401718c134bf457d5 Mon Sep 17 00:00:00 2001 From: Daniel Wang Date: Sun, 24 Sep 2023 17:54:36 +0800 Subject: [PATCH 19/87] more --- .../docs/{L2EIP1559.md => eip1559_on_l2.md} | 0 packages/protocol/docs/iprover.md | 60 ------------- .../protocol/docs/tokenomics_batch_auction.md | 89 ------------------- packages/protocol/docs/tokenomics_staking.md | 49 ---------- 4 files changed, 198 deletions(-) rename packages/protocol/docs/{L2EIP1559.md => eip1559_on_l2.md} (100%) delete mode 100644 packages/protocol/docs/iprover.md delete mode 100644 packages/protocol/docs/tokenomics_batch_auction.md delete mode 100644 packages/protocol/docs/tokenomics_staking.md diff --git a/packages/protocol/docs/L2EIP1559.md b/packages/protocol/docs/eip1559_on_l2.md similarity index 100% rename from packages/protocol/docs/L2EIP1559.md rename to packages/protocol/docs/eip1559_on_l2.md diff --git a/packages/protocol/docs/iprover.md b/packages/protocol/docs/iprover.md deleted file mode 100644 index 8168dba337..0000000000 --- a/packages/protocol/docs/iprover.md +++ /dev/null @@ -1,60 +0,0 @@ -# Implementing arbitrary token payments with IProver interface - -In this guide, we will outline the steps to implement a solution that enables prover pools to accept arbitrary ERC-20 tokens as payments for providing with proofs. This solution allows proposers to interact with pools (implementing `IProver`), agree on a price for proving a block, and make payments using ERC-20 tokens. - -NOTE: This works also with NFTs (ERC-721/ERC-1155) as well (applying the proper `approval`/`approvalForAll`), just because it might be less likely those will be used as payment methods, we highlighted the ERC-20. - -## Prerequisites - -Before implementing this solution, make sure you have an existing ERC-20 token contract that you want to accept as payment in your ProverPool. - -## Implementation Steps - -### Step 1: An example ProverPool Contract - -Start by creating a ProverPool contract that implements the `IProver` interface. This interface should include the `onBlockAssigned` function, which will be called during `proposeBlock()`. -A boilerplate (non-comprehensive) example: - -```solidity -// Import necessary libraries and interfaces -import "./IProver.sol"; - -// Define the ProverPool contract -contract ProverPool is IProver { - - // ERC-20 address of the payment token - address ERC20TokenAddress; - - // Implement the onBlockAssigned function - function onBlockAssigned( - uint64 blockId, - TaikoData.BlockMetadataInput calldata input, - TaikoData.ProverAssignment calldata assignment - ) external { - // Decode the assignment data to retrieve signatures and other information - (bytes memory proverSignature, uint256 tokenAmount) = decodeAssignmentData(assignment); - - // 1. Verify the prover signature is valid (off-chain verification) - require(isValidSignature(proverSignature, input), "Invalid prover signature"); - - // 2. Execute the transfer transaction - ERC20(ERC20TokenAddress).transferFrom(tx.origin, address(this), tokenAmount); - - // Additional logic goes here - } - - // Implement functions to decode assignment data, verify signature, etc. -} -``` - -### Step 2: Proposer-prover off-chain interaction - -The proposer and prover interact off-chain to agree on the price and perform the ERC-20 token approval. Here's an example of how this interaction might work: - -1. Proposer asks the ProverPool for the cost of proving a block and receives a price (e.g., `10 DAI` tokens). If price is acceptable, prover provides proposer with a valid ECDSA signature which signs the commitment (e.g.: transaction list hash), expiration and price. - -2. Proposer executes the following transaction: `ERC-20(DAI_ADDRESS).approve(proverPool, 10)` (or if he/she thinks this pool will be a long-term solution the approval amount can be bigger). - -3. Proposer creates the `ProverAssignment` struct data (obviously together with the `input` and `txList`) and submits the `proposeBlock()` with the necessary parameters. - -During `proposeBlock()` transaction, the `onBlockAssigned()` hook which will evaluate the validity of the prover signature, and if that one is correct then executest he transfer of `10 DAI`. diff --git a/packages/protocol/docs/tokenomics_batch_auction.md b/packages/protocol/docs/tokenomics_batch_auction.md deleted file mode 100644 index b55ad2758f..0000000000 --- a/packages/protocol/docs/tokenomics_batch_auction.md +++ /dev/null @@ -1,89 +0,0 @@ -# Batch Auction-Based Tokenomics - -## Objectives and Key Metrics -Please read our [objective and metrics in tokenomics design](./tokenomics_objective_metrics.md). -\\,. -## The Proposal -An auction mechanism is suggested to realign provers' incentives towards cost-effectiveness. This mechanism allows provers to bid for block rewards, thereby establishing a transparent fee market. Furthermore, this model promotes resource conservation by enabling provers to commit to resource-intensive Zero-Knowledge Proof (ZKP) computations only after they have definitively won a block. - - -### Batch-Based Approach -In light of the high gas fees associated with Ethereum, a batch-based strategy for conducting auctions is recommended. This strategy grants the winning bidder the right to verify a batch of blocks, thus reducing per-block gas costs. During the testnet phases, we plan to begin with a smaller batch size, eventually scaling up to 256 blocks by the mainnet launch. - -### Provisions for Upcoming Blocks and Gas Costs -To offset potential delays in ZKP, it's recommended to conduct auctions for forthcoming blocks even before they are proposed. This introduces a certain level of uncertainty for provers due to the unknown block gas used and data size at the beginning of the auction. To counter this, an auction pricing model based on the gas/data usage of the auctioned block is proposed. Here, the block reward would be calculated as `b*g`, where `b` is the winning bid in TKO tokens per gas and `g` is the actual gas used (or gas limit) by the block. In this context, `b` will be referred to as the *bid per gas*, or simply the *bid*. - -### Bidding Procedures and Deposit Requirements - -The auction mechanism employed will follow the traditional English auction model, where all bids are publicly visible throughout the auction period. This choice makes the secretive, second-price auction model unsuitable for our context. Additionally, the initial implementation of our tokenomics design (in alpha-1) adopts elements of a Dutch auction, characterized by escalating rewards over time. - -For each new auction, the initial bidding price will be set at `s=2*p`, where `p` represents the moving average bid for all verified blocks. Subsequent bids should be at least 10% lower than the current bid. To participate in the auction, bidders will be required to deposit `s * max_block_gas_limit * num_blocks * 1.5` Taiko tokens as the minimum amount for the batch. If the auction winner fails to submit a valid proof within the designated timeframe, the deposit for the corresponding block will be burnt. On the other hand, successful completion of the proof submission will result in a refund of the deposit. - -To maintain stability, the initial bidding price will not undergo drastic changes, such as exceeding a 50% decrease or 100% increase within a 24-hour period. - -#### Scoring Bids -A key concern is the risk of a monopolistic scenario, where one highly efficient prover continuously wins auctions, particularly if they're prepared to operate with a slim profit margin. This could marginalize other provers, even those with slightly higher costs, leaving them devoid of work and potentially leading them to exit the system. To encourage diverse participation and avert single-prover dominance, we may need to refine our bid scoring methodology. Rather than focusing solely on the bid price , we could factor in other parameters such as the deposit amount , the prover's average proof delay , and the ratio of their proof submissions to the number of verified blocks they've won. This multi-dimensional evaluation would promote a more equitable competition, ensuring the system's sustainability. - -Bid increments in English auctions serve as an effective strategy to encourage serious bidding, ensure fair competition, reduce on-chain transaction costs, and minimize proof rewards. By requiring new bids to exceed the current winning bid by a specified percentage in score(e.g., 10% higher), trivial bids are filtered out, enabling the auction to quickly reach the lowest bid per gas. - -#### Internal metrics -It is essential to maintain various internal metrics to effectively score bids and facilitate off-chain analysis: - -1. **Average proof window**: This metric represents the moving average of proof window. The average proof window provides insights into the efficiency of the proof submission process, enabling optimization and monitoring of the overall system performance. Alternatively, we can keep track of *average proof delay* if the auction can incentivize provers to submit proofs immediately after proofs become available. The actual proof delay is not factored into adjusting *average proof window* to avoid reducing the proof window due to early submissions. This approach ensures that slower provers, who require more time to generate proofs, are not discouraged from promptly submitting their proofs. - -2. **Average bid per gas for verified blocks**: This metric quantifies the average bid per unit of gas for blocks that have successfully passed the verification process. It provides valuable information about bidding behavior and the value assigned to gas consumption in successful blocks. - -3. **Average bid per gas for all blocks**: This optional metric calculates the average bid per unit of gas for all blocks, including those that are currently undergoing the auction process. By considering all blocks, this metric offers a comprehensive view of the average bidding behavior and expenditure on gas across the entire system. - -4. **Per bidder proof submission success rate**: This optional metric measures the success rate of proof submissions by individual bidders. Specifically, it evaluates the ratio of proofs submitted by a bidder that were subsequently used for block verification compared to the total number of blocks won through auctions. Proofs submitted to other blocks that the bidder did not win are excluded from this calculation. This metric allows for the assessment of bidder reliability and the effectiveness of their proof submission process. - - -### Bid Period, Proofing Window, and Managing Multiple Auctions -The bid period for an auction begins with the first bid and lasts for 5 minutes. Blocks can only be proven after the auction has ended entirely. To ensure fairness, particularly for late participants, it is crucial not to end auctions prematurely. It is recommended that an auction concludes when the following conditions are met: - -1. The 5-minute bid period has elapsed. -2. The most recent proposed block is within `min_blocks_to_end_auctions` blocks of the first block in the batch. - -Auctions are conducted in increasing order of block batches, and the next batch's auction can start as soon as the previous batch's auction has started. - -The winning bidder is required to submit the proof for the block within the proof window, typically `proof_window` seconds after either the block proposal or the end of the auction, whichever occurs last. Other participants can only submit proofs after the proof window expires. - -### Reward and Penalty Mechanisms -If the chosen fork for the verified block originates from the auction winner's proof, the winner's deposit are refunded and reward are minted. If the selected fork comes from another prover's proof, the latter receives half the deposit, with the remaining half being burnt. This mechanism ensures fair competition and discourages manipulation, such as winners submitting correct proofs via different addresses. - -### Absence of Fallback Mode -There is no secondary fee/reward model for blocks that aren't auctioned. This simplifies the auction design and eliminates the need for dual tokenomics systems, namely, an auction-based primary system and an alternate fallback system. - -### Block Fees -A fee in Taiko tokens should be levied from the block proposer, calculated as `p * gas_limit`, where `p` is the moving average bid for all verified blocks. - -## Best Strategy for a Prover - -### Bidding -A prover should consistently monitor recent winning bid scores to gauge the current market status. From there, he can calculate an appropriate bidding price that aligns with his proof generation costs. Optionally, to enhance his score, he could deposit additional Taiko tokens as auction collateral. - -### Proof Submission -He should submit proofs at the earliest opportunity. - -### Optimization -The prover's optimization should be conducted in a hierarchical manner, with cost reduction as the primary focus. After reducing proof costs, the next step would be to minimize proof delay, followed by improving the rate of proof submissions. An additional optional strategy could be to acquire more Taiko tokens to perpetually boost his score. - -### Pool Participation -A prover may opt to join a prover pool to engage in off-chain auctions managed by the pool itself. Subsequently, the pool participates in the on-chain auction on behalf of its members and manages the deposits of Taiko tokens, thereby enhancing the bid scores for all participants within the pool. This strategy allows for pooled resources and risk, potentially offering an advantage in the competitive bidding process. - -## Challenges - -### Lack of Competition -The proposed auction framework's success heavily depends on the active participation of numerous independent entities. In the event of collusion or alliances among provers to boost their profits, they could strategically place a single bid at the initial/highest price `s`, leading to a continual increase in rewards. This goes against the system's intention of promoting cost-efficient competition. - -However, such behavior might inadvertently stimulate competition. As the reward for verifying considerably increases, it's likely to pique the interest of other provers, thus promoting their participation. This market self-regulation could restore equilibrium and maintain the auction process's competitive integrity. - - -### Low Bid Attacks - -A malicious prover may strategize to win numerous batches by placing extremely low bids, aiming to manipulate the starting price of future auctions. This could potentially discourage other provers from participating in subsequent auctions. To safeguard against such manipulation, it's imperative to establish a mechanism that ensures the starting price for future auctions changes incrementally and consistently, thereby maintaining a fair and competitive bidding environment. - -### Added Verification Delay -Introducing an auction window inevitably introduces an additional delay to the verification time. This delay might not be noticeable when the average verification time is relatively long (over 30 minutes). However, it could become significant in future scenarios where proof generation takes just a few minutes. - -Despite this, as stressed at the beginning of the proposal, our goal is to optimize for cost, not speed. While this additional delay is a vital consideration, it's unlikely to pose a significant obstacle to our primary objective of cost-effectiveness. diff --git a/packages/protocol/docs/tokenomics_staking.md b/packages/protocol/docs/tokenomics_staking.md deleted file mode 100644 index 29ec66e874..0000000000 --- a/packages/protocol/docs/tokenomics_staking.md +++ /dev/null @@ -1,49 +0,0 @@ -# Staking-Based Tokenomics - -## Objectives and Key Metrics - -Please read our [objective and metrics in tokenomics design](./tokenomics_objective_metrics.md). - -## Understanding Prover Staking Mechanisms - -In the previous two tokenomics iterations, including the one used by the ongoing alpha-3 testnet, we incorporated a dynamic fee-reward adjustment system, drawing data from in-protocol stats. However, a key flaw surfaced in this design: it instigated numerous provers to generate Zero-Knowledge Proofs (ZKPs) for the same block, unbeknownst to each other. This redundancy leads to a scenario where only one prover is rewarded, while the remaining provers, having worked on the same task, incur a loss. This issue, henceforth referred to as 'Prover Redundancy', escalates the overall proving costs for the Layer 2 (L2) network, making it unnecessarily expensive. Consequently, users have to bear inflated transaction costs on L2. To alleviate this, we need to develop an effective solution to reduce the per-block proving cost, which would in turn decrease the user's transaction cost on L2. - -A proposed solution was an auction-based mechanism, enabling provers to bid for exclusive rights to prove blocks. While this approach effectively tackles the 'Prover Redundancy' issue, it also presents new challenges. Provers would have to engage in a significant number of Layer 1 (L1) transactions to participate in these auctions. This not only raises their costs but also necessitates the development of a separate auction participation system alongside their proving system. This complexity could potentially discourage provers from entering our ecosystem. - -To address these concerns, we've implemented a staking-based prover pool, which essentially simulates a perpetual auction bidding process. This system allows a prover to bid once and remain eligible for proving blocks indefinitely. - -Within the prover pool, when an address wishes to stake, it must provide three parameters: - -1. The number of Taiko Tokens to stake (`A`), -2. The expected reward per gas (`R`), and -3. Its maximum capacity (`C`). - -These inputs contribute to the calculation of a score (`S`). The top 32 stakes with the highest scores are chosen to constitute the list of active provers. - -When a block is proposed, each prover in the list is assigned a weight (`W`), calculated as a function of `A`, `R`, `C`, and the current fee per gas (`F`): - -```solidity -W = 0, if A = 0 or C = 0 -W = (A * F^2) / R^2, otherwise -``` - -Notably, a prover's weight depends on the number of tokens staked, the current fee per gas supplied by the core protocol, and the expected reward per gas: - -- The more tokens staked, the higher the weight of the prover. This is a linear relationship. -- The less reward expected, the higher the weight of the prover. This is an inverse square relationship. - -The protocol then uses a deterministic pseudo-random number and each prover's weight to select a prover to be assigned to a given block. If all provers' weights are zero, address(0) is returned, indicating that any prover can prove the block - we'll refer to this as an 'open block'. - -If a block is proven by the assigned prover within a set proving window (3 times the average proof delay), we reward the prover with `R * gasUsed`. However, to prevent excessive fluctuations in `R`, we cap the actual reward per gas (`R'`) at (95%-105%) \* `F`. This implies that if a prover's expected reward per gas is exceedingly high, their weight will be minimal. Even if such a prover is selected, their reward won't exceed 5% more than the current fee per gas. - -For instances where the block is an open block or proven outside the set proving window, the actual prover is rewarded with `1.5 * R'`. If the assigned prover fails to prove the block within the proving window, we slash a certain percentage from their total staked amount, which consequently reduces the prover's weight. - -In order to ensure automatic adjustment of the fee-reward ratio, we modify the fee per gas (`F`) every time a block is verified by its assigned prover within the proving window: - -```solidity -F = (F*1023 + R')/1024 -``` - -In this system, we can ensure efficient proof generation, provide provers with a fair reward mechanism, and maintain an economically viable environment for both users and provers alike in the Layer 2 network. - -Additionally, when a prover is assigned to a block, its capacity (`C`) is decreased by 1, and when the block is proven by the assigned prover or is verified, the assigned prover's capacity is increased by 1. However, the current capacity always remains capped at its initial value. From 248b5da1a4b7559ef2ba51e2a87a3f82125d2a92 Mon Sep 17 00:00:00 2001 From: adaki2004 Date: Mon, 25 Sep 2023 11:18:56 +0200 Subject: [PATCH 20/87] address build warning --- packages/protocol/test/L1/TaikoL1TestBase.sol | 1 + 1 file changed, 1 insertion(+) diff --git a/packages/protocol/test/L1/TaikoL1TestBase.sol b/packages/protocol/test/L1/TaikoL1TestBase.sol index 07b002241e..c3d0d313ef 100644 --- a/packages/protocol/test/L1/TaikoL1TestBase.sol +++ b/packages/protocol/test/L1/TaikoL1TestBase.sol @@ -235,6 +235,7 @@ abstract contract TaikoL1TestBase is TestBase { bytes32 txListHash ) internal + view returns (bytes memory signature) { bytes32 digest = From a35326574da50765a7449439374abe618f2b611f Mon Sep 17 00:00:00 2001 From: adaki2004 Date: Mon, 25 Sep 2023 11:20:34 +0200 Subject: [PATCH 21/87] remove debug prints --- packages/protocol/test/L1/TaikoL1LibProvingWithTiers.t.sol | 5 ----- 1 file changed, 5 deletions(-) diff --git a/packages/protocol/test/L1/TaikoL1LibProvingWithTiers.t.sol b/packages/protocol/test/L1/TaikoL1LibProvingWithTiers.t.sol index fe4c3fdb4e..e083985147 100644 --- a/packages/protocol/test/L1/TaikoL1LibProvingWithTiers.t.sol +++ b/packages/protocol/test/L1/TaikoL1LibProvingWithTiers.t.sol @@ -205,7 +205,6 @@ contract TaikoL1LibProvingWithTiers is TaikoL1TestBase { uint256 blockId = 1; blockId < conf.blockMaxProposals * 3; blockId++ ) { printVariables("before propose"); - console2.log("Propose-olom a block-ot:", blockId); TaikoData.BlockMetadata memory meta = proposeBlock(Alice, Bob, 1_000_000, 1024); //printVariables("after propose"); @@ -217,15 +216,12 @@ contract TaikoL1LibProvingWithTiers is TaikoL1TestBase { // signalRoot instead of blockHash uint16 minTier = L1.getBlock(meta.id).minTier; - console2.log("Proveolom a block-ot:", blockId); proveBlock( Bob, Bob, meta, parentHash, blockHash, signalRoot, minTier, "" ); if (minTier == LibTiers.TIER_OPTIMISTIC) { // Try to contest - - console2.log("Contest-alom a block-ot:", blockId); proveBlock( Carol, Carol, @@ -246,7 +242,6 @@ contract TaikoL1LibProvingWithTiers is TaikoL1TestBase { // Cannot verify block because it is contested.. verifyBlock(Carol, 1); - console2.log("Re-proveolom a block-ot:", blockId); proveBlock( Carol, Carol, From f47cc854de3373e3d3867e3582c3b3c2174b1265 Mon Sep 17 00:00:00 2001 From: Daniel Wang <99078276+dantaik@users.noreply.github.com> Date: Mon, 25 Sep 2023 19:31:01 +0800 Subject: [PATCH 22/87] Optimize gas (#14803) Co-authored-by: Daniel Wang --- packages/protocol/.solhint.json | 3 +- packages/protocol/contracts/L1/TaikoData.sol | 8 +- packages/protocol/contracts/L1/TaikoL1.sol | 20 ++++ .../contracts/L1/libs/LibProposing.sol | 16 ++-- .../protocol/contracts/L1/libs/LibProving.sol | 37 ++++++-- .../contracts/L1/libs/LibTaikoToken.sol | 91 +++++++++++++++++++ .../contracts/L1/libs/LibVerifying.sol | 12 +-- .../contracts/L1/tiers/ITierProvider.sol | 14 +-- .../contracts/L1/tiers/OPL2ConfigProvider.sol | 2 - .../contracts/L1/tiers/ZKL2ConfigProvider.sol | 2 - .../test/erc20/MayFailFreeMintERC20.sol | 3 +- .../contracts/tokenvault/ERC20Vault.sol | 8 +- packages/protocol/test/L1/TaikoL1.t.sol | 2 +- 13 files changed, 168 insertions(+), 50 deletions(-) create mode 100644 packages/protocol/contracts/L1/libs/LibTaikoToken.sol diff --git a/packages/protocol/.solhint.json b/packages/protocol/.solhint.json index ce3716cc9d..3bdc8bc7fc 100644 --- a/packages/protocol/.solhint.json +++ b/packages/protocol/.solhint.json @@ -10,6 +10,7 @@ "not-rely-on-time": "off", "ordering": "warn", "payable-fallback": "off", - "no-console": "off" + "no-console": "off", + "one-contract-per-file": "off" } } diff --git a/packages/protocol/contracts/L1/TaikoData.sol b/packages/protocol/contracts/L1/TaikoData.sol index 81c5b7ac01..b0c6679de2 100644 --- a/packages/protocol/contracts/L1/TaikoData.sol +++ b/packages/protocol/contracts/L1/TaikoData.sol @@ -191,8 +191,10 @@ library TaikoData { // Ring buffer for Ether deposits mapping(uint256 depositId_mod_ethDepositRingBufferSize => uint256) ethDeposits; - SlotA slotA; // slot 5 - SlotB slotB; // slot 6 - uint256[144] __gap; + // In-protocol Taiko token balances + mapping(address account => uint256 balance) taikoTokenBalances; + SlotA slotA; // slot 6 + SlotB slotB; // slot 7 + uint256[143] __gap; } } diff --git a/packages/protocol/contracts/L1/TaikoL1.sol b/packages/protocol/contracts/L1/TaikoL1.sol index e6c39acfae..44c468efa9 100644 --- a/packages/protocol/contracts/L1/TaikoL1.sol +++ b/packages/protocol/contracts/L1/TaikoL1.sol @@ -14,6 +14,7 @@ import { Proxied } from "../common/Proxied.sol"; import { LibDepositing } from "./libs/LibDepositing.sol"; import { LibProposing } from "./libs/LibProposing.sol"; import { LibProving } from "./libs/LibProving.sol"; +import { LibTaikoToken } from "./libs/LibTaikoToken.sol"; import { LibUtils } from "./libs/LibUtils.sol"; import { LibVerifying } from "./libs/LibVerifying.sol"; @@ -140,6 +141,18 @@ contract TaikoL1 is }); } + /// @notice Deposit Taiko token to this contract + /// @param amount Amount of Taiko token to deposit. + function depositTaikoToken(uint256 amount) public { + LibTaikoToken.depositTaikoToken(state, AddressResolver(this), amount); + } + + /// @notice Withdraw Taiko token from this contract + /// @param amount Amount of Taiko token to withdraw. + function withdrawTaikoToken(uint256 amount) public { + LibTaikoToken.withdrawTaikoToken(state, AddressResolver(this), amount); + } + /// @notice Deposits Ether to Layer 2. /// @param recipient Address of the recipient for the deposited Ether on /// Layer 2. @@ -230,6 +243,13 @@ contract TaikoL1 is return LibUtils.getStateVariables(state); } + /// @notice Gets the in-protocol Taiko token balance for a user + /// @param user The user. + /// @return The user's Taiko token balance. + function getTaikoTokenBalance(address user) public view returns (uint256) { + return state.taikoTokenBalances[user]; + } + /// @notice Retrieves the configuration for a specified tier. /// @param tierId ID of the tier. /// @return Tier struct containing the tier's parameters. This diff --git a/packages/protocol/contracts/L1/libs/LibProposing.sol b/packages/protocol/contracts/L1/libs/LibProposing.sol index 18f26c3922..021cda1cef 100644 --- a/packages/protocol/contracts/L1/libs/LibProposing.sol +++ b/packages/protocol/contracts/L1/libs/LibProposing.sol @@ -6,22 +6,17 @@ pragma solidity ^0.8.20; -import { AddressUpgradeable } from "@ozu/utils/AddressUpgradeable.sol"; -import { ECDSAUpgradeable } from "@ozu/utils/cryptography/ECDSAUpgradeable.sol"; import { ERC20Upgradeable } from "@ozu/token/ERC20/ERC20Upgradeable.sol"; -import { IERC1271Upgradeable } from "@ozu/interfaces/IERC1271Upgradeable.sol"; import { AddressResolver } from "../../common/AddressResolver.sol"; -import { IMintableERC20 } from "../../common/IMintableERC20.sol"; import { LibAddress } from "../../libs/LibAddress.sol"; import { LibMath } from "../../libs/LibMath.sol"; import { ITierProvider } from "../tiers/ITierProvider.sol"; import { TaikoData } from "../TaikoData.sol"; -import { TaikoToken } from "../TaikoToken.sol"; import { LibDepositing } from "./LibDepositing.sol"; -import { LibUtils } from "./LibUtils.sol"; +import { LibTaikoToken } from "./LibTaikoToken.sol"; /// @title LibProposing /// @notice A library for handling block proposals in the Taiko protocol. @@ -98,7 +93,6 @@ library LibProposing { // Taiko tokens per second as block rewards. It's important to note that // if multiple blocks are proposed within the same L1 block, only the // first one will receive the block reward. - TaikoToken tt = TaikoToken(resolver.resolve("taiko_token", false)); // The block reward doesn't undergo automatic halving; instead, we // depend on Taiko DAO to make necessary adjustments to the rewards. @@ -119,7 +113,9 @@ library LibProposing { ); // Reward must be minted - tt.mint(msg.sender, reward); + LibTaikoToken.incrementTaikoTokenBalance( + state, resolver, msg.sender, reward, true + ); } } } @@ -194,7 +190,9 @@ library LibProposing { // transition is not the initial one or if it was generated and // validated by different provers. Instead, a portion of the assignment // bond serves as a reward for the actual prover. - tt.burn(blk.assignedProver, config.assignmentBond); + LibTaikoToken.decrementTaikoTokenBalance( + state, resolver, blk.assignedProver, config.assignmentBond + ); // Increment the counter (cursor) by 1. unchecked { diff --git a/packages/protocol/contracts/L1/libs/LibProving.sol b/packages/protocol/contracts/L1/libs/LibProving.sol index b8a0354748..5db76c05e1 100644 --- a/packages/protocol/contracts/L1/libs/LibProving.sol +++ b/packages/protocol/contracts/L1/libs/LibProving.sol @@ -11,8 +11,8 @@ import { AddressResolver } from "../../common/AddressResolver.sol"; import { ITierProvider } from "../tiers/ITierProvider.sol"; import { IVerifier } from "../verifiers/IVerifier.sol"; import { TaikoData } from "../TaikoData.sol"; -import { TaikoToken } from "../TaikoToken.sol"; +import { LibTaikoToken } from "./LibTaikoToken.sol"; import { LibUtils } from "./LibUtils.sol"; /// @title LibProving @@ -200,9 +200,6 @@ library LibProving { } } - // Prepare to burn either the proof bond or the contest bond below. - TaikoToken tt = TaikoToken(resolver.resolve("taiko_token", false)); - if (tier.contestBond == 0) { // When contestBond is zero for the current tier, it signifies // it's the top tier. In this case, it can overwrite existing @@ -264,7 +261,9 @@ library LibProving { if (tran.contester != address(0)) revert L1_ALREADY_CONTESTED(); // Burn the contest bond from the prover. - tt.burn(msg.sender, tier.contestBond); + LibTaikoToken.decrementTaikoTokenBalance( + state, resolver, msg.sender, tier.contestBond + ); // We retain the contest bond within the transition, just in // case this configuration is altered to a different value @@ -341,7 +340,9 @@ library LibProving { } // Burn the proof bond from the prover. - tt.burn(msg.sender, tier.proofBond); + LibTaikoToken.decrementTaikoTokenBalance( + state, resolver, msg.sender, tier.proofBond + ); unchecked { // This is the amount of Taiko tokens to send to the new prover @@ -359,7 +360,13 @@ library LibProving { // Mint the reward and the proof bond and return it to the // previous prover. - tt.mint(tran.prover, reward + tran.proofBond); + LibTaikoToken.incrementTaikoTokenBalance( + state, + resolver, + tran.prover, + reward + tran.proofBond, + false + ); } else { // In the event that the contester is the winner, half of // the proof bond is designated as the reward, to be divided @@ -370,11 +377,19 @@ library LibProving { // for the tier-0 transition. Consequently, we only grant a // reward to the contester if it is not a zero-address. if (tran.contester != address(0)) { - tt.mint(tran.contester, reward + tran.contestBond); + LibTaikoToken.incrementTaikoTokenBalance( + state, + resolver, + tran.contester, + reward + tran.contestBond, + false + ); } else if (reward != 0) { //The prover is also the contester, so the reward is // sent to him. - tt.mint(msg.sender, reward); + LibTaikoToken.incrementTaikoTokenBalance( + state, resolver, msg.sender, reward, false + ); } // Given that the contester emerges as the winner, the @@ -388,7 +403,9 @@ library LibProving { // In theory, the reward can also be zero for certain tiers if // their proof bonds are set to zero. if (reward != 0) { - tt.mint(msg.sender, reward); + LibTaikoToken.incrementTaikoTokenBalance( + state, resolver, msg.sender, reward, false + ); } } diff --git a/packages/protocol/contracts/L1/libs/LibTaikoToken.sol b/packages/protocol/contracts/L1/libs/LibTaikoToken.sol new file mode 100644 index 0000000000..7875400813 --- /dev/null +++ b/packages/protocol/contracts/L1/libs/LibTaikoToken.sol @@ -0,0 +1,91 @@ +// SPDX-License-Identifier: MIT +// _____ _ _ _ _ +// |_ _|_ _(_) |_____ | | __ _| |__ ___ +// | |/ _` | | / / _ \ | |__/ _` | '_ (_-< +// |_|\__,_|_|_\_\___/ |____\__,_|_.__/__/ + +pragma solidity ^0.8.20; + +import { AddressResolver } from "../../common/AddressResolver.sol"; + +import { TaikoData } from "../TaikoData.sol"; +import { TaikoToken } from "../TaikoToken.sol"; + +library LibTaikoToken { + error L1_INSUFFICIENT_TOKEN(); + + function depositTaikoToken( + TaikoData.State storage state, + AddressResolver resolver, + uint256 amount + ) + internal + { + if (amount == 0) return; + TaikoToken(resolver.resolve("taiko_token", false)).transferFrom( + msg.sender, address(this), amount + ); + unchecked { + state.taikoTokenBalances[msg.sender] += amount; + } + } + + function withdrawTaikoToken( + TaikoData.State storage state, + AddressResolver resolver, + uint256 amount + ) + internal + { + if (amount == 0) return; + if (state.taikoTokenBalances[msg.sender] < amount) { + revert L1_INSUFFICIENT_TOKEN(); + } + // Unchecked is safe per above check + unchecked { + state.taikoTokenBalances[msg.sender] -= amount; + } + + TaikoToken(resolver.resolve("taiko_token", false)).transfer( + msg.sender, amount + ); + } + + function incrementTaikoTokenBalance( + TaikoData.State storage state, + AddressResolver resolver, + address to, + uint256 amount, + bool mint + ) + internal + { + if (amount == 0) return; + if (mint) { + TaikoToken(resolver.resolve("taiko_token", false)).mint( + address(this), amount + ); + } + state.taikoTokenBalances[to] += amount; + } + + function decrementTaikoTokenBalance( + TaikoData.State storage state, + AddressResolver resolver, + address from, + uint256 amount + ) + internal + { + if (amount == 0) return; + if (state.taikoTokenBalances[from] < amount) { + TaikoToken(resolver.resolve("taiko_token", false)).transferFrom( + from, address(this), amount + ); + } else { + unchecked { + state.taikoTokenBalances[from] -= amount; + } + } + } +} diff --git a/packages/protocol/contracts/L1/libs/LibVerifying.sol b/packages/protocol/contracts/L1/libs/LibVerifying.sol index 44ad3b0357..cbde0c4419 100644 --- a/packages/protocol/contracts/L1/libs/LibVerifying.sol +++ b/packages/protocol/contracts/L1/libs/LibVerifying.sol @@ -11,8 +11,8 @@ import { ISignalService } from "../../signal/ISignalService.sol"; import { ITierProvider } from "../tiers/ITierProvider.sol"; import { TaikoData } from "../TaikoData.sol"; -import { TaikoToken } from "../TaikoToken.sol"; +import { LibTaikoToken } from "./LibTaikoToken.sol"; import { LibUtils } from "./LibUtils.sol"; /// @title LibVerifying @@ -121,9 +121,6 @@ library LibVerifying { bytes32 blockHash = state.transitions[slot][tid].blockHash; bytes32 signalRoot; uint64 processed; - - // These address are only initialized when necessary - address taikoToken; address tierProvider; // Unchecked is safe: @@ -196,10 +193,9 @@ library LibVerifying { bondToReturn -= blk.assignmentBond / 2; } - if (taikoToken == address(0)) { - taikoToken = resolver.resolve("taiko_token", false); - } - TaikoToken(taikoToken).mint(tran.prover, bondToReturn); + LibTaikoToken.incrementTaikoTokenBalance( + state, resolver, tran.prover, bondToReturn, false + ); // Note: We exclusively address the bonds linked to the // transition used for verification. While there may exist diff --git a/packages/protocol/contracts/L1/tiers/ITierProvider.sol b/packages/protocol/contracts/L1/tiers/ITierProvider.sol index 25b504e593..5c812b9357 100644 --- a/packages/protocol/contracts/L1/tiers/ITierProvider.sol +++ b/packages/protocol/contracts/L1/tiers/ITierProvider.sol @@ -6,13 +6,6 @@ pragma solidity ^0.8.20; -library LibTiers { - uint16 public constant TIER_OPTIMISTIC = 100; - uint16 public constant TIER_SGX = 200; - uint16 public constant TIER_PSE_ZKEVM = 300; - uint16 public constant TIER_GUARDIAN = 1000; -} - /// @title ITierProvider /// @notice Defines interface to return tier configuration. interface ITierProvider { @@ -33,3 +26,10 @@ interface ITierProvider { /// @dev Determines the minimal tier for a block based on a random input. function getMinTier(uint256 rand) external view returns (uint16); } + +library LibTiers { + uint16 public constant TIER_OPTIMISTIC = 100; + uint16 public constant TIER_SGX = 200; + uint16 public constant TIER_PSE_ZKEVM = 300; + uint16 public constant TIER_GUARDIAN = 1000; +} diff --git a/packages/protocol/contracts/L1/tiers/OPL2ConfigProvider.sol b/packages/protocol/contracts/L1/tiers/OPL2ConfigProvider.sol index 5aa2229eec..f900ad0eae 100644 --- a/packages/protocol/contracts/L1/tiers/OPL2ConfigProvider.sol +++ b/packages/protocol/contracts/L1/tiers/OPL2ConfigProvider.sol @@ -6,8 +6,6 @@ pragma solidity ^0.8.20; -import { TaikoData } from "../TaikoData.sol"; - import { ITierProvider, LibTiers } from "./ITierProvider.sol"; /// @title OPL2ConfigProvider diff --git a/packages/protocol/contracts/L1/tiers/ZKL2ConfigProvider.sol b/packages/protocol/contracts/L1/tiers/ZKL2ConfigProvider.sol index 72069d4853..056bb8029f 100644 --- a/packages/protocol/contracts/L1/tiers/ZKL2ConfigProvider.sol +++ b/packages/protocol/contracts/L1/tiers/ZKL2ConfigProvider.sol @@ -6,8 +6,6 @@ pragma solidity ^0.8.20; -import { TaikoData } from "../TaikoData.sol"; - import { ITierProvider, LibTiers } from "./ITierProvider.sol"; /// @title ZKL2ConfigProvider diff --git a/packages/protocol/contracts/test/erc20/MayFailFreeMintERC20.sol b/packages/protocol/contracts/test/erc20/MayFailFreeMintERC20.sol index b6f52d033e..c33e5695ce 100644 --- a/packages/protocol/contracts/test/erc20/MayFailFreeMintERC20.sol +++ b/packages/protocol/contracts/test/erc20/MayFailFreeMintERC20.sol @@ -15,6 +15,7 @@ contract MayFailFreeMintERC20 is ERC20 { mapping(address minter => bool hasMinted) public minters; error HasMinted(); + error Failed(); constructor(string memory name, string memory symbol) ERC20(name, symbol) { } @@ -55,7 +56,7 @@ contract MayFailFreeMintERC20 is ERC20 { // Have a 50% change of failure. function _mayFail() private view { if (block.number % 2 == 0) { - revert("Failed"); + revert Failed(); } } } diff --git a/packages/protocol/contracts/tokenvault/ERC20Vault.sol b/packages/protocol/contracts/tokenvault/ERC20Vault.sol index 23f34537df..24a62b94c1 100644 --- a/packages/protocol/contracts/tokenvault/ERC20Vault.sol +++ b/packages/protocol/contracts/tokenvault/ERC20Vault.sol @@ -7,10 +7,7 @@ pragma solidity ^0.8.20; import { Create2Upgradeable } from "@ozu/utils/Create2Upgradeable.sol"; -import { - ERC20Upgradeable, - IERC20Upgradeable -} from "@ozu/token/ERC20/ERC20Upgradeable.sol"; +import { ERC20Upgradeable } from "@ozu/token/ERC20/ERC20Upgradeable.sol"; import { SafeERC20Upgradeable } from "@ozu/token/ERC20/utils/SafeERC20Upgradeable.sol"; import { IERC165Upgradeable } from @@ -21,9 +18,8 @@ import { IMintableERC20 } from "../common/IMintableERC20.sol"; import { Proxied } from "../common/Proxied.sol"; import { IRecallableMessageSender, IBridge } from "../bridge/IBridge.sol"; import { LibAddress } from "../libs/LibAddress.sol"; -import { TaikoToken } from "../L1/TaikoToken.sol"; -import { BridgedERC20, ProxiedBridgedERC20 } from "./BridgedERC20.sol"; +import { ProxiedBridgedERC20 } from "./BridgedERC20.sol"; import { LibVaultUtils } from "./libs/LibVaultUtils.sol"; /// @title ERC20Vault /// @notice This vault holds all ERC20 tokens (excluding Ether) that users have diff --git a/packages/protocol/test/L1/TaikoL1.t.sol b/packages/protocol/test/L1/TaikoL1.t.sol index 085bda7af3..2976b7f982 100644 --- a/packages/protocol/test/L1/TaikoL1.t.sol +++ b/packages/protocol/test/L1/TaikoL1.t.sol @@ -320,7 +320,7 @@ contract TaikoL1Test is TaikoL1TestBase { // We need 8 depostis otherwise we are not processing them ! giveEthAndTko(Alice, 1e6 ether, maxAmount + 1 ether); - giveEthAndTko(Bob, 0, maxAmount + 1 ether); + giveEthAndTko(Bob, 1e6 ether, maxAmount + 1 ether); giveEthAndTko(Carol, 0, maxAmount + 1 ether); giveEthAndTko(David, 0, maxAmount + 1 ether); giveEthAndTko(Emma, 0, maxAmount + 1 ether); From 4528e7b1774ba912b340f579bf2316c44d67980b Mon Sep 17 00:00:00 2001 From: adaki2004 Date: Tue, 26 Sep 2023 10:49:32 +0200 Subject: [PATCH 23/87] fix test command --- packages/protocol/package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/protocol/package.json b/packages/protocol/package.json index 848ff964b4..8570cf3fb6 100644 --- a/packages/protocol/package.json +++ b/packages/protocol/package.json @@ -16,7 +16,7 @@ "lint:sol": "forge fmt && pnpm solhint 'contracts/**/*.sol' --fix", "sizer": "pnpm hardhat size-contracts", "snapshot": "forge snapshot --match-path 'test/**/*.t.sol'", - "test": "forge test -vvv --gas-report --fuzz-seed $(date +%s) --nmp test/L1/TaikoL1.sim.sol", + "test": "forge test -vvv --gas-report --fuzz-seed $(date +%s) --match-path test/**/*.t.sol", "test:coverage": "forge coverage --report lcov", "test:genesis": "FOUNDRY_PROFILE=genesis ./genesis/generate_genesis.test.sh", "upgrade": "./script/upgrade_to.sh" From 77d26e39513ed8fa20f13bc97d52961ec5192a80 Mon Sep 17 00:00:00 2001 From: adaki2004 Date: Tue, 26 Sep 2023 11:01:05 +0200 Subject: [PATCH 24/87] fix unit test command --- packages/protocol/package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/protocol/package.json b/packages/protocol/package.json index 8570cf3fb6..4fa444c15e 100644 --- a/packages/protocol/package.json +++ b/packages/protocol/package.json @@ -16,7 +16,7 @@ "lint:sol": "forge fmt && pnpm solhint 'contracts/**/*.sol' --fix", "sizer": "pnpm hardhat size-contracts", "snapshot": "forge snapshot --match-path 'test/**/*.t.sol'", - "test": "forge test -vvv --gas-report --fuzz-seed $(date +%s) --match-path test/**/*.t.sol", + "test": "forge test -vvv --gas-report --fuzz-seed $(date +%s) --match-path test/*.t.sol", "test:coverage": "forge coverage --report lcov", "test:genesis": "FOUNDRY_PROFILE=genesis ./genesis/generate_genesis.test.sh", "upgrade": "./script/upgrade_to.sh" From 6de9c60e4ae009904c49bde36a48d22643ed21f1 Mon Sep 17 00:00:00 2001 From: adaki2004 Date: Tue, 26 Sep 2023 12:16:37 +0200 Subject: [PATCH 25/87] Fuzz seed workaround --- packages/protocol/foundry.toml | 3 +++ packages/protocol/package.json | 2 +- 2 files changed, 4 insertions(+), 1 deletion(-) diff --git a/packages/protocol/foundry.toml b/packages/protocol/foundry.toml index 7086d8e260..b71d55e648 100644 --- a/packages/protocol/foundry.toml +++ b/packages/protocol/foundry.toml @@ -27,6 +27,9 @@ fs_permissions = [ ] fuzz = { runs = 256 } +# Workaround to have a static fuzz seed in the config +# until the issue is resolved with forge/foundry. +seed = 13623721389213 [fmt] bracket_spacing = true diff --git a/packages/protocol/package.json b/packages/protocol/package.json index 4fa444c15e..1163df6f17 100644 --- a/packages/protocol/package.json +++ b/packages/protocol/package.json @@ -16,7 +16,7 @@ "lint:sol": "forge fmt && pnpm solhint 'contracts/**/*.sol' --fix", "sizer": "pnpm hardhat size-contracts", "snapshot": "forge snapshot --match-path 'test/**/*.t.sol'", - "test": "forge test -vvv --gas-report --fuzz-seed $(date +%s) --match-path test/*.t.sol", + "test": "forge test -vvv --gas-report --match-path test/*.t.sol", "test:coverage": "forge coverage --report lcov", "test:genesis": "FOUNDRY_PROFILE=genesis ./genesis/generate_genesis.test.sh", "upgrade": "./script/upgrade_to.sh" From 36b1ece82c292eb0fa47e25d0cdde288c13fa6e6 Mon Sep 17 00:00:00 2001 From: adaki2004 Date: Tue, 26 Sep 2023 12:41:23 +0200 Subject: [PATCH 26/87] remove unused eip1559config --- packages/protocol/utils/generate_genesis/taikoL2.ts | 7 ------- 1 file changed, 7 deletions(-) diff --git a/packages/protocol/utils/generate_genesis/taikoL2.ts b/packages/protocol/utils/generate_genesis/taikoL2.ts index 5370cf50c3..94ba5efa52 100644 --- a/packages/protocol/utils/generate_genesis/taikoL2.ts +++ b/packages/protocol/utils/generate_genesis/taikoL2.ts @@ -353,13 +353,6 @@ async function generateContractConfigs( ]), ] )}`, - eip1559Config: { - yscale: ethers.BigNumber.from(param1559.yscale), - xscale: ethers.BigNumber.from(param1559.xscale), - gasIssuedPerSecond: ethers.BigNumber.from( - param1559.gasIssuedPerSecond - ), - }, parentTimestamp: Math.floor(new Date().getTime() / 1000), gasExcess: ethers.BigNumber.from(param1559.gasExcess), // AddressResolver From d07eea17590fbcb0d8dea9422c764ca5796fe800 Mon Sep 17 00:00:00 2001 From: adaki2004 Date: Tue, 26 Sep 2023 14:59:54 +0200 Subject: [PATCH 27/87] update comment --- packages/protocol/foundry.toml | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/packages/protocol/foundry.toml b/packages/protocol/foundry.toml index b71d55e648..45373b1f38 100644 --- a/packages/protocol/foundry.toml +++ b/packages/protocol/foundry.toml @@ -27,8 +27,10 @@ fs_permissions = [ ] fuzz = { runs = 256 } -# Workaround to have a static fuzz seed in the config -# until the issue is resolved with forge/foundry. + +# Workaround as a fixed fuzz seed. +# Bug is confirmed, will be fixed soon: +# https://github.com/foundry-rs/foundry/issues/5913 seed = 13623721389213 [fmt] From 0b4ba3471b64b0f23cca051991bb4d1fe656e078 Mon Sep 17 00:00:00 2001 From: Daniel Wang <99078276+dantaik@users.noreply.github.com> Date: Tue, 26 Sep 2023 22:59:32 +0800 Subject: [PATCH 28/87] feat(protocol): emit events in LibTaikoToken (#14821) Co-authored-by: Daniel Wang --- packages/protocol/contracts/L1/TaikoData.sol | 2 +- .../protocol/contracts/L1/TaikoErrors.sol | 1 + .../protocol/contracts/L1/TaikoEvents.sol | 17 +++++++ packages/protocol/contracts/L1/TaikoL1.sol | 16 +++++-- .../contracts/L1/libs/LibProposing.sol | 4 +- .../protocol/contracts/L1/libs/LibProving.sol | 12 ++--- .../contracts/L1/libs/LibTaikoToken.sol | 47 +++++++++++++++---- .../contracts/L1/libs/LibVerifying.sol | 2 +- 8 files changed, 78 insertions(+), 23 deletions(-) diff --git a/packages/protocol/contracts/L1/TaikoData.sol b/packages/protocol/contracts/L1/TaikoData.sol index b0c6679de2..1eb44c7efc 100644 --- a/packages/protocol/contracts/L1/TaikoData.sol +++ b/packages/protocol/contracts/L1/TaikoData.sol @@ -192,7 +192,7 @@ library TaikoData { mapping(uint256 depositId_mod_ethDepositRingBufferSize => uint256) ethDeposits; // In-protocol Taiko token balances - mapping(address account => uint256 balance) taikoTokenBalances; + mapping(address account => uint256 balance) tokenBalances; SlotA slotA; // slot 6 SlotB slotB; // slot 7 uint256[143] __gap; diff --git a/packages/protocol/contracts/L1/TaikoErrors.sol b/packages/protocol/contracts/L1/TaikoErrors.sol index 2bb5986d79..f945ef9036 100644 --- a/packages/protocol/contracts/L1/TaikoErrors.sol +++ b/packages/protocol/contracts/L1/TaikoErrors.sol @@ -21,6 +21,7 @@ abstract contract TaikoErrors { error L1_ASSIGNMENT_INSUFFICIENT_FEE(); error L1_ASSIGNED_PROVER_NOT_ALLOWED(); error L1_BLOCK_MISMATCH(); + error L1_INVALID_ADDRESS(); error L1_INVALID_BLOCK_ID(); error L1_INVALID_CONFIG(); error L1_INVALID_ETH_DEPOSIT(); diff --git a/packages/protocol/contracts/L1/TaikoEvents.sol b/packages/protocol/contracts/L1/TaikoEvents.sol index 1cce511414..9403fab55e 100644 --- a/packages/protocol/contracts/L1/TaikoEvents.sol +++ b/packages/protocol/contracts/L1/TaikoEvents.sol @@ -72,4 +72,21 @@ abstract contract TaikoEvents { /// @param deposit The Ethereum deposit information including recipient, /// amount, and ID. event EthDeposited(TaikoData.EthDeposit deposit); + + /// @dev Emitted when a user deposited Taiko token into this contract. + event TokenDeposited(uint256 amount); + + /// @dev Emitted when a user withdrawed Taiko token from this contract. + event TokenWithdrawn(uint256 amount); + + /// @dev Emitted when Taiko token are credited to the user's in-protocol + /// balance. + event TokenCredited(uint256 amount, bool minted); + + /// @dev Emitted when Taiko token are debited from the user's in-protocol + /// balance. + event TokenDebited(uint256 amount, bool fromLocalBalance); + + /// @dev Emitted when the owner withdrawn Taiko token from this contract. + event TokenWithdrawnByOwner(address to, uint256 amount); } diff --git a/packages/protocol/contracts/L1/TaikoL1.sol b/packages/protocol/contracts/L1/TaikoL1.sol index 44c468efa9..3ef685fb5f 100644 --- a/packages/protocol/contracts/L1/TaikoL1.sol +++ b/packages/protocol/contracts/L1/TaikoL1.sol @@ -144,13 +144,23 @@ contract TaikoL1 is /// @notice Deposit Taiko token to this contract /// @param amount Amount of Taiko token to deposit. function depositTaikoToken(uint256 amount) public { - LibTaikoToken.depositTaikoToken(state, AddressResolver(this), amount); + LibTaikoToken.depositToken(state, AddressResolver(this), amount); } /// @notice Withdraw Taiko token from this contract /// @param amount Amount of Taiko token to withdraw. function withdrawTaikoToken(uint256 amount) public { - LibTaikoToken.withdrawTaikoToken(state, AddressResolver(this), amount); + LibTaikoToken.withdrawToken(state, AddressResolver(this), amount); + } + + function ownerWithdrawTaikoToken( + address to, + uint256 amount + ) + public + onlyOwner + { + LibTaikoToken.ownerWithdrawToken(AddressResolver(this), to, amount); } /// @notice Deposits Ether to Layer 2. @@ -247,7 +257,7 @@ contract TaikoL1 is /// @param user The user. /// @return The user's Taiko token balance. function getTaikoTokenBalance(address user) public view returns (uint256) { - return state.taikoTokenBalances[user]; + return state.tokenBalances[user]; } /// @notice Retrieves the configuration for a specified tier. diff --git a/packages/protocol/contracts/L1/libs/LibProposing.sol b/packages/protocol/contracts/L1/libs/LibProposing.sol index 021cda1cef..4be1462e2a 100644 --- a/packages/protocol/contracts/L1/libs/LibProposing.sol +++ b/packages/protocol/contracts/L1/libs/LibProposing.sol @@ -113,7 +113,7 @@ library LibProposing { ); // Reward must be minted - LibTaikoToken.incrementTaikoTokenBalance( + LibTaikoToken.creditToken( state, resolver, msg.sender, reward, true ); } @@ -190,7 +190,7 @@ library LibProposing { // transition is not the initial one or if it was generated and // validated by different provers. Instead, a portion of the assignment // bond serves as a reward for the actual prover. - LibTaikoToken.decrementTaikoTokenBalance( + LibTaikoToken.debitToken( state, resolver, blk.assignedProver, config.assignmentBond ); diff --git a/packages/protocol/contracts/L1/libs/LibProving.sol b/packages/protocol/contracts/L1/libs/LibProving.sol index 5db76c05e1..08c899b300 100644 --- a/packages/protocol/contracts/L1/libs/LibProving.sol +++ b/packages/protocol/contracts/L1/libs/LibProving.sol @@ -261,7 +261,7 @@ library LibProving { if (tran.contester != address(0)) revert L1_ALREADY_CONTESTED(); // Burn the contest bond from the prover. - LibTaikoToken.decrementTaikoTokenBalance( + LibTaikoToken.debitToken( state, resolver, msg.sender, tier.contestBond ); @@ -340,7 +340,7 @@ library LibProving { } // Burn the proof bond from the prover. - LibTaikoToken.decrementTaikoTokenBalance( + LibTaikoToken.debitToken( state, resolver, msg.sender, tier.proofBond ); @@ -360,7 +360,7 @@ library LibProving { // Mint the reward and the proof bond and return it to the // previous prover. - LibTaikoToken.incrementTaikoTokenBalance( + LibTaikoToken.creditToken( state, resolver, tran.prover, @@ -377,7 +377,7 @@ library LibProving { // for the tier-0 transition. Consequently, we only grant a // reward to the contester if it is not a zero-address. if (tran.contester != address(0)) { - LibTaikoToken.incrementTaikoTokenBalance( + LibTaikoToken.creditToken( state, resolver, tran.contester, @@ -387,7 +387,7 @@ library LibProving { } else if (reward != 0) { //The prover is also the contester, so the reward is // sent to him. - LibTaikoToken.incrementTaikoTokenBalance( + LibTaikoToken.creditToken( state, resolver, msg.sender, reward, false ); } @@ -403,7 +403,7 @@ library LibProving { // In theory, the reward can also be zero for certain tiers if // their proof bonds are set to zero. if (reward != 0) { - LibTaikoToken.incrementTaikoTokenBalance( + LibTaikoToken.creditToken( state, resolver, msg.sender, reward, false ); } diff --git a/packages/protocol/contracts/L1/libs/LibTaikoToken.sol b/packages/protocol/contracts/L1/libs/LibTaikoToken.sol index 7875400813..52bb1862a9 100644 --- a/packages/protocol/contracts/L1/libs/LibTaikoToken.sol +++ b/packages/protocol/contracts/L1/libs/LibTaikoToken.sol @@ -12,9 +12,16 @@ import { TaikoData } from "../TaikoData.sol"; import { TaikoToken } from "../TaikoToken.sol"; library LibTaikoToken { + event TokenDeposited(uint256 amount); + event TokenWithdrawn(uint256 amount); + event TokenCredited(uint256 amount, bool minted); + event TokenDebited(uint256 amount, bool fromLocalBalance); + event TokenWithdrawnByOwner(address to, uint256 amount); + error L1_INSUFFICIENT_TOKEN(); + error L1_INVALID_ADDRESS(); - function depositTaikoToken( + function depositToken( TaikoData.State storage state, AddressResolver resolver, uint256 amount @@ -26,11 +33,12 @@ library LibTaikoToken { msg.sender, address(this), amount ); unchecked { - state.taikoTokenBalances[msg.sender] += amount; + state.tokenBalances[msg.sender] += amount; } + emit TokenDeposited(amount); } - function withdrawTaikoToken( + function withdrawToken( TaikoData.State storage state, AddressResolver resolver, uint256 amount @@ -38,20 +46,22 @@ library LibTaikoToken { internal { if (amount == 0) return; - if (state.taikoTokenBalances[msg.sender] < amount) { + if (state.tokenBalances[msg.sender] < amount) { revert L1_INSUFFICIENT_TOKEN(); } // Unchecked is safe per above check unchecked { - state.taikoTokenBalances[msg.sender] -= amount; + state.tokenBalances[msg.sender] -= amount; } TaikoToken(resolver.resolve("taiko_token", false)).transfer( msg.sender, amount ); + + emit TokenWithdrawn(amount); } - function incrementTaikoTokenBalance( + function creditToken( TaikoData.State storage state, AddressResolver resolver, address to, @@ -66,10 +76,11 @@ library LibTaikoToken { address(this), amount ); } - state.taikoTokenBalances[to] += amount; + state.tokenBalances[to] += amount; + emit TokenCredited(amount, mint); } - function decrementTaikoTokenBalance( + function debitToken( TaikoData.State storage state, AddressResolver resolver, address from, @@ -78,14 +89,30 @@ library LibTaikoToken { internal { if (amount == 0) return; - if (state.taikoTokenBalances[from] < amount) { + if (state.tokenBalances[from] < amount) { TaikoToken(resolver.resolve("taiko_token", false)).transferFrom( from, address(this), amount ); + emit TokenDebited(amount, false); } else { unchecked { - state.taikoTokenBalances[from] -= amount; + state.tokenBalances[from] -= amount; } + emit TokenDebited(amount, true); } } + + function ownerWithdrawToken( + AddressResolver resolver, + address to, + uint256 amount + ) + internal + { + if (to == address(0)) revert L1_INVALID_ADDRESS(); + TaikoToken(resolver.resolve("taiko_token", false)).transferFrom( + address(this), to, amount + ); + emit TokenWithdrawnByOwner(to, amount); + } } diff --git a/packages/protocol/contracts/L1/libs/LibVerifying.sol b/packages/protocol/contracts/L1/libs/LibVerifying.sol index cbde0c4419..9219e87dc6 100644 --- a/packages/protocol/contracts/L1/libs/LibVerifying.sol +++ b/packages/protocol/contracts/L1/libs/LibVerifying.sol @@ -193,7 +193,7 @@ library LibVerifying { bondToReturn -= blk.assignmentBond / 2; } - LibTaikoToken.incrementTaikoTokenBalance( + LibTaikoToken.creditToken( state, resolver, tran.prover, bondToReturn, false ); From 535ca31a13b678773ff28bfaf29e0c5896e6e933 Mon Sep 17 00:00:00 2001 From: Daniel Wang <99078276+dantaik@users.noreply.github.com> Date: Tue, 26 Sep 2023 23:01:19 +0800 Subject: [PATCH 29/87] refactor(protocol): rename variables (#14820) Co-authored-by: D <51912515+adaki2004@users.noreply.github.com> --- packages/eventindexer/TaikoL1.json | 4 +-- .../eventindexer/contracts/taikol1/TaikoL1.go | 2 +- packages/protocol/contracts/L1/TaikoData.sol | 8 ++--- .../protocol/contracts/L1/TaikoEvents.sol | 6 ++-- packages/protocol/contracts/L1/TaikoL1.sol | 2 +- .../contracts/L1/libs/LibProposing.sol | 12 ++++---- .../protocol/contracts/L1/libs/LibProving.sol | 28 +++++++++--------- .../contracts/L1/libs/LibVerifying.sol | 29 ++++++++++--------- .../contracts/L1/tiers/ITierProvider.sol | 2 +- .../contracts/L1/tiers/OPL2ConfigProvider.sol | 8 ++--- .../contracts/L1/tiers/ZKL2ConfigProvider.sol | 4 +-- .../docs/contestable_validity_rollup.md | 18 ++++++------ packages/protocol/test/L1/TaikoL1.t.sol | 2 +- .../test/L1/TaikoL1LibProvingWithTiers.t.sol | 2 +- packages/relayer/bindings/taikol1/TaikoL1.go | 2 +- .../contract-documentation/L1/TaikoData.md | 4 +-- 16 files changed, 67 insertions(+), 66 deletions(-) diff --git a/packages/eventindexer/TaikoL1.json b/packages/eventindexer/TaikoL1.json index 4be58e7c5b..bce8382bf1 100644 --- a/packages/eventindexer/TaikoL1.json +++ b/packages/eventindexer/TaikoL1.json @@ -996,7 +996,7 @@ }, { "internalType": "uint96", - "name": "proofBond", + "name": "validityBond", "type": "uint96" }, { @@ -1111,7 +1111,7 @@ }, { "internalType": "uint96", - "name": "proofBond", + "name": "validityBond", "type": "uint96" }, { diff --git a/packages/eventindexer/contracts/taikol1/TaikoL1.go b/packages/eventindexer/contracts/taikol1/TaikoL1.go index aac78a8a90..a7dde6ff5d 100644 --- a/packages/eventindexer/contracts/taikol1/TaikoL1.go +++ b/packages/eventindexer/contracts/taikol1/TaikoL1.go @@ -128,7 +128,7 @@ type TaikoDataTransition struct { // TaikoL1MetaData contains all meta data concerning the TaikoL1 contract. var TaikoL1MetaData = &bind.MetaData{ - ABI: "[{\"inputs\":[],\"name\":\"L1_ALREADY_PROVEN\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"L1_ALREADY_PROVEN\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"L1_BLOCK_ID_MISMATCH\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"L1_BLOCK_ID_MISMATCH\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"L1_BLOCK_ID_MISMATCH\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"L1_EVIDENCE_MISMATCH\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"L1_EVIDENCE_MISMATCH\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"L1_INSUFFICIENT_TOKEN\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"L1_INSUFFICIENT_TOKEN\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"L1_INVALID_ASSIGNMENT\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"L1_INVALID_ASSIGNMENT\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"L1_INVALID_BLOCK_ID\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"L1_INVALID_BLOCK_ID\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"L1_INVALID_BLOCK_ID\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"L1_INVALID_CONFIG\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"L1_INVALID_CONFIG\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"L1_INVALID_ETH_DEPOSIT\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"L1_INVALID_ETH_DEPOSIT\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"L1_INVALID_EVIDENCE\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"L1_INVALID_EVIDENCE\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"L1_INVALID_METADATA\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"L1_INVALID_METADATA\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"L1_INVALID_ORACLE_PROVER\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"L1_INVALID_ORACLE_PROVER\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"L1_INVALID_PARAM\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"L1_INVALID_PROOF\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"L1_INVALID_PROPOSER\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"L1_INVALID_PROPOSER\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"L1_INVALID_PROVER\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"L1_INVALID_PROVER\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"L1_INVALID_PROVER_SIG\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"L1_INVALID_PROVER_SIG\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"L1_NOT_PROVEABLE\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"L1_NOT_PROVEABLE\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"L1_SAME_PROOF\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"L1_SAME_PROOF\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"L1_TOO_MANY_BLOCKS\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"L1_TOO_MANY_BLOCKS\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"L1_TRANSITION_NOT_FOUND\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"L1_TRANSITION_NOT_FOUND\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"L1_TX_LIST\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"L1_TX_LIST\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"L1_TX_LIST_HASH\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"L1_TX_LIST_HASH\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"L1_TX_LIST_NOT_EXIST\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"L1_TX_LIST_NOT_EXIST\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"L1_TX_LIST_RANGE\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"L1_TX_LIST_RANGE\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"L1_UNEXPECTED_TRANSITION_ID\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"L1_UNEXPECTED_TRANSITION_ID\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"RESOLVER_DENIED\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"RESOLVER_INVALID_ADDR\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"chainId\",\"type\":\"uint256\"},{\"internalType\":\"bytes32\",\"name\":\"name\",\"type\":\"bytes32\"}],\"name\":\"RESOLVER_ZERO_ADDR\",\"type\":\"error\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"addressManager\",\"type\":\"address\"}],\"name\":\"AddressManagerChanged\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"blockId\",\"type\":\"uint256\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"prover\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"reward\",\"type\":\"uint256\"},{\"components\":[{\"internalType\":\"uint64\",\"name\":\"id\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"timestamp\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"l1Height\",\"type\":\"uint64\"},{\"internalType\":\"bytes32\",\"name\":\"l1Hash\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"mixHash\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"txListHash\",\"type\":\"bytes32\"},{\"internalType\":\"uint24\",\"name\":\"txListByteStart\",\"type\":\"uint24\"},{\"internalType\":\"uint24\",\"name\":\"txListByteEnd\",\"type\":\"uint24\"},{\"internalType\":\"uint32\",\"name\":\"gasLimit\",\"type\":\"uint32\"},{\"internalType\":\"address\",\"name\":\"proposer\",\"type\":\"address\"},{\"components\":[{\"internalType\":\"address\",\"name\":\"recipient\",\"type\":\"address\"},{\"internalType\":\"uint96\",\"name\":\"amount\",\"type\":\"uint96\"},{\"internalType\":\"uint64\",\"name\":\"id\",\"type\":\"uint64\"}],\"internalType\":\"structTaikoData.EthDeposit[]\",\"name\":\"depositsProcessed\",\"type\":\"tuple[]\"}],\"indexed\":false,\"internalType\":\"structTaikoData.BlockMetadata\",\"name\":\"meta\",\"type\":\"tuple\"}],\"name\":\"BlockProposed\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"blockId\",\"type\":\"uint256\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"prover\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"reward\",\"type\":\"uint256\"},{\"components\":[{\"internalType\":\"uint64\",\"name\":\"id\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"timestamp\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"l1Height\",\"type\":\"uint64\"},{\"internalType\":\"bytes32\",\"name\":\"l1Hash\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"mixHash\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"txListHash\",\"type\":\"bytes32\"},{\"internalType\":\"uint24\",\"name\":\"txListByteStart\",\"type\":\"uint24\"},{\"internalType\":\"uint24\",\"name\":\"txListByteEnd\",\"type\":\"uint24\"},{\"internalType\":\"uint32\",\"name\":\"gasLimit\",\"type\":\"uint32\"},{\"internalType\":\"address\",\"name\":\"proposer\",\"type\":\"address\"},{\"components\":[{\"internalType\":\"address\",\"name\":\"recipient\",\"type\":\"address\"},{\"internalType\":\"uint96\",\"name\":\"amount\",\"type\":\"uint96\"},{\"internalType\":\"uint64\",\"name\":\"id\",\"type\":\"uint64\"}],\"internalType\":\"structTaikoData.EthDeposit[]\",\"name\":\"depositsProcessed\",\"type\":\"tuple[]\"}],\"indexed\":false,\"internalType\":\"structTaikoData.BlockMetadata\",\"name\":\"meta\",\"type\":\"tuple\"}],\"name\":\"BlockProposed\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"blockId\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"parentHash\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"blockHash\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"signalRoot\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"prover\",\"type\":\"address\"}],\"name\":\"BlockProven\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"blockId\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"parentHash\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"blockHash\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"signalRoot\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"prover\",\"type\":\"address\"}],\"name\":\"BlockProven\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"blockId\",\"type\":\"uint256\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"prover\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"blockHash\",\"type\":\"bytes32\"}],\"name\":\"BlockVerified\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"blockId\",\"type\":\"uint256\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"prover\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"blockHash\",\"type\":\"bytes32\"}],\"name\":\"BlockVerified\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint64\",\"name\":\"blockId\",\"type\":\"uint64\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"bond\",\"type\":\"uint256\"}],\"name\":\"BondReceived\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint64\",\"name\":\"blockId\",\"type\":\"uint64\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"bond\",\"type\":\"uint256\"}],\"name\":\"BondReceived\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint64\",\"name\":\"blockId\",\"type\":\"uint64\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"bond\",\"type\":\"uint256\"}],\"name\":\"BondReturned\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint64\",\"name\":\"blockId\",\"type\":\"uint64\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"bond\",\"type\":\"uint256\"}],\"name\":\"BondReturned\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint64\",\"name\":\"blockId\",\"type\":\"uint64\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"bond\",\"type\":\"uint256\"}],\"name\":\"BondRewarded\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint64\",\"name\":\"blockId\",\"type\":\"uint64\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"bond\",\"type\":\"uint256\"}],\"name\":\"BondRewarded\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint64\",\"name\":\"srcHeight\",\"type\":\"uint64\"},{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"blockHash\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"signalRoot\",\"type\":\"bytes32\"}],\"name\":\"CrossChainSynced\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint64\",\"name\":\"srcHeight\",\"type\":\"uint64\"},{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"blockHash\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"signalRoot\",\"type\":\"bytes32\"}],\"name\":\"CrossChainSynced\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"components\":[{\"internalType\":\"address\",\"name\":\"recipient\",\"type\":\"address\"},{\"internalType\":\"uint96\",\"name\":\"amount\",\"type\":\"uint96\"},{\"internalType\":\"uint64\",\"name\":\"id\",\"type\":\"uint64\"}],\"indexed\":false,\"internalType\":\"structTaikoData.EthDeposit\",\"name\":\"deposit\",\"type\":\"tuple\"}],\"name\":\"EthDeposited\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"components\":[{\"internalType\":\"address\",\"name\":\"recipient\",\"type\":\"address\"},{\"internalType\":\"uint96\",\"name\":\"amount\",\"type\":\"uint96\"},{\"internalType\":\"uint64\",\"name\":\"id\",\"type\":\"uint64\"}],\"indexed\":false,\"internalType\":\"structTaikoData.EthDeposit\",\"name\":\"deposit\",\"type\":\"tuple\"}],\"name\":\"EthDeposited\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint8\",\"name\":\"version\",\"type\":\"uint8\"}],\"name\":\"Initialized\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"previousOwner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"newOwner\",\"type\":\"address\"}],\"name\":\"OwnershipTransferred\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"addressManager\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"canDepositEthToL2\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"recipient\",\"type\":\"address\"}],\"name\":\"depositEtherToL2\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"depositTaikoToken\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"blockId\",\"type\":\"uint64\"}],\"name\":\"getBlock\",\"outputs\":[{\"components\":[{\"internalType\":\"bytes32\",\"name\":\"metaHash\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"prover\",\"type\":\"address\"},{\"internalType\":\"uint96\",\"name\":\"proofBond\",\"type\":\"uint96\"},{\"internalType\":\"uint64\",\"name\":\"blockId\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"proposedAt\",\"type\":\"uint64\"},{\"internalType\":\"uint32\",\"name\":\"nextTransitionId\",\"type\":\"uint32\"},{\"internalType\":\"uint32\",\"name\":\"verifiedTransitionId\",\"type\":\"uint32\"},{\"internalType\":\"bytes32[7]\",\"name\":\"__reserved\",\"type\":\"bytes32[7]\"}],\"internalType\":\"structTaikoData.Block\",\"name\":\"blk\",\"type\":\"tuple\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getConfig\",\"outputs\":[{\"components\":[{\"internalType\":\"uint256\",\"name\":\"chainId\",\"type\":\"uint256\"},{\"internalType\":\"bool\",\"name\":\"relaySignalRoot\",\"type\":\"bool\"},{\"internalType\":\"uint64\",\"name\":\"blockMaxProposals\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"blockRingBufferSize\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"blockMaxVerificationsPerTx\",\"type\":\"uint64\"},{\"internalType\":\"uint32\",\"name\":\"blockMaxGasLimit\",\"type\":\"uint32\"},{\"internalType\":\"uint32\",\"name\":\"blockFeeBaseGas\",\"type\":\"uint32\"},{\"internalType\":\"uint24\",\"name\":\"blockMaxTxListBytes\",\"type\":\"uint24\"},{\"internalType\":\"uint256\",\"name\":\"blockTxListExpiry\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"proposerRewardPerSecond\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"proposerRewardMax\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"proofRegularCooldown\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"proofOracleCooldown\",\"type\":\"uint256\"},{\"internalType\":\"uint16\",\"name\":\"proofWindow\",\"type\":\"uint16\"},{\"internalType\":\"uint96\",\"name\":\"proofBond\",\"type\":\"uint96\"},{\"internalType\":\"bool\",\"name\":\"skipProverAssignmentVerificaiton\",\"type\":\"bool\"},{\"internalType\":\"uint256\",\"name\":\"ethDepositRingBufferSize\",\"type\":\"uint256\"},{\"internalType\":\"uint64\",\"name\":\"ethDepositMinCountPerBlock\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"ethDepositMaxCountPerBlock\",\"type\":\"uint64\"},{\"internalType\":\"uint96\",\"name\":\"ethDepositMinAmount\",\"type\":\"uint96\"},{\"internalType\":\"uint96\",\"name\":\"ethDepositMaxAmount\",\"type\":\"uint96\"},{\"internalType\":\"uint256\",\"name\":\"ethDepositGas\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"ethDepositMaxFee\",\"type\":\"uint256\"}],\"internalType\":\"structTaikoData.Config\",\"name\":\"\",\"type\":\"tuple\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"blockId\",\"type\":\"uint64\"}],\"name\":\"getCrossChainBlockHash\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"blockId\",\"type\":\"uint64\"}],\"name\":\"getCrossChainSignalRoot\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getStateVariables\",\"outputs\":[{\"components\":[{\"internalType\":\"uint64\",\"name\":\"genesisHeight\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"genesisTimestamp\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"numBlocks\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"lastVerifiedBlockId\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"nextEthDepositToProcess\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"numEthDeposits\",\"type\":\"uint64\"}],\"internalType\":\"structTaikoData.StateVariables\",\"name\":\"\",\"type\":\"tuple\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"addr\",\"type\":\"address\"}],\"name\":\"getTaikoTokenBalance\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"blockId\",\"type\":\"uint64\"},{\"internalType\":\"bytes32\",\"name\":\"parentHash\",\"type\":\"bytes32\"}],\"name\":\"getTransition\",\"outputs\":[{\"components\":[{\"internalType\":\"bytes32\",\"name\":\"key\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"blockHash\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"signalRoot\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"prover\",\"type\":\"address\"},{\"internalType\":\"uint64\",\"name\":\"provenAt\",\"type\":\"uint64\"},{\"internalType\":\"bytes32[6]\",\"name\":\"__reserved\",\"type\":\"bytes32[6]\"}],\"internalType\":\"structTaikoData.Transition\",\"name\":\"\",\"type\":\"tuple\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint16\",\"name\":\"id\",\"type\":\"uint16\"}],\"name\":\"getVerifierName\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_addressManager\",\"type\":\"address\"},{\"internalType\":\"bytes32\",\"name\":\"_genesisBlockHash\",\"type\":\"bytes32\"}],\"name\":\"init\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"owner\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"input\",\"type\":\"bytes\"},{\"internalType\":\"bytes\",\"name\":\"assignment\",\"type\":\"bytes\"},{\"internalType\":\"bytes\",\"name\":\"txList\",\"type\":\"bytes\"}],\"name\":\"proposeBlock\",\"outputs\":[{\"components\":[{\"internalType\":\"uint64\",\"name\":\"id\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"timestamp\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"l1Height\",\"type\":\"uint64\"},{\"internalType\":\"bytes32\",\"name\":\"l1Hash\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"mixHash\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"txListHash\",\"type\":\"bytes32\"},{\"internalType\":\"uint24\",\"name\":\"txListByteStart\",\"type\":\"uint24\"},{\"internalType\":\"uint24\",\"name\":\"txListByteEnd\",\"type\":\"uint24\"},{\"internalType\":\"uint32\",\"name\":\"gasLimit\",\"type\":\"uint32\"},{\"internalType\":\"address\",\"name\":\"proposer\",\"type\":\"address\"},{\"components\":[{\"internalType\":\"address\",\"name\":\"recipient\",\"type\":\"address\"},{\"internalType\":\"uint96\",\"name\":\"amount\",\"type\":\"uint96\"},{\"internalType\":\"uint64\",\"name\":\"id\",\"type\":\"uint64\"}],\"internalType\":\"structTaikoData.EthDeposit[]\",\"name\":\"depositsProcessed\",\"type\":\"tuple[]\"}],\"internalType\":\"structTaikoData.BlockMetadata\",\"name\":\"meta\",\"type\":\"tuple\"}],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"blockId\",\"type\":\"uint64\"},{\"internalType\":\"bytes\",\"name\":\"input\",\"type\":\"bytes\"}],\"name\":\"proveBlock\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"renounceOwnership\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"chainId\",\"type\":\"uint256\"},{\"internalType\":\"bytes32\",\"name\":\"name\",\"type\":\"bytes32\"},{\"internalType\":\"bool\",\"name\":\"allowZeroAddress\",\"type\":\"bool\"}],\"name\":\"resolve\",\"outputs\":[{\"internalType\":\"addresspayable\",\"name\":\"addr\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"name\",\"type\":\"bytes32\"},{\"internalType\":\"bool\",\"name\":\"allowZeroAddress\",\"type\":\"bool\"}],\"name\":\"resolve\",\"outputs\":[{\"internalType\":\"addresspayable\",\"name\":\"addr\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"newAddressManager\",\"type\":\"address\"}],\"name\":\"setAddressManager\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"state\",\"outputs\":[{\"components\":[{\"internalType\":\"uint64\",\"name\":\"genesisHeight\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"genesisTimestamp\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"numEthDeposits\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"nextEthDepositToProcess\",\"type\":\"uint64\"}],\"internalType\":\"structTaikoData.SlotA\",\"name\":\"slotA\",\"type\":\"tuple\"},{\"components\":[{\"internalType\":\"uint64\",\"name\":\"numBlocks\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"nextEthDepositToProcess\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"lastVerifiedAt\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"lastVerifiedBlockId\",\"type\":\"uint64\"}],\"internalType\":\"structTaikoData.SlotB\",\"name\":\"slotB\",\"type\":\"tuple\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"newOwner\",\"type\":\"address\"}],\"name\":\"transferOwnership\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"maxBlocks\",\"type\":\"uint64\"}],\"name\":\"verifyBlocks\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"withdrawTaikoToken\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"stateMutability\":\"payable\",\"type\":\"receive\"}]", + ABI: "[{\"inputs\":[],\"name\":\"L1_ALREADY_PROVEN\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"L1_ALREADY_PROVEN\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"L1_BLOCK_ID_MISMATCH\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"L1_BLOCK_ID_MISMATCH\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"L1_BLOCK_ID_MISMATCH\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"L1_EVIDENCE_MISMATCH\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"L1_EVIDENCE_MISMATCH\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"L1_INSUFFICIENT_TOKEN\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"L1_INSUFFICIENT_TOKEN\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"L1_INVALID_ASSIGNMENT\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"L1_INVALID_ASSIGNMENT\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"L1_INVALID_BLOCK_ID\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"L1_INVALID_BLOCK_ID\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"L1_INVALID_BLOCK_ID\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"L1_INVALID_CONFIG\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"L1_INVALID_CONFIG\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"L1_INVALID_ETH_DEPOSIT\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"L1_INVALID_ETH_DEPOSIT\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"L1_INVALID_EVIDENCE\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"L1_INVALID_EVIDENCE\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"L1_INVALID_METADATA\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"L1_INVALID_METADATA\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"L1_INVALID_ORACLE_PROVER\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"L1_INVALID_ORACLE_PROVER\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"L1_INVALID_PARAM\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"L1_INVALID_PROOF\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"L1_INVALID_PROPOSER\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"L1_INVALID_PROPOSER\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"L1_INVALID_PROVER\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"L1_INVALID_PROVER\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"L1_INVALID_PROVER_SIG\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"L1_INVALID_PROVER_SIG\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"L1_NOT_PROVEABLE\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"L1_NOT_PROVEABLE\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"L1_SAME_PROOF\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"L1_SAME_PROOF\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"L1_TOO_MANY_BLOCKS\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"L1_TOO_MANY_BLOCKS\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"L1_TRANSITION_NOT_FOUND\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"L1_TRANSITION_NOT_FOUND\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"L1_TX_LIST\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"L1_TX_LIST\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"L1_TX_LIST_HASH\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"L1_TX_LIST_HASH\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"L1_TX_LIST_NOT_EXIST\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"L1_TX_LIST_NOT_EXIST\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"L1_TX_LIST_RANGE\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"L1_TX_LIST_RANGE\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"L1_UNEXPECTED_TRANSITION_ID\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"L1_UNEXPECTED_TRANSITION_ID\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"RESOLVER_DENIED\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"RESOLVER_INVALID_ADDR\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"chainId\",\"type\":\"uint256\"},{\"internalType\":\"bytes32\",\"name\":\"name\",\"type\":\"bytes32\"}],\"name\":\"RESOLVER_ZERO_ADDR\",\"type\":\"error\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"addressManager\",\"type\":\"address\"}],\"name\":\"AddressManagerChanged\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"blockId\",\"type\":\"uint256\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"prover\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"reward\",\"type\":\"uint256\"},{\"components\":[{\"internalType\":\"uint64\",\"name\":\"id\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"timestamp\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"l1Height\",\"type\":\"uint64\"},{\"internalType\":\"bytes32\",\"name\":\"l1Hash\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"mixHash\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"txListHash\",\"type\":\"bytes32\"},{\"internalType\":\"uint24\",\"name\":\"txListByteStart\",\"type\":\"uint24\"},{\"internalType\":\"uint24\",\"name\":\"txListByteEnd\",\"type\":\"uint24\"},{\"internalType\":\"uint32\",\"name\":\"gasLimit\",\"type\":\"uint32\"},{\"internalType\":\"address\",\"name\":\"proposer\",\"type\":\"address\"},{\"components\":[{\"internalType\":\"address\",\"name\":\"recipient\",\"type\":\"address\"},{\"internalType\":\"uint96\",\"name\":\"amount\",\"type\":\"uint96\"},{\"internalType\":\"uint64\",\"name\":\"id\",\"type\":\"uint64\"}],\"internalType\":\"structTaikoData.EthDeposit[]\",\"name\":\"depositsProcessed\",\"type\":\"tuple[]\"}],\"indexed\":false,\"internalType\":\"structTaikoData.BlockMetadata\",\"name\":\"meta\",\"type\":\"tuple\"}],\"name\":\"BlockProposed\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"blockId\",\"type\":\"uint256\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"prover\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"reward\",\"type\":\"uint256\"},{\"components\":[{\"internalType\":\"uint64\",\"name\":\"id\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"timestamp\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"l1Height\",\"type\":\"uint64\"},{\"internalType\":\"bytes32\",\"name\":\"l1Hash\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"mixHash\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"txListHash\",\"type\":\"bytes32\"},{\"internalType\":\"uint24\",\"name\":\"txListByteStart\",\"type\":\"uint24\"},{\"internalType\":\"uint24\",\"name\":\"txListByteEnd\",\"type\":\"uint24\"},{\"internalType\":\"uint32\",\"name\":\"gasLimit\",\"type\":\"uint32\"},{\"internalType\":\"address\",\"name\":\"proposer\",\"type\":\"address\"},{\"components\":[{\"internalType\":\"address\",\"name\":\"recipient\",\"type\":\"address\"},{\"internalType\":\"uint96\",\"name\":\"amount\",\"type\":\"uint96\"},{\"internalType\":\"uint64\",\"name\":\"id\",\"type\":\"uint64\"}],\"internalType\":\"structTaikoData.EthDeposit[]\",\"name\":\"depositsProcessed\",\"type\":\"tuple[]\"}],\"indexed\":false,\"internalType\":\"structTaikoData.BlockMetadata\",\"name\":\"meta\",\"type\":\"tuple\"}],\"name\":\"BlockProposed\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"blockId\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"parentHash\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"blockHash\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"signalRoot\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"prover\",\"type\":\"address\"}],\"name\":\"BlockProven\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"blockId\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"parentHash\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"blockHash\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"signalRoot\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"prover\",\"type\":\"address\"}],\"name\":\"BlockProven\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"blockId\",\"type\":\"uint256\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"prover\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"blockHash\",\"type\":\"bytes32\"}],\"name\":\"BlockVerified\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"blockId\",\"type\":\"uint256\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"prover\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"blockHash\",\"type\":\"bytes32\"}],\"name\":\"BlockVerified\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint64\",\"name\":\"blockId\",\"type\":\"uint64\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"bond\",\"type\":\"uint256\"}],\"name\":\"BondReceived\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint64\",\"name\":\"blockId\",\"type\":\"uint64\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"bond\",\"type\":\"uint256\"}],\"name\":\"BondReceived\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint64\",\"name\":\"blockId\",\"type\":\"uint64\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"bond\",\"type\":\"uint256\"}],\"name\":\"BondReturned\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint64\",\"name\":\"blockId\",\"type\":\"uint64\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"bond\",\"type\":\"uint256\"}],\"name\":\"BondReturned\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint64\",\"name\":\"blockId\",\"type\":\"uint64\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"bond\",\"type\":\"uint256\"}],\"name\":\"BondRewarded\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint64\",\"name\":\"blockId\",\"type\":\"uint64\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"bond\",\"type\":\"uint256\"}],\"name\":\"BondRewarded\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint64\",\"name\":\"srcHeight\",\"type\":\"uint64\"},{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"blockHash\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"signalRoot\",\"type\":\"bytes32\"}],\"name\":\"CrossChainSynced\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint64\",\"name\":\"srcHeight\",\"type\":\"uint64\"},{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"blockHash\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"signalRoot\",\"type\":\"bytes32\"}],\"name\":\"CrossChainSynced\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"components\":[{\"internalType\":\"address\",\"name\":\"recipient\",\"type\":\"address\"},{\"internalType\":\"uint96\",\"name\":\"amount\",\"type\":\"uint96\"},{\"internalType\":\"uint64\",\"name\":\"id\",\"type\":\"uint64\"}],\"indexed\":false,\"internalType\":\"structTaikoData.EthDeposit\",\"name\":\"deposit\",\"type\":\"tuple\"}],\"name\":\"EthDeposited\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"components\":[{\"internalType\":\"address\",\"name\":\"recipient\",\"type\":\"address\"},{\"internalType\":\"uint96\",\"name\":\"amount\",\"type\":\"uint96\"},{\"internalType\":\"uint64\",\"name\":\"id\",\"type\":\"uint64\"}],\"indexed\":false,\"internalType\":\"structTaikoData.EthDeposit\",\"name\":\"deposit\",\"type\":\"tuple\"}],\"name\":\"EthDeposited\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint8\",\"name\":\"version\",\"type\":\"uint8\"}],\"name\":\"Initialized\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"previousOwner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"newOwner\",\"type\":\"address\"}],\"name\":\"OwnershipTransferred\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"addressManager\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"canDepositEthToL2\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"recipient\",\"type\":\"address\"}],\"name\":\"depositEtherToL2\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"depositTaikoToken\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"blockId\",\"type\":\"uint64\"}],\"name\":\"getBlock\",\"outputs\":[{\"components\":[{\"internalType\":\"bytes32\",\"name\":\"metaHash\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"prover\",\"type\":\"address\"},{\"internalType\":\"uint96\",\"name\":\"validityBond\",\"type\":\"uint96\"},{\"internalType\":\"uint64\",\"name\":\"blockId\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"proposedAt\",\"type\":\"uint64\"},{\"internalType\":\"uint32\",\"name\":\"nextTransitionId\",\"type\":\"uint32\"},{\"internalType\":\"uint32\",\"name\":\"verifiedTransitionId\",\"type\":\"uint32\"},{\"internalType\":\"bytes32[7]\",\"name\":\"__reserved\",\"type\":\"bytes32[7]\"}],\"internalType\":\"structTaikoData.Block\",\"name\":\"blk\",\"type\":\"tuple\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getConfig\",\"outputs\":[{\"components\":[{\"internalType\":\"uint256\",\"name\":\"chainId\",\"type\":\"uint256\"},{\"internalType\":\"bool\",\"name\":\"relaySignalRoot\",\"type\":\"bool\"},{\"internalType\":\"uint64\",\"name\":\"blockMaxProposals\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"blockRingBufferSize\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"blockMaxVerificationsPerTx\",\"type\":\"uint64\"},{\"internalType\":\"uint32\",\"name\":\"blockMaxGasLimit\",\"type\":\"uint32\"},{\"internalType\":\"uint32\",\"name\":\"blockFeeBaseGas\",\"type\":\"uint32\"},{\"internalType\":\"uint24\",\"name\":\"blockMaxTxListBytes\",\"type\":\"uint24\"},{\"internalType\":\"uint256\",\"name\":\"blockTxListExpiry\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"proposerRewardPerSecond\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"proposerRewardMax\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"proofRegularCooldown\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"proofOracleCooldown\",\"type\":\"uint256\"},{\"internalType\":\"uint16\",\"name\":\"proofWindow\",\"type\":\"uint16\"},{\"internalType\":\"uint96\",\"name\":\"validityBond\",\"type\":\"uint96\"},{\"internalType\":\"bool\",\"name\":\"skipProverAssignmentVerificaiton\",\"type\":\"bool\"},{\"internalType\":\"uint256\",\"name\":\"ethDepositRingBufferSize\",\"type\":\"uint256\"},{\"internalType\":\"uint64\",\"name\":\"ethDepositMinCountPerBlock\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"ethDepositMaxCountPerBlock\",\"type\":\"uint64\"},{\"internalType\":\"uint96\",\"name\":\"ethDepositMinAmount\",\"type\":\"uint96\"},{\"internalType\":\"uint96\",\"name\":\"ethDepositMaxAmount\",\"type\":\"uint96\"},{\"internalType\":\"uint256\",\"name\":\"ethDepositGas\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"ethDepositMaxFee\",\"type\":\"uint256\"}],\"internalType\":\"structTaikoData.Config\",\"name\":\"\",\"type\":\"tuple\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"blockId\",\"type\":\"uint64\"}],\"name\":\"getCrossChainBlockHash\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"blockId\",\"type\":\"uint64\"}],\"name\":\"getCrossChainSignalRoot\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getStateVariables\",\"outputs\":[{\"components\":[{\"internalType\":\"uint64\",\"name\":\"genesisHeight\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"genesisTimestamp\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"numBlocks\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"lastVerifiedBlockId\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"nextEthDepositToProcess\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"numEthDeposits\",\"type\":\"uint64\"}],\"internalType\":\"structTaikoData.StateVariables\",\"name\":\"\",\"type\":\"tuple\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"addr\",\"type\":\"address\"}],\"name\":\"getTaikoTokenBalance\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"blockId\",\"type\":\"uint64\"},{\"internalType\":\"bytes32\",\"name\":\"parentHash\",\"type\":\"bytes32\"}],\"name\":\"getTransition\",\"outputs\":[{\"components\":[{\"internalType\":\"bytes32\",\"name\":\"key\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"blockHash\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"signalRoot\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"prover\",\"type\":\"address\"},{\"internalType\":\"uint64\",\"name\":\"provenAt\",\"type\":\"uint64\"},{\"internalType\":\"bytes32[6]\",\"name\":\"__reserved\",\"type\":\"bytes32[6]\"}],\"internalType\":\"structTaikoData.Transition\",\"name\":\"\",\"type\":\"tuple\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint16\",\"name\":\"id\",\"type\":\"uint16\"}],\"name\":\"getVerifierName\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_addressManager\",\"type\":\"address\"},{\"internalType\":\"bytes32\",\"name\":\"_genesisBlockHash\",\"type\":\"bytes32\"}],\"name\":\"init\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"owner\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"input\",\"type\":\"bytes\"},{\"internalType\":\"bytes\",\"name\":\"assignment\",\"type\":\"bytes\"},{\"internalType\":\"bytes\",\"name\":\"txList\",\"type\":\"bytes\"}],\"name\":\"proposeBlock\",\"outputs\":[{\"components\":[{\"internalType\":\"uint64\",\"name\":\"id\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"timestamp\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"l1Height\",\"type\":\"uint64\"},{\"internalType\":\"bytes32\",\"name\":\"l1Hash\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"mixHash\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"txListHash\",\"type\":\"bytes32\"},{\"internalType\":\"uint24\",\"name\":\"txListByteStart\",\"type\":\"uint24\"},{\"internalType\":\"uint24\",\"name\":\"txListByteEnd\",\"type\":\"uint24\"},{\"internalType\":\"uint32\",\"name\":\"gasLimit\",\"type\":\"uint32\"},{\"internalType\":\"address\",\"name\":\"proposer\",\"type\":\"address\"},{\"components\":[{\"internalType\":\"address\",\"name\":\"recipient\",\"type\":\"address\"},{\"internalType\":\"uint96\",\"name\":\"amount\",\"type\":\"uint96\"},{\"internalType\":\"uint64\",\"name\":\"id\",\"type\":\"uint64\"}],\"internalType\":\"structTaikoData.EthDeposit[]\",\"name\":\"depositsProcessed\",\"type\":\"tuple[]\"}],\"internalType\":\"structTaikoData.BlockMetadata\",\"name\":\"meta\",\"type\":\"tuple\"}],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"blockId\",\"type\":\"uint64\"},{\"internalType\":\"bytes\",\"name\":\"input\",\"type\":\"bytes\"}],\"name\":\"proveBlock\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"renounceOwnership\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"chainId\",\"type\":\"uint256\"},{\"internalType\":\"bytes32\",\"name\":\"name\",\"type\":\"bytes32\"},{\"internalType\":\"bool\",\"name\":\"allowZeroAddress\",\"type\":\"bool\"}],\"name\":\"resolve\",\"outputs\":[{\"internalType\":\"addresspayable\",\"name\":\"addr\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"name\",\"type\":\"bytes32\"},{\"internalType\":\"bool\",\"name\":\"allowZeroAddress\",\"type\":\"bool\"}],\"name\":\"resolve\",\"outputs\":[{\"internalType\":\"addresspayable\",\"name\":\"addr\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"newAddressManager\",\"type\":\"address\"}],\"name\":\"setAddressManager\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"state\",\"outputs\":[{\"components\":[{\"internalType\":\"uint64\",\"name\":\"genesisHeight\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"genesisTimestamp\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"numEthDeposits\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"nextEthDepositToProcess\",\"type\":\"uint64\"}],\"internalType\":\"structTaikoData.SlotA\",\"name\":\"slotA\",\"type\":\"tuple\"},{\"components\":[{\"internalType\":\"uint64\",\"name\":\"numBlocks\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"nextEthDepositToProcess\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"lastVerifiedAt\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"lastVerifiedBlockId\",\"type\":\"uint64\"}],\"internalType\":\"structTaikoData.SlotB\",\"name\":\"slotB\",\"type\":\"tuple\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"newOwner\",\"type\":\"address\"}],\"name\":\"transferOwnership\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"maxBlocks\",\"type\":\"uint64\"}],\"name\":\"verifyBlocks\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"withdrawTaikoToken\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"stateMutability\":\"payable\",\"type\":\"receive\"}]", } // TaikoL1ABI is the input ABI used to generate the binding from. diff --git a/packages/protocol/contracts/L1/TaikoData.sol b/packages/protocol/contracts/L1/TaikoData.sol index 1eb44c7efc..c9a88f056e 100644 --- a/packages/protocol/contracts/L1/TaikoData.sol +++ b/packages/protocol/contracts/L1/TaikoData.sol @@ -42,8 +42,8 @@ library TaikoData { // --------------------------------------------------------------------- // Group 3: Proof related configs // --------------------------------------------------------------------- - // The amount of Taiko token as a zk proof bond - uint96 assignmentBond; + // The amount of Taiko token as a prover liveness bond + uint96 livenessBond; // --------------------------------------------------------------------- // Group 4: ETH deposit related configs // --------------------------------------------------------------------- @@ -119,7 +119,7 @@ library TaikoData { bytes32 blockHash; // slot 2 bytes32 signalRoot; // slot 3 address prover; // slot 4 - uint96 proofBond; + uint96 validityBond; address contester; // slot 5 uint96 contestBond; uint64 timestamp; // slot 6 (82 bits) @@ -132,7 +132,7 @@ library TaikoData { struct Block { bytes32 metaHash; // slot 1 address assignedProver; // slot 2 - uint96 assignmentBond; + uint96 livenessBond; uint64 blockId; // slot 3 uint64 proposedAt; uint32 nextTransitionId; diff --git a/packages/protocol/contracts/L1/TaikoEvents.sol b/packages/protocol/contracts/L1/TaikoEvents.sol index 9403fab55e..c4a0ceb575 100644 --- a/packages/protocol/contracts/L1/TaikoEvents.sol +++ b/packages/protocol/contracts/L1/TaikoEvents.sol @@ -18,7 +18,7 @@ abstract contract TaikoEvents { /// @dev Emitted when a block is proposed. /// @param blockId The ID of the proposed block. /// @param assignedProver The block's assigned prover. - /// @param assignmentBond The bond in Taiko token from the assigned prover. + /// @param livenessBond The bond in Taiko token from the assigned prover. /// @param proverFee The fee paid to the assigned prover. /// @param reward The proposer's block reward in Taiko token. /// @param meta The block metadata containing information about the proposed @@ -26,7 +26,7 @@ abstract contract TaikoEvents { event BlockProposed( uint256 indexed blockId, address indexed assignedProver, - uint96 assignmentBond, + uint96 livenessBond, uint256 proverFee, uint256 reward, TaikoData.BlockMetadata meta @@ -53,7 +53,7 @@ abstract contract TaikoEvents { bytes32 blockHash, bytes32 signalRoot, address prover, - uint96 proofBond, + uint96 validityBond, uint16 tier ); diff --git a/packages/protocol/contracts/L1/TaikoL1.sol b/packages/protocol/contracts/L1/TaikoL1.sol index 3ef685fb5f..15a9253453 100644 --- a/packages/protocol/contracts/L1/TaikoL1.sol +++ b/packages/protocol/contracts/L1/TaikoL1.sol @@ -317,7 +317,7 @@ contract TaikoL1 is blockMaxTxListBytes: 120_000, proposerRewardPerSecond: 25e16, // 0.25 Taiko token proposerRewardMax: 32e18, // 32 Taiko token - assignmentBond: 10_240e18, + livenessBond: 10_240e18, ethDepositRingBufferSize: 1024, ethDepositMinCountPerBlock: 8, ethDepositMaxCountPerBlock: 32, diff --git a/packages/protocol/contracts/L1/libs/LibProposing.sol b/packages/protocol/contracts/L1/libs/LibProposing.sol index 4be1462e2a..0378e4b5da 100644 --- a/packages/protocol/contracts/L1/libs/LibProposing.sol +++ b/packages/protocol/contracts/L1/libs/LibProposing.sol @@ -28,7 +28,7 @@ library LibProposing { event BlockProposed( uint256 indexed blockId, address indexed assignedProver, - uint96 assignmentBond, + uint96 livenessBond, uint256 proverFee, uint256 reward, TaikoData.BlockMetadata meta @@ -157,10 +157,10 @@ library LibProposing { // slot. blk.metaHash = hashMetadata(meta); - // Safeguard the assignment bond to ensure its preservation, + // Safeguard the liveness bond to ensure its preservation, // particularly in scenarios where it might be altered after the // block's proposal but before it has been proven or verified. - blk.assignmentBond = config.assignmentBond; + blk.livenessBond = config.livenessBond; blk.blockId = b.numBlocks; blk.proposedAt = meta.timestamp; @@ -185,13 +185,13 @@ library LibProposing { blk.assignedProver = assignment.prover; // The assigned prover burns Taiko tokens, referred to as the - // "assignment bond." This bond remains non-refundable to the + // "liveness bond." This bond remains non-refundable to the // assigned prover under two conditions: if the block's verification // transition is not the initial one or if it was generated and // validated by different provers. Instead, a portion of the assignment // bond serves as a reward for the actual prover. LibTaikoToken.debitToken( - state, resolver, blk.assignedProver, config.assignmentBond + state, resolver, blk.assignedProver, config.livenessBond ); // Increment the counter (cursor) by 1. @@ -210,7 +210,7 @@ library LibProposing { emit BlockProposed({ blockId: blk.blockId, assignedProver: blk.assignedProver, - assignmentBond: config.assignmentBond, + livenessBond: config.livenessBond, proverFee: proverFee, reward: reward, meta: meta diff --git a/packages/protocol/contracts/L1/libs/LibProving.sol b/packages/protocol/contracts/L1/libs/LibProving.sol index 08c899b300..768f4c3fc2 100644 --- a/packages/protocol/contracts/L1/libs/LibProving.sol +++ b/packages/protocol/contracts/L1/libs/LibProving.sol @@ -26,7 +26,7 @@ library LibProving { bytes32 blockHash, bytes32 signalRoot, address prover, - uint96 proofBond, + uint96 validityBond, uint16 tier ); @@ -110,7 +110,7 @@ library LibProving { tran = state.transitions[slot][tid]; tran.blockHash = 0; tran.signalRoot = 0; - tran.proofBond = 0; + tran.validityBond = 0; tran.contester = address(0); tran.contestBond = 1; // see below (the value does't matter) tran.timestamp = blk.proposedAt; @@ -231,7 +231,7 @@ library LibProving { blockHash: evidence.blockHash, signalRoot: evidence.signalRoot, prover: msg.sender, - proofBond: 0, + validityBond: 0, tier: evidence.tier }); } else if (evidence.tier == tran.tier) { @@ -339,9 +339,9 @@ library LibProving { revert L1_ASSIGNED_PROVER_NOT_ALLOWED(); } - // Burn the proof bond from the prover. + // Burn the validity bond from the prover. LibTaikoToken.debitToken( - state, resolver, msg.sender, tier.proofBond + state, resolver, msg.sender, tier.validityBond ); unchecked { @@ -358,20 +358,20 @@ library LibProving { // the previous prover. reward = tran.contestBond / 4; - // Mint the reward and the proof bond and return it to the - // previous prover. + // Mint the reward and the validity bond and return it to + // the previous prover. LibTaikoToken.creditToken( state, resolver, tran.prover, - reward + tran.proofBond, + reward + tran.validityBond, false ); } else { // In the event that the contester is the winner, half of - // the proof bond is designated as the reward, to be divided - // equally between the new prover and the contester. - reward = tran.proofBond / 4; + // the validity bond is designated as the reward, to be + // divided equally between the new prover and the contester. + reward = tran.validityBond / 4; // It's important to note that the contester is set to zero // for the tier-0 transition. Consequently, we only grant a @@ -401,7 +401,7 @@ library LibProving { } // In theory, the reward can also be zero for certain tiers if - // their proof bonds are set to zero. + // their validity bonds are set to zero. if (reward != 0) { LibTaikoToken.creditToken( state, resolver, msg.sender, reward, false @@ -413,7 +413,7 @@ library LibProving { // emerges as the winner, we consistently erase the contest history // to make this transition appear entirely new. tran.prover = msg.sender; - tran.proofBond = tier.proofBond; + tran.validityBond = tier.validityBond; tran.contester = address(0); tran.contestBond = 1; tran.timestamp = uint64(block.timestamp); @@ -425,7 +425,7 @@ library LibProving { blockHash: evidence.blockHash, signalRoot: evidence.signalRoot, prover: msg.sender, - proofBond: tier.proofBond, + validityBond: tier.validityBond, tier: evidence.tier }); } diff --git a/packages/protocol/contracts/L1/libs/LibVerifying.sol b/packages/protocol/contracts/L1/libs/LibVerifying.sol index 9219e87dc6..26defe973c 100644 --- a/packages/protocol/contracts/L1/libs/LibVerifying.sol +++ b/packages/protocol/contracts/L1/libs/LibVerifying.sol @@ -49,8 +49,8 @@ library LibVerifying { || config.blockRingBufferSize <= config.blockMaxProposals + 1 || config.blockMaxGasLimit == 0 || config.blockMaxTxListBytes == 0 || config.blockMaxTxListBytes > 128 * 1024 //blob up to 128K - || config.assignmentBond == 0 - || config.assignmentBond < 10 * config.proposerRewardPerSecond + || config.livenessBond == 0 + || config.livenessBond < 10 * config.proposerRewardPerSecond || config.ethDepositRingBufferSize <= 1 || config.ethDepositMinCountPerBlock == 0 || config.ethDepositMaxCountPerBlock @@ -173,24 +173,25 @@ library LibVerifying { blockHash = tran.blockHash; signalRoot = tran.signalRoot; - // We consistently return the assignment bond and the proof bond - // to the actual prover of the transition utilized for block - // verification. If the actual prover happens to be the block's - // assigned prover, he will receive both deposits, ultimately - // earning the proving fee paid during block proposal. In - // contrast, if the actual prover is different from the block's - // assigned prover, the assignment bond serves as a reward to - // the actual prover, while the assigned prover forfeits his - // assignment bond due to failure to fulfill their commitment. + // We consistently return the liveness bond and the validity + // bond to the actual prover of the transition utilized for + // block verification. If the actual prover happens to be the + // block's assigned prover, he will receive both deposits, + // ultimately earning the proving fee paid during block + // proposal. In contrast, if the actual prover is different from + // the block's assigned prover, the liveness bond serves as a + // reward to the actual prover, while the assigned prover + // forfeits his liveness bond due to failure to fulfill their + // commitment. uint256 bondToReturn = - uint256(tran.proofBond) + blk.assignmentBond; + uint256(tran.validityBond) + blk.livenessBond; // Nevertheless, it's possible for the actual prover to be the // same individual or entity as the block's assigned prover. // Consequently, we have chosen to grant the actual prover only - // half of the assignment bond as a reward. + // half of the liveness bond as a reward. if (tran.prover != blk.assignedProver) { - bondToReturn -= blk.assignmentBond / 2; + bondToReturn -= blk.livenessBond / 2; } LibTaikoToken.creditToken( diff --git a/packages/protocol/contracts/L1/tiers/ITierProvider.sol b/packages/protocol/contracts/L1/tiers/ITierProvider.sol index 5c812b9357..9b4eee00f3 100644 --- a/packages/protocol/contracts/L1/tiers/ITierProvider.sol +++ b/packages/protocol/contracts/L1/tiers/ITierProvider.sol @@ -11,7 +11,7 @@ pragma solidity ^0.8.20; interface ITierProvider { struct Tier { bytes32 verifierName; - uint96 proofBond; + uint96 validityBond; uint96 contestBond; uint24 cooldownWindow; uint16 provingWindow; diff --git a/packages/protocol/contracts/L1/tiers/OPL2ConfigProvider.sol b/packages/protocol/contracts/L1/tiers/OPL2ConfigProvider.sol index f900ad0eae..036f54de5e 100644 --- a/packages/protocol/contracts/L1/tiers/OPL2ConfigProvider.sol +++ b/packages/protocol/contracts/L1/tiers/OPL2ConfigProvider.sol @@ -21,7 +21,7 @@ contract OPL2ConfigProvider is ITierProvider { if (tierId == LibTiers.TIER_OPTIMISTIC) { return ITierProvider.Tier({ verifierName: "tier_optimistic", - proofBond: 100_000 ether, // TKO + validityBond: 100_000 ether, // TKO contestBond: 100_000 ether, // TKO cooldownWindow: 4 hours, provingWindow: 20 minutes @@ -31,7 +31,7 @@ contract OPL2ConfigProvider is ITierProvider { if (tierId == LibTiers.TIER_SGX) { return ITierProvider.Tier({ verifierName: "tier_sgx", - proofBond: 50_000 ether, // TKO + validityBond: 50_000 ether, // TKO contestBond: 50_000 ether, // TKO cooldownWindow: 3 hours, provingWindow: 60 minutes @@ -41,7 +41,7 @@ contract OPL2ConfigProvider is ITierProvider { if (tierId == LibTiers.TIER_PSE_ZKEVM) { return ITierProvider.Tier({ verifierName: "tier_pse_zkevm", - proofBond: 10_000 ether, // TKO + validityBond: 10_000 ether, // TKO contestBond: 10_000 ether, // TKO cooldownWindow: 2 hours, provingWindow: 90 minutes @@ -51,7 +51,7 @@ contract OPL2ConfigProvider is ITierProvider { if (tierId == LibTiers.TIER_GUARDIAN) { return ITierProvider.Tier({ verifierName: "tier_guardian", - proofBond: 0, + validityBond: 0, contestBond: 0, // not contestable cooldownWindow: 1 hours, provingWindow: 120 minutes diff --git a/packages/protocol/contracts/L1/tiers/ZKL2ConfigProvider.sol b/packages/protocol/contracts/L1/tiers/ZKL2ConfigProvider.sol index 056bb8029f..bdf6a14a6d 100644 --- a/packages/protocol/contracts/L1/tiers/ZKL2ConfigProvider.sol +++ b/packages/protocol/contracts/L1/tiers/ZKL2ConfigProvider.sol @@ -21,7 +21,7 @@ contract ZKL2ConfigProvider is ITierProvider { if (tierId == LibTiers.TIER_PSE_ZKEVM) { return ITierProvider.Tier({ verifierName: "tier_pse_zkevm", - proofBond: 10_000 ether, // TKO + validityBond: 10_000 ether, // TKO contestBond: 10_000 ether, // TKO cooldownWindow: 2 hours, provingWindow: 90 minutes @@ -31,7 +31,7 @@ contract ZKL2ConfigProvider is ITierProvider { if (tierId == LibTiers.TIER_GUARDIAN) { return ITierProvider.Tier({ verifierName: "tier_guardian", - proofBond: 0, + validityBond: 0, contestBond: 0, // not contestable cooldownWindow: 1 hours, provingWindow: 120 minutes diff --git a/packages/protocol/docs/contestable_validity_rollup.md b/packages/protocol/docs/contestable_validity_rollup.md index e6f689a27b..f48e89d8c8 100644 --- a/packages/protocol/docs/contestable_validity_rollup.md +++ b/packages/protocol/docs/contestable_validity_rollup.md @@ -6,9 +6,9 @@ For a given block, a transition can be uniquely identified by its _parent hash_. - **The First Transition**: Refers to the transition with ID = 1. -- **Assignment Bond**: The bond provided by a block's assigned prover, serving as a commitment to initially prove the first transition and to provide post-contest proofs within the corresponding proving window. +- **Liveness Bond**: The bond provided by a block's assigned prover, serving as a commitment to initially prove the first transition and to provide post-contest proofs within the corresponding proving window. -- **Proof Bond**: The bond provided by the actual prover of a proof, signifying their commitment that the proof is indeed correct and that they are ready to withstand a contest. +- **Validity Bond**: The bond provided by the actual prover of a proof, signifying their commitment that the proof is indeed correct and that they are ready to withstand a contest. - **Contest Bond**: The bond provided by the contester. @@ -24,25 +24,25 @@ After a block is contested, it's eligible to be re-proven using a higher-tier pr Each tier is associated with a distinct proving window. Generally, it's advisable for provers to opt for a lower-tier proof when feasible, as choosing a higher-tier proof, despite its acceptability, might not be the most efficient or profitable choice. -## Proof Bonds and Contest Bonds +## Validity Bonds and Contest Bonds -Each tier mandates two values: a _proof bond_ and a _contest bond_. +Each tier mandates two values: a _validity bond_ and a _contest bond_. -Submitting a tier-N proof necessitates depositing a tier-N proof bond into the transition. If a subsequent higher-tier proof invalidates this transition, the bond is burned. Conversely, contesting a tier-N transition requires a contester to deposit the respective contest bond, which is forfeited if the contest is wrong. +Submitting a tier-N proof necessitates depositing a tier-N validity bond into the transition. If a subsequent higher-tier proof invalidates this transition, the bond is burned. Conversely, contesting a tier-N transition requires a contester to deposit the respective contest bond, which is forfeited if the contest is wrong. ### Contest Bond Configuration -To determine the size of the contest bond in relation to the proof bond, a few considerations come into play: +To determine the size of the contest bond in relation to the validity bond, a few considerations come into play: 1. **Tier Differences:** As we move up the tiers, the assumed trustworthiness of proofs increases. Given this, contests against higher tiers should necessitate larger bonds, reflecting the increased certainty and reliability of these tiers. A contest against a high-tier transition asserts that a major flaw exists in a supposedly secure tier, and so the bond should match this gravity. -2. **Optimistic (tier-1):** Given that tier-1 is an optimistic assertion without a proof, it's logical for its contest bond to be equal to its proof bond. This recognizes the provisional nature of such transitions and ensures that contests are neither discouraged nor incentivized excessively. +2. **Optimistic (tier-1):** Given that tier-1 is an optimistic assertion without a proof, it's logical for its contest bond to be equal to its validity bond. This recognizes the provisional nature of such transitions and ensures that contests are neither discouraged nor incentivized excessively. In essence, the size of the contest bond should mirror the risk and certainty levels associated with the proofs and contests in each tier. ## Re-proving a Transition -Consider Alice proves a transition with a $10,000 bond, and Bob contests it with a bond of $20,000. Now, Cindy can prove this transition with a proof bond of $5,000. +Consider Alice proves a transition with a $10,000 bond, and Bob contests it with a bond of $20,000. Now, Cindy can prove this transition with a validity bond of $5,000. **If Cindy's proof upholds Alice:** @@ -86,7 +86,7 @@ To exemplify, given the accepted rationale, the bond distribution dynamics would From an engineering standpoint, this approach of erasing prior proving impacts streamlines the implementation and reduces code complexity. -Indeed, allowing a new prover to deposit a proof bond that's smaller than the potential reward from either the original prover or the contester is not viewed as a system flaw or bug. The rationale behind this is that the new proof is expected to be more trustworthy than the previous one. +Indeed, allowing a new prover to deposit a validity bond that's smaller than the potential reward from either the original prover or the contester is not viewed as a system flaw or bug. The rationale behind this is that the new proof is expected to be more trustworthy than the previous one. ## Prover Fees diff --git a/packages/protocol/test/L1/TaikoL1.t.sol b/packages/protocol/test/L1/TaikoL1.t.sol index 2976b7f982..d52953000d 100644 --- a/packages/protocol/test/L1/TaikoL1.t.sol +++ b/packages/protocol/test/L1/TaikoL1.t.sol @@ -24,7 +24,7 @@ contract TaikoL1_NoCooldown is TaikoL1 { config.blockMaxVerificationsPerTx = 0; config.blockMaxProposals = 10; config.blockRingBufferSize = 12; - config.assignmentBond = 1e18; // 1 Taiko token + config.livenessBond = 1e18; // 1 Taiko token config.proposerRewardPerSecond = 1e15; // 0.001 Taiko token } } diff --git a/packages/protocol/test/L1/TaikoL1LibProvingWithTiers.t.sol b/packages/protocol/test/L1/TaikoL1LibProvingWithTiers.t.sol index e083985147..6b26e9ede9 100644 --- a/packages/protocol/test/L1/TaikoL1LibProvingWithTiers.t.sol +++ b/packages/protocol/test/L1/TaikoL1LibProvingWithTiers.t.sol @@ -29,7 +29,7 @@ contract TaikoL1Tiers is TaikoL1 { config.blockMaxVerificationsPerTx = 0; config.blockMaxProposals = 10; config.blockRingBufferSize = 12; - config.assignmentBond = 1e18; // 1 Taiko token + config.livenessBond = 1e18; // 1 Taiko token config.proposerRewardPerSecond = 1e15; // 0.001 Taiko token } } diff --git a/packages/relayer/bindings/taikol1/TaikoL1.go b/packages/relayer/bindings/taikol1/TaikoL1.go index b60a05648c..ba6491b186 100644 --- a/packages/relayer/bindings/taikol1/TaikoL1.go +++ b/packages/relayer/bindings/taikol1/TaikoL1.go @@ -127,7 +127,7 @@ type TaikoDataStateVariables struct { // TaikoL1MetaData contains all meta data concerning the TaikoL1 contract. var TaikoL1MetaData = &bind.MetaData{ - ABI: "[{\"inputs\":[],\"name\":\"L1_ALREADY_PROVEN\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"L1_ALREADY_PROVEN\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"L1_BLOCK_ID_MISMATCH\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"L1_BLOCK_ID_MISMATCH\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"L1_BLOCK_ID_MISMATCH\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"L1_EVIDENCE_MISMATCH\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"L1_EVIDENCE_MISMATCH\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"L1_FORK_CHOICE_NOT_FOUND\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"L1_FORK_CHOICE_NOT_FOUND\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"L1_INSUFFICIENT_TOKEN\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"L1_INSUFFICIENT_TOKEN\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"L1_INVALID_ASSIGNMENT\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"L1_INVALID_ASSIGNMENT\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"L1_INVALID_BLOCK_ID\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"L1_INVALID_BLOCK_ID\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"L1_INVALID_BLOCK_ID\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"L1_INVALID_CONFIG\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"L1_INVALID_CONFIG\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"L1_INVALID_ETH_DEPOSIT\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"L1_INVALID_ETH_DEPOSIT\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"L1_INVALID_EVIDENCE\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"L1_INVALID_EVIDENCE\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"L1_INVALID_METADATA\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"L1_INVALID_METADATA\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"L1_INVALID_ORACLE_PROVER\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"L1_INVALID_ORACLE_PROVER\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"L1_INVALID_PARAM\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"L1_INVALID_PROOF\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"L1_INVALID_PROPOSER\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"L1_INVALID_PROPOSER\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"L1_INVALID_PROVER\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"L1_INVALID_PROVER\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"L1_INVALID_PROVER_SIG\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"L1_INVALID_PROVER_SIG\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"L1_NOT_PROVEABLE\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"L1_NOT_PROVEABLE\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"L1_SAME_PROOF\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"L1_SAME_PROOF\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"L1_TOO_MANY_BLOCKS\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"L1_TOO_MANY_BLOCKS\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"L1_TX_LIST\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"L1_TX_LIST\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"L1_TX_LIST_HASH\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"L1_TX_LIST_HASH\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"L1_TX_LIST_NOT_EXIST\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"L1_TX_LIST_NOT_EXIST\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"L1_TX_LIST_RANGE\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"L1_TX_LIST_RANGE\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"L1_UNEXPECTED_FORK_CHOICE_ID\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"L1_UNEXPECTED_FORK_CHOICE_ID\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"RESOLVER_DENIED\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"RESOLVER_INVALID_ADDR\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"chainId\",\"type\":\"uint256\"},{\"internalType\":\"bytes32\",\"name\":\"name\",\"type\":\"bytes32\"}],\"name\":\"RESOLVER_ZERO_ADDR\",\"type\":\"error\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"addressManager\",\"type\":\"address\"}],\"name\":\"AddressManagerChanged\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"blockId\",\"type\":\"uint256\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"prover\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"reward\",\"type\":\"uint256\"},{\"components\":[{\"internalType\":\"uint64\",\"name\":\"id\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"timestamp\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"l1Height\",\"type\":\"uint64\"},{\"internalType\":\"bytes32\",\"name\":\"l1Hash\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"mixHash\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"txListHash\",\"type\":\"bytes32\"},{\"internalType\":\"uint24\",\"name\":\"txListByteStart\",\"type\":\"uint24\"},{\"internalType\":\"uint24\",\"name\":\"txListByteEnd\",\"type\":\"uint24\"},{\"internalType\":\"uint32\",\"name\":\"gasLimit\",\"type\":\"uint32\"},{\"internalType\":\"address\",\"name\":\"beneficiary\",\"type\":\"address\"},{\"components\":[{\"internalType\":\"address\",\"name\":\"recipient\",\"type\":\"address\"},{\"internalType\":\"uint96\",\"name\":\"amount\",\"type\":\"uint96\"},{\"internalType\":\"uint64\",\"name\":\"id\",\"type\":\"uint64\"}],\"internalType\":\"structTaikoData.EthDeposit[]\",\"name\":\"depositsProcessed\",\"type\":\"tuple[]\"}],\"indexed\":false,\"internalType\":\"structTaikoData.BlockMetadata\",\"name\":\"meta\",\"type\":\"tuple\"}],\"name\":\"BlockProposed\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"blockId\",\"type\":\"uint256\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"prover\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"reward\",\"type\":\"uint256\"},{\"components\":[{\"internalType\":\"uint64\",\"name\":\"id\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"timestamp\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"l1Height\",\"type\":\"uint64\"},{\"internalType\":\"bytes32\",\"name\":\"l1Hash\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"mixHash\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"txListHash\",\"type\":\"bytes32\"},{\"internalType\":\"uint24\",\"name\":\"txListByteStart\",\"type\":\"uint24\"},{\"internalType\":\"uint24\",\"name\":\"txListByteEnd\",\"type\":\"uint24\"},{\"internalType\":\"uint32\",\"name\":\"gasLimit\",\"type\":\"uint32\"},{\"internalType\":\"address\",\"name\":\"beneficiary\",\"type\":\"address\"},{\"components\":[{\"internalType\":\"address\",\"name\":\"recipient\",\"type\":\"address\"},{\"internalType\":\"uint96\",\"name\":\"amount\",\"type\":\"uint96\"},{\"internalType\":\"uint64\",\"name\":\"id\",\"type\":\"uint64\"}],\"internalType\":\"structTaikoData.EthDeposit[]\",\"name\":\"depositsProcessed\",\"type\":\"tuple[]\"}],\"indexed\":false,\"internalType\":\"structTaikoData.BlockMetadata\",\"name\":\"meta\",\"type\":\"tuple\"}],\"name\":\"BlockProposed\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"blockId\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"parentHash\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"blockHash\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"signalRoot\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"prover\",\"type\":\"address\"}],\"name\":\"BlockProven\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"blockId\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"parentHash\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"blockHash\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"signalRoot\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"prover\",\"type\":\"address\"}],\"name\":\"BlockProven\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"blockId\",\"type\":\"uint256\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"prover\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"blockHash\",\"type\":\"bytes32\"}],\"name\":\"BlockVerified\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"blockId\",\"type\":\"uint256\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"prover\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"blockHash\",\"type\":\"bytes32\"}],\"name\":\"BlockVerified\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint64\",\"name\":\"srcHeight\",\"type\":\"uint64\"},{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"blockHash\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"signalRoot\",\"type\":\"bytes32\"}],\"name\":\"CrossChainSynced\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint64\",\"name\":\"srcHeight\",\"type\":\"uint64\"},{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"blockHash\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"signalRoot\",\"type\":\"bytes32\"}],\"name\":\"CrossChainSynced\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"components\":[{\"internalType\":\"address\",\"name\":\"recipient\",\"type\":\"address\"},{\"internalType\":\"uint96\",\"name\":\"amount\",\"type\":\"uint96\"},{\"internalType\":\"uint64\",\"name\":\"id\",\"type\":\"uint64\"}],\"indexed\":false,\"internalType\":\"structTaikoData.EthDeposit\",\"name\":\"deposit\",\"type\":\"tuple\"}],\"name\":\"EthDeposited\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"components\":[{\"internalType\":\"address\",\"name\":\"recipient\",\"type\":\"address\"},{\"internalType\":\"uint96\",\"name\":\"amount\",\"type\":\"uint96\"},{\"internalType\":\"uint64\",\"name\":\"id\",\"type\":\"uint64\"}],\"indexed\":false,\"internalType\":\"structTaikoData.EthDeposit\",\"name\":\"deposit\",\"type\":\"tuple\"}],\"name\":\"EthDeposited\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint8\",\"name\":\"version\",\"type\":\"uint8\"}],\"name\":\"Initialized\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"previousOwner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"newOwner\",\"type\":\"address\"}],\"name\":\"OwnershipTransferred\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"addressManager\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"canDepositEthToL2\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"recipient\",\"type\":\"address\"}],\"name\":\"depositEtherToL2\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"depositTaikoToken\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"blockId\",\"type\":\"uint64\"}],\"name\":\"getBlock\",\"outputs\":[{\"components\":[{\"internalType\":\"bytes32\",\"name\":\"metaHash\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"prover\",\"type\":\"address\"},{\"internalType\":\"uint64\",\"name\":\"proposedAt\",\"type\":\"uint64\"},{\"internalType\":\"uint16\",\"name\":\"nextForkChoiceId\",\"type\":\"uint16\"},{\"internalType\":\"uint16\",\"name\":\"verifiedForkChoiceId\",\"type\":\"uint16\"},{\"internalType\":\"uint64\",\"name\":\"blockId\",\"type\":\"uint64\"},{\"internalType\":\"uint96\",\"name\":\"proofBond\",\"type\":\"uint96\"},{\"internalType\":\"uint16\",\"name\":\"proofWindow\",\"type\":\"uint16\"}],\"internalType\":\"structTaikoData.Block\",\"name\":\"blk\",\"type\":\"tuple\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getConfig\",\"outputs\":[{\"components\":[{\"internalType\":\"uint256\",\"name\":\"chainId\",\"type\":\"uint256\"},{\"internalType\":\"bool\",\"name\":\"relaySignalRoot\",\"type\":\"bool\"},{\"internalType\":\"uint64\",\"name\":\"blockMaxProposals\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"blockRingBufferSize\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"blockMaxVerificationsPerTx\",\"type\":\"uint64\"},{\"internalType\":\"uint32\",\"name\":\"blockMaxGasLimit\",\"type\":\"uint32\"},{\"internalType\":\"uint32\",\"name\":\"blockFeeBaseGas\",\"type\":\"uint32\"},{\"internalType\":\"uint24\",\"name\":\"blockMaxTxListBytes\",\"type\":\"uint24\"},{\"internalType\":\"uint256\",\"name\":\"blockTxListExpiry\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"proposerRewardPerSecond\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"proposerRewardMax\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"proofRegularCooldown\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"proofOracleCooldown\",\"type\":\"uint256\"},{\"internalType\":\"uint16\",\"name\":\"proofWindow\",\"type\":\"uint16\"},{\"internalType\":\"uint96\",\"name\":\"proofBond\",\"type\":\"uint96\"},{\"internalType\":\"bool\",\"name\":\"skipProverAssignmentVerificaiton\",\"type\":\"bool\"},{\"internalType\":\"uint256\",\"name\":\"ethDepositRingBufferSize\",\"type\":\"uint256\"},{\"internalType\":\"uint64\",\"name\":\"ethDepositMinCountPerBlock\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"ethDepositMaxCountPerBlock\",\"type\":\"uint64\"},{\"internalType\":\"uint96\",\"name\":\"ethDepositMinAmount\",\"type\":\"uint96\"},{\"internalType\":\"uint96\",\"name\":\"ethDepositMaxAmount\",\"type\":\"uint96\"},{\"internalType\":\"uint256\",\"name\":\"ethDepositGas\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"ethDepositMaxFee\",\"type\":\"uint256\"}],\"internalType\":\"structTaikoData.Config\",\"name\":\"\",\"type\":\"tuple\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"blockId\",\"type\":\"uint64\"}],\"name\":\"getCrossChainBlockHash\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"blockId\",\"type\":\"uint64\"}],\"name\":\"getCrossChainSignalRoot\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"blockId\",\"type\":\"uint64\"},{\"internalType\":\"bytes32\",\"name\":\"parentHash\",\"type\":\"bytes32\"}],\"name\":\"getForkChoice\",\"outputs\":[{\"components\":[{\"internalType\":\"bytes32\",\"name\":\"key\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"blockHash\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"signalRoot\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"prover\",\"type\":\"address\"},{\"internalType\":\"uint64\",\"name\":\"provenAt\",\"type\":\"uint64\"}],\"internalType\":\"structTaikoData.ForkChoice\",\"name\":\"\",\"type\":\"tuple\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getStateVariables\",\"outputs\":[{\"components\":[{\"internalType\":\"uint64\",\"name\":\"genesisHeight\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"genesisTimestamp\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"numBlocks\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"lastVerifiedBlockId\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"nextEthDepositToProcess\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"numEthDeposits\",\"type\":\"uint64\"}],\"internalType\":\"structTaikoData.StateVariables\",\"name\":\"\",\"type\":\"tuple\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"addr\",\"type\":\"address\"}],\"name\":\"getTaikoTokenBalance\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint16\",\"name\":\"id\",\"type\":\"uint16\"}],\"name\":\"getVerifierName\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_addressManager\",\"type\":\"address\"},{\"internalType\":\"bytes32\",\"name\":\"_genesisBlockHash\",\"type\":\"bytes32\"}],\"name\":\"init\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"owner\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"input\",\"type\":\"bytes\"},{\"internalType\":\"bytes\",\"name\":\"assignment\",\"type\":\"bytes\"},{\"internalType\":\"bytes\",\"name\":\"txList\",\"type\":\"bytes\"}],\"name\":\"proposeBlock\",\"outputs\":[{\"components\":[{\"internalType\":\"uint64\",\"name\":\"id\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"timestamp\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"l1Height\",\"type\":\"uint64\"},{\"internalType\":\"bytes32\",\"name\":\"l1Hash\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"mixHash\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"txListHash\",\"type\":\"bytes32\"},{\"internalType\":\"uint24\",\"name\":\"txListByteStart\",\"type\":\"uint24\"},{\"internalType\":\"uint24\",\"name\":\"txListByteEnd\",\"type\":\"uint24\"},{\"internalType\":\"uint32\",\"name\":\"gasLimit\",\"type\":\"uint32\"},{\"internalType\":\"address\",\"name\":\"beneficiary\",\"type\":\"address\"},{\"components\":[{\"internalType\":\"address\",\"name\":\"recipient\",\"type\":\"address\"},{\"internalType\":\"uint96\",\"name\":\"amount\",\"type\":\"uint96\"},{\"internalType\":\"uint64\",\"name\":\"id\",\"type\":\"uint64\"}],\"internalType\":\"structTaikoData.EthDeposit[]\",\"name\":\"depositsProcessed\",\"type\":\"tuple[]\"}],\"internalType\":\"structTaikoData.BlockMetadata\",\"name\":\"meta\",\"type\":\"tuple\"}],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"blockId\",\"type\":\"uint64\"},{\"internalType\":\"bytes\",\"name\":\"input\",\"type\":\"bytes\"}],\"name\":\"proveBlock\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"renounceOwnership\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"chainId\",\"type\":\"uint256\"},{\"internalType\":\"bytes32\",\"name\":\"name\",\"type\":\"bytes32\"},{\"internalType\":\"bool\",\"name\":\"allowZeroAddress\",\"type\":\"bool\"}],\"name\":\"resolve\",\"outputs\":[{\"internalType\":\"addresspayable\",\"name\":\"addr\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"name\",\"type\":\"bytes32\"},{\"internalType\":\"bool\",\"name\":\"allowZeroAddress\",\"type\":\"bool\"}],\"name\":\"resolve\",\"outputs\":[{\"internalType\":\"addresspayable\",\"name\":\"addr\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"newAddressManager\",\"type\":\"address\"}],\"name\":\"setAddressManager\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"state\",\"outputs\":[{\"components\":[{\"internalType\":\"uint64\",\"name\":\"genesisHeight\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"genesisTimestamp\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"numEthDeposits\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"nextEthDepositToProcess\",\"type\":\"uint64\"}],\"internalType\":\"structTaikoData.SlotA\",\"name\":\"slotA\",\"type\":\"tuple\"},{\"components\":[{\"internalType\":\"uint64\",\"name\":\"numBlocks\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"nextEthDepositToProcess\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"lastVerifiedAt\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"lastVerifiedBlockId\",\"type\":\"uint64\"}],\"internalType\":\"structTaikoData.SlotB\",\"name\":\"slotB\",\"type\":\"tuple\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"newOwner\",\"type\":\"address\"}],\"name\":\"transferOwnership\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"maxBlocks\",\"type\":\"uint64\"}],\"name\":\"verifyBlocks\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"withdrawTaikoToken\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"stateMutability\":\"payable\",\"type\":\"receive\"}]", + ABI: "[{\"inputs\":[],\"name\":\"L1_ALREADY_PROVEN\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"L1_ALREADY_PROVEN\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"L1_BLOCK_ID_MISMATCH\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"L1_BLOCK_ID_MISMATCH\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"L1_BLOCK_ID_MISMATCH\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"L1_EVIDENCE_MISMATCH\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"L1_EVIDENCE_MISMATCH\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"L1_FORK_CHOICE_NOT_FOUND\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"L1_FORK_CHOICE_NOT_FOUND\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"L1_INSUFFICIENT_TOKEN\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"L1_INSUFFICIENT_TOKEN\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"L1_INVALID_ASSIGNMENT\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"L1_INVALID_ASSIGNMENT\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"L1_INVALID_BLOCK_ID\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"L1_INVALID_BLOCK_ID\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"L1_INVALID_BLOCK_ID\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"L1_INVALID_CONFIG\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"L1_INVALID_CONFIG\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"L1_INVALID_ETH_DEPOSIT\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"L1_INVALID_ETH_DEPOSIT\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"L1_INVALID_EVIDENCE\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"L1_INVALID_EVIDENCE\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"L1_INVALID_METADATA\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"L1_INVALID_METADATA\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"L1_INVALID_ORACLE_PROVER\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"L1_INVALID_ORACLE_PROVER\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"L1_INVALID_PARAM\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"L1_INVALID_PROOF\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"L1_INVALID_PROPOSER\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"L1_INVALID_PROPOSER\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"L1_INVALID_PROVER\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"L1_INVALID_PROVER\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"L1_INVALID_PROVER_SIG\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"L1_INVALID_PROVER_SIG\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"L1_NOT_PROVEABLE\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"L1_NOT_PROVEABLE\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"L1_SAME_PROOF\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"L1_SAME_PROOF\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"L1_TOO_MANY_BLOCKS\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"L1_TOO_MANY_BLOCKS\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"L1_TX_LIST\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"L1_TX_LIST\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"L1_TX_LIST_HASH\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"L1_TX_LIST_HASH\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"L1_TX_LIST_NOT_EXIST\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"L1_TX_LIST_NOT_EXIST\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"L1_TX_LIST_RANGE\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"L1_TX_LIST_RANGE\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"L1_UNEXPECTED_FORK_CHOICE_ID\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"L1_UNEXPECTED_FORK_CHOICE_ID\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"RESOLVER_DENIED\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"RESOLVER_INVALID_ADDR\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"chainId\",\"type\":\"uint256\"},{\"internalType\":\"bytes32\",\"name\":\"name\",\"type\":\"bytes32\"}],\"name\":\"RESOLVER_ZERO_ADDR\",\"type\":\"error\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"addressManager\",\"type\":\"address\"}],\"name\":\"AddressManagerChanged\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"blockId\",\"type\":\"uint256\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"prover\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"reward\",\"type\":\"uint256\"},{\"components\":[{\"internalType\":\"uint64\",\"name\":\"id\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"timestamp\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"l1Height\",\"type\":\"uint64\"},{\"internalType\":\"bytes32\",\"name\":\"l1Hash\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"mixHash\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"txListHash\",\"type\":\"bytes32\"},{\"internalType\":\"uint24\",\"name\":\"txListByteStart\",\"type\":\"uint24\"},{\"internalType\":\"uint24\",\"name\":\"txListByteEnd\",\"type\":\"uint24\"},{\"internalType\":\"uint32\",\"name\":\"gasLimit\",\"type\":\"uint32\"},{\"internalType\":\"address\",\"name\":\"beneficiary\",\"type\":\"address\"},{\"components\":[{\"internalType\":\"address\",\"name\":\"recipient\",\"type\":\"address\"},{\"internalType\":\"uint96\",\"name\":\"amount\",\"type\":\"uint96\"},{\"internalType\":\"uint64\",\"name\":\"id\",\"type\":\"uint64\"}],\"internalType\":\"structTaikoData.EthDeposit[]\",\"name\":\"depositsProcessed\",\"type\":\"tuple[]\"}],\"indexed\":false,\"internalType\":\"structTaikoData.BlockMetadata\",\"name\":\"meta\",\"type\":\"tuple\"}],\"name\":\"BlockProposed\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"blockId\",\"type\":\"uint256\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"prover\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"reward\",\"type\":\"uint256\"},{\"components\":[{\"internalType\":\"uint64\",\"name\":\"id\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"timestamp\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"l1Height\",\"type\":\"uint64\"},{\"internalType\":\"bytes32\",\"name\":\"l1Hash\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"mixHash\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"txListHash\",\"type\":\"bytes32\"},{\"internalType\":\"uint24\",\"name\":\"txListByteStart\",\"type\":\"uint24\"},{\"internalType\":\"uint24\",\"name\":\"txListByteEnd\",\"type\":\"uint24\"},{\"internalType\":\"uint32\",\"name\":\"gasLimit\",\"type\":\"uint32\"},{\"internalType\":\"address\",\"name\":\"beneficiary\",\"type\":\"address\"},{\"components\":[{\"internalType\":\"address\",\"name\":\"recipient\",\"type\":\"address\"},{\"internalType\":\"uint96\",\"name\":\"amount\",\"type\":\"uint96\"},{\"internalType\":\"uint64\",\"name\":\"id\",\"type\":\"uint64\"}],\"internalType\":\"structTaikoData.EthDeposit[]\",\"name\":\"depositsProcessed\",\"type\":\"tuple[]\"}],\"indexed\":false,\"internalType\":\"structTaikoData.BlockMetadata\",\"name\":\"meta\",\"type\":\"tuple\"}],\"name\":\"BlockProposed\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"blockId\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"parentHash\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"blockHash\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"signalRoot\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"prover\",\"type\":\"address\"}],\"name\":\"BlockProven\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"blockId\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"parentHash\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"blockHash\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"signalRoot\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"prover\",\"type\":\"address\"}],\"name\":\"BlockProven\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"blockId\",\"type\":\"uint256\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"prover\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"blockHash\",\"type\":\"bytes32\"}],\"name\":\"BlockVerified\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"blockId\",\"type\":\"uint256\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"prover\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"blockHash\",\"type\":\"bytes32\"}],\"name\":\"BlockVerified\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint64\",\"name\":\"srcHeight\",\"type\":\"uint64\"},{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"blockHash\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"signalRoot\",\"type\":\"bytes32\"}],\"name\":\"CrossChainSynced\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint64\",\"name\":\"srcHeight\",\"type\":\"uint64\"},{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"blockHash\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"signalRoot\",\"type\":\"bytes32\"}],\"name\":\"CrossChainSynced\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"components\":[{\"internalType\":\"address\",\"name\":\"recipient\",\"type\":\"address\"},{\"internalType\":\"uint96\",\"name\":\"amount\",\"type\":\"uint96\"},{\"internalType\":\"uint64\",\"name\":\"id\",\"type\":\"uint64\"}],\"indexed\":false,\"internalType\":\"structTaikoData.EthDeposit\",\"name\":\"deposit\",\"type\":\"tuple\"}],\"name\":\"EthDeposited\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"components\":[{\"internalType\":\"address\",\"name\":\"recipient\",\"type\":\"address\"},{\"internalType\":\"uint96\",\"name\":\"amount\",\"type\":\"uint96\"},{\"internalType\":\"uint64\",\"name\":\"id\",\"type\":\"uint64\"}],\"indexed\":false,\"internalType\":\"structTaikoData.EthDeposit\",\"name\":\"deposit\",\"type\":\"tuple\"}],\"name\":\"EthDeposited\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint8\",\"name\":\"version\",\"type\":\"uint8\"}],\"name\":\"Initialized\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"previousOwner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"newOwner\",\"type\":\"address\"}],\"name\":\"OwnershipTransferred\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"addressManager\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"canDepositEthToL2\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"recipient\",\"type\":\"address\"}],\"name\":\"depositEtherToL2\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"depositTaikoToken\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"blockId\",\"type\":\"uint64\"}],\"name\":\"getBlock\",\"outputs\":[{\"components\":[{\"internalType\":\"bytes32\",\"name\":\"metaHash\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"prover\",\"type\":\"address\"},{\"internalType\":\"uint64\",\"name\":\"proposedAt\",\"type\":\"uint64\"},{\"internalType\":\"uint16\",\"name\":\"nextForkChoiceId\",\"type\":\"uint16\"},{\"internalType\":\"uint16\",\"name\":\"verifiedForkChoiceId\",\"type\":\"uint16\"},{\"internalType\":\"uint64\",\"name\":\"blockId\",\"type\":\"uint64\"},{\"internalType\":\"uint96\",\"name\":\"validityBond\",\"type\":\"uint96\"},{\"internalType\":\"uint16\",\"name\":\"proofWindow\",\"type\":\"uint16\"}],\"internalType\":\"structTaikoData.Block\",\"name\":\"blk\",\"type\":\"tuple\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getConfig\",\"outputs\":[{\"components\":[{\"internalType\":\"uint256\",\"name\":\"chainId\",\"type\":\"uint256\"},{\"internalType\":\"bool\",\"name\":\"relaySignalRoot\",\"type\":\"bool\"},{\"internalType\":\"uint64\",\"name\":\"blockMaxProposals\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"blockRingBufferSize\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"blockMaxVerificationsPerTx\",\"type\":\"uint64\"},{\"internalType\":\"uint32\",\"name\":\"blockMaxGasLimit\",\"type\":\"uint32\"},{\"internalType\":\"uint32\",\"name\":\"blockFeeBaseGas\",\"type\":\"uint32\"},{\"internalType\":\"uint24\",\"name\":\"blockMaxTxListBytes\",\"type\":\"uint24\"},{\"internalType\":\"uint256\",\"name\":\"blockTxListExpiry\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"proposerRewardPerSecond\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"proposerRewardMax\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"proofRegularCooldown\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"proofOracleCooldown\",\"type\":\"uint256\"},{\"internalType\":\"uint16\",\"name\":\"proofWindow\",\"type\":\"uint16\"},{\"internalType\":\"uint96\",\"name\":\"validityBond\",\"type\":\"uint96\"},{\"internalType\":\"bool\",\"name\":\"skipProverAssignmentVerificaiton\",\"type\":\"bool\"},{\"internalType\":\"uint256\",\"name\":\"ethDepositRingBufferSize\",\"type\":\"uint256\"},{\"internalType\":\"uint64\",\"name\":\"ethDepositMinCountPerBlock\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"ethDepositMaxCountPerBlock\",\"type\":\"uint64\"},{\"internalType\":\"uint96\",\"name\":\"ethDepositMinAmount\",\"type\":\"uint96\"},{\"internalType\":\"uint96\",\"name\":\"ethDepositMaxAmount\",\"type\":\"uint96\"},{\"internalType\":\"uint256\",\"name\":\"ethDepositGas\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"ethDepositMaxFee\",\"type\":\"uint256\"}],\"internalType\":\"structTaikoData.Config\",\"name\":\"\",\"type\":\"tuple\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"blockId\",\"type\":\"uint64\"}],\"name\":\"getCrossChainBlockHash\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"blockId\",\"type\":\"uint64\"}],\"name\":\"getCrossChainSignalRoot\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"blockId\",\"type\":\"uint64\"},{\"internalType\":\"bytes32\",\"name\":\"parentHash\",\"type\":\"bytes32\"}],\"name\":\"getForkChoice\",\"outputs\":[{\"components\":[{\"internalType\":\"bytes32\",\"name\":\"key\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"blockHash\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"signalRoot\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"prover\",\"type\":\"address\"},{\"internalType\":\"uint64\",\"name\":\"provenAt\",\"type\":\"uint64\"}],\"internalType\":\"structTaikoData.ForkChoice\",\"name\":\"\",\"type\":\"tuple\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getStateVariables\",\"outputs\":[{\"components\":[{\"internalType\":\"uint64\",\"name\":\"genesisHeight\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"genesisTimestamp\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"numBlocks\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"lastVerifiedBlockId\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"nextEthDepositToProcess\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"numEthDeposits\",\"type\":\"uint64\"}],\"internalType\":\"structTaikoData.StateVariables\",\"name\":\"\",\"type\":\"tuple\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"addr\",\"type\":\"address\"}],\"name\":\"getTaikoTokenBalance\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint16\",\"name\":\"id\",\"type\":\"uint16\"}],\"name\":\"getVerifierName\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_addressManager\",\"type\":\"address\"},{\"internalType\":\"bytes32\",\"name\":\"_genesisBlockHash\",\"type\":\"bytes32\"}],\"name\":\"init\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"owner\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"input\",\"type\":\"bytes\"},{\"internalType\":\"bytes\",\"name\":\"assignment\",\"type\":\"bytes\"},{\"internalType\":\"bytes\",\"name\":\"txList\",\"type\":\"bytes\"}],\"name\":\"proposeBlock\",\"outputs\":[{\"components\":[{\"internalType\":\"uint64\",\"name\":\"id\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"timestamp\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"l1Height\",\"type\":\"uint64\"},{\"internalType\":\"bytes32\",\"name\":\"l1Hash\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"mixHash\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"txListHash\",\"type\":\"bytes32\"},{\"internalType\":\"uint24\",\"name\":\"txListByteStart\",\"type\":\"uint24\"},{\"internalType\":\"uint24\",\"name\":\"txListByteEnd\",\"type\":\"uint24\"},{\"internalType\":\"uint32\",\"name\":\"gasLimit\",\"type\":\"uint32\"},{\"internalType\":\"address\",\"name\":\"beneficiary\",\"type\":\"address\"},{\"components\":[{\"internalType\":\"address\",\"name\":\"recipient\",\"type\":\"address\"},{\"internalType\":\"uint96\",\"name\":\"amount\",\"type\":\"uint96\"},{\"internalType\":\"uint64\",\"name\":\"id\",\"type\":\"uint64\"}],\"internalType\":\"structTaikoData.EthDeposit[]\",\"name\":\"depositsProcessed\",\"type\":\"tuple[]\"}],\"internalType\":\"structTaikoData.BlockMetadata\",\"name\":\"meta\",\"type\":\"tuple\"}],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"blockId\",\"type\":\"uint64\"},{\"internalType\":\"bytes\",\"name\":\"input\",\"type\":\"bytes\"}],\"name\":\"proveBlock\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"renounceOwnership\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"chainId\",\"type\":\"uint256\"},{\"internalType\":\"bytes32\",\"name\":\"name\",\"type\":\"bytes32\"},{\"internalType\":\"bool\",\"name\":\"allowZeroAddress\",\"type\":\"bool\"}],\"name\":\"resolve\",\"outputs\":[{\"internalType\":\"addresspayable\",\"name\":\"addr\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"name\",\"type\":\"bytes32\"},{\"internalType\":\"bool\",\"name\":\"allowZeroAddress\",\"type\":\"bool\"}],\"name\":\"resolve\",\"outputs\":[{\"internalType\":\"addresspayable\",\"name\":\"addr\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"newAddressManager\",\"type\":\"address\"}],\"name\":\"setAddressManager\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"state\",\"outputs\":[{\"components\":[{\"internalType\":\"uint64\",\"name\":\"genesisHeight\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"genesisTimestamp\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"numEthDeposits\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"nextEthDepositToProcess\",\"type\":\"uint64\"}],\"internalType\":\"structTaikoData.SlotA\",\"name\":\"slotA\",\"type\":\"tuple\"},{\"components\":[{\"internalType\":\"uint64\",\"name\":\"numBlocks\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"nextEthDepositToProcess\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"lastVerifiedAt\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"lastVerifiedBlockId\",\"type\":\"uint64\"}],\"internalType\":\"structTaikoData.SlotB\",\"name\":\"slotB\",\"type\":\"tuple\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"newOwner\",\"type\":\"address\"}],\"name\":\"transferOwnership\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"maxBlocks\",\"type\":\"uint64\"}],\"name\":\"verifyBlocks\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"withdrawTaikoToken\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"stateMutability\":\"payable\",\"type\":\"receive\"}]", } // TaikoL1ABI is the input ABI used to generate the binding from. diff --git a/packages/website/pages/docs/reference/contract-documentation/L1/TaikoData.md b/packages/website/pages/docs/reference/contract-documentation/L1/TaikoData.md index 65f4aea8b1..7fa7d03d17 100644 --- a/packages/website/pages/docs/reference/contract-documentation/L1/TaikoData.md +++ b/packages/website/pages/docs/reference/contract-documentation/L1/TaikoData.md @@ -27,7 +27,7 @@ struct Config { uint256 proofRegularCooldown; uint256 proofOracleCooldown; uint16 proofWindow; - uint96 proofBond; + uint96 validityBond; bool skipProverAssignmentVerificaiton; uint256 ethDepositRingBufferSize; uint64 ethDepositMinCountPerBlock; @@ -143,7 +143,7 @@ _Struct containing data required for verifying a block. struct Block { bytes32 metaHash; address prover; - uint96 proofBond; + uint96 validityBond; uint64 blockId; uint64 proposedAt; uint32 nextTransitionId; From 7274072b09baf4bd01ef8d50d5b3156ee4864c97 Mon Sep 17 00:00:00 2001 From: Daniel Wang <99078276+dantaik@users.noreply.github.com> Date: Tue, 26 Sep 2023 15:04:09 +0000 Subject: [PATCH 30/87] Update packages/protocol/contracts/L1/libs/LibProposing.sol Co-authored-by: David --- packages/protocol/contracts/L1/libs/LibProposing.sol | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/protocol/contracts/L1/libs/LibProposing.sol b/packages/protocol/contracts/L1/libs/LibProposing.sol index 0378e4b5da..c0e1a941d3 100644 --- a/packages/protocol/contracts/L1/libs/LibProposing.sol +++ b/packages/protocol/contracts/L1/libs/LibProposing.sol @@ -59,7 +59,7 @@ library LibProposing { internal returns (TaikoData.BlockMetadata memory meta) { - // Taiko, as a Rased Rollup, enables permissionless block proposals. However, + // Taiko, as a Based Rollup, enables permissionless block proposals. However, // if the "proposer" address is set to a non-zero value, we ensure that // only that specific address has the authority to propose blocks. address proposer = resolver.resolve("proposer", true); From 90612d20f911c00091b131761d7ca1a92c152c16 Mon Sep 17 00:00:00 2001 From: Daniel Wang <99078276+dantaik@users.noreply.github.com> Date: Wed, 27 Sep 2023 10:26:12 +0800 Subject: [PATCH 31/87] feat(protocol): rename config providers and add ZKRollupConfigProvider (#14829) Co-authored-by: Daniel Wang --- .../contracts/L1/libs/LibProposing.sol | 7 +- ...sol => OptimisticRollupConfigProvider.sol} | 4 +- .../L1/tiers/ValidityRollupConfigProvider.sol | 70 +++++++++++++++++++ ...rovider.sol => ZKRollupConfigProvider.sol} | 4 +- packages/protocol/test/L1/TaikoL1TestBase.sol | 8 +-- 5 files changed, 82 insertions(+), 11 deletions(-) rename packages/protocol/contracts/L1/tiers/{OPL2ConfigProvider.sol => OptimisticRollupConfigProvider.sol} (96%) create mode 100644 packages/protocol/contracts/L1/tiers/ValidityRollupConfigProvider.sol rename packages/protocol/contracts/L1/tiers/{ZKL2ConfigProvider.sol => ZKRollupConfigProvider.sol} (94%) diff --git a/packages/protocol/contracts/L1/libs/LibProposing.sol b/packages/protocol/contracts/L1/libs/LibProposing.sol index c0e1a941d3..1de3049667 100644 --- a/packages/protocol/contracts/L1/libs/LibProposing.sol +++ b/packages/protocol/contracts/L1/libs/LibProposing.sol @@ -59,9 +59,10 @@ library LibProposing { internal returns (TaikoData.BlockMetadata memory meta) { - // Taiko, as a Based Rollup, enables permissionless block proposals. However, - // if the "proposer" address is set to a non-zero value, we ensure that - // only that specific address has the authority to propose blocks. + // Taiko, as a Based Rollup, enables permissionless block proposals. + // However, if the "proposer" address is set to a non-zero value, we + // ensure that only that specific address has the authority to propose + // blocks. address proposer = resolver.resolve("proposer", true); if (proposer != address(0) && msg.sender != proposer) { revert L1_UNAUTHORIZED(); diff --git a/packages/protocol/contracts/L1/tiers/OPL2ConfigProvider.sol b/packages/protocol/contracts/L1/tiers/OptimisticRollupConfigProvider.sol similarity index 96% rename from packages/protocol/contracts/L1/tiers/OPL2ConfigProvider.sol rename to packages/protocol/contracts/L1/tiers/OptimisticRollupConfigProvider.sol index 036f54de5e..20f5b405bb 100644 --- a/packages/protocol/contracts/L1/tiers/OPL2ConfigProvider.sol +++ b/packages/protocol/contracts/L1/tiers/OptimisticRollupConfigProvider.sol @@ -8,8 +8,8 @@ pragma solidity ^0.8.20; import { ITierProvider, LibTiers } from "./ITierProvider.sol"; -/// @title OPL2ConfigProvider -contract OPL2ConfigProvider is ITierProvider { +/// @title OptimisticRollupConfigProvider +contract OptimisticRollupConfigProvider is ITierProvider { error TIER_NOT_FOUND(); function getTier(uint16 tierId) diff --git a/packages/protocol/contracts/L1/tiers/ValidityRollupConfigProvider.sol b/packages/protocol/contracts/L1/tiers/ValidityRollupConfigProvider.sol new file mode 100644 index 0000000000..afd43d05bd --- /dev/null +++ b/packages/protocol/contracts/L1/tiers/ValidityRollupConfigProvider.sol @@ -0,0 +1,70 @@ +// SPDX-License-Identifier: MIT +// _____ _ _ _ _ +// |_ _|_ _(_) |_____ | | __ _| |__ ___ +// | |/ _` | | / / _ \ | |__/ _` | '_ (_-< +// |_|\__,_|_|_\_\___/ |____\__,_|_.__/__/ + +pragma solidity ^0.8.20; + +import { ITierProvider, LibTiers } from "./ITierProvider.sol"; + +/// @title ValidityRollupConfigProvider +contract ValidityRollupConfigProvider is ITierProvider { + error TIER_NOT_FOUND(); + + function getTier(uint16 tierId) + public + pure + override + returns (ITierProvider.Tier memory) + { + if (tierId == LibTiers.TIER_SGX) { + return ITierProvider.Tier({ + verifierName: "tier_sgx", + validityBond: 50_000 ether, // TKO + contestBond: 50_000 ether, // TKO + cooldownWindow: 3 hours, + provingWindow: 60 minutes + }); + } + + if (tierId == LibTiers.TIER_PSE_ZKEVM) { + return ITierProvider.Tier({ + verifierName: "tier_pse_zkevm", + validityBond: 10_000 ether, // TKO + contestBond: 10_000 ether, // TKO + cooldownWindow: 2 hours, + provingWindow: 90 minutes + }); + } + + if (tierId == LibTiers.TIER_GUARDIAN) { + return ITierProvider.Tier({ + verifierName: "tier_guardian", + validityBond: 0, + contestBond: 0, // not contestable + cooldownWindow: 1 hours, + provingWindow: 120 minutes + }); + } + + revert TIER_NOT_FOUND(); + } + + function getTierIds() + public + pure + override + returns (uint16[] memory tiers) + { + tiers = new uint16[](3); + tiers[0] = LibTiers.TIER_SGX; + tiers[1] = LibTiers.TIER_PSE_ZKEVM; + tiers[2] = LibTiers.TIER_GUARDIAN; + } + + function getMinTier(uint256 rand) public pure override returns (uint16) { + if (rand % 100 == 0) return LibTiers.TIER_PSE_ZKEVM; + else return LibTiers.TIER_SGX; + } +} diff --git a/packages/protocol/contracts/L1/tiers/ZKL2ConfigProvider.sol b/packages/protocol/contracts/L1/tiers/ZKRollupConfigProvider.sol similarity index 94% rename from packages/protocol/contracts/L1/tiers/ZKL2ConfigProvider.sol rename to packages/protocol/contracts/L1/tiers/ZKRollupConfigProvider.sol index bdf6a14a6d..0f2ebe59a8 100644 --- a/packages/protocol/contracts/L1/tiers/ZKL2ConfigProvider.sol +++ b/packages/protocol/contracts/L1/tiers/ZKRollupConfigProvider.sol @@ -8,8 +8,8 @@ pragma solidity ^0.8.20; import { ITierProvider, LibTiers } from "./ITierProvider.sol"; -/// @title ZKL2ConfigProvider -contract ZKL2ConfigProvider is ITierProvider { +/// @title ZKRollupConfigProvider +contract ZKRollupConfigProvider is ITierProvider { error TIER_NOT_FOUND(); function getTier(uint16 tierId) diff --git a/packages/protocol/test/L1/TaikoL1TestBase.sol b/packages/protocol/test/L1/TaikoL1TestBase.sol index c3d0d313ef..fa174a0959 100644 --- a/packages/protocol/test/L1/TaikoL1TestBase.sol +++ b/packages/protocol/test/L1/TaikoL1TestBase.sol @@ -12,8 +12,8 @@ import { TaikoL1 } from "../../contracts/L1/TaikoL1.sol"; import { TaikoToken } from "../../contracts/L1/TaikoToken.sol"; import { GuardianVerifier } from "../../contracts/L1/verifiers/GuardianVerifier.sol"; -import { OPL2ConfigProvider } from - "../../contracts/L1/tiers/OPL2ConfigProvider.sol"; +import { OptimisticRollupConfigProvider } from + "../../contracts/L1/tiers/OptimisticRollupConfigProvider.sol"; import { PseZkVerifier } from "../../contracts/L1/verifiers/PseZkVerifier.sol"; import { SignalService } from "../../contracts/signal/SignalService.sol"; import { StringsUpgradeable as Strings } from @@ -36,7 +36,7 @@ abstract contract TaikoL1TestBase is TestBase { uint256 internal logCount; PseZkVerifier public pv; GuardianVerifier public gv; - OPL2ConfigProvider public cp; + OptimisticRollupConfigProvider public cp; bytes32 public constant GENESIS_BLOCK_HASH = keccak256("GENESIS_BLOCK_HASH"); // 1 TKO --> it is to huge. It should be in 'wei' (?). @@ -71,7 +71,7 @@ abstract contract TaikoL1TestBase is TestBase { gv = new GuardianVerifier(); gv.init(address(addressManager)); - cp = new OPL2ConfigProvider(); + cp = new OptimisticRollupConfigProvider(); registerAddress("tier_pse_zkevm", address(pv)); registerAddress("tier_guardian", address(gv)); From bf7262c4b5456cf3d1197774ad27ac8495cecd27 Mon Sep 17 00:00:00 2001 From: Daniel Wang <99078276+dantaik@users.noreply.github.com> Date: Wed, 27 Sep 2023 10:52:52 +0800 Subject: [PATCH 32/87] fix(protocol): fixes based on David's review (#14828) Co-authored-by: Daniel Wang Co-authored-by: adaki2004 --- packages/protocol/contracts/L1/TaikoData.sol | 1 + .../contracts/L1/libs/LibProposing.sol | 45 ++++++++++--------- packages/protocol/contracts/L2/TaikoL2.sol | 4 +- .../test/L1/TaikoL1LibProvingWithTiers.t.sol | 18 ++++++-- packages/protocol/test/L1/TaikoL1TestBase.sol | 8 ++-- 5 files changed, 46 insertions(+), 30 deletions(-) diff --git a/packages/protocol/contracts/L1/TaikoData.sol b/packages/protocol/contracts/L1/TaikoData.sol index c9a88f056e..8eb867738c 100644 --- a/packages/protocol/contracts/L1/TaikoData.sol +++ b/packages/protocol/contracts/L1/TaikoData.sol @@ -98,6 +98,7 @@ library TaikoData { uint64 timestamp; uint64 l1Height; uint32 gasLimit; + address coinbase; // L2 coinbase TaikoData.EthDeposit[] depositsProcessed; } diff --git a/packages/protocol/contracts/L1/libs/LibProposing.sol b/packages/protocol/contracts/L1/libs/LibProposing.sol index 1de3049667..43b3b26ee0 100644 --- a/packages/protocol/contracts/L1/libs/LibProposing.sol +++ b/packages/protocol/contracts/L1/libs/LibProposing.sol @@ -125,27 +125,29 @@ library LibProposing { // the block data to be stored on-chain for future integrity checks. // If we choose to persist all data fields in the metadata, it will // require additional storage slots. - meta.l1Hash = blockhash(meta.l1Height); - - // Following the Merge, the L1 mixHash incorporates the prevrandao - // value from the beacon chain. Given the possibility of multiple - // Taiko blocks being proposed within a single Ethereum block, we - // must introduce a salt to this random number as the L2 mixHash. unchecked { - meta.mixHash = bytes32(block.prevrandao * b.numBlocks); - meta.l1Height = uint64(block.number - 1); + meta = TaikoData.BlockMetadata({ + l1Hash: blockhash(block.number - 1), + // Following the Merge, the L1 mixHash incorporates the + // prevrandao value from the beacon chain. Given the possibility + // of multiple Taiko blocks being proposed within a single + // Ethereum block, we must introduce a salt to this random + // number as the L2 mixHash. + mixHash: bytes32(block.prevrandao * b.numBlocks), + txListHash: txListHash, + id: b.numBlocks, + timestamp: uint64(block.timestamp), + l1Height: uint64(block.number - 1), + gasLimit: config.blockMaxGasLimit, + coinbase: msg.sender, + // Each transaction must handle a specific quantity of L1-to-L2 + // Ether deposits. + depositsProcessed: LibDepositing.processDeposits( + state, config, msg.sender + ) + }); } - meta.txListHash = txListHash; - meta.id = b.numBlocks; - meta.timestamp = uint64(block.timestamp); - meta.gasLimit = config.blockMaxGasLimit; - - // Each transaction must handle a specific quantity of L1-to-L2 - // Ether deposits. - meta.depositsProcessed = - LibDepositing.processDeposits(state, config, msg.sender); - // Now, it's essential to initialize the block that will be stored // on L1. We should aim to utilize as few storage slots as possible, // alghouth using a ring buffer can minimize storage writes once @@ -224,16 +226,17 @@ library LibProposing { pure returns (bytes32 hash) { - uint256[5] memory inputs; + uint256[6] memory inputs; inputs[0] = uint256(meta.l1Hash); inputs[1] = uint256(meta.mixHash); inputs[2] = uint256(meta.txListHash); inputs[3] = (uint256(meta.id)) | (uint256(meta.timestamp) << 64) | (uint256(meta.l1Height) << 128) | (uint256(meta.gasLimit) << 192); - inputs[4] = uint256(keccak256(abi.encode(meta.depositsProcessed))); + inputs[4] = uint256(uint160(meta.coinbase)); + inputs[5] = uint256(keccak256(abi.encode(meta.depositsProcessed))); assembly { - hash := keccak256(inputs, mul(5, 32)) + hash := keccak256(inputs, 192 /*mul(6, 32)*/ ) } } diff --git a/packages/protocol/contracts/L2/TaikoL2.sol b/packages/protocol/contracts/L2/TaikoL2.sol index f5350f4ca5..2980d1ced1 100644 --- a/packages/protocol/contracts/L2/TaikoL2.sol +++ b/packages/protocol/contracts/L2/TaikoL2.sol @@ -279,12 +279,12 @@ contract TaikoL2 is EssentialContract, TaikoL2Signer, ICrossChainSync { inputs[255] = bytes32(block.chainid); assembly { - prevPIH := keccak256(inputs, mul(256, 32)) + prevPIH := keccak256(inputs, 8192 /*mul(256, 32)*/ ) } inputs[blockId % 255] = blockhash(blockId); assembly { - currPIH := keccak256(inputs, mul(256, 32)) + currPIH := keccak256(inputs, 8192 /*mul(256, 32)*/ ) } } diff --git a/packages/protocol/test/L1/TaikoL1LibProvingWithTiers.t.sol b/packages/protocol/test/L1/TaikoL1LibProvingWithTiers.t.sol index 6b26e9ede9..2b2a3dfe77 100644 --- a/packages/protocol/test/L1/TaikoL1LibProvingWithTiers.t.sol +++ b/packages/protocol/test/L1/TaikoL1LibProvingWithTiers.t.sol @@ -178,7 +178,10 @@ contract TaikoL1LibProvingWithTiers is TaikoL1TestBase { } // Otherwise just not contest - vm.warp(block.timestamp + L1.getTier(minTier).cooldownWindow + 1); + vm.warp( + block.timestamp + + L1.getTier(LibTiers.TIER_GUARDIAN).cooldownWindow + 1 + ); // Now can verify verifyBlock(Carol, 1); @@ -255,7 +258,10 @@ contract TaikoL1LibProvingWithTiers is TaikoL1TestBase { } // Otherwise just not contest - vm.warp(block.timestamp + L1.getTier(minTier).cooldownWindow + 1); + vm.warp( + block.timestamp + + L1.getTier(LibTiers.TIER_GUARDIAN).cooldownWindow + 1 + ); // Now can verify verifyBlock(Carol, 1); @@ -310,7 +316,8 @@ contract TaikoL1LibProvingWithTiers is TaikoL1TestBase { vm.roll(block.number + 15 * 12); vm.warp( - block.timestamp + L1.getTier(minTier).cooldownWindow + 1 + block.timestamp + + L1.getTier(LibTiers.TIER_GUARDIAN).cooldownWindow + 1 ); // Cannot verify block because it is contested.. @@ -329,7 +336,10 @@ contract TaikoL1LibProvingWithTiers is TaikoL1TestBase { } // Otherwise just not contest - vm.warp(block.timestamp + L1.getTier(minTier).cooldownWindow + 1); + vm.warp( + block.timestamp + + L1.getTier(LibTiers.TIER_GUARDIAN).cooldownWindow + 1 + ); // Now can verify verifyBlock(Carol, 1); diff --git a/packages/protocol/test/L1/TaikoL1TestBase.sol b/packages/protocol/test/L1/TaikoL1TestBase.sol index fa174a0959..fe96adfbec 100644 --- a/packages/protocol/test/L1/TaikoL1TestBase.sol +++ b/packages/protocol/test/L1/TaikoL1TestBase.sol @@ -119,13 +119,15 @@ abstract contract TaikoL1TestBase is TestBase { internal returns (TaikoData.BlockMetadata memory meta) { - TaikoData.TierFee[] memory tierFees = new TaikoData.TierFee[](2); + TaikoData.TierFee[] memory tierFees = new TaikoData.TierFee[](3); // Register the tier fees - // Based on OPL2ConfigTier we need 2: + // Based on OPL2ConfigTier we need 3: // - LibTiers.TIER_PSE_ZKEVM; // - LibTiers.TIER_OPTIMISTIC; + // - LibTiers.TIER_GUARDIAN; tierFees[0] = TaikoData.TierFee(LibTiers.TIER_OPTIMISTIC, 1 ether); - tierFees[1] = TaikoData.TierFee(LibTiers.TIER_OPTIMISTIC, 2 ether); + tierFees[1] = TaikoData.TierFee(LibTiers.TIER_PSE_ZKEVM, 2 ether); + tierFees[2] = TaikoData.TierFee(LibTiers.TIER_GUARDIAN, 0 ether); // For the test not to fail, set the message.value to the highest, the // rest will be returned // anyways From 8770d6c8bf5f37172162ccbf67ad2591456272ce Mon Sep 17 00:00:00 2001 From: D <51912515+adaki2004@users.noreply.github.com> Date: Wed, 27 Sep 2023 08:18:39 +0200 Subject: [PATCH 33/87] feat(protocol): Guardian can return unprovable bonds (#14830) Co-authored-by: Daniel Wang Co-authored-by: Daniel Wang <99078276+dantaik@users.noreply.github.com> --- .../protocol/contracts/L1/libs/LibProving.sol | 9 + .../L1/verifiers/GuardianVerifier.sol | 2 - packages/protocol/test/L1/TaikoL1.t.sol | 12 +- .../test/L1/TaikoL1LibProvingWithTiers.t.sol | 184 +++++++++++++++--- packages/protocol/test/L1/TaikoL1TestBase.sol | 8 +- 5 files changed, 182 insertions(+), 33 deletions(-) diff --git a/packages/protocol/contracts/L1/libs/LibProving.sol b/packages/protocol/contracts/L1/libs/LibProving.sol index 768f4c3fc2..31f1638430 100644 --- a/packages/protocol/contracts/L1/libs/LibProving.sol +++ b/packages/protocol/contracts/L1/libs/LibProving.sol @@ -219,6 +219,15 @@ library LibProving { revert L1_INVALID_EVIDENCE(); } + if ( + evidence.proof.length == 32 + && bytes32(evidence.proof) == keccak256("RETURN_LIVENESS_BOND") + ) { + LibTaikoToken.creditToken( + state, resolver, blk.assignedProver, blk.livenessBond, false + ); + } + tran.blockHash = evidence.blockHash; tran.signalRoot = evidence.signalRoot; tran.prover = msg.sender; diff --git a/packages/protocol/contracts/L1/verifiers/GuardianVerifier.sol b/packages/protocol/contracts/L1/verifiers/GuardianVerifier.sol index 5bb1527b78..b783017694 100644 --- a/packages/protocol/contracts/L1/verifiers/GuardianVerifier.sol +++ b/packages/protocol/contracts/L1/verifiers/GuardianVerifier.sol @@ -18,7 +18,6 @@ contract GuardianVerifier is EssentialContract, IVerifier { uint256[50] private __gap; error PERMISSION_DENIED(); - error INVALID_PROOF(); /// @notice Initializes the contract with the provided address manager. /// @param _addressManager The address of the address manager contract. @@ -38,7 +37,6 @@ contract GuardianVerifier is EssentialContract, IVerifier { external view { - if (evidence.proof.length != 0) revert INVALID_PROOF(); if (prover != resolve("guardian", false)) revert PERMISSION_DENIED(); } } diff --git a/packages/protocol/test/L1/TaikoL1.t.sol b/packages/protocol/test/L1/TaikoL1.t.sol index d52953000d..d5930a8a79 100644 --- a/packages/protocol/test/L1/TaikoL1.t.sol +++ b/packages/protocol/test/L1/TaikoL1.t.sol @@ -79,7 +79,8 @@ contract TaikoL1Test is TaikoL1TestBase { blockHash, signalRoot, L1.getBlock(meta.id).minTier, - "" + "", + false ); vm.roll(block.number + 15 * 12); @@ -122,7 +123,8 @@ contract TaikoL1Test is TaikoL1TestBase { blockHash, signalRoot, L1.getBlock(meta.id).minTier, - "" + "", + false ); vm.roll(block.number + 15 * 12); uint16 minTier = L1.getBlock(meta.id).minTier; @@ -164,7 +166,8 @@ contract TaikoL1Test is TaikoL1TestBase { blockHash, signalRoot, L1.getBlock(meta.id).minTier, - "" + "", + false ); parentHash = blockHash; } @@ -281,7 +284,8 @@ contract TaikoL1Test is TaikoL1TestBase { blockHash, signalRoot, L1.getBlock(meta.id).minTier, - "" + "", + false ); vm.roll(block.number + 15 * 12); diff --git a/packages/protocol/test/L1/TaikoL1LibProvingWithTiers.t.sol b/packages/protocol/test/L1/TaikoL1LibProvingWithTiers.t.sol index 2b2a3dfe77..ea92d9253a 100644 --- a/packages/protocol/test/L1/TaikoL1LibProvingWithTiers.t.sol +++ b/packages/protocol/test/L1/TaikoL1LibProvingWithTiers.t.sol @@ -84,7 +84,8 @@ contract TaikoL1LibProvingWithTiers is TaikoL1TestBase { blockHash, signalRoot, L1.getBlock(meta.id).minTier, - "" + "", + false ); // Try to contest - but should revert with L1_ALREADY_PROVED @@ -96,7 +97,8 @@ contract TaikoL1LibProvingWithTiers is TaikoL1TestBase { blockHash, signalRoot, L1.getBlock(meta.id).minTier, - TaikoErrors.L1_ALREADY_PROVED.selector + TaikoErrors.L1_ALREADY_PROVED.selector, + false ); vm.roll(block.number + 15 * 12); @@ -140,7 +142,15 @@ contract TaikoL1LibProvingWithTiers is TaikoL1TestBase { // signalRoot instead of blockHash uint16 minTier = L1.getBlock(meta.id).minTier; proveBlock( - Bob, Bob, meta, parentHash, signalRoot, signalRoot, minTier, "" + Bob, + Bob, + meta, + parentHash, + signalRoot, + signalRoot, + minTier, + "", + false ); if (minTier == LibTiers.TIER_OPTIMISTIC) { @@ -153,7 +163,8 @@ contract TaikoL1LibProvingWithTiers is TaikoL1TestBase { blockHash, signalRoot, minTier, - "" + "", + false ); vm.roll(block.number + 15 * 12); @@ -173,7 +184,8 @@ contract TaikoL1LibProvingWithTiers is TaikoL1TestBase { blockHash, signalRoot, LibTiers.TIER_PSE_ZKEVM, - "" + "", + false ); } @@ -220,7 +232,15 @@ contract TaikoL1LibProvingWithTiers is TaikoL1TestBase { uint16 minTier = L1.getBlock(meta.id).minTier; proveBlock( - Bob, Bob, meta, parentHash, blockHash, signalRoot, minTier, "" + Bob, + Bob, + meta, + parentHash, + blockHash, + signalRoot, + minTier, + "", + false ); if (minTier == LibTiers.TIER_OPTIMISTIC) { @@ -233,7 +253,8 @@ contract TaikoL1LibProvingWithTiers is TaikoL1TestBase { signalRoot, signalRoot, minTier, - "" + "", + false ); vm.roll(block.number + 15 * 12); @@ -253,7 +274,8 @@ contract TaikoL1LibProvingWithTiers is TaikoL1TestBase { blockHash, signalRoot, LibTiers.TIER_PSE_ZKEVM, - "" + "", + false ); } @@ -297,7 +319,15 @@ contract TaikoL1LibProvingWithTiers is TaikoL1TestBase { // signalRoot instead of blockHash uint16 minTier = L1.getBlock(meta.id).minTier; proveBlock( - Bob, Bob, meta, parentHash, signalRoot, signalRoot, minTier, "" + Bob, + Bob, + meta, + parentHash, + signalRoot, + signalRoot, + minTier, + "", + false ); if (minTier == LibTiers.TIER_OPTIMISTIC) { @@ -310,7 +340,8 @@ contract TaikoL1LibProvingWithTiers is TaikoL1TestBase { blockHash, signalRoot, minTier, - "" + "", + false ); vm.roll(block.number + 15 * 12); @@ -331,7 +362,8 @@ contract TaikoL1LibProvingWithTiers is TaikoL1TestBase { 0, signalRoot, LibTiers.TIER_PSE_ZKEVM, - TaikoErrors.L1_INVALID_EVIDENCE.selector + TaikoErrors.L1_INVALID_EVIDENCE.selector, + false ); } @@ -381,7 +413,8 @@ contract TaikoL1LibProvingWithTiers is TaikoL1TestBase { blockHash, signalRoot, L1.getBlock(meta.id).minTier, - TaikoErrors.L1_NOT_ASSIGNED_PROVER.selector + TaikoErrors.L1_NOT_ASSIGNED_PROVER.selector, + false ); vm.roll(block.number + 15 * 12); @@ -431,7 +464,8 @@ contract TaikoL1LibProvingWithTiers is TaikoL1TestBase { blockHash, signalRoot, L1.getBlock(meta.id).minTier, - TaikoErrors.L1_ASSIGNED_PROVER_NOT_ALLOWED.selector + TaikoErrors.L1_ASSIGNED_PROVER_NOT_ALLOWED.selector, + false ); verifyBlock(Carol, 1); @@ -477,7 +511,8 @@ contract TaikoL1LibProvingWithTiers is TaikoL1TestBase { blockHash, signalRoot, L1.getBlock(meta.id).minTier, - "" + "", + false ); // Try to contest - but should revert with L1_ALREADY_PROVED @@ -489,7 +524,8 @@ contract TaikoL1LibProvingWithTiers is TaikoL1TestBase { blockHash, signalRoot, LibTiers.TIER_GUARDIAN, - TaikoErrors.L1_ALREADY_PROVED.selector + TaikoErrors.L1_ALREADY_PROVED.selector, + false ); vm.roll(block.number + 15 * 12); @@ -541,7 +577,8 @@ contract TaikoL1LibProvingWithTiers is TaikoL1TestBase { blockHash, signalRoot, L1.getBlock(meta.id).minTier, - "" + "", + false ); // Try to contest - but should revert with L1_ALREADY_PROVED @@ -553,7 +590,8 @@ contract TaikoL1LibProvingWithTiers is TaikoL1TestBase { 0, signalRoot, LibTiers.TIER_GUARDIAN, - TaikoErrors.L1_INVALID_EVIDENCE.selector + TaikoErrors.L1_INVALID_EVIDENCE.selector, + false ); vm.roll(block.number + 15 * 12); @@ -605,7 +643,8 @@ contract TaikoL1LibProvingWithTiers is TaikoL1TestBase { signalRoot, signalRoot, L1.getBlock(meta.id).minTier, - "" + "", + false ); // Prove as guardian @@ -617,7 +656,8 @@ contract TaikoL1LibProvingWithTiers is TaikoL1TestBase { blockHash, signalRoot, LibTiers.TIER_GUARDIAN, - "" + "", + false ); vm.roll(block.number + 15 * 12); @@ -667,7 +707,8 @@ contract TaikoL1LibProvingWithTiers is TaikoL1TestBase { signalRoot, signalRoot, L1.getBlock(meta.id).minTier, - "" + "", + false ); // Prove as guardian but in reality not a guardian @@ -679,7 +720,8 @@ contract TaikoL1LibProvingWithTiers is TaikoL1TestBase { blockHash, signalRoot, LibTiers.TIER_GUARDIAN, - GuardianVerifier.PERMISSION_DENIED.selector + GuardianVerifier.PERMISSION_DENIED.selector, + false ); vm.roll(block.number + 15 * 12); @@ -729,7 +771,8 @@ contract TaikoL1LibProvingWithTiers is TaikoL1TestBase { blockHash, signalRoot, LibTiers.TIER_PSE_ZKEVM, - TaikoErrors.L1_INVALID_BLOCK_ID.selector + TaikoErrors.L1_INVALID_BLOCK_ID.selector, + false ); parentHash = blockHash; @@ -773,7 +816,8 @@ contract TaikoL1LibProvingWithTiers is TaikoL1TestBase { blockHash, signalRoot, LibTiers.TIER_PSE_ZKEVM, - TaikoErrors.L1_BLOCK_MISMATCH.selector + TaikoErrors.L1_BLOCK_MISMATCH.selector, + false ); parentHash = blockHash; @@ -818,7 +862,8 @@ contract TaikoL1LibProvingWithTiers is TaikoL1TestBase { signalRoot, signalRoot, L1.getBlock(meta.id).minTier, - "" + "", + false ); // Prove as guardian @@ -830,7 +875,8 @@ contract TaikoL1LibProvingWithTiers is TaikoL1TestBase { blockHash, signalRoot, LibTiers.TIER_GUARDIAN, - "" + "", + false ); // Try to re-prove but reverts @@ -842,9 +888,95 @@ contract TaikoL1LibProvingWithTiers is TaikoL1TestBase { signalRoot, signalRoot, LibTiers.TIER_PSE_ZKEVM, - TaikoErrors.L1_INVALID_TIER.selector + TaikoErrors.L1_INVALID_TIER.selector, + false + ); + + vm.roll(block.number + 15 * 12); + + uint16 minTier = L1.getBlock(meta.id).minTier; + vm.warp(block.timestamp + L1.getTier(minTier).cooldownWindow + 1); + + verifyBlock(Carol, 1); + + parentHash = blockHash; + } + printVariables(""); + } + + function test_L1_GuardianCanReturnBondIfBlockUnprovable() external { + registerAddress("guardian", Carol); + + giveEthAndTko(Alice, 1e7 ether, 1000 ether); + giveEthAndTko(Carol, 1e7 ether, 1000 ether); + console2.log("Alice balance:", tko.balanceOf(Alice)); + // This is a very weird test (code?) issue here. + // If this line is uncommented, + // Alice/Bob has no balance.. (Causing reverts !!!) + // Current investigations are onsgoing with foundry team + giveEthAndTko(Bob, 1e7 ether, 100 ether); + console2.log("Bob balance:", tko.balanceOf(Bob)); + // Bob + vm.prank(Bob, Bob); + + bytes32 parentHash = GENESIS_BLOCK_HASH; + for ( + uint256 blockId = 1; blockId < conf.blockMaxProposals * 3; blockId++ + ) { + printVariables("before propose"); + TaikoData.BlockMetadata memory meta = + proposeBlock(Alice, Bob, 1_000_000, 1024); + //printVariables("after propose"); + mine(1); + + bytes32 blockHash = bytes32(1e10 + blockId); + bytes32 signalRoot = bytes32(1e9 + blockId); + // This proof cannot be verified obviously because of blockhash is + // exchanged with signalRoot + proveBlock( + Bob, + Bob, + meta, + parentHash, + signalRoot, + signalRoot, + L1.getBlock(meta.id).minTier, + "", + false ); + // Let's say the 10th block is unprovable + if (blockId == 10) { + // Prove as guardian + proveBlock( + Carol, + Carol, + meta, + parentHash, + blockHash, + signalRoot, + LibTiers.TIER_GUARDIAN, + "", + true + ); + + // Credited back the bond (not transferred to the user wallet, + // but in-contract account credited only.) + assertEq(L1.getTaikoTokenBalance(Bob), 1 ether); + } else { + // Prove as guardian + proveBlock( + Carol, + Carol, + meta, + parentHash, + blockHash, + signalRoot, + LibTiers.TIER_GUARDIAN, + "", + false + ); + } vm.roll(block.number + 15 * 12); uint16 minTier = L1.getBlock(meta.id).minTier; diff --git a/packages/protocol/test/L1/TaikoL1TestBase.sol b/packages/protocol/test/L1/TaikoL1TestBase.sol index fe96adfbec..cb116410fd 100644 --- a/packages/protocol/test/L1/TaikoL1TestBase.sol +++ b/packages/protocol/test/L1/TaikoL1TestBase.sol @@ -175,7 +175,8 @@ abstract contract TaikoL1TestBase is TestBase { bytes32 blockHash, bytes32 signalRoot, uint16 tier, - bytes4 revertReason + bytes4 revertReason, + bool unprovable ) internal { @@ -203,6 +204,11 @@ abstract contract TaikoL1TestBase is TestBase { if (tier == LibTiers.TIER_GUARDIAN) { evidence.proof = ""; + + if (unprovable) { + evidence.proof = + bytes.concat(bytes32(keccak256("RETURN_LIVENESS_BOND"))); + } } if (revertReason != "") { From 67f4edf77c3970e033af66dbb7eafed34b0e5abc Mon Sep 17 00:00:00 2001 From: Daniel Wang Date: Wed, 27 Sep 2023 14:28:05 +0800 Subject: [PATCH 34/87] Update GuardianVerifier.sol --- packages/protocol/contracts/L1/verifiers/GuardianVerifier.sol | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/packages/protocol/contracts/L1/verifiers/GuardianVerifier.sol b/packages/protocol/contracts/L1/verifiers/GuardianVerifier.sol index b783017694..54f15a16f3 100644 --- a/packages/protocol/contracts/L1/verifiers/GuardianVerifier.sol +++ b/packages/protocol/contracts/L1/verifiers/GuardianVerifier.sol @@ -27,12 +27,10 @@ contract GuardianVerifier is EssentialContract, IVerifier { /// @inheritdoc IVerifier function verifyProof( - // blockId is unused now, but can be used later when supporting - // different types of proofs. uint64, address prover, bool, - TaikoData.BlockEvidence calldata evidence + TaikoData.BlockEvidence calldata ) external view From 5a2aa133f37049dd2c81ed2b948bb3c3911e338f Mon Sep 17 00:00:00 2001 From: David Date: Wed, 27 Sep 2023 22:03:59 +0800 Subject: [PATCH 35/87] feat(protocol): update `DeployOnL1` script based on Contestable zkRollup changes (#14835) --- packages/protocol/script/DeployOnL1.s.sol | 84 ++++++++++++++++++- packages/protocol/script/test_deploy_on_l1.sh | 12 +-- 2 files changed, 86 insertions(+), 10 deletions(-) diff --git a/packages/protocol/script/DeployOnL1.s.sol b/packages/protocol/script/DeployOnL1.s.sol index 3985575b4f..65a5b545c0 100644 --- a/packages/protocol/script/DeployOnL1.s.sol +++ b/packages/protocol/script/DeployOnL1.s.sol @@ -9,9 +9,16 @@ pragma solidity ^0.8.20; import "forge-std/Script.sol"; import "forge-std/console2.sol"; import "@oz/proxy/transparent/TransparentUpgradeableProxy.sol"; +import "@oz/utils/Strings.sol"; import "../contracts/L1/TaikoToken.sol"; import "../contracts/L1/TaikoL1.sol"; import "../contracts/L1/verifiers/PseZkVerifier.sol"; +import "../contracts/L1/verifiers/SGXVerifier.sol"; +import "../contracts/L1/verifiers/GuardianVerifier.sol"; +import "../contracts/L1/tiers/ITierProvider.sol"; +import "../contracts/L1/tiers/OptimisticRollupConfigProvider.sol"; +import "../contracts/L1/tiers/ValidityRollupConfigProvider.sol"; +import "../contracts/L1/tiers/ZKRollupConfigProvider.sol"; import "../contracts/bridge/Bridge.sol"; import "../contracts/tokenvault/ERC20Vault.sol"; import "../contracts/tokenvault/ERC1155Vault.sol"; @@ -35,10 +42,14 @@ contract DeployOnL1 is Script { address public owner = vm.envAddress("OWNER"); - address public oracleProver = vm.envAddress("PLACEHOLDER_ADDR"); + address public guardianProver = vm.envAddress("GUARDIAN_PROVER"); + + address public proposer = vm.envAddress("PROPOSER"); address public sharedSignalService = vm.envAddress("SHARED_SIGNAL_SERVICE"); + uint256 public tierProvider = vm.envUint("TIER_PROVIDER"); + address[] public taikoTokenPremintRecipients = vm.envAddress("TAIKO_TOKEN_PREMINT_RECIPIENTS", ","); @@ -48,6 +59,12 @@ contract DeployOnL1 is Script { TaikoL1 taikoL1; address public addressManagerProxy; + enum tierProviders { + OptimisticRollupConfigProvider, + ValidityRollupConfigProvider, + ZKRollupConfigProvider + } + error FAILED_TO_DEPLOY_PLONK_VERIFIER(string contractPath); function run() external { @@ -58,12 +75,12 @@ contract DeployOnL1 is Script { taikoTokenPremintRecipients.length != 0, "taikoTokenPremintRecipients length is zero" ); - require( taikoTokenPremintRecipients.length == taikoTokenPremintAmounts.length, "taikoTokenPremintRecipients and taikoTokenPremintAmounts must be same length" ); + require(validateTierProvider(tierProvider), "invalid tier provider"); vm.startBroadcast(deployerPrivateKey); @@ -82,7 +99,10 @@ contract DeployOnL1 is Script { setAddress(l2ChainId, "taiko", taikoL2Address); setAddress(l2ChainId, "signal_service", l2SignalService); - setAddress("oracle_prover", oracleProver); + setAddress("guardian", guardianProver); + if (proposer != address(0)) { + setAddress("proposer", proposer); + } // TaikoToken TaikoToken taikoToken = new ProxiedTaikoToken(); @@ -159,10 +179,33 @@ contract DeployOnL1 is Script { ) ); + // TierProvider + deployProxy("tier_provider", deployTierProvider(tierProvider), ""); + + // GuardianVerifier + GuardianVerifier guardianVerifier = new ProxiedGuardianVerifier(); + deployProxy( + "tier_guardian", + address(guardianVerifier), + bytes.concat( + guardianVerifier.init.selector, abi.encode(addressManagerProxy) + ) + ); + + // SGXVerifier + SGXVerifier sgxVerifier = new ProxiedSGXVerifier(); + deployProxy( + "tier_sgx", + address(sgxVerifier), + bytes.concat( + sgxVerifier.init.selector, abi.encode(addressManagerProxy) + ) + ); + // PseZkVerifier PseZkVerifier proofVerifier = new ProxiedPseZkVerifier(); deployProxy( - "proof_verifier", + "tier_pse_zkevm", address(proofVerifier), bytes.concat( proofVerifier.init.selector, abi.encode(addressManagerProxy) @@ -189,6 +232,22 @@ contract DeployOnL1 is Script { vm.stopBroadcast(); } + function validateTierProvider(uint256 provier) + private + pure + returns (bool) + { + if ( + provier == uint256(tierProviders.OptimisticRollupConfigProvider) + || provier == uint256(tierProviders.ValidityRollupConfigProvider) + || provier == uint256(tierProviders.ZKRollupConfigProvider) + ) { + return true; + } + + return false; + } + function deployYulContract(string memory contractPath) private returns (address) @@ -219,6 +278,23 @@ contract DeployOnL1 is Script { return deployedAddress; } + function deployTierProvider(uint256 provier) + private + returns (address providerAddress) + { + if (provier == uint256(tierProviders.OptimisticRollupConfigProvider)) { + return address(new OptimisticRollupConfigProvider()); + } else if ( + provier == uint256(tierProviders.ValidityRollupConfigProvider) + ) { + return address(new ValidityRollupConfigProvider()); + } else if (provier == uint256(tierProviders.ZKRollupConfigProvider)) { + return address(new ZKRollupConfigProvider()); + } + + revert(); + } + function deployProxy( string memory name, address implementation, diff --git a/packages/protocol/script/test_deploy_on_l1.sh b/packages/protocol/script/test_deploy_on_l1.sh index 7a1c1446ee..dfcd5ecc16 100755 --- a/packages/protocol/script/test_deploy_on_l1.sh +++ b/packages/protocol/script/test_deploy_on_l1.sh @@ -3,16 +3,16 @@ # This script is only used by `pnpm deploy:foundry`. set -e -PRIVATE_KEY=ac0974bec39a17e36ba4a6b4d238ff944bacb478cbed5efcae784d7bf4f2ff80 \ +PRIVATE_KEY=0xac0974bec39a17e36ba4a6b4d238ff944bacb478cbed5efcae784d7bf4f2ff80 \ SHARED_SIGNAL_SERVICE=0x0000000000000000000000000000000000000000 \ -ORACLE_PROVER=0xa0Ee7A142d267C1f36714E4a8F75612F20a79720 \ -SYSTEM_PROVER=0xa0Ee7A142d267C1f36714E4a8F75612F20a79720 \ +PROPOSER=0x0000000000000000000000000000000000000000 \ +GUARDIAN_PROVER=0xa0Ee7A142d267C1f36714E4a8F75612F20a79720 \ OWNER=0x70997970C51812dc3A010C7d01b50e0d17dc79C8 \ -TAIKO_L2_ADDRESS=0x0000777700000000000000000000000000000001 \ -L2_SIGNAL_SERVICE=0x0000777700000000000000000000000000000007 \ +TAIKO_L2_ADDRESS=0x1000777700000000000000000000000000000001 \ +L2_SIGNAL_SERVICE=0x1000777700000000000000000000000000000007 \ TAIKO_TOKEN_PREMINT_RECIPIENTS=0xa0Ee7A142d267C1f36714E4a8F75612F20a79720 \ TAIKO_TOKEN_PREMINT_AMOUNTS=0xffff \ -TREASURY=0xa0Ee7A142d267C1f36714E4a8F75612F20a79720 \ +TIER_PROVIDER=0x1 \ L2_GENESIS_HASH=0xee1950562d42f0da28bd4550d88886bc90894c77c9c9eaefef775d4c8223f259 \ forge script script/DeployOnL1.s.sol:DeployOnL1 \ --fork-url http://localhost:8545 \ From 29bfd962f9699f4c7836beb1845644a03fb1e484 Mon Sep 17 00:00:00 2001 From: Daniel Wang <99078276+dantaik@users.noreply.github.com> Date: Thu, 28 Sep 2023 14:52:28 +0800 Subject: [PATCH 36/87] feat(protocol): add extraData to proposed block (#14846) --- packages/protocol/contracts/L1/TaikoData.sol | 5 ++++- packages/protocol/contracts/L1/TaikoL1.sol | 2 ++ .../protocol/contracts/L1/libs/LibProposing.sol | 17 ++++++++++------- packages/protocol/test/L1/TaikoL1TestBase.sol | 8 ++++---- 4 files changed, 20 insertions(+), 12 deletions(-) diff --git a/packages/protocol/contracts/L1/TaikoData.sol b/packages/protocol/contracts/L1/TaikoData.sol index 8eb867738c..876d82ad7d 100644 --- a/packages/protocol/contracts/L1/TaikoData.sol +++ b/packages/protocol/contracts/L1/TaikoData.sol @@ -92,8 +92,11 @@ library TaikoData { /// {LibProposing.hashMetadata} accordingly. struct BlockMetadata { bytes32 l1Hash; - bytes32 mixHash; + // On L2, `block.difficulty` is the pseudo name of `block.prevrandao`, + // which returns a random number provided by the layer 1 chain. + bytes32 difficulty; bytes32 txListHash; + bytes32 extraData; uint64 id; uint64 timestamp; uint64 l1Height; diff --git a/packages/protocol/contracts/L1/TaikoL1.sol b/packages/protocol/contracts/L1/TaikoL1.sol index 15a9253453..90959f7044 100644 --- a/packages/protocol/contracts/L1/TaikoL1.sol +++ b/packages/protocol/contracts/L1/TaikoL1.sol @@ -73,6 +73,7 @@ contract TaikoL1 is /// @return meta The metadata of the proposed L2 block. function proposeBlock( bytes32 txListHash, + bytes32 extraData, bytes calldata assignment, bytes calldata txList ) @@ -87,6 +88,7 @@ contract TaikoL1 is config: config, resolver: AddressResolver(this), txListHash: txListHash, + extraData: extraData, assignment: abi.decode(assignment, (TaikoData.ProverAssignment)), txList: txList }); diff --git a/packages/protocol/contracts/L1/libs/LibProposing.sol b/packages/protocol/contracts/L1/libs/LibProposing.sol index 43b3b26ee0..20a54cbf35 100644 --- a/packages/protocol/contracts/L1/libs/LibProposing.sol +++ b/packages/protocol/contracts/L1/libs/LibProposing.sol @@ -53,6 +53,7 @@ library LibProposing { TaikoData.Config memory config, AddressResolver resolver, bytes32 txListHash, + bytes32 extraData, TaikoData.ProverAssignment memory assignment, bytes calldata txList ) @@ -133,8 +134,9 @@ library LibProposing { // of multiple Taiko blocks being proposed within a single // Ethereum block, we must introduce a salt to this random // number as the L2 mixHash. - mixHash: bytes32(block.prevrandao * b.numBlocks), + difficulty: bytes32(block.prevrandao * b.numBlocks), txListHash: txListHash, + extraData: extraData, id: b.numBlocks, timestamp: uint64(block.timestamp), l1Height: uint64(block.number - 1), @@ -226,17 +228,18 @@ library LibProposing { pure returns (bytes32 hash) { - uint256[6] memory inputs; + uint256[7] memory inputs; inputs[0] = uint256(meta.l1Hash); - inputs[1] = uint256(meta.mixHash); + inputs[1] = uint256(meta.difficulty); inputs[2] = uint256(meta.txListHash); - inputs[3] = (uint256(meta.id)) | (uint256(meta.timestamp) << 64) + inputs[3] = uint256(meta.extraData); + inputs[4] = (uint256(meta.id)) | (uint256(meta.timestamp) << 64) | (uint256(meta.l1Height) << 128) | (uint256(meta.gasLimit) << 192); - inputs[4] = uint256(uint160(meta.coinbase)); - inputs[5] = uint256(keccak256(abi.encode(meta.depositsProcessed))); + inputs[5] = uint256(uint160(meta.coinbase)); + inputs[6] = uint256(keccak256(abi.encode(meta.depositsProcessed))); assembly { - hash := keccak256(inputs, 192 /*mul(6, 32)*/ ) + hash := keccak256(inputs, 224 /*mul(7, 32)*/ ) } } diff --git a/packages/protocol/test/L1/TaikoL1TestBase.sol b/packages/protocol/test/L1/TaikoL1TestBase.sol index cb116410fd..1886a8d523 100644 --- a/packages/protocol/test/L1/TaikoL1TestBase.sol +++ b/packages/protocol/test/L1/TaikoL1TestBase.sol @@ -149,21 +149,21 @@ abstract contract TaikoL1TestBase is TestBase { TaikoData.StateVariables memory variables = L1.getStateVariables(); - uint256 _mixHash; + uint256 _difficulty; unchecked { - _mixHash = block.prevrandao * variables.numBlocks; + _difficulty = block.prevrandao * variables.numBlocks; } meta.timestamp = uint64(block.timestamp); meta.l1Height = uint64(block.number - 1); meta.l1Hash = blockhash(block.number - 1); - meta.mixHash = bytes32(_mixHash); + meta.difficulty = bytes32(_difficulty); meta.txListHash = keccak256(txList); meta.gasLimit = gasLimit; vm.prank(proposer, proposer); meta = L1.proposeBlock{ value: msgValue }( - meta.txListHash, abi.encode(assignment), txList + meta.txListHash, bytes32(0), abi.encode(assignment), txList ); } From be0fe1cfa4f8f97f8abdec2a9d350c2c5224ac68 Mon Sep 17 00:00:00 2001 From: David Date: Sat, 30 Sep 2023 13:24:24 +0800 Subject: [PATCH 37/87] feat(protocol): add `minTier` to `BlockProposed` event (#14859) --- packages/protocol/contracts/L1/TaikoEvents.sol | 1 + packages/protocol/contracts/L1/libs/LibProposing.sol | 2 ++ 2 files changed, 3 insertions(+) diff --git a/packages/protocol/contracts/L1/TaikoEvents.sol b/packages/protocol/contracts/L1/TaikoEvents.sol index c4a0ceb575..b9ec269f2e 100644 --- a/packages/protocol/contracts/L1/TaikoEvents.sol +++ b/packages/protocol/contracts/L1/TaikoEvents.sol @@ -29,6 +29,7 @@ abstract contract TaikoEvents { uint96 livenessBond, uint256 proverFee, uint256 reward, + uint16 minTier, TaikoData.BlockMetadata meta ); diff --git a/packages/protocol/contracts/L1/libs/LibProposing.sol b/packages/protocol/contracts/L1/libs/LibProposing.sol index 20a54cbf35..a1e2bd9487 100644 --- a/packages/protocol/contracts/L1/libs/LibProposing.sol +++ b/packages/protocol/contracts/L1/libs/LibProposing.sol @@ -31,6 +31,7 @@ library LibProposing { uint96 livenessBond, uint256 proverFee, uint256 reward, + uint16 minTier, TaikoData.BlockMetadata meta ); @@ -218,6 +219,7 @@ library LibProposing { livenessBond: config.livenessBond, proverFee: proverFee, reward: reward, + minTier: blk.minTier, meta: meta }); } From ea737d342c446bab7f4e3c261199bcd7f098ba5c Mon Sep 17 00:00:00 2001 From: David Date: Sun, 1 Oct 2023 12:34:10 +0800 Subject: [PATCH 38/87] feat(protocol): add a missing slot value in pre-deployed `TaikoL2` generation (#14871) --- packages/protocol/utils/generate_genesis/taikoL2.ts | 2 ++ 1 file changed, 2 insertions(+) diff --git a/packages/protocol/utils/generate_genesis/taikoL2.ts b/packages/protocol/utils/generate_genesis/taikoL2.ts index 94ba5efa52..8e87f8188e 100644 --- a/packages/protocol/utils/generate_genesis/taikoL2.ts +++ b/packages/protocol/utils/generate_genesis/taikoL2.ts @@ -339,6 +339,8 @@ async function generateContractConfigs( contractArtifacts.TaikoL2Proxy.deployedBytecode.object, variables: { // TaikoL2 + // OwnableUpgradeable + _owner: contractOwner, // keccak256(abi.encodePacked(block.chainid, basefee, ancestors)) publicInputHash: `${ethers.utils.solidityKeccak256( ["bytes32[256]"], From 781464f3908a785fa286c47ec69dce85c224143b Mon Sep 17 00:00:00 2001 From: Daniel Wang <99078276+dantaik@users.noreply.github.com> Date: Tue, 3 Oct 2023 21:53:52 +0800 Subject: [PATCH 39/87] refactor(protocol): reimplement curve(amm)-based 1559 for L2a (#14885) Co-authored-by: Daniel Wang --- .../protocol/contracts/L2/Lib1559Math.sol | 51 ++++ packages/protocol/contracts/L2/TaikoL2.sol | 268 +++++++----------- .../protocol/contracts/L2/eip1559_util.py | 135 +++++++++ .../protocol/contracts/libs/Lib1559Math.sol | 98 ------- .../thirdparty/LibFixedPointMath.sol | 2 +- packages/protocol/test/L2/Lib1559Math.t.sol | 46 +++ packages/protocol/test/L2/TaikoL2.t.sol | 118 +------- packages/protocol/test/L2/TaikoL2_1559.t.sol | 62 ---- packages/protocol/test/libs/Lib1559Math.t.sol | 85 ------ 9 files changed, 340 insertions(+), 525 deletions(-) create mode 100644 packages/protocol/contracts/L2/Lib1559Math.sol create mode 100644 packages/protocol/contracts/L2/eip1559_util.py delete mode 100644 packages/protocol/contracts/libs/Lib1559Math.sol create mode 100644 packages/protocol/test/L2/Lib1559Math.t.sol delete mode 100644 packages/protocol/test/L2/TaikoL2_1559.t.sol delete mode 100644 packages/protocol/test/libs/Lib1559Math.t.sol diff --git a/packages/protocol/contracts/L2/Lib1559Math.sol b/packages/protocol/contracts/L2/Lib1559Math.sol new file mode 100644 index 0000000000..db485843a8 --- /dev/null +++ b/packages/protocol/contracts/L2/Lib1559Math.sol @@ -0,0 +1,51 @@ +// SPDX-License-Identifier: MIT +// _____ _ _ _ _ +// |_ _|_ _(_) |_____ | | __ _| |__ ___ +// | |/ _` | | / / _ \ | |__/ _` | '_ (_-< +// |_|\__,_|_|_\_\___/ |____\__,_|_.__/__/ + +pragma solidity ^0.8.20; + +import { LibFixedPointMath } from "../thirdparty/LibFixedPointMath.sol"; + +/// @title Lib1559Math +/// @dev Implementation of e^(x) based bonding curve for EIP-1559 +/// See https://ethresear.ch/t/make-eip-1559-more-like-an-amm-curve/9082 +library Lib1559Math { + error EIP1559_INVALID_PARAMS(); + + /// @dev eth_qty(excess_gas_issued) / (TARGET * ADJUSTMENT_QUOTIENT) + /// @param adjustmentFactor The product of gasTarget and adjustmentQuotient + function basefee( + uint256 gasExcess, + uint256 adjustmentFactor + ) + internal + pure + returns (uint256) + { + if (adjustmentFactor == 0) { + revert EIP1559_INVALID_PARAMS(); + } + + return _ethQty(gasExcess, adjustmentFactor) + / LibFixedPointMath.SCALING_FACTOR / adjustmentFactor; + } + + /// @dev exp(gas_qty / TARGET / ADJUSTMENT_QUOTIENT) + function _ethQty( + uint256 gasExcess, + uint256 adjustmentFactor + ) + private + pure + returns (uint256) + { + uint256 input = + gasExcess * LibFixedPointMath.SCALING_FACTOR / adjustmentFactor; + if (input > LibFixedPointMath.MAX_EXP_INPUT) { + input = LibFixedPointMath.MAX_EXP_INPUT; + } + return uint256(LibFixedPointMath.exp(int256(input))); + } +} diff --git a/packages/protocol/contracts/L2/TaikoL2.sol b/packages/protocol/contracts/L2/TaikoL2.sol index 2980d1ced1..b57dd1be40 100644 --- a/packages/protocol/contracts/L2/TaikoL2.sol +++ b/packages/protocol/contracts/L2/TaikoL2.sol @@ -6,13 +6,14 @@ pragma solidity ^0.8.20; +import { LibFixedPointMath } from "../thirdparty/LibFixedPointMath.sol"; import { EssentialContract } from "../common/EssentialContract.sol"; import { ICrossChainSync } from "../common/ICrossChainSync.sol"; import { Proxied } from "../common/Proxied.sol"; -import { Lib1559Math } from "../libs/Lib1559Math.sol"; import { LibMath } from "../libs/LibMath.sol"; +import { Lib1559Math } from "./Lib1559Math.sol"; import { TaikoL2Signer } from "./TaikoL2Signer.sol"; /// @title TaikoL2 @@ -29,13 +30,6 @@ contract TaikoL2 is EssentialContract, TaikoL2Signer, ICrossChainSync { bytes32 signalRoot; } - struct EIP1559Config { - uint128 xscale; - uint128 yscale; - uint32 gasIssuedPerSecond; - uint64 gasExcessMax; - } - // Mapping from L2 block numbers to their block hashes. // All L2 block hashes will be saved in this mapping. mapping(uint256 blockId => bytes32 blockHash) private _l2Hashes; @@ -43,35 +37,31 @@ contract TaikoL2 is EssentialContract, TaikoL2Signer, ICrossChainSync { // A hash to check the integrity of public inputs. bytes32 public publicInputHash; // slot 3 - uint64 public parentTimestamp; // slot 4 + uint128 public gasExcess; // slot 4 uint64 public latestSyncedL1Height; - uint64 public gasExcess; uint256[146] private __gap; // Captures all block variables mentioned in // https://docs.soliditylang.org/en/v0.8.20/units-and-global-variables.html - event Anchored( - uint64 number, - uint64 basefee, - uint32 gaslimit, - uint64 timestamp, - bytes32 parentHash, - uint256 prevrandao, - address coinbase, - uint64 chainid - ); + event Anchored(bytes32 parentHash, uint128 gasExcess); error L2_BASEFEE_MISMATCH(); - error L2_INVALID_1559_PARAMS(); error L2_INVALID_CHAIN_ID(); error L2_INVALID_SENDER(); + error L2_GAS_EXCESS_TOO_LARGE(); error L2_PUBLIC_INPUT_HASH_MISMATCH(); error L2_TOO_LATE(); /// @notice Initializes the TaikoL2 contract. /// @param _addressManager Address of the {AddressManager} contract. - function init(address _addressManager) external initializer { + function init( + address _addressManager, + uint128 _gasExcess + ) + external + initializer + { EssentialContract._init(_addressManager); if (block.chainid <= 1 || block.chainid >= type(uint64).max) { @@ -79,15 +69,13 @@ contract TaikoL2 is EssentialContract, TaikoL2Signer, ICrossChainSync { } if (block.number > 1) revert L2_TOO_LATE(); - parentTimestamp = uint64(block.timestamp); - (publicInputHash,) = _calcPublicInputHash(block.number); - - gasExcess = getEIP1559Config().gasExcessMax / 2; - if (block.number > 0) { uint256 parentHeight = block.number - 1; _l2Hashes[parentHeight] = blockhash(parentHeight); } + + gasExcess = _gasExcess; + (publicInputHash,) = _calcPublicInputHash(block.number); } /// @notice Anchors the latest L1 block details to L2 for cross-layer @@ -95,87 +83,41 @@ contract TaikoL2 is EssentialContract, TaikoL2Signer, ICrossChainSync { /// @param l1Hash The latest L1 block hash when this block was proposed. /// @param l1SignalRoot The latest value of the L1 signal service storage /// root. - /// @param l1Height The latest L1 block height when this block was proposed. + /// @param syncedL1Height The latest L1 block height when this block was + /// proposed. /// @param parentGasUsed The gas used in the parent block. function anchor( bytes32 l1Hash, bytes32 l1SignalRoot, - uint64 l1Height, + uint64 syncedL1Height, uint32 parentGasUsed ) external { if (msg.sender != GOLDEN_TOUCH_ADDRESS) revert L2_INVALID_SENDER(); - uint256 parentHeight = block.number - 1; - bytes32 parentHash = blockhash(parentHeight); - - (bytes32 prevPIH, bytes32 currPIH) = _calcPublicInputHash(parentHeight); - - if (publicInputHash != prevPIH) { + // verify ancestor hashes + (bytes32 publicInputHashOld, bytes32 publicInputHashNew) = + _calcPublicInputHash(block.number - 1); + if (publicInputHash != publicInputHashOld) { revert L2_PUBLIC_INPUT_HASH_MISMATCH(); } + publicInputHash = publicInputHashNew; - // Replace the oldest block hash with the parent's blockhash - publicInputHash = currPIH; - _l2Hashes[parentHeight] = parentHash; - - latestSyncedL1Height = l1Height; - _l1VerifiedBlocks[l1Height] = VerifiedBlock(l1Hash, l1SignalRoot); - - emit CrossChainSynced(l1Height, l1Hash, l1SignalRoot); - - // Check EIP-1559 basefee - uint64 basefee; - (basefee, gasExcess) = _calcBasefee({ - config: getEIP1559Config(), - timeSinceParent: block.timestamp - parentTimestamp, - parentGasUsed: parentGasUsed - }); - - // On L2, basefee is not burnt, but sent to a treasury instead. - // The circuits will need to verify the basefee recipient is the - // designated address. + // Verify the base fee per gas is correct + uint256 basefee; + (basefee, gasExcess) = _calc1559BaseFee(syncedL1Height, parentGasUsed); if (block.basefee != basefee) { revert L2_BASEFEE_MISMATCH(); } - parentTimestamp = uint64(block.timestamp); - - // We emit this event so circuits can grab its data to verify block - // variables. - // If plonk lookup table already has all these data, we can still use - // this event for debugging purpose. - emit Anchored({ - number: uint64(block.number), - basefee: basefee, - gaslimit: uint32(block.gaslimit), - timestamp: uint64(block.timestamp), - parentHash: parentHash, - prevrandao: block.prevrandao, - coinbase: block.coinbase, - chainid: uint64(block.chainid) - }); - } + bytes32 parentHash = blockhash(block.number - 1); + _l2Hashes[block.number - 1] = parentHash; + latestSyncedL1Height = syncedL1Height; + _l1VerifiedBlocks[syncedL1Height] = VerifiedBlock(l1Hash, l1SignalRoot); - /// @notice Gets the basefee and gas excess using EIP-1559 configuration for - /// the given parameters. - /// @param timeSinceParent Time elapsed since the parent block's timestamp. - /// @param parentGasUsed Gas used in the parent block. - /// @return _basefee The calculated EIP-1559 basefee. - function getBasefee( - uint64 timeSinceParent, - uint32 parentGasUsed - ) - public - view - returns (uint256 _basefee) - { - (_basefee,) = _calcBasefee({ - config: getEIP1559Config(), - timeSinceParent: timeSinceParent, - parentGasUsed: parentGasUsed - }); + emit CrossChainSynced(syncedL1Height, l1Hash, l1SignalRoot); + emit Anchored(parentHash, gasExcess); } /// @inheritdoc ICrossChainSync @@ -200,10 +142,38 @@ contract TaikoL2 is EssentialContract, TaikoL2Signer, ICrossChainSync { return _l1VerifiedBlocks[id].signalRoot; } + /// @notice Gets the basefee and gas excess using EIP-1559 configuration for + /// the given parameters. + /// @param syncedL1Height The synced L1 height in the next Taiko block + /// @param parentGasUsed Gas used in the parent block. + /// @return basefee The calculated EIP-1559 base fee per gas. + function getBasefee( + uint64 syncedL1Height, + uint32 parentGasUsed + ) + public + view + returns (uint256 basefee) + { + (basefee,) = _calc1559BaseFee(syncedL1Height, parentGasUsed); + } + + /// @notice Returns EIP1559 related configurations + function get1559Params() + public + pure + virtual + returns (uint64 gasTarget, uint256 adjustmentQuotient) + { + gasTarget = 15 * 1e6 * 10; // 10x Ethereum gas target + adjustmentQuotient = 8; + } + /// @notice Retrieves the block hash for the given L2 block number. /// @param blockId The L2 block number to retrieve the block hash for. /// @return The block hash for the specified L2 block id, or zero if the /// block id is greater than or equal to the current block number. + function getBlockHash(uint64 blockId) public view returns (bytes32) { if (blockId >= block.number) { return 0; @@ -214,55 +184,10 @@ contract TaikoL2 is EssentialContract, TaikoL2Signer, ICrossChainSync { } } - /// @notice Cauclates the EIP-1559 configurations. - function calcEIP1559Config( - uint64 basefee, - uint32 gasIssuedPerSecond, - uint64 gasExcessMax, - uint64 gasTarget, - uint64 ratio2x1x - ) - public - pure - returns (EIP1559Config memory config) - { - if ( - gasIssuedPerSecond == 0 || basefee == 0 || gasExcessMax == 0 - || gasTarget == 0 || ratio2x1x == 0 - ) revert L2_INVALID_1559_PARAMS(); - - (config.xscale, config.yscale) = Lib1559Math.calculateScales({ - xExcessMax: gasExcessMax, - price: basefee, - target: gasTarget, - ratio2x1x: ratio2x1x - }); - - if (config.xscale == 0 || config.yscale == 0) { - revert L2_INVALID_1559_PARAMS(); - } - config.gasIssuedPerSecond = gasIssuedPerSecond; - } - - /// @notice Returns the current EIP-1559 configuration details. - /// @return config The current EIP-1559 configuration details. - function getEIP1559Config() - public - pure - virtual - returns (EIP1559Config memory config) - { - // The following values are caculated in TestTaikoL2_1559.sol. - config.xscale = 1_488_514_844; - config.yscale = 358_298_803_609_133_338_138_868_404_779; - config.gasIssuedPerSecond = 12_500_000; - config.gasExcessMax = 90_900_000_000; - } - function _calcPublicInputHash(uint256 blockId) private view - returns (bytes32 prevPIH, bytes32 currPIH) + returns (bytes32 publicInputHashOld, bytes32 publicInputHashNew) { bytes32[256] memory inputs; @@ -279,55 +204,60 @@ contract TaikoL2 is EssentialContract, TaikoL2Signer, ICrossChainSync { inputs[255] = bytes32(block.chainid); assembly { - prevPIH := keccak256(inputs, 8192 /*mul(256, 32)*/ ) + publicInputHashOld := keccak256(inputs, 8192 /*mul(256, 32)*/ ) } inputs[blockId % 255] = blockhash(blockId); assembly { - currPIH := keccak256(inputs, 8192 /*mul(256, 32)*/ ) + publicInputHashNew := keccak256(inputs, 8192 /*mul(256, 32)*/ ) } } - function _calcBasefee( - EIP1559Config memory config, - uint256 timeSinceParent, + function _calc1559BaseFee( + uint64 syncedL1Height, uint32 parentGasUsed ) private view - returns (uint64 _basefee, uint64 _gasExcess) + returns (uint256 _basefee, uint128 _gasExcess) { - if (config.gasIssuedPerSecond == 0) { - _basefee = 1; - _gasExcess = gasExcess; - } else { - // Unchecked is safe because: - // - gasExcess is capped at uint64 max ever, so multiplying with a - // uint32 value is safe - // - 'excess' is bigger than 'issued' - unchecked { - uint256 issued = timeSinceParent * config.gasIssuedPerSecond; - uint256 excess = - (uint256(gasExcess) + parentGasUsed).max(issued); - // Very important to cap _gasExcess uint64 - _gasExcess = uint64((excess - issued).min(type(uint64).max)); + // gasExcess being 0 indicate the dynamic 1559 base fee is disabled. + if (gasExcess > 0) { + // We always add the gas used by parent block to the gas excess + // value as this has already happend + uint256 excess = uint256(gasExcess) + parentGasUsed; + + // Calculate how much more gas to issue to offset gas excess. + // after each L1 block time, config.gasTarget more gas is issued, + // the gas excess will be reduced accordingly. + // Note that when latestSyncedL1Height is zero, we skip this step. + uint128 numL1Blocks; + if ( + latestSyncedL1Height > 0 + && syncedL1Height > latestSyncedL1Height + ) { + numL1Blocks = syncedL1Height - latestSyncedL1Height; } - _basefee = uint64( - Lib1559Math.calculatePrice({ - xscale: config.xscale, - yscale: config.yscale, - xExcess: _gasExcess, - xPurchase: 0 - }).min(type(uint64).max) - ); - - // To make sure when EIP-1559 is enabled, the basefee is non-zero - // (Geth never uses 0 values for basefee) - if (_basefee == 0) { - _basefee = 1; + (uint64 gasTarget, uint256 adjustmentQuotient) = get1559Params(); + + if (numL1Blocks > 0) { + uint128 issuance = numL1Blocks * gasTarget; + excess = excess > issuance ? excess - issuance : 1; } + + _gasExcess = uint128(excess.min(type(uint128).max)); + + // The base fee per gas used by this block is the spot price at the + // bonding curve, regardless the actual amount of gas used by this + // block, however, the this block's gas used will affect the next + // block's base fee. + _basefee = + Lib1559Math.basefee(_gasExcess, adjustmentQuotient * gasTarget); } + + // Always make sure basefee is nonzero, this is required by the node. + if (_basefee == 0) _basefee = 1; } } diff --git a/packages/protocol/contracts/L2/eip1559_util.py b/packages/protocol/contracts/L2/eip1559_util.py new file mode 100644 index 0000000000..0e633df8c8 --- /dev/null +++ b/packages/protocol/contracts/L2/eip1559_util.py @@ -0,0 +1,135 @@ +import math +import matplotlib.pyplot as plt + +SCALE = int(1e18) ## fix point scale +MAX_EXP_INPUT = 135_305_999_368_893_231_588 + +# Python function that matches the `exp(int256 x)` function in LibFixedPointMath.sol +def fixed_point_exp(x): + if x <= -42_139_678_854_452_767_551: + return 0 + + if x >= 135_305_999_368_893_231_589: + raise OverflowError("Overflow") + + x = (x << 78) // (5**18) + + k = ((x << 96) // 54_916_777_467_707_473_351_141_471_128 + (2**95)) >> 96 + x = x - k * 54_916_777_467_707_473_351_141_471_128 + + y = x + 1_346_386_616_545_796_478_920_950_773_328 + y = ((y * x) >> 96) + 57_155_421_227_552_351_082_224_309_758_442 + p = y + x - 94_201_549_194_550_492_254_356_042_504_812 + p = ((p * y) >> 96) + 28_719_021_644_029_726_153_956_944_680_412_240 + p = p * x + (4_385_272_521_454_847_904_659_076_985_693_276 << 96) + + q = x - 2_855_989_394_907_223_263_936_484_059_900 + q = ((q * x) >> 96) + 50_020_603_652_535_783_019_961_831_881_945 + q = ((q * x) >> 96) - 533_845_033_583_426_703_283_633_433_725_380 + q = ((q * x) >> 96) + 3_604_857_256_930_695_427_073_651_918_091_429 + q = ((q * x) >> 96) - 14_423_608_567_350_463_180_887_372_962_807_573 + q = ((q * x) >> 96) + 26_449_188_498_355_588_339_934_803_723_976_023 + + r = p // q # Integer division + + r = (r * 3_822_833_074_963_236_453_042_738_258_902_158_003_155_416_615_667) >> ( + 195 - k + ) + + return r + + +# Test exp(1) +print("exp(1) =", fixed_point_exp(SCALE) / SCALE) +print("exp(MAX) =", fixed_point_exp(MAX_EXP_INPUT) / SCALE) + +## Calculate initial gas_excess_issued +GWEI = 1e9 +ETHEREUM_TARGET = 15 * 1e6 +ETHEREUM_BASE_FEE = 10 * GWEI +TAIKO_TARGET = ETHEREUM_TARGET * 10 +TAIKO_BASE_FEE = ETHEREUM_BASE_FEE // 10 +ADJUSTMENT_QUOTIENT = 8 +ADJUSTMENT_FACTOR = TAIKO_TARGET * 8 + + +def calc_eth_qty(qty): + return math.exp(qty / TAIKO_TARGET / ADJUSTMENT_QUOTIENT) + + +def calc_basefee(excess, gas_in_block): + diff = calc_eth_qty(excess + gas_in_block) - calc_eth_qty(excess) + return diff / gas_in_block + + +def calculate_excess_gas_issued(expected_base_fee, gas_used): + numerator = expected_base_fee * gas_used / (calc_eth_qty(gas_used) - 1) + 1 + excess_gas_issued = math.log(numerator) * ADJUSTMENT_FACTOR + return excess_gas_issued + + +expected_basefee = TAIKO_BASE_FEE +gas_in_block = 1 +gas_excess_issued = int(calculate_excess_gas_issued(expected_basefee, gas_in_block)) +print("gas_excess_issued : ", gas_excess_issued) +print("actual_basefee : ", calc_basefee(gas_excess_issued, gas_in_block)) +print("expected_basefee : ", expected_basefee) + + +# See https://ethresear.ch/t/make-eip-1559-more-like-an-amm-curve/9082 +def eth_qty(gas_qty): + v = int(int(gas_qty) * SCALE // ADJUSTMENT_FACTOR) + if v > MAX_EXP_INPUT: + v = MAX_EXP_INPUT + return fixed_point_exp(v) + + +def calc_purchase_basefee(gas_used): + # Returns the average base fee per gas for purchasing gas_used gas + diff = eth_qty(gas_excess_issued + gas_used) - eth_qty(gas_excess_issued) + return int(int(diff // gas_used) // SCALE) + + +def calc_spot_basefee(): + # Returns the spot price + return int(int(eth_qty(gas_excess_issued) // SCALE) // ADJUSTMENT_FACTOR) + + +print("purchase basefee (1 gas) [fix point]1 : ", calc_purchase_basefee(gas_in_block)) +print("spot basefee [fix point]1 : ", calc_spot_basefee()) + + +# Set the excess value to the max possible +bkup = gas_excess_issued +gas_excess_issued = MAX_EXP_INPUT * ADJUSTMENT_FACTOR // SCALE +print("spot basefee [fix point]2 : ", calc_spot_basefee()) + + +exit() +gas_excess_issued = bkup +# one L2 block per L1 block vs multiple L2 blocks per L1 block +x1 = [] +y1 = [] +for i in range(10): + x1.append(i * 12) + y1.append(calc_spot_basefee()) + +x2 = [] +y2 = [] + +for i in range(10): + for j in range(12): + x2.append(i * 12 + j) + y2.append(calc_spot_basefee()) + gas_excess_issued += TAIKO_TARGET / 12 + gas_excess_issued -= TAIKO_TARGET + +plt.scatter(x2, y2, label="1s", color="red", marker="o") +plt.scatter(x1, y1, label="12s", color="blue", marker="x") + +plt.xlabel("basefee") +plt.ylabel("time") +plt.ylim(expected_basefee * 0.75, expected_basefee * 1.25) +plt.legend() +plt.title("EIP1559 Bond Curve") +plt.show() diff --git a/packages/protocol/contracts/libs/Lib1559Math.sol b/packages/protocol/contracts/libs/Lib1559Math.sol deleted file mode 100644 index 200190c274..0000000000 --- a/packages/protocol/contracts/libs/Lib1559Math.sol +++ /dev/null @@ -1,98 +0,0 @@ -// SPDX-License-Identifier: MIT -// _____ _ _ _ _ -// |_ _|_ _(_) |_____ | | __ _| |__ ___ -// | |/ _` | | / / _ \ | |__/ _` | '_ (_-< -// |_|\__,_|_|_\_\___/ |____\__,_|_.__/__/ - -pragma solidity ^0.8.20; - -import { SafeCastUpgradeable } from "@ozu/utils/math/SafeCastUpgradeable.sol"; - -import { LibFixedPointMath } from "../thirdparty/LibFixedPointMath.sol"; - -/// @title Lib1559Math -/// @dev This library provides utilities related to the L2 EIP-1559 -/// implementation. -/// See formulas described in the whitepaper -/// https://taikoxyz.github.io/taiko-mono/taiko-whitepaper.pdf -/// From section: "9.6. Rate Limiting using EIP-1559." -/// Additional info about the arithmetic formula: -/// https://github.com/taikoxyz/taiko-mono/blob/main/packages/protocol/docs/L2EIP1559.md -library Lib1559Math { - using SafeCastUpgradeable for uint256; - - error L2_1559_UNEXPECTED_CHANGE(uint64 expected, uint64 actual); - error L2_1559_OUT_OF_STOCK(); - - /// @dev Calculates xscale and yscale values used for pricing. - /// @param xExcessMax The maximum excess value. - /// @param price The current price. - /// @param target The target gas value. - /// @param ratio2x1x Expected ratio of gas price for two blocks. - /// @return xscale Calculated x scale value. - /// @return yscale Calculated y scale value. - function calculateScales( - uint64 xExcessMax, - uint64 price, - uint64 target, - uint64 ratio2x1x - ) - internal - pure - returns (uint128 xscale, uint128 yscale) - { - assert(xExcessMax != 0); - uint64 x = xExcessMax / 2; - - // Calculate xscale - xscale = LibFixedPointMath.MAX_EXP_INPUT / xExcessMax; - - // Calculate yscale - yscale = calculatePrice(xscale, price, x, target).toUint128(); - - // Verify the gas price ratio between two blocks, one has - // target * 2 gas and the other one has target gas. - uint256 price1x = calculatePrice(xscale, yscale, x, target); - uint256 price2x = calculatePrice(xscale, yscale, x, target * 2); - uint64 ratio = uint64((price2x * 10_000) / price1x); - - if (ratio2x1x != ratio) { - revert L2_1559_UNEXPECTED_CHANGE(ratio2x1x, ratio); - } - } - - /// @dev Calculates the price based on provided scales. - /// @param xscale The x scale value. - /// @param yscale The y scale value. - /// @param xExcess Current excess value. - /// @param xPurchase Amount of gas purchased. - /// @return The calculated price. - function calculatePrice( - uint128 xscale, - uint128 yscale, - uint64 xExcess, - uint64 xPurchase - ) - internal - pure - returns (uint256) - { - assert(xscale != 0 && yscale != 0); - uint64 _xPurchase = xPurchase == 0 ? 1 : xPurchase; - uint256 _before = _calcY(xExcess, xscale); - uint256 _after = _calcY(xExcess + _xPurchase, xscale); - return (_after - _before) / _xPurchase / yscale; - } - - /// @dev Internal function to calculate y value based on x value and scale. - /// @param x The x value. - /// @param xscale The x scale value. - /// @return The calculated y value. - function _calcY(uint256 x, uint128 xscale) private pure returns (uint256) { - uint256 _x = x * xscale; - if (_x >= LibFixedPointMath.MAX_EXP_INPUT) { - revert L2_1559_OUT_OF_STOCK(); - } - return uint256(LibFixedPointMath.exp(int256(_x))); - } -} diff --git a/packages/protocol/contracts/thirdparty/LibFixedPointMath.sol b/packages/protocol/contracts/thirdparty/LibFixedPointMath.sol index 0df5ded5d1..1f2d33f5ad 100644 --- a/packages/protocol/contracts/thirdparty/LibFixedPointMath.sol +++ b/packages/protocol/contracts/thirdparty/LibFixedPointMath.sol @@ -5,7 +5,7 @@ pragma solidity ^0.8.20; library LibFixedPointMath { uint128 public constant MAX_EXP_INPUT = 135_305_999_368_893_231_588; - uint256 public constant SCALING_FACTOR_1E18 = 1e18; // For fixed point + uint256 public constant SCALING_FACTOR = 1e18; // For fixed point // representation factor error Overflow(); diff --git a/packages/protocol/test/L2/Lib1559Math.t.sol b/packages/protocol/test/L2/Lib1559Math.t.sol new file mode 100644 index 0000000000..17b1ba4a39 --- /dev/null +++ b/packages/protocol/test/L2/Lib1559Math.t.sol @@ -0,0 +1,46 @@ +// SPDX-License-Identifier: MIT +pragma solidity ^0.8.20; + +import { console2 } from "forge-std/console2.sol"; + +import { Lib1559Math } from "../../contracts/L2/Lib1559Math.sol"; +import { LibFixedPointMath } from + "../../contracts/thirdparty/LibFixedPointMath.sol"; +import { LibMath } from "../../contracts/libs/LibMath.sol"; + +import { TestBase } from "../TestBase.sol"; + +contract TestLib1559Math is TestBase { + using LibMath for uint256; + + function test_eip1559_math() external { + uint256 gasTarget = 15 * 1e6 * 10; + uint256 adjustmentQuotient = 8; + uint256 adjustmentFactor = gasTarget * adjustmentQuotient; + // The expected values are calculated in eip1559_util.py + _assertAmostEq( + 999_999_916, + Lib1559Math.basefee({ + gasExcess: 49_954_623_777, + adjustmentFactor: adjustmentFactor + }) + ); + + _assertAmostEq( + 48_246_703_821_869_050_543_408_253_349_256_099_602_613_005_189_120, + Lib1559Math.basefee({ + gasExcess: LibFixedPointMath.MAX_EXP_INPUT * adjustmentFactor + / LibFixedPointMath.SCALING_FACTOR, + adjustmentFactor: adjustmentFactor + }) + ); + } + + // Assert the different between two number is smaller than 1/1000000 + function _assertAmostEq(uint256 a, uint256 b) private { + uint256 min = a.min(b); + uint256 max = a.max(b); + assertTrue(max > 0 && ((max - min) * 1_000_000) / max <= 1); + console2.log(a, " <> ", b); + } +} diff --git a/packages/protocol/test/L2/TaikoL2.t.sol b/packages/protocol/test/L2/TaikoL2.t.sol index cca6a0ce47..c2c555d8d3 100644 --- a/packages/protocol/test/L2/TaikoL2.t.sol +++ b/packages/protocol/test/L2/TaikoL2.t.sol @@ -7,20 +7,6 @@ import { SafeCastUpgradeable } from "@ozu/utils/math/SafeCastUpgradeable.sol"; import { TestBase } from "../TestBase.sol"; import { TaikoL2 } from "../../contracts/L2/TaikoL2.sol"; -contract TaikoL2CustomConfig is TaikoL2 { - function getEIP1559Config() - public - pure - override - returns (EIP1559Config memory config) - { - config.xscale = 17_617_968_667; - config.yscale = 7_867_664_977_129_350_145_899_915_356_087; - config.gasIssuedPerSecond = 1_000_000; - config.gasExcessMax = 7_680_000_000; - } -} - contract TestTaikoL2 is TestBase { using SafeCastUpgradeable for uint256; @@ -31,25 +17,18 @@ contract TestTaikoL2 is TestBase { uint256 private logIndex; function setUp() public { - L2 = new TaikoL2CustomConfig(); + L2 = new TaikoL2(); address dummyAddressManager = getRandomAddress(); - L2.init(dummyAddressManager); + uint128 gasExcess = 0; + L2.init(dummyAddressManager, gasExcess); vm.roll(block.number + 1); vm.warp(block.timestamp + 30); } function test_L2_AnchorTx_with_constant_block_time() external { - uint256 firstBasefee; for (uint256 i = 0; i < 100; i++) { - uint256 basefee = _getBasefeeAndPrint2(0, BLOCK_GAS_LIMIT); - vm.fee(basefee); - - if (firstBasefee == 0) { - firstBasefee = basefee; - } else { - assertEq(firstBasefee, basefee); - } + vm.fee(1); vm.prank(L2.GOLDEN_TOUCH_ADDRESS()); _anchor(BLOCK_GAS_LIMIT); @@ -60,14 +39,8 @@ contract TestTaikoL2 is TestBase { } function test_L2_AnchorTx_with_decreasing_block_time() external { - uint256 prevBasefee; - for (uint256 i = 0; i < 32; i++) { - uint256 basefee = _getBasefeeAndPrint2(0, BLOCK_GAS_LIMIT); - vm.fee(basefee); - - assertGe(basefee, prevBasefee); - prevBasefee = basefee; + vm.fee(1); vm.prank(L2.GOLDEN_TOUCH_ADDRESS()); _anchor(BLOCK_GAS_LIMIT); @@ -78,16 +51,8 @@ contract TestTaikoL2 is TestBase { } function test_L2_AnchorTx_with_increasing_block_time() external { - uint256 prevBasefee; - for (uint256 i = 0; i < 30; i++) { - uint256 basefee = _getBasefeeAndPrint2(0, BLOCK_GAS_LIMIT); - vm.fee(basefee); - - if (prevBasefee != 0) { - assertLe(basefee, prevBasefee); - } - prevBasefee = basefee; + vm.fee(1); vm.prank(L2.GOLDEN_TOUCH_ADDRESS()); _anchor(BLOCK_GAS_LIMIT); @@ -100,8 +65,7 @@ contract TestTaikoL2 is TestBase { // calling anchor in the same block more than once should fail function test_L2_AnchorTx_revert_in_same_block() external { - uint256 expectedBasefee = _getBasefeeAndPrint2(0, BLOCK_GAS_LIMIT); - vm.fee(expectedBasefee); + vm.fee(1); vm.prank(L2.GOLDEN_TOUCH_ADDRESS()); _anchor(BLOCK_GAS_LIMIT); @@ -113,8 +77,7 @@ contract TestTaikoL2 is TestBase { // calling anchor in the same block more than once should fail function test_L2_AnchorTx_revert_from_wrong_signer() external { - uint256 expectedBasefee = _getBasefeeAndPrint2(0, BLOCK_GAS_LIMIT); - vm.fee(expectedBasefee); + vm.fee(1); vm.expectRevert(); _anchor(BLOCK_GAS_LIMIT); } @@ -135,71 +98,6 @@ contract TestTaikoL2 is TestBase { L2.signAnchor(digest, uint8(3)); } - function test_L2_getBasefee() external { - TaikoL2.EIP1559Config memory config = L2.getEIP1559Config(); - - console2.log(config.xscale); - console2.log(config.yscale); - console2.log(config.gasIssuedPerSecond); - - uint64 timeSinceParent = uint64(block.timestamp - L2.parentTimestamp()); - assertEq(_getBasefeeAndPrint(timeSinceParent, 0), 317_609_019); - - timeSinceParent += 100; - assertEq(_getBasefeeAndPrint(timeSinceParent, 0), 54_544_902); - - timeSinceParent += 10_000; - assertEq(_getBasefeeAndPrint(timeSinceParent, 0), 1); - } - - function _getBasefeeAndPrint( - uint64 timeSinceParent, - uint32 parentGasUsed - ) - private - returns (uint256 _basefee) - { - uint256 gasIssued = - L2.getEIP1559Config().gasIssuedPerSecond * timeSinceParent; - string memory _msg = string.concat( - "#", - Strings.toString(logIndex++), - ": gasExcess=", - Strings.toString(L2.gasExcess()), - ", timeSinceParent=", - Strings.toString(timeSinceParent), - ", gasIssued=", - Strings.toString(gasIssued), - ", parentGasUsed=", - Strings.toString(parentGasUsed) - ); - _basefee = L2.getBasefee(timeSinceParent, parentGasUsed); - assertTrue(_basefee != 0); - - _msg = string.concat( - _msg, - ", gasExcess(changed)=", - Strings.toString(L2.gasExcess()), - ", basefee=", - Strings.toString(_basefee) - ); - - console2.log(_msg); - } - - function _getBasefeeAndPrint2( - uint32 timeSinceNow, - uint32 gasLimit - ) - private - returns (uint256 _basefee) - { - return _getBasefeeAndPrint( - uint32(timeSinceNow + block.timestamp - L2.parentTimestamp()), - gasLimit - ); - } - function _anchor(uint32 parentGasLimit) private { bytes32 l1Hash = getRandomBytes32(); bytes32 l1SignalRoot = getRandomBytes32(); diff --git a/packages/protocol/test/L2/TaikoL2_1559.t.sol b/packages/protocol/test/L2/TaikoL2_1559.t.sol deleted file mode 100644 index f1ed8778c1..0000000000 --- a/packages/protocol/test/L2/TaikoL2_1559.t.sol +++ /dev/null @@ -1,62 +0,0 @@ -// SPDX-License-Identifier: MIT -pragma solidity ^0.8.20; - -import { console2 } from "forge-std/console2.sol"; -import { TestBase } from "../TestBase.sol"; -import { TaikoL2 } from "../../contracts/L2/TaikoL2.sol"; - -contract TestTaikoL2_1559 is TestBase { - function test_1559ParamCalculation() external { - // Assume we scale L1 throughput by 10 times. - uint64 scaleFactor = 10; - - // Assume we lower the L1 transaction cost by 25 times. - uint64 costFactor = 25; - - // Calculate gas space issuance per second - uint64 ethereumBlockGasTarget = 15_000_000; - uint64 ethereumBlockTime = 12; - - // https://ultrasound.money/ - uint64 ethereumBasefeeNow = 28_000_000_000; // 28Gwei - - uint32 gasIssuedPerSecond = - uint32(scaleFactor * ethereumBlockGasTarget / ethereumBlockTime); - - // Tune this number manually so ratio2x1x is ~112.5%. - uint64 maxSeconds = 7272; - - uint64 gasExcessMax = gasIssuedPerSecond * maxSeconds; - - uint64 initialBasefee = ethereumBasefeeNow / costFactor; - uint64 ratio2x1x = 11_250; // ~12.5% increase - uint64 gasTarget = gasIssuedPerSecond * ethereumBlockTime; - - console2.log("basefee :", initialBasefee); - console2.log("gasIssuedPerSecond:", gasIssuedPerSecond); - console2.log("gasExcessMax :", gasExcessMax); - console2.log("gasTarget :", gasTarget); - console2.log("ratio2x1x :", ratio2x1x); - - // basefee : 1120000000 - // gasIssuedPerSecond: 12500000 - // gasExcessMax : 90900000000 - // gasTarget : 150000000 - // ratio2x1x : 11250 - - TaikoL2 L2 = new TaikoL2(); - L2.init(getRandomAddress()); - - TaikoL2.EIP1559Config memory config = L2.calcEIP1559Config( - initialBasefee, - gasIssuedPerSecond, - gasExcessMax, - gasTarget, - ratio2x1x - ); - - console2.log("config.xscale : ", config.xscale); - console2.log("config.yscale : ", config.yscale); - console2.log("config.gasIssuedPerSecond: ", config.gasIssuedPerSecond); - } -} diff --git a/packages/protocol/test/libs/Lib1559Math.t.sol b/packages/protocol/test/libs/Lib1559Math.t.sol deleted file mode 100644 index 0fbc0c50b3..0000000000 --- a/packages/protocol/test/libs/Lib1559Math.t.sol +++ /dev/null @@ -1,85 +0,0 @@ -// SPDX-License-Identifier: MIT -pragma solidity ^0.8.20; - -import { Test } from "forge-std/Test.sol"; -import { console2 } from "forge-std/console2.sol"; -import { Lib1559Math as T } from "../../contracts/libs/Lib1559Math.sol"; -import { SafeCastUpgradeable } from "@ozu/utils/math/SafeCastUpgradeable.sol"; - -contract TestLib1559Math is Test { - using SafeCastUpgradeable for uint256; - - function test1559_2X1XRatio(uint16 rand) public { - vm.assume(rand != 0); - - uint64 xExcessMax = (uint256(15_000_000) * 256 * rand).toUint64(); - uint64 xTarget = (uint256(6_000_000) * rand).toUint64(); - uint64 price0 = (uint256(5_000_000_000) * rand).toUint64(); - uint64 ratio2x1x = 11_177; - (uint128 xscale, uint128 yscale) = T.calculateScales({ - xExcessMax: xExcessMax, - price: price0, - target: xTarget, - ratio2x1x: ratio2x1x - }); - - // basefee should be 0 when xExcess is 0 - assertEq(T.calculatePrice(xscale, yscale, 0, xTarget), 0); - - uint64 N = 50; - // In the [xExcessMax/2 - 50 * xTarget, xExcessMax/2 + 50 * xTarget] - // x range, the ratio2x1x holds, and the price is still smaller - // than uint64.max - for ( - uint64 xExcess = xExcessMax / 2 - N * xTarget; - xExcess <= xExcessMax / 2 + N * xTarget; - xExcess += xTarget - ) { - uint256 basefee1 = - T.calculatePrice(xscale, yscale, xExcess, xTarget); - assertLt(basefee1, type(uint64).max); - - uint256 basefee2 = - T.calculatePrice(xscale, yscale, xExcess, 2 * xTarget); - - assertLt(basefee2, type(uint64).max); - - if (basefee1 != 0) { - assertEq((basefee2 * 10_000) / basefee1, ratio2x1x); - } - } - } - - function test1559_SpecalCases(uint16 rand) public { - vm.assume(rand != 0); - - uint64 xExcessMax = (uint256(15_000_000) * 256 * rand).toUint64(); - uint64 xTarget = (uint256(6_000_000) * rand).toUint64(); - uint64 price0 = (uint256(5_000_000_000) * rand).toUint64(); - uint64 ratio2x1x = 11_177; - - (uint128 xscale, uint128 yscale) = T.calculateScales({ - xExcessMax: xExcessMax, - price: price0, - target: xTarget, - ratio2x1x: ratio2x1x - }); - - assertEq(T.calculatePrice(xscale, yscale, 0, 0), 0); - assertEq(T.calculatePrice(xscale, yscale, 0, 1), 0); - - assertGt( - T.calculatePrice(xscale, yscale, xExcessMax - xTarget, xTarget), - type(uint64).max - ); - - assertGt( - T.calculatePrice(xscale, yscale, 0, xExcessMax), type(uint64).max - ); - - assertGt( - T.calculatePrice(xscale, yscale, xExcessMax / 2, xExcessMax / 2), - type(uint64).max - ); - } -} From 6a6cc8b80d03ff4f8daf066a3a615a0491ac217e Mon Sep 17 00:00:00 2001 From: D <51912515+adaki2004@users.noreply.github.com> Date: Tue, 3 Oct 2023 15:55:45 +0200 Subject: [PATCH 40/87] chore(protocol): Contestable rollup additions (design docs, documentation, etc.) (#14810) Co-authored-by: Daniel Wang <99078276+dantaik@users.noreply.github.com> --- packages/protocol/contracts/L1/TaikoData.sol | 7 - .../protocol/contracts/L1/TaikoEvents.sol | 3 +- packages/protocol/contracts/L1/TaikoL1.sol | 2 +- .../excalidraw/ContestableZkRollup.excalidraw | 5354 +++++++++++++++++ .../website/pages/docs/concepts/proposing.mdx | 4 +- .../website/pages/docs/concepts/proving.mdx | 69 +- packages/website/pages/docs/index.mdx | 6 +- .../L1/IProofVerifier.md | 24 - .../contract-documentation/L1/IProver.md | 24 - .../contract-documentation/L1/IVerifier.md | 27 + .../L1/ProofVerifier.md | 52 - .../contract-documentation/L1/TaikoData.md | 87 +- .../contract-documentation/L1/TaikoErrors.md | 98 +- .../contract-documentation/L1/TaikoEvents.md | 142 +- .../contract-documentation/L1/TaikoL1.md | 280 +- .../contract-documentation/L2/TaikoL2.md | 14 - .../docs/reference/node-troubleshooting.mdx | 2 +- .../public/images/protocol/BlockLifecycle.png | Bin 0 -> 3709493 bytes .../images/protocol/ContestableZkRollup.png | Bin 0 -> 2911314 bytes 19 files changed, 5948 insertions(+), 247 deletions(-) create mode 100644 packages/website/excalidraw/ContestableZkRollup.excalidraw delete mode 100644 packages/website/pages/docs/reference/contract-documentation/L1/IProofVerifier.md delete mode 100644 packages/website/pages/docs/reference/contract-documentation/L1/IProver.md create mode 100644 packages/website/pages/docs/reference/contract-documentation/L1/IVerifier.md delete mode 100644 packages/website/pages/docs/reference/contract-documentation/L1/ProofVerifier.md create mode 100644 packages/website/public/images/protocol/BlockLifecycle.png create mode 100644 packages/website/public/images/protocol/ContestableZkRollup.png diff --git a/packages/protocol/contracts/L1/TaikoData.sol b/packages/protocol/contracts/L1/TaikoData.sol index 876d82ad7d..7bf342f28d 100644 --- a/packages/protocol/contracts/L1/TaikoData.sol +++ b/packages/protocol/contracts/L1/TaikoData.sol @@ -145,13 +145,6 @@ library TaikoData { bytes32[7] __reserved; } - /// @dev Struct representing information about a transaction list. - /// 1 slot used. - struct TxListInfo { - uint64 validSince; - uint24 size; - } - /// @dev Struct representing an Ethereum deposit. /// 1 slot used. struct EthDeposit { diff --git a/packages/protocol/contracts/L1/TaikoEvents.sol b/packages/protocol/contracts/L1/TaikoEvents.sol index b9ec269f2e..db857b8d21 100644 --- a/packages/protocol/contracts/L1/TaikoEvents.sol +++ b/packages/protocol/contracts/L1/TaikoEvents.sol @@ -39,6 +39,7 @@ abstract contract TaikoEvents { /// @param prover The prover whose transition is used for verifing the /// block. /// @param blockHash The hash of the verified block. + /// @param signalRoot The latest value of the signal service storage. event BlockVerified( uint256 indexed blockId, address indexed assignedProver, @@ -80,7 +81,7 @@ abstract contract TaikoEvents { /// @dev Emitted when a user withdrawed Taiko token from this contract. event TokenWithdrawn(uint256 amount); - /// @dev Emitted when Taiko token are credited to the user's in-protocol + /// @dev Emitted when Taiko token are credited to the user's in-protocol /// balance. event TokenCredited(uint256 amount, bool minted); diff --git a/packages/protocol/contracts/L1/TaikoL1.sol b/packages/protocol/contracts/L1/TaikoL1.sol index 90959f7044..bae71eb42d 100644 --- a/packages/protocol/contracts/L1/TaikoL1.sol +++ b/packages/protocol/contracts/L1/TaikoL1.sol @@ -40,7 +40,7 @@ contract TaikoL1 is TaikoData.State public state; uint256[100] private __gap; - /// @dev Fallback function to receive Ether and deposit to to Layer 2. + /// @dev Fallback function to receive Ether and deposit to Layer 2. receive() external payable { depositEtherToL2(address(0)); } diff --git a/packages/website/excalidraw/ContestableZkRollup.excalidraw b/packages/website/excalidraw/ContestableZkRollup.excalidraw new file mode 100644 index 0000000000..bf38e814dd --- /dev/null +++ b/packages/website/excalidraw/ContestableZkRollup.excalidraw @@ -0,0 +1,5354 @@ +{ + "type": "excalidraw", + "version": 2, + "source": "https://excalidraw.com", + "elements": [ + { + "type": "arrow", + "version": 4929, + "versionNonce": 169167796, + "isDeleted": false, + "id": "KmaHjIkt2YFnsnyuvF0nV", + "fillStyle": "hachure", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "angle": 0, + "x": 2360.5984616708947, + "y": -59.35150849590064, + "strokeColor": "#1e1e1e", + "backgroundColor": "#ff8787", + "width": 503.19965361451705, + "height": 240.5333005077137, + "seed": 670877941, + "groupIds": [], + "frameId": null, + "roundness": { + "type": 2 + }, + "boundElements": [], + "updated": 1695715456176, + "link": null, + "locked": false, + "startBinding": { + "elementId": "efcQM54D8Yfp6DIrPKPzO", + "focus": -0.4482966105782266, + "gap": 23.3746777708119 + }, + "endBinding": null, + "lastCommittedPoint": null, + "startArrowhead": null, + "endArrowhead": "arrow", + "points": [ + [ + 0, + 0 + ], + [ + 242.00646389518852, + 6.93988715941078 + ], + [ + 503.19965361451705, + 30.041656136730317 + ], + [ + 434.95952262735955, + 240.5333005077137 + ] + ] + }, + { + "type": "text", + "version": 525, + "versionNonce": 1165851020, + "isDeleted": false, + "id": "2c412CrC5G2jr3Ae_RWTJ", + "fillStyle": "hachure", + "strokeWidth": 2, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "angle": 0, + "x": 2304.92117286735, + "y": -399.65070115342417, + "strokeColor": "#1e1e1e", + "backgroundColor": "#b2f2bb", + "width": 821.5161212198319, + "height": 164.97534976868934, + "seed": 1044606645, + "groupIds": [], + "frameId": null, + "roundness": null, + "boundElements": [], + "updated": 1695715456177, + "link": null, + "locked": false, + "fontSize": 65.99013990747571, + "fontFamily": 1, + "text": "Contestable zkRollup\nwith a tier based system", + "textAlign": "center", + "verticalAlign": "top", + "containerId": null, + "originalText": "Contestable zkRollup\nwith a tier based system", + "lineHeight": 1.25, + "baseline": 141 + }, + { + "type": "arrow", + "version": 3937, + "versionNonce": 1985590580, + "isDeleted": false, + "id": "F32Cx-9pck7KytU4wRBJH", + "fillStyle": "hachure", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "angle": 0, + "x": 2507.0877030784027, + "y": 403.1085474116693, + "strokeColor": "#1e1e1e", + "backgroundColor": "#2f9e44", + "width": 434.8992912583358, + "height": 188.1294539409627, + "seed": 15557493, + "groupIds": [], + "frameId": null, + "roundness": { + "type": 2 + }, + "boundElements": [], + "updated": 1695715456177, + "link": null, + "locked": false, + "startBinding": { + "elementId": "cByu9Zs8ftWD84fzLqCb2", + "focus": 0.18641009024862026, + "gap": 5.506232821122126 + }, + "endBinding": { + "elementId": "efcQM54D8Yfp6DIrPKPzO", + "gap": 10.138131862508658, + "focus": -0.26758960996683867 + }, + "lastCommittedPoint": null, + "startArrowhead": null, + "endArrowhead": "arrow", + "points": [ + [ + 0, + 0 + ], + [ + -47.32935061825765, + -23.90801675731052 + ], + [ + -393.09040208819806, + -22.62574588687255 + ], + [ + -434.8992912583358, + -188.1294539409627 + ] + ] + }, + { + "type": "rectangle", + "version": 1272, + "versionNonce": 2100193292, + "isDeleted": false, + "id": "jzHffd4Y3hpCVS4-r7099", + "fillStyle": "hachure", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "angle": 0, + "x": 2440.3360665410755, + "y": 223.78801989238704, + "strokeColor": "#1e1e1e", + "backgroundColor": "#2f9e44", + "width": 128.46047995939227, + "height": 116.29053584326857, + "seed": 88127093, + "groupIds": [ + "A8lljxBE1t_sdG_8gKREG" + ], + "frameId": null, + "roundness": { + "type": 3 + }, + "boundElements": [], + "updated": 1695715456177, + "link": null, + "locked": false + }, + { + "type": "text", + "version": 1229, + "versionNonce": 22343348, + "isDeleted": false, + "id": "AHEsnhErGOeJ2_u41E811", + "fillStyle": "hachure", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "angle": 0, + "x": 2451.018577169642, + "y": 249.48010350435814, + "strokeColor": "#1e1e1e", + "backgroundColor": "transparent", + "width": 107.23332977294922, + "height": 64.90636861932636, + "seed": 1093410773, + "groupIds": [ + "A8lljxBE1t_sdG_8gKREG" + ], + "frameId": null, + "roundness": null, + "boundElements": [ + { + "id": "yVqkGScPYA4mcMIYCN1fF", + "type": "arrow" + } + ], + "updated": 1695715456177, + "link": null, + "locked": false, + "fontSize": 25.962547447730543, + "fontFamily": 1, + "text": "L2 block\n(Tier 2)", + "textAlign": "center", + "verticalAlign": "middle", + "containerId": null, + "originalText": "L2 block\n(Tier 2)", + "lineHeight": 1.25, + "baseline": 56 + }, + { + "type": "rectangle", + "version": 1420, + "versionNonce": 498960012, + "isDeleted": false, + "id": "4wJli-YdDyW6UhrMR2c91", + "fillStyle": "hachure", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "angle": 0, + "x": 2933.569164030544, + "y": 229.88544979461471, + "strokeColor": "#1e1e1e", + "backgroundColor": "#ffec99", + "width": 128.46047995939227, + "height": 116.29053584326857, + "seed": 1578309205, + "groupIds": [ + "dcVPX_EgDjjdHvFbkOXUl" + ], + "frameId": null, + "roundness": { + "type": 3 + }, + "boundElements": [ + { + "id": "UzJ_Nrsm-YC6l9hQaBQYe", + "type": "arrow" + }, + { + "id": "aU-knkYW7UzPVFBrgNOMJ", + "type": "arrow" + } + ], + "updated": 1695715456177, + "link": null, + "locked": false + }, + { + "type": "text", + "version": 1356, + "versionNonce": 1269626932, + "isDeleted": false, + "id": "6rwFz2EdI58JeDNNb4Wv8", + "fillStyle": "hachure", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "angle": 0, + "x": 2944.2516746591104, + "y": 271.80412556141744, + "strokeColor": "#1e1e1e", + "backgroundColor": "#ffec99", + "width": 107.12255831943664, + "height": 32.45318430966318, + "seed": 879199157, + "groupIds": [ + "dcVPX_EgDjjdHvFbkOXUl" + ], + "frameId": null, + "roundness": null, + "boundElements": [ + { + "id": "UzJ_Nrsm-YC6l9hQaBQYe", + "type": "arrow" + } + ], + "updated": 1695715456177, + "link": null, + "locked": false, + "fontSize": 25.962547447730543, + "fontFamily": 1, + "text": "L2 block", + "textAlign": "center", + "verticalAlign": "middle", + "containerId": null, + "originalText": "L2 block", + "lineHeight": 1.25, + "baseline": 23 + }, + { + "type": "rectangle", + "version": 1303, + "versionNonce": 1273287948, + "isDeleted": false, + "id": "m9SoCKU4iWKA2w5uqJnhb", + "fillStyle": "hachure", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "angle": 0, + "x": 2601.3292662781364, + "y": 225.16553156522917, + "strokeColor": "#1e1e1e", + "backgroundColor": "#ffc9c9", + "width": 128.46047995939227, + "height": 116.29053584326857, + "seed": 680683765, + "groupIds": [ + "UbxVlAm6xExTt2TucCLTj" + ], + "frameId": null, + "roundness": { + "type": 3 + }, + "boundElements": [], + "updated": 1695715456177, + "link": null, + "locked": false + }, + { + "type": "text", + "version": 1258, + "versionNonce": 1900532148, + "isDeleted": false, + "id": "C0buE4cVI01Pq5sznAVDf", + "fillStyle": "hachure", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "angle": 0, + "x": 2612.0117769067033, + "y": 250.8576151772003, + "strokeColor": "#1e1e1e", + "backgroundColor": "#ffc9c9", + "width": 107.23332977294922, + "height": 64.90636861932636, + "seed": 614695509, + "groupIds": [ + "UbxVlAm6xExTt2TucCLTj" + ], + "frameId": null, + "roundness": null, + "boundElements": [ + { + "id": "yVqkGScPYA4mcMIYCN1fF", + "type": "arrow" + }, + { + "id": "Q8-5k1wcmzqxx5N5RQIFu", + "type": "arrow" + } + ], + "updated": 1695715456177, + "link": null, + "locked": false, + "fontSize": 25.962547447730543, + "fontFamily": 1, + "text": "L2 block\n(Tier 1)", + "textAlign": "center", + "verticalAlign": "middle", + "containerId": null, + "originalText": "L2 block\n(Tier 1)", + "lineHeight": 1.25, + "baseline": 56 + }, + { + "type": "arrow", + "version": 1046, + "versionNonce": 85873548, + "isDeleted": false, + "id": "yVqkGScPYA4mcMIYCN1fF", + "fillStyle": "hachure", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "angle": 0, + "x": 2566.691351249741, + "y": 279.1607177415986, + "strokeColor": "#1e1e1e", + "backgroundColor": "#2f9e44", + "width": 36.4707446434727, + "height": 5.36812808900936, + "seed": 1562406267, + "groupIds": [], + "frameId": null, + "roundness": { + "type": 2 + }, + "boundElements": [], + "updated": 1695715456177, + "link": null, + "locked": false, + "startBinding": { + "elementId": "AHEsnhErGOeJ2_u41E811", + "focus": 0.15767664137179951, + "gap": 8.439444307149415 + }, + "endBinding": { + "elementId": "C0buE4cVI01Pq5sznAVDf", + "focus": 0.46381510986533486, + "gap": 8.849681013489544 + }, + "lastCommittedPoint": null, + "startArrowhead": null, + "endArrowhead": null, + "points": [ + [ + 0, + 0 + ], + [ + 36.4707446434727, + -5.36812808900936 + ] + ] + }, + { + "type": "arrow", + "version": 1247, + "versionNonce": 558594868, + "isDeleted": false, + "id": "Q8-5k1wcmzqxx5N5RQIFu", + "fillStyle": "hachure", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "angle": 0, + "x": 2734.5456846332754, + "y": 274.24689773110896, + "strokeColor": "#1e1e1e", + "backgroundColor": "#2f9e44", + "width": 36.055070897097266, + "height": 1.8825479950643853, + "seed": 251946427, + "groupIds": [], + "frameId": null, + "roundness": { + "type": 2 + }, + "boundElements": [], + "updated": 1695715456177, + "link": null, + "locked": false, + "startBinding": { + "elementId": "C0buE4cVI01Pq5sznAVDf", + "focus": -0.35918511546659376, + "gap": 15.300577953623133 + }, + "endBinding": { + "elementId": "HvpHJP7nDZIbcXwCAFlNK", + "focus": 0.18571838443750383, + "gap": 9.48742549714757 + }, + "lastCommittedPoint": null, + "startArrowhead": null, + "endArrowhead": null, + "points": [ + [ + 0, + 0 + ], + [ + 36.055070897097266, + 1.8825479950643853 + ] + ] + }, + { + "type": "rectangle", + "version": 1338, + "versionNonce": 128188940, + "isDeleted": false, + "id": "nVQZyrsWjzR2utI1E6Q6-", + "fillStyle": "hachure", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "angle": 0, + "x": 2769.4056703989536, + "y": 227.82611010176637, + "strokeColor": "#1e1e1e", + "backgroundColor": "transparent", + "width": 128.46047995939227, + "height": 116.29053584326857, + "seed": 1943978875, + "groupIds": [ + "H84YVEOHNW_eKY8hD9mKz" + ], + "frameId": null, + "roundness": { + "type": 3 + }, + "boundElements": [], + "updated": 1695715456177, + "link": null, + "locked": false + }, + { + "type": "text", + "version": 1299, + "versionNonce": 907932852, + "isDeleted": false, + "id": "HvpHJP7nDZIbcXwCAFlNK", + "fillStyle": "hachure", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "angle": 0, + "x": 2780.08818102752, + "y": 253.51819371373747, + "strokeColor": "#1e1e1e", + "backgroundColor": "transparent", + "width": 107.23332977294922, + "height": 64.90636861932636, + "seed": 1808702491, + "groupIds": [ + "H84YVEOHNW_eKY8hD9mKz" + ], + "frameId": null, + "roundness": null, + "boundElements": [ + { + "id": "UzJ_Nrsm-YC6l9hQaBQYe", + "type": "arrow" + }, + { + "id": "Q8-5k1wcmzqxx5N5RQIFu", + "type": "arrow" + } + ], + "updated": 1695715456177, + "link": null, + "locked": false, + "fontSize": 25.962547447730543, + "fontFamily": 1, + "text": "L2 block\n(Tier 3)", + "textAlign": "center", + "verticalAlign": "middle", + "containerId": null, + "originalText": "L2 block\n(Tier 3)", + "lineHeight": 1.25, + "baseline": 56 + }, + { + "type": "arrow", + "version": 1354, + "versionNonce": 980410508, + "isDeleted": false, + "id": "UzJ_Nrsm-YC6l9hQaBQYe", + "fillStyle": "hachure", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "angle": 0, + "x": 2895.7609551076175, + "y": 286.3638189115255, + "strokeColor": "#1e1e1e", + "backgroundColor": "#2f9e44", + "width": 36.470744643473154, + "height": 3.2146639367665557, + "seed": 205499899, + "groupIds": [], + "frameId": null, + "roundness": { + "type": 2 + }, + "boundElements": [], + "updated": 1695715456177, + "link": null, + "locked": false, + "startBinding": { + "elementId": "HvpHJP7nDZIbcXwCAFlNK", + "focus": 0.15767664137179638, + "gap": 8.439444307148506 + }, + "endBinding": { + "elementId": "6rwFz2EdI58JeDNNb4Wv8", + "focus": 0.5089887668999546, + "gap": 12.019974908019549 + }, + "lastCommittedPoint": null, + "startArrowhead": null, + "endArrowhead": null, + "points": [ + [ + 0, + 0 + ], + [ + 36.470744643473154, + -3.2146639367665557 + ] + ] + }, + { + "type": "text", + "version": 3579, + "versionNonce": 1298480692, + "isDeleted": false, + "id": "bdZQMvQ1sjASdst3r0uyd", + "fillStyle": "solid", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "angle": 0, + "x": 2379.9557915296136, + "y": 406.7888107330388, + "strokeColor": "#000000", + "backgroundColor": "white", + "width": 698.5833129882812, + "height": 60.137808187470995, + "seed": 942252155, + "groupIds": [ + "7jrbh2uQQB7zk_kcRqei-", + "ofFgYW_jtjRtl_pPhgbQr", + "oEsnaEcaZ5Vp6fDsbhyQp", + "GffTxAsddidEIKqZ-VJhm", + "5QhtdQlssBT7GZU5DUcQD" + ], + "frameId": null, + "roundness": null, + "boundElements": [], + "updated": 1695715456177, + "link": null, + "locked": false, + "fontSize": 24.055123274988397, + "fontFamily": 1, + "text": "during transactions, a default tier is assigned\nto each block based on the block metadata hash", + "textAlign": "center", + "verticalAlign": "top", + "containerId": null, + "originalText": "during transactions, a default tier is assigned\nto each block based on the block metadata hash", + "lineHeight": 1.25, + "baseline": 52 + }, + { + "type": "ellipse", + "version": 280, + "versionNonce": 356249356, + "isDeleted": false, + "id": "4KrJuF8UlhRTL1HGUxAHw", + "fillStyle": "solid", + "strokeWidth": 2, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "angle": 0, + "x": 1488.0404306999649, + "y": -84.98208752880353, + "strokeColor": "#343a40", + "backgroundColor": "transparent", + "width": 170.6531025222111, + "height": 170.6531025222111, + "seed": 1381091408, + "groupIds": [ + "x7cchDE-C9K68RMduQ_1p" + ], + "frameId": null, + "roundness": null, + "boundElements": [], + "updated": 1695715456177, + "link": null, + "locked": false + }, + { + "type": "line", + "version": 435, + "versionNonce": 1611093940, + "isDeleted": false, + "id": "uRuaGy98HzAODJltxo-uz", + "fillStyle": "hachure", + "strokeWidth": 2, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "angle": 0, + "x": 1544.278168774625, + "y": -74.75661941746979, + "strokeColor": "#343a40", + "backgroundColor": "#b2f2bb", + "width": 94.35427511466963, + "height": 151.43278722107468, + "seed": 462700112, + "groupIds": [ + "x7cchDE-C9K68RMduQ_1p" + ], + "frameId": null, + "roundness": null, + "boundElements": [], + "updated": 1695715456177, + "link": null, + "locked": false, + "startBinding": null, + "endBinding": null, + "lastCommittedPoint": null, + "startArrowhead": null, + "endArrowhead": null, + "points": [ + [ + 0, + 0 + ], + [ + 36.693329211260476, + 78.62856259555802 + ], + [ + -17.47301391012398, + 146.1908830480375 + ], + [ + -39.02306439927686, + 129.3003029349176 + ], + [ + -50.08930654235544, + 107.16781864876056 + ], + [ + -57.66094590340916, + 77.46369500154977 + ], + [ + -55.91364451239676, + 50.67174033935961 + ], + [ + -33.19872642923555, + 14.56084492510337 + ], + [ + -19.220315301136388, + 3.4946027820248187 + ], + [ + -2.329735188016509, + -5.241904173037172 + ], + [ + 0, + 0 + ] + ] + }, + { + "type": "line", + "version": 1242, + "versionNonce": 142749068, + "isDeleted": false, + "id": "GpuB48HbLbCKzHcY_CoDk", + "fillStyle": "hachure", + "strokeWidth": 2, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "angle": 2.1087983467176876, + "x": 1594.3542114509262, + "y": -103.08351054279403, + "strokeColor": "#343a40", + "backgroundColor": "#ffc9c9", + "width": 84.22504232327424, + "height": 143.55165671241798, + "seed": 1155132592, + "groupIds": [ + "cgeGUo-mTn_i9EcHxEprO" + ], + "frameId": null, + "roundness": null, + "boundElements": [], + "updated": 1695715456177, + "link": null, + "locked": false, + "startBinding": null, + "endBinding": null, + "lastCommittedPoint": null, + "startArrowhead": null, + "endArrowhead": null, + "points": [ + [ + 0, + 0 + ], + [ + 44.687293286974594, + 62.60484680343589 + ], + [ + -6.850721365767328, + 139.85238069575604 + ], + [ + -28.43773694248003, + 110.82999007219436 + ], + [ + -34.075311170346666, + 91.76013318612269 + ], + [ + -39.537749036299644, + 67.09941892408546 + ], + [ + -35.95988090417034, + 50.91885893927241 + ], + [ + -24.134992252369802, + 22.20651555833768 + ], + [ + -14.064833206418594, + 9.871247668731803 + ], + [ + -5.72975816360281, + 2.6388097462654274 + ], + [ + 5.44501471567946, + -3.6992760166619485 + ] + ] + }, + { + "type": "text", + "version": 513, + "versionNonce": 1512718644, + "isDeleted": false, + "id": "SiGv8WXwnQoJ-NWt9M078", + "fillStyle": "hachure", + "strokeWidth": 2, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "angle": 0, + "x": 1502.083441820922, + "y": -153.30691467385768, + "strokeColor": "#1e1e1e", + "backgroundColor": "#b2f2bb", + "width": 349.6000061035156, + "height": 45, + "seed": 456088240, + "groupIds": [], + "frameId": null, + "roundness": null, + "boundElements": [], + "updated": 1695715456177, + "link": null, + "locked": false, + "fontSize": 36, + "fontFamily": 1, + "text": "Example Tier Config", + "textAlign": "center", + "verticalAlign": "top", + "containerId": null, + "originalText": "Example Tier Config", + "lineHeight": 1.25, + "baseline": 32 + }, + { + "type": "text", + "version": 137, + "versionNonce": 1702665228, + "isDeleted": false, + "id": "B_4Pj4i144iUrK4E3OIqZ", + "fillStyle": "hachure", + "strokeWidth": 4, + "strokeStyle": "dotted", + "roughness": 1, + "opacity": 100, + "angle": 0, + "x": 1574.4563697958752, + "y": -49.48048603760022, + "strokeColor": "#e03131", + "backgroundColor": "#ffc9c9", + "width": 63.53333282470703, + "height": 35, + "seed": 312318128, + "groupIds": [], + "frameId": null, + "roundness": null, + "boundElements": [], + "updated": 1695715456177, + "link": null, + "locked": false, + "fontSize": 28, + "fontFamily": 1, + "text": "25%", + "textAlign": "left", + "verticalAlign": "top", + "containerId": null, + "originalText": "25%", + "lineHeight": 1.25, + "baseline": 25 + }, + { + "type": "text", + "version": 184, + "versionNonce": 859044532, + "isDeleted": false, + "id": "C-tbQCltM-kF8yOBD6x2h", + "fillStyle": "hachure", + "strokeWidth": 4, + "strokeStyle": "dotted", + "roughness": 1, + "opacity": 100, + "angle": 0, + "x": 1498.7923854934627, + "y": -19.95403520493815, + "strokeColor": "#2f9e44", + "backgroundColor": "#ffc9c9", + "width": 62.66666793823242, + "height": 35, + "seed": 2029944912, + "groupIds": [], + "frameId": null, + "roundness": null, + "boundElements": [], + "updated": 1695715456177, + "link": null, + "locked": false, + "fontSize": 28, + "fontFamily": 1, + "text": "35%", + "textAlign": "left", + "verticalAlign": "top", + "containerId": null, + "originalText": "35%", + "lineHeight": 1.25, + "baseline": 25 + }, + { + "type": "text", + "version": 122, + "versionNonce": 1176844940, + "isDeleted": false, + "id": "EdhJs_wXf3v-R6jvW-H5a", + "fillStyle": "hachure", + "strokeWidth": 4, + "strokeStyle": "dotted", + "roughness": 1, + "opacity": 100, + "angle": 0, + "x": 1571.204716618834, + "y": 21.933363622872264, + "strokeColor": "#1e1e1e", + "backgroundColor": "#ffc9c9", + "width": 63.483333587646484, + "height": 35, + "seed": 1928067152, + "groupIds": [], + "frameId": null, + "roundness": null, + "boundElements": [], + "updated": 1695715456177, + "link": null, + "locked": false, + "fontSize": 28, + "fontFamily": 1, + "text": "40%", + "textAlign": "left", + "verticalAlign": "top", + "containerId": null, + "originalText": "40%", + "lineHeight": 1.25, + "baseline": 25 + }, + { + "type": "text", + "version": 380, + "versionNonce": 97158196, + "isDeleted": false, + "id": "s5Gtczck1Jwau4QPZNxjo", + "fillStyle": "hachure", + "strokeWidth": 4, + "strokeStyle": "dotted", + "roughness": 1, + "opacity": 100, + "angle": 0, + "x": 1667.941398635815, + "y": -82.29368925752661, + "strokeColor": "#1e1e1e", + "backgroundColor": "#ffc9c9", + "width": 608.9666748046875, + "height": 140, + "seed": 1608367696, + "groupIds": [], + "frameId": null, + "roundness": null, + "boundElements": [], + "updated": 1695715456177, + "link": null, + "locked": false, + "fontSize": 28, + "fontFamily": 1, + "text": "Blocks:\n\n\n- 40% by default is tier3 (SGX + PSE ZK)", + "textAlign": "left", + "verticalAlign": "top", + "containerId": null, + "originalText": "Blocks:\n\n\n- 40% by default is tier3 (SGX + PSE ZK)", + "lineHeight": 1.25, + "baseline": 130 + }, + { + "type": "text", + "version": 88, + "versionNonce": 1966475532, + "isDeleted": false, + "id": "sPzxHGEaEgi1m1MfzC4Dp", + "fillStyle": "hachure", + "strokeWidth": 4, + "strokeStyle": "dotted", + "roughness": 1, + "opacity": 100, + "angle": 0, + "x": 1668.2285397909588, + "y": -49.71313057086513, + "strokeColor": "#e03131", + "backgroundColor": "#ffc9c9", + "width": 640.683349609375, + "height": 35, + "seed": 1831466672, + "groupIds": [], + "frameId": null, + "roundness": null, + "boundElements": [], + "updated": 1695715456177, + "link": null, + "locked": false, + "fontSize": 28, + "fontFamily": 1, + "text": "- 25% by default is tier1 (e.g.: optimistic-only)", + "textAlign": "left", + "verticalAlign": "top", + "containerId": null, + "originalText": "- 25% by default is tier1 (e.g.: optimistic-only)", + "lineHeight": 1.25, + "baseline": 25 + }, + { + "type": "text", + "version": 103, + "versionNonce": 668196276, + "isDeleted": false, + "id": "_5DFTwd0ZEBj0O5pTmI_v", + "fillStyle": "hachure", + "strokeWidth": 4, + "strokeStyle": "dotted", + "roughness": 1, + "opacity": 100, + "angle": 0, + "x": 1665.84341800412, + "y": -12.743742874863074, + "strokeColor": "#2f9e44", + "backgroundColor": "#ffc9c9", + "width": 581.7166748046875, + "height": 35, + "seed": 184081072, + "groupIds": [], + "frameId": null, + "roundness": null, + "boundElements": [], + "updated": 1695715456177, + "link": null, + "locked": false, + "fontSize": 28, + "fontFamily": 1, + "text": "- 35% by default is tier2 (e.g.: SGX-only)", + "textAlign": "left", + "verticalAlign": "top", + "containerId": null, + "originalText": "- 35% by default is tier2 (e.g.: SGX-only)", + "lineHeight": 1.25, + "baseline": 25 + }, + { + "type": "text", + "version": 217, + "versionNonce": 1445529484, + "isDeleted": false, + "id": "xKM88Nq1ytnmLvMktxl0C", + "fillStyle": "hachure", + "strokeWidth": 4, + "strokeStyle": "dotted", + "roughness": 1, + "opacity": 100, + "angle": 0, + "x": 1485.7667230977877, + "y": 98.16442021314282, + "strokeColor": "#1e1e1e", + "backgroundColor": "#ffc9c9", + "width": 773.7999877929688, + "height": 70, + "seed": 1997367984, + "groupIds": [], + "frameId": null, + "roundness": null, + "boundElements": [], + "updated": 1695715456177, + "link": null, + "locked": false, + "fontSize": 28, + "fontFamily": 1, + "text": "These % are tunable. Can be 100% optimistic, or 100%\nZK multiproof system - can be viewn as a spectrum.", + "textAlign": "left", + "verticalAlign": "top", + "containerId": null, + "originalText": "These % are tunable. Can be 100% optimistic, or 100%\nZK multiproof system - can be viewn as a spectrum.", + "lineHeight": 1.25, + "baseline": 60 + }, + { + "type": "rectangle", + "version": 1998, + "versionNonce": 1115031348, + "isDeleted": false, + "id": "efcQM54D8Yfp6DIrPKPzO", + "fillStyle": "hachure", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 50, + "angle": 0, + "x": 1442.3105824087286, + "y": -170.6925246194582, + "strokeColor": "#1e1e1e", + "backgroundColor": "#f783ac", + "width": 894.913201491354, + "height": 375.5334862276561, + "seed": 467050576, + "groupIds": [ + "kU2J-unZh7Mpu6Y8k8Akq", + "7pgpuJdEBwirv-AqaAj0m", + "2Yi1RCQmQMEl3-3dMz6EM", + "UL0URVcq0f17kLKmwcwWR" + ], + "frameId": null, + "roundness": { + "type": 3 + }, + "boundElements": [ + { + "id": "yVqkGScPYA4mcMIYCN1fF", + "type": "arrow" + }, + { + "id": "F32Cx-9pck7KytU4wRBJH", + "type": "arrow" + }, + { + "id": "KmaHjIkt2YFnsnyuvF0nV", + "type": "arrow" + } + ], + "updated": 1695715456177, + "link": null, + "locked": false + }, + { + "type": "text", + "version": 255, + "versionNonce": 1295529484, + "isDeleted": false, + "id": "cByu9Zs8ftWD84fzLqCb2", + "fillStyle": "hachure", + "strokeWidth": 4, + "strokeStyle": "dotted", + "roughness": 1, + "opacity": 100, + "angle": 0, + "x": 2456.248625658454, + "y": 408.6147802327914, + "strokeColor": "#e03131", + "backgroundColor": "transparent", + "width": 138.01666259765625, + "height": 25, + "seed": 1599317072, + "groupIds": [], + "frameId": null, + "roundness": null, + "boundElements": [ + { + "id": "F32Cx-9pck7KytU4wRBJH", + "type": "arrow" + } + ], + "updated": 1695715456177, + "link": null, + "locked": false, + "fontSize": 20, + "fontFamily": 1, + "text": "proposeBlock()", + "textAlign": "left", + "verticalAlign": "top", + "containerId": null, + "originalText": "proposeBlock()", + "lineHeight": 1.25, + "baseline": 18 + }, + { + "type": "rectangle", + "version": 1614, + "versionNonce": 1779892404, + "isDeleted": false, + "id": "sXL3ipYh2_B69duVETeQh", + "fillStyle": "hachure", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "angle": 0, + "x": 3351.044565179036, + "y": 707.2256637521441, + "strokeColor": "#1e1e1e", + "backgroundColor": "#ffc9c9", + "width": 695, + "height": 145, + "seed": 902350928, + "groupIds": [ + "0-egUerTIK5fYm-r10H--", + "crqa42msZ4FxJggKKtesn" + ], + "frameId": null, + "roundness": { + "type": 3 + }, + "boundElements": [ + { + "type": "text", + "id": "_fSozebcRAK20jgcHzTk8" + } + ], + "updated": 1695715456177, + "link": null, + "locked": false + }, + { + "type": "text", + "version": 1643, + "versionNonce": 660444300, + "isDeleted": false, + "id": "_fSozebcRAK20jgcHzTk8", + "fillStyle": "hachure", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "angle": 0, + "x": 3356.044565179036, + "y": 754.5093067437749, + "strokeColor": "#1e1e1e", + "backgroundColor": "#ffc9c9", + "width": 112.23332977294922, + "height": 50.43271401673809, + "seed": 2016099920, + "groupIds": [ + "0-egUerTIK5fYm-r10H--", + "crqa42msZ4FxJggKKtesn" + ], + "frameId": null, + "roundness": null, + "boundElements": [], + "updated": 1695715456177, + "link": null, + "locked": false, + "fontSize": 40.34617121339047, + "fontFamily": 1, + "text": "Tier 1", + "textAlign": "left", + "verticalAlign": "middle", + "containerId": "sXL3ipYh2_B69duVETeQh", + "originalText": "Tier 1", + "lineHeight": 1.25, + "baseline": 35 + }, + { + "type": "rectangle", + "version": 1736, + "versionNonce": 912050740, + "isDeleted": false, + "id": "RyzH9IR4JgcsNKEbRhv2X", + "fillStyle": "hachure", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "angle": 0, + "x": 3500.4194582741275, + "y": 509.6039708146433, + "strokeColor": "#1e1e1e", + "backgroundColor": "#b2f2bb", + "width": 553, + "height": 145, + "seed": 740527184, + "groupIds": [ + "puvlXxyzgJDH-8Y_sQrFj", + "qj574APRz7tJuVR7zsez6" + ], + "frameId": null, + "roundness": { + "type": 3 + }, + "boundElements": [ + { + "type": "text", + "id": "7j4zCnxelCpeXIaMqQjgS" + } + ], + "updated": 1695715456177, + "link": null, + "locked": false + }, + { + "type": "text", + "version": 1728, + "versionNonce": 39002892, + "isDeleted": false, + "id": "7j4zCnxelCpeXIaMqQjgS", + "fillStyle": "hachure", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "angle": 0, + "x": 3505.4194582741275, + "y": 556.8876138062742, + "strokeColor": "#1e1e1e", + "backgroundColor": "#b2f2bb", + "width": 130.0833282470703, + "height": 50.43271401673809, + "seed": 1586332240, + "groupIds": [ + "puvlXxyzgJDH-8Y_sQrFj", + "qj574APRz7tJuVR7zsez6" + ], + "frameId": null, + "roundness": null, + "boundElements": [], + "updated": 1695715456177, + "link": null, + "locked": false, + "fontSize": 40.34617121339047, + "fontFamily": 1, + "text": "Tier 2", + "textAlign": "left", + "verticalAlign": "middle", + "containerId": "RyzH9IR4JgcsNKEbRhv2X", + "originalText": "Tier 2", + "lineHeight": 1.25, + "baseline": 35 + }, + { + "type": "rectangle", + "version": 1894, + "versionNonce": 1512924084, + "isDeleted": false, + "id": "q6EYXWepq-Gp7QWsnx__0", + "fillStyle": "hachure", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "angle": 0, + "x": 3675.592438406772, + "y": 322.7335616485067, + "strokeColor": "#1e1e1e", + "backgroundColor": "transparent", + "width": 374, + "height": 145, + "seed": 1130274896, + "groupIds": [ + "x5ASvTSIrBjzqUhAj6gtR", + "9yJ5hRXROVNOBgN1JJXuD" + ], + "frameId": null, + "roundness": { + "type": 3 + }, + "boundElements": [ + { + "type": "text", + "id": "DROO3cawt75uDKfWLCJvr" + } + ], + "updated": 1695715456177, + "link": null, + "locked": false + }, + { + "type": "text", + "version": 1852, + "versionNonce": 882041228, + "isDeleted": false, + "id": "DROO3cawt75uDKfWLCJvr", + "fillStyle": "hachure", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "angle": 0, + "x": 3680.592438406772, + "y": 370.0172046401376, + "strokeColor": "#1e1e1e", + "backgroundColor": "transparent", + "width": 128.8333282470703, + "height": 50.43271401673809, + "seed": 88479312, + "groupIds": [ + "x5ASvTSIrBjzqUhAj6gtR", + "9yJ5hRXROVNOBgN1JJXuD" + ], + "frameId": null, + "roundness": null, + "boundElements": [], + "updated": 1695715456177, + "link": null, + "locked": false, + "fontSize": 40.34617121339047, + "fontFamily": 1, + "text": "Tier 3", + "textAlign": "left", + "verticalAlign": "middle", + "containerId": "q6EYXWepq-Gp7QWsnx__0", + "originalText": "Tier 3", + "lineHeight": 1.25, + "baseline": 35 + }, + { + "type": "text", + "version": 5454, + "versionNonce": 1001311540, + "isDeleted": false, + "id": "wvOcAGUR3SyB-mCViIbeU", + "fillStyle": "solid", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "angle": 0, + "x": 3231.9878182727193, + "y": 876.0786870289667, + "strokeColor": "#000000", + "backgroundColor": "white", + "width": 1084.449951171875, + "height": 245, + "seed": 490365104, + "groupIds": [ + "uKYv3NfWQc9uan64K3UWr", + "SdFSlmce5KvtsrDNfTVZx", + "RzQnH5YsDRUINzMCtmjil", + "fXWG9LnQAahyk0-3eQOze", + "lmu6qp8hYBeEODaa7RRFl" + ], + "frameId": null, + "roundness": null, + "boundElements": [], + "updated": 1695715456177, + "link": null, + "locked": false, + "fontSize": 28, + "fontFamily": 1, + "text": "1. A block (when proposed) gets a default tier (e.g.: Tier 1)\n2. During proofWindow, prover needs to submit the corresponding proof type\n3. It can either be accepted (e.g. noone says otherwise) or contested \n(by submitting a 'contest' transaction)\n4. If accepted, it could get verified\n5. If contested, it requires a higher level (=higher security) tier proof.\nIt would also make sense to configure that Tier N is the subset of Tier N+1", + "textAlign": "left", + "verticalAlign": "top", + "containerId": null, + "originalText": "1. A block (when proposed) gets a default tier (e.g.: Tier 1)\n2. During proofWindow, prover needs to submit the corresponding proof type\n3. It can either be accepted (e.g. noone says otherwise) or contested \n(by submitting a 'contest' transaction)\n4. If accepted, it could get verified\n5. If contested, it requires a higher level (=higher security) tier proof.\nIt would also make sense to configure that Tier N is the subset of Tier N+1", + "lineHeight": 1.25, + "baseline": 235 + }, + { + "type": "rectangle", + "version": 1477, + "versionNonce": 894881804, + "isDeleted": false, + "id": "Ds5iMPmDrzHsur4aHmxON", + "fillStyle": "hachure", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 60, + "angle": 0, + "x": 3130.842621736754, + "y": 222.08908845586132, + "strokeColor": "#f08c00", + "backgroundColor": "#ffec99", + "width": 1261, + "height": 932, + "seed": 474476624, + "groupIds": [ + "wfPY9eitN-ZXmva6W1ExQ", + "PQejzudNpSVHkicrcLUnY" + ], + "frameId": null, + "roundness": { + "type": 3 + }, + "boundElements": [ + { + "type": "text", + "id": "EBwTdcvSVVMkLK7v3oDZs" + }, + { + "id": "m3tXOoVlXpC7hiLxjSLPh", + "type": "arrow" + } + ], + "updated": 1695715456177, + "link": null, + "locked": false + }, + { + "type": "text", + "version": 1743, + "versionNonce": 205981364, + "isDeleted": false, + "id": "EBwTdcvSVVMkLK7v3oDZs", + "fillStyle": "hachure", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 60, + "angle": 0, + "x": 3585.200959139098, + "y": 227.08908845586132, + "strokeColor": "#1e1e1e", + "backgroundColor": "#ffec99", + "width": 352.2833251953125, + "height": 45, + "seed": 344286800, + "groupIds": [ + "wfPY9eitN-ZXmva6W1ExQ", + "PQejzudNpSVHkicrcLUnY" + ], + "frameId": null, + "roundness": null, + "boundElements": [], + "updated": 1695715456177, + "link": null, + "locked": false, + "fontSize": 36, + "fontFamily": 1, + "text": "Proving / contesting", + "textAlign": "center", + "verticalAlign": "top", + "containerId": "Ds5iMPmDrzHsur4aHmxON", + "originalText": "Proving / contesting", + "lineHeight": 1.25, + "baseline": 32 + }, + { + "type": "text", + "version": 108, + "versionNonce": 77131404, + "isDeleted": false, + "id": "7vdANAM_ZUZpFOwKFOwEA", + "fillStyle": "hachure", + "strokeWidth": 2, + "strokeStyle": "dotted", + "roughness": 1, + "opacity": 100, + "angle": 0, + "x": 2039.83062654506, + "y": 467.85442705031755, + "strokeColor": "#1e1e1e", + "backgroundColor": "#ffec99", + "width": 286.0333251953125, + "height": 45, + "seed": 37147728, + "groupIds": [], + "frameId": null, + "roundness": null, + "boundElements": [], + "updated": 1695715456177, + "link": null, + "locked": false, + "fontSize": 36, + "fontFamily": 1, + "text": "1. proposeBlock()", + "textAlign": "left", + "verticalAlign": "top", + "containerId": null, + "originalText": "1. proposeBlock()", + "lineHeight": 1.25, + "baseline": 32 + }, + { + "type": "ellipse", + "version": 155, + "versionNonce": 1620840500, + "isDeleted": false, + "id": "t2wQd7_pDedqKBVMKRNUQ", + "fillStyle": "hachure", + "strokeWidth": 2, + "strokeStyle": "dotted", + "roughness": 1, + "opacity": 100, + "angle": 0, + "x": 2018.047858624882, + "y": 461.6307790731239, + "strokeColor": "#1e1e1e", + "backgroundColor": "#ffec99", + "width": 56.012831794744436, + "height": 54.456919800445796, + "seed": 1282687568, + "groupIds": [], + "frameId": null, + "roundness": null, + "boundElements": [], + "updated": 1695715456177, + "link": null, + "locked": false + }, + { + "type": "text", + "version": 181, + "versionNonce": 320027916, + "isDeleted": false, + "id": "xBZselJwCZHp0ahWNBm_i", + "fillStyle": "hachure", + "strokeWidth": 2, + "strokeStyle": "dotted", + "roughness": 1, + "opacity": 100, + "angle": 0, + "x": 2378.9519057409093, + "y": -1.1369379771570074, + "strokeColor": "#1e1e1e", + "backgroundColor": "#ffec99", + "width": 484.6833190917969, + "height": 90, + "seed": 1537512624, + "groupIds": [], + "frameId": null, + "roundness": null, + "boundElements": [], + "updated": 1695715456177, + "link": null, + "locked": false, + "fontSize": 36, + "fontFamily": 1, + "text": "2. TierConfig contract will \nassign a default tier", + "textAlign": "left", + "verticalAlign": "top", + "containerId": null, + "originalText": "2. TierConfig contract will \nassign a default tier", + "lineHeight": 1.25, + "baseline": 77 + }, + { + "type": "ellipse", + "version": 179, + "versionNonce": 1217653172, + "isDeleted": false, + "id": "tY8NLLPznt8ReSh-_DLWd", + "fillStyle": "hachure", + "strokeWidth": 2, + "strokeStyle": "dotted", + "roughness": 1, + "opacity": 100, + "angle": 0, + "x": 2361.836873803626, + "y": -7.3605859543506575, + "strokeColor": "#1e1e1e", + "backgroundColor": "#ffec99", + "width": 56.012831794744436, + "height": 54.456919800445796, + "seed": 495877808, + "groupIds": [], + "frameId": null, + "roundness": null, + "boundElements": [], + "updated": 1695715456177, + "link": null, + "locked": false + }, + { + "type": "text", + "version": 842, + "versionNonce": 708819852, + "isDeleted": false, + "id": "8MFaH2nUCNYHntensmhSG", + "fillStyle": "hachure", + "strokeWidth": 2, + "strokeStyle": "dotted", + "roughness": 1, + "opacity": 100, + "angle": 0, + "x": 3044.357653990362, + "y": 90.0053615239583, + "strokeColor": "#1e1e1e", + "backgroundColor": "#ffec99", + "width": 955.8666381835938, + "height": 90, + "seed": 12316240, + "groupIds": [], + "frameId": null, + "roundness": null, + "boundElements": [], + "updated": 1695715456177, + "link": null, + "locked": false, + "fontSize": 36, + "fontFamily": 1, + "text": "3. Proving / contesting and then verifying is according\nto this logic", + "textAlign": "left", + "verticalAlign": "top", + "containerId": null, + "originalText": "3. Proving / contesting and then verifying is according\nto this logic", + "lineHeight": 1.25, + "baseline": 77 + }, + { + "type": "ellipse", + "version": 391, + "versionNonce": 1733595956, + "isDeleted": false, + "id": "aNLKF83kuHVzSg_g24maE", + "fillStyle": "hachure", + "strokeWidth": 2, + "strokeStyle": "dotted", + "roughness": 1, + "opacity": 100, + "angle": 0, + "x": 3035.0221820245706, + "y": 76.00215357527236, + "strokeColor": "#1e1e1e", + "backgroundColor": "#ffec99", + "width": 51.345095811849404, + "height": 56.21723207982154, + "seed": 97100880, + "groupIds": [], + "frameId": null, + "roundness": null, + "boundElements": [], + "updated": 1695715456177, + "link": null, + "locked": false + }, + { + "type": "text", + "version": 135, + "versionNonce": 1415080460, + "isDeleted": false, + "id": "yWYBQghajGVIEabUEZloM", + "fillStyle": "hachure", + "strokeWidth": 2, + "strokeStyle": "dotted", + "roughness": 1, + "opacity": 100, + "angle": 0, + "x": 4171.235282294936, + "y": 790.0443111236111, + "strokeColor": "#1e1e1e", + "backgroundColor": "#ffec99", + "width": 199.21665954589844, + "height": 45, + "seed": 1496237744, + "groupIds": [], + "frameId": null, + "roundness": null, + "boundElements": [], + "updated": 1695715456177, + "link": null, + "locked": false, + "fontSize": 36, + "fontFamily": 1, + "text": "less secure", + "textAlign": "left", + "verticalAlign": "top", + "containerId": null, + "originalText": "less secure", + "lineHeight": 1.25, + "baseline": 32 + }, + { + "type": "text", + "version": 213, + "versionNonce": 189009076, + "isDeleted": false, + "id": "6ZftDNKMzjWw6bVmb7-qg", + "fillStyle": "hachure", + "strokeWidth": 2, + "strokeStyle": "dotted", + "roughness": 1, + "opacity": 100, + "angle": 0, + "x": 4168.093496168491, + "y": 347.4480726630262, + "strokeColor": "#1e1e1e", + "backgroundColor": "#ffec99", + "width": 208.86666870117188, + "height": 45, + "seed": 2016307280, + "groupIds": [], + "frameId": null, + "roundness": null, + "boundElements": [], + "updated": 1695715456177, + "link": null, + "locked": false, + "fontSize": 36, + "fontFamily": 1, + "text": "more secure", + "textAlign": "left", + "verticalAlign": "top", + "containerId": null, + "originalText": "more secure", + "lineHeight": 1.25, + "baseline": 32 + }, + { + "type": "arrow", + "version": 101, + "versionNonce": 1146570892, + "isDeleted": false, + "id": "Euqj9Cc8TkeSbouIWBO-A", + "fillStyle": "hachure", + "strokeWidth": 2, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "angle": 0, + "x": 4113.666538505894, + "y": 819.606639015282, + "strokeColor": "#1e1e1e", + "backgroundColor": "#ffec99", + "width": 0, + "height": 451.2144783465541, + "seed": 126317648, + "groupIds": [], + "frameId": null, + "roundness": null, + "boundElements": [], + "updated": 1695715456178, + "link": null, + "locked": false, + "startBinding": null, + "endBinding": null, + "lastCommittedPoint": null, + "startArrowhead": null, + "endArrowhead": "arrow", + "points": [ + [ + 0, + 0 + ], + [ + 0, + -451.2144783465541 + ] + ] + }, + { + "type": "arrow", + "version": 1600, + "versionNonce": 1174951476, + "isDeleted": false, + "id": "aU-knkYW7UzPVFBrgNOMJ", + "fillStyle": "hachure", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "angle": 0, + "x": 3015.508225919625, + "y": 117.9871292037545, + "strokeColor": "#1e1e1e", + "backgroundColor": "#f783ac", + "width": 19.119122025730576, + "height": 85.94275342512344, + "seed": 297599568, + "groupIds": [ + "g9Mzssin2tWojtpagJBA_", + "1WD350dLLur4GFFwu4OIw" + ], + "frameId": null, + "roundness": { + "type": 2 + }, + "boundElements": [], + "updated": 1695715456178, + "link": null, + "locked": false, + "startBinding": null, + "endBinding": { + "elementId": "4wJli-YdDyW6UhrMR2c91", + "focus": -0.08771553330069409, + "gap": 25.955567165736767 + }, + "lastCommittedPoint": null, + "startArrowhead": null, + "endArrowhead": "arrow", + "points": [ + [ + 0, + 0 + ], + [ + -17.430587325729903, + 54.360120183366945 + ], + [ + -19.119122025730576, + 85.94275342512344 + ] + ] + }, + { + "type": "arrow", + "version": 1757, + "versionNonce": 1039554316, + "isDeleted": false, + "id": "m3tXOoVlXpC7hiLxjSLPh", + "fillStyle": "hachure", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "angle": 0, + "x": 3290.531696716588, + "y": 156.8987029285782, + "strokeColor": "#1e1e1e", + "backgroundColor": "#f783ac", + "width": 131.80434142122022, + "height": 51.71268955055723, + "seed": 1027870288, + "groupIds": [ + "IHNUxZyeQpSbTKFO6MmMu", + "5MV3a5T06rzBSiQ7FYb4x" + ], + "frameId": null, + "roundness": { + "type": 2 + }, + "boundElements": [], + "updated": 1695715456178, + "link": null, + "locked": false, + "startBinding": null, + "endBinding": { + "elementId": "Ds5iMPmDrzHsur4aHmxON", + "focus": -0.16587278663259167, + "gap": 13.47769597672584 + }, + "lastCommittedPoint": null, + "startArrowhead": null, + "endArrowhead": "arrow", + "points": [ + [ + 0, + 0 + ], + [ + 113.26602019534084, + 7.682760354412977 + ], + [ + 131.80434142122022, + 51.71268955055723 + ] + ] + }, + { + "type": "rectangle", + "version": 931, + "versionNonce": 920074764, + "isDeleted": false, + "id": "W3_v5ePcXAv-_hUCdeWrm", + "fillStyle": "hachure", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "angle": 0, + "x": 2398.495659864208, + "y": 1902.1684139700578, + "strokeColor": "#c92a2a", + "backgroundColor": "#1864ab", + "width": 144.90469360351562, + "height": 79.2421875, + "seed": 267051532, + "groupIds": [], + "frameId": null, + "roundness": { + "type": 3 + }, + "boundElements": [ + { + "type": "text", + "id": "ZHdqoq9xD2scfeQRoZQ0p" + }, + { + "id": "7yTCQAkWl_ebhm5vKLXnQ", + "type": "arrow" + } + ], + "updated": 1695716399265, + "link": null, + "locked": false + }, + { + "type": "text", + "version": 816, + "versionNonce": 243013772, + "isDeleted": false, + "id": "ZHdqoq9xD2scfeQRoZQ0p", + "fillStyle": "hachure", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "angle": 0, + "x": 2437.298005140087, + "y": 1929.2895077200578, + "strokeColor": "#c92a2a", + "backgroundColor": "transparent", + "width": 67.30000305175781, + "height": 25, + "seed": 1457176716, + "groupIds": [], + "frameId": null, + "roundness": null, + "boundElements": [], + "updated": 1695716399265, + "link": null, + "locked": false, + "fontSize": 20, + "fontFamily": 1, + "text": "PROOF", + "textAlign": "center", + "verticalAlign": "middle", + "containerId": "W3_v5ePcXAv-_hUCdeWrm", + "originalText": "PROOF", + "lineHeight": 1.25, + "baseline": 18 + }, + { + "type": "rectangle", + "version": 863, + "versionNonce": 184624908, + "isDeleted": false, + "id": "IpW3MsIAyu15ONS2Z73eh", + "fillStyle": "hachure", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "angle": 0, + "x": 2355.673314851345, + "y": 2564.05084022861, + "strokeColor": "#495057", + "backgroundColor": "#868e96", + "width": 163, + "height": 71, + "seed": 558550796, + "groupIds": [], + "frameId": null, + "roundness": { + "type": 3 + }, + "boundElements": [ + { + "type": "text", + "id": "ii25nGnyihZqRwEveKJ3d" + }, + { + "id": "PbEVYPOxP4yq15vqhm8Wa", + "type": "arrow" + } + ], + "updated": 1695716399265, + "link": null, + "locked": false + }, + { + "type": "text", + "version": 1287, + "versionNonce": 14706060, + "isDeleted": false, + "id": "ii25nGnyihZqRwEveKJ3d", + "fillStyle": "hachure", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "angle": 0, + "x": 2388.1233156142844, + "y": 2587.05084022861, + "strokeColor": "#e03131", + "backgroundColor": "transparent", + "width": 98.0999984741211, + "height": 25, + "seed": 1874136460, + "groupIds": [], + "frameId": null, + "roundness": null, + "boundElements": [], + "updated": 1695716399265, + "link": null, + "locked": false, + "fontSize": 20, + "fontFamily": 1, + "text": "CONTEST", + "textAlign": "center", + "verticalAlign": "middle", + "containerId": "IpW3MsIAyu15ONS2Z73eh", + "originalText": "CONTEST", + "lineHeight": 1.25, + "baseline": 18 + }, + { + "type": "line", + "version": 590, + "versionNonce": 1985311372, + "isDeleted": false, + "id": "bgm_-N1FyrYZHbIkXYpb-", + "fillStyle": "hachure", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "angle": 0, + "x": 2249.446380841872, + "y": 1648.609115640994, + "strokeColor": "#000000", + "backgroundColor": "#1864ab", + "width": 0, + "height": 54.23905944824219, + "seed": 592673804, + "groupIds": [ + "olv6tJnNf4o0yJEDw4uYF" + ], + "frameId": null, + "roundness": { + "type": 2 + }, + "boundElements": [], + "updated": 1695716399265, + "link": null, + "locked": false, + "startBinding": null, + "endBinding": null, + "lastCommittedPoint": null, + "startArrowhead": null, + "endArrowhead": null, + "points": [ + [ + 0, + 0 + ], + [ + 0, + 54.23905944824219 + ] + ] + }, + { + "type": "line", + "version": 657, + "versionNonce": 580862220, + "isDeleted": false, + "id": "dS_lilCa_U2hk1KS6EPG1", + "fillStyle": "hachure", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "angle": 0, + "x": 2250.7776186348406, + "y": 1677.0528870032988, + "strokeColor": "#000000", + "backgroundColor": "#1864ab", + "width": 323.26873779296875, + "height": 0, + "seed": 1713379980, + "groupIds": [ + "olv6tJnNf4o0yJEDw4uYF" + ], + "frameId": null, + "roundness": { + "type": 2 + }, + "boundElements": [], + "updated": 1695716399265, + "link": null, + "locked": false, + "startBinding": null, + "endBinding": null, + "lastCommittedPoint": null, + "startArrowhead": null, + "endArrowhead": null, + "points": [ + [ + 0, + 0 + ], + [ + 323.26873779296875, + 0 + ] + ] + }, + { + "type": "line", + "version": 689, + "versionNonce": 1907048332, + "isDeleted": false, + "id": "YVjeH_ihrNvgZCOpaG7DL", + "fillStyle": "hachure", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "angle": 0, + "x": 2574.9123765628324, + "y": 1650.4085098783933, + "strokeColor": "#000000", + "backgroundColor": "#1864ab", + "width": 0, + "height": 54.23905944824219, + "seed": 315943180, + "groupIds": [ + "olv6tJnNf4o0yJEDw4uYF" + ], + "frameId": null, + "roundness": { + "type": 2 + }, + "boundElements": [], + "updated": 1695716399265, + "link": null, + "locked": false, + "startBinding": null, + "endBinding": null, + "lastCommittedPoint": null, + "startArrowhead": null, + "endArrowhead": null, + "points": [ + [ + 0, + 0 + ], + [ + 0, + 54.23905944824219 + ] + ] + }, + { + "type": "text", + "version": 552, + "versionNonce": 733179404, + "isDeleted": false, + "id": "ZrKJq-4fokJNReBwAgiFS", + "fillStyle": "hachure", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "angle": 0, + "x": 2304.6557924629656, + "y": 1632.2716217445097, + "strokeColor": "#000000", + "backgroundColor": "#1864ab", + "width": 235.01666259765625, + "height": 25, + "seed": 485222284, + "groupIds": [ + "olv6tJnNf4o0yJEDw4uYF" + ], + "frameId": null, + "roundness": null, + "boundElements": [], + "updated": 1695716399265, + "link": null, + "locked": false, + "fontSize": 20, + "fontFamily": 1, + "text": "provingWindow, t= X mins", + "textAlign": "left", + "verticalAlign": "top", + "containerId": null, + "originalText": "provingWindow, t= X mins", + "lineHeight": 1.25, + "baseline": 18 + }, + { + "type": "rectangle", + "version": 1863, + "versionNonce": 28429452, + "isDeleted": false, + "id": "_Zng2mX2WXNEvbYimXBzN", + "fillStyle": "hachure", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "angle": 0, + "x": 2001.984721540924, + "y": 1699.105807860039, + "strokeColor": "#1e1e1e", + "backgroundColor": "#ffc9c9", + "width": 249.57159107050327, + "height": 116.29053584326857, + "seed": 168576012, + "groupIds": [ + "ws_OXz2CZ5PkbPVZu_ltR" + ], + "frameId": null, + "roundness": { + "type": 3 + }, + "boundElements": [], + "updated": 1695716399265, + "link": null, + "locked": false + }, + { + "type": "text", + "version": 1825, + "versionNonce": 1969249036, + "isDeleted": false, + "id": "PJvji1HQ4ojhVs2Jmyq6S", + "fillStyle": "hachure", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "angle": 0, + "x": 2070.4450099472688, + "y": 1705.9090025831213, + "strokeColor": "#1e1e1e", + "backgroundColor": "#ffc9c9", + "width": 107.23332977294922, + "height": 64.90636861932636, + "seed": 176153228, + "groupIds": [ + "ws_OXz2CZ5PkbPVZu_ltR" + ], + "frameId": null, + "roundness": null, + "boundElements": [], + "updated": 1695716399265, + "link": null, + "locked": false, + "fontSize": 25.962547447730543, + "fontFamily": 1, + "text": "L2 block\n(Tier 1)", + "textAlign": "center", + "verticalAlign": "middle", + "containerId": null, + "originalText": "L2 block\n(Tier 1)", + "lineHeight": 1.25, + "baseline": 56 + }, + { + "type": "text", + "version": 994, + "versionNonce": 561982516, + "isDeleted": false, + "id": "psCmkqiBqdvGVfTiZO24-", + "fillStyle": "hachure", + "strokeWidth": 2, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "angle": 0, + "x": 2376.9912999917724, + "y": 1237.635890747546, + "strokeColor": "#1e1e1e", + "backgroundColor": "#b2f2bb", + "width": 769.4500122070312, + "height": 164.97534976868928, + "seed": 1962022156, + "groupIds": [], + "frameId": null, + "roundness": null, + "boundElements": [], + "updated": 1695716857354, + "link": null, + "locked": false, + "fontSize": 65.99013990747571, + "fontFamily": 1, + "text": "Life-cycle of a block\n in a tier-based system", + "textAlign": "center", + "verticalAlign": "top", + "containerId": null, + "originalText": "Life-cycle of a block\n in a tier-based system", + "lineHeight": 1.25, + "baseline": 141 + }, + { + "id": "Y6dk31cxGkr4zvgh9IleQ", + "type": "text", + "x": 2031.7827549727383, + "y": 1774.4778346155013, + "width": 198.5, + "height": 45, + "angle": 0, + "strokeColor": "#e03131", + "backgroundColor": "#ffec99", + "fillStyle": "hachure", + "strokeWidth": 2, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "groupIds": [ + "ws_OXz2CZ5PkbPVZu_ltR" + ], + "frameId": null, + "roundness": null, + "seed": 1006093876, + "version": 209, + "versionNonce": 1081477132, + "isDeleted": false, + "boundElements": null, + "updated": 1695716399265, + "link": null, + "locked": false, + "text": "PROPOSED", + "fontSize": 36, + "fontFamily": 1, + "textAlign": "left", + "verticalAlign": "top", + "baseline": 32, + "containerId": null, + "originalText": "PROPOSED", + "lineHeight": 1.25 + }, + { + "id": "7yTCQAkWl_ebhm5vKLXnQ", + "type": "arrow", + "x": 2387.023039399381, + "y": 1893.0517050016163, + "width": 1.375301448726077, + "height": 201.68878735478756, + "angle": 0, + "strokeColor": "#e03131", + "backgroundColor": "#ffec99", + "fillStyle": "hachure", + "strokeWidth": 2, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "groupIds": [], + "frameId": null, + "roundness": null, + "seed": 95150260, + "version": 1368, + "versionNonce": 785958708, + "isDeleted": false, + "boundElements": null, + "updated": 1695716399720, + "link": null, + "locked": false, + "points": [ + [ + 0, + 0 + ], + [ + 1.375301448726077, + -201.68878735478756 + ] + ], + "lastCommittedPoint": null, + "startBinding": { + "elementId": "YJ67Qx9ePCt345iSwD4aT", + "focus": 0.8279175874347067, + "gap": 27.581372629713997 + }, + "endBinding": null, + "startArrowhead": null, + "endArrowhead": "arrow" + }, + { + "id": "YJ67Qx9ePCt345iSwD4aT", + "type": "text", + "x": 2029.8404966618182, + "y": 1920.6330776313303, + "width": 389.75, + "height": 125, + "angle": 0, + "strokeColor": "#1e1e1e", + "backgroundColor": "#ffec99", + "fillStyle": "hachure", + "strokeWidth": 2, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "groupIds": [], + "frameId": null, + "roundness": null, + "seed": 1189742644, + "version": 304, + "versionNonce": 1506047244, + "isDeleted": false, + "boundElements": [ + { + "id": "7yTCQAkWl_ebhm5vKLXnQ", + "type": "arrow" + } + ], + "updated": 1695716399265, + "link": null, + "locked": false, + "text": "Within proofWindow the assigned\nprover submits a proof\nOR\nOutside of the original proofWindow any\nprover can submit a proof", + "fontSize": 20, + "fontFamily": 1, + "textAlign": "left", + "verticalAlign": "top", + "baseline": 118, + "containerId": null, + "originalText": "Within proofWindow the assigned\nprover submits a proof\nOR\nOutside of the original proofWindow any\nprover can submit a proof", + "lineHeight": 1.25 + }, + { + "type": "rectangle", + "version": 2248, + "versionNonce": 438018572, + "isDeleted": false, + "id": "En-UyK2VsIVpQDi1ZrJcJ", + "fillStyle": "hachure", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "angle": 0, + "x": 2573.9029873971426, + "y": 1708.7495147901695, + "strokeColor": "#1e1e1e", + "backgroundColor": "#ffc9c9", + "width": 249.57159107050327, + "height": 116.29053584326857, + "seed": 61139724, + "groupIds": [ + "AFPl3gQ5gw-RR-IYcGtg6" + ], + "frameId": null, + "roundness": { + "type": 3 + }, + "boundElements": [], + "updated": 1695716399265, + "link": null, + "locked": false + }, + { + "type": "text", + "version": 2208, + "versionNonce": 1559462028, + "isDeleted": false, + "id": "WbGXAJ1vgJFET_Ab6rwHk", + "fillStyle": "hachure", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "angle": 0, + "x": 2642.3632758034873, + "y": 1715.5527095132516, + "strokeColor": "#1e1e1e", + "backgroundColor": "#ffc9c9", + "width": 107.23332977294922, + "height": 64.90636861932636, + "seed": 946579852, + "groupIds": [ + "AFPl3gQ5gw-RR-IYcGtg6" + ], + "frameId": null, + "roundness": null, + "boundElements": [], + "updated": 1695716399265, + "link": null, + "locked": false, + "fontSize": 25.962547447730543, + "fontFamily": 1, + "text": "L2 block\n(Tier 1)", + "textAlign": "center", + "verticalAlign": "middle", + "containerId": null, + "originalText": "L2 block\n(Tier 1)", + "lineHeight": 1.25, + "baseline": 56 + }, + { + "type": "text", + "version": 665, + "versionNonce": 1716227852, + "isDeleted": false, + "id": "V-EdKPxhzIJYxRhiTEXSp", + "fillStyle": "hachure", + "strokeWidth": 2, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "angle": 0, + "x": 2627.8347218799568, + "y": 1780.6738699669177, + "strokeColor": "#e03131", + "backgroundColor": "#ffc9c9", + "width": 145.3000030517578, + "height": 45, + "seed": 1389795340, + "groupIds": [ + "AFPl3gQ5gw-RR-IYcGtg6" + ], + "frameId": null, + "roundness": null, + "boundElements": [], + "updated": 1695716399265, + "link": null, + "locked": false, + "fontSize": 36, + "fontFamily": 1, + "text": "PROVED", + "textAlign": "left", + "verticalAlign": "top", + "containerId": null, + "originalText": "PROVED", + "lineHeight": 1.25, + "baseline": 32 + }, + { + "id": "Gan6eZTUQVDndpzq-cpMD", + "type": "text", + "x": 2664.2120671452517, + "y": 1839.612795531544, + "width": 44.900001525878906, + "height": 25, + "angle": 0, + "strokeColor": "#1e1e1e", + "backgroundColor": "#ffec99", + "fillStyle": "hachure", + "strokeWidth": 2, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "groupIds": [], + "frameId": null, + "roundness": null, + "seed": 367283596, + "version": 267, + "versionNonce": 1453182348, + "isDeleted": false, + "boundElements": null, + "updated": 1695716399265, + "link": null, + "locked": false, + "text": "BUT", + "fontSize": 20, + "fontFamily": 1, + "textAlign": "left", + "verticalAlign": "top", + "baseline": 18, + "containerId": null, + "originalText": "BUT", + "lineHeight": 1.25 + }, + { + "id": "IRlTPEMr4jUkYnUIBOzLk", + "type": "text", + "x": 2664.2120671452517, + "y": 1874.612795531544, + "width": 151.21665954589844, + "height": 25, + "angle": 0, + "strokeColor": "#e03131", + "backgroundColor": "#ffec99", + "fillStyle": "hachure", + "strokeWidth": 2, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "groupIds": [], + "frameId": null, + "roundness": null, + "seed": 1668948276, + "version": 279, + "versionNonce": 790903820, + "isDeleted": false, + "boundElements": null, + "updated": 1695716399265, + "link": null, + "locked": false, + "text": "CONTESTABLE", + "fontSize": 20, + "fontFamily": 1, + "textAlign": "left", + "verticalAlign": "top", + "baseline": 18, + "containerId": null, + "originalText": "CONTESTABLE", + "lineHeight": 1.25 + }, + { + "id": "JqII0b524uy6ru3nZ0nq0", + "type": "text", + "x": 2664.2120671452517, + "y": 1909.612795531544, + "width": 83.01667022705078, + "height": 25, + "angle": 0, + "strokeColor": "#1e1e1e", + "backgroundColor": "#ffec99", + "fillStyle": "hachure", + "strokeWidth": 2, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "groupIds": [], + "frameId": null, + "roundness": null, + "seed": 1100659724, + "version": 267, + "versionNonce": 970513036, + "isDeleted": false, + "boundElements": null, + "updated": 1695716399265, + "link": null, + "locked": false, + "text": "DURING", + "fontSize": 20, + "fontFamily": 1, + "textAlign": "left", + "verticalAlign": "top", + "baseline": 18, + "containerId": null, + "originalText": "DURING", + "lineHeight": 1.25 + }, + { + "id": "jv8H6fks280MquSM7MQ_o", + "type": "text", + "x": 2664.2120671452517, + "y": 1944.612795531544, + "width": 111.81666564941406, + "height": 25, + "angle": 0, + "strokeColor": "#1e1e1e", + "backgroundColor": "#ffec99", + "fillStyle": "hachure", + "strokeWidth": 2, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "groupIds": [], + "frameId": null, + "roundness": null, + "seed": 1200085684, + "version": 267, + "versionNonce": 1903536396, + "isDeleted": false, + "boundElements": null, + "updated": 1695716399265, + "link": null, + "locked": false, + "text": "COOLDOWN", + "fontSize": 20, + "fontFamily": 1, + "textAlign": "left", + "verticalAlign": "top", + "baseline": 18, + "containerId": null, + "originalText": "COOLDOWN", + "lineHeight": 1.25 + }, + { + "type": "line", + "version": 817, + "versionNonce": 1769252748, + "isDeleted": false, + "id": "OE2ivzUmlTplt31YlyeO9", + "fillStyle": "hachure", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "angle": 0, + "x": 2822.063351499893, + "y": 1652.6549557256915, + "strokeColor": "#000000", + "backgroundColor": "#1864ab", + "width": 0, + "height": 54.23905944824219, + "seed": 1586191884, + "groupIds": [ + "N9FnvsLaaRcKylwFGRPXy" + ], + "frameId": null, + "roundness": { + "type": 2 + }, + "boundElements": [], + "updated": 1695716399265, + "link": null, + "locked": false, + "startBinding": null, + "endBinding": null, + "lastCommittedPoint": null, + "startArrowhead": null, + "endArrowhead": null, + "points": [ + [ + 0, + 0 + ], + [ + 0, + 54.23905944824219 + ] + ] + }, + { + "type": "line", + "version": 884, + "versionNonce": 907007500, + "isDeleted": false, + "id": "l7nhDqTTHDUxoz0styv9A", + "fillStyle": "hachure", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "angle": 0, + "x": 2823.394589292862, + "y": 1681.0987270879962, + "strokeColor": "#000000", + "backgroundColor": "#1864ab", + "width": 323.26873779296875, + "height": 0, + "seed": 1946926220, + "groupIds": [ + "N9FnvsLaaRcKylwFGRPXy" + ], + "frameId": null, + "roundness": { + "type": 2 + }, + "boundElements": [], + "updated": 1695716399265, + "link": null, + "locked": false, + "startBinding": null, + "endBinding": null, + "lastCommittedPoint": null, + "startArrowhead": null, + "endArrowhead": null, + "points": [ + [ + 0, + 0 + ], + [ + 323.26873779296875, + 0 + ] + ] + }, + { + "type": "line", + "version": 916, + "versionNonce": 1413559436, + "isDeleted": false, + "id": "PqLL5oeZ-b-ykfCXOT5ME", + "fillStyle": "hachure", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "angle": 0, + "x": 3147.5293472208537, + "y": 1654.4543499630906, + "strokeColor": "#000000", + "backgroundColor": "#1864ab", + "width": 0, + "height": 54.23905944824219, + "seed": 1727810316, + "groupIds": [ + "N9FnvsLaaRcKylwFGRPXy" + ], + "frameId": null, + "roundness": { + "type": 2 + }, + "boundElements": [], + "updated": 1695716399265, + "link": null, + "locked": false, + "startBinding": null, + "endBinding": null, + "lastCommittedPoint": null, + "startArrowhead": null, + "endArrowhead": null, + "points": [ + [ + 0, + 0 + ], + [ + 0, + 54.23905944824219 + ] + ] + }, + { + "type": "text", + "version": 787, + "versionNonce": 297976588, + "isDeleted": false, + "id": "1VyR6MYjo6py3m8eMW5eL", + "fillStyle": "hachure", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "angle": 0, + "x": 2877.272763120987, + "y": 1636.317461829207, + "strokeColor": "#000000", + "backgroundColor": "#1864ab", + "width": 189.43333435058594, + "height": 25, + "seed": 2044135820, + "groupIds": [ + "N9FnvsLaaRcKylwFGRPXy" + ], + "frameId": null, + "roundness": null, + "boundElements": [], + "updated": 1695716399265, + "link": null, + "locked": false, + "fontSize": 20, + "fontFamily": 1, + "text": "cooldown, t= X mins", + "textAlign": "left", + "verticalAlign": "top", + "containerId": null, + "originalText": "cooldown, t= X mins", + "lineHeight": 1.25, + "baseline": 18 + }, + { + "type": "text", + "version": 1049, + "versionNonce": 1963884940, + "isDeleted": false, + "id": "1TQoSBg-HQXlCvxVXBR08", + "fillStyle": "hachure", + "strokeWidth": 2, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "angle": 0, + "x": 2476.704660226854, + "y": 1488.0785160050832, + "strokeColor": "#1e1e1e", + "backgroundColor": "#b2f2bb", + "width": 495.6833190917969, + "height": 82.48767488434464, + "seed": 504400820, + "groupIds": [], + "frameId": null, + "roundness": null, + "boundElements": [], + "updated": 1695716399265, + "link": null, + "locked": false, + "fontSize": 65.99013990747571, + "fontFamily": 1, + "text": "(non-contested)", + "textAlign": "center", + "verticalAlign": "top", + "containerId": null, + "originalText": "(non-contested)", + "lineHeight": 1.25, + "baseline": 58 + }, + { + "id": "hef_E9ZWq6UQ6kMUZ8sdx", + "type": "line", + "x": 2976.0050897376077, + "y": 1710.6118053527275, + "width": 28, + "height": 43, + "angle": 0, + "strokeColor": "#e03131", + "backgroundColor": "#ffec99", + "fillStyle": "hachure", + "strokeWidth": 2, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "groupIds": [ + "usEy4KbQ1MtVO6aLC4h4m" + ], + "frameId": null, + "roundness": null, + "seed": 1758300468, + "version": 364, + "versionNonce": 626946060, + "isDeleted": false, + "boundElements": null, + "updated": 1695716399265, + "link": null, + "locked": false, + "points": [ + [ + 0, + 0 + ], + [ + 28, + 43 + ] + ], + "lastCommittedPoint": null, + "startBinding": null, + "endBinding": null, + "startArrowhead": null, + "endArrowhead": null + }, + { + "type": "line", + "version": 421, + "versionNonce": 1387040396, + "isDeleted": false, + "id": "94azFbvBdk7hDgft6Nm73", + "fillStyle": "hachure", + "strokeWidth": 2, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "angle": 0, + "x": 3001.8932229039583, + "y": 1708.8611851477247, + "strokeColor": "#e03131", + "backgroundColor": "#ffec99", + "width": 25, + "height": 46, + "seed": 1271766580, + "groupIds": [ + "RonTGeN5sU0YyebMb79Er", + "usEy4KbQ1MtVO6aLC4h4m" + ], + "frameId": null, + "roundness": null, + "boundElements": [], + "updated": 1695716399265, + "link": null, + "locked": false, + "startBinding": null, + "endBinding": null, + "lastCommittedPoint": null, + "startArrowhead": null, + "endArrowhead": null, + "points": [ + [ + 0, + 0 + ], + [ + -25, + 46 + ] + ] + }, + { + "id": "Gh_-zmYLo_1y4jSLL5Im0", + "type": "text", + "x": 2924.260228902227, + "y": 1773.1510443457585, + "width": 147.6666717529297, + "height": 25, + "angle": 0, + "strokeColor": "#e03131", + "backgroundColor": "#ffec99", + "fillStyle": "hachure", + "strokeWidth": 2, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "groupIds": [ + "RonTGeN5sU0YyebMb79Er", + "usEy4KbQ1MtVO6aLC4h4m" + ], + "frameId": null, + "roundness": null, + "seed": 1906449716, + "version": 281, + "versionNonce": 498261260, + "isDeleted": false, + "boundElements": null, + "updated": 1695716399265, + "link": null, + "locked": false, + "text": "NO CONTESTS", + "fontSize": 20, + "fontFamily": 1, + "textAlign": "left", + "verticalAlign": "top", + "baseline": 18, + "containerId": null, + "originalText": "NO CONTESTS", + "lineHeight": 1.25 + }, + { + "type": "rectangle", + "version": 2350, + "versionNonce": 2146130828, + "isDeleted": false, + "id": "nj3dPGcL_xjfpng6afSsJ", + "fillStyle": "hachure", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "angle": 0, + "x": 3152.490912110842, + "y": 1698.5895888408313, + "strokeColor": "#1e1e1e", + "backgroundColor": "#ffec99", + "width": 249.57159107050327, + "height": 116.29053584326857, + "seed": 1368432524, + "groupIds": [ + "W8Hl1tkoiBw1N8L5WcuX3" + ], + "frameId": null, + "roundness": { + "type": 3 + }, + "boundElements": [], + "updated": 1695716399265, + "link": null, + "locked": false + }, + { + "type": "text", + "version": 2309, + "versionNonce": 865077772, + "isDeleted": false, + "id": "Qdvh0H9ui7u9feW6bEo1m", + "fillStyle": "hachure", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "angle": 0, + "x": 3220.9512005171873, + "y": 1705.3927835639133, + "strokeColor": "#1e1e1e", + "backgroundColor": "#ffc9c9", + "width": 107.23332977294922, + "height": 64.90636861932636, + "seed": 669830668, + "groupIds": [ + "W8Hl1tkoiBw1N8L5WcuX3" + ], + "frameId": null, + "roundness": null, + "boundElements": [], + "updated": 1695716399265, + "link": null, + "locked": false, + "fontSize": 25.962547447730543, + "fontFamily": 1, + "text": "L2 block\n(Tier 1)", + "textAlign": "center", + "verticalAlign": "middle", + "containerId": null, + "originalText": "L2 block\n(Tier 1)", + "lineHeight": 1.25, + "baseline": 56 + }, + { + "type": "text", + "version": 814, + "versionNonce": 463136908, + "isDeleted": false, + "id": "vfmmegn47cgf2q-OOwjhP", + "fillStyle": "hachure", + "strokeWidth": 2, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "angle": 0, + "x": 3166.4226465936563, + "y": 1770.7639440175794, + "strokeColor": "#e03131", + "backgroundColor": "#ffec99", + "width": 222.8000030517578, + "height": 45, + "seed": 1874799756, + "groupIds": [ + "W8Hl1tkoiBw1N8L5WcuX3" + ], + "frameId": null, + "roundness": null, + "boundElements": [], + "updated": 1695716399265, + "link": null, + "locked": false, + "fontSize": 36, + "fontFamily": 1, + "text": "VERIFIABLE", + "textAlign": "left", + "verticalAlign": "top", + "containerId": null, + "originalText": "VERIFIABLE", + "lineHeight": 1.25, + "baseline": 32 + }, + { + "type": "rectangle", + "version": 1422, + "versionNonce": 734394124, + "isDeleted": false, + "id": "bmQeQ6gjmUwfDbbXpB3zk", + "fillStyle": "hachure", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "angle": 0, + "x": 1772.9144082431358, + "y": 2576.9134007552107, + "strokeColor": "#c92a2a", + "backgroundColor": "#1864ab", + "width": 144.90469360351562, + "height": 79.2421875, + "seed": 1999811468, + "groupIds": [], + "frameId": null, + "roundness": { + "type": 3 + }, + "boundElements": [ + { + "type": "text", + "id": "L62GTiRPvyu72SBWVSRqt" + }, + { + "id": "J_7UL51wKU0ZM0X7iRsWY", + "type": "arrow" + } + ], + "updated": 1695716399265, + "link": null, + "locked": false + }, + { + "type": "text", + "version": 1307, + "versionNonce": 1351300492, + "isDeleted": false, + "id": "L62GTiRPvyu72SBWVSRqt", + "fillStyle": "hachure", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "angle": 0, + "x": 1811.7167535190147, + "y": 2604.0344945052107, + "strokeColor": "#c92a2a", + "backgroundColor": "transparent", + "width": 67.30000305175781, + "height": 25, + "seed": 2016174604, + "groupIds": [], + "frameId": null, + "roundness": null, + "boundElements": [], + "updated": 1695716399265, + "link": null, + "locked": false, + "fontSize": 20, + "fontFamily": 1, + "text": "PROOF", + "textAlign": "center", + "verticalAlign": "middle", + "containerId": "bmQeQ6gjmUwfDbbXpB3zk", + "originalText": "PROOF", + "lineHeight": 1.25, + "baseline": 18 + }, + { + "type": "line", + "version": 1081, + "versionNonce": 1462019084, + "isDeleted": false, + "id": "c9KZIZkgucBiukAECb0IK", + "fillStyle": "hachure", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "angle": 0, + "x": 1623.8651292207994, + "y": 2323.354102426147, + "strokeColor": "#000000", + "backgroundColor": "#1864ab", + "width": 0, + "height": 54.23905944824219, + "seed": 988561548, + "groupIds": [ + "jYo8-ZeDUh3ucBwFYg_Hm" + ], + "frameId": null, + "roundness": { + "type": 2 + }, + "boundElements": [], + "updated": 1695716399265, + "link": null, + "locked": false, + "startBinding": null, + "endBinding": null, + "lastCommittedPoint": null, + "startArrowhead": null, + "endArrowhead": null, + "points": [ + [ + 0, + 0 + ], + [ + 0, + 54.23905944824219 + ] + ] + }, + { + "type": "line", + "version": 1148, + "versionNonce": 1435255436, + "isDeleted": false, + "id": "8d2hiUn03F0LAPVIoQV75", + "fillStyle": "hachure", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "angle": 0, + "x": 1625.1963670137682, + "y": 2351.797873788452, + "strokeColor": "#000000", + "backgroundColor": "#1864ab", + "width": 323.26873779296875, + "height": 0, + "seed": 120344332, + "groupIds": [ + "jYo8-ZeDUh3ucBwFYg_Hm" + ], + "frameId": null, + "roundness": { + "type": 2 + }, + "boundElements": [], + "updated": 1695716399265, + "link": null, + "locked": false, + "startBinding": null, + "endBinding": null, + "lastCommittedPoint": null, + "startArrowhead": null, + "endArrowhead": null, + "points": [ + [ + 0, + 0 + ], + [ + 323.26873779296875, + 0 + ] + ] + }, + { + "type": "line", + "version": 1180, + "versionNonce": 310120716, + "isDeleted": false, + "id": "tK8RIdGxrWZK6cTfHZyo1", + "fillStyle": "hachure", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "angle": 0, + "x": 1949.3311249417602, + "y": 2325.153496663546, + "strokeColor": "#000000", + "backgroundColor": "#1864ab", + "width": 0, + "height": 54.23905944824219, + "seed": 493260172, + "groupIds": [ + "jYo8-ZeDUh3ucBwFYg_Hm" + ], + "frameId": null, + "roundness": { + "type": 2 + }, + "boundElements": [], + "updated": 1695716399265, + "link": null, + "locked": false, + "startBinding": null, + "endBinding": null, + "lastCommittedPoint": null, + "startArrowhead": null, + "endArrowhead": null, + "points": [ + [ + 0, + 0 + ], + [ + 0, + 54.23905944824219 + ] + ] + }, + { + "type": "text", + "version": 1043, + "versionNonce": 1835929484, + "isDeleted": false, + "id": "1BWcsLYovlqqoYseX1Iiy", + "fillStyle": "hachure", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "angle": 0, + "x": 1679.0745408418932, + "y": 2307.016608529663, + "strokeColor": "#000000", + "backgroundColor": "#1864ab", + "width": 235.01666259765625, + "height": 25, + "seed": 517274636, + "groupIds": [ + "jYo8-ZeDUh3ucBwFYg_Hm" + ], + "frameId": null, + "roundness": null, + "boundElements": [], + "updated": 1695716399265, + "link": null, + "locked": false, + "fontSize": 20, + "fontFamily": 1, + "text": "provingWindow, t= X mins", + "textAlign": "left", + "verticalAlign": "top", + "containerId": null, + "originalText": "provingWindow, t= X mins", + "lineHeight": 1.25, + "baseline": 18 + }, + { + "type": "rectangle", + "version": 2354, + "versionNonce": 1184644620, + "isDeleted": false, + "id": "W-aRrTy9ohDrHI4XhsSw2", + "fillStyle": "hachure", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "angle": 0, + "x": 1376.4034699198517, + "y": 2373.8507946451923, + "strokeColor": "#1e1e1e", + "backgroundColor": "#ffc9c9", + "width": 249.57159107050327, + "height": 116.29053584326857, + "seed": 1970379404, + "groupIds": [ + "mYG6FQGTZszZwY-8lzw-i" + ], + "frameId": null, + "roundness": { + "type": 3 + }, + "boundElements": [], + "updated": 1695716399265, + "link": null, + "locked": false + }, + { + "type": "text", + "version": 2316, + "versionNonce": 1728093324, + "isDeleted": false, + "id": "aFDlsvKWYKfzghhrn-N5W", + "fillStyle": "hachure", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "angle": 0, + "x": 1444.863758326196, + "y": 2380.6539893682743, + "strokeColor": "#1e1e1e", + "backgroundColor": "#ffc9c9", + "width": 107.23332977294922, + "height": 64.90636861932636, + "seed": 1006004492, + "groupIds": [ + "mYG6FQGTZszZwY-8lzw-i" + ], + "frameId": null, + "roundness": null, + "boundElements": [], + "updated": 1695716399265, + "link": null, + "locked": false, + "fontSize": 25.962547447730543, + "fontFamily": 1, + "text": "L2 block\n(Tier 1)", + "textAlign": "center", + "verticalAlign": "middle", + "containerId": null, + "originalText": "L2 block\n(Tier 1)", + "lineHeight": 1.25, + "baseline": 56 + }, + { + "type": "text", + "version": 700, + "versionNonce": 1750412044, + "isDeleted": false, + "id": "Da8bwfbaKEe9m3L2_u379", + "fillStyle": "hachure", + "strokeWidth": 2, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "angle": 0, + "x": 1406.2015033516657, + "y": 2449.222821400654, + "strokeColor": "#e03131", + "backgroundColor": "#ffec99", + "width": 198.5, + "height": 45, + "seed": 635266956, + "groupIds": [ + "mYG6FQGTZszZwY-8lzw-i" + ], + "frameId": null, + "roundness": null, + "boundElements": [], + "updated": 1695716399265, + "link": null, + "locked": false, + "fontSize": 36, + "fontFamily": 1, + "text": "PROPOSED", + "textAlign": "left", + "verticalAlign": "top", + "containerId": null, + "originalText": "PROPOSED", + "lineHeight": 1.25, + "baseline": 32 + }, + { + "type": "arrow", + "version": 2622, + "versionNonce": 1008844980, + "isDeleted": false, + "id": "J_7UL51wKU0ZM0X7iRsWY", + "fillStyle": "hachure", + "strokeWidth": 2, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "angle": 0, + "x": 1761.441787778309, + "y": 2567.7966917867693, + "strokeColor": "#e03131", + "backgroundColor": "#ffec99", + "width": 1.375301448726077, + "height": 201.68878735478756, + "seed": 1734383116, + "groupIds": [], + "frameId": null, + "roundness": null, + "boundElements": [], + "updated": 1695716399721, + "link": null, + "locked": false, + "startBinding": { + "elementId": "FqhQ0jWsZcoVmCl_zTkoI", + "focus": 0.82791758743471, + "gap": 27.58137262971377 + }, + "endBinding": null, + "lastCommittedPoint": null, + "startArrowhead": null, + "endArrowhead": "arrow", + "points": [ + [ + 0, + 0 + ], + [ + 1.375301448726077, + -201.68878735478756 + ] + ] + }, + { + "type": "text", + "version": 795, + "versionNonce": 2021054476, + "isDeleted": false, + "id": "FqhQ0jWsZcoVmCl_zTkoI", + "fillStyle": "hachure", + "strokeWidth": 2, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "angle": 0, + "x": 1404.2592450407453, + "y": 2595.378064416483, + "strokeColor": "#1e1e1e", + "backgroundColor": "#ffec99", + "width": 389.75, + "height": 125, + "seed": 494531724, + "groupIds": [], + "frameId": null, + "roundness": null, + "boundElements": [ + { + "id": "J_7UL51wKU0ZM0X7iRsWY", + "type": "arrow" + } + ], + "updated": 1695716399265, + "link": null, + "locked": false, + "fontSize": 20, + "fontFamily": 1, + "text": "Within proofWindow the assigned\nprover submits a proof\nOR\nOutside of the original proofWindow any\nprover can submit a proof", + "textAlign": "left", + "verticalAlign": "top", + "containerId": null, + "originalText": "Within proofWindow the assigned\nprover submits a proof\nOR\nOutside of the original proofWindow any\nprover can submit a proof", + "lineHeight": 1.25, + "baseline": 118 + }, + { + "type": "rectangle", + "version": 2739, + "versionNonce": 64046348, + "isDeleted": false, + "id": "D3yPXRVkVZSBHh0Kn9j30", + "fillStyle": "hachure", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "angle": 0, + "x": 1948.3217357760705, + "y": 2383.4945015753224, + "strokeColor": "#1e1e1e", + "backgroundColor": "#ffc9c9", + "width": 249.57159107050327, + "height": 116.29053584326857, + "seed": 904102668, + "groupIds": [ + "pmJUcDPPhXzBJFle46Zf_" + ], + "frameId": null, + "roundness": { + "type": 3 + }, + "boundElements": [], + "updated": 1695716399265, + "link": null, + "locked": false + }, + { + "type": "text", + "version": 2699, + "versionNonce": 1711063948, + "isDeleted": false, + "id": "T_zhgKWs_f2E_N0J-0M_m", + "fillStyle": "hachure", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "angle": 0, + "x": 2016.7820241824147, + "y": 2390.2976962984044, + "strokeColor": "#1e1e1e", + "backgroundColor": "#ffc9c9", + "width": 107.23332977294922, + "height": 64.90636861932636, + "seed": 1461141900, + "groupIds": [ + "pmJUcDPPhXzBJFle46Zf_" + ], + "frameId": null, + "roundness": null, + "boundElements": [], + "updated": 1695716399265, + "link": null, + "locked": false, + "fontSize": 25.962547447730543, + "fontFamily": 1, + "text": "L2 block\n(Tier 1)", + "textAlign": "center", + "verticalAlign": "middle", + "containerId": null, + "originalText": "L2 block\n(Tier 1)", + "lineHeight": 1.25, + "baseline": 56 + }, + { + "type": "text", + "version": 1156, + "versionNonce": 590639628, + "isDeleted": false, + "id": "4ZOnA6IZigo5C-wxRf2oc", + "fillStyle": "hachure", + "strokeWidth": 2, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "angle": 0, + "x": 2002.2534702588846, + "y": 2455.418856752071, + "strokeColor": "#e03131", + "backgroundColor": "#ffc9c9", + "width": 145.3000030517578, + "height": 45, + "seed": 1213149196, + "groupIds": [ + "pmJUcDPPhXzBJFle46Zf_" + ], + "frameId": null, + "roundness": null, + "boundElements": [], + "updated": 1695716399265, + "link": null, + "locked": false, + "fontSize": 36, + "fontFamily": 1, + "text": "PROVED", + "textAlign": "left", + "verticalAlign": "top", + "containerId": null, + "originalText": "PROVED", + "lineHeight": 1.25, + "baseline": 32 + }, + { + "type": "text", + "version": 758, + "versionNonce": 1785876620, + "isDeleted": false, + "id": "0GrMpZB8W_fzfK7VfaUQI", + "fillStyle": "hachure", + "strokeWidth": 2, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "angle": 0, + "x": 2038.6308155241795, + "y": 2514.3577823166975, + "strokeColor": "#1e1e1e", + "backgroundColor": "#ffec99", + "width": 44.900001525878906, + "height": 25, + "seed": 1501908620, + "groupIds": [], + "frameId": null, + "roundness": null, + "boundElements": [], + "updated": 1695716399265, + "link": null, + "locked": false, + "fontSize": 20, + "fontFamily": 1, + "text": "BUT", + "textAlign": "left", + "verticalAlign": "top", + "containerId": null, + "originalText": "BUT", + "lineHeight": 1.25, + "baseline": 18 + }, + { + "type": "text", + "version": 770, + "versionNonce": 2070961932, + "isDeleted": false, + "id": "RAKemxlCDD2FmIEXODIUj", + "fillStyle": "hachure", + "strokeWidth": 2, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "angle": 0, + "x": 2038.6308155241795, + "y": 2549.3577823166975, + "strokeColor": "#e03131", + "backgroundColor": "#ffec99", + "width": 151.21665954589844, + "height": 25, + "seed": 1265868044, + "groupIds": [], + "frameId": null, + "roundness": null, + "boundElements": [], + "updated": 1695716399265, + "link": null, + "locked": false, + "fontSize": 20, + "fontFamily": 1, + "text": "CONTESTABLE", + "textAlign": "left", + "verticalAlign": "top", + "containerId": null, + "originalText": "CONTESTABLE", + "lineHeight": 1.25, + "baseline": 18 + }, + { + "type": "text", + "version": 758, + "versionNonce": 245931404, + "isDeleted": false, + "id": "2JWMNlpZJvnW50jcPBB5I", + "fillStyle": "hachure", + "strokeWidth": 2, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "angle": 0, + "x": 2038.6308155241795, + "y": 2584.3577823166975, + "strokeColor": "#1e1e1e", + "backgroundColor": "#ffec99", + "width": 83.01667022705078, + "height": 25, + "seed": 932453260, + "groupIds": [], + "frameId": null, + "roundness": null, + "boundElements": [], + "updated": 1695716399265, + "link": null, + "locked": false, + "fontSize": 20, + "fontFamily": 1, + "text": "DURING", + "textAlign": "left", + "verticalAlign": "top", + "containerId": null, + "originalText": "DURING", + "lineHeight": 1.25, + "baseline": 18 + }, + { + "type": "text", + "version": 758, + "versionNonce": 1028983820, + "isDeleted": false, + "id": "rEz5lGaqyIaWI3u2l9PHx", + "fillStyle": "hachure", + "strokeWidth": 2, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "angle": 0, + "x": 2038.6308155241795, + "y": 2619.3577823166975, + "strokeColor": "#1e1e1e", + "backgroundColor": "#ffec99", + "width": 111.81666564941406, + "height": 25, + "seed": 2015414796, + "groupIds": [], + "frameId": null, + "roundness": null, + "boundElements": [], + "updated": 1695716399265, + "link": null, + "locked": false, + "fontSize": 20, + "fontFamily": 1, + "text": "COOLDOWN", + "textAlign": "left", + "verticalAlign": "top", + "containerId": null, + "originalText": "COOLDOWN", + "lineHeight": 1.25, + "baseline": 18 + }, + { + "type": "line", + "version": 1308, + "versionNonce": 1768925836, + "isDeleted": false, + "id": "0WTgJbV5RKwzBUwtyVZ2T", + "fillStyle": "hachure", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "angle": 0, + "x": 2196.482099878821, + "y": 2327.3999425108445, + "strokeColor": "#000000", + "backgroundColor": "#1864ab", + "width": 0, + "height": 54.23905944824219, + "seed": 269723788, + "groupIds": [ + "L1CMG6_UQBzdungVZKcc3" + ], + "frameId": null, + "roundness": { + "type": 2 + }, + "boundElements": [], + "updated": 1695716399265, + "link": null, + "locked": false, + "startBinding": null, + "endBinding": null, + "lastCommittedPoint": null, + "startArrowhead": null, + "endArrowhead": null, + "points": [ + [ + 0, + 0 + ], + [ + 0, + 54.23905944824219 + ] + ] + }, + { + "type": "line", + "version": 1375, + "versionNonce": 632453388, + "isDeleted": false, + "id": "h2pqJTpOjQdZC3UJZjI_k", + "fillStyle": "hachure", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "angle": 0, + "x": 2197.8133376717897, + "y": 2355.843713873149, + "strokeColor": "#000000", + "backgroundColor": "#1864ab", + "width": 323.26873779296875, + "height": 0, + "seed": 321304332, + "groupIds": [ + "L1CMG6_UQBzdungVZKcc3" + ], + "frameId": null, + "roundness": { + "type": 2 + }, + "boundElements": [], + "updated": 1695716399265, + "link": null, + "locked": false, + "startBinding": null, + "endBinding": null, + "lastCommittedPoint": null, + "startArrowhead": null, + "endArrowhead": null, + "points": [ + [ + 0, + 0 + ], + [ + 323.26873779296875, + 0 + ] + ] + }, + { + "type": "line", + "version": 1407, + "versionNonce": 496465804, + "isDeleted": false, + "id": "KB1uJyinvoV-3Ysbkz6_x", + "fillStyle": "hachure", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "angle": 0, + "x": 2521.9480955997815, + "y": 2329.1993367482432, + "strokeColor": "#000000", + "backgroundColor": "#1864ab", + "width": 0, + "height": 54.23905944824219, + "seed": 231994764, + "groupIds": [ + "L1CMG6_UQBzdungVZKcc3" + ], + "frameId": null, + "roundness": { + "type": 2 + }, + "boundElements": [], + "updated": 1695716399265, + "link": null, + "locked": false, + "startBinding": null, + "endBinding": null, + "lastCommittedPoint": null, + "startArrowhead": null, + "endArrowhead": null, + "points": [ + [ + 0, + 0 + ], + [ + 0, + 54.23905944824219 + ] + ] + }, + { + "type": "text", + "version": 1278, + "versionNonce": 2102961676, + "isDeleted": false, + "id": "Pi3yRCzSgZ56Pjt31Shuk", + "fillStyle": "hachure", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "angle": 0, + "x": 2251.6915114999147, + "y": 2311.06244861436, + "strokeColor": "#000000", + "backgroundColor": "#1864ab", + "width": 189.43333435058594, + "height": 25, + "seed": 1834312716, + "groupIds": [ + "L1CMG6_UQBzdungVZKcc3" + ], + "frameId": null, + "roundness": null, + "boundElements": [], + "updated": 1695716399265, + "link": null, + "locked": false, + "fontSize": 20, + "fontFamily": 1, + "text": "cooldown, t= X mins", + "textAlign": "left", + "verticalAlign": "top", + "containerId": null, + "originalText": "cooldown, t= X mins", + "lineHeight": 1.25, + "baseline": 18 + }, + { + "type": "text", + "version": 1220, + "versionNonce": 1508902028, + "isDeleted": false, + "id": "JxbKansk4ZKpntE5a3sd2", + "fillStyle": "hachure", + "strokeWidth": 2, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "angle": 0, + "x": 2514.8980605823936, + "y": 2179.5796764967304, + "strokeColor": "#1e1e1e", + "backgroundColor": "#b2f2bb", + "width": 370.3500061035156, + "height": 82.48767488434464, + "seed": 1738867340, + "groupIds": [], + "frameId": null, + "roundness": null, + "boundElements": [], + "updated": 1695716399265, + "link": null, + "locked": false, + "fontSize": 65.99013990747571, + "fontFamily": 1, + "text": "(contested)", + "textAlign": "center", + "verticalAlign": "top", + "containerId": null, + "originalText": "(contested)", + "lineHeight": 1.25, + "baseline": 58 + }, + { + "type": "rectangle", + "version": 2929, + "versionNonce": 420975372, + "isDeleted": false, + "id": "93iOK2LF3RvXLyRurQCAr", + "fillStyle": "hachure", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "angle": 0, + "x": 2528.377496460825, + "y": 2370.3989036838734, + "strokeColor": "#1e1e1e", + "backgroundColor": "#b2f2bb", + "width": 300.945850057459, + "height": 116.29053584326857, + "seed": 1186552972, + "groupIds": [ + "ykLosj_XTxtBP8SG7DwWa" + ], + "frameId": null, + "roundness": { + "type": 3 + }, + "boundElements": [], + "updated": 1695716399265, + "link": null, + "locked": false + }, + { + "type": "text", + "version": 2861, + "versionNonce": 1497977228, + "isDeleted": false, + "id": "IbXSz9B0F_VzahRRdOv0c", + "fillStyle": "hachure", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "angle": 0, + "x": 2621.7909963751204, + "y": 2378.6699343780106, + "strokeColor": "#1e1e1e", + "backgroundColor": "#ffc9c9", + "width": 107.23332977294922, + "height": 64.90636861932636, + "seed": 1391848204, + "groupIds": [ + "ykLosj_XTxtBP8SG7DwWa" + ], + "frameId": null, + "roundness": null, + "boundElements": [], + "updated": 1695716399265, + "link": null, + "locked": false, + "fontSize": 25.962547447730543, + "fontFamily": 1, + "text": "L2 block\n(Tier 2)", + "textAlign": "center", + "verticalAlign": "middle", + "containerId": null, + "originalText": "L2 block\n(Tier 2)", + "lineHeight": 1.25, + "baseline": 56 + }, + { + "type": "text", + "version": 1454, + "versionNonce": 1505705996, + "isDeleted": false, + "id": "fX2QIZUZ8PM5DTtwN3MWd", + "fillStyle": "hachure", + "strokeWidth": 2, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "angle": 0, + "x": 2542.309230943639, + "y": 2443.169750947453, + "strokeColor": "#e03131", + "backgroundColor": "#ffec99", + "width": 268.6166687011719, + "height": 35, + "seed": 1973201292, + "groupIds": [ + "ykLosj_XTxtBP8SG7DwWa" + ], + "frameId": null, + "roundness": null, + "boundElements": [], + "updated": 1695716399265, + "link": null, + "locked": false, + "fontSize": 28, + "fontFamily": 1, + "text": "TO BE RE-PROVEN", + "textAlign": "left", + "verticalAlign": "top", + "containerId": null, + "originalText": "TO BE RE-PROVEN", + "lineHeight": 1.25, + "baseline": 25 + }, + { + "type": "arrow", + "version": 2823, + "versionNonce": 2031061556, + "isDeleted": false, + "id": "PbEVYPOxP4yq15vqhm8Wa", + "fillStyle": "hachure", + "strokeWidth": 2, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "angle": 0, + "x": 2343.9136553055637, + "y": 2554.3602664501054, + "strokeColor": "#e03131", + "backgroundColor": "#ffec99", + "width": 3.1564043742623653, + "height": 163.80661889721932, + "seed": 225253684, + "groupIds": [], + "frameId": null, + "roundness": null, + "boundElements": [], + "updated": 1695716399722, + "link": null, + "locked": false, + "startBinding": { + "elementId": "IpW3MsIAyu15ONS2Z73eh", + "focus": -1.1241703875495108, + "gap": 11.759659545781233 + }, + "endBinding": null, + "lastCommittedPoint": null, + "startArrowhead": null, + "endArrowhead": "arrow", + "points": [ + [ + 0, + 0 + ], + [ + -3.1564043742623653, + -163.80661889721932 + ] + ] + }, + { + "type": "text", + "version": 339, + "versionNonce": 740273420, + "isDeleted": false, + "id": "QLzA7hbyNuggnv_g9DP2A", + "fillStyle": "hachure", + "strokeWidth": 2, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "angle": 0, + "x": 2628.7006007347104, + "y": 2508.638601521327, + "strokeColor": "#1e1e1e", + "backgroundColor": "#ffec99", + "width": 76.03333282470703, + "height": 25, + "seed": 471802548, + "groupIds": [], + "frameId": null, + "roundness": null, + "boundElements": [], + "updated": 1695716399265, + "link": null, + "locked": false, + "fontSize": 20, + "fontFamily": 1, + "text": "WITH A", + "textAlign": "left", + "verticalAlign": "top", + "containerId": null, + "originalText": "WITH A", + "lineHeight": 1.25, + "baseline": 18 + }, + { + "type": "text", + "version": 358, + "versionNonce": 1212033932, + "isDeleted": false, + "id": "7esqVSO8E6gju-uaLoGx-", + "fillStyle": "hachure", + "strokeWidth": 2, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "angle": 0, + "x": 2628.7006007347104, + "y": 2543.638601521327, + "strokeColor": "#e03131", + "backgroundColor": "#ffec99", + "width": 139.8000030517578, + "height": 25, + "seed": 1997581364, + "groupIds": [], + "frameId": null, + "roundness": null, + "boundElements": [], + "updated": 1695716399265, + "link": null, + "locked": false, + "fontSize": 20, + "fontFamily": 1, + "text": "HIGHER TIER", + "textAlign": "left", + "verticalAlign": "top", + "containerId": null, + "originalText": "HIGHER TIER", + "lineHeight": 1.25, + "baseline": 18 + }, + { + "type": "text", + "version": 338, + "versionNonce": 151575052, + "isDeleted": false, + "id": "4IQLMpeCKbqI4hpWv8b5T", + "fillStyle": "hachure", + "strokeWidth": 2, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "angle": 0, + "x": 2628.7006007347104, + "y": 2578.638601521327, + "strokeColor": "#1e1e1e", + "backgroundColor": "#ffec99", + "width": 67.30000305175781, + "height": 25, + "seed": 1578436020, + "groupIds": [], + "frameId": null, + "roundness": null, + "boundElements": [], + "updated": 1695716399265, + "link": null, + "locked": false, + "fontSize": 20, + "fontFamily": 1, + "text": "PROOF", + "textAlign": "left", + "verticalAlign": "top", + "containerId": null, + "originalText": "PROOF", + "lineHeight": 1.25, + "baseline": 18 + }, + { + "type": "rectangle", + "version": 1580, + "versionNonce": 1769584780, + "isDeleted": false, + "id": "5t2ySlAwqGJWrHGdnW6Pm", + "fillStyle": "hachure", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "angle": 0, + "x": 2979.5735894331956, + "y": 2576.669772375482, + "strokeColor": "#c92a2a", + "backgroundColor": "#1864ab", + "width": 144.90469360351562, + "height": 79.2421875, + "seed": 1444035980, + "groupIds": [], + "frameId": null, + "roundness": { + "type": 3 + }, + "boundElements": [ + { + "type": "text", + "id": "B9VO8IfAP0pk-o7gFwoxB" + }, + { + "id": "qULw3Zdh_0_rNdr4nj95d", + "type": "arrow" + } + ], + "updated": 1695716399265, + "link": null, + "locked": false + }, + { + "type": "text", + "version": 1465, + "versionNonce": 1967834892, + "isDeleted": false, + "id": "B9VO8IfAP0pk-o7gFwoxB", + "fillStyle": "hachure", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "angle": 0, + "x": 3018.3759347090745, + "y": 2603.790866125482, + "strokeColor": "#c92a2a", + "backgroundColor": "transparent", + "width": 67.30000305175781, + "height": 25, + "seed": 646622220, + "groupIds": [], + "frameId": null, + "roundness": null, + "boundElements": [], + "updated": 1695716399265, + "link": null, + "locked": false, + "fontSize": 20, + "fontFamily": 1, + "text": "PROOF", + "textAlign": "center", + "verticalAlign": "middle", + "containerId": "5t2ySlAwqGJWrHGdnW6Pm", + "originalText": "PROOF", + "lineHeight": 1.25, + "baseline": 18 + }, + { + "type": "line", + "version": 1239, + "versionNonce": 28668940, + "isDeleted": false, + "id": "9_Xo5bcUFaZM8si_6IQXe", + "fillStyle": "hachure", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "angle": 0, + "x": 2830.5243104108595, + "y": 2323.1104740464175, + "strokeColor": "#000000", + "backgroundColor": "#1864ab", + "width": 0, + "height": 54.23905944824219, + "seed": 1525762700, + "groupIds": [ + "5jTmVq-1FUD8H8Hzhyv0g" + ], + "frameId": null, + "roundness": { + "type": 2 + }, + "boundElements": [], + "updated": 1695716399265, + "link": null, + "locked": false, + "startBinding": null, + "endBinding": null, + "lastCommittedPoint": null, + "startArrowhead": null, + "endArrowhead": null, + "points": [ + [ + 0, + 0 + ], + [ + 0, + 54.23905944824219 + ] + ] + }, + { + "type": "line", + "version": 1306, + "versionNonce": 360911500, + "isDeleted": false, + "id": "w2dcTI5_pJZ4HfWTy9K2a", + "fillStyle": "hachure", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "angle": 0, + "x": 2831.855548203828, + "y": 2351.554245408722, + "strokeColor": "#000000", + "backgroundColor": "#1864ab", + "width": 323.26873779296875, + "height": 0, + "seed": 905976076, + "groupIds": [ + "5jTmVq-1FUD8H8Hzhyv0g" + ], + "frameId": null, + "roundness": { + "type": 2 + }, + "boundElements": [], + "updated": 1695716399265, + "link": null, + "locked": false, + "startBinding": null, + "endBinding": null, + "lastCommittedPoint": null, + "startArrowhead": null, + "endArrowhead": null, + "points": [ + [ + 0, + 0 + ], + [ + 323.26873779296875, + 0 + ] + ] + }, + { + "type": "line", + "version": 1338, + "versionNonce": 1259921676, + "isDeleted": false, + "id": "Ky_n3VhLH7Udzp7jWzyuJ", + "fillStyle": "hachure", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "angle": 0, + "x": 3155.99030613182, + "y": 2324.909868283817, + "strokeColor": "#000000", + "backgroundColor": "#1864ab", + "width": 0, + "height": 54.23905944824219, + "seed": 321984396, + "groupIds": [ + "5jTmVq-1FUD8H8Hzhyv0g" + ], + "frameId": null, + "roundness": { + "type": 2 + }, + "boundElements": [], + "updated": 1695716399265, + "link": null, + "locked": false, + "startBinding": null, + "endBinding": null, + "lastCommittedPoint": null, + "startArrowhead": null, + "endArrowhead": null, + "points": [ + [ + 0, + 0 + ], + [ + 0, + 54.23905944824219 + ] + ] + }, + { + "type": "text", + "version": 1201, + "versionNonce": 435216268, + "isDeleted": false, + "id": "qgVZuhsLVQPb-TbtUvAey", + "fillStyle": "hachure", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "angle": 0, + "x": 2885.733722031953, + "y": 2306.772980149933, + "strokeColor": "#000000", + "backgroundColor": "#1864ab", + "width": 235.01666259765625, + "height": 25, + "seed": 1321092620, + "groupIds": [ + "5jTmVq-1FUD8H8Hzhyv0g" + ], + "frameId": null, + "roundness": null, + "boundElements": [], + "updated": 1695716399265, + "link": null, + "locked": false, + "fontSize": 20, + "fontFamily": 1, + "text": "provingWindow, t= X mins", + "textAlign": "left", + "verticalAlign": "top", + "containerId": null, + "originalText": "provingWindow, t= X mins", + "lineHeight": 1.25, + "baseline": 18 + }, + { + "type": "arrow", + "version": 2782, + "versionNonce": 948446132, + "isDeleted": false, + "id": "qULw3Zdh_0_rNdr4nj95d", + "fillStyle": "hachure", + "strokeWidth": 2, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "angle": 0, + "x": 2968.1009689683688, + "y": 2567.5530634070396, + "strokeColor": "#e03131", + "backgroundColor": "#ffec99", + "width": 1.375301448726077, + "height": 201.68878735478756, + "seed": 765568140, + "groupIds": [], + "frameId": null, + "roundness": null, + "boundElements": [], + "updated": 1695716399723, + "link": null, + "locked": false, + "startBinding": { + "elementId": "5t2ySlAwqGJWrHGdnW6Pm", + "focus": -1.158613681415116, + "gap": 11.472620464826832 + }, + "endBinding": null, + "lastCommittedPoint": null, + "startArrowhead": null, + "endArrowhead": "arrow", + "points": [ + [ + 0, + 0 + ], + [ + 1.375301448726077, + -201.68878735478756 + ] + ] + }, + { + "type": "rectangle", + "version": 2898, + "versionNonce": 1292856460, + "isDeleted": false, + "id": "RW40wBuJPoAAFh7ExyFmf", + "fillStyle": "hachure", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "angle": 0, + "x": 3154.9809169661303, + "y": 2383.2508731955927, + "strokeColor": "#1e1e1e", + "backgroundColor": "#b2f2bb", + "width": 249.57159107050327, + "height": 116.29053584326857, + "seed": 1167405836, + "groupIds": [ + "ReDiCzuK3ilMpzR6pVTfY" + ], + "frameId": null, + "roundness": { + "type": 3 + }, + "boundElements": [], + "updated": 1695716399265, + "link": null, + "locked": false + }, + { + "type": "text", + "version": 2863, + "versionNonce": 1141504780, + "isDeleted": false, + "id": "ZgjLu6OgWlzzM8IN6Nx4K", + "fillStyle": "hachure", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "angle": 0, + "x": 3223.4412053724745, + "y": 2390.0540679186756, + "strokeColor": "#1e1e1e", + "backgroundColor": "#ffc9c9", + "width": 107.23332977294922, + "height": 64.90636861932636, + "seed": 1695740300, + "groupIds": [ + "ReDiCzuK3ilMpzR6pVTfY" + ], + "frameId": null, + "roundness": null, + "boundElements": [], + "updated": 1695716399265, + "link": null, + "locked": false, + "fontSize": 25.962547447730543, + "fontFamily": 1, + "text": "L2 block\n(Tier 2)", + "textAlign": "center", + "verticalAlign": "middle", + "containerId": null, + "originalText": "L2 block\n(Tier 2)", + "lineHeight": 1.25, + "baseline": 56 + }, + { + "type": "text", + "version": 1314, + "versionNonce": 1236187532, + "isDeleted": false, + "id": "WUiO4y7-mSAh1JDwaxFHS", + "fillStyle": "hachure", + "strokeWidth": 2, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "angle": 0, + "x": 3208.9126514489444, + "y": 2455.1752283723413, + "strokeColor": "#e03131", + "backgroundColor": "#ffc9c9", + "width": 145.3000030517578, + "height": 45, + "seed": 2069159948, + "groupIds": [ + "ReDiCzuK3ilMpzR6pVTfY" + ], + "frameId": null, + "roundness": null, + "boundElements": [], + "updated": 1695716399265, + "link": null, + "locked": false, + "fontSize": 36, + "fontFamily": 1, + "text": "PROVED", + "textAlign": "left", + "verticalAlign": "top", + "containerId": null, + "originalText": "PROVED", + "lineHeight": 1.25, + "baseline": 32 + }, + { + "type": "line", + "version": 966, + "versionNonce": 1765255180, + "isDeleted": false, + "id": "SkN7m81eulDNQYfE9lDnq", + "fillStyle": "hachure", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "angle": 0, + "x": 3410.84703895643, + "y": 2325.471566428049, + "strokeColor": "#000000", + "backgroundColor": "#1864ab", + "width": 0, + "height": 54.23905944824219, + "seed": 1486346164, + "groupIds": [ + "TC9koE2HEro1-w-qxTuao" + ], + "frameId": null, + "roundness": { + "type": 2 + }, + "boundElements": [], + "updated": 1695716399265, + "link": null, + "locked": false, + "startBinding": null, + "endBinding": null, + "lastCommittedPoint": null, + "startArrowhead": null, + "endArrowhead": null, + "points": [ + [ + 0, + 0 + ], + [ + 0, + 54.23905944824219 + ] + ] + }, + { + "type": "line", + "version": 1033, + "versionNonce": 916375180, + "isDeleted": false, + "id": "fo82JxWfJ8od_0AI7qqeb", + "fillStyle": "hachure", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "angle": 0, + "x": 3412.1782767493987, + "y": 2353.9153377903535, + "strokeColor": "#000000", + "backgroundColor": "#1864ab", + "width": 323.26873779296875, + "height": 0, + "seed": 1823129908, + "groupIds": [ + "TC9koE2HEro1-w-qxTuao" + ], + "frameId": null, + "roundness": { + "type": 2 + }, + "boundElements": [], + "updated": 1695716399265, + "link": null, + "locked": false, + "startBinding": null, + "endBinding": null, + "lastCommittedPoint": null, + "startArrowhead": null, + "endArrowhead": null, + "points": [ + [ + 0, + 0 + ], + [ + 323.26873779296875, + 0 + ] + ] + }, + { + "type": "line", + "version": 1065, + "versionNonce": 916329740, + "isDeleted": false, + "id": "YQOLeaO6Bkx0tyUMza-J-", + "fillStyle": "hachure", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "angle": 0, + "x": 3736.3130346773905, + "y": 2327.2709606654475, + "strokeColor": "#000000", + "backgroundColor": "#1864ab", + "width": 0, + "height": 54.23905944824219, + "seed": 564427444, + "groupIds": [ + "TC9koE2HEro1-w-qxTuao" + ], + "frameId": null, + "roundness": { + "type": 2 + }, + "boundElements": [], + "updated": 1695716399265, + "link": null, + "locked": false, + "startBinding": null, + "endBinding": null, + "lastCommittedPoint": null, + "startArrowhead": null, + "endArrowhead": null, + "points": [ + [ + 0, + 0 + ], + [ + 0, + 54.23905944824219 + ] + ] + }, + { + "type": "text", + "version": 936, + "versionNonce": 1185911692, + "isDeleted": false, + "id": "_b5xsWh0ribXVRryySgTH", + "fillStyle": "hachure", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "angle": 0, + "x": 3466.0564505775237, + "y": 2309.1340725315645, + "strokeColor": "#000000", + "backgroundColor": "#1864ab", + "width": 189.43333435058594, + "height": 25, + "seed": 1378550836, + "groupIds": [ + "TC9koE2HEro1-w-qxTuao" + ], + "frameId": null, + "roundness": null, + "boundElements": [], + "updated": 1695716399265, + "link": null, + "locked": false, + "fontSize": 20, + "fontFamily": 1, + "text": "cooldown, t= X mins", + "textAlign": "left", + "verticalAlign": "top", + "containerId": null, + "originalText": "cooldown, t= X mins", + "lineHeight": 1.25, + "baseline": 18 + }, + { + "type": "line", + "version": 513, + "versionNonce": 84754956, + "isDeleted": false, + "id": "5kpWMsk-SZrCcgDQ-pWj4", + "fillStyle": "hachure", + "strokeWidth": 2, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "angle": 0, + "x": 3564.788777194145, + "y": 2383.4284160550847, + "strokeColor": "#e03131", + "backgroundColor": "#ffec99", + "width": 28, + "height": 43, + "seed": 337927604, + "groupIds": [ + "nMApY-2Jefhn8ZilTumAj" + ], + "frameId": null, + "roundness": null, + "boundElements": [], + "updated": 1695716399265, + "link": null, + "locked": false, + "startBinding": null, + "endBinding": null, + "lastCommittedPoint": null, + "startArrowhead": null, + "endArrowhead": null, + "points": [ + [ + 0, + 0 + ], + [ + 28, + 43 + ] + ] + }, + { + "type": "line", + "version": 570, + "versionNonce": 951132300, + "isDeleted": false, + "id": "7Yzp-bZsU_XsjzAzktqaR", + "fillStyle": "hachure", + "strokeWidth": 2, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "angle": 0, + "x": 3590.6769103604956, + "y": 2381.677795850082, + "strokeColor": "#e03131", + "backgroundColor": "#ffec99", + "width": 25, + "height": 46, + "seed": 1354139444, + "groupIds": [ + "28oO-iy7O4GOlU3EtQrWm", + "nMApY-2Jefhn8ZilTumAj" + ], + "frameId": null, + "roundness": null, + "boundElements": [], + "updated": 1695716399265, + "link": null, + "locked": false, + "startBinding": null, + "endBinding": null, + "lastCommittedPoint": null, + "startArrowhead": null, + "endArrowhead": null, + "points": [ + [ + 0, + 0 + ], + [ + -25, + 46 + ] + ] + }, + { + "type": "text", + "version": 430, + "versionNonce": 961883916, + "isDeleted": false, + "id": "FPQ04rnQv0RkdNZfvfVZU", + "fillStyle": "hachure", + "strokeWidth": 2, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "angle": 0, + "x": 3513.0439163587644, + "y": 2445.967655048116, + "strokeColor": "#e03131", + "backgroundColor": "#ffec99", + "width": 147.6666717529297, + "height": 25, + "seed": 1548189876, + "groupIds": [ + "28oO-iy7O4GOlU3EtQrWm", + "nMApY-2Jefhn8ZilTumAj" + ], + "frameId": null, + "roundness": null, + "boundElements": [], + "updated": 1695716399265, + "link": null, + "locked": false, + "fontSize": 20, + "fontFamily": 1, + "text": "NO CONTESTS", + "textAlign": "left", + "verticalAlign": "top", + "containerId": null, + "originalText": "NO CONTESTS", + "lineHeight": 1.25, + "baseline": 18 + }, + { + "type": "rectangle", + "version": 2499, + "versionNonce": 1467182476, + "isDeleted": false, + "id": "QCdGTv6e9njtdhFpaKbxx", + "fillStyle": "hachure", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "angle": 0, + "x": 3741.2745995673795, + "y": 2371.406199543189, + "strokeColor": "#1e1e1e", + "backgroundColor": "#ffec99", + "width": 249.57159107050327, + "height": 116.29053584326857, + "seed": 243092020, + "groupIds": [ + "T8QRjrSmox8W-reJJppR7" + ], + "frameId": null, + "roundness": { + "type": 3 + }, + "boundElements": [], + "updated": 1695716399265, + "link": null, + "locked": false + }, + { + "type": "text", + "version": 2460, + "versionNonce": 1145429004, + "isDeleted": false, + "id": "8ZXVnJyRTYy2vdTlU6SVr", + "fillStyle": "hachure", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "angle": 0, + "x": 3809.7348879737247, + "y": 2378.209394266271, + "strokeColor": "#1e1e1e", + "backgroundColor": "#ffc9c9", + "width": 107.23332977294922, + "height": 64.90636861932636, + "seed": 1514005428, + "groupIds": [ + "T8QRjrSmox8W-reJJppR7" + ], + "frameId": null, + "roundness": null, + "boundElements": [], + "updated": 1695716399265, + "link": null, + "locked": false, + "fontSize": 25.962547447730543, + "fontFamily": 1, + "text": "L2 block\n(Tier 2)", + "textAlign": "center", + "verticalAlign": "middle", + "containerId": null, + "originalText": "L2 block\n(Tier 2)", + "lineHeight": 1.25, + "baseline": 56 + }, + { + "type": "text", + "version": 963, + "versionNonce": 2043050636, + "isDeleted": false, + "id": "5N_hijATdaoWEZ6QjvOhX", + "fillStyle": "hachure", + "strokeWidth": 2, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "angle": 0, + "x": 3755.2063340501936, + "y": 2443.5805547199366, + "strokeColor": "#e03131", + "backgroundColor": "#ffec99", + "width": 222.8000030517578, + "height": 45, + "seed": 1705987380, + "groupIds": [ + "T8QRjrSmox8W-reJJppR7" + ], + "frameId": null, + "roundness": null, + "boundElements": [], + "updated": 1695716399265, + "link": null, + "locked": false, + "fontSize": 36, + "fontFamily": 1, + "text": "VERIFIABLE", + "textAlign": "left", + "verticalAlign": "top", + "containerId": null, + "originalText": "VERIFIABLE", + "lineHeight": 1.25, + "baseline": 32 + }, + { + "id": "8WkzX1o0xvJaNjopyIWby", + "type": "text", + "x": 3293.4063199951315, + "y": 1913.1464774474289, + "width": 782.1636804180871, + "height": 328.6678142574392, + "angle": 0, + "strokeColor": "#1e1e1e", + "backgroundColor": "#b2f2bb", + "fillStyle": "hachure", + "strokeWidth": 2, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "groupIds": [], + "frameId": null, + "roundness": null, + "seed": 1651776180, + "version": 1225, + "versionNonce": 581912844, + "isDeleted": false, + "boundElements": null, + "updated": 1695716399265, + "link": null, + "locked": false, + "text": "* Both contesting and proving comes with an associated\nbond to be paid to the protocol. These bonds are all re-\nfundable except the contester/prover is wrong.\nSo if Bob says Alice's previous proof is wrong, then he\ncontests and pay the respective bond. Once another tier\nproof confirms Bob is right, Alice loses all of her prover\nbond, and 1/4 - 1/4 is paid to the new prover and contester\n(who is Bob).\nSame applies the other way round. If Bob turns out to be\nwrong, his contester bond is gone too.", + "fontSize": 26.29342514059514, + "fontFamily": 1, + "textAlign": "left", + "verticalAlign": "top", + "baseline": 319, + "containerId": null, + "originalText": "* Both contesting and proving comes with an associated\nbond to be paid to the protocol. These bonds are all re-\nfundable except the contester/prover is wrong.\nSo if Bob says Alice's previous proof is wrong, then he\ncontests and pay the respective bond. Once another tier\nproof confirms Bob is right, Alice loses all of her prover\nbond, and 1/4 - 1/4 is paid to the new prover and contester\n(who is Bob).\nSame applies the other way round. If Bob turns out to be\nwrong, his contester bond is gone too.", + "lineHeight": 1.25 + }, + { + "id": "qIfOG5FSZgNeLnnW_aX3O", + "type": "rectangle", + "x": 1284.2287119007628, + "y": 1448.6505895426137, + "width": 2818.860204096772, + "height": 1527.104006122614, + "angle": 0, + "strokeColor": "#1e1e1e", + "backgroundColor": "#b2f2bb", + "fillStyle": "hachure", + "strokeWidth": 2, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 10, + "groupIds": [], + "frameId": null, + "roundness": null, + "seed": 1189089292, + "version": 416, + "versionNonce": 1038624524, + "isDeleted": false, + "boundElements": [], + "updated": 1695716831267, + "link": null, + "locked": false + }, + { + "type": "rectangle", + "version": 874, + "versionNonce": 1330660108, + "isDeleted": false, + "id": "rL8UHOREM454GnDsB3z_f", + "fillStyle": "hachure", + "strokeWidth": 2, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 30, + "angle": 0, + "x": 1279.4100113519626, + "y": 1225.537528694864, + "strokeColor": "#1e1e1e", + "backgroundColor": "#a5d8ff", + "width": 2817.71921002052, + "height": 229.6755473000217, + "seed": 1953647540, + "groupIds": [], + "frameId": null, + "roundness": null, + "boundElements": [], + "updated": 1695716872860, + "link": null, + "locked": false + }, + { + "type": "rectangle", + "version": 1247, + "versionNonce": 1552849588, + "isDeleted": false, + "id": "H4eEKr3hUUV2NfpvrpdJz", + "fillStyle": "hachure", + "strokeWidth": 2, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 30, + "angle": 0, + "x": 3261.250851109601, + "y": 1877.8113687589532, + "strokeColor": "#1e1e1e", + "backgroundColor": "#a5d8ff", + "width": 846.0654668309435, + "height": 392.35404454827466, + "seed": 976112308, + "groupIds": [], + "frameId": null, + "roundness": null, + "boundElements": [], + "updated": 1695716796343, + "link": null, + "locked": false + } + ], + "appState": { + "gridSize": null, + "viewBackgroundColor": "#ffffff" + }, + "files": {} +} \ No newline at end of file diff --git a/packages/website/pages/docs/concepts/proposing.mdx b/packages/website/pages/docs/concepts/proposing.mdx index a01b5593ae..a3b4a49b43 100644 --- a/packages/website/pages/docs/concepts/proposing.mdx +++ b/packages/website/pages/docs/concepts/proposing.mdx @@ -3,8 +3,8 @@ On Taiko, the next L2 state is known immediately and deterministically at the time a block is proposed to the TaikoL1 contract. After a block is proposed, a series of checks are done to compute this post-L2 state: 1. Block is proposed by any proposer (permissionlessly). -2. Block level properties' validity is checked by the TaikoL1 contract with the ([proposed block intrinsic validity function](./proposing#proposed-block-intrinsic-validity-function)). -3. Proposed block is downloaded by a Taiko node, and the transaction list is parsed over and checked for validity ([transaction list intrinsic validity function](./proposing#transaction-list-intrinsic-validity-function)). +2. Block level properties' validity is checked by the TaikoL1 contract with the proposed block intrinsic validity function. +3. Proposed block is downloaded by a Taiko node, and the transaction list is parsed over and checked for validity transaction list intrinsic validity function. - IF every transaction in the list is valid, an ordered subset of the list is created by skipping over transactions which have an invalid nonce or the sender has too little Ether balance to pay for the transaction. This ordered subset is used along with the [anchor transaction](./proposing#anchor-transaction) to create a Taiko L2 block. - IF any transaction in the list is invalid, an empty block (with only the anchor tx) is created on L2. diff --git a/packages/website/pages/docs/concepts/proving.mdx b/packages/website/pages/docs/concepts/proving.mdx index bcd8c511c3..80e6756383 100644 --- a/packages/website/pages/docs/concepts/proving.mdx +++ b/packages/website/pages/docs/concepts/proving.mdx @@ -3,11 +3,11 @@ import { Callout } from "nextra-theme-docs"; # Proving Taiko blocks -The purpose of proving blocks is to give certainty to bridges about the execution that happened in the rollup. To rely on some state that happened inside of the rollup, a bridge will want a proof that everything was done correctly. On Taiko you can run a node as a prover and prove blocks, permissionlessly. This means that you can examine the proposed blocks on the TaikoL1 contract, and generate proofs for them. Currently, any prover can create proofs for proposed blocks. This means that the number of "state transitions" has no upper bound, because we don't know what is the correct state transition yet. Only first prover with a valid proof of the correct state transition will receive the reward of `ETH` (and possibly any `ERC20` or even NFTs if the Prover pool implementation favors it). +The purpose of proving blocks is to give certainty to bridges about the execution that happened in the rollup. To rely on some state that happened inside of the rollup, a bridge will want a proof that everything was done correctly. On Taiko you can run a node as a prover and prove blocks, permissionlessly. This means that you can examine the proposed blocks on the TaikoL1 contract, and generate proofs for them. Currently, any prover can create proofs for proposed blocks. This means that the number of "state transitions" has no upper bound, because we don't know what is the correct state transition yet. Only first prover with a valid proof of the correct state transition will receive Ether or ERC20 token as the proving fee. -## Verified blocks and parallel proving +## Generic overview of proving and verifying blocks -There are three states that a block can be in on Taiko: +There are 3 main states that a block can be in on Taiko: - Proposed - Proved @@ -48,6 +48,69 @@ For the visual learners here is a visualization of the three stages (proposed -> /> +## Multi-tier, contestable proof system + +To ensure the safety of funds and maintain a high level of security, a multi-tier proof system is introduced by Taiko. The system is fully customizable to require: +- no proofs at all +- only fraud proofs (optimistic-style) +- only ZK proofs +- only SGX proofs +- SGX + ZK proofs +- SGX proofs 40% of the time, and ZK proofs 60% of the time +- no-proofs 50%, SGX proofs 30% and ZK proofs 20% of the time + +or any combination of the above. (See diagram below). + +This system categorizes blocks into different default tiers. Here's an overview of how this system works: + +### Tiered proof system + Tier Hierarchy: + The multi-proof system is organized into tiers, with Tier N being more secure than Tier N-1. Tier N-1 is (should be) always a subset of Tier N. + Tiers are designed to offer varying degrees of security and resource requirements for block validation. + + Default Tier Assignment: + Each block is assigned a default tier during proposeBlock(). + + Example of having Tier N and Tier N+1 types within the configuration: + Blocks with a default assigned Tier N can be proven with a Tier N related proof. + Blocks each has a validity- and a contestbond attached to it which has to be paid accordingly. (More about contesting one section above). + The underlying cryptographic techniques used for proofs can vary between tiers, with Tier 2 proofs typically being more robust and resource-intensive. + +### Contesting block transitions + Contest Mechanism: + In this multi-tier proof system, participants can contest the validity of block transition proofs. + If a participant believes that a block's transition proof is invalid, they can initiate a "contest" by submitting the approrpiate transaction. + + Contest Bond: + To participate in a contest, the contester is required to post a contest bond. This bond signals their legitimate intention to challenge the validity of the transition proof. + The bond is a financial commitment that discourages frivolous or malicious contests. + + Auto-Escalation of Tiers: + Upon the submission of a contest, the block's transition tier is automatically raised to the next higher tier (e.g., from Tier 1 to Tier 2). + This escalation ensures that a higher level of security is required to validate the block's transition. + +Here is a visual breakdown of the above mentioned process: + +**System overview:** + +
+ overview +
+**Block lifecycle:** +
+ lifecycle +
+ ## Off chain prover market (PBS style) Proving blocks requires significant compute power to calculate the proof diff --git a/packages/website/pages/docs/index.mdx b/packages/website/pages/docs/index.mdx index 57f3abdb77..5248994466 100644 --- a/packages/website/pages/docs/index.mdx +++ b/packages/website/pages/docs/index.mdx @@ -2,7 +2,11 @@ import { Cards, Card } from "nextra/components"; ## Welcome to Taiko 🥁 -Taiko is a decentralized, Ethereum-equivalent ZK-Rollup ([Type 1 ZK-EVM](https://mirror.xyz/labs.taiko.eth/w7NSKDeKfJoEy0p89I9feixKfdK-20JgWF9HZzxfeBo)). We're working on the full Ethereum [ZK-EVM circuits](https://github.com/privacy-scaling-explorations/zkevm-circuits) as part of a community effort led by the Ethereum Foundation's Privacy and Scaling Explorations (PSE) team. +Taiko is a decentralized, Ethereum-equivalent ZK-Rollup ([Type 1 ZK-EVM](https://mirror.xyz/labs.taiko.eth/w7NSKDeKfJoEy0p89I9feixKfdK-20JgWF9HZzxfeBo)). We're working on the full Ethereum [ZK-EVM circuits](https://github.com/privacy-scaling-explorations/zkevm-circuits) as part of a community effort led by the Ethereum Foundation's Privacy and Scaling Explorations (PSE) team but + +> "34.469 lines of code are not going to be bug-free for a long long time" - Vitalik Buterin about the ZK-EVM circuit code. + +If we can't make them bug-free then what we could do about it ? There are different practical, short and mid-term alternatives (Proof-of-governance based override, self-cancellation, etc.) to secure the network and Taiko decided to use a multi-prover system going forward. Check out the [Taiko roadmap](/images/roadmaps/taiko-roadmap.png) to see where we're going! diff --git a/packages/website/pages/docs/reference/contract-documentation/L1/IProofVerifier.md b/packages/website/pages/docs/reference/contract-documentation/L1/IProofVerifier.md deleted file mode 100644 index 031ddfe64c..0000000000 --- a/packages/website/pages/docs/reference/contract-documentation/L1/IProofVerifier.md +++ /dev/null @@ -1,24 +0,0 @@ ---- -title: IProofVerifier ---- - -## IProofVerifier - -Contract that is responsible for verifying proofs. - -### verifyProofs - -```solidity -function verifyProofs(uint64 blockId, bytes blockProofs, bytes32 instance) external -``` - -Verify the given proof(s) for the given blockId. This function -should revert if the verification fails. - -#### Parameters - -| Name | Type | Description | -| ----------- | ------- | ----------------------------------------------------------------------------------------- | -| blockId | uint64 | Unique identifier for the block. | -| blockProofs | bytes | Raw bytes representing the proof(s). | -| instance | bytes32 | Hashed evidence & config data. If set to zero, proof is assumed to be from oracle prover. | diff --git a/packages/website/pages/docs/reference/contract-documentation/L1/IProver.md b/packages/website/pages/docs/reference/contract-documentation/L1/IProver.md deleted file mode 100644 index bd28f077bd..0000000000 --- a/packages/website/pages/docs/reference/contract-documentation/L1/IProver.md +++ /dev/null @@ -1,24 +0,0 @@ ---- -title: IProver ---- - -## IProver - -Defines the function that handle prover assignment. - -### onBlockAssigned - -```solidity -function onBlockAssigned(uint64 blockId, struct TaikoData.BlockMetadataInput input, struct TaikoData.ProverAssignment assignment) external payable -``` - -Assigns a prover to a specific block or reverts if this prover -is not available. - -#### Parameters - -| Name | Type | Description | -| ---------- | ----------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------- | -| blockId | uint64 | The ID of the proposed block. Note that the ID is only known when the block is proposed, therefore, it should not be used for verifying prover authorization. | -| input | struct TaikoData.BlockMetadataInput | The block's BlockMetadataInput data. | -| assignment | struct TaikoData.ProverAssignment | The assignment to evaluate | diff --git a/packages/website/pages/docs/reference/contract-documentation/L1/IVerifier.md b/packages/website/pages/docs/reference/contract-documentation/L1/IVerifier.md new file mode 100644 index 0000000000..659192821f --- /dev/null +++ b/packages/website/pages/docs/reference/contract-documentation/L1/IVerifier.md @@ -0,0 +1,27 @@ +--- +title: IVerifier +--- + +## IVerifier + +A contract that is responsible for verifying proofs. Implementing this interface is required by different (tier) verifiers. This is a key part of our new multi-proof system. + +For example the `PseZkVerifier.sol` is a verifier tied to a tier called `TIER_PSE_ZKEVM` and will contain all the necessary code to verify a specific proof tied to that given tier. + +### verifyProofs + +```solidity +function verifyProofs(uint64 blockId, address prover, bool isContesting, TaikoData.BlockEvidence memory evidence) external +``` + +Verify the given proof(s) for the given blockId. This function +should revert if the verification fails. + +#### Parameters + +| Name | Type | Description | +| ------------ | ----------------------- | ------------------------------------------------------------------------------- | +| blockId | uint64 | Unique identifier for the block. | +| prover | address | Address of the prover. | +| isContesting | bool | A boolean to indicate if this is an actual proof or only a contest (challenge). | +| evidence | TaikoData.BlockEvidence | Evidence data to be able to verify the proofs. | diff --git a/packages/website/pages/docs/reference/contract-documentation/L1/ProofVerifier.md b/packages/website/pages/docs/reference/contract-documentation/L1/ProofVerifier.md deleted file mode 100644 index cf4d064d71..0000000000 --- a/packages/website/pages/docs/reference/contract-documentation/L1/ProofVerifier.md +++ /dev/null @@ -1,52 +0,0 @@ ---- -title: ProofVerifier ---- - -## ProofVerifier - -See the documentation in {IProofVerifier}. - -### L1_INVALID_PROOF - -```solidity -error L1_INVALID_PROOF() -``` - -### init - -```solidity -function init(address _addressManager) external -``` - -Initializes the contract with the provided address manager. - -#### Parameters - -| Name | Type | Description | -| ---------------- | ------- | -------------------------------------------- | -| \_addressManager | address | The address of the address manager contract. | - -### verifyProofs - -```solidity -function verifyProofs(uint64, bytes blockProofs, bytes32 instance) external view -``` - -Verify the given proof(s) for the given blockId. This function -should revert if the verification fails. - -#### Parameters - -| Name | Type | Description | -| ----------- | ------- | ----------------------------------------------------------------------------------------- | -| | uint64 | | -| blockProofs | bytes | Raw bytes representing the proof(s). | -| instance | bytes32 | Hashed evidence & config data. If set to zero, proof is assumed to be from oracle prover. | - ---- - -## title: ProxiedProofVerifier - -## ProxiedProofVerifier - -Proxied version of the parent contract. diff --git a/packages/website/pages/docs/reference/contract-documentation/L1/TaikoData.md b/packages/website/pages/docs/reference/contract-documentation/L1/TaikoData.md index 7fa7d03d17..c32a678eb5 100644 --- a/packages/website/pages/docs/reference/contract-documentation/L1/TaikoData.md +++ b/packages/website/pages/docs/reference/contract-documentation/L1/TaikoData.md @@ -24,11 +24,7 @@ struct Config { uint256 blockTxListExpiry; uint256 proposerRewardPerSecond; uint256 proposerRewardMax; - uint256 proofRegularCooldown; - uint256 proofOracleCooldown; - uint16 proofWindow; - uint96 validityBond; - bool skipProverAssignmentVerificaiton; + uint96 livenessBond; uint256 ethDepositRingBufferSize; uint64 ethDepositMinCountPerBlock; uint64 ethDepositMaxCountPerBlock; @@ -47,36 +43,29 @@ _Struct holding state variables._ struct StateVariables { uint64 genesisHeight; uint64 genesisTimestamp; - uint64 numBlocks; - uint64 lastVerifiedBlockId; uint64 nextEthDepositToProcess; uint64 numEthDeposits; + uint64 numBlocks; + uint64 lastVerifiedBlockId; } ``` -### BlockMetadataInput +### ProverAssignment and TierFee -_Struct representing input data for block metadata._ +_Struct representing prover assignment and associated tiers_ ```solidity -struct BlockMetadataInput { - bytes32 txListHash; - address proposer; - uint24 txListByteStart; - uint24 txListByteEnd; - bool cacheTxListInfo; +struct TierFee { + uint16 tier; + uint256 fee; } -``` - -### ProverAssignment -_Struct representing prover assignment_ - -```solidity struct ProverAssignment { - address prover; - uint64 expiry; - bytes data; + address prover; + address feeToken; + TierFee[] tierFees; + uint64 expiry; + bytes signature; } ``` @@ -88,17 +77,15 @@ accordingly._ ```solidity struct BlockMetadata { - uint64 id; - uint64 timestamp; - uint64 l1Height; bytes32 l1Hash; bytes32 mixHash; bytes32 txListHash; - uint24 txListByteStart; - uint24 txListByteEnd; + uint64 id; + uint64 timestamp; + uint64 l1Height; uint32 gasLimit; - address proposer; - struct TaikoData.EthDeposit[] depositsProcessed; + address coinbase; + TaikoData.EthDeposit[] depositsProcessed; } ``` @@ -113,15 +100,15 @@ struct BlockEvidence { bytes32 blockHash; bytes32 signalRoot; bytes32 graffiti; - address prover; - bytes proofs; + uint16 tier; + bytes proof; } ``` ### Transition _Struct representing state transition data. -10 slots reserved for upgradability, 4 slots used._ +10 slots reserved for upgradability, 6 slots used._ ```solidity struct Transition { @@ -129,8 +116,12 @@ struct Transition { bytes32 blockHash; bytes32 signalRoot; address prover; - uint64 provenAt; - bytes32[6] __reserved; + uint96 validityBond; + address contester; + uint96 contestBond; + uint64 timestamp; + uint16 tier; + bytes32[4] __reserved; } ``` @@ -142,28 +133,17 @@ _Struct containing data required for verifying a block. ```solidity struct Block { bytes32 metaHash; - address prover; - uint96 validityBond; + address assignedProver; + uint96 livenessBond; uint64 blockId; uint64 proposedAt; uint32 nextTransitionId; uint32 verifiedTransitionId; + uint16 minTier; bytes32[7] __reserved; } ``` -### TxListInfo - -_Struct representing information about a transaction list. -1 slot used._ - -```solidity -struct TxListInfo { - uint64 validSince; - uint24 size; -} -``` - ### EthDeposit _Struct representing an Ethereum deposit. @@ -212,13 +192,12 @@ _Struct holding the state variables for the {TaikoL1} contract._ ```solidity struct State { mapping(uint64 => struct TaikoData.Block) blocks; - mapping(uint64 => mapping(bytes32 => uint32)) transitionIds; mapping(uint64 => mapping(uint32 => struct TaikoData.Transition)) transitions; - mapping(bytes32 => struct TaikoData.TxListInfo) txListInfo; + mapping(uint64 => mapping(bytes32 => uint32)) transitionIds; mapping(uint256 => uint256) ethDeposits; - mapping(address => uint256) taikoTokenBalances; + mapping(address => uint256) tokenBalances; struct TaikoData.SlotA slotA; struct TaikoData.SlotB slotB; - uint256[142] __gap; + uint256[143] __gap; } ``` diff --git a/packages/website/pages/docs/reference/contract-documentation/L1/TaikoErrors.md b/packages/website/pages/docs/reference/contract-documentation/L1/TaikoErrors.md index 45d63a671b..a709a37148 100644 --- a/packages/website/pages/docs/reference/contract-documentation/L1/TaikoErrors.md +++ b/packages/website/pages/docs/reference/contract-documentation/L1/TaikoErrors.md @@ -8,34 +8,58 @@ This abstract contract provides custom error declartions used in the Taiko protocol. Each error corresponds to specific situations where exceptions might be thrown. -### L1_ALREADY_PROVEN +### L1_ALREADY_CONTESTED ```solidity -error L1_ALREADY_PROVEN() +error L1_ALREADY_CONTESTED() ``` -### L1_BLOCK_ID_MISMATCH +### L1_ALREADY_PROVED ```solidity -error L1_BLOCK_ID_MISMATCH() +error L1_ALREADY_PROVED() ``` -### L1_EVIDENCE_MISMATCH +### L1_ASSIGNMENT_EXPIRED ```solidity -error L1_EVIDENCE_MISMATCH() +error L1_ASSIGNMENT_EXPIRED() ``` -### L1_INSUFFICIENT_TOKEN +### L1_ASSIGNMENT_INVALID_SIG ```solidity -error L1_INSUFFICIENT_TOKEN() +error L1_ASSIGNMENT_INVALID_SIG() ``` -### L1_INVALID_ASSIGNMENT +### L1_ASSIGNMENT_INVALID_PARAMS ```solidity -error L1_INVALID_ASSIGNMENT() +error L1_ASSIGNMENT_INVALID_PARAMS() +``` + +### L1_ASSIGNMENT_INSUFFICIENT_FEE + +```solidity +error L1_ASSIGNMENT_INSUFFICIENT_FEE() +``` + +### L1_ASSIGNED_PROVER_NOT_ALLOWED + +```solidity +error L1_ASSIGNED_PROVER_NOT_ALLOWED() +``` + +### L1_BLOCK_MISMATCH + +```solidity +error L1_BLOCK_MISMATCH() +``` + +### L1_INVALID_ADDRESS + +```solidity +error L1_INVALID_ADDRESS() ``` ### L1_INVALID_BLOCK_ID @@ -68,12 +92,6 @@ error L1_INVALID_EVIDENCE() error L1_INVALID_METADATA() ``` -### L1_INVALID_ORACLE_PROVER - -```solidity -error L1_INVALID_ORACLE_PROVER() -``` - ### L1_INVALID_PARAM ```solidity @@ -104,16 +122,22 @@ error L1_INVALID_PROVER() error L1_INVALID_PROVER_SIG() ``` -### L1_NOT_PROVEABLE +### L1_INVALID_TIER ```solidity -error L1_NOT_PROVEABLE() +error L1_INVALID_TIER() ``` -### L1_SAME_PROOF +### L1_NOT_ASSIGNED_PROVER ```solidity -error L1_SAME_PROOF() +error L1_NOT_ASSIGNED_PROVER() +``` + +### L1_TIER_NOT_FOUND + +```solidity +error L1_TIER_NOT_FOUND() ``` ### L1_TOO_MANY_BLOCKS @@ -122,34 +146,46 @@ error L1_SAME_PROOF() error L1_TOO_MANY_BLOCKS() ``` +### L1_TRANSITION_ID_ZERO + +```solidity +error L1_TRANSITION_ID_ZERO() +``` + ### L1_TRANSITION_NOT_FOUND ```solidity error L1_TRANSITION_NOT_FOUND() ``` -### L1_TX_LIST_NOT_EXIST +### L1_TXLIST_INVALID_RANGE + +```solidity +error L1_TXLIST_INVALID_RANGE() +``` + +### L1_TXLIST_MISMATCH ```solidity -error L1_TX_LIST_NOT_EXIST() +error L1_TXLIST_MISMATCH() ``` -### L1_TX_LIST_HASH +### L1_TXLIST_NOT_FOUND ```solidity -error L1_TX_LIST_HASH() +error L1_TXLIST_NOT_FOUND() ``` -### L1_TX_LIST_RANGE +### L1_TXLIST_TOO_LARGE ```solidity -error L1_TX_LIST_RANGE() +error L1_TXLIST_TOO_LARGE() ``` -### L1_TX_LIST +### L1_UNAUTHORIZED ```solidity -error L1_TX_LIST() +error L1_UNAUTHORIZED() ``` ### L1_UNEXPECTED_TRANSITION_ID @@ -157,3 +193,9 @@ error L1_TX_LIST() ```solidity error L1_UNEXPECTED_TRANSITION_ID() ``` + +### L1_UNEXPECTED_TRANSITION_TIER + +```solidity +error L1_UNEXPECTED_TRANSITION_TIER() +``` diff --git a/packages/website/pages/docs/reference/contract-documentation/L1/TaikoEvents.md b/packages/website/pages/docs/reference/contract-documentation/L1/TaikoEvents.md index 34a0ae37b8..fc3d44b19a 100644 --- a/packages/website/pages/docs/reference/contract-documentation/L1/TaikoEvents.md +++ b/packages/website/pages/docs/reference/contract-documentation/L1/TaikoEvents.md @@ -14,53 +14,79 @@ L1 libraries._ ### BlockProposed ```solidity -event BlockProposed(uint256 blockId, address prover, uint256 reward, struct TaikoData.BlockMetadata meta) +event BlockProposed(uint256 blockId, address assignedProver, uint96 livenessBond, uint256 proverFee, uint256 reward, struct TaikoData.BlockMetadata meta) ``` _Emitted when a block is proposed._ #### Parameters -| Name | Type | Description | -| ------- | ------------------------------ | ------------------------------------------------------------------- | -| blockId | uint256 | The ID of the proposed block. | -| prover | address | The address of the assigned prover for the block. | -| reward | uint256 | The proposer's block reward in Taiko token. | -| meta | struct TaikoData.BlockMetadata | The block metadata containing information about the proposed block. | +| Name | Type | Description | +| -------------- | ------------------------------ | ------------------------------------------------------------------- | +| blockId | uint256 | The ID of the proposed block. | +| assignedProver | address | The address of the assigned prover for the block. | +| livenessBond | uint96 | The bond which needs to be paid by the assigned prover. | +| proverFee | uint256 | The amount paid to the prover. | +| reward | uint256 | The proposer's block reward in Taiko token. | +| meta | struct TaikoData.BlockMetadata | The block metadata containing information about the proposed block. | -### BlockProven +### TransitionProved ```solidity -event BlockProven(uint256 blockId, bytes32 parentHash, bytes32 blockHash, bytes32 signalRoot, address prover) +event TransitionProved(uint256 blockId, bytes32 parentHash, bytes32 blockHash, bytes32 signalRoot, address prover, uint96 validityBond, uint16 tier) ``` -_Emitted when a block is proven._ +_Emitted when a block transition is proven or re-proven._ #### Parameters -| Name | Type | Description | -| ---------- | ------- | -------------------------------------------------- | -| blockId | uint256 | The ID of the proven block. | -| parentHash | bytes32 | The hash of the parent block. | -| blockHash | bytes32 | The hash of the proven block. | -| signalRoot | bytes32 | The signal root of the proven block. | -| prover | address | The address of the prover who submitted the proof. | +| Name | Type | Description | +| ------------ | ------- | ------------------------------------------------------------------------- | +| blockId | uint256 | The ID of the proven block. | +| parentHash | bytes32 | The hash of the parent block. | +| blockHash | bytes32 | The hash of the proven block. | +| signalRoot | bytes32 | The signal root of the proven block. | +| prover | address | The address of the prover who submitted the proof. | +| validityBond | uint96 | The amount prover pays to have finanical incentive to submit legit proof. | +| tier | uint16 | The tier per given transition. | + +### TransitionContested + +```solidity +event TransitionContested(uint256 blockId, bytes32 parentHash, bytes32 blockHash, bytes32 signalRoot, address contester, uint96 contestBond, uint16 tier) +``` + +_Emitted when a block transition is contested._ + +#### Parameters + +| Name | Type | Description | +| ----------- | ------- | ---------------------------------------------------------- | +| blockId | uint256 | The ID of the proven block. | +| parentHash | bytes32 | The hash of the parent block. | +| blockHash | bytes32 | The hash of the proven block. | +| signalRoot | bytes32 | The signal root of the proven block. | +| contester | address | The address of the contester. | +| contestBond | uint96 | The amount contester pays to signal it's legit intentions. | +| tier | uint16 | The tier per given transition. | ### BlockVerified ```solidity -event BlockVerified(uint256 blockId, address prover, bytes32 blockHash) +event BlockVerified(uint256 blockId, address assignedProver, address prover, bytes32 blockHash, bytes32 signalRoot) ``` _Emitted when a block is verified._ #### Parameters -| Name | Type | Description | -| --------- | ------- | ------------------------------------------------------------------ | -| blockId | uint256 | The ID of the verified block. | -| prover | address | The address of the prover that proved the block which is verified. | -| blockHash | bytes32 | The hash of the verified block. | +| Name | Type | Description | +| -------------- | ------- | ------------------------------------------------------------------ | +| blockId | uint256 | The ID of the verified block. | +| assignedProver | address | The address of the originally assigned prover. | +| prover | address | The address of the prover that proved the block which is verified. | +| blockHash | bytes32 | The hash of the verified block. | +| signalRoot | bytes32 | The latest value of the signal service storage. | ### EthDeposited @@ -76,25 +102,75 @@ _Emitted when an Ethereum deposit is made._ | ------- | --------------------------- | --------------------------------------------------------------------- | | deposit | struct TaikoData.EthDeposit | The Ethereum deposit information including recipient, amount, and ID. | -### BondReceived +### TokenDeposited ```solidity -event BondReceived(address from, uint64 blockId, uint256 bond) +event TokenDeposited(uint256 amount) ``` -_The following events are emitted when bonds are received, returned, -or rewarded. Note that no event is emitted when a bond is kept/burnt as -for a single block, multiple bonds may get burned or retained by the -protocol, emitting events will consume more gas._ +_Emitted when a user deposited Taiko token into this contract._ + +#### Parameters + +| Name | Type | Description | +| ------ | ------- | ------------------- | +| amount | uint256 | The deposit amount. | -### BondReturned +### TokenWithdrawn ```solidity -event BondReturned(address to, uint64 blockId, uint256 bond) +event TokenWithdrawn(uint256 amount) ``` -### BondRewarded +_Emitted when a user withdrawed Taiko token from this contract._ + +#### Parameters + +| Name | Type | Description | +| ------ | ------- | --------------------- | +| amount | uint256 | The withdrawn amount. | + +### TokenCredited ```solidity -event BondRewarded(address to, uint64 blockId, uint256 bond) +event TokenCredited(uint256 amount, bool minted) ``` + +_Emitted when Taiko token are credited to the user's in-protocol balance._ + +#### Parameters + +| Name | Type | Description | +| ------ | ------- | ----------------------------------- | +| amount | uint256 | The withdrawn amount. | +| minted | bool | Indicating if minting is necessary. | + +### TokenDebited + +```solidity +event TokenDebited(uint256 amount, bool fromLocalBalance) +``` + +_Emitted when Taiko token are debited from the user's in-protocol balance._ + +#### Parameters + +| Name | Type | Description | +| ---------------- | ------- | ----------------------------------------------- | +| amount | uint256 | The debit amount. | +| fromLocalBalance | bool | Indicating if debit from local balance or burn. | + +### TokenWithdrawnByOwner + +```solidity +event TokenWithdrawnByOwner(address to, uint256 amount) +``` + +_Emitted when the owner withdrawn Taiko token from this contract._ + +#### Parameters + +| Name | Type | Description | +| ------ | ------- | ------------------------ | +| to | address | The beneficiary address. | +| amount | uint256 | The amount. | diff --git a/packages/website/pages/docs/reference/contract-documentation/L1/TaikoL1.md b/packages/website/pages/docs/reference/contract-documentation/L1/TaikoL1.md index d5d94b6835..7929606efa 100644 --- a/packages/website/pages/docs/reference/contract-documentation/L1/TaikoL1.md +++ b/packages/website/pages/docs/reference/contract-documentation/L1/TaikoL1.md @@ -4,6 +4,284 @@ title: TaikoL1 ## TaikoL1 +### state + +```solidity +struct TaikoData.State state +``` + +### receive + +```solidity +receive() external payable +``` + +_Fallback function to receive Ether and deposit to Layer 2._ + +### init + +```solidity +function init(address _addressManager, bytes32 _genesisBlockHash) external +``` + +Initializes the rollup. + +#### Parameters + +| Name | Type | Description | +| ------------------ | ------- | ------------------------------------ | +| \_addressManager | address | The {AddressManager} address. | +| \_genesisBlockHash | bytes32 | The block hash of the genesis block. | + +### proposeBlock + +```solidity +function proposeBlock(bytes input, bytes assignment, bytes txList) external payable returns (struct TaikoData.BlockMetadata meta) +``` + +Proposes a Taiko L2 block. + +#### Parameters + +| Name | Type | Description | +| ---------- | ----- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| input | bytes | An abi-encoded BlockMetadataInput that the actual L2 block header must satisfy. | +| assignment | bytes | Data to assign a prover. | +| txList | bytes | A list of transactions in this block, encoded with RLP. Note, in the corresponding L2 block an "anchor transaction" will be the first transaction in the block. If there are `n` transactions in the `txList`, then there will be up to `n + 1` transactions in the L2 block. | + +#### Return Values + +| Name | Type | Description | +| ---- | ------------------------------ | -------------------------------------- | +| meta | struct TaikoData.BlockMetadata | The metadata of the proposed L2 block. | + +### proveBlock + +```solidity +function proveBlock(uint64 blockId, bytes input) external +``` + +Proves a block with a zero-knowledge proof. + +#### Parameters + +| Name | Type | Description | +| ------- | ------ | ---------------------------------------------------------------------------------------------- | +| blockId | uint64 | The index of the block to prove. This is also used to select the right implementation version. | +| input | bytes | An abi-encoded {TaikoData.BlockEvidence} object. | + +### verifyBlocks + +```solidity +function verifyBlocks(uint64 maxBlocks) external +``` + +Verifies up to N blocks. + +#### Parameters + +| Name | Type | Description | +| --------- | ------ | ------------------------------- | +| maxBlocks | uint64 | Max number of blocks to verify. | + +### depositTaikoToken + +```solidity +function depositTaikoToken(uint256 amount) external +``` + +Deposits Taiko tokens to the contract. + +#### Parameters + +| Name | Type | Description | +| ------ | ------- | ---------------------------------- | +| amount | uint256 | Amount of Taiko tokens to deposit. | + +### withdrawTaikoToken + +```solidity +function withdrawTaikoToken(uint256 amount) external +``` + +Withdraws Taiko tokens from the contract. + +#### Parameters + +| Name | Type | Description | +| ------ | ------- | ----------------------------------- | +| amount | uint256 | Amount of Taiko tokens to withdraw. | + +### depositEtherToL2 + +```solidity +function depositEtherToL2(address recipient) public payable +``` + +Deposits Ether to Layer 2. + +#### Parameters + +| Name | Type | Description | +| --------- | ------- | ------------------------------------------------------------ | +| recipient | address | Address of the recipient for the deposited Ether on Layer 2. | + +### getTaikoTokenBalance + +```solidity +function getTaikoTokenBalance(address addr) public view returns (uint256) +``` + +Gets the Taiko token balance for a specific address. + +#### Parameters + +| Name | Type | Description | +| ---- | ------- | ----------------------------------------- | +| addr | address | Address to check the Taiko token balance. | + +#### Return Values + +| Name | Type | Description | +| ---- | ------- | --------------------------------------- | +| [0] | uint256 | The Taiko token balance of the address. | + +### canDepositEthToL2 + +```solidity +function canDepositEthToL2(uint256 amount) public view returns (bool) +``` + +Checks if Ether deposit is allowed for Layer 2. + +#### Parameters + +| Name | Type | Description | +| ------ | ------- | -------------------------------- | +| amount | uint256 | Amount of Ether to be deposited. | + +#### Return Values + +| Name | Type | Description | +| ---- | ---- | -------------------------------------------------- | +| [0] | bool | true if Ether deposit is allowed, false otherwise. | + +### getBlock + +```solidity +function getBlock(uint64 blockId) public view returns (struct TaikoData.Block blk) +``` + +Gets the details of a block. + +#### Parameters + +| Name | Type | Description | +| ------- | ------ | ------------------- | +| blockId | uint64 | Index of the block. | + +#### Return Values + +| Name | Type | Description | +| ---- | ---------------------- | ----------- | +| blk | struct TaikoData.Block | The block. | + +### getTransition + +```solidity +function getTransition(uint64 blockId, bytes32 parentHash) public view returns (struct TaikoData.Transition) +``` + +Gets the state transition for a specific block. + +#### Parameters + +| Name | Type | Description | +| ---------- | ------- | ------------------------- | +| blockId | uint64 | Index of the block. | +| parentHash | bytes32 | Parent hash of the block. | + +#### Return Values + +| Name | Type | Description | +| ---- | --------------------------- | --------------------------------------- | +| [0] | struct TaikoData.Transition | The state transition data of the block. | + +### getCrossChainBlockHash + +```solidity +function getCrossChainBlockHash(uint64 blockId) public view returns (bytes32) +``` + +Fetches the hash of a block from the opposite chain. + +#### Parameters + +| Name | Type | Description | +| ------- | ------ | ------------------------------------------------------------------------- | +| blockId | uint64 | The target block id. Specifying 0 retrieves the hash of the latest block. | + +#### Return Values + +| Name | Type | Description | +| ---- | ------- | --------------------------------------------------- | +| [0] | bytes32 | The hash of the desired block from the other chain. | + +### getCrossChainSignalRoot + +```solidity +function getCrossChainSignalRoot(uint64 blockId) public view returns (bytes32) +``` + +Retrieves the root hash of the signal service storage for a +given block from the opposite chain. + +#### Parameters + +| Name | Type | Description | +| ------- | ------ | ------------------------------------------------------------------------- | +| blockId | uint64 | The target block id. Specifying 0 retrieves the root of the latest block. | + +#### Return Values + +| Name | Type | Description | +| ---- | ------- | ------------------------------------------------------- | +| [0] | bytes32 | The root hash for the specified block's signal service. | + +### getStateVariables + +```solidity +function getStateVariables() public view returns (struct TaikoData.StateVariables) +``` + +Gets the state variables of the TaikoL1 contract. + +#### Return Values + +| Name | Type | Description | +| ---- | ------------------------------- | ------------------------------------------------- | +| [0] | struct TaikoData.StateVariables | StateVariables struct containing state variables. | + +### getVerifierName + +```solidity +function getVerifierName(uint16 id) public pure returns (bytes32) +``` + +Gets the name of the proof verifier by ID. + +#### Parameters + +| Name | Type | Description | +| ---- | ------ | ------------------- | +| id | uint16 | ID of the verifier. | + +#### Return Values + +| Name | Type | Description | +| ---- | ------- | -------------- | +| [0] | bytes32 | Verifier name. | + ### getConfig ```solidity @@ -18,8 +296,6 @@ Gets the configuration of the TaikoL1 contract. | ---- | ----------------------- | -------------------------------------------------- | | [0] | struct TaikoData.Config | Config struct containing configuration parameters. | ---- - ## title: ProxiedTaikoL1 ## ProxiedTaikoL1 diff --git a/packages/website/pages/docs/reference/contract-documentation/L2/TaikoL2.md b/packages/website/pages/docs/reference/contract-documentation/L2/TaikoL2.md index 45904f8c18..eff1b301e0 100644 --- a/packages/website/pages/docs/reference/contract-documentation/L2/TaikoL2.md +++ b/packages/website/pages/docs/reference/contract-documentation/L2/TaikoL2.md @@ -152,20 +152,6 @@ message verification. | l1Height | uint64 | The latest L1 block height when this block was proposed. | | parentGasUsed | uint32 | The gas used in the parent block. | -### updateEIP1559Config - -```solidity -function updateEIP1559Config(struct TaikoL2.EIP1559Params _param1559) public -``` - -Updates EIP-1559 configurations. - -#### Parameters - -| Name | Type | Description | -| ----------- | ---------------------------- | ---------------------------------------------------- | -| \_param1559 | struct TaikoL2.EIP1559Params | EIP-1559 parameters to set up the gas pricing model. | - ### getBasefee ```solidity diff --git a/packages/website/pages/docs/reference/node-troubleshooting.mdx b/packages/website/pages/docs/reference/node-troubleshooting.mdx index 78accb5d21..64a4781e2a 100644 --- a/packages/website/pages/docs/reference/node-troubleshooting.mdx +++ b/packages/website/pages/docs/reference/node-troubleshooting.mdx @@ -30,7 +30,7 @@ Your RPC provider has a limit on the number of requests. You can try using an RP The block that you want to prove has already been verified, you can ignore this. -#### `error: L1_ALREADY_PROVEN` +#### `error: L1_ALREADY_PROVED` This block has been proven by someone else, but it's not verified yet, you can ignore it. diff --git a/packages/website/public/images/protocol/BlockLifecycle.png b/packages/website/public/images/protocol/BlockLifecycle.png new file mode 100644 index 0000000000000000000000000000000000000000..9e936d9f3d92907ae587d0777f276711cac93365 GIT binary patch literal 3709493 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�sxW&xU$oV|bI?BoD^WD5_7G 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�~T-4?uG%9@rN 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 CvkGd@1@D_7Y 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 z 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⁣TSmql6B` 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

  • &#ewFcCY*0OaQ;|lQG|G42K;5EE& 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

    An@}FD)ZgARPWfL|Vs0<{& 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

    U(KK>edSvt~bClQDV|#AN;N4 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°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

    CZ{zfvU*rE;_+b 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�pN>xaH_oz@(PC?Kh?&?=sEMWIu5%KIA#^k8>C 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 }E;|{*D)%KbU*_<4p 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%0Ac%_V0&-wwh--*tC(LtCojfMWrRt&gy1PRustgzy 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ෞqdT>+Ds6jdUF1WDMBXbD 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
    nP=cmUvPty;e=4Aq3r5Y` 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
    0XA0~-FZW3|zxN%Zu6MrJ8}xP-?b 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

    vUIxG2y(aFO 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 F~BN=6et~A}`}} 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 z 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

    ?lP3ivA^`aJWp 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

      4RLK=>7Q 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⪻hwbWWHR(92 zJu^)NS86U!^Km)f;PrOKNre^%UmoHgXJV|m+Dje7?_=dwC%T|NI?hCFoTEgz{@O+_ z6=fQ2!xOP`wk#SEn+`!uWU_0oPvhO0^Om$@nOm?Vk3Rh}Hq~S{)V3fP;n^@67`HnO zB<+z=G{1~HdkO21&+5>Mm@Zl`b%Sw^!V~Zw3@nl z<(u>ygacddTIkc+raf>Rqv~B^SswRNFra`2ITYRv>v;+{hkQG&Z%}3m2DJ797pO~puD^R+vll#Hm-XQGbNR1vPrbm%5NUyT2u^Jga?mm9PHRGX#zqw320^$G+JLA;vqh1Xm+1@iso!9)>>2)hCk4 zSss03HQF4$=;UZVU5Cma_7+dSx#lD*Vb6nwD3 z&I+OKw{^4szeN1}f1Hvi?zf>PdqYMR_QI`@ga`jh!ykk@81#>%dufgtR@NfX#2lE! z6tdK4ng-j`Hb06L^c;&d7awE!I{;oTydfFe89nrc`Ph!;(XkV`nT6@7*KuP`S;w)|;!^b+)bNV$?F;j3P6^KdonhhVX1t0E4o z&i8K8crs z$-G*MlNfma{k@L4m3}A-1Am6PjrQg&ko>wAz^63mrB#IsOV^pOuq#VpF-uGE!3*+d zc!$pNdivvLC~W7NU>bsytQ|k~P^wD^Qq}I%r}ZxlyTEPi3}^E8VkSLj@l(TlJ;0Ci z&)PF_bdDz35t=T2R&L?=VT}IfZYrq6m>Btu;NBeVlEN5<$e=Kyy{8VPlKA?hV|1PC zS?Ej(aF6wv!A>$6wlBE0%(tulu)VOB+2}>hcD!AHC|SS!?xf8M`7UuPsBI}-)w4+P zV7SR+HJh2N5h{n&#^BxWVLk1Ui%TYRCB8AnUU>w|URyg=fa}|T2nVhR1&?o__FCKc zYA%*PAOeW_uS8{^lsb<?7PM- zgNKifZ}z2!tJZO}J%)*NrDgG=bkFd|IZQF?=aMO=(GE;#DR}nl_bE=!1`;NaZ-K0( zJG8Kn7f`CJw^puHoi*^gn9DCXsjbm?iI-+;#b^ColN5Pd3u4EvE{tGZVYSe6nnPV!V8_3ygZs#v!dC+2W$J+n8WvGeBI+2g=6SN9NH32jXMCVt=7i62XAbW>wK&Mu(aeMs|D zD->Y2cq@3*N~4%&$DsvZtLpE$2xhT{jW$|EOC&f;S(!`Gn_M|hH)5=sDK)ocHw4Z- zU5!xKwB-i7_50`=TmGi@3XiFLF5}Edz7W|C0l2q>!U8h3ateli!x!iMBwZ4W>sdDQ zLVW*e-5a?0I6S;O>Zh8BE2l&T`pTOy$zAI-fVpiO8 zGwiJ!iF%Ki8z!`Hi&sqe<9w?19#s+#FJ}+LFS5D8HZucy6U8qmQ1a zkUr{PbQ-LHJl_o&-OZ{o9}6Zjm_MZ(TxLzKu*;@1^n25#5FoxtPUT`Fl_C5Zd5(1- z5|hQgxjEnRPvx@7fa{N^1oupxmTbeJzMC27jfvABsgOy%MaR93@`FyqTfL&OS2o>g zp7d(2nT2_jP4&6=MuL$Jp3Sa+z#v;DW@rg-M+TYR)eKER3E{**hM`OkfI(Vq%E!GY zydd<7MoyBG*`7f}h-mb@b_}7;Y*VH&WjiPyBBHg#ux(GZs=u`jj63rjr7zDXgefLd zFZlkfjX+eT;40I6=$sQBHa0wdTh5e0>n6Ts!3X~Zv>JPv_Z;4eK~t%VP6lH3bN&6A z8<_uVV?LW*n>x>=4yUcsct*|t?^Bt7LWY3M*jKG;lpvrsXCTgNt(v&NX>iXb?%wXW z)L2_}L8ju6d->;7s>c-XkQbrIl3iRbyLd@X{d8Fh^KYa>?ES~j)hkwjQtUPct}iS6Q@mv_hbYtOBWBtc>2h_g6^~wHxN9w13CZLOmMj~X2%=`nL%3j( z;bX6>naYonziqBoQa#5vPp-GXN4Ir0qO2#xY>dsP?Y}SWS!rS4n2>s2vA9F%H{2I{ zaz!>TAoU4!Pr-EBnZy#g@s<)bVDj8lt1+=yxch{baDgw2alP3QPO|iMmKZqRi7axa zdD4og_O3MIW=TdI$YsceI@TgtyF}#4B8?)5mx7VFC#6f`H)6!=*g1bX}_%df(icStci0 z3ceTm(>1`dEGzVX4UhbPC(B1dswE}h&6!0AiJ+DUv!3G&Q4|q{=-o_Ck+WfZ@$igHh z%1Oo|TtMw=G@*w4Sm|&wbLd573Nv(K&zeqfq1&w9yy}@9y8JfLz4??nF*q?4+~3Jr z>SIKmvXzPCN z?tU$1ZB-fU_;2nH#wDn?i=hEY@ z1f_HxZ8Iy{Cyb4y4bQ4z$;Tcix069Z4PJ0Aif$3>80f8I@{d01wxzqgnkENs0-|0{ z>(|L#$Nr91kBb`Jh+gS%=3SDTPB`XBQ~o#ik}6H%h;&U;AC?wW)Uiz*{@;wcSH4_d zSx*M%;PP;)X>4#ACRyLH?j(8Y>rD>1`$YI>=R*h`8LoPm2M$A2A`ztGBW3jt_T3K( zzPsntO_FXaT;NSb%Mx_TZ!Zzu*mp@f1R)>E?1Sb90$J8^4Gjw5M2 z#0&!7m{x!%0efLICgjt8#ViJofq$pgzR(lsJ?E|OhK5=mmJ5OhCO6Cg3TEh-HT4P; z&A-57+D?o({LGj!wP;L`4FhwdO6Uu~3K1kwpI?Y%WBRhB8-4e(_JpxB$a?|ubpMnB zL?oVi$UO*7n+b81VU0gF6x`F^--9ncS)J<*uhxhdIqWlMHROO~9b07{46EOMTlw2z zA?f?HcmmsXE83L#7Yej=>x0~m4A(T@V&9KEU3eO?q(5m|W;I&+pMdYZ(Z{a?Hh=M% zde!RlpxK2PWBVC0VzoK28NLbG+XjttVN#Pr7dXMsN#3NH0@|y6k?lRM8*Y_K1cl8vX3LJJ z-xxQoP((v54+#Co=`W(V&cBP^KRoYOTG@_ATYC<-tpmQygK&C{I%RI615bAF^64Mf z9ORV(@qg^lR)fW{0i%BV`%18?;N`82ytQXP7CY7%ZDH9LR7sjgQzCmD+6pciW#)36 ztZIDF$0U}Pl>wQPIj=gE3RaTyTHdS1-V*)wuu zji=&5{jP_OCXjS@^)t?Yrs%kBcweRZx<$hlJHxh08o1AW^8=`&&YTcgsYAnIUlyY> z!bNg0863uuURHEz)^jCcwW88K>FrYl_@}=Uc;s$9m|p+b)j5TZWSZ^e$M?>9FWH6N zVpfWhg0J3NzLwGY+{1*_b$^IiWhJhV+z}zmpQob;!!nTRxZ$}?;f;Js{m5c>ffF{& zU1RByZr}G-z%2s;1Mr()l%ONWUOu_3LW@rCa6}sE-RKO4;+p?VVNK`IDhyzC zaT|V|?;RulAV8od~fzx}7{xD>(V+()eWhNG|?FSQ1;O+oxUN-4#~D81{Z?(iF; z=@^-nqr)%+6rXc2CiY2M29R)Uxzsz8Jx^XUD>G7CvSit#HeDJ@G% z#2VXTJp7CorRx4jbmHWd^x}u}ip&sPG3NU6Z|{rYokjX*J@2+>KI_^ zCGDML;?I5ZcE3@*=xaG~Rb2|o5FVC*B3Gj;Ozi)_fAtQwz%$nw%ClJ6&jHbk&kH~} z|IqwzvnO`0F~%uT&nWNh%SnR9Y+BMxu>=`qGdZ)C=mBWH(Lj|HRic9@3`#^_*Dcn6k>TS}Ay zPWhe^w1Mci^3=54s04cj$*D}PQ_;d^;z!=*Gf!tx;?oViez= z*BB}Mx7Tr5CeLc9J&7mtl=y@&=sYs-aSgew@3E3{IHg_uDc`-gpEkZLMXKXfrWktk z=Fot>g2H7BJ}(w2?T$*+IPhfCQQdm`w4@@~9tuZk8|C`4OzShfqh& zGrR<#h~laDsW(*A4P)gRs`IN0?&7L9BEK7Jb?idv8ciY({kPPH9Rt-5R~N_Cxl4%h zQIuQqMON`p_FJk#+1{Sg8^#4Xyl*^ml31R@!L!DRPNubR2D%J$y^*@V`T28IJ4&M- znT)FK6kRe`fz&|?!8By0F%QK%;dN|t-CJsQ4LwL!5FFTb5SWwv-cXB(cqHlYOarqo z@OSIN8B;^*I;?5c(8q1Z|MlUp)YJ zht8y|!+SqNO~tQxdl>`Y8~ACl{H4)(5@55olsuoJn+C_1n+hbLIy1hR?~g8XTOteft6b-IocnSS>m5qp{4(sy}NZ;gt)pXv=&j^=&IQgT2rC-V zj#W$u_M+&$ky7;WD`w=V?9eg~xKJsb_Y&~ilOmdTB>_(1g6K8+boJ5el4Eb4fRwxG~VuBWF zrkkHb+=Cg`u>R!}C+&T(1fmJ|>1#@qA8p~c4%ondzf7xaMYD*~B?4Sp;^=o23gI-jhWuMqvB5YDE z9GH>YvbTX|>tgnSOR$n^TYLssePncdI58M)lzhBx*uESsq2&(9=gd~Z zD0;HdgHnlXt*+)i0Wza_B)!K38r=uVMIghMfcG?JVfcFxbQi8eqOK_6=iaQMLr zJe_EE`%+b%x&)RjM$)%-L~#T+kUKp46FwOq;?TPq1GIlv7()MhB%Kb1Yxu58Sl$24 z|Kj9U+j^GEd|OZ&$|Qd=^fPxosGrnGvLN5Qc|l<#|E@rD^)8nD1{rwTh^P&nUZK9RfGH{l#XA)g^9gR1qlo0ByGIj28S15URoy1Rn-;nA>nyi%vHQ{cX1YDHE8m=vZ~?lw)gs|vGyjYvSE-rSck;e- zq^HSm{ok%r6`Xx%PsimA$FFJlOx6f0(;C(pwRkPUK&_e;9$!Rv zt8>cz2Z)2UO$8H}XtYZc0G8Z*sYa8dmTK#J0HO1XU?6-Xms-%8q;bayRTKEs*G;)P zs}XR_ma{^_v84{i3J>{0_9^GerdBTH_GCu^f90N44>1s}(w2)`KV>L_ckBBzx;Nx% zFo7bsUXT8b)F~=(yPDkr936{rQv!5R`u}OlGrqes6dz7Oiol zU_M`-0WdjYAj2^xLuq!=DxQ2Aoh}DjXcJFI2gv#yvn3FOGY-iR>Nf3J97!ok)H_IT z+gs&*M~6Yd0mFLY4AV~7@26IAy=%+BCha=Xq03nLrC2P>uE869Oxp;1g6ZtdzYN}v z@TDHRZP2j=q3!AxY=wL69v9dd`M`W#l0zlQT0jJ5Jr!#7KudxwW>@sUq%@>&+9T(R zIx*II_BX{w7_L6EM{{^LDdF$HrCtXd&URUUR2|4Jnb?jCKPs6X7xKsZ@esRo;C%hb zY0m3i*BAfbXT@Ik19&gLdG3iT1T)YV6ASLm+RXnb;kR%?uBCrU>a4BE>~>&_Cf|Yz zj56+OY;`JE`}%3Q3s7U>su4PNiNonyz)o95+R3yiw#!7W-UdjR@;XzK>(b0O^^z=p z^C9!P7{>Td0B!NZ5(M4gNImFR9!-6``S4+ep+4OA!l3fJdeUymk^YZcDukp0)I=?R zmewR6gNT>;A}m_bNDHgOjpOw`CX!xkcZ~?n9bn6oqTZ{Eg=M6m3rm|Q_MGxtNJRaW z0q^aT_FCQrFbjN%xYrP1>%3rA?wGi+&pX;FyS|E@)?cnlTS_aQ*j}>9pqW=_kdqOX z)tmW|iX=d2NCr13-Ss1)lH^(AI8G0*IlP`U_E^fl`ljvSfC??`6qj1_E~#jJ{ok_u z2_h-T?!R>%kV%s{>m7cOxrGN>JD;-YkG8sCnTl9;`(m#=GQ@0 z;6>giLQu%+W$J9!^C8|fepL+eX99R@>%3NuLy+y(j|JXj&IWTW$TE1t`>_^ayp(rofdhx-O zkn#w32^|8DO#Q&&`pp8KDMkZCy~jtu&C&bEMnLLp8ilZ?E*{tMm4|m7oMG|IG1qGN zi##;DfA;o%?eiDMb8ul(fWhw_U=;}Y&0LJi z>pT6%tTJyFFMOg!9^j71Tra7r3HA?&eIA?0|JHQ`k^W6%TnwF>#_l`cKYgMPyyoj( z2!4VjE)j;CG4`g7)?3-sKD`5D_s-?AvJIAzqqZa_7C(>IQuvykNJtM;sn!fY`9tQ7 zeWEDOe0KN5+{&^c>Ds@oj04{|wPsG2`@eSL(n6m%<9gHSNVHe1?A5EU;0f4d6nt9S zU+?lo-8db$>~|No8J>&xXcm+7Y5*ymfDc9A`;q|Ju3&t3JGX_nY%fO(x?eVtYyE5M zVPE^!mISjR^^9r@fFST~WzWJ^KxvpePW^MMwS>WuQmu~SrPE<{4dQUCnai}r2#EUh zpZdVJo}yr`)f6q8nTEY7U9v^^Cm=hPKkKw0k)0_HYTJR)L>7-ps}`#78gO#h@*lH% zJW_ydfJv2?+II3G^-raLTf{&g&eoyUqZ?;;q~9j=2Zw;n8`**O)`A&jY3V+rsi?O6 zRANl}a+e)wo_5(vw%m4Q`(v2Xe5*Rcuti5?GM;*$lk8`8s0aU$HNCYb+Ef#!vX8N4 zH0fszvPJsHu-S%KaIs!=%_YyWGN0vbHDBtV8o_=Ear3fj_i`&|x9XM2Aokx^MDYaK z!_+fLJ@;>JJ^)!D(@Y%}HdKzoT(T6L3Dpm{;6s5dmc1)A^(%rcc7`2FF7mR zQfUNrZJ2KVny|Sa^C~W8JJl!WfGIo~V>8J)d5jrTSeN;h87&>{k1szrA|iqd?NtK(X#NX1<_cNzX|akW zNft(cSC5R`oDSYJ<$WrE1)3DlmRg0CqpBp$z<4(5-dEn#evA*iN>M!IOnW}s%H)@r z@f9j3ygETpS=}ovtFba8 zFU;|4CD-_N11dGR!d@*I*_hi&Qc$AN4*f_JKuVjJtrS6Yk9D8?p`ZD# z3=H5z_Bnw2uP<{baCPu?{S*kUQywrr2C#^;vl+kd@oxLlXMy-ly|i?b>s_-vWl5o#E|0 zE*o|Cx;{YI(GK%lMh6PeB-?%D&jso}kq5uE0w(X{E;JGy>l1Hwgy*q41Tx*rp2O*<}w@0pN3O>?&&RU=4&5(=#&<_PiO;&h#$Ta5@{OS2a?t?<*YSzuX~3cDMwC- zw))hRmCd;R((Jd16_JT<2ykhBI2W2+!hL$|qwZeHzqibHkQ}f;+tbZ{*esWEa(mkK z6(d`iUAI-~pgY;-2qE~`HI8siQg5=dw(cbnsp|8I2Z(BbuA=D#rbsKTjQDwxw2^iL z45h+m&)P8Kz+cy}gr%UAVEV!Q|ECVm-a&WaP8qbHyLQ`LCFpbna|}Skwxyv=a_Q>l zZ}=Ab!t7JF()nbC7wvyaN?oe2*UjYgzhVx2{+?Cc78W)A7ClD9O0;`^#vm>29%7$w zHq{P=!j-!y{Ut8ov=8GUXa8pP_eO5J+y=cZxD%-yO=blYyn1rwuR%ig$HPlXz)V1iT>91By z87~lxrDZ~YsZ^qyL)ZqjGWXLTPazk;G>UOVz~##RMdTbx!T-{)UNTJDGuoGMf#z1e+`DUfvc(LHh)wJVH|45jfQ{l+EfDr@$aqfAz;nLWKnS%s)XZ&~q0Q;` z&aabh@Y?m-$s$7=2*RpkXh?aTT(6jPjoRRPsHY5Mm)mO~<1aCrdQ#?8v8Y-`Od1*p zvG|GtEC0q*ofR|Bcj#3puwQ8LcLU(ct%_z$HV`bXGl{P`hI^{iG+yvt4He29wEVKr z%^!}`4qkobKy^@m>;6GT=hYKhP!PsfO@JSmB0V~=7zNBb0^^{-H*jIJHNDUdo~4G^ z8)zxx+@xIrhb@11BA9&1Eu+Eb{Eo`G0n@fh=J~Wpm2-=0<>vVz^;+-&8OLIP@=BSK z4e$OLO4%9SA!uibzP8c#IKNas-feo3_o1nA)EYKpRvj#99uV?%aheb}ReY&xBVXeCQQWBliZFXsm#$35_@JQw|k6*U`whZudOv^?oGwc|^ z8MhxjD?YmFI)X`89hyR!c=4bN=(0eyXCL`o+&Y}r4ulb=R*fw^TPy1SG^W07P&D<% zh+0JG34J-Jc9OF6;jyW97~1AVwrLh?Ta%a|%M{GDfTeF_w4_a=?c;SJ<$Nv}ysc#L z974dyJxoa{r_?toWtaHcPY$uw+fDJCH!=XPLFw+Hi$PYv(Ciww8&|)Ond$aW)USy- zMPMhLsiR%t+#j8lL$=UfDb*$x1=bF;QrYHd&F&vLYW)9FF`Z{emb#R>OYto<^1dYx zy*lZMK?c$Lz?uYP{LR+`dgm{)@_&mRuHD2b-b?mDSSue#cmF-^u`i?Drd7TDi?Q|jiqKN$j@|H?$0`~hnc--q(R5$=Jun4N+UZyL?cr}!T4 z3<2NOXz{<8E(=>^LM`;r<&*?4?)hJIiPx|?2lLcH3z*3FG6TwxMXc*zc?xZ%Yjs_@Y_eOq-T1kT}yM;!uO`iJ&2)eKoZOizJ(jQ2*)sX zVyB<}pkNKYD=+9Yo#DPV6yNf1Td;bGXCw#OyWw(^f;QikX>Nb6X~1NOCzUY&P}dmn z#rA2sGQ6SFT*W^c?U0Vo%q!En={S=sn!7LK&Ry)&$lig4otYh;Q-j|_S>UjfR%84v zhN;kZ+vURXQ-WeYtC7XIiMh20iGP5o$pS@5y76k^gk-T>tu4d2XVD;74R%|9XLZ}^tqhaxHBS;bW%gS+a|Xh5X_7?0n(>Q!$C3x= z~vqfgB+wbD*p0bRvY2dX@Cs2pPQS!yOxEI9=p^TdJb43Tzq~Ei>L#&J*cx#x{1+mL}kakyC?K&_pJ63 z?`x|>V^)=hh29={&C4YDDzBBg>$>kQJ0CngP9>%`y#P^TGH%*e{=~Zf5pS5*hw)hU zo~p8wv4u8&BV`}+T>gX`p?E^o-;PaO_p3JJn5;UO)`}PR*>qCWgn~+8%nXR zw+bB1RiIwk$-vJR8EK~FsSCfgO{6);eYBc7&zbs_kG)M0ho=G@3+Ade0ufI)IJ=O9 zYq@H#*O;M;`?d73g(svfu>|58rvI*u{5MgK*~zWbt9V&IYNLH=xQ-P~Ln2q8_dsZY z_FX&2QAoOi9ozV~K0TH)Jj1GbocW=PjE;}u~u;E9M|MSTlVm#;bp z&0>|L^A^M>v*?!<%27j~!N{Pj)BocISQR+AG`dSYgUaVk2kCh9-{N#y;8BJ@?b^s> z$vx6BcQVQ0OSV`9b1;*3r2;-J_`DLaC|&z7)}2sA$&U=H{(_0lZ8kWGH&P73f0 zcPd?6CGZ2T#y%EH-u{U=bG^J;yXd)i$wfmeLH?Zjcu z@(H=I57|<-Xa08f7@yb{dD>|;MRf(~GWlkt0|(Vs`b_y_b5#oa->w<0o#rD;asZEC z(6Dr(v0~`U<7ICv`8p(nPl)vY>gY=^ySO8b&hApt{DedG*{i}7?)>8(9UOm${$LDO z_FG`G`TZUC-duB9#mS+E5qauA)MB`qS`08XFl%I|F*%7K_61+2T6cxT-(_e+>C<%ha$8&@BiEO8b#UQW>N{1*99K5u_WW z2Zm5mI;EwD?uHqpyPILip*seKdRWg|zc=uG2j`Eo&e?14`@Sxl=k}y&*)*$e6ddn6dPr7#TmD3XJRD0Pt3HUv^3ho!pn>C75H^U* zydpAe9cX%IviOF7?Zbnf6PUuf^r1tsJ)K>VZBB)X@iPZ_DAU%ft#l$ozA8Hk5inLa z!hY|a?P15li_0m8M{sVaYS;@xW zliWSSRBrC0I|S>5vr8l&YHWwEdzKxv*MY;WMqLgWww8O6rtwwQ3}KBY@Sr^3QN{Yj#ytL>7h^7{!|fU# zO%6QyHF<>3dA!fQL5h);NBpc9{)@ylg5!Gr{TPpeONPg|QZoVVw0eTdB@Ss!#fCvb z_Z%ir+x0X3p-Cb1XLq3ZqC3Uo!Sj`YD_v=1i8^LNz+Z zULYD#I$z#n%A(wAg!ewk+-7e+M5R6I*H{wZ+_UNq`Dz1TOTS5ihuxA>%?&q?t-=<{ z&opTj)ui#h^TyIm#RxR6AEzen-3+m^3H0mQzs(h=sy^m)DQ0?co-;bK-REsGc-PL{ zXf2-Gp@S(ahD(>V@jZsm*va%9XD>fN3SB+*lHah1%}`a?KAGDq?&sT{>nCfJMA2rl zhrdZ4!+v7BT*PK~t}NP<=v2Fi^0)e^n7LDtN;Hgm_5}W1YaukC%V00MRr^RV#zbh9 zNW+kEnl8wzV2W6Fr?j5Ao9^5$o8<0WT2n$^`QnaH1cguew_8ELF^!qRoA4s#*EcZ& z5I^d$OshWz?6_Z&pjlSCi3BW~)+<%P%DqWBFhTb{^Fp%W0itPeR5OeKRH1TsJV(3V zed)c(t$MfD^`O8x#qs=bzDn1PL(|ZSMQ@F>WYL9)NDOXUOiAdh||5Ae|$`n+tE&BG ztD9gBN4bF-9lQsISw371x2R090_>NM_dkt_V$9~MJVXv!@r}%{x)?Q5KS<3<{Am>! zm}T0pYS{7y&QY&2vUIVMLUAjXL;z5M6MepSi0XX#J9Kog@4P47!)@&QxDRNaUUF+l zN>shRsPD-lWi5y1op`W>6XDG~Uzs9yhMn?XcB}h|r6HB?QyI9D^2d( zNs)|RdWp(|?@z$U5{f?n(Xx$E53WcmCq5zlM|kI`aIX(W*SD5Wv3LZ;;8`1WSdaU% z)K$2mB{Es7xjF;4_p^3e(5C-B+PKs8-%-3JT{40XFnU%v@9D!o2}M1OFr9z;9p9ex zKk(Ma>R>C$OK7A)CC8t>*k*?x3V~j!>Ar&R9P-m6Jo8U3gMk(fdC|IU>P5;H(kuML z{`1Hp>6%6Bsnel2kt9e`Ex!$|U%0**;WXg~0tKB0^+DEhAd2|Eamx;%4;Nq;i?1HI ziS@gJ{_6*ex;JbDqngeq$VQ(i(^FINO83i(I)i5KpID6WvO)b zPiB6hA%;E?IiTfTF^qE7JJ}R7_`FND*~wG0CRrp)mu|{UNgH138@f&V;V=nh?>5V2 z1M%xR*Q|FBBv}kdvaM}Id@Hd@+H=Ic)3py-60f!*TvG5`C>>^0i_`JLrX%DlvM-SX z1e0)*fku2A77j5;u)ywjAJS_Wn(7;pGtI9TfQdM6ih;@jQNT4EsOcQQEB^s@y9kP& zSt98zDt~M9Uol$INcobSoo76q#P+84z@AUkImzBB!mow}y6;`cT=^5wxf~SXKHR8l zE0p><=ND8}%|7LLuy1O_`46GNen(Bz%^zK3Au_}8=QXwQIM}gOosO^wG{x34`Dey@ zAK*WAKmMXuKOV{op^`8k1kKAfklLO}-*gCIL)wDWhr#acc&Fy|(60_WQj$6*m1S12 zIDiYr3`X)vPCZD+os_8^vaBn$kIUe~s|i7o1s%|u9t~2EzZL$dupc3+ZWg&XsD(e1 zjpIR7p_&+34tmYcGB4%8`Ah63_)>U15Mx85?E;|5^5ySURX*jVJBHBNJB$>Dj4yv9 zV%u`MUr3LHr#+I2Z<(|*`VZQm9{pF}gwqo-QQ=u5maA(s-s)ws0{8OEPS27V z@V4!dC%7+ndU%COq!x?JsyQy<@a5%)el|?SCNwNEWDDTl4}=24ZSrYTTTVm>JA=ql zcJNqCS2S2?A-Y5W{q4=Wr6Uklp@B?4Yt+a9IvH)V{&Hn z-F+j&lxvZ*N44k}{~!z~6O)r%wCZrh2KPgh#fjMfI(%MlHhM(H4mO-xrN9Y*L{Y%6 zuDZX|4_lI#1xBzr8X;w0pnxn@xZOziw)h?^*>xE2K6bTz!WqL@W)B-Stw)|uR6O4? zoG^xIme8u=Yh#g7*H~$x zzu3RfInw( z5UXpHBD+sbSb~e?dv==~H~bpuS**H1((hkaTe0-5Y_S`O`7|Gu)g2<6E$JVv{~Z|( z-vGn!H!c#W&>)i!(!u^!QAT6x9gY>Ra>NyWUv5|FVqNNh2`fpmYKO)C<8}9@ti27i z?z0J|2VK3F&~R|eXiM*6v^@>=Xani{2a$RV@ZQ|fofr75j{`k2*M3FX~u!o1wx)!WFGO>dHHGbOtW-;*1`No z_~(oIM=VvXO85FU8#vQwgRoa5Y3DRKk};Ux3?Dqlq->+m^>x|PeF+r&9%@-mu6ckp z5$PQ2^i4rrQ%1=5?bB15EU1(uU5;O3zlNfy{Y1wh3`PP}$#sm9RGKQnJ`|epEWGM9 z!ise(rTiDJZC+=9f#5wK#<1t8NBKO=hD2fW@H+a(Fvs)EX{#|_nv+RJQJ{vVn~COY zqfU#>VCGuIwcwgAk<8o$}u@06M*Ue;J`uK;U0Dr|L*)gYHZ`j$4<-vL%4q zh^Q^b0`F>V0<$@wdRn*+yXN8F5G%sCFdtF@9R3GfBwA>7Z2)}j~F=hW`VOecOmJzlY~L8 zzkQaa5QuFC3W))muzgqKU*0j>ikDDhH-W&j`6^sQ`ZmM6`AcjMu6|xW4bwQ6r@jp! zk=~Mo^%43zd#hTNk>8l`G;N>T4e=`1h^@n}h+M5m`_c`)g2v)Hdc5tYKk}3WdDc9u zyUa$;r0Eheq1;Mi!>p^vvTgH)Q;;E;ZI=-ctUcH!WinIgN=kUAwM(FVUWeU_r5^=fW z*9_ zD*hIBpzwWm5nIxGSe(oBpeu3U343&U56CG$cKt71|K^fD#?-%F*X!wbHGAa;IHY@8 zfFACd|M-%DKc;I^eO!J)kB1Qcb4=h&NI`^r4E%mNE8$02)HaungLViJ~-LA zW-_eK938%wXfK*7$pxy5YJc1hUD(C*PwCyx`+hgMSiE%q;1owRy}dWu5x0FG(6I;S z4<63DPWqp`KD>1>(xBmB+Z0HacaOcMh-IxJ?LDN0Cp|?9H%5J}A*v<9ycz35g>o|` z-4*A`;#*?dSzLNREn$nGHH&=)ks5VdnevRYRxQkgGI!msD+H=!9?%r(sVU|2VWCW^ z(+cBXD7$=VM-bUZJ%>ELmHf++F5FC93t^7WZoCeA`vuA#OKm9%SuiW<+6ONuhlaGw zd19gQ+V!tq!KVf5JlbXu18vy--`)Dxc7r|-{nn!Y8CQj@nq?JPEry7V5t+Ko?~tUg z1(7PP&6L&_$hGvHyrV5&d?{%9Mr!+o!gm|mDMyZ~=SREWh&2PLeyU~$I6a#-a2IGY z0W<^{JH+2!sU{ueV~45QVy#5KEb1s+*-1Jbex?DWz&;RKA$d!+qiCR*G`{Mc^oc11 zPfVjxl2zHd`~S-!UM>3yq>XvToB~U z;Wj@M_<#E(QkrvHkE~RRnaGi*~&Nz$MM%(TrjPAMf5%_w*P0NNc@kXfUTl>Tp-C2e^CuBr zkWuoT(oDfeAz=EUZ4i1yan~PDvU$!h8kY2c`Q^FkmGeO>s1M+FBjLiMeRkpZ#lh-| z%yiV(Cg}5M`$dCQYatSdnuzfi!-xQ&f$H=ivT>D?9=|icy)dC%0l#OGM{*VyKIb+V zF<}+iN%zUlS9o@qQBQL19k%3MK}vS|jA{gR@DT%41bVcK_1@Z0d86rk5~3Z4hPB zr%N&L>kLe3osT{Q#4z>p0Jd0dgp5*KD{w-cP|JoxoAF zgF@u4B5Fn*>pCzc90?({Xa|se;$DN|;j31LJmd5rOPo40Y8ixwX^lHmCxIyk#NLyG z=jK|UylSwCsa_u=!Ht>o{qv3dYl#luS8DZRfbM*!zvEFNM}(;M4rd}A$=$oc+Wj;O0`-WjYtoL zhK>d2EwZgPo16rhkU;_3CbN1NXM0x6R_{}T9P##!Wi+o3VLWg#UtO4Zwi8yo9kSgU zeMBV%CUN^E4r&NV{g2V)KSza5A3kucT`m8wTkl_>D7V^+B5e-c4V2$7FV*RSUcmCV zy#*`K^Oo<%62~jLPNp6lVjY>9Z883Q1(OmSgM6iMfyIG|!Us~+{J)H5x!QKBH^lY!}L1ggU4r3SPl_hm-v1jy)MD%3j zKM8?$Z{7hQNk!ut!Sor8X+?gRLvJ*X{c`_&&6hvArO5V<#oxqwRTyU@(?F$)Epvx0PNueh&M zRXE8$w#qNVxSi|gRFqy=K{6F({F0lO(zFJ5x0P{4ST`;i{Om$fYla?M zs#~Y~*w~lk58(DExyVnPk2UGtj6W1U5_w?au>~c6;12NWf9jXjDGXlEw=%<)vBn&_ zg)`683mvy3P_55c4ET+YTrvS}nKXYld3xe}d`Afh1l*Y4*2PlF4sSZ$UdO4J7cUrL zM<3%Z&)&V0KlmeO(-HlkE9YCc5KbnMH5o!3##>ZvA^ueKdf;i$iI>Tnq34BB7lkFw zBzo!=Ik2m!H45IH+n#>&BsQogBmGBb)7J}9i6FaEq2Gf{;d^lBElL)j?I#lUu4$uT z?=5U|5euox^bM!!q3o)X7AB&P0k^Q*V^`??#2Aa)H?z7P7ty4T=Gf+D#5|#zQN%jb z)`N6kI?Tgc81|mI9XNBwE^=pJS`du*x4*VDYH{v&x=T=L~TB zTt2F>Nojo}Fkd$*6FtwNRTp}Yht_8GNN;aa{rXOSlAX+5?ZTh<N2{A(Dx-0bj`3UMvAaXIySs4CJd zT%fhr6zWm)Q@aw$P>H9EV`6(YA);z`H<(aQOlSGv#8-_M>L5OFdlv4c%=!)|M=T@u zyW2gp3gcI&9sSmr*&O}8en#wCw{{i^U)W-N`XxP{1l?>GXJb2C!8N8zqdava6lG1gyL^LnF4(p$B(^-)6VRG7VL z3B?oCYi?~UG2lti@NgQ?u<&WMRrRNe>dG10KM2n(B6zU_x%2v)g#1edz6K`(mJruGsDPj7vi-@kBmTZp8P@wv{gBR~psU7Nz-_VGib7Iu{ z+Cu{@anbrdiyPc<92P&8l6>UZO8SshdIZWX6+IUiRIk<{mqxz89q=FdAFSil zUrj5+;%}DJ1i(a?EttX!FQ<^{T3#fqS0zTF9N7ESNvriMib8wX#cU;xxIc9Nt@=PU zPKSV_?qyZcg3oLx42wv_#P|6FS_1Te6kYYZvJl`YPCc4rxQ~vj+!d{?qY0R+o~*V_ z$#EDY1G;kw5h~;GsFML_#55HWY-wnlTPiseYrX9hhJz;RcSn$U5Mkfqg@bN!`%l0{ z=CZOLg@hV*G)S8=5d~~4~HWL7roPk*9pJ740SDy-?j2tD5I80NUB0V%_d zXLij_x)x3P$`uJl8k3GFjB($3&D`b)6u0cYtBGU6bT~`5Z9dpvbJbM6;A;z%zmAip z3fjDnTb178hXH&FL7#!|f63HCLJKygu$1CPAK{CDN3sih2`{p+>RSQ@z5o%lL9t2N zZ@~524^p%bwx}FJ&k^!)RhwGFOARO`zEuZhCpO+RlAMoI{!Yy-RMj4Ta0P>jfPjoD zZyHtCd2F8CLryOqEskRaISfWys6m9TWyx?49p&QW6x<3GiaaL8^ERH_6ovt&68a2Ox*OVMx!XBDIzPKju(?MjS;z5jZn8FU!m4xKh!ZC=whl+gg4IfNy-{in7V2LmrqXo za`&Cd4?qQ1F;yj|1%r!*^N{2JWdXQx=cgRI3&tL2z@DCMw;PTi*H?Tkec~GnW3Idp zH*>T(C|{^s=3g0=Mp3QXwA64X@HN&ELgJo4YSSX; zYegY_3j|!Q+V&NDIg<+T<+l?swRp<3PjJsaqlFsV@~>E{l;Ly3>^$%l8KXyda1426 zsZA-xwN&OEj2x^F7pay4Z>S9Fp;8+44*q>gs>%Y&4&p1*v8d;$+xR{}j+c?Oe*(oX=Q#Q?GF^R8Yg#v~)jJ~eQ*b^DpoHHH zzwa<$vTRt(9=eFMxce{$^}Q~GX$2OhPj7IV`cPMaVxp2Tk>uB3&5v_o8d)hRHInxh zM2vKQ54xty|BRKbTkbEtDON`{6U^Wt985Eodss0eeP2EKYE1$I6uaXbv)TjidB}xg zz7;)-oEWf6yLIH3d$roJ6J?(5j@GJQ%2mNEHh8ON^PIgt7O+39DbIDQaf!FgeR@mg zpgU6ZBF5&MC&43^dG?e-&TC`Cg5R{$=WjhK&j71D+1Y(Dd%LQb$QX^s7a&_20~0yF z>An}DDb@&je=53GCAzO{4S!0+BzZND#LYft2_NKjv-Tt#=j>R(HY|~%h2KZcshY3I zJ1VA#7rkbmJqT2Iu<ZB;++A-?t#OG3QMuhgcJWN)G8KCNnuv!iX` z!(v~(#@7_MKKIpJ?xxrw)ehTjmiQ;%rGSpsE^@T zb$I}k`eJtf7yGRPyn||0#PEhmd4~$7kK70K++g5w;bC&|7!QA`+_}2FFysdvQcbj5 z3|Dy+lCf z$W5#@VVjP>z@@WA(J|_bTaCIWOn%P;n{hC%?eyeGjL(-lVu9v7;d}Y3hYo4Rovu(? zKoMJYXyUr!Jlhx|{ZP-MF)-$>dWgf~EIHd2wG4G~^*OA!Bp$BljrdE;Ok zX>BYN97EmQfrS|N@*sc;fAm!>5c^Zh&l~@rL`Q)YL7U`9CH8McHb@f%YmMc_o@emu zd?~-1v1rPXa2fi#a%3iTqdbr)nd7;%d<~6UKDs@`@2y_fEO(@1h%e6?(VY6RZT4rO zQNzDVug)}7Q69-b*KaL!|NBTX?uWOB2C}KG6E^sKmB*jYlOd2YY~3cDuT7t#tm|Ft zxwj0Hj1XmESyq!|v2>VFp$<0)p04~f-je+$>7-paK7q<>Rt?UV;}e{o^K6NkcvmYj zXfb-b{9R*OgFt=yr1uNp{6>r1Nv7r9_f(IjAE*API|J~j_}z(jc2juyR%>C&aNAzM zdK186Way=xLv;CPZkC~&@30@y^j!!A;uC`4!aKT==h~i{BeQJ=b^w;wxH7KC`)Ne! zxs8U4V}G<+u^K;-=Og_%DYj~F{IGj(FOTi~ub!a_c;V)a&HJN|eQ#WBU2L(t3r_Na)0#)^NA!j;OpbwpCpg^`c}%knJj&_8v%$|g9H^m19D`36!|9z zjuTj_oP_;$+;AX6-L+c6t|;xMzNox4v1+6qqe-aV6Y4*yKi=y*_*&FfoQ6w#$!9sH z^pwLW=7#6vllPuCq zQ4q%3zu2`?NJSr*i}q3j#>60IZ~4{i6bz;CF?!!iiNRV!0h1ipWlUNjb zl!klbm+*rs;4{?w;>E71LRnsS=}JCEP&efiw%-22;`o)qcU+v$&JBw*Kogu5@A~cc z-(ZY!40jxGwO+=$I49?bRr1b%K4Vx65Xmpn;u=n*4z{K;YOu{G_(of9ixe{!EoKhS zYWF7;ZccI59ef&zqj77M>XVCTdZzGOT2G9QfI*8vQ(FqIAQcd5dho@~B-DAhQ7T_c zkI~>2Gn1E8&TmuI!34*Dit14b)mJbRb8ZLMEsSKzhW8g_$Imk7xZK^ABuxlf7Wh$V+b3 z+kvaX;R*?)_Wj4q$-Dz^6N{R!uU{^IB78DRGHCPS__8Qs8*to6SI|olLf{Lwq)hpAQE!E7>;(+0J7()qTy4ZI|@8^^(LpCPeu^ zGN*~ON$r6o%wMrDXzabjOwG;a^w5ViTSuSax>7B$G(odbHVO1|&xeO|_GlA#MJ`ZD z;UFB0NLe-$tZE4`rG)P9SPg09A{k~h%#g3NyGOkt+#9-w0S<>g9W1zIxgW%j9!`c# zJdW>FkKNcpMU5&tX5nYQty)a(dKv-WqFbEq7v|tgE3QSI+n5mEn72)&;7v!=vejeQ zQr_?FlYKF%Ne;Wmihz3{M%Wy2|FAc{Q_@SZ0V`j2aA>CG1P)#MPyJi=!Of9y zPSJY@9MQL$Je`;K%?UbVioX?Q_Iz4ecrYM`%z;#m@}kCD`Vbl-_E|-y^Oqf{Cz3-mgYw`nvQS4f}%J9P!y+4u+eu1E5pPGoT`mcvGh1$q+ulob!3XTF+f zr{dXTR^bu%^^(MWTe`^MnrEH?wap`|P}%$|6`Y*Achhn(bIE&oJ}dfwZ$!?!*bkcV zu8wP`10O;qdDqy?0r_3O($%n%Y2M0XNi|PhFH!lsY1wWCNCoLd&UgHBu}?tx2GaLo z3=8c{$p!qQRbCLqSXb!I!#QA+IU<34+*k@yE(&18I|dH>WaK^Ki#3+@y6H%o-I?S1koSCU-FabHR0b%@ssU7a5|1^E~x?%JyP0HH}(@R>g8`Qr1Lc9O_s6cQr|4 zbraOdfdP#>pZw}Nfmf0-_r75>g@7Xy+ac|{rtDiz68or{inVv5)9Mav0ebueUxw-A z2AUXJNy$iUPfO(EzXFG}nHyrqznznq0m0A+fd`TMHC&{xHY`j-FT22Ah|F`-(7MV393K%(a>cRn(jW0gT?3+{3H4xVkl#zubd`B< z*-d?2a3J1G$8z{yUWR6=OtVlM?J_m?5a(Oj$^bY=vty_Y zygI+OrYo`wt$@muouwTpmb&f~;}6Wqdf}%j)y&Na#~|-&1TnfH1fRbT3%qZ62JHbS zCtiGnpIv0;U26!ArM~XiuKFt2VeRmVv2x96szwNGSHSDZb){DEd{C{2&i2a&(|I9B zZy>o!Rn*}NHv^?ipR5lJpP_KKB0`~9K9&y+k<3Mc(@XN}okxE2!ozx&CrdO(9L4Pk zUNnjAo~O5=r%^n;P~%0PcwZ-VD9@dcGSk}4d3USP2#Z&=k9F2OIg2-?3#8(@2h3)tCPCrZ@ z&U8n3kI^HIf4@Kc=YK{}l?*7UddVUZvTA3M|Ewm8<%&~J?>sYhy8rw=LeRn%1L^Ny zR#QNbGjO-g9}Ztjq{oWXreaCvtk$(%6?F9gf=NLEP)r(X-Vf2>}brSNAc8w+7pOh*hA>Tg?Dl>a1R;Wq91 z3R#@pxU(7U*;xlTn3Az*Fj z|22*{eK7(0MA_f`QBS|W{`J+;V$AkFOL|EDZWsA2x8A=>ijS_X5-Cq3VMA~B0x*oA(=@D+i?QztBDCVB^K;6pNNZ}j# z)^5KkbQuhVpP{;+e~eWX$8vD%-pF!z`kJ^a@8?-x!{XFp)<@{4Vz&y^`y=%xRU- zlFZwmI9StNX#VF0>@S3UHXyq3m)EZPP)(dA99w^DNNsV_CL`3wD@L- zvmF+X2Dmm#1;`Zqv1*V4wvR=qxL7>J$_20`HeqN`PYWu<9KOfZZ;>xouCMauVyTS# z{*F%v*!U)PA$7#1oSxt?skq+7k+z_Ek1|^_=QFa?p1;tnq@KW*Hc8{~Ed3F~RYgea zUiKU4M=OWALV;p~nWmU_@Ki_(aP+>nkzQ}q59{;mFex=VoC~uNLjv3Mh(C$3)i(3r zXWemG&g~tDiN@o&?Q7Fe^>KEwX?P$Up!Jlb#Do4J8-P>WiIhpmoQBn_D~ z{Y=wS^sR6X`Lj9J>I%^u+2hP5d)}sxtDn>+uhRQ)fBJq{qWt6D-30S@5c9PVTL8k| zoQ9Nj&Koa`z~~ngVjGux8+{8De2D$O-rD8qSEcI8z3UM>D6=BMPRvx>Qd&L5Caz6! zusm<2-#CgvCabJ_bLyC*ggu__ntqou;-Pt78L(geOhNXfFDAXE3ijZ9;4Nc1=@tMj>j+8&JWK-R zwYS_AFgq&0nnffA;cjLxmZ8E)lHbNlc|s=J>*FX-3OtIx<~*!AoTa{*eB-<{&5E<- zCYb~$*ADtG2QAs4F|4o=2`wtI&TaD%QL-WGrjvt7G z-ZiSEa>hXWV&fgTm6YQFm3l!O4QMk!3OJ`5^o18Ij3##_e8; z1d*x#1a~DBoI8frnb&)Z3$B^{XkHO5QpX=HIEe6)kMqlT)DO5rD|bFkX$~#?X6Ndl z%5thEY$nT3B_|i*X=#|IyY7Wbq9IO|rYMSQ&0usH$6w%Ip4KDTYlCQ)ttNV3Rrc;# z^ZESYN0I9Tp@)O>BhtqcXzLrS@*^TtM&3$!VT*)#ZA6JL^r=?=9(=#==n1_rF;V_v z-7^~LnACyj7xyK8iS>{db2lQ?v3>;Vb80RO@mU4sOt$-ZKH=y0aYaJaq=DN&iyd3Y z9HxihgolP-cK%`d4uzuJ8zxm(7W{j+}04QMew;!1+Qs4#ggU!GZQO5fj# zM+S=i9xk{yjrDzjQ|6jX6mpA+DlUYhPPXaSpXjGAV2v@=Ihq4N2EK&yzTIuVM9=oN z=)F6FIR)Y5{GbX~tV)kb#>k5a8wk;q$C6>|KfiQ{=kpf`kArtIqV<|OfwP$1jPSb( zjz?1c;n@%4VVvkL+_fyTGDxmt5Yn?CKPt1Ks(i8S5A@g^WkxdCuko!=MpiAh;vZfp z4#Z}dV6W`rP#Jx!J;+h-$B{S3@A(0*ZLw$*f3LYq@ZCH_Q$kvthC?pY4DZQYD7-fz z1J>&aoeS@|XI4F!I_3pX3Sr37*LtP3>6{$m047yn4LXbZe5hPVb7Q&!s1c9BGoZ3J zV7fqOnKZyCr)_HKDeD2ws1~#;dcX4{hE9Ti_dPixU=bwlmW`8B@jPdZR;_?HpADE8 zxGAr;F0rpMix?S*ZHsKx~^t`~OW1gfT z(n+vx!-lDRYvk6*h-82^V2Gx23qeZWi2Z`Go}uaZ#1zYazZxzEjMcw=ds$jIDo5Bj zzkLx;==YqFcM816p-OFiUpQS8{=#qC=|wjA0o(#c+tDR%nP09-%lSI5qGfjGh^GbF zq5@Jpf7Ka3;;7RBX?i22U!A!xv?EFs0BsL&B}x0nDNAv$^dnvk{Ir; zfj$F6@$VXr`hcUW8{C&H2bzimxPG~D6;n^{l8XU~#2FPQCY}Mg3XNQU9aBRHr~9Q=mthALcGYW%71)cqyN@ZJtjG8@lznR&(i zo22xZ{AaG_(sWe(PYu_05>@A+L@Nx0^*@z%kpdQ)N@^RZ;9c>=8U^5V8xTy((I+1j z`E68IwBlQr{E^|%oqw3XtVXZ*U3r}V78Sd%XR_HHJNvTew7D2 zu}`UhQF6x8_QBI^{|&n%(iIc~N>cLtxo+uY9#Y~p2ax$;xA3*}tk#2{YYx&Fve-Ne zN?W?VNkERJQ7bAN*k!&Pp1CLHvlP?Fo&pUbQ^S4yYnWDRF}ocYDmVF{j^n#RK*`I& z_1z4E^WB}F41p!{OnO|K@WV>~`r9+z4vVYieIf7&9G$z37ED9-=;vv(ml?dmAtD+q zyh}^L-T9zmTZe71XEt^^5Z032*`+VZG6o*j7buG(nV&naH=b^Jx)~fC%ze^X-?12+ zQ>dFoho>@tNy&I>zbhRimPnPdYuq8*bC?;%(m#D{QUxlK|2V}`G(AV)r3#1;%u4qx zAzL2a^W4aOkYR`I%}QRYq6p9Tu$XFRhiw%{hCq|mBb_+su9Au#q+_$FXXuqTLE$87 zS8Rm49WL?Z4~54Z?>fpZ$Yvn@>e>G|?q7kyQ;!o;!- zKMfBUJBIN0wKUaZI;^Vl8CkA$nQKZ^&K%nREl!bBf&QyS+MS9k>q#oi^S^Ln>E*&u z_fs@~eibWOIB?bhhGf-1Gh5<*7ZF_ZXg}=ycw3raUw$lfCvTMep}gCu^JD_`DwL&j z$@6U@f^t**!qHAVTPpY1_#?SC+Al;khnRndAK`mySSxvGp>VJ8Q|&);2b*J#wKo~A zg+GI1m5wRY?C<67Kjm6_Jp~*%Dv_mYzLi=@Mz-4z=hF6p4_cf8a^O{pRNQ{hwTWno z?xg1leDK+D_REVchK2tDzR6SzgU(}a!ATnL%S}9*i`sA+)?<~AyMQ8GF+X)U>H-Uu zXB7fI=;*3QYXY-L-p}Bs{kW)`pzSO>MIK%?fB!V`6rtmIg;g(Iy-4|Uq3l8-Wxz5M zU;~t_-=&kLXi&FdvYy{Tl^EeV5HUX)h_q_!)ccgT~U^&E56F7{+miCgoq_v3%Y zXz2di(g4b6zBID!v2Q9dEF7l;(s)bicqWr@NgsAaAJ4isKzLsM2S6@*Q8RH=X-E7B z!V_ENN+*cLH~k4Im3L7}uf(W8?KuX$pEMr{t`T!6@y&m_`LoCUDPg!25L71J#qIeJ z+*KeJ`h@1K$>U%~H@rtoAfdYILcTuPd|wcsSa6xV!d76`kUaSrH3hpMR%^|r-_OQn z+WsDBw~SO`6A`ssbuc87C@+kC>i%{<2Q0zaAW}Qqvy^sOE|p@X9XS(p0LevMKS?P~ zX*sxA2iwDKv!$p5FM`amqln%oXM*T2-O`+2!^Dacy^C4di;LU=vG_%J{aI`H-oYdH z;y8+o0JHq!!j=I^uIal^TJl0I3u=uGv1zU75T|UciO?F1u7&peCdd^TC0P!R-8Nx; zGl1kP+%Nv8uB0*sdHt`z*`O+MQ&Y~pZ||U(`lQv&%s)~!ngDLu#bm*9g;H!yfi-=o zx|)(hzsF=%+Pj$YXPTBm>59J$)r#&G`zWMF?E(U%2v^yXh-NJ8BDKU#V2s(?U?uH~ zwss|Vb-%A2EG+()31o^vi>-;k?PcEkb>5~@&D*1??3)BT?v3o~x2aT&J2qaqkmS93 z*|u~XRtIdFy>~l#n;v0v39uL5S*WD3mF<GfP{mjrj# zagw?agJNiUm))zAGEqYkNDi zzSG|lfi~TJr8i2{{tb$v(UU?gc0R>(WlK$j3{8Y}Z7pk~5*0)3=z8e-sJMV7=PqU? z;^vgJ#k?ISG3*v&hkOT2WYVmVF=)R3nlzQ@We0ZC+bx76gz24!gL$^g;>W=S4d-OD zo3{;FYv)~e<$8w}Ir=Myfc6*yu^!nXfP8)<_q;t;vO`G`f`u_keK3Js+f zpZvcpfCuS)mmhl?^>Usrl7x@(mC+CP8xK^ig-^r!09%OzZ5C1c!a zLzl>aXp6i3GfxJ0&-VRintvtzd|>VO!JbVCI4nj7n4gjAdA!Vqj#} z2oyC&iw=AWS1%RWkJ891r)%z08SUW%f=d@uw!JkTIb+&PCBm!4xOXNIZLQ008Fo(+ z6mkb3DK>Ww2uH24wPb*45_4>?s+zL6!RzTYOQI$JQS{-{6Uc{mJIrp5e{|*yQPO!9 z#r&H1FFrKJ_CBA>6yaA9_tA%O%Ni3%yJakTJ;c$Yg2m=e9@HDj3b+IU+@h)tnDGIz z=WXZH?KoiC)opUv66I=n{QFs(DVm2l^J?&ra^BYp{$|p2c^B_EG^BFwAgWa{@oxxF z{M&}dSv=?UdxcGIOfN|3baK)cbtFn;aN0@UI9vqH-eFuQ-h$DXov8EnV17WrKB`Gbud=Y^ui0V+0kdbQDmC#~{=>^NfH zGQC+($gQ8#zGFn3^+xH%VUwx}8M|SOD*Hf@vUyyn+(ZMiV}l)}nx zE^}MCajS9RxMmzV&7ulj*s$V=HTd0Qtl1N)lmx;j17)8rS$R7KS~;E|h#%BO{FZi7 zG}es&`5V>Ai@T??#5sp{jE6*cB*c&2(e;ymI|-Ft_Ype8;fx`jI-0g5W6}?o^@$=! z%oU^L7r$6crEUQ^>8>WJ~=tsSB*0DekGV)w*asT=}d+?m?xl#fa<<V zRgC}onnCezTb$L^bI-jWXE+Y6Qg>pbW8Qb}zkGQ4foY^CP=-ro^d)Y?tF?Ro#hOnp zKP761myHSd1karAIC)Pp=fr?K6BSR|@u=&sMZ#4hBgxAw=qrXRk)C>@M1yervs#RD ztBZf&*)Z?O>lRCA3-ZpEw!t%tBZL3P*;#%?8TZ|O=mzNy>6DV8QJ2ZlP_FYb3|t>>KQ?X|8yVE^`a@6T5GlE|ZNenCgxCEOy%Lv$Lp*gR`G#*1$vk2l*E2x6i&^HJKdh_!O%-uqm=)biJ zAD$n(_UPCzKWhN{qDWSgU@B;umJ?BZb~RBF+N8;V|LU3DWTcM~O}=JN)h}EPt-<KeHmn-z;IV3piS7(={LcP3%f}_E5FILFBh_zs3wR?5-SgNkRB-eYi8;0 z_vx5JG)W%w`Zb2m`uq@7rTSjp;8#7- zNK(;ZQaP7PJ-zTsJVM=Gw$ZKNvw-DE)c|fpEn-}8W%1{SdR6aSifSGekz0(qND~Uz z58pba*AyEjidCM8*!+y3`rjIySh{a)&6Un{ax;u8^?Ta(-Y3C`7^(d{OgH#XiAvik zzx$KD=T1MeC}g!+ikCURx$a{DD?6H@Er?{ySpFkb{Hz@uNFXXB6FQg4NIw+zK_+O{ zu;jcir|MHfKB}M9Rssj&dnbp&OI_B|FlhPrDSbd^$Wr^9B7(Z)N&9dp(u2QDG{499h6x{fn9U3KTpHl}!uz2Q8YaN-*^lflO*^6;`jDDzU;|v+) z;EaDt`(Id}kOnElKY13bz!HLAN zPg;+dgA`aIXfhLDFN0!?Ds>#Y0(F6;7B+*w!&HPjH@SuA0ufBL=77ZvQX)ltHX%Ir zb%m5enx~41e1v~(q_0^2^iQ-oL}SV1WFbzuWj>8Ew-$FR+~}mkXzc4%oPoSJwqNt+ zPx8kOKKy4+X?^BsK|5x)d}i2G%P_r0M->5yCa^)pQ`|TbLNin)Vw3QNE*=_|gps`>J7-pvyJK&o1bgwiHfd;*gLVH>w9gKfdLCOLAettKNx_Sc z8Y@$zpO;2S?dja?jtcFz^J>RFEpUU5wKRh^jJpy26AS~xd?ypDQG9$*E~+%_C}%YZ z`sAi#Y>jmmAtxN*zL&bg@^7JIzDVkisO>={cR#W$fqUz}QnN)UO~(DOYtDyPrN3}X z#I96;2#_s#{`%t`l~M&`C>yRIoi-q-c?B=|04!zhr&K&oJjo0yt@@>!`~^SC43mDC zaGB9~(S70TqLS2DPUXfpft}iSu=v0&5ReRH%t8QYcrSgCM>#P&(90XokQX%S-xd2_ zZ)Q&HoP)QzoVTtNf(YJppB*}o9wpGYa-;uCQ8W3GNwAUggrq=#NVgM(D4su51dO$3 zGUllY?LKSx z72>;>u;TD?|MLB*yfK?<8Pm4~De&=^UO#otir0~0KK6EBFzPVJD>uKK`PUR#*J7~# zwyV|dbRcnLL!K^R&wYONFhOcSb9;Bm#$;D6Wp4F2>qf7!J(D#S!foGF{m(K5GTY+u ze0h4d2=VIBcXHwfE!rNfSw7VctV#-Q(>%9con`r)x!?ut)2>WRx<8!YiC?60G~TrA zckU3MX?gff#Kal8NM81kHi4fH_YrU!|G*oLxNkN!=yso$z7jc5s(`$)I)(8})>M{p z(Rp6?P{z&s_V{*BKfXHLlbWxjJ8V(rzsK1os!u3-u}~v~X9pRLdt`OX_%?oN-}qby zhIxt^PGW4nbE zIIGNXZk-qh>RcdDanDJ^EE#IggZziz357un?l8|)7iSiHCAaxf} zm_6WqlHMt2$?FLHAtvx0vq`+kxdMEaH@n6V2_J$Gf7=4GuTd6-?K-JyuS9fOK5l)x zkk%b}`e`8lhFXZCW}*IW6tx|MiuRi5SMX7H5q#4sF+RkrPEaz z&G2kwrI7`VW>|SF;^eGJdhsbfd?l;+4~GUq^txG(Sf|rwqg-HRLq6kp#@`gO)WT?8 zuW^!7?}BITaBs)3+w_&kEa@J^Nfg-lMVWX%8B;tu{k6$HvfIM8lOncF!jz;Nc+=^r z&MJy6^*BF{Su4u_djR2&J;I{tye;K*NxV_&uuJ4sUjG$XhDUN6`GBNMZ0miWSwUsm#n`Z zgm;9yPZkbQm5B5kcMxtYgLbE96sn$48`u$xY2UIH&IP`=l3;gkl}bO;Zrl{iEV4C5 z&R9jA>!1msvq9|CZnwQCHS~3fbZ14X#k8L%$_cU)mh5s{QlPaxwrykwWOxf~Ao)e( z9d*|9)-mDEe2JIF_fcB(OTH*XNI%)QTGec9XdbCRd(;(X+7yDE^|QRoqcDo`qoB5K zru^%0EIlGUjj$M$gs?0kzw*oMp5VE@`l-rp52kZ0sF^uy{c#G{--yMUrmIa=f)nJA z*C=?8jId}=6CkE4PATy7qBUN3pjtmKp7H(HNgbJElJLS5uiKlMoJE3)mQi3zBDyGp{S6dR-LcAGDR6-?qwz+*r@zx$Woc!Iq)_KQ8?lH=U#DnFsWn z(kN9ay}_5g>QVwbcsNp?#9GGgv+x+6inMohU$&n|M2FS@Nv~L8P=n$AzMK7|kq4D= zy1R9imgLM{@jhz@IIj%JAiWUGieVKkf`iYWhTtmL>>dmuvF2tX#~D%`#cGj@l$p3Tp%DE2HbwA>n3^H z#GLSoBk;B#mm1kb(sWJ1q4=&B(!CLte8MZ84rVqIu%!;iJ2%b=qd;j=(mRTGDF(mzYhGI?MIa?kP^fYCP~!ggKhSW&DoVh0C0#|aF0;i6wG+38T)Ijqd0XO8NZkU2!x$A8HF(EZ z7^&sq_08FHxr%on#9w;{nl}Yh62(lX%7=JqjhOBOz#~eEW5gAzir-_`Vv8KCpGs96 z3>oN1$T}`%^QvNj{hl#ydYvG^%f-_4l3GOnC0D(Me45Twxrv1znzY}jd)gPhJeO78~@Y%Z?-X&d;^69D9#HV9_q_zQj3irEaM$~;ij%WSQ$4Ft3m>Gy zb`>|g*(-2MVTC|FR0v}g>DC)EC-Uq=S<7}i2Lo0^!(b{&#_J=j2ybT;SOh1nxVohj zrrzH7!bJbnU5e6ZFV`G=3y@L9`wKdrt%0#35FjRs*U`bTvv!?B70Yl4 zMq*lEX2V+_GV9Da&>)lRx`_``<2J*uJRB2IiYy!jaXHuwb4~G|t0~B>Z{?Du;^@-j z>=m0;prhum-T~@JgHK9G@(m>S2StH5K3<-v*{Qu2LV?E5b;=V+oT|^ zD5)4-z`r?!KDE{iZMu7`a=O6rSunt7F|)&QLVUkj?R$BQgQJ7j*wbzb)Q$9AG{U!JLph%i zpOrrng0D@VEcnh_kLO9@6sX9a#MMO{;=9V0t7DFeJazZi;TOaarZ;OsZUm8Dn8qnG zCp0%AYLeEuj)UR-Ak<`YwMX5Oc|?GIv+7Yr3VDimu@>03*Cf?;W9pMuYS#XfR#zL2 zzkOOaDq^u~->IGIxZmZSG*`fJ6)$H|A>s>$3^ITdiHGJd zwp(5AJAcOP`k(Oq^W}G4fB3fN867$Yu29D2HEwZ^#0L2(Z7Gxw?^#_wMYcKy%q89V zXn|_&hH=Q>i#0demduRdr{?b^&HHXuCA9MWD2lX*p<^ZqV!M`R==U#hi{^#;#z*^7t3QfgE+9en-271+2@ z^zOv$Bk8Eij@g{6oJ{Wa%%DU6N^~(*dRhEVaq0Eq3zm=efF`52xHKrqc7F|l#m8dR zjd7{0^?Pi?#x=ZFxLs{y0@F?+#ht1Isr&aVLFTS$a-Y#|FqCKP;{BUnlXTT`Xr0Ep zY1FEss{xP1m_j$S^ zIhX-TXcWZK06dk%04yT?J+G@ouk?nMt3a=q{zSi!l19K`T7(t*G=)1DG5I(@Qxpe1 zDcB210S~a7*r?0GG!(l6rGgypFosEM{ZTWrt9wd|;ay#D9jP}j#D{C+RNo@QigVXb zv{bvhy?k?$)(e7gj;$qwHZ7%Eh0ikc`~;hgsva=1zVvsB1_xs`{yL8z9el@I!J)7< z(DE+OKc2oQJzgCC_fdrk)JH7auGoxrpE2_|3){&%8u7|%SD>WL0Ve}i_No-H6sKQ1 z^}qA6i(~iC*%0=pqg`6B5!e=v1IGGJMILpIHl-JJcd3)oI*6)*6j8EAa22+?B!CA6 z)Fg(IK*OChk%3Z&e&v2^rd@@L^uE+Dk4I#uZ$bVD!(MQkbhA{1z4QVTqwD|=KEc%9 zcVkkqDwpI(ZOGWG;ho=qCb0OnM%x*wQHw@MqTKU9*0!?owhj1YPi!?_ zs$`qQiLTSVm=8boH90KVPHY_N!O+z=F&;an_eK=HO)$kLUEVb(ww;Dz`qn4ZI4UxA z`UescofE@{_%2L-i0HaP^H7hODiux|<(ARax$$3^|FkB1&f)K=dBrrpHa8@|n_rmP zd;u@%gFr=PAr<3zf{r9K$+g1u*ld$d6(1aSeB^+Y_?L@DNB9Iiz=t8(A;(|zZpHG* zppftlnIMH{mi8j;YFpei{!!H|#+Fgq`%>Oe;2cdVb(Yxv(;c*8H}g2bQajGRiKU-uTDGu>QHxr`!Da!NFzC7iO7KfZ zC#co6(z~bxdQnTNahRgD()1UggoG#5&*656{TLHGgbcEUb$Mofnp6bOvEdgqMhA?Q zN=_yVEWpEuLnX^LU2WJ*k+of5K6 zP1)QRMSBZegJO3YIw;Ze*A5ne?W(n?*{WAPxR;ie(8tn^EU$mXB0l{nd))OazZhA2 z?63#pgCgopL@^Kzc1*9Owr@pQ_!uEA1_M>z3&WBsQHLH^&l*UdSz$Ug$+^k|9tkO7 zCgr}0WQ_ipiSxePqxYP=iG5#`-o(xwmc&Vz+s(^LODMqGfvC*Y17Jjp=k< zSrYmfZDD4IM!?2?W{OUZ%G#SS0+;sS#_l!E$FG@RfAK!)I1qrXEpGRj$d;2)HFHwf zy|5qc9LGQBiGlu(6(wbR~+f-Yi&z5#OC-W%U7&3SlT1S zRTujWZkk$)YN$Yee}6L<>n>RwgEfO!t$m9p<(lj1aBA|bVm#&fn;pt=7;7~GyUw_i zZLR`h{F^NR`VV=K7B97Sr)ej^&ta z;IExEk(5zplSITE;IeO$S6>>h}4Y+%nM1oeCvio`Oxt1&~#^_4E5a8Qani-GPzeJ-JZA#a4Rmi`!L55 zj&{TCBLS|CQLXH-D%p@O{_^H$SQ?&|iqh^_z0|PWAN&zVJprZ zkxDl&6V(+LIvB{g#nWOWt0uu`JAQlT0uRTa)+yR!1|6INu0fMD;TVHWl}Oqavuh90AApIj*pd`(og#t(TUWL+S^`SeFy9G)3saDa?BEQy->Z)~e~74gl-G`YNE1kzf3&}Op*^b#BF(4kcfq?%_x4dAzn<{V zxHh$%!9PJ9Z4dVPTh192+JME=>N`(_Qf*_+FS@tdi&lJ;D@6uoG|P_d;#iMO?xPP# zGA=Pl{4L=*!WHKs7f0g;ez<}#p2p%~6|ACt7G~~R4ta0h|De9h)w(U^RZmi=vx4YQ z7pdZHBNr4&!oYfr>S7+-p|$a3r1gk;^g-Gu{lR0xO260xBU}ZuF?bK|DwrL5vd!Aj zhK?-yX?6V4U;I{fKIKK-f_X8wDeQ>bLFQ!nk?S(cN;Q5uEo8HONklWo^kdwaak!DC(eA49>es^aQ3@#g_)L16VsmgiM= z`X7Cdm-D#1GePK`0IY{pjIe)RTq~hs;JY6x2y;|Ahm6VKki{r0#s;BN*o-Al+*t>!A8%0mlh4C!Uh}%T zA*Vim${7U)BP(|3vnRn)A5O%E%k_$vQA;L+-~5&6_+VeTCnEhzvmklv6eN{SZbi-{{SHjf?^oVBx2UVPqHIYPFNu=}OYYPKBdt{tuD%h3^sn11A>@DaTv zyMmSPw5Yq(nnNAXY#|g)2#BnxPt_YRd1!lR-CAMCwc{Po3O7*o0l>|pc zN2)FZb4y8pON{pA;nm0Ck`{EDF}B#P0N1-iRG@V}6sw7g06J*>K;oMV8E}rV>Z<5V z#9GNC4eyT7^{!@P09wb~D& ztXEfw3 z$#1_~Dzhu4{4^#;o-)^lccbNTW7vHwa2tnY6o_B0p)Wbqc7hxWF1q$hoiG2$6;yR!3qpoOr*Wr~p7Cimcbx$*)1 zlQq)_GSHlA)H2={i~gSRSn~J2sN2tbSqyzC2~xWU>#gMWElT7+t2B(Rq=&1+Dpj5F zm>P%f&YB7h1t$xK!ye#$p`+ZlU6y~aBW)1bcv@nyo+iK#YM4CP_Sy!?U!3wo|4 zRdeb^yGEusg?yoIAxtl9If?s=ZAx}D;A=AQgn2d>ubL}!dM{>{&L7xHsUsTS%Ti;R z?dy^H^gl=HLjh+28|n2}_PjlxXcqRo4O=B!Y>ZgF1fD^l+t*CAjfdh2oI>><^)|a~ z#$UO+`}DZY)M8=^Zn-`>buT1!wQ?t%*g{%ebhMB|)O%i9Ez~>IKz%QVv6_s`Z9GRY&Jh?Ui)&a3 z({iRr*F&raI91*{!lI?Up+1KSc9C8Z3Vj_6>RT1r_l(I4A}161HbGDcUI}7s_4vTK zc|Gvaea=gXQz(>QOgS?vzR&`b$;VopN;N8yXom~q!$0~&mNQt=>tJMA!7xPpeV7Vi z<_*nF{HeK=@sqOML6gd;YFm#7CtNrq`7dmW5yy{oz{4hq<%Rmz3+bXb1OxZ3W&8MV zzt8IUJ@>^OrQv^y+`_rC)X;AilH?Zt;TkoKd{`DFL;rvN;P~~&4C1qmBa)e zNXrqlr2WT0@oQV49&XVGtgR}QBXmYVd8sPIE)C4QD=!BFtk39{DP#fH?Bf0 zVj!Nq`(RnO7XWTLyCGXu+fA z5URW)Q3VJBn7YCj^)|qCn!M_D+4Gi^8b{?<6i~U<4VKDpdU~ma6;!7=*!ZnWT>0#I z6_sdhm+QmUI>b$aPh}hE1Hw6T->|t%#hCqYG|N!9MB9;;QJ@=$AwYYh=$wykAO1FV z2$v7PyN0^JG2DjkyWoThtQ`cK^W5{w3VZa2w9Zu+I%Pg@#6CK7>i%^-^SNz>=|Q~b zYUjM?q4$+lHkyCAi4Qrt0^B|b^==|qR{f(Y@#ad;Mi_lKNmjW8VE%Zo&EM;ubI067 z=ZSVu_=L1EE@#CudsOw?g!g&ds^**5g8YF-JuvB?wmxA+Wl_E^2r6c~jB~7RrsR-B zh!z@wgsLnTVO1pTtMu`(j3)N!=8G|_S#l-8XGg?5l_7fR%P->Mi8si7Q(yg6^UoLI z*6-{<;=C*p3wYN-O`kj$E*Yf;ZZRa)Z`6#(G2U=tT9c#Wfz-N59;`I`>~MG`1Zf3n zyNnT6OE=ta79LnXsM=4+5k_YvwJX)T*^@pOV}gG@DoqGPs{fcH#5P0}&N<@#Z2B#v z3rRvB^n%3`_HBuToH0C|nOFiecM3tc+2sGr=fmXKcf*d#JS#3e1R%d7Z&2*=3>1+8 zDxAKfeV{q-sE#_0cC}oW|A#Hy@gp7_r^%~^;)alu(Pt(T)u5eOg`wiNMF?hHdm5tb zhrFDuW4stkJYseoI=kR~Tss#qQtJAZzOd^E9SoXCGkL`2bqeuOQNKl)J=oqsl9D`W zlcg4A+qQ4RvzPOsbuPy&&4Z)5SQ`z&%qWXUe$1X525k`sZryKvfDij6j{PWvfeHs+ z2C5!tU|G469;L|RP}fA8=oj!@T&VH|q;jh>CNpbG*Z&qu3IY4p-_@_f>5k3|J8wu# zxQ3h1So+b_=AxQW5Ihq9wTb{ngIwotBjdzU-^HqpMs0pO)#5a0iLadOlcR;h$9p$HS|@dCJ`C_-A>mUo+5T z<1sLsM@i?JUzYET!pun=n(-`J$|w<8OIkQtTL7Fh+0Z)kb^eW6)3e4`Iu_fhbC`(x z&z`b>+U<4w{MpB2X5ld1s()k`szb&v%|Tpn#GiIOhWd9C@1)Lz{2LY0l@V|r+JxiZ z;aaDNF6it!^L$^z56H%=C_x`zSVmoO@MN4U~z> zBvu1tJJcRaeXvS&jd;LCqQ=!!OUm*%q?9;D7yXXFY>0NYT(|}Sh_SGtEgg^XGCgBd zK!_+GJFw+{#tLD+7C~w;Lf1&L`aL`Xzv9VHk>%T8)$MaVwjtcPl@YuLHY2dk7p8d! z&oLKW?JfFVoYZ6j-{R-TbJm8p#}%hb>=u=r-WEX-UcOHIog}2sxL_4Eck@>upd53! z&a_hkpkH-DcGFz#pWpf~e#-DkfN`fn#1V*yhyC8Tq3F1d=Eu2j;W1N=@?>2T%nN!Z zW8iEB5CZDg*tRPS-xcB9+ zF8(6~kXI$oN|%*>pp{#fx&ZIvepk++TQ8gD1qaBir}ur@UhxS5iWJ7FqGtGhDPr;M z^PE$a%=im+BG4DHF4Z`5ST_dn2sRi(AAq8ki|>+6ep}Cw z96_NuEg~^DmHJRJT@OG)Sd_z=O|)@Oq2qMr(mibO?%~aCt9i7t?KswGeQfg}&MQ-n zYrohd1Sl-NJWv_tN#oE}3llb#p@aXbfn1iY?X>EPxt^ZG*a){t+>Dr#Pq(`hQopeR zuD)_M?Q}9dZl?07sY`4hn8Sw!)PU%%EJcgcVq&0RE7b{!SPRm}MrBG2J@7`HLm#gi z9na5pI!CNtwMn&~gvfW{36!Ykf9(cjeAg35v}+_|^W%>3k26X~3Da?H8Xw?aGUoU- zMosgSo^Q5#2^Gi}6Bu+90*?wRuQ!l-e}9+NH(mBSyZ^eIBu{!Yc{)TR}#uk!KE9alb`Pij$}7k&Yy zcS-ATYCVoj%ml)q57i=&m`vS22Ky^4OqruGr}nC3XN{eJ@2jOQYE=t*|VeSiIUY)RxY2-k(t=S&5>NWW^xs6J}nvbRk=fC@e;| z!_|-3jL9SMez==DZhlRmSJ@+Knv-KcPB17cTRHKbuh%a%{J^E3`sbUwRloH!SmyL>+%vFhJ?Q>+q_t+DI`2^DpNo|6LTE5oZDph8m=Bx-| zzkW1CS+(Q(gIbKo*c+sqik`0D8yqIl0g1=&=T{P!`E(I1Pl@~s%^ougoRVGrW-IjL zdl`Umzd-exV~yud5V>gl-MvH~8tvV#|y}WYoQ#AcVsK`5)r@~F6!NT}&{b(-~S5Zc_dOTU19{d6oPKd3aiR}NN}a%>C!yeFJJc3ke8XLjVv99HQpBaMpWPtk5VVB& zKYw_!<(dc`ebJ}8dWme;j-w7(SV1p$%&rffCpl#Q@%NjS_IY(pF{!PSeJ*NK0&t>2 z(}6vyZQ-EY@u6a!#YQ*Z;O~9=$2}|51yk`-x^~LUl5J2HcoR$TzEts>uyi(NGn#X@ZOTMv`u>ct zcGE(}80Eai0P=SWAu&1w30-k_k=Ad3E=Sg@636(IqqPzQOk=G$b*gQ>Wo;ADE+oO< zpb@(gw*ihWGX$a~nK#T*Tlvmb1kxCzt%ql*Z4R@!O_@2r)v1*nh%FV}hX?B)q5&Zb zzZ_B2U$=4>@?Yr*C4RsA=y)O_Oi71dpS&cOvifkL#DSkt6_DqDm?*QpiI=Awo1I3I z+5D{U492!hwB0NAg@4p>oHpkFg|9$HJj95!*~5u&dnFhEah4V!`to9)Z9KwctqHn= z!0g2}vX$-C$J7_FjUmHpU;c`kML8q5;r2tRlr)8}@K1ZF5mZdysc{VMpuV0u+#y z?sR1od-$)}t~EaJUJ(Cq+r%TLJni*m1}p!1aMkgF@v~!mqV+AdzqfiB1+zb|fbZom zKD<1=khz?*{kq8Pkkn|n5ZS22Y;8msMJixMEw*pLMrL0T#XMiqUX?_WPv;=HoBtWN zzT;>5PXH9}rAEAsar)upGfKr$|JwFlmowm2hK`a|m756fqV`MR0tTJ2X|q*bJ$sF4 zU`fLDn9+;4AG7dcF11L58<~Ou$p!lla3shx5%Tn+ur#*?wem<)abr#JnLD zO(qF9Nkh~iWDbc3b`#-INm?riB?)+5hYLn7dQ^~-);2~tk$a=fZgFW3L!z_-N0c7T z5Q{4CyYNen`f8e^RJ5xK)h$Vx5qD5;35NW7`6vXd7J;Xo7}kqQFB+$-EdEkp@oj%t z^+(+<^~hrw`$x#@WcH{D5{oePo%=(ab=STH=Dbipy%lObaT;kyTZpzE zDLqiw1gO435A2Ks-wd#!0Oq8Gu&#p$p)rQqi-r+eEDcepPn)U!^q+;T%#d$edY`oO zaOq-&Tq4)Yr#;X#&`7&<-mZw05rkBj!=yKN-#0)_^91b0nM`m^Bvs=-AgS9Uka?o{ ztjesmsJU63)t1H!NH}fvvpLL$h^rooBGqjpR)}GhmGnFy{MxAvk&NC!Bpylc(v!Q$ z@G&xKAZ{dAddIfU*Rj$okjJccj(uEI9-CQuo|SzlZ0Q-D1_#`DUF#u8p4|n6JH#CJWoP4pxLXzPQD&R3SpDy%zVu5qaEJI%)H2piL)hx zwq&mGnjwB>qhzOkwgK6vR-OZFfHW3D>?!xFK6>-dUfzIR12^1W*D?stEzOo!`gJc> z*OJQ?4D)n~t^xb6%Qq~^)qyoxSooh+UNl4Iy%j9l(Fki-){{~maYPG20@o&ucoiXs z4f|Msfb$rYX{gIae1~hav5{FXjjuhU^qSQ*v~YA5%{q?UtUp$9yADEhp}+(eIH~LP zy@~(qp8#CxMdPl15_)Dxlnl80NHkk5y$;S-F+#Lu&bE&a=arY7?R0oE=CJ8WIwC29wzS(J(18m;u;;=ICAhHXnF26qQ-bWyK|DLhx5JD#l49rd!8HXuSXTPokxQjwG!u|h!Mfwx6hUJBn9%>S9u)s^iu5P z{iMbsTH4Z~OnW%spLv~tKRbZbwAu&7BWH-XxLXi<*|VN?9T--yuN?NSO}OWr((;4` zueaL3@XaO=Af7Uv-~xNX>wn*3Wz!v|(R3p6knaAf-;3P{=ad(EauW3raRx!DqY6@eEIanA>FMBqop$lh7q z;**$4VHohIbqJZCG27JMgLEi!cLX4wjcN@Q?Q(9Nm6GA&?HPq6wbv;me{f>AFp*rep-sEaP!e0tPKt#C%T4nFpr_`>|wa6d$kT&0!mJ z$5Ct5Bs%KZ7-b}-qr)cLw!FiLdGVM8JlZysPbk`c&eB*s2xHvi~|*%FmZ1{4=Ft*+DE>q^5ph&uUve+O0(j5jF?Z~^;3^hgIo z?(W-H#2>wfCoscWH7H8FX+*~d{ALR;f7SqTteKpQSlpmOisEc5AJdCIWhQPhm`dHr z)weO96I80(UpdKqNCcsG?JvE%Fk=5ugnDEL{}7y^L?_}jWrd=AoHW9CQY<38TvyVG zlAR^kk-*pDKoeLVIVVFzW0|G>AXXqwKpkqx+RO1vj5dlfmc+9CToU0bSvIo7JNE|5 z?bDf4D<($~F6pn=ToK+bkhq>uY87+dE`b2ObNX?0A5AD_snDj`Lh>2)kvRPl5d@lO zuPcOnPcS@q8$^$QgML%=E@C~c37>s+iRHu7oqf@4sT7N>VFXk8gtrtS#?Zx5;Obof zi0L%yRq_dW0i4%>#msWDt6ZgT2&%ih_mRV}PmTZnBJZ%Qk2%eO zBcw47F~@_fqco)@VQ&eEihS;pvwzqIJQDq6P52A|pCrJYKmybYr#=!_P*l$=Ey;^U zV-)75r+5DRXhXT*YD`jZ#NIZHBdMShslJz33T1hZ#_NMGwUcPIjyyq}y_U}@D#eXs z)?EkOX?L)%`Wf@drn9>2QOQ6AMK3`9AqI2OEP>ztC3qiW?Q9a2AyK32_7@+9k;lco zPtL*82`!Wod}!r_kvh58(+LUst!YS5QR^Dkq$?uhE70zhrh{|?F0Nn^n7?&{5HbzEh+M!^@;fQscp9PJlzA%DbB zacxfY87&>+=pW*eQa4`c6IXhS0TZyg&CPkh79`Tgw}HCVwy>c>VabZ!{wbIb&wSh5 z-XoR^c~tbE5Q5u5bkjnJIgvHIxnMFi#d_Fls-DbqT{806^?m(N<(uckoJDIk@;Z7se(K_TdT(d#0Px`HE4ct>k`6d%-gMSRdhFmGMWWyA9uA z-k17(w7*v}{BB2BthejGS%6|9G~chkfd{$1wZE+yJN&y3anyny8!y)F63dHA{QCI! zts88%2G}o5F-5T_&S*<0;$kFZ+Ly&0SY{49ge|x6=)dB8TX%!6W1Oz5w2Rn)O_ywJ@;5LJ-|-GO7b;TENPWjalpXYsvl zoWwKe_Ot_&XG_<9tI*h1B9NTEx>s2ILO9+aHvD1wZpoKd1$>abUTI1@*sfp}=Qnuk z(@k}TJpltgFRHFAY}M*V|0pSn<9in^WHn$luTb=sI&@n6Kn`Ir7NLQ5N^ZZ}l@tRB zuV=i2q&R@(skk;T4w>h1s+ml}MR9R$@LfpXU&=(EATY~}Q>gdg!p2B~pti=~SHl4k z`!e=>-WM8LNv=;p`-Kq?4!oZm!dWiy)x30id#>a7di$=tv~IEecZTEmwFEUe!(Mr=1_NZ~ zUR_J$0`cG6j}KLag=-8XH9O0A?DdtagXvB z#cCkBD{Q3);cl&ci|XWB>ho#`k!!*p2AhgWbNqX~-~&|Er95Ss!m&)b!GC&(i6wm9 zjWxHp2YN%|nKdAl8ZI?jCA($y2KS19k6X423BXZ1+<8%%Gf@3EhnFP}sx}Wx0*Mar zJbYHGT;^lu&BwZk2nt~gBgyaf-wfmD=$gw*hgX((=2kGyRU>jMSEgaP6=fhp$R6~w zO!*3&zhf7+)f&nXU%*hEXL(8x@v*{CrHB7_+U355-h+n7AC`fgIoZ&fjKuYO+t__m z4?_25D_@Uab5$Dta6M4D1R!8o&oCfNQ*!=(SYggoYiazr~%$(4{ zz)*A#+Ec>vl7xYk1VP(SoswRt+nOh?{t>n6MRx_>x}E+wzZy`>3YUK~z7E+1Ry>xy zz2b=0>;(P4n|%M(fahahHZIA+x3MJAEuM{QN!hd2HGq!d1WR&F#RmljAk%-a$|WMM z*)?{>&$_GpKzJ5V(7#mC2$T(U%Kky2FOn?wVV#N2P(vM$iNAs{+w)_&D2G9DVlhFg zoMEHPmE#bmXU*oHx4{cUXrIoX7RuBpk8*-jiC`$xVf_3O8Fi@4OseE zm99>kdw|i!UvATrD)2xwtqpGE<67hS4i;8s{?5TzpDAXbIuWim6^P zxQpY+(eeAYRS>%Y`2qT_qhMqZwM=)JWyt#nReL&?aIp^!)svioCe3_AIU;E$bw}1K z{InO;Zz9t-9jRFQ>(m){h}lrdBop55pBy)Io>Clr#UO!1Zp%E# zjF8)()6B*|v9m2CF~fu5vX?)5#xaO1mT(t zGM??DW725QgY1$U7+B}0(fUU!yM^&o7qPA{qpXOgBgiR?&odH*9M$VI{B}kTX=s!D z-ajXi)maO{LgrAzx+|Yxc7V{tEK_Dtbz*g)Fw*mKtSmnjwDaw$SK>MkfYChH!Mc)= z;GkIF8p-Y_QDgL=FY(k^@_$G>tG}oMzS|EeAt8;Vf~2%G3?-#f5`uK+5F$Ompdua8 zNDL^_Dcuc{LpKcFT{AEYb9gSEt8;VS_xulgfA-qzx7K&Drzg_?A}g>-<5@N1s2VGH z_mR-I3l}o@WKU*8?rzikCGc$AxEB$Ofx8qB6DCL9BFQs>4Sd zZ6lXKr7tmfZGY9kQdAb3Xy(Ccr7UrW3;yZ9dr=@6A1&4&bFU`E2zF<2D?s&ct*+TR zB3uu_VGRY?C&UYOT2JHY)PHz=+8@^G3mE{xIy51@6wXj zjW}Qe7raA)7M0g0va}iN9zk_s%JLi5^4=B-E7DlcO>yj2*3x}$3I>m#Ae?k{=p8&* z`$TVzo_-ZO9S0pQko^<>Q(*}Q0jmpc`L@#gNL#`8;r{IsfhMm`=QD)Nvaw!Y|9Cm3 zn`!wKxX-H1`_K+)@E8=~Xm(XzPJ!sn-e4Yq>v%iz?7+*L^U}y>$YoQGEasbCYSl$9 z&p;sj)`gWvahJKTl{D=RkG(o`CnNwD}OU@vwsO%=g)ngQChTG7kk<$lva{ zPo`-|-a@XFYW7HvmicTL2DI#Zu@Q&A#I>-yPS%Vq za(YD<_86Ok)lI)|76h) z`10m>H!pzo%IPP?cg(E0gux_wi?lifa=a_YO&>0Q99C;G$k=E4Ciak05}!MhsNF|< z&;8DFTeY^oT=R1gnHJTF?oHEx<_Nf~lT9LbUIdG)Z#@kxj+5|s4L4Q&^SN}#`|OK- zrb%WlQDDWK^sUpl!Xk;TrZt@2_J#)}70Kr&z5RPo7AErOTSJ5~FQofReep{DILz%j z@GZT_)s3meQfw?U1%V11p)Ktqi+hFRT>uWWg`K15`si+ylAg{l!ahb~i&bx!+lM8X z!J9Niv&XPoyiUt()tCf=vFqx3)>ivVE-|xG>4tw#;489&1F?G+1kNuiKUU{@)O&X} z`+KyW!R?nBTnoGRw-q)t>p;>fX`%j{iL{LS=j0POzT#Ig$hJ3w&2Rv$wdZ`*=`u zg4bfl88sI|luxWiUnvet@Mljz%RSm3mWDwxoiEQ=^$rol`vw84nl$RcI9de+WHOGIPSSXiQ^w+R@6e%7o`5W(eWQZ-B;b0H zK{|&*w=xAZx7Q$`oACR>n~Q3wO(99PkW%pOudKQnfsIZHgb?8$5{!Ai04UcXI4o_p z+ptbmBgGe1rPv;)E4Rzgb;Yr`gcW^4_UACfDypGHonGoJfD-gKEA^~`G<(tY<@#-% z+ApOT<^W*R((h2Kqyp-I-6vl4YJEj2=$-F0yk5ljbd=H-nwB)Rh_X+z_#@qr~wqFQ>tLQd~6>xfZk}`6SH2xW52Xwr}u+3@dEbWybN#rjqq&M<&gM!87W(Q zaSG|jgJ}Rj9Cfd#D@zXSeraXmCTZS`lg7e?1Zet#=H&)Sw*;^rKIcPQ{XIv?Gh{kiY!=SvM}x zY+6g|?29uaO2ns6^#@+<%@(q25NfzRd#z8PWWo?${iF}=3*@1?vwDb34v13L&@Gv; zwJ5vdg$A*sz5acTcSN3rrTalob=Cv7Xkq3AG}r?!C$o*s6D|nW zEw3k$!0wY5Jn$!>Xvg1bg(^L);O{Ua&7tk5Je)Cxu$i6%ZGA0H@=Z~%xt`b9?HILR zxIj*nc{rWTZWe42bENemx?IcbnZ#H^xO)}qm&DC)OgcvfSJTQ3^YM>$-Rt%gsHn|7 z$z$Di)BlAU6mSa}vR*9|xGS4|b^)lEFVzbv$K|@Hn&1PR>8olJ6WP?(pBHYVSm%pu zGB7x}Kn%p|O8S4K^7Mm&td8PwlPcDPYWB9~;wYkjNlvl6#4*~p=US9MdaSm~t+g%N?u;sfMS%+yEt zL0`PyQaiG;DiD~Lxi`Ql{TrMnW%YI^zW=@Ev2+#xssH=!o2f=Kk2{Gg5a|*Qoqtm*@el*@-VjwIBdv}WY>`dtBPC0r8?9QokNu}_L!Rt2 z1G!zwpPNvJuc09T3VBn$08(nKZ_PTI^fg8Xm*t9M)0No1RI^39jI*3$tuosTa+E!l z!GylA&1+!A_|WMWe0AvjUv<^i*JIyg?M6{FEnn2S3L=plGa-u;-TU^n@yODelqdg24+4NE1=HxY9r^ zgW+MNFAtp>xPf`F9a{ri!jtP~`R`9sAy4Zpw!EwUT}a`*a9rdEioc;BtwhPd=Gj6v zNLFXRdt*CLcNlL2S+-hT7o+dR;){QaS^ip*8&cc&jw%Ch%3|MzyC7wMCjm| zhbO+a2az$+U>TP6wb?QDzc{R?6C7Bzu2e8>5NLxL@jSvBTXYpWhql*YU--|&i-!;N z>LhWw><0zU4XqpU)Q2fCRqY%j;f3-yzlrS}#)(1;nkN#TpQA4d3L-d8wtHws! z;%?5kNRW#kP6r}M>To^4^l}+Le$O4C`^8JcYnExhTH)Q%b5c0@x3wFTNwaJF2EDan zr-@HryX5UQ9^ibLG-(LSseaFVJwNMCW7q2`ifhsGg8{IqI? zD6J+6ZQx*!bz!=$#jw#sx23Be81@Nf$IlF}Bl}BfvDm!+xe4KP4Bur8>JwYLndwWPHwrka8~wstP<;5PBo+ zI#FJH<@~{1E4GcotC5&%S?>cAjte@z&aB_(wsMxPE|=s6EpV8#DbC36kHIKfDje7pfv>HeRB^`YfnyfX^1_{Y!DL<918>4H7itAl>}BR1WVX~ z8@2UK78g}yzQQ3$9qs<@k|~|V&*wK}Rm!x8L3Og3z3@5{nLDMVX4Mc4dq@@5a1o3f z;*WzNG^B3cD}m96EjBAhoLKHyQc}Ki>7*0i zBmVt_CF5bi&;2DB=E=dR8PdD+PDaO3rmwteogkxB`>&^7mo4=CGL8j00o99U zd1h&oj;IeGa2tom;Z@7<kwPXzU;7?SzMTTZYD`z1hI>d@~5}P><&z- zRvi!PHcE^~IReOeg}a&H{+_O#n&jf0QLy~?GmM62kuQK%md@htew>ZB!XESZg<#9X9%DWd?D8BfI>AL3jP$TipXyhUCEwkz zt4KZR5|&X8ZOxD}RSjMCHrz;0nWe;U`kNp!dvtcF5B}9TC!(|jwzDF(9$Q?3BdqS# zjTzsM_DB0HC!LWV&G#Bs_cI~5y5(V65+JLe&I~=FfrIDY>`6D;XC2!~2kQynwaTym z1MSPLs^ioo5^|W{y;5*iffw+jWKi57X(c!dS$ty{dlYF7hI1|PR^Pm|I?^iH-ef)a zXwEz7VK?|n*^~M7VS9XP3(Jf31upb3>MyJ>LO^UA$O$MMjy>@hVJ6zsoij7{TURG8 z^(sFL(9-;c@f_3u#O$fKpUAS8yBHoqIl9nNBP>dk-x*-Afo%N z$9|Wg(56Y4nBlJ=-no0e{Yf?p*EoyEcWl&KXBh%_T^L>Pbv2Z)?V1|kVqFYcW9+*r zJ*y=0+qu!rgjjb8wk16q28fw%{P_TBa6Bac7%NnRT@sKU>@!LY^<;7oroynO$B*v4 zPq5S+d+Z?7`Aa`^%`jEsk$BP6{8#AK&1ko^X4?nwwg8&sK>$W~CCB@f9%Q1Vpw`EG zB1{5oPbTf9F}mp=2~6E3LfWy~iO32hYs8}R%z?UDCo00_0|_#mGf|`CrirT;ezKPn zRwHmLrlHo*rB?p!2*;SziWnRHK_>MfYP$LBhydN0LYy|H3%ikytGZNAgNlfr$idqY z=i-C4QxE+qybTQ+&B|aix!$J4rpC6vEkZCc$5%Jj4>qw;F6Fc~LQ&)SGDa^Ua#ax7z(NN1Qq@U49EY>b0fMp54+#?)HD`9@F67WyHNG?^w+( zO%?weN-#$?tSS+<;H`TlR!*2K7FS>(Dh(3Toi`Zw2wvh6R{%ZD6Y zy#92kzh4lSQMCfo)i7&oWdWoCR>2I-UX6NhngO#fyb=9}CVKI=L~m7iOs8vYPEu@! zTS-}2QbxFBEYuY5GQ?kmz>H_PN+|n)dbNU~whLeVhLOCGT>fP)@gV(JXe4MsDfv@! z4qjv8M>BbF*VR(@$SDAJ74~?5c%z!TTrP!SdU|7d`BW3gME)0)DfaERiDDR7Z0d31 z8}qrjo$4FY;(vt3r^DJE1#zL+g{%?#dmJ9@4ra!Liw*P@OiEQFuyleSx4#jv{b>4c zgsi&Ci+Qdr7Oj!4GbGaAyR7iC2Q0f_HmpnMgwfx4Oq`%I?(4PJ3Rs@zFUAr9H|MXh zrjNg^P`*l-Ugon0lH?ROK^OnsKP9itI8(n7OVxqAY`Jgk>~cNVP;}=BZxCXL zw^sm@7(7$Teo~YPjzq&9S|-8xpt>*Sh1s%00j9PT-J0@##&ejDC(ZIzTyc~2+aYAN zJA8vP${AUfVFh#Tk5J~Sdo64wKA&KI3zm=IeyR@NcS_G%boV(9eFrea#b(<1FLKOl zMx&YmMd&&asBw2ci*Blq&iIjd=Qmgx`EOFBF$+jI#Jn!?)hjKQ!_I=xWYx-p%D{wx z%(J^NE^pH7B_3A_PSUeUzid$mS@D#tWjglp9B($xG}GBi#^t!!!s$0u%cIZ0&a2rg zmfO`oIWK05{R2tJKmM6By~p6(uD#q!!);c!CP5QupHwr4k5P6_t4uVnE13LMv7%zH5CiB zaI?fJrXz}^z+|aLTmuTPnD3V&;D;h+FDF%sQ=uEx#fBB+&H^_+Dzg2MaQ_fH?+~}_ z(5H6}LV6(!q!A}w3Dxqp{dYmdfn5EhV&uZ@`A^+|PrlyDNZvVl48Tu{#y}YW{i1hm znttE83Lwq*uQ+QW;*Qo}N)S})l;e}JPXKLAWEK6Q-lhyr3YfGe0wYMK^XvwHbyRn7 z5#Z3K*(k+3HiB*aeg6;y7_)~2QOeJtkcos8fpgOV=I0pCsleB^0e!>D`=W$0ZNwd$ zH`J);Cmbg4eoAy5;8~mrc{M!Roo5E*5-k#UtX{C2Tw?RaVa+7q$|ss0G%*bJ7Bl*2 zx9eK<{vaBj^G&PMFY>2$KaFYAqKZ)?ceu4elD7%Q!Q3WEbJluUp?KUK0 zjVrJ}`@ywu@=3+n@?EGHiXC)WD6w#%`uf>`!^4dWt*R}0v1S&bsvD{4l`!+XQugpM zPQ3xMwI;TGkQ`wSElYPR*CZ(?b19XQiMXObq)Z7EU#(?YAdt^OX}pKMIQ)Ju zV>{2P$w)1Jd;eN~u1)W=IPeOqhWUIrLvgcanFjHbm6TC;TXs-9Ld!=mKhyX8t2#-| z*8wgdrH22l#gjAs^|nAGJeR>KEwtW`<2Ejb%6DqE$y4zf&+F^MhePUwaD~v zo3x1Rdaex5X_2HqXU|reC%pQG&2)F`kgP4LC`{Bk$8N zz63^m2&NDFxkiN6otWD?9q0hnx@3+d%n5UXuVwU~VA4=&5Ro?+$!BXe6y|$sh~-~$ zt_6MxL1jDv)pBj-H9~zWIay?dCFs2`?WP6yF?6087g7r7tqlayL>w6On;d4+>$Z|} z^yp>WSt#-|(c`=DHtW*huVPi^%;^M>E;N_-LQd>P&kYbfsY}GHQ($)23!K-Gk?nwH zGX@nkD443y)$@lp!tf}verl%}9Vq!}g?qt#?^*8!t=BnV62CNd98j*ezau_;M_nj*q3 zqD488N3X1{S&kMCIgz}uk5 z)+GN6Z8P3-N1r@_l)s3oEXKY z@ZBt-us@Ggp0z*yZx#T%{D+C-m){q1L2PRY;lM*!Da6k+Y}Prw+=P z4W7=MJtQuJoQY#6Rg<)YsgwSYPn{~);0SN9rufvG-3Ss+VjP@9s&ZNH^vv@nAg{O& zw$oB(<&6B~W}ZB3C`PoI>~K!H^$UInK$*w}5ze9R7)ePNsry<8>`j4gcja#=Z(?$VF1= z2OPINDHA+>J3U8Pm3Ph*;~jbRJLuES*3QsLxUT?;UTDW^gSdBZHn@>6T@FcQTXbvD z%QRW>VE#2}?ECzWTOYM}ZR*4=`03_&W&tPr9L_89p1M;c9{MHc`3^YNv&)RED(N zH(G&;5z#2UaONFzcIEeZPgL0qky6OVLRyN)@T%nJRIhko%QAxI>wLKa z_bx8R7;W!*ewoky$g1+Qqp6ZRsGLMeQl^MgWnJaXdf^wg6d~{&J0Ugw*^Pm*ZO3!o zD_cASu1=VnUXsC3Pn47JJ7BuJu_GIl8z7KF8Dy$omnWg9n)_=WHxYx@3UsTg_IZD| zP=WSGo?~mTk=h0|BaA0RGq@1gmXLhX1v-*c=2GQd!ZQ-NdMHqxPM1oC) zl$I8`ZN0iqI_Q`B7pmR2a|hCHK1<)z22Hn`8=6ke|vXLv-*MdO7ahkZ|&d+ ztWtY4My#Kl{;6zy1yQ8Md@^I~8{XQ8@irW-gb|H#^rK?2`1tiB!UpD8p7lo z?k~U00Yln}Lc|(W#n~^G&SoQB7mf@%yn9lU(%Ak5$V=Wrc4?}9vu=GMYL~%qcvMQS zYg3jQ^}!da-jW5PQL>5eQ8gC?XY1tg%^|{P z+(BN7=FK!jNqC^!nz=qRAHZ;c6&U(>^-jrR$ZuRl3&}vRoWEi z{DfFAfDyjDY38|fV6b7$uAKH*89EM2q&VR5rXq#nWil&_+~c9oAh4w^`sErlzPIE~ zwrtIY6rvq(Zn1N&b*OdrSD=m*ZE5c@8nV(|{B@E=|4WcGxc!EL%Ul9UVJm|}ph}qW zsdPgZRkQqJ!yVANM-`^LX1?GI=sopVf%j`|L!!$NuMPgaczC_<$swOhFQkGryYMy^ z*szQachTq0ap%XrQh@uhxDO=fnf8zhP|cRC3w*Sd|K^S;FfXi51=eI(C9vMD>k)|) zc`0wXJa>f~Y`W<)ozaZsl029(;MflAz8}Mv-!D#c#jjyOVkE>P8 z9|6tx<#F!ysRf=diH)s2EA&YML%rc2xU+$;o)W6z*)Cw61{s*_v}N0nNA^!Sht@Ub z34ESAo}1KVC2j2gaOE{9%LHk>NYlI>nT=A3mUg4vLBc%m9K(fK#(^A5X=+x7i@7h2 zmk_wYRCWdtE3?>Vt5kINPq%1ans?Fcn0SuRu?=Thbw+T$AdefZ>?S#G4AYvUbf^k%#auRsu53TB=`o5-pWD9g0?nzNyI#{NP3cBC9H#;lAAOxu3h(x(Q zi9`QkcA|ZH=L$PTMalYs3*SYJ4jI;WGuqRB1sC2szppVZ_=R2j1~VR_Q&py%XQgU} z?@s!qI4a0^B8sYF)lTydnlj~i!=DyR7Sg#kQch(}Pfk8Pn1tTH!xP4=t?LG_!9;gP z7kDj9`UDf7#!&uv7oSvvW2Uh`tfP{h%6iXXGt#nf_1n3O;-fdI%O@w1^rK|m&nEUQ z*oxvM%mOFW9RgyHJ6e>VH2y4oAi1O@di|`%nbn+;n|;Qq*W`NjC+qy_b@Ek)r|0&v zS1bhmO%6fT!_&Q{5E@GUblgQCrvubk|LDa4tRvK+nA>80_pUN!3iLBpY7 zv-|U0!u)b!hJ8_c$2+i-QJIB6BD<QoXu-)o%)A zt1&gD#D9D&Gc&pPzN_Ur+$(4+03Sp@FjY!BI5}j(qCKh>tzRbdb&_MKNmI0w@2bA! z*fH=Eh5tQ}b^Xaz+zA1s=)yfrz)(UD`cYX)NK>_ zR@6@k3PUt76lpZi)p&e!=kouSXSB%3bsXe*Ggtb)m%lzK%NTE5`*`s5p}jlE(_3Gt z(rlC=4p~-9wk5c7(w`2|`vwqR&0eifW&IXuI#sWC_{Ixnp;Y*nbFOZw!)8NynRVE?gyPDFEnubxk$19Hmgh!7cRQh_zTn ztwJGbljU2KO|2;CDZ}iSp`chX0=hE7nk4c-pp~pr=a*AL07=gCsS!QXe#~GV;ZV{v zA)eZ4`W#X-zRv4k@uHEJl>BG$;j8AnkLbwA%&{j&@yX3sJKA&ziF4c;{psU#n zQFP0n69OMc`1=tVto;he_{<22n??b)_cbi<4jL$ovsMR1YqJzSTzhk@8HgANo*LFa zNWIP@?dG>m9)FJT@-!4X`Zrzy4hr66S$vgO1LCjTr%rX3Kza$ab*{oM{>Bku*uC6O z95d)L-dwdGvR!USh_y}hyZk;CNv6<SB5_+XQQ@P@##^6CZl**e)3umIEc{4=jh?N< zPNak(d#TO}Db42r6u7C%jyHB4#VMFHF?8hVGgxCjN#QK;zUp5f!(Cv)fqx}Js!r-x z3w8|1M4YLk-NWNW(zI43495kmd9#fS__x27X&8E2{Yyhf+%fifz4H6i0X^B?HExKw#X8`0`#G!% ztoSf4n&>augjJx+V!CtE-=j>OfIzm?J^u`*D75Iu4*6b8H(1g>z0Iq zcG`|Qwxs1V=p)VS8BKaWxV~bh`Wh5VN1@FF%-O$uY_Y|Sb`9}1cxIj)Fyz72@z}kU zcX+^8MA;me;|Amz(5!=KEqp^~IM)1>;^zzeU4FE=c&p=}(iFjPj8 zAMJy!?73LPtLY&@u(gA8SIi=pkymzjQQSl(oNYoZ=OJ^@8Ri|O+A+={vxHLv6q^4k z?B%h{AoRhdjr3uoZQ+JJwA_A>Fw!x+|jD<9+u1jR^dW+yauc9E&^3 z?`|S0lPo(BzXGmB!TXjdP#9KI!25)sITcO^EJ~dp|6Jm%_wL_Vdf)^UtE_0EYyRc4 z@_~fo*R!@v9=I;!->-KVkbaN6uN##h zi&BAS0M>x;^T#5=!a$I9Ggi_m=ld@Z1Umk#)AzuT{7pqEnV3Vp(n1;ZTQXl?s4;R} z@*b_fdPbPQ>Z+n>Co+FRf4`){WXByKZ5yO8&!D&rcAcW6&a8NfaC}R>qkq$;3Ezbg zN@o)&bo~>R?{>X&!IRS^45Wzn)jkz5^-+L++m=A3Qdmm?e1K-BC1jPLyB_?#$htu<5VEDfDSCaV8Yl7j@f=11;1G;kVEf1-1*kp(Kx+6K}0Vu(sr;UC;Qj8e)a~f zFLg`x$+QU9KSm}W;4q67B}+mHV{*Nh!J3{c@d+s}KWJi$YBIo!FXn}LP%gKBFW$|v zbG+F^Z8<+*%dGttD7miiripqi#t$rVpX4 zvV0Skwj~IcD-*HKil?d?s?u-m*CA$CIsQ z`)}vv@B6P@6Fm85cWytY+j~YXqjsPTb#7hHD@s~=f*xgeq@?0GxJ0hx+%iQ06~PYr z#R#M6yaSW`N|7sHW&Ktji5#sP0?H?Mu>=_gvw>%=)CVEf2@37!lk(ecG^Re7m$Uk9 zi^bPxmjPuqL7_VP_5T~APmQ2mx|2&zNpov z(F;A`p_T|C9i$y=gW${YJ!n4O;Z<3jLS3)nk;N9jtf|t6uA_;LKqp=t3vFL+Ypt@2 z%i^^WCKXh#u>Zl0*FkN_TmJQlr;THOiRx9BNbrMg%4nLI! zg^=OJ&;PQ^2C)dn3Q_{F$Uo?+zv9N&%MJBI12nk$1A6Mo)t#VDTxX59A+z5ji$JN6 z?1^mVix}DB;%~Y8{0$)jgex|-C&f?A*+b{@7Yqg2uC(CJvcHz4Y*{(GU)Hsvd8aTu ztbRprc4R3ZGm&+*-CW`vP`nvNy0g0y5bSXpF^wPSCa55ba>Qm!g7|GRtStdFU;~z` zi#4`Av-{||wJYk-e}(n#+6FL}E}M~t-ivAhJ4g$W+-p%DB6MF?67KmC{N9Z=EG(>d zCm2ne0UPn+%+DfM-KpFYykcrq;8J3k--f|t10bIMnKZ>T>9!Li3obKBUKbdfXO&8zSa zxI7`Vt|-P3OUU|8QY~%hG~r#oLgsQOyn`oXL0gDpLHGbc(QKBuw_Kf z{s)@raiR`5$`1d%ll%NW6S2}^fWBoH9M=Uu46C+92z(CHDx+QOI+f?bfp91GJijRn zyOq0Y*J?lfclITyA+qU&!!8Y1hEao)hrpI7+53H8^HK?e^a)ldXjPiY#D}SNA1{cE zZ%tc<=1XvT%O~}_v`2L^dD*joeEo@O@f0qU?PcPb_Q|xH4}fl`s*~h)lpN?E(cS_8 z9%9eU|7m}~)(EGRSp;BBF)z5_a-Amxacj@@d7kV`CnNuZ;VW8bDu&5_t^3Rg0|%XB zX>Z~lkwvFy3K_03mnyl3 zN*clhyzyB3iBZf#2ChQckG+NVbuYp9H4jwGY8uht2PR|+)B8j2diKK z`0>RFXG|FAed8ZtnT;_~i^k+?CRPN!#fCKn1s5&(-qW^%vUe(T8~)T|1>v?EPj=pI zHonYeYGqMw8Nrxapp-2ZvGxnHUiRZ32?917!=Tp|T5G$Ws}*D+W&sge;?{?pqnvZg z4J~hpW$@X5+8j1$!r>DJHE6!RC@lFcoCQ~$=0$rNZVU+}A=d?W&{d|C#^i?{zS%Pv zF;Ff-pxnCMZxBsdyk{z@;xR%5sp)9uIcY`O&BdZvUf^A<(0SHlpD$a14>`BrSvxD7 z({@xaP2G53QiUAKg{EXxGiI_P&hwW{JZ6;Rp^o zb7`K-D}(0%TOD7{vxlrvwP#IaM@udu6G0Q-P3uqVMedAWAUKhC1hd2B#C5T4k#QI{xD(oSI?vFEeXlcb_5fVQln!`oyU*+{;&yx$~z91#7R zryg;(M6y3M*$~I~eeb}W7k^Ixy>}TlUG3*0uGS*mJ8Jr)Lno&ksPIcO4lSvfofd8A zt(ndlp8i#cER6tipV=VNcL7aI5>yVB+_+_17)zUj!E$lqp%Vxwd9w=lEPEx2^y4)Etu_`@Ty zbF!*+pg7ahwFk%yiHO)C+w=K-2cn^C8bNlWeF_mAFs2vB<=EmYzc8Q2%*^|P`qEIb zmg*yZA%?!MZ`?k?_y=n?i*RI632j0U7KAE8CT$oyU8(MixMPL$1>M zDM_I!he+Q=PNYVoMqMM-?GCW@nmA}bj-^SZ>pS9xc7SSXqok+b<1k>PY8j~b*u3k3 z;1FQ!{|`*k8lno#ru43XF74H*H*X7o|b}5Dp;+! zv{NXG5f0_`;g+BfYVW<AP?KEqVQnAo{W>6f3+FgKJC4azp=+(_&^mEjgf5aO~SN^ud|huC>Wl z>ifuDCK(7+XS^=T|M?$c3yyrDq^Buh3Ta7g6XVP?P`n`9N3jDd@8>O0+>)}%@HG#H zMNEw1nHjYc4rEmRoawgxWaN4OAzP99fN9n+`t3}oWWzyv@pEsgNnL6^Ioj71r57J( z$<~PH{v+#VmXHv!^5Xu0z@pKtnL4bk4L7q78sB3+*>I%`6BIWajJ0`yK4$EikG?30 zz=f+FHOWj5ib4f_Kgw-VCO)V6^ZG>i$22=K$%e(dcI4f$=0UOAKT*7?6Y+$FW?O+1 zqnqRB06(w*ShOr+Fvw7n{te5t&ylCTyc~t}w|+dtr2n&h_E&Dkdl{0JE3Z9f_mYEX zBX0Nxs6KH2>zCF2qD|A zx?qH)ih^znU82`g@m}6%LjqWlp!YuJyse^hS5dmyBH&x?8$-v7`(lm8IR{M(cNaZ_ zsix|4cl@Te4y&4!QUvj)9l8V(Mfrq8kK8*r>|GK#MH?Oq)fC(HpDliX%-EVL7^g!2 zn*|Wj9u+e$Y^vUyFMi6z(BYa=EW@#sDR#d6l28A(lrv-0GI8*`e_=_{+?Jg$c4YN} zKVYo*!Oy$qnXW0BS}uRT#&g1LlBJh|W8fyazIgpoeBee_ESPfm2(|DkCr+6xdj~t|=hf^n`_` zj0P;R2Tk=4<|+J{MLv|(Lux`c)&@b(!^%;6q4u$`@SVLHFo{UtgmTxQRakIxdq=Sd z`k}^AYNBNUdbw6QYF?afztuxTmzBJ8`2l3r?uYlY4$8r5;w#^5+*XOA?gt(4c9`q% z=i)E&e?9#pdnFs!Do*&KNJ*uABAc*-P(IW77oW(K0Hmz=cYGXA%=8FY!S8TFiA95F z>fvrH7!^1w^_|F5{|OKaTfgC1|G&yO?WXG|Nff}1dHMxd|3K=jZXaMP6rz#RVPDeG z03(aXmL@jbrG4^NZ<;pfRPCk|nd<7)SnC(-jFs?#O0asNd5gB#LBDPoMnIQ!JJ-ie z8r<&#Ru!5GHoCi$L!t&au0z;Wx#pmE5cevtp~P`r0q%bc6o(=`3&F(@U4}H>N$S+GnbK6B)ecu zmOTB(>Paw?VD&R6)VMF7Hiv45HUp69MiV%mo!SfR7^gfAW@2HObdAO%E@s2|vC{A3 z-x?cmq#OG}-=gvOX-?@Cn8=sY21x@W?A?-3x5%3VyqlM=^-8^B4cM)v2@WhCMQyiy$EWbd55oD)wvrRuwY2d`)^ zyAPs4Jil4oM?7yUB2N=Ty6P>77pS2IohAf2m2QN-^&zG`Gku{ zBa`}&^q445GM0%Mi{w{}=1adm*#+s_s0=P^@jz;FcwXpa?fL^JTf0ki&8a|wqi%T3 zjT1RX@)>_n(8TA|}ml0_BYRdPjU7=&r>kbS-)m*@z z=hVh;RchP+d{lVX+;b&zImAaj7y#e$Ywb7)euqXxEw)1C2mI^jw%m;GFkUXt3Z(9mp!Tl<6ZyLG!`TT6;Eq|EShy0&{o`6+7npDLJ5#B%X^$ZB zB8v#Ir@5rfNq=yHi6njo$SOl zivgr(uhQ~DGP=2pE5_}v|5$>rzkC7~w5pzUS}rVZMzHM*eI+^&JG%YW-a3!uvZ%2z zyr@-&!}H0aDZ3wO_~&FYaC~E@Mqvg1^jmQi?7APxzsue)?UHAsqmaQoC z?Cfb`7d{Zt&jlDIg&|3?5g79OApyxi{$ zN1M)F;2ll(4-loYi+-kNk}1f#F)xfO0P=pW4{v8uVPxc0d8kAw4P3`T6MNjN4RbP; z=F~*dvUg=);mr*v4sWg-S-oX?IiL1)96*{-pD#3Sx2UdWyA*qdisvZYTyuf2ym~H_|d+(_9Ho4H?_IIzUPfAxa0>LUdU^%@9BP?XkK4NQO>v1q5DU2By9OdsL z#gY&DmY<4jR)2kq=5twG1;!P2b7NYSWEUnFm)hFZg$FdO)L3jk)?z$NA60e19&>oD zQZ9h-APA~c_i$JrH*HI7gdB`4ICb(7e$k{c*K#l<3)1QsMMy#T+>fvRnUGV4kVQgT z?!=waLUq)3t5(K>eTMag@ZgGU4KdN?{)=FBG z4huIehCn~V&($+~&qyEZ!0Z$k4LrVSwZpXR#V3<2SB!Pbbq+N##l;I5lI{(dDvFa@p_sY0VeOaMzr~V+=Vp&k0`-i|xmN6l zZ)>6Go!-=-gZe1wO=IxgCsG!Rzs~$Sx;^EPcD#Pd(*2fPDOeOBar>x^WuRQ0S_Y>v zme((qq2L9(@=n@G?U%A80f_714>S*jTY5&bf%|AmB8913kBmX6<8-f|EB-R?!On*V zVDDOWug`q|e8vPZ4*LmdB#f2$Kb*Z)R8$Y#^*=*{2nbS=3X%c>(lC@tNi&3WiNw$i z!wg8bG}3}}N;e`QIUt=wNXIY?oiD%juIK81^MBskb8gRCXRq(x`?C=~CdGmhr0TD0 zFsd^-eVZD@TbEx?3=KrK>h1mU7DDdDZ6L8lRe@uxKbDm<#Hr6t7%aZIZSS@q?JW)t zZ@^uW$pZpgp0;2|#6X_`EolCA4j_5jse(PZ`O_(-+gx2r)Fo7z>d5JG&Si}ZlV|tB zPVFK#QOKe3ghAG1{VlnIiOmLzN2gHDK1SaSqfRDawx*m=0gI~VxuaM58I3%t{UqQZ zf z6$@W&RyXPV*fFCs=Yy(8g}q`wi$H~QG5h<2PG@KYC3ZqFy#q`)qP)^3?(Mg!;jPI+ z&J!=H+U)+^5amxgP5tkf&Hsr)e>W;`!gQGQwZCc;i^&F?{Ue!Zu3dWt4I4#$aJSym zY#k*`J5EX;-p8nfR74ArM%-h_b5oI&iTA7E3|Hjmd@FOMEuO&#F; zY@I`KKShMR(vi@s;bCZHq}y`XZpqs&v{^p#wB*dIm#7`qjM?T(O)lxY zpfFLSOV%rK?v;|-{B}(c)*QI+QK8@;#;|lVGPuB%vXNivBb_wQlWJ!t$tT<#!k}ZW zqELiikO>SSHa=>G%iv5j+i;{U@Ya3Z7|0kmS8#Z`5~y6~lbGJPX21x}nVgp=e4SjP z!(JEpuz@f&(LtyKVcc<)^48_}_()Tu@J5@4IaNY_Xr8;vZjfI1$LN&hPiz9R*F|kt z`n>ifk)*77q@hHgv~QaU30b@DgqYv|3H7ABt1+6&AA+R1=6?gFU+a~0O_NKXP_7Ja z?{QV(ZaYFxzTzm(GU=$+se$-%zZRr!#sR7le|pUpB>-02yJNZjM8p^RrC5I$^DW_x zK)gQ=IdlGv?1*G2Rdxe<5qv7UNm~gu;u(4dk{82*tAi3{!*pNvYluF5J40O)a@$E1 zt|bwC+9F9Os`QJqp*c){NG_5vvkF#Xc1QnXPPl8_i8GKgaG4swyHvMTKDc=j!sAdQ ztM!X)BU{5DGr(EqTB_*P`Yc3CQS6jf`ktT|LZIl9($M*@g?h3g=ZbM6^oze|eCL6S zv5a%wJp@qKfb+g2)c0*hXPIh9kar>cn3n6erKI8P5zfM+3R0kT$uKl(%l#d_1dp&L zc>q@Vtr}|K9bZ7*s7EF<>E}j+6LjYDh4dNz*BAJcruECTx#A13tbjKPuR0VA@F6U_ z?10tAa&0QUx)gR(>aj&|Pi4At$*_+uu z=kj3EzApl(U~_aK$KoQG?B}yYS!hJ%I`z!`vd<2FB9FgW(K~LTh9>=D8hqglEdpsh zNRguvsrk3yh2Hg|UVRcgg)K?m=KGZPaUygXI`M~=e@GVjA3g^hcw8Og3_PYj zNw&@|`&+xanc}p_pWvCc4r-s(J@O1|o@In}sx_b4?kOZ;JQ1xwN;?iZRH8pNs(YET zxa5=S-z5ddF=UG=E&z25y&O8@ocR8RE=3OscHMv0P9#2}WS+;YF`gboihgQj-uVJ* z`Ri%WCVzkU{LX&e`f3-N+mY&g{jON>iz;@y2z+bdC}T?FYj$BrexKiNGyYh8Ox);e zn0T+=<~FI^eR~oH?h2u>#G^IMJ{Fl8N9H=AusXb+NQ7ZMb&3NOB^(pq?%+XJ6KY`D zcM>1wB*GCH(M9+N= z$|OF{)~w@n$hW&8c6p{li|a=&R@~oOSH`tFZMqFRTv1`AAg2DZ=#|*fLRv7Z0z>5n zu$Za^M%GE^dZd*T4;AWf(B8O7*Ivtff-^q0!Mgg(2;Cv!R|b0~64TS2sw5-&>nJv6S2~8g@8}*5(`cj9jVI*hqeo@z zE-hWeXs!hxplC-_O*!4RpFXqHW*#f0xjIFYZ^V z^QYm$-wLX-kJ{MTF}=)~0>U*z^=voS+voh2<9{Z`wHMjc7S#M?VyLv3>3dn@f>;&L=QNonY&3V_LR38(TCcQT_%bbA4jhSwX z9T))Cn0VgpWlC2d%T?-0fSP5W58AnuQhc%)kSwBG$2tW2luG%@1t)3T5{)iWr99fL z^_5I7(q8vR;+W=b)lG*BmF`jY=S7w_&NOCEQn^7LblH9jCnkOiR36J{Ai7^$o*p=L zw|{X7M!Fc)kH+GB7~1dxcF)GPjuea*3bd>U+2?u3!kas6$lJ!e#eFz8|5RRU2YD_| zye05ItM}958_J^KuIp@wL}8ONGmSM6R>)xn5b~6nLKVm=of#*WD>|rf7vwo)=I=1t z;_iEM#=5*4&s$o{EEA=mxCfjNu6^s`^8dXH{)KX!6$LPD6d73`L+r{NV8C0z!tG(d zt8RkCcjToB?tJ6$hIr~liutkPunkWkN(X$PlD2qiFF41$TN;-J*RI4jypm6MckcCi zyMeh~E={L*uE7A~FXMjQxJ8aFAXRByrTuokO(7q&pk3=EYWn{{3sO)uNq$sU-jqHf z7eMs8He&VYF~}M_mX;hPG5;msR6DZeodL&t_~_IUsVWI^3D@CjEa{JCoa=E&Li1xb zHS8Wp%&NQP-x{qB!O*l~MiIj9T&iQhA3tlhxCH9SdWiQ@XY(?g|mc|?_KDRePA zin~raGiAc*?ZU!vPJ7DNq#N%j>nAkVX+bfMPapVw8J!NFABk_Oo;f6H2&o*&I+&Ff zY~mG`LX?ywk~TOxU%Tq+dI`Sae465H@1yRpzFCgYN>-K7r7SirQ4ji4o8UP~LHDTY zQ%Hj%4%wm}gX)wC(q5A85I7=L7<;aAXP686{~74 zvQrP%Y8#4N2fp)G&%?`mEF17E#C_NYPs6{EZu!#pfXZ(Efnpi(;vYR%0O8Lu)LI%u zq-mnh4G+scJcIEPvXQ{WeXV`=0O7~E30=5QIAzaMh1MXq|54nH|5N$H>?3ghZ2^tM`< z>lb7uyWM;z>-o#%>5(B&#j^1RK>~iyOxfF|;@*Sof$@sncyDBd85>ey9 zWR_Vvfj?`t>Of-VMy!uc`J(}+b$ftqq=VFsD?{W#eSHL-<{rA6_&@l`8O-}A}2W5~UbDI#3m4{PKEcXe9( zuz_T(@$sZD-Ru3}&XVTOwAXOo&=+FgZAq{1*G*>~qMEuvwXURoL)B)YB9Yg_qT4%8nr)%^y-dacL;zVK{D`HN^=gW#|pM%7L zLhb8{N*nBDE^q4=$Xv8M*5&v8%21}<^ZA_(xGQ(h&HfR*KJi#(OFp*!Z9Q)$m{enf z<*X;H0RLsZ%WWk_endmXujV}RtfnCG&gVlrug-2?Y#bo0s2PTZq#yioM_b8Bm@Om~+ zR_+g8hwzuB`JJJc{`Qe)#Je{B0bj1-$k$B(71;vcP1duE04or{UOwT|&Td1T;jm)N z7r>=@wKg^2Tuh1n_v-J&Xj1b<&#PNc6pDK*9sgpQam7*uWoi*6Hs9RuhG2y&B{ept z(bWT)AMtq$YXm8^_zD3|PHiIYp3a}Q6eMVM?WvQOPtp3^t_UsUZHCp*^gGfSmeu`x!O zZ!E)mnJKF7{MqPa`@TIYM6tZXWXWG>&%x%N(t2Yg@X9sxUy8BCTs9&0q}wz?cfKwT z=_n8oTD|&o-8E3(B03}h?CMrw+dR2OrFRAu;K;nTmGq#m}-w;))n-w+x z=}WPl>3TWq+fQ?6){gR(Wv6E*J4s>cI!%en{v4SS(xn_0hPuPas*A^Na%;8+RtDJt zn>$prvvD3yDnV7Ak@bbl4GrghQFVAk-XH%MvB}*OBOf8t5b6N{E|sZihQL6tju*2>rmfWdIZjv4ctqrcUu)1Iy z*`VVrE8ynAc-|Xd2f_|$&ue&W>3g*V>g#>i8S z?r{-KHcOfNE&Rsw(fvD0H(k1BVR zYXVL>{{jA@qz5nei9%*kjQs&c|9nx*8F5L{x>6I3-`0o+RHN%<7nR61x0ySD0Px75 zMqBs0&}v?bCQlF6;!N-(uJzhyAi($Td$=sN{-4*M&myKNaF5Yvu|G6kKYdSqr!=@c zM~daB7h^2sbOla6lst5r|KMe`J2O8!;x$xDyqd84-XAU|M>kpju@Dj&OwpI-L9qSe z^1~!cmd+7*mlXqrek3O>j6ykP5bm!_SeFU#KC!h_z|uRW8SF{~=`$LW z6h@Z(PZmIZ4qWd=L4XyY0qI=hqYV}SvaG#U_Gw-oNQK?--CCi`I?rO(43Ss5|7~?i zJ{>!}rjP6xxiZq6c?s{ecW`OE$FxlV75%kd2`>YA8DxA?TAtYR2J&QUy(hI?jfMLH zR8^Y-0t3YI<4mc8zBAC>9AqLqw5rth#Ytv8m0`Tt(Qn}CCV7?ZU)yR;$|o9dyM_@! z{PWV{k~JX!g2XxeV-f{Fs1?2nCn{Ng(xC0(DbtEwl6lmOTFYnz*nv%@o@(@o;BhoQ zp0yJAA5yqD*O=U!XvhOpT8q4!>p*MOHwFFXIiOppQ~_1@n5t1H?8jre$(r-4 z;_W;}OCa+q9bx%G5yX&-4KwE>Yk9RF9xz{EB9|_=^|=?n>8E1zV{ksUJ1zkZ{l~2< zMh8o%4%RXN-rUnbeFG($EyTZ5roxucYS zU*>Q`MARuof1s$h@mE~U<|%&J&L0s}+g{k=ANh8C7NKRnY%$w6p;+NiI(~CH?MJ0$e@RCT_tQmXj1>~QYa_?EW&l%PH7247!!G9B z*6_r;;P*FlIZM5LjU4zqSAY-KJK9qXae$8~awHhNT)@Z;_pJiTK4Mm&cfX6tnnW3w5dC&CE z>$*ON{}a>Z3@4&)YTYUCpX5{Fwu1Xj#0Fb8S z$sh#H@4YTV%cQA(8&l`F=TCns;C9sXKRXv0mnFC+U=qq(kDPTI@v!8W+6wMDukpec z4q!3+obVD0ODd+r!zgw&wYBa#sH0^HKR$Uy-ZFd4OWN`@siR5$mNfivY=v#tHp8y7 z(!Kh#_3GdJh*Z`2fSB9)qj!|Q!kX0CEgiK^(MhlC)T2$UE5(anNZ#g&U;c;}6=vu| zjTX;D#ETs0=SwCxR8?=hArw65dp5WPc#X_Mpc4O#kKE2Ea%mR1Ct2mF%wsYUrT}Ag za<^9Sc+ow(rU$B^>bz!$afX!qOFiV0c&+ir1ZkwOdgO{z`@<&P73%52C_t1H@2OsV za5dor%DL%FRwx$1qQyymu6if&nn>8iF<{*`^V)G@ntj-miM%#U`+FvOmj!@vu_R@; zdJ|5|$Ke!>_O>MlqQ!Ln)Ew}3v?4)_F7J>d=##ktFL;4SRCA!T%z|(fgd*bt$y2#k zGAtHXefi9?CADQV?@!zNtP}M0jo)kBXeAo%>`t@)jZ!aZjo`U8+SV>S!vtE6 z9z(45T}WOnwh#FwO1d?qSE*`-@yhIONlMH|sAg-tp2TiqBuw4v#qH=&hSK>5By0s* zeoFRO#(`wKPSHN(M;(mmVfQRN&Mxw5HYMFi?>WVSW%UJU+cLJicQ9VPykl!PR7GD# z(p-@ohy-o~0LJ?&+bsgoD^0$FI@SGArWdWS+KW@Cn@{LR_ZaDdY&H(IjZa(kF3JfJ zz;fBFs@{(U39r+(4r)wP-2M@BZe6Be-fwA$DUErQ^NVgS%(J}g!ZXVz*T#ITZMl0) z@Xg1!yeN&dpPplcNwp<{B9zO%oF1Sp@GmvsgbzEN{Us*n)((vgyO6dWT{0?r|CjsJ zAuCKmFJ?l@NP4@ovNel)L7~#m8@DcFMwydPJmIIRZbf06c$(bOZh*(YwhW!?oDErkfiLlBd4v^Rim^OkXvHxr)agE{h z&YE_vQM10K*xNcWey`iwsCMN{XuBm4QUDH{slw@RR<|c_fpE=S4VZSbhtwph{(dnj z(d9J*3%Zt69~2fVRJ}k9kc~#&fPOXWc1XX|p?Grqtph9zVt=NPLBlksZjAk{dY-5w zRcXQJ_MmOyA4#8S`eI((M=y%^AK2937pm-Ay|xBiQyFPaSbEPAfr%OJOCJ=Yd>0G; zQ+~=_M%xSv&6PtIk3^P`d+719{H(PbY-UW22z>aS;QV1S#IC6fR`tJG2L8X%!wZqm zf$FlGQ>xRh+6(LTQjANFtLw&nCknsORd%mb5N(UdPJ?qBi1PYE8#3BTS2k2fs6H=@ zv}%Z|MB2P$UcvjRpxAm@PL!$q(Gk=jgQ?NXHrv!FQBfYs^ET3SctrNPB+IY-CyuI2 zd};pp=q`GpIZp0*)QFspZ~k4)0O1D>+?`v8t_iF;u3#e9m$;o8U}_U*%v8*I-LD*x zUTpW*PgV@v)|(_jQgf`6WE2JQz~$mZ<@xgoyif0zRAqWpM>JNy=g5a}m#A$$zU2_) zbnC~1M$J#F9t@P4{%G;Sm5Cj3y5dYi&lZm;6!nkKIab?T7&sel%Q?$BgzY7Kx1(rL zgZHbF`JGM77WcwRl_;#UKG1jRq74Q~2*gVI@tbmUR5ykC^h|2a^9UE~hk!xT^sI$Is3pbc3Y=cS*GxIRYI(w`lZOKT!2xT1{dCWG&6AS= z=1exP^L3i5Ci$7h8Ob~yjne6gFUe7G4)OTf>*B3G-{;F zUSXN=0Vhq!XAS{IL_(#1Zf^b=OBS{__3Jy3di+XUOOGJ9Y5VfRK5R@SXfKsE&JXVD zq*-}N<-Slva@$AdAVOH|_p4Jc@Sdc4)p(c7fA8Xn?lsxH9|ecoKN@mo=L|F5Ef7X$s(G6Js@1)mrg?D=&SWd!4I!G*D!*B;Rm<9*X15c zHYNg)T&Ov~g`VEc_4kTauS3?&;1Ec!07P=_+_2pVUt^(5M0&-|ElI@Y9?xt!gv*Ui zV_8n-`+0K*`)N_>W>9)}fFPS3!154qa$wdUF}eWXkXf8`ia+x(3mZ`UJGfht3Wv&+ zoG9V1pYZ}L=@7Bnlq-S35=W=}*_QILV&HVnnYySM9}`dWM2Z03??>g(s*7^vu7ybj zvU~B#F3lHgXPNwX9gm2`xmjrj+eR)*p&>u&uQ@$GuZx?n8q4Ix)J|EDX!wrxeAW2J z@G4uVgQ9D{tS?k?Ums6$nM?P8#ovZ)P|Q9>Nh0>BaXcH*=WU3ya)2G#@g>r40$K5! zQf41(uw~^(Th;d~$nJTP={{>W(Pc-R_Ql=uE<22JseE@q3n%?7qC;mtF6wY@E;cuigXjVGmK zL42n4W&r`sUhSkda*IQ@!tXqH^0h$|Ux<#fE#v&^DYQLz`lWW6t$atNW`c7xzZ}}U zlKQ0vX}f2>DZOlAj;+Azo$qgy~|Y!%vSLt@JTP6B86Z5 z?MSvDxsLAJd4je1CGX^hKXPrNr`=%Q^Q{yWO_8N!mChWZ3c8j*b{OF-VcGCyF9mQb zag=e*>RvZ~rgGRO%XB`z#nMOQFsVeJ_OIDXbzvG^0_uAR;vucu3)tMCz1oo6P-f}Z9XHBko70)~?a$E%J(3|nH5iEuB;q<6qQ-P1DzZXG1 z2Pz2sVI`E1y1AXTitBSyXcIAKUi;u%v38$2Y@mQn1m1kiu+QK>l=`;+6CybU+nE_x zWF|Liet!8< zd5;wyLL>(DkwG4$iT;`;NE7RwcnNl^X(t4h);b+!hR=@PURzeq`O+Ex2e)U?plb%7C8E%WXz1l#oBLhe z=iikq#@S6{|J8#25~8ag8OCaUvf*G8nZf41!UNrNxed4-+8)OiQ4_Rz;j;Sa(qrgd zQv?onh9)ywgU>v@H#Ez04XD{8J%wWx^9z~~jt1mRq z5S}e`tN-3QsxcU(>mgxtk;-4x^uPAR3itA1lgzuT($2}tBv!aa7G)VH-TJb2`KfyZ-zAnaF#LUO;nNq;PuMp1K2B5o`Ltv`rtM$Cf@m%h@yb zF5lIIl2p1feJnHO61xnpp8OWx(&g_IF%Sxz72DxQ{AyS5xTT9=DKW_-JNVdjnq!X* zblHmAIjM9l_+h2EfBJ*(7QJTb-(F&MCun-R*Gqc$^}b1L>uFB~+pO;Dg`%^t(${+< zdjo~ObM_*CF+Mk*-AozWPy0`m{!9w09oPZ;-P-*(H~-mN%6lx+LBUG8BbbNdX6rJ= z$tSgMvbPSMnZ*!jf>TFZz{E*1iex`b-zh_X=VPdF0snZW*Ft~g(1h=h*n7a{K%dWu z5jgSOYj0=1U?m6O4AJ#jMV6KSQzj6%5kKN z!Avasy%kSKkS;pv>V7+Qg>AY@phU{EGD6a?VneRVhOlS3no0w&x)epK!THK$vR$2RSa?;%j;-lwB2O`)Hh`a#C8e`e%(7Y% zq`4vtss|`O$a_8b@&gV!LpVKO%aO~HdMG;o8~7++Dz9`@%2Hnc^MvZhDV`7rIELedOM4IRQ`j0eYgwr+m;!d~?Y&c+mD8aQ-g5!xeif z#>rgaX^%ys{txM2z(d-|IWXlxohF@ft3!5Y5^?-q(#k+}4w?Ns>m}c$0E^ZT0~{S4 zIfv4iJ_NCbO}$%n?q^u>Uu~yf*w2Fv@4k}GdBQf9|0 zRt1fZ3&(xxXAk~c9}~Z!60cKtN~AGH^(WZml1;W5W22)O=?L|xBm zP!;gWiwTslKNCDzC;n~26pLUF`F-Sb#RqqJ{sU*vT823`NN-6CdFloS0H^jQcGAv^ z<&Q^pX{N)JafjdZ4Xw}PrUGPC7HGI|5Mci|bMVeG@o$sf84p8PMZ9&lRW}d50P^m@ zl>4pm9F()GFL8ASagMX!<-%vDmk5`{J|(iIg�>9kG0_FbX)EM@>`baFp26RtY0Hye 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%0A9NRjsV9-`d3i#r(=1KlEnAJ<@my?5HF; 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

      bXqJ0@YY&V(*-`jxpWPX%yT}!PrD3lg-_v;fLMD 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 z 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 literal 0 HcmV?d00001 From d072fc5a942a059ee1f505471b3384116e49bce5 Mon Sep 17 00:00:00 2001 From: jeff <113397187+cyberhorsey@users.noreply.github.com> Date: Tue, 3 Oct 2023 19:11:10 -0700 Subject: [PATCH 41/87] feat(eventindexer): Contestable zkrollup eventindexer (#14892) Co-authored-by: Daniel Wang <99078276+dantaik@users.noreply.github.com> --- packages/eventindexer/TaikoL1.json | 1013 +++--- .../eventindexer/contracts/taikol1/TaikoL1.go | 2347 +++++++++----- packages/eventindexer/event.go | 15 +- packages/eventindexer/generator/generator.go | 45 +- .../http/get_unique_provers_test.go | 2 +- .../eventindexer/http/user_proved_block.go | 2 +- packages/eventindexer/indexer/filter.go | 22 +- .../indexer/save_block_proposed_event.go | 6 +- .../save_transition_contested_event.go | 89 + ...ent.go => save_transition_proved_event.go} | 26 +- packages/eventindexer/indexer/subscribe.go | 91 +- .../1666650599_create_events_table.sql | 4 +- packages/eventindexer/prometheus.go | 12 +- packages/eventindexer/repo/event.go | 2 +- packages/eventindexer/repo/event_test.go | 4 +- packages/eventindexer/tasks/tasks.go | 52 +- packages/relayer/ERC1155Vault.json | 815 +++++ packages/relayer/ERC20Vault.json | 684 ++++ packages/relayer/ERC721Vault.json | 766 +++++ packages/relayer/ICrossChainSync.json | 65 + packages/relayer/TaikoL1.json | 1988 ++++++++++++ packages/relayer/bindings/taikol1/TaikoL1.go | 2772 ++++++++++++++--- packages/relayer/bindings/taikol2/TaikoL2.go | 87 +- 23 files changed, 9219 insertions(+), 1690 deletions(-) create mode 100644 packages/eventindexer/indexer/save_transition_contested_event.go rename packages/eventindexer/indexer/{save_block_proven_event.go => save_transition_proved_event.go} (83%) create mode 100644 packages/relayer/ERC1155Vault.json create mode 100644 packages/relayer/ERC20Vault.json create mode 100644 packages/relayer/ERC721Vault.json create mode 100644 packages/relayer/ICrossChainSync.json create mode 100644 packages/relayer/TaikoL1.json diff --git a/packages/eventindexer/TaikoL1.json b/packages/eventindexer/TaikoL1.json index bce8382bf1..da3db6acd0 100644 --- a/packages/eventindexer/TaikoL1.json +++ b/packages/eventindexer/TaikoL1.json @@ -1,42 +1,92 @@ [ { "inputs": [], - "name": "L1_ALREADY_PROVEN", + "name": "L1_ALREADY_CONTESTED", "type": "error" }, { "inputs": [], - "name": "L1_ALREADY_PROVEN", + "name": "L1_ALREADY_CONTESTED", "type": "error" }, { "inputs": [], - "name": "L1_BLOCK_ID_MISMATCH", + "name": "L1_ALREADY_PROVED", "type": "error" }, { "inputs": [], - "name": "L1_BLOCK_ID_MISMATCH", + "name": "L1_ALREADY_PROVED", "type": "error" }, { "inputs": [], - "name": "L1_BLOCK_ID_MISMATCH", + "name": "L1_ASSIGNED_PROVER_NOT_ALLOWED", "type": "error" }, { "inputs": [], - "name": "L1_EVIDENCE_MISMATCH", + "name": "L1_ASSIGNED_PROVER_NOT_ALLOWED", "type": "error" }, { "inputs": [], - "name": "L1_EVIDENCE_MISMATCH", + "name": "L1_ASSIGNMENT_EXPIRED", "type": "error" }, { "inputs": [], - "name": "L1_INSUFFICIENT_TOKEN", + "name": "L1_ASSIGNMENT_EXPIRED", + "type": "error" + }, + { + "inputs": [], + "name": "L1_ASSIGNMENT_INSUFFICIENT_FEE", + "type": "error" + }, + { + "inputs": [], + "name": "L1_ASSIGNMENT_INSUFFICIENT_FEE", + "type": "error" + }, + { + "inputs": [], + "name": "L1_ASSIGNMENT_INVALID_PARAMS", + "type": "error" + }, + { + "inputs": [], + "name": "L1_ASSIGNMENT_INVALID_PARAMS", + "type": "error" + }, + { + "inputs": [], + "name": "L1_ASSIGNMENT_INVALID_SIG", + "type": "error" + }, + { + "inputs": [], + "name": "L1_ASSIGNMENT_INVALID_SIG", + "type": "error" + }, + { + "inputs": [], + "name": "L1_BLOCK_MISMATCH", + "type": "error" + }, + { + "inputs": [], + "name": "L1_BLOCK_MISMATCH", + "type": "error" + }, + { + "inputs": [], + "name": "L1_BLOCK_MISMATCH", + "type": "error" + }, + { + "inputs": [], + "name": "L1_BLOCK_MISMATCH", "type": "error" }, { @@ -46,12 +96,12 @@ }, { "inputs": [], - "name": "L1_INVALID_ASSIGNMENT", + "name": "L1_INVALID_ADDRESS", "type": "error" }, { "inputs": [], - "name": "L1_INVALID_ASSIGNMENT", + "name": "L1_INVALID_ADDRESS", "type": "error" }, { @@ -106,147 +156,147 @@ }, { "inputs": [], - "name": "L1_INVALID_METADATA", + "name": "L1_INVALID_PARAM", "type": "error" }, { "inputs": [], - "name": "L1_INVALID_ORACLE_PROVER", + "name": "L1_INVALID_PROOF", "type": "error" }, { "inputs": [], - "name": "L1_INVALID_ORACLE_PROVER", + "name": "L1_INVALID_PROPOSER", "type": "error" }, { "inputs": [], - "name": "L1_INVALID_PARAM", + "name": "L1_INVALID_PROVER", "type": "error" }, { "inputs": [], - "name": "L1_INVALID_PROOF", + "name": "L1_INVALID_PROVER_SIG", "type": "error" }, { "inputs": [], - "name": "L1_INVALID_PROPOSER", + "name": "L1_INVALID_TIER", "type": "error" }, { "inputs": [], - "name": "L1_INVALID_PROPOSER", + "name": "L1_INVALID_TIER", "type": "error" }, { "inputs": [], - "name": "L1_INVALID_PROVER", + "name": "L1_NOT_ASSIGNED_PROVER", "type": "error" }, { "inputs": [], - "name": "L1_INVALID_PROVER", + "name": "L1_NOT_ASSIGNED_PROVER", "type": "error" }, { "inputs": [], - "name": "L1_INVALID_PROVER_SIG", + "name": "L1_TIER_NOT_FOUND", "type": "error" }, { "inputs": [], - "name": "L1_INVALID_PROVER_SIG", + "name": "L1_TIER_NOT_FOUND", "type": "error" }, { "inputs": [], - "name": "L1_NOT_PROVEABLE", + "name": "L1_TOO_MANY_BLOCKS", "type": "error" }, { "inputs": [], - "name": "L1_NOT_PROVEABLE", + "name": "L1_TOO_MANY_BLOCKS", "type": "error" }, { "inputs": [], - "name": "L1_SAME_PROOF", + "name": "L1_TRANSITION_ID_ZERO", "type": "error" }, { "inputs": [], - "name": "L1_SAME_PROOF", + "name": "L1_TRANSITION_ID_ZERO", "type": "error" }, { "inputs": [], - "name": "L1_TOO_MANY_BLOCKS", + "name": "L1_TRANSITION_NOT_FOUND", "type": "error" }, { "inputs": [], - "name": "L1_TOO_MANY_BLOCKS", + "name": "L1_TRANSITION_NOT_FOUND", "type": "error" }, { "inputs": [], - "name": "L1_TRANSITION_NOT_FOUND", + "name": "L1_TXLIST_INVALID_RANGE", "type": "error" }, { "inputs": [], - "name": "L1_TRANSITION_NOT_FOUND", + "name": "L1_TXLIST_MISMATCH", "type": "error" }, { "inputs": [], - "name": "L1_TX_LIST", + "name": "L1_TXLIST_MISMATCH", "type": "error" }, { "inputs": [], - "name": "L1_TX_LIST", + "name": "L1_TXLIST_NOT_FOUND", "type": "error" }, { "inputs": [], - "name": "L1_TX_LIST_HASH", + "name": "L1_TXLIST_TOO_LARGE", "type": "error" }, { "inputs": [], - "name": "L1_TX_LIST_HASH", + "name": "L1_TXLIST_TOO_LARGE", "type": "error" }, { "inputs": [], - "name": "L1_TX_LIST_NOT_EXIST", + "name": "L1_UNAUTHORIZED", "type": "error" }, { "inputs": [], - "name": "L1_TX_LIST_NOT_EXIST", + "name": "L1_UNAUTHORIZED", "type": "error" }, { "inputs": [], - "name": "L1_TX_LIST_RANGE", + "name": "L1_UNEXPECTED_TRANSITION_ID", "type": "error" }, { "inputs": [], - "name": "L1_TX_LIST_RANGE", + "name": "L1_UNEXPECTED_TRANSITION_ID", "type": "error" }, { "inputs": [], - "name": "L1_UNEXPECTED_TRANSITION_ID", + "name": "L1_UNEXPECTED_TRANSITION_TIER", "type": "error" }, { "inputs": [], - "name": "L1_UNEXPECTED_TRANSITION_ID", + "name": "L1_UNEXPECTED_TRANSITION_TIER", "type": "error" }, { @@ -300,32 +350,35 @@ { "indexed": true, "internalType": "address", - "name": "prover", + "name": "assignedProver", "type": "address" }, + { + "indexed": false, + "internalType": "uint96", + "name": "livenessBond", + "type": "uint96" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "proverFee", + "type": "uint256" + }, { "indexed": false, "internalType": "uint256", "name": "reward", "type": "uint256" }, + { + "indexed": false, + "internalType": "uint16", + "name": "minTier", + "type": "uint16" + }, { "components": [ - { - "internalType": "uint64", - "name": "id", - "type": "uint64" - }, - { - "internalType": "uint64", - "name": "timestamp", - "type": "uint64" - }, - { - "internalType": "uint64", - "name": "l1Height", - "type": "uint64" - }, { "internalType": "bytes32", "name": "l1Hash", @@ -333,7 +386,7 @@ }, { "internalType": "bytes32", - "name": "mixHash", + "name": "difficulty", "type": "bytes32" }, { @@ -342,14 +395,24 @@ "type": "bytes32" }, { - "internalType": "uint24", - "name": "txListByteStart", - "type": "uint24" + "internalType": "bytes32", + "name": "extraData", + "type": "bytes32" }, { - "internalType": "uint24", - "name": "txListByteEnd", - "type": "uint24" + "internalType": "uint64", + "name": "id", + "type": "uint64" + }, + { + "internalType": "uint64", + "name": "timestamp", + "type": "uint64" + }, + { + "internalType": "uint64", + "name": "l1Height", + "type": "uint64" }, { "internalType": "uint32", @@ -358,7 +421,7 @@ }, { "internalType": "address", - "name": "proposer", + "name": "coinbase", "type": "address" }, { @@ -405,32 +468,35 @@ { "indexed": true, "internalType": "address", - "name": "prover", + "name": "assignedProver", "type": "address" }, + { + "indexed": false, + "internalType": "uint96", + "name": "livenessBond", + "type": "uint96" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "proverFee", + "type": "uint256" + }, { "indexed": false, "internalType": "uint256", "name": "reward", "type": "uint256" }, + { + "indexed": false, + "internalType": "uint16", + "name": "minTier", + "type": "uint16" + }, { "components": [ - { - "internalType": "uint64", - "name": "id", - "type": "uint64" - }, - { - "internalType": "uint64", - "name": "timestamp", - "type": "uint64" - }, - { - "internalType": "uint64", - "name": "l1Height", - "type": "uint64" - }, { "internalType": "bytes32", "name": "l1Hash", @@ -438,7 +504,7 @@ }, { "internalType": "bytes32", - "name": "mixHash", + "name": "difficulty", "type": "bytes32" }, { @@ -447,14 +513,24 @@ "type": "bytes32" }, { - "internalType": "uint24", - "name": "txListByteStart", - "type": "uint24" + "internalType": "bytes32", + "name": "extraData", + "type": "bytes32" }, { - "internalType": "uint24", - "name": "txListByteEnd", - "type": "uint24" + "internalType": "uint64", + "name": "id", + "type": "uint64" + }, + { + "internalType": "uint64", + "name": "timestamp", + "type": "uint64" + }, + { + "internalType": "uint64", + "name": "l1Height", + "type": "uint64" }, { "internalType": "uint32", @@ -463,7 +539,7 @@ }, { "internalType": "address", - "name": "proposer", + "name": "coinbase", "type": "address" }, { @@ -508,47 +584,16 @@ "type": "uint256" }, { - "indexed": false, - "internalType": "bytes32", - "name": "parentHash", - "type": "bytes32" - }, - { - "indexed": false, - "internalType": "bytes32", - "name": "blockHash", - "type": "bytes32" - }, - { - "indexed": false, - "internalType": "bytes32", - "name": "signalRoot", - "type": "bytes32" + "indexed": true, + "internalType": "address", + "name": "assignedProver", + "type": "address" }, { - "indexed": false, + "indexed": true, "internalType": "address", "name": "prover", "type": "address" - } - ], - "name": "BlockProven", - "type": "event" - }, - { - "anonymous": false, - "inputs": [ - { - "indexed": true, - "internalType": "uint256", - "name": "blockId", - "type": "uint256" - }, - { - "indexed": false, - "internalType": "bytes32", - "name": "parentHash", - "type": "bytes32" }, { "indexed": false, @@ -561,15 +606,9 @@ "internalType": "bytes32", "name": "signalRoot", "type": "bytes32" - }, - { - "indexed": false, - "internalType": "address", - "name": "prover", - "type": "address" } ], - "name": "BlockProven", + "name": "BlockVerified", "type": "event" }, { @@ -581,6 +620,12 @@ "name": "blockId", "type": "uint256" }, + { + "indexed": true, + "internalType": "address", + "name": "assignedProver", + "type": "address" + }, { "indexed": true, "internalType": "address", @@ -592,6 +637,12 @@ "internalType": "bytes32", "name": "blockHash", "type": "bytes32" + }, + { + "indexed": false, + "internalType": "bytes32", + "name": "signalRoot", + "type": "bytes32" } ], "name": "BlockVerified", @@ -602,24 +653,24 @@ "inputs": [ { "indexed": true, - "internalType": "uint256", - "name": "blockId", - "type": "uint256" + "internalType": "uint64", + "name": "srcHeight", + "type": "uint64" }, { - "indexed": true, - "internalType": "address", - "name": "prover", - "type": "address" + "indexed": false, + "internalType": "bytes32", + "name": "blockHash", + "type": "bytes32" }, { "indexed": false, "internalType": "bytes32", - "name": "blockHash", + "name": "signalRoot", "type": "bytes32" } ], - "name": "BlockVerified", + "name": "CrossChainSynced", "type": "event" }, { @@ -627,49 +678,97 @@ "inputs": [ { "indexed": true, - "internalType": "address", - "name": "from", - "type": "address" + "internalType": "uint64", + "name": "srcHeight", + "type": "uint64" }, { "indexed": false, - "internalType": "uint64", - "name": "blockId", - "type": "uint64" + "internalType": "bytes32", + "name": "blockHash", + "type": "bytes32" }, { "indexed": false, - "internalType": "uint256", - "name": "bond", - "type": "uint256" + "internalType": "bytes32", + "name": "signalRoot", + "type": "bytes32" } ], - "name": "BondReceived", + "name": "CrossChainSynced", "type": "event" }, { "anonymous": false, "inputs": [ { - "indexed": true, - "internalType": "address", - "name": "from", - "type": "address" - }, + "components": [ + { + "internalType": "address", + "name": "recipient", + "type": "address" + }, + { + "internalType": "uint96", + "name": "amount", + "type": "uint96" + }, + { + "internalType": "uint64", + "name": "id", + "type": "uint64" + } + ], + "indexed": false, + "internalType": "struct TaikoData.EthDeposit", + "name": "deposit", + "type": "tuple" + } + ], + "name": "EthDeposited", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ { + "components": [ + { + "internalType": "address", + "name": "recipient", + "type": "address" + }, + { + "internalType": "uint96", + "name": "amount", + "type": "uint96" + }, + { + "internalType": "uint64", + "name": "id", + "type": "uint64" + } + ], "indexed": false, - "internalType": "uint64", - "name": "blockId", - "type": "uint64" - }, + "internalType": "struct TaikoData.EthDeposit", + "name": "deposit", + "type": "tuple" + } + ], + "name": "EthDeposited", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ { "indexed": false, - "internalType": "uint256", - "name": "bond", - "type": "uint256" + "internalType": "uint8", + "name": "version", + "type": "uint8" } ], - "name": "BondReceived", + "name": "Initialized", "type": "event" }, { @@ -678,98 +777,183 @@ { "indexed": true, "internalType": "address", - "name": "to", + "name": "previousOwner", "type": "address" }, + { + "indexed": true, + "internalType": "address", + "name": "newOwner", + "type": "address" + } + ], + "name": "OwnershipTransferred", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ { "indexed": false, - "internalType": "uint64", - "name": "blockId", - "type": "uint64" + "internalType": "uint256", + "name": "amount", + "type": "uint256" }, + { + "indexed": false, + "internalType": "bool", + "name": "minted", + "type": "bool" + } + ], + "name": "TokenCredited", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ { "indexed": false, "internalType": "uint256", - "name": "bond", + "name": "amount", "type": "uint256" + }, + { + "indexed": false, + "internalType": "bool", + "name": "minted", + "type": "bool" } ], - "name": "BondReturned", + "name": "TokenCredited", "type": "event" }, { "anonymous": false, "inputs": [ { - "indexed": true, - "internalType": "address", - "name": "to", - "type": "address" + "indexed": false, + "internalType": "uint256", + "name": "amount", + "type": "uint256" }, { "indexed": false, - "internalType": "uint64", - "name": "blockId", - "type": "uint64" + "internalType": "bool", + "name": "fromLocalBalance", + "type": "bool" + } + ], + "name": "TokenDebited", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "uint256", + "name": "amount", + "type": "uint256" }, + { + "indexed": false, + "internalType": "bool", + "name": "fromLocalBalance", + "type": "bool" + } + ], + "name": "TokenDebited", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ { "indexed": false, "internalType": "uint256", - "name": "bond", + "name": "amount", "type": "uint256" } ], - "name": "BondReturned", + "name": "TokenDeposited", "type": "event" }, { "anonymous": false, "inputs": [ { - "indexed": true, - "internalType": "address", - "name": "to", - "type": "address" - }, + "indexed": false, + "internalType": "uint256", + "name": "amount", + "type": "uint256" + } + ], + "name": "TokenDeposited", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ { "indexed": false, - "internalType": "uint64", - "name": "blockId", - "type": "uint64" - }, + "internalType": "uint256", + "name": "amount", + "type": "uint256" + } + ], + "name": "TokenWithdrawn", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ { "indexed": false, "internalType": "uint256", - "name": "bond", + "name": "amount", "type": "uint256" } ], - "name": "BondRewarded", + "name": "TokenWithdrawn", "type": "event" }, { "anonymous": false, "inputs": [ { - "indexed": true, + "indexed": false, "internalType": "address", "name": "to", "type": "address" }, { "indexed": false, - "internalType": "uint64", - "name": "blockId", - "type": "uint64" + "internalType": "uint256", + "name": "amount", + "type": "uint256" + } + ], + "name": "TokenWithdrawnByOwner", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "address", + "name": "to", + "type": "address" }, { "indexed": false, "internalType": "uint256", - "name": "bond", + "name": "amount", "type": "uint256" } ], - "name": "BondRewarded", + "name": "TokenWithdrawnByOwner", "type": "event" }, { @@ -777,9 +961,15 @@ "inputs": [ { "indexed": true, - "internalType": "uint64", - "name": "srcHeight", - "type": "uint64" + "internalType": "uint256", + "name": "blockId", + "type": "uint256" + }, + { + "indexed": false, + "internalType": "bytes32", + "name": "parentHash", + "type": "bytes32" }, { "indexed": false, @@ -792,9 +982,27 @@ "internalType": "bytes32", "name": "signalRoot", "type": "bytes32" + }, + { + "indexed": false, + "internalType": "address", + "name": "contester", + "type": "address" + }, + { + "indexed": false, + "internalType": "uint96", + "name": "contestBond", + "type": "uint96" + }, + { + "indexed": false, + "internalType": "uint16", + "name": "tier", + "type": "uint16" } ], - "name": "CrossChainSynced", + "name": "TransitionContested", "type": "event" }, { @@ -802,9 +1010,15 @@ "inputs": [ { "indexed": true, - "internalType": "uint64", - "name": "srcHeight", - "type": "uint64" + "internalType": "uint256", + "name": "blockId", + "type": "uint256" + }, + { + "indexed": false, + "internalType": "bytes32", + "name": "parentHash", + "type": "bytes32" }, { "indexed": false, @@ -817,82 +1031,76 @@ "internalType": "bytes32", "name": "signalRoot", "type": "bytes32" - } - ], - "name": "CrossChainSynced", - "type": "event" - }, - { - "anonymous": false, - "inputs": [ + }, { - "components": [ - { - "internalType": "address", - "name": "recipient", - "type": "address" - }, - { - "internalType": "uint96", - "name": "amount", - "type": "uint96" - }, - { - "internalType": "uint64", - "name": "id", - "type": "uint64" - } - ], "indexed": false, - "internalType": "struct TaikoData.EthDeposit", - "name": "deposit", - "type": "tuple" + "internalType": "address", + "name": "contester", + "type": "address" + }, + { + "indexed": false, + "internalType": "uint96", + "name": "contestBond", + "type": "uint96" + }, + { + "indexed": false, + "internalType": "uint16", + "name": "tier", + "type": "uint16" } ], - "name": "EthDeposited", + "name": "TransitionContested", "type": "event" }, { "anonymous": false, "inputs": [ { - "components": [ - { - "internalType": "address", - "name": "recipient", - "type": "address" - }, - { - "internalType": "uint96", - "name": "amount", - "type": "uint96" - }, - { - "internalType": "uint64", - "name": "id", - "type": "uint64" - } - ], + "indexed": true, + "internalType": "uint256", + "name": "blockId", + "type": "uint256" + }, + { + "indexed": false, + "internalType": "bytes32", + "name": "parentHash", + "type": "bytes32" + }, + { + "indexed": false, + "internalType": "bytes32", + "name": "blockHash", + "type": "bytes32" + }, + { + "indexed": false, + "internalType": "bytes32", + "name": "signalRoot", + "type": "bytes32" + }, + { + "indexed": false, + "internalType": "address", + "name": "prover", + "type": "address" + }, + { "indexed": false, - "internalType": "struct TaikoData.EthDeposit", - "name": "deposit", - "type": "tuple" - } - ], - "name": "EthDeposited", - "type": "event" - }, - { - "anonymous": false, - "inputs": [ + "internalType": "uint96", + "name": "validityBond", + "type": "uint96" + }, { "indexed": false, - "internalType": "uint8", - "name": "version", - "type": "uint8" + "internalType": "uint16", + "name": "tier", + "type": "uint16" } ], - "name": "Initialized", + "name": "TransitionProved", "type": "event" }, { @@ -900,18 +1108,48 @@ "inputs": [ { "indexed": true, - "internalType": "address", - "name": "previousOwner", - "type": "address" + "internalType": "uint256", + "name": "blockId", + "type": "uint256" }, { - "indexed": true, + "indexed": false, + "internalType": "bytes32", + "name": "parentHash", + "type": "bytes32" + }, + { + "indexed": false, + "internalType": "bytes32", + "name": "blockHash", + "type": "bytes32" + }, + { + "indexed": false, + "internalType": "bytes32", + "name": "signalRoot", + "type": "bytes32" + }, + { + "indexed": false, "internalType": "address", - "name": "newOwner", + "name": "prover", "type": "address" + }, + { + "indexed": false, + "internalType": "uint96", + "name": "validityBond", + "type": "uint96" + }, + { + "indexed": false, + "internalType": "uint16", + "name": "tier", + "type": "uint16" } ], - "name": "OwnershipTransferred", + "name": "TransitionProved", "type": "event" }, { @@ -991,12 +1229,12 @@ }, { "internalType": "address", - "name": "prover", + "name": "assignedProver", "type": "address" }, { "internalType": "uint96", - "name": "validityBond", + "name": "livenessBond", "type": "uint96" }, { @@ -1019,6 +1257,11 @@ "name": "verifiedTransitionId", "type": "uint32" }, + { + "internalType": "uint16", + "name": "minTier", + "type": "uint16" + }, { "internalType": "bytes32[7]", "name": "__reserved", @@ -1079,11 +1322,6 @@ "name": "blockMaxTxListBytes", "type": "uint24" }, - { - "internalType": "uint256", - "name": "blockTxListExpiry", - "type": "uint256" - }, { "internalType": "uint256", "name": "proposerRewardPerSecond", @@ -1094,31 +1332,11 @@ "name": "proposerRewardMax", "type": "uint256" }, - { - "internalType": "uint256", - "name": "proofRegularCooldown", - "type": "uint256" - }, - { - "internalType": "uint256", - "name": "proofOracleCooldown", - "type": "uint256" - }, - { - "internalType": "uint16", - "name": "proofWindow", - "type": "uint16" - }, { "internalType": "uint96", - "name": "validityBond", + "name": "livenessBond", "type": "uint96" }, - { - "internalType": "bool", - "name": "skipProverAssignmentVerificaiton", - "type": "bool" - }, { "internalType": "uint256", "name": "ethDepositRingBufferSize", @@ -1201,6 +1419,25 @@ "stateMutability": "view", "type": "function" }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "rand", + "type": "uint256" + } + ], + "name": "getMinTier", + "outputs": [ + { + "internalType": "uint16", + "name": "", + "type": "uint16" + } + ], + "stateMutability": "view", + "type": "function" + }, { "inputs": [], "name": "getStateVariables", @@ -1219,22 +1456,22 @@ }, { "internalType": "uint64", - "name": "numBlocks", + "name": "nextEthDepositToProcess", "type": "uint64" }, { "internalType": "uint64", - "name": "lastVerifiedBlockId", + "name": "numEthDeposits", "type": "uint64" }, { "internalType": "uint64", - "name": "nextEthDepositToProcess", + "name": "numBlocks", "type": "uint64" }, { "internalType": "uint64", - "name": "numEthDeposits", + "name": "lastVerifiedBlockId", "type": "uint64" } ], @@ -1250,7 +1487,7 @@ "inputs": [ { "internalType": "address", - "name": "addr", + "name": "user", "type": "address" } ], @@ -1265,6 +1502,65 @@ "stateMutability": "view", "type": "function" }, + { + "inputs": [ + { + "internalType": "uint16", + "name": "tierId", + "type": "uint16" + } + ], + "name": "getTier", + "outputs": [ + { + "components": [ + { + "internalType": "bytes32", + "name": "verifierName", + "type": "bytes32" + }, + { + "internalType": "uint96", + "name": "validityBond", + "type": "uint96" + }, + { + "internalType": "uint96", + "name": "contestBond", + "type": "uint96" + }, + { + "internalType": "uint24", + "name": "cooldownWindow", + "type": "uint24" + }, + { + "internalType": "uint16", + "name": "provingWindow", + "type": "uint16" + } + ], + "internalType": "struct ITierProvider.Tier", + "name": "", + "type": "tuple" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "getTierIds", + "outputs": [ + { + "internalType": "uint16[]", + "name": "", + "type": "uint16[]" + } + ], + "stateMutability": "view", + "type": "function" + }, { "inputs": [ { @@ -1302,15 +1598,35 @@ "name": "prover", "type": "address" }, + { + "internalType": "uint96", + "name": "validityBond", + "type": "uint96" + }, + { + "internalType": "address", + "name": "contester", + "type": "address" + }, + { + "internalType": "uint96", + "name": "contestBond", + "type": "uint96" + }, { "internalType": "uint64", - "name": "provenAt", + "name": "timestamp", "type": "uint64" }, { - "internalType": "bytes32[6]", + "internalType": "uint16", + "name": "tier", + "type": "uint16" + }, + { + "internalType": "bytes32[4]", "name": "__reserved", - "type": "bytes32[6]" + "type": "bytes32[4]" } ], "internalType": "struct TaikoData.Transition", @@ -1321,25 +1637,6 @@ "stateMutability": "view", "type": "function" }, - { - "inputs": [ - { - "internalType": "uint16", - "name": "id", - "type": "uint16" - } - ], - "name": "getVerifierName", - "outputs": [ - { - "internalType": "bytes32", - "name": "", - "type": "bytes32" - } - ], - "stateMutability": "pure", - "type": "function" - }, { "inputs": [ { @@ -1374,9 +1671,32 @@ { "inputs": [ { - "internalType": "bytes", - "name": "input", - "type": "bytes" + "internalType": "address", + "name": "to", + "type": "address" + }, + { + "internalType": "uint256", + "name": "amount", + "type": "uint256" + } + ], + "name": "ownerWithdrawTaikoToken", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "bytes32", + "name": "txListHash", + "type": "bytes32" + }, + { + "internalType": "bytes32", + "name": "extraData", + "type": "bytes32" }, { "internalType": "bytes", @@ -1393,21 +1713,6 @@ "outputs": [ { "components": [ - { - "internalType": "uint64", - "name": "id", - "type": "uint64" - }, - { - "internalType": "uint64", - "name": "timestamp", - "type": "uint64" - }, - { - "internalType": "uint64", - "name": "l1Height", - "type": "uint64" - }, { "internalType": "bytes32", "name": "l1Hash", @@ -1415,7 +1720,7 @@ }, { "internalType": "bytes32", - "name": "mixHash", + "name": "difficulty", "type": "bytes32" }, { @@ -1424,14 +1729,24 @@ "type": "bytes32" }, { - "internalType": "uint24", - "name": "txListByteStart", - "type": "uint24" + "internalType": "bytes32", + "name": "extraData", + "type": "bytes32" }, { - "internalType": "uint24", - "name": "txListByteEnd", - "type": "uint24" + "internalType": "uint64", + "name": "id", + "type": "uint64" + }, + { + "internalType": "uint64", + "name": "timestamp", + "type": "uint64" + }, + { + "internalType": "uint64", + "name": "l1Height", + "type": "uint64" }, { "internalType": "uint32", @@ -1440,7 +1755,7 @@ }, { "internalType": "address", - "name": "proposer", + "name": "coinbase", "type": "address" }, { diff --git a/packages/eventindexer/contracts/taikol1/TaikoL1.go b/packages/eventindexer/contracts/taikol1/TaikoL1.go index a7dde6ff5d..9b93d64ce5 100644 --- a/packages/eventindexer/contracts/taikol1/TaikoL1.go +++ b/packages/eventindexer/contracts/taikol1/TaikoL1.go @@ -29,58 +29,62 @@ var ( _ = abi.ConvertType ) +// ITierProviderTier is an auto generated low-level Go binding around an user-defined struct. +type ITierProviderTier struct { + VerifierName [32]byte + ValidityBond *big.Int + ContestBond *big.Int + CooldownWindow *big.Int + ProvingWindow uint16 +} + // TaikoDataBlock is an auto generated low-level Go binding around an user-defined struct. type TaikoDataBlock struct { MetaHash [32]byte - Prover common.Address - ProofBond *big.Int + AssignedProver common.Address + LivenessBond *big.Int BlockId uint64 ProposedAt uint64 NextTransitionId uint32 VerifiedTransitionId uint32 + MinTier uint16 Reserved [7][32]byte } // TaikoDataBlockMetadata is an auto generated low-level Go binding around an user-defined struct. type TaikoDataBlockMetadata struct { + L1Hash [32]byte + Difficulty [32]byte + TxListHash [32]byte + ExtraData [32]byte Id uint64 Timestamp uint64 L1Height uint64 - L1Hash [32]byte - MixHash [32]byte - TxListHash [32]byte - TxListByteStart *big.Int - TxListByteEnd *big.Int GasLimit uint32 - Proposer common.Address + Coinbase common.Address DepositsProcessed []TaikoDataEthDeposit } // TaikoDataConfig is an auto generated low-level Go binding around an user-defined struct. type TaikoDataConfig struct { - ChainId *big.Int - RelaySignalRoot bool - BlockMaxProposals uint64 - BlockRingBufferSize uint64 - BlockMaxVerificationsPerTx uint64 - BlockMaxGasLimit uint32 - BlockFeeBaseGas uint32 - BlockMaxTxListBytes *big.Int - BlockTxListExpiry *big.Int - ProposerRewardPerSecond *big.Int - ProposerRewardMax *big.Int - ProofRegularCooldown *big.Int - ProofOracleCooldown *big.Int - ProofWindow uint16 - ProofBond *big.Int - SkipProverAssignmentVerificaiton bool - EthDepositRingBufferSize *big.Int - EthDepositMinCountPerBlock uint64 - EthDepositMaxCountPerBlock uint64 - EthDepositMinAmount *big.Int - EthDepositMaxAmount *big.Int - EthDepositGas *big.Int - EthDepositMaxFee *big.Int + ChainId *big.Int + RelaySignalRoot bool + BlockMaxProposals uint64 + BlockRingBufferSize uint64 + BlockMaxVerificationsPerTx uint64 + BlockMaxGasLimit uint32 + BlockFeeBaseGas uint32 + BlockMaxTxListBytes *big.Int + ProposerRewardPerSecond *big.Int + ProposerRewardMax *big.Int + LivenessBond *big.Int + EthDepositRingBufferSize *big.Int + EthDepositMinCountPerBlock uint64 + EthDepositMaxCountPerBlock uint64 + EthDepositMinAmount *big.Int + EthDepositMaxAmount *big.Int + EthDepositGas *big.Int + EthDepositMaxFee *big.Int } // TaikoDataEthDeposit is an auto generated low-level Go binding around an user-defined struct. @@ -110,25 +114,29 @@ type TaikoDataSlotB struct { type TaikoDataStateVariables struct { GenesisHeight uint64 GenesisTimestamp uint64 - NumBlocks uint64 - LastVerifiedBlockId uint64 NextEthDepositToProcess uint64 NumEthDeposits uint64 + NumBlocks uint64 + LastVerifiedBlockId uint64 } // TaikoDataTransition is an auto generated low-level Go binding around an user-defined struct. type TaikoDataTransition struct { - Key [32]byte - BlockHash [32]byte - SignalRoot [32]byte - Prover common.Address - ProvenAt uint64 - Reserved [6][32]byte + Key [32]byte + BlockHash [32]byte + SignalRoot [32]byte + Prover common.Address + ValidityBond *big.Int + Contester common.Address + ContestBond *big.Int + Timestamp uint64 + Tier uint16 + Reserved [4][32]byte } // TaikoL1MetaData contains all meta data concerning the TaikoL1 contract. var TaikoL1MetaData = &bind.MetaData{ - ABI: "[{\"inputs\":[],\"name\":\"L1_ALREADY_PROVEN\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"L1_ALREADY_PROVEN\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"L1_BLOCK_ID_MISMATCH\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"L1_BLOCK_ID_MISMATCH\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"L1_BLOCK_ID_MISMATCH\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"L1_EVIDENCE_MISMATCH\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"L1_EVIDENCE_MISMATCH\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"L1_INSUFFICIENT_TOKEN\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"L1_INSUFFICIENT_TOKEN\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"L1_INVALID_ASSIGNMENT\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"L1_INVALID_ASSIGNMENT\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"L1_INVALID_BLOCK_ID\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"L1_INVALID_BLOCK_ID\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"L1_INVALID_BLOCK_ID\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"L1_INVALID_CONFIG\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"L1_INVALID_CONFIG\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"L1_INVALID_ETH_DEPOSIT\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"L1_INVALID_ETH_DEPOSIT\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"L1_INVALID_EVIDENCE\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"L1_INVALID_EVIDENCE\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"L1_INVALID_METADATA\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"L1_INVALID_METADATA\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"L1_INVALID_ORACLE_PROVER\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"L1_INVALID_ORACLE_PROVER\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"L1_INVALID_PARAM\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"L1_INVALID_PROOF\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"L1_INVALID_PROPOSER\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"L1_INVALID_PROPOSER\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"L1_INVALID_PROVER\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"L1_INVALID_PROVER\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"L1_INVALID_PROVER_SIG\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"L1_INVALID_PROVER_SIG\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"L1_NOT_PROVEABLE\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"L1_NOT_PROVEABLE\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"L1_SAME_PROOF\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"L1_SAME_PROOF\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"L1_TOO_MANY_BLOCKS\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"L1_TOO_MANY_BLOCKS\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"L1_TRANSITION_NOT_FOUND\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"L1_TRANSITION_NOT_FOUND\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"L1_TX_LIST\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"L1_TX_LIST\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"L1_TX_LIST_HASH\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"L1_TX_LIST_HASH\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"L1_TX_LIST_NOT_EXIST\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"L1_TX_LIST_NOT_EXIST\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"L1_TX_LIST_RANGE\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"L1_TX_LIST_RANGE\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"L1_UNEXPECTED_TRANSITION_ID\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"L1_UNEXPECTED_TRANSITION_ID\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"RESOLVER_DENIED\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"RESOLVER_INVALID_ADDR\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"chainId\",\"type\":\"uint256\"},{\"internalType\":\"bytes32\",\"name\":\"name\",\"type\":\"bytes32\"}],\"name\":\"RESOLVER_ZERO_ADDR\",\"type\":\"error\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"addressManager\",\"type\":\"address\"}],\"name\":\"AddressManagerChanged\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"blockId\",\"type\":\"uint256\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"prover\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"reward\",\"type\":\"uint256\"},{\"components\":[{\"internalType\":\"uint64\",\"name\":\"id\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"timestamp\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"l1Height\",\"type\":\"uint64\"},{\"internalType\":\"bytes32\",\"name\":\"l1Hash\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"mixHash\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"txListHash\",\"type\":\"bytes32\"},{\"internalType\":\"uint24\",\"name\":\"txListByteStart\",\"type\":\"uint24\"},{\"internalType\":\"uint24\",\"name\":\"txListByteEnd\",\"type\":\"uint24\"},{\"internalType\":\"uint32\",\"name\":\"gasLimit\",\"type\":\"uint32\"},{\"internalType\":\"address\",\"name\":\"proposer\",\"type\":\"address\"},{\"components\":[{\"internalType\":\"address\",\"name\":\"recipient\",\"type\":\"address\"},{\"internalType\":\"uint96\",\"name\":\"amount\",\"type\":\"uint96\"},{\"internalType\":\"uint64\",\"name\":\"id\",\"type\":\"uint64\"}],\"internalType\":\"structTaikoData.EthDeposit[]\",\"name\":\"depositsProcessed\",\"type\":\"tuple[]\"}],\"indexed\":false,\"internalType\":\"structTaikoData.BlockMetadata\",\"name\":\"meta\",\"type\":\"tuple\"}],\"name\":\"BlockProposed\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"blockId\",\"type\":\"uint256\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"prover\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"reward\",\"type\":\"uint256\"},{\"components\":[{\"internalType\":\"uint64\",\"name\":\"id\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"timestamp\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"l1Height\",\"type\":\"uint64\"},{\"internalType\":\"bytes32\",\"name\":\"l1Hash\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"mixHash\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"txListHash\",\"type\":\"bytes32\"},{\"internalType\":\"uint24\",\"name\":\"txListByteStart\",\"type\":\"uint24\"},{\"internalType\":\"uint24\",\"name\":\"txListByteEnd\",\"type\":\"uint24\"},{\"internalType\":\"uint32\",\"name\":\"gasLimit\",\"type\":\"uint32\"},{\"internalType\":\"address\",\"name\":\"proposer\",\"type\":\"address\"},{\"components\":[{\"internalType\":\"address\",\"name\":\"recipient\",\"type\":\"address\"},{\"internalType\":\"uint96\",\"name\":\"amount\",\"type\":\"uint96\"},{\"internalType\":\"uint64\",\"name\":\"id\",\"type\":\"uint64\"}],\"internalType\":\"structTaikoData.EthDeposit[]\",\"name\":\"depositsProcessed\",\"type\":\"tuple[]\"}],\"indexed\":false,\"internalType\":\"structTaikoData.BlockMetadata\",\"name\":\"meta\",\"type\":\"tuple\"}],\"name\":\"BlockProposed\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"blockId\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"parentHash\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"blockHash\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"signalRoot\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"prover\",\"type\":\"address\"}],\"name\":\"BlockProven\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"blockId\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"parentHash\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"blockHash\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"signalRoot\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"prover\",\"type\":\"address\"}],\"name\":\"BlockProven\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"blockId\",\"type\":\"uint256\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"prover\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"blockHash\",\"type\":\"bytes32\"}],\"name\":\"BlockVerified\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"blockId\",\"type\":\"uint256\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"prover\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"blockHash\",\"type\":\"bytes32\"}],\"name\":\"BlockVerified\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint64\",\"name\":\"blockId\",\"type\":\"uint64\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"bond\",\"type\":\"uint256\"}],\"name\":\"BondReceived\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint64\",\"name\":\"blockId\",\"type\":\"uint64\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"bond\",\"type\":\"uint256\"}],\"name\":\"BondReceived\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint64\",\"name\":\"blockId\",\"type\":\"uint64\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"bond\",\"type\":\"uint256\"}],\"name\":\"BondReturned\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint64\",\"name\":\"blockId\",\"type\":\"uint64\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"bond\",\"type\":\"uint256\"}],\"name\":\"BondReturned\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint64\",\"name\":\"blockId\",\"type\":\"uint64\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"bond\",\"type\":\"uint256\"}],\"name\":\"BondRewarded\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint64\",\"name\":\"blockId\",\"type\":\"uint64\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"bond\",\"type\":\"uint256\"}],\"name\":\"BondRewarded\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint64\",\"name\":\"srcHeight\",\"type\":\"uint64\"},{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"blockHash\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"signalRoot\",\"type\":\"bytes32\"}],\"name\":\"CrossChainSynced\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint64\",\"name\":\"srcHeight\",\"type\":\"uint64\"},{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"blockHash\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"signalRoot\",\"type\":\"bytes32\"}],\"name\":\"CrossChainSynced\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"components\":[{\"internalType\":\"address\",\"name\":\"recipient\",\"type\":\"address\"},{\"internalType\":\"uint96\",\"name\":\"amount\",\"type\":\"uint96\"},{\"internalType\":\"uint64\",\"name\":\"id\",\"type\":\"uint64\"}],\"indexed\":false,\"internalType\":\"structTaikoData.EthDeposit\",\"name\":\"deposit\",\"type\":\"tuple\"}],\"name\":\"EthDeposited\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"components\":[{\"internalType\":\"address\",\"name\":\"recipient\",\"type\":\"address\"},{\"internalType\":\"uint96\",\"name\":\"amount\",\"type\":\"uint96\"},{\"internalType\":\"uint64\",\"name\":\"id\",\"type\":\"uint64\"}],\"indexed\":false,\"internalType\":\"structTaikoData.EthDeposit\",\"name\":\"deposit\",\"type\":\"tuple\"}],\"name\":\"EthDeposited\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint8\",\"name\":\"version\",\"type\":\"uint8\"}],\"name\":\"Initialized\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"previousOwner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"newOwner\",\"type\":\"address\"}],\"name\":\"OwnershipTransferred\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"addressManager\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"canDepositEthToL2\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"recipient\",\"type\":\"address\"}],\"name\":\"depositEtherToL2\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"depositTaikoToken\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"blockId\",\"type\":\"uint64\"}],\"name\":\"getBlock\",\"outputs\":[{\"components\":[{\"internalType\":\"bytes32\",\"name\":\"metaHash\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"prover\",\"type\":\"address\"},{\"internalType\":\"uint96\",\"name\":\"validityBond\",\"type\":\"uint96\"},{\"internalType\":\"uint64\",\"name\":\"blockId\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"proposedAt\",\"type\":\"uint64\"},{\"internalType\":\"uint32\",\"name\":\"nextTransitionId\",\"type\":\"uint32\"},{\"internalType\":\"uint32\",\"name\":\"verifiedTransitionId\",\"type\":\"uint32\"},{\"internalType\":\"bytes32[7]\",\"name\":\"__reserved\",\"type\":\"bytes32[7]\"}],\"internalType\":\"structTaikoData.Block\",\"name\":\"blk\",\"type\":\"tuple\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getConfig\",\"outputs\":[{\"components\":[{\"internalType\":\"uint256\",\"name\":\"chainId\",\"type\":\"uint256\"},{\"internalType\":\"bool\",\"name\":\"relaySignalRoot\",\"type\":\"bool\"},{\"internalType\":\"uint64\",\"name\":\"blockMaxProposals\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"blockRingBufferSize\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"blockMaxVerificationsPerTx\",\"type\":\"uint64\"},{\"internalType\":\"uint32\",\"name\":\"blockMaxGasLimit\",\"type\":\"uint32\"},{\"internalType\":\"uint32\",\"name\":\"blockFeeBaseGas\",\"type\":\"uint32\"},{\"internalType\":\"uint24\",\"name\":\"blockMaxTxListBytes\",\"type\":\"uint24\"},{\"internalType\":\"uint256\",\"name\":\"blockTxListExpiry\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"proposerRewardPerSecond\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"proposerRewardMax\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"proofRegularCooldown\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"proofOracleCooldown\",\"type\":\"uint256\"},{\"internalType\":\"uint16\",\"name\":\"proofWindow\",\"type\":\"uint16\"},{\"internalType\":\"uint96\",\"name\":\"validityBond\",\"type\":\"uint96\"},{\"internalType\":\"bool\",\"name\":\"skipProverAssignmentVerificaiton\",\"type\":\"bool\"},{\"internalType\":\"uint256\",\"name\":\"ethDepositRingBufferSize\",\"type\":\"uint256\"},{\"internalType\":\"uint64\",\"name\":\"ethDepositMinCountPerBlock\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"ethDepositMaxCountPerBlock\",\"type\":\"uint64\"},{\"internalType\":\"uint96\",\"name\":\"ethDepositMinAmount\",\"type\":\"uint96\"},{\"internalType\":\"uint96\",\"name\":\"ethDepositMaxAmount\",\"type\":\"uint96\"},{\"internalType\":\"uint256\",\"name\":\"ethDepositGas\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"ethDepositMaxFee\",\"type\":\"uint256\"}],\"internalType\":\"structTaikoData.Config\",\"name\":\"\",\"type\":\"tuple\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"blockId\",\"type\":\"uint64\"}],\"name\":\"getCrossChainBlockHash\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"blockId\",\"type\":\"uint64\"}],\"name\":\"getCrossChainSignalRoot\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getStateVariables\",\"outputs\":[{\"components\":[{\"internalType\":\"uint64\",\"name\":\"genesisHeight\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"genesisTimestamp\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"numBlocks\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"lastVerifiedBlockId\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"nextEthDepositToProcess\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"numEthDeposits\",\"type\":\"uint64\"}],\"internalType\":\"structTaikoData.StateVariables\",\"name\":\"\",\"type\":\"tuple\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"addr\",\"type\":\"address\"}],\"name\":\"getTaikoTokenBalance\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"blockId\",\"type\":\"uint64\"},{\"internalType\":\"bytes32\",\"name\":\"parentHash\",\"type\":\"bytes32\"}],\"name\":\"getTransition\",\"outputs\":[{\"components\":[{\"internalType\":\"bytes32\",\"name\":\"key\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"blockHash\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"signalRoot\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"prover\",\"type\":\"address\"},{\"internalType\":\"uint64\",\"name\":\"provenAt\",\"type\":\"uint64\"},{\"internalType\":\"bytes32[6]\",\"name\":\"__reserved\",\"type\":\"bytes32[6]\"}],\"internalType\":\"structTaikoData.Transition\",\"name\":\"\",\"type\":\"tuple\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint16\",\"name\":\"id\",\"type\":\"uint16\"}],\"name\":\"getVerifierName\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_addressManager\",\"type\":\"address\"},{\"internalType\":\"bytes32\",\"name\":\"_genesisBlockHash\",\"type\":\"bytes32\"}],\"name\":\"init\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"owner\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"input\",\"type\":\"bytes\"},{\"internalType\":\"bytes\",\"name\":\"assignment\",\"type\":\"bytes\"},{\"internalType\":\"bytes\",\"name\":\"txList\",\"type\":\"bytes\"}],\"name\":\"proposeBlock\",\"outputs\":[{\"components\":[{\"internalType\":\"uint64\",\"name\":\"id\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"timestamp\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"l1Height\",\"type\":\"uint64\"},{\"internalType\":\"bytes32\",\"name\":\"l1Hash\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"mixHash\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"txListHash\",\"type\":\"bytes32\"},{\"internalType\":\"uint24\",\"name\":\"txListByteStart\",\"type\":\"uint24\"},{\"internalType\":\"uint24\",\"name\":\"txListByteEnd\",\"type\":\"uint24\"},{\"internalType\":\"uint32\",\"name\":\"gasLimit\",\"type\":\"uint32\"},{\"internalType\":\"address\",\"name\":\"proposer\",\"type\":\"address\"},{\"components\":[{\"internalType\":\"address\",\"name\":\"recipient\",\"type\":\"address\"},{\"internalType\":\"uint96\",\"name\":\"amount\",\"type\":\"uint96\"},{\"internalType\":\"uint64\",\"name\":\"id\",\"type\":\"uint64\"}],\"internalType\":\"structTaikoData.EthDeposit[]\",\"name\":\"depositsProcessed\",\"type\":\"tuple[]\"}],\"internalType\":\"structTaikoData.BlockMetadata\",\"name\":\"meta\",\"type\":\"tuple\"}],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"blockId\",\"type\":\"uint64\"},{\"internalType\":\"bytes\",\"name\":\"input\",\"type\":\"bytes\"}],\"name\":\"proveBlock\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"renounceOwnership\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"chainId\",\"type\":\"uint256\"},{\"internalType\":\"bytes32\",\"name\":\"name\",\"type\":\"bytes32\"},{\"internalType\":\"bool\",\"name\":\"allowZeroAddress\",\"type\":\"bool\"}],\"name\":\"resolve\",\"outputs\":[{\"internalType\":\"addresspayable\",\"name\":\"addr\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"name\",\"type\":\"bytes32\"},{\"internalType\":\"bool\",\"name\":\"allowZeroAddress\",\"type\":\"bool\"}],\"name\":\"resolve\",\"outputs\":[{\"internalType\":\"addresspayable\",\"name\":\"addr\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"newAddressManager\",\"type\":\"address\"}],\"name\":\"setAddressManager\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"state\",\"outputs\":[{\"components\":[{\"internalType\":\"uint64\",\"name\":\"genesisHeight\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"genesisTimestamp\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"numEthDeposits\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"nextEthDepositToProcess\",\"type\":\"uint64\"}],\"internalType\":\"structTaikoData.SlotA\",\"name\":\"slotA\",\"type\":\"tuple\"},{\"components\":[{\"internalType\":\"uint64\",\"name\":\"numBlocks\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"nextEthDepositToProcess\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"lastVerifiedAt\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"lastVerifiedBlockId\",\"type\":\"uint64\"}],\"internalType\":\"structTaikoData.SlotB\",\"name\":\"slotB\",\"type\":\"tuple\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"newOwner\",\"type\":\"address\"}],\"name\":\"transferOwnership\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"maxBlocks\",\"type\":\"uint64\"}],\"name\":\"verifyBlocks\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"withdrawTaikoToken\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"stateMutability\":\"payable\",\"type\":\"receive\"}]", + ABI: "[{\"inputs\":[],\"name\":\"L1_ALREADY_CONTESTED\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"L1_ALREADY_CONTESTED\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"L1_ALREADY_PROVED\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"L1_ALREADY_PROVED\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"L1_ASSIGNED_PROVER_NOT_ALLOWED\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"L1_ASSIGNED_PROVER_NOT_ALLOWED\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"L1_ASSIGNMENT_EXPIRED\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"L1_ASSIGNMENT_EXPIRED\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"L1_ASSIGNMENT_INSUFFICIENT_FEE\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"L1_ASSIGNMENT_INSUFFICIENT_FEE\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"L1_ASSIGNMENT_INVALID_PARAMS\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"L1_ASSIGNMENT_INVALID_PARAMS\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"L1_ASSIGNMENT_INVALID_SIG\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"L1_ASSIGNMENT_INVALID_SIG\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"L1_BLOCK_MISMATCH\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"L1_BLOCK_MISMATCH\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"L1_BLOCK_MISMATCH\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"L1_BLOCK_MISMATCH\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"L1_INSUFFICIENT_TOKEN\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"L1_INVALID_ADDRESS\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"L1_INVALID_ADDRESS\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"L1_INVALID_BLOCK_ID\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"L1_INVALID_BLOCK_ID\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"L1_INVALID_BLOCK_ID\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"L1_INVALID_CONFIG\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"L1_INVALID_CONFIG\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"L1_INVALID_ETH_DEPOSIT\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"L1_INVALID_ETH_DEPOSIT\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"L1_INVALID_EVIDENCE\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"L1_INVALID_EVIDENCE\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"L1_INVALID_METADATA\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"L1_INVALID_PARAM\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"L1_INVALID_PROOF\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"L1_INVALID_PROPOSER\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"L1_INVALID_PROVER\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"L1_INVALID_PROVER_SIG\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"L1_INVALID_TIER\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"L1_INVALID_TIER\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"L1_NOT_ASSIGNED_PROVER\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"L1_NOT_ASSIGNED_PROVER\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"L1_TIER_NOT_FOUND\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"L1_TIER_NOT_FOUND\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"L1_TOO_MANY_BLOCKS\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"L1_TOO_MANY_BLOCKS\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"L1_TRANSITION_ID_ZERO\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"L1_TRANSITION_ID_ZERO\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"L1_TRANSITION_NOT_FOUND\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"L1_TRANSITION_NOT_FOUND\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"L1_TXLIST_INVALID_RANGE\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"L1_TXLIST_MISMATCH\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"L1_TXLIST_MISMATCH\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"L1_TXLIST_NOT_FOUND\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"L1_TXLIST_TOO_LARGE\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"L1_TXLIST_TOO_LARGE\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"L1_UNAUTHORIZED\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"L1_UNAUTHORIZED\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"L1_UNEXPECTED_TRANSITION_ID\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"L1_UNEXPECTED_TRANSITION_ID\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"L1_UNEXPECTED_TRANSITION_TIER\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"L1_UNEXPECTED_TRANSITION_TIER\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"RESOLVER_DENIED\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"RESOLVER_INVALID_ADDR\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"chainId\",\"type\":\"uint256\"},{\"internalType\":\"bytes32\",\"name\":\"name\",\"type\":\"bytes32\"}],\"name\":\"RESOLVER_ZERO_ADDR\",\"type\":\"error\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"addressManager\",\"type\":\"address\"}],\"name\":\"AddressManagerChanged\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"blockId\",\"type\":\"uint256\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"assignedProver\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint96\",\"name\":\"livenessBond\",\"type\":\"uint96\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"proverFee\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"reward\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint16\",\"name\":\"minTier\",\"type\":\"uint16\"},{\"components\":[{\"internalType\":\"bytes32\",\"name\":\"l1Hash\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"difficulty\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"txListHash\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"extraData\",\"type\":\"bytes32\"},{\"internalType\":\"uint64\",\"name\":\"id\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"timestamp\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"l1Height\",\"type\":\"uint64\"},{\"internalType\":\"uint32\",\"name\":\"gasLimit\",\"type\":\"uint32\"},{\"internalType\":\"address\",\"name\":\"coinbase\",\"type\":\"address\"},{\"components\":[{\"internalType\":\"address\",\"name\":\"recipient\",\"type\":\"address\"},{\"internalType\":\"uint96\",\"name\":\"amount\",\"type\":\"uint96\"},{\"internalType\":\"uint64\",\"name\":\"id\",\"type\":\"uint64\"}],\"internalType\":\"structTaikoData.EthDeposit[]\",\"name\":\"depositsProcessed\",\"type\":\"tuple[]\"}],\"indexed\":false,\"internalType\":\"structTaikoData.BlockMetadata\",\"name\":\"meta\",\"type\":\"tuple\"}],\"name\":\"BlockProposed\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"blockId\",\"type\":\"uint256\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"assignedProver\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint96\",\"name\":\"livenessBond\",\"type\":\"uint96\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"proverFee\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"reward\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint16\",\"name\":\"minTier\",\"type\":\"uint16\"},{\"components\":[{\"internalType\":\"bytes32\",\"name\":\"l1Hash\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"difficulty\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"txListHash\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"extraData\",\"type\":\"bytes32\"},{\"internalType\":\"uint64\",\"name\":\"id\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"timestamp\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"l1Height\",\"type\":\"uint64\"},{\"internalType\":\"uint32\",\"name\":\"gasLimit\",\"type\":\"uint32\"},{\"internalType\":\"address\",\"name\":\"coinbase\",\"type\":\"address\"},{\"components\":[{\"internalType\":\"address\",\"name\":\"recipient\",\"type\":\"address\"},{\"internalType\":\"uint96\",\"name\":\"amount\",\"type\":\"uint96\"},{\"internalType\":\"uint64\",\"name\":\"id\",\"type\":\"uint64\"}],\"internalType\":\"structTaikoData.EthDeposit[]\",\"name\":\"depositsProcessed\",\"type\":\"tuple[]\"}],\"indexed\":false,\"internalType\":\"structTaikoData.BlockMetadata\",\"name\":\"meta\",\"type\":\"tuple\"}],\"name\":\"BlockProposed\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"blockId\",\"type\":\"uint256\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"assignedProver\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"prover\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"blockHash\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"signalRoot\",\"type\":\"bytes32\"}],\"name\":\"BlockVerified\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"blockId\",\"type\":\"uint256\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"assignedProver\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"prover\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"blockHash\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"signalRoot\",\"type\":\"bytes32\"}],\"name\":\"BlockVerified\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint64\",\"name\":\"srcHeight\",\"type\":\"uint64\"},{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"blockHash\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"signalRoot\",\"type\":\"bytes32\"}],\"name\":\"CrossChainSynced\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint64\",\"name\":\"srcHeight\",\"type\":\"uint64\"},{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"blockHash\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"signalRoot\",\"type\":\"bytes32\"}],\"name\":\"CrossChainSynced\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"components\":[{\"internalType\":\"address\",\"name\":\"recipient\",\"type\":\"address\"},{\"internalType\":\"uint96\",\"name\":\"amount\",\"type\":\"uint96\"},{\"internalType\":\"uint64\",\"name\":\"id\",\"type\":\"uint64\"}],\"indexed\":false,\"internalType\":\"structTaikoData.EthDeposit\",\"name\":\"deposit\",\"type\":\"tuple\"}],\"name\":\"EthDeposited\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"components\":[{\"internalType\":\"address\",\"name\":\"recipient\",\"type\":\"address\"},{\"internalType\":\"uint96\",\"name\":\"amount\",\"type\":\"uint96\"},{\"internalType\":\"uint64\",\"name\":\"id\",\"type\":\"uint64\"}],\"indexed\":false,\"internalType\":\"structTaikoData.EthDeposit\",\"name\":\"deposit\",\"type\":\"tuple\"}],\"name\":\"EthDeposited\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint8\",\"name\":\"version\",\"type\":\"uint8\"}],\"name\":\"Initialized\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"previousOwner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"newOwner\",\"type\":\"address\"}],\"name\":\"OwnershipTransferred\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"bool\",\"name\":\"minted\",\"type\":\"bool\"}],\"name\":\"TokenCredited\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"bool\",\"name\":\"minted\",\"type\":\"bool\"}],\"name\":\"TokenCredited\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"bool\",\"name\":\"fromLocalBalance\",\"type\":\"bool\"}],\"name\":\"TokenDebited\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"bool\",\"name\":\"fromLocalBalance\",\"type\":\"bool\"}],\"name\":\"TokenDebited\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"TokenDeposited\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"TokenDeposited\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"TokenWithdrawn\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"TokenWithdrawn\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"TokenWithdrawnByOwner\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"TokenWithdrawnByOwner\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"blockId\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"parentHash\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"blockHash\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"signalRoot\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"contester\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint96\",\"name\":\"contestBond\",\"type\":\"uint96\"},{\"indexed\":false,\"internalType\":\"uint16\",\"name\":\"tier\",\"type\":\"uint16\"}],\"name\":\"TransitionContested\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"blockId\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"parentHash\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"blockHash\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"signalRoot\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"contester\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint96\",\"name\":\"contestBond\",\"type\":\"uint96\"},{\"indexed\":false,\"internalType\":\"uint16\",\"name\":\"tier\",\"type\":\"uint16\"}],\"name\":\"TransitionContested\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"blockId\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"parentHash\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"blockHash\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"signalRoot\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"prover\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint96\",\"name\":\"validityBond\",\"type\":\"uint96\"},{\"indexed\":false,\"internalType\":\"uint16\",\"name\":\"tier\",\"type\":\"uint16\"}],\"name\":\"TransitionProved\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"blockId\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"parentHash\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"blockHash\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"signalRoot\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"prover\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint96\",\"name\":\"validityBond\",\"type\":\"uint96\"},{\"indexed\":false,\"internalType\":\"uint16\",\"name\":\"tier\",\"type\":\"uint16\"}],\"name\":\"TransitionProved\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"addressManager\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"canDepositEthToL2\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"recipient\",\"type\":\"address\"}],\"name\":\"depositEtherToL2\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"depositTaikoToken\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"blockId\",\"type\":\"uint64\"}],\"name\":\"getBlock\",\"outputs\":[{\"components\":[{\"internalType\":\"bytes32\",\"name\":\"metaHash\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"assignedProver\",\"type\":\"address\"},{\"internalType\":\"uint96\",\"name\":\"livenessBond\",\"type\":\"uint96\"},{\"internalType\":\"uint64\",\"name\":\"blockId\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"proposedAt\",\"type\":\"uint64\"},{\"internalType\":\"uint32\",\"name\":\"nextTransitionId\",\"type\":\"uint32\"},{\"internalType\":\"uint32\",\"name\":\"verifiedTransitionId\",\"type\":\"uint32\"},{\"internalType\":\"uint16\",\"name\":\"minTier\",\"type\":\"uint16\"},{\"internalType\":\"bytes32[7]\",\"name\":\"__reserved\",\"type\":\"bytes32[7]\"}],\"internalType\":\"structTaikoData.Block\",\"name\":\"blk\",\"type\":\"tuple\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getConfig\",\"outputs\":[{\"components\":[{\"internalType\":\"uint256\",\"name\":\"chainId\",\"type\":\"uint256\"},{\"internalType\":\"bool\",\"name\":\"relaySignalRoot\",\"type\":\"bool\"},{\"internalType\":\"uint64\",\"name\":\"blockMaxProposals\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"blockRingBufferSize\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"blockMaxVerificationsPerTx\",\"type\":\"uint64\"},{\"internalType\":\"uint32\",\"name\":\"blockMaxGasLimit\",\"type\":\"uint32\"},{\"internalType\":\"uint32\",\"name\":\"blockFeeBaseGas\",\"type\":\"uint32\"},{\"internalType\":\"uint24\",\"name\":\"blockMaxTxListBytes\",\"type\":\"uint24\"},{\"internalType\":\"uint256\",\"name\":\"proposerRewardPerSecond\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"proposerRewardMax\",\"type\":\"uint256\"},{\"internalType\":\"uint96\",\"name\":\"livenessBond\",\"type\":\"uint96\"},{\"internalType\":\"uint256\",\"name\":\"ethDepositRingBufferSize\",\"type\":\"uint256\"},{\"internalType\":\"uint64\",\"name\":\"ethDepositMinCountPerBlock\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"ethDepositMaxCountPerBlock\",\"type\":\"uint64\"},{\"internalType\":\"uint96\",\"name\":\"ethDepositMinAmount\",\"type\":\"uint96\"},{\"internalType\":\"uint96\",\"name\":\"ethDepositMaxAmount\",\"type\":\"uint96\"},{\"internalType\":\"uint256\",\"name\":\"ethDepositGas\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"ethDepositMaxFee\",\"type\":\"uint256\"}],\"internalType\":\"structTaikoData.Config\",\"name\":\"\",\"type\":\"tuple\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"blockId\",\"type\":\"uint64\"}],\"name\":\"getCrossChainBlockHash\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"blockId\",\"type\":\"uint64\"}],\"name\":\"getCrossChainSignalRoot\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"rand\",\"type\":\"uint256\"}],\"name\":\"getMinTier\",\"outputs\":[{\"internalType\":\"uint16\",\"name\":\"\",\"type\":\"uint16\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getStateVariables\",\"outputs\":[{\"components\":[{\"internalType\":\"uint64\",\"name\":\"genesisHeight\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"genesisTimestamp\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"nextEthDepositToProcess\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"numEthDeposits\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"numBlocks\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"lastVerifiedBlockId\",\"type\":\"uint64\"}],\"internalType\":\"structTaikoData.StateVariables\",\"name\":\"\",\"type\":\"tuple\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"user\",\"type\":\"address\"}],\"name\":\"getTaikoTokenBalance\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint16\",\"name\":\"tierId\",\"type\":\"uint16\"}],\"name\":\"getTier\",\"outputs\":[{\"components\":[{\"internalType\":\"bytes32\",\"name\":\"verifierName\",\"type\":\"bytes32\"},{\"internalType\":\"uint96\",\"name\":\"validityBond\",\"type\":\"uint96\"},{\"internalType\":\"uint96\",\"name\":\"contestBond\",\"type\":\"uint96\"},{\"internalType\":\"uint24\",\"name\":\"cooldownWindow\",\"type\":\"uint24\"},{\"internalType\":\"uint16\",\"name\":\"provingWindow\",\"type\":\"uint16\"}],\"internalType\":\"structITierProvider.Tier\",\"name\":\"\",\"type\":\"tuple\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getTierIds\",\"outputs\":[{\"internalType\":\"uint16[]\",\"name\":\"\",\"type\":\"uint16[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"blockId\",\"type\":\"uint64\"},{\"internalType\":\"bytes32\",\"name\":\"parentHash\",\"type\":\"bytes32\"}],\"name\":\"getTransition\",\"outputs\":[{\"components\":[{\"internalType\":\"bytes32\",\"name\":\"key\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"blockHash\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"signalRoot\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"prover\",\"type\":\"address\"},{\"internalType\":\"uint96\",\"name\":\"validityBond\",\"type\":\"uint96\"},{\"internalType\":\"address\",\"name\":\"contester\",\"type\":\"address\"},{\"internalType\":\"uint96\",\"name\":\"contestBond\",\"type\":\"uint96\"},{\"internalType\":\"uint64\",\"name\":\"timestamp\",\"type\":\"uint64\"},{\"internalType\":\"uint16\",\"name\":\"tier\",\"type\":\"uint16\"},{\"internalType\":\"bytes32[4]\",\"name\":\"__reserved\",\"type\":\"bytes32[4]\"}],\"internalType\":\"structTaikoData.Transition\",\"name\":\"\",\"type\":\"tuple\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_addressManager\",\"type\":\"address\"},{\"internalType\":\"bytes32\",\"name\":\"_genesisBlockHash\",\"type\":\"bytes32\"}],\"name\":\"init\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"owner\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"ownerWithdrawTaikoToken\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"txListHash\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"extraData\",\"type\":\"bytes32\"},{\"internalType\":\"bytes\",\"name\":\"assignment\",\"type\":\"bytes\"},{\"internalType\":\"bytes\",\"name\":\"txList\",\"type\":\"bytes\"}],\"name\":\"proposeBlock\",\"outputs\":[{\"components\":[{\"internalType\":\"bytes32\",\"name\":\"l1Hash\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"difficulty\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"txListHash\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"extraData\",\"type\":\"bytes32\"},{\"internalType\":\"uint64\",\"name\":\"id\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"timestamp\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"l1Height\",\"type\":\"uint64\"},{\"internalType\":\"uint32\",\"name\":\"gasLimit\",\"type\":\"uint32\"},{\"internalType\":\"address\",\"name\":\"coinbase\",\"type\":\"address\"},{\"components\":[{\"internalType\":\"address\",\"name\":\"recipient\",\"type\":\"address\"},{\"internalType\":\"uint96\",\"name\":\"amount\",\"type\":\"uint96\"},{\"internalType\":\"uint64\",\"name\":\"id\",\"type\":\"uint64\"}],\"internalType\":\"structTaikoData.EthDeposit[]\",\"name\":\"depositsProcessed\",\"type\":\"tuple[]\"}],\"internalType\":\"structTaikoData.BlockMetadata\",\"name\":\"meta\",\"type\":\"tuple\"}],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"blockId\",\"type\":\"uint64\"},{\"internalType\":\"bytes\",\"name\":\"input\",\"type\":\"bytes\"}],\"name\":\"proveBlock\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"renounceOwnership\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"chainId\",\"type\":\"uint256\"},{\"internalType\":\"bytes32\",\"name\":\"name\",\"type\":\"bytes32\"},{\"internalType\":\"bool\",\"name\":\"allowZeroAddress\",\"type\":\"bool\"}],\"name\":\"resolve\",\"outputs\":[{\"internalType\":\"addresspayable\",\"name\":\"addr\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"name\",\"type\":\"bytes32\"},{\"internalType\":\"bool\",\"name\":\"allowZeroAddress\",\"type\":\"bool\"}],\"name\":\"resolve\",\"outputs\":[{\"internalType\":\"addresspayable\",\"name\":\"addr\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"newAddressManager\",\"type\":\"address\"}],\"name\":\"setAddressManager\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"state\",\"outputs\":[{\"components\":[{\"internalType\":\"uint64\",\"name\":\"genesisHeight\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"genesisTimestamp\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"numEthDeposits\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"nextEthDepositToProcess\",\"type\":\"uint64\"}],\"internalType\":\"structTaikoData.SlotA\",\"name\":\"slotA\",\"type\":\"tuple\"},{\"components\":[{\"internalType\":\"uint64\",\"name\":\"numBlocks\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"nextEthDepositToProcess\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"lastVerifiedAt\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"lastVerifiedBlockId\",\"type\":\"uint64\"}],\"internalType\":\"structTaikoData.SlotB\",\"name\":\"slotB\",\"type\":\"tuple\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"newOwner\",\"type\":\"address\"}],\"name\":\"transferOwnership\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"maxBlocks\",\"type\":\"uint64\"}],\"name\":\"verifyBlocks\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"withdrawTaikoToken\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"stateMutability\":\"payable\",\"type\":\"receive\"}]", } // TaikoL1ABI is the input ABI used to generate the binding from. @@ -341,7 +349,7 @@ func (_TaikoL1 *TaikoL1CallerSession) CanDepositEthToL2(amount *big.Int) (bool, // GetBlock is a free data retrieval call binding the contract method 0x5fa15e79. // -// Solidity: function getBlock(uint64 blockId) view returns((bytes32,address,uint96,uint64,uint64,uint32,uint32,bytes32[7]) blk) +// Solidity: function getBlock(uint64 blockId) view returns((bytes32,address,uint96,uint64,uint64,uint32,uint32,uint16,bytes32[7]) blk) func (_TaikoL1 *TaikoL1Caller) GetBlock(opts *bind.CallOpts, blockId uint64) (TaikoDataBlock, error) { var out []interface{} err := _TaikoL1.contract.Call(opts, &out, "getBlock", blockId) @@ -358,21 +366,21 @@ func (_TaikoL1 *TaikoL1Caller) GetBlock(opts *bind.CallOpts, blockId uint64) (Ta // GetBlock is a free data retrieval call binding the contract method 0x5fa15e79. // -// Solidity: function getBlock(uint64 blockId) view returns((bytes32,address,uint96,uint64,uint64,uint32,uint32,bytes32[7]) blk) +// Solidity: function getBlock(uint64 blockId) view returns((bytes32,address,uint96,uint64,uint64,uint32,uint32,uint16,bytes32[7]) blk) func (_TaikoL1 *TaikoL1Session) GetBlock(blockId uint64) (TaikoDataBlock, error) { return _TaikoL1.Contract.GetBlock(&_TaikoL1.CallOpts, blockId) } // GetBlock is a free data retrieval call binding the contract method 0x5fa15e79. // -// Solidity: function getBlock(uint64 blockId) view returns((bytes32,address,uint96,uint64,uint64,uint32,uint32,bytes32[7]) blk) +// Solidity: function getBlock(uint64 blockId) view returns((bytes32,address,uint96,uint64,uint64,uint32,uint32,uint16,bytes32[7]) blk) func (_TaikoL1 *TaikoL1CallerSession) GetBlock(blockId uint64) (TaikoDataBlock, error) { return _TaikoL1.Contract.GetBlock(&_TaikoL1.CallOpts, blockId) } // GetConfig is a free data retrieval call binding the contract method 0xc3f909d4. // -// Solidity: function getConfig() pure returns((uint256,bool,uint64,uint64,uint64,uint32,uint32,uint24,uint256,uint256,uint256,uint256,uint256,uint16,uint96,bool,uint256,uint64,uint64,uint96,uint96,uint256,uint256)) +// Solidity: function getConfig() pure returns((uint256,bool,uint64,uint64,uint64,uint32,uint32,uint24,uint256,uint256,uint96,uint256,uint64,uint64,uint96,uint96,uint256,uint256)) func (_TaikoL1 *TaikoL1Caller) GetConfig(opts *bind.CallOpts) (TaikoDataConfig, error) { var out []interface{} err := _TaikoL1.contract.Call(opts, &out, "getConfig") @@ -389,14 +397,14 @@ func (_TaikoL1 *TaikoL1Caller) GetConfig(opts *bind.CallOpts) (TaikoDataConfig, // GetConfig is a free data retrieval call binding the contract method 0xc3f909d4. // -// Solidity: function getConfig() pure returns((uint256,bool,uint64,uint64,uint64,uint32,uint32,uint24,uint256,uint256,uint256,uint256,uint256,uint16,uint96,bool,uint256,uint64,uint64,uint96,uint96,uint256,uint256)) +// Solidity: function getConfig() pure returns((uint256,bool,uint64,uint64,uint64,uint32,uint32,uint24,uint256,uint256,uint96,uint256,uint64,uint64,uint96,uint96,uint256,uint256)) func (_TaikoL1 *TaikoL1Session) GetConfig() (TaikoDataConfig, error) { return _TaikoL1.Contract.GetConfig(&_TaikoL1.CallOpts) } // GetConfig is a free data retrieval call binding the contract method 0xc3f909d4. // -// Solidity: function getConfig() pure returns((uint256,bool,uint64,uint64,uint64,uint32,uint32,uint24,uint256,uint256,uint256,uint256,uint256,uint16,uint96,bool,uint256,uint64,uint64,uint96,uint96,uint256,uint256)) +// Solidity: function getConfig() pure returns((uint256,bool,uint64,uint64,uint64,uint32,uint32,uint24,uint256,uint256,uint96,uint256,uint64,uint64,uint96,uint96,uint256,uint256)) func (_TaikoL1 *TaikoL1CallerSession) GetConfig() (TaikoDataConfig, error) { return _TaikoL1.Contract.GetConfig(&_TaikoL1.CallOpts) } @@ -463,6 +471,37 @@ func (_TaikoL1 *TaikoL1CallerSession) GetCrossChainSignalRoot(blockId uint64) ([ return _TaikoL1.Contract.GetCrossChainSignalRoot(&_TaikoL1.CallOpts, blockId) } +// GetMinTier is a free data retrieval call binding the contract method 0x59ab4e23. +// +// Solidity: function getMinTier(uint256 rand) view returns(uint16) +func (_TaikoL1 *TaikoL1Caller) GetMinTier(opts *bind.CallOpts, rand *big.Int) (uint16, error) { + var out []interface{} + err := _TaikoL1.contract.Call(opts, &out, "getMinTier", rand) + + if err != nil { + return *new(uint16), err + } + + out0 := *abi.ConvertType(out[0], new(uint16)).(*uint16) + + return out0, err + +} + +// GetMinTier is a free data retrieval call binding the contract method 0x59ab4e23. +// +// Solidity: function getMinTier(uint256 rand) view returns(uint16) +func (_TaikoL1 *TaikoL1Session) GetMinTier(rand *big.Int) (uint16, error) { + return _TaikoL1.Contract.GetMinTier(&_TaikoL1.CallOpts, rand) +} + +// GetMinTier is a free data retrieval call binding the contract method 0x59ab4e23. +// +// Solidity: function getMinTier(uint256 rand) view returns(uint16) +func (_TaikoL1 *TaikoL1CallerSession) GetMinTier(rand *big.Int) (uint16, error) { + return _TaikoL1.Contract.GetMinTier(&_TaikoL1.CallOpts, rand) +} + // GetStateVariables is a free data retrieval call binding the contract method 0xdde89cf5. // // Solidity: function getStateVariables() view returns((uint64,uint64,uint64,uint64,uint64,uint64)) @@ -496,10 +535,10 @@ func (_TaikoL1 *TaikoL1CallerSession) GetStateVariables() (TaikoDataStateVariabl // GetTaikoTokenBalance is a free data retrieval call binding the contract method 0x8dff9cea. // -// Solidity: function getTaikoTokenBalance(address addr) view returns(uint256) -func (_TaikoL1 *TaikoL1Caller) GetTaikoTokenBalance(opts *bind.CallOpts, addr common.Address) (*big.Int, error) { +// Solidity: function getTaikoTokenBalance(address user) view returns(uint256) +func (_TaikoL1 *TaikoL1Caller) GetTaikoTokenBalance(opts *bind.CallOpts, user common.Address) (*big.Int, error) { var out []interface{} - err := _TaikoL1.contract.Call(opts, &out, "getTaikoTokenBalance", addr) + err := _TaikoL1.contract.Call(opts, &out, "getTaikoTokenBalance", user) if err != nil { return *new(*big.Int), err @@ -513,78 +552,109 @@ func (_TaikoL1 *TaikoL1Caller) GetTaikoTokenBalance(opts *bind.CallOpts, addr co // GetTaikoTokenBalance is a free data retrieval call binding the contract method 0x8dff9cea. // -// Solidity: function getTaikoTokenBalance(address addr) view returns(uint256) -func (_TaikoL1 *TaikoL1Session) GetTaikoTokenBalance(addr common.Address) (*big.Int, error) { - return _TaikoL1.Contract.GetTaikoTokenBalance(&_TaikoL1.CallOpts, addr) +// Solidity: function getTaikoTokenBalance(address user) view returns(uint256) +func (_TaikoL1 *TaikoL1Session) GetTaikoTokenBalance(user common.Address) (*big.Int, error) { + return _TaikoL1.Contract.GetTaikoTokenBalance(&_TaikoL1.CallOpts, user) } // GetTaikoTokenBalance is a free data retrieval call binding the contract method 0x8dff9cea. // -// Solidity: function getTaikoTokenBalance(address addr) view returns(uint256) -func (_TaikoL1 *TaikoL1CallerSession) GetTaikoTokenBalance(addr common.Address) (*big.Int, error) { - return _TaikoL1.Contract.GetTaikoTokenBalance(&_TaikoL1.CallOpts, addr) +// Solidity: function getTaikoTokenBalance(address user) view returns(uint256) +func (_TaikoL1 *TaikoL1CallerSession) GetTaikoTokenBalance(user common.Address) (*big.Int, error) { + return _TaikoL1.Contract.GetTaikoTokenBalance(&_TaikoL1.CallOpts, user) } -// GetTransition is a free data retrieval call binding the contract method 0xfd257e29. +// GetTier is a free data retrieval call binding the contract method 0x576c3de7. // -// Solidity: function getTransition(uint64 blockId, bytes32 parentHash) view returns((bytes32,bytes32,bytes32,address,uint64,bytes32[6])) -func (_TaikoL1 *TaikoL1Caller) GetTransition(opts *bind.CallOpts, blockId uint64, parentHash [32]byte) (TaikoDataTransition, error) { +// Solidity: function getTier(uint16 tierId) view returns((bytes32,uint96,uint96,uint24,uint16)) +func (_TaikoL1 *TaikoL1Caller) GetTier(opts *bind.CallOpts, tierId uint16) (ITierProviderTier, error) { var out []interface{} - err := _TaikoL1.contract.Call(opts, &out, "getTransition", blockId, parentHash) + err := _TaikoL1.contract.Call(opts, &out, "getTier", tierId) if err != nil { - return *new(TaikoDataTransition), err + return *new(ITierProviderTier), err } - out0 := *abi.ConvertType(out[0], new(TaikoDataTransition)).(*TaikoDataTransition) + out0 := *abi.ConvertType(out[0], new(ITierProviderTier)).(*ITierProviderTier) return out0, err } -// GetTransition is a free data retrieval call binding the contract method 0xfd257e29. +// GetTier is a free data retrieval call binding the contract method 0x576c3de7. // -// Solidity: function getTransition(uint64 blockId, bytes32 parentHash) view returns((bytes32,bytes32,bytes32,address,uint64,bytes32[6])) -func (_TaikoL1 *TaikoL1Session) GetTransition(blockId uint64, parentHash [32]byte) (TaikoDataTransition, error) { - return _TaikoL1.Contract.GetTransition(&_TaikoL1.CallOpts, blockId, parentHash) +// Solidity: function getTier(uint16 tierId) view returns((bytes32,uint96,uint96,uint24,uint16)) +func (_TaikoL1 *TaikoL1Session) GetTier(tierId uint16) (ITierProviderTier, error) { + return _TaikoL1.Contract.GetTier(&_TaikoL1.CallOpts, tierId) } -// GetTransition is a free data retrieval call binding the contract method 0xfd257e29. +// GetTier is a free data retrieval call binding the contract method 0x576c3de7. // -// Solidity: function getTransition(uint64 blockId, bytes32 parentHash) view returns((bytes32,bytes32,bytes32,address,uint64,bytes32[6])) -func (_TaikoL1 *TaikoL1CallerSession) GetTransition(blockId uint64, parentHash [32]byte) (TaikoDataTransition, error) { - return _TaikoL1.Contract.GetTransition(&_TaikoL1.CallOpts, blockId, parentHash) +// Solidity: function getTier(uint16 tierId) view returns((bytes32,uint96,uint96,uint24,uint16)) +func (_TaikoL1 *TaikoL1CallerSession) GetTier(tierId uint16) (ITierProviderTier, error) { + return _TaikoL1.Contract.GetTier(&_TaikoL1.CallOpts, tierId) } -// GetVerifierName is a free data retrieval call binding the contract method 0x0372303d. +// GetTierIds is a free data retrieval call binding the contract method 0xd8cde1c6. // -// Solidity: function getVerifierName(uint16 id) pure returns(bytes32) -func (_TaikoL1 *TaikoL1Caller) GetVerifierName(opts *bind.CallOpts, id uint16) ([32]byte, error) { +// Solidity: function getTierIds() view returns(uint16[]) +func (_TaikoL1 *TaikoL1Caller) GetTierIds(opts *bind.CallOpts) ([]uint16, error) { var out []interface{} - err := _TaikoL1.contract.Call(opts, &out, "getVerifierName", id) + err := _TaikoL1.contract.Call(opts, &out, "getTierIds") if err != nil { - return *new([32]byte), err + return *new([]uint16), err } - out0 := *abi.ConvertType(out[0], new([32]byte)).(*[32]byte) + out0 := *abi.ConvertType(out[0], new([]uint16)).(*[]uint16) + + return out0, err + +} + +// GetTierIds is a free data retrieval call binding the contract method 0xd8cde1c6. +// +// Solidity: function getTierIds() view returns(uint16[]) +func (_TaikoL1 *TaikoL1Session) GetTierIds() ([]uint16, error) { + return _TaikoL1.Contract.GetTierIds(&_TaikoL1.CallOpts) +} + +// GetTierIds is a free data retrieval call binding the contract method 0xd8cde1c6. +// +// Solidity: function getTierIds() view returns(uint16[]) +func (_TaikoL1 *TaikoL1CallerSession) GetTierIds() ([]uint16, error) { + return _TaikoL1.Contract.GetTierIds(&_TaikoL1.CallOpts) +} + +// GetTransition is a free data retrieval call binding the contract method 0xfd257e29. +// +// Solidity: function getTransition(uint64 blockId, bytes32 parentHash) view returns((bytes32,bytes32,bytes32,address,uint96,address,uint96,uint64,uint16,bytes32[4])) +func (_TaikoL1 *TaikoL1Caller) GetTransition(opts *bind.CallOpts, blockId uint64, parentHash [32]byte) (TaikoDataTransition, error) { + var out []interface{} + err := _TaikoL1.contract.Call(opts, &out, "getTransition", blockId, parentHash) + + if err != nil { + return *new(TaikoDataTransition), err + } + + out0 := *abi.ConvertType(out[0], new(TaikoDataTransition)).(*TaikoDataTransition) return out0, err } -// GetVerifierName is a free data retrieval call binding the contract method 0x0372303d. +// GetTransition is a free data retrieval call binding the contract method 0xfd257e29. // -// Solidity: function getVerifierName(uint16 id) pure returns(bytes32) -func (_TaikoL1 *TaikoL1Session) GetVerifierName(id uint16) ([32]byte, error) { - return _TaikoL1.Contract.GetVerifierName(&_TaikoL1.CallOpts, id) +// Solidity: function getTransition(uint64 blockId, bytes32 parentHash) view returns((bytes32,bytes32,bytes32,address,uint96,address,uint96,uint64,uint16,bytes32[4])) +func (_TaikoL1 *TaikoL1Session) GetTransition(blockId uint64, parentHash [32]byte) (TaikoDataTransition, error) { + return _TaikoL1.Contract.GetTransition(&_TaikoL1.CallOpts, blockId, parentHash) } -// GetVerifierName is a free data retrieval call binding the contract method 0x0372303d. +// GetTransition is a free data retrieval call binding the contract method 0xfd257e29. // -// Solidity: function getVerifierName(uint16 id) pure returns(bytes32) -func (_TaikoL1 *TaikoL1CallerSession) GetVerifierName(id uint16) ([32]byte, error) { - return _TaikoL1.Contract.GetVerifierName(&_TaikoL1.CallOpts, id) +// Solidity: function getTransition(uint64 blockId, bytes32 parentHash) view returns((bytes32,bytes32,bytes32,address,uint96,address,uint96,uint64,uint16,bytes32[4])) +func (_TaikoL1 *TaikoL1CallerSession) GetTransition(blockId uint64, parentHash [32]byte) (TaikoDataTransition, error) { + return _TaikoL1.Contract.GetTransition(&_TaikoL1.CallOpts, blockId, parentHash) } // Owner is a free data retrieval call binding the contract method 0x8da5cb5b. @@ -788,25 +858,46 @@ func (_TaikoL1 *TaikoL1TransactorSession) Init(_addressManager common.Address, _ return _TaikoL1.Contract.Init(&_TaikoL1.TransactOpts, _addressManager, _genesisBlockHash) } -// ProposeBlock is a paid mutator transaction binding the contract method 0xb6d5a397. +// OwnerWithdrawTaikoToken is a paid mutator transaction binding the contract method 0x6edda419. +// +// Solidity: function ownerWithdrawTaikoToken(address to, uint256 amount) returns() +func (_TaikoL1 *TaikoL1Transactor) OwnerWithdrawTaikoToken(opts *bind.TransactOpts, to common.Address, amount *big.Int) (*types.Transaction, error) { + return _TaikoL1.contract.Transact(opts, "ownerWithdrawTaikoToken", to, amount) +} + +// OwnerWithdrawTaikoToken is a paid mutator transaction binding the contract method 0x6edda419. +// +// Solidity: function ownerWithdrawTaikoToken(address to, uint256 amount) returns() +func (_TaikoL1 *TaikoL1Session) OwnerWithdrawTaikoToken(to common.Address, amount *big.Int) (*types.Transaction, error) { + return _TaikoL1.Contract.OwnerWithdrawTaikoToken(&_TaikoL1.TransactOpts, to, amount) +} + +// OwnerWithdrawTaikoToken is a paid mutator transaction binding the contract method 0x6edda419. // -// Solidity: function proposeBlock(bytes input, bytes assignment, bytes txList) payable returns((uint64,uint64,uint64,bytes32,bytes32,bytes32,uint24,uint24,uint32,address,(address,uint96,uint64)[]) meta) -func (_TaikoL1 *TaikoL1Transactor) ProposeBlock(opts *bind.TransactOpts, input []byte, assignment []byte, txList []byte) (*types.Transaction, error) { - return _TaikoL1.contract.Transact(opts, "proposeBlock", input, assignment, txList) +// Solidity: function ownerWithdrawTaikoToken(address to, uint256 amount) returns() +func (_TaikoL1 *TaikoL1TransactorSession) OwnerWithdrawTaikoToken(to common.Address, amount *big.Int) (*types.Transaction, error) { + return _TaikoL1.Contract.OwnerWithdrawTaikoToken(&_TaikoL1.TransactOpts, to, amount) } -// ProposeBlock is a paid mutator transaction binding the contract method 0xb6d5a397. +// ProposeBlock is a paid mutator transaction binding the contract method 0x04dc4c8b. // -// Solidity: function proposeBlock(bytes input, bytes assignment, bytes txList) payable returns((uint64,uint64,uint64,bytes32,bytes32,bytes32,uint24,uint24,uint32,address,(address,uint96,uint64)[]) meta) -func (_TaikoL1 *TaikoL1Session) ProposeBlock(input []byte, assignment []byte, txList []byte) (*types.Transaction, error) { - return _TaikoL1.Contract.ProposeBlock(&_TaikoL1.TransactOpts, input, assignment, txList) +// Solidity: function proposeBlock(bytes32 txListHash, bytes32 extraData, bytes assignment, bytes txList) payable returns((bytes32,bytes32,bytes32,bytes32,uint64,uint64,uint64,uint32,address,(address,uint96,uint64)[]) meta) +func (_TaikoL1 *TaikoL1Transactor) ProposeBlock(opts *bind.TransactOpts, txListHash [32]byte, extraData [32]byte, assignment []byte, txList []byte) (*types.Transaction, error) { + return _TaikoL1.contract.Transact(opts, "proposeBlock", txListHash, extraData, assignment, txList) } -// ProposeBlock is a paid mutator transaction binding the contract method 0xb6d5a397. +// ProposeBlock is a paid mutator transaction binding the contract method 0x04dc4c8b. // -// Solidity: function proposeBlock(bytes input, bytes assignment, bytes txList) payable returns((uint64,uint64,uint64,bytes32,bytes32,bytes32,uint24,uint24,uint32,address,(address,uint96,uint64)[]) meta) -func (_TaikoL1 *TaikoL1TransactorSession) ProposeBlock(input []byte, assignment []byte, txList []byte) (*types.Transaction, error) { - return _TaikoL1.Contract.ProposeBlock(&_TaikoL1.TransactOpts, input, assignment, txList) +// Solidity: function proposeBlock(bytes32 txListHash, bytes32 extraData, bytes assignment, bytes txList) payable returns((bytes32,bytes32,bytes32,bytes32,uint64,uint64,uint64,uint32,address,(address,uint96,uint64)[]) meta) +func (_TaikoL1 *TaikoL1Session) ProposeBlock(txListHash [32]byte, extraData [32]byte, assignment []byte, txList []byte) (*types.Transaction, error) { + return _TaikoL1.Contract.ProposeBlock(&_TaikoL1.TransactOpts, txListHash, extraData, assignment, txList) +} + +// ProposeBlock is a paid mutator transaction binding the contract method 0x04dc4c8b. +// +// Solidity: function proposeBlock(bytes32 txListHash, bytes32 extraData, bytes assignment, bytes txList) payable returns((bytes32,bytes32,bytes32,bytes32,uint64,uint64,uint64,uint32,address,(address,uint96,uint64)[]) meta) +func (_TaikoL1 *TaikoL1TransactorSession) ProposeBlock(txListHash [32]byte, extraData [32]byte, assignment []byte, txList []byte) (*types.Transaction, error) { + return _TaikoL1.Contract.ProposeBlock(&_TaikoL1.TransactOpts, txListHash, extraData, assignment, txList) } // ProveBlock is a paid mutator transaction binding the contract method 0x10d008bd. @@ -1169,49 +1260,52 @@ func (it *TaikoL1BlockProposedIterator) Close() error { // TaikoL1BlockProposed represents a BlockProposed event raised by the TaikoL1 contract. type TaikoL1BlockProposed struct { - BlockId *big.Int - Prover common.Address - Reward *big.Int - Meta TaikoDataBlockMetadata - Raw types.Log // Blockchain specific contextual infos + BlockId *big.Int + AssignedProver common.Address + LivenessBond *big.Int + ProverFee *big.Int + Reward *big.Int + MinTier uint16 + Meta TaikoDataBlockMetadata + Raw types.Log // Blockchain specific contextual infos } -// FilterBlockProposed is a free log retrieval operation binding the contract event 0xe3713939242e9072c6fbb16f90e98d4b583d66b9fae9208ba2148aa8d6e82af6. +// FilterBlockProposed is a free log retrieval operation binding the contract event 0x3bc85eed257804b26e2232e767692931a620954ad0ae6ca5c58adb22be553418. // -// Solidity: event BlockProposed(uint256 indexed blockId, address indexed prover, uint256 reward, (uint64,uint64,uint64,bytes32,bytes32,bytes32,uint24,uint24,uint32,address,(address,uint96,uint64)[]) meta) -func (_TaikoL1 *TaikoL1Filterer) FilterBlockProposed(opts *bind.FilterOpts, blockId []*big.Int, prover []common.Address) (*TaikoL1BlockProposedIterator, error) { +// Solidity: event BlockProposed(uint256 indexed blockId, address indexed assignedProver, uint96 livenessBond, uint256 proverFee, uint256 reward, uint16 minTier, (bytes32,bytes32,bytes32,bytes32,uint64,uint64,uint64,uint32,address,(address,uint96,uint64)[]) meta) +func (_TaikoL1 *TaikoL1Filterer) FilterBlockProposed(opts *bind.FilterOpts, blockId []*big.Int, assignedProver []common.Address) (*TaikoL1BlockProposedIterator, error) { var blockIdRule []interface{} for _, blockIdItem := range blockId { blockIdRule = append(blockIdRule, blockIdItem) } - var proverRule []interface{} - for _, proverItem := range prover { - proverRule = append(proverRule, proverItem) + var assignedProverRule []interface{} + for _, assignedProverItem := range assignedProver { + assignedProverRule = append(assignedProverRule, assignedProverItem) } - logs, sub, err := _TaikoL1.contract.FilterLogs(opts, "BlockProposed", blockIdRule, proverRule) + logs, sub, err := _TaikoL1.contract.FilterLogs(opts, "BlockProposed", blockIdRule, assignedProverRule) if err != nil { return nil, err } return &TaikoL1BlockProposedIterator{contract: _TaikoL1.contract, event: "BlockProposed", logs: logs, sub: sub}, nil } -// WatchBlockProposed is a free log subscription operation binding the contract event 0xe3713939242e9072c6fbb16f90e98d4b583d66b9fae9208ba2148aa8d6e82af6. +// WatchBlockProposed is a free log subscription operation binding the contract event 0x3bc85eed257804b26e2232e767692931a620954ad0ae6ca5c58adb22be553418. // -// Solidity: event BlockProposed(uint256 indexed blockId, address indexed prover, uint256 reward, (uint64,uint64,uint64,bytes32,bytes32,bytes32,uint24,uint24,uint32,address,(address,uint96,uint64)[]) meta) -func (_TaikoL1 *TaikoL1Filterer) WatchBlockProposed(opts *bind.WatchOpts, sink chan<- *TaikoL1BlockProposed, blockId []*big.Int, prover []common.Address) (event.Subscription, error) { +// Solidity: event BlockProposed(uint256 indexed blockId, address indexed assignedProver, uint96 livenessBond, uint256 proverFee, uint256 reward, uint16 minTier, (bytes32,bytes32,bytes32,bytes32,uint64,uint64,uint64,uint32,address,(address,uint96,uint64)[]) meta) +func (_TaikoL1 *TaikoL1Filterer) WatchBlockProposed(opts *bind.WatchOpts, sink chan<- *TaikoL1BlockProposed, blockId []*big.Int, assignedProver []common.Address) (event.Subscription, error) { var blockIdRule []interface{} for _, blockIdItem := range blockId { blockIdRule = append(blockIdRule, blockIdItem) } - var proverRule []interface{} - for _, proverItem := range prover { - proverRule = append(proverRule, proverItem) + var assignedProverRule []interface{} + for _, assignedProverItem := range assignedProver { + assignedProverRule = append(assignedProverRule, assignedProverItem) } - logs, sub, err := _TaikoL1.contract.WatchLogs(opts, "BlockProposed", blockIdRule, proverRule) + logs, sub, err := _TaikoL1.contract.WatchLogs(opts, "BlockProposed", blockIdRule, assignedProverRule) if err != nil { return nil, err } @@ -1243,9 +1337,9 @@ func (_TaikoL1 *TaikoL1Filterer) WatchBlockProposed(opts *bind.WatchOpts, sink c }), nil } -// ParseBlockProposed is a log parse operation binding the contract event 0xe3713939242e9072c6fbb16f90e98d4b583d66b9fae9208ba2148aa8d6e82af6. +// ParseBlockProposed is a log parse operation binding the contract event 0x3bc85eed257804b26e2232e767692931a620954ad0ae6ca5c58adb22be553418. // -// Solidity: event BlockProposed(uint256 indexed blockId, address indexed prover, uint256 reward, (uint64,uint64,uint64,bytes32,bytes32,bytes32,uint24,uint24,uint32,address,(address,uint96,uint64)[]) meta) +// Solidity: event BlockProposed(uint256 indexed blockId, address indexed assignedProver, uint96 livenessBond, uint256 proverFee, uint256 reward, uint16 minTier, (bytes32,bytes32,bytes32,bytes32,uint64,uint64,uint64,uint32,address,(address,uint96,uint64)[]) meta) func (_TaikoL1 *TaikoL1Filterer) ParseBlockProposed(log types.Log) (*TaikoL1BlockProposed, error) { event := new(TaikoL1BlockProposed) if err := _TaikoL1.contract.UnpackLog(event, "BlockProposed", log); err != nil { @@ -1324,49 +1418,52 @@ func (it *TaikoL1BlockProposed0Iterator) Close() error { // TaikoL1BlockProposed0 represents a BlockProposed0 event raised by the TaikoL1 contract. type TaikoL1BlockProposed0 struct { - BlockId *big.Int - Prover common.Address - Reward *big.Int - Meta TaikoDataBlockMetadata - Raw types.Log // Blockchain specific contextual infos + BlockId *big.Int + AssignedProver common.Address + LivenessBond *big.Int + ProverFee *big.Int + Reward *big.Int + MinTier uint16 + Meta TaikoDataBlockMetadata + Raw types.Log // Blockchain specific contextual infos } -// FilterBlockProposed0 is a free log retrieval operation binding the contract event 0xe3713939242e9072c6fbb16f90e98d4b583d66b9fae9208ba2148aa8d6e82af6. +// FilterBlockProposed0 is a free log retrieval operation binding the contract event 0x3bc85eed257804b26e2232e767692931a620954ad0ae6ca5c58adb22be553418. // -// Solidity: event BlockProposed(uint256 indexed blockId, address indexed prover, uint256 reward, (uint64,uint64,uint64,bytes32,bytes32,bytes32,uint24,uint24,uint32,address,(address,uint96,uint64)[]) meta) -func (_TaikoL1 *TaikoL1Filterer) FilterBlockProposed0(opts *bind.FilterOpts, blockId []*big.Int, prover []common.Address) (*TaikoL1BlockProposed0Iterator, error) { +// Solidity: event BlockProposed(uint256 indexed blockId, address indexed assignedProver, uint96 livenessBond, uint256 proverFee, uint256 reward, uint16 minTier, (bytes32,bytes32,bytes32,bytes32,uint64,uint64,uint64,uint32,address,(address,uint96,uint64)[]) meta) +func (_TaikoL1 *TaikoL1Filterer) FilterBlockProposed0(opts *bind.FilterOpts, blockId []*big.Int, assignedProver []common.Address) (*TaikoL1BlockProposed0Iterator, error) { var blockIdRule []interface{} for _, blockIdItem := range blockId { blockIdRule = append(blockIdRule, blockIdItem) } - var proverRule []interface{} - for _, proverItem := range prover { - proverRule = append(proverRule, proverItem) + var assignedProverRule []interface{} + for _, assignedProverItem := range assignedProver { + assignedProverRule = append(assignedProverRule, assignedProverItem) } - logs, sub, err := _TaikoL1.contract.FilterLogs(opts, "BlockProposed0", blockIdRule, proverRule) + logs, sub, err := _TaikoL1.contract.FilterLogs(opts, "BlockProposed0", blockIdRule, assignedProverRule) if err != nil { return nil, err } return &TaikoL1BlockProposed0Iterator{contract: _TaikoL1.contract, event: "BlockProposed0", logs: logs, sub: sub}, nil } -// WatchBlockProposed0 is a free log subscription operation binding the contract event 0xe3713939242e9072c6fbb16f90e98d4b583d66b9fae9208ba2148aa8d6e82af6. +// WatchBlockProposed0 is a free log subscription operation binding the contract event 0x3bc85eed257804b26e2232e767692931a620954ad0ae6ca5c58adb22be553418. // -// Solidity: event BlockProposed(uint256 indexed blockId, address indexed prover, uint256 reward, (uint64,uint64,uint64,bytes32,bytes32,bytes32,uint24,uint24,uint32,address,(address,uint96,uint64)[]) meta) -func (_TaikoL1 *TaikoL1Filterer) WatchBlockProposed0(opts *bind.WatchOpts, sink chan<- *TaikoL1BlockProposed0, blockId []*big.Int, prover []common.Address) (event.Subscription, error) { +// Solidity: event BlockProposed(uint256 indexed blockId, address indexed assignedProver, uint96 livenessBond, uint256 proverFee, uint256 reward, uint16 minTier, (bytes32,bytes32,bytes32,bytes32,uint64,uint64,uint64,uint32,address,(address,uint96,uint64)[]) meta) +func (_TaikoL1 *TaikoL1Filterer) WatchBlockProposed0(opts *bind.WatchOpts, sink chan<- *TaikoL1BlockProposed0, blockId []*big.Int, assignedProver []common.Address) (event.Subscription, error) { var blockIdRule []interface{} for _, blockIdItem := range blockId { blockIdRule = append(blockIdRule, blockIdItem) } - var proverRule []interface{} - for _, proverItem := range prover { - proverRule = append(proverRule, proverItem) + var assignedProverRule []interface{} + for _, assignedProverItem := range assignedProver { + assignedProverRule = append(assignedProverRule, assignedProverItem) } - logs, sub, err := _TaikoL1.contract.WatchLogs(opts, "BlockProposed0", blockIdRule, proverRule) + logs, sub, err := _TaikoL1.contract.WatchLogs(opts, "BlockProposed0", blockIdRule, assignedProverRule) if err != nil { return nil, err } @@ -1398,9 +1495,9 @@ func (_TaikoL1 *TaikoL1Filterer) WatchBlockProposed0(opts *bind.WatchOpts, sink }), nil } -// ParseBlockProposed0 is a log parse operation binding the contract event 0xe3713939242e9072c6fbb16f90e98d4b583d66b9fae9208ba2148aa8d6e82af6. +// ParseBlockProposed0 is a log parse operation binding the contract event 0x3bc85eed257804b26e2232e767692931a620954ad0ae6ca5c58adb22be553418. // -// Solidity: event BlockProposed(uint256 indexed blockId, address indexed prover, uint256 reward, (uint64,uint64,uint64,bytes32,bytes32,bytes32,uint24,uint24,uint32,address,(address,uint96,uint64)[]) meta) +// Solidity: event BlockProposed(uint256 indexed blockId, address indexed assignedProver, uint96 livenessBond, uint256 proverFee, uint256 reward, uint16 minTier, (bytes32,bytes32,bytes32,bytes32,uint64,uint64,uint64,uint32,address,(address,uint96,uint64)[]) meta) func (_TaikoL1 *TaikoL1Filterer) ParseBlockProposed0(log types.Log) (*TaikoL1BlockProposed0, error) { event := new(TaikoL1BlockProposed0) if err := _TaikoL1.contract.UnpackLog(event, "BlockProposed0", log); err != nil { @@ -1410,9 +1507,9 @@ func (_TaikoL1 *TaikoL1Filterer) ParseBlockProposed0(log types.Log) (*TaikoL1Blo return event, nil } -// TaikoL1BlockProvenIterator is returned from FilterBlockProven and is used to iterate over the raw logs and unpacked data for BlockProven events raised by the TaikoL1 contract. -type TaikoL1BlockProvenIterator struct { - Event *TaikoL1BlockProven // Event containing the contract specifics and raw log +// TaikoL1BlockVerifiedIterator is returned from FilterBlockVerified and is used to iterate over the raw logs and unpacked data for BlockVerified events raised by the TaikoL1 contract. +type TaikoL1BlockVerifiedIterator struct { + Event *TaikoL1BlockVerified // Event containing the contract specifics and raw log contract *bind.BoundContract // Generic contract to use for unpacking event data event string // Event name to use for unpacking event data @@ -1426,7 +1523,7 @@ type TaikoL1BlockProvenIterator struct { // Next advances the iterator to the subsequent event, returning whether there // are any more events found. In case of a retrieval or parsing error, false is // returned and Error() can be queried for the exact failure. -func (it *TaikoL1BlockProvenIterator) Next() bool { +func (it *TaikoL1BlockVerifiedIterator) Next() bool { // If the iterator failed, stop iterating if it.fail != nil { return false @@ -1435,7 +1532,7 @@ func (it *TaikoL1BlockProvenIterator) Next() bool { if it.done { select { case log := <-it.logs: - it.Event = new(TaikoL1BlockProven) + it.Event = new(TaikoL1BlockVerified) if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { it.fail = err return false @@ -1450,7 +1547,7 @@ func (it *TaikoL1BlockProvenIterator) Next() bool { // Iterator still in progress, wait for either a data or an error event select { case log := <-it.logs: - it.Event = new(TaikoL1BlockProven) + it.Event = new(TaikoL1BlockVerified) if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { it.fail = err return false @@ -1466,55 +1563,71 @@ func (it *TaikoL1BlockProvenIterator) Next() bool { } // Error returns any retrieval or parsing error occurred during filtering. -func (it *TaikoL1BlockProvenIterator) Error() error { +func (it *TaikoL1BlockVerifiedIterator) Error() error { return it.fail } // Close terminates the iteration process, releasing any pending underlying // resources. -func (it *TaikoL1BlockProvenIterator) Close() error { +func (it *TaikoL1BlockVerifiedIterator) Close() error { it.sub.Unsubscribe() return nil } -// TaikoL1BlockProven represents a BlockProven event raised by the TaikoL1 contract. -type TaikoL1BlockProven struct { - BlockId *big.Int - ParentHash [32]byte - BlockHash [32]byte - SignalRoot [32]byte - Prover common.Address - Raw types.Log // Blockchain specific contextual infos +// TaikoL1BlockVerified represents a BlockVerified event raised by the TaikoL1 contract. +type TaikoL1BlockVerified struct { + BlockId *big.Int + AssignedProver common.Address + Prover common.Address + BlockHash [32]byte + SignalRoot [32]byte + Raw types.Log // Blockchain specific contextual infos } -// FilterBlockProven is a free log retrieval operation binding the contract event 0xd93fde3ea1bb11dcd7a4e66320a05fc5aa63983b6447eff660084c4b1b1b499b. +// FilterBlockVerified is a free log retrieval operation binding the contract event 0x1433d0a0bbdef88a556faadc3c8481900a1bd0941743e979ddbe046e27ce4299. // -// Solidity: event BlockProven(uint256 indexed blockId, bytes32 parentHash, bytes32 blockHash, bytes32 signalRoot, address prover) -func (_TaikoL1 *TaikoL1Filterer) FilterBlockProven(opts *bind.FilterOpts, blockId []*big.Int) (*TaikoL1BlockProvenIterator, error) { +// Solidity: event BlockVerified(uint256 indexed blockId, address indexed assignedProver, address indexed prover, bytes32 blockHash, bytes32 signalRoot) +func (_TaikoL1 *TaikoL1Filterer) FilterBlockVerified(opts *bind.FilterOpts, blockId []*big.Int, assignedProver []common.Address, prover []common.Address) (*TaikoL1BlockVerifiedIterator, error) { var blockIdRule []interface{} for _, blockIdItem := range blockId { blockIdRule = append(blockIdRule, blockIdItem) } + var assignedProverRule []interface{} + for _, assignedProverItem := range assignedProver { + assignedProverRule = append(assignedProverRule, assignedProverItem) + } + var proverRule []interface{} + for _, proverItem := range prover { + proverRule = append(proverRule, proverItem) + } - logs, sub, err := _TaikoL1.contract.FilterLogs(opts, "BlockProven", blockIdRule) + logs, sub, err := _TaikoL1.contract.FilterLogs(opts, "BlockVerified", blockIdRule, assignedProverRule, proverRule) if err != nil { return nil, err } - return &TaikoL1BlockProvenIterator{contract: _TaikoL1.contract, event: "BlockProven", logs: logs, sub: sub}, nil + return &TaikoL1BlockVerifiedIterator{contract: _TaikoL1.contract, event: "BlockVerified", logs: logs, sub: sub}, nil } -// WatchBlockProven is a free log subscription operation binding the contract event 0xd93fde3ea1bb11dcd7a4e66320a05fc5aa63983b6447eff660084c4b1b1b499b. +// WatchBlockVerified is a free log subscription operation binding the contract event 0x1433d0a0bbdef88a556faadc3c8481900a1bd0941743e979ddbe046e27ce4299. // -// Solidity: event BlockProven(uint256 indexed blockId, bytes32 parentHash, bytes32 blockHash, bytes32 signalRoot, address prover) -func (_TaikoL1 *TaikoL1Filterer) WatchBlockProven(opts *bind.WatchOpts, sink chan<- *TaikoL1BlockProven, blockId []*big.Int) (event.Subscription, error) { +// Solidity: event BlockVerified(uint256 indexed blockId, address indexed assignedProver, address indexed prover, bytes32 blockHash, bytes32 signalRoot) +func (_TaikoL1 *TaikoL1Filterer) WatchBlockVerified(opts *bind.WatchOpts, sink chan<- *TaikoL1BlockVerified, blockId []*big.Int, assignedProver []common.Address, prover []common.Address) (event.Subscription, error) { var blockIdRule []interface{} for _, blockIdItem := range blockId { blockIdRule = append(blockIdRule, blockIdItem) } + var assignedProverRule []interface{} + for _, assignedProverItem := range assignedProver { + assignedProverRule = append(assignedProverRule, assignedProverItem) + } + var proverRule []interface{} + for _, proverItem := range prover { + proverRule = append(proverRule, proverItem) + } - logs, sub, err := _TaikoL1.contract.WatchLogs(opts, "BlockProven", blockIdRule) + logs, sub, err := _TaikoL1.contract.WatchLogs(opts, "BlockVerified", blockIdRule, assignedProverRule, proverRule) if err != nil { return nil, err } @@ -1524,8 +1637,8 @@ func (_TaikoL1 *TaikoL1Filterer) WatchBlockProven(opts *bind.WatchOpts, sink cha select { case log := <-logs: // New log arrived, parse the event and forward to the user - event := new(TaikoL1BlockProven) - if err := _TaikoL1.contract.UnpackLog(event, "BlockProven", log); err != nil { + event := new(TaikoL1BlockVerified) + if err := _TaikoL1.contract.UnpackLog(event, "BlockVerified", log); err != nil { return err } event.Raw = log @@ -1546,21 +1659,21 @@ func (_TaikoL1 *TaikoL1Filterer) WatchBlockProven(opts *bind.WatchOpts, sink cha }), nil } -// ParseBlockProven is a log parse operation binding the contract event 0xd93fde3ea1bb11dcd7a4e66320a05fc5aa63983b6447eff660084c4b1b1b499b. +// ParseBlockVerified is a log parse operation binding the contract event 0x1433d0a0bbdef88a556faadc3c8481900a1bd0941743e979ddbe046e27ce4299. // -// Solidity: event BlockProven(uint256 indexed blockId, bytes32 parentHash, bytes32 blockHash, bytes32 signalRoot, address prover) -func (_TaikoL1 *TaikoL1Filterer) ParseBlockProven(log types.Log) (*TaikoL1BlockProven, error) { - event := new(TaikoL1BlockProven) - if err := _TaikoL1.contract.UnpackLog(event, "BlockProven", log); err != nil { +// Solidity: event BlockVerified(uint256 indexed blockId, address indexed assignedProver, address indexed prover, bytes32 blockHash, bytes32 signalRoot) +func (_TaikoL1 *TaikoL1Filterer) ParseBlockVerified(log types.Log) (*TaikoL1BlockVerified, error) { + event := new(TaikoL1BlockVerified) + if err := _TaikoL1.contract.UnpackLog(event, "BlockVerified", log); err != nil { return nil, err } event.Raw = log return event, nil } -// TaikoL1BlockProven0Iterator is returned from FilterBlockProven0 and is used to iterate over the raw logs and unpacked data for BlockProven0 events raised by the TaikoL1 contract. -type TaikoL1BlockProven0Iterator struct { - Event *TaikoL1BlockProven0 // Event containing the contract specifics and raw log +// TaikoL1BlockVerified0Iterator is returned from FilterBlockVerified0 and is used to iterate over the raw logs and unpacked data for BlockVerified0 events raised by the TaikoL1 contract. +type TaikoL1BlockVerified0Iterator struct { + Event *TaikoL1BlockVerified0 // Event containing the contract specifics and raw log contract *bind.BoundContract // Generic contract to use for unpacking event data event string // Event name to use for unpacking event data @@ -1574,7 +1687,7 @@ type TaikoL1BlockProven0Iterator struct { // Next advances the iterator to the subsequent event, returning whether there // are any more events found. In case of a retrieval or parsing error, false is // returned and Error() can be queried for the exact failure. -func (it *TaikoL1BlockProven0Iterator) Next() bool { +func (it *TaikoL1BlockVerified0Iterator) Next() bool { // If the iterator failed, stop iterating if it.fail != nil { return false @@ -1583,7 +1696,7 @@ func (it *TaikoL1BlockProven0Iterator) Next() bool { if it.done { select { case log := <-it.logs: - it.Event = new(TaikoL1BlockProven0) + it.Event = new(TaikoL1BlockVerified0) if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { it.fail = err return false @@ -1598,7 +1711,7 @@ func (it *TaikoL1BlockProven0Iterator) Next() bool { // Iterator still in progress, wait for either a data or an error event select { case log := <-it.logs: - it.Event = new(TaikoL1BlockProven0) + it.Event = new(TaikoL1BlockVerified0) if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { it.fail = err return false @@ -1614,55 +1727,71 @@ func (it *TaikoL1BlockProven0Iterator) Next() bool { } // Error returns any retrieval or parsing error occurred during filtering. -func (it *TaikoL1BlockProven0Iterator) Error() error { +func (it *TaikoL1BlockVerified0Iterator) Error() error { return it.fail } // Close terminates the iteration process, releasing any pending underlying // resources. -func (it *TaikoL1BlockProven0Iterator) Close() error { +func (it *TaikoL1BlockVerified0Iterator) Close() error { it.sub.Unsubscribe() return nil } -// TaikoL1BlockProven0 represents a BlockProven0 event raised by the TaikoL1 contract. -type TaikoL1BlockProven0 struct { - BlockId *big.Int - ParentHash [32]byte - BlockHash [32]byte - SignalRoot [32]byte - Prover common.Address - Raw types.Log // Blockchain specific contextual infos +// TaikoL1BlockVerified0 represents a BlockVerified0 event raised by the TaikoL1 contract. +type TaikoL1BlockVerified0 struct { + BlockId *big.Int + AssignedProver common.Address + Prover common.Address + BlockHash [32]byte + SignalRoot [32]byte + Raw types.Log // Blockchain specific contextual infos } -// FilterBlockProven0 is a free log retrieval operation binding the contract event 0xd93fde3ea1bb11dcd7a4e66320a05fc5aa63983b6447eff660084c4b1b1b499b. +// FilterBlockVerified0 is a free log retrieval operation binding the contract event 0x1433d0a0bbdef88a556faadc3c8481900a1bd0941743e979ddbe046e27ce4299. // -// Solidity: event BlockProven(uint256 indexed blockId, bytes32 parentHash, bytes32 blockHash, bytes32 signalRoot, address prover) -func (_TaikoL1 *TaikoL1Filterer) FilterBlockProven0(opts *bind.FilterOpts, blockId []*big.Int) (*TaikoL1BlockProven0Iterator, error) { +// Solidity: event BlockVerified(uint256 indexed blockId, address indexed assignedProver, address indexed prover, bytes32 blockHash, bytes32 signalRoot) +func (_TaikoL1 *TaikoL1Filterer) FilterBlockVerified0(opts *bind.FilterOpts, blockId []*big.Int, assignedProver []common.Address, prover []common.Address) (*TaikoL1BlockVerified0Iterator, error) { var blockIdRule []interface{} for _, blockIdItem := range blockId { blockIdRule = append(blockIdRule, blockIdItem) } + var assignedProverRule []interface{} + for _, assignedProverItem := range assignedProver { + assignedProverRule = append(assignedProverRule, assignedProverItem) + } + var proverRule []interface{} + for _, proverItem := range prover { + proverRule = append(proverRule, proverItem) + } - logs, sub, err := _TaikoL1.contract.FilterLogs(opts, "BlockProven0", blockIdRule) + logs, sub, err := _TaikoL1.contract.FilterLogs(opts, "BlockVerified0", blockIdRule, assignedProverRule, proverRule) if err != nil { return nil, err } - return &TaikoL1BlockProven0Iterator{contract: _TaikoL1.contract, event: "BlockProven0", logs: logs, sub: sub}, nil + return &TaikoL1BlockVerified0Iterator{contract: _TaikoL1.contract, event: "BlockVerified0", logs: logs, sub: sub}, nil } -// WatchBlockProven0 is a free log subscription operation binding the contract event 0xd93fde3ea1bb11dcd7a4e66320a05fc5aa63983b6447eff660084c4b1b1b499b. +// WatchBlockVerified0 is a free log subscription operation binding the contract event 0x1433d0a0bbdef88a556faadc3c8481900a1bd0941743e979ddbe046e27ce4299. // -// Solidity: event BlockProven(uint256 indexed blockId, bytes32 parentHash, bytes32 blockHash, bytes32 signalRoot, address prover) -func (_TaikoL1 *TaikoL1Filterer) WatchBlockProven0(opts *bind.WatchOpts, sink chan<- *TaikoL1BlockProven0, blockId []*big.Int) (event.Subscription, error) { +// Solidity: event BlockVerified(uint256 indexed blockId, address indexed assignedProver, address indexed prover, bytes32 blockHash, bytes32 signalRoot) +func (_TaikoL1 *TaikoL1Filterer) WatchBlockVerified0(opts *bind.WatchOpts, sink chan<- *TaikoL1BlockVerified0, blockId []*big.Int, assignedProver []common.Address, prover []common.Address) (event.Subscription, error) { var blockIdRule []interface{} for _, blockIdItem := range blockId { blockIdRule = append(blockIdRule, blockIdItem) } + var assignedProverRule []interface{} + for _, assignedProverItem := range assignedProver { + assignedProverRule = append(assignedProverRule, assignedProverItem) + } + var proverRule []interface{} + for _, proverItem := range prover { + proverRule = append(proverRule, proverItem) + } - logs, sub, err := _TaikoL1.contract.WatchLogs(opts, "BlockProven0", blockIdRule) + logs, sub, err := _TaikoL1.contract.WatchLogs(opts, "BlockVerified0", blockIdRule, assignedProverRule, proverRule) if err != nil { return nil, err } @@ -1672,8 +1801,8 @@ func (_TaikoL1 *TaikoL1Filterer) WatchBlockProven0(opts *bind.WatchOpts, sink ch select { case log := <-logs: // New log arrived, parse the event and forward to the user - event := new(TaikoL1BlockProven0) - if err := _TaikoL1.contract.UnpackLog(event, "BlockProven0", log); err != nil { + event := new(TaikoL1BlockVerified0) + if err := _TaikoL1.contract.UnpackLog(event, "BlockVerified0", log); err != nil { return err } event.Raw = log @@ -1694,21 +1823,21 @@ func (_TaikoL1 *TaikoL1Filterer) WatchBlockProven0(opts *bind.WatchOpts, sink ch }), nil } -// ParseBlockProven0 is a log parse operation binding the contract event 0xd93fde3ea1bb11dcd7a4e66320a05fc5aa63983b6447eff660084c4b1b1b499b. +// ParseBlockVerified0 is a log parse operation binding the contract event 0x1433d0a0bbdef88a556faadc3c8481900a1bd0941743e979ddbe046e27ce4299. // -// Solidity: event BlockProven(uint256 indexed blockId, bytes32 parentHash, bytes32 blockHash, bytes32 signalRoot, address prover) -func (_TaikoL1 *TaikoL1Filterer) ParseBlockProven0(log types.Log) (*TaikoL1BlockProven0, error) { - event := new(TaikoL1BlockProven0) - if err := _TaikoL1.contract.UnpackLog(event, "BlockProven0", log); err != nil { +// Solidity: event BlockVerified(uint256 indexed blockId, address indexed assignedProver, address indexed prover, bytes32 blockHash, bytes32 signalRoot) +func (_TaikoL1 *TaikoL1Filterer) ParseBlockVerified0(log types.Log) (*TaikoL1BlockVerified0, error) { + event := new(TaikoL1BlockVerified0) + if err := _TaikoL1.contract.UnpackLog(event, "BlockVerified0", log); err != nil { return nil, err } event.Raw = log return event, nil } -// TaikoL1BlockVerifiedIterator is returned from FilterBlockVerified and is used to iterate over the raw logs and unpacked data for BlockVerified events raised by the TaikoL1 contract. -type TaikoL1BlockVerifiedIterator struct { - Event *TaikoL1BlockVerified // Event containing the contract specifics and raw log +// TaikoL1CrossChainSyncedIterator is returned from FilterCrossChainSynced and is used to iterate over the raw logs and unpacked data for CrossChainSynced events raised by the TaikoL1 contract. +type TaikoL1CrossChainSyncedIterator struct { + Event *TaikoL1CrossChainSynced // Event containing the contract specifics and raw log contract *bind.BoundContract // Generic contract to use for unpacking event data event string // Event name to use for unpacking event data @@ -1722,7 +1851,7 @@ type TaikoL1BlockVerifiedIterator struct { // Next advances the iterator to the subsequent event, returning whether there // are any more events found. In case of a retrieval or parsing error, false is // returned and Error() can be queried for the exact failure. -func (it *TaikoL1BlockVerifiedIterator) Next() bool { +func (it *TaikoL1CrossChainSyncedIterator) Next() bool { // If the iterator failed, stop iterating if it.fail != nil { return false @@ -1731,7 +1860,7 @@ func (it *TaikoL1BlockVerifiedIterator) Next() bool { if it.done { select { case log := <-it.logs: - it.Event = new(TaikoL1BlockVerified) + it.Event = new(TaikoL1CrossChainSynced) if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { it.fail = err return false @@ -1746,7 +1875,7 @@ func (it *TaikoL1BlockVerifiedIterator) Next() bool { // Iterator still in progress, wait for either a data or an error event select { case log := <-it.logs: - it.Event = new(TaikoL1BlockVerified) + it.Event = new(TaikoL1CrossChainSynced) if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { it.fail = err return false @@ -1762,61 +1891,53 @@ func (it *TaikoL1BlockVerifiedIterator) Next() bool { } // Error returns any retrieval or parsing error occurred during filtering. -func (it *TaikoL1BlockVerifiedIterator) Error() error { +func (it *TaikoL1CrossChainSyncedIterator) Error() error { return it.fail } // Close terminates the iteration process, releasing any pending underlying // resources. -func (it *TaikoL1BlockVerifiedIterator) Close() error { +func (it *TaikoL1CrossChainSyncedIterator) Close() error { it.sub.Unsubscribe() return nil } -// TaikoL1BlockVerified represents a BlockVerified event raised by the TaikoL1 contract. -type TaikoL1BlockVerified struct { - BlockId *big.Int - Prover common.Address - BlockHash [32]byte - Raw types.Log // Blockchain specific contextual infos +// TaikoL1CrossChainSynced represents a CrossChainSynced event raised by the TaikoL1 contract. +type TaikoL1CrossChainSynced struct { + SrcHeight uint64 + BlockHash [32]byte + SignalRoot [32]byte + Raw types.Log // Blockchain specific contextual infos } -// FilterBlockVerified is a free log retrieval operation binding the contract event 0xb2fa36cea736414fca28c5aca50d94c59d740984c4c878c3dd8ba26791309b1a. +// FilterCrossChainSynced is a free log retrieval operation binding the contract event 0x004ce985b8852a486571d0545799251fd671adcf33b7854a5f0f6a6a2431a555. // -// Solidity: event BlockVerified(uint256 indexed blockId, address indexed prover, bytes32 blockHash) -func (_TaikoL1 *TaikoL1Filterer) FilterBlockVerified(opts *bind.FilterOpts, blockId []*big.Int, prover []common.Address) (*TaikoL1BlockVerifiedIterator, error) { +// Solidity: event CrossChainSynced(uint64 indexed srcHeight, bytes32 blockHash, bytes32 signalRoot) +func (_TaikoL1 *TaikoL1Filterer) FilterCrossChainSynced(opts *bind.FilterOpts, srcHeight []uint64) (*TaikoL1CrossChainSyncedIterator, error) { - var blockIdRule []interface{} - for _, blockIdItem := range blockId { - blockIdRule = append(blockIdRule, blockIdItem) - } - var proverRule []interface{} - for _, proverItem := range prover { - proverRule = append(proverRule, proverItem) + var srcHeightRule []interface{} + for _, srcHeightItem := range srcHeight { + srcHeightRule = append(srcHeightRule, srcHeightItem) } - logs, sub, err := _TaikoL1.contract.FilterLogs(opts, "BlockVerified", blockIdRule, proverRule) + logs, sub, err := _TaikoL1.contract.FilterLogs(opts, "CrossChainSynced", srcHeightRule) if err != nil { return nil, err } - return &TaikoL1BlockVerifiedIterator{contract: _TaikoL1.contract, event: "BlockVerified", logs: logs, sub: sub}, nil + return &TaikoL1CrossChainSyncedIterator{contract: _TaikoL1.contract, event: "CrossChainSynced", logs: logs, sub: sub}, nil } -// WatchBlockVerified is a free log subscription operation binding the contract event 0xb2fa36cea736414fca28c5aca50d94c59d740984c4c878c3dd8ba26791309b1a. +// WatchCrossChainSynced is a free log subscription operation binding the contract event 0x004ce985b8852a486571d0545799251fd671adcf33b7854a5f0f6a6a2431a555. // -// Solidity: event BlockVerified(uint256 indexed blockId, address indexed prover, bytes32 blockHash) -func (_TaikoL1 *TaikoL1Filterer) WatchBlockVerified(opts *bind.WatchOpts, sink chan<- *TaikoL1BlockVerified, blockId []*big.Int, prover []common.Address) (event.Subscription, error) { +// Solidity: event CrossChainSynced(uint64 indexed srcHeight, bytes32 blockHash, bytes32 signalRoot) +func (_TaikoL1 *TaikoL1Filterer) WatchCrossChainSynced(opts *bind.WatchOpts, sink chan<- *TaikoL1CrossChainSynced, srcHeight []uint64) (event.Subscription, error) { - var blockIdRule []interface{} - for _, blockIdItem := range blockId { - blockIdRule = append(blockIdRule, blockIdItem) - } - var proverRule []interface{} - for _, proverItem := range prover { - proverRule = append(proverRule, proverItem) + var srcHeightRule []interface{} + for _, srcHeightItem := range srcHeight { + srcHeightRule = append(srcHeightRule, srcHeightItem) } - logs, sub, err := _TaikoL1.contract.WatchLogs(opts, "BlockVerified", blockIdRule, proverRule) + logs, sub, err := _TaikoL1.contract.WatchLogs(opts, "CrossChainSynced", srcHeightRule) if err != nil { return nil, err } @@ -1826,8 +1947,8 @@ func (_TaikoL1 *TaikoL1Filterer) WatchBlockVerified(opts *bind.WatchOpts, sink c select { case log := <-logs: // New log arrived, parse the event and forward to the user - event := new(TaikoL1BlockVerified) - if err := _TaikoL1.contract.UnpackLog(event, "BlockVerified", log); err != nil { + event := new(TaikoL1CrossChainSynced) + if err := _TaikoL1.contract.UnpackLog(event, "CrossChainSynced", log); err != nil { return err } event.Raw = log @@ -1848,21 +1969,21 @@ func (_TaikoL1 *TaikoL1Filterer) WatchBlockVerified(opts *bind.WatchOpts, sink c }), nil } -// ParseBlockVerified is a log parse operation binding the contract event 0xb2fa36cea736414fca28c5aca50d94c59d740984c4c878c3dd8ba26791309b1a. +// ParseCrossChainSynced is a log parse operation binding the contract event 0x004ce985b8852a486571d0545799251fd671adcf33b7854a5f0f6a6a2431a555. // -// Solidity: event BlockVerified(uint256 indexed blockId, address indexed prover, bytes32 blockHash) -func (_TaikoL1 *TaikoL1Filterer) ParseBlockVerified(log types.Log) (*TaikoL1BlockVerified, error) { - event := new(TaikoL1BlockVerified) - if err := _TaikoL1.contract.UnpackLog(event, "BlockVerified", log); err != nil { +// Solidity: event CrossChainSynced(uint64 indexed srcHeight, bytes32 blockHash, bytes32 signalRoot) +func (_TaikoL1 *TaikoL1Filterer) ParseCrossChainSynced(log types.Log) (*TaikoL1CrossChainSynced, error) { + event := new(TaikoL1CrossChainSynced) + if err := _TaikoL1.contract.UnpackLog(event, "CrossChainSynced", log); err != nil { return nil, err } event.Raw = log return event, nil } -// TaikoL1BlockVerified0Iterator is returned from FilterBlockVerified0 and is used to iterate over the raw logs and unpacked data for BlockVerified0 events raised by the TaikoL1 contract. -type TaikoL1BlockVerified0Iterator struct { - Event *TaikoL1BlockVerified0 // Event containing the contract specifics and raw log +// TaikoL1CrossChainSynced0Iterator is returned from FilterCrossChainSynced0 and is used to iterate over the raw logs and unpacked data for CrossChainSynced0 events raised by the TaikoL1 contract. +type TaikoL1CrossChainSynced0Iterator struct { + Event *TaikoL1CrossChainSynced0 // Event containing the contract specifics and raw log contract *bind.BoundContract // Generic contract to use for unpacking event data event string // Event name to use for unpacking event data @@ -1876,7 +1997,7 @@ type TaikoL1BlockVerified0Iterator struct { // Next advances the iterator to the subsequent event, returning whether there // are any more events found. In case of a retrieval or parsing error, false is // returned and Error() can be queried for the exact failure. -func (it *TaikoL1BlockVerified0Iterator) Next() bool { +func (it *TaikoL1CrossChainSynced0Iterator) Next() bool { // If the iterator failed, stop iterating if it.fail != nil { return false @@ -1885,7 +2006,7 @@ func (it *TaikoL1BlockVerified0Iterator) Next() bool { if it.done { select { case log := <-it.logs: - it.Event = new(TaikoL1BlockVerified0) + it.Event = new(TaikoL1CrossChainSynced0) if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { it.fail = err return false @@ -1900,7 +2021,7 @@ func (it *TaikoL1BlockVerified0Iterator) Next() bool { // Iterator still in progress, wait for either a data or an error event select { case log := <-it.logs: - it.Event = new(TaikoL1BlockVerified0) + it.Event = new(TaikoL1CrossChainSynced0) if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { it.fail = err return false @@ -1916,61 +2037,53 @@ func (it *TaikoL1BlockVerified0Iterator) Next() bool { } // Error returns any retrieval or parsing error occurred during filtering. -func (it *TaikoL1BlockVerified0Iterator) Error() error { +func (it *TaikoL1CrossChainSynced0Iterator) Error() error { return it.fail } // Close terminates the iteration process, releasing any pending underlying // resources. -func (it *TaikoL1BlockVerified0Iterator) Close() error { +func (it *TaikoL1CrossChainSynced0Iterator) Close() error { it.sub.Unsubscribe() return nil } -// TaikoL1BlockVerified0 represents a BlockVerified0 event raised by the TaikoL1 contract. -type TaikoL1BlockVerified0 struct { - BlockId *big.Int - Prover common.Address - BlockHash [32]byte - Raw types.Log // Blockchain specific contextual infos +// TaikoL1CrossChainSynced0 represents a CrossChainSynced0 event raised by the TaikoL1 contract. +type TaikoL1CrossChainSynced0 struct { + SrcHeight uint64 + BlockHash [32]byte + SignalRoot [32]byte + Raw types.Log // Blockchain specific contextual infos } -// FilterBlockVerified0 is a free log retrieval operation binding the contract event 0xb2fa36cea736414fca28c5aca50d94c59d740984c4c878c3dd8ba26791309b1a. +// FilterCrossChainSynced0 is a free log retrieval operation binding the contract event 0x004ce985b8852a486571d0545799251fd671adcf33b7854a5f0f6a6a2431a555. // -// Solidity: event BlockVerified(uint256 indexed blockId, address indexed prover, bytes32 blockHash) -func (_TaikoL1 *TaikoL1Filterer) FilterBlockVerified0(opts *bind.FilterOpts, blockId []*big.Int, prover []common.Address) (*TaikoL1BlockVerified0Iterator, error) { +// Solidity: event CrossChainSynced(uint64 indexed srcHeight, bytes32 blockHash, bytes32 signalRoot) +func (_TaikoL1 *TaikoL1Filterer) FilterCrossChainSynced0(opts *bind.FilterOpts, srcHeight []uint64) (*TaikoL1CrossChainSynced0Iterator, error) { - var blockIdRule []interface{} - for _, blockIdItem := range blockId { - blockIdRule = append(blockIdRule, blockIdItem) - } - var proverRule []interface{} - for _, proverItem := range prover { - proverRule = append(proverRule, proverItem) + var srcHeightRule []interface{} + for _, srcHeightItem := range srcHeight { + srcHeightRule = append(srcHeightRule, srcHeightItem) } - logs, sub, err := _TaikoL1.contract.FilterLogs(opts, "BlockVerified0", blockIdRule, proverRule) + logs, sub, err := _TaikoL1.contract.FilterLogs(opts, "CrossChainSynced0", srcHeightRule) if err != nil { return nil, err } - return &TaikoL1BlockVerified0Iterator{contract: _TaikoL1.contract, event: "BlockVerified0", logs: logs, sub: sub}, nil + return &TaikoL1CrossChainSynced0Iterator{contract: _TaikoL1.contract, event: "CrossChainSynced0", logs: logs, sub: sub}, nil } -// WatchBlockVerified0 is a free log subscription operation binding the contract event 0xb2fa36cea736414fca28c5aca50d94c59d740984c4c878c3dd8ba26791309b1a. +// WatchCrossChainSynced0 is a free log subscription operation binding the contract event 0x004ce985b8852a486571d0545799251fd671adcf33b7854a5f0f6a6a2431a555. // -// Solidity: event BlockVerified(uint256 indexed blockId, address indexed prover, bytes32 blockHash) -func (_TaikoL1 *TaikoL1Filterer) WatchBlockVerified0(opts *bind.WatchOpts, sink chan<- *TaikoL1BlockVerified0, blockId []*big.Int, prover []common.Address) (event.Subscription, error) { +// Solidity: event CrossChainSynced(uint64 indexed srcHeight, bytes32 blockHash, bytes32 signalRoot) +func (_TaikoL1 *TaikoL1Filterer) WatchCrossChainSynced0(opts *bind.WatchOpts, sink chan<- *TaikoL1CrossChainSynced0, srcHeight []uint64) (event.Subscription, error) { - var blockIdRule []interface{} - for _, blockIdItem := range blockId { - blockIdRule = append(blockIdRule, blockIdItem) - } - var proverRule []interface{} - for _, proverItem := range prover { - proverRule = append(proverRule, proverItem) + var srcHeightRule []interface{} + for _, srcHeightItem := range srcHeight { + srcHeightRule = append(srcHeightRule, srcHeightItem) } - logs, sub, err := _TaikoL1.contract.WatchLogs(opts, "BlockVerified0", blockIdRule, proverRule) + logs, sub, err := _TaikoL1.contract.WatchLogs(opts, "CrossChainSynced0", srcHeightRule) if err != nil { return nil, err } @@ -1980,8 +2093,8 @@ func (_TaikoL1 *TaikoL1Filterer) WatchBlockVerified0(opts *bind.WatchOpts, sink select { case log := <-logs: // New log arrived, parse the event and forward to the user - event := new(TaikoL1BlockVerified0) - if err := _TaikoL1.contract.UnpackLog(event, "BlockVerified0", log); err != nil { + event := new(TaikoL1CrossChainSynced0) + if err := _TaikoL1.contract.UnpackLog(event, "CrossChainSynced0", log); err != nil { return err } event.Raw = log @@ -2002,21 +2115,21 @@ func (_TaikoL1 *TaikoL1Filterer) WatchBlockVerified0(opts *bind.WatchOpts, sink }), nil } -// ParseBlockVerified0 is a log parse operation binding the contract event 0xb2fa36cea736414fca28c5aca50d94c59d740984c4c878c3dd8ba26791309b1a. +// ParseCrossChainSynced0 is a log parse operation binding the contract event 0x004ce985b8852a486571d0545799251fd671adcf33b7854a5f0f6a6a2431a555. // -// Solidity: event BlockVerified(uint256 indexed blockId, address indexed prover, bytes32 blockHash) -func (_TaikoL1 *TaikoL1Filterer) ParseBlockVerified0(log types.Log) (*TaikoL1BlockVerified0, error) { - event := new(TaikoL1BlockVerified0) - if err := _TaikoL1.contract.UnpackLog(event, "BlockVerified0", log); err != nil { +// Solidity: event CrossChainSynced(uint64 indexed srcHeight, bytes32 blockHash, bytes32 signalRoot) +func (_TaikoL1 *TaikoL1Filterer) ParseCrossChainSynced0(log types.Log) (*TaikoL1CrossChainSynced0, error) { + event := new(TaikoL1CrossChainSynced0) + if err := _TaikoL1.contract.UnpackLog(event, "CrossChainSynced0", log); err != nil { return nil, err } event.Raw = log return event, nil } -// TaikoL1BondReceivedIterator is returned from FilterBondReceived and is used to iterate over the raw logs and unpacked data for BondReceived events raised by the TaikoL1 contract. -type TaikoL1BondReceivedIterator struct { - Event *TaikoL1BondReceived // Event containing the contract specifics and raw log +// TaikoL1EthDepositedIterator is returned from FilterEthDeposited and is used to iterate over the raw logs and unpacked data for EthDeposited events raised by the TaikoL1 contract. +type TaikoL1EthDepositedIterator struct { + Event *TaikoL1EthDeposited // Event containing the contract specifics and raw log contract *bind.BoundContract // Generic contract to use for unpacking event data event string // Event name to use for unpacking event data @@ -2030,7 +2143,7 @@ type TaikoL1BondReceivedIterator struct { // Next advances the iterator to the subsequent event, returning whether there // are any more events found. In case of a retrieval or parsing error, false is // returned and Error() can be queried for the exact failure. -func (it *TaikoL1BondReceivedIterator) Next() bool { +func (it *TaikoL1EthDepositedIterator) Next() bool { // If the iterator failed, stop iterating if it.fail != nil { return false @@ -2039,7 +2152,7 @@ func (it *TaikoL1BondReceivedIterator) Next() bool { if it.done { select { case log := <-it.logs: - it.Event = new(TaikoL1BondReceived) + it.Event = new(TaikoL1EthDeposited) if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { it.fail = err return false @@ -2054,7 +2167,7 @@ func (it *TaikoL1BondReceivedIterator) Next() bool { // Iterator still in progress, wait for either a data or an error event select { case log := <-it.logs: - it.Event = new(TaikoL1BondReceived) + it.Event = new(TaikoL1EthDeposited) if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { it.fail = err return false @@ -2070,53 +2183,41 @@ func (it *TaikoL1BondReceivedIterator) Next() bool { } // Error returns any retrieval or parsing error occurred during filtering. -func (it *TaikoL1BondReceivedIterator) Error() error { +func (it *TaikoL1EthDepositedIterator) Error() error { return it.fail } // Close terminates the iteration process, releasing any pending underlying // resources. -func (it *TaikoL1BondReceivedIterator) Close() error { +func (it *TaikoL1EthDepositedIterator) Close() error { it.sub.Unsubscribe() return nil } -// TaikoL1BondReceived represents a BondReceived event raised by the TaikoL1 contract. -type TaikoL1BondReceived struct { - From common.Address - BlockId uint64 - Bond *big.Int +// TaikoL1EthDeposited represents a EthDeposited event raised by the TaikoL1 contract. +type TaikoL1EthDeposited struct { + Deposit TaikoDataEthDeposit Raw types.Log // Blockchain specific contextual infos } -// FilterBondReceived is a free log retrieval operation binding the contract event 0xbb2d4a4c4a679d81940f242e401d2b2cc3383dbcb0ae798c14bd7905b1f6cae2. +// FilterEthDeposited is a free log retrieval operation binding the contract event 0x7120a3b075ad25974c5eed76dedb3a217c76c9c6d1f1e201caeba9b89de9a9d9. // -// Solidity: event BondReceived(address indexed from, uint64 blockId, uint256 bond) -func (_TaikoL1 *TaikoL1Filterer) FilterBondReceived(opts *bind.FilterOpts, from []common.Address) (*TaikoL1BondReceivedIterator, error) { - - var fromRule []interface{} - for _, fromItem := range from { - fromRule = append(fromRule, fromItem) - } +// Solidity: event EthDeposited((address,uint96,uint64) deposit) +func (_TaikoL1 *TaikoL1Filterer) FilterEthDeposited(opts *bind.FilterOpts) (*TaikoL1EthDepositedIterator, error) { - logs, sub, err := _TaikoL1.contract.FilterLogs(opts, "BondReceived", fromRule) + logs, sub, err := _TaikoL1.contract.FilterLogs(opts, "EthDeposited") if err != nil { return nil, err } - return &TaikoL1BondReceivedIterator{contract: _TaikoL1.contract, event: "BondReceived", logs: logs, sub: sub}, nil + return &TaikoL1EthDepositedIterator{contract: _TaikoL1.contract, event: "EthDeposited", logs: logs, sub: sub}, nil } -// WatchBondReceived is a free log subscription operation binding the contract event 0xbb2d4a4c4a679d81940f242e401d2b2cc3383dbcb0ae798c14bd7905b1f6cae2. +// WatchEthDeposited is a free log subscription operation binding the contract event 0x7120a3b075ad25974c5eed76dedb3a217c76c9c6d1f1e201caeba9b89de9a9d9. // -// Solidity: event BondReceived(address indexed from, uint64 blockId, uint256 bond) -func (_TaikoL1 *TaikoL1Filterer) WatchBondReceived(opts *bind.WatchOpts, sink chan<- *TaikoL1BondReceived, from []common.Address) (event.Subscription, error) { - - var fromRule []interface{} - for _, fromItem := range from { - fromRule = append(fromRule, fromItem) - } +// Solidity: event EthDeposited((address,uint96,uint64) deposit) +func (_TaikoL1 *TaikoL1Filterer) WatchEthDeposited(opts *bind.WatchOpts, sink chan<- *TaikoL1EthDeposited) (event.Subscription, error) { - logs, sub, err := _TaikoL1.contract.WatchLogs(opts, "BondReceived", fromRule) + logs, sub, err := _TaikoL1.contract.WatchLogs(opts, "EthDeposited") if err != nil { return nil, err } @@ -2126,8 +2227,8 @@ func (_TaikoL1 *TaikoL1Filterer) WatchBondReceived(opts *bind.WatchOpts, sink ch select { case log := <-logs: // New log arrived, parse the event and forward to the user - event := new(TaikoL1BondReceived) - if err := _TaikoL1.contract.UnpackLog(event, "BondReceived", log); err != nil { + event := new(TaikoL1EthDeposited) + if err := _TaikoL1.contract.UnpackLog(event, "EthDeposited", log); err != nil { return err } event.Raw = log @@ -2148,21 +2249,21 @@ func (_TaikoL1 *TaikoL1Filterer) WatchBondReceived(opts *bind.WatchOpts, sink ch }), nil } -// ParseBondReceived is a log parse operation binding the contract event 0xbb2d4a4c4a679d81940f242e401d2b2cc3383dbcb0ae798c14bd7905b1f6cae2. +// ParseEthDeposited is a log parse operation binding the contract event 0x7120a3b075ad25974c5eed76dedb3a217c76c9c6d1f1e201caeba9b89de9a9d9. // -// Solidity: event BondReceived(address indexed from, uint64 blockId, uint256 bond) -func (_TaikoL1 *TaikoL1Filterer) ParseBondReceived(log types.Log) (*TaikoL1BondReceived, error) { - event := new(TaikoL1BondReceived) - if err := _TaikoL1.contract.UnpackLog(event, "BondReceived", log); err != nil { +// Solidity: event EthDeposited((address,uint96,uint64) deposit) +func (_TaikoL1 *TaikoL1Filterer) ParseEthDeposited(log types.Log) (*TaikoL1EthDeposited, error) { + event := new(TaikoL1EthDeposited) + if err := _TaikoL1.contract.UnpackLog(event, "EthDeposited", log); err != nil { return nil, err } event.Raw = log return event, nil } -// TaikoL1BondReceived0Iterator is returned from FilterBondReceived0 and is used to iterate over the raw logs and unpacked data for BondReceived0 events raised by the TaikoL1 contract. -type TaikoL1BondReceived0Iterator struct { - Event *TaikoL1BondReceived0 // Event containing the contract specifics and raw log +// TaikoL1EthDeposited0Iterator is returned from FilterEthDeposited0 and is used to iterate over the raw logs and unpacked data for EthDeposited0 events raised by the TaikoL1 contract. +type TaikoL1EthDeposited0Iterator struct { + Event *TaikoL1EthDeposited0 // Event containing the contract specifics and raw log contract *bind.BoundContract // Generic contract to use for unpacking event data event string // Event name to use for unpacking event data @@ -2176,7 +2277,7 @@ type TaikoL1BondReceived0Iterator struct { // Next advances the iterator to the subsequent event, returning whether there // are any more events found. In case of a retrieval or parsing error, false is // returned and Error() can be queried for the exact failure. -func (it *TaikoL1BondReceived0Iterator) Next() bool { +func (it *TaikoL1EthDeposited0Iterator) Next() bool { // If the iterator failed, stop iterating if it.fail != nil { return false @@ -2185,7 +2286,7 @@ func (it *TaikoL1BondReceived0Iterator) Next() bool { if it.done { select { case log := <-it.logs: - it.Event = new(TaikoL1BondReceived0) + it.Event = new(TaikoL1EthDeposited0) if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { it.fail = err return false @@ -2200,7 +2301,7 @@ func (it *TaikoL1BondReceived0Iterator) Next() bool { // Iterator still in progress, wait for either a data or an error event select { case log := <-it.logs: - it.Event = new(TaikoL1BondReceived0) + it.Event = new(TaikoL1EthDeposited0) if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { it.fail = err return false @@ -2216,53 +2317,41 @@ func (it *TaikoL1BondReceived0Iterator) Next() bool { } // Error returns any retrieval or parsing error occurred during filtering. -func (it *TaikoL1BondReceived0Iterator) Error() error { +func (it *TaikoL1EthDeposited0Iterator) Error() error { return it.fail } // Close terminates the iteration process, releasing any pending underlying // resources. -func (it *TaikoL1BondReceived0Iterator) Close() error { +func (it *TaikoL1EthDeposited0Iterator) Close() error { it.sub.Unsubscribe() return nil } -// TaikoL1BondReceived0 represents a BondReceived0 event raised by the TaikoL1 contract. -type TaikoL1BondReceived0 struct { - From common.Address - BlockId uint64 - Bond *big.Int +// TaikoL1EthDeposited0 represents a EthDeposited0 event raised by the TaikoL1 contract. +type TaikoL1EthDeposited0 struct { + Deposit TaikoDataEthDeposit Raw types.Log // Blockchain specific contextual infos } -// FilterBondReceived0 is a free log retrieval operation binding the contract event 0xbb2d4a4c4a679d81940f242e401d2b2cc3383dbcb0ae798c14bd7905b1f6cae2. +// FilterEthDeposited0 is a free log retrieval operation binding the contract event 0x7120a3b075ad25974c5eed76dedb3a217c76c9c6d1f1e201caeba9b89de9a9d9. // -// Solidity: event BondReceived(address indexed from, uint64 blockId, uint256 bond) -func (_TaikoL1 *TaikoL1Filterer) FilterBondReceived0(opts *bind.FilterOpts, from []common.Address) (*TaikoL1BondReceived0Iterator, error) { - - var fromRule []interface{} - for _, fromItem := range from { - fromRule = append(fromRule, fromItem) - } +// Solidity: event EthDeposited((address,uint96,uint64) deposit) +func (_TaikoL1 *TaikoL1Filterer) FilterEthDeposited0(opts *bind.FilterOpts) (*TaikoL1EthDeposited0Iterator, error) { - logs, sub, err := _TaikoL1.contract.FilterLogs(opts, "BondReceived0", fromRule) + logs, sub, err := _TaikoL1.contract.FilterLogs(opts, "EthDeposited0") if err != nil { return nil, err } - return &TaikoL1BondReceived0Iterator{contract: _TaikoL1.contract, event: "BondReceived0", logs: logs, sub: sub}, nil + return &TaikoL1EthDeposited0Iterator{contract: _TaikoL1.contract, event: "EthDeposited0", logs: logs, sub: sub}, nil } -// WatchBondReceived0 is a free log subscription operation binding the contract event 0xbb2d4a4c4a679d81940f242e401d2b2cc3383dbcb0ae798c14bd7905b1f6cae2. +// WatchEthDeposited0 is a free log subscription operation binding the contract event 0x7120a3b075ad25974c5eed76dedb3a217c76c9c6d1f1e201caeba9b89de9a9d9. // -// Solidity: event BondReceived(address indexed from, uint64 blockId, uint256 bond) -func (_TaikoL1 *TaikoL1Filterer) WatchBondReceived0(opts *bind.WatchOpts, sink chan<- *TaikoL1BondReceived0, from []common.Address) (event.Subscription, error) { - - var fromRule []interface{} - for _, fromItem := range from { - fromRule = append(fromRule, fromItem) - } +// Solidity: event EthDeposited((address,uint96,uint64) deposit) +func (_TaikoL1 *TaikoL1Filterer) WatchEthDeposited0(opts *bind.WatchOpts, sink chan<- *TaikoL1EthDeposited0) (event.Subscription, error) { - logs, sub, err := _TaikoL1.contract.WatchLogs(opts, "BondReceived0", fromRule) + logs, sub, err := _TaikoL1.contract.WatchLogs(opts, "EthDeposited0") if err != nil { return nil, err } @@ -2272,8 +2361,8 @@ func (_TaikoL1 *TaikoL1Filterer) WatchBondReceived0(opts *bind.WatchOpts, sink c select { case log := <-logs: // New log arrived, parse the event and forward to the user - event := new(TaikoL1BondReceived0) - if err := _TaikoL1.contract.UnpackLog(event, "BondReceived0", log); err != nil { + event := new(TaikoL1EthDeposited0) + if err := _TaikoL1.contract.UnpackLog(event, "EthDeposited0", log); err != nil { return err } event.Raw = log @@ -2294,21 +2383,21 @@ func (_TaikoL1 *TaikoL1Filterer) WatchBondReceived0(opts *bind.WatchOpts, sink c }), nil } -// ParseBondReceived0 is a log parse operation binding the contract event 0xbb2d4a4c4a679d81940f242e401d2b2cc3383dbcb0ae798c14bd7905b1f6cae2. +// ParseEthDeposited0 is a log parse operation binding the contract event 0x7120a3b075ad25974c5eed76dedb3a217c76c9c6d1f1e201caeba9b89de9a9d9. // -// Solidity: event BondReceived(address indexed from, uint64 blockId, uint256 bond) -func (_TaikoL1 *TaikoL1Filterer) ParseBondReceived0(log types.Log) (*TaikoL1BondReceived0, error) { - event := new(TaikoL1BondReceived0) - if err := _TaikoL1.contract.UnpackLog(event, "BondReceived0", log); err != nil { +// Solidity: event EthDeposited((address,uint96,uint64) deposit) +func (_TaikoL1 *TaikoL1Filterer) ParseEthDeposited0(log types.Log) (*TaikoL1EthDeposited0, error) { + event := new(TaikoL1EthDeposited0) + if err := _TaikoL1.contract.UnpackLog(event, "EthDeposited0", log); err != nil { return nil, err } event.Raw = log return event, nil } -// TaikoL1BondReturnedIterator is returned from FilterBondReturned and is used to iterate over the raw logs and unpacked data for BondReturned events raised by the TaikoL1 contract. -type TaikoL1BondReturnedIterator struct { - Event *TaikoL1BondReturned // Event containing the contract specifics and raw log +// TaikoL1InitializedIterator is returned from FilterInitialized and is used to iterate over the raw logs and unpacked data for Initialized events raised by the TaikoL1 contract. +type TaikoL1InitializedIterator struct { + Event *TaikoL1Initialized // Event containing the contract specifics and raw log contract *bind.BoundContract // Generic contract to use for unpacking event data event string // Event name to use for unpacking event data @@ -2322,7 +2411,7 @@ type TaikoL1BondReturnedIterator struct { // Next advances the iterator to the subsequent event, returning whether there // are any more events found. In case of a retrieval or parsing error, false is // returned and Error() can be queried for the exact failure. -func (it *TaikoL1BondReturnedIterator) Next() bool { +func (it *TaikoL1InitializedIterator) Next() bool { // If the iterator failed, stop iterating if it.fail != nil { return false @@ -2331,7 +2420,7 @@ func (it *TaikoL1BondReturnedIterator) Next() bool { if it.done { select { case log := <-it.logs: - it.Event = new(TaikoL1BondReturned) + it.Event = new(TaikoL1Initialized) if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { it.fail = err return false @@ -2346,7 +2435,7 @@ func (it *TaikoL1BondReturnedIterator) Next() bool { // Iterator still in progress, wait for either a data or an error event select { case log := <-it.logs: - it.Event = new(TaikoL1BondReturned) + it.Event = new(TaikoL1Initialized) if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { it.fail = err return false @@ -2362,53 +2451,41 @@ func (it *TaikoL1BondReturnedIterator) Next() bool { } // Error returns any retrieval or parsing error occurred during filtering. -func (it *TaikoL1BondReturnedIterator) Error() error { +func (it *TaikoL1InitializedIterator) Error() error { return it.fail } // Close terminates the iteration process, releasing any pending underlying // resources. -func (it *TaikoL1BondReturnedIterator) Close() error { +func (it *TaikoL1InitializedIterator) Close() error { it.sub.Unsubscribe() return nil } -// TaikoL1BondReturned represents a BondReturned event raised by the TaikoL1 contract. -type TaikoL1BondReturned struct { - To common.Address - BlockId uint64 - Bond *big.Int +// TaikoL1Initialized represents a Initialized event raised by the TaikoL1 contract. +type TaikoL1Initialized struct { + Version uint8 Raw types.Log // Blockchain specific contextual infos } -// FilterBondReturned is a free log retrieval operation binding the contract event 0xb14706301de9c688dd040a2ac19fc629179149bb39b0765094ef833e7bd907b2. +// FilterInitialized is a free log retrieval operation binding the contract event 0x7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb3847402498. // -// Solidity: event BondReturned(address indexed to, uint64 blockId, uint256 bond) -func (_TaikoL1 *TaikoL1Filterer) FilterBondReturned(opts *bind.FilterOpts, to []common.Address) (*TaikoL1BondReturnedIterator, error) { - - var toRule []interface{} - for _, toItem := range to { - toRule = append(toRule, toItem) - } +// Solidity: event Initialized(uint8 version) +func (_TaikoL1 *TaikoL1Filterer) FilterInitialized(opts *bind.FilterOpts) (*TaikoL1InitializedIterator, error) { - logs, sub, err := _TaikoL1.contract.FilterLogs(opts, "BondReturned", toRule) + logs, sub, err := _TaikoL1.contract.FilterLogs(opts, "Initialized") if err != nil { return nil, err } - return &TaikoL1BondReturnedIterator{contract: _TaikoL1.contract, event: "BondReturned", logs: logs, sub: sub}, nil + return &TaikoL1InitializedIterator{contract: _TaikoL1.contract, event: "Initialized", logs: logs, sub: sub}, nil } -// WatchBondReturned is a free log subscription operation binding the contract event 0xb14706301de9c688dd040a2ac19fc629179149bb39b0765094ef833e7bd907b2. +// WatchInitialized is a free log subscription operation binding the contract event 0x7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb3847402498. // -// Solidity: event BondReturned(address indexed to, uint64 blockId, uint256 bond) -func (_TaikoL1 *TaikoL1Filterer) WatchBondReturned(opts *bind.WatchOpts, sink chan<- *TaikoL1BondReturned, to []common.Address) (event.Subscription, error) { - - var toRule []interface{} - for _, toItem := range to { - toRule = append(toRule, toItem) - } +// Solidity: event Initialized(uint8 version) +func (_TaikoL1 *TaikoL1Filterer) WatchInitialized(opts *bind.WatchOpts, sink chan<- *TaikoL1Initialized) (event.Subscription, error) { - logs, sub, err := _TaikoL1.contract.WatchLogs(opts, "BondReturned", toRule) + logs, sub, err := _TaikoL1.contract.WatchLogs(opts, "Initialized") if err != nil { return nil, err } @@ -2418,8 +2495,8 @@ func (_TaikoL1 *TaikoL1Filterer) WatchBondReturned(opts *bind.WatchOpts, sink ch select { case log := <-logs: // New log arrived, parse the event and forward to the user - event := new(TaikoL1BondReturned) - if err := _TaikoL1.contract.UnpackLog(event, "BondReturned", log); err != nil { + event := new(TaikoL1Initialized) + if err := _TaikoL1.contract.UnpackLog(event, "Initialized", log); err != nil { return err } event.Raw = log @@ -2440,21 +2517,21 @@ func (_TaikoL1 *TaikoL1Filterer) WatchBondReturned(opts *bind.WatchOpts, sink ch }), nil } -// ParseBondReturned is a log parse operation binding the contract event 0xb14706301de9c688dd040a2ac19fc629179149bb39b0765094ef833e7bd907b2. +// ParseInitialized is a log parse operation binding the contract event 0x7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb3847402498. // -// Solidity: event BondReturned(address indexed to, uint64 blockId, uint256 bond) -func (_TaikoL1 *TaikoL1Filterer) ParseBondReturned(log types.Log) (*TaikoL1BondReturned, error) { - event := new(TaikoL1BondReturned) - if err := _TaikoL1.contract.UnpackLog(event, "BondReturned", log); err != nil { +// Solidity: event Initialized(uint8 version) +func (_TaikoL1 *TaikoL1Filterer) ParseInitialized(log types.Log) (*TaikoL1Initialized, error) { + event := new(TaikoL1Initialized) + if err := _TaikoL1.contract.UnpackLog(event, "Initialized", log); err != nil { return nil, err } event.Raw = log return event, nil } -// TaikoL1BondReturned0Iterator is returned from FilterBondReturned0 and is used to iterate over the raw logs and unpacked data for BondReturned0 events raised by the TaikoL1 contract. -type TaikoL1BondReturned0Iterator struct { - Event *TaikoL1BondReturned0 // Event containing the contract specifics and raw log +// TaikoL1OwnershipTransferredIterator is returned from FilterOwnershipTransferred and is used to iterate over the raw logs and unpacked data for OwnershipTransferred events raised by the TaikoL1 contract. +type TaikoL1OwnershipTransferredIterator struct { + Event *TaikoL1OwnershipTransferred // Event containing the contract specifics and raw log contract *bind.BoundContract // Generic contract to use for unpacking event data event string // Event name to use for unpacking event data @@ -2468,7 +2545,7 @@ type TaikoL1BondReturned0Iterator struct { // Next advances the iterator to the subsequent event, returning whether there // are any more events found. In case of a retrieval or parsing error, false is // returned and Error() can be queried for the exact failure. -func (it *TaikoL1BondReturned0Iterator) Next() bool { +func (it *TaikoL1OwnershipTransferredIterator) Next() bool { // If the iterator failed, stop iterating if it.fail != nil { return false @@ -2477,7 +2554,7 @@ func (it *TaikoL1BondReturned0Iterator) Next() bool { if it.done { select { case log := <-it.logs: - it.Event = new(TaikoL1BondReturned0) + it.Event = new(TaikoL1OwnershipTransferred) if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { it.fail = err return false @@ -2492,7 +2569,7 @@ func (it *TaikoL1BondReturned0Iterator) Next() bool { // Iterator still in progress, wait for either a data or an error event select { case log := <-it.logs: - it.Event = new(TaikoL1BondReturned0) + it.Event = new(TaikoL1OwnershipTransferred) if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { it.fail = err return false @@ -2508,53 +2585,60 @@ func (it *TaikoL1BondReturned0Iterator) Next() bool { } // Error returns any retrieval or parsing error occurred during filtering. -func (it *TaikoL1BondReturned0Iterator) Error() error { +func (it *TaikoL1OwnershipTransferredIterator) Error() error { return it.fail } // Close terminates the iteration process, releasing any pending underlying // resources. -func (it *TaikoL1BondReturned0Iterator) Close() error { +func (it *TaikoL1OwnershipTransferredIterator) Close() error { it.sub.Unsubscribe() return nil } -// TaikoL1BondReturned0 represents a BondReturned0 event raised by the TaikoL1 contract. -type TaikoL1BondReturned0 struct { - To common.Address - BlockId uint64 - Bond *big.Int - Raw types.Log // Blockchain specific contextual infos +// TaikoL1OwnershipTransferred represents a OwnershipTransferred event raised by the TaikoL1 contract. +type TaikoL1OwnershipTransferred struct { + PreviousOwner common.Address + NewOwner common.Address + Raw types.Log // Blockchain specific contextual infos } -// FilterBondReturned0 is a free log retrieval operation binding the contract event 0xb14706301de9c688dd040a2ac19fc629179149bb39b0765094ef833e7bd907b2. +// FilterOwnershipTransferred is a free log retrieval operation binding the contract event 0x8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0. // -// Solidity: event BondReturned(address indexed to, uint64 blockId, uint256 bond) -func (_TaikoL1 *TaikoL1Filterer) FilterBondReturned0(opts *bind.FilterOpts, to []common.Address) (*TaikoL1BondReturned0Iterator, error) { +// Solidity: event OwnershipTransferred(address indexed previousOwner, address indexed newOwner) +func (_TaikoL1 *TaikoL1Filterer) FilterOwnershipTransferred(opts *bind.FilterOpts, previousOwner []common.Address, newOwner []common.Address) (*TaikoL1OwnershipTransferredIterator, error) { - var toRule []interface{} - for _, toItem := range to { - toRule = append(toRule, toItem) + var previousOwnerRule []interface{} + for _, previousOwnerItem := range previousOwner { + previousOwnerRule = append(previousOwnerRule, previousOwnerItem) + } + var newOwnerRule []interface{} + for _, newOwnerItem := range newOwner { + newOwnerRule = append(newOwnerRule, newOwnerItem) } - logs, sub, err := _TaikoL1.contract.FilterLogs(opts, "BondReturned0", toRule) + logs, sub, err := _TaikoL1.contract.FilterLogs(opts, "OwnershipTransferred", previousOwnerRule, newOwnerRule) if err != nil { return nil, err } - return &TaikoL1BondReturned0Iterator{contract: _TaikoL1.contract, event: "BondReturned0", logs: logs, sub: sub}, nil + return &TaikoL1OwnershipTransferredIterator{contract: _TaikoL1.contract, event: "OwnershipTransferred", logs: logs, sub: sub}, nil } -// WatchBondReturned0 is a free log subscription operation binding the contract event 0xb14706301de9c688dd040a2ac19fc629179149bb39b0765094ef833e7bd907b2. +// WatchOwnershipTransferred is a free log subscription operation binding the contract event 0x8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0. // -// Solidity: event BondReturned(address indexed to, uint64 blockId, uint256 bond) -func (_TaikoL1 *TaikoL1Filterer) WatchBondReturned0(opts *bind.WatchOpts, sink chan<- *TaikoL1BondReturned0, to []common.Address) (event.Subscription, error) { +// Solidity: event OwnershipTransferred(address indexed previousOwner, address indexed newOwner) +func (_TaikoL1 *TaikoL1Filterer) WatchOwnershipTransferred(opts *bind.WatchOpts, sink chan<- *TaikoL1OwnershipTransferred, previousOwner []common.Address, newOwner []common.Address) (event.Subscription, error) { - var toRule []interface{} - for _, toItem := range to { - toRule = append(toRule, toItem) + var previousOwnerRule []interface{} + for _, previousOwnerItem := range previousOwner { + previousOwnerRule = append(previousOwnerRule, previousOwnerItem) + } + var newOwnerRule []interface{} + for _, newOwnerItem := range newOwner { + newOwnerRule = append(newOwnerRule, newOwnerItem) } - logs, sub, err := _TaikoL1.contract.WatchLogs(opts, "BondReturned0", toRule) + logs, sub, err := _TaikoL1.contract.WatchLogs(opts, "OwnershipTransferred", previousOwnerRule, newOwnerRule) if err != nil { return nil, err } @@ -2564,8 +2648,8 @@ func (_TaikoL1 *TaikoL1Filterer) WatchBondReturned0(opts *bind.WatchOpts, sink c select { case log := <-logs: // New log arrived, parse the event and forward to the user - event := new(TaikoL1BondReturned0) - if err := _TaikoL1.contract.UnpackLog(event, "BondReturned0", log); err != nil { + event := new(TaikoL1OwnershipTransferred) + if err := _TaikoL1.contract.UnpackLog(event, "OwnershipTransferred", log); err != nil { return err } event.Raw = log @@ -2586,21 +2670,21 @@ func (_TaikoL1 *TaikoL1Filterer) WatchBondReturned0(opts *bind.WatchOpts, sink c }), nil } -// ParseBondReturned0 is a log parse operation binding the contract event 0xb14706301de9c688dd040a2ac19fc629179149bb39b0765094ef833e7bd907b2. +// ParseOwnershipTransferred is a log parse operation binding the contract event 0x8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0. // -// Solidity: event BondReturned(address indexed to, uint64 blockId, uint256 bond) -func (_TaikoL1 *TaikoL1Filterer) ParseBondReturned0(log types.Log) (*TaikoL1BondReturned0, error) { - event := new(TaikoL1BondReturned0) - if err := _TaikoL1.contract.UnpackLog(event, "BondReturned0", log); err != nil { +// Solidity: event OwnershipTransferred(address indexed previousOwner, address indexed newOwner) +func (_TaikoL1 *TaikoL1Filterer) ParseOwnershipTransferred(log types.Log) (*TaikoL1OwnershipTransferred, error) { + event := new(TaikoL1OwnershipTransferred) + if err := _TaikoL1.contract.UnpackLog(event, "OwnershipTransferred", log); err != nil { return nil, err } event.Raw = log return event, nil } -// TaikoL1BondRewardedIterator is returned from FilterBondRewarded and is used to iterate over the raw logs and unpacked data for BondRewarded events raised by the TaikoL1 contract. -type TaikoL1BondRewardedIterator struct { - Event *TaikoL1BondRewarded // Event containing the contract specifics and raw log +// TaikoL1TokenCreditedIterator is returned from FilterTokenCredited and is used to iterate over the raw logs and unpacked data for TokenCredited events raised by the TaikoL1 contract. +type TaikoL1TokenCreditedIterator struct { + Event *TaikoL1TokenCredited // Event containing the contract specifics and raw log contract *bind.BoundContract // Generic contract to use for unpacking event data event string // Event name to use for unpacking event data @@ -2614,7 +2698,7 @@ type TaikoL1BondRewardedIterator struct { // Next advances the iterator to the subsequent event, returning whether there // are any more events found. In case of a retrieval or parsing error, false is // returned and Error() can be queried for the exact failure. -func (it *TaikoL1BondRewardedIterator) Next() bool { +func (it *TaikoL1TokenCreditedIterator) Next() bool { // If the iterator failed, stop iterating if it.fail != nil { return false @@ -2623,7 +2707,7 @@ func (it *TaikoL1BondRewardedIterator) Next() bool { if it.done { select { case log := <-it.logs: - it.Event = new(TaikoL1BondRewarded) + it.Event = new(TaikoL1TokenCredited) if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { it.fail = err return false @@ -2638,7 +2722,7 @@ func (it *TaikoL1BondRewardedIterator) Next() bool { // Iterator still in progress, wait for either a data or an error event select { case log := <-it.logs: - it.Event = new(TaikoL1BondRewarded) + it.Event = new(TaikoL1TokenCredited) if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { it.fail = err return false @@ -2654,53 +2738,42 @@ func (it *TaikoL1BondRewardedIterator) Next() bool { } // Error returns any retrieval or parsing error occurred during filtering. -func (it *TaikoL1BondRewardedIterator) Error() error { +func (it *TaikoL1TokenCreditedIterator) Error() error { return it.fail } // Close terminates the iteration process, releasing any pending underlying // resources. -func (it *TaikoL1BondRewardedIterator) Close() error { +func (it *TaikoL1TokenCreditedIterator) Close() error { it.sub.Unsubscribe() return nil } -// TaikoL1BondRewarded represents a BondRewarded event raised by the TaikoL1 contract. -type TaikoL1BondRewarded struct { - To common.Address - BlockId uint64 - Bond *big.Int - Raw types.Log // Blockchain specific contextual infos +// TaikoL1TokenCredited represents a TokenCredited event raised by the TaikoL1 contract. +type TaikoL1TokenCredited struct { + Amount *big.Int + Minted bool + Raw types.Log // Blockchain specific contextual infos } -// FilterBondRewarded is a free log retrieval operation binding the contract event 0x428d08856cfebcae4c1b981318595cf05b757406a9c92c9bffd3ebb9a10023a6. +// FilterTokenCredited is a free log retrieval operation binding the contract event 0xeb0ac084e2fa6cfaebe54184190c7137c2fcc63c16e1dfaf6442ae95c01c44ad. // -// Solidity: event BondRewarded(address indexed to, uint64 blockId, uint256 bond) -func (_TaikoL1 *TaikoL1Filterer) FilterBondRewarded(opts *bind.FilterOpts, to []common.Address) (*TaikoL1BondRewardedIterator, error) { - - var toRule []interface{} - for _, toItem := range to { - toRule = append(toRule, toItem) - } +// Solidity: event TokenCredited(uint256 amount, bool minted) +func (_TaikoL1 *TaikoL1Filterer) FilterTokenCredited(opts *bind.FilterOpts) (*TaikoL1TokenCreditedIterator, error) { - logs, sub, err := _TaikoL1.contract.FilterLogs(opts, "BondRewarded", toRule) + logs, sub, err := _TaikoL1.contract.FilterLogs(opts, "TokenCredited") if err != nil { return nil, err } - return &TaikoL1BondRewardedIterator{contract: _TaikoL1.contract, event: "BondRewarded", logs: logs, sub: sub}, nil + return &TaikoL1TokenCreditedIterator{contract: _TaikoL1.contract, event: "TokenCredited", logs: logs, sub: sub}, nil } -// WatchBondRewarded is a free log subscription operation binding the contract event 0x428d08856cfebcae4c1b981318595cf05b757406a9c92c9bffd3ebb9a10023a6. +// WatchTokenCredited is a free log subscription operation binding the contract event 0xeb0ac084e2fa6cfaebe54184190c7137c2fcc63c16e1dfaf6442ae95c01c44ad. // -// Solidity: event BondRewarded(address indexed to, uint64 blockId, uint256 bond) -func (_TaikoL1 *TaikoL1Filterer) WatchBondRewarded(opts *bind.WatchOpts, sink chan<- *TaikoL1BondRewarded, to []common.Address) (event.Subscription, error) { - - var toRule []interface{} - for _, toItem := range to { - toRule = append(toRule, toItem) - } +// Solidity: event TokenCredited(uint256 amount, bool minted) +func (_TaikoL1 *TaikoL1Filterer) WatchTokenCredited(opts *bind.WatchOpts, sink chan<- *TaikoL1TokenCredited) (event.Subscription, error) { - logs, sub, err := _TaikoL1.contract.WatchLogs(opts, "BondRewarded", toRule) + logs, sub, err := _TaikoL1.contract.WatchLogs(opts, "TokenCredited") if err != nil { return nil, err } @@ -2710,8 +2783,8 @@ func (_TaikoL1 *TaikoL1Filterer) WatchBondRewarded(opts *bind.WatchOpts, sink ch select { case log := <-logs: // New log arrived, parse the event and forward to the user - event := new(TaikoL1BondRewarded) - if err := _TaikoL1.contract.UnpackLog(event, "BondRewarded", log); err != nil { + event := new(TaikoL1TokenCredited) + if err := _TaikoL1.contract.UnpackLog(event, "TokenCredited", log); err != nil { return err } event.Raw = log @@ -2732,21 +2805,21 @@ func (_TaikoL1 *TaikoL1Filterer) WatchBondRewarded(opts *bind.WatchOpts, sink ch }), nil } -// ParseBondRewarded is a log parse operation binding the contract event 0x428d08856cfebcae4c1b981318595cf05b757406a9c92c9bffd3ebb9a10023a6. +// ParseTokenCredited is a log parse operation binding the contract event 0xeb0ac084e2fa6cfaebe54184190c7137c2fcc63c16e1dfaf6442ae95c01c44ad. // -// Solidity: event BondRewarded(address indexed to, uint64 blockId, uint256 bond) -func (_TaikoL1 *TaikoL1Filterer) ParseBondRewarded(log types.Log) (*TaikoL1BondRewarded, error) { - event := new(TaikoL1BondRewarded) - if err := _TaikoL1.contract.UnpackLog(event, "BondRewarded", log); err != nil { +// Solidity: event TokenCredited(uint256 amount, bool minted) +func (_TaikoL1 *TaikoL1Filterer) ParseTokenCredited(log types.Log) (*TaikoL1TokenCredited, error) { + event := new(TaikoL1TokenCredited) + if err := _TaikoL1.contract.UnpackLog(event, "TokenCredited", log); err != nil { return nil, err } event.Raw = log return event, nil } -// TaikoL1BondRewarded0Iterator is returned from FilterBondRewarded0 and is used to iterate over the raw logs and unpacked data for BondRewarded0 events raised by the TaikoL1 contract. -type TaikoL1BondRewarded0Iterator struct { - Event *TaikoL1BondRewarded0 // Event containing the contract specifics and raw log +// TaikoL1TokenCredited0Iterator is returned from FilterTokenCredited0 and is used to iterate over the raw logs and unpacked data for TokenCredited0 events raised by the TaikoL1 contract. +type TaikoL1TokenCredited0Iterator struct { + Event *TaikoL1TokenCredited0 // Event containing the contract specifics and raw log contract *bind.BoundContract // Generic contract to use for unpacking event data event string // Event name to use for unpacking event data @@ -2760,7 +2833,7 @@ type TaikoL1BondRewarded0Iterator struct { // Next advances the iterator to the subsequent event, returning whether there // are any more events found. In case of a retrieval or parsing error, false is // returned and Error() can be queried for the exact failure. -func (it *TaikoL1BondRewarded0Iterator) Next() bool { +func (it *TaikoL1TokenCredited0Iterator) Next() bool { // If the iterator failed, stop iterating if it.fail != nil { return false @@ -2769,7 +2842,7 @@ func (it *TaikoL1BondRewarded0Iterator) Next() bool { if it.done { select { case log := <-it.logs: - it.Event = new(TaikoL1BondRewarded0) + it.Event = new(TaikoL1TokenCredited0) if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { it.fail = err return false @@ -2784,7 +2857,7 @@ func (it *TaikoL1BondRewarded0Iterator) Next() bool { // Iterator still in progress, wait for either a data or an error event select { case log := <-it.logs: - it.Event = new(TaikoL1BondRewarded0) + it.Event = new(TaikoL1TokenCredited0) if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { it.fail = err return false @@ -2800,53 +2873,42 @@ func (it *TaikoL1BondRewarded0Iterator) Next() bool { } // Error returns any retrieval or parsing error occurred during filtering. -func (it *TaikoL1BondRewarded0Iterator) Error() error { +func (it *TaikoL1TokenCredited0Iterator) Error() error { return it.fail } // Close terminates the iteration process, releasing any pending underlying // resources. -func (it *TaikoL1BondRewarded0Iterator) Close() error { +func (it *TaikoL1TokenCredited0Iterator) Close() error { it.sub.Unsubscribe() return nil } -// TaikoL1BondRewarded0 represents a BondRewarded0 event raised by the TaikoL1 contract. -type TaikoL1BondRewarded0 struct { - To common.Address - BlockId uint64 - Bond *big.Int - Raw types.Log // Blockchain specific contextual infos +// TaikoL1TokenCredited0 represents a TokenCredited0 event raised by the TaikoL1 contract. +type TaikoL1TokenCredited0 struct { + Amount *big.Int + Minted bool + Raw types.Log // Blockchain specific contextual infos } -// FilterBondRewarded0 is a free log retrieval operation binding the contract event 0x428d08856cfebcae4c1b981318595cf05b757406a9c92c9bffd3ebb9a10023a6. +// FilterTokenCredited0 is a free log retrieval operation binding the contract event 0xeb0ac084e2fa6cfaebe54184190c7137c2fcc63c16e1dfaf6442ae95c01c44ad. // -// Solidity: event BondRewarded(address indexed to, uint64 blockId, uint256 bond) -func (_TaikoL1 *TaikoL1Filterer) FilterBondRewarded0(opts *bind.FilterOpts, to []common.Address) (*TaikoL1BondRewarded0Iterator, error) { - - var toRule []interface{} - for _, toItem := range to { - toRule = append(toRule, toItem) - } +// Solidity: event TokenCredited(uint256 amount, bool minted) +func (_TaikoL1 *TaikoL1Filterer) FilterTokenCredited0(opts *bind.FilterOpts) (*TaikoL1TokenCredited0Iterator, error) { - logs, sub, err := _TaikoL1.contract.FilterLogs(opts, "BondRewarded0", toRule) + logs, sub, err := _TaikoL1.contract.FilterLogs(opts, "TokenCredited0") if err != nil { return nil, err } - return &TaikoL1BondRewarded0Iterator{contract: _TaikoL1.contract, event: "BondRewarded0", logs: logs, sub: sub}, nil + return &TaikoL1TokenCredited0Iterator{contract: _TaikoL1.contract, event: "TokenCredited0", logs: logs, sub: sub}, nil } -// WatchBondRewarded0 is a free log subscription operation binding the contract event 0x428d08856cfebcae4c1b981318595cf05b757406a9c92c9bffd3ebb9a10023a6. +// WatchTokenCredited0 is a free log subscription operation binding the contract event 0xeb0ac084e2fa6cfaebe54184190c7137c2fcc63c16e1dfaf6442ae95c01c44ad. // -// Solidity: event BondRewarded(address indexed to, uint64 blockId, uint256 bond) -func (_TaikoL1 *TaikoL1Filterer) WatchBondRewarded0(opts *bind.WatchOpts, sink chan<- *TaikoL1BondRewarded0, to []common.Address) (event.Subscription, error) { +// Solidity: event TokenCredited(uint256 amount, bool minted) +func (_TaikoL1 *TaikoL1Filterer) WatchTokenCredited0(opts *bind.WatchOpts, sink chan<- *TaikoL1TokenCredited0) (event.Subscription, error) { - var toRule []interface{} - for _, toItem := range to { - toRule = append(toRule, toItem) - } - - logs, sub, err := _TaikoL1.contract.WatchLogs(opts, "BondRewarded0", toRule) + logs, sub, err := _TaikoL1.contract.WatchLogs(opts, "TokenCredited0") if err != nil { return nil, err } @@ -2856,8 +2918,8 @@ func (_TaikoL1 *TaikoL1Filterer) WatchBondRewarded0(opts *bind.WatchOpts, sink c select { case log := <-logs: // New log arrived, parse the event and forward to the user - event := new(TaikoL1BondRewarded0) - if err := _TaikoL1.contract.UnpackLog(event, "BondRewarded0", log); err != nil { + event := new(TaikoL1TokenCredited0) + if err := _TaikoL1.contract.UnpackLog(event, "TokenCredited0", log); err != nil { return err } event.Raw = log @@ -2878,21 +2940,21 @@ func (_TaikoL1 *TaikoL1Filterer) WatchBondRewarded0(opts *bind.WatchOpts, sink c }), nil } -// ParseBondRewarded0 is a log parse operation binding the contract event 0x428d08856cfebcae4c1b981318595cf05b757406a9c92c9bffd3ebb9a10023a6. +// ParseTokenCredited0 is a log parse operation binding the contract event 0xeb0ac084e2fa6cfaebe54184190c7137c2fcc63c16e1dfaf6442ae95c01c44ad. // -// Solidity: event BondRewarded(address indexed to, uint64 blockId, uint256 bond) -func (_TaikoL1 *TaikoL1Filterer) ParseBondRewarded0(log types.Log) (*TaikoL1BondRewarded0, error) { - event := new(TaikoL1BondRewarded0) - if err := _TaikoL1.contract.UnpackLog(event, "BondRewarded0", log); err != nil { +// Solidity: event TokenCredited(uint256 amount, bool minted) +func (_TaikoL1 *TaikoL1Filterer) ParseTokenCredited0(log types.Log) (*TaikoL1TokenCredited0, error) { + event := new(TaikoL1TokenCredited0) + if err := _TaikoL1.contract.UnpackLog(event, "TokenCredited0", log); err != nil { return nil, err } event.Raw = log return event, nil } -// TaikoL1CrossChainSyncedIterator is returned from FilterCrossChainSynced and is used to iterate over the raw logs and unpacked data for CrossChainSynced events raised by the TaikoL1 contract. -type TaikoL1CrossChainSyncedIterator struct { - Event *TaikoL1CrossChainSynced // Event containing the contract specifics and raw log +// TaikoL1TokenDebitedIterator is returned from FilterTokenDebited and is used to iterate over the raw logs and unpacked data for TokenDebited events raised by the TaikoL1 contract. +type TaikoL1TokenDebitedIterator struct { + Event *TaikoL1TokenDebited // Event containing the contract specifics and raw log contract *bind.BoundContract // Generic contract to use for unpacking event data event string // Event name to use for unpacking event data @@ -2906,7 +2968,7 @@ type TaikoL1CrossChainSyncedIterator struct { // Next advances the iterator to the subsequent event, returning whether there // are any more events found. In case of a retrieval or parsing error, false is // returned and Error() can be queried for the exact failure. -func (it *TaikoL1CrossChainSyncedIterator) Next() bool { +func (it *TaikoL1TokenDebitedIterator) Next() bool { // If the iterator failed, stop iterating if it.fail != nil { return false @@ -2915,7 +2977,7 @@ func (it *TaikoL1CrossChainSyncedIterator) Next() bool { if it.done { select { case log := <-it.logs: - it.Event = new(TaikoL1CrossChainSynced) + it.Event = new(TaikoL1TokenDebited) if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { it.fail = err return false @@ -2930,7 +2992,7 @@ func (it *TaikoL1CrossChainSyncedIterator) Next() bool { // Iterator still in progress, wait for either a data or an error event select { case log := <-it.logs: - it.Event = new(TaikoL1CrossChainSynced) + it.Event = new(TaikoL1TokenDebited) if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { it.fail = err return false @@ -2946,53 +3008,42 @@ func (it *TaikoL1CrossChainSyncedIterator) Next() bool { } // Error returns any retrieval or parsing error occurred during filtering. -func (it *TaikoL1CrossChainSyncedIterator) Error() error { +func (it *TaikoL1TokenDebitedIterator) Error() error { return it.fail } // Close terminates the iteration process, releasing any pending underlying // resources. -func (it *TaikoL1CrossChainSyncedIterator) Close() error { +func (it *TaikoL1TokenDebitedIterator) Close() error { it.sub.Unsubscribe() return nil } -// TaikoL1CrossChainSynced represents a CrossChainSynced event raised by the TaikoL1 contract. -type TaikoL1CrossChainSynced struct { - SrcHeight uint64 - BlockHash [32]byte - SignalRoot [32]byte - Raw types.Log // Blockchain specific contextual infos +// TaikoL1TokenDebited represents a TokenDebited event raised by the TaikoL1 contract. +type TaikoL1TokenDebited struct { + Amount *big.Int + FromLocalBalance bool + Raw types.Log // Blockchain specific contextual infos } -// FilterCrossChainSynced is a free log retrieval operation binding the contract event 0x004ce985b8852a486571d0545799251fd671adcf33b7854a5f0f6a6a2431a555. +// FilterTokenDebited is a free log retrieval operation binding the contract event 0x8012eed335fcd2a9b93e688e5146be66d3b48c2e40578e713dc5f254d7fea32a. // -// Solidity: event CrossChainSynced(uint64 indexed srcHeight, bytes32 blockHash, bytes32 signalRoot) -func (_TaikoL1 *TaikoL1Filterer) FilterCrossChainSynced(opts *bind.FilterOpts, srcHeight []uint64) (*TaikoL1CrossChainSyncedIterator, error) { - - var srcHeightRule []interface{} - for _, srcHeightItem := range srcHeight { - srcHeightRule = append(srcHeightRule, srcHeightItem) - } +// Solidity: event TokenDebited(uint256 amount, bool fromLocalBalance) +func (_TaikoL1 *TaikoL1Filterer) FilterTokenDebited(opts *bind.FilterOpts) (*TaikoL1TokenDebitedIterator, error) { - logs, sub, err := _TaikoL1.contract.FilterLogs(opts, "CrossChainSynced", srcHeightRule) + logs, sub, err := _TaikoL1.contract.FilterLogs(opts, "TokenDebited") if err != nil { return nil, err } - return &TaikoL1CrossChainSyncedIterator{contract: _TaikoL1.contract, event: "CrossChainSynced", logs: logs, sub: sub}, nil + return &TaikoL1TokenDebitedIterator{contract: _TaikoL1.contract, event: "TokenDebited", logs: logs, sub: sub}, nil } -// WatchCrossChainSynced is a free log subscription operation binding the contract event 0x004ce985b8852a486571d0545799251fd671adcf33b7854a5f0f6a6a2431a555. +// WatchTokenDebited is a free log subscription operation binding the contract event 0x8012eed335fcd2a9b93e688e5146be66d3b48c2e40578e713dc5f254d7fea32a. // -// Solidity: event CrossChainSynced(uint64 indexed srcHeight, bytes32 blockHash, bytes32 signalRoot) -func (_TaikoL1 *TaikoL1Filterer) WatchCrossChainSynced(opts *bind.WatchOpts, sink chan<- *TaikoL1CrossChainSynced, srcHeight []uint64) (event.Subscription, error) { - - var srcHeightRule []interface{} - for _, srcHeightItem := range srcHeight { - srcHeightRule = append(srcHeightRule, srcHeightItem) - } +// Solidity: event TokenDebited(uint256 amount, bool fromLocalBalance) +func (_TaikoL1 *TaikoL1Filterer) WatchTokenDebited(opts *bind.WatchOpts, sink chan<- *TaikoL1TokenDebited) (event.Subscription, error) { - logs, sub, err := _TaikoL1.contract.WatchLogs(opts, "CrossChainSynced", srcHeightRule) + logs, sub, err := _TaikoL1.contract.WatchLogs(opts, "TokenDebited") if err != nil { return nil, err } @@ -3002,8 +3053,8 @@ func (_TaikoL1 *TaikoL1Filterer) WatchCrossChainSynced(opts *bind.WatchOpts, sin select { case log := <-logs: // New log arrived, parse the event and forward to the user - event := new(TaikoL1CrossChainSynced) - if err := _TaikoL1.contract.UnpackLog(event, "CrossChainSynced", log); err != nil { + event := new(TaikoL1TokenDebited) + if err := _TaikoL1.contract.UnpackLog(event, "TokenDebited", log); err != nil { return err } event.Raw = log @@ -3024,21 +3075,21 @@ func (_TaikoL1 *TaikoL1Filterer) WatchCrossChainSynced(opts *bind.WatchOpts, sin }), nil } -// ParseCrossChainSynced is a log parse operation binding the contract event 0x004ce985b8852a486571d0545799251fd671adcf33b7854a5f0f6a6a2431a555. +// ParseTokenDebited is a log parse operation binding the contract event 0x8012eed335fcd2a9b93e688e5146be66d3b48c2e40578e713dc5f254d7fea32a. // -// Solidity: event CrossChainSynced(uint64 indexed srcHeight, bytes32 blockHash, bytes32 signalRoot) -func (_TaikoL1 *TaikoL1Filterer) ParseCrossChainSynced(log types.Log) (*TaikoL1CrossChainSynced, error) { - event := new(TaikoL1CrossChainSynced) - if err := _TaikoL1.contract.UnpackLog(event, "CrossChainSynced", log); err != nil { +// Solidity: event TokenDebited(uint256 amount, bool fromLocalBalance) +func (_TaikoL1 *TaikoL1Filterer) ParseTokenDebited(log types.Log) (*TaikoL1TokenDebited, error) { + event := new(TaikoL1TokenDebited) + if err := _TaikoL1.contract.UnpackLog(event, "TokenDebited", log); err != nil { return nil, err } event.Raw = log return event, nil } -// TaikoL1CrossChainSynced0Iterator is returned from FilterCrossChainSynced0 and is used to iterate over the raw logs and unpacked data for CrossChainSynced0 events raised by the TaikoL1 contract. -type TaikoL1CrossChainSynced0Iterator struct { - Event *TaikoL1CrossChainSynced0 // Event containing the contract specifics and raw log +// TaikoL1TokenDebited0Iterator is returned from FilterTokenDebited0 and is used to iterate over the raw logs and unpacked data for TokenDebited0 events raised by the TaikoL1 contract. +type TaikoL1TokenDebited0Iterator struct { + Event *TaikoL1TokenDebited0 // Event containing the contract specifics and raw log contract *bind.BoundContract // Generic contract to use for unpacking event data event string // Event name to use for unpacking event data @@ -3052,7 +3103,7 @@ type TaikoL1CrossChainSynced0Iterator struct { // Next advances the iterator to the subsequent event, returning whether there // are any more events found. In case of a retrieval or parsing error, false is // returned and Error() can be queried for the exact failure. -func (it *TaikoL1CrossChainSynced0Iterator) Next() bool { +func (it *TaikoL1TokenDebited0Iterator) Next() bool { // If the iterator failed, stop iterating if it.fail != nil { return false @@ -3061,7 +3112,7 @@ func (it *TaikoL1CrossChainSynced0Iterator) Next() bool { if it.done { select { case log := <-it.logs: - it.Event = new(TaikoL1CrossChainSynced0) + it.Event = new(TaikoL1TokenDebited0) if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { it.fail = err return false @@ -3076,7 +3127,7 @@ func (it *TaikoL1CrossChainSynced0Iterator) Next() bool { // Iterator still in progress, wait for either a data or an error event select { case log := <-it.logs: - it.Event = new(TaikoL1CrossChainSynced0) + it.Event = new(TaikoL1TokenDebited0) if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { it.fail = err return false @@ -3092,53 +3143,42 @@ func (it *TaikoL1CrossChainSynced0Iterator) Next() bool { } // Error returns any retrieval or parsing error occurred during filtering. -func (it *TaikoL1CrossChainSynced0Iterator) Error() error { +func (it *TaikoL1TokenDebited0Iterator) Error() error { return it.fail } // Close terminates the iteration process, releasing any pending underlying // resources. -func (it *TaikoL1CrossChainSynced0Iterator) Close() error { +func (it *TaikoL1TokenDebited0Iterator) Close() error { it.sub.Unsubscribe() return nil } -// TaikoL1CrossChainSynced0 represents a CrossChainSynced0 event raised by the TaikoL1 contract. -type TaikoL1CrossChainSynced0 struct { - SrcHeight uint64 - BlockHash [32]byte - SignalRoot [32]byte - Raw types.Log // Blockchain specific contextual infos +// TaikoL1TokenDebited0 represents a TokenDebited0 event raised by the TaikoL1 contract. +type TaikoL1TokenDebited0 struct { + Amount *big.Int + FromLocalBalance bool + Raw types.Log // Blockchain specific contextual infos } -// FilterCrossChainSynced0 is a free log retrieval operation binding the contract event 0x004ce985b8852a486571d0545799251fd671adcf33b7854a5f0f6a6a2431a555. +// FilterTokenDebited0 is a free log retrieval operation binding the contract event 0x8012eed335fcd2a9b93e688e5146be66d3b48c2e40578e713dc5f254d7fea32a. // -// Solidity: event CrossChainSynced(uint64 indexed srcHeight, bytes32 blockHash, bytes32 signalRoot) -func (_TaikoL1 *TaikoL1Filterer) FilterCrossChainSynced0(opts *bind.FilterOpts, srcHeight []uint64) (*TaikoL1CrossChainSynced0Iterator, error) { - - var srcHeightRule []interface{} - for _, srcHeightItem := range srcHeight { - srcHeightRule = append(srcHeightRule, srcHeightItem) - } +// Solidity: event TokenDebited(uint256 amount, bool fromLocalBalance) +func (_TaikoL1 *TaikoL1Filterer) FilterTokenDebited0(opts *bind.FilterOpts) (*TaikoL1TokenDebited0Iterator, error) { - logs, sub, err := _TaikoL1.contract.FilterLogs(opts, "CrossChainSynced0", srcHeightRule) + logs, sub, err := _TaikoL1.contract.FilterLogs(opts, "TokenDebited0") if err != nil { return nil, err } - return &TaikoL1CrossChainSynced0Iterator{contract: _TaikoL1.contract, event: "CrossChainSynced0", logs: logs, sub: sub}, nil + return &TaikoL1TokenDebited0Iterator{contract: _TaikoL1.contract, event: "TokenDebited0", logs: logs, sub: sub}, nil } -// WatchCrossChainSynced0 is a free log subscription operation binding the contract event 0x004ce985b8852a486571d0545799251fd671adcf33b7854a5f0f6a6a2431a555. +// WatchTokenDebited0 is a free log subscription operation binding the contract event 0x8012eed335fcd2a9b93e688e5146be66d3b48c2e40578e713dc5f254d7fea32a. // -// Solidity: event CrossChainSynced(uint64 indexed srcHeight, bytes32 blockHash, bytes32 signalRoot) -func (_TaikoL1 *TaikoL1Filterer) WatchCrossChainSynced0(opts *bind.WatchOpts, sink chan<- *TaikoL1CrossChainSynced0, srcHeight []uint64) (event.Subscription, error) { - - var srcHeightRule []interface{} - for _, srcHeightItem := range srcHeight { - srcHeightRule = append(srcHeightRule, srcHeightItem) - } +// Solidity: event TokenDebited(uint256 amount, bool fromLocalBalance) +func (_TaikoL1 *TaikoL1Filterer) WatchTokenDebited0(opts *bind.WatchOpts, sink chan<- *TaikoL1TokenDebited0) (event.Subscription, error) { - logs, sub, err := _TaikoL1.contract.WatchLogs(opts, "CrossChainSynced0", srcHeightRule) + logs, sub, err := _TaikoL1.contract.WatchLogs(opts, "TokenDebited0") if err != nil { return nil, err } @@ -3148,8 +3188,8 @@ func (_TaikoL1 *TaikoL1Filterer) WatchCrossChainSynced0(opts *bind.WatchOpts, si select { case log := <-logs: // New log arrived, parse the event and forward to the user - event := new(TaikoL1CrossChainSynced0) - if err := _TaikoL1.contract.UnpackLog(event, "CrossChainSynced0", log); err != nil { + event := new(TaikoL1TokenDebited0) + if err := _TaikoL1.contract.UnpackLog(event, "TokenDebited0", log); err != nil { return err } event.Raw = log @@ -3170,21 +3210,21 @@ func (_TaikoL1 *TaikoL1Filterer) WatchCrossChainSynced0(opts *bind.WatchOpts, si }), nil } -// ParseCrossChainSynced0 is a log parse operation binding the contract event 0x004ce985b8852a486571d0545799251fd671adcf33b7854a5f0f6a6a2431a555. +// ParseTokenDebited0 is a log parse operation binding the contract event 0x8012eed335fcd2a9b93e688e5146be66d3b48c2e40578e713dc5f254d7fea32a. // -// Solidity: event CrossChainSynced(uint64 indexed srcHeight, bytes32 blockHash, bytes32 signalRoot) -func (_TaikoL1 *TaikoL1Filterer) ParseCrossChainSynced0(log types.Log) (*TaikoL1CrossChainSynced0, error) { - event := new(TaikoL1CrossChainSynced0) - if err := _TaikoL1.contract.UnpackLog(event, "CrossChainSynced0", log); err != nil { +// Solidity: event TokenDebited(uint256 amount, bool fromLocalBalance) +func (_TaikoL1 *TaikoL1Filterer) ParseTokenDebited0(log types.Log) (*TaikoL1TokenDebited0, error) { + event := new(TaikoL1TokenDebited0) + if err := _TaikoL1.contract.UnpackLog(event, "TokenDebited0", log); err != nil { return nil, err } event.Raw = log return event, nil } -// TaikoL1EthDepositedIterator is returned from FilterEthDeposited and is used to iterate over the raw logs and unpacked data for EthDeposited events raised by the TaikoL1 contract. -type TaikoL1EthDepositedIterator struct { - Event *TaikoL1EthDeposited // Event containing the contract specifics and raw log +// TaikoL1TokenDepositedIterator is returned from FilterTokenDeposited and is used to iterate over the raw logs and unpacked data for TokenDeposited events raised by the TaikoL1 contract. +type TaikoL1TokenDepositedIterator struct { + Event *TaikoL1TokenDeposited // Event containing the contract specifics and raw log contract *bind.BoundContract // Generic contract to use for unpacking event data event string // Event name to use for unpacking event data @@ -3198,7 +3238,7 @@ type TaikoL1EthDepositedIterator struct { // Next advances the iterator to the subsequent event, returning whether there // are any more events found. In case of a retrieval or parsing error, false is // returned and Error() can be queried for the exact failure. -func (it *TaikoL1EthDepositedIterator) Next() bool { +func (it *TaikoL1TokenDepositedIterator) Next() bool { // If the iterator failed, stop iterating if it.fail != nil { return false @@ -3207,7 +3247,7 @@ func (it *TaikoL1EthDepositedIterator) Next() bool { if it.done { select { case log := <-it.logs: - it.Event = new(TaikoL1EthDeposited) + it.Event = new(TaikoL1TokenDeposited) if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { it.fail = err return false @@ -3222,7 +3262,7 @@ func (it *TaikoL1EthDepositedIterator) Next() bool { // Iterator still in progress, wait for either a data or an error event select { case log := <-it.logs: - it.Event = new(TaikoL1EthDeposited) + it.Event = new(TaikoL1TokenDeposited) if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { it.fail = err return false @@ -3238,41 +3278,41 @@ func (it *TaikoL1EthDepositedIterator) Next() bool { } // Error returns any retrieval or parsing error occurred during filtering. -func (it *TaikoL1EthDepositedIterator) Error() error { +func (it *TaikoL1TokenDepositedIterator) Error() error { return it.fail } // Close terminates the iteration process, releasing any pending underlying // resources. -func (it *TaikoL1EthDepositedIterator) Close() error { +func (it *TaikoL1TokenDepositedIterator) Close() error { it.sub.Unsubscribe() return nil } -// TaikoL1EthDeposited represents a EthDeposited event raised by the TaikoL1 contract. -type TaikoL1EthDeposited struct { - Deposit TaikoDataEthDeposit - Raw types.Log // Blockchain specific contextual infos +// TaikoL1TokenDeposited represents a TokenDeposited event raised by the TaikoL1 contract. +type TaikoL1TokenDeposited struct { + Amount *big.Int + Raw types.Log // Blockchain specific contextual infos } -// FilterEthDeposited is a free log retrieval operation binding the contract event 0x7120a3b075ad25974c5eed76dedb3a217c76c9c6d1f1e201caeba9b89de9a9d9. +// FilterTokenDeposited is a free log retrieval operation binding the contract event 0x26a49ee784523ce049bcbe276a63c7c9dbd9f428b1aa53633e679c9c046e8858. // -// Solidity: event EthDeposited((address,uint96,uint64) deposit) -func (_TaikoL1 *TaikoL1Filterer) FilterEthDeposited(opts *bind.FilterOpts) (*TaikoL1EthDepositedIterator, error) { +// Solidity: event TokenDeposited(uint256 amount) +func (_TaikoL1 *TaikoL1Filterer) FilterTokenDeposited(opts *bind.FilterOpts) (*TaikoL1TokenDepositedIterator, error) { - logs, sub, err := _TaikoL1.contract.FilterLogs(opts, "EthDeposited") + logs, sub, err := _TaikoL1.contract.FilterLogs(opts, "TokenDeposited") if err != nil { return nil, err } - return &TaikoL1EthDepositedIterator{contract: _TaikoL1.contract, event: "EthDeposited", logs: logs, sub: sub}, nil + return &TaikoL1TokenDepositedIterator{contract: _TaikoL1.contract, event: "TokenDeposited", logs: logs, sub: sub}, nil } -// WatchEthDeposited is a free log subscription operation binding the contract event 0x7120a3b075ad25974c5eed76dedb3a217c76c9c6d1f1e201caeba9b89de9a9d9. +// WatchTokenDeposited is a free log subscription operation binding the contract event 0x26a49ee784523ce049bcbe276a63c7c9dbd9f428b1aa53633e679c9c046e8858. // -// Solidity: event EthDeposited((address,uint96,uint64) deposit) -func (_TaikoL1 *TaikoL1Filterer) WatchEthDeposited(opts *bind.WatchOpts, sink chan<- *TaikoL1EthDeposited) (event.Subscription, error) { +// Solidity: event TokenDeposited(uint256 amount) +func (_TaikoL1 *TaikoL1Filterer) WatchTokenDeposited(opts *bind.WatchOpts, sink chan<- *TaikoL1TokenDeposited) (event.Subscription, error) { - logs, sub, err := _TaikoL1.contract.WatchLogs(opts, "EthDeposited") + logs, sub, err := _TaikoL1.contract.WatchLogs(opts, "TokenDeposited") if err != nil { return nil, err } @@ -3282,8 +3322,8 @@ func (_TaikoL1 *TaikoL1Filterer) WatchEthDeposited(opts *bind.WatchOpts, sink ch select { case log := <-logs: // New log arrived, parse the event and forward to the user - event := new(TaikoL1EthDeposited) - if err := _TaikoL1.contract.UnpackLog(event, "EthDeposited", log); err != nil { + event := new(TaikoL1TokenDeposited) + if err := _TaikoL1.contract.UnpackLog(event, "TokenDeposited", log); err != nil { return err } event.Raw = log @@ -3304,21 +3344,21 @@ func (_TaikoL1 *TaikoL1Filterer) WatchEthDeposited(opts *bind.WatchOpts, sink ch }), nil } -// ParseEthDeposited is a log parse operation binding the contract event 0x7120a3b075ad25974c5eed76dedb3a217c76c9c6d1f1e201caeba9b89de9a9d9. +// ParseTokenDeposited is a log parse operation binding the contract event 0x26a49ee784523ce049bcbe276a63c7c9dbd9f428b1aa53633e679c9c046e8858. // -// Solidity: event EthDeposited((address,uint96,uint64) deposit) -func (_TaikoL1 *TaikoL1Filterer) ParseEthDeposited(log types.Log) (*TaikoL1EthDeposited, error) { - event := new(TaikoL1EthDeposited) - if err := _TaikoL1.contract.UnpackLog(event, "EthDeposited", log); err != nil { +// Solidity: event TokenDeposited(uint256 amount) +func (_TaikoL1 *TaikoL1Filterer) ParseTokenDeposited(log types.Log) (*TaikoL1TokenDeposited, error) { + event := new(TaikoL1TokenDeposited) + if err := _TaikoL1.contract.UnpackLog(event, "TokenDeposited", log); err != nil { return nil, err } event.Raw = log return event, nil } -// TaikoL1EthDeposited0Iterator is returned from FilterEthDeposited0 and is used to iterate over the raw logs and unpacked data for EthDeposited0 events raised by the TaikoL1 contract. -type TaikoL1EthDeposited0Iterator struct { - Event *TaikoL1EthDeposited0 // Event containing the contract specifics and raw log +// TaikoL1TokenDeposited0Iterator is returned from FilterTokenDeposited0 and is used to iterate over the raw logs and unpacked data for TokenDeposited0 events raised by the TaikoL1 contract. +type TaikoL1TokenDeposited0Iterator struct { + Event *TaikoL1TokenDeposited0 // Event containing the contract specifics and raw log contract *bind.BoundContract // Generic contract to use for unpacking event data event string // Event name to use for unpacking event data @@ -3332,7 +3372,7 @@ type TaikoL1EthDeposited0Iterator struct { // Next advances the iterator to the subsequent event, returning whether there // are any more events found. In case of a retrieval or parsing error, false is // returned and Error() can be queried for the exact failure. -func (it *TaikoL1EthDeposited0Iterator) Next() bool { +func (it *TaikoL1TokenDeposited0Iterator) Next() bool { // If the iterator failed, stop iterating if it.fail != nil { return false @@ -3341,7 +3381,7 @@ func (it *TaikoL1EthDeposited0Iterator) Next() bool { if it.done { select { case log := <-it.logs: - it.Event = new(TaikoL1EthDeposited0) + it.Event = new(TaikoL1TokenDeposited0) if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { it.fail = err return false @@ -3356,7 +3396,7 @@ func (it *TaikoL1EthDeposited0Iterator) Next() bool { // Iterator still in progress, wait for either a data or an error event select { case log := <-it.logs: - it.Event = new(TaikoL1EthDeposited0) + it.Event = new(TaikoL1TokenDeposited0) if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { it.fail = err return false @@ -3372,41 +3412,41 @@ func (it *TaikoL1EthDeposited0Iterator) Next() bool { } // Error returns any retrieval or parsing error occurred during filtering. -func (it *TaikoL1EthDeposited0Iterator) Error() error { +func (it *TaikoL1TokenDeposited0Iterator) Error() error { return it.fail } // Close terminates the iteration process, releasing any pending underlying // resources. -func (it *TaikoL1EthDeposited0Iterator) Close() error { +func (it *TaikoL1TokenDeposited0Iterator) Close() error { it.sub.Unsubscribe() return nil } -// TaikoL1EthDeposited0 represents a EthDeposited0 event raised by the TaikoL1 contract. -type TaikoL1EthDeposited0 struct { - Deposit TaikoDataEthDeposit - Raw types.Log // Blockchain specific contextual infos +// TaikoL1TokenDeposited0 represents a TokenDeposited0 event raised by the TaikoL1 contract. +type TaikoL1TokenDeposited0 struct { + Amount *big.Int + Raw types.Log // Blockchain specific contextual infos } -// FilterEthDeposited0 is a free log retrieval operation binding the contract event 0x7120a3b075ad25974c5eed76dedb3a217c76c9c6d1f1e201caeba9b89de9a9d9. +// FilterTokenDeposited0 is a free log retrieval operation binding the contract event 0x26a49ee784523ce049bcbe276a63c7c9dbd9f428b1aa53633e679c9c046e8858. // -// Solidity: event EthDeposited((address,uint96,uint64) deposit) -func (_TaikoL1 *TaikoL1Filterer) FilterEthDeposited0(opts *bind.FilterOpts) (*TaikoL1EthDeposited0Iterator, error) { +// Solidity: event TokenDeposited(uint256 amount) +func (_TaikoL1 *TaikoL1Filterer) FilterTokenDeposited0(opts *bind.FilterOpts) (*TaikoL1TokenDeposited0Iterator, error) { - logs, sub, err := _TaikoL1.contract.FilterLogs(opts, "EthDeposited0") + logs, sub, err := _TaikoL1.contract.FilterLogs(opts, "TokenDeposited0") if err != nil { return nil, err } - return &TaikoL1EthDeposited0Iterator{contract: _TaikoL1.contract, event: "EthDeposited0", logs: logs, sub: sub}, nil + return &TaikoL1TokenDeposited0Iterator{contract: _TaikoL1.contract, event: "TokenDeposited0", logs: logs, sub: sub}, nil } -// WatchEthDeposited0 is a free log subscription operation binding the contract event 0x7120a3b075ad25974c5eed76dedb3a217c76c9c6d1f1e201caeba9b89de9a9d9. +// WatchTokenDeposited0 is a free log subscription operation binding the contract event 0x26a49ee784523ce049bcbe276a63c7c9dbd9f428b1aa53633e679c9c046e8858. // -// Solidity: event EthDeposited((address,uint96,uint64) deposit) -func (_TaikoL1 *TaikoL1Filterer) WatchEthDeposited0(opts *bind.WatchOpts, sink chan<- *TaikoL1EthDeposited0) (event.Subscription, error) { +// Solidity: event TokenDeposited(uint256 amount) +func (_TaikoL1 *TaikoL1Filterer) WatchTokenDeposited0(opts *bind.WatchOpts, sink chan<- *TaikoL1TokenDeposited0) (event.Subscription, error) { - logs, sub, err := _TaikoL1.contract.WatchLogs(opts, "EthDeposited0") + logs, sub, err := _TaikoL1.contract.WatchLogs(opts, "TokenDeposited0") if err != nil { return nil, err } @@ -3416,8 +3456,8 @@ func (_TaikoL1 *TaikoL1Filterer) WatchEthDeposited0(opts *bind.WatchOpts, sink c select { case log := <-logs: // New log arrived, parse the event and forward to the user - event := new(TaikoL1EthDeposited0) - if err := _TaikoL1.contract.UnpackLog(event, "EthDeposited0", log); err != nil { + event := new(TaikoL1TokenDeposited0) + if err := _TaikoL1.contract.UnpackLog(event, "TokenDeposited0", log); err != nil { return err } event.Raw = log @@ -3438,21 +3478,21 @@ func (_TaikoL1 *TaikoL1Filterer) WatchEthDeposited0(opts *bind.WatchOpts, sink c }), nil } -// ParseEthDeposited0 is a log parse operation binding the contract event 0x7120a3b075ad25974c5eed76dedb3a217c76c9c6d1f1e201caeba9b89de9a9d9. +// ParseTokenDeposited0 is a log parse operation binding the contract event 0x26a49ee784523ce049bcbe276a63c7c9dbd9f428b1aa53633e679c9c046e8858. // -// Solidity: event EthDeposited((address,uint96,uint64) deposit) -func (_TaikoL1 *TaikoL1Filterer) ParseEthDeposited0(log types.Log) (*TaikoL1EthDeposited0, error) { - event := new(TaikoL1EthDeposited0) - if err := _TaikoL1.contract.UnpackLog(event, "EthDeposited0", log); err != nil { +// Solidity: event TokenDeposited(uint256 amount) +func (_TaikoL1 *TaikoL1Filterer) ParseTokenDeposited0(log types.Log) (*TaikoL1TokenDeposited0, error) { + event := new(TaikoL1TokenDeposited0) + if err := _TaikoL1.contract.UnpackLog(event, "TokenDeposited0", log); err != nil { return nil, err } event.Raw = log return event, nil } -// TaikoL1InitializedIterator is returned from FilterInitialized and is used to iterate over the raw logs and unpacked data for Initialized events raised by the TaikoL1 contract. -type TaikoL1InitializedIterator struct { - Event *TaikoL1Initialized // Event containing the contract specifics and raw log +// TaikoL1TokenWithdrawnIterator is returned from FilterTokenWithdrawn and is used to iterate over the raw logs and unpacked data for TokenWithdrawn events raised by the TaikoL1 contract. +type TaikoL1TokenWithdrawnIterator struct { + Event *TaikoL1TokenWithdrawn // Event containing the contract specifics and raw log contract *bind.BoundContract // Generic contract to use for unpacking event data event string // Event name to use for unpacking event data @@ -3466,7 +3506,7 @@ type TaikoL1InitializedIterator struct { // Next advances the iterator to the subsequent event, returning whether there // are any more events found. In case of a retrieval or parsing error, false is // returned and Error() can be queried for the exact failure. -func (it *TaikoL1InitializedIterator) Next() bool { +func (it *TaikoL1TokenWithdrawnIterator) Next() bool { // If the iterator failed, stop iterating if it.fail != nil { return false @@ -3475,7 +3515,7 @@ func (it *TaikoL1InitializedIterator) Next() bool { if it.done { select { case log := <-it.logs: - it.Event = new(TaikoL1Initialized) + it.Event = new(TaikoL1TokenWithdrawn) if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { it.fail = err return false @@ -3490,7 +3530,7 @@ func (it *TaikoL1InitializedIterator) Next() bool { // Iterator still in progress, wait for either a data or an error event select { case log := <-it.logs: - it.Event = new(TaikoL1Initialized) + it.Event = new(TaikoL1TokenWithdrawn) if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { it.fail = err return false @@ -3506,41 +3546,41 @@ func (it *TaikoL1InitializedIterator) Next() bool { } // Error returns any retrieval or parsing error occurred during filtering. -func (it *TaikoL1InitializedIterator) Error() error { +func (it *TaikoL1TokenWithdrawnIterator) Error() error { return it.fail } // Close terminates the iteration process, releasing any pending underlying // resources. -func (it *TaikoL1InitializedIterator) Close() error { +func (it *TaikoL1TokenWithdrawnIterator) Close() error { it.sub.Unsubscribe() return nil } -// TaikoL1Initialized represents a Initialized event raised by the TaikoL1 contract. -type TaikoL1Initialized struct { - Version uint8 - Raw types.Log // Blockchain specific contextual infos +// TaikoL1TokenWithdrawn represents a TokenWithdrawn event raised by the TaikoL1 contract. +type TaikoL1TokenWithdrawn struct { + Amount *big.Int + Raw types.Log // Blockchain specific contextual infos } -// FilterInitialized is a free log retrieval operation binding the contract event 0x7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb3847402498. +// FilterTokenWithdrawn is a free log retrieval operation binding the contract event 0xc172f6497c150fc242267f743e8e4034b31b16ee123408d6d5f75a81128de114. // -// Solidity: event Initialized(uint8 version) -func (_TaikoL1 *TaikoL1Filterer) FilterInitialized(opts *bind.FilterOpts) (*TaikoL1InitializedIterator, error) { +// Solidity: event TokenWithdrawn(uint256 amount) +func (_TaikoL1 *TaikoL1Filterer) FilterTokenWithdrawn(opts *bind.FilterOpts) (*TaikoL1TokenWithdrawnIterator, error) { - logs, sub, err := _TaikoL1.contract.FilterLogs(opts, "Initialized") + logs, sub, err := _TaikoL1.contract.FilterLogs(opts, "TokenWithdrawn") if err != nil { return nil, err } - return &TaikoL1InitializedIterator{contract: _TaikoL1.contract, event: "Initialized", logs: logs, sub: sub}, nil + return &TaikoL1TokenWithdrawnIterator{contract: _TaikoL1.contract, event: "TokenWithdrawn", logs: logs, sub: sub}, nil } -// WatchInitialized is a free log subscription operation binding the contract event 0x7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb3847402498. +// WatchTokenWithdrawn is a free log subscription operation binding the contract event 0xc172f6497c150fc242267f743e8e4034b31b16ee123408d6d5f75a81128de114. // -// Solidity: event Initialized(uint8 version) -func (_TaikoL1 *TaikoL1Filterer) WatchInitialized(opts *bind.WatchOpts, sink chan<- *TaikoL1Initialized) (event.Subscription, error) { +// Solidity: event TokenWithdrawn(uint256 amount) +func (_TaikoL1 *TaikoL1Filterer) WatchTokenWithdrawn(opts *bind.WatchOpts, sink chan<- *TaikoL1TokenWithdrawn) (event.Subscription, error) { - logs, sub, err := _TaikoL1.contract.WatchLogs(opts, "Initialized") + logs, sub, err := _TaikoL1.contract.WatchLogs(opts, "TokenWithdrawn") if err != nil { return nil, err } @@ -3550,8 +3590,8 @@ func (_TaikoL1 *TaikoL1Filterer) WatchInitialized(opts *bind.WatchOpts, sink cha select { case log := <-logs: // New log arrived, parse the event and forward to the user - event := new(TaikoL1Initialized) - if err := _TaikoL1.contract.UnpackLog(event, "Initialized", log); err != nil { + event := new(TaikoL1TokenWithdrawn) + if err := _TaikoL1.contract.UnpackLog(event, "TokenWithdrawn", log); err != nil { return err } event.Raw = log @@ -3572,21 +3612,21 @@ func (_TaikoL1 *TaikoL1Filterer) WatchInitialized(opts *bind.WatchOpts, sink cha }), nil } -// ParseInitialized is a log parse operation binding the contract event 0x7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb3847402498. +// ParseTokenWithdrawn is a log parse operation binding the contract event 0xc172f6497c150fc242267f743e8e4034b31b16ee123408d6d5f75a81128de114. // -// Solidity: event Initialized(uint8 version) -func (_TaikoL1 *TaikoL1Filterer) ParseInitialized(log types.Log) (*TaikoL1Initialized, error) { - event := new(TaikoL1Initialized) - if err := _TaikoL1.contract.UnpackLog(event, "Initialized", log); err != nil { +// Solidity: event TokenWithdrawn(uint256 amount) +func (_TaikoL1 *TaikoL1Filterer) ParseTokenWithdrawn(log types.Log) (*TaikoL1TokenWithdrawn, error) { + event := new(TaikoL1TokenWithdrawn) + if err := _TaikoL1.contract.UnpackLog(event, "TokenWithdrawn", log); err != nil { return nil, err } event.Raw = log return event, nil } -// TaikoL1OwnershipTransferredIterator is returned from FilterOwnershipTransferred and is used to iterate over the raw logs and unpacked data for OwnershipTransferred events raised by the TaikoL1 contract. -type TaikoL1OwnershipTransferredIterator struct { - Event *TaikoL1OwnershipTransferred // Event containing the contract specifics and raw log +// TaikoL1TokenWithdrawn0Iterator is returned from FilterTokenWithdrawn0 and is used to iterate over the raw logs and unpacked data for TokenWithdrawn0 events raised by the TaikoL1 contract. +type TaikoL1TokenWithdrawn0Iterator struct { + Event *TaikoL1TokenWithdrawn0 // Event containing the contract specifics and raw log contract *bind.BoundContract // Generic contract to use for unpacking event data event string // Event name to use for unpacking event data @@ -3600,7 +3640,7 @@ type TaikoL1OwnershipTransferredIterator struct { // Next advances the iterator to the subsequent event, returning whether there // are any more events found. In case of a retrieval or parsing error, false is // returned and Error() can be queried for the exact failure. -func (it *TaikoL1OwnershipTransferredIterator) Next() bool { +func (it *TaikoL1TokenWithdrawn0Iterator) Next() bool { // If the iterator failed, stop iterating if it.fail != nil { return false @@ -3609,7 +3649,7 @@ func (it *TaikoL1OwnershipTransferredIterator) Next() bool { if it.done { select { case log := <-it.logs: - it.Event = new(TaikoL1OwnershipTransferred) + it.Event = new(TaikoL1TokenWithdrawn0) if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { it.fail = err return false @@ -3624,7 +3664,7 @@ func (it *TaikoL1OwnershipTransferredIterator) Next() bool { // Iterator still in progress, wait for either a data or an error event select { case log := <-it.logs: - it.Event = new(TaikoL1OwnershipTransferred) + it.Event = new(TaikoL1TokenWithdrawn0) if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { it.fail = err return false @@ -3640,60 +3680,176 @@ func (it *TaikoL1OwnershipTransferredIterator) Next() bool { } // Error returns any retrieval or parsing error occurred during filtering. -func (it *TaikoL1OwnershipTransferredIterator) Error() error { +func (it *TaikoL1TokenWithdrawn0Iterator) Error() error { return it.fail } // Close terminates the iteration process, releasing any pending underlying // resources. -func (it *TaikoL1OwnershipTransferredIterator) Close() error { +func (it *TaikoL1TokenWithdrawn0Iterator) Close() error { it.sub.Unsubscribe() return nil } -// TaikoL1OwnershipTransferred represents a OwnershipTransferred event raised by the TaikoL1 contract. -type TaikoL1OwnershipTransferred struct { - PreviousOwner common.Address - NewOwner common.Address - Raw types.Log // Blockchain specific contextual infos +// TaikoL1TokenWithdrawn0 represents a TokenWithdrawn0 event raised by the TaikoL1 contract. +type TaikoL1TokenWithdrawn0 struct { + Amount *big.Int + Raw types.Log // Blockchain specific contextual infos } -// FilterOwnershipTransferred is a free log retrieval operation binding the contract event 0x8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0. +// FilterTokenWithdrawn0 is a free log retrieval operation binding the contract event 0xc172f6497c150fc242267f743e8e4034b31b16ee123408d6d5f75a81128de114. // -// Solidity: event OwnershipTransferred(address indexed previousOwner, address indexed newOwner) -func (_TaikoL1 *TaikoL1Filterer) FilterOwnershipTransferred(opts *bind.FilterOpts, previousOwner []common.Address, newOwner []common.Address) (*TaikoL1OwnershipTransferredIterator, error) { +// Solidity: event TokenWithdrawn(uint256 amount) +func (_TaikoL1 *TaikoL1Filterer) FilterTokenWithdrawn0(opts *bind.FilterOpts) (*TaikoL1TokenWithdrawn0Iterator, error) { - var previousOwnerRule []interface{} - for _, previousOwnerItem := range previousOwner { - previousOwnerRule = append(previousOwnerRule, previousOwnerItem) - } - var newOwnerRule []interface{} - for _, newOwnerItem := range newOwner { - newOwnerRule = append(newOwnerRule, newOwnerItem) + logs, sub, err := _TaikoL1.contract.FilterLogs(opts, "TokenWithdrawn0") + if err != nil { + return nil, err } + return &TaikoL1TokenWithdrawn0Iterator{contract: _TaikoL1.contract, event: "TokenWithdrawn0", logs: logs, sub: sub}, nil +} - logs, sub, err := _TaikoL1.contract.FilterLogs(opts, "OwnershipTransferred", previousOwnerRule, newOwnerRule) +// WatchTokenWithdrawn0 is a free log subscription operation binding the contract event 0xc172f6497c150fc242267f743e8e4034b31b16ee123408d6d5f75a81128de114. +// +// Solidity: event TokenWithdrawn(uint256 amount) +func (_TaikoL1 *TaikoL1Filterer) WatchTokenWithdrawn0(opts *bind.WatchOpts, sink chan<- *TaikoL1TokenWithdrawn0) (event.Subscription, error) { + + logs, sub, err := _TaikoL1.contract.WatchLogs(opts, "TokenWithdrawn0") if err != nil { return nil, err } - return &TaikoL1OwnershipTransferredIterator{contract: _TaikoL1.contract, event: "OwnershipTransferred", logs: logs, sub: sub}, nil + return event.NewSubscription(func(quit <-chan struct{}) error { + defer sub.Unsubscribe() + for { + select { + case log := <-logs: + // New log arrived, parse the event and forward to the user + event := new(TaikoL1TokenWithdrawn0) + if err := _TaikoL1.contract.UnpackLog(event, "TokenWithdrawn0", log); err != nil { + return err + } + event.Raw = log + + select { + case sink <- event: + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + } + }), nil } -// WatchOwnershipTransferred is a free log subscription operation binding the contract event 0x8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0. +// ParseTokenWithdrawn0 is a log parse operation binding the contract event 0xc172f6497c150fc242267f743e8e4034b31b16ee123408d6d5f75a81128de114. // -// Solidity: event OwnershipTransferred(address indexed previousOwner, address indexed newOwner) -func (_TaikoL1 *TaikoL1Filterer) WatchOwnershipTransferred(opts *bind.WatchOpts, sink chan<- *TaikoL1OwnershipTransferred, previousOwner []common.Address, newOwner []common.Address) (event.Subscription, error) { +// Solidity: event TokenWithdrawn(uint256 amount) +func (_TaikoL1 *TaikoL1Filterer) ParseTokenWithdrawn0(log types.Log) (*TaikoL1TokenWithdrawn0, error) { + event := new(TaikoL1TokenWithdrawn0) + if err := _TaikoL1.contract.UnpackLog(event, "TokenWithdrawn0", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} - var previousOwnerRule []interface{} - for _, previousOwnerItem := range previousOwner { - previousOwnerRule = append(previousOwnerRule, previousOwnerItem) +// TaikoL1TokenWithdrawnByOwnerIterator is returned from FilterTokenWithdrawnByOwner and is used to iterate over the raw logs and unpacked data for TokenWithdrawnByOwner events raised by the TaikoL1 contract. +type TaikoL1TokenWithdrawnByOwnerIterator struct { + Event *TaikoL1TokenWithdrawnByOwner // Event containing the contract specifics and raw log + + contract *bind.BoundContract // Generic contract to use for unpacking event data + event string // Event name to use for unpacking event data + + logs chan types.Log // Log channel receiving the found contract events + sub ethereum.Subscription // Subscription for errors, completion and termination + done bool // Whether the subscription completed delivering logs + fail error // Occurred error to stop iteration +} + +// Next advances the iterator to the subsequent event, returning whether there +// are any more events found. In case of a retrieval or parsing error, false is +// returned and Error() can be queried for the exact failure. +func (it *TaikoL1TokenWithdrawnByOwnerIterator) Next() bool { + // If the iterator failed, stop iterating + if it.fail != nil { + return false } - var newOwnerRule []interface{} - for _, newOwnerItem := range newOwner { - newOwnerRule = append(newOwnerRule, newOwnerItem) + // If the iterator completed, deliver directly whatever's available + if it.done { + select { + case log := <-it.logs: + it.Event = new(TaikoL1TokenWithdrawnByOwner) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + default: + return false + } + } + // Iterator still in progress, wait for either a data or an error event + select { + case log := <-it.logs: + it.Event = new(TaikoL1TokenWithdrawnByOwner) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + case err := <-it.sub.Err(): + it.done = true + it.fail = err + return it.Next() } +} - logs, sub, err := _TaikoL1.contract.WatchLogs(opts, "OwnershipTransferred", previousOwnerRule, newOwnerRule) +// Error returns any retrieval or parsing error occurred during filtering. +func (it *TaikoL1TokenWithdrawnByOwnerIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *TaikoL1TokenWithdrawnByOwnerIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// TaikoL1TokenWithdrawnByOwner represents a TokenWithdrawnByOwner event raised by the TaikoL1 contract. +type TaikoL1TokenWithdrawnByOwner struct { + To common.Address + Amount *big.Int + Raw types.Log // Blockchain specific contextual infos +} + +// FilterTokenWithdrawnByOwner is a free log retrieval operation binding the contract event 0xc4f72d4b841abf7e4afe6a797fbc9d92a5186aa6332c2ff33c0e327f1c3e9a4c. +// +// Solidity: event TokenWithdrawnByOwner(address to, uint256 amount) +func (_TaikoL1 *TaikoL1Filterer) FilterTokenWithdrawnByOwner(opts *bind.FilterOpts) (*TaikoL1TokenWithdrawnByOwnerIterator, error) { + + logs, sub, err := _TaikoL1.contract.FilterLogs(opts, "TokenWithdrawnByOwner") + if err != nil { + return nil, err + } + return &TaikoL1TokenWithdrawnByOwnerIterator{contract: _TaikoL1.contract, event: "TokenWithdrawnByOwner", logs: logs, sub: sub}, nil +} + +// WatchTokenWithdrawnByOwner is a free log subscription operation binding the contract event 0xc4f72d4b841abf7e4afe6a797fbc9d92a5186aa6332c2ff33c0e327f1c3e9a4c. +// +// Solidity: event TokenWithdrawnByOwner(address to, uint256 amount) +func (_TaikoL1 *TaikoL1Filterer) WatchTokenWithdrawnByOwner(opts *bind.WatchOpts, sink chan<- *TaikoL1TokenWithdrawnByOwner) (event.Subscription, error) { + + logs, sub, err := _TaikoL1.contract.WatchLogs(opts, "TokenWithdrawnByOwner") if err != nil { return nil, err } @@ -3703,8 +3859,8 @@ func (_TaikoL1 *TaikoL1Filterer) WatchOwnershipTransferred(opts *bind.WatchOpts, select { case log := <-logs: // New log arrived, parse the event and forward to the user - event := new(TaikoL1OwnershipTransferred) - if err := _TaikoL1.contract.UnpackLog(event, "OwnershipTransferred", log); err != nil { + event := new(TaikoL1TokenWithdrawnByOwner) + if err := _TaikoL1.contract.UnpackLog(event, "TokenWithdrawnByOwner", log); err != nil { return err } event.Raw = log @@ -3725,12 +3881,747 @@ func (_TaikoL1 *TaikoL1Filterer) WatchOwnershipTransferred(opts *bind.WatchOpts, }), nil } -// ParseOwnershipTransferred is a log parse operation binding the contract event 0x8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0. +// ParseTokenWithdrawnByOwner is a log parse operation binding the contract event 0xc4f72d4b841abf7e4afe6a797fbc9d92a5186aa6332c2ff33c0e327f1c3e9a4c. // -// Solidity: event OwnershipTransferred(address indexed previousOwner, address indexed newOwner) -func (_TaikoL1 *TaikoL1Filterer) ParseOwnershipTransferred(log types.Log) (*TaikoL1OwnershipTransferred, error) { - event := new(TaikoL1OwnershipTransferred) - if err := _TaikoL1.contract.UnpackLog(event, "OwnershipTransferred", log); err != nil { +// Solidity: event TokenWithdrawnByOwner(address to, uint256 amount) +func (_TaikoL1 *TaikoL1Filterer) ParseTokenWithdrawnByOwner(log types.Log) (*TaikoL1TokenWithdrawnByOwner, error) { + event := new(TaikoL1TokenWithdrawnByOwner) + if err := _TaikoL1.contract.UnpackLog(event, "TokenWithdrawnByOwner", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} + +// TaikoL1TokenWithdrawnByOwner0Iterator is returned from FilterTokenWithdrawnByOwner0 and is used to iterate over the raw logs and unpacked data for TokenWithdrawnByOwner0 events raised by the TaikoL1 contract. +type TaikoL1TokenWithdrawnByOwner0Iterator struct { + Event *TaikoL1TokenWithdrawnByOwner0 // Event containing the contract specifics and raw log + + contract *bind.BoundContract // Generic contract to use for unpacking event data + event string // Event name to use for unpacking event data + + logs chan types.Log // Log channel receiving the found contract events + sub ethereum.Subscription // Subscription for errors, completion and termination + done bool // Whether the subscription completed delivering logs + fail error // Occurred error to stop iteration +} + +// Next advances the iterator to the subsequent event, returning whether there +// are any more events found. In case of a retrieval or parsing error, false is +// returned and Error() can be queried for the exact failure. +func (it *TaikoL1TokenWithdrawnByOwner0Iterator) Next() bool { + // If the iterator failed, stop iterating + if it.fail != nil { + return false + } + // If the iterator completed, deliver directly whatever's available + if it.done { + select { + case log := <-it.logs: + it.Event = new(TaikoL1TokenWithdrawnByOwner0) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + default: + return false + } + } + // Iterator still in progress, wait for either a data or an error event + select { + case log := <-it.logs: + it.Event = new(TaikoL1TokenWithdrawnByOwner0) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + case err := <-it.sub.Err(): + it.done = true + it.fail = err + return it.Next() + } +} + +// Error returns any retrieval or parsing error occurred during filtering. +func (it *TaikoL1TokenWithdrawnByOwner0Iterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *TaikoL1TokenWithdrawnByOwner0Iterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// TaikoL1TokenWithdrawnByOwner0 represents a TokenWithdrawnByOwner0 event raised by the TaikoL1 contract. +type TaikoL1TokenWithdrawnByOwner0 struct { + To common.Address + Amount *big.Int + Raw types.Log // Blockchain specific contextual infos +} + +// FilterTokenWithdrawnByOwner0 is a free log retrieval operation binding the contract event 0xc4f72d4b841abf7e4afe6a797fbc9d92a5186aa6332c2ff33c0e327f1c3e9a4c. +// +// Solidity: event TokenWithdrawnByOwner(address to, uint256 amount) +func (_TaikoL1 *TaikoL1Filterer) FilterTokenWithdrawnByOwner0(opts *bind.FilterOpts) (*TaikoL1TokenWithdrawnByOwner0Iterator, error) { + + logs, sub, err := _TaikoL1.contract.FilterLogs(opts, "TokenWithdrawnByOwner0") + if err != nil { + return nil, err + } + return &TaikoL1TokenWithdrawnByOwner0Iterator{contract: _TaikoL1.contract, event: "TokenWithdrawnByOwner0", logs: logs, sub: sub}, nil +} + +// WatchTokenWithdrawnByOwner0 is a free log subscription operation binding the contract event 0xc4f72d4b841abf7e4afe6a797fbc9d92a5186aa6332c2ff33c0e327f1c3e9a4c. +// +// Solidity: event TokenWithdrawnByOwner(address to, uint256 amount) +func (_TaikoL1 *TaikoL1Filterer) WatchTokenWithdrawnByOwner0(opts *bind.WatchOpts, sink chan<- *TaikoL1TokenWithdrawnByOwner0) (event.Subscription, error) { + + logs, sub, err := _TaikoL1.contract.WatchLogs(opts, "TokenWithdrawnByOwner0") + if err != nil { + return nil, err + } + return event.NewSubscription(func(quit <-chan struct{}) error { + defer sub.Unsubscribe() + for { + select { + case log := <-logs: + // New log arrived, parse the event and forward to the user + event := new(TaikoL1TokenWithdrawnByOwner0) + if err := _TaikoL1.contract.UnpackLog(event, "TokenWithdrawnByOwner0", log); err != nil { + return err + } + event.Raw = log + + select { + case sink <- event: + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + } + }), nil +} + +// ParseTokenWithdrawnByOwner0 is a log parse operation binding the contract event 0xc4f72d4b841abf7e4afe6a797fbc9d92a5186aa6332c2ff33c0e327f1c3e9a4c. +// +// Solidity: event TokenWithdrawnByOwner(address to, uint256 amount) +func (_TaikoL1 *TaikoL1Filterer) ParseTokenWithdrawnByOwner0(log types.Log) (*TaikoL1TokenWithdrawnByOwner0, error) { + event := new(TaikoL1TokenWithdrawnByOwner0) + if err := _TaikoL1.contract.UnpackLog(event, "TokenWithdrawnByOwner0", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} + +// TaikoL1TransitionContestedIterator is returned from FilterTransitionContested and is used to iterate over the raw logs and unpacked data for TransitionContested events raised by the TaikoL1 contract. +type TaikoL1TransitionContestedIterator struct { + Event *TaikoL1TransitionContested // Event containing the contract specifics and raw log + + contract *bind.BoundContract // Generic contract to use for unpacking event data + event string // Event name to use for unpacking event data + + logs chan types.Log // Log channel receiving the found contract events + sub ethereum.Subscription // Subscription for errors, completion and termination + done bool // Whether the subscription completed delivering logs + fail error // Occurred error to stop iteration +} + +// Next advances the iterator to the subsequent event, returning whether there +// are any more events found. In case of a retrieval or parsing error, false is +// returned and Error() can be queried for the exact failure. +func (it *TaikoL1TransitionContestedIterator) Next() bool { + // If the iterator failed, stop iterating + if it.fail != nil { + return false + } + // If the iterator completed, deliver directly whatever's available + if it.done { + select { + case log := <-it.logs: + it.Event = new(TaikoL1TransitionContested) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + default: + return false + } + } + // Iterator still in progress, wait for either a data or an error event + select { + case log := <-it.logs: + it.Event = new(TaikoL1TransitionContested) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + case err := <-it.sub.Err(): + it.done = true + it.fail = err + return it.Next() + } +} + +// Error returns any retrieval or parsing error occurred during filtering. +func (it *TaikoL1TransitionContestedIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *TaikoL1TransitionContestedIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// TaikoL1TransitionContested represents a TransitionContested event raised by the TaikoL1 contract. +type TaikoL1TransitionContested struct { + BlockId *big.Int + ParentHash [32]byte + BlockHash [32]byte + SignalRoot [32]byte + Contester common.Address + ContestBond *big.Int + Tier uint16 + Raw types.Log // Blockchain specific contextual infos +} + +// FilterTransitionContested is a free log retrieval operation binding the contract event 0x135961061f7c7cad9a389080483d14014ba6fe9ebcf6d3d826185c69dd71ce75. +// +// Solidity: event TransitionContested(uint256 indexed blockId, bytes32 parentHash, bytes32 blockHash, bytes32 signalRoot, address contester, uint96 contestBond, uint16 tier) +func (_TaikoL1 *TaikoL1Filterer) FilterTransitionContested(opts *bind.FilterOpts, blockId []*big.Int) (*TaikoL1TransitionContestedIterator, error) { + + var blockIdRule []interface{} + for _, blockIdItem := range blockId { + blockIdRule = append(blockIdRule, blockIdItem) + } + + logs, sub, err := _TaikoL1.contract.FilterLogs(opts, "TransitionContested", blockIdRule) + if err != nil { + return nil, err + } + return &TaikoL1TransitionContestedIterator{contract: _TaikoL1.contract, event: "TransitionContested", logs: logs, sub: sub}, nil +} + +// WatchTransitionContested is a free log subscription operation binding the contract event 0x135961061f7c7cad9a389080483d14014ba6fe9ebcf6d3d826185c69dd71ce75. +// +// Solidity: event TransitionContested(uint256 indexed blockId, bytes32 parentHash, bytes32 blockHash, bytes32 signalRoot, address contester, uint96 contestBond, uint16 tier) +func (_TaikoL1 *TaikoL1Filterer) WatchTransitionContested(opts *bind.WatchOpts, sink chan<- *TaikoL1TransitionContested, blockId []*big.Int) (event.Subscription, error) { + + var blockIdRule []interface{} + for _, blockIdItem := range blockId { + blockIdRule = append(blockIdRule, blockIdItem) + } + + logs, sub, err := _TaikoL1.contract.WatchLogs(opts, "TransitionContested", blockIdRule) + if err != nil { + return nil, err + } + return event.NewSubscription(func(quit <-chan struct{}) error { + defer sub.Unsubscribe() + for { + select { + case log := <-logs: + // New log arrived, parse the event and forward to the user + event := new(TaikoL1TransitionContested) + if err := _TaikoL1.contract.UnpackLog(event, "TransitionContested", log); err != nil { + return err + } + event.Raw = log + + select { + case sink <- event: + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + } + }), nil +} + +// ParseTransitionContested is a log parse operation binding the contract event 0x135961061f7c7cad9a389080483d14014ba6fe9ebcf6d3d826185c69dd71ce75. +// +// Solidity: event TransitionContested(uint256 indexed blockId, bytes32 parentHash, bytes32 blockHash, bytes32 signalRoot, address contester, uint96 contestBond, uint16 tier) +func (_TaikoL1 *TaikoL1Filterer) ParseTransitionContested(log types.Log) (*TaikoL1TransitionContested, error) { + event := new(TaikoL1TransitionContested) + if err := _TaikoL1.contract.UnpackLog(event, "TransitionContested", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} + +// TaikoL1TransitionContested0Iterator is returned from FilterTransitionContested0 and is used to iterate over the raw logs and unpacked data for TransitionContested0 events raised by the TaikoL1 contract. +type TaikoL1TransitionContested0Iterator struct { + Event *TaikoL1TransitionContested0 // Event containing the contract specifics and raw log + + contract *bind.BoundContract // Generic contract to use for unpacking event data + event string // Event name to use for unpacking event data + + logs chan types.Log // Log channel receiving the found contract events + sub ethereum.Subscription // Subscription for errors, completion and termination + done bool // Whether the subscription completed delivering logs + fail error // Occurred error to stop iteration +} + +// Next advances the iterator to the subsequent event, returning whether there +// are any more events found. In case of a retrieval or parsing error, false is +// returned and Error() can be queried for the exact failure. +func (it *TaikoL1TransitionContested0Iterator) Next() bool { + // If the iterator failed, stop iterating + if it.fail != nil { + return false + } + // If the iterator completed, deliver directly whatever's available + if it.done { + select { + case log := <-it.logs: + it.Event = new(TaikoL1TransitionContested0) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + default: + return false + } + } + // Iterator still in progress, wait for either a data or an error event + select { + case log := <-it.logs: + it.Event = new(TaikoL1TransitionContested0) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + case err := <-it.sub.Err(): + it.done = true + it.fail = err + return it.Next() + } +} + +// Error returns any retrieval or parsing error occurred during filtering. +func (it *TaikoL1TransitionContested0Iterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *TaikoL1TransitionContested0Iterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// TaikoL1TransitionContested0 represents a TransitionContested0 event raised by the TaikoL1 contract. +type TaikoL1TransitionContested0 struct { + BlockId *big.Int + ParentHash [32]byte + BlockHash [32]byte + SignalRoot [32]byte + Contester common.Address + ContestBond *big.Int + Tier uint16 + Raw types.Log // Blockchain specific contextual infos +} + +// FilterTransitionContested0 is a free log retrieval operation binding the contract event 0x135961061f7c7cad9a389080483d14014ba6fe9ebcf6d3d826185c69dd71ce75. +// +// Solidity: event TransitionContested(uint256 indexed blockId, bytes32 parentHash, bytes32 blockHash, bytes32 signalRoot, address contester, uint96 contestBond, uint16 tier) +func (_TaikoL1 *TaikoL1Filterer) FilterTransitionContested0(opts *bind.FilterOpts, blockId []*big.Int) (*TaikoL1TransitionContested0Iterator, error) { + + var blockIdRule []interface{} + for _, blockIdItem := range blockId { + blockIdRule = append(blockIdRule, blockIdItem) + } + + logs, sub, err := _TaikoL1.contract.FilterLogs(opts, "TransitionContested0", blockIdRule) + if err != nil { + return nil, err + } + return &TaikoL1TransitionContested0Iterator{contract: _TaikoL1.contract, event: "TransitionContested0", logs: logs, sub: sub}, nil +} + +// WatchTransitionContested0 is a free log subscription operation binding the contract event 0x135961061f7c7cad9a389080483d14014ba6fe9ebcf6d3d826185c69dd71ce75. +// +// Solidity: event TransitionContested(uint256 indexed blockId, bytes32 parentHash, bytes32 blockHash, bytes32 signalRoot, address contester, uint96 contestBond, uint16 tier) +func (_TaikoL1 *TaikoL1Filterer) WatchTransitionContested0(opts *bind.WatchOpts, sink chan<- *TaikoL1TransitionContested0, blockId []*big.Int) (event.Subscription, error) { + + var blockIdRule []interface{} + for _, blockIdItem := range blockId { + blockIdRule = append(blockIdRule, blockIdItem) + } + + logs, sub, err := _TaikoL1.contract.WatchLogs(opts, "TransitionContested0", blockIdRule) + if err != nil { + return nil, err + } + return event.NewSubscription(func(quit <-chan struct{}) error { + defer sub.Unsubscribe() + for { + select { + case log := <-logs: + // New log arrived, parse the event and forward to the user + event := new(TaikoL1TransitionContested0) + if err := _TaikoL1.contract.UnpackLog(event, "TransitionContested0", log); err != nil { + return err + } + event.Raw = log + + select { + case sink <- event: + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + } + }), nil +} + +// ParseTransitionContested0 is a log parse operation binding the contract event 0x135961061f7c7cad9a389080483d14014ba6fe9ebcf6d3d826185c69dd71ce75. +// +// Solidity: event TransitionContested(uint256 indexed blockId, bytes32 parentHash, bytes32 blockHash, bytes32 signalRoot, address contester, uint96 contestBond, uint16 tier) +func (_TaikoL1 *TaikoL1Filterer) ParseTransitionContested0(log types.Log) (*TaikoL1TransitionContested0, error) { + event := new(TaikoL1TransitionContested0) + if err := _TaikoL1.contract.UnpackLog(event, "TransitionContested0", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} + +// TaikoL1TransitionProvedIterator is returned from FilterTransitionProved and is used to iterate over the raw logs and unpacked data for TransitionProved events raised by the TaikoL1 contract. +type TaikoL1TransitionProvedIterator struct { + Event *TaikoL1TransitionProved // Event containing the contract specifics and raw log + + contract *bind.BoundContract // Generic contract to use for unpacking event data + event string // Event name to use for unpacking event data + + logs chan types.Log // Log channel receiving the found contract events + sub ethereum.Subscription // Subscription for errors, completion and termination + done bool // Whether the subscription completed delivering logs + fail error // Occurred error to stop iteration +} + +// Next advances the iterator to the subsequent event, returning whether there +// are any more events found. In case of a retrieval or parsing error, false is +// returned and Error() can be queried for the exact failure. +func (it *TaikoL1TransitionProvedIterator) Next() bool { + // If the iterator failed, stop iterating + if it.fail != nil { + return false + } + // If the iterator completed, deliver directly whatever's available + if it.done { + select { + case log := <-it.logs: + it.Event = new(TaikoL1TransitionProved) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + default: + return false + } + } + // Iterator still in progress, wait for either a data or an error event + select { + case log := <-it.logs: + it.Event = new(TaikoL1TransitionProved) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + case err := <-it.sub.Err(): + it.done = true + it.fail = err + return it.Next() + } +} + +// Error returns any retrieval or parsing error occurred during filtering. +func (it *TaikoL1TransitionProvedIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *TaikoL1TransitionProvedIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// TaikoL1TransitionProved represents a TransitionProved event raised by the TaikoL1 contract. +type TaikoL1TransitionProved struct { + BlockId *big.Int + ParentHash [32]byte + BlockHash [32]byte + SignalRoot [32]byte + Prover common.Address + ValidityBond *big.Int + Tier uint16 + Raw types.Log // Blockchain specific contextual infos +} + +// FilterTransitionProved is a free log retrieval operation binding the contract event 0x9eaac66787b7d7e72981c31449ddd9bde78ffdb8cb3e6543ba2b9a4bb653b5e3. +// +// Solidity: event TransitionProved(uint256 indexed blockId, bytes32 parentHash, bytes32 blockHash, bytes32 signalRoot, address prover, uint96 validityBond, uint16 tier) +func (_TaikoL1 *TaikoL1Filterer) FilterTransitionProved(opts *bind.FilterOpts, blockId []*big.Int) (*TaikoL1TransitionProvedIterator, error) { + + var blockIdRule []interface{} + for _, blockIdItem := range blockId { + blockIdRule = append(blockIdRule, blockIdItem) + } + + logs, sub, err := _TaikoL1.contract.FilterLogs(opts, "TransitionProved", blockIdRule) + if err != nil { + return nil, err + } + return &TaikoL1TransitionProvedIterator{contract: _TaikoL1.contract, event: "TransitionProved", logs: logs, sub: sub}, nil +} + +// WatchTransitionProved is a free log subscription operation binding the contract event 0x9eaac66787b7d7e72981c31449ddd9bde78ffdb8cb3e6543ba2b9a4bb653b5e3. +// +// Solidity: event TransitionProved(uint256 indexed blockId, bytes32 parentHash, bytes32 blockHash, bytes32 signalRoot, address prover, uint96 validityBond, uint16 tier) +func (_TaikoL1 *TaikoL1Filterer) WatchTransitionProved(opts *bind.WatchOpts, sink chan<- *TaikoL1TransitionProved, blockId []*big.Int) (event.Subscription, error) { + + var blockIdRule []interface{} + for _, blockIdItem := range blockId { + blockIdRule = append(blockIdRule, blockIdItem) + } + + logs, sub, err := _TaikoL1.contract.WatchLogs(opts, "TransitionProved", blockIdRule) + if err != nil { + return nil, err + } + return event.NewSubscription(func(quit <-chan struct{}) error { + defer sub.Unsubscribe() + for { + select { + case log := <-logs: + // New log arrived, parse the event and forward to the user + event := new(TaikoL1TransitionProved) + if err := _TaikoL1.contract.UnpackLog(event, "TransitionProved", log); err != nil { + return err + } + event.Raw = log + + select { + case sink <- event: + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + } + }), nil +} + +// ParseTransitionProved is a log parse operation binding the contract event 0x9eaac66787b7d7e72981c31449ddd9bde78ffdb8cb3e6543ba2b9a4bb653b5e3. +// +// Solidity: event TransitionProved(uint256 indexed blockId, bytes32 parentHash, bytes32 blockHash, bytes32 signalRoot, address prover, uint96 validityBond, uint16 tier) +func (_TaikoL1 *TaikoL1Filterer) ParseTransitionProved(log types.Log) (*TaikoL1TransitionProved, error) { + event := new(TaikoL1TransitionProved) + if err := _TaikoL1.contract.UnpackLog(event, "TransitionProved", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} + +// TaikoL1TransitionProved0Iterator is returned from FilterTransitionProved0 and is used to iterate over the raw logs and unpacked data for TransitionProved0 events raised by the TaikoL1 contract. +type TaikoL1TransitionProved0Iterator struct { + Event *TaikoL1TransitionProved0 // Event containing the contract specifics and raw log + + contract *bind.BoundContract // Generic contract to use for unpacking event data + event string // Event name to use for unpacking event data + + logs chan types.Log // Log channel receiving the found contract events + sub ethereum.Subscription // Subscription for errors, completion and termination + done bool // Whether the subscription completed delivering logs + fail error // Occurred error to stop iteration +} + +// Next advances the iterator to the subsequent event, returning whether there +// are any more events found. In case of a retrieval or parsing error, false is +// returned and Error() can be queried for the exact failure. +func (it *TaikoL1TransitionProved0Iterator) Next() bool { + // If the iterator failed, stop iterating + if it.fail != nil { + return false + } + // If the iterator completed, deliver directly whatever's available + if it.done { + select { + case log := <-it.logs: + it.Event = new(TaikoL1TransitionProved0) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + default: + return false + } + } + // Iterator still in progress, wait for either a data or an error event + select { + case log := <-it.logs: + it.Event = new(TaikoL1TransitionProved0) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + case err := <-it.sub.Err(): + it.done = true + it.fail = err + return it.Next() + } +} + +// Error returns any retrieval or parsing error occurred during filtering. +func (it *TaikoL1TransitionProved0Iterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *TaikoL1TransitionProved0Iterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// TaikoL1TransitionProved0 represents a TransitionProved0 event raised by the TaikoL1 contract. +type TaikoL1TransitionProved0 struct { + BlockId *big.Int + ParentHash [32]byte + BlockHash [32]byte + SignalRoot [32]byte + Prover common.Address + ValidityBond *big.Int + Tier uint16 + Raw types.Log // Blockchain specific contextual infos +} + +// FilterTransitionProved0 is a free log retrieval operation binding the contract event 0x9eaac66787b7d7e72981c31449ddd9bde78ffdb8cb3e6543ba2b9a4bb653b5e3. +// +// Solidity: event TransitionProved(uint256 indexed blockId, bytes32 parentHash, bytes32 blockHash, bytes32 signalRoot, address prover, uint96 validityBond, uint16 tier) +func (_TaikoL1 *TaikoL1Filterer) FilterTransitionProved0(opts *bind.FilterOpts, blockId []*big.Int) (*TaikoL1TransitionProved0Iterator, error) { + + var blockIdRule []interface{} + for _, blockIdItem := range blockId { + blockIdRule = append(blockIdRule, blockIdItem) + } + + logs, sub, err := _TaikoL1.contract.FilterLogs(opts, "TransitionProved0", blockIdRule) + if err != nil { + return nil, err + } + return &TaikoL1TransitionProved0Iterator{contract: _TaikoL1.contract, event: "TransitionProved0", logs: logs, sub: sub}, nil +} + +// WatchTransitionProved0 is a free log subscription operation binding the contract event 0x9eaac66787b7d7e72981c31449ddd9bde78ffdb8cb3e6543ba2b9a4bb653b5e3. +// +// Solidity: event TransitionProved(uint256 indexed blockId, bytes32 parentHash, bytes32 blockHash, bytes32 signalRoot, address prover, uint96 validityBond, uint16 tier) +func (_TaikoL1 *TaikoL1Filterer) WatchTransitionProved0(opts *bind.WatchOpts, sink chan<- *TaikoL1TransitionProved0, blockId []*big.Int) (event.Subscription, error) { + + var blockIdRule []interface{} + for _, blockIdItem := range blockId { + blockIdRule = append(blockIdRule, blockIdItem) + } + + logs, sub, err := _TaikoL1.contract.WatchLogs(opts, "TransitionProved0", blockIdRule) + if err != nil { + return nil, err + } + return event.NewSubscription(func(quit <-chan struct{}) error { + defer sub.Unsubscribe() + for { + select { + case log := <-logs: + // New log arrived, parse the event and forward to the user + event := new(TaikoL1TransitionProved0) + if err := _TaikoL1.contract.UnpackLog(event, "TransitionProved0", log); err != nil { + return err + } + event.Raw = log + + select { + case sink <- event: + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + } + }), nil +} + +// ParseTransitionProved0 is a log parse operation binding the contract event 0x9eaac66787b7d7e72981c31449ddd9bde78ffdb8cb3e6543ba2b9a4bb653b5e3. +// +// Solidity: event TransitionProved(uint256 indexed blockId, bytes32 parentHash, bytes32 blockHash, bytes32 signalRoot, address prover, uint96 validityBond, uint16 tier) +func (_TaikoL1 *TaikoL1Filterer) ParseTransitionProved0(log types.Log) (*TaikoL1TransitionProved0, error) { + event := new(TaikoL1TransitionProved0) + if err := _TaikoL1.contract.UnpackLog(event, "TransitionProved0", log); err != nil { return nil, err } event.Raw = log diff --git a/packages/eventindexer/event.go b/packages/eventindexer/event.go index 8fd589ae4b..1a561d7c16 100644 --- a/packages/eventindexer/event.go +++ b/packages/eventindexer/event.go @@ -13,13 +13,14 @@ import ( ) var ( - EventNameBlockProven = "BlockProven" - EventNameBlockProposed = "BlockProposed" - EventNameBlockVerified = "BlockVerified" - EventNameMessageSent = "MessageSent" - EventNameSwap = "Swap" - EventNameMint = "Mint" - EventNameNFTTransfer = "Transfer" + EventNameTransitionProved = "TransitionProved" + EventNameTransitionContested = "TransitionContested" + EventNameBlockProposed = "BlockProposed" + EventNameBlockVerified = "BlockVerified" + EventNameMessageSent = "MessageSent" + EventNameSwap = "Swap" + EventNameMint = "Mint" + EventNameNFTTransfer = "Transfer" ) // Event represents a stored EVM event. The fields will be serialized diff --git a/packages/eventindexer/generator/generator.go b/packages/eventindexer/generator/generator.go index b60228f9b4..6d93016d7d 100644 --- a/packages/eventindexer/generator/generator.go +++ b/packages/eventindexer/generator/generator.go @@ -291,29 +291,58 @@ func (g *Generator) queryByTask(task string, date time.Time) (decimal.Decimal, e case tasks.UniqueProversPerDay: query := "SELECT COUNT(DISTINCT address) FROM events WHERE event = ? AND DATE(transacted_at) = ?" err = g.db.GormDB(). - Raw(query, eventindexer.EventNameBlockProven, dateString). + Raw(query, eventindexer.EventNameTransitionProved, dateString). Scan(&result).Error case tasks.TotalUniqueProvers: query := `SELECT COUNT(DISTINCT address) FROM events WHERE event = ?` err = g.db.GormDB().Raw( query, - eventindexer.EventNameBlockProven, + eventindexer.EventNameTransitionProved, ).Scan(&result).Error if err != nil { return result, err } - case tasks.ProveBlockTxPerDay: + case tasks.TransitionProvedTxPerDay: query := "SELECT COUNT(*) FROM events WHERE event = ? AND DATE(transacted_at) = ?" err = g.db.GormDB(). - Raw(query, eventindexer.EventNameBlockProven, dateString). + Raw(query, eventindexer.EventNameTransitionProved, dateString). Scan(&result).Error - case tasks.TotalProveBlockTx: - var dailyProveBlockCount decimal.NullDecimal + case tasks.TotalTransitionProvedTx: + var dailyTransitionProvedCount decimal.NullDecimal query := `SELECT COUNT(*) FROM events WHERE event = ? AND DATE(transacted_at) = ?` - err = g.db.GormDB().Raw(query, eventindexer.EventNameBlockProven, dateString).Scan(&dailyProveBlockCount).Error + err = g.db.GormDB().Raw( + query, + eventindexer.EventNameTransitionProved, + dateString, + ).Scan(&dailyTransitionProvedCount).Error + if err != nil { + return result, err + } + + tsdResult, err := g.previousDayTsdResultByTask(task, date) + if err != nil { + return result, err + } + + result = tsdResult.Decimal.Add(dailyTransitionProvedCount.Decimal) + case tasks.TransitionContestedTxPerDay: + query := "SELECT COUNT(*) FROM events WHERE event = ? AND DATE(transacted_at) = ?" + err = g.db.GormDB(). + Raw(query, eventindexer.EventNameTransitionContested, dateString). + Scan(&result).Error + case tasks.TotalTransitionContestedTx: + var dailyTransitionContestedCount decimal.NullDecimal + + query := `SELECT COUNT(*) FROM events WHERE event = ? AND DATE(transacted_at) = ?` + + err = g.db.GormDB().Raw( + query, + eventindexer.EventNameTransitionContested, + dateString, + ).Scan(&dailyTransitionContestedCount).Error if err != nil { return result, err } @@ -323,7 +352,7 @@ func (g *Generator) queryByTask(task string, date time.Time) (decimal.Decimal, e return result, err } - result = tsdResult.Decimal.Add(dailyProveBlockCount.Decimal) + result = tsdResult.Decimal.Add(dailyTransitionContestedCount.Decimal) case tasks.AccountsPerDay: query := `SELECT COUNT(*) FROM accounts WHERE DATE(transacted_at) = ?` err = g.db.GormDB().Raw(query, dateString).Scan(&result).Error diff --git a/packages/eventindexer/http/get_unique_provers_test.go b/packages/eventindexer/http/get_unique_provers_test.go index e0927b648b..a8a586fe1a 100644 --- a/packages/eventindexer/http/get_unique_provers_test.go +++ b/packages/eventindexer/http/get_unique_provers_test.go @@ -22,7 +22,7 @@ func Test_GetUniqueProvers(t *testing.T) { Data: `{"Owner": "0x0000000000000000000000000000000000000123"}`, ChainID: big.NewInt(167001), Address: "0x123", - Event: eventindexer.EventNameBlockProven, + Event: eventindexer.EventNameTransitionProved, TransactedAt: time.Now(), }) diff --git a/packages/eventindexer/http/user_proved_block.go b/packages/eventindexer/http/user_proved_block.go index 0687eb8525..35598877d8 100644 --- a/packages/eventindexer/http/user_proved_block.go +++ b/packages/eventindexer/http/user_proved_block.go @@ -12,7 +12,7 @@ func (srv *Server) UserProvedBlock(c echo.Context) error { event, err := srv.eventRepo.FirstByAddressAndEventName( c.Request().Context(), c.QueryParam("address"), - eventindexer.EventNameBlockProven, + eventindexer.EventNameTransitionProved, ) if err != nil { return webutils.LogAndRenderErrors(c, http.StatusUnprocessableEntity, err) diff --git a/packages/eventindexer/indexer/filter.go b/packages/eventindexer/indexer/filter.go index 8fe6a80fb9..1441cd4540 100644 --- a/packages/eventindexer/indexer/filter.go +++ b/packages/eventindexer/indexer/filter.go @@ -29,12 +29,12 @@ func filterFunc( if indxr.taikol1 != nil { wg.Go(func() error { - blockProvenEvents, err := indxr.taikol1.FilterBlockProven(filterOpts, nil) + transitionProvedEvents, err := indxr.taikol1.FilterTransitionProved(filterOpts, nil) if err != nil { - return errors.Wrap(err, "indxr.taikol1.FilterBlockProven") + return errors.Wrap(err, "indxr.taikol1.FilterTransitionProved") } - err = indxr.saveBlockProvenEvents(ctx, chainID, blockProvenEvents) + err = indxr.saveTransitionProvedEvents(ctx, chainID, transitionProvedEvents) if err != nil { return errors.Wrap(err, "indxr.saveBlockProvenEvents") } @@ -42,6 +42,20 @@ func filterFunc( return nil }) + wg.Go(func() error { + transitionContestedEvents, err := indxr.taikol1.FilterTransitionContested(filterOpts, nil) + if err != nil { + return errors.Wrap(err, "indxr.taikol1.FilterTransitionContested") + } + + err = indxr.saveTransitionContestedEvents(ctx, chainID, transitionContestedEvents) + if err != nil { + return errors.Wrap(err, "indxr.saveTransitionContestedEvents") + } + + return nil + }) + wg.Go(func() error { blockProposedEvents, err := indxr.taikol1.FilterBlockProposed(filterOpts, nil, nil) if err != nil { @@ -57,7 +71,7 @@ func filterFunc( }) wg.Go(func() error { - blockVerifiedEvents, err := indxr.taikol1.FilterBlockVerified(filterOpts, nil, nil) + blockVerifiedEvents, err := indxr.taikol1.FilterBlockVerified(filterOpts, nil, nil, nil) if err != nil { return errors.Wrap(err, "indxr.taikol1.FilterBlockVerified") } diff --git a/packages/eventindexer/indexer/save_block_proposed_event.go b/packages/eventindexer/indexer/save_block_proposed_event.go index 6564efcef1..231e4283a3 100644 --- a/packages/eventindexer/indexer/save_block_proposed_event.go +++ b/packages/eventindexer/indexer/save_block_proposed_event.go @@ -68,7 +68,7 @@ func (indxr *Indexer) saveBlockProposedEvent( blockID := event.BlockId.Int64() - assignedProver := event.Prover.Hex() + assignedProver := event.AssignedProver.Hex() block, err := indxr.ethClient.BlockByNumber(ctx, new(big.Int).SetUint64(event.Raw.BlockNumber)) if err != nil { @@ -133,7 +133,7 @@ func (indxr *Indexer) updateAverageProposerReward( "id", event.BlockId.Int64(), "prover", - event.Prover.Hex(), + event.AssignedProver.Hex(), "avg", avg.String(), "newAvg", @@ -181,7 +181,7 @@ func (indxr *Indexer) updateAverageProverReward( "id", event.BlockId.Int64(), "prover", - event.Prover.Hex(), + event.AssignedProver.Hex(), "avg", avg.String(), "newAvg", diff --git a/packages/eventindexer/indexer/save_transition_contested_event.go b/packages/eventindexer/indexer/save_transition_contested_event.go new file mode 100644 index 0000000000..a721bccba4 --- /dev/null +++ b/packages/eventindexer/indexer/save_transition_contested_event.go @@ -0,0 +1,89 @@ +package indexer + +import ( + "context" + "encoding/json" + "math/big" + "time" + + "log/slog" + + "github.com/pkg/errors" + "github.com/taikoxyz/taiko-mono/packages/eventindexer" + "github.com/taikoxyz/taiko-mono/packages/eventindexer/contracts/taikol1" +) + +func (indxr *Indexer) saveTransitionContestedEvents( + ctx context.Context, + chainID *big.Int, + events *taikol1.TaikoL1TransitionContestedIterator, +) error { + if !events.Next() || events.Event == nil { + slog.Info("no transitionContested events") + return nil + } + + for { + event := events.Event + + if err := indxr.detectAndHandleReorg( + ctx, + eventindexer.EventNameTransitionContested, + event.BlockId.Int64(), + ); err != nil { + return errors.Wrap(err, "indxr.detectAndHandleReorg") + } + + if err := indxr.saveTransitionContestedEvent(ctx, chainID, event); err != nil { + eventindexer.TransitionContestedEventsProcessedError.Inc() + + return errors.Wrap(err, "indxr.saveBlockProvenEvent") + } + + if !events.Next() { + return nil + } + } +} + +func (indxr *Indexer) saveTransitionContestedEvent( + ctx context.Context, + chainID *big.Int, + event *taikol1.TaikoL1TransitionContested, +) error { + slog.Info("transitionContested event found", + "blockID", event.BlockId.Int64(), + "contestBond", event.ContestBond.String(), + "contester", event.Contester.Hex(), + "tier", event.Tier, + ) + + marshaled, err := json.Marshal(event) + if err != nil { + return errors.Wrap(err, "json.Marshal(event)") + } + + blockID := event.BlockId.Int64() + + block, err := indxr.ethClient.BlockByNumber(ctx, new(big.Int).SetUint64(event.Raw.BlockNumber)) + if err != nil { + return errors.Wrap(err, "indxr.ethClient.BlockByNumber") + } + + _, err = indxr.eventRepo.Save(ctx, eventindexer.SaveEventOpts{ + Name: eventindexer.EventNameTransitionContested, + Data: string(marshaled), + ChainID: chainID, + Event: eventindexer.EventNameTransitionContested, + Address: event.Contester.Hex(), + BlockID: &blockID, + TransactedAt: time.Unix(int64(block.Time()), 0), + }) + if err != nil { + return errors.Wrap(err, "indxr.eventRepo.Save") + } + + eventindexer.TransitionContestedEventsProcessed.Inc() + + return nil +} diff --git a/packages/eventindexer/indexer/save_block_proven_event.go b/packages/eventindexer/indexer/save_transition_proved_event.go similarity index 83% rename from packages/eventindexer/indexer/save_block_proven_event.go rename to packages/eventindexer/indexer/save_transition_proved_event.go index 6bdebe599e..4a27359e3c 100644 --- a/packages/eventindexer/indexer/save_block_proven_event.go +++ b/packages/eventindexer/indexer/save_transition_proved_event.go @@ -19,25 +19,25 @@ var ( oracleProver = common.HexToAddress("0x0000000000000000000000000000000000000000") ) -func (indxr *Indexer) saveBlockProvenEvents( +func (indxr *Indexer) saveTransitionProvedEvents( ctx context.Context, chainID *big.Int, - events *taikol1.TaikoL1BlockProvenIterator, + events *taikol1.TaikoL1TransitionProvedIterator, ) error { if !events.Next() || events.Event == nil { - slog.Info("no blockProven events") + slog.Info("no transitionProved events") return nil } for { event := events.Event - if err := indxr.detectAndHandleReorg(ctx, eventindexer.EventNameBlockProven, event.BlockId.Int64()); err != nil { + if err := indxr.detectAndHandleReorg(ctx, eventindexer.EventNameTransitionProved, event.BlockId.Int64()); err != nil { return errors.Wrap(err, "indxr.detectAndHandleReorg") } - if err := indxr.saveBlockProvenEvent(ctx, chainID, event); err != nil { - eventindexer.BlockProvenEventsProcessedError.Inc() + if err := indxr.saveTransitionProvedEvent(ctx, chainID, event); err != nil { + eventindexer.TransitionProvedEventsProcessedError.Inc() return errors.Wrap(err, "indxr.saveBlockProvenEvent") } @@ -48,12 +48,12 @@ func (indxr *Indexer) saveBlockProvenEvents( } } -func (indxr *Indexer) saveBlockProvenEvent( +func (indxr *Indexer) saveTransitionProvedEvent( ctx context.Context, chainID *big.Int, - event *taikol1.TaikoL1BlockProven, + event *taikol1.TaikoL1TransitionProved, ) error { - slog.Info("blockProven event found", + slog.Info("transitionProved event found", "blockID", event.BlockId.Int64(), "prover", event.Prover.Hex()) @@ -70,10 +70,10 @@ func (indxr *Indexer) saveBlockProvenEvent( } _, err = indxr.eventRepo.Save(ctx, eventindexer.SaveEventOpts{ - Name: eventindexer.EventNameBlockProven, + Name: eventindexer.EventNameTransitionProved, Data: string(marshaled), ChainID: chainID, - Event: eventindexer.EventNameBlockProven, + Event: eventindexer.EventNameTransitionProved, Address: event.Prover.Hex(), BlockID: &blockID, TransactedAt: time.Unix(int64(block.Time()), 0), @@ -82,7 +82,7 @@ func (indxr *Indexer) saveBlockProvenEvent( return errors.Wrap(err, "indxr.eventRepo.Save") } - eventindexer.BlockProvenEventsProcessed.Inc() + eventindexer.TransitionProvedEventsProcessed.Inc() if event.Prover.Hex() != systemProver.Hex() && event.Prover.Hex() != oracleProver.Hex() { if err := indxr.updateAverageProofTime(ctx, event); err != nil { @@ -93,7 +93,7 @@ func (indxr *Indexer) saveBlockProvenEvent( return nil } -func (indxr *Indexer) updateAverageProofTime(ctx context.Context, event *taikol1.TaikoL1BlockProven) error { +func (indxr *Indexer) updateAverageProofTime(ctx context.Context, event *taikol1.TaikoL1TransitionProved) error { block, err := indxr.taikol1.GetBlock(nil, event.BlockId.Uint64()) // will be unable to GetBlock for older blocks, just return nil, we dont // care about averageProofTime that much to be honest for older blocks diff --git a/packages/eventindexer/indexer/subscribe.go b/packages/eventindexer/indexer/subscribe.go index 36db09e2e4..02f9f45117 100644 --- a/packages/eventindexer/indexer/subscribe.go +++ b/packages/eventindexer/indexer/subscribe.go @@ -24,7 +24,8 @@ func (indxr *Indexer) subscribe(ctx context.Context, chainID *big.Int) error { errChan := make(chan error) if indxr.taikol1 != nil { - go indxr.subscribeBlockProven(ctx, chainID, errChan) + go indxr.subscribeTransitionProved(ctx, chainID, errChan) + go indxr.subscribeTransitionContested(ctx, chainID, errChan) go indxr.subscribeBlockProposed(ctx, chainID, errChan) go indxr.subscribeBlockVerified(ctx, chainID, errChan) } @@ -94,18 +95,18 @@ func (indxr *Indexer) subscribeRawBlockData( } } -func (indxr *Indexer) subscribeBlockProven(ctx context.Context, chainID *big.Int, errChan chan error) { - sink := make(chan *taikol1.TaikoL1BlockProven) +func (indxr *Indexer) subscribeTransitionProved(ctx context.Context, chainID *big.Int, errChan chan error) { + sink := make(chan *taikol1.TaikoL1TransitionProved) sub := event.ResubscribeErr( indxr.subscriptionBackoff, func(ctx context.Context, err error) (event.Subscription, error) { if err != nil { - log.Error("indxr.taikoL1.WatchBlockProven", "error", err) + log.Error("indxr.taikoL1.WatchTransitionProved", "error", err) } - log.Info("resubscribing to BlockProven events") + log.Info("resubscribing to TransitionProved events") - return indxr.taikol1.WatchBlockProven(&bind.WatchOpts{ + return indxr.taikol1.WatchTransitionProved(&bind.WatchOpts{ Context: ctx, }, sink, nil) }) @@ -122,14 +123,82 @@ func (indxr *Indexer) subscribeBlockProven(ctx context.Context, chainID *big.Int errChan <- errors.Wrap(err, "sub.Err()") case event := <-sink: go func() { - log.Info("blockProvenEvent from subscription for prover", + log.Info("transitionProvenEvent from subscription for prover", "prover", event.Prover.Hex(), + "blockId", event.BlockId.String(), ) - if err := indxr.saveBlockProvenEvent(ctx, chainID, event); err != nil { - eventindexer.BlockProvenEventsProcessedError.Inc() + if err := indxr.saveTransitionProvedEvent(ctx, chainID, event); err != nil { + eventindexer.TransitionProvedEventsProcessedError.Inc() - log.Error("indxr.subscribe, indxr.saveBlockProvenEvent", "error", err) + log.Error("indxr.subscribe, indxr.saveTransitionProvedEvent", "error", err) + + return + } + + block, err := indxr.processedBlockRepo.GetLatestBlockProcessed(chainID) + if err != nil { + slog.Error("indxr.subscribe, indxr.processedBlockRepo.GetLatestBlockProcessed", "error", err) + return + } + + if block.Height < event.Raw.BlockNumber { + err = indxr.processedBlockRepo.Save(eventindexer.SaveProcessedBlockOpts{ + Height: event.Raw.BlockNumber, + Hash: event.Raw.BlockHash, + ChainID: chainID, + }) + if err != nil { + slog.Error("indxr.subscribe, blockRepo.save", "error", err) + return + } + + eventindexer.BlocksProcessed.Inc() + } + }() + } + } +} + +func (indxr *Indexer) subscribeTransitionContested(ctx context.Context, chainID *big.Int, errChan chan error) { + sink := make(chan *taikol1.TaikoL1TransitionContested) + + sub := event.ResubscribeErr( + indxr.subscriptionBackoff, + func(ctx context.Context, err error) (event.Subscription, error) { + if err != nil { + log.Error("indxr.taikoL1.WatchTransitionContested", "error", err) + } + log.Info("resubscribing to TransitionContested events") + + return indxr.taikol1.WatchTransitionContested(&bind.WatchOpts{ + Context: ctx, + }, sink, nil) + }) + + defer sub.Unsubscribe() + + for { + select { + case <-ctx.Done(): + slog.Info("context finished") + return + case err := <-sub.Err(): + slog.Error("sub.Err()", "error", err) + errChan <- errors.Wrap(err, "sub.Err()") + case event := <-sink: + go func() { + log.Info("transitionContestedEvent from subscription for prover", + "contester", event.Contester.Hex(), + "blockId", event.BlockId.String(), + "contestBond", event.ContestBond.String(), + "tier", event.Tier, + ) + + if err := indxr.saveTransitionContestedEvent(ctx, chainID, event); err != nil { + eventindexer.TransitionContestedEventsProcessedError.Inc() + + log.Error("indxr.subscribe, indxr.saveTransitionContestedEvent", "error", err) return } @@ -252,7 +321,7 @@ func (indxr *Indexer) subscribeBlockVerified(ctx context.Context, chainID *big.I return indxr.taikol1.WatchBlockVerified(&bind.WatchOpts{ Context: ctx, - }, sink, nil, nil) + }, sink, nil, nil, nil) }) defer sub.Unsubscribe() diff --git a/packages/eventindexer/migrations/1666650599_create_events_table.sql b/packages/eventindexer/migrations/1666650599_create_events_table.sql index 40fe273e1f..3452a9f2f6 100644 --- a/packages/eventindexer/migrations/1666650599_create_events_table.sql +++ b/packages/eventindexer/migrations/1666650599_create_events_table.sql @@ -2,8 +2,8 @@ -- +goose StatementBegin CREATE TABLE IF NOT EXISTS events ( id int NOT NULL PRIMARY KEY AUTO_INCREMENT, - name VARCHAR(15) NOT NULL, - event VARCHAR(15) NOT NULL DEFAULT "", + name VARCHAR(24) NOT NULL, + event VARCHAR(24) NOT NULL DEFAULT "", chain_id int NOT NULL, data JSON NOT NULL, address VARCHAR(42) NOT NULL DEFAULT "", diff --git a/packages/eventindexer/prometheus.go b/packages/eventindexer/prometheus.go index ea95653d7d..36df523d6a 100644 --- a/packages/eventindexer/prometheus.go +++ b/packages/eventindexer/prometheus.go @@ -14,14 +14,22 @@ var ( Name: "block_proposed_events_processed_error_ops_total", Help: "The total number of processed BlockProposed event errors encountered", }) - BlockProvenEventsProcessed = promauto.NewCounter(prometheus.CounterOpts{ + TransitionProvedEventsProcessed = promauto.NewCounter(prometheus.CounterOpts{ Name: "block_proven_events_processed_ops_total", Help: "The total number of processed BlockProven events", }) - BlockProvenEventsProcessedError = promauto.NewCounter(prometheus.CounterOpts{ + TransitionProvedEventsProcessedError = promauto.NewCounter(prometheus.CounterOpts{ Name: "block_proven_events_processed_error_ops_total", Help: "The total number of processed BlockProven event errors encountered", }) + TransitionContestedEventsProcessed = promauto.NewCounter(prometheus.CounterOpts{ + Name: "block_contested_events_processed_ops_total", + Help: "The total number of processed BlockContested events", + }) + TransitionContestedEventsProcessedError = promauto.NewCounter(prometheus.CounterOpts{ + Name: "block_contested_events_processed_error_ops_total", + Help: "The total number of processed BlockContested event errors encountered", + }) BlockVerifiedEventsProcessed = promauto.NewCounter(prometheus.CounterOpts{ Name: "block_verified_events_processed_ops_total", Help: "The total number of processed BlockVerified events", diff --git a/packages/eventindexer/repo/event.go b/packages/eventindexer/repo/event.go index cb28860426..45776bffc9 100644 --- a/packages/eventindexer/repo/event.go +++ b/packages/eventindexer/repo/event.go @@ -141,7 +141,7 @@ func (r *EventRepository) FindUniqueProvers( if err := r.db.GormDB(). Raw("SELECT address, count(*) AS count FROM events WHERE event = ? GROUP BY address", - eventindexer.EventNameBlockProven). + eventindexer.EventNameTransitionProved). FirstOrInit(&addrs).Error; err != nil { return nil, errors.Wrap(err, "r.db.FirstOrInit") } diff --git a/packages/eventindexer/repo/event_test.go b/packages/eventindexer/repo/event_test.go index 1b1897de18..a05967ec34 100644 --- a/packages/eventindexer/repo/event_test.go +++ b/packages/eventindexer/repo/event_test.go @@ -14,10 +14,10 @@ import ( var ( blockID int64 = 1 dummyProveEventOpts = eventindexer.SaveEventOpts{ - Name: eventindexer.EventNameBlockProven, + Name: eventindexer.EventNameTransitionProved, Address: "0x123", Data: "{\"data\":\"something\"}", - Event: eventindexer.EventNameBlockProven, + Event: eventindexer.EventNameTransitionProved, ChainID: big.NewInt(1), BlockID: &blockID, TransactedAt: time.Now(), diff --git a/packages/eventindexer/tasks/tasks.go b/packages/eventindexer/tasks/tasks.go index 62e4bc5cab..54140776fe 100644 --- a/packages/eventindexer/tasks/tasks.go +++ b/packages/eventindexer/tasks/tasks.go @@ -1,28 +1,30 @@ package tasks var ( - TotalTransactions = "total-transactions" - TransactionsPerDay = "transactions-per-day" - TotalBlocks = "total-blocks" - BlocksPerDay = "blocks-per-day" - TotalAccounts = "total-accounts" - AccountsPerDay = "accounts-per-day" - UniqueProposersPerDay = "unique-proposers-per-day" - TotalUniqueProposers = "total-proposers" - UniqueProversPerDay = "unique-provers-per-day" - TotalUniqueProvers = "total-provers" - TotalContractDeployments = "total-contract-deployments" - ContractDeploymentsPerDay = "contract-deployments-per-day" - ProveBlockTxPerDay = "prove-block-tx-per-day" - TotalProveBlockTx = "total-prove-block-tx" - ProposeBlockTxPerDay = "propose-block-tx-per-day" - TotalProposeBlockTx = "total-propose-block-tx" - BridgeMessagesSentPerDay = "bridge-messages-sent-per-day" - TotalBridgeMessagesSent = "total-bridge-messages-sent" - TotalProofRewards = "total-proof-rewards" - ProofRewardsPerDay = "proof-rewards-per-day" - TotalProposerRewards = "total-proposer-rewards" - ProposerRewardsPerDay = "proposer-rewards-per-day" + TotalTransactions = "total-transactions" + TransactionsPerDay = "transactions-per-day" + TotalBlocks = "total-blocks" + BlocksPerDay = "blocks-per-day" + TotalAccounts = "total-accounts" + AccountsPerDay = "accounts-per-day" + UniqueProposersPerDay = "unique-proposers-per-day" + TotalUniqueProposers = "total-proposers" + UniqueProversPerDay = "unique-provers-per-day" + TotalUniqueProvers = "total-provers" + TotalContractDeployments = "total-contract-deployments" + ContractDeploymentsPerDay = "contract-deployments-per-day" + TransitionProvedTxPerDay = "transition-proved-tx-per-day" + TotalTransitionProvedTx = "total-transition-proved-tx" + TransitionContestedTxPerDay = "transition-contested-tx-per-day" + TotalTransitionContestedTx = "total-transition-contested-tx" + ProposeBlockTxPerDay = "propose-block-tx-per-day" + TotalProposeBlockTx = "total-propose-block-tx" + BridgeMessagesSentPerDay = "bridge-messages-sent-per-day" + TotalBridgeMessagesSent = "total-bridge-messages-sent" + TotalProofRewards = "total-proof-rewards" + ProofRewardsPerDay = "proof-rewards-per-day" + TotalProposerRewards = "total-proposer-rewards" + ProposerRewardsPerDay = "proposer-rewards-per-day" ) var Tasks = []string{ @@ -38,8 +40,10 @@ var Tasks = []string{ TotalUniqueProvers, TotalContractDeployments, ContractDeploymentsPerDay, - ProveBlockTxPerDay, - TotalProveBlockTx, + TransitionProvedTxPerDay, + TotalTransitionProvedTx, + TransitionContestedTxPerDay, + TotalTransitionContestedTx, ProposeBlockTxPerDay, TotalProposeBlockTx, BridgeMessagesSentPerDay, diff --git a/packages/relayer/ERC1155Vault.json b/packages/relayer/ERC1155Vault.json new file mode 100644 index 0000000000..bf5ab4ea8f --- /dev/null +++ b/packages/relayer/ERC1155Vault.json @@ -0,0 +1,815 @@ +[ + { + "inputs": [], + "name": "RESOLVER_DENIED", + "type": "error" + }, + { + "inputs": [], + "name": "RESOLVER_INVALID_ADDR", + "type": "error" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "chainId", + "type": "uint256" + }, + { + "internalType": "bytes32", + "name": "name", + "type": "bytes32" + } + ], + "name": "RESOLVER_ZERO_ADDR", + "type": "error" + }, + { + "inputs": [], + "name": "VAULT_INTERFACE_NOT_SUPPORTED", + "type": "error" + }, + { + "inputs": [], + "name": "VAULT_INVALID_AMOUNT", + "type": "error" + }, + { + "inputs": [], + "name": "VAULT_INVALID_FROM", + "type": "error" + }, + { + "inputs": [], + "name": "VAULT_INVALID_SRC_CHAIN_ID", + "type": "error" + }, + { + "inputs": [], + "name": "VAULT_INVALID_TO", + "type": "error" + }, + { + "inputs": [], + "name": "VAULT_INVALID_TOKEN", + "type": "error" + }, + { + "inputs": [], + "name": "VAULT_INVALID_USER", + "type": "error" + }, + { + "inputs": [], + "name": "VAULT_MAX_TOKEN_PER_TXN_EXCEEDED", + "type": "error" + }, + { + "inputs": [], + "name": "VAULT_MESSAGE_NOT_FAILED", + "type": "error" + }, + { + "inputs": [], + "name": "VAULT_MESSAGE_RELEASED_ALREADY", + "type": "error" + }, + { + "inputs": [], + "name": "VAULT_TOKEN_ARRAY_MISMATCH", + "type": "error" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "addressManager", + "type": "address" + } + ], + "name": "AddressManagerChanged", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "uint256", + "name": "chainId", + "type": "uint256" + }, + { + "indexed": true, + "internalType": "address", + "name": "ctoken", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "btoken", + "type": "address" + }, + { + "indexed": false, + "internalType": "string", + "name": "ctokenSymbol", + "type": "string" + }, + { + "indexed": false, + "internalType": "string", + "name": "ctokenName", + "type": "string" + } + ], + "name": "BridgedTokenDeployed", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "uint8", + "name": "version", + "type": "uint8" + } + ], + "name": "Initialized", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "previousOwner", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "newOwner", + "type": "address" + } + ], + "name": "OwnershipTransferred", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "bytes32", + "name": "msgHash", + "type": "bytes32" + }, + { + "indexed": true, + "internalType": "address", + "name": "from", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "to", + "type": "address" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "srcChainId", + "type": "uint256" + }, + { + "indexed": false, + "internalType": "address", + "name": "token", + "type": "address" + }, + { + "indexed": false, + "internalType": "uint256[]", + "name": "tokenIds", + "type": "uint256[]" + }, + { + "indexed": false, + "internalType": "uint256[]", + "name": "amounts", + "type": "uint256[]" + } + ], + "name": "TokenReceived", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "bytes32", + "name": "msgHash", + "type": "bytes32" + }, + { + "indexed": true, + "internalType": "address", + "name": "from", + "type": "address" + }, + { + "indexed": false, + "internalType": "address", + "name": "token", + "type": "address" + }, + { + "indexed": false, + "internalType": "uint256[]", + "name": "tokenIds", + "type": "uint256[]" + }, + { + "indexed": false, + "internalType": "uint256[]", + "name": "amounts", + "type": "uint256[]" + } + ], + "name": "TokenReleased", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "bytes32", + "name": "msgHash", + "type": "bytes32" + }, + { + "indexed": true, + "internalType": "address", + "name": "from", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "to", + "type": "address" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "destChainId", + "type": "uint256" + }, + { + "indexed": false, + "internalType": "address", + "name": "token", + "type": "address" + }, + { + "indexed": false, + "internalType": "uint256[]", + "name": "tokenIds", + "type": "uint256[]" + }, + { + "indexed": false, + "internalType": "uint256[]", + "name": "amounts", + "type": "uint256[]" + } + ], + "name": "TokenSent", + "type": "event" + }, + { + "inputs": [], + "name": "ERC1155_INTERFACE_ID", + "outputs": [ + { + "internalType": "bytes4", + "name": "", + "type": "bytes4" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "ERC721_INTERFACE_ID", + "outputs": [ + { + "internalType": "bytes4", + "name": "", + "type": "bytes4" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "addressManager", + "outputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "name": "bridgedToCanonical", + "outputs": [ + { + "internalType": "uint256", + "name": "chainId", + "type": "uint256" + }, + { + "internalType": "address", + "name": "addr", + "type": "address" + }, + { + "internalType": "string", + "name": "symbol", + "type": "string" + }, + { + "internalType": "string", + "name": "name", + "type": "string" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + }, + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "name": "canonicalToBridged", + "outputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "addressManager", + "type": "address" + } + ], + "name": "init", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "name": "isBridgedToken", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + }, + { + "internalType": "address", + "name": "", + "type": "address" + }, + { + "internalType": "uint256[]", + "name": "", + "type": "uint256[]" + }, + { + "internalType": "uint256[]", + "name": "", + "type": "uint256[]" + }, + { + "internalType": "bytes", + "name": "", + "type": "bytes" + } + ], + "name": "onERC1155BatchReceived", + "outputs": [ + { + "internalType": "bytes4", + "name": "", + "type": "bytes4" + } + ], + "stateMutability": "pure", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + }, + { + "internalType": "address", + "name": "", + "type": "address" + }, + { + "internalType": "uint256", + "name": "", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "", + "type": "uint256" + }, + { + "internalType": "bytes", + "name": "", + "type": "bytes" + } + ], + "name": "onERC1155Received", + "outputs": [ + { + "internalType": "bytes4", + "name": "", + "type": "bytes4" + } + ], + "stateMutability": "pure", + "type": "function" + }, + { + "inputs": [ + { + "components": [ + { + "internalType": "uint256", + "name": "id", + "type": "uint256" + }, + { + "internalType": "address", + "name": "from", + "type": "address" + }, + { + "internalType": "uint256", + "name": "srcChainId", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "destChainId", + "type": "uint256" + }, + { + "internalType": "address", + "name": "user", + "type": "address" + }, + { + "internalType": "address", + "name": "to", + "type": "address" + }, + { + "internalType": "address", + "name": "refundTo", + "type": "address" + }, + { + "internalType": "uint256", + "name": "value", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "fee", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "gasLimit", + "type": "uint256" + }, + { + "internalType": "bytes", + "name": "data", + "type": "bytes" + }, + { + "internalType": "string", + "name": "memo", + "type": "string" + } + ], + "internalType": "struct IBridge.Message", + "name": "message", + "type": "tuple" + } + ], + "name": "onMessageRecalled", + "outputs": [], + "stateMutability": "payable", + "type": "function" + }, + { + "inputs": [], + "name": "owner", + "outputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "components": [ + { + "internalType": "uint256", + "name": "chainId", + "type": "uint256" + }, + { + "internalType": "address", + "name": "addr", + "type": "address" + }, + { + "internalType": "string", + "name": "symbol", + "type": "string" + }, + { + "internalType": "string", + "name": "name", + "type": "string" + } + ], + "internalType": "struct BaseNFTVault.CanonicalNFT", + "name": "ctoken", + "type": "tuple" + }, + { + "internalType": "address", + "name": "from", + "type": "address" + }, + { + "internalType": "address", + "name": "to", + "type": "address" + }, + { + "internalType": "uint256[]", + "name": "tokenIds", + "type": "uint256[]" + }, + { + "internalType": "uint256[]", + "name": "amounts", + "type": "uint256[]" + } + ], + "name": "receiveToken", + "outputs": [], + "stateMutability": "payable", + "type": "function" + }, + { + "inputs": [], + "name": "renounceOwnership", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "chainId", + "type": "uint256" + }, + { + "internalType": "bytes32", + "name": "name", + "type": "bytes32" + }, + { + "internalType": "bool", + "name": "allowZeroAddress", + "type": "bool" + } + ], + "name": "resolve", + "outputs": [ + { + "internalType": "address payable", + "name": "addr", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "bytes32", + "name": "name", + "type": "bytes32" + }, + { + "internalType": "bool", + "name": "allowZeroAddress", + "type": "bool" + } + ], + "name": "resolve", + "outputs": [ + { + "internalType": "address payable", + "name": "addr", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "components": [ + { + "internalType": "uint256", + "name": "destChainId", + "type": "uint256" + }, + { + "internalType": "address", + "name": "to", + "type": "address" + }, + { + "internalType": "address", + "name": "token", + "type": "address" + }, + { + "internalType": "uint256[]", + "name": "tokenIds", + "type": "uint256[]" + }, + { + "internalType": "uint256[]", + "name": "amounts", + "type": "uint256[]" + }, + { + "internalType": "uint256", + "name": "gasLimit", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "fee", + "type": "uint256" + }, + { + "internalType": "address", + "name": "refundTo", + "type": "address" + }, + { + "internalType": "string", + "name": "memo", + "type": "string" + } + ], + "internalType": "struct BaseNFTVault.BridgeTransferOp", + "name": "opt", + "type": "tuple" + } + ], + "name": "sendToken", + "outputs": [], + "stateMutability": "payable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "newAddressManager", + "type": "address" + } + ], + "name": "setAddressManager", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "bytes4", + "name": "interfaceId", + "type": "bytes4" + } + ], + "name": "supportsInterface", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "newOwner", + "type": "address" + } + ], + "name": "transferOwnership", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + } +] diff --git a/packages/relayer/ERC20Vault.json b/packages/relayer/ERC20Vault.json new file mode 100644 index 0000000000..98ef72350f --- /dev/null +++ b/packages/relayer/ERC20Vault.json @@ -0,0 +1,684 @@ +[ + { + "inputs": [], + "name": "RESOLVER_DENIED", + "type": "error" + }, + { + "inputs": [], + "name": "RESOLVER_INVALID_ADDR", + "type": "error" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "chainId", + "type": "uint256" + }, + { + "internalType": "bytes32", + "name": "name", + "type": "bytes32" + } + ], + "name": "RESOLVER_ZERO_ADDR", + "type": "error" + }, + { + "inputs": [], + "name": "VAULT_INVALID_AMOUNT", + "type": "error" + }, + { + "inputs": [], + "name": "VAULT_INVALID_FROM", + "type": "error" + }, + { + "inputs": [], + "name": "VAULT_INVALID_SRC_CHAIN_ID", + "type": "error" + }, + { + "inputs": [], + "name": "VAULT_INVALID_TO", + "type": "error" + }, + { + "inputs": [], + "name": "VAULT_INVALID_TOKEN", + "type": "error" + }, + { + "inputs": [], + "name": "VAULT_INVALID_USER", + "type": "error" + }, + { + "inputs": [], + "name": "VAULT_MESSAGE_NOT_FAILED", + "type": "error" + }, + { + "inputs": [], + "name": "VAULT_MESSAGE_RELEASED_ALREADY", + "type": "error" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "addressManager", + "type": "address" + } + ], + "name": "AddressManagerChanged", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "uint256", + "name": "srcChainId", + "type": "uint256" + }, + { + "indexed": true, + "internalType": "address", + "name": "ctoken", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "btoken", + "type": "address" + }, + { + "indexed": false, + "internalType": "string", + "name": "ctokenSymbol", + "type": "string" + }, + { + "indexed": false, + "internalType": "string", + "name": "ctokenName", + "type": "string" + }, + { + "indexed": false, + "internalType": "uint8", + "name": "ctokenDecimal", + "type": "uint8" + } + ], + "name": "BridgedTokenDeployed", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "uint8", + "name": "version", + "type": "uint8" + } + ], + "name": "Initialized", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "previousOwner", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "newOwner", + "type": "address" + } + ], + "name": "OwnershipTransferred", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "bytes32", + "name": "msgHash", + "type": "bytes32" + }, + { + "indexed": true, + "internalType": "address", + "name": "from", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "to", + "type": "address" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "srcChainId", + "type": "uint256" + }, + { + "indexed": false, + "internalType": "address", + "name": "token", + "type": "address" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "amount", + "type": "uint256" + } + ], + "name": "TokenReceived", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "bytes32", + "name": "msgHash", + "type": "bytes32" + }, + { + "indexed": true, + "internalType": "address", + "name": "from", + "type": "address" + }, + { + "indexed": false, + "internalType": "address", + "name": "token", + "type": "address" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "amount", + "type": "uint256" + } + ], + "name": "TokenReleased", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "bytes32", + "name": "msgHash", + "type": "bytes32" + }, + { + "indexed": true, + "internalType": "address", + "name": "from", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "to", + "type": "address" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "destChainId", + "type": "uint256" + }, + { + "indexed": false, + "internalType": "address", + "name": "token", + "type": "address" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "amount", + "type": "uint256" + } + ], + "name": "TokenSent", + "type": "event" + }, + { + "inputs": [], + "name": "addressManager", + "outputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "name": "bridgedToCanonical", + "outputs": [ + { + "internalType": "uint256", + "name": "chainId", + "type": "uint256" + }, + { + "internalType": "address", + "name": "addr", + "type": "address" + }, + { + "internalType": "uint8", + "name": "decimals", + "type": "uint8" + }, + { + "internalType": "string", + "name": "symbol", + "type": "string" + }, + { + "internalType": "string", + "name": "name", + "type": "string" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + }, + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "name": "canonicalToBridged", + "outputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "addressManager", + "type": "address" + } + ], + "name": "init", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "name": "isBridgedToken", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "components": [ + { + "internalType": "uint256", + "name": "id", + "type": "uint256" + }, + { + "internalType": "address", + "name": "from", + "type": "address" + }, + { + "internalType": "uint256", + "name": "srcChainId", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "destChainId", + "type": "uint256" + }, + { + "internalType": "address", + "name": "user", + "type": "address" + }, + { + "internalType": "address", + "name": "to", + "type": "address" + }, + { + "internalType": "address", + "name": "refundTo", + "type": "address" + }, + { + "internalType": "uint256", + "name": "value", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "fee", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "gasLimit", + "type": "uint256" + }, + { + "internalType": "bytes", + "name": "data", + "type": "bytes" + }, + { + "internalType": "string", + "name": "memo", + "type": "string" + } + ], + "internalType": "struct IBridge.Message", + "name": "message", + "type": "tuple" + } + ], + "name": "onMessageRecalled", + "outputs": [], + "stateMutability": "payable", + "type": "function" + }, + { + "inputs": [], + "name": "owner", + "outputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "components": [ + { + "internalType": "uint256", + "name": "chainId", + "type": "uint256" + }, + { + "internalType": "address", + "name": "addr", + "type": "address" + }, + { + "internalType": "uint8", + "name": "decimals", + "type": "uint8" + }, + { + "internalType": "string", + "name": "symbol", + "type": "string" + }, + { + "internalType": "string", + "name": "name", + "type": "string" + } + ], + "internalType": "struct ERC20Vault.CanonicalERC20", + "name": "ctoken", + "type": "tuple" + }, + { + "internalType": "address", + "name": "from", + "type": "address" + }, + { + "internalType": "address", + "name": "to", + "type": "address" + }, + { + "internalType": "uint256", + "name": "amount", + "type": "uint256" + } + ], + "name": "receiveToken", + "outputs": [], + "stateMutability": "payable", + "type": "function" + }, + { + "inputs": [], + "name": "renounceOwnership", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "chainId", + "type": "uint256" + }, + { + "internalType": "bytes32", + "name": "name", + "type": "bytes32" + }, + { + "internalType": "bool", + "name": "allowZeroAddress", + "type": "bool" + } + ], + "name": "resolve", + "outputs": [ + { + "internalType": "address payable", + "name": "addr", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "bytes32", + "name": "name", + "type": "bytes32" + }, + { + "internalType": "bool", + "name": "allowZeroAddress", + "type": "bool" + } + ], + "name": "resolve", + "outputs": [ + { + "internalType": "address payable", + "name": "addr", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "components": [ + { + "internalType": "uint256", + "name": "destChainId", + "type": "uint256" + }, + { + "internalType": "address", + "name": "to", + "type": "address" + }, + { + "internalType": "address", + "name": "token", + "type": "address" + }, + { + "internalType": "uint256", + "name": "amount", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "gasLimit", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "fee", + "type": "uint256" + }, + { + "internalType": "address", + "name": "refundTo", + "type": "address" + }, + { + "internalType": "string", + "name": "memo", + "type": "string" + } + ], + "internalType": "struct ERC20Vault.BridgeTransferOp", + "name": "opt", + "type": "tuple" + } + ], + "name": "sendToken", + "outputs": [], + "stateMutability": "payable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "newAddressManager", + "type": "address" + } + ], + "name": "setAddressManager", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "bytes4", + "name": "interfaceId", + "type": "bytes4" + } + ], + "name": "supportsInterface", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "newOwner", + "type": "address" + } + ], + "name": "transferOwnership", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + } +] diff --git a/packages/relayer/ERC721Vault.json b/packages/relayer/ERC721Vault.json new file mode 100644 index 0000000000..461abec176 --- /dev/null +++ b/packages/relayer/ERC721Vault.json @@ -0,0 +1,766 @@ +[ + { + "inputs": [], + "name": "RESOLVER_DENIED", + "type": "error" + }, + { + "inputs": [], + "name": "RESOLVER_INVALID_ADDR", + "type": "error" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "chainId", + "type": "uint256" + }, + { + "internalType": "bytes32", + "name": "name", + "type": "bytes32" + } + ], + "name": "RESOLVER_ZERO_ADDR", + "type": "error" + }, + { + "inputs": [], + "name": "VAULT_INTERFACE_NOT_SUPPORTED", + "type": "error" + }, + { + "inputs": [], + "name": "VAULT_INVALID_AMOUNT", + "type": "error" + }, + { + "inputs": [], + "name": "VAULT_INVALID_FROM", + "type": "error" + }, + { + "inputs": [], + "name": "VAULT_INVALID_SRC_CHAIN_ID", + "type": "error" + }, + { + "inputs": [], + "name": "VAULT_INVALID_TO", + "type": "error" + }, + { + "inputs": [], + "name": "VAULT_INVALID_TOKEN", + "type": "error" + }, + { + "inputs": [], + "name": "VAULT_INVALID_USER", + "type": "error" + }, + { + "inputs": [], + "name": "VAULT_MAX_TOKEN_PER_TXN_EXCEEDED", + "type": "error" + }, + { + "inputs": [], + "name": "VAULT_MESSAGE_NOT_FAILED", + "type": "error" + }, + { + "inputs": [], + "name": "VAULT_MESSAGE_RELEASED_ALREADY", + "type": "error" + }, + { + "inputs": [], + "name": "VAULT_TOKEN_ARRAY_MISMATCH", + "type": "error" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "addressManager", + "type": "address" + } + ], + "name": "AddressManagerChanged", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "uint256", + "name": "chainId", + "type": "uint256" + }, + { + "indexed": true, + "internalType": "address", + "name": "ctoken", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "btoken", + "type": "address" + }, + { + "indexed": false, + "internalType": "string", + "name": "ctokenSymbol", + "type": "string" + }, + { + "indexed": false, + "internalType": "string", + "name": "ctokenName", + "type": "string" + } + ], + "name": "BridgedTokenDeployed", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "uint8", + "name": "version", + "type": "uint8" + } + ], + "name": "Initialized", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "previousOwner", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "newOwner", + "type": "address" + } + ], + "name": "OwnershipTransferred", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "bytes32", + "name": "msgHash", + "type": "bytes32" + }, + { + "indexed": true, + "internalType": "address", + "name": "from", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "to", + "type": "address" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "srcChainId", + "type": "uint256" + }, + { + "indexed": false, + "internalType": "address", + "name": "token", + "type": "address" + }, + { + "indexed": false, + "internalType": "uint256[]", + "name": "tokenIds", + "type": "uint256[]" + }, + { + "indexed": false, + "internalType": "uint256[]", + "name": "amounts", + "type": "uint256[]" + } + ], + "name": "TokenReceived", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "bytes32", + "name": "msgHash", + "type": "bytes32" + }, + { + "indexed": true, + "internalType": "address", + "name": "from", + "type": "address" + }, + { + "indexed": false, + "internalType": "address", + "name": "token", + "type": "address" + }, + { + "indexed": false, + "internalType": "uint256[]", + "name": "tokenIds", + "type": "uint256[]" + }, + { + "indexed": false, + "internalType": "uint256[]", + "name": "amounts", + "type": "uint256[]" + } + ], + "name": "TokenReleased", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "bytes32", + "name": "msgHash", + "type": "bytes32" + }, + { + "indexed": true, + "internalType": "address", + "name": "from", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "to", + "type": "address" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "destChainId", + "type": "uint256" + }, + { + "indexed": false, + "internalType": "address", + "name": "token", + "type": "address" + }, + { + "indexed": false, + "internalType": "uint256[]", + "name": "tokenIds", + "type": "uint256[]" + }, + { + "indexed": false, + "internalType": "uint256[]", + "name": "amounts", + "type": "uint256[]" + } + ], + "name": "TokenSent", + "type": "event" + }, + { + "inputs": [], + "name": "ERC1155_INTERFACE_ID", + "outputs": [ + { + "internalType": "bytes4", + "name": "", + "type": "bytes4" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "ERC721_INTERFACE_ID", + "outputs": [ + { + "internalType": "bytes4", + "name": "", + "type": "bytes4" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "addressManager", + "outputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "name": "bridgedToCanonical", + "outputs": [ + { + "internalType": "uint256", + "name": "chainId", + "type": "uint256" + }, + { + "internalType": "address", + "name": "addr", + "type": "address" + }, + { + "internalType": "string", + "name": "symbol", + "type": "string" + }, + { + "internalType": "string", + "name": "name", + "type": "string" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + }, + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "name": "canonicalToBridged", + "outputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "addressManager", + "type": "address" + } + ], + "name": "init", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "name": "isBridgedToken", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + }, + { + "internalType": "address", + "name": "", + "type": "address" + }, + { + "internalType": "uint256", + "name": "", + "type": "uint256" + }, + { + "internalType": "bytes", + "name": "", + "type": "bytes" + } + ], + "name": "onERC721Received", + "outputs": [ + { + "internalType": "bytes4", + "name": "", + "type": "bytes4" + } + ], + "stateMutability": "pure", + "type": "function" + }, + { + "inputs": [ + { + "components": [ + { + "internalType": "uint256", + "name": "id", + "type": "uint256" + }, + { + "internalType": "address", + "name": "from", + "type": "address" + }, + { + "internalType": "uint256", + "name": "srcChainId", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "destChainId", + "type": "uint256" + }, + { + "internalType": "address", + "name": "user", + "type": "address" + }, + { + "internalType": "address", + "name": "to", + "type": "address" + }, + { + "internalType": "address", + "name": "refundTo", + "type": "address" + }, + { + "internalType": "uint256", + "name": "value", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "fee", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "gasLimit", + "type": "uint256" + }, + { + "internalType": "bytes", + "name": "data", + "type": "bytes" + }, + { + "internalType": "string", + "name": "memo", + "type": "string" + } + ], + "internalType": "struct IBridge.Message", + "name": "message", + "type": "tuple" + } + ], + "name": "onMessageRecalled", + "outputs": [], + "stateMutability": "payable", + "type": "function" + }, + { + "inputs": [], + "name": "owner", + "outputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "components": [ + { + "internalType": "uint256", + "name": "chainId", + "type": "uint256" + }, + { + "internalType": "address", + "name": "addr", + "type": "address" + }, + { + "internalType": "string", + "name": "symbol", + "type": "string" + }, + { + "internalType": "string", + "name": "name", + "type": "string" + } + ], + "internalType": "struct BaseNFTVault.CanonicalNFT", + "name": "ctoken", + "type": "tuple" + }, + { + "internalType": "address", + "name": "from", + "type": "address" + }, + { + "internalType": "address", + "name": "to", + "type": "address" + }, + { + "internalType": "uint256[]", + "name": "tokenIds", + "type": "uint256[]" + } + ], + "name": "receiveToken", + "outputs": [], + "stateMutability": "payable", + "type": "function" + }, + { + "inputs": [], + "name": "renounceOwnership", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "chainId", + "type": "uint256" + }, + { + "internalType": "bytes32", + "name": "name", + "type": "bytes32" + }, + { + "internalType": "bool", + "name": "allowZeroAddress", + "type": "bool" + } + ], + "name": "resolve", + "outputs": [ + { + "internalType": "address payable", + "name": "addr", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "bytes32", + "name": "name", + "type": "bytes32" + }, + { + "internalType": "bool", + "name": "allowZeroAddress", + "type": "bool" + } + ], + "name": "resolve", + "outputs": [ + { + "internalType": "address payable", + "name": "addr", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "components": [ + { + "internalType": "uint256", + "name": "destChainId", + "type": "uint256" + }, + { + "internalType": "address", + "name": "to", + "type": "address" + }, + { + "internalType": "address", + "name": "token", + "type": "address" + }, + { + "internalType": "uint256[]", + "name": "tokenIds", + "type": "uint256[]" + }, + { + "internalType": "uint256[]", + "name": "amounts", + "type": "uint256[]" + }, + { + "internalType": "uint256", + "name": "gasLimit", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "fee", + "type": "uint256" + }, + { + "internalType": "address", + "name": "refundTo", + "type": "address" + }, + { + "internalType": "string", + "name": "memo", + "type": "string" + } + ], + "internalType": "struct BaseNFTVault.BridgeTransferOp", + "name": "opt", + "type": "tuple" + } + ], + "name": "sendToken", + "outputs": [], + "stateMutability": "payable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "newAddressManager", + "type": "address" + } + ], + "name": "setAddressManager", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "bytes4", + "name": "interfaceId", + "type": "bytes4" + } + ], + "name": "supportsInterface", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "newOwner", + "type": "address" + } + ], + "name": "transferOwnership", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + } +] diff --git a/packages/relayer/ICrossChainSync.json b/packages/relayer/ICrossChainSync.json new file mode 100644 index 0000000000..24e1ce2372 --- /dev/null +++ b/packages/relayer/ICrossChainSync.json @@ -0,0 +1,65 @@ +[ + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "uint64", + "name": "srcHeight", + "type": "uint64" + }, + { + "indexed": false, + "internalType": "bytes32", + "name": "blockHash", + "type": "bytes32" + }, + { + "indexed": false, + "internalType": "bytes32", + "name": "signalRoot", + "type": "bytes32" + } + ], + "name": "CrossChainSynced", + "type": "event" + }, + { + "inputs": [ + { + "internalType": "uint64", + "name": "blockId", + "type": "uint64" + } + ], + "name": "getCrossChainBlockHash", + "outputs": [ + { + "internalType": "bytes32", + "name": "", + "type": "bytes32" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint64", + "name": "blockId", + "type": "uint64" + } + ], + "name": "getCrossChainSignalRoot", + "outputs": [ + { + "internalType": "bytes32", + "name": "", + "type": "bytes32" + } + ], + "stateMutability": "view", + "type": "function" + } +] diff --git a/packages/relayer/TaikoL1.json b/packages/relayer/TaikoL1.json new file mode 100644 index 0000000000..da3db6acd0 --- /dev/null +++ b/packages/relayer/TaikoL1.json @@ -0,0 +1,1988 @@ +[ + { + "inputs": [], + "name": "L1_ALREADY_CONTESTED", + "type": "error" + }, + { + "inputs": [], + "name": "L1_ALREADY_CONTESTED", + "type": "error" + }, + { + "inputs": [], + "name": "L1_ALREADY_PROVED", + "type": "error" + }, + { + "inputs": [], + "name": "L1_ALREADY_PROVED", + "type": "error" + }, + { + "inputs": [], + "name": "L1_ASSIGNED_PROVER_NOT_ALLOWED", + "type": "error" + }, + { + "inputs": [], + "name": "L1_ASSIGNED_PROVER_NOT_ALLOWED", + "type": "error" + }, + { + "inputs": [], + "name": "L1_ASSIGNMENT_EXPIRED", + "type": "error" + }, + { + "inputs": [], + "name": "L1_ASSIGNMENT_EXPIRED", + "type": "error" + }, + { + "inputs": [], + "name": "L1_ASSIGNMENT_INSUFFICIENT_FEE", + "type": "error" + }, + { + "inputs": [], + "name": "L1_ASSIGNMENT_INSUFFICIENT_FEE", + "type": "error" + }, + { + "inputs": [], + "name": "L1_ASSIGNMENT_INVALID_PARAMS", + "type": "error" + }, + { + "inputs": [], + "name": "L1_ASSIGNMENT_INVALID_PARAMS", + "type": "error" + }, + { + "inputs": [], + "name": "L1_ASSIGNMENT_INVALID_SIG", + "type": "error" + }, + { + "inputs": [], + "name": "L1_ASSIGNMENT_INVALID_SIG", + "type": "error" + }, + { + "inputs": [], + "name": "L1_BLOCK_MISMATCH", + "type": "error" + }, + { + "inputs": [], + "name": "L1_BLOCK_MISMATCH", + "type": "error" + }, + { + "inputs": [], + "name": "L1_BLOCK_MISMATCH", + "type": "error" + }, + { + "inputs": [], + "name": "L1_BLOCK_MISMATCH", + "type": "error" + }, + { + "inputs": [], + "name": "L1_INSUFFICIENT_TOKEN", + "type": "error" + }, + { + "inputs": [], + "name": "L1_INVALID_ADDRESS", + "type": "error" + }, + { + "inputs": [], + "name": "L1_INVALID_ADDRESS", + "type": "error" + }, + { + "inputs": [], + "name": "L1_INVALID_BLOCK_ID", + "type": "error" + }, + { + "inputs": [], + "name": "L1_INVALID_BLOCK_ID", + "type": "error" + }, + { + "inputs": [], + "name": "L1_INVALID_BLOCK_ID", + "type": "error" + }, + { + "inputs": [], + "name": "L1_INVALID_CONFIG", + "type": "error" + }, + { + "inputs": [], + "name": "L1_INVALID_CONFIG", + "type": "error" + }, + { + "inputs": [], + "name": "L1_INVALID_ETH_DEPOSIT", + "type": "error" + }, + { + "inputs": [], + "name": "L1_INVALID_ETH_DEPOSIT", + "type": "error" + }, + { + "inputs": [], + "name": "L1_INVALID_EVIDENCE", + "type": "error" + }, + { + "inputs": [], + "name": "L1_INVALID_EVIDENCE", + "type": "error" + }, + { + "inputs": [], + "name": "L1_INVALID_METADATA", + "type": "error" + }, + { + "inputs": [], + "name": "L1_INVALID_PARAM", + "type": "error" + }, + { + "inputs": [], + "name": "L1_INVALID_PROOF", + "type": "error" + }, + { + "inputs": [], + "name": "L1_INVALID_PROPOSER", + "type": "error" + }, + { + "inputs": [], + "name": "L1_INVALID_PROVER", + "type": "error" + }, + { + "inputs": [], + "name": "L1_INVALID_PROVER_SIG", + "type": "error" + }, + { + "inputs": [], + "name": "L1_INVALID_TIER", + "type": "error" + }, + { + "inputs": [], + "name": "L1_INVALID_TIER", + "type": "error" + }, + { + "inputs": [], + "name": "L1_NOT_ASSIGNED_PROVER", + "type": "error" + }, + { + "inputs": [], + "name": "L1_NOT_ASSIGNED_PROVER", + "type": "error" + }, + { + "inputs": [], + "name": "L1_TIER_NOT_FOUND", + "type": "error" + }, + { + "inputs": [], + "name": "L1_TIER_NOT_FOUND", + "type": "error" + }, + { + "inputs": [], + "name": "L1_TOO_MANY_BLOCKS", + "type": "error" + }, + { + "inputs": [], + "name": "L1_TOO_MANY_BLOCKS", + "type": "error" + }, + { + "inputs": [], + "name": "L1_TRANSITION_ID_ZERO", + "type": "error" + }, + { + "inputs": [], + "name": "L1_TRANSITION_ID_ZERO", + "type": "error" + }, + { + "inputs": [], + "name": "L1_TRANSITION_NOT_FOUND", + "type": "error" + }, + { + "inputs": [], + "name": "L1_TRANSITION_NOT_FOUND", + "type": "error" + }, + { + "inputs": [], + "name": "L1_TXLIST_INVALID_RANGE", + "type": "error" + }, + { + "inputs": [], + "name": "L1_TXLIST_MISMATCH", + "type": "error" + }, + { + "inputs": [], + "name": "L1_TXLIST_MISMATCH", + "type": "error" + }, + { + "inputs": [], + "name": "L1_TXLIST_NOT_FOUND", + "type": "error" + }, + { + "inputs": [], + "name": "L1_TXLIST_TOO_LARGE", + "type": "error" + }, + { + "inputs": [], + "name": "L1_TXLIST_TOO_LARGE", + "type": "error" + }, + { + "inputs": [], + "name": "L1_UNAUTHORIZED", + "type": "error" + }, + { + "inputs": [], + "name": "L1_UNAUTHORIZED", + "type": "error" + }, + { + "inputs": [], + "name": "L1_UNEXPECTED_TRANSITION_ID", + "type": "error" + }, + { + "inputs": [], + "name": "L1_UNEXPECTED_TRANSITION_ID", + "type": "error" + }, + { + "inputs": [], + "name": "L1_UNEXPECTED_TRANSITION_TIER", + "type": "error" + }, + { + "inputs": [], + "name": "L1_UNEXPECTED_TRANSITION_TIER", + "type": "error" + }, + { + "inputs": [], + "name": "RESOLVER_DENIED", + "type": "error" + }, + { + "inputs": [], + "name": "RESOLVER_INVALID_ADDR", + "type": "error" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "chainId", + "type": "uint256" + }, + { + "internalType": "bytes32", + "name": "name", + "type": "bytes32" + } + ], + "name": "RESOLVER_ZERO_ADDR", + "type": "error" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "addressManager", + "type": "address" + } + ], + "name": "AddressManagerChanged", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "uint256", + "name": "blockId", + "type": "uint256" + }, + { + "indexed": true, + "internalType": "address", + "name": "assignedProver", + "type": "address" + }, + { + "indexed": false, + "internalType": "uint96", + "name": "livenessBond", + "type": "uint96" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "proverFee", + "type": "uint256" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "reward", + "type": "uint256" + }, + { + "indexed": false, + "internalType": "uint16", + "name": "minTier", + "type": "uint16" + }, + { + "components": [ + { + "internalType": "bytes32", + "name": "l1Hash", + "type": "bytes32" + }, + { + "internalType": "bytes32", + "name": "difficulty", + "type": "bytes32" + }, + { + "internalType": "bytes32", + "name": "txListHash", + "type": "bytes32" + }, + { + "internalType": "bytes32", + "name": "extraData", + "type": "bytes32" + }, + { + "internalType": "uint64", + "name": "id", + "type": "uint64" + }, + { + "internalType": "uint64", + "name": "timestamp", + "type": "uint64" + }, + { + "internalType": "uint64", + "name": "l1Height", + "type": "uint64" + }, + { + "internalType": "uint32", + "name": "gasLimit", + "type": "uint32" + }, + { + "internalType": "address", + "name": "coinbase", + "type": "address" + }, + { + "components": [ + { + "internalType": "address", + "name": "recipient", + "type": "address" + }, + { + "internalType": "uint96", + "name": "amount", + "type": "uint96" + }, + { + "internalType": "uint64", + "name": "id", + "type": "uint64" + } + ], + "internalType": "struct TaikoData.EthDeposit[]", + "name": "depositsProcessed", + "type": "tuple[]" + } + ], + "indexed": false, + "internalType": "struct TaikoData.BlockMetadata", + "name": "meta", + "type": "tuple" + } + ], + "name": "BlockProposed", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "uint256", + "name": "blockId", + "type": "uint256" + }, + { + "indexed": true, + "internalType": "address", + "name": "assignedProver", + "type": "address" + }, + { + "indexed": false, + "internalType": "uint96", + "name": "livenessBond", + "type": "uint96" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "proverFee", + "type": "uint256" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "reward", + "type": "uint256" + }, + { + "indexed": false, + "internalType": "uint16", + "name": "minTier", + "type": "uint16" + }, + { + "components": [ + { + "internalType": "bytes32", + "name": "l1Hash", + "type": "bytes32" + }, + { + "internalType": "bytes32", + "name": "difficulty", + "type": "bytes32" + }, + { + "internalType": "bytes32", + "name": "txListHash", + "type": "bytes32" + }, + { + "internalType": "bytes32", + "name": "extraData", + "type": "bytes32" + }, + { + "internalType": "uint64", + "name": "id", + "type": "uint64" + }, + { + "internalType": "uint64", + "name": "timestamp", + "type": "uint64" + }, + { + "internalType": "uint64", + "name": "l1Height", + "type": "uint64" + }, + { + "internalType": "uint32", + "name": "gasLimit", + "type": "uint32" + }, + { + "internalType": "address", + "name": "coinbase", + "type": "address" + }, + { + "components": [ + { + "internalType": "address", + "name": "recipient", + "type": "address" + }, + { + "internalType": "uint96", + "name": "amount", + "type": "uint96" + }, + { + "internalType": "uint64", + "name": "id", + "type": "uint64" + } + ], + "internalType": "struct TaikoData.EthDeposit[]", + "name": "depositsProcessed", + "type": "tuple[]" + } + ], + "indexed": false, + "internalType": "struct TaikoData.BlockMetadata", + "name": "meta", + "type": "tuple" + } + ], + "name": "BlockProposed", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "uint256", + "name": "blockId", + "type": "uint256" + }, + { + "indexed": true, + "internalType": "address", + "name": "assignedProver", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "prover", + "type": "address" + }, + { + "indexed": false, + "internalType": "bytes32", + "name": "blockHash", + "type": "bytes32" + }, + { + "indexed": false, + "internalType": "bytes32", + "name": "signalRoot", + "type": "bytes32" + } + ], + "name": "BlockVerified", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "uint256", + "name": "blockId", + "type": "uint256" + }, + { + "indexed": true, + "internalType": "address", + "name": "assignedProver", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "prover", + "type": "address" + }, + { + "indexed": false, + "internalType": "bytes32", + "name": "blockHash", + "type": "bytes32" + }, + { + "indexed": false, + "internalType": "bytes32", + "name": "signalRoot", + "type": "bytes32" + } + ], + "name": "BlockVerified", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "uint64", + "name": "srcHeight", + "type": "uint64" + }, + { + "indexed": false, + "internalType": "bytes32", + "name": "blockHash", + "type": "bytes32" + }, + { + "indexed": false, + "internalType": "bytes32", + "name": "signalRoot", + "type": "bytes32" + } + ], + "name": "CrossChainSynced", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "uint64", + "name": "srcHeight", + "type": "uint64" + }, + { + "indexed": false, + "internalType": "bytes32", + "name": "blockHash", + "type": "bytes32" + }, + { + "indexed": false, + "internalType": "bytes32", + "name": "signalRoot", + "type": "bytes32" + } + ], + "name": "CrossChainSynced", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "components": [ + { + "internalType": "address", + "name": "recipient", + "type": "address" + }, + { + "internalType": "uint96", + "name": "amount", + "type": "uint96" + }, + { + "internalType": "uint64", + "name": "id", + "type": "uint64" + } + ], + "indexed": false, + "internalType": "struct TaikoData.EthDeposit", + "name": "deposit", + "type": "tuple" + } + ], + "name": "EthDeposited", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "components": [ + { + "internalType": "address", + "name": "recipient", + "type": "address" + }, + { + "internalType": "uint96", + "name": "amount", + "type": "uint96" + }, + { + "internalType": "uint64", + "name": "id", + "type": "uint64" + } + ], + "indexed": false, + "internalType": "struct TaikoData.EthDeposit", + "name": "deposit", + "type": "tuple" + } + ], + "name": "EthDeposited", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "uint8", + "name": "version", + "type": "uint8" + } + ], + "name": "Initialized", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "previousOwner", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "newOwner", + "type": "address" + } + ], + "name": "OwnershipTransferred", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "uint256", + "name": "amount", + "type": "uint256" + }, + { + "indexed": false, + "internalType": "bool", + "name": "minted", + "type": "bool" + } + ], + "name": "TokenCredited", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "uint256", + "name": "amount", + "type": "uint256" + }, + { + "indexed": false, + "internalType": "bool", + "name": "minted", + "type": "bool" + } + ], + "name": "TokenCredited", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "uint256", + "name": "amount", + "type": "uint256" + }, + { + "indexed": false, + "internalType": "bool", + "name": "fromLocalBalance", + "type": "bool" + } + ], + "name": "TokenDebited", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "uint256", + "name": "amount", + "type": "uint256" + }, + { + "indexed": false, + "internalType": "bool", + "name": "fromLocalBalance", + "type": "bool" + } + ], + "name": "TokenDebited", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "uint256", + "name": "amount", + "type": "uint256" + } + ], + "name": "TokenDeposited", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "uint256", + "name": "amount", + "type": "uint256" + } + ], + "name": "TokenDeposited", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "uint256", + "name": "amount", + "type": "uint256" + } + ], + "name": "TokenWithdrawn", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "uint256", + "name": "amount", + "type": "uint256" + } + ], + "name": "TokenWithdrawn", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "address", + "name": "to", + "type": "address" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "amount", + "type": "uint256" + } + ], + "name": "TokenWithdrawnByOwner", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "address", + "name": "to", + "type": "address" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "amount", + "type": "uint256" + } + ], + "name": "TokenWithdrawnByOwner", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "uint256", + "name": "blockId", + "type": "uint256" + }, + { + "indexed": false, + "internalType": "bytes32", + "name": "parentHash", + "type": "bytes32" + }, + { + "indexed": false, + "internalType": "bytes32", + "name": "blockHash", + "type": "bytes32" + }, + { + "indexed": false, + "internalType": "bytes32", + "name": "signalRoot", + "type": "bytes32" + }, + { + "indexed": false, + "internalType": "address", + "name": "contester", + "type": "address" + }, + { + "indexed": false, + "internalType": "uint96", + "name": "contestBond", + "type": "uint96" + }, + { + "indexed": false, + "internalType": "uint16", + "name": "tier", + "type": "uint16" + } + ], + "name": "TransitionContested", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "uint256", + "name": "blockId", + "type": "uint256" + }, + { + "indexed": false, + "internalType": "bytes32", + "name": "parentHash", + "type": "bytes32" + }, + { + "indexed": false, + "internalType": "bytes32", + "name": "blockHash", + "type": "bytes32" + }, + { + "indexed": false, + "internalType": "bytes32", + "name": "signalRoot", + "type": "bytes32" + }, + { + "indexed": false, + "internalType": "address", + "name": "contester", + "type": "address" + }, + { + "indexed": false, + "internalType": "uint96", + "name": "contestBond", + "type": "uint96" + }, + { + "indexed": false, + "internalType": "uint16", + "name": "tier", + "type": "uint16" + } + ], + "name": "TransitionContested", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "uint256", + "name": "blockId", + "type": "uint256" + }, + { + "indexed": false, + "internalType": "bytes32", + "name": "parentHash", + "type": "bytes32" + }, + { + "indexed": false, + "internalType": "bytes32", + "name": "blockHash", + "type": "bytes32" + }, + { + "indexed": false, + "internalType": "bytes32", + "name": "signalRoot", + "type": "bytes32" + }, + { + "indexed": false, + "internalType": "address", + "name": "prover", + "type": "address" + }, + { + "indexed": false, + "internalType": "uint96", + "name": "validityBond", + "type": "uint96" + }, + { + "indexed": false, + "internalType": "uint16", + "name": "tier", + "type": "uint16" + } + ], + "name": "TransitionProved", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "uint256", + "name": "blockId", + "type": "uint256" + }, + { + "indexed": false, + "internalType": "bytes32", + "name": "parentHash", + "type": "bytes32" + }, + { + "indexed": false, + "internalType": "bytes32", + "name": "blockHash", + "type": "bytes32" + }, + { + "indexed": false, + "internalType": "bytes32", + "name": "signalRoot", + "type": "bytes32" + }, + { + "indexed": false, + "internalType": "address", + "name": "prover", + "type": "address" + }, + { + "indexed": false, + "internalType": "uint96", + "name": "validityBond", + "type": "uint96" + }, + { + "indexed": false, + "internalType": "uint16", + "name": "tier", + "type": "uint16" + } + ], + "name": "TransitionProved", + "type": "event" + }, + { + "inputs": [], + "name": "addressManager", + "outputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "amount", + "type": "uint256" + } + ], + "name": "canDepositEthToL2", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "recipient", + "type": "address" + } + ], + "name": "depositEtherToL2", + "outputs": [], + "stateMutability": "payable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "amount", + "type": "uint256" + } + ], + "name": "depositTaikoToken", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint64", + "name": "blockId", + "type": "uint64" + } + ], + "name": "getBlock", + "outputs": [ + { + "components": [ + { + "internalType": "bytes32", + "name": "metaHash", + "type": "bytes32" + }, + { + "internalType": "address", + "name": "assignedProver", + "type": "address" + }, + { + "internalType": "uint96", + "name": "livenessBond", + "type": "uint96" + }, + { + "internalType": "uint64", + "name": "blockId", + "type": "uint64" + }, + { + "internalType": "uint64", + "name": "proposedAt", + "type": "uint64" + }, + { + "internalType": "uint32", + "name": "nextTransitionId", + "type": "uint32" + }, + { + "internalType": "uint32", + "name": "verifiedTransitionId", + "type": "uint32" + }, + { + "internalType": "uint16", + "name": "minTier", + "type": "uint16" + }, + { + "internalType": "bytes32[7]", + "name": "__reserved", + "type": "bytes32[7]" + } + ], + "internalType": "struct TaikoData.Block", + "name": "blk", + "type": "tuple" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "getConfig", + "outputs": [ + { + "components": [ + { + "internalType": "uint256", + "name": "chainId", + "type": "uint256" + }, + { + "internalType": "bool", + "name": "relaySignalRoot", + "type": "bool" + }, + { + "internalType": "uint64", + "name": "blockMaxProposals", + "type": "uint64" + }, + { + "internalType": "uint64", + "name": "blockRingBufferSize", + "type": "uint64" + }, + { + "internalType": "uint64", + "name": "blockMaxVerificationsPerTx", + "type": "uint64" + }, + { + "internalType": "uint32", + "name": "blockMaxGasLimit", + "type": "uint32" + }, + { + "internalType": "uint32", + "name": "blockFeeBaseGas", + "type": "uint32" + }, + { + "internalType": "uint24", + "name": "blockMaxTxListBytes", + "type": "uint24" + }, + { + "internalType": "uint256", + "name": "proposerRewardPerSecond", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "proposerRewardMax", + "type": "uint256" + }, + { + "internalType": "uint96", + "name": "livenessBond", + "type": "uint96" + }, + { + "internalType": "uint256", + "name": "ethDepositRingBufferSize", + "type": "uint256" + }, + { + "internalType": "uint64", + "name": "ethDepositMinCountPerBlock", + "type": "uint64" + }, + { + "internalType": "uint64", + "name": "ethDepositMaxCountPerBlock", + "type": "uint64" + }, + { + "internalType": "uint96", + "name": "ethDepositMinAmount", + "type": "uint96" + }, + { + "internalType": "uint96", + "name": "ethDepositMaxAmount", + "type": "uint96" + }, + { + "internalType": "uint256", + "name": "ethDepositGas", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "ethDepositMaxFee", + "type": "uint256" + } + ], + "internalType": "struct TaikoData.Config", + "name": "", + "type": "tuple" + } + ], + "stateMutability": "pure", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint64", + "name": "blockId", + "type": "uint64" + } + ], + "name": "getCrossChainBlockHash", + "outputs": [ + { + "internalType": "bytes32", + "name": "", + "type": "bytes32" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint64", + "name": "blockId", + "type": "uint64" + } + ], + "name": "getCrossChainSignalRoot", + "outputs": [ + { + "internalType": "bytes32", + "name": "", + "type": "bytes32" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "rand", + "type": "uint256" + } + ], + "name": "getMinTier", + "outputs": [ + { + "internalType": "uint16", + "name": "", + "type": "uint16" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "getStateVariables", + "outputs": [ + { + "components": [ + { + "internalType": "uint64", + "name": "genesisHeight", + "type": "uint64" + }, + { + "internalType": "uint64", + "name": "genesisTimestamp", + "type": "uint64" + }, + { + "internalType": "uint64", + "name": "nextEthDepositToProcess", + "type": "uint64" + }, + { + "internalType": "uint64", + "name": "numEthDeposits", + "type": "uint64" + }, + { + "internalType": "uint64", + "name": "numBlocks", + "type": "uint64" + }, + { + "internalType": "uint64", + "name": "lastVerifiedBlockId", + "type": "uint64" + } + ], + "internalType": "struct TaikoData.StateVariables", + "name": "", + "type": "tuple" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "user", + "type": "address" + } + ], + "name": "getTaikoTokenBalance", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint16", + "name": "tierId", + "type": "uint16" + } + ], + "name": "getTier", + "outputs": [ + { + "components": [ + { + "internalType": "bytes32", + "name": "verifierName", + "type": "bytes32" + }, + { + "internalType": "uint96", + "name": "validityBond", + "type": "uint96" + }, + { + "internalType": "uint96", + "name": "contestBond", + "type": "uint96" + }, + { + "internalType": "uint24", + "name": "cooldownWindow", + "type": "uint24" + }, + { + "internalType": "uint16", + "name": "provingWindow", + "type": "uint16" + } + ], + "internalType": "struct ITierProvider.Tier", + "name": "", + "type": "tuple" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "getTierIds", + "outputs": [ + { + "internalType": "uint16[]", + "name": "", + "type": "uint16[]" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint64", + "name": "blockId", + "type": "uint64" + }, + { + "internalType": "bytes32", + "name": "parentHash", + "type": "bytes32" + } + ], + "name": "getTransition", + "outputs": [ + { + "components": [ + { + "internalType": "bytes32", + "name": "key", + "type": "bytes32" + }, + { + "internalType": "bytes32", + "name": "blockHash", + "type": "bytes32" + }, + { + "internalType": "bytes32", + "name": "signalRoot", + "type": "bytes32" + }, + { + "internalType": "address", + "name": "prover", + "type": "address" + }, + { + "internalType": "uint96", + "name": "validityBond", + "type": "uint96" + }, + { + "internalType": "address", + "name": "contester", + "type": "address" + }, + { + "internalType": "uint96", + "name": "contestBond", + "type": "uint96" + }, + { + "internalType": "uint64", + "name": "timestamp", + "type": "uint64" + }, + { + "internalType": "uint16", + "name": "tier", + "type": "uint16" + }, + { + "internalType": "bytes32[4]", + "name": "__reserved", + "type": "bytes32[4]" + } + ], + "internalType": "struct TaikoData.Transition", + "name": "", + "type": "tuple" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "_addressManager", + "type": "address" + }, + { + "internalType": "bytes32", + "name": "_genesisBlockHash", + "type": "bytes32" + } + ], + "name": "init", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [], + "name": "owner", + "outputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "to", + "type": "address" + }, + { + "internalType": "uint256", + "name": "amount", + "type": "uint256" + } + ], + "name": "ownerWithdrawTaikoToken", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "bytes32", + "name": "txListHash", + "type": "bytes32" + }, + { + "internalType": "bytes32", + "name": "extraData", + "type": "bytes32" + }, + { + "internalType": "bytes", + "name": "assignment", + "type": "bytes" + }, + { + "internalType": "bytes", + "name": "txList", + "type": "bytes" + } + ], + "name": "proposeBlock", + "outputs": [ + { + "components": [ + { + "internalType": "bytes32", + "name": "l1Hash", + "type": "bytes32" + }, + { + "internalType": "bytes32", + "name": "difficulty", + "type": "bytes32" + }, + { + "internalType": "bytes32", + "name": "txListHash", + "type": "bytes32" + }, + { + "internalType": "bytes32", + "name": "extraData", + "type": "bytes32" + }, + { + "internalType": "uint64", + "name": "id", + "type": "uint64" + }, + { + "internalType": "uint64", + "name": "timestamp", + "type": "uint64" + }, + { + "internalType": "uint64", + "name": "l1Height", + "type": "uint64" + }, + { + "internalType": "uint32", + "name": "gasLimit", + "type": "uint32" + }, + { + "internalType": "address", + "name": "coinbase", + "type": "address" + }, + { + "components": [ + { + "internalType": "address", + "name": "recipient", + "type": "address" + }, + { + "internalType": "uint96", + "name": "amount", + "type": "uint96" + }, + { + "internalType": "uint64", + "name": "id", + "type": "uint64" + } + ], + "internalType": "struct TaikoData.EthDeposit[]", + "name": "depositsProcessed", + "type": "tuple[]" + } + ], + "internalType": "struct TaikoData.BlockMetadata", + "name": "meta", + "type": "tuple" + } + ], + "stateMutability": "payable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint64", + "name": "blockId", + "type": "uint64" + }, + { + "internalType": "bytes", + "name": "input", + "type": "bytes" + } + ], + "name": "proveBlock", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [], + "name": "renounceOwnership", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "chainId", + "type": "uint256" + }, + { + "internalType": "bytes32", + "name": "name", + "type": "bytes32" + }, + { + "internalType": "bool", + "name": "allowZeroAddress", + "type": "bool" + } + ], + "name": "resolve", + "outputs": [ + { + "internalType": "address payable", + "name": "addr", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "bytes32", + "name": "name", + "type": "bytes32" + }, + { + "internalType": "bool", + "name": "allowZeroAddress", + "type": "bool" + } + ], + "name": "resolve", + "outputs": [ + { + "internalType": "address payable", + "name": "addr", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "newAddressManager", + "type": "address" + } + ], + "name": "setAddressManager", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [], + "name": "state", + "outputs": [ + { + "components": [ + { + "internalType": "uint64", + "name": "genesisHeight", + "type": "uint64" + }, + { + "internalType": "uint64", + "name": "genesisTimestamp", + "type": "uint64" + }, + { + "internalType": "uint64", + "name": "numEthDeposits", + "type": "uint64" + }, + { + "internalType": "uint64", + "name": "nextEthDepositToProcess", + "type": "uint64" + } + ], + "internalType": "struct TaikoData.SlotA", + "name": "slotA", + "type": "tuple" + }, + { + "components": [ + { + "internalType": "uint64", + "name": "numBlocks", + "type": "uint64" + }, + { + "internalType": "uint64", + "name": "nextEthDepositToProcess", + "type": "uint64" + }, + { + "internalType": "uint64", + "name": "lastVerifiedAt", + "type": "uint64" + }, + { + "internalType": "uint64", + "name": "lastVerifiedBlockId", + "type": "uint64" + } + ], + "internalType": "struct TaikoData.SlotB", + "name": "slotB", + "type": "tuple" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "newOwner", + "type": "address" + } + ], + "name": "transferOwnership", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint64", + "name": "maxBlocks", + "type": "uint64" + } + ], + "name": "verifyBlocks", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "amount", + "type": "uint256" + } + ], + "name": "withdrawTaikoToken", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "stateMutability": "payable", + "type": "receive" + } +] diff --git a/packages/relayer/bindings/taikol1/TaikoL1.go b/packages/relayer/bindings/taikol1/TaikoL1.go index ba6491b186..9b93d64ce5 100644 --- a/packages/relayer/bindings/taikol1/TaikoL1.go +++ b/packages/relayer/bindings/taikol1/TaikoL1.go @@ -29,58 +29,62 @@ var ( _ = abi.ConvertType ) +// ITierProviderTier is an auto generated low-level Go binding around an user-defined struct. +type ITierProviderTier struct { + VerifierName [32]byte + ValidityBond *big.Int + ContestBond *big.Int + CooldownWindow *big.Int + ProvingWindow uint16 +} + // TaikoDataBlock is an auto generated low-level Go binding around an user-defined struct. type TaikoDataBlock struct { MetaHash [32]byte - Prover common.Address - ProposedAt uint64 - NextForkChoiceId uint16 - VerifiedForkChoiceId uint16 + AssignedProver common.Address + LivenessBond *big.Int BlockId uint64 - ProofBond *big.Int - ProofWindow uint16 + ProposedAt uint64 + NextTransitionId uint32 + VerifiedTransitionId uint32 + MinTier uint16 + Reserved [7][32]byte } // TaikoDataBlockMetadata is an auto generated low-level Go binding around an user-defined struct. type TaikoDataBlockMetadata struct { + L1Hash [32]byte + Difficulty [32]byte + TxListHash [32]byte + ExtraData [32]byte Id uint64 Timestamp uint64 L1Height uint64 - L1Hash [32]byte - MixHash [32]byte - TxListHash [32]byte - TxListByteStart *big.Int - TxListByteEnd *big.Int GasLimit uint32 - Beneficiary common.Address + Coinbase common.Address DepositsProcessed []TaikoDataEthDeposit } // TaikoDataConfig is an auto generated low-level Go binding around an user-defined struct. type TaikoDataConfig struct { - ChainId *big.Int - RelaySignalRoot bool - BlockMaxProposals uint64 - BlockRingBufferSize uint64 - BlockMaxVerificationsPerTx uint64 - BlockMaxGasLimit uint32 - BlockFeeBaseGas uint32 - BlockMaxTxListBytes *big.Int - BlockTxListExpiry *big.Int - ProposerRewardPerSecond *big.Int - ProposerRewardMax *big.Int - ProofRegularCooldown *big.Int - ProofOracleCooldown *big.Int - ProofWindow uint16 - ProofBond *big.Int - SkipProverAssignmentVerificaiton bool - EthDepositRingBufferSize *big.Int - EthDepositMinCountPerBlock uint64 - EthDepositMaxCountPerBlock uint64 - EthDepositMinAmount *big.Int - EthDepositMaxAmount *big.Int - EthDepositGas *big.Int - EthDepositMaxFee *big.Int + ChainId *big.Int + RelaySignalRoot bool + BlockMaxProposals uint64 + BlockRingBufferSize uint64 + BlockMaxVerificationsPerTx uint64 + BlockMaxGasLimit uint32 + BlockFeeBaseGas uint32 + BlockMaxTxListBytes *big.Int + ProposerRewardPerSecond *big.Int + ProposerRewardMax *big.Int + LivenessBond *big.Int + EthDepositRingBufferSize *big.Int + EthDepositMinCountPerBlock uint64 + EthDepositMaxCountPerBlock uint64 + EthDepositMinAmount *big.Int + EthDepositMaxAmount *big.Int + EthDepositGas *big.Int + EthDepositMaxFee *big.Int } // TaikoDataEthDeposit is an auto generated low-level Go binding around an user-defined struct. @@ -90,15 +94,6 @@ type TaikoDataEthDeposit struct { Id uint64 } -// TaikoDataForkChoice is an auto generated low-level Go binding around an user-defined struct. -type TaikoDataForkChoice struct { - Key [32]byte - BlockHash [32]byte - SignalRoot [32]byte - Prover common.Address - ProvenAt uint64 -} - // TaikoDataSlotA is an auto generated low-level Go binding around an user-defined struct. type TaikoDataSlotA struct { GenesisHeight uint64 @@ -119,15 +114,29 @@ type TaikoDataSlotB struct { type TaikoDataStateVariables struct { GenesisHeight uint64 GenesisTimestamp uint64 - NumBlocks uint64 - LastVerifiedBlockId uint64 NextEthDepositToProcess uint64 NumEthDeposits uint64 + NumBlocks uint64 + LastVerifiedBlockId uint64 +} + +// TaikoDataTransition is an auto generated low-level Go binding around an user-defined struct. +type TaikoDataTransition struct { + Key [32]byte + BlockHash [32]byte + SignalRoot [32]byte + Prover common.Address + ValidityBond *big.Int + Contester common.Address + ContestBond *big.Int + Timestamp uint64 + Tier uint16 + Reserved [4][32]byte } // TaikoL1MetaData contains all meta data concerning the TaikoL1 contract. var TaikoL1MetaData = &bind.MetaData{ - ABI: "[{\"inputs\":[],\"name\":\"L1_ALREADY_PROVEN\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"L1_ALREADY_PROVEN\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"L1_BLOCK_ID_MISMATCH\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"L1_BLOCK_ID_MISMATCH\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"L1_BLOCK_ID_MISMATCH\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"L1_EVIDENCE_MISMATCH\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"L1_EVIDENCE_MISMATCH\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"L1_FORK_CHOICE_NOT_FOUND\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"L1_FORK_CHOICE_NOT_FOUND\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"L1_INSUFFICIENT_TOKEN\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"L1_INSUFFICIENT_TOKEN\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"L1_INVALID_ASSIGNMENT\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"L1_INVALID_ASSIGNMENT\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"L1_INVALID_BLOCK_ID\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"L1_INVALID_BLOCK_ID\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"L1_INVALID_BLOCK_ID\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"L1_INVALID_CONFIG\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"L1_INVALID_CONFIG\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"L1_INVALID_ETH_DEPOSIT\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"L1_INVALID_ETH_DEPOSIT\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"L1_INVALID_EVIDENCE\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"L1_INVALID_EVIDENCE\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"L1_INVALID_METADATA\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"L1_INVALID_METADATA\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"L1_INVALID_ORACLE_PROVER\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"L1_INVALID_ORACLE_PROVER\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"L1_INVALID_PARAM\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"L1_INVALID_PROOF\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"L1_INVALID_PROPOSER\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"L1_INVALID_PROPOSER\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"L1_INVALID_PROVER\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"L1_INVALID_PROVER\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"L1_INVALID_PROVER_SIG\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"L1_INVALID_PROVER_SIG\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"L1_NOT_PROVEABLE\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"L1_NOT_PROVEABLE\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"L1_SAME_PROOF\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"L1_SAME_PROOF\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"L1_TOO_MANY_BLOCKS\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"L1_TOO_MANY_BLOCKS\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"L1_TX_LIST\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"L1_TX_LIST\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"L1_TX_LIST_HASH\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"L1_TX_LIST_HASH\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"L1_TX_LIST_NOT_EXIST\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"L1_TX_LIST_NOT_EXIST\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"L1_TX_LIST_RANGE\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"L1_TX_LIST_RANGE\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"L1_UNEXPECTED_FORK_CHOICE_ID\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"L1_UNEXPECTED_FORK_CHOICE_ID\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"RESOLVER_DENIED\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"RESOLVER_INVALID_ADDR\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"chainId\",\"type\":\"uint256\"},{\"internalType\":\"bytes32\",\"name\":\"name\",\"type\":\"bytes32\"}],\"name\":\"RESOLVER_ZERO_ADDR\",\"type\":\"error\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"addressManager\",\"type\":\"address\"}],\"name\":\"AddressManagerChanged\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"blockId\",\"type\":\"uint256\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"prover\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"reward\",\"type\":\"uint256\"},{\"components\":[{\"internalType\":\"uint64\",\"name\":\"id\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"timestamp\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"l1Height\",\"type\":\"uint64\"},{\"internalType\":\"bytes32\",\"name\":\"l1Hash\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"mixHash\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"txListHash\",\"type\":\"bytes32\"},{\"internalType\":\"uint24\",\"name\":\"txListByteStart\",\"type\":\"uint24\"},{\"internalType\":\"uint24\",\"name\":\"txListByteEnd\",\"type\":\"uint24\"},{\"internalType\":\"uint32\",\"name\":\"gasLimit\",\"type\":\"uint32\"},{\"internalType\":\"address\",\"name\":\"beneficiary\",\"type\":\"address\"},{\"components\":[{\"internalType\":\"address\",\"name\":\"recipient\",\"type\":\"address\"},{\"internalType\":\"uint96\",\"name\":\"amount\",\"type\":\"uint96\"},{\"internalType\":\"uint64\",\"name\":\"id\",\"type\":\"uint64\"}],\"internalType\":\"structTaikoData.EthDeposit[]\",\"name\":\"depositsProcessed\",\"type\":\"tuple[]\"}],\"indexed\":false,\"internalType\":\"structTaikoData.BlockMetadata\",\"name\":\"meta\",\"type\":\"tuple\"}],\"name\":\"BlockProposed\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"blockId\",\"type\":\"uint256\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"prover\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"reward\",\"type\":\"uint256\"},{\"components\":[{\"internalType\":\"uint64\",\"name\":\"id\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"timestamp\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"l1Height\",\"type\":\"uint64\"},{\"internalType\":\"bytes32\",\"name\":\"l1Hash\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"mixHash\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"txListHash\",\"type\":\"bytes32\"},{\"internalType\":\"uint24\",\"name\":\"txListByteStart\",\"type\":\"uint24\"},{\"internalType\":\"uint24\",\"name\":\"txListByteEnd\",\"type\":\"uint24\"},{\"internalType\":\"uint32\",\"name\":\"gasLimit\",\"type\":\"uint32\"},{\"internalType\":\"address\",\"name\":\"beneficiary\",\"type\":\"address\"},{\"components\":[{\"internalType\":\"address\",\"name\":\"recipient\",\"type\":\"address\"},{\"internalType\":\"uint96\",\"name\":\"amount\",\"type\":\"uint96\"},{\"internalType\":\"uint64\",\"name\":\"id\",\"type\":\"uint64\"}],\"internalType\":\"structTaikoData.EthDeposit[]\",\"name\":\"depositsProcessed\",\"type\":\"tuple[]\"}],\"indexed\":false,\"internalType\":\"structTaikoData.BlockMetadata\",\"name\":\"meta\",\"type\":\"tuple\"}],\"name\":\"BlockProposed\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"blockId\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"parentHash\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"blockHash\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"signalRoot\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"prover\",\"type\":\"address\"}],\"name\":\"BlockProven\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"blockId\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"parentHash\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"blockHash\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"signalRoot\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"prover\",\"type\":\"address\"}],\"name\":\"BlockProven\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"blockId\",\"type\":\"uint256\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"prover\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"blockHash\",\"type\":\"bytes32\"}],\"name\":\"BlockVerified\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"blockId\",\"type\":\"uint256\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"prover\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"blockHash\",\"type\":\"bytes32\"}],\"name\":\"BlockVerified\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint64\",\"name\":\"srcHeight\",\"type\":\"uint64\"},{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"blockHash\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"signalRoot\",\"type\":\"bytes32\"}],\"name\":\"CrossChainSynced\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint64\",\"name\":\"srcHeight\",\"type\":\"uint64\"},{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"blockHash\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"signalRoot\",\"type\":\"bytes32\"}],\"name\":\"CrossChainSynced\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"components\":[{\"internalType\":\"address\",\"name\":\"recipient\",\"type\":\"address\"},{\"internalType\":\"uint96\",\"name\":\"amount\",\"type\":\"uint96\"},{\"internalType\":\"uint64\",\"name\":\"id\",\"type\":\"uint64\"}],\"indexed\":false,\"internalType\":\"structTaikoData.EthDeposit\",\"name\":\"deposit\",\"type\":\"tuple\"}],\"name\":\"EthDeposited\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"components\":[{\"internalType\":\"address\",\"name\":\"recipient\",\"type\":\"address\"},{\"internalType\":\"uint96\",\"name\":\"amount\",\"type\":\"uint96\"},{\"internalType\":\"uint64\",\"name\":\"id\",\"type\":\"uint64\"}],\"indexed\":false,\"internalType\":\"structTaikoData.EthDeposit\",\"name\":\"deposit\",\"type\":\"tuple\"}],\"name\":\"EthDeposited\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint8\",\"name\":\"version\",\"type\":\"uint8\"}],\"name\":\"Initialized\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"previousOwner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"newOwner\",\"type\":\"address\"}],\"name\":\"OwnershipTransferred\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"addressManager\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"canDepositEthToL2\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"recipient\",\"type\":\"address\"}],\"name\":\"depositEtherToL2\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"depositTaikoToken\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"blockId\",\"type\":\"uint64\"}],\"name\":\"getBlock\",\"outputs\":[{\"components\":[{\"internalType\":\"bytes32\",\"name\":\"metaHash\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"prover\",\"type\":\"address\"},{\"internalType\":\"uint64\",\"name\":\"proposedAt\",\"type\":\"uint64\"},{\"internalType\":\"uint16\",\"name\":\"nextForkChoiceId\",\"type\":\"uint16\"},{\"internalType\":\"uint16\",\"name\":\"verifiedForkChoiceId\",\"type\":\"uint16\"},{\"internalType\":\"uint64\",\"name\":\"blockId\",\"type\":\"uint64\"},{\"internalType\":\"uint96\",\"name\":\"validityBond\",\"type\":\"uint96\"},{\"internalType\":\"uint16\",\"name\":\"proofWindow\",\"type\":\"uint16\"}],\"internalType\":\"structTaikoData.Block\",\"name\":\"blk\",\"type\":\"tuple\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getConfig\",\"outputs\":[{\"components\":[{\"internalType\":\"uint256\",\"name\":\"chainId\",\"type\":\"uint256\"},{\"internalType\":\"bool\",\"name\":\"relaySignalRoot\",\"type\":\"bool\"},{\"internalType\":\"uint64\",\"name\":\"blockMaxProposals\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"blockRingBufferSize\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"blockMaxVerificationsPerTx\",\"type\":\"uint64\"},{\"internalType\":\"uint32\",\"name\":\"blockMaxGasLimit\",\"type\":\"uint32\"},{\"internalType\":\"uint32\",\"name\":\"blockFeeBaseGas\",\"type\":\"uint32\"},{\"internalType\":\"uint24\",\"name\":\"blockMaxTxListBytes\",\"type\":\"uint24\"},{\"internalType\":\"uint256\",\"name\":\"blockTxListExpiry\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"proposerRewardPerSecond\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"proposerRewardMax\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"proofRegularCooldown\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"proofOracleCooldown\",\"type\":\"uint256\"},{\"internalType\":\"uint16\",\"name\":\"proofWindow\",\"type\":\"uint16\"},{\"internalType\":\"uint96\",\"name\":\"validityBond\",\"type\":\"uint96\"},{\"internalType\":\"bool\",\"name\":\"skipProverAssignmentVerificaiton\",\"type\":\"bool\"},{\"internalType\":\"uint256\",\"name\":\"ethDepositRingBufferSize\",\"type\":\"uint256\"},{\"internalType\":\"uint64\",\"name\":\"ethDepositMinCountPerBlock\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"ethDepositMaxCountPerBlock\",\"type\":\"uint64\"},{\"internalType\":\"uint96\",\"name\":\"ethDepositMinAmount\",\"type\":\"uint96\"},{\"internalType\":\"uint96\",\"name\":\"ethDepositMaxAmount\",\"type\":\"uint96\"},{\"internalType\":\"uint256\",\"name\":\"ethDepositGas\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"ethDepositMaxFee\",\"type\":\"uint256\"}],\"internalType\":\"structTaikoData.Config\",\"name\":\"\",\"type\":\"tuple\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"blockId\",\"type\":\"uint64\"}],\"name\":\"getCrossChainBlockHash\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"blockId\",\"type\":\"uint64\"}],\"name\":\"getCrossChainSignalRoot\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"blockId\",\"type\":\"uint64\"},{\"internalType\":\"bytes32\",\"name\":\"parentHash\",\"type\":\"bytes32\"}],\"name\":\"getForkChoice\",\"outputs\":[{\"components\":[{\"internalType\":\"bytes32\",\"name\":\"key\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"blockHash\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"signalRoot\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"prover\",\"type\":\"address\"},{\"internalType\":\"uint64\",\"name\":\"provenAt\",\"type\":\"uint64\"}],\"internalType\":\"structTaikoData.ForkChoice\",\"name\":\"\",\"type\":\"tuple\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getStateVariables\",\"outputs\":[{\"components\":[{\"internalType\":\"uint64\",\"name\":\"genesisHeight\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"genesisTimestamp\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"numBlocks\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"lastVerifiedBlockId\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"nextEthDepositToProcess\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"numEthDeposits\",\"type\":\"uint64\"}],\"internalType\":\"structTaikoData.StateVariables\",\"name\":\"\",\"type\":\"tuple\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"addr\",\"type\":\"address\"}],\"name\":\"getTaikoTokenBalance\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint16\",\"name\":\"id\",\"type\":\"uint16\"}],\"name\":\"getVerifierName\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_addressManager\",\"type\":\"address\"},{\"internalType\":\"bytes32\",\"name\":\"_genesisBlockHash\",\"type\":\"bytes32\"}],\"name\":\"init\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"owner\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"input\",\"type\":\"bytes\"},{\"internalType\":\"bytes\",\"name\":\"assignment\",\"type\":\"bytes\"},{\"internalType\":\"bytes\",\"name\":\"txList\",\"type\":\"bytes\"}],\"name\":\"proposeBlock\",\"outputs\":[{\"components\":[{\"internalType\":\"uint64\",\"name\":\"id\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"timestamp\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"l1Height\",\"type\":\"uint64\"},{\"internalType\":\"bytes32\",\"name\":\"l1Hash\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"mixHash\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"txListHash\",\"type\":\"bytes32\"},{\"internalType\":\"uint24\",\"name\":\"txListByteStart\",\"type\":\"uint24\"},{\"internalType\":\"uint24\",\"name\":\"txListByteEnd\",\"type\":\"uint24\"},{\"internalType\":\"uint32\",\"name\":\"gasLimit\",\"type\":\"uint32\"},{\"internalType\":\"address\",\"name\":\"beneficiary\",\"type\":\"address\"},{\"components\":[{\"internalType\":\"address\",\"name\":\"recipient\",\"type\":\"address\"},{\"internalType\":\"uint96\",\"name\":\"amount\",\"type\":\"uint96\"},{\"internalType\":\"uint64\",\"name\":\"id\",\"type\":\"uint64\"}],\"internalType\":\"structTaikoData.EthDeposit[]\",\"name\":\"depositsProcessed\",\"type\":\"tuple[]\"}],\"internalType\":\"structTaikoData.BlockMetadata\",\"name\":\"meta\",\"type\":\"tuple\"}],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"blockId\",\"type\":\"uint64\"},{\"internalType\":\"bytes\",\"name\":\"input\",\"type\":\"bytes\"}],\"name\":\"proveBlock\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"renounceOwnership\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"chainId\",\"type\":\"uint256\"},{\"internalType\":\"bytes32\",\"name\":\"name\",\"type\":\"bytes32\"},{\"internalType\":\"bool\",\"name\":\"allowZeroAddress\",\"type\":\"bool\"}],\"name\":\"resolve\",\"outputs\":[{\"internalType\":\"addresspayable\",\"name\":\"addr\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"name\",\"type\":\"bytes32\"},{\"internalType\":\"bool\",\"name\":\"allowZeroAddress\",\"type\":\"bool\"}],\"name\":\"resolve\",\"outputs\":[{\"internalType\":\"addresspayable\",\"name\":\"addr\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"newAddressManager\",\"type\":\"address\"}],\"name\":\"setAddressManager\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"state\",\"outputs\":[{\"components\":[{\"internalType\":\"uint64\",\"name\":\"genesisHeight\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"genesisTimestamp\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"numEthDeposits\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"nextEthDepositToProcess\",\"type\":\"uint64\"}],\"internalType\":\"structTaikoData.SlotA\",\"name\":\"slotA\",\"type\":\"tuple\"},{\"components\":[{\"internalType\":\"uint64\",\"name\":\"numBlocks\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"nextEthDepositToProcess\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"lastVerifiedAt\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"lastVerifiedBlockId\",\"type\":\"uint64\"}],\"internalType\":\"structTaikoData.SlotB\",\"name\":\"slotB\",\"type\":\"tuple\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"newOwner\",\"type\":\"address\"}],\"name\":\"transferOwnership\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"maxBlocks\",\"type\":\"uint64\"}],\"name\":\"verifyBlocks\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"withdrawTaikoToken\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"stateMutability\":\"payable\",\"type\":\"receive\"}]", + ABI: "[{\"inputs\":[],\"name\":\"L1_ALREADY_CONTESTED\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"L1_ALREADY_CONTESTED\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"L1_ALREADY_PROVED\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"L1_ALREADY_PROVED\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"L1_ASSIGNED_PROVER_NOT_ALLOWED\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"L1_ASSIGNED_PROVER_NOT_ALLOWED\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"L1_ASSIGNMENT_EXPIRED\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"L1_ASSIGNMENT_EXPIRED\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"L1_ASSIGNMENT_INSUFFICIENT_FEE\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"L1_ASSIGNMENT_INSUFFICIENT_FEE\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"L1_ASSIGNMENT_INVALID_PARAMS\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"L1_ASSIGNMENT_INVALID_PARAMS\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"L1_ASSIGNMENT_INVALID_SIG\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"L1_ASSIGNMENT_INVALID_SIG\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"L1_BLOCK_MISMATCH\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"L1_BLOCK_MISMATCH\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"L1_BLOCK_MISMATCH\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"L1_BLOCK_MISMATCH\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"L1_INSUFFICIENT_TOKEN\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"L1_INVALID_ADDRESS\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"L1_INVALID_ADDRESS\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"L1_INVALID_BLOCK_ID\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"L1_INVALID_BLOCK_ID\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"L1_INVALID_BLOCK_ID\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"L1_INVALID_CONFIG\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"L1_INVALID_CONFIG\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"L1_INVALID_ETH_DEPOSIT\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"L1_INVALID_ETH_DEPOSIT\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"L1_INVALID_EVIDENCE\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"L1_INVALID_EVIDENCE\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"L1_INVALID_METADATA\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"L1_INVALID_PARAM\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"L1_INVALID_PROOF\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"L1_INVALID_PROPOSER\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"L1_INVALID_PROVER\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"L1_INVALID_PROVER_SIG\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"L1_INVALID_TIER\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"L1_INVALID_TIER\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"L1_NOT_ASSIGNED_PROVER\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"L1_NOT_ASSIGNED_PROVER\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"L1_TIER_NOT_FOUND\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"L1_TIER_NOT_FOUND\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"L1_TOO_MANY_BLOCKS\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"L1_TOO_MANY_BLOCKS\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"L1_TRANSITION_ID_ZERO\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"L1_TRANSITION_ID_ZERO\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"L1_TRANSITION_NOT_FOUND\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"L1_TRANSITION_NOT_FOUND\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"L1_TXLIST_INVALID_RANGE\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"L1_TXLIST_MISMATCH\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"L1_TXLIST_MISMATCH\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"L1_TXLIST_NOT_FOUND\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"L1_TXLIST_TOO_LARGE\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"L1_TXLIST_TOO_LARGE\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"L1_UNAUTHORIZED\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"L1_UNAUTHORIZED\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"L1_UNEXPECTED_TRANSITION_ID\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"L1_UNEXPECTED_TRANSITION_ID\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"L1_UNEXPECTED_TRANSITION_TIER\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"L1_UNEXPECTED_TRANSITION_TIER\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"RESOLVER_DENIED\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"RESOLVER_INVALID_ADDR\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"chainId\",\"type\":\"uint256\"},{\"internalType\":\"bytes32\",\"name\":\"name\",\"type\":\"bytes32\"}],\"name\":\"RESOLVER_ZERO_ADDR\",\"type\":\"error\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"addressManager\",\"type\":\"address\"}],\"name\":\"AddressManagerChanged\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"blockId\",\"type\":\"uint256\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"assignedProver\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint96\",\"name\":\"livenessBond\",\"type\":\"uint96\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"proverFee\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"reward\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint16\",\"name\":\"minTier\",\"type\":\"uint16\"},{\"components\":[{\"internalType\":\"bytes32\",\"name\":\"l1Hash\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"difficulty\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"txListHash\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"extraData\",\"type\":\"bytes32\"},{\"internalType\":\"uint64\",\"name\":\"id\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"timestamp\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"l1Height\",\"type\":\"uint64\"},{\"internalType\":\"uint32\",\"name\":\"gasLimit\",\"type\":\"uint32\"},{\"internalType\":\"address\",\"name\":\"coinbase\",\"type\":\"address\"},{\"components\":[{\"internalType\":\"address\",\"name\":\"recipient\",\"type\":\"address\"},{\"internalType\":\"uint96\",\"name\":\"amount\",\"type\":\"uint96\"},{\"internalType\":\"uint64\",\"name\":\"id\",\"type\":\"uint64\"}],\"internalType\":\"structTaikoData.EthDeposit[]\",\"name\":\"depositsProcessed\",\"type\":\"tuple[]\"}],\"indexed\":false,\"internalType\":\"structTaikoData.BlockMetadata\",\"name\":\"meta\",\"type\":\"tuple\"}],\"name\":\"BlockProposed\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"blockId\",\"type\":\"uint256\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"assignedProver\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint96\",\"name\":\"livenessBond\",\"type\":\"uint96\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"proverFee\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"reward\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint16\",\"name\":\"minTier\",\"type\":\"uint16\"},{\"components\":[{\"internalType\":\"bytes32\",\"name\":\"l1Hash\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"difficulty\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"txListHash\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"extraData\",\"type\":\"bytes32\"},{\"internalType\":\"uint64\",\"name\":\"id\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"timestamp\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"l1Height\",\"type\":\"uint64\"},{\"internalType\":\"uint32\",\"name\":\"gasLimit\",\"type\":\"uint32\"},{\"internalType\":\"address\",\"name\":\"coinbase\",\"type\":\"address\"},{\"components\":[{\"internalType\":\"address\",\"name\":\"recipient\",\"type\":\"address\"},{\"internalType\":\"uint96\",\"name\":\"amount\",\"type\":\"uint96\"},{\"internalType\":\"uint64\",\"name\":\"id\",\"type\":\"uint64\"}],\"internalType\":\"structTaikoData.EthDeposit[]\",\"name\":\"depositsProcessed\",\"type\":\"tuple[]\"}],\"indexed\":false,\"internalType\":\"structTaikoData.BlockMetadata\",\"name\":\"meta\",\"type\":\"tuple\"}],\"name\":\"BlockProposed\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"blockId\",\"type\":\"uint256\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"assignedProver\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"prover\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"blockHash\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"signalRoot\",\"type\":\"bytes32\"}],\"name\":\"BlockVerified\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"blockId\",\"type\":\"uint256\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"assignedProver\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"prover\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"blockHash\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"signalRoot\",\"type\":\"bytes32\"}],\"name\":\"BlockVerified\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint64\",\"name\":\"srcHeight\",\"type\":\"uint64\"},{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"blockHash\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"signalRoot\",\"type\":\"bytes32\"}],\"name\":\"CrossChainSynced\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint64\",\"name\":\"srcHeight\",\"type\":\"uint64\"},{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"blockHash\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"signalRoot\",\"type\":\"bytes32\"}],\"name\":\"CrossChainSynced\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"components\":[{\"internalType\":\"address\",\"name\":\"recipient\",\"type\":\"address\"},{\"internalType\":\"uint96\",\"name\":\"amount\",\"type\":\"uint96\"},{\"internalType\":\"uint64\",\"name\":\"id\",\"type\":\"uint64\"}],\"indexed\":false,\"internalType\":\"structTaikoData.EthDeposit\",\"name\":\"deposit\",\"type\":\"tuple\"}],\"name\":\"EthDeposited\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"components\":[{\"internalType\":\"address\",\"name\":\"recipient\",\"type\":\"address\"},{\"internalType\":\"uint96\",\"name\":\"amount\",\"type\":\"uint96\"},{\"internalType\":\"uint64\",\"name\":\"id\",\"type\":\"uint64\"}],\"indexed\":false,\"internalType\":\"structTaikoData.EthDeposit\",\"name\":\"deposit\",\"type\":\"tuple\"}],\"name\":\"EthDeposited\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint8\",\"name\":\"version\",\"type\":\"uint8\"}],\"name\":\"Initialized\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"previousOwner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"newOwner\",\"type\":\"address\"}],\"name\":\"OwnershipTransferred\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"bool\",\"name\":\"minted\",\"type\":\"bool\"}],\"name\":\"TokenCredited\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"bool\",\"name\":\"minted\",\"type\":\"bool\"}],\"name\":\"TokenCredited\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"bool\",\"name\":\"fromLocalBalance\",\"type\":\"bool\"}],\"name\":\"TokenDebited\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"bool\",\"name\":\"fromLocalBalance\",\"type\":\"bool\"}],\"name\":\"TokenDebited\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"TokenDeposited\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"TokenDeposited\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"TokenWithdrawn\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"TokenWithdrawn\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"TokenWithdrawnByOwner\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"TokenWithdrawnByOwner\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"blockId\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"parentHash\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"blockHash\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"signalRoot\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"contester\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint96\",\"name\":\"contestBond\",\"type\":\"uint96\"},{\"indexed\":false,\"internalType\":\"uint16\",\"name\":\"tier\",\"type\":\"uint16\"}],\"name\":\"TransitionContested\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"blockId\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"parentHash\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"blockHash\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"signalRoot\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"contester\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint96\",\"name\":\"contestBond\",\"type\":\"uint96\"},{\"indexed\":false,\"internalType\":\"uint16\",\"name\":\"tier\",\"type\":\"uint16\"}],\"name\":\"TransitionContested\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"blockId\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"parentHash\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"blockHash\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"signalRoot\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"prover\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint96\",\"name\":\"validityBond\",\"type\":\"uint96\"},{\"indexed\":false,\"internalType\":\"uint16\",\"name\":\"tier\",\"type\":\"uint16\"}],\"name\":\"TransitionProved\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"blockId\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"parentHash\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"blockHash\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"signalRoot\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"prover\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint96\",\"name\":\"validityBond\",\"type\":\"uint96\"},{\"indexed\":false,\"internalType\":\"uint16\",\"name\":\"tier\",\"type\":\"uint16\"}],\"name\":\"TransitionProved\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"addressManager\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"canDepositEthToL2\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"recipient\",\"type\":\"address\"}],\"name\":\"depositEtherToL2\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"depositTaikoToken\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"blockId\",\"type\":\"uint64\"}],\"name\":\"getBlock\",\"outputs\":[{\"components\":[{\"internalType\":\"bytes32\",\"name\":\"metaHash\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"assignedProver\",\"type\":\"address\"},{\"internalType\":\"uint96\",\"name\":\"livenessBond\",\"type\":\"uint96\"},{\"internalType\":\"uint64\",\"name\":\"blockId\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"proposedAt\",\"type\":\"uint64\"},{\"internalType\":\"uint32\",\"name\":\"nextTransitionId\",\"type\":\"uint32\"},{\"internalType\":\"uint32\",\"name\":\"verifiedTransitionId\",\"type\":\"uint32\"},{\"internalType\":\"uint16\",\"name\":\"minTier\",\"type\":\"uint16\"},{\"internalType\":\"bytes32[7]\",\"name\":\"__reserved\",\"type\":\"bytes32[7]\"}],\"internalType\":\"structTaikoData.Block\",\"name\":\"blk\",\"type\":\"tuple\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getConfig\",\"outputs\":[{\"components\":[{\"internalType\":\"uint256\",\"name\":\"chainId\",\"type\":\"uint256\"},{\"internalType\":\"bool\",\"name\":\"relaySignalRoot\",\"type\":\"bool\"},{\"internalType\":\"uint64\",\"name\":\"blockMaxProposals\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"blockRingBufferSize\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"blockMaxVerificationsPerTx\",\"type\":\"uint64\"},{\"internalType\":\"uint32\",\"name\":\"blockMaxGasLimit\",\"type\":\"uint32\"},{\"internalType\":\"uint32\",\"name\":\"blockFeeBaseGas\",\"type\":\"uint32\"},{\"internalType\":\"uint24\",\"name\":\"blockMaxTxListBytes\",\"type\":\"uint24\"},{\"internalType\":\"uint256\",\"name\":\"proposerRewardPerSecond\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"proposerRewardMax\",\"type\":\"uint256\"},{\"internalType\":\"uint96\",\"name\":\"livenessBond\",\"type\":\"uint96\"},{\"internalType\":\"uint256\",\"name\":\"ethDepositRingBufferSize\",\"type\":\"uint256\"},{\"internalType\":\"uint64\",\"name\":\"ethDepositMinCountPerBlock\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"ethDepositMaxCountPerBlock\",\"type\":\"uint64\"},{\"internalType\":\"uint96\",\"name\":\"ethDepositMinAmount\",\"type\":\"uint96\"},{\"internalType\":\"uint96\",\"name\":\"ethDepositMaxAmount\",\"type\":\"uint96\"},{\"internalType\":\"uint256\",\"name\":\"ethDepositGas\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"ethDepositMaxFee\",\"type\":\"uint256\"}],\"internalType\":\"structTaikoData.Config\",\"name\":\"\",\"type\":\"tuple\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"blockId\",\"type\":\"uint64\"}],\"name\":\"getCrossChainBlockHash\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"blockId\",\"type\":\"uint64\"}],\"name\":\"getCrossChainSignalRoot\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"rand\",\"type\":\"uint256\"}],\"name\":\"getMinTier\",\"outputs\":[{\"internalType\":\"uint16\",\"name\":\"\",\"type\":\"uint16\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getStateVariables\",\"outputs\":[{\"components\":[{\"internalType\":\"uint64\",\"name\":\"genesisHeight\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"genesisTimestamp\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"nextEthDepositToProcess\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"numEthDeposits\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"numBlocks\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"lastVerifiedBlockId\",\"type\":\"uint64\"}],\"internalType\":\"structTaikoData.StateVariables\",\"name\":\"\",\"type\":\"tuple\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"user\",\"type\":\"address\"}],\"name\":\"getTaikoTokenBalance\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint16\",\"name\":\"tierId\",\"type\":\"uint16\"}],\"name\":\"getTier\",\"outputs\":[{\"components\":[{\"internalType\":\"bytes32\",\"name\":\"verifierName\",\"type\":\"bytes32\"},{\"internalType\":\"uint96\",\"name\":\"validityBond\",\"type\":\"uint96\"},{\"internalType\":\"uint96\",\"name\":\"contestBond\",\"type\":\"uint96\"},{\"internalType\":\"uint24\",\"name\":\"cooldownWindow\",\"type\":\"uint24\"},{\"internalType\":\"uint16\",\"name\":\"provingWindow\",\"type\":\"uint16\"}],\"internalType\":\"structITierProvider.Tier\",\"name\":\"\",\"type\":\"tuple\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getTierIds\",\"outputs\":[{\"internalType\":\"uint16[]\",\"name\":\"\",\"type\":\"uint16[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"blockId\",\"type\":\"uint64\"},{\"internalType\":\"bytes32\",\"name\":\"parentHash\",\"type\":\"bytes32\"}],\"name\":\"getTransition\",\"outputs\":[{\"components\":[{\"internalType\":\"bytes32\",\"name\":\"key\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"blockHash\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"signalRoot\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"prover\",\"type\":\"address\"},{\"internalType\":\"uint96\",\"name\":\"validityBond\",\"type\":\"uint96\"},{\"internalType\":\"address\",\"name\":\"contester\",\"type\":\"address\"},{\"internalType\":\"uint96\",\"name\":\"contestBond\",\"type\":\"uint96\"},{\"internalType\":\"uint64\",\"name\":\"timestamp\",\"type\":\"uint64\"},{\"internalType\":\"uint16\",\"name\":\"tier\",\"type\":\"uint16\"},{\"internalType\":\"bytes32[4]\",\"name\":\"__reserved\",\"type\":\"bytes32[4]\"}],\"internalType\":\"structTaikoData.Transition\",\"name\":\"\",\"type\":\"tuple\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_addressManager\",\"type\":\"address\"},{\"internalType\":\"bytes32\",\"name\":\"_genesisBlockHash\",\"type\":\"bytes32\"}],\"name\":\"init\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"owner\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"ownerWithdrawTaikoToken\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"txListHash\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"extraData\",\"type\":\"bytes32\"},{\"internalType\":\"bytes\",\"name\":\"assignment\",\"type\":\"bytes\"},{\"internalType\":\"bytes\",\"name\":\"txList\",\"type\":\"bytes\"}],\"name\":\"proposeBlock\",\"outputs\":[{\"components\":[{\"internalType\":\"bytes32\",\"name\":\"l1Hash\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"difficulty\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"txListHash\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"extraData\",\"type\":\"bytes32\"},{\"internalType\":\"uint64\",\"name\":\"id\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"timestamp\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"l1Height\",\"type\":\"uint64\"},{\"internalType\":\"uint32\",\"name\":\"gasLimit\",\"type\":\"uint32\"},{\"internalType\":\"address\",\"name\":\"coinbase\",\"type\":\"address\"},{\"components\":[{\"internalType\":\"address\",\"name\":\"recipient\",\"type\":\"address\"},{\"internalType\":\"uint96\",\"name\":\"amount\",\"type\":\"uint96\"},{\"internalType\":\"uint64\",\"name\":\"id\",\"type\":\"uint64\"}],\"internalType\":\"structTaikoData.EthDeposit[]\",\"name\":\"depositsProcessed\",\"type\":\"tuple[]\"}],\"internalType\":\"structTaikoData.BlockMetadata\",\"name\":\"meta\",\"type\":\"tuple\"}],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"blockId\",\"type\":\"uint64\"},{\"internalType\":\"bytes\",\"name\":\"input\",\"type\":\"bytes\"}],\"name\":\"proveBlock\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"renounceOwnership\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"chainId\",\"type\":\"uint256\"},{\"internalType\":\"bytes32\",\"name\":\"name\",\"type\":\"bytes32\"},{\"internalType\":\"bool\",\"name\":\"allowZeroAddress\",\"type\":\"bool\"}],\"name\":\"resolve\",\"outputs\":[{\"internalType\":\"addresspayable\",\"name\":\"addr\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"name\",\"type\":\"bytes32\"},{\"internalType\":\"bool\",\"name\":\"allowZeroAddress\",\"type\":\"bool\"}],\"name\":\"resolve\",\"outputs\":[{\"internalType\":\"addresspayable\",\"name\":\"addr\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"newAddressManager\",\"type\":\"address\"}],\"name\":\"setAddressManager\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"state\",\"outputs\":[{\"components\":[{\"internalType\":\"uint64\",\"name\":\"genesisHeight\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"genesisTimestamp\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"numEthDeposits\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"nextEthDepositToProcess\",\"type\":\"uint64\"}],\"internalType\":\"structTaikoData.SlotA\",\"name\":\"slotA\",\"type\":\"tuple\"},{\"components\":[{\"internalType\":\"uint64\",\"name\":\"numBlocks\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"nextEthDepositToProcess\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"lastVerifiedAt\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"lastVerifiedBlockId\",\"type\":\"uint64\"}],\"internalType\":\"structTaikoData.SlotB\",\"name\":\"slotB\",\"type\":\"tuple\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"newOwner\",\"type\":\"address\"}],\"name\":\"transferOwnership\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"maxBlocks\",\"type\":\"uint64\"}],\"name\":\"verifyBlocks\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"withdrawTaikoToken\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"stateMutability\":\"payable\",\"type\":\"receive\"}]", } // TaikoL1ABI is the input ABI used to generate the binding from. @@ -340,7 +349,7 @@ func (_TaikoL1 *TaikoL1CallerSession) CanDepositEthToL2(amount *big.Int) (bool, // GetBlock is a free data retrieval call binding the contract method 0x5fa15e79. // -// Solidity: function getBlock(uint64 blockId) view returns((bytes32,address,uint64,uint16,uint16,uint64,uint96,uint16) blk) +// Solidity: function getBlock(uint64 blockId) view returns((bytes32,address,uint96,uint64,uint64,uint32,uint32,uint16,bytes32[7]) blk) func (_TaikoL1 *TaikoL1Caller) GetBlock(opts *bind.CallOpts, blockId uint64) (TaikoDataBlock, error) { var out []interface{} err := _TaikoL1.contract.Call(opts, &out, "getBlock", blockId) @@ -357,21 +366,21 @@ func (_TaikoL1 *TaikoL1Caller) GetBlock(opts *bind.CallOpts, blockId uint64) (Ta // GetBlock is a free data retrieval call binding the contract method 0x5fa15e79. // -// Solidity: function getBlock(uint64 blockId) view returns((bytes32,address,uint64,uint16,uint16,uint64,uint96,uint16) blk) +// Solidity: function getBlock(uint64 blockId) view returns((bytes32,address,uint96,uint64,uint64,uint32,uint32,uint16,bytes32[7]) blk) func (_TaikoL1 *TaikoL1Session) GetBlock(blockId uint64) (TaikoDataBlock, error) { return _TaikoL1.Contract.GetBlock(&_TaikoL1.CallOpts, blockId) } // GetBlock is a free data retrieval call binding the contract method 0x5fa15e79. // -// Solidity: function getBlock(uint64 blockId) view returns((bytes32,address,uint64,uint16,uint16,uint64,uint96,uint16) blk) +// Solidity: function getBlock(uint64 blockId) view returns((bytes32,address,uint96,uint64,uint64,uint32,uint32,uint16,bytes32[7]) blk) func (_TaikoL1 *TaikoL1CallerSession) GetBlock(blockId uint64) (TaikoDataBlock, error) { return _TaikoL1.Contract.GetBlock(&_TaikoL1.CallOpts, blockId) } // GetConfig is a free data retrieval call binding the contract method 0xc3f909d4. // -// Solidity: function getConfig() pure returns((uint256,bool,uint64,uint64,uint64,uint32,uint32,uint24,uint256,uint256,uint256,uint256,uint256,uint16,uint96,bool,uint256,uint64,uint64,uint96,uint96,uint256,uint256)) +// Solidity: function getConfig() pure returns((uint256,bool,uint64,uint64,uint64,uint32,uint32,uint24,uint256,uint256,uint96,uint256,uint64,uint64,uint96,uint96,uint256,uint256)) func (_TaikoL1 *TaikoL1Caller) GetConfig(opts *bind.CallOpts) (TaikoDataConfig, error) { var out []interface{} err := _TaikoL1.contract.Call(opts, &out, "getConfig") @@ -388,14 +397,14 @@ func (_TaikoL1 *TaikoL1Caller) GetConfig(opts *bind.CallOpts) (TaikoDataConfig, // GetConfig is a free data retrieval call binding the contract method 0xc3f909d4. // -// Solidity: function getConfig() pure returns((uint256,bool,uint64,uint64,uint64,uint32,uint32,uint24,uint256,uint256,uint256,uint256,uint256,uint16,uint96,bool,uint256,uint64,uint64,uint96,uint96,uint256,uint256)) +// Solidity: function getConfig() pure returns((uint256,bool,uint64,uint64,uint64,uint32,uint32,uint24,uint256,uint256,uint96,uint256,uint64,uint64,uint96,uint96,uint256,uint256)) func (_TaikoL1 *TaikoL1Session) GetConfig() (TaikoDataConfig, error) { return _TaikoL1.Contract.GetConfig(&_TaikoL1.CallOpts) } // GetConfig is a free data retrieval call binding the contract method 0xc3f909d4. // -// Solidity: function getConfig() pure returns((uint256,bool,uint64,uint64,uint64,uint32,uint32,uint24,uint256,uint256,uint256,uint256,uint256,uint16,uint96,bool,uint256,uint64,uint64,uint96,uint96,uint256,uint256)) +// Solidity: function getConfig() pure returns((uint256,bool,uint64,uint64,uint64,uint32,uint32,uint24,uint256,uint256,uint96,uint256,uint64,uint64,uint96,uint96,uint256,uint256)) func (_TaikoL1 *TaikoL1CallerSession) GetConfig() (TaikoDataConfig, error) { return _TaikoL1.Contract.GetConfig(&_TaikoL1.CallOpts) } @@ -462,35 +471,35 @@ func (_TaikoL1 *TaikoL1CallerSession) GetCrossChainSignalRoot(blockId uint64) ([ return _TaikoL1.Contract.GetCrossChainSignalRoot(&_TaikoL1.CallOpts, blockId) } -// GetForkChoice is a free data retrieval call binding the contract method 0xc24c235c. +// GetMinTier is a free data retrieval call binding the contract method 0x59ab4e23. // -// Solidity: function getForkChoice(uint64 blockId, bytes32 parentHash) view returns((bytes32,bytes32,bytes32,address,uint64)) -func (_TaikoL1 *TaikoL1Caller) GetForkChoice(opts *bind.CallOpts, blockId uint64, parentHash [32]byte) (TaikoDataForkChoice, error) { +// Solidity: function getMinTier(uint256 rand) view returns(uint16) +func (_TaikoL1 *TaikoL1Caller) GetMinTier(opts *bind.CallOpts, rand *big.Int) (uint16, error) { var out []interface{} - err := _TaikoL1.contract.Call(opts, &out, "getForkChoice", blockId, parentHash) + err := _TaikoL1.contract.Call(opts, &out, "getMinTier", rand) if err != nil { - return *new(TaikoDataForkChoice), err + return *new(uint16), err } - out0 := *abi.ConvertType(out[0], new(TaikoDataForkChoice)).(*TaikoDataForkChoice) + out0 := *abi.ConvertType(out[0], new(uint16)).(*uint16) return out0, err } -// GetForkChoice is a free data retrieval call binding the contract method 0xc24c235c. +// GetMinTier is a free data retrieval call binding the contract method 0x59ab4e23. // -// Solidity: function getForkChoice(uint64 blockId, bytes32 parentHash) view returns((bytes32,bytes32,bytes32,address,uint64)) -func (_TaikoL1 *TaikoL1Session) GetForkChoice(blockId uint64, parentHash [32]byte) (TaikoDataForkChoice, error) { - return _TaikoL1.Contract.GetForkChoice(&_TaikoL1.CallOpts, blockId, parentHash) +// Solidity: function getMinTier(uint256 rand) view returns(uint16) +func (_TaikoL1 *TaikoL1Session) GetMinTier(rand *big.Int) (uint16, error) { + return _TaikoL1.Contract.GetMinTier(&_TaikoL1.CallOpts, rand) } -// GetForkChoice is a free data retrieval call binding the contract method 0xc24c235c. +// GetMinTier is a free data retrieval call binding the contract method 0x59ab4e23. // -// Solidity: function getForkChoice(uint64 blockId, bytes32 parentHash) view returns((bytes32,bytes32,bytes32,address,uint64)) -func (_TaikoL1 *TaikoL1CallerSession) GetForkChoice(blockId uint64, parentHash [32]byte) (TaikoDataForkChoice, error) { - return _TaikoL1.Contract.GetForkChoice(&_TaikoL1.CallOpts, blockId, parentHash) +// Solidity: function getMinTier(uint256 rand) view returns(uint16) +func (_TaikoL1 *TaikoL1CallerSession) GetMinTier(rand *big.Int) (uint16, error) { + return _TaikoL1.Contract.GetMinTier(&_TaikoL1.CallOpts, rand) } // GetStateVariables is a free data retrieval call binding the contract method 0xdde89cf5. @@ -526,10 +535,10 @@ func (_TaikoL1 *TaikoL1CallerSession) GetStateVariables() (TaikoDataStateVariabl // GetTaikoTokenBalance is a free data retrieval call binding the contract method 0x8dff9cea. // -// Solidity: function getTaikoTokenBalance(address addr) view returns(uint256) -func (_TaikoL1 *TaikoL1Caller) GetTaikoTokenBalance(opts *bind.CallOpts, addr common.Address) (*big.Int, error) { +// Solidity: function getTaikoTokenBalance(address user) view returns(uint256) +func (_TaikoL1 *TaikoL1Caller) GetTaikoTokenBalance(opts *bind.CallOpts, user common.Address) (*big.Int, error) { var out []interface{} - err := _TaikoL1.contract.Call(opts, &out, "getTaikoTokenBalance", addr) + err := _TaikoL1.contract.Call(opts, &out, "getTaikoTokenBalance", user) if err != nil { return *new(*big.Int), err @@ -543,47 +552,109 @@ func (_TaikoL1 *TaikoL1Caller) GetTaikoTokenBalance(opts *bind.CallOpts, addr co // GetTaikoTokenBalance is a free data retrieval call binding the contract method 0x8dff9cea. // -// Solidity: function getTaikoTokenBalance(address addr) view returns(uint256) -func (_TaikoL1 *TaikoL1Session) GetTaikoTokenBalance(addr common.Address) (*big.Int, error) { - return _TaikoL1.Contract.GetTaikoTokenBalance(&_TaikoL1.CallOpts, addr) +// Solidity: function getTaikoTokenBalance(address user) view returns(uint256) +func (_TaikoL1 *TaikoL1Session) GetTaikoTokenBalance(user common.Address) (*big.Int, error) { + return _TaikoL1.Contract.GetTaikoTokenBalance(&_TaikoL1.CallOpts, user) } // GetTaikoTokenBalance is a free data retrieval call binding the contract method 0x8dff9cea. // -// Solidity: function getTaikoTokenBalance(address addr) view returns(uint256) -func (_TaikoL1 *TaikoL1CallerSession) GetTaikoTokenBalance(addr common.Address) (*big.Int, error) { - return _TaikoL1.Contract.GetTaikoTokenBalance(&_TaikoL1.CallOpts, addr) +// Solidity: function getTaikoTokenBalance(address user) view returns(uint256) +func (_TaikoL1 *TaikoL1CallerSession) GetTaikoTokenBalance(user common.Address) (*big.Int, error) { + return _TaikoL1.Contract.GetTaikoTokenBalance(&_TaikoL1.CallOpts, user) } -// GetVerifierName is a free data retrieval call binding the contract method 0x0372303d. +// GetTier is a free data retrieval call binding the contract method 0x576c3de7. // -// Solidity: function getVerifierName(uint16 id) pure returns(bytes32) -func (_TaikoL1 *TaikoL1Caller) GetVerifierName(opts *bind.CallOpts, id uint16) ([32]byte, error) { +// Solidity: function getTier(uint16 tierId) view returns((bytes32,uint96,uint96,uint24,uint16)) +func (_TaikoL1 *TaikoL1Caller) GetTier(opts *bind.CallOpts, tierId uint16) (ITierProviderTier, error) { var out []interface{} - err := _TaikoL1.contract.Call(opts, &out, "getVerifierName", id) + err := _TaikoL1.contract.Call(opts, &out, "getTier", tierId) if err != nil { - return *new([32]byte), err + return *new(ITierProviderTier), err } - out0 := *abi.ConvertType(out[0], new([32]byte)).(*[32]byte) + out0 := *abi.ConvertType(out[0], new(ITierProviderTier)).(*ITierProviderTier) + + return out0, err + +} + +// GetTier is a free data retrieval call binding the contract method 0x576c3de7. +// +// Solidity: function getTier(uint16 tierId) view returns((bytes32,uint96,uint96,uint24,uint16)) +func (_TaikoL1 *TaikoL1Session) GetTier(tierId uint16) (ITierProviderTier, error) { + return _TaikoL1.Contract.GetTier(&_TaikoL1.CallOpts, tierId) +} + +// GetTier is a free data retrieval call binding the contract method 0x576c3de7. +// +// Solidity: function getTier(uint16 tierId) view returns((bytes32,uint96,uint96,uint24,uint16)) +func (_TaikoL1 *TaikoL1CallerSession) GetTier(tierId uint16) (ITierProviderTier, error) { + return _TaikoL1.Contract.GetTier(&_TaikoL1.CallOpts, tierId) +} + +// GetTierIds is a free data retrieval call binding the contract method 0xd8cde1c6. +// +// Solidity: function getTierIds() view returns(uint16[]) +func (_TaikoL1 *TaikoL1Caller) GetTierIds(opts *bind.CallOpts) ([]uint16, error) { + var out []interface{} + err := _TaikoL1.contract.Call(opts, &out, "getTierIds") + + if err != nil { + return *new([]uint16), err + } + + out0 := *abi.ConvertType(out[0], new([]uint16)).(*[]uint16) + + return out0, err + +} + +// GetTierIds is a free data retrieval call binding the contract method 0xd8cde1c6. +// +// Solidity: function getTierIds() view returns(uint16[]) +func (_TaikoL1 *TaikoL1Session) GetTierIds() ([]uint16, error) { + return _TaikoL1.Contract.GetTierIds(&_TaikoL1.CallOpts) +} + +// GetTierIds is a free data retrieval call binding the contract method 0xd8cde1c6. +// +// Solidity: function getTierIds() view returns(uint16[]) +func (_TaikoL1 *TaikoL1CallerSession) GetTierIds() ([]uint16, error) { + return _TaikoL1.Contract.GetTierIds(&_TaikoL1.CallOpts) +} + +// GetTransition is a free data retrieval call binding the contract method 0xfd257e29. +// +// Solidity: function getTransition(uint64 blockId, bytes32 parentHash) view returns((bytes32,bytes32,bytes32,address,uint96,address,uint96,uint64,uint16,bytes32[4])) +func (_TaikoL1 *TaikoL1Caller) GetTransition(opts *bind.CallOpts, blockId uint64, parentHash [32]byte) (TaikoDataTransition, error) { + var out []interface{} + err := _TaikoL1.contract.Call(opts, &out, "getTransition", blockId, parentHash) + + if err != nil { + return *new(TaikoDataTransition), err + } + + out0 := *abi.ConvertType(out[0], new(TaikoDataTransition)).(*TaikoDataTransition) return out0, err } -// GetVerifierName is a free data retrieval call binding the contract method 0x0372303d. +// GetTransition is a free data retrieval call binding the contract method 0xfd257e29. // -// Solidity: function getVerifierName(uint16 id) pure returns(bytes32) -func (_TaikoL1 *TaikoL1Session) GetVerifierName(id uint16) ([32]byte, error) { - return _TaikoL1.Contract.GetVerifierName(&_TaikoL1.CallOpts, id) +// Solidity: function getTransition(uint64 blockId, bytes32 parentHash) view returns((bytes32,bytes32,bytes32,address,uint96,address,uint96,uint64,uint16,bytes32[4])) +func (_TaikoL1 *TaikoL1Session) GetTransition(blockId uint64, parentHash [32]byte) (TaikoDataTransition, error) { + return _TaikoL1.Contract.GetTransition(&_TaikoL1.CallOpts, blockId, parentHash) } -// GetVerifierName is a free data retrieval call binding the contract method 0x0372303d. +// GetTransition is a free data retrieval call binding the contract method 0xfd257e29. // -// Solidity: function getVerifierName(uint16 id) pure returns(bytes32) -func (_TaikoL1 *TaikoL1CallerSession) GetVerifierName(id uint16) ([32]byte, error) { - return _TaikoL1.Contract.GetVerifierName(&_TaikoL1.CallOpts, id) +// Solidity: function getTransition(uint64 blockId, bytes32 parentHash) view returns((bytes32,bytes32,bytes32,address,uint96,address,uint96,uint64,uint16,bytes32[4])) +func (_TaikoL1 *TaikoL1CallerSession) GetTransition(blockId uint64, parentHash [32]byte) (TaikoDataTransition, error) { + return _TaikoL1.Contract.GetTransition(&_TaikoL1.CallOpts, blockId, parentHash) } // Owner is a free data retrieval call binding the contract method 0x8da5cb5b. @@ -787,25 +858,46 @@ func (_TaikoL1 *TaikoL1TransactorSession) Init(_addressManager common.Address, _ return _TaikoL1.Contract.Init(&_TaikoL1.TransactOpts, _addressManager, _genesisBlockHash) } -// ProposeBlock is a paid mutator transaction binding the contract method 0xb6d5a397. +// OwnerWithdrawTaikoToken is a paid mutator transaction binding the contract method 0x6edda419. +// +// Solidity: function ownerWithdrawTaikoToken(address to, uint256 amount) returns() +func (_TaikoL1 *TaikoL1Transactor) OwnerWithdrawTaikoToken(opts *bind.TransactOpts, to common.Address, amount *big.Int) (*types.Transaction, error) { + return _TaikoL1.contract.Transact(opts, "ownerWithdrawTaikoToken", to, amount) +} + +// OwnerWithdrawTaikoToken is a paid mutator transaction binding the contract method 0x6edda419. +// +// Solidity: function ownerWithdrawTaikoToken(address to, uint256 amount) returns() +func (_TaikoL1 *TaikoL1Session) OwnerWithdrawTaikoToken(to common.Address, amount *big.Int) (*types.Transaction, error) { + return _TaikoL1.Contract.OwnerWithdrawTaikoToken(&_TaikoL1.TransactOpts, to, amount) +} + +// OwnerWithdrawTaikoToken is a paid mutator transaction binding the contract method 0x6edda419. // -// Solidity: function proposeBlock(bytes input, bytes assignment, bytes txList) payable returns((uint64,uint64,uint64,bytes32,bytes32,bytes32,uint24,uint24,uint32,address,(address,uint96,uint64)[]) meta) -func (_TaikoL1 *TaikoL1Transactor) ProposeBlock(opts *bind.TransactOpts, input []byte, assignment []byte, txList []byte) (*types.Transaction, error) { - return _TaikoL1.contract.Transact(opts, "proposeBlock", input, assignment, txList) +// Solidity: function ownerWithdrawTaikoToken(address to, uint256 amount) returns() +func (_TaikoL1 *TaikoL1TransactorSession) OwnerWithdrawTaikoToken(to common.Address, amount *big.Int) (*types.Transaction, error) { + return _TaikoL1.Contract.OwnerWithdrawTaikoToken(&_TaikoL1.TransactOpts, to, amount) } -// ProposeBlock is a paid mutator transaction binding the contract method 0xb6d5a397. +// ProposeBlock is a paid mutator transaction binding the contract method 0x04dc4c8b. // -// Solidity: function proposeBlock(bytes input, bytes assignment, bytes txList) payable returns((uint64,uint64,uint64,bytes32,bytes32,bytes32,uint24,uint24,uint32,address,(address,uint96,uint64)[]) meta) -func (_TaikoL1 *TaikoL1Session) ProposeBlock(input []byte, assignment []byte, txList []byte) (*types.Transaction, error) { - return _TaikoL1.Contract.ProposeBlock(&_TaikoL1.TransactOpts, input, assignment, txList) +// Solidity: function proposeBlock(bytes32 txListHash, bytes32 extraData, bytes assignment, bytes txList) payable returns((bytes32,bytes32,bytes32,bytes32,uint64,uint64,uint64,uint32,address,(address,uint96,uint64)[]) meta) +func (_TaikoL1 *TaikoL1Transactor) ProposeBlock(opts *bind.TransactOpts, txListHash [32]byte, extraData [32]byte, assignment []byte, txList []byte) (*types.Transaction, error) { + return _TaikoL1.contract.Transact(opts, "proposeBlock", txListHash, extraData, assignment, txList) } -// ProposeBlock is a paid mutator transaction binding the contract method 0xb6d5a397. +// ProposeBlock is a paid mutator transaction binding the contract method 0x04dc4c8b. // -// Solidity: function proposeBlock(bytes input, bytes assignment, bytes txList) payable returns((uint64,uint64,uint64,bytes32,bytes32,bytes32,uint24,uint24,uint32,address,(address,uint96,uint64)[]) meta) -func (_TaikoL1 *TaikoL1TransactorSession) ProposeBlock(input []byte, assignment []byte, txList []byte) (*types.Transaction, error) { - return _TaikoL1.Contract.ProposeBlock(&_TaikoL1.TransactOpts, input, assignment, txList) +// Solidity: function proposeBlock(bytes32 txListHash, bytes32 extraData, bytes assignment, bytes txList) payable returns((bytes32,bytes32,bytes32,bytes32,uint64,uint64,uint64,uint32,address,(address,uint96,uint64)[]) meta) +func (_TaikoL1 *TaikoL1Session) ProposeBlock(txListHash [32]byte, extraData [32]byte, assignment []byte, txList []byte) (*types.Transaction, error) { + return _TaikoL1.Contract.ProposeBlock(&_TaikoL1.TransactOpts, txListHash, extraData, assignment, txList) +} + +// ProposeBlock is a paid mutator transaction binding the contract method 0x04dc4c8b. +// +// Solidity: function proposeBlock(bytes32 txListHash, bytes32 extraData, bytes assignment, bytes txList) payable returns((bytes32,bytes32,bytes32,bytes32,uint64,uint64,uint64,uint32,address,(address,uint96,uint64)[]) meta) +func (_TaikoL1 *TaikoL1TransactorSession) ProposeBlock(txListHash [32]byte, extraData [32]byte, assignment []byte, txList []byte) (*types.Transaction, error) { + return _TaikoL1.Contract.ProposeBlock(&_TaikoL1.TransactOpts, txListHash, extraData, assignment, txList) } // ProveBlock is a paid mutator transaction binding the contract method 0x10d008bd. @@ -1168,49 +1260,52 @@ func (it *TaikoL1BlockProposedIterator) Close() error { // TaikoL1BlockProposed represents a BlockProposed event raised by the TaikoL1 contract. type TaikoL1BlockProposed struct { - BlockId *big.Int - Prover common.Address - Reward *big.Int - Meta TaikoDataBlockMetadata - Raw types.Log // Blockchain specific contextual infos + BlockId *big.Int + AssignedProver common.Address + LivenessBond *big.Int + ProverFee *big.Int + Reward *big.Int + MinTier uint16 + Meta TaikoDataBlockMetadata + Raw types.Log // Blockchain specific contextual infos } -// FilterBlockProposed is a free log retrieval operation binding the contract event 0xe3713939242e9072c6fbb16f90e98d4b583d66b9fae9208ba2148aa8d6e82af6. +// FilterBlockProposed is a free log retrieval operation binding the contract event 0x3bc85eed257804b26e2232e767692931a620954ad0ae6ca5c58adb22be553418. // -// Solidity: event BlockProposed(uint256 indexed blockId, address indexed prover, uint256 reward, (uint64,uint64,uint64,bytes32,bytes32,bytes32,uint24,uint24,uint32,address,(address,uint96,uint64)[]) meta) -func (_TaikoL1 *TaikoL1Filterer) FilterBlockProposed(opts *bind.FilterOpts, blockId []*big.Int, prover []common.Address) (*TaikoL1BlockProposedIterator, error) { +// Solidity: event BlockProposed(uint256 indexed blockId, address indexed assignedProver, uint96 livenessBond, uint256 proverFee, uint256 reward, uint16 minTier, (bytes32,bytes32,bytes32,bytes32,uint64,uint64,uint64,uint32,address,(address,uint96,uint64)[]) meta) +func (_TaikoL1 *TaikoL1Filterer) FilterBlockProposed(opts *bind.FilterOpts, blockId []*big.Int, assignedProver []common.Address) (*TaikoL1BlockProposedIterator, error) { var blockIdRule []interface{} for _, blockIdItem := range blockId { blockIdRule = append(blockIdRule, blockIdItem) } - var proverRule []interface{} - for _, proverItem := range prover { - proverRule = append(proverRule, proverItem) + var assignedProverRule []interface{} + for _, assignedProverItem := range assignedProver { + assignedProverRule = append(assignedProverRule, assignedProverItem) } - logs, sub, err := _TaikoL1.contract.FilterLogs(opts, "BlockProposed", blockIdRule, proverRule) + logs, sub, err := _TaikoL1.contract.FilterLogs(opts, "BlockProposed", blockIdRule, assignedProverRule) if err != nil { return nil, err } return &TaikoL1BlockProposedIterator{contract: _TaikoL1.contract, event: "BlockProposed", logs: logs, sub: sub}, nil } -// WatchBlockProposed is a free log subscription operation binding the contract event 0xe3713939242e9072c6fbb16f90e98d4b583d66b9fae9208ba2148aa8d6e82af6. +// WatchBlockProposed is a free log subscription operation binding the contract event 0x3bc85eed257804b26e2232e767692931a620954ad0ae6ca5c58adb22be553418. // -// Solidity: event BlockProposed(uint256 indexed blockId, address indexed prover, uint256 reward, (uint64,uint64,uint64,bytes32,bytes32,bytes32,uint24,uint24,uint32,address,(address,uint96,uint64)[]) meta) -func (_TaikoL1 *TaikoL1Filterer) WatchBlockProposed(opts *bind.WatchOpts, sink chan<- *TaikoL1BlockProposed, blockId []*big.Int, prover []common.Address) (event.Subscription, error) { +// Solidity: event BlockProposed(uint256 indexed blockId, address indexed assignedProver, uint96 livenessBond, uint256 proverFee, uint256 reward, uint16 minTier, (bytes32,bytes32,bytes32,bytes32,uint64,uint64,uint64,uint32,address,(address,uint96,uint64)[]) meta) +func (_TaikoL1 *TaikoL1Filterer) WatchBlockProposed(opts *bind.WatchOpts, sink chan<- *TaikoL1BlockProposed, blockId []*big.Int, assignedProver []common.Address) (event.Subscription, error) { var blockIdRule []interface{} for _, blockIdItem := range blockId { blockIdRule = append(blockIdRule, blockIdItem) } - var proverRule []interface{} - for _, proverItem := range prover { - proverRule = append(proverRule, proverItem) + var assignedProverRule []interface{} + for _, assignedProverItem := range assignedProver { + assignedProverRule = append(assignedProverRule, assignedProverItem) } - logs, sub, err := _TaikoL1.contract.WatchLogs(opts, "BlockProposed", blockIdRule, proverRule) + logs, sub, err := _TaikoL1.contract.WatchLogs(opts, "BlockProposed", blockIdRule, assignedProverRule) if err != nil { return nil, err } @@ -1242,9 +1337,9 @@ func (_TaikoL1 *TaikoL1Filterer) WatchBlockProposed(opts *bind.WatchOpts, sink c }), nil } -// ParseBlockProposed is a log parse operation binding the contract event 0xe3713939242e9072c6fbb16f90e98d4b583d66b9fae9208ba2148aa8d6e82af6. +// ParseBlockProposed is a log parse operation binding the contract event 0x3bc85eed257804b26e2232e767692931a620954ad0ae6ca5c58adb22be553418. // -// Solidity: event BlockProposed(uint256 indexed blockId, address indexed prover, uint256 reward, (uint64,uint64,uint64,bytes32,bytes32,bytes32,uint24,uint24,uint32,address,(address,uint96,uint64)[]) meta) +// Solidity: event BlockProposed(uint256 indexed blockId, address indexed assignedProver, uint96 livenessBond, uint256 proverFee, uint256 reward, uint16 minTier, (bytes32,bytes32,bytes32,bytes32,uint64,uint64,uint64,uint32,address,(address,uint96,uint64)[]) meta) func (_TaikoL1 *TaikoL1Filterer) ParseBlockProposed(log types.Log) (*TaikoL1BlockProposed, error) { event := new(TaikoL1BlockProposed) if err := _TaikoL1.contract.UnpackLog(event, "BlockProposed", log); err != nil { @@ -1323,49 +1418,52 @@ func (it *TaikoL1BlockProposed0Iterator) Close() error { // TaikoL1BlockProposed0 represents a BlockProposed0 event raised by the TaikoL1 contract. type TaikoL1BlockProposed0 struct { - BlockId *big.Int - Prover common.Address - Reward *big.Int - Meta TaikoDataBlockMetadata - Raw types.Log // Blockchain specific contextual infos + BlockId *big.Int + AssignedProver common.Address + LivenessBond *big.Int + ProverFee *big.Int + Reward *big.Int + MinTier uint16 + Meta TaikoDataBlockMetadata + Raw types.Log // Blockchain specific contextual infos } -// FilterBlockProposed0 is a free log retrieval operation binding the contract event 0xe3713939242e9072c6fbb16f90e98d4b583d66b9fae9208ba2148aa8d6e82af6. +// FilterBlockProposed0 is a free log retrieval operation binding the contract event 0x3bc85eed257804b26e2232e767692931a620954ad0ae6ca5c58adb22be553418. // -// Solidity: event BlockProposed(uint256 indexed blockId, address indexed prover, uint256 reward, (uint64,uint64,uint64,bytes32,bytes32,bytes32,uint24,uint24,uint32,address,(address,uint96,uint64)[]) meta) -func (_TaikoL1 *TaikoL1Filterer) FilterBlockProposed0(opts *bind.FilterOpts, blockId []*big.Int, prover []common.Address) (*TaikoL1BlockProposed0Iterator, error) { +// Solidity: event BlockProposed(uint256 indexed blockId, address indexed assignedProver, uint96 livenessBond, uint256 proverFee, uint256 reward, uint16 minTier, (bytes32,bytes32,bytes32,bytes32,uint64,uint64,uint64,uint32,address,(address,uint96,uint64)[]) meta) +func (_TaikoL1 *TaikoL1Filterer) FilterBlockProposed0(opts *bind.FilterOpts, blockId []*big.Int, assignedProver []common.Address) (*TaikoL1BlockProposed0Iterator, error) { var blockIdRule []interface{} for _, blockIdItem := range blockId { blockIdRule = append(blockIdRule, blockIdItem) } - var proverRule []interface{} - for _, proverItem := range prover { - proverRule = append(proverRule, proverItem) + var assignedProverRule []interface{} + for _, assignedProverItem := range assignedProver { + assignedProverRule = append(assignedProverRule, assignedProverItem) } - logs, sub, err := _TaikoL1.contract.FilterLogs(opts, "BlockProposed0", blockIdRule, proverRule) + logs, sub, err := _TaikoL1.contract.FilterLogs(opts, "BlockProposed0", blockIdRule, assignedProverRule) if err != nil { return nil, err } return &TaikoL1BlockProposed0Iterator{contract: _TaikoL1.contract, event: "BlockProposed0", logs: logs, sub: sub}, nil } -// WatchBlockProposed0 is a free log subscription operation binding the contract event 0xe3713939242e9072c6fbb16f90e98d4b583d66b9fae9208ba2148aa8d6e82af6. +// WatchBlockProposed0 is a free log subscription operation binding the contract event 0x3bc85eed257804b26e2232e767692931a620954ad0ae6ca5c58adb22be553418. // -// Solidity: event BlockProposed(uint256 indexed blockId, address indexed prover, uint256 reward, (uint64,uint64,uint64,bytes32,bytes32,bytes32,uint24,uint24,uint32,address,(address,uint96,uint64)[]) meta) -func (_TaikoL1 *TaikoL1Filterer) WatchBlockProposed0(opts *bind.WatchOpts, sink chan<- *TaikoL1BlockProposed0, blockId []*big.Int, prover []common.Address) (event.Subscription, error) { +// Solidity: event BlockProposed(uint256 indexed blockId, address indexed assignedProver, uint96 livenessBond, uint256 proverFee, uint256 reward, uint16 minTier, (bytes32,bytes32,bytes32,bytes32,uint64,uint64,uint64,uint32,address,(address,uint96,uint64)[]) meta) +func (_TaikoL1 *TaikoL1Filterer) WatchBlockProposed0(opts *bind.WatchOpts, sink chan<- *TaikoL1BlockProposed0, blockId []*big.Int, assignedProver []common.Address) (event.Subscription, error) { var blockIdRule []interface{} for _, blockIdItem := range blockId { blockIdRule = append(blockIdRule, blockIdItem) } - var proverRule []interface{} - for _, proverItem := range prover { - proverRule = append(proverRule, proverItem) + var assignedProverRule []interface{} + for _, assignedProverItem := range assignedProver { + assignedProverRule = append(assignedProverRule, assignedProverItem) } - logs, sub, err := _TaikoL1.contract.WatchLogs(opts, "BlockProposed0", blockIdRule, proverRule) + logs, sub, err := _TaikoL1.contract.WatchLogs(opts, "BlockProposed0", blockIdRule, assignedProverRule) if err != nil { return nil, err } @@ -1397,9 +1495,9 @@ func (_TaikoL1 *TaikoL1Filterer) WatchBlockProposed0(opts *bind.WatchOpts, sink }), nil } -// ParseBlockProposed0 is a log parse operation binding the contract event 0xe3713939242e9072c6fbb16f90e98d4b583d66b9fae9208ba2148aa8d6e82af6. +// ParseBlockProposed0 is a log parse operation binding the contract event 0x3bc85eed257804b26e2232e767692931a620954ad0ae6ca5c58adb22be553418. // -// Solidity: event BlockProposed(uint256 indexed blockId, address indexed prover, uint256 reward, (uint64,uint64,uint64,bytes32,bytes32,bytes32,uint24,uint24,uint32,address,(address,uint96,uint64)[]) meta) +// Solidity: event BlockProposed(uint256 indexed blockId, address indexed assignedProver, uint96 livenessBond, uint256 proverFee, uint256 reward, uint16 minTier, (bytes32,bytes32,bytes32,bytes32,uint64,uint64,uint64,uint32,address,(address,uint96,uint64)[]) meta) func (_TaikoL1 *TaikoL1Filterer) ParseBlockProposed0(log types.Log) (*TaikoL1BlockProposed0, error) { event := new(TaikoL1BlockProposed0) if err := _TaikoL1.contract.UnpackLog(event, "BlockProposed0", log); err != nil { @@ -1409,9 +1507,9 @@ func (_TaikoL1 *TaikoL1Filterer) ParseBlockProposed0(log types.Log) (*TaikoL1Blo return event, nil } -// TaikoL1BlockProvenIterator is returned from FilterBlockProven and is used to iterate over the raw logs and unpacked data for BlockProven events raised by the TaikoL1 contract. -type TaikoL1BlockProvenIterator struct { - Event *TaikoL1BlockProven // Event containing the contract specifics and raw log +// TaikoL1BlockVerifiedIterator is returned from FilterBlockVerified and is used to iterate over the raw logs and unpacked data for BlockVerified events raised by the TaikoL1 contract. +type TaikoL1BlockVerifiedIterator struct { + Event *TaikoL1BlockVerified // Event containing the contract specifics and raw log contract *bind.BoundContract // Generic contract to use for unpacking event data event string // Event name to use for unpacking event data @@ -1425,7 +1523,7 @@ type TaikoL1BlockProvenIterator struct { // Next advances the iterator to the subsequent event, returning whether there // are any more events found. In case of a retrieval or parsing error, false is // returned and Error() can be queried for the exact failure. -func (it *TaikoL1BlockProvenIterator) Next() bool { +func (it *TaikoL1BlockVerifiedIterator) Next() bool { // If the iterator failed, stop iterating if it.fail != nil { return false @@ -1434,7 +1532,7 @@ func (it *TaikoL1BlockProvenIterator) Next() bool { if it.done { select { case log := <-it.logs: - it.Event = new(TaikoL1BlockProven) + it.Event = new(TaikoL1BlockVerified) if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { it.fail = err return false @@ -1449,7 +1547,7 @@ func (it *TaikoL1BlockProvenIterator) Next() bool { // Iterator still in progress, wait for either a data or an error event select { case log := <-it.logs: - it.Event = new(TaikoL1BlockProven) + it.Event = new(TaikoL1BlockVerified) if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { it.fail = err return false @@ -1465,55 +1563,71 @@ func (it *TaikoL1BlockProvenIterator) Next() bool { } // Error returns any retrieval or parsing error occurred during filtering. -func (it *TaikoL1BlockProvenIterator) Error() error { +func (it *TaikoL1BlockVerifiedIterator) Error() error { return it.fail } // Close terminates the iteration process, releasing any pending underlying // resources. -func (it *TaikoL1BlockProvenIterator) Close() error { +func (it *TaikoL1BlockVerifiedIterator) Close() error { it.sub.Unsubscribe() return nil } -// TaikoL1BlockProven represents a BlockProven event raised by the TaikoL1 contract. -type TaikoL1BlockProven struct { - BlockId *big.Int - ParentHash [32]byte - BlockHash [32]byte - SignalRoot [32]byte - Prover common.Address - Raw types.Log // Blockchain specific contextual infos +// TaikoL1BlockVerified represents a BlockVerified event raised by the TaikoL1 contract. +type TaikoL1BlockVerified struct { + BlockId *big.Int + AssignedProver common.Address + Prover common.Address + BlockHash [32]byte + SignalRoot [32]byte + Raw types.Log // Blockchain specific contextual infos } -// FilterBlockProven is a free log retrieval operation binding the contract event 0xd93fde3ea1bb11dcd7a4e66320a05fc5aa63983b6447eff660084c4b1b1b499b. +// FilterBlockVerified is a free log retrieval operation binding the contract event 0x1433d0a0bbdef88a556faadc3c8481900a1bd0941743e979ddbe046e27ce4299. // -// Solidity: event BlockProven(uint256 indexed blockId, bytes32 parentHash, bytes32 blockHash, bytes32 signalRoot, address prover) -func (_TaikoL1 *TaikoL1Filterer) FilterBlockProven(opts *bind.FilterOpts, blockId []*big.Int) (*TaikoL1BlockProvenIterator, error) { +// Solidity: event BlockVerified(uint256 indexed blockId, address indexed assignedProver, address indexed prover, bytes32 blockHash, bytes32 signalRoot) +func (_TaikoL1 *TaikoL1Filterer) FilterBlockVerified(opts *bind.FilterOpts, blockId []*big.Int, assignedProver []common.Address, prover []common.Address) (*TaikoL1BlockVerifiedIterator, error) { var blockIdRule []interface{} for _, blockIdItem := range blockId { blockIdRule = append(blockIdRule, blockIdItem) } + var assignedProverRule []interface{} + for _, assignedProverItem := range assignedProver { + assignedProverRule = append(assignedProverRule, assignedProverItem) + } + var proverRule []interface{} + for _, proverItem := range prover { + proverRule = append(proverRule, proverItem) + } - logs, sub, err := _TaikoL1.contract.FilterLogs(opts, "BlockProven", blockIdRule) + logs, sub, err := _TaikoL1.contract.FilterLogs(opts, "BlockVerified", blockIdRule, assignedProverRule, proverRule) if err != nil { return nil, err } - return &TaikoL1BlockProvenIterator{contract: _TaikoL1.contract, event: "BlockProven", logs: logs, sub: sub}, nil + return &TaikoL1BlockVerifiedIterator{contract: _TaikoL1.contract, event: "BlockVerified", logs: logs, sub: sub}, nil } -// WatchBlockProven is a free log subscription operation binding the contract event 0xd93fde3ea1bb11dcd7a4e66320a05fc5aa63983b6447eff660084c4b1b1b499b. +// WatchBlockVerified is a free log subscription operation binding the contract event 0x1433d0a0bbdef88a556faadc3c8481900a1bd0941743e979ddbe046e27ce4299. // -// Solidity: event BlockProven(uint256 indexed blockId, bytes32 parentHash, bytes32 blockHash, bytes32 signalRoot, address prover) -func (_TaikoL1 *TaikoL1Filterer) WatchBlockProven(opts *bind.WatchOpts, sink chan<- *TaikoL1BlockProven, blockId []*big.Int) (event.Subscription, error) { +// Solidity: event BlockVerified(uint256 indexed blockId, address indexed assignedProver, address indexed prover, bytes32 blockHash, bytes32 signalRoot) +func (_TaikoL1 *TaikoL1Filterer) WatchBlockVerified(opts *bind.WatchOpts, sink chan<- *TaikoL1BlockVerified, blockId []*big.Int, assignedProver []common.Address, prover []common.Address) (event.Subscription, error) { var blockIdRule []interface{} for _, blockIdItem := range blockId { blockIdRule = append(blockIdRule, blockIdItem) } + var assignedProverRule []interface{} + for _, assignedProverItem := range assignedProver { + assignedProverRule = append(assignedProverRule, assignedProverItem) + } + var proverRule []interface{} + for _, proverItem := range prover { + proverRule = append(proverRule, proverItem) + } - logs, sub, err := _TaikoL1.contract.WatchLogs(opts, "BlockProven", blockIdRule) + logs, sub, err := _TaikoL1.contract.WatchLogs(opts, "BlockVerified", blockIdRule, assignedProverRule, proverRule) if err != nil { return nil, err } @@ -1523,8 +1637,8 @@ func (_TaikoL1 *TaikoL1Filterer) WatchBlockProven(opts *bind.WatchOpts, sink cha select { case log := <-logs: // New log arrived, parse the event and forward to the user - event := new(TaikoL1BlockProven) - if err := _TaikoL1.contract.UnpackLog(event, "BlockProven", log); err != nil { + event := new(TaikoL1BlockVerified) + if err := _TaikoL1.contract.UnpackLog(event, "BlockVerified", log); err != nil { return err } event.Raw = log @@ -1545,21 +1659,21 @@ func (_TaikoL1 *TaikoL1Filterer) WatchBlockProven(opts *bind.WatchOpts, sink cha }), nil } -// ParseBlockProven is a log parse operation binding the contract event 0xd93fde3ea1bb11dcd7a4e66320a05fc5aa63983b6447eff660084c4b1b1b499b. +// ParseBlockVerified is a log parse operation binding the contract event 0x1433d0a0bbdef88a556faadc3c8481900a1bd0941743e979ddbe046e27ce4299. // -// Solidity: event BlockProven(uint256 indexed blockId, bytes32 parentHash, bytes32 blockHash, bytes32 signalRoot, address prover) -func (_TaikoL1 *TaikoL1Filterer) ParseBlockProven(log types.Log) (*TaikoL1BlockProven, error) { - event := new(TaikoL1BlockProven) - if err := _TaikoL1.contract.UnpackLog(event, "BlockProven", log); err != nil { +// Solidity: event BlockVerified(uint256 indexed blockId, address indexed assignedProver, address indexed prover, bytes32 blockHash, bytes32 signalRoot) +func (_TaikoL1 *TaikoL1Filterer) ParseBlockVerified(log types.Log) (*TaikoL1BlockVerified, error) { + event := new(TaikoL1BlockVerified) + if err := _TaikoL1.contract.UnpackLog(event, "BlockVerified", log); err != nil { return nil, err } event.Raw = log return event, nil } -// TaikoL1BlockProven0Iterator is returned from FilterBlockProven0 and is used to iterate over the raw logs and unpacked data for BlockProven0 events raised by the TaikoL1 contract. -type TaikoL1BlockProven0Iterator struct { - Event *TaikoL1BlockProven0 // Event containing the contract specifics and raw log +// TaikoL1BlockVerified0Iterator is returned from FilterBlockVerified0 and is used to iterate over the raw logs and unpacked data for BlockVerified0 events raised by the TaikoL1 contract. +type TaikoL1BlockVerified0Iterator struct { + Event *TaikoL1BlockVerified0 // Event containing the contract specifics and raw log contract *bind.BoundContract // Generic contract to use for unpacking event data event string // Event name to use for unpacking event data @@ -1573,7 +1687,7 @@ type TaikoL1BlockProven0Iterator struct { // Next advances the iterator to the subsequent event, returning whether there // are any more events found. In case of a retrieval or parsing error, false is // returned and Error() can be queried for the exact failure. -func (it *TaikoL1BlockProven0Iterator) Next() bool { +func (it *TaikoL1BlockVerified0Iterator) Next() bool { // If the iterator failed, stop iterating if it.fail != nil { return false @@ -1582,7 +1696,7 @@ func (it *TaikoL1BlockProven0Iterator) Next() bool { if it.done { select { case log := <-it.logs: - it.Event = new(TaikoL1BlockProven0) + it.Event = new(TaikoL1BlockVerified0) if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { it.fail = err return false @@ -1597,7 +1711,7 @@ func (it *TaikoL1BlockProven0Iterator) Next() bool { // Iterator still in progress, wait for either a data or an error event select { case log := <-it.logs: - it.Event = new(TaikoL1BlockProven0) + it.Event = new(TaikoL1BlockVerified0) if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { it.fail = err return false @@ -1613,55 +1727,71 @@ func (it *TaikoL1BlockProven0Iterator) Next() bool { } // Error returns any retrieval or parsing error occurred during filtering. -func (it *TaikoL1BlockProven0Iterator) Error() error { +func (it *TaikoL1BlockVerified0Iterator) Error() error { return it.fail } // Close terminates the iteration process, releasing any pending underlying // resources. -func (it *TaikoL1BlockProven0Iterator) Close() error { +func (it *TaikoL1BlockVerified0Iterator) Close() error { it.sub.Unsubscribe() return nil } -// TaikoL1BlockProven0 represents a BlockProven0 event raised by the TaikoL1 contract. -type TaikoL1BlockProven0 struct { - BlockId *big.Int - ParentHash [32]byte - BlockHash [32]byte - SignalRoot [32]byte - Prover common.Address - Raw types.Log // Blockchain specific contextual infos +// TaikoL1BlockVerified0 represents a BlockVerified0 event raised by the TaikoL1 contract. +type TaikoL1BlockVerified0 struct { + BlockId *big.Int + AssignedProver common.Address + Prover common.Address + BlockHash [32]byte + SignalRoot [32]byte + Raw types.Log // Blockchain specific contextual infos } -// FilterBlockProven0 is a free log retrieval operation binding the contract event 0xd93fde3ea1bb11dcd7a4e66320a05fc5aa63983b6447eff660084c4b1b1b499b. +// FilterBlockVerified0 is a free log retrieval operation binding the contract event 0x1433d0a0bbdef88a556faadc3c8481900a1bd0941743e979ddbe046e27ce4299. // -// Solidity: event BlockProven(uint256 indexed blockId, bytes32 parentHash, bytes32 blockHash, bytes32 signalRoot, address prover) -func (_TaikoL1 *TaikoL1Filterer) FilterBlockProven0(opts *bind.FilterOpts, blockId []*big.Int) (*TaikoL1BlockProven0Iterator, error) { +// Solidity: event BlockVerified(uint256 indexed blockId, address indexed assignedProver, address indexed prover, bytes32 blockHash, bytes32 signalRoot) +func (_TaikoL1 *TaikoL1Filterer) FilterBlockVerified0(opts *bind.FilterOpts, blockId []*big.Int, assignedProver []common.Address, prover []common.Address) (*TaikoL1BlockVerified0Iterator, error) { var blockIdRule []interface{} for _, blockIdItem := range blockId { blockIdRule = append(blockIdRule, blockIdItem) } + var assignedProverRule []interface{} + for _, assignedProverItem := range assignedProver { + assignedProverRule = append(assignedProverRule, assignedProverItem) + } + var proverRule []interface{} + for _, proverItem := range prover { + proverRule = append(proverRule, proverItem) + } - logs, sub, err := _TaikoL1.contract.FilterLogs(opts, "BlockProven0", blockIdRule) + logs, sub, err := _TaikoL1.contract.FilterLogs(opts, "BlockVerified0", blockIdRule, assignedProverRule, proverRule) if err != nil { return nil, err } - return &TaikoL1BlockProven0Iterator{contract: _TaikoL1.contract, event: "BlockProven0", logs: logs, sub: sub}, nil + return &TaikoL1BlockVerified0Iterator{contract: _TaikoL1.contract, event: "BlockVerified0", logs: logs, sub: sub}, nil } -// WatchBlockProven0 is a free log subscription operation binding the contract event 0xd93fde3ea1bb11dcd7a4e66320a05fc5aa63983b6447eff660084c4b1b1b499b. +// WatchBlockVerified0 is a free log subscription operation binding the contract event 0x1433d0a0bbdef88a556faadc3c8481900a1bd0941743e979ddbe046e27ce4299. // -// Solidity: event BlockProven(uint256 indexed blockId, bytes32 parentHash, bytes32 blockHash, bytes32 signalRoot, address prover) -func (_TaikoL1 *TaikoL1Filterer) WatchBlockProven0(opts *bind.WatchOpts, sink chan<- *TaikoL1BlockProven0, blockId []*big.Int) (event.Subscription, error) { +// Solidity: event BlockVerified(uint256 indexed blockId, address indexed assignedProver, address indexed prover, bytes32 blockHash, bytes32 signalRoot) +func (_TaikoL1 *TaikoL1Filterer) WatchBlockVerified0(opts *bind.WatchOpts, sink chan<- *TaikoL1BlockVerified0, blockId []*big.Int, assignedProver []common.Address, prover []common.Address) (event.Subscription, error) { var blockIdRule []interface{} for _, blockIdItem := range blockId { blockIdRule = append(blockIdRule, blockIdItem) } + var assignedProverRule []interface{} + for _, assignedProverItem := range assignedProver { + assignedProverRule = append(assignedProverRule, assignedProverItem) + } + var proverRule []interface{} + for _, proverItem := range prover { + proverRule = append(proverRule, proverItem) + } - logs, sub, err := _TaikoL1.contract.WatchLogs(opts, "BlockProven0", blockIdRule) + logs, sub, err := _TaikoL1.contract.WatchLogs(opts, "BlockVerified0", blockIdRule, assignedProverRule, proverRule) if err != nil { return nil, err } @@ -1671,8 +1801,8 @@ func (_TaikoL1 *TaikoL1Filterer) WatchBlockProven0(opts *bind.WatchOpts, sink ch select { case log := <-logs: // New log arrived, parse the event and forward to the user - event := new(TaikoL1BlockProven0) - if err := _TaikoL1.contract.UnpackLog(event, "BlockProven0", log); err != nil { + event := new(TaikoL1BlockVerified0) + if err := _TaikoL1.contract.UnpackLog(event, "BlockVerified0", log); err != nil { return err } event.Raw = log @@ -1693,21 +1823,21 @@ func (_TaikoL1 *TaikoL1Filterer) WatchBlockProven0(opts *bind.WatchOpts, sink ch }), nil } -// ParseBlockProven0 is a log parse operation binding the contract event 0xd93fde3ea1bb11dcd7a4e66320a05fc5aa63983b6447eff660084c4b1b1b499b. +// ParseBlockVerified0 is a log parse operation binding the contract event 0x1433d0a0bbdef88a556faadc3c8481900a1bd0941743e979ddbe046e27ce4299. // -// Solidity: event BlockProven(uint256 indexed blockId, bytes32 parentHash, bytes32 blockHash, bytes32 signalRoot, address prover) -func (_TaikoL1 *TaikoL1Filterer) ParseBlockProven0(log types.Log) (*TaikoL1BlockProven0, error) { - event := new(TaikoL1BlockProven0) - if err := _TaikoL1.contract.UnpackLog(event, "BlockProven0", log); err != nil { +// Solidity: event BlockVerified(uint256 indexed blockId, address indexed assignedProver, address indexed prover, bytes32 blockHash, bytes32 signalRoot) +func (_TaikoL1 *TaikoL1Filterer) ParseBlockVerified0(log types.Log) (*TaikoL1BlockVerified0, error) { + event := new(TaikoL1BlockVerified0) + if err := _TaikoL1.contract.UnpackLog(event, "BlockVerified0", log); err != nil { return nil, err } event.Raw = log return event, nil } -// TaikoL1BlockVerifiedIterator is returned from FilterBlockVerified and is used to iterate over the raw logs and unpacked data for BlockVerified events raised by the TaikoL1 contract. -type TaikoL1BlockVerifiedIterator struct { - Event *TaikoL1BlockVerified // Event containing the contract specifics and raw log +// TaikoL1CrossChainSyncedIterator is returned from FilterCrossChainSynced and is used to iterate over the raw logs and unpacked data for CrossChainSynced events raised by the TaikoL1 contract. +type TaikoL1CrossChainSyncedIterator struct { + Event *TaikoL1CrossChainSynced // Event containing the contract specifics and raw log contract *bind.BoundContract // Generic contract to use for unpacking event data event string // Event name to use for unpacking event data @@ -1721,7 +1851,7 @@ type TaikoL1BlockVerifiedIterator struct { // Next advances the iterator to the subsequent event, returning whether there // are any more events found. In case of a retrieval or parsing error, false is // returned and Error() can be queried for the exact failure. -func (it *TaikoL1BlockVerifiedIterator) Next() bool { +func (it *TaikoL1CrossChainSyncedIterator) Next() bool { // If the iterator failed, stop iterating if it.fail != nil { return false @@ -1730,7 +1860,7 @@ func (it *TaikoL1BlockVerifiedIterator) Next() bool { if it.done { select { case log := <-it.logs: - it.Event = new(TaikoL1BlockVerified) + it.Event = new(TaikoL1CrossChainSynced) if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { it.fail = err return false @@ -1745,7 +1875,7 @@ func (it *TaikoL1BlockVerifiedIterator) Next() bool { // Iterator still in progress, wait for either a data or an error event select { case log := <-it.logs: - it.Event = new(TaikoL1BlockVerified) + it.Event = new(TaikoL1CrossChainSynced) if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { it.fail = err return false @@ -1761,61 +1891,53 @@ func (it *TaikoL1BlockVerifiedIterator) Next() bool { } // Error returns any retrieval or parsing error occurred during filtering. -func (it *TaikoL1BlockVerifiedIterator) Error() error { +func (it *TaikoL1CrossChainSyncedIterator) Error() error { return it.fail } // Close terminates the iteration process, releasing any pending underlying // resources. -func (it *TaikoL1BlockVerifiedIterator) Close() error { +func (it *TaikoL1CrossChainSyncedIterator) Close() error { it.sub.Unsubscribe() return nil } -// TaikoL1BlockVerified represents a BlockVerified event raised by the TaikoL1 contract. -type TaikoL1BlockVerified struct { - BlockId *big.Int - Prover common.Address - BlockHash [32]byte - Raw types.Log // Blockchain specific contextual infos +// TaikoL1CrossChainSynced represents a CrossChainSynced event raised by the TaikoL1 contract. +type TaikoL1CrossChainSynced struct { + SrcHeight uint64 + BlockHash [32]byte + SignalRoot [32]byte + Raw types.Log // Blockchain specific contextual infos } -// FilterBlockVerified is a free log retrieval operation binding the contract event 0xb2fa36cea736414fca28c5aca50d94c59d740984c4c878c3dd8ba26791309b1a. +// FilterCrossChainSynced is a free log retrieval operation binding the contract event 0x004ce985b8852a486571d0545799251fd671adcf33b7854a5f0f6a6a2431a555. // -// Solidity: event BlockVerified(uint256 indexed blockId, address indexed prover, bytes32 blockHash) -func (_TaikoL1 *TaikoL1Filterer) FilterBlockVerified(opts *bind.FilterOpts, blockId []*big.Int, prover []common.Address) (*TaikoL1BlockVerifiedIterator, error) { +// Solidity: event CrossChainSynced(uint64 indexed srcHeight, bytes32 blockHash, bytes32 signalRoot) +func (_TaikoL1 *TaikoL1Filterer) FilterCrossChainSynced(opts *bind.FilterOpts, srcHeight []uint64) (*TaikoL1CrossChainSyncedIterator, error) { - var blockIdRule []interface{} - for _, blockIdItem := range blockId { - blockIdRule = append(blockIdRule, blockIdItem) - } - var proverRule []interface{} - for _, proverItem := range prover { - proverRule = append(proverRule, proverItem) + var srcHeightRule []interface{} + for _, srcHeightItem := range srcHeight { + srcHeightRule = append(srcHeightRule, srcHeightItem) } - logs, sub, err := _TaikoL1.contract.FilterLogs(opts, "BlockVerified", blockIdRule, proverRule) + logs, sub, err := _TaikoL1.contract.FilterLogs(opts, "CrossChainSynced", srcHeightRule) if err != nil { return nil, err } - return &TaikoL1BlockVerifiedIterator{contract: _TaikoL1.contract, event: "BlockVerified", logs: logs, sub: sub}, nil + return &TaikoL1CrossChainSyncedIterator{contract: _TaikoL1.contract, event: "CrossChainSynced", logs: logs, sub: sub}, nil } -// WatchBlockVerified is a free log subscription operation binding the contract event 0xb2fa36cea736414fca28c5aca50d94c59d740984c4c878c3dd8ba26791309b1a. +// WatchCrossChainSynced is a free log subscription operation binding the contract event 0x004ce985b8852a486571d0545799251fd671adcf33b7854a5f0f6a6a2431a555. // -// Solidity: event BlockVerified(uint256 indexed blockId, address indexed prover, bytes32 blockHash) -func (_TaikoL1 *TaikoL1Filterer) WatchBlockVerified(opts *bind.WatchOpts, sink chan<- *TaikoL1BlockVerified, blockId []*big.Int, prover []common.Address) (event.Subscription, error) { +// Solidity: event CrossChainSynced(uint64 indexed srcHeight, bytes32 blockHash, bytes32 signalRoot) +func (_TaikoL1 *TaikoL1Filterer) WatchCrossChainSynced(opts *bind.WatchOpts, sink chan<- *TaikoL1CrossChainSynced, srcHeight []uint64) (event.Subscription, error) { - var blockIdRule []interface{} - for _, blockIdItem := range blockId { - blockIdRule = append(blockIdRule, blockIdItem) - } - var proverRule []interface{} - for _, proverItem := range prover { - proverRule = append(proverRule, proverItem) + var srcHeightRule []interface{} + for _, srcHeightItem := range srcHeight { + srcHeightRule = append(srcHeightRule, srcHeightItem) } - logs, sub, err := _TaikoL1.contract.WatchLogs(opts, "BlockVerified", blockIdRule, proverRule) + logs, sub, err := _TaikoL1.contract.WatchLogs(opts, "CrossChainSynced", srcHeightRule) if err != nil { return nil, err } @@ -1825,8 +1947,8 @@ func (_TaikoL1 *TaikoL1Filterer) WatchBlockVerified(opts *bind.WatchOpts, sink c select { case log := <-logs: // New log arrived, parse the event and forward to the user - event := new(TaikoL1BlockVerified) - if err := _TaikoL1.contract.UnpackLog(event, "BlockVerified", log); err != nil { + event := new(TaikoL1CrossChainSynced) + if err := _TaikoL1.contract.UnpackLog(event, "CrossChainSynced", log); err != nil { return err } event.Raw = log @@ -1847,21 +1969,21 @@ func (_TaikoL1 *TaikoL1Filterer) WatchBlockVerified(opts *bind.WatchOpts, sink c }), nil } -// ParseBlockVerified is a log parse operation binding the contract event 0xb2fa36cea736414fca28c5aca50d94c59d740984c4c878c3dd8ba26791309b1a. +// ParseCrossChainSynced is a log parse operation binding the contract event 0x004ce985b8852a486571d0545799251fd671adcf33b7854a5f0f6a6a2431a555. // -// Solidity: event BlockVerified(uint256 indexed blockId, address indexed prover, bytes32 blockHash) -func (_TaikoL1 *TaikoL1Filterer) ParseBlockVerified(log types.Log) (*TaikoL1BlockVerified, error) { - event := new(TaikoL1BlockVerified) - if err := _TaikoL1.contract.UnpackLog(event, "BlockVerified", log); err != nil { +// Solidity: event CrossChainSynced(uint64 indexed srcHeight, bytes32 blockHash, bytes32 signalRoot) +func (_TaikoL1 *TaikoL1Filterer) ParseCrossChainSynced(log types.Log) (*TaikoL1CrossChainSynced, error) { + event := new(TaikoL1CrossChainSynced) + if err := _TaikoL1.contract.UnpackLog(event, "CrossChainSynced", log); err != nil { return nil, err } event.Raw = log return event, nil } -// TaikoL1BlockVerified0Iterator is returned from FilterBlockVerified0 and is used to iterate over the raw logs and unpacked data for BlockVerified0 events raised by the TaikoL1 contract. -type TaikoL1BlockVerified0Iterator struct { - Event *TaikoL1BlockVerified0 // Event containing the contract specifics and raw log +// TaikoL1CrossChainSynced0Iterator is returned from FilterCrossChainSynced0 and is used to iterate over the raw logs and unpacked data for CrossChainSynced0 events raised by the TaikoL1 contract. +type TaikoL1CrossChainSynced0Iterator struct { + Event *TaikoL1CrossChainSynced0 // Event containing the contract specifics and raw log contract *bind.BoundContract // Generic contract to use for unpacking event data event string // Event name to use for unpacking event data @@ -1875,7 +1997,7 @@ type TaikoL1BlockVerified0Iterator struct { // Next advances the iterator to the subsequent event, returning whether there // are any more events found. In case of a retrieval or parsing error, false is // returned and Error() can be queried for the exact failure. -func (it *TaikoL1BlockVerified0Iterator) Next() bool { +func (it *TaikoL1CrossChainSynced0Iterator) Next() bool { // If the iterator failed, stop iterating if it.fail != nil { return false @@ -1884,7 +2006,7 @@ func (it *TaikoL1BlockVerified0Iterator) Next() bool { if it.done { select { case log := <-it.logs: - it.Event = new(TaikoL1BlockVerified0) + it.Event = new(TaikoL1CrossChainSynced0) if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { it.fail = err return false @@ -1899,7 +2021,7 @@ func (it *TaikoL1BlockVerified0Iterator) Next() bool { // Iterator still in progress, wait for either a data or an error event select { case log := <-it.logs: - it.Event = new(TaikoL1BlockVerified0) + it.Event = new(TaikoL1CrossChainSynced0) if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { it.fail = err return false @@ -1915,61 +2037,1684 @@ func (it *TaikoL1BlockVerified0Iterator) Next() bool { } // Error returns any retrieval or parsing error occurred during filtering. -func (it *TaikoL1BlockVerified0Iterator) Error() error { +func (it *TaikoL1CrossChainSynced0Iterator) Error() error { return it.fail } // Close terminates the iteration process, releasing any pending underlying // resources. -func (it *TaikoL1BlockVerified0Iterator) Close() error { +func (it *TaikoL1CrossChainSynced0Iterator) Close() error { it.sub.Unsubscribe() return nil } -// TaikoL1BlockVerified0 represents a BlockVerified0 event raised by the TaikoL1 contract. -type TaikoL1BlockVerified0 struct { - BlockId *big.Int - Prover common.Address - BlockHash [32]byte - Raw types.Log // Blockchain specific contextual infos +// TaikoL1CrossChainSynced0 represents a CrossChainSynced0 event raised by the TaikoL1 contract. +type TaikoL1CrossChainSynced0 struct { + SrcHeight uint64 + BlockHash [32]byte + SignalRoot [32]byte + Raw types.Log // Blockchain specific contextual infos } -// FilterBlockVerified0 is a free log retrieval operation binding the contract event 0xb2fa36cea736414fca28c5aca50d94c59d740984c4c878c3dd8ba26791309b1a. +// FilterCrossChainSynced0 is a free log retrieval operation binding the contract event 0x004ce985b8852a486571d0545799251fd671adcf33b7854a5f0f6a6a2431a555. // -// Solidity: event BlockVerified(uint256 indexed blockId, address indexed prover, bytes32 blockHash) -func (_TaikoL1 *TaikoL1Filterer) FilterBlockVerified0(opts *bind.FilterOpts, blockId []*big.Int, prover []common.Address) (*TaikoL1BlockVerified0Iterator, error) { +// Solidity: event CrossChainSynced(uint64 indexed srcHeight, bytes32 blockHash, bytes32 signalRoot) +func (_TaikoL1 *TaikoL1Filterer) FilterCrossChainSynced0(opts *bind.FilterOpts, srcHeight []uint64) (*TaikoL1CrossChainSynced0Iterator, error) { - var blockIdRule []interface{} - for _, blockIdItem := range blockId { - blockIdRule = append(blockIdRule, blockIdItem) - } - var proverRule []interface{} - for _, proverItem := range prover { - proverRule = append(proverRule, proverItem) + var srcHeightRule []interface{} + for _, srcHeightItem := range srcHeight { + srcHeightRule = append(srcHeightRule, srcHeightItem) } - logs, sub, err := _TaikoL1.contract.FilterLogs(opts, "BlockVerified0", blockIdRule, proverRule) + logs, sub, err := _TaikoL1.contract.FilterLogs(opts, "CrossChainSynced0", srcHeightRule) if err != nil { return nil, err } - return &TaikoL1BlockVerified0Iterator{contract: _TaikoL1.contract, event: "BlockVerified0", logs: logs, sub: sub}, nil + return &TaikoL1CrossChainSynced0Iterator{contract: _TaikoL1.contract, event: "CrossChainSynced0", logs: logs, sub: sub}, nil } -// WatchBlockVerified0 is a free log subscription operation binding the contract event 0xb2fa36cea736414fca28c5aca50d94c59d740984c4c878c3dd8ba26791309b1a. +// WatchCrossChainSynced0 is a free log subscription operation binding the contract event 0x004ce985b8852a486571d0545799251fd671adcf33b7854a5f0f6a6a2431a555. // -// Solidity: event BlockVerified(uint256 indexed blockId, address indexed prover, bytes32 blockHash) -func (_TaikoL1 *TaikoL1Filterer) WatchBlockVerified0(opts *bind.WatchOpts, sink chan<- *TaikoL1BlockVerified0, blockId []*big.Int, prover []common.Address) (event.Subscription, error) { +// Solidity: event CrossChainSynced(uint64 indexed srcHeight, bytes32 blockHash, bytes32 signalRoot) +func (_TaikoL1 *TaikoL1Filterer) WatchCrossChainSynced0(opts *bind.WatchOpts, sink chan<- *TaikoL1CrossChainSynced0, srcHeight []uint64) (event.Subscription, error) { - var blockIdRule []interface{} - for _, blockIdItem := range blockId { - blockIdRule = append(blockIdRule, blockIdItem) + var srcHeightRule []interface{} + for _, srcHeightItem := range srcHeight { + srcHeightRule = append(srcHeightRule, srcHeightItem) } - var proverRule []interface{} - for _, proverItem := range prover { - proverRule = append(proverRule, proverItem) + + logs, sub, err := _TaikoL1.contract.WatchLogs(opts, "CrossChainSynced0", srcHeightRule) + if err != nil { + return nil, err + } + return event.NewSubscription(func(quit <-chan struct{}) error { + defer sub.Unsubscribe() + for { + select { + case log := <-logs: + // New log arrived, parse the event and forward to the user + event := new(TaikoL1CrossChainSynced0) + if err := _TaikoL1.contract.UnpackLog(event, "CrossChainSynced0", log); err != nil { + return err + } + event.Raw = log + + select { + case sink <- event: + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + } + }), nil +} + +// ParseCrossChainSynced0 is a log parse operation binding the contract event 0x004ce985b8852a486571d0545799251fd671adcf33b7854a5f0f6a6a2431a555. +// +// Solidity: event CrossChainSynced(uint64 indexed srcHeight, bytes32 blockHash, bytes32 signalRoot) +func (_TaikoL1 *TaikoL1Filterer) ParseCrossChainSynced0(log types.Log) (*TaikoL1CrossChainSynced0, error) { + event := new(TaikoL1CrossChainSynced0) + if err := _TaikoL1.contract.UnpackLog(event, "CrossChainSynced0", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} + +// TaikoL1EthDepositedIterator is returned from FilterEthDeposited and is used to iterate over the raw logs and unpacked data for EthDeposited events raised by the TaikoL1 contract. +type TaikoL1EthDepositedIterator struct { + Event *TaikoL1EthDeposited // Event containing the contract specifics and raw log + + contract *bind.BoundContract // Generic contract to use for unpacking event data + event string // Event name to use for unpacking event data + + logs chan types.Log // Log channel receiving the found contract events + sub ethereum.Subscription // Subscription for errors, completion and termination + done bool // Whether the subscription completed delivering logs + fail error // Occurred error to stop iteration +} + +// Next advances the iterator to the subsequent event, returning whether there +// are any more events found. In case of a retrieval or parsing error, false is +// returned and Error() can be queried for the exact failure. +func (it *TaikoL1EthDepositedIterator) Next() bool { + // If the iterator failed, stop iterating + if it.fail != nil { + return false + } + // If the iterator completed, deliver directly whatever's available + if it.done { + select { + case log := <-it.logs: + it.Event = new(TaikoL1EthDeposited) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + default: + return false + } + } + // Iterator still in progress, wait for either a data or an error event + select { + case log := <-it.logs: + it.Event = new(TaikoL1EthDeposited) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + case err := <-it.sub.Err(): + it.done = true + it.fail = err + return it.Next() + } +} + +// Error returns any retrieval or parsing error occurred during filtering. +func (it *TaikoL1EthDepositedIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *TaikoL1EthDepositedIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// TaikoL1EthDeposited represents a EthDeposited event raised by the TaikoL1 contract. +type TaikoL1EthDeposited struct { + Deposit TaikoDataEthDeposit + Raw types.Log // Blockchain specific contextual infos +} + +// FilterEthDeposited is a free log retrieval operation binding the contract event 0x7120a3b075ad25974c5eed76dedb3a217c76c9c6d1f1e201caeba9b89de9a9d9. +// +// Solidity: event EthDeposited((address,uint96,uint64) deposit) +func (_TaikoL1 *TaikoL1Filterer) FilterEthDeposited(opts *bind.FilterOpts) (*TaikoL1EthDepositedIterator, error) { + + logs, sub, err := _TaikoL1.contract.FilterLogs(opts, "EthDeposited") + if err != nil { + return nil, err + } + return &TaikoL1EthDepositedIterator{contract: _TaikoL1.contract, event: "EthDeposited", logs: logs, sub: sub}, nil +} + +// WatchEthDeposited is a free log subscription operation binding the contract event 0x7120a3b075ad25974c5eed76dedb3a217c76c9c6d1f1e201caeba9b89de9a9d9. +// +// Solidity: event EthDeposited((address,uint96,uint64) deposit) +func (_TaikoL1 *TaikoL1Filterer) WatchEthDeposited(opts *bind.WatchOpts, sink chan<- *TaikoL1EthDeposited) (event.Subscription, error) { + + logs, sub, err := _TaikoL1.contract.WatchLogs(opts, "EthDeposited") + if err != nil { + return nil, err + } + return event.NewSubscription(func(quit <-chan struct{}) error { + defer sub.Unsubscribe() + for { + select { + case log := <-logs: + // New log arrived, parse the event and forward to the user + event := new(TaikoL1EthDeposited) + if err := _TaikoL1.contract.UnpackLog(event, "EthDeposited", log); err != nil { + return err + } + event.Raw = log + + select { + case sink <- event: + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + } + }), nil +} + +// ParseEthDeposited is a log parse operation binding the contract event 0x7120a3b075ad25974c5eed76dedb3a217c76c9c6d1f1e201caeba9b89de9a9d9. +// +// Solidity: event EthDeposited((address,uint96,uint64) deposit) +func (_TaikoL1 *TaikoL1Filterer) ParseEthDeposited(log types.Log) (*TaikoL1EthDeposited, error) { + event := new(TaikoL1EthDeposited) + if err := _TaikoL1.contract.UnpackLog(event, "EthDeposited", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} + +// TaikoL1EthDeposited0Iterator is returned from FilterEthDeposited0 and is used to iterate over the raw logs and unpacked data for EthDeposited0 events raised by the TaikoL1 contract. +type TaikoL1EthDeposited0Iterator struct { + Event *TaikoL1EthDeposited0 // Event containing the contract specifics and raw log + + contract *bind.BoundContract // Generic contract to use for unpacking event data + event string // Event name to use for unpacking event data + + logs chan types.Log // Log channel receiving the found contract events + sub ethereum.Subscription // Subscription for errors, completion and termination + done bool // Whether the subscription completed delivering logs + fail error // Occurred error to stop iteration +} + +// Next advances the iterator to the subsequent event, returning whether there +// are any more events found. In case of a retrieval or parsing error, false is +// returned and Error() can be queried for the exact failure. +func (it *TaikoL1EthDeposited0Iterator) Next() bool { + // If the iterator failed, stop iterating + if it.fail != nil { + return false + } + // If the iterator completed, deliver directly whatever's available + if it.done { + select { + case log := <-it.logs: + it.Event = new(TaikoL1EthDeposited0) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + default: + return false + } + } + // Iterator still in progress, wait for either a data or an error event + select { + case log := <-it.logs: + it.Event = new(TaikoL1EthDeposited0) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + case err := <-it.sub.Err(): + it.done = true + it.fail = err + return it.Next() + } +} + +// Error returns any retrieval or parsing error occurred during filtering. +func (it *TaikoL1EthDeposited0Iterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *TaikoL1EthDeposited0Iterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// TaikoL1EthDeposited0 represents a EthDeposited0 event raised by the TaikoL1 contract. +type TaikoL1EthDeposited0 struct { + Deposit TaikoDataEthDeposit + Raw types.Log // Blockchain specific contextual infos +} + +// FilterEthDeposited0 is a free log retrieval operation binding the contract event 0x7120a3b075ad25974c5eed76dedb3a217c76c9c6d1f1e201caeba9b89de9a9d9. +// +// Solidity: event EthDeposited((address,uint96,uint64) deposit) +func (_TaikoL1 *TaikoL1Filterer) FilterEthDeposited0(opts *bind.FilterOpts) (*TaikoL1EthDeposited0Iterator, error) { + + logs, sub, err := _TaikoL1.contract.FilterLogs(opts, "EthDeposited0") + if err != nil { + return nil, err + } + return &TaikoL1EthDeposited0Iterator{contract: _TaikoL1.contract, event: "EthDeposited0", logs: logs, sub: sub}, nil +} + +// WatchEthDeposited0 is a free log subscription operation binding the contract event 0x7120a3b075ad25974c5eed76dedb3a217c76c9c6d1f1e201caeba9b89de9a9d9. +// +// Solidity: event EthDeposited((address,uint96,uint64) deposit) +func (_TaikoL1 *TaikoL1Filterer) WatchEthDeposited0(opts *bind.WatchOpts, sink chan<- *TaikoL1EthDeposited0) (event.Subscription, error) { + + logs, sub, err := _TaikoL1.contract.WatchLogs(opts, "EthDeposited0") + if err != nil { + return nil, err + } + return event.NewSubscription(func(quit <-chan struct{}) error { + defer sub.Unsubscribe() + for { + select { + case log := <-logs: + // New log arrived, parse the event and forward to the user + event := new(TaikoL1EthDeposited0) + if err := _TaikoL1.contract.UnpackLog(event, "EthDeposited0", log); err != nil { + return err + } + event.Raw = log + + select { + case sink <- event: + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + } + }), nil +} + +// ParseEthDeposited0 is a log parse operation binding the contract event 0x7120a3b075ad25974c5eed76dedb3a217c76c9c6d1f1e201caeba9b89de9a9d9. +// +// Solidity: event EthDeposited((address,uint96,uint64) deposit) +func (_TaikoL1 *TaikoL1Filterer) ParseEthDeposited0(log types.Log) (*TaikoL1EthDeposited0, error) { + event := new(TaikoL1EthDeposited0) + if err := _TaikoL1.contract.UnpackLog(event, "EthDeposited0", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} + +// TaikoL1InitializedIterator is returned from FilterInitialized and is used to iterate over the raw logs and unpacked data for Initialized events raised by the TaikoL1 contract. +type TaikoL1InitializedIterator struct { + Event *TaikoL1Initialized // Event containing the contract specifics and raw log + + contract *bind.BoundContract // Generic contract to use for unpacking event data + event string // Event name to use for unpacking event data + + logs chan types.Log // Log channel receiving the found contract events + sub ethereum.Subscription // Subscription for errors, completion and termination + done bool // Whether the subscription completed delivering logs + fail error // Occurred error to stop iteration +} + +// Next advances the iterator to the subsequent event, returning whether there +// are any more events found. In case of a retrieval or parsing error, false is +// returned and Error() can be queried for the exact failure. +func (it *TaikoL1InitializedIterator) Next() bool { + // If the iterator failed, stop iterating + if it.fail != nil { + return false + } + // If the iterator completed, deliver directly whatever's available + if it.done { + select { + case log := <-it.logs: + it.Event = new(TaikoL1Initialized) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + default: + return false + } + } + // Iterator still in progress, wait for either a data or an error event + select { + case log := <-it.logs: + it.Event = new(TaikoL1Initialized) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + case err := <-it.sub.Err(): + it.done = true + it.fail = err + return it.Next() + } +} + +// Error returns any retrieval or parsing error occurred during filtering. +func (it *TaikoL1InitializedIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *TaikoL1InitializedIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// TaikoL1Initialized represents a Initialized event raised by the TaikoL1 contract. +type TaikoL1Initialized struct { + Version uint8 + Raw types.Log // Blockchain specific contextual infos +} + +// FilterInitialized is a free log retrieval operation binding the contract event 0x7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb3847402498. +// +// Solidity: event Initialized(uint8 version) +func (_TaikoL1 *TaikoL1Filterer) FilterInitialized(opts *bind.FilterOpts) (*TaikoL1InitializedIterator, error) { + + logs, sub, err := _TaikoL1.contract.FilterLogs(opts, "Initialized") + if err != nil { + return nil, err + } + return &TaikoL1InitializedIterator{contract: _TaikoL1.contract, event: "Initialized", logs: logs, sub: sub}, nil +} + +// WatchInitialized is a free log subscription operation binding the contract event 0x7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb3847402498. +// +// Solidity: event Initialized(uint8 version) +func (_TaikoL1 *TaikoL1Filterer) WatchInitialized(opts *bind.WatchOpts, sink chan<- *TaikoL1Initialized) (event.Subscription, error) { + + logs, sub, err := _TaikoL1.contract.WatchLogs(opts, "Initialized") + if err != nil { + return nil, err + } + return event.NewSubscription(func(quit <-chan struct{}) error { + defer sub.Unsubscribe() + for { + select { + case log := <-logs: + // New log arrived, parse the event and forward to the user + event := new(TaikoL1Initialized) + if err := _TaikoL1.contract.UnpackLog(event, "Initialized", log); err != nil { + return err + } + event.Raw = log + + select { + case sink <- event: + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + } + }), nil +} + +// ParseInitialized is a log parse operation binding the contract event 0x7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb3847402498. +// +// Solidity: event Initialized(uint8 version) +func (_TaikoL1 *TaikoL1Filterer) ParseInitialized(log types.Log) (*TaikoL1Initialized, error) { + event := new(TaikoL1Initialized) + if err := _TaikoL1.contract.UnpackLog(event, "Initialized", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} + +// TaikoL1OwnershipTransferredIterator is returned from FilterOwnershipTransferred and is used to iterate over the raw logs and unpacked data for OwnershipTransferred events raised by the TaikoL1 contract. +type TaikoL1OwnershipTransferredIterator struct { + Event *TaikoL1OwnershipTransferred // Event containing the contract specifics and raw log + + contract *bind.BoundContract // Generic contract to use for unpacking event data + event string // Event name to use for unpacking event data + + logs chan types.Log // Log channel receiving the found contract events + sub ethereum.Subscription // Subscription for errors, completion and termination + done bool // Whether the subscription completed delivering logs + fail error // Occurred error to stop iteration +} + +// Next advances the iterator to the subsequent event, returning whether there +// are any more events found. In case of a retrieval or parsing error, false is +// returned and Error() can be queried for the exact failure. +func (it *TaikoL1OwnershipTransferredIterator) Next() bool { + // If the iterator failed, stop iterating + if it.fail != nil { + return false + } + // If the iterator completed, deliver directly whatever's available + if it.done { + select { + case log := <-it.logs: + it.Event = new(TaikoL1OwnershipTransferred) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + default: + return false + } + } + // Iterator still in progress, wait for either a data or an error event + select { + case log := <-it.logs: + it.Event = new(TaikoL1OwnershipTransferred) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + case err := <-it.sub.Err(): + it.done = true + it.fail = err + return it.Next() + } +} + +// Error returns any retrieval or parsing error occurred during filtering. +func (it *TaikoL1OwnershipTransferredIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *TaikoL1OwnershipTransferredIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// TaikoL1OwnershipTransferred represents a OwnershipTransferred event raised by the TaikoL1 contract. +type TaikoL1OwnershipTransferred struct { + PreviousOwner common.Address + NewOwner common.Address + Raw types.Log // Blockchain specific contextual infos +} + +// FilterOwnershipTransferred is a free log retrieval operation binding the contract event 0x8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0. +// +// Solidity: event OwnershipTransferred(address indexed previousOwner, address indexed newOwner) +func (_TaikoL1 *TaikoL1Filterer) FilterOwnershipTransferred(opts *bind.FilterOpts, previousOwner []common.Address, newOwner []common.Address) (*TaikoL1OwnershipTransferredIterator, error) { + + var previousOwnerRule []interface{} + for _, previousOwnerItem := range previousOwner { + previousOwnerRule = append(previousOwnerRule, previousOwnerItem) + } + var newOwnerRule []interface{} + for _, newOwnerItem := range newOwner { + newOwnerRule = append(newOwnerRule, newOwnerItem) + } + + logs, sub, err := _TaikoL1.contract.FilterLogs(opts, "OwnershipTransferred", previousOwnerRule, newOwnerRule) + if err != nil { + return nil, err + } + return &TaikoL1OwnershipTransferredIterator{contract: _TaikoL1.contract, event: "OwnershipTransferred", logs: logs, sub: sub}, nil +} + +// WatchOwnershipTransferred is a free log subscription operation binding the contract event 0x8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0. +// +// Solidity: event OwnershipTransferred(address indexed previousOwner, address indexed newOwner) +func (_TaikoL1 *TaikoL1Filterer) WatchOwnershipTransferred(opts *bind.WatchOpts, sink chan<- *TaikoL1OwnershipTransferred, previousOwner []common.Address, newOwner []common.Address) (event.Subscription, error) { + + var previousOwnerRule []interface{} + for _, previousOwnerItem := range previousOwner { + previousOwnerRule = append(previousOwnerRule, previousOwnerItem) + } + var newOwnerRule []interface{} + for _, newOwnerItem := range newOwner { + newOwnerRule = append(newOwnerRule, newOwnerItem) + } + + logs, sub, err := _TaikoL1.contract.WatchLogs(opts, "OwnershipTransferred", previousOwnerRule, newOwnerRule) + if err != nil { + return nil, err + } + return event.NewSubscription(func(quit <-chan struct{}) error { + defer sub.Unsubscribe() + for { + select { + case log := <-logs: + // New log arrived, parse the event and forward to the user + event := new(TaikoL1OwnershipTransferred) + if err := _TaikoL1.contract.UnpackLog(event, "OwnershipTransferred", log); err != nil { + return err + } + event.Raw = log + + select { + case sink <- event: + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + } + }), nil +} + +// ParseOwnershipTransferred is a log parse operation binding the contract event 0x8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0. +// +// Solidity: event OwnershipTransferred(address indexed previousOwner, address indexed newOwner) +func (_TaikoL1 *TaikoL1Filterer) ParseOwnershipTransferred(log types.Log) (*TaikoL1OwnershipTransferred, error) { + event := new(TaikoL1OwnershipTransferred) + if err := _TaikoL1.contract.UnpackLog(event, "OwnershipTransferred", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} + +// TaikoL1TokenCreditedIterator is returned from FilterTokenCredited and is used to iterate over the raw logs and unpacked data for TokenCredited events raised by the TaikoL1 contract. +type TaikoL1TokenCreditedIterator struct { + Event *TaikoL1TokenCredited // Event containing the contract specifics and raw log + + contract *bind.BoundContract // Generic contract to use for unpacking event data + event string // Event name to use for unpacking event data + + logs chan types.Log // Log channel receiving the found contract events + sub ethereum.Subscription // Subscription for errors, completion and termination + done bool // Whether the subscription completed delivering logs + fail error // Occurred error to stop iteration +} + +// Next advances the iterator to the subsequent event, returning whether there +// are any more events found. In case of a retrieval or parsing error, false is +// returned and Error() can be queried for the exact failure. +func (it *TaikoL1TokenCreditedIterator) Next() bool { + // If the iterator failed, stop iterating + if it.fail != nil { + return false + } + // If the iterator completed, deliver directly whatever's available + if it.done { + select { + case log := <-it.logs: + it.Event = new(TaikoL1TokenCredited) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + default: + return false + } + } + // Iterator still in progress, wait for either a data or an error event + select { + case log := <-it.logs: + it.Event = new(TaikoL1TokenCredited) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + case err := <-it.sub.Err(): + it.done = true + it.fail = err + return it.Next() + } +} + +// Error returns any retrieval or parsing error occurred during filtering. +func (it *TaikoL1TokenCreditedIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *TaikoL1TokenCreditedIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// TaikoL1TokenCredited represents a TokenCredited event raised by the TaikoL1 contract. +type TaikoL1TokenCredited struct { + Amount *big.Int + Minted bool + Raw types.Log // Blockchain specific contextual infos +} + +// FilterTokenCredited is a free log retrieval operation binding the contract event 0xeb0ac084e2fa6cfaebe54184190c7137c2fcc63c16e1dfaf6442ae95c01c44ad. +// +// Solidity: event TokenCredited(uint256 amount, bool minted) +func (_TaikoL1 *TaikoL1Filterer) FilterTokenCredited(opts *bind.FilterOpts) (*TaikoL1TokenCreditedIterator, error) { + + logs, sub, err := _TaikoL1.contract.FilterLogs(opts, "TokenCredited") + if err != nil { + return nil, err + } + return &TaikoL1TokenCreditedIterator{contract: _TaikoL1.contract, event: "TokenCredited", logs: logs, sub: sub}, nil +} + +// WatchTokenCredited is a free log subscription operation binding the contract event 0xeb0ac084e2fa6cfaebe54184190c7137c2fcc63c16e1dfaf6442ae95c01c44ad. +// +// Solidity: event TokenCredited(uint256 amount, bool minted) +func (_TaikoL1 *TaikoL1Filterer) WatchTokenCredited(opts *bind.WatchOpts, sink chan<- *TaikoL1TokenCredited) (event.Subscription, error) { + + logs, sub, err := _TaikoL1.contract.WatchLogs(opts, "TokenCredited") + if err != nil { + return nil, err + } + return event.NewSubscription(func(quit <-chan struct{}) error { + defer sub.Unsubscribe() + for { + select { + case log := <-logs: + // New log arrived, parse the event and forward to the user + event := new(TaikoL1TokenCredited) + if err := _TaikoL1.contract.UnpackLog(event, "TokenCredited", log); err != nil { + return err + } + event.Raw = log + + select { + case sink <- event: + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + } + }), nil +} + +// ParseTokenCredited is a log parse operation binding the contract event 0xeb0ac084e2fa6cfaebe54184190c7137c2fcc63c16e1dfaf6442ae95c01c44ad. +// +// Solidity: event TokenCredited(uint256 amount, bool minted) +func (_TaikoL1 *TaikoL1Filterer) ParseTokenCredited(log types.Log) (*TaikoL1TokenCredited, error) { + event := new(TaikoL1TokenCredited) + if err := _TaikoL1.contract.UnpackLog(event, "TokenCredited", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} + +// TaikoL1TokenCredited0Iterator is returned from FilterTokenCredited0 and is used to iterate over the raw logs and unpacked data for TokenCredited0 events raised by the TaikoL1 contract. +type TaikoL1TokenCredited0Iterator struct { + Event *TaikoL1TokenCredited0 // Event containing the contract specifics and raw log + + contract *bind.BoundContract // Generic contract to use for unpacking event data + event string // Event name to use for unpacking event data + + logs chan types.Log // Log channel receiving the found contract events + sub ethereum.Subscription // Subscription for errors, completion and termination + done bool // Whether the subscription completed delivering logs + fail error // Occurred error to stop iteration +} + +// Next advances the iterator to the subsequent event, returning whether there +// are any more events found. In case of a retrieval or parsing error, false is +// returned and Error() can be queried for the exact failure. +func (it *TaikoL1TokenCredited0Iterator) Next() bool { + // If the iterator failed, stop iterating + if it.fail != nil { + return false + } + // If the iterator completed, deliver directly whatever's available + if it.done { + select { + case log := <-it.logs: + it.Event = new(TaikoL1TokenCredited0) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + default: + return false + } + } + // Iterator still in progress, wait for either a data or an error event + select { + case log := <-it.logs: + it.Event = new(TaikoL1TokenCredited0) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + case err := <-it.sub.Err(): + it.done = true + it.fail = err + return it.Next() + } +} + +// Error returns any retrieval or parsing error occurred during filtering. +func (it *TaikoL1TokenCredited0Iterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *TaikoL1TokenCredited0Iterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// TaikoL1TokenCredited0 represents a TokenCredited0 event raised by the TaikoL1 contract. +type TaikoL1TokenCredited0 struct { + Amount *big.Int + Minted bool + Raw types.Log // Blockchain specific contextual infos +} + +// FilterTokenCredited0 is a free log retrieval operation binding the contract event 0xeb0ac084e2fa6cfaebe54184190c7137c2fcc63c16e1dfaf6442ae95c01c44ad. +// +// Solidity: event TokenCredited(uint256 amount, bool minted) +func (_TaikoL1 *TaikoL1Filterer) FilterTokenCredited0(opts *bind.FilterOpts) (*TaikoL1TokenCredited0Iterator, error) { + + logs, sub, err := _TaikoL1.contract.FilterLogs(opts, "TokenCredited0") + if err != nil { + return nil, err + } + return &TaikoL1TokenCredited0Iterator{contract: _TaikoL1.contract, event: "TokenCredited0", logs: logs, sub: sub}, nil +} + +// WatchTokenCredited0 is a free log subscription operation binding the contract event 0xeb0ac084e2fa6cfaebe54184190c7137c2fcc63c16e1dfaf6442ae95c01c44ad. +// +// Solidity: event TokenCredited(uint256 amount, bool minted) +func (_TaikoL1 *TaikoL1Filterer) WatchTokenCredited0(opts *bind.WatchOpts, sink chan<- *TaikoL1TokenCredited0) (event.Subscription, error) { + + logs, sub, err := _TaikoL1.contract.WatchLogs(opts, "TokenCredited0") + if err != nil { + return nil, err + } + return event.NewSubscription(func(quit <-chan struct{}) error { + defer sub.Unsubscribe() + for { + select { + case log := <-logs: + // New log arrived, parse the event and forward to the user + event := new(TaikoL1TokenCredited0) + if err := _TaikoL1.contract.UnpackLog(event, "TokenCredited0", log); err != nil { + return err + } + event.Raw = log + + select { + case sink <- event: + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + } + }), nil +} + +// ParseTokenCredited0 is a log parse operation binding the contract event 0xeb0ac084e2fa6cfaebe54184190c7137c2fcc63c16e1dfaf6442ae95c01c44ad. +// +// Solidity: event TokenCredited(uint256 amount, bool minted) +func (_TaikoL1 *TaikoL1Filterer) ParseTokenCredited0(log types.Log) (*TaikoL1TokenCredited0, error) { + event := new(TaikoL1TokenCredited0) + if err := _TaikoL1.contract.UnpackLog(event, "TokenCredited0", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} + +// TaikoL1TokenDebitedIterator is returned from FilterTokenDebited and is used to iterate over the raw logs and unpacked data for TokenDebited events raised by the TaikoL1 contract. +type TaikoL1TokenDebitedIterator struct { + Event *TaikoL1TokenDebited // Event containing the contract specifics and raw log + + contract *bind.BoundContract // Generic contract to use for unpacking event data + event string // Event name to use for unpacking event data + + logs chan types.Log // Log channel receiving the found contract events + sub ethereum.Subscription // Subscription for errors, completion and termination + done bool // Whether the subscription completed delivering logs + fail error // Occurred error to stop iteration +} + +// Next advances the iterator to the subsequent event, returning whether there +// are any more events found. In case of a retrieval or parsing error, false is +// returned and Error() can be queried for the exact failure. +func (it *TaikoL1TokenDebitedIterator) Next() bool { + // If the iterator failed, stop iterating + if it.fail != nil { + return false + } + // If the iterator completed, deliver directly whatever's available + if it.done { + select { + case log := <-it.logs: + it.Event = new(TaikoL1TokenDebited) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + default: + return false + } + } + // Iterator still in progress, wait for either a data or an error event + select { + case log := <-it.logs: + it.Event = new(TaikoL1TokenDebited) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + case err := <-it.sub.Err(): + it.done = true + it.fail = err + return it.Next() + } +} + +// Error returns any retrieval or parsing error occurred during filtering. +func (it *TaikoL1TokenDebitedIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *TaikoL1TokenDebitedIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// TaikoL1TokenDebited represents a TokenDebited event raised by the TaikoL1 contract. +type TaikoL1TokenDebited struct { + Amount *big.Int + FromLocalBalance bool + Raw types.Log // Blockchain specific contextual infos +} + +// FilterTokenDebited is a free log retrieval operation binding the contract event 0x8012eed335fcd2a9b93e688e5146be66d3b48c2e40578e713dc5f254d7fea32a. +// +// Solidity: event TokenDebited(uint256 amount, bool fromLocalBalance) +func (_TaikoL1 *TaikoL1Filterer) FilterTokenDebited(opts *bind.FilterOpts) (*TaikoL1TokenDebitedIterator, error) { + + logs, sub, err := _TaikoL1.contract.FilterLogs(opts, "TokenDebited") + if err != nil { + return nil, err + } + return &TaikoL1TokenDebitedIterator{contract: _TaikoL1.contract, event: "TokenDebited", logs: logs, sub: sub}, nil +} + +// WatchTokenDebited is a free log subscription operation binding the contract event 0x8012eed335fcd2a9b93e688e5146be66d3b48c2e40578e713dc5f254d7fea32a. +// +// Solidity: event TokenDebited(uint256 amount, bool fromLocalBalance) +func (_TaikoL1 *TaikoL1Filterer) WatchTokenDebited(opts *bind.WatchOpts, sink chan<- *TaikoL1TokenDebited) (event.Subscription, error) { + + logs, sub, err := _TaikoL1.contract.WatchLogs(opts, "TokenDebited") + if err != nil { + return nil, err + } + return event.NewSubscription(func(quit <-chan struct{}) error { + defer sub.Unsubscribe() + for { + select { + case log := <-logs: + // New log arrived, parse the event and forward to the user + event := new(TaikoL1TokenDebited) + if err := _TaikoL1.contract.UnpackLog(event, "TokenDebited", log); err != nil { + return err + } + event.Raw = log + + select { + case sink <- event: + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + } + }), nil +} + +// ParseTokenDebited is a log parse operation binding the contract event 0x8012eed335fcd2a9b93e688e5146be66d3b48c2e40578e713dc5f254d7fea32a. +// +// Solidity: event TokenDebited(uint256 amount, bool fromLocalBalance) +func (_TaikoL1 *TaikoL1Filterer) ParseTokenDebited(log types.Log) (*TaikoL1TokenDebited, error) { + event := new(TaikoL1TokenDebited) + if err := _TaikoL1.contract.UnpackLog(event, "TokenDebited", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} + +// TaikoL1TokenDebited0Iterator is returned from FilterTokenDebited0 and is used to iterate over the raw logs and unpacked data for TokenDebited0 events raised by the TaikoL1 contract. +type TaikoL1TokenDebited0Iterator struct { + Event *TaikoL1TokenDebited0 // Event containing the contract specifics and raw log + + contract *bind.BoundContract // Generic contract to use for unpacking event data + event string // Event name to use for unpacking event data + + logs chan types.Log // Log channel receiving the found contract events + sub ethereum.Subscription // Subscription for errors, completion and termination + done bool // Whether the subscription completed delivering logs + fail error // Occurred error to stop iteration +} + +// Next advances the iterator to the subsequent event, returning whether there +// are any more events found. In case of a retrieval or parsing error, false is +// returned and Error() can be queried for the exact failure. +func (it *TaikoL1TokenDebited0Iterator) Next() bool { + // If the iterator failed, stop iterating + if it.fail != nil { + return false + } + // If the iterator completed, deliver directly whatever's available + if it.done { + select { + case log := <-it.logs: + it.Event = new(TaikoL1TokenDebited0) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + default: + return false + } + } + // Iterator still in progress, wait for either a data or an error event + select { + case log := <-it.logs: + it.Event = new(TaikoL1TokenDebited0) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + case err := <-it.sub.Err(): + it.done = true + it.fail = err + return it.Next() + } +} + +// Error returns any retrieval or parsing error occurred during filtering. +func (it *TaikoL1TokenDebited0Iterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *TaikoL1TokenDebited0Iterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// TaikoL1TokenDebited0 represents a TokenDebited0 event raised by the TaikoL1 contract. +type TaikoL1TokenDebited0 struct { + Amount *big.Int + FromLocalBalance bool + Raw types.Log // Blockchain specific contextual infos +} + +// FilterTokenDebited0 is a free log retrieval operation binding the contract event 0x8012eed335fcd2a9b93e688e5146be66d3b48c2e40578e713dc5f254d7fea32a. +// +// Solidity: event TokenDebited(uint256 amount, bool fromLocalBalance) +func (_TaikoL1 *TaikoL1Filterer) FilterTokenDebited0(opts *bind.FilterOpts) (*TaikoL1TokenDebited0Iterator, error) { + + logs, sub, err := _TaikoL1.contract.FilterLogs(opts, "TokenDebited0") + if err != nil { + return nil, err + } + return &TaikoL1TokenDebited0Iterator{contract: _TaikoL1.contract, event: "TokenDebited0", logs: logs, sub: sub}, nil +} + +// WatchTokenDebited0 is a free log subscription operation binding the contract event 0x8012eed335fcd2a9b93e688e5146be66d3b48c2e40578e713dc5f254d7fea32a. +// +// Solidity: event TokenDebited(uint256 amount, bool fromLocalBalance) +func (_TaikoL1 *TaikoL1Filterer) WatchTokenDebited0(opts *bind.WatchOpts, sink chan<- *TaikoL1TokenDebited0) (event.Subscription, error) { + + logs, sub, err := _TaikoL1.contract.WatchLogs(opts, "TokenDebited0") + if err != nil { + return nil, err + } + return event.NewSubscription(func(quit <-chan struct{}) error { + defer sub.Unsubscribe() + for { + select { + case log := <-logs: + // New log arrived, parse the event and forward to the user + event := new(TaikoL1TokenDebited0) + if err := _TaikoL1.contract.UnpackLog(event, "TokenDebited0", log); err != nil { + return err + } + event.Raw = log + + select { + case sink <- event: + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + } + }), nil +} + +// ParseTokenDebited0 is a log parse operation binding the contract event 0x8012eed335fcd2a9b93e688e5146be66d3b48c2e40578e713dc5f254d7fea32a. +// +// Solidity: event TokenDebited(uint256 amount, bool fromLocalBalance) +func (_TaikoL1 *TaikoL1Filterer) ParseTokenDebited0(log types.Log) (*TaikoL1TokenDebited0, error) { + event := new(TaikoL1TokenDebited0) + if err := _TaikoL1.contract.UnpackLog(event, "TokenDebited0", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} + +// TaikoL1TokenDepositedIterator is returned from FilterTokenDeposited and is used to iterate over the raw logs and unpacked data for TokenDeposited events raised by the TaikoL1 contract. +type TaikoL1TokenDepositedIterator struct { + Event *TaikoL1TokenDeposited // Event containing the contract specifics and raw log + + contract *bind.BoundContract // Generic contract to use for unpacking event data + event string // Event name to use for unpacking event data + + logs chan types.Log // Log channel receiving the found contract events + sub ethereum.Subscription // Subscription for errors, completion and termination + done bool // Whether the subscription completed delivering logs + fail error // Occurred error to stop iteration +} + +// Next advances the iterator to the subsequent event, returning whether there +// are any more events found. In case of a retrieval or parsing error, false is +// returned and Error() can be queried for the exact failure. +func (it *TaikoL1TokenDepositedIterator) Next() bool { + // If the iterator failed, stop iterating + if it.fail != nil { + return false + } + // If the iterator completed, deliver directly whatever's available + if it.done { + select { + case log := <-it.logs: + it.Event = new(TaikoL1TokenDeposited) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + default: + return false + } + } + // Iterator still in progress, wait for either a data or an error event + select { + case log := <-it.logs: + it.Event = new(TaikoL1TokenDeposited) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + case err := <-it.sub.Err(): + it.done = true + it.fail = err + return it.Next() + } +} + +// Error returns any retrieval or parsing error occurred during filtering. +func (it *TaikoL1TokenDepositedIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *TaikoL1TokenDepositedIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// TaikoL1TokenDeposited represents a TokenDeposited event raised by the TaikoL1 contract. +type TaikoL1TokenDeposited struct { + Amount *big.Int + Raw types.Log // Blockchain specific contextual infos +} + +// FilterTokenDeposited is a free log retrieval operation binding the contract event 0x26a49ee784523ce049bcbe276a63c7c9dbd9f428b1aa53633e679c9c046e8858. +// +// Solidity: event TokenDeposited(uint256 amount) +func (_TaikoL1 *TaikoL1Filterer) FilterTokenDeposited(opts *bind.FilterOpts) (*TaikoL1TokenDepositedIterator, error) { + + logs, sub, err := _TaikoL1.contract.FilterLogs(opts, "TokenDeposited") + if err != nil { + return nil, err + } + return &TaikoL1TokenDepositedIterator{contract: _TaikoL1.contract, event: "TokenDeposited", logs: logs, sub: sub}, nil +} + +// WatchTokenDeposited is a free log subscription operation binding the contract event 0x26a49ee784523ce049bcbe276a63c7c9dbd9f428b1aa53633e679c9c046e8858. +// +// Solidity: event TokenDeposited(uint256 amount) +func (_TaikoL1 *TaikoL1Filterer) WatchTokenDeposited(opts *bind.WatchOpts, sink chan<- *TaikoL1TokenDeposited) (event.Subscription, error) { + + logs, sub, err := _TaikoL1.contract.WatchLogs(opts, "TokenDeposited") + if err != nil { + return nil, err + } + return event.NewSubscription(func(quit <-chan struct{}) error { + defer sub.Unsubscribe() + for { + select { + case log := <-logs: + // New log arrived, parse the event and forward to the user + event := new(TaikoL1TokenDeposited) + if err := _TaikoL1.contract.UnpackLog(event, "TokenDeposited", log); err != nil { + return err + } + event.Raw = log + + select { + case sink <- event: + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + } + }), nil +} + +// ParseTokenDeposited is a log parse operation binding the contract event 0x26a49ee784523ce049bcbe276a63c7c9dbd9f428b1aa53633e679c9c046e8858. +// +// Solidity: event TokenDeposited(uint256 amount) +func (_TaikoL1 *TaikoL1Filterer) ParseTokenDeposited(log types.Log) (*TaikoL1TokenDeposited, error) { + event := new(TaikoL1TokenDeposited) + if err := _TaikoL1.contract.UnpackLog(event, "TokenDeposited", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} + +// TaikoL1TokenDeposited0Iterator is returned from FilterTokenDeposited0 and is used to iterate over the raw logs and unpacked data for TokenDeposited0 events raised by the TaikoL1 contract. +type TaikoL1TokenDeposited0Iterator struct { + Event *TaikoL1TokenDeposited0 // Event containing the contract specifics and raw log + + contract *bind.BoundContract // Generic contract to use for unpacking event data + event string // Event name to use for unpacking event data + + logs chan types.Log // Log channel receiving the found contract events + sub ethereum.Subscription // Subscription for errors, completion and termination + done bool // Whether the subscription completed delivering logs + fail error // Occurred error to stop iteration +} + +// Next advances the iterator to the subsequent event, returning whether there +// are any more events found. In case of a retrieval or parsing error, false is +// returned and Error() can be queried for the exact failure. +func (it *TaikoL1TokenDeposited0Iterator) Next() bool { + // If the iterator failed, stop iterating + if it.fail != nil { + return false + } + // If the iterator completed, deliver directly whatever's available + if it.done { + select { + case log := <-it.logs: + it.Event = new(TaikoL1TokenDeposited0) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + default: + return false + } + } + // Iterator still in progress, wait for either a data or an error event + select { + case log := <-it.logs: + it.Event = new(TaikoL1TokenDeposited0) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + case err := <-it.sub.Err(): + it.done = true + it.fail = err + return it.Next() + } +} + +// Error returns any retrieval or parsing error occurred during filtering. +func (it *TaikoL1TokenDeposited0Iterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *TaikoL1TokenDeposited0Iterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// TaikoL1TokenDeposited0 represents a TokenDeposited0 event raised by the TaikoL1 contract. +type TaikoL1TokenDeposited0 struct { + Amount *big.Int + Raw types.Log // Blockchain specific contextual infos +} + +// FilterTokenDeposited0 is a free log retrieval operation binding the contract event 0x26a49ee784523ce049bcbe276a63c7c9dbd9f428b1aa53633e679c9c046e8858. +// +// Solidity: event TokenDeposited(uint256 amount) +func (_TaikoL1 *TaikoL1Filterer) FilterTokenDeposited0(opts *bind.FilterOpts) (*TaikoL1TokenDeposited0Iterator, error) { + + logs, sub, err := _TaikoL1.contract.FilterLogs(opts, "TokenDeposited0") + if err != nil { + return nil, err + } + return &TaikoL1TokenDeposited0Iterator{contract: _TaikoL1.contract, event: "TokenDeposited0", logs: logs, sub: sub}, nil +} + +// WatchTokenDeposited0 is a free log subscription operation binding the contract event 0x26a49ee784523ce049bcbe276a63c7c9dbd9f428b1aa53633e679c9c046e8858. +// +// Solidity: event TokenDeposited(uint256 amount) +func (_TaikoL1 *TaikoL1Filterer) WatchTokenDeposited0(opts *bind.WatchOpts, sink chan<- *TaikoL1TokenDeposited0) (event.Subscription, error) { + + logs, sub, err := _TaikoL1.contract.WatchLogs(opts, "TokenDeposited0") + if err != nil { + return nil, err + } + return event.NewSubscription(func(quit <-chan struct{}) error { + defer sub.Unsubscribe() + for { + select { + case log := <-logs: + // New log arrived, parse the event and forward to the user + event := new(TaikoL1TokenDeposited0) + if err := _TaikoL1.contract.UnpackLog(event, "TokenDeposited0", log); err != nil { + return err + } + event.Raw = log + + select { + case sink <- event: + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + } + }), nil +} + +// ParseTokenDeposited0 is a log parse operation binding the contract event 0x26a49ee784523ce049bcbe276a63c7c9dbd9f428b1aa53633e679c9c046e8858. +// +// Solidity: event TokenDeposited(uint256 amount) +func (_TaikoL1 *TaikoL1Filterer) ParseTokenDeposited0(log types.Log) (*TaikoL1TokenDeposited0, error) { + event := new(TaikoL1TokenDeposited0) + if err := _TaikoL1.contract.UnpackLog(event, "TokenDeposited0", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} + +// TaikoL1TokenWithdrawnIterator is returned from FilterTokenWithdrawn and is used to iterate over the raw logs and unpacked data for TokenWithdrawn events raised by the TaikoL1 contract. +type TaikoL1TokenWithdrawnIterator struct { + Event *TaikoL1TokenWithdrawn // Event containing the contract specifics and raw log + + contract *bind.BoundContract // Generic contract to use for unpacking event data + event string // Event name to use for unpacking event data + + logs chan types.Log // Log channel receiving the found contract events + sub ethereum.Subscription // Subscription for errors, completion and termination + done bool // Whether the subscription completed delivering logs + fail error // Occurred error to stop iteration +} + +// Next advances the iterator to the subsequent event, returning whether there +// are any more events found. In case of a retrieval or parsing error, false is +// returned and Error() can be queried for the exact failure. +func (it *TaikoL1TokenWithdrawnIterator) Next() bool { + // If the iterator failed, stop iterating + if it.fail != nil { + return false + } + // If the iterator completed, deliver directly whatever's available + if it.done { + select { + case log := <-it.logs: + it.Event = new(TaikoL1TokenWithdrawn) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + default: + return false + } + } + // Iterator still in progress, wait for either a data or an error event + select { + case log := <-it.logs: + it.Event = new(TaikoL1TokenWithdrawn) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + case err := <-it.sub.Err(): + it.done = true + it.fail = err + return it.Next() + } +} + +// Error returns any retrieval or parsing error occurred during filtering. +func (it *TaikoL1TokenWithdrawnIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *TaikoL1TokenWithdrawnIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// TaikoL1TokenWithdrawn represents a TokenWithdrawn event raised by the TaikoL1 contract. +type TaikoL1TokenWithdrawn struct { + Amount *big.Int + Raw types.Log // Blockchain specific contextual infos +} + +// FilterTokenWithdrawn is a free log retrieval operation binding the contract event 0xc172f6497c150fc242267f743e8e4034b31b16ee123408d6d5f75a81128de114. +// +// Solidity: event TokenWithdrawn(uint256 amount) +func (_TaikoL1 *TaikoL1Filterer) FilterTokenWithdrawn(opts *bind.FilterOpts) (*TaikoL1TokenWithdrawnIterator, error) { + + logs, sub, err := _TaikoL1.contract.FilterLogs(opts, "TokenWithdrawn") + if err != nil { + return nil, err + } + return &TaikoL1TokenWithdrawnIterator{contract: _TaikoL1.contract, event: "TokenWithdrawn", logs: logs, sub: sub}, nil +} + +// WatchTokenWithdrawn is a free log subscription operation binding the contract event 0xc172f6497c150fc242267f743e8e4034b31b16ee123408d6d5f75a81128de114. +// +// Solidity: event TokenWithdrawn(uint256 amount) +func (_TaikoL1 *TaikoL1Filterer) WatchTokenWithdrawn(opts *bind.WatchOpts, sink chan<- *TaikoL1TokenWithdrawn) (event.Subscription, error) { + + logs, sub, err := _TaikoL1.contract.WatchLogs(opts, "TokenWithdrawn") + if err != nil { + return nil, err + } + return event.NewSubscription(func(quit <-chan struct{}) error { + defer sub.Unsubscribe() + for { + select { + case log := <-logs: + // New log arrived, parse the event and forward to the user + event := new(TaikoL1TokenWithdrawn) + if err := _TaikoL1.contract.UnpackLog(event, "TokenWithdrawn", log); err != nil { + return err + } + event.Raw = log + + select { + case sink <- event: + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + } + }), nil +} + +// ParseTokenWithdrawn is a log parse operation binding the contract event 0xc172f6497c150fc242267f743e8e4034b31b16ee123408d6d5f75a81128de114. +// +// Solidity: event TokenWithdrawn(uint256 amount) +func (_TaikoL1 *TaikoL1Filterer) ParseTokenWithdrawn(log types.Log) (*TaikoL1TokenWithdrawn, error) { + event := new(TaikoL1TokenWithdrawn) + if err := _TaikoL1.contract.UnpackLog(event, "TokenWithdrawn", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} + +// TaikoL1TokenWithdrawn0Iterator is returned from FilterTokenWithdrawn0 and is used to iterate over the raw logs and unpacked data for TokenWithdrawn0 events raised by the TaikoL1 contract. +type TaikoL1TokenWithdrawn0Iterator struct { + Event *TaikoL1TokenWithdrawn0 // Event containing the contract specifics and raw log + + contract *bind.BoundContract // Generic contract to use for unpacking event data + event string // Event name to use for unpacking event data + + logs chan types.Log // Log channel receiving the found contract events + sub ethereum.Subscription // Subscription for errors, completion and termination + done bool // Whether the subscription completed delivering logs + fail error // Occurred error to stop iteration +} + +// Next advances the iterator to the subsequent event, returning whether there +// are any more events found. In case of a retrieval or parsing error, false is +// returned and Error() can be queried for the exact failure. +func (it *TaikoL1TokenWithdrawn0Iterator) Next() bool { + // If the iterator failed, stop iterating + if it.fail != nil { + return false + } + // If the iterator completed, deliver directly whatever's available + if it.done { + select { + case log := <-it.logs: + it.Event = new(TaikoL1TokenWithdrawn0) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + default: + return false + } + } + // Iterator still in progress, wait for either a data or an error event + select { + case log := <-it.logs: + it.Event = new(TaikoL1TokenWithdrawn0) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + case err := <-it.sub.Err(): + it.done = true + it.fail = err + return it.Next() + } +} + +// Error returns any retrieval or parsing error occurred during filtering. +func (it *TaikoL1TokenWithdrawn0Iterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *TaikoL1TokenWithdrawn0Iterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// TaikoL1TokenWithdrawn0 represents a TokenWithdrawn0 event raised by the TaikoL1 contract. +type TaikoL1TokenWithdrawn0 struct { + Amount *big.Int + Raw types.Log // Blockchain specific contextual infos +} + +// FilterTokenWithdrawn0 is a free log retrieval operation binding the contract event 0xc172f6497c150fc242267f743e8e4034b31b16ee123408d6d5f75a81128de114. +// +// Solidity: event TokenWithdrawn(uint256 amount) +func (_TaikoL1 *TaikoL1Filterer) FilterTokenWithdrawn0(opts *bind.FilterOpts) (*TaikoL1TokenWithdrawn0Iterator, error) { + + logs, sub, err := _TaikoL1.contract.FilterLogs(opts, "TokenWithdrawn0") + if err != nil { + return nil, err } + return &TaikoL1TokenWithdrawn0Iterator{contract: _TaikoL1.contract, event: "TokenWithdrawn0", logs: logs, sub: sub}, nil +} + +// WatchTokenWithdrawn0 is a free log subscription operation binding the contract event 0xc172f6497c150fc242267f743e8e4034b31b16ee123408d6d5f75a81128de114. +// +// Solidity: event TokenWithdrawn(uint256 amount) +func (_TaikoL1 *TaikoL1Filterer) WatchTokenWithdrawn0(opts *bind.WatchOpts, sink chan<- *TaikoL1TokenWithdrawn0) (event.Subscription, error) { - logs, sub, err := _TaikoL1.contract.WatchLogs(opts, "BlockVerified0", blockIdRule, proverRule) + logs, sub, err := _TaikoL1.contract.WatchLogs(opts, "TokenWithdrawn0") if err != nil { return nil, err } @@ -1979,8 +3724,8 @@ func (_TaikoL1 *TaikoL1Filterer) WatchBlockVerified0(opts *bind.WatchOpts, sink select { case log := <-logs: // New log arrived, parse the event and forward to the user - event := new(TaikoL1BlockVerified0) - if err := _TaikoL1.contract.UnpackLog(event, "BlockVerified0", log); err != nil { + event := new(TaikoL1TokenWithdrawn0) + if err := _TaikoL1.contract.UnpackLog(event, "TokenWithdrawn0", log); err != nil { return err } event.Raw = log @@ -2001,21 +3746,21 @@ func (_TaikoL1 *TaikoL1Filterer) WatchBlockVerified0(opts *bind.WatchOpts, sink }), nil } -// ParseBlockVerified0 is a log parse operation binding the contract event 0xb2fa36cea736414fca28c5aca50d94c59d740984c4c878c3dd8ba26791309b1a. +// ParseTokenWithdrawn0 is a log parse operation binding the contract event 0xc172f6497c150fc242267f743e8e4034b31b16ee123408d6d5f75a81128de114. // -// Solidity: event BlockVerified(uint256 indexed blockId, address indexed prover, bytes32 blockHash) -func (_TaikoL1 *TaikoL1Filterer) ParseBlockVerified0(log types.Log) (*TaikoL1BlockVerified0, error) { - event := new(TaikoL1BlockVerified0) - if err := _TaikoL1.contract.UnpackLog(event, "BlockVerified0", log); err != nil { +// Solidity: event TokenWithdrawn(uint256 amount) +func (_TaikoL1 *TaikoL1Filterer) ParseTokenWithdrawn0(log types.Log) (*TaikoL1TokenWithdrawn0, error) { + event := new(TaikoL1TokenWithdrawn0) + if err := _TaikoL1.contract.UnpackLog(event, "TokenWithdrawn0", log); err != nil { return nil, err } event.Raw = log return event, nil } -// TaikoL1CrossChainSyncedIterator is returned from FilterCrossChainSynced and is used to iterate over the raw logs and unpacked data for CrossChainSynced events raised by the TaikoL1 contract. -type TaikoL1CrossChainSyncedIterator struct { - Event *TaikoL1CrossChainSynced // Event containing the contract specifics and raw log +// TaikoL1TokenWithdrawnByOwnerIterator is returned from FilterTokenWithdrawnByOwner and is used to iterate over the raw logs and unpacked data for TokenWithdrawnByOwner events raised by the TaikoL1 contract. +type TaikoL1TokenWithdrawnByOwnerIterator struct { + Event *TaikoL1TokenWithdrawnByOwner // Event containing the contract specifics and raw log contract *bind.BoundContract // Generic contract to use for unpacking event data event string // Event name to use for unpacking event data @@ -2029,7 +3774,7 @@ type TaikoL1CrossChainSyncedIterator struct { // Next advances the iterator to the subsequent event, returning whether there // are any more events found. In case of a retrieval or parsing error, false is // returned and Error() can be queried for the exact failure. -func (it *TaikoL1CrossChainSyncedIterator) Next() bool { +func (it *TaikoL1TokenWithdrawnByOwnerIterator) Next() bool { // If the iterator failed, stop iterating if it.fail != nil { return false @@ -2038,7 +3783,7 @@ func (it *TaikoL1CrossChainSyncedIterator) Next() bool { if it.done { select { case log := <-it.logs: - it.Event = new(TaikoL1CrossChainSynced) + it.Event = new(TaikoL1TokenWithdrawnByOwner) if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { it.fail = err return false @@ -2053,7 +3798,7 @@ func (it *TaikoL1CrossChainSyncedIterator) Next() bool { // Iterator still in progress, wait for either a data or an error event select { case log := <-it.logs: - it.Event = new(TaikoL1CrossChainSynced) + it.Event = new(TaikoL1TokenWithdrawnByOwner) if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { it.fail = err return false @@ -2069,53 +3814,42 @@ func (it *TaikoL1CrossChainSyncedIterator) Next() bool { } // Error returns any retrieval or parsing error occurred during filtering. -func (it *TaikoL1CrossChainSyncedIterator) Error() error { +func (it *TaikoL1TokenWithdrawnByOwnerIterator) Error() error { return it.fail } // Close terminates the iteration process, releasing any pending underlying // resources. -func (it *TaikoL1CrossChainSyncedIterator) Close() error { +func (it *TaikoL1TokenWithdrawnByOwnerIterator) Close() error { it.sub.Unsubscribe() return nil } -// TaikoL1CrossChainSynced represents a CrossChainSynced event raised by the TaikoL1 contract. -type TaikoL1CrossChainSynced struct { - SrcHeight uint64 - BlockHash [32]byte - SignalRoot [32]byte - Raw types.Log // Blockchain specific contextual infos +// TaikoL1TokenWithdrawnByOwner represents a TokenWithdrawnByOwner event raised by the TaikoL1 contract. +type TaikoL1TokenWithdrawnByOwner struct { + To common.Address + Amount *big.Int + Raw types.Log // Blockchain specific contextual infos } -// FilterCrossChainSynced is a free log retrieval operation binding the contract event 0x004ce985b8852a486571d0545799251fd671adcf33b7854a5f0f6a6a2431a555. +// FilterTokenWithdrawnByOwner is a free log retrieval operation binding the contract event 0xc4f72d4b841abf7e4afe6a797fbc9d92a5186aa6332c2ff33c0e327f1c3e9a4c. // -// Solidity: event CrossChainSynced(uint64 indexed srcHeight, bytes32 blockHash, bytes32 signalRoot) -func (_TaikoL1 *TaikoL1Filterer) FilterCrossChainSynced(opts *bind.FilterOpts, srcHeight []uint64) (*TaikoL1CrossChainSyncedIterator, error) { - - var srcHeightRule []interface{} - for _, srcHeightItem := range srcHeight { - srcHeightRule = append(srcHeightRule, srcHeightItem) - } +// Solidity: event TokenWithdrawnByOwner(address to, uint256 amount) +func (_TaikoL1 *TaikoL1Filterer) FilterTokenWithdrawnByOwner(opts *bind.FilterOpts) (*TaikoL1TokenWithdrawnByOwnerIterator, error) { - logs, sub, err := _TaikoL1.contract.FilterLogs(opts, "CrossChainSynced", srcHeightRule) + logs, sub, err := _TaikoL1.contract.FilterLogs(opts, "TokenWithdrawnByOwner") if err != nil { return nil, err } - return &TaikoL1CrossChainSyncedIterator{contract: _TaikoL1.contract, event: "CrossChainSynced", logs: logs, sub: sub}, nil + return &TaikoL1TokenWithdrawnByOwnerIterator{contract: _TaikoL1.contract, event: "TokenWithdrawnByOwner", logs: logs, sub: sub}, nil } -// WatchCrossChainSynced is a free log subscription operation binding the contract event 0x004ce985b8852a486571d0545799251fd671adcf33b7854a5f0f6a6a2431a555. +// WatchTokenWithdrawnByOwner is a free log subscription operation binding the contract event 0xc4f72d4b841abf7e4afe6a797fbc9d92a5186aa6332c2ff33c0e327f1c3e9a4c. // -// Solidity: event CrossChainSynced(uint64 indexed srcHeight, bytes32 blockHash, bytes32 signalRoot) -func (_TaikoL1 *TaikoL1Filterer) WatchCrossChainSynced(opts *bind.WatchOpts, sink chan<- *TaikoL1CrossChainSynced, srcHeight []uint64) (event.Subscription, error) { +// Solidity: event TokenWithdrawnByOwner(address to, uint256 amount) +func (_TaikoL1 *TaikoL1Filterer) WatchTokenWithdrawnByOwner(opts *bind.WatchOpts, sink chan<- *TaikoL1TokenWithdrawnByOwner) (event.Subscription, error) { - var srcHeightRule []interface{} - for _, srcHeightItem := range srcHeight { - srcHeightRule = append(srcHeightRule, srcHeightItem) - } - - logs, sub, err := _TaikoL1.contract.WatchLogs(opts, "CrossChainSynced", srcHeightRule) + logs, sub, err := _TaikoL1.contract.WatchLogs(opts, "TokenWithdrawnByOwner") if err != nil { return nil, err } @@ -2125,8 +3859,8 @@ func (_TaikoL1 *TaikoL1Filterer) WatchCrossChainSynced(opts *bind.WatchOpts, sin select { case log := <-logs: // New log arrived, parse the event and forward to the user - event := new(TaikoL1CrossChainSynced) - if err := _TaikoL1.contract.UnpackLog(event, "CrossChainSynced", log); err != nil { + event := new(TaikoL1TokenWithdrawnByOwner) + if err := _TaikoL1.contract.UnpackLog(event, "TokenWithdrawnByOwner", log); err != nil { return err } event.Raw = log @@ -2147,21 +3881,21 @@ func (_TaikoL1 *TaikoL1Filterer) WatchCrossChainSynced(opts *bind.WatchOpts, sin }), nil } -// ParseCrossChainSynced is a log parse operation binding the contract event 0x004ce985b8852a486571d0545799251fd671adcf33b7854a5f0f6a6a2431a555. +// ParseTokenWithdrawnByOwner is a log parse operation binding the contract event 0xc4f72d4b841abf7e4afe6a797fbc9d92a5186aa6332c2ff33c0e327f1c3e9a4c. // -// Solidity: event CrossChainSynced(uint64 indexed srcHeight, bytes32 blockHash, bytes32 signalRoot) -func (_TaikoL1 *TaikoL1Filterer) ParseCrossChainSynced(log types.Log) (*TaikoL1CrossChainSynced, error) { - event := new(TaikoL1CrossChainSynced) - if err := _TaikoL1.contract.UnpackLog(event, "CrossChainSynced", log); err != nil { +// Solidity: event TokenWithdrawnByOwner(address to, uint256 amount) +func (_TaikoL1 *TaikoL1Filterer) ParseTokenWithdrawnByOwner(log types.Log) (*TaikoL1TokenWithdrawnByOwner, error) { + event := new(TaikoL1TokenWithdrawnByOwner) + if err := _TaikoL1.contract.UnpackLog(event, "TokenWithdrawnByOwner", log); err != nil { return nil, err } event.Raw = log return event, nil } -// TaikoL1CrossChainSynced0Iterator is returned from FilterCrossChainSynced0 and is used to iterate over the raw logs and unpacked data for CrossChainSynced0 events raised by the TaikoL1 contract. -type TaikoL1CrossChainSynced0Iterator struct { - Event *TaikoL1CrossChainSynced0 // Event containing the contract specifics and raw log +// TaikoL1TokenWithdrawnByOwner0Iterator is returned from FilterTokenWithdrawnByOwner0 and is used to iterate over the raw logs and unpacked data for TokenWithdrawnByOwner0 events raised by the TaikoL1 contract. +type TaikoL1TokenWithdrawnByOwner0Iterator struct { + Event *TaikoL1TokenWithdrawnByOwner0 // Event containing the contract specifics and raw log contract *bind.BoundContract // Generic contract to use for unpacking event data event string // Event name to use for unpacking event data @@ -2175,7 +3909,7 @@ type TaikoL1CrossChainSynced0Iterator struct { // Next advances the iterator to the subsequent event, returning whether there // are any more events found. In case of a retrieval or parsing error, false is // returned and Error() can be queried for the exact failure. -func (it *TaikoL1CrossChainSynced0Iterator) Next() bool { +func (it *TaikoL1TokenWithdrawnByOwner0Iterator) Next() bool { // If the iterator failed, stop iterating if it.fail != nil { return false @@ -2184,7 +3918,7 @@ func (it *TaikoL1CrossChainSynced0Iterator) Next() bool { if it.done { select { case log := <-it.logs: - it.Event = new(TaikoL1CrossChainSynced0) + it.Event = new(TaikoL1TokenWithdrawnByOwner0) if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { it.fail = err return false @@ -2199,7 +3933,7 @@ func (it *TaikoL1CrossChainSynced0Iterator) Next() bool { // Iterator still in progress, wait for either a data or an error event select { case log := <-it.logs: - it.Event = new(TaikoL1CrossChainSynced0) + it.Event = new(TaikoL1TokenWithdrawnByOwner0) if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { it.fail = err return false @@ -2215,53 +3949,42 @@ func (it *TaikoL1CrossChainSynced0Iterator) Next() bool { } // Error returns any retrieval or parsing error occurred during filtering. -func (it *TaikoL1CrossChainSynced0Iterator) Error() error { +func (it *TaikoL1TokenWithdrawnByOwner0Iterator) Error() error { return it.fail } // Close terminates the iteration process, releasing any pending underlying // resources. -func (it *TaikoL1CrossChainSynced0Iterator) Close() error { +func (it *TaikoL1TokenWithdrawnByOwner0Iterator) Close() error { it.sub.Unsubscribe() return nil } -// TaikoL1CrossChainSynced0 represents a CrossChainSynced0 event raised by the TaikoL1 contract. -type TaikoL1CrossChainSynced0 struct { - SrcHeight uint64 - BlockHash [32]byte - SignalRoot [32]byte - Raw types.Log // Blockchain specific contextual infos +// TaikoL1TokenWithdrawnByOwner0 represents a TokenWithdrawnByOwner0 event raised by the TaikoL1 contract. +type TaikoL1TokenWithdrawnByOwner0 struct { + To common.Address + Amount *big.Int + Raw types.Log // Blockchain specific contextual infos } -// FilterCrossChainSynced0 is a free log retrieval operation binding the contract event 0x004ce985b8852a486571d0545799251fd671adcf33b7854a5f0f6a6a2431a555. +// FilterTokenWithdrawnByOwner0 is a free log retrieval operation binding the contract event 0xc4f72d4b841abf7e4afe6a797fbc9d92a5186aa6332c2ff33c0e327f1c3e9a4c. // -// Solidity: event CrossChainSynced(uint64 indexed srcHeight, bytes32 blockHash, bytes32 signalRoot) -func (_TaikoL1 *TaikoL1Filterer) FilterCrossChainSynced0(opts *bind.FilterOpts, srcHeight []uint64) (*TaikoL1CrossChainSynced0Iterator, error) { - - var srcHeightRule []interface{} - for _, srcHeightItem := range srcHeight { - srcHeightRule = append(srcHeightRule, srcHeightItem) - } +// Solidity: event TokenWithdrawnByOwner(address to, uint256 amount) +func (_TaikoL1 *TaikoL1Filterer) FilterTokenWithdrawnByOwner0(opts *bind.FilterOpts) (*TaikoL1TokenWithdrawnByOwner0Iterator, error) { - logs, sub, err := _TaikoL1.contract.FilterLogs(opts, "CrossChainSynced0", srcHeightRule) + logs, sub, err := _TaikoL1.contract.FilterLogs(opts, "TokenWithdrawnByOwner0") if err != nil { return nil, err } - return &TaikoL1CrossChainSynced0Iterator{contract: _TaikoL1.contract, event: "CrossChainSynced0", logs: logs, sub: sub}, nil + return &TaikoL1TokenWithdrawnByOwner0Iterator{contract: _TaikoL1.contract, event: "TokenWithdrawnByOwner0", logs: logs, sub: sub}, nil } -// WatchCrossChainSynced0 is a free log subscription operation binding the contract event 0x004ce985b8852a486571d0545799251fd671adcf33b7854a5f0f6a6a2431a555. +// WatchTokenWithdrawnByOwner0 is a free log subscription operation binding the contract event 0xc4f72d4b841abf7e4afe6a797fbc9d92a5186aa6332c2ff33c0e327f1c3e9a4c. // -// Solidity: event CrossChainSynced(uint64 indexed srcHeight, bytes32 blockHash, bytes32 signalRoot) -func (_TaikoL1 *TaikoL1Filterer) WatchCrossChainSynced0(opts *bind.WatchOpts, sink chan<- *TaikoL1CrossChainSynced0, srcHeight []uint64) (event.Subscription, error) { +// Solidity: event TokenWithdrawnByOwner(address to, uint256 amount) +func (_TaikoL1 *TaikoL1Filterer) WatchTokenWithdrawnByOwner0(opts *bind.WatchOpts, sink chan<- *TaikoL1TokenWithdrawnByOwner0) (event.Subscription, error) { - var srcHeightRule []interface{} - for _, srcHeightItem := range srcHeight { - srcHeightRule = append(srcHeightRule, srcHeightItem) - } - - logs, sub, err := _TaikoL1.contract.WatchLogs(opts, "CrossChainSynced0", srcHeightRule) + logs, sub, err := _TaikoL1.contract.WatchLogs(opts, "TokenWithdrawnByOwner0") if err != nil { return nil, err } @@ -2271,8 +3994,8 @@ func (_TaikoL1 *TaikoL1Filterer) WatchCrossChainSynced0(opts *bind.WatchOpts, si select { case log := <-logs: // New log arrived, parse the event and forward to the user - event := new(TaikoL1CrossChainSynced0) - if err := _TaikoL1.contract.UnpackLog(event, "CrossChainSynced0", log); err != nil { + event := new(TaikoL1TokenWithdrawnByOwner0) + if err := _TaikoL1.contract.UnpackLog(event, "TokenWithdrawnByOwner0", log); err != nil { return err } event.Raw = log @@ -2293,21 +4016,21 @@ func (_TaikoL1 *TaikoL1Filterer) WatchCrossChainSynced0(opts *bind.WatchOpts, si }), nil } -// ParseCrossChainSynced0 is a log parse operation binding the contract event 0x004ce985b8852a486571d0545799251fd671adcf33b7854a5f0f6a6a2431a555. +// ParseTokenWithdrawnByOwner0 is a log parse operation binding the contract event 0xc4f72d4b841abf7e4afe6a797fbc9d92a5186aa6332c2ff33c0e327f1c3e9a4c. // -// Solidity: event CrossChainSynced(uint64 indexed srcHeight, bytes32 blockHash, bytes32 signalRoot) -func (_TaikoL1 *TaikoL1Filterer) ParseCrossChainSynced0(log types.Log) (*TaikoL1CrossChainSynced0, error) { - event := new(TaikoL1CrossChainSynced0) - if err := _TaikoL1.contract.UnpackLog(event, "CrossChainSynced0", log); err != nil { +// Solidity: event TokenWithdrawnByOwner(address to, uint256 amount) +func (_TaikoL1 *TaikoL1Filterer) ParseTokenWithdrawnByOwner0(log types.Log) (*TaikoL1TokenWithdrawnByOwner0, error) { + event := new(TaikoL1TokenWithdrawnByOwner0) + if err := _TaikoL1.contract.UnpackLog(event, "TokenWithdrawnByOwner0", log); err != nil { return nil, err } event.Raw = log return event, nil } -// TaikoL1EthDepositedIterator is returned from FilterEthDeposited and is used to iterate over the raw logs and unpacked data for EthDeposited events raised by the TaikoL1 contract. -type TaikoL1EthDepositedIterator struct { - Event *TaikoL1EthDeposited // Event containing the contract specifics and raw log +// TaikoL1TransitionContestedIterator is returned from FilterTransitionContested and is used to iterate over the raw logs and unpacked data for TransitionContested events raised by the TaikoL1 contract. +type TaikoL1TransitionContestedIterator struct { + Event *TaikoL1TransitionContested // Event containing the contract specifics and raw log contract *bind.BoundContract // Generic contract to use for unpacking event data event string // Event name to use for unpacking event data @@ -2321,7 +4044,7 @@ type TaikoL1EthDepositedIterator struct { // Next advances the iterator to the subsequent event, returning whether there // are any more events found. In case of a retrieval or parsing error, false is // returned and Error() can be queried for the exact failure. -func (it *TaikoL1EthDepositedIterator) Next() bool { +func (it *TaikoL1TransitionContestedIterator) Next() bool { // If the iterator failed, stop iterating if it.fail != nil { return false @@ -2330,7 +4053,7 @@ func (it *TaikoL1EthDepositedIterator) Next() bool { if it.done { select { case log := <-it.logs: - it.Event = new(TaikoL1EthDeposited) + it.Event = new(TaikoL1TransitionContested) if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { it.fail = err return false @@ -2345,7 +4068,7 @@ func (it *TaikoL1EthDepositedIterator) Next() bool { // Iterator still in progress, wait for either a data or an error event select { case log := <-it.logs: - it.Event = new(TaikoL1EthDeposited) + it.Event = new(TaikoL1TransitionContested) if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { it.fail = err return false @@ -2361,41 +4084,57 @@ func (it *TaikoL1EthDepositedIterator) Next() bool { } // Error returns any retrieval or parsing error occurred during filtering. -func (it *TaikoL1EthDepositedIterator) Error() error { +func (it *TaikoL1TransitionContestedIterator) Error() error { return it.fail } // Close terminates the iteration process, releasing any pending underlying // resources. -func (it *TaikoL1EthDepositedIterator) Close() error { +func (it *TaikoL1TransitionContestedIterator) Close() error { it.sub.Unsubscribe() return nil } -// TaikoL1EthDeposited represents a EthDeposited event raised by the TaikoL1 contract. -type TaikoL1EthDeposited struct { - Deposit TaikoDataEthDeposit - Raw types.Log // Blockchain specific contextual infos +// TaikoL1TransitionContested represents a TransitionContested event raised by the TaikoL1 contract. +type TaikoL1TransitionContested struct { + BlockId *big.Int + ParentHash [32]byte + BlockHash [32]byte + SignalRoot [32]byte + Contester common.Address + ContestBond *big.Int + Tier uint16 + Raw types.Log // Blockchain specific contextual infos } -// FilterEthDeposited is a free log retrieval operation binding the contract event 0x7120a3b075ad25974c5eed76dedb3a217c76c9c6d1f1e201caeba9b89de9a9d9. +// FilterTransitionContested is a free log retrieval operation binding the contract event 0x135961061f7c7cad9a389080483d14014ba6fe9ebcf6d3d826185c69dd71ce75. // -// Solidity: event EthDeposited((address,uint96,uint64) deposit) -func (_TaikoL1 *TaikoL1Filterer) FilterEthDeposited(opts *bind.FilterOpts) (*TaikoL1EthDepositedIterator, error) { +// Solidity: event TransitionContested(uint256 indexed blockId, bytes32 parentHash, bytes32 blockHash, bytes32 signalRoot, address contester, uint96 contestBond, uint16 tier) +func (_TaikoL1 *TaikoL1Filterer) FilterTransitionContested(opts *bind.FilterOpts, blockId []*big.Int) (*TaikoL1TransitionContestedIterator, error) { - logs, sub, err := _TaikoL1.contract.FilterLogs(opts, "EthDeposited") + var blockIdRule []interface{} + for _, blockIdItem := range blockId { + blockIdRule = append(blockIdRule, blockIdItem) + } + + logs, sub, err := _TaikoL1.contract.FilterLogs(opts, "TransitionContested", blockIdRule) if err != nil { return nil, err } - return &TaikoL1EthDepositedIterator{contract: _TaikoL1.contract, event: "EthDeposited", logs: logs, sub: sub}, nil + return &TaikoL1TransitionContestedIterator{contract: _TaikoL1.contract, event: "TransitionContested", logs: logs, sub: sub}, nil } -// WatchEthDeposited is a free log subscription operation binding the contract event 0x7120a3b075ad25974c5eed76dedb3a217c76c9c6d1f1e201caeba9b89de9a9d9. +// WatchTransitionContested is a free log subscription operation binding the contract event 0x135961061f7c7cad9a389080483d14014ba6fe9ebcf6d3d826185c69dd71ce75. // -// Solidity: event EthDeposited((address,uint96,uint64) deposit) -func (_TaikoL1 *TaikoL1Filterer) WatchEthDeposited(opts *bind.WatchOpts, sink chan<- *TaikoL1EthDeposited) (event.Subscription, error) { +// Solidity: event TransitionContested(uint256 indexed blockId, bytes32 parentHash, bytes32 blockHash, bytes32 signalRoot, address contester, uint96 contestBond, uint16 tier) +func (_TaikoL1 *TaikoL1Filterer) WatchTransitionContested(opts *bind.WatchOpts, sink chan<- *TaikoL1TransitionContested, blockId []*big.Int) (event.Subscription, error) { - logs, sub, err := _TaikoL1.contract.WatchLogs(opts, "EthDeposited") + var blockIdRule []interface{} + for _, blockIdItem := range blockId { + blockIdRule = append(blockIdRule, blockIdItem) + } + + logs, sub, err := _TaikoL1.contract.WatchLogs(opts, "TransitionContested", blockIdRule) if err != nil { return nil, err } @@ -2405,8 +4144,8 @@ func (_TaikoL1 *TaikoL1Filterer) WatchEthDeposited(opts *bind.WatchOpts, sink ch select { case log := <-logs: // New log arrived, parse the event and forward to the user - event := new(TaikoL1EthDeposited) - if err := _TaikoL1.contract.UnpackLog(event, "EthDeposited", log); err != nil { + event := new(TaikoL1TransitionContested) + if err := _TaikoL1.contract.UnpackLog(event, "TransitionContested", log); err != nil { return err } event.Raw = log @@ -2427,21 +4166,21 @@ func (_TaikoL1 *TaikoL1Filterer) WatchEthDeposited(opts *bind.WatchOpts, sink ch }), nil } -// ParseEthDeposited is a log parse operation binding the contract event 0x7120a3b075ad25974c5eed76dedb3a217c76c9c6d1f1e201caeba9b89de9a9d9. +// ParseTransitionContested is a log parse operation binding the contract event 0x135961061f7c7cad9a389080483d14014ba6fe9ebcf6d3d826185c69dd71ce75. // -// Solidity: event EthDeposited((address,uint96,uint64) deposit) -func (_TaikoL1 *TaikoL1Filterer) ParseEthDeposited(log types.Log) (*TaikoL1EthDeposited, error) { - event := new(TaikoL1EthDeposited) - if err := _TaikoL1.contract.UnpackLog(event, "EthDeposited", log); err != nil { +// Solidity: event TransitionContested(uint256 indexed blockId, bytes32 parentHash, bytes32 blockHash, bytes32 signalRoot, address contester, uint96 contestBond, uint16 tier) +func (_TaikoL1 *TaikoL1Filterer) ParseTransitionContested(log types.Log) (*TaikoL1TransitionContested, error) { + event := new(TaikoL1TransitionContested) + if err := _TaikoL1.contract.UnpackLog(event, "TransitionContested", log); err != nil { return nil, err } event.Raw = log return event, nil } -// TaikoL1EthDeposited0Iterator is returned from FilterEthDeposited0 and is used to iterate over the raw logs and unpacked data for EthDeposited0 events raised by the TaikoL1 contract. -type TaikoL1EthDeposited0Iterator struct { - Event *TaikoL1EthDeposited0 // Event containing the contract specifics and raw log +// TaikoL1TransitionContested0Iterator is returned from FilterTransitionContested0 and is used to iterate over the raw logs and unpacked data for TransitionContested0 events raised by the TaikoL1 contract. +type TaikoL1TransitionContested0Iterator struct { + Event *TaikoL1TransitionContested0 // Event containing the contract specifics and raw log contract *bind.BoundContract // Generic contract to use for unpacking event data event string // Event name to use for unpacking event data @@ -2455,7 +4194,7 @@ type TaikoL1EthDeposited0Iterator struct { // Next advances the iterator to the subsequent event, returning whether there // are any more events found. In case of a retrieval or parsing error, false is // returned and Error() can be queried for the exact failure. -func (it *TaikoL1EthDeposited0Iterator) Next() bool { +func (it *TaikoL1TransitionContested0Iterator) Next() bool { // If the iterator failed, stop iterating if it.fail != nil { return false @@ -2464,7 +4203,7 @@ func (it *TaikoL1EthDeposited0Iterator) Next() bool { if it.done { select { case log := <-it.logs: - it.Event = new(TaikoL1EthDeposited0) + it.Event = new(TaikoL1TransitionContested0) if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { it.fail = err return false @@ -2479,7 +4218,7 @@ func (it *TaikoL1EthDeposited0Iterator) Next() bool { // Iterator still in progress, wait for either a data or an error event select { case log := <-it.logs: - it.Event = new(TaikoL1EthDeposited0) + it.Event = new(TaikoL1TransitionContested0) if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { it.fail = err return false @@ -2495,41 +4234,57 @@ func (it *TaikoL1EthDeposited0Iterator) Next() bool { } // Error returns any retrieval or parsing error occurred during filtering. -func (it *TaikoL1EthDeposited0Iterator) Error() error { +func (it *TaikoL1TransitionContested0Iterator) Error() error { return it.fail } // Close terminates the iteration process, releasing any pending underlying // resources. -func (it *TaikoL1EthDeposited0Iterator) Close() error { +func (it *TaikoL1TransitionContested0Iterator) Close() error { it.sub.Unsubscribe() return nil } -// TaikoL1EthDeposited0 represents a EthDeposited0 event raised by the TaikoL1 contract. -type TaikoL1EthDeposited0 struct { - Deposit TaikoDataEthDeposit - Raw types.Log // Blockchain specific contextual infos +// TaikoL1TransitionContested0 represents a TransitionContested0 event raised by the TaikoL1 contract. +type TaikoL1TransitionContested0 struct { + BlockId *big.Int + ParentHash [32]byte + BlockHash [32]byte + SignalRoot [32]byte + Contester common.Address + ContestBond *big.Int + Tier uint16 + Raw types.Log // Blockchain specific contextual infos } -// FilterEthDeposited0 is a free log retrieval operation binding the contract event 0x7120a3b075ad25974c5eed76dedb3a217c76c9c6d1f1e201caeba9b89de9a9d9. +// FilterTransitionContested0 is a free log retrieval operation binding the contract event 0x135961061f7c7cad9a389080483d14014ba6fe9ebcf6d3d826185c69dd71ce75. // -// Solidity: event EthDeposited((address,uint96,uint64) deposit) -func (_TaikoL1 *TaikoL1Filterer) FilterEthDeposited0(opts *bind.FilterOpts) (*TaikoL1EthDeposited0Iterator, error) { +// Solidity: event TransitionContested(uint256 indexed blockId, bytes32 parentHash, bytes32 blockHash, bytes32 signalRoot, address contester, uint96 contestBond, uint16 tier) +func (_TaikoL1 *TaikoL1Filterer) FilterTransitionContested0(opts *bind.FilterOpts, blockId []*big.Int) (*TaikoL1TransitionContested0Iterator, error) { - logs, sub, err := _TaikoL1.contract.FilterLogs(opts, "EthDeposited0") + var blockIdRule []interface{} + for _, blockIdItem := range blockId { + blockIdRule = append(blockIdRule, blockIdItem) + } + + logs, sub, err := _TaikoL1.contract.FilterLogs(opts, "TransitionContested0", blockIdRule) if err != nil { return nil, err } - return &TaikoL1EthDeposited0Iterator{contract: _TaikoL1.contract, event: "EthDeposited0", logs: logs, sub: sub}, nil + return &TaikoL1TransitionContested0Iterator{contract: _TaikoL1.contract, event: "TransitionContested0", logs: logs, sub: sub}, nil } -// WatchEthDeposited0 is a free log subscription operation binding the contract event 0x7120a3b075ad25974c5eed76dedb3a217c76c9c6d1f1e201caeba9b89de9a9d9. +// WatchTransitionContested0 is a free log subscription operation binding the contract event 0x135961061f7c7cad9a389080483d14014ba6fe9ebcf6d3d826185c69dd71ce75. // -// Solidity: event EthDeposited((address,uint96,uint64) deposit) -func (_TaikoL1 *TaikoL1Filterer) WatchEthDeposited0(opts *bind.WatchOpts, sink chan<- *TaikoL1EthDeposited0) (event.Subscription, error) { +// Solidity: event TransitionContested(uint256 indexed blockId, bytes32 parentHash, bytes32 blockHash, bytes32 signalRoot, address contester, uint96 contestBond, uint16 tier) +func (_TaikoL1 *TaikoL1Filterer) WatchTransitionContested0(opts *bind.WatchOpts, sink chan<- *TaikoL1TransitionContested0, blockId []*big.Int) (event.Subscription, error) { - logs, sub, err := _TaikoL1.contract.WatchLogs(opts, "EthDeposited0") + var blockIdRule []interface{} + for _, blockIdItem := range blockId { + blockIdRule = append(blockIdRule, blockIdItem) + } + + logs, sub, err := _TaikoL1.contract.WatchLogs(opts, "TransitionContested0", blockIdRule) if err != nil { return nil, err } @@ -2539,8 +4294,8 @@ func (_TaikoL1 *TaikoL1Filterer) WatchEthDeposited0(opts *bind.WatchOpts, sink c select { case log := <-logs: // New log arrived, parse the event and forward to the user - event := new(TaikoL1EthDeposited0) - if err := _TaikoL1.contract.UnpackLog(event, "EthDeposited0", log); err != nil { + event := new(TaikoL1TransitionContested0) + if err := _TaikoL1.contract.UnpackLog(event, "TransitionContested0", log); err != nil { return err } event.Raw = log @@ -2561,21 +4316,21 @@ func (_TaikoL1 *TaikoL1Filterer) WatchEthDeposited0(opts *bind.WatchOpts, sink c }), nil } -// ParseEthDeposited0 is a log parse operation binding the contract event 0x7120a3b075ad25974c5eed76dedb3a217c76c9c6d1f1e201caeba9b89de9a9d9. +// ParseTransitionContested0 is a log parse operation binding the contract event 0x135961061f7c7cad9a389080483d14014ba6fe9ebcf6d3d826185c69dd71ce75. // -// Solidity: event EthDeposited((address,uint96,uint64) deposit) -func (_TaikoL1 *TaikoL1Filterer) ParseEthDeposited0(log types.Log) (*TaikoL1EthDeposited0, error) { - event := new(TaikoL1EthDeposited0) - if err := _TaikoL1.contract.UnpackLog(event, "EthDeposited0", log); err != nil { +// Solidity: event TransitionContested(uint256 indexed blockId, bytes32 parentHash, bytes32 blockHash, bytes32 signalRoot, address contester, uint96 contestBond, uint16 tier) +func (_TaikoL1 *TaikoL1Filterer) ParseTransitionContested0(log types.Log) (*TaikoL1TransitionContested0, error) { + event := new(TaikoL1TransitionContested0) + if err := _TaikoL1.contract.UnpackLog(event, "TransitionContested0", log); err != nil { return nil, err } event.Raw = log return event, nil } -// TaikoL1InitializedIterator is returned from FilterInitialized and is used to iterate over the raw logs and unpacked data for Initialized events raised by the TaikoL1 contract. -type TaikoL1InitializedIterator struct { - Event *TaikoL1Initialized // Event containing the contract specifics and raw log +// TaikoL1TransitionProvedIterator is returned from FilterTransitionProved and is used to iterate over the raw logs and unpacked data for TransitionProved events raised by the TaikoL1 contract. +type TaikoL1TransitionProvedIterator struct { + Event *TaikoL1TransitionProved // Event containing the contract specifics and raw log contract *bind.BoundContract // Generic contract to use for unpacking event data event string // Event name to use for unpacking event data @@ -2589,7 +4344,7 @@ type TaikoL1InitializedIterator struct { // Next advances the iterator to the subsequent event, returning whether there // are any more events found. In case of a retrieval or parsing error, false is // returned and Error() can be queried for the exact failure. -func (it *TaikoL1InitializedIterator) Next() bool { +func (it *TaikoL1TransitionProvedIterator) Next() bool { // If the iterator failed, stop iterating if it.fail != nil { return false @@ -2598,7 +4353,7 @@ func (it *TaikoL1InitializedIterator) Next() bool { if it.done { select { case log := <-it.logs: - it.Event = new(TaikoL1Initialized) + it.Event = new(TaikoL1TransitionProved) if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { it.fail = err return false @@ -2613,7 +4368,7 @@ func (it *TaikoL1InitializedIterator) Next() bool { // Iterator still in progress, wait for either a data or an error event select { case log := <-it.logs: - it.Event = new(TaikoL1Initialized) + it.Event = new(TaikoL1TransitionProved) if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { it.fail = err return false @@ -2629,41 +4384,57 @@ func (it *TaikoL1InitializedIterator) Next() bool { } // Error returns any retrieval or parsing error occurred during filtering. -func (it *TaikoL1InitializedIterator) Error() error { +func (it *TaikoL1TransitionProvedIterator) Error() error { return it.fail } // Close terminates the iteration process, releasing any pending underlying // resources. -func (it *TaikoL1InitializedIterator) Close() error { +func (it *TaikoL1TransitionProvedIterator) Close() error { it.sub.Unsubscribe() return nil } -// TaikoL1Initialized represents a Initialized event raised by the TaikoL1 contract. -type TaikoL1Initialized struct { - Version uint8 - Raw types.Log // Blockchain specific contextual infos +// TaikoL1TransitionProved represents a TransitionProved event raised by the TaikoL1 contract. +type TaikoL1TransitionProved struct { + BlockId *big.Int + ParentHash [32]byte + BlockHash [32]byte + SignalRoot [32]byte + Prover common.Address + ValidityBond *big.Int + Tier uint16 + Raw types.Log // Blockchain specific contextual infos } -// FilterInitialized is a free log retrieval operation binding the contract event 0x7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb3847402498. +// FilterTransitionProved is a free log retrieval operation binding the contract event 0x9eaac66787b7d7e72981c31449ddd9bde78ffdb8cb3e6543ba2b9a4bb653b5e3. // -// Solidity: event Initialized(uint8 version) -func (_TaikoL1 *TaikoL1Filterer) FilterInitialized(opts *bind.FilterOpts) (*TaikoL1InitializedIterator, error) { +// Solidity: event TransitionProved(uint256 indexed blockId, bytes32 parentHash, bytes32 blockHash, bytes32 signalRoot, address prover, uint96 validityBond, uint16 tier) +func (_TaikoL1 *TaikoL1Filterer) FilterTransitionProved(opts *bind.FilterOpts, blockId []*big.Int) (*TaikoL1TransitionProvedIterator, error) { - logs, sub, err := _TaikoL1.contract.FilterLogs(opts, "Initialized") + var blockIdRule []interface{} + for _, blockIdItem := range blockId { + blockIdRule = append(blockIdRule, blockIdItem) + } + + logs, sub, err := _TaikoL1.contract.FilterLogs(opts, "TransitionProved", blockIdRule) if err != nil { return nil, err } - return &TaikoL1InitializedIterator{contract: _TaikoL1.contract, event: "Initialized", logs: logs, sub: sub}, nil + return &TaikoL1TransitionProvedIterator{contract: _TaikoL1.contract, event: "TransitionProved", logs: logs, sub: sub}, nil } -// WatchInitialized is a free log subscription operation binding the contract event 0x7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb3847402498. +// WatchTransitionProved is a free log subscription operation binding the contract event 0x9eaac66787b7d7e72981c31449ddd9bde78ffdb8cb3e6543ba2b9a4bb653b5e3. // -// Solidity: event Initialized(uint8 version) -func (_TaikoL1 *TaikoL1Filterer) WatchInitialized(opts *bind.WatchOpts, sink chan<- *TaikoL1Initialized) (event.Subscription, error) { +// Solidity: event TransitionProved(uint256 indexed blockId, bytes32 parentHash, bytes32 blockHash, bytes32 signalRoot, address prover, uint96 validityBond, uint16 tier) +func (_TaikoL1 *TaikoL1Filterer) WatchTransitionProved(opts *bind.WatchOpts, sink chan<- *TaikoL1TransitionProved, blockId []*big.Int) (event.Subscription, error) { - logs, sub, err := _TaikoL1.contract.WatchLogs(opts, "Initialized") + var blockIdRule []interface{} + for _, blockIdItem := range blockId { + blockIdRule = append(blockIdRule, blockIdItem) + } + + logs, sub, err := _TaikoL1.contract.WatchLogs(opts, "TransitionProved", blockIdRule) if err != nil { return nil, err } @@ -2673,8 +4444,8 @@ func (_TaikoL1 *TaikoL1Filterer) WatchInitialized(opts *bind.WatchOpts, sink cha select { case log := <-logs: // New log arrived, parse the event and forward to the user - event := new(TaikoL1Initialized) - if err := _TaikoL1.contract.UnpackLog(event, "Initialized", log); err != nil { + event := new(TaikoL1TransitionProved) + if err := _TaikoL1.contract.UnpackLog(event, "TransitionProved", log); err != nil { return err } event.Raw = log @@ -2695,21 +4466,21 @@ func (_TaikoL1 *TaikoL1Filterer) WatchInitialized(opts *bind.WatchOpts, sink cha }), nil } -// ParseInitialized is a log parse operation binding the contract event 0x7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb3847402498. +// ParseTransitionProved is a log parse operation binding the contract event 0x9eaac66787b7d7e72981c31449ddd9bde78ffdb8cb3e6543ba2b9a4bb653b5e3. // -// Solidity: event Initialized(uint8 version) -func (_TaikoL1 *TaikoL1Filterer) ParseInitialized(log types.Log) (*TaikoL1Initialized, error) { - event := new(TaikoL1Initialized) - if err := _TaikoL1.contract.UnpackLog(event, "Initialized", log); err != nil { +// Solidity: event TransitionProved(uint256 indexed blockId, bytes32 parentHash, bytes32 blockHash, bytes32 signalRoot, address prover, uint96 validityBond, uint16 tier) +func (_TaikoL1 *TaikoL1Filterer) ParseTransitionProved(log types.Log) (*TaikoL1TransitionProved, error) { + event := new(TaikoL1TransitionProved) + if err := _TaikoL1.contract.UnpackLog(event, "TransitionProved", log); err != nil { return nil, err } event.Raw = log return event, nil } -// TaikoL1OwnershipTransferredIterator is returned from FilterOwnershipTransferred and is used to iterate over the raw logs and unpacked data for OwnershipTransferred events raised by the TaikoL1 contract. -type TaikoL1OwnershipTransferredIterator struct { - Event *TaikoL1OwnershipTransferred // Event containing the contract specifics and raw log +// TaikoL1TransitionProved0Iterator is returned from FilterTransitionProved0 and is used to iterate over the raw logs and unpacked data for TransitionProved0 events raised by the TaikoL1 contract. +type TaikoL1TransitionProved0Iterator struct { + Event *TaikoL1TransitionProved0 // Event containing the contract specifics and raw log contract *bind.BoundContract // Generic contract to use for unpacking event data event string // Event name to use for unpacking event data @@ -2723,7 +4494,7 @@ type TaikoL1OwnershipTransferredIterator struct { // Next advances the iterator to the subsequent event, returning whether there // are any more events found. In case of a retrieval or parsing error, false is // returned and Error() can be queried for the exact failure. -func (it *TaikoL1OwnershipTransferredIterator) Next() bool { +func (it *TaikoL1TransitionProved0Iterator) Next() bool { // If the iterator failed, stop iterating if it.fail != nil { return false @@ -2732,7 +4503,7 @@ func (it *TaikoL1OwnershipTransferredIterator) Next() bool { if it.done { select { case log := <-it.logs: - it.Event = new(TaikoL1OwnershipTransferred) + it.Event = new(TaikoL1TransitionProved0) if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { it.fail = err return false @@ -2747,7 +4518,7 @@ func (it *TaikoL1OwnershipTransferredIterator) Next() bool { // Iterator still in progress, wait for either a data or an error event select { case log := <-it.logs: - it.Event = new(TaikoL1OwnershipTransferred) + it.Event = new(TaikoL1TransitionProved0) if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { it.fail = err return false @@ -2763,60 +4534,57 @@ func (it *TaikoL1OwnershipTransferredIterator) Next() bool { } // Error returns any retrieval or parsing error occurred during filtering. -func (it *TaikoL1OwnershipTransferredIterator) Error() error { +func (it *TaikoL1TransitionProved0Iterator) Error() error { return it.fail } // Close terminates the iteration process, releasing any pending underlying // resources. -func (it *TaikoL1OwnershipTransferredIterator) Close() error { +func (it *TaikoL1TransitionProved0Iterator) Close() error { it.sub.Unsubscribe() return nil } -// TaikoL1OwnershipTransferred represents a OwnershipTransferred event raised by the TaikoL1 contract. -type TaikoL1OwnershipTransferred struct { - PreviousOwner common.Address - NewOwner common.Address - Raw types.Log // Blockchain specific contextual infos +// TaikoL1TransitionProved0 represents a TransitionProved0 event raised by the TaikoL1 contract. +type TaikoL1TransitionProved0 struct { + BlockId *big.Int + ParentHash [32]byte + BlockHash [32]byte + SignalRoot [32]byte + Prover common.Address + ValidityBond *big.Int + Tier uint16 + Raw types.Log // Blockchain specific contextual infos } -// FilterOwnershipTransferred is a free log retrieval operation binding the contract event 0x8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0. +// FilterTransitionProved0 is a free log retrieval operation binding the contract event 0x9eaac66787b7d7e72981c31449ddd9bde78ffdb8cb3e6543ba2b9a4bb653b5e3. // -// Solidity: event OwnershipTransferred(address indexed previousOwner, address indexed newOwner) -func (_TaikoL1 *TaikoL1Filterer) FilterOwnershipTransferred(opts *bind.FilterOpts, previousOwner []common.Address, newOwner []common.Address) (*TaikoL1OwnershipTransferredIterator, error) { +// Solidity: event TransitionProved(uint256 indexed blockId, bytes32 parentHash, bytes32 blockHash, bytes32 signalRoot, address prover, uint96 validityBond, uint16 tier) +func (_TaikoL1 *TaikoL1Filterer) FilterTransitionProved0(opts *bind.FilterOpts, blockId []*big.Int) (*TaikoL1TransitionProved0Iterator, error) { - var previousOwnerRule []interface{} - for _, previousOwnerItem := range previousOwner { - previousOwnerRule = append(previousOwnerRule, previousOwnerItem) - } - var newOwnerRule []interface{} - for _, newOwnerItem := range newOwner { - newOwnerRule = append(newOwnerRule, newOwnerItem) + var blockIdRule []interface{} + for _, blockIdItem := range blockId { + blockIdRule = append(blockIdRule, blockIdItem) } - logs, sub, err := _TaikoL1.contract.FilterLogs(opts, "OwnershipTransferred", previousOwnerRule, newOwnerRule) + logs, sub, err := _TaikoL1.contract.FilterLogs(opts, "TransitionProved0", blockIdRule) if err != nil { return nil, err } - return &TaikoL1OwnershipTransferredIterator{contract: _TaikoL1.contract, event: "OwnershipTransferred", logs: logs, sub: sub}, nil + return &TaikoL1TransitionProved0Iterator{contract: _TaikoL1.contract, event: "TransitionProved0", logs: logs, sub: sub}, nil } -// WatchOwnershipTransferred is a free log subscription operation binding the contract event 0x8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0. +// WatchTransitionProved0 is a free log subscription operation binding the contract event 0x9eaac66787b7d7e72981c31449ddd9bde78ffdb8cb3e6543ba2b9a4bb653b5e3. // -// Solidity: event OwnershipTransferred(address indexed previousOwner, address indexed newOwner) -func (_TaikoL1 *TaikoL1Filterer) WatchOwnershipTransferred(opts *bind.WatchOpts, sink chan<- *TaikoL1OwnershipTransferred, previousOwner []common.Address, newOwner []common.Address) (event.Subscription, error) { +// Solidity: event TransitionProved(uint256 indexed blockId, bytes32 parentHash, bytes32 blockHash, bytes32 signalRoot, address prover, uint96 validityBond, uint16 tier) +func (_TaikoL1 *TaikoL1Filterer) WatchTransitionProved0(opts *bind.WatchOpts, sink chan<- *TaikoL1TransitionProved0, blockId []*big.Int) (event.Subscription, error) { - var previousOwnerRule []interface{} - for _, previousOwnerItem := range previousOwner { - previousOwnerRule = append(previousOwnerRule, previousOwnerItem) - } - var newOwnerRule []interface{} - for _, newOwnerItem := range newOwner { - newOwnerRule = append(newOwnerRule, newOwnerItem) + var blockIdRule []interface{} + for _, blockIdItem := range blockId { + blockIdRule = append(blockIdRule, blockIdItem) } - logs, sub, err := _TaikoL1.contract.WatchLogs(opts, "OwnershipTransferred", previousOwnerRule, newOwnerRule) + logs, sub, err := _TaikoL1.contract.WatchLogs(opts, "TransitionProved0", blockIdRule) if err != nil { return nil, err } @@ -2826,8 +4594,8 @@ func (_TaikoL1 *TaikoL1Filterer) WatchOwnershipTransferred(opts *bind.WatchOpts, select { case log := <-logs: // New log arrived, parse the event and forward to the user - event := new(TaikoL1OwnershipTransferred) - if err := _TaikoL1.contract.UnpackLog(event, "OwnershipTransferred", log); err != nil { + event := new(TaikoL1TransitionProved0) + if err := _TaikoL1.contract.UnpackLog(event, "TransitionProved0", log); err != nil { return err } event.Raw = log @@ -2848,12 +4616,12 @@ func (_TaikoL1 *TaikoL1Filterer) WatchOwnershipTransferred(opts *bind.WatchOpts, }), nil } -// ParseOwnershipTransferred is a log parse operation binding the contract event 0x8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0. +// ParseTransitionProved0 is a log parse operation binding the contract event 0x9eaac66787b7d7e72981c31449ddd9bde78ffdb8cb3e6543ba2b9a4bb653b5e3. // -// Solidity: event OwnershipTransferred(address indexed previousOwner, address indexed newOwner) -func (_TaikoL1 *TaikoL1Filterer) ParseOwnershipTransferred(log types.Log) (*TaikoL1OwnershipTransferred, error) { - event := new(TaikoL1OwnershipTransferred) - if err := _TaikoL1.contract.UnpackLog(event, "OwnershipTransferred", log); err != nil { +// Solidity: event TransitionProved(uint256 indexed blockId, bytes32 parentHash, bytes32 blockHash, bytes32 signalRoot, address prover, uint96 validityBond, uint16 tier) +func (_TaikoL1 *TaikoL1Filterer) ParseTransitionProved0(log types.Log) (*TaikoL1TransitionProved0, error) { + event := new(TaikoL1TransitionProved0) + if err := _TaikoL1.contract.UnpackLog(event, "TransitionProved0", log); err != nil { return nil, err } event.Raw = log diff --git a/packages/relayer/bindings/taikol2/TaikoL2.go b/packages/relayer/bindings/taikol2/TaikoL2.go index 9c95149a3e..8d8097c599 100644 --- a/packages/relayer/bindings/taikol2/TaikoL2.go +++ b/packages/relayer/bindings/taikol2/TaikoL2.go @@ -31,23 +31,15 @@ var ( // TaikoL2EIP1559Config is an auto generated low-level Go binding around an user-defined struct. type TaikoL2EIP1559Config struct { + Xscale *big.Int Yscale *big.Int - Xscale uint64 - GasIssuedPerSecond uint32 -} - -// TaikoL2EIP1559Params is an auto generated low-level Go binding around an user-defined struct. -type TaikoL2EIP1559Params struct { - Basefee uint64 GasIssuedPerSecond uint32 GasExcessMax uint64 - GasTarget uint64 - Ratio2x1x uint64 } // TaikoL2MetaData contains all meta data concerning the TaikoL2 contract. var TaikoL2MetaData = &bind.MetaData{ - ABI: "[{\"inputs\":[],\"name\":\"L2_1559_OUT_OF_STOCK\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"L2_1559_OUT_OF_STOCK\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"expected\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"actual\",\"type\":\"uint64\"}],\"name\":\"L2_1559_UNEXPECTED_CHANGE\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"expected\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"actual\",\"type\":\"uint64\"}],\"name\":\"L2_1559_UNEXPECTED_CHANGE\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"expected\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"actual\",\"type\":\"uint64\"}],\"name\":\"L2_BASEFEE_MISMATCH\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"L2_INVALID_1559_PARAMS\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"L2_INVALID_CHAIN_ID\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"L2_INVALID_GOLDEN_TOUCH_K\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"L2_INVALID_SENDER\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"expected\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"actual\",\"type\":\"bytes32\"}],\"name\":\"L2_PUBLIC_INPUT_HASH_MISMATCH\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"L2_TOO_LATE\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"Overflow\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"RESOLVER_DENIED\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"RESOLVER_INVALID_ADDR\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"chainId\",\"type\":\"uint256\"},{\"internalType\":\"bytes32\",\"name\":\"name\",\"type\":\"bytes32\"}],\"name\":\"RESOLVER_ZERO_ADDR\",\"type\":\"error\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"addressManager\",\"type\":\"address\"}],\"name\":\"AddressManagerChanged\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint64\",\"name\":\"number\",\"type\":\"uint64\"},{\"indexed\":false,\"internalType\":\"uint64\",\"name\":\"basefee\",\"type\":\"uint64\"},{\"indexed\":false,\"internalType\":\"uint32\",\"name\":\"gaslimit\",\"type\":\"uint32\"},{\"indexed\":false,\"internalType\":\"uint64\",\"name\":\"timestamp\",\"type\":\"uint64\"},{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"parentHash\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"prevrandao\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"coinbase\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint32\",\"name\":\"chainid\",\"type\":\"uint32\"}],\"name\":\"Anchored\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint64\",\"name\":\"srcHeight\",\"type\":\"uint64\"},{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"blockHash\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"signalRoot\",\"type\":\"bytes32\"}],\"name\":\"CrossChainSynced\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint8\",\"name\":\"version\",\"type\":\"uint8\"}],\"name\":\"Initialized\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"previousOwner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"newOwner\",\"type\":\"address\"}],\"name\":\"OwnershipTransferred\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"GOLDEN_TOUCH_ADDRESS\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"GOLDEN_TOUCH_PRIVATEKEY\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"addressManager\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"l1Hash\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"l1SignalRoot\",\"type\":\"bytes32\"},{\"internalType\":\"uint64\",\"name\":\"l1Height\",\"type\":\"uint64\"},{\"internalType\":\"uint32\",\"name\":\"parentGasUsed\",\"type\":\"uint32\"}],\"name\":\"anchor\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"gasExcess\",\"outputs\":[{\"internalType\":\"uint64\",\"name\":\"\",\"type\":\"uint64\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"timeSinceParent\",\"type\":\"uint64\"},{\"internalType\":\"uint32\",\"name\":\"parentGasUsed\",\"type\":\"uint32\"}],\"name\":\"getBasefee\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"_basefee\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"blockId\",\"type\":\"uint64\"}],\"name\":\"getBlockHash\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"blockId\",\"type\":\"uint64\"}],\"name\":\"getCrossChainBlockHash\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"blockId\",\"type\":\"uint64\"}],\"name\":\"getCrossChainSignalRoot\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getEIP1559Config\",\"outputs\":[{\"components\":[{\"internalType\":\"uint128\",\"name\":\"yscale\",\"type\":\"uint128\"},{\"internalType\":\"uint64\",\"name\":\"xscale\",\"type\":\"uint64\"},{\"internalType\":\"uint32\",\"name\":\"gasIssuedPerSecond\",\"type\":\"uint32\"}],\"internalType\":\"structTaikoL2.EIP1559Config\",\"name\":\"\",\"type\":\"tuple\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_addressManager\",\"type\":\"address\"},{\"components\":[{\"internalType\":\"uint64\",\"name\":\"basefee\",\"type\":\"uint64\"},{\"internalType\":\"uint32\",\"name\":\"gasIssuedPerSecond\",\"type\":\"uint32\"},{\"internalType\":\"uint64\",\"name\":\"gasExcessMax\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"gasTarget\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"ratio2x1x\",\"type\":\"uint64\"}],\"internalType\":\"structTaikoL2.EIP1559Params\",\"name\":\"_param1559\",\"type\":\"tuple\"}],\"name\":\"init\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"latestSyncedL1Height\",\"outputs\":[{\"internalType\":\"uint64\",\"name\":\"\",\"type\":\"uint64\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"owner\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"parentTimestamp\",\"outputs\":[{\"internalType\":\"uint64\",\"name\":\"\",\"type\":\"uint64\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"publicInputHash\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"renounceOwnership\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"chainId\",\"type\":\"uint256\"},{\"internalType\":\"bytes32\",\"name\":\"name\",\"type\":\"bytes32\"},{\"internalType\":\"bool\",\"name\":\"allowZeroAddress\",\"type\":\"bool\"}],\"name\":\"resolve\",\"outputs\":[{\"internalType\":\"addresspayable\",\"name\":\"addr\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"name\",\"type\":\"bytes32\"},{\"internalType\":\"bool\",\"name\":\"allowZeroAddress\",\"type\":\"bool\"}],\"name\":\"resolve\",\"outputs\":[{\"internalType\":\"addresspayable\",\"name\":\"addr\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"newAddressManager\",\"type\":\"address\"}],\"name\":\"setAddressManager\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"digest\",\"type\":\"bytes32\"},{\"internalType\":\"uint8\",\"name\":\"k\",\"type\":\"uint8\"}],\"name\":\"signAnchor\",\"outputs\":[{\"internalType\":\"uint8\",\"name\":\"v\",\"type\":\"uint8\"},{\"internalType\":\"uint256\",\"name\":\"r\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"s\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"newOwner\",\"type\":\"address\"}],\"name\":\"transferOwnership\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}]", + ABI: "[{\"inputs\":[],\"name\":\"L2_1559_OUT_OF_STOCK\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"expected\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"actual\",\"type\":\"uint64\"}],\"name\":\"L2_1559_UNEXPECTED_CHANGE\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"L2_BASEFEE_MISMATCH\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"L2_INVALID_1559_PARAMS\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"L2_INVALID_CHAIN_ID\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"L2_INVALID_GOLDEN_TOUCH_K\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"L2_INVALID_SENDER\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"L2_PUBLIC_INPUT_HASH_MISMATCH\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"L2_TOO_LATE\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"Overflow\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"RESOLVER_DENIED\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"RESOLVER_INVALID_ADDR\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"chainId\",\"type\":\"uint256\"},{\"internalType\":\"bytes32\",\"name\":\"name\",\"type\":\"bytes32\"}],\"name\":\"RESOLVER_ZERO_ADDR\",\"type\":\"error\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"addressManager\",\"type\":\"address\"}],\"name\":\"AddressManagerChanged\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint64\",\"name\":\"number\",\"type\":\"uint64\"},{\"indexed\":false,\"internalType\":\"uint64\",\"name\":\"basefee\",\"type\":\"uint64\"},{\"indexed\":false,\"internalType\":\"uint32\",\"name\":\"gaslimit\",\"type\":\"uint32\"},{\"indexed\":false,\"internalType\":\"uint64\",\"name\":\"timestamp\",\"type\":\"uint64\"},{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"parentHash\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"prevrandao\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"coinbase\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint64\",\"name\":\"chainid\",\"type\":\"uint64\"}],\"name\":\"Anchored\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint64\",\"name\":\"srcHeight\",\"type\":\"uint64\"},{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"blockHash\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"signalRoot\",\"type\":\"bytes32\"}],\"name\":\"CrossChainSynced\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint8\",\"name\":\"version\",\"type\":\"uint8\"}],\"name\":\"Initialized\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"previousOwner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"newOwner\",\"type\":\"address\"}],\"name\":\"OwnershipTransferred\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"GOLDEN_TOUCH_ADDRESS\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"GOLDEN_TOUCH_PRIVATEKEY\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"addressManager\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"l1Hash\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"l1SignalRoot\",\"type\":\"bytes32\"},{\"internalType\":\"uint64\",\"name\":\"l1Height\",\"type\":\"uint64\"},{\"internalType\":\"uint32\",\"name\":\"parentGasUsed\",\"type\":\"uint32\"}],\"name\":\"anchor\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"basefee\",\"type\":\"uint64\"},{\"internalType\":\"uint32\",\"name\":\"gasIssuedPerSecond\",\"type\":\"uint32\"},{\"internalType\":\"uint64\",\"name\":\"gasExcessMax\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"gasTarget\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"ratio2x1x\",\"type\":\"uint64\"}],\"name\":\"calcEIP1559Config\",\"outputs\":[{\"components\":[{\"internalType\":\"uint128\",\"name\":\"xscale\",\"type\":\"uint128\"},{\"internalType\":\"uint128\",\"name\":\"yscale\",\"type\":\"uint128\"},{\"internalType\":\"uint32\",\"name\":\"gasIssuedPerSecond\",\"type\":\"uint32\"},{\"internalType\":\"uint64\",\"name\":\"gasExcessMax\",\"type\":\"uint64\"}],\"internalType\":\"structTaikoL2.EIP1559Config\",\"name\":\"config\",\"type\":\"tuple\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"gasExcess\",\"outputs\":[{\"internalType\":\"uint64\",\"name\":\"\",\"type\":\"uint64\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"timeSinceParent\",\"type\":\"uint64\"},{\"internalType\":\"uint32\",\"name\":\"parentGasUsed\",\"type\":\"uint32\"}],\"name\":\"getBasefee\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"_basefee\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"blockId\",\"type\":\"uint64\"}],\"name\":\"getBlockHash\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"blockId\",\"type\":\"uint64\"}],\"name\":\"getCrossChainBlockHash\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"blockId\",\"type\":\"uint64\"}],\"name\":\"getCrossChainSignalRoot\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getEIP1559Config\",\"outputs\":[{\"components\":[{\"internalType\":\"uint128\",\"name\":\"xscale\",\"type\":\"uint128\"},{\"internalType\":\"uint128\",\"name\":\"yscale\",\"type\":\"uint128\"},{\"internalType\":\"uint32\",\"name\":\"gasIssuedPerSecond\",\"type\":\"uint32\"},{\"internalType\":\"uint64\",\"name\":\"gasExcessMax\",\"type\":\"uint64\"}],\"internalType\":\"structTaikoL2.EIP1559Config\",\"name\":\"config\",\"type\":\"tuple\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_addressManager\",\"type\":\"address\"}],\"name\":\"init\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"latestSyncedL1Height\",\"outputs\":[{\"internalType\":\"uint64\",\"name\":\"\",\"type\":\"uint64\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"owner\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"parentTimestamp\",\"outputs\":[{\"internalType\":\"uint64\",\"name\":\"\",\"type\":\"uint64\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"publicInputHash\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"renounceOwnership\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"chainId\",\"type\":\"uint256\"},{\"internalType\":\"bytes32\",\"name\":\"name\",\"type\":\"bytes32\"},{\"internalType\":\"bool\",\"name\":\"allowZeroAddress\",\"type\":\"bool\"}],\"name\":\"resolve\",\"outputs\":[{\"internalType\":\"addresspayable\",\"name\":\"addr\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"name\",\"type\":\"bytes32\"},{\"internalType\":\"bool\",\"name\":\"allowZeroAddress\",\"type\":\"bool\"}],\"name\":\"resolve\",\"outputs\":[{\"internalType\":\"addresspayable\",\"name\":\"addr\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"newAddressManager\",\"type\":\"address\"}],\"name\":\"setAddressManager\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"digest\",\"type\":\"bytes32\"},{\"internalType\":\"uint8\",\"name\":\"k\",\"type\":\"uint8\"}],\"name\":\"signAnchor\",\"outputs\":[{\"internalType\":\"uint8\",\"name\":\"v\",\"type\":\"uint8\"},{\"internalType\":\"uint256\",\"name\":\"r\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"s\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"newOwner\",\"type\":\"address\"}],\"name\":\"transferOwnership\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}]", } // TaikoL2ABI is the input ABI used to generate the binding from. @@ -289,6 +281,37 @@ func (_TaikoL2 *TaikoL2CallerSession) AddressManager() (common.Address, error) { return _TaikoL2.Contract.AddressManager(&_TaikoL2.CallOpts) } +// CalcEIP1559Config is a free data retrieval call binding the contract method 0x06becb55. +// +// Solidity: function calcEIP1559Config(uint64 basefee, uint32 gasIssuedPerSecond, uint64 gasExcessMax, uint64 gasTarget, uint64 ratio2x1x) pure returns((uint128,uint128,uint32,uint64) config) +func (_TaikoL2 *TaikoL2Caller) CalcEIP1559Config(opts *bind.CallOpts, basefee uint64, gasIssuedPerSecond uint32, gasExcessMax uint64, gasTarget uint64, ratio2x1x uint64) (TaikoL2EIP1559Config, error) { + var out []interface{} + err := _TaikoL2.contract.Call(opts, &out, "calcEIP1559Config", basefee, gasIssuedPerSecond, gasExcessMax, gasTarget, ratio2x1x) + + if err != nil { + return *new(TaikoL2EIP1559Config), err + } + + out0 := *abi.ConvertType(out[0], new(TaikoL2EIP1559Config)).(*TaikoL2EIP1559Config) + + return out0, err + +} + +// CalcEIP1559Config is a free data retrieval call binding the contract method 0x06becb55. +// +// Solidity: function calcEIP1559Config(uint64 basefee, uint32 gasIssuedPerSecond, uint64 gasExcessMax, uint64 gasTarget, uint64 ratio2x1x) pure returns((uint128,uint128,uint32,uint64) config) +func (_TaikoL2 *TaikoL2Session) CalcEIP1559Config(basefee uint64, gasIssuedPerSecond uint32, gasExcessMax uint64, gasTarget uint64, ratio2x1x uint64) (TaikoL2EIP1559Config, error) { + return _TaikoL2.Contract.CalcEIP1559Config(&_TaikoL2.CallOpts, basefee, gasIssuedPerSecond, gasExcessMax, gasTarget, ratio2x1x) +} + +// CalcEIP1559Config is a free data retrieval call binding the contract method 0x06becb55. +// +// Solidity: function calcEIP1559Config(uint64 basefee, uint32 gasIssuedPerSecond, uint64 gasExcessMax, uint64 gasTarget, uint64 ratio2x1x) pure returns((uint128,uint128,uint32,uint64) config) +func (_TaikoL2 *TaikoL2CallerSession) CalcEIP1559Config(basefee uint64, gasIssuedPerSecond uint32, gasExcessMax uint64, gasTarget uint64, ratio2x1x uint64) (TaikoL2EIP1559Config, error) { + return _TaikoL2.Contract.CalcEIP1559Config(&_TaikoL2.CallOpts, basefee, gasIssuedPerSecond, gasExcessMax, gasTarget, ratio2x1x) +} + // GasExcess is a free data retrieval call binding the contract method 0xf535bd56. // // Solidity: function gasExcess() view returns(uint64) @@ -446,7 +469,7 @@ func (_TaikoL2 *TaikoL2CallerSession) GetCrossChainSignalRoot(blockId uint64) ([ // GetEIP1559Config is a free data retrieval call binding the contract method 0x4e755573. // -// Solidity: function getEIP1559Config() view returns((uint128,uint64,uint32)) +// Solidity: function getEIP1559Config() pure returns((uint128,uint128,uint32,uint64) config) func (_TaikoL2 *TaikoL2Caller) GetEIP1559Config(opts *bind.CallOpts) (TaikoL2EIP1559Config, error) { var out []interface{} err := _TaikoL2.contract.Call(opts, &out, "getEIP1559Config") @@ -463,14 +486,14 @@ func (_TaikoL2 *TaikoL2Caller) GetEIP1559Config(opts *bind.CallOpts) (TaikoL2EIP // GetEIP1559Config is a free data retrieval call binding the contract method 0x4e755573. // -// Solidity: function getEIP1559Config() view returns((uint128,uint64,uint32)) +// Solidity: function getEIP1559Config() pure returns((uint128,uint128,uint32,uint64) config) func (_TaikoL2 *TaikoL2Session) GetEIP1559Config() (TaikoL2EIP1559Config, error) { return _TaikoL2.Contract.GetEIP1559Config(&_TaikoL2.CallOpts) } // GetEIP1559Config is a free data retrieval call binding the contract method 0x4e755573. // -// Solidity: function getEIP1559Config() view returns((uint128,uint64,uint32)) +// Solidity: function getEIP1559Config() pure returns((uint128,uint128,uint32,uint64) config) func (_TaikoL2 *TaikoL2CallerSession) GetEIP1559Config() (TaikoL2EIP1559Config, error) { return _TaikoL2.Contract.GetEIP1559Config(&_TaikoL2.CallOpts) } @@ -732,25 +755,25 @@ func (_TaikoL2 *TaikoL2TransactorSession) Anchor(l1Hash [32]byte, l1SignalRoot [ return _TaikoL2.Contract.Anchor(&_TaikoL2.TransactOpts, l1Hash, l1SignalRoot, l1Height, parentGasUsed) } -// Init is a paid mutator transaction binding the contract method 0x5c82e9c2. +// Init is a paid mutator transaction binding the contract method 0x19ab453c. // -// Solidity: function init(address _addressManager, (uint64,uint32,uint64,uint64,uint64) _param1559) returns() -func (_TaikoL2 *TaikoL2Transactor) Init(opts *bind.TransactOpts, _addressManager common.Address, _param1559 TaikoL2EIP1559Params) (*types.Transaction, error) { - return _TaikoL2.contract.Transact(opts, "init", _addressManager, _param1559) +// Solidity: function init(address _addressManager) returns() +func (_TaikoL2 *TaikoL2Transactor) Init(opts *bind.TransactOpts, _addressManager common.Address) (*types.Transaction, error) { + return _TaikoL2.contract.Transact(opts, "init", _addressManager) } -// Init is a paid mutator transaction binding the contract method 0x5c82e9c2. +// Init is a paid mutator transaction binding the contract method 0x19ab453c. // -// Solidity: function init(address _addressManager, (uint64,uint32,uint64,uint64,uint64) _param1559) returns() -func (_TaikoL2 *TaikoL2Session) Init(_addressManager common.Address, _param1559 TaikoL2EIP1559Params) (*types.Transaction, error) { - return _TaikoL2.Contract.Init(&_TaikoL2.TransactOpts, _addressManager, _param1559) +// Solidity: function init(address _addressManager) returns() +func (_TaikoL2 *TaikoL2Session) Init(_addressManager common.Address) (*types.Transaction, error) { + return _TaikoL2.Contract.Init(&_TaikoL2.TransactOpts, _addressManager) } -// Init is a paid mutator transaction binding the contract method 0x5c82e9c2. +// Init is a paid mutator transaction binding the contract method 0x19ab453c. // -// Solidity: function init(address _addressManager, (uint64,uint32,uint64,uint64,uint64) _param1559) returns() -func (_TaikoL2 *TaikoL2TransactorSession) Init(_addressManager common.Address, _param1559 TaikoL2EIP1559Params) (*types.Transaction, error) { - return _TaikoL2.Contract.Init(&_TaikoL2.TransactOpts, _addressManager, _param1559) +// Solidity: function init(address _addressManager) returns() +func (_TaikoL2 *TaikoL2TransactorSession) Init(_addressManager common.Address) (*types.Transaction, error) { + return _TaikoL2.Contract.Init(&_TaikoL2.TransactOpts, _addressManager) } // RenounceOwnership is a paid mutator transaction binding the contract method 0x715018a6. @@ -1036,13 +1059,13 @@ type TaikoL2Anchored struct { ParentHash [32]byte Prevrandao *big.Int Coinbase common.Address - Chainid uint32 + Chainid uint64 Raw types.Log // Blockchain specific contextual infos } -// FilterAnchored is a free log retrieval operation binding the contract event 0xf5e89a4a67ffebdbc23df567479d3096c1dba4169c6bbf20ffc6b24d7f6e6e70. +// FilterAnchored is a free log retrieval operation binding the contract event 0xf0fde5abf5476e9fb590d1e786d07c1ceee1d3c80cce3fafe0478e203cf5184e. // -// Solidity: event Anchored(uint64 number, uint64 basefee, uint32 gaslimit, uint64 timestamp, bytes32 parentHash, uint256 prevrandao, address coinbase, uint32 chainid) +// Solidity: event Anchored(uint64 number, uint64 basefee, uint32 gaslimit, uint64 timestamp, bytes32 parentHash, uint256 prevrandao, address coinbase, uint64 chainid) func (_TaikoL2 *TaikoL2Filterer) FilterAnchored(opts *bind.FilterOpts) (*TaikoL2AnchoredIterator, error) { logs, sub, err := _TaikoL2.contract.FilterLogs(opts, "Anchored") @@ -1052,9 +1075,9 @@ func (_TaikoL2 *TaikoL2Filterer) FilterAnchored(opts *bind.FilterOpts) (*TaikoL2 return &TaikoL2AnchoredIterator{contract: _TaikoL2.contract, event: "Anchored", logs: logs, sub: sub}, nil } -// WatchAnchored is a free log subscription operation binding the contract event 0xf5e89a4a67ffebdbc23df567479d3096c1dba4169c6bbf20ffc6b24d7f6e6e70. +// WatchAnchored is a free log subscription operation binding the contract event 0xf0fde5abf5476e9fb590d1e786d07c1ceee1d3c80cce3fafe0478e203cf5184e. // -// Solidity: event Anchored(uint64 number, uint64 basefee, uint32 gaslimit, uint64 timestamp, bytes32 parentHash, uint256 prevrandao, address coinbase, uint32 chainid) +// Solidity: event Anchored(uint64 number, uint64 basefee, uint32 gaslimit, uint64 timestamp, bytes32 parentHash, uint256 prevrandao, address coinbase, uint64 chainid) func (_TaikoL2 *TaikoL2Filterer) WatchAnchored(opts *bind.WatchOpts, sink chan<- *TaikoL2Anchored) (event.Subscription, error) { logs, sub, err := _TaikoL2.contract.WatchLogs(opts, "Anchored") @@ -1089,9 +1112,9 @@ func (_TaikoL2 *TaikoL2Filterer) WatchAnchored(opts *bind.WatchOpts, sink chan<- }), nil } -// ParseAnchored is a log parse operation binding the contract event 0xf5e89a4a67ffebdbc23df567479d3096c1dba4169c6bbf20ffc6b24d7f6e6e70. +// ParseAnchored is a log parse operation binding the contract event 0xf0fde5abf5476e9fb590d1e786d07c1ceee1d3c80cce3fafe0478e203cf5184e. // -// Solidity: event Anchored(uint64 number, uint64 basefee, uint32 gaslimit, uint64 timestamp, bytes32 parentHash, uint256 prevrandao, address coinbase, uint32 chainid) +// Solidity: event Anchored(uint64 number, uint64 basefee, uint32 gaslimit, uint64 timestamp, bytes32 parentHash, uint256 prevrandao, address coinbase, uint64 chainid) func (_TaikoL2 *TaikoL2Filterer) ParseAnchored(log types.Log) (*TaikoL2Anchored, error) { event := new(TaikoL2Anchored) if err := _TaikoL2.contract.UnpackLog(event, "Anchored", log); err != nil { From 14d5ffdb01635f10247f95cd109398ab2e324a68 Mon Sep 17 00:00:00 2001 From: adaki2004 Date: Wed, 4 Oct 2023 09:57:53 +0200 Subject: [PATCH 42/87] fix genesis test --- packages/protocol/genesis/GenerateGenesis.g.sol | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/protocol/genesis/GenerateGenesis.g.sol b/packages/protocol/genesis/GenerateGenesis.g.sol index 506cb9d000..2d0d53190e 100644 --- a/packages/protocol/genesis/GenerateGenesis.g.sol +++ b/packages/protocol/genesis/GenerateGenesis.g.sol @@ -106,7 +106,7 @@ contract TestGenerateGenesis is Test, AddressResolver { vm.startPrank(taikoL2.GOLDEN_TOUCH_ADDRESS()); for (uint32 i = 0; i < 300; i++) { vm.roll(block.number + 1); - vm.warp(taikoL2.parentTimestamp() + 12); + vm.warp(block.number + 12); vm.fee(taikoL2.getBasefee(12, i)); uint256 gasLeftBefore = gasleft(); From 324be431c07b15e67577f4f618fe9ae690a81f65 Mon Sep 17 00:00:00 2001 From: adaki2004 Date: Wed, 4 Oct 2023 10:40:12 +0200 Subject: [PATCH 43/87] remove parentTimestamp from taikoL2.ts --- packages/protocol/utils/generate_genesis/taikoL2.ts | 1 - 1 file changed, 1 deletion(-) diff --git a/packages/protocol/utils/generate_genesis/taikoL2.ts b/packages/protocol/utils/generate_genesis/taikoL2.ts index 8e87f8188e..1f6cdc0eec 100644 --- a/packages/protocol/utils/generate_genesis/taikoL2.ts +++ b/packages/protocol/utils/generate_genesis/taikoL2.ts @@ -355,7 +355,6 @@ async function generateContractConfigs( ]), ] )}`, - parentTimestamp: Math.floor(new Date().getTime() / 1000), gasExcess: ethers.BigNumber.from(param1559.gasExcess), // AddressResolver _addressManager: addressMap.AddressManagerProxy, From 4c78ddbd357b00aa98332e8d63d088bda070ae8f Mon Sep 17 00:00:00 2001 From: D <51912515+adaki2004@users.noreply.github.com> Date: Fri, 6 Oct 2023 03:22:05 +0200 Subject: [PATCH 44/87] feat(protocol): implemented partial and more fair block proposal rewards (#14888) Co-authored-by: Daniel Wang <99078276+dantaik@users.noreply.github.com> Co-authored-by: Daniel Wang --- packages/protocol/contracts/L1/TaikoData.sol | 13 ++++-- packages/protocol/contracts/L1/TaikoL1.sol | 4 +- .../contracts/L1/libs/LibProposing.sol | 43 +++++++++++++------ .../contracts/L1/libs/LibVerifying.sol | 9 +++- packages/protocol/test/L1/TaikoL1.t.sol | 2 +- .../test/L1/TaikoL1LibProvingWithTiers.t.sol | 2 +- 6 files changed, 54 insertions(+), 19 deletions(-) diff --git a/packages/protocol/contracts/L1/TaikoData.sol b/packages/protocol/contracts/L1/TaikoData.sol index 7bf342f28d..a2c21c5435 100644 --- a/packages/protocol/contracts/L1/TaikoData.sol +++ b/packages/protocol/contracts/L1/TaikoData.sol @@ -37,8 +37,9 @@ library TaikoData { uint24 blockMaxTxListBytes; // Amount of token to reward to the first block propsoed in each L1 // block. - uint256 proposerRewardPerSecond; - uint256 proposerRewardMax; + uint128 proposerRewardPerL1Block; + uint128 proposerRewardMax; + uint8 proposerRewardPoolPctg; // --------------------------------------------------------------------- // Group 3: Proof related configs // --------------------------------------------------------------------- @@ -172,6 +173,11 @@ library TaikoData { uint64 lastVerifiedBlockId; } + struct SlotC { + uint128 accumulatedReward; + uint64 lastProposedHeight; + } + /// @dev Struct holding the state variables for the {TaikoL1} contract. struct State { // Ring buffer for proposed blocks and a some recent verified blocks. @@ -192,6 +198,7 @@ library TaikoData { mapping(address account => uint256 balance) tokenBalances; SlotA slotA; // slot 6 SlotB slotB; // slot 7 - uint256[143] __gap; + SlotC slotC; // slot 8 + uint256[142] __gap; } } diff --git a/packages/protocol/contracts/L1/TaikoL1.sol b/packages/protocol/contracts/L1/TaikoL1.sol index bae71eb42d..57329c7849 100644 --- a/packages/protocol/contracts/L1/TaikoL1.sol +++ b/packages/protocol/contracts/L1/TaikoL1.sol @@ -317,8 +317,10 @@ contract TaikoL1 is blockMaxGasLimit: 8_000_000, blockFeeBaseGas: 20_000, blockMaxTxListBytes: 120_000, - proposerRewardPerSecond: 25e16, // 0.25 Taiko token + proposerRewardPerL1Block: 3e18, // 0.25 Taiko token * 12s = 3 TKO proposerRewardMax: 32e18, // 32 Taiko token + proposerRewardPoolPctg: 30, // means that 30% of the accumulated + // reward is given to the next proposer livenessBond: 10_240e18, ethDepositRingBufferSize: 1024, ethDepositMinCountPerBlock: 8, diff --git a/packages/protocol/contracts/L1/libs/LibProposing.sol b/packages/protocol/contracts/L1/libs/LibProposing.sol index a1e2bd9487..1376209712 100644 --- a/packages/protocol/contracts/L1/libs/LibProposing.sol +++ b/packages/protocol/contracts/L1/libs/LibProposing.sol @@ -99,27 +99,46 @@ library LibProposing { // The block reward doesn't undergo automatic halving; instead, we // depend on Taiko DAO to make necessary adjustments to the rewards. - uint256 reward; + uint128 reward; - if (config.proposerRewardPerSecond > 0 && config.proposerRewardMax > 0) - { - // Unchecked is safe as block.timestamp is always greater than - // block.proposedAt (proposed in the past) + // Reward block proposers with Taiko tokens to encourage chain adoption + // and ensure liveness. + // Rewards are issued only if `proposerRewardPerL1Block` and + // `proposerRewardMax` are set to nonzero values in the configuration. + if (config.proposerRewardPerL1Block != 0) { unchecked { - uint256 blockTime = block.timestamp - - state.blocks[(b.numBlocks - 1) % config.blockRingBufferSize] - .proposedAt; - - if (blockTime > 0) { - reward = (config.proposerRewardPerSecond * blockTime).min( - config.proposerRewardMax + // Mint additional tokens into the reward pool as L1 block + // numbers increase, to incentivize future proposers. + if ( + state.slotC.lastProposedHeight != 0 + && state.slotC.lastProposedHeight < block.number + ) { + uint256 extraRewardMinted = ( + block.number - state.slotC.lastProposedHeight + ) * config.proposerRewardPerL1Block; + + // Reward pool is capped to `proposerRewardMax` + state.slotC.accumulatedReward = uint128( + (extraRewardMinted + state.slotC.accumulatedReward).min( + config.proposerRewardMax + ) ); + } + + if (state.slotC.accumulatedReward != 0) { + // The current proposer receives a fixed percentage of the + // reward pool. + reward = state.slotC.accumulatedReward / 100 + * config.proposerRewardPoolPctg; + + state.slotC.accumulatedReward -= reward; // Reward must be minted LibTaikoToken.creditToken( state, resolver, msg.sender, reward, true ); } + state.slotC.lastProposedHeight = uint64(block.number); } } diff --git a/packages/protocol/contracts/L1/libs/LibVerifying.sol b/packages/protocol/contracts/L1/libs/LibVerifying.sol index 26defe973c..19661a10a2 100644 --- a/packages/protocol/contracts/L1/libs/LibVerifying.sol +++ b/packages/protocol/contracts/L1/libs/LibVerifying.sol @@ -50,7 +50,7 @@ library LibVerifying { || config.blockMaxGasLimit == 0 || config.blockMaxTxListBytes == 0 || config.blockMaxTxListBytes > 128 * 1024 //blob up to 128K || config.livenessBond == 0 - || config.livenessBond < 10 * config.proposerRewardPerSecond + || config.livenessBond < 10 * config.proposerRewardPerL1Block || config.ethDepositRingBufferSize <= 1 || config.ethDepositMinCountPerBlock == 0 || config.ethDepositMaxCountPerBlock @@ -64,6 +64,13 @@ library LibVerifying { >= type(uint96).max / config.ethDepositMaxCountPerBlock ) revert L1_INVALID_CONFIG(); + if (config.proposerRewardPerL1Block != 0) { + if ( + config.proposerRewardMax == 0 + || config.proposerRewardPoolPctg == 0 + ) revert L1_INVALID_CONFIG(); + } + // Init state state.slotA.genesisHeight = uint64(block.number); state.slotA.genesisTimestamp = uint64(block.timestamp); diff --git a/packages/protocol/test/L1/TaikoL1.t.sol b/packages/protocol/test/L1/TaikoL1.t.sol index d5930a8a79..7abb02d6ae 100644 --- a/packages/protocol/test/L1/TaikoL1.t.sol +++ b/packages/protocol/test/L1/TaikoL1.t.sol @@ -25,7 +25,7 @@ contract TaikoL1_NoCooldown is TaikoL1 { config.blockMaxProposals = 10; config.blockRingBufferSize = 12; config.livenessBond = 1e18; // 1 Taiko token - config.proposerRewardPerSecond = 1e15; // 0.001 Taiko token + config.proposerRewardPerL1Block = 1e15; // 0.001 Taiko token } } diff --git a/packages/protocol/test/L1/TaikoL1LibProvingWithTiers.t.sol b/packages/protocol/test/L1/TaikoL1LibProvingWithTiers.t.sol index ea92d9253a..633467e6cb 100644 --- a/packages/protocol/test/L1/TaikoL1LibProvingWithTiers.t.sol +++ b/packages/protocol/test/L1/TaikoL1LibProvingWithTiers.t.sol @@ -30,7 +30,7 @@ contract TaikoL1Tiers is TaikoL1 { config.blockMaxProposals = 10; config.blockRingBufferSize = 12; config.livenessBond = 1e18; // 1 Taiko token - config.proposerRewardPerSecond = 1e15; // 0.001 Taiko token + config.proposerRewardPerL1Block = 1e15; // 0.001 Taiko token } } From 49efd75726c21df8ba84a28b32322ee2164faa68 Mon Sep 17 00:00:00 2001 From: Daniel Wang <99078276+dantaik@users.noreply.github.com> Date: Mon, 9 Oct 2023 17:57:05 +0800 Subject: [PATCH 45/87] feat(protocol): lower top tier proof cost (#14922) Co-authored-by: Daniel Wang --- packages/eventindexer/TaikoL1.json | 2 +- .../eventindexer/contracts/taikol1/TaikoL1.go | 2 +- .../src/constants/abi/TaikoL1.ts | 2 +- packages/protocol/contracts/L1/TaikoData.sol | 5 ++--- packages/protocol/contracts/L1/TaikoL1.sol | 20 +++++++++---------- .../protocol/contracts/L1/libs/LibProving.sol | 3 +++ .../contracts/L1/libs/LibVerifying.sol | 4 ++-- .../contracts/L1/tiers/ITierProvider.sol | 1 + .../tiers/OptimisticRollupConfigProvider.sol | 12 +++++++---- .../L1/tiers/ValidityRollupConfigProvider.sol | 9 ++++++--- .../L1/tiers/ZKRollupConfigProvider.sol | 6 ++++-- packages/protocol/test/L1/TaikoL1.t.sol | 2 +- .../test/L1/TaikoL1LibProvingWithTiers.t.sol | 2 +- packages/relayer/TaikoL1.json | 2 +- packages/relayer/bindings/taikol1/TaikoL1.go | 2 +- .../contract-documentation/L1/TaikoData.md | 2 +- 16 files changed, 44 insertions(+), 32 deletions(-) diff --git a/packages/eventindexer/TaikoL1.json b/packages/eventindexer/TaikoL1.json index da3db6acd0..60f46b34c0 100644 --- a/packages/eventindexer/TaikoL1.json +++ b/packages/eventindexer/TaikoL1.json @@ -1304,7 +1304,7 @@ }, { "internalType": "uint64", - "name": "blockMaxVerificationsPerTx", + "name": "maxBlocksToVerifyPerProposal", "type": "uint64" }, { diff --git a/packages/eventindexer/contracts/taikol1/TaikoL1.go b/packages/eventindexer/contracts/taikol1/TaikoL1.go index 9b93d64ce5..09838474c5 100644 --- a/packages/eventindexer/contracts/taikol1/TaikoL1.go +++ b/packages/eventindexer/contracts/taikol1/TaikoL1.go @@ -136,7 +136,7 @@ type TaikoDataTransition struct { // TaikoL1MetaData contains all meta data concerning the TaikoL1 contract. var TaikoL1MetaData = &bind.MetaData{ - ABI: "[{\"inputs\":[],\"name\":\"L1_ALREADY_CONTESTED\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"L1_ALREADY_CONTESTED\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"L1_ALREADY_PROVED\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"L1_ALREADY_PROVED\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"L1_ASSIGNED_PROVER_NOT_ALLOWED\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"L1_ASSIGNED_PROVER_NOT_ALLOWED\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"L1_ASSIGNMENT_EXPIRED\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"L1_ASSIGNMENT_EXPIRED\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"L1_ASSIGNMENT_INSUFFICIENT_FEE\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"L1_ASSIGNMENT_INSUFFICIENT_FEE\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"L1_ASSIGNMENT_INVALID_PARAMS\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"L1_ASSIGNMENT_INVALID_PARAMS\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"L1_ASSIGNMENT_INVALID_SIG\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"L1_ASSIGNMENT_INVALID_SIG\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"L1_BLOCK_MISMATCH\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"L1_BLOCK_MISMATCH\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"L1_BLOCK_MISMATCH\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"L1_BLOCK_MISMATCH\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"L1_INSUFFICIENT_TOKEN\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"L1_INVALID_ADDRESS\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"L1_INVALID_ADDRESS\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"L1_INVALID_BLOCK_ID\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"L1_INVALID_BLOCK_ID\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"L1_INVALID_BLOCK_ID\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"L1_INVALID_CONFIG\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"L1_INVALID_CONFIG\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"L1_INVALID_ETH_DEPOSIT\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"L1_INVALID_ETH_DEPOSIT\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"L1_INVALID_EVIDENCE\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"L1_INVALID_EVIDENCE\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"L1_INVALID_METADATA\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"L1_INVALID_PARAM\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"L1_INVALID_PROOF\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"L1_INVALID_PROPOSER\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"L1_INVALID_PROVER\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"L1_INVALID_PROVER_SIG\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"L1_INVALID_TIER\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"L1_INVALID_TIER\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"L1_NOT_ASSIGNED_PROVER\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"L1_NOT_ASSIGNED_PROVER\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"L1_TIER_NOT_FOUND\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"L1_TIER_NOT_FOUND\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"L1_TOO_MANY_BLOCKS\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"L1_TOO_MANY_BLOCKS\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"L1_TRANSITION_ID_ZERO\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"L1_TRANSITION_ID_ZERO\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"L1_TRANSITION_NOT_FOUND\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"L1_TRANSITION_NOT_FOUND\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"L1_TXLIST_INVALID_RANGE\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"L1_TXLIST_MISMATCH\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"L1_TXLIST_MISMATCH\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"L1_TXLIST_NOT_FOUND\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"L1_TXLIST_TOO_LARGE\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"L1_TXLIST_TOO_LARGE\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"L1_UNAUTHORIZED\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"L1_UNAUTHORIZED\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"L1_UNEXPECTED_TRANSITION_ID\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"L1_UNEXPECTED_TRANSITION_ID\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"L1_UNEXPECTED_TRANSITION_TIER\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"L1_UNEXPECTED_TRANSITION_TIER\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"RESOLVER_DENIED\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"RESOLVER_INVALID_ADDR\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"chainId\",\"type\":\"uint256\"},{\"internalType\":\"bytes32\",\"name\":\"name\",\"type\":\"bytes32\"}],\"name\":\"RESOLVER_ZERO_ADDR\",\"type\":\"error\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"addressManager\",\"type\":\"address\"}],\"name\":\"AddressManagerChanged\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"blockId\",\"type\":\"uint256\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"assignedProver\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint96\",\"name\":\"livenessBond\",\"type\":\"uint96\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"proverFee\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"reward\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint16\",\"name\":\"minTier\",\"type\":\"uint16\"},{\"components\":[{\"internalType\":\"bytes32\",\"name\":\"l1Hash\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"difficulty\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"txListHash\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"extraData\",\"type\":\"bytes32\"},{\"internalType\":\"uint64\",\"name\":\"id\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"timestamp\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"l1Height\",\"type\":\"uint64\"},{\"internalType\":\"uint32\",\"name\":\"gasLimit\",\"type\":\"uint32\"},{\"internalType\":\"address\",\"name\":\"coinbase\",\"type\":\"address\"},{\"components\":[{\"internalType\":\"address\",\"name\":\"recipient\",\"type\":\"address\"},{\"internalType\":\"uint96\",\"name\":\"amount\",\"type\":\"uint96\"},{\"internalType\":\"uint64\",\"name\":\"id\",\"type\":\"uint64\"}],\"internalType\":\"structTaikoData.EthDeposit[]\",\"name\":\"depositsProcessed\",\"type\":\"tuple[]\"}],\"indexed\":false,\"internalType\":\"structTaikoData.BlockMetadata\",\"name\":\"meta\",\"type\":\"tuple\"}],\"name\":\"BlockProposed\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"blockId\",\"type\":\"uint256\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"assignedProver\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint96\",\"name\":\"livenessBond\",\"type\":\"uint96\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"proverFee\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"reward\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint16\",\"name\":\"minTier\",\"type\":\"uint16\"},{\"components\":[{\"internalType\":\"bytes32\",\"name\":\"l1Hash\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"difficulty\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"txListHash\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"extraData\",\"type\":\"bytes32\"},{\"internalType\":\"uint64\",\"name\":\"id\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"timestamp\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"l1Height\",\"type\":\"uint64\"},{\"internalType\":\"uint32\",\"name\":\"gasLimit\",\"type\":\"uint32\"},{\"internalType\":\"address\",\"name\":\"coinbase\",\"type\":\"address\"},{\"components\":[{\"internalType\":\"address\",\"name\":\"recipient\",\"type\":\"address\"},{\"internalType\":\"uint96\",\"name\":\"amount\",\"type\":\"uint96\"},{\"internalType\":\"uint64\",\"name\":\"id\",\"type\":\"uint64\"}],\"internalType\":\"structTaikoData.EthDeposit[]\",\"name\":\"depositsProcessed\",\"type\":\"tuple[]\"}],\"indexed\":false,\"internalType\":\"structTaikoData.BlockMetadata\",\"name\":\"meta\",\"type\":\"tuple\"}],\"name\":\"BlockProposed\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"blockId\",\"type\":\"uint256\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"assignedProver\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"prover\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"blockHash\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"signalRoot\",\"type\":\"bytes32\"}],\"name\":\"BlockVerified\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"blockId\",\"type\":\"uint256\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"assignedProver\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"prover\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"blockHash\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"signalRoot\",\"type\":\"bytes32\"}],\"name\":\"BlockVerified\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint64\",\"name\":\"srcHeight\",\"type\":\"uint64\"},{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"blockHash\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"signalRoot\",\"type\":\"bytes32\"}],\"name\":\"CrossChainSynced\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint64\",\"name\":\"srcHeight\",\"type\":\"uint64\"},{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"blockHash\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"signalRoot\",\"type\":\"bytes32\"}],\"name\":\"CrossChainSynced\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"components\":[{\"internalType\":\"address\",\"name\":\"recipient\",\"type\":\"address\"},{\"internalType\":\"uint96\",\"name\":\"amount\",\"type\":\"uint96\"},{\"internalType\":\"uint64\",\"name\":\"id\",\"type\":\"uint64\"}],\"indexed\":false,\"internalType\":\"structTaikoData.EthDeposit\",\"name\":\"deposit\",\"type\":\"tuple\"}],\"name\":\"EthDeposited\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"components\":[{\"internalType\":\"address\",\"name\":\"recipient\",\"type\":\"address\"},{\"internalType\":\"uint96\",\"name\":\"amount\",\"type\":\"uint96\"},{\"internalType\":\"uint64\",\"name\":\"id\",\"type\":\"uint64\"}],\"indexed\":false,\"internalType\":\"structTaikoData.EthDeposit\",\"name\":\"deposit\",\"type\":\"tuple\"}],\"name\":\"EthDeposited\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint8\",\"name\":\"version\",\"type\":\"uint8\"}],\"name\":\"Initialized\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"previousOwner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"newOwner\",\"type\":\"address\"}],\"name\":\"OwnershipTransferred\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"bool\",\"name\":\"minted\",\"type\":\"bool\"}],\"name\":\"TokenCredited\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"bool\",\"name\":\"minted\",\"type\":\"bool\"}],\"name\":\"TokenCredited\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"bool\",\"name\":\"fromLocalBalance\",\"type\":\"bool\"}],\"name\":\"TokenDebited\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"bool\",\"name\":\"fromLocalBalance\",\"type\":\"bool\"}],\"name\":\"TokenDebited\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"TokenDeposited\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"TokenDeposited\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"TokenWithdrawn\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"TokenWithdrawn\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"TokenWithdrawnByOwner\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"TokenWithdrawnByOwner\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"blockId\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"parentHash\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"blockHash\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"signalRoot\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"contester\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint96\",\"name\":\"contestBond\",\"type\":\"uint96\"},{\"indexed\":false,\"internalType\":\"uint16\",\"name\":\"tier\",\"type\":\"uint16\"}],\"name\":\"TransitionContested\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"blockId\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"parentHash\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"blockHash\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"signalRoot\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"contester\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint96\",\"name\":\"contestBond\",\"type\":\"uint96\"},{\"indexed\":false,\"internalType\":\"uint16\",\"name\":\"tier\",\"type\":\"uint16\"}],\"name\":\"TransitionContested\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"blockId\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"parentHash\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"blockHash\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"signalRoot\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"prover\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint96\",\"name\":\"validityBond\",\"type\":\"uint96\"},{\"indexed\":false,\"internalType\":\"uint16\",\"name\":\"tier\",\"type\":\"uint16\"}],\"name\":\"TransitionProved\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"blockId\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"parentHash\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"blockHash\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"signalRoot\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"prover\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint96\",\"name\":\"validityBond\",\"type\":\"uint96\"},{\"indexed\":false,\"internalType\":\"uint16\",\"name\":\"tier\",\"type\":\"uint16\"}],\"name\":\"TransitionProved\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"addressManager\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"canDepositEthToL2\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"recipient\",\"type\":\"address\"}],\"name\":\"depositEtherToL2\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"depositTaikoToken\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"blockId\",\"type\":\"uint64\"}],\"name\":\"getBlock\",\"outputs\":[{\"components\":[{\"internalType\":\"bytes32\",\"name\":\"metaHash\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"assignedProver\",\"type\":\"address\"},{\"internalType\":\"uint96\",\"name\":\"livenessBond\",\"type\":\"uint96\"},{\"internalType\":\"uint64\",\"name\":\"blockId\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"proposedAt\",\"type\":\"uint64\"},{\"internalType\":\"uint32\",\"name\":\"nextTransitionId\",\"type\":\"uint32\"},{\"internalType\":\"uint32\",\"name\":\"verifiedTransitionId\",\"type\":\"uint32\"},{\"internalType\":\"uint16\",\"name\":\"minTier\",\"type\":\"uint16\"},{\"internalType\":\"bytes32[7]\",\"name\":\"__reserved\",\"type\":\"bytes32[7]\"}],\"internalType\":\"structTaikoData.Block\",\"name\":\"blk\",\"type\":\"tuple\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getConfig\",\"outputs\":[{\"components\":[{\"internalType\":\"uint256\",\"name\":\"chainId\",\"type\":\"uint256\"},{\"internalType\":\"bool\",\"name\":\"relaySignalRoot\",\"type\":\"bool\"},{\"internalType\":\"uint64\",\"name\":\"blockMaxProposals\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"blockRingBufferSize\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"blockMaxVerificationsPerTx\",\"type\":\"uint64\"},{\"internalType\":\"uint32\",\"name\":\"blockMaxGasLimit\",\"type\":\"uint32\"},{\"internalType\":\"uint32\",\"name\":\"blockFeeBaseGas\",\"type\":\"uint32\"},{\"internalType\":\"uint24\",\"name\":\"blockMaxTxListBytes\",\"type\":\"uint24\"},{\"internalType\":\"uint256\",\"name\":\"proposerRewardPerSecond\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"proposerRewardMax\",\"type\":\"uint256\"},{\"internalType\":\"uint96\",\"name\":\"livenessBond\",\"type\":\"uint96\"},{\"internalType\":\"uint256\",\"name\":\"ethDepositRingBufferSize\",\"type\":\"uint256\"},{\"internalType\":\"uint64\",\"name\":\"ethDepositMinCountPerBlock\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"ethDepositMaxCountPerBlock\",\"type\":\"uint64\"},{\"internalType\":\"uint96\",\"name\":\"ethDepositMinAmount\",\"type\":\"uint96\"},{\"internalType\":\"uint96\",\"name\":\"ethDepositMaxAmount\",\"type\":\"uint96\"},{\"internalType\":\"uint256\",\"name\":\"ethDepositGas\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"ethDepositMaxFee\",\"type\":\"uint256\"}],\"internalType\":\"structTaikoData.Config\",\"name\":\"\",\"type\":\"tuple\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"blockId\",\"type\":\"uint64\"}],\"name\":\"getCrossChainBlockHash\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"blockId\",\"type\":\"uint64\"}],\"name\":\"getCrossChainSignalRoot\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"rand\",\"type\":\"uint256\"}],\"name\":\"getMinTier\",\"outputs\":[{\"internalType\":\"uint16\",\"name\":\"\",\"type\":\"uint16\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getStateVariables\",\"outputs\":[{\"components\":[{\"internalType\":\"uint64\",\"name\":\"genesisHeight\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"genesisTimestamp\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"nextEthDepositToProcess\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"numEthDeposits\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"numBlocks\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"lastVerifiedBlockId\",\"type\":\"uint64\"}],\"internalType\":\"structTaikoData.StateVariables\",\"name\":\"\",\"type\":\"tuple\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"user\",\"type\":\"address\"}],\"name\":\"getTaikoTokenBalance\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint16\",\"name\":\"tierId\",\"type\":\"uint16\"}],\"name\":\"getTier\",\"outputs\":[{\"components\":[{\"internalType\":\"bytes32\",\"name\":\"verifierName\",\"type\":\"bytes32\"},{\"internalType\":\"uint96\",\"name\":\"validityBond\",\"type\":\"uint96\"},{\"internalType\":\"uint96\",\"name\":\"contestBond\",\"type\":\"uint96\"},{\"internalType\":\"uint24\",\"name\":\"cooldownWindow\",\"type\":\"uint24\"},{\"internalType\":\"uint16\",\"name\":\"provingWindow\",\"type\":\"uint16\"}],\"internalType\":\"structITierProvider.Tier\",\"name\":\"\",\"type\":\"tuple\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getTierIds\",\"outputs\":[{\"internalType\":\"uint16[]\",\"name\":\"\",\"type\":\"uint16[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"blockId\",\"type\":\"uint64\"},{\"internalType\":\"bytes32\",\"name\":\"parentHash\",\"type\":\"bytes32\"}],\"name\":\"getTransition\",\"outputs\":[{\"components\":[{\"internalType\":\"bytes32\",\"name\":\"key\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"blockHash\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"signalRoot\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"prover\",\"type\":\"address\"},{\"internalType\":\"uint96\",\"name\":\"validityBond\",\"type\":\"uint96\"},{\"internalType\":\"address\",\"name\":\"contester\",\"type\":\"address\"},{\"internalType\":\"uint96\",\"name\":\"contestBond\",\"type\":\"uint96\"},{\"internalType\":\"uint64\",\"name\":\"timestamp\",\"type\":\"uint64\"},{\"internalType\":\"uint16\",\"name\":\"tier\",\"type\":\"uint16\"},{\"internalType\":\"bytes32[4]\",\"name\":\"__reserved\",\"type\":\"bytes32[4]\"}],\"internalType\":\"structTaikoData.Transition\",\"name\":\"\",\"type\":\"tuple\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_addressManager\",\"type\":\"address\"},{\"internalType\":\"bytes32\",\"name\":\"_genesisBlockHash\",\"type\":\"bytes32\"}],\"name\":\"init\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"owner\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"ownerWithdrawTaikoToken\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"txListHash\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"extraData\",\"type\":\"bytes32\"},{\"internalType\":\"bytes\",\"name\":\"assignment\",\"type\":\"bytes\"},{\"internalType\":\"bytes\",\"name\":\"txList\",\"type\":\"bytes\"}],\"name\":\"proposeBlock\",\"outputs\":[{\"components\":[{\"internalType\":\"bytes32\",\"name\":\"l1Hash\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"difficulty\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"txListHash\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"extraData\",\"type\":\"bytes32\"},{\"internalType\":\"uint64\",\"name\":\"id\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"timestamp\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"l1Height\",\"type\":\"uint64\"},{\"internalType\":\"uint32\",\"name\":\"gasLimit\",\"type\":\"uint32\"},{\"internalType\":\"address\",\"name\":\"coinbase\",\"type\":\"address\"},{\"components\":[{\"internalType\":\"address\",\"name\":\"recipient\",\"type\":\"address\"},{\"internalType\":\"uint96\",\"name\":\"amount\",\"type\":\"uint96\"},{\"internalType\":\"uint64\",\"name\":\"id\",\"type\":\"uint64\"}],\"internalType\":\"structTaikoData.EthDeposit[]\",\"name\":\"depositsProcessed\",\"type\":\"tuple[]\"}],\"internalType\":\"structTaikoData.BlockMetadata\",\"name\":\"meta\",\"type\":\"tuple\"}],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"blockId\",\"type\":\"uint64\"},{\"internalType\":\"bytes\",\"name\":\"input\",\"type\":\"bytes\"}],\"name\":\"proveBlock\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"renounceOwnership\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"chainId\",\"type\":\"uint256\"},{\"internalType\":\"bytes32\",\"name\":\"name\",\"type\":\"bytes32\"},{\"internalType\":\"bool\",\"name\":\"allowZeroAddress\",\"type\":\"bool\"}],\"name\":\"resolve\",\"outputs\":[{\"internalType\":\"addresspayable\",\"name\":\"addr\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"name\",\"type\":\"bytes32\"},{\"internalType\":\"bool\",\"name\":\"allowZeroAddress\",\"type\":\"bool\"}],\"name\":\"resolve\",\"outputs\":[{\"internalType\":\"addresspayable\",\"name\":\"addr\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"newAddressManager\",\"type\":\"address\"}],\"name\":\"setAddressManager\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"state\",\"outputs\":[{\"components\":[{\"internalType\":\"uint64\",\"name\":\"genesisHeight\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"genesisTimestamp\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"numEthDeposits\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"nextEthDepositToProcess\",\"type\":\"uint64\"}],\"internalType\":\"structTaikoData.SlotA\",\"name\":\"slotA\",\"type\":\"tuple\"},{\"components\":[{\"internalType\":\"uint64\",\"name\":\"numBlocks\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"nextEthDepositToProcess\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"lastVerifiedAt\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"lastVerifiedBlockId\",\"type\":\"uint64\"}],\"internalType\":\"structTaikoData.SlotB\",\"name\":\"slotB\",\"type\":\"tuple\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"newOwner\",\"type\":\"address\"}],\"name\":\"transferOwnership\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"maxBlocks\",\"type\":\"uint64\"}],\"name\":\"verifyBlocks\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"withdrawTaikoToken\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"stateMutability\":\"payable\",\"type\":\"receive\"}]", + ABI: "[{\"inputs\":[],\"name\":\"L1_ALREADY_CONTESTED\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"L1_ALREADY_CONTESTED\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"L1_ALREADY_PROVED\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"L1_ALREADY_PROVED\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"L1_ASSIGNED_PROVER_NOT_ALLOWED\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"L1_ASSIGNED_PROVER_NOT_ALLOWED\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"L1_ASSIGNMENT_EXPIRED\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"L1_ASSIGNMENT_EXPIRED\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"L1_ASSIGNMENT_INSUFFICIENT_FEE\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"L1_ASSIGNMENT_INSUFFICIENT_FEE\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"L1_ASSIGNMENT_INVALID_PARAMS\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"L1_ASSIGNMENT_INVALID_PARAMS\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"L1_ASSIGNMENT_INVALID_SIG\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"L1_ASSIGNMENT_INVALID_SIG\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"L1_BLOCK_MISMATCH\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"L1_BLOCK_MISMATCH\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"L1_BLOCK_MISMATCH\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"L1_BLOCK_MISMATCH\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"L1_INSUFFICIENT_TOKEN\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"L1_INVALID_ADDRESS\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"L1_INVALID_ADDRESS\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"L1_INVALID_BLOCK_ID\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"L1_INVALID_BLOCK_ID\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"L1_INVALID_BLOCK_ID\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"L1_INVALID_CONFIG\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"L1_INVALID_CONFIG\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"L1_INVALID_ETH_DEPOSIT\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"L1_INVALID_ETH_DEPOSIT\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"L1_INVALID_EVIDENCE\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"L1_INVALID_EVIDENCE\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"L1_INVALID_METADATA\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"L1_INVALID_PARAM\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"L1_INVALID_PROOF\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"L1_INVALID_PROPOSER\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"L1_INVALID_PROVER\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"L1_INVALID_PROVER_SIG\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"L1_INVALID_TIER\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"L1_INVALID_TIER\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"L1_NOT_ASSIGNED_PROVER\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"L1_NOT_ASSIGNED_PROVER\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"L1_TIER_NOT_FOUND\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"L1_TIER_NOT_FOUND\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"L1_TOO_MANY_BLOCKS\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"L1_TOO_MANY_BLOCKS\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"L1_TRANSITION_ID_ZERO\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"L1_TRANSITION_ID_ZERO\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"L1_TRANSITION_NOT_FOUND\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"L1_TRANSITION_NOT_FOUND\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"L1_TXLIST_INVALID_RANGE\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"L1_TXLIST_MISMATCH\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"L1_TXLIST_MISMATCH\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"L1_TXLIST_NOT_FOUND\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"L1_TXLIST_TOO_LARGE\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"L1_TXLIST_TOO_LARGE\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"L1_UNAUTHORIZED\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"L1_UNAUTHORIZED\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"L1_UNEXPECTED_TRANSITION_ID\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"L1_UNEXPECTED_TRANSITION_ID\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"L1_UNEXPECTED_TRANSITION_TIER\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"L1_UNEXPECTED_TRANSITION_TIER\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"RESOLVER_DENIED\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"RESOLVER_INVALID_ADDR\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"chainId\",\"type\":\"uint256\"},{\"internalType\":\"bytes32\",\"name\":\"name\",\"type\":\"bytes32\"}],\"name\":\"RESOLVER_ZERO_ADDR\",\"type\":\"error\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"addressManager\",\"type\":\"address\"}],\"name\":\"AddressManagerChanged\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"blockId\",\"type\":\"uint256\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"assignedProver\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint96\",\"name\":\"livenessBond\",\"type\":\"uint96\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"proverFee\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"reward\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint16\",\"name\":\"minTier\",\"type\":\"uint16\"},{\"components\":[{\"internalType\":\"bytes32\",\"name\":\"l1Hash\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"difficulty\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"txListHash\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"extraData\",\"type\":\"bytes32\"},{\"internalType\":\"uint64\",\"name\":\"id\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"timestamp\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"l1Height\",\"type\":\"uint64\"},{\"internalType\":\"uint32\",\"name\":\"gasLimit\",\"type\":\"uint32\"},{\"internalType\":\"address\",\"name\":\"coinbase\",\"type\":\"address\"},{\"components\":[{\"internalType\":\"address\",\"name\":\"recipient\",\"type\":\"address\"},{\"internalType\":\"uint96\",\"name\":\"amount\",\"type\":\"uint96\"},{\"internalType\":\"uint64\",\"name\":\"id\",\"type\":\"uint64\"}],\"internalType\":\"structTaikoData.EthDeposit[]\",\"name\":\"depositsProcessed\",\"type\":\"tuple[]\"}],\"indexed\":false,\"internalType\":\"structTaikoData.BlockMetadata\",\"name\":\"meta\",\"type\":\"tuple\"}],\"name\":\"BlockProposed\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"blockId\",\"type\":\"uint256\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"assignedProver\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint96\",\"name\":\"livenessBond\",\"type\":\"uint96\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"proverFee\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"reward\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint16\",\"name\":\"minTier\",\"type\":\"uint16\"},{\"components\":[{\"internalType\":\"bytes32\",\"name\":\"l1Hash\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"difficulty\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"txListHash\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"extraData\",\"type\":\"bytes32\"},{\"internalType\":\"uint64\",\"name\":\"id\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"timestamp\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"l1Height\",\"type\":\"uint64\"},{\"internalType\":\"uint32\",\"name\":\"gasLimit\",\"type\":\"uint32\"},{\"internalType\":\"address\",\"name\":\"coinbase\",\"type\":\"address\"},{\"components\":[{\"internalType\":\"address\",\"name\":\"recipient\",\"type\":\"address\"},{\"internalType\":\"uint96\",\"name\":\"amount\",\"type\":\"uint96\"},{\"internalType\":\"uint64\",\"name\":\"id\",\"type\":\"uint64\"}],\"internalType\":\"structTaikoData.EthDeposit[]\",\"name\":\"depositsProcessed\",\"type\":\"tuple[]\"}],\"indexed\":false,\"internalType\":\"structTaikoData.BlockMetadata\",\"name\":\"meta\",\"type\":\"tuple\"}],\"name\":\"BlockProposed\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"blockId\",\"type\":\"uint256\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"assignedProver\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"prover\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"blockHash\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"signalRoot\",\"type\":\"bytes32\"}],\"name\":\"BlockVerified\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"blockId\",\"type\":\"uint256\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"assignedProver\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"prover\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"blockHash\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"signalRoot\",\"type\":\"bytes32\"}],\"name\":\"BlockVerified\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint64\",\"name\":\"srcHeight\",\"type\":\"uint64\"},{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"blockHash\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"signalRoot\",\"type\":\"bytes32\"}],\"name\":\"CrossChainSynced\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint64\",\"name\":\"srcHeight\",\"type\":\"uint64\"},{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"blockHash\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"signalRoot\",\"type\":\"bytes32\"}],\"name\":\"CrossChainSynced\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"components\":[{\"internalType\":\"address\",\"name\":\"recipient\",\"type\":\"address\"},{\"internalType\":\"uint96\",\"name\":\"amount\",\"type\":\"uint96\"},{\"internalType\":\"uint64\",\"name\":\"id\",\"type\":\"uint64\"}],\"indexed\":false,\"internalType\":\"structTaikoData.EthDeposit\",\"name\":\"deposit\",\"type\":\"tuple\"}],\"name\":\"EthDeposited\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"components\":[{\"internalType\":\"address\",\"name\":\"recipient\",\"type\":\"address\"},{\"internalType\":\"uint96\",\"name\":\"amount\",\"type\":\"uint96\"},{\"internalType\":\"uint64\",\"name\":\"id\",\"type\":\"uint64\"}],\"indexed\":false,\"internalType\":\"structTaikoData.EthDeposit\",\"name\":\"deposit\",\"type\":\"tuple\"}],\"name\":\"EthDeposited\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint8\",\"name\":\"version\",\"type\":\"uint8\"}],\"name\":\"Initialized\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"previousOwner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"newOwner\",\"type\":\"address\"}],\"name\":\"OwnershipTransferred\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"bool\",\"name\":\"minted\",\"type\":\"bool\"}],\"name\":\"TokenCredited\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"bool\",\"name\":\"minted\",\"type\":\"bool\"}],\"name\":\"TokenCredited\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"bool\",\"name\":\"fromLocalBalance\",\"type\":\"bool\"}],\"name\":\"TokenDebited\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"bool\",\"name\":\"fromLocalBalance\",\"type\":\"bool\"}],\"name\":\"TokenDebited\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"TokenDeposited\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"TokenDeposited\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"TokenWithdrawn\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"TokenWithdrawn\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"TokenWithdrawnByOwner\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"TokenWithdrawnByOwner\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"blockId\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"parentHash\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"blockHash\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"signalRoot\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"contester\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint96\",\"name\":\"contestBond\",\"type\":\"uint96\"},{\"indexed\":false,\"internalType\":\"uint16\",\"name\":\"tier\",\"type\":\"uint16\"}],\"name\":\"TransitionContested\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"blockId\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"parentHash\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"blockHash\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"signalRoot\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"contester\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint96\",\"name\":\"contestBond\",\"type\":\"uint96\"},{\"indexed\":false,\"internalType\":\"uint16\",\"name\":\"tier\",\"type\":\"uint16\"}],\"name\":\"TransitionContested\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"blockId\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"parentHash\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"blockHash\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"signalRoot\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"prover\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint96\",\"name\":\"validityBond\",\"type\":\"uint96\"},{\"indexed\":false,\"internalType\":\"uint16\",\"name\":\"tier\",\"type\":\"uint16\"}],\"name\":\"TransitionProved\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"blockId\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"parentHash\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"blockHash\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"signalRoot\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"prover\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint96\",\"name\":\"validityBond\",\"type\":\"uint96\"},{\"indexed\":false,\"internalType\":\"uint16\",\"name\":\"tier\",\"type\":\"uint16\"}],\"name\":\"TransitionProved\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"addressManager\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"canDepositEthToL2\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"recipient\",\"type\":\"address\"}],\"name\":\"depositEtherToL2\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"depositTaikoToken\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"blockId\",\"type\":\"uint64\"}],\"name\":\"getBlock\",\"outputs\":[{\"components\":[{\"internalType\":\"bytes32\",\"name\":\"metaHash\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"assignedProver\",\"type\":\"address\"},{\"internalType\":\"uint96\",\"name\":\"livenessBond\",\"type\":\"uint96\"},{\"internalType\":\"uint64\",\"name\":\"blockId\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"proposedAt\",\"type\":\"uint64\"},{\"internalType\":\"uint32\",\"name\":\"nextTransitionId\",\"type\":\"uint32\"},{\"internalType\":\"uint32\",\"name\":\"verifiedTransitionId\",\"type\":\"uint32\"},{\"internalType\":\"uint16\",\"name\":\"minTier\",\"type\":\"uint16\"},{\"internalType\":\"bytes32[7]\",\"name\":\"__reserved\",\"type\":\"bytes32[7]\"}],\"internalType\":\"structTaikoData.Block\",\"name\":\"blk\",\"type\":\"tuple\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getConfig\",\"outputs\":[{\"components\":[{\"internalType\":\"uint256\",\"name\":\"chainId\",\"type\":\"uint256\"},{\"internalType\":\"bool\",\"name\":\"relaySignalRoot\",\"type\":\"bool\"},{\"internalType\":\"uint64\",\"name\":\"blockMaxProposals\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"blockRingBufferSize\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"maxBlocksToVerifyPerProposal\",\"type\":\"uint64\"},{\"internalType\":\"uint32\",\"name\":\"blockMaxGasLimit\",\"type\":\"uint32\"},{\"internalType\":\"uint32\",\"name\":\"blockFeeBaseGas\",\"type\":\"uint32\"},{\"internalType\":\"uint24\",\"name\":\"blockMaxTxListBytes\",\"type\":\"uint24\"},{\"internalType\":\"uint256\",\"name\":\"proposerRewardPerSecond\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"proposerRewardMax\",\"type\":\"uint256\"},{\"internalType\":\"uint96\",\"name\":\"livenessBond\",\"type\":\"uint96\"},{\"internalType\":\"uint256\",\"name\":\"ethDepositRingBufferSize\",\"type\":\"uint256\"},{\"internalType\":\"uint64\",\"name\":\"ethDepositMinCountPerBlock\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"ethDepositMaxCountPerBlock\",\"type\":\"uint64\"},{\"internalType\":\"uint96\",\"name\":\"ethDepositMinAmount\",\"type\":\"uint96\"},{\"internalType\":\"uint96\",\"name\":\"ethDepositMaxAmount\",\"type\":\"uint96\"},{\"internalType\":\"uint256\",\"name\":\"ethDepositGas\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"ethDepositMaxFee\",\"type\":\"uint256\"}],\"internalType\":\"structTaikoData.Config\",\"name\":\"\",\"type\":\"tuple\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"blockId\",\"type\":\"uint64\"}],\"name\":\"getCrossChainBlockHash\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"blockId\",\"type\":\"uint64\"}],\"name\":\"getCrossChainSignalRoot\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"rand\",\"type\":\"uint256\"}],\"name\":\"getMinTier\",\"outputs\":[{\"internalType\":\"uint16\",\"name\":\"\",\"type\":\"uint16\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getStateVariables\",\"outputs\":[{\"components\":[{\"internalType\":\"uint64\",\"name\":\"genesisHeight\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"genesisTimestamp\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"nextEthDepositToProcess\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"numEthDeposits\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"numBlocks\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"lastVerifiedBlockId\",\"type\":\"uint64\"}],\"internalType\":\"structTaikoData.StateVariables\",\"name\":\"\",\"type\":\"tuple\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"user\",\"type\":\"address\"}],\"name\":\"getTaikoTokenBalance\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint16\",\"name\":\"tierId\",\"type\":\"uint16\"}],\"name\":\"getTier\",\"outputs\":[{\"components\":[{\"internalType\":\"bytes32\",\"name\":\"verifierName\",\"type\":\"bytes32\"},{\"internalType\":\"uint96\",\"name\":\"validityBond\",\"type\":\"uint96\"},{\"internalType\":\"uint96\",\"name\":\"contestBond\",\"type\":\"uint96\"},{\"internalType\":\"uint24\",\"name\":\"cooldownWindow\",\"type\":\"uint24\"},{\"internalType\":\"uint16\",\"name\":\"provingWindow\",\"type\":\"uint16\"}],\"internalType\":\"structITierProvider.Tier\",\"name\":\"\",\"type\":\"tuple\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getTierIds\",\"outputs\":[{\"internalType\":\"uint16[]\",\"name\":\"\",\"type\":\"uint16[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"blockId\",\"type\":\"uint64\"},{\"internalType\":\"bytes32\",\"name\":\"parentHash\",\"type\":\"bytes32\"}],\"name\":\"getTransition\",\"outputs\":[{\"components\":[{\"internalType\":\"bytes32\",\"name\":\"key\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"blockHash\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"signalRoot\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"prover\",\"type\":\"address\"},{\"internalType\":\"uint96\",\"name\":\"validityBond\",\"type\":\"uint96\"},{\"internalType\":\"address\",\"name\":\"contester\",\"type\":\"address\"},{\"internalType\":\"uint96\",\"name\":\"contestBond\",\"type\":\"uint96\"},{\"internalType\":\"uint64\",\"name\":\"timestamp\",\"type\":\"uint64\"},{\"internalType\":\"uint16\",\"name\":\"tier\",\"type\":\"uint16\"},{\"internalType\":\"bytes32[4]\",\"name\":\"__reserved\",\"type\":\"bytes32[4]\"}],\"internalType\":\"structTaikoData.Transition\",\"name\":\"\",\"type\":\"tuple\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_addressManager\",\"type\":\"address\"},{\"internalType\":\"bytes32\",\"name\":\"_genesisBlockHash\",\"type\":\"bytes32\"}],\"name\":\"init\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"owner\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"ownerWithdrawTaikoToken\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"txListHash\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"extraData\",\"type\":\"bytes32\"},{\"internalType\":\"bytes\",\"name\":\"assignment\",\"type\":\"bytes\"},{\"internalType\":\"bytes\",\"name\":\"txList\",\"type\":\"bytes\"}],\"name\":\"proposeBlock\",\"outputs\":[{\"components\":[{\"internalType\":\"bytes32\",\"name\":\"l1Hash\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"difficulty\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"txListHash\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"extraData\",\"type\":\"bytes32\"},{\"internalType\":\"uint64\",\"name\":\"id\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"timestamp\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"l1Height\",\"type\":\"uint64\"},{\"internalType\":\"uint32\",\"name\":\"gasLimit\",\"type\":\"uint32\"},{\"internalType\":\"address\",\"name\":\"coinbase\",\"type\":\"address\"},{\"components\":[{\"internalType\":\"address\",\"name\":\"recipient\",\"type\":\"address\"},{\"internalType\":\"uint96\",\"name\":\"amount\",\"type\":\"uint96\"},{\"internalType\":\"uint64\",\"name\":\"id\",\"type\":\"uint64\"}],\"internalType\":\"structTaikoData.EthDeposit[]\",\"name\":\"depositsProcessed\",\"type\":\"tuple[]\"}],\"internalType\":\"structTaikoData.BlockMetadata\",\"name\":\"meta\",\"type\":\"tuple\"}],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"blockId\",\"type\":\"uint64\"},{\"internalType\":\"bytes\",\"name\":\"input\",\"type\":\"bytes\"}],\"name\":\"proveBlock\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"renounceOwnership\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"chainId\",\"type\":\"uint256\"},{\"internalType\":\"bytes32\",\"name\":\"name\",\"type\":\"bytes32\"},{\"internalType\":\"bool\",\"name\":\"allowZeroAddress\",\"type\":\"bool\"}],\"name\":\"resolve\",\"outputs\":[{\"internalType\":\"addresspayable\",\"name\":\"addr\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"name\",\"type\":\"bytes32\"},{\"internalType\":\"bool\",\"name\":\"allowZeroAddress\",\"type\":\"bool\"}],\"name\":\"resolve\",\"outputs\":[{\"internalType\":\"addresspayable\",\"name\":\"addr\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"newAddressManager\",\"type\":\"address\"}],\"name\":\"setAddressManager\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"state\",\"outputs\":[{\"components\":[{\"internalType\":\"uint64\",\"name\":\"genesisHeight\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"genesisTimestamp\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"numEthDeposits\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"nextEthDepositToProcess\",\"type\":\"uint64\"}],\"internalType\":\"structTaikoData.SlotA\",\"name\":\"slotA\",\"type\":\"tuple\"},{\"components\":[{\"internalType\":\"uint64\",\"name\":\"numBlocks\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"nextEthDepositToProcess\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"lastVerifiedAt\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"lastVerifiedBlockId\",\"type\":\"uint64\"}],\"internalType\":\"structTaikoData.SlotB\",\"name\":\"slotB\",\"type\":\"tuple\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"newOwner\",\"type\":\"address\"}],\"name\":\"transferOwnership\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"maxBlocks\",\"type\":\"uint64\"}],\"name\":\"verifyBlocks\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"withdrawTaikoToken\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"stateMutability\":\"payable\",\"type\":\"receive\"}]", } // TaikoL1ABI is the input ABI used to generate the binding from. diff --git a/packages/pos-dashboard/src/constants/abi/TaikoL1.ts b/packages/pos-dashboard/src/constants/abi/TaikoL1.ts index 24897e0ea6..4f70df9c2a 100644 --- a/packages/pos-dashboard/src/constants/abi/TaikoL1.ts +++ b/packages/pos-dashboard/src/constants/abi/TaikoL1.ts @@ -993,7 +993,7 @@ export default [ }, { internalType: 'uint256', - name: 'blockMaxVerificationsPerTx', + name: 'maxBlocksToVerifyPerProposal', type: 'uint256', }, { diff --git a/packages/protocol/contracts/L1/TaikoData.sol b/packages/protocol/contracts/L1/TaikoData.sol index a2c21c5435..39df2607c3 100644 --- a/packages/protocol/contracts/L1/TaikoData.sol +++ b/packages/protocol/contracts/L1/TaikoData.sol @@ -26,9 +26,8 @@ library TaikoData { uint64 blockMaxProposals; // Size of the block ring buffer, allowing extra space for proposals. uint64 blockRingBufferSize; - // The maximum number of verifications allowed per transaction in a - // block. - uint64 blockMaxVerificationsPerTx; + // The maximum number of verifications allowed when a block is proposed. + uint64 maxBlocksToVerifyPerProposal; // The maximum gas limit allowed for a block. uint32 blockMaxGasLimit; // The base gas for processing a block. diff --git a/packages/protocol/contracts/L1/TaikoL1.sol b/packages/protocol/contracts/L1/TaikoL1.sol index 57329c7849..74120d1cf6 100644 --- a/packages/protocol/contracts/L1/TaikoL1.sol +++ b/packages/protocol/contracts/L1/TaikoL1.sol @@ -92,12 +92,12 @@ contract TaikoL1 is assignment: abi.decode(assignment, (TaikoData.ProverAssignment)), txList: txList }); - if (config.blockMaxVerificationsPerTx > 0) { + if (config.maxBlocksToVerifyPerProposal > 0) { LibVerifying.verifyBlocks({ state: state, config: config, resolver: AddressResolver(this), - maxBlocks: config.blockMaxVerificationsPerTx + maxBlocksToVerify: config.maxBlocksToVerifyPerProposal }); } } @@ -114,32 +114,32 @@ contract TaikoL1 is nonReentrant { TaikoData.Config memory config = getConfig(); - LibProving.proveBlock({ + uint8 maxBlocksToVerify = LibProving.proveBlock({ state: state, config: config, resolver: AddressResolver(this), blockId: blockId, evidence: abi.decode(input, (TaikoData.BlockEvidence)) }); - if (config.blockMaxVerificationsPerTx > 0) { + if (maxBlocksToVerify > 0) { LibVerifying.verifyBlocks({ state: state, config: config, resolver: AddressResolver(this), - maxBlocks: config.blockMaxVerificationsPerTx + maxBlocksToVerify: maxBlocksToVerify }); } } /// @notice Verifies up to N blocks. - /// @param maxBlocks Max number of blocks to verify. - function verifyBlocks(uint64 maxBlocks) external nonReentrant { - if (maxBlocks == 0) revert L1_INVALID_PARAM(); + /// @param maxBlocksToVerify Max number of blocks to verify. + function verifyBlocks(uint64 maxBlocksToVerify) external nonReentrant { + if (maxBlocksToVerify == 0) revert L1_INVALID_PARAM(); LibVerifying.verifyBlocks({ state: state, config: getConfig(), resolver: AddressResolver(this), - maxBlocks: maxBlocks + maxBlocksToVerify: maxBlocksToVerify }); } @@ -313,7 +313,7 @@ contract TaikoL1 is blockRingBufferSize: 403_210, // This number is calculated from blockMaxProposals to make the // maximum value of the multiplier close to 20.0 - blockMaxVerificationsPerTx: 10, + maxBlocksToVerifyPerProposal: 10, blockMaxGasLimit: 8_000_000, blockFeeBaseGas: 20_000, blockMaxTxListBytes: 120_000, diff --git a/packages/protocol/contracts/L1/libs/LibProving.sol b/packages/protocol/contracts/L1/libs/LibProving.sol index 31f1638430..25d79b3e2c 100644 --- a/packages/protocol/contracts/L1/libs/LibProving.sol +++ b/packages/protocol/contracts/L1/libs/LibProving.sol @@ -60,6 +60,7 @@ library LibProving { TaikoData.BlockEvidence memory evidence ) internal + returns (uint8 maxBlocksToVerify) { // Make sure parentHash is not zero if (evidence.parentHash == 0) revert L1_INVALID_EVIDENCE(); @@ -200,6 +201,8 @@ library LibProving { } } + maxBlocksToVerify = tier.maxBlocksToVerify; + if (tier.contestBond == 0) { // When contestBond is zero for the current tier, it signifies // it's the top tier. In this case, it can overwrite existing diff --git a/packages/protocol/contracts/L1/libs/LibVerifying.sol b/packages/protocol/contracts/L1/libs/LibVerifying.sol index 19661a10a2..d5734e2908 100644 --- a/packages/protocol/contracts/L1/libs/LibVerifying.sol +++ b/packages/protocol/contracts/L1/libs/LibVerifying.sol @@ -103,7 +103,7 @@ library LibVerifying { TaikoData.State storage state, TaikoData.Config memory config, AddressResolver resolver, - uint64 maxBlocks + uint64 maxBlocksToVerify ) internal { @@ -137,7 +137,7 @@ library LibVerifying { unchecked { ++blockId; - while (blockId < b.numBlocks && processed < maxBlocks) { + while (blockId < b.numBlocks && processed < maxBlocksToVerify) { slot = blockId % config.blockRingBufferSize; blk = state.blocks[slot]; diff --git a/packages/protocol/contracts/L1/tiers/ITierProvider.sol b/packages/protocol/contracts/L1/tiers/ITierProvider.sol index 9b4eee00f3..2004fe42c3 100644 --- a/packages/protocol/contracts/L1/tiers/ITierProvider.sol +++ b/packages/protocol/contracts/L1/tiers/ITierProvider.sol @@ -15,6 +15,7 @@ interface ITierProvider { uint96 contestBond; uint24 cooldownWindow; uint16 provingWindow; + uint8 maxBlocksToVerify; } /// @dev Retrieves the configuration for a specified tier. diff --git a/packages/protocol/contracts/L1/tiers/OptimisticRollupConfigProvider.sol b/packages/protocol/contracts/L1/tiers/OptimisticRollupConfigProvider.sol index 20f5b405bb..da4d12e608 100644 --- a/packages/protocol/contracts/L1/tiers/OptimisticRollupConfigProvider.sol +++ b/packages/protocol/contracts/L1/tiers/OptimisticRollupConfigProvider.sol @@ -24,7 +24,8 @@ contract OptimisticRollupConfigProvider is ITierProvider { validityBond: 100_000 ether, // TKO contestBond: 100_000 ether, // TKO cooldownWindow: 4 hours, - provingWindow: 20 minutes + provingWindow: 20 minutes, + maxBlocksToVerify: 16 }); } @@ -34,7 +35,8 @@ contract OptimisticRollupConfigProvider is ITierProvider { validityBond: 50_000 ether, // TKO contestBond: 50_000 ether, // TKO cooldownWindow: 3 hours, - provingWindow: 60 minutes + provingWindow: 60 minutes, + maxBlocksToVerify: 12 }); } @@ -44,7 +46,8 @@ contract OptimisticRollupConfigProvider is ITierProvider { validityBond: 10_000 ether, // TKO contestBond: 10_000 ether, // TKO cooldownWindow: 2 hours, - provingWindow: 90 minutes + provingWindow: 90 minutes, + maxBlocksToVerify: 8 }); } @@ -54,7 +57,8 @@ contract OptimisticRollupConfigProvider is ITierProvider { validityBond: 0, contestBond: 0, // not contestable cooldownWindow: 1 hours, - provingWindow: 120 minutes + provingWindow: 120 minutes, + maxBlocksToVerify: 0 }); } diff --git a/packages/protocol/contracts/L1/tiers/ValidityRollupConfigProvider.sol b/packages/protocol/contracts/L1/tiers/ValidityRollupConfigProvider.sol index afd43d05bd..9aad14d6ad 100644 --- a/packages/protocol/contracts/L1/tiers/ValidityRollupConfigProvider.sol +++ b/packages/protocol/contracts/L1/tiers/ValidityRollupConfigProvider.sol @@ -24,7 +24,8 @@ contract ValidityRollupConfigProvider is ITierProvider { validityBond: 50_000 ether, // TKO contestBond: 50_000 ether, // TKO cooldownWindow: 3 hours, - provingWindow: 60 minutes + provingWindow: 60 minutes, + maxBlocksToVerify: 12 }); } @@ -34,7 +35,8 @@ contract ValidityRollupConfigProvider is ITierProvider { validityBond: 10_000 ether, // TKO contestBond: 10_000 ether, // TKO cooldownWindow: 2 hours, - provingWindow: 90 minutes + provingWindow: 90 minutes, + maxBlocksToVerify: 8 }); } @@ -44,7 +46,8 @@ contract ValidityRollupConfigProvider is ITierProvider { validityBond: 0, contestBond: 0, // not contestable cooldownWindow: 1 hours, - provingWindow: 120 minutes + provingWindow: 120 minutes, + maxBlocksToVerify: 0 }); } diff --git a/packages/protocol/contracts/L1/tiers/ZKRollupConfigProvider.sol b/packages/protocol/contracts/L1/tiers/ZKRollupConfigProvider.sol index 0f2ebe59a8..07d39da4da 100644 --- a/packages/protocol/contracts/L1/tiers/ZKRollupConfigProvider.sol +++ b/packages/protocol/contracts/L1/tiers/ZKRollupConfigProvider.sol @@ -24,7 +24,8 @@ contract ZKRollupConfigProvider is ITierProvider { validityBond: 10_000 ether, // TKO contestBond: 10_000 ether, // TKO cooldownWindow: 2 hours, - provingWindow: 90 minutes + provingWindow: 90 minutes, + maxBlocksToVerify: 8 }); } @@ -34,7 +35,8 @@ contract ZKRollupConfigProvider is ITierProvider { validityBond: 0, contestBond: 0, // not contestable cooldownWindow: 1 hours, - provingWindow: 120 minutes + provingWindow: 120 minutes, + maxBlocksToVerify: 0 }); } diff --git a/packages/protocol/test/L1/TaikoL1.t.sol b/packages/protocol/test/L1/TaikoL1.t.sol index 7abb02d6ae..268dbdba02 100644 --- a/packages/protocol/test/L1/TaikoL1.t.sol +++ b/packages/protocol/test/L1/TaikoL1.t.sol @@ -21,7 +21,7 @@ contract TaikoL1_NoCooldown is TaikoL1 { { config = TaikoL1.getConfig(); - config.blockMaxVerificationsPerTx = 0; + config.maxBlocksToVerifyPerProposal = 0; config.blockMaxProposals = 10; config.blockRingBufferSize = 12; config.livenessBond = 1e18; // 1 Taiko token diff --git a/packages/protocol/test/L1/TaikoL1LibProvingWithTiers.t.sol b/packages/protocol/test/L1/TaikoL1LibProvingWithTiers.t.sol index 633467e6cb..849df91fb9 100644 --- a/packages/protocol/test/L1/TaikoL1LibProvingWithTiers.t.sol +++ b/packages/protocol/test/L1/TaikoL1LibProvingWithTiers.t.sol @@ -26,7 +26,7 @@ contract TaikoL1Tiers is TaikoL1 { { config = TaikoL1.getConfig(); - config.blockMaxVerificationsPerTx = 0; + config.maxBlocksToVerifyPerProposal = 0; config.blockMaxProposals = 10; config.blockRingBufferSize = 12; config.livenessBond = 1e18; // 1 Taiko token diff --git a/packages/relayer/TaikoL1.json b/packages/relayer/TaikoL1.json index da3db6acd0..60f46b34c0 100644 --- a/packages/relayer/TaikoL1.json +++ b/packages/relayer/TaikoL1.json @@ -1304,7 +1304,7 @@ }, { "internalType": "uint64", - "name": "blockMaxVerificationsPerTx", + "name": "maxBlocksToVerifyPerProposal", "type": "uint64" }, { diff --git a/packages/relayer/bindings/taikol1/TaikoL1.go b/packages/relayer/bindings/taikol1/TaikoL1.go index 9b93d64ce5..09838474c5 100644 --- a/packages/relayer/bindings/taikol1/TaikoL1.go +++ b/packages/relayer/bindings/taikol1/TaikoL1.go @@ -136,7 +136,7 @@ type TaikoDataTransition struct { // TaikoL1MetaData contains all meta data concerning the TaikoL1 contract. var TaikoL1MetaData = &bind.MetaData{ - ABI: "[{\"inputs\":[],\"name\":\"L1_ALREADY_CONTESTED\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"L1_ALREADY_CONTESTED\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"L1_ALREADY_PROVED\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"L1_ALREADY_PROVED\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"L1_ASSIGNED_PROVER_NOT_ALLOWED\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"L1_ASSIGNED_PROVER_NOT_ALLOWED\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"L1_ASSIGNMENT_EXPIRED\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"L1_ASSIGNMENT_EXPIRED\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"L1_ASSIGNMENT_INSUFFICIENT_FEE\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"L1_ASSIGNMENT_INSUFFICIENT_FEE\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"L1_ASSIGNMENT_INVALID_PARAMS\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"L1_ASSIGNMENT_INVALID_PARAMS\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"L1_ASSIGNMENT_INVALID_SIG\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"L1_ASSIGNMENT_INVALID_SIG\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"L1_BLOCK_MISMATCH\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"L1_BLOCK_MISMATCH\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"L1_BLOCK_MISMATCH\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"L1_BLOCK_MISMATCH\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"L1_INSUFFICIENT_TOKEN\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"L1_INVALID_ADDRESS\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"L1_INVALID_ADDRESS\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"L1_INVALID_BLOCK_ID\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"L1_INVALID_BLOCK_ID\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"L1_INVALID_BLOCK_ID\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"L1_INVALID_CONFIG\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"L1_INVALID_CONFIG\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"L1_INVALID_ETH_DEPOSIT\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"L1_INVALID_ETH_DEPOSIT\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"L1_INVALID_EVIDENCE\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"L1_INVALID_EVIDENCE\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"L1_INVALID_METADATA\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"L1_INVALID_PARAM\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"L1_INVALID_PROOF\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"L1_INVALID_PROPOSER\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"L1_INVALID_PROVER\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"L1_INVALID_PROVER_SIG\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"L1_INVALID_TIER\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"L1_INVALID_TIER\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"L1_NOT_ASSIGNED_PROVER\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"L1_NOT_ASSIGNED_PROVER\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"L1_TIER_NOT_FOUND\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"L1_TIER_NOT_FOUND\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"L1_TOO_MANY_BLOCKS\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"L1_TOO_MANY_BLOCKS\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"L1_TRANSITION_ID_ZERO\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"L1_TRANSITION_ID_ZERO\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"L1_TRANSITION_NOT_FOUND\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"L1_TRANSITION_NOT_FOUND\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"L1_TXLIST_INVALID_RANGE\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"L1_TXLIST_MISMATCH\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"L1_TXLIST_MISMATCH\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"L1_TXLIST_NOT_FOUND\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"L1_TXLIST_TOO_LARGE\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"L1_TXLIST_TOO_LARGE\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"L1_UNAUTHORIZED\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"L1_UNAUTHORIZED\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"L1_UNEXPECTED_TRANSITION_ID\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"L1_UNEXPECTED_TRANSITION_ID\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"L1_UNEXPECTED_TRANSITION_TIER\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"L1_UNEXPECTED_TRANSITION_TIER\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"RESOLVER_DENIED\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"RESOLVER_INVALID_ADDR\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"chainId\",\"type\":\"uint256\"},{\"internalType\":\"bytes32\",\"name\":\"name\",\"type\":\"bytes32\"}],\"name\":\"RESOLVER_ZERO_ADDR\",\"type\":\"error\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"addressManager\",\"type\":\"address\"}],\"name\":\"AddressManagerChanged\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"blockId\",\"type\":\"uint256\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"assignedProver\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint96\",\"name\":\"livenessBond\",\"type\":\"uint96\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"proverFee\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"reward\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint16\",\"name\":\"minTier\",\"type\":\"uint16\"},{\"components\":[{\"internalType\":\"bytes32\",\"name\":\"l1Hash\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"difficulty\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"txListHash\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"extraData\",\"type\":\"bytes32\"},{\"internalType\":\"uint64\",\"name\":\"id\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"timestamp\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"l1Height\",\"type\":\"uint64\"},{\"internalType\":\"uint32\",\"name\":\"gasLimit\",\"type\":\"uint32\"},{\"internalType\":\"address\",\"name\":\"coinbase\",\"type\":\"address\"},{\"components\":[{\"internalType\":\"address\",\"name\":\"recipient\",\"type\":\"address\"},{\"internalType\":\"uint96\",\"name\":\"amount\",\"type\":\"uint96\"},{\"internalType\":\"uint64\",\"name\":\"id\",\"type\":\"uint64\"}],\"internalType\":\"structTaikoData.EthDeposit[]\",\"name\":\"depositsProcessed\",\"type\":\"tuple[]\"}],\"indexed\":false,\"internalType\":\"structTaikoData.BlockMetadata\",\"name\":\"meta\",\"type\":\"tuple\"}],\"name\":\"BlockProposed\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"blockId\",\"type\":\"uint256\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"assignedProver\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint96\",\"name\":\"livenessBond\",\"type\":\"uint96\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"proverFee\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"reward\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint16\",\"name\":\"minTier\",\"type\":\"uint16\"},{\"components\":[{\"internalType\":\"bytes32\",\"name\":\"l1Hash\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"difficulty\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"txListHash\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"extraData\",\"type\":\"bytes32\"},{\"internalType\":\"uint64\",\"name\":\"id\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"timestamp\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"l1Height\",\"type\":\"uint64\"},{\"internalType\":\"uint32\",\"name\":\"gasLimit\",\"type\":\"uint32\"},{\"internalType\":\"address\",\"name\":\"coinbase\",\"type\":\"address\"},{\"components\":[{\"internalType\":\"address\",\"name\":\"recipient\",\"type\":\"address\"},{\"internalType\":\"uint96\",\"name\":\"amount\",\"type\":\"uint96\"},{\"internalType\":\"uint64\",\"name\":\"id\",\"type\":\"uint64\"}],\"internalType\":\"structTaikoData.EthDeposit[]\",\"name\":\"depositsProcessed\",\"type\":\"tuple[]\"}],\"indexed\":false,\"internalType\":\"structTaikoData.BlockMetadata\",\"name\":\"meta\",\"type\":\"tuple\"}],\"name\":\"BlockProposed\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"blockId\",\"type\":\"uint256\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"assignedProver\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"prover\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"blockHash\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"signalRoot\",\"type\":\"bytes32\"}],\"name\":\"BlockVerified\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"blockId\",\"type\":\"uint256\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"assignedProver\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"prover\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"blockHash\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"signalRoot\",\"type\":\"bytes32\"}],\"name\":\"BlockVerified\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint64\",\"name\":\"srcHeight\",\"type\":\"uint64\"},{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"blockHash\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"signalRoot\",\"type\":\"bytes32\"}],\"name\":\"CrossChainSynced\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint64\",\"name\":\"srcHeight\",\"type\":\"uint64\"},{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"blockHash\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"signalRoot\",\"type\":\"bytes32\"}],\"name\":\"CrossChainSynced\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"components\":[{\"internalType\":\"address\",\"name\":\"recipient\",\"type\":\"address\"},{\"internalType\":\"uint96\",\"name\":\"amount\",\"type\":\"uint96\"},{\"internalType\":\"uint64\",\"name\":\"id\",\"type\":\"uint64\"}],\"indexed\":false,\"internalType\":\"structTaikoData.EthDeposit\",\"name\":\"deposit\",\"type\":\"tuple\"}],\"name\":\"EthDeposited\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"components\":[{\"internalType\":\"address\",\"name\":\"recipient\",\"type\":\"address\"},{\"internalType\":\"uint96\",\"name\":\"amount\",\"type\":\"uint96\"},{\"internalType\":\"uint64\",\"name\":\"id\",\"type\":\"uint64\"}],\"indexed\":false,\"internalType\":\"structTaikoData.EthDeposit\",\"name\":\"deposit\",\"type\":\"tuple\"}],\"name\":\"EthDeposited\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint8\",\"name\":\"version\",\"type\":\"uint8\"}],\"name\":\"Initialized\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"previousOwner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"newOwner\",\"type\":\"address\"}],\"name\":\"OwnershipTransferred\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"bool\",\"name\":\"minted\",\"type\":\"bool\"}],\"name\":\"TokenCredited\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"bool\",\"name\":\"minted\",\"type\":\"bool\"}],\"name\":\"TokenCredited\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"bool\",\"name\":\"fromLocalBalance\",\"type\":\"bool\"}],\"name\":\"TokenDebited\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"bool\",\"name\":\"fromLocalBalance\",\"type\":\"bool\"}],\"name\":\"TokenDebited\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"TokenDeposited\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"TokenDeposited\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"TokenWithdrawn\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"TokenWithdrawn\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"TokenWithdrawnByOwner\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"TokenWithdrawnByOwner\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"blockId\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"parentHash\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"blockHash\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"signalRoot\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"contester\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint96\",\"name\":\"contestBond\",\"type\":\"uint96\"},{\"indexed\":false,\"internalType\":\"uint16\",\"name\":\"tier\",\"type\":\"uint16\"}],\"name\":\"TransitionContested\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"blockId\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"parentHash\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"blockHash\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"signalRoot\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"contester\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint96\",\"name\":\"contestBond\",\"type\":\"uint96\"},{\"indexed\":false,\"internalType\":\"uint16\",\"name\":\"tier\",\"type\":\"uint16\"}],\"name\":\"TransitionContested\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"blockId\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"parentHash\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"blockHash\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"signalRoot\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"prover\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint96\",\"name\":\"validityBond\",\"type\":\"uint96\"},{\"indexed\":false,\"internalType\":\"uint16\",\"name\":\"tier\",\"type\":\"uint16\"}],\"name\":\"TransitionProved\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"blockId\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"parentHash\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"blockHash\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"signalRoot\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"prover\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint96\",\"name\":\"validityBond\",\"type\":\"uint96\"},{\"indexed\":false,\"internalType\":\"uint16\",\"name\":\"tier\",\"type\":\"uint16\"}],\"name\":\"TransitionProved\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"addressManager\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"canDepositEthToL2\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"recipient\",\"type\":\"address\"}],\"name\":\"depositEtherToL2\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"depositTaikoToken\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"blockId\",\"type\":\"uint64\"}],\"name\":\"getBlock\",\"outputs\":[{\"components\":[{\"internalType\":\"bytes32\",\"name\":\"metaHash\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"assignedProver\",\"type\":\"address\"},{\"internalType\":\"uint96\",\"name\":\"livenessBond\",\"type\":\"uint96\"},{\"internalType\":\"uint64\",\"name\":\"blockId\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"proposedAt\",\"type\":\"uint64\"},{\"internalType\":\"uint32\",\"name\":\"nextTransitionId\",\"type\":\"uint32\"},{\"internalType\":\"uint32\",\"name\":\"verifiedTransitionId\",\"type\":\"uint32\"},{\"internalType\":\"uint16\",\"name\":\"minTier\",\"type\":\"uint16\"},{\"internalType\":\"bytes32[7]\",\"name\":\"__reserved\",\"type\":\"bytes32[7]\"}],\"internalType\":\"structTaikoData.Block\",\"name\":\"blk\",\"type\":\"tuple\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getConfig\",\"outputs\":[{\"components\":[{\"internalType\":\"uint256\",\"name\":\"chainId\",\"type\":\"uint256\"},{\"internalType\":\"bool\",\"name\":\"relaySignalRoot\",\"type\":\"bool\"},{\"internalType\":\"uint64\",\"name\":\"blockMaxProposals\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"blockRingBufferSize\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"blockMaxVerificationsPerTx\",\"type\":\"uint64\"},{\"internalType\":\"uint32\",\"name\":\"blockMaxGasLimit\",\"type\":\"uint32\"},{\"internalType\":\"uint32\",\"name\":\"blockFeeBaseGas\",\"type\":\"uint32\"},{\"internalType\":\"uint24\",\"name\":\"blockMaxTxListBytes\",\"type\":\"uint24\"},{\"internalType\":\"uint256\",\"name\":\"proposerRewardPerSecond\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"proposerRewardMax\",\"type\":\"uint256\"},{\"internalType\":\"uint96\",\"name\":\"livenessBond\",\"type\":\"uint96\"},{\"internalType\":\"uint256\",\"name\":\"ethDepositRingBufferSize\",\"type\":\"uint256\"},{\"internalType\":\"uint64\",\"name\":\"ethDepositMinCountPerBlock\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"ethDepositMaxCountPerBlock\",\"type\":\"uint64\"},{\"internalType\":\"uint96\",\"name\":\"ethDepositMinAmount\",\"type\":\"uint96\"},{\"internalType\":\"uint96\",\"name\":\"ethDepositMaxAmount\",\"type\":\"uint96\"},{\"internalType\":\"uint256\",\"name\":\"ethDepositGas\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"ethDepositMaxFee\",\"type\":\"uint256\"}],\"internalType\":\"structTaikoData.Config\",\"name\":\"\",\"type\":\"tuple\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"blockId\",\"type\":\"uint64\"}],\"name\":\"getCrossChainBlockHash\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"blockId\",\"type\":\"uint64\"}],\"name\":\"getCrossChainSignalRoot\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"rand\",\"type\":\"uint256\"}],\"name\":\"getMinTier\",\"outputs\":[{\"internalType\":\"uint16\",\"name\":\"\",\"type\":\"uint16\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getStateVariables\",\"outputs\":[{\"components\":[{\"internalType\":\"uint64\",\"name\":\"genesisHeight\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"genesisTimestamp\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"nextEthDepositToProcess\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"numEthDeposits\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"numBlocks\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"lastVerifiedBlockId\",\"type\":\"uint64\"}],\"internalType\":\"structTaikoData.StateVariables\",\"name\":\"\",\"type\":\"tuple\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"user\",\"type\":\"address\"}],\"name\":\"getTaikoTokenBalance\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint16\",\"name\":\"tierId\",\"type\":\"uint16\"}],\"name\":\"getTier\",\"outputs\":[{\"components\":[{\"internalType\":\"bytes32\",\"name\":\"verifierName\",\"type\":\"bytes32\"},{\"internalType\":\"uint96\",\"name\":\"validityBond\",\"type\":\"uint96\"},{\"internalType\":\"uint96\",\"name\":\"contestBond\",\"type\":\"uint96\"},{\"internalType\":\"uint24\",\"name\":\"cooldownWindow\",\"type\":\"uint24\"},{\"internalType\":\"uint16\",\"name\":\"provingWindow\",\"type\":\"uint16\"}],\"internalType\":\"structITierProvider.Tier\",\"name\":\"\",\"type\":\"tuple\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getTierIds\",\"outputs\":[{\"internalType\":\"uint16[]\",\"name\":\"\",\"type\":\"uint16[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"blockId\",\"type\":\"uint64\"},{\"internalType\":\"bytes32\",\"name\":\"parentHash\",\"type\":\"bytes32\"}],\"name\":\"getTransition\",\"outputs\":[{\"components\":[{\"internalType\":\"bytes32\",\"name\":\"key\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"blockHash\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"signalRoot\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"prover\",\"type\":\"address\"},{\"internalType\":\"uint96\",\"name\":\"validityBond\",\"type\":\"uint96\"},{\"internalType\":\"address\",\"name\":\"contester\",\"type\":\"address\"},{\"internalType\":\"uint96\",\"name\":\"contestBond\",\"type\":\"uint96\"},{\"internalType\":\"uint64\",\"name\":\"timestamp\",\"type\":\"uint64\"},{\"internalType\":\"uint16\",\"name\":\"tier\",\"type\":\"uint16\"},{\"internalType\":\"bytes32[4]\",\"name\":\"__reserved\",\"type\":\"bytes32[4]\"}],\"internalType\":\"structTaikoData.Transition\",\"name\":\"\",\"type\":\"tuple\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_addressManager\",\"type\":\"address\"},{\"internalType\":\"bytes32\",\"name\":\"_genesisBlockHash\",\"type\":\"bytes32\"}],\"name\":\"init\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"owner\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"ownerWithdrawTaikoToken\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"txListHash\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"extraData\",\"type\":\"bytes32\"},{\"internalType\":\"bytes\",\"name\":\"assignment\",\"type\":\"bytes\"},{\"internalType\":\"bytes\",\"name\":\"txList\",\"type\":\"bytes\"}],\"name\":\"proposeBlock\",\"outputs\":[{\"components\":[{\"internalType\":\"bytes32\",\"name\":\"l1Hash\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"difficulty\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"txListHash\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"extraData\",\"type\":\"bytes32\"},{\"internalType\":\"uint64\",\"name\":\"id\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"timestamp\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"l1Height\",\"type\":\"uint64\"},{\"internalType\":\"uint32\",\"name\":\"gasLimit\",\"type\":\"uint32\"},{\"internalType\":\"address\",\"name\":\"coinbase\",\"type\":\"address\"},{\"components\":[{\"internalType\":\"address\",\"name\":\"recipient\",\"type\":\"address\"},{\"internalType\":\"uint96\",\"name\":\"amount\",\"type\":\"uint96\"},{\"internalType\":\"uint64\",\"name\":\"id\",\"type\":\"uint64\"}],\"internalType\":\"structTaikoData.EthDeposit[]\",\"name\":\"depositsProcessed\",\"type\":\"tuple[]\"}],\"internalType\":\"structTaikoData.BlockMetadata\",\"name\":\"meta\",\"type\":\"tuple\"}],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"blockId\",\"type\":\"uint64\"},{\"internalType\":\"bytes\",\"name\":\"input\",\"type\":\"bytes\"}],\"name\":\"proveBlock\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"renounceOwnership\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"chainId\",\"type\":\"uint256\"},{\"internalType\":\"bytes32\",\"name\":\"name\",\"type\":\"bytes32\"},{\"internalType\":\"bool\",\"name\":\"allowZeroAddress\",\"type\":\"bool\"}],\"name\":\"resolve\",\"outputs\":[{\"internalType\":\"addresspayable\",\"name\":\"addr\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"name\",\"type\":\"bytes32\"},{\"internalType\":\"bool\",\"name\":\"allowZeroAddress\",\"type\":\"bool\"}],\"name\":\"resolve\",\"outputs\":[{\"internalType\":\"addresspayable\",\"name\":\"addr\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"newAddressManager\",\"type\":\"address\"}],\"name\":\"setAddressManager\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"state\",\"outputs\":[{\"components\":[{\"internalType\":\"uint64\",\"name\":\"genesisHeight\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"genesisTimestamp\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"numEthDeposits\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"nextEthDepositToProcess\",\"type\":\"uint64\"}],\"internalType\":\"structTaikoData.SlotA\",\"name\":\"slotA\",\"type\":\"tuple\"},{\"components\":[{\"internalType\":\"uint64\",\"name\":\"numBlocks\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"nextEthDepositToProcess\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"lastVerifiedAt\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"lastVerifiedBlockId\",\"type\":\"uint64\"}],\"internalType\":\"structTaikoData.SlotB\",\"name\":\"slotB\",\"type\":\"tuple\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"newOwner\",\"type\":\"address\"}],\"name\":\"transferOwnership\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"maxBlocks\",\"type\":\"uint64\"}],\"name\":\"verifyBlocks\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"withdrawTaikoToken\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"stateMutability\":\"payable\",\"type\":\"receive\"}]", + ABI: "[{\"inputs\":[],\"name\":\"L1_ALREADY_CONTESTED\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"L1_ALREADY_CONTESTED\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"L1_ALREADY_PROVED\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"L1_ALREADY_PROVED\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"L1_ASSIGNED_PROVER_NOT_ALLOWED\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"L1_ASSIGNED_PROVER_NOT_ALLOWED\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"L1_ASSIGNMENT_EXPIRED\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"L1_ASSIGNMENT_EXPIRED\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"L1_ASSIGNMENT_INSUFFICIENT_FEE\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"L1_ASSIGNMENT_INSUFFICIENT_FEE\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"L1_ASSIGNMENT_INVALID_PARAMS\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"L1_ASSIGNMENT_INVALID_PARAMS\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"L1_ASSIGNMENT_INVALID_SIG\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"L1_ASSIGNMENT_INVALID_SIG\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"L1_BLOCK_MISMATCH\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"L1_BLOCK_MISMATCH\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"L1_BLOCK_MISMATCH\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"L1_BLOCK_MISMATCH\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"L1_INSUFFICIENT_TOKEN\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"L1_INVALID_ADDRESS\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"L1_INVALID_ADDRESS\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"L1_INVALID_BLOCK_ID\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"L1_INVALID_BLOCK_ID\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"L1_INVALID_BLOCK_ID\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"L1_INVALID_CONFIG\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"L1_INVALID_CONFIG\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"L1_INVALID_ETH_DEPOSIT\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"L1_INVALID_ETH_DEPOSIT\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"L1_INVALID_EVIDENCE\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"L1_INVALID_EVIDENCE\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"L1_INVALID_METADATA\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"L1_INVALID_PARAM\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"L1_INVALID_PROOF\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"L1_INVALID_PROPOSER\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"L1_INVALID_PROVER\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"L1_INVALID_PROVER_SIG\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"L1_INVALID_TIER\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"L1_INVALID_TIER\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"L1_NOT_ASSIGNED_PROVER\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"L1_NOT_ASSIGNED_PROVER\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"L1_TIER_NOT_FOUND\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"L1_TIER_NOT_FOUND\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"L1_TOO_MANY_BLOCKS\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"L1_TOO_MANY_BLOCKS\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"L1_TRANSITION_ID_ZERO\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"L1_TRANSITION_ID_ZERO\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"L1_TRANSITION_NOT_FOUND\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"L1_TRANSITION_NOT_FOUND\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"L1_TXLIST_INVALID_RANGE\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"L1_TXLIST_MISMATCH\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"L1_TXLIST_MISMATCH\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"L1_TXLIST_NOT_FOUND\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"L1_TXLIST_TOO_LARGE\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"L1_TXLIST_TOO_LARGE\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"L1_UNAUTHORIZED\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"L1_UNAUTHORIZED\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"L1_UNEXPECTED_TRANSITION_ID\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"L1_UNEXPECTED_TRANSITION_ID\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"L1_UNEXPECTED_TRANSITION_TIER\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"L1_UNEXPECTED_TRANSITION_TIER\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"RESOLVER_DENIED\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"RESOLVER_INVALID_ADDR\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"chainId\",\"type\":\"uint256\"},{\"internalType\":\"bytes32\",\"name\":\"name\",\"type\":\"bytes32\"}],\"name\":\"RESOLVER_ZERO_ADDR\",\"type\":\"error\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"addressManager\",\"type\":\"address\"}],\"name\":\"AddressManagerChanged\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"blockId\",\"type\":\"uint256\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"assignedProver\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint96\",\"name\":\"livenessBond\",\"type\":\"uint96\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"proverFee\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"reward\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint16\",\"name\":\"minTier\",\"type\":\"uint16\"},{\"components\":[{\"internalType\":\"bytes32\",\"name\":\"l1Hash\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"difficulty\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"txListHash\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"extraData\",\"type\":\"bytes32\"},{\"internalType\":\"uint64\",\"name\":\"id\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"timestamp\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"l1Height\",\"type\":\"uint64\"},{\"internalType\":\"uint32\",\"name\":\"gasLimit\",\"type\":\"uint32\"},{\"internalType\":\"address\",\"name\":\"coinbase\",\"type\":\"address\"},{\"components\":[{\"internalType\":\"address\",\"name\":\"recipient\",\"type\":\"address\"},{\"internalType\":\"uint96\",\"name\":\"amount\",\"type\":\"uint96\"},{\"internalType\":\"uint64\",\"name\":\"id\",\"type\":\"uint64\"}],\"internalType\":\"structTaikoData.EthDeposit[]\",\"name\":\"depositsProcessed\",\"type\":\"tuple[]\"}],\"indexed\":false,\"internalType\":\"structTaikoData.BlockMetadata\",\"name\":\"meta\",\"type\":\"tuple\"}],\"name\":\"BlockProposed\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"blockId\",\"type\":\"uint256\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"assignedProver\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint96\",\"name\":\"livenessBond\",\"type\":\"uint96\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"proverFee\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"reward\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint16\",\"name\":\"minTier\",\"type\":\"uint16\"},{\"components\":[{\"internalType\":\"bytes32\",\"name\":\"l1Hash\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"difficulty\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"txListHash\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"extraData\",\"type\":\"bytes32\"},{\"internalType\":\"uint64\",\"name\":\"id\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"timestamp\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"l1Height\",\"type\":\"uint64\"},{\"internalType\":\"uint32\",\"name\":\"gasLimit\",\"type\":\"uint32\"},{\"internalType\":\"address\",\"name\":\"coinbase\",\"type\":\"address\"},{\"components\":[{\"internalType\":\"address\",\"name\":\"recipient\",\"type\":\"address\"},{\"internalType\":\"uint96\",\"name\":\"amount\",\"type\":\"uint96\"},{\"internalType\":\"uint64\",\"name\":\"id\",\"type\":\"uint64\"}],\"internalType\":\"structTaikoData.EthDeposit[]\",\"name\":\"depositsProcessed\",\"type\":\"tuple[]\"}],\"indexed\":false,\"internalType\":\"structTaikoData.BlockMetadata\",\"name\":\"meta\",\"type\":\"tuple\"}],\"name\":\"BlockProposed\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"blockId\",\"type\":\"uint256\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"assignedProver\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"prover\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"blockHash\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"signalRoot\",\"type\":\"bytes32\"}],\"name\":\"BlockVerified\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"blockId\",\"type\":\"uint256\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"assignedProver\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"prover\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"blockHash\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"signalRoot\",\"type\":\"bytes32\"}],\"name\":\"BlockVerified\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint64\",\"name\":\"srcHeight\",\"type\":\"uint64\"},{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"blockHash\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"signalRoot\",\"type\":\"bytes32\"}],\"name\":\"CrossChainSynced\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint64\",\"name\":\"srcHeight\",\"type\":\"uint64\"},{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"blockHash\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"signalRoot\",\"type\":\"bytes32\"}],\"name\":\"CrossChainSynced\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"components\":[{\"internalType\":\"address\",\"name\":\"recipient\",\"type\":\"address\"},{\"internalType\":\"uint96\",\"name\":\"amount\",\"type\":\"uint96\"},{\"internalType\":\"uint64\",\"name\":\"id\",\"type\":\"uint64\"}],\"indexed\":false,\"internalType\":\"structTaikoData.EthDeposit\",\"name\":\"deposit\",\"type\":\"tuple\"}],\"name\":\"EthDeposited\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"components\":[{\"internalType\":\"address\",\"name\":\"recipient\",\"type\":\"address\"},{\"internalType\":\"uint96\",\"name\":\"amount\",\"type\":\"uint96\"},{\"internalType\":\"uint64\",\"name\":\"id\",\"type\":\"uint64\"}],\"indexed\":false,\"internalType\":\"structTaikoData.EthDeposit\",\"name\":\"deposit\",\"type\":\"tuple\"}],\"name\":\"EthDeposited\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint8\",\"name\":\"version\",\"type\":\"uint8\"}],\"name\":\"Initialized\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"previousOwner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"newOwner\",\"type\":\"address\"}],\"name\":\"OwnershipTransferred\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"bool\",\"name\":\"minted\",\"type\":\"bool\"}],\"name\":\"TokenCredited\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"bool\",\"name\":\"minted\",\"type\":\"bool\"}],\"name\":\"TokenCredited\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"bool\",\"name\":\"fromLocalBalance\",\"type\":\"bool\"}],\"name\":\"TokenDebited\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"bool\",\"name\":\"fromLocalBalance\",\"type\":\"bool\"}],\"name\":\"TokenDebited\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"TokenDeposited\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"TokenDeposited\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"TokenWithdrawn\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"TokenWithdrawn\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"TokenWithdrawnByOwner\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"TokenWithdrawnByOwner\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"blockId\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"parentHash\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"blockHash\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"signalRoot\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"contester\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint96\",\"name\":\"contestBond\",\"type\":\"uint96\"},{\"indexed\":false,\"internalType\":\"uint16\",\"name\":\"tier\",\"type\":\"uint16\"}],\"name\":\"TransitionContested\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"blockId\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"parentHash\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"blockHash\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"signalRoot\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"contester\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint96\",\"name\":\"contestBond\",\"type\":\"uint96\"},{\"indexed\":false,\"internalType\":\"uint16\",\"name\":\"tier\",\"type\":\"uint16\"}],\"name\":\"TransitionContested\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"blockId\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"parentHash\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"blockHash\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"signalRoot\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"prover\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint96\",\"name\":\"validityBond\",\"type\":\"uint96\"},{\"indexed\":false,\"internalType\":\"uint16\",\"name\":\"tier\",\"type\":\"uint16\"}],\"name\":\"TransitionProved\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"blockId\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"parentHash\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"blockHash\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"signalRoot\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"prover\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint96\",\"name\":\"validityBond\",\"type\":\"uint96\"},{\"indexed\":false,\"internalType\":\"uint16\",\"name\":\"tier\",\"type\":\"uint16\"}],\"name\":\"TransitionProved\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"addressManager\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"canDepositEthToL2\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"recipient\",\"type\":\"address\"}],\"name\":\"depositEtherToL2\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"depositTaikoToken\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"blockId\",\"type\":\"uint64\"}],\"name\":\"getBlock\",\"outputs\":[{\"components\":[{\"internalType\":\"bytes32\",\"name\":\"metaHash\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"assignedProver\",\"type\":\"address\"},{\"internalType\":\"uint96\",\"name\":\"livenessBond\",\"type\":\"uint96\"},{\"internalType\":\"uint64\",\"name\":\"blockId\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"proposedAt\",\"type\":\"uint64\"},{\"internalType\":\"uint32\",\"name\":\"nextTransitionId\",\"type\":\"uint32\"},{\"internalType\":\"uint32\",\"name\":\"verifiedTransitionId\",\"type\":\"uint32\"},{\"internalType\":\"uint16\",\"name\":\"minTier\",\"type\":\"uint16\"},{\"internalType\":\"bytes32[7]\",\"name\":\"__reserved\",\"type\":\"bytes32[7]\"}],\"internalType\":\"structTaikoData.Block\",\"name\":\"blk\",\"type\":\"tuple\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getConfig\",\"outputs\":[{\"components\":[{\"internalType\":\"uint256\",\"name\":\"chainId\",\"type\":\"uint256\"},{\"internalType\":\"bool\",\"name\":\"relaySignalRoot\",\"type\":\"bool\"},{\"internalType\":\"uint64\",\"name\":\"blockMaxProposals\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"blockRingBufferSize\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"maxBlocksToVerifyPerProposal\",\"type\":\"uint64\"},{\"internalType\":\"uint32\",\"name\":\"blockMaxGasLimit\",\"type\":\"uint32\"},{\"internalType\":\"uint32\",\"name\":\"blockFeeBaseGas\",\"type\":\"uint32\"},{\"internalType\":\"uint24\",\"name\":\"blockMaxTxListBytes\",\"type\":\"uint24\"},{\"internalType\":\"uint256\",\"name\":\"proposerRewardPerSecond\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"proposerRewardMax\",\"type\":\"uint256\"},{\"internalType\":\"uint96\",\"name\":\"livenessBond\",\"type\":\"uint96\"},{\"internalType\":\"uint256\",\"name\":\"ethDepositRingBufferSize\",\"type\":\"uint256\"},{\"internalType\":\"uint64\",\"name\":\"ethDepositMinCountPerBlock\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"ethDepositMaxCountPerBlock\",\"type\":\"uint64\"},{\"internalType\":\"uint96\",\"name\":\"ethDepositMinAmount\",\"type\":\"uint96\"},{\"internalType\":\"uint96\",\"name\":\"ethDepositMaxAmount\",\"type\":\"uint96\"},{\"internalType\":\"uint256\",\"name\":\"ethDepositGas\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"ethDepositMaxFee\",\"type\":\"uint256\"}],\"internalType\":\"structTaikoData.Config\",\"name\":\"\",\"type\":\"tuple\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"blockId\",\"type\":\"uint64\"}],\"name\":\"getCrossChainBlockHash\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"blockId\",\"type\":\"uint64\"}],\"name\":\"getCrossChainSignalRoot\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"rand\",\"type\":\"uint256\"}],\"name\":\"getMinTier\",\"outputs\":[{\"internalType\":\"uint16\",\"name\":\"\",\"type\":\"uint16\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getStateVariables\",\"outputs\":[{\"components\":[{\"internalType\":\"uint64\",\"name\":\"genesisHeight\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"genesisTimestamp\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"nextEthDepositToProcess\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"numEthDeposits\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"numBlocks\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"lastVerifiedBlockId\",\"type\":\"uint64\"}],\"internalType\":\"structTaikoData.StateVariables\",\"name\":\"\",\"type\":\"tuple\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"user\",\"type\":\"address\"}],\"name\":\"getTaikoTokenBalance\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint16\",\"name\":\"tierId\",\"type\":\"uint16\"}],\"name\":\"getTier\",\"outputs\":[{\"components\":[{\"internalType\":\"bytes32\",\"name\":\"verifierName\",\"type\":\"bytes32\"},{\"internalType\":\"uint96\",\"name\":\"validityBond\",\"type\":\"uint96\"},{\"internalType\":\"uint96\",\"name\":\"contestBond\",\"type\":\"uint96\"},{\"internalType\":\"uint24\",\"name\":\"cooldownWindow\",\"type\":\"uint24\"},{\"internalType\":\"uint16\",\"name\":\"provingWindow\",\"type\":\"uint16\"}],\"internalType\":\"structITierProvider.Tier\",\"name\":\"\",\"type\":\"tuple\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getTierIds\",\"outputs\":[{\"internalType\":\"uint16[]\",\"name\":\"\",\"type\":\"uint16[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"blockId\",\"type\":\"uint64\"},{\"internalType\":\"bytes32\",\"name\":\"parentHash\",\"type\":\"bytes32\"}],\"name\":\"getTransition\",\"outputs\":[{\"components\":[{\"internalType\":\"bytes32\",\"name\":\"key\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"blockHash\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"signalRoot\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"prover\",\"type\":\"address\"},{\"internalType\":\"uint96\",\"name\":\"validityBond\",\"type\":\"uint96\"},{\"internalType\":\"address\",\"name\":\"contester\",\"type\":\"address\"},{\"internalType\":\"uint96\",\"name\":\"contestBond\",\"type\":\"uint96\"},{\"internalType\":\"uint64\",\"name\":\"timestamp\",\"type\":\"uint64\"},{\"internalType\":\"uint16\",\"name\":\"tier\",\"type\":\"uint16\"},{\"internalType\":\"bytes32[4]\",\"name\":\"__reserved\",\"type\":\"bytes32[4]\"}],\"internalType\":\"structTaikoData.Transition\",\"name\":\"\",\"type\":\"tuple\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_addressManager\",\"type\":\"address\"},{\"internalType\":\"bytes32\",\"name\":\"_genesisBlockHash\",\"type\":\"bytes32\"}],\"name\":\"init\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"owner\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"ownerWithdrawTaikoToken\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"txListHash\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"extraData\",\"type\":\"bytes32\"},{\"internalType\":\"bytes\",\"name\":\"assignment\",\"type\":\"bytes\"},{\"internalType\":\"bytes\",\"name\":\"txList\",\"type\":\"bytes\"}],\"name\":\"proposeBlock\",\"outputs\":[{\"components\":[{\"internalType\":\"bytes32\",\"name\":\"l1Hash\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"difficulty\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"txListHash\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"extraData\",\"type\":\"bytes32\"},{\"internalType\":\"uint64\",\"name\":\"id\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"timestamp\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"l1Height\",\"type\":\"uint64\"},{\"internalType\":\"uint32\",\"name\":\"gasLimit\",\"type\":\"uint32\"},{\"internalType\":\"address\",\"name\":\"coinbase\",\"type\":\"address\"},{\"components\":[{\"internalType\":\"address\",\"name\":\"recipient\",\"type\":\"address\"},{\"internalType\":\"uint96\",\"name\":\"amount\",\"type\":\"uint96\"},{\"internalType\":\"uint64\",\"name\":\"id\",\"type\":\"uint64\"}],\"internalType\":\"structTaikoData.EthDeposit[]\",\"name\":\"depositsProcessed\",\"type\":\"tuple[]\"}],\"internalType\":\"structTaikoData.BlockMetadata\",\"name\":\"meta\",\"type\":\"tuple\"}],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"blockId\",\"type\":\"uint64\"},{\"internalType\":\"bytes\",\"name\":\"input\",\"type\":\"bytes\"}],\"name\":\"proveBlock\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"renounceOwnership\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"chainId\",\"type\":\"uint256\"},{\"internalType\":\"bytes32\",\"name\":\"name\",\"type\":\"bytes32\"},{\"internalType\":\"bool\",\"name\":\"allowZeroAddress\",\"type\":\"bool\"}],\"name\":\"resolve\",\"outputs\":[{\"internalType\":\"addresspayable\",\"name\":\"addr\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"name\",\"type\":\"bytes32\"},{\"internalType\":\"bool\",\"name\":\"allowZeroAddress\",\"type\":\"bool\"}],\"name\":\"resolve\",\"outputs\":[{\"internalType\":\"addresspayable\",\"name\":\"addr\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"newAddressManager\",\"type\":\"address\"}],\"name\":\"setAddressManager\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"state\",\"outputs\":[{\"components\":[{\"internalType\":\"uint64\",\"name\":\"genesisHeight\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"genesisTimestamp\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"numEthDeposits\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"nextEthDepositToProcess\",\"type\":\"uint64\"}],\"internalType\":\"structTaikoData.SlotA\",\"name\":\"slotA\",\"type\":\"tuple\"},{\"components\":[{\"internalType\":\"uint64\",\"name\":\"numBlocks\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"nextEthDepositToProcess\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"lastVerifiedAt\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"lastVerifiedBlockId\",\"type\":\"uint64\"}],\"internalType\":\"structTaikoData.SlotB\",\"name\":\"slotB\",\"type\":\"tuple\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"newOwner\",\"type\":\"address\"}],\"name\":\"transferOwnership\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"maxBlocks\",\"type\":\"uint64\"}],\"name\":\"verifyBlocks\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"withdrawTaikoToken\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"stateMutability\":\"payable\",\"type\":\"receive\"}]", } // TaikoL1ABI is the input ABI used to generate the binding from. diff --git a/packages/website/pages/docs/reference/contract-documentation/L1/TaikoData.md b/packages/website/pages/docs/reference/contract-documentation/L1/TaikoData.md index c32a678eb5..d0cac2c73d 100644 --- a/packages/website/pages/docs/reference/contract-documentation/L1/TaikoData.md +++ b/packages/website/pages/docs/reference/contract-documentation/L1/TaikoData.md @@ -17,7 +17,7 @@ struct Config { bool relaySignalRoot; uint64 blockMaxProposals; uint64 blockRingBufferSize; - uint64 blockMaxVerificationsPerTx; + uint64 maxBlocksToVerifyPerProposal; uint32 blockMaxGasLimit; uint32 blockFeeBaseGas; uint24 blockMaxTxListBytes; From 2bcf2bf4b43456484ac3974d7360e5007accd741 Mon Sep 17 00:00:00 2001 From: Daniel Wang <99078276+dantaik@users.noreply.github.com> Date: Tue, 10 Oct 2023 21:37:14 +0800 Subject: [PATCH 46/87] feat(protocol): allow checking config after initialization (#14924) Co-authored-by: Daniel Wang --- packages/protocol/contracts/L1/TaikoL1.sol | 4 ++ .../contracts/L1/libs/LibVerifying.sol | 64 +++++++++++-------- 2 files changed, 41 insertions(+), 27 deletions(-) diff --git a/packages/protocol/contracts/L1/TaikoL1.sol b/packages/protocol/contracts/L1/TaikoL1.sol index 74120d1cf6..40b9c59d8f 100644 --- a/packages/protocol/contracts/L1/TaikoL1.sol +++ b/packages/protocol/contracts/L1/TaikoL1.sol @@ -331,6 +331,10 @@ contract TaikoL1 is ethDepositMaxFee: 1 ether / 10 }); } + + function isConfigValid() public pure returns (bool) { + return LibVerifying.isConfigValid(getConfig()); + } } /// @title ProxiedTaikoL1 diff --git a/packages/protocol/contracts/L1/libs/LibVerifying.sol b/packages/protocol/contracts/L1/libs/LibVerifying.sol index d5734e2908..2ab6d5b0be 100644 --- a/packages/protocol/contracts/L1/libs/LibVerifying.sol +++ b/packages/protocol/contracts/L1/libs/LibVerifying.sol @@ -43,33 +43,7 @@ library LibVerifying { ) internal { - if ( - config.chainId <= 1 // - || config.blockMaxProposals == 1 - || config.blockRingBufferSize <= config.blockMaxProposals + 1 - || config.blockMaxGasLimit == 0 || config.blockMaxTxListBytes == 0 - || config.blockMaxTxListBytes > 128 * 1024 //blob up to 128K - || config.livenessBond == 0 - || config.livenessBond < 10 * config.proposerRewardPerL1Block - || config.ethDepositRingBufferSize <= 1 - || config.ethDepositMinCountPerBlock == 0 - || config.ethDepositMaxCountPerBlock - < config.ethDepositMinCountPerBlock - || config.ethDepositMinAmount == 0 - || config.ethDepositMaxAmount <= config.ethDepositMinAmount - || config.ethDepositMaxAmount >= type(uint96).max - || config.ethDepositGas == 0 || config.ethDepositMaxFee == 0 - || config.ethDepositMaxFee >= type(uint96).max - || config.ethDepositMaxFee - >= type(uint96).max / config.ethDepositMaxCountPerBlock - ) revert L1_INVALID_CONFIG(); - - if (config.proposerRewardPerL1Block != 0) { - if ( - config.proposerRewardMax == 0 - || config.proposerRewardPoolPctg == 0 - ) revert L1_INVALID_CONFIG(); - } + if (!isConfigValid(config)) revert L1_INVALID_CONFIG(); // Init state state.slotA.genesisHeight = uint64(block.number); @@ -248,4 +222,40 @@ library LibVerifying { } } } + + function isConfigValid(TaikoData.Config memory config) + internal + pure + returns (bool isValid) + { + if ( + config.chainId <= 1 // + || config.blockMaxProposals == 1 + || config.blockRingBufferSize <= config.blockMaxProposals + 1 + || config.blockMaxGasLimit == 0 || config.blockMaxTxListBytes == 0 + || config.blockMaxTxListBytes > 128 * 1024 //blob up to 128K + || config.livenessBond == 0 + || config.livenessBond < 100 * config.proposerRewardPerL1Block + || config.ethDepositRingBufferSize <= 1 + || config.ethDepositMinCountPerBlock == 0 + || config.ethDepositMaxCountPerBlock + < config.ethDepositMinCountPerBlock + || config.ethDepositMinAmount == 0 + || config.ethDepositMaxAmount <= config.ethDepositMinAmount + || config.ethDepositMaxAmount >= type(uint96).max + || config.ethDepositGas == 0 || config.ethDepositMaxFee == 0 + || config.ethDepositMaxFee >= type(uint96).max + || config.ethDepositMaxFee + >= type(uint96).max / config.ethDepositMaxCountPerBlock + ) return false; + + if (config.proposerRewardPerL1Block != 0) { + if ( + config.proposerRewardMax == 0 + || config.proposerRewardPoolPctg == 0 + ) return false; + } + + return true; + } } From b3a77cccd8c68c10955327f28a286a554e4e9683 Mon Sep 17 00:00:00 2001 From: Daniel Wang <99078276+dantaik@users.noreply.github.com> Date: Fri, 13 Oct 2023 10:57:31 +0800 Subject: [PATCH 47/87] feat(protocol): reward proposer using gas used on L2 (#14929) Co-authored-by: Daniel Wang Co-authored-by: David --- packages/protocol/contracts/L1/TaikoData.sol | 7 - .../protocol/contracts/L1/TaikoEvents.sol | 2 - packages/protocol/contracts/L1/TaikoL1.sol | 7 - .../contracts/L1/libs/LibProposing.sol | 57 ------ .../contracts/L1/libs/LibVerifying.sol | 11 +- packages/protocol/contracts/L2/TaikoL2.sol | 189 +++++++++++++----- packages/protocol/test/L1/TaikoL1.t.sol | 1 - .../test/L1/TaikoL1LibProvingWithTiers.t.sol | 1 - 8 files changed, 141 insertions(+), 134 deletions(-) diff --git a/packages/protocol/contracts/L1/TaikoData.sol b/packages/protocol/contracts/L1/TaikoData.sol index 39df2607c3..aa0bb135b4 100644 --- a/packages/protocol/contracts/L1/TaikoData.sol +++ b/packages/protocol/contracts/L1/TaikoData.sol @@ -30,15 +30,8 @@ library TaikoData { uint64 maxBlocksToVerifyPerProposal; // The maximum gas limit allowed for a block. uint32 blockMaxGasLimit; - // The base gas for processing a block. - uint32 blockFeeBaseGas; // The maximum allowed bytes for the proposed transaction list calldata. uint24 blockMaxTxListBytes; - // Amount of token to reward to the first block propsoed in each L1 - // block. - uint128 proposerRewardPerL1Block; - uint128 proposerRewardMax; - uint8 proposerRewardPoolPctg; // --------------------------------------------------------------------- // Group 3: Proof related configs // --------------------------------------------------------------------- diff --git a/packages/protocol/contracts/L1/TaikoEvents.sol b/packages/protocol/contracts/L1/TaikoEvents.sol index db857b8d21..70e3d729c4 100644 --- a/packages/protocol/contracts/L1/TaikoEvents.sol +++ b/packages/protocol/contracts/L1/TaikoEvents.sol @@ -20,7 +20,6 @@ abstract contract TaikoEvents { /// @param assignedProver The block's assigned prover. /// @param livenessBond The bond in Taiko token from the assigned prover. /// @param proverFee The fee paid to the assigned prover. - /// @param reward The proposer's block reward in Taiko token. /// @param meta The block metadata containing information about the proposed /// block. event BlockProposed( @@ -28,7 +27,6 @@ abstract contract TaikoEvents { address indexed assignedProver, uint96 livenessBond, uint256 proverFee, - uint256 reward, uint16 minTier, TaikoData.BlockMetadata meta ); diff --git a/packages/protocol/contracts/L1/TaikoL1.sol b/packages/protocol/contracts/L1/TaikoL1.sol index 40b9c59d8f..aadacd6d17 100644 --- a/packages/protocol/contracts/L1/TaikoL1.sol +++ b/packages/protocol/contracts/L1/TaikoL1.sol @@ -311,16 +311,9 @@ contract TaikoL1 is relaySignalRoot: false, blockMaxProposals: 403_200, blockRingBufferSize: 403_210, - // This number is calculated from blockMaxProposals to make the - // maximum value of the multiplier close to 20.0 maxBlocksToVerifyPerProposal: 10, blockMaxGasLimit: 8_000_000, - blockFeeBaseGas: 20_000, blockMaxTxListBytes: 120_000, - proposerRewardPerL1Block: 3e18, // 0.25 Taiko token * 12s = 3 TKO - proposerRewardMax: 32e18, // 32 Taiko token - proposerRewardPoolPctg: 30, // means that 30% of the accumulated - // reward is given to the next proposer livenessBond: 10_240e18, ethDepositRingBufferSize: 1024, ethDepositMinCountPerBlock: 8, diff --git a/packages/protocol/contracts/L1/libs/LibProposing.sol b/packages/protocol/contracts/L1/libs/LibProposing.sol index 1376209712..d085227cf9 100644 --- a/packages/protocol/contracts/L1/libs/LibProposing.sol +++ b/packages/protocol/contracts/L1/libs/LibProposing.sol @@ -10,7 +10,6 @@ import { ERC20Upgradeable } from "@ozu/token/ERC20/ERC20Upgradeable.sol"; import { AddressResolver } from "../../common/AddressResolver.sol"; import { LibAddress } from "../../libs/LibAddress.sol"; -import { LibMath } from "../../libs/LibMath.sol"; import { ITierProvider } from "../tiers/ITierProvider.sol"; import { TaikoData } from "../TaikoData.sol"; @@ -22,7 +21,6 @@ import { LibTaikoToken } from "./LibTaikoToken.sol"; /// @notice A library for handling block proposals in the Taiko protocol. library LibProposing { using LibAddress for address; - using LibMath for uint256; // Warning: Any events defined here must also be defined in TaikoEvents.sol. event BlockProposed( @@ -30,7 +28,6 @@ library LibProposing { address indexed assignedProver, uint96 livenessBond, uint256 proverFee, - uint256 reward, uint16 minTier, TaikoData.BlockMetadata meta ); @@ -89,59 +86,6 @@ library LibProposing { revert L1_TOO_MANY_BLOCKS(); } - // In situations where the network lacks sufficient transactions for the - // proposer to profit, they are still obligated to pay the prover the - // proving fee, which can be a substantial cost compared to the total L2 - // transaction fees collected. As a solution, Taiko mints additional - // Taiko tokens per second as block rewards. It's important to note that - // if multiple blocks are proposed within the same L1 block, only the - // first one will receive the block reward. - - // The block reward doesn't undergo automatic halving; instead, we - // depend on Taiko DAO to make necessary adjustments to the rewards. - uint128 reward; - - // Reward block proposers with Taiko tokens to encourage chain adoption - // and ensure liveness. - // Rewards are issued only if `proposerRewardPerL1Block` and - // `proposerRewardMax` are set to nonzero values in the configuration. - if (config.proposerRewardPerL1Block != 0) { - unchecked { - // Mint additional tokens into the reward pool as L1 block - // numbers increase, to incentivize future proposers. - if ( - state.slotC.lastProposedHeight != 0 - && state.slotC.lastProposedHeight < block.number - ) { - uint256 extraRewardMinted = ( - block.number - state.slotC.lastProposedHeight - ) * config.proposerRewardPerL1Block; - - // Reward pool is capped to `proposerRewardMax` - state.slotC.accumulatedReward = uint128( - (extraRewardMinted + state.slotC.accumulatedReward).min( - config.proposerRewardMax - ) - ); - } - - if (state.slotC.accumulatedReward != 0) { - // The current proposer receives a fixed percentage of the - // reward pool. - reward = state.slotC.accumulatedReward / 100 - * config.proposerRewardPoolPctg; - - state.slotC.accumulatedReward -= reward; - - // Reward must be minted - LibTaikoToken.creditToken( - state, resolver, msg.sender, reward, true - ); - } - state.slotC.lastProposedHeight = uint64(block.number); - } - } - // Initialize metadata to compute a metaHash, which forms a part of // the block data to be stored on-chain for future integrity checks. // If we choose to persist all data fields in the metadata, it will @@ -237,7 +181,6 @@ library LibProposing { assignedProver: blk.assignedProver, livenessBond: config.livenessBond, proverFee: proverFee, - reward: reward, minTier: blk.minTier, meta: meta }); diff --git a/packages/protocol/contracts/L1/libs/LibVerifying.sol b/packages/protocol/contracts/L1/libs/LibVerifying.sol index 2ab6d5b0be..3194ab582e 100644 --- a/packages/protocol/contracts/L1/libs/LibVerifying.sol +++ b/packages/protocol/contracts/L1/libs/LibVerifying.sol @@ -234,9 +234,7 @@ library LibVerifying { || config.blockRingBufferSize <= config.blockMaxProposals + 1 || config.blockMaxGasLimit == 0 || config.blockMaxTxListBytes == 0 || config.blockMaxTxListBytes > 128 * 1024 //blob up to 128K - || config.livenessBond == 0 - || config.livenessBond < 100 * config.proposerRewardPerL1Block - || config.ethDepositRingBufferSize <= 1 + || config.livenessBond == 0 || config.ethDepositRingBufferSize <= 1 || config.ethDepositMinCountPerBlock == 0 || config.ethDepositMaxCountPerBlock < config.ethDepositMinCountPerBlock @@ -249,13 +247,6 @@ library LibVerifying { >= type(uint96).max / config.ethDepositMaxCountPerBlock ) return false; - if (config.proposerRewardPerL1Block != 0) { - if ( - config.proposerRewardMax == 0 - || config.proposerRewardPoolPctg == 0 - ) return false; - } - return true; } } diff --git a/packages/protocol/contracts/L2/TaikoL2.sol b/packages/protocol/contracts/L2/TaikoL2.sol index b57dd1be40..5585f93691 100644 --- a/packages/protocol/contracts/L2/TaikoL2.sol +++ b/packages/protocol/contracts/L2/TaikoL2.sol @@ -6,12 +6,12 @@ pragma solidity ^0.8.20; -import { LibFixedPointMath } from "../thirdparty/LibFixedPointMath.sol"; import { EssentialContract } from "../common/EssentialContract.sol"; import { ICrossChainSync } from "../common/ICrossChainSync.sol"; import { Proxied } from "../common/Proxied.sol"; import { LibMath } from "../libs/LibMath.sol"; +import { TaikoToken } from "../L1/TaikoToken.sol"; import { Lib1559Math } from "./Lib1559Math.sol"; import { TaikoL2Signer } from "./TaikoL2Signer.sol"; @@ -25,26 +25,40 @@ import { TaikoL2Signer } from "./TaikoL2Signer.sol"; contract TaikoL2 is EssentialContract, TaikoL2Signer, ICrossChainSync { using LibMath for uint256; + struct Config { + uint64 gasTargetPerL1Block; + uint256 basefeeAdjustmentQuotient; + uint256 blockRewardPerL1Block; + uint128 blockRewardPoolMax; + uint8 blockRewardPoolPctg; + } + struct VerifiedBlock { bytes32 blockHash; bytes32 signalRoot; } + // TODO(david): figure out this value from internal devnet. + uint32 public constant ANCHOR_GAS_DEDUCT = 40_000; + // Mapping from L2 block numbers to their block hashes. // All L2 block hashes will be saved in this mapping. - mapping(uint256 blockId => bytes32 blockHash) private _l2Hashes; - mapping(uint256 blockId => VerifiedBlock) private _l1VerifiedBlocks; + mapping(uint256 blockId => bytes32 blockHash) public l2Hashes; + mapping(uint256 blockId => VerifiedBlock) public l1VerifiedBlocks; // A hash to check the integrity of public inputs. bytes32 public publicInputHash; // slot 3 + uint128 public gasExcess; // slot 4 + uint128 public accumulatedReward; + + address public parentProposer; // slot 5 uint64 public latestSyncedL1Height; + uint32 public avgGasUsed; - uint256[146] private __gap; + uint256[145] private __gap; - // Captures all block variables mentioned in - // https://docs.soliditylang.org/en/v0.8.20/units-and-global-variables.html - event Anchored(bytes32 parentHash, uint128 gasExcess); + event Anchored(bytes32 parentHash, uint128 gasExcess, uint128 blockReward); error L2_BASEFEE_MISMATCH(); error L2_INVALID_CHAIN_ID(); @@ -71,7 +85,7 @@ contract TaikoL2 is EssentialContract, TaikoL2Signer, ICrossChainSync { if (block.number > 0) { uint256 parentHeight = block.number - 1; - _l2Hashes[parentHeight] = blockhash(parentHeight); + l2Hashes[parentHeight] = blockhash(parentHeight); } gasExcess = _gasExcess; @@ -83,41 +97,48 @@ contract TaikoL2 is EssentialContract, TaikoL2Signer, ICrossChainSync { /// @param l1Hash The latest L1 block hash when this block was proposed. /// @param l1SignalRoot The latest value of the L1 signal service storage /// root. - /// @param syncedL1Height The latest L1 block height when this block was - /// proposed. + /// @param l1Height The latest L1 block height when this block was proposed. /// @param parentGasUsed The gas used in the parent block. function anchor( bytes32 l1Hash, bytes32 l1SignalRoot, - uint64 syncedL1Height, + uint64 l1Height, uint32 parentGasUsed ) external { if (msg.sender != GOLDEN_TOUCH_ADDRESS) revert L2_INVALID_SENDER(); - // verify ancestor hashes + // Verify ancestor hashes (bytes32 publicInputHashOld, bytes32 publicInputHashNew) = _calcPublicInputHash(block.number - 1); if (publicInputHash != publicInputHashOld) { revert L2_PUBLIC_INPUT_HASH_MISMATCH(); } - publicInputHash = publicInputHashNew; + + Config memory config = getConfig(); // Verify the base fee per gas is correct uint256 basefee; - (basefee, gasExcess) = _calc1559BaseFee(syncedL1Height, parentGasUsed); + (basefee, gasExcess) = _calc1559BaseFee(config, l1Height, parentGasUsed); if (block.basefee != basefee) { revert L2_BASEFEE_MISMATCH(); } - bytes32 parentHash = blockhash(block.number - 1); - _l2Hashes[block.number - 1] = parentHash; - latestSyncedL1Height = syncedL1Height; - _l1VerifiedBlocks[syncedL1Height] = VerifiedBlock(l1Hash, l1SignalRoot); + // Reward block reward in Taiko token to the parent block's proposer + uint128 blockReward = + _rewardParentBlock(config, l1Height, parentGasUsed); - emit CrossChainSynced(syncedL1Height, l1Hash, l1SignalRoot); - emit Anchored(parentHash, gasExcess); + // Update state variables + l2Hashes[block.number - 1] = blockhash(block.number - 1); + l1VerifiedBlocks[l1Height] = VerifiedBlock(l1Hash, l1SignalRoot); + publicInputHash = publicInputHashNew; + latestSyncedL1Height = l1Height; + parentProposer = block.coinbase; + + // Emit events + emit CrossChainSynced(l1Height, l1Hash, l1SignalRoot); + emit Anchored(blockhash(block.number - 1), gasExcess, blockReward); } /// @inheritdoc ICrossChainSync @@ -128,7 +149,7 @@ contract TaikoL2 is EssentialContract, TaikoL2Signer, ICrossChainSync { returns (bytes32) { uint256 id = blockId == 0 ? latestSyncedL1Height : blockId; - return _l1VerifiedBlocks[id].blockHash; + return l1VerifiedBlocks[id].blockHash; } /// @inheritdoc ICrossChainSync @@ -139,51 +160,123 @@ contract TaikoL2 is EssentialContract, TaikoL2Signer, ICrossChainSync { returns (bytes32) { uint256 id = blockId == 0 ? latestSyncedL1Height : blockId; - return _l1VerifiedBlocks[id].signalRoot; + return l1VerifiedBlocks[id].signalRoot; } /// @notice Gets the basefee and gas excess using EIP-1559 configuration for /// the given parameters. - /// @param syncedL1Height The synced L1 height in the next Taiko block + /// @param l1Height The synced L1 height in the next Taiko block /// @param parentGasUsed Gas used in the parent block. /// @return basefee The calculated EIP-1559 base fee per gas. function getBasefee( - uint64 syncedL1Height, + uint64 l1Height, uint32 parentGasUsed ) public view returns (uint256 basefee) { - (basefee,) = _calc1559BaseFee(syncedL1Height, parentGasUsed); - } - - /// @notice Returns EIP1559 related configurations - function get1559Params() - public - pure - virtual - returns (uint64 gasTarget, uint256 adjustmentQuotient) - { - gasTarget = 15 * 1e6 * 10; // 10x Ethereum gas target - adjustmentQuotient = 8; + (basefee,) = _calc1559BaseFee(getConfig(), l1Height, parentGasUsed); } /// @notice Retrieves the block hash for the given L2 block number. /// @param blockId The L2 block number to retrieve the block hash for. /// @return The block hash for the specified L2 block id, or zero if the /// block id is greater than or equal to the current block number. - function getBlockHash(uint64 blockId) public view returns (bytes32) { if (blockId >= block.number) { return 0; } else if (blockId < block.number && blockId >= block.number - 256) { return blockhash(blockId); } else { - return _l2Hashes[blockId]; + return l2Hashes[blockId]; } } + /// @notice Returns EIP1559 related configurations + function getConfig() public pure virtual returns (Config memory config) { + config.gasTargetPerL1Block = 15 * 1e6 * 10; // 10x Ethereum gas target + config.basefeeAdjustmentQuotient = 8; + config.blockRewardPerL1Block = 1e15; // 0.001 Taiko token; + config.blockRewardPoolMax = 12e18; // 12 Taiko token + config.blockRewardPoolPctg = 40; // 40% + } + + // In situations where the network lacks sufficient transactions for the + // proposer to profit, they are still obligated to pay the prover the + // proving fee, which can be a substantial cost compared to the total L2 + // transaction fees collected. As a solution, Taiko mints additional Taiko + // tokens per second as block rewards. + // + // The block reward doesn't undergo automatic halving; instead, we depend on + // Taiko DAO to make necessary adjustments to the rewards. uint96 + // rewardBase; + // + // Reward block proposers with Taiko tokens to encourage chain adoption and + // ensure liveness. Rewards are issued only if `blockRewardPerL1Block` and + // `blockRewardPoolMax` are set to nonzero values in the configuration. + // + // Mint additional tokens into the reward pool as L1 block numbers increase, + // to incentivize future proposers. + function _rewardParentBlock( + Config memory config, + uint64 l1Height, + uint32 parentGasUsed + ) + private + returns (uint128 blockReward) + { + if ( + config.blockRewardPerL1Block == 0 || config.blockRewardPoolMax == 0 + || config.blockRewardPoolPctg == 0 || latestSyncedL1Height == 0 + || accumulatedReward == 0 + ) return 0; + + if (latestSyncedL1Height < l1Height) { + uint256 extraRewardMinted = uint256(l1Height - latestSyncedL1Height) + * config.blockRewardPerL1Block; + + // Reward pool is capped to `blockRewardPoolMax` + accumulatedReward = uint128( + (extraRewardMinted + accumulatedReward).min( + config.blockRewardPoolMax + ) + ); + } + + if (avgGasUsed == 0) { + avgGasUsed = parentGasUsed; + return 0; + } + + avgGasUsed = avgGasUsed / 1024 * 1023 + parentGasUsed / 1024; + + uint128 maxBlockReward = + accumulatedReward / 100 * config.blockRewardPoolPctg; + accumulatedReward -= maxBlockReward; + + if ( + parentGasUsed <= ANCHOR_GAS_DEDUCT + || avgGasUsed <= ANCHOR_GAS_DEDUCT || parentProposer == address(0) + ) { + return 0; + } + + address tt = resolve("taiko_token", true); + if (tt == address(0)) return 0; + + // The ratio is in [0-200] + uint128 ratio = uint128( + ( + uint256(parentGasUsed - ANCHOR_GAS_DEDUCT) * 100 + / (avgGasUsed - ANCHOR_GAS_DEDUCT) + ).min(200) + ); + + blockReward = maxBlockReward * ratio / 200; + TaikoToken(tt).mint(parentProposer, blockReward); + } + function _calcPublicInputHash(uint256 blockId) private view @@ -214,7 +307,8 @@ contract TaikoL2 is EssentialContract, TaikoL2Signer, ICrossChainSync { } function _calc1559BaseFee( - uint64 syncedL1Height, + Config memory config, + uint64 l1Height, uint32 parentGasUsed ) private @@ -232,17 +326,12 @@ contract TaikoL2 is EssentialContract, TaikoL2Signer, ICrossChainSync { // the gas excess will be reduced accordingly. // Note that when latestSyncedL1Height is zero, we skip this step. uint128 numL1Blocks; - if ( - latestSyncedL1Height > 0 - && syncedL1Height > latestSyncedL1Height - ) { - numL1Blocks = syncedL1Height - latestSyncedL1Height; + if (latestSyncedL1Height > 0 && l1Height > latestSyncedL1Height) { + numL1Blocks = l1Height - latestSyncedL1Height; } - (uint64 gasTarget, uint256 adjustmentQuotient) = get1559Params(); - if (numL1Blocks > 0) { - uint128 issuance = numL1Blocks * gasTarget; + uint128 issuance = numL1Blocks * config.gasTargetPerL1Block; excess = excess > issuance ? excess - issuance : 1; } @@ -252,8 +341,10 @@ contract TaikoL2 is EssentialContract, TaikoL2Signer, ICrossChainSync { // bonding curve, regardless the actual amount of gas used by this // block, however, the this block's gas used will affect the next // block's base fee. - _basefee = - Lib1559Math.basefee(_gasExcess, adjustmentQuotient * gasTarget); + _basefee = Lib1559Math.basefee( + _gasExcess, + config.basefeeAdjustmentQuotient * config.gasTargetPerL1Block + ); } // Always make sure basefee is nonzero, this is required by the node. diff --git a/packages/protocol/test/L1/TaikoL1.t.sol b/packages/protocol/test/L1/TaikoL1.t.sol index 268dbdba02..8cfc31756f 100644 --- a/packages/protocol/test/L1/TaikoL1.t.sol +++ b/packages/protocol/test/L1/TaikoL1.t.sol @@ -25,7 +25,6 @@ contract TaikoL1_NoCooldown is TaikoL1 { config.blockMaxProposals = 10; config.blockRingBufferSize = 12; config.livenessBond = 1e18; // 1 Taiko token - config.proposerRewardPerL1Block = 1e15; // 0.001 Taiko token } } diff --git a/packages/protocol/test/L1/TaikoL1LibProvingWithTiers.t.sol b/packages/protocol/test/L1/TaikoL1LibProvingWithTiers.t.sol index 849df91fb9..3129558917 100644 --- a/packages/protocol/test/L1/TaikoL1LibProvingWithTiers.t.sol +++ b/packages/protocol/test/L1/TaikoL1LibProvingWithTiers.t.sol @@ -30,7 +30,6 @@ contract TaikoL1Tiers is TaikoL1 { config.blockMaxProposals = 10; config.blockRingBufferSize = 12; config.livenessBond = 1e18; // 1 Taiko token - config.proposerRewardPerL1Block = 1e15; // 0.001 Taiko token } } From 6f88830641da572ae250149cd73cdafb7c1dbb98 Mon Sep 17 00:00:00 2001 From: Daniel Wang Date: Fri, 13 Oct 2023 23:17:51 +0800 Subject: [PATCH 48/87] Update TaikoErrors.sol --- packages/protocol/contracts/L1/TaikoErrors.sol | 1 + 1 file changed, 1 insertion(+) diff --git a/packages/protocol/contracts/L1/TaikoErrors.sol b/packages/protocol/contracts/L1/TaikoErrors.sol index f945ef9036..b12a17371d 100644 --- a/packages/protocol/contracts/L1/TaikoErrors.sol +++ b/packages/protocol/contracts/L1/TaikoErrors.sol @@ -21,6 +21,7 @@ abstract contract TaikoErrors { error L1_ASSIGNMENT_INSUFFICIENT_FEE(); error L1_ASSIGNED_PROVER_NOT_ALLOWED(); error L1_BLOCK_MISMATCH(); + error L1_INSUFFICIENT_TOKEN(); error L1_INVALID_ADDRESS(); error L1_INVALID_BLOCK_ID(); error L1_INVALID_CONFIG(); From cd76f60e86fdaf1792a5de8f28b4565b85a0dae1 Mon Sep 17 00:00:00 2001 From: mvidovic-tuple <110526425+mvidovic-tuple@users.noreply.github.com> Date: Sat, 14 Oct 2023 04:53:19 +0200 Subject: [PATCH 49/87] refactor(protocol): update TaikoL2.sol (#14947) Co-authored-by: D <51912515+adaki2004@users.noreply.github.com> Co-authored-by: Daniel Wang <99078276+dantaik@users.noreply.github.com> --- packages/protocol/contracts/L2/TaikoL2.sol | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/packages/protocol/contracts/L2/TaikoL2.sol b/packages/protocol/contracts/L2/TaikoL2.sol index 5585f93691..7b5f4156b3 100644 --- a/packages/protocol/contracts/L2/TaikoL2.sol +++ b/packages/protocol/contracts/L2/TaikoL2.sol @@ -183,14 +183,14 @@ contract TaikoL2 is EssentialContract, TaikoL2Signer, ICrossChainSync { /// @param blockId The L2 block number to retrieve the block hash for. /// @return The block hash for the specified L2 block id, or zero if the /// block id is greater than or equal to the current block number. + function getBlockHash(uint64 blockId) public view returns (bytes32) { - if (blockId >= block.number) { - return 0; - } else if (blockId < block.number && blockId >= block.number - 256) { + if (blockId >= block.number) return 0; + + if (blockId < block.number && blockId >= block.number - 256) return blockhash(blockId); - } else { - return l2Hashes[blockId]; - } + + return l2Hashes[blockId]; } /// @notice Returns EIP1559 related configurations From 2511b5819cc023459e775246f4c069ed5d4c7d58 Mon Sep 17 00:00:00 2001 From: Daniel Wang Date: Sat, 14 Oct 2023 10:55:34 +0800 Subject: [PATCH 50/87] Update TaikoL2.sol --- packages/protocol/contracts/L2/TaikoL2.sol | 9 +++------ 1 file changed, 3 insertions(+), 6 deletions(-) diff --git a/packages/protocol/contracts/L2/TaikoL2.sol b/packages/protocol/contracts/L2/TaikoL2.sol index 7b5f4156b3..24c3299df9 100644 --- a/packages/protocol/contracts/L2/TaikoL2.sol +++ b/packages/protocol/contracts/L2/TaikoL2.sol @@ -185,12 +185,9 @@ contract TaikoL2 is EssentialContract, TaikoL2Signer, ICrossChainSync { /// block id is greater than or equal to the current block number. function getBlockHash(uint64 blockId) public view returns (bytes32) { - if (blockId >= block.number) return 0; - - if (blockId < block.number && blockId >= block.number - 256) - return blockhash(blockId); - - return l2Hashes[blockId]; + if (blockId >= block.number) return 0; + if (blockId >= block.number - 256) return blockhash(blockId); + return l2Hashes[blockId]; } /// @notice Returns EIP1559 related configurations From 1f3fd0ffd0103fc13fcdf290a704827804a11ee8 Mon Sep 17 00:00:00 2001 From: Daniel Wang Date: Sat, 14 Oct 2023 10:56:27 +0800 Subject: [PATCH 51/87] Update TaikoL2.sol --- packages/protocol/contracts/L2/TaikoL2.sol | 1 - 1 file changed, 1 deletion(-) diff --git a/packages/protocol/contracts/L2/TaikoL2.sol b/packages/protocol/contracts/L2/TaikoL2.sol index 24c3299df9..97bd40e52f 100644 --- a/packages/protocol/contracts/L2/TaikoL2.sol +++ b/packages/protocol/contracts/L2/TaikoL2.sol @@ -183,7 +183,6 @@ contract TaikoL2 is EssentialContract, TaikoL2Signer, ICrossChainSync { /// @param blockId The L2 block number to retrieve the block hash for. /// @return The block hash for the specified L2 block id, or zero if the /// block id is greater than or equal to the current block number. - function getBlockHash(uint64 blockId) public view returns (bytes32) { if (blockId >= block.number) return 0; if (blockId >= block.number - 256) return blockhash(blockId); From d9e3617f94c342016eb3059bd27cfb97ba8bfbd3 Mon Sep 17 00:00:00 2001 From: Daniel Wang Date: Sun, 15 Oct 2023 15:19:32 +0800 Subject: [PATCH 52/87] pnpm update --latest --- package.json | 4 +- pnpm-lock.yaml | 878 ++++++++++++++++++++++++++----------------------- 2 files changed, 470 insertions(+), 412 deletions(-) diff --git a/package.json b/package.json index feb9595996..1ad7725e80 100644 --- a/package.json +++ b/package.json @@ -3,7 +3,7 @@ "version": "0.22.0", "private": true, "devDependencies": { - "lefthook": "^1.4.7", - "prettier": "^2.8.8" + "lefthook": "^1.5.2", + "prettier": "^3.0.3" } } diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 50839e8160..9b9bc26270 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -9,11 +9,11 @@ importers: .: devDependencies: lefthook: - specifier: ^1.4.7 - version: 1.4.7 + specifier: ^1.5.2 + version: 1.5.2 prettier: - specifier: ^2.8.8 - version: 2.8.8 + specifier: ^3.0.3 + version: 3.0.3 packages/branding: {} @@ -21,7 +21,7 @@ importers: dependencies: '@coinbase/wallet-sdk': specifier: ^3.6.3 - version: 3.6.3(@babel/core@7.23.0) + version: 3.6.3(@babel/core@7.23.2) '@ethersproject/experimental': specifier: ^5.7.0 version: 5.7.0 @@ -61,7 +61,7 @@ importers: devDependencies: '@babel/preset-env': specifier: ^7.16.0 - version: 7.16.0(@babel/core@7.23.0) + version: 7.16.0(@babel/core@7.23.2) '@sentry/vite-plugin': specifier: ^2.2.1 version: 2.2.1 @@ -109,7 +109,7 @@ importers: version: 10.4.14(postcss@8.4.27) babel-jest: specifier: ^27.3.1 - version: 27.3.1(@babel/core@7.23.0) + version: 27.3.1(@babel/core@7.23.2) babel-plugin-transform-es2015-modules-commonjs: specifier: ^6.26.2 version: 6.26.2 @@ -145,7 +145,7 @@ importers: version: 7.1.2 postcss-loader: specifier: ^7.3.3 - version: 7.3.3(postcss@8.4.27)(typescript@4.9.5)(webpack@5.88.2) + version: 7.3.3(postcss@8.4.27)(typescript@4.9.5)(webpack@5.89.0) prettier: specifier: 2.7.1 version: 2.7.1 @@ -163,7 +163,7 @@ importers: version: 3.53.1 svelte-check: specifier: ^2.8.0 - version: 2.8.0(@babel/core@7.23.0)(node-sass@7.0.1)(postcss@8.4.27)(svelte@3.53.1) + version: 2.8.0(@babel/core@7.23.2)(node-sass@7.0.1)(postcss@8.4.27)(svelte@3.53.1) svelte-heros-v2: specifier: ^0.3.10 version: 0.3.10 @@ -175,7 +175,7 @@ importers: version: 3.1.2(svelte@3.53.1) svelte-preprocess: specifier: ^4.10.7 - version: 4.10.7(@babel/core@7.23.0)(node-sass@7.0.1)(postcss@8.4.27)(svelte@3.53.1)(typescript@4.9.5) + version: 4.10.7(@babel/core@7.23.2)(node-sass@7.0.1)(postcss@8.4.27)(svelte@3.53.1)(typescript@4.9.5) tailwindcss: specifier: ^3.2.4 version: 3.3.3 @@ -184,13 +184,13 @@ importers: version: 2.2.0 ts-jest: specifier: ^27.0.7 - version: 27.0.7(@babel/core@7.23.0)(@types/jest@27.5.2)(babel-jest@27.3.1)(jest@27.5.1)(typescript@4.9.5) + version: 27.0.7(@babel/core@7.23.2)(@types/jest@27.5.2)(babel-jest@27.3.1)(jest@27.5.1)(typescript@4.9.5) ts-jest-mock-import-meta: specifier: ^0.12.0 version: 0.12.0(ts-jest@27.0.7) ts-loader: specifier: ^9.2.6 - version: 9.2.6(typescript@4.9.5)(webpack@5.88.2) + version: 9.2.6(typescript@4.9.5)(webpack@5.89.0) tslib: specifier: ^2.4.0 version: 2.4.1 @@ -345,7 +345,7 @@ importers: dependencies: '@coinbase/wallet-sdk': specifier: ^3.6.3 - version: 3.6.3(@babel/core@7.23.0) + version: 3.6.3(@babel/core@7.23.2) '@ethersproject/experimental': specifier: ^5.7.0 version: 5.7.0 @@ -385,7 +385,7 @@ importers: devDependencies: '@babel/preset-env': specifier: ^7.16.0 - version: 7.16.0(@babel/core@7.23.0) + version: 7.16.0(@babel/core@7.23.2) '@sentry/vite-plugin': specifier: ^2.2.1 version: 2.2.1 @@ -433,7 +433,7 @@ importers: version: 10.4.14(postcss@8.4.27) babel-jest: specifier: ^27.3.1 - version: 27.3.1(@babel/core@7.23.0) + version: 27.3.1(@babel/core@7.23.2) babel-plugin-transform-es2015-modules-commonjs: specifier: ^6.26.2 version: 6.26.2 @@ -469,7 +469,7 @@ importers: version: 7.1.2 postcss-loader: specifier: ^7.3.3 - version: 7.3.3(postcss@8.4.27)(typescript@4.9.5)(webpack@5.88.2) + version: 7.3.3(postcss@8.4.27)(typescript@4.9.5)(webpack@5.89.0) prettier: specifier: 2.7.1 version: 2.7.1 @@ -487,7 +487,7 @@ importers: version: 3.53.1 svelte-check: specifier: ^2.8.0 - version: 2.8.0(@babel/core@7.23.0)(node-sass@7.0.1)(postcss@8.4.27)(svelte@3.53.1) + version: 2.8.0(@babel/core@7.23.2)(node-sass@7.0.1)(postcss@8.4.27)(svelte@3.53.1) svelte-heros-v2: specifier: ^0.3.10 version: 0.3.10 @@ -499,7 +499,7 @@ importers: version: 3.1.2(svelte@3.53.1) svelte-preprocess: specifier: ^4.10.7 - version: 4.10.7(@babel/core@7.23.0)(node-sass@7.0.1)(postcss@8.4.27)(svelte@3.53.1)(typescript@4.9.5) + version: 4.10.7(@babel/core@7.23.2)(node-sass@7.0.1)(postcss@8.4.27)(svelte@3.53.1)(typescript@4.9.5) tailwindcss: specifier: ^3.2.4 version: 3.3.3 @@ -508,13 +508,13 @@ importers: version: 2.2.0 ts-jest: specifier: ^27.0.7 - version: 27.0.7(@babel/core@7.23.0)(@types/jest@27.5.2)(babel-jest@27.3.1)(jest@27.5.1)(typescript@4.9.5) + version: 27.0.7(@babel/core@7.23.2)(@types/jest@27.5.2)(babel-jest@27.3.1)(jest@27.5.1)(typescript@4.9.5) ts-jest-mock-import-meta: specifier: ^0.12.0 version: 0.12.0(ts-jest@27.0.7) ts-loader: specifier: ^9.2.6 - version: 9.2.6(typescript@4.9.5)(webpack@5.88.2) + version: 9.2.6(typescript@4.9.5)(webpack@5.89.0) tslib: specifier: ^2.4.0 version: 2.4.1 @@ -663,7 +663,7 @@ importers: dependencies: '@coinbase/wallet-sdk': specifier: ^3.6.3 - version: 3.6.3(@babel/core@7.23.0) + version: 3.6.3(@babel/core@7.23.2) '@ethersproject/experimental': specifier: ^5.7.0 version: 5.7.0 @@ -675,7 +675,7 @@ importers: version: 1.6.0 '@wagmi/connectors': specifier: ^0.1.1 - version: 0.1.1(@babel/core@7.23.0)(@wagmi/core@0.8.0)(ethers@5.7.2)(typescript@4.9.5) + version: 0.1.1(@babel/core@7.23.2)(@wagmi/core@0.8.0)(ethers@5.7.2)(typescript@4.9.5) '@wagmi/core': specifier: ^0.8.0 version: 0.8.0(@coinbase/wallet-sdk@3.6.3)(ethers@5.7.2)(react@18.2.0)(typescript@4.9.5) @@ -700,7 +700,7 @@ importers: devDependencies: '@babel/preset-env': specifier: ^7.16.0 - version: 7.16.0(@babel/core@7.23.0) + version: 7.16.0(@babel/core@7.23.2) '@sveltejs/vite-plugin-svelte': specifier: ^1.0.1 version: 1.0.1(svelte@3.53.1)(vite@3.2.7) @@ -736,7 +736,7 @@ importers: version: 10.4.14(postcss@8.4.27) babel-jest: specifier: ^27.3.1 - version: 27.3.1(@babel/core@7.23.0) + version: 27.3.1(@babel/core@7.23.2) babel-plugin-transform-es2015-modules-commonjs: specifier: ^6.26.2 version: 6.26.2 @@ -757,7 +757,7 @@ importers: version: 7.1.2 postcss-loader: specifier: ^7.3.3 - version: 7.3.3(postcss@8.4.27)(typescript@4.9.5)(webpack@5.88.2) + version: 7.3.3(postcss@8.4.27)(typescript@4.9.5)(webpack@5.89.0) prettier: specifier: 2.7.1 version: 2.7.1 @@ -772,7 +772,7 @@ importers: version: 3.53.1 svelte-check: specifier: ^2.8.0 - version: 2.8.0(@babel/core@7.23.0)(node-sass@7.0.1)(postcss@8.4.27)(svelte@3.53.1) + version: 2.8.0(@babel/core@7.23.2)(node-sass@7.0.1)(postcss@8.4.27)(svelte@3.53.1) svelte-heros-v2: specifier: ^0.3.10 version: 0.3.10 @@ -784,7 +784,7 @@ importers: version: 3.1.2(svelte@3.53.1) svelte-preprocess: specifier: ^4.10.7 - version: 4.10.7(@babel/core@7.23.0)(node-sass@7.0.1)(postcss@8.4.27)(svelte@3.53.1)(typescript@4.9.5) + version: 4.10.7(@babel/core@7.23.2)(node-sass@7.0.1)(postcss@8.4.27)(svelte@3.53.1)(typescript@4.9.5) tailwindcss: specifier: ^3.2.4 version: 3.3.3 @@ -793,13 +793,13 @@ importers: version: 2.2.0 ts-jest: specifier: ^27.0.7 - version: 27.0.7(@babel/core@7.23.0)(@types/jest@27.5.2)(babel-jest@27.3.1)(jest@27.5.1)(typescript@4.9.5) + version: 27.0.7(@babel/core@7.23.2)(@types/jest@27.5.2)(babel-jest@27.3.1)(jest@27.5.1)(typescript@4.9.5) ts-jest-mock-import-meta: specifier: ^0.12.0 version: 0.12.0(ts-jest@27.0.7) ts-loader: specifier: ^9.2.6 - version: 9.2.6(typescript@4.9.5)(webpack@5.88.2) + version: 9.2.6(typescript@4.9.5)(webpack@5.89.0) tslib: specifier: ^2.4.0 version: 2.4.1 @@ -817,7 +817,7 @@ importers: dependencies: '@coinbase/wallet-sdk': specifier: ^3.6.3 - version: 3.6.3(@babel/core@7.23.0) + version: 3.6.3(@babel/core@7.23.2) '@ethersproject/experimental': specifier: ^5.7.0 version: 5.7.0 @@ -829,7 +829,7 @@ importers: version: 1.6.0 '@wagmi/connectors': specifier: ^0.1.1 - version: 0.1.1(@babel/core@7.23.0)(@wagmi/core@0.8.0)(ethers@5.7.2)(typescript@4.9.5) + version: 0.1.1(@babel/core@7.23.2)(@wagmi/core@0.8.0)(ethers@5.7.2)(typescript@4.9.5) '@wagmi/core': specifier: ^0.8.0 version: 0.8.0(@coinbase/wallet-sdk@3.6.3)(ethers@5.7.2)(react@18.2.0)(typescript@4.9.5) @@ -854,7 +854,7 @@ importers: devDependencies: '@babel/preset-env': specifier: ^7.16.0 - version: 7.16.0(@babel/core@7.23.0) + version: 7.16.0(@babel/core@7.23.2) '@sveltejs/vite-plugin-svelte': specifier: ^1.0.1 version: 1.0.1(svelte@3.53.1)(vite@3.2.7) @@ -890,7 +890,7 @@ importers: version: 10.4.14(postcss@8.4.27) babel-jest: specifier: ^27.3.1 - version: 27.3.1(@babel/core@7.23.0) + version: 27.3.1(@babel/core@7.23.2) babel-plugin-transform-es2015-modules-commonjs: specifier: ^6.26.2 version: 6.26.2 @@ -911,7 +911,7 @@ importers: version: 7.1.2 postcss-loader: specifier: ^7.3.3 - version: 7.3.3(postcss@8.4.27)(typescript@4.9.5)(webpack@5.88.2) + version: 7.3.3(postcss@8.4.27)(typescript@4.9.5)(webpack@5.89.0) prettier: specifier: 2.7.1 version: 2.7.1 @@ -926,7 +926,7 @@ importers: version: 3.53.1 svelte-check: specifier: ^2.8.0 - version: 2.8.0(@babel/core@7.23.0)(node-sass@7.0.1)(postcss@8.4.27)(svelte@3.53.1) + version: 2.8.0(@babel/core@7.23.2)(node-sass@7.0.1)(postcss@8.4.27)(svelte@3.53.1) svelte-heros-v2: specifier: ^0.3.10 version: 0.3.10 @@ -938,7 +938,7 @@ importers: version: 3.1.2(svelte@3.53.1) svelte-preprocess: specifier: ^4.10.7 - version: 4.10.7(@babel/core@7.23.0)(node-sass@7.0.1)(postcss@8.4.27)(svelte@3.53.1)(typescript@4.9.5) + version: 4.10.7(@babel/core@7.23.2)(node-sass@7.0.1)(postcss@8.4.27)(svelte@3.53.1)(typescript@4.9.5) tailwindcss: specifier: ^3.2.4 version: 3.3.3 @@ -947,13 +947,13 @@ importers: version: 2.2.0 ts-jest: specifier: ^27.0.7 - version: 27.0.7(@babel/core@7.23.0)(@types/jest@27.5.2)(babel-jest@27.3.1)(jest@27.5.1)(typescript@4.9.5) + version: 27.0.7(@babel/core@7.23.2)(@types/jest@27.5.2)(babel-jest@27.3.1)(jest@27.5.1)(typescript@4.9.5) ts-jest-mock-import-meta: specifier: ^0.12.0 version: 0.12.0(ts-jest@27.0.7) ts-loader: specifier: ^9.2.6 - version: 9.2.6(typescript@4.9.5)(webpack@5.88.2) + version: 9.2.6(typescript@4.9.5)(webpack@5.89.0) tslib: specifier: ^2.4.0 version: 2.4.1 @@ -1090,19 +1090,19 @@ packages: - supports-color dev: true - /@babel/core@7.23.0: - resolution: {integrity: sha512-97z/ju/Jy1rZmDxybphrBuI+jtJjFVoz7Mr9yUQVVVi+DNZE333uFQeMOqcCIy1x3WYBIbWftUSLmbNXNT7qFQ==} + /@babel/core@7.23.2: + resolution: {integrity: sha512-n7s51eWdaWZ3vGT2tD4T7J6eJs3QoBXydv7vkUM06Bf1cbVD2Kc2UrkzhiQwobfV7NwOnQXYL7UBJ5VPU+RGoQ==} engines: {node: '>=6.9.0'} dependencies: '@ampproject/remapping': 2.2.1 '@babel/code-frame': 7.22.13 '@babel/generator': 7.23.0 '@babel/helper-compilation-targets': 7.22.15 - '@babel/helper-module-transforms': 7.23.0(@babel/core@7.23.0) - '@babel/helpers': 7.23.1 + '@babel/helper-module-transforms': 7.23.0(@babel/core@7.23.2) + '@babel/helpers': 7.23.2 '@babel/parser': 7.23.0 '@babel/template': 7.22.15 - '@babel/traverse': 7.23.0 + '@babel/traverse': 7.23.2 '@babel/types': 7.23.0 convert-source-map: 2.0.0 debug: 4.3.4(supports-color@8.1.1) @@ -1155,42 +1155,42 @@ packages: lru-cache: 5.1.1 semver: 6.3.1 - /@babel/helper-create-class-features-plugin@7.22.15(@babel/core@7.23.0): + /@babel/helper-create-class-features-plugin@7.22.15(@babel/core@7.23.2): resolution: {integrity: sha512-jKkwA59IXcvSaiK2UN45kKwSC9o+KuoXsBDvHvU/7BecYIp8GQ2UwrVvFgJASUT+hBnwJx6MhvMCuMzwZZ7jlg==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0 dependencies: - '@babel/core': 7.23.0 + '@babel/core': 7.23.2 '@babel/helper-annotate-as-pure': 7.22.5 '@babel/helper-environment-visitor': 7.22.5 '@babel/helper-function-name': 7.22.5 '@babel/helper-member-expression-to-functions': 7.22.15 '@babel/helper-optimise-call-expression': 7.22.5 - '@babel/helper-replace-supers': 7.22.9(@babel/core@7.23.0) + '@babel/helper-replace-supers': 7.22.9(@babel/core@7.23.2) '@babel/helper-skip-transparent-expression-wrappers': 7.22.5 '@babel/helper-split-export-declaration': 7.22.6 semver: 6.3.1 dev: true - /@babel/helper-create-regexp-features-plugin@7.22.15(@babel/core@7.23.0): + /@babel/helper-create-regexp-features-plugin@7.22.15(@babel/core@7.23.2): resolution: {integrity: sha512-29FkPLFjn4TPEa3RE7GpW+qbE8tlsu3jntNYNfcGsc49LphF1PQIiD+vMZ1z1xVOKt+93khA9tc2JBs3kBjA7w==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0 dependencies: - '@babel/core': 7.23.0 + '@babel/core': 7.23.2 '@babel/helper-annotate-as-pure': 7.22.5 regexpu-core: 5.3.2 semver: 6.3.1 dev: true - /@babel/helper-define-polyfill-provider@0.2.4(@babel/core@7.23.0): + /@babel/helper-define-polyfill-provider@0.2.4(@babel/core@7.23.2): resolution: {integrity: sha512-OrpPZ97s+aPi6h2n1OXzdhVis1SGSsMU2aMHgLcOKfsp4/v1NWpx3CWT3lBj5eeBq9cDkPkh+YCfdF7O12uNDQ==} peerDependencies: '@babel/core': ^7.4.0-0 dependencies: - '@babel/core': 7.23.0 + '@babel/core': 7.23.2 '@babel/helper-compilation-targets': 7.22.15 '@babel/helper-module-imports': 7.22.15 '@babel/helper-plugin-utils': 7.22.5 @@ -1203,12 +1203,12 @@ packages: - supports-color dev: true - /@babel/helper-define-polyfill-provider@0.4.2(@babel/core@7.23.0): + /@babel/helper-define-polyfill-provider@0.4.2(@babel/core@7.23.2): resolution: {integrity: sha512-k0qnnOqHn5dK9pZpfD5XXZ9SojAITdCKRn2Lp6rnDGzIbaP0rHyMPk/4wsSxVBVz4RfN0q6VpXWP2pDGIoQ7hw==} peerDependencies: '@babel/core': ^7.4.0 || ^8.0.0-0 <8.0.0 dependencies: - '@babel/core': 7.23.0 + '@babel/core': 7.23.2 '@babel/helper-compilation-targets': 7.22.15 '@babel/helper-plugin-utils': 7.22.5 debug: 4.3.4(supports-color@8.1.1) @@ -1275,13 +1275,13 @@ packages: '@babel/helper-validator-identifier': 7.22.15 dev: true - /@babel/helper-module-transforms@7.22.15(@babel/core@7.23.0): + /@babel/helper-module-transforms@7.22.15(@babel/core@7.23.2): resolution: {integrity: sha512-l1UiX4UyHSFsYt17iQ3Se5pQQZZHa22zyIXURmvkmLCD4t/aU+dvNWHatKac/D9Vm9UES7nvIqHs4jZqKviUmQ==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0 dependencies: - '@babel/core': 7.23.0 + '@babel/core': 7.23.2 '@babel/helper-environment-visitor': 7.22.5 '@babel/helper-module-imports': 7.22.15 '@babel/helper-simple-access': 7.22.5 @@ -1289,13 +1289,13 @@ packages: '@babel/helper-validator-identifier': 7.22.15 dev: true - /@babel/helper-module-transforms@7.23.0(@babel/core@7.23.0): + /@babel/helper-module-transforms@7.23.0(@babel/core@7.23.2): resolution: {integrity: sha512-WhDWw1tdrlT0gMgUJSlX0IQvoO1eN279zrAUbVB+KpV2c3Tylz8+GnKOLllCS6Z/iZQEyVYxhZVUdPTqs2YYPw==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0 dependencies: - '@babel/core': 7.23.0 + '@babel/core': 7.23.2 '@babel/helper-environment-visitor': 7.22.20 '@babel/helper-module-imports': 7.22.15 '@babel/helper-simple-access': 7.22.5 @@ -1313,25 +1313,25 @@ packages: resolution: {integrity: sha512-uLls06UVKgFG9QD4OeFYLEGteMIAa5kpTPcFL28yuCIIzsf6ZyKZMllKVOCZFhiZ5ptnwX4mtKdWCBE/uT4amg==} engines: {node: '>=6.9.0'} - /@babel/helper-remap-async-to-generator@7.22.9(@babel/core@7.23.0): + /@babel/helper-remap-async-to-generator@7.22.9(@babel/core@7.23.2): resolution: {integrity: sha512-8WWC4oR4Px+tr+Fp0X3RHDVfINGpF3ad1HIbrc8A77epiR6eMMc6jsgozkzT2uDiOOdoS9cLIQ+XD2XvI2WSmQ==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0 dependencies: - '@babel/core': 7.23.0 + '@babel/core': 7.23.2 '@babel/helper-annotate-as-pure': 7.22.5 '@babel/helper-environment-visitor': 7.22.5 '@babel/helper-wrap-function': 7.22.10 dev: true - /@babel/helper-replace-supers@7.22.9(@babel/core@7.23.0): + /@babel/helper-replace-supers@7.22.9(@babel/core@7.23.2): resolution: {integrity: sha512-LJIKvvpgPOPUThdYqcX6IXRuIcTkcAub0IaDRGCZH0p5GPUp7PhRU9QVgFcDDd51BaPkk77ZjqFwh6DZTAEmGg==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0 dependencies: - '@babel/core': 7.23.0 + '@babel/core': 7.23.2 '@babel/helper-environment-visitor': 7.22.5 '@babel/helper-member-expression-to-functions': 7.22.15 '@babel/helper-optimise-call-expression': 7.22.5 @@ -1392,12 +1392,12 @@ packages: - supports-color dev: true - /@babel/helpers@7.23.1: - resolution: {integrity: sha512-chNpneuK18yW5Oxsr+t553UZzzAs3aZnFm4bxhebsNTeshrC95yA7l5yl7GBAG+JG1rF0F7zzD2EixK9mWSDoA==} + /@babel/helpers@7.23.2: + resolution: {integrity: sha512-lzchcp8SjTSVe/fPmLwtWVBFC7+Tbn8LGHDVfDp9JGxpAY5opSaEFgt8UQvrnECWOTdji2mOWMz1rOhkHscmGQ==} engines: {node: '>=6.9.0'} dependencies: '@babel/template': 7.22.15 - '@babel/traverse': 7.23.0 + '@babel/traverse': 7.23.2 '@babel/types': 7.23.0 transitivePeerDependencies: - supports-color @@ -1424,140 +1424,140 @@ packages: dependencies: '@babel/types': 7.23.0 - /@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression@7.22.15(@babel/core@7.23.0): + /@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression@7.22.15(@babel/core@7.23.2): resolution: {integrity: sha512-FB9iYlz7rURmRJyXRKEnalYPPdn87H5no108cyuQQyMwlpJ2SJtpIUBI27kdTin956pz+LPypkPVPUTlxOmrsg==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0 dependencies: - '@babel/core': 7.23.0 + '@babel/core': 7.23.2 '@babel/helper-plugin-utils': 7.22.5 dev: true - /@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining@7.22.15(@babel/core@7.23.0): + /@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining@7.22.15(@babel/core@7.23.2): resolution: {integrity: sha512-Hyph9LseGvAeeXzikV88bczhsrLrIZqDPxO+sSmAunMPaGrBGhfMWzCPYTtiW9t+HzSE2wtV8e5cc5P6r1xMDQ==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.13.0 dependencies: - '@babel/core': 7.23.0 + '@babel/core': 7.23.2 '@babel/helper-plugin-utils': 7.22.5 '@babel/helper-skip-transparent-expression-wrappers': 7.22.5 - '@babel/plugin-transform-optional-chaining': 7.22.15(@babel/core@7.23.0) + '@babel/plugin-transform-optional-chaining': 7.22.15(@babel/core@7.23.2) dev: true - /@babel/plugin-proposal-async-generator-functions@7.20.7(@babel/core@7.23.0): + /@babel/plugin-proposal-async-generator-functions@7.20.7(@babel/core@7.23.2): resolution: {integrity: sha512-xMbiLsn/8RK7Wq7VeVytytS2L6qE69bXPB10YCmMdDZbKF4okCqY74pI/jJQ/8U0b/F6NrT2+14b8/P9/3AMGA==} engines: {node: '>=6.9.0'} deprecated: This proposal has been merged to the ECMAScript standard and thus this plugin is no longer maintained. Please use @babel/plugin-transform-async-generator-functions instead. peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.23.0 + '@babel/core': 7.23.2 '@babel/helper-environment-visitor': 7.22.5 '@babel/helper-plugin-utils': 7.22.5 - '@babel/helper-remap-async-to-generator': 7.22.9(@babel/core@7.23.0) - '@babel/plugin-syntax-async-generators': 7.8.4(@babel/core@7.23.0) + '@babel/helper-remap-async-to-generator': 7.22.9(@babel/core@7.23.2) + '@babel/plugin-syntax-async-generators': 7.8.4(@babel/core@7.23.2) dev: true - /@babel/plugin-proposal-class-properties@7.18.6(@babel/core@7.23.0): + /@babel/plugin-proposal-class-properties@7.18.6(@babel/core@7.23.2): resolution: {integrity: sha512-cumfXOF0+nzZrrN8Rf0t7M+tF6sZc7vhQwYQck9q1/5w2OExlD+b4v4RpMJFaV1Z7WcDRgO6FqvxqxGlwo+RHQ==} engines: {node: '>=6.9.0'} deprecated: This proposal has been merged to the ECMAScript standard and thus this plugin is no longer maintained. Please use @babel/plugin-transform-class-properties instead. peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.23.0 - '@babel/helper-create-class-features-plugin': 7.22.15(@babel/core@7.23.0) + '@babel/core': 7.23.2 + '@babel/helper-create-class-features-plugin': 7.22.15(@babel/core@7.23.2) '@babel/helper-plugin-utils': 7.22.5 dev: true - /@babel/plugin-proposal-class-static-block@7.21.0(@babel/core@7.23.0): + /@babel/plugin-proposal-class-static-block@7.21.0(@babel/core@7.23.2): resolution: {integrity: sha512-XP5G9MWNUskFuP30IfFSEFB0Z6HzLIUcjYM4bYOPHXl7eiJ9HFv8tWj6TXTN5QODiEhDZAeI4hLok2iHFFV4hw==} engines: {node: '>=6.9.0'} deprecated: This proposal has been merged to the ECMAScript standard and thus this plugin is no longer maintained. Please use @babel/plugin-transform-class-static-block instead. peerDependencies: '@babel/core': ^7.12.0 dependencies: - '@babel/core': 7.23.0 - '@babel/helper-create-class-features-plugin': 7.22.15(@babel/core@7.23.0) + '@babel/core': 7.23.2 + '@babel/helper-create-class-features-plugin': 7.22.15(@babel/core@7.23.2) '@babel/helper-plugin-utils': 7.22.5 - '@babel/plugin-syntax-class-static-block': 7.14.5(@babel/core@7.23.0) + '@babel/plugin-syntax-class-static-block': 7.14.5(@babel/core@7.23.2) dev: true - /@babel/plugin-proposal-dynamic-import@7.18.6(@babel/core@7.23.0): + /@babel/plugin-proposal-dynamic-import@7.18.6(@babel/core@7.23.2): resolution: {integrity: sha512-1auuwmK+Rz13SJj36R+jqFPMJWyKEDd7lLSdOj4oJK0UTgGueSAtkrCvz9ewmgyU/P941Rv2fQwZJN8s6QruXw==} engines: {node: '>=6.9.0'} deprecated: This proposal has been merged to the ECMAScript standard and thus this plugin is no longer maintained. Please use @babel/plugin-transform-dynamic-import instead. peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.23.0 + '@babel/core': 7.23.2 '@babel/helper-plugin-utils': 7.22.5 - '@babel/plugin-syntax-dynamic-import': 7.8.3(@babel/core@7.23.0) + '@babel/plugin-syntax-dynamic-import': 7.8.3(@babel/core@7.23.2) dev: true - /@babel/plugin-proposal-export-namespace-from@7.18.9(@babel/core@7.23.0): + /@babel/plugin-proposal-export-namespace-from@7.18.9(@babel/core@7.23.2): resolution: {integrity: sha512-k1NtHyOMvlDDFeb9G5PhUXuGj8m/wiwojgQVEhJ/fsVsMCpLyOP4h0uGEjYJKrRI+EVPlb5Jk+Gt9P97lOGwtA==} engines: {node: '>=6.9.0'} deprecated: This proposal has been merged to the ECMAScript standard and thus this plugin is no longer maintained. Please use @babel/plugin-transform-export-namespace-from instead. peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.23.0 + '@babel/core': 7.23.2 '@babel/helper-plugin-utils': 7.22.5 - '@babel/plugin-syntax-export-namespace-from': 7.8.3(@babel/core@7.23.0) + '@babel/plugin-syntax-export-namespace-from': 7.8.3(@babel/core@7.23.2) dev: true - /@babel/plugin-proposal-json-strings@7.18.6(@babel/core@7.23.0): + /@babel/plugin-proposal-json-strings@7.18.6(@babel/core@7.23.2): resolution: {integrity: sha512-lr1peyn9kOdbYc0xr0OdHTZ5FMqS6Di+H0Fz2I/JwMzGmzJETNeOFq2pBySw6X/KFL5EWDjlJuMsUGRFb8fQgQ==} engines: {node: '>=6.9.0'} deprecated: This proposal has been merged to the ECMAScript standard and thus this plugin is no longer maintained. Please use @babel/plugin-transform-json-strings instead. peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.23.0 + '@babel/core': 7.23.2 '@babel/helper-plugin-utils': 7.22.5 - '@babel/plugin-syntax-json-strings': 7.8.3(@babel/core@7.23.0) + '@babel/plugin-syntax-json-strings': 7.8.3(@babel/core@7.23.2) dev: true - /@babel/plugin-proposal-logical-assignment-operators@7.20.7(@babel/core@7.23.0): + /@babel/plugin-proposal-logical-assignment-operators@7.20.7(@babel/core@7.23.2): resolution: {integrity: sha512-y7C7cZgpMIjWlKE5T7eJwp+tnRYM89HmRvWM5EQuB5BoHEONjmQ8lSNmBUwOyy/GFRsohJED51YBF79hE1djug==} engines: {node: '>=6.9.0'} deprecated: This proposal has been merged to the ECMAScript standard and thus this plugin is no longer maintained. Please use @babel/plugin-transform-logical-assignment-operators instead. peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.23.0 + '@babel/core': 7.23.2 '@babel/helper-plugin-utils': 7.22.5 - '@babel/plugin-syntax-logical-assignment-operators': 7.10.4(@babel/core@7.23.0) + '@babel/plugin-syntax-logical-assignment-operators': 7.10.4(@babel/core@7.23.2) dev: true - /@babel/plugin-proposal-nullish-coalescing-operator@7.18.6(@babel/core@7.23.0): + /@babel/plugin-proposal-nullish-coalescing-operator@7.18.6(@babel/core@7.23.2): resolution: {integrity: sha512-wQxQzxYeJqHcfppzBDnm1yAY0jSRkUXR2z8RePZYrKwMKgMlE8+Z6LUno+bd6LvbGh8Gltvy74+9pIYkr+XkKA==} engines: {node: '>=6.9.0'} deprecated: This proposal has been merged to the ECMAScript standard and thus this plugin is no longer maintained. Please use @babel/plugin-transform-nullish-coalescing-operator instead. peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.23.0 + '@babel/core': 7.23.2 '@babel/helper-plugin-utils': 7.22.5 - '@babel/plugin-syntax-nullish-coalescing-operator': 7.8.3(@babel/core@7.23.0) + '@babel/plugin-syntax-nullish-coalescing-operator': 7.8.3(@babel/core@7.23.2) dev: true - /@babel/plugin-proposal-numeric-separator@7.18.6(@babel/core@7.23.0): + /@babel/plugin-proposal-numeric-separator@7.18.6(@babel/core@7.23.2): resolution: {integrity: sha512-ozlZFogPqoLm8WBr5Z8UckIoE4YQ5KESVcNudyXOR8uqIkliTEgJ3RoketfG6pmzLdeZF0H/wjE9/cCEitBl7Q==} engines: {node: '>=6.9.0'} deprecated: This proposal has been merged to the ECMAScript standard and thus this plugin is no longer maintained. Please use @babel/plugin-transform-numeric-separator instead. peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.23.0 + '@babel/core': 7.23.2 '@babel/helper-plugin-utils': 7.22.5 - '@babel/plugin-syntax-numeric-separator': 7.10.4(@babel/core@7.23.0) + '@babel/plugin-syntax-numeric-separator': 7.10.4(@babel/core@7.23.2) dev: true - /@babel/plugin-proposal-object-rest-spread@7.20.7(@babel/core@7.23.0): + /@babel/plugin-proposal-object-rest-spread@7.20.7(@babel/core@7.23.2): resolution: {integrity: sha512-d2S98yCiLxDVmBmE8UjGcfPvNEUbA1U5q5WxaWFUGRzJSVAZqm5W6MbPct0jxnegUZ0niLeNX+IOzEs7wYg9Dg==} engines: {node: '>=6.9.0'} deprecated: This proposal has been merged to the ECMAScript standard and thus this plugin is no longer maintained. Please use @babel/plugin-transform-object-rest-spread instead. @@ -1565,73 +1565,73 @@ packages: '@babel/core': ^7.0.0-0 dependencies: '@babel/compat-data': 7.22.9 - '@babel/core': 7.23.0 + '@babel/core': 7.23.2 '@babel/helper-compilation-targets': 7.22.15 '@babel/helper-plugin-utils': 7.22.5 - '@babel/plugin-syntax-object-rest-spread': 7.8.3(@babel/core@7.23.0) - '@babel/plugin-transform-parameters': 7.22.15(@babel/core@7.23.0) + '@babel/plugin-syntax-object-rest-spread': 7.8.3(@babel/core@7.23.2) + '@babel/plugin-transform-parameters': 7.22.15(@babel/core@7.23.2) dev: true - /@babel/plugin-proposal-optional-catch-binding@7.18.6(@babel/core@7.23.0): + /@babel/plugin-proposal-optional-catch-binding@7.18.6(@babel/core@7.23.2): resolution: {integrity: sha512-Q40HEhs9DJQyaZfUjjn6vE8Cv4GmMHCYuMGIWUnlxH6400VGxOuwWsPt4FxXxJkC/5eOzgn0z21M9gMT4MOhbw==} engines: {node: '>=6.9.0'} deprecated: This proposal has been merged to the ECMAScript standard and thus this plugin is no longer maintained. Please use @babel/plugin-transform-optional-catch-binding instead. peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.23.0 + '@babel/core': 7.23.2 '@babel/helper-plugin-utils': 7.22.5 - '@babel/plugin-syntax-optional-catch-binding': 7.8.3(@babel/core@7.23.0) + '@babel/plugin-syntax-optional-catch-binding': 7.8.3(@babel/core@7.23.2) dev: true - /@babel/plugin-proposal-optional-chaining@7.21.0(@babel/core@7.23.0): + /@babel/plugin-proposal-optional-chaining@7.21.0(@babel/core@7.23.2): resolution: {integrity: sha512-p4zeefM72gpmEe2fkUr/OnOXpWEf8nAgk7ZYVqqfFiyIG7oFfVZcCrU64hWn5xp4tQ9LkV4bTIa5rD0KANpKNA==} engines: {node: '>=6.9.0'} deprecated: This proposal has been merged to the ECMAScript standard and thus this plugin is no longer maintained. Please use @babel/plugin-transform-optional-chaining instead. peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.23.0 + '@babel/core': 7.23.2 '@babel/helper-plugin-utils': 7.22.5 '@babel/helper-skip-transparent-expression-wrappers': 7.22.5 - '@babel/plugin-syntax-optional-chaining': 7.8.3(@babel/core@7.23.0) + '@babel/plugin-syntax-optional-chaining': 7.8.3(@babel/core@7.23.2) dev: true - /@babel/plugin-proposal-private-methods@7.18.6(@babel/core@7.23.0): + /@babel/plugin-proposal-private-methods@7.18.6(@babel/core@7.23.2): resolution: {integrity: sha512-nutsvktDItsNn4rpGItSNV2sz1XwS+nfU0Rg8aCx3W3NOKVzdMjJRu0O5OkgDp3ZGICSTbgRpxZoWsxoKRvbeA==} engines: {node: '>=6.9.0'} deprecated: This proposal has been merged to the ECMAScript standard and thus this plugin is no longer maintained. Please use @babel/plugin-transform-private-methods instead. peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.23.0 - '@babel/helper-create-class-features-plugin': 7.22.15(@babel/core@7.23.0) + '@babel/core': 7.23.2 + '@babel/helper-create-class-features-plugin': 7.22.15(@babel/core@7.23.2) '@babel/helper-plugin-utils': 7.22.5 dev: true - /@babel/plugin-proposal-private-property-in-object@7.21.11(@babel/core@7.23.0): + /@babel/plugin-proposal-private-property-in-object@7.21.11(@babel/core@7.23.2): resolution: {integrity: sha512-0QZ8qP/3RLDVBwBFoWAwCtgcDZJVwA5LUJRZU8x2YFfKNuFq161wK3cuGrALu5yiPu+vzwTAg/sMWVNeWeNyaw==} engines: {node: '>=6.9.0'} deprecated: This proposal has been merged to the ECMAScript standard and thus this plugin is no longer maintained. Please use @babel/plugin-transform-private-property-in-object instead. peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.23.0 + '@babel/core': 7.23.2 '@babel/helper-annotate-as-pure': 7.22.5 - '@babel/helper-create-class-features-plugin': 7.22.15(@babel/core@7.23.0) + '@babel/helper-create-class-features-plugin': 7.22.15(@babel/core@7.23.2) '@babel/helper-plugin-utils': 7.22.5 - '@babel/plugin-syntax-private-property-in-object': 7.14.5(@babel/core@7.23.0) + '@babel/plugin-syntax-private-property-in-object': 7.14.5(@babel/core@7.23.2) dev: true - /@babel/plugin-proposal-unicode-property-regex@7.18.6(@babel/core@7.23.0): + /@babel/plugin-proposal-unicode-property-regex@7.18.6(@babel/core@7.23.2): resolution: {integrity: sha512-2BShG/d5yoZyXZfVePH91urL5wTG6ASZU9M4o03lKK8u8UW1y08OMttBSOADTcJrnPMpvDXRG3G8fyLh4ovs8w==} engines: {node: '>=4'} deprecated: This proposal has been merged to the ECMAScript standard and thus this plugin is no longer maintained. Please use @babel/plugin-transform-unicode-property-regex instead. peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.23.0 - '@babel/helper-create-regexp-features-plugin': 7.22.15(@babel/core@7.23.0) + '@babel/core': 7.23.2 + '@babel/helper-create-regexp-features-plugin': 7.22.15(@babel/core@7.23.2) '@babel/helper-plugin-utils': 7.22.5 dev: true @@ -1644,12 +1644,12 @@ packages: '@babel/helper-plugin-utils': 7.22.5 dev: true - /@babel/plugin-syntax-async-generators@7.8.4(@babel/core@7.23.0): + /@babel/plugin-syntax-async-generators@7.8.4(@babel/core@7.23.2): resolution: {integrity: sha512-tycmZxkGfZaxhMRbXlPXuVFpdWlXpir2W4AMhSJgRKzk/eDlIXOhb2LHWoLpDF7TEHylV5zNhykX6KAgHJmTNw==} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.23.0 + '@babel/core': 7.23.2 '@babel/helper-plugin-utils': 7.22.5 dev: true @@ -1662,12 +1662,12 @@ packages: '@babel/helper-plugin-utils': 7.22.5 dev: true - /@babel/plugin-syntax-bigint@7.8.3(@babel/core@7.23.0): + /@babel/plugin-syntax-bigint@7.8.3(@babel/core@7.23.2): resolution: {integrity: sha512-wnTnFlG+YxQm3vDxpGE57Pj0srRU4sHE/mDkt1qv2YJJSeUAec2ma4WLUnUPeKjyrfntVwe/N6dCXpU+zL3Npg==} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.23.0 + '@babel/core': 7.23.2 '@babel/helper-plugin-utils': 7.22.5 dev: true @@ -1680,40 +1680,40 @@ packages: '@babel/helper-plugin-utils': 7.22.5 dev: true - /@babel/plugin-syntax-class-properties@7.12.13(@babel/core@7.23.0): + /@babel/plugin-syntax-class-properties@7.12.13(@babel/core@7.23.2): resolution: {integrity: sha512-fm4idjKla0YahUNgFNLCB0qySdsoPiZP3iQE3rky0mBUtMZ23yDJ9SJdg6dXTSDnulOVqiF3Hgr9nbXvXTQZYA==} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.23.0 + '@babel/core': 7.23.2 '@babel/helper-plugin-utils': 7.22.5 dev: true - /@babel/plugin-syntax-class-static-block@7.14.5(@babel/core@7.23.0): + /@babel/plugin-syntax-class-static-block@7.14.5(@babel/core@7.23.2): resolution: {integrity: sha512-b+YyPmr6ldyNnM6sqYeMWE+bgJcJpO6yS4QD7ymxgH34GBPNDM/THBh8iunyvKIZztiwLH4CJZ0RxTk9emgpjw==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.23.0 + '@babel/core': 7.23.2 '@babel/helper-plugin-utils': 7.22.5 dev: true - /@babel/plugin-syntax-dynamic-import@7.8.3(@babel/core@7.23.0): + /@babel/plugin-syntax-dynamic-import@7.8.3(@babel/core@7.23.2): resolution: {integrity: sha512-5gdGbFon+PszYzqs83S3E5mpi7/y/8M9eC90MRTZfduQOYW76ig6SOSPNe41IG5LoP3FGBn2N0RjVDSQiS94kQ==} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.23.0 + '@babel/core': 7.23.2 '@babel/helper-plugin-utils': 7.22.5 dev: true - /@babel/plugin-syntax-export-namespace-from@7.8.3(@babel/core@7.23.0): + /@babel/plugin-syntax-export-namespace-from@7.8.3(@babel/core@7.23.2): resolution: {integrity: sha512-MXf5laXo6c1IbEbegDmzGPwGNTsHZmEy6QGznu5Sh2UCWvueywb2ee+CCE4zQiZstxU9BMoQO9i6zUFSY0Kj0Q==} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.23.0 + '@babel/core': 7.23.2 '@babel/helper-plugin-utils': 7.22.5 dev: true @@ -1726,12 +1726,12 @@ packages: '@babel/helper-plugin-utils': 7.22.5 dev: true - /@babel/plugin-syntax-import-meta@7.10.4(@babel/core@7.23.0): + /@babel/plugin-syntax-import-meta@7.10.4(@babel/core@7.23.2): resolution: {integrity: sha512-Yqfm+XDx0+Prh3VSeEQCPU81yC+JWZ2pDPFSS4ZdpfZhp4MkFMaDC1UqseovEKwSUpnIL7+vK+Clp7bfh0iD7g==} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.23.0 + '@babel/core': 7.23.2 '@babel/helper-plugin-utils': 7.22.5 dev: true @@ -1744,12 +1744,12 @@ packages: '@babel/helper-plugin-utils': 7.22.5 dev: true - /@babel/plugin-syntax-json-strings@7.8.3(@babel/core@7.23.0): + /@babel/plugin-syntax-json-strings@7.8.3(@babel/core@7.23.2): resolution: {integrity: sha512-lY6kdGpWHvjoe2vk4WrAapEuBR69EMxZl+RoGRhrFGNYVK8mOPAW8VfbT/ZgrFbXlDNiiaxQnAtgVCZ6jv30EA==} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.23.0 + '@babel/core': 7.23.2 '@babel/helper-plugin-utils': 7.22.5 dev: true @@ -1762,12 +1762,12 @@ packages: '@babel/helper-plugin-utils': 7.22.5 dev: true - /@babel/plugin-syntax-logical-assignment-operators@7.10.4(@babel/core@7.23.0): + /@babel/plugin-syntax-logical-assignment-operators@7.10.4(@babel/core@7.23.2): resolution: {integrity: sha512-d8waShlpFDinQ5MtvGU9xDAOzKH47+FFoney2baFIoMr952hKOLp1HR7VszoZvOsV/4+RRszNY7D17ba0te0ig==} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.23.0 + '@babel/core': 7.23.2 '@babel/helper-plugin-utils': 7.22.5 dev: true @@ -1780,12 +1780,12 @@ packages: '@babel/helper-plugin-utils': 7.22.5 dev: true - /@babel/plugin-syntax-nullish-coalescing-operator@7.8.3(@babel/core@7.23.0): + /@babel/plugin-syntax-nullish-coalescing-operator@7.8.3(@babel/core@7.23.2): resolution: {integrity: sha512-aSff4zPII1u2QD7y+F8oDsz19ew4IGEJg9SVW+bqwpwtfFleiQDMdzA/R+UlWDzfnHFCxxleFT0PMIrR36XLNQ==} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.23.0 + '@babel/core': 7.23.2 '@babel/helper-plugin-utils': 7.22.5 dev: true @@ -1798,12 +1798,12 @@ packages: '@babel/helper-plugin-utils': 7.22.5 dev: true - /@babel/plugin-syntax-numeric-separator@7.10.4(@babel/core@7.23.0): + /@babel/plugin-syntax-numeric-separator@7.10.4(@babel/core@7.23.2): resolution: {integrity: sha512-9H6YdfkcK/uOnY/K7/aA2xpzaAgkQn37yzWUMRK7OaPOqOpGS1+n0H5hxT9AUw9EsSjPW8SVyMJwYRtWs3X3ug==} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.23.0 + '@babel/core': 7.23.2 '@babel/helper-plugin-utils': 7.22.5 dev: true @@ -1816,12 +1816,12 @@ packages: '@babel/helper-plugin-utils': 7.22.5 dev: true - /@babel/plugin-syntax-object-rest-spread@7.8.3(@babel/core@7.23.0): + /@babel/plugin-syntax-object-rest-spread@7.8.3(@babel/core@7.23.2): resolution: {integrity: sha512-XoqMijGZb9y3y2XskN+P1wUGiVwWZ5JmoDRwx5+3GmEplNyVM2s2Dg8ILFQm8rWM48orGy5YpI5Bl8U1y7ydlA==} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.23.0 + '@babel/core': 7.23.2 '@babel/helper-plugin-utils': 7.22.5 dev: true @@ -1834,12 +1834,12 @@ packages: '@babel/helper-plugin-utils': 7.22.5 dev: true - /@babel/plugin-syntax-optional-catch-binding@7.8.3(@babel/core@7.23.0): + /@babel/plugin-syntax-optional-catch-binding@7.8.3(@babel/core@7.23.2): resolution: {integrity: sha512-6VPD0Pc1lpTqw0aKoeRTMiB+kWhAoT24PA+ksWSBrFtl5SIRVpZlwN3NNPQjehA2E/91FV3RjLWoVTglWcSV3Q==} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.23.0 + '@babel/core': 7.23.2 '@babel/helper-plugin-utils': 7.22.5 dev: true @@ -1852,22 +1852,22 @@ packages: '@babel/helper-plugin-utils': 7.22.5 dev: true - /@babel/plugin-syntax-optional-chaining@7.8.3(@babel/core@7.23.0): + /@babel/plugin-syntax-optional-chaining@7.8.3(@babel/core@7.23.2): resolution: {integrity: sha512-KoK9ErH1MBlCPxV0VANkXW2/dw4vlbGDrFgz8bmUsBGYkFRcbRwMh6cIJubdPrkxRwuGdtCk0v/wPTKbQgBjkg==} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.23.0 + '@babel/core': 7.23.2 '@babel/helper-plugin-utils': 7.22.5 dev: true - /@babel/plugin-syntax-private-property-in-object@7.14.5(@babel/core@7.23.0): + /@babel/plugin-syntax-private-property-in-object@7.14.5(@babel/core@7.23.2): resolution: {integrity: sha512-0wVnp9dxJ72ZUJDV27ZfbSj6iHLoytYZmh3rFcxNnvsJF3ktkzLDZPy/mA17HGsaQT3/DQsWYX1f1QGWkCoVUg==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.23.0 + '@babel/core': 7.23.2 '@babel/helper-plugin-utils': 7.22.5 dev: true @@ -1881,13 +1881,13 @@ packages: '@babel/helper-plugin-utils': 7.22.5 dev: true - /@babel/plugin-syntax-top-level-await@7.14.5(@babel/core@7.23.0): + /@babel/plugin-syntax-top-level-await@7.14.5(@babel/core@7.23.2): resolution: {integrity: sha512-hx++upLv5U1rgYfwe1xBQUhRmU41NEvpUvrp8jkrSCdvGSnM5/qdRMtylJ6PG5OFkBaHkbTAKTnd3/YyESRHFw==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.23.0 + '@babel/core': 7.23.2 '@babel/helper-plugin-utils': 7.22.5 dev: true @@ -1901,476 +1901,476 @@ packages: '@babel/helper-plugin-utils': 7.22.5 dev: true - /@babel/plugin-transform-arrow-functions@7.22.5(@babel/core@7.23.0): + /@babel/plugin-transform-arrow-functions@7.22.5(@babel/core@7.23.2): resolution: {integrity: sha512-26lTNXoVRdAnsaDXPpvCNUq+OVWEVC6bx7Vvz9rC53F2bagUWW4u4ii2+h8Fejfh7RYqPxn+libeFBBck9muEw==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.23.0 + '@babel/core': 7.23.2 '@babel/helper-plugin-utils': 7.22.5 dev: true - /@babel/plugin-transform-async-to-generator@7.22.5(@babel/core@7.23.0): + /@babel/plugin-transform-async-to-generator@7.22.5(@babel/core@7.23.2): resolution: {integrity: sha512-b1A8D8ZzE/VhNDoV1MSJTnpKkCG5bJo+19R4o4oy03zM7ws8yEMK755j61Dc3EyvdysbqH5BOOTquJ7ZX9C6vQ==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.23.0 + '@babel/core': 7.23.2 '@babel/helper-module-imports': 7.22.15 '@babel/helper-plugin-utils': 7.22.5 - '@babel/helper-remap-async-to-generator': 7.22.9(@babel/core@7.23.0) + '@babel/helper-remap-async-to-generator': 7.22.9(@babel/core@7.23.2) dev: true - /@babel/plugin-transform-block-scoped-functions@7.22.5(@babel/core@7.23.0): + /@babel/plugin-transform-block-scoped-functions@7.22.5(@babel/core@7.23.2): resolution: {integrity: sha512-tdXZ2UdknEKQWKJP1KMNmuF5Lx3MymtMN/pvA+p/VEkhK8jVcQ1fzSy8KM9qRYhAf2/lV33hoMPKI/xaI9sADA==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.23.0 + '@babel/core': 7.23.2 '@babel/helper-plugin-utils': 7.22.5 dev: true - /@babel/plugin-transform-block-scoping@7.22.15(@babel/core@7.23.0): + /@babel/plugin-transform-block-scoping@7.22.15(@babel/core@7.23.2): resolution: {integrity: sha512-G1czpdJBZCtngoK1sJgloLiOHUnkb/bLZwqVZD8kXmq0ZnVfTTWUcs9OWtp0mBtYJ+4LQY1fllqBkOIPhXmFmw==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.23.0 + '@babel/core': 7.23.2 '@babel/helper-plugin-utils': 7.22.5 dev: true - /@babel/plugin-transform-classes@7.22.15(@babel/core@7.23.0): + /@babel/plugin-transform-classes@7.22.15(@babel/core@7.23.2): resolution: {integrity: sha512-VbbC3PGjBdE0wAWDdHM9G8Gm977pnYI0XpqMd6LrKISj8/DJXEsWqgRuTYaNE9Bv0JGhTZUzHDlMk18IpOuoqw==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.23.0 + '@babel/core': 7.23.2 '@babel/helper-annotate-as-pure': 7.22.5 '@babel/helper-compilation-targets': 7.22.15 '@babel/helper-environment-visitor': 7.22.5 '@babel/helper-function-name': 7.22.5 '@babel/helper-optimise-call-expression': 7.22.5 '@babel/helper-plugin-utils': 7.22.5 - '@babel/helper-replace-supers': 7.22.9(@babel/core@7.23.0) + '@babel/helper-replace-supers': 7.22.9(@babel/core@7.23.2) '@babel/helper-split-export-declaration': 7.22.6 globals: 11.12.0 dev: true - /@babel/plugin-transform-computed-properties@7.22.5(@babel/core@7.23.0): + /@babel/plugin-transform-computed-properties@7.22.5(@babel/core@7.23.2): resolution: {integrity: sha512-4GHWBgRf0krxPX+AaPtgBAlTgTeZmqDynokHOX7aqqAB4tHs3U2Y02zH6ETFdLZGcg9UQSD1WCmkVrE9ErHeOg==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.23.0 + '@babel/core': 7.23.2 '@babel/helper-plugin-utils': 7.22.5 '@babel/template': 7.22.15 dev: true - /@babel/plugin-transform-destructuring@7.22.15(@babel/core@7.23.0): + /@babel/plugin-transform-destructuring@7.22.15(@babel/core@7.23.2): resolution: {integrity: sha512-HzG8sFl1ZVGTme74Nw+X01XsUTqERVQ6/RLHo3XjGRzm7XD6QTtfS3NJotVgCGy8BzkDqRjRBD8dAyJn5TuvSQ==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.23.0 + '@babel/core': 7.23.2 '@babel/helper-plugin-utils': 7.22.5 dev: true - /@babel/plugin-transform-dotall-regex@7.22.5(@babel/core@7.23.0): + /@babel/plugin-transform-dotall-regex@7.22.5(@babel/core@7.23.2): resolution: {integrity: sha512-5/Yk9QxCQCl+sOIB1WelKnVRxTJDSAIxtJLL2/pqL14ZVlbH0fUQUZa/T5/UnQtBNgghR7mfB8ERBKyKPCi7Vw==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.23.0 - '@babel/helper-create-regexp-features-plugin': 7.22.15(@babel/core@7.23.0) + '@babel/core': 7.23.2 + '@babel/helper-create-regexp-features-plugin': 7.22.15(@babel/core@7.23.2) '@babel/helper-plugin-utils': 7.22.5 dev: true - /@babel/plugin-transform-duplicate-keys@7.22.5(@babel/core@7.23.0): + /@babel/plugin-transform-duplicate-keys@7.22.5(@babel/core@7.23.2): resolution: {integrity: sha512-dEnYD+9BBgld5VBXHnF/DbYGp3fqGMsyxKbtD1mDyIA7AkTSpKXFhCVuj/oQVOoALfBs77DudA0BE4d5mcpmqw==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.23.0 + '@babel/core': 7.23.2 '@babel/helper-plugin-utils': 7.22.5 dev: true - /@babel/plugin-transform-exponentiation-operator@7.22.5(@babel/core@7.23.0): + /@babel/plugin-transform-exponentiation-operator@7.22.5(@babel/core@7.23.2): resolution: {integrity: sha512-vIpJFNM/FjZ4rh1myqIya9jXwrwwgFRHPjT3DkUA9ZLHuzox8jiXkOLvwm1H+PQIP3CqfC++WPKeuDi0Sjdj1g==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.23.0 + '@babel/core': 7.23.2 '@babel/helper-builder-binary-assignment-operator-visitor': 7.22.15 '@babel/helper-plugin-utils': 7.22.5 dev: true - /@babel/plugin-transform-for-of@7.22.15(@babel/core@7.23.0): + /@babel/plugin-transform-for-of@7.22.15(@babel/core@7.23.2): resolution: {integrity: sha512-me6VGeHsx30+xh9fbDLLPi0J1HzmeIIyenoOQHuw2D4m2SAU3NrspX5XxJLBpqn5yrLzrlw2Iy3RA//Bx27iOA==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.23.0 + '@babel/core': 7.23.2 '@babel/helper-plugin-utils': 7.22.5 dev: true - /@babel/plugin-transform-function-name@7.22.5(@babel/core@7.23.0): + /@babel/plugin-transform-function-name@7.22.5(@babel/core@7.23.2): resolution: {integrity: sha512-UIzQNMS0p0HHiQm3oelztj+ECwFnj+ZRV4KnguvlsD2of1whUeM6o7wGNj6oLwcDoAXQ8gEqfgC24D+VdIcevg==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.23.0 + '@babel/core': 7.23.2 '@babel/helper-compilation-targets': 7.22.15 '@babel/helper-function-name': 7.22.5 '@babel/helper-plugin-utils': 7.22.5 dev: true - /@babel/plugin-transform-literals@7.22.5(@babel/core@7.23.0): + /@babel/plugin-transform-literals@7.22.5(@babel/core@7.23.2): resolution: {integrity: sha512-fTLj4D79M+mepcw3dgFBTIDYpbcB9Sm0bpm4ppXPaO+U+PKFFyV9MGRvS0gvGw62sd10kT5lRMKXAADb9pWy8g==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.23.0 + '@babel/core': 7.23.2 '@babel/helper-plugin-utils': 7.22.5 dev: true - /@babel/plugin-transform-member-expression-literals@7.22.5(@babel/core@7.23.0): + /@babel/plugin-transform-member-expression-literals@7.22.5(@babel/core@7.23.2): resolution: {integrity: sha512-RZEdkNtzzYCFl9SE9ATaUMTj2hqMb4StarOJLrZRbqqU4HSBE7UlBw9WBWQiDzrJZJdUWiMTVDI6Gv/8DPvfew==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.23.0 + '@babel/core': 7.23.2 '@babel/helper-plugin-utils': 7.22.5 dev: true - /@babel/plugin-transform-modules-amd@7.22.5(@babel/core@7.23.0): + /@babel/plugin-transform-modules-amd@7.22.5(@babel/core@7.23.2): resolution: {integrity: sha512-R+PTfLTcYEmb1+kK7FNkhQ1gP4KgjpSO6HfH9+f8/yfp2Nt3ggBjiVpRwmwTlfqZLafYKJACy36yDXlEmI9HjQ==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.23.0 - '@babel/helper-module-transforms': 7.22.15(@babel/core@7.23.0) + '@babel/core': 7.23.2 + '@babel/helper-module-transforms': 7.22.15(@babel/core@7.23.2) '@babel/helper-plugin-utils': 7.22.5 dev: true - /@babel/plugin-transform-modules-commonjs@7.22.15(@babel/core@7.23.0): + /@babel/plugin-transform-modules-commonjs@7.22.15(@babel/core@7.23.2): resolution: {integrity: sha512-jWL4eh90w0HQOTKP2MoXXUpVxilxsB2Vl4ji69rSjS3EcZ/v4sBmn+A3NpepuJzBhOaEBbR7udonlHHn5DWidg==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.23.0 - '@babel/helper-module-transforms': 7.22.15(@babel/core@7.23.0) + '@babel/core': 7.23.2 + '@babel/helper-module-transforms': 7.22.15(@babel/core@7.23.2) '@babel/helper-plugin-utils': 7.22.5 '@babel/helper-simple-access': 7.22.5 dev: true - /@babel/plugin-transform-modules-systemjs@7.22.11(@babel/core@7.23.0): + /@babel/plugin-transform-modules-systemjs@7.22.11(@babel/core@7.23.2): resolution: {integrity: sha512-rIqHmHoMEOhI3VkVf5jQ15l539KrwhzqcBO6wdCNWPWc/JWt9ILNYNUssbRpeq0qWns8svuw8LnMNCvWBIJ8wA==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.23.0 + '@babel/core': 7.23.2 '@babel/helper-hoist-variables': 7.22.5 - '@babel/helper-module-transforms': 7.22.15(@babel/core@7.23.0) + '@babel/helper-module-transforms': 7.22.15(@babel/core@7.23.2) '@babel/helper-plugin-utils': 7.22.5 '@babel/helper-validator-identifier': 7.22.15 dev: true - /@babel/plugin-transform-modules-umd@7.22.5(@babel/core@7.23.0): + /@babel/plugin-transform-modules-umd@7.22.5(@babel/core@7.23.2): resolution: {integrity: sha512-+S6kzefN/E1vkSsKx8kmQuqeQsvCKCd1fraCM7zXm4SFoggI099Tr4G8U81+5gtMdUeMQ4ipdQffbKLX0/7dBQ==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.23.0 - '@babel/helper-module-transforms': 7.22.15(@babel/core@7.23.0) + '@babel/core': 7.23.2 + '@babel/helper-module-transforms': 7.22.15(@babel/core@7.23.2) '@babel/helper-plugin-utils': 7.22.5 dev: true - /@babel/plugin-transform-named-capturing-groups-regex@7.22.5(@babel/core@7.23.0): + /@babel/plugin-transform-named-capturing-groups-regex@7.22.5(@babel/core@7.23.2): resolution: {integrity: sha512-YgLLKmS3aUBhHaxp5hi1WJTgOUb/NCuDHzGT9z9WTt3YG+CPRhJs6nprbStx6DnWM4dh6gt7SU3sZodbZ08adQ==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0 dependencies: - '@babel/core': 7.23.0 - '@babel/helper-create-regexp-features-plugin': 7.22.15(@babel/core@7.23.0) + '@babel/core': 7.23.2 + '@babel/helper-create-regexp-features-plugin': 7.22.15(@babel/core@7.23.2) '@babel/helper-plugin-utils': 7.22.5 dev: true - /@babel/plugin-transform-new-target@7.22.5(@babel/core@7.23.0): + /@babel/plugin-transform-new-target@7.22.5(@babel/core@7.23.2): resolution: {integrity: sha512-AsF7K0Fx/cNKVyk3a+DW0JLo+Ua598/NxMRvxDnkpCIGFh43+h/v2xyhRUYf6oD8gE4QtL83C7zZVghMjHd+iw==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.23.0 + '@babel/core': 7.23.2 '@babel/helper-plugin-utils': 7.22.5 dev: true - /@babel/plugin-transform-object-super@7.22.5(@babel/core@7.23.0): + /@babel/plugin-transform-object-super@7.22.5(@babel/core@7.23.2): resolution: {integrity: sha512-klXqyaT9trSjIUrcsYIfETAzmOEZL3cBYqOYLJxBHfMFFggmXOv+NYSX/Jbs9mzMVESw/WycLFPRx8ba/b2Ipw==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.23.0 + '@babel/core': 7.23.2 '@babel/helper-plugin-utils': 7.22.5 - '@babel/helper-replace-supers': 7.22.9(@babel/core@7.23.0) + '@babel/helper-replace-supers': 7.22.9(@babel/core@7.23.2) dev: true - /@babel/plugin-transform-optional-chaining@7.22.15(@babel/core@7.23.0): + /@babel/plugin-transform-optional-chaining@7.22.15(@babel/core@7.23.2): resolution: {integrity: sha512-ngQ2tBhq5vvSJw2Q2Z9i7ealNkpDMU0rGWnHPKqRZO0tzZ5tlaoz4hDvhXioOoaE0X2vfNss1djwg0DXlfu30A==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.23.0 + '@babel/core': 7.23.2 '@babel/helper-plugin-utils': 7.22.5 '@babel/helper-skip-transparent-expression-wrappers': 7.22.5 - '@babel/plugin-syntax-optional-chaining': 7.8.3(@babel/core@7.23.0) + '@babel/plugin-syntax-optional-chaining': 7.8.3(@babel/core@7.23.2) dev: true - /@babel/plugin-transform-parameters@7.22.15(@babel/core@7.23.0): + /@babel/plugin-transform-parameters@7.22.15(@babel/core@7.23.2): resolution: {integrity: sha512-hjk7qKIqhyzhhUvRT683TYQOFa/4cQKwQy7ALvTpODswN40MljzNDa0YldevS6tGbxwaEKVn502JmY0dP7qEtQ==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.23.0 + '@babel/core': 7.23.2 '@babel/helper-plugin-utils': 7.22.5 dev: true - /@babel/plugin-transform-property-literals@7.22.5(@babel/core@7.23.0): + /@babel/plugin-transform-property-literals@7.22.5(@babel/core@7.23.2): resolution: {integrity: sha512-TiOArgddK3mK/x1Qwf5hay2pxI6wCZnvQqrFSqbtg1GLl2JcNMitVH/YnqjP+M31pLUeTfzY1HAXFDnUBV30rQ==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.23.0 + '@babel/core': 7.23.2 '@babel/helper-plugin-utils': 7.22.5 dev: true - /@babel/plugin-transform-regenerator@7.22.10(@babel/core@7.23.0): + /@babel/plugin-transform-regenerator@7.22.10(@babel/core@7.23.2): resolution: {integrity: sha512-F28b1mDt8KcT5bUyJc/U9nwzw6cV+UmTeRlXYIl2TNqMMJif0Jeey9/RQ3C4NOd2zp0/TRsDns9ttj2L523rsw==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.23.0 + '@babel/core': 7.23.2 '@babel/helper-plugin-utils': 7.22.5 regenerator-transform: 0.15.2 dev: true - /@babel/plugin-transform-reserved-words@7.22.5(@babel/core@7.23.0): + /@babel/plugin-transform-reserved-words@7.22.5(@babel/core@7.23.2): resolution: {integrity: sha512-DTtGKFRQUDm8svigJzZHzb/2xatPc6TzNvAIJ5GqOKDsGFYgAskjRulbR/vGsPKq3OPqtexnz327qYpP57RFyA==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.23.0 + '@babel/core': 7.23.2 '@babel/helper-plugin-utils': 7.22.5 dev: true - /@babel/plugin-transform-runtime@7.22.15(@babel/core@7.23.0): + /@babel/plugin-transform-runtime@7.22.15(@babel/core@7.23.2): resolution: {integrity: sha512-tEVLhk8NRZSmwQ0DJtxxhTrCht1HVo8VaMzYT4w6lwyKBuHsgoioAUA7/6eT2fRfc5/23fuGdlwIxXhRVgWr4g==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.23.0 + '@babel/core': 7.23.2 '@babel/helper-module-imports': 7.22.15 '@babel/helper-plugin-utils': 7.22.5 - babel-plugin-polyfill-corejs2: 0.4.5(@babel/core@7.23.0) - babel-plugin-polyfill-corejs3: 0.8.3(@babel/core@7.23.0) - babel-plugin-polyfill-regenerator: 0.5.2(@babel/core@7.23.0) + babel-plugin-polyfill-corejs2: 0.4.5(@babel/core@7.23.2) + babel-plugin-polyfill-corejs3: 0.8.3(@babel/core@7.23.2) + babel-plugin-polyfill-regenerator: 0.5.2(@babel/core@7.23.2) semver: 6.3.1 transitivePeerDependencies: - supports-color dev: false - /@babel/plugin-transform-shorthand-properties@7.22.5(@babel/core@7.23.0): + /@babel/plugin-transform-shorthand-properties@7.22.5(@babel/core@7.23.2): resolution: {integrity: sha512-vM4fq9IXHscXVKzDv5itkO1X52SmdFBFcMIBZ2FRn2nqVYqw6dBexUgMvAjHW+KXpPPViD/Yo3GrDEBaRC0QYA==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.23.0 + '@babel/core': 7.23.2 '@babel/helper-plugin-utils': 7.22.5 dev: true - /@babel/plugin-transform-spread@7.22.5(@babel/core@7.23.0): + /@babel/plugin-transform-spread@7.22.5(@babel/core@7.23.2): resolution: {integrity: sha512-5ZzDQIGyvN4w8+dMmpohL6MBo+l2G7tfC/O2Dg7/hjpgeWvUx8FzfeOKxGog9IimPa4YekaQ9PlDqTLOljkcxg==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.23.0 + '@babel/core': 7.23.2 '@babel/helper-plugin-utils': 7.22.5 '@babel/helper-skip-transparent-expression-wrappers': 7.22.5 dev: true - /@babel/plugin-transform-sticky-regex@7.22.5(@babel/core@7.23.0): + /@babel/plugin-transform-sticky-regex@7.22.5(@babel/core@7.23.2): resolution: {integrity: sha512-zf7LuNpHG0iEeiyCNwX4j3gDg1jgt1k3ZdXBKbZSoA3BbGQGvMiSvfbZRR3Dr3aeJe3ooWFZxOOG3IRStYp2Bw==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.23.0 + '@babel/core': 7.23.2 '@babel/helper-plugin-utils': 7.22.5 dev: true - /@babel/plugin-transform-template-literals@7.22.5(@babel/core@7.23.0): + /@babel/plugin-transform-template-literals@7.22.5(@babel/core@7.23.2): resolution: {integrity: sha512-5ciOehRNf+EyUeewo8NkbQiUs4d6ZxiHo6BcBcnFlgiJfu16q0bQUw9Jvo0b0gBKFG1SMhDSjeKXSYuJLeFSMA==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.23.0 + '@babel/core': 7.23.2 '@babel/helper-plugin-utils': 7.22.5 dev: true - /@babel/plugin-transform-typeof-symbol@7.22.5(@babel/core@7.23.0): + /@babel/plugin-transform-typeof-symbol@7.22.5(@babel/core@7.23.2): resolution: {integrity: sha512-bYkI5lMzL4kPii4HHEEChkD0rkc+nvnlR6+o/qdqR6zrm0Sv/nodmyLhlq2DO0YKLUNd2VePmPRjJXSBh9OIdA==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.23.0 + '@babel/core': 7.23.2 '@babel/helper-plugin-utils': 7.22.5 dev: true - /@babel/plugin-transform-unicode-escapes@7.22.10(@babel/core@7.23.0): + /@babel/plugin-transform-unicode-escapes@7.22.10(@babel/core@7.23.2): resolution: {integrity: sha512-lRfaRKGZCBqDlRU3UIFovdp9c9mEvlylmpod0/OatICsSfuQ9YFthRo1tpTkGsklEefZdqlEFdY4A2dwTb6ohg==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.23.0 + '@babel/core': 7.23.2 '@babel/helper-plugin-utils': 7.22.5 dev: true - /@babel/plugin-transform-unicode-regex@7.22.5(@babel/core@7.23.0): + /@babel/plugin-transform-unicode-regex@7.22.5(@babel/core@7.23.2): resolution: {integrity: sha512-028laaOKptN5vHJf9/Arr/HiJekMd41hOEZYvNsrsXqJ7YPYuX2bQxh31fkZzGmq3YqHRJzYFFAVYvKfMPKqyg==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.23.0 - '@babel/helper-create-regexp-features-plugin': 7.22.15(@babel/core@7.23.0) + '@babel/core': 7.23.2 + '@babel/helper-create-regexp-features-plugin': 7.22.15(@babel/core@7.23.2) '@babel/helper-plugin-utils': 7.22.5 dev: true - /@babel/preset-env@7.16.0(@babel/core@7.23.0): + /@babel/preset-env@7.16.0(@babel/core@7.23.2): resolution: {integrity: sha512-cdTu/W0IrviamtnZiTfixPfIncr2M1VqRrkjzZWlr1B4TVYimCFK5jkyOdP4qw2MrlKHi+b3ORj6x8GoCew8Dg==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: '@babel/compat-data': 7.22.9 - '@babel/core': 7.23.0 + '@babel/core': 7.23.2 '@babel/helper-compilation-targets': 7.22.15 '@babel/helper-plugin-utils': 7.22.5 '@babel/helper-validator-option': 7.22.15 - '@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression': 7.22.15(@babel/core@7.23.0) - '@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining': 7.22.15(@babel/core@7.23.0) - '@babel/plugin-proposal-async-generator-functions': 7.20.7(@babel/core@7.23.0) - '@babel/plugin-proposal-class-properties': 7.18.6(@babel/core@7.23.0) - '@babel/plugin-proposal-class-static-block': 7.21.0(@babel/core@7.23.0) - '@babel/plugin-proposal-dynamic-import': 7.18.6(@babel/core@7.23.0) - '@babel/plugin-proposal-export-namespace-from': 7.18.9(@babel/core@7.23.0) - '@babel/plugin-proposal-json-strings': 7.18.6(@babel/core@7.23.0) - '@babel/plugin-proposal-logical-assignment-operators': 7.20.7(@babel/core@7.23.0) - '@babel/plugin-proposal-nullish-coalescing-operator': 7.18.6(@babel/core@7.23.0) - '@babel/plugin-proposal-numeric-separator': 7.18.6(@babel/core@7.23.0) - '@babel/plugin-proposal-object-rest-spread': 7.20.7(@babel/core@7.23.0) - '@babel/plugin-proposal-optional-catch-binding': 7.18.6(@babel/core@7.23.0) - '@babel/plugin-proposal-optional-chaining': 7.21.0(@babel/core@7.23.0) - '@babel/plugin-proposal-private-methods': 7.18.6(@babel/core@7.23.0) - '@babel/plugin-proposal-private-property-in-object': 7.21.11(@babel/core@7.23.0) - '@babel/plugin-proposal-unicode-property-regex': 7.18.6(@babel/core@7.23.0) - '@babel/plugin-syntax-async-generators': 7.8.4(@babel/core@7.23.0) - '@babel/plugin-syntax-class-properties': 7.12.13(@babel/core@7.23.0) - '@babel/plugin-syntax-class-static-block': 7.14.5(@babel/core@7.23.0) - '@babel/plugin-syntax-dynamic-import': 7.8.3(@babel/core@7.23.0) - '@babel/plugin-syntax-export-namespace-from': 7.8.3(@babel/core@7.23.0) - '@babel/plugin-syntax-json-strings': 7.8.3(@babel/core@7.23.0) - '@babel/plugin-syntax-logical-assignment-operators': 7.10.4(@babel/core@7.23.0) - '@babel/plugin-syntax-nullish-coalescing-operator': 7.8.3(@babel/core@7.23.0) - '@babel/plugin-syntax-numeric-separator': 7.10.4(@babel/core@7.23.0) - '@babel/plugin-syntax-object-rest-spread': 7.8.3(@babel/core@7.23.0) - '@babel/plugin-syntax-optional-catch-binding': 7.8.3(@babel/core@7.23.0) - '@babel/plugin-syntax-optional-chaining': 7.8.3(@babel/core@7.23.0) - '@babel/plugin-syntax-private-property-in-object': 7.14.5(@babel/core@7.23.0) - '@babel/plugin-syntax-top-level-await': 7.14.5(@babel/core@7.23.0) - '@babel/plugin-transform-arrow-functions': 7.22.5(@babel/core@7.23.0) - '@babel/plugin-transform-async-to-generator': 7.22.5(@babel/core@7.23.0) - '@babel/plugin-transform-block-scoped-functions': 7.22.5(@babel/core@7.23.0) - '@babel/plugin-transform-block-scoping': 7.22.15(@babel/core@7.23.0) - '@babel/plugin-transform-classes': 7.22.15(@babel/core@7.23.0) - '@babel/plugin-transform-computed-properties': 7.22.5(@babel/core@7.23.0) - '@babel/plugin-transform-destructuring': 7.22.15(@babel/core@7.23.0) - '@babel/plugin-transform-dotall-regex': 7.22.5(@babel/core@7.23.0) - '@babel/plugin-transform-duplicate-keys': 7.22.5(@babel/core@7.23.0) - '@babel/plugin-transform-exponentiation-operator': 7.22.5(@babel/core@7.23.0) - '@babel/plugin-transform-for-of': 7.22.15(@babel/core@7.23.0) - '@babel/plugin-transform-function-name': 7.22.5(@babel/core@7.23.0) - '@babel/plugin-transform-literals': 7.22.5(@babel/core@7.23.0) - '@babel/plugin-transform-member-expression-literals': 7.22.5(@babel/core@7.23.0) - '@babel/plugin-transform-modules-amd': 7.22.5(@babel/core@7.23.0) - '@babel/plugin-transform-modules-commonjs': 7.22.15(@babel/core@7.23.0) - '@babel/plugin-transform-modules-systemjs': 7.22.11(@babel/core@7.23.0) - '@babel/plugin-transform-modules-umd': 7.22.5(@babel/core@7.23.0) - '@babel/plugin-transform-named-capturing-groups-regex': 7.22.5(@babel/core@7.23.0) - '@babel/plugin-transform-new-target': 7.22.5(@babel/core@7.23.0) - '@babel/plugin-transform-object-super': 7.22.5(@babel/core@7.23.0) - '@babel/plugin-transform-parameters': 7.22.15(@babel/core@7.23.0) - '@babel/plugin-transform-property-literals': 7.22.5(@babel/core@7.23.0) - '@babel/plugin-transform-regenerator': 7.22.10(@babel/core@7.23.0) - '@babel/plugin-transform-reserved-words': 7.22.5(@babel/core@7.23.0) - '@babel/plugin-transform-shorthand-properties': 7.22.5(@babel/core@7.23.0) - '@babel/plugin-transform-spread': 7.22.5(@babel/core@7.23.0) - '@babel/plugin-transform-sticky-regex': 7.22.5(@babel/core@7.23.0) - '@babel/plugin-transform-template-literals': 7.22.5(@babel/core@7.23.0) - '@babel/plugin-transform-typeof-symbol': 7.22.5(@babel/core@7.23.0) - '@babel/plugin-transform-unicode-escapes': 7.22.10(@babel/core@7.23.0) - '@babel/plugin-transform-unicode-regex': 7.22.5(@babel/core@7.23.0) - '@babel/preset-modules': 0.1.6(@babel/core@7.23.0) + '@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression': 7.22.15(@babel/core@7.23.2) + '@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining': 7.22.15(@babel/core@7.23.2) + '@babel/plugin-proposal-async-generator-functions': 7.20.7(@babel/core@7.23.2) + '@babel/plugin-proposal-class-properties': 7.18.6(@babel/core@7.23.2) + '@babel/plugin-proposal-class-static-block': 7.21.0(@babel/core@7.23.2) + '@babel/plugin-proposal-dynamic-import': 7.18.6(@babel/core@7.23.2) + '@babel/plugin-proposal-export-namespace-from': 7.18.9(@babel/core@7.23.2) + '@babel/plugin-proposal-json-strings': 7.18.6(@babel/core@7.23.2) + '@babel/plugin-proposal-logical-assignment-operators': 7.20.7(@babel/core@7.23.2) + '@babel/plugin-proposal-nullish-coalescing-operator': 7.18.6(@babel/core@7.23.2) + '@babel/plugin-proposal-numeric-separator': 7.18.6(@babel/core@7.23.2) + '@babel/plugin-proposal-object-rest-spread': 7.20.7(@babel/core@7.23.2) + '@babel/plugin-proposal-optional-catch-binding': 7.18.6(@babel/core@7.23.2) + '@babel/plugin-proposal-optional-chaining': 7.21.0(@babel/core@7.23.2) + '@babel/plugin-proposal-private-methods': 7.18.6(@babel/core@7.23.2) + '@babel/plugin-proposal-private-property-in-object': 7.21.11(@babel/core@7.23.2) + '@babel/plugin-proposal-unicode-property-regex': 7.18.6(@babel/core@7.23.2) + '@babel/plugin-syntax-async-generators': 7.8.4(@babel/core@7.23.2) + '@babel/plugin-syntax-class-properties': 7.12.13(@babel/core@7.23.2) + '@babel/plugin-syntax-class-static-block': 7.14.5(@babel/core@7.23.2) + '@babel/plugin-syntax-dynamic-import': 7.8.3(@babel/core@7.23.2) + '@babel/plugin-syntax-export-namespace-from': 7.8.3(@babel/core@7.23.2) + '@babel/plugin-syntax-json-strings': 7.8.3(@babel/core@7.23.2) + '@babel/plugin-syntax-logical-assignment-operators': 7.10.4(@babel/core@7.23.2) + '@babel/plugin-syntax-nullish-coalescing-operator': 7.8.3(@babel/core@7.23.2) + '@babel/plugin-syntax-numeric-separator': 7.10.4(@babel/core@7.23.2) + '@babel/plugin-syntax-object-rest-spread': 7.8.3(@babel/core@7.23.2) + '@babel/plugin-syntax-optional-catch-binding': 7.8.3(@babel/core@7.23.2) + '@babel/plugin-syntax-optional-chaining': 7.8.3(@babel/core@7.23.2) + '@babel/plugin-syntax-private-property-in-object': 7.14.5(@babel/core@7.23.2) + '@babel/plugin-syntax-top-level-await': 7.14.5(@babel/core@7.23.2) + '@babel/plugin-transform-arrow-functions': 7.22.5(@babel/core@7.23.2) + '@babel/plugin-transform-async-to-generator': 7.22.5(@babel/core@7.23.2) + '@babel/plugin-transform-block-scoped-functions': 7.22.5(@babel/core@7.23.2) + '@babel/plugin-transform-block-scoping': 7.22.15(@babel/core@7.23.2) + '@babel/plugin-transform-classes': 7.22.15(@babel/core@7.23.2) + '@babel/plugin-transform-computed-properties': 7.22.5(@babel/core@7.23.2) + '@babel/plugin-transform-destructuring': 7.22.15(@babel/core@7.23.2) + '@babel/plugin-transform-dotall-regex': 7.22.5(@babel/core@7.23.2) + '@babel/plugin-transform-duplicate-keys': 7.22.5(@babel/core@7.23.2) + '@babel/plugin-transform-exponentiation-operator': 7.22.5(@babel/core@7.23.2) + '@babel/plugin-transform-for-of': 7.22.15(@babel/core@7.23.2) + '@babel/plugin-transform-function-name': 7.22.5(@babel/core@7.23.2) + '@babel/plugin-transform-literals': 7.22.5(@babel/core@7.23.2) + '@babel/plugin-transform-member-expression-literals': 7.22.5(@babel/core@7.23.2) + '@babel/plugin-transform-modules-amd': 7.22.5(@babel/core@7.23.2) + '@babel/plugin-transform-modules-commonjs': 7.22.15(@babel/core@7.23.2) + '@babel/plugin-transform-modules-systemjs': 7.22.11(@babel/core@7.23.2) + '@babel/plugin-transform-modules-umd': 7.22.5(@babel/core@7.23.2) + '@babel/plugin-transform-named-capturing-groups-regex': 7.22.5(@babel/core@7.23.2) + '@babel/plugin-transform-new-target': 7.22.5(@babel/core@7.23.2) + '@babel/plugin-transform-object-super': 7.22.5(@babel/core@7.23.2) + '@babel/plugin-transform-parameters': 7.22.15(@babel/core@7.23.2) + '@babel/plugin-transform-property-literals': 7.22.5(@babel/core@7.23.2) + '@babel/plugin-transform-regenerator': 7.22.10(@babel/core@7.23.2) + '@babel/plugin-transform-reserved-words': 7.22.5(@babel/core@7.23.2) + '@babel/plugin-transform-shorthand-properties': 7.22.5(@babel/core@7.23.2) + '@babel/plugin-transform-spread': 7.22.5(@babel/core@7.23.2) + '@babel/plugin-transform-sticky-regex': 7.22.5(@babel/core@7.23.2) + '@babel/plugin-transform-template-literals': 7.22.5(@babel/core@7.23.2) + '@babel/plugin-transform-typeof-symbol': 7.22.5(@babel/core@7.23.2) + '@babel/plugin-transform-unicode-escapes': 7.22.10(@babel/core@7.23.2) + '@babel/plugin-transform-unicode-regex': 7.22.5(@babel/core@7.23.2) + '@babel/preset-modules': 0.1.6(@babel/core@7.23.2) '@babel/types': 7.22.15 - babel-plugin-polyfill-corejs2: 0.2.3(@babel/core@7.23.0) - babel-plugin-polyfill-corejs3: 0.3.0(@babel/core@7.23.0) - babel-plugin-polyfill-regenerator: 0.2.3(@babel/core@7.23.0) + babel-plugin-polyfill-corejs2: 0.2.3(@babel/core@7.23.2) + babel-plugin-polyfill-corejs3: 0.3.0(@babel/core@7.23.2) + babel-plugin-polyfill-regenerator: 0.2.3(@babel/core@7.23.2) core-js-compat: 3.32.1 semver: 6.3.1 transitivePeerDependencies: - supports-color dev: true - /@babel/preset-modules@0.1.6(@babel/core@7.23.0): + /@babel/preset-modules@0.1.6(@babel/core@7.23.2): resolution: {integrity: sha512-ID2yj6K/4lKfhuU3+EX4UvNbIt7eACFbHmNUjzA+ep+B5971CknnA/9DEWKbRokfbbtblxxxXFJJrH47UEAMVg==} peerDependencies: '@babel/core': ^7.0.0-0 || ^8.0.0-0 <8.0.0 dependencies: - '@babel/core': 7.23.0 + '@babel/core': 7.23.2 '@babel/helper-plugin-utils': 7.22.5 - '@babel/plugin-proposal-unicode-property-regex': 7.18.6(@babel/core@7.23.0) - '@babel/plugin-transform-dotall-regex': 7.22.5(@babel/core@7.23.0) + '@babel/plugin-proposal-unicode-property-regex': 7.18.6(@babel/core@7.23.2) + '@babel/plugin-transform-dotall-regex': 7.22.5(@babel/core@7.23.2) '@babel/types': 7.22.15 esutils: 2.0.3 dev: true @@ -2418,8 +2418,8 @@ packages: - supports-color dev: true - /@babel/traverse@7.23.0: - resolution: {integrity: sha512-t/QaEvyIoIkwzpiZ7aoSKK8kObQYeF7T2v+dazAYCb8SXtp58zEVkWW7zAnju8FNKNdr4ScAOEDmMItbyOmEYw==} + /@babel/traverse@7.23.2: + resolution: {integrity: sha512-azpe59SQ48qG6nu2CzcMLbxUudtN+dOM9kDbUqGq3HXUJRlo7i8fvPoxQUzYgLZ4cMVmuZgm8vvBpNeRhd6XSw==} engines: {node: '>=6.9.0'} dependencies: '@babel/code-frame': 7.22.13 @@ -2490,7 +2490,7 @@ packages: case: 1.6.3 dev: true - /@coinbase/wallet-sdk@3.6.3(@babel/core@7.23.0): + /@coinbase/wallet-sdk@3.6.3(@babel/core@7.23.2): resolution: {integrity: sha512-XUR4poOJE+dKzwBTdlM693CdLFitr046oZOVY3iDnbFcRrrQswhbDji7q4CmUcD4HxbfViX7PFoIwl79YQcukg==} engines: {node: '>= 10.0.0'} dependencies: @@ -2500,7 +2500,7 @@ packages: bn.js: 5.2.1 buffer: 6.0.3 clsx: 1.2.1 - eth-block-tracker: 4.4.3(@babel/core@7.23.0) + eth-block-tracker: 4.4.3(@babel/core@7.23.2) eth-json-rpc-filters: 4.2.2 eth-rpc-errors: 4.0.2 json-rpc-engine: 6.1.0 @@ -3727,12 +3727,14 @@ packages: resolution: {integrity: sha512-skQiAOrCfO7vRTq53cxznMpks7wS1va95UCidALlOVWqvBAzwPVErwizDwoMqNVMEn1mDq0utxZd02eIrvF1lw==} engines: {node: '>= 0.4'} dependencies: - '@ljharb/through': 2.3.9 + '@ljharb/through': 2.3.11 dev: true - /@ljharb/through@2.3.9: - resolution: {integrity: sha512-yN599ZBuMPPK4tdoToLlvgJB4CLK8fGl7ntfy0Wn7U6ttNvHYurd81bfUiK/6sMkiIwm65R6ck4L6+Y3DfVbNQ==} + /@ljharb/through@2.3.11: + resolution: {integrity: sha512-ccfcIDlogiXNq5KcbAwbaO7lMh3Tm1i3khMPYpxlK8hH/W53zN81KM9coerRLOnTGu3nfXIniAmQbRI9OxbC0w==} engines: {node: '>= 0.4'} + dependencies: + call-bind: 1.0.2 dev: true /@lottiefiles/svelte-lottie-player@0.2.0: @@ -5655,6 +5657,13 @@ packages: '@types/estree': 0.0.50 dev: true + /@types/eslint-scope@3.7.5: + resolution: {integrity: sha512-JNvhIEyxVW6EoMIFIvj93ZOywYFatlpu9deeH6eSx6PE3WHYvHaQtmHmQeNw7aA81bYGBPPQqdtBm6b1SsQMmA==} + dependencies: + '@types/eslint': 8.44.4 + '@types/estree': 1.0.2 + dev: true + /@types/eslint@8.2.1: resolution: {integrity: sha512-UP9rzNn/XyGwb5RQ2fok+DzcIRIYwc16qTXse5+Smsy8MOIccCChT15KAwnsgQx4PzJkaMq4myFyZ4CL5TjhIQ==} dependencies: @@ -5669,6 +5678,13 @@ packages: '@types/json-schema': 7.0.12 dev: true + /@types/eslint@8.44.4: + resolution: {integrity: sha512-lOzjyfY/D9QR4hY9oblZ76B90MYTB3RrQ4z2vBIJKj9ROCRqdkYl2gSUx1x1a4IWPjKJZLL4Aw1Zfay7eMnmnA==} + dependencies: + '@types/estree': 1.0.2 + '@types/json-schema': 7.0.13 + dev: true + /@types/estree-jsx@1.0.1: resolution: {integrity: sha512-sHyakZlAezNFxmYRo0fopDZW+XvK6ipeZkkp5EAOLjdPfZp8VjZBJ67vSRI99RSCAoqXVmXOHS4fnWoxpuGQtQ==} dependencies: @@ -5687,7 +5703,6 @@ packages: /@types/estree@1.0.2: resolution: {integrity: sha512-VeiPZ9MMwXjO32/Xu7+OwflfmeoRwkE/qzndw42gGtgJwZopBnzy2gD//NN1+go1mADzkDcqf/KnFRSjTJ8xJA==} - dev: false /@types/form-data@0.0.33: resolution: {integrity: sha512-8BSvG1kGm83cyJITQMZSulnl6QV8jqAGreJsc5tPu1Jq0vTSOiY/k24Wx82JRpWwZSqrala6sd5rWi6aNXvqcw==} @@ -5768,6 +5783,10 @@ packages: resolution: {integrity: sha512-Hr5Jfhc9eYOQNPYO5WLDq/n4jqijdHNlDXjuAQkkt+mWdQR+XJToOHrsD4cPaMXpn6KO7y2+wM8AZEs8VpBLVA==} dev: true + /@types/json-schema@7.0.13: + resolution: {integrity: sha512-RbSSoHliUbnXj3ny0CNFOoxrIDV6SUGyStHsvDqosw6CkdPV8TtWGlfecuK4ToyMEAql6pzNxgCFKanovUzlgQ==} + dev: true + /@types/json5@0.0.29: resolution: {integrity: sha512-dRLjCWHYg4oaA77cxO64oO+7JwCwnIzkZPdrrC71jQmQtlhM556pwKo5bUzqvZndkVbeFLIIi+9TC40JNF5hNQ==} dev: true @@ -6973,7 +6992,7 @@ packages: - utf-8-validate dev: true - /@wagmi/connectors@0.1.1(@babel/core@7.23.0)(@wagmi/core@0.8.0)(ethers@5.7.2)(typescript@4.9.5): + /@wagmi/connectors@0.1.1(@babel/core@7.23.2)(@wagmi/core@0.8.0)(ethers@5.7.2)(typescript@4.9.5): resolution: {integrity: sha512-W9w73o9HCYzuBsDHuujwBT/nGGIu5qLBSqVqslXf/S1Q9OiWoudmuIs3opuYqxgw5MpWbMqhq6QaxA7Qcd6NrA==} peerDependencies: '@wagmi/core': 0.8.x @@ -6982,7 +7001,7 @@ packages: '@wagmi/core': optional: true dependencies: - '@coinbase/wallet-sdk': 3.6.3(@babel/core@7.23.0) + '@coinbase/wallet-sdk': 3.6.3(@babel/core@7.23.2) '@ledgerhq/connect-kit-loader': 1.1.2 '@wagmi/core': 0.8.0(@coinbase/wallet-sdk@3.6.3)(ethers@5.7.2)(react@18.2.0)(typescript@4.9.5) '@walletconnect/ethereum-provider': 1.8.0 @@ -7110,7 +7129,7 @@ packages: '@walletconnect/ethereum-provider': optional: true dependencies: - '@coinbase/wallet-sdk': 3.6.3(@babel/core@7.23.0) + '@coinbase/wallet-sdk': 3.6.3(@babel/core@7.23.2) '@wagmi/chains': 0.1.14 abitype: 0.1.8(typescript@4.9.5) ethers: 5.7.2 @@ -8876,18 +8895,18 @@ packages: - supports-color dev: true - /babel-jest@27.3.1(@babel/core@7.23.0): + /babel-jest@27.3.1(@babel/core@7.23.2): resolution: {integrity: sha512-SjIF8hh/ir0peae2D6S6ZKRhUy7q/DnpH7k/V6fT4Bgs/LXXUztOpX4G2tCgq8mLo5HA9mN6NmlFMeYtKmIsTQ==} engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0} peerDependencies: '@babel/core': ^7.8.0 dependencies: - '@babel/core': 7.23.0 + '@babel/core': 7.23.2 '@jest/transform': 27.5.1 '@jest/types': 27.5.1 '@types/babel__core': 7.20.1 babel-plugin-istanbul: 6.1.1 - babel-preset-jest: 27.5.1(@babel/core@7.23.0) + babel-preset-jest: 27.5.1(@babel/core@7.23.2) chalk: 4.1.2 graceful-fs: 4.2.11 slash: 3.0.0 @@ -8949,74 +8968,74 @@ packages: '@types/babel__traverse': 7.20.1 dev: true - /babel-plugin-polyfill-corejs2@0.2.3(@babel/core@7.23.0): + /babel-plugin-polyfill-corejs2@0.2.3(@babel/core@7.23.2): resolution: {integrity: sha512-NDZ0auNRzmAfE1oDDPW2JhzIMXUk+FFe2ICejmt5T4ocKgiQx3e0VCRx9NCAidcMtL2RUZaWtXnmjTCkx0tcbA==} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: '@babel/compat-data': 7.22.9 - '@babel/core': 7.23.0 - '@babel/helper-define-polyfill-provider': 0.2.4(@babel/core@7.23.0) + '@babel/core': 7.23.2 + '@babel/helper-define-polyfill-provider': 0.2.4(@babel/core@7.23.2) semver: 6.3.1 transitivePeerDependencies: - supports-color dev: true - /babel-plugin-polyfill-corejs2@0.4.5(@babel/core@7.23.0): + /babel-plugin-polyfill-corejs2@0.4.5(@babel/core@7.23.2): resolution: {integrity: sha512-19hwUH5FKl49JEsvyTcoHakh6BE0wgXLLptIyKZ3PijHc/Ci521wygORCUCCred+E/twuqRyAkE02BAWPmsHOg==} peerDependencies: '@babel/core': ^7.4.0 || ^8.0.0-0 <8.0.0 dependencies: '@babel/compat-data': 7.22.9 - '@babel/core': 7.23.0 - '@babel/helper-define-polyfill-provider': 0.4.2(@babel/core@7.23.0) + '@babel/core': 7.23.2 + '@babel/helper-define-polyfill-provider': 0.4.2(@babel/core@7.23.2) semver: 6.3.1 transitivePeerDependencies: - supports-color dev: false - /babel-plugin-polyfill-corejs3@0.3.0(@babel/core@7.23.0): + /babel-plugin-polyfill-corejs3@0.3.0(@babel/core@7.23.2): resolution: {integrity: sha512-JLwi9vloVdXLjzACL80j24bG6/T1gYxwowG44dg6HN/7aTPdyPbJJidf6ajoA3RPHHtW0j9KMrSOLpIZpAnPpg==} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.23.0 - '@babel/helper-define-polyfill-provider': 0.2.4(@babel/core@7.23.0) + '@babel/core': 7.23.2 + '@babel/helper-define-polyfill-provider': 0.2.4(@babel/core@7.23.2) core-js-compat: 3.32.1 transitivePeerDependencies: - supports-color dev: true - /babel-plugin-polyfill-corejs3@0.8.3(@babel/core@7.23.0): + /babel-plugin-polyfill-corejs3@0.8.3(@babel/core@7.23.2): resolution: {integrity: sha512-z41XaniZL26WLrvjy7soabMXrfPWARN25PZoriDEiLMxAp50AUW3t35BGQUMg5xK3UrpVTtagIDklxYa+MhiNA==} peerDependencies: '@babel/core': ^7.4.0 || ^8.0.0-0 <8.0.0 dependencies: - '@babel/core': 7.23.0 - '@babel/helper-define-polyfill-provider': 0.4.2(@babel/core@7.23.0) + '@babel/core': 7.23.2 + '@babel/helper-define-polyfill-provider': 0.4.2(@babel/core@7.23.2) core-js-compat: 3.32.1 transitivePeerDependencies: - supports-color dev: false - /babel-plugin-polyfill-regenerator@0.2.3(@babel/core@7.23.0): + /babel-plugin-polyfill-regenerator@0.2.3(@babel/core@7.23.2): resolution: {integrity: sha512-JVE78oRZPKFIeUqFGrSORNzQnrDwZR16oiWeGM8ZyjBn2XAT5OjP+wXx5ESuo33nUsFUEJYjtklnsKbxW5L+7g==} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.23.0 - '@babel/helper-define-polyfill-provider': 0.2.4(@babel/core@7.23.0) + '@babel/core': 7.23.2 + '@babel/helper-define-polyfill-provider': 0.2.4(@babel/core@7.23.2) transitivePeerDependencies: - supports-color dev: true - /babel-plugin-polyfill-regenerator@0.5.2(@babel/core@7.23.0): + /babel-plugin-polyfill-regenerator@0.5.2(@babel/core@7.23.2): resolution: {integrity: sha512-tAlOptU0Xj34V1Y2PNTL4Y0FOJMDB6bZmoW39FeCQIhigGLkqu3Fj6uiXpxIf6Ij274ENdYx64y6Au+ZKlb1IA==} peerDependencies: '@babel/core': ^7.4.0 || ^8.0.0-0 <8.0.0 dependencies: - '@babel/core': 7.23.0 - '@babel/helper-define-polyfill-provider': 0.4.2(@babel/core@7.23.0) + '@babel/core': 7.23.2 + '@babel/helper-define-polyfill-provider': 0.4.2(@babel/core@7.23.2) transitivePeerDependencies: - supports-color dev: false @@ -9274,24 +9293,24 @@ packages: '@babel/plugin-syntax-top-level-await': 7.14.5(@babel/core@7.22.15) dev: true - /babel-preset-current-node-syntax@1.0.1(@babel/core@7.23.0): + /babel-preset-current-node-syntax@1.0.1(@babel/core@7.23.2): resolution: {integrity: sha512-M7LQ0bxarkxQoN+vz5aJPsLBn77n8QgTFmo8WK0/44auK2xlCXrYcUxHFxgU7qW5Yzw/CjmLRK2uJzaCd7LvqQ==} peerDependencies: '@babel/core': ^7.0.0 dependencies: - '@babel/core': 7.23.0 - '@babel/plugin-syntax-async-generators': 7.8.4(@babel/core@7.23.0) - '@babel/plugin-syntax-bigint': 7.8.3(@babel/core@7.23.0) - '@babel/plugin-syntax-class-properties': 7.12.13(@babel/core@7.23.0) - '@babel/plugin-syntax-import-meta': 7.10.4(@babel/core@7.23.0) - '@babel/plugin-syntax-json-strings': 7.8.3(@babel/core@7.23.0) - '@babel/plugin-syntax-logical-assignment-operators': 7.10.4(@babel/core@7.23.0) - '@babel/plugin-syntax-nullish-coalescing-operator': 7.8.3(@babel/core@7.23.0) - '@babel/plugin-syntax-numeric-separator': 7.10.4(@babel/core@7.23.0) - '@babel/plugin-syntax-object-rest-spread': 7.8.3(@babel/core@7.23.0) - '@babel/plugin-syntax-optional-catch-binding': 7.8.3(@babel/core@7.23.0) - '@babel/plugin-syntax-optional-chaining': 7.8.3(@babel/core@7.23.0) - '@babel/plugin-syntax-top-level-await': 7.14.5(@babel/core@7.23.0) + '@babel/core': 7.23.2 + '@babel/plugin-syntax-async-generators': 7.8.4(@babel/core@7.23.2) + '@babel/plugin-syntax-bigint': 7.8.3(@babel/core@7.23.2) + '@babel/plugin-syntax-class-properties': 7.12.13(@babel/core@7.23.2) + '@babel/plugin-syntax-import-meta': 7.10.4(@babel/core@7.23.2) + '@babel/plugin-syntax-json-strings': 7.8.3(@babel/core@7.23.2) + '@babel/plugin-syntax-logical-assignment-operators': 7.10.4(@babel/core@7.23.2) + '@babel/plugin-syntax-nullish-coalescing-operator': 7.8.3(@babel/core@7.23.2) + '@babel/plugin-syntax-numeric-separator': 7.10.4(@babel/core@7.23.2) + '@babel/plugin-syntax-object-rest-spread': 7.8.3(@babel/core@7.23.2) + '@babel/plugin-syntax-optional-catch-binding': 7.8.3(@babel/core@7.23.2) + '@babel/plugin-syntax-optional-chaining': 7.8.3(@babel/core@7.23.2) + '@babel/plugin-syntax-top-level-await': 7.14.5(@babel/core@7.23.2) dev: true /babel-preset-env@1.7.0: @@ -9342,15 +9361,15 @@ packages: babel-preset-current-node-syntax: 1.0.1(@babel/core@7.22.15) dev: true - /babel-preset-jest@27.5.1(@babel/core@7.23.0): + /babel-preset-jest@27.5.1(@babel/core@7.23.2): resolution: {integrity: sha512-Nptf2FzlPCWYuJg41HBqXVT8ym6bXOevuCTbhxlUpjwtysGaIWFvDEjp4y+G7fl13FgOdjs7P/DmErqH7da0Ag==} engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0} peerDependencies: '@babel/core': ^7.0.0 dependencies: - '@babel/core': 7.23.0 + '@babel/core': 7.23.2 babel-plugin-jest-hoist: 27.5.1 - babel-preset-current-node-syntax: 1.0.1(@babel/core@7.23.0) + babel-preset-current-node-syntax: 1.0.1(@babel/core@7.23.2) dev: true /babel-register@6.26.0: @@ -9721,8 +9740,8 @@ packages: resolution: {integrity: sha512-WHVocJYavUwVgVViC0ORikPHQquXwVh939TaelZ4WDqpWgTX/FsGhl/+P4qBUAGcRvtOgDgC+xftNWWp2RUTAQ==} hasBin: true dependencies: - caniuse-lite: 1.0.30001546 - electron-to-chromium: 1.4.544 + caniuse-lite: 1.0.30001549 + electron-to-chromium: 1.4.554 dev: true /browserslist@4.21.10: @@ -10046,6 +10065,10 @@ packages: /caniuse-lite@1.0.30001546: resolution: {integrity: sha512-zvtSJwuQFpewSyRrI3AsftF6rM0X80mZkChIt1spBGEvRglCrjTniXvinc8JKRoqTwXAgvqTImaN9igfSMtUBw==} + /caniuse-lite@1.0.30001549: + resolution: {integrity: sha512-qRp48dPYSCYaP+KurZLhDYdVE+yEyht/3NlmcJgVQ2VMGt6JL36ndQ/7rgspdZsJuxDPFIo/OzBT2+GmIJ53BA==} + dev: true + /capital-case@1.0.4: resolution: {integrity: sha512-ds37W8CytHgwnhGGTi88pcPyR15qoNkOpYwmMMfnWqqWgESapLqvDx6huFjQ5vqWSn2Z06173XNA7LtMOeUh1A==} dependencies: @@ -11681,6 +11704,15 @@ packages: has-property-descriptors: 1.0.0 dev: true + /define-data-property@1.1.1: + resolution: {integrity: sha512-E7uGkTzkk1d0ByLeSc6ZsFS79Axg+m1P/VsgYsxHgiuc3tFSj+MjMIwe90FC4lOAZzNBdY7kkO2P2wKdsQ1vgQ==} + engines: {node: '>= 0.4'} + dependencies: + get-intrinsic: 1.2.1 + gopd: 1.0.1 + has-property-descriptors: 1.0.0 + dev: true + /define-properties@1.2.0: resolution: {integrity: sha512-xvqAVKGfT1+UAvPwKTVw/njhdQ8ZhXK4lI0bCIuCMrp2up9nPnaDftrLtmpTazqd1o+UY4zgzU+avtMbDP+ldA==} engines: {node: '>= 0.4'} @@ -12040,6 +12072,10 @@ packages: resolution: {integrity: sha512-54z7squS1FyFRSUqq/knOFSptjjogLZXbKcYk3B0qkE1KZzvqASwRZnY2KzZQJqIYLVD38XZeoiMRflYSwyO4w==} dev: true + /electron-to-chromium@1.4.554: + resolution: {integrity: sha512-Q0umzPJjfBrrj8unkONTgbKQXzXRrH7sVV7D9ea2yBV3Oaogz991yhbpfvo2LMNkJItmruXTEzVpP9cp7vaIiQ==} + dev: true + /elkjs@0.8.2: resolution: {integrity: sha512-L6uRgvZTH+4OF5NE/MBbzQx/WYpru1xCBE9respNj6qznEewGUIfhzmm7horWWxbNO2M0WckQypGctR8lH79xQ==} dev: false @@ -12257,6 +12293,10 @@ packages: resolution: {integrity: sha512-vZK7T0N2CBmBOixhmjdqx2gWVbFZ4DXZ/NyRMZVlJXPa7CyFS+/a4QQsDGDQy9ZfEzxFuNEsMLeQJnKP2p5/JA==} dev: true + /es-module-lexer@1.3.1: + resolution: {integrity: sha512-JUFAyicQV9mXc3YRxPnDlrfBKpqt6hUYzz9/boprUJHs4e4KVr3XwOF70doO6gwXUor6EWZJAyWAfKki84t20Q==} + dev: true + /es-set-tostringtag@2.0.1: resolution: {integrity: sha512-g3OMbtlwY3QewlqAiMLI47KywjWZoEytKr8pf6iTC8uJq5bIAH52Z9pnQ8pVL6whrCto53JZDuUIsifGeLorTg==} engines: {node: '>= 0.4'} @@ -13211,10 +13251,10 @@ packages: - supports-color dev: true - /eth-block-tracker@4.4.3(@babel/core@7.23.0): + /eth-block-tracker@4.4.3(@babel/core@7.23.2): resolution: {integrity: sha512-A8tG4Z4iNg4mw5tP1Vung9N9IjgMNqpiMoJ/FouSFwNCGHv2X0mmOYwtQOJzki6XN7r7Tyo01S29p7b224I4jw==} dependencies: - '@babel/plugin-transform-runtime': 7.22.15(@babel/core@7.23.0) + '@babel/plugin-transform-runtime': 7.22.15(@babel/core@7.23.2) '@babel/runtime': 7.22.15 eth-query: 2.1.2 json-rpc-random-id: 1.0.1 @@ -17172,83 +17212,83 @@ packages: invert-kv: 1.0.0 dev: true - /lefthook-darwin-arm64@1.4.7: - resolution: {integrity: sha512-26zPoDw9gUXCroqf8OIb3qHjIq7XWrRQKdwFz2RgCfOphY22XNEucq0W+5on5s4LeqI9GieKeYQ+R0UBTjQ5LA==} + /lefthook-darwin-arm64@1.5.2: + resolution: {integrity: sha512-uyYEgj4GTytw3g2mMkPBoGAxSYscEqm6yQVuYDcuwE2Ns6+E997KMxVhFXIg+w76zIVmwfBc3ZwP0Ga9Xr1TJQ==} cpu: [arm64] os: [darwin] requiresBuild: true dev: true optional: true - /lefthook-darwin-x64@1.4.7: - resolution: {integrity: sha512-LSPiHTGEYqcABYuKqK+5+4SW6tmDXRUhSmZqcd7VSFsGa/9HU7imzqcbreiVPEO7ahKUDFYOB0riPV4g/Qys7w==} + /lefthook-darwin-x64@1.5.2: + resolution: {integrity: sha512-7l6mZ9TGbkLxozN0XHn+io4c9TQIUwT7hOJFAEW7sjKtrmPNLaf+xnATiqSD2DEbG6y6x4n8WF/j95FqkjcZLg==} cpu: [x64] os: [darwin] requiresBuild: true dev: true optional: true - /lefthook-freebsd-arm64@1.4.7: - resolution: {integrity: sha512-b7LJdWwnrkh3uuWKqNfrlvau8/9N78IoxPz1z/xo468WcwroCYORRGpM+lKvgmKjrVFOJZQ6lFIYvVe8212wZg==} + /lefthook-freebsd-arm64@1.5.2: + resolution: {integrity: sha512-7CqflCMajTEo//gUbwjNpxZYeT+BhPW65RosKfGyOG4jRq1aqW8AoLutu+vx0wsFn/M+S7lcnyxmGWtXur6+mw==} cpu: [arm64] os: [freebsd] requiresBuild: true dev: true optional: true - /lefthook-freebsd-x64@1.4.7: - resolution: {integrity: sha512-+sOYtxlyB9iwVHZLyoD0P7qg/8Guqjk5wmslXQrM89ilEQmDL+gnPRaqfEZrByjNEi/ltPTZ0YlOXeK/qxM0mg==} + /lefthook-freebsd-x64@1.5.2: + resolution: {integrity: sha512-D6bEvOqipu/NyTTHvjnwGw/2Y03SQhWqs/pUwJOKrb/Za4T91i3fu8ULn4jyafn7Svm1iI/l8EpGPFuzbiaFvQ==} cpu: [x64] os: [freebsd] requiresBuild: true dev: true optional: true - /lefthook-linux-arm64@1.4.7: - resolution: {integrity: sha512-Gli+cAqnBX0bCwv0mON8PM7SY/aIaM4H+nbqad5HlDHZ3ovoQBPxCmEvMxug7/Ssa3v3zdZ1cR2FkRrgzA1w+w==} + /lefthook-linux-arm64@1.5.2: + resolution: {integrity: sha512-tCfF92enT/RwfWVYxhlCxSnutGuqOkIM0XqoPcQEHJuWIEvaFgZ2VgNnfBTusOffVMGd1Ue2ouU4Z77ZZ8TH0Q==} cpu: [arm64] os: [linux] requiresBuild: true dev: true optional: true - /lefthook-linux-x64@1.4.7: - resolution: {integrity: sha512-XVN686RdGB8UB/zguDeY+Nx6ikN1I9g3QBGBOGPE3aj9waB86+FotPhat/c9wfb9T0gkhKnxMiQ9kO8nvDuQxw==} + /lefthook-linux-x64@1.5.2: + resolution: {integrity: sha512-rZeYS7LcLRJAYZsYzS7/uKCQwnNf7clyhpWADIyyIXj73SX3QoF0wBrCMHUMa72zpRsbIu5Sz/SYiTKCcUGU0w==} cpu: [x64] os: [linux] requiresBuild: true dev: true optional: true - /lefthook-windows-arm64@1.4.7: - resolution: {integrity: sha512-CxZwmsIV9h1N2NPZ08a2V9jXzvaDMPwmyByDJZNOkWW1Z3Dx/Q76VK4X7aS3HhyLpudzwYEYScWhQ+SIOmx6IA==} + /lefthook-windows-arm64@1.5.2: + resolution: {integrity: sha512-jT8Nc5eOfsf1uGYjodODtIEEOEOxvu6GnOPwpvlWwAG693abA+eocdjRB855sa1RR4CekmcKXi7/1E6iVHzY5A==} cpu: [arm64] os: [win32] requiresBuild: true dev: true optional: true - /lefthook-windows-x64@1.4.7: - resolution: {integrity: sha512-Hu/GoPrJviM9gbys11ZJEIgTXyQ4btifUn6WBFW4M7NpA8rxx1bbLfXdDlcl6W28BGDb1aFIXVdnJIupK01hUw==} + /lefthook-windows-x64@1.5.2: + resolution: {integrity: sha512-tPN0957RhpPC74aUTDk6+wYcU46K2js6oQcLipurQJvD5LAsS8h2HcXePBnsiLQjpOcRt0aLWHQnNS7ilTxVPw==} cpu: [x64] os: [win32] requiresBuild: true dev: true optional: true - /lefthook@1.4.7: - resolution: {integrity: sha512-0fCJ1ekbGG+Pi+xK9bnBF4B5eXHf/FRSiuLRP0ofYYs8LO7p1f7qbYQTCj3qjGBs6mvv/wq4UIR8e+Gi+L06TA==} + /lefthook@1.5.2: + resolution: {integrity: sha512-pksQpriXJArZ5AsSztkFbBVHyttGgQ1tqiUkAWlLKBwqSV/KJdOkS+c/yWo75QB88TgvWyypYWvpUgpqUKlBKQ==} hasBin: true requiresBuild: true optionalDependencies: - lefthook-darwin-arm64: 1.4.7 - lefthook-darwin-x64: 1.4.7 - lefthook-freebsd-arm64: 1.4.7 - lefthook-freebsd-x64: 1.4.7 - lefthook-linux-arm64: 1.4.7 - lefthook-linux-x64: 1.4.7 - lefthook-windows-arm64: 1.4.7 - lefthook-windows-x64: 1.4.7 + lefthook-darwin-arm64: 1.5.2 + lefthook-darwin-x64: 1.5.2 + lefthook-freebsd-arm64: 1.5.2 + lefthook-freebsd-x64: 1.5.2 + lefthook-linux-arm64: 1.5.2 + lefthook-linux-x64: 1.5.2 + lefthook-windows-arm64: 1.5.2 + lefthook-windows-x64: 1.5.2 dev: true /level-codec@7.0.1: @@ -19059,10 +19099,13 @@ packages: dev: true optional: true - /mock-property@1.0.0: - resolution: {integrity: sha512-imC60k5A55GPUU43PqczbubOyyxCudIgneACKzL3PKfsBk08dc1HgNNU8siQbEIAPPjVUhc+gb0v0ypZ/iP9pw==} + /mock-property@1.0.2: + resolution: {integrity: sha512-GHVKHd3bFiXtvZtp23+8+EQLMeDJWcEVrSA2pOBs1KB5Uh2ww8Q+9fYDljS67k3GzU4DIDBa6+qRIgfZ2Bp+gQ==} + engines: {node: '>= 0.4'} dependencies: + define-data-property: 1.1.1 functions-have-names: 1.2.3 + gopd: 1.0.1 has: 1.0.4 has-property-descriptors: 1.0.0 isarray: 2.0.5 @@ -20422,7 +20465,7 @@ packages: yaml: 2.3.2 dev: true - /postcss-loader@7.3.3(postcss@8.4.27)(typescript@4.9.5)(webpack@5.88.2): + /postcss-loader@7.3.3(postcss@8.4.27)(typescript@4.9.5)(webpack@5.89.0): resolution: {integrity: sha512-YgO/yhtevGO/vJePCQmTxiaEwER94LABZN0ZMT4A0vsak9TpO+RvKRs7EmJ8peIlB9xfXCsS7M8LjqncsUZ5HA==} engines: {node: '>= 14.15.0'} peerDependencies: @@ -20433,7 +20476,7 @@ packages: jiti: 1.19.3 postcss: 8.4.27 semver: 7.5.4 - webpack: 5.88.2(esbuild@0.15.13) + webpack: 5.89.0(esbuild@0.15.13) transitivePeerDependencies: - typescript dev: true @@ -20643,6 +20686,12 @@ packages: hasBin: true dev: true + /prettier@3.0.3: + resolution: {integrity: sha512-L/4pUDMxcNa8R/EthV08Zt42WBO4h1rarVtK0K+QJG0X187OLo7l699jWw0GKuwzkPQ//jMFA/8Xm6Fh3J/DAg==} + engines: {node: '>=14'} + hasBin: true + dev: true + /pretty-error@4.0.0: resolution: {integrity: sha512-AoJ5YMAcXKYxKhuJGdcvse+Voc6v1RgnsR3nWcYU7q4t6z0Q6T86sv5Zq8VIRbOWWFpvdGE83LtdSMNd+6Y0xw==} dependencies: @@ -21130,7 +21179,7 @@ packages: resolution: {integrity: sha512-HFM8rkZ+i3zrV+4LQjwQ0W+ez98pApMGM3HUrN04j3CqzPOzl9nmP15Y8YXNm8QHGv/eacOVEjqhmWpkRV0NAw==} engines: {node: '>= 0.10'} dependencies: - resolve: 1.22.6 + resolve: 1.22.8 dev: true /recursive-readdir@2.2.3: @@ -21541,6 +21590,15 @@ packages: path-parse: 1.0.7 supports-preserve-symlinks-flag: 1.0.0 + /resolve@1.22.8: + resolution: {integrity: sha512-oKWePCxqpd6FlLvGV1VU0x7bkPmmCNolxzjMf4NczoDnQcIWrAF+cPtZn5i6n+RfD2d9i0tzpKnG6Yk168yIyw==} + hasBin: true + dependencies: + is-core-module: 2.13.0 + path-parse: 1.0.7 + supports-preserve-symlinks-flag: 1.0.0 + dev: true + /responselike@1.0.2: resolution: {integrity: sha512-/Fpe5guzJk1gPqdJLJR5u7eG/gNY4nImjbRDaVWVMRhne55TCmj2i9Q+54PBRfatRC8v/rIiv9BN0pMd9OV5EQ==} requiresBuild: true @@ -22890,7 +22948,7 @@ packages: resolution: {integrity: sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==} engines: {node: '>= 0.4'} - /svelte-check@2.8.0(@babel/core@7.23.0)(node-sass@7.0.1)(postcss@8.4.27)(svelte@3.53.1): + /svelte-check@2.8.0(@babel/core@7.23.2)(node-sass@7.0.1)(postcss@8.4.27)(svelte@3.53.1): resolution: {integrity: sha512-HRL66BxffMAZusqe5I5k26mRWQ+BobGd9Rxm3onh7ZVu0nTk8YTKJ9vu3LVPjUGLU9IX7zS+jmwPVhJYdXJ8vg==} hasBin: true peerDependencies: @@ -22903,7 +22961,7 @@ packages: picocolors: 1.0.0 sade: 1.8.1 svelte: 3.53.1 - svelte-preprocess: 4.10.7(@babel/core@7.23.0)(node-sass@7.0.1)(postcss@8.4.27)(svelte@3.53.1)(typescript@4.9.5) + svelte-preprocess: 4.10.7(@babel/core@7.23.2)(node-sass@7.0.1)(postcss@8.4.27)(svelte@3.53.1)(typescript@4.9.5) typescript: 4.9.5 transitivePeerDependencies: - '@babel/core' @@ -23040,7 +23098,7 @@ packages: svelte-hmr: 0.14.12(svelte@3.53.1) dev: true - /svelte-preprocess@4.10.7(@babel/core@7.23.0)(node-sass@7.0.1)(postcss@8.4.27)(svelte@3.53.1)(typescript@4.9.5): + /svelte-preprocess@4.10.7(@babel/core@7.23.2)(node-sass@7.0.1)(postcss@8.4.27)(svelte@3.53.1)(typescript@4.9.5): resolution: {integrity: sha512-sNPBnqYD6FnmdBrUmBCaqS00RyCsCpj2BG58A1JBswNF7b0OKviwxqVrOL/CKyJrLSClrSeqQv5BXNg2RUbPOw==} engines: {node: '>= 9.11.2'} requiresBuild: true @@ -23081,7 +23139,7 @@ packages: typescript: optional: true dependencies: - '@babel/core': 7.23.0 + '@babel/core': 7.23.2 '@types/pug': 2.0.6 '@types/sass': 1.45.0 detect-indent: 6.1.0 @@ -23263,7 +23321,7 @@ packages: hasBin: true dependencies: '@ljharb/resumer': 0.0.1 - '@ljharb/through': 2.3.9 + '@ljharb/through': 2.3.11 call-bind: 1.0.2 deep-equal: 1.1.1 defined: 1.0.1 @@ -23274,9 +23332,9 @@ packages: inherits: 2.0.4 is-regex: 1.1.4 minimist: 1.2.8 - mock-property: 1.0.0 + mock-property: 1.0.2 object-inspect: 1.12.3 - resolve: 1.22.6 + resolve: 1.22.8 string.prototype.trim: 1.2.8 dev: true @@ -23351,7 +23409,7 @@ packages: supports-hyperlinks: 2.3.0 dev: true - /terser-webpack-plugin@5.3.9(esbuild@0.15.13)(webpack@5.88.2): + /terser-webpack-plugin@5.3.9(esbuild@0.15.13)(webpack@5.89.0): resolution: {integrity: sha512-ZuXsqE07EcggTWQjXUj+Aot/OMcD0bMKGgF63f7UxYcu5/AJF53aIpK1YoP5xR9l6s/Hy2b+t1AM0bLNPRuhwA==} engines: {node: '>= 10.13.0'} peerDependencies: @@ -23373,7 +23431,7 @@ packages: schema-utils: 3.3.0 serialize-javascript: 6.0.1 terser: 5.19.4 - webpack: 5.88.2(esbuild@0.15.13) + webpack: 5.89.0(esbuild@0.15.13) dev: true /terser-webpack-plugin@5.3.9(webpack@5.88.2): @@ -23753,7 +23811,7 @@ packages: glob: 7.2.3 mkdirp: 0.5.6 prettier: 2.8.8 - resolve: 1.22.6 + resolve: 1.22.8 ts-essentials: 1.0.4 dev: true @@ -23766,10 +23824,10 @@ packages: peerDependencies: ts-jest: '>=20.0.0' dependencies: - ts-jest: 27.0.7(@babel/core@7.23.0)(@types/jest@27.5.2)(babel-jest@27.3.1)(jest@27.5.1)(typescript@4.9.5) + ts-jest: 27.0.7(@babel/core@7.23.2)(@types/jest@27.5.2)(babel-jest@27.3.1)(jest@27.5.1)(typescript@4.9.5) dev: true - /ts-jest@27.0.7(@babel/core@7.23.0)(@types/jest@27.5.2)(babel-jest@27.3.1)(jest@27.5.1)(typescript@4.9.5): + /ts-jest@27.0.7(@babel/core@7.23.2)(@types/jest@27.5.2)(babel-jest@27.3.1)(jest@27.5.1)(typescript@4.9.5): resolution: {integrity: sha512-O41shibMqzdafpuP+CkrOL7ykbmLh+FqQrXEmV9CydQ5JBk0Sj0uAEF5TNNe94fZWKm3yYvWa/IbyV4Yg1zK2Q==} engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0} hasBin: true @@ -23787,9 +23845,9 @@ packages: babel-jest: optional: true dependencies: - '@babel/core': 7.23.0 + '@babel/core': 7.23.2 '@types/jest': 27.5.2 - babel-jest: 27.3.1(@babel/core@7.23.0) + babel-jest: 27.3.1(@babel/core@7.23.2) bs-logger: 0.2.6 fast-json-stable-stringify: 2.1.0 jest: 27.5.1 @@ -23802,7 +23860,7 @@ packages: yargs-parser: 20.2.9 dev: true - /ts-loader@9.2.6(typescript@4.9.5)(webpack@5.88.2): + /ts-loader@9.2.6(typescript@4.9.5)(webpack@5.89.0): resolution: {integrity: sha512-QMTC4UFzHmu9wU2VHZEmWWE9cUajjfcdcws+Gh7FhiO+Dy0RnR1bNz0YCHqhI0yRowCE9arVnNxYHqELOy9Hjw==} engines: {node: '>=12.0.0'} peerDependencies: @@ -23814,7 +23872,7 @@ packages: micromatch: 4.0.5 semver: 7.5.4 typescript: 4.9.5 - webpack: 5.88.2(esbuild@0.15.13) + webpack: 5.89.0(esbuild@0.15.13) dev: true /ts-morph@19.0.0: @@ -25602,8 +25660,8 @@ packages: - uglify-js dev: true - /webpack@5.88.2(esbuild@0.15.13): - resolution: {integrity: sha512-JmcgNZ1iKj+aiR0OvTYtWQqJwq37Pf683dY9bVORwVbUrDhLhdn/PlO2sHsFHPkj7sHNQF3JwaAkp49V+Sq1tQ==} + /webpack@5.89.0(esbuild@0.15.13): + resolution: {integrity: sha512-qyfIC10pOr70V+jkmud8tMfajraGCZMBWJtrmuBymQKCrLTRejBI8STDp1MCyZu/QTdZSeacCQYpYNQVOzX5kw==} engines: {node: '>=10.13.0'} hasBin: true peerDependencies: @@ -25612,8 +25670,8 @@ packages: webpack-cli: optional: true dependencies: - '@types/eslint-scope': 3.7.4 - '@types/estree': 1.0.1 + '@types/eslint-scope': 3.7.5 + '@types/estree': 1.0.2 '@webassemblyjs/ast': 1.11.6 '@webassemblyjs/wasm-edit': 1.11.6 '@webassemblyjs/wasm-parser': 1.11.6 @@ -25622,7 +25680,7 @@ packages: browserslist: 4.22.1 chrome-trace-event: 1.0.3 enhanced-resolve: 5.15.0 - es-module-lexer: 1.3.0 + es-module-lexer: 1.3.1 eslint-scope: 5.1.1 events: 3.3.0 glob-to-regexp: 0.4.1 @@ -25633,7 +25691,7 @@ packages: neo-async: 2.6.2 schema-utils: 3.3.0 tapable: 2.2.1 - terser-webpack-plugin: 5.3.9(esbuild@0.15.13)(webpack@5.88.2) + terser-webpack-plugin: 5.3.9(esbuild@0.15.13)(webpack@5.89.0) watchpack: 2.4.0 webpack-sources: 3.2.3 transitivePeerDependencies: From 7d947b2850ed84ef9fd12cb9856e71e38157c1b8 Mon Sep 17 00:00:00 2001 From: Daniel Wang Date: Sun, 15 Oct 2023 15:20:32 +0800 Subject: [PATCH 53/87] pnpm update --latest --- packages/protocol/package.json | 58 +- pnpm-lock.yaml | 2050 ++++++++++++++++++++------------ 2 files changed, 1299 insertions(+), 809 deletions(-) diff --git a/packages/protocol/package.json b/packages/protocol/package.json index 2d319bac37..1ac38abae3 100644 --- a/packages/protocol/package.json +++ b/packages/protocol/package.json @@ -35,48 +35,48 @@ "author": "Taiko Labs", "license": "MIT", "devDependencies": { - "@defi-wonderland/smock": "^2.3.4", + "@defi-wonderland/smock": "^2.3.5", "@foundry-rs/hardhat-forge": "^0.1.17", - "@nomicfoundation/hardhat-foundry": "^1.0.1", - "@nomicfoundation/hardhat-network-helpers": "^1.0.8", + "@nomicfoundation/hardhat-foundry": "^1.1.1", + "@nomicfoundation/hardhat-network-helpers": "^1.0.9", "@nomiclabs/hardhat-ethers": "^2.2.3", "@nomiclabs/hardhat-etherscan": "^3.1.7", - "@nomiclabs/hardhat-waffle": "^2.0.5", - "@openzeppelin/hardhat-upgrades": "^1.22.1", - "@typechain/ethers-v5": "^7.2.0", - "@typechain/hardhat": "^2.3.1", - "@types/chai": "^4.3.4", + "@nomiclabs/hardhat-waffle": "^2.0.6", + "@openzeppelin/hardhat-upgrades": "^2.3.3", + "@typechain/ethers-v5": "^11.1.2", + "@typechain/hardhat": "^9.1.0", + "@types/chai": "^4.3.8", "@types/glob": "^8.1.0", - "@types/mocha": "^9.1.1", - "@types/node": "^12.20.55", - "@typescript-eslint/eslint-plugin": "^6.6.0", - "@typescript-eslint/parser": "^4.33.0", - "chai": "^4.3.7", - "chalk": "4.1.2", - "dotenv": "^10.0.0", - "eslint": "^7.32.0", - "eslint-config-prettier": "^8.8.0", - "eslint-config-standard": "^16.0.3", - "eslint-plugin-import": "^2.27.5", + "@types/mocha": "^10.0.2", + "@types/node": "^20.8.6", + "@typescript-eslint/eslint-plugin": "^6.7.5", + "@typescript-eslint/parser": "^6.7.5", + "chai": "^4.3.10", + "chalk": "5.3.0", + "dotenv": "^16.3.1", + "eslint": "^8.51.0", + "eslint-config-prettier": "^9.0.0", + "eslint-config-standard": "^17.1.0", + "eslint-plugin-import": "^2.28.1", "eslint-plugin-node": "^11.1.0", - "eslint-plugin-prettier": "^3.4.1", + "eslint-plugin-prettier": "^5.0.1", "eslint-plugin-promise": "^6.1.1", - "ethers": "^5.7.2", - "glob": "^8.1.0", - "hardhat": "^2.14.0", + "ethers": "^6.8.0", + "glob": "^10.3.10", + "hardhat": "^2.18.1", "hardhat-abi-exporter": "^2.10.1", - "hardhat-contract-sizer": "^2.8.0", + "hardhat-contract-sizer": "^2.10.0", "hardhat-docgen": "^1.3.0", "hardhat-gas-reporter": "^1.0.9", "hardhat-preprocessor": "^0.1.5", "merkle-patricia-tree": "^4.2.4", - "prettier": "^2.8.8", + "prettier": "^3.0.3", "rlp": "^3.0.0", - "solhint": "^3.4.1", + "solhint": "^3.6.2", "solidity-coverage": "github:taikoxyz/solidity-coverage", - "solidity-docgen": "0.6.0-beta.35", + "solidity-docgen": "0.6.0-beta.36", "ts-node": "^10.9.1", - "typechain": "^5.2.0", - "typescript": "^4.9.5" + "typechain": "^8.3.2", + "typescript": "^5.2.2" } } diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 9b9bc26270..049780f68b 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -326,7 +326,7 @@ importers: version: 5.1.6 vite: specifier: ^4.4.9 - version: 4.4.9(@types/node@20.8.3) + version: 4.4.9(@types/node@20.8.6) vite-tsconfig-paths: specifier: ^4.2.1 version: 4.2.1(typescript@5.1.6)(vite@4.4.9) @@ -528,134 +528,134 @@ importers: packages/protocol: devDependencies: '@defi-wonderland/smock': - specifier: ^2.3.4 - version: 2.3.4(@ethersproject/abi@5.7.0)(@ethersproject/abstract-provider@5.7.0)(@ethersproject/abstract-signer@5.7.0)(@nomiclabs/hardhat-ethers@2.2.3)(ethers@5.7.2)(hardhat@2.14.0) + specifier: ^2.3.5 + version: 2.3.5(@ethersproject/abi@5.7.0)(@ethersproject/abstract-provider@5.7.0)(@ethersproject/abstract-signer@5.7.0)(@nomiclabs/hardhat-ethers@2.2.3)(ethers@6.8.0)(hardhat@2.18.1) '@foundry-rs/hardhat-forge': specifier: ^0.1.17 - version: 0.1.17(@nomiclabs/hardhat-ethers@2.2.3)(ethereum-waffle@3.4.4)(ethers@5.7.2)(hardhat@2.14.0) + version: 0.1.17(@nomiclabs/hardhat-ethers@2.2.3)(ethereum-waffle@3.4.4)(ethers@6.8.0)(hardhat@2.18.1) '@nomicfoundation/hardhat-foundry': - specifier: ^1.0.1 - version: 1.0.1(hardhat@2.14.0) + specifier: ^1.1.1 + version: 1.1.1(hardhat@2.18.1) '@nomicfoundation/hardhat-network-helpers': - specifier: ^1.0.8 - version: 1.0.8(hardhat@2.14.0) + specifier: ^1.0.9 + version: 1.0.9(hardhat@2.18.1) '@nomiclabs/hardhat-ethers': specifier: ^2.2.3 - version: 2.2.3(ethers@5.7.2)(hardhat@2.14.0) + version: 2.2.3(ethers@6.8.0)(hardhat@2.18.1) '@nomiclabs/hardhat-etherscan': specifier: ^3.1.7 - version: 3.1.7(hardhat@2.14.0) + version: 3.1.7(hardhat@2.18.1) '@nomiclabs/hardhat-waffle': - specifier: ^2.0.5 - version: 2.0.5(@nomiclabs/hardhat-ethers@2.2.3)(ethereum-waffle@3.4.4)(ethers@5.7.2)(hardhat@2.14.0) + specifier: ^2.0.6 + version: 2.0.6(@nomiclabs/hardhat-ethers@2.2.3)(@types/sinon-chai@3.2.10)(ethereum-waffle@3.4.4)(ethers@6.8.0)(hardhat@2.18.1) '@openzeppelin/hardhat-upgrades': - specifier: ^1.22.1 - version: 1.22.1(@nomiclabs/hardhat-ethers@2.2.3)(@nomiclabs/hardhat-etherscan@3.1.7)(ethers@5.7.2)(hardhat@2.14.0) + specifier: ^2.3.3 + version: 2.3.3(@nomicfoundation/hardhat-ethers@3.0.4)(ethers@6.8.0)(hardhat@2.18.1) '@typechain/ethers-v5': - specifier: ^7.2.0 - version: 7.2.0(@ethersproject/abi@5.7.0)(@ethersproject/bytes@5.7.0)(@ethersproject/providers@5.7.2)(ethers@5.7.2)(typechain@5.2.0)(typescript@4.9.5) + specifier: ^11.1.2 + version: 11.1.2(@ethersproject/abi@5.7.0)(@ethersproject/providers@5.7.2)(ethers@6.8.0)(typechain@8.3.2)(typescript@5.2.2) '@typechain/hardhat': - specifier: ^2.3.1 - version: 2.3.1(hardhat@2.14.0)(lodash@4.17.21)(typechain@5.2.0) + specifier: ^9.1.0 + version: 9.1.0(@typechain/ethers-v6@0.5.1)(ethers@6.8.0)(hardhat@2.18.1)(typechain@8.3.2) '@types/chai': - specifier: ^4.3.4 - version: 4.3.4 + specifier: ^4.3.8 + version: 4.3.8 '@types/glob': specifier: ^8.1.0 version: 8.1.0 '@types/mocha': - specifier: ^9.1.1 - version: 9.1.1 + specifier: ^10.0.2 + version: 10.0.2 '@types/node': - specifier: ^12.20.55 - version: 12.20.55 + specifier: ^20.8.6 + version: 20.8.6 '@typescript-eslint/eslint-plugin': - specifier: ^6.6.0 - version: 6.6.0(@typescript-eslint/parser@4.33.0)(eslint@7.32.0)(typescript@4.9.5) + specifier: ^6.7.5 + version: 6.7.5(@typescript-eslint/parser@6.7.5)(eslint@8.51.0)(typescript@5.2.2) '@typescript-eslint/parser': - specifier: ^4.33.0 - version: 4.33.0(eslint@7.32.0)(typescript@4.9.5) + specifier: ^6.7.5 + version: 6.7.5(eslint@8.51.0)(typescript@5.2.2) chai: - specifier: ^4.3.7 - version: 4.3.7 + specifier: ^4.3.10 + version: 4.3.10 chalk: - specifier: 4.1.2 - version: 4.1.2 + specifier: 5.3.0 + version: 5.3.0 dotenv: - specifier: ^10.0.0 - version: 10.0.0 + specifier: ^16.3.1 + version: 16.3.1 eslint: - specifier: ^7.32.0 - version: 7.32.0 + specifier: ^8.51.0 + version: 8.51.0 eslint-config-prettier: - specifier: ^8.8.0 - version: 8.8.0(eslint@7.32.0) + specifier: ^9.0.0 + version: 9.0.0(eslint@8.51.0) eslint-config-standard: - specifier: ^16.0.3 - version: 16.0.3(eslint-plugin-import@2.27.5)(eslint-plugin-node@11.1.0)(eslint-plugin-promise@6.1.1)(eslint@7.32.0) + specifier: ^17.1.0 + version: 17.1.0(eslint-plugin-import@2.28.1)(eslint-plugin-n@16.2.0)(eslint-plugin-promise@6.1.1)(eslint@8.51.0) eslint-plugin-import: - specifier: ^2.27.5 - version: 2.27.5(@typescript-eslint/parser@4.33.0)(eslint@7.32.0) + specifier: ^2.28.1 + version: 2.28.1(@typescript-eslint/parser@6.7.5)(eslint@8.51.0) eslint-plugin-node: specifier: ^11.1.0 - version: 11.1.0(eslint@7.32.0) + version: 11.1.0(eslint@8.51.0) eslint-plugin-prettier: - specifier: ^3.4.1 - version: 3.4.1(eslint-config-prettier@8.8.0)(eslint@7.32.0)(prettier@2.8.8) + specifier: ^5.0.1 + version: 5.0.1(eslint-config-prettier@9.0.0)(eslint@8.51.0)(prettier@3.0.3) eslint-plugin-promise: specifier: ^6.1.1 - version: 6.1.1(eslint@7.32.0) + version: 6.1.1(eslint@8.51.0) ethers: - specifier: ^5.7.2 - version: 5.7.2 + specifier: ^6.8.0 + version: 6.8.0 glob: - specifier: ^8.1.0 - version: 8.1.0 + specifier: ^10.3.10 + version: 10.3.10 hardhat: - specifier: ^2.14.0 - version: 2.14.0(ts-node@10.9.1)(typescript@4.9.5) + specifier: ^2.18.1 + version: 2.18.1(ts-node@10.9.1)(typescript@5.2.2) hardhat-abi-exporter: specifier: ^2.10.1 - version: 2.10.1(hardhat@2.14.0) + version: 2.10.1(hardhat@2.18.1) hardhat-contract-sizer: - specifier: ^2.8.0 - version: 2.8.0(hardhat@2.14.0) + specifier: ^2.10.0 + version: 2.10.0(hardhat@2.18.1) hardhat-docgen: specifier: ^1.3.0 - version: 1.3.0(hardhat@2.14.0)(lodash@4.17.21)(prettier@2.8.8) + version: 1.3.0(hardhat@2.18.1)(prettier@3.0.3) hardhat-gas-reporter: specifier: ^1.0.9 - version: 1.0.9(hardhat@2.14.0) + version: 1.0.9(hardhat@2.18.1) hardhat-preprocessor: specifier: ^0.1.5 - version: 0.1.5(hardhat@2.14.0) + version: 0.1.5(hardhat@2.18.1) merkle-patricia-tree: specifier: ^4.2.4 version: 4.2.4 prettier: - specifier: ^2.8.8 - version: 2.8.8 + specifier: ^3.0.3 + version: 3.0.3 rlp: specifier: ^3.0.0 version: 3.0.0 solhint: - specifier: ^3.4.1 - version: 3.4.1(typescript@4.9.5) + specifier: ^3.6.2 + version: 3.6.2(typescript@5.2.2) solidity-coverage: specifier: github:taikoxyz/solidity-coverage - version: github.com/taikoxyz/solidity-coverage/ceb49fd1f6041e4fcd26079dfb0d3b0f58c812e5(hardhat@2.14.0) + version: github.com/taikoxyz/solidity-coverage/ceb49fd1f6041e4fcd26079dfb0d3b0f58c812e5(hardhat@2.18.1) solidity-docgen: - specifier: 0.6.0-beta.35 - version: 0.6.0-beta.35(hardhat@2.14.0) + specifier: 0.6.0-beta.36 + version: 0.6.0-beta.36(hardhat@2.18.1) ts-node: specifier: ^10.9.1 - version: 10.9.1(@types/node@12.20.55)(typescript@4.9.5) + version: 10.9.1(@types/node@20.8.6)(typescript@5.2.2) typechain: - specifier: ^5.2.0 - version: 5.2.0(typescript@4.9.5) + specifier: ^8.3.2 + version: 8.3.2(typescript@5.2.2) typescript: - specifier: ^4.9.5 - version: 4.9.5 + specifier: ^5.2.2 + version: 5.2.2 packages/relayer: {} @@ -1031,6 +1031,10 @@ packages: engines: {node: '>=0.10.0'} dev: true + /@adraffy/ens-normalize@1.10.0: + resolution: {integrity: sha512-nA9XHtlAkYfJxY7bce8DcN7eKxWWCWkU+1GR9d+U6MbNpfwQp8TI7vqOsBsMcHoT4mBu2kypKoSKnghEzOOq5Q==} + dev: true + /@adraffy/ens-normalize@1.9.0: resolution: {integrity: sha512-iowxq3U30sghZotgl4s/oJRci6WPBfNO5YYgk2cIOMCHr3LeGPcsZjCEr+33Q4N+oV3OABDAtA+pyvWjbvBifQ==} @@ -1050,6 +1054,36 @@ packages: '@jridgewell/gen-mapping': 0.3.3 '@jridgewell/trace-mapping': 0.3.19 + /@aws-crypto/sha256-js@1.2.2: + resolution: {integrity: sha512-Nr1QJIbW/afYYGzYvrF70LtaHrIRtd4TNAglX8BvlfxJLZ45SAmueIKYl5tWoNBPzp65ymXGFK0Bb1vZUpuc9g==} + dependencies: + '@aws-crypto/util': 1.2.2 + '@aws-sdk/types': 3.428.0 + tslib: 1.14.1 + dev: true + + /@aws-crypto/util@1.2.2: + resolution: {integrity: sha512-H8PjG5WJ4wz0UXAFXeJjWCW1vkvIJ3qUUD+rGRwJ2/hj+xT58Qle2MTql/2MGzkU+1JLAFuR6aJpLAjHwhmwwg==} + dependencies: + '@aws-sdk/types': 3.428.0 + '@aws-sdk/util-utf8-browser': 3.259.0 + tslib: 1.14.1 + dev: true + + /@aws-sdk/types@3.428.0: + resolution: {integrity: sha512-4T0Ps2spjg3qbWE6ZK13Vd3FnzpfliaiotqjxUK5YhjDrKXeT36HJp46JhDupElQuHtTkpdiJOSYk2lvY2H4IA==} + engines: {node: '>=14.0.0'} + dependencies: + '@smithy/types': 2.3.5 + tslib: 2.6.2 + dev: true + + /@aws-sdk/util-utf8-browser@3.259.0: + resolution: {integrity: sha512-UvFa/vR+e19XookZF8RzFZBrw2EUkQWxiBW0yYQAhvk3C+QVGl0H3ouca8LDBlBfQKXwmW3huo/59H8rwb1wJw==} + dependencies: + tslib: 2.6.2 + dev: true + /@babel/code-frame@7.12.11: resolution: {integrity: sha512-Zt1yodBx1UcyiePMSkWnU4hPqhwq7hGi2nFL1LeA3EUl+q2LQx16MISgJ0+z7dnmgvP9QtIleuETGOiOH1RcIw==} dependencies: @@ -2560,8 +2594,8 @@ packages: '@jridgewell/trace-mapping': 0.3.9 dev: true - /@defi-wonderland/smock@2.3.4(@ethersproject/abi@5.7.0)(@ethersproject/abstract-provider@5.7.0)(@ethersproject/abstract-signer@5.7.0)(@nomiclabs/hardhat-ethers@2.2.3)(ethers@5.7.2)(hardhat@2.14.0): - resolution: {integrity: sha512-VYJbsoCOdFRyGkAwvaQhQRrU6V8AjK3five8xdbo41DEE9n3qXzUNBUxyD9HhXB/dWWPFWT21IGw5Ztl6Qw3Ew==} + /@defi-wonderland/smock@2.3.5(@ethersproject/abi@5.7.0)(@ethersproject/abstract-provider@5.7.0)(@ethersproject/abstract-signer@5.7.0)(@nomiclabs/hardhat-ethers@2.2.3)(ethers@6.8.0)(hardhat@2.18.1): + resolution: {integrity: sha512-klANj1hUpc3cd2ShXdVH/bEGwxJd+LxOngkF5gLcIbg6b37RCgMPMmR/94/hgL62F8bfWtuNKsQD7K+c6M5fWQ==} peerDependencies: '@ethersproject/abi': ^5 '@ethersproject/abstract-provider': ^5 @@ -2576,10 +2610,10 @@ packages: '@nomicfoundation/ethereumjs-evm': 1.3.2 '@nomicfoundation/ethereumjs-util': 8.0.6 '@nomicfoundation/ethereumjs-vm': 6.4.2 - '@nomiclabs/hardhat-ethers': 2.2.3(ethers@5.7.2)(hardhat@2.14.0) + '@nomiclabs/hardhat-ethers': 2.2.3(ethers@6.8.0)(hardhat@2.18.1) diff: 5.1.0 - ethers: 5.7.2 - hardhat: 2.14.0(ts-node@10.9.1)(typescript@4.9.5) + ethers: 6.8.0 + hardhat: 2.18.1(ts-node@10.9.1)(typescript@5.2.2) lodash.isequal: 4.5.0 lodash.isequalwith: 4.4.0 rxjs: 7.8.1 @@ -2929,7 +2963,7 @@ packages: - utf-8-validate dev: true - /@ethereum-waffle/compiler@3.4.4(typescript@4.9.5): + /@ethereum-waffle/compiler@3.4.4(typescript@5.2.2): resolution: {integrity: sha512-RUK3axJ8IkD5xpWjWoJgyHclOeEzDLQFga6gKpeGxiS/zBu+HB0W2FvsrrLalTFIaPw/CGYACRBSIxqiCqwqTQ==} engines: {node: '>=10.0'} dependencies: @@ -2943,7 +2977,7 @@ packages: node-fetch: 2.7.0 solc: 0.6.12 ts-generator: 0.1.1 - typechain: 3.0.0(typescript@4.9.5) + typechain: 3.0.0(typescript@5.2.2) transitivePeerDependencies: - bufferutil - encoding @@ -3318,6 +3352,11 @@ packages: '@ethersproject/properties': 5.7.0 '@ethersproject/strings': 5.7.0 + /@fastify/busboy@2.0.0: + resolution: {integrity: sha512-JUFJad5lv7jxj926GPgymrWQxxjPYuJNiNjNMzqT+HiuP6Vl3dk5xzG+8sTX96np0ZAluvaMzPsjhHZ5rNuNQQ==} + engines: {node: '>=14'} + dev: true + /@formatjs/ecma402-abstract@1.11.4: resolution: {integrity: sha512-EBikYFp2JCdIfGEb5G9dyCkTGDmC57KSHhRQOC3aYxoPWVZvfWCDjZwkGYHN7Lis/fmuWl906bnNTJifDQ3sXw==} dependencies: @@ -3359,7 +3398,7 @@ packages: ts-interface-checker: 0.1.13 dev: true - /@foundry-rs/hardhat-forge@0.1.17(@nomiclabs/hardhat-ethers@2.2.3)(ethereum-waffle@3.4.4)(ethers@5.7.2)(hardhat@2.14.0): + /@foundry-rs/hardhat-forge@0.1.17(@nomiclabs/hardhat-ethers@2.2.3)(ethereum-waffle@3.4.4)(ethers@6.8.0)(hardhat@2.18.1): resolution: {integrity: sha512-2wxzxA12CQmT11PH/KigyVTNm/4vzsVtzVZow6gwCbC41fTyf73a5qbggHZFRR74JXfmvVSkX1BJitTmdzQvxw==} peerDependencies: '@nomiclabs/hardhat-ethers': ^2.0.0 @@ -3368,17 +3407,17 @@ packages: hardhat: ^2.0.0 dependencies: '@foundry-rs/easy-foundryup': 0.1.3 - '@nomiclabs/hardhat-ethers': 2.2.3(ethers@5.7.2)(hardhat@2.14.0) - '@nomiclabs/hardhat-waffle': 2.0.5(@nomiclabs/hardhat-ethers@2.2.3)(ethereum-waffle@3.4.4)(ethers@5.7.2)(hardhat@2.14.0) - '@types/sinon-chai': 3.2.9 + '@nomiclabs/hardhat-ethers': 2.2.3(ethers@6.8.0)(hardhat@2.18.1) + '@nomiclabs/hardhat-waffle': 2.0.6(@nomiclabs/hardhat-ethers@2.2.3)(@types/sinon-chai@3.2.10)(ethereum-waffle@3.4.4)(ethers@6.8.0)(hardhat@2.18.1) + '@types/sinon-chai': 3.2.10 '@types/web3': 1.0.19 camelcase-keys: 7.0.2 debug: 4.3.4(supports-color@8.1.1) - ethereum-waffle: 3.4.4(typescript@4.9.5) - ethers: 5.7.2 + ethereum-waffle: 3.4.4(typescript@5.2.2) + ethers: 6.8.0 fs-extra: 10.1.0 glob: 7.2.3 - hardhat: 2.14.0(ts-node@10.9.1)(typescript@4.9.5) + hardhat: 2.18.1(ts-node@10.9.1)(typescript@5.2.2) true-case-path: 2.2.1 ts-interface-checker: 0.1.13 transitivePeerDependencies: @@ -3440,6 +3479,18 @@ packages: resolution: {integrity: sha512-ZnQMnLV4e7hDlUvw8H+U8ASL02SS2Gn6+9Ac3wGGLIe7+je2AeAOxPY+izIPJDfFDb7eDjev0Us8MO1iFRN8hA==} dev: true + /@isaacs/cliui@8.0.2: + resolution: {integrity: sha512-O8jcjabXaleOG9DQ0+ARXWZBTfnP4WNAqzuiJK7ll44AmxGKv/J2M4TPjxjY3znBCfvBXFzucm1twdyFybFqEA==} + engines: {node: '>=12'} + dependencies: + string-width: 5.1.2 + string-width-cjs: /string-width@4.2.3 + strip-ansi: 7.1.0 + strip-ansi-cjs: /strip-ansi@6.0.1 + wrap-ansi: 8.1.0 + wrap-ansi-cjs: /wrap-ansi@7.0.0 + dev: true + /@istanbuljs/load-nyc-config@1.1.0: resolution: {integrity: sha512-VjeHSlIzpv/NyD3N0YuHfXOPDIixcA1q2ZV98wsMqcYlPmv2n3Yb2lYP9XMElnaFVXg5A7YLTeLu6V84uQDjmQ==} engines: {node: '>=8'} @@ -3461,7 +3512,7 @@ packages: engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0} dependencies: '@jest/types': 27.5.1 - '@types/node': 20.8.3 + '@types/node': 20.8.6 chalk: 4.1.2 jest-message-util: 27.5.1 jest-util: 27.5.1 @@ -3482,7 +3533,7 @@ packages: '@jest/test-result': 27.5.1 '@jest/transform': 27.5.1 '@jest/types': 27.5.1 - '@types/node': 20.8.3 + '@types/node': 20.8.6 ansi-escapes: 4.3.2 chalk: 4.1.2 emittery: 0.8.1 @@ -3519,7 +3570,7 @@ packages: dependencies: '@jest/fake-timers': 27.5.1 '@jest/types': 27.5.1 - '@types/node': 20.8.3 + '@types/node': 20.8.6 jest-mock: 27.5.1 dev: true @@ -3529,7 +3580,7 @@ packages: dependencies: '@jest/types': 27.5.1 '@sinonjs/fake-timers': 8.1.0 - '@types/node': 20.8.3 + '@types/node': 20.8.6 jest-message-util: 27.5.1 jest-mock: 27.5.1 jest-util: 27.5.1 @@ -3558,7 +3609,7 @@ packages: '@jest/test-result': 27.5.1 '@jest/transform': 27.5.1 '@jest/types': 27.5.1 - '@types/node': 20.8.3 + '@types/node': 20.8.6 chalk: 4.1.2 collect-v8-coverage: 1.0.2 exit: 0.1.2 @@ -3642,7 +3693,7 @@ packages: dependencies: '@types/istanbul-lib-coverage': 2.0.4 '@types/istanbul-reports': 3.0.1 - '@types/node': 20.8.3 + '@types/node': 20.8.6 '@types/yargs': 16.0.5 chalk: 4.1.2 dev: true @@ -4125,15 +4176,15 @@ packages: ethereum-cryptography: 0.1.3 dev: true - /@nomicfoundation/ethereumjs-block@5.0.1: - resolution: {integrity: sha512-u1Yioemi6Ckj3xspygu/SfFvm8vZEO8/Yx5a1QLzi6nVU0jz3Pg2OmHKJ5w+D9Ogk1vhwRiqEBAqcb0GVhCyHw==} + /@nomicfoundation/ethereumjs-block@5.0.2: + resolution: {integrity: sha512-hSe6CuHI4SsSiWWjHDIzWhSiAVpzMUcDRpWYzN0T9l8/Rz7xNn3elwVOJ/tAyS0LqL6vitUD78Uk7lQDXZun7Q==} engines: {node: '>=14'} dependencies: - '@nomicfoundation/ethereumjs-common': 4.0.1 - '@nomicfoundation/ethereumjs-rlp': 5.0.1 - '@nomicfoundation/ethereumjs-trie': 6.0.1 - '@nomicfoundation/ethereumjs-tx': 5.0.1 - '@nomicfoundation/ethereumjs-util': 9.0.1 + '@nomicfoundation/ethereumjs-common': 4.0.2 + '@nomicfoundation/ethereumjs-rlp': 5.0.2 + '@nomicfoundation/ethereumjs-trie': 6.0.2 + '@nomicfoundation/ethereumjs-tx': 5.0.2 + '@nomicfoundation/ethereumjs-util': 9.0.2 ethereum-cryptography: 0.1.3 ethers: 5.7.2 transitivePeerDependencies: @@ -4161,17 +4212,17 @@ packages: - supports-color dev: true - /@nomicfoundation/ethereumjs-blockchain@7.0.1: - resolution: {integrity: sha512-NhzndlGg829XXbqJEYrF1VeZhAwSPgsK/OB7TVrdzft3y918hW5KNd7gIZ85sn6peDZOdjBsAXIpXZ38oBYE5A==} + /@nomicfoundation/ethereumjs-blockchain@7.0.2: + resolution: {integrity: sha512-8UUsSXJs+MFfIIAKdh3cG16iNmWzWC/91P40sazNvrqhhdR/RtGDlFk2iFTGbBAZPs2+klZVzhRX8m2wvuvz3w==} engines: {node: '>=14'} dependencies: - '@nomicfoundation/ethereumjs-block': 5.0.1 - '@nomicfoundation/ethereumjs-common': 4.0.1 - '@nomicfoundation/ethereumjs-ethash': 3.0.1 - '@nomicfoundation/ethereumjs-rlp': 5.0.1 - '@nomicfoundation/ethereumjs-trie': 6.0.1 - '@nomicfoundation/ethereumjs-tx': 5.0.1 - '@nomicfoundation/ethereumjs-util': 9.0.1 + '@nomicfoundation/ethereumjs-block': 5.0.2 + '@nomicfoundation/ethereumjs-common': 4.0.2 + '@nomicfoundation/ethereumjs-ethash': 3.0.2 + '@nomicfoundation/ethereumjs-rlp': 5.0.2 + '@nomicfoundation/ethereumjs-trie': 6.0.2 + '@nomicfoundation/ethereumjs-tx': 5.0.2 + '@nomicfoundation/ethereumjs-util': 9.0.2 abstract-level: 1.0.3 debug: 4.3.4(supports-color@8.1.1) ethereum-cryptography: 0.1.3 @@ -4191,10 +4242,10 @@ packages: crc-32: 1.2.2 dev: true - /@nomicfoundation/ethereumjs-common@4.0.1: - resolution: {integrity: sha512-OBErlkfp54GpeiE06brBW/TTbtbuBJV5YI5Nz/aB2evTDo+KawyEzPjBlSr84z/8MFfj8wS2wxzQX1o32cev5g==} + /@nomicfoundation/ethereumjs-common@4.0.2: + resolution: {integrity: sha512-I2WGP3HMGsOoycSdOTSqIaES0ughQTueOsddJ36aYVpI3SN8YSusgRFLwzDJwRFVIYDKx/iJz0sQ5kBHVgdDwg==} dependencies: - '@nomicfoundation/ethereumjs-util': 9.0.1 + '@nomicfoundation/ethereumjs-util': 9.0.2 crc-32: 1.2.2 dev: true @@ -4210,13 +4261,13 @@ packages: ethereum-cryptography: 0.1.3 dev: true - /@nomicfoundation/ethereumjs-ethash@3.0.1: - resolution: {integrity: sha512-KDjGIB5igzWOp8Ik5I6QiRH5DH+XgILlplsHR7TEuWANZA759G6krQ6o8bvj+tRUz08YygMQu/sGd9mJ1DYT8w==} + /@nomicfoundation/ethereumjs-ethash@3.0.2: + resolution: {integrity: sha512-8PfoOQCcIcO9Pylq0Buijuq/O73tmMVURK0OqdjhwqcGHYC2PwhbajDh7GZ55ekB0Px197ajK3PQhpKoiI/UPg==} engines: {node: '>=14'} dependencies: - '@nomicfoundation/ethereumjs-block': 5.0.1 - '@nomicfoundation/ethereumjs-rlp': 5.0.1 - '@nomicfoundation/ethereumjs-util': 9.0.1 + '@nomicfoundation/ethereumjs-block': 5.0.2 + '@nomicfoundation/ethereumjs-rlp': 5.0.2 + '@nomicfoundation/ethereumjs-util': 9.0.2 abstract-level: 1.0.3 bigint-crypto-utils: 3.3.0 ethereum-cryptography: 0.1.3 @@ -4231,7 +4282,7 @@ packages: dependencies: '@nomicfoundation/ethereumjs-common': 3.1.2 '@nomicfoundation/ethereumjs-util': 8.0.6 - '@types/async-eventemitter': 0.2.1 + '@types/async-eventemitter': 0.2.2 async-eventemitter: 0.2.4 debug: 4.3.4(supports-color@8.1.1) ethereum-cryptography: 0.1.3 @@ -4241,14 +4292,14 @@ packages: - supports-color dev: true - /@nomicfoundation/ethereumjs-evm@2.0.1: - resolution: {integrity: sha512-oL8vJcnk0Bx/onl+TgQOQ1t/534GKFaEG17fZmwtPFeH8S5soiBYPCLUrvANOl4sCp9elYxIMzIiTtMtNNN8EQ==} + /@nomicfoundation/ethereumjs-evm@2.0.2: + resolution: {integrity: sha512-rBLcUaUfANJxyOx9HIdMX6uXGin6lANCulIm/pjMgRqfiCRMZie3WKYxTSd8ZE/d+qT+zTedBF4+VHTdTSePmQ==} engines: {node: '>=14'} dependencies: '@ethersproject/providers': 5.7.2 - '@nomicfoundation/ethereumjs-common': 4.0.1 - '@nomicfoundation/ethereumjs-tx': 5.0.1 - '@nomicfoundation/ethereumjs-util': 9.0.1 + '@nomicfoundation/ethereumjs-common': 4.0.2 + '@nomicfoundation/ethereumjs-tx': 5.0.2 + '@nomicfoundation/ethereumjs-util': 9.0.2 debug: 4.3.4(supports-color@8.1.1) ethereum-cryptography: 0.1.3 mcl-wasm: 0.7.9 @@ -4265,8 +4316,8 @@ packages: hasBin: true dev: true - /@nomicfoundation/ethereumjs-rlp@5.0.1: - resolution: {integrity: sha512-xtxrMGa8kP4zF5ApBQBtjlSbN5E2HI8m8FYgVSYAnO6ssUoY5pVPGy2H8+xdf/bmMa22Ce8nWMH3aEW8CcqMeQ==} + /@nomicfoundation/ethereumjs-rlp@5.0.2: + resolution: {integrity: sha512-QwmemBc+MMsHJ1P1QvPl8R8p2aPvvVcKBbvHnQOKBpBztEo0omN0eaob6FeZS/e3y9NSe+mfu3nNFBHszqkjTA==} engines: {node: '>=14'} hasBin: true dev: true @@ -4285,11 +4336,11 @@ packages: - supports-color dev: true - /@nomicfoundation/ethereumjs-statemanager@2.0.1: - resolution: {integrity: sha512-B5ApMOnlruVOR7gisBaYwFX+L/AP7i/2oAahatssjPIBVDF6wTX1K7Qpa39E/nzsH8iYuL3krkYeUFIdO3EMUQ==} + /@nomicfoundation/ethereumjs-statemanager@2.0.2: + resolution: {integrity: sha512-dlKy5dIXLuDubx8Z74sipciZnJTRSV/uHG48RSijhgm1V7eXYFC567xgKtsKiVZB1ViTP9iFL4B6Je0xD6X2OA==} dependencies: - '@nomicfoundation/ethereumjs-common': 4.0.1 - '@nomicfoundation/ethereumjs-rlp': 5.0.1 + '@nomicfoundation/ethereumjs-common': 4.0.2 + '@nomicfoundation/ethereumjs-rlp': 5.0.2 debug: 4.3.4(supports-color@8.1.1) ethereum-cryptography: 0.1.3 ethers: 5.7.2 @@ -4310,12 +4361,12 @@ packages: readable-stream: 3.6.2 dev: true - /@nomicfoundation/ethereumjs-trie@6.0.1: - resolution: {integrity: sha512-A64It/IMpDVODzCgxDgAAla8jNjNtsoQZIzZUfIV5AY6Coi4nvn7+VReBn5itlxMiL2yaTlQr9TRWp3CSI6VoA==} + /@nomicfoundation/ethereumjs-trie@6.0.2: + resolution: {integrity: sha512-yw8vg9hBeLYk4YNg5MrSJ5H55TLOv2FSWUTROtDtTMMmDGROsAu+0tBjiNGTnKRi400M6cEzoFfa89Fc5k8NTQ==} engines: {node: '>=14'} dependencies: - '@nomicfoundation/ethereumjs-rlp': 5.0.1 - '@nomicfoundation/ethereumjs-util': 9.0.1 + '@nomicfoundation/ethereumjs-rlp': 5.0.2 + '@nomicfoundation/ethereumjs-util': 9.0.2 '@types/readable-stream': 2.3.15 ethereum-cryptography: 0.1.3 readable-stream: 3.6.2 @@ -4331,15 +4382,15 @@ packages: ethereum-cryptography: 0.1.3 dev: true - /@nomicfoundation/ethereumjs-tx@5.0.1: - resolution: {integrity: sha512-0HwxUF2u2hrsIM1fsasjXvlbDOq1ZHFV2dd1yGq8CA+MEYhaxZr8OTScpVkkxqMwBcc5y83FyPl0J9MZn3kY0w==} + /@nomicfoundation/ethereumjs-tx@5.0.2: + resolution: {integrity: sha512-T+l4/MmTp7VhJeNloMkM+lPU3YMUaXdcXgTGCf8+ZFvV9NYZTRLFekRwlG6/JMmVfIfbrW+dRRJ9A6H5Q/Z64g==} engines: {node: '>=14'} dependencies: '@chainsafe/ssz': 0.9.4 '@ethersproject/providers': 5.7.2 - '@nomicfoundation/ethereumjs-common': 4.0.1 - '@nomicfoundation/ethereumjs-rlp': 5.0.1 - '@nomicfoundation/ethereumjs-util': 9.0.1 + '@nomicfoundation/ethereumjs-common': 4.0.2 + '@nomicfoundation/ethereumjs-rlp': 5.0.2 + '@nomicfoundation/ethereumjs-util': 9.0.2 ethereum-cryptography: 0.1.3 transitivePeerDependencies: - bufferutil @@ -4354,12 +4405,12 @@ packages: ethereum-cryptography: 0.1.3 dev: true - /@nomicfoundation/ethereumjs-util@9.0.1: - resolution: {integrity: sha512-TwbhOWQ8QoSCFhV/DDfSmyfFIHjPjFBj957219+V3jTZYZ2rf9PmDtNOeZWAE3p3vlp8xb02XGpd0v6nTUPbsA==} + /@nomicfoundation/ethereumjs-util@9.0.2: + resolution: {integrity: sha512-4Wu9D3LykbSBWZo8nJCnzVIYGvGCuyiYLIJa9XXNVt1q1jUzHdB+sJvx95VGCpPkCT+IbLecW6yfzy3E1bQrwQ==} engines: {node: '>=14'} dependencies: '@chainsafe/ssz': 0.10.2 - '@nomicfoundation/ethereumjs-rlp': 5.0.1 + '@nomicfoundation/ethereumjs-rlp': 5.0.2 ethereum-cryptography: 0.1.3 dev: true @@ -4376,7 +4427,7 @@ packages: '@nomicfoundation/ethereumjs-trie': 5.0.5 '@nomicfoundation/ethereumjs-tx': 4.1.2 '@nomicfoundation/ethereumjs-util': 8.0.6 - '@types/async-eventemitter': 0.2.1 + '@types/async-eventemitter': 0.2.2 async-eventemitter: 0.2.4 debug: 4.3.4(supports-color@8.1.1) ethereum-cryptography: 0.1.3 @@ -4387,19 +4438,19 @@ packages: - supports-color dev: true - /@nomicfoundation/ethereumjs-vm@7.0.1: - resolution: {integrity: sha512-rArhyn0jPsS/D+ApFsz3yVJMQ29+pVzNZ0VJgkzAZ+7FqXSRtThl1C1prhmlVr3YNUlfpZ69Ak+RUT4g7VoOuQ==} + /@nomicfoundation/ethereumjs-vm@7.0.2: + resolution: {integrity: sha512-Bj3KZT64j54Tcwr7Qm/0jkeZXJMfdcAtRBedou+Hx0dPOSIgqaIr0vvLwP65TpHbak2DmAq+KJbW2KNtIoFwvA==} engines: {node: '>=14'} dependencies: - '@nomicfoundation/ethereumjs-block': 5.0.1 - '@nomicfoundation/ethereumjs-blockchain': 7.0.1 - '@nomicfoundation/ethereumjs-common': 4.0.1 - '@nomicfoundation/ethereumjs-evm': 2.0.1 - '@nomicfoundation/ethereumjs-rlp': 5.0.1 - '@nomicfoundation/ethereumjs-statemanager': 2.0.1 - '@nomicfoundation/ethereumjs-trie': 6.0.1 - '@nomicfoundation/ethereumjs-tx': 5.0.1 - '@nomicfoundation/ethereumjs-util': 9.0.1 + '@nomicfoundation/ethereumjs-block': 5.0.2 + '@nomicfoundation/ethereumjs-blockchain': 7.0.2 + '@nomicfoundation/ethereumjs-common': 4.0.2 + '@nomicfoundation/ethereumjs-evm': 2.0.2 + '@nomicfoundation/ethereumjs-rlp': 5.0.2 + '@nomicfoundation/ethereumjs-statemanager': 2.0.2 + '@nomicfoundation/ethereumjs-trie': 6.0.2 + '@nomicfoundation/ethereumjs-tx': 5.0.2 + '@nomicfoundation/ethereumjs-util': 9.0.2 debug: 4.3.4(supports-color@8.1.1) ethereum-cryptography: 0.1.3 mcl-wasm: 0.7.9 @@ -4410,22 +4461,36 @@ packages: - utf-8-validate dev: true - /@nomicfoundation/hardhat-foundry@1.0.1(hardhat@2.14.0): - resolution: {integrity: sha512-sQEaX3rik6Gclmek4MqCyOc9+vOM0ZS40eUARrB6K9t6wthqCwJ29CClfxLdbrjn/3MM5hX8ioD+/9OqdGVxSQ==} + /@nomicfoundation/hardhat-ethers@3.0.4(ethers@6.8.0)(hardhat@2.18.1): + resolution: {integrity: sha512-k9qbLoY7qn6C6Y1LI0gk2kyHXil2Tauj4kGzQ8pgxYXIGw8lWn8tuuL72E11CrlKaXRUvOgF0EXrv/msPI2SbA==} + peerDependencies: + ethers: ^6.1.0 + hardhat: ^2.0.0 + dependencies: + debug: 4.3.4(supports-color@8.1.1) + ethers: 6.8.0 + hardhat: 2.18.1(ts-node@10.9.1)(typescript@5.2.2) + lodash.isequal: 4.5.0 + transitivePeerDependencies: + - supports-color + dev: true + + /@nomicfoundation/hardhat-foundry@1.1.1(hardhat@2.18.1): + resolution: {integrity: sha512-cXGCBHAiXas9Pg9MhMOpBVQCkWRYoRFG7GJJAph+sdQsfd22iRs5U5Vs9XmpGEQd1yEvYISQZMeE68Nxj65iUQ==} peerDependencies: - hardhat: ^2.12.6 + hardhat: ^2.17.2 dependencies: chalk: 2.4.2 - hardhat: 2.14.0(ts-node@10.9.1)(typescript@4.9.5) + hardhat: 2.18.1(ts-node@10.9.1)(typescript@5.2.2) dev: true - /@nomicfoundation/hardhat-network-helpers@1.0.8(hardhat@2.14.0): - resolution: {integrity: sha512-MNqQbzUJZnCMIYvlniC3U+kcavz/PhhQSsY90tbEtUyMj/IQqsLwIRZa4ctjABh3Bz0KCh9OXUZ7Yk/d9hr45Q==} + /@nomicfoundation/hardhat-network-helpers@1.0.9(hardhat@2.18.1): + resolution: {integrity: sha512-OXWCv0cHpwLUO2u7bFxBna6dQtCC2Gg/aN/KtJLO7gmuuA28vgmVKYFRCDUqrbjujzgfwQ2aKyZ9Y3vSmDqS7Q==} peerDependencies: hardhat: ^2.9.5 dependencies: ethereumjs-util: 7.1.5 - hardhat: 2.14.0(ts-node@10.9.1)(typescript@4.9.5) + hardhat: 2.18.1(ts-node@10.9.1)(typescript@5.2.2) dev: true /@nomicfoundation/solidity-analyzer-darwin-arm64@0.1.1: @@ -4534,17 +4599,17 @@ packages: '@nomicfoundation/solidity-analyzer-win32-x64-msvc': 0.1.1 dev: true - /@nomiclabs/hardhat-ethers@2.2.3(ethers@5.7.2)(hardhat@2.14.0): + /@nomiclabs/hardhat-ethers@2.2.3(ethers@6.8.0)(hardhat@2.18.1): resolution: {integrity: sha512-YhzPdzb612X591FOe68q+qXVXGG2ANZRvDo0RRUtimev85rCrAlv/TLMEZw5c+kq9AbzocLTVX/h2jVIFPL9Xg==} peerDependencies: ethers: ^5.0.0 hardhat: ^2.0.0 dependencies: - ethers: 5.7.2 - hardhat: 2.14.0(ts-node@10.9.1)(typescript@4.9.5) + ethers: 6.8.0 + hardhat: 2.18.1(ts-node@10.9.1)(typescript@5.2.2) dev: true - /@nomiclabs/hardhat-etherscan@3.1.7(hardhat@2.14.0): + /@nomiclabs/hardhat-etherscan@3.1.7(hardhat@2.18.1): resolution: {integrity: sha512-tZ3TvSgpvsQ6B6OGmo1/Au6u8BrAkvs1mIC/eURA3xgIfznUZBhmpne8hv7BXUzw9xNL3fXdpOYgOQlVMTcoHQ==} peerDependencies: hardhat: ^2.0.4 @@ -4555,27 +4620,29 @@ packages: chalk: 2.4.2 debug: 4.3.4(supports-color@8.1.1) fs-extra: 7.0.1 - hardhat: 2.14.0(ts-node@10.9.1)(typescript@4.9.5) + hardhat: 2.18.1(ts-node@10.9.1)(typescript@5.2.2) lodash: 4.17.21 semver: 6.3.1 table: 6.8.1 - undici: 5.23.0 + undici: 5.26.3 transitivePeerDependencies: - supports-color dev: true - /@nomiclabs/hardhat-waffle@2.0.5(@nomiclabs/hardhat-ethers@2.2.3)(ethereum-waffle@3.4.4)(ethers@5.7.2)(hardhat@2.14.0): - resolution: {integrity: sha512-U1RH9OQ1mWYQfb+moX5aTgGjpVVlOcpiFI47wwnaGG4kLhcTy90cNiapoqZenxcRAITVbr0/+QSduINL5EsUIQ==} + /@nomiclabs/hardhat-waffle@2.0.6(@nomiclabs/hardhat-ethers@2.2.3)(@types/sinon-chai@3.2.10)(ethereum-waffle@3.4.4)(ethers@6.8.0)(hardhat@2.18.1): + resolution: {integrity: sha512-+Wz0hwmJGSI17B+BhU/qFRZ1l6/xMW82QGXE/Gi+WTmwgJrQefuBs1lIf7hzQ1hLk6hpkvb/zwcNkpVKRYTQYg==} peerDependencies: '@nomiclabs/hardhat-ethers': ^2.0.0 + '@types/sinon-chai': ^3.2.3 ethereum-waffle: '*' ethers: ^5.0.0 hardhat: ^2.0.0 dependencies: - '@nomiclabs/hardhat-ethers': 2.2.3(ethers@5.7.2)(hardhat@2.14.0) - ethereum-waffle: 3.4.4(typescript@4.9.5) - ethers: 5.7.2 - hardhat: 2.14.0(ts-node@10.9.1)(typescript@4.9.5) + '@nomiclabs/hardhat-ethers': 2.2.3(ethers@6.8.0)(hardhat@2.18.1) + '@types/sinon-chai': 3.2.10 + ethereum-waffle: 3.4.4(typescript@5.2.2) + ethers: 6.8.0 + hardhat: 2.18.1(ts-node@10.9.1)(typescript@5.2.2) dev: true /@npmcli/fs@1.1.1: @@ -4594,33 +4661,89 @@ packages: rimraf: 3.0.2 dev: true - /@openzeppelin/hardhat-upgrades@1.22.1(@nomiclabs/hardhat-ethers@2.2.3)(@nomiclabs/hardhat-etherscan@3.1.7)(ethers@5.7.2)(hardhat@2.14.0): - resolution: {integrity: sha512-MdoitCTLl4zwMU8MeE/bCj+7JMWBEvd38XqJkw36PkJrXlbv6FedDVCPoumMAhpmtymm0nTwTYYklYG+L6WiiQ==} + /@openzeppelin/defender-admin-client@1.49.0(debug@4.3.4): + resolution: {integrity: sha512-ka+GTbsnGO6j1R2AGj027uu29es/EBVs3VjJStb+7u/1lNhx1xSRS11JBD0a0GNhrwqsKU4czIemlIKMlUzhhQ==} + dependencies: + '@openzeppelin/defender-base-client': 1.49.0(debug@4.3.4) + axios: 1.5.1(debug@4.3.4) + ethers: 5.7.2 + lodash: 4.17.21 + node-fetch: 2.7.0 + transitivePeerDependencies: + - bufferutil + - debug + - encoding + - utf-8-validate + dev: true + + /@openzeppelin/defender-base-client@1.49.0(debug@4.3.4): + resolution: {integrity: sha512-nG2jslaAUbo2ZW9yBStstxTPscAchN/vRdJ16M34whuZRtUp1bccCBVLdv3oiPOdjwFaa1OBXJkheN+eF8alzA==} + dependencies: + amazon-cognito-identity-js: 6.3.6 + async-retry: 1.3.3 + axios: 1.5.1(debug@4.3.4) + lodash: 4.17.21 + node-fetch: 2.7.0 + transitivePeerDependencies: + - debug + - encoding + dev: true + + /@openzeppelin/defender-sdk-base-client@1.2.0: + resolution: {integrity: sha512-v/nzOABW4RH4wqVPG8gUICV48eZeO0kf6ZvNsd1aUP4i7NyCPv80gErjtW08SFzR/sTqsDN6PS3D+les8mGXvg==} + dependencies: + amazon-cognito-identity-js: 6.3.6 + async-retry: 1.3.3 + transitivePeerDependencies: + - encoding + dev: true + + /@openzeppelin/defender-sdk-deploy-client@1.2.0(debug@4.3.4): + resolution: {integrity: sha512-kUBRKMSQiTZ8urP236L68k5X8Eg1ys2FDYMeuJ22GhXFAC2M1l6OaXNFolFBSzmS5t/x8BkJU6+RCyoCqO2qxg==} + dependencies: + '@ethersproject/abi': 5.7.0 + '@openzeppelin/defender-sdk-base-client': 1.2.0 + axios: 1.5.1(debug@4.3.4) + lodash: 4.17.21 + transitivePeerDependencies: + - debug + - encoding + dev: true + + /@openzeppelin/hardhat-upgrades@2.3.3(@nomicfoundation/hardhat-ethers@3.0.4)(ethers@6.8.0)(hardhat@2.18.1): + resolution: {integrity: sha512-rF87xYSz6Q2WFq5zcUF1T1tx3Kiq83hmke0xOBn5Qgrl++osseiDwS5oXfDK3NSWvj06oYGLERRGHcXnpQ31FQ==} hasBin: true peerDependencies: - '@nomiclabs/hardhat-ethers': ^2.0.0 - '@nomiclabs/hardhat-etherscan': ^3.1.0 - '@nomiclabs/harhdat-etherscan': '*' - ethers: ^5.0.5 + '@nomicfoundation/hardhat-ethers': ^3.0.0 + '@nomicfoundation/hardhat-verify': ^1.1.0 + ethers: ^6.6.0 hardhat: ^2.0.2 peerDependenciesMeta: - '@nomiclabs/harhdat-etherscan': + '@nomicfoundation/hardhat-verify': optional: true dependencies: - '@nomiclabs/hardhat-ethers': 2.2.3(ethers@5.7.2)(hardhat@2.14.0) - '@nomiclabs/hardhat-etherscan': 3.1.7(hardhat@2.14.0) - '@openzeppelin/upgrades-core': 1.28.0 + '@nomicfoundation/hardhat-ethers': 3.0.4(ethers@6.8.0)(hardhat@2.18.1) + '@openzeppelin/defender-admin-client': 1.49.0(debug@4.3.4) + '@openzeppelin/defender-base-client': 1.49.0(debug@4.3.4) + '@openzeppelin/defender-sdk-base-client': 1.2.0 + '@openzeppelin/defender-sdk-deploy-client': 1.2.0(debug@4.3.4) + '@openzeppelin/upgrades-core': 1.30.1 chalk: 4.1.2 debug: 4.3.4(supports-color@8.1.1) - ethers: 5.7.2 - hardhat: 2.14.0(ts-node@10.9.1)(typescript@4.9.5) + ethereumjs-util: 7.1.5 + ethers: 6.8.0 + hardhat: 2.18.1(ts-node@10.9.1)(typescript@5.2.2) proper-lockfile: 4.1.2 + undici: 5.26.3 transitivePeerDependencies: + - bufferutil + - encoding - supports-color + - utf-8-validate dev: true - /@openzeppelin/upgrades-core@1.28.0: - resolution: {integrity: sha512-8RKlyg98Adv+46GxDaR0awL3R8bVCcQ27DcSEwrgWOp6siHh8sZg4a2l+2dhPl1510S6uBfhHSydMH5VX2BV5g==} + /@openzeppelin/upgrades-core@1.30.1: + resolution: {integrity: sha512-mFUsZibpiWJv1DR2K89cjbFIseTc2CUV4D2kvPPK5xYke6m7+M87qcr/Xk24mMrdCmG7RWNxQohhVnzESI6Eeg==} hasBin: true dependencies: cbor: 9.0.1 @@ -4638,12 +4761,31 @@ packages: /@pedrouid/environment@1.0.1: resolution: {integrity: sha512-HaW78NszGzRZd9SeoI3JD11JqY+lubnaOx7Pewj5pfjqWXOEATpeKIFb9Z4t2WBUK2iryiXX3lzWwmYWgUL0Ug==} + /@pkgjs/parseargs@0.11.0: + resolution: {integrity: sha512-+1VkjdD0QBLPodGrJUeqarH8VAIvQODIbwh9XpP5Syisf7YoQgsJKPNFoqqLQlu+VQ/tVSshMR6loPMn8U+dPg==} + engines: {node: '>=14'} + requiresBuild: true + dev: true + optional: true + + /@pkgr/utils@2.4.2: + resolution: {integrity: sha512-POgTXhjrTfbTV63DiFXav4lBHiICLKKwDeaKn9Nphwj7WH6m0hMMCaJkMyRWjgtPFyRKRVoMXXjczsTQRDEhYw==} + engines: {node: ^12.20.0 || ^14.18.0 || >=16.0.0} + dependencies: + cross-spawn: 7.0.3 + fast-glob: 3.3.1 + is-glob: 4.0.3 + open: 9.1.0 + picocolors: 1.0.0 + tslib: 2.6.2 + dev: true + /@playwright/test@1.28.1: resolution: {integrity: sha512-xN6spdqrNlwSn9KabIhqfZR7IWjPpFK1835tFNgjrlysaSezuX8PYUwaz38V/yI8TJLG9PkAMEXoHRXYXlpTPQ==} engines: {node: '>=14'} hasBin: true dependencies: - '@types/node': 20.8.3 + '@types/node': 20.8.6 playwright-core: 1.28.1 dev: true @@ -5108,6 +5250,13 @@ packages: '@sinonjs/commons': 1.8.6 dev: true + /@smithy/types@2.3.5: + resolution: {integrity: sha512-ehyDt8M9hehyxrLQGoA1BGPou8Js1Ocoh5M0ngDhJMqbFmNK5N6Xhr9/ZExWkyIW8XcGkiMPq3ZUEE0ScrhbuQ==} + engines: {node: '>=14.0.0'} + dependencies: + tslib: 2.6.2 + dev: true + /@solana/buffer-layout@4.0.1: resolution: {integrity: sha512-E1ImOIAD1tBZFRdjeM4/pzTiTApC0AOBGwyAMS4fwIodCWArzJ3DWdoh8cKxeFM2fElkxBh2Aqts1BPC373rHA==} engines: {node: '>=5.10'} @@ -5292,7 +5441,7 @@ packages: sirv: 2.0.3 svelte: 4.1.0 undici: 5.22.1 - vite: 4.4.9(@types/node@20.8.3) + vite: 4.4.9(@types/node@20.8.6) transitivePeerDependencies: - supports-color dev: true @@ -5308,7 +5457,7 @@ packages: '@sveltejs/vite-plugin-svelte': 2.4.5(svelte@4.1.0)(vite@4.4.9) debug: 4.3.4(supports-color@8.1.1) svelte: 4.1.0 - vite: 4.4.9(@types/node@20.8.3) + vite: 4.4.9(@types/node@20.8.6) transitivePeerDependencies: - supports-color dev: true @@ -5350,7 +5499,7 @@ packages: magic-string: 0.30.3 svelte: 4.1.0 svelte-hmr: 0.15.3(svelte@4.1.0) - vite: 4.4.9(@types/node@20.8.3) + vite: 4.4.9(@types/node@20.8.6) vitefu: 0.2.4(vite@4.4.9) transitivePeerDependencies: - supports-color @@ -5488,6 +5637,24 @@ packages: resolution: {integrity: sha512-BRbo1fOtyVbhfLyuCWw6wAWp+U8UQle+ZXu84MYYWzYSEB28dyfnRBIE99eoG+qdAC0po6L2ScIEivcT07UaMA==} dev: true + /@typechain/ethers-v5@11.1.2(@ethersproject/abi@5.7.0)(@ethersproject/providers@5.7.2)(ethers@6.8.0)(typechain@8.3.2)(typescript@5.2.2): + resolution: {integrity: sha512-ID6pqWkao54EuUQa0P5RgjvfA3MYqxUQKpbGKERbsjBW5Ra7EIXvbMlPp2pcP5IAdUkyMCFYsP2SN5q7mPdLDQ==} + peerDependencies: + '@ethersproject/abi': ^5.0.0 + '@ethersproject/providers': ^5.0.0 + ethers: ^5.1.3 + typechain: ^8.3.2 + typescript: '>=4.3.0' + dependencies: + '@ethersproject/abi': 5.7.0 + '@ethersproject/providers': 5.7.2 + ethers: 6.8.0 + lodash: 4.17.21 + ts-essentials: 7.0.3(typescript@5.2.2) + typechain: 8.3.2(typescript@5.2.2) + typescript: 5.2.2 + dev: true + /@typechain/ethers-v5@2.0.0(ethers@5.7.2)(typechain@3.0.0): resolution: {integrity: sha512-0xdCkyGOzdqh4h5JSf+zoWx85IusEjDcPIwNEHP8mrWSnCae4rvrqB+/gtpdNfX7zjlFlZiMeePn2r63EI3Lrw==} peerDependencies: @@ -5495,44 +5662,40 @@ packages: typechain: ^3.0.0 dependencies: ethers: 5.7.2 - typechain: 3.0.0(typescript@4.9.5) + typechain: 3.0.0(typescript@5.2.2) dev: true - /@typechain/ethers-v5@7.2.0(@ethersproject/abi@5.7.0)(@ethersproject/bytes@5.7.0)(@ethersproject/providers@5.7.2)(ethers@5.7.2)(typechain@5.2.0)(typescript@4.9.5): - resolution: {integrity: sha512-jfcmlTvaaJjng63QsT49MT6R1HFhtO/TBMWbyzPFSzMmVIqb2tL6prnKBs4ZJrSvmgIXWy+ttSjpaxCTq8D/Tw==} + /@typechain/ethers-v6@0.5.1(ethers@6.8.0)(typechain@8.3.2)(typescript@5.2.2): + resolution: {integrity: sha512-F+GklO8jBWlsaVV+9oHaPh5NJdd6rAKN4tklGfInX1Q7h0xPgVLP39Jl3eCulPB5qexI71ZFHwbljx4ZXNfouA==} peerDependencies: - '@ethersproject/abi': ^5.0.0 - '@ethersproject/bytes': ^5.0.0 - '@ethersproject/providers': ^5.0.0 - ethers: ^5.1.3 - typechain: ^5.0.0 - typescript: '>=4.0.0' + ethers: 6.x + typechain: ^8.3.2 + typescript: '>=4.7.0' dependencies: - '@ethersproject/abi': 5.7.0 - '@ethersproject/bytes': 5.7.0 - '@ethersproject/providers': 5.7.2 - ethers: 5.7.2 + ethers: 6.8.0 lodash: 4.17.21 - ts-essentials: 7.0.3(typescript@4.9.5) - typechain: 5.2.0(typescript@4.9.5) - typescript: 4.9.5 + ts-essentials: 7.0.3(typescript@5.2.2) + typechain: 8.3.2(typescript@5.2.2) + typescript: 5.2.2 dev: true - /@typechain/hardhat@2.3.1(hardhat@2.14.0)(lodash@4.17.21)(typechain@5.2.0): - resolution: {integrity: sha512-BQV8OKQi0KAzLXCdsPO0pZBNQQ6ra8A2ucC26uFX/kquRBtJu1yEyWnVSmtr07b5hyRoJRpzUeINLnyqz4/MAw==} + /@typechain/hardhat@9.1.0(@typechain/ethers-v6@0.5.1)(ethers@6.8.0)(hardhat@2.18.1)(typechain@8.3.2): + resolution: {integrity: sha512-mtaUlzLlkqTlfPwB3FORdejqBskSnh+Jl8AIJGjXNAQfRQ4ofHADPl1+oU7Z3pAJzmZbUXII8MhOLQltcHgKnA==} peerDependencies: - hardhat: ^2.0.10 - lodash: ^4.17.15 - typechain: ^5.1.2 + '@typechain/ethers-v6': ^0.5.1 + ethers: ^6.1.0 + hardhat: ^2.9.9 + typechain: ^8.3.2 dependencies: + '@typechain/ethers-v6': 0.5.1(ethers@6.8.0)(typechain@8.3.2)(typescript@5.2.2) + ethers: 6.8.0 fs-extra: 9.1.0 - hardhat: 2.14.0(ts-node@10.9.1)(typescript@4.9.5) - lodash: 4.17.21 - typechain: 5.2.0(typescript@4.9.5) + hardhat: 2.18.1(ts-node@10.9.1)(typescript@5.2.2) + typechain: 8.3.2(typescript@5.2.2) dev: true - /@types/abstract-leveldown@7.2.2: - resolution: {integrity: sha512-EVVYLp4D3zwP5/sS2S5x70t1w0BDrjbv0x0d0znngFKX/YExe+il/JAlHOEpo0cTdtY4Ohnllen32hPganG20w==} + /@types/abstract-leveldown@7.2.3: + resolution: {integrity: sha512-YAdL8tIYbiKoFjAf/0Ir3mvRJ/iFvBP/FK0I8Xa5rGWgVcq0xWOEInzlJfs6TIPWFweEOTKgNSBdxneUcHRvaw==} dev: true /@types/acorn@4.0.6: @@ -5541,8 +5704,8 @@ packages: '@types/estree': 1.0.2 dev: false - /@types/async-eventemitter@0.2.1: - resolution: {integrity: sha512-M2P4Ng26QbAeITiH7w1d7OxtldgfAe0wobpyJzVK/XOb0cUGKU2R4pfAhqcJBXAe2ife5ZOhSv4wk7p+ffURtg==} + /@types/async-eventemitter@0.2.2: + resolution: {integrity: sha512-cUFkZN+0TXQ2HYX/vbVUa/0+3/kXtuVrojjzq4Yo8X68UDvwngMf7uOZWT7BcA5P6MhCNd/zOCuczgPAQxsNIQ==} dev: true /@types/babel__core@7.20.1: @@ -5577,12 +5740,12 @@ packages: /@types/bn.js@4.11.6: resolution: {integrity: sha512-pqr857jrp2kPuO9uRjZ3PwnJTjoQy+fcdxvBTvHm6dkmEL9q+hDD/2j/0ELOBPtPnS8LjCX0gI9nbl8lVkadpg==} dependencies: - '@types/node': 12.20.55 + '@types/node': 20.8.6 - /@types/bn.js@5.1.1: - resolution: {integrity: sha512-qNrYbZqMx0uJAfKnKclPh+dTwK33KfLHYqtyODwd5HnXOjnkhc4qgn3BrK6RWyGZm5+sIFE7Q7Vz6QQtJB7w7g==} + /@types/bn.js@5.1.2: + resolution: {integrity: sha512-dkpZu0szUtn9UXTmw+e0AJFd4D2XAxDnsCLdc05SfqpqzPEBft8eQr8uaFitfo/dUUOZERaLec2hHMG87A4Dxg==} dependencies: - '@types/node': 12.20.55 + '@types/node': 20.8.6 dev: true /@types/cacheable-request@6.0.3: @@ -5599,21 +5762,17 @@ packages: /@types/chai-subset@1.3.3: resolution: {integrity: sha512-frBecisrNGz+F4T6bcc+NLeolfiojh5FxW2klu669+8BARtyQv2C/GkNW6FUodVe4BroGMP/wER/YDGc7rEllw==} dependencies: - '@types/chai': 4.3.6 - dev: true - - /@types/chai@4.3.4: - resolution: {integrity: sha512-KnRanxnpfpjUTqTCXslZSEdLfXExwgNxYPdiO2WGUj8+HDjFi8R3k5RVKPeSCzLjCcshCAtVO2QBbVuAV4kTnw==} + '@types/chai': 4.3.8 dev: true - /@types/chai@4.3.6: - resolution: {integrity: sha512-VOVRLM1mBxIRxydiViqPcKn6MIxZytrbMpd6RJLIWKxUNr3zux8no0Oc7kJx0WAPIitgZ0gkrDS+btlqQpubpw==} + /@types/chai@4.3.8: + resolution: {integrity: sha512-yW/qTM4mRBBcsA9Xw9FbcImYtFPY7sgr+G/O5RDYVmxiy9a+pE5FyoFUi8JYCZY5nicj8atrr1pcfPiYpeNGOA==} dev: true /@types/concat-stream@1.6.1: resolution: {integrity: sha512-eHE4cQPoj6ngxBZMvVf6Hw7Mh4jMW4U9lpGmS5GBPB9RYxlFg+CHaVN7ErNY4W9XfLIEn20b4VDYaIrbq0q4uA==} dependencies: - '@types/node': 12.20.55 + '@types/node': 20.8.6 dev: true /@types/connect@3.4.36: @@ -5650,13 +5809,6 @@ packages: '@types/ms': 0.7.32 dev: false - /@types/eslint-scope@3.7.4: - resolution: {integrity: sha512-9K4zoImiZc3HlIp6AVUDE4CWYx22a+lhSZMYNpbjW04+YF0KWj4pJXnEMjdnFTiQibFFmElcsasJXDbdI/EPhA==} - dependencies: - '@types/eslint': 8.44.2 - '@types/estree': 0.0.50 - dev: true - /@types/eslint-scope@3.7.5: resolution: {integrity: sha512-JNvhIEyxVW6EoMIFIvj93ZOywYFatlpu9deeH6eSx6PE3WHYvHaQtmHmQeNw7aA81bYGBPPQqdtBm6b1SsQMmA==} dependencies: @@ -5671,13 +5823,6 @@ packages: '@types/json-schema': 7.0.12 dev: true - /@types/eslint@8.44.2: - resolution: {integrity: sha512-sdPRb9K6iL5XZOmBubg8yiFp5yS/JdUDQsq5e6h95km91MCYMuvp7mh1fjPEYUhvHepKpZOjnEaMBR4PxjWDzg==} - dependencies: - '@types/estree': 0.0.50 - '@types/json-schema': 7.0.12 - dev: true - /@types/eslint@8.44.4: resolution: {integrity: sha512-lOzjyfY/D9QR4hY9oblZ76B90MYTB3RrQ4z2vBIJKj9ROCRqdkYl2gSUx1x1a4IWPjKJZLL4Aw1Zfay7eMnmnA==} dependencies: @@ -5707,27 +5852,27 @@ packages: /@types/form-data@0.0.33: resolution: {integrity: sha512-8BSvG1kGm83cyJITQMZSulnl6QV8jqAGreJsc5tPu1Jq0vTSOiY/k24Wx82JRpWwZSqrala6sd5rWi6aNXvqcw==} dependencies: - '@types/node': 12.20.55 + '@types/node': 20.8.6 dev: true /@types/glob@7.2.0: resolution: {integrity: sha512-ZUxbzKl0IfJILTS6t7ip5fQQM/J3TJYubDm3nMbgubNNYS62eXeUpoLUC8/7fJNiFYHTrGPQn7hspDUzIHX3UA==} dependencies: '@types/minimatch': 5.1.2 - '@types/node': 12.20.55 + '@types/node': 20.8.6 dev: true /@types/glob@8.1.0: resolution: {integrity: sha512-IO+MJPVhoqz+28h1qLAcBEH2+xHMK6MTyHJc7MTnnYb6wsoLR29POVGJ7LycmVXIqyy/4/2ShP5sUwTXuOwb/w==} dependencies: '@types/minimatch': 5.1.2 - '@types/node': 12.20.55 + '@types/node': 20.8.6 dev: true /@types/graceful-fs@4.1.6: resolution: {integrity: sha512-Sig0SNORX9fdW+bQuTEovKj3uHcUL6LQKbCrrqb1X7J6/ReAbhCXRAhc+SMejhLELFj2QcyuxmUooZ4bt5ReSw==} dependencies: - '@types/node': 20.8.3 + '@types/node': 20.8.6 dev: true /@types/hast@2.3.6: @@ -5810,9 +5955,9 @@ packages: /@types/levelup@4.3.3: resolution: {integrity: sha512-K+OTIjJcZHVlZQN1HmU64VtrC0jC3dXWQozuEIR9zVvltIk90zaGPM2AgT+fIkChpzHhFE3YnvFLCbLtzAmexA==} dependencies: - '@types/abstract-leveldown': 7.2.2 + '@types/abstract-leveldown': 7.2.3 '@types/level-errors': 3.0.0 - '@types/node': 12.20.55 + '@types/node': 20.8.6 dev: true /@types/lru-cache@5.1.1: @@ -5853,8 +5998,8 @@ packages: '@types/node': 12.20.55 dev: true - /@types/mocha@9.1.1: - resolution: {integrity: sha512-Z61JK7DKDtdKTWwLeElSEBcWGRLY8g95ic5FoQqI9CMx0ns/Ghep3B4DfcEimiKMvtamNVULVNKEsiwV3aQmXw==} + /@types/mocha@10.0.2: + resolution: {integrity: sha512-NaHL0+0lLNhX6d9rs+NSt97WH/gIlRHmszXbQ/8/MV/eVcFNdeJ/GYhrFuUc8K7WuPhRhTSdMkCp8VMzhUq85w==} dev: true /@types/ms@0.7.31: @@ -5878,10 +6023,19 @@ packages: /@types/node@12.20.55: resolution: {integrity: sha512-J8xLz7q2OFulZ2cyGTLE1TbbZcjpno7FaN6zdJNrgAdrJ+DZzh/uFR6YrTb4C+nXakvud8Q4+rbhoIWlYQbUFQ==} + /@types/node@18.15.13: + resolution: {integrity: sha512-N+0kuo9KgrUQ1Sn/ifDXsvg0TTleP7rIy4zOBGECxAljqvqfqpTfzx0Q1NUedOixRMBfe2Whhb056a42cWs26Q==} + dev: true + /@types/node@20.8.3: resolution: {integrity: sha512-jxiZQFpb+NlH5kjW49vXxvxTjeeqlbsnTAdBTKpzEdPs9itay7MscYXz3Fo9VYFEsfQ6LJFitHad3faerLAjCw==} dev: true + /@types/node@20.8.6: + resolution: {integrity: sha512-eWO4K2Ji70QzKUqRy6oyJWUeB7+g2cRagT3T/nxYibYcT4y2BDL8lqolRXjTHmkZCdJfIPaY73KbJAZmcryxTQ==} + dependencies: + undici-types: 5.25.3 + /@types/node@8.10.66: resolution: {integrity: sha512-tktOkFUA4kXx2hhhrB8bIFb5TbwzS4uOhKEmwiD+NoiL0qtP2OQ9mFldbgD4dV1djrlBYP6eBuQZiWjuHUpqFw==} dev: true @@ -5893,7 +6047,7 @@ packages: /@types/pbkdf2@3.1.0: resolution: {integrity: sha512-Cf63Rv7jCQ0LaL8tNXmEyqTHuIJxRdlS5vMh1mj5voN4+QFhVZnlZruezqpWYDiJ8UTzhP0VmeLXCmBk66YrMQ==} dependencies: - '@types/node': 12.20.55 + '@types/node': 20.8.6 /@types/prettier@2.7.3: resolution: {integrity: sha512-+68kP9yzs4LMp7VNh8gdzMSPZFL44MLGqiHWvttYJe+6qnuVr4Ek9wSBQoveqY/r+LwjCcU29kNVkidwim+kYA==} @@ -5920,7 +6074,7 @@ packages: /@types/readable-stream@2.3.15: resolution: {integrity: sha512-oM5JSKQCcICF1wvGgmecmHldZ48OZamtMxcGGVICOJA8o8cahXC1zEVAif8iwoc5j8etxFaRFnf095+CDsuoFQ==} dependencies: - '@types/node': 12.20.55 + '@types/node': 20.8.6 safe-buffer: 5.1.2 dev: true @@ -5954,30 +6108,34 @@ packages: /@types/scheduler@0.16.4: resolution: {integrity: sha512-2L9ifAGl7wmXwP4v3pN4p2FLhD0O1qsJpvKmNin5VA8+UvNVb447UDaAEV6UdrkA+m/Xs58U1RFps44x6TFsVQ==} - /@types/secp256k1@4.0.3: - resolution: {integrity: sha512-Da66lEIFeIz9ltsdMZcpQvmrmmoqrfju8pm1BH8WbYjZSwUgCwXLb9C+9XYogwBITnbsSaMdVPb2ekf7TV+03w==} + /@types/secp256k1@4.0.4: + resolution: {integrity: sha512-oN0PFsYxDZnX/qSJ5S5OwaEDTYfekhvaM5vqui2bu1AA39pKofmgL104Q29KiOXizXS2yLjSzc5YdTyMKdcy4A==} dependencies: - '@types/node': 12.20.55 + '@types/node': 20.8.6 /@types/semver@7.5.1: resolution: {integrity: sha512-cJRQXpObxfNKkFAZbJl2yjWtJCqELQIdShsogr1d2MilP8dKD9TE/nEKHkJgUNHdGKCQaf9HbIynuV2csLGVLg==} dev: true - /@types/sinon-chai@3.2.9: - resolution: {integrity: sha512-/19t63pFYU0ikrdbXKBWj9PCdnKyTd0Qkz0X91Ta081cYsq90OxYdcWwK/dwEoDa6dtXgj2HJfmzgq+QZTHdmQ==} + /@types/semver@7.5.3: + resolution: {integrity: sha512-OxepLK9EuNEIPxWNME+C6WwbRAOOI2o2BaQEGzz5Lu2e4Z5eDnEo+/aVEDMIXywoJitJ7xWd641wrGLZdtwRyw==} + dev: true + + /@types/sinon-chai@3.2.10: + resolution: {integrity: sha512-D+VFqUjMqeku/FGl4Ioo+fDeWOaIfbZ6Oj+glgFUgz5m5RJ4kgCER3FdV1uvhmEt0A+FRz+juPdybFlg5Hxfow==} dependencies: - '@types/chai': 4.3.4 - '@types/sinon': 10.0.16 + '@types/chai': 4.3.8 + '@types/sinon': 10.0.19 dev: true - /@types/sinon@10.0.16: - resolution: {integrity: sha512-j2Du5SYpXZjJVJtXBokASpPRj+e2z+VUhCPHmM6WMfe3dpHu6iVKJMU6AiBcMp/XTAYnEj6Wc1trJUWwZ0QaAQ==} + /@types/sinon@10.0.19: + resolution: {integrity: sha512-MWZNGPSchIdDfb5FL+VFi4zHsHbNOTQEgjqFQk7HazXSXwUU9PAX3z9XBqb3AJGYr9YwrtCtaSMsT3brYsN/jQ==} dependencies: - '@types/sinonjs__fake-timers': 8.1.2 + '@types/sinonjs__fake-timers': 8.1.3 dev: true - /@types/sinonjs__fake-timers@8.1.2: - resolution: {integrity: sha512-9GcLXF0/v3t80caGs5p2rRfkB+a8VBGLJZVih6CNFkx8IZ994wiKKLSRs9nuFwk1HevWs/1mnUmkApGrSGsShA==} + /@types/sinonjs__fake-timers@8.1.3: + resolution: {integrity: sha512-4g+2YyWe0Ve+LBh+WUm1697PD0Kdi6coG1eU0YjQbwx61AZ8XbEpL1zIT6WjuUKrCMCROpEaYQPDjBnDouBVAQ==} dev: true /@types/stack-utils@2.0.1: @@ -5987,8 +6145,8 @@ packages: /@types/trusted-types@2.0.3: resolution: {integrity: sha512-NfQ4gyz38SL8sDNrSixxU2Os1a5xcdFxipAFxYEuLUlvU2uDwS4NUpsImcf1//SlWItCVMMLiylsxbmNMToV/g==} - /@types/underscore@1.11.9: - resolution: {integrity: sha512-M63wKUdsjDFUfyFt1TCUZHGFk9KDAa5JP0adNUErbm0U45Lr06HtANdYRP+GyleEopEoZ4UyBcdAC5TnW4Uz2w==} + /@types/underscore@1.11.11: + resolution: {integrity: sha512-J/ZgSP9Yv0S+wfUfeRh9ynktcCvycfW4S9NbzkFdiHLBth+Ctdy5nYg3ZAqUKq7v3gcJce6rXo41zJV6IqsXsQ==} dev: true /@types/unist@2.0.8: @@ -6002,8 +6160,8 @@ packages: /@types/web3@1.0.19: resolution: {integrity: sha512-fhZ9DyvDYDwHZUp5/STa9XW2re0E8GxoioYJ4pEUZ13YHpApSagixj7IAdoYH5uAK+UalGq6Ml8LYzmgRA/q+A==} dependencies: - '@types/bn.js': 5.1.1 - '@types/underscore': 1.11.9 + '@types/bn.js': 5.1.2 + '@types/underscore': 1.11.11 dev: true /@types/ws@7.4.7: @@ -6048,35 +6206,6 @@ packages: - supports-color dev: true - /@typescript-eslint/eslint-plugin@6.6.0(@typescript-eslint/parser@4.33.0)(eslint@7.32.0)(typescript@4.9.5): - resolution: {integrity: sha512-CW9YDGTQnNYMIo5lMeuiIG08p4E0cXrXTbcZ2saT/ETE7dWUrNxlijsQeU04qAAKkILiLzdQz+cGFxCJjaZUmA==} - engines: {node: ^16.0.0 || >=18.0.0} - peerDependencies: - '@typescript-eslint/parser': ^6.0.0 || ^6.0.0-alpha - eslint: ^7.0.0 || ^8.0.0 - typescript: '*' - peerDependenciesMeta: - typescript: - optional: true - dependencies: - '@eslint-community/regexpp': 4.8.0 - '@typescript-eslint/parser': 4.33.0(eslint@7.32.0)(typescript@4.9.5) - '@typescript-eslint/scope-manager': 6.6.0 - '@typescript-eslint/type-utils': 6.6.0(eslint@7.32.0)(typescript@4.9.5) - '@typescript-eslint/utils': 6.6.0(eslint@7.32.0)(typescript@4.9.5) - '@typescript-eslint/visitor-keys': 6.6.0 - debug: 4.3.4(supports-color@8.1.1) - eslint: 7.32.0 - graphemer: 1.4.0 - ignore: 5.2.4 - natural-compare: 1.4.0 - semver: 7.5.4 - ts-api-utils: 1.0.2(typescript@4.9.5) - typescript: 4.9.5 - transitivePeerDependencies: - - supports-color - dev: true - /@typescript-eslint/eslint-plugin@6.6.0(@typescript-eslint/parser@5.45.0)(eslint@7.32.0)(typescript@4.9.5): resolution: {integrity: sha512-CW9YDGTQnNYMIo5lMeuiIG08p4E0cXrXTbcZ2saT/ETE7dWUrNxlijsQeU04qAAKkILiLzdQz+cGFxCJjaZUmA==} engines: {node: ^16.0.0 || >=18.0.0} @@ -6164,22 +6293,31 @@ packages: - supports-color dev: true - /@typescript-eslint/parser@4.33.0(eslint@7.32.0)(typescript@4.9.5): - resolution: {integrity: sha512-ZohdsbXadjGBSK0/r+d87X0SBmKzOq4/S5nzK6SBgJspFo9/CUDJ7hjayuze+JK7CZQLDMroqytp7pOcFKTxZA==} - engines: {node: ^10.12.0 || >=12.0.0} + /@typescript-eslint/eslint-plugin@6.7.5(@typescript-eslint/parser@6.7.5)(eslint@8.51.0)(typescript@5.2.2): + resolution: {integrity: sha512-JhtAwTRhOUcP96D0Y6KYnwig/MRQbOoLGXTON2+LlyB/N35SP9j1boai2zzwXb7ypKELXMx3DVk9UTaEq1vHEw==} + engines: {node: ^16.0.0 || >=18.0.0} peerDependencies: - eslint: ^5.0.0 || ^6.0.0 || ^7.0.0 + '@typescript-eslint/parser': ^6.0.0 || ^6.0.0-alpha + eslint: ^7.0.0 || ^8.0.0 typescript: '*' peerDependenciesMeta: typescript: optional: true dependencies: - '@typescript-eslint/scope-manager': 4.33.0 - '@typescript-eslint/types': 4.33.0 - '@typescript-eslint/typescript-estree': 4.33.0(typescript@4.9.5) + '@eslint-community/regexpp': 4.9.1 + '@typescript-eslint/parser': 6.7.5(eslint@8.51.0)(typescript@5.2.2) + '@typescript-eslint/scope-manager': 6.7.5 + '@typescript-eslint/type-utils': 6.7.5(eslint@8.51.0)(typescript@5.2.2) + '@typescript-eslint/utils': 6.7.5(eslint@8.51.0)(typescript@5.2.2) + '@typescript-eslint/visitor-keys': 6.7.5 debug: 4.3.4(supports-color@8.1.1) - eslint: 7.32.0 - typescript: 4.9.5 + eslint: 8.51.0 + graphemer: 1.4.0 + ignore: 5.2.4 + natural-compare: 1.4.0 + semver: 7.5.4 + ts-api-utils: 1.0.3(typescript@5.2.2) + typescript: 5.2.2 transitivePeerDependencies: - supports-color dev: true @@ -6245,12 +6383,25 @@ packages: - supports-color dev: true - /@typescript-eslint/scope-manager@4.33.0: - resolution: {integrity: sha512-5IfJHpgTsTZuONKbODctL4kKuQje/bzBRkwHE8UOZ4f89Zeddg+EGZs8PD8NcN4LdM3ygHWYB3ukPAYjvl/qbQ==} - engines: {node: ^8.10.0 || ^10.13.0 || >=11.10.1} + /@typescript-eslint/parser@6.7.5(eslint@8.51.0)(typescript@5.2.2): + resolution: {integrity: sha512-bIZVSGx2UME/lmhLcjdVc7ePBwn7CLqKarUBL4me1C5feOd663liTGjMBGVcGr+BhnSLeP4SgwdvNnnkbIdkCw==} + engines: {node: ^16.0.0 || >=18.0.0} + peerDependencies: + eslint: ^7.0.0 || ^8.0.0 + typescript: '*' + peerDependenciesMeta: + typescript: + optional: true dependencies: - '@typescript-eslint/types': 4.33.0 - '@typescript-eslint/visitor-keys': 4.33.0 + '@typescript-eslint/scope-manager': 6.7.5 + '@typescript-eslint/types': 6.7.5 + '@typescript-eslint/typescript-estree': 6.7.5(typescript@5.2.2) + '@typescript-eslint/visitor-keys': 6.7.5 + debug: 4.3.4(supports-color@8.1.1) + eslint: 8.51.0 + typescript: 5.2.2 + transitivePeerDependencies: + - supports-color dev: true /@typescript-eslint/scope-manager@5.16.0: @@ -6293,6 +6444,14 @@ packages: '@typescript-eslint/visitor-keys': 6.7.0 dev: true + /@typescript-eslint/scope-manager@6.7.5: + resolution: {integrity: sha512-GAlk3eQIwWOJeb9F7MKQ6Jbah/vx1zETSDw8likab/eFcqkjSD7BI75SDAeC5N2L0MmConMoPvTsmkrg71+B1A==} + engines: {node: ^16.0.0 || >=18.0.0} + dependencies: + '@typescript-eslint/types': 6.7.5 + '@typescript-eslint/visitor-keys': 6.7.5 + dev: true + /@typescript-eslint/type-utils@5.16.0(eslint@7.32.0)(typescript@4.9.5): resolution: {integrity: sha512-SKygICv54CCRl1Vq5ewwQUJV/8padIWvPgCxlWPGO/OgQLCijY9G7lDu6H+mqfQtbzDNlVjzVWQmeqbLMBLEwQ==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} @@ -6372,9 +6531,24 @@ packages: - supports-color dev: true - /@typescript-eslint/types@4.33.0: - resolution: {integrity: sha512-zKp7CjQzLQImXEpLt2BUw1tvOMPfNoTAfb8l51evhYbOEEzdWyQNmHWWGPR6hwKJDAi+1VXSBmnhL9kyVTTOuQ==} - engines: {node: ^8.10.0 || ^10.13.0 || >=11.10.1} + /@typescript-eslint/type-utils@6.7.5(eslint@8.51.0)(typescript@5.2.2): + resolution: {integrity: sha512-Gs0qos5wqxnQrvpYv+pf3XfcRXW6jiAn9zE/K+DlmYf6FcpxeNYN0AIETaPR7rHO4K2UY+D0CIbDP9Ut0U4m1g==} + engines: {node: ^16.0.0 || >=18.0.0} + peerDependencies: + eslint: ^7.0.0 || ^8.0.0 + typescript: '*' + peerDependenciesMeta: + typescript: + optional: true + dependencies: + '@typescript-eslint/typescript-estree': 6.7.5(typescript@5.2.2) + '@typescript-eslint/utils': 6.7.5(eslint@8.51.0)(typescript@5.2.2) + debug: 4.3.4(supports-color@8.1.1) + eslint: 8.51.0 + ts-api-utils: 1.0.3(typescript@5.2.2) + typescript: 5.2.2 + transitivePeerDependencies: + - supports-color dev: true /@typescript-eslint/types@5.16.0: @@ -6402,25 +6576,9 @@ packages: engines: {node: ^16.0.0 || >=18.0.0} dev: true - /@typescript-eslint/typescript-estree@4.33.0(typescript@4.9.5): - resolution: {integrity: sha512-rkWRY1MPFzjwnEVHsxGemDzqqddw2QbTJlICPD9p9I9LfsO8fdmfQPOX3uKfUaGRDFJbfrtm/sXhVXN4E+bzCA==} - engines: {node: ^10.12.0 || >=12.0.0} - peerDependencies: - typescript: '*' - peerDependenciesMeta: - typescript: - optional: true - dependencies: - '@typescript-eslint/types': 4.33.0 - '@typescript-eslint/visitor-keys': 4.33.0 - debug: 4.3.4(supports-color@8.1.1) - globby: 11.1.0 - is-glob: 4.0.3 - semver: 7.5.4 - tsutils: 3.21.0(typescript@4.9.5) - typescript: 4.9.5 - transitivePeerDependencies: - - supports-color + /@typescript-eslint/types@6.7.5: + resolution: {integrity: sha512-WboQBlOXtdj1tDFPyIthpKrUb+kZf2VroLZhxKa/VlwLlLyqv/PwUNgL30BlTVZV1Wu4Asu2mMYPqarSO4L5ZQ==} + engines: {node: ^16.0.0 || >=18.0.0} dev: true /@typescript-eslint/typescript-estree@5.16.0(typescript@4.9.5): @@ -6549,6 +6707,27 @@ packages: - supports-color dev: true + /@typescript-eslint/typescript-estree@6.7.5(typescript@5.2.2): + resolution: {integrity: sha512-NhJiJ4KdtwBIxrKl0BqG1Ur+uw7FiOnOThcYx9DpOGJ/Abc9z2xNzLeirCG02Ig3vkvrc2qFLmYSSsaITbKjlg==} + engines: {node: ^16.0.0 || >=18.0.0} + peerDependencies: + typescript: '*' + peerDependenciesMeta: + typescript: + optional: true + dependencies: + '@typescript-eslint/types': 6.7.5 + '@typescript-eslint/visitor-keys': 6.7.5 + debug: 4.3.4(supports-color@8.1.1) + globby: 11.1.0 + is-glob: 4.0.3 + semver: 7.5.4 + ts-api-utils: 1.0.3(typescript@5.2.2) + typescript: 5.2.2 + transitivePeerDependencies: + - supports-color + dev: true + /@typescript-eslint/utils@5.16.0(eslint@7.32.0)(typescript@4.9.5): resolution: {integrity: sha512-iYej2ER6AwmejLWMWzJIHy3nPJeGDuCqf8Jnb+jAQVoPpmWzwQOfa9hWVB8GIQE5gsCv/rfN4T+AYb/V06WseQ==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} @@ -6644,12 +6823,23 @@ packages: - typescript dev: true - /@typescript-eslint/visitor-keys@4.33.0: - resolution: {integrity: sha512-uqi/2aSz9g2ftcHWf8uLPJA70rUv6yuMW5Bohw+bwcuzaxQIHaKFZCKGoGXIrc9vkTJ3+0txM73K0Hq3d5wgIg==} - engines: {node: ^8.10.0 || ^10.13.0 || >=11.10.1} + /@typescript-eslint/utils@6.7.5(eslint@8.51.0)(typescript@5.2.2): + resolution: {integrity: sha512-pfRRrH20thJbzPPlPc4j0UNGvH1PjPlhlCMq4Yx7EGjV7lvEeGX0U6MJYe8+SyFutWgSHsdbJ3BXzZccYggezA==} + engines: {node: ^16.0.0 || >=18.0.0} + peerDependencies: + eslint: ^7.0.0 || ^8.0.0 dependencies: - '@typescript-eslint/types': 4.33.0 - eslint-visitor-keys: 2.1.0 + '@eslint-community/eslint-utils': 4.4.0(eslint@8.51.0) + '@types/json-schema': 7.0.13 + '@types/semver': 7.5.3 + '@typescript-eslint/scope-manager': 6.7.5 + '@typescript-eslint/types': 6.7.5 + '@typescript-eslint/typescript-estree': 6.7.5(typescript@5.2.2) + eslint: 8.51.0 + semver: 7.5.4 + transitivePeerDependencies: + - supports-color + - typescript dev: true /@typescript-eslint/visitor-keys@5.16.0: @@ -6692,6 +6882,14 @@ packages: eslint-visitor-keys: 3.4.3 dev: true + /@typescript-eslint/visitor-keys@6.7.5: + resolution: {integrity: sha512-3MaWdDZtLlsexZzDSdQWsFQ9l9nL8B80Z4fImSpyllFC/KLqWQRdEcB+gGGO+N3Q2uL40EsG66wZLsohPxNXvg==} + engines: {node: ^16.0.0 || >=18.0.0} + dependencies: + '@typescript-eslint/types': 6.7.5 + eslint-visitor-keys: 3.4.3 + dev: true + /@ungap/structured-clone@1.2.0: resolution: {integrity: sha512-zuVdFrMJiuCDQUMCzQaD6KL28MjnqqN8XnAqiEq9PNm/hCPTSGfrXCOfwj1ow4LFb/tNymJPwsNbVePc1xFqrQ==} dev: false @@ -6722,7 +6920,7 @@ packages: dependencies: '@vitest/spy': 0.32.2 '@vitest/utils': 0.32.2 - chai: 4.3.8 + chai: 4.3.10 dev: true /@vitest/runner@0.32.2: @@ -6752,22 +6950,22 @@ packages: resolution: {integrity: sha512-lnJ0T5i03j0IJaeW73hxe2AuVnZ/y1BhhCOuIcl9LIzXnbpXJT9Lrt6brwKHXLOiA7MZ6N5hSJjt0xE1dGNCzQ==} dependencies: diff-sequences: 29.6.3 - loupe: 2.3.6 + loupe: 2.3.7 pretty-format: 27.5.1 dev: true /@vue/compiler-sfc@2.7.14: resolution: {integrity: sha512-aNmNHyLPsw+sVvlQFQ2/8sjNuLtK54TC6cuKnVzAY93ks4ZBrvwQSnkkIh7bsbNhum5hJBS00wSDipQ937f5DA==} dependencies: - '@babel/parser': 7.22.15 + '@babel/parser': 7.23.0 postcss: 8.4.31 source-map: 0.6.1 dev: true - /@vue/component-compiler-utils@3.3.0(lodash@4.17.21): + /@vue/component-compiler-utils@3.3.0: resolution: {integrity: sha512-97sfH2mYNU+2PzGrmK2haqffDpVASuib9/w2/noxiFi31Z54hW+q3izKQXXQZSNhtiUpAI36uSuYepeBe4wpHQ==} dependencies: - consolidate: 0.15.1(lodash@4.17.21) + consolidate: 0.15.1 hash-sum: 1.0.2 lru-cache: 4.1.5 merge-source-map: 1.1.0 @@ -8227,6 +8425,10 @@ packages: /aes-js@3.1.2: resolution: {integrity: sha512-e5pEa2kBnBOgR4Y/p20pskXI74UEz7de8ZGVo58asOtvSVG5YAbJeELPZxOmt+Bnz3rX753YKhfIn4X4l1PPRQ==} + /aes-js@4.0.0-beta.5: + resolution: {integrity: sha512-G965FqalsNyrPqgEGON7nIx1e/OVENSgiEIzyC63haUMuvNnwIgIjMs52hlTCKhkBny7A2ORNlfY9Zu+jmGk1Q==} + dev: true + /agent-base@6.0.2: resolution: {integrity: sha512-RZNwNclF7+MS/8bDg70amg32dyeZGZxiDuQmZxKLAlQjr3jGyLx+4Kkk58UO7D2QdgFIQCovuSuZESne6RG6XQ==} engines: {node: '>= 6.0.0'} @@ -8285,6 +8487,18 @@ packages: uri-js: 4.4.1 dev: true + /amazon-cognito-identity-js@6.3.6: + resolution: {integrity: sha512-kBq+GE6OkLrxtFj3ZduIOlKBFYeOqZK3EhxbDBkv476UTvy+uwfR0tlriTq2QzNdnvlQAjBIXnXuOM7DwR1UEQ==} + dependencies: + '@aws-crypto/sha256-js': 1.2.2 + buffer: 4.9.2 + fast-base64-decode: 1.0.0 + isomorphic-unfetch: 3.1.0 + js-cookie: 2.2.1 + transitivePeerDependencies: + - encoding + dev: true + /amdefine@1.0.1: resolution: {integrity: sha512-S2Hw0TtNkMJhIabBwIojKL9YHO5T0n5eNqWJ7Lrlel/zDbftQpxpapi8tZs3X1HWa+u+QeydGmzzNU0m09+Rcg==} engines: {node: '>=0.4.2'} @@ -8363,6 +8577,11 @@ packages: engines: {node: '>=10'} dev: true + /ansi-styles@6.2.1: + resolution: {integrity: sha512-bN798gFfQX+viw3R7yrGWRqnrN2oRkEkUjjl4JNn4E8GxxbjtG3FbrEIIY3l8/hrwUwIeCZvi4QuOTP4MErVug==} + engines: {node: '>=12'} + dev: true + /antlr4@4.13.1: resolution: {integrity: sha512-kiXTspaRYvnIArgE97z5YVVf/cDVQABr3abFRR6mE7yesLMkgu4ujuyV/sgxafQ8wgve0DJQUJ38Z8tkgA2izA==} engines: {node: '>=16'} @@ -8462,6 +8681,16 @@ packages: typical: 2.6.1 dev: true + /array-back@3.1.0: + resolution: {integrity: sha512-TkuxA4UCOvxuDK6NZYXCalszEzj+TLszyASooky+i742l9TqsOdYCMJJupxRic61hwquNtppB3hgcuq9SVSH1Q==} + engines: {node: '>=6'} + dev: true + + /array-back@4.0.2: + resolution: {integrity: sha512-NbdMezxqf94cnNfWLL7V/im0Ub+Anbb0IoZhvzie8+4HJ4nMQuzHuy49FkGYCJK2yAloZ3meiB6AVMClbrI1vg==} + engines: {node: '>=8'} + dev: true + /array-buffer-byte-length@1.0.0: resolution: {integrity: sha512-LPuwb2P+NrQw3XhxGc36+XSvuBPopovXYTR9Ew++Du9Yb/bx5AzBfrIsBoj0EZUifjQU+sHL21sseZ3jerWO/A==} dependencies: @@ -8480,8 +8709,8 @@ packages: engines: {node: '>= 0.4'} dependencies: call-bind: 1.0.2 - define-properties: 1.2.0 - es-abstract: 1.22.1 + define-properties: 1.2.1 + es-abstract: 1.22.2 get-intrinsic: 1.2.1 is-string: 1.0.7 dev: true @@ -8512,23 +8741,34 @@ packages: get-intrinsic: 1.2.1 dev: true + /array.prototype.findlastindex@1.2.3: + resolution: {integrity: sha512-LzLoiOMAxvy+Gd3BAq3B7VeIgPdo+Q8hthvKtXybMvRV0jrXfJM/t8mw7nNlpEcVlVUnCnM2KSX4XU5HmpodOA==} + engines: {node: '>= 0.4'} + dependencies: + call-bind: 1.0.2 + define-properties: 1.2.1 + es-abstract: 1.22.2 + es-shim-unscopables: 1.0.0 + get-intrinsic: 1.2.1 + dev: true + /array.prototype.flat@1.3.2: resolution: {integrity: sha512-djYB+Zx2vLewY8RWlNCUdHjDXs2XOgm602S9E7P/UpHgfeHL00cRiIF+IN/G/aUJ7kGPb6yO/ErDI5V2s8iycA==} engines: {node: '>= 0.4'} dependencies: call-bind: 1.0.2 - define-properties: 1.2.0 - es-abstract: 1.22.1 + define-properties: 1.2.1 + es-abstract: 1.22.2 es-shim-unscopables: 1.0.0 dev: true - /array.prototype.flatmap@1.3.1: - resolution: {integrity: sha512-8UGn9O1FDVvMNB0UlLv4voxRMze7+FpHyF5mSMRjWHUMlpoDViniy05870VlxhfgTnLbpuwTzvD76MTtWxB/mQ==} + /array.prototype.flatmap@1.3.2: + resolution: {integrity: sha512-Ewyx0c9PmpcsByhSW4r+9zDU7sGjFc86qf/kKtuSCRdhfbk0SNLLkaT5qvcHnRGgc5NP/ly/y+qkXkqONX54CQ==} engines: {node: '>= 0.4'} dependencies: call-bind: 1.0.2 - define-properties: 1.2.0 - es-abstract: 1.22.1 + define-properties: 1.2.1 + es-abstract: 1.22.2 es-shim-unscopables: 1.0.0 dev: true @@ -8627,6 +8867,12 @@ packages: dependencies: tslib: 2.4.1 + /async-retry@1.3.3: + resolution: {integrity: sha512-wfr/jstw9xNi/0teMHrRW7dsz3Lt5ARhYNZ2ewpadnhaIp5mbALhOAP+EAdsC7t4Z6wqsDVv9+W6gm1Dk9mEyw==} + dependencies: + retry: 0.13.1 + dev: true + /async@1.5.2: resolution: {integrity: sha512-nSVgobk4rv61R9PUSDtYt7mPVB2olxNR5RWJcAsH676/ef11bUZwvu7+RGYrYauVdDPcO519v68wRhXQtxsV9w==} dev: true @@ -8634,7 +8880,7 @@ packages: /async@2.6.2: resolution: {integrity: sha512-H1qVYh1MYhEEFLsP97cVKqCGo7KfCyTt6uEWqsTBr9SO84oK9Uwbyd/yCW+6rKJLHksBNUVWZDAjfS+Ccx0Bbg==} dependencies: - lodash: 4.17.21 + lodash: 4.17.20 dev: true /async@2.6.4: @@ -8722,6 +8968,16 @@ packages: - debug dev: false + /axios@1.5.1(debug@4.3.4): + resolution: {integrity: sha512-Q28iYCWzNHjAm+yEAot5QaAMxhMghWLFVf7rRdwhUI+c2jix2DUXjAHXVi+s1ibs3mjPO/cCgbA++3BjD0vP/A==} + dependencies: + follow-redirects: 1.15.3(debug@4.3.4) + form-data: 4.0.0 + proxy-from-env: 1.1.0 + transitivePeerDependencies: + - debug + dev: true + /axobject-query@3.2.1: resolution: {integrity: sha512-jsyHu61e6N4Vbz/v18DHwWYKK0bSWLqn47eeDSKPB7m8tqMHF9YJ+mhIk2lVteyZrY8tnSj/jHOv4YiTCuCJgg==} dependencies: @@ -8755,7 +9011,7 @@ packages: convert-source-map: 1.9.0 debug: 2.6.9 json5: 0.5.1 - lodash: 4.17.21 + lodash: 4.17.20 minimatch: 3.1.2 path-is-absolute: 1.0.1 private: 0.1.8 @@ -8773,7 +9029,7 @@ packages: babel-types: 6.26.0 detect-indent: 4.0.0 jsesc: 1.3.0 - lodash: 4.17.21 + lodash: 4.17.20 source-map: 0.5.7 trim-right: 1.0.1 dev: true @@ -8805,7 +9061,7 @@ packages: babel-helper-function-name: 6.24.1 babel-runtime: 6.26.0 babel-types: 6.26.0 - lodash: 4.17.21 + lodash: 4.17.20 transitivePeerDependencies: - supports-color dev: true @@ -8858,7 +9114,7 @@ packages: dependencies: babel-runtime: 6.26.0 babel-types: 6.26.0 - lodash: 4.17.21 + lodash: 4.17.20 dev: true /babel-helper-remap-async-to-generator@6.24.1: @@ -9081,7 +9337,7 @@ packages: babel-template: 6.26.0 babel-traverse: 6.26.0 babel-types: 6.26.0 - lodash: 4.17.21 + lodash: 4.17.20 transitivePeerDependencies: - supports-color dev: true @@ -9379,7 +9635,7 @@ packages: babel-runtime: 6.26.0 core-js: 2.6.12 home-or-tmp: 2.0.0 - lodash: 4.17.21 + lodash: 4.17.20 mkdirp: 0.5.6 source-map-support: 0.4.18 transitivePeerDependencies: @@ -9489,6 +9745,11 @@ packages: /bech32@1.1.4: resolution: {integrity: sha512-s0IrSOzLlbvX7yp4WBfPITzpAU8sqQcpsmwXDiKwrG4r491vwCO/XpejasRNl0piBMe/DvP4Tz0mIS/X1DPJBQ==} + /big-integer@1.6.51: + resolution: {integrity: sha512-GPEid2Y9QU1Exl1rpO9B2IPJGHPSupF5GnVIP0blYvNOMer2bTvSWs1jGOUg04hTmu67nmLsQ9TBo1puaotBHg==} + engines: {node: '>=0.6'} + dev: true + /big.js@5.2.2: resolution: {integrity: sha512-vyL2OymJxmarO8gxMr0mhChsO9QGwhynfuu4+MHTAW6czfq9humCB7rKpUjDd9YUiDPU4mzpyupFSvOClAwbmQ==} dev: true @@ -9630,6 +9891,13 @@ packages: bs58: 4.0.1 text-encoding-utf-8: 1.0.2 + /bplist-parser@0.2.0: + resolution: {integrity: sha512-z0M+byMThzQmD9NILRniCUXYsYpjwnlO8N5uCFaCqIOpqRsJCrQL9NK3JsD67CN5a08nF5oIL2bD6loTdHOuKw==} + engines: {node: '>= 5.10.0'} + dependencies: + big-integer: 1.6.51 + dev: true + /brace-expansion@1.1.11: resolution: {integrity: sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==} dependencies: @@ -9837,6 +10105,14 @@ packages: safe-buffer: 5.2.1 dev: true + /buffer@4.9.2: + resolution: {integrity: sha512-xq+q3SRMOxGivLhBNaUdC64hDTQwejJ+H0T/NB1XMtTVEwNTrfFF3gAxiyW0Bu/xWEGhjVKgUcMhCrUy2+uCWg==} + dependencies: + base64-js: 1.5.1 + ieee754: 1.2.1 + isarray: 1.0.0 + dev: true + /buffer@5.7.1: resolution: {integrity: sha512-EHcyIPBQ4BSGlvjB16k5KgAJ27CIsHY/2JBmCRReo48y9rQ3MaUzWX3KVlBa4U7MyX02HdVj0K7C3WaB3ju7FQ==} dependencies: @@ -9854,7 +10130,20 @@ packages: engines: {node: '>=6.14.2'} requiresBuild: true dependencies: - node-gyp-build: 4.6.1 + node-gyp-build: 4.6.1 + + /builtins@5.0.1: + resolution: {integrity: sha512-qwVpFEHNfhYJIzNRBvd2C1kyo6jz3ZSMPyyuR47OPdiKWlbYnZNyDWuyR175qDnAJLiCo5fBBqPb3RiXgWlkOQ==} + dependencies: + semver: 7.5.4 + dev: true + + /bundle-name@3.0.0: + resolution: {integrity: sha512-PKA4BeSvBpQKQ8iPOGCSiell+N8P+Tf1DlwqmYhpe2gAhKPHn8EYOxVT+ShuGmhg8lN8XiSlS80yiExKXrURlw==} + engines: {node: '>=12'} + dependencies: + run-applescript: 5.0.0 + dev: true /bundle-require@3.1.2(esbuild@0.15.13): resolution: {integrity: sha512-Of6l6JBAxiyQ5axFxUM6dYeP/W7X2Sozeo/4EYB9sJhL+dqL7TKjg+shwxp6jlu/6ZSERfsYtIpSJ1/x3XkAEA==} @@ -10109,28 +10398,15 @@ packages: resolution: {integrity: sha512-eyrF0jiFpY+3drT6383f1qhkbGsLSifNAjA61IUjZjmLCWjItY6LB9ft9YhoDgwfmclB2zhu51Lc7+95b8NRAg==} dev: false - /chai@4.3.7: - resolution: {integrity: sha512-HLnAzZ2iupm25PlN0xFreAlBA5zaBSv3og0DdeGA4Ar6h6rJ3A0rolRUKJhSF2V10GZKDgWF/VmAEsNWjCRB+A==} - engines: {node: '>=4'} - dependencies: - assertion-error: 1.1.0 - check-error: 1.0.2 - deep-eql: 4.1.3 - get-func-name: 2.0.0 - loupe: 2.3.6 - pathval: 1.1.1 - type-detect: 4.0.8 - dev: true - - /chai@4.3.8: - resolution: {integrity: sha512-vX4YvVVtxlfSZ2VecZgFUTU5qPCYsobVI2O9FmwEXBhDigYGQA6jRXCycIs1yJnnWbZ6/+a2zNIF5DfVCcJBFQ==} + /chai@4.3.10: + resolution: {integrity: sha512-0UXG04VuVbruMUYbJ6JctvH0YnC/4q3/AkT18q4NaITo91CUm0liMS9VqzT9vZhVQ/1eqPanMWjBM+Juhfb/9g==} engines: {node: '>=4'} dependencies: assertion-error: 1.1.0 - check-error: 1.0.2 + check-error: 1.0.3 deep-eql: 4.1.3 - get-func-name: 2.0.0 - loupe: 2.3.6 + get-func-name: 2.0.2 + loupe: 2.3.7 pathval: 1.1.1 type-detect: 4.0.8 dev: true @@ -10218,8 +10494,10 @@ packages: resolution: {integrity: sha512-yrLQ/yVUFXkzg7EDQsPieE/53+0RlaWTs+wBrvW36cyilJ2SaDWfl4Yj7MtLTXleV9uEKefbAGUPv2/iWSooRA==} dev: true - /check-error@1.0.2: - resolution: {integrity: sha512-BrgHpW9NURQgzoNyjfq0Wu6VFO6D7IZEmJNdtgNqpzGG8RuNFHt2jQxWlAs4HMe119chBnv+34syEZtc6IhLtA==} + /check-error@1.0.3: + resolution: {integrity: sha512-iKEoDYaRmd1mxM90a2OEfWhjsjPpYPuQ+lMYsoxB126+t8fw7ySEO48nmDg5COTjxDI65/Y2OWpeEHk3ZOe8zg==} + dependencies: + get-func-name: 2.0.2 dev: true /checkpoint-store@1.1.0: @@ -10281,6 +10559,11 @@ packages: engines: {node: '>=8'} dev: true + /ci-info@3.9.0: + resolution: {integrity: sha512-NIxF55hv4nSqQswkAeiOi1r83xy8JldOFDTWiug55KBu9Jnblncd2U6ViHmYgHf01TPZS77NJBhBMKdWj9HQMQ==} + engines: {node: '>=8'} + dev: true + /cids@0.7.5: resolution: {integrity: sha512-zT7mPeghoWAu+ppn8+BS1tQ5qGmbMfB4AregnQjA/qHY3GC1m1ptI9GkWNlgeu38r7CuRdXB47uY2XgAYt6QVA==} engines: {node: '>=4.0.0', npm: '>=3.0.0'} @@ -10568,6 +10851,26 @@ packages: typical: 2.6.1 dev: true + /command-line-args@5.2.1: + resolution: {integrity: sha512-H4UfQhZyakIjC74I9d34fGYDwk3XpSr17QhEd0Q3I9Xq1CETHo4Hcuo87WyWHpAF1aSLjLRf5lD9ZGX2qStUvg==} + engines: {node: '>=4.0.0'} + dependencies: + array-back: 3.1.0 + find-replace: 3.0.0 + lodash.camelcase: 4.3.0 + typical: 4.0.0 + dev: true + + /command-line-usage@6.1.3: + resolution: {integrity: sha512-sH5ZSPr+7UStsloltmDh7Ce5fb8XPlHyoPzTpyyMuYCtervL65+ubVZ6Q61cFtFl62UyJlc8/JwERRbAFPUqgw==} + engines: {node: '>=8.0.0'} + dependencies: + array-back: 4.0.2 + chalk: 2.4.2 + table-layout: 1.0.2 + typical: 5.2.0 + dev: true + /commander@10.0.1: resolution: {integrity: sha512-y4Mg2tXshplEbSGzx7amzPwKKOCGuoSRP/CjEdwwk0FOGlUbq6lKuoyDZTNZkmxHdJtp54hdfY/JUrdL7Xfdug==} engines: {node: '>=14'} @@ -10638,7 +10941,7 @@ packages: resolution: {integrity: sha512-ty/fTekppD2fIwRvnZAVdeOiGd1c7YXEixbgJTNzqcxJWKQnjJ/V1bNEEE6hygpM3WjwHFUVK6HTjWSzV4a8sQ==} dev: true - /consolidate@0.15.1(lodash@4.17.21): + /consolidate@0.15.1: resolution: {integrity: sha512-DW46nrsMJgy9kqAbPt5rKaCr7uFtpo4mSUvLHIUbJEjm0vo+aY5QLwBUq3FK4tRnJr/X0Psc0C4jf/h+HtXSMw==} engines: {node: '>= 0.10.0'} deprecated: Please upgrade to consolidate v1.0.0+ as it has been modernized with several long-awaited fixes implemented. Maintenance is supported by Forward Email at https://forwardemail.net ; follow/watch https://github.com/ladjs/consolidate for updates and release changelog @@ -10805,7 +11108,6 @@ packages: optional: true dependencies: bluebird: 3.7.2 - lodash: 4.17.21 dev: true /constant-case@3.0.4: @@ -10953,6 +11255,22 @@ packages: typescript: 4.9.5 dev: true + /cosmiconfig@8.3.6(typescript@5.2.2): + resolution: {integrity: sha512-kcZ6+W5QzcJ3P1Mt+83OUv/oHFqZHIx8DuxG6eZ5RGMERoLqp4BuGjhHLYGK+Kf5XVkQvqBSmAy/nGWN3qDgEA==} + engines: {node: '>=14'} + peerDependencies: + typescript: '>=4.9.5' + peerDependenciesMeta: + typescript: + optional: true + dependencies: + import-fresh: 3.3.0 + js-yaml: 4.1.0 + parse-json: 5.2.0 + path-type: 4.0.0 + typescript: 5.2.2 + dev: true + /crc-32@1.2.2: resolution: {integrity: sha512-ROmzCKrTnOwybPcJApAA6WBWij23HVfGVNKqqrZpuyZOHqK2CwHSvpGuyt/UNNvaIjEd8X5IFGp4Mh+Ie1IHJQ==} engines: {node: '>=0.8'} @@ -11057,7 +11375,7 @@ packages: resolution: {integrity: sha512-DIT51nX0dCfKltpRiXV+/TVZq+Qq2NgF4644+K7Ttnla7zEzqc+kjJyiB96BHNyUTBxyjzRcZYpUdZa+QAqi6Q==} dev: true - /css-loader@6.8.1(webpack@5.88.2): + /css-loader@6.8.1(webpack@5.89.0): resolution: {integrity: sha512-xDAXtEVGlD0gJ07iclwWVkLoZOpEvAWaSyf6W18S2pOC//K8+qUDIx8IIT3D+HjnmkJPQeesOPv5aiUaJsCM2g==} engines: {node: '>= 12.13.0'} peerDependencies: @@ -11071,7 +11389,7 @@ packages: postcss-modules-values: 4.0.0(postcss@8.4.31) postcss-value-parser: 4.2.0 semver: 7.5.4 - webpack: 5.88.2 + webpack: 5.89.0 dev: true /css-select@4.3.0: @@ -11644,7 +11962,6 @@ packages: /deep-extend@0.6.0: resolution: {integrity: sha512-LOHxIOaPYdHlJRtCQfDIVZtfw/ufM8+rVj649RIHzcm/vGwQRXFt6OPqIFWsm2XEMrNIEtWR64sY1LEKD2vAOA==} engines: {node: '>=4.0.0'} - dev: false /deep-is@0.1.4: resolution: {integrity: sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==} @@ -11654,6 +11971,24 @@ packages: resolution: {integrity: sha512-3sUqbMEc77XqpdNO7FRyRog+eW3ph+GYCbj+rK+uYyRMuwsVy0rMiVtPn+QJlKFvWP/1PYpapqYn0Me2knFn+A==} engines: {node: '>=0.10.0'} + /default-browser-id@3.0.0: + resolution: {integrity: sha512-OZ1y3y0SqSICtE8DE4S8YOE9UZOJ8wO16fKWVP5J1Qz42kV9jcnMVFrEE/noXb/ss3Q4pZIH79kxofzyNNtUNA==} + engines: {node: '>=12'} + dependencies: + bplist-parser: 0.2.0 + untildify: 4.0.0 + dev: true + + /default-browser@4.0.0: + resolution: {integrity: sha512-wX5pXO1+BrhMkSbROFsyxUm0i/cJEScyNhA4PPxc41ICuv05ZZB/MX28s8aZx6xjmatvebIapF6hLEKEcpneUA==} + engines: {node: '>=14.16'} + dependencies: + bundle-name: 3.0.0 + default-browser-id: 3.0.0 + execa: 7.2.0 + titleize: 3.0.0 + dev: true + /defaults@1.0.4: resolution: {integrity: sha512-eFuaLoy/Rxalv2kr+lqMlUnrDWV+3j4pljOIJgLIhI058IQfWJ7vXhyEIHu+HtC738klGALYxOKDO0bQP3tg8A==} dependencies: @@ -11695,15 +12030,6 @@ packages: inherits: 2.0.4 dev: true - /define-data-property@1.1.0: - resolution: {integrity: sha512-UzGwzcjyv3OtAvolTj1GoyNYzfFR+iqbGjcnBEENZVCpM4/Ng1yhGNvS3lR/xDS74Tb2wGG9WzNSNIOS9UVb2g==} - engines: {node: '>= 0.4'} - dependencies: - get-intrinsic: 1.2.1 - gopd: 1.0.1 - has-property-descriptors: 1.0.0 - dev: true - /define-data-property@1.1.1: resolution: {integrity: sha512-E7uGkTzkk1d0ByLeSc6ZsFS79Axg+m1P/VsgYsxHgiuc3tFSj+MjMIwe90FC4lOAZzNBdY7kkO2P2wKdsQ1vgQ==} engines: {node: '>= 0.4'} @@ -11713,19 +12039,16 @@ packages: has-property-descriptors: 1.0.0 dev: true - /define-properties@1.2.0: - resolution: {integrity: sha512-xvqAVKGfT1+UAvPwKTVw/njhdQ8ZhXK4lI0bCIuCMrp2up9nPnaDftrLtmpTazqd1o+UY4zgzU+avtMbDP+ldA==} - engines: {node: '>= 0.4'} - dependencies: - has-property-descriptors: 1.0.0 - object-keys: 1.1.1 + /define-lazy-prop@3.0.0: + resolution: {integrity: sha512-N+MeXYoqr3pOgn8xfyRPREN7gHakLYjhsHhWGT3fWAiL4IkAt0iDw14QiiEm2bE30c5XX5q0FtAA3CK5f9/BUg==} + engines: {node: '>=12'} dev: true /define-properties@1.2.1: resolution: {integrity: sha512-8QmQKqEASLd5nx0U1B1okLElbUuuttJ/AnYmRXbbbGDWh6uS208EjD4Xqq/I9wK7u0v6O08XhTWnt5XtEbR6Dg==} engines: {node: '>= 0.4'} dependencies: - define-data-property: 1.1.0 + define-data-property: 1.1.1 has-property-descriptors: 1.0.0 object-keys: 1.1.1 dev: true @@ -12011,11 +12334,6 @@ packages: engines: {node: '>=12'} dev: true - /dotenv@10.0.0: - resolution: {integrity: sha512-rlBi9d8jpv9Sf1klPjNfFAuWDjKLwTIJJ/VxtoTwIR6hnZxcEOQCZg2oIL3MWBYw5GpUDKOEnND7LXTbIpQ03Q==} - engines: {node: '>=10'} - dev: true - /dotenv@16.3.1: resolution: {integrity: sha512-IPzF4w4/Rd94bA9imS68tZBaYyBWSCE47V1RGuMrB94iyTOIEwRmVL2x/4An+6mETpLrKJ5hQkB8W4kFAadeIQ==} engines: {node: '>=12'} @@ -12042,6 +12360,10 @@ packages: readable-stream: 3.6.2 stream-shift: 1.0.1 + /eastasianwidth@0.2.0: + resolution: {integrity: sha512-I88TYZWc9XiYHRQ4/3c5rjjfgkjhLyW2luGIheGERbNQ6OY7yTybanSpDXZa8y7VUP9YmDcYa+eyq4ca7iLqWA==} + dev: true + /ecc-jsbn@0.1.2: resolution: {integrity: sha512-eh9O+hwRHNbG4BLTjEl3nw044CkGm5X6LoaCf7LPp7UU8Qrt47JYNi6nPX8xjW97TKGKm1ouctg0QSpZe9qrnw==} dependencies: @@ -12102,6 +12424,10 @@ packages: /emoji-regex@8.0.0: resolution: {integrity: sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==} + /emoji-regex@9.2.2: + resolution: {integrity: sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg==} + dev: true + /emojis-list@3.0.0: resolution: {integrity: sha512-/kyM18EfinwXZbno9FyUGeFh87KC8HRQBQGildHZbEuRyWFOmv1U10o9BBp8XVZDVNNuQKyIGIu5ZYAAXJ0V2Q==} engines: {node: '>= 4'} @@ -12195,51 +12521,6 @@ packages: is-arrayish: 0.2.1 dev: true - /es-abstract@1.22.1: - resolution: {integrity: sha512-ioRRcXMO6OFyRpyzV3kE1IIBd4WG5/kltnzdxSCqoP8CMGs/Li+M1uF5o7lOkZVFjDs+NLesthnF66Pg/0q0Lw==} - engines: {node: '>= 0.4'} - dependencies: - array-buffer-byte-length: 1.0.0 - arraybuffer.prototype.slice: 1.0.2 - available-typed-arrays: 1.0.5 - call-bind: 1.0.2 - es-set-tostringtag: 2.0.1 - es-to-primitive: 1.2.1 - function.prototype.name: 1.1.6 - get-intrinsic: 1.2.1 - get-symbol-description: 1.0.0 - globalthis: 1.0.3 - gopd: 1.0.1 - has: 1.0.3 - has-property-descriptors: 1.0.0 - has-proto: 1.0.1 - has-symbols: 1.0.3 - internal-slot: 1.0.5 - is-array-buffer: 3.0.2 - is-callable: 1.2.7 - is-negative-zero: 2.0.2 - is-regex: 1.1.4 - is-shared-array-buffer: 1.0.2 - is-string: 1.0.7 - is-typed-array: 1.1.12 - is-weakref: 1.0.2 - object-inspect: 1.12.3 - object-keys: 1.1.1 - object.assign: 4.1.4 - regexp.prototype.flags: 1.5.0 - safe-array-concat: 1.0.1 - safe-regex-test: 1.0.0 - string.prototype.trim: 1.2.7 - string.prototype.trimend: 1.0.6 - string.prototype.trimstart: 1.0.7 - typed-array-buffer: 1.0.0 - typed-array-byte-length: 1.0.0 - typed-array-byte-offset: 1.0.0 - typed-array-length: 1.0.4 - unbox-primitive: 1.0.2 - which-typed-array: 1.1.11 - dev: true - /es-abstract@1.22.2: resolution: {integrity: sha512-YoxfFcDmhjOgWPWsV13+2RNjq1F6UQnfs+8TftwNqtzlmFzEXvlUwdrNrYeaizfjQzRMxkZ6ElWMOJIFKdVqwA==} engines: {node: '>= 0.4'} @@ -12255,7 +12536,7 @@ packages: get-symbol-description: 1.0.0 globalthis: 1.0.3 gopd: 1.0.1 - has: 1.0.3 + has: 1.0.4 has-property-descriptors: 1.0.0 has-proto: 1.0.1 has-symbols: 1.0.3 @@ -12268,7 +12549,7 @@ packages: is-string: 1.0.7 is-typed-array: 1.1.12 is-weakref: 1.0.2 - object-inspect: 1.12.3 + object-inspect: 1.13.0 object-keys: 1.1.1 object.assign: 4.1.4 regexp.prototype.flags: 1.5.1 @@ -12289,10 +12570,6 @@ packages: resolution: {integrity: sha512-wd6JXUmyHmt8T5a2xreUwKcGPq6f1f+WwIJkijUqiGcJz1qqnZgP6XIK+QyIWU5lT7imeNxUll48bziG+TSYcA==} dev: true - /es-module-lexer@1.3.0: - resolution: {integrity: sha512-vZK7T0N2CBmBOixhmjdqx2gWVbFZ4DXZ/NyRMZVlJXPa7CyFS+/a4QQsDGDQy9ZfEzxFuNEsMLeQJnKP2p5/JA==} - dev: true - /es-module-lexer@1.3.1: resolution: {integrity: sha512-JUFAyicQV9mXc3YRxPnDlrfBKpqt6hUYzz9/boprUJHs4e4KVr3XwOF70doO6gwXUor6EWZJAyWAfKki84t20Q==} dev: true @@ -12302,14 +12579,14 @@ packages: engines: {node: '>= 0.4'} dependencies: get-intrinsic: 1.2.1 - has: 1.0.3 + has: 1.0.4 has-tostringtag: 1.0.0 dev: true /es-shim-unscopables@1.0.0: resolution: {integrity: sha512-Jm6GPcCdC30eMLbZ2x8z2WuRwAws3zTBBKuusffYVUrNj/GVSUAZ+xKMaUpfNDR5IbyNA5LJbaecoUVbmUcB1w==} dependencies: - has: 1.0.3 + has: 1.0.4 dev: true /es-to-primitive@1.2.1: @@ -12658,36 +12935,37 @@ packages: source-map: 0.6.1 dev: true - /eslint-config-prettier@8.8.0(eslint@7.32.0): + /eslint-config-prettier@8.8.0(eslint@8.28.0): resolution: {integrity: sha512-wLbQiFre3tdGgpDv67NQKnJuTlcUVYHas3k+DZCc2U2BadthoEY4B7hLPvAxaqdyOGCzuLfii2fqGph10va7oA==} hasBin: true peerDependencies: eslint: '>=7.0.0' dependencies: - eslint: 7.32.0 + eslint: 8.28.0 dev: true - /eslint-config-prettier@8.8.0(eslint@8.28.0): - resolution: {integrity: sha512-wLbQiFre3tdGgpDv67NQKnJuTlcUVYHas3k+DZCc2U2BadthoEY4B7hLPvAxaqdyOGCzuLfii2fqGph10va7oA==} + /eslint-config-prettier@9.0.0(eslint@8.51.0): + resolution: {integrity: sha512-IcJsTkJae2S35pRsRAwoCE+925rJJStOdkKnLVgtE+tEpqU0EVVM7OqrwxqgptKdX29NUwC82I5pXsGFIgSevw==} hasBin: true peerDependencies: eslint: '>=7.0.0' dependencies: - eslint: 8.28.0 + eslint: 8.51.0 dev: true - /eslint-config-standard@16.0.3(eslint-plugin-import@2.27.5)(eslint-plugin-node@11.1.0)(eslint-plugin-promise@6.1.1)(eslint@7.32.0): - resolution: {integrity: sha512-x4fmJL5hGqNJKGHSjnLdgA6U6h1YW/G2dW9fA+cyVur4SK6lyue8+UgNKWlZtUDTXvgKDD/Oa3GQjmB5kjtVvg==} + /eslint-config-standard@17.1.0(eslint-plugin-import@2.28.1)(eslint-plugin-n@16.2.0)(eslint-plugin-promise@6.1.1)(eslint@8.51.0): + resolution: {integrity: sha512-IwHwmaBNtDK4zDHQukFDW5u/aTb8+meQWZvNFWkiGmbWjD6bqyuSSBxxXKkCftCUzc1zwCH2m/baCNDLGmuO5Q==} + engines: {node: '>=12.0.0'} peerDependencies: - eslint: ^7.12.1 - eslint-plugin-import: ^2.22.1 - eslint-plugin-node: ^11.1.0 - eslint-plugin-promise: ^4.2.1 || ^5.0.0 + eslint: ^8.0.1 + eslint-plugin-import: ^2.25.2 + eslint-plugin-n: '^15.0.0 || ^16.0.0 ' + eslint-plugin-promise: ^6.0.0 dependencies: - eslint: 7.32.0 - eslint-plugin-import: 2.27.5(@typescript-eslint/parser@4.33.0)(eslint@7.32.0) - eslint-plugin-node: 11.1.0(eslint@7.32.0) - eslint-plugin-promise: 6.1.1(eslint@7.32.0) + eslint: 8.51.0 + eslint-plugin-import: 2.28.1(@typescript-eslint/parser@6.7.5)(eslint@8.51.0) + eslint-plugin-n: 16.2.0(eslint@8.51.0) + eslint-plugin-promise: 6.1.1(eslint@8.51.0) dev: true /eslint-import-resolver-node@0.3.9: @@ -12695,12 +12973,12 @@ packages: dependencies: debug: 3.2.7 is-core-module: 2.13.0 - resolve: 1.22.4 + resolve: 1.22.8 transitivePeerDependencies: - supports-color dev: true - /eslint-module-utils@2.8.0(@typescript-eslint/parser@4.33.0)(eslint-import-resolver-node@0.3.9)(eslint@7.32.0): + /eslint-module-utils@2.8.0(@typescript-eslint/parser@6.7.5)(eslint-import-resolver-node@0.3.9)(eslint@8.51.0): resolution: {integrity: sha512-aWajIYfsqCKRDgUfjEXNN/JlrzauMuSEy5sbd7WXbtW3EH6A6MpwEh42c7qD+MqQo9QMJ6fWLAeIJynx0g6OAw==} engines: {node: '>=4'} peerDependencies: @@ -12721,27 +12999,38 @@ packages: eslint-import-resolver-webpack: optional: true dependencies: - '@typescript-eslint/parser': 4.33.0(eslint@7.32.0)(typescript@4.9.5) + '@typescript-eslint/parser': 6.7.5(eslint@8.51.0)(typescript@5.2.2) debug: 3.2.7 - eslint: 7.32.0 + eslint: 8.51.0 eslint-import-resolver-node: 0.3.9 transitivePeerDependencies: - supports-color dev: true - /eslint-plugin-es@3.0.1(eslint@7.32.0): + /eslint-plugin-es-x@7.2.0(eslint@8.51.0): + resolution: {integrity: sha512-9dvv5CcvNjSJPqnS5uZkqb3xmbeqRLnvXKK7iI5+oK/yTusyc46zbBZKENGsOfojm/mKfszyZb+wNqNPAPeGXA==} + engines: {node: ^14.18.0 || >=16.0.0} + peerDependencies: + eslint: '>=8' + dependencies: + '@eslint-community/eslint-utils': 4.4.0(eslint@8.51.0) + '@eslint-community/regexpp': 4.9.1 + eslint: 8.51.0 + dev: true + + /eslint-plugin-es@3.0.1(eslint@8.51.0): resolution: {integrity: sha512-GUmAsJaN4Fc7Gbtl8uOBlayo2DqhwWvEzykMHSCZHU3XdJ+NSzzZcVhXh3VxX5icqQ+oQdIEawXX8xkR3mIFmQ==} engines: {node: '>=8.10.0'} peerDependencies: eslint: '>=4.19.1' dependencies: - eslint: 7.32.0 + eslint: 8.51.0 eslint-utils: 2.1.0 regexpp: 3.2.0 dev: true - /eslint-plugin-import@2.27.5(@typescript-eslint/parser@4.33.0)(eslint@7.32.0): - resolution: {integrity: sha512-LmEt3GVofgiGuiE+ORpnvP+kAm3h6MLZJ4Q5HCyHADofsb4VzXFsRiWj3c0OFiV+3DWFh0qg3v9gcPlfc3zRow==} + /eslint-plugin-import@2.28.1(@typescript-eslint/parser@6.7.5)(eslint@8.51.0): + resolution: {integrity: sha512-9I9hFlITvOV55alzoKBI+K9q74kv0iKMeY6av5+umsNwayt59fz692daGyjR+oStBQgx6nwR9rXldDev3Clw+A==} engines: {node: '>=4'} peerDependencies: '@typescript-eslint/parser': '*' @@ -12750,21 +13039,23 @@ packages: '@typescript-eslint/parser': optional: true dependencies: - '@typescript-eslint/parser': 4.33.0(eslint@7.32.0)(typescript@4.9.5) + '@typescript-eslint/parser': 6.7.5(eslint@8.51.0)(typescript@5.2.2) array-includes: 3.1.7 + array.prototype.findlastindex: 1.2.3 array.prototype.flat: 1.3.2 - array.prototype.flatmap: 1.3.1 + array.prototype.flatmap: 1.3.2 debug: 3.2.7 doctrine: 2.1.0 - eslint: 7.32.0 + eslint: 8.51.0 eslint-import-resolver-node: 0.3.9 - eslint-module-utils: 2.8.0(@typescript-eslint/parser@4.33.0)(eslint-import-resolver-node@0.3.9)(eslint@7.32.0) - has: 1.0.3 + eslint-module-utils: 2.8.0(@typescript-eslint/parser@6.7.5)(eslint-import-resolver-node@0.3.9)(eslint@8.51.0) + has: 1.0.4 is-core-module: 2.13.0 is-glob: 4.0.3 minimatch: 3.1.2 + object.fromentries: 2.0.7 + object.groupby: 1.0.1 object.values: 1.1.7 - resolve: 1.22.4 semver: 6.3.1 tsconfig-paths: 3.14.2 transitivePeerDependencies: @@ -12817,45 +13108,67 @@ packages: - typescript dev: true - /eslint-plugin-node@11.1.0(eslint@7.32.0): + /eslint-plugin-n@16.2.0(eslint@8.51.0): + resolution: {integrity: sha512-AQER2jEyQOt1LG6JkGJCCIFotzmlcCZFur2wdKrp1JX2cNotC7Ae0BcD/4lLv3lUAArM9uNS8z/fsvXTd0L71g==} + engines: {node: '>=16.0.0'} + peerDependencies: + eslint: '>=7.0.0' + dependencies: + '@eslint-community/eslint-utils': 4.4.0(eslint@8.51.0) + builtins: 5.0.1 + eslint: 8.51.0 + eslint-plugin-es-x: 7.2.0(eslint@8.51.0) + get-tsconfig: 4.7.2 + ignore: 5.2.4 + is-core-module: 2.13.0 + minimatch: 3.1.2 + resolve: 1.22.8 + semver: 7.5.4 + dev: true + + /eslint-plugin-node@11.1.0(eslint@8.51.0): resolution: {integrity: sha512-oUwtPJ1W0SKD0Tr+wqu92c5xuCeQqB3hSCHasn/ZgjFdA9iDGNkNf2Zi9ztY7X+hNuMib23LNGRm6+uN+KLE3g==} engines: {node: '>=8.10.0'} peerDependencies: eslint: '>=5.16.0' dependencies: - eslint: 7.32.0 - eslint-plugin-es: 3.0.1(eslint@7.32.0) + eslint: 8.51.0 + eslint-plugin-es: 3.0.1(eslint@8.51.0) eslint-utils: 2.1.0 ignore: 5.2.4 minimatch: 3.1.2 - resolve: 1.22.4 + resolve: 1.22.8 semver: 6.3.1 dev: true - /eslint-plugin-prettier@3.4.1(eslint-config-prettier@8.8.0)(eslint@7.32.0)(prettier@2.8.8): - resolution: {integrity: sha512-htg25EUYUeIhKHXjOinK4BgCcDwtLHjqaxCDsMy5nbnUMkKFvIhMVCp+5GFUXQ4Nr8lBsPqtGAqBenbpFqAA2g==} - engines: {node: '>=6.0.0'} + /eslint-plugin-prettier@5.0.1(eslint-config-prettier@9.0.0)(eslint@8.51.0)(prettier@3.0.3): + resolution: {integrity: sha512-m3u5RnR56asrwV/lDC4GHorlW75DsFfmUcjfCYylTUs85dBRnB7VM6xG8eCMJdeDRnppzmxZVf1GEPJvl1JmNg==} + engines: {node: ^14.18.0 || >=16.0.0} peerDependencies: - eslint: '>=5.0.0' + '@types/eslint': '>=8.0.0' + eslint: '>=8.0.0' eslint-config-prettier: '*' - prettier: '>=1.13.0' + prettier: '>=3.0.0' peerDependenciesMeta: + '@types/eslint': + optional: true eslint-config-prettier: optional: true dependencies: - eslint: 7.32.0 - eslint-config-prettier: 8.8.0(eslint@7.32.0) - prettier: 2.8.8 + eslint: 8.51.0 + eslint-config-prettier: 9.0.0(eslint@8.51.0) + prettier: 3.0.3 prettier-linter-helpers: 1.0.0 + synckit: 0.8.5 dev: true - /eslint-plugin-promise@6.1.1(eslint@7.32.0): + /eslint-plugin-promise@6.1.1(eslint@8.51.0): resolution: {integrity: sha512-tjqWDwVZQo7UIPMeDReOpUgHCmCiH+ePnVT+5zVapL0uuHnegBUs2smM13CzOs2Xb5+MHMRFTs9v24yjba4Oig==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} peerDependencies: eslint: ^7.0.0 || ^8.0.0 dependencies: - eslint: 7.32.0 + eslint: 8.51.0 dev: true /eslint-plugin-simple-import-sort@10.0.0(eslint@7.32.0): @@ -13283,29 +13596,31 @@ packages: js-sha3: 0.5.7 dev: true - /eth-gas-reporter@0.2.25: - resolution: {integrity: sha512-1fRgyE4xUB8SoqLgN3eDfpDfwEfRxh2Sz1b7wzFbyQA+9TekMmvSjjoRu9SKcSVyK+vLkLIsVbJDsTWjw195OQ==} + /eth-gas-reporter@0.2.27: + resolution: {integrity: sha512-femhvoAM7wL0GcI8ozTdxfuBtBFJ9qsyIAsmKVjlWAHUbdnnXHt+lKzz/kmldM5lA9jLuNHGwuIxorNpLbR1Zw==} peerDependencies: '@codechecks/client': ^0.1.0 peerDependenciesMeta: '@codechecks/client': optional: true dependencies: - '@ethersproject/abi': 5.7.0 '@solidity-parser/parser': 0.14.5 + axios: 1.5.1(debug@4.3.4) cli-table3: 0.5.1 colors: 1.4.0 ethereum-cryptography: 1.2.0 - ethers: 4.0.49 + ethers: 5.7.2 fs-readdir-recursive: 1.1.0 lodash: 4.17.21 markdown-table: 1.1.3 - mocha: 7.2.0 + mocha: 10.2.0 req-cwd: 2.0.0 - request: 2.88.2 - request-promise-native: 1.0.9(request@2.88.2) sha1: 1.1.1 sync-request: 6.1.0 + transitivePeerDependencies: + - bufferutil + - debug + - utf-8-validate dev: true /eth-json-rpc-filters@4.2.2: @@ -13495,7 +13810,7 @@ packages: resolution: {integrity: sha512-w8/4x1SGGzc+tO97TASLja6SLd3fRIK2tLVcV2Gx4IB21hE19atll5Cq9o3d0ZmAYC/8aw0ipieTSiekAea4SQ==} dependencies: '@types/pbkdf2': 3.1.0 - '@types/secp256k1': 4.0.3 + '@types/secp256k1': 4.0.4 blakejs: 1.2.1 browserify-aes: 1.2.0 bs58check: 2.1.2 @@ -13528,13 +13843,13 @@ packages: '@scure/bip39': 1.2.1 dev: true - /ethereum-waffle@3.4.4(typescript@4.9.5): + /ethereum-waffle@3.4.4(typescript@5.2.2): resolution: {integrity: sha512-PA9+jCjw4WC3Oc5ocSMBj5sXvueWQeAbvCA+hUlb6oFgwwKyq5ka3bWQ7QZcjzIX+TdFkxP4IbFmoY2D8Dkj9Q==} engines: {node: '>=10.0'} hasBin: true dependencies: '@ethereum-waffle/chai': 3.4.4 - '@ethereum-waffle/compiler': 3.4.4(typescript@4.9.5) + '@ethereum-waffle/compiler': 3.4.4(typescript@5.2.2) '@ethereum-waffle/mock-contract': 3.4.4 '@ethereum-waffle/provider': 3.4.4 ethers: 5.7.2 @@ -13672,7 +13987,7 @@ packages: resolution: {integrity: sha512-SDl5kKrQAudFBUe5OJM9Ac6WmMyYmXX/6sTmLZ3ffG2eY6ZIGBes3pEDxNN6V72WyOw4CPD5RomKdsa8DAAwLg==} engines: {node: '>=10.0.0'} dependencies: - '@types/bn.js': 5.1.1 + '@types/bn.js': 5.1.2 bn.js: 5.2.1 create-hash: 1.2.0 ethereum-cryptography: 0.1.3 @@ -13733,20 +14048,6 @@ packages: dev: true optional: true - /ethers@4.0.49: - resolution: {integrity: sha512-kPltTvWiyu+OktYy1IStSO16i2e7cS9D9OxZ81q2UUaiNPVrm/RTcbxamCXF9VUSKzJIdJV68EAIhTEVBalRWg==} - dependencies: - aes-js: 3.0.0 - bn.js: 4.12.0 - elliptic: 6.5.4 - hash.js: 1.1.3 - js-sha3: 0.5.7 - scrypt-js: 2.0.4 - setimmediate: 1.0.4 - uuid: 2.0.1 - xmlhttprequest: 1.8.0 - dev: true - /ethers@5.7.2: resolution: {integrity: sha512-wswUsmWo1aOK8rR7DIKiWSw9DbLWe6x98Jrn8wcTflTVvaXhAMaB5zGAXy0GYQEQp9iO1iSHWVyARQm11zUtyg==} dependencies: @@ -13784,6 +14085,22 @@ packages: - bufferutil - utf-8-validate + /ethers@6.8.0: + resolution: {integrity: sha512-zrFbmQRlraM+cU5mE4CZTLBurZTs2gdp2ld0nG/f3ecBK+x6lZ69KSxBqZ4NjclxwfTxl5LeNufcBbMsTdY53Q==} + engines: {node: '>=14.0.0'} + dependencies: + '@adraffy/ens-normalize': 1.10.0 + '@noble/curves': 1.2.0 + '@noble/hashes': 1.3.2 + '@types/node': 18.15.13 + aes-js: 4.0.0-beta.5 + tslib: 2.4.0 + ws: 8.5.0 + transitivePeerDependencies: + - bufferutil + - utf-8-validate + dev: true + /ethjs-unit@0.1.6: resolution: {integrity: sha512-/Sn9Y0oKl0uqQuvgFk/zQgR7aw1g36qX/jzSQ5lSwlO0GigPymk4eGQfeNTD03w1dPOqfz8V77Cy43jH56pagw==} engines: {node: '>=6.5.0', npm: '>=3'} @@ -13873,6 +14190,21 @@ packages: strip-final-newline: 3.0.0 dev: true + /execa@7.2.0: + resolution: {integrity: sha512-UduyVP7TLB5IcAQl+OzLyLcS/l32W/GLg+AhHJ+ow40FOk2U3SAllPwR44v4vmdFwIWqpdwxxpQbF1n5ta9seA==} + engines: {node: ^14.18.0 || ^16.14.0 || >=18.0.0} + dependencies: + cross-spawn: 7.0.3 + get-stream: 6.0.1 + human-signals: 4.3.1 + is-stream: 3.0.0 + merge-stream: 2.0.0 + npm-run-path: 5.1.0 + onetime: 6.0.0 + signal-exit: 3.0.7 + strip-final-newline: 3.0.0 + dev: true + /exit@0.1.2: resolution: {integrity: sha512-Zk/eNKV2zbjpKzrsQ+n1G6poVbErQxJ0LBOJXaKZ1EViLzH+hrLu9cdXI4zw9dBQJslwBEpbQ2P1oS7nDxs6jQ==} engines: {node: '>= 0.8.0'} @@ -14002,6 +14334,10 @@ packages: checkpoint-store: 1.1.0 dev: true + /fast-base64-decode@1.0.0: + resolution: {integrity: sha512-qwaScUgUGBYeDNRnbc/KyllVU88Jk1pRHPStuF/lO7B0/RTRLj7U0lkdTAutlBblY08rwZDff6tNU9cjv6j//Q==} + dev: true + /fast-deep-equal@3.1.3: resolution: {integrity: sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==} dev: true @@ -14077,7 +14413,7 @@ packages: resolution: {integrity: sha512-7Gps/XWymbLk2QLYK4NzpMOrYjMhdIxXuIvy2QBsLE6ljuodKvdkWs/cpyJJ3CVIVpH0Oi1Hvg1ovbMzLdFBBg==} engines: {node: ^10.12.0 || >=12.0.0} dependencies: - flat-cache: 3.1.0 + flat-cache: 3.1.1 dev: true /file-uri-to-path@1.0.0: @@ -14129,6 +14465,13 @@ packages: test-value: 2.1.0 dev: true + /find-replace@3.0.0: + resolution: {integrity: sha512-6Tb2myMioCAgv5kfvP5/PkZZ/ntTpVK39fHY7WkWBgvbeE+VHd/tZuZ4mrC+bxh4cfOZeYKVPaJIZtZXV7GNCQ==} + engines: {node: '>=4.0.0'} + dependencies: + array-back: 3.1.0 + dev: true + /find-up@1.1.2: resolution: {integrity: sha512-jvElSjyuo4EMQGoTwo1uJU5pQMwTW5lS1x05zzfJuTIyLR3zwO27LYrxNg+dlvKpGOuGy/MzBdXh80g0ve5+HA==} engines: {node: '>=0.10.0'} @@ -14188,12 +14531,12 @@ packages: micromatch: 4.0.5 dev: true - /flat-cache@3.1.0: - resolution: {integrity: sha512-OHx4Qwrrt0E4jEIcI5/Xb+f+QmJYNj2rrK8wiIdQOIrB9WrrJL8cjZvXdXuBTkkEwEqLycb5BeZDV1o2i9bTew==} + /flat-cache@3.1.1: + resolution: {integrity: sha512-/qM2b3LUIaIgviBQovTLvijfyOQXPtSRnRK26ksj2J7rzPIecePUIpJsZ4T02Qg+xiAEKIs5K8dsHEd+VaKa/Q==} engines: {node: '>=12.0.0'} dependencies: - flatted: 3.2.7 - keyv: 4.5.3 + flatted: 3.2.9 + keyv: 4.5.4 rimraf: 3.0.2 dev: true @@ -14209,8 +14552,8 @@ packages: hasBin: true dev: true - /flatted@3.2.7: - resolution: {integrity: sha512-5nqDSxl8nn5BSNxyR3n4I6eDmbolI6WT+QqR547RwxQapgjQBmtktdP+HTBb/a/zLsbzERTONyUB5pefh5TtjQ==} + /flatted@3.2.9: + resolution: {integrity: sha512-36yxDn5H7OFZQla0/jFJmbIKTdZAQHngCedGxiMmpNfEZM0sdEeT+WczLQrjK6D7o2aiyLYDnkw0R3JK0Qv1RQ==} dev: true /flexsearch@0.7.31: @@ -14242,6 +14585,18 @@ packages: dependencies: debug: 4.3.4(supports-color@8.1.1) + /follow-redirects@1.15.3(debug@4.3.4): + resolution: {integrity: sha512-1VzOtuEM8pC9SFU1E+8KfTjZyMztRsgEfwQl44z8A25uy13jSzTj6dyK2Df52iV0vgHCfBwLhDWevLn95w5v6Q==} + engines: {node: '>=4.0'} + peerDependencies: + debug: '*' + peerDependenciesMeta: + debug: + optional: true + dependencies: + debug: 4.3.4(supports-color@8.1.1) + dev: true + /for-each@0.3.3: resolution: {integrity: sha512-jqYfLp7mo9vIyQf8ykW2v7A+2N4QjeCeI5+Dz9XraiO1ign81wjiH7Fb9vSOWvQfNtmSa4H2RoQTrrXivdUZmw==} dependencies: @@ -14252,6 +14607,14 @@ packages: engines: {node: '>=0.10.0'} dev: true + /foreground-child@3.1.1: + resolution: {integrity: sha512-TMKDUnIte6bfb5nWv7V/caI169OHgvwjb7V4WkeUvbQQdjr5rWKqHFiKWb/fcOwB+CzBT+qbWjvj+DVwRskpIg==} + engines: {node: '>=14'} + dependencies: + cross-spawn: 7.0.3 + signal-exit: 4.1.0 + dev: true + /forever-agent@0.6.1: resolution: {integrity: sha512-j0KLYPhm6zeac4lz3oJ3o65qvgQCcPubiyotZrXqEaG4hNagNYO8qdlUrX5vwqv9ohqeT/Z3j6+yW067yWWdUw==} dev: true @@ -14438,6 +14801,10 @@ packages: /function-bind@1.1.1: resolution: {integrity: sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==} + /function-bind@1.1.2: + resolution: {integrity: sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==} + dev: true + /function.prototype.name@1.1.6: resolution: {integrity: sha512-Z5kx79swU5P27WEayXM1tBi5Ze/lbIyiNgU3qyXUOf9b2rgXYyF9Dy9Cx+IQv/Lc8WCG6L82zwUPpSS9hGehIg==} engines: {node: '>= 0.4'} @@ -14548,8 +14915,8 @@ packages: resolution: {integrity: sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==} engines: {node: 6.* || 8.* || >= 10.*} - /get-func-name@2.0.0: - resolution: {integrity: sha512-Hm0ixYtaSZ/V7C8FJrtZIuBBI+iSgL+1Aq82zSu8VQNB4S3Gk8e7Qs3VwBDJAhmRZcFqkl3tQu36g/Foh5I5ig==} + /get-func-name@2.0.2: + resolution: {integrity: sha512-8vXOvuE167CtIc3OyItco7N/dpRtBbYOsPsXCz7X/PMnlGjYjSGuZJgM1Y7mmew7BKf9BqvLX2tnOVy1BBUsxQ==} dev: true /get-intrinsic@1.2.1: @@ -14616,6 +14983,12 @@ packages: get-intrinsic: 1.2.1 dev: true + /get-tsconfig@4.7.2: + resolution: {integrity: sha512-wuMsz4leaj5hbGgg4IvDU0bqJagpftG5l5cXIAvo8uZrqn0NJqwtfupTN00VnkQJPcIRrxYrm1Ue24btpCha2A==} + dependencies: + resolve-pkg-maps: 1.0.0 + dev: true + /get-value@2.0.6: resolution: {integrity: sha512-Ln0UQDlxH1BapMu3GPtf7CuYNwRZf2gwCuPqbyG6pB8WfmFpzqcy4xtAaAMUhnNqjMKTiCPZG2oMT3YSx8U2NA==} engines: {node: '>=0.10.0'} @@ -14673,6 +15046,18 @@ packages: /glob-to-regexp@0.4.1: resolution: {integrity: sha512-lkX1HJXwyMcprw/5YUZc2s7DrpAiHB21/V+E1rHUrVNokkvB6bqMzT0VfV6/86ZNabt1k14YOIaT7nDvOX3Iiw==} + /glob@10.3.10: + resolution: {integrity: sha512-fa46+tv1Ak0UPK1TOy/pZrIybNNt4HCv7SDzwyfiOZkvZLEbjsZkJBPtDHVshZjbecAoAGSC20MjLDG/qr679g==} + engines: {node: '>=16 || 14 >=14.17'} + hasBin: true + dependencies: + foreground-child: 3.1.1 + jackspeak: 2.3.6 + minimatch: 9.0.3 + minipass: 7.0.4 + path-scurry: 1.10.1 + dev: true + /glob@5.0.15: resolution: {integrity: sha512-c9IPMazfRITpmAAKi22dK1VKxGDX9ehhqfABDriL/lzO92xcUKEJPQHrVA/2YHSNFB4iFlykVmWvwo48nr3OxA==} dependencies: @@ -14711,7 +15096,7 @@ packages: fs.realpath: 1.0.0 inflight: 1.0.6 inherits: 2.0.4 - minimatch: 3.0.8 + minimatch: 3.1.2 once: 1.4.0 path-is-absolute: 1.0.1 dev: true @@ -14968,7 +15353,7 @@ packages: engines: {node: '>=6'} dev: true - /hardhat-abi-exporter@2.10.1(hardhat@2.14.0): + /hardhat-abi-exporter@2.10.1(hardhat@2.18.1): resolution: {integrity: sha512-X8GRxUTtebMAd2k4fcPyVnCdPa6dYK4lBsrwzKP5yiSq4i+WadWPIumaLfce53TUf/o2TnLpLOduyO1ylE2NHQ==} engines: {node: '>=14.14.0'} peerDependencies: @@ -14976,34 +15361,34 @@ packages: dependencies: '@ethersproject/abi': 5.7.0 delete-empty: 3.0.0 - hardhat: 2.14.0(ts-node@10.9.1)(typescript@4.9.5) + hardhat: 2.18.1(ts-node@10.9.1)(typescript@5.2.2) dev: true - /hardhat-contract-sizer@2.8.0(hardhat@2.14.0): - resolution: {integrity: sha512-jXt2Si3uIDx5z99J+gvKa0yvIw156pE4dpH9X/PvTQv652BUd+qGj7WT93PXnHXGh5qhQLkjDYeZMYNOThfjFg==} + /hardhat-contract-sizer@2.10.0(hardhat@2.18.1): + resolution: {integrity: sha512-QiinUgBD5MqJZJh1hl1jc9dNnpJg7eE/w4/4GEnrcmZJJTDbVFNe3+/3Ep24XqISSkYxRz36czcPHKHd/a0dwA==} peerDependencies: hardhat: ^2.0.0 dependencies: chalk: 4.1.2 cli-table3: 0.6.3 - hardhat: 2.14.0(ts-node@10.9.1)(typescript@4.9.5) + hardhat: 2.18.1(ts-node@10.9.1)(typescript@5.2.2) strip-ansi: 6.0.1 dev: true - /hardhat-docgen@1.3.0(hardhat@2.14.0)(lodash@4.17.21)(prettier@2.8.8): + /hardhat-docgen@1.3.0(hardhat@2.18.1)(prettier@3.0.3): resolution: {integrity: sha512-paaiOHjJFLCLz2/qM1TQ7ZEG+Vy+LBvJL+SW4A64ZhBnVnyoZ/zv9DvEuawaWhqP5P7AOM6r22reVz4ecWgW7A==} engines: {node: '>=14.14.0'} peerDependencies: hardhat: ^2.0.0 dependencies: - css-loader: 6.8.1(webpack@5.88.2) - hardhat: 2.14.0(ts-node@10.9.1)(typescript@4.9.5) - html-webpack-plugin: 5.5.3(webpack@5.88.2) + css-loader: 6.8.1(webpack@5.89.0) + hardhat: 2.18.1(ts-node@10.9.1)(typescript@5.2.2) + html-webpack-plugin: 5.5.3(webpack@5.89.0) vue: 2.7.14 - vue-loader: 15.10.2(css-loader@6.8.1)(lodash@4.17.21)(prettier@2.8.8)(vue-template-compiler@2.7.14)(webpack@5.88.2) + vue-loader: 15.10.2(css-loader@6.8.1)(prettier@3.0.3)(vue-template-compiler@2.7.14)(webpack@5.89.0) vue-router: 3.6.5(vue@2.7.14) vue-template-compiler: 2.7.14 - webpack: 5.88.2 + webpack: 5.89.0 transitivePeerDependencies: - '@swc/core' - '@vue/compiler-sfc' @@ -15067,31 +15452,33 @@ packages: - whiskers dev: true - /hardhat-gas-reporter@1.0.9(hardhat@2.14.0): + /hardhat-gas-reporter@1.0.9(hardhat@2.18.1): resolution: {integrity: sha512-INN26G3EW43adGKBNzYWOlI3+rlLnasXTwW79YNnUhXPDa+yHESgt639dJEs37gCjhkbNKcRRJnomXEuMFBXJg==} peerDependencies: hardhat: ^2.0.2 dependencies: array-uniq: 1.0.3 - eth-gas-reporter: 0.2.25 - hardhat: 2.14.0(ts-node@10.9.1)(typescript@4.9.5) + eth-gas-reporter: 0.2.27 + hardhat: 2.18.1(ts-node@10.9.1)(typescript@5.2.2) sha1: 1.1.1 transitivePeerDependencies: - '@codechecks/client' + - bufferutil + - debug + - utf-8-validate dev: true - /hardhat-preprocessor@0.1.5(hardhat@2.14.0): + /hardhat-preprocessor@0.1.5(hardhat@2.18.1): resolution: {integrity: sha512-j8m44mmPxpxAAd0G8fPHRHOas/INZdzptSur0TNJvMEGcFdLDhbHHxBcqZVQ/bmiW42q4gC60AP4CXn9EF018g==} peerDependencies: hardhat: ^2.0.5 dependencies: - hardhat: 2.14.0(ts-node@10.9.1)(typescript@4.9.5) + hardhat: 2.18.1(ts-node@10.9.1)(typescript@5.2.2) murmur-128: 0.2.1 dev: true - /hardhat@2.14.0(ts-node@10.9.1)(typescript@4.9.5): - resolution: {integrity: sha512-73jsInY4zZahMSVFurSK+5TNCJTXMv+vemvGia0Ac34Mm19fYp6vEPVGF3sucbumszsYxiTT2TbS8Ii2dsDSoQ==} - engines: {node: '>=14.0.0'} + /hardhat@2.18.1(ts-node@10.9.1)(typescript@5.2.2): + resolution: {integrity: sha512-b55rW7Ka+fvJeg6oWuBTXoYQEUurevCCankjGNTwczwD3GnkhV9GEei7KUT+9IKmWx3lC+zyxlFxeDbg0gUoHw==} hasBin: true peerDependencies: ts-node: '*' @@ -15104,21 +15491,20 @@ packages: dependencies: '@ethersproject/abi': 5.7.0 '@metamask/eth-sig-util': 4.0.1 - '@nomicfoundation/ethereumjs-block': 5.0.1 - '@nomicfoundation/ethereumjs-blockchain': 7.0.1 - '@nomicfoundation/ethereumjs-common': 4.0.1 - '@nomicfoundation/ethereumjs-evm': 2.0.1 - '@nomicfoundation/ethereumjs-rlp': 5.0.1 - '@nomicfoundation/ethereumjs-statemanager': 2.0.1 - '@nomicfoundation/ethereumjs-trie': 6.0.1 - '@nomicfoundation/ethereumjs-tx': 5.0.1 - '@nomicfoundation/ethereumjs-util': 9.0.1 - '@nomicfoundation/ethereumjs-vm': 7.0.1 + '@nomicfoundation/ethereumjs-block': 5.0.2 + '@nomicfoundation/ethereumjs-blockchain': 7.0.2 + '@nomicfoundation/ethereumjs-common': 4.0.2 + '@nomicfoundation/ethereumjs-evm': 2.0.2 + '@nomicfoundation/ethereumjs-rlp': 5.0.2 + '@nomicfoundation/ethereumjs-statemanager': 2.0.2 + '@nomicfoundation/ethereumjs-trie': 6.0.2 + '@nomicfoundation/ethereumjs-tx': 5.0.2 + '@nomicfoundation/ethereumjs-util': 9.0.2 + '@nomicfoundation/ethereumjs-vm': 7.0.2 '@nomicfoundation/solidity-analyzer': 0.1.1 '@sentry/node': 5.30.0 - '@types/bn.js': 5.1.1 + '@types/bn.js': 5.1.2 '@types/lru-cache': 5.1.1 - abort-controller: 3.0.0 adm-zip: 0.4.16 aggregate-error: 3.1.0 ansi-escapes: 4.3.2 @@ -15136,22 +15522,21 @@ packages: glob: 7.2.0 immutable: 4.3.4 io-ts: 1.10.4 - keccak: 3.0.3 + keccak: 3.0.4 lodash: 4.17.21 mnemonist: 0.38.5 mocha: 10.2.0 p-map: 4.0.0 - qs: 6.11.2 raw-body: 2.5.2 resolve: 1.17.0 semver: 6.3.1 solc: 0.7.3(debug@4.3.4) source-map-support: 0.5.21 stacktrace-parser: 0.1.10 - ts-node: 10.9.1(@types/node@12.20.55)(typescript@4.9.5) + ts-node: 10.9.1(@types/node@20.8.6)(typescript@5.2.2) tsort: 0.0.1 - typescript: 4.9.5 - undici: 5.23.0 + typescript: 5.2.2 + undici: 5.26.3 uuid: 8.3.2 ws: 7.5.9 transitivePeerDependencies: @@ -15276,13 +15661,6 @@ packages: resolution: {integrity: sha512-fUs4B4L+mlt8/XAtSOGMUO1TXmAelItBPtJG7CyHJfYTdDjwisntGO2JQz7oUsatOY9o68+57eziUVNw/mRHmA==} dev: true - /hash.js@1.1.3: - resolution: {integrity: sha512-/UETyP0W22QILqS+6HowevwhEFJ3MBJnwTf75Qob9Wz9t0DPuisL8kW8YZMK62dHAKE1c1p+gY1TtOLY+USEHA==} - dependencies: - inherits: 2.0.4 - minimalistic-assert: 1.0.1 - dev: true - /hash.js@1.1.7: resolution: {integrity: sha512-taOaskGt4z4SOANNseOviYDvjEJinIkRgmp7LbKP2YTTmVxWBl87s/uzK9r+44BclBSp2X7K1hqeNfz9JbBeXA==} dependencies: @@ -15494,14 +15872,14 @@ packages: he: 1.2.0 param-case: 3.0.4 relateurl: 0.2.7 - terser: 5.19.4 + terser: 5.21.0 dev: true /html-void-elements@3.0.0: resolution: {integrity: sha512-bEqo66MRXsUGxWHV5IP0PUiAWwoEjba4VCzg0LjFJBpchPaTfyfCKTG6bc5F8ucKec3q5y6qOdGyYTSBEvhCrg==} dev: false - /html-webpack-plugin@5.5.3(webpack@5.88.2): + /html-webpack-plugin@5.5.3(webpack@5.89.0): resolution: {integrity: sha512-6YrDKTuqaP/TquFH7h4srYWsZx+x6k6+FbsTm0ziCwGHDP78Unr1r9F/H4+sGmMbX08GQcJ+K64x55b+7VM/jg==} engines: {node: '>=10.13.0'} peerDependencies: @@ -15512,7 +15890,7 @@ packages: lodash: 4.17.21 pretty-error: 4.0.0 tapable: 2.2.1 - webpack: 5.88.2 + webpack: 5.89.0 dev: true /htmlparser2@6.1.0: @@ -15622,6 +16000,11 @@ packages: engines: {node: '>=12.20.0'} dev: true + /human-signals@4.3.1: + resolution: {integrity: sha512-nZXjEF2nbo7lIw3mgYjItAfgQXog3OjJogSbKa2CQIIvSGWcKgeJnQlNXip6NglNzYH45nSRiEVimMvYL8DDqQ==} + engines: {node: '>=14.18.0'} + dev: true + /humanize-ms@1.2.1: resolution: {integrity: sha512-Fl70vYtsAFb/C06PTS9dZBo7ihau+Tu/DNCk/OyHhea07S+aeMWpFFkUaXRa8fI+ScZbEI8dfSxwY7gxZ9SAVQ==} dependencies: @@ -15770,7 +16153,7 @@ packages: engines: {node: '>= 0.4'} dependencies: get-intrinsic: 1.2.1 - has: 1.0.3 + has: 1.0.4 side-channel: 1.0.4 dev: true @@ -15976,6 +16359,12 @@ packages: hasBin: true dev: true + /is-docker@3.0.0: + resolution: {integrity: sha512-eljcgEDlEns/7AXFosB5K/2nCM4P7FQPkGc/DWLy5rmFEWvZayGrik1d9/QIY5nJ4f9YsVvBkA6kJpHn9rISdQ==} + engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} + hasBin: true + dev: true + /is-extendable@0.1.1: resolution: {integrity: sha512-5BMULNob1vgFX6EjQw5izWDxrecWK9AM72rugNr0TFldMOi0fj6Jk+zeKIt0xGj4cEfQIJth4w3OKWOJ4f+AFw==} engines: {node: '>=0.10.0'} @@ -16047,6 +16436,14 @@ packages: resolution: {integrity: sha512-DgZQp241c8oO6cA1SbTEWiXeoxV42vlcJxgH+B3hi1AiqqKruZR3ZGF8In3fj4+/y/7rHvlOZLZtgJ/4ttYGZg==} dev: false + /is-inside-container@1.0.0: + resolution: {integrity: sha512-KIYLCCJghfHZxqjYBE7rEy0OBuTd5xCHS7tHVgvCLkx7StIoaxwNW3hCALgEUjFfeRk+MG/Qxmp/vtETEF3tRA==} + engines: {node: '>=14.16'} + hasBin: true + dependencies: + is-docker: 3.0.0 + dev: true + /is-interactive@2.0.0: resolution: {integrity: sha512-qP1vozQRI+BMOPcjFzrjXuQvdak2pHNUMZoeG2eRbiSqyvbEf/wQtEOTOX1guk6E3t36RkaqiSt8A/6YElNxLQ==} engines: {node: '>=12'} @@ -16249,6 +16646,15 @@ packages: engines: {node: '>=0.10.0'} dev: true + /isomorphic-unfetch@3.1.0: + resolution: {integrity: sha512-geDJjpoZ8N0kWexiwkX8F9NkTsXhetLPVbZFQ+JTW239QNOwvB0gniuR1Wc6f0AMTn7/mFGyXvHTifrCp/GH8Q==} + dependencies: + node-fetch: 2.7.0 + unfetch: 4.2.0 + transitivePeerDependencies: + - encoding + dev: true + /isomorphic-ws@4.0.1(ws@7.5.9): resolution: {integrity: sha512-BhBvN2MBpWTaSHdWRb/bwdZJ1WaehQ2L1KngkCkfLUGF0mAWAT1sQUQacEmQ0jXkFw/czDXPNQSL5u2/Krsz1w==} peerDependencies: @@ -16321,6 +16727,15 @@ packages: istanbul-lib-report: 3.0.1 dev: true + /jackspeak@2.3.6: + resolution: {integrity: sha512-N3yCS/NegsOBokc8GAdM8UcmfsKiSS8cipheD/nivzr700H+nsMOxJjQnvwOcRYVuFkdH0wGUvW2WbXGmrZGbQ==} + engines: {node: '>=14'} + dependencies: + '@isaacs/cliui': 8.0.2 + optionalDependencies: + '@pkgjs/parseargs': 0.11.0 + dev: true + /jayson@4.1.0: resolution: {integrity: sha512-R6JlbyLN53Mjku329XoRT2zJAE6ZgOQ8f91ucYdMCD4nkGCF9kZSrcGXpHIU4jeKj58zUZke2p+cdQchU7Ly7A==} engines: {node: '>=8'} @@ -16358,7 +16773,7 @@ packages: '@jest/environment': 27.5.1 '@jest/test-result': 27.5.1 '@jest/types': 27.5.1 - '@types/node': 20.8.3 + '@types/node': 20.8.6 chalk: 4.1.2 co: 4.6.0 dedent: 0.7.0 @@ -16422,7 +16837,7 @@ packages: '@jest/types': 27.5.1 babel-jest: 27.5.1(@babel/core@7.22.15) chalk: 4.1.2 - ci-info: 3.8.0 + ci-info: 3.9.0 deepmerge: 4.3.1 glob: 7.2.3 graceful-fs: 4.2.11 @@ -16483,7 +16898,7 @@ packages: '@jest/environment': 27.5.1 '@jest/fake-timers': 27.5.1 '@jest/types': 27.5.1 - '@types/node': 20.8.3 + '@types/node': 20.8.6 jest-mock: 27.5.1 jest-util: 27.5.1 jsdom: 16.7.0 @@ -16501,7 +16916,7 @@ packages: '@jest/environment': 27.5.1 '@jest/fake-timers': 27.5.1 '@jest/types': 27.5.1 - '@types/node': 20.8.3 + '@types/node': 20.8.6 jest-mock: 27.5.1 jest-util: 27.5.1 dev: true @@ -16517,7 +16932,7 @@ packages: dependencies: '@jest/types': 27.5.1 '@types/graceful-fs': 4.1.6 - '@types/node': 20.8.3 + '@types/node': 20.8.6 anymatch: 3.1.3 fb-watchman: 2.0.2 graceful-fs: 4.2.11 @@ -16539,7 +16954,7 @@ packages: '@jest/source-map': 27.5.1 '@jest/test-result': 27.5.1 '@jest/types': 27.5.1 - '@types/node': 20.8.3 + '@types/node': 20.8.6 chalk: 4.1.2 co: 4.6.0 expect: 27.5.1 @@ -16594,7 +17009,7 @@ packages: engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0} dependencies: '@jest/types': 27.5.1 - '@types/node': 20.8.3 + '@types/node': 20.8.6 dev: true /jest-pnp-resolver@1.2.3(jest-resolve@27.5.1): @@ -16636,7 +17051,7 @@ packages: jest-pnp-resolver: 1.2.3(jest-resolve@27.5.1) jest-util: 27.5.1 jest-validate: 27.5.1 - resolve: 1.22.6 + resolve: 1.22.8 resolve.exports: 1.1.1 slash: 3.0.0 dev: true @@ -16650,7 +17065,7 @@ packages: '@jest/test-result': 27.5.1 '@jest/transform': 27.5.1 '@jest/types': 27.5.1 - '@types/node': 20.8.3 + '@types/node': 20.8.6 chalk: 4.1.2 emittery: 0.8.1 graceful-fs: 4.2.11 @@ -16707,7 +17122,7 @@ packages: resolution: {integrity: sha512-jZCyo6iIxO1aqUxpuBlwTDMkzOAJS4a3eYz3YzgxxVQFwLeSA7Jfq5cbqCY+JLvTDrWirgusI/0KwxKMgrdf7w==} engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0} dependencies: - '@types/node': 20.8.3 + '@types/node': 20.8.6 graceful-fs: 4.2.11 dev: true @@ -16746,7 +17161,7 @@ packages: engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0} dependencies: '@jest/types': 27.5.1 - '@types/node': 20.8.3 + '@types/node': 20.8.6 chalk: 4.1.2 ci-info: 3.8.0 graceful-fs: 4.2.11 @@ -16771,7 +17186,7 @@ packages: dependencies: '@jest/test-result': 27.5.1 '@jest/types': 27.5.1 - '@types/node': 20.8.3 + '@types/node': 20.8.6 ansi-escapes: 4.3.2 chalk: 4.1.2 jest-util: 27.5.1 @@ -16782,7 +17197,7 @@ packages: resolution: {integrity: sha512-7vuh85V5cdDofPyxn58nrPjBktZo0u9x1g8WtjQol+jZDaE+fhN+cIvTj11GndBnMnyfrUOG1sZQxCdjKh+DKg==} engines: {node: '>= 10.13.0'} dependencies: - '@types/node': 20.8.3 + '@types/node': 20.8.6 merge-stream: 2.0.0 supports-color: 8.1.1 dev: true @@ -16822,6 +17237,10 @@ packages: resolution: {integrity: sha512-pZe//GGmwJndub7ZghVHz7vjb2LgC1m8B07Au3eYqeqv9emhESByMXxaEgkUkEqJe87oBbSniGYoQNIBklc7IQ==} dev: true + /js-cookie@2.2.1: + resolution: {integrity: sha512-HvdH2LzI/EAZcUwA8+0nKNtWHqS+ZmijLA30RwZA0bo7ToCckjK5MkGhjED9KoRcXO6BaGI3I9UIzSA1FKFPOQ==} + dev: true + /js-sdsl@4.4.2: resolution: {integrity: sha512-dwXFwByc/ajSV6m5bcKAPwe4yDDF6D614pxmIi5odytzxRlwqF6nwoiCek80Ixc7Cvma5awClxrzFtxCQvcM8w==} dev: true @@ -17120,6 +17539,16 @@ packages: node-gyp-build: 4.6.1 readable-stream: 3.6.2 + /keccak@3.0.4: + resolution: {integrity: sha512-3vKuW0jV8J3XNTzvfyicFR5qvxrSAGl7KIhvgOu5cmWwM7tZRj3fMbj/pfIf4be7aznbc+prBWGjywox/g2Y6Q==} + engines: {node: '>=10.0.0'} + requiresBuild: true + dependencies: + node-addon-api: 2.0.2 + node-gyp-build: 4.6.1 + readable-stream: 3.6.2 + dev: true + /keyv@3.1.0: resolution: {integrity: sha512-9ykJ/46SN/9KPM/sichzQ7OvXyGDYKGTaDlKMGCAlg2UK8KRy4jb0d8sFc+0Tt0YYnThq8X2RZgCg74RPxgcVA==} requiresBuild: true @@ -17128,19 +17557,12 @@ packages: dev: true optional: true - /keyv@4.5.3: - resolution: {integrity: sha512-QCiSav9WaX1PgETJ+SpNnx2PRRapJ/oRSXM4VO5OGYGSjrxbKPVFVhB3l2OCbLCk329N8qyAtsJjSjvVBWzEug==} - dependencies: - json-buffer: 3.0.1 - dev: true - /keyv@4.5.4: resolution: {integrity: sha512-oxVHkHR/EJf2CNXnWxRLW6mg7JyCCUcG0DtEGmL2ctUo1PNTin1PUil+r/+4r5MpVgC/fn1kjsx7mjSujKqIpw==} requiresBuild: true dependencies: json-buffer: 3.0.1 dev: true - optional: true /keyvaluestorage-interface@1.0.0: resolution: {integrity: sha512-8t6Q3TclQ4uZynJY9IGr2+SsIGwK9JHcO6ootkHCGA0CrQCRy+VkouYNO2xicET6b9al7QKzpebNow+gkpCL8g==} @@ -17641,6 +18063,10 @@ packages: resolution: {integrity: sha512-hFuH8TY+Yji7Eja3mGiuAxBqLagejScbG8GbG0j6o9vzn0YL14My+ktnqtZgFTosKymC9/44wP6s7xyuLfnClw==} dev: true + /lodash.camelcase@4.3.0: + resolution: {integrity: sha512-TwuEnCnxbc3rAvhf/LbG7tJUDzhqXyFnv3dtzLOPgCG/hODL7WFnsbwktkD7yUV0RrreP/l1PALq/YSg6VvjlA==} + dev: true + /lodash.debounce@4.0.8: resolution: {integrity: sha512-FT1yDzDYEoYWhnSGnpE/4Kj1fLZkDFyqRb7fNt6FdYOSxlUWAtp42Eh6Wb0rGIv/m9Bgo7x4GhQbm5Ys4SG5ow==} @@ -17729,10 +18155,10 @@ packages: resolution: {integrity: sha512-uvhvYPC8kGPjXT3MyKMrL3JitEAmDMp30lVkuq/590Mw9ok6pWcFCwXJveo0t5uqYw1UREQHofD+jVpdjBv8wg==} dev: false - /loupe@2.3.6: - resolution: {integrity: sha512-RaPMZKiMy8/JruncMU5Bt6na1eftNoo++R4Y+N2FrxkDVTrGvcyzFTsaGif4QTeKESheMGegbhw6iUAq+5A8zA==} + /loupe@2.3.7: + resolution: {integrity: sha512-zSMINGVYkdpYSOBmLi0D1Uo7JU9nVdQKrHxC8eYlV+9YKK9WePqAlL7lSlorG/U2Fw1w0hTBmaa/jrQ3UbPHtA==} dependencies: - get-func-name: 2.0.0 + get-func-name: 2.0.2 dev: true /lower-case@2.0.2: @@ -18834,6 +19260,13 @@ packages: brace-expansion: 2.0.1 dev: true + /minimatch@9.0.3: + resolution: {integrity: sha512-RHiac9mvaRw0x3AYRgDC1CxAP7HTcNrrECeA8YYJeWnpo+2Q5CegtZjaotWTWxDG3UeGA1coE05iH1mPjT/2mg==} + engines: {node: '>=16 || 14 >=14.17'} + dependencies: + brace-expansion: 2.0.1 + dev: true + /minimist-options@4.1.0: resolution: {integrity: sha512-Q4r8ghd80yhO/0j1O3B2BjweX3fiHg9cdOwjJd2J76Q135c+NDxGCqdYKQ1SKBuFfgWbAUzBfvYjPUEeNgqN1A==} engines: {node: '>= 6'} @@ -18911,8 +19344,8 @@ packages: engines: {node: '>=8'} dev: true - /minipass@7.0.3: - resolution: {integrity: sha512-LhbbwCfz3vsb12j/WkWQPZfKTsgqIe1Nf/ti1pKjYESGLHIVjWU96G9/ljLH4F9mWNVhlQOm0VySdAWzf05dpg==} + /minipass@7.0.4: + resolution: {integrity: sha512-jYofLM5Dam9279rdkWzqHozUo4ybjdZmCsDHePy5V/PbBcVMiSZR97gmAy45aqi8CK1lG2ECd356FU86avfwUQ==} engines: {node: '>=16 || 14 >=14.17'} dev: true @@ -19062,37 +19495,6 @@ packages: yargs-unparser: 1.6.0 dev: true - /mocha@7.2.0: - resolution: {integrity: sha512-O9CIypScywTVpNaRrCAgoUnJgozpIofjKUYmJhiCIJMiuYnLI6otcb1/kpW9/n/tJODHGZ7i8aLQoDVsMtOKQQ==} - engines: {node: '>= 8.10.0'} - hasBin: true - dependencies: - ansi-colors: 3.2.3 - browser-stdout: 1.3.1 - chokidar: 3.3.0 - debug: 3.2.6(supports-color@6.0.0) - diff: 3.5.0 - escape-string-regexp: 1.0.5 - find-up: 3.0.0 - glob: 7.1.3 - growl: 1.10.5 - he: 1.2.0 - js-yaml: 3.13.1 - log-symbols: 3.0.0 - minimatch: 3.0.4 - mkdirp: 0.5.5 - ms: 2.1.1 - node-environment-flags: 1.0.6 - object.assign: 4.1.0 - strip-json-comments: 2.0.1 - supports-color: 6.0.0 - which: 1.3.1 - wide-align: 1.1.3 - yargs: 13.3.2 - yargs-parser: 13.1.2 - yargs-unparser: 1.6.0 - dev: true - /mock-fs@4.14.0: resolution: {integrity: sha512-qYvlv/exQ4+svI3UOvPUpLDF0OMX5euvUH0Ny4N5QyRyhNdgAgUrVH3iUINSzEPLvx0kbo/Bp28GJKIqvE7URw==} requiresBuild: true @@ -19584,7 +19986,7 @@ packages: resolution: {integrity: sha512-/5CMN3T0R4XTj4DcGaexo+roZSdSFW/0AOOTROrjxzCG1wrWXEsGbRKevjlIL+ZDE4sZlJr5ED4YW0yqmkK+eA==} dependencies: hosted-git-info: 2.8.9 - resolve: 1.22.6 + resolve: 1.22.8 semver: 5.7.2 validate-npm-package-license: 3.0.4 dev: true @@ -19717,6 +20119,10 @@ packages: /object-inspect@1.12.3: resolution: {integrity: sha512-geUvdk7c+eizMNUDkRpW1wJwgfOiOeHbxBR/hLXK1aT6zmVSO0jsQcs7fj6MGw89jC/cjGfLcNOrtMYtGqm81g==} + /object-inspect@1.13.0: + resolution: {integrity: sha512-HQ4J+ic8hKrgIt3mqk6cVOVrW2ozL4KdvHlqpBv9vDYWx9ysAgENAdvy4FoGF+KFdhR7nQTNm5J0ctAeOwn+3g==} + dev: true + /object-is@1.1.5: resolution: {integrity: sha512-3cyDsyHgtmi7I7DfSSI2LDp6SK2lwvtbg0p0R1e0RvTqF5ceGx+K2dfSjm1bKDMVCFEDAQvy+o8c6a7VujOddw==} engines: {node: '>= 0.4'} @@ -19746,7 +20152,7 @@ packages: engines: {node: '>= 0.4'} dependencies: define-properties: 1.2.1 - function-bind: 1.1.1 + function-bind: 1.1.2 has-symbols: 1.0.3 object-keys: 1.1.1 dev: true @@ -19761,6 +20167,15 @@ packages: object-keys: 1.1.1 dev: true + /object.fromentries@2.0.7: + resolution: {integrity: sha512-UPbPHML6sL8PI/mOqPwsH4G6iyXcCGzLin8KvEPenOZN5lpCNBZZQ+V62vdjB1mQHrmqGQt5/OJzemUA+KJmEA==} + engines: {node: '>= 0.4'} + dependencies: + call-bind: 1.0.2 + define-properties: 1.2.1 + es-abstract: 1.22.2 + dev: true + /object.getownpropertydescriptors@2.1.7: resolution: {integrity: sha512-PrJz0C2xJ58FNn11XV2lr4Jt5Gzl94qpy9Lu0JlfEj14z88sqbSBJCBEzdlNUCzY2gburhbrwOZ5BHCmuNUy0g==} engines: {node: '>= 0.8'} @@ -19772,6 +20187,15 @@ packages: safe-array-concat: 1.0.1 dev: true + /object.groupby@1.0.1: + resolution: {integrity: sha512-HqaQtqLnp/8Bn4GL16cj+CUYbnpe1bh0TtEaWvybszDG4tgxCJuRpV8VGuvNaI1fAnI4lUJzDG55MXcOH4JZcQ==} + dependencies: + call-bind: 1.0.2 + define-properties: 1.2.1 + es-abstract: 1.22.2 + get-intrinsic: 1.2.1 + dev: true + /object.pick@1.3.0: resolution: {integrity: sha512-tqa/UMy/CCoYmj+H5qc07qvSL9dqcs/WZENZ1JbtWBlATP+iVOe778gE6MSijnyCnORzDuX6hU+LA4SZ09YjFQ==} engines: {node: '>=0.10.0'} @@ -19784,8 +20208,8 @@ packages: engines: {node: '>= 0.4'} dependencies: call-bind: 1.0.2 - define-properties: 1.2.0 - es-abstract: 1.22.1 + define-properties: 1.2.1 + es-abstract: 1.22.2 dev: true /obliterator@2.0.4: @@ -19839,6 +20263,16 @@ packages: is-wsl: 2.2.0 dev: true + /open@9.1.0: + resolution: {integrity: sha512-OS+QTnw1/4vrf+9hh1jc1jnYjzSG4ttTBB8UxOwAnInG3Uo4ssetzC1ihqaIHjLJnA5GGlRl6QlZXOTQhRBUvg==} + engines: {node: '>=14.16'} + dependencies: + default-browser: 4.0.0 + define-lazy-prop: 3.0.0 + is-inside-container: 1.0.0 + is-wsl: 2.2.0 + dev: true + /optionator@0.8.3: resolution: {integrity: sha512-+IW9pACdk3XWmmTXG8m3upGUJst5XRGzxMRjXzAuJ1XnIFNvfhjjIuYkDvysnPQ7qzqVzLt78BCruntqRhWQbA==} engines: {node: '>= 0.8.0'} @@ -20203,7 +20637,7 @@ packages: engines: {node: '>=16 || 14 >=14.17'} dependencies: lru-cache: 10.0.1 - minipass: 7.0.3 + minipass: 7.0.4 dev: true /path-starts-with@2.0.1: @@ -21197,6 +21631,11 @@ packages: strip-indent: 3.0.0 dev: true + /reduce-flatten@2.0.0: + resolution: {integrity: sha512-EJ4UNY/U1t2P/2k6oqotuX2Cc3T6nxJwsM0N0asT7dhrtH1ltUxDn4NalSYmPE2rCkVpcf/X6R0wDwcFpzhd4w==} + engines: {node: '>=6'} + dev: true + /regenerate-unicode-properties@10.1.0: resolution: {integrity: sha512-d1VudCLoIGitcU/hEg2QqvyGZQmdC0Lf8BqdOMXGFSvJP4bNV1+XqbPQeHHLD51Jh4QJJ225dlIFvY4Ly6MXmQ==} engines: {node: '>=4'} @@ -21237,15 +21676,6 @@ packages: safe-regex: 1.1.0 dev: true - /regexp.prototype.flags@1.5.0: - resolution: {integrity: sha512-0SutC3pNudRKgquxGoRGIz946MZVHqbNfPjBdxeOhBrdgDKlRoXmYLQN9xRbrR09ZXWeGAdPuif7egofn6v5LA==} - engines: {node: '>= 0.4'} - dependencies: - call-bind: 1.0.2 - define-properties: 1.2.1 - functions-have-names: 1.2.3 - dev: true - /regexp.prototype.flags@1.5.1: resolution: {integrity: sha512-sy6TXMN+hnP/wMy+ISxg3krXx7BAtWVO4UouuCN/ziM9UEne0euamVNafDfvC83bRNr95y0V5iijeDQFUNpvrg==} engines: {node: '>= 0.4'} @@ -21450,29 +21880,6 @@ packages: resolve-from: 3.0.0 dev: true - /request-promise-core@1.1.4(request@2.88.2): - resolution: {integrity: sha512-TTbAfBBRdWD7aNNOoVOBH4pN/KigV6LyapYNNlAPA8JwbovRti1E88m3sYAwsLi5ryhPKsE9APwnjFTgdUjTpw==} - engines: {node: '>=0.10.0'} - peerDependencies: - request: ^2.34 - dependencies: - lodash: 4.17.21 - request: 2.88.2 - dev: true - - /request-promise-native@1.0.9(request@2.88.2): - resolution: {integrity: sha512-wcW+sIUiWnKgNY0dqCpOZkUbF/I+YPi+f09JZIDa39Ec+q82CpSYniDp+ISgTTbKmnpJWASeJBPZmoxH84wt3g==} - engines: {node: '>=0.12.0'} - deprecated: request-promise-native has been deprecated because it extends the now deprecated request package, see https://github.com/request/request/issues/3142 - peerDependencies: - request: ^2.34 - dependencies: - request: 2.88.2 - request-promise-core: 1.1.4(request@2.88.2) - stealthy-require: 1.1.1 - tough-cookie: 2.5.0 - dev: true - /request@2.88.2: resolution: {integrity: sha512-MsvtOrfG9ZcrOwAW+Qi+F6HbD0CWXEh9ou77uOb7FM2WPhwT7smM833PzanhJLsgXjN89Ir6V2PczXNnMpwKhw==} engines: {node: '>= 6'} @@ -21553,6 +21960,10 @@ packages: engines: {node: '>=8'} dev: true + /resolve-pkg-maps@1.0.0: + resolution: {integrity: sha512-seS2Tj26TBVOC2NIc2rOe2y2ZO7efxITtLZcGSOnHHNOQ7CkiUBfw0Iw2ck6xkIhPwLhKNLS8BO+hEpngQlqzw==} + dev: true + /resolve-url@0.2.1: resolution: {integrity: sha512-ZuF55hVUQaaczgOIwqWzkEcEidmlD/xl44x1UZnhOXcYuFN2S6+rcxpG+C1N3So0wvNI3DmJICUFfu2SxhBmvg==} deprecated: https://github.com/lydell/resolve-url#deprecated @@ -21573,15 +21984,6 @@ packages: path-parse: 1.0.7 dev: true - /resolve@1.22.4: - resolution: {integrity: sha512-PXNdCiPqDqeUou+w1C2eTQbNfxKSuMxqTCuvlmmMsk1NWHL5fRrhY6Pl0qEYYc6+QqGClco1Qj8XnjPego4wfg==} - hasBin: true - dependencies: - is-core-module: 2.13.0 - path-parse: 1.0.7 - supports-preserve-symlinks-flag: 1.0.0 - dev: true - /resolve@1.22.6: resolution: {integrity: sha512-njhxM7mV12JfufShqGy3Rz8j11RPdLy4xi15UurGJeoHLfJpVXKdh3ueuOqbYUcDZnffr6X739JBo5LzyahEsw==} hasBin: true @@ -21633,6 +22035,11 @@ packages: engines: {node: '>= 4'} dev: true + /retry@0.13.1: + resolution: {integrity: sha512-XQBQ3I8W1Cge0Seh+6gjj03LbmRFWuoszgK9ooCpwYIrhhoO80pfq4cUkU5DkknwfOfFteRwlZ56PYOGYyFWdg==} + engines: {node: '>= 4'} + dev: true + /reusify@1.0.4: resolution: {integrity: sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==} engines: {iojs: '>=1.0.0', node: '>=0.10.0'} @@ -21721,6 +22128,13 @@ packages: resolution: {integrity: sha512-APM0Gt1KoXBz0iIkkdB/kfvGOwC4UuJFeG/c+yV7wSc7q96cG/kJ0HiYCnzivD9SB53cLV1MlHFNfOuPaadYSw==} dev: true + /run-applescript@5.0.0: + resolution: {integrity: sha512-XcT5rBksx1QdIhlFOCtgZkB99ZEouFZ1E2Kc2LHqNW13U3/74YGdkQRmThTwxy4QIyookibDKYZOPqX//6BlAg==} + engines: {node: '>=12'} + dependencies: + execa: 5.1.1 + dev: true + /run-parallel-limit@1.1.0: resolution: {integrity: sha512-jJA7irRNM91jaKc3Hcl1npHsFLOXOoTkPCUL1JEa1R82O2miplXXRaGdjW/KM/98YQWDhJLiSs793CnXfblJUw==} dependencies: @@ -21880,7 +22294,7 @@ packages: resolution: {integrity: sha512-pN/yOAvcC+5rQ5nERGuwrjLlYvLTbCibnZ1I7B1LaiAz9BRBlE9GMgE/eqV30P7aJQUf7Ddimy/RsbYO/GrVGg==} engines: {node: '>= 10.13.0'} dependencies: - '@types/json-schema': 7.0.12 + '@types/json-schema': 7.0.13 ajv: 6.12.6 ajv-keywords: 3.5.2(ajv@6.12.6) dev: true @@ -21891,10 +22305,6 @@ packages: compute-scroll-into-view: 3.1.0 dev: false - /scrypt-js@2.0.4: - resolution: {integrity: sha512-4KsaGcPnuhtCZQCxFxN3GVYIhKFPTdLd8PLC552XwbMndtD0cjRFAhDuuydXQ0h08ZfPgzqe6EKHozpuH74iDw==} - dev: true - /scrypt-js@3.0.1: resolution: {integrity: sha512-cdwTTnqPu0Hyvf5in5asVdZocVDTNRmR7XEcJuIzMjJeSHybHl7vpB66AzwTaIg6CLSbtjcxc8fqcySfnTkccA==} @@ -22048,7 +22458,7 @@ packages: resolution: {integrity: sha512-tMNCiqYVkXIZgc2Hnoy2IvC/f8ezc5koaRFkCjrpWzGpCd3qbZXPzVy9MAZzK1ch/X0jvSkojys3oqJN0qCmdA==} engines: {node: '>= 0.4'} dependencies: - define-data-property: 1.1.0 + define-data-property: 1.1.1 functions-have-names: 1.2.3 has-property-descriptors: 1.0.0 dev: true @@ -22068,10 +22478,6 @@ packages: split-string: 3.1.0 dev: true - /setimmediate@1.0.4: - resolution: {integrity: sha512-/TjEmXQVEzdod/FFskf3o7oOAsGhHf2j1dZqRFbDzq4F3mvvxflIIi4Hd3bLQE9y/CpwqfSQam5JakI/mi3Pog==} - dev: true - /setimmediate@1.0.5: resolution: {integrity: sha512-MATJdZp8sLqDl/68LfQmbP8zKPLQNV6BIZoIgrscFDQ+RsvK/BxeDQOgyxKKoh0y/8h3BqVFnCqQ/gd+reiIXA==} @@ -22163,6 +22569,11 @@ packages: /signal-exit@3.0.7: resolution: {integrity: sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==} + /signal-exit@4.1.0: + resolution: {integrity: sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw==} + engines: {node: '>=14'} + dev: true + /simple-concat@1.0.1: resolution: {integrity: sha512-cSFtAPtRhljv69IK0hTVZQ+OfE9nePi/rtJmw5UjHeVyVroEqJXP1sFztKUy1qU+xvz3u/sfYJLa947b7nAN2Q==} requiresBuild: true @@ -22328,7 +22739,7 @@ packages: dependencies: command-exists: 1.2.9 commander: 3.0.2 - follow-redirects: 1.15.2(debug@4.3.4) + follow-redirects: 1.15.3(debug@4.3.4) fs-extra: 0.30.0 js-sha3: 0.8.0 memorystream: 0.3.1 @@ -22339,8 +22750,8 @@ packages: - debug dev: true - /solhint@3.4.1(typescript@4.9.5): - resolution: {integrity: sha512-pzZn2RlZhws1XwvLPVSsxfHrwsteFf5eySOhpAytzXwKQYbTCJV6z8EevYDiSVKMpWrvbKpEtJ055CuEmzp4Xg==} + /solhint@3.6.2(typescript@5.2.2): + resolution: {integrity: sha512-85EeLbmkcPwD+3JR7aEMKsVC9YrRSxd4qkXuMzrlf7+z2Eqdfm1wHWq1ffTuo5aDhoZxp2I9yF3QkxZOxOL7aQ==} hasBin: true dependencies: '@solidity-parser/parser': 0.16.1 @@ -22349,14 +22760,14 @@ packages: ast-parents: 0.0.1 chalk: 4.1.2 commander: 10.0.1 - cosmiconfig: 8.3.4(typescript@4.9.5) + cosmiconfig: 8.3.6(typescript@5.2.2) fast-diff: 1.3.0 glob: 8.1.0 ignore: 5.2.4 js-yaml: 4.1.0 lodash: 4.17.21 pluralize: 8.0.0 - semver: 6.3.1 + semver: 7.5.4 strip-ansi: 6.0.1 table: 6.8.1 text-table: 0.2.0 @@ -22372,13 +22783,13 @@ packages: array.prototype.findlast: 1.2.3 dev: true - /solidity-docgen@0.6.0-beta.35(hardhat@2.14.0): - resolution: {integrity: sha512-9QdwK1THk/MWIdq1PEW/6dvtND0pUqpFTsbKwwU9YQIMYuRhH1lek9SsgnsGGYtdJ0VTrXXcVT30q20a8Y610A==} + /solidity-docgen@0.6.0-beta.36(hardhat@2.18.1): + resolution: {integrity: sha512-f/I5G2iJgU1h0XrrjRD0hHMr7C10u276vYvm//rw1TzFcYQ4xTOyAoi9oNAHRU0JU4mY9eTuxdVc2zahdMuhaQ==} peerDependencies: hardhat: ^2.8.0 dependencies: handlebars: 4.7.8 - hardhat: 2.14.0(ts-node@10.9.1)(typescript@4.9.5) + hardhat: 2.18.1(ts-node@10.9.1)(typescript@5.2.2) solidity-ast: 0.4.52 dev: true @@ -22597,11 +23008,6 @@ packages: readable-stream: 2.3.8 dev: true - /stealthy-require@1.1.1: - resolution: {integrity: sha512-ZnWpYnYugiOVEY5GkcuJK1io5V8QmNYChG62gSit9pQVGErXtrKuPC55ITaVSukmMta5qpMU7vqLt2Lnni4f/g==} - engines: {node: '>=0.10.0'} - dev: true - /stream-browserify@3.0.0: resolution: {integrity: sha512-H73RAHsVBapbim0tU2JwwOiXUj+fikfiaoYAKHF3VJfA0pe2BCzkhAHBlLG6REzE+2WNZcxOXjK7lkso+9euLA==} dependencies: @@ -22640,6 +23046,10 @@ packages: resolution: {integrity: sha512-QwiXZgpRcKkhTj2Scnn++4PKtWsH0kpzZ62L2R6c/LUVYv7hVnZqcg2+sMuT6R7Jusu1vviK/MFsu6kNJfWlEQ==} engines: {node: '>=4'} + /string-format@2.0.0: + resolution: {integrity: sha512-bbEs3scLeYNXLecRRuk6uJxdXUSj6le/8rNPHChIJTn2V79aXVTR1EH2OH5zLKKoz0V02fOUKZZcw01pLUShZA==} + dev: true + /string-length@4.0.2: resolution: {integrity: sha512-+l6rNN5fYHNhZZy41RXsYptCjA2Igmq4EG7kZAYFQI1E1VTXarr6ZPXBg6eq7Y6eK4FEhY6AJlyuFIb/v/S0VQ==} engines: {node: '>=10'} @@ -22681,13 +23091,13 @@ packages: is-fullwidth-code-point: 3.0.0 strip-ansi: 6.0.1 - /string.prototype.trim@1.2.7: - resolution: {integrity: sha512-p6TmeT1T3411M8Cgg9wBTMRtY2q9+PNy9EV1i2lIXUN/btt763oIfxwN3RR8VU6wHX8j/1CFy0L+YuThm6bgOg==} - engines: {node: '>= 0.4'} + /string-width@5.1.2: + resolution: {integrity: sha512-HnLOCR3vjcY8beoNLtcjZ5/nxn2afmME6lhrDrebokqMap+XbeW8n9TXpPDOqdGK5qcI3oT0GKTW6wC7EMiVqA==} + engines: {node: '>=12'} dependencies: - call-bind: 1.0.2 - define-properties: 1.2.1 - es-abstract: 1.22.2 + eastasianwidth: 0.2.0 + emoji-regex: 9.2.2 + strip-ansi: 7.1.0 dev: true /string.prototype.trim@1.2.8: @@ -22699,14 +23109,6 @@ packages: es-abstract: 1.22.2 dev: true - /string.prototype.trimend@1.0.6: - resolution: {integrity: sha512-JySq+4mrPf9EsDBEDYMOb/lM7XQLulwg5R/m1r0PXEFqrV0qHvl58sdTilSXtKOflCsK2E8jxf+GKC0T07RWwQ==} - dependencies: - call-bind: 1.0.2 - define-properties: 1.2.1 - es-abstract: 1.22.2 - dev: true - /string.prototype.trimend@1.0.7: resolution: {integrity: sha512-Ni79DqeB72ZFq1uH/L6zJ+DKZTkOtPIHovb3YZHQViE+HDouuU4mBrLOLDn5Dde3RF8qw5qVETEjhu9locMLvA==} dependencies: @@ -23269,6 +23671,24 @@ packages: get-port: 3.2.0 dev: true + /synckit@0.8.5: + resolution: {integrity: sha512-L1dapNV6vu2s/4Sputv8xGsCdAVlb5nRDMFU/E27D44l5U6cw1g0dGd45uLc+OXjNMmF4ntiMdCimzcjFKQI8Q==} + engines: {node: ^14.18.0 || >=16.0.0} + dependencies: + '@pkgr/utils': 2.4.2 + tslib: 2.6.2 + dev: true + + /table-layout@1.0.2: + resolution: {integrity: sha512-qd/R7n5rQTRFi+Zf2sk5XVVd9UQl6ZkduPFC3S7WEGJAmetDTjY3qPN50eSKzwuzEyQKy5TN2TiZdkIjos2L6A==} + engines: {node: '>=8.0.0'} + dependencies: + array-back: 4.0.2 + deep-extend: 0.6.0 + typical: 5.2.0 + wordwrapjs: 4.0.1 + dev: true + /table@6.8.1: resolution: {integrity: sha512-Y4X9zqrCftUhMeH2EptSSERdVKt/nEdijTOacGD/97EKjhQ/Qs8RTlEGABSJNNN8lac9kheH+af7yAkEWlgneA==} engines: {node: '>=10.0.0'} @@ -23430,11 +23850,11 @@ packages: jest-worker: 27.5.1 schema-utils: 3.3.0 serialize-javascript: 6.0.1 - terser: 5.19.4 + terser: 5.21.0 webpack: 5.89.0(esbuild@0.15.13) dev: true - /terser-webpack-plugin@5.3.9(webpack@5.88.2): + /terser-webpack-plugin@5.3.9(webpack@5.89.0): resolution: {integrity: sha512-ZuXsqE07EcggTWQjXUj+Aot/OMcD0bMKGgF63f7UxYcu5/AJF53aIpK1YoP5xR9l6s/Hy2b+t1AM0bLNPRuhwA==} engines: {node: '>= 10.13.0'} peerDependencies: @@ -23454,12 +23874,12 @@ packages: jest-worker: 27.5.1 schema-utils: 3.3.0 serialize-javascript: 6.0.1 - terser: 5.19.4 - webpack: 5.88.2 + terser: 5.21.0 + webpack: 5.89.0 dev: true - /terser@5.19.4: - resolution: {integrity: sha512-6p1DjHeuluwxDXcuT9VR8p64klWJKo1ILiy19s6C9+0Bh2+NWTX6nD9EPppiER4ICkHDVB1RkVpin/YW2nQn/g==} + /terser@5.21.0: + resolution: {integrity: sha512-WtnFKrxu9kaoXuiZFSGrcAvvBqAdmKx0SFNmVNYdJamMu9yyN3I/QF0FbH4QcqJQ+y1CJnzxGIKH0cSj+FGYRw==} engines: {node: '>=10'} hasBin: true dependencies: @@ -23606,6 +24026,11 @@ packages: engines: {node: '>=0.10.0'} dev: false + /titleize@3.0.0: + resolution: {integrity: sha512-KxVu8EYHDPBdUYdKZdKtU2aj2XfEx9AfjXxE/Aj0vT06w2icA09Vus1rh6eSu1y01akYg6BjIK/hxyLJINoMLQ==} + engines: {node: '>=12'} + dev: true + /tmp@0.0.33: resolution: {integrity: sha512-jRCJlojKnZ3addtTOjdIqoRuPEKBvNXcGYqzO6zWZX8KfKEpnGY5jfggJQ3EjKuu8D4bJRr0y+cYJFmYbImXGw==} engines: {node: '>=0.6.0'} @@ -23775,6 +24200,25 @@ packages: typescript: 5.1.6 dev: true + /ts-api-utils@1.0.3(typescript@5.2.2): + resolution: {integrity: sha512-wNMeqtMz5NtwpT/UZGY5alT+VoKdSsOOP/kqHFcUW1P/VRhH2wJ48+DN2WwUliNbQ976ETwDL0Ifd2VVvgonvg==} + engines: {node: '>=16.13.0'} + peerDependencies: + typescript: '>=4.2.0' + dependencies: + typescript: 5.2.2 + dev: true + + /ts-command-line-args@2.5.1: + resolution: {integrity: sha512-H69ZwTw3rFHb5WYpQya40YAX2/w7Ut75uUECbgBIsLmM+BNuYnxsltfyyLMxy6sEeKxgijLTnQtLd0nKd6+IYw==} + hasBin: true + dependencies: + chalk: 4.1.2 + command-line-args: 5.2.1 + command-line-usage: 6.1.3 + string-format: 2.0.0 + dev: true + /ts-dedent@2.2.0: resolution: {integrity: sha512-q5W7tVM71e2xjHZTlgfTDoPF/SmqKG5hddq9SzR49CH2hayqRKJtQ4mtRlSxKaJlR/+9rEM+mnBHf7I2/BQcpQ==} engines: {node: '>=6.10'} @@ -23784,20 +24228,20 @@ packages: resolution: {integrity: sha512-q3N1xS4vZpRouhYHDPwO0bDW3EZ6SK9CrrDHxi/D6BPReSjpVgWIOpLS2o0gSBZm+7q/wyKp6RVM1AeeW7uyfQ==} dev: true - /ts-essentials@6.0.7(typescript@4.9.5): + /ts-essentials@6.0.7(typescript@5.2.2): resolution: {integrity: sha512-2E4HIIj4tQJlIHuATRHayv0EfMGK3ris/GRk1E3CFnsZzeNV+hUmelbaTZHLtXaZppM5oLhHRtO04gINC4Jusw==} peerDependencies: typescript: '>=3.7.0' dependencies: - typescript: 4.9.5 + typescript: 5.2.2 dev: true - /ts-essentials@7.0.3(typescript@4.9.5): + /ts-essentials@7.0.3(typescript@5.2.2): resolution: {integrity: sha512-8+gr5+lqO3G84KdiTSMRLtuyJ+nTBVRKuCrK4lidMPdVeEp0uqC875uE5NMcaA7YYMN7XsNiFQuMvasF8HT/xQ==} peerDependencies: typescript: '>=3.7.0' dependencies: - typescript: 4.9.5 + typescript: 5.2.2 dev: true /ts-generator@0.1.1: @@ -23882,7 +24326,7 @@ packages: code-block-writer: 12.0.0 dev: true - /ts-node@10.9.1(@types/node@12.20.55)(typescript@4.9.5): + /ts-node@10.9.1(@types/node@20.8.6)(typescript@5.2.2): resolution: {integrity: sha512-NtVysVPkxxrwFGUUxGYhfux8k78pQB3JqYBXlLRZgdGUqTO5wU/UyHop5p70iEbGhB7q5KmiZiU0Y3KlJrScEw==} hasBin: true peerDependencies: @@ -23901,14 +24345,14 @@ packages: '@tsconfig/node12': 1.0.11 '@tsconfig/node14': 1.0.3 '@tsconfig/node16': 1.0.4 - '@types/node': 12.20.55 + '@types/node': 20.8.6 acorn: 8.10.0 acorn-walk: 8.2.0 arg: 4.1.3 create-require: 1.1.1 diff: 4.0.2 make-error: 1.3.6 - typescript: 4.9.5 + typescript: 5.2.2 v8-compile-cache-lib: 3.0.1 yn: 3.1.1 dev: true @@ -23938,6 +24382,10 @@ packages: /tslib@1.14.1: resolution: {integrity: sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==} + /tslib@2.4.0: + resolution: {integrity: sha512-d6xOpEDfsi2CZVlPQzGeux8XMwLT9hssAsaPYExaQMuYskwb+x1x7J371tWlbBdWHroy99KnVB6qIkUbs5X3UQ==} + dev: true + /tslib@2.4.1: resolution: {integrity: sha512-tGyy4dAjRIEwI7BzsB0lynWgOpfqjUdq91XXAlIWD2OwKBH7oCl/GZG/HT4BOHrTlPMOASlMQ7veyTqpmRcrNA==} @@ -24044,7 +24492,7 @@ packages: /type@2.7.2: resolution: {integrity: sha512-dzlvlNlt6AXU7EBSfpAscydQ7gXB+pPGsPnfJnZpiNJBDj7IaJzQlBZYGdEi4R9HmPdBv2XmWJ6YUtoTa7lmCw==} - /typechain@3.0.0(typescript@4.9.5): + /typechain@3.0.0(typescript@5.2.2): resolution: {integrity: sha512-ft4KVmiN3zH4JUFu2WJBrwfHeDf772Tt2d8bssDTo/YcckKW2D+OwFrHXRC6hJvO3mHjFQTihoMV6fJOi0Hngg==} hasBin: true dependencies: @@ -24053,30 +24501,30 @@ packages: fs-extra: 7.0.1 js-sha3: 0.8.0 lodash: 4.17.21 - ts-essentials: 6.0.7(typescript@4.9.5) + ts-essentials: 6.0.7(typescript@5.2.2) ts-generator: 0.1.1 transitivePeerDependencies: - supports-color - typescript dev: true - /typechain@5.2.0(typescript@4.9.5): - resolution: {integrity: sha512-0INirvQ+P+MwJOeMct+WLkUE4zov06QxC96D+i3uGFEHoiSkZN70MKDQsaj8zkL86wQwByJReI2e7fOUwECFuw==} + /typechain@8.3.2(typescript@5.2.2): + resolution: {integrity: sha512-x/sQYr5w9K7yv3es7jo4KTX05CLxOf7TRWwoHlrjRh8H82G64g+k7VuWPJlgMo6qrjfCulOdfBjiaDtmhFYD/Q==} hasBin: true peerDependencies: - typescript: '>=4.1.0' + typescript: '>=4.3.0' dependencies: '@types/prettier': 2.7.3 - command-line-args: 4.0.7 debug: 4.3.4(supports-color@8.1.1) fs-extra: 7.0.1 - glob: 7.2.3 + glob: 7.1.7 js-sha3: 0.8.0 lodash: 4.17.21 mkdirp: 1.0.4 prettier: 2.8.8 - ts-essentials: 7.0.3(typescript@4.9.5) - typescript: 4.9.5 + ts-command-line-args: 2.5.1 + ts-essentials: 7.0.3(typescript@5.2.2) + typescript: 5.2.2 transitivePeerDependencies: - supports-color dev: true @@ -24162,6 +24610,16 @@ packages: resolution: {integrity: sha512-ofhi8kjIje6npGozTip9Fr8iecmYfEbS06i0JnIg+rh51KakryWF4+jX8lLKZVhy6N+ID45WYSFCxPOdTWCzNg==} dev: true + /typical@4.0.0: + resolution: {integrity: sha512-VAH4IvQ7BDFYglMd7BPRDfLgxZZX4O4TFcRDA6EN5X7erNJJq+McIEp8np9aVtxrCJ6qx4GTYVfOWNjcqwZgRw==} + engines: {node: '>=8'} + dev: true + + /typical@5.2.0: + resolution: {integrity: sha512-dvdQgNDNJo+8B2uBQoqdb11eUCE1JQXhvjC/CZtgvZseVd5TYMXnq0+vuUemXbd/Se29cTaUuPX3YIc2xgbvIg==} + engines: {node: '>=8'} + dev: true + /ufo@1.3.0: resolution: {integrity: sha512-bRn3CsoojyNStCZe0BG0Mt4Nr/4KF+rhFlnNXybgqt5pXHNFRlqinSoQaTrGyzE4X8aHplSb+TorH+COin9Yxw==} dev: true @@ -24200,6 +24658,9 @@ packages: dev: true optional: true + /undici-types@5.25.3: + resolution: {integrity: sha512-Ga1jfYwRn7+cP9v8auvEXN1rX3sWqlayd4HP7OKk4mZWylEmu3KzXDUGrQUN6Ol7qo1gPvB2e5gX6udnyEPgdA==} + /undici@5.22.1: resolution: {integrity: sha512-Ji2IJhFXZY0x/0tVBXeQwgPlLWw13GVzpsWPQ3rV50IFMMof2I55PZZxtm4P6iNq+L5znYN9nSTAq0ZyE6lSJw==} engines: {node: '>=14.0'} @@ -24207,11 +24668,15 @@ packages: busboy: 1.6.0 dev: true - /undici@5.23.0: - resolution: {integrity: sha512-1D7w+fvRsqlQ9GscLBwcAJinqcZGHUKjbOmXdlE/v8BvEGXjeWAax+341q44EuTcHXXnfyKNbKRq4Lg7OzhMmg==} + /undici@5.26.3: + resolution: {integrity: sha512-H7n2zmKEWgOllKkIUkLvFmsJQj062lSm3uA4EYApG8gLuiOM0/go9bIoC3HVaSnfg4xunowDE2i9p8drkXuvDw==} engines: {node: '>=14.0'} dependencies: - busboy: 1.6.0 + '@fastify/busboy': 2.0.0 + dev: true + + /unfetch@4.2.0: + resolution: {integrity: sha512-F9p7yYCn6cIW9El1zi0HI6vqpeIvBsr3dSuRO6Xuppb1u5rXpCPmMvLSyECLhybr9isec8Ohl0hPekMVrEinDA==} dev: true /unicode-canonical-property-names-ecmascript@2.0.0: @@ -24433,6 +24898,11 @@ packages: isobject: 3.0.1 dev: true + /untildify@4.0.0: + resolution: {integrity: sha512-KK8xQ1mkzZeg9inewmFVDNkg3l5LUhoq9kN6iWYB/CC9YMG8HA+c1Q8HwDe6dEX7kErrEVNVBO3fWsVq5iDgtw==} + engines: {node: '>=8'} + dev: true + /update-browserslist-db@1.0.11(browserslist@4.21.10): resolution: {integrity: sha512-dCwEFf0/oT85M1fHBg4F0jtLwJrutGoHSQXCh7u4o2t1drG+c0a9Flnqww6XUKSfQMPpJBRjU8d4RXB09qtvaA==} hasBin: true @@ -24564,11 +25034,6 @@ packages: dev: true optional: true - /uuid@2.0.1: - resolution: {integrity: sha512-nWg9+Oa3qD2CQzHIP4qKUqwNfzKn8P0LtFhotaCTFchsV7ZfDhAybeip/HZVeMIpZi9JgY1E3nUlwaCmZT1sEg==} - deprecated: Please upgrade to version 7 or higher. Older versions may use Math.random() in certain circumstances, which is known to be problematic. See https://v8.dev/blog/math-random for details. - dev: true - /uuid@3.3.2: resolution: {integrity: sha512-yXJmeNaw3DnnKAOKJE51sL/ZaYfWJRl1pK9dr19YFCu0ObS231AB1/LbqTKRAQ5kw8A90rA6fr4riOUpTZvQZA==} deprecated: Please upgrade to version 7 or higher. Older versions may use Math.random() in certain circumstances, which is known to be problematic. See https://v8.dev/blog/math-random for details. @@ -24814,7 +25279,7 @@ packages: - utf-8-validate - zod - /vite-node@0.32.2(@types/node@20.8.3): + /vite-node@0.32.2(@types/node@20.8.6): resolution: {integrity: sha512-dTQ1DCLwl2aEseov7cfQ+kDMNJpM1ebpyMMMwWzBvLbis8Nla/6c9WQcqpPssTwS6Rp/+U6KwlIj8Eapw4bLdA==} engines: {node: '>=v14.18.0'} hasBin: true @@ -24824,7 +25289,7 @@ packages: mlly: 1.4.2 pathe: 1.1.1 picocolors: 1.0.0 - vite: 4.4.9(@types/node@20.8.3) + vite: 4.4.9(@types/node@20.8.6) transitivePeerDependencies: - '@types/node' - less @@ -24860,7 +25325,7 @@ packages: debug: 4.3.4(supports-color@8.1.1) globrex: 0.1.2 tsconfck: 2.1.2(typescript@5.1.6) - vite: 4.4.9(@types/node@20.8.3) + vite: 4.4.9(@types/node@20.8.6) transitivePeerDependencies: - supports-color - typescript @@ -24899,7 +25364,7 @@ packages: fsevents: 2.3.3 dev: true - /vite@4.4.9(@types/node@20.8.3): + /vite@4.4.9(@types/node@20.8.6): resolution: {integrity: sha512-2mbUn2LlUmNASWwSCNSJ/EG2HuSRTnVNaydp6vMCm5VIqJsjMfbIWtbH2kDuwUVW5mMUKKZvGPX/rqeqVvv1XA==} engines: {node: ^14.18.0 || >=16.0.0} hasBin: true @@ -24927,7 +25392,7 @@ packages: terser: optional: true dependencies: - '@types/node': 20.8.3 + '@types/node': 20.8.6 esbuild: 0.18.20 postcss: 8.4.27 rollup: 3.29.2 @@ -24943,7 +25408,7 @@ packages: vite: optional: true dependencies: - vite: 4.4.9(@types/node@20.8.3) + vite: 4.4.9(@types/node@20.8.6) dev: true /vitest-fetch-mock@0.2.2(vitest@0.32.2): @@ -24989,9 +25454,9 @@ packages: webdriverio: optional: true dependencies: - '@types/chai': 4.3.6 + '@types/chai': 4.3.8 '@types/chai-subset': 1.3.3 - '@types/node': 20.8.3 + '@types/node': 20.8.6 '@vitest/expect': 0.32.2 '@vitest/runner': 0.32.2 '@vitest/snapshot': 0.32.2 @@ -25000,7 +25465,7 @@ packages: acorn: 8.10.0 acorn-walk: 8.2.0 cac: 6.7.14 - chai: 4.3.8 + chai: 4.3.10 concordance: 5.0.4 debug: 4.3.4(supports-color@8.1.1) jsdom: 22.1.0 @@ -25012,8 +25477,8 @@ packages: strip-literal: 1.3.0 tinybench: 2.5.0 tinypool: 0.5.0 - vite: 4.4.9(@types/node@20.8.3) - vite-node: 0.32.2(@types/node@20.8.3) + vite: 4.4.9(@types/node@20.8.6) + vite-node: 0.32.2(@types/node@20.8.6) why-is-node-running: 2.2.2 transitivePeerDependencies: - less @@ -25037,7 +25502,7 @@ packages: resolution: {integrity: sha512-BXq3jwIagosjgNVae6tkHzzIk6a8MHFtzAdwhnV5VlvPTFxDCvIttgSiHWjdGoTJvXtmRu5HacExfdarRcFhog==} dev: true - /vue-loader@15.10.2(css-loader@6.8.1)(lodash@4.17.21)(prettier@2.8.8)(vue-template-compiler@2.7.14)(webpack@5.88.2): + /vue-loader@15.10.2(css-loader@6.8.1)(prettier@3.0.3)(vue-template-compiler@2.7.14)(webpack@5.89.0): resolution: {integrity: sha512-ndeSe/8KQc/nlA7TJ+OBhv2qalmj1s+uBs7yHDRFaAXscFTApBzY9F1jES3bautmgWjDlDct0fw8rPuySDLwxw==} peerDependencies: '@vue/compiler-sfc': ^3.0.8 @@ -25056,15 +25521,15 @@ packages: vue-template-compiler: optional: true dependencies: - '@vue/component-compiler-utils': 3.3.0(lodash@4.17.21) - css-loader: 6.8.1(webpack@5.88.2) + '@vue/component-compiler-utils': 3.3.0 + css-loader: 6.8.1(webpack@5.89.0) hash-sum: 1.0.2 loader-utils: 1.4.2 - prettier: 2.8.8 + prettier: 3.0.3 vue-hot-reload-api: 2.3.4 vue-style-loader: 4.1.3 vue-template-compiler: 2.7.14 - webpack: 5.88.2 + webpack: 5.89.0 transitivePeerDependencies: - arc-templates - atpl @@ -25620,8 +26085,8 @@ packages: resolution: {integrity: sha512-kyDivFZ7ZM0BVOUteVbDFhlRt7Ah/CSPwJdi8hBpkK7QLumUqdLtVfm/PX/hkcnrvr0i77fO5+TjZ94Pe+C9iw==} dev: true - /webpack@5.88.2: - resolution: {integrity: sha512-JmcgNZ1iKj+aiR0OvTYtWQqJwq37Pf683dY9bVORwVbUrDhLhdn/PlO2sHsFHPkj7sHNQF3JwaAkp49V+Sq1tQ==} + /webpack@5.89.0: + resolution: {integrity: sha512-qyfIC10pOr70V+jkmud8tMfajraGCZMBWJtrmuBymQKCrLTRejBI8STDp1MCyZu/QTdZSeacCQYpYNQVOzX5kw==} engines: {node: '>=10.13.0'} hasBin: true peerDependencies: @@ -25630,8 +26095,8 @@ packages: webpack-cli: optional: true dependencies: - '@types/eslint-scope': 3.7.4 - '@types/estree': 1.0.1 + '@types/eslint-scope': 3.7.5 + '@types/estree': 1.0.2 '@webassemblyjs/ast': 1.11.6 '@webassemblyjs/wasm-edit': 1.11.6 '@webassemblyjs/wasm-parser': 1.11.6 @@ -25640,7 +26105,7 @@ packages: browserslist: 4.22.1 chrome-trace-event: 1.0.3 enhanced-resolve: 5.15.0 - es-module-lexer: 1.3.0 + es-module-lexer: 1.3.1 eslint-scope: 5.1.1 events: 3.3.0 glob-to-regexp: 0.4.1 @@ -25651,7 +26116,7 @@ packages: neo-async: 2.6.2 schema-utils: 3.3.0 tapable: 2.2.1 - terser-webpack-plugin: 5.3.9(webpack@5.88.2) + terser-webpack-plugin: 5.3.9(webpack@5.89.0) watchpack: 2.4.0 webpack-sources: 3.2.3 transitivePeerDependencies: @@ -25845,6 +26310,14 @@ packages: resolution: {integrity: sha512-gvVzJFlPycKc5dZN4yPkP8w7Dc37BtP1yczEneOb4uq34pXZcvrtRTmWV8W+Ume+XCxKgbjM+nevkyFPMybd4Q==} dev: true + /wordwrapjs@4.0.1: + resolution: {integrity: sha512-kKlNACbvHrkpIw6oPeYDSmdCTu2hdMHoyXLTcUKala++lx5Y+wjJ/e474Jqv5abnVmwxw08DiTuHmw69lJGksA==} + engines: {node: '>=8.0.0'} + dependencies: + reduce-flatten: 2.0.0 + typical: 5.2.0 + dev: true + /workerpool@6.2.1: resolution: {integrity: sha512-ILEIE97kDZvF9Wb9f6h5aXK4swSlKGUcOEGiIYb2OOu/IrDU9iwj0fD//SsA6E5ibwJxpEvhullJY4Sl4GcpAw==} dev: true @@ -25882,6 +26355,15 @@ packages: strip-ansi: 6.0.1 dev: true + /wrap-ansi@8.1.0: + resolution: {integrity: sha512-si7QWI6zUMq56bESFvagtmzMdGOtoxfR+Sez11Mobfc7tm+VkUckk9bW2UeffTGVUbOksxmSw0AA2gs8g71NCQ==} + engines: {node: '>=12'} + dependencies: + ansi-styles: 6.2.1 + string-width: 5.1.2 + strip-ansi: 7.1.0 + dev: true + /wrappy@1.0.2: resolution: {integrity: sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==} @@ -26003,6 +26485,19 @@ packages: bufferutil: 4.0.7 utf-8-validate: 5.0.10 + /ws@8.5.0: + resolution: {integrity: sha512-BWX0SWVgLPzYwF8lTzEy1egjhS4S4OEAHfsO8o65WOVsrnSRGaSiUaa9e0ggGlkMTtBlmOpEXiie9RUcBO86qg==} + engines: {node: '>=10.0.0'} + peerDependencies: + bufferutil: ^4.0.1 + utf-8-validate: ^5.0.2 + peerDependenciesMeta: + bufferutil: + optional: true + utf-8-validate: + optional: true + dev: true + /xhr-request-promise@0.1.3: resolution: {integrity: sha512-YUBytBsuwgitWtdRzXDDkWAXzhdGB8bYm0sSzMPZT7Z2MBjMSTHFsyCT1yCRATY+XC69DUrQraRAEgcoCRaIPg==} requiresBuild: true @@ -26055,11 +26550,6 @@ packages: resolution: {integrity: sha512-JZnDKK8B0RCDw84FNdDAIpZK+JuJw+s7Lz8nksI7SIuU3UXJJslUthsi+uWBUYOwPFwW7W7PRLRfUKpxjtjFCw==} dev: true - /xmlhttprequest@1.8.0: - resolution: {integrity: sha512-58Im/U0mlVBLM38NdZjHyhuMtCqa61469k2YP/AaPbvCoV9aQGUpbJBj1QRm2ytRiVQBD/fsw7L2bJGDVQswBA==} - engines: {node: '>=0.4.0'} - dev: true - /xtend@2.1.2: resolution: {integrity: sha512-vMNKzr2rHP9Dp/e1NQFnLQlwlhp9L/LfvnsVdHxN1f+uggyVI3i08uD14GPvCToPkdsRfyPqIyYGmIk58V98ZQ==} engines: {node: '>=0.4'} @@ -26287,7 +26777,7 @@ packages: bn.js: 4.12.0 ethereumjs-util: 6.2.1 - github.com/taikoxyz/solidity-coverage/ceb49fd1f6041e4fcd26079dfb0d3b0f58c812e5(hardhat@2.14.0): + github.com/taikoxyz/solidity-coverage/ceb49fd1f6041e4fcd26079dfb0d3b0f58c812e5(hardhat@2.18.1): resolution: {tarball: https://codeload.github.com/taikoxyz/solidity-coverage/tar.gz/ceb49fd1f6041e4fcd26079dfb0d3b0f58c812e5} id: github.com/taikoxyz/solidity-coverage/ceb49fd1f6041e4fcd26079dfb0d3b0f58c812e5 name: solidity-coverage @@ -26306,7 +26796,7 @@ packages: ghost-testrpc: 0.0.2 global-modules: 2.0.0 globby: 10.0.2 - hardhat: 2.14.0(ts-node@10.9.1)(typescript@4.9.5) + hardhat: 2.18.1(ts-node@10.9.1)(typescript@5.2.2) jsonschema: 1.4.1 lodash: 4.17.21 mocha: 7.1.2 From 6772f94910a2df22afe01dfd93c46398f6d4ce97 Mon Sep 17 00:00:00 2001 From: Daniel Wang <99078276+dantaik@users.noreply.github.com> Date: Mon, 16 Oct 2023 14:22:30 +0800 Subject: [PATCH 54/87] refactor(protocol): address manager cannot be changed, only upgradable (#14966) Co-authored-by: Daniel Wang --- .../contracts/common/AddressManager.sol | 26 +++++------- .../contracts/common/AddressResolver.sol | 6 ++- .../contracts/common/EssentialContract.sol | 9 ---- .../script/upgrade/SetAddressManager.s.sol | 41 ------------------- 4 files changed, 14 insertions(+), 68 deletions(-) delete mode 100644 packages/protocol/script/upgrade/SetAddressManager.s.sol diff --git a/packages/protocol/contracts/common/AddressManager.sol b/packages/protocol/contracts/common/AddressManager.sol index d68a6ec0f4..b9bd49689d 100644 --- a/packages/protocol/contracts/common/AddressManager.sol +++ b/packages/protocol/contracts/common/AddressManager.sol @@ -14,18 +14,9 @@ import { Proxied } from "./Proxied.sol"; /// @notice Specifies methods to manage address mappings for given domain-name /// pairs. interface IAddressManager { - /// @notice Sets the address for a specific domain-name pair. - /// @param domain The domain to which the address will be mapped. - /// @param name The name to which the address will be mapped. - /// @param newAddress The Ethereum address to be mapped. - function setAddress( - uint256 domain, - bytes32 name, - address newAddress - ) - external; - /// @notice Gets the address mapped to a specific domain-name pair. + /// @dev Note that in production, this method shall be a pure function + /// without any storage access. /// @param domain The domain for which the address needs to be fetched. /// @param name The name for which the address needs to be fetched. /// @return Address associated with the domain-name pair. @@ -50,14 +41,17 @@ contract AddressManager is OwnableUpgradeable, IAddressManager { address oldAddress ); - error EOA_OWNER_NOT_ALLOWED(); + error AM_INVALID_ADDRESS(); /// @notice Initializes the owner for the upgradable contract. function init() external initializer { OwnableUpgradeable.__Ownable_init(); } - /// @inheritdoc IAddressManager + /// @notice Sets the address for a specific domain-name pair. + /// @param domain The domain to which the address will be mapped. + /// @param name The name to which the address will be mapped. + /// @param newAddress The Ethereum address to be mapped. function setAddress( uint256 domain, bytes32 name, @@ -68,7 +62,7 @@ contract AddressManager is OwnableUpgradeable, IAddressManager { onlyOwner { if (newAddress.code.length == 0 && newAddress == msg.sender) { - revert EOA_OWNER_NOT_ALLOWED(); + revert AM_INVALID_ADDRESS(); } address oldAddress = addresses[domain][name]; @@ -81,9 +75,9 @@ contract AddressManager is OwnableUpgradeable, IAddressManager { uint256 domain, bytes32 name ) - external + public view - virtual + override returns (address) { return addresses[domain][name]; diff --git a/packages/protocol/contracts/common/AddressResolver.sol b/packages/protocol/contracts/common/AddressResolver.sol index d58343de74..1be57c51b6 100644 --- a/packages/protocol/contracts/common/AddressResolver.sol +++ b/packages/protocol/contracts/common/AddressResolver.sol @@ -13,13 +13,15 @@ import { IAddressManager } from "./AddressManager.sol"; /// It delegates the resolution to the AddressManager. By separating the logic, /// we can maintain flexibility in address management without affecting the /// resolving process. +/// +/// Note that the address manager should be changed using upgradability, there +/// is no setAddressManager() function go guarantee atomicness across all +/// contracts that are resolvers. abstract contract AddressResolver { IAddressManager internal _addressManager; uint256[49] private __gap; - event AddressManagerChanged(address indexed addressManager); - error RESOLVER_DENIED(); error RESOLVER_INVALID_ADDR(); error RESOLVER_ZERO_ADDR(uint256 chainId, bytes32 name); diff --git a/packages/protocol/contracts/common/EssentialContract.sol b/packages/protocol/contracts/common/EssentialContract.sol index 6a1ed583fd..ba9d6df93b 100644 --- a/packages/protocol/contracts/common/EssentialContract.sol +++ b/packages/protocol/contracts/common/EssentialContract.sol @@ -11,7 +11,6 @@ import { ReentrancyGuardUpgradeable } from "@ozu/security/ReentrancyGuardUpgradeable.sol"; import { AddressResolver } from "./AddressResolver.sol"; -import { IAddressManager } from "./AddressManager.sol"; /// @title EssentialContract /// @notice This contract serves as the base contract for many core components. @@ -20,14 +19,6 @@ abstract contract EssentialContract is OwnableUpgradeable, AddressResolver { - /// @notice Sets a new address manager. - /// @param newAddressManager Address of the new address manager. - function setAddressManager(address newAddressManager) external onlyOwner { - if (newAddressManager == address(0)) revert RESOLVER_INVALID_ADDR(); - _addressManager = IAddressManager(newAddressManager); - emit AddressManagerChanged(newAddressManager); - } - /// @notice Initializes the contract with an address manager. /// @param _addressManager The address of the address manager. function _init(address _addressManager) internal virtual override { diff --git a/packages/protocol/script/upgrade/SetAddressManager.s.sol b/packages/protocol/script/upgrade/SetAddressManager.s.sol deleted file mode 100644 index 1c0fa7c073..0000000000 --- a/packages/protocol/script/upgrade/SetAddressManager.s.sol +++ /dev/null @@ -1,41 +0,0 @@ -// SPDX-License-Identifier: MIT -// _____ _ _ _ _ -// |_ _|_ _(_) |_____ | | __ _| |__ ___ -// | |/ _` | | / / _ \ | |__/ _` | '_ (_-< -// |_|\__,_|_|_\_\___/ |____\__,_|_.__/__/ - -pragma solidity ^0.8.20; - -import "forge-std/Script.sol"; -import "forge-std/console2.sol"; -import "./UpgradeScript.s.sol"; - -interface IEssentialContract { - function setAddressManager(address newAddressManager) external; -} -/// @notice Each contract (which inherits EssentialContract) is having a -/// setAddressManager() setter. In such case AddressManager needs to get -/// changed, we need a quick way to update it. -/// -/// Invokaction example: -/// forge script SetAddressManager --sig "run(address,address)"

      -///
      - -contract SetAddressManager is UpgradeScript { - function run( - address essentialContract, - address newAddressManager - ) - external - setUp - { - IEssentialContract(essentialContract).setAddressManager( - newAddressManager - ); - console2.log( - essentialContract, - " contract set a new AddressManagerAddress:", - address(newAddressManager) - ); - } -} From 22c4a5a02bfad4ca31fd4236adbe09681afa2de7 Mon Sep 17 00:00:00 2001 From: D <51912515+adaki2004@users.noreply.github.com> Date: Mon, 16 Oct 2023 18:05:37 +0200 Subject: [PATCH 55/87] fix(protocol): Revert long imports (hardhat seems issues parsing remappings) (#14971) Co-authored-by: David --- packages/protocol/.gitignore | 3 +- packages/protocol/contracts/L1/TaikoToken.sol | 14 +- .../contracts/L1/libs/LibProposing.sol | 3 +- .../contracts/common/AddressManager.sol | 3 +- .../contracts/common/EssentialContract.sol | 5 +- .../contracts/common/IMintableERC20.sol | 3 +- .../protocol/contracts/common/Proxied.sol | 3 +- .../protocol/contracts/libs/LibAddress.sol | 11 +- .../contracts/test/erc20/FreeMintERC20.sol | 3 +- .../test/erc20/MayFailFreeMintERC20.sol | 3 +- .../contracts/test/erc20/RegularERC20.sol | 3 +- .../contracts/tokenvault/BridgedERC1155.sol | 11 +- .../contracts/tokenvault/BridgedERC20.sol | 8 +- .../contracts/tokenvault/BridgedERC721.sol | 6 +- .../contracts/tokenvault/ERC1155Vault.sol | 9 +- .../contracts/tokenvault/ERC20Vault.sol | 10 +- .../contracts/tokenvault/ERC721Vault.sol | 10 +- .../tokenvault/libs/LibVaultUtils.sol | 2 +- .../protocol/genesis/GenerateGenesis.g.sol | 2 +- packages/protocol/package.json | 4 +- packages/protocol/remappings.txt | 4 +- packages/protocol/script/DeployOnL1.s.sol | 5 +- .../script/upgrade/UpgradeScript.s.sol | 3 +- packages/protocol/test/L1/TaikoL1TestBase.sol | 2 +- packages/protocol/test/L1/TaikoToken.t.sol | 2 +- packages/protocol/test/L2/TaikoL2.t.sol | 5 +- .../test/tokenvault/ERC1155Vault.t.sol | 5 +- .../protocol/test/tokenvault/ERC20Vault.t.sol | 2 +- .../test/tokenvault/ERC721Vault.t.sol | 5 +- pnpm-lock.yaml | 3154 +++++++---------- 30 files changed, 1293 insertions(+), 2010 deletions(-) diff --git a/packages/protocol/.gitignore b/packages/protocol/.gitignore index 968e3fd962..c99ed87a51 100644 --- a/packages/protocol/.gitignore +++ b/packages/protocol/.gitignore @@ -13,6 +13,7 @@ yarn-debug.log* yarn-error.log* package-lock.json npm-debug.log* +typechain-types # Hardhat files cache @@ -29,4 +30,4 @@ broadcast .vscode #coverage -lcov.info \ No newline at end of file +lcov.info diff --git a/packages/protocol/contracts/L1/TaikoToken.sol b/packages/protocol/contracts/L1/TaikoToken.sol index 9d8bbde5a4..2841d47c1a 100644 --- a/packages/protocol/contracts/L1/TaikoToken.sol +++ b/packages/protocol/contracts/L1/TaikoToken.sol @@ -7,18 +7,20 @@ pragma solidity ^0.8.20; import { ERC20BurnableUpgradeable } from - "@ozu/token/ERC20/extensions/ERC20BurnableUpgradeable.sol"; + "lib/openzeppelin-contracts-upgradeable/contracts/token/ERC20/extensions/ERC20BurnableUpgradeable.sol"; import { ERC20PermitUpgradeable } from - "@ozu/token/ERC20/extensions/draft-ERC20PermitUpgradeable.sol"; + "lib/openzeppelin-contracts-upgradeable/contracts/token/ERC20/extensions/draft-ERC20PermitUpgradeable.sol"; import { ERC20SnapshotUpgradeable } from - "@ozu/token/ERC20/extensions/ERC20SnapshotUpgradeable.sol"; + "lib/openzeppelin-contracts-upgradeable/contracts/token/ERC20/extensions/ERC20SnapshotUpgradeable.sol"; import { ERC20Upgradeable, IERC20Upgradeable -} from "@ozu/token/ERC20/ERC20Upgradeable.sol"; +} from + "lib/openzeppelin-contracts-upgradeable/contracts/token/ERC20/ERC20Upgradeable.sol"; import { ERC20VotesUpgradeable } from - "@ozu/token/ERC20/extensions/ERC20VotesUpgradeable.sol"; -import { PausableUpgradeable } from "@ozu/security/PausableUpgradeable.sol"; + "lib/openzeppelin-contracts-upgradeable/contracts/token/ERC20/extensions/ERC20VotesUpgradeable.sol"; +import { PausableUpgradeable } from + "lib/openzeppelin-contracts-upgradeable/contracts/security/PausableUpgradeable.sol"; import { EssentialContract } from "../common/EssentialContract.sol"; import { IMintableERC20 } from "../common/IMintableERC20.sol"; diff --git a/packages/protocol/contracts/L1/libs/LibProposing.sol b/packages/protocol/contracts/L1/libs/LibProposing.sol index d085227cf9..d7a4d4b47b 100644 --- a/packages/protocol/contracts/L1/libs/LibProposing.sol +++ b/packages/protocol/contracts/L1/libs/LibProposing.sol @@ -6,7 +6,8 @@ pragma solidity ^0.8.20; -import { ERC20Upgradeable } from "@ozu/token/ERC20/ERC20Upgradeable.sol"; +import { ERC20Upgradeable } from + "lib/openzeppelin-contracts-upgradeable/contracts/token/ERC20/ERC20Upgradeable.sol"; import { AddressResolver } from "../../common/AddressResolver.sol"; import { LibAddress } from "../../libs/LibAddress.sol"; diff --git a/packages/protocol/contracts/common/AddressManager.sol b/packages/protocol/contracts/common/AddressManager.sol index b9bd49689d..cab24d5eae 100644 --- a/packages/protocol/contracts/common/AddressManager.sol +++ b/packages/protocol/contracts/common/AddressManager.sol @@ -6,7 +6,8 @@ pragma solidity ^0.8.20; -import { OwnableUpgradeable } from "@ozu/access/OwnableUpgradeable.sol"; +import { OwnableUpgradeable } from + "lib/openzeppelin-contracts-upgradeable/contracts/access/OwnableUpgradeable.sol"; import { Proxied } from "./Proxied.sol"; diff --git a/packages/protocol/contracts/common/EssentialContract.sol b/packages/protocol/contracts/common/EssentialContract.sol index ba9d6df93b..7ed61dc13e 100644 --- a/packages/protocol/contracts/common/EssentialContract.sol +++ b/packages/protocol/contracts/common/EssentialContract.sol @@ -6,9 +6,10 @@ pragma solidity ^0.8.20; -import { OwnableUpgradeable } from "@ozu/access/OwnableUpgradeable.sol"; +import { OwnableUpgradeable } from + "lib/openzeppelin-contracts-upgradeable/contracts/access/OwnableUpgradeable.sol"; import { ReentrancyGuardUpgradeable } from - "@ozu/security/ReentrancyGuardUpgradeable.sol"; + "lib/openzeppelin-contracts-upgradeable/contracts/security/ReentrancyGuardUpgradeable.sol"; import { AddressResolver } from "./AddressResolver.sol"; diff --git a/packages/protocol/contracts/common/IMintableERC20.sol b/packages/protocol/contracts/common/IMintableERC20.sol index 82994b0311..d2d9327408 100644 --- a/packages/protocol/contracts/common/IMintableERC20.sol +++ b/packages/protocol/contracts/common/IMintableERC20.sol @@ -6,7 +6,8 @@ pragma solidity ^0.8.20; -import { IERC20Upgradeable } from "@ozu/token/ERC20/IERC20Upgradeable.sol"; +import { IERC20Upgradeable } from + "lib/openzeppelin-contracts-upgradeable/contracts/token/ERC20/IERC20Upgradeable.sol"; /// @title IMintableERC20 /// @notice Interface for ERC20 tokens with mint and burn functionality. diff --git a/packages/protocol/contracts/common/Proxied.sol b/packages/protocol/contracts/common/Proxied.sol index 02f15819d9..68d7a9caeb 100644 --- a/packages/protocol/contracts/common/Proxied.sol +++ b/packages/protocol/contracts/common/Proxied.sol @@ -6,7 +6,8 @@ pragma solidity ^0.8.20; -import { Initializable } from "@ozu/proxy/utils/Initializable.sol"; +import { Initializable } from + "lib/openzeppelin-contracts-upgradeable/contracts/proxy/utils/Initializable.sol"; /// @title Proxied /// @dev This abstract contract extends Initializable from OpenZeppelin's diff --git a/packages/protocol/contracts/libs/LibAddress.sol b/packages/protocol/contracts/libs/LibAddress.sol index d072303dfb..688c2c426e 100644 --- a/packages/protocol/contracts/libs/LibAddress.sol +++ b/packages/protocol/contracts/libs/LibAddress.sol @@ -6,11 +6,14 @@ pragma solidity ^0.8.20; -import { AddressUpgradeable } from "@ozu/utils/AddressUpgradeable.sol"; -import { ECDSAUpgradeable } from "@ozu/utils/cryptography/ECDSAUpgradeable.sol"; +import { AddressUpgradeable } from + "lib/openzeppelin-contracts-upgradeable/contracts/utils/AddressUpgradeable.sol"; +import { ECDSAUpgradeable } from + "lib/openzeppelin-contracts-upgradeable/contracts/utils/cryptography/ECDSAUpgradeable.sol"; import { IERC165Upgradeable } from - "@ozu/utils/introspection/IERC165Upgradeable.sol"; -import { IERC1271Upgradeable } from "@ozu/interfaces/IERC1271Upgradeable.sol"; + "lib/openzeppelin-contracts-upgradeable/contracts/utils/introspection/IERC165Upgradeable.sol"; +import { IERC1271Upgradeable } from + "lib/openzeppelin-contracts-upgradeable/contracts/interfaces/IERC1271Upgradeable.sol"; /// @title LibAddress /// @dev Provides utilities for address-related operations. diff --git a/packages/protocol/contracts/test/erc20/FreeMintERC20.sol b/packages/protocol/contracts/test/erc20/FreeMintERC20.sol index 8f4a63f558..9c4adf75ee 100644 --- a/packages/protocol/contracts/test/erc20/FreeMintERC20.sol +++ b/packages/protocol/contracts/test/erc20/FreeMintERC20.sol @@ -6,7 +6,8 @@ pragma solidity ^0.8.20; -import { ERC20 } from "@oz/token/ERC20/ERC20.sol"; +import { ERC20 } from + "lib/openzeppelin-contracts/contracts/token/ERC20/ERC20.sol"; // An ERC20 Token with a mint function anyone can call, for free, to receive // 5 tokens. diff --git a/packages/protocol/contracts/test/erc20/MayFailFreeMintERC20.sol b/packages/protocol/contracts/test/erc20/MayFailFreeMintERC20.sol index c33e5695ce..103d3ae21d 100644 --- a/packages/protocol/contracts/test/erc20/MayFailFreeMintERC20.sol +++ b/packages/protocol/contracts/test/erc20/MayFailFreeMintERC20.sol @@ -6,7 +6,8 @@ pragma solidity ^0.8.20; -import { ERC20 } from "@oz/token/ERC20/ERC20.sol"; +import { ERC20 } from + "lib/openzeppelin-contracts/contracts/token/ERC20/ERC20.sol"; // An ERC20 token for testing the Taiko Bridge on testnets. // This token has 50% of failure on transfers so we can diff --git a/packages/protocol/contracts/test/erc20/RegularERC20.sol b/packages/protocol/contracts/test/erc20/RegularERC20.sol index e0d2b73e85..588e6fe92c 100644 --- a/packages/protocol/contracts/test/erc20/RegularERC20.sol +++ b/packages/protocol/contracts/test/erc20/RegularERC20.sol @@ -2,7 +2,8 @@ pragma solidity ^0.8.20; -import { ERC20 } from "@oz/token/ERC20/ERC20.sol"; +import { ERC20 } from + "lib/openzeppelin-contracts/contracts/token/ERC20/ERC20.sol"; contract RegularERC20 is ERC20 { constructor(uint256 initialSupply) ERC20("RegularERC20", "RGL") { diff --git a/packages/protocol/contracts/tokenvault/BridgedERC1155.sol b/packages/protocol/contracts/tokenvault/BridgedERC1155.sol index ec270855c1..ce24db306c 100644 --- a/packages/protocol/contracts/tokenvault/BridgedERC1155.sol +++ b/packages/protocol/contracts/tokenvault/BridgedERC1155.sol @@ -6,11 +6,14 @@ pragma solidity ^0.8.20; -import { ERC1155Upgradeable } from "@ozu/token/ERC1155/ERC1155Upgradeable.sol"; +import { ERC1155Upgradeable } from + "lib/openzeppelin-contracts-upgradeable/contracts/token/ERC1155/ERC1155Upgradeable.sol"; import { IERC1155MetadataURIUpgradeable } from - "@ozu/token/ERC1155/extensions/IERC1155MetadataURIUpgradeable.sol"; -import { IERC1155Upgradeable } from "@ozu/token/ERC1155/IERC1155Upgradeable.sol"; -import { StringsUpgradeable } from "@ozu/utils/StringsUpgradeable.sol"; + "lib/openzeppelin-contracts-upgradeable/contracts/token/ERC1155/extensions/IERC1155MetadataURIUpgradeable.sol"; +import { IERC1155Upgradeable } from + "lib/openzeppelin-contracts-upgradeable/contracts/token/ERC1155/IERC1155Upgradeable.sol"; +import { StringsUpgradeable } from + "lib/openzeppelin-contracts-upgradeable/contracts/utils/StringsUpgradeable.sol"; import { EssentialContract } from "../common/EssentialContract.sol"; import { Proxied } from "../common/Proxied.sol"; diff --git a/packages/protocol/contracts/tokenvault/BridgedERC20.sol b/packages/protocol/contracts/tokenvault/BridgedERC20.sol index 8962269162..98a467f63c 100644 --- a/packages/protocol/contracts/tokenvault/BridgedERC20.sol +++ b/packages/protocol/contracts/tokenvault/BridgedERC20.sol @@ -9,10 +9,12 @@ pragma solidity ^0.8.20; import { ERC20Upgradeable, IERC20Upgradeable -} from "@ozu/token/ERC20/ERC20Upgradeable.sol"; +} from + "lib/openzeppelin-contracts-upgradeable/contracts/token/ERC20/ERC20Upgradeable.sol"; import { IERC20MetadataUpgradeable } from - "@ozu/token/ERC20/extensions/IERC20MetadataUpgradeable.sol"; -import { StringsUpgradeable } from "@ozu/utils/StringsUpgradeable.sol"; + "lib/openzeppelin-contracts-upgradeable/contracts/token/ERC20/extensions/IERC20MetadataUpgradeable.sol"; +import { StringsUpgradeable } from + "lib/openzeppelin-contracts-upgradeable/contracts/utils/StringsUpgradeable.sol"; import { EssentialContract } from "../common/EssentialContract.sol"; import { IMintableERC20 } from "../common/IMintableERC20.sol"; diff --git a/packages/protocol/contracts/tokenvault/BridgedERC721.sol b/packages/protocol/contracts/tokenvault/BridgedERC721.sol index 4f0e75063c..1b638d21b3 100644 --- a/packages/protocol/contracts/tokenvault/BridgedERC721.sol +++ b/packages/protocol/contracts/tokenvault/BridgedERC721.sol @@ -6,8 +6,10 @@ pragma solidity ^0.8.20; -import { ERC721Upgradeable } from "@ozu/token/ERC721/ERC721Upgradeable.sol"; -import { StringsUpgradeable } from "@ozu/utils/StringsUpgradeable.sol"; +import { ERC721Upgradeable } from + "lib/openzeppelin-contracts-upgradeable/contracts/token/ERC721/ERC721Upgradeable.sol"; +import { StringsUpgradeable } from + "lib/openzeppelin-contracts-upgradeable/contracts/utils/StringsUpgradeable.sol"; import { EssentialContract } from "../common/EssentialContract.sol"; import { Proxied } from "../common/Proxied.sol"; diff --git a/packages/protocol/contracts/tokenvault/ERC1155Vault.sol b/packages/protocol/contracts/tokenvault/ERC1155Vault.sol index 69a1a3206d..787033719a 100644 --- a/packages/protocol/contracts/tokenvault/ERC1155Vault.sol +++ b/packages/protocol/contracts/tokenvault/ERC1155Vault.sol @@ -6,15 +6,18 @@ pragma solidity ^0.8.20; -import { Create2Upgradeable } from "@ozu/utils/Create2Upgradeable.sol"; +import { Create2Upgradeable } from + "lib/openzeppelin-contracts-upgradeable/contracts/utils/Create2Upgradeable.sol"; import { ERC1155ReceiverUpgradeable, IERC1155ReceiverUpgradeable -} from "@ozu/token/ERC1155/utils/ERC1155ReceiverUpgradeable.sol"; +} from + "lib/openzeppelin-contracts-upgradeable/contracts/token/ERC1155/utils/ERC1155ReceiverUpgradeable.sol"; import { ERC1155Upgradeable, IERC1155Upgradeable -} from "@ozu/token/ERC1155/ERC1155Upgradeable.sol"; +} from + "lib/openzeppelin-contracts-upgradeable/contracts/token/ERC1155/ERC1155Upgradeable.sol"; import { Proxied } from "../common/Proxied.sol"; import { IRecallableMessageSender, IBridge } from "../bridge/IBridge.sol"; diff --git a/packages/protocol/contracts/tokenvault/ERC20Vault.sol b/packages/protocol/contracts/tokenvault/ERC20Vault.sol index 06b6f8de25..91175c8d8f 100644 --- a/packages/protocol/contracts/tokenvault/ERC20Vault.sol +++ b/packages/protocol/contracts/tokenvault/ERC20Vault.sol @@ -6,12 +6,14 @@ pragma solidity ^0.8.20; -import { Create2Upgradeable } from "@ozu/utils/Create2Upgradeable.sol"; -import { ERC20Upgradeable } from "@ozu/token/ERC20/ERC20Upgradeable.sol"; +import { Create2Upgradeable } from + "lib/openzeppelin-contracts-upgradeable/contracts/utils/Create2Upgradeable.sol"; +import { ERC20Upgradeable } from + "lib/openzeppelin-contracts-upgradeable/contracts/token/ERC20/ERC20Upgradeable.sol"; import { SafeERC20Upgradeable } from - "@ozu/token/ERC20/utils/SafeERC20Upgradeable.sol"; + "lib/openzeppelin-contracts-upgradeable/contracts/token/ERC20/utils/SafeERC20Upgradeable.sol"; import { IERC165Upgradeable } from - "@ozu/utils/introspection/IERC165Upgradeable.sol"; + "lib/openzeppelin-contracts-upgradeable/contracts/utils/introspection/IERC165Upgradeable.sol"; import { EssentialContract } from "../common/EssentialContract.sol"; import { IMintableERC20 } from "../common/IMintableERC20.sol"; diff --git a/packages/protocol/contracts/tokenvault/ERC721Vault.sol b/packages/protocol/contracts/tokenvault/ERC721Vault.sol index 210d4089f2..535605ec2b 100644 --- a/packages/protocol/contracts/tokenvault/ERC721Vault.sol +++ b/packages/protocol/contracts/tokenvault/ERC721Vault.sol @@ -6,15 +6,17 @@ pragma solidity ^0.8.20; -import { Create2Upgradeable } from "@ozu/utils/Create2Upgradeable.sol"; +import { Create2Upgradeable } from + "lib/openzeppelin-contracts-upgradeable/contracts/utils/Create2Upgradeable.sol"; import { ERC721Upgradeable, IERC721Upgradeable -} from "@ozu/token/ERC721/ERC721Upgradeable.sol"; +} from + "lib/openzeppelin-contracts-upgradeable/contracts/token/ERC721/ERC721Upgradeable.sol"; import { IERC165Upgradeable } from - "@ozu/utils/introspection/IERC165Upgradeable.sol"; + "lib/openzeppelin-contracts-upgradeable/contracts/utils/introspection/IERC165Upgradeable.sol"; import { IERC721ReceiverUpgradeable } from - "@ozu/token/ERC721/IERC721ReceiverUpgradeable.sol"; + "lib/openzeppelin-contracts-upgradeable/contracts/token/ERC721/IERC721ReceiverUpgradeable.sol"; import { IBridge, IRecallableMessageSender } from "../bridge/IBridge.sol"; import { LibAddress } from "../libs/LibAddress.sol"; diff --git a/packages/protocol/contracts/tokenvault/libs/LibVaultUtils.sol b/packages/protocol/contracts/tokenvault/libs/LibVaultUtils.sol index 631e99ea54..32cc70fb39 100644 --- a/packages/protocol/contracts/tokenvault/libs/LibVaultUtils.sol +++ b/packages/protocol/contracts/tokenvault/libs/LibVaultUtils.sol @@ -7,7 +7,7 @@ pragma solidity ^0.8.20; import { TransparentUpgradeableProxy } from - "@oz/proxy/transparent/TransparentUpgradeableProxy.sol"; + "lib/openzeppelin-contracts/contracts/proxy/transparent/TransparentUpgradeableProxy.sol"; import { AddressResolver } from "../../common/AddressResolver.sol"; import { IBridge } from "../../bridge/IBridge.sol"; diff --git a/packages/protocol/genesis/GenerateGenesis.g.sol b/packages/protocol/genesis/GenerateGenesis.g.sol index 2d0d53190e..148607bc5b 100644 --- a/packages/protocol/genesis/GenerateGenesis.g.sol +++ b/packages/protocol/genesis/GenerateGenesis.g.sol @@ -5,7 +5,7 @@ import { console2 } from "forge-std/console2.sol"; import { stdJson } from "forge-std/StdJson.sol"; import { Test } from "forge-std/Test.sol"; -import { TransparentUpgradeableProxy } from "@oz/proxy/transparent/TransparentUpgradeableProxy.sol"; +import { TransparentUpgradeableProxy } from "lib/openzeppelin-contracts/contracts/proxy/transparent/TransparentUpgradeableProxy.sol"; import { AddressManager } from "../contracts/common/AddressManager.sol"; import { AddressResolver } from "../contracts/common/AddressResolver.sol"; diff --git a/packages/protocol/package.json b/packages/protocol/package.json index 1ac38abae3..f719674e98 100644 --- a/packages/protocol/package.json +++ b/packages/protocol/package.json @@ -35,7 +35,7 @@ "author": "Taiko Labs", "license": "MIT", "devDependencies": { - "@defi-wonderland/smock": "^2.3.5", + "@defi-wonderland/smock": "^2.3.4", "@foundry-rs/hardhat-forge": "^0.1.17", "@nomicfoundation/hardhat-foundry": "^1.1.1", "@nomicfoundation/hardhat-network-helpers": "^1.0.9", @@ -61,7 +61,7 @@ "eslint-plugin-node": "^11.1.0", "eslint-plugin-prettier": "^5.0.1", "eslint-plugin-promise": "^6.1.1", - "ethers": "^6.8.0", + "ethers": "^5.7.2", "glob": "^10.3.10", "hardhat": "^2.18.1", "hardhat-abi-exporter": "^2.10.1", diff --git a/packages/protocol/remappings.txt b/packages/protocol/remappings.txt index 73df5859ac..882d4bda9b 100644 --- a/packages/protocol/remappings.txt +++ b/packages/protocol/remappings.txt @@ -1,5 +1,3 @@ forge-std/=lib/forge-std/src/ solmate/=lib/solmate/src/ -ds-test/=lib/forge-std/lib/ds-test/src/ -@oz/=lib/openzeppelin-contracts/contracts/ -@ozu/=lib/openzeppelin-contracts-upgradeable/contracts/ +ds-test/=lib/forge-std/lib/ds-test/src/ \ No newline at end of file diff --git a/packages/protocol/script/DeployOnL1.s.sol b/packages/protocol/script/DeployOnL1.s.sol index 65a5b545c0..22e1bad756 100644 --- a/packages/protocol/script/DeployOnL1.s.sol +++ b/packages/protocol/script/DeployOnL1.s.sol @@ -8,8 +8,9 @@ pragma solidity ^0.8.20; import "forge-std/Script.sol"; import "forge-std/console2.sol"; -import "@oz/proxy/transparent/TransparentUpgradeableProxy.sol"; -import "@oz/utils/Strings.sol"; +import + "lib/openzeppelin-contracts/contracts/proxy/transparent/TransparentUpgradeableProxy.sol"; +import "lib/openzeppelin-contracts/contracts/utils/Strings.sol"; import "../contracts/L1/TaikoToken.sol"; import "../contracts/L1/TaikoL1.sol"; import "../contracts/L1/verifiers/PseZkVerifier.sol"; diff --git a/packages/protocol/script/upgrade/UpgradeScript.s.sol b/packages/protocol/script/upgrade/UpgradeScript.s.sol index b59057ee79..4b6275e19e 100644 --- a/packages/protocol/script/upgrade/UpgradeScript.s.sol +++ b/packages/protocol/script/upgrade/UpgradeScript.s.sol @@ -8,7 +8,8 @@ pragma solidity ^0.8.20; import "forge-std/Script.sol"; import "forge-std/console2.sol"; -import "@oz/proxy/transparent/TransparentUpgradeableProxy.sol"; +import + "lib/openzeppelin-contracts/contracts/proxy/transparent/TransparentUpgradeableProxy.sol"; contract UpgradeScript is Script { uint256 public deployerPrivateKey = vm.envUint("PRIVATE_KEY"); diff --git a/packages/protocol/test/L1/TaikoL1TestBase.sol b/packages/protocol/test/L1/TaikoL1TestBase.sol index 1886a8d523..29dae095a0 100644 --- a/packages/protocol/test/L1/TaikoL1TestBase.sol +++ b/packages/protocol/test/L1/TaikoL1TestBase.sol @@ -17,7 +17,7 @@ import { OptimisticRollupConfigProvider } from import { PseZkVerifier } from "../../contracts/L1/verifiers/PseZkVerifier.sol"; import { SignalService } from "../../contracts/signal/SignalService.sol"; import { StringsUpgradeable as Strings } from - "@ozu/utils/StringsUpgradeable.sol"; + "lib/openzeppelin-contracts-upgradeable/contracts/utils/StringsUpgradeable.sol"; import { AddressResolver } from "../../contracts/common/AddressResolver.sol"; import { LibTiers } from "../../contracts/L1/tiers/ITierProvider.sol"; diff --git a/packages/protocol/test/L1/TaikoToken.t.sol b/packages/protocol/test/L1/TaikoToken.t.sol index f44b44230c..a167ffe8da 100644 --- a/packages/protocol/test/L1/TaikoToken.t.sol +++ b/packages/protocol/test/L1/TaikoToken.t.sol @@ -6,7 +6,7 @@ import { AddressManager } from "../../contracts/common/AddressManager.sol"; import { AddressResolver } from "../../contracts/common/AddressResolver.sol"; import { TaikoToken } from "../../contracts/L1/TaikoToken.sol"; import { TransparentUpgradeableProxy } from - "@oz/proxy/transparent/TransparentUpgradeableProxy.sol"; + "lib/openzeppelin-contracts/contracts/proxy/transparent/TransparentUpgradeableProxy.sol"; contract TaikoTokenTest is TestBase { bytes32 GENESIS_BLOCK_HASH; diff --git a/packages/protocol/test/L2/TaikoL2.t.sol b/packages/protocol/test/L2/TaikoL2.t.sol index c2c555d8d3..c766248683 100644 --- a/packages/protocol/test/L2/TaikoL2.t.sol +++ b/packages/protocol/test/L2/TaikoL2.t.sol @@ -2,8 +2,9 @@ pragma solidity ^0.8.20; import { console2 } from "forge-std/console2.sol"; -import { Strings } from "@oz/utils/Strings.sol"; -import { SafeCastUpgradeable } from "@ozu/utils/math/SafeCastUpgradeable.sol"; +import { Strings } from "lib/openzeppelin-contracts/contracts/utils/Strings.sol"; +import { SafeCastUpgradeable } from + "lib/openzeppelin-contracts-upgradeable/contracts/utils/math/SafeCastUpgradeable.sol"; import { TestBase } from "../TestBase.sol"; import { TaikoL2 } from "../../contracts/L2/TaikoL2.sol"; diff --git a/packages/protocol/test/tokenvault/ERC1155Vault.t.sol b/packages/protocol/test/tokenvault/ERC1155Vault.t.sol index 52c5b870f4..bc62ff099a 100644 --- a/packages/protocol/test/tokenvault/ERC1155Vault.t.sol +++ b/packages/protocol/test/tokenvault/ERC1155Vault.t.sol @@ -22,9 +22,10 @@ import { LibBridgeStatus } from "../../contracts/bridge/libs/LibBridgeStatus.sol"; import { SignalService } from "../../contracts/signal/SignalService.sol"; import { ICrossChainSync } from "../../contracts/common/ICrossChainSync.sol"; -import { ERC1155 } from "@oz/token/ERC1155/ERC1155.sol"; +import { ERC1155 } from + "lib/openzeppelin-contracts/contracts/token/ERC1155/ERC1155.sol"; import { TransparentUpgradeableProxy } from - "@oz/proxy/transparent/TransparentUpgradeableProxy.sol"; + "lib/openzeppelin-contracts/contracts/proxy/transparent/TransparentUpgradeableProxy.sol"; contract TestTokenERC1155 is ERC1155 { constructor(string memory baseURI) ERC1155(baseURI) { } diff --git a/packages/protocol/test/tokenvault/ERC20Vault.t.sol b/packages/protocol/test/tokenvault/ERC20Vault.t.sol index 08bd45eaa5..ae552d725c 100644 --- a/packages/protocol/test/tokenvault/ERC20Vault.t.sol +++ b/packages/protocol/test/tokenvault/ERC20Vault.t.sol @@ -12,7 +12,7 @@ import { TaikoToken } from "../../contracts/L1/TaikoToken.sol"; import { Test } from "forge-std/Test.sol"; import { ERC20Vault } from "../../contracts/tokenvault/ERC20Vault.sol"; import { TransparentUpgradeableProxy } from - "@oz/proxy/transparent/TransparentUpgradeableProxy.sol"; + "lib/openzeppelin-contracts/contracts/proxy/transparent/TransparentUpgradeableProxy.sol"; // PrankDestBridge lets us simulate a transaction to the ERC20Vault // from a named Bridge, without having to test/run through the real Bridge code, diff --git a/packages/protocol/test/tokenvault/ERC721Vault.t.sol b/packages/protocol/test/tokenvault/ERC721Vault.t.sol index 0545351684..0192b7793c 100644 --- a/packages/protocol/test/tokenvault/ERC721Vault.t.sol +++ b/packages/protocol/test/tokenvault/ERC721Vault.t.sol @@ -21,9 +21,10 @@ import { LibBridgeStatus } from "../../contracts/bridge/libs/LibBridgeStatus.sol"; import { SignalService } from "../../contracts/signal/SignalService.sol"; import { ICrossChainSync } from "../../contracts/common/ICrossChainSync.sol"; -import { ERC721 } from "@oz/token/ERC721/ERC721.sol"; +import { ERC721 } from + "lib/openzeppelin-contracts/contracts/token/ERC721/ERC721.sol"; import { TransparentUpgradeableProxy } from - "@oz/proxy/transparent/TransparentUpgradeableProxy.sol"; + "lib/openzeppelin-contracts/contracts/proxy/transparent/TransparentUpgradeableProxy.sol"; contract TestTokenERC721 is ERC721 { string _baseTokenURI; diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 049780f68b..7085dc19ea 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -1,9 +1,5 @@ lockfileVersion: '6.0' -settings: - autoInstallPeers: true - excludeLinksFromLockfile: false - importers: .: @@ -45,7 +41,7 @@ importers: version: 4.3.4(supports-color@8.1.1) ethers: specifier: ^5.7.1 - version: 5.7.2 + version: 5.7.1 identicon.js: specifier: ^2.3.3 version: 2.3.3 @@ -57,7 +53,7 @@ importers: version: 3.2.0 wagmi: specifier: ^0.12.16 - version: 0.12.16(debug@4.3.4)(ethers@5.7.2)(react@18.2.0)(typescript@4.9.5) + version: 0.12.16(debug@4.3.4)(ethers@5.7.1)(react@18.2.0)(typescript@4.6.4) devDependencies: '@babel/preset-env': specifier: ^7.16.0 @@ -91,22 +87,22 @@ importers: version: 2.6.2 '@typescript-eslint/eslint-plugin': specifier: ^5.16.0 - version: 5.16.0(@typescript-eslint/parser@5.45.0)(eslint@7.32.0)(typescript@4.9.5) + version: 5.16.0(@typescript-eslint/parser@5.16.0)(eslint@7.32.0)(typescript@4.6.4) '@typescript-eslint/parser': specifier: ^5.16.0 - version: 5.45.0(eslint@7.32.0)(typescript@4.9.5) + version: 5.16.0(eslint@7.32.0)(typescript@4.6.4) '@wagmi/cli': specifier: ^1.0.1 - version: 1.0.1(typescript@4.9.5)(wagmi@0.12.16) + version: 1.0.1(typescript@4.6.4)(wagmi@0.12.16) '@zerodevx/svelte-toast': specifier: ^0.6.3 version: 0.6.3 abitype: specifier: ^0.8.2 - version: 0.8.7(typescript@4.9.5)(zod@3.22.2) + version: 0.8.7(typescript@5.2.2)(zod@3.22.4) autoprefixer: specifier: ^10.4.13 - version: 10.4.14(postcss@8.4.27) + version: 10.4.16(postcss@8.4.31) babel-jest: specifier: ^27.3.1 version: 27.3.1(@babel/core@7.23.2) @@ -121,7 +117,7 @@ importers: version: 7.32.0 eslint-plugin-jest: specifier: ^27.2.1 - version: 27.2.1(@typescript-eslint/eslint-plugin@5.16.0)(eslint@7.32.0)(jest@27.5.1)(typescript@4.9.5) + version: 27.2.1(@typescript-eslint/eslint-plugin@5.16.0)(eslint@7.32.0)(jest@27.5.1)(typescript@4.6.4) eslint-plugin-simple-import-sort: specifier: ^10.0.0 version: 10.0.0(eslint@7.32.0) @@ -139,13 +135,13 @@ importers: version: 7.0.1 postcss: specifier: ^8.4.19 - version: 8.4.27 + version: 8.4.31 postcss-cli: specifier: ^7.1.2 version: 7.1.2 postcss-loader: specifier: ^7.3.3 - version: 7.3.3(postcss@8.4.27)(typescript@4.9.5)(webpack@5.89.0) + version: 7.3.3(postcss@8.4.31)(typescript@4.6.4)(webpack@5.89.0) prettier: specifier: 2.7.1 version: 2.7.1 @@ -163,7 +159,7 @@ importers: version: 3.53.1 svelte-check: specifier: ^2.8.0 - version: 2.8.0(@babel/core@7.23.2)(node-sass@7.0.1)(postcss@8.4.27)(svelte@3.53.1) + version: 2.8.0(@babel/core@7.23.2)(node-sass@7.0.1)(postcss@8.4.31)(svelte@3.53.1) svelte-heros-v2: specifier: ^0.3.10 version: 0.3.10 @@ -175,7 +171,7 @@ importers: version: 3.1.2(svelte@3.53.1) svelte-preprocess: specifier: ^4.10.7 - version: 4.10.7(@babel/core@7.23.2)(node-sass@7.0.1)(postcss@8.4.27)(svelte@3.53.1)(typescript@4.9.5) + version: 4.10.7(@babel/core@7.23.2)(node-sass@7.0.1)(postcss@8.4.31)(svelte@3.53.1)(typescript@4.6.4) tailwindcss: specifier: ^3.2.4 version: 3.3.3 @@ -184,19 +180,19 @@ importers: version: 2.2.0 ts-jest: specifier: ^27.0.7 - version: 27.0.7(@babel/core@7.23.2)(@types/jest@27.5.2)(babel-jest@27.3.1)(jest@27.5.1)(typescript@4.9.5) + version: 27.0.7(@babel/core@7.23.2)(@types/jest@27.5.2)(babel-jest@27.3.1)(jest@27.5.1)(typescript@4.6.4) ts-jest-mock-import-meta: specifier: ^0.12.0 version: 0.12.0(ts-jest@27.0.7) ts-loader: specifier: ^9.2.6 - version: 9.2.6(typescript@4.9.5)(webpack@5.89.0) + version: 9.2.6(typescript@4.6.4)(webpack@5.89.0) tslib: specifier: ^2.4.0 version: 2.4.1 typescript: specifier: ^4.6.4 - version: 4.9.5 + version: 4.6.4 vite: specifier: ^3.2.7 version: 3.2.7 @@ -205,10 +201,10 @@ importers: dependencies: '@wagmi/core': specifier: ^1.3.6 - version: 1.3.6(lokijs@1.5.12)(react@18.2.0)(typescript@5.1.6)(viem@1.4.1) + version: 1.3.6(lokijs@1.5.12)(react@18.2.0)(typescript@5.2.2)(viem@1.16.0) '@web3modal/ethereum': specifier: ^2.6.2 - version: 2.6.2(@wagmi/core@1.3.6)(viem@1.4.1) + version: 2.6.2(@wagmi/core@1.3.6)(viem@1.16.0) '@web3modal/html': specifier: ^2.6.2 version: 2.6.2(react@18.2.0) @@ -232,7 +228,7 @@ importers: version: 3.6.0(svelte@4.1.0) viem: specifier: ^1.4.1 - version: 1.4.1(typescript@5.1.6) + version: 1.16.0(typescript@5.2.2) devDependencies: '@playwright/test': specifier: ^1.28.1 @@ -251,43 +247,43 @@ importers: version: 4.1.7 '@typescript-eslint/eslint-plugin': specifier: ^6.6.0 - version: 6.6.0(@typescript-eslint/parser@6.7.0)(eslint@8.28.0)(typescript@5.1.6) + version: 6.7.5(@typescript-eslint/parser@6.7.5)(eslint@8.51.0)(typescript@5.2.2) '@typescript-eslint/parser': specifier: ^6.7.0 - version: 6.7.0(eslint@8.28.0)(typescript@5.1.6) + version: 6.7.5(eslint@8.51.0)(typescript@5.2.2) '@vitest/coverage-v8': specifier: ^0.33.0 version: 0.33.0(vitest@0.32.2) '@wagmi/cli': specifier: ^1.0.1 - version: 1.0.1(@wagmi/core@1.3.6)(typescript@5.1.6) + version: 1.0.1(@wagmi/core@1.3.6)(typescript@5.2.2) abitype: specifier: ^0.8.7 - version: 0.8.7(typescript@5.1.6)(zod@3.22.2) + version: 0.8.7(typescript@5.2.2)(zod@3.22.4) ajv: specifier: ^8.6.4 version: 8.7.0 autoprefixer: specifier: ^10.4.14 - version: 10.4.14(postcss@8.4.27) + version: 10.4.16(postcss@8.4.31) daisyui: specifier: 3.1.7 - version: 3.1.7(postcss@8.4.27) + version: 3.1.7(postcss@8.4.31) dotenv: specifier: ^16.3.1 version: 16.3.1 eslint: specifier: ^8.28.0 - version: 8.28.0 + version: 8.51.0 eslint-config-prettier: specifier: ^8.5.0 - version: 8.8.0(eslint@8.28.0) + version: 8.5.0(eslint@8.51.0) eslint-plugin-simple-import-sort: specifier: ^10.0.0 - version: 10.0.0(eslint@8.28.0) + version: 10.0.0(eslint@8.51.0) eslint-plugin-svelte: specifier: ^2.26.0 - version: 2.26.0(eslint@8.28.0)(svelte@4.1.0) + version: 2.26.0(eslint@8.51.0)(svelte@4.1.0) ethereum-address: specifier: ^0.0.4 version: 0.0.4 @@ -299,19 +295,19 @@ importers: version: 1.5.12 postcss: specifier: ^8.4.24 - version: 8.4.27 + version: 8.4.31 prettier: specifier: ^3.0.0 - version: 3.0.0 + version: 3.0.3 prettier-plugin-svelte: specifier: ^3.0.0 - version: 3.0.0(prettier@3.0.0)(svelte@4.1.0) + version: 3.0.0(prettier@3.0.3)(svelte@4.1.0) svelte: specifier: ^4.1.0 version: 4.1.0 svelte-check: specifier: ^3.4.6 - version: 3.4.6(postcss@8.4.27)(svelte@4.1.0) + version: 3.4.6(postcss@8.4.31)(svelte@4.1.0) tailwindcss: specifier: ^3.3.2 version: 3.3.3 @@ -323,13 +319,13 @@ importers: version: 2.4.1 typescript: specifier: ^5.1.6 - version: 5.1.6 + version: 5.2.2 vite: specifier: ^4.4.9 version: 4.4.9(@types/node@20.8.6) vite-tsconfig-paths: specifier: ^4.2.1 - version: 4.2.1(typescript@5.1.6)(vite@4.4.9) + version: 4.2.1(typescript@5.2.2)(vite@4.4.9) vitest: specifier: ^0.32.2 version: 0.32.2(jsdom@22.1.0) @@ -369,7 +365,7 @@ importers: version: 4.3.4(supports-color@8.1.1) ethers: specifier: ^5.7.1 - version: 5.7.2 + version: 5.7.1 identicon.js: specifier: ^2.3.3 version: 2.3.3 @@ -381,7 +377,7 @@ importers: version: 3.2.0 wagmi: specifier: ^0.12.16 - version: 0.12.16(debug@4.3.4)(ethers@5.7.2)(react@18.2.0)(typescript@4.9.5) + version: 0.12.16(debug@4.3.4)(ethers@5.7.1)(react@18.2.0)(typescript@4.6.4) devDependencies: '@babel/preset-env': specifier: ^7.16.0 @@ -415,22 +411,22 @@ importers: version: 2.6.2 '@typescript-eslint/eslint-plugin': specifier: ^6.6.0 - version: 6.6.0(@typescript-eslint/parser@5.45.0)(eslint@7.32.0)(typescript@4.9.5) + version: 6.7.5(@typescript-eslint/parser@5.16.0)(eslint@7.32.0)(typescript@4.6.4) '@typescript-eslint/parser': specifier: ^5.16.0 - version: 5.45.0(eslint@7.32.0)(typescript@4.9.5) + version: 5.16.0(eslint@7.32.0)(typescript@4.6.4) '@wagmi/cli': specifier: ^1.0.1 - version: 1.0.1(typescript@4.9.5)(wagmi@0.12.16) + version: 1.0.1(typescript@4.6.4)(wagmi@0.12.16) '@zerodevx/svelte-toast': specifier: ^0.6.3 version: 0.6.3 abitype: specifier: ^0.8.2 - version: 0.8.7(typescript@4.9.5)(zod@3.22.2) + version: 0.8.7(typescript@5.2.2)(zod@3.22.4) autoprefixer: specifier: ^10.4.13 - version: 10.4.14(postcss@8.4.27) + version: 10.4.16(postcss@8.4.31) babel-jest: specifier: ^27.3.1 version: 27.3.1(@babel/core@7.23.2) @@ -445,7 +441,7 @@ importers: version: 7.32.0 eslint-plugin-jest: specifier: ^27.2.1 - version: 27.2.1(@typescript-eslint/eslint-plugin@6.6.0)(eslint@7.32.0)(jest@27.5.1)(typescript@4.9.5) + version: 27.2.1(@typescript-eslint/eslint-plugin@6.7.5)(eslint@7.32.0)(jest@27.5.1)(typescript@4.6.4) eslint-plugin-simple-import-sort: specifier: ^10.0.0 version: 10.0.0(eslint@7.32.0) @@ -463,13 +459,13 @@ importers: version: 7.0.1 postcss: specifier: ^8.4.19 - version: 8.4.27 + version: 8.4.31 postcss-cli: specifier: ^7.1.2 version: 7.1.2 postcss-loader: specifier: ^7.3.3 - version: 7.3.3(postcss@8.4.27)(typescript@4.9.5)(webpack@5.89.0) + version: 7.3.3(postcss@8.4.31)(typescript@4.6.4)(webpack@5.89.0) prettier: specifier: 2.7.1 version: 2.7.1 @@ -487,7 +483,7 @@ importers: version: 3.53.1 svelte-check: specifier: ^2.8.0 - version: 2.8.0(@babel/core@7.23.2)(node-sass@7.0.1)(postcss@8.4.27)(svelte@3.53.1) + version: 2.8.0(@babel/core@7.23.2)(node-sass@7.0.1)(postcss@8.4.31)(svelte@3.53.1) svelte-heros-v2: specifier: ^0.3.10 version: 0.3.10 @@ -499,7 +495,7 @@ importers: version: 3.1.2(svelte@3.53.1) svelte-preprocess: specifier: ^4.10.7 - version: 4.10.7(@babel/core@7.23.2)(node-sass@7.0.1)(postcss@8.4.27)(svelte@3.53.1)(typescript@4.9.5) + version: 4.10.7(@babel/core@7.23.2)(node-sass@7.0.1)(postcss@8.4.31)(svelte@3.53.1)(typescript@4.6.4) tailwindcss: specifier: ^3.2.4 version: 3.3.3 @@ -508,19 +504,19 @@ importers: version: 2.2.0 ts-jest: specifier: ^27.0.7 - version: 27.0.7(@babel/core@7.23.2)(@types/jest@27.5.2)(babel-jest@27.3.1)(jest@27.5.1)(typescript@4.9.5) + version: 27.0.7(@babel/core@7.23.2)(@types/jest@27.5.2)(babel-jest@27.3.1)(jest@27.5.1)(typescript@4.6.4) ts-jest-mock-import-meta: specifier: ^0.12.0 version: 0.12.0(ts-jest@27.0.7) ts-loader: specifier: ^9.2.6 - version: 9.2.6(typescript@4.9.5)(webpack@5.89.0) + version: 9.2.6(typescript@4.6.4)(webpack@5.89.0) tslib: specifier: ^2.4.0 version: 2.4.1 typescript: specifier: ^4.6.4 - version: 4.9.5 + version: 4.6.4 vite: specifier: ^3.2.7 version: 3.2.7 @@ -528,11 +524,11 @@ importers: packages/protocol: devDependencies: '@defi-wonderland/smock': - specifier: ^2.3.5 - version: 2.3.5(@ethersproject/abi@5.7.0)(@ethersproject/abstract-provider@5.7.0)(@ethersproject/abstract-signer@5.7.0)(@nomiclabs/hardhat-ethers@2.2.3)(ethers@6.8.0)(hardhat@2.18.1) + specifier: ^2.3.4 + version: 2.3.4(@ethersproject/abi@5.7.0)(@ethersproject/abstract-provider@5.7.0)(@ethersproject/abstract-signer@5.7.0)(@nomiclabs/hardhat-ethers@2.2.3)(ethers@5.7.2)(hardhat@2.18.1) '@foundry-rs/hardhat-forge': specifier: ^0.1.17 - version: 0.1.17(@nomiclabs/hardhat-ethers@2.2.3)(ethereum-waffle@3.4.4)(ethers@6.8.0)(hardhat@2.18.1) + version: 0.1.17(@nomiclabs/hardhat-ethers@2.2.3)(ethereum-waffle@3.4.4)(ethers@5.7.2)(hardhat@2.18.1) '@nomicfoundation/hardhat-foundry': specifier: ^1.1.1 version: 1.1.1(hardhat@2.18.1) @@ -541,22 +537,22 @@ importers: version: 1.0.9(hardhat@2.18.1) '@nomiclabs/hardhat-ethers': specifier: ^2.2.3 - version: 2.2.3(ethers@6.8.0)(hardhat@2.18.1) + version: 2.2.3(ethers@5.7.2)(hardhat@2.18.1) '@nomiclabs/hardhat-etherscan': specifier: ^3.1.7 version: 3.1.7(hardhat@2.18.1) '@nomiclabs/hardhat-waffle': specifier: ^2.0.6 - version: 2.0.6(@nomiclabs/hardhat-ethers@2.2.3)(@types/sinon-chai@3.2.10)(ethereum-waffle@3.4.4)(ethers@6.8.0)(hardhat@2.18.1) + version: 2.0.6(@nomiclabs/hardhat-ethers@2.2.3)(@types/sinon-chai@3.2.10)(ethereum-waffle@3.4.4)(ethers@5.7.2)(hardhat@2.18.1) '@openzeppelin/hardhat-upgrades': specifier: ^2.3.3 - version: 2.3.3(@nomicfoundation/hardhat-ethers@3.0.4)(ethers@6.8.0)(hardhat@2.18.1) + version: 2.3.3(@nomicfoundation/hardhat-ethers@3.0.4)(ethers@5.7.2)(hardhat@2.18.1) '@typechain/ethers-v5': specifier: ^11.1.2 - version: 11.1.2(@ethersproject/abi@5.7.0)(@ethersproject/providers@5.7.2)(ethers@6.8.0)(typechain@8.3.2)(typescript@5.2.2) + version: 11.1.2(@ethersproject/abi@5.7.0)(@ethersproject/providers@5.7.2)(ethers@5.7.2)(typechain@8.3.2)(typescript@5.2.2) '@typechain/hardhat': specifier: ^9.1.0 - version: 9.1.0(@typechain/ethers-v6@0.5.1)(ethers@6.8.0)(hardhat@2.18.1)(typechain@8.3.2) + version: 9.1.0(@typechain/ethers-v6@0.5.1)(ethers@5.7.2)(hardhat@2.18.1)(typechain@8.3.2) '@types/chai': specifier: ^4.3.8 version: 4.3.8 @@ -606,8 +602,8 @@ importers: specifier: ^6.1.1 version: 6.1.1(eslint@8.51.0) ethers: - specifier: ^6.8.0 - version: 6.8.0 + specifier: ^5.7.2 + version: 5.7.2 glob: specifier: ^10.3.10 version: 10.3.10 @@ -675,10 +671,10 @@ importers: version: 1.6.0 '@wagmi/connectors': specifier: ^0.1.1 - version: 0.1.1(@babel/core@7.23.2)(@wagmi/core@0.8.0)(ethers@5.7.2)(typescript@4.9.5) + version: 0.1.1(@babel/core@7.23.2)(@wagmi/core@0.8.0)(ethers@5.7.1)(typescript@4.6.4) '@wagmi/core': specifier: ^0.8.0 - version: 0.8.0(@coinbase/wallet-sdk@3.6.3)(ethers@5.7.2)(react@18.2.0)(typescript@4.9.5) + version: 0.8.0(@coinbase/wallet-sdk@3.6.3)(ethers@5.7.1)(react@18.2.0)(typescript@4.6.4) axios: specifier: ^1.2.0 version: 1.4.0(debug@4.3.4) @@ -687,7 +683,7 @@ importers: version: 6.0.3 ethers: specifier: ^5.7.1 - version: 5.7.2 + version: 5.7.1 identicon.js: specifier: ^2.3.3 version: 2.3.3 @@ -724,16 +720,16 @@ importers: version: 2.6.2 '@typescript-eslint/eslint-plugin': specifier: ^6.6.0 - version: 6.6.0(@typescript-eslint/parser@5.45.0)(eslint@8.51.0)(typescript@4.9.5) + version: 6.7.5(@typescript-eslint/parser@5.16.0)(eslint@8.51.0)(typescript@4.6.4) '@typescript-eslint/parser': specifier: ^5.16.0 - version: 5.45.0(eslint@8.51.0)(typescript@4.9.5) + version: 5.16.0(eslint@8.51.0)(typescript@4.6.4) '@zerodevx/svelte-toast': specifier: ^0.6.3 version: 0.6.3 autoprefixer: specifier: ^10.4.13 - version: 10.4.14(postcss@8.4.27) + version: 10.4.16(postcss@8.4.31) babel-jest: specifier: ^27.3.1 version: 27.3.1(@babel/core@7.23.2) @@ -751,13 +747,13 @@ importers: version: 7.0.1 postcss: specifier: ^8.4.19 - version: 8.4.27 + version: 8.4.31 postcss-cli: specifier: ^7.1.2 version: 7.1.2 postcss-loader: specifier: ^7.3.3 - version: 7.3.3(postcss@8.4.27)(typescript@4.9.5)(webpack@5.89.0) + version: 7.3.3(postcss@8.4.31)(typescript@4.6.4)(webpack@5.89.0) prettier: specifier: 2.7.1 version: 2.7.1 @@ -772,7 +768,7 @@ importers: version: 3.53.1 svelte-check: specifier: ^2.8.0 - version: 2.8.0(@babel/core@7.23.2)(node-sass@7.0.1)(postcss@8.4.27)(svelte@3.53.1) + version: 2.8.0(@babel/core@7.23.2)(node-sass@7.0.1)(postcss@8.4.31)(svelte@3.53.1) svelte-heros-v2: specifier: ^0.3.10 version: 0.3.10 @@ -784,7 +780,7 @@ importers: version: 3.1.2(svelte@3.53.1) svelte-preprocess: specifier: ^4.10.7 - version: 4.10.7(@babel/core@7.23.2)(node-sass@7.0.1)(postcss@8.4.27)(svelte@3.53.1)(typescript@4.9.5) + version: 4.10.7(@babel/core@7.23.2)(node-sass@7.0.1)(postcss@8.4.31)(svelte@3.53.1)(typescript@4.6.4) tailwindcss: specifier: ^3.2.4 version: 3.3.3 @@ -793,19 +789,19 @@ importers: version: 2.2.0 ts-jest: specifier: ^27.0.7 - version: 27.0.7(@babel/core@7.23.2)(@types/jest@27.5.2)(babel-jest@27.3.1)(jest@27.5.1)(typescript@4.9.5) + version: 27.0.7(@babel/core@7.23.2)(@types/jest@27.5.2)(babel-jest@27.3.1)(jest@27.5.1)(typescript@4.6.4) ts-jest-mock-import-meta: specifier: ^0.12.0 version: 0.12.0(ts-jest@27.0.7) ts-loader: specifier: ^9.2.6 - version: 9.2.6(typescript@4.9.5)(webpack@5.89.0) + version: 9.2.6(typescript@4.6.4)(webpack@5.89.0) tslib: specifier: ^2.4.0 version: 2.4.1 typescript: specifier: ^4.6.4 - version: 4.9.5 + version: 4.6.4 vite: specifier: ^3.2.7 version: 3.2.7 @@ -829,10 +825,10 @@ importers: version: 1.6.0 '@wagmi/connectors': specifier: ^0.1.1 - version: 0.1.1(@babel/core@7.23.2)(@wagmi/core@0.8.0)(ethers@5.7.2)(typescript@4.9.5) + version: 0.1.1(@babel/core@7.23.2)(@wagmi/core@0.8.0)(ethers@5.7.1)(typescript@4.6.4) '@wagmi/core': specifier: ^0.8.0 - version: 0.8.0(@coinbase/wallet-sdk@3.6.3)(ethers@5.7.2)(react@18.2.0)(typescript@4.9.5) + version: 0.8.0(@coinbase/wallet-sdk@3.6.3)(ethers@5.7.1)(react@18.2.0)(typescript@4.6.4) axios: specifier: ^1.2.0 version: 1.4.0(debug@4.3.4) @@ -841,7 +837,7 @@ importers: version: 6.0.3 ethers: specifier: ^5.7.1 - version: 5.7.2 + version: 5.7.1 identicon.js: specifier: ^2.3.3 version: 2.3.3 @@ -878,16 +874,16 @@ importers: version: 2.6.2 '@typescript-eslint/eslint-plugin': specifier: ^6.6.0 - version: 6.6.0(@typescript-eslint/parser@5.45.0)(eslint@8.51.0)(typescript@4.9.5) + version: 6.7.5(@typescript-eslint/parser@5.16.0)(eslint@8.51.0)(typescript@4.6.4) '@typescript-eslint/parser': specifier: ^5.16.0 - version: 5.45.0(eslint@8.51.0)(typescript@4.9.5) + version: 5.16.0(eslint@8.51.0)(typescript@4.6.4) '@zerodevx/svelte-toast': specifier: ^0.6.3 version: 0.6.3 autoprefixer: specifier: ^10.4.13 - version: 10.4.14(postcss@8.4.27) + version: 10.4.16(postcss@8.4.31) babel-jest: specifier: ^27.3.1 version: 27.3.1(@babel/core@7.23.2) @@ -905,13 +901,13 @@ importers: version: 7.0.1 postcss: specifier: ^8.4.19 - version: 8.4.27 + version: 8.4.31 postcss-cli: specifier: ^7.1.2 version: 7.1.2 postcss-loader: specifier: ^7.3.3 - version: 7.3.3(postcss@8.4.27)(typescript@4.9.5)(webpack@5.89.0) + version: 7.3.3(postcss@8.4.31)(typescript@4.6.4)(webpack@5.89.0) prettier: specifier: 2.7.1 version: 2.7.1 @@ -926,7 +922,7 @@ importers: version: 3.53.1 svelte-check: specifier: ^2.8.0 - version: 2.8.0(@babel/core@7.23.2)(node-sass@7.0.1)(postcss@8.4.27)(svelte@3.53.1) + version: 2.8.0(@babel/core@7.23.2)(node-sass@7.0.1)(postcss@8.4.31)(svelte@3.53.1) svelte-heros-v2: specifier: ^0.3.10 version: 0.3.10 @@ -938,7 +934,7 @@ importers: version: 3.1.2(svelte@3.53.1) svelte-preprocess: specifier: ^4.10.7 - version: 4.10.7(@babel/core@7.23.2)(node-sass@7.0.1)(postcss@8.4.27)(svelte@3.53.1)(typescript@4.9.5) + version: 4.10.7(@babel/core@7.23.2)(node-sass@7.0.1)(postcss@8.4.31)(svelte@3.53.1)(typescript@4.6.4) tailwindcss: specifier: ^3.2.4 version: 3.3.3 @@ -947,19 +943,19 @@ importers: version: 2.2.0 ts-jest: specifier: ^27.0.7 - version: 27.0.7(@babel/core@7.23.2)(@types/jest@27.5.2)(babel-jest@27.3.1)(jest@27.5.1)(typescript@4.9.5) + version: 27.0.7(@babel/core@7.23.2)(@types/jest@27.5.2)(babel-jest@27.3.1)(jest@27.5.1)(typescript@4.6.4) ts-jest-mock-import-meta: specifier: ^0.12.0 version: 0.12.0(ts-jest@27.0.7) ts-loader: specifier: ^9.2.6 - version: 9.2.6(typescript@4.9.5)(webpack@5.89.0) + version: 9.2.6(typescript@4.6.4)(webpack@5.89.0) tslib: specifier: ^2.4.0 version: 2.4.1 typescript: specifier: ^4.6.4 - version: 4.9.5 + version: 4.6.4 vite: specifier: ^3.2.7 version: 3.2.7 @@ -999,7 +995,7 @@ importers: version: 2.0.18(react@18.2.0) '@types/node': specifier: ^20.8.3 - version: 20.8.3 + version: 20.8.6 '@types/react': specifier: ^18.2.25 version: 18.2.25 @@ -1031,16 +1027,12 @@ packages: engines: {node: '>=0.10.0'} dev: true - /@adraffy/ens-normalize@1.10.0: - resolution: {integrity: sha512-nA9XHtlAkYfJxY7bce8DcN7eKxWWCWkU+1GR9d+U6MbNpfwQp8TI7vqOsBsMcHoT4mBu2kypKoSKnghEzOOq5Q==} - dev: true - /@adraffy/ens-normalize@1.9.0: resolution: {integrity: sha512-iowxq3U30sghZotgl4s/oJRci6WPBfNO5YYgk2cIOMCHr3LeGPcsZjCEr+33Q4N+oV3OABDAtA+pyvWjbvBifQ==} + dev: true /@adraffy/ens-normalize@1.9.4: resolution: {integrity: sha512-UK0bHA7hh9cR39V+4gl2/NnBBjoXIxkuWAPCaY4X7fbH4L/azIi7ilWOCjMUYfpJgraLUAqkRi2BqrjME8Rynw==} - dev: true /@alloc/quick-lru@5.2.0: resolution: {integrity: sha512-UrcABB+4bUrFABwbluTIBErXwvbsU/V7TZWfmbgJfbkwiBuziS9gxdODUyuiecfdGQ85jglMW6juS3+z5TsKLw==} @@ -1081,49 +1073,26 @@ packages: /@aws-sdk/util-utf8-browser@3.259.0: resolution: {integrity: sha512-UvFa/vR+e19XookZF8RzFZBrw2EUkQWxiBW0yYQAhvk3C+QVGl0H3ouca8LDBlBfQKXwmW3huo/59H8rwb1wJw==} dependencies: - tslib: 2.6.2 + tslib: 2.4.1 dev: true /@babel/code-frame@7.12.11: resolution: {integrity: sha512-Zt1yodBx1UcyiePMSkWnU4hPqhwq7hGi2nFL1LeA3EUl+q2LQx16MISgJ0+z7dnmgvP9QtIleuETGOiOH1RcIw==} dependencies: - '@babel/highlight': 7.22.13 + '@babel/highlight': 7.22.20 dev: true /@babel/code-frame@7.22.13: resolution: {integrity: sha512-XktuhWlJ5g+3TJXc5upd9Ks1HutSArik6jf2eAjYFyIOf4ej3RN+184cZbzDvbPnuTJIUhPKKJE3cIsYTiAT3w==} engines: {node: '>=6.9.0'} dependencies: - '@babel/highlight': 7.22.13 + '@babel/highlight': 7.22.20 chalk: 2.4.2 - /@babel/compat-data@7.22.9: - resolution: {integrity: sha512-5UamI7xkUcJ3i9qVDS+KFDEK8/7oJ55/sJMB1Ge7IEapr7KfdfV/HErR+koZwOfd+SgtFKOKRhRakdg++DcJpQ==} + /@babel/compat-data@7.23.2: + resolution: {integrity: sha512-0S9TQMmDHlqAZ2ITT95irXKfxN9bncq8ZCoJhun3nHL/lLUxd2NKBJYoNGWH7S0hz6fRQwWlAWn/ILM0C70KZQ==} engines: {node: '>=6.9.0'} - /@babel/core@7.22.15: - resolution: {integrity: sha512-PtZqMmgRrvj8ruoEOIwVA3yoF91O+Hgw9o7DAUTNBA6Mo2jpu31clx9a7Nz/9JznqetTR6zwfC4L3LAjKQXUwA==} - engines: {node: '>=6.9.0'} - dependencies: - '@ampproject/remapping': 2.2.1 - '@babel/code-frame': 7.22.13 - '@babel/generator': 7.22.15 - '@babel/helper-compilation-targets': 7.22.15 - '@babel/helper-module-transforms': 7.22.15(@babel/core@7.22.15) - '@babel/helpers': 7.22.15 - '@babel/parser': 7.22.15 - '@babel/template': 7.22.15 - '@babel/traverse': 7.22.15 - '@babel/types': 7.22.15 - convert-source-map: 1.9.0 - debug: 4.3.4(supports-color@8.1.1) - gensync: 1.0.0-beta.2 - json5: 2.2.3 - semver: 6.3.1 - transitivePeerDependencies: - - supports-color - dev: true - /@babel/core@7.23.2: resolution: {integrity: sha512-n7s51eWdaWZ3vGT2tD4T7J6eJs3QoBXydv7vkUM06Bf1cbVD2Kc2UrkzhiQwobfV7NwOnQXYL7UBJ5VPU+RGoQ==} engines: {node: '>=6.9.0'} @@ -1146,16 +1115,6 @@ packages: transitivePeerDependencies: - supports-color - /@babel/generator@7.22.15: - resolution: {integrity: sha512-Zu9oWARBqeVOW0dZOjXc3JObrzuqothQ3y/n1kUtrjCoCPLkXUwMvOo/F/TCfoHMbWIFlWwpZtkZVb9ga4U2pA==} - engines: {node: '>=6.9.0'} - dependencies: - '@babel/types': 7.22.15 - '@jridgewell/gen-mapping': 0.3.3 - '@jridgewell/trace-mapping': 0.3.19 - jsesc: 2.5.2 - dev: true - /@babel/generator@7.23.0: resolution: {integrity: sha512-lN85QRR+5IbYrMWM6Y4pE/noaQtg4pNiqeNGX60eqOfo6gtEj6uw/JagelB8vVztSd7R6M5n1+PQkDbHbBRU4g==} engines: {node: '>=6.9.0'} @@ -1169,23 +1128,23 @@ packages: resolution: {integrity: sha512-LvBTxu8bQSQkcyKOU+a1btnNFQ1dMAd0R6PyW3arXes06F6QLWLIrd681bxRPIXlrMGR3XYnW9JyML7dP3qgxg==} engines: {node: '>=6.9.0'} dependencies: - '@babel/types': 7.22.15 + '@babel/types': 7.23.0 dev: true /@babel/helper-builder-binary-assignment-operator-visitor@7.22.15: resolution: {integrity: sha512-QkBXwGgaoC2GtGZRoma6kv7Szfv06khvhFav67ZExau2RaXzy8MpHSMO2PNoP2XtmQphJQRHFfg77Bq731Yizw==} engines: {node: '>=6.9.0'} dependencies: - '@babel/types': 7.22.15 + '@babel/types': 7.23.0 dev: true /@babel/helper-compilation-targets@7.22.15: resolution: {integrity: sha512-y6EEzULok0Qvz8yyLkCvVX+02ic+By2UdOhylwUOvOn9dvYc9mKICJuuU1n1XBI02YWsNsnrY1kc6DVbjcXbtw==} engines: {node: '>=6.9.0'} dependencies: - '@babel/compat-data': 7.22.9 + '@babel/compat-data': 7.23.2 '@babel/helper-validator-option': 7.22.15 - browserslist: 4.21.10 + browserslist: 4.22.1 lru-cache: 5.1.1 semver: 6.3.1 @@ -1197,11 +1156,11 @@ packages: dependencies: '@babel/core': 7.23.2 '@babel/helper-annotate-as-pure': 7.22.5 - '@babel/helper-environment-visitor': 7.22.5 - '@babel/helper-function-name': 7.22.5 - '@babel/helper-member-expression-to-functions': 7.22.15 + '@babel/helper-environment-visitor': 7.22.20 + '@babel/helper-function-name': 7.23.0 + '@babel/helper-member-expression-to-functions': 7.23.0 '@babel/helper-optimise-call-expression': 7.22.5 - '@babel/helper-replace-supers': 7.22.9(@babel/core@7.23.2) + '@babel/helper-replace-supers': 7.22.20(@babel/core@7.23.2) '@babel/helper-skip-transparent-expression-wrappers': 7.22.5 '@babel/helper-split-export-declaration': 7.22.6 semver: 6.3.1 @@ -1228,17 +1187,17 @@ packages: '@babel/helper-compilation-targets': 7.22.15 '@babel/helper-module-imports': 7.22.15 '@babel/helper-plugin-utils': 7.22.5 - '@babel/traverse': 7.22.15 + '@babel/traverse': 7.23.2 debug: 4.3.4(supports-color@8.1.1) lodash.debounce: 4.0.8 - resolve: 1.22.6 + resolve: 1.22.8 semver: 6.3.1 transitivePeerDependencies: - supports-color dev: true - /@babel/helper-define-polyfill-provider@0.4.2(@babel/core@7.23.2): - resolution: {integrity: sha512-k0qnnOqHn5dK9pZpfD5XXZ9SojAITdCKRn2Lp6rnDGzIbaP0rHyMPk/4wsSxVBVz4RfN0q6VpXWP2pDGIoQ7hw==} + /@babel/helper-define-polyfill-provider@0.4.3(@babel/core@7.23.2): + resolution: {integrity: sha512-WBrLmuPP47n7PNwsZ57pqam6G/RGo1vw/87b0Blc53tZNGZ4x7YvZ6HgQe2vo1W/FR20OgjeZuGXzudPiXHFug==} peerDependencies: '@babel/core': ^7.4.0 || ^8.0.0-0 <8.0.0 dependencies: @@ -1247,7 +1206,7 @@ packages: '@babel/helper-plugin-utils': 7.22.5 debug: 4.3.4(supports-color@8.1.1) lodash.debounce: 4.0.8 - resolve: 1.22.6 + resolve: 1.22.8 transitivePeerDependencies: - supports-color dev: false @@ -1256,19 +1215,6 @@ packages: resolution: {integrity: sha512-zfedSIzFhat/gFhWfHtgWvlec0nqB9YEIVrpuwjruLlXfUSnA8cJB0miHKwqDnQ7d32aKo2xt88/xZptwxbfhA==} engines: {node: '>=6.9.0'} - /@babel/helper-environment-visitor@7.22.5: - resolution: {integrity: sha512-XGmhECfVA/5sAt+H+xpSg0mfrHq6FzNr9Oxh7PSEBBRUb/mL7Kz3NICXb194rCqAEdxkhPT1a88teizAFyvk8Q==} - engines: {node: '>=6.9.0'} - dev: true - - /@babel/helper-function-name@7.22.5: - resolution: {integrity: sha512-wtHSq6jMRE3uF2otvfuD3DIvVhOsSNshQl0Qrd7qC9oQJzHvOL4qQXlQn2916+CXGywIjpGuIkoyZRRxHPiNQQ==} - engines: {node: '>=6.9.0'} - dependencies: - '@babel/template': 7.22.15 - '@babel/types': 7.22.15 - dev: true - /@babel/helper-function-name@7.23.0: resolution: {integrity: sha512-OErEqsrxjZTJciZ4Oo+eoZqeW9UIiOcuYKRJA4ZAgV9myA+pOXhhmpfNCKjEH/auVfEYVFJ6y1Tc4r0eIApqiw==} engines: {node: '>=6.9.0'} @@ -1280,48 +1226,20 @@ packages: resolution: {integrity: sha512-wGjk9QZVzvknA6yKIUURb8zY3grXCcOZt+/7Wcy8O2uctxhplmUPkOdlgoNhmdVee2c92JXbf1xpMtVNbfoxRw==} engines: {node: '>=6.9.0'} dependencies: - '@babel/types': 7.22.15 + '@babel/types': 7.23.0 - /@babel/helper-member-expression-to-functions@7.22.15: - resolution: {integrity: sha512-qLNsZbgrNh0fDQBCPocSL8guki1hcPvltGDv/NxvUoABwFq7GkKSu1nRXeJkVZc+wJvne2E0RKQz+2SQrz6eAA==} + /@babel/helper-member-expression-to-functions@7.23.0: + resolution: {integrity: sha512-6gfrPwh7OuT6gZyJZvd6WbTfrqAo7vm4xCzAXOusKqq/vWdKXphTpj5klHKNmRUU6/QRGlBsyU9mAIPaWHlqJA==} engines: {node: '>=6.9.0'} dependencies: - '@babel/types': 7.22.15 + '@babel/types': 7.23.0 dev: true /@babel/helper-module-imports@7.22.15: resolution: {integrity: sha512-0pYVBnDKZO2fnSPCrgM/6WMc7eS20Fbok+0r88fp+YtWVLZrp4CkafFGIp+W0VKw4a22sgebPT99y+FDNMdP4w==} engines: {node: '>=6.9.0'} dependencies: - '@babel/types': 7.22.15 - - /@babel/helper-module-transforms@7.22.15(@babel/core@7.22.15): - resolution: {integrity: sha512-l1UiX4UyHSFsYt17iQ3Se5pQQZZHa22zyIXURmvkmLCD4t/aU+dvNWHatKac/D9Vm9UES7nvIqHs4jZqKviUmQ==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0 - dependencies: - '@babel/core': 7.22.15 - '@babel/helper-environment-visitor': 7.22.5 - '@babel/helper-module-imports': 7.22.15 - '@babel/helper-simple-access': 7.22.5 - '@babel/helper-split-export-declaration': 7.22.6 - '@babel/helper-validator-identifier': 7.22.15 - dev: true - - /@babel/helper-module-transforms@7.22.15(@babel/core@7.23.2): - resolution: {integrity: sha512-l1UiX4UyHSFsYt17iQ3Se5pQQZZHa22zyIXURmvkmLCD4t/aU+dvNWHatKac/D9Vm9UES7nvIqHs4jZqKviUmQ==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0 - dependencies: - '@babel/core': 7.23.2 - '@babel/helper-environment-visitor': 7.22.5 - '@babel/helper-module-imports': 7.22.15 - '@babel/helper-simple-access': 7.22.5 - '@babel/helper-split-export-declaration': 7.22.6 - '@babel/helper-validator-identifier': 7.22.15 - dev: true + '@babel/types': 7.23.0 /@babel/helper-module-transforms@7.23.0(@babel/core@7.23.2): resolution: {integrity: sha512-WhDWw1tdrlT0gMgUJSlX0IQvoO1eN279zrAUbVB+KpV2c3Tylz8+GnKOLllCS6Z/iZQEyVYxhZVUdPTqs2YYPw==} @@ -1340,34 +1258,34 @@ packages: resolution: {integrity: sha512-HBwaojN0xFRx4yIvpwGqxiV2tUfl7401jlok564NgB9EHS1y6QT17FmKWm4ztqjeVdXLuC4fSvHc5ePpQjoTbw==} engines: {node: '>=6.9.0'} dependencies: - '@babel/types': 7.22.15 + '@babel/types': 7.23.0 dev: true /@babel/helper-plugin-utils@7.22.5: resolution: {integrity: sha512-uLls06UVKgFG9QD4OeFYLEGteMIAa5kpTPcFL28yuCIIzsf6ZyKZMllKVOCZFhiZ5ptnwX4mtKdWCBE/uT4amg==} engines: {node: '>=6.9.0'} - /@babel/helper-remap-async-to-generator@7.22.9(@babel/core@7.23.2): - resolution: {integrity: sha512-8WWC4oR4Px+tr+Fp0X3RHDVfINGpF3ad1HIbrc8A77epiR6eMMc6jsgozkzT2uDiOOdoS9cLIQ+XD2XvI2WSmQ==} + /@babel/helper-remap-async-to-generator@7.22.20(@babel/core@7.23.2): + resolution: {integrity: sha512-pBGyV4uBqOns+0UvhsTO8qgl8hO89PmiDYv+/COyp1aeMcmfrfruz+/nCMFiYyFF/Knn0yfrC85ZzNFjembFTw==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0 dependencies: '@babel/core': 7.23.2 '@babel/helper-annotate-as-pure': 7.22.5 - '@babel/helper-environment-visitor': 7.22.5 - '@babel/helper-wrap-function': 7.22.10 + '@babel/helper-environment-visitor': 7.22.20 + '@babel/helper-wrap-function': 7.22.20 dev: true - /@babel/helper-replace-supers@7.22.9(@babel/core@7.23.2): - resolution: {integrity: sha512-LJIKvvpgPOPUThdYqcX6IXRuIcTkcAub0IaDRGCZH0p5GPUp7PhRU9QVgFcDDd51BaPkk77ZjqFwh6DZTAEmGg==} + /@babel/helper-replace-supers@7.22.20(@babel/core@7.23.2): + resolution: {integrity: sha512-qsW0In3dbwQUbK8kejJ4R7IHVGwHJlV6lpG6UA7a9hSa2YEiAib+N1T2kr6PEeUT+Fl7najmSOS6SmAwCHK6Tw==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0 dependencies: '@babel/core': 7.23.2 - '@babel/helper-environment-visitor': 7.22.5 - '@babel/helper-member-expression-to-functions': 7.22.15 + '@babel/helper-environment-visitor': 7.22.20 + '@babel/helper-member-expression-to-functions': 7.23.0 '@babel/helper-optimise-call-expression': 7.22.5 dev: true @@ -1375,29 +1293,25 @@ packages: resolution: {integrity: sha512-n0H99E/K+Bika3++WNL17POvo4rKWZ7lZEp1Q+fStVbUi8nxPQEBOlTmCOxW/0JsS56SKKQ+ojAe2pHKJHN35w==} engines: {node: '>=6.9.0'} dependencies: - '@babel/types': 7.22.15 + '@babel/types': 7.23.0 /@babel/helper-skip-transparent-expression-wrappers@7.22.5: resolution: {integrity: sha512-tK14r66JZKiC43p8Ki33yLBVJKlQDFoA8GYN67lWCDCqoL6EMMSuM9b+Iff2jHaM/RRFYl7K+iiru7hbRqNx8Q==} engines: {node: '>=6.9.0'} dependencies: - '@babel/types': 7.22.15 + '@babel/types': 7.23.0 dev: true /@babel/helper-split-export-declaration@7.22.6: resolution: {integrity: sha512-AsUnxuLhRYsisFiaJwvp1QF+I3KjD5FOxut14q/GzovUe6orHLesW2C7d754kRm53h5gqrz6sFl6sxc4BVtE/g==} engines: {node: '>=6.9.0'} dependencies: - '@babel/types': 7.22.15 + '@babel/types': 7.23.0 /@babel/helper-string-parser@7.22.5: resolution: {integrity: sha512-mM4COjgZox8U+JcXQwPijIZLElkgEpO5rsERVDJTc2qfCDfERyob6k5WegS14SX18IIjv+XD+GrqNumY5JRCDw==} engines: {node: '>=6.9.0'} - /@babel/helper-validator-identifier@7.22.15: - resolution: {integrity: sha512-4E/F9IIEi8WR94324mbDUMo074YTheJmd7eZF5vITTeYchqAi6sYXRLHUVsmkdmY4QjfKTcB2jB7dVP3NaBElQ==} - engines: {node: '>=6.9.0'} - /@babel/helper-validator-identifier@7.22.20: resolution: {integrity: sha512-Y4OZ+ytlatR8AI+8KZfKuL5urKp7qey08ha31L8b3BwewJAoJamTzyvxPR/5D+KkdJCGPq/+8TukHBlY10FX9A==} engines: {node: '>=6.9.0'} @@ -1406,24 +1320,13 @@ packages: resolution: {integrity: sha512-bMn7RmyFjY/mdECUbgn9eoSY4vqvacUnS9i9vGAGttgFWesO6B4CYWA7XlpbWgBt71iv/hfbPlynohStqnu5hA==} engines: {node: '>=6.9.0'} - /@babel/helper-wrap-function@7.22.10: - resolution: {integrity: sha512-OnMhjWjuGYtdoO3FmsEFWvBStBAe2QOgwOLsLNDjN+aaiMD8InJk1/O3HSD8lkqTjCgg5YI34Tz15KNNA3p+nQ==} - engines: {node: '>=6.9.0'} - dependencies: - '@babel/helper-function-name': 7.22.5 - '@babel/template': 7.22.15 - '@babel/types': 7.22.15 - dev: true - - /@babel/helpers@7.22.15: - resolution: {integrity: sha512-7pAjK0aSdxOwR+CcYAqgWOGy5dcfvzsTIfFTb2odQqW47MDfv14UaJDY6eng8ylM2EaeKXdxaSWESbkmaQHTmw==} + /@babel/helper-wrap-function@7.22.20: + resolution: {integrity: sha512-pms/UwkOpnQe/PDAEdV/d7dVCoBbB+R4FvYoHGZz+4VPcg7RtYy2KP7S2lbuWM6FCSgob5wshfGESbC/hzNXZw==} engines: {node: '>=6.9.0'} dependencies: + '@babel/helper-function-name': 7.23.0 '@babel/template': 7.22.15 - '@babel/traverse': 7.22.15 - '@babel/types': 7.22.15 - transitivePeerDependencies: - - supports-color + '@babel/types': 7.23.0 dev: true /@babel/helpers@7.23.2: @@ -1436,21 +1339,14 @@ packages: transitivePeerDependencies: - supports-color - /@babel/highlight@7.22.13: - resolution: {integrity: sha512-C/BaXcnnvBCmHTpz/VGZ8jgtE2aYlW4hxDhseJAWZb7gqGM/qtCK6iZUb0TyKFf7BOUsBH7Q7fkRsDRhg1XklQ==} + /@babel/highlight@7.22.20: + resolution: {integrity: sha512-dkdMCN3py0+ksCgYmGG8jKeGA/8Tk+gJwSYYlFGxG5lmhfKNoAy004YpLxpS1W2J8m/EK2Ew+yOs9pVRwO89mg==} engines: {node: '>=6.9.0'} dependencies: - '@babel/helper-validator-identifier': 7.22.15 + '@babel/helper-validator-identifier': 7.22.20 chalk: 2.4.2 js-tokens: 4.0.0 - /@babel/parser@7.22.15: - resolution: {integrity: sha512-RWmQ/sklUN9BvGGpCDgSubhHWfAx24XDTDObup4ffvxaYsptOg2P3KG0j+1eWKLxpkX0j0uHxmpq2Z1SP/VhxA==} - engines: {node: '>=6.0.0'} - hasBin: true - dependencies: - '@babel/types': 7.22.15 - /@babel/parser@7.23.0: resolution: {integrity: sha512-vvPKKdMemU85V9WE/l5wZEmImpCtLqbnTvqDS2U1fJ96KrxoW7KrXhNsNCblQlg8Ck4b85yxdTyelsMUgFUXiw==} engines: {node: '>=6.0.0'} @@ -1477,7 +1373,7 @@ packages: '@babel/core': 7.23.2 '@babel/helper-plugin-utils': 7.22.5 '@babel/helper-skip-transparent-expression-wrappers': 7.22.5 - '@babel/plugin-transform-optional-chaining': 7.22.15(@babel/core@7.23.2) + '@babel/plugin-transform-optional-chaining': 7.23.0(@babel/core@7.23.2) dev: true /@babel/plugin-proposal-async-generator-functions@7.20.7(@babel/core@7.23.2): @@ -1488,9 +1384,9 @@ packages: '@babel/core': ^7.0.0-0 dependencies: '@babel/core': 7.23.2 - '@babel/helper-environment-visitor': 7.22.5 + '@babel/helper-environment-visitor': 7.22.20 '@babel/helper-plugin-utils': 7.22.5 - '@babel/helper-remap-async-to-generator': 7.22.9(@babel/core@7.23.2) + '@babel/helper-remap-async-to-generator': 7.22.20(@babel/core@7.23.2) '@babel/plugin-syntax-async-generators': 7.8.4(@babel/core@7.23.2) dev: true @@ -1598,7 +1494,7 @@ packages: peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/compat-data': 7.22.9 + '@babel/compat-data': 7.23.2 '@babel/core': 7.23.2 '@babel/helper-compilation-targets': 7.22.15 '@babel/helper-plugin-utils': 7.22.5 @@ -1669,15 +1565,6 @@ packages: '@babel/helper-plugin-utils': 7.22.5 dev: true - /@babel/plugin-syntax-async-generators@7.8.4(@babel/core@7.22.15): - resolution: {integrity: sha512-tycmZxkGfZaxhMRbXlPXuVFpdWlXpir2W4AMhSJgRKzk/eDlIXOhb2LHWoLpDF7TEHylV5zNhykX6KAgHJmTNw==} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.22.15 - '@babel/helper-plugin-utils': 7.22.5 - dev: true - /@babel/plugin-syntax-async-generators@7.8.4(@babel/core@7.23.2): resolution: {integrity: sha512-tycmZxkGfZaxhMRbXlPXuVFpdWlXpir2W4AMhSJgRKzk/eDlIXOhb2LHWoLpDF7TEHylV5zNhykX6KAgHJmTNw==} peerDependencies: @@ -1687,15 +1574,6 @@ packages: '@babel/helper-plugin-utils': 7.22.5 dev: true - /@babel/plugin-syntax-bigint@7.8.3(@babel/core@7.22.15): - resolution: {integrity: sha512-wnTnFlG+YxQm3vDxpGE57Pj0srRU4sHE/mDkt1qv2YJJSeUAec2ma4WLUnUPeKjyrfntVwe/N6dCXpU+zL3Npg==} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.22.15 - '@babel/helper-plugin-utils': 7.22.5 - dev: true - /@babel/plugin-syntax-bigint@7.8.3(@babel/core@7.23.2): resolution: {integrity: sha512-wnTnFlG+YxQm3vDxpGE57Pj0srRU4sHE/mDkt1qv2YJJSeUAec2ma4WLUnUPeKjyrfntVwe/N6dCXpU+zL3Npg==} peerDependencies: @@ -1705,15 +1583,6 @@ packages: '@babel/helper-plugin-utils': 7.22.5 dev: true - /@babel/plugin-syntax-class-properties@7.12.13(@babel/core@7.22.15): - resolution: {integrity: sha512-fm4idjKla0YahUNgFNLCB0qySdsoPiZP3iQE3rky0mBUtMZ23yDJ9SJdg6dXTSDnulOVqiF3Hgr9nbXvXTQZYA==} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.22.15 - '@babel/helper-plugin-utils': 7.22.5 - dev: true - /@babel/plugin-syntax-class-properties@7.12.13(@babel/core@7.23.2): resolution: {integrity: sha512-fm4idjKla0YahUNgFNLCB0qySdsoPiZP3iQE3rky0mBUtMZ23yDJ9SJdg6dXTSDnulOVqiF3Hgr9nbXvXTQZYA==} peerDependencies: @@ -1751,15 +1620,6 @@ packages: '@babel/helper-plugin-utils': 7.22.5 dev: true - /@babel/plugin-syntax-import-meta@7.10.4(@babel/core@7.22.15): - resolution: {integrity: sha512-Yqfm+XDx0+Prh3VSeEQCPU81yC+JWZ2pDPFSS4ZdpfZhp4MkFMaDC1UqseovEKwSUpnIL7+vK+Clp7bfh0iD7g==} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.22.15 - '@babel/helper-plugin-utils': 7.22.5 - dev: true - /@babel/plugin-syntax-import-meta@7.10.4(@babel/core@7.23.2): resolution: {integrity: sha512-Yqfm+XDx0+Prh3VSeEQCPU81yC+JWZ2pDPFSS4ZdpfZhp4MkFMaDC1UqseovEKwSUpnIL7+vK+Clp7bfh0iD7g==} peerDependencies: @@ -1769,15 +1629,6 @@ packages: '@babel/helper-plugin-utils': 7.22.5 dev: true - /@babel/plugin-syntax-json-strings@7.8.3(@babel/core@7.22.15): - resolution: {integrity: sha512-lY6kdGpWHvjoe2vk4WrAapEuBR69EMxZl+RoGRhrFGNYVK8mOPAW8VfbT/ZgrFbXlDNiiaxQnAtgVCZ6jv30EA==} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.22.15 - '@babel/helper-plugin-utils': 7.22.5 - dev: true - /@babel/plugin-syntax-json-strings@7.8.3(@babel/core@7.23.2): resolution: {integrity: sha512-lY6kdGpWHvjoe2vk4WrAapEuBR69EMxZl+RoGRhrFGNYVK8mOPAW8VfbT/ZgrFbXlDNiiaxQnAtgVCZ6jv30EA==} peerDependencies: @@ -1787,15 +1638,6 @@ packages: '@babel/helper-plugin-utils': 7.22.5 dev: true - /@babel/plugin-syntax-logical-assignment-operators@7.10.4(@babel/core@7.22.15): - resolution: {integrity: sha512-d8waShlpFDinQ5MtvGU9xDAOzKH47+FFoney2baFIoMr952hKOLp1HR7VszoZvOsV/4+RRszNY7D17ba0te0ig==} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.22.15 - '@babel/helper-plugin-utils': 7.22.5 - dev: true - /@babel/plugin-syntax-logical-assignment-operators@7.10.4(@babel/core@7.23.2): resolution: {integrity: sha512-d8waShlpFDinQ5MtvGU9xDAOzKH47+FFoney2baFIoMr952hKOLp1HR7VszoZvOsV/4+RRszNY7D17ba0te0ig==} peerDependencies: @@ -1805,15 +1647,6 @@ packages: '@babel/helper-plugin-utils': 7.22.5 dev: true - /@babel/plugin-syntax-nullish-coalescing-operator@7.8.3(@babel/core@7.22.15): - resolution: {integrity: sha512-aSff4zPII1u2QD7y+F8oDsz19ew4IGEJg9SVW+bqwpwtfFleiQDMdzA/R+UlWDzfnHFCxxleFT0PMIrR36XLNQ==} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.22.15 - '@babel/helper-plugin-utils': 7.22.5 - dev: true - /@babel/plugin-syntax-nullish-coalescing-operator@7.8.3(@babel/core@7.23.2): resolution: {integrity: sha512-aSff4zPII1u2QD7y+F8oDsz19ew4IGEJg9SVW+bqwpwtfFleiQDMdzA/R+UlWDzfnHFCxxleFT0PMIrR36XLNQ==} peerDependencies: @@ -1823,15 +1656,6 @@ packages: '@babel/helper-plugin-utils': 7.22.5 dev: true - /@babel/plugin-syntax-numeric-separator@7.10.4(@babel/core@7.22.15): - resolution: {integrity: sha512-9H6YdfkcK/uOnY/K7/aA2xpzaAgkQn37yzWUMRK7OaPOqOpGS1+n0H5hxT9AUw9EsSjPW8SVyMJwYRtWs3X3ug==} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.22.15 - '@babel/helper-plugin-utils': 7.22.5 - dev: true - /@babel/plugin-syntax-numeric-separator@7.10.4(@babel/core@7.23.2): resolution: {integrity: sha512-9H6YdfkcK/uOnY/K7/aA2xpzaAgkQn37yzWUMRK7OaPOqOpGS1+n0H5hxT9AUw9EsSjPW8SVyMJwYRtWs3X3ug==} peerDependencies: @@ -1841,15 +1665,6 @@ packages: '@babel/helper-plugin-utils': 7.22.5 dev: true - /@babel/plugin-syntax-object-rest-spread@7.8.3(@babel/core@7.22.15): - resolution: {integrity: sha512-XoqMijGZb9y3y2XskN+P1wUGiVwWZ5JmoDRwx5+3GmEplNyVM2s2Dg8ILFQm8rWM48orGy5YpI5Bl8U1y7ydlA==} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.22.15 - '@babel/helper-plugin-utils': 7.22.5 - dev: true - /@babel/plugin-syntax-object-rest-spread@7.8.3(@babel/core@7.23.2): resolution: {integrity: sha512-XoqMijGZb9y3y2XskN+P1wUGiVwWZ5JmoDRwx5+3GmEplNyVM2s2Dg8ILFQm8rWM48orGy5YpI5Bl8U1y7ydlA==} peerDependencies: @@ -1859,15 +1674,6 @@ packages: '@babel/helper-plugin-utils': 7.22.5 dev: true - /@babel/plugin-syntax-optional-catch-binding@7.8.3(@babel/core@7.22.15): - resolution: {integrity: sha512-6VPD0Pc1lpTqw0aKoeRTMiB+kWhAoT24PA+ksWSBrFtl5SIRVpZlwN3NNPQjehA2E/91FV3RjLWoVTglWcSV3Q==} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.22.15 - '@babel/helper-plugin-utils': 7.22.5 - dev: true - /@babel/plugin-syntax-optional-catch-binding@7.8.3(@babel/core@7.23.2): resolution: {integrity: sha512-6VPD0Pc1lpTqw0aKoeRTMiB+kWhAoT24PA+ksWSBrFtl5SIRVpZlwN3NNPQjehA2E/91FV3RjLWoVTglWcSV3Q==} peerDependencies: @@ -1877,15 +1683,6 @@ packages: '@babel/helper-plugin-utils': 7.22.5 dev: true - /@babel/plugin-syntax-optional-chaining@7.8.3(@babel/core@7.22.15): - resolution: {integrity: sha512-KoK9ErH1MBlCPxV0VANkXW2/dw4vlbGDrFgz8bmUsBGYkFRcbRwMh6cIJubdPrkxRwuGdtCk0v/wPTKbQgBjkg==} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.22.15 - '@babel/helper-plugin-utils': 7.22.5 - dev: true - /@babel/plugin-syntax-optional-chaining@7.8.3(@babel/core@7.23.2): resolution: {integrity: sha512-KoK9ErH1MBlCPxV0VANkXW2/dw4vlbGDrFgz8bmUsBGYkFRcbRwMh6cIJubdPrkxRwuGdtCk0v/wPTKbQgBjkg==} peerDependencies: @@ -1905,16 +1702,6 @@ packages: '@babel/helper-plugin-utils': 7.22.5 dev: true - /@babel/plugin-syntax-top-level-await@7.14.5(@babel/core@7.22.15): - resolution: {integrity: sha512-hx++upLv5U1rgYfwe1xBQUhRmU41NEvpUvrp8jkrSCdvGSnM5/qdRMtylJ6PG5OFkBaHkbTAKTnd3/YyESRHFw==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.22.15 - '@babel/helper-plugin-utils': 7.22.5 - dev: true - /@babel/plugin-syntax-top-level-await@7.14.5(@babel/core@7.23.2): resolution: {integrity: sha512-hx++upLv5U1rgYfwe1xBQUhRmU41NEvpUvrp8jkrSCdvGSnM5/qdRMtylJ6PG5OFkBaHkbTAKTnd3/YyESRHFw==} engines: {node: '>=6.9.0'} @@ -1925,13 +1712,13 @@ packages: '@babel/helper-plugin-utils': 7.22.5 dev: true - /@babel/plugin-syntax-typescript@7.22.5(@babel/core@7.22.15): + /@babel/plugin-syntax-typescript@7.22.5(@babel/core@7.23.2): resolution: {integrity: sha512-1mS2o03i7t1c6VzH6fdQ3OA8tcEIxwG18zIPRp+UY1Ihv6W+XZzBCVxExF9upussPXJ0xE9XRHwMoNs1ep/nRQ==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.22.15 + '@babel/core': 7.23.2 '@babel/helper-plugin-utils': 7.22.5 dev: true @@ -1954,7 +1741,7 @@ packages: '@babel/core': 7.23.2 '@babel/helper-module-imports': 7.22.15 '@babel/helper-plugin-utils': 7.22.5 - '@babel/helper-remap-async-to-generator': 7.22.9(@babel/core@7.23.2) + '@babel/helper-remap-async-to-generator': 7.22.20(@babel/core@7.23.2) dev: true /@babel/plugin-transform-block-scoped-functions@7.22.5(@babel/core@7.23.2): @@ -1967,8 +1754,8 @@ packages: '@babel/helper-plugin-utils': 7.22.5 dev: true - /@babel/plugin-transform-block-scoping@7.22.15(@babel/core@7.23.2): - resolution: {integrity: sha512-G1czpdJBZCtngoK1sJgloLiOHUnkb/bLZwqVZD8kXmq0ZnVfTTWUcs9OWtp0mBtYJ+4LQY1fllqBkOIPhXmFmw==} + /@babel/plugin-transform-block-scoping@7.23.0(@babel/core@7.23.2): + resolution: {integrity: sha512-cOsrbmIOXmf+5YbL99/S49Y3j46k/T16b9ml8bm9lP6N9US5iQ2yBK7gpui1pg0V/WMcXdkfKbTb7HXq9u+v4g==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 @@ -1986,11 +1773,11 @@ packages: '@babel/core': 7.23.2 '@babel/helper-annotate-as-pure': 7.22.5 '@babel/helper-compilation-targets': 7.22.15 - '@babel/helper-environment-visitor': 7.22.5 - '@babel/helper-function-name': 7.22.5 + '@babel/helper-environment-visitor': 7.22.20 + '@babel/helper-function-name': 7.23.0 '@babel/helper-optimise-call-expression': 7.22.5 '@babel/helper-plugin-utils': 7.22.5 - '@babel/helper-replace-supers': 7.22.9(@babel/core@7.23.2) + '@babel/helper-replace-supers': 7.22.20(@babel/core@7.23.2) '@babel/helper-split-export-declaration': 7.22.6 globals: 11.12.0 dev: true @@ -2006,8 +1793,8 @@ packages: '@babel/template': 7.22.15 dev: true - /@babel/plugin-transform-destructuring@7.22.15(@babel/core@7.23.2): - resolution: {integrity: sha512-HzG8sFl1ZVGTme74Nw+X01XsUTqERVQ6/RLHo3XjGRzm7XD6QTtfS3NJotVgCGy8BzkDqRjRBD8dAyJn5TuvSQ==} + /@babel/plugin-transform-destructuring@7.23.0(@babel/core@7.23.2): + resolution: {integrity: sha512-vaMdgNXFkYrB+8lbgniSYWHsgqK5gjaMNcc84bMIOMRLH0L9AqYq3hwMdvnyqj1OPqea8UtjPEuS/DCenah1wg==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 @@ -2066,7 +1853,7 @@ packages: dependencies: '@babel/core': 7.23.2 '@babel/helper-compilation-targets': 7.22.15 - '@babel/helper-function-name': 7.22.5 + '@babel/helper-function-name': 7.23.0 '@babel/helper-plugin-utils': 7.22.5 dev: true @@ -2090,40 +1877,40 @@ packages: '@babel/helper-plugin-utils': 7.22.5 dev: true - /@babel/plugin-transform-modules-amd@7.22.5(@babel/core@7.23.2): - resolution: {integrity: sha512-R+PTfLTcYEmb1+kK7FNkhQ1gP4KgjpSO6HfH9+f8/yfp2Nt3ggBjiVpRwmwTlfqZLafYKJACy36yDXlEmI9HjQ==} + /@babel/plugin-transform-modules-amd@7.23.0(@babel/core@7.23.2): + resolution: {integrity: sha512-xWT5gefv2HGSm4QHtgc1sYPbseOyf+FFDo2JbpE25GWl5BqTGO9IMwTYJRoIdjsF85GE+VegHxSCUt5EvoYTAw==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: '@babel/core': 7.23.2 - '@babel/helper-module-transforms': 7.22.15(@babel/core@7.23.2) + '@babel/helper-module-transforms': 7.23.0(@babel/core@7.23.2) '@babel/helper-plugin-utils': 7.22.5 dev: true - /@babel/plugin-transform-modules-commonjs@7.22.15(@babel/core@7.23.2): - resolution: {integrity: sha512-jWL4eh90w0HQOTKP2MoXXUpVxilxsB2Vl4ji69rSjS3EcZ/v4sBmn+A3NpepuJzBhOaEBbR7udonlHHn5DWidg==} + /@babel/plugin-transform-modules-commonjs@7.23.0(@babel/core@7.23.2): + resolution: {integrity: sha512-32Xzss14/UVc7k9g775yMIvkVK8xwKE0DPdP5JTapr3+Z9w4tzeOuLNY6BXDQR6BdnzIlXnCGAzsk/ICHBLVWQ==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: '@babel/core': 7.23.2 - '@babel/helper-module-transforms': 7.22.15(@babel/core@7.23.2) + '@babel/helper-module-transforms': 7.23.0(@babel/core@7.23.2) '@babel/helper-plugin-utils': 7.22.5 '@babel/helper-simple-access': 7.22.5 dev: true - /@babel/plugin-transform-modules-systemjs@7.22.11(@babel/core@7.23.2): - resolution: {integrity: sha512-rIqHmHoMEOhI3VkVf5jQ15l539KrwhzqcBO6wdCNWPWc/JWt9ILNYNUssbRpeq0qWns8svuw8LnMNCvWBIJ8wA==} + /@babel/plugin-transform-modules-systemjs@7.23.0(@babel/core@7.23.2): + resolution: {integrity: sha512-qBej6ctXZD2f+DhlOC9yO47yEYgUh5CZNz/aBoH4j/3NOlRfJXJbY7xDQCqQVf9KbrqGzIWER1f23doHGrIHFg==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: '@babel/core': 7.23.2 '@babel/helper-hoist-variables': 7.22.5 - '@babel/helper-module-transforms': 7.22.15(@babel/core@7.23.2) + '@babel/helper-module-transforms': 7.23.0(@babel/core@7.23.2) '@babel/helper-plugin-utils': 7.22.5 - '@babel/helper-validator-identifier': 7.22.15 + '@babel/helper-validator-identifier': 7.22.20 dev: true /@babel/plugin-transform-modules-umd@7.22.5(@babel/core@7.23.2): @@ -2133,7 +1920,7 @@ packages: '@babel/core': ^7.0.0-0 dependencies: '@babel/core': 7.23.2 - '@babel/helper-module-transforms': 7.22.15(@babel/core@7.23.2) + '@babel/helper-module-transforms': 7.23.0(@babel/core@7.23.2) '@babel/helper-plugin-utils': 7.22.5 dev: true @@ -2166,11 +1953,11 @@ packages: dependencies: '@babel/core': 7.23.2 '@babel/helper-plugin-utils': 7.22.5 - '@babel/helper-replace-supers': 7.22.9(@babel/core@7.23.2) + '@babel/helper-replace-supers': 7.22.20(@babel/core@7.23.2) dev: true - /@babel/plugin-transform-optional-chaining@7.22.15(@babel/core@7.23.2): - resolution: {integrity: sha512-ngQ2tBhq5vvSJw2Q2Z9i7ealNkpDMU0rGWnHPKqRZO0tzZ5tlaoz4hDvhXioOoaE0X2vfNss1djwg0DXlfu30A==} + /@babel/plugin-transform-optional-chaining@7.23.0(@babel/core@7.23.2): + resolution: {integrity: sha512-sBBGXbLJjxTzLBF5rFWaikMnOGOk/BmK6vVByIdEggZ7Vn6CvWXZyRkkLFK6WE0IF8jSliyOkUN6SScFgzCM0g==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 @@ -2222,8 +2009,8 @@ packages: '@babel/helper-plugin-utils': 7.22.5 dev: true - /@babel/plugin-transform-runtime@7.22.15(@babel/core@7.23.2): - resolution: {integrity: sha512-tEVLhk8NRZSmwQ0DJtxxhTrCht1HVo8VaMzYT4w6lwyKBuHsgoioAUA7/6eT2fRfc5/23fuGdlwIxXhRVgWr4g==} + /@babel/plugin-transform-runtime@7.23.2(@babel/core@7.23.2): + resolution: {integrity: sha512-XOntj6icgzMS58jPVtQpiuF6ZFWxQiJavISGx5KGjRj+3gqZr8+N6Kx+N9BApWzgS+DOjIZfXXj0ZesenOWDyA==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 @@ -2231,9 +2018,9 @@ packages: '@babel/core': 7.23.2 '@babel/helper-module-imports': 7.22.15 '@babel/helper-plugin-utils': 7.22.5 - babel-plugin-polyfill-corejs2: 0.4.5(@babel/core@7.23.2) - babel-plugin-polyfill-corejs3: 0.8.3(@babel/core@7.23.2) - babel-plugin-polyfill-regenerator: 0.5.2(@babel/core@7.23.2) + babel-plugin-polyfill-corejs2: 0.4.6(@babel/core@7.23.2) + babel-plugin-polyfill-corejs3: 0.8.5(@babel/core@7.23.2) + babel-plugin-polyfill-regenerator: 0.5.3(@babel/core@7.23.2) semver: 6.3.1 transitivePeerDependencies: - supports-color @@ -2317,7 +2104,7 @@ packages: peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/compat-data': 7.22.9 + '@babel/compat-data': 7.23.2 '@babel/core': 7.23.2 '@babel/helper-compilation-targets': 7.22.15 '@babel/helper-plugin-utils': 7.22.5 @@ -2356,10 +2143,10 @@ packages: '@babel/plugin-transform-arrow-functions': 7.22.5(@babel/core@7.23.2) '@babel/plugin-transform-async-to-generator': 7.22.5(@babel/core@7.23.2) '@babel/plugin-transform-block-scoped-functions': 7.22.5(@babel/core@7.23.2) - '@babel/plugin-transform-block-scoping': 7.22.15(@babel/core@7.23.2) + '@babel/plugin-transform-block-scoping': 7.23.0(@babel/core@7.23.2) '@babel/plugin-transform-classes': 7.22.15(@babel/core@7.23.2) '@babel/plugin-transform-computed-properties': 7.22.5(@babel/core@7.23.2) - '@babel/plugin-transform-destructuring': 7.22.15(@babel/core@7.23.2) + '@babel/plugin-transform-destructuring': 7.23.0(@babel/core@7.23.2) '@babel/plugin-transform-dotall-regex': 7.22.5(@babel/core@7.23.2) '@babel/plugin-transform-duplicate-keys': 7.22.5(@babel/core@7.23.2) '@babel/plugin-transform-exponentiation-operator': 7.22.5(@babel/core@7.23.2) @@ -2367,9 +2154,9 @@ packages: '@babel/plugin-transform-function-name': 7.22.5(@babel/core@7.23.2) '@babel/plugin-transform-literals': 7.22.5(@babel/core@7.23.2) '@babel/plugin-transform-member-expression-literals': 7.22.5(@babel/core@7.23.2) - '@babel/plugin-transform-modules-amd': 7.22.5(@babel/core@7.23.2) - '@babel/plugin-transform-modules-commonjs': 7.22.15(@babel/core@7.23.2) - '@babel/plugin-transform-modules-systemjs': 7.22.11(@babel/core@7.23.2) + '@babel/plugin-transform-modules-amd': 7.23.0(@babel/core@7.23.2) + '@babel/plugin-transform-modules-commonjs': 7.23.0(@babel/core@7.23.2) + '@babel/plugin-transform-modules-systemjs': 7.23.0(@babel/core@7.23.2) '@babel/plugin-transform-modules-umd': 7.22.5(@babel/core@7.23.2) '@babel/plugin-transform-named-capturing-groups-regex': 7.22.5(@babel/core@7.23.2) '@babel/plugin-transform-new-target': 7.22.5(@babel/core@7.23.2) @@ -2386,11 +2173,11 @@ packages: '@babel/plugin-transform-unicode-escapes': 7.22.10(@babel/core@7.23.2) '@babel/plugin-transform-unicode-regex': 7.22.5(@babel/core@7.23.2) '@babel/preset-modules': 0.1.6(@babel/core@7.23.2) - '@babel/types': 7.22.15 + '@babel/types': 7.23.0 babel-plugin-polyfill-corejs2: 0.2.3(@babel/core@7.23.2) babel-plugin-polyfill-corejs3: 0.3.0(@babel/core@7.23.2) babel-plugin-polyfill-regenerator: 0.2.3(@babel/core@7.23.2) - core-js-compat: 3.32.1 + core-js-compat: 3.33.0 semver: 6.3.1 transitivePeerDependencies: - supports-color @@ -2405,7 +2192,7 @@ packages: '@babel/helper-plugin-utils': 7.22.5 '@babel/plugin-proposal-unicode-property-regex': 7.18.6(@babel/core@7.23.2) '@babel/plugin-transform-dotall-regex': 7.22.5(@babel/core@7.23.2) - '@babel/types': 7.22.15 + '@babel/types': 7.23.0 esutils: 2.0.3 dev: true @@ -2413,44 +2200,19 @@ packages: resolution: {integrity: sha512-x/rqGMdzj+fWZvCOYForTghzbtqPDZ5gPwaoNGHdgDfF2QA/XZbCBp4Moo5scrkAMPhB7z26XM/AaHuIJdgauA==} dev: true - /@babel/runtime@7.22.15: - resolution: {integrity: sha512-T0O+aa+4w0u06iNmapipJXMV4HoUir03hpx3/YqXXhu9xim3w+dVphjFWl1OH8NbZHw5Lbm9k45drDkgq2VNNA==} + /@babel/runtime@7.23.2: + resolution: {integrity: sha512-mM8eg4yl5D6i3lu2QKPuPH4FArvJ8KhTofbE7jwMUv9KX5mBvwPAqnV3MlyBNqdp9RyRKP6Yck8TrfYrPvX3bg==} engines: {node: '>=6.9.0'} dependencies: regenerator-runtime: 0.14.0 - /@babel/runtime@7.23.1: - resolution: {integrity: sha512-hC2v6p8ZSI/W0HUzh3V8C5g+NwSKzKPtJwSpTjwl0o297GP9+ZLQSkdvHz46CM3LqyoXxq+5G9komY+eSqSO0g==} - engines: {node: '>=6.9.0'} - dependencies: - regenerator-runtime: 0.14.0 - dev: false - /@babel/template@7.22.15: resolution: {integrity: sha512-QPErUVm4uyJa60rkI73qneDacvdvzxshT3kksGqlGWYdOTIUOwJ7RDUL8sGqslY1uXWSL6xMFKEXDS3ox2uF0w==} engines: {node: '>=6.9.0'} dependencies: '@babel/code-frame': 7.22.13 - '@babel/parser': 7.22.15 - '@babel/types': 7.22.15 - - /@babel/traverse@7.22.15: - resolution: {integrity: sha512-DdHPwvJY0sEeN4xJU5uRLmZjgMMDIvMPniLuYzUVXj/GGzysPl0/fwt44JBkyUIzGJPV8QgHMcQdQ34XFuKTYQ==} - engines: {node: '>=6.9.0'} - dependencies: - '@babel/code-frame': 7.22.13 - '@babel/generator': 7.22.15 - '@babel/helper-environment-visitor': 7.22.5 - '@babel/helper-function-name': 7.22.5 - '@babel/helper-hoist-variables': 7.22.5 - '@babel/helper-split-export-declaration': 7.22.6 - '@babel/parser': 7.22.15 - '@babel/types': 7.22.15 - debug: 4.3.4(supports-color@8.1.1) - globals: 11.12.0 - transitivePeerDependencies: - - supports-color - dev: true + '@babel/parser': 7.23.0 + '@babel/types': 7.23.0 /@babel/traverse@7.23.2: resolution: {integrity: sha512-azpe59SQ48qG6nu2CzcMLbxUudtN+dOM9kDbUqGq3HXUJRlo7i8fvPoxQUzYgLZ4cMVmuZgm8vvBpNeRhd6XSw==} @@ -2469,14 +2231,6 @@ packages: transitivePeerDependencies: - supports-color - /@babel/types@7.22.15: - resolution: {integrity: sha512-X+NLXr0N8XXmN5ZsaQdm9U2SSC3UbIYq/doL++sueHOTisgZHoKaQtZxGuV2cUPQHMfjKEfg/g6oy7Hm6SKFtA==} - engines: {node: '>=6.9.0'} - dependencies: - '@babel/helper-string-parser': 7.22.5 - '@babel/helper-validator-identifier': 7.22.15 - to-fast-properties: 2.0.0 - /@babel/types@7.23.0: resolution: {integrity: sha512-0oIyUfKoI3mSqMvsxBdclDwxXKXAUA8v/apZbc+iSyARYou1o8ZGDxbUYyLFoW2arqS2jDGqJuZvv1d/io1axg==} engines: {node: '>=6.9.0'} @@ -2529,7 +2283,7 @@ packages: engines: {node: '>= 10.0.0'} dependencies: '@metamask/safe-event-emitter': 2.0.0 - '@solana/web3.js': 1.78.4 + '@solana/web3.js': 1.87.1 bind-decorator: 1.0.11 bn.js: 5.2.1 buffer: 6.0.3 @@ -2538,8 +2292,8 @@ packages: eth-json-rpc-filters: 4.2.2 eth-rpc-errors: 4.0.2 json-rpc-engine: 6.1.0 - keccak: 3.0.3 - preact: 10.17.1 + keccak: 3.0.4 + preact: 10.18.1 qs: 6.11.2 rxjs: 6.6.7 sha.js: 2.4.11 @@ -2553,12 +2307,12 @@ packages: - utf-8-validate dev: false - /@coinbase/wallet-sdk@3.7.1: - resolution: {integrity: sha512-LjyoDCB+7p0waQXfK+fUgcAs3Ezk6S6e+LYaoFjpJ6c9VTop3NyZF40Pi7df4z7QJohCwzuIDjz0Rhtig6Y7Pg==} + /@coinbase/wallet-sdk@3.7.2: + resolution: {integrity: sha512-lIGvXMsgpsQWci/XOMQIJ2nIZ8JUy/L+bvC0wkRaYarr0YylwpXrJ2gRM3hCXPS477pkyO7N/kSiAoRgEXUdJQ==} engines: {node: '>= 10.0.0'} dependencies: '@metamask/safe-event-emitter': 2.0.0 - '@solana/web3.js': 1.78.4 + '@solana/web3.js': 1.87.1 bind-decorator: 1.0.11 bn.js: 5.2.1 buffer: 6.0.3 @@ -2567,8 +2321,8 @@ packages: eth-json-rpc-filters: 5.1.0 eth-rpc-errors: 4.0.2 json-rpc-engine: 6.1.0 - keccak: 3.0.3 - preact: 10.17.1 + keccak: 3.0.4 + preact: 10.18.1 qs: 6.11.2 rxjs: 6.6.7 sha.js: 2.4.11 @@ -2594,8 +2348,8 @@ packages: '@jridgewell/trace-mapping': 0.3.9 dev: true - /@defi-wonderland/smock@2.3.5(@ethersproject/abi@5.7.0)(@ethersproject/abstract-provider@5.7.0)(@ethersproject/abstract-signer@5.7.0)(@nomiclabs/hardhat-ethers@2.2.3)(ethers@6.8.0)(hardhat@2.18.1): - resolution: {integrity: sha512-klANj1hUpc3cd2ShXdVH/bEGwxJd+LxOngkF5gLcIbg6b37RCgMPMmR/94/hgL62F8bfWtuNKsQD7K+c6M5fWQ==} + /@defi-wonderland/smock@2.3.4(@ethersproject/abi@5.7.0)(@ethersproject/abstract-provider@5.7.0)(@ethersproject/abstract-signer@5.7.0)(@nomiclabs/hardhat-ethers@2.2.3)(ethers@5.7.2)(hardhat@2.18.1): + resolution: {integrity: sha512-VYJbsoCOdFRyGkAwvaQhQRrU6V8AjK3five8xdbo41DEE9n3qXzUNBUxyD9HhXB/dWWPFWT21IGw5Ztl6Qw3Ew==} peerDependencies: '@ethersproject/abi': ^5 '@ethersproject/abstract-provider': ^5 @@ -2610,9 +2364,9 @@ packages: '@nomicfoundation/ethereumjs-evm': 1.3.2 '@nomicfoundation/ethereumjs-util': 8.0.6 '@nomicfoundation/ethereumjs-vm': 6.4.2 - '@nomiclabs/hardhat-ethers': 2.2.3(ethers@6.8.0)(hardhat@2.18.1) + '@nomiclabs/hardhat-ethers': 2.2.3(ethers@5.7.2)(hardhat@2.18.1) diff: 5.1.0 - ethers: 6.8.0 + ethers: 5.7.2 hardhat: 2.18.1(ts-node@10.9.1)(typescript@5.2.2) lodash.isequal: 4.5.0 lodash.isequalwith: 4.4.0 @@ -2656,6 +2410,15 @@ packages: dev: true optional: true + /@esbuild/android-arm@0.15.18: + resolution: {integrity: sha512-5GT+kcs2WVGjVs7+boataCkO5Fg0y4kCjzkB5bAip7H4jfnOS3dA6KPiww9W1OEKTKeAcUVhdZGvgI65OXmUnw==} + engines: {node: '>=12'} + cpu: [arm] + os: [android] + requiresBuild: true + dev: true + optional: true + /@esbuild/android-arm@0.18.20: resolution: {integrity: sha512-fyi7TDI/ijKKNZTUJAQqiG5T7YjJXgnzkURqmGj13C6dCqckZBLdl4h7bkhHt/t0WP+zO9/zwroDvANaOqO5Sw==} engines: {node: '>=12'} @@ -2746,6 +2509,15 @@ packages: dev: true optional: true + /@esbuild/linux-loong64@0.15.18: + resolution: {integrity: sha512-L4jVKS82XVhw2nvzLg/19ClLWg0y27ulRwuP7lcyL6AbUWB5aPglXY3M21mauDQMDfRLs8cQmeT03r/+X3cZYQ==} + engines: {node: '>=12'} + cpu: [loong64] + os: [linux] + requiresBuild: true + dev: true + optional: true + /@esbuild/linux-loong64@0.18.20: resolution: {integrity: sha512-nXW8nqBTrOpDLPgPY9uV+/1DjxoQ7DoB2N8eocyq8I9XuqJ7BiAMDMf9n1xZM9TgW0J8zrquIb/A7s3BJv7rjg==} engines: {node: '>=12'} @@ -2864,16 +2636,6 @@ packages: eslint-visitor-keys: 3.4.3 dev: true - /@eslint-community/eslint-utils@4.4.0(eslint@8.28.0): - resolution: {integrity: sha512-1/sA4dwrzBAyeUoQ6oxahHKmrZvsnLCg4RfxW3ZFGGmQkSNQPFNLV9CUEFQP1x9EYXHTo5p6xdhZM1Ne9p/AfA==} - engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} - peerDependencies: - eslint: ^6.0.0 || ^7.0.0 || >=8.0.0 - dependencies: - eslint: 8.28.0 - eslint-visitor-keys: 3.4.3 - dev: true - /@eslint-community/eslint-utils@4.4.0(eslint@8.51.0): resolution: {integrity: sha512-1/sA4dwrzBAyeUoQ6oxahHKmrZvsnLCg4RfxW3ZFGGmQkSNQPFNLV9CUEFQP1x9EYXHTo5p6xdhZM1Ne9p/AfA==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} @@ -2884,11 +2646,6 @@ packages: eslint-visitor-keys: 3.4.3 dev: true - /@eslint-community/regexpp@4.8.0: - resolution: {integrity: sha512-JylOEEzDiOryeUnFbQz+oViCXS0KsvR1mvHkoMiu5+UiBvy+RYX7tzlIIIEstF/gVa2tj9AQXk3dgnxv6KxhFg==} - engines: {node: ^12.0.0 || ^14.0.0 || >=16.0.0} - dev: true - /@eslint-community/regexpp@4.9.1: resolution: {integrity: sha512-Y27x+MBLjXa+0JWDhykM3+JE+il3kHKAEqabfEWq3SDhZjLYb6/BHL/JKFnH3fe207JaXkyDo685Oc2Glt6ifA==} engines: {node: ^12.0.0 || ^14.0.0 || >=16.0.0} @@ -2901,7 +2658,7 @@ packages: ajv: 6.12.6 debug: 4.3.4(supports-color@8.1.1) espree: 7.3.1 - globals: 13.21.0 + globals: 13.23.0 ignore: 4.0.6 import-fresh: 3.3.0 js-yaml: 3.14.1 @@ -2911,23 +2668,6 @@ packages: - supports-color dev: true - /@eslint/eslintrc@1.4.1: - resolution: {integrity: sha512-XXrH9Uarn0stsyldqDYq8r++mROmWRI1xKMXa640Bb//SY1+ECYX6VzT6Lcx5frD0V30XieqJ0oX9I2Xj5aoMA==} - engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} - dependencies: - ajv: 6.12.6 - debug: 4.3.4(supports-color@8.1.1) - espree: 9.6.1 - globals: 13.21.0 - ignore: 5.2.4 - import-fresh: 3.3.0 - js-yaml: 4.1.0 - minimatch: 3.1.2 - strip-json-comments: 3.1.1 - transitivePeerDependencies: - - supports-color - dev: true - /@eslint/eslintrc@2.1.2: resolution: {integrity: sha512-+wvgpDsrB1YqAMdEUCcnTlpfVBH7Vqn6A/NT3D8WVXFIaKMlErPIZT3oCIAVCOtarRpMtelZLqJeU3t7WY6X6g==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} @@ -3042,7 +2782,6 @@ packages: /@ethersproject/abi@5.0.0-beta.153: resolution: {integrity: sha512-aXweZ1Z7vMNzJdLpR1CZUAIgnwjrZeUSvN9syCwlBaEBUFJmFY+HHnfuTI5vIhVs/mRkfJVrbEyl51JZQqyjAg==} - requiresBuild: true dependencies: '@ethersproject/address': 5.7.0 '@ethersproject/bignumber': 5.7.0 @@ -3144,7 +2883,7 @@ packages: resolution: {integrity: sha512-DWvhuw7Dg8JPyhMbh/CNYOwsTLjXRx/HGkacIL5rBocG8jJC0kmixwoK/J3YblO4vtcyBLMa+sV74RJZK2iyHg==} dependencies: '@ethersproject/web': 5.7.1 - ethers: 5.7.2 + ethers: 5.7.1 scrypt-js: 3.0.1 transitivePeerDependencies: - bufferutil @@ -3222,6 +2961,33 @@ packages: dependencies: '@ethersproject/logger': 5.7.0 + /@ethersproject/providers@5.7.1: + resolution: {integrity: sha512-vZveG/DLyo+wk4Ga1yx6jSEHrLPgmTt+dFv0dv8URpVCRf0jVhalps1jq/emN/oXnMRsC7cQgAF32DcXLL7BPQ==} + dependencies: + '@ethersproject/abstract-provider': 5.7.0 + '@ethersproject/abstract-signer': 5.7.0 + '@ethersproject/address': 5.7.0 + '@ethersproject/base64': 5.7.0 + '@ethersproject/basex': 5.7.0 + '@ethersproject/bignumber': 5.7.0 + '@ethersproject/bytes': 5.7.0 + '@ethersproject/constants': 5.7.0 + '@ethersproject/hash': 5.7.0 + '@ethersproject/logger': 5.7.0 + '@ethersproject/networks': 5.7.1 + '@ethersproject/properties': 5.7.0 + '@ethersproject/random': 5.7.0 + '@ethersproject/rlp': 5.7.0 + '@ethersproject/sha2': 5.7.0 + '@ethersproject/strings': 5.7.0 + '@ethersproject/transactions': 5.7.0 + '@ethersproject/web': 5.7.1 + bech32: 1.1.4 + ws: 7.4.6 + transitivePeerDependencies: + - bufferutil + - utf-8-validate + /@ethersproject/providers@5.7.2: resolution: {integrity: sha512-g34EWZ1WWAVgr4aptGlVBF8mhl3VWjv+8hoAnzStu8Ah22VHBsuGzP17eb6xDVRzw895G4W7vvx60lFFur/1Rg==} dependencies: @@ -3398,7 +3164,7 @@ packages: ts-interface-checker: 0.1.13 dev: true - /@foundry-rs/hardhat-forge@0.1.17(@nomiclabs/hardhat-ethers@2.2.3)(ethereum-waffle@3.4.4)(ethers@6.8.0)(hardhat@2.18.1): + /@foundry-rs/hardhat-forge@0.1.17(@nomiclabs/hardhat-ethers@2.2.3)(ethereum-waffle@3.4.4)(ethers@5.7.2)(hardhat@2.18.1): resolution: {integrity: sha512-2wxzxA12CQmT11PH/KigyVTNm/4vzsVtzVZow6gwCbC41fTyf73a5qbggHZFRR74JXfmvVSkX1BJitTmdzQvxw==} peerDependencies: '@nomiclabs/hardhat-ethers': ^2.0.0 @@ -3407,14 +3173,14 @@ packages: hardhat: ^2.0.0 dependencies: '@foundry-rs/easy-foundryup': 0.1.3 - '@nomiclabs/hardhat-ethers': 2.2.3(ethers@6.8.0)(hardhat@2.18.1) - '@nomiclabs/hardhat-waffle': 2.0.6(@nomiclabs/hardhat-ethers@2.2.3)(@types/sinon-chai@3.2.10)(ethereum-waffle@3.4.4)(ethers@6.8.0)(hardhat@2.18.1) + '@nomiclabs/hardhat-ethers': 2.2.3(ethers@5.7.2)(hardhat@2.18.1) + '@nomiclabs/hardhat-waffle': 2.0.6(@nomiclabs/hardhat-ethers@2.2.3)(@types/sinon-chai@3.2.10)(ethereum-waffle@3.4.4)(ethers@5.7.2)(hardhat@2.18.1) '@types/sinon-chai': 3.2.10 '@types/web3': 1.0.19 camelcase-keys: 7.0.2 debug: 4.3.4(supports-color@8.1.1) ethereum-waffle: 3.4.4(typescript@5.2.2) - ethers: 6.8.0 + ethers: 5.7.2 fs-extra: 10.1.0 glob: 7.2.3 hardhat: 2.18.1(ts-node@10.9.1)(typescript@5.2.2) @@ -3668,7 +3434,7 @@ packages: resolution: {integrity: sha512-ipON6WtYgl/1329g5AIJVbUuEh0wZVbdpGwC99Jw4LwuoBNS95MVphU6zOeD9pDkon+LLbFL7lOQRapbB8SCHw==} engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0} dependencies: - '@babel/core': 7.22.15 + '@babel/core': 7.23.2 '@jest/types': 27.5.1 babel-plugin-istanbul: 6.1.1 chalk: 4.1.2 @@ -3692,9 +3458,9 @@ packages: engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0} dependencies: '@types/istanbul-lib-coverage': 2.0.4 - '@types/istanbul-reports': 3.0.1 + '@types/istanbul-reports': 3.0.2 '@types/node': 20.8.6 - '@types/yargs': 16.0.5 + '@types/yargs': 16.0.6 chalk: 4.1.2 dev: true @@ -3766,13 +3532,13 @@ packages: /@ledgerhq/connect-kit-loader@1.1.2: resolution: {integrity: sha512-mscwGroSJQrCTjtNGBu+18FQbZYA4+q6Tyx6K7CXHl6AwgZKbWfZYdgP2F+fyZcRUdGRsMX8QtvU61VcGGtO1A==} - /@lit-labs/ssr-dom-shim@1.1.1: - resolution: {integrity: sha512-kXOeFbfCm4fFf2A3WwVEeQj55tMZa8c8/f9AKHMobQMkzNUfUj+antR3fRPaZJawsa1aZiP/Da3ndpZrwEe4rQ==} + /@lit-labs/ssr-dom-shim@1.1.2: + resolution: {integrity: sha512-jnOD+/+dSrfTWYfSXBXlo5l5f0q1UuJo3tkbMDCYA2lKUYq79jaxqtGEvnRoh049nt1vdo1+45RinipU6FGY2g==} /@lit/reactive-element@1.6.3: resolution: {integrity: sha512-QuTgnG52Poic7uM1AN5yJ09QMe0O28e10XzSvWDz02TJiiKee4stsiownEIadWm8nYzyDAyT+gKzUoZmiWQtsQ==} dependencies: - '@lit-labs/ssr-dom-shim': 1.1.1 + '@lit-labs/ssr-dom-shim': 1.1.2 /@ljharb/resumer@0.0.1: resolution: {integrity: sha512-skQiAOrCfO7vRTq53cxznMpks7wS1va95UCidALlOVWqvBAzwPVErwizDwoMqNVMEn1mDq0utxZd02eIrvF1lw==} @@ -3853,57 +3619,57 @@ packages: transitivePeerDependencies: - supports-color - /@motionone/animation@10.15.1: - resolution: {integrity: sha512-mZcJxLjHor+bhcPuIFErMDNyrdb2vJur8lSfMCsuCB4UyV8ILZLvK+t+pg56erv8ud9xQGK/1OGPt10agPrCyQ==} + /@motionone/animation@10.16.3: + resolution: {integrity: sha512-QUGWpLbMFLhyqKlngjZhjtxM8IqiJQjLK0DF+XOF6od9nhSvlaeEpOY/UMCRVcZn/9Tr2rZO22EkuCIjYdI74g==} dependencies: - '@motionone/easing': 10.15.1 - '@motionone/types': 10.15.1 - '@motionone/utils': 10.15.1 + '@motionone/easing': 10.16.3 + '@motionone/types': 10.16.3 + '@motionone/utils': 10.16.3 tslib: 2.4.1 - /@motionone/dom@10.16.2: - resolution: {integrity: sha512-bnuHdNbge1FutZXv+k7xub9oPWcF0hsu8y1HTH/qg6av58YI0VufZ3ngfC7p2xhMJMnoh0LXFma2EGTgPeCkeg==} + /@motionone/dom@10.16.4: + resolution: {integrity: sha512-HPHlVo/030qpRj9R8fgY50KTN4Ko30moWRTA3L3imrsRBmob93cTYmodln49HYFbQm01lFF7X523OkKY0DX6UA==} dependencies: - '@motionone/animation': 10.15.1 - '@motionone/generators': 10.15.1 - '@motionone/types': 10.15.1 - '@motionone/utils': 10.15.1 + '@motionone/animation': 10.16.3 + '@motionone/generators': 10.16.4 + '@motionone/types': 10.16.3 + '@motionone/utils': 10.16.3 hey-listen: 1.0.8 tslib: 2.4.1 - /@motionone/easing@10.15.1: - resolution: {integrity: sha512-6hIHBSV+ZVehf9dcKZLT7p5PEKHGhDwky2k8RKkmOvUoYP3S+dXsKupyZpqx5apjd9f+php4vXk4LuS+ADsrWw==} + /@motionone/easing@10.16.3: + resolution: {integrity: sha512-HWTMZbTmZojzwEuKT/xCdvoMPXjYSyQvuVM6jmM0yoGU6BWzsmYMeB4bn38UFf618fJCNtP9XeC/zxtKWfbr0w==} dependencies: - '@motionone/utils': 10.15.1 + '@motionone/utils': 10.16.3 tslib: 2.4.1 - /@motionone/generators@10.15.1: - resolution: {integrity: sha512-67HLsvHJbw6cIbLA/o+gsm7h+6D4Sn7AUrB/GPxvujse1cGZ38F5H7DzoH7PhX+sjvtDnt2IhFYF2Zp1QTMKWQ==} + /@motionone/generators@10.16.4: + resolution: {integrity: sha512-geFZ3w0Rm0ZXXpctWsSf3REGywmLLujEjxPYpBR0j+ymYwof0xbV6S5kGqqsDKgyWKVWpUInqQYvQfL6fRbXeg==} dependencies: - '@motionone/types': 10.15.1 - '@motionone/utils': 10.15.1 + '@motionone/types': 10.16.3 + '@motionone/utils': 10.16.3 tslib: 2.4.1 - /@motionone/svelte@10.16.2: - resolution: {integrity: sha512-38xsroKrfK+aHYhuQlE6eFcGy0EwrB43Q7RGjF73j/kRUTcLNu/LAaKiLLsN5lyqVzCgTBVt4TMT/ShWbTbc5Q==} + /@motionone/svelte@10.16.4: + resolution: {integrity: sha512-zRVqk20lD1xqe+yEDZhMYgftsuHc25+9JSo+r0a0OWUJFocjSV9D/+UGhX4xgJsuwB9acPzXLr20w40VnY2PQA==} dependencies: - '@motionone/dom': 10.16.2 + '@motionone/dom': 10.16.4 tslib: 2.4.1 - /@motionone/types@10.15.1: - resolution: {integrity: sha512-iIUd/EgUsRZGrvW0jqdst8st7zKTzS9EsKkP+6c6n4MPZoQHwiHuVtTQLD6Kp0bsBLhNzKIBlHXponn/SDT4hA==} + /@motionone/types@10.16.3: + resolution: {integrity: sha512-W4jkEGFifDq73DlaZs3HUfamV2t1wM35zN/zX7Q79LfZ2sc6C0R1baUHZmqc/K5F3vSw3PavgQ6HyHLd/MXcWg==} - /@motionone/utils@10.15.1: - resolution: {integrity: sha512-p0YncgU+iklvYr/Dq4NobTRdAPv9PveRDUXabPEeOjBLSO/1FNB2phNTZxOxpi1/GZwYpAoECEa0Wam+nsmhSw==} + /@motionone/utils@10.16.3: + resolution: {integrity: sha512-WNWDksJIxQkaI9p9Z9z0+K27xdqISGNFy1SsWVGaiedTHq0iaT6iZujby8fT/ZnZxj1EOaxJtSfUPCFNU5CRoA==} dependencies: - '@motionone/types': 10.15.1 + '@motionone/types': 10.16.3 hey-listen: 1.0.8 tslib: 2.4.1 - /@motionone/vue@10.16.2: - resolution: {integrity: sha512-7/dEK/nWQXOkJ70bqb2KyNfSWbNvWqKKq1C8juj+0Mg/AorgD8O5wE3naddK0G+aXuNMqRuc4jlsYHHWHtIzVw==} + /@motionone/vue@10.16.4: + resolution: {integrity: sha512-z10PF9JV6SbjFq+/rYabM+8CVlMokgl8RFGvieSGNTmrkQanfHn+15XBrhG3BgUfvmTeSeyShfOHpG0i9zEdcg==} dependencies: - '@motionone/dom': 10.16.2 + '@motionone/dom': 10.16.4 tslib: 2.4.1 /@napi-rs/simple-git-android-arm-eabi@0.1.9: @@ -4111,6 +3877,7 @@ packages: resolution: {integrity: sha512-2upgEu0iLiDVDZkNLeFV2+ht0BAVgQnEmCk6JsOch9Rp8xfkMCbvbAZlA2pBHQc73dbl+vFOXfqkf4uemdn0bw==} dependencies: '@noble/hashes': 1.3.0 + dev: true /@noble/curves@1.1.0: resolution: {integrity: sha512-091oBExgENk/kGj3AZmtBDMpxQPDtxQABR2B9lb1JbVTs6ytdzZNwvhxQ4MWasRNEzlbEH8jCWFCwhF/Obj5AA==} @@ -4129,6 +3896,7 @@ packages: /@noble/hashes@1.3.0: resolution: {integrity: sha512-ilHEACi9DwqJB0pw7kv+Apvh50jiiSyR/cQ3y4W7lOR5mhvn/50FLUfsnfJz0BDZtl/RR16kXvptiv6q1msYZg==} + dev: true /@noble/hashes@1.3.1: resolution: {integrity: sha512-EbqwksQwz9xDRGfDST86whPBgM65E0OH/pCgqW0GBVzO22bNE+NuIbeTb714+IfSjU3aRk47EUvXIb5bTsenKA==} @@ -4461,14 +4229,14 @@ packages: - utf-8-validate dev: true - /@nomicfoundation/hardhat-ethers@3.0.4(ethers@6.8.0)(hardhat@2.18.1): + /@nomicfoundation/hardhat-ethers@3.0.4(ethers@5.7.2)(hardhat@2.18.1): resolution: {integrity: sha512-k9qbLoY7qn6C6Y1LI0gk2kyHXil2Tauj4kGzQ8pgxYXIGw8lWn8tuuL72E11CrlKaXRUvOgF0EXrv/msPI2SbA==} peerDependencies: ethers: ^6.1.0 hardhat: ^2.0.0 dependencies: debug: 4.3.4(supports-color@8.1.1) - ethers: 6.8.0 + ethers: 5.7.2 hardhat: 2.18.1(ts-node@10.9.1)(typescript@5.2.2) lodash.isequal: 4.5.0 transitivePeerDependencies: @@ -4599,13 +4367,13 @@ packages: '@nomicfoundation/solidity-analyzer-win32-x64-msvc': 0.1.1 dev: true - /@nomiclabs/hardhat-ethers@2.2.3(ethers@6.8.0)(hardhat@2.18.1): + /@nomiclabs/hardhat-ethers@2.2.3(ethers@5.7.2)(hardhat@2.18.1): resolution: {integrity: sha512-YhzPdzb612X591FOe68q+qXVXGG2ANZRvDo0RRUtimev85rCrAlv/TLMEZw5c+kq9AbzocLTVX/h2jVIFPL9Xg==} peerDependencies: ethers: ^5.0.0 hardhat: ^2.0.0 dependencies: - ethers: 6.8.0 + ethers: 5.7.2 hardhat: 2.18.1(ts-node@10.9.1)(typescript@5.2.2) dev: true @@ -4629,7 +4397,7 @@ packages: - supports-color dev: true - /@nomiclabs/hardhat-waffle@2.0.6(@nomiclabs/hardhat-ethers@2.2.3)(@types/sinon-chai@3.2.10)(ethereum-waffle@3.4.4)(ethers@6.8.0)(hardhat@2.18.1): + /@nomiclabs/hardhat-waffle@2.0.6(@nomiclabs/hardhat-ethers@2.2.3)(@types/sinon-chai@3.2.10)(ethereum-waffle@3.4.4)(ethers@5.7.2)(hardhat@2.18.1): resolution: {integrity: sha512-+Wz0hwmJGSI17B+BhU/qFRZ1l6/xMW82QGXE/Gi+WTmwgJrQefuBs1lIf7hzQ1hLk6hpkvb/zwcNkpVKRYTQYg==} peerDependencies: '@nomiclabs/hardhat-ethers': ^2.0.0 @@ -4638,10 +4406,10 @@ packages: ethers: ^5.0.0 hardhat: ^2.0.0 dependencies: - '@nomiclabs/hardhat-ethers': 2.2.3(ethers@6.8.0)(hardhat@2.18.1) + '@nomiclabs/hardhat-ethers': 2.2.3(ethers@5.7.2)(hardhat@2.18.1) '@types/sinon-chai': 3.2.10 ethereum-waffle: 3.4.4(typescript@5.2.2) - ethers: 6.8.0 + ethers: 5.7.2 hardhat: 2.18.1(ts-node@10.9.1)(typescript@5.2.2) dev: true @@ -4665,7 +4433,7 @@ packages: resolution: {integrity: sha512-ka+GTbsnGO6j1R2AGj027uu29es/EBVs3VjJStb+7u/1lNhx1xSRS11JBD0a0GNhrwqsKU4czIemlIKMlUzhhQ==} dependencies: '@openzeppelin/defender-base-client': 1.49.0(debug@4.3.4) - axios: 1.5.1(debug@4.3.4) + axios: 1.4.0(debug@4.3.4) ethers: 5.7.2 lodash: 4.17.21 node-fetch: 2.7.0 @@ -4681,7 +4449,7 @@ packages: dependencies: amazon-cognito-identity-js: 6.3.6 async-retry: 1.3.3 - axios: 1.5.1(debug@4.3.4) + axios: 1.4.0(debug@4.3.4) lodash: 4.17.21 node-fetch: 2.7.0 transitivePeerDependencies: @@ -4689,8 +4457,8 @@ packages: - encoding dev: true - /@openzeppelin/defender-sdk-base-client@1.2.0: - resolution: {integrity: sha512-v/nzOABW4RH4wqVPG8gUICV48eZeO0kf6ZvNsd1aUP4i7NyCPv80gErjtW08SFzR/sTqsDN6PS3D+les8mGXvg==} + /@openzeppelin/defender-sdk-base-client@1.3.0: + resolution: {integrity: sha512-OMMt7NaAL8C95ralF9nMeKZpg96COLZT9FPpGpPsI7aB8fVZfCM8+6k99gTF44hMS6IsRdN2WthS3m7VzQeeoA==} dependencies: amazon-cognito-identity-js: 6.3.6 async-retry: 1.3.3 @@ -4698,19 +4466,19 @@ packages: - encoding dev: true - /@openzeppelin/defender-sdk-deploy-client@1.2.0(debug@4.3.4): - resolution: {integrity: sha512-kUBRKMSQiTZ8urP236L68k5X8Eg1ys2FDYMeuJ22GhXFAC2M1l6OaXNFolFBSzmS5t/x8BkJU6+RCyoCqO2qxg==} + /@openzeppelin/defender-sdk-deploy-client@1.3.0(debug@4.3.4): + resolution: {integrity: sha512-RTYM3HnVvD2d5NoYfTug8UwT41e0Jjwb13lk9v0Jl8z7mcclUVvAnKD4DHJ4b8RhKpg4B15oLQK/Igzjg1HHRA==} dependencies: '@ethersproject/abi': 5.7.0 - '@openzeppelin/defender-sdk-base-client': 1.2.0 - axios: 1.5.1(debug@4.3.4) + '@openzeppelin/defender-sdk-base-client': 1.3.0 + axios: 1.4.0(debug@4.3.4) lodash: 4.17.21 transitivePeerDependencies: - debug - encoding dev: true - /@openzeppelin/hardhat-upgrades@2.3.3(@nomicfoundation/hardhat-ethers@3.0.4)(ethers@6.8.0)(hardhat@2.18.1): + /@openzeppelin/hardhat-upgrades@2.3.3(@nomicfoundation/hardhat-ethers@3.0.4)(ethers@5.7.2)(hardhat@2.18.1): resolution: {integrity: sha512-rF87xYSz6Q2WFq5zcUF1T1tx3Kiq83hmke0xOBn5Qgrl++osseiDwS5oXfDK3NSWvj06oYGLERRGHcXnpQ31FQ==} hasBin: true peerDependencies: @@ -4722,16 +4490,16 @@ packages: '@nomicfoundation/hardhat-verify': optional: true dependencies: - '@nomicfoundation/hardhat-ethers': 3.0.4(ethers@6.8.0)(hardhat@2.18.1) + '@nomicfoundation/hardhat-ethers': 3.0.4(ethers@5.7.2)(hardhat@2.18.1) '@openzeppelin/defender-admin-client': 1.49.0(debug@4.3.4) '@openzeppelin/defender-base-client': 1.49.0(debug@4.3.4) - '@openzeppelin/defender-sdk-base-client': 1.2.0 - '@openzeppelin/defender-sdk-deploy-client': 1.2.0(debug@4.3.4) + '@openzeppelin/defender-sdk-base-client': 1.3.0 + '@openzeppelin/defender-sdk-deploy-client': 1.3.0(debug@4.3.4) '@openzeppelin/upgrades-core': 1.30.1 chalk: 4.1.2 debug: 4.3.4(supports-color@8.1.1) ethereumjs-util: 7.1.5 - ethers: 6.8.0 + ethers: 5.7.2 hardhat: 2.18.1(ts-node@10.9.1)(typescript@5.2.2) proper-lockfile: 4.1.2 undici: 5.26.3 @@ -4789,8 +4557,8 @@ packages: playwright-core: 1.28.1 dev: true - /@polka/url@1.0.0-next.21: - resolution: {integrity: sha512-a5Sab1C4/icpTZVzZc5Ghpz88yQtGOyNqYXcZgOssB2uuAr+wF/MvN6bgtW32q7HHrvBki+BsZ0OuNv6EV3K9g==} + /@polka/url@1.0.0-next.23: + resolution: {integrity: sha512-C16M+IYz0rgRhWZdCmK+h58JMv8vijAA61gmz2rspCSwKwzBebpdcsiUmwrtJRdphuY30i6BSLEOP8ppbNLyLg==} dev: true /@popperjs/core@2.11.8: @@ -4876,17 +4644,15 @@ packages: events: 3.3.0 transitivePeerDependencies: - bufferutil - - encoding - utf-8-validate - /@safe-global/safe-apps-provider@0.17.1(typescript@5.1.6): + /@safe-global/safe-apps-provider@0.17.1(typescript@5.2.2): resolution: {integrity: sha512-lYfRqrbbK1aKU1/UGkYWc/X7PgySYcumXKc5FB2uuwAs2Ghj8uETuW5BrwPqyjBknRxutFbTv+gth/JzjxAhdQ==} dependencies: - '@safe-global/safe-apps-sdk': 8.0.0(typescript@5.1.6) + '@safe-global/safe-apps-sdk': 8.0.0(typescript@5.2.2) events: 3.3.0 transitivePeerDependencies: - bufferutil - - encoding - typescript - utf-8-validate - zod @@ -4894,53 +4660,46 @@ packages: /@safe-global/safe-apps-sdk@7.11.0: resolution: {integrity: sha512-RDamzPM1Lhhiiz0O+Dn6FkFqIh47jmZX+HCV/BBnBBOSKfBJE//IGD3+02zMgojXHTikQAburdPes9qmH1SA1A==} dependencies: - '@safe-global/safe-gateway-typescript-sdk': 3.10.0 + '@safe-global/safe-gateway-typescript-sdk': 3.12.0 ethers: 5.7.2 transitivePeerDependencies: - bufferutil - - encoding - utf-8-validate /@safe-global/safe-apps-sdk@7.9.0: resolution: {integrity: sha512-S2EI+JL8ocSgE3uGNaDZCzKmwfhtxXZFDUP76vN0FeaY35itFMyi8F0Vhxu0XnZm3yLzJE3tp5px6GhuQFLU6w==} dependencies: - '@safe-global/safe-gateway-typescript-sdk': 3.10.0 + '@safe-global/safe-gateway-typescript-sdk': 3.12.0 ethers: 5.7.2 transitivePeerDependencies: - bufferutil - - encoding - utf-8-validate - /@safe-global/safe-apps-sdk@8.0.0(typescript@5.1.6): + /@safe-global/safe-apps-sdk@8.0.0(typescript@5.2.2): resolution: {integrity: sha512-gYw0ki/EAuV1oSyMxpqandHjnthZjYYy+YWpTAzf8BqfXM3ItcZLpjxfg+3+mXW8HIO+3jw6T9iiqEXsqHaMMw==} dependencies: - '@safe-global/safe-gateway-typescript-sdk': 3.10.0 - viem: 1.4.1(typescript@5.1.6) + '@safe-global/safe-gateway-typescript-sdk': 3.12.0 + viem: 1.16.0(typescript@5.2.2) transitivePeerDependencies: - bufferutil - - encoding - typescript - utf-8-validate - zod - /@safe-global/safe-apps-sdk@8.1.0(typescript@5.1.6): + /@safe-global/safe-apps-sdk@8.1.0(typescript@5.2.2): resolution: {integrity: sha512-XJbEPuaVc7b9n23MqlF6c+ToYIS3f7P2Sel8f3cSBQ9WORE4xrSuvhMpK9fDSFqJ7by/brc+rmJR/5HViRr0/w==} dependencies: - '@safe-global/safe-gateway-typescript-sdk': 3.10.0 - viem: 1.4.1(typescript@5.1.6) + '@safe-global/safe-gateway-typescript-sdk': 3.12.0 + viem: 1.16.0(typescript@5.2.2) transitivePeerDependencies: - bufferutil - - encoding - typescript - utf-8-validate - zod - /@safe-global/safe-gateway-typescript-sdk@3.10.0: - resolution: {integrity: sha512-nhWjFRRgrGz4uZbyQ3Hgm4si1AixCWlnvi5WUCq/+V+e8EoA2Apj9xJEt8zzXvtELlddFqkH2sfTFy9LIjGXKg==} - dependencies: - cross-fetch: 3.1.8 - transitivePeerDependencies: - - encoding + /@safe-global/safe-gateway-typescript-sdk@3.12.0: + resolution: {integrity: sha512-hExCo62lScVC9/ztVqYEYL2pFxcqLTvB8fj0WtdP5FWrvbtEgD0pbVolchzD5bf85pbzvEwdAxSVS7EdCZxTNw==} + engines: {node: '>=16'} /@scure/base@1.1.3: resolution: {integrity: sha512-/+SgoRjLq7Xlf0CWuLHq2LUZeL/w65kfzAPG5NH9pcmBhs+nunQTn4gvdwgMTIXnt9b2C/1SeL2XiysZEyIC9Q==} @@ -4959,12 +4718,13 @@ packages: '@noble/curves': 1.0.0 '@noble/hashes': 1.3.0 '@scure/base': 1.1.3 + dev: true /@scure/bip32@1.3.1: resolution: {integrity: sha512-osvveYtyzdEVbt3OfwwXFr4P2iVBL5u1Q3q4ONBfDY/UpOuXmOlbgwc1xECEboY8wIays8Yt6onaWMUdUbfl0A==} dependencies: '@noble/curves': 1.1.0 - '@noble/hashes': 1.3.1 + '@noble/hashes': 1.3.2 '@scure/base': 1.1.3 dev: true @@ -4974,7 +4734,6 @@ packages: '@noble/curves': 1.2.0 '@noble/hashes': 1.3.2 '@scure/base': 1.1.3 - dev: true /@scure/bip39@1.1.1: resolution: {integrity: sha512-t+wDck2rVkh65Hmv280fYdVdY25J9YeEUIgn2LG1WM6gxFkGzcksoDiUkWVpVp3Oex9xGC68JU2dSbUfwZ2jPg==} @@ -4988,13 +4747,13 @@ packages: dependencies: '@noble/hashes': 1.3.0 '@scure/base': 1.1.3 + dev: true /@scure/bip39@1.2.1: resolution: {integrity: sha512-Z3/Fsz1yr904dduJD0NpiyRHhRYHdcnyh73FZWiV+/qhWi83wNJ3NWolYqCEN+ZWsUz2TWwajJggcRE9r1zUYg==} dependencies: '@noble/hashes': 1.3.2 '@scure/base': 1.1.3 - dev: true /@sentry-internal/tracing@7.53.1: resolution: {integrity: sha512-a4H4rvVdz0XDGgNfRqc7zg6rMt2P1P05xBmgfIfztYy94Vciw1QMdboNiT7einr8ra8wogdEaK4Pe2AzYAPBJQ==} @@ -5032,7 +4791,7 @@ packages: resolution: {integrity: sha512-X4zNbeGMZscNb5u1EIfdnpOHJuISmvDBxpEZ3j8j1Rwj1ztnp02iYkl6TbP9ukf0WBC0uq4KkJX+UTJ6Gs5KWw==} engines: {node: '>= 10'} dependencies: - '@sentry/cli': 2.20.6 + '@sentry/cli': 2.21.2 '@sentry/node': 7.53.1 '@sentry/utils': 7.53.1 find-up: 5.0.0 @@ -5044,8 +4803,8 @@ packages: - supports-color dev: true - /@sentry/cli@2.20.6: - resolution: {integrity: sha512-j4OFbDCIo/dB/uXDmXnRqCbku0KquekSFSG0Wb6RKwkGqpKwFMRauKXZJrgL4as3qIfDX8HrjNRv257QYMwdQA==} + /@sentry/cli@2.21.2: + resolution: {integrity: sha512-X1nye89zl+QV3FSuQDGItfM51tW9PQ7ce0TtV/12DgGgTVEgnVp5uvO3wX5XauHvulQzRPzwUL3ZK+yS5bAwCw==} engines: {node: '>= 10'} hasBin: true requiresBuild: true @@ -5158,7 +4917,7 @@ packages: '@sentry/browser': 7.54.0 '@sentry/types': 7.54.0 '@sentry/utils': 7.54.0 - magic-string: 0.30.3 + magic-string: 0.30.5 svelte: 3.53.1 tslib: 1.14.1 dev: false @@ -5227,14 +4986,12 @@ packages: /@sindresorhus/is@0.14.0: resolution: {integrity: sha512-9NET910DNaIPngYnLLPeg+Ogzqsi9uM4mSboU5y6p8S5DzMTVEsJZrawi+BoDNUVBa2DhJqQYUFvMDfgU062LQ==} engines: {node: '>=6'} - requiresBuild: true dev: true optional: true /@sindresorhus/is@4.6.0: resolution: {integrity: sha512-t09vSN3MdfsyCHoFcTRCH/iUtG7OJ0CsjzB8cjAmKc/va/kIgeDI/TxsigdncE/4be734m0cvIYwNaV4i2XqAw==} engines: {node: '>=10'} - requiresBuild: true dev: true optional: true @@ -5263,10 +5020,10 @@ packages: dependencies: buffer: 6.0.3 - /@solana/web3.js@1.78.4: - resolution: {integrity: sha512-up5VG1dK+GPhykmuMIozJZBbVqpm77vbOG6/r5dS7NBGZonwHfTLdBbsYc3rjmaQ4DpCXUa3tUc4RZHRORvZrw==} + /@solana/web3.js@1.87.1: + resolution: {integrity: sha512-E8Y9bNlZ8TQlhOvCx1b7jG+TjA4SJLVwufmIk1+tcQctUhK5HiB1Q8ljd4yQDkFlk6OOeAlAeqvW0YntWJU94Q==} dependencies: - '@babel/runtime': 7.22.15 + '@babel/runtime': 7.23.2 '@noble/curves': 1.2.0 '@noble/hashes': 1.3.2 '@solana/buffer-layout': 4.0.1 @@ -5428,13 +5185,13 @@ packages: svelte: ^3.54.0 || ^4.0.0-next.0 vite: ^4.0.0 dependencies: - '@sveltejs/vite-plugin-svelte': 2.4.5(svelte@4.1.0)(vite@4.4.9) + '@sveltejs/vite-plugin-svelte': 2.4.6(svelte@4.1.0)(vite@4.4.9) '@types/cookie': 0.5.2 cookie: 0.5.0 devalue: 4.3.2 esm-env: 1.0.0 kleur: 4.1.5 - magic-string: 0.30.3 + magic-string: 0.30.5 mime: 3.0.0 sade: 1.8.1 set-cookie-parser: 2.6.0 @@ -5446,7 +5203,7 @@ packages: - supports-color dev: true - /@sveltejs/vite-plugin-svelte-inspector@1.0.4(@sveltejs/vite-plugin-svelte@2.4.5)(svelte@4.1.0)(vite@4.4.9): + /@sveltejs/vite-plugin-svelte-inspector@1.0.4(@sveltejs/vite-plugin-svelte@2.4.6)(svelte@4.1.0)(vite@4.4.9): resolution: {integrity: sha512-zjiuZ3yydBtwpF3bj0kQNV0YXe+iKE545QGZVTaylW3eAzFr+pJ/cwK8lZEaRp4JtaJXhD5DyWAV4AxLh6DgaQ==} engines: {node: ^14.18.0 || >= 16} peerDependencies: @@ -5454,7 +5211,7 @@ packages: svelte: ^3.54.0 || ^4.0.0 vite: ^4.0.0 dependencies: - '@sveltejs/vite-plugin-svelte': 2.4.5(svelte@4.1.0)(vite@4.4.9) + '@sveltejs/vite-plugin-svelte': 2.4.6(svelte@4.1.0)(vite@4.4.9) debug: 4.3.4(supports-color@8.1.1) svelte: 4.1.0 vite: 4.4.9(@types/node@20.8.6) @@ -5485,22 +5242,22 @@ packages: - supports-color dev: true - /@sveltejs/vite-plugin-svelte@2.4.5(svelte@4.1.0)(vite@4.4.9): - resolution: {integrity: sha512-UJKsFNwhzCVuiZd06jM/psscyNJNDwjQC+qIeb7GBJK9iWeQCcIyfcPWDvbCudfcJggY9jtxJeeaZH7uny93FQ==} + /@sveltejs/vite-plugin-svelte@2.4.6(svelte@4.1.0)(vite@4.4.9): + resolution: {integrity: sha512-zO79p0+DZnXPnF0ltIigWDx/ux7Ni+HRaFOw720Qeivc1azFUrJxTl0OryXVibYNx1hCboGia1NRV3x8RNv4cA==} engines: {node: ^14.18.0 || >= 16} peerDependencies: svelte: ^3.54.0 || ^4.0.0 vite: ^4.0.0 dependencies: - '@sveltejs/vite-plugin-svelte-inspector': 1.0.4(@sveltejs/vite-plugin-svelte@2.4.5)(svelte@4.1.0)(vite@4.4.9) + '@sveltejs/vite-plugin-svelte-inspector': 1.0.4(@sveltejs/vite-plugin-svelte@2.4.6)(svelte@4.1.0)(vite@4.4.9) debug: 4.3.4(supports-color@8.1.1) deepmerge: 4.3.1 kleur: 4.1.5 - magic-string: 0.30.3 + magic-string: 0.30.5 svelte: 4.1.0 svelte-hmr: 0.15.3(svelte@4.1.0) vite: 4.4.9(@types/node@20.8.6) - vitefu: 0.2.4(vite@4.4.9) + vitefu: 0.2.5(vite@4.4.9) transitivePeerDependencies: - supports-color dev: true @@ -5517,13 +5274,12 @@ packages: /@swc/helpers@0.5.2: resolution: {integrity: sha512-E4KcWTpoLHqwPHLxidpOqQbcrZVgi0rsmmZXUle1jXmJfuIf/UWpczUJ7MZZ5tlxytgJXyp0w4PGkkeLiuIdZw==} dependencies: - tslib: 2.6.2 + tslib: 2.4.1 dev: false /@szmarczak/http-timer@1.1.2: resolution: {integrity: sha512-XIB2XbzHTN6ieIjfIMV9hlVcfPU26s2vafYWQcZHWXHOxiaRZYEDKEwdl129Zyg50+foYV2jCgtrqSA6qNuNSA==} engines: {node: '>=6'} - requiresBuild: true dependencies: defer-to-connect: 1.1.3 dev: true @@ -5532,35 +5288,34 @@ packages: /@szmarczak/http-timer@4.0.6: resolution: {integrity: sha512-4BAffykYOgO+5nzBWYwE3W90sBgLJoUPRWWcL8wlyiM8IB8ipJz3UMJ9KXQd1RKQXpKp8Tutn80HZtWsu2u76w==} engines: {node: '>=10'} - requiresBuild: true dependencies: defer-to-connect: 2.0.1 dev: true optional: true - /@tanstack/query-core@4.33.0: - resolution: {integrity: sha512-qYu73ptvnzRh6se2nyBIDHGBQvPY1XXl3yR769B7B6mIDD7s+EZhdlWHQ67JI6UOTFRaI7wupnTnwJ3gE0Mr/g==} + /@tanstack/query-core@4.36.1: + resolution: {integrity: sha512-DJSilV5+ytBP1FbFcEJovv4rnnm/CokuVvrBEtW/Va9DvuJ3HksbXUJEpI0aV1KtuL4ZoO9AVE6PyNLzF7tLeA==} - /@tanstack/query-persist-client-core@4.33.0: - resolution: {integrity: sha512-3P16+2JjcUU5CHi10jJuwd0ZQYvQtSuzLvCUCjVuAnj3GZjfSso1v8t6WAObAr9RPuIC6vDXeOQ3mr07EF/NxQ==} + /@tanstack/query-persist-client-core@4.36.1: + resolution: {integrity: sha512-eocgCeI7D7TRv1IUUBMfVwOI0wdSmMkBIbkKhqEdTrnUHUQEeOaYac8oeZk2cumAWJdycu6P/wB+WqGynTnzXg==} dependencies: - '@tanstack/query-core': 4.33.0 + '@tanstack/query-core': 4.36.1 - /@tanstack/query-sync-storage-persister@4.33.0: - resolution: {integrity: sha512-V6igMcdEOXPRpvmNFQ6I/iJaw9NhxWy7x8PWamm2cgSsLi8bHaDvUVuWkZm+ikI47QjoCUk7qll/82JYLaH+pw==} + /@tanstack/query-sync-storage-persister@4.36.1: + resolution: {integrity: sha512-yMEt5hWe2+1eclf1agMtXHnPIkxEida0lYWkfdhR8U6KXk/lO4Vca6piJmhKI85t0NHlx3l/z6zX+t/Fn5O9NA==} dependencies: - '@tanstack/query-persist-client-core': 4.33.0 + '@tanstack/query-persist-client-core': 4.36.1 - /@tanstack/react-query-persist-client@4.33.0(@tanstack/react-query@4.33.0): - resolution: {integrity: sha512-B3q0r1tqTTSkd9vctyqFj28xdGZJ+Dnr/7H05Ta1JF1w7EauVQl8ILrmXADecwvILnr1xoZO6lvi2W+mZxMinw==} + /@tanstack/react-query-persist-client@4.36.1(@tanstack/react-query@4.36.1): + resolution: {integrity: sha512-32I5b9aAu4NCiXZ7Te/KEQLfHbYeTNriVPrKYcvEThnZ9tlW01vLcSoxpUIsMYRsembvJUUAkzYBAiZHLOd6pQ==} peerDependencies: - '@tanstack/react-query': ^4.33.0 + '@tanstack/react-query': ^4.36.1 dependencies: - '@tanstack/query-persist-client-core': 4.33.0 - '@tanstack/react-query': 4.33.0(react@18.2.0) + '@tanstack/query-persist-client-core': 4.36.1 + '@tanstack/react-query': 4.36.1(react@18.2.0) - /@tanstack/react-query@4.33.0(react@18.2.0): - resolution: {integrity: sha512-97nGbmDK0/m0B86BdiXzx3EW9RcDYKpnyL2+WwyuLHEgpfThYAnXFaMMmnTDuAO4bQJXEhflumIEUfKmP7ESGA==} + /@tanstack/react-query@4.36.1(react@18.2.0): + resolution: {integrity: sha512-y7ySVHFyyQblPl3J3eQBWpXZkliroki3ARnBKsdJchlgt7yJLRDUcf4B8soufgiYt3pEQIkBWBx1N9/ZPIeUWw==} peerDependencies: react: ^16.8.0 || ^17.0.0 || ^18.0.0 react-dom: ^16.8.0 || ^17.0.0 || ^18.0.0 @@ -5571,7 +5326,7 @@ packages: react-native: optional: true dependencies: - '@tanstack/query-core': 4.33.0 + '@tanstack/query-core': 4.36.1 react: 18.2.0 use-sync-external-store: 1.2.0(react@18.2.0) @@ -5637,7 +5392,7 @@ packages: resolution: {integrity: sha512-BRbo1fOtyVbhfLyuCWw6wAWp+U8UQle+ZXu84MYYWzYSEB28dyfnRBIE99eoG+qdAC0po6L2ScIEivcT07UaMA==} dev: true - /@typechain/ethers-v5@11.1.2(@ethersproject/abi@5.7.0)(@ethersproject/providers@5.7.2)(ethers@6.8.0)(typechain@8.3.2)(typescript@5.2.2): + /@typechain/ethers-v5@11.1.2(@ethersproject/abi@5.7.0)(@ethersproject/providers@5.7.2)(ethers@5.7.2)(typechain@8.3.2)(typescript@5.2.2): resolution: {integrity: sha512-ID6pqWkao54EuUQa0P5RgjvfA3MYqxUQKpbGKERbsjBW5Ra7EIXvbMlPp2pcP5IAdUkyMCFYsP2SN5q7mPdLDQ==} peerDependencies: '@ethersproject/abi': ^5.0.0 @@ -5648,7 +5403,7 @@ packages: dependencies: '@ethersproject/abi': 5.7.0 '@ethersproject/providers': 5.7.2 - ethers: 6.8.0 + ethers: 5.7.2 lodash: 4.17.21 ts-essentials: 7.0.3(typescript@5.2.2) typechain: 8.3.2(typescript@5.2.2) @@ -5665,21 +5420,21 @@ packages: typechain: 3.0.0(typescript@5.2.2) dev: true - /@typechain/ethers-v6@0.5.1(ethers@6.8.0)(typechain@8.3.2)(typescript@5.2.2): + /@typechain/ethers-v6@0.5.1(ethers@5.7.2)(typechain@8.3.2)(typescript@5.2.2): resolution: {integrity: sha512-F+GklO8jBWlsaVV+9oHaPh5NJdd6rAKN4tklGfInX1Q7h0xPgVLP39Jl3eCulPB5qexI71ZFHwbljx4ZXNfouA==} peerDependencies: ethers: 6.x typechain: ^8.3.2 typescript: '>=4.7.0' dependencies: - ethers: 6.8.0 + ethers: 5.7.2 lodash: 4.17.21 ts-essentials: 7.0.3(typescript@5.2.2) typechain: 8.3.2(typescript@5.2.2) typescript: 5.2.2 dev: true - /@typechain/hardhat@9.1.0(@typechain/ethers-v6@0.5.1)(ethers@6.8.0)(hardhat@2.18.1)(typechain@8.3.2): + /@typechain/hardhat@9.1.0(@typechain/ethers-v6@0.5.1)(ethers@5.7.2)(hardhat@2.18.1)(typechain@8.3.2): resolution: {integrity: sha512-mtaUlzLlkqTlfPwB3FORdejqBskSnh+Jl8AIJGjXNAQfRQ4ofHADPl1+oU7Z3pAJzmZbUXII8MhOLQltcHgKnA==} peerDependencies: '@typechain/ethers-v6': ^0.5.1 @@ -5687,8 +5442,8 @@ packages: hardhat: ^2.9.9 typechain: ^8.3.2 dependencies: - '@typechain/ethers-v6': 0.5.1(ethers@6.8.0)(typechain@8.3.2)(typescript@5.2.2) - ethers: 6.8.0 + '@typechain/ethers-v6': 0.5.1(ethers@5.7.2)(typechain@8.3.2)(typescript@5.2.2) + ethers: 5.7.2 fs-extra: 9.1.0 hardhat: 2.18.1(ts-node@10.9.1)(typescript@5.2.2) typechain: 8.3.2(typescript@5.2.2) @@ -5701,40 +5456,40 @@ packages: /@types/acorn@4.0.6: resolution: {integrity: sha512-veQTnWP+1D/xbxVrPC3zHnCZRjSrKfhbMUlEA43iMZLu7EsnTtkJklIuwrCPbOi8YkvDQAiW05VQQFvvz9oieQ==} dependencies: - '@types/estree': 1.0.2 + '@types/estree': 0.0.50 dev: false /@types/async-eventemitter@0.2.2: resolution: {integrity: sha512-cUFkZN+0TXQ2HYX/vbVUa/0+3/kXtuVrojjzq4Yo8X68UDvwngMf7uOZWT7BcA5P6MhCNd/zOCuczgPAQxsNIQ==} dev: true - /@types/babel__core@7.20.1: - resolution: {integrity: sha512-aACu/U/omhdk15O4Nfb+fHgH/z3QsfQzpnvRZhYhThms83ZnAOZz7zZAWO7mn2yyNQaA4xTO8GLK3uqFU4bYYw==} + /@types/babel__core@7.20.2: + resolution: {integrity: sha512-pNpr1T1xLUc2l3xJKuPtsEky3ybxN3m4fJkknfIpTCTfIZCDW57oAg+EfCgIIp2rvCe0Wn++/FfodDS4YXxBwA==} dependencies: - '@babel/parser': 7.22.15 - '@babel/types': 7.22.15 - '@types/babel__generator': 7.6.4 - '@types/babel__template': 7.4.1 - '@types/babel__traverse': 7.20.1 + '@babel/parser': 7.23.0 + '@babel/types': 7.23.0 + '@types/babel__generator': 7.6.5 + '@types/babel__template': 7.4.2 + '@types/babel__traverse': 7.20.2 dev: true - /@types/babel__generator@7.6.4: - resolution: {integrity: sha512-tFkciB9j2K755yrTALxD44McOrk+gfpIpvC3sxHjRawj6PfnQxrse4Clq5y/Rq+G3mrBurMax/lG8Qn2t9mSsg==} + /@types/babel__generator@7.6.5: + resolution: {integrity: sha512-h9yIuWbJKdOPLJTbmSpPzkF67e659PbQDba7ifWm5BJ8xTv+sDmS7rFmywkWOvXedGTivCdeGSIIX8WLcRTz8w==} dependencies: - '@babel/types': 7.22.15 + '@babel/types': 7.23.0 dev: true - /@types/babel__template@7.4.1: - resolution: {integrity: sha512-azBFKemX6kMg5Io+/rdGT0dkGreboUVR0Cdm3fz9QJWpaQGJRQXl7C+6hOTCZcMll7KFyEQpgbYI2lHdsS4U7g==} + /@types/babel__template@7.4.2: + resolution: {integrity: sha512-/AVzPICMhMOMYoSx9MoKpGDKdBRsIXMNByh1PXSZoa+v6ZoLa8xxtsT/uLQ/NJm0XVAWl/BvId4MlDeXJaeIZQ==} dependencies: - '@babel/parser': 7.22.15 - '@babel/types': 7.22.15 + '@babel/parser': 7.23.0 + '@babel/types': 7.23.0 dev: true - /@types/babel__traverse@7.20.1: - resolution: {integrity: sha512-MitHFXnhtgwsGZWtT68URpOvLN4EREih1u3QtQiN4VdAxWKRVvGCSvw/Qth0M0Qq3pJpnGOu5JaM/ydK7OGbqg==} + /@types/babel__traverse@7.20.2: + resolution: {integrity: sha512-ojlGK1Hsfce93J0+kn3H5R73elidKUaZonirN33GSmgTUMpzI/MIFfSpF3haANe3G1bEBS9/9/QEqwTzwqFsKw==} dependencies: - '@babel/types': 7.22.15 + '@babel/types': 7.23.0 dev: true /@types/bn.js@4.11.6: @@ -5750,11 +5505,10 @@ packages: /@types/cacheable-request@6.0.3: resolution: {integrity: sha512-IQ3EbTzGxIigb1I3qPZc1rWJnH0BmSKv5QYTalEwweFvyBDLSAe24zP0le/hyi7ecGfZVlIVAg4BZqb8WBwKqw==} - requiresBuild: true dependencies: '@types/http-cache-semantics': 4.0.2 '@types/keyv': 3.1.4 - '@types/node': 12.20.55 + '@types/node': 20.8.6 '@types/responselike': 1.0.1 dev: true optional: true @@ -5778,7 +5532,7 @@ packages: /@types/connect@3.4.36: resolution: {integrity: sha512-P63Zd/JUGq+PdrM1lv0Wv5SBYeA2+CORvbrXbngriYY0jzLUWfQMQQxOhjONEz/wlHOAxOdY7CY65rgQdTjq2w==} dependencies: - '@types/node': 12.20.55 + '@types/node': 20.8.6 /@types/cookie@0.5.2: resolution: {integrity: sha512-DBpRoJGKJZn7RY92dPrgoMew8xCWc2P71beqsjyhEI/Ds9mOyVmBwtekyfhpwFIVt1WrxTonFifiOZ62V8CnNA==} @@ -5800,40 +5554,27 @@ packages: /@types/debug@4.1.7: resolution: {integrity: sha512-9AonUzyTjXXhEOa0DnqpzZi6VHlqKMswga9EXjpXnnqxwLtdvPPtlO8evrI5D9S6asFRCQ6v+wpiUKbw+vKqyg==} - dependencies: - '@types/ms': 0.7.31 - - /@types/debug@4.1.9: - resolution: {integrity: sha512-8Hz50m2eoS56ldRlepxSBa6PWEVCtzUo/92HgLc2qTMnotJNIm7xP+UZhyWoYsyOdd5dxZ+NZLb24rsKyFs2ow==} dependencies: '@types/ms': 0.7.32 - dev: false /@types/eslint-scope@3.7.5: resolution: {integrity: sha512-JNvhIEyxVW6EoMIFIvj93ZOywYFatlpu9deeH6eSx6PE3WHYvHaQtmHmQeNw7aA81bYGBPPQqdtBm6b1SsQMmA==} dependencies: - '@types/eslint': 8.44.4 - '@types/estree': 1.0.2 + '@types/eslint': 8.2.1 + '@types/estree': 0.0.50 dev: true /@types/eslint@8.2.1: resolution: {integrity: sha512-UP9rzNn/XyGwb5RQ2fok+DzcIRIYwc16qTXse5+Smsy8MOIccCChT15KAwnsgQx4PzJkaMq4myFyZ4CL5TjhIQ==} dependencies: '@types/estree': 0.0.50 - '@types/json-schema': 7.0.12 - dev: true - - /@types/eslint@8.44.4: - resolution: {integrity: sha512-lOzjyfY/D9QR4hY9oblZ76B90MYTB3RrQ4z2vBIJKj9ROCRqdkYl2gSUx1x1a4IWPjKJZLL4Aw1Zfay7eMnmnA==} - dependencies: - '@types/estree': 1.0.2 '@types/json-schema': 7.0.13 dev: true /@types/estree-jsx@1.0.1: resolution: {integrity: sha512-sHyakZlAezNFxmYRo0fopDZW+XvK6ipeZkkp5EAOLjdPfZp8VjZBJ67vSRI99RSCAoqXVmXOHS4fnWoxpuGQtQ==} dependencies: - '@types/estree': 1.0.2 + '@types/estree': 0.0.50 dev: false /@types/estree@0.0.39: @@ -5843,9 +5584,6 @@ packages: /@types/estree@0.0.50: resolution: {integrity: sha512-C6N5s2ZFtuZRj54k2/zyRhNDjJwwcViAM3Nbm8zjBpbqAdZ00mr0CFxvSKeO8Y/e03WVFLpQMdHYVfUd6SB+Hw==} - /@types/estree@1.0.1: - resolution: {integrity: sha512-LG4opVs2ANWZ1TJoKc937iMmNstM/d0ae1vNbnBvBhqCSezgVUOzcLCqbI5elV8Vy6WKwKjaqR+zO9VKirBBCA==} - /@types/estree@1.0.2: resolution: {integrity: sha512-VeiPZ9MMwXjO32/Xu7+OwflfmeoRwkE/qzndw42gGtgJwZopBnzy2gD//NN1+go1mADzkDcqf/KnFRSjTJ8xJA==} @@ -5869,8 +5607,8 @@ packages: '@types/node': 20.8.6 dev: true - /@types/graceful-fs@4.1.6: - resolution: {integrity: sha512-Sig0SNORX9fdW+bQuTEovKj3uHcUL6LQKbCrrqb1X7J6/ReAbhCXRAhc+SMejhLELFj2QcyuxmUooZ4bt5ReSw==} + /@types/graceful-fs@4.1.7: + resolution: {integrity: sha512-MhzcwU8aUygZroVwL2jeYk6JisJrPl/oov/gsgGCue9mkgl9wjGbzReYQClxiUgFDnib9FuHqTndccKeZKxTRw==} dependencies: '@types/node': 20.8.6 dev: true @@ -5893,7 +5631,6 @@ packages: /@types/http-cache-semantics@4.0.2: resolution: {integrity: sha512-FD+nQWA2zJjh4L9+pFXqWOi0Hs1ryBCfI+985NjluQ1p8EYtoLvjLOKidXBtZ4/IcxDX4o8/E8qDS3540tNliw==} - requiresBuild: true dev: true optional: true @@ -5901,16 +5638,16 @@ packages: resolution: {integrity: sha512-z/QT1XN4K4KYuslS23k62yDIDLwLFkzxOuMplDtObz0+y7VqJCaO2o+SPwHCvLFZh7xazvvoor2tA/hPz9ee7g==} dev: true - /@types/istanbul-lib-report@3.0.0: - resolution: {integrity: sha512-plGgXAPfVKFoYfa9NpYDAkseG+g6Jr294RqeqcqDixSbU34MZVJRi/P+7Y8GDpzkEwLaGZZOpKIEmeVZNtKsrg==} + /@types/istanbul-lib-report@3.0.1: + resolution: {integrity: sha512-gPQuzaPR5h/djlAv2apEG1HVOyj1IUs7GpfMZixU0/0KXT3pm64ylHuMUI1/Akh+sq/iikxg6Z2j+fcMDXaaTQ==} dependencies: '@types/istanbul-lib-coverage': 2.0.4 dev: true - /@types/istanbul-reports@3.0.1: - resolution: {integrity: sha512-c3mAZEuK0lvBp8tmuL74XRKn1+y2dcwOUpH7x4WrF6gk1GIgiluDRgMYQtw2OFcBvAJWlt6ASU3tSqxp0Uu0Aw==} + /@types/istanbul-reports@3.0.2: + resolution: {integrity: sha512-kv43F9eb3Lhj+lr/Hn6OcLCs/sSM8bt+fIaP11rCYngfV6NVjzWXJ17owQtDQTL9tQ8WSLUrGsSJ6rJz0F1w1A==} dependencies: - '@types/istanbul-lib-report': 3.0.0 + '@types/istanbul-lib-report': 3.0.1 dev: true /@types/jest@27.5.2: @@ -5920,14 +5657,10 @@ packages: pretty-format: 27.5.1 dev: true - /@types/js-yaml@4.0.6: - resolution: {integrity: sha512-ACTuifTSIIbyksx2HTon3aFtCKWcID7/h3XEmRpDYdMCXxPbl+m9GteOJeaAkiAta/NJaSFuA7ahZ0NkwajDSw==} + /@types/js-yaml@4.0.7: + resolution: {integrity: sha512-RJZP9WAMMr1514KbdSXkLRrKvYQacjr1+HWnY8pui/uBTBoSgD9ZGR17u/d4nb9NpERp0FkdLBe7hq8NIPBgkg==} dev: false - /@types/json-schema@7.0.12: - resolution: {integrity: sha512-Hr5Jfhc9eYOQNPYO5WLDq/n4jqijdHNlDXjuAQkkt+mWdQR+XJToOHrsD4cPaMXpn6KO7y2+wM8AZEs8VpBLVA==} - dev: true - /@types/json-schema@7.0.13: resolution: {integrity: sha512-RbSSoHliUbnXj3ny0CNFOoxrIDV6SUGyStHsvDqosw6CkdPV8TtWGlfecuK4ToyMEAql6pzNxgCFKanovUzlgQ==} dev: true @@ -5942,9 +5675,8 @@ packages: /@types/keyv@3.1.4: resolution: {integrity: sha512-BQ5aZNSCpj7D6K2ksrRCTmKRLEpnPvWDiLPfoGyhZ++8YtiK9d/3DBKPJgry359X/P1PfruyYwvnvwFjuEiEIg==} - requiresBuild: true dependencies: - '@types/node': 12.20.55 + '@types/node': 20.8.6 dev: true optional: true @@ -5984,8 +5716,8 @@ packages: resolution: {integrity: sha512-K0VQKziLUWkVKiRVrx4a40iPaxTUefQmjtkQofBkYRcoaaL/8rhwDWww9qWbrgicNOgnpIsMxyNIUM4+n6dUIA==} dev: true - /@types/minimist@1.2.2: - resolution: {integrity: sha512-jhuKLIRrhvCPLqwPcx6INqmKeiA5EWrsCOPhrlFSrbrmU4ZMPjj5Ul/oLCMDO98XRUIwVm78xICz4EPCektzeQ==} + /@types/minimist@1.2.3: + resolution: {integrity: sha512-ZYFzrvyWUNhaPomn80dsMNgMeXxNWZBdkuG/hWlUvXvbdUH8ZERNBGXnU87McuGcWDsyzX2aChCv/SVN348k3A==} dev: true /@types/mixpanel@2.14.3: @@ -5995,24 +5727,20 @@ packages: /@types/mkdirp@0.5.2: resolution: {integrity: sha512-U5icWpv7YnZYGsN4/cmh3WD2onMY0aJIiTE6+51TwJCttdHvtCYmkBNOobHlXwrJRL0nkH9jH4kD+1FAdMN4Tg==} dependencies: - '@types/node': 12.20.55 + '@types/node': 20.8.6 dev: true /@types/mocha@10.0.2: resolution: {integrity: sha512-NaHL0+0lLNhX6d9rs+NSt97WH/gIlRHmszXbQ/8/MV/eVcFNdeJ/GYhrFuUc8K7WuPhRhTSdMkCp8VMzhUq85w==} dev: true - /@types/ms@0.7.31: - resolution: {integrity: sha512-iiUgKzV9AuaEkZqkOLDIvlQiL6ltuZd9tGcW3gwpnX8JbuiuhFlEGmmFXEXkN50Cvq7Os88IY2v0dkDqXYWVgA==} - /@types/ms@0.7.32: resolution: {integrity: sha512-xPSg0jm4mqgEkNhowKgZFBNtwoEwF6gJ4Dhww+GFpm3IgtNseHQZ5IqdNwnquZEoANxyDAKDRAdVo4Z72VvD/g==} - dev: false /@types/node-fetch@2.6.6: resolution: {integrity: sha512-95X8guJYhfqiuVVhRFxVQcf4hW/2bCuoPwDasMf/531STFoNoWTT7YDnWdXHEZKqAGUigmpG31r2FE70LwnzJw==} dependencies: - '@types/node': 12.20.55 + '@types/node': 20.8.6 form-data: 4.0.0 dev: true @@ -6023,14 +5751,6 @@ packages: /@types/node@12.20.55: resolution: {integrity: sha512-J8xLz7q2OFulZ2cyGTLE1TbbZcjpno7FaN6zdJNrgAdrJ+DZzh/uFR6YrTb4C+nXakvud8Q4+rbhoIWlYQbUFQ==} - /@types/node@18.15.13: - resolution: {integrity: sha512-N+0kuo9KgrUQ1Sn/ifDXsvg0TTleP7rIy4zOBGECxAljqvqfqpTfzx0Q1NUedOixRMBfe2Whhb056a42cWs26Q==} - dev: true - - /@types/node@20.8.3: - resolution: {integrity: sha512-jxiZQFpb+NlH5kjW49vXxvxTjeeqlbsnTAdBTKpzEdPs9itay7MscYXz3Fo9VYFEsfQ6LJFitHad3faerLAjCw==} - dev: true - /@types/node@20.8.6: resolution: {integrity: sha512-eWO4K2Ji70QzKUqRy6oyJWUeB7+g2cRagT3T/nxYibYcT4y2BDL8lqolRXjTHmkZCdJfIPaY73KbJAZmcryxTQ==} dependencies: @@ -6040,8 +5760,8 @@ packages: resolution: {integrity: sha512-tktOkFUA4kXx2hhhrB8bIFb5TbwzS4uOhKEmwiD+NoiL0qtP2OQ9mFldbgD4dV1djrlBYP6eBuQZiWjuHUpqFw==} dev: true - /@types/normalize-package-data@2.4.1: - resolution: {integrity: sha512-Gj7cI7z+98M282Tqmp2K5EIsoouUEzbBJhQQzDE3jSIRk6r9gsz0oUokqIUR4u1R3dMHo0pDHM7sNOHyhulypw==} + /@types/normalize-package-data@2.4.2: + resolution: {integrity: sha512-lqa4UEhhv/2sjjIQgjX8B+RBjj47eo0mzGasklVJ78UKGQY1r0VpB9XHDaZZO9qzEFDdy4MrXLuEaSmPrPSe/A==} dev: true /@types/pbkdf2@3.1.0: @@ -6056,8 +5776,8 @@ packages: /@types/prop-types@15.7.8: resolution: {integrity: sha512-kMpQpfZKSCBqltAJwskgePRaYRFukDkm1oItcAbC3gNELR20XIBcN9VRgg4+m8DKsTfkWeA4m4Imp4DDuWy7FQ==} - /@types/pug@2.0.6: - resolution: {integrity: sha512-SnHmG9wN1UVmagJOnyo/qkk0Z7gejYxOYYmaAwr5u2yFYfsupN3sg10kyzN8Hep/2zbHxCnsumxOoRIRMBwKCg==} + /@types/pug@2.0.7: + resolution: {integrity: sha512-I469DU0UXNC1aHepwirWhu9YKg5fkxohZD95Ey/5A7lovC+Siu+MCLffva87lnfThaOrw9Vb1DUN5t55oULAAw==} dev: true /@types/qs@6.9.8: @@ -6081,14 +5801,13 @@ packages: /@types/resolve@0.0.8: resolution: {integrity: sha512-auApPaJf3NPfe18hSoJkp8EbZzer2ISk7o8mCC3M9he/a04+gbMF97NkpD2S8riMGvm4BMRI59/SZQSaLTKpsQ==} dependencies: - '@types/node': 12.20.55 + '@types/node': 20.8.6 dev: true /@types/responselike@1.0.1: resolution: {integrity: sha512-TiGnitEDxj2X0j+98Eqk5lv/Cij8oHd32bU4D/Yw6AOq7vvTk0gSD2GPj0G/HkvhMoVsdlhYF4yqqlyPBTM6Sg==} - requiresBuild: true dependencies: - '@types/node': 12.20.55 + '@types/node': 20.8.6 dev: true optional: true @@ -6102,7 +5821,7 @@ packages: resolution: {integrity: sha512-jn7qwGFmJHwUSphV8zZneO3GmtlgLsmhs/LQyVvQbIIa+fzGMUiHI4HXJZL3FT8MJmgXWbLGiVVY7ElvHq6vDA==} deprecated: This is a stub types definition. sass provides its own type definitions, so you do not need this installed. dependencies: - sass: 1.66.1 + sass: 1.69.3 dev: true /@types/scheduler@0.16.4: @@ -6113,10 +5832,6 @@ packages: dependencies: '@types/node': 20.8.6 - /@types/semver@7.5.1: - resolution: {integrity: sha512-cJRQXpObxfNKkFAZbJl2yjWtJCqELQIdShsogr1d2MilP8dKD9TE/nEKHkJgUNHdGKCQaf9HbIynuV2csLGVLg==} - dev: true - /@types/semver@7.5.3: resolution: {integrity: sha512-OxepLK9EuNEIPxWNME+C6WwbRAOOI2o2BaQEGzz5Lu2e4Z5eDnEo+/aVEDMIXywoJitJ7xWd641wrGLZdtwRyw==} dev: true @@ -6142,8 +5857,8 @@ packages: resolution: {integrity: sha512-Hl219/BT5fLAaz6NDkSuhzasy49dwQS/DSdu4MdggFB8zcXv7vflBI3xp7FEmkmdDkBUI2bPUNeMttp2knYdxw==} dev: true - /@types/trusted-types@2.0.3: - resolution: {integrity: sha512-NfQ4gyz38SL8sDNrSixxU2Os1a5xcdFxipAFxYEuLUlvU2uDwS4NUpsImcf1//SlWItCVMMLiylsxbmNMToV/g==} + /@types/trusted-types@2.0.4: + resolution: {integrity: sha512-IDaobHimLQhjwsQ/NMwRVfa/yL7L/wriQPMhw1ZJall0KX6E1oxk29XMDeilW5qTIg5aoiqf5Udy8U/51aNoQQ==} /@types/underscore@1.11.11: resolution: {integrity: sha512-J/ZgSP9Yv0S+wfUfeRh9ynktcCvycfW4S9NbzkFdiHLBth+Ctdy5nYg3ZAqUKq7v3gcJce6rXo41zJV6IqsXsQ==} @@ -6167,19 +5882,19 @@ packages: /@types/ws@7.4.7: resolution: {integrity: sha512-JQbbmxZTZehdc2iszGKs5oC3NFnjeay7mtAWrdt7qNtAVK0g19muApzAy4bm9byz79xa2ZnO/BOBC2R8RC5Lww==} dependencies: - '@types/node': 12.20.55 + '@types/node': 20.8.6 - /@types/yargs-parser@21.0.0: - resolution: {integrity: sha512-iO9ZQHkZxHn4mSakYV0vFHAVDyEOIJQrV2uZ06HxEPcx+mt8swXoZHIbaaJ2crJYFfErySgktuTZ3BeLz+XmFA==} + /@types/yargs-parser@21.0.1: + resolution: {integrity: sha512-axdPBuLuEJt0c4yI5OZssC19K2Mq1uKdrfZBzuxLvaztgqUtFYZUNw7lETExPYJR9jdEoIg4mb7RQKRQzOkeGQ==} dev: true - /@types/yargs@16.0.5: - resolution: {integrity: sha512-AxO/ADJOBFJScHbWhq2xAhlWP24rY4aCEG/NFaMvbT3X2MgRsLjhjQwsn0Zi5zn0LG9jUhCCZMeX9Dkuw6k+vQ==} + /@types/yargs@16.0.6: + resolution: {integrity: sha512-oTP7/Q13GSPrgcwEwdlnkoZSQ1Hg9THe644qq8PG6hhJzjZ3qj1JjEFPIwWV/IXVs5XGIVqtkNOS9kh63WIJ+A==} dependencies: - '@types/yargs-parser': 21.0.0 + '@types/yargs-parser': 21.0.1 dev: true - /@typescript-eslint/eslint-plugin@5.16.0(@typescript-eslint/parser@5.45.0)(eslint@7.32.0)(typescript@4.9.5): + /@typescript-eslint/eslint-plugin@5.16.0(@typescript-eslint/parser@5.16.0)(eslint@7.32.0)(typescript@4.6.4): resolution: {integrity: sha512-SJoba1edXvQRMmNI505Uo4XmGbxCK9ARQpkvOd00anxzri9RNQk0DDCxD+LIl+jYhkzOJiOMMKYEHnHEODjdCw==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} peerDependencies: @@ -6190,53 +5905,24 @@ packages: typescript: optional: true dependencies: - '@typescript-eslint/parser': 5.45.0(eslint@7.32.0)(typescript@4.9.5) + '@typescript-eslint/parser': 5.16.0(eslint@7.32.0)(typescript@4.6.4) '@typescript-eslint/scope-manager': 5.16.0 - '@typescript-eslint/type-utils': 5.16.0(eslint@7.32.0)(typescript@4.9.5) - '@typescript-eslint/utils': 5.16.0(eslint@7.32.0)(typescript@4.9.5) + '@typescript-eslint/type-utils': 5.16.0(eslint@7.32.0)(typescript@4.6.4) + '@typescript-eslint/utils': 5.16.0(eslint@7.32.0)(typescript@4.6.4) debug: 4.3.4(supports-color@8.1.1) eslint: 7.32.0 functional-red-black-tree: 1.0.1 ignore: 5.2.4 regexpp: 3.2.0 semver: 7.5.4 - tsutils: 3.21.0(typescript@4.9.5) - typescript: 4.9.5 + tsutils: 3.21.0(typescript@4.6.4) + typescript: 4.6.4 transitivePeerDependencies: - supports-color dev: true - /@typescript-eslint/eslint-plugin@6.6.0(@typescript-eslint/parser@5.45.0)(eslint@7.32.0)(typescript@4.9.5): - resolution: {integrity: sha512-CW9YDGTQnNYMIo5lMeuiIG08p4E0cXrXTbcZ2saT/ETE7dWUrNxlijsQeU04qAAKkILiLzdQz+cGFxCJjaZUmA==} - engines: {node: ^16.0.0 || >=18.0.0} - peerDependencies: - '@typescript-eslint/parser': ^6.0.0 || ^6.0.0-alpha - eslint: ^7.0.0 || ^8.0.0 - typescript: '*' - peerDependenciesMeta: - typescript: - optional: true - dependencies: - '@eslint-community/regexpp': 4.8.0 - '@typescript-eslint/parser': 5.45.0(eslint@7.32.0)(typescript@4.9.5) - '@typescript-eslint/scope-manager': 6.6.0 - '@typescript-eslint/type-utils': 6.6.0(eslint@7.32.0)(typescript@4.9.5) - '@typescript-eslint/utils': 6.6.0(eslint@7.32.0)(typescript@4.9.5) - '@typescript-eslint/visitor-keys': 6.6.0 - debug: 4.3.4(supports-color@8.1.1) - eslint: 7.32.0 - graphemer: 1.4.0 - ignore: 5.2.4 - natural-compare: 1.4.0 - semver: 7.5.4 - ts-api-utils: 1.0.2(typescript@4.9.5) - typescript: 4.9.5 - transitivePeerDependencies: - - supports-color - dev: true - - /@typescript-eslint/eslint-plugin@6.6.0(@typescript-eslint/parser@5.45.0)(eslint@8.51.0)(typescript@4.9.5): - resolution: {integrity: sha512-CW9YDGTQnNYMIo5lMeuiIG08p4E0cXrXTbcZ2saT/ETE7dWUrNxlijsQeU04qAAKkILiLzdQz+cGFxCJjaZUmA==} + /@typescript-eslint/eslint-plugin@6.7.5(@typescript-eslint/parser@5.16.0)(eslint@7.32.0)(typescript@4.6.4): + resolution: {integrity: sha512-JhtAwTRhOUcP96D0Y6KYnwig/MRQbOoLGXTON2+LlyB/N35SP9j1boai2zzwXb7ypKELXMx3DVk9UTaEq1vHEw==} engines: {node: ^16.0.0 || >=18.0.0} peerDependencies: '@typescript-eslint/parser': ^6.0.0 || ^6.0.0-alpha @@ -6246,26 +5932,26 @@ packages: typescript: optional: true dependencies: - '@eslint-community/regexpp': 4.8.0 - '@typescript-eslint/parser': 5.45.0(eslint@8.51.0)(typescript@4.9.5) - '@typescript-eslint/scope-manager': 6.6.0 - '@typescript-eslint/type-utils': 6.6.0(eslint@8.51.0)(typescript@4.9.5) - '@typescript-eslint/utils': 6.6.0(eslint@8.51.0)(typescript@4.9.5) - '@typescript-eslint/visitor-keys': 6.6.0 + '@eslint-community/regexpp': 4.9.1 + '@typescript-eslint/parser': 5.16.0(eslint@7.32.0)(typescript@4.6.4) + '@typescript-eslint/scope-manager': 6.7.5 + '@typescript-eslint/type-utils': 6.7.5(eslint@7.32.0)(typescript@4.6.4) + '@typescript-eslint/utils': 6.7.5(eslint@7.32.0)(typescript@4.6.4) + '@typescript-eslint/visitor-keys': 6.7.5 debug: 4.3.4(supports-color@8.1.1) - eslint: 8.51.0 + eslint: 7.32.0 graphemer: 1.4.0 ignore: 5.2.4 natural-compare: 1.4.0 semver: 7.5.4 - ts-api-utils: 1.0.2(typescript@4.9.5) - typescript: 4.9.5 + ts-api-utils: 1.0.3(typescript@4.6.4) + typescript: 4.6.4 transitivePeerDependencies: - supports-color dev: true - /@typescript-eslint/eslint-plugin@6.6.0(@typescript-eslint/parser@6.7.0)(eslint@8.28.0)(typescript@5.1.6): - resolution: {integrity: sha512-CW9YDGTQnNYMIo5lMeuiIG08p4E0cXrXTbcZ2saT/ETE7dWUrNxlijsQeU04qAAKkILiLzdQz+cGFxCJjaZUmA==} + /@typescript-eslint/eslint-plugin@6.7.5(@typescript-eslint/parser@5.16.0)(eslint@8.51.0)(typescript@4.6.4): + resolution: {integrity: sha512-JhtAwTRhOUcP96D0Y6KYnwig/MRQbOoLGXTON2+LlyB/N35SP9j1boai2zzwXb7ypKELXMx3DVk9UTaEq1vHEw==} engines: {node: ^16.0.0 || >=18.0.0} peerDependencies: '@typescript-eslint/parser': ^6.0.0 || ^6.0.0-alpha @@ -6275,20 +5961,20 @@ packages: typescript: optional: true dependencies: - '@eslint-community/regexpp': 4.8.0 - '@typescript-eslint/parser': 6.7.0(eslint@8.28.0)(typescript@5.1.6) - '@typescript-eslint/scope-manager': 6.6.0 - '@typescript-eslint/type-utils': 6.6.0(eslint@8.28.0)(typescript@5.1.6) - '@typescript-eslint/utils': 6.6.0(eslint@8.28.0)(typescript@5.1.6) - '@typescript-eslint/visitor-keys': 6.6.0 + '@eslint-community/regexpp': 4.9.1 + '@typescript-eslint/parser': 5.16.0(eslint@8.51.0)(typescript@4.6.4) + '@typescript-eslint/scope-manager': 6.7.5 + '@typescript-eslint/type-utils': 6.7.5(eslint@8.51.0)(typescript@4.6.4) + '@typescript-eslint/utils': 6.7.5(eslint@8.51.0)(typescript@4.6.4) + '@typescript-eslint/visitor-keys': 6.7.5 debug: 4.3.4(supports-color@8.1.1) - eslint: 8.28.0 + eslint: 8.51.0 graphemer: 1.4.0 ignore: 5.2.4 natural-compare: 1.4.0 semver: 7.5.4 - ts-api-utils: 1.0.2(typescript@5.1.6) - typescript: 5.1.6 + ts-api-utils: 1.0.3(typescript@4.6.4) + typescript: 4.6.4 transitivePeerDependencies: - supports-color dev: true @@ -6322,8 +6008,8 @@ packages: - supports-color dev: true - /@typescript-eslint/parser@5.45.0(eslint@7.32.0)(typescript@4.9.5): - resolution: {integrity: sha512-brvs/WSM4fKUmF5Ot/gEve6qYiCMjm6w4HkHPfS6ZNmxTS0m0iNN4yOChImaCkqc1hRwFGqUyanMXuGal6oyyQ==} + /@typescript-eslint/parser@5.16.0(eslint@7.32.0)(typescript@4.6.4): + resolution: {integrity: sha512-fkDq86F0zl8FicnJtdXakFs4lnuebH6ZADDw6CYQv0UZeIjHvmEw87m9/29nk2Dv5Lmdp0zQ3zDQhiMWQf/GbA==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} peerDependencies: eslint: ^6.0.0 || ^7.0.0 || ^8.0.0 @@ -6332,18 +6018,18 @@ packages: typescript: optional: true dependencies: - '@typescript-eslint/scope-manager': 5.45.0 - '@typescript-eslint/types': 5.45.0 - '@typescript-eslint/typescript-estree': 5.45.0(typescript@4.9.5) + '@typescript-eslint/scope-manager': 5.16.0 + '@typescript-eslint/types': 5.16.0 + '@typescript-eslint/typescript-estree': 5.16.0(typescript@4.6.4) debug: 4.3.4(supports-color@8.1.1) eslint: 7.32.0 - typescript: 4.9.5 + typescript: 4.6.4 transitivePeerDependencies: - supports-color dev: true - /@typescript-eslint/parser@5.45.0(eslint@8.51.0)(typescript@4.9.5): - resolution: {integrity: sha512-brvs/WSM4fKUmF5Ot/gEve6qYiCMjm6w4HkHPfS6ZNmxTS0m0iNN4yOChImaCkqc1hRwFGqUyanMXuGal6oyyQ==} + /@typescript-eslint/parser@5.16.0(eslint@8.51.0)(typescript@4.6.4): + resolution: {integrity: sha512-fkDq86F0zl8FicnJtdXakFs4lnuebH6ZADDw6CYQv0UZeIjHvmEw87m9/29nk2Dv5Lmdp0zQ3zDQhiMWQf/GbA==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} peerDependencies: eslint: ^6.0.0 || ^7.0.0 || ^8.0.0 @@ -6352,33 +6038,12 @@ packages: typescript: optional: true dependencies: - '@typescript-eslint/scope-manager': 5.45.0 - '@typescript-eslint/types': 5.45.0 - '@typescript-eslint/typescript-estree': 5.45.0(typescript@4.9.5) + '@typescript-eslint/scope-manager': 5.16.0 + '@typescript-eslint/types': 5.16.0 + '@typescript-eslint/typescript-estree': 5.16.0(typescript@4.6.4) debug: 4.3.4(supports-color@8.1.1) eslint: 8.51.0 - typescript: 4.9.5 - transitivePeerDependencies: - - supports-color - dev: true - - /@typescript-eslint/parser@6.7.0(eslint@8.28.0)(typescript@5.1.6): - resolution: {integrity: sha512-jZKYwqNpNm5kzPVP5z1JXAuxjtl2uG+5NpaMocFPTNC2EdYIgbXIPImObOkhbONxtFTTdoZstLZefbaK+wXZng==} - engines: {node: ^16.0.0 || >=18.0.0} - peerDependencies: - eslint: ^7.0.0 || ^8.0.0 - typescript: '*' - peerDependenciesMeta: - typescript: - optional: true - dependencies: - '@typescript-eslint/scope-manager': 6.7.0 - '@typescript-eslint/types': 6.7.0 - '@typescript-eslint/typescript-estree': 6.7.0(typescript@5.1.6) - '@typescript-eslint/visitor-keys': 6.7.0 - debug: 4.3.4(supports-color@8.1.1) - eslint: 8.28.0 - typescript: 5.1.6 + typescript: 4.6.4 transitivePeerDependencies: - supports-color dev: true @@ -6412,14 +6077,6 @@ packages: '@typescript-eslint/visitor-keys': 5.16.0 dev: true - /@typescript-eslint/scope-manager@5.45.0: - resolution: {integrity: sha512-noDMjr87Arp/PuVrtvN3dXiJstQR1+XlQ4R1EvzG+NMgXi8CuMCXpb8JqNtFHKceVSQ985BZhfRdowJzbv4yKw==} - engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} - dependencies: - '@typescript-eslint/types': 5.45.0 - '@typescript-eslint/visitor-keys': 5.45.0 - dev: true - /@typescript-eslint/scope-manager@5.62.0: resolution: {integrity: sha512-VXuvVvZeQCQb5Zgf4HAxc04q5j+WrNAtNh9OwCsCgpKqESMTu3tF/jhZ3xG6T4NZwWl65Bg8KuS2uEvhSfLl0w==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} @@ -6428,22 +6085,6 @@ packages: '@typescript-eslint/visitor-keys': 5.62.0 dev: true - /@typescript-eslint/scope-manager@6.6.0: - resolution: {integrity: sha512-pT08u5W/GT4KjPUmEtc2kSYvrH8x89cVzkA0Sy2aaOUIw6YxOIjA8ilwLr/1fLjOedX1QAuBpG9XggWqIIfERw==} - engines: {node: ^16.0.0 || >=18.0.0} - dependencies: - '@typescript-eslint/types': 6.6.0 - '@typescript-eslint/visitor-keys': 6.6.0 - dev: true - - /@typescript-eslint/scope-manager@6.7.0: - resolution: {integrity: sha512-lAT1Uau20lQyjoLUQ5FUMSX/dS07qux9rYd5FGzKz/Kf8W8ccuvMyldb8hadHdK/qOI7aikvQWqulnEq2nCEYA==} - engines: {node: ^16.0.0 || >=18.0.0} - dependencies: - '@typescript-eslint/types': 6.7.0 - '@typescript-eslint/visitor-keys': 6.7.0 - dev: true - /@typescript-eslint/scope-manager@6.7.5: resolution: {integrity: sha512-GAlk3eQIwWOJeb9F7MKQ6Jbah/vx1zETSDw8likab/eFcqkjSD7BI75SDAeC5N2L0MmConMoPvTsmkrg71+B1A==} engines: {node: ^16.0.0 || >=18.0.0} @@ -6452,7 +6093,7 @@ packages: '@typescript-eslint/visitor-keys': 6.7.5 dev: true - /@typescript-eslint/type-utils@5.16.0(eslint@7.32.0)(typescript@4.9.5): + /@typescript-eslint/type-utils@5.16.0(eslint@7.32.0)(typescript@4.6.4): resolution: {integrity: sha512-SKygICv54CCRl1Vq5ewwQUJV/8padIWvPgCxlWPGO/OgQLCijY9G7lDu6H+mqfQtbzDNlVjzVWQmeqbLMBLEwQ==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} peerDependencies: @@ -6462,17 +6103,17 @@ packages: typescript: optional: true dependencies: - '@typescript-eslint/utils': 5.16.0(eslint@7.32.0)(typescript@4.9.5) + '@typescript-eslint/utils': 5.16.0(eslint@7.32.0)(typescript@4.6.4) debug: 4.3.4(supports-color@8.1.1) eslint: 7.32.0 - tsutils: 3.21.0(typescript@4.9.5) - typescript: 4.9.5 + tsutils: 3.21.0(typescript@4.6.4) + typescript: 4.6.4 transitivePeerDependencies: - supports-color dev: true - /@typescript-eslint/type-utils@6.6.0(eslint@7.32.0)(typescript@4.9.5): - resolution: {integrity: sha512-8m16fwAcEnQc69IpeDyokNO+D5spo0w1jepWWY2Q6y5ZKNuj5EhVQXjtVAeDDqvW6Yg7dhclbsz6rTtOvcwpHg==} + /@typescript-eslint/type-utils@6.7.5(eslint@7.32.0)(typescript@4.6.4): + resolution: {integrity: sha512-Gs0qos5wqxnQrvpYv+pf3XfcRXW6jiAn9zE/K+DlmYf6FcpxeNYN0AIETaPR7rHO4K2UY+D0CIbDP9Ut0U4m1g==} engines: {node: ^16.0.0 || >=18.0.0} peerDependencies: eslint: ^7.0.0 || ^8.0.0 @@ -6481,38 +6122,18 @@ packages: typescript: optional: true dependencies: - '@typescript-eslint/typescript-estree': 6.6.0(typescript@4.9.5) - '@typescript-eslint/utils': 6.6.0(eslint@7.32.0)(typescript@4.9.5) + '@typescript-eslint/typescript-estree': 6.7.5(typescript@4.6.4) + '@typescript-eslint/utils': 6.7.5(eslint@7.32.0)(typescript@4.6.4) debug: 4.3.4(supports-color@8.1.1) eslint: 7.32.0 - ts-api-utils: 1.0.2(typescript@4.9.5) - typescript: 4.9.5 - transitivePeerDependencies: - - supports-color - dev: true - - /@typescript-eslint/type-utils@6.6.0(eslint@8.28.0)(typescript@5.1.6): - resolution: {integrity: sha512-8m16fwAcEnQc69IpeDyokNO+D5spo0w1jepWWY2Q6y5ZKNuj5EhVQXjtVAeDDqvW6Yg7dhclbsz6rTtOvcwpHg==} - engines: {node: ^16.0.0 || >=18.0.0} - peerDependencies: - eslint: ^7.0.0 || ^8.0.0 - typescript: '*' - peerDependenciesMeta: - typescript: - optional: true - dependencies: - '@typescript-eslint/typescript-estree': 6.6.0(typescript@5.1.6) - '@typescript-eslint/utils': 6.6.0(eslint@8.28.0)(typescript@5.1.6) - debug: 4.3.4(supports-color@8.1.1) - eslint: 8.28.0 - ts-api-utils: 1.0.2(typescript@5.1.6) - typescript: 5.1.6 + ts-api-utils: 1.0.3(typescript@4.6.4) + typescript: 4.6.4 transitivePeerDependencies: - supports-color dev: true - /@typescript-eslint/type-utils@6.6.0(eslint@8.51.0)(typescript@4.9.5): - resolution: {integrity: sha512-8m16fwAcEnQc69IpeDyokNO+D5spo0w1jepWWY2Q6y5ZKNuj5EhVQXjtVAeDDqvW6Yg7dhclbsz6rTtOvcwpHg==} + /@typescript-eslint/type-utils@6.7.5(eslint@8.51.0)(typescript@4.6.4): + resolution: {integrity: sha512-Gs0qos5wqxnQrvpYv+pf3XfcRXW6jiAn9zE/K+DlmYf6FcpxeNYN0AIETaPR7rHO4K2UY+D0CIbDP9Ut0U4m1g==} engines: {node: ^16.0.0 || >=18.0.0} peerDependencies: eslint: ^7.0.0 || ^8.0.0 @@ -6521,12 +6142,12 @@ packages: typescript: optional: true dependencies: - '@typescript-eslint/typescript-estree': 6.6.0(typescript@4.9.5) - '@typescript-eslint/utils': 6.6.0(eslint@8.51.0)(typescript@4.9.5) + '@typescript-eslint/typescript-estree': 6.7.5(typescript@4.6.4) + '@typescript-eslint/utils': 6.7.5(eslint@8.51.0)(typescript@4.6.4) debug: 4.3.4(supports-color@8.1.1) eslint: 8.51.0 - ts-api-utils: 1.0.2(typescript@4.9.5) - typescript: 4.9.5 + ts-api-utils: 1.0.3(typescript@4.6.4) + typescript: 4.6.4 transitivePeerDependencies: - supports-color dev: true @@ -6556,32 +6177,17 @@ packages: engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} dev: true - /@typescript-eslint/types@5.45.0: - resolution: {integrity: sha512-QQij+u/vgskA66azc9dCmx+rev79PzX8uDHpsqSjEFtfF2gBUTRCpvYMh2gw2ghkJabNkPlSUCimsyBEQZd1DA==} - engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} - dev: true - /@typescript-eslint/types@5.62.0: resolution: {integrity: sha512-87NVngcbVXUahrRTqIK27gD2t5Cu1yuCXxbLcFtCzZGlfyVWWh8mLHkoxzjsB6DDNnvdL+fW8MiwPEJyGJQDgQ==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} dev: true - /@typescript-eslint/types@6.6.0: - resolution: {integrity: sha512-CB6QpJQ6BAHlJXdwUmiaXDBmTqIE2bzGTDLADgvqtHWuhfNP3rAOK7kAgRMAET5rDRr9Utt+qAzRBdu3AhR3sg==} - engines: {node: ^16.0.0 || >=18.0.0} - dev: true - - /@typescript-eslint/types@6.7.0: - resolution: {integrity: sha512-ihPfvOp7pOcN/ysoj0RpBPOx3HQTJTrIN8UZK+WFd3/iDeFHHqeyYxa4hQk4rMhsz9H9mXpR61IzwlBVGXtl9Q==} - engines: {node: ^16.0.0 || >=18.0.0} - dev: true - /@typescript-eslint/types@6.7.5: resolution: {integrity: sha512-WboQBlOXtdj1tDFPyIthpKrUb+kZf2VroLZhxKa/VlwLlLyqv/PwUNgL30BlTVZV1Wu4Asu2mMYPqarSO4L5ZQ==} engines: {node: ^16.0.0 || >=18.0.0} dev: true - /@typescript-eslint/typescript-estree@5.16.0(typescript@4.9.5): + /@typescript-eslint/typescript-estree@5.16.0(typescript@4.6.4): resolution: {integrity: sha512-SE4VfbLWUZl9MR+ngLSARptUv2E8brY0luCdgmUevU6arZRY/KxYoLI/3V/yxaURR8tLRN7bmZtJdgmzLHI6pQ==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} peerDependencies: @@ -6596,34 +6202,13 @@ packages: globby: 11.1.0 is-glob: 4.0.3 semver: 7.5.4 - tsutils: 3.21.0(typescript@4.9.5) - typescript: 4.9.5 - transitivePeerDependencies: - - supports-color - dev: true - - /@typescript-eslint/typescript-estree@5.45.0(typescript@4.9.5): - resolution: {integrity: sha512-maRhLGSzqUpFcZgXxg1qc/+H0bT36lHK4APhp0AEUVrpSwXiRAomm/JGjSG+kNUio5kAa3uekCYu/47cnGn5EQ==} - engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} - peerDependencies: - typescript: '*' - peerDependenciesMeta: - typescript: - optional: true - dependencies: - '@typescript-eslint/types': 5.45.0 - '@typescript-eslint/visitor-keys': 5.45.0 - debug: 4.3.4(supports-color@8.1.1) - globby: 11.1.0 - is-glob: 4.0.3 - semver: 7.5.4 - tsutils: 3.21.0(typescript@4.9.5) - typescript: 4.9.5 + tsutils: 3.21.0(typescript@4.6.4) + typescript: 4.6.4 transitivePeerDependencies: - supports-color dev: true - /@typescript-eslint/typescript-estree@5.62.0(typescript@4.9.5): + /@typescript-eslint/typescript-estree@5.62.0(typescript@4.6.4): resolution: {integrity: sha512-CmcQ6uY7b9y694lKdRB8FEel7JbU/40iSAPomu++SjLMntB+2Leay2LO6i8VnJk58MtE9/nQSFIH6jpyRWyYzA==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} peerDependencies: @@ -6638,56 +6223,14 @@ packages: globby: 11.1.0 is-glob: 4.0.3 semver: 7.5.4 - tsutils: 3.21.0(typescript@4.9.5) - typescript: 4.9.5 - transitivePeerDependencies: - - supports-color - dev: true - - /@typescript-eslint/typescript-estree@6.6.0(typescript@4.9.5): - resolution: {integrity: sha512-hMcTQ6Al8MP2E6JKBAaSxSVw5bDhdmbCEhGW/V8QXkb9oNsFkA4SBuOMYVPxD3jbtQ4R/vSODBsr76R6fP3tbA==} - engines: {node: ^16.0.0 || >=18.0.0} - peerDependencies: - typescript: '*' - peerDependenciesMeta: - typescript: - optional: true - dependencies: - '@typescript-eslint/types': 6.6.0 - '@typescript-eslint/visitor-keys': 6.6.0 - debug: 4.3.4(supports-color@8.1.1) - globby: 11.1.0 - is-glob: 4.0.3 - semver: 7.5.4 - ts-api-utils: 1.0.2(typescript@4.9.5) - typescript: 4.9.5 - transitivePeerDependencies: - - supports-color - dev: true - - /@typescript-eslint/typescript-estree@6.6.0(typescript@5.1.6): - resolution: {integrity: sha512-hMcTQ6Al8MP2E6JKBAaSxSVw5bDhdmbCEhGW/V8QXkb9oNsFkA4SBuOMYVPxD3jbtQ4R/vSODBsr76R6fP3tbA==} - engines: {node: ^16.0.0 || >=18.0.0} - peerDependencies: - typescript: '*' - peerDependenciesMeta: - typescript: - optional: true - dependencies: - '@typescript-eslint/types': 6.6.0 - '@typescript-eslint/visitor-keys': 6.6.0 - debug: 4.3.4(supports-color@8.1.1) - globby: 11.1.0 - is-glob: 4.0.3 - semver: 7.5.4 - ts-api-utils: 1.0.2(typescript@5.1.6) - typescript: 5.1.6 + tsutils: 3.21.0(typescript@4.6.4) + typescript: 4.6.4 transitivePeerDependencies: - supports-color dev: true - /@typescript-eslint/typescript-estree@6.7.0(typescript@5.1.6): - resolution: {integrity: sha512-dPvkXj3n6e9yd/0LfojNU8VMUGHWiLuBZvbM6V6QYD+2qxqInE7J+J/ieY2iGwR9ivf/R/haWGkIj04WVUeiSQ==} + /@typescript-eslint/typescript-estree@6.7.5(typescript@4.6.4): + resolution: {integrity: sha512-NhJiJ4KdtwBIxrKl0BqG1Ur+uw7FiOnOThcYx9DpOGJ/Abc9z2xNzLeirCG02Ig3vkvrc2qFLmYSSsaITbKjlg==} engines: {node: ^16.0.0 || >=18.0.0} peerDependencies: typescript: '*' @@ -6695,14 +6238,14 @@ packages: typescript: optional: true dependencies: - '@typescript-eslint/types': 6.7.0 - '@typescript-eslint/visitor-keys': 6.7.0 + '@typescript-eslint/types': 6.7.5 + '@typescript-eslint/visitor-keys': 6.7.5 debug: 4.3.4(supports-color@8.1.1) globby: 11.1.0 is-glob: 4.0.3 semver: 7.5.4 - ts-api-utils: 1.0.3(typescript@5.1.6) - typescript: 5.1.6 + ts-api-utils: 1.0.3(typescript@4.6.4) + typescript: 4.6.4 transitivePeerDependencies: - supports-color dev: true @@ -6728,16 +6271,16 @@ packages: - supports-color dev: true - /@typescript-eslint/utils@5.16.0(eslint@7.32.0)(typescript@4.9.5): + /@typescript-eslint/utils@5.16.0(eslint@7.32.0)(typescript@4.6.4): resolution: {integrity: sha512-iYej2ER6AwmejLWMWzJIHy3nPJeGDuCqf8Jnb+jAQVoPpmWzwQOfa9hWVB8GIQE5gsCv/rfN4T+AYb/V06WseQ==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} peerDependencies: eslint: ^6.0.0 || ^7.0.0 || ^8.0.0 dependencies: - '@types/json-schema': 7.0.12 + '@types/json-schema': 7.0.13 '@typescript-eslint/scope-manager': 5.16.0 '@typescript-eslint/types': 5.16.0 - '@typescript-eslint/typescript-estree': 5.16.0(typescript@4.9.5) + '@typescript-eslint/typescript-estree': 5.16.0(typescript@4.6.4) eslint: 7.32.0 eslint-scope: 5.1.1 eslint-utils: 3.0.0(eslint@7.32.0) @@ -6746,18 +6289,18 @@ packages: - typescript dev: true - /@typescript-eslint/utils@5.62.0(eslint@7.32.0)(typescript@4.9.5): + /@typescript-eslint/utils@5.62.0(eslint@7.32.0)(typescript@4.6.4): resolution: {integrity: sha512-n8oxjeb5aIbPFEtmQxQYOLI0i9n5ySBEY/ZEHHZqKQSFnxio1rv6dthascc9dLuwrL0RC5mPCxB7vnAVGAYWAQ==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} peerDependencies: eslint: ^6.0.0 || ^7.0.0 || ^8.0.0 dependencies: '@eslint-community/eslint-utils': 4.4.0(eslint@7.32.0) - '@types/json-schema': 7.0.12 - '@types/semver': 7.5.1 + '@types/json-schema': 7.0.13 + '@types/semver': 7.5.3 '@typescript-eslint/scope-manager': 5.62.0 '@typescript-eslint/types': 5.62.0 - '@typescript-eslint/typescript-estree': 5.62.0(typescript@4.9.5) + '@typescript-eslint/typescript-estree': 5.62.0(typescript@4.6.4) eslint: 7.32.0 eslint-scope: 5.1.1 semver: 7.5.4 @@ -6766,18 +6309,18 @@ packages: - typescript dev: true - /@typescript-eslint/utils@6.6.0(eslint@7.32.0)(typescript@4.9.5): - resolution: {integrity: sha512-mPHFoNa2bPIWWglWYdR0QfY9GN0CfvvXX1Sv6DlSTive3jlMTUy+an67//Gysc+0Me9pjitrq0LJp0nGtLgftw==} + /@typescript-eslint/utils@6.7.5(eslint@7.32.0)(typescript@4.6.4): + resolution: {integrity: sha512-pfRRrH20thJbzPPlPc4j0UNGvH1PjPlhlCMq4Yx7EGjV7lvEeGX0U6MJYe8+SyFutWgSHsdbJ3BXzZccYggezA==} engines: {node: ^16.0.0 || >=18.0.0} peerDependencies: eslint: ^7.0.0 || ^8.0.0 dependencies: '@eslint-community/eslint-utils': 4.4.0(eslint@7.32.0) - '@types/json-schema': 7.0.12 - '@types/semver': 7.5.1 - '@typescript-eslint/scope-manager': 6.6.0 - '@typescript-eslint/types': 6.6.0 - '@typescript-eslint/typescript-estree': 6.6.0(typescript@4.9.5) + '@types/json-schema': 7.0.13 + '@types/semver': 7.5.3 + '@typescript-eslint/scope-manager': 6.7.5 + '@typescript-eslint/types': 6.7.5 + '@typescript-eslint/typescript-estree': 6.7.5(typescript@4.6.4) eslint: 7.32.0 semver: 7.5.4 transitivePeerDependencies: @@ -6785,37 +6328,18 @@ packages: - typescript dev: true - /@typescript-eslint/utils@6.6.0(eslint@8.28.0)(typescript@5.1.6): - resolution: {integrity: sha512-mPHFoNa2bPIWWglWYdR0QfY9GN0CfvvXX1Sv6DlSTive3jlMTUy+an67//Gysc+0Me9pjitrq0LJp0nGtLgftw==} - engines: {node: ^16.0.0 || >=18.0.0} - peerDependencies: - eslint: ^7.0.0 || ^8.0.0 - dependencies: - '@eslint-community/eslint-utils': 4.4.0(eslint@8.28.0) - '@types/json-schema': 7.0.12 - '@types/semver': 7.5.1 - '@typescript-eslint/scope-manager': 6.6.0 - '@typescript-eslint/types': 6.6.0 - '@typescript-eslint/typescript-estree': 6.6.0(typescript@5.1.6) - eslint: 8.28.0 - semver: 7.5.4 - transitivePeerDependencies: - - supports-color - - typescript - dev: true - - /@typescript-eslint/utils@6.6.0(eslint@8.51.0)(typescript@4.9.5): - resolution: {integrity: sha512-mPHFoNa2bPIWWglWYdR0QfY9GN0CfvvXX1Sv6DlSTive3jlMTUy+an67//Gysc+0Me9pjitrq0LJp0nGtLgftw==} + /@typescript-eslint/utils@6.7.5(eslint@8.51.0)(typescript@4.6.4): + resolution: {integrity: sha512-pfRRrH20thJbzPPlPc4j0UNGvH1PjPlhlCMq4Yx7EGjV7lvEeGX0U6MJYe8+SyFutWgSHsdbJ3BXzZccYggezA==} engines: {node: ^16.0.0 || >=18.0.0} peerDependencies: eslint: ^7.0.0 || ^8.0.0 dependencies: '@eslint-community/eslint-utils': 4.4.0(eslint@8.51.0) - '@types/json-schema': 7.0.12 - '@types/semver': 7.5.1 - '@typescript-eslint/scope-manager': 6.6.0 - '@typescript-eslint/types': 6.6.0 - '@typescript-eslint/typescript-estree': 6.6.0(typescript@4.9.5) + '@types/json-schema': 7.0.13 + '@types/semver': 7.5.3 + '@typescript-eslint/scope-manager': 6.7.5 + '@typescript-eslint/types': 6.7.5 + '@typescript-eslint/typescript-estree': 6.7.5(typescript@4.6.4) eslint: 8.51.0 semver: 7.5.4 transitivePeerDependencies: @@ -6850,14 +6374,6 @@ packages: eslint-visitor-keys: 3.4.3 dev: true - /@typescript-eslint/visitor-keys@5.45.0: - resolution: {integrity: sha512-jc6Eccbn2RtQPr1s7th6jJWQHBHI6GBVQkCHoJFQ5UreaKm59Vxw+ynQUPPY2u2Amquc+7tmEoC2G52ApsGNNg==} - engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} - dependencies: - '@typescript-eslint/types': 5.45.0 - eslint-visitor-keys: 3.4.3 - dev: true - /@typescript-eslint/visitor-keys@5.62.0: resolution: {integrity: sha512-07ny+LHRzQXepkGg6w0mFY41fVUNBrL2Roj/++7V1txKugfjm/Ci/qSND03r2RhlJhJYMcTn9AhhSSqQp0Ysyw==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} @@ -6866,22 +6382,6 @@ packages: eslint-visitor-keys: 3.4.3 dev: true - /@typescript-eslint/visitor-keys@6.6.0: - resolution: {integrity: sha512-L61uJT26cMOfFQ+lMZKoJNbAEckLe539VhTxiGHrWl5XSKQgA0RTBZJW2HFPy5T0ZvPVSD93QsrTKDkfNwJGyQ==} - engines: {node: ^16.0.0 || >=18.0.0} - dependencies: - '@typescript-eslint/types': 6.6.0 - eslint-visitor-keys: 3.4.3 - dev: true - - /@typescript-eslint/visitor-keys@6.7.0: - resolution: {integrity: sha512-/C1RVgKFDmGMcVGeD8HjKv2bd72oI1KxQDeY8uc66gw9R0OK0eMq48cA+jv9/2Ag6cdrsUGySm1yzYmfz0hxwQ==} - engines: {node: ^16.0.0 || >=18.0.0} - dependencies: - '@typescript-eslint/types': 6.7.0 - eslint-visitor-keys: 3.4.3 - dev: true - /@typescript-eslint/visitor-keys@6.7.5: resolution: {integrity: sha512-3MaWdDZtLlsexZzDSdQWsFQ9l9nL8B80Z4fImSpyllFC/KLqWQRdEcB+gGGO+N3Q2uL40EsG66wZLsohPxNXvg==} engines: {node: ^16.0.0 || >=18.0.0} @@ -6905,11 +6405,11 @@ packages: istanbul-lib-report: 3.0.1 istanbul-lib-source-maps: 4.0.1 istanbul-reports: 3.1.6 - magic-string: 0.30.3 + magic-string: 0.30.5 picocolors: 1.0.0 std-env: 3.4.3 test-exclude: 6.0.0 - v8-to-istanbul: 9.1.0 + v8-to-istanbul: 9.1.3 vitest: 0.32.2(jsdom@22.1.0) transitivePeerDependencies: - supports-color @@ -6935,7 +6435,7 @@ packages: /@vitest/snapshot@0.32.2: resolution: {integrity: sha512-JwhpeH/PPc7GJX38vEfCy9LtRzf9F4er7i4OsAJyV7sjPwjj+AIR8cUgpMTWK4S3TiamzopcTyLsZDMuldoi5A==} dependencies: - magic-string: 0.30.3 + magic-string: 0.30.5 pathe: 1.1.1 pretty-format: 27.5.1 dev: true @@ -6943,7 +6443,7 @@ packages: /@vitest/spy@0.32.2: resolution: {integrity: sha512-Q/ZNILJ4ca/VzQbRM8ur3Si5Sardsh1HofatG9wsJY1RfEaw0XKP8IVax2lI1qnrk9YPuG9LA2LkZ0EI/3d4ug==} dependencies: - tinyspy: 2.1.1 + tinyspy: 2.2.0 dev: true /@vitest/utils@0.32.2: @@ -6974,7 +6474,7 @@ packages: source-map: 0.6.1 vue-template-es2015-compiler: 1.9.1 optionalDependencies: - prettier: 2.8.8 + prettier: 2.7.1 transitivePeerDependencies: - arc-templates - atpl @@ -7035,7 +6535,7 @@ packages: resolution: {integrity: sha512-hSzb6Ni/PejVzliKkc5T3ehzRJxr5k4fZMGYuouqwArWQ8z7R4jrIlm2j2nNOD7Epz6ZucdiVluU1YH0d/EEyw==} dev: false - /@wagmi/chains@0.2.22(typescript@4.9.5): + /@wagmi/chains@0.2.22(typescript@4.6.4): resolution: {integrity: sha512-TdiOzJT6TO1JrztRNjTA5Quz+UmQlbvWFG8N41u9tta0boHA1JCAzGGvU6KuIcOmJfRJkKOUIt67wlbopCpVHg==} peerDependencies: typescript: '>=4.9.4' @@ -7043,9 +6543,9 @@ packages: typescript: optional: true dependencies: - typescript: 4.9.5 + typescript: 4.6.4 - /@wagmi/chains@0.2.22(typescript@5.1.6): + /@wagmi/chains@0.2.22(typescript@5.2.2): resolution: {integrity: sha512-TdiOzJT6TO1JrztRNjTA5Quz+UmQlbvWFG8N41u9tta0boHA1JCAzGGvU6KuIcOmJfRJkKOUIt67wlbopCpVHg==} peerDependencies: typescript: '>=4.9.4' @@ -7053,10 +6553,10 @@ packages: typescript: optional: true dependencies: - typescript: 5.1.6 + typescript: 5.2.2 dev: true - /@wagmi/chains@1.0.0(typescript@4.9.5): + /@wagmi/chains@1.0.0(typescript@4.6.4): resolution: {integrity: sha512-eNbqRWyHbivcMNq5tbXJks4NaOzVLHnNQauHPeE/EDT9AlpqzcrMc+v2T1/2Iw8zN4zgqB86NCsxeJHJs7+xng==} peerDependencies: typescript: '>=5.0.4' @@ -7064,10 +6564,10 @@ packages: typescript: optional: true dependencies: - typescript: 4.9.5 + typescript: 4.6.4 dev: true - /@wagmi/chains@1.0.0(typescript@5.1.6): + /@wagmi/chains@1.0.0(typescript@5.2.2): resolution: {integrity: sha512-eNbqRWyHbivcMNq5tbXJks4NaOzVLHnNQauHPeE/EDT9AlpqzcrMc+v2T1/2Iw8zN4zgqB86NCsxeJHJs7+xng==} peerDependencies: typescript: '>=5.0.4' @@ -7075,10 +6575,10 @@ packages: typescript: optional: true dependencies: - typescript: 5.1.6 + typescript: 5.2.2 dev: true - /@wagmi/chains@1.4.0(typescript@5.1.6): + /@wagmi/chains@1.4.0(typescript@5.2.2): resolution: {integrity: sha512-9HwJrhcZ1TxyrCbE10y7s1eSiSiyfGam7AHIOLYExaOX+vpOZ+MNTt4orFEDbEpz1fxwJDPPI38lanAUix1OSA==} peerDependencies: typescript: '>=5.0.4' @@ -7086,19 +6586,9 @@ packages: typescript: optional: true dependencies: - typescript: 5.1.6 - - /@wagmi/chains@1.6.0(typescript@5.1.6): - resolution: {integrity: sha512-5FRlVxse5P4ZaHG3GTvxwVANSmYJas1eQrTBHhjxVtqXoorm0aLmCHbhmN8Xo1yu09PaWKlleEvfE98yH4AgIw==} - peerDependencies: - typescript: '>=5.0.4' - peerDependenciesMeta: - typescript: - optional: true - dependencies: - typescript: 5.1.6 + typescript: 5.2.2 - /@wagmi/cli@1.0.1(@wagmi/core@1.3.6)(typescript@5.1.6): + /@wagmi/cli@1.0.1(@wagmi/core@1.3.6)(typescript@5.2.2): resolution: {integrity: sha512-SZwT7RglyVDipDTPL/dEKfrAJ3GdSKfdhaF6CFoseIgSiOLkj3xbakvAqdjYSkYnnpjrqLXc3WKZCnszQryctA==} engines: {node: '>=14'} hasBin: true @@ -7114,9 +6604,9 @@ packages: wagmi: optional: true dependencies: - '@wagmi/chains': 0.2.22(typescript@5.1.6) - '@wagmi/core': 1.3.6(lokijs@1.5.12)(react@18.2.0)(typescript@5.1.6)(viem@1.4.1) - abitype: 0.8.1(typescript@5.1.6)(zod@3.22.2) + '@wagmi/chains': 0.2.22(typescript@5.2.2) + '@wagmi/core': 1.3.6(lokijs@1.5.12)(react@18.2.0)(typescript@5.2.2)(viem@1.16.0) + abitype: 0.8.1(typescript@5.2.2)(zod@3.22.4) abort-controller: 3.0.0 bundle-require: 3.1.2(esbuild@0.15.13) cac: 6.7.14 @@ -7136,15 +6626,15 @@ packages: pathe: 1.1.1 picocolors: 1.0.0 prettier: 2.8.8 - typescript: 5.1.6 - viem: 0.3.50(typescript@5.1.6)(zod@3.22.2) - zod: 3.22.2 + typescript: 5.2.2 + viem: 0.3.50(typescript@5.2.2)(zod@3.22.4) + zod: 3.22.4 transitivePeerDependencies: - bufferutil - utf-8-validate dev: true - /@wagmi/cli@1.0.1(typescript@4.9.5)(wagmi@0.12.16): + /@wagmi/cli@1.0.1(typescript@4.6.4)(wagmi@0.12.16): resolution: {integrity: sha512-SZwT7RglyVDipDTPL/dEKfrAJ3GdSKfdhaF6CFoseIgSiOLkj3xbakvAqdjYSkYnnpjrqLXc3WKZCnszQryctA==} engines: {node: '>=14'} hasBin: true @@ -7160,8 +6650,8 @@ packages: wagmi: optional: true dependencies: - '@wagmi/chains': 0.2.22(typescript@4.9.5) - abitype: 0.8.1(typescript@4.9.5)(zod@3.22.2) + '@wagmi/chains': 0.2.22(typescript@4.6.4) + abitype: 0.8.1(typescript@4.6.4)(zod@3.22.4) abort-controller: 3.0.0 bundle-require: 3.1.2(esbuild@0.15.13) cac: 6.7.14 @@ -7181,16 +6671,16 @@ packages: pathe: 1.1.1 picocolors: 1.0.0 prettier: 2.8.8 - typescript: 4.9.5 - viem: 0.3.50(typescript@4.9.5)(zod@3.22.2) - wagmi: 0.12.16(debug@4.3.4)(ethers@5.7.2)(react@18.2.0)(typescript@4.9.5) - zod: 3.22.2 + typescript: 4.6.4 + viem: 0.3.50(typescript@4.6.4)(zod@3.22.4) + wagmi: 0.12.16(debug@4.3.4)(ethers@5.7.1)(react@18.2.0)(typescript@4.6.4) + zod: 3.22.4 transitivePeerDependencies: - bufferutil - utf-8-validate dev: true - /@wagmi/connectors@0.1.1(@babel/core@7.23.2)(@wagmi/core@0.8.0)(ethers@5.7.2)(typescript@4.9.5): + /@wagmi/connectors@0.1.1(@babel/core@7.23.2)(@wagmi/core@0.8.0)(ethers@5.7.1)(typescript@4.6.4): resolution: {integrity: sha512-W9w73o9HCYzuBsDHuujwBT/nGGIu5qLBSqVqslXf/S1Q9OiWoudmuIs3opuYqxgw5MpWbMqhq6QaxA7Qcd6NrA==} peerDependencies: '@wagmi/core': 0.8.x @@ -7201,10 +6691,10 @@ packages: dependencies: '@coinbase/wallet-sdk': 3.6.3(@babel/core@7.23.2) '@ledgerhq/connect-kit-loader': 1.1.2 - '@wagmi/core': 0.8.0(@coinbase/wallet-sdk@3.6.3)(ethers@5.7.2)(react@18.2.0)(typescript@4.9.5) + '@wagmi/core': 0.8.0(@coinbase/wallet-sdk@3.6.3)(ethers@5.7.1)(react@18.2.0)(typescript@4.6.4) '@walletconnect/ethereum-provider': 1.8.0 - abitype: 0.1.8(typescript@4.9.5) - ethers: 5.7.2 + abitype: 0.1.8(typescript@4.6.4) + ethers: 5.7.1 eventemitter3: 4.0.7 transitivePeerDependencies: - '@babel/core' @@ -7216,7 +6706,7 @@ packages: - utf-8-validate dev: false - /@wagmi/connectors@0.3.21(@wagmi/core@0.10.14)(debug@4.3.4)(ethers@5.7.2)(react@18.2.0)(typescript@4.9.5): + /@wagmi/connectors@0.3.21(@wagmi/core@0.10.14)(debug@4.3.4)(ethers@5.7.1)(react@18.2.0)(typescript@4.6.4): resolution: {integrity: sha512-yXtczgBQzVhUeo6D2L9yu8HmWQv08v6Ji5Cb4ZNL1mM2VVnvXxv7l40fSschcTw6H5jBZytgeGgL/aTYhn3HYQ==} peerDependencies: '@wagmi/core': '>=0.9.x' @@ -7228,20 +6718,21 @@ packages: typescript: optional: true dependencies: - '@coinbase/wallet-sdk': 3.7.1 + '@coinbase/wallet-sdk': 3.7.2 '@ledgerhq/connect-kit-loader': 1.1.2 '@safe-global/safe-apps-provider': 0.15.2 '@safe-global/safe-apps-sdk': 7.11.0 - '@wagmi/core': 0.10.14(debug@4.3.4)(ethers@5.7.2)(react@18.2.0)(typescript@4.9.5) - '@walletconnect/ethereum-provider': 2.8.1(@walletconnect/modal@2.6.1)(debug@4.3.4) + '@wagmi/core': 0.10.14(debug@4.3.4)(ethers@5.7.1)(react@18.2.0)(typescript@4.6.4) + '@walletconnect/ethereum-provider': 2.8.1(@walletconnect/modal@2.6.2)(debug@4.3.4) '@walletconnect/legacy-provider': 2.0.0 - '@walletconnect/modal': 2.6.1(react@18.2.0) - abitype: 0.3.0(typescript@4.9.5) - ethers: 5.7.2 + '@walletconnect/modal': 2.6.2(react@18.2.0) + abitype: 0.3.0(typescript@4.6.4) + ethers: 5.7.1 eventemitter3: 4.0.7 - typescript: 4.9.5 + typescript: 4.6.4 transitivePeerDependencies: - '@react-native-async-storage/async-storage' + - '@types/react' - bufferutil - debug - encoding @@ -7251,7 +6742,7 @@ packages: - utf-8-validate - zod - /@wagmi/connectors@2.6.5(@wagmi/chains@1.4.0)(lokijs@1.5.12)(react@18.2.0)(typescript@5.1.6)(viem@1.4.1): + /@wagmi/connectors@2.6.5(@wagmi/chains@1.4.0)(lokijs@1.5.12)(react@18.2.0)(typescript@5.2.2)(viem@1.16.0): resolution: {integrity: sha512-klF31togMDd0qQqEcLl5cCGxjMbL0RRXQ8I1vxmEa3KdGzw6Z3ICVzX7/bDfnNEZcOW7BKyAnZDq7rCt5jTOiw==} peerDependencies: '@wagmi/chains': '>=1.3.0' @@ -7263,19 +6754,19 @@ packages: typescript: optional: true dependencies: - '@coinbase/wallet-sdk': 3.7.1 + '@coinbase/wallet-sdk': 3.7.2 '@ledgerhq/connect-kit-loader': 1.1.2 - '@safe-global/safe-apps-provider': 0.17.1(typescript@5.1.6) - '@safe-global/safe-apps-sdk': 8.1.0(typescript@5.1.6) - '@wagmi/chains': 1.4.0(typescript@5.1.6) + '@safe-global/safe-apps-provider': 0.17.1(typescript@5.2.2) + '@safe-global/safe-apps-sdk': 8.1.0(typescript@5.2.2) + '@wagmi/chains': 1.4.0(typescript@5.2.2) '@walletconnect/ethereum-provider': 2.8.6(@walletconnect/modal@2.5.9)(lokijs@1.5.12) '@walletconnect/legacy-provider': 2.0.0 '@walletconnect/modal': 2.5.9(react@18.2.0) '@walletconnect/utils': 2.8.6(lokijs@1.5.12) - abitype: 0.8.7(typescript@5.1.6)(zod@3.22.2) + abitype: 0.8.7(typescript@5.2.2)(zod@3.22.4) eventemitter3: 4.0.7 - typescript: 5.1.6 - viem: 1.4.1(typescript@5.1.6) + typescript: 5.2.2 + viem: 1.16.0(typescript@5.2.2) transitivePeerDependencies: - '@react-native-async-storage/async-storage' - bufferutil @@ -7286,7 +6777,7 @@ packages: - utf-8-validate - zod - /@wagmi/core@0.10.14(debug@4.3.4)(ethers@5.7.2)(react@18.2.0)(typescript@4.9.5): + /@wagmi/core@0.10.14(debug@4.3.4)(ethers@5.7.1)(react@18.2.0)(typescript@4.6.4): resolution: {integrity: sha512-+iQj5YNdVQ/kLVpVMLmF71Y2vnW3ox4b4Na4S9fvQazGudhqfqfpQ+YPYmH6SIIuZ1VhRnBmjJIY88IZt/OkwA==} peerDependencies: ethers: '>=5.5.1 <6' @@ -7295,13 +6786,13 @@ packages: typescript: optional: true dependencies: - '@wagmi/chains': 0.2.22(typescript@4.9.5) - '@wagmi/connectors': 0.3.21(@wagmi/core@0.10.14)(debug@4.3.4)(ethers@5.7.2)(react@18.2.0)(typescript@4.9.5) - abitype: 0.3.0(typescript@4.9.5) - ethers: 5.7.2 + '@wagmi/chains': 0.2.22(typescript@4.6.4) + '@wagmi/connectors': 0.3.21(@wagmi/core@0.10.14)(debug@4.3.4)(ethers@5.7.1)(react@18.2.0)(typescript@4.6.4) + abitype: 0.3.0(typescript@4.6.4) + ethers: 5.7.1 eventemitter3: 4.0.7 - typescript: 4.9.5 - zustand: 4.4.1(react@18.2.0) + typescript: 4.6.4 + zustand: 4.4.3(react@18.2.0) transitivePeerDependencies: - '@react-native-async-storage/async-storage' - '@types/react' @@ -7315,7 +6806,7 @@ packages: - utf-8-validate - zod - /@wagmi/core@0.8.0(@coinbase/wallet-sdk@3.6.3)(ethers@5.7.2)(react@18.2.0)(typescript@4.9.5): + /@wagmi/core@0.8.0(@coinbase/wallet-sdk@3.6.3)(ethers@5.7.1)(react@18.2.0)(typescript@4.6.4): resolution: {integrity: sha512-249Iph7Z289ym2WQGtUHXSzUK4w/n33IYSAAIDpL4/csB7sOoAYAEAOH5bxH/x2KT7gPd1pNSgOWDzfoG3hI4w==} peerDependencies: '@coinbase/wallet-sdk': '>=3.6.0' @@ -7329,10 +6820,10 @@ packages: dependencies: '@coinbase/wallet-sdk': 3.6.3(@babel/core@7.23.2) '@wagmi/chains': 0.1.14 - abitype: 0.1.8(typescript@4.9.5) - ethers: 5.7.2 + abitype: 0.1.8(typescript@4.6.4) + ethers: 5.7.1 eventemitter3: 4.0.7 - zustand: 4.4.1(react@18.2.0) + zustand: 4.4.3(react@18.2.0) transitivePeerDependencies: - '@types/react' - immer @@ -7340,7 +6831,7 @@ packages: - typescript dev: false - /@wagmi/core@1.3.6(lokijs@1.5.12)(react@18.2.0)(typescript@5.1.6)(viem@1.4.1): + /@wagmi/core@1.3.6(lokijs@1.5.12)(react@18.2.0)(typescript@5.2.2)(viem@1.16.0): resolution: {integrity: sha512-TXv9ZlRR5aySfERFuWMuo+lKXC/CoqtxVJZVHPqhK1jY+nldMx3AvrWzzF4CccRaMYcVdvPFepvmxzq2A2VvWg==} peerDependencies: typescript: '>=5.0.4' @@ -7349,13 +6840,13 @@ packages: typescript: optional: true dependencies: - '@wagmi/chains': 1.4.0(typescript@5.1.6) - '@wagmi/connectors': 2.6.5(@wagmi/chains@1.4.0)(lokijs@1.5.12)(react@18.2.0)(typescript@5.1.6)(viem@1.4.1) - abitype: 0.8.7(typescript@5.1.6)(zod@3.22.2) + '@wagmi/chains': 1.4.0(typescript@5.2.2) + '@wagmi/connectors': 2.6.5(@wagmi/chains@1.4.0)(lokijs@1.5.12)(react@18.2.0)(typescript@5.2.2)(viem@1.16.0) + abitype: 0.8.7(typescript@5.2.2)(zod@3.22.4) eventemitter3: 4.0.7 - typescript: 5.1.6 - viem: 1.4.1(typescript@5.1.6) - zustand: 4.4.1(react@18.2.0) + typescript: 5.2.2 + viem: 1.16.0(typescript@5.2.2) + zustand: 4.4.3(react@18.2.0) transitivePeerDependencies: - '@react-native-async-storage/async-storage' - '@types/react' @@ -7493,7 +6984,7 @@ packages: - utf-8-validate dev: false - /@walletconnect/ethereum-provider@2.8.1(@walletconnect/modal@2.6.1)(debug@4.3.4): + /@walletconnect/ethereum-provider@2.8.1(@walletconnect/modal@2.6.2)(debug@4.3.4): resolution: {integrity: sha512-YlF8CCiFTSEZRyANIBsop/U+t+d1Z1/UXXoE9+iwjSGKJsaym6PgBLPb2d8XdmS/qR6Tcx7lVodTp4cVtezKnA==} peerDependencies: '@walletconnect/modal': '>=2' @@ -7505,7 +6996,7 @@ packages: '@walletconnect/jsonrpc-provider': 1.0.13 '@walletconnect/jsonrpc-types': 1.0.3 '@walletconnect/jsonrpc-utils': 1.0.8 - '@walletconnect/modal': 2.6.1(react@18.2.0) + '@walletconnect/modal': 2.6.2(react@18.2.0) '@walletconnect/sign-client': 2.8.1 '@walletconnect/types': 2.8.1 '@walletconnect/universal-provider': 2.8.1(debug@4.3.4) @@ -7642,7 +7133,7 @@ packages: '@walletconnect/legacy-types': 2.0.0 '@walletconnect/legacy-utils': 2.0.0 copy-to-clipboard: 3.3.3 - preact: 10.17.1 + preact: 10.18.1 qrcode: 1.5.3 /@walletconnect/legacy-provider@2.0.0: @@ -7693,11 +7184,12 @@ packages: transitivePeerDependencies: - react - /@walletconnect/modal-core@2.6.1(react@18.2.0): - resolution: {integrity: sha512-f2hYlJ5pwzGvjyaZ6BoGR5uiMgXzWXt6w6ktt1N8lmY6PiYp8whZgqx2hTxVWwVlsGnaIfh6UHp1hGnANx0eTQ==} + /@walletconnect/modal-core@2.6.2(react@18.2.0): + resolution: {integrity: sha512-cv8ibvdOJQv2B+nyxP9IIFdxvQznMz8OOr/oR/AaUZym4hjXNL/l1a2UlSQBXrVjo3xxbouMxLb3kBsHoYP2CA==} dependencies: - valtio: 1.11.0(react@18.2.0) + valtio: 1.11.2(react@18.2.0) transitivePeerDependencies: + - '@types/react' - react /@walletconnect/modal-ui@2.5.9(react@18.2.0): @@ -7710,14 +7202,15 @@ packages: transitivePeerDependencies: - react - /@walletconnect/modal-ui@2.6.1(react@18.2.0): - resolution: {integrity: sha512-RFUOwDAMijSK8B7W3+KoLKaa1l+KEUG0LCrtHqaB0H0cLnhEGdLR+kdTdygw+W8+yYZbkM5tXBm7MlFbcuyitA==} + /@walletconnect/modal-ui@2.6.2(react@18.2.0): + resolution: {integrity: sha512-rbdstM1HPGvr7jprQkyPggX7rP4XiCG85ZA+zWBEX0dVQg8PpAgRUqpeub4xQKDgY7pY/xLRXSiCVdWGqvG2HA==} dependencies: - '@walletconnect/modal-core': 2.6.1(react@18.2.0) - lit: 2.7.6 + '@walletconnect/modal-core': 2.6.2(react@18.2.0) + lit: 2.8.0 motion: 10.16.2 qrcode: 1.5.3 transitivePeerDependencies: + - '@types/react' - react /@walletconnect/modal@2.5.9(react@18.2.0): @@ -7728,12 +7221,13 @@ packages: transitivePeerDependencies: - react - /@walletconnect/modal@2.6.1(react@18.2.0): - resolution: {integrity: sha512-G84tSzdPKAFk1zimgV7JzIUFT5olZUVtI3GcOk77OeLYjlMfnDT23RVRHm5EyCrjkptnvpD0wQScXePOFd2Xcw==} + /@walletconnect/modal@2.6.2(react@18.2.0): + resolution: {integrity: sha512-eFopgKi8AjKf/0U4SemvcYw9zlLpx9njVN8sf6DAkowC2Md0gPU/UNEbH1Wwj407pEKnEds98pKWib1NN1ACoA==} dependencies: - '@walletconnect/modal-core': 2.6.1(react@18.2.0) - '@walletconnect/modal-ui': 2.6.1(react@18.2.0) + '@walletconnect/modal-core': 2.6.2(react@18.2.0) + '@walletconnect/modal-ui': 2.6.2(react@18.2.0) transitivePeerDependencies: + - '@types/react' - react /@walletconnect/qrcode-modal@1.8.0: @@ -8002,14 +7496,14 @@ packages: - react dev: false - /@web3modal/ethereum@2.6.2(@wagmi/core@1.3.6)(viem@1.4.1): + /@web3modal/ethereum@2.6.2(@wagmi/core@1.3.6)(viem@1.16.0): resolution: {integrity: sha512-8QCzJj0+x6y/7V++DQnXdPjdmMvq+zm/Fl8CEKhNlni9p4H406q7ramjdJEu1Bk4xtCklYh/aU3ZGR5wUIDysA==} peerDependencies: '@wagmi/core': '>=1' viem: '>=1' dependencies: - '@wagmi/core': 1.3.6(lokijs@1.5.12)(react@18.2.0)(typescript@5.1.6)(viem@1.4.1) - viem: 1.4.1(typescript@5.1.6) + '@wagmi/core': 1.3.6(lokijs@1.5.12)(react@18.2.0)(typescript@5.2.2)(viem@1.16.0) + viem: 1.16.0(typescript@5.2.2) dev: false /@web3modal/html@2.6.2(react@18.2.0): @@ -8181,16 +7675,16 @@ packages: resolution: {integrity: sha512-nne9/IiQ/hzIhY6pdDnbBtz7DjPTKrY00P/zvPSm5pOFkl6xuGrGnXn/VtTNNfNtAfZ9/1RtehkszU9qcTii0Q==} dev: true - /abitype@0.1.8(typescript@4.9.5): + /abitype@0.1.8(typescript@4.6.4): resolution: {integrity: sha512-2pde0KepTzdfu19ZrzYTYVIWo69+6UbBCY4B1RDiwWgo2XZtFSJhF6C+XThuRXbbZ823J0Rw1Y5cP0NXYVcCdQ==} engines: {pnpm: '>=7'} peerDependencies: typescript: '>=4.7.4' dependencies: - typescript: 4.9.5 + typescript: 4.6.4 dev: false - /abitype@0.3.0(typescript@4.9.5): + /abitype@0.3.0(typescript@4.6.4): resolution: {integrity: sha512-0YokyAV4hKMcy97Pl+6QgZBlBdZJN2llslOs7kiFY+cu7kMlVXDBpxMExfv0krzBCQt2t7hNovpQ3y/zvEm18A==} engines: {pnpm: '>=7'} peerDependencies: @@ -8200,9 +7694,9 @@ packages: zod: optional: true dependencies: - typescript: 4.9.5 + typescript: 4.6.4 - /abitype@0.8.1(typescript@4.9.5)(zod@3.22.2): + /abitype@0.8.1(typescript@4.6.4)(zod@3.22.4): resolution: {integrity: sha512-n8Di6AWb3i7HnEkBvecU6pG0a5nj5YwMvdAIwPLsQK95ulRy/XS113s/RXvSfTX1iOQJYFrEO3/q4SMWu7OwTA==} peerDependencies: typescript: '>=4.9.4' @@ -8211,11 +7705,11 @@ packages: zod: optional: true dependencies: - typescript: 4.9.5 - zod: 3.22.2 + typescript: 4.6.4 + zod: 3.22.4 dev: true - /abitype@0.8.1(typescript@5.1.6)(zod@3.22.2): + /abitype@0.8.1(typescript@5.2.2)(zod@3.22.4): resolution: {integrity: sha512-n8Di6AWb3i7HnEkBvecU6pG0a5nj5YwMvdAIwPLsQK95ulRy/XS113s/RXvSfTX1iOQJYFrEO3/q4SMWu7OwTA==} peerDependencies: typescript: '>=4.9.4' @@ -8224,11 +7718,11 @@ packages: zod: optional: true dependencies: - typescript: 5.1.6 - zod: 3.22.2 + typescript: 5.2.2 + zod: 3.22.4 dev: true - /abitype@0.8.7(typescript@4.9.5)(zod@3.22.2): + /abitype@0.8.7(typescript@4.6.4)(zod@3.22.4): resolution: {integrity: sha512-wQ7hV8Yg/yKmGyFpqrNZufCxbszDe5es4AZGYPBitocfSqXtjrTG9JMWFcc4N30ukl2ve48aBTwt7NJxVQdU3w==} peerDependencies: typescript: '>=5.0.4' @@ -8237,11 +7731,11 @@ packages: zod: optional: true dependencies: - typescript: 4.9.5 - zod: 3.22.2 + typescript: 4.6.4 + zod: 3.22.4 dev: true - /abitype@0.8.7(typescript@5.1.6)(zod@3.22.2): + /abitype@0.8.7(typescript@5.2.2)(zod@3.22.4): resolution: {integrity: sha512-wQ7hV8Yg/yKmGyFpqrNZufCxbszDe5es4AZGYPBitocfSqXtjrTG9JMWFcc4N30ukl2ve48aBTwt7NJxVQdU3w==} peerDependencies: typescript: '>=5.0.4' @@ -8250,21 +7744,8 @@ packages: zod: optional: true dependencies: - typescript: 5.1.6 - zod: 3.22.2 - - /abitype@0.9.3(typescript@5.1.6): - resolution: {integrity: sha512-dz4qCQLurx97FQhnb/EIYTk/ldQ+oafEDUqC0VVIeQS1Q48/YWt/9YNfMmp9SLFqN41ktxny3c8aYxHjmFIB/w==} - peerDependencies: - typescript: '>=5.0.4' - zod: ^3 >=3.19.1 - peerDependenciesMeta: - typescript: - optional: true - zod: - optional: true - dependencies: - typescript: 5.1.6 + typescript: 5.2.2 + zod: 3.22.4 /abitype@0.9.8(typescript@5.2.2): resolution: {integrity: sha512-puLifILdm+8sjyss4S+fsUN09obiT1g2YW6CtcQF+QDzxR0euzgEB29MZujC6zMk2a6SVmtttq1fc6+YFA7WYQ==} @@ -8278,7 +7759,6 @@ packages: optional: true dependencies: typescript: 5.2.2 - dev: true /abort-controller@3.0.0: resolution: {integrity: sha512-h8lQ8tacZYnR3vNQTgibj+tODHI5/+l06Au2Pcriv/Gmet0eaj4TwWH41sO9wnHDiQsEj19q0drzdWdeAHtweg==} @@ -8351,7 +7831,6 @@ packages: /accepts@1.3.8: resolution: {integrity: sha512-PYAthTa2m2VKxuvSD3DPC/Gy+U+sOA1LAuT8mkmRuvw+NACSaeXEQ+NHcVF7rONl6qcaxV3Uuemwawk+7+SJLw==} engines: {node: '>= 0.6'} - requiresBuild: true dependencies: mime-types: 2.1.35 negotiator: 0.6.3 @@ -8425,10 +7904,6 @@ packages: /aes-js@3.1.2: resolution: {integrity: sha512-e5pEa2kBnBOgR4Y/p20pskXI74UEz7de8ZGVo58asOtvSVG5YAbJeELPZxOmt+Bnz3rX753YKhfIn4X4l1PPRQ==} - /aes-js@4.0.0-beta.5: - resolution: {integrity: sha512-G965FqalsNyrPqgEGON7nIx1e/OVENSgiEIzyC63haUMuvNnwIgIjMs52hlTCKhkBny7A2ORNlfY9Zu+jmGk1Q==} - dev: true - /agent-base@6.0.2: resolution: {integrity: sha512-RZNwNclF7+MS/8bDg70amg32dyeZGZxiDuQmZxKLAlQjr3jGyLx+4Kkk58UO7D2QdgFIQCovuSuZESne6RG6XQ==} engines: {node: '>= 6.0.0'} @@ -8469,15 +7944,6 @@ packages: uri-js: 4.4.1 dev: true - /ajv@8.12.0: - resolution: {integrity: sha512-sRu1kpcO9yLtYxBKvqfTeh9KzZEwO3STyX1HT+4CaDzC6HpTGYhIhPIzj9XuKU7KYDwnaeh5hcOwjy1QuJzBPA==} - dependencies: - fast-deep-equal: 3.1.3 - json-schema-traverse: 1.0.0 - require-from-string: 2.0.2 - uri-js: 4.4.1 - dev: true - /ajv@8.7.0: resolution: {integrity: sha512-fX9/Yiy9YwnP/QB/4zqBpTavtL4YuXpiHlXlkE0y2itGcO++ixFIg+NFk1l0TfHjt11EDDhHAhLVe0rFgTBaGA==} dependencies: @@ -8502,7 +7968,6 @@ packages: /amdefine@1.0.1: resolution: {integrity: sha512-S2Hw0TtNkMJhIabBwIojKL9YHO5T0n5eNqWJ7Lrlel/zDbftQpxpapi8tZs3X1HWa+u+QeydGmzzNU0m09+Rcg==} engines: {node: '>=0.4.2'} - requiresBuild: true dev: true optional: true @@ -8700,7 +8165,6 @@ packages: /array-flatten@1.1.1: resolution: {integrity: sha512-PCVAQswWemu6UdxsDFFX/+gVeYqKAod3D3UVm91jHwynguOwAvYPhx8nNlM++NqRcK6CxxpUafjmhIdKiHibqg==} - requiresBuild: true dev: true optional: true @@ -8880,7 +8344,7 @@ packages: /async@2.6.2: resolution: {integrity: sha512-H1qVYh1MYhEEFLsP97cVKqCGo7KfCyTt6uEWqsTBr9SO84oK9Uwbyd/yCW+6rKJLHksBNUVWZDAjfS+Ccx0Bbg==} dependencies: - lodash: 4.17.20 + lodash: 4.17.21 dev: true /async@2.6.4: @@ -8907,22 +8371,6 @@ packages: resolution: {integrity: sha512-kNOjDqAh7px0XWNI+4QbzoiR/nTkHAWNud2uvnJquD1/x5a7EQZMJT0AczqK0Qn67oY/TTQ1LbUKajZpp3I9tQ==} engines: {node: '>=8.0.0'} - /autoprefixer@10.4.14(postcss@8.4.27): - resolution: {integrity: sha512-FQzyfOsTlwVzjHxKEqRIAdJx9niO6VCBCoEwax/VLSoQF29ggECcPuBqUMZ+u8jCZOPSy8b8/8KnuFbp0SaFZQ==} - engines: {node: ^10 || ^12 || >=14} - hasBin: true - peerDependencies: - postcss: ^8.1.0 - dependencies: - browserslist: 4.21.10 - caniuse-lite: 1.0.30001527 - fraction.js: 4.3.6 - normalize-range: 0.1.2 - picocolors: 1.0.0 - postcss: 8.4.27 - postcss-value-parser: 4.2.0 - dev: true - /autoprefixer@10.4.16(postcss@8.4.31): resolution: {integrity: sha512-7vd3UC6xKp0HLfua5IjZlcXvGAGy7cBAXTg2lyQ/8WpNhd6SiZ8Be+xm3FyBSYJx5GKcpRCzBh7RH4/0dnY+uQ==} engines: {node: ^10 || ^12 || >=14} @@ -8931,8 +8379,8 @@ packages: postcss: ^8.1.0 dependencies: browserslist: 4.22.1 - caniuse-lite: 1.0.30001546 - fraction.js: 4.3.6 + caniuse-lite: 1.0.30001549 + fraction.js: 4.3.7 normalize-range: 0.1.2 picocolors: 1.0.0 postcss: 8.4.31 @@ -8954,21 +8402,20 @@ packages: /axios@0.21.4(debug@4.3.4): resolution: {integrity: sha512-ut5vewkiu8jjGBdqpM44XxjuCjq9LAKeHVmoVfHVzy8eHgxxq8SbAVQNovDA8mVi05kP0Ea/n/UzcSHcTJQfNg==} dependencies: - follow-redirects: 1.15.2(debug@4.3.4) + follow-redirects: 1.15.3(debug@4.3.4) transitivePeerDependencies: - debug /axios@1.4.0(debug@4.3.4): resolution: {integrity: sha512-S4XCWMEmzvo64T9GfvQDOXgYRDJ/wsSZc7Jvdgx5u1sd0JwsuPLqb3SYmusag+edF6ziyMensPVqLTSc1PiSEA==} dependencies: - follow-redirects: 1.15.2(debug@4.3.4) + follow-redirects: 1.15.3(debug@4.3.4) form-data: 4.0.0 proxy-from-env: 1.1.0 transitivePeerDependencies: - debug - dev: false - /axios@1.5.1(debug@4.3.4): + /axios@1.5.1: resolution: {integrity: sha512-Q28iYCWzNHjAm+yEAot5QaAMxhMghWLFVf7rRdwhUI+c2jix2DUXjAHXVi+s1ibs3mjPO/cCgbA++3BjD0vP/A==} dependencies: follow-redirects: 1.15.3(debug@4.3.4) @@ -9011,7 +8458,7 @@ packages: convert-source-map: 1.9.0 debug: 2.6.9 json5: 0.5.1 - lodash: 4.17.20 + lodash: 4.17.21 minimatch: 3.1.2 path-is-absolute: 1.0.1 private: 0.1.8 @@ -9029,7 +8476,7 @@ packages: babel-types: 6.26.0 detect-indent: 4.0.0 jsesc: 1.3.0 - lodash: 4.17.20 + lodash: 4.17.21 source-map: 0.5.7 trim-right: 1.0.1 dev: true @@ -9061,7 +8508,7 @@ packages: babel-helper-function-name: 6.24.1 babel-runtime: 6.26.0 babel-types: 6.26.0 - lodash: 4.17.20 + lodash: 4.17.21 transitivePeerDependencies: - supports-color dev: true @@ -9114,7 +8561,7 @@ packages: dependencies: babel-runtime: 6.26.0 babel-types: 6.26.0 - lodash: 4.17.20 + lodash: 4.17.21 dev: true /babel-helper-remap-async-to-generator@6.24.1: @@ -9160,7 +8607,7 @@ packages: '@babel/core': 7.23.2 '@jest/transform': 27.5.1 '@jest/types': 27.5.1 - '@types/babel__core': 7.20.1 + '@types/babel__core': 7.20.2 babel-plugin-istanbul: 6.1.1 babel-preset-jest: 27.5.1(@babel/core@7.23.2) chalk: 4.1.2 @@ -9170,18 +8617,18 @@ packages: - supports-color dev: true - /babel-jest@27.5.1(@babel/core@7.22.15): + /babel-jest@27.5.1(@babel/core@7.23.2): resolution: {integrity: sha512-cdQ5dXjGRd0IBRATiQ4mZGlGlRE8kJpjPOixdNRdT+m3UcNqmYWN6rK6nvtXYfY3D76cb8s/O1Ss8ea24PIwcg==} engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0} peerDependencies: '@babel/core': ^7.8.0 dependencies: - '@babel/core': 7.22.15 + '@babel/core': 7.23.2 '@jest/transform': 27.5.1 '@jest/types': 27.5.1 - '@types/babel__core': 7.20.1 + '@types/babel__core': 7.20.2 babel-plugin-istanbul: 6.1.1 - babel-preset-jest: 27.5.1(@babel/core@7.22.15) + babel-preset-jest: 27.5.1(@babel/core@7.23.2) chalk: 4.1.2 graceful-fs: 4.2.11 slash: 3.0.0 @@ -9219,9 +8666,9 @@ packages: engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0} dependencies: '@babel/template': 7.22.15 - '@babel/types': 7.22.15 - '@types/babel__core': 7.20.1 - '@types/babel__traverse': 7.20.1 + '@babel/types': 7.23.0 + '@types/babel__core': 7.20.2 + '@types/babel__traverse': 7.20.2 dev: true /babel-plugin-polyfill-corejs2@0.2.3(@babel/core@7.23.2): @@ -9229,7 +8676,7 @@ packages: peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/compat-data': 7.22.9 + '@babel/compat-data': 7.23.2 '@babel/core': 7.23.2 '@babel/helper-define-polyfill-provider': 0.2.4(@babel/core@7.23.2) semver: 6.3.1 @@ -9237,14 +8684,14 @@ packages: - supports-color dev: true - /babel-plugin-polyfill-corejs2@0.4.5(@babel/core@7.23.2): - resolution: {integrity: sha512-19hwUH5FKl49JEsvyTcoHakh6BE0wgXLLptIyKZ3PijHc/Ci521wygORCUCCred+E/twuqRyAkE02BAWPmsHOg==} + /babel-plugin-polyfill-corejs2@0.4.6(@babel/core@7.23.2): + resolution: {integrity: sha512-jhHiWVZIlnPbEUKSSNb9YoWcQGdlTLq7z1GHL4AjFxaoOUMuuEVJ+Y4pAaQUGOGk93YsVCKPbqbfw3m0SM6H8Q==} peerDependencies: '@babel/core': ^7.4.0 || ^8.0.0-0 <8.0.0 dependencies: - '@babel/compat-data': 7.22.9 + '@babel/compat-data': 7.23.2 '@babel/core': 7.23.2 - '@babel/helper-define-polyfill-provider': 0.4.2(@babel/core@7.23.2) + '@babel/helper-define-polyfill-provider': 0.4.3(@babel/core@7.23.2) semver: 6.3.1 transitivePeerDependencies: - supports-color @@ -9257,19 +8704,19 @@ packages: dependencies: '@babel/core': 7.23.2 '@babel/helper-define-polyfill-provider': 0.2.4(@babel/core@7.23.2) - core-js-compat: 3.32.1 + core-js-compat: 3.33.0 transitivePeerDependencies: - supports-color dev: true - /babel-plugin-polyfill-corejs3@0.8.3(@babel/core@7.23.2): - resolution: {integrity: sha512-z41XaniZL26WLrvjy7soabMXrfPWARN25PZoriDEiLMxAp50AUW3t35BGQUMg5xK3UrpVTtagIDklxYa+MhiNA==} + /babel-plugin-polyfill-corejs3@0.8.5(@babel/core@7.23.2): + resolution: {integrity: sha512-Q6CdATeAvbScWPNLB8lzSO7fgUVBkQt6zLgNlfyeCr/EQaEQR+bWiBYYPYAFyE528BMjRhL+1QBMOI4jc/c5TA==} peerDependencies: '@babel/core': ^7.4.0 || ^8.0.0-0 <8.0.0 dependencies: '@babel/core': 7.23.2 - '@babel/helper-define-polyfill-provider': 0.4.2(@babel/core@7.23.2) - core-js-compat: 3.32.1 + '@babel/helper-define-polyfill-provider': 0.4.3(@babel/core@7.23.2) + core-js-compat: 3.33.0 transitivePeerDependencies: - supports-color dev: false @@ -9285,13 +8732,13 @@ packages: - supports-color dev: true - /babel-plugin-polyfill-regenerator@0.5.2(@babel/core@7.23.2): - resolution: {integrity: sha512-tAlOptU0Xj34V1Y2PNTL4Y0FOJMDB6bZmoW39FeCQIhigGLkqu3Fj6uiXpxIf6Ij274ENdYx64y6Au+ZKlb1IA==} + /babel-plugin-polyfill-regenerator@0.5.3(@babel/core@7.23.2): + resolution: {integrity: sha512-8sHeDOmXC8csczMrYEOf0UTNa4yE2SxV5JGeT/LP1n0OYVDUUFPxG9vdk2AlDlIit4t+Kf0xCtpgXPBwnn/9pw==} peerDependencies: '@babel/core': ^7.4.0 || ^8.0.0-0 <8.0.0 dependencies: '@babel/core': 7.23.2 - '@babel/helper-define-polyfill-provider': 0.4.2(@babel/core@7.23.2) + '@babel/helper-define-polyfill-provider': 0.4.3(@babel/core@7.23.2) transitivePeerDependencies: - supports-color dev: false @@ -9337,7 +8784,7 @@ packages: babel-template: 6.26.0 babel-traverse: 6.26.0 babel-types: 6.26.0 - lodash: 4.17.20 + lodash: 4.17.21 transitivePeerDependencies: - supports-color dev: true @@ -9529,26 +8976,6 @@ packages: babel-types: 6.26.0 dev: true - /babel-preset-current-node-syntax@1.0.1(@babel/core@7.22.15): - resolution: {integrity: sha512-M7LQ0bxarkxQoN+vz5aJPsLBn77n8QgTFmo8WK0/44auK2xlCXrYcUxHFxgU7qW5Yzw/CjmLRK2uJzaCd7LvqQ==} - peerDependencies: - '@babel/core': ^7.0.0 - dependencies: - '@babel/core': 7.22.15 - '@babel/plugin-syntax-async-generators': 7.8.4(@babel/core@7.22.15) - '@babel/plugin-syntax-bigint': 7.8.3(@babel/core@7.22.15) - '@babel/plugin-syntax-class-properties': 7.12.13(@babel/core@7.22.15) - '@babel/plugin-syntax-import-meta': 7.10.4(@babel/core@7.22.15) - '@babel/plugin-syntax-json-strings': 7.8.3(@babel/core@7.22.15) - '@babel/plugin-syntax-logical-assignment-operators': 7.10.4(@babel/core@7.22.15) - '@babel/plugin-syntax-nullish-coalescing-operator': 7.8.3(@babel/core@7.22.15) - '@babel/plugin-syntax-numeric-separator': 7.10.4(@babel/core@7.22.15) - '@babel/plugin-syntax-object-rest-spread': 7.8.3(@babel/core@7.22.15) - '@babel/plugin-syntax-optional-catch-binding': 7.8.3(@babel/core@7.22.15) - '@babel/plugin-syntax-optional-chaining': 7.8.3(@babel/core@7.22.15) - '@babel/plugin-syntax-top-level-await': 7.14.5(@babel/core@7.22.15) - dev: true - /babel-preset-current-node-syntax@1.0.1(@babel/core@7.23.2): resolution: {integrity: sha512-M7LQ0bxarkxQoN+vz5aJPsLBn77n8QgTFmo8WK0/44auK2xlCXrYcUxHFxgU7qW5Yzw/CjmLRK2uJzaCd7LvqQ==} peerDependencies: @@ -9606,17 +9033,6 @@ packages: - supports-color dev: true - /babel-preset-jest@27.5.1(@babel/core@7.22.15): - resolution: {integrity: sha512-Nptf2FzlPCWYuJg41HBqXVT8ym6bXOevuCTbhxlUpjwtysGaIWFvDEjp4y+G7fl13FgOdjs7P/DmErqH7da0Ag==} - engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0} - peerDependencies: - '@babel/core': ^7.0.0 - dependencies: - '@babel/core': 7.22.15 - babel-plugin-jest-hoist: 27.5.1 - babel-preset-current-node-syntax: 1.0.1(@babel/core@7.22.15) - dev: true - /babel-preset-jest@27.5.1(@babel/core@7.23.2): resolution: {integrity: sha512-Nptf2FzlPCWYuJg41HBqXVT8ym6bXOevuCTbhxlUpjwtysGaIWFvDEjp4y+G7fl13FgOdjs7P/DmErqH7da0Ag==} engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0} @@ -9635,7 +9051,7 @@ packages: babel-runtime: 6.26.0 core-js: 2.6.12 home-or-tmp: 2.0.0 - lodash: 4.17.20 + lodash: 4.17.21 mkdirp: 0.5.6 source-map-support: 0.4.18 transitivePeerDependencies: @@ -9768,7 +9184,6 @@ packages: /bignumber.js@9.1.2: resolution: {integrity: sha512-2/mKyZH9K85bzOEfhXDBFZTGd1CTs+5IHpeFQo9luiBG7hghdC851Pj2WAhb6E3R6b9tZj/XKhbg4fum+Kepug==} - requiresBuild: true dev: true optional: true @@ -9839,7 +9254,6 @@ packages: /body-parser@1.20.1: resolution: {integrity: sha512-jWi7abTbYwajOytWCQc37VulmWiRae5RyTpaCyDcS5/lMdtwSz5lOpDE67srw/HYe35f1z3fDQw+3txg7gNtWw==} engines: {node: '>= 0.8', npm: 1.2.8000 || >= 1.4.16} - requiresBuild: true dependencies: bytes: 3.1.2 content-type: 1.0.5 @@ -9861,7 +9275,6 @@ packages: /body-parser@1.20.2: resolution: {integrity: sha512-ml9pReCu3M61kGlqoTm2umSXTlRTuGTx0bfYj+uIUKKYycG5NtSbeetV3faSU6R7ajOPw0g/J1PvK4qNy7s5bA==} engines: {node: '>= 0.8', npm: 1.2.8000 || >= 1.4.16} - requiresBuild: true dependencies: bytes: 3.1.2 content-type: 1.0.5 @@ -10012,26 +9425,15 @@ packages: electron-to-chromium: 1.4.554 dev: true - /browserslist@4.21.10: - resolution: {integrity: sha512-bipEBdZfVH5/pwrvqc+Ub0kUPVfGUhlKxbvfD+z1BDnPEO/X98ruXGA1WP5ASpAFKan7Qr6j736IacbZQuAlKQ==} - engines: {node: ^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7} - hasBin: true - dependencies: - caniuse-lite: 1.0.30001535 - electron-to-chromium: 1.4.523 - node-releases: 2.0.13 - update-browserslist-db: 1.0.11(browserslist@4.21.10) - /browserslist@4.22.1: resolution: {integrity: sha512-FEVc202+2iuClEhZhrWy6ZiAcRLvNMyYcxZ8raemul1DYVOVdFsbqckWLdsixQZCpJlwe77Z3UTalE7jsjnKfQ==} engines: {node: ^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7} hasBin: true dependencies: - caniuse-lite: 1.0.30001546 - electron-to-chromium: 1.4.544 + caniuse-lite: 1.0.30001549 + electron-to-chromium: 1.4.554 node-releases: 2.0.13 update-browserslist-db: 1.0.13(browserslist@4.22.1) - dev: true /bs-logger@0.2.6: resolution: {integrity: sha512-pd8DCoxmbgc7hyPKOvxtqNcjYoOsABPQdcCUjGp3d42VR2CX1ORhk2A87oqqu5R1kk+76nsxZupkmyd+MVtCog==} @@ -10092,7 +9494,6 @@ packages: /buffer-to-arraybuffer@0.0.5: resolution: {integrity: sha512-3dthu5CYiVB1DEJp61FtApNnNndTckcqe4pFcLdvHtrpG+kcyekCJKg4MRiDcFW7A6AODnXB9U4dwQiCW5kzJQ==} - requiresBuild: true dev: true optional: true @@ -10125,8 +9526,8 @@ packages: base64-js: 1.5.1 ieee754: 1.2.1 - /bufferutil@4.0.7: - resolution: {integrity: sha512-kukuqc39WOHtdxtw4UScxF/WVnMFVSQVKhtx3AjZJzhd0RGZZldcrfSEbVsWWe6KNH253574cq5F+wpv0G9pJw==} + /bufferutil@4.0.8: + resolution: {integrity: sha512-4T53u4PdgsXqKaIctwF8ifXlRTTmEPJ8iEPWFdGZvcf7sbwYo6FKFEX9eNNAnzFZ7EzJAQ3CJeOtCRA4rDp7Pw==} engines: {node: '>=6.14.2'} requiresBuild: true dependencies: @@ -10228,14 +9629,12 @@ packages: /cacheable-lookup@5.0.4: resolution: {integrity: sha512-2/kNscPhpcxrOigMZzbiWF7dz8ilhb/nIHU3EyZiXWXpeq/au8qJ8VhdftMkty3n7Gj6HIGalQG8oiBNB3AJgA==} engines: {node: '>=10.6.0'} - requiresBuild: true dev: true optional: true /cacheable-request@6.1.0: resolution: {integrity: sha512-Oj3cAGPCqOZX7Rz64Uny2GYAZNliQSqfbePrgAQ1wKAihYmCUnraBtJtKcGR4xz7wF+LoJC+ssFZvv5BgF9Igg==} engines: {node: '>=8'} - requiresBuild: true dependencies: clone-response: 1.0.3 get-stream: 5.2.0 @@ -10250,7 +9649,6 @@ packages: /cacheable-request@7.0.4: resolution: {integrity: sha512-v+p6ongsrp0yTGbJXjgxPow2+DL93DASP4kXCDKb8/bwRtt9OEF3whggkkDkGNzgcWy2XaF4a8nZglC7uElscg==} engines: {node: '>=8'} - requiresBuild: true dependencies: clone-response: 1.0.3 get-stream: 5.2.0 @@ -10272,7 +9670,7 @@ packages: /call-bind@1.0.2: resolution: {integrity: sha512-7O+FbCihrB5WGbFYesctwmTKae6rOiIzmz1icreWJ+0aA7LJfuqhEso2T9ncpcFtzMQtzXf2QGGueWJGTYsqrA==} dependencies: - function-bind: 1.1.1 + function-bind: 1.1.2 get-intrinsic: 1.2.1 /caller-callsite@2.0.0: @@ -10344,19 +9742,8 @@ packages: engines: {node: '>=10'} dev: true - /caniuse-lite@1.0.30001527: - resolution: {integrity: sha512-YkJi7RwPgWtXVSgK4lG9AHH57nSzvvOp9MesgXmw4Q7n0C3H04L0foHqfxcmSAm5AcWb8dW9AYj2tR7/5GnddQ==} - dev: true - - /caniuse-lite@1.0.30001535: - resolution: {integrity: sha512-48jLyUkiWFfhm/afF7cQPqPjaUmSraEhK4j+FCTJpgnGGEZHqyLe3hmWH7lIooZdSzXL0ReMvHz0vKDoTBsrwg==} - - /caniuse-lite@1.0.30001546: - resolution: {integrity: sha512-zvtSJwuQFpewSyRrI3AsftF6rM0X80mZkChIt1spBGEvRglCrjTniXvinc8JKRoqTwXAgvqTImaN9igfSMtUBw==} - /caniuse-lite@1.0.30001549: resolution: {integrity: sha512-qRp48dPYSCYaP+KurZLhDYdVE+yEyht/3NlmcJgVQ2VMGt6JL36ndQ/7rgspdZsJuxDPFIo/OzBT2+GmIJ53BA==} - dev: true /capital-case@1.0.4: resolution: {integrity: sha512-ds37W8CytHgwnhGGTi88pcPyR15qoNkOpYwmMMfnWqqWgESapLqvDx6huFjQ5vqWSn2Z06173XNA7LtMOeUh1A==} @@ -10538,7 +9925,6 @@ packages: /chownr@1.1.4: resolution: {integrity: sha512-jJ0bqzaylmJtVnNgzTeSOs8DPavpbYgEr/b0YL8/2GO3xJEhInFmhKMUnEJQjZumK7KXGFhUy89PrsJWlakBVg==} - requiresBuild: true /chownr@2.0.0: resolution: {integrity: sha512-bIomtDF5KGpdogkLd9VspvFzk9KfpyyGlS8YFVZl7TGPBHL5snIOnxeshwVgPteQ9b4Eydl+pVbIyE1DcvCWgQ==} @@ -10554,11 +9940,6 @@ packages: resolution: {integrity: sha512-5tK7EtrZ0N+OLFMthtqOj4fI2Jeb88C4CAZPu25LDVUgXJ0A3Js4PMGqrn0JU1W0Mh1/Z8wZzYPxqUrXeBboCQ==} dev: true - /ci-info@3.8.0: - resolution: {integrity: sha512-eXTggHWSooYhq49F2opQhuHWgzucfF2YgODK4e1566GQs5BIfP30B0oenwBJHfWxAs2fyPB1s7Mg949zLf61Yw==} - engines: {node: '>=8'} - dev: true - /ci-info@3.9.0: resolution: {integrity: sha512-NIxF55hv4nSqQswkAeiOi1r83xy8JldOFDTWiug55KBu9Jnblncd2U6ViHmYgHf01TPZS77NJBhBMKdWj9HQMQ==} engines: {node: '>=8'} @@ -10568,7 +9949,6 @@ packages: resolution: {integrity: sha512-zT7mPeghoWAu+ppn8+BS1tQ5qGmbMfB4AregnQjA/qHY3GC1m1ptI9GkWNlgeu38r7CuRdXB47uY2XgAYt6QVA==} engines: {node: '>=4.0.0', npm: '>=3.0.0'} deprecated: This module has been superseded by the multiformats module - requiresBuild: true dependencies: buffer: 5.7.1 class-is: 1.1.0 @@ -10590,7 +9970,6 @@ packages: /class-is@1.1.0: resolution: {integrity: sha512-rhjH9AG1fvabIDoGRVH587413LPjTZgmDF9fOFCbFJQV4yuocX1mHxxvXI4g3cGwbVY9wAYIoKlg1N79frJKQw==} - requiresBuild: true dev: true optional: true @@ -10646,8 +10025,8 @@ packages: restore-cursor: 4.0.0 dev: true - /cli-spinners@2.9.0: - resolution: {integrity: sha512-4/aL9X3Wh0yiMQlE+eeRhWP6vclO3QRtw1JHKIT0FFUs5FjpFmESqtMvYZ0+lbzBw900b95mS0hohy+qn2VK/g==} + /cli-spinners@2.9.1: + resolution: {integrity: sha512-jHgecW0pxkonBJdrKsqxgRX9AcG+u/5k0Q7WPDfi8AogLAdwxEkyYYNWwZ5GvVFoFx2uiY1eNcSK00fh+1+FyQ==} engines: {node: '>=6'} dev: true @@ -10723,7 +10102,6 @@ packages: /clone-response@1.0.3: resolution: {integrity: sha512-ROoL94jJH2dUVML2Y/5PEDNaSHgeOdSDicUyS7izcF63G6sTc/FTjLub4b8Il9S8S0beOfYt0TaA5qvFK+w0wA==} - requiresBuild: true dependencies: mimic-response: 1.0.1 dev: true @@ -10765,7 +10143,7 @@ packages: resolution: {integrity: sha512-7qJWqItLA8/VPVlKJlFXU+NBlo/qyfs39aJcuMT/2ere32ZqvF5OSxgdM5xOfJJ7O429gg2HM47y8v9P+9wrNw==} dependencies: '@jridgewell/sourcemap-codec': 1.4.15 - '@types/estree': 1.0.1 + '@types/estree': 1.0.2 acorn: 8.10.0 estree-walker: 3.0.3 periscopic: 3.1.0 @@ -11121,7 +10499,6 @@ packages: /content-disposition@0.5.4: resolution: {integrity: sha512-FveZTNuGw04cxlAiWbzi6zTAL/lhehaWbTtgluJh4/E95DqMwTmha3KZN1aAWA8cFIhHzMZUvLevkw5Rqk+tSQ==} engines: {node: '>= 0.6'} - requiresBuild: true dependencies: safe-buffer: 5.2.1 dev: true @@ -11129,7 +10506,6 @@ packages: /content-hash@2.5.2: resolution: {integrity: sha512-FvIQKy0S1JaWV10sMsA7TRx8bpU+pqPkhbsfvOJAdjRXvYxEckAwQWGwtRjiaJfh+E0DvcWUGqcdjwMGFjsSdw==} - requiresBuild: true dependencies: cids: 0.7.5 multicodec: 0.5.7 @@ -11140,7 +10516,6 @@ packages: /content-type@1.0.5: resolution: {integrity: sha512-nTjqfcBFEipKdXCv4YDQWCfmcLZKm81ldF0pAopTvyrFGVbcR6P/VAAd5G7N+0tTr8QqiU0tFadD6FK4NtJwOA==} engines: {node: '>= 0.6'} - requiresBuild: true dev: true optional: true @@ -11153,7 +10528,6 @@ packages: /cookie-signature@1.0.6: resolution: {integrity: sha512-QADzlaHc8icV8I7vbaJXJwod9HWYp8uCqf1xa4OfNu1T7JVxQIrUgOWtHdNDtPiywmFbiS12VjotIXLrKM3orQ==} - requiresBuild: true dev: true optional: true @@ -11169,7 +10543,6 @@ packages: /cookiejar@2.1.4: resolution: {integrity: sha512-LDx6oHrK+PhzLKJU9j5S7/Y3jM/mUHvD/DeI1WQmJn652iPC5Y4TBzC9l+5OMOXlyTTA+SmVUPm0HQUwpD5Jqw==} - requiresBuild: true dev: true optional: true @@ -11183,10 +10556,10 @@ packages: dependencies: toggle-selection: 1.0.6 - /core-js-compat@3.32.1: - resolution: {integrity: sha512-GSvKDv4wE0bPnQtjklV101juQ85g6H3rm5PDP20mqlS5j0kXF3pP97YvAu5hl+uFHqMictp3b2VxOHljWMAtuA==} + /core-js-compat@3.33.0: + resolution: {integrity: sha512-0w4LcLXsVEuNkIqwjjf9rjCoPhK8uqA4tMRh4Ge26vfLtUutshn+aRJU21I9LCJlh2QQHfisNToLjw1XEJLTWw==} dependencies: - browserslist: 4.21.10 + browserslist: 4.22.1 /core-js-pure@3.33.0: resolution: {integrity: sha512-FKSIDtJnds/YFIEaZ4HszRX7hkxGpNKM7FC9aJ9WLJbSd3lD4vOltFuVIBLR8asSx9frkTSqL0dw90SKQxgKrg==} @@ -11210,7 +10583,6 @@ packages: /cors@2.8.5: resolution: {integrity: sha512-KIHbLJqu73RGr/hnbrO9uBeixNGuvSQjul/jdFvS/KFSIH1hWVd1ng7zOHx+YrEfInLG7q4n6GHQ9cDtxv/P6g==} engines: {node: '>= 0.10'} - requiresBuild: true dependencies: object-assign: 4.1.1 vary: 1.1.2 @@ -11239,8 +10611,8 @@ packages: parse-json: 4.0.0 dev: true - /cosmiconfig@8.3.4(typescript@4.9.5): - resolution: {integrity: sha512-SF+2P8+o/PTV05rgsAjDzL4OFdVXAulSfC/L19VaeVT7+tpOOSscCt2QLxDZ+CLxF2WOiq6y1K5asvs8qUJT/Q==} + /cosmiconfig@8.3.6(typescript@4.6.4): + resolution: {integrity: sha512-kcZ6+W5QzcJ3P1Mt+83OUv/oHFqZHIx8DuxG6eZ5RGMERoLqp4BuGjhHLYGK+Kf5XVkQvqBSmAy/nGWN3qDgEA==} engines: {node: '>=14'} peerDependencies: typescript: '>=4.9.5' @@ -11252,7 +10624,7 @@ packages: js-yaml: 4.1.0 parse-json: 5.2.0 path-type: 4.0.0 - typescript: 4.9.5 + typescript: 4.6.4 dev: true /cosmiconfig@8.3.6(typescript@5.2.2): @@ -11389,7 +10761,7 @@ packages: postcss-modules-values: 4.0.0(postcss@8.4.31) postcss-value-parser: 4.2.0 semver: 7.5.4 - webpack: 5.89.0 + webpack: 5.89.0(esbuild@0.15.13) dev: true /css-select@4.3.0: @@ -11766,7 +11138,7 @@ packages: resolution: {integrity: sha512-kso740gqMVVqritCQliQCpfPwos9lxp7/TEiEev4w6GGQyLNRyfriWY+DWxfawMY/DwGDzBl2DZtekCMf73bzw==} dev: true - /daisyui@3.1.7(postcss@8.4.27): + /daisyui@3.1.7(postcss@8.4.31): resolution: {integrity: sha512-VQhaunQlB7Buo+AbE+S3i6H/eYknKEuKVHG67y7sbG58uEjeLK6n2rojG3YE7fwoOss6ldbUL8Oy0MyoJi0CHw==} engines: {node: '>=16.9.0'} peerDependencies: @@ -11774,8 +11146,8 @@ packages: dependencies: colord: 2.9.3 css-selector-tokenizer: 0.8.0 - postcss: 8.4.27 - postcss-js: 4.0.1(postcss@8.4.27) + postcss: 8.4.31 + postcss-js: 4.0.1(postcss@8.4.31) tailwindcss: 3.3.3 transitivePeerDependencies: - ts-node @@ -11863,7 +11235,7 @@ packages: supports-color: optional: true dependencies: - ms: 2.1.1 + ms: 2.1.3 supports-color: 6.0.0 dev: true @@ -11924,7 +11296,6 @@ packages: /decompress-response@3.3.0: resolution: {integrity: sha512-BzRPQuY1ip+qDonAOz42gRm/pg9F768C+npV/4JOsxRC2sq+Rlk+Q4ZCAsOhnIaMrgarILY+RMUIvMmmX1qAEA==} engines: {node: '>=4'} - requiresBuild: true dependencies: mimic-response: 1.0.1 dev: true @@ -11933,7 +11304,6 @@ packages: /decompress-response@6.0.0: resolution: {integrity: sha512-aW35yZM6Bb/4oJlZncMH2LCoZtJXTRxES17vE3hoRiowU2kWHaJKFkSBDnDR+cm9J+9QhXmREyIfv0pji9ejCQ==} engines: {node: '>=10'} - requiresBuild: true dependencies: mimic-response: 3.1.0 @@ -11997,14 +11367,12 @@ packages: /defer-to-connect@1.1.3: resolution: {integrity: sha512-0ISdNousHvZT2EiFlZeZAHBUvSxmKswVCEf8hW7KWgG4a8MVEu/3Vb6uWYozkjylyCxe0JBIiRB1jV45S70WVQ==} - requiresBuild: true dev: true optional: true /defer-to-connect@2.0.1: resolution: {integrity: sha512-4tvttepXG1VaYGrRibk5EwJd1t4udunSOVMdLSAL6mId1ix438oPwPZMALY41FCijukO1L0twNcGsdzS7dHgDg==} engines: {node: '>=10'} - requiresBuild: true dev: true optional: true @@ -12132,7 +11500,6 @@ packages: /destroy@1.2.0: resolution: {integrity: sha512-2sJGJTaXIIaR1w4iJSNoN0hnMY7Gpc/n8D4qSCJw8QqFWXf7cuAgnEHxBpweaVcPevC2l3KpjYCx3NypQQgaJg==} engines: {node: '>= 0.8', npm: 1.2.8000 || >= 1.4.16} - requiresBuild: true dev: true optional: true @@ -12348,7 +11715,6 @@ packages: /duplexer3@0.1.5: resolution: {integrity: sha512-1A8za6ws41LQgv9HrE/66jyC5yuSjQ3L/KOpFtoBilsAK2iA2wuS5rTt1OCzIvtS2V7nVmedsUU+DGRcjBmOYA==} - requiresBuild: true dev: true optional: true @@ -12373,7 +11739,6 @@ packages: /ee-first@1.1.1: resolution: {integrity: sha512-WMwm9LhRUo+WUaRN+vRuETqG89IgZphVSNkdFgeb6sS/E4OrDIN7t48CAewSHXc6C8lefD8KKfr5vY61brQlow==} - requiresBuild: true dev: true optional: true @@ -12387,16 +11752,8 @@ packages: - debug - utf-8-validate - /electron-to-chromium@1.4.523: - resolution: {integrity: sha512-9AreocSUWnzNtvLcbpng6N+GkXnCcBR80IQkxRC9Dfdyg4gaWNUPBujAHUpKkiUkoSoR9UlhA4zD/IgBklmhzg==} - - /electron-to-chromium@1.4.544: - resolution: {integrity: sha512-54z7squS1FyFRSUqq/knOFSptjjogLZXbKcYk3B0qkE1KZzvqASwRZnY2KzZQJqIYLVD38XZeoiMRflYSwyO4w==} - dev: true - /electron-to-chromium@1.4.554: resolution: {integrity: sha512-Q0umzPJjfBrrj8unkONTgbKQXzXRrH7sVV7D9ea2yBV3Oaogz991yhbpfvo2LMNkJItmruXTEzVpP9cp7vaIiQ==} - dev: true /elkjs@0.8.2: resolution: {integrity: sha512-L6uRgvZTH+4OF5NE/MBbzQx/WYpru1xCBE9respNj6qznEewGUIfhzmm7horWWxbNO2M0WckQypGctR8lH79xQ==} @@ -12439,7 +11796,6 @@ packages: /encodeurl@1.0.2: resolution: {integrity: sha512-TPJXq8JqFaVYm2CWmPvnP2Iyo4ZSM7/QKcSmuMLDObfpH5fi7RUGmd/rTDf+rut/saiDiQEeVTNgAmJEdAOx0w==} engines: {node: '>= 0.8'} - requiresBuild: true dev: true optional: true @@ -12650,6 +12006,15 @@ packages: dev: true optional: true + /esbuild-android-64@0.15.18: + resolution: {integrity: sha512-wnpt3OXRhcjfIDSZu9bnzT4/TNTDsOUvip0foZOUBG7QbSt//w3QV4FInVJxNhKc/ErhUxc5z4QjHtMi7/TbgA==} + engines: {node: '>=12'} + cpu: [x64] + os: [android] + requiresBuild: true + dev: true + optional: true + /esbuild-android-arm64@0.15.13: resolution: {integrity: sha512-TKzyymLD6PiVeyYa4c5wdPw87BeAiTXNtK6amWUcXZxkV51gOk5u5qzmDaYSwiWeecSNHamFsaFjLoi32QR5/w==} engines: {node: '>=12'} @@ -12659,6 +12024,15 @@ packages: dev: true optional: true + /esbuild-android-arm64@0.15.18: + resolution: {integrity: sha512-G4xu89B8FCzav9XU8EjsXacCKSG2FT7wW9J6hOc18soEHJdtWu03L3TQDGf0geNxfLTtxENKBzMSq9LlbjS8OQ==} + engines: {node: '>=12'} + cpu: [arm64] + os: [android] + requiresBuild: true + dev: true + optional: true + /esbuild-darwin-64@0.15.13: resolution: {integrity: sha512-WAx7c2DaOS6CrRcoYCgXgkXDliLnFv3pQLV6GeW1YcGEZq2Gnl8s9Pg7ahValZkpOa0iE/ojRVQ87sbUhF1Cbg==} engines: {node: '>=12'} @@ -12668,6 +12042,15 @@ packages: dev: true optional: true + /esbuild-darwin-64@0.15.18: + resolution: {integrity: sha512-2WAvs95uPnVJPuYKP0Eqx+Dl/jaYseZEUUT1sjg97TJa4oBtbAKnPnl3b5M9l51/nbx7+QAEtuummJZW0sBEmg==} + engines: {node: '>=12'} + cpu: [x64] + os: [darwin] + requiresBuild: true + dev: true + optional: true + /esbuild-darwin-arm64@0.15.13: resolution: {integrity: sha512-U6jFsPfSSxC3V1CLiQqwvDuj3GGrtQNB3P3nNC3+q99EKf94UGpsG9l4CQ83zBs1NHrk1rtCSYT0+KfK5LsD8A==} engines: {node: '>=12'} @@ -12677,6 +12060,15 @@ packages: dev: true optional: true + /esbuild-darwin-arm64@0.15.18: + resolution: {integrity: sha512-tKPSxcTJ5OmNb1btVikATJ8NftlyNlc8BVNtyT/UAr62JFOhwHlnoPrhYWz09akBLHI9nElFVfWSTSRsrZiDUA==} + engines: {node: '>=12'} + cpu: [arm64] + os: [darwin] + requiresBuild: true + dev: true + optional: true + /esbuild-freebsd-64@0.15.13: resolution: {integrity: sha512-whItJgDiOXaDG/idy75qqevIpZjnReZkMGCgQaBWZuKHoElDJC1rh7MpoUgupMcdfOd+PgdEwNQW9DAE6i8wyA==} engines: {node: '>=12'} @@ -12686,6 +12078,15 @@ packages: dev: true optional: true + /esbuild-freebsd-64@0.15.18: + resolution: {integrity: sha512-TT3uBUxkteAjR1QbsmvSsjpKjOX6UkCstr8nMr+q7zi3NuZ1oIpa8U41Y8I8dJH2fJgdC3Dj3CXO5biLQpfdZA==} + engines: {node: '>=12'} + cpu: [x64] + os: [freebsd] + requiresBuild: true + dev: true + optional: true + /esbuild-freebsd-arm64@0.15.13: resolution: {integrity: sha512-6pCSWt8mLUbPtygv7cufV0sZLeylaMwS5Fznj6Rsx9G2AJJsAjQ9ifA+0rQEIg7DwJmi9it+WjzNTEAzzdoM3Q==} engines: {node: '>=12'} @@ -12695,6 +12096,15 @@ packages: dev: true optional: true + /esbuild-freebsd-arm64@0.15.18: + resolution: {integrity: sha512-R/oVr+X3Tkh+S0+tL41wRMbdWtpWB8hEAMsOXDumSSa6qJR89U0S/PpLXrGF7Wk/JykfpWNokERUpCeHDl47wA==} + engines: {node: '>=12'} + cpu: [arm64] + os: [freebsd] + requiresBuild: true + dev: true + optional: true + /esbuild-linux-32@0.15.13: resolution: {integrity: sha512-VbZdWOEdrJiYApm2kkxoTOgsoCO1krBZ3quHdYk3g3ivWaMwNIVPIfEE0f0XQQ0u5pJtBsnk2/7OPiCFIPOe/w==} engines: {node: '>=12'} @@ -12704,6 +12114,15 @@ packages: dev: true optional: true + /esbuild-linux-32@0.15.18: + resolution: {integrity: sha512-lphF3HiCSYtaa9p1DtXndiQEeQDKPl9eN/XNoBf2amEghugNuqXNZA/ZovthNE2aa4EN43WroO0B85xVSjYkbg==} + engines: {node: '>=12'} + cpu: [ia32] + os: [linux] + requiresBuild: true + dev: true + optional: true + /esbuild-linux-64@0.15.13: resolution: {integrity: sha512-rXmnArVNio6yANSqDQlIO4WiP+Cv7+9EuAHNnag7rByAqFVuRusLbGi2697A5dFPNXoO//IiogVwi3AdcfPC6A==} engines: {node: '>=12'} @@ -12713,6 +12132,15 @@ packages: dev: true optional: true + /esbuild-linux-64@0.15.18: + resolution: {integrity: sha512-hNSeP97IviD7oxLKFuii5sDPJ+QHeiFTFLoLm7NZQligur8poNOWGIgpQ7Qf8Balb69hptMZzyOBIPtY09GZYw==} + engines: {node: '>=12'} + cpu: [x64] + os: [linux] + requiresBuild: true + dev: true + optional: true + /esbuild-linux-arm64@0.15.13: resolution: {integrity: sha512-alEMGU4Z+d17U7KQQw2IV8tQycO6T+rOrgW8OS22Ua25x6kHxoG6Ngry6Aq6uranC+pNWNMB6aHFPh7aTQdORQ==} engines: {node: '>=12'} @@ -12722,6 +12150,15 @@ packages: dev: true optional: true + /esbuild-linux-arm64@0.15.18: + resolution: {integrity: sha512-54qr8kg/6ilcxd+0V3h9rjT4qmjc0CccMVWrjOEM/pEcUzt8X62HfBSeZfT2ECpM7104mk4yfQXkosY8Quptug==} + engines: {node: '>=12'} + cpu: [arm64] + os: [linux] + requiresBuild: true + dev: true + optional: true + /esbuild-linux-arm@0.15.13: resolution: {integrity: sha512-Ac6LpfmJO8WhCMQmO253xX2IU2B3wPDbl4IvR0hnqcPrdfCaUa2j/lLMGTjmQ4W5JsJIdHEdW12dG8lFS0MbxQ==} engines: {node: '>=12'} @@ -12731,6 +12168,15 @@ packages: dev: true optional: true + /esbuild-linux-arm@0.15.18: + resolution: {integrity: sha512-UH779gstRblS4aoS2qpMl3wjg7U0j+ygu3GjIeTonCcN79ZvpPee12Qun3vcdxX+37O5LFxz39XeW2I9bybMVA==} + engines: {node: '>=12'} + cpu: [arm] + os: [linux] + requiresBuild: true + dev: true + optional: true + /esbuild-linux-mips64le@0.15.13: resolution: {integrity: sha512-47PgmyYEu+yN5rD/MbwS6DxP2FSGPo4Uxg5LwIdxTiyGC2XKwHhHyW7YYEDlSuXLQXEdTO7mYe8zQ74czP7W8A==} engines: {node: '>=12'} @@ -12740,6 +12186,15 @@ packages: dev: true optional: true + /esbuild-linux-mips64le@0.15.18: + resolution: {integrity: sha512-Mk6Ppwzzz3YbMl/ZZL2P0q1tnYqh/trYZ1VfNP47C31yT0K8t9s7Z077QrDA/guU60tGNp2GOwCQnp+DYv7bxQ==} + engines: {node: '>=12'} + cpu: [mips64el] + os: [linux] + requiresBuild: true + dev: true + optional: true + /esbuild-linux-ppc64le@0.15.13: resolution: {integrity: sha512-z6n28h2+PC1Ayle9DjKoBRcx/4cxHoOa2e689e2aDJSaKug3jXcQw7mM+GLg+9ydYoNzj8QxNL8ihOv/OnezhA==} engines: {node: '>=12'} @@ -12749,6 +12204,15 @@ packages: dev: true optional: true + /esbuild-linux-ppc64le@0.15.18: + resolution: {integrity: sha512-b0XkN4pL9WUulPTa/VKHx2wLCgvIAbgwABGnKMY19WhKZPT+8BxhZdqz6EgkqCLld7X5qiCY2F/bfpUUlnFZ9w==} + engines: {node: '>=12'} + cpu: [ppc64] + os: [linux] + requiresBuild: true + dev: true + optional: true + /esbuild-linux-riscv64@0.15.13: resolution: {integrity: sha512-+Lu4zuuXuQhgLUGyZloWCqTslcCAjMZH1k3Xc9MSEJEpEFdpsSU0sRDXAnk18FKOfEjhu4YMGaykx9xjtpA6ow==} engines: {node: '>=12'} @@ -12758,6 +12222,15 @@ packages: dev: true optional: true + /esbuild-linux-riscv64@0.15.18: + resolution: {integrity: sha512-ba2COaoF5wL6VLZWn04k+ACZjZ6NYniMSQStodFKH/Pu6RxzQqzsmjR1t9QC89VYJxBeyVPTaHuBMCejl3O/xg==} + engines: {node: '>=12'} + cpu: [riscv64] + os: [linux] + requiresBuild: true + dev: true + optional: true + /esbuild-linux-s390x@0.15.13: resolution: {integrity: sha512-BMeXRljruf7J0TMxD5CIXS65y7puiZkAh+s4XFV9qy16SxOuMhxhVIXYLnbdfLrsYGFzx7U9mcdpFWkkvy/Uag==} engines: {node: '>=12'} @@ -12767,6 +12240,15 @@ packages: dev: true optional: true + /esbuild-linux-s390x@0.15.18: + resolution: {integrity: sha512-VbpGuXEl5FCs1wDVp93O8UIzl3ZrglgnSQ+Hu79g7hZu6te6/YHgVJxCM2SqfIila0J3k0csfnf8VD2W7u2kzQ==} + engines: {node: '>=12'} + cpu: [s390x] + os: [linux] + requiresBuild: true + dev: true + optional: true + /esbuild-netbsd-64@0.15.13: resolution: {integrity: sha512-EHj9QZOTel581JPj7UO3xYbltFTYnHy+SIqJVq6yd3KkCrsHRbapiPb0Lx3EOOtybBEE9EyqbmfW1NlSDsSzvQ==} engines: {node: '>=12'} @@ -12776,6 +12258,15 @@ packages: dev: true optional: true + /esbuild-netbsd-64@0.15.18: + resolution: {integrity: sha512-98ukeCdvdX7wr1vUYQzKo4kQ0N2p27H7I11maINv73fVEXt2kyh4K4m9f35U1K43Xc2QGXlzAw0K9yoU7JUjOg==} + engines: {node: '>=12'} + cpu: [x64] + os: [netbsd] + requiresBuild: true + dev: true + optional: true + /esbuild-openbsd-64@0.15.13: resolution: {integrity: sha512-nkuDlIjF/sfUhfx8SKq0+U+Fgx5K9JcPq1mUodnxI0x4kBdCv46rOGWbuJ6eof2n3wdoCLccOoJAbg9ba/bT2w==} engines: {node: '>=12'} @@ -12785,6 +12276,15 @@ packages: dev: true optional: true + /esbuild-openbsd-64@0.15.18: + resolution: {integrity: sha512-yK5NCcH31Uae076AyQAXeJzt/vxIo9+omZRKj1pauhk3ITuADzuOx5N2fdHrAKPxN+zH3w96uFKlY7yIn490xQ==} + engines: {node: '>=12'} + cpu: [x64] + os: [openbsd] + requiresBuild: true + dev: true + optional: true + /esbuild-sunos-64@0.15.13: resolution: {integrity: sha512-jVeu2GfxZQ++6lRdY43CS0Tm/r4WuQQ0Pdsrxbw+aOrHQPHV0+LNOLnvbN28M7BSUGnJnHkHm2HozGgNGyeIRw==} engines: {node: '>=12'} @@ -12794,6 +12294,15 @@ packages: dev: true optional: true + /esbuild-sunos-64@0.15.18: + resolution: {integrity: sha512-On22LLFlBeLNj/YF3FT+cXcyKPEI263nflYlAhz5crxtp3yRG1Ugfr7ITyxmCmjm4vbN/dGrb/B7w7U8yJR9yw==} + engines: {node: '>=12'} + cpu: [x64] + os: [sunos] + requiresBuild: true + dev: true + optional: true + /esbuild-windows-32@0.15.13: resolution: {integrity: sha512-XoF2iBf0wnqo16SDq+aDGi/+QbaLFpkiRarPVssMh9KYbFNCqPLlGAWwDvxEVz+ywX6Si37J2AKm+AXq1kC0JA==} engines: {node: '>=12'} @@ -12803,6 +12312,15 @@ packages: dev: true optional: true + /esbuild-windows-32@0.15.18: + resolution: {integrity: sha512-o+eyLu2MjVny/nt+E0uPnBxYuJHBvho8vWsC2lV61A7wwTWC3jkN2w36jtA+yv1UgYkHRihPuQsL23hsCYGcOQ==} + engines: {node: '>=12'} + cpu: [ia32] + os: [win32] + requiresBuild: true + dev: true + optional: true + /esbuild-windows-64@0.15.13: resolution: {integrity: sha512-Et6htEfGycjDrtqb2ng6nT+baesZPYQIW+HUEHK4D1ncggNrDNk3yoboYQ5KtiVrw/JaDMNttz8rrPubV/fvPQ==} engines: {node: '>=12'} @@ -12812,6 +12330,15 @@ packages: dev: true optional: true + /esbuild-windows-64@0.15.18: + resolution: {integrity: sha512-qinug1iTTaIIrCorAUjR0fcBk24fjzEedFYhhispP8Oc7SFvs+XeW3YpAKiKp8dRpizl4YYAhxMjlftAMJiaUw==} + engines: {node: '>=12'} + cpu: [x64] + os: [win32] + requiresBuild: true + dev: true + optional: true + /esbuild-windows-arm64@0.15.13: resolution: {integrity: sha512-3bv7tqntThQC9SWLRouMDmZnlOukBhOCTlkzNqzGCmrkCJI7io5LLjwJBOVY6kOUlIvdxbooNZwjtBvj+7uuVg==} engines: {node: '>=12'} @@ -12821,6 +12348,15 @@ packages: dev: true optional: true + /esbuild-windows-arm64@0.15.18: + resolution: {integrity: sha512-q9bsYzegpZcLziq0zgUi5KqGVtfhjxGbnksaBFYmWLxeV/S1fK4OLdq2DFYnXcLMjlZw2L0jLsk1eGoB522WXQ==} + engines: {node: '>=12'} + cpu: [arm64] + os: [win32] + requiresBuild: true + dev: true + optional: true + /esbuild@0.15.13: resolution: {integrity: sha512-Cu3SC84oyzzhrK/YyN4iEVy2jZu5t2fz66HEOShHURcjSkOSAVL8C/gfUT+lDJxkVHpg8GZ10DD0rMHRPqMFaQ==} engines: {node: '>=12'} @@ -12851,6 +12387,36 @@ packages: esbuild-windows-arm64: 0.15.13 dev: true + /esbuild@0.15.18: + resolution: {integrity: sha512-x/R72SmW3sSFRm5zrrIjAhCeQSAWoni3CmHEqfQrZIQTM3lVCdehdwuIqaOtfC2slvpdlLa62GYoN8SxT23m6Q==} + engines: {node: '>=12'} + hasBin: true + requiresBuild: true + optionalDependencies: + '@esbuild/android-arm': 0.15.18 + '@esbuild/linux-loong64': 0.15.18 + esbuild-android-64: 0.15.18 + esbuild-android-arm64: 0.15.18 + esbuild-darwin-64: 0.15.18 + esbuild-darwin-arm64: 0.15.18 + esbuild-freebsd-64: 0.15.18 + esbuild-freebsd-arm64: 0.15.18 + esbuild-linux-32: 0.15.18 + esbuild-linux-64: 0.15.18 + esbuild-linux-arm: 0.15.18 + esbuild-linux-arm64: 0.15.18 + esbuild-linux-mips64le: 0.15.18 + esbuild-linux-ppc64le: 0.15.18 + esbuild-linux-riscv64: 0.15.18 + esbuild-linux-s390x: 0.15.18 + esbuild-netbsd-64: 0.15.18 + esbuild-openbsd-64: 0.15.18 + esbuild-sunos-64: 0.15.18 + esbuild-windows-32: 0.15.18 + esbuild-windows-64: 0.15.18 + esbuild-windows-arm64: 0.15.18 + dev: true + /esbuild@0.18.20: resolution: {integrity: sha512-ceqxoedUrcayh7Y7ZX6NdbbDzGROiyVBgC4PriJThBKSVPWnnFHZAkfI1lJT8QFkOwH4qOS2SJkS4wvpGl8BpA==} engines: {node: '>=12'} @@ -12887,7 +12453,6 @@ packages: /escape-html@1.0.3: resolution: {integrity: sha512-NiSupZ4OeuGwr68lGIeym/ksIZMJodUGOSCZ/FSnTxcrekbvqrgdUxlJOMpijaKZVjAJrWrGs/6Jy8OMuyj9ow==} - requiresBuild: true dev: true optional: true @@ -12935,13 +12500,13 @@ packages: source-map: 0.6.1 dev: true - /eslint-config-prettier@8.8.0(eslint@8.28.0): - resolution: {integrity: sha512-wLbQiFre3tdGgpDv67NQKnJuTlcUVYHas3k+DZCc2U2BadthoEY4B7hLPvAxaqdyOGCzuLfii2fqGph10va7oA==} + /eslint-config-prettier@8.5.0(eslint@8.51.0): + resolution: {integrity: sha512-obmWKLUNCnhtQRKc+tmnYuQl0pFU1ibYJQ5BGhTVB08bHe9wC8qUeG7c08dj9XX+AuPj1YSGSQIHl1pnDHZR0Q==} hasBin: true peerDependencies: eslint: '>=7.0.0' dependencies: - eslint: 8.28.0 + eslint: 8.51.0 dev: true /eslint-config-prettier@9.0.0(eslint@8.51.0): @@ -13064,7 +12629,7 @@ packages: - supports-color dev: true - /eslint-plugin-jest@27.2.1(@typescript-eslint/eslint-plugin@5.16.0)(eslint@7.32.0)(jest@27.5.1)(typescript@4.9.5): + /eslint-plugin-jest@27.2.1(@typescript-eslint/eslint-plugin@5.16.0)(eslint@7.32.0)(jest@27.5.1)(typescript@4.6.4): resolution: {integrity: sha512-l067Uxx7ZT8cO9NJuf+eJHvt6bqJyz2Z29wykyEdz/OtmcELQl2MQGQLX8J94O1cSJWAwUSEvCjwjA7KEK3Hmg==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} peerDependencies: @@ -13077,8 +12642,8 @@ packages: jest: optional: true dependencies: - '@typescript-eslint/eslint-plugin': 5.16.0(@typescript-eslint/parser@5.45.0)(eslint@7.32.0)(typescript@4.9.5) - '@typescript-eslint/utils': 5.62.0(eslint@7.32.0)(typescript@4.9.5) + '@typescript-eslint/eslint-plugin': 5.16.0(@typescript-eslint/parser@5.16.0)(eslint@7.32.0)(typescript@4.6.4) + '@typescript-eslint/utils': 5.62.0(eslint@7.32.0)(typescript@4.6.4) eslint: 7.32.0 jest: 27.5.1 transitivePeerDependencies: @@ -13086,7 +12651,7 @@ packages: - typescript dev: true - /eslint-plugin-jest@27.2.1(@typescript-eslint/eslint-plugin@6.6.0)(eslint@7.32.0)(jest@27.5.1)(typescript@4.9.5): + /eslint-plugin-jest@27.2.1(@typescript-eslint/eslint-plugin@6.7.5)(eslint@7.32.0)(jest@27.5.1)(typescript@4.6.4): resolution: {integrity: sha512-l067Uxx7ZT8cO9NJuf+eJHvt6bqJyz2Z29wykyEdz/OtmcELQl2MQGQLX8J94O1cSJWAwUSEvCjwjA7KEK3Hmg==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} peerDependencies: @@ -13099,8 +12664,8 @@ packages: jest: optional: true dependencies: - '@typescript-eslint/eslint-plugin': 6.6.0(@typescript-eslint/parser@5.45.0)(eslint@7.32.0)(typescript@4.9.5) - '@typescript-eslint/utils': 5.62.0(eslint@7.32.0)(typescript@4.9.5) + '@typescript-eslint/eslint-plugin': 6.7.5(@typescript-eslint/parser@5.16.0)(eslint@7.32.0)(typescript@4.6.4) + '@typescript-eslint/utils': 5.62.0(eslint@7.32.0)(typescript@4.6.4) eslint: 7.32.0 jest: 27.5.1 transitivePeerDependencies: @@ -13179,12 +12744,12 @@ packages: eslint: 7.32.0 dev: true - /eslint-plugin-simple-import-sort@10.0.0(eslint@8.28.0): + /eslint-plugin-simple-import-sort@10.0.0(eslint@8.51.0): resolution: {integrity: sha512-AeTvO9UCMSNzIHRkg8S6c3RPy5YEwKWSQPx3DYghLedo2ZQxowPFLGDN1AZ2evfg6r6mjBSZSLxLFsWSu3acsw==} peerDependencies: eslint: '>=5.0.0' dependencies: - eslint: 8.28.0 + eslint: 8.51.0 dev: true /eslint-plugin-svelte3@4.0.0(eslint@7.32.0)(svelte@3.53.1): @@ -13197,7 +12762,7 @@ packages: svelte: 3.53.1 dev: true - /eslint-plugin-svelte@2.26.0(eslint@8.28.0)(svelte@4.1.0): + /eslint-plugin-svelte@2.26.0(eslint@8.51.0)(svelte@4.1.0): resolution: {integrity: sha512-EMcHDOMfMvjxoB5aCGASwDhVHOb/yy0Syer5aPm4GDQpjbPMceacs7LdSDL4xsCIHuOGPdOnc0YIjGpmmuKOlQ==} engines: {node: ^14.17.0 || >=16.0.0} peerDependencies: @@ -13207,15 +12772,15 @@ packages: svelte: optional: true dependencies: - '@eslint-community/eslint-utils': 4.4.0(eslint@8.28.0) + '@eslint-community/eslint-utils': 4.4.0(eslint@8.51.0) '@jridgewell/sourcemap-codec': 1.4.15 debug: 4.3.4(supports-color@8.1.1) - eslint: 8.28.0 + eslint: 8.51.0 esutils: 2.0.3 known-css-properties: 0.27.0 - postcss: 8.4.27 - postcss-load-config: 3.1.4(postcss@8.4.27) - postcss-safe-parser: 6.0.0(postcss@8.4.27) + postcss: 8.4.31 + postcss-load-config: 3.1.4(postcss@8.4.31) + postcss-safe-parser: 6.0.0(postcss@8.4.31) svelte: 4.1.0 svelte-eslint-parser: 0.26.1(svelte@4.1.0) transitivePeerDependencies: @@ -13256,16 +12821,6 @@ packages: eslint-visitor-keys: 2.1.0 dev: true - /eslint-utils@3.0.0(eslint@8.28.0): - resolution: {integrity: sha512-uuQC43IGctw68pJA1RgbQS8/NP7rch6Cwd4j3ZBtgo4/8Flj4eGE7ZYSZRN3iq5pVUv6GPdW5Z1RFleo84uLDA==} - engines: {node: ^10.0.0 || ^12.0.0 || >= 14.0.0} - peerDependencies: - eslint: '>=5' - dependencies: - eslint: 8.28.0 - eslint-visitor-keys: 2.1.0 - dev: true - /eslint-visitor-keys@1.3.0: resolution: {integrity: sha512-6J72N8UNa462wa/KFODt/PJ3IU60SDpC3QXC1Hjc1BXXpfL2C9R5+AU7jhe0F6GREqVMh4Juu+NY7xn+6dipUQ==} engines: {node: '>=4'} @@ -13273,107 +12828,59 @@ packages: /eslint-visitor-keys@2.1.0: resolution: {integrity: sha512-0rSmRBzXgDzIsD6mGdJgevzgezI534Cer5L/vyMX0kHzT/jiB43jRhd9YUlMGYLQy2zprNmoT8qasCGtY+QaKw==} - engines: {node: '>=10'} - dev: true - - /eslint-visitor-keys@3.4.3: - resolution: {integrity: sha512-wpc+LXeiyiisxPlEkUzU6svyS1frIO3Mgxj1fdy7Pm8Ygzguax2N3Fa/D/ag1WqbOprdI+uY6wMUl8/a2G+iag==} - engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} - dev: true - - /eslint@7.32.0: - resolution: {integrity: sha512-VHZ8gX+EDfz+97jGcgyGCyRia/dPOd6Xh9yPv8Bl1+SoaIwD+a/vlrOmGRUyOYu7MwUhc7CxqeaDZU13S4+EpA==} - engines: {node: ^10.12.0 || >=12.0.0} - hasBin: true - dependencies: - '@babel/code-frame': 7.12.11 - '@eslint/eslintrc': 0.4.3 - '@humanwhocodes/config-array': 0.5.0 - ajv: 6.12.6 - chalk: 4.1.2 - cross-spawn: 7.0.3 - debug: 4.3.4(supports-color@8.1.1) - doctrine: 3.0.0 - enquirer: 2.4.1 - escape-string-regexp: 4.0.0 - eslint-scope: 5.1.1 - eslint-utils: 2.1.0 - eslint-visitor-keys: 2.1.0 - espree: 7.3.1 - esquery: 1.5.0 - esutils: 2.0.3 - fast-deep-equal: 3.1.3 - file-entry-cache: 6.0.1 - functional-red-black-tree: 1.0.1 - glob-parent: 5.1.2 - globals: 13.21.0 - ignore: 4.0.6 - import-fresh: 3.3.0 - imurmurhash: 0.1.4 - is-glob: 4.0.3 - js-yaml: 3.14.1 - json-stable-stringify-without-jsonify: 1.0.1 - levn: 0.4.1 - lodash.merge: 4.6.2 - minimatch: 3.1.2 - natural-compare: 1.4.0 - optionator: 0.9.3 - progress: 2.0.3 - regexpp: 3.2.0 - semver: 7.5.4 - strip-ansi: 6.0.1 - strip-json-comments: 3.1.1 - table: 6.8.1 - text-table: 0.2.0 - v8-compile-cache: 2.4.0 - transitivePeerDependencies: - - supports-color + engines: {node: '>=10'} dev: true - /eslint@8.28.0: - resolution: {integrity: sha512-S27Di+EVyMxcHiwDrFzk8dJYAaD+/5SoWKxL1ri/71CRHsnJnRDPNt2Kzj24+MT9FDupf4aqqyqPrvI8MvQ4VQ==} + /eslint-visitor-keys@3.4.3: + resolution: {integrity: sha512-wpc+LXeiyiisxPlEkUzU6svyS1frIO3Mgxj1fdy7Pm8Ygzguax2N3Fa/D/ag1WqbOprdI+uY6wMUl8/a2G+iag==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + dev: true + + /eslint@7.32.0: + resolution: {integrity: sha512-VHZ8gX+EDfz+97jGcgyGCyRia/dPOd6Xh9yPv8Bl1+SoaIwD+a/vlrOmGRUyOYu7MwUhc7CxqeaDZU13S4+EpA==} + engines: {node: ^10.12.0 || >=12.0.0} hasBin: true dependencies: - '@eslint/eslintrc': 1.4.1 - '@humanwhocodes/config-array': 0.11.11 - '@humanwhocodes/module-importer': 1.0.1 - '@nodelib/fs.walk': 1.2.8 + '@babel/code-frame': 7.12.11 + '@eslint/eslintrc': 0.4.3 + '@humanwhocodes/config-array': 0.5.0 ajv: 6.12.6 chalk: 4.1.2 cross-spawn: 7.0.3 debug: 4.3.4(supports-color@8.1.1) doctrine: 3.0.0 + enquirer: 2.4.1 escape-string-regexp: 4.0.0 - eslint-scope: 7.2.2 - eslint-utils: 3.0.0(eslint@8.28.0) - eslint-visitor-keys: 3.4.3 - espree: 9.6.1 + eslint-scope: 5.1.1 + eslint-utils: 2.1.0 + eslint-visitor-keys: 2.1.0 + espree: 7.3.1 esquery: 1.5.0 esutils: 2.0.3 fast-deep-equal: 3.1.3 file-entry-cache: 6.0.1 - find-up: 5.0.0 - glob-parent: 6.0.2 - globals: 13.21.0 - grapheme-splitter: 1.0.4 - ignore: 5.2.4 + functional-red-black-tree: 1.0.1 + glob-parent: 5.1.2 + globals: 13.23.0 + ignore: 4.0.6 import-fresh: 3.3.0 imurmurhash: 0.1.4 is-glob: 4.0.3 - is-path-inside: 3.0.3 - js-sdsl: 4.4.2 - js-yaml: 4.1.0 + js-yaml: 3.14.1 json-stable-stringify-without-jsonify: 1.0.1 levn: 0.4.1 lodash.merge: 4.6.2 minimatch: 3.1.2 natural-compare: 1.4.0 optionator: 0.9.3 + progress: 2.0.3 regexpp: 3.2.0 + semver: 7.5.4 strip-ansi: 6.0.1 strip-json-comments: 3.1.1 + table: 6.8.1 text-table: 0.2.0 + v8-compile-cache: 2.4.0 transitivePeerDependencies: - supports-color dev: true @@ -13536,7 +13043,7 @@ packages: /estree-walker@3.0.3: resolution: {integrity: sha512-7RUKfXgSMMkzt6ZuXmqapOurLGPPfgj6l9uRZ7lRGolvk0y2yocc35LdcxKC5PQZdn2DMqioAQ2NoWcrTKmm6g==} dependencies: - '@types/estree': 1.0.1 + '@types/estree': 1.0.2 /esutils@2.0.3: resolution: {integrity: sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==} @@ -13546,7 +13053,6 @@ packages: /etag@1.8.1: resolution: {integrity: sha512-aIL5Fx7mawVa300al2BnEE4iNvo1qETxLrPI/o05L7z6go7fCw1J6EQmbK4FmJ2AS7kgVF/KEZWufBfdClMcPg==} engines: {node: '>= 0.6'} - requiresBuild: true dev: true optional: true @@ -13567,8 +13073,8 @@ packages: /eth-block-tracker@4.4.3(@babel/core@7.23.2): resolution: {integrity: sha512-A8tG4Z4iNg4mw5tP1Vung9N9IjgMNqpiMoJ/FouSFwNCGHv2X0mmOYwtQOJzki6XN7r7Tyo01S29p7b224I4jw==} dependencies: - '@babel/plugin-transform-runtime': 7.22.15(@babel/core@7.23.2) - '@babel/runtime': 7.22.15 + '@babel/plugin-transform-runtime': 7.23.2(@babel/core@7.23.2) + '@babel/runtime': 7.23.2 eth-query: 2.1.2 json-rpc-random-id: 1.0.1 pify: 3.0.0 @@ -13605,7 +13111,7 @@ packages: optional: true dependencies: '@solidity-parser/parser': 0.14.5 - axios: 1.5.1(debug@4.3.4) + axios: 1.5.1 cli-table3: 0.5.1 colors: 1.4.0 ethereum-cryptography: 1.2.0 @@ -13662,7 +13168,7 @@ packages: /eth-json-rpc-middleware@1.6.0: resolution: {integrity: sha512-tDVCTlrUvdqHKqivYMjtFZsdD7TtpNLBCfKAcOpaVs7orBMS/A8HWro6dIzNtTZIR05FAbJ3bioFOnZpuCew9Q==} dependencies: - async: 2.6.2 + async: 2.6.4 eth-query: 2.1.2 eth-tx-summary: 3.2.4 ethereumjs-block: 1.7.1 @@ -13699,7 +13205,6 @@ packages: /eth-lib@0.1.29: resolution: {integrity: sha512-bfttrr3/7gG4E02HoWTDUcDDslN003OlOoBxk9virpAZQ1ja/jDgwkWB8QfJF7ojuEowrqy+lzp9VcJG7/k5bQ==} - requiresBuild: true dependencies: bn.js: 4.12.0 elliptic: 6.5.4 @@ -13716,7 +13221,6 @@ packages: /eth-lib@0.2.8: resolution: {integrity: sha512-ArJ7x1WcWOlSpzdoTBX8vkwlkSQ85CjjifSZtV4co64vWxSV8geWfPI9x4SVYu3DSxnX4yWFVTtGL+j9DUFLNw==} - requiresBuild: true dependencies: bn.js: 4.12.0 elliptic: 6.5.4 @@ -13763,7 +13267,7 @@ packages: /eth-tx-summary@3.2.4: resolution: {integrity: sha512-NtlDnaVZah146Rm8HMRUNMgIwG/ED4jiqk0TME9zFheMl1jOp6jL1m0NKGjJwehXQ6ZKCPr16MTr+qspKpEXNg==} dependencies: - async: 2.6.2 + async: 2.6.4 clone: 2.1.2 concat-stream: 1.6.2 end-of-stream: 1.4.4 @@ -13779,7 +13283,7 @@ packages: resolution: {integrity: sha512-/MSbf/r2/Ld8o0l15AymjOTlPqpN8Cr4ByUEA9GtR4x0yAh3TdtDzEg29zMjXCNPI7u6E5fOQdj/Cf9Tc7oVNw==} deprecated: 'New package name format for new versions: @ethereumjs/ethash. Please update.' dependencies: - async: 2.6.2 + async: 2.6.4 buffer-xor: 2.0.2 ethereumjs-util: 7.1.5 miller-rabin: 4.0.1 @@ -13817,7 +13321,7 @@ packages: create-hash: 1.2.0 create-hmac: 1.1.7 hash.js: 1.1.7 - keccak: 3.0.3 + keccak: 3.0.4 pbkdf2: 3.1.2 randombytes: 2.1.0 safe-buffer: 5.2.1 @@ -13896,7 +13400,7 @@ packages: resolution: {integrity: sha512-B+sSdtqm78fmKkBq78/QLKJbu/4Ts4P2KFISdgcuZUPDm9x+N7qgBPIIFUGbaakQh8bzuquiRVbdmvPKqbILRg==} deprecated: 'New package name format for new versions: @ethereumjs/block. Please update.' dependencies: - async: 2.6.2 + async: 2.6.4 ethereum-common: 0.2.0 ethereumjs-tx: 1.3.7 ethereumjs-util: 5.2.1 @@ -13907,7 +13411,7 @@ packages: resolution: {integrity: sha512-2p49ifhek3h2zeg/+da6XpdFR3GlqY3BIEiqxGF8j9aSRIgkb7M1Ky+yULBKJOu8PAZxfhsYA+HxUk2aCQp3vg==} deprecated: 'New package name format for new versions: @ethereumjs/block. Please update.' dependencies: - async: 2.6.2 + async: 2.6.4 ethereumjs-common: 1.5.0 ethereumjs-tx: 2.1.2 ethereumjs-util: 5.2.1 @@ -13918,7 +13422,7 @@ packages: resolution: {integrity: sha512-zCxaRMUOzzjvX78DTGiKjA+4h2/sF0OYL1QuPux0DHpyq8XiNoF5GYHtb++GUxVlMsMfZV7AVyzbtgcRdIcEPQ==} deprecated: 'New package name format for new versions: @ethereumjs/blockchain. Please update.' dependencies: - async: 2.6.2 + async: 2.6.4 ethashjs: 0.0.8 ethereumjs-block: 2.2.2 ethereumjs-common: 1.5.0 @@ -13998,7 +13502,7 @@ packages: resolution: {integrity: sha512-r/XIUik/ynGbxS3y+mvGnbOKnuLo40V5Mj1J25+HEO63aWYREIqvWeRO/hnROlMBE5WoniQmPmhiaN0ctiHaXw==} deprecated: 'New package name format for new versions: @ethereumjs/vm. Please update.' dependencies: - async: 2.6.2 + async: 2.6.4 async-eventemitter: 0.2.4 ethereumjs-account: 2.0.5 ethereumjs-block: 2.2.2 @@ -14015,7 +13519,7 @@ packages: resolution: {integrity: sha512-X6qqZbsY33p5FTuZqCnQ4+lo957iUJMM6Mpa6bL4UW0dxM6WmDSHuI4j/zOp1E2TDKImBGCJA9QPfc08PaNubA==} deprecated: 'New package name format for new versions: @ethereumjs/vm. Please update.' dependencies: - async: 2.6.2 + async: 2.6.4 async-eventemitter: 0.2.4 core-js-pure: 3.33.0 ethereumjs-account: 3.0.0 @@ -14048,8 +13552,8 @@ packages: dev: true optional: true - /ethers@5.7.2: - resolution: {integrity: sha512-wswUsmWo1aOK8rR7DIKiWSw9DbLWe6x98Jrn8wcTflTVvaXhAMaB5zGAXy0GYQEQp9iO1iSHWVyARQm11zUtyg==} + /ethers@5.7.1: + resolution: {integrity: sha512-5krze4dRLITX7FpU8J4WscXqADiKmyeNlylmmDLbS95DaZpBhDe2YSwRQwKXWNyXcox7a3gBgm/MkGXV1O1S/Q==} dependencies: '@ethersproject/abi': 5.7.0 '@ethersproject/abstract-provider': 5.7.0 @@ -14069,7 +13573,7 @@ packages: '@ethersproject/networks': 5.7.1 '@ethersproject/pbkdf2': 5.7.0 '@ethersproject/properties': 5.7.0 - '@ethersproject/providers': 5.7.2 + '@ethersproject/providers': 5.7.1 '@ethersproject/random': 5.7.0 '@ethersproject/rlp': 5.7.0 '@ethersproject/sha2': 5.7.0 @@ -14085,21 +13589,42 @@ packages: - bufferutil - utf-8-validate - /ethers@6.8.0: - resolution: {integrity: sha512-zrFbmQRlraM+cU5mE4CZTLBurZTs2gdp2ld0nG/f3ecBK+x6lZ69KSxBqZ4NjclxwfTxl5LeNufcBbMsTdY53Q==} - engines: {node: '>=14.0.0'} + /ethers@5.7.2: + resolution: {integrity: sha512-wswUsmWo1aOK8rR7DIKiWSw9DbLWe6x98Jrn8wcTflTVvaXhAMaB5zGAXy0GYQEQp9iO1iSHWVyARQm11zUtyg==} dependencies: - '@adraffy/ens-normalize': 1.10.0 - '@noble/curves': 1.2.0 - '@noble/hashes': 1.3.2 - '@types/node': 18.15.13 - aes-js: 4.0.0-beta.5 - tslib: 2.4.0 - ws: 8.5.0 + '@ethersproject/abi': 5.7.0 + '@ethersproject/abstract-provider': 5.7.0 + '@ethersproject/abstract-signer': 5.7.0 + '@ethersproject/address': 5.7.0 + '@ethersproject/base64': 5.7.0 + '@ethersproject/basex': 5.7.0 + '@ethersproject/bignumber': 5.7.0 + '@ethersproject/bytes': 5.7.0 + '@ethersproject/constants': 5.7.0 + '@ethersproject/contracts': 5.7.0 + '@ethersproject/hash': 5.7.0 + '@ethersproject/hdnode': 5.7.0 + '@ethersproject/json-wallets': 5.7.0 + '@ethersproject/keccak256': 5.7.0 + '@ethersproject/logger': 5.7.0 + '@ethersproject/networks': 5.7.1 + '@ethersproject/pbkdf2': 5.7.0 + '@ethersproject/properties': 5.7.0 + '@ethersproject/providers': 5.7.2 + '@ethersproject/random': 5.7.0 + '@ethersproject/rlp': 5.7.0 + '@ethersproject/sha2': 5.7.0 + '@ethersproject/signing-key': 5.7.0 + '@ethersproject/solidity': 5.7.0 + '@ethersproject/strings': 5.7.0 + '@ethersproject/transactions': 5.7.0 + '@ethersproject/units': 5.7.0 + '@ethersproject/wallet': 5.7.0 + '@ethersproject/web': 5.7.1 + '@ethersproject/wordlists': 5.7.0 transitivePeerDependencies: - bufferutil - utf-8-validate - dev: true /ethjs-unit@0.1.6: resolution: {integrity: sha512-/Sn9Y0oKl0uqQuvgFk/zQgR7aw1g36qX/jzSQ5lSwlO0GigPymk4eGQfeNTD03w1dPOqfz8V77Cy43jH56pagw==} @@ -14130,7 +13655,6 @@ packages: /eventemitter3@4.0.4: resolution: {integrity: sha512-rlaVLnVxtxvoyLsQQFBx53YmXHDxRIzzTLbdfxqi4yocpSjAxXwkU0cScM5JgSKMqEhrZpnvQ2D9gjylR0AimQ==} - requiresBuild: true dev: true optional: true @@ -14243,7 +13767,6 @@ packages: /express@4.18.2: resolution: {integrity: sha512-5/PsL6iGPdfQ/lKM1UuielYgv3BUoJfz1aUwU9vHZ+J7gyvwdQXFEBIEIaxeGf0GIcreATNyBExtalisDbuMqQ==} engines: {node: '>= 0.10.0'} - requiresBuild: true dependencies: accepts: 1.3.8 array-flatten: 1.1.1 @@ -14443,7 +13966,6 @@ packages: /finalhandler@1.2.0: resolution: {integrity: sha512-5uXcUVftlQMFnWC9qu/svkWv3GTd2PfUhK/3PLkYNAe7FbqJMt3515HaxE6eRL74GdsriiwujiawdaB1BpEISg==} engines: {node: '>= 0.8'} - requiresBuild: true dependencies: debug: 2.6.9 encodeurl: 1.0.2 @@ -14574,17 +14096,6 @@ packages: resolution: {integrity: sha512-Rwix9pBtC1Nuy5wysTmKy+UjbDJpIfg8eHjw0rjZ1mX4GNLz1Bmd16uDpI3Gk1i70Fgcs8Csg2lPm8HULFg9DQ==} dev: false - /follow-redirects@1.15.2(debug@4.3.4): - resolution: {integrity: sha512-VQLG33o04KaQ8uYi2tVNbdrWp1QWxNNea+nmIB4EVM28v0hmP17z7aG1+wAkNzVq4KeXTq3221ye5qTJP91JwA==} - engines: {node: '>=4.0'} - peerDependencies: - debug: '*' - peerDependenciesMeta: - debug: - optional: true - dependencies: - debug: 4.3.4(supports-color@8.1.1) - /follow-redirects@1.15.3(debug@4.3.4): resolution: {integrity: sha512-1VzOtuEM8pC9SFU1E+8KfTjZyMztRsgEfwQl44z8A25uy13jSzTj6dyK2Df52iV0vgHCfBwLhDWevLn95w5v6Q==} engines: {node: '>=4.0'} @@ -14595,7 +14106,6 @@ packages: optional: true dependencies: debug: 4.3.4(supports-color@8.1.1) - dev: true /for-each@0.3.3: resolution: {integrity: sha512-jqYfLp7mo9vIyQf8ykW2v7A+2N4QjeCeI5+Dz9XraiO1ign81wjiH7Fb9vSOWvQfNtmSa4H2RoQTrrXivdUZmw==} @@ -14664,7 +14174,6 @@ packages: /forwarded@0.2.0: resolution: {integrity: sha512-buRG0fpBtRHSTCOASe6hD258tEubFoRLb4ZNA6NxMVHNw2gOcwHo9wyablzMzOA5z9xA9L1KNjk/Nt6MT9aYow==} engines: {node: '>= 0.6'} - requiresBuild: true dev: true optional: true @@ -14672,8 +14181,8 @@ packages: resolution: {integrity: sha512-H5KQDspykdHuztLTg+ajGN0Z2qUjcEf3Ybxc6hLt0k7/zPkn29XnKnxlBPyW2XIddWrGaJBzBl4VLYOtk39yZg==} dev: true - /fraction.js@4.3.6: - resolution: {integrity: sha512-n2aZ9tNfYDwaHhvFTkhFErqOMIb8uyzSQ+vGJBjZyanAKZVbGUQ1sngfk9FdkBw7G26O7AgNjLcecLffD1c7eg==} + /fraction.js@4.3.7: + resolution: {integrity: sha512-ZsDfxO51wGAXREY55a7la9LScWpwv9RxIrYABrlvOFBlH/ShPnrtsXeuUIfXKKOVicNxQ+o8JTbJvjS4M89yew==} dev: true /fragment-cache@0.2.1: @@ -14686,7 +14195,6 @@ packages: /fresh@0.5.2: resolution: {integrity: sha512-zJ2mQYM18rEFOudeV4GShTGIQ7RbzA7ozbU9I/XBpm7kqgMywgmylMwXHxZJmkVoYkna9d2pVXVXPdYTP9ej8Q==} engines: {node: '>= 0.6'} - requiresBuild: true dev: true optional: true @@ -14760,7 +14268,6 @@ packages: /fs-minipass@1.2.7: resolution: {integrity: sha512-GWSSJGFy4e9GUeCcbIkED+bgAoFyj7XF1mV8rma3QW4NIqX9Kyx79N/PF61H5udOV3aY1IaMLs6pGbH71nlCTA==} - requiresBuild: true dependencies: minipass: 2.9.0 dev: true @@ -14798,12 +14305,8 @@ packages: dev: true optional: true - /function-bind@1.1.1: - resolution: {integrity: sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==} - /function-bind@1.1.2: resolution: {integrity: sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==} - dev: true /function.prototype.name@1.1.6: resolution: {integrity: sha512-Z5kx79swU5P27WEayXM1tBi5Ze/lbIyiNgU3qyXUOf9b2rgXYyF9Dy9Cx+IQv/Lc8WCG6L82zwUPpSS9hGehIg==} @@ -14922,8 +14425,8 @@ packages: /get-intrinsic@1.2.1: resolution: {integrity: sha512-2DcsyfABl+gVHEfCOaTrWgyt+tb6MSEGmKq+kI5HwLbIYgjgmMcV8KQ41uaKz1xxUcn9tJtgFbQUEVcEbd0FYw==} dependencies: - function-bind: 1.1.1 - has: 1.0.3 + function-bind: 1.1.2 + has: 1.0.4 has-proto: 1.0.1 has-symbols: 1.0.3 @@ -14955,7 +14458,6 @@ packages: /get-stream@4.1.0: resolution: {integrity: sha512-GMat4EJ5161kIy2HevLlr4luNjBgvmj413KaQA7jt4V8B4RDsfpHk7WQ9GVqfYyyx8OS/L66Kox+rJRNklLK7w==} engines: {node: '>=6'} - requiresBuild: true dependencies: pump: 3.0.0 dev: true @@ -14964,7 +14466,6 @@ packages: /get-stream@5.2.0: resolution: {integrity: sha512-nBF+F1rAZVCu/p7rjzgA+Yb4lfYXrpl7a6VmJrU8wF9I1CKvP/QwPNZHnOlwbTkY6dvtFIzFMSyQXbLoTQPRpA==} engines: {node: '>=8'} - requiresBuild: true dependencies: pump: 3.0.0 dev: true @@ -15074,7 +14575,7 @@ packages: fs.realpath: 1.0.0 inflight: 1.0.6 inherits: 2.0.4 - minimatch: 3.0.4 + minimatch: 3.1.2 once: 1.4.0 path-is-absolute: 1.0.1 dev: true @@ -15171,13 +14672,6 @@ packages: resolution: {integrity: sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==} engines: {node: '>=4'} - /globals@13.21.0: - resolution: {integrity: sha512-ybyme3s4yy/t/3s35bewwXKOf7cvzfreG2lH0lZl0JB7I4GxRP2ghxOK/Nb9EkRXdbBXZLfq/p/0W2JUONB/Gg==} - engines: {node: '>=8'} - dependencies: - type-fest: 0.20.2 - dev: true - /globals@13.23.0: resolution: {integrity: sha512-XAmF0RjlrjY23MA51q3HltdlGxUpXPvg0GioKiD9X6HD28iMjo2dKC8Vqwm7lne4GNr78+RHTfliktR6ZH09wA==} engines: {node: '>=8'} @@ -15258,7 +14752,6 @@ packages: /got@11.8.6: resolution: {integrity: sha512-6tfZ91bOr7bOXnK7PRDCGBLa1H4U080YHNaAQ2KsMGlLEzRbk44nsZF2E1IeRc3vtJHPVbKCYgdFbaGO2ljd8g==} engines: {node: '>=10.19.0'} - requiresBuild: true dependencies: '@sindresorhus/is': 4.6.0 '@szmarczak/http-timer': 4.0.6 @@ -15277,7 +14770,6 @@ packages: /got@9.6.0: resolution: {integrity: sha512-R7eWptXuGYxwijs0eV+v3o6+XH1IqVK8dJOEecQfTmkncw9AV4dcw/Dhxi8MdlqPthxxpZyizMzyg8RTmEsG+Q==} engines: {node: '>=8.6'} - requiresBuild: true dependencies: '@sindresorhus/is': 0.14.0 '@szmarczak/http-timer': 1.1.2 @@ -15298,10 +14790,6 @@ packages: /graceful-fs@4.2.11: resolution: {integrity: sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==} - /grapheme-splitter@1.0.4: - resolution: {integrity: sha512-bzh50DW9kTPM00T8y4o8vQg89Di9oLJVLW/KaOGIXJWP/iqCN6WKYkbNOF04vFLJhwcpYUh9ydh/+5vpOqV4YQ==} - dev: true - /graphemer@1.4.0: resolution: {integrity: sha512-EtKwoO6kxCL9WO5xipiHTZlSzBm7WLT627TqC/uVRd0HKmq8NXyebnNYxDoBi7wt8eTWrUrKXCOVaFq9x1kgag==} dev: true @@ -15388,7 +14876,7 @@ packages: vue-loader: 15.10.2(css-loader@6.8.1)(prettier@3.0.3)(vue-template-compiler@2.7.14)(webpack@5.89.0) vue-router: 3.6.5(vue@2.7.14) vue-template-compiler: 2.7.14 - webpack: 5.89.0 + webpack: 5.89.0(esbuild@0.15.13) transitivePeerDependencies: - '@swc/core' - '@vue/compiler-sfc' @@ -15629,16 +15117,9 @@ packages: kind-of: 4.0.0 dev: true - /has@1.0.3: - resolution: {integrity: sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==} - engines: {node: '>= 0.4.0'} - dependencies: - function-bind: 1.1.1 - /has@1.0.4: resolution: {integrity: sha512-qdSAmqLF6209RFj4VVItywPMbm3vWylknmB3nvNiUIs72xAimcM8nVYxYr7ncvZq5qzk9MKIZR8ijqD/1QuYjQ==} engines: {node: '>= 0.4.0'} - dev: true /hash-base@3.1.0: resolution: {integrity: sha512-1nmYp/rhMDiE7AYkDw+lLwlAzz0AntGIe51F3RfFfEqyQ3feY2eI/NcwC6umIQVOASPMsWJLJScWKSSvzL9IVA==} @@ -15753,7 +15234,7 @@ packages: mdast-util-mdxjs-esm: 1.3.1 property-information: 6.3.0 space-separated-tokens: 2.0.2 - style-to-object: 0.4.2 + style-to-object: 0.4.4 unist-util-position: 4.0.4 zwitch: 2.0.4 transitivePeerDependencies: @@ -15872,7 +15353,7 @@ packages: he: 1.2.0 param-case: 3.0.4 relateurl: 0.2.7 - terser: 5.21.0 + terser: 5.22.0 dev: true /html-void-elements@3.0.0: @@ -15890,7 +15371,7 @@ packages: lodash: 4.17.21 pretty-error: 4.0.0 tapable: 2.2.1 - webpack: 5.89.0 + webpack: 5.89.0(esbuild@0.15.13) dev: true /htmlparser2@6.1.0: @@ -15929,7 +15410,6 @@ packages: /http-https@1.0.0: resolution: {integrity: sha512-o0PWwVCSp3O0wS6FvNr6xfBCHgt0m1tvPLFOCc2iFDKTRAXhB7m8klDf7ErowFH8POa6dVdGatKU5I1YYwzUyg==} - requiresBuild: true dev: true optional: true @@ -15973,7 +15453,6 @@ packages: /http2-wrapper@1.0.3: resolution: {integrity: sha512-V+23sDMr12Wnz7iTcDeJr3O6AIxlnvT/bmaAAAP/Xda35C90p9599p0F1eHR/N1KILWSoWVAiOMFjBBXaXSMxg==} engines: {node: '>=10.19.0'} - requiresBuild: true dependencies: quick-lru: 5.1.1 resolve-alpn: 1.2.1 @@ -16039,7 +15518,6 @@ packages: /idna-uts46-hx@2.3.1: resolution: {integrity: sha512-PWoF9Keq6laYdIRwwCdhTPl60xRqAloYNMQLiyUnG42VjT53oW07BXIRM+NK7eQjzXjAk2gUvX9caRxlnF9TAA==} engines: {node: '>=4.0.0'} - requiresBuild: true dependencies: punycode: 2.1.0 dev: true @@ -16208,7 +15686,6 @@ packages: /ipaddr.js@1.9.1: resolution: {integrity: sha512-0KI/607xoxSToH7GjN1FfSbLoU0+btTicjsQSWQlh/hZykN8KpmMf7uYwPW3R+akZ6R/w18ZlXSHBYXiYUPO3g==} engines: {node: '>= 0.10'} - requiresBuild: true dev: true optional: true @@ -16303,7 +15780,7 @@ packages: /is-core-module@2.13.0: resolution: {integrity: sha512-Z7dk6Qo8pOCp3l4tsX2C5ZVas4V+UxwQodwZhLopL91TX8UyyHEXafPcyoeeWuLrwzHcr3igO78wNLwHJHsMCQ==} dependencies: - has: 1.0.3 + has: 1.0.4 /is-data-descriptor@0.1.4: resolution: {integrity: sha512-+w9D5ulSoBNlmw9OHn3U2v51SyoCd0he+bB3xMl62oijhrspxowjU+AIcDY0N3iEJbUEkB15IlMASQsxYigvXg==} @@ -16522,8 +15999,8 @@ packages: resolution: {integrity: sha512-+lP4/6lKUBfQjZ2pdxThZvLUAafmZb8OAxFb8XXtiQmS35INgr85hdOGoEs124ez1FCnZJt6jau/T+alh58QFQ==} dev: false - /is-reference@3.0.1: - resolution: {integrity: sha512-baJJdQLiYaJdvFbJqXrcGv3WU3QCzBlUcI5QhbesIm6/xPsvmO+2CDoi/GMOFBQEQm+PXkwOPrp9KK5ozZsp2w==} + /is-reference@3.0.2: + resolution: {integrity: sha512-v3rht/LgVcsdZa3O2Nqs+NMowLOxeOm7Ay9+/ARQ2F+qEoANRcqrjAZKGN0v8ymUetZGgkp26LTnGT7H0Qo9Pg==} dependencies: '@types/estree': 0.0.50 @@ -16668,6 +16145,7 @@ packages: ws: '*' dependencies: ws: 8.12.0 + dev: true /isows@1.0.2(ws@8.13.0): resolution: {integrity: sha512-ohHPFvRjcGLLA7uqHjIcGf5M3OrzN/k9QVYMGOvCppV/HY2GZdz7oFsJHT70ZXEL7ImrOGE1F9M0SovDGSfT6Q==} @@ -16675,7 +16153,6 @@ packages: ws: '*' dependencies: ws: 8.13.0 - dev: true /isstream@0.1.2: resolution: {integrity: sha512-Yljz7ffyPbrLpLngrMtZ7NduUgVvi6wG9RJ9IUcyCd59YQ911PBJphODUcbOVbqYfxe1wuYf/LJ8PauMRwsM/g==} @@ -16690,8 +16167,8 @@ packages: resolution: {integrity: sha512-pzqtp31nLv/XFOzXGuvhCb8qhjmTVo5vjVk19XE4CRlSWz0KoeJ3bw9XsA7nOp9YBf4qHjwBxkDzKcME/J29Yg==} engines: {node: '>=8'} dependencies: - '@babel/core': 7.22.15 - '@babel/parser': 7.22.15 + '@babel/core': 7.23.2 + '@babel/parser': 7.23.0 '@istanbuljs/schema': 0.1.3 istanbul-lib-coverage: 3.2.0 semver: 6.3.1 @@ -16832,10 +16309,10 @@ packages: ts-node: optional: true dependencies: - '@babel/core': 7.22.15 + '@babel/core': 7.23.2 '@jest/test-sequencer': 27.5.1 '@jest/types': 27.5.1 - babel-jest: 27.5.1(@babel/core@7.22.15) + babel-jest: 27.5.1(@babel/core@7.23.2) chalk: 4.1.2 ci-info: 3.9.0 deepmerge: 4.3.1 @@ -16931,7 +16408,7 @@ packages: engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0} dependencies: '@jest/types': 27.5.1 - '@types/graceful-fs': 4.1.6 + '@types/graceful-fs': 4.1.7 '@types/node': 20.8.6 anymatch: 3.1.3 fb-watchman: 2.0.2 @@ -17130,16 +16607,16 @@ packages: resolution: {integrity: sha512-yYykXI5a0I31xX67mgeLw1DZ0bJB+gpq5IpSuCAoyDi0+BhgU/RIrL+RTzDmkNTchvDFWKP8lp+w/42Z3us5sA==} engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0} dependencies: - '@babel/core': 7.22.15 - '@babel/generator': 7.22.15 - '@babel/plugin-syntax-typescript': 7.22.5(@babel/core@7.22.15) - '@babel/traverse': 7.22.15 - '@babel/types': 7.22.15 + '@babel/core': 7.23.2 + '@babel/generator': 7.23.0 + '@babel/plugin-syntax-typescript': 7.22.5(@babel/core@7.23.2) + '@babel/traverse': 7.23.2 + '@babel/types': 7.23.0 '@jest/transform': 27.5.1 '@jest/types': 27.5.1 - '@types/babel__traverse': 7.20.1 + '@types/babel__traverse': 7.20.2 '@types/prettier': 2.7.3 - babel-preset-current-node-syntax: 1.0.1(@babel/core@7.22.15) + babel-preset-current-node-syntax: 1.0.1(@babel/core@7.23.2) chalk: 4.1.2 expect: 27.5.1 graceful-fs: 4.2.11 @@ -17163,7 +16640,7 @@ packages: '@jest/types': 27.5.1 '@types/node': 20.8.6 chalk: 4.1.2 - ci-info: 3.8.0 + ci-info: 3.9.0 graceful-fs: 4.2.11 picomatch: 2.3.1 dev: true @@ -17223,11 +16700,6 @@ packages: - utf-8-validate dev: true - /jiti@1.19.3: - resolution: {integrity: sha512-5eEbBDQT/jF1xg6l36P+mWGGoH9Spuy0PCdSr2dtWRDGC6ph/w9ZCL4lmESW8f8F7MwT3XKescfP0wnZWAKL9w==} - hasBin: true - dev: true - /jiti@1.20.0: resolution: {integrity: sha512-3TV69ZbrvV6U5DfQimop50jE9Dl6J8O1ja1dvBbMba/sZ3YBEQqJ2VZRoQPVnhlzjNtU1vaXRZVrVjU4qtm8yA==} hasBin: true @@ -17361,7 +16833,7 @@ packages: whatwg-encoding: 2.0.0 whatwg-mimetype: 3.0.0 whatwg-url: 12.0.1 - ws: 8.13.0 + ws: 8.14.2(bufferutil@4.0.8)(utf-8-validate@5.0.10) xml-name-validator: 4.0.0 transitivePeerDependencies: - bufferutil @@ -17386,7 +16858,6 @@ packages: /json-buffer@3.0.0: resolution: {integrity: sha512-CuUqjv0FUZIdXkHPI8MezCnFCdaTAacej1TZYulLoAg1h/PhwkdXFN4V/gzY4g+fMBCOV2xF+rp7t2XD2ns/NQ==} - requiresBuild: true dev: true optional: true @@ -17405,7 +16876,7 @@ packages: /json-rpc-engine@3.8.0: resolution: {integrity: sha512-6QNcvm2gFuuK4TKU1uwfH0Qd/cOSb9c1lls0gbnIhciktIUQJwz6NQNAW4B1KiGPenv7IKu97V222Yo1bNhGuA==} dependencies: - async: 2.6.2 + async: 2.6.4 babel-preset-env: 1.7.0 babelify: 7.3.0 json-rpc-error: 2.0.0 @@ -17530,15 +17001,6 @@ packages: commander: 8.3.0 dev: false - /keccak@3.0.3: - resolution: {integrity: sha512-JZrLIAJWuZxKbCilMpNz5Vj7Vtb4scDG3dMXLOsbzBmQGyjwE61BbW7bJkfKKCShXiQZt3T6sBgALRtmd+nZaQ==} - engines: {node: '>=10.0.0'} - requiresBuild: true - dependencies: - node-addon-api: 2.0.2 - node-gyp-build: 4.6.1 - readable-stream: 3.6.2 - /keccak@3.0.4: resolution: {integrity: sha512-3vKuW0jV8J3XNTzvfyicFR5qvxrSAGl7KIhvgOu5cmWwM7tZRj3fMbj/pfIf4be7aznbc+prBWGjywox/g2Y6Q==} engines: {node: '>=10.0.0'} @@ -17547,11 +17009,9 @@ packages: node-addon-api: 2.0.2 node-gyp-build: 4.6.1 readable-stream: 3.6.2 - dev: true /keyv@3.1.0: resolution: {integrity: sha512-9ykJ/46SN/9KPM/sichzQ7OvXyGDYKGTaDlKMGCAlg2UK8KRy4jb0d8sFc+0Tt0YYnThq8X2RZgCg74RPxgcVA==} - requiresBuild: true dependencies: json-buffer: 3.0.0 dev: true @@ -17559,7 +17019,6 @@ packages: /keyv@4.5.4: resolution: {integrity: sha512-oxVHkHR/EJf2CNXnWxRLW6mg7JyCCUcG0DtEGmL2ctUo1PNTin1PUil+r/+4r5MpVgC/fn1kjsx7mjSujKqIpw==} - requiresBuild: true dependencies: json-buffer: 3.0.1 dev: true @@ -17567,8 +17026,8 @@ packages: /keyvaluestorage-interface@1.0.0: resolution: {integrity: sha512-8t6Q3TclQ4uZynJY9IGr2+SsIGwK9JHcO6ootkHCGA0CrQCRy+VkouYNO2xicET6b9al7QKzpebNow+gkpCL8g==} - /khroma@2.0.0: - resolution: {integrity: sha512-2J8rDNlQWbtiNYThZRvmMv5yt44ZakX+Tz5ZIp/mN1pt4snn+m030Va5Z4v8xA0cQFDXBwO/8i42xL4QPsVk3g==} + /khroma@2.1.0: + resolution: {integrity: sha512-Ls993zuzfayK269Svk9hzpeGUKob/sIgZzyHYdjQoAdQetRKpOLj+k/QQQ/6Qi0Yz65mlROrfd+Ev+1+7dz9Kw==} dev: false /kind-of@3.2.2: @@ -17747,7 +17206,7 @@ packages: dependencies: inherits: 2.0.4 level-errors: 1.0.5 - readable-stream: 1.1.14 + readable-stream: 1.0.34 xtend: 4.0.2 dev: true @@ -17813,7 +17272,7 @@ packages: /level-post@1.0.7: resolution: {integrity: sha512-PWYqG4Q00asOrLhX7BejSajByB4EmG2GaKHfj3h5UmmZ2duciXLPGYWIjBzLECFWUGOZWlm5B20h/n3Gs3HKew==} dependencies: - ltgt: 2.1.3 + ltgt: 2.2.1 dev: true /level-sublevel@6.6.4: @@ -17950,14 +17409,14 @@ packages: /lit-element@3.3.3: resolution: {integrity: sha512-XbeRxmTHubXENkV4h8RIPyr8lXc+Ff28rkcQzw3G6up2xg5E8Zu1IgOWIwBLEQsu3cOVFqdYwiVi0hv0SlpqUA==} dependencies: - '@lit-labs/ssr-dom-shim': 1.1.1 + '@lit-labs/ssr-dom-shim': 1.1.2 '@lit/reactive-element': 1.6.3 lit-html: 2.8.0 /lit-html@2.8.0: resolution: {integrity: sha512-o9t+MQM3P4y7M7yNzqAyjp7z+mQGa4NS4CxiyLqFPyFWyc4O+nodLrkrxSaCTrla6M5YOLaT3RpbbqjszB5g3Q==} dependencies: - '@types/trusted-types': 2.0.3 + '@types/trusted-types': 2.0.4 /lit@2.7.5: resolution: {integrity: sha512-i/cH7Ye6nBDUASMnfwcictBnsTN91+aBjXoTHF2xARghXScKxpD4F4WYI+VLXg9lqbMinDfvoI7VnZXjyHgdfQ==} @@ -17966,8 +17425,8 @@ packages: lit-element: 3.3.3 lit-html: 2.8.0 - /lit@2.7.6: - resolution: {integrity: sha512-1amFHA7t4VaaDe+vdQejSVBklwtH9svGoG6/dZi9JhxtJBBlqY5D1RV7iLUYY0trCqQc4NfhYYZilZiVHt7Hxg==} + /lit@2.8.0: + resolution: {integrity: sha512-4Sc3OFX9QHOJaHbmTMk28SYgVxLN3ePDjg7hofEft2zWlehFL3LiAuapWc4U/kYwMYJSh2hTCPZ6/LIC7ii0MA==} dependencies: '@lit/reactive-element': 1.6.3 lit-element: 3.3.3 @@ -18170,14 +17629,12 @@ packages: /lowercase-keys@1.0.1: resolution: {integrity: sha512-G2Lj61tXDnVFFOi8VZds+SoQjtQC3dgokKdDG2mTm1tx4m50NUHBOZSBwQQHyy0V12A0JTG4icfZQH+xPyh8VA==} engines: {node: '>=0.10.0'} - requiresBuild: true dev: true optional: true /lowercase-keys@2.0.0: resolution: {integrity: sha512-tqNXrS78oMOE73NMxK4EMLQsQowWf8jKooH9g7xPavRT706R6bkQJ6DY2Te7QukaZsulxa30wQ7bk0pm4XiHmA==} engines: {node: '>=8'} - requiresBuild: true dev: true optional: true @@ -18247,8 +17704,8 @@ packages: '@jridgewell/sourcemap-codec': 1.4.15 dev: true - /magic-string@0.30.3: - resolution: {integrity: sha512-B7xGbll2fG/VjP+SWg4sX3JynwIU0mjoTc6MPpKNuIvftk6u6vqhDnk1R80b8C2GBR6ywqy+1DcKBrevBg+bmw==} + /magic-string@0.30.5: + resolution: {integrity: sha512-7xlpfBaQaP/T6Vh8MO/EqXSW5En6INHEvEXQiuff7Gku0PWjU3uf6w/j9o7O+SpB5fOAkrI5HeoNgwjEO0pFsA==} engines: {node: '>=12'} dependencies: '@jridgewell/sourcemap-codec': 1.4.15 @@ -18333,7 +17790,7 @@ packages: /match-sorter@6.3.1: resolution: {integrity: sha512-mxybbo3pPNuA+ZuCUhm5bwNkXrJTbsk5VWbR5wiwz/GC6LIiegBGn2w3O08UG/jdbYLinw51fSQ5xNU1U3MgBw==} dependencies: - '@babel/runtime': 7.23.1 + '@babel/runtime': 7.23.2 remove-accents: 0.4.2 dev: false @@ -18569,7 +18026,6 @@ packages: /media-typer@0.3.0: resolution: {integrity: sha512-dq+qelQ9akHpcOl/gUVRTxVIOkAJ1wR3QAvb4RsVjS8oVoFjDGTc679wJYmUmknUF5HwMLOgb5O+a3KxfWapPQ==} engines: {node: '>= 0.6'} - requiresBuild: true dev: true optional: true @@ -18639,7 +18095,7 @@ packages: resolution: {integrity: sha512-+obSblOQmRhcyBt62furQqRAQpNyWXo8BuQ5bN7dG8wmwQ+vwHKp/rCFD4CrTP8CsDQD1sjoZ94K417XEUk8IQ==} engines: {node: '>=10'} dependencies: - '@types/minimist': 1.2.2 + '@types/minimist': 1.2.3 camelcase-keys: 6.2.2 decamelize: 1.2.0 decamelize-keys: 1.1.1 @@ -18655,7 +18111,6 @@ packages: /merge-descriptors@1.0.1: resolution: {integrity: sha512-cCi6g3/Zr1iqQi6ySbseM1Xvooa98N0w31jzUYrXPX2xqObmFGHJ0tQ5u74H3mVh7wLouTseZyYIq39g8cNp1w==} - requiresBuild: true dev: true optional: true @@ -18690,7 +18145,7 @@ packages: /merkle-patricia-tree@3.0.0: resolution: {integrity: sha512-soRaMuNf/ILmw3KWbybaCjhx86EYeBbD8ph0edQCTed0JN/rxDt1EBN52Ajre3VyGo+91f8+/rfPIRQnnGMqmQ==} dependencies: - async: 2.6.2 + async: 2.6.4 ethereumjs-util: 5.2.1 level-mem: 3.0.1 level-ws: 1.0.0 @@ -18725,7 +18180,7 @@ packages: dayjs: 1.11.10 dompurify: 3.0.6 elkjs: 0.8.2 - khroma: 2.0.0 + khroma: 2.1.0 lodash-es: 4.17.21 mdast-util-from-markdown: 1.3.1 non-layered-tidy-tree-layout: 2.0.2 @@ -18740,7 +18195,6 @@ packages: /methods@1.1.2: resolution: {integrity: sha512-iclAHeNqNm68zFtnZ0e+1L2yUIdvzNoauKU4WBA3VvH/vPFieF7qfRlwUZU+DA9P9bPXIS90ulxoUoCH23sV2w==} engines: {node: '>= 0.6'} - requiresBuild: true dev: true optional: true @@ -19100,7 +18554,7 @@ packages: /micromark@3.2.0: resolution: {integrity: sha512-uD66tJj54JLYq0De10AhWycZWGQNUvDI55xPgk2sQM5kn1JYlhbCMTtEeT27+vAhW2FBQxLlOmS3pmA7/2z4aA==} dependencies: - '@types/debug': 4.1.9 + '@types/debug': 4.1.7 debug: 4.3.4(supports-color@8.1.1) decode-named-character-reference: 1.0.2 micromark-core-commonmark: 1.1.0 @@ -19172,7 +18626,6 @@ packages: resolution: {integrity: sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg==} engines: {node: '>=4'} hasBin: true - requiresBuild: true dev: true optional: true @@ -19195,14 +18648,12 @@ packages: /mimic-response@1.0.1: resolution: {integrity: sha512-j5EctnkH7amfV/q5Hgmoal1g2QHFJRraOtmx0JpIqkxhBhI/lJSl1nMpQ45hVarwNETOoWEimndZ4QK0RHxuxQ==} engines: {node: '>=4'} - requiresBuild: true dev: true optional: true /mimic-response@3.1.0: resolution: {integrity: sha512-z0yWI+4FDrrweS8Zmt4Ej5HdJmky15+L2e6Wgn3+iK5fWzb6T3fhNFq2+MeTRb064c6Wr4N/wv0DzQTjNzHNGQ==} engines: {node: '>=10'} - requiresBuild: true /min-document@2.19.0: resolution: {integrity: sha512-9Wy1B3m3f66bPPmU5hdA4DR4PB2OfDU/+GS3yAB7IQozE3tqXaVv2zOjgla7MEGSRv95+ILmOuvhLkOK6wJtCQ==} @@ -19320,7 +18771,6 @@ packages: /minipass@2.9.0: resolution: {integrity: sha512-wxfUjg9WebH+CUDX/CdbRlh5SmfZiy/hpkxaRI16Y9W56Pa75sWgd/rvFilSgrauD9NyFymP/+JFV3KwzIsJeg==} - requiresBuild: true dependencies: safe-buffer: 5.2.1 yallist: 3.1.1 @@ -19351,7 +18801,6 @@ packages: /minizlib@1.3.3: resolution: {integrity: sha512-6ZYMOEnmVsdCeTJVE0W9ZD+pVnE8h9Hma/iOwwRDsdQoePpoX56/8B6z3P9VNwppJuBKNRuFDRNRqRWexT9G9Q==} - requiresBuild: true dependencies: minipass: 2.9.0 dev: true @@ -19381,7 +18830,6 @@ packages: resolution: {integrity: sha512-Hepn5kb1lJPtVW84RFT40YG1OddBNTOVUZR2bzQUHc+Z03en8/3uX0+060JDhcEzyO08HmipsN9DcnFMxhIL9w==} engines: {node: '>=4'} deprecated: This package is broken and no longer maintained. 'mkdirp' itself supports promises now, please switch to that. - requiresBuild: true dependencies: mkdirp: 3.0.1 dev: true @@ -19417,7 +18865,6 @@ packages: resolution: {integrity: sha512-+NsyUUAZDmo6YVHzL/stxSu3t9YS1iljliy3BSDrXJ/dkn1KYdmtZODGGjLcc9XLgVVpH4KshHB8XmZgMhaBXg==} engines: {node: '>=10'} hasBin: true - requiresBuild: true dev: true optional: true @@ -19427,7 +18874,7 @@ packages: acorn: 8.10.0 pathe: 1.1.1 pkg-types: 1.0.3 - ufo: 1.3.0 + ufo: 1.3.1 dev: true /mnemonist@0.38.5: @@ -19497,7 +18944,6 @@ packages: /mock-fs@4.14.0: resolution: {integrity: sha512-qYvlv/exQ4+svI3UOvPUpLDF0OMX5euvUH0Ny4N5QyRyhNdgAgUrVH3iUINSzEPLvx0kbo/Bp28GJKIqvE7URw==} - requiresBuild: true dev: true optional: true @@ -19521,12 +18967,12 @@ packages: /motion@10.16.2: resolution: {integrity: sha512-p+PurYqfUdcJZvtnmAqu5fJgV2kR0uLFQuBKtLeFVTrYEVllI99tiOTSefVNYuip9ELTEkepIIDftNdze76NAQ==} dependencies: - '@motionone/animation': 10.15.1 - '@motionone/dom': 10.16.2 - '@motionone/svelte': 10.16.2 - '@motionone/types': 10.15.1 - '@motionone/utils': 10.15.1 - '@motionone/vue': 10.16.2 + '@motionone/animation': 10.16.3 + '@motionone/dom': 10.16.4 + '@motionone/svelte': 10.16.4 + '@motionone/types': 10.16.3 + '@motionone/utils': 10.16.3 + '@motionone/vue': 10.16.4 /mri@1.2.0: resolution: {integrity: sha512-tzzskb3bG8LvYGFF/mDTpq3jpI6Q9wc3LEmBaghu+DdCssd1FakN7Bc0hVNmEyGq1bq3RgfkCb3cmQLpNPOroA==} @@ -19554,7 +19000,6 @@ packages: /multibase@0.6.1: resolution: {integrity: sha512-pFfAwyTjbbQgNc3G7D48JkJxWtoJoBMaR4xQUOuB8RnCgRqaYmWNFeJTTvrJ2w51bjLq2zTby6Rqj9TQ9elSUw==} deprecated: This module has been superseded by the multiformats module - requiresBuild: true dependencies: base-x: 3.0.9 buffer: 5.7.1 @@ -19564,7 +19009,6 @@ packages: /multibase@0.7.0: resolution: {integrity: sha512-TW8q03O0f6PNFTQDvh3xxH03c8CjGaaYrjkl9UQPG6rz53TQzzxJVCIWVjzcbN/Q5Y53Zd0IBQBMVktVgNx4Fg==} deprecated: This module has been superseded by the multiformats module - requiresBuild: true dependencies: base-x: 3.0.9 buffer: 5.7.1 @@ -19574,7 +19018,6 @@ packages: /multicodec@0.5.7: resolution: {integrity: sha512-PscoRxm3f+88fAtELwUnZxGDkduE2HD9Q6GHUOywQLjOGT/HAdhjLDYNZ1e7VR0s0TP0EwZ16LNUTFpoBGivOA==} deprecated: This module has been superseded by the multiformats module - requiresBuild: true dependencies: varint: 5.0.2 dev: true @@ -19583,7 +19026,6 @@ packages: /multicodec@1.0.4: resolution: {integrity: sha512-NDd7FeS3QamVtbgfvu5h7fd1IlbaC4EQ0/pgU4zqE2vdHCmBGsUa0TiM8/TdSeG6BMPC92OOCf8F1ocE/Wkrrg==} deprecated: This module has been superseded by the multiformats module - requiresBuild: true dependencies: buffer: 5.7.1 varint: 5.0.2 @@ -19595,7 +19037,6 @@ packages: /multihashes@0.4.21: resolution: {integrity: sha512-uVSvmeCWf36pU2nB4/1kzYZjsXD9vofZKpgudqkceYY5g2aZZXJ5r9lxuzoRLl1OAp28XljXsEJ/X/85ZsKmKw==} - requiresBuild: true dependencies: buffer: 5.7.1 multibase: 0.7.0 @@ -19619,13 +19060,12 @@ packages: thenify-all: 1.6.0 dev: true - /nan@2.17.0: - resolution: {integrity: sha512-2ZTgtl0nJsO0KQCjEpxcIr5D+Yv90plTitZt9JBfQvVJDS5seMl3FOvsh3+9CoYWXf/1l5OaZzzF6nDm4cagaQ==} + /nan@2.18.0: + resolution: {integrity: sha512-W7tfG7vMOGtD30sHoZSSc/JVYiyDPEyQVso/Zz+/uQd0B0L46gtC+pHha5FFMRpil6fm/AoEcRWyOVi4+E/f8w==} dev: true /nano-json-stream-parser@0.1.2: resolution: {integrity: sha512-9MqxMH/BSJC7dnLsEMPyfN5Dvoo49IsPFYMcHw3Bcfc2kN0lpHRBSzlMSVx4HGyJ7s9B31CyBTVehWJoQ8Ctew==} - requiresBuild: true dev: true optional: true @@ -19742,7 +19182,7 @@ packages: '@next/env': 13.5.4 '@swc/helpers': 0.5.2 busboy: 1.6.0 - caniuse-lite: 1.0.30001546 + caniuse-lite: 1.0.30001549 postcss: 8.4.31 react: 18.2.0 react-dom: 18.2.0(react@18.2.0) @@ -19816,12 +19256,12 @@ packages: react: 18.2.0 react-dom: 18.2.0(react@18.2.0) rehype-katex: 7.0.0 - rehype-pretty-code: 0.9.11(shiki@0.14.4) + rehype-pretty-code: 0.9.11(shiki@0.14.5) rehype-raw: 7.0.0 remark-gfm: 3.0.1 remark-math: 5.1.1 remark-reading-time: 2.0.1 - shiki: 0.14.4 + shiki: 0.14.5 slash: 3.0.0 title: 3.5.3 unist-util-remove: 4.0.0 @@ -19842,8 +19282,8 @@ packages: tslib: 2.4.1 dev: true - /node-abi@3.47.0: - resolution: {integrity: sha512-2s6B2CWZM//kPgwnuI0KrYwNjfdByE25zvAaEpq9IH4zcNsarH8Ihu/UuX6XMPEogDAxkuUFeZn60pXNHAqn3A==} + /node-abi@3.50.0: + resolution: {integrity: sha512-2Gxu7Eq7vnBIRfYSmqPruEllMM14FjOQFJSoqdGWthVn+tmwEXzmdPpya6cvvwf0uZA3F5N1fMFr9mijZBplFA==} engines: {node: '>=10'} dependencies: semver: 7.5.4 @@ -19946,7 +19386,7 @@ packages: glob: 7.2.3 lodash: 4.17.21 meow: 9.0.0 - nan: 2.17.0 + nan: 2.18.0 node-gyp: 8.4.1 npmlog: 5.0.1 request: 2.88.2 @@ -19971,7 +19411,7 @@ packages: resolution: {integrity: sha512-4GUt3kSEYmk4ITxzB/b9vaIDfUVWN/Ml1Fwl11IlnIG2iaJ9O6WXZ9SrYM9NLI8OCBieN2Y8SWC2oJV0RQ7qYg==} hasBin: true dependencies: - abbrev: 1.0.9 + abbrev: 1.1.1 dev: true /nopt@5.0.0: @@ -20014,14 +19454,12 @@ packages: /normalize-url@4.5.1: resolution: {integrity: sha512-9UZCFRHQdNrfTpGg8+1INIg93B6zE0aXMVFkw1WFwvO4SlZywU6aLg5Of0Ap/PgcbSw4LNxvMWXMeugwMCX0AA==} engines: {node: '>=8'} - requiresBuild: true dev: true optional: true /normalize-url@6.1.0: resolution: {integrity: sha512-DlL+XwOy3NxAQ8xuC0okPgK46iuVNAK01YN7RueYBqqFeGsBjV9XmCAzAdgt+667bCl5kPh9EqKKDwnaPG1I7A==} engines: {node: '>=10'} - requiresBuild: true dev: true optional: true @@ -20118,10 +19556,10 @@ packages: /object-inspect@1.12.3: resolution: {integrity: sha512-geUvdk7c+eizMNUDkRpW1wJwgfOiOeHbxBR/hLXK1aT6zmVSO0jsQcs7fj6MGw89jC/cjGfLcNOrtMYtGqm81g==} + dev: true /object-inspect@1.13.0: resolution: {integrity: sha512-HQ4J+ic8hKrgIt3mqk6cVOVrW2ozL4KdvHlqpBv9vDYWx9ysAgENAdvy4FoGF+KFdhR7nQTNm5J0ctAeOwn+3g==} - dev: true /object-is@1.1.5: resolution: {integrity: sha512-3cyDsyHgtmi7I7DfSSI2LDp6SK2lwvtbg0p0R1e0RvTqF5ceGx+K2dfSjm1bKDMVCFEDAQvy+o8c6a7VujOddw==} @@ -20218,7 +19656,6 @@ packages: /oboe@2.1.4: resolution: {integrity: sha512-ymBJ4xSC6GBXLT9Y7lirj+xbqBLa+jADGJldGEYG7u8sZbS9GyG+u1Xk9c5cbriKwSpCg41qUhPjvU5xOpvIyQ==} - requiresBuild: true dependencies: http-https: 1.0.0 dev: true @@ -20230,7 +19667,6 @@ packages: /on-finished@2.4.1: resolution: {integrity: sha512-oVlzkg3ENAhCk2zdv7IJwd/QUD4z2RxRwpkcGY8psCVcCYZNq4wYnVWALHM+brtuJjePWiYF/ClmuDr8Ch5+kg==} engines: {node: '>= 0.8'} - requiresBuild: true dependencies: ee-first: 1.1.1 dev: true @@ -20303,7 +19739,7 @@ packages: dependencies: chalk: 5.3.0 cli-cursor: 4.0.0 - cli-spinners: 2.9.0 + cli-spinners: 2.9.1 is-interactive: 2.0.0 is-unicode-supported: 1.3.0 log-symbols: 5.1.0 @@ -20332,14 +19768,12 @@ packages: /p-cancelable@1.1.0: resolution: {integrity: sha512-s73XxOZ4zpt1edZYZzvhqFa6uvQc1vwUa0K0BdtIZgQMAJj9IbebH+JkgKZc9h+B05PKHLOTl4ajG1BmNrVZlw==} engines: {node: '>=6'} - requiresBuild: true dev: true optional: true /p-cancelable@2.1.1: resolution: {integrity: sha512-BZOr3nRQHOntUjTrH8+Lh54smKHoHyur8We1V8DSMVrl5A2malOOwuJRnKRDjSnkoeBh4at6BwEnb5I7Jl31wg==} engines: {node: '>=8'} - requiresBuild: true dev: true optional: true @@ -20521,7 +19955,6 @@ packages: /parseurl@1.3.3: resolution: {integrity: sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ==} engines: {node: '>= 0.8'} - requiresBuild: true dev: true optional: true @@ -20647,7 +20080,6 @@ packages: /path-to-regexp@0.1.7: resolution: {integrity: sha512-5DFkuoqlv1uYQKxy8omFBeJPQcdoE07Kv2sferDCrAq1ohOU+MSDswDIbnx3YAM60qIOnYa53wBhXW0EbMonrQ==} - requiresBuild: true dev: true optional: true @@ -20690,9 +20122,9 @@ packages: /periscopic@3.1.0: resolution: {integrity: sha512-vKiQ8RRtkl9P+r/+oefh25C3fhybptkHKCZSPlcXiJux2tJF55GnEj3BVn4A5gKfq9NWWXXrxkHBwVPUfH0opw==} dependencies: - '@types/estree': 1.0.1 + '@types/estree': 1.0.2 estree-walker: 3.0.3 - is-reference: 3.0.1 + is-reference: 3.0.2 /picocolors@0.2.1: resolution: {integrity: sha512-cMlDqaLEqfSaW8Z7N5Jw+lyIW869EzT73/F5lhtY9cLGoVxSXznfgfXMO0Z5K0o0Q2TkTXq+0KFsdnSe3jDViA==} @@ -20834,17 +20266,7 @@ packages: postcss: 8.4.31 postcss-value-parser: 4.2.0 read-cache: 1.0.0 - resolve: 1.22.6 - dev: true - - /postcss-js@4.0.1(postcss@8.4.27): - resolution: {integrity: sha512-dDLF8pEO191hJMtlHFPRa8xsizHaM82MLfNkUHdUtVEV3tgTp5oj+8qbEqYM57SLfc74KSbw//4SeJma2LRVIw==} - engines: {node: ^12 || ^14 || >= 16} - peerDependencies: - postcss: ^8.4.21 - dependencies: - camelcase-css: 2.0.1 - postcss: 8.4.27 + resolve: 1.22.8 dev: true /postcss-js@4.0.1(postcss@8.4.31): @@ -20865,7 +20287,7 @@ packages: import-cwd: 2.1.0 dev: true - /postcss-load-config@3.1.4(postcss@8.4.27): + /postcss-load-config@3.1.4(postcss@8.4.31): resolution: {integrity: sha512-6DiM4E7v4coTE4uzA8U//WhtPwyhiim3eyjEMFCnUpzbrkK9wJHgKDT2mR+HbtSrd/NubVaYTOpSpjUl8NQeRg==} engines: {node: '>= 10'} peerDependencies: @@ -20878,7 +20300,7 @@ packages: optional: true dependencies: lilconfig: 2.1.0 - postcss: 8.4.27 + postcss: 8.4.31 yaml: 1.10.2 dev: true @@ -20896,19 +20318,19 @@ packages: dependencies: lilconfig: 2.1.0 postcss: 8.4.31 - yaml: 2.3.2 + yaml: 2.3.3 dev: true - /postcss-loader@7.3.3(postcss@8.4.27)(typescript@4.9.5)(webpack@5.89.0): + /postcss-loader@7.3.3(postcss@8.4.31)(typescript@4.6.4)(webpack@5.89.0): resolution: {integrity: sha512-YgO/yhtevGO/vJePCQmTxiaEwER94LABZN0ZMT4A0vsak9TpO+RvKRs7EmJ8peIlB9xfXCsS7M8LjqncsUZ5HA==} engines: {node: '>= 14.15.0'} peerDependencies: postcss: ^7.0.0 || ^8.0.1 webpack: ^5.0.0 dependencies: - cosmiconfig: 8.3.4(typescript@4.9.5) - jiti: 1.19.3 - postcss: 8.4.27 + cosmiconfig: 8.3.6(typescript@4.6.4) + jiti: 1.20.0 + postcss: 8.4.31 semver: 7.5.4 webpack: 5.89.0(esbuild@0.15.13) transitivePeerDependencies: @@ -20976,13 +20398,13 @@ packages: postcss: 7.0.39 dev: true - /postcss-safe-parser@6.0.0(postcss@8.4.27): + /postcss-safe-parser@6.0.0(postcss@8.4.31): resolution: {integrity: sha512-FARHN8pwH+WiS2OPCxJI8FuRJpTVnn6ZNFiqAM2aeW2LwTHWWmWgIyKC6cUo0L8aeKiF/14MNvnpls6R2PBeMQ==} engines: {node: '>=12.0'} peerDependencies: postcss: ^8.3.3 dependencies: - postcss: 8.4.27 + postcss: 8.4.31 dev: true /postcss-selector-parser@6.0.13: @@ -21005,15 +20427,6 @@ packages: source-map: 0.6.1 dev: true - /postcss@8.4.27: - resolution: {integrity: sha512-gY/ACJtJPSmUFPDCHtX78+01fHa64FaU4zaaWfuh1MhGJISufJAH4cun6k/8fwsHYeK4UQmENQK+tRLCFJE8JQ==} - engines: {node: ^10 || ^12 || >=14} - dependencies: - nanoid: 3.3.6 - picocolors: 1.0.0 - source-map-js: 1.0.2 - dev: true - /postcss@8.4.31: resolution: {integrity: sha512-PS08Iboia9mts/2ygV3eLpY5ghnUcfLV/EXTOW1E2qYxJKGGBUtNjN76FYHnMs36RmARn41bC0AZmn+rR0OVpQ==} engines: {node: ^10 || ^12 || >=14} @@ -21027,8 +20440,8 @@ packages: requiresBuild: true dev: true - /preact@10.17.1: - resolution: {integrity: sha512-X9BODrvQ4Ekwv9GURm9AKAGaomqXmip7NQTZgY7gcNmr7XE83adOMJvd3N42id1tMFU7ojiynRsYnY6/BRFxLA==} + /preact@10.18.1: + resolution: {integrity: sha512-mKUD7RRkQQM6s7Rkmi7IFkoEHjuFqRQUaXamO61E6Nn7vqF/bo7EZCmSyrUnp2UWHw0O7XjZ2eeXis+m7tf4lg==} /preact@10.4.1: resolution: {integrity: sha512-WKrRpCSwL2t3tpOOGhf2WfTpcmbpxaWtDbdJdKdjd0aEiTkvOmS4NBkG6kzlaAHI9AkQ3iVqbFWM3Ei7mZ4o1Q==} @@ -21045,7 +20458,7 @@ packages: minimist: 1.2.8 mkdirp-classic: 0.5.3 napi-build-utils: 1.0.2 - node-abi: 3.47.0 + node-abi: 3.50.0 pump: 3.0.0 rc: 1.2.8 simple-get: 4.0.1 @@ -21071,7 +20484,6 @@ packages: /prepend-http@2.0.0: resolution: {integrity: sha512-ravE6m9Atw9Z/jjttRUZ+clIXogdghyZAuWJ3qEzjT+jI/dL1ifAqhZeC5VHzQp1MSt1+jxKkFNemj/iO7tVUA==} engines: {node: '>=4'} - requiresBuild: true dev: true optional: true @@ -21092,13 +20504,13 @@ packages: svelte: 3.53.1 dev: true - /prettier-plugin-svelte@3.0.0(prettier@3.0.0)(svelte@4.1.0): + /prettier-plugin-svelte@3.0.0(prettier@3.0.3)(svelte@4.1.0): resolution: {integrity: sha512-l3RQcPty2UBCoRh3yb9c5XCAmxkrc4BptAnbd5acO1gmSJtChOWkiEjnOvh7hvmtT4V80S8gXCOKAq8RNeIzSw==} peerDependencies: prettier: ^3.0.0 svelte: ^3.2.0 || ^4.0.0-next.0 dependencies: - prettier: 3.0.0 + prettier: 3.0.3 svelte: 4.1.0 dev: true @@ -21114,12 +20526,6 @@ packages: hasBin: true dev: true - /prettier@3.0.0: - resolution: {integrity: sha512-zBf5eHpwHOGPC47h0zrPyNn+eAEIdEzfywMoYn2XPi0P44Zp0tSq64rq0xAREh4auw2cJZHo9QUob+NqCQky4g==} - engines: {node: '>=14'} - hasBin: true - dev: true - /prettier@3.0.3: resolution: {integrity: sha512-L/4pUDMxcNa8R/EthV08Zt42WBO4h1rarVtK0K+QJG0X187OLo7l699jWw0GKuwzkPQ//jMFA/8Xm6Fh3J/DAg==} engines: {node: '>=14'} @@ -21231,7 +20637,6 @@ packages: /proxy-addr@2.0.7: resolution: {integrity: sha512-llQsMLSUDUPT44jdrU/O37qlnifitDP+ZwrmmZcoSKyLKvtZxpyV0n2/bD/N4tBAAZ/gJEdZU7KMraoK1+XYAg==} engines: {node: '>= 0.10'} - requiresBuild: true dependencies: forwarded: 0.2.0 ipaddr.js: 1.9.1 @@ -21309,7 +20714,6 @@ packages: /pump@3.0.0: resolution: {integrity: sha512-LwZy+p3SFs1Pytd/jYct4wpv49HiYCqd9Rlc5ZVdk0V+8Yzv6jR5Blk3TRmPL1ft69TxP0IMZGJ+WPFU2BFhww==} - requiresBuild: true dependencies: end-of-stream: 1.4.4 once: 1.4.0 @@ -21321,7 +20725,6 @@ packages: /punycode@2.1.0: resolution: {integrity: sha512-Yxz2kRwT90aPiWEMHVYnEf4+rhwF1tBmmZ4KepCP+Wkium9JxtWnUm1nqGwpiAHr/tnTSeHqr3wb++jgSkXjhA==} engines: {node: '>=6'} - requiresBuild: true dev: true /punycode@2.3.0: @@ -21356,7 +20759,6 @@ packages: /qs@6.11.0: resolution: {integrity: sha512-MvjoMCJwEarSbUYk5O+nmoSzSutSsTwF85zcHPQ9OrlFoZOYIjaqBAJIqIXjptyD5vThxGq52Xu/MaJzRkIk4Q==} engines: {node: '>=0.6'} - requiresBuild: true dependencies: side-channel: 1.0.4 dev: true @@ -21376,7 +20778,6 @@ packages: /query-string@5.1.1: resolution: {integrity: sha512-gjWOsm2SoGlgLEdAGt7a6slVOk9mGiXmPFMqrEhLQ68rhQuBnpfs3+EmlvqKyxnCo9/PPlF+9MtY02S1aFg+Jw==} engines: {node: '>=0.10.0'} - requiresBuild: true dependencies: decode-uri-component: 0.2.2 object-assign: 4.1.1 @@ -21451,14 +20852,12 @@ packages: /range-parser@1.2.1: resolution: {integrity: sha512-Hrgsx+orqoygnmhFbKaHE6c296J+HTAQXoxEF6gNupROmmGJRoyzfG3ccAveqCBrwr/2yxQ5BVd/GTl5agOwSg==} engines: {node: '>= 0.6'} - requiresBuild: true dev: true optional: true /raw-body@2.5.1: resolution: {integrity: sha512-qqJBtEyVgS0ZmPGdCFPWJ3FreoqvG4MVQln/kCgF7Olq95IbOp0/BWyMwbdtn4VTvkM8Y7khCQ2Xgk/tcrCXig==} engines: {node: '>= 0.8'} - requiresBuild: true dependencies: bytes: 3.1.2 http-errors: 2.0.0 @@ -21543,7 +20942,7 @@ packages: resolution: {integrity: sha512-Ug69mNOpfvKDAc2Q8DRpMjjzdtrnv9HcSMX+4VsZxD1aZ6ZzrIE7rlzXBtWTyhULSMKg076AW6WR5iZpD0JiOg==} engines: {node: '>=8'} dependencies: - '@types/normalize-package-data': 2.4.1 + '@types/normalize-package-data': 2.4.2 normalize-package-data: 2.5.0 parse-json: 5.2.0 type-fest: 0.6.0 @@ -21558,15 +20957,6 @@ packages: string_decoder: 0.10.31 dev: true - /readable-stream@1.1.14: - resolution: {integrity: sha512-+MeVjFf4L44XUkhM1eYbD8fyEsxcV81pqMSR5gblfcLCHfZvbrqy4/qYHE+/R5HoBUT11WV5O08Cr1n3YXkWVQ==} - dependencies: - core-util-is: 1.0.3 - inherits: 2.0.4 - isarray: 0.0.1 - string_decoder: 0.10.31 - dev: true - /readable-stream@2.3.8: resolution: {integrity: sha512-8p0AUk4XODgIewSi0l8Epjs+EVnWiK7NoDIEGU0HhE7+ZyY8D1IMY7odu5lRrFXGg71L15KG8QrPmum45RTtdA==} dependencies: @@ -21636,8 +21026,8 @@ packages: engines: {node: '>=6'} dev: true - /regenerate-unicode-properties@10.1.0: - resolution: {integrity: sha512-d1VudCLoIGitcU/hEg2QqvyGZQmdC0Lf8BqdOMXGFSvJP4bNV1+XqbPQeHHLD51Jh4QJJ225dlIFvY4Ly6MXmQ==} + /regenerate-unicode-properties@10.1.1: + resolution: {integrity: sha512-X007RyZLsCJVVrjgEFVpLUTZwyOZk3oiL75ZcuYjlIWd6rNJtOjkBwQc5AsRrpbKVkxN6sklw/k/9m2jJYOf8Q==} engines: {node: '>=4'} dependencies: regenerate: 1.4.2 @@ -21665,7 +21055,7 @@ packages: /regenerator-transform@0.15.2: resolution: {integrity: sha512-hfMp2BoF0qOk3uc5V20ALGDS2ddjQaLrdl7xrGXvAIow7qeWRM2VA2HuCHkUKk9slq3VwEwLNK3DFBqDfPGYtg==} dependencies: - '@babel/runtime': 7.22.15 + '@babel/runtime': 7.23.2 dev: true /regex-not@1.0.2: @@ -21709,7 +21099,7 @@ packages: dependencies: '@babel/regjsgen': 0.8.0 regenerate: 1.4.2 - regenerate-unicode-properties: 10.1.0 + regenerate-unicode-properties: 10.1.1 regjsparser: 0.9.1 unicode-match-property-ecmascript: 2.0.0 unicode-match-property-value-ecmascript: 2.1.0 @@ -21745,7 +21135,7 @@ packages: vfile: 6.0.1 dev: false - /rehype-pretty-code@0.9.11(shiki@0.14.4): + /rehype-pretty-code@0.9.11(shiki@0.14.5): resolution: {integrity: sha512-Eq90eCYXQJISktfRZ8PPtwc5SUyH6fJcxS8XOMnHPUQZBtC6RYo67gGlley9X2nR8vlniPj0/7oCDEYHKQa/oA==} engines: {node: '>=16'} peerDependencies: @@ -21754,7 +21144,7 @@ packages: '@types/hast': 2.3.6 hash-obj: 4.0.0 parse-numeric-range: 1.3.0 - shiki: 0.14.4 + shiki: 0.14.5 dev: false /rehype-raw@7.0.0: @@ -21934,7 +21324,6 @@ packages: /resolve-alpn@1.2.1: resolution: {integrity: sha512-0a1F4l73/ZFZOakJnQ3FvkJ2+gSTQWz/r2KE5OdDY0TxPm5h4GkqkWWfM47T7HsbnOtcJVEF4epCVy6u7Q3K+g==} - requiresBuild: true dev: true optional: true @@ -21978,19 +21367,11 @@ packages: resolution: {integrity: sha512-9znBF0vBcaSN3W2j7wKvdERPwqTxSpCq+if5C0WoTCyV9n24rua28jeuQ2pL/HOf+yUe/Mef+H/5p60K0Id3bg==} dev: true - /resolve@1.17.0: - resolution: {integrity: sha512-ic+7JYiV8Vi2yzQGFWOkiZD5Z9z7O2Zhm9XMaTxdJExKasieFCr+yXZ/WmXsckHiKl12ar0y6XiXDx3m4RHn1w==} - dependencies: - path-parse: 1.0.7 - dev: true - - /resolve@1.22.6: - resolution: {integrity: sha512-njhxM7mV12JfufShqGy3Rz8j11RPdLy4xi15UurGJeoHLfJpVXKdh3ueuOqbYUcDZnffr6X739JBo5LzyahEsw==} - hasBin: true + /resolve@1.17.0: + resolution: {integrity: sha512-ic+7JYiV8Vi2yzQGFWOkiZD5Z9z7O2Zhm9XMaTxdJExKasieFCr+yXZ/WmXsckHiKl12ar0y6XiXDx3m4RHn1w==} dependencies: - is-core-module: 2.13.0 path-parse: 1.0.7 - supports-preserve-symlinks-flag: 1.0.0 + dev: true /resolve@1.22.8: resolution: {integrity: sha512-oKWePCxqpd6FlLvGV1VU0x7bkPmmCNolxzjMf4NczoDnQcIWrAF+cPtZn5i6n+RfD2d9i0tzpKnG6Yk168yIyw==} @@ -21999,11 +21380,9 @@ packages: is-core-module: 2.13.0 path-parse: 1.0.7 supports-preserve-symlinks-flag: 1.0.0 - dev: true /responselike@1.0.2: resolution: {integrity: sha512-/Fpe5guzJk1gPqdJLJR5u7eG/gNY4nImjbRDaVWVMRhne55TCmj2i9Q+54PBRfatRC8v/rIiv9BN0pMd9OV5EQ==} - requiresBuild: true dependencies: lowercase-keys: 1.0.1 dev: true @@ -22011,7 +21390,6 @@ packages: /responselike@2.0.1: resolution: {integrity: sha512-4gl03wn3hj1HP3yzgdI7d3lCkF95F21Pz4BPGvKHinyQzALR5CapwC8yIi0Rh58DEMQ/SguC03wFj2k0M/mHhw==} - requiresBuild: true dependencies: lowercase-keys: 2.0.0 dev: true @@ -22105,8 +21483,8 @@ packages: fsevents: 2.3.3 dev: true - /rollup@3.29.2: - resolution: {integrity: sha512-CJouHoZ27v6siztc21eEQGo0kIcE5D1gVPA571ez0mMYb25LGYGKnVNXpEj5MGlepmDWGXNjDB5q7uNiPHC11A==} + /rollup@3.29.4: + resolution: {integrity: sha512-oWzmBZwvYrU0iJHtDmhsm662rC15FRXmcjCk1xD771dFDx5jJ02ufAQQTn0etB2emNk4J9EZg/yWKpsn9BWGRw==} engines: {node: '>=14.18.0', npm: '>=8.0.0'} hasBin: true optionalDependencies: @@ -22116,12 +21494,12 @@ packages: /rpc-websockets@7.6.0: resolution: {integrity: sha512-Jgcs8q6t8Go98dEulww1x7RysgTkzpCMelVxZW4hvuyFtOGpeUz9prpr2KjUa/usqxgFCd9Tu3+yhHEP9GVmiQ==} dependencies: - '@babel/runtime': 7.22.15 + '@babel/runtime': 7.23.2 eventemitter3: 4.0.7 uuid: 8.3.2 - ws: 8.14.2(bufferutil@4.0.7)(utf-8-validate@5.0.10) + ws: 8.14.2(bufferutil@4.0.8)(utf-8-validate@5.0.10) optionalDependencies: - bufferutil: 4.0.7 + bufferutil: 4.0.8 utf-8-validate: 5.0.10 /rrweb-cssom@0.6.0: @@ -22164,7 +21542,7 @@ packages: /rxjs@7.8.1: resolution: {integrity: sha512-AA3TVj+0A2iuIoQkWEK/tqFjBq2j+6PO6Y0zJcvzLAFhEFIO3HL0vls9hWLncZbAAbK0mar7oZ4V079I/qPMxg==} dependencies: - tslib: 2.6.2 + tslib: 2.4.1 dev: true /sade@1.8.1: @@ -22240,8 +21618,8 @@ packages: yargs: 17.7.2 dev: true - /sass@1.66.1: - resolution: {integrity: sha512-50c+zTsZOJVgFfTgwwEzkjA3/QACgdNsKueWPyAR0mRINIvLAStVQBbPg14iuqEQ74NPDbXzJARJ/O4SI1zftA==} + /sass@1.69.3: + resolution: {integrity: sha512-X99+a2iGdXkdWn1akFPs0ZmelUzyAQfvqYc2P/MPTrJRuIRoTffGzT9W9nFqG00S+c8hXzVmgxhUuHFdrwxkhQ==} engines: {node: '>=14.0.0'} hasBin: true dependencies: @@ -22310,7 +21688,6 @@ packages: /scryptsy@1.2.1: resolution: {integrity: sha512-aldIRgMozSJ/Gl6K6qmJZysRP82lz83Wb42vl4PWN8SaLFHIaOzLPc9nUUW2jQN88CuGm5q5HefJ9jZ3nWSmTw==} - requiresBuild: true dependencies: pbkdf2: 3.1.2 dev: true @@ -22378,7 +21755,6 @@ packages: /send@0.18.0: resolution: {integrity: sha512-qqWzuOjSFOuqPjFe4NOsMLafToQQwBSOEpS+FwEt3A2V3vKubTquT3vmLTQpFgMXp8AlFWFuP1qKaJZOtPpVXg==} engines: {node: '>= 0.8.0'} - requiresBuild: true dependencies: debug: 2.6.9 depd: 2.0.0 @@ -22421,7 +21797,6 @@ packages: /serve-static@1.15.0: resolution: {integrity: sha512-XGuRDNjXUijsUL0vl6nSD7cwURuzEgglbOaFuZM9g3kwDXOWVTck0jLzjPzGD+TazWbboZYu52/9/XPdUgne9g==} engines: {node: '>= 0.8.0'} - requiresBuild: true dependencies: encodeurl: 1.0.2 escape-html: 1.0.3 @@ -22435,7 +21810,6 @@ packages: /servify@0.1.12: resolution: {integrity: sha512-/xE6GvsKKqyo1BAY+KxOWXcLpPsUUyji7Qg3bVD7hh1eRze5bR1uYiuDA/k3Gof1s9BTzQZEJK8sNcNGFIzeWw==} engines: {node: '>=6'} - requiresBuild: true dependencies: body-parser: 1.20.2 cors: 2.8.5 @@ -22546,8 +21920,8 @@ packages: rechoir: 0.6.2 dev: true - /shiki@0.14.4: - resolution: {integrity: sha512-IXCRip2IQzKwxArNNq1S+On4KPML3Yyn8Zzs/xRgcgOWIr8ntIK3IKzjFPfjy/7kt9ZMjc+FItfqHRBg8b6tNQ==} + /shiki@0.14.5: + resolution: {integrity: sha512-1gCAYOcmCFONmErGTrS1fjzJLA7MGZmKzrBNX7apqSwhyITJg2O102uFzXUeBxNnEkDA9vHIKLyeKq0V083vIw==} dependencies: ansi-sequence-parser: 1.1.1 jsonc-parser: 3.2.0 @@ -22560,7 +21934,7 @@ packages: dependencies: call-bind: 1.0.2 get-intrinsic: 1.2.1 - object-inspect: 1.12.3 + object-inspect: 1.13.0 /siginfo@2.0.0: resolution: {integrity: sha512-ybx0WO1/8bSBLEWXZvEd7gMW3Sn3JFlW3TvX1nREbDLRNQNaeNN8WK0meBwPdAaOI7TtRRRJn/Es1zhrrCHu7g==} @@ -22576,11 +21950,9 @@ packages: /simple-concat@1.0.1: resolution: {integrity: sha512-cSFtAPtRhljv69IK0hTVZQ+OfE9nePi/rtJmw5UjHeVyVroEqJXP1sFztKUy1qU+xvz3u/sfYJLa947b7nAN2Q==} - requiresBuild: true /simple-get@2.8.2: resolution: {integrity: sha512-Ijd/rV5o+mSBBs4F/x9oDPtTx9Zb6X9brmnXvMW4J7IR15ngi9q5xxqWBKU744jTZiaXtxaPL7uHG6vtN8kUkw==} - requiresBuild: true dependencies: decompress-response: 3.3.0 once: 1.4.0 @@ -22606,7 +21978,7 @@ packages: resolution: {integrity: sha512-O9jm9BsID1P+0HOi81VpXPoDxYP374pkOLzACAoyUQ/3OUVndNpsz6wMnY2z+yOxzbllCKZrM+9QrWsv4THnyA==} engines: {node: '>= 10'} dependencies: - '@polka/url': 1.0.0-next.21 + '@polka/url': 1.0.0-next.23 mrmime: 1.0.1 totalist: 3.0.1 dev: true @@ -22901,7 +22273,7 @@ packages: resolution: {integrity: sha512-kN9dJbvnySHULIluDHy32WHRUu3Og7B9sbY7tsFLctQkIqnMh3hErYgdMjTYuqmcXX+lK5T1lnUt3G7zNswmZA==} dependencies: spdx-expression-parse: 3.0.1 - spdx-license-ids: 3.0.13 + spdx-license-ids: 3.0.16 dev: true /spdx-exceptions@2.3.0: @@ -22912,11 +22284,11 @@ packages: resolution: {integrity: sha512-cbqHunsQWnJNE6KhVSMsMeH5H/L9EpymbzqTQ3uLwNCLZ1Q481oWaofqH7nO6V07xlXwY6PhQdQ2IedWx/ZK4Q==} dependencies: spdx-exceptions: 2.3.0 - spdx-license-ids: 3.0.13 + spdx-license-ids: 3.0.16 dev: true - /spdx-license-ids@3.0.13: - resolution: {integrity: sha512-XkD+zwiqXHikFZm4AX/7JSCXA98U5Db4AFd5XUg/+9UNtnH75+Z9KxtpYiJZx36mUDVOwH83pl7yvCer6ewM3w==} + /spdx-license-ids@3.0.16: + resolution: {integrity: sha512-eWN+LnM3GR6gPu35WxNgbGl8rmY1AEmoMDvL/QD6zYmPWgywxWqJWNdLGT+ke8dKNWrcYgYjPpG5gbTfghP8rw==} dev: true /split-on-first@1.1.0: @@ -23038,7 +22410,6 @@ packages: /strict-uri-encode@1.1.0: resolution: {integrity: sha512-R3f198pcvnB+5IpnBlRkphuE9n46WyVl8I39W/ZUTZLz4nqSP/oLYUrcnJrw462Ds8he4YKMov2efsTIw1BDGQ==} engines: {node: '>=0.10.0'} - requiresBuild: true dev: true optional: true @@ -23245,8 +22616,8 @@ packages: acorn: 8.10.0 dev: true - /style-to-object@0.4.2: - resolution: {integrity: sha512-1JGpfPB3lo42ZX8cuPrheZbfQ6kqPPnPHlKMyeRYtfKD+0jG+QsXgXN57O/dvJlzlB2elI6dGmrPnl5VPQFPaA==} + /style-to-object@0.4.4: + resolution: {integrity: sha512-HYNoHZa2GorYNyqiCaBgsxvcJIn7OHq6inEga+E6Ke3m5JkoqpQbnFssk4jwe+K7AhGa2fcha4wSOf1Kn01dMg==} dependencies: inline-style-parser: 0.1.1 dev: false @@ -23350,7 +22721,7 @@ packages: resolution: {integrity: sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==} engines: {node: '>= 0.4'} - /svelte-check@2.8.0(@babel/core@7.23.2)(node-sass@7.0.1)(postcss@8.4.27)(svelte@3.53.1): + /svelte-check@2.8.0(@babel/core@7.23.2)(node-sass@7.0.1)(postcss@8.4.31)(svelte@3.53.1): resolution: {integrity: sha512-HRL66BxffMAZusqe5I5k26mRWQ+BobGd9Rxm3onh7ZVu0nTk8YTKJ9vu3LVPjUGLU9IX7zS+jmwPVhJYdXJ8vg==} hasBin: true peerDependencies: @@ -23363,8 +22734,8 @@ packages: picocolors: 1.0.0 sade: 1.8.1 svelte: 3.53.1 - svelte-preprocess: 4.10.7(@babel/core@7.23.2)(node-sass@7.0.1)(postcss@8.4.27)(svelte@3.53.1)(typescript@4.9.5) - typescript: 4.9.5 + svelte-preprocess: 4.10.7(@babel/core@7.23.2)(node-sass@7.0.1)(postcss@8.4.31)(svelte@3.53.1)(typescript@5.2.2) + typescript: 5.2.2 transitivePeerDependencies: - '@babel/core' - coffeescript @@ -23378,7 +22749,7 @@ packages: - sugarss dev: true - /svelte-check@3.4.6(postcss@8.4.27)(svelte@4.1.0): + /svelte-check@3.4.6(postcss@8.4.31)(svelte@4.1.0): resolution: {integrity: sha512-OBlY8866Zh1zHQTkBMPS6psPi7o2umTUyj6JWm4SacnIHXpWFm658pG32m3dKvKFL49V4ntAkfFHKo4ztH07og==} hasBin: true peerDependencies: @@ -23391,8 +22762,8 @@ packages: picocolors: 1.0.0 sade: 1.8.1 svelte: 4.1.0 - svelte-preprocess: 5.0.4(postcss@8.4.27)(svelte@4.1.0)(typescript@5.1.6) - typescript: 5.1.6 + svelte-preprocess: 5.0.4(postcss@8.4.31)(svelte@4.1.0)(typescript@5.2.2) + typescript: 5.2.2 transitivePeerDependencies: - '@babel/core' - coffeescript @@ -23500,7 +22871,61 @@ packages: svelte-hmr: 0.14.12(svelte@3.53.1) dev: true - /svelte-preprocess@4.10.7(@babel/core@7.23.2)(node-sass@7.0.1)(postcss@8.4.27)(svelte@3.53.1)(typescript@4.9.5): + /svelte-preprocess@4.10.7(@babel/core@7.23.2)(node-sass@7.0.1)(postcss@8.4.31)(svelte@3.53.1)(typescript@4.6.4): + resolution: {integrity: sha512-sNPBnqYD6FnmdBrUmBCaqS00RyCsCpj2BG58A1JBswNF7b0OKviwxqVrOL/CKyJrLSClrSeqQv5BXNg2RUbPOw==} + engines: {node: '>= 9.11.2'} + requiresBuild: true + peerDependencies: + '@babel/core': ^7.10.2 + coffeescript: ^2.5.1 + less: ^3.11.3 || ^4.0.0 + node-sass: '*' + postcss: ^7 || ^8 + postcss-load-config: ^2.1.0 || ^3.0.0 || ^4.0.0 + pug: ^3.0.0 + sass: ^1.26.8 + stylus: ^0.55.0 + sugarss: ^2.0.0 + svelte: ^3.23.0 + typescript: ^3.9.5 || ^4.0.0 + peerDependenciesMeta: + '@babel/core': + optional: true + coffeescript: + optional: true + less: + optional: true + node-sass: + optional: true + postcss: + optional: true + postcss-load-config: + optional: true + pug: + optional: true + sass: + optional: true + stylus: + optional: true + sugarss: + optional: true + typescript: + optional: true + dependencies: + '@babel/core': 7.23.2 + '@types/pug': 2.0.7 + '@types/sass': 1.45.0 + detect-indent: 6.1.0 + magic-string: 0.25.9 + node-sass: 7.0.1 + postcss: 8.4.31 + sorcery: 0.10.0 + strip-indent: 3.0.0 + svelte: 3.53.1 + typescript: 4.6.4 + dev: true + + /svelte-preprocess@4.10.7(@babel/core@7.23.2)(node-sass@7.0.1)(postcss@8.4.31)(svelte@3.53.1)(typescript@5.2.2): resolution: {integrity: sha512-sNPBnqYD6FnmdBrUmBCaqS00RyCsCpj2BG58A1JBswNF7b0OKviwxqVrOL/CKyJrLSClrSeqQv5BXNg2RUbPOw==} engines: {node: '>= 9.11.2'} requiresBuild: true @@ -23542,19 +22967,19 @@ packages: optional: true dependencies: '@babel/core': 7.23.2 - '@types/pug': 2.0.6 + '@types/pug': 2.0.7 '@types/sass': 1.45.0 detect-indent: 6.1.0 magic-string: 0.25.9 node-sass: 7.0.1 - postcss: 8.4.27 + postcss: 8.4.31 sorcery: 0.10.0 strip-indent: 3.0.0 svelte: 3.53.1 - typescript: 4.9.5 + typescript: 5.2.2 dev: true - /svelte-preprocess@5.0.4(postcss@8.4.27)(svelte@4.1.0)(typescript@5.1.6): + /svelte-preprocess@5.0.4(postcss@8.4.31)(svelte@4.1.0)(typescript@5.2.2): resolution: {integrity: sha512-ABia2QegosxOGsVlsSBJvoWeXy1wUKSfF7SWJdTjLAbx/Y3SrVevvvbFNQqrSJw89+lNSsM58SipmZJ5SRi5iw==} engines: {node: '>= 14.10.0'} requiresBuild: true @@ -23592,14 +23017,14 @@ packages: typescript: optional: true dependencies: - '@types/pug': 2.0.6 + '@types/pug': 2.0.7 detect-indent: 6.1.0 magic-string: 0.27.0 - postcss: 8.4.27 + postcss: 8.4.31 sorcery: 0.11.0 strip-indent: 3.0.0 svelte: 4.1.0 - typescript: 5.1.6 + typescript: 5.2.2 dev: true /svelte-spa-router@3.2.0: @@ -23625,14 +23050,13 @@ packages: code-red: 1.0.4 css-tree: 2.3.1 estree-walker: 3.0.3 - is-reference: 3.0.1 + is-reference: 3.0.2 locate-character: 3.0.0 - magic-string: 0.30.3 + magic-string: 0.30.5 periscopic: 3.1.0 /swarm-js@0.1.42: resolution: {integrity: sha512-BV7c/dVlA3R6ya1lMlSSNPLYrntt0LUq4YMgy3iwpCIc6rZnS5W2wUoctarZ5pXlpKtxDDf9hNziEkcfrxdhqQ==} - requiresBuild: true dependencies: bluebird: 3.7.2 buffer: 5.7.1 @@ -23693,7 +23117,7 @@ packages: resolution: {integrity: sha512-Y4X9zqrCftUhMeH2EptSSERdVKt/nEdijTOacGD/97EKjhQ/Qs8RTlEGABSJNNN8lac9kheH+af7yAkEWlgneA==} engines: {node: '>=10.0.0'} dependencies: - ajv: 8.12.0 + ajv: 8.7.0 lodash.truncate: 4.4.2 slice-ansi: 4.0.0 string-width: 4.2.3 @@ -23725,7 +23149,7 @@ packages: postcss-load-config: 4.0.1(postcss@8.4.31) postcss-nested: 6.0.1(postcss@8.4.31) postcss-selector-parser: 6.0.13 - resolve: 1.22.6 + resolve: 1.22.8 sucrase: 3.34.0 transitivePeerDependencies: - ts-node @@ -23797,7 +23221,6 @@ packages: /tar@4.4.19: resolution: {integrity: sha512-a20gEsvHnWe0ygBY8JbxoM4w3SJdhc7ZAuxkLqh+nvNQN2IOt0B5lLgM490X5Hl8FF0dl0tOf2ewFYAlIFgzVA==} engines: {node: '>=4.5'} - requiresBuild: true dependencies: chownr: 1.1.4 fs-minipass: 1.2.7 @@ -23850,36 +23273,12 @@ packages: jest-worker: 27.5.1 schema-utils: 3.3.0 serialize-javascript: 6.0.1 - terser: 5.21.0 + terser: 5.22.0 webpack: 5.89.0(esbuild@0.15.13) dev: true - /terser-webpack-plugin@5.3.9(webpack@5.89.0): - resolution: {integrity: sha512-ZuXsqE07EcggTWQjXUj+Aot/OMcD0bMKGgF63f7UxYcu5/AJF53aIpK1YoP5xR9l6s/Hy2b+t1AM0bLNPRuhwA==} - engines: {node: '>= 10.13.0'} - peerDependencies: - '@swc/core': '*' - esbuild: '*' - uglify-js: '*' - webpack: ^5.1.0 - peerDependenciesMeta: - '@swc/core': - optional: true - esbuild: - optional: true - uglify-js: - optional: true - dependencies: - '@jridgewell/trace-mapping': 0.3.19 - jest-worker: 27.5.1 - schema-utils: 3.3.0 - serialize-javascript: 6.0.1 - terser: 5.21.0 - webpack: 5.89.0 - dev: true - - /terser@5.21.0: - resolution: {integrity: sha512-WtnFKrxu9kaoXuiZFSGrcAvvBqAdmKx0SFNmVNYdJamMu9yyN3I/QF0FbH4QcqJQ+y1CJnzxGIKH0cSj+FGYRw==} + /terser@5.22.0: + resolution: {integrity: sha512-hHZVLgRA2z4NWcN6aS5rQDc+7Dcy58HOf2zbYwmFcQ+ua3h6eEFf5lIDKTzbWwlazPyOZsFQO8V80/IjVNExEw==} engines: {node: '>=10'} hasBin: true dependencies: @@ -23979,7 +23378,6 @@ packages: /timed-out@4.0.1: resolution: {integrity: sha512-G7r3AhovYtr5YKOWQkta8RKAPb+J9IsO4uVmzjl8AZwfhs8UcUwTiD6gcJYSgOtzyjvQKrKYn41syHbUWMkafA==} engines: {node: '>=0.10.0'} - requiresBuild: true dev: true optional: true @@ -23997,8 +23395,8 @@ packages: globrex: 0.1.2 dev: false - /tinybench@2.5.0: - resolution: {integrity: sha512-kRwSG8Zx4tjF9ZiyH4bhaebu+EDz1BOx9hOigYHlUW4xxI/wKIUQUqo018UlU4ar6ATPBsaMrdbKZ+tmPdohFA==} + /tinybench@2.5.1: + resolution: {integrity: sha512-65NKvSuAVDP/n4CqH+a9w2kTlLReS9vhsAP06MWx+/89nMinJyB2icyl58RIcqCmIggpojIGeuJGhjU1aGMBSg==} dev: true /tinypool@0.5.0: @@ -24006,8 +23404,8 @@ packages: engines: {node: '>=14.0.0'} dev: true - /tinyspy@2.1.1: - resolution: {integrity: sha512-XPJL2uSzcOyBMky6OFrusqWlzfFrXtE0hPuMgW8A2HmaqrPo4ZQHRN/V0QXN3FSjKxpsbRrFc5LI7KOwBsT1/w==} + /tinyspy@2.2.0: + resolution: {integrity: sha512-d2eda04AN/cPOR89F7Xv5bK/jrQEhmcLFe6HFldoeO9AJtps+fqEnh486vnT/8y4bw38pSyxDcTCAq+Ks2aJTg==} engines: {node: '>=14.0.0'} dev: true @@ -24068,7 +23466,6 @@ packages: /to-readable-stream@1.0.0: resolution: {integrity: sha512-Iq25XBt6zD5npPhlLVXGFN3/gyR2/qODcKNNyTMd4vbm39HUaOiAM4PMq0eMVC/Tkxz+Zjdsc55g9yyz+Yq00Q==} engines: {node: '>=6'} - requiresBuild: true dev: true optional: true @@ -24173,31 +23570,13 @@ packages: resolution: {integrity: sha512-0z3j8R7MCjy10kc/g+qg7Ln3alJTodw9aDuVWZa3uiWqfuBMKeAeP2ocWcxoyM3D73yz3Jt/Pu4qPr4wHSdB/Q==} dev: true - /ts-api-utils@1.0.2(typescript@4.9.5): - resolution: {integrity: sha512-Cbu4nIqnEdd+THNEsBdkolnOXhg0I8XteoHaEKgvsxpsbWda4IsUut2c187HxywQCvveojow0Dgw/amxtSKVkQ==} - engines: {node: '>=16.13.0'} - peerDependencies: - typescript: '>=4.2.0' - dependencies: - typescript: 4.9.5 - dev: true - - /ts-api-utils@1.0.2(typescript@5.1.6): - resolution: {integrity: sha512-Cbu4nIqnEdd+THNEsBdkolnOXhg0I8XteoHaEKgvsxpsbWda4IsUut2c187HxywQCvveojow0Dgw/amxtSKVkQ==} - engines: {node: '>=16.13.0'} - peerDependencies: - typescript: '>=4.2.0' - dependencies: - typescript: 5.1.6 - dev: true - - /ts-api-utils@1.0.3(typescript@5.1.6): + /ts-api-utils@1.0.3(typescript@4.6.4): resolution: {integrity: sha512-wNMeqtMz5NtwpT/UZGY5alT+VoKdSsOOP/kqHFcUW1P/VRhH2wJ48+DN2WwUliNbQ976ETwDL0Ifd2VVvgonvg==} engines: {node: '>=16.13.0'} peerDependencies: typescript: '>=4.2.0' dependencies: - typescript: 5.1.6 + typescript: 4.6.4 dev: true /ts-api-utils@1.0.3(typescript@5.2.2): @@ -24254,7 +23633,7 @@ packages: chalk: 2.4.2 glob: 7.2.3 mkdirp: 0.5.6 - prettier: 2.8.8 + prettier: 2.7.1 resolve: 1.22.8 ts-essentials: 1.0.4 dev: true @@ -24268,10 +23647,10 @@ packages: peerDependencies: ts-jest: '>=20.0.0' dependencies: - ts-jest: 27.0.7(@babel/core@7.23.2)(@types/jest@27.5.2)(babel-jest@27.3.1)(jest@27.5.1)(typescript@4.9.5) + ts-jest: 27.0.7(@babel/core@7.23.2)(@types/jest@27.5.2)(babel-jest@27.3.1)(jest@27.5.1)(typescript@4.6.4) dev: true - /ts-jest@27.0.7(@babel/core@7.23.2)(@types/jest@27.5.2)(babel-jest@27.3.1)(jest@27.5.1)(typescript@4.9.5): + /ts-jest@27.0.7(@babel/core@7.23.2)(@types/jest@27.5.2)(babel-jest@27.3.1)(jest@27.5.1)(typescript@4.6.4): resolution: {integrity: sha512-O41shibMqzdafpuP+CkrOL7ykbmLh+FqQrXEmV9CydQ5JBk0Sj0uAEF5TNNe94fZWKm3yYvWa/IbyV4Yg1zK2Q==} engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0} hasBin: true @@ -24300,11 +23679,11 @@ packages: lodash.memoize: 4.1.2 make-error: 1.3.6 semver: 7.5.4 - typescript: 4.9.5 + typescript: 4.6.4 yargs-parser: 20.2.9 dev: true - /ts-loader@9.2.6(typescript@4.9.5)(webpack@5.89.0): + /ts-loader@9.2.6(typescript@4.6.4)(webpack@5.89.0): resolution: {integrity: sha512-QMTC4UFzHmu9wU2VHZEmWWE9cUajjfcdcws+Gh7FhiO+Dy0RnR1bNz0YCHqhI0yRowCE9arVnNxYHqELOy9Hjw==} engines: {node: '>=12.0.0'} peerDependencies: @@ -24315,7 +23694,7 @@ packages: enhanced-resolve: 5.15.0 micromatch: 4.0.5 semver: 7.5.4 - typescript: 4.9.5 + typescript: 4.6.4 webpack: 5.89.0(esbuild@0.15.13) dev: true @@ -24357,7 +23736,7 @@ packages: yn: 3.1.1 dev: true - /tsconfck@2.1.2(typescript@5.1.6): + /tsconfck@2.1.2(typescript@5.2.2): resolution: {integrity: sha512-ghqN1b0puy3MhhviwO2kGF8SeMDNhEbnKxjK7h6+fvY9JAxqvXi8y5NAHSQv687OVboS2uZIByzGd45/YxrRHg==} engines: {node: ^14.13.1 || ^16 || >=18} hasBin: true @@ -24367,7 +23746,7 @@ packages: typescript: optional: true dependencies: - typescript: 5.1.6 + typescript: 5.2.2 dev: true /tsconfig-paths@3.14.2: @@ -24382,28 +23761,25 @@ packages: /tslib@1.14.1: resolution: {integrity: sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==} - /tslib@2.4.0: - resolution: {integrity: sha512-d6xOpEDfsi2CZVlPQzGeux8XMwLT9hssAsaPYExaQMuYskwb+x1x7J371tWlbBdWHroy99KnVB6qIkUbs5X3UQ==} - dev: true - /tslib@2.4.1: resolution: {integrity: sha512-tGyy4dAjRIEwI7BzsB0lynWgOpfqjUdq91XXAlIWD2OwKBH7oCl/GZG/HT4BOHrTlPMOASlMQ7veyTqpmRcrNA==} /tslib@2.6.2: resolution: {integrity: sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==} + dev: true /tsort@0.0.1: resolution: {integrity: sha512-Tyrf5mxF8Ofs1tNoxA13lFeZ2Zrbd6cKbuH3V+MQ5sb6DtBj5FjrXVsRWT8YvNAQTqNoz66dz1WsbigI22aEnw==} dev: true - /tsutils@3.21.0(typescript@4.9.5): + /tsutils@3.21.0(typescript@4.6.4): resolution: {integrity: sha512-mHKK3iUXL+3UF6xL5k0PEhKRUBKPBCv/+RkEOpjRWxxx27KKRBmmA60A9pgOUvMi8GKhRMPEmjBRPzs2W7O1OA==} engines: {node: '>= 6'} peerDependencies: typescript: '>=2.8.0 || >= 3.2.0-dev || >= 3.3.0-dev || >= 3.4.0-dev || >= 3.5.0-dev || >= 3.6.0-dev || >= 3.6.0-beta || >= 3.7.0-dev || >= 3.7.0-beta' dependencies: tslib: 1.14.1 - typescript: 4.9.5 + typescript: 4.6.4 dev: true /tunnel-agent@0.6.0: @@ -24479,7 +23855,6 @@ packages: /type-is@1.6.18: resolution: {integrity: sha512-TkRKr9sUTxEH8MdfuCSP7VizJyzRNMjj2J2do2Jr3Kym598JVdEksuzPQCnlFPW4ky9Q+iA+ma9BGm06XQBy8g==} engines: {node: '>= 0.6'} - requiresBuild: true dependencies: media-typer: 0.3.0 mime-types: 2.1.35 @@ -24521,7 +23896,7 @@ packages: js-sha3: 0.8.0 lodash: 4.17.21 mkdirp: 1.0.4 - prettier: 2.8.8 + prettier: 2.7.1 ts-command-line-args: 2.5.1 ts-essentials: 7.0.3(typescript@5.2.2) typescript: 5.2.2 @@ -24576,21 +23951,15 @@ packages: resolution: {integrity: sha512-/aCDEGatGvZ2BIk+HmLf4ifCJFwvKFNb9/JeZPMulfgFracn9QFcAf5GO8B/mweUjSoblS5In0cWhqpfs/5PQA==} dev: true - /typescript@4.9.5: - resolution: {integrity: sha512-1FXk9E2Hm+QzZQ7z+McJiHL4NW1F2EzMu9Nq9i3zAaGqibafqYwCVU6WyWAuyQRRzOlxou8xZSyXLEN8oKj24g==} + /typescript@4.6.4: + resolution: {integrity: sha512-9ia/jWHIEbo49HfjrLGfKbZSuWo9iTMwXO+Ca3pRsSpbsMbc7/IU8NKdCZVRRBafVPGnoJeFL76ZOAA84I9fEg==} engines: {node: '>=4.2.0'} hasBin: true - /typescript@5.1.6: - resolution: {integrity: sha512-zaWCozRZ6DLEWAWFrVDz1H6FVXzUSfTy5FUMWsQlU8Ym5JP9eO4xkTIROFCQvhQf61z6O/G6ugw3SgAnvvm+HA==} - engines: {node: '>=14.17'} - hasBin: true - /typescript@5.2.2: resolution: {integrity: sha512-mI4WrpHsbCIcwT9cF4FZvr80QUeKvsUsUvKDoR+X/7XHQH98xYD8YHZg7ANtz2GtZt/CBq2QJ0thkGJMHfqc1w==} engines: {node: '>=14.17'} hasBin: true - dev: true /typewise-core@1.2.0: resolution: {integrity: sha512-2SCC/WLzj2SbUwzFOzqMCkz5amXLlxtJqDKTICqg30x+2DZxcfZN2MvQZmGfXWKNWaKK9pBPsvkcwv8bF/gxKg==} @@ -24620,8 +23989,8 @@ packages: engines: {node: '>=8'} dev: true - /ufo@1.3.0: - resolution: {integrity: sha512-bRn3CsoojyNStCZe0BG0Mt4Nr/4KF+rhFlnNXybgqt5pXHNFRlqinSoQaTrGyzE4X8aHplSb+TorH+COin9Yxw==} + /ufo@1.3.1: + resolution: {integrity: sha512-uY/99gMLIOlJPwATcMVYfqDSxUR9//AUcgZMzwfSTJPDKzA1S8mX4VLqa+fiAtveraQUBCz4FFcwVZBGbwBXIw==} dev: true /uglify-js@3.17.4: @@ -24639,7 +24008,6 @@ packages: /ultron@1.1.1: resolution: {integrity: sha512-UIEXBNeYmKptWH6z8ZnqTeS8fV74zG0/eRU9VGkpzz+LIJNs8W/zM/L+7ctCkRrgbNnnR0xxw4bKOr0cW0N0Og==} - requiresBuild: true dev: true optional: true @@ -24654,7 +24022,6 @@ packages: /underscore@1.9.1: resolution: {integrity: sha512-5/4etnCkd9c8gwgowi5/om/mYO5ajCaOgdzj/oW+0eQV9WxKBDZw5+ycmKmeaTXjInS/W0BzpGLo2xR2aBwZdg==} - requiresBuild: true dev: true optional: true @@ -24903,16 +24270,6 @@ packages: engines: {node: '>=8'} dev: true - /update-browserslist-db@1.0.11(browserslist@4.21.10): - resolution: {integrity: sha512-dCwEFf0/oT85M1fHBg4F0jtLwJrutGoHSQXCh7u4o2t1drG+c0a9Flnqww6XUKSfQMPpJBRjU8d4RXB09qtvaA==} - hasBin: true - peerDependencies: - browserslist: '>= 4.21.0' - dependencies: - browserslist: 4.21.10 - escalade: 3.1.1 - picocolors: 1.0.0 - /update-browserslist-db@1.0.13(browserslist@4.22.1): resolution: {integrity: sha512-xebP81SNcPuNpPP3uzeW1NYXxI3rxyJzF3pD6sH4jE7o/IX+WtSpwnVU+qIsDPyk0d3hmFQ7mjqc6AtV604hbg==} hasBin: true @@ -24922,7 +24279,6 @@ packages: browserslist: 4.22.1 escalade: 3.1.1 picocolors: 1.0.0 - dev: true /upper-case-first@2.0.2: resolution: {integrity: sha512-514ppYHBaKwfJRK/pNC6c/OxfGa0obSnAl106u97Ed0I625Nin96KAjttZF6ZL3e1XLtphxnqrOi9iWgm+u+bg==} @@ -24950,7 +24306,6 @@ packages: /url-parse-lax@3.0.0: resolution: {integrity: sha512-NjFKA0DidqPa5ciFcSrXnAltTtzz84ogy+NebPvfEgAck0+TNg4UJ4IN+fB7zRZfbgUf0syOo9MDxFkDSMuFaQ==} engines: {node: '>=4'} - requiresBuild: true dependencies: prepend-http: 2.0.0 dev: true @@ -24965,7 +24320,6 @@ packages: /url-set-query@1.0.0: resolution: {integrity: sha512-3AChu4NiXquPfeckE5R5cGdiHCMWJx1dwCWOmWIL4KHAziJNOFIYJlpGFeKDvwLPHovZRCxK3cYlwzqI9Vp+Gg==} - requiresBuild: true dev: true optional: true @@ -25030,7 +24384,6 @@ packages: /utils-merge@1.0.1: resolution: {integrity: sha512-pMZTvIkT1d+TFGvDOqodOclx0QWkkgi6Tdoa8gC8ffGAAqz9pzPTZWAybbsHHoED/ztMtkv/VoYTYyShUn81hA==} engines: {node: '>= 0.4.0'} - requiresBuild: true dev: true optional: true @@ -25038,7 +24391,6 @@ packages: resolution: {integrity: sha512-yXJmeNaw3DnnKAOKJE51sL/ZaYfWJRl1pK9dr19YFCu0ObS231AB1/LbqTKRAQ5kw8A90rA6fr4riOUpTZvQZA==} deprecated: Please upgrade to version 7 or higher. Older versions may use Math.random() in certain circumstances, which is known to be problematic. See https://v8.dev/blog/math-random for details. hasBin: true - requiresBuild: true dev: true optional: true @@ -25085,13 +24437,13 @@ packages: source-map: 0.7.4 dev: true - /v8-to-istanbul@9.1.0: - resolution: {integrity: sha512-6z3GW9x8G1gd+JIIgQQQxXuiJtCXeAjp6RaPEPLv62mH3iPHPxV6W3robxtCzNErRo6ZwTmzWhsbNvjyEBKzKA==} + /v8-to-istanbul@9.1.3: + resolution: {integrity: sha512-9lDD+EVI2fjFsMWXc6dy5JJzBsVTcQ2fVkfBvncZ6xJWG9wtBhOldG+mHkSL0+V1K/xgZz0JDO5UT5hFwHUghg==} engines: {node: '>=10.12.0'} dependencies: '@jridgewell/trace-mapping': 0.3.19 '@types/istanbul-lib-coverage': 2.0.4 - convert-source-map: 1.9.0 + convert-source-map: 2.0.0 dev: true /validate-npm-package-license@3.0.4: @@ -25114,12 +24466,15 @@ packages: react: 18.2.0 use-sync-external-store: 1.2.0(react@18.2.0) - /valtio@1.11.0(react@18.2.0): - resolution: {integrity: sha512-65Yd0yU5qs86b5lN1eu/nzcTgQ9/6YnD6iO+DDaDbQLn1Zv2w12Gwk43WkPlUBxk5wL/6cD5YMFf7kj6HZ1Kpg==} + /valtio@1.11.2(react@18.2.0): + resolution: {integrity: sha512-1XfIxnUXzyswPAPXo1P3Pdx2mq/pIqZICkWN60Hby0d9Iqb+MEIpqgYVlbflvHdrp2YR/q3jyKWRPJJ100yxaw==} engines: {node: '>=12.20.0'} peerDependencies: + '@types/react': '>=16.8' react: '>=16.8' peerDependenciesMeta: + '@types/react': + optional: true react: optional: true dependencies: @@ -25129,14 +24484,12 @@ packages: /varint@5.0.2: resolution: {integrity: sha512-lKxKYG6H03yCZUpAGOPOsMcGxd1RHCu1iKvEHYDPmTyq2HueGhD73ssNBqqQWfvYs04G9iUFRvmAVLW20Jw6ow==} - requiresBuild: true dev: true optional: true /vary@1.1.2: resolution: {integrity: sha512-BNGbWLfd0eUPabhkXUVm0j8uuvREyTh5ovRa/dyow/BqAbZJyC+5fU+IzQOzmAKzYqYRAISoRhdQr3eIZ/PXqg==} engines: {node: '>= 0.8'} - requiresBuild: true dev: true optional: true @@ -25159,7 +24512,7 @@ packages: /vfile-matter@3.0.1: resolution: {integrity: sha512-CAAIDwnh6ZdtrqAuxdElUqQRQDQgbbIrYtDYI8gCjXS1qQ+1XdLoK8FIZWxJwn0/I+BkSSZpar3SOgjemQz4fg==} dependencies: - '@types/js-yaml': 4.0.6 + '@types/js-yaml': 4.0.7 is-buffer: 2.0.5 js-yaml: 4.1.0 dev: false @@ -25195,7 +24548,7 @@ packages: vfile-message: 4.0.2 dev: false - /viem@0.3.50(typescript@4.9.5)(zod@3.22.2): + /viem@0.3.50(typescript@4.6.4)(zod@3.22.4): resolution: {integrity: sha512-s+LxCYZTR9F/qPk1/n1YDVAX9vSeVz7GraqBZWGrDuenCJxo9ArCoIceJ6ksI0WwSeNzcZ0VVbD/kWRzTxkipw==} dependencies: '@adraffy/ens-normalize': 1.9.0 @@ -25203,8 +24556,8 @@ packages: '@noble/hashes': 1.3.0 '@scure/bip32': 1.3.0 '@scure/bip39': 1.2.0 - '@wagmi/chains': 1.0.0(typescript@4.9.5) - abitype: 0.8.7(typescript@4.9.5)(zod@3.22.2) + '@wagmi/chains': 1.0.0(typescript@4.6.4) + abitype: 0.8.7(typescript@4.6.4)(zod@3.22.4) isomorphic-ws: 5.0.0(ws@8.12.0) ws: 8.12.0 transitivePeerDependencies: @@ -25214,7 +24567,7 @@ packages: - zod dev: true - /viem@0.3.50(typescript@5.1.6)(zod@3.22.2): + /viem@0.3.50(typescript@5.2.2)(zod@3.22.4): resolution: {integrity: sha512-s+LxCYZTR9F/qPk1/n1YDVAX9vSeVz7GraqBZWGrDuenCJxo9ArCoIceJ6ksI0WwSeNzcZ0VVbD/kWRzTxkipw==} dependencies: '@adraffy/ens-normalize': 1.9.0 @@ -25222,8 +24575,8 @@ packages: '@noble/hashes': 1.3.0 '@scure/bip32': 1.3.0 '@scure/bip39': 1.2.0 - '@wagmi/chains': 1.0.0(typescript@5.1.6) - abitype: 0.8.7(typescript@5.1.6)(zod@3.22.2) + '@wagmi/chains': 1.0.0(typescript@5.2.2) + abitype: 0.8.7(typescript@5.2.2)(zod@3.22.4) isomorphic-ws: 5.0.0(ws@8.12.0) ws: 8.12.0 transitivePeerDependencies: @@ -25254,30 +24607,6 @@ packages: - bufferutil - utf-8-validate - zod - dev: true - - /viem@1.4.1(typescript@5.1.6): - resolution: {integrity: sha512-MtaoBHDSJDqa+QyXKG5d+S6EQSebRO0tzw6anSP4zC7AbC614vMeg9Y8LbkmEkWCw8swFYkort+H9l7GkWB0uA==} - peerDependencies: - typescript: '>=5.0.4' - peerDependenciesMeta: - typescript: - optional: true - dependencies: - '@adraffy/ens-normalize': 1.9.0 - '@noble/curves': 1.0.0 - '@noble/hashes': 1.3.0 - '@scure/bip32': 1.3.0 - '@scure/bip39': 1.2.0 - '@wagmi/chains': 1.6.0(typescript@5.1.6) - abitype: 0.9.3(typescript@5.1.6) - isomorphic-ws: 5.0.0(ws@8.12.0) - typescript: 5.1.6 - ws: 8.12.0 - transitivePeerDependencies: - - bufferutil - - utf-8-validate - - zod /vite-node@0.32.2(@types/node@20.8.6): resolution: {integrity: sha512-dTQ1DCLwl2aEseov7cfQ+kDMNJpM1ebpyMMMwWzBvLbis8Nla/6c9WQcqpPssTwS6Rp/+U6KwlIj8Eapw4bLdA==} @@ -25314,7 +24643,7 @@ packages: vite: 3.2.7 dev: true - /vite-tsconfig-paths@4.2.1(typescript@5.1.6)(vite@4.4.9): + /vite-tsconfig-paths@4.2.1(typescript@5.2.2)(vite@4.4.9): resolution: {integrity: sha512-GNUI6ZgPqT3oervkvzU+qtys83+75N/OuDaQl7HmOqFTb0pjZsuARrRipsyJhJ3enqV8beI1xhGbToR4o78nSQ==} peerDependencies: vite: '*' @@ -25324,7 +24653,7 @@ packages: dependencies: debug: 4.3.4(supports-color@8.1.1) globrex: 0.1.2 - tsconfck: 2.1.2(typescript@5.1.6) + tsconfck: 2.1.2(typescript@5.2.2) vite: 4.4.9(@types/node@20.8.6) transitivePeerDependencies: - supports-color @@ -25356,9 +24685,9 @@ packages: terser: optional: true dependencies: - esbuild: 0.15.13 - postcss: 8.4.27 - resolve: 1.22.6 + esbuild: 0.15.18 + postcss: 8.4.31 + resolve: 1.22.8 rollup: 2.79.1 optionalDependencies: fsevents: 2.3.3 @@ -25394,16 +24723,16 @@ packages: dependencies: '@types/node': 20.8.6 esbuild: 0.18.20 - postcss: 8.4.27 - rollup: 3.29.2 + postcss: 8.4.31 + rollup: 3.29.4 optionalDependencies: fsevents: 2.3.3 dev: true - /vitefu@0.2.4(vite@4.4.9): - resolution: {integrity: sha512-fanAXjSaf9xXtOOeno8wZXIhgia+CZury481LsDaV++lSvcU2R9Ch2bPh3PYFyoHW+w9LqAeYRISVQjUIew14g==} + /vitefu@0.2.5(vite@4.4.9): + resolution: {integrity: sha512-SgHtMLoqaeeGnd2evZ849ZbACbnwQCIwRH57t18FxcXoZop0uQu0uzlIhJBlF/eWVzuce0sHeqPcDo+evVcg8Q==} peerDependencies: - vite: ^3.0.0 || ^4.0.0 + vite: ^3.0.0 || ^4.0.0 || ^5.0.0 peerDependenciesMeta: vite: optional: true @@ -25470,12 +24799,12 @@ packages: debug: 4.3.4(supports-color@8.1.1) jsdom: 22.1.0 local-pkg: 0.4.3 - magic-string: 0.30.3 + magic-string: 0.30.5 pathe: 1.1.1 picocolors: 1.0.0 std-env: 3.4.3 strip-literal: 1.3.0 - tinybench: 2.5.0 + tinybench: 2.5.1 tinypool: 0.5.0 vite: 4.4.9(@types/node@20.8.6) vite-node: 0.32.2(@types/node@20.8.6) @@ -25529,7 +24858,7 @@ packages: vue-hot-reload-api: 2.3.4 vue-style-loader: 4.1.3 vue-template-compiler: 2.7.14 - webpack: 5.89.0 + webpack: 5.89.0(esbuild@0.15.13) transitivePeerDependencies: - arc-templates - atpl @@ -25640,7 +24969,7 @@ packages: xml-name-validator: 4.0.0 dev: true - /wagmi@0.12.16(debug@4.3.4)(ethers@5.7.2)(react@18.2.0)(typescript@4.9.5): + /wagmi@0.12.16(debug@4.3.4)(ethers@5.7.1)(react@18.2.0)(typescript@4.6.4): resolution: {integrity: sha512-ZnQYC7wkcxNrfIZ+8LIYIXaEmnih8n4aUBZ5J+YI6QwnAWfo80jI79Z5F0BBML6wG7PYP2iIzMbIlnDIfx67uQ==} peerDependencies: ethers: '>=5.5.1 <6' @@ -25650,14 +24979,14 @@ packages: typescript: optional: true dependencies: - '@tanstack/query-sync-storage-persister': 4.33.0 - '@tanstack/react-query': 4.33.0(react@18.2.0) - '@tanstack/react-query-persist-client': 4.33.0(@tanstack/react-query@4.33.0) - '@wagmi/core': 0.10.14(debug@4.3.4)(ethers@5.7.2)(react@18.2.0)(typescript@4.9.5) - abitype: 0.3.0(typescript@4.9.5) - ethers: 5.7.2 + '@tanstack/query-sync-storage-persister': 4.36.1 + '@tanstack/react-query': 4.36.1(react@18.2.0) + '@tanstack/react-query-persist-client': 4.36.1(@tanstack/react-query@4.36.1) + '@wagmi/core': 0.10.14(debug@4.3.4)(ethers@5.7.1)(react@18.2.0)(typescript@4.6.4) + abitype: 0.3.0(typescript@4.6.4) + ethers: 5.7.1 react: 18.2.0 - typescript: 4.9.5 + typescript: 4.6.4 use-sync-external-store: 1.2.0(react@18.2.0) transitivePeerDependencies: - '@react-native-async-storage/async-storage' @@ -25708,7 +25037,6 @@ packages: /web3-bzz@1.2.11: resolution: {integrity: sha512-XGpWUEElGypBjeFyUhTkiPXFbDVD6Nr/S5jznE3t8cWUA0FxRf1n3n/NuIZeb0H9RkN2Ctd/jNma/k8XGa3YKg==} engines: {node: '>=8.0.0'} - requiresBuild: true dependencies: '@types/node': 12.20.55 got: 9.6.0 @@ -25724,7 +25052,6 @@ packages: /web3-core-helpers@1.2.11: resolution: {integrity: sha512-PEPoAoZd5ME7UfbnCZBdzIerpe74GEvlwT4AjOmHeCVZoIFk7EqvOZDejJHt+feJA6kMVTdd0xzRNN295UhC1A==} engines: {node: '>=8.0.0'} - requiresBuild: true dependencies: underscore: 1.9.1 web3-eth-iban: 1.2.11 @@ -25735,7 +25062,6 @@ packages: /web3-core-method@1.2.11: resolution: {integrity: sha512-ff0q76Cde94HAxLDZ6DbdmKniYCQVtvuaYh+rtOUMB6kssa5FX0q3vPmixi7NPooFnbKmmZCM6NvXg4IreTPIw==} engines: {node: '>=8.0.0'} - requiresBuild: true dependencies: '@ethersproject/transactions': 5.7.0 underscore: 1.9.1 @@ -25749,7 +25075,6 @@ packages: /web3-core-promievent@1.2.11: resolution: {integrity: sha512-il4McoDa/Ox9Agh4kyfQ8Ak/9ABYpnF8poBLL33R/EnxLsJOGQG2nZhkJa3I067hocrPSjEdlPt/0bHXsln4qA==} engines: {node: '>=8.0.0'} - requiresBuild: true dependencies: eventemitter3: 4.0.4 dev: true @@ -25758,7 +25083,6 @@ packages: /web3-core-requestmanager@1.2.11: resolution: {integrity: sha512-oFhBtLfOiIbmfl6T6gYjjj9igOvtyxJ+fjS+byRxiwFJyJ5BQOz4/9/17gWR1Cq74paTlI7vDGxYfuvfE/mKvA==} engines: {node: '>=8.0.0'} - requiresBuild: true dependencies: underscore: 1.9.1 web3-core-helpers: 1.2.11 @@ -25773,7 +25097,6 @@ packages: /web3-core-subscriptions@1.2.11: resolution: {integrity: sha512-qEF/OVqkCvQ7MPs1JylIZCZkin0aKK9lDxpAtQ1F8niEDGFqn7DT8E/vzbIa0GsOjL2fZjDhWJsaW+BSoAW1gg==} engines: {node: '>=8.0.0'} - requiresBuild: true dependencies: eventemitter3: 4.0.4 underscore: 1.9.1 @@ -25784,7 +25107,6 @@ packages: /web3-core@1.2.11: resolution: {integrity: sha512-CN7MEYOY5ryo5iVleIWRE3a3cZqVaLlIbIzDPsvQRUfzYnvzZQRZBm9Mq+ttDi2STOOzc1MKylspz/o3yq/LjQ==} engines: {node: '>=8.0.0'} - requiresBuild: true dependencies: '@types/bn.js': 4.11.6 '@types/node': 12.20.55 @@ -25801,7 +25123,6 @@ packages: /web3-eth-abi@1.2.11: resolution: {integrity: sha512-PkRYc0+MjuLSgg03QVWqWlQivJqRwKItKtEpRUaxUAeLE7i/uU39gmzm2keHGcQXo3POXAbOnMqkDvOep89Crg==} engines: {node: '>=8.0.0'} - requiresBuild: true dependencies: '@ethersproject/abi': 5.0.0-beta.153 underscore: 1.9.1 @@ -25812,7 +25133,6 @@ packages: /web3-eth-accounts@1.2.11: resolution: {integrity: sha512-6FwPqEpCfKIh3nSSGeo3uBm2iFSnFJDfwL3oS9pyegRBXNsGRVpgiW63yhNzL0796StsvjHWwQnQHsZNxWAkGw==} engines: {node: '>=8.0.0'} - requiresBuild: true dependencies: crypto-browserify: 3.12.0 eth-lib: 0.2.8 @@ -25833,7 +25153,6 @@ packages: /web3-eth-contract@1.2.11: resolution: {integrity: sha512-MzYuI/Rq2o6gn7vCGcnQgco63isPNK5lMAan2E51AJLknjSLnOxwNY3gM8BcKoy4Z+v5Dv00a03Xuk78JowFow==} engines: {node: '>=8.0.0'} - requiresBuild: true dependencies: '@types/bn.js': 4.11.6 underscore: 1.9.1 @@ -25852,7 +25171,6 @@ packages: /web3-eth-ens@1.2.11: resolution: {integrity: sha512-dbW7dXP6HqT1EAPvnniZVnmw6TmQEKF6/1KgAxbo8iBBYrVTMDGFQUUnZ+C4VETGrwwaqtX4L9d/FrQhZ6SUiA==} engines: {node: '>=8.0.0'} - requiresBuild: true dependencies: content-hash: 2.5.2 eth-ens-namehash: 2.0.8 @@ -25871,7 +25189,6 @@ packages: /web3-eth-iban@1.2.11: resolution: {integrity: sha512-ozuVlZ5jwFC2hJY4+fH9pIcuH1xP0HEFhtWsR69u9uDIANHLPQQtWYmdj7xQ3p2YT4bQLq/axKhZi7EZVetmxQ==} engines: {node: '>=8.0.0'} - requiresBuild: true dependencies: bn.js: 4.12.0 web3-utils: 1.2.11 @@ -25881,7 +25198,6 @@ packages: /web3-eth-personal@1.2.11: resolution: {integrity: sha512-42IzUtKq9iHZ8K9VN0vAI50iSU9tOA1V7XU2BhF/tb7We2iKBVdkley2fg26TxlOcKNEHm7o6HRtiiFsVK4Ifw==} engines: {node: '>=8.0.0'} - requiresBuild: true dependencies: '@types/node': 12.20.55 web3-core: 1.2.11 @@ -25897,7 +25213,6 @@ packages: /web3-eth@1.2.11: resolution: {integrity: sha512-REvxW1wJ58AgHPcXPJOL49d1K/dPmuw4LjPLBPStOVkQjzDTVmJEIsiLwn2YeuNDd4pfakBwT8L3bz1G1/wVsQ==} engines: {node: '>=8.0.0'} - requiresBuild: true dependencies: underscore: 1.9.1 web3-core: 1.2.11 @@ -25920,7 +25235,6 @@ packages: /web3-net@1.2.11: resolution: {integrity: sha512-sjrSDj0pTfZouR5BSTItCuZ5K/oZPVdVciPQ6981PPPIwJJkCMeVjD7I4zO3qDPCnBjBSbWvVnLdwqUBPtHxyg==} engines: {node: '>=8.0.0'} - requiresBuild: true dependencies: web3-core: 1.2.11 web3-core-method: 1.2.11 @@ -25933,7 +25247,7 @@ packages: /web3-provider-engine@14.2.1: resolution: {integrity: sha512-iSv31h2qXkr9vrL6UZDm4leZMc32SjWJFGOp/D92JXfcEboCqraZyuExDkpxKw8ziTufXieNM7LSXNHzszYdJw==} dependencies: - async: 2.6.2 + async: 2.6.4 backoff: 2.5.0 clone: 2.1.2 cross-fetch: 2.2.6 @@ -25963,7 +25277,6 @@ packages: /web3-providers-http@1.2.11: resolution: {integrity: sha512-psh4hYGb1+ijWywfwpB2cvvOIMISlR44F/rJtYkRmQ5jMvG4FOCPlQJPiHQZo+2cc3HbktvvSJzIhkWQJdmvrA==} engines: {node: '>=8.0.0'} - requiresBuild: true dependencies: web3-core-helpers: 1.2.11 xhr2-cookies: 1.1.0 @@ -25973,7 +25286,6 @@ packages: /web3-providers-ipc@1.2.11: resolution: {integrity: sha512-yhc7Y/k8hBV/KlELxynWjJDzmgDEDjIjBzXK+e0rHBsYEhdCNdIH5Psa456c+l0qTEU2YzycF8VAjYpWfPnBpQ==} engines: {node: '>=8.0.0'} - requiresBuild: true dependencies: oboe: 2.1.4 underscore: 1.9.1 @@ -25984,7 +25296,6 @@ packages: /web3-providers-ws@1.2.11: resolution: {integrity: sha512-ZxnjIY1Er8Ty+cE4migzr43zA/+72AF1myzsLaU5eVgdsfV7Jqx7Dix1hbevNZDKFlSoEyq/3j/jYalh3So1Zg==} engines: {node: '>=8.0.0'} - requiresBuild: true dependencies: eventemitter3: 4.0.4 underscore: 1.9.1 @@ -25998,7 +25309,6 @@ packages: /web3-shh@1.2.11: resolution: {integrity: sha512-B3OrO3oG1L+bv3E1sTwCx66injW1A8hhwpknDUbV+sw3fehFazA06z9SGXUefuFI1kVs4q2vRi0n4oCcI4dZDg==} engines: {node: '>=8.0.0'} - requiresBuild: true dependencies: web3-core: 1.2.11 web3-core-method: 1.2.11 @@ -26026,7 +25336,6 @@ packages: /web3-utils@1.2.11: resolution: {integrity: sha512-3Tq09izhD+ThqHEaWYX4VOT7dNPdZiO+c/1QMA0s5X2lDFKK/xHJb7cyTRRVzN2LvlHbR7baS1tmQhSua51TcQ==} engines: {node: '>=8.0.0'} - requiresBuild: true dependencies: bn.js: 4.12.0 eth-lib: 0.2.8 @@ -26085,46 +25394,6 @@ packages: resolution: {integrity: sha512-kyDivFZ7ZM0BVOUteVbDFhlRt7Ah/CSPwJdi8hBpkK7QLumUqdLtVfm/PX/hkcnrvr0i77fO5+TjZ94Pe+C9iw==} dev: true - /webpack@5.89.0: - resolution: {integrity: sha512-qyfIC10pOr70V+jkmud8tMfajraGCZMBWJtrmuBymQKCrLTRejBI8STDp1MCyZu/QTdZSeacCQYpYNQVOzX5kw==} - engines: {node: '>=10.13.0'} - hasBin: true - peerDependencies: - webpack-cli: '*' - peerDependenciesMeta: - webpack-cli: - optional: true - dependencies: - '@types/eslint-scope': 3.7.5 - '@types/estree': 1.0.2 - '@webassemblyjs/ast': 1.11.6 - '@webassemblyjs/wasm-edit': 1.11.6 - '@webassemblyjs/wasm-parser': 1.11.6 - acorn: 8.10.0 - acorn-import-assertions: 1.9.0(acorn@8.10.0) - browserslist: 4.22.1 - chrome-trace-event: 1.0.3 - enhanced-resolve: 5.15.0 - es-module-lexer: 1.3.1 - eslint-scope: 5.1.1 - events: 3.3.0 - glob-to-regexp: 0.4.1 - graceful-fs: 4.2.11 - json-parse-even-better-errors: 2.3.1 - loader-runner: 4.3.0 - mime-types: 2.1.35 - neo-async: 2.6.2 - schema-utils: 3.3.0 - tapable: 2.2.1 - terser-webpack-plugin: 5.3.9(webpack@5.89.0) - watchpack: 2.4.0 - webpack-sources: 3.2.3 - transitivePeerDependencies: - - '@swc/core' - - esbuild - - uglify-js - dev: true - /webpack@5.89.0(esbuild@0.15.13): resolution: {integrity: sha512-qyfIC10pOr70V+jkmud8tMfajraGCZMBWJtrmuBymQKCrLTRejBI8STDp1MCyZu/QTdZSeacCQYpYNQVOzX5kw==} engines: {node: '>=10.13.0'} @@ -26169,7 +25438,7 @@ packages: resolution: {integrity: sha512-i4yhcllSP4wrpoPMU2N0TQ/q0O94LRG/eUQjEAamRltjQ1oT1PFFKOG4i877OlJgCG8rw6LrrowJp+TYCEWF7Q==} engines: {node: '>=4.0.0'} dependencies: - bufferutil: 4.0.7 + bufferutil: 4.0.8 debug: 2.6.9 es5-ext: 0.10.62 typedarray-to-buffer: 3.1.5 @@ -26378,7 +25647,6 @@ packages: /ws@3.3.3: resolution: {integrity: sha512-nnWLa/NwZSt4KQJu51MYlCcSQ5g7INpOrOMt4XV8j4dqTXdmlUmSHQ8/oLC069ckre0fRsgfvsKwbTdtKLCDkA==} - requiresBuild: true peerDependencies: bufferutil: ^4.0.1 utf-8-validate: ^5.0.2 @@ -26456,6 +25724,7 @@ packages: optional: true utf-8-validate: optional: true + dev: true /ws@8.13.0: resolution: {integrity: sha512-x9vcZYTrFPC7aSIbj7sRCYo7L/Xb8Iy+pW0ng0wt2vCJv7M9HOMy0UoN3rr+IFC7hb7vXoqS+P9ktyLLLhO+LA==} @@ -26468,9 +25737,8 @@ packages: optional: true utf-8-validate: optional: true - dev: true - /ws@8.14.2(bufferutil@4.0.7)(utf-8-validate@5.0.10): + /ws@8.14.2(bufferutil@4.0.8)(utf-8-validate@5.0.10): resolution: {integrity: sha512-wEBG1ftX4jcglPxgFCMJmZ2PLtSbJ2Peg6TmpJFTbe9GZYOQCDPdMYu/Tm0/bGZkw8paZnJY45J4K2PZrLYq8g==} engines: {node: '>=10.0.0'} peerDependencies: @@ -26482,25 +25750,11 @@ packages: utf-8-validate: optional: true dependencies: - bufferutil: 4.0.7 + bufferutil: 4.0.8 utf-8-validate: 5.0.10 - /ws@8.5.0: - resolution: {integrity: sha512-BWX0SWVgLPzYwF8lTzEy1egjhS4S4OEAHfsO8o65WOVsrnSRGaSiUaa9e0ggGlkMTtBlmOpEXiie9RUcBO86qg==} - engines: {node: '>=10.0.0'} - peerDependencies: - bufferutil: ^4.0.1 - utf-8-validate: ^5.0.2 - peerDependenciesMeta: - bufferutil: - optional: true - utf-8-validate: - optional: true - dev: true - /xhr-request-promise@0.1.3: resolution: {integrity: sha512-YUBytBsuwgitWtdRzXDDkWAXzhdGB8bYm0sSzMPZT7Z2MBjMSTHFsyCT1yCRATY+XC69DUrQraRAEgcoCRaIPg==} - requiresBuild: true dependencies: xhr-request: 1.1.0 dev: true @@ -26508,7 +25762,6 @@ packages: /xhr-request@1.1.0: resolution: {integrity: sha512-Y7qzEaR3FDtL3fP30k9wO/e+FBnBByZeybKOhASsGP30NIkRAAkKD/sCnLvgEfAIEC1rcmK7YG8f4oEnIrrWzA==} - requiresBuild: true dependencies: buffer-to-arraybuffer: 0.0.5 object-assign: 4.1.1 @@ -26522,7 +25775,6 @@ packages: /xhr2-cookies@1.1.0: resolution: {integrity: sha512-hjXUA6q+jl/bd8ADHcVfFsSPIf+tyLIjuO9TwJC9WI6JP2zKcS7C+p56I9kCLLsaCiNT035iYvEUUzdEFj/8+g==} - requiresBuild: true dependencies: cookiejar: 2.1.4 dev: true @@ -26592,8 +25844,8 @@ packages: engines: {node: '>= 6'} dev: true - /yaml@2.3.2: - resolution: {integrity: sha512-N/lyzTPaJasoDmfV7YTrYCI0G/3ivm/9wdG0aHuheKowWQwGTsK0Eoiw6utmzAnI6pkJa0DUVygvp3spqqEKXg==} + /yaml@2.3.3: + resolution: {integrity: sha512-zw0VAJxgeZ6+++/su5AFoqBbZbrEakwu+X0M5HmcwUiBL7AzcuPKjj5we4xfQLp78LkEMpD0cOnUhmgOVy3KdQ==} engines: {node: '>= 14'} dev: true @@ -26740,15 +25992,11 @@ packages: engines: {node: '>=12.20'} dev: true - /zod@3.22.2: - resolution: {integrity: sha512-wvWkphh5WQsJbVk1tbx1l1Ly4yg+XecD+Mq280uBGt9wa5BKSWf4Mhp6GmrkPixhMxmabYY7RbzlwVP32pbGCg==} - /zod@3.22.4: resolution: {integrity: sha512-iC+8Io04lddc+mVqQ9AZ7OQ2MrUKGN+oIQyq1vemgt46jwCwLfhq7/pwnBnNXXXZb8VTVLKwp9EDkx+ryxIWmg==} - dev: false - /zustand@4.4.1(react@18.2.0): - resolution: {integrity: sha512-QCPfstAS4EBiTQzlaGP1gmorkh/UL1Leaj2tdj+zZCZ/9bm0WS7sI2wnfD5lpOszFqWJ1DcPnGoY8RDL61uokw==} + /zustand@4.4.3(react@18.2.0): + resolution: {integrity: sha512-oRy+X3ZazZvLfmv6viIaQmtLOMeij1noakIsK/Y47PWYhT8glfXzQ4j0YcP5i0P0qI1A4rIB//SGROGyZhx91A==} engines: {node: '>=12.7.0'} peerDependencies: '@types/react': '>=16.8' @@ -26810,3 +26058,7 @@ packages: transitivePeerDependencies: - supports-color dev: true + +settings: + autoInstallPeers: true + excludeLinksFromLockfile: false From 6945598bbcea50f625b9b032e62a9599d410441b Mon Sep 17 00:00:00 2001 From: Daniel Wang <99078276+dantaik@users.noreply.github.com> Date: Tue, 17 Oct 2023 22:11:08 +0800 Subject: [PATCH 56/87] feat(protocol): support multi-hop bridging & add SGX prover (#14954) Co-authored-by: Daniel Wang Co-authored-by: adaki2004 Co-authored-by: jeff <113397187+cyberhorsey@users.noreply.github.com> Co-authored-by: David Co-authored-by: D <51912515+adaki2004@users.noreply.github.com> --- packages/protocol/.solhint.json | 3 +- packages/protocol/.solhintignore | 1 - packages/protocol/CHANGELOG.md | 4 +- packages/protocol/contracts/L1/TaikoData.sol | 2 - packages/protocol/contracts/L1/TaikoL1.sol | 123 +-- packages/protocol/contracts/L1/TaikoToken.sol | 2 +- .../contracts/L1/libs/LibProposing.sol | 13 +- .../protocol/contracts/L1/libs/LibProving.sol | 16 +- .../contracts/L1/libs/LibTaikoToken.sol | 11 +- .../protocol/contracts/L1/libs/LibUtils.sol | 2 +- .../contracts/L1/libs/LibVerifying.sol | 19 +- .../contracts/L1/provers/GuardianProver.sol | 124 +++ .../contracts/L1/tiers/ITierProvider.sol | 1 + ...igProvider.sol => TaikoA6TierProvider.sol} | 53 +- .../L1/tiers/ValidityRollupConfigProvider.sol | 73 -- .../L1/tiers/ZKRollupConfigProvider.sol | 60 -- .../yul => L1/verifiers}/PlonkVerifier.yulp | 0 .../contracts/L1/verifiers/PseZkVerifier.sol | 40 +- .../contracts/L1/verifiers/SGXVerifier.sol | 47 - .../L1/verifiers/SgxAndZkVerifier.sol | 60 ++ .../contracts/L1/verifiers/SgxVerifier.sol | 179 ++++ packages/protocol/contracts/L2/TaikoL2.sol | 58 +- .../protocol/contracts/L2/TaikoL2Signer.sol | 2 +- packages/protocol/contracts/bridge/Bridge.sol | 494 ++++++--- .../contracts/bridge/BridgeErrors.sol | 34 - .../protocol/contracts/bridge/EtherVault.sol | 39 +- .../protocol/contracts/bridge/IBridge.sol | 103 +- packages/protocol/contracts/bridge/README.md | 4 +- .../contracts/bridge/libs/LibBridgeData.sol | 54 - .../contracts/bridge/libs/LibBridgeInvoke.sol | 64 -- .../bridge/libs/LibBridgeProcess.sol | 149 --- .../contracts/bridge/libs/LibBridgeRecall.sol | 93 -- .../contracts/bridge/libs/LibBridgeRetry.sol | 99 -- .../contracts/bridge/libs/LibBridgeSend.sol | 147 --- .../contracts/bridge/libs/LibBridgeStatus.sol | 140 --- .../contracts/common/AddressResolver.sol | 21 +- .../contracts/common/ICrossChainSync.sol | 21 +- .../contracts/libs/LibBlockHeader.sol | 96 -- .../protocol/contracts/libs/LibTrieProof.sol | 71 -- .../contracts/signal/ISignalService.sol | 2 +- .../contracts/signal/SignalService.sol | 113 ++- .../contracts/thirdparty/LibBytesUtils.sol | 11 +- .../contracts/thirdparty/LibRLPWriter.sol | 293 ------ .../{libs => thirdparty}/LibUint512Math.sol | 0 .../contracts/tokenvault/BaseNFTVault.sol | 7 +- .../contracts/tokenvault/ERC1155Vault.sol | 31 +- .../contracts/tokenvault/ERC20Vault.sol | 30 +- .../contracts/tokenvault/ERC721Vault.sol | 31 +- .../tokenvault/libs/LibVaultUtils.sol | 51 +- .../actors_privileges_deployments.md | 0 .../protocol/genesis/GenerateGenesis.g.sol | 6 +- packages/protocol/package.json | 4 +- packages/protocol/script/DeployOnL1.s.sol | 69 +- packages/protocol/test/L1/SgxVerifier.t.sol | 62 ++ packages/protocol/test/L1/TaikoL1.t.sol | 32 +- .../test/L1/TaikoL1LibProvingWithTiers.t.sol | 288 +++--- packages/protocol/test/L1/TaikoL1TestBase.sol | 166 ++- packages/protocol/test/L2/TaikoL2.t.sol | 27 +- packages/protocol/test/TestBase.sol | 35 +- packages/protocol/test/bridge/Bridge.t.sol | 120 +-- .../protocol/test/signal/SignalService.t.sol | 67 +- .../test/tokenvault/ERC1155Vault.t.sol | 66 +- .../protocol/test/tokenvault/ERC20Vault.t.sol | 7 +- .../test/tokenvault/ERC721Vault.t.sol | 71 +- .../protocol/test/tokenvault/EtherVault.t.sol | 7 +- .../protocol/utils/generate_genesis/erc20.ts | 19 +- .../protocol/utils/generate_genesis/main.ts | 16 +- .../utils/generate_genesis/taikoL2.ts | 232 ++--- packages/relayer/ERC1155Vault.json | 33 +- packages/relayer/ERC20Vault.json | 33 +- packages/relayer/ERC721Vault.json | 33 +- packages/relayer/ICrossChainSync.json | 39 +- packages/relayer/TaikoL1.json | 171 ++-- packages/relayer/bindings/bridge/Bridge.go | 960 ++++-------------- .../bindings/erc1155vault/ERC1155Vault.go | 191 +--- .../relayer/bindings/erc20vault/ERC20Vault.go | 191 +--- .../bindings/erc721vault/ERC721Vault.go | 191 +--- .../icrosschainsync/ICrossChainSync.go | 67 +- packages/relayer/bindings/taikol1/TaikoL1.go | 413 +++----- packages/relayer/bindings/taikol2/TaikoL2.go | 534 +++++----- packages/relayer/bridge.go | 6 +- packages/relayer/header_syncer.go | 6 +- packages/relayer/indexer/handle_event.go | 2 +- packages/relayer/mock/bridge.go | 7 +- packages/relayer/mock/header_syncer.go | 13 +- packages/relayer/processor/process_message.go | 20 +- .../relayer/processor/process_message_test.go | 7 +- .../relayer/processor/wait_header_synced.go | 4 +- 88 files changed, 2468 insertions(+), 4838 deletions(-) create mode 100644 packages/protocol/contracts/L1/provers/GuardianProver.sol rename packages/protocol/contracts/L1/tiers/{OptimisticRollupConfigProvider.sol => TaikoA6TierProvider.sol} (56%) delete mode 100644 packages/protocol/contracts/L1/tiers/ValidityRollupConfigProvider.sol delete mode 100644 packages/protocol/contracts/L1/tiers/ZKRollupConfigProvider.sol rename packages/protocol/contracts/{libs/yul => L1/verifiers}/PlonkVerifier.yulp (100%) delete mode 100644 packages/protocol/contracts/L1/verifiers/SGXVerifier.sol create mode 100644 packages/protocol/contracts/L1/verifiers/SgxAndZkVerifier.sol create mode 100644 packages/protocol/contracts/L1/verifiers/SgxVerifier.sol delete mode 100644 packages/protocol/contracts/bridge/BridgeErrors.sol delete mode 100644 packages/protocol/contracts/bridge/libs/LibBridgeData.sol delete mode 100644 packages/protocol/contracts/bridge/libs/LibBridgeInvoke.sol delete mode 100644 packages/protocol/contracts/bridge/libs/LibBridgeProcess.sol delete mode 100644 packages/protocol/contracts/bridge/libs/LibBridgeRecall.sol delete mode 100644 packages/protocol/contracts/bridge/libs/LibBridgeRetry.sol delete mode 100644 packages/protocol/contracts/bridge/libs/LibBridgeSend.sol delete mode 100644 packages/protocol/contracts/bridge/libs/LibBridgeStatus.sol delete mode 100644 packages/protocol/contracts/libs/LibBlockHeader.sol delete mode 100644 packages/protocol/contracts/libs/LibTrieProof.sol delete mode 100644 packages/protocol/contracts/thirdparty/LibRLPWriter.sol rename packages/protocol/contracts/{libs => thirdparty}/LibUint512Math.sol (100%) rename packages/protocol/{contracts => docs}/actors_privileges_deployments.md (100%) create mode 100644 packages/protocol/test/L1/SgxVerifier.t.sol diff --git a/packages/protocol/.solhint.json b/packages/protocol/.solhint.json index 3bdc8bc7fc..ce3716cc9d 100644 --- a/packages/protocol/.solhint.json +++ b/packages/protocol/.solhint.json @@ -10,7 +10,6 @@ "not-rely-on-time": "off", "ordering": "warn", "payable-fallback": "off", - "no-console": "off", - "one-contract-per-file": "off" + "no-console": "off" } } diff --git a/packages/protocol/.solhintignore b/packages/protocol/.solhintignore index ef1c8c9a14..0ae2b08dfc 100644 --- a/packages/protocol/.solhintignore +++ b/packages/protocol/.solhintignore @@ -1,7 +1,6 @@ node_modules/ lib/ contracts/test/TestLibRLPReader.sol -contracts/test/TestLibRLPWriter.sol **/contracts/thirdparty/**/*.sol test/GasComparison.t.sol test/TestLn.sol \ No newline at end of file diff --git a/packages/protocol/CHANGELOG.md b/packages/protocol/CHANGELOG.md index df77fbdd7c..0962c1b143 100644 --- a/packages/protocol/CHANGELOG.md +++ b/packages/protocol/CHANGELOG.md @@ -211,7 +211,7 @@ - **protocol:** add special logics for alpha-2 testnet ([#12987](https://github.com/taikoxyz/taiko-mono/issues/12987)) ([3b71285](https://github.com/taikoxyz/taiko-mono/commit/3b712857b5d5ede2a3683d949d1974c8cceeb69a)) - **protocol:** deploy the generated Yul plonk verifier ([#13016](https://github.com/taikoxyz/taiko-mono/issues/13016)) ([eb5d564](https://github.com/taikoxyz/taiko-mono/commit/eb5d564ec469b1ec79619b4d563c3f9989d264c2)) - **protocol:** enable two dimensional circuit/verifier lookup. ([#13066](https://github.com/taikoxyz/taiko-mono/issues/13066)) ([51d1f67](https://github.com/taikoxyz/taiko-mono/commit/51d1f67aa45fec8e2de73c1ed5a992306c6339c1)) -- **protocol:** implement `Bridge.isMessageFailed` ([#13004](https://github.com/taikoxyz/taiko-mono/issues/13004)) ([45153d9](https://github.com/taikoxyz/taiko-mono/commit/45153d92cbcd0e80438c925d5ce5c52df3abd696)) +- **protocol:** implement `Bridge.proveMessageFailed` ([#13004](https://github.com/taikoxyz/taiko-mono/issues/13004)) ([45153d9](https://github.com/taikoxyz/taiko-mono/commit/45153d92cbcd0e80438c925d5ce5c52df3abd696)) - **protocol:** implement releaseEther & releaseERC20 ([#13008](https://github.com/taikoxyz/taiko-mono/issues/13008)) ([088933e](https://github.com/taikoxyz/taiko-mono/commit/088933e74f7163459e328d61d8331235ab87e388)) - **protocol:** improve sync header storage on L2 ([#13041](https://github.com/taikoxyz/taiko-mono/issues/13041)) ([86c9fe4](https://github.com/taikoxyz/taiko-mono/commit/86c9fe44a3200490032610c017bfc88c3a57a8dd)) - **protocol:** temporarily force an `oracle prover` to be the first prover ([#13070](https://github.com/taikoxyz/taiko-mono/issues/13070)) ([d7401a2](https://github.com/taikoxyz/taiko-mono/commit/d7401a20c66a3c52330c4f92c95c71c902d74452)) @@ -227,7 +227,7 @@ ### Features -- **bridge:** add getMessageStatusSlot function ([#12940](https://github.com/taikoxyz/taiko-mono/issues/12940)) ([9837fa3](https://github.com/taikoxyz/taiko-mono/commit/9837fa3dceb5d702b2247879af52988be4da333d)) +- **bridge:** add messageStatusSlot function ([#12940](https://github.com/taikoxyz/taiko-mono/issues/12940)) ([9837fa3](https://github.com/taikoxyz/taiko-mono/commit/9837fa3dceb5d702b2247879af52988be4da333d)) - **bridge:** bridge transactions ([#411](https://github.com/taikoxyz/taiko-mono/issues/411)) ([19dd7ab](https://github.com/taikoxyz/taiko-mono/commit/19dd7abd4a2f5bc83e43d31938e43501472ff108)) - **bridge:** implement the bridge relayer ([#191](https://github.com/taikoxyz/taiko-mono/issues/191)) ([9f49e4c](https://github.com/taikoxyz/taiko-mono/commit/9f49e4c87304853c9d94693434d23a6b8258eac6)) - **deployment:** fund L1 bridge ([#400](https://github.com/taikoxyz/taiko-mono/issues/400)) ([e7ef53e](https://github.com/taikoxyz/taiko-mono/commit/e7ef53e27cb906d7128a3e512e7082e4176786e4)) diff --git a/packages/protocol/contracts/L1/TaikoData.sol b/packages/protocol/contracts/L1/TaikoData.sol index aa0bb135b4..e6e5158ed1 100644 --- a/packages/protocol/contracts/L1/TaikoData.sol +++ b/packages/protocol/contracts/L1/TaikoData.sol @@ -17,8 +17,6 @@ library TaikoData { // --------------------------------------------------------------------- // The chain ID of the network where Taiko contracts are deployed. uint256 chainId; - // Flag indicating whether the relay signal root is enabled or not. - bool relaySignalRoot; // --------------------------------------------------------------------- // Group 2: Block level configs // --------------------------------------------------------------------- diff --git a/packages/protocol/contracts/L1/TaikoL1.sol b/packages/protocol/contracts/L1/TaikoL1.sol index aadacd6d17..c0199e45cb 100644 --- a/packages/protocol/contracts/L1/TaikoL1.sol +++ b/packages/protocol/contracts/L1/TaikoL1.sol @@ -56,11 +56,7 @@ contract TaikoL1 is initializer { EssentialContract._init(_addressManager); - LibVerifying.init({ - state: state, - config: getConfig(), - genesisBlockHash: _genesisBlockHash - }); + LibVerifying.init(state, getConfig(), _genesisBlockHash); } /// @notice Proposes a Taiko L2 block. @@ -83,22 +79,22 @@ contract TaikoL1 is returns (TaikoData.BlockMetadata memory meta) { TaikoData.Config memory config = getConfig(); - meta = LibProposing.proposeBlock({ - state: state, - config: config, - resolver: AddressResolver(this), - txListHash: txListHash, - extraData: extraData, - assignment: abi.decode(assignment, (TaikoData.ProverAssignment)), - txList: txList - }); + meta = LibProposing.proposeBlock( + state, + config, + AddressResolver(this), + txListHash, + extraData, + abi.decode(assignment, (TaikoData.ProverAssignment)), + txList + ); if (config.maxBlocksToVerifyPerProposal > 0) { - LibVerifying.verifyBlocks({ - state: state, - config: config, - resolver: AddressResolver(this), - maxBlocksToVerify: config.maxBlocksToVerifyPerProposal - }); + LibVerifying.verifyBlocks( + state, + config, + AddressResolver(this), + config.maxBlocksToVerifyPerProposal + ); } } @@ -114,20 +110,17 @@ contract TaikoL1 is nonReentrant { TaikoData.Config memory config = getConfig(); - uint8 maxBlocksToVerify = LibProving.proveBlock({ - state: state, - config: config, - resolver: AddressResolver(this), - blockId: blockId, - evidence: abi.decode(input, (TaikoData.BlockEvidence)) - }); + uint8 maxBlocksToVerify = LibProving.proveBlock( + state, + config, + AddressResolver(this), + blockId, + abi.decode(input, (TaikoData.BlockEvidence)) + ); if (maxBlocksToVerify > 0) { - LibVerifying.verifyBlocks({ - state: state, - config: config, - resolver: AddressResolver(this), - maxBlocksToVerify: maxBlocksToVerify - }); + LibVerifying.verifyBlocks( + state, config, AddressResolver(this), maxBlocksToVerify + ); } } @@ -135,24 +128,21 @@ contract TaikoL1 is /// @param maxBlocksToVerify Max number of blocks to verify. function verifyBlocks(uint64 maxBlocksToVerify) external nonReentrant { if (maxBlocksToVerify == 0) revert L1_INVALID_PARAM(); - LibVerifying.verifyBlocks({ - state: state, - config: getConfig(), - resolver: AddressResolver(this), - maxBlocksToVerify: maxBlocksToVerify - }); + LibVerifying.verifyBlocks( + state, getConfig(), AddressResolver(this), maxBlocksToVerify + ); } /// @notice Deposit Taiko token to this contract /// @param amount Amount of Taiko token to deposit. function depositTaikoToken(uint256 amount) public { - LibTaikoToken.depositToken(state, AddressResolver(this), amount); + LibTaikoToken.depositTaikoToken(state, AddressResolver(this), amount); } /// @notice Withdraw Taiko token from this contract /// @param amount Amount of Taiko token to withdraw. function withdrawTaikoToken(uint256 amount) public { - LibTaikoToken.withdrawToken(state, AddressResolver(this), amount); + LibTaikoToken.withdrawTaikoToken(state, AddressResolver(this), amount); } function ownerWithdrawTaikoToken( @@ -162,30 +152,23 @@ contract TaikoL1 is public onlyOwner { - LibTaikoToken.ownerWithdrawToken(AddressResolver(this), to, amount); + LibTaikoToken.ownerWithdrawTaikoToken(AddressResolver(this), to, amount); } /// @notice Deposits Ether to Layer 2. /// @param recipient Address of the recipient for the deposited Ether on /// Layer 2. function depositEtherToL2(address recipient) public payable { - LibDepositing.depositEtherToL2({ - state: state, - config: getConfig(), - resolver: AddressResolver(this), - recipient: recipient - }); + LibDepositing.depositEtherToL2( + state, getConfig(), AddressResolver(this), recipient + ); } /// @notice Checks if Ether deposit is allowed for Layer 2. /// @param amount Amount of Ether to be deposited. /// @return true if Ether deposit is allowed, false otherwise. function canDepositEthToL2(uint256 amount) public view returns (bool) { - return LibDepositing.canDepositEthToL2({ - state: state, - config: getConfig(), - amount: amount - }); + return LibDepositing.canDepositEthToL2(state, getConfig(), amount); } /// @notice Gets the details of a block. @@ -196,11 +179,7 @@ contract TaikoL1 is view returns (TaikoData.Block memory blk) { - return LibUtils.getBlock({ - state: state, - config: getConfig(), - blockId: blockId - }); + return LibUtils.getBlock(state, getConfig(), blockId); } /// @notice Gets the state transition for a specific block. @@ -215,34 +194,21 @@ contract TaikoL1 is view returns (TaikoData.Transition memory) { - return LibUtils.getTransition({ - state: state, - config: getConfig(), - blockId: blockId, - parentHash: parentHash - }); + return LibUtils.getTransition(state, getConfig(), blockId, parentHash); } /// @inheritdoc ICrossChainSync - function getCrossChainBlockHash(uint64 blockId) + function getSyncedSnippet(uint64 blockId) public view override - returns (bytes32) + returns (ICrossChainSync.Snippet memory data) { - return LibUtils.getVerifyingTransition(state, getConfig(), blockId) - .blockHash; - } + TaikoData.Transition storage transition = + LibUtils.getVerifyingTransition(state, getConfig(), blockId); - /// @inheritdoc ICrossChainSync - function getCrossChainSignalRoot(uint64 blockId) - public - view - override - returns (bytes32) - { - return LibUtils.getVerifyingTransition(state, getConfig(), blockId) - .signalRoot; + data.blockHash = transition.blockHash; + data.signalRoot = transition.signalRoot; } /// @notice Gets the state variables of the TaikoL1 contract. @@ -308,7 +274,6 @@ contract TaikoL1 is { return TaikoData.Config({ chainId: 167_007, - relaySignalRoot: false, blockMaxProposals: 403_200, blockRingBufferSize: 403_210, maxBlocksToVerifyPerProposal: 10, diff --git a/packages/protocol/contracts/L1/TaikoToken.sol b/packages/protocol/contracts/L1/TaikoToken.sol index 2841d47c1a..5b1a95edb0 100644 --- a/packages/protocol/contracts/L1/TaikoToken.sol +++ b/packages/protocol/contracts/L1/TaikoToken.sol @@ -70,7 +70,7 @@ contract TaikoToken is __ERC20Permit_init(_name); __ERC20Votes_init(); - for (uint256 i = 0; i < _premintRecipients.length; ++i) { + for (uint256 i; i < _premintRecipients.length; ++i) { _mint(_premintRecipients[i], _premintAmounts[i]); } } diff --git a/packages/protocol/contracts/L1/libs/LibProposing.sol b/packages/protocol/contracts/L1/libs/LibProposing.sol index d7a4d4b47b..ddfed19776 100644 --- a/packages/protocol/contracts/L1/libs/LibProposing.sol +++ b/packages/protocol/contracts/L1/libs/LibProposing.sol @@ -160,7 +160,7 @@ library LibProposing { // transition is not the initial one or if it was generated and // validated by different provers. Instead, a portion of the assignment // bond serves as a reward for the actual prover. - LibTaikoToken.debitToken( + LibTaikoToken.debitTaikoToken( state, resolver, blk.assignedProver, config.livenessBond ); @@ -171,11 +171,8 @@ library LibProposing { // Validate the prover assignment, then charge Ether or ERC20 as the // prover fee based on the block's minTier. - uint256 proverFee = _validateAssignment({ - minTier: blk.minTier, - txListHash: txListHash, - assignment: assignment - }); + uint256 proverFee = + _validateAssignment(blk.minTier, txListHash, assignment); emit BlockProposed({ blockId: blk.blockId, @@ -284,9 +281,7 @@ library LibProposing { returns (uint256) { for (uint256 i; i < tierFees.length; ++i) { - if (tierFees[i].tier == tierId) { - return tierFees[i].fee; - } + if (tierFees[i].tier == tierId) return tierFees[i].fee; } revert L1_TIER_NOT_FOUND(); } diff --git a/packages/protocol/contracts/L1/libs/LibProving.sol b/packages/protocol/contracts/L1/libs/LibProving.sol index 25d79b3e2c..b538239491 100644 --- a/packages/protocol/contracts/L1/libs/LibProving.sol +++ b/packages/protocol/contracts/L1/libs/LibProving.sol @@ -226,7 +226,7 @@ library LibProving { evidence.proof.length == 32 && bytes32(evidence.proof) == keccak256("RETURN_LIVENESS_BOND") ) { - LibTaikoToken.creditToken( + LibTaikoToken.creditTaikoToken( state, resolver, blk.assignedProver, blk.livenessBond, false ); } @@ -273,7 +273,7 @@ library LibProving { if (tran.contester != address(0)) revert L1_ALREADY_CONTESTED(); // Burn the contest bond from the prover. - LibTaikoToken.debitToken( + LibTaikoToken.debitTaikoToken( state, resolver, msg.sender, tier.contestBond ); @@ -352,7 +352,7 @@ library LibProving { } // Burn the validity bond from the prover. - LibTaikoToken.debitToken( + LibTaikoToken.debitTaikoToken( state, resolver, msg.sender, tier.validityBond ); @@ -372,7 +372,7 @@ library LibProving { // Mint the reward and the validity bond and return it to // the previous prover. - LibTaikoToken.creditToken( + LibTaikoToken.creditTaikoToken( state, resolver, tran.prover, @@ -389,7 +389,7 @@ library LibProving { // for the tier-0 transition. Consequently, we only grant a // reward to the contester if it is not a zero-address. if (tran.contester != address(0)) { - LibTaikoToken.creditToken( + LibTaikoToken.creditTaikoToken( state, resolver, tran.contester, @@ -397,9 +397,9 @@ library LibProving { false ); } else if (reward != 0) { - //The prover is also the contester, so the reward is + // The prover is also the contester, so the reward is // sent to him. - LibTaikoToken.creditToken( + LibTaikoToken.creditTaikoToken( state, resolver, msg.sender, reward, false ); } @@ -415,7 +415,7 @@ library LibProving { // In theory, the reward can also be zero for certain tiers if // their validity bonds are set to zero. if (reward != 0) { - LibTaikoToken.creditToken( + LibTaikoToken.creditTaikoToken( state, resolver, msg.sender, reward, false ); } diff --git a/packages/protocol/contracts/L1/libs/LibTaikoToken.sol b/packages/protocol/contracts/L1/libs/LibTaikoToken.sol index 52bb1862a9..8504a91278 100644 --- a/packages/protocol/contracts/L1/libs/LibTaikoToken.sol +++ b/packages/protocol/contracts/L1/libs/LibTaikoToken.sol @@ -21,7 +21,7 @@ library LibTaikoToken { error L1_INSUFFICIENT_TOKEN(); error L1_INVALID_ADDRESS(); - function depositToken( + function depositTaikoToken( TaikoData.State storage state, AddressResolver resolver, uint256 amount @@ -38,7 +38,7 @@ library LibTaikoToken { emit TokenDeposited(amount); } - function withdrawToken( + function withdrawTaikoToken( TaikoData.State storage state, AddressResolver resolver, uint256 amount @@ -61,7 +61,7 @@ library LibTaikoToken { emit TokenWithdrawn(amount); } - function creditToken( + function creditTaikoToken( TaikoData.State storage state, AddressResolver resolver, address to, @@ -76,11 +76,12 @@ library LibTaikoToken { address(this), amount ); } + state.tokenBalances[to] += amount; emit TokenCredited(amount, mint); } - function debitToken( + function debitTaikoToken( TaikoData.State storage state, AddressResolver resolver, address from, @@ -102,7 +103,7 @@ library LibTaikoToken { } } - function ownerWithdrawToken( + function ownerWithdrawTaikoToken( AddressResolver resolver, address to, uint256 amount diff --git a/packages/protocol/contracts/L1/libs/LibUtils.sol b/packages/protocol/contracts/L1/libs/LibUtils.sol index 099caf62df..165246beb3 100644 --- a/packages/protocol/contracts/L1/libs/LibUtils.sol +++ b/packages/protocol/contracts/L1/libs/LibUtils.sol @@ -90,7 +90,7 @@ library LibUtils { ) internal view - returns (TaikoData.Transition memory) + returns (TaikoData.Transition storage) { uint64 _blockId = blockId == 0 ? state.slotB.lastVerifiedBlockId : blockId; diff --git a/packages/protocol/contracts/L1/libs/LibVerifying.sol b/packages/protocol/contracts/L1/libs/LibVerifying.sol index 3194ab582e..41c48bac91 100644 --- a/packages/protocol/contracts/L1/libs/LibVerifying.sol +++ b/packages/protocol/contracts/L1/libs/LibVerifying.sol @@ -175,7 +175,7 @@ library LibVerifying { bondToReturn -= blk.livenessBond / 2; } - LibTaikoToken.creditToken( + LibTaikoToken.creditTaikoToken( state, resolver, tran.prover, bondToReturn, false ); @@ -206,16 +206,11 @@ library LibVerifying { state.slotB.lastVerifiedBlockId = lastVerifiedBlockId; state.slotB.lastVerifiedAt = uint64(block.timestamp); - if (config.relaySignalRoot) { - // Forward the L2's signal root to the signal service to - // enable other TaikoL1 deployments, which share the same - // signal service, to relay the signal to their respective - // TaikoL2 contracts. This enables direct L1-to-L3 and - // L2-to-L2 bridging without assets passing an intermediary - // layer. - ISignalService(resolver.resolve("signal_service", false)) - .sendSignal(signalRoot); - } + // Store the L2's signal root as a signal to the local signal + // service to allow for multi-hop bridging. + ISignalService(resolver.resolve("signal_service", false)) + .sendSignal(signalRoot); + emit CrossChainSynced( lastVerifiedBlockId, blockHash, signalRoot ); @@ -233,7 +228,7 @@ library LibVerifying { || config.blockMaxProposals == 1 || config.blockRingBufferSize <= config.blockMaxProposals + 1 || config.blockMaxGasLimit == 0 || config.blockMaxTxListBytes == 0 - || config.blockMaxTxListBytes > 128 * 1024 //blob up to 128K + || config.blockMaxTxListBytes > 128 * 1024 // blob up to 128K || config.livenessBond == 0 || config.ethDepositRingBufferSize <= 1 || config.ethDepositMinCountPerBlock == 0 || config.ethDepositMaxCountPerBlock diff --git a/packages/protocol/contracts/L1/provers/GuardianProver.sol b/packages/protocol/contracts/L1/provers/GuardianProver.sol new file mode 100644 index 0000000000..8c9b50f9b6 --- /dev/null +++ b/packages/protocol/contracts/L1/provers/GuardianProver.sol @@ -0,0 +1,124 @@ +// SPDX-License-Identifier: MIT +// _____ _ _ _ _ +// |_ _|_ _(_) |_____ | | __ _| |__ ___ +// | |/ _` | | / / _ \ | |__/ _` | '_ (_-< +// |_|\__,_|_|_\_\___/ |____\__,_|_.__/__/ + +pragma solidity ^0.8.20; + +import { EssentialContract } from "../../common/EssentialContract.sol"; +import { Proxied } from "../../common/Proxied.sol"; + +import { LibTiers } from "../tiers/ITierProvider.sol"; +import { TaikoData } from "../TaikoData.sol"; + +/// @title GuardianProver +contract GuardianProver is EssentialContract { + uint256 public constant NUM_GUARDIANS = 5; + uint256 public constant REQUIRED_GUARDIANS = 3; + + address[NUM_GUARDIANS] public guardians; // slots 1 - 5 + mapping(address guardian => uint256 id) public guardianIds; // slot 6 + mapping(bytes32 => uint256 approvalBits) public approvals; // slot 7 + + uint256[43] private __gap; + // Cannot use NUM_GUARDIANS directly below otherwise hardhat will fail + + event GuardiansUpdated(address[5]); + event Approved( + uint64 blockId, + TaikoData.BlockEvidence evidence, + uint256 approvalBits, + bool proofSubmitted + ); + + error INVALID_GUARDIAN(); + error INVALID_GUARDIAN_SET(); + error INVALID_PROOF(); + error PROVING_FAILED(); + + /// @notice Initializes the contract with the provided address manager. + /// @param _addressManager The address of the address manager contract. + function init(address _addressManager) external initializer { + EssentialContract._init(_addressManager); + } + + /// @notice Set the set of guardians + /// @param _guardians The new set of guardians + function setGuardians(address[NUM_GUARDIANS] memory _guardians) + external + onlyOwner + nonReentrant + { + for (uint256 i; i < NUM_GUARDIANS; ++i) { + address guardian = _guardians[i]; + if (guardian == address(0)) revert INVALID_GUARDIAN(); + + // In case there is a pending 'approval' and we call setGuardians() + // with an existing guardian but with different array position (id), + // then accidentally 2 guardian signatures could lead to firing away + // a proveBlock() transaction. + uint256 id = guardianIds[guardian]; + + if (id != 0) { + if (id != i + 1) revert INVALID_GUARDIAN_SET(); + } else { + delete guardianIds[guardians[i]]; + guardianIds[guardian] = i + 1; + guardians[i] = guardian; + } + } + + emit GuardiansUpdated(_guardians); + } + + /// @dev Called by guardians to approve a guardian proof + function approveEvidence( + uint64 blockId, + TaikoData.BlockEvidence memory evidence + ) + external + nonReentrant + { + uint256 id = guardianIds[msg.sender]; + if (id == 0) revert INVALID_GUARDIAN(); + + if (evidence.tier != LibTiers.TIER_GUARDIAN) revert INVALID_PROOF(); + + bytes32 hash = keccak256(abi.encode(blockId, evidence)); + uint256 approvalBits = approvals[hash]; + + approvalBits |= 1 << id; + + if (_isApproved(approvalBits)) { + bytes memory data = abi.encodeWithSignature( + "proveBlock(uint64,bytes)", blockId, abi.encode(evidence) + ); + + (bool success,) = resolve("taiko", false).call(data); + + if (!success) revert PROVING_FAILED(); + delete approvals[hash]; + + emit Approved(blockId, evidence, approvalBits, true); + } else { + approvals[hash] = approvalBits; + emit Approved(blockId, evidence, approvalBits, false); + } + } + + function _isApproved(uint256 approvalBits) private pure returns (bool) { + uint256 count; + uint256 bits = approvalBits >> 1; + for (uint256 i; i < NUM_GUARDIANS; ++i) { + if (bits & 1 == 1) ++count; + if (count == REQUIRED_GUARDIANS) return true; + bits >>= 1; + } + return false; + } +} + +/// @title ProxiedGuardianProver +/// @notice Proxied version of the parent contract. +contract ProxiedGuardianProver is Proxied, GuardianProver { } diff --git a/packages/protocol/contracts/L1/tiers/ITierProvider.sol b/packages/protocol/contracts/L1/tiers/ITierProvider.sol index 2004fe42c3..034331af81 100644 --- a/packages/protocol/contracts/L1/tiers/ITierProvider.sol +++ b/packages/protocol/contracts/L1/tiers/ITierProvider.sol @@ -32,5 +32,6 @@ library LibTiers { uint16 public constant TIER_OPTIMISTIC = 100; uint16 public constant TIER_SGX = 200; uint16 public constant TIER_PSE_ZKEVM = 300; + uint16 public constant TIER_SGX_AND_PSE_ZKEVM = 400; uint16 public constant TIER_GUARDIAN = 1000; } diff --git a/packages/protocol/contracts/L1/tiers/OptimisticRollupConfigProvider.sol b/packages/protocol/contracts/L1/tiers/TaikoA6TierProvider.sol similarity index 56% rename from packages/protocol/contracts/L1/tiers/OptimisticRollupConfigProvider.sol rename to packages/protocol/contracts/L1/tiers/TaikoA6TierProvider.sol index da4d12e608..83590d6fac 100644 --- a/packages/protocol/contracts/L1/tiers/OptimisticRollupConfigProvider.sol +++ b/packages/protocol/contracts/L1/tiers/TaikoA6TierProvider.sol @@ -8,8 +8,11 @@ pragma solidity ^0.8.20; import { ITierProvider, LibTiers } from "./ITierProvider.sol"; -/// @title OptimisticRollupConfigProvider -contract OptimisticRollupConfigProvider is ITierProvider { +/// @title TaikoA6TierProvider +contract TaikoA6TierProvider is ITierProvider { + uint96 private constant UNIT = 10_000e18; // 10000 Taiko token + uint24 private constant COOLDOWN_BASE = 24 hours; + error TIER_NOT_FOUND(); function getTier(uint16 tierId) @@ -21,33 +24,33 @@ contract OptimisticRollupConfigProvider is ITierProvider { if (tierId == LibTiers.TIER_OPTIMISTIC) { return ITierProvider.Tier({ verifierName: "tier_optimistic", - validityBond: 100_000 ether, // TKO - contestBond: 100_000 ether, // TKO - cooldownWindow: 4 hours, - provingWindow: 20 minutes, - maxBlocksToVerify: 16 + validityBond: 20 * UNIT, + contestBond: 20 * UNIT, + cooldownWindow: 4 hours + COOLDOWN_BASE, + provingWindow: 1 hours, + maxBlocksToVerify: 10 }); } if (tierId == LibTiers.TIER_SGX) { return ITierProvider.Tier({ verifierName: "tier_sgx", - validityBond: 50_000 ether, // TKO - contestBond: 50_000 ether, // TKO - cooldownWindow: 3 hours, - provingWindow: 60 minutes, - maxBlocksToVerify: 12 + validityBond: 10 * UNIT, + contestBond: 10 * UNIT, + cooldownWindow: 3 hours + COOLDOWN_BASE, + provingWindow: 2 hours, + maxBlocksToVerify: 8 }); } - if (tierId == LibTiers.TIER_PSE_ZKEVM) { + if (tierId == LibTiers.TIER_SGX_AND_PSE_ZKEVM) { return ITierProvider.Tier({ - verifierName: "tier_pse_zkevm", - validityBond: 10_000 ether, // TKO - contestBond: 10_000 ether, // TKO - cooldownWindow: 2 hours, - provingWindow: 90 minutes, - maxBlocksToVerify: 8 + verifierName: "tier_sgx_and_pse_zkevm", + validityBond: 5 * UNIT, + contestBond: 5 * UNIT, + cooldownWindow: 2 hours + COOLDOWN_BASE, + provingWindow: 4 hours, + maxBlocksToVerify: 6 }); } @@ -56,9 +59,9 @@ contract OptimisticRollupConfigProvider is ITierProvider { verifierName: "tier_guardian", validityBond: 0, contestBond: 0, // not contestable - cooldownWindow: 1 hours, - provingWindow: 120 minutes, - maxBlocksToVerify: 0 + cooldownWindow: 1 hours + COOLDOWN_BASE, + provingWindow: 4 hours, + maxBlocksToVerify: 4 }); } @@ -74,13 +77,13 @@ contract OptimisticRollupConfigProvider is ITierProvider { tiers = new uint16[](4); tiers[0] = LibTiers.TIER_OPTIMISTIC; tiers[1] = LibTiers.TIER_SGX; - tiers[2] = LibTiers.TIER_PSE_ZKEVM; + tiers[2] = LibTiers.TIER_SGX_AND_PSE_ZKEVM; tiers[3] = LibTiers.TIER_GUARDIAN; } function getMinTier(uint256 rand) public pure override returns (uint16) { - if (rand % 100 == 0) return LibTiers.TIER_PSE_ZKEVM; - // else if (rand % 10 == 0) return LibTiers.TIER_SGX; + if (rand % 1000 == 0) return LibTiers.TIER_SGX_AND_PSE_ZKEVM; + else if (rand % 100 == 0) return LibTiers.TIER_SGX; else return LibTiers.TIER_OPTIMISTIC; } } diff --git a/packages/protocol/contracts/L1/tiers/ValidityRollupConfigProvider.sol b/packages/protocol/contracts/L1/tiers/ValidityRollupConfigProvider.sol deleted file mode 100644 index 9aad14d6ad..0000000000 --- a/packages/protocol/contracts/L1/tiers/ValidityRollupConfigProvider.sol +++ /dev/null @@ -1,73 +0,0 @@ -// SPDX-License-Identifier: MIT -// _____ _ _ _ _ -// |_ _|_ _(_) |_____ | | __ _| |__ ___ -// | |/ _` | | / / _ \ | |__/ _` | '_ (_-< -// |_|\__,_|_|_\_\___/ |____\__,_|_.__/__/ - -pragma solidity ^0.8.20; - -import { ITierProvider, LibTiers } from "./ITierProvider.sol"; - -/// @title ValidityRollupConfigProvider -contract ValidityRollupConfigProvider is ITierProvider { - error TIER_NOT_FOUND(); - - function getTier(uint16 tierId) - public - pure - override - returns (ITierProvider.Tier memory) - { - if (tierId == LibTiers.TIER_SGX) { - return ITierProvider.Tier({ - verifierName: "tier_sgx", - validityBond: 50_000 ether, // TKO - contestBond: 50_000 ether, // TKO - cooldownWindow: 3 hours, - provingWindow: 60 minutes, - maxBlocksToVerify: 12 - }); - } - - if (tierId == LibTiers.TIER_PSE_ZKEVM) { - return ITierProvider.Tier({ - verifierName: "tier_pse_zkevm", - validityBond: 10_000 ether, // TKO - contestBond: 10_000 ether, // TKO - cooldownWindow: 2 hours, - provingWindow: 90 minutes, - maxBlocksToVerify: 8 - }); - } - - if (tierId == LibTiers.TIER_GUARDIAN) { - return ITierProvider.Tier({ - verifierName: "tier_guardian", - validityBond: 0, - contestBond: 0, // not contestable - cooldownWindow: 1 hours, - provingWindow: 120 minutes, - maxBlocksToVerify: 0 - }); - } - - revert TIER_NOT_FOUND(); - } - - function getTierIds() - public - pure - override - returns (uint16[] memory tiers) - { - tiers = new uint16[](3); - tiers[0] = LibTiers.TIER_SGX; - tiers[1] = LibTiers.TIER_PSE_ZKEVM; - tiers[2] = LibTiers.TIER_GUARDIAN; - } - - function getMinTier(uint256 rand) public pure override returns (uint16) { - if (rand % 100 == 0) return LibTiers.TIER_PSE_ZKEVM; - else return LibTiers.TIER_SGX; - } -} diff --git a/packages/protocol/contracts/L1/tiers/ZKRollupConfigProvider.sol b/packages/protocol/contracts/L1/tiers/ZKRollupConfigProvider.sol deleted file mode 100644 index 07d39da4da..0000000000 --- a/packages/protocol/contracts/L1/tiers/ZKRollupConfigProvider.sol +++ /dev/null @@ -1,60 +0,0 @@ -// SPDX-License-Identifier: MIT -// _____ _ _ _ _ -// |_ _|_ _(_) |_____ | | __ _| |__ ___ -// | |/ _` | | / / _ \ | |__/ _` | '_ (_-< -// |_|\__,_|_|_\_\___/ |____\__,_|_.__/__/ - -pragma solidity ^0.8.20; - -import { ITierProvider, LibTiers } from "./ITierProvider.sol"; - -/// @title ZKRollupConfigProvider -contract ZKRollupConfigProvider is ITierProvider { - error TIER_NOT_FOUND(); - - function getTier(uint16 tierId) - public - pure - override - returns (ITierProvider.Tier memory) - { - if (tierId == LibTiers.TIER_PSE_ZKEVM) { - return ITierProvider.Tier({ - verifierName: "tier_pse_zkevm", - validityBond: 10_000 ether, // TKO - contestBond: 10_000 ether, // TKO - cooldownWindow: 2 hours, - provingWindow: 90 minutes, - maxBlocksToVerify: 8 - }); - } - - if (tierId == LibTiers.TIER_GUARDIAN) { - return ITierProvider.Tier({ - verifierName: "tier_guardian", - validityBond: 0, - contestBond: 0, // not contestable - cooldownWindow: 1 hours, - provingWindow: 120 minutes, - maxBlocksToVerify: 0 - }); - } - - revert TIER_NOT_FOUND(); - } - - function getTierIds() - public - pure - override - returns (uint16[] memory tiers) - { - tiers = new uint16[](2); - tiers[0] = LibTiers.TIER_PSE_ZKEVM; - tiers[1] = LibTiers.TIER_GUARDIAN; - } - - function getMinTier(uint256) public pure override returns (uint16) { - return LibTiers.TIER_PSE_ZKEVM; - } -} diff --git a/packages/protocol/contracts/libs/yul/PlonkVerifier.yulp b/packages/protocol/contracts/L1/verifiers/PlonkVerifier.yulp similarity index 100% rename from packages/protocol/contracts/libs/yul/PlonkVerifier.yulp rename to packages/protocol/contracts/L1/verifiers/PlonkVerifier.yulp diff --git a/packages/protocol/contracts/L1/verifiers/PseZkVerifier.sol b/packages/protocol/contracts/L1/verifiers/PseZkVerifier.sol index e13b54c0d8..87b93884d9 100644 --- a/packages/protocol/contracts/L1/verifiers/PseZkVerifier.sol +++ b/packages/protocol/contracts/L1/verifiers/PseZkVerifier.sol @@ -7,8 +7,8 @@ pragma solidity ^0.8.20; import { EssentialContract } from "../../common/EssentialContract.sol"; -import { LibBytesUtils } from "../../thirdparty/LibBytesUtils.sol"; import { Proxied } from "../../common/Proxied.sol"; +import { LibBytesUtils } from "../../thirdparty/LibBytesUtils.sol"; import { TaikoData } from "../TaikoData.sol"; @@ -45,23 +45,17 @@ contract PseZkVerifier is EssentialContract, IVerifier { bytes32 instance = getInstance(prover, evidence); // Validate the instance using bytes utilities. - if ( - !LibBytesUtils.equal( - LibBytesUtils.slice(evidence.proof, 2, 32), - bytes.concat(bytes16(0), bytes16(instance)) - ) - ) { - revert L1_INVALID_PROOF(); - } - - if ( - !LibBytesUtils.equal( - LibBytesUtils.slice(evidence.proof, 34, 32), - bytes.concat(bytes16(0), bytes16(uint128(uint256(instance)))) - ) - ) { - revert L1_INVALID_PROOF(); - } + bool verified = LibBytesUtils.equal( + LibBytesUtils.slice(evidence.proof, 2, 32), + bytes.concat(bytes16(0), bytes16(instance)) + ); + if (!verified) revert L1_INVALID_PROOF(); + + verified = LibBytesUtils.equal( + LibBytesUtils.slice(evidence.proof, 34, 32), + bytes.concat(bytes16(0), bytes16(uint128(uint256(instance)))) + ); + if (!verified) revert L1_INVALID_PROOF(); // Extract verifier ID from the proof. uint16 verifierId = uint16(bytes2(evidence.proof[0:2])); @@ -71,14 +65,14 @@ contract PseZkVerifier is EssentialContract, IVerifier { address verifierAddress = resolve(getVerifierName(verifierId), false); // Call the verifier contract with the provided proof. - (bool verified, bytes memory ret) = + bytes memory ret; + (verified, ret) = verifierAddress.staticcall(bytes.concat(evidence.proof[2:])); // Check if the proof is valid. - if (!verified || ret.length != 32 || bytes32(ret) != keccak256("taiko")) - { - revert L1_INVALID_PROOF(); - } + if (!verified) revert L1_INVALID_PROOF(); + if (ret.length != 32) revert L1_INVALID_PROOF(); + if (bytes32(ret) != keccak256("taiko")) revert L1_INVALID_PROOF(); } function getInstance( diff --git a/packages/protocol/contracts/L1/verifiers/SGXVerifier.sol b/packages/protocol/contracts/L1/verifiers/SGXVerifier.sol deleted file mode 100644 index ffe32dd1be..0000000000 --- a/packages/protocol/contracts/L1/verifiers/SGXVerifier.sol +++ /dev/null @@ -1,47 +0,0 @@ -// SPDX-License-Identifier: MIT -// _____ _ _ _ _ -// |_ _|_ _(_) |_____ | | __ _| |__ ___ -// | |/ _` | | / / _ \ | |__/ _` | '_ (_-< -// |_|\__,_|_|_\_\___/ |____\__,_|_.__/__/ - -pragma solidity ^0.8.20; - -import { EssentialContract } from "../../common/EssentialContract.sol"; -import { Proxied } from "../../common/Proxied.sol"; - -import { TaikoData } from "../TaikoData.sol"; - -import { IVerifier } from "./IVerifier.sol"; - -/// @title GuardianVerifier -// TODO(dani): implement this verifier. -contract SGXVerifier is EssentialContract, IVerifier { - uint256[50] private __gap; - - error UNIMPLEMENTED(); - - /// @notice Initializes the contract with the provided address manager. - /// @param _addressManager The address of the address manager contract. - function init(address _addressManager) external initializer { - EssentialContract._init(_addressManager); - } - - /// @inheritdoc IVerifier - function verifyProof( - // blockId is unused now, but can be used later when supporting - // different types of proofs. - uint64, - address, - bool, - TaikoData.BlockEvidence calldata - ) - external - pure - { - revert UNIMPLEMENTED(); - } -} - -/// @title ProxiedSGXVerifier -/// @notice Proxied version of the parent contract. -contract ProxiedSGXVerifier is Proxied, SGXVerifier { } diff --git a/packages/protocol/contracts/L1/verifiers/SgxAndZkVerifier.sol b/packages/protocol/contracts/L1/verifiers/SgxAndZkVerifier.sol new file mode 100644 index 0000000000..28e3e6d408 --- /dev/null +++ b/packages/protocol/contracts/L1/verifiers/SgxAndZkVerifier.sol @@ -0,0 +1,60 @@ +// SPDX-License-Identifier: MIT +// _____ _ _ _ _ +// |_ _|_ _(_) |_____ | | __ _| |__ ___ +// | |/ _` | | / / _ \ | |__/ _` | '_ (_-< +// |_|\__,_|_|_\_\___/ |____\__,_|_.__/__/ + +pragma solidity ^0.8.20; + +import { EssentialContract } from "../../common/EssentialContract.sol"; +import { LibBytesUtils } from "../../thirdparty/LibBytesUtils.sol"; +import { Proxied } from "../../common/Proxied.sol"; + +import { TaikoData } from "../TaikoData.sol"; + +import { IVerifier } from "./IVerifier.sol"; + +/// @title SgxAndZkVerifier +/// @notice See the documentation in {IVerifier}. +contract SgxAndZkVerifier is EssentialContract, IVerifier { + uint8 public constant SGX_PROOF_SIZE = 87; + uint256[50] private __gap; + + /// @notice Initializes the contract with the provided address manager. + /// @param _addressManager The address of the address manager contract. + function init(address _addressManager) external initializer { + EssentialContract._init(_addressManager); + } + + /// @inheritdoc IVerifier + function verifyProof( + uint64 blockId, + address prover, + bool isContesting, + TaikoData.BlockEvidence calldata evidence + ) + external + { + TaikoData.BlockEvidence memory _evidence = evidence; + + // Verify the SGX part + _evidence.proof = LibBytesUtils.slice(evidence.proof, 0, SGX_PROOF_SIZE); + IVerifier(resolve("tier_sgx", false)).verifyProof( + blockId, prover, isContesting, _evidence + ); + + // Verify the ZK part + _evidence.proof = LibBytesUtils.slice( + evidence.proof, + SGX_PROOF_SIZE, + (evidence.proof.length - SGX_PROOF_SIZE) + ); + IVerifier(resolve("tier_pse_zkevm", false)).verifyProof( + blockId, prover, isContesting, _evidence + ); + } +} + +/// @title ProxiedProofVerifier +/// @notice Proxied version of the parent contract. +contract ProxiedSgxAndZkVerifier is Proxied, SgxAndZkVerifier { } diff --git a/packages/protocol/contracts/L1/verifiers/SgxVerifier.sol b/packages/protocol/contracts/L1/verifiers/SgxVerifier.sol new file mode 100644 index 0000000000..ca94e96e59 --- /dev/null +++ b/packages/protocol/contracts/L1/verifiers/SgxVerifier.sol @@ -0,0 +1,179 @@ +// SPDX-License-Identifier: MIT +// _____ _ _ _ _ +// |_ _|_ _(_) |_____ | | __ _| |__ ___ +// | |/ _` | | / / _ \ | |__/ _` | '_ (_-< +// |_|\__,_|_|_\_\___/ |____\__,_|_.__/__/ + +pragma solidity ^0.8.20; + +import { ECDSAUpgradeable } from + "lib/openzeppelin-contracts-upgradeable/contracts/utils/cryptography/ECDSAUpgradeable.sol"; + +import { EssentialContract } from "../../common/EssentialContract.sol"; +import { Proxied } from "../../common/Proxied.sol"; +import { LibBytesUtils } from "../../thirdparty/LibBytesUtils.sol"; + +import { TaikoData } from "../TaikoData.sol"; + +import { IVerifier } from "./IVerifier.sol"; + +/// @title SgxVerifier +contract SgxVerifier is EssentialContract, IVerifier { + using ECDSAUpgradeable for bytes32; + + struct Instance { + address addr; + uint64 addedAt; // We can calculate if expired + } + + uint256 public constant INSTANCE_EXPIRY = 180 days; + + /// @dev For gas savings, we shall assign each SGX instance with an id + /// so that when we need to set a new pub key, just write storage once. + uint256 public nextInstanceId; // slot 1 + + /// @dev One SGX instance is uniquely identified (on-chain) by it's ECDSA + /// public key (or rather ethereum address). Once that address is used (by + /// proof verification) it has to be overwritten by a new one (representing + /// the same instance). This is due to side-channel protection. Also this + /// public key shall expire after some time. (For now it is a long enough 6 + /// months setting.) + mapping(uint256 instanceId => Instance) public instances; // slot 2 + + uint256[48] private __gap; + + event InstanceAdded( + uint256 indexed id, + address indexed instance, + address replaced, + uint256 timstamp + ); + + error SGX_INVALID_INSTANCE(); + error SGX_INVALID_INSTANCES(); + error SGX_INVALID_PROOF(); + + /// @notice Initializes the contract with the provided address manager. + /// @param _addressManager The address of the address manager contract. + function init(address _addressManager) external initializer { + EssentialContract._init(_addressManager); + } + + /// @notice Adds trusted SGX instances to the registry. + /// @param _instances The address array of trusted SGX instances. + function addInstances(address[] calldata _instances) external onlyOwner { + if (_instances.length == 0) revert SGX_INVALID_INSTANCES(); + + for (uint256 i; i < _instances.length; ++i) { + _addInstance(_instances[i]); + } + } + + /// @notice Adds SGX instances to the registry by another SGX instance. + /// @param id The id of the SGX instance who is adding new members. + /// @param _instances The address array of SGX instances. + /// @param signature The signature proving authenticity. + function addInstances( + uint256 id, + address[] calldata _instances, + bytes calldata signature + ) + external + { + if (_instances.length == 0) revert SGX_INVALID_INSTANCES(); + + bytes32 signedHash = keccak256(abi.encode("ADD_INSTANCES", _instances)); + address oldInstance = signedHash.recover(signature); + if (!_isInstanceValid(id, oldInstance)) revert SGX_INVALID_INSTANCE(); + + _replaceInstance(id, oldInstance, _instances[0]); + for (uint256 i = 1; i < _instances.length; ++i) { + _addInstance(_instances[i]); + } + } + + /// @inheritdoc IVerifier + function verifyProof( + uint64, + address prover, + bool isContesting, + TaikoData.BlockEvidence calldata evidence + ) + external + { + // Do not run proof verification to contest an existing proof + if (isContesting) return; + + // Size is: 87 bytes + // 2 bytes + 20 bytes + 65 bytes (signature) = 87 + if (evidence.proof.length != 87) revert SGX_INVALID_PROOF(); + + uint16 id = uint16(bytes2(LibBytesUtils.slice(evidence.proof, 0, 2))); + address newInstance = + address(bytes20(LibBytesUtils.slice(evidence.proof, 2, 20))); + bytes memory signature = LibBytesUtils.slice(evidence.proof, 22); + address oldInstance = + getSignedHash(evidence, prover, newInstance).recover(signature); + + if (!_isInstanceValid(id, oldInstance)) revert SGX_INVALID_INSTANCE(); + _replaceInstance(id, oldInstance, newInstance); + } + + function getSignedHash( + TaikoData.BlockEvidence memory evidence, + address prover, + address newAddress + ) + public + pure + returns (bytes32 signedHash) + { + return keccak256( + abi.encode( + evidence.metaHash, + evidence.parentHash, + evidence.blockHash, + evidence.signalRoot, + evidence.graffiti, + prover, + newAddress + ) + ); + } + + function _addInstance(address instance) private { + if (instance == address(0)) revert SGX_INVALID_INSTANCE(); + + uint256 id = nextInstanceId++; + instances[id] = Instance(instance, uint64(block.timestamp)); + emit InstanceAdded(id, instance, address(0), block.timestamp); + } + + function _replaceInstance( + uint256 id, + address oldInstance, + address newInstance + ) + private + { + instances[id] = Instance(newInstance, uint64(block.timestamp)); + emit InstanceAdded(id, newInstance, oldInstance, block.timestamp); + } + + function _isInstanceValid( + uint256 id, + address instance + ) + private + view + returns (bool) + { + if (instance == address(0)) return false; + if (instance != instances[id].addr) return false; + return instances[id].addedAt + INSTANCE_EXPIRY > block.timestamp; + } +} + +/// @title ProxiedSgxVerifier +/// @notice Proxied version of the parent contract. +contract ProxiedSgxVerifier is Proxied, SgxVerifier { } diff --git a/packages/protocol/contracts/L2/TaikoL2.sol b/packages/protocol/contracts/L2/TaikoL2.sol index 97bd40e52f..99e2d116a3 100644 --- a/packages/protocol/contracts/L2/TaikoL2.sol +++ b/packages/protocol/contracts/L2/TaikoL2.sol @@ -8,8 +8,8 @@ pragma solidity ^0.8.20; import { EssentialContract } from "../common/EssentialContract.sol"; import { ICrossChainSync } from "../common/ICrossChainSync.sol"; +import { ISignalService } from "../signal/ISignalService.sol"; import { Proxied } from "../common/Proxied.sol"; - import { LibMath } from "../libs/LibMath.sol"; import { TaikoToken } from "../L1/TaikoToken.sol"; @@ -33,18 +33,13 @@ contract TaikoL2 is EssentialContract, TaikoL2Signer, ICrossChainSync { uint8 blockRewardPoolPctg; } - struct VerifiedBlock { - bytes32 blockHash; - bytes32 signalRoot; - } - // TODO(david): figure out this value from internal devnet. uint32 public constant ANCHOR_GAS_DEDUCT = 40_000; // Mapping from L2 block numbers to their block hashes. // All L2 block hashes will be saved in this mapping. mapping(uint256 blockId => bytes32 blockHash) public l2Hashes; - mapping(uint256 blockId => VerifiedBlock) public l1VerifiedBlocks; + mapping(uint256 l1height => ICrossChainSync.Snippet) public snippets; // A hash to check the integrity of public inputs. bytes32 public publicInputHash; // slot 3 @@ -94,13 +89,13 @@ contract TaikoL2 is EssentialContract, TaikoL2Signer, ICrossChainSync { /// @notice Anchors the latest L1 block details to L2 for cross-layer /// message verification. - /// @param l1Hash The latest L1 block hash when this block was proposed. - /// @param l1SignalRoot The latest value of the L1 signal service storage - /// root. + /// @param l1BlockHash The latest L1 block hash when this block was + /// proposed. + /// @param l1SignalRoot The latest value of the L1 signal root. /// @param l1Height The latest L1 block height when this block was proposed. /// @param parentGasUsed The gas used in the parent block. function anchor( - bytes32 l1Hash, + bytes32 l1BlockHash, bytes32 l1SignalRoot, uint64 l1Height, uint32 parentGasUsed @@ -109,9 +104,14 @@ contract TaikoL2 is EssentialContract, TaikoL2Signer, ICrossChainSync { { if (msg.sender != GOLDEN_TOUCH_ADDRESS) revert L2_INVALID_SENDER(); + uint256 parentId; + unchecked { + parentId = block.number - 1; + } + // Verify ancestor hashes (bytes32 publicInputHashOld, bytes32 publicInputHashNew) = - _calcPublicInputHash(block.number - 1); + _calcPublicInputHash(parentId); if (publicInputHash != publicInputHashOld) { revert L2_PUBLIC_INPUT_HASH_MISMATCH(); } @@ -125,42 +125,38 @@ contract TaikoL2 is EssentialContract, TaikoL2Signer, ICrossChainSync { revert L2_BASEFEE_MISMATCH(); } + // Store the L1's signal root as a signal to the local signal service to + // allow for multi-hop bridging. + if (l1SignalRoot != 0) { + ISignalService(resolve("signal_service", false)).sendSignal( + l1SignalRoot + ); + } + emit CrossChainSynced(l1Height, l1BlockHash, l1SignalRoot); + // Reward block reward in Taiko token to the parent block's proposer uint128 blockReward = _rewardParentBlock(config, l1Height, parentGasUsed); // Update state variables - l2Hashes[block.number - 1] = blockhash(block.number - 1); - l1VerifiedBlocks[l1Height] = VerifiedBlock(l1Hash, l1SignalRoot); + l2Hashes[parentId] = blockhash(parentId); + snippets[l1Height] = ICrossChainSync.Snippet(l1BlockHash, l1SignalRoot); publicInputHash = publicInputHashNew; latestSyncedL1Height = l1Height; parentProposer = block.coinbase; - // Emit events - emit CrossChainSynced(l1Height, l1Hash, l1SignalRoot); - emit Anchored(blockhash(block.number - 1), gasExcess, blockReward); - } - - /// @inheritdoc ICrossChainSync - function getCrossChainBlockHash(uint64 blockId) - public - view - override - returns (bytes32) - { - uint256 id = blockId == 0 ? latestSyncedL1Height : blockId; - return l1VerifiedBlocks[id].blockHash; + emit Anchored(blockhash(parentId), gasExcess, blockReward); } /// @inheritdoc ICrossChainSync - function getCrossChainSignalRoot(uint64 blockId) + function getSyncedSnippet(uint64 blockId) public view override - returns (bytes32) + returns (ICrossChainSync.Snippet memory) { uint256 id = blockId == 0 ? latestSyncedL1Height : blockId; - return l1VerifiedBlocks[id].signalRoot; + return snippets[id]; } /// @notice Gets the basefee and gas excess using EIP-1559 configuration for diff --git a/packages/protocol/contracts/L2/TaikoL2Signer.sol b/packages/protocol/contracts/L2/TaikoL2Signer.sol index 82fbeffcd5..5b8d6f8334 100644 --- a/packages/protocol/contracts/L2/TaikoL2Signer.sol +++ b/packages/protocol/contracts/L2/TaikoL2Signer.sol @@ -6,7 +6,7 @@ pragma solidity ^0.8.20; -import { LibUint512Math } from "../libs/LibUint512Math.sol"; +import { LibUint512Math } from "../thirdparty/LibUint512Math.sol"; /// @title TaikoL2Signer /// @notice This contract allows for signing operations required on Taiko L2. diff --git a/packages/protocol/contracts/bridge/Bridge.sol b/packages/protocol/contracts/bridge/Bridge.sol index 7c10462455..9cbdae49fd 100644 --- a/packages/protocol/contracts/bridge/Bridge.sol +++ b/packages/protocol/contracts/bridge/Bridge.sol @@ -8,32 +8,60 @@ pragma solidity ^0.8.20; import { AddressResolver } from "../common/AddressResolver.sol"; import { EssentialContract } from "../common/EssentialContract.sol"; import { Proxied } from "../common/Proxied.sol"; +import { ISignalService } from "../signal/ISignalService.sol"; +import { LibAddress } from "../libs/LibAddress.sol"; -import { LibBridgeData } from "./libs/LibBridgeData.sol"; -import { LibBridgeProcess } from "./libs/LibBridgeProcess.sol"; -import { LibBridgeRecall } from "./libs/LibBridgeRecall.sol"; -import { LibBridgeRetry } from "./libs/LibBridgeRetry.sol"; -import { LibBridgeSend } from "./libs/LibBridgeSend.sol"; -import { LibBridgeStatus } from "./libs/LibBridgeStatus.sol"; - -import { BridgeErrors } from "./BridgeErrors.sol"; -import { IBridge } from "./IBridge.sol"; +import { EtherVault } from "./EtherVault.sol"; +import { IBridge, IRecallableSender } from "./IBridge.sol"; /// @title Bridge /// @notice See the documentation for {IBridge}. /// @dev The code hash for the same address on L1 and L2 may be different. -contract Bridge is EssentialContract, IBridge, BridgeErrors { - using LibBridgeData for Message; +contract Bridge is EssentialContract, IBridge { + using LibAddress for address; + + enum Status { + NEW, + RETRIABLE, + DONE, + FAILED + } - LibBridgeData.State private _state; // 50 slots reserved + bytes32 internal constant MESSAGE_HASH_PLACEHOLDER = bytes32(uint256(1)); + uint256 internal constant CHAINID_PLACEHOLDER = type(uint256).max; + address internal constant SRC_CHAIN_SENDER_PLACEHOLDER = + address(uint160(uint256(1))); - event MessageStatusChanged( - bytes32 indexed msgHash, - LibBridgeStatus.MessageStatus status, - address transactor - ); + uint256 public nextMessageId; + mapping(bytes32 msgHash => bool recalled) public isMessageRecalled; + mapping(bytes32 msgHash => Status) public messageStatus; + Context private _ctx; // 3 slots + uint256[44] private __gap; + event SignalSent(address indexed sender, bytes32 msgHash); + event MessageSent(bytes32 indexed msgHash, Message message); + event MessageRecalled(bytes32 indexed msgHash); event DestChainEnabled(uint256 indexed chainId, bool enabled); + event MessageStatusChanged(bytes32 indexed msgHash, Status status); + + error B_INVALID_CHAINID(); + error B_INVALID_CONTEXT(); + error B_INVALID_GAS_LIMIT(); + error B_INVALID_SIGNAL(); + error B_INVALID_TO(); + error B_INVALID_USER(); + error B_INVALID_VALUE(); + error B_NON_RETRIABLE(); + error B_NOT_FAILED(); + error B_NOT_RECEIVED(); + error B_PERMISSION_DENIED(); + error B_RECALLED_ALREADY(); + error B_STATUS_MISMATCH(); + + modifier sameChain(uint256 chainId) { + if (chainId != block.chainid) revert B_INVALID_CHAINID(); + _; + } receive() external payable { } @@ -43,195 +71,391 @@ contract Bridge is EssentialContract, IBridge, BridgeErrors { EssentialContract._init(_addressManager); } - /// @notice Sends a message from the current chain to the destination chain - /// specified in the message. + /// @notice Sends a message to the destination chain and takes custody + /// of Ether required in this contract. All extra Ether will be refunded. /// @inheritdoc IBridge function sendMessage(Message calldata message) external payable + override nonReentrant - returns (bytes32 msgHash) + returns (bytes32 msgHash, Message memory _message) { - return LibBridgeSend.sendMessage({ - state: _state, - resolver: AddressResolver(this), - message: message - }); + // Ensure the message user is not null. + if (message.user == address(0)) revert B_INVALID_USER(); + + // Check if the destination chain is enabled. + (bool destChainEnabled, address destBridge) = + isDestChainEnabled(message.destChainId); + + // Verify destination chain and to address. + if (!destChainEnabled) revert B_INVALID_CHAINID(); + if (message.destChainId == block.chainid) { + revert B_INVALID_CHAINID(); + } + + if (message.to == address(0)) revert B_INVALID_TO(); + if (message.to == destBridge) revert B_INVALID_TO(); + + // Ensure the sent value matches the expected amount. + uint256 expectedAmount = message.value + message.fee; + if (expectedAmount != msg.value) revert B_INVALID_VALUE(); + + // On Taiko, send the expectedAmount to the EtherVault; otherwise, store + // it on the Bridge. + address ethVault = resolve("ether_vault", true); + ethVault.sendEther(expectedAmount); + + _message = message; + // Configure message details and send signal to indicate message + // sending. + _message.id = nextMessageId++; + _message.from = msg.sender; + _message.srcChainId = block.chainid; + + msgHash = keccak256(abi.encode(_message)); + + ISignalService(resolve("signal_service", false)).sendSignal(msgHash); + emit MessageSent(msgHash, _message); } - /// @notice Processes a message received from another chain. - /// @inheritdoc IBridge - function processMessage( + /// @notice Recalls a failed message on its source chain, releasing + /// associated assets. + /// @dev This function checks if the message failed on the source chain and + /// releases associated Ether or tokens. + /// @param message The message whose associated Ether should be released. + /// @param proof The merkle inclusion proof. + function recallMessage( Message calldata message, bytes calldata proof ) external nonReentrant + sameChain(message.srcChainId) { - return LibBridgeProcess.processMessage({ - state: _state, - resolver: AddressResolver(this), - message: message, - proof: proof, - checkProof: shouldCheckProof() - }); + bytes32 msgHash = keccak256(abi.encode(message)); + if (isMessageRecalled[msgHash]) revert B_RECALLED_ALREADY(); + + bool received = _proveSignalReceived( + _signalForFailedMessage(msgHash), message.destChainId, proof + ); + if (!received) revert B_NOT_FAILED(); + + isMessageRecalled[msgHash] = true; + + // Release necessary Ether from EtherVault if on Taiko, otherwise it's + // already available on this Bridge. + address ethVault = resolve("ether_vault", true); + if (ethVault != address(0)) { + EtherVault(payable(ethVault)).releaseEther( + address(this), message.value + ); + } + + // Execute the recall logic based on the contract's support for the + // IRecallableSender interface + bool support = + message.from.supportsInterface(type(IRecallableSender).interfaceId); + if (support) { + IRecallableSender(message.from).onMessageRecalled{ + value: message.value + }(message, msgHash); + } else { + message.user.sendEther(message.value); + } + + emit MessageRecalled(msgHash); } - /// @notice Retries executing a message that previously failed on its - /// destination chain. - /// @inheritdoc IBridge - function retryMessage( + /// @notice Processes a bridge message on the destination chain. This + /// function is callable by any address, including the `message.user`. + /// @dev The process begins by hashing the message and checking the message + /// status in the bridge If the status is "NEW", custody of Ether is + /// taken from the EtherVault, and the message is invoked. The status is + /// updated accordingly, and processing fees are refunded as needed. + /// @param message The message to be processed. + /// @param proof The merkle inclusion proof. + function processMessage( Message calldata message, - bool isLastAttempt + bytes calldata proof ) external nonReentrant + sameChain(message.destChainId) { - return LibBridgeRetry.retryMessage({ - state: _state, - resolver: AddressResolver(this), - message: message, - isLastAttempt: isLastAttempt - }); + // If the gas limit is set to zero, only the user can process the + // message. + if (message.gasLimit == 0 && msg.sender != message.user) { + revert B_PERMISSION_DENIED(); + } + + bytes32 msgHash = keccak256(abi.encode(message)); + if (messageStatus[msgHash] != Status.NEW) revert B_STATUS_MISMATCH(); + + bool received = _proveSignalReceived(msgHash, message.srcChainId, proof); + if (!received) revert B_NOT_RECEIVED(); + + // Release necessary Ether from EtherVault if on Taiko, otherwise it's + // already available on this Bridge. + address ethVault = resolve("ether_vault", true); + if (ethVault != address(0)) { + EtherVault(payable(ethVault)).releaseEther( + address(this), message.value + message.fee + ); + } + + Status status; + uint256 refundAmount; + + // Process message differently based on the target address + if (message.to == address(this) || message.to == address(0)) { + // Handle special addresses that don't require actual invocation but + // mark message as DONE + status = Status.DONE; + refundAmount = message.value; + } else { + // Use the specified message gas limit if called by the user, else + // use remaining gas + uint256 gasLimit = + msg.sender == message.user ? gasleft() : message.gasLimit; + + if (_invokeMessageCall(message, msgHash, gasLimit)) { + status = Status.DONE; + } else { + status = Status.RETRIABLE; + ethVault.sendEther(message.value); + } + } + + // Update the message status + _updateMessageStatus(msgHash, status); + + // Determine the refund recipient + address refundTo = + message.refundTo == address(0) ? message.user : message.refundTo; + + // Refund the processing fee + if (msg.sender == refundTo) { + uint256 amount = message.fee + refundAmount; + refundTo.sendEther(amount); + } else { + // If sender is another address, reward it and refund the rest + msg.sender.sendEther(message.fee); + refundTo.sendEther(refundAmount); + } } - /// @notice Recalls a failed message on its source chain - /// @inheritdoc IBridge - function recallMessage( - IBridge.Message calldata message, - bytes calldata proof + /// @notice Retries to invoke the messageCall after releasing associated + /// Ether and tokens. + /// @dev This function can be called by any address, including the + /// `message.user`. + /// It attempts to invoke the messageCall and updates the message status + /// accordingly. + /// @param message The message to retry. + /// @param isLastAttempt Specifies if this is the last attempt to retry the + /// message. + function retryMessage( + Message calldata message, + bool isLastAttempt ) external nonReentrant + sameChain(message.destChainId) { - return LibBridgeRecall.recallMessage({ - state: _state, - resolver: AddressResolver(this), - message: message, - proof: proof, - checkProof: shouldCheckProof() - }); + // If the gasLimit is set to 0 or isLastAttempt is true, the caller must + // be the message.user. + if (message.gasLimit == 0 || isLastAttempt) { + if (msg.sender != message.user) revert B_PERMISSION_DENIED(); + } + + bytes32 msgHash = keccak256(abi.encode(message)); + if (messageStatus[msgHash] != Status.RETRIABLE) { + revert B_NON_RETRIABLE(); + } + + // Release necessary Ether from EtherVault if on Taiko, otherwise it's + // already available on this Bridge. + address ethVault = resolve("ether_vault", true); + if (ethVault != address(0)) { + EtherVault(payable(ethVault)).releaseEther( + address(this), message.value + ); + } + + // Attempt to invoke the messageCall. + if (_invokeMessageCall(message, msgHash, gasleft())) { + // Update the message status to "DONE" on successful invocation. + _updateMessageStatus(msgHash, Status.DONE); + } else { + // Update the message status to "FAILED" + _updateMessageStatus(msgHash, Status.FAILED); + // Release Ether back to EtherVault (if on Taiko it is OK) + // otherwise funds stay at Bridge anyways. + ethVault.sendEther(message.value); + } } - /// @notice Checks if the message with the given hash has been sent on its - /// source chain. - /// @inheritdoc IBridge - function isMessageSent(bytes32 msgHash) + /// @notice Checks if the message was sent. + /// @param message The message. + /// @return True if the message was sent. + function isMessageSent(Message calldata message) public view - virtual returns (bool) { - return LibBridgeSend.isMessageSent(AddressResolver(this), msgHash); + if (message.srcChainId != block.chainid) return false; + return ISignalService(resolve("signal_service", false)).isSignalSent({ + app: address(this), + signal: keccak256(abi.encode(message)) + }); } - /// @notice Checks if the message with the given hash has been received on - /// its destination chain. - /// @inheritdoc IBridge - function isMessageReceived( - bytes32 msgHash, - uint256 srcChainId, + /// @notice Checks if a msgHash has failed on its destination chain. + /// @param message The message. + /// @param proof The merkle inclusion proof. + /// @return Returns true if the message has failed, false otherwise. + function proveMessageFailed( + Message calldata message, bytes calldata proof ) public view - virtual - override returns (bool) { - return LibBridgeSend.isMessageReceived({ - resolver: AddressResolver(this), - msgHash: msgHash, - srcChainId: srcChainId, - proof: proof - }); + if (message.srcChainId != block.chainid) return false; + return _proveSignalReceived( + _signalForFailedMessage(keccak256(abi.encode(message))), + message.destChainId, + proof + ); } /// @notice Checks if a msgHash has failed on its destination chain. - /// @inheritdoc IBridge - function isMessageFailed( - bytes32 msgHash, - uint256 destChainId, + /// @param message The message. + /// @param proof The merkle inclusion proof. + /// @return Returns true if the message has failed, false otherwise. + function proveMessageReceived( + Message calldata message, bytes calldata proof ) public view - virtual - override returns (bool) { - return LibBridgeStatus.isMessageFailed({ - resolver: AddressResolver(this), - msgHash: msgHash, - destChainId: destChainId, - proof: proof - }); - } - - /// @notice Checks if a failed message has been recalled on its source - /// chain. - /// @inheritdoc IBridge - function isMessageRecalled(bytes32 msgHash) public view returns (bool) { - return _state.recalls[msgHash]; + if (message.destChainId != block.chainid) return false; + return _proveSignalReceived( + keccak256(abi.encode(message)), message.srcChainId, proof + ); } - /// @notice Gets the execution status of the message with the given hash on - /// its destination chain. - /// @param msgHash The hash of the message. - /// @return Returns the status of the message. - function getMessageStatus(bytes32 msgHash) + /// @notice Checks if the destination chain is enabled. + /// @param chainId The destination chain ID. + /// @return enabled True if the destination chain is enabled. + /// @return destBridge The bridge of the destination chain. + function isDestChainEnabled(uint256 chainId) public view - virtual - returns (LibBridgeStatus.MessageStatus) + returns (bool enabled, address destBridge) { - return LibBridgeStatus.getMessageStatus(msgHash); + destBridge = resolve(chainId, "bridge", true); + enabled = destBridge != address(0); } /// @notice Gets the current context. /// @inheritdoc IBridge function context() public view returns (Context memory) { - return _state.ctx; + if (_ctx.msgHash == 0 || _ctx.msgHash == MESSAGE_HASH_PLACEHOLDER) { + revert B_INVALID_CONTEXT(); + } + return _ctx; } - /// @notice Checks if the destination chain with the given ID is enabled. - /// @param _chainId The ID of the chain. - /// @return enabled Returns true if the destination chain is enabled, false - /// otherwise. - function isDestChainEnabled(uint256 _chainId) - public - view - returns (bool enabled) + /// @notice Invokes a call message on the Bridge. + /// @param message The call message to be invoked. + /// @param msgHash The hash of the message. + /// @param gasLimit The gas limit for the message call. + /// @return success A boolean value indicating whether the message call was + /// successful. + /// @dev This function updates the context in the state before and after the + /// message call. + function _invokeMessageCall( + Message calldata message, + bytes32 msgHash, + uint256 gasLimit + ) + private + returns (bool success) { - (enabled,) = - LibBridgeSend.isDestChainEnabled(AddressResolver(this), _chainId); + if (gasLimit == 0) revert B_INVALID_GAS_LIMIT(); + + // Update the context for the message call + // Should we simply provide the message itself rather than + // a context object? + _ctx = Context({ + msgHash: msgHash, + from: message.from, + srcChainId: message.srcChainId + }); + + // Perform the message call and capture the success value + (success,) = + message.to.call{ value: message.value, gas: gasLimit }(message.data); + + // Reset the context after the message call + _ctx = Context({ + msgHash: MESSAGE_HASH_PLACEHOLDER, + from: SRC_CHAIN_SENDER_PLACEHOLDER, + srcChainId: CHAINID_PLACEHOLDER + }); } - /// @notice Computes the hash of a given message. - /// @inheritdoc IBridge - function hashMessage(Message calldata message) - public - pure - returns (bytes32) + /// @notice Updates the status of a bridge message. + /// @dev If the new status is different from the current status in the + /// mapping, the status is updated and an event is emitted. + /// @param msgHash The hash of the message. + /// @param status The new status of the message. + function _updateMessageStatus(bytes32 msgHash, Status status) private { + if (messageStatus[msgHash] == status) return; + + messageStatus[msgHash] = status; + emit MessageStatusChanged(msgHash, status); + + if (status != Status.FAILED) return; + + ISignalService(resolve("signal_service", false)).sendSignal( + _signalForFailedMessage(msgHash) + ); + } + + /// @notice Checks if the signal was received. + /// @param signal The signal. + /// @param srcChainId The ID of the source chain. + /// @param proof The merkle inclusion proof. + /// @return True if the message was received. + function _proveSignalReceived( + bytes32 signal, + uint256 srcChainId, + bytes calldata proof + ) + private + view + returns (bool) { - return LibBridgeData.hashMessage(message); + return ISignalService(resolve("signal_service", false)) + .proveSignalReceived({ + srcChainId: srcChainId, + app: resolve(srcChainId, "bridge", false), + signal: signal, + proof: proof + }); } - /// @notice Gets the slot associated with a given message hash status. - /// @param msgHash The hash of the message. - /// @return Returns the slot associated with the given message hash status. - function getMessageStatusSlot(bytes32 msgHash) - public + function _signalForFailedMessage(bytes32 msgHash) + private pure returns (bytes32) { - return LibBridgeStatus.getMessageStatusSlot(msgHash); - } - - /// @notice Tells if we need to check real proof or it is a test. - /// @return Returns true if this contract, or can be false if mock/test. - function shouldCheckProof() internal pure virtual returns (bool) { - return true; + return msgHash ^ bytes32(uint256(Status.FAILED)); } } diff --git a/packages/protocol/contracts/bridge/BridgeErrors.sol b/packages/protocol/contracts/bridge/BridgeErrors.sol deleted file mode 100644 index 3b90dc0acf..0000000000 --- a/packages/protocol/contracts/bridge/BridgeErrors.sol +++ /dev/null @@ -1,34 +0,0 @@ -// SPDX-License-Identifier: MIT -// _____ _ _ _ _ -// |_ _|_ _(_) |_____ | | __ _| |__ ___ -// | |/ _` | | / / _ \ | |__/ _` | '_ (_-< -// |_|\__,_|_|_\_\___/ |____\__,_|_.__/__/ - -pragma solidity ^0.8.20; - -/// @title BridgeErrors -/// @dev This abstract contract defines custom errors that are used throughout -/// the Bridge contract. -abstract contract BridgeErrors { - error B_DENIED(); - error B_ERC20_CANNOT_RECEIVE(); - error B_MSG_RECALLED_ALREADY(); - error B_EV_DO_NOT_BURN(); - error B_EV_NOT_AUTHORIZED(); - error B_EV_PARAM(); - error B_FAILED_TRANSFER(); - error B_FORBIDDEN(); - error B_GAS_LIMIT(); - error B_INCORRECT_VALUE(); - error B_INIT_PARAM_ERROR(); - error B_MSG_HASH_NULL(); - error B_MSG_NON_RETRIABLE(); - error B_MSG_NOT_FAILED(); - error B_NULL_APP_ADDR(); - error B_USER_IS_NULL(); - error B_SIGNAL_NOT_RECEIVED(); - error B_STATUS_MISMATCH(); - error B_WRONG_CHAIN_ID(); - error B_WRONG_TO_ADDRESS(); - error B_ZERO_SIGNAL(); -} diff --git a/packages/protocol/contracts/bridge/EtherVault.sol b/packages/protocol/contracts/bridge/EtherVault.sol index 534297b717..344560e243 100644 --- a/packages/protocol/contracts/bridge/EtherVault.sol +++ b/packages/protocol/contracts/bridge/EtherVault.sol @@ -10,27 +10,26 @@ import { EssentialContract } from "../common/EssentialContract.sol"; import { LibAddress } from "../libs/LibAddress.sol"; import { Proxied } from "../common/Proxied.sol"; -import { BridgeErrors } from "./BridgeErrors.sol"; - /// @title EtherVault /// @notice This contract is initialized with 2^128 Ether and allows authorized /// addresses to release Ether. /// @dev Only the contract owner can authorize or deauthorize addresses. -contract EtherVault is EssentialContract, BridgeErrors { +contract EtherVault is EssentialContract { using LibAddress for address; - mapping(address addr => bool isAuthorized) private _authorizedAddrs; // Authorized - // addresses + mapping(address addr => bool authorized) public isAuthorized; uint256[49] private __gap; event Authorized(address indexed addr, bool authorized); event EtherReleased(address indexed to, uint256 amount); + error VAULT_PERMISSION_DENIED(); + error VAULT_INVALID_RECIPIENT(); + error VAULT_INVALID_PARAMS(); + modifier onlyAuthorized() { // Ensure the caller is authorized to perform the action - if (!isAuthorized(msg.sender)) { - revert B_EV_NOT_AUTHORIZED(); - } + if (!isAuthorized[msg.sender]) revert VAULT_PERMISSION_DENIED(); _; } @@ -38,8 +37,8 @@ contract EtherVault is EssentialContract, BridgeErrors { /// @dev Only authorized addresses can send Ether to the contract. receive() external payable { // EthVault's balance must == 0 OR the sender isAuthorized. - if (address(this).balance != 0 && !isAuthorized(msg.sender)) { - revert B_EV_NOT_AUTHORIZED(); + if (address(this).balance != 0 && !isAuthorized[msg.sender]) { + revert VAULT_PERMISSION_DENIED(); } } @@ -69,10 +68,8 @@ contract EtherVault is EssentialContract, BridgeErrors { onlyAuthorized nonReentrant { - if (amount == 0) return; - if (recipient == address(0)) { - revert B_EV_DO_NOT_BURN(); - } + if (recipient == address(0)) revert VAULT_INVALID_RECIPIENT(); + recipient.sendEther(amount); emit EtherReleased(recipient, amount); } @@ -82,17 +79,11 @@ contract EtherVault is EssentialContract, BridgeErrors { /// @param addr Address to set the authorized status of. /// @param authorized Authorized status to set. function authorize(address addr, bool authorized) public onlyOwner { - if (addr == address(0) || _authorizedAddrs[addr] == authorized) { - revert B_EV_PARAM(); - } - _authorizedAddrs[addr] = authorized; - emit Authorized(addr, authorized); - } + if (addr == address(0)) revert VAULT_INVALID_PARAMS(); + if (isAuthorized[addr] == authorized) revert VAULT_INVALID_PARAMS(); - /// @notice Gets the authorized status of an address. - /// @param addr Address to get the authorized status of. - function isAuthorized(address addr) public view returns (bool) { - return _authorizedAddrs[addr]; + isAuthorized[addr] = authorized; + emit Authorized(addr, authorized); } } diff --git a/packages/protocol/contracts/bridge/IBridge.sol b/packages/protocol/contracts/bridge/IBridge.sol index dffd7aa54d..bad6efb3c4 100644 --- a/packages/protocol/contracts/bridge/IBridge.sol +++ b/packages/protocol/contracts/bridge/IBridge.sol @@ -6,20 +6,11 @@ pragma solidity ^0.8.20; -/// @title IRecallableMessageSender -/// @notice An interface that all recallable message senders shall implement. -interface IRecallableMessageSender { - function onMessageRecalled(IBridge.Message calldata message) - external - payable; -} - /// @title IBridge /// @notice The bridge used in conjunction with the {ISignalService}. /// @dev Ether is held by Bridges on L1 and by the EtherVault on L2, /// not by token vaults. interface IBridge { - // Struct representing a message sent across the bridge. struct Message { // Message ID. uint256 id; @@ -54,98 +45,28 @@ interface IBridge { uint256 srcChainId; // Source chain ID. } - event SignalSent(address indexed sender, bytes32 msgHash); - event MessageSent(bytes32 indexed msgHash, Message message); - event MessageRecalled(bytes32 indexed msgHash); - /// @notice Sends a message to the destination chain and takes custody /// of Ether required in this contract. All extra Ether will be refunded. /// @param message The message to be sent. /// @return msgHash The hash of the sent message. - function sendMessage(Message memory message) + /// @return updatedMessage The updated message sent. + function sendMessage(Message calldata message) external payable - returns (bytes32 msgHash); - - /// @notice Processes a message received from another chain. - /// @param message The message to process. - /// @param proof The proof of the cross-chain transfer. - function processMessage( - Message calldata message, - bytes calldata proof - ) - external; - - /// @notice Retries executing a message that previously failed on its - /// destination chain. - /// @param message The message to retry. - /// @param isLastAttempt Specifies whether this is the last attempt to send - /// the message. - function retryMessage( - Message calldata message, - bool isLastAttempt - ) - external; - - /// @notice Recalls a failed message on its source chain. - /// @param message The message to be recalled. - /// @param proof The proof of message processing failure. - function recallMessage( - IBridge.Message calldata message, - bytes calldata proof - ) - external; - - /// @notice Checks if the message with the given hash has been sent on its - /// source chain. - /// @param msgHash The hash of the message. - /// @return Returns true if the message has been sent, false otherwise. - function isMessageSent(bytes32 msgHash) external view returns (bool); - - /// @notice Checks if the message with the given hash has been received on - /// its destination chain. - /// @param msgHash The hash of the message. - /// @param srcChainId The source chain ID. - /// @param proof The proof of message receipt. - /// @return Returns true if the message has been received, false otherwise. - function isMessageReceived( - bytes32 msgHash, - uint256 srcChainId, - bytes calldata proof - ) - external - view - returns (bool); - - /// @notice Checks if a msgHash has failed on its destination chain. - /// @param msgHash The hash of the message. - /// @param destChainId The destination chain ID. - /// @param proof The proof of message failure. - /// @return Returns true if the message has failed, false otherwise. - function isMessageFailed( - bytes32 msgHash, - uint256 destChainId, - bytes calldata proof - ) - external - view - returns (bool); - - /// @notice Checks if a failed message has been recalled on its source - /// chain. - /// @param msgHash The hash of the message. - /// @return Returns true if the Ether has been released, false otherwise. - function isMessageRecalled(bytes32 msgHash) external view returns (bool); + returns (bytes32 msgHash, Message memory updatedMessage); /// @notice Returns the bridge state context. /// @return context The context of the current bridge operation. function context() external view returns (Context memory context); +} - /// @notice Computes the hash of a given message. - /// @param message The message to compute the hash for. - /// @return Returns the hash of the message. - function hashMessage(IBridge.Message calldata message) +/// @title IRecallableSender +/// @notice An interface that all recallable message senders shall implement. +interface IRecallableSender { + function onMessageRecalled( + IBridge.Message calldata message, + bytes32 msgHash + ) external - pure - returns (bytes32); + payable; } diff --git a/packages/protocol/contracts/bridge/README.md b/packages/protocol/contracts/bridge/README.md index f13f4c0836..227c3bd8a8 100644 --- a/packages/protocol/contracts/bridge/README.md +++ b/packages/protocol/contracts/bridge/README.md @@ -95,7 +95,7 @@ struct BridgeTransferOp { If the `processingFee` is set to 0, only the user can call `processMessage`. Otherwise, either the user or an off-chain relayer can process the message. Let's explain the next steps in the case of a relayer -- the user will have to do the same steps anyways. In the case of a relayer, the relayer picks up the event and **generates a proof from srcChain** -- this can be obtained with `eth_getProof` on the srcChain bridge contract. This proof is sent along with the signal to `processMessage` on the destChain bridge contract. -The `processMessage` call will first check that the message has not been processed yet, this status is stored in the destination chain's bridge contract state as `messageStatus`. Next, the proof (that the message is indeed sent to the SignalService on the source chain) is checked inside `isSignalReceived`. The proof demonstrates that the storage on the `Bridge` contract on srcChain contains the `key` with a value of `1`. `LibTrieProof` takes the proof, the signal, and the message sender address to check the `key` is set on the srcChain bridge contract state. This verifies that the message is sent on srcChain. Next, `isSignalReceived` gets the header hash on destChain of the header height specified in the proof. It then checks that this hash is equal to the hash specified in the proof. This will verify that the message is received on destChain. +The `processMessage` call will first check that the message has not been processed yet, this status is stored in the destination chain's bridge contract state as `statuses`. Next, the proof (that the message is indeed sent to the SignalService on the source chain) is checked inside `proveSignalReceived`. The proof demonstrates that the storage on the `Bridge` contract on srcChain contains the `key` with a value of `1`. `LibSecureMerkleTrie` takes the proof, the signal, and the message sender address to check the `key` is set on the srcChain bridge contract state. This verifies that the message is sent on srcChain. Next, `proveSignalReceived` gets the header hash on destChain of the header height specified in the proof. It then checks that this hash is equal to the hash specified in the proof. This will verify that the message is received on destChain. The `processMessage` call will then proceed to invoke the message call, which will actually take the Ether from the vault and send it to the specified address. If it succeeds, it will mark the message as "DONE" on the srcChain bridge state. If it fails, it will mark the message as "RETRIABLE" and send the Ether back to the vault. Later, `retryMessage` can be called **only** by the user (`processMessage` cannot be called again for this message by the relayer). @@ -103,4 +103,4 @@ Finally, any unused funds are sent back to the user as a refund. ### Failed bridging -If the `messageStatus` is "RETRIABLE" and - for whatever reason - the second try also cannot successfully initiate releasing the funds/tokens to the recipient on the destination chain, the `messageStatus` will be set to "FAILED". In this case the `recallMessage` shall be called on the source chain's Bridge contract (with `message` and `proof` input params), which will send the assets back to the user. +If the `statuses` is "RETRIABLE" and - for whatever reason - the second try also cannot successfully initiate releasing the funds/tokens to the recipient on the destination chain, the `statuses` will be set to "FAILED". In this case the `recallMessage` shall be called on the source chain's Bridge contract (with `message` and `proof` input params), which will send the assets back to the user. diff --git a/packages/protocol/contracts/bridge/libs/LibBridgeData.sol b/packages/protocol/contracts/bridge/libs/LibBridgeData.sol deleted file mode 100644 index 582418153b..0000000000 --- a/packages/protocol/contracts/bridge/libs/LibBridgeData.sol +++ /dev/null @@ -1,54 +0,0 @@ -// SPDX-License-Identifier: MIT -// _____ _ _ _ _ -// |_ _|_ _(_) |_____ | | __ _| |__ ___ -// | |/ _` | | / / _ \ | |__/ _` | '_ (_-< -// |_|\__,_|_|_\_\___/ |____\__,_|_.__/__/ -pragma solidity ^0.8.20; - -import { BlockHeader } from "../../libs/LibBlockHeader.sol"; - -import { IBridge } from "../IBridge.sol"; - -/// @title LibBridgeData -/// @notice This library provides functions and data structures for storing and -/// managing message metadata on the Bridge. -/// The library is used to keep track of the state of messages that are being -/// transferred across the bridge, and it contains functions to hash messages -/// and check their status. -library LibBridgeData { - /// @dev The State struct stores the state of messages in the Bridge - /// contract. - struct State { - uint256 nextMessageId; - IBridge.Context ctx; // 3 slots - mapping(bytes32 msgHash => bool recalled) recalls; - uint256[45] __gap; - } - - /// @dev StatusProof holds the block header and proof for a particular - /// status. - struct StatusProof { - BlockHeader header; - bytes proof; - } - - bytes32 internal constant MESSAGE_HASH_PLACEHOLDER = bytes32(uint256(1)); - uint256 internal constant CHAINID_PLACEHOLDER = type(uint256).max; - address internal constant SRC_CHAIN_SENDER_PLACEHOLDER = - address(uint160(uint256(1))); - - // Note: These events must match the ones defined in Bridge.sol. - event MessageSent(bytes32 indexed msgHash, IBridge.Message message); - event DestChainEnabled(uint256 indexed chainId, bool enabled); - - /// @notice Calculates the keccak256 hash of the message. - /// @param message The message to be hashed. - /// @return msgHash The keccak256 hash of the message. - function hashMessage(IBridge.Message memory message) - internal - pure - returns (bytes32) - { - return keccak256(abi.encode(message)); - } -} diff --git a/packages/protocol/contracts/bridge/libs/LibBridgeInvoke.sol b/packages/protocol/contracts/bridge/libs/LibBridgeInvoke.sol deleted file mode 100644 index 56920f0778..0000000000 --- a/packages/protocol/contracts/bridge/libs/LibBridgeInvoke.sol +++ /dev/null @@ -1,64 +0,0 @@ -// SPDX-License-Identifier: MIT -// _____ _ _ _ _ -// |_ _|_ _(_) |_____ | | __ _| |__ ___ -// | |/ _` | | / / _ \ | |__/ _` | '_ (_-< -// |_|\__,_|_|_\_\___/ |____\__,_|_.__/__/ - -pragma solidity ^0.8.20; - -import { IBridge } from "../IBridge.sol"; - -import { LibBridgeData } from "./LibBridgeData.sol"; - -/// @title LibBridgeInvoke -/// @notice This library provides functions for handling the invocation of call -/// messages on the Bridge. -/// The library facilitates the interaction with messages sent across the -/// bridge, allowing for call execution and state updates. -library LibBridgeInvoke { - using LibBridgeData for IBridge.Message; - - error B_GAS_LIMIT(); - - /// @notice Invokes a call message on the Bridge. - /// @param state The current state of the Bridge. - /// @param message The call message to be invoked. - /// @param msgHash The hash of the message. - /// @param gasLimit The gas limit for the message call. - /// @return success A boolean value indicating whether the message call was - /// successful. - /// @dev This function updates the context in the state before and after the - /// message call. - function invokeMessageCall( - LibBridgeData.State storage state, - IBridge.Message calldata message, - bytes32 msgHash, - uint256 gasLimit - ) - internal - returns (bool success) - { - if (gasLimit == 0) { - revert B_GAS_LIMIT(); - } - // Update the context for the message call - // Should we simply provide the message itself rather than - // a context object? - state.ctx = IBridge.Context({ - msgHash: msgHash, - from: message.from, - srcChainId: message.srcChainId - }); - - // Perform the message call and capture the success value - (success,) = - message.to.call{ value: message.value, gas: gasLimit }(message.data); - - // Reset the context after the message call - state.ctx = IBridge.Context({ - msgHash: LibBridgeData.MESSAGE_HASH_PLACEHOLDER, - from: LibBridgeData.SRC_CHAIN_SENDER_PLACEHOLDER, - srcChainId: LibBridgeData.CHAINID_PLACEHOLDER - }); - } -} diff --git a/packages/protocol/contracts/bridge/libs/LibBridgeProcess.sol b/packages/protocol/contracts/bridge/libs/LibBridgeProcess.sol deleted file mode 100644 index 17a6729c98..0000000000 --- a/packages/protocol/contracts/bridge/libs/LibBridgeProcess.sol +++ /dev/null @@ -1,149 +0,0 @@ -// SPDX-License-Identifier: MIT -// _____ _ _ _ _ -// |_ _|_ _(_) |_____ | | __ _| |__ ___ -// | |/ _` | | / / _ \ | |__/ _` | '_ (_-< -// |_|\__,_|_|_\_\___/ |____\__,_|_.__/__/ - -pragma solidity ^0.8.20; - -import { AddressResolver } from "../../common/AddressResolver.sol"; -import { ISignalService } from "../../signal/ISignalService.sol"; -import { LibAddress } from "../../libs/LibAddress.sol"; - -import { EtherVault } from "../EtherVault.sol"; -import { IBridge } from "../IBridge.sol"; - -import { LibBridgeData } from "./LibBridgeData.sol"; -import { LibBridgeInvoke } from "./LibBridgeInvoke.sol"; -import { LibBridgeStatus } from "./LibBridgeStatus.sol"; - -/// @title LibBridgeProcess Library -/// @notice This library provides functions for processing bridge messages on -/// the destination chain. -/// The library handles the execution of bridge messages, status updates, and -/// fee refunds. -library LibBridgeProcess { - using LibAddress for address; - using LibBridgeData for IBridge.Message; - using LibBridgeData for LibBridgeData.State; - - error B_FORBIDDEN(); - error B_SIGNAL_NOT_RECEIVED(); - error B_STATUS_MISMATCH(); - error B_WRONG_CHAIN_ID(); - - /// @notice Processes a bridge message on the destination chain. This - /// function is callable by any address, including the `message.user`. - /// @dev The process begins by hashing the message and checking the message - /// status in the bridge state. If the status is "NEW", custody of Ether is - /// taken from the EtherVault, and the message is invoked. The status is - /// updated accordingly, and processing fees are refunded as needed. - /// @param state The state of the bridge. - /// @param resolver The address resolver. - /// @param message The message to be processed. - /// @param proof The proof of the message hash from the source chain. - /// @param checkProof A boolean flag indicating whether to verify the signal - /// receipt proof. - function processMessage( - LibBridgeData.State storage state, - AddressResolver resolver, - IBridge.Message calldata message, - bytes calldata proof, - bool checkProof - ) - internal - { - // If the gas limit is set to zero, only the user can process the - // message. - if (message.gasLimit == 0 && msg.sender != message.user) { - revert B_FORBIDDEN(); - } - - if (message.destChainId != block.chainid) { - revert B_WRONG_CHAIN_ID(); - } - - // The message status must be "NEW"; "RETRIABLE" is managed in - // LibBridgeRetry.sol. - bytes32 msgHash = message.hashMessage(); - if ( - LibBridgeStatus.getMessageStatus(msgHash) - != LibBridgeStatus.MessageStatus.NEW - ) { - revert B_STATUS_MISMATCH(); - } - - // Check if the signal has been received on the source chain - address srcBridge = - resolver.resolve(message.srcChainId, "bridge", false); - - if ( - checkProof - && !ISignalService(resolver.resolve("signal_service", false)) - .isSignalReceived({ - srcChainId: message.srcChainId, - app: srcBridge, - signal: msgHash, - proof: proof - }) - ) { - revert B_SIGNAL_NOT_RECEIVED(); - } - - // Release necessary Ether from EtherVault if on Taiko, otherwise it's - // already available on this Bridge. - address ethVault = resolver.resolve("ether_vault", true); - if (ethVault != address(0)) { - EtherVault(payable(ethVault)).releaseEther( - address(this), message.value + message.fee - ); - } - - LibBridgeStatus.MessageStatus status; - uint256 refundAmount; - - // Process message differently based on the target address - if (message.to == address(this) || message.to == address(0)) { - // Handle special addresses that don't require actual invocation but - // mark message as DONE - status = LibBridgeStatus.MessageStatus.DONE; - refundAmount = message.value; - } else { - // Use the specified message gas limit if called by the user, else - // use remaining gas - uint256 gasLimit = - msg.sender == message.user ? gasleft() : message.gasLimit; - - bool success = LibBridgeInvoke.invokeMessageCall({ - state: state, - message: message, - msgHash: msgHash, - gasLimit: gasLimit - }); - - if (success) { - status = LibBridgeStatus.MessageStatus.DONE; - } else { - status = LibBridgeStatus.MessageStatus.RETRIABLE; - ethVault.sendEther(message.value); - } - } - - // Update the message status - LibBridgeStatus.updateMessageStatus(msgHash, status); - - // Determine the refund recipient - address refundTo = - message.refundTo == address(0) ? message.user : message.refundTo; - - // Refund the processing fee - if (msg.sender == refundTo) { - uint256 amount = message.fee + refundAmount; - refundTo.sendEther(amount); - } else { - // If sender is another address, reward it and refund the rest - msg.sender.sendEther(message.fee); - refundTo.sendEther(refundAmount); - } - } -} diff --git a/packages/protocol/contracts/bridge/libs/LibBridgeRecall.sol b/packages/protocol/contracts/bridge/libs/LibBridgeRecall.sol deleted file mode 100644 index 1746595e7c..0000000000 --- a/packages/protocol/contracts/bridge/libs/LibBridgeRecall.sol +++ /dev/null @@ -1,93 +0,0 @@ -// SPDX-License-Identifier: MIT -// _____ _ _ _ _ -// |_ _|_ _(_) |_____ | | __ _| |__ ___ -// | |/ _` | | / / _ \ | |__/ _` | '_ (_-< -// |_|\__,_|_|_\_\___/ |____\__,_|_.__/__/ - -pragma solidity ^0.8.20; - -import { AddressResolver } from "../../common/AddressResolver.sol"; -import { LibAddress } from "../../libs/LibAddress.sol"; - -import { EtherVault } from "../EtherVault.sol"; -import { IRecallableMessageSender, IBridge } from "../IBridge.sol"; - -import { LibBridgeData } from "./LibBridgeData.sol"; -import { LibBridgeStatus } from "./LibBridgeStatus.sol"; - -/// @title LibBridgeRecall -/// @notice This library provides functions for releasing Ether and tokens -/// related to message execution on the Bridge. -/// The library allows recalling failed messages on their source chain, -/// releasing associated assets. -library LibBridgeRecall { - using LibBridgeData for IBridge.Message; - using LibAddress for address; - - event MessageRecalled(bytes32 indexed msgHash); - - error B_MSG_NOT_FAILED(); - error B_MSG_RECALLED_ALREADY(); - - /// @notice Recalls a failed message on its source chain, releasing - /// associated assets. - /// @dev This function checks if the message failed on the source chain and - /// releases associated Ether or tokens. - /// @param state The current state of the Bridge. - /// @param resolver The AddressResolver instance. - /// @param message The message whose associated Ether should be released. - /// @param proof The proof data. - /// @param checkProof A flag indicating whether to check the proof (test - /// version). - function recallMessage( - LibBridgeData.State storage state, - AddressResolver resolver, - IBridge.Message calldata message, - bytes calldata proof, - bool checkProof - ) - internal - { - bytes32 msgHash = message.hashMessage(); - - if (state.recalls[msgHash]) { - revert B_MSG_RECALLED_ALREADY(); - } - - if ( - checkProof - && !LibBridgeStatus.isMessageFailed( - resolver, msgHash, message.destChainId, proof - ) - ) { - revert B_MSG_NOT_FAILED(); - } - - state.recalls[msgHash] = true; - - // Release necessary Ether from EtherVault if on Taiko, otherwise it's - // already available on this Bridge. - address ethVault = resolver.resolve("ether_vault", true); - if (ethVault != address(0)) { - EtherVault(payable(ethVault)).releaseEther( - address(this), message.value - ); - } - - // Execute the recall logic based on the contract's support for the - // IRecallableMessageSender interface - if ( - message.from.supportsInterface( - type(IRecallableMessageSender).interfaceId - ) - ) { - IRecallableMessageSender(message.from).onMessageRecalled{ - value: message.value - }(message); - } else { - message.user.sendEther(message.value); - } - - emit MessageRecalled(msgHash); - } -} diff --git a/packages/protocol/contracts/bridge/libs/LibBridgeRetry.sol b/packages/protocol/contracts/bridge/libs/LibBridgeRetry.sol deleted file mode 100644 index 82092e68a7..0000000000 --- a/packages/protocol/contracts/bridge/libs/LibBridgeRetry.sol +++ /dev/null @@ -1,99 +0,0 @@ -// SPDX-License-Identifier: MIT -// _____ _ _ _ _ -// |_ _|_ _(_) |_____ | | __ _| |__ ___ -// | |/ _` | | / / _ \ | |__/ _` | '_ (_-< -// |_|\__,_|_|_\_\___/ |____\__,_|_.__/__/ - -pragma solidity ^0.8.20; - -import { AddressResolver } from "../../common/AddressResolver.sol"; -import { LibAddress } from "../../libs/LibAddress.sol"; - -import { EtherVault } from "../EtherVault.sol"; -import { IBridge } from "../IBridge.sol"; - -import { LibBridgeData } from "./LibBridgeData.sol"; -import { LibBridgeInvoke } from "./LibBridgeInvoke.sol"; -import { LibBridgeStatus } from "./LibBridgeStatus.sol"; - -/// @title LibBridgeRetry -/// @notice This library provides functions for retrying bridge messages that -/// are marked as "RETRIABLE". -/// The library facilitates the process of invoking the messageCall after -/// releasing any associated Ether, allowing for retries. -/// It handles the transition of message status from "RETRIABLE" to "DONE" on -/// success, and to "FAILED" on the last attempt if unsuccessful. -library LibBridgeRetry { - using LibAddress for address; - using LibBridgeData for IBridge.Message; - using LibBridgeData for LibBridgeData.State; - - error B_DENIED(); - error B_MSG_NON_RETRIABLE(); - - /// @notice Retries to invoke the messageCall after releasing associated - /// Ether and tokens. - /// @dev This function can be called by any address, including the - /// `message.user`. - /// It attempts to invoke the messageCall and updates the message status - /// accordingly. - /// @param state The current state of the Bridge. - /// @param resolver The address resolver. - /// @param message The message to retry. - /// @param isLastAttempt Specifies if this is the last attempt to retry the - /// message. - function retryMessage( - LibBridgeData.State storage state, - AddressResolver resolver, - IBridge.Message calldata message, - bool isLastAttempt - ) - internal - { - // If the gasLimit is set to 0 or isLastAttempt is true, the caller must - // be the message.user. - if (message.gasLimit == 0 || isLastAttempt) { - if (msg.sender != message.user) revert B_DENIED(); - } - - bytes32 msgHash = message.hashMessage(); - if ( - LibBridgeStatus.getMessageStatus(msgHash) - != LibBridgeStatus.MessageStatus.RETRIABLE - ) { - revert B_MSG_NON_RETRIABLE(); - } - - // Release necessary Ether from EtherVault if on Taiko, otherwise it's - // already available on this Bridge. - address ethVault = resolver.resolve("ether_vault", true); - if (ethVault != address(0)) { - EtherVault(payable(ethVault)).releaseEther( - address(this), message.value - ); - } - - // Attempt to invoke the messageCall. - bool success = LibBridgeInvoke.invokeMessageCall({ - state: state, - message: message, - msgHash: msgHash, - gasLimit: gasleft() - }); - - if (success) { - // Update the message status to "DONE" on successful invocation. - LibBridgeStatus.updateMessageStatus( - msgHash, LibBridgeStatus.MessageStatus.DONE - ); - } else { - // Update the message status to "FAILED" - LibBridgeStatus.updateMessageStatus( - msgHash, LibBridgeStatus.MessageStatus.FAILED - ); - // Release Ether back to EtherVault (if on Taiko it is OK) - // otherwise funds stay at Bridge anyways. - ethVault.sendEther(message.value); - } - } -} diff --git a/packages/protocol/contracts/bridge/libs/LibBridgeSend.sol b/packages/protocol/contracts/bridge/libs/LibBridgeSend.sol deleted file mode 100644 index ef1f48a19a..0000000000 --- a/packages/protocol/contracts/bridge/libs/LibBridgeSend.sol +++ /dev/null @@ -1,147 +0,0 @@ -// SPDX-License-Identifier: MIT -// _____ _ _ _ _ -// |_ _|_ _(_) |_____ | | __ _| |__ ___ -// | |/ _` | | / / _ \ | |__/ _` | '_ (_-< -// |_|\__,_|_|_\_\___/ |____\__,_|_.__/__/ - -pragma solidity ^0.8.20; - -import { AddressResolver } from "../../common/AddressResolver.sol"; -import { ISignalService } from "../../signal/ISignalService.sol"; -import { LibAddress } from "../../libs/LibAddress.sol"; - -import { IBridge } from "../IBridge.sol"; - -import { LibBridgeData } from "./LibBridgeData.sol"; - -/// @title LibBridgeSend -/// @notice This library provides functions for sending bridge messages and -/// checking their status. -/// The library facilitates the process of sending messages to the Bridge, -/// validating input parameters, and managing Ether custody based on destination -/// chains. -library LibBridgeSend { - using LibAddress for address; - using LibBridgeData for IBridge.Message; - - error B_INCORRECT_VALUE(); - error B_USER_IS_NULL(); - error B_WRONG_CHAIN_ID(); - error B_WRONG_TO_ADDRESS(); - - /// @notice Sends a message to the Bridge with the details of the request. - /// @dev This function takes custody of the specified funds, sending them to - /// the EtherVault on Taiko or storing them on the Bridge for processing on - /// the destination chain. - /// @param state The current state of the Bridge. - /// @param resolver The address resolver. - /// @param message The message to be sent, including value and fee details. - /// @return msgHash The hash of the sent message. - function sendMessage( - LibBridgeData.State storage state, - AddressResolver resolver, - IBridge.Message memory message - ) - internal - returns (bytes32 msgHash) - { - // Ensure the message user is not null. - if (message.user == address(0)) { - revert B_USER_IS_NULL(); - } - - // Check if the destination chain is enabled. - (bool destChainEnabled, address destBridge) = - isDestChainEnabled(resolver, message.destChainId); - - // Verify destination chain and to address. - if (!destChainEnabled || message.destChainId == block.chainid) { - revert B_WRONG_CHAIN_ID(); - } - if (message.to == address(0) || message.to == destBridge) { - revert B_WRONG_TO_ADDRESS(); - } - - // Ensure the sent value matches the expected amount. - uint256 expectedAmount = message.value + message.fee; - if (expectedAmount != msg.value) { - revert B_INCORRECT_VALUE(); - } - - // On Taiko, send the expectedAmount to the EtherVault; otherwise, store - // it on the Bridge. - address ethVault = resolver.resolve("ether_vault", true); - ethVault.sendEther(expectedAmount); - - // Configure message details and send signal to indicate message - // sending. - message.id = state.nextMessageId++; - message.from = msg.sender; - message.srcChainId = block.chainid; - - msgHash = message.hashMessage(); - ISignalService(resolver.resolve("signal_service", false)).sendSignal( - msgHash - ); - emit LibBridgeData.MessageSent(msgHash, message); - } - - /// @notice Checks if the destination chain is enabled. - /// @param resolver The address resolver. - /// @param chainId The destination chain ID. - /// @return enabled True if the destination chain is enabled. - /// @return destBridge The bridge of the destination chain. - function isDestChainEnabled( - AddressResolver resolver, - uint256 chainId - ) - internal - view - returns (bool enabled, address destBridge) - { - destBridge = resolver.resolve(chainId, "bridge", true); - enabled = destBridge != address(0); - } - - /// @notice Checks if the message was sent. - /// @param resolver The address resolver. - /// @param msgHash The hash of the sent message. - /// @return True if the message was sent. - function isMessageSent( - AddressResolver resolver, - bytes32 msgHash - ) - internal - view - returns (bool) - { - return ISignalService(resolver.resolve("signal_service", false)) - .isSignalSent({ app: address(this), signal: msgHash }); - } - - /// @notice Checks if the message was received. - /// @param resolver The address resolver. - /// @param msgHash The hash of the received message. - /// @param srcChainId The ID of the source chain. - /// @param proof The proof of message receipt. - /// @return True if the message was received. - function isMessageReceived( - AddressResolver resolver, - bytes32 msgHash, - uint256 srcChainId, - bytes calldata proof - ) - internal - view - returns (bool) - { - address srcBridge = resolver.resolve(srcChainId, "bridge", false); - return ISignalService(resolver.resolve("signal_service", false)) - .isSignalReceived({ - srcChainId: srcChainId, - app: srcBridge, - signal: msgHash, - proof: proof - }); - } -} diff --git a/packages/protocol/contracts/bridge/libs/LibBridgeStatus.sol b/packages/protocol/contracts/bridge/libs/LibBridgeStatus.sol deleted file mode 100644 index 64c45ff200..0000000000 --- a/packages/protocol/contracts/bridge/libs/LibBridgeStatus.sol +++ /dev/null @@ -1,140 +0,0 @@ -// SPDX-License-Identifier: MIT -// _____ _ _ _ _ -// |_ _|_ _(_) |_____ | | __ _| |__ ___ -// | |/ _` | | / / _ \ | |__/ _` | '_ (_-< -// |_|\__,_|_|_\_\___/ |____\__,_|_.__/__/ - -pragma solidity ^0.8.20; - -import { AddressResolver } from "../../common/AddressResolver.sol"; -import { BlockHeader, LibBlockHeader } from "../../libs/LibBlockHeader.sol"; -import { ICrossChainSync } from "../../common/ICrossChainSync.sol"; -import { LibTrieProof } from "../../libs/LibTrieProof.sol"; - -import { LibBridgeData } from "./LibBridgeData.sol"; - -/// @title LibBridgeStatus -/// @notice This library provides functions for getting and updating the status -/// of bridge messages. -/// The library handles various aspects of message statuses, including their -/// retrieval, update, and verification of failure status on the destination -/// chain. -library LibBridgeStatus { - using LibBlockHeader for BlockHeader; - - enum MessageStatus { - NEW, - RETRIABLE, - DONE, - FAILED - } - - event MessageStatusChanged( - bytes32 indexed msgHash, MessageStatus status, address transactor - ); - - error B_MSG_HASH_NULL(); - error B_WRONG_CHAIN_ID(); - - /// @notice Updates the status of a bridge message. - /// @dev If the new status is different from the current status in the - /// mapping, the status is updated and an event is emitted. - /// @param msgHash The hash of the message. - /// @param status The new status of the message. - function updateMessageStatus( - bytes32 msgHash, - MessageStatus status - ) - internal - { - if (getMessageStatus(msgHash) != status) { - _setMessageStatus(msgHash, status); - emit MessageStatusChanged(msgHash, status, msg.sender); - } - } - - /// @notice Gets the status of a bridge message on the destination chain. - /// @param msgHash The hash of the message. - /// @return The status of the message. - function getMessageStatus(bytes32 msgHash) - internal - view - returns (MessageStatus) - { - bytes32 slot = getMessageStatusSlot(msgHash); - uint256 value; - assembly { - value := sload(slot) - } - return MessageStatus(value); - } - - /// @notice Checks whether a bridge message has failed on its destination - /// chain. - /// @param resolver The address resolver. - /// @param msgHash The hash of the message. - /// @param destChainId The ID of the destination chain. - /// @param proof The proof of the status of the message. - /// @return True if the message has failed, false otherwise. - function isMessageFailed( - AddressResolver resolver, - bytes32 msgHash, - uint256 destChainId, - bytes calldata proof - ) - internal - view - returns (bool) - { - if (destChainId == block.chainid) { - revert B_WRONG_CHAIN_ID(); - } - if (msgHash == 0x0) { - revert B_MSG_HASH_NULL(); - } - - LibBridgeData.StatusProof memory sp = - abi.decode(proof, (LibBridgeData.StatusProof)); - - bytes32 syncedHeaderHash = ICrossChainSync( - resolver.resolve("taiko", false) - ).getCrossChainBlockHash(uint64(sp.header.height)); - - if ( - syncedHeaderHash == 0 - || syncedHeaderHash != sp.header.hashBlockHeader() - ) { - return false; - } - - return LibTrieProof.verifyWithFullMerkleProof({ - stateRoot: sp.header.stateRoot, - addr: resolver.resolve(destChainId, "bridge", false), - slot: getMessageStatusSlot(msgHash), - value: bytes32(uint256(LibBridgeStatus.MessageStatus.FAILED)), - mkproof: sp.proof - }); - } - - /// @notice Gets the storage slot for a bridge message status. - /// @param msgHash The hash of the message. - /// @return The storage slot for the message status. - function getMessageStatusSlot(bytes32 msgHash) - internal - pure - returns (bytes32) - { - return keccak256(bytes.concat(bytes("MESSAGE_STATUS"), msgHash)); - } - - /// @notice Sets the status of a bridge message. - /// @param msgHash The hash of the message. - /// @param status The new status of the message. - function _setMessageStatus(bytes32 msgHash, MessageStatus status) private { - bytes32 slot = getMessageStatusSlot(msgHash); - uint256 value = uint256(status); - assembly { - sstore(slot, value) - } - } -} diff --git a/packages/protocol/contracts/common/AddressResolver.sol b/packages/protocol/contracts/common/AddressResolver.sol index 1be57c51b6..04610fb5a3 100644 --- a/packages/protocol/contracts/common/AddressResolver.sol +++ b/packages/protocol/contracts/common/AddressResolver.sol @@ -18,12 +18,12 @@ import { IAddressManager } from "./AddressManager.sol"; /// is no setAddressManager() function go guarantee atomicness across all /// contracts that are resolvers. abstract contract AddressResolver { - IAddressManager internal _addressManager; + address public addressManager; uint256[49] private __gap; error RESOLVER_DENIED(); - error RESOLVER_INVALID_ADDR(); + error RESOLVER_INVALID_MANAGER(); error RESOLVER_ZERO_ADDR(uint256 chainId, bytes32 name); /// @dev Modifier that ensures the caller is the resolved address of a given @@ -83,17 +83,11 @@ abstract contract AddressResolver { return _resolve(chainId, name, allowZeroAddress); } - /// @notice Fetches the AddressManager's address. - /// @return The current address of the AddressManager. - function addressManager() public view returns (address) { - return address(_addressManager); - } - /// @dev Initialization method for setting up AddressManager reference. - /// @param addressManager_ Address of the AddressManager. - function _init(address addressManager_) internal virtual { - if (addressManager_ == address(0)) revert RESOLVER_INVALID_ADDR(); - _addressManager = IAddressManager(addressManager_); + /// @param _addressManager Address of the AddressManager. + function _init(address _addressManager) internal virtual { + if (_addressManager == address(0)) revert RESOLVER_INVALID_MANAGER(); + addressManager = _addressManager; } /// @dev Helper method to resolve name-to-address. @@ -112,7 +106,8 @@ abstract contract AddressResolver { view returns (address payable addr) { - addr = payable(_addressManager.getAddress(chainId, name)); + addr = + payable(IAddressManager(addressManager).getAddress(chainId, name)); if (!allowZeroAddress && addr == address(0)) { revert RESOLVER_ZERO_ADDR(chainId, name); diff --git a/packages/protocol/contracts/common/ICrossChainSync.sol b/packages/protocol/contracts/common/ICrossChainSync.sol index e0a4150a5d..85903e36a8 100644 --- a/packages/protocol/contracts/common/ICrossChainSync.sol +++ b/packages/protocol/contracts/common/ICrossChainSync.sol @@ -13,6 +13,11 @@ pragma solidity ^0.8.20; /// block hashes across chains. The core idea is to ensure that data between /// both chains remain consistent and can be cross-referenced with integrity. interface ICrossChainSync { + struct Snippet { + bytes32 blockHash; + bytes32 signalRoot; + } + /// @dev Emitted when a block has been synced across chains. /// @param srcHeight The height (block id_ that was synced. /// @param blockHash The hash of the synced block. @@ -24,19 +29,9 @@ interface ICrossChainSync { /// @notice Fetches the hash of a block from the opposite chain. /// @param blockId The target block id. Specifying 0 retrieves the hash /// of the latest block. - /// @return The hash of the desired block from the other chain. - function getCrossChainBlockHash(uint64 blockId) - external - view - returns (bytes32); - - /// @notice Retrieves the root hash of the signal service storage for a - /// given block from the opposite chain. - /// @param blockId The target block id. Specifying 0 retrieves the root - /// of the latest block. - /// @return The root hash for the specified block's signal service. - function getCrossChainSignalRoot(uint64 blockId) + /// @return snippet The block hash and signal root synced. + function getSyncedSnippet(uint64 blockId) external view - returns (bytes32); + returns (Snippet memory snippet); } diff --git a/packages/protocol/contracts/libs/LibBlockHeader.sol b/packages/protocol/contracts/libs/LibBlockHeader.sol deleted file mode 100644 index c2becfd739..0000000000 --- a/packages/protocol/contracts/libs/LibBlockHeader.sol +++ /dev/null @@ -1,96 +0,0 @@ -// SPDX-License-Identifier: MIT -// _____ _ _ _ _ -// |_ _|_ _(_) |_____ | | __ _| |__ ___ -// | |/ _` | | / / _ \ | |__/ _` | '_ (_-< -// |_|\__,_|_|_\_\___/ |____\__,_|_.__/__/ - -pragma solidity ^0.8.20; - -import { LibRLPWriter } from "../thirdparty/LibRLPWriter.sol"; - -/// @dev Defines the data structure for an Ethereum block header. -struct BlockHeader { - bytes32 parentHash; - bytes32 ommersHash; - address proposer; - bytes32 stateRoot; - bytes32 transactionsRoot; - bytes32 receiptsRoot; - bytes32[8] logsBloom; - uint256 difficulty; - uint128 height; - uint64 gasLimit; - uint64 gasUsed; - uint64 timestamp; - bytes extraData; - bytes32 mixHash; - uint64 nonce; - uint256 baseFeePerGas; - bytes32 withdrawalsRoot; -} - -/// @title LibBlockHeader -/// @dev Provides utilities for Ethereum block headers. -library LibBlockHeader { - /// @dev Returns the hash of a block header. - /// @param header The block header. - /// @return The hash of the block header. - function hashBlockHeader(BlockHeader memory header) - internal - pure - returns (bytes32) - { - bytes memory rlpHeader = - LibRLPWriter.writeList(_getBlockHeaderRLPItemsList(header, 0)); - return keccak256(rlpHeader); - } - - /// @dev Constructs the RLP item list for a block header. - /// @param header The block header. - /// @param extraCapacity Additional capacity for the list. - /// @return list The RLP item list for the block header. - function _getBlockHeaderRLPItemsList( - BlockHeader memory header, - uint256 extraCapacity - ) - private - pure - returns (bytes[] memory list) - { - if (header.withdrawalsRoot != 0) { - // EIP-4895 transaction - list = new bytes[](17 + extraCapacity); - } else if (header.baseFeePerGas != 0) { - // EIP-1559 transaction - list = new bytes[](16 + extraCapacity); - } else { - // non-EIP-1559 transaction - list = new bytes[](15 + extraCapacity); - } - list[0] = LibRLPWriter.writeHash(header.parentHash); - list[1] = LibRLPWriter.writeHash(header.ommersHash); - list[2] = LibRLPWriter.writeAddress(header.proposer); - list[3] = LibRLPWriter.writeHash(header.stateRoot); - list[4] = LibRLPWriter.writeHash(header.transactionsRoot); - list[5] = LibRLPWriter.writeHash(header.receiptsRoot); - list[6] = LibRLPWriter.writeBytes(abi.encodePacked(header.logsBloom)); - list[7] = LibRLPWriter.writeUint(header.difficulty); - list[8] = LibRLPWriter.writeUint(header.height); - list[9] = LibRLPWriter.writeUint64(header.gasLimit); - list[10] = LibRLPWriter.writeUint64(header.gasUsed); - list[11] = LibRLPWriter.writeUint64(header.timestamp); - list[12] = LibRLPWriter.writeBytes(header.extraData); - list[13] = LibRLPWriter.writeHash(header.mixHash); - // According to the Ethereum yellow paper, we should treat `nonce` - // as [8]byte when hashing the block. - list[14] = LibRLPWriter.writeBytes(abi.encodePacked(header.nonce)); - if (header.baseFeePerGas != 0) { - // EIP-1559 transaction - list[15] = LibRLPWriter.writeUint(header.baseFeePerGas); - } - if (header.withdrawalsRoot != 0) { - // EIP-4895 transaction - list[16] = LibRLPWriter.writeHash(header.withdrawalsRoot); - } - } -} diff --git a/packages/protocol/contracts/libs/LibTrieProof.sol b/packages/protocol/contracts/libs/LibTrieProof.sol deleted file mode 100644 index dfc87b63eb..0000000000 --- a/packages/protocol/contracts/libs/LibTrieProof.sol +++ /dev/null @@ -1,71 +0,0 @@ -// SPDX-License-Identifier: MIT -// _____ _ _ _ _ -// |_ _|_ _(_) |_____ | | __ _| |__ ___ -// | |/ _` | | / / _ \ | |__/ _` | '_ (_-< -// |_|\__,_|_|_\_\___/ |____\__,_|_.__/__/ - -pragma solidity ^0.8.20; - -import { LibRLPReader } from "../thirdparty/LibRLPReader.sol"; -import { LibRLPWriter } from "../thirdparty/LibRLPWriter.sol"; -import { LibSecureMerkleTrie } from "../thirdparty/LibSecureMerkleTrie.sol"; - -/// @title LibTrieProof -/// @dev This library is used for verifying the proof of values within the -/// storage trie of an Ethereum account. -library LibTrieProof { - // Constant defining the index for the storage hash in the RLP-encoded - // account structure. - // It follows the order: nonce, balance, storageHash, codeHash. - uint256 private constant ACCOUNT_FIELD_INDEX_STORAGE_HASH = 2; - - error INVALID_ACCOUNT_PROOF(); - - /// @dev Verifies that the value of a specific slot in the storage of an - /// account equals the given value. - /// @param stateRoot The merkle root of the state tree. - /// @param addr The address of the account. - /// @param slot The specific slot within the storage of the contract. - /// @param value The value to be verified against the proof. - /// @param mkproof The concatenated proof containing both account and - /// storage proofs. - /// @return verified Boolean result indicating if the proof is valid. - function verifyWithFullMerkleProof( - bytes32 stateRoot, - address addr, - bytes32 slot, - bytes32 value, - bytes calldata mkproof - ) - public - pure - returns (bool) - { - // Decoding the proof into account and storage proofs - (bytes memory accountProof, bytes memory storageProof) = - abi.decode(mkproof, (bytes, bytes)); - - // Retrieving the RLP-encoded account and verifying existence - (bool exists, bytes memory rlpAccount) = LibSecureMerkleTrie.get( - abi.encodePacked(addr), accountProof, stateRoot - ); - - if (!exists) revert INVALID_ACCOUNT_PROOF(); - - // Reading the RLP-encoded account into a structured list - LibRLPReader.RLPItem[] memory accountState = - LibRLPReader.readList(rlpAccount); - // Extracting the storage root from the RLP-encoded account - bytes32 storageRoot = LibRLPReader.readBytes32( - accountState[ACCOUNT_FIELD_INDEX_STORAGE_HASH] - ); - - // Verifying the inclusion proof for the value within the storage root - return LibSecureMerkleTrie.verifyInclusionProof( - abi.encodePacked(slot), - LibRLPWriter.writeBytes32(value), - storageProof, - storageRoot - ); - } -} diff --git a/packages/protocol/contracts/signal/ISignalService.sol b/packages/protocol/contracts/signal/ISignalService.sol index f5c43c9241..5073c9315f 100644 --- a/packages/protocol/contracts/signal/ISignalService.sol +++ b/packages/protocol/contracts/signal/ISignalService.sol @@ -44,7 +44,7 @@ interface ISignalService { /// @param proof Merkle proof that the signal was persisted on the /// source chain. /// @return True if the signal has been received, otherwise false. - function isSignalReceived( + function proveSignalReceived( uint256 srcChainId, address app, bytes32 signal, diff --git a/packages/protocol/contracts/signal/SignalService.sol b/packages/protocol/contracts/signal/SignalService.sol index 6a02f09fbc..7342c34925 100644 --- a/packages/protocol/contracts/signal/SignalService.sol +++ b/packages/protocol/contracts/signal/SignalService.sol @@ -15,28 +15,29 @@ import { ISignalService } from "./ISignalService.sol"; /// @title SignalService /// @notice See the documentation in {ISignalService} for more details. -contract SignalService is ISignalService, EssentialContract { - struct SignalProof { +contract SignalService is EssentialContract, ISignalService { + struct Hop { + uint256 chainId; + bytes32 signalRoot; + bytes storageProof; + } + + struct Proof { uint64 height; - bytes proof; // A storage proof + bytes storageProof; + Hop[] hops; } - error B_ZERO_SIGNAL(); - error B_NULL_APP_ADDR(); - error B_WRONG_CHAIN_ID(); + error SS_INVALID_APP(); + error SS_INVALID_SIGNAL(); modifier validApp(address app) { - if (app == address(0)) revert B_NULL_APP_ADDR(); + if (app == address(0)) revert SS_INVALID_APP(); _; } modifier validSignal(bytes32 signal) { - if (signal == 0) revert B_ZERO_SIGNAL(); - _; - } - - modifier validChainId(uint256 srcChainId) { - if (srcChainId == block.chainid) revert B_WRONG_CHAIN_ID(); + if (signal == 0) revert SS_INVALID_SIGNAL(); _; } @@ -45,15 +46,19 @@ contract SignalService is ISignalService, EssentialContract { EssentialContract._init(_addressManager); } + /// @notice Tells if we need to check real proof or it is a test. + /// @return Returns true to skip checking inclusion proofs. + function skipProofCheck() public pure virtual returns (bool) { } + /// @inheritdoc ISignalService function sendSignal(bytes32 signal) public validSignal(signal) - returns (bytes32 storageSlot) + returns (bytes32 slot) { - storageSlot = getSignalSlot(msg.sender, signal); + slot = getSignalSlot(block.chainid, msg.sender, signal); assembly { - sstore(storageSlot, 1) + sstore(slot, 1) } } @@ -68,7 +73,7 @@ contract SignalService is ISignalService, EssentialContract { validSignal(signal) returns (bool) { - bytes32 slot = getSignalSlot(app, signal); + bytes32 slot = getSignalSlot(block.chainid, app, signal); uint256 value; assembly { value := sload(slot) @@ -77,7 +82,7 @@ contract SignalService is ISignalService, EssentialContract { } /// @inheritdoc ISignalService - function isSignalReceived( + function proveSignalReceived( uint256 srcChainId, address app, bytes32 signal, @@ -85,49 +90,73 @@ contract SignalService is ISignalService, EssentialContract { ) public view - validChainId(srcChainId) - validApp(app) - validSignal(signal) returns (bool) { - SignalProof memory signalProof = abi.decode(proof, (SignalProof)); - bytes32 syncedSignalRoot = ICrossChainSync(resolve("taiko", false)) - .getCrossChainSignalRoot(signalProof.height); + if (skipProofCheck()) return true; + + if ( + app == address(0) || signal == 0 || srcChainId == 0 + || srcChainId == block.chainid + ) { + return false; + } + + Proof memory p = abi.decode(proof, (Proof)); + if (p.storageProof.length == 0) return false; + + for (uint256 i; i < p.hops.length; ++i) { + if (p.hops[i].signalRoot == 0) return false; + if (p.hops[i].storageProof.length == 0) return false; + } + + // Check a chain of inclusion proofs. If this chain is chainA, and the + // message is sent on chainC, and we have chainB in the middle, we + // verify that chainB's signalRoot has been sent as a signal by chainB's + // "taiko" contract, then using chainB's signalRoot, we further check + // the signal is sent by chainC's "bridge" contract. + bytes32 signalRoot = ICrossChainSync(resolve("taiko", false)) + .getSyncedSnippet(p.height).signalRoot; + if (signalRoot == 0) return false; + + for (uint256 i; i < p.hops.length; ++i) { + Hop memory hop = p.hops[i]; + bytes32 slot = getSignalSlot( + hop.chainId, + resolve(hop.chainId, "taiko", false), + hop.signalRoot // as a signal + ); + bool verified = LibSecureMerkleTrie.verifyInclusionProof( + bytes.concat(slot), hex"01", hop.storageProof, signalRoot + ); + if (!verified) return false; + + signalRoot = hop.signalRoot; + } return LibSecureMerkleTrie.verifyInclusionProof( - bytes.concat(getSignalSlot(app, signal)), + bytes.concat(getSignalSlot(srcChainId, app, signal)), hex"01", - signalProof.proof, - syncedSignalRoot + p.storageProof, + signalRoot ); } /// @notice Get the storage slot of the signal. + /// @param chainId The address's chainId. /// @param app The address that initiated the signal. /// @param signal The signal to get the storage slot of. - /// @return signalSlot The unique storage slot of the signal which is + /// @return The unique storage slot of the signal which is /// created by encoding the sender address with the signal (message). function getSignalSlot( + uint256 chainId, address app, bytes32 signal ) public pure - returns (bytes32 signalSlot) + returns (bytes32) { - // Equivalent to `keccak256(abi.encodePacked(app, signal))` - assembly { - // Load the free memory pointer - let ptr := mload(0x40) - // Store the app address and signal bytes32 value in the allocated - // memory - mstore(ptr, app) - mstore(add(ptr, 32), signal) - // Calculate the hash of the concatenated arguments using keccak256 - signalSlot := keccak256(add(ptr, 12), 52) - // Update free memory pointer - mstore(0x40, add(ptr, 64)) - } + return keccak256(abi.encodePacked("SINGAL", chainId, app, signal)); } } diff --git a/packages/protocol/contracts/thirdparty/LibBytesUtils.sol b/packages/protocol/contracts/thirdparty/LibBytesUtils.sol index 53f17fd415..dd411386bf 100644 --- a/packages/protocol/contracts/thirdparty/LibBytesUtils.sol +++ b/packages/protocol/contracts/thirdparty/LibBytesUtils.sol @@ -90,18 +90,17 @@ library LibBytesUtils { mstore(tempBytes, _length) - //update free-memory pointer - //allocating the array padded to 32 bytes like the compiler does - // now + // update free-memory pointer allocating the array padded to 32 + // bytes like the compiler does now mstore(0x40, and(add(mc, 31), not(31))) } - //if we want a zero-length slice let's just return a zero-length + // if we want a zero-length slice let's just return a zero-length // array default { tempBytes := mload(0x40) - //zero out the 32 bytes slice we are about to return - //we need to do it because Solidity does not garbage collect + // zero out the 32 bytes slice we are about to return + // we need to do it because Solidity does not garbage collect mstore(tempBytes, 0) mstore(0x40, add(tempBytes, 0x20)) diff --git a/packages/protocol/contracts/thirdparty/LibRLPWriter.sol b/packages/protocol/contracts/thirdparty/LibRLPWriter.sol deleted file mode 100644 index e6c90933c0..0000000000 --- a/packages/protocol/contracts/thirdparty/LibRLPWriter.sol +++ /dev/null @@ -1,293 +0,0 @@ -// SPDX-License-Identifier: MIT -// Taken from -// https://github.com/ethereum-optimism/optimism/blob/develop/packages/contracts/contracts/libraries/rlp/LibRLPWriter.sol -// Modified to support writeBytes32/writeUint64 -// (The MIT License) -// -// Copyright 2020-2021 Optimism -// Copyright 2022-2023 Taiko Labs -// -// Permission is hereby granted, free of charge, to any person obtaining -// a copy of this software and associated documentation files (the -// "Software"), to deal in the Software without restriction, including -// without limitation the rights to use, copy, modify, merge, publish, -// distribute, sublicense, and/or sell copies of the Software, and to -// permit persons to whom the Software is furnished to do so, subject to -// the following conditions: -// -// The above copyright notice and this permission notice shall be -// included in all copies or substantial portions of the Software. -// -// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, -// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF -// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. -// IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY -// CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, -// TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE -// SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. - -pragma solidity ^0.8.20; - -/** - * @title LibRLPWriter - * @author Bakaoh (with modifications) - */ -library LibRLPWriter { - /** - * RLP encodes a byte string. - * @param _in The byte string to encode. - * @return The RLP encoded string in bytes. - */ - function writeBytes(bytes memory _in) - internal - pure - returns (bytes memory) - { - bytes memory encoded; - - if (_in.length == 1 && uint8(_in[0]) < 128) { - encoded = _in; - } else { - encoded = abi.encodePacked(_writeLength(_in.length, 128), _in); - } - - return encoded; - } - - /** - * RLP encodes a list of RLP encoded byte byte strings. - * @param _in The list of RLP encoded byte strings. - * @return The RLP encoded list of items in bytes. - */ - function writeList(bytes[] memory _in) - internal - pure - returns (bytes memory) - { - bytes memory list = _flatten(_in); - return abi.encodePacked(_writeLength(list.length, 192), list); - } - - /** - * RLP encodes a string. - * @param _in The string to encode. - * @return The RLP encoded string in bytes. - */ - function writeString(string memory _in) - internal - pure - returns (bytes memory) - { - return writeBytes(bytes(_in)); - } - - /** - * RLP encodes an address. - * @param _in The address to encode. - * @return The RLP encoded address in bytes. - */ - function writeAddress(address _in) internal pure returns (bytes memory) { - return writeBytes(abi.encodePacked(_in)); - } - - /** - * RLP encodes a uint. - * @param _in The uint256 to encode. - * @return The RLP encoded uint256 in bytes. - */ - function writeUint(uint256 _in) internal pure returns (bytes memory) { - return writeBytes(_toBinary(_in)); - } - - function writeBytes32(bytes32 _in) internal pure returns (bytes memory) { - return writeBytes(_toBinary(uint256(_in))); - } - - /** - * RLP encodes a hash, we should use this function but not writeBytes32 to - * encode a hash, since writeBytes32 will remove the leading zeros of the - * given bytes. - * @param _in The hash to encode. - * @return The RLP encoded hash in bytes. - */ - function writeHash(bytes32 _in) internal pure returns (bytes memory) { - return writeBytes(_toBinaryWithLeadingZeros(uint256(_in))); - } - - function writeUint64(uint64 _in) internal pure returns (bytes memory) { - return writeBytes(_toBinary(_in)); - } - - /** - * RLP encodes a bool. - * @param _in The bool to encode. - * @return The RLP encoded bool in bytes. - */ - function writeBool(bool _in) internal pure returns (bytes memory) { - bytes memory encoded = new bytes(1); - encoded[0] = (_in ? bytes1(0x01) : bytes1(0x80)); - return encoded; - } - - /*////////////////////////////////////////////////////////////// - PRIVATE FUNCTIONS - //////////////////////////////////////////////////////////////*/ - - /** - * Encode the first byte, followed by the `len` in binary form if `length` - * is more than 55. - * @param _len The length of the string or the payload. - * @param _offset 128 if item is string, 192 if item is list. - * @return RLP encoded bytes. - */ - function _writeLength( - uint256 _len, - uint256 _offset - ) - private - pure - returns (bytes memory) - { - bytes memory encoded; - - if (_len < 56) { - encoded = new bytes(1); - encoded[0] = bytes1(uint8(_len) + uint8(_offset)); - } else { - uint256 lenLen; - uint256 i = 1; - while (_len / i != 0) { - ++lenLen; - i *= 256; - } - - encoded = new bytes(lenLen + 1); - encoded[0] = bytes1(uint8(lenLen) + uint8(_offset) + 55); - for (i = 1; i <= lenLen; ++i) { - encoded[i] = bytes1(uint8((_len / (256 ** (lenLen - i))) % 256)); - } - } - - return encoded; - } - - /** - * Encode integer in big endian binary form with no leading zeroes. - * @param _x The integer to encode. - * @return RLP encoded bytes. - */ - function _toBinary(uint256 _x) private pure returns (bytes memory) { - bytes memory b = abi.encodePacked(_x); - - uint256 i; - for (; i < 32; ++i) { - if (b[i] != 0) { - break; - } - } - - bytes memory res = new bytes(32 - i); - for (uint256 j; j < res.length; ++j) { - res[j] = b[i++]; - } - - return res; - } - - /** - * Encode integer in big endian binary form with leading zeroes. - * @param _x The integer to encode. - * @return RLP encoded bytes. - */ - function _toBinaryWithLeadingZeros(uint256 _x) - private - pure - returns (bytes memory) - { - bytes memory b = abi.encodePacked(_x); - - uint256 i; - - bytes memory res = new bytes(32); - for (uint256 j; j < res.length; ++j) { - res[j] = b[i++]; - } - - return res; - } - - /** - * Copies a piece of memory to another location. - * @notice From: - * https://github.com/Arachnid/solidity-stringutils/blob/master/src/strings.sol. - * @param _dest Destination location. - * @param _src Source location. - * @param _len Length of memory to copy. - */ - function _memcpy(uint256 _dest, uint256 _src, uint256 _len) private pure { - uint256 dest = _dest; - uint256 src = _src; - uint256 len = _len; - - for (; len >= 32; len -= 32) { - assembly { - mstore(dest, mload(src)) - } - dest += 32; - src += 32; - } - - uint256 mask; - unchecked { - mask = 256 ** (32 - len) - 1; - } - assembly { - let srcpart := and(mload(src), not(mask)) - let destpart := and(mload(dest), mask) - mstore(dest, or(destpart, srcpart)) - } - } - - /** - * Flattens a list of byte strings into one byte string. - * @notice From: - * https://github.com/sammayo/solidity-rlp-encoder/blob/master/RLPEncode.sol. - * @param _list List of byte strings to flatten. - * @return The flattened byte string. - */ - function _flatten(bytes[] memory _list) - private - pure - returns (bytes memory) - { - if (_list.length == 0) { - return new bytes(0); - } - - uint256 len; - uint256 i; - for (; i < _list.length; ++i) { - len += _list[i].length; - } - - bytes memory flattened = new bytes(len); - uint256 flattenedPtr; - assembly { - flattenedPtr := add(flattened, 0x20) - } - - for (i = 0; i < _list.length; ++i) { - bytes memory item = _list[i]; - - uint256 listPtr; - assembly { - listPtr := add(item, 0x20) - } - - _memcpy(flattenedPtr, listPtr, item.length); - flattenedPtr += _list[i].length; - } - - return flattened; - } -} diff --git a/packages/protocol/contracts/libs/LibUint512Math.sol b/packages/protocol/contracts/thirdparty/LibUint512Math.sol similarity index 100% rename from packages/protocol/contracts/libs/LibUint512Math.sol rename to packages/protocol/contracts/thirdparty/LibUint512Math.sol diff --git a/packages/protocol/contracts/tokenvault/BaseNFTVault.sol b/packages/protocol/contracts/tokenvault/BaseNFTVault.sol index 4e0106f3b8..2673071081 100644 --- a/packages/protocol/contracts/tokenvault/BaseNFTVault.sol +++ b/packages/protocol/contracts/tokenvault/BaseNFTVault.sol @@ -7,14 +7,11 @@ pragma solidity ^0.8.20; import { EssentialContract } from "../common/EssentialContract.sol"; -import { IRecallableMessageSender } from "../bridge/IBridge.sol"; +import { IRecallableSender } from "../bridge/IBridge.sol"; /// @title BaseNFTVault /// @notice Abstract contract for bridging NFTs across different chains. -abstract contract BaseNFTVault is - EssentialContract, - IRecallableMessageSender -{ +abstract contract BaseNFTVault is EssentialContract, IRecallableSender { // Struct representing the canonical NFT on another chain. struct CanonicalNFT { // Chain ID of the NFT. diff --git a/packages/protocol/contracts/tokenvault/ERC1155Vault.sol b/packages/protocol/contracts/tokenvault/ERC1155Vault.sol index 787033719a..f14bb5cb35 100644 --- a/packages/protocol/contracts/tokenvault/ERC1155Vault.sol +++ b/packages/protocol/contracts/tokenvault/ERC1155Vault.sol @@ -20,7 +20,7 @@ import { "lib/openzeppelin-contracts-upgradeable/contracts/token/ERC1155/ERC1155Upgradeable.sol"; import { Proxied } from "../common/Proxied.sol"; -import { IRecallableMessageSender, IBridge } from "../bridge/IBridge.sol"; +import { IBridge, IRecallableSender } from "../bridge/IBridge.sol"; import { LibAddress } from "../libs/LibAddress.sol"; import { LibVaultUtils } from "./libs/LibVaultUtils.sol"; @@ -84,16 +84,16 @@ contract ERC1155Vault is BaseNFTVault, ERC1155ReceiverUpgradeable { message.memo = opt.memo; // Send the message and obtain the message hash - bytes32 msgHash = IBridge(resolve("bridge", false)).sendMessage{ - value: msg.value - }(message); + (bytes32 msgHash, IBridge.Message memory _message) = IBridge( + resolve("bridge", false) + ).sendMessage{ value: msg.value }(message); // Emit TokenSent event emit TokenSent({ msgHash: msgHash, - from: message.user, + from: _message.user, to: opt.to, - destChainId: message.destChainId, + destChainId: _message.destChainId, token: _token, tokenIds: _tokenIds, amounts: _amounts @@ -163,12 +163,11 @@ contract ERC1155Vault is BaseNFTVault, ERC1155ReceiverUpgradeable { }); } - /// @notice Releases deposited ERC1155 token(s) back to the user on the - /// source chain with a proof that the message processing on the destination - /// Bridge has failed. - /// @param message The message that corresponds to the ERC1155 deposit on - /// the source chain. - function onMessageRecalled(IBridge.Message calldata message) + /// @inheritdoc IRecallableSender + function onMessageRecalled( + IBridge.Message calldata message, + bytes32 msgHash + ) external payable override @@ -186,9 +185,7 @@ contract ERC1155Vault is BaseNFTVault, ERC1155ReceiverUpgradeable { (CanonicalNFT, address, address, uint256[], uint256[]) ); - bytes32 msgHash = LibVaultUtils.hashAndCheckToken( - message, resolve("bridge", false), nft.addr - ); + if (nft.addr == address(0)) revert VAULT_INVALID_TOKEN(); unchecked { if (isBridgedToken[nft.addr]) { @@ -258,7 +255,7 @@ contract ERC1155Vault is BaseNFTVault, ERC1155ReceiverUpgradeable { returns (bool) { return interfaceId == type(ERC1155ReceiverUpgradeable).interfaceId - || interfaceId == type(IRecallableMessageSender).interfaceId + || interfaceId == type(IRecallableSender).interfaceId || super.supportsInterface(interfaceId); } @@ -353,7 +350,7 @@ contract ERC1155Vault is BaseNFTVault, ERC1155ReceiverUpgradeable { bytes.concat( ProxiedBridgedERC1155(bridgedToken).init.selector, abi.encode( - address(_addressManager), + addressManager, ctoken.addr, ctoken.chainId, ctoken.symbol, diff --git a/packages/protocol/contracts/tokenvault/ERC20Vault.sol b/packages/protocol/contracts/tokenvault/ERC20Vault.sol index 91175c8d8f..50e7862d9a 100644 --- a/packages/protocol/contracts/tokenvault/ERC20Vault.sol +++ b/packages/protocol/contracts/tokenvault/ERC20Vault.sol @@ -18,7 +18,7 @@ import { IERC165Upgradeable } from import { EssentialContract } from "../common/EssentialContract.sol"; import { IMintableERC20 } from "../common/IMintableERC20.sol"; import { Proxied } from "../common/Proxied.sol"; -import { IRecallableMessageSender, IBridge } from "../bridge/IBridge.sol"; +import { IBridge, IRecallableSender } from "../bridge/IBridge.sol"; import { LibAddress } from "../libs/LibAddress.sol"; import { ProxiedBridgedERC20 } from "./BridgedERC20.sol"; @@ -31,7 +31,7 @@ import { LibVaultUtils } from "./libs/LibVaultUtils.sol"; contract ERC20Vault is EssentialContract, IERC165Upgradeable, - IRecallableMessageSender + IRecallableSender { using LibAddress for address; using SafeERC20Upgradeable for ERC20Upgradeable; @@ -158,13 +158,13 @@ contract ERC20Vault is message.refundTo = opt.refundTo; message.memo = opt.memo; - bytes32 msgHash = IBridge(resolve("bridge", false)).sendMessage{ - value: msg.value - }(message); + (bytes32 msgHash, IBridge.Message memory _message) = IBridge( + resolve("bridge", false) + ).sendMessage{ value: msg.value }(message); emit TokenSent({ msgHash: msgHash, - from: message.user, + from: _message.user, to: opt.to, destChainId: opt.destChainId, token: opt.token, @@ -216,21 +216,17 @@ contract ERC20Vault is }); } - /// @notice Releases deposited ERC20 tokens back to the user on the source - /// ERC20Vault with a proof that the message processing on the destination - /// Bridge has failed. - /// @param message The message that corresponds to the ERC20 deposit on the - /// source chain. - function onMessageRecalled(IBridge.Message calldata message) + /// @inheritdoc IRecallableSender + function onMessageRecalled( + IBridge.Message calldata message, + bytes32 msgHash + ) external payable override nonReentrant onlyFromNamed("bridge") { - IBridge bridge = IBridge(resolve("bridge", false)); - bytes32 msgHash = bridge.hashMessage(message); - (, address token,, uint256 amount) = abi.decode( message.data[4:], (CanonicalERC20, address, address, uint256) ); @@ -264,7 +260,7 @@ contract ERC20Vault is override returns (bool) { - return interfaceId == type(IRecallableMessageSender).interfaceId; + return interfaceId == type(IRecallableSender).interfaceId; } /// @dev Encodes sending bridged or canonical ERC20 tokens to the user. @@ -358,7 +354,7 @@ contract ERC20Vault is bytes.concat( ProxiedBridgedERC20(bridgedToken).init.selector, abi.encode( - address(_addressManager), + addressManager, ctoken.addr, ctoken.chainId, ctoken.decimals, diff --git a/packages/protocol/contracts/tokenvault/ERC721Vault.sol b/packages/protocol/contracts/tokenvault/ERC721Vault.sol index 535605ec2b..c1b5754d25 100644 --- a/packages/protocol/contracts/tokenvault/ERC721Vault.sol +++ b/packages/protocol/contracts/tokenvault/ERC721Vault.sol @@ -18,7 +18,7 @@ import { IERC165Upgradeable } from import { IERC721ReceiverUpgradeable } from "lib/openzeppelin-contracts-upgradeable/contracts/token/ERC721/IERC721ReceiverUpgradeable.sol"; -import { IBridge, IRecallableMessageSender } from "../bridge/IBridge.sol"; +import { IBridge, IRecallableSender } from "../bridge/IBridge.sol"; import { LibAddress } from "../libs/LibAddress.sol"; import { Proxied } from "../common/Proxied.sol"; @@ -74,15 +74,15 @@ contract ERC721Vault is message.refundTo = opt.refundTo; message.memo = opt.memo; - bytes32 msgHash = IBridge(resolve("bridge", false)).sendMessage{ - value: msg.value - }(message); + (bytes32 msgHash, IBridge.Message memory _message) = IBridge( + resolve("bridge", false) + ).sendMessage{ value: msg.value }(message); emit TokenSent({ msgHash: msgHash, - from: message.user, + from: _message.user, to: opt.to, - destChainId: message.destChainId, + destChainId: _message.destChainId, token: _token, tokenIds: _tokenIds, amounts: _amounts @@ -140,12 +140,11 @@ contract ERC721Vault is }); } - /// @notice Release deposited ERC721 token(s) back to the user on the source - /// chain with a proof that the message processing on the destination Bridge - /// has failed. - /// @param message The message that corresponds to the ERC721 deposit on the - /// source chain. - function onMessageRecalled(IBridge.Message calldata message) + /// @inheritdoc IRecallableSender + function onMessageRecalled( + IBridge.Message calldata message, + bytes32 msgHash + ) external payable override @@ -166,9 +165,7 @@ contract ERC721Vault is message.data[4:], (CanonicalNFT, address, address, uint256[]) ); - bytes32 msgHash = LibVaultUtils.hashAndCheckToken( - message, resolve("bridge", false), nft.addr - ); + if (nft.addr == address(0)) revert VAULT_INVALID_TOKEN(); unchecked { if (isBridgedToken[nft.addr]) { @@ -222,7 +219,7 @@ contract ERC721Vault is override returns (bool) { - return interfaceId == type(IRecallableMessageSender).interfaceId; + return interfaceId == type(IRecallableSender).interfaceId; } /// @dev Encodes sending bridged or canonical ERC721 tokens to the user. @@ -300,7 +297,7 @@ contract ERC721Vault is bytes.concat( ProxiedBridgedERC721(bridgedToken).init.selector, abi.encode( - address(_addressManager), + addressManager, ctoken.addr, ctoken.chainId, ctoken.symbol, diff --git a/packages/protocol/contracts/tokenvault/libs/LibVaultUtils.sol b/packages/protocol/contracts/tokenvault/libs/LibVaultUtils.sol index 32cc70fb39..8d5c121352 100644 --- a/packages/protocol/contracts/tokenvault/libs/LibVaultUtils.sol +++ b/packages/protocol/contracts/tokenvault/libs/LibVaultUtils.sol @@ -16,6 +16,7 @@ library LibVaultUtils { uint256 public constant MAX_TOKEN_PER_TXN = 10; error VAULT_INVALID_FROM(); + error VAULT_INVALID_IMPL(); error VAULT_INVALID_TOKEN(); error VAULT_INVALID_TO(); error VAULT_TOKEN_ARRAY_MISMATCH(); @@ -34,7 +35,7 @@ library LibVaultUtils { external returns (address proxy) { - assert(implementation != address(0)); + if (implementation == address(0)) revert VAULT_INVALID_IMPL(); proxy = address( new TransparentUpgradeableProxy(implementation, owner, initializationData) ); @@ -52,33 +53,10 @@ library LibVaultUtils { returns (IBridge.Context memory ctx) { ctx = IBridge(msg.sender).context(); - if ( - ctx.from - != AddressResolver(resolver).resolve( - ctx.srcChainId, validSender, false - ) - ) { - revert VAULT_INVALID_FROM(); - } - } - - /// @dev Checks if token is invalid and returns the message hash - /// @param message The bridged message struct data - /// @param bridgeAddress The bridge contract - /// @param tokenAddress The token address to be checked - function hashAndCheckToken( - IBridge.Message calldata message, - address bridgeAddress, - address tokenAddress - ) - external - pure - returns (bytes32 msgHash) - { - IBridge bridge = IBridge(bridgeAddress); - msgHash = bridge.hashMessage(message); - - if (tokenAddress == address(0)) revert VAULT_INVALID_TOKEN(); + address sender = AddressResolver(resolver).resolve( + ctx.srcChainId, validSender, false + ); + if (ctx.from != sender) revert VAULT_INVALID_FROM(); } function checkIfValidAddresses( @@ -89,10 +67,7 @@ library LibVaultUtils { external pure { - if (to == address(0) || to == vault) { - revert VAULT_INVALID_TO(); - } - + if (to == address(0) || to == vault) revert VAULT_INVALID_TO(); if (token == address(0)) revert VAULT_INVALID_TOKEN(); } @@ -113,16 +88,12 @@ library LibVaultUtils { } if (isERC721) { - for (uint256 i; i < tokenIds.length; i++) { - if (amounts[i] != 0) { - revert VAULT_INVALID_AMOUNT(); - } + for (uint256 i; i < tokenIds.length; ++i) { + if (amounts[i] != 0) revert VAULT_INVALID_AMOUNT(); } } else { - for (uint256 i; i < amounts.length; i++) { - if (amounts[i] == 0) { - revert VAULT_INVALID_AMOUNT(); - } + for (uint256 i; i < amounts.length; ++i) { + if (amounts[i] == 0) revert VAULT_INVALID_AMOUNT(); } } } diff --git a/packages/protocol/contracts/actors_privileges_deployments.md b/packages/protocol/docs/actors_privileges_deployments.md similarity index 100% rename from packages/protocol/contracts/actors_privileges_deployments.md rename to packages/protocol/docs/actors_privileges_deployments.md diff --git a/packages/protocol/genesis/GenerateGenesis.g.sol b/packages/protocol/genesis/GenerateGenesis.g.sol index 148607bc5b..bb23b2e334 100644 --- a/packages/protocol/genesis/GenerateGenesis.g.sol +++ b/packages/protocol/genesis/GenerateGenesis.g.sol @@ -10,13 +10,11 @@ import { TransparentUpgradeableProxy } from "lib/openzeppelin-contracts/contract import { AddressManager } from "../contracts/common/AddressManager.sol"; import { AddressResolver } from "../contracts/common/AddressResolver.sol"; import { Bridge } from "../contracts/bridge/Bridge.sol"; -import { BridgeErrors } from "../contracts/bridge/BridgeErrors.sol"; import { ERC1155Vault } from "../contracts/tokenvault/ERC1155Vault.sol"; import { ERC20Vault } from "../contracts/tokenvault/ERC20Vault.sol"; import { ERC721Vault } from "../contracts/tokenvault/ERC721Vault.sol"; import { EtherVault } from "../contracts/bridge/EtherVault.sol"; import { IBridge } from "../contracts/bridge/IBridge.sol"; -import { LibBridgeStatus } from "../contracts/bridge/libs/LibBridgeStatus.sol"; import { RegularERC20 } from "../contracts/test/erc20/RegularERC20.sol"; import { SignalService } from "../contracts/signal/SignalService.sol"; import { TaikoL2 } from "../contracts/L2/TaikoL2.sol"; @@ -104,7 +102,7 @@ contract TestGenerateGenesis is Test, AddressResolver { TaikoL2 taikoL2 = TaikoL2(getPredeployedContractAddress("TaikoL2Proxy")); vm.startPrank(taikoL2.GOLDEN_TOUCH_ADDRESS()); - for (uint32 i = 0; i < 300; i++) { + for (uint32 i = 0; i < 300; ++i) { vm.roll(block.number + 1); vm.warp(block.number + 12); vm.fee(taikoL2.getBasefee(12, i)); @@ -145,7 +143,7 @@ contract TestGenerateGenesis is Test, AddressResolver { assertEq(owner, bridge.owner()); - vm.expectRevert(BridgeErrors.B_FORBIDDEN.selector); + vm.expectRevert(Bridge.B_PERMISSION_DENIED.selector); bridge.processMessage( IBridge.Message({ id: 0, diff --git a/packages/protocol/package.json b/packages/protocol/package.json index f719674e98..e45c35fe8f 100644 --- a/packages/protocol/package.json +++ b/packages/protocol/package.json @@ -17,8 +17,8 @@ "sizer": "pnpm hardhat size-contracts", "snapshot": "forge snapshot --match-path 'test/**/*.t.sol'", "test": "forge test -vvv --gas-report --match-path test/*.t.sol", - "test:coverage": "forge coverage --report lcov", - "test:genesis": "FOUNDRY_PROFILE=genesis ./genesis/generate_genesis.test.sh", + "test:coverage": "mkdir -p coverage && forge coverage --report lcov && lcov --remove ./lcov.info -o ./coverage/lcov.info 'test/' 'script/' 'contracts/thirdparty/' && genhtml coverage/lcov.info --branch-coverage --output-dir coverage --ignore-errors category && open coverage/index.html", + "test:genesis": "pnpm compile && pnpm compile:hardhat && FOUNDRY_PROFILE=genesis ./genesis/generate_genesis.test.sh", "upgrade": "./script/upgrade_to.sh" }, "keywords": [ diff --git a/packages/protocol/script/DeployOnL1.s.sol b/packages/protocol/script/DeployOnL1.s.sol index 22e1bad756..76969121b8 100644 --- a/packages/protocol/script/DeployOnL1.s.sol +++ b/packages/protocol/script/DeployOnL1.s.sol @@ -14,12 +14,10 @@ import "lib/openzeppelin-contracts/contracts/utils/Strings.sol"; import "../contracts/L1/TaikoToken.sol"; import "../contracts/L1/TaikoL1.sol"; import "../contracts/L1/verifiers/PseZkVerifier.sol"; -import "../contracts/L1/verifiers/SGXVerifier.sol"; +import "../contracts/L1/verifiers/SgxVerifier.sol"; import "../contracts/L1/verifiers/GuardianVerifier.sol"; import "../contracts/L1/tiers/ITierProvider.sol"; -import "../contracts/L1/tiers/OptimisticRollupConfigProvider.sol"; -import "../contracts/L1/tiers/ValidityRollupConfigProvider.sol"; -import "../contracts/L1/tiers/ZKRollupConfigProvider.sol"; +import "../contracts/L1/tiers/TaikoA6TierProvider.sol"; import "../contracts/bridge/Bridge.sol"; import "../contracts/tokenvault/ERC20Vault.sol"; import "../contracts/tokenvault/ERC1155Vault.sol"; @@ -60,11 +58,7 @@ contract DeployOnL1 is Script { TaikoL1 taikoL1; address public addressManagerProxy; - enum tierProviders { - OptimisticRollupConfigProvider, - ValidityRollupConfigProvider, - ZKRollupConfigProvider - } + enum TierProviders { TAIKO_ALPHA6 } error FAILED_TO_DEPLOY_PLONK_VERIFIER(string contractPath); @@ -81,8 +75,6 @@ contract DeployOnL1 is Script { == taikoTokenPremintAmounts.length, "taikoTokenPremintRecipients and taikoTokenPremintAmounts must be same length" ); - require(validateTierProvider(tierProvider), "invalid tier provider"); - vm.startBroadcast(deployerPrivateKey); // AddressManager @@ -180,8 +172,12 @@ contract DeployOnL1 is Script { ) ); - // TierProvider - deployProxy("tier_provider", deployTierProvider(tierProvider), ""); + // Config provider + deployProxy( + "tier_provider", + deployTierProvider(uint256(TierProviders.TAIKO_ALPHA6)), + "" + ); // GuardianVerifier GuardianVerifier guardianVerifier = new ProxiedGuardianVerifier(); @@ -193,8 +189,8 @@ contract DeployOnL1 is Script { ) ); - // SGXVerifier - SGXVerifier sgxVerifier = new ProxiedSGXVerifier(); + // SgxVerifier + SgxVerifier sgxVerifier = new ProxiedSgxVerifier(); deployProxy( "tier_sgx", address(sgxVerifier), @@ -204,12 +200,12 @@ contract DeployOnL1 is Script { ); // PseZkVerifier - PseZkVerifier proofVerifier = new ProxiedPseZkVerifier(); + PseZkVerifier pseZkVerifier = new ProxiedPseZkVerifier(); deployProxy( "tier_pse_zkevm", - address(proofVerifier), + address(pseZkVerifier), bytes.concat( - proofVerifier.init.selector, abi.encode(addressManagerProxy) + pseZkVerifier.init.selector, abi.encode(addressManagerProxy) ) ); @@ -230,23 +226,20 @@ contract DeployOnL1 is Script { setAddress("signal_service", sharedSignalService); } + // PlonkVerifier + deployPlonkVerifiers(pseZkVerifier); + vm.stopBroadcast(); } - function validateTierProvider(uint256 provier) - private - pure - returns (bool) - { - if ( - provier == uint256(tierProviders.OptimisticRollupConfigProvider) - || provier == uint256(tierProviders.ValidityRollupConfigProvider) - || provier == uint256(tierProviders.ZKRollupConfigProvider) - ) { - return true; - } + function deployPlonkVerifiers(PseZkVerifier pseZkVerifier) private { + address[] memory plonkVerifiers = new address[](1); + plonkVerifiers[0] = + deployYulContract("contracts/L1/verifiers/PlonkVerifier.yulp"); - return false; + for (uint16 i = 0; i < plonkVerifiers.length; ++i) { + setAddress(pseZkVerifier.getVerifierName(i), plonkVerifiers[i]); + } } function deployYulContract(string memory contractPath) @@ -279,21 +272,15 @@ contract DeployOnL1 is Script { return deployedAddress; } - function deployTierProvider(uint256 provier) + function deployTierProvider(uint256 tier) private returns (address providerAddress) { - if (provier == uint256(tierProviders.OptimisticRollupConfigProvider)) { - return address(new OptimisticRollupConfigProvider()); - } else if ( - provier == uint256(tierProviders.ValidityRollupConfigProvider) - ) { - return address(new ValidityRollupConfigProvider()); - } else if (provier == uint256(tierProviders.ZKRollupConfigProvider)) { - return address(new ZKRollupConfigProvider()); + if (tier == uint256(TierProviders.TAIKO_ALPHA6)) { + return address(new TaikoA6TierProvider()); } - revert(); + revert("invalid provider"); } function deployProxy( diff --git a/packages/protocol/test/L1/SgxVerifier.t.sol b/packages/protocol/test/L1/SgxVerifier.t.sol new file mode 100644 index 0000000000..9337f9d3aa --- /dev/null +++ b/packages/protocol/test/L1/SgxVerifier.t.sol @@ -0,0 +1,62 @@ +// SPDX-License-Identifier: MIT +pragma solidity ^0.8.20; + +import { Test } from "forge-std/Test.sol"; +import { console2 } from "forge-std/console2.sol"; +import { TaikoL1 } from "../../contracts/L1/TaikoL1.sol"; +import { SgxVerifier } from "../../contracts/L1/verifiers/SgxVerifier.sol"; +import { TaikoL1TestBase } from "./TaikoL1TestBase.sol"; + +contract TestSgxVerifier is TaikoL1TestBase { + function deployTaikoL1() internal override returns (TaikoL1 taikoL1) { + taikoL1 = new TaikoL1(); + } + + function setUp() public override { + TaikoL1TestBase.setUp(); + } + + function test_addInstancesByOwner() external { + address[] memory _instances = new address[](3); + _instances[0] = SGX_X_1; + _instances[1] = SGX_Y; + _instances[2] = SGX_Z; + sv.addInstances(_instances); + } + + function test_addInstancesByOwner_WithoutOwnerRole() external { + address[] memory _instances = new address[](3); + _instances[0] = SGX_X_0; + _instances[1] = SGX_Y; + _instances[2] = SGX_Z; + + vm.expectRevert(); + vm.prank(Bob, Bob); + sv.addInstances(_instances); + } + + function test_addInstancesBySgxInstance() external { + address[] memory _instances = new address[](3); + _instances[0] = SGX_X_1; + _instances[1] = SGX_Y; + _instances[2] = SGX_Z; + + bytes memory signature = _getSignature(_instances, 0x4); + + vm.prank(Bob, Bob); + sv.addInstances(0, _instances, signature); + } + + function _getSignature( + address[] memory _instances, + uint256 privKey + ) + private + pure + returns (bytes memory signature) + { + bytes32 digest = keccak256(abi.encode("ADD_INSTANCES", _instances)); + (uint8 v, bytes32 r, bytes32 s) = vm.sign(privKey, digest); + signature = abi.encodePacked(r, s, v); + } +} diff --git a/packages/protocol/test/L1/TaikoL1.t.sol b/packages/protocol/test/L1/TaikoL1.t.sol index 8cfc31756f..886b05d4e8 100644 --- a/packages/protocol/test/L1/TaikoL1.t.sol +++ b/packages/protocol/test/L1/TaikoL1.t.sol @@ -78,8 +78,7 @@ contract TaikoL1Test is TaikoL1TestBase { blockHash, signalRoot, L1.getBlock(meta.id).minTier, - "", - false + "" ); vm.roll(block.number + 15 * 12); @@ -105,7 +104,7 @@ contract TaikoL1Test is TaikoL1TestBase { bytes32 parentHash = GENESIS_BLOCK_HASH; - for (uint256 blockId = 1; blockId <= 20; blockId++) { + for (uint256 blockId = 1; blockId <= 20; ++blockId) { printVariables("before propose"); TaikoData.BlockMetadata memory meta = proposeBlock(Alice, Bob, 1_000_000, 1024); @@ -122,8 +121,7 @@ contract TaikoL1Test is TaikoL1TestBase { blockHash, signalRoot, L1.getBlock(meta.id).minTier, - "", - false + "" ); vm.roll(block.number + 15 * 12); uint16 minTier = L1.getBlock(meta.id).minTier; @@ -165,8 +163,7 @@ contract TaikoL1Test is TaikoL1TestBase { blockHash, signalRoot, L1.getBlock(meta.id).minTier, - "", - false + "" ); parentHash = blockHash; } @@ -243,16 +240,16 @@ contract TaikoL1Test is TaikoL1TestBase { /// @dev getCrossChainBlockHash tests function test_L1_getCrossChainBlockHash0() external { - bytes32 genHash = L1.getCrossChainBlockHash(0); + bytes32 genHash = L1.getSyncedSnippet(0).blockHash; assertEq(GENESIS_BLOCK_HASH, genHash); // Reverts if block is not yet verified! vm.expectRevert(TaikoErrors.L1_BLOCK_MISMATCH.selector); - L1.getCrossChainBlockHash(1); + L1.getSyncedSnippet(1); } - /// @dev getCrossChainSignalRoot tests - function test_L1_getCrossChainSignalRoot() external { + /// @dev getSyncedSnippet tests + function test_L1_getSyncedSnippet() external { uint64 count = 10; // Declare here so that block prop/prove/verif. can be used in 1 place TaikoData.BlockMetadata memory meta; @@ -267,7 +264,7 @@ contract TaikoL1Test is TaikoL1TestBase { console2.log("Bob balance:", tko.balanceOf(Bob)); // Propose blocks - for (uint64 blockId = 1; blockId < count; blockId++) { + for (uint64 blockId = 1; blockId < count; ++blockId) { printVariables("before propose"); meta = proposeBlock(Alice, Bob, 1_000_000, 1024); mine(5); @@ -283,8 +280,7 @@ contract TaikoL1Test is TaikoL1TestBase { blockHash, signalRoot, L1.getBlock(meta.id).minTier, - "", - false + "" ); vm.roll(block.number + 15 * 12); @@ -294,7 +290,7 @@ contract TaikoL1Test is TaikoL1TestBase { verifyBlock(Carol, 1); // Querying written blockhash - assertEq(L1.getCrossChainBlockHash(blockId), blockHash); + assertEq(L1.getSyncedSnippet(blockId).blockHash, blockHash); mine(5); parentHashes[blockId] = blockHash; @@ -303,16 +299,16 @@ contract TaikoL1Test is TaikoL1TestBase { uint64 queriedBlockId = 1; bytes32 expectedSR = bytes32(1e9 + uint256(queriedBlockId)); - assertEq(expectedSR, L1.getCrossChainSignalRoot(queriedBlockId)); + assertEq(expectedSR, L1.getSyncedSnippet(queriedBlockId).signalRoot); // 2nd queriedBlockId = 2; expectedSR = bytes32(1e9 + uint256(queriedBlockId)); - assertEq(expectedSR, L1.getCrossChainSignalRoot(queriedBlockId)); + assertEq(expectedSR, L1.getSyncedSnippet(queriedBlockId).signalRoot); // Not found -> reverts vm.expectRevert(TaikoErrors.L1_BLOCK_MISMATCH.selector); - L1.getCrossChainSignalRoot((count + 1)); + L1.getSyncedSnippet((count + 1)); } function test_L1_deposit_hash_creation() external { diff --git a/packages/protocol/test/L1/TaikoL1LibProvingWithTiers.t.sol b/packages/protocol/test/L1/TaikoL1LibProvingWithTiers.t.sol index 3129558917..7e21eb9cdd 100644 --- a/packages/protocol/test/L1/TaikoL1LibProvingWithTiers.t.sol +++ b/packages/protocol/test/L1/TaikoL1LibProvingWithTiers.t.sol @@ -6,6 +6,7 @@ import { console2 } from "forge-std/console2.sol"; import { AddressManager } from "../../contracts/common/AddressManager.sol"; import { LibUtils } from "../../contracts/L1/libs/LibUtils.sol"; +import { LibProposing } from "../../contracts/L1/libs/LibProposing.sol"; import { GuardianVerifier } from "../../contracts/L1/verifiers/GuardianVerifier.sol"; import { TaikoData } from "../../contracts/L1/TaikoData.sol"; @@ -48,6 +49,35 @@ contract TaikoL1LibProvingWithTiers is TaikoL1TestBase { TaikoL1TestBase.setUp(); } + function proveHigherTierProof( + TaikoData.BlockMetadata memory meta, + bytes32 parentHash, + bytes32 signalRoot, + bytes32 blockHash, + uint16 minTier + ) + internal + { + uint16 tierToProveWith; + if (minTier == LibTiers.TIER_OPTIMISTIC) { + tierToProveWith = LibTiers.TIER_SGX; + } else if (minTier == LibTiers.TIER_SGX) { + tierToProveWith = LibTiers.TIER_SGX_AND_PSE_ZKEVM; + } else if (minTier == LibTiers.TIER_SGX_AND_PSE_ZKEVM) { + tierToProveWith = LibTiers.TIER_GUARDIAN; + } + proveBlock( + Carol, + Carol, + meta, + parentHash, + blockHash, + signalRoot, + tierToProveWith, + "" + ); + } + function test_L1_ContestingWithSameProof() external { giveEthAndTko(Alice, 1e7 ether, 1000 ether); giveEthAndTko(Carol, 1e7 ether, 1000 ether); @@ -83,8 +113,7 @@ contract TaikoL1LibProvingWithTiers is TaikoL1TestBase { blockHash, signalRoot, L1.getBlock(meta.id).minTier, - "", - false + "" ); // Try to contest - but should revert with L1_ALREADY_PROVED @@ -96,8 +125,7 @@ contract TaikoL1LibProvingWithTiers is TaikoL1TestBase { blockHash, signalRoot, L1.getBlock(meta.id).minTier, - TaikoErrors.L1_ALREADY_PROVED.selector, - false + TaikoErrors.L1_ALREADY_PROVED.selector ); vm.roll(block.number + 15 * 12); @@ -140,55 +168,34 @@ contract TaikoL1LibProvingWithTiers is TaikoL1TestBase { // This proof cannot be verified obviously because of // signalRoot instead of blockHash uint16 minTier = L1.getBlock(meta.id).minTier; + proveBlock( - Bob, - Bob, + Bob, Bob, meta, parentHash, signalRoot, signalRoot, minTier, "" + ); + + // Try to contest + proveBlock( + Carol, + Carol, meta, parentHash, - signalRoot, + blockHash, signalRoot, minTier, - "", - false + "" ); - if (minTier == LibTiers.TIER_OPTIMISTIC) { - // Try to contest - proveBlock( - Carol, - Carol, - meta, - parentHash, - blockHash, - signalRoot, - minTier, - "", - false - ); - - vm.roll(block.number + 15 * 12); + vm.roll(block.number + 15 * 12); - vm.warp( - block.timestamp + L1.getTier(minTier).cooldownWindow + 1 - ); + vm.warp(block.timestamp + L1.getTier(minTier).cooldownWindow + 1); - // Cannot verify block because it is contested.. - verifyBlock(Carol, 1); + // Cannot verify block because it is contested.. + verifyBlock(Carol, 1); - proveBlock( - Carol, - Carol, - meta, - parentHash, - blockHash, - signalRoot, - LibTiers.TIER_PSE_ZKEVM, - "", - false - ); - } + proveHigherTierProof( + meta, parentHash, signalRoot, blockHash, minTier + ); - // Otherwise just not contest vm.warp( block.timestamp + L1.getTier(LibTiers.TIER_GUARDIAN).cooldownWindow + 1 @@ -201,7 +208,7 @@ contract TaikoL1LibProvingWithTiers is TaikoL1TestBase { printVariables(""); } - function test_L1_ContestingWithDifferentButInCorrectProof() external { + function test_L1_ContestingWithSgxProof() external { giveEthAndTko(Alice, 1e8 ether, 1000 ether); giveEthAndTko(Carol, 1e8 ether, 1000 ether); console2.log("Alice balance:", tko.balanceOf(Alice)); @@ -229,17 +236,77 @@ contract TaikoL1LibProvingWithTiers is TaikoL1TestBase { // This proof cannot be verified obviously because of // signalRoot instead of blockHash uint16 minTier = L1.getBlock(meta.id).minTier; + proveBlock( + Bob, Bob, meta, parentHash, signalRoot, signalRoot, minTier, "" + ); + // Try to contest proveBlock( - Bob, - Bob, + Carol, + Carol, meta, parentHash, blockHash, signalRoot, minTier, - "", - false + "" + ); + + vm.roll(block.number + 15 * 12); + + vm.warp(block.timestamp + L1.getTier(minTier).cooldownWindow + 1); + + // Cannot verify block because it is contested.. + verifyBlock(Carol, 1); + + proveHigherTierProof( + meta, parentHash, signalRoot, blockHash, minTier + ); + + // Otherwise just not contest + vm.warp( + block.timestamp + + L1.getTier(LibTiers.TIER_GUARDIAN).cooldownWindow + 1 + ); + // Now can verify + verifyBlock(Carol, 1); + + parentHash = blockHash; + } + printVariables(""); + } + + function test_L1_ContestingWithDifferentButInCorrectProof() external { + giveEthAndTko(Alice, 1e8 ether, 1000 ether); + giveEthAndTko(Carol, 1e8 ether, 1000 ether); + console2.log("Alice balance:", tko.balanceOf(Alice)); + // This is a very weird test (code?) issue here. + // If this line is uncommented, + // Alice/Bob has no balance.. (Causing reverts !!!) + // Current investigations are ongoing with foundry team + giveEthAndTko(Bob, 1e8 ether, 100 ether); + console2.log("Bob balance:", tko.balanceOf(Bob)); + // Bob + vm.prank(Bob, Bob); + + bytes32 parentHash = GENESIS_BLOCK_HASH; + for ( + uint256 blockId = 1; blockId < conf.blockMaxProposals * 3; blockId++ + ) { + printVariables("before propose"); + TaikoData.BlockMetadata memory meta = + proposeBlock(Alice, Bob, 1_000_000, 1024); + //printVariables("after propose"); + mine(1); + + bytes32 blockHash = bytes32(1e10 + blockId); + bytes32 signalRoot = bytes32(1e9 + blockId); + // This proof cannot be verified obviously because of + // signalRoot instead of blockHash + uint16 minTier = L1.getBlock(meta.id).minTier; + + proveBlock( + Bob, Bob, meta, parentHash, blockHash, signalRoot, minTier, "" ); if (minTier == LibTiers.TIER_OPTIMISTIC) { @@ -252,8 +319,7 @@ contract TaikoL1LibProvingWithTiers is TaikoL1TestBase { signalRoot, signalRoot, minTier, - "", - false + "" ); vm.roll(block.number + 15 * 12); @@ -272,9 +338,8 @@ contract TaikoL1LibProvingWithTiers is TaikoL1TestBase { parentHash, blockHash, signalRoot, - LibTiers.TIER_PSE_ZKEVM, - "", - false + LibTiers.TIER_SGX_AND_PSE_ZKEVM, + "" ); } @@ -318,15 +383,7 @@ contract TaikoL1LibProvingWithTiers is TaikoL1TestBase { // signalRoot instead of blockHash uint16 minTier = L1.getBlock(meta.id).minTier; proveBlock( - Bob, - Bob, - meta, - parentHash, - signalRoot, - signalRoot, - minTier, - "", - false + Bob, Bob, meta, parentHash, signalRoot, signalRoot, minTier, "" ); if (minTier == LibTiers.TIER_OPTIMISTIC) { @@ -339,8 +396,7 @@ contract TaikoL1LibProvingWithTiers is TaikoL1TestBase { blockHash, signalRoot, minTier, - "", - false + "" ); vm.roll(block.number + 15 * 12); @@ -360,9 +416,8 @@ contract TaikoL1LibProvingWithTiers is TaikoL1TestBase { parentHash, 0, signalRoot, - LibTiers.TIER_PSE_ZKEVM, - TaikoErrors.L1_INVALID_EVIDENCE.selector, - false + LibTiers.TIER_SGX_AND_PSE_ZKEVM, + TaikoErrors.L1_INVALID_EVIDENCE.selector ); } @@ -412,8 +467,7 @@ contract TaikoL1LibProvingWithTiers is TaikoL1TestBase { blockHash, signalRoot, L1.getBlock(meta.id).minTier, - TaikoErrors.L1_NOT_ASSIGNED_PROVER.selector, - false + TaikoErrors.L1_NOT_ASSIGNED_PROVER.selector ); vm.roll(block.number + 15 * 12); @@ -463,8 +517,7 @@ contract TaikoL1LibProvingWithTiers is TaikoL1TestBase { blockHash, signalRoot, L1.getBlock(meta.id).minTier, - TaikoErrors.L1_ASSIGNED_PROVER_NOT_ALLOWED.selector, - false + TaikoErrors.L1_ASSIGNED_PROVER_NOT_ALLOWED.selector ); verifyBlock(Carol, 1); @@ -474,8 +527,6 @@ contract TaikoL1LibProvingWithTiers is TaikoL1TestBase { } function test_L1_GuardianProverCannotOverwriteIfSameProof() external { - registerAddress("guardian", Carol); - giveEthAndTko(Alice, 1e7 ether, 1000 ether); giveEthAndTko(Carol, 1e7 ether, 1000 ether); console2.log("Alice balance:", tko.balanceOf(Alice)); @@ -510,8 +561,7 @@ contract TaikoL1LibProvingWithTiers is TaikoL1TestBase { blockHash, signalRoot, L1.getBlock(meta.id).minTier, - "", - false + "" ); // Try to contest - but should revert with L1_ALREADY_PROVED @@ -523,8 +573,7 @@ contract TaikoL1LibProvingWithTiers is TaikoL1TestBase { blockHash, signalRoot, LibTiers.TIER_GUARDIAN, - TaikoErrors.L1_ALREADY_PROVED.selector, - false + TaikoErrors.L1_ALREADY_PROVED.selector ); vm.roll(block.number + 15 * 12); @@ -540,8 +589,6 @@ contract TaikoL1LibProvingWithTiers is TaikoL1TestBase { } function test_L1_GuardianProverFailsWithInvalidBlockHash() external { - registerAddress("guardian", Carol); - giveEthAndTko(Alice, 1e7 ether, 1000 ether); giveEthAndTko(Carol, 1e7 ether, 1000 ether); console2.log("Alice balance:", tko.balanceOf(Alice)); @@ -576,8 +623,7 @@ contract TaikoL1LibProvingWithTiers is TaikoL1TestBase { blockHash, signalRoot, L1.getBlock(meta.id).minTier, - "", - false + "" ); // Try to contest - but should revert with L1_ALREADY_PROVED @@ -589,8 +635,7 @@ contract TaikoL1LibProvingWithTiers is TaikoL1TestBase { 0, signalRoot, LibTiers.TIER_GUARDIAN, - TaikoErrors.L1_INVALID_EVIDENCE.selector, - false + TaikoErrors.L1_INVALID_EVIDENCE.selector ); vm.roll(block.number + 15 * 12); @@ -606,8 +651,6 @@ contract TaikoL1LibProvingWithTiers is TaikoL1TestBase { } function test_L1_GuardianProverCanOverwriteIfNotSameProof() external { - registerAddress("guardian", Carol); - giveEthAndTko(Alice, 1e7 ether, 1000 ether); giveEthAndTko(Carol, 1e7 ether, 1000 ether); console2.log("Alice balance:", tko.balanceOf(Alice)); @@ -642,8 +685,7 @@ contract TaikoL1LibProvingWithTiers is TaikoL1TestBase { signalRoot, signalRoot, L1.getBlock(meta.id).minTier, - "", - false + "" ); // Prove as guardian @@ -655,8 +697,7 @@ contract TaikoL1LibProvingWithTiers is TaikoL1TestBase { blockHash, signalRoot, LibTiers.TIER_GUARDIAN, - "", - false + "" ); vm.roll(block.number + 15 * 12); @@ -706,8 +747,7 @@ contract TaikoL1LibProvingWithTiers is TaikoL1TestBase { signalRoot, signalRoot, L1.getBlock(meta.id).minTier, - "", - false + "" ); // Prove as guardian but in reality not a guardian @@ -719,8 +759,7 @@ contract TaikoL1LibProvingWithTiers is TaikoL1TestBase { blockHash, signalRoot, LibTiers.TIER_GUARDIAN, - GuardianVerifier.PERMISSION_DENIED.selector, - false + GuardianVerifier.PERMISSION_DENIED.selector ); vm.roll(block.number + 15 * 12); @@ -770,8 +809,7 @@ contract TaikoL1LibProvingWithTiers is TaikoL1TestBase { blockHash, signalRoot, LibTiers.TIER_PSE_ZKEVM, - TaikoErrors.L1_INVALID_BLOCK_ID.selector, - false + TaikoErrors.L1_INVALID_BLOCK_ID.selector ); parentHash = blockHash; @@ -815,8 +853,7 @@ contract TaikoL1LibProvingWithTiers is TaikoL1TestBase { blockHash, signalRoot, LibTiers.TIER_PSE_ZKEVM, - TaikoErrors.L1_BLOCK_MISMATCH.selector, - false + TaikoErrors.L1_BLOCK_MISMATCH.selector ); parentHash = blockHash; @@ -825,8 +862,6 @@ contract TaikoL1LibProvingWithTiers is TaikoL1TestBase { } function test_L1_GuardianProofCannotBeOverwrittenByLowerTier() external { - registerAddress("guardian", Carol); - giveEthAndTko(Alice, 1e7 ether, 1000 ether); giveEthAndTko(Carol, 1e7 ether, 1000 ether); console2.log("Alice balance:", tko.balanceOf(Alice)); @@ -861,8 +896,7 @@ contract TaikoL1LibProvingWithTiers is TaikoL1TestBase { signalRoot, signalRoot, L1.getBlock(meta.id).minTier, - "", - false + "" ); // Prove as guardian @@ -874,8 +908,7 @@ contract TaikoL1LibProvingWithTiers is TaikoL1TestBase { blockHash, signalRoot, LibTiers.TIER_GUARDIAN, - "", - false + "" ); // Try to re-prove but reverts @@ -887,8 +920,7 @@ contract TaikoL1LibProvingWithTiers is TaikoL1TestBase { signalRoot, signalRoot, LibTiers.TIER_PSE_ZKEVM, - TaikoErrors.L1_INVALID_TIER.selector, - false + TaikoErrors.L1_INVALID_TIER.selector ); vm.roll(block.number + 15 * 12); @@ -904,8 +936,6 @@ contract TaikoL1LibProvingWithTiers is TaikoL1TestBase { } function test_L1_GuardianCanReturnBondIfBlockUnprovable() external { - registerAddress("guardian", Carol); - giveEthAndTko(Alice, 1e7 ether, 1000 ether); giveEthAndTko(Carol, 1e7 ether, 1000 ether); console2.log("Alice balance:", tko.balanceOf(Alice)); @@ -940,27 +970,34 @@ contract TaikoL1LibProvingWithTiers is TaikoL1TestBase { signalRoot, signalRoot, L1.getBlock(meta.id).minTier, - "", - false + "" ); - // Let's say the 10th block is unprovable + // Let's say the 10th block is unprovable so prove accordingly if (blockId == 10) { - // Prove as guardian - proveBlock( - Carol, - Carol, - meta, - parentHash, - blockHash, - signalRoot, - LibTiers.TIER_GUARDIAN, - "", - true - ); - - // Credited back the bond (not transferred to the user wallet, - // but in-contract account credited only.) + TaikoData.BlockEvidence memory evidence = TaikoData + .BlockEvidence({ + metaHash: LibProposing.hashMetadata(meta), + parentHash: parentHash, + blockHash: blockHash, + signalRoot: signalRoot, + graffiti: 0x0, + tier: LibTiers.TIER_GUARDIAN, + proof: new bytes(102) + }); + + evidence.proof = bytes.concat(keccak256("RETURN_LIVENESS_BOND")); + + vm.prank(David, David); + gp.approveEvidence(meta.id, evidence); + vm.prank(Emma, Emma); + gp.approveEvidence(meta.id, evidence); + vm.prank(Frank, Frank); + gp.approveEvidence(meta.id, evidence); + + // // Credited back the bond (not transferred to the user + // wallet, + // // but in-contract account credited only.) assertEq(L1.getTaikoTokenBalance(Bob), 1 ether); } else { // Prove as guardian @@ -972,8 +1009,7 @@ contract TaikoL1LibProvingWithTiers is TaikoL1TestBase { blockHash, signalRoot, LibTiers.TIER_GUARDIAN, - "", - false + "" ); } vm.roll(block.number + 15 * 12); diff --git a/packages/protocol/test/L1/TaikoL1TestBase.sol b/packages/protocol/test/L1/TaikoL1TestBase.sol index 29dae095a0..799c27955e 100644 --- a/packages/protocol/test/L1/TaikoL1TestBase.sol +++ b/packages/protocol/test/L1/TaikoL1TestBase.sol @@ -12,9 +12,13 @@ import { TaikoL1 } from "../../contracts/L1/TaikoL1.sol"; import { TaikoToken } from "../../contracts/L1/TaikoToken.sol"; import { GuardianVerifier } from "../../contracts/L1/verifiers/GuardianVerifier.sol"; -import { OptimisticRollupConfigProvider } from - "../../contracts/L1/tiers/OptimisticRollupConfigProvider.sol"; +import { TaikoA6TierProvider } from + "../../contracts/L1/tiers/TaikoA6TierProvider.sol"; import { PseZkVerifier } from "../../contracts/L1/verifiers/PseZkVerifier.sol"; +import { SgxVerifier } from "../../contracts/L1/verifiers/SgxVerifier.sol"; +import { SgxAndZkVerifier } from + "../../contracts/L1/verifiers/SgxAndZkVerifier.sol"; +import { GuardianProver } from "../../contracts/L1/provers/GuardianProver.sol"; import { SignalService } from "../../contracts/signal/SignalService.sol"; import { StringsUpgradeable as Strings } from "lib/openzeppelin-contracts-upgradeable/contracts/utils/StringsUpgradeable.sol"; @@ -27,6 +31,8 @@ contract MockVerifier { } } +// TODO (dani): remove some code to sub-contracts, this one shall only contain +// shared logics and data. abstract contract TaikoL1TestBase is TestBase { AddressManager public addressManager; TaikoToken public tko; @@ -35,19 +41,14 @@ abstract contract TaikoL1TestBase is TestBase { TaikoData.Config conf; uint256 internal logCount; PseZkVerifier public pv; + SgxVerifier public sv; + SgxAndZkVerifier public sgxZkVerifier; GuardianVerifier public gv; - OptimisticRollupConfigProvider public cp; + GuardianProver public gp; + TaikoA6TierProvider public cp; bytes32 public constant GENESIS_BLOCK_HASH = keccak256("GENESIS_BLOCK_HASH"); - // 1 TKO --> it is to huge. It should be in 'wei' (?). - // Because otherwise first proposal is around: 1TKO * (1_000_000+20_000) - // required as a deposit. - // uint32 feePerGas = 10; - // uint16 provingWindow = 60 minutes; - uint64 l2GasExcess = 1e18; - - address public constant L2Treasury = - 0x859d74b52762d9ed07D1b2B8d7F93d26B1EA78Bb; + address public constant L2SS = 0xa008AE5Ba00656a3Cc384de589579e3E52aC030C; address public constant TaikoL2 = 0x0082D90249342980d011C58105a03b35cCb4A315; address public constant L1EthVault = @@ -68,17 +69,32 @@ abstract contract TaikoL1TestBase is TestBase { pv = new PseZkVerifier(); pv.init(address(addressManager)); + sv = new SgxVerifier(); + sv.init(address(addressManager)); + address[] memory initSgxInstances = new address[](1); + initSgxInstances[0] = SGX_X_0; + sv.addInstances(initSgxInstances); + + sgxZkVerifier = new SgxAndZkVerifier(); + sgxZkVerifier.init(address(addressManager)); + gv = new GuardianVerifier(); gv.init(address(addressManager)); - cp = new OptimisticRollupConfigProvider(); + gp = new GuardianProver(); + gp.init(address(addressManager)); + setupGuardianProverMultisig(); + + cp = new TaikoA6TierProvider(); registerAddress("tier_pse_zkevm", address(pv)); + registerAddress("tier_sgx", address(sv)); registerAddress("tier_guardian", address(gv)); + registerAddress("tier_sgx_and_pse_zkevm", address(sgxZkVerifier)); registerAddress("tier_provider", address(cp)); registerAddress("signal_service", address(ss)); + registerAddress("guardian", address(gp)); registerAddress("ether_vault", address(L1EthVault)); - registerL2Address("treasury", L2Treasury); registerL2Address("taiko", address(TaikoL2)); registerL2Address("signal_service", address(L2SS)); registerL2Address("taiko_l2", address(TaikoL2)); @@ -119,15 +135,20 @@ abstract contract TaikoL1TestBase is TestBase { internal returns (TaikoData.BlockMetadata memory meta) { - TaikoData.TierFee[] memory tierFees = new TaikoData.TierFee[](3); + TaikoData.TierFee[] memory tierFees = new TaikoData.TierFee[](5); // Register the tier fees // Based on OPL2ConfigTier we need 3: // - LibTiers.TIER_PSE_ZKEVM; + // - LibTiers.TIER_SGX; // - LibTiers.TIER_OPTIMISTIC; // - LibTiers.TIER_GUARDIAN; + // - LibTiers.TIER_SGX_AND_PSE_ZKEVM tierFees[0] = TaikoData.TierFee(LibTiers.TIER_OPTIMISTIC, 1 ether); - tierFees[1] = TaikoData.TierFee(LibTiers.TIER_PSE_ZKEVM, 2 ether); - tierFees[2] = TaikoData.TierFee(LibTiers.TIER_GUARDIAN, 0 ether); + tierFees[1] = TaikoData.TierFee(LibTiers.TIER_SGX, 1 ether); + tierFees[2] = TaikoData.TierFee(LibTiers.TIER_PSE_ZKEVM, 2 ether); + tierFees[3] = + TaikoData.TierFee(LibTiers.TIER_SGX_AND_PSE_ZKEVM, 2 ether); + tierFees[4] = TaikoData.TierFee(LibTiers.TIER_GUARDIAN, 0 ether); // For the test not to fail, set the message.value to the highest, the // rest will be returned // anyways @@ -175,8 +196,7 @@ abstract contract TaikoL1TestBase is TestBase { bytes32 blockHash, bytes32 signalRoot, uint16 tier, - bytes4 revertReason, - bool unprovable + bytes4 revertReason ) internal { @@ -191,7 +211,7 @@ abstract contract TaikoL1TestBase is TestBase { }); bytes32 instance = pv.getInstance(prover, evidence); - uint16 verifierId = tier; + uint16 verifierId = 300; // 300 as see mock verifier in line 95 evidence.proof = bytes.concat( bytes2(verifierId), @@ -202,22 +222,62 @@ abstract contract TaikoL1TestBase is TestBase { new bytes(100) ); + address newPubKey; + // Keep changing the pub key associated with an instance to avoid + // attacks, + // obviously just a mock due to 2 addresses changing all the time. + (newPubKey,) = sv.instances(0); + if (newPubKey == SGX_X_0) { + newPubKey = SGX_X_1; + } else { + newPubKey = SGX_X_0; + } + + if (tier == LibTiers.TIER_SGX) { + bytes memory signature = + createSgxSignatureProof(evidence, newPubKey, prover); + + evidence.proof = + bytes.concat(bytes2(0), bytes20(newPubKey), signature); + } + + if (tier == LibTiers.TIER_SGX_AND_PSE_ZKEVM) { + bytes memory signature = + createSgxSignatureProof(evidence, newPubKey, prover); + + bytes memory sgxProof = + bytes.concat(bytes2(0), bytes20(newPubKey), signature); + // Concatenate SGX and ZK (in this order) + evidence.proof = bytes.concat(sgxProof, evidence.proof); + } + if (tier == LibTiers.TIER_GUARDIAN) { evidence.proof = ""; - if (unprovable) { - evidence.proof = - bytes.concat(bytes32(keccak256("RETURN_LIVENESS_BOND"))); + // Grant 2 signatures, 3rd might be a revert + vm.prank(David, David); + gp.approveEvidence(meta.id, evidence); + vm.prank(Emma, Emma); + gp.approveEvidence(meta.id, evidence); + + if (revertReason != "") { + vm.prank(Frank, Frank); + vm.expectRevert(); // Revert reason is 'wrapped' so will not be + // identical to the expectedRevert + gp.approveEvidence(meta.id, evidence); + } else { + vm.prank(Frank, Frank); + gp.approveEvidence(meta.id, evidence); } - } - - if (revertReason != "") { - vm.prank(msgSender, msgSender); - vm.expectRevert(revertReason); - L1.proveBlock(meta.id, abi.encode(evidence)); } else { - vm.prank(msgSender, msgSender); - L1.proveBlock(meta.id, abi.encode(evidence)); + if (revertReason != "") { + vm.prank(msgSender, msgSender); + vm.expectRevert(revertReason); + L1.proveBlock(meta.id, abi.encode(evidence)); + } else { + vm.prank(msgSender, msgSender); + L1.proveBlock(meta.id, abi.encode(evidence)); + } } } @@ -225,6 +285,16 @@ abstract contract TaikoL1TestBase is TestBase { L1.verifyBlocks(count); } + function setupGuardianProverMultisig() internal { + address[5] memory initMultiSig; + initMultiSig[0] = David; + initMultiSig[1] = Emma; + initMultiSig[2] = Frank; + initMultiSig[3] = Grace; + initMultiSig[4] = Henry; + gp.setGuardians(initMultiSig); + } + function registerAddress(bytes32 nameHash, address addr) internal { addressManager.setAddress(block.chainid, nameHash, addr); console2.log(block.chainid, uint256(nameHash), unicode"→", addr); @@ -263,6 +333,40 @@ abstract contract TaikoL1TestBase is TestBase { signature = abi.encodePacked(r, s, v); } + function createSgxSignatureProof( + TaikoData.BlockEvidence memory evidence, + address newPubKey, + address prover + ) + internal + view + returns (bytes memory signature) + { + bytes32 digest = keccak256( + abi.encode( + evidence.metaHash, + evidence.parentHash, + evidence.blockHash, + evidence.signalRoot, + evidence.graffiti, + prover, + newPubKey + ) + ); + + uint256 signerPrivateKey; + + // In the test suite these are the 3 which acts as provers + if (SGX_X_0 == newPubKey) { + signerPrivateKey = 0x5; + } else if (SGX_X_1 == newPubKey) { + signerPrivateKey = 0x4; + } + + (uint8 v, bytes32 r, bytes32 s) = vm.sign(signerPrivateKey, digest); + signature = abi.encodePacked(r, s, v); + } + function giveEthAndTko( address to, uint256 amountTko, diff --git a/packages/protocol/test/L2/TaikoL2.t.sol b/packages/protocol/test/L2/TaikoL2.t.sol index c766248683..8f19080af9 100644 --- a/packages/protocol/test/L2/TaikoL2.t.sol +++ b/packages/protocol/test/L2/TaikoL2.t.sol @@ -5,8 +5,10 @@ import { console2 } from "forge-std/console2.sol"; import { Strings } from "lib/openzeppelin-contracts/contracts/utils/Strings.sol"; import { SafeCastUpgradeable } from "lib/openzeppelin-contracts-upgradeable/contracts/utils/math/SafeCastUpgradeable.sol"; -import { TestBase } from "../TestBase.sol"; +import { AddressManager } from "../../contracts/common/AddressManager.sol"; +import { SignalService } from "../../contracts/signal/SignalService.sol"; import { TaikoL2 } from "../../contracts/L2/TaikoL2.sol"; +import { TestBase } from "../TestBase.sol"; contract TestTaikoL2 is TestBase { using SafeCastUpgradeable for uint256; @@ -14,21 +16,29 @@ contract TestTaikoL2 is TestBase { // same as `block_gas_limit` in foundry.toml uint32 public constant BLOCK_GAS_LIMIT = 30_000_000; + AddressManager public addressManager; + SignalService public ss; TaikoL2 public L2; uint256 private logIndex; function setUp() public { + addressManager = new AddressManager(); + addressManager.init(); + + ss = new SignalService(); + ss.init(address(addressManager)); + registerAddress("signal_service", address(ss)); + L2 = new TaikoL2(); - address dummyAddressManager = getRandomAddress(); uint128 gasExcess = 0; - L2.init(dummyAddressManager, gasExcess); + L2.init(address(addressManager), gasExcess); vm.roll(block.number + 1); vm.warp(block.timestamp + 30); } function test_L2_AnchorTx_with_constant_block_time() external { - for (uint256 i = 0; i < 100; i++) { + for (uint256 i; i < 100; ++i) { vm.fee(1); vm.prank(L2.GOLDEN_TOUCH_ADDRESS()); @@ -40,7 +50,7 @@ contract TestTaikoL2 is TestBase { } function test_L2_AnchorTx_with_decreasing_block_time() external { - for (uint256 i = 0; i < 32; i++) { + for (uint256 i; i < 32; ++i) { vm.fee(1); vm.prank(L2.GOLDEN_TOUCH_ADDRESS()); @@ -52,7 +62,7 @@ contract TestTaikoL2 is TestBase { } function test_L2_AnchorTx_with_increasing_block_time() external { - for (uint256 i = 0; i < 30; i++) { + for (uint256 i; i < 30; ++i) { vm.fee(1); vm.prank(L2.GOLDEN_TOUCH_ADDRESS()); @@ -104,4 +114,9 @@ contract TestTaikoL2 is TestBase { bytes32 l1SignalRoot = getRandomBytes32(); L2.anchor(l1Hash, l1SignalRoot, 12_345, parentGasLimit); } + + function registerAddress(bytes32 nameHash, address addr) internal { + addressManager.setAddress(block.chainid, nameHash, addr); + console2.log(block.chainid, uint256(nameHash), unicode"→", addr); + } } diff --git a/packages/protocol/test/TestBase.sol b/packages/protocol/test/TestBase.sol index 282128aecc..187bd5d220 100644 --- a/packages/protocol/test/TestBase.sol +++ b/packages/protocol/test/TestBase.sol @@ -3,6 +3,7 @@ pragma solidity ^0.8.20; import { Test } from "forge-std/Test.sol"; import { Bridge } from "../contracts/bridge/Bridge.sol"; +import { SignalService } from "../contracts/signal/SignalService.sol"; import { ICrossChainSync } from "../contracts/common/ICrossChainSync.sol"; abstract contract TestBase is Test { @@ -17,10 +18,6 @@ abstract contract TestBase is Test { return keccak256(abi.encodePacked("bytes32", _seed++)); } - function getRandomUint256() internal returns (uint256) { - return uint256(keccak256(abi.encodePacked("uint256", _seed++))); - } - address internal Alice = vm.addr(0x1); address internal Bob = vm.addr(0x2); address internal Carol = vm.addr(0x3); @@ -47,6 +44,10 @@ abstract contract TestBase is Test { address internal Xavier = getRandomAddress(); address internal Yasmine = getRandomAddress(); address internal Zachary = getRandomAddress(); + address internal SGX_X_0 = vm.addr(0x4); + address internal SGX_X_1 = vm.addr(0x5); + address internal SGX_Y = getRandomAddress(); + address internal SGX_Z = getRandomAddress(); } contract BadReceiver { @@ -80,29 +81,21 @@ contract NonNftContract { } } -contract SkipProofCheckBridge is Bridge { - function shouldCheckProof() internal pure override returns (bool) { - return false; +contract SkipProofCheckSignal is SignalService { + function skipProofCheck() public pure override returns (bool) { + return true; } } contract DummyCrossChainSync is ICrossChainSync { - bytes32 private _blockHash; - bytes32 private _signalRoot; - - function setCrossChainBlockHeader(bytes32 blockHash) external { - _blockHash = blockHash; - } - - function setCrossChainSignalRoot(bytes32 signalRoot) external { - _signalRoot = signalRoot; - } + Snippet private _snippet; - function getCrossChainBlockHash(uint64) external view returns (bytes32) { - return _blockHash; + function setSyncedData(bytes32 blockHash, bytes32 signalRoot) external { + _snippet.blockHash = blockHash; + _snippet.signalRoot = signalRoot; } - function getCrossChainSignalRoot(uint64) external view returns (bytes32) { - return _signalRoot; + function getSyncedSnippet(uint64) external view returns (Snippet memory) { + return _snippet; } } diff --git a/packages/protocol/test/bridge/Bridge.t.sol b/packages/protocol/test/bridge/Bridge.t.sol index 198103e88c..173d71f46f 100644 --- a/packages/protocol/test/bridge/Bridge.t.sol +++ b/packages/protocol/test/bridge/Bridge.t.sol @@ -3,15 +3,12 @@ pragma solidity ^0.8.20; import { AddressManager } from "../../contracts/common/AddressManager.sol"; import { IBridge, Bridge } from "../../contracts/bridge/Bridge.sol"; -import { BridgeErrors } from "../../contracts/bridge/BridgeErrors.sol"; import { EtherVault } from "../../contracts/bridge/EtherVault.sol"; import { console2 } from "forge-std/console2.sol"; -import { LibBridgeStatus } from - "../../contracts/bridge/libs/LibBridgeStatus.sol"; import { SignalService } from "../../contracts/signal/SignalService.sol"; import { TestBase, - SkipProofCheckBridge, + SkipProofCheckSignal, DummyCrossChainSync, GoodReceiver, BadReceiver @@ -26,7 +23,7 @@ contract BridgeTest is TestBase { EtherVault etherVault; SignalService signalService; DummyCrossChainSync crossChainSync; - SkipProofCheckBridge mockProofBridge; + SkipProofCheckSignal mockProofSignalService; uint256 destChainId = 19_389; function setUp() public { @@ -43,10 +40,10 @@ contract BridgeTest is TestBase { vm.deal(address(destChainBridge), 100 ether); - mockProofBridge = new SkipProofCheckBridge(); - mockProofBridge.init(address(addressManager)); + mockProofSignalService = new SkipProofCheckSignal(); + mockProofSignalService.init(address(addressManager)); - vm.deal(address(mockProofBridge), 100 ether); + vm.deal(address(mockProofSignalService), 100 ether); signalService = new SignalService(); signalService.init(address(addressManager)); @@ -57,7 +54,11 @@ contract BridgeTest is TestBase { crossChainSync = new DummyCrossChainSync(); addressManager.setAddress( - block.chainid, "signal_service", address(signalService) + block.chainid, "signal_service", address(mockProofSignalService) + ); + + addressManager.setAddress( + destChainId, "signal_service", address(mockProofSignalService) ); addressManager.setAddress( @@ -88,16 +89,15 @@ contract BridgeTest is TestBase { // coresponding to the message bytes memory proof = hex"00"; - bytes32 msgHash = destChainBridge.hashMessage(message); + bytes32 msgHash = keccak256(abi.encode(message)); vm.chainId(destChainId); vm.prank(Bob, Bob); - mockProofBridge.processMessage(message, proof); + destChainBridge.processMessage(message, proof); - LibBridgeStatus.MessageStatus status = - mockProofBridge.getMessageStatus(msgHash); + Bridge.Status status = destChainBridge.messageStatus(msgHash); - assertEq(status == LibBridgeStatus.MessageStatus.DONE, true); + assertEq(status == Bridge.Status.DONE, true); // Alice has 100 ether + 1000 wei balance, because we did not use the // 'sendMessage' // since we mocking the proof, so therefore the 1000 wei @@ -128,17 +128,16 @@ contract BridgeTest is TestBase { // coresponding to the message bytes memory proof = hex"00"; - bytes32 msgHash = destChainBridge.hashMessage(message); + bytes32 msgHash = keccak256(abi.encode(message)); vm.chainId(destChainId); vm.prank(Bob, Bob); - mockProofBridge.processMessage(message, proof); + destChainBridge.processMessage(message, proof); - LibBridgeStatus.MessageStatus status = - mockProofBridge.getMessageStatus(msgHash); + Bridge.Status status = destChainBridge.messageStatus(msgHash); - assertEq(status == LibBridgeStatus.MessageStatus.DONE, true); + assertEq(status == Bridge.Status.DONE, true); // Bob (relayer) and goodContract has 1000 wei balance assertEq(address(goodReceiver).balance, 1000); @@ -168,17 +167,16 @@ contract BridgeTest is TestBase { // coresponding to the message bytes memory proof = hex"00"; - bytes32 msgHash = destChainBridge.hashMessage(message); + bytes32 msgHash = keccak256(abi.encode(message)); vm.chainId(destChainId); vm.prank(Bob, Bob); - mockProofBridge.processMessage(message, proof); + destChainBridge.processMessage(message, proof); - LibBridgeStatus.MessageStatus status = - mockProofBridge.getMessageStatus(msgHash); + Bridge.Status status = destChainBridge.messageStatus(msgHash); - assertEq(status == LibBridgeStatus.MessageStatus.DONE, true); + assertEq(status == Bridge.Status.DONE, true); // Carol and goodContract has 500 wei balance assertEq(address(goodReceiver).balance, 500); @@ -189,7 +187,7 @@ contract BridgeTest is TestBase { ) public { - //uint256 amount = 1 wei; + // uint256 amount = 1 wei; IBridge.Message memory message = newMessage({ user: Alice, to: Alice, @@ -199,7 +197,7 @@ contract BridgeTest is TestBase { destChain: destChainId }); - vm.expectRevert(BridgeErrors.B_INCORRECT_VALUE.selector); + vm.expectRevert(Bridge.B_INVALID_VALUE.selector); bridge.sendMessage(message); } @@ -216,7 +214,7 @@ contract BridgeTest is TestBase { destChain: destChainId }); - vm.expectRevert(BridgeErrors.B_USER_IS_NULL.selector); + vm.expectRevert(Bridge.B_INVALID_USER.selector); bridge.sendMessage{ value: amount }(message); } @@ -234,7 +232,7 @@ contract BridgeTest is TestBase { destChain: destChainId + 1 }); - vm.expectRevert(BridgeErrors.B_WRONG_CHAIN_ID.selector); + vm.expectRevert(Bridge.B_INVALID_CHAINID.selector); bridge.sendMessage{ value: amount }(message); } @@ -252,7 +250,7 @@ contract BridgeTest is TestBase { destChain: block.chainid }); - vm.expectRevert(BridgeErrors.B_WRONG_CHAIN_ID.selector); + vm.expectRevert(Bridge.B_INVALID_CHAINID.selector); bridge.sendMessage{ value: amount }(message); } @@ -269,7 +267,7 @@ contract BridgeTest is TestBase { destChain: destChainId }); - vm.expectRevert(BridgeErrors.B_WRONG_TO_ADDRESS.selector); + vm.expectRevert(Bridge.B_INVALID_TO.selector); bridge.sendMessage{ value: amount }(message); } @@ -284,10 +282,9 @@ contract BridgeTest is TestBase { destChain: destChainId }); - bytes32 msgHash = bridge.sendMessage{ value: amount }(message); - - bool isMessageSent = bridge.isMessageSent(msgHash); - assertEq(isMessageSent, true); + (, IBridge.Message memory _message) = + bridge.sendMessage{ value: amount }(message); + assertEq(bridge.isMessageSent(_message), true); } function test_Bridge_send_message_ether_with_processing_fee() public { @@ -302,10 +299,9 @@ contract BridgeTest is TestBase { destChain: destChainId }); - bytes32 msgHash = bridge.sendMessage{ value: amount + fee }(message); - - bool isMessageSent = bridge.isMessageSent(msgHash); - assertEq(isMessageSent, true); + (, IBridge.Message memory _message) = + bridge.sendMessage{ value: amount + fee }(message); + assertEq(bridge.isMessageSent(_message), true); } function test_Bridge_send_message_ether_with_processing_fee_invalid_amount() @@ -322,7 +318,7 @@ contract BridgeTest is TestBase { destChain: destChainId }); - vm.expectRevert(BridgeErrors.B_INCORRECT_VALUE.selector); + vm.expectRevert(Bridge.B_INVALID_VALUE.selector); bridge.sendMessage{ value: amount }(message); } @@ -331,7 +327,7 @@ contract BridgeTest is TestBase { // in foundry function test_Bridge_process_message() public { /* DISCALIMER: From now on we do not need to have real - proofs because we cna bypass with overriding shouldCheckProof() + proofs because we can bypass with overriding skipProofCheck() in a mockBirdge AND proof system already 'battle tested'.*/ // This predefined successful process message call fails now // since we modified the iBridge.Message struct and cut out @@ -340,14 +336,13 @@ contract BridgeTest is TestBase { (IBridge.Message memory message, bytes memory proof) = setUpPredefinedSuccessfulProcessMessageCall(); - bytes32 msgHash = destChainBridge.hashMessage(message); + bytes32 msgHash = keccak256(abi.encode(message)); - mockProofBridge.processMessage(message, proof); + destChainBridge.processMessage(message, proof); - LibBridgeStatus.MessageStatus status = - mockProofBridge.getMessageStatus(msgHash); + Bridge.Status status = destChainBridge.messageStatus(msgHash); - assertEq(status == LibBridgeStatus.MessageStatus.DONE, true); + assertEq(status == Bridge.Status.DONE, true); } // test with a known good merkle proof / message since we cant generate @@ -355,7 +350,7 @@ contract BridgeTest is TestBase { // in foundry function test_Bridge_retry_message_and_end_up_in_failed_status() public { /* DISCALIMER: From now on we do not need to have real - proofs because we cna bypass with overriding shouldCheckProof() + proofs because we can bypass with overriding skipProofCheck() in a mockBirdge AND proof system already 'battle tested'.*/ vm.startPrank(Alice); (IBridge.Message memory message, bytes memory proof) = @@ -364,24 +359,22 @@ contract BridgeTest is TestBase { // etch bad receiver at the to address, so it fails. vm.etch(message.to, address(badReceiver).code); - bytes32 msgHash = destChainBridge.hashMessage(message); + bytes32 msgHash = keccak256(abi.encode(message)); - mockProofBridge.processMessage(message, proof); + destChainBridge.processMessage(message, proof); - LibBridgeStatus.MessageStatus status = - mockProofBridge.getMessageStatus(msgHash); + Bridge.Status status = destChainBridge.messageStatus(msgHash); - assertEq(status == LibBridgeStatus.MessageStatus.RETRIABLE, true); + assertEq(status == Bridge.Status.RETRIABLE, true); vm.stopPrank(); vm.prank(message.user); - mockProofBridge.retryMessage(message, true); + destChainBridge.retryMessage(message, true); - LibBridgeStatus.MessageStatus postRetryStatus = - mockProofBridge.getMessageStatus(msgHash); + Bridge.Status postRetryStatus = destChainBridge.messageStatus(msgHash); - assertEq(postRetryStatus == LibBridgeStatus.MessageStatus.FAILED, true); + assertEq(postRetryStatus == Bridge.Status.FAILED, true); } function retry_message_reverts_when_status_non_retriable() public { @@ -394,7 +387,7 @@ contract BridgeTest is TestBase { destChain: destChainId }); - vm.expectRevert(BridgeErrors.B_MSG_NON_RETRIABLE.selector); + vm.expectRevert(Bridge.B_NON_RETRIABLE.selector); destChainBridge.retryMessage(message, true); } @@ -411,12 +404,12 @@ contract BridgeTest is TestBase { destChain: destChainId }); - vm.expectRevert(BridgeErrors.B_DENIED.selector); + vm.expectRevert(Bridge.B_PERMISSION_DENIED.selector); destChainBridge.retryMessage(message, true); } /* DISCALIMER: From now on we do not need to have real - proofs because we cna bypass with overriding shouldCheckProof() + proofs because we can bypass with overriding skipProofCheck() in a mockBirdge AND proof system already 'battle tested'.*/ function setUpPredefinedSuccessfulProcessMessageCall() internal @@ -436,19 +429,16 @@ contract BridgeTest is TestBase { addressManager.setAddress(dest, "ether_vault", address(etherVault)); etherVault.authorize(address(destChainBridge), true); - etherVault.authorize(address(mockProofBridge), true); + etherVault.authorize(address(mockProofSignalService), true); vm.deal(address(etherVault), 100 ether); addressManager.setAddress( - dest, "signal_service", address(signalService) - ); - - crossChainSync.setCrossChainBlockHeader( - 0xd5f5d8ac6bc37139c97389b00e9cf53e89c153ad8a5fc765ffe9f44ea9f3d31e + dest, "signal_service", address(mockProofSignalService) ); - crossChainSync.setCrossChainSignalRoot( + crossChainSync.setSyncedData( + 0xd5f5d8ac6bc37139c97389b00e9cf53e89c153ad8a5fc765ffe9f44ea9f3d31e, 0x631b214fb030d82847224f0b3d3b906a6764dded176ad3c7262630204867ba85 ); diff --git a/packages/protocol/test/signal/SignalService.t.sol b/packages/protocol/test/signal/SignalService.t.sol index 5be86126d9..c1b357fb2f 100644 --- a/packages/protocol/test/signal/SignalService.t.sol +++ b/packages/protocol/test/signal/SignalService.t.sol @@ -5,8 +5,7 @@ import { AddressManager } from "../../contracts/common/AddressManager.sol"; import { AddressResolver } from "../../contracts/common/AddressResolver.sol"; import { Bridge } from "../../contracts/bridge/Bridge.sol"; import { BridgedERC20 } from "../../contracts/tokenvault/BridgedERC20.sol"; -import { BridgeErrors } from "../../contracts/bridge/BridgeErrors.sol"; -import { console2 } from "forge-std/console2.sol"; +import { console } from "forge-std/console.sol"; import { FreeMintERC20 } from "../../contracts/test/erc20/FreeMintERC20.sol"; import { SignalService } from "../../contracts/signal/SignalService.sol"; import { TestBase, DummyCrossChainSync } from "../TestBase.sol"; @@ -49,17 +48,17 @@ contract TestSignalService is TestBase { } function test_SignalService_sendSignal_revert() public { - vm.expectRevert(SignalService.B_ZERO_SIGNAL.selector); + vm.expectRevert(SignalService.SS_INVALID_SIGNAL.selector); signalService.sendSignal(0); } function test_SignalService_isSignalSent_revert() public { bytes32 signal = bytes32(uint256(1)); - vm.expectRevert(SignalService.B_NULL_APP_ADDR.selector); + vm.expectRevert(SignalService.SS_INVALID_APP.selector); signalService.isSignalSent(address(0), signal); signal = bytes32(uint256(0)); - vm.expectRevert(SignalService.B_ZERO_SIGNAL.selector); + vm.expectRevert(SignalService.SS_INVALID_SIGNAL.selector); signalService.isSignalSent(Alice, signal); } @@ -73,67 +72,11 @@ contract TestSignalService is TestBase { function test_SignalService_getSignalSlot() public { vm.startPrank(Alice); - for (uint8 i = 1; i < 100; i++) { + for (uint8 i = 1; i < 100; ++i) { bytes32 signal = bytes32(block.prevrandao + i); signalService.sendSignal(signal); assertTrue(signalService.isSignalSent(Alice, signal)); - - // confirm our assembly gives same output as expected native - // solidity hash/packing - assertEq( - signalService.getSignalSlot(Alice, signal), - keccak256(abi.encodePacked(Alice, signal)) - ); } } - - function test_SignalService_isSignalReceived_revert() public { - bytes32 signal = bytes32(uint256(1)); - bytes memory proof = new bytes(1); - vm.expectRevert(SignalService.B_WRONG_CHAIN_ID.selector); - signalService.isSignalReceived(block.chainid, Alice, signal, proof); - - signal = bytes32(uint256(1)); - proof = new bytes(1); - vm.expectRevert(SignalService.B_NULL_APP_ADDR.selector); - signalService.isSignalReceived(destChainId, address(0), signal, proof); - - signal = bytes32(uint256(0)); - proof = new bytes(1); - vm.expectRevert(SignalService.B_ZERO_SIGNAL.selector); - signalService.isSignalReceived(destChainId, Alice, signal, proof); - - signal = bytes32(uint256(1)); - proof = new bytes(1); - vm.expectRevert(); - signalService.isSignalReceived(destChainId, Alice, signal, proof); - } - - function test_SignalService_isSignalReceived() public { - // This specific value is used, do not change it. - address Brecht = 0xDf08F82De32B8d460adbE8D72043E3a7e25A3B39; - - // known signal with known proof for known block header/signalRoot from - // a known chain ID of 1336, since we cant generate merkle proofs with - // foundry. - bytes32 signal = bytes32( - 0xa99d658793daba4d352c77378e2d0f3b12ff47503518b3ec9ad61bb33ee7031d - ); - bytes memory proof = - hex"0000000000000000000000000000000000000000000000000000000000000020000000000000000000000000000000000000000000000000000000000000004000000000000000000000000000000000000000000000000000000000000003e0d5c45a5c0fabac05a887ad983965a225214df2cecd77adc216d3b1172866b1e91dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d493470000000000000000000000000000000000000000000000000000000000000000cba38a70215ae3eeba2e97f9b6c3c804541484202953760c1cfe734df6dfce7cf7f7ed1e57a053e1c79765d6b76305193cae04261538400724837787437e621c9e6a8ea258a11278cf2e54d0e4845843837a1da42483ebe1dddf3eed1d33088b0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000020000000000000000000000000000000000000000000000000000000000000008000000000000000000000000000000000000000000000000000000000099c8ac000000000000000000000000000000000000000000000000000000000000ac7500000000000000000000000000000000000000000000000000000000644311c100000000000000000000000000000000000000000000000000000000000003000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000164c61e700000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000061d883010a1a846765746888676f312e31382e38856c696e757800000000000000def5020e30ddc20e32151adb608a5d8367d817a707ae8d520c98ac13de04bce35f95ef795a9c4fd13d3e5daf713525521043125bde66aa71eed7ca715f05c720000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000dbf8d9b8b3f8b18080a04fc5f13ab2f9ba0c2da88b0151ab0e7cf4d85d08cca45ccd923c6ab76323eb28a02b70a98baa2507beffe8c266006cae52064dccf4fd1998af774ab3399029b38380808080a07394a09684ef3b2c87e9e2a753eb4ac78e2047b980e16d2e2133aee78946370d8080a0f4984a11f61a2921456141df88de6e1a710d28681b91af794c5a721e47839cd7a00f6329feca1549bd3bf7ab9a2e474bde37cb4f81366fca1dfdd9257c7305b5b880808080a3e2a037a8317247f2d3e645fa68570a9ae97a73b5568fe0578b90197316c654138997010000000000"; - - crossChainSync.setCrossChainBlockHeader( - 0x986278442ae7469dbd55f478348b4547c399004c93325b18ed995d2bc008f98d - ); - crossChainSync.setCrossChainSignalRoot( - 0x58900f5366437923bb250887d359d828a1a89e1837f9369f75c3e1bb238b854f - ); - - vm.chainId(destChainId); - - assertTrue( - destSignalService.isSignalReceived(1336, Brecht, signal, proof) - ); - } } diff --git a/packages/protocol/test/tokenvault/ERC1155Vault.t.sol b/packages/protocol/test/tokenvault/ERC1155Vault.t.sol index bc62ff099a..eb5673c946 100644 --- a/packages/protocol/test/tokenvault/ERC1155Vault.t.sol +++ b/packages/protocol/test/tokenvault/ERC1155Vault.t.sol @@ -4,7 +4,7 @@ pragma solidity ^0.8.20; import { console2 } from "forge-std/console2.sol"; import { TestBase, - SkipProofCheckBridge, + SkipProofCheckSignal, DummyCrossChainSync, NonNftContract, BadReceiver @@ -12,14 +12,10 @@ import { import { AddressResolver } from "../../contracts/common/AddressResolver.sol"; import { AddressManager } from "../../contracts/common/AddressManager.sol"; import { IBridge, Bridge } from "../../contracts/bridge/Bridge.sol"; -import { LibBridgeData } from "../../contracts/bridge/libs/LibBridgeData.sol"; -import { BridgeErrors } from "../../contracts/bridge/BridgeErrors.sol"; import { BaseNFTVault } from "../../contracts/tokenvault/BaseNFTVault.sol"; import { ERC1155Vault } from "../../contracts/tokenvault/ERC1155Vault.sol"; import { BridgedERC1155 } from "../../contracts/tokenvault/BridgedERC1155.sol"; import { EtherVault } from "../../contracts/bridge/EtherVault.sol"; -import { LibBridgeStatus } from - "../../contracts/bridge/libs/LibBridgeStatus.sol"; import { SignalService } from "../../contracts/signal/SignalService.sol"; import { ICrossChainSync } from "../../contracts/common/ICrossChainSync.sol"; import { ERC1155 } from @@ -60,10 +56,10 @@ contract PrankDestBridge { function sendMessage(IBridge.Message memory message) external payable - returns (bytes32 msgHash) + returns (bytes32 msgHash, IBridge.Message memory _message) { // Dummy return value - return keccak256(abi.encode(message.id)); + return (keccak256(abi.encode(message.id)), _message); } function context() public view returns (BridgeContext memory) { @@ -105,15 +101,6 @@ contract PrankDestBridge { } } -// PrankSrcBridge lets us mock Bridge/SignalService to return true when called -// isMessageFailed() -contract PrankSrcBridge is SkipProofCheckBridge { - function getPreDeterminedDataBytes() external pure returns (bytes memory) { - return - hex"20b8155900000000000000000000000000000000000000000000000000000000000000a000000000000000000000000010020fcb72e27650651b05ed2ceca493bc807ba400000000000000000000000010020fcb72e27650651b05ed2ceca493bc807ba4000000000000000000000000000000000000000000000000000000000000016000000000000000000000000000000000000000000000000000000000000001a00000000000000000000000000000000000000000000000000000000000007a69000000000000000000000000a64f94242628683ea967cd7dd6a10b5ed0400662000000000000000000000000000000000000000000000000000000000000008000000000000000000000000000000000000000000000000000000000000000a0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000002"; - } -} - contract UpdatedBridgedERC1155 is BridgedERC1155 { function helloWorld() public pure returns (string memory) { return "helloworld"; @@ -126,7 +113,7 @@ contract ERC1155VaultTest is TestBase { Bridge bridge; Bridge destChainBridge; PrankDestBridge destChainIdBridge; - PrankSrcBridge srcPrankBridge; + SkipProofCheckSignal mockProofSignalService; ERC1155Vault erc1155Vault; ERC1155Vault destChainErc1155Vault; TestTokenERC1155 ctoken1155; @@ -135,9 +122,10 @@ contract ERC1155VaultTest is TestBase { DummyCrossChainSync crossChainSync; uint256 destChainId = 19_389; - // TODO(dani): why chaning Amilia's address will fail the test? - //Need +1 bc. and Amelia is the proxied bridge contracts owner - address public Amelia = 0x60081B12838240B1BA02b3177153BCa678A86080; + // Need +1 bc. and Amelia is the proxied bridge contracts owner + // Change will cause onMessageRecall() test fails, because of + // getPreDeterminedDataBytes + address public Amelia = 0x60081b12838240B1ba02B3177153Bca678a86081; function setUp() public { vm.startPrank(Amelia); @@ -168,13 +156,17 @@ contract ERC1155VaultTest is TestBase { destChainIdBridge = new PrankDestBridge(destChainErc1155Vault); vm.deal(address(destChainIdBridge), 100 ether); - srcPrankBridge = new PrankSrcBridge(); - srcPrankBridge.init(address(addressManager)); + mockProofSignalService = new SkipProofCheckSignal(); + mockProofSignalService.init(address(addressManager)); crossChainSync = new DummyCrossChainSync(); addressManager.setAddress( - block.chainid, "signal_service", address(signalService) + block.chainid, "signal_service", address(mockProofSignalService) + ); + + addressManager.setAddress( + destChainId, "signal_service", address(mockProofSignalService) ); addressManager.setAddress(block.chainid, "bridge", address(bridge)); @@ -195,22 +187,22 @@ contract ERC1155VaultTest is TestBase { // LibBridgeRecall.sol's // resolve address addressManager.setAddress( - destChainId, "erc721_vault", address(srcPrankBridge) + destChainId, "erc721_vault", address(mockProofSignalService) ); addressManager.setAddress( - destChainId, "erc20_vault", address(srcPrankBridge) + destChainId, "erc20_vault", address(mockProofSignalService) ); addressManager.setAddress( - block.chainid, "erc721_vault", address(srcPrankBridge) + block.chainid, "erc721_vault", address(mockProofSignalService) ); addressManager.setAddress( - block.chainid, "erc20_vault", address(srcPrankBridge) + block.chainid, "erc20_vault", address(mockProofSignalService) ); addressManager.setAddress( block.chainid, "ether_vault", address(etherVault) ); // Authorize - etherVault.authorize(address(srcPrankBridge), true); + etherVault.authorize(address(destChainIdBridge), true); etherVault.authorize(address(bridge), true); vm.deal(address(etherVault), 100 ether); @@ -224,6 +216,11 @@ contract ERC1155VaultTest is TestBase { vm.stopPrank(); } + function getPreDeterminedDataBytes() internal pure returns (bytes memory) { + return + hex"20b8155900000000000000000000000000000000000000000000000000000000000000a00000000000000000000000007e5f4552091a69125d5dfcb7b8c2659029395bdf0000000000000000000000007e5f4552091a69125d5dfcb7b8c2659029395bdf000000000000000000000000000000000000000000000000000000000000016000000000000000000000000000000000000000000000000000000000000001a00000000000000000000000000000000000000000000000000000000000007a690000000000000000000000007935de70183a080242a58f64637a8e7f15349b63000000000000000000000000000000000000000000000000000000000000008000000000000000000000000000000000000000000000000000000000000000a0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000002"; + } + function test_1155Vault_sendToken_1155() public { vm.prank(Alice, Alice); ctoken1155.setApprovalForAll(address(erc1155Vault), true); @@ -615,13 +612,6 @@ contract ERC1155VaultTest is TestBase { "" ); - // Let's test that message is failed and we want to release it back to - // the owner - vm.prank(Amelia, Amelia); - addressManager.setAddress( - block.chainid, "bridge", address(srcPrankBridge) - ); - vm.prank(Alice, Alice); erc1155Vault.sendToken{ value: 140_000 }(sendOpts); @@ -640,14 +630,13 @@ contract ERC1155VaultTest is TestBase { message.user = Alice; message.from = address(erc1155Vault); message.to = address(destChainErc1155Vault); - message.data = srcPrankBridge.getPreDeterminedDataBytes(); + message.data = getPreDeterminedDataBytes(); message.gasLimit = 140_000; message.fee = 140_000; message.refundTo = Alice; message.memo = ""; - bytes memory proof = bytes(""); - srcPrankBridge.recallMessage(message, proof); + bridge.recallMessage(message, bytes("")); // Alice got back her NFTs, and vault has 0 assertEq(ctoken1155.balanceOf(Alice, 1), 10); @@ -782,7 +771,6 @@ contract ERC1155VaultTest is TestBase { chainId, 0 ); - // Query canonicalToBridged address deployedContract = destChainErc1155Vault.canonicalToBridged( chainId, address(ctoken1155) diff --git a/packages/protocol/test/tokenvault/ERC20Vault.t.sol b/packages/protocol/test/tokenvault/ERC20Vault.t.sol index ae552d725c..2e454e84a7 100644 --- a/packages/protocol/test/tokenvault/ERC20Vault.t.sol +++ b/packages/protocol/test/tokenvault/ERC20Vault.t.sol @@ -5,7 +5,6 @@ import { AddressManager } from "../../contracts/common/AddressManager.sol"; import { AddressResolver } from "../../contracts/common/AddressResolver.sol"; import { Bridge } from "../../contracts/bridge/Bridge.sol"; import { BridgedERC20 } from "../../contracts/tokenvault/BridgedERC20.sol"; -import { BridgeErrors } from "../../contracts/bridge/BridgeErrors.sol"; import { FreeMintERC20 } from "../../contracts/test/erc20/FreeMintERC20.sol"; import { SignalService } from "../../contracts/signal/SignalService.sol"; import { TaikoToken } from "../../contracts/L1/TaikoToken.sol"; @@ -92,7 +91,7 @@ contract TestERC20Vault is Test { address public constant Alice = 0x10020FCb72e27650651B05eD2CEcA493bC807Ba4; address public constant Bob = 0x200708D76eB1B69761c23821809d53F65049939e; - //Need +1 bc. and Amelia is the proxied bridge contracts owner + // Need +1 bc. and Amelia is the proxied bridge contracts owner address public constant Amelia = 0x60081B12838240B1BA02b3177153BCa678A86080; // Dave has nothing so that we can check if he gets the ether (and other // erc20) @@ -433,7 +432,7 @@ contract TestERC20Vault is Test { try UpdatedBridgedERC20(bridgedAddressAfter).helloWorld() { fail(); } catch { - //It should not yet support this function call + // It should not yet support this function call } // Upgrade the implementation of that contract @@ -447,7 +446,7 @@ contract TestERC20Vault is Test { vm.prank(Alice, Alice); try UpdatedBridgedERC20(bridgedAddressAfter).helloWorld() { - //It should support now this function call + // It should support now this function call } catch { fail(); } diff --git a/packages/protocol/test/tokenvault/ERC721Vault.t.sol b/packages/protocol/test/tokenvault/ERC721Vault.t.sol index 0192b7793c..2adc5250aa 100644 --- a/packages/protocol/test/tokenvault/ERC721Vault.t.sol +++ b/packages/protocol/test/tokenvault/ERC721Vault.t.sol @@ -4,21 +4,17 @@ pragma solidity ^0.8.20; import { console2 } from "forge-std/console2.sol"; import { TestBase, - SkipProofCheckBridge, + SkipProofCheckSignal, DummyCrossChainSync, NonNftContract, BadReceiver } from "../TestBase.sol"; import { AddressManager } from "../../contracts/common/AddressManager.sol"; import { IBridge, Bridge } from "../../contracts/bridge/Bridge.sol"; -import { LibBridgeData } from "../../contracts/bridge/libs/LibBridgeData.sol"; -import { BridgeErrors } from "../../contracts/bridge/BridgeErrors.sol"; import { BaseNFTVault } from "../../contracts/tokenvault/BaseNFTVault.sol"; import { ERC721Vault } from "../../contracts/tokenvault/ERC721Vault.sol"; import { BridgedERC721 } from "../../contracts/tokenvault/BridgedERC721.sol"; import { EtherVault } from "../../contracts/bridge/EtherVault.sol"; -import { LibBridgeStatus } from - "../../contracts/bridge/libs/LibBridgeStatus.sol"; import { SignalService } from "../../contracts/signal/SignalService.sol"; import { ICrossChainSync } from "../../contracts/common/ICrossChainSync.sol"; import { ERC721 } from @@ -49,7 +45,7 @@ contract TestTokenERC721 is ERC721 { } function mint(uint256 amount) public { - for (uint256 i; i < amount; i++) { + for (uint256 i; i < amount; ++i) { _safeMint(msg.sender, minted + i); } minted += amount; @@ -81,10 +77,10 @@ contract PrankDestBridge { function sendMessage(IBridge.Message memory message) external payable - returns (bytes32 msgHash) + returns (bytes32 msgHash, IBridge.Message memory _message) { // Dummy return value - return keccak256(abi.encode(message.id)); + return (keccak256(abi.encode(message.id)), _message); } function context() public view returns (BridgeContext memory) { @@ -125,15 +121,6 @@ contract PrankDestBridge { } } -// PrankSrcBridge lets us mock Bridge/SignalService to return true when called -// isMessageFailed() -contract PrankSrcBridge is SkipProofCheckBridge { - function getPreDeterminedDataBytes() external pure returns (bytes memory) { - return - hex"a9976baf000000000000000000000000000000000000000000000000000000000000008000000000000000000000000010020fcb72e27650651b05ed2ceca493bc807ba400000000000000000000000010020fcb72e27650651b05ed2ceca493bc807ba400000000000000000000000000000000000000000000000000000000000001800000000000000000000000000000000000000000000000000000000000007a69000000000000000000000000f349eda7118cad7972b7401c1f5d71e9ea218ef8000000000000000000000000000000000000000000000000000000000000008000000000000000000000000000000000000000000000000000000000000000c0000000000000000000000000000000000000000000000000000000000000000254540000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002545400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000001"; - } -} - contract UpdatedBridgedERC721 is BridgedERC721 { function helloWorld() public pure returns (string memory) { return "helloworld"; @@ -146,7 +133,7 @@ contract ERC721VaultTest is TestBase { Bridge bridge; Bridge destChainBridge; PrankDestBridge destChainIdBridge; - PrankSrcBridge srcPrankBridge; + SkipProofCheckSignal mockProofSignalService; ERC721Vault erc721Vault; ERC721Vault destChainErc721Vault; TestTokenERC721 canonicalToken721; @@ -155,14 +142,12 @@ contract ERC721VaultTest is TestBase { DummyCrossChainSync crossChainSync; uint256 destChainId = 19_389; - //Need +1 bc. and Amelia is the proxied bridge contracts owner + // Need +1 bc. and Amelia is the proxied bridge contracts owner + // Change will cause onMessageRecall() test fails, because of + // getPreDeterminedDataBytes address public constant Amelia = 0x60081B12838240B1BA02b3177153BCa678A86080; function setUp() public { - // TODO(dani): we have to overwrite Alice address, otherise - // test_onMessageRecalled_721 will fail. Do you know why? - Alice = 0x10020FCb72e27650651B05eD2CEcA493bC807Ba4; - vm.startPrank(Amelia); vm.deal(Alice, 100 ether); vm.deal(Amelia, 100 ether); @@ -191,13 +176,17 @@ contract ERC721VaultTest is TestBase { destChainIdBridge = new PrankDestBridge(destChainErc721Vault); vm.deal(address(destChainIdBridge), 100 ether); - srcPrankBridge = new PrankSrcBridge(); - srcPrankBridge.init(address(addressManager)); + mockProofSignalService = new SkipProofCheckSignal(); + mockProofSignalService.init(address(addressManager)); crossChainSync = new DummyCrossChainSync(); addressManager.setAddress( - block.chainid, "signal_service", address(signalService) + block.chainid, "signal_service", address(mockProofSignalService) + ); + + addressManager.setAddress( + destChainId, "signal_service", address(mockProofSignalService) ); addressManager.setAddress(block.chainid, "bridge", address(bridge)); @@ -217,22 +206,22 @@ contract ERC721VaultTest is TestBase { // LibBridgeRecall.sol's // resolve address addressManager.setAddress( - destChainId, "erc1155_vault", address(srcPrankBridge) + destChainId, "erc1155_vault", address(erc721Vault) ); addressManager.setAddress( - destChainId, "erc20_vault", address(srcPrankBridge) + destChainId, "erc20_vault", address(erc721Vault) ); addressManager.setAddress( - block.chainid, "erc1155_vault", address(srcPrankBridge) + block.chainid, "erc1155_vault", address(erc721Vault) ); addressManager.setAddress( - block.chainid, "erc20_vault", address(srcPrankBridge) + block.chainid, "erc20_vault", address(erc721Vault) ); addressManager.setAddress( block.chainid, "ether_vault", address(etherVault) ); // Authorize - etherVault.authorize(address(srcPrankBridge), true); + etherVault.authorize(address(destChainBridge), true); etherVault.authorize(address(bridge), true); vm.stopPrank(); @@ -244,6 +233,11 @@ contract ERC721VaultTest is TestBase { vm.stopPrank(); } + function getPreDeterminedDataBytes() internal pure returns (bytes memory) { + return + hex"a9976baf00000000000000000000000000000000000000000000000000000000000000800000000000000000000000007e5f4552091a69125d5dfcb7b8c2659029395bdf0000000000000000000000007e5f4552091a69125d5dfcb7b8c2659029395bdf00000000000000000000000000000000000000000000000000000000000001800000000000000000000000000000000000000000000000000000000000007a69000000000000000000000000f2e246bb76df876cef8b38ae84130f4f55de395b000000000000000000000000000000000000000000000000000000000000008000000000000000000000000000000000000000000000000000000000000000c0000000000000000000000000000000000000000000000000000000000000000254540000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002545400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000001"; + } + function test_721Vault_sendToken_721() public { vm.prank(Alice, Alice); canonicalToken721.approve(address(erc721Vault), 1); @@ -622,12 +616,6 @@ contract ERC721VaultTest is TestBase { Alice, "" ); - // Let's test that message is failed and we want to release it back to - // the owner - vm.prank(Amelia, Amelia); - addressManager.setAddress( - block.chainid, "bridge", address(srcPrankBridge) - ); vm.prank(Alice, Alice); erc721Vault.sendToken{ value: 140_000 }(sendOpts); @@ -646,14 +634,13 @@ contract ERC721VaultTest is TestBase { message.user = Alice; message.from = address(erc721Vault); message.to = address(destChainErc721Vault); - message.data = srcPrankBridge.getPreDeterminedDataBytes(); + message.data = getPreDeterminedDataBytes(); message.gasLimit = 140_000; message.fee = 140_000; message.refundTo = Alice; message.memo = ""; - bytes memory proof = bytes(""); - srcPrankBridge.recallMessage(message, proof); + bridge.recallMessage(message, bytes("")); // Alice got back her NFT assertEq(canonicalToken721.ownerOf(1), Alice); @@ -1001,7 +988,7 @@ contract ERC721VaultTest is TestBase { try UpdatedBridgedERC721(deployedContract).helloWorld() { fail(); } catch { - //It should not yet support this function call + // It should not yet support this function call } // Upgrade the implementation of that contract @@ -1013,7 +1000,7 @@ contract ERC721VaultTest is TestBase { ); try UpdatedBridgedERC721(deployedContract).helloWorld() { - //It should support now this function call + // It should support now this function call } catch { fail(); } diff --git a/packages/protocol/test/tokenvault/EtherVault.t.sol b/packages/protocol/test/tokenvault/EtherVault.t.sol index 4e23e0fb7f..46ece6f452 100644 --- a/packages/protocol/test/tokenvault/EtherVault.t.sol +++ b/packages/protocol/test/tokenvault/EtherVault.t.sol @@ -4,7 +4,6 @@ pragma solidity ^0.8.20; import { TestBase } from "../TestBase.sol"; import { AddressManager } from "../../contracts/common/AddressManager.sol"; import { EtherVault } from "../../contracts/bridge/EtherVault.sol"; -import { BridgeErrors } from "../../contracts/bridge/BridgeErrors.sol"; contract TestEtherVault is TestBase { AddressManager addressManager; @@ -26,12 +25,12 @@ contract TestEtherVault is TestBase { etherVault.authorize(Bob, true); vm.prank(Alice); - vm.expectRevert(BridgeErrors.B_EV_PARAM.selector); + vm.expectRevert(EtherVault.VAULT_INVALID_PARAMS.selector); etherVault.authorize(address(0), true); vm.startPrank(Alice); etherVault.authorize(Bob, true); - vm.expectRevert(BridgeErrors.B_EV_PARAM.selector); + vm.expectRevert(EtherVault.VAULT_INVALID_PARAMS.selector); etherVault.authorize(Bob, true); assertTrue(etherVault.isAuthorized(Bob)); } @@ -69,7 +68,7 @@ contract TestEtherVault is TestBase { etherVault.authorize(Alice, true); _seedEtherVault(); - vm.expectRevert(BridgeErrors.B_EV_DO_NOT_BURN.selector); + vm.expectRevert(EtherVault.VAULT_INVALID_RECIPIENT.selector); etherVault.releaseEther(address(0), 1 ether); } diff --git a/packages/protocol/utils/generate_genesis/erc20.ts b/packages/protocol/utils/generate_genesis/erc20.ts index 6621d40014..cbc7db4ea0 100644 --- a/packages/protocol/utils/generate_genesis/erc20.ts +++ b/packages/protocol/utils/generate_genesis/erc20.ts @@ -15,17 +15,16 @@ export const PREMINT_SEED_ACCOUNT_BALANCE = ethers.BigNumber.from(1024000); // and premints some tokens for the seed accounts given in the configurations. export async function deployERC20( config: any, - result: Result + result: Result, ): Promise { const { contractOwner, chainId, seedAccounts } = config; const alloc: any = {}; const storageLayouts: any = {}; - const artifact = require(path.join( - ARTIFACTS_PATH, - "./RegularERC20.sol/RegularERC20.json" - )); + const artifact = require( + path.join(ARTIFACTS_PATH, "./RegularERC20.sol/RegularERC20.json"), + ); artifact.contractName = "RegularERC20"; @@ -39,9 +38,9 @@ export async function deployERC20( address = ethers.utils.getCreate2Address( contractOwner, ethers.utils.keccak256( - ethers.utils.toUtf8Bytes(`${chainId}${artifact.contractName}`) + ethers.utils.toUtf8Bytes(`${chainId}${artifact.contractName}`), ), - ethers.utils.keccak256(ethers.utils.toUtf8Bytes(artifact.bytecode)) + ethers.utils.keccak256(ethers.utils.toUtf8Bytes(artifact.bytecode)), ); } @@ -65,12 +64,12 @@ export async function deployERC20( }; storageLayouts[artifact.contractName] = await getStorageLayout( - artifact.contractName + artifact.contractName, ); for (const slot of computeStorageSlots( storageLayouts[artifact.contractName], - variables + variables, )) { alloc[address].storage[slot.key] = slot.val; } @@ -78,7 +77,7 @@ export async function deployERC20( result.alloc = Object.assign(result.alloc, alloc); result.storageLayouts = Object.assign( result.storageLayouts, - storageLayouts + storageLayouts, ); return result; diff --git a/packages/protocol/utils/generate_genesis/main.ts b/packages/protocol/utils/generate_genesis/main.ts index 777c48402c..450fe4590f 100644 --- a/packages/protocol/utils/generate_genesis/main.ts +++ b/packages/protocol/utils/generate_genesis/main.ts @@ -12,9 +12,11 @@ async function main() { throw new Error("missing config json"); } - const config: Config = require(path.isAbsolute(process.argv[2]) - ? process.argv[2] - : path.join(process.cwd(), process.argv[2])); + const config: Config = require( + path.isAbsolute(process.argv[2]) + ? process.argv[2] + : path.join(process.cwd(), process.argv[2]), + ); const contractOwner = config.contractOwner; const chainId = config.chainId; @@ -39,7 +41,7 @@ async function main() { contractOwner, chainId, seedAccounts, - })}` + })}`, ); } @@ -60,19 +62,19 @@ async function main() { const allocSavedPath = path.join( __dirname, - "../../deployments/genesis_alloc.json" + "../../deployments/genesis_alloc.json", ); fs.writeFileSync(allocSavedPath, JSON.stringify(result.alloc, null, 2)); const layoutSavedPath = path.join( __dirname, - "../../deployments/genesis_storage_layout.json" + "../../deployments/genesis_storage_layout.json", ); fs.writeFileSync( layoutSavedPath, - JSON.stringify(result.storageLayouts, null, 2) + JSON.stringify(result.storageLayouts, null, 2), ); console.log("done"); diff --git a/packages/protocol/utils/generate_genesis/taikoL2.ts b/packages/protocol/utils/generate_genesis/taikoL2.ts index 1f6cdc0eec..ea979aa451 100644 --- a/packages/protocol/utils/generate_genesis/taikoL2.ts +++ b/packages/protocol/utils/generate_genesis/taikoL2.ts @@ -17,7 +17,7 @@ const ADMIN_SLOT = // deployTaikoL2 generates a L2 genesis alloc of the TaikoL2 contract. export async function deployTaikoL2( config: Config, - result: Result + result: Result, ): Promise { const { contractOwner, chainId, seedAccounts, contractAdmin } = config; @@ -28,7 +28,7 @@ export async function deployTaikoL2( for (const seedAccount of seedAccounts) { const accountAddress = Object.keys(seedAccount)[0]; const balance = ethers.utils.parseEther( - `${Object.values(seedAccount)[0]}` + `${Object.values(seedAccount)[0]}`, ); console.log(`seedAccountAddress: ${accountAddress}`); @@ -47,7 +47,7 @@ export async function deployTaikoL2( contractAdmin, chainId, config.contractAddresses, - config.param1559 + config.param1559, ); const storageLayouts: any = {}; @@ -78,14 +78,13 @@ export async function deployTaikoL2( storageLayoutName = `Proxied${storageLayoutName}`; } - storageLayouts[contractName] = await getStorageLayout( - storageLayoutName - ); + storageLayouts[contractName] = + await getStorageLayout(storageLayoutName); // initialize contract variables, we only care about the variables // that need to be initialized with non-zero value. const slots = computeStorageSlots( storageLayouts[contractName], - contractConfigs[contractName].variables + contractConfigs[contractName].variables, ); for (const slot of slots) { @@ -94,7 +93,7 @@ export async function deployTaikoL2( if (contractConfigs[contractName].slots) { for (const [slot, val] of Object.entries( - contractConfigs[contractName].slots + contractConfigs[contractName].slots, )) { alloc[contractConfig.address].storage[slot] = val; } @@ -104,7 +103,7 @@ export async function deployTaikoL2( result.alloc = Object.assign(result.alloc, alloc); result.storageLayouts = Object.assign( result.storageLayouts, - storageLayouts + storageLayouts, ); return result; @@ -117,65 +116,64 @@ async function generateContractConfigs( contractAdmin: string, chainId: number, hardCodedAddresses: any, - param1559: any + param1559: any, ): Promise { const contractArtifacts: any = { // Libraries - LibTrieProof: require(path.join( - ARTIFACTS_PATH, - "./LibTrieProof.sol/LibTrieProof.json" - )), - LibBridgeRetry: require(path.join( - ARTIFACTS_PATH, - "./LibBridgeRetry.sol/LibBridgeRetry.json" - )), - LibBridgeProcess: require(path.join( - ARTIFACTS_PATH, - "./LibBridgeProcess.sol/LibBridgeProcess.json" - )), - LibVaultUtils: require(path.join( - ARTIFACTS_PATH, - "./LibVaultUtils.sol/LibVaultUtils.json" - )), + LibVaultUtils: require( + path.join(ARTIFACTS_PATH, "./LibVaultUtils.sol/LibVaultUtils.json"), + ), // Contracts - ProxiedAddressManager: require(path.join( - ARTIFACTS_PATH, - "./AddressManager.sol/ProxiedAddressManager.json" - )), - ProxiedTaikoL2: require(path.join( - ARTIFACTS_PATH, - "./TaikoL2.sol/ProxiedTaikoL2.json" - )), - ProxiedBridge: require(path.join( - ARTIFACTS_PATH, - "./Bridge.sol/ProxiedBridge.json" - )), - ProxiedERC20Vault: require(path.join( - ARTIFACTS_PATH, - "./ERC20Vault.sol/ProxiedERC20Vault.json" - )), - ProxiedERC721Vault: require(path.join( - ARTIFACTS_PATH, - "./ERC721Vault.sol/ProxiedERC721Vault.json" - )), - ProxiedERC1155Vault: require(path.join( - ARTIFACTS_PATH, - "./ERC1155Vault.sol/ProxiedERC1155Vault.json" - )), - ProxiedEtherVault: require(path.join( - ARTIFACTS_PATH, - "./EtherVault.sol/ProxiedEtherVault.json" - )), - ProxiedSignalService: require(path.join( - ARTIFACTS_PATH, - "./SignalService.sol/ProxiedSignalService.json" - )), + ProxiedAddressManager: require( + path.join( + ARTIFACTS_PATH, + "./AddressManager.sol/ProxiedAddressManager.json", + ), + ), + ProxiedTaikoL2: require( + path.join(ARTIFACTS_PATH, "./TaikoL2.sol/ProxiedTaikoL2.json"), + ), + ProxiedBridge: require( + path.join(ARTIFACTS_PATH, "./Bridge.sol/ProxiedBridge.json"), + ), + ProxiedERC20Vault: require( + path.join( + ARTIFACTS_PATH, + "./ERC20Vault.sol/ProxiedERC20Vault.json", + ), + ), + ProxiedERC721Vault: require( + path.join( + ARTIFACTS_PATH, + "./ERC721Vault.sol/ProxiedERC721Vault.json", + ), + ), + ProxiedERC1155Vault: require( + path.join( + ARTIFACTS_PATH, + "./ERC1155Vault.sol/ProxiedERC1155Vault.json", + ), + ), + ProxiedEtherVault: require( + path.join( + ARTIFACTS_PATH, + "./EtherVault.sol/ProxiedEtherVault.json", + ), + ), + ProxiedSignalService: require( + path.join( + ARTIFACTS_PATH, + "./SignalService.sol/ProxiedSignalService.json", + ), + ), }; - const proxy = require(path.join( - ARTIFACTS_PATH, - "./TransparentUpgradeableProxy.sol/TransparentUpgradeableProxy.json" - )); + const proxy = require( + path.join( + ARTIFACTS_PATH, + "./TransparentUpgradeableProxy.sol/TransparentUpgradeableProxy.json", + ), + ); contractArtifacts.TaikoL2Proxy = proxy; contractArtifacts.BridgeProxy = proxy; contractArtifacts.ERC20VaultProxy = proxy; @@ -194,43 +192,19 @@ async function generateContractConfigs( case "ProxiedTaikoL2": bytecode = linkContractLibs( contractArtifacts.ProxiedTaikoL2, - addressMap - ); - break; - case "LibBridgeProcess": - if (!addressMap.LibTrieProof) { - throw new Error("LibTrieProof not initialized"); - } - - bytecode = linkContractLibs( - contractArtifacts.LibBridgeProcess, - addressMap + addressMap, ); break; case "ProxiedBridge": - if ( - !addressMap.LibTrieProof || - !addressMap.LibBridgeRetry || - !addressMap.LibBridgeProcess - ) { - throw new Error( - "LibTrieProof/LibBridgeRetry/LibBridgeProcess not initialized" - ); - } - bytecode = linkContractLibs( contractArtifacts.ProxiedBridge, - addressMap + addressMap, ); break; case "ProxiedSignalService": - if (!addressMap.LibTrieProof) { - throw new Error("LibTrieProof not initialized"); - } - bytecode = linkContractLibs( contractArtifacts.ProxiedSignalService, - addressMap + addressMap, ); break; default: @@ -246,9 +220,9 @@ async function generateContractConfigs( addressMap[contractName] = ethers.utils.getCreate2Address( contractOwner, ethers.utils.keccak256( - ethers.utils.toUtf8Bytes(`${chainId}${contractName}`) + ethers.utils.toUtf8Bytes(`${chainId}${contractName}`), ), - ethers.utils.keccak256(ethers.utils.toUtf8Bytes(bytecode)) + ethers.utils.keccak256(ethers.utils.toUtf8Bytes(bytecode)), ); } } @@ -258,26 +232,6 @@ async function generateContractConfigs( return { // Libraries - LibTrieProof: { - address: addressMap.LibTrieProof, - deployedBytecode: - contractArtifacts.LibTrieProof.deployedBytecode.object, - variables: {}, - }, - LibBridgeRetry: { - address: addressMap.LibBridgeRetry, - deployedBytecode: - contractArtifacts.LibBridgeRetry.deployedBytecode.object, - variables: {}, - }, - LibBridgeProcess: { - address: addressMap.LibBridgeProcess, - deployedBytecode: linkContractLibs( - contractArtifacts.LibBridgeProcess, - addressMap - ), - variables: {}, - }, ProxiedAddressManager: { address: addressMap.ProxiedAddressManager, deployedBytecode: @@ -297,25 +251,25 @@ async function generateContractConfigs( addresses: { [chainId]: { [ethers.utils.hexlify( - ethers.utils.toUtf8Bytes("taiko") + ethers.utils.toUtf8Bytes("taiko"), )]: addressMap.TaikoL2Proxy, [ethers.utils.hexlify( - ethers.utils.toUtf8Bytes("bridge") + ethers.utils.toUtf8Bytes("bridge"), )]: addressMap.BridgeProxy, [ethers.utils.hexlify( - ethers.utils.toUtf8Bytes("erc20_vault") + ethers.utils.toUtf8Bytes("erc20_vault"), )]: addressMap.ERC20VaultProxy, [ethers.utils.hexlify( - ethers.utils.toUtf8Bytes("erc721_vault") + ethers.utils.toUtf8Bytes("erc721_vault"), )]: addressMap.ERC721VaultProxy, [ethers.utils.hexlify( - ethers.utils.toUtf8Bytes("erc1155_vault") + ethers.utils.toUtf8Bytes("erc1155_vault"), )]: addressMap.ERC1155VaultProxy, [ethers.utils.hexlify( - ethers.utils.toUtf8Bytes("ether_vault") + ethers.utils.toUtf8Bytes("ether_vault"), )]: addressMap.EtherVaultProxy, [ethers.utils.hexlify( - ethers.utils.toUtf8Bytes("signal_service") + ethers.utils.toUtf8Bytes("signal_service"), )]: addressMap.SignalServiceProxy, }, }, @@ -330,7 +284,7 @@ async function generateContractConfigs( address: addressMap.ProxiedTaikoL2, deployedBytecode: linkContractLibs( contractArtifacts.ProxiedTaikoL2, - addressMap + addressMap, ), }, TaikoL2Proxy: { @@ -350,14 +304,14 @@ async function generateContractConfigs( .concat([ ethers.utils.hexZeroPad( ethers.utils.hexlify(chainId), - 32 + 32, ), ]), - ] + ], )}`, gasExcess: ethers.BigNumber.from(param1559.gasExcess), // AddressResolver - _addressManager: addressMap.AddressManagerProxy, + addressManager: addressMap.AddressManagerProxy, }, slots: { [ADMIN_SLOT]: contractAdmin, @@ -369,7 +323,7 @@ async function generateContractConfigs( address: addressMap.ProxiedBridge, deployedBytecode: linkContractLibs( contractArtifacts.ProxiedBridge, - addressMap + addressMap, ), }, BridgeProxy: { @@ -385,9 +339,7 @@ async function generateContractConfigs( // OwnableUpgradeable _owner: contractOwner, // AddressResolver - _addressManager: addressMap.AddressManagerProxy, - // Bridge - _state: {}, + addressManager: addressMap.AddressManagerProxy, }, slots: { [ADMIN_SLOT]: contractAdmin, @@ -399,7 +351,7 @@ async function generateContractConfigs( address: addressMap.ProxiedERC20Vault, deployedBytecode: linkContractLibs( contractArtifacts.ProxiedERC20Vault, - addressMap + addressMap, ), }, ERC20VaultProxy: { @@ -415,7 +367,7 @@ async function generateContractConfigs( // OwnableUpgradeable _owner: contractOwner, // AddressResolver - _addressManager: addressMap.AddressManagerProxy, + addressManager: addressMap.AddressManagerProxy, }, slots: { [ADMIN_SLOT]: contractAdmin, @@ -427,7 +379,7 @@ async function generateContractConfigs( address: addressMap.ProxiedERC721Vault, deployedBytecode: linkContractLibs( contractArtifacts.ProxiedERC721Vault, - addressMap + addressMap, ), }, ERC721VaultProxy: { @@ -443,7 +395,7 @@ async function generateContractConfigs( // OwnableUpgradeable _owner: contractOwner, // AddressResolver - _addressManager: addressMap.AddressManagerProxy, + addressManager: addressMap.AddressManagerProxy, }, slots: { [ADMIN_SLOT]: contractAdmin, @@ -455,7 +407,7 @@ async function generateContractConfigs( address: addressMap.ProxiedERC1155Vault, deployedBytecode: linkContractLibs( contractArtifacts.ProxiedERC1155Vault, - addressMap + addressMap, ), }, ERC1155VaultProxy: { @@ -471,7 +423,7 @@ async function generateContractConfigs( // OwnableUpgradeable _owner: contractOwner, // AddressResolver - _addressManager: addressMap.AddressManagerProxy, + addressManager: addressMap.AddressManagerProxy, }, slots: { [ADMIN_SLOT]: contractAdmin, @@ -497,10 +449,10 @@ async function generateContractConfigs( // OwnableUpgradeable _owner: contractOwner, // AddressResolver - _addressManager: addressMap.AddressManagerProxy, + addressManager: addressMap.AddressManagerProxy, // EtherVault // Authorize L2 bridge - _authorizedAddrs: { [`${addressMap.BridgeProxy}`]: true }, + isAuthorized: { [`${addressMap.BridgeProxy}`]: true }, }, slots: { [ADMIN_SLOT]: contractAdmin, @@ -512,7 +464,7 @@ async function generateContractConfigs( address: addressMap.ProxiedSignalService, deployedBytecode: linkContractLibs( contractArtifacts.ProxiedSignalService, - addressMap + addressMap, ), }, SignalServiceProxy: { @@ -528,7 +480,7 @@ async function generateContractConfigs( // OwnableUpgradeable _owner: contractOwner, // AddressResolver - _addressManager: addressMap.AddressManagerProxy, + addressManager: addressMap.AddressManagerProxy, }, slots: { [ADMIN_SLOT]: contractAdmin, @@ -547,8 +499,8 @@ function linkContractLibs(artifact: any, addressMap: any) { getLinkLibs( artifact, linker.findLinkReferences(artifact.deployedBytecode.object), - addressMap - ) + addressMap, + ), ); if (ethers.utils.toUtf8Bytes(linkedBytecode).includes("$__")) { @@ -569,11 +521,11 @@ function getLinkLibs(artifact: any, linkRefs: any, addressMap: any) { const linkRefKey: any = Object.keys(linkRefs).find( (key) => linkRefs[key][0].start === - linkReference[contractName][0].start + 1 + linkReference[contractName][0].start + 1, ); result[linkRefKey] = addressMap[contractName]; - } + }, ); return result; diff --git a/packages/relayer/ERC1155Vault.json b/packages/relayer/ERC1155Vault.json index bf5ab4ea8f..2de11eda06 100644 --- a/packages/relayer/ERC1155Vault.json +++ b/packages/relayer/ERC1155Vault.json @@ -6,7 +6,7 @@ }, { "inputs": [], - "name": "RESOLVER_INVALID_ADDR", + "name": "RESOLVER_INVALID_MANAGER", "type": "error" }, { @@ -80,19 +80,6 @@ "name": "VAULT_TOKEN_ARRAY_MISMATCH", "type": "error" }, - { - "anonymous": false, - "inputs": [ - { - "indexed": true, - "internalType": "address", - "name": "addressManager", - "type": "address" - } - ], - "name": "AddressManagerChanged", - "type": "event" - }, { "anonymous": false, "inputs": [ @@ -572,6 +559,11 @@ "internalType": "struct IBridge.Message", "name": "message", "type": "tuple" + }, + { + "internalType": "bytes32", + "name": "msgHash", + "type": "bytes32" } ], "name": "onMessageRecalled", @@ -767,19 +759,6 @@ "stateMutability": "payable", "type": "function" }, - { - "inputs": [ - { - "internalType": "address", - "name": "newAddressManager", - "type": "address" - } - ], - "name": "setAddressManager", - "outputs": [], - "stateMutability": "nonpayable", - "type": "function" - }, { "inputs": [ { diff --git a/packages/relayer/ERC20Vault.json b/packages/relayer/ERC20Vault.json index 98ef72350f..ab3080b0db 100644 --- a/packages/relayer/ERC20Vault.json +++ b/packages/relayer/ERC20Vault.json @@ -6,7 +6,7 @@ }, { "inputs": [], - "name": "RESOLVER_INVALID_ADDR", + "name": "RESOLVER_INVALID_MANAGER", "type": "error" }, { @@ -65,19 +65,6 @@ "name": "VAULT_MESSAGE_RELEASED_ALREADY", "type": "error" }, - { - "anonymous": false, - "inputs": [ - { - "indexed": true, - "internalType": "address", - "name": "addressManager", - "type": "address" - } - ], - "name": "AddressManagerChanged", - "type": "event" - }, { "anonymous": false, "inputs": [ @@ -446,6 +433,11 @@ "internalType": "struct IBridge.Message", "name": "message", "type": "tuple" + }, + { + "internalType": "bytes32", + "name": "msgHash", + "type": "bytes32" } ], "name": "onMessageRecalled", @@ -636,19 +628,6 @@ "stateMutability": "payable", "type": "function" }, - { - "inputs": [ - { - "internalType": "address", - "name": "newAddressManager", - "type": "address" - } - ], - "name": "setAddressManager", - "outputs": [], - "stateMutability": "nonpayable", - "type": "function" - }, { "inputs": [ { diff --git a/packages/relayer/ERC721Vault.json b/packages/relayer/ERC721Vault.json index 461abec176..e914bc4a7c 100644 --- a/packages/relayer/ERC721Vault.json +++ b/packages/relayer/ERC721Vault.json @@ -6,7 +6,7 @@ }, { "inputs": [], - "name": "RESOLVER_INVALID_ADDR", + "name": "RESOLVER_INVALID_MANAGER", "type": "error" }, { @@ -80,19 +80,6 @@ "name": "VAULT_TOKEN_ARRAY_MISMATCH", "type": "error" }, - { - "anonymous": false, - "inputs": [ - { - "indexed": true, - "internalType": "address", - "name": "addressManager", - "type": "address" - } - ], - "name": "AddressManagerChanged", - "type": "event" - }, { "anonymous": false, "inputs": [ @@ -528,6 +515,11 @@ "internalType": "struct IBridge.Message", "name": "message", "type": "tuple" + }, + { + "internalType": "bytes32", + "name": "msgHash", + "type": "bytes32" } ], "name": "onMessageRecalled", @@ -718,19 +710,6 @@ "stateMutability": "payable", "type": "function" }, - { - "inputs": [ - { - "internalType": "address", - "name": "newAddressManager", - "type": "address" - } - ], - "name": "setAddressManager", - "outputs": [], - "stateMutability": "nonpayable", - "type": "function" - }, { "inputs": [ { diff --git a/packages/relayer/ICrossChainSync.json b/packages/relayer/ICrossChainSync.json index 24e1ce2372..dd18064338 100644 --- a/packages/relayer/ICrossChainSync.json +++ b/packages/relayer/ICrossChainSync.json @@ -32,31 +32,24 @@ "type": "uint64" } ], - "name": "getCrossChainBlockHash", + "name": "getSyncedSnippet", "outputs": [ { - "internalType": "bytes32", - "name": "", - "type": "bytes32" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "uint64", - "name": "blockId", - "type": "uint64" - } - ], - "name": "getCrossChainSignalRoot", - "outputs": [ - { - "internalType": "bytes32", - "name": "", - "type": "bytes32" + "components": [ + { + "internalType": "bytes32", + "name": "blockHash", + "type": "bytes32" + }, + { + "internalType": "bytes32", + "name": "signalRoot", + "type": "bytes32" + } + ], + "internalType": "struct ICrossChainSync.Snippet", + "name": "snippet", + "type": "tuple" } ], "stateMutability": "view", diff --git a/packages/relayer/TaikoL1.json b/packages/relayer/TaikoL1.json index 60f46b34c0..a9a6ee556f 100644 --- a/packages/relayer/TaikoL1.json +++ b/packages/relayer/TaikoL1.json @@ -94,6 +94,11 @@ "name": "L1_INSUFFICIENT_TOKEN", "type": "error" }, + { + "inputs": [], + "name": "L1_INSUFFICIENT_TOKEN", + "type": "error" + }, { "inputs": [], "name": "L1_INVALID_ADDRESS", @@ -306,7 +311,7 @@ }, { "inputs": [], - "name": "RESOLVER_INVALID_ADDR", + "name": "RESOLVER_INVALID_MANAGER", "type": "error" }, { @@ -325,19 +330,6 @@ "name": "RESOLVER_ZERO_ADDR", "type": "error" }, - { - "anonymous": false, - "inputs": [ - { - "indexed": true, - "internalType": "address", - "name": "addressManager", - "type": "address" - } - ], - "name": "AddressManagerChanged", - "type": "event" - }, { "anonymous": false, "inputs": [ @@ -365,12 +357,6 @@ "name": "proverFee", "type": "uint256" }, - { - "indexed": false, - "internalType": "uint256", - "name": "reward", - "type": "uint256" - }, { "indexed": false, "internalType": "uint16", @@ -483,12 +469,6 @@ "name": "proverFee", "type": "uint256" }, - { - "indexed": false, - "internalType": "uint256", - "name": "reward", - "type": "uint256" - }, { "indexed": false, "internalType": "uint16", @@ -1287,11 +1267,6 @@ "name": "chainId", "type": "uint256" }, - { - "internalType": "bool", - "name": "relaySignalRoot", - "type": "bool" - }, { "internalType": "uint64", "name": "blockMaxProposals", @@ -1312,26 +1287,11 @@ "name": "blockMaxGasLimit", "type": "uint32" }, - { - "internalType": "uint32", - "name": "blockFeeBaseGas", - "type": "uint32" - }, { "internalType": "uint24", "name": "blockMaxTxListBytes", "type": "uint24" }, - { - "internalType": "uint256", - "name": "proposerRewardPerSecond", - "type": "uint256" - }, - { - "internalType": "uint256", - "name": "proposerRewardMax", - "type": "uint256" - }, { "internalType": "uint96", "name": "livenessBond", @@ -1381,44 +1341,6 @@ "stateMutability": "pure", "type": "function" }, - { - "inputs": [ - { - "internalType": "uint64", - "name": "blockId", - "type": "uint64" - } - ], - "name": "getCrossChainBlockHash", - "outputs": [ - { - "internalType": "bytes32", - "name": "", - "type": "bytes32" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "uint64", - "name": "blockId", - "type": "uint64" - } - ], - "name": "getCrossChainSignalRoot", - "outputs": [ - { - "internalType": "bytes32", - "name": "", - "type": "bytes32" - } - ], - "stateMutability": "view", - "type": "function" - }, { "inputs": [ { @@ -1483,6 +1405,37 @@ "stateMutability": "view", "type": "function" }, + { + "inputs": [ + { + "internalType": "uint64", + "name": "blockId", + "type": "uint64" + } + ], + "name": "getSyncedSnippet", + "outputs": [ + { + "components": [ + { + "internalType": "bytes32", + "name": "blockHash", + "type": "bytes32" + }, + { + "internalType": "bytes32", + "name": "signalRoot", + "type": "bytes32" + } + ], + "internalType": "struct ICrossChainSync.Snippet", + "name": "data", + "type": "tuple" + } + ], + "stateMutability": "view", + "type": "function" + }, { "inputs": [ { @@ -1538,6 +1491,11 @@ "internalType": "uint16", "name": "provingWindow", "type": "uint16" + }, + { + "internalType": "uint8", + "name": "maxBlocksToVerify", + "type": "uint8" } ], "internalType": "struct ITierProvider.Tier", @@ -1655,6 +1613,19 @@ "stateMutability": "nonpayable", "type": "function" }, + { + "inputs": [], + "name": "isConfigValid", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "pure", + "type": "function" + }, { "inputs": [], "name": "owner", @@ -1867,19 +1838,6 @@ "stateMutability": "view", "type": "function" }, - { - "inputs": [ - { - "internalType": "address", - "name": "newAddressManager", - "type": "address" - } - ], - "name": "setAddressManager", - "outputs": [], - "stateMutability": "nonpayable", - "type": "function" - }, { "inputs": [], "name": "state", @@ -1937,6 +1895,23 @@ "internalType": "struct TaikoData.SlotB", "name": "slotB", "type": "tuple" + }, + { + "components": [ + { + "internalType": "uint128", + "name": "accumulatedReward", + "type": "uint128" + }, + { + "internalType": "uint64", + "name": "lastProposedHeight", + "type": "uint64" + } + ], + "internalType": "struct TaikoData.SlotC", + "name": "slotC", + "type": "tuple" } ], "stateMutability": "view", @@ -1959,7 +1934,7 @@ "inputs": [ { "internalType": "uint64", - "name": "maxBlocks", + "name": "maxBlocksToVerify", "type": "uint64" } ], diff --git a/packages/relayer/bindings/bridge/Bridge.go b/packages/relayer/bindings/bridge/Bridge.go index 2313b34e13..3802d78c7e 100644 --- a/packages/relayer/bindings/bridge/Bridge.go +++ b/packages/relayer/bindings/bridge/Bridge.go @@ -54,7 +54,7 @@ type IBridgeMessage struct { // BridgeMetaData contains all meta data concerning the Bridge contract. var BridgeMetaData = &bind.MetaData{ - ABI: "[{\"inputs\":[],\"name\":\"B_DENIED\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"B_DENIED\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"B_ERC20_CANNOT_RECEIVE\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"B_EV_DO_NOT_BURN\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"B_EV_NOT_AUTHORIZED\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"B_EV_PARAM\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"B_FAILED_TRANSFER\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"B_FORBIDDEN\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"B_FORBIDDEN\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"B_GAS_LIMIT\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"B_GAS_LIMIT\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"B_INCORRECT_VALUE\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"B_INCORRECT_VALUE\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"B_INIT_PARAM_ERROR\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"B_MSG_HASH_NULL\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"B_MSG_HASH_NULL\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"B_MSG_NON_RETRIABLE\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"B_MSG_NON_RETRIABLE\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"B_MSG_NOT_FAILED\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"B_MSG_NOT_FAILED\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"B_MSG_RECALLED_ALREADY\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"B_MSG_RECALLED_ALREADY\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"B_NULL_APP_ADDR\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"B_SIGNAL_NOT_RECEIVED\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"B_SIGNAL_NOT_RECEIVED\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"B_STATUS_MISMATCH\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"B_STATUS_MISMATCH\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"B_USER_IS_NULL\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"B_USER_IS_NULL\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"B_WRONG_CHAIN_ID\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"B_WRONG_CHAIN_ID\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"B_WRONG_CHAIN_ID\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"B_WRONG_CHAIN_ID\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"B_WRONG_TO_ADDRESS\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"B_WRONG_TO_ADDRESS\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"B_ZERO_SIGNAL\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"RESOLVER_DENIED\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"RESOLVER_INVALID_ADDR\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"chainId\",\"type\":\"uint256\"},{\"internalType\":\"bytes32\",\"name\":\"name\",\"type\":\"bytes32\"}],\"name\":\"RESOLVER_ZERO_ADDR\",\"type\":\"error\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"addressManager\",\"type\":\"address\"}],\"name\":\"AddressManagerChanged\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"chainId\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"bool\",\"name\":\"enabled\",\"type\":\"bool\"}],\"name\":\"DestChainEnabled\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint8\",\"name\":\"version\",\"type\":\"uint8\"}],\"name\":\"Initialized\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"msgHash\",\"type\":\"bytes32\"}],\"name\":\"MessageRecalled\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"msgHash\",\"type\":\"bytes32\"}],\"name\":\"MessageRecalled\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"msgHash\",\"type\":\"bytes32\"},{\"components\":[{\"internalType\":\"uint256\",\"name\":\"id\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"srcChainId\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"destChainId\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"user\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"refundTo\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"fee\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"gasLimit\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"},{\"internalType\":\"string\",\"name\":\"memo\",\"type\":\"string\"}],\"indexed\":false,\"internalType\":\"structIBridge.Message\",\"name\":\"message\",\"type\":\"tuple\"}],\"name\":\"MessageSent\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"msgHash\",\"type\":\"bytes32\"},{\"components\":[{\"internalType\":\"uint256\",\"name\":\"id\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"srcChainId\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"destChainId\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"user\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"refundTo\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"fee\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"gasLimit\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"},{\"internalType\":\"string\",\"name\":\"memo\",\"type\":\"string\"}],\"indexed\":false,\"internalType\":\"structIBridge.Message\",\"name\":\"message\",\"type\":\"tuple\"}],\"name\":\"MessageSent\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"msgHash\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"enumLibBridgeStatus.MessageStatus\",\"name\":\"status\",\"type\":\"uint8\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"transactor\",\"type\":\"address\"}],\"name\":\"MessageStatusChanged\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"msgHash\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"enumLibBridgeStatus.MessageStatus\",\"name\":\"status\",\"type\":\"uint8\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"transactor\",\"type\":\"address\"}],\"name\":\"MessageStatusChanged\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"previousOwner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"newOwner\",\"type\":\"address\"}],\"name\":\"OwnershipTransferred\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"msgHash\",\"type\":\"bytes32\"}],\"name\":\"SignalSent\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"addressManager\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"context\",\"outputs\":[{\"components\":[{\"internalType\":\"bytes32\",\"name\":\"msgHash\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"srcChainId\",\"type\":\"uint256\"}],\"internalType\":\"structIBridge.Context\",\"name\":\"\",\"type\":\"tuple\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"msgHash\",\"type\":\"bytes32\"}],\"name\":\"getMessageStatus\",\"outputs\":[{\"internalType\":\"enumLibBridgeStatus.MessageStatus\",\"name\":\"\",\"type\":\"uint8\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"msgHash\",\"type\":\"bytes32\"}],\"name\":\"getMessageStatusSlot\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"uint256\",\"name\":\"id\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"srcChainId\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"destChainId\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"user\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"refundTo\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"fee\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"gasLimit\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"},{\"internalType\":\"string\",\"name\":\"memo\",\"type\":\"string\"}],\"internalType\":\"structIBridge.Message\",\"name\":\"message\",\"type\":\"tuple\"}],\"name\":\"hashMessage\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_addressManager\",\"type\":\"address\"}],\"name\":\"init\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_chainId\",\"type\":\"uint256\"}],\"name\":\"isDestChainEnabled\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"enabled\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"msgHash\",\"type\":\"bytes32\"},{\"internalType\":\"uint256\",\"name\":\"destChainId\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"proof\",\"type\":\"bytes\"}],\"name\":\"isMessageFailed\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"msgHash\",\"type\":\"bytes32\"}],\"name\":\"isMessageRecalled\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"msgHash\",\"type\":\"bytes32\"},{\"internalType\":\"uint256\",\"name\":\"srcChainId\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"proof\",\"type\":\"bytes\"}],\"name\":\"isMessageReceived\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"msgHash\",\"type\":\"bytes32\"}],\"name\":\"isMessageSent\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"owner\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"uint256\",\"name\":\"id\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"srcChainId\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"destChainId\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"user\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"refundTo\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"fee\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"gasLimit\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"},{\"internalType\":\"string\",\"name\":\"memo\",\"type\":\"string\"}],\"internalType\":\"structIBridge.Message\",\"name\":\"message\",\"type\":\"tuple\"},{\"internalType\":\"bytes\",\"name\":\"proof\",\"type\":\"bytes\"}],\"name\":\"processMessage\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"uint256\",\"name\":\"id\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"srcChainId\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"destChainId\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"user\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"refundTo\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"fee\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"gasLimit\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"},{\"internalType\":\"string\",\"name\":\"memo\",\"type\":\"string\"}],\"internalType\":\"structIBridge.Message\",\"name\":\"message\",\"type\":\"tuple\"},{\"internalType\":\"bytes\",\"name\":\"proof\",\"type\":\"bytes\"}],\"name\":\"recallMessage\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"renounceOwnership\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"chainId\",\"type\":\"uint256\"},{\"internalType\":\"bytes32\",\"name\":\"name\",\"type\":\"bytes32\"},{\"internalType\":\"bool\",\"name\":\"allowZeroAddress\",\"type\":\"bool\"}],\"name\":\"resolve\",\"outputs\":[{\"internalType\":\"addresspayable\",\"name\":\"addr\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"name\",\"type\":\"bytes32\"},{\"internalType\":\"bool\",\"name\":\"allowZeroAddress\",\"type\":\"bool\"}],\"name\":\"resolve\",\"outputs\":[{\"internalType\":\"addresspayable\",\"name\":\"addr\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"uint256\",\"name\":\"id\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"srcChainId\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"destChainId\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"user\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"refundTo\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"fee\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"gasLimit\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"},{\"internalType\":\"string\",\"name\":\"memo\",\"type\":\"string\"}],\"internalType\":\"structIBridge.Message\",\"name\":\"message\",\"type\":\"tuple\"},{\"internalType\":\"bool\",\"name\":\"isLastAttempt\",\"type\":\"bool\"}],\"name\":\"retryMessage\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"uint256\",\"name\":\"id\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"srcChainId\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"destChainId\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"user\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"refundTo\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"fee\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"gasLimit\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"},{\"internalType\":\"string\",\"name\":\"memo\",\"type\":\"string\"}],\"internalType\":\"structIBridge.Message\",\"name\":\"message\",\"type\":\"tuple\"}],\"name\":\"sendMessage\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"msgHash\",\"type\":\"bytes32\"}],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"newAddressManager\",\"type\":\"address\"}],\"name\":\"setAddressManager\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"newOwner\",\"type\":\"address\"}],\"name\":\"transferOwnership\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"stateMutability\":\"payable\",\"type\":\"receive\"}]", + ABI: "[{\"inputs\":[],\"name\":\"B_INVALID_CHAINID\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"B_INVALID_CONTEXT\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"B_INVALID_GAS_LIMIT\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"B_INVALID_SIGNAL\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"B_INVALID_TO\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"B_INVALID_USER\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"B_INVALID_VALUE\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"B_NON_RETRIABLE\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"B_NOT_FAILED\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"B_NOT_RECEIVED\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"B_PERMISSION_DENIED\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"B_RECALLED_ALREADY\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"B_STATUS_MISMATCH\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"RESOLVER_DENIED\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"RESOLVER_INVALID_MANAGER\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"chainId\",\"type\":\"uint256\"},{\"internalType\":\"bytes32\",\"name\":\"name\",\"type\":\"bytes32\"}],\"name\":\"RESOLVER_ZERO_ADDR\",\"type\":\"error\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"chainId\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"bool\",\"name\":\"enabled\",\"type\":\"bool\"}],\"name\":\"DestChainEnabled\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint8\",\"name\":\"version\",\"type\":\"uint8\"}],\"name\":\"Initialized\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"msgHash\",\"type\":\"bytes32\"}],\"name\":\"MessageRecalled\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"msgHash\",\"type\":\"bytes32\"},{\"components\":[{\"internalType\":\"uint256\",\"name\":\"id\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"srcChainId\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"destChainId\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"user\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"refundTo\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"fee\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"gasLimit\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"},{\"internalType\":\"string\",\"name\":\"memo\",\"type\":\"string\"}],\"indexed\":false,\"internalType\":\"structIBridge.Message\",\"name\":\"message\",\"type\":\"tuple\"}],\"name\":\"MessageSent\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"msgHash\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"enumBridge.Status\",\"name\":\"status\",\"type\":\"uint8\"}],\"name\":\"MessageStatusChanged\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"previousOwner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"newOwner\",\"type\":\"address\"}],\"name\":\"OwnershipTransferred\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"msgHash\",\"type\":\"bytes32\"}],\"name\":\"SignalSent\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"addressManager\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"context\",\"outputs\":[{\"components\":[{\"internalType\":\"bytes32\",\"name\":\"msgHash\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"srcChainId\",\"type\":\"uint256\"}],\"internalType\":\"structIBridge.Context\",\"name\":\"\",\"type\":\"tuple\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_addressManager\",\"type\":\"address\"}],\"name\":\"init\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"chainId\",\"type\":\"uint256\"}],\"name\":\"isDestChainEnabled\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"enabled\",\"type\":\"bool\"},{\"internalType\":\"address\",\"name\":\"destBridge\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"msgHash\",\"type\":\"bytes32\"}],\"name\":\"isMessageRecalled\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"recalled\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"uint256\",\"name\":\"id\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"srcChainId\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"destChainId\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"user\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"refundTo\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"fee\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"gasLimit\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"},{\"internalType\":\"string\",\"name\":\"memo\",\"type\":\"string\"}],\"internalType\":\"structIBridge.Message\",\"name\":\"message\",\"type\":\"tuple\"}],\"name\":\"isMessageSent\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"msgHash\",\"type\":\"bytes32\"}],\"name\":\"messageStatus\",\"outputs\":[{\"internalType\":\"enumBridge.Status\",\"name\":\"\",\"type\":\"uint8\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"nextMessageId\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"owner\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"uint256\",\"name\":\"id\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"srcChainId\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"destChainId\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"user\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"refundTo\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"fee\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"gasLimit\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"},{\"internalType\":\"string\",\"name\":\"memo\",\"type\":\"string\"}],\"internalType\":\"structIBridge.Message\",\"name\":\"message\",\"type\":\"tuple\"},{\"internalType\":\"bytes\",\"name\":\"proof\",\"type\":\"bytes\"}],\"name\":\"processMessage\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"uint256\",\"name\":\"id\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"srcChainId\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"destChainId\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"user\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"refundTo\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"fee\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"gasLimit\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"},{\"internalType\":\"string\",\"name\":\"memo\",\"type\":\"string\"}],\"internalType\":\"structIBridge.Message\",\"name\":\"message\",\"type\":\"tuple\"},{\"internalType\":\"bytes\",\"name\":\"proof\",\"type\":\"bytes\"}],\"name\":\"proveMessageFailed\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"uint256\",\"name\":\"id\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"srcChainId\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"destChainId\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"user\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"refundTo\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"fee\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"gasLimit\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"},{\"internalType\":\"string\",\"name\":\"memo\",\"type\":\"string\"}],\"internalType\":\"structIBridge.Message\",\"name\":\"message\",\"type\":\"tuple\"},{\"internalType\":\"bytes\",\"name\":\"proof\",\"type\":\"bytes\"}],\"name\":\"proveMessageReceived\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"uint256\",\"name\":\"id\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"srcChainId\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"destChainId\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"user\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"refundTo\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"fee\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"gasLimit\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"},{\"internalType\":\"string\",\"name\":\"memo\",\"type\":\"string\"}],\"internalType\":\"structIBridge.Message\",\"name\":\"message\",\"type\":\"tuple\"},{\"internalType\":\"bytes\",\"name\":\"proof\",\"type\":\"bytes\"}],\"name\":\"recallMessage\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"renounceOwnership\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"chainId\",\"type\":\"uint256\"},{\"internalType\":\"bytes32\",\"name\":\"name\",\"type\":\"bytes32\"},{\"internalType\":\"bool\",\"name\":\"allowZeroAddress\",\"type\":\"bool\"}],\"name\":\"resolve\",\"outputs\":[{\"internalType\":\"addresspayable\",\"name\":\"addr\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"name\",\"type\":\"bytes32\"},{\"internalType\":\"bool\",\"name\":\"allowZeroAddress\",\"type\":\"bool\"}],\"name\":\"resolve\",\"outputs\":[{\"internalType\":\"addresspayable\",\"name\":\"addr\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"uint256\",\"name\":\"id\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"srcChainId\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"destChainId\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"user\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"refundTo\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"fee\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"gasLimit\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"},{\"internalType\":\"string\",\"name\":\"memo\",\"type\":\"string\"}],\"internalType\":\"structIBridge.Message\",\"name\":\"message\",\"type\":\"tuple\"},{\"internalType\":\"bool\",\"name\":\"isLastAttempt\",\"type\":\"bool\"}],\"name\":\"retryMessage\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"uint256\",\"name\":\"id\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"srcChainId\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"destChainId\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"user\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"refundTo\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"fee\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"gasLimit\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"},{\"internalType\":\"string\",\"name\":\"memo\",\"type\":\"string\"}],\"internalType\":\"structIBridge.Message\",\"name\":\"message\",\"type\":\"tuple\"}],\"name\":\"sendMessage\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"msgHash\",\"type\":\"bytes32\"},{\"components\":[{\"internalType\":\"uint256\",\"name\":\"id\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"srcChainId\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"destChainId\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"user\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"refundTo\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"fee\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"gasLimit\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"},{\"internalType\":\"string\",\"name\":\"memo\",\"type\":\"string\"}],\"internalType\":\"structIBridge.Message\",\"name\":\"_message\",\"type\":\"tuple\"}],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"newOwner\",\"type\":\"address\"}],\"name\":\"transferOwnership\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"stateMutability\":\"payable\",\"type\":\"receive\"}]", } // BridgeABI is the input ABI used to generate the binding from. @@ -265,105 +265,88 @@ func (_Bridge *BridgeCallerSession) Context() (IBridgeContext, error) { return _Bridge.Contract.Context(&_Bridge.CallOpts) } -// GetMessageStatus is a free data retrieval call binding the contract method 0x5075a9d4. -// -// Solidity: function getMessageStatus(bytes32 msgHash) view returns(uint8) -func (_Bridge *BridgeCaller) GetMessageStatus(opts *bind.CallOpts, msgHash [32]byte) (uint8, error) { - var out []interface{} - err := _Bridge.contract.Call(opts, &out, "getMessageStatus", msgHash) - - if err != nil { - return *new(uint8), err - } - - out0 := *abi.ConvertType(out[0], new(uint8)).(*uint8) - - return out0, err - -} - -// GetMessageStatus is a free data retrieval call binding the contract method 0x5075a9d4. -// -// Solidity: function getMessageStatus(bytes32 msgHash) view returns(uint8) -func (_Bridge *BridgeSession) GetMessageStatus(msgHash [32]byte) (uint8, error) { - return _Bridge.Contract.GetMessageStatus(&_Bridge.CallOpts, msgHash) -} - -// GetMessageStatus is a free data retrieval call binding the contract method 0x5075a9d4. -// -// Solidity: function getMessageStatus(bytes32 msgHash) view returns(uint8) -func (_Bridge *BridgeCallerSession) GetMessageStatus(msgHash [32]byte) (uint8, error) { - return _Bridge.Contract.GetMessageStatus(&_Bridge.CallOpts, msgHash) -} - -// GetMessageStatusSlot is a free data retrieval call binding the contract method 0x606b5b74. +// IsDestChainEnabled is a free data retrieval call binding the contract method 0x5d0bd986. // -// Solidity: function getMessageStatusSlot(bytes32 msgHash) pure returns(bytes32) -func (_Bridge *BridgeCaller) GetMessageStatusSlot(opts *bind.CallOpts, msgHash [32]byte) ([32]byte, error) { +// Solidity: function isDestChainEnabled(uint256 chainId) view returns(bool enabled, address destBridge) +func (_Bridge *BridgeCaller) IsDestChainEnabled(opts *bind.CallOpts, chainId *big.Int) (struct { + Enabled bool + DestBridge common.Address +}, error) { var out []interface{} - err := _Bridge.contract.Call(opts, &out, "getMessageStatusSlot", msgHash) + err := _Bridge.contract.Call(opts, &out, "isDestChainEnabled", chainId) + outstruct := new(struct { + Enabled bool + DestBridge common.Address + }) if err != nil { - return *new([32]byte), err + return *outstruct, err } - out0 := *abi.ConvertType(out[0], new([32]byte)).(*[32]byte) + outstruct.Enabled = *abi.ConvertType(out[0], new(bool)).(*bool) + outstruct.DestBridge = *abi.ConvertType(out[1], new(common.Address)).(*common.Address) - return out0, err + return *outstruct, err } -// GetMessageStatusSlot is a free data retrieval call binding the contract method 0x606b5b74. +// IsDestChainEnabled is a free data retrieval call binding the contract method 0x5d0bd986. // -// Solidity: function getMessageStatusSlot(bytes32 msgHash) pure returns(bytes32) -func (_Bridge *BridgeSession) GetMessageStatusSlot(msgHash [32]byte) ([32]byte, error) { - return _Bridge.Contract.GetMessageStatusSlot(&_Bridge.CallOpts, msgHash) +// Solidity: function isDestChainEnabled(uint256 chainId) view returns(bool enabled, address destBridge) +func (_Bridge *BridgeSession) IsDestChainEnabled(chainId *big.Int) (struct { + Enabled bool + DestBridge common.Address +}, error) { + return _Bridge.Contract.IsDestChainEnabled(&_Bridge.CallOpts, chainId) } -// GetMessageStatusSlot is a free data retrieval call binding the contract method 0x606b5b74. +// IsDestChainEnabled is a free data retrieval call binding the contract method 0x5d0bd986. // -// Solidity: function getMessageStatusSlot(bytes32 msgHash) pure returns(bytes32) -func (_Bridge *BridgeCallerSession) GetMessageStatusSlot(msgHash [32]byte) ([32]byte, error) { - return _Bridge.Contract.GetMessageStatusSlot(&_Bridge.CallOpts, msgHash) +// Solidity: function isDestChainEnabled(uint256 chainId) view returns(bool enabled, address destBridge) +func (_Bridge *BridgeCallerSession) IsDestChainEnabled(chainId *big.Int) (struct { + Enabled bool + DestBridge common.Address +}, error) { + return _Bridge.Contract.IsDestChainEnabled(&_Bridge.CallOpts, chainId) } -// HashMessage is a free data retrieval call binding the contract method 0x263463c8. +// IsMessageRecalled is a free data retrieval call binding the contract method 0x4f5f9772. // -// Solidity: function hashMessage((uint256,address,uint256,uint256,address,address,address,uint256,uint256,uint256,bytes,string) message) pure returns(bytes32) -func (_Bridge *BridgeCaller) HashMessage(opts *bind.CallOpts, message IBridgeMessage) ([32]byte, error) { +// Solidity: function isMessageRecalled(bytes32 msgHash) view returns(bool recalled) +func (_Bridge *BridgeCaller) IsMessageRecalled(opts *bind.CallOpts, msgHash [32]byte) (bool, error) { var out []interface{} - err := _Bridge.contract.Call(opts, &out, "hashMessage", message) + err := _Bridge.contract.Call(opts, &out, "isMessageRecalled", msgHash) if err != nil { - return *new([32]byte), err + return *new(bool), err } - out0 := *abi.ConvertType(out[0], new([32]byte)).(*[32]byte) + out0 := *abi.ConvertType(out[0], new(bool)).(*bool) return out0, err } -// HashMessage is a free data retrieval call binding the contract method 0x263463c8. +// IsMessageRecalled is a free data retrieval call binding the contract method 0x4f5f9772. // -// Solidity: function hashMessage((uint256,address,uint256,uint256,address,address,address,uint256,uint256,uint256,bytes,string) message) pure returns(bytes32) -func (_Bridge *BridgeSession) HashMessage(message IBridgeMessage) ([32]byte, error) { - return _Bridge.Contract.HashMessage(&_Bridge.CallOpts, message) +// Solidity: function isMessageRecalled(bytes32 msgHash) view returns(bool recalled) +func (_Bridge *BridgeSession) IsMessageRecalled(msgHash [32]byte) (bool, error) { + return _Bridge.Contract.IsMessageRecalled(&_Bridge.CallOpts, msgHash) } -// HashMessage is a free data retrieval call binding the contract method 0x263463c8. +// IsMessageRecalled is a free data retrieval call binding the contract method 0x4f5f9772. // -// Solidity: function hashMessage((uint256,address,uint256,uint256,address,address,address,uint256,uint256,uint256,bytes,string) message) pure returns(bytes32) -func (_Bridge *BridgeCallerSession) HashMessage(message IBridgeMessage) ([32]byte, error) { - return _Bridge.Contract.HashMessage(&_Bridge.CallOpts, message) +// Solidity: function isMessageRecalled(bytes32 msgHash) view returns(bool recalled) +func (_Bridge *BridgeCallerSession) IsMessageRecalled(msgHash [32]byte) (bool, error) { + return _Bridge.Contract.IsMessageRecalled(&_Bridge.CallOpts, msgHash) } -// IsDestChainEnabled is a free data retrieval call binding the contract method 0x5d0bd986. +// IsMessageSent is a free data retrieval call binding the contract method 0xd6624194. // -// Solidity: function isDestChainEnabled(uint256 _chainId) view returns(bool enabled) -func (_Bridge *BridgeCaller) IsDestChainEnabled(opts *bind.CallOpts, _chainId *big.Int) (bool, error) { +// Solidity: function isMessageSent((uint256,address,uint256,uint256,address,address,address,uint256,uint256,uint256,bytes,string) message) view returns(bool) +func (_Bridge *BridgeCaller) IsMessageSent(opts *bind.CallOpts, message IBridgeMessage) (bool, error) { var out []interface{} - err := _Bridge.contract.Call(opts, &out, "isDestChainEnabled", _chainId) + err := _Bridge.contract.Call(opts, &out, "isMessageSent", message) if err != nil { return *new(bool), err @@ -375,119 +358,119 @@ func (_Bridge *BridgeCaller) IsDestChainEnabled(opts *bind.CallOpts, _chainId *b } -// IsDestChainEnabled is a free data retrieval call binding the contract method 0x5d0bd986. +// IsMessageSent is a free data retrieval call binding the contract method 0xd6624194. // -// Solidity: function isDestChainEnabled(uint256 _chainId) view returns(bool enabled) -func (_Bridge *BridgeSession) IsDestChainEnabled(_chainId *big.Int) (bool, error) { - return _Bridge.Contract.IsDestChainEnabled(&_Bridge.CallOpts, _chainId) +// Solidity: function isMessageSent((uint256,address,uint256,uint256,address,address,address,uint256,uint256,uint256,bytes,string) message) view returns(bool) +func (_Bridge *BridgeSession) IsMessageSent(message IBridgeMessage) (bool, error) { + return _Bridge.Contract.IsMessageSent(&_Bridge.CallOpts, message) } -// IsDestChainEnabled is a free data retrieval call binding the contract method 0x5d0bd986. +// IsMessageSent is a free data retrieval call binding the contract method 0xd6624194. // -// Solidity: function isDestChainEnabled(uint256 _chainId) view returns(bool enabled) -func (_Bridge *BridgeCallerSession) IsDestChainEnabled(_chainId *big.Int) (bool, error) { - return _Bridge.Contract.IsDestChainEnabled(&_Bridge.CallOpts, _chainId) +// Solidity: function isMessageSent((uint256,address,uint256,uint256,address,address,address,uint256,uint256,uint256,bytes,string) message) view returns(bool) +func (_Bridge *BridgeCallerSession) IsMessageSent(message IBridgeMessage) (bool, error) { + return _Bridge.Contract.IsMessageSent(&_Bridge.CallOpts, message) } -// IsMessageFailed is a free data retrieval call binding the contract method 0xce70f39b. +// MessageStatus is a free data retrieval call binding the contract method 0x3c6cf473. // -// Solidity: function isMessageFailed(bytes32 msgHash, uint256 destChainId, bytes proof) view returns(bool) -func (_Bridge *BridgeCaller) IsMessageFailed(opts *bind.CallOpts, msgHash [32]byte, destChainId *big.Int, proof []byte) (bool, error) { +// Solidity: function messageStatus(bytes32 msgHash) view returns(uint8) +func (_Bridge *BridgeCaller) MessageStatus(opts *bind.CallOpts, msgHash [32]byte) (uint8, error) { var out []interface{} - err := _Bridge.contract.Call(opts, &out, "isMessageFailed", msgHash, destChainId, proof) + err := _Bridge.contract.Call(opts, &out, "messageStatus", msgHash) if err != nil { - return *new(bool), err + return *new(uint8), err } - out0 := *abi.ConvertType(out[0], new(bool)).(*bool) + out0 := *abi.ConvertType(out[0], new(uint8)).(*uint8) return out0, err } -// IsMessageFailed is a free data retrieval call binding the contract method 0xce70f39b. +// MessageStatus is a free data retrieval call binding the contract method 0x3c6cf473. // -// Solidity: function isMessageFailed(bytes32 msgHash, uint256 destChainId, bytes proof) view returns(bool) -func (_Bridge *BridgeSession) IsMessageFailed(msgHash [32]byte, destChainId *big.Int, proof []byte) (bool, error) { - return _Bridge.Contract.IsMessageFailed(&_Bridge.CallOpts, msgHash, destChainId, proof) +// Solidity: function messageStatus(bytes32 msgHash) view returns(uint8) +func (_Bridge *BridgeSession) MessageStatus(msgHash [32]byte) (uint8, error) { + return _Bridge.Contract.MessageStatus(&_Bridge.CallOpts, msgHash) } -// IsMessageFailed is a free data retrieval call binding the contract method 0xce70f39b. +// MessageStatus is a free data retrieval call binding the contract method 0x3c6cf473. // -// Solidity: function isMessageFailed(bytes32 msgHash, uint256 destChainId, bytes proof) view returns(bool) -func (_Bridge *BridgeCallerSession) IsMessageFailed(msgHash [32]byte, destChainId *big.Int, proof []byte) (bool, error) { - return _Bridge.Contract.IsMessageFailed(&_Bridge.CallOpts, msgHash, destChainId, proof) +// Solidity: function messageStatus(bytes32 msgHash) view returns(uint8) +func (_Bridge *BridgeCallerSession) MessageStatus(msgHash [32]byte) (uint8, error) { + return _Bridge.Contract.MessageStatus(&_Bridge.CallOpts, msgHash) } -// IsMessageRecalled is a free data retrieval call binding the contract method 0x4f5f9772. +// NextMessageId is a free data retrieval call binding the contract method 0xeefbf17e. // -// Solidity: function isMessageRecalled(bytes32 msgHash) view returns(bool) -func (_Bridge *BridgeCaller) IsMessageRecalled(opts *bind.CallOpts, msgHash [32]byte) (bool, error) { +// Solidity: function nextMessageId() view returns(uint256) +func (_Bridge *BridgeCaller) NextMessageId(opts *bind.CallOpts) (*big.Int, error) { var out []interface{} - err := _Bridge.contract.Call(opts, &out, "isMessageRecalled", msgHash) + err := _Bridge.contract.Call(opts, &out, "nextMessageId") if err != nil { - return *new(bool), err + return *new(*big.Int), err } - out0 := *abi.ConvertType(out[0], new(bool)).(*bool) + out0 := *abi.ConvertType(out[0], new(*big.Int)).(**big.Int) return out0, err } -// IsMessageRecalled is a free data retrieval call binding the contract method 0x4f5f9772. +// NextMessageId is a free data retrieval call binding the contract method 0xeefbf17e. // -// Solidity: function isMessageRecalled(bytes32 msgHash) view returns(bool) -func (_Bridge *BridgeSession) IsMessageRecalled(msgHash [32]byte) (bool, error) { - return _Bridge.Contract.IsMessageRecalled(&_Bridge.CallOpts, msgHash) +// Solidity: function nextMessageId() view returns(uint256) +func (_Bridge *BridgeSession) NextMessageId() (*big.Int, error) { + return _Bridge.Contract.NextMessageId(&_Bridge.CallOpts) } -// IsMessageRecalled is a free data retrieval call binding the contract method 0x4f5f9772. +// NextMessageId is a free data retrieval call binding the contract method 0xeefbf17e. // -// Solidity: function isMessageRecalled(bytes32 msgHash) view returns(bool) -func (_Bridge *BridgeCallerSession) IsMessageRecalled(msgHash [32]byte) (bool, error) { - return _Bridge.Contract.IsMessageRecalled(&_Bridge.CallOpts, msgHash) +// Solidity: function nextMessageId() view returns(uint256) +func (_Bridge *BridgeCallerSession) NextMessageId() (*big.Int, error) { + return _Bridge.Contract.NextMessageId(&_Bridge.CallOpts) } -// IsMessageReceived is a free data retrieval call binding the contract method 0xa4444efd. +// Owner is a free data retrieval call binding the contract method 0x8da5cb5b. // -// Solidity: function isMessageReceived(bytes32 msgHash, uint256 srcChainId, bytes proof) view returns(bool) -func (_Bridge *BridgeCaller) IsMessageReceived(opts *bind.CallOpts, msgHash [32]byte, srcChainId *big.Int, proof []byte) (bool, error) { +// Solidity: function owner() view returns(address) +func (_Bridge *BridgeCaller) Owner(opts *bind.CallOpts) (common.Address, error) { var out []interface{} - err := _Bridge.contract.Call(opts, &out, "isMessageReceived", msgHash, srcChainId, proof) + err := _Bridge.contract.Call(opts, &out, "owner") if err != nil { - return *new(bool), err + return *new(common.Address), err } - out0 := *abi.ConvertType(out[0], new(bool)).(*bool) + out0 := *abi.ConvertType(out[0], new(common.Address)).(*common.Address) return out0, err } -// IsMessageReceived is a free data retrieval call binding the contract method 0xa4444efd. +// Owner is a free data retrieval call binding the contract method 0x8da5cb5b. // -// Solidity: function isMessageReceived(bytes32 msgHash, uint256 srcChainId, bytes proof) view returns(bool) -func (_Bridge *BridgeSession) IsMessageReceived(msgHash [32]byte, srcChainId *big.Int, proof []byte) (bool, error) { - return _Bridge.Contract.IsMessageReceived(&_Bridge.CallOpts, msgHash, srcChainId, proof) +// Solidity: function owner() view returns(address) +func (_Bridge *BridgeSession) Owner() (common.Address, error) { + return _Bridge.Contract.Owner(&_Bridge.CallOpts) } -// IsMessageReceived is a free data retrieval call binding the contract method 0xa4444efd. +// Owner is a free data retrieval call binding the contract method 0x8da5cb5b. // -// Solidity: function isMessageReceived(bytes32 msgHash, uint256 srcChainId, bytes proof) view returns(bool) -func (_Bridge *BridgeCallerSession) IsMessageReceived(msgHash [32]byte, srcChainId *big.Int, proof []byte) (bool, error) { - return _Bridge.Contract.IsMessageReceived(&_Bridge.CallOpts, msgHash, srcChainId, proof) +// Solidity: function owner() view returns(address) +func (_Bridge *BridgeCallerSession) Owner() (common.Address, error) { + return _Bridge.Contract.Owner(&_Bridge.CallOpts) } -// IsMessageSent is a free data retrieval call binding the contract method 0x540be6a3. +// ProveMessageFailed is a free data retrieval call binding the contract method 0x6b778a9e. // -// Solidity: function isMessageSent(bytes32 msgHash) view returns(bool) -func (_Bridge *BridgeCaller) IsMessageSent(opts *bind.CallOpts, msgHash [32]byte) (bool, error) { +// Solidity: function proveMessageFailed((uint256,address,uint256,uint256,address,address,address,uint256,uint256,uint256,bytes,string) message, bytes proof) view returns(bool) +func (_Bridge *BridgeCaller) ProveMessageFailed(opts *bind.CallOpts, message IBridgeMessage, proof []byte) (bool, error) { var out []interface{} - err := _Bridge.contract.Call(opts, &out, "isMessageSent", msgHash) + err := _Bridge.contract.Call(opts, &out, "proveMessageFailed", message, proof) if err != nil { return *new(bool), err @@ -499,49 +482,49 @@ func (_Bridge *BridgeCaller) IsMessageSent(opts *bind.CallOpts, msgHash [32]byte } -// IsMessageSent is a free data retrieval call binding the contract method 0x540be6a3. +// ProveMessageFailed is a free data retrieval call binding the contract method 0x6b778a9e. // -// Solidity: function isMessageSent(bytes32 msgHash) view returns(bool) -func (_Bridge *BridgeSession) IsMessageSent(msgHash [32]byte) (bool, error) { - return _Bridge.Contract.IsMessageSent(&_Bridge.CallOpts, msgHash) +// Solidity: function proveMessageFailed((uint256,address,uint256,uint256,address,address,address,uint256,uint256,uint256,bytes,string) message, bytes proof) view returns(bool) +func (_Bridge *BridgeSession) ProveMessageFailed(message IBridgeMessage, proof []byte) (bool, error) { + return _Bridge.Contract.ProveMessageFailed(&_Bridge.CallOpts, message, proof) } -// IsMessageSent is a free data retrieval call binding the contract method 0x540be6a3. +// ProveMessageFailed is a free data retrieval call binding the contract method 0x6b778a9e. // -// Solidity: function isMessageSent(bytes32 msgHash) view returns(bool) -func (_Bridge *BridgeCallerSession) IsMessageSent(msgHash [32]byte) (bool, error) { - return _Bridge.Contract.IsMessageSent(&_Bridge.CallOpts, msgHash) +// Solidity: function proveMessageFailed((uint256,address,uint256,uint256,address,address,address,uint256,uint256,uint256,bytes,string) message, bytes proof) view returns(bool) +func (_Bridge *BridgeCallerSession) ProveMessageFailed(message IBridgeMessage, proof []byte) (bool, error) { + return _Bridge.Contract.ProveMessageFailed(&_Bridge.CallOpts, message, proof) } -// Owner is a free data retrieval call binding the contract method 0x8da5cb5b. +// ProveMessageReceived is a free data retrieval call binding the contract method 0x9494caf7. // -// Solidity: function owner() view returns(address) -func (_Bridge *BridgeCaller) Owner(opts *bind.CallOpts) (common.Address, error) { +// Solidity: function proveMessageReceived((uint256,address,uint256,uint256,address,address,address,uint256,uint256,uint256,bytes,string) message, bytes proof) view returns(bool) +func (_Bridge *BridgeCaller) ProveMessageReceived(opts *bind.CallOpts, message IBridgeMessage, proof []byte) (bool, error) { var out []interface{} - err := _Bridge.contract.Call(opts, &out, "owner") + err := _Bridge.contract.Call(opts, &out, "proveMessageReceived", message, proof) if err != nil { - return *new(common.Address), err + return *new(bool), err } - out0 := *abi.ConvertType(out[0], new(common.Address)).(*common.Address) + out0 := *abi.ConvertType(out[0], new(bool)).(*bool) return out0, err } -// Owner is a free data retrieval call binding the contract method 0x8da5cb5b. +// ProveMessageReceived is a free data retrieval call binding the contract method 0x9494caf7. // -// Solidity: function owner() view returns(address) -func (_Bridge *BridgeSession) Owner() (common.Address, error) { - return _Bridge.Contract.Owner(&_Bridge.CallOpts) +// Solidity: function proveMessageReceived((uint256,address,uint256,uint256,address,address,address,uint256,uint256,uint256,bytes,string) message, bytes proof) view returns(bool) +func (_Bridge *BridgeSession) ProveMessageReceived(message IBridgeMessage, proof []byte) (bool, error) { + return _Bridge.Contract.ProveMessageReceived(&_Bridge.CallOpts, message, proof) } -// Owner is a free data retrieval call binding the contract method 0x8da5cb5b. +// ProveMessageReceived is a free data retrieval call binding the contract method 0x9494caf7. // -// Solidity: function owner() view returns(address) -func (_Bridge *BridgeCallerSession) Owner() (common.Address, error) { - return _Bridge.Contract.Owner(&_Bridge.CallOpts) +// Solidity: function proveMessageReceived((uint256,address,uint256,uint256,address,address,address,uint256,uint256,uint256,bytes,string) message, bytes proof) view returns(bool) +func (_Bridge *BridgeCallerSession) ProveMessageReceived(message IBridgeMessage, proof []byte) (bool, error) { + return _Bridge.Contract.ProveMessageReceived(&_Bridge.CallOpts, message, proof) } // Resolve is a free data retrieval call binding the contract method 0x6c6563f6. @@ -713,46 +696,25 @@ func (_Bridge *BridgeTransactorSession) RetryMessage(message IBridgeMessage, isL // SendMessage is a paid mutator transaction binding the contract method 0x4c1888bc. // -// Solidity: function sendMessage((uint256,address,uint256,uint256,address,address,address,uint256,uint256,uint256,bytes,string) message) payable returns(bytes32 msgHash) +// Solidity: function sendMessage((uint256,address,uint256,uint256,address,address,address,uint256,uint256,uint256,bytes,string) message) payable returns(bytes32 msgHash, (uint256,address,uint256,uint256,address,address,address,uint256,uint256,uint256,bytes,string) _message) func (_Bridge *BridgeTransactor) SendMessage(opts *bind.TransactOpts, message IBridgeMessage) (*types.Transaction, error) { return _Bridge.contract.Transact(opts, "sendMessage", message) } // SendMessage is a paid mutator transaction binding the contract method 0x4c1888bc. // -// Solidity: function sendMessage((uint256,address,uint256,uint256,address,address,address,uint256,uint256,uint256,bytes,string) message) payable returns(bytes32 msgHash) +// Solidity: function sendMessage((uint256,address,uint256,uint256,address,address,address,uint256,uint256,uint256,bytes,string) message) payable returns(bytes32 msgHash, (uint256,address,uint256,uint256,address,address,address,uint256,uint256,uint256,bytes,string) _message) func (_Bridge *BridgeSession) SendMessage(message IBridgeMessage) (*types.Transaction, error) { return _Bridge.Contract.SendMessage(&_Bridge.TransactOpts, message) } // SendMessage is a paid mutator transaction binding the contract method 0x4c1888bc. // -// Solidity: function sendMessage((uint256,address,uint256,uint256,address,address,address,uint256,uint256,uint256,bytes,string) message) payable returns(bytes32 msgHash) +// Solidity: function sendMessage((uint256,address,uint256,uint256,address,address,address,uint256,uint256,uint256,bytes,string) message) payable returns(bytes32 msgHash, (uint256,address,uint256,uint256,address,address,address,uint256,uint256,uint256,bytes,string) _message) func (_Bridge *BridgeTransactorSession) SendMessage(message IBridgeMessage) (*types.Transaction, error) { return _Bridge.Contract.SendMessage(&_Bridge.TransactOpts, message) } -// SetAddressManager is a paid mutator transaction binding the contract method 0x0652b57a. -// -// Solidity: function setAddressManager(address newAddressManager) returns() -func (_Bridge *BridgeTransactor) SetAddressManager(opts *bind.TransactOpts, newAddressManager common.Address) (*types.Transaction, error) { - return _Bridge.contract.Transact(opts, "setAddressManager", newAddressManager) -} - -// SetAddressManager is a paid mutator transaction binding the contract method 0x0652b57a. -// -// Solidity: function setAddressManager(address newAddressManager) returns() -func (_Bridge *BridgeSession) SetAddressManager(newAddressManager common.Address) (*types.Transaction, error) { - return _Bridge.Contract.SetAddressManager(&_Bridge.TransactOpts, newAddressManager) -} - -// SetAddressManager is a paid mutator transaction binding the contract method 0x0652b57a. -// -// Solidity: function setAddressManager(address newAddressManager) returns() -func (_Bridge *BridgeTransactorSession) SetAddressManager(newAddressManager common.Address) (*types.Transaction, error) { - return _Bridge.Contract.SetAddressManager(&_Bridge.TransactOpts, newAddressManager) -} - // TransferOwnership is a paid mutator transaction binding the contract method 0xf2fde38b. // // Solidity: function transferOwnership(address newOwner) returns() @@ -795,150 +757,6 @@ func (_Bridge *BridgeTransactorSession) Receive() (*types.Transaction, error) { return _Bridge.Contract.Receive(&_Bridge.TransactOpts) } -// BridgeAddressManagerChangedIterator is returned from FilterAddressManagerChanged and is used to iterate over the raw logs and unpacked data for AddressManagerChanged events raised by the Bridge contract. -type BridgeAddressManagerChangedIterator struct { - Event *BridgeAddressManagerChanged // Event containing the contract specifics and raw log - - contract *bind.BoundContract // Generic contract to use for unpacking event data - event string // Event name to use for unpacking event data - - logs chan types.Log // Log channel receiving the found contract events - sub ethereum.Subscription // Subscription for errors, completion and termination - done bool // Whether the subscription completed delivering logs - fail error // Occurred error to stop iteration -} - -// Next advances the iterator to the subsequent event, returning whether there -// are any more events found. In case of a retrieval or parsing error, false is -// returned and Error() can be queried for the exact failure. -func (it *BridgeAddressManagerChangedIterator) Next() bool { - // If the iterator failed, stop iterating - if it.fail != nil { - return false - } - // If the iterator completed, deliver directly whatever's available - if it.done { - select { - case log := <-it.logs: - it.Event = new(BridgeAddressManagerChanged) - if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { - it.fail = err - return false - } - it.Event.Raw = log - return true - - default: - return false - } - } - // Iterator still in progress, wait for either a data or an error event - select { - case log := <-it.logs: - it.Event = new(BridgeAddressManagerChanged) - if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { - it.fail = err - return false - } - it.Event.Raw = log - return true - - case err := <-it.sub.Err(): - it.done = true - it.fail = err - return it.Next() - } -} - -// Error returns any retrieval or parsing error occurred during filtering. -func (it *BridgeAddressManagerChangedIterator) Error() error { - return it.fail -} - -// Close terminates the iteration process, releasing any pending underlying -// resources. -func (it *BridgeAddressManagerChangedIterator) Close() error { - it.sub.Unsubscribe() - return nil -} - -// BridgeAddressManagerChanged represents a AddressManagerChanged event raised by the Bridge contract. -type BridgeAddressManagerChanged struct { - AddressManager common.Address - Raw types.Log // Blockchain specific contextual infos -} - -// FilterAddressManagerChanged is a free log retrieval operation binding the contract event 0x399ded90cb5ed8d89ef7e76ff4af65c373f06d3bf5d7eef55f4228e7b702a18b. -// -// Solidity: event AddressManagerChanged(address indexed addressManager) -func (_Bridge *BridgeFilterer) FilterAddressManagerChanged(opts *bind.FilterOpts, addressManager []common.Address) (*BridgeAddressManagerChangedIterator, error) { - - var addressManagerRule []interface{} - for _, addressManagerItem := range addressManager { - addressManagerRule = append(addressManagerRule, addressManagerItem) - } - - logs, sub, err := _Bridge.contract.FilterLogs(opts, "AddressManagerChanged", addressManagerRule) - if err != nil { - return nil, err - } - return &BridgeAddressManagerChangedIterator{contract: _Bridge.contract, event: "AddressManagerChanged", logs: logs, sub: sub}, nil -} - -// WatchAddressManagerChanged is a free log subscription operation binding the contract event 0x399ded90cb5ed8d89ef7e76ff4af65c373f06d3bf5d7eef55f4228e7b702a18b. -// -// Solidity: event AddressManagerChanged(address indexed addressManager) -func (_Bridge *BridgeFilterer) WatchAddressManagerChanged(opts *bind.WatchOpts, sink chan<- *BridgeAddressManagerChanged, addressManager []common.Address) (event.Subscription, error) { - - var addressManagerRule []interface{} - for _, addressManagerItem := range addressManager { - addressManagerRule = append(addressManagerRule, addressManagerItem) - } - - logs, sub, err := _Bridge.contract.WatchLogs(opts, "AddressManagerChanged", addressManagerRule) - if err != nil { - return nil, err - } - return event.NewSubscription(func(quit <-chan struct{}) error { - defer sub.Unsubscribe() - for { - select { - case log := <-logs: - // New log arrived, parse the event and forward to the user - event := new(BridgeAddressManagerChanged) - if err := _Bridge.contract.UnpackLog(event, "AddressManagerChanged", log); err != nil { - return err - } - event.Raw = log - - select { - case sink <- event: - case err := <-sub.Err(): - return err - case <-quit: - return nil - } - case err := <-sub.Err(): - return err - case <-quit: - return nil - } - } - }), nil -} - -// ParseAddressManagerChanged is a log parse operation binding the contract event 0x399ded90cb5ed8d89ef7e76ff4af65c373f06d3bf5d7eef55f4228e7b702a18b. -// -// Solidity: event AddressManagerChanged(address indexed addressManager) -func (_Bridge *BridgeFilterer) ParseAddressManagerChanged(log types.Log) (*BridgeAddressManagerChanged, error) { - event := new(BridgeAddressManagerChanged) - if err := _Bridge.contract.UnpackLog(event, "AddressManagerChanged", log); err != nil { - return nil, err - } - event.Raw = log - return event, nil -} - // BridgeDestChainEnabledIterator is returned from FilterDestChainEnabled and is used to iterate over the raw logs and unpacked data for DestChainEnabled events raised by the Bridge contract. type BridgeDestChainEnabledIterator struct { Event *BridgeDestChainEnabled // Event containing the contract specifics and raw log @@ -1362,9 +1180,9 @@ func (_Bridge *BridgeFilterer) ParseMessageRecalled(log types.Log) (*BridgeMessa return event, nil } -// BridgeMessageRecalled0Iterator is returned from FilterMessageRecalled0 and is used to iterate over the raw logs and unpacked data for MessageRecalled0 events raised by the Bridge contract. -type BridgeMessageRecalled0Iterator struct { - Event *BridgeMessageRecalled0 // Event containing the contract specifics and raw log +// BridgeMessageSentIterator is returned from FilterMessageSent and is used to iterate over the raw logs and unpacked data for MessageSent events raised by the Bridge contract. +type BridgeMessageSentIterator struct { + Event *BridgeMessageSent // Event containing the contract specifics and raw log contract *bind.BoundContract // Generic contract to use for unpacking event data event string // Event name to use for unpacking event data @@ -1378,7 +1196,7 @@ type BridgeMessageRecalled0Iterator struct { // Next advances the iterator to the subsequent event, returning whether there // are any more events found. In case of a retrieval or parsing error, false is // returned and Error() can be queried for the exact failure. -func (it *BridgeMessageRecalled0Iterator) Next() bool { +func (it *BridgeMessageSentIterator) Next() bool { // If the iterator failed, stop iterating if it.fail != nil { return false @@ -1387,7 +1205,7 @@ func (it *BridgeMessageRecalled0Iterator) Next() bool { if it.done { select { case log := <-it.logs: - it.Event = new(BridgeMessageRecalled0) + it.Event = new(BridgeMessageSent) if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { it.fail = err return false @@ -1402,7 +1220,7 @@ func (it *BridgeMessageRecalled0Iterator) Next() bool { // Iterator still in progress, wait for either a data or an error event select { case log := <-it.logs: - it.Event = new(BridgeMessageRecalled0) + it.Event = new(BridgeMessageSent) if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { it.fail = err return false @@ -1418,51 +1236,52 @@ func (it *BridgeMessageRecalled0Iterator) Next() bool { } // Error returns any retrieval or parsing error occurred during filtering. -func (it *BridgeMessageRecalled0Iterator) Error() error { +func (it *BridgeMessageSentIterator) Error() error { return it.fail } // Close terminates the iteration process, releasing any pending underlying // resources. -func (it *BridgeMessageRecalled0Iterator) Close() error { +func (it *BridgeMessageSentIterator) Close() error { it.sub.Unsubscribe() return nil } -// BridgeMessageRecalled0 represents a MessageRecalled0 event raised by the Bridge contract. -type BridgeMessageRecalled0 struct { +// BridgeMessageSent represents a MessageSent event raised by the Bridge contract. +type BridgeMessageSent struct { MsgHash [32]byte + Message IBridgeMessage Raw types.Log // Blockchain specific contextual infos } -// FilterMessageRecalled0 is a free log retrieval operation binding the contract event 0xc6fbc1fa0145a394c9c414b2ae7bd634eb50dd888938bcd75692ae427b680fa2. +// FilterMessageSent is a free log retrieval operation binding the contract event 0x238646a410b383b664b8d2fe57d2895c1ecd3464a3159cae73a93a9f21a43355. // -// Solidity: event MessageRecalled(bytes32 indexed msgHash) -func (_Bridge *BridgeFilterer) FilterMessageRecalled0(opts *bind.FilterOpts, msgHash [][32]byte) (*BridgeMessageRecalled0Iterator, error) { +// Solidity: event MessageSent(bytes32 indexed msgHash, (uint256,address,uint256,uint256,address,address,address,uint256,uint256,uint256,bytes,string) message) +func (_Bridge *BridgeFilterer) FilterMessageSent(opts *bind.FilterOpts, msgHash [][32]byte) (*BridgeMessageSentIterator, error) { var msgHashRule []interface{} for _, msgHashItem := range msgHash { msgHashRule = append(msgHashRule, msgHashItem) } - logs, sub, err := _Bridge.contract.FilterLogs(opts, "MessageRecalled0", msgHashRule) + logs, sub, err := _Bridge.contract.FilterLogs(opts, "MessageSent", msgHashRule) if err != nil { return nil, err } - return &BridgeMessageRecalled0Iterator{contract: _Bridge.contract, event: "MessageRecalled0", logs: logs, sub: sub}, nil + return &BridgeMessageSentIterator{contract: _Bridge.contract, event: "MessageSent", logs: logs, sub: sub}, nil } -// WatchMessageRecalled0 is a free log subscription operation binding the contract event 0xc6fbc1fa0145a394c9c414b2ae7bd634eb50dd888938bcd75692ae427b680fa2. +// WatchMessageSent is a free log subscription operation binding the contract event 0x238646a410b383b664b8d2fe57d2895c1ecd3464a3159cae73a93a9f21a43355. // -// Solidity: event MessageRecalled(bytes32 indexed msgHash) -func (_Bridge *BridgeFilterer) WatchMessageRecalled0(opts *bind.WatchOpts, sink chan<- *BridgeMessageRecalled0, msgHash [][32]byte) (event.Subscription, error) { +// Solidity: event MessageSent(bytes32 indexed msgHash, (uint256,address,uint256,uint256,address,address,address,uint256,uint256,uint256,bytes,string) message) +func (_Bridge *BridgeFilterer) WatchMessageSent(opts *bind.WatchOpts, sink chan<- *BridgeMessageSent, msgHash [][32]byte) (event.Subscription, error) { var msgHashRule []interface{} for _, msgHashItem := range msgHash { msgHashRule = append(msgHashRule, msgHashItem) } - logs, sub, err := _Bridge.contract.WatchLogs(opts, "MessageRecalled0", msgHashRule) + logs, sub, err := _Bridge.contract.WatchLogs(opts, "MessageSent", msgHashRule) if err != nil { return nil, err } @@ -1472,8 +1291,8 @@ func (_Bridge *BridgeFilterer) WatchMessageRecalled0(opts *bind.WatchOpts, sink select { case log := <-logs: // New log arrived, parse the event and forward to the user - event := new(BridgeMessageRecalled0) - if err := _Bridge.contract.UnpackLog(event, "MessageRecalled0", log); err != nil { + event := new(BridgeMessageSent) + if err := _Bridge.contract.UnpackLog(event, "MessageSent", log); err != nil { return err } event.Raw = log @@ -1494,21 +1313,21 @@ func (_Bridge *BridgeFilterer) WatchMessageRecalled0(opts *bind.WatchOpts, sink }), nil } -// ParseMessageRecalled0 is a log parse operation binding the contract event 0xc6fbc1fa0145a394c9c414b2ae7bd634eb50dd888938bcd75692ae427b680fa2. +// ParseMessageSent is a log parse operation binding the contract event 0x238646a410b383b664b8d2fe57d2895c1ecd3464a3159cae73a93a9f21a43355. // -// Solidity: event MessageRecalled(bytes32 indexed msgHash) -func (_Bridge *BridgeFilterer) ParseMessageRecalled0(log types.Log) (*BridgeMessageRecalled0, error) { - event := new(BridgeMessageRecalled0) - if err := _Bridge.contract.UnpackLog(event, "MessageRecalled0", log); err != nil { +// Solidity: event MessageSent(bytes32 indexed msgHash, (uint256,address,uint256,uint256,address,address,address,uint256,uint256,uint256,bytes,string) message) +func (_Bridge *BridgeFilterer) ParseMessageSent(log types.Log) (*BridgeMessageSent, error) { + event := new(BridgeMessageSent) + if err := _Bridge.contract.UnpackLog(event, "MessageSent", log); err != nil { return nil, err } event.Raw = log return event, nil } -// BridgeMessageSentIterator is returned from FilterMessageSent and is used to iterate over the raw logs and unpacked data for MessageSent events raised by the Bridge contract. -type BridgeMessageSentIterator struct { - Event *BridgeMessageSent // Event containing the contract specifics and raw log +// BridgeMessageStatusChangedIterator is returned from FilterMessageStatusChanged and is used to iterate over the raw logs and unpacked data for MessageStatusChanged events raised by the Bridge contract. +type BridgeMessageStatusChangedIterator struct { + Event *BridgeMessageStatusChanged // Event containing the contract specifics and raw log contract *bind.BoundContract // Generic contract to use for unpacking event data event string // Event name to use for unpacking event data @@ -1522,7 +1341,7 @@ type BridgeMessageSentIterator struct { // Next advances the iterator to the subsequent event, returning whether there // are any more events found. In case of a retrieval or parsing error, false is // returned and Error() can be queried for the exact failure. -func (it *BridgeMessageSentIterator) Next() bool { +func (it *BridgeMessageStatusChangedIterator) Next() bool { // If the iterator failed, stop iterating if it.fail != nil { return false @@ -1531,7 +1350,7 @@ func (it *BridgeMessageSentIterator) Next() bool { if it.done { select { case log := <-it.logs: - it.Event = new(BridgeMessageSent) + it.Event = new(BridgeMessageStatusChanged) if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { it.fail = err return false @@ -1546,7 +1365,7 @@ func (it *BridgeMessageSentIterator) Next() bool { // Iterator still in progress, wait for either a data or an error event select { case log := <-it.logs: - it.Event = new(BridgeMessageSent) + it.Event = new(BridgeMessageStatusChanged) if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { it.fail = err return false @@ -1562,318 +1381,27 @@ func (it *BridgeMessageSentIterator) Next() bool { } // Error returns any retrieval or parsing error occurred during filtering. -func (it *BridgeMessageSentIterator) Error() error { +func (it *BridgeMessageStatusChangedIterator) Error() error { return it.fail } // Close terminates the iteration process, releasing any pending underlying // resources. -func (it *BridgeMessageSentIterator) Close() error { +func (it *BridgeMessageStatusChangedIterator) Close() error { it.sub.Unsubscribe() return nil } -// BridgeMessageSent represents a MessageSent event raised by the Bridge contract. -type BridgeMessageSent struct { +// BridgeMessageStatusChanged represents a MessageStatusChanged event raised by the Bridge contract. +type BridgeMessageStatusChanged struct { MsgHash [32]byte - Message IBridgeMessage + Status uint8 Raw types.Log // Blockchain specific contextual infos } -// FilterMessageSent is a free log retrieval operation binding the contract event 0x238646a410b383b664b8d2fe57d2895c1ecd3464a3159cae73a93a9f21a43355. +// FilterMessageStatusChanged is a free log retrieval operation binding the contract event 0x6c51882bc2ed67617f77a1e9b9a25d2caad8448647ecb093b357a603b2575634. // -// Solidity: event MessageSent(bytes32 indexed msgHash, (uint256,address,uint256,uint256,address,address,address,uint256,uint256,uint256,bytes,string) message) -func (_Bridge *BridgeFilterer) FilterMessageSent(opts *bind.FilterOpts, msgHash [][32]byte) (*BridgeMessageSentIterator, error) { - - var msgHashRule []interface{} - for _, msgHashItem := range msgHash { - msgHashRule = append(msgHashRule, msgHashItem) - } - - logs, sub, err := _Bridge.contract.FilterLogs(opts, "MessageSent", msgHashRule) - if err != nil { - return nil, err - } - return &BridgeMessageSentIterator{contract: _Bridge.contract, event: "MessageSent", logs: logs, sub: sub}, nil -} - -// WatchMessageSent is a free log subscription operation binding the contract event 0x238646a410b383b664b8d2fe57d2895c1ecd3464a3159cae73a93a9f21a43355. -// -// Solidity: event MessageSent(bytes32 indexed msgHash, (uint256,address,uint256,uint256,address,address,address,uint256,uint256,uint256,bytes,string) message) -func (_Bridge *BridgeFilterer) WatchMessageSent(opts *bind.WatchOpts, sink chan<- *BridgeMessageSent, msgHash [][32]byte) (event.Subscription, error) { - - var msgHashRule []interface{} - for _, msgHashItem := range msgHash { - msgHashRule = append(msgHashRule, msgHashItem) - } - - logs, sub, err := _Bridge.contract.WatchLogs(opts, "MessageSent", msgHashRule) - if err != nil { - return nil, err - } - return event.NewSubscription(func(quit <-chan struct{}) error { - defer sub.Unsubscribe() - for { - select { - case log := <-logs: - // New log arrived, parse the event and forward to the user - event := new(BridgeMessageSent) - if err := _Bridge.contract.UnpackLog(event, "MessageSent", log); err != nil { - return err - } - event.Raw = log - - select { - case sink <- event: - case err := <-sub.Err(): - return err - case <-quit: - return nil - } - case err := <-sub.Err(): - return err - case <-quit: - return nil - } - } - }), nil -} - -// ParseMessageSent is a log parse operation binding the contract event 0x238646a410b383b664b8d2fe57d2895c1ecd3464a3159cae73a93a9f21a43355. -// -// Solidity: event MessageSent(bytes32 indexed msgHash, (uint256,address,uint256,uint256,address,address,address,uint256,uint256,uint256,bytes,string) message) -func (_Bridge *BridgeFilterer) ParseMessageSent(log types.Log) (*BridgeMessageSent, error) { - event := new(BridgeMessageSent) - if err := _Bridge.contract.UnpackLog(event, "MessageSent", log); err != nil { - return nil, err - } - event.Raw = log - return event, nil -} - -// BridgeMessageSent0Iterator is returned from FilterMessageSent0 and is used to iterate over the raw logs and unpacked data for MessageSent0 events raised by the Bridge contract. -type BridgeMessageSent0Iterator struct { - Event *BridgeMessageSent0 // Event containing the contract specifics and raw log - - contract *bind.BoundContract // Generic contract to use for unpacking event data - event string // Event name to use for unpacking event data - - logs chan types.Log // Log channel receiving the found contract events - sub ethereum.Subscription // Subscription for errors, completion and termination - done bool // Whether the subscription completed delivering logs - fail error // Occurred error to stop iteration -} - -// Next advances the iterator to the subsequent event, returning whether there -// are any more events found. In case of a retrieval or parsing error, false is -// returned and Error() can be queried for the exact failure. -func (it *BridgeMessageSent0Iterator) Next() bool { - // If the iterator failed, stop iterating - if it.fail != nil { - return false - } - // If the iterator completed, deliver directly whatever's available - if it.done { - select { - case log := <-it.logs: - it.Event = new(BridgeMessageSent0) - if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { - it.fail = err - return false - } - it.Event.Raw = log - return true - - default: - return false - } - } - // Iterator still in progress, wait for either a data or an error event - select { - case log := <-it.logs: - it.Event = new(BridgeMessageSent0) - if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { - it.fail = err - return false - } - it.Event.Raw = log - return true - - case err := <-it.sub.Err(): - it.done = true - it.fail = err - return it.Next() - } -} - -// Error returns any retrieval or parsing error occurred during filtering. -func (it *BridgeMessageSent0Iterator) Error() error { - return it.fail -} - -// Close terminates the iteration process, releasing any pending underlying -// resources. -func (it *BridgeMessageSent0Iterator) Close() error { - it.sub.Unsubscribe() - return nil -} - -// BridgeMessageSent0 represents a MessageSent0 event raised by the Bridge contract. -type BridgeMessageSent0 struct { - MsgHash [32]byte - Message IBridgeMessage - Raw types.Log // Blockchain specific contextual infos -} - -// FilterMessageSent0 is a free log retrieval operation binding the contract event 0x238646a410b383b664b8d2fe57d2895c1ecd3464a3159cae73a93a9f21a43355. -// -// Solidity: event MessageSent(bytes32 indexed msgHash, (uint256,address,uint256,uint256,address,address,address,uint256,uint256,uint256,bytes,string) message) -func (_Bridge *BridgeFilterer) FilterMessageSent0(opts *bind.FilterOpts, msgHash [][32]byte) (*BridgeMessageSent0Iterator, error) { - - var msgHashRule []interface{} - for _, msgHashItem := range msgHash { - msgHashRule = append(msgHashRule, msgHashItem) - } - - logs, sub, err := _Bridge.contract.FilterLogs(opts, "MessageSent0", msgHashRule) - if err != nil { - return nil, err - } - return &BridgeMessageSent0Iterator{contract: _Bridge.contract, event: "MessageSent0", logs: logs, sub: sub}, nil -} - -// WatchMessageSent0 is a free log subscription operation binding the contract event 0x238646a410b383b664b8d2fe57d2895c1ecd3464a3159cae73a93a9f21a43355. -// -// Solidity: event MessageSent(bytes32 indexed msgHash, (uint256,address,uint256,uint256,address,address,address,uint256,uint256,uint256,bytes,string) message) -func (_Bridge *BridgeFilterer) WatchMessageSent0(opts *bind.WatchOpts, sink chan<- *BridgeMessageSent0, msgHash [][32]byte) (event.Subscription, error) { - - var msgHashRule []interface{} - for _, msgHashItem := range msgHash { - msgHashRule = append(msgHashRule, msgHashItem) - } - - logs, sub, err := _Bridge.contract.WatchLogs(opts, "MessageSent0", msgHashRule) - if err != nil { - return nil, err - } - return event.NewSubscription(func(quit <-chan struct{}) error { - defer sub.Unsubscribe() - for { - select { - case log := <-logs: - // New log arrived, parse the event and forward to the user - event := new(BridgeMessageSent0) - if err := _Bridge.contract.UnpackLog(event, "MessageSent0", log); err != nil { - return err - } - event.Raw = log - - select { - case sink <- event: - case err := <-sub.Err(): - return err - case <-quit: - return nil - } - case err := <-sub.Err(): - return err - case <-quit: - return nil - } - } - }), nil -} - -// ParseMessageSent0 is a log parse operation binding the contract event 0x238646a410b383b664b8d2fe57d2895c1ecd3464a3159cae73a93a9f21a43355. -// -// Solidity: event MessageSent(bytes32 indexed msgHash, (uint256,address,uint256,uint256,address,address,address,uint256,uint256,uint256,bytes,string) message) -func (_Bridge *BridgeFilterer) ParseMessageSent0(log types.Log) (*BridgeMessageSent0, error) { - event := new(BridgeMessageSent0) - if err := _Bridge.contract.UnpackLog(event, "MessageSent0", log); err != nil { - return nil, err - } - event.Raw = log - return event, nil -} - -// BridgeMessageStatusChangedIterator is returned from FilterMessageStatusChanged and is used to iterate over the raw logs and unpacked data for MessageStatusChanged events raised by the Bridge contract. -type BridgeMessageStatusChangedIterator struct { - Event *BridgeMessageStatusChanged // Event containing the contract specifics and raw log - - contract *bind.BoundContract // Generic contract to use for unpacking event data - event string // Event name to use for unpacking event data - - logs chan types.Log // Log channel receiving the found contract events - sub ethereum.Subscription // Subscription for errors, completion and termination - done bool // Whether the subscription completed delivering logs - fail error // Occurred error to stop iteration -} - -// Next advances the iterator to the subsequent event, returning whether there -// are any more events found. In case of a retrieval or parsing error, false is -// returned and Error() can be queried for the exact failure. -func (it *BridgeMessageStatusChangedIterator) Next() bool { - // If the iterator failed, stop iterating - if it.fail != nil { - return false - } - // If the iterator completed, deliver directly whatever's available - if it.done { - select { - case log := <-it.logs: - it.Event = new(BridgeMessageStatusChanged) - if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { - it.fail = err - return false - } - it.Event.Raw = log - return true - - default: - return false - } - } - // Iterator still in progress, wait for either a data or an error event - select { - case log := <-it.logs: - it.Event = new(BridgeMessageStatusChanged) - if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { - it.fail = err - return false - } - it.Event.Raw = log - return true - - case err := <-it.sub.Err(): - it.done = true - it.fail = err - return it.Next() - } -} - -// Error returns any retrieval or parsing error occurred during filtering. -func (it *BridgeMessageStatusChangedIterator) Error() error { - return it.fail -} - -// Close terminates the iteration process, releasing any pending underlying -// resources. -func (it *BridgeMessageStatusChangedIterator) Close() error { - it.sub.Unsubscribe() - return nil -} - -// BridgeMessageStatusChanged represents a MessageStatusChanged event raised by the Bridge contract. -type BridgeMessageStatusChanged struct { - MsgHash [32]byte - Status uint8 - Transactor common.Address - Raw types.Log // Blockchain specific contextual infos -} - -// FilterMessageStatusChanged is a free log retrieval operation binding the contract event 0x0af4d5247f6a4028d6699afb62871a76b398da1d1a626c8a9b90e0bd5f54c73c. -// -// Solidity: event MessageStatusChanged(bytes32 indexed msgHash, uint8 status, address transactor) +// Solidity: event MessageStatusChanged(bytes32 indexed msgHash, uint8 status) func (_Bridge *BridgeFilterer) FilterMessageStatusChanged(opts *bind.FilterOpts, msgHash [][32]byte) (*BridgeMessageStatusChangedIterator, error) { var msgHashRule []interface{} @@ -1888,9 +1416,9 @@ func (_Bridge *BridgeFilterer) FilterMessageStatusChanged(opts *bind.FilterOpts, return &BridgeMessageStatusChangedIterator{contract: _Bridge.contract, event: "MessageStatusChanged", logs: logs, sub: sub}, nil } -// WatchMessageStatusChanged is a free log subscription operation binding the contract event 0x0af4d5247f6a4028d6699afb62871a76b398da1d1a626c8a9b90e0bd5f54c73c. +// WatchMessageStatusChanged is a free log subscription operation binding the contract event 0x6c51882bc2ed67617f77a1e9b9a25d2caad8448647ecb093b357a603b2575634. // -// Solidity: event MessageStatusChanged(bytes32 indexed msgHash, uint8 status, address transactor) +// Solidity: event MessageStatusChanged(bytes32 indexed msgHash, uint8 status) func (_Bridge *BridgeFilterer) WatchMessageStatusChanged(opts *bind.WatchOpts, sink chan<- *BridgeMessageStatusChanged, msgHash [][32]byte) (event.Subscription, error) { var msgHashRule []interface{} @@ -1930,9 +1458,9 @@ func (_Bridge *BridgeFilterer) WatchMessageStatusChanged(opts *bind.WatchOpts, s }), nil } -// ParseMessageStatusChanged is a log parse operation binding the contract event 0x0af4d5247f6a4028d6699afb62871a76b398da1d1a626c8a9b90e0bd5f54c73c. +// ParseMessageStatusChanged is a log parse operation binding the contract event 0x6c51882bc2ed67617f77a1e9b9a25d2caad8448647ecb093b357a603b2575634. // -// Solidity: event MessageStatusChanged(bytes32 indexed msgHash, uint8 status, address transactor) +// Solidity: event MessageStatusChanged(bytes32 indexed msgHash, uint8 status) func (_Bridge *BridgeFilterer) ParseMessageStatusChanged(log types.Log) (*BridgeMessageStatusChanged, error) { event := new(BridgeMessageStatusChanged) if err := _Bridge.contract.UnpackLog(event, "MessageStatusChanged", log); err != nil { @@ -1942,152 +1470,6 @@ func (_Bridge *BridgeFilterer) ParseMessageStatusChanged(log types.Log) (*Bridge return event, nil } -// BridgeMessageStatusChanged0Iterator is returned from FilterMessageStatusChanged0 and is used to iterate over the raw logs and unpacked data for MessageStatusChanged0 events raised by the Bridge contract. -type BridgeMessageStatusChanged0Iterator struct { - Event *BridgeMessageStatusChanged0 // Event containing the contract specifics and raw log - - contract *bind.BoundContract // Generic contract to use for unpacking event data - event string // Event name to use for unpacking event data - - logs chan types.Log // Log channel receiving the found contract events - sub ethereum.Subscription // Subscription for errors, completion and termination - done bool // Whether the subscription completed delivering logs - fail error // Occurred error to stop iteration -} - -// Next advances the iterator to the subsequent event, returning whether there -// are any more events found. In case of a retrieval or parsing error, false is -// returned and Error() can be queried for the exact failure. -func (it *BridgeMessageStatusChanged0Iterator) Next() bool { - // If the iterator failed, stop iterating - if it.fail != nil { - return false - } - // If the iterator completed, deliver directly whatever's available - if it.done { - select { - case log := <-it.logs: - it.Event = new(BridgeMessageStatusChanged0) - if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { - it.fail = err - return false - } - it.Event.Raw = log - return true - - default: - return false - } - } - // Iterator still in progress, wait for either a data or an error event - select { - case log := <-it.logs: - it.Event = new(BridgeMessageStatusChanged0) - if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { - it.fail = err - return false - } - it.Event.Raw = log - return true - - case err := <-it.sub.Err(): - it.done = true - it.fail = err - return it.Next() - } -} - -// Error returns any retrieval or parsing error occurred during filtering. -func (it *BridgeMessageStatusChanged0Iterator) Error() error { - return it.fail -} - -// Close terminates the iteration process, releasing any pending underlying -// resources. -func (it *BridgeMessageStatusChanged0Iterator) Close() error { - it.sub.Unsubscribe() - return nil -} - -// BridgeMessageStatusChanged0 represents a MessageStatusChanged0 event raised by the Bridge contract. -type BridgeMessageStatusChanged0 struct { - MsgHash [32]byte - Status uint8 - Transactor common.Address - Raw types.Log // Blockchain specific contextual infos -} - -// FilterMessageStatusChanged0 is a free log retrieval operation binding the contract event 0x0af4d5247f6a4028d6699afb62871a76b398da1d1a626c8a9b90e0bd5f54c73c. -// -// Solidity: event MessageStatusChanged(bytes32 indexed msgHash, uint8 status, address transactor) -func (_Bridge *BridgeFilterer) FilterMessageStatusChanged0(opts *bind.FilterOpts, msgHash [][32]byte) (*BridgeMessageStatusChanged0Iterator, error) { - - var msgHashRule []interface{} - for _, msgHashItem := range msgHash { - msgHashRule = append(msgHashRule, msgHashItem) - } - - logs, sub, err := _Bridge.contract.FilterLogs(opts, "MessageStatusChanged0", msgHashRule) - if err != nil { - return nil, err - } - return &BridgeMessageStatusChanged0Iterator{contract: _Bridge.contract, event: "MessageStatusChanged0", logs: logs, sub: sub}, nil -} - -// WatchMessageStatusChanged0 is a free log subscription operation binding the contract event 0x0af4d5247f6a4028d6699afb62871a76b398da1d1a626c8a9b90e0bd5f54c73c. -// -// Solidity: event MessageStatusChanged(bytes32 indexed msgHash, uint8 status, address transactor) -func (_Bridge *BridgeFilterer) WatchMessageStatusChanged0(opts *bind.WatchOpts, sink chan<- *BridgeMessageStatusChanged0, msgHash [][32]byte) (event.Subscription, error) { - - var msgHashRule []interface{} - for _, msgHashItem := range msgHash { - msgHashRule = append(msgHashRule, msgHashItem) - } - - logs, sub, err := _Bridge.contract.WatchLogs(opts, "MessageStatusChanged0", msgHashRule) - if err != nil { - return nil, err - } - return event.NewSubscription(func(quit <-chan struct{}) error { - defer sub.Unsubscribe() - for { - select { - case log := <-logs: - // New log arrived, parse the event and forward to the user - event := new(BridgeMessageStatusChanged0) - if err := _Bridge.contract.UnpackLog(event, "MessageStatusChanged0", log); err != nil { - return err - } - event.Raw = log - - select { - case sink <- event: - case err := <-sub.Err(): - return err - case <-quit: - return nil - } - case err := <-sub.Err(): - return err - case <-quit: - return nil - } - } - }), nil -} - -// ParseMessageStatusChanged0 is a log parse operation binding the contract event 0x0af4d5247f6a4028d6699afb62871a76b398da1d1a626c8a9b90e0bd5f54c73c. -// -// Solidity: event MessageStatusChanged(bytes32 indexed msgHash, uint8 status, address transactor) -func (_Bridge *BridgeFilterer) ParseMessageStatusChanged0(log types.Log) (*BridgeMessageStatusChanged0, error) { - event := new(BridgeMessageStatusChanged0) - if err := _Bridge.contract.UnpackLog(event, "MessageStatusChanged0", log); err != nil { - return nil, err - } - event.Raw = log - return event, nil -} - // BridgeOwnershipTransferredIterator is returned from FilterOwnershipTransferred and is used to iterate over the raw logs and unpacked data for OwnershipTransferred events raised by the Bridge contract. type BridgeOwnershipTransferredIterator struct { Event *BridgeOwnershipTransferred // Event containing the contract specifics and raw log diff --git a/packages/relayer/bindings/erc1155vault/ERC1155Vault.go b/packages/relayer/bindings/erc1155vault/ERC1155Vault.go index 4e45d122a7..8d24460057 100644 --- a/packages/relayer/bindings/erc1155vault/ERC1155Vault.go +++ b/packages/relayer/bindings/erc1155vault/ERC1155Vault.go @@ -68,7 +68,7 @@ type IBridgeMessage struct { // ERC1155VaultMetaData contains all meta data concerning the ERC1155Vault contract. var ERC1155VaultMetaData = &bind.MetaData{ - ABI: "[{\"inputs\":[],\"name\":\"RESOLVER_DENIED\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"RESOLVER_INVALID_ADDR\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"chainId\",\"type\":\"uint256\"},{\"internalType\":\"bytes32\",\"name\":\"name\",\"type\":\"bytes32\"}],\"name\":\"RESOLVER_ZERO_ADDR\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"VAULT_INTERFACE_NOT_SUPPORTED\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"VAULT_INVALID_AMOUNT\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"VAULT_INVALID_FROM\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"VAULT_INVALID_SRC_CHAIN_ID\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"VAULT_INVALID_TO\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"VAULT_INVALID_TOKEN\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"VAULT_INVALID_USER\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"VAULT_MAX_TOKEN_PER_TXN_EXCEEDED\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"VAULT_MESSAGE_NOT_FAILED\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"VAULT_MESSAGE_RELEASED_ALREADY\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"VAULT_TOKEN_ARRAY_MISMATCH\",\"type\":\"error\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"addressManager\",\"type\":\"address\"}],\"name\":\"AddressManagerChanged\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"chainId\",\"type\":\"uint256\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"ctoken\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"btoken\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"string\",\"name\":\"ctokenSymbol\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"string\",\"name\":\"ctokenName\",\"type\":\"string\"}],\"name\":\"BridgedTokenDeployed\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint8\",\"name\":\"version\",\"type\":\"uint8\"}],\"name\":\"Initialized\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"previousOwner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"newOwner\",\"type\":\"address\"}],\"name\":\"OwnershipTransferred\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"msgHash\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"srcChainId\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256[]\",\"name\":\"tokenIds\",\"type\":\"uint256[]\"},{\"indexed\":false,\"internalType\":\"uint256[]\",\"name\":\"amounts\",\"type\":\"uint256[]\"}],\"name\":\"TokenReceived\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"msgHash\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256[]\",\"name\":\"tokenIds\",\"type\":\"uint256[]\"},{\"indexed\":false,\"internalType\":\"uint256[]\",\"name\":\"amounts\",\"type\":\"uint256[]\"}],\"name\":\"TokenReleased\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"msgHash\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"destChainId\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256[]\",\"name\":\"tokenIds\",\"type\":\"uint256[]\"},{\"indexed\":false,\"internalType\":\"uint256[]\",\"name\":\"amounts\",\"type\":\"uint256[]\"}],\"name\":\"TokenSent\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"ERC1155_INTERFACE_ID\",\"outputs\":[{\"internalType\":\"bytes4\",\"name\":\"\",\"type\":\"bytes4\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"ERC721_INTERFACE_ID\",\"outputs\":[{\"internalType\":\"bytes4\",\"name\":\"\",\"type\":\"bytes4\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"addressManager\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"name\":\"bridgedToCanonical\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"chainId\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"addr\",\"type\":\"address\"},{\"internalType\":\"string\",\"name\":\"symbol\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"name\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"name\":\"canonicalToBridged\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"addressManager\",\"type\":\"address\"}],\"name\":\"init\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"name\":\"isBridgedToken\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"},{\"internalType\":\"uint256[]\",\"name\":\"\",\"type\":\"uint256[]\"},{\"internalType\":\"uint256[]\",\"name\":\"\",\"type\":\"uint256[]\"},{\"internalType\":\"bytes\",\"name\":\"\",\"type\":\"bytes\"}],\"name\":\"onERC1155BatchReceived\",\"outputs\":[{\"internalType\":\"bytes4\",\"name\":\"\",\"type\":\"bytes4\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"\",\"type\":\"bytes\"}],\"name\":\"onERC1155Received\",\"outputs\":[{\"internalType\":\"bytes4\",\"name\":\"\",\"type\":\"bytes4\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"uint256\",\"name\":\"id\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"srcChainId\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"destChainId\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"user\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"refundTo\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"fee\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"gasLimit\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"},{\"internalType\":\"string\",\"name\":\"memo\",\"type\":\"string\"}],\"internalType\":\"structIBridge.Message\",\"name\":\"message\",\"type\":\"tuple\"}],\"name\":\"onMessageRecalled\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"owner\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"uint256\",\"name\":\"chainId\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"addr\",\"type\":\"address\"},{\"internalType\":\"string\",\"name\":\"symbol\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"name\",\"type\":\"string\"}],\"internalType\":\"structBaseNFTVault.CanonicalNFT\",\"name\":\"ctoken\",\"type\":\"tuple\"},{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256[]\",\"name\":\"tokenIds\",\"type\":\"uint256[]\"},{\"internalType\":\"uint256[]\",\"name\":\"amounts\",\"type\":\"uint256[]\"}],\"name\":\"receiveToken\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"renounceOwnership\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"chainId\",\"type\":\"uint256\"},{\"internalType\":\"bytes32\",\"name\":\"name\",\"type\":\"bytes32\"},{\"internalType\":\"bool\",\"name\":\"allowZeroAddress\",\"type\":\"bool\"}],\"name\":\"resolve\",\"outputs\":[{\"internalType\":\"addresspayable\",\"name\":\"addr\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"name\",\"type\":\"bytes32\"},{\"internalType\":\"bool\",\"name\":\"allowZeroAddress\",\"type\":\"bool\"}],\"name\":\"resolve\",\"outputs\":[{\"internalType\":\"addresspayable\",\"name\":\"addr\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"uint256\",\"name\":\"destChainId\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"uint256[]\",\"name\":\"tokenIds\",\"type\":\"uint256[]\"},{\"internalType\":\"uint256[]\",\"name\":\"amounts\",\"type\":\"uint256[]\"},{\"internalType\":\"uint256\",\"name\":\"gasLimit\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"fee\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"refundTo\",\"type\":\"address\"},{\"internalType\":\"string\",\"name\":\"memo\",\"type\":\"string\"}],\"internalType\":\"structBaseNFTVault.BridgeTransferOp\",\"name\":\"opt\",\"type\":\"tuple\"}],\"name\":\"sendToken\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"newAddressManager\",\"type\":\"address\"}],\"name\":\"setAddressManager\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes4\",\"name\":\"interfaceId\",\"type\":\"bytes4\"}],\"name\":\"supportsInterface\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"newOwner\",\"type\":\"address\"}],\"name\":\"transferOwnership\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}]", + ABI: "[{\"inputs\":[],\"name\":\"RESOLVER_DENIED\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"RESOLVER_INVALID_MANAGER\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"chainId\",\"type\":\"uint256\"},{\"internalType\":\"bytes32\",\"name\":\"name\",\"type\":\"bytes32\"}],\"name\":\"RESOLVER_ZERO_ADDR\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"VAULT_INTERFACE_NOT_SUPPORTED\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"VAULT_INVALID_AMOUNT\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"VAULT_INVALID_FROM\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"VAULT_INVALID_SRC_CHAIN_ID\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"VAULT_INVALID_TO\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"VAULT_INVALID_TOKEN\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"VAULT_INVALID_USER\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"VAULT_MAX_TOKEN_PER_TXN_EXCEEDED\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"VAULT_MESSAGE_NOT_FAILED\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"VAULT_MESSAGE_RELEASED_ALREADY\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"VAULT_TOKEN_ARRAY_MISMATCH\",\"type\":\"error\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"chainId\",\"type\":\"uint256\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"ctoken\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"btoken\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"string\",\"name\":\"ctokenSymbol\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"string\",\"name\":\"ctokenName\",\"type\":\"string\"}],\"name\":\"BridgedTokenDeployed\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint8\",\"name\":\"version\",\"type\":\"uint8\"}],\"name\":\"Initialized\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"previousOwner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"newOwner\",\"type\":\"address\"}],\"name\":\"OwnershipTransferred\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"msgHash\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"srcChainId\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256[]\",\"name\":\"tokenIds\",\"type\":\"uint256[]\"},{\"indexed\":false,\"internalType\":\"uint256[]\",\"name\":\"amounts\",\"type\":\"uint256[]\"}],\"name\":\"TokenReceived\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"msgHash\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256[]\",\"name\":\"tokenIds\",\"type\":\"uint256[]\"},{\"indexed\":false,\"internalType\":\"uint256[]\",\"name\":\"amounts\",\"type\":\"uint256[]\"}],\"name\":\"TokenReleased\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"msgHash\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"destChainId\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256[]\",\"name\":\"tokenIds\",\"type\":\"uint256[]\"},{\"indexed\":false,\"internalType\":\"uint256[]\",\"name\":\"amounts\",\"type\":\"uint256[]\"}],\"name\":\"TokenSent\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"ERC1155_INTERFACE_ID\",\"outputs\":[{\"internalType\":\"bytes4\",\"name\":\"\",\"type\":\"bytes4\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"ERC721_INTERFACE_ID\",\"outputs\":[{\"internalType\":\"bytes4\",\"name\":\"\",\"type\":\"bytes4\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"addressManager\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"name\":\"bridgedToCanonical\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"chainId\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"addr\",\"type\":\"address\"},{\"internalType\":\"string\",\"name\":\"symbol\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"name\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"name\":\"canonicalToBridged\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"addressManager\",\"type\":\"address\"}],\"name\":\"init\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"name\":\"isBridgedToken\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"},{\"internalType\":\"uint256[]\",\"name\":\"\",\"type\":\"uint256[]\"},{\"internalType\":\"uint256[]\",\"name\":\"\",\"type\":\"uint256[]\"},{\"internalType\":\"bytes\",\"name\":\"\",\"type\":\"bytes\"}],\"name\":\"onERC1155BatchReceived\",\"outputs\":[{\"internalType\":\"bytes4\",\"name\":\"\",\"type\":\"bytes4\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"\",\"type\":\"bytes\"}],\"name\":\"onERC1155Received\",\"outputs\":[{\"internalType\":\"bytes4\",\"name\":\"\",\"type\":\"bytes4\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"uint256\",\"name\":\"id\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"srcChainId\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"destChainId\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"user\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"refundTo\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"fee\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"gasLimit\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"},{\"internalType\":\"string\",\"name\":\"memo\",\"type\":\"string\"}],\"internalType\":\"structIBridge.Message\",\"name\":\"message\",\"type\":\"tuple\"},{\"internalType\":\"bytes32\",\"name\":\"msgHash\",\"type\":\"bytes32\"}],\"name\":\"onMessageRecalled\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"owner\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"uint256\",\"name\":\"chainId\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"addr\",\"type\":\"address\"},{\"internalType\":\"string\",\"name\":\"symbol\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"name\",\"type\":\"string\"}],\"internalType\":\"structBaseNFTVault.CanonicalNFT\",\"name\":\"ctoken\",\"type\":\"tuple\"},{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256[]\",\"name\":\"tokenIds\",\"type\":\"uint256[]\"},{\"internalType\":\"uint256[]\",\"name\":\"amounts\",\"type\":\"uint256[]\"}],\"name\":\"receiveToken\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"renounceOwnership\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"chainId\",\"type\":\"uint256\"},{\"internalType\":\"bytes32\",\"name\":\"name\",\"type\":\"bytes32\"},{\"internalType\":\"bool\",\"name\":\"allowZeroAddress\",\"type\":\"bool\"}],\"name\":\"resolve\",\"outputs\":[{\"internalType\":\"addresspayable\",\"name\":\"addr\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"name\",\"type\":\"bytes32\"},{\"internalType\":\"bool\",\"name\":\"allowZeroAddress\",\"type\":\"bool\"}],\"name\":\"resolve\",\"outputs\":[{\"internalType\":\"addresspayable\",\"name\":\"addr\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"uint256\",\"name\":\"destChainId\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"uint256[]\",\"name\":\"tokenIds\",\"type\":\"uint256[]\"},{\"internalType\":\"uint256[]\",\"name\":\"amounts\",\"type\":\"uint256[]\"},{\"internalType\":\"uint256\",\"name\":\"gasLimit\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"fee\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"refundTo\",\"type\":\"address\"},{\"internalType\":\"string\",\"name\":\"memo\",\"type\":\"string\"}],\"internalType\":\"structBaseNFTVault.BridgeTransferOp\",\"name\":\"opt\",\"type\":\"tuple\"}],\"name\":\"sendToken\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes4\",\"name\":\"interfaceId\",\"type\":\"bytes4\"}],\"name\":\"supportsInterface\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"newOwner\",\"type\":\"address\"}],\"name\":\"transferOwnership\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}]", } // ERC1155VaultABI is the input ABI used to generate the binding from. @@ -634,25 +634,25 @@ func (_ERC1155Vault *ERC1155VaultTransactorSession) Init(addressManager common.A return _ERC1155Vault.Contract.Init(&_ERC1155Vault.TransactOpts, addressManager) } -// OnMessageRecalled is a paid mutator transaction binding the contract method 0x32a642ca. +// OnMessageRecalled is a paid mutator transaction binding the contract method 0xa19ec154. // -// Solidity: function onMessageRecalled((uint256,address,uint256,uint256,address,address,address,uint256,uint256,uint256,bytes,string) message) payable returns() -func (_ERC1155Vault *ERC1155VaultTransactor) OnMessageRecalled(opts *bind.TransactOpts, message IBridgeMessage) (*types.Transaction, error) { - return _ERC1155Vault.contract.Transact(opts, "onMessageRecalled", message) +// Solidity: function onMessageRecalled((uint256,address,uint256,uint256,address,address,address,uint256,uint256,uint256,bytes,string) message, bytes32 msgHash) payable returns() +func (_ERC1155Vault *ERC1155VaultTransactor) OnMessageRecalled(opts *bind.TransactOpts, message IBridgeMessage, msgHash [32]byte) (*types.Transaction, error) { + return _ERC1155Vault.contract.Transact(opts, "onMessageRecalled", message, msgHash) } -// OnMessageRecalled is a paid mutator transaction binding the contract method 0x32a642ca. +// OnMessageRecalled is a paid mutator transaction binding the contract method 0xa19ec154. // -// Solidity: function onMessageRecalled((uint256,address,uint256,uint256,address,address,address,uint256,uint256,uint256,bytes,string) message) payable returns() -func (_ERC1155Vault *ERC1155VaultSession) OnMessageRecalled(message IBridgeMessage) (*types.Transaction, error) { - return _ERC1155Vault.Contract.OnMessageRecalled(&_ERC1155Vault.TransactOpts, message) +// Solidity: function onMessageRecalled((uint256,address,uint256,uint256,address,address,address,uint256,uint256,uint256,bytes,string) message, bytes32 msgHash) payable returns() +func (_ERC1155Vault *ERC1155VaultSession) OnMessageRecalled(message IBridgeMessage, msgHash [32]byte) (*types.Transaction, error) { + return _ERC1155Vault.Contract.OnMessageRecalled(&_ERC1155Vault.TransactOpts, message, msgHash) } -// OnMessageRecalled is a paid mutator transaction binding the contract method 0x32a642ca. +// OnMessageRecalled is a paid mutator transaction binding the contract method 0xa19ec154. // -// Solidity: function onMessageRecalled((uint256,address,uint256,uint256,address,address,address,uint256,uint256,uint256,bytes,string) message) payable returns() -func (_ERC1155Vault *ERC1155VaultTransactorSession) OnMessageRecalled(message IBridgeMessage) (*types.Transaction, error) { - return _ERC1155Vault.Contract.OnMessageRecalled(&_ERC1155Vault.TransactOpts, message) +// Solidity: function onMessageRecalled((uint256,address,uint256,uint256,address,address,address,uint256,uint256,uint256,bytes,string) message, bytes32 msgHash) payable returns() +func (_ERC1155Vault *ERC1155VaultTransactorSession) OnMessageRecalled(message IBridgeMessage, msgHash [32]byte) (*types.Transaction, error) { + return _ERC1155Vault.Contract.OnMessageRecalled(&_ERC1155Vault.TransactOpts, message, msgHash) } // ReceiveToken is a paid mutator transaction binding the contract method 0x20b81559. @@ -718,27 +718,6 @@ func (_ERC1155Vault *ERC1155VaultTransactorSession) SendToken(opt BaseNFTVaultBr return _ERC1155Vault.Contract.SendToken(&_ERC1155Vault.TransactOpts, opt) } -// SetAddressManager is a paid mutator transaction binding the contract method 0x0652b57a. -// -// Solidity: function setAddressManager(address newAddressManager) returns() -func (_ERC1155Vault *ERC1155VaultTransactor) SetAddressManager(opts *bind.TransactOpts, newAddressManager common.Address) (*types.Transaction, error) { - return _ERC1155Vault.contract.Transact(opts, "setAddressManager", newAddressManager) -} - -// SetAddressManager is a paid mutator transaction binding the contract method 0x0652b57a. -// -// Solidity: function setAddressManager(address newAddressManager) returns() -func (_ERC1155Vault *ERC1155VaultSession) SetAddressManager(newAddressManager common.Address) (*types.Transaction, error) { - return _ERC1155Vault.Contract.SetAddressManager(&_ERC1155Vault.TransactOpts, newAddressManager) -} - -// SetAddressManager is a paid mutator transaction binding the contract method 0x0652b57a. -// -// Solidity: function setAddressManager(address newAddressManager) returns() -func (_ERC1155Vault *ERC1155VaultTransactorSession) SetAddressManager(newAddressManager common.Address) (*types.Transaction, error) { - return _ERC1155Vault.Contract.SetAddressManager(&_ERC1155Vault.TransactOpts, newAddressManager) -} - // TransferOwnership is a paid mutator transaction binding the contract method 0xf2fde38b. // // Solidity: function transferOwnership(address newOwner) returns() @@ -760,150 +739,6 @@ func (_ERC1155Vault *ERC1155VaultTransactorSession) TransferOwnership(newOwner c return _ERC1155Vault.Contract.TransferOwnership(&_ERC1155Vault.TransactOpts, newOwner) } -// ERC1155VaultAddressManagerChangedIterator is returned from FilterAddressManagerChanged and is used to iterate over the raw logs and unpacked data for AddressManagerChanged events raised by the ERC1155Vault contract. -type ERC1155VaultAddressManagerChangedIterator struct { - Event *ERC1155VaultAddressManagerChanged // Event containing the contract specifics and raw log - - contract *bind.BoundContract // Generic contract to use for unpacking event data - event string // Event name to use for unpacking event data - - logs chan types.Log // Log channel receiving the found contract events - sub ethereum.Subscription // Subscription for errors, completion and termination - done bool // Whether the subscription completed delivering logs - fail error // Occurred error to stop iteration -} - -// Next advances the iterator to the subsequent event, returning whether there -// are any more events found. In case of a retrieval or parsing error, false is -// returned and Error() can be queried for the exact failure. -func (it *ERC1155VaultAddressManagerChangedIterator) Next() bool { - // If the iterator failed, stop iterating - if it.fail != nil { - return false - } - // If the iterator completed, deliver directly whatever's available - if it.done { - select { - case log := <-it.logs: - it.Event = new(ERC1155VaultAddressManagerChanged) - if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { - it.fail = err - return false - } - it.Event.Raw = log - return true - - default: - return false - } - } - // Iterator still in progress, wait for either a data or an error event - select { - case log := <-it.logs: - it.Event = new(ERC1155VaultAddressManagerChanged) - if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { - it.fail = err - return false - } - it.Event.Raw = log - return true - - case err := <-it.sub.Err(): - it.done = true - it.fail = err - return it.Next() - } -} - -// Error returns any retrieval or parsing error occurred during filtering. -func (it *ERC1155VaultAddressManagerChangedIterator) Error() error { - return it.fail -} - -// Close terminates the iteration process, releasing any pending underlying -// resources. -func (it *ERC1155VaultAddressManagerChangedIterator) Close() error { - it.sub.Unsubscribe() - return nil -} - -// ERC1155VaultAddressManagerChanged represents a AddressManagerChanged event raised by the ERC1155Vault contract. -type ERC1155VaultAddressManagerChanged struct { - AddressManager common.Address - Raw types.Log // Blockchain specific contextual infos -} - -// FilterAddressManagerChanged is a free log retrieval operation binding the contract event 0x399ded90cb5ed8d89ef7e76ff4af65c373f06d3bf5d7eef55f4228e7b702a18b. -// -// Solidity: event AddressManagerChanged(address indexed addressManager) -func (_ERC1155Vault *ERC1155VaultFilterer) FilterAddressManagerChanged(opts *bind.FilterOpts, addressManager []common.Address) (*ERC1155VaultAddressManagerChangedIterator, error) { - - var addressManagerRule []interface{} - for _, addressManagerItem := range addressManager { - addressManagerRule = append(addressManagerRule, addressManagerItem) - } - - logs, sub, err := _ERC1155Vault.contract.FilterLogs(opts, "AddressManagerChanged", addressManagerRule) - if err != nil { - return nil, err - } - return &ERC1155VaultAddressManagerChangedIterator{contract: _ERC1155Vault.contract, event: "AddressManagerChanged", logs: logs, sub: sub}, nil -} - -// WatchAddressManagerChanged is a free log subscription operation binding the contract event 0x399ded90cb5ed8d89ef7e76ff4af65c373f06d3bf5d7eef55f4228e7b702a18b. -// -// Solidity: event AddressManagerChanged(address indexed addressManager) -func (_ERC1155Vault *ERC1155VaultFilterer) WatchAddressManagerChanged(opts *bind.WatchOpts, sink chan<- *ERC1155VaultAddressManagerChanged, addressManager []common.Address) (event.Subscription, error) { - - var addressManagerRule []interface{} - for _, addressManagerItem := range addressManager { - addressManagerRule = append(addressManagerRule, addressManagerItem) - } - - logs, sub, err := _ERC1155Vault.contract.WatchLogs(opts, "AddressManagerChanged", addressManagerRule) - if err != nil { - return nil, err - } - return event.NewSubscription(func(quit <-chan struct{}) error { - defer sub.Unsubscribe() - for { - select { - case log := <-logs: - // New log arrived, parse the event and forward to the user - event := new(ERC1155VaultAddressManagerChanged) - if err := _ERC1155Vault.contract.UnpackLog(event, "AddressManagerChanged", log); err != nil { - return err - } - event.Raw = log - - select { - case sink <- event: - case err := <-sub.Err(): - return err - case <-quit: - return nil - } - case err := <-sub.Err(): - return err - case <-quit: - return nil - } - } - }), nil -} - -// ParseAddressManagerChanged is a log parse operation binding the contract event 0x399ded90cb5ed8d89ef7e76ff4af65c373f06d3bf5d7eef55f4228e7b702a18b. -// -// Solidity: event AddressManagerChanged(address indexed addressManager) -func (_ERC1155Vault *ERC1155VaultFilterer) ParseAddressManagerChanged(log types.Log) (*ERC1155VaultAddressManagerChanged, error) { - event := new(ERC1155VaultAddressManagerChanged) - if err := _ERC1155Vault.contract.UnpackLog(event, "AddressManagerChanged", log); err != nil { - return nil, err - } - event.Raw = log - return event, nil -} - // ERC1155VaultBridgedTokenDeployedIterator is returned from FilterBridgedTokenDeployed and is used to iterate over the raw logs and unpacked data for BridgedTokenDeployed events raised by the ERC1155Vault contract. type ERC1155VaultBridgedTokenDeployedIterator struct { Event *ERC1155VaultBridgedTokenDeployed // Event containing the contract specifics and raw log diff --git a/packages/relayer/bindings/erc20vault/ERC20Vault.go b/packages/relayer/bindings/erc20vault/ERC20Vault.go index e59a8868c1..9dfc050821 100644 --- a/packages/relayer/bindings/erc20vault/ERC20Vault.go +++ b/packages/relayer/bindings/erc20vault/ERC20Vault.go @@ -68,7 +68,7 @@ type IBridgeMessage struct { // ERC20VaultMetaData contains all meta data concerning the ERC20Vault contract. var ERC20VaultMetaData = &bind.MetaData{ - ABI: "[{\"inputs\":[],\"name\":\"RESOLVER_DENIED\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"RESOLVER_INVALID_ADDR\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"chainId\",\"type\":\"uint256\"},{\"internalType\":\"bytes32\",\"name\":\"name\",\"type\":\"bytes32\"}],\"name\":\"RESOLVER_ZERO_ADDR\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"VAULT_INVALID_AMOUNT\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"VAULT_INVALID_FROM\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"VAULT_INVALID_SRC_CHAIN_ID\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"VAULT_INVALID_TO\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"VAULT_INVALID_TOKEN\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"VAULT_INVALID_USER\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"VAULT_MESSAGE_NOT_FAILED\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"VAULT_MESSAGE_RELEASED_ALREADY\",\"type\":\"error\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"addressManager\",\"type\":\"address\"}],\"name\":\"AddressManagerChanged\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"srcChainId\",\"type\":\"uint256\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"ctoken\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"btoken\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"string\",\"name\":\"ctokenSymbol\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"string\",\"name\":\"ctokenName\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"uint8\",\"name\":\"ctokenDecimal\",\"type\":\"uint8\"}],\"name\":\"BridgedTokenDeployed\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint8\",\"name\":\"version\",\"type\":\"uint8\"}],\"name\":\"Initialized\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"previousOwner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"newOwner\",\"type\":\"address\"}],\"name\":\"OwnershipTransferred\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"msgHash\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"srcChainId\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"TokenReceived\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"msgHash\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"TokenReleased\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"msgHash\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"destChainId\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"TokenSent\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"addressManager\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"name\":\"bridgedToCanonical\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"chainId\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"addr\",\"type\":\"address\"},{\"internalType\":\"uint8\",\"name\":\"decimals\",\"type\":\"uint8\"},{\"internalType\":\"string\",\"name\":\"symbol\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"name\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"name\":\"canonicalToBridged\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"addressManager\",\"type\":\"address\"}],\"name\":\"init\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"name\":\"isBridgedToken\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"uint256\",\"name\":\"id\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"srcChainId\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"destChainId\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"user\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"refundTo\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"fee\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"gasLimit\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"},{\"internalType\":\"string\",\"name\":\"memo\",\"type\":\"string\"}],\"internalType\":\"structIBridge.Message\",\"name\":\"message\",\"type\":\"tuple\"}],\"name\":\"onMessageRecalled\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"owner\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"uint256\",\"name\":\"chainId\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"addr\",\"type\":\"address\"},{\"internalType\":\"uint8\",\"name\":\"decimals\",\"type\":\"uint8\"},{\"internalType\":\"string\",\"name\":\"symbol\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"name\",\"type\":\"string\"}],\"internalType\":\"structERC20Vault.CanonicalERC20\",\"name\":\"ctoken\",\"type\":\"tuple\"},{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"receiveToken\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"renounceOwnership\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"chainId\",\"type\":\"uint256\"},{\"internalType\":\"bytes32\",\"name\":\"name\",\"type\":\"bytes32\"},{\"internalType\":\"bool\",\"name\":\"allowZeroAddress\",\"type\":\"bool\"}],\"name\":\"resolve\",\"outputs\":[{\"internalType\":\"addresspayable\",\"name\":\"addr\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"name\",\"type\":\"bytes32\"},{\"internalType\":\"bool\",\"name\":\"allowZeroAddress\",\"type\":\"bool\"}],\"name\":\"resolve\",\"outputs\":[{\"internalType\":\"addresspayable\",\"name\":\"addr\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"uint256\",\"name\":\"destChainId\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"gasLimit\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"fee\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"refundTo\",\"type\":\"address\"},{\"internalType\":\"string\",\"name\":\"memo\",\"type\":\"string\"}],\"internalType\":\"structERC20Vault.BridgeTransferOp\",\"name\":\"opt\",\"type\":\"tuple\"}],\"name\":\"sendToken\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"newAddressManager\",\"type\":\"address\"}],\"name\":\"setAddressManager\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes4\",\"name\":\"interfaceId\",\"type\":\"bytes4\"}],\"name\":\"supportsInterface\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"newOwner\",\"type\":\"address\"}],\"name\":\"transferOwnership\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}]", + ABI: "[{\"inputs\":[],\"name\":\"RESOLVER_DENIED\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"RESOLVER_INVALID_MANAGER\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"chainId\",\"type\":\"uint256\"},{\"internalType\":\"bytes32\",\"name\":\"name\",\"type\":\"bytes32\"}],\"name\":\"RESOLVER_ZERO_ADDR\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"VAULT_INVALID_AMOUNT\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"VAULT_INVALID_FROM\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"VAULT_INVALID_SRC_CHAIN_ID\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"VAULT_INVALID_TO\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"VAULT_INVALID_TOKEN\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"VAULT_INVALID_USER\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"VAULT_MESSAGE_NOT_FAILED\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"VAULT_MESSAGE_RELEASED_ALREADY\",\"type\":\"error\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"srcChainId\",\"type\":\"uint256\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"ctoken\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"btoken\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"string\",\"name\":\"ctokenSymbol\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"string\",\"name\":\"ctokenName\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"uint8\",\"name\":\"ctokenDecimal\",\"type\":\"uint8\"}],\"name\":\"BridgedTokenDeployed\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint8\",\"name\":\"version\",\"type\":\"uint8\"}],\"name\":\"Initialized\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"previousOwner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"newOwner\",\"type\":\"address\"}],\"name\":\"OwnershipTransferred\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"msgHash\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"srcChainId\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"TokenReceived\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"msgHash\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"TokenReleased\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"msgHash\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"destChainId\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"TokenSent\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"addressManager\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"name\":\"bridgedToCanonical\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"chainId\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"addr\",\"type\":\"address\"},{\"internalType\":\"uint8\",\"name\":\"decimals\",\"type\":\"uint8\"},{\"internalType\":\"string\",\"name\":\"symbol\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"name\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"name\":\"canonicalToBridged\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"addressManager\",\"type\":\"address\"}],\"name\":\"init\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"name\":\"isBridgedToken\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"uint256\",\"name\":\"id\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"srcChainId\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"destChainId\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"user\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"refundTo\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"fee\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"gasLimit\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"},{\"internalType\":\"string\",\"name\":\"memo\",\"type\":\"string\"}],\"internalType\":\"structIBridge.Message\",\"name\":\"message\",\"type\":\"tuple\"},{\"internalType\":\"bytes32\",\"name\":\"msgHash\",\"type\":\"bytes32\"}],\"name\":\"onMessageRecalled\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"owner\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"uint256\",\"name\":\"chainId\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"addr\",\"type\":\"address\"},{\"internalType\":\"uint8\",\"name\":\"decimals\",\"type\":\"uint8\"},{\"internalType\":\"string\",\"name\":\"symbol\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"name\",\"type\":\"string\"}],\"internalType\":\"structERC20Vault.CanonicalERC20\",\"name\":\"ctoken\",\"type\":\"tuple\"},{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"receiveToken\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"renounceOwnership\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"chainId\",\"type\":\"uint256\"},{\"internalType\":\"bytes32\",\"name\":\"name\",\"type\":\"bytes32\"},{\"internalType\":\"bool\",\"name\":\"allowZeroAddress\",\"type\":\"bool\"}],\"name\":\"resolve\",\"outputs\":[{\"internalType\":\"addresspayable\",\"name\":\"addr\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"name\",\"type\":\"bytes32\"},{\"internalType\":\"bool\",\"name\":\"allowZeroAddress\",\"type\":\"bool\"}],\"name\":\"resolve\",\"outputs\":[{\"internalType\":\"addresspayable\",\"name\":\"addr\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"uint256\",\"name\":\"destChainId\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"gasLimit\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"fee\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"refundTo\",\"type\":\"address\"},{\"internalType\":\"string\",\"name\":\"memo\",\"type\":\"string\"}],\"internalType\":\"structERC20Vault.BridgeTransferOp\",\"name\":\"opt\",\"type\":\"tuple\"}],\"name\":\"sendToken\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes4\",\"name\":\"interfaceId\",\"type\":\"bytes4\"}],\"name\":\"supportsInterface\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"newOwner\",\"type\":\"address\"}],\"name\":\"transferOwnership\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}]", } // ERC20VaultABI is the input ABI used to generate the binding from. @@ -515,25 +515,25 @@ func (_ERC20Vault *ERC20VaultTransactorSession) Init(addressManager common.Addre return _ERC20Vault.Contract.Init(&_ERC20Vault.TransactOpts, addressManager) } -// OnMessageRecalled is a paid mutator transaction binding the contract method 0x32a642ca. +// OnMessageRecalled is a paid mutator transaction binding the contract method 0xa19ec154. // -// Solidity: function onMessageRecalled((uint256,address,uint256,uint256,address,address,address,uint256,uint256,uint256,bytes,string) message) payable returns() -func (_ERC20Vault *ERC20VaultTransactor) OnMessageRecalled(opts *bind.TransactOpts, message IBridgeMessage) (*types.Transaction, error) { - return _ERC20Vault.contract.Transact(opts, "onMessageRecalled", message) +// Solidity: function onMessageRecalled((uint256,address,uint256,uint256,address,address,address,uint256,uint256,uint256,bytes,string) message, bytes32 msgHash) payable returns() +func (_ERC20Vault *ERC20VaultTransactor) OnMessageRecalled(opts *bind.TransactOpts, message IBridgeMessage, msgHash [32]byte) (*types.Transaction, error) { + return _ERC20Vault.contract.Transact(opts, "onMessageRecalled", message, msgHash) } -// OnMessageRecalled is a paid mutator transaction binding the contract method 0x32a642ca. +// OnMessageRecalled is a paid mutator transaction binding the contract method 0xa19ec154. // -// Solidity: function onMessageRecalled((uint256,address,uint256,uint256,address,address,address,uint256,uint256,uint256,bytes,string) message) payable returns() -func (_ERC20Vault *ERC20VaultSession) OnMessageRecalled(message IBridgeMessage) (*types.Transaction, error) { - return _ERC20Vault.Contract.OnMessageRecalled(&_ERC20Vault.TransactOpts, message) +// Solidity: function onMessageRecalled((uint256,address,uint256,uint256,address,address,address,uint256,uint256,uint256,bytes,string) message, bytes32 msgHash) payable returns() +func (_ERC20Vault *ERC20VaultSession) OnMessageRecalled(message IBridgeMessage, msgHash [32]byte) (*types.Transaction, error) { + return _ERC20Vault.Contract.OnMessageRecalled(&_ERC20Vault.TransactOpts, message, msgHash) } -// OnMessageRecalled is a paid mutator transaction binding the contract method 0x32a642ca. +// OnMessageRecalled is a paid mutator transaction binding the contract method 0xa19ec154. // -// Solidity: function onMessageRecalled((uint256,address,uint256,uint256,address,address,address,uint256,uint256,uint256,bytes,string) message) payable returns() -func (_ERC20Vault *ERC20VaultTransactorSession) OnMessageRecalled(message IBridgeMessage) (*types.Transaction, error) { - return _ERC20Vault.Contract.OnMessageRecalled(&_ERC20Vault.TransactOpts, message) +// Solidity: function onMessageRecalled((uint256,address,uint256,uint256,address,address,address,uint256,uint256,uint256,bytes,string) message, bytes32 msgHash) payable returns() +func (_ERC20Vault *ERC20VaultTransactorSession) OnMessageRecalled(message IBridgeMessage, msgHash [32]byte) (*types.Transaction, error) { + return _ERC20Vault.Contract.OnMessageRecalled(&_ERC20Vault.TransactOpts, message, msgHash) } // ReceiveToken is a paid mutator transaction binding the contract method 0xcb03d23c. @@ -599,27 +599,6 @@ func (_ERC20Vault *ERC20VaultTransactorSession) SendToken(opt ERC20VaultBridgeTr return _ERC20Vault.Contract.SendToken(&_ERC20Vault.TransactOpts, opt) } -// SetAddressManager is a paid mutator transaction binding the contract method 0x0652b57a. -// -// Solidity: function setAddressManager(address newAddressManager) returns() -func (_ERC20Vault *ERC20VaultTransactor) SetAddressManager(opts *bind.TransactOpts, newAddressManager common.Address) (*types.Transaction, error) { - return _ERC20Vault.contract.Transact(opts, "setAddressManager", newAddressManager) -} - -// SetAddressManager is a paid mutator transaction binding the contract method 0x0652b57a. -// -// Solidity: function setAddressManager(address newAddressManager) returns() -func (_ERC20Vault *ERC20VaultSession) SetAddressManager(newAddressManager common.Address) (*types.Transaction, error) { - return _ERC20Vault.Contract.SetAddressManager(&_ERC20Vault.TransactOpts, newAddressManager) -} - -// SetAddressManager is a paid mutator transaction binding the contract method 0x0652b57a. -// -// Solidity: function setAddressManager(address newAddressManager) returns() -func (_ERC20Vault *ERC20VaultTransactorSession) SetAddressManager(newAddressManager common.Address) (*types.Transaction, error) { - return _ERC20Vault.Contract.SetAddressManager(&_ERC20Vault.TransactOpts, newAddressManager) -} - // TransferOwnership is a paid mutator transaction binding the contract method 0xf2fde38b. // // Solidity: function transferOwnership(address newOwner) returns() @@ -641,150 +620,6 @@ func (_ERC20Vault *ERC20VaultTransactorSession) TransferOwnership(newOwner commo return _ERC20Vault.Contract.TransferOwnership(&_ERC20Vault.TransactOpts, newOwner) } -// ERC20VaultAddressManagerChangedIterator is returned from FilterAddressManagerChanged and is used to iterate over the raw logs and unpacked data for AddressManagerChanged events raised by the ERC20Vault contract. -type ERC20VaultAddressManagerChangedIterator struct { - Event *ERC20VaultAddressManagerChanged // Event containing the contract specifics and raw log - - contract *bind.BoundContract // Generic contract to use for unpacking event data - event string // Event name to use for unpacking event data - - logs chan types.Log // Log channel receiving the found contract events - sub ethereum.Subscription // Subscription for errors, completion and termination - done bool // Whether the subscription completed delivering logs - fail error // Occurred error to stop iteration -} - -// Next advances the iterator to the subsequent event, returning whether there -// are any more events found. In case of a retrieval or parsing error, false is -// returned and Error() can be queried for the exact failure. -func (it *ERC20VaultAddressManagerChangedIterator) Next() bool { - // If the iterator failed, stop iterating - if it.fail != nil { - return false - } - // If the iterator completed, deliver directly whatever's available - if it.done { - select { - case log := <-it.logs: - it.Event = new(ERC20VaultAddressManagerChanged) - if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { - it.fail = err - return false - } - it.Event.Raw = log - return true - - default: - return false - } - } - // Iterator still in progress, wait for either a data or an error event - select { - case log := <-it.logs: - it.Event = new(ERC20VaultAddressManagerChanged) - if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { - it.fail = err - return false - } - it.Event.Raw = log - return true - - case err := <-it.sub.Err(): - it.done = true - it.fail = err - return it.Next() - } -} - -// Error returns any retrieval or parsing error occurred during filtering. -func (it *ERC20VaultAddressManagerChangedIterator) Error() error { - return it.fail -} - -// Close terminates the iteration process, releasing any pending underlying -// resources. -func (it *ERC20VaultAddressManagerChangedIterator) Close() error { - it.sub.Unsubscribe() - return nil -} - -// ERC20VaultAddressManagerChanged represents a AddressManagerChanged event raised by the ERC20Vault contract. -type ERC20VaultAddressManagerChanged struct { - AddressManager common.Address - Raw types.Log // Blockchain specific contextual infos -} - -// FilterAddressManagerChanged is a free log retrieval operation binding the contract event 0x399ded90cb5ed8d89ef7e76ff4af65c373f06d3bf5d7eef55f4228e7b702a18b. -// -// Solidity: event AddressManagerChanged(address indexed addressManager) -func (_ERC20Vault *ERC20VaultFilterer) FilterAddressManagerChanged(opts *bind.FilterOpts, addressManager []common.Address) (*ERC20VaultAddressManagerChangedIterator, error) { - - var addressManagerRule []interface{} - for _, addressManagerItem := range addressManager { - addressManagerRule = append(addressManagerRule, addressManagerItem) - } - - logs, sub, err := _ERC20Vault.contract.FilterLogs(opts, "AddressManagerChanged", addressManagerRule) - if err != nil { - return nil, err - } - return &ERC20VaultAddressManagerChangedIterator{contract: _ERC20Vault.contract, event: "AddressManagerChanged", logs: logs, sub: sub}, nil -} - -// WatchAddressManagerChanged is a free log subscription operation binding the contract event 0x399ded90cb5ed8d89ef7e76ff4af65c373f06d3bf5d7eef55f4228e7b702a18b. -// -// Solidity: event AddressManagerChanged(address indexed addressManager) -func (_ERC20Vault *ERC20VaultFilterer) WatchAddressManagerChanged(opts *bind.WatchOpts, sink chan<- *ERC20VaultAddressManagerChanged, addressManager []common.Address) (event.Subscription, error) { - - var addressManagerRule []interface{} - for _, addressManagerItem := range addressManager { - addressManagerRule = append(addressManagerRule, addressManagerItem) - } - - logs, sub, err := _ERC20Vault.contract.WatchLogs(opts, "AddressManagerChanged", addressManagerRule) - if err != nil { - return nil, err - } - return event.NewSubscription(func(quit <-chan struct{}) error { - defer sub.Unsubscribe() - for { - select { - case log := <-logs: - // New log arrived, parse the event and forward to the user - event := new(ERC20VaultAddressManagerChanged) - if err := _ERC20Vault.contract.UnpackLog(event, "AddressManagerChanged", log); err != nil { - return err - } - event.Raw = log - - select { - case sink <- event: - case err := <-sub.Err(): - return err - case <-quit: - return nil - } - case err := <-sub.Err(): - return err - case <-quit: - return nil - } - } - }), nil -} - -// ParseAddressManagerChanged is a log parse operation binding the contract event 0x399ded90cb5ed8d89ef7e76ff4af65c373f06d3bf5d7eef55f4228e7b702a18b. -// -// Solidity: event AddressManagerChanged(address indexed addressManager) -func (_ERC20Vault *ERC20VaultFilterer) ParseAddressManagerChanged(log types.Log) (*ERC20VaultAddressManagerChanged, error) { - event := new(ERC20VaultAddressManagerChanged) - if err := _ERC20Vault.contract.UnpackLog(event, "AddressManagerChanged", log); err != nil { - return nil, err - } - event.Raw = log - return event, nil -} - // ERC20VaultBridgedTokenDeployedIterator is returned from FilterBridgedTokenDeployed and is used to iterate over the raw logs and unpacked data for BridgedTokenDeployed events raised by the ERC20Vault contract. type ERC20VaultBridgedTokenDeployedIterator struct { Event *ERC20VaultBridgedTokenDeployed // Event containing the contract specifics and raw log diff --git a/packages/relayer/bindings/erc721vault/ERC721Vault.go b/packages/relayer/bindings/erc721vault/ERC721Vault.go index 1620b73458..edcdecaed7 100644 --- a/packages/relayer/bindings/erc721vault/ERC721Vault.go +++ b/packages/relayer/bindings/erc721vault/ERC721Vault.go @@ -68,7 +68,7 @@ type IBridgeMessage struct { // ERC721VaultMetaData contains all meta data concerning the ERC721Vault contract. var ERC721VaultMetaData = &bind.MetaData{ - ABI: "[{\"inputs\":[],\"name\":\"RESOLVER_DENIED\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"RESOLVER_INVALID_ADDR\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"chainId\",\"type\":\"uint256\"},{\"internalType\":\"bytes32\",\"name\":\"name\",\"type\":\"bytes32\"}],\"name\":\"RESOLVER_ZERO_ADDR\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"VAULT_INTERFACE_NOT_SUPPORTED\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"VAULT_INVALID_AMOUNT\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"VAULT_INVALID_FROM\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"VAULT_INVALID_SRC_CHAIN_ID\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"VAULT_INVALID_TO\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"VAULT_INVALID_TOKEN\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"VAULT_INVALID_USER\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"VAULT_MAX_TOKEN_PER_TXN_EXCEEDED\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"VAULT_MESSAGE_NOT_FAILED\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"VAULT_MESSAGE_RELEASED_ALREADY\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"VAULT_TOKEN_ARRAY_MISMATCH\",\"type\":\"error\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"addressManager\",\"type\":\"address\"}],\"name\":\"AddressManagerChanged\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"chainId\",\"type\":\"uint256\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"ctoken\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"btoken\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"string\",\"name\":\"ctokenSymbol\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"string\",\"name\":\"ctokenName\",\"type\":\"string\"}],\"name\":\"BridgedTokenDeployed\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint8\",\"name\":\"version\",\"type\":\"uint8\"}],\"name\":\"Initialized\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"previousOwner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"newOwner\",\"type\":\"address\"}],\"name\":\"OwnershipTransferred\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"msgHash\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"srcChainId\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256[]\",\"name\":\"tokenIds\",\"type\":\"uint256[]\"},{\"indexed\":false,\"internalType\":\"uint256[]\",\"name\":\"amounts\",\"type\":\"uint256[]\"}],\"name\":\"TokenReceived\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"msgHash\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256[]\",\"name\":\"tokenIds\",\"type\":\"uint256[]\"},{\"indexed\":false,\"internalType\":\"uint256[]\",\"name\":\"amounts\",\"type\":\"uint256[]\"}],\"name\":\"TokenReleased\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"msgHash\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"destChainId\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256[]\",\"name\":\"tokenIds\",\"type\":\"uint256[]\"},{\"indexed\":false,\"internalType\":\"uint256[]\",\"name\":\"amounts\",\"type\":\"uint256[]\"}],\"name\":\"TokenSent\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"ERC1155_INTERFACE_ID\",\"outputs\":[{\"internalType\":\"bytes4\",\"name\":\"\",\"type\":\"bytes4\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"ERC721_INTERFACE_ID\",\"outputs\":[{\"internalType\":\"bytes4\",\"name\":\"\",\"type\":\"bytes4\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"addressManager\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"name\":\"bridgedToCanonical\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"chainId\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"addr\",\"type\":\"address\"},{\"internalType\":\"string\",\"name\":\"symbol\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"name\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"name\":\"canonicalToBridged\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"addressManager\",\"type\":\"address\"}],\"name\":\"init\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"name\":\"isBridgedToken\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"\",\"type\":\"bytes\"}],\"name\":\"onERC721Received\",\"outputs\":[{\"internalType\":\"bytes4\",\"name\":\"\",\"type\":\"bytes4\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"uint256\",\"name\":\"id\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"srcChainId\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"destChainId\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"user\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"refundTo\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"fee\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"gasLimit\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"},{\"internalType\":\"string\",\"name\":\"memo\",\"type\":\"string\"}],\"internalType\":\"structIBridge.Message\",\"name\":\"message\",\"type\":\"tuple\"}],\"name\":\"onMessageRecalled\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"owner\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"uint256\",\"name\":\"chainId\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"addr\",\"type\":\"address\"},{\"internalType\":\"string\",\"name\":\"symbol\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"name\",\"type\":\"string\"}],\"internalType\":\"structBaseNFTVault.CanonicalNFT\",\"name\":\"ctoken\",\"type\":\"tuple\"},{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256[]\",\"name\":\"tokenIds\",\"type\":\"uint256[]\"}],\"name\":\"receiveToken\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"renounceOwnership\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"chainId\",\"type\":\"uint256\"},{\"internalType\":\"bytes32\",\"name\":\"name\",\"type\":\"bytes32\"},{\"internalType\":\"bool\",\"name\":\"allowZeroAddress\",\"type\":\"bool\"}],\"name\":\"resolve\",\"outputs\":[{\"internalType\":\"addresspayable\",\"name\":\"addr\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"name\",\"type\":\"bytes32\"},{\"internalType\":\"bool\",\"name\":\"allowZeroAddress\",\"type\":\"bool\"}],\"name\":\"resolve\",\"outputs\":[{\"internalType\":\"addresspayable\",\"name\":\"addr\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"uint256\",\"name\":\"destChainId\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"uint256[]\",\"name\":\"tokenIds\",\"type\":\"uint256[]\"},{\"internalType\":\"uint256[]\",\"name\":\"amounts\",\"type\":\"uint256[]\"},{\"internalType\":\"uint256\",\"name\":\"gasLimit\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"fee\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"refundTo\",\"type\":\"address\"},{\"internalType\":\"string\",\"name\":\"memo\",\"type\":\"string\"}],\"internalType\":\"structBaseNFTVault.BridgeTransferOp\",\"name\":\"opt\",\"type\":\"tuple\"}],\"name\":\"sendToken\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"newAddressManager\",\"type\":\"address\"}],\"name\":\"setAddressManager\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes4\",\"name\":\"interfaceId\",\"type\":\"bytes4\"}],\"name\":\"supportsInterface\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"newOwner\",\"type\":\"address\"}],\"name\":\"transferOwnership\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}]", + ABI: "[{\"inputs\":[],\"name\":\"RESOLVER_DENIED\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"RESOLVER_INVALID_MANAGER\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"chainId\",\"type\":\"uint256\"},{\"internalType\":\"bytes32\",\"name\":\"name\",\"type\":\"bytes32\"}],\"name\":\"RESOLVER_ZERO_ADDR\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"VAULT_INTERFACE_NOT_SUPPORTED\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"VAULT_INVALID_AMOUNT\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"VAULT_INVALID_FROM\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"VAULT_INVALID_SRC_CHAIN_ID\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"VAULT_INVALID_TO\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"VAULT_INVALID_TOKEN\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"VAULT_INVALID_USER\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"VAULT_MAX_TOKEN_PER_TXN_EXCEEDED\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"VAULT_MESSAGE_NOT_FAILED\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"VAULT_MESSAGE_RELEASED_ALREADY\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"VAULT_TOKEN_ARRAY_MISMATCH\",\"type\":\"error\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"chainId\",\"type\":\"uint256\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"ctoken\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"btoken\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"string\",\"name\":\"ctokenSymbol\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"string\",\"name\":\"ctokenName\",\"type\":\"string\"}],\"name\":\"BridgedTokenDeployed\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint8\",\"name\":\"version\",\"type\":\"uint8\"}],\"name\":\"Initialized\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"previousOwner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"newOwner\",\"type\":\"address\"}],\"name\":\"OwnershipTransferred\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"msgHash\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"srcChainId\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256[]\",\"name\":\"tokenIds\",\"type\":\"uint256[]\"},{\"indexed\":false,\"internalType\":\"uint256[]\",\"name\":\"amounts\",\"type\":\"uint256[]\"}],\"name\":\"TokenReceived\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"msgHash\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256[]\",\"name\":\"tokenIds\",\"type\":\"uint256[]\"},{\"indexed\":false,\"internalType\":\"uint256[]\",\"name\":\"amounts\",\"type\":\"uint256[]\"}],\"name\":\"TokenReleased\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"msgHash\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"destChainId\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256[]\",\"name\":\"tokenIds\",\"type\":\"uint256[]\"},{\"indexed\":false,\"internalType\":\"uint256[]\",\"name\":\"amounts\",\"type\":\"uint256[]\"}],\"name\":\"TokenSent\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"ERC1155_INTERFACE_ID\",\"outputs\":[{\"internalType\":\"bytes4\",\"name\":\"\",\"type\":\"bytes4\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"ERC721_INTERFACE_ID\",\"outputs\":[{\"internalType\":\"bytes4\",\"name\":\"\",\"type\":\"bytes4\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"addressManager\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"name\":\"bridgedToCanonical\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"chainId\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"addr\",\"type\":\"address\"},{\"internalType\":\"string\",\"name\":\"symbol\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"name\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"name\":\"canonicalToBridged\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"addressManager\",\"type\":\"address\"}],\"name\":\"init\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"name\":\"isBridgedToken\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"\",\"type\":\"bytes\"}],\"name\":\"onERC721Received\",\"outputs\":[{\"internalType\":\"bytes4\",\"name\":\"\",\"type\":\"bytes4\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"uint256\",\"name\":\"id\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"srcChainId\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"destChainId\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"user\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"refundTo\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"fee\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"gasLimit\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"},{\"internalType\":\"string\",\"name\":\"memo\",\"type\":\"string\"}],\"internalType\":\"structIBridge.Message\",\"name\":\"message\",\"type\":\"tuple\"},{\"internalType\":\"bytes32\",\"name\":\"msgHash\",\"type\":\"bytes32\"}],\"name\":\"onMessageRecalled\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"owner\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"uint256\",\"name\":\"chainId\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"addr\",\"type\":\"address\"},{\"internalType\":\"string\",\"name\":\"symbol\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"name\",\"type\":\"string\"}],\"internalType\":\"structBaseNFTVault.CanonicalNFT\",\"name\":\"ctoken\",\"type\":\"tuple\"},{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256[]\",\"name\":\"tokenIds\",\"type\":\"uint256[]\"}],\"name\":\"receiveToken\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"renounceOwnership\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"chainId\",\"type\":\"uint256\"},{\"internalType\":\"bytes32\",\"name\":\"name\",\"type\":\"bytes32\"},{\"internalType\":\"bool\",\"name\":\"allowZeroAddress\",\"type\":\"bool\"}],\"name\":\"resolve\",\"outputs\":[{\"internalType\":\"addresspayable\",\"name\":\"addr\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"name\",\"type\":\"bytes32\"},{\"internalType\":\"bool\",\"name\":\"allowZeroAddress\",\"type\":\"bool\"}],\"name\":\"resolve\",\"outputs\":[{\"internalType\":\"addresspayable\",\"name\":\"addr\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"uint256\",\"name\":\"destChainId\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"uint256[]\",\"name\":\"tokenIds\",\"type\":\"uint256[]\"},{\"internalType\":\"uint256[]\",\"name\":\"amounts\",\"type\":\"uint256[]\"},{\"internalType\":\"uint256\",\"name\":\"gasLimit\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"fee\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"refundTo\",\"type\":\"address\"},{\"internalType\":\"string\",\"name\":\"memo\",\"type\":\"string\"}],\"internalType\":\"structBaseNFTVault.BridgeTransferOp\",\"name\":\"opt\",\"type\":\"tuple\"}],\"name\":\"sendToken\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes4\",\"name\":\"interfaceId\",\"type\":\"bytes4\"}],\"name\":\"supportsInterface\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"newOwner\",\"type\":\"address\"}],\"name\":\"transferOwnership\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}]", } // ERC721VaultABI is the input ABI used to generate the binding from. @@ -603,25 +603,25 @@ func (_ERC721Vault *ERC721VaultTransactorSession) Init(addressManager common.Add return _ERC721Vault.Contract.Init(&_ERC721Vault.TransactOpts, addressManager) } -// OnMessageRecalled is a paid mutator transaction binding the contract method 0x32a642ca. +// OnMessageRecalled is a paid mutator transaction binding the contract method 0xa19ec154. // -// Solidity: function onMessageRecalled((uint256,address,uint256,uint256,address,address,address,uint256,uint256,uint256,bytes,string) message) payable returns() -func (_ERC721Vault *ERC721VaultTransactor) OnMessageRecalled(opts *bind.TransactOpts, message IBridgeMessage) (*types.Transaction, error) { - return _ERC721Vault.contract.Transact(opts, "onMessageRecalled", message) +// Solidity: function onMessageRecalled((uint256,address,uint256,uint256,address,address,address,uint256,uint256,uint256,bytes,string) message, bytes32 msgHash) payable returns() +func (_ERC721Vault *ERC721VaultTransactor) OnMessageRecalled(opts *bind.TransactOpts, message IBridgeMessage, msgHash [32]byte) (*types.Transaction, error) { + return _ERC721Vault.contract.Transact(opts, "onMessageRecalled", message, msgHash) } -// OnMessageRecalled is a paid mutator transaction binding the contract method 0x32a642ca. +// OnMessageRecalled is a paid mutator transaction binding the contract method 0xa19ec154. // -// Solidity: function onMessageRecalled((uint256,address,uint256,uint256,address,address,address,uint256,uint256,uint256,bytes,string) message) payable returns() -func (_ERC721Vault *ERC721VaultSession) OnMessageRecalled(message IBridgeMessage) (*types.Transaction, error) { - return _ERC721Vault.Contract.OnMessageRecalled(&_ERC721Vault.TransactOpts, message) +// Solidity: function onMessageRecalled((uint256,address,uint256,uint256,address,address,address,uint256,uint256,uint256,bytes,string) message, bytes32 msgHash) payable returns() +func (_ERC721Vault *ERC721VaultSession) OnMessageRecalled(message IBridgeMessage, msgHash [32]byte) (*types.Transaction, error) { + return _ERC721Vault.Contract.OnMessageRecalled(&_ERC721Vault.TransactOpts, message, msgHash) } -// OnMessageRecalled is a paid mutator transaction binding the contract method 0x32a642ca. +// OnMessageRecalled is a paid mutator transaction binding the contract method 0xa19ec154. // -// Solidity: function onMessageRecalled((uint256,address,uint256,uint256,address,address,address,uint256,uint256,uint256,bytes,string) message) payable returns() -func (_ERC721Vault *ERC721VaultTransactorSession) OnMessageRecalled(message IBridgeMessage) (*types.Transaction, error) { - return _ERC721Vault.Contract.OnMessageRecalled(&_ERC721Vault.TransactOpts, message) +// Solidity: function onMessageRecalled((uint256,address,uint256,uint256,address,address,address,uint256,uint256,uint256,bytes,string) message, bytes32 msgHash) payable returns() +func (_ERC721Vault *ERC721VaultTransactorSession) OnMessageRecalled(message IBridgeMessage, msgHash [32]byte) (*types.Transaction, error) { + return _ERC721Vault.Contract.OnMessageRecalled(&_ERC721Vault.TransactOpts, message, msgHash) } // ReceiveToken is a paid mutator transaction binding the contract method 0xa9976baf. @@ -687,27 +687,6 @@ func (_ERC721Vault *ERC721VaultTransactorSession) SendToken(opt BaseNFTVaultBrid return _ERC721Vault.Contract.SendToken(&_ERC721Vault.TransactOpts, opt) } -// SetAddressManager is a paid mutator transaction binding the contract method 0x0652b57a. -// -// Solidity: function setAddressManager(address newAddressManager) returns() -func (_ERC721Vault *ERC721VaultTransactor) SetAddressManager(opts *bind.TransactOpts, newAddressManager common.Address) (*types.Transaction, error) { - return _ERC721Vault.contract.Transact(opts, "setAddressManager", newAddressManager) -} - -// SetAddressManager is a paid mutator transaction binding the contract method 0x0652b57a. -// -// Solidity: function setAddressManager(address newAddressManager) returns() -func (_ERC721Vault *ERC721VaultSession) SetAddressManager(newAddressManager common.Address) (*types.Transaction, error) { - return _ERC721Vault.Contract.SetAddressManager(&_ERC721Vault.TransactOpts, newAddressManager) -} - -// SetAddressManager is a paid mutator transaction binding the contract method 0x0652b57a. -// -// Solidity: function setAddressManager(address newAddressManager) returns() -func (_ERC721Vault *ERC721VaultTransactorSession) SetAddressManager(newAddressManager common.Address) (*types.Transaction, error) { - return _ERC721Vault.Contract.SetAddressManager(&_ERC721Vault.TransactOpts, newAddressManager) -} - // TransferOwnership is a paid mutator transaction binding the contract method 0xf2fde38b. // // Solidity: function transferOwnership(address newOwner) returns() @@ -729,150 +708,6 @@ func (_ERC721Vault *ERC721VaultTransactorSession) TransferOwnership(newOwner com return _ERC721Vault.Contract.TransferOwnership(&_ERC721Vault.TransactOpts, newOwner) } -// ERC721VaultAddressManagerChangedIterator is returned from FilterAddressManagerChanged and is used to iterate over the raw logs and unpacked data for AddressManagerChanged events raised by the ERC721Vault contract. -type ERC721VaultAddressManagerChangedIterator struct { - Event *ERC721VaultAddressManagerChanged // Event containing the contract specifics and raw log - - contract *bind.BoundContract // Generic contract to use for unpacking event data - event string // Event name to use for unpacking event data - - logs chan types.Log // Log channel receiving the found contract events - sub ethereum.Subscription // Subscription for errors, completion and termination - done bool // Whether the subscription completed delivering logs - fail error // Occurred error to stop iteration -} - -// Next advances the iterator to the subsequent event, returning whether there -// are any more events found. In case of a retrieval or parsing error, false is -// returned and Error() can be queried for the exact failure. -func (it *ERC721VaultAddressManagerChangedIterator) Next() bool { - // If the iterator failed, stop iterating - if it.fail != nil { - return false - } - // If the iterator completed, deliver directly whatever's available - if it.done { - select { - case log := <-it.logs: - it.Event = new(ERC721VaultAddressManagerChanged) - if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { - it.fail = err - return false - } - it.Event.Raw = log - return true - - default: - return false - } - } - // Iterator still in progress, wait for either a data or an error event - select { - case log := <-it.logs: - it.Event = new(ERC721VaultAddressManagerChanged) - if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { - it.fail = err - return false - } - it.Event.Raw = log - return true - - case err := <-it.sub.Err(): - it.done = true - it.fail = err - return it.Next() - } -} - -// Error returns any retrieval or parsing error occurred during filtering. -func (it *ERC721VaultAddressManagerChangedIterator) Error() error { - return it.fail -} - -// Close terminates the iteration process, releasing any pending underlying -// resources. -func (it *ERC721VaultAddressManagerChangedIterator) Close() error { - it.sub.Unsubscribe() - return nil -} - -// ERC721VaultAddressManagerChanged represents a AddressManagerChanged event raised by the ERC721Vault contract. -type ERC721VaultAddressManagerChanged struct { - AddressManager common.Address - Raw types.Log // Blockchain specific contextual infos -} - -// FilterAddressManagerChanged is a free log retrieval operation binding the contract event 0x399ded90cb5ed8d89ef7e76ff4af65c373f06d3bf5d7eef55f4228e7b702a18b. -// -// Solidity: event AddressManagerChanged(address indexed addressManager) -func (_ERC721Vault *ERC721VaultFilterer) FilterAddressManagerChanged(opts *bind.FilterOpts, addressManager []common.Address) (*ERC721VaultAddressManagerChangedIterator, error) { - - var addressManagerRule []interface{} - for _, addressManagerItem := range addressManager { - addressManagerRule = append(addressManagerRule, addressManagerItem) - } - - logs, sub, err := _ERC721Vault.contract.FilterLogs(opts, "AddressManagerChanged", addressManagerRule) - if err != nil { - return nil, err - } - return &ERC721VaultAddressManagerChangedIterator{contract: _ERC721Vault.contract, event: "AddressManagerChanged", logs: logs, sub: sub}, nil -} - -// WatchAddressManagerChanged is a free log subscription operation binding the contract event 0x399ded90cb5ed8d89ef7e76ff4af65c373f06d3bf5d7eef55f4228e7b702a18b. -// -// Solidity: event AddressManagerChanged(address indexed addressManager) -func (_ERC721Vault *ERC721VaultFilterer) WatchAddressManagerChanged(opts *bind.WatchOpts, sink chan<- *ERC721VaultAddressManagerChanged, addressManager []common.Address) (event.Subscription, error) { - - var addressManagerRule []interface{} - for _, addressManagerItem := range addressManager { - addressManagerRule = append(addressManagerRule, addressManagerItem) - } - - logs, sub, err := _ERC721Vault.contract.WatchLogs(opts, "AddressManagerChanged", addressManagerRule) - if err != nil { - return nil, err - } - return event.NewSubscription(func(quit <-chan struct{}) error { - defer sub.Unsubscribe() - for { - select { - case log := <-logs: - // New log arrived, parse the event and forward to the user - event := new(ERC721VaultAddressManagerChanged) - if err := _ERC721Vault.contract.UnpackLog(event, "AddressManagerChanged", log); err != nil { - return err - } - event.Raw = log - - select { - case sink <- event: - case err := <-sub.Err(): - return err - case <-quit: - return nil - } - case err := <-sub.Err(): - return err - case <-quit: - return nil - } - } - }), nil -} - -// ParseAddressManagerChanged is a log parse operation binding the contract event 0x399ded90cb5ed8d89ef7e76ff4af65c373f06d3bf5d7eef55f4228e7b702a18b. -// -// Solidity: event AddressManagerChanged(address indexed addressManager) -func (_ERC721Vault *ERC721VaultFilterer) ParseAddressManagerChanged(log types.Log) (*ERC721VaultAddressManagerChanged, error) { - event := new(ERC721VaultAddressManagerChanged) - if err := _ERC721Vault.contract.UnpackLog(event, "AddressManagerChanged", log); err != nil { - return nil, err - } - event.Raw = log - return event, nil -} - // ERC721VaultBridgedTokenDeployedIterator is returned from FilterBridgedTokenDeployed and is used to iterate over the raw logs and unpacked data for BridgedTokenDeployed events raised by the ERC721Vault contract. type ERC721VaultBridgedTokenDeployedIterator struct { Event *ERC721VaultBridgedTokenDeployed // Event containing the contract specifics and raw log diff --git a/packages/relayer/bindings/icrosschainsync/ICrossChainSync.go b/packages/relayer/bindings/icrosschainsync/ICrossChainSync.go index f14a5ba1b4..0f4c38f33c 100644 --- a/packages/relayer/bindings/icrosschainsync/ICrossChainSync.go +++ b/packages/relayer/bindings/icrosschainsync/ICrossChainSync.go @@ -29,9 +29,15 @@ var ( _ = abi.ConvertType ) +// ICrossChainSyncSnippet is an auto generated low-level Go binding around an user-defined struct. +type ICrossChainSyncSnippet struct { + BlockHash [32]byte + SignalRoot [32]byte +} + // ICrossChainSyncMetaData contains all meta data concerning the ICrossChainSync contract. var ICrossChainSyncMetaData = &bind.MetaData{ - ABI: "[{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint64\",\"name\":\"srcHeight\",\"type\":\"uint64\"},{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"blockHash\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"signalRoot\",\"type\":\"bytes32\"}],\"name\":\"CrossChainSynced\",\"type\":\"event\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"blockId\",\"type\":\"uint64\"}],\"name\":\"getCrossChainBlockHash\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"blockId\",\"type\":\"uint64\"}],\"name\":\"getCrossChainSignalRoot\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"}]", + ABI: "[{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint64\",\"name\":\"srcHeight\",\"type\":\"uint64\"},{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"blockHash\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"signalRoot\",\"type\":\"bytes32\"}],\"name\":\"CrossChainSynced\",\"type\":\"event\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"blockId\",\"type\":\"uint64\"}],\"name\":\"getSyncedSnippet\",\"outputs\":[{\"components\":[{\"internalType\":\"bytes32\",\"name\":\"blockHash\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"signalRoot\",\"type\":\"bytes32\"}],\"internalType\":\"structICrossChainSync.Snippet\",\"name\":\"snippet\",\"type\":\"tuple\"}],\"stateMutability\":\"view\",\"type\":\"function\"}]", } // ICrossChainSyncABI is the input ABI used to generate the binding from. @@ -180,66 +186,35 @@ func (_ICrossChainSync *ICrossChainSyncTransactorRaw) Transact(opts *bind.Transa return _ICrossChainSync.Contract.contract.Transact(opts, method, params...) } -// GetCrossChainBlockHash is a free data retrieval call binding the contract method 0xbdd6bc36. -// -// Solidity: function getCrossChainBlockHash(uint64 blockId) view returns(bytes32) -func (_ICrossChainSync *ICrossChainSyncCaller) GetCrossChainBlockHash(opts *bind.CallOpts, blockId uint64) ([32]byte, error) { - var out []interface{} - err := _ICrossChainSync.contract.Call(opts, &out, "getCrossChainBlockHash", blockId) - - if err != nil { - return *new([32]byte), err - } - - out0 := *abi.ConvertType(out[0], new([32]byte)).(*[32]byte) - - return out0, err - -} - -// GetCrossChainBlockHash is a free data retrieval call binding the contract method 0xbdd6bc36. -// -// Solidity: function getCrossChainBlockHash(uint64 blockId) view returns(bytes32) -func (_ICrossChainSync *ICrossChainSyncSession) GetCrossChainBlockHash(blockId uint64) ([32]byte, error) { - return _ICrossChainSync.Contract.GetCrossChainBlockHash(&_ICrossChainSync.CallOpts, blockId) -} - -// GetCrossChainBlockHash is a free data retrieval call binding the contract method 0xbdd6bc36. -// -// Solidity: function getCrossChainBlockHash(uint64 blockId) view returns(bytes32) -func (_ICrossChainSync *ICrossChainSyncCallerSession) GetCrossChainBlockHash(blockId uint64) ([32]byte, error) { - return _ICrossChainSync.Contract.GetCrossChainBlockHash(&_ICrossChainSync.CallOpts, blockId) -} - -// GetCrossChainSignalRoot is a free data retrieval call binding the contract method 0x0599d294. +// GetSyncedSnippet is a free data retrieval call binding the contract method 0x8cfb0459. // -// Solidity: function getCrossChainSignalRoot(uint64 blockId) view returns(bytes32) -func (_ICrossChainSync *ICrossChainSyncCaller) GetCrossChainSignalRoot(opts *bind.CallOpts, blockId uint64) ([32]byte, error) { +// Solidity: function getSyncedSnippet(uint64 blockId) view returns((bytes32,bytes32) snippet) +func (_ICrossChainSync *ICrossChainSyncCaller) GetSyncedSnippet(opts *bind.CallOpts, blockId uint64) (ICrossChainSyncSnippet, error) { var out []interface{} - err := _ICrossChainSync.contract.Call(opts, &out, "getCrossChainSignalRoot", blockId) + err := _ICrossChainSync.contract.Call(opts, &out, "getSyncedSnippet", blockId) if err != nil { - return *new([32]byte), err + return *new(ICrossChainSyncSnippet), err } - out0 := *abi.ConvertType(out[0], new([32]byte)).(*[32]byte) + out0 := *abi.ConvertType(out[0], new(ICrossChainSyncSnippet)).(*ICrossChainSyncSnippet) return out0, err } -// GetCrossChainSignalRoot is a free data retrieval call binding the contract method 0x0599d294. +// GetSyncedSnippet is a free data retrieval call binding the contract method 0x8cfb0459. // -// Solidity: function getCrossChainSignalRoot(uint64 blockId) view returns(bytes32) -func (_ICrossChainSync *ICrossChainSyncSession) GetCrossChainSignalRoot(blockId uint64) ([32]byte, error) { - return _ICrossChainSync.Contract.GetCrossChainSignalRoot(&_ICrossChainSync.CallOpts, blockId) +// Solidity: function getSyncedSnippet(uint64 blockId) view returns((bytes32,bytes32) snippet) +func (_ICrossChainSync *ICrossChainSyncSession) GetSyncedSnippet(blockId uint64) (ICrossChainSyncSnippet, error) { + return _ICrossChainSync.Contract.GetSyncedSnippet(&_ICrossChainSync.CallOpts, blockId) } -// GetCrossChainSignalRoot is a free data retrieval call binding the contract method 0x0599d294. +// GetSyncedSnippet is a free data retrieval call binding the contract method 0x8cfb0459. // -// Solidity: function getCrossChainSignalRoot(uint64 blockId) view returns(bytes32) -func (_ICrossChainSync *ICrossChainSyncCallerSession) GetCrossChainSignalRoot(blockId uint64) ([32]byte, error) { - return _ICrossChainSync.Contract.GetCrossChainSignalRoot(&_ICrossChainSync.CallOpts, blockId) +// Solidity: function getSyncedSnippet(uint64 blockId) view returns((bytes32,bytes32) snippet) +func (_ICrossChainSync *ICrossChainSyncCallerSession) GetSyncedSnippet(blockId uint64) (ICrossChainSyncSnippet, error) { + return _ICrossChainSync.Contract.GetSyncedSnippet(&_ICrossChainSync.CallOpts, blockId) } // ICrossChainSyncCrossChainSyncedIterator is returned from FilterCrossChainSynced and is used to iterate over the raw logs and unpacked data for CrossChainSynced events raised by the ICrossChainSync contract. diff --git a/packages/relayer/bindings/taikol1/TaikoL1.go b/packages/relayer/bindings/taikol1/TaikoL1.go index 09838474c5..af6e0a0dd8 100644 --- a/packages/relayer/bindings/taikol1/TaikoL1.go +++ b/packages/relayer/bindings/taikol1/TaikoL1.go @@ -29,13 +29,20 @@ var ( _ = abi.ConvertType ) +// ICrossChainSyncSnippet is an auto generated low-level Go binding around an user-defined struct. +type ICrossChainSyncSnippet struct { + BlockHash [32]byte + SignalRoot [32]byte +} + // ITierProviderTier is an auto generated low-level Go binding around an user-defined struct. type ITierProviderTier struct { - VerifierName [32]byte - ValidityBond *big.Int - ContestBond *big.Int - CooldownWindow *big.Int - ProvingWindow uint16 + VerifierName [32]byte + ValidityBond *big.Int + ContestBond *big.Int + CooldownWindow *big.Int + ProvingWindow uint16 + MaxBlocksToVerify uint8 } // TaikoDataBlock is an auto generated low-level Go binding around an user-defined struct. @@ -67,24 +74,20 @@ type TaikoDataBlockMetadata struct { // TaikoDataConfig is an auto generated low-level Go binding around an user-defined struct. type TaikoDataConfig struct { - ChainId *big.Int - RelaySignalRoot bool - BlockMaxProposals uint64 - BlockRingBufferSize uint64 - BlockMaxVerificationsPerTx uint64 - BlockMaxGasLimit uint32 - BlockFeeBaseGas uint32 - BlockMaxTxListBytes *big.Int - ProposerRewardPerSecond *big.Int - ProposerRewardMax *big.Int - LivenessBond *big.Int - EthDepositRingBufferSize *big.Int - EthDepositMinCountPerBlock uint64 - EthDepositMaxCountPerBlock uint64 - EthDepositMinAmount *big.Int - EthDepositMaxAmount *big.Int - EthDepositGas *big.Int - EthDepositMaxFee *big.Int + ChainId *big.Int + BlockMaxProposals uint64 + BlockRingBufferSize uint64 + MaxBlocksToVerifyPerProposal uint64 + BlockMaxGasLimit uint32 + BlockMaxTxListBytes *big.Int + LivenessBond *big.Int + EthDepositRingBufferSize *big.Int + EthDepositMinCountPerBlock uint64 + EthDepositMaxCountPerBlock uint64 + EthDepositMinAmount *big.Int + EthDepositMaxAmount *big.Int + EthDepositGas *big.Int + EthDepositMaxFee *big.Int } // TaikoDataEthDeposit is an auto generated low-level Go binding around an user-defined struct. @@ -110,6 +113,12 @@ type TaikoDataSlotB struct { LastVerifiedBlockId uint64 } +// TaikoDataSlotC is an auto generated low-level Go binding around an user-defined struct. +type TaikoDataSlotC struct { + AccumulatedReward *big.Int + LastProposedHeight uint64 +} + // TaikoDataStateVariables is an auto generated low-level Go binding around an user-defined struct. type TaikoDataStateVariables struct { GenesisHeight uint64 @@ -136,7 +145,7 @@ type TaikoDataTransition struct { // TaikoL1MetaData contains all meta data concerning the TaikoL1 contract. var TaikoL1MetaData = &bind.MetaData{ - ABI: "[{\"inputs\":[],\"name\":\"L1_ALREADY_CONTESTED\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"L1_ALREADY_CONTESTED\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"L1_ALREADY_PROVED\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"L1_ALREADY_PROVED\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"L1_ASSIGNED_PROVER_NOT_ALLOWED\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"L1_ASSIGNED_PROVER_NOT_ALLOWED\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"L1_ASSIGNMENT_EXPIRED\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"L1_ASSIGNMENT_EXPIRED\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"L1_ASSIGNMENT_INSUFFICIENT_FEE\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"L1_ASSIGNMENT_INSUFFICIENT_FEE\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"L1_ASSIGNMENT_INVALID_PARAMS\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"L1_ASSIGNMENT_INVALID_PARAMS\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"L1_ASSIGNMENT_INVALID_SIG\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"L1_ASSIGNMENT_INVALID_SIG\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"L1_BLOCK_MISMATCH\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"L1_BLOCK_MISMATCH\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"L1_BLOCK_MISMATCH\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"L1_BLOCK_MISMATCH\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"L1_INSUFFICIENT_TOKEN\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"L1_INVALID_ADDRESS\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"L1_INVALID_ADDRESS\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"L1_INVALID_BLOCK_ID\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"L1_INVALID_BLOCK_ID\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"L1_INVALID_BLOCK_ID\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"L1_INVALID_CONFIG\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"L1_INVALID_CONFIG\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"L1_INVALID_ETH_DEPOSIT\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"L1_INVALID_ETH_DEPOSIT\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"L1_INVALID_EVIDENCE\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"L1_INVALID_EVIDENCE\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"L1_INVALID_METADATA\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"L1_INVALID_PARAM\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"L1_INVALID_PROOF\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"L1_INVALID_PROPOSER\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"L1_INVALID_PROVER\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"L1_INVALID_PROVER_SIG\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"L1_INVALID_TIER\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"L1_INVALID_TIER\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"L1_NOT_ASSIGNED_PROVER\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"L1_NOT_ASSIGNED_PROVER\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"L1_TIER_NOT_FOUND\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"L1_TIER_NOT_FOUND\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"L1_TOO_MANY_BLOCKS\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"L1_TOO_MANY_BLOCKS\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"L1_TRANSITION_ID_ZERO\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"L1_TRANSITION_ID_ZERO\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"L1_TRANSITION_NOT_FOUND\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"L1_TRANSITION_NOT_FOUND\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"L1_TXLIST_INVALID_RANGE\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"L1_TXLIST_MISMATCH\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"L1_TXLIST_MISMATCH\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"L1_TXLIST_NOT_FOUND\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"L1_TXLIST_TOO_LARGE\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"L1_TXLIST_TOO_LARGE\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"L1_UNAUTHORIZED\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"L1_UNAUTHORIZED\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"L1_UNEXPECTED_TRANSITION_ID\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"L1_UNEXPECTED_TRANSITION_ID\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"L1_UNEXPECTED_TRANSITION_TIER\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"L1_UNEXPECTED_TRANSITION_TIER\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"RESOLVER_DENIED\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"RESOLVER_INVALID_ADDR\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"chainId\",\"type\":\"uint256\"},{\"internalType\":\"bytes32\",\"name\":\"name\",\"type\":\"bytes32\"}],\"name\":\"RESOLVER_ZERO_ADDR\",\"type\":\"error\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"addressManager\",\"type\":\"address\"}],\"name\":\"AddressManagerChanged\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"blockId\",\"type\":\"uint256\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"assignedProver\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint96\",\"name\":\"livenessBond\",\"type\":\"uint96\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"proverFee\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"reward\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint16\",\"name\":\"minTier\",\"type\":\"uint16\"},{\"components\":[{\"internalType\":\"bytes32\",\"name\":\"l1Hash\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"difficulty\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"txListHash\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"extraData\",\"type\":\"bytes32\"},{\"internalType\":\"uint64\",\"name\":\"id\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"timestamp\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"l1Height\",\"type\":\"uint64\"},{\"internalType\":\"uint32\",\"name\":\"gasLimit\",\"type\":\"uint32\"},{\"internalType\":\"address\",\"name\":\"coinbase\",\"type\":\"address\"},{\"components\":[{\"internalType\":\"address\",\"name\":\"recipient\",\"type\":\"address\"},{\"internalType\":\"uint96\",\"name\":\"amount\",\"type\":\"uint96\"},{\"internalType\":\"uint64\",\"name\":\"id\",\"type\":\"uint64\"}],\"internalType\":\"structTaikoData.EthDeposit[]\",\"name\":\"depositsProcessed\",\"type\":\"tuple[]\"}],\"indexed\":false,\"internalType\":\"structTaikoData.BlockMetadata\",\"name\":\"meta\",\"type\":\"tuple\"}],\"name\":\"BlockProposed\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"blockId\",\"type\":\"uint256\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"assignedProver\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint96\",\"name\":\"livenessBond\",\"type\":\"uint96\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"proverFee\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"reward\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint16\",\"name\":\"minTier\",\"type\":\"uint16\"},{\"components\":[{\"internalType\":\"bytes32\",\"name\":\"l1Hash\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"difficulty\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"txListHash\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"extraData\",\"type\":\"bytes32\"},{\"internalType\":\"uint64\",\"name\":\"id\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"timestamp\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"l1Height\",\"type\":\"uint64\"},{\"internalType\":\"uint32\",\"name\":\"gasLimit\",\"type\":\"uint32\"},{\"internalType\":\"address\",\"name\":\"coinbase\",\"type\":\"address\"},{\"components\":[{\"internalType\":\"address\",\"name\":\"recipient\",\"type\":\"address\"},{\"internalType\":\"uint96\",\"name\":\"amount\",\"type\":\"uint96\"},{\"internalType\":\"uint64\",\"name\":\"id\",\"type\":\"uint64\"}],\"internalType\":\"structTaikoData.EthDeposit[]\",\"name\":\"depositsProcessed\",\"type\":\"tuple[]\"}],\"indexed\":false,\"internalType\":\"structTaikoData.BlockMetadata\",\"name\":\"meta\",\"type\":\"tuple\"}],\"name\":\"BlockProposed\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"blockId\",\"type\":\"uint256\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"assignedProver\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"prover\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"blockHash\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"signalRoot\",\"type\":\"bytes32\"}],\"name\":\"BlockVerified\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"blockId\",\"type\":\"uint256\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"assignedProver\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"prover\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"blockHash\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"signalRoot\",\"type\":\"bytes32\"}],\"name\":\"BlockVerified\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint64\",\"name\":\"srcHeight\",\"type\":\"uint64\"},{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"blockHash\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"signalRoot\",\"type\":\"bytes32\"}],\"name\":\"CrossChainSynced\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint64\",\"name\":\"srcHeight\",\"type\":\"uint64\"},{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"blockHash\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"signalRoot\",\"type\":\"bytes32\"}],\"name\":\"CrossChainSynced\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"components\":[{\"internalType\":\"address\",\"name\":\"recipient\",\"type\":\"address\"},{\"internalType\":\"uint96\",\"name\":\"amount\",\"type\":\"uint96\"},{\"internalType\":\"uint64\",\"name\":\"id\",\"type\":\"uint64\"}],\"indexed\":false,\"internalType\":\"structTaikoData.EthDeposit\",\"name\":\"deposit\",\"type\":\"tuple\"}],\"name\":\"EthDeposited\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"components\":[{\"internalType\":\"address\",\"name\":\"recipient\",\"type\":\"address\"},{\"internalType\":\"uint96\",\"name\":\"amount\",\"type\":\"uint96\"},{\"internalType\":\"uint64\",\"name\":\"id\",\"type\":\"uint64\"}],\"indexed\":false,\"internalType\":\"structTaikoData.EthDeposit\",\"name\":\"deposit\",\"type\":\"tuple\"}],\"name\":\"EthDeposited\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint8\",\"name\":\"version\",\"type\":\"uint8\"}],\"name\":\"Initialized\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"previousOwner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"newOwner\",\"type\":\"address\"}],\"name\":\"OwnershipTransferred\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"bool\",\"name\":\"minted\",\"type\":\"bool\"}],\"name\":\"TokenCredited\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"bool\",\"name\":\"minted\",\"type\":\"bool\"}],\"name\":\"TokenCredited\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"bool\",\"name\":\"fromLocalBalance\",\"type\":\"bool\"}],\"name\":\"TokenDebited\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"bool\",\"name\":\"fromLocalBalance\",\"type\":\"bool\"}],\"name\":\"TokenDebited\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"TokenDeposited\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"TokenDeposited\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"TokenWithdrawn\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"TokenWithdrawn\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"TokenWithdrawnByOwner\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"TokenWithdrawnByOwner\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"blockId\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"parentHash\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"blockHash\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"signalRoot\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"contester\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint96\",\"name\":\"contestBond\",\"type\":\"uint96\"},{\"indexed\":false,\"internalType\":\"uint16\",\"name\":\"tier\",\"type\":\"uint16\"}],\"name\":\"TransitionContested\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"blockId\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"parentHash\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"blockHash\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"signalRoot\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"contester\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint96\",\"name\":\"contestBond\",\"type\":\"uint96\"},{\"indexed\":false,\"internalType\":\"uint16\",\"name\":\"tier\",\"type\":\"uint16\"}],\"name\":\"TransitionContested\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"blockId\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"parentHash\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"blockHash\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"signalRoot\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"prover\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint96\",\"name\":\"validityBond\",\"type\":\"uint96\"},{\"indexed\":false,\"internalType\":\"uint16\",\"name\":\"tier\",\"type\":\"uint16\"}],\"name\":\"TransitionProved\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"blockId\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"parentHash\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"blockHash\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"signalRoot\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"prover\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint96\",\"name\":\"validityBond\",\"type\":\"uint96\"},{\"indexed\":false,\"internalType\":\"uint16\",\"name\":\"tier\",\"type\":\"uint16\"}],\"name\":\"TransitionProved\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"addressManager\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"canDepositEthToL2\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"recipient\",\"type\":\"address\"}],\"name\":\"depositEtherToL2\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"depositTaikoToken\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"blockId\",\"type\":\"uint64\"}],\"name\":\"getBlock\",\"outputs\":[{\"components\":[{\"internalType\":\"bytes32\",\"name\":\"metaHash\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"assignedProver\",\"type\":\"address\"},{\"internalType\":\"uint96\",\"name\":\"livenessBond\",\"type\":\"uint96\"},{\"internalType\":\"uint64\",\"name\":\"blockId\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"proposedAt\",\"type\":\"uint64\"},{\"internalType\":\"uint32\",\"name\":\"nextTransitionId\",\"type\":\"uint32\"},{\"internalType\":\"uint32\",\"name\":\"verifiedTransitionId\",\"type\":\"uint32\"},{\"internalType\":\"uint16\",\"name\":\"minTier\",\"type\":\"uint16\"},{\"internalType\":\"bytes32[7]\",\"name\":\"__reserved\",\"type\":\"bytes32[7]\"}],\"internalType\":\"structTaikoData.Block\",\"name\":\"blk\",\"type\":\"tuple\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getConfig\",\"outputs\":[{\"components\":[{\"internalType\":\"uint256\",\"name\":\"chainId\",\"type\":\"uint256\"},{\"internalType\":\"bool\",\"name\":\"relaySignalRoot\",\"type\":\"bool\"},{\"internalType\":\"uint64\",\"name\":\"blockMaxProposals\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"blockRingBufferSize\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"maxBlocksToVerifyPerProposal\",\"type\":\"uint64\"},{\"internalType\":\"uint32\",\"name\":\"blockMaxGasLimit\",\"type\":\"uint32\"},{\"internalType\":\"uint32\",\"name\":\"blockFeeBaseGas\",\"type\":\"uint32\"},{\"internalType\":\"uint24\",\"name\":\"blockMaxTxListBytes\",\"type\":\"uint24\"},{\"internalType\":\"uint256\",\"name\":\"proposerRewardPerSecond\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"proposerRewardMax\",\"type\":\"uint256\"},{\"internalType\":\"uint96\",\"name\":\"livenessBond\",\"type\":\"uint96\"},{\"internalType\":\"uint256\",\"name\":\"ethDepositRingBufferSize\",\"type\":\"uint256\"},{\"internalType\":\"uint64\",\"name\":\"ethDepositMinCountPerBlock\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"ethDepositMaxCountPerBlock\",\"type\":\"uint64\"},{\"internalType\":\"uint96\",\"name\":\"ethDepositMinAmount\",\"type\":\"uint96\"},{\"internalType\":\"uint96\",\"name\":\"ethDepositMaxAmount\",\"type\":\"uint96\"},{\"internalType\":\"uint256\",\"name\":\"ethDepositGas\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"ethDepositMaxFee\",\"type\":\"uint256\"}],\"internalType\":\"structTaikoData.Config\",\"name\":\"\",\"type\":\"tuple\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"blockId\",\"type\":\"uint64\"}],\"name\":\"getCrossChainBlockHash\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"blockId\",\"type\":\"uint64\"}],\"name\":\"getCrossChainSignalRoot\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"rand\",\"type\":\"uint256\"}],\"name\":\"getMinTier\",\"outputs\":[{\"internalType\":\"uint16\",\"name\":\"\",\"type\":\"uint16\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getStateVariables\",\"outputs\":[{\"components\":[{\"internalType\":\"uint64\",\"name\":\"genesisHeight\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"genesisTimestamp\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"nextEthDepositToProcess\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"numEthDeposits\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"numBlocks\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"lastVerifiedBlockId\",\"type\":\"uint64\"}],\"internalType\":\"structTaikoData.StateVariables\",\"name\":\"\",\"type\":\"tuple\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"user\",\"type\":\"address\"}],\"name\":\"getTaikoTokenBalance\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint16\",\"name\":\"tierId\",\"type\":\"uint16\"}],\"name\":\"getTier\",\"outputs\":[{\"components\":[{\"internalType\":\"bytes32\",\"name\":\"verifierName\",\"type\":\"bytes32\"},{\"internalType\":\"uint96\",\"name\":\"validityBond\",\"type\":\"uint96\"},{\"internalType\":\"uint96\",\"name\":\"contestBond\",\"type\":\"uint96\"},{\"internalType\":\"uint24\",\"name\":\"cooldownWindow\",\"type\":\"uint24\"},{\"internalType\":\"uint16\",\"name\":\"provingWindow\",\"type\":\"uint16\"}],\"internalType\":\"structITierProvider.Tier\",\"name\":\"\",\"type\":\"tuple\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getTierIds\",\"outputs\":[{\"internalType\":\"uint16[]\",\"name\":\"\",\"type\":\"uint16[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"blockId\",\"type\":\"uint64\"},{\"internalType\":\"bytes32\",\"name\":\"parentHash\",\"type\":\"bytes32\"}],\"name\":\"getTransition\",\"outputs\":[{\"components\":[{\"internalType\":\"bytes32\",\"name\":\"key\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"blockHash\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"signalRoot\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"prover\",\"type\":\"address\"},{\"internalType\":\"uint96\",\"name\":\"validityBond\",\"type\":\"uint96\"},{\"internalType\":\"address\",\"name\":\"contester\",\"type\":\"address\"},{\"internalType\":\"uint96\",\"name\":\"contestBond\",\"type\":\"uint96\"},{\"internalType\":\"uint64\",\"name\":\"timestamp\",\"type\":\"uint64\"},{\"internalType\":\"uint16\",\"name\":\"tier\",\"type\":\"uint16\"},{\"internalType\":\"bytes32[4]\",\"name\":\"__reserved\",\"type\":\"bytes32[4]\"}],\"internalType\":\"structTaikoData.Transition\",\"name\":\"\",\"type\":\"tuple\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_addressManager\",\"type\":\"address\"},{\"internalType\":\"bytes32\",\"name\":\"_genesisBlockHash\",\"type\":\"bytes32\"}],\"name\":\"init\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"owner\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"ownerWithdrawTaikoToken\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"txListHash\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"extraData\",\"type\":\"bytes32\"},{\"internalType\":\"bytes\",\"name\":\"assignment\",\"type\":\"bytes\"},{\"internalType\":\"bytes\",\"name\":\"txList\",\"type\":\"bytes\"}],\"name\":\"proposeBlock\",\"outputs\":[{\"components\":[{\"internalType\":\"bytes32\",\"name\":\"l1Hash\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"difficulty\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"txListHash\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"extraData\",\"type\":\"bytes32\"},{\"internalType\":\"uint64\",\"name\":\"id\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"timestamp\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"l1Height\",\"type\":\"uint64\"},{\"internalType\":\"uint32\",\"name\":\"gasLimit\",\"type\":\"uint32\"},{\"internalType\":\"address\",\"name\":\"coinbase\",\"type\":\"address\"},{\"components\":[{\"internalType\":\"address\",\"name\":\"recipient\",\"type\":\"address\"},{\"internalType\":\"uint96\",\"name\":\"amount\",\"type\":\"uint96\"},{\"internalType\":\"uint64\",\"name\":\"id\",\"type\":\"uint64\"}],\"internalType\":\"structTaikoData.EthDeposit[]\",\"name\":\"depositsProcessed\",\"type\":\"tuple[]\"}],\"internalType\":\"structTaikoData.BlockMetadata\",\"name\":\"meta\",\"type\":\"tuple\"}],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"blockId\",\"type\":\"uint64\"},{\"internalType\":\"bytes\",\"name\":\"input\",\"type\":\"bytes\"}],\"name\":\"proveBlock\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"renounceOwnership\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"chainId\",\"type\":\"uint256\"},{\"internalType\":\"bytes32\",\"name\":\"name\",\"type\":\"bytes32\"},{\"internalType\":\"bool\",\"name\":\"allowZeroAddress\",\"type\":\"bool\"}],\"name\":\"resolve\",\"outputs\":[{\"internalType\":\"addresspayable\",\"name\":\"addr\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"name\",\"type\":\"bytes32\"},{\"internalType\":\"bool\",\"name\":\"allowZeroAddress\",\"type\":\"bool\"}],\"name\":\"resolve\",\"outputs\":[{\"internalType\":\"addresspayable\",\"name\":\"addr\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"newAddressManager\",\"type\":\"address\"}],\"name\":\"setAddressManager\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"state\",\"outputs\":[{\"components\":[{\"internalType\":\"uint64\",\"name\":\"genesisHeight\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"genesisTimestamp\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"numEthDeposits\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"nextEthDepositToProcess\",\"type\":\"uint64\"}],\"internalType\":\"structTaikoData.SlotA\",\"name\":\"slotA\",\"type\":\"tuple\"},{\"components\":[{\"internalType\":\"uint64\",\"name\":\"numBlocks\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"nextEthDepositToProcess\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"lastVerifiedAt\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"lastVerifiedBlockId\",\"type\":\"uint64\"}],\"internalType\":\"structTaikoData.SlotB\",\"name\":\"slotB\",\"type\":\"tuple\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"newOwner\",\"type\":\"address\"}],\"name\":\"transferOwnership\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"maxBlocks\",\"type\":\"uint64\"}],\"name\":\"verifyBlocks\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"withdrawTaikoToken\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"stateMutability\":\"payable\",\"type\":\"receive\"}]", + ABI: "[{\"inputs\":[],\"name\":\"L1_ALREADY_CONTESTED\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"L1_ALREADY_CONTESTED\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"L1_ALREADY_PROVED\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"L1_ALREADY_PROVED\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"L1_ASSIGNED_PROVER_NOT_ALLOWED\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"L1_ASSIGNED_PROVER_NOT_ALLOWED\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"L1_ASSIGNMENT_EXPIRED\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"L1_ASSIGNMENT_EXPIRED\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"L1_ASSIGNMENT_INSUFFICIENT_FEE\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"L1_ASSIGNMENT_INSUFFICIENT_FEE\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"L1_ASSIGNMENT_INVALID_PARAMS\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"L1_ASSIGNMENT_INVALID_PARAMS\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"L1_ASSIGNMENT_INVALID_SIG\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"L1_ASSIGNMENT_INVALID_SIG\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"L1_BLOCK_MISMATCH\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"L1_BLOCK_MISMATCH\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"L1_BLOCK_MISMATCH\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"L1_BLOCK_MISMATCH\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"L1_INSUFFICIENT_TOKEN\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"L1_INSUFFICIENT_TOKEN\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"L1_INVALID_ADDRESS\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"L1_INVALID_ADDRESS\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"L1_INVALID_BLOCK_ID\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"L1_INVALID_BLOCK_ID\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"L1_INVALID_BLOCK_ID\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"L1_INVALID_CONFIG\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"L1_INVALID_CONFIG\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"L1_INVALID_ETH_DEPOSIT\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"L1_INVALID_ETH_DEPOSIT\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"L1_INVALID_EVIDENCE\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"L1_INVALID_EVIDENCE\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"L1_INVALID_METADATA\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"L1_INVALID_PARAM\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"L1_INVALID_PROOF\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"L1_INVALID_PROPOSER\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"L1_INVALID_PROVER\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"L1_INVALID_PROVER_SIG\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"L1_INVALID_TIER\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"L1_INVALID_TIER\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"L1_NOT_ASSIGNED_PROVER\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"L1_NOT_ASSIGNED_PROVER\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"L1_TIER_NOT_FOUND\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"L1_TIER_NOT_FOUND\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"L1_TOO_MANY_BLOCKS\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"L1_TOO_MANY_BLOCKS\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"L1_TRANSITION_ID_ZERO\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"L1_TRANSITION_ID_ZERO\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"L1_TRANSITION_NOT_FOUND\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"L1_TRANSITION_NOT_FOUND\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"L1_TXLIST_INVALID_RANGE\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"L1_TXLIST_MISMATCH\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"L1_TXLIST_MISMATCH\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"L1_TXLIST_NOT_FOUND\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"L1_TXLIST_TOO_LARGE\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"L1_TXLIST_TOO_LARGE\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"L1_UNAUTHORIZED\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"L1_UNAUTHORIZED\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"L1_UNEXPECTED_TRANSITION_ID\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"L1_UNEXPECTED_TRANSITION_ID\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"L1_UNEXPECTED_TRANSITION_TIER\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"L1_UNEXPECTED_TRANSITION_TIER\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"RESOLVER_DENIED\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"RESOLVER_INVALID_MANAGER\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"chainId\",\"type\":\"uint256\"},{\"internalType\":\"bytes32\",\"name\":\"name\",\"type\":\"bytes32\"}],\"name\":\"RESOLVER_ZERO_ADDR\",\"type\":\"error\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"blockId\",\"type\":\"uint256\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"assignedProver\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint96\",\"name\":\"livenessBond\",\"type\":\"uint96\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"proverFee\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint16\",\"name\":\"minTier\",\"type\":\"uint16\"},{\"components\":[{\"internalType\":\"bytes32\",\"name\":\"l1Hash\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"difficulty\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"txListHash\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"extraData\",\"type\":\"bytes32\"},{\"internalType\":\"uint64\",\"name\":\"id\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"timestamp\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"l1Height\",\"type\":\"uint64\"},{\"internalType\":\"uint32\",\"name\":\"gasLimit\",\"type\":\"uint32\"},{\"internalType\":\"address\",\"name\":\"coinbase\",\"type\":\"address\"},{\"components\":[{\"internalType\":\"address\",\"name\":\"recipient\",\"type\":\"address\"},{\"internalType\":\"uint96\",\"name\":\"amount\",\"type\":\"uint96\"},{\"internalType\":\"uint64\",\"name\":\"id\",\"type\":\"uint64\"}],\"internalType\":\"structTaikoData.EthDeposit[]\",\"name\":\"depositsProcessed\",\"type\":\"tuple[]\"}],\"indexed\":false,\"internalType\":\"structTaikoData.BlockMetadata\",\"name\":\"meta\",\"type\":\"tuple\"}],\"name\":\"BlockProposed\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"blockId\",\"type\":\"uint256\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"assignedProver\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint96\",\"name\":\"livenessBond\",\"type\":\"uint96\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"proverFee\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint16\",\"name\":\"minTier\",\"type\":\"uint16\"},{\"components\":[{\"internalType\":\"bytes32\",\"name\":\"l1Hash\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"difficulty\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"txListHash\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"extraData\",\"type\":\"bytes32\"},{\"internalType\":\"uint64\",\"name\":\"id\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"timestamp\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"l1Height\",\"type\":\"uint64\"},{\"internalType\":\"uint32\",\"name\":\"gasLimit\",\"type\":\"uint32\"},{\"internalType\":\"address\",\"name\":\"coinbase\",\"type\":\"address\"},{\"components\":[{\"internalType\":\"address\",\"name\":\"recipient\",\"type\":\"address\"},{\"internalType\":\"uint96\",\"name\":\"amount\",\"type\":\"uint96\"},{\"internalType\":\"uint64\",\"name\":\"id\",\"type\":\"uint64\"}],\"internalType\":\"structTaikoData.EthDeposit[]\",\"name\":\"depositsProcessed\",\"type\":\"tuple[]\"}],\"indexed\":false,\"internalType\":\"structTaikoData.BlockMetadata\",\"name\":\"meta\",\"type\":\"tuple\"}],\"name\":\"BlockProposed\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"blockId\",\"type\":\"uint256\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"assignedProver\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"prover\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"blockHash\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"signalRoot\",\"type\":\"bytes32\"}],\"name\":\"BlockVerified\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"blockId\",\"type\":\"uint256\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"assignedProver\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"prover\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"blockHash\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"signalRoot\",\"type\":\"bytes32\"}],\"name\":\"BlockVerified\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint64\",\"name\":\"srcHeight\",\"type\":\"uint64\"},{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"blockHash\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"signalRoot\",\"type\":\"bytes32\"}],\"name\":\"CrossChainSynced\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint64\",\"name\":\"srcHeight\",\"type\":\"uint64\"},{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"blockHash\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"signalRoot\",\"type\":\"bytes32\"}],\"name\":\"CrossChainSynced\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"components\":[{\"internalType\":\"address\",\"name\":\"recipient\",\"type\":\"address\"},{\"internalType\":\"uint96\",\"name\":\"amount\",\"type\":\"uint96\"},{\"internalType\":\"uint64\",\"name\":\"id\",\"type\":\"uint64\"}],\"indexed\":false,\"internalType\":\"structTaikoData.EthDeposit\",\"name\":\"deposit\",\"type\":\"tuple\"}],\"name\":\"EthDeposited\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"components\":[{\"internalType\":\"address\",\"name\":\"recipient\",\"type\":\"address\"},{\"internalType\":\"uint96\",\"name\":\"amount\",\"type\":\"uint96\"},{\"internalType\":\"uint64\",\"name\":\"id\",\"type\":\"uint64\"}],\"indexed\":false,\"internalType\":\"structTaikoData.EthDeposit\",\"name\":\"deposit\",\"type\":\"tuple\"}],\"name\":\"EthDeposited\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint8\",\"name\":\"version\",\"type\":\"uint8\"}],\"name\":\"Initialized\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"previousOwner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"newOwner\",\"type\":\"address\"}],\"name\":\"OwnershipTransferred\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"bool\",\"name\":\"minted\",\"type\":\"bool\"}],\"name\":\"TokenCredited\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"bool\",\"name\":\"minted\",\"type\":\"bool\"}],\"name\":\"TokenCredited\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"bool\",\"name\":\"fromLocalBalance\",\"type\":\"bool\"}],\"name\":\"TokenDebited\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"bool\",\"name\":\"fromLocalBalance\",\"type\":\"bool\"}],\"name\":\"TokenDebited\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"TokenDeposited\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"TokenDeposited\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"TokenWithdrawn\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"TokenWithdrawn\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"TokenWithdrawnByOwner\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"TokenWithdrawnByOwner\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"blockId\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"parentHash\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"blockHash\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"signalRoot\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"contester\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint96\",\"name\":\"contestBond\",\"type\":\"uint96\"},{\"indexed\":false,\"internalType\":\"uint16\",\"name\":\"tier\",\"type\":\"uint16\"}],\"name\":\"TransitionContested\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"blockId\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"parentHash\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"blockHash\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"signalRoot\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"contester\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint96\",\"name\":\"contestBond\",\"type\":\"uint96\"},{\"indexed\":false,\"internalType\":\"uint16\",\"name\":\"tier\",\"type\":\"uint16\"}],\"name\":\"TransitionContested\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"blockId\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"parentHash\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"blockHash\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"signalRoot\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"prover\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint96\",\"name\":\"validityBond\",\"type\":\"uint96\"},{\"indexed\":false,\"internalType\":\"uint16\",\"name\":\"tier\",\"type\":\"uint16\"}],\"name\":\"TransitionProved\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"blockId\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"parentHash\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"blockHash\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"signalRoot\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"prover\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint96\",\"name\":\"validityBond\",\"type\":\"uint96\"},{\"indexed\":false,\"internalType\":\"uint16\",\"name\":\"tier\",\"type\":\"uint16\"}],\"name\":\"TransitionProved\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"addressManager\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"canDepositEthToL2\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"recipient\",\"type\":\"address\"}],\"name\":\"depositEtherToL2\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"depositTaikoToken\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"blockId\",\"type\":\"uint64\"}],\"name\":\"getBlock\",\"outputs\":[{\"components\":[{\"internalType\":\"bytes32\",\"name\":\"metaHash\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"assignedProver\",\"type\":\"address\"},{\"internalType\":\"uint96\",\"name\":\"livenessBond\",\"type\":\"uint96\"},{\"internalType\":\"uint64\",\"name\":\"blockId\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"proposedAt\",\"type\":\"uint64\"},{\"internalType\":\"uint32\",\"name\":\"nextTransitionId\",\"type\":\"uint32\"},{\"internalType\":\"uint32\",\"name\":\"verifiedTransitionId\",\"type\":\"uint32\"},{\"internalType\":\"uint16\",\"name\":\"minTier\",\"type\":\"uint16\"},{\"internalType\":\"bytes32[7]\",\"name\":\"__reserved\",\"type\":\"bytes32[7]\"}],\"internalType\":\"structTaikoData.Block\",\"name\":\"blk\",\"type\":\"tuple\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getConfig\",\"outputs\":[{\"components\":[{\"internalType\":\"uint256\",\"name\":\"chainId\",\"type\":\"uint256\"},{\"internalType\":\"uint64\",\"name\":\"blockMaxProposals\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"blockRingBufferSize\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"maxBlocksToVerifyPerProposal\",\"type\":\"uint64\"},{\"internalType\":\"uint32\",\"name\":\"blockMaxGasLimit\",\"type\":\"uint32\"},{\"internalType\":\"uint24\",\"name\":\"blockMaxTxListBytes\",\"type\":\"uint24\"},{\"internalType\":\"uint96\",\"name\":\"livenessBond\",\"type\":\"uint96\"},{\"internalType\":\"uint256\",\"name\":\"ethDepositRingBufferSize\",\"type\":\"uint256\"},{\"internalType\":\"uint64\",\"name\":\"ethDepositMinCountPerBlock\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"ethDepositMaxCountPerBlock\",\"type\":\"uint64\"},{\"internalType\":\"uint96\",\"name\":\"ethDepositMinAmount\",\"type\":\"uint96\"},{\"internalType\":\"uint96\",\"name\":\"ethDepositMaxAmount\",\"type\":\"uint96\"},{\"internalType\":\"uint256\",\"name\":\"ethDepositGas\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"ethDepositMaxFee\",\"type\":\"uint256\"}],\"internalType\":\"structTaikoData.Config\",\"name\":\"\",\"type\":\"tuple\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"rand\",\"type\":\"uint256\"}],\"name\":\"getMinTier\",\"outputs\":[{\"internalType\":\"uint16\",\"name\":\"\",\"type\":\"uint16\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getStateVariables\",\"outputs\":[{\"components\":[{\"internalType\":\"uint64\",\"name\":\"genesisHeight\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"genesisTimestamp\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"nextEthDepositToProcess\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"numEthDeposits\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"numBlocks\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"lastVerifiedBlockId\",\"type\":\"uint64\"}],\"internalType\":\"structTaikoData.StateVariables\",\"name\":\"\",\"type\":\"tuple\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"blockId\",\"type\":\"uint64\"}],\"name\":\"getSyncedSnippet\",\"outputs\":[{\"components\":[{\"internalType\":\"bytes32\",\"name\":\"blockHash\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"signalRoot\",\"type\":\"bytes32\"}],\"internalType\":\"structICrossChainSync.Snippet\",\"name\":\"data\",\"type\":\"tuple\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"user\",\"type\":\"address\"}],\"name\":\"getTaikoTokenBalance\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint16\",\"name\":\"tierId\",\"type\":\"uint16\"}],\"name\":\"getTier\",\"outputs\":[{\"components\":[{\"internalType\":\"bytes32\",\"name\":\"verifierName\",\"type\":\"bytes32\"},{\"internalType\":\"uint96\",\"name\":\"validityBond\",\"type\":\"uint96\"},{\"internalType\":\"uint96\",\"name\":\"contestBond\",\"type\":\"uint96\"},{\"internalType\":\"uint24\",\"name\":\"cooldownWindow\",\"type\":\"uint24\"},{\"internalType\":\"uint16\",\"name\":\"provingWindow\",\"type\":\"uint16\"},{\"internalType\":\"uint8\",\"name\":\"maxBlocksToVerify\",\"type\":\"uint8\"}],\"internalType\":\"structITierProvider.Tier\",\"name\":\"\",\"type\":\"tuple\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getTierIds\",\"outputs\":[{\"internalType\":\"uint16[]\",\"name\":\"\",\"type\":\"uint16[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"blockId\",\"type\":\"uint64\"},{\"internalType\":\"bytes32\",\"name\":\"parentHash\",\"type\":\"bytes32\"}],\"name\":\"getTransition\",\"outputs\":[{\"components\":[{\"internalType\":\"bytes32\",\"name\":\"key\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"blockHash\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"signalRoot\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"prover\",\"type\":\"address\"},{\"internalType\":\"uint96\",\"name\":\"validityBond\",\"type\":\"uint96\"},{\"internalType\":\"address\",\"name\":\"contester\",\"type\":\"address\"},{\"internalType\":\"uint96\",\"name\":\"contestBond\",\"type\":\"uint96\"},{\"internalType\":\"uint64\",\"name\":\"timestamp\",\"type\":\"uint64\"},{\"internalType\":\"uint16\",\"name\":\"tier\",\"type\":\"uint16\"},{\"internalType\":\"bytes32[4]\",\"name\":\"__reserved\",\"type\":\"bytes32[4]\"}],\"internalType\":\"structTaikoData.Transition\",\"name\":\"\",\"type\":\"tuple\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_addressManager\",\"type\":\"address\"},{\"internalType\":\"bytes32\",\"name\":\"_genesisBlockHash\",\"type\":\"bytes32\"}],\"name\":\"init\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"isConfigValid\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"owner\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"ownerWithdrawTaikoToken\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"txListHash\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"extraData\",\"type\":\"bytes32\"},{\"internalType\":\"bytes\",\"name\":\"assignment\",\"type\":\"bytes\"},{\"internalType\":\"bytes\",\"name\":\"txList\",\"type\":\"bytes\"}],\"name\":\"proposeBlock\",\"outputs\":[{\"components\":[{\"internalType\":\"bytes32\",\"name\":\"l1Hash\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"difficulty\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"txListHash\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"extraData\",\"type\":\"bytes32\"},{\"internalType\":\"uint64\",\"name\":\"id\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"timestamp\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"l1Height\",\"type\":\"uint64\"},{\"internalType\":\"uint32\",\"name\":\"gasLimit\",\"type\":\"uint32\"},{\"internalType\":\"address\",\"name\":\"coinbase\",\"type\":\"address\"},{\"components\":[{\"internalType\":\"address\",\"name\":\"recipient\",\"type\":\"address\"},{\"internalType\":\"uint96\",\"name\":\"amount\",\"type\":\"uint96\"},{\"internalType\":\"uint64\",\"name\":\"id\",\"type\":\"uint64\"}],\"internalType\":\"structTaikoData.EthDeposit[]\",\"name\":\"depositsProcessed\",\"type\":\"tuple[]\"}],\"internalType\":\"structTaikoData.BlockMetadata\",\"name\":\"meta\",\"type\":\"tuple\"}],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"blockId\",\"type\":\"uint64\"},{\"internalType\":\"bytes\",\"name\":\"input\",\"type\":\"bytes\"}],\"name\":\"proveBlock\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"renounceOwnership\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"chainId\",\"type\":\"uint256\"},{\"internalType\":\"bytes32\",\"name\":\"name\",\"type\":\"bytes32\"},{\"internalType\":\"bool\",\"name\":\"allowZeroAddress\",\"type\":\"bool\"}],\"name\":\"resolve\",\"outputs\":[{\"internalType\":\"addresspayable\",\"name\":\"addr\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"name\",\"type\":\"bytes32\"},{\"internalType\":\"bool\",\"name\":\"allowZeroAddress\",\"type\":\"bool\"}],\"name\":\"resolve\",\"outputs\":[{\"internalType\":\"addresspayable\",\"name\":\"addr\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"state\",\"outputs\":[{\"components\":[{\"internalType\":\"uint64\",\"name\":\"genesisHeight\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"genesisTimestamp\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"numEthDeposits\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"nextEthDepositToProcess\",\"type\":\"uint64\"}],\"internalType\":\"structTaikoData.SlotA\",\"name\":\"slotA\",\"type\":\"tuple\"},{\"components\":[{\"internalType\":\"uint64\",\"name\":\"numBlocks\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"nextEthDepositToProcess\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"lastVerifiedAt\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"lastVerifiedBlockId\",\"type\":\"uint64\"}],\"internalType\":\"structTaikoData.SlotB\",\"name\":\"slotB\",\"type\":\"tuple\"},{\"components\":[{\"internalType\":\"uint128\",\"name\":\"accumulatedReward\",\"type\":\"uint128\"},{\"internalType\":\"uint64\",\"name\":\"lastProposedHeight\",\"type\":\"uint64\"}],\"internalType\":\"structTaikoData.SlotC\",\"name\":\"slotC\",\"type\":\"tuple\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"newOwner\",\"type\":\"address\"}],\"name\":\"transferOwnership\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"maxBlocksToVerify\",\"type\":\"uint64\"}],\"name\":\"verifyBlocks\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"withdrawTaikoToken\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"stateMutability\":\"payable\",\"type\":\"receive\"}]", } // TaikoL1ABI is the input ABI used to generate the binding from. @@ -380,7 +389,7 @@ func (_TaikoL1 *TaikoL1CallerSession) GetBlock(blockId uint64) (TaikoDataBlock, // GetConfig is a free data retrieval call binding the contract method 0xc3f909d4. // -// Solidity: function getConfig() pure returns((uint256,bool,uint64,uint64,uint64,uint32,uint32,uint24,uint256,uint256,uint96,uint256,uint64,uint64,uint96,uint96,uint256,uint256)) +// Solidity: function getConfig() pure returns((uint256,uint64,uint64,uint64,uint32,uint24,uint96,uint256,uint64,uint64,uint96,uint96,uint256,uint256)) func (_TaikoL1 *TaikoL1Caller) GetConfig(opts *bind.CallOpts) (TaikoDataConfig, error) { var out []interface{} err := _TaikoL1.contract.Call(opts, &out, "getConfig") @@ -397,80 +406,18 @@ func (_TaikoL1 *TaikoL1Caller) GetConfig(opts *bind.CallOpts) (TaikoDataConfig, // GetConfig is a free data retrieval call binding the contract method 0xc3f909d4. // -// Solidity: function getConfig() pure returns((uint256,bool,uint64,uint64,uint64,uint32,uint32,uint24,uint256,uint256,uint96,uint256,uint64,uint64,uint96,uint96,uint256,uint256)) +// Solidity: function getConfig() pure returns((uint256,uint64,uint64,uint64,uint32,uint24,uint96,uint256,uint64,uint64,uint96,uint96,uint256,uint256)) func (_TaikoL1 *TaikoL1Session) GetConfig() (TaikoDataConfig, error) { return _TaikoL1.Contract.GetConfig(&_TaikoL1.CallOpts) } // GetConfig is a free data retrieval call binding the contract method 0xc3f909d4. // -// Solidity: function getConfig() pure returns((uint256,bool,uint64,uint64,uint64,uint32,uint32,uint24,uint256,uint256,uint96,uint256,uint64,uint64,uint96,uint96,uint256,uint256)) +// Solidity: function getConfig() pure returns((uint256,uint64,uint64,uint64,uint32,uint24,uint96,uint256,uint64,uint64,uint96,uint96,uint256,uint256)) func (_TaikoL1 *TaikoL1CallerSession) GetConfig() (TaikoDataConfig, error) { return _TaikoL1.Contract.GetConfig(&_TaikoL1.CallOpts) } -// GetCrossChainBlockHash is a free data retrieval call binding the contract method 0xbdd6bc36. -// -// Solidity: function getCrossChainBlockHash(uint64 blockId) view returns(bytes32) -func (_TaikoL1 *TaikoL1Caller) GetCrossChainBlockHash(opts *bind.CallOpts, blockId uint64) ([32]byte, error) { - var out []interface{} - err := _TaikoL1.contract.Call(opts, &out, "getCrossChainBlockHash", blockId) - - if err != nil { - return *new([32]byte), err - } - - out0 := *abi.ConvertType(out[0], new([32]byte)).(*[32]byte) - - return out0, err - -} - -// GetCrossChainBlockHash is a free data retrieval call binding the contract method 0xbdd6bc36. -// -// Solidity: function getCrossChainBlockHash(uint64 blockId) view returns(bytes32) -func (_TaikoL1 *TaikoL1Session) GetCrossChainBlockHash(blockId uint64) ([32]byte, error) { - return _TaikoL1.Contract.GetCrossChainBlockHash(&_TaikoL1.CallOpts, blockId) -} - -// GetCrossChainBlockHash is a free data retrieval call binding the contract method 0xbdd6bc36. -// -// Solidity: function getCrossChainBlockHash(uint64 blockId) view returns(bytes32) -func (_TaikoL1 *TaikoL1CallerSession) GetCrossChainBlockHash(blockId uint64) ([32]byte, error) { - return _TaikoL1.Contract.GetCrossChainBlockHash(&_TaikoL1.CallOpts, blockId) -} - -// GetCrossChainSignalRoot is a free data retrieval call binding the contract method 0x0599d294. -// -// Solidity: function getCrossChainSignalRoot(uint64 blockId) view returns(bytes32) -func (_TaikoL1 *TaikoL1Caller) GetCrossChainSignalRoot(opts *bind.CallOpts, blockId uint64) ([32]byte, error) { - var out []interface{} - err := _TaikoL1.contract.Call(opts, &out, "getCrossChainSignalRoot", blockId) - - if err != nil { - return *new([32]byte), err - } - - out0 := *abi.ConvertType(out[0], new([32]byte)).(*[32]byte) - - return out0, err - -} - -// GetCrossChainSignalRoot is a free data retrieval call binding the contract method 0x0599d294. -// -// Solidity: function getCrossChainSignalRoot(uint64 blockId) view returns(bytes32) -func (_TaikoL1 *TaikoL1Session) GetCrossChainSignalRoot(blockId uint64) ([32]byte, error) { - return _TaikoL1.Contract.GetCrossChainSignalRoot(&_TaikoL1.CallOpts, blockId) -} - -// GetCrossChainSignalRoot is a free data retrieval call binding the contract method 0x0599d294. -// -// Solidity: function getCrossChainSignalRoot(uint64 blockId) view returns(bytes32) -func (_TaikoL1 *TaikoL1CallerSession) GetCrossChainSignalRoot(blockId uint64) ([32]byte, error) { - return _TaikoL1.Contract.GetCrossChainSignalRoot(&_TaikoL1.CallOpts, blockId) -} - // GetMinTier is a free data retrieval call binding the contract method 0x59ab4e23. // // Solidity: function getMinTier(uint256 rand) view returns(uint16) @@ -533,6 +480,37 @@ func (_TaikoL1 *TaikoL1CallerSession) GetStateVariables() (TaikoDataStateVariabl return _TaikoL1.Contract.GetStateVariables(&_TaikoL1.CallOpts) } +// GetSyncedSnippet is a free data retrieval call binding the contract method 0x8cfb0459. +// +// Solidity: function getSyncedSnippet(uint64 blockId) view returns((bytes32,bytes32) data) +func (_TaikoL1 *TaikoL1Caller) GetSyncedSnippet(opts *bind.CallOpts, blockId uint64) (ICrossChainSyncSnippet, error) { + var out []interface{} + err := _TaikoL1.contract.Call(opts, &out, "getSyncedSnippet", blockId) + + if err != nil { + return *new(ICrossChainSyncSnippet), err + } + + out0 := *abi.ConvertType(out[0], new(ICrossChainSyncSnippet)).(*ICrossChainSyncSnippet) + + return out0, err + +} + +// GetSyncedSnippet is a free data retrieval call binding the contract method 0x8cfb0459. +// +// Solidity: function getSyncedSnippet(uint64 blockId) view returns((bytes32,bytes32) data) +func (_TaikoL1 *TaikoL1Session) GetSyncedSnippet(blockId uint64) (ICrossChainSyncSnippet, error) { + return _TaikoL1.Contract.GetSyncedSnippet(&_TaikoL1.CallOpts, blockId) +} + +// GetSyncedSnippet is a free data retrieval call binding the contract method 0x8cfb0459. +// +// Solidity: function getSyncedSnippet(uint64 blockId) view returns((bytes32,bytes32) data) +func (_TaikoL1 *TaikoL1CallerSession) GetSyncedSnippet(blockId uint64) (ICrossChainSyncSnippet, error) { + return _TaikoL1.Contract.GetSyncedSnippet(&_TaikoL1.CallOpts, blockId) +} + // GetTaikoTokenBalance is a free data retrieval call binding the contract method 0x8dff9cea. // // Solidity: function getTaikoTokenBalance(address user) view returns(uint256) @@ -566,7 +544,7 @@ func (_TaikoL1 *TaikoL1CallerSession) GetTaikoTokenBalance(user common.Address) // GetTier is a free data retrieval call binding the contract method 0x576c3de7. // -// Solidity: function getTier(uint16 tierId) view returns((bytes32,uint96,uint96,uint24,uint16)) +// Solidity: function getTier(uint16 tierId) view returns((bytes32,uint96,uint96,uint24,uint16,uint8)) func (_TaikoL1 *TaikoL1Caller) GetTier(opts *bind.CallOpts, tierId uint16) (ITierProviderTier, error) { var out []interface{} err := _TaikoL1.contract.Call(opts, &out, "getTier", tierId) @@ -583,14 +561,14 @@ func (_TaikoL1 *TaikoL1Caller) GetTier(opts *bind.CallOpts, tierId uint16) (ITie // GetTier is a free data retrieval call binding the contract method 0x576c3de7. // -// Solidity: function getTier(uint16 tierId) view returns((bytes32,uint96,uint96,uint24,uint16)) +// Solidity: function getTier(uint16 tierId) view returns((bytes32,uint96,uint96,uint24,uint16,uint8)) func (_TaikoL1 *TaikoL1Session) GetTier(tierId uint16) (ITierProviderTier, error) { return _TaikoL1.Contract.GetTier(&_TaikoL1.CallOpts, tierId) } // GetTier is a free data retrieval call binding the contract method 0x576c3de7. // -// Solidity: function getTier(uint16 tierId) view returns((bytes32,uint96,uint96,uint24,uint16)) +// Solidity: function getTier(uint16 tierId) view returns((bytes32,uint96,uint96,uint24,uint16,uint8)) func (_TaikoL1 *TaikoL1CallerSession) GetTier(tierId uint16) (ITierProviderTier, error) { return _TaikoL1.Contract.GetTier(&_TaikoL1.CallOpts, tierId) } @@ -657,6 +635,37 @@ func (_TaikoL1 *TaikoL1CallerSession) GetTransition(blockId uint64, parentHash [ return _TaikoL1.Contract.GetTransition(&_TaikoL1.CallOpts, blockId, parentHash) } +// IsConfigValid is a free data retrieval call binding the contract method 0xe3f1bdc5. +// +// Solidity: function isConfigValid() pure returns(bool) +func (_TaikoL1 *TaikoL1Caller) IsConfigValid(opts *bind.CallOpts) (bool, error) { + var out []interface{} + err := _TaikoL1.contract.Call(opts, &out, "isConfigValid") + + if err != nil { + return *new(bool), err + } + + out0 := *abi.ConvertType(out[0], new(bool)).(*bool) + + return out0, err + +} + +// IsConfigValid is a free data retrieval call binding the contract method 0xe3f1bdc5. +// +// Solidity: function isConfigValid() pure returns(bool) +func (_TaikoL1 *TaikoL1Session) IsConfigValid() (bool, error) { + return _TaikoL1.Contract.IsConfigValid(&_TaikoL1.CallOpts) +} + +// IsConfigValid is a free data retrieval call binding the contract method 0xe3f1bdc5. +// +// Solidity: function isConfigValid() pure returns(bool) +func (_TaikoL1 *TaikoL1CallerSession) IsConfigValid() (bool, error) { + return _TaikoL1.Contract.IsConfigValid(&_TaikoL1.CallOpts) +} + // Owner is a free data retrieval call binding the contract method 0x8da5cb5b. // // Solidity: function owner() view returns(address) @@ -752,10 +761,11 @@ func (_TaikoL1 *TaikoL1CallerSession) Resolve0(name [32]byte, allowZeroAddress b // State is a free data retrieval call binding the contract method 0xc19d93fb. // -// Solidity: function state() view returns((uint64,uint64,uint64,uint64) slotA, (uint64,uint64,uint64,uint64) slotB) +// Solidity: function state() view returns((uint64,uint64,uint64,uint64) slotA, (uint64,uint64,uint64,uint64) slotB, (uint128,uint64) slotC) func (_TaikoL1 *TaikoL1Caller) State(opts *bind.CallOpts) (struct { SlotA TaikoDataSlotA SlotB TaikoDataSlotB + SlotC TaikoDataSlotC }, error) { var out []interface{} err := _TaikoL1.contract.Call(opts, &out, "state") @@ -763,6 +773,7 @@ func (_TaikoL1 *TaikoL1Caller) State(opts *bind.CallOpts) (struct { outstruct := new(struct { SlotA TaikoDataSlotA SlotB TaikoDataSlotB + SlotC TaikoDataSlotC }) if err != nil { return *outstruct, err @@ -770,6 +781,7 @@ func (_TaikoL1 *TaikoL1Caller) State(opts *bind.CallOpts) (struct { outstruct.SlotA = *abi.ConvertType(out[0], new(TaikoDataSlotA)).(*TaikoDataSlotA) outstruct.SlotB = *abi.ConvertType(out[1], new(TaikoDataSlotB)).(*TaikoDataSlotB) + outstruct.SlotC = *abi.ConvertType(out[2], new(TaikoDataSlotC)).(*TaikoDataSlotC) return *outstruct, err @@ -777,20 +789,22 @@ func (_TaikoL1 *TaikoL1Caller) State(opts *bind.CallOpts) (struct { // State is a free data retrieval call binding the contract method 0xc19d93fb. // -// Solidity: function state() view returns((uint64,uint64,uint64,uint64) slotA, (uint64,uint64,uint64,uint64) slotB) +// Solidity: function state() view returns((uint64,uint64,uint64,uint64) slotA, (uint64,uint64,uint64,uint64) slotB, (uint128,uint64) slotC) func (_TaikoL1 *TaikoL1Session) State() (struct { SlotA TaikoDataSlotA SlotB TaikoDataSlotB + SlotC TaikoDataSlotC }, error) { return _TaikoL1.Contract.State(&_TaikoL1.CallOpts) } // State is a free data retrieval call binding the contract method 0xc19d93fb. // -// Solidity: function state() view returns((uint64,uint64,uint64,uint64) slotA, (uint64,uint64,uint64,uint64) slotB) +// Solidity: function state() view returns((uint64,uint64,uint64,uint64) slotA, (uint64,uint64,uint64,uint64) slotB, (uint128,uint64) slotC) func (_TaikoL1 *TaikoL1CallerSession) State() (struct { SlotA TaikoDataSlotA SlotB TaikoDataSlotB + SlotC TaikoDataSlotC }, error) { return _TaikoL1.Contract.State(&_TaikoL1.CallOpts) } @@ -942,27 +956,6 @@ func (_TaikoL1 *TaikoL1TransactorSession) RenounceOwnership() (*types.Transactio return _TaikoL1.Contract.RenounceOwnership(&_TaikoL1.TransactOpts) } -// SetAddressManager is a paid mutator transaction binding the contract method 0x0652b57a. -// -// Solidity: function setAddressManager(address newAddressManager) returns() -func (_TaikoL1 *TaikoL1Transactor) SetAddressManager(opts *bind.TransactOpts, newAddressManager common.Address) (*types.Transaction, error) { - return _TaikoL1.contract.Transact(opts, "setAddressManager", newAddressManager) -} - -// SetAddressManager is a paid mutator transaction binding the contract method 0x0652b57a. -// -// Solidity: function setAddressManager(address newAddressManager) returns() -func (_TaikoL1 *TaikoL1Session) SetAddressManager(newAddressManager common.Address) (*types.Transaction, error) { - return _TaikoL1.Contract.SetAddressManager(&_TaikoL1.TransactOpts, newAddressManager) -} - -// SetAddressManager is a paid mutator transaction binding the contract method 0x0652b57a. -// -// Solidity: function setAddressManager(address newAddressManager) returns() -func (_TaikoL1 *TaikoL1TransactorSession) SetAddressManager(newAddressManager common.Address) (*types.Transaction, error) { - return _TaikoL1.Contract.SetAddressManager(&_TaikoL1.TransactOpts, newAddressManager) -} - // TransferOwnership is a paid mutator transaction binding the contract method 0xf2fde38b. // // Solidity: function transferOwnership(address newOwner) returns() @@ -986,23 +979,23 @@ func (_TaikoL1 *TaikoL1TransactorSession) TransferOwnership(newOwner common.Addr // VerifyBlocks is a paid mutator transaction binding the contract method 0x8778209d. // -// Solidity: function verifyBlocks(uint64 maxBlocks) returns() -func (_TaikoL1 *TaikoL1Transactor) VerifyBlocks(opts *bind.TransactOpts, maxBlocks uint64) (*types.Transaction, error) { - return _TaikoL1.contract.Transact(opts, "verifyBlocks", maxBlocks) +// Solidity: function verifyBlocks(uint64 maxBlocksToVerify) returns() +func (_TaikoL1 *TaikoL1Transactor) VerifyBlocks(opts *bind.TransactOpts, maxBlocksToVerify uint64) (*types.Transaction, error) { + return _TaikoL1.contract.Transact(opts, "verifyBlocks", maxBlocksToVerify) } // VerifyBlocks is a paid mutator transaction binding the contract method 0x8778209d. // -// Solidity: function verifyBlocks(uint64 maxBlocks) returns() -func (_TaikoL1 *TaikoL1Session) VerifyBlocks(maxBlocks uint64) (*types.Transaction, error) { - return _TaikoL1.Contract.VerifyBlocks(&_TaikoL1.TransactOpts, maxBlocks) +// Solidity: function verifyBlocks(uint64 maxBlocksToVerify) returns() +func (_TaikoL1 *TaikoL1Session) VerifyBlocks(maxBlocksToVerify uint64) (*types.Transaction, error) { + return _TaikoL1.Contract.VerifyBlocks(&_TaikoL1.TransactOpts, maxBlocksToVerify) } // VerifyBlocks is a paid mutator transaction binding the contract method 0x8778209d. // -// Solidity: function verifyBlocks(uint64 maxBlocks) returns() -func (_TaikoL1 *TaikoL1TransactorSession) VerifyBlocks(maxBlocks uint64) (*types.Transaction, error) { - return _TaikoL1.Contract.VerifyBlocks(&_TaikoL1.TransactOpts, maxBlocks) +// Solidity: function verifyBlocks(uint64 maxBlocksToVerify) returns() +func (_TaikoL1 *TaikoL1TransactorSession) VerifyBlocks(maxBlocksToVerify uint64) (*types.Transaction, error) { + return _TaikoL1.Contract.VerifyBlocks(&_TaikoL1.TransactOpts, maxBlocksToVerify) } // WithdrawTaikoToken is a paid mutator transaction binding the contract method 0x5043f059. @@ -1047,150 +1040,6 @@ func (_TaikoL1 *TaikoL1TransactorSession) Receive() (*types.Transaction, error) return _TaikoL1.Contract.Receive(&_TaikoL1.TransactOpts) } -// TaikoL1AddressManagerChangedIterator is returned from FilterAddressManagerChanged and is used to iterate over the raw logs and unpacked data for AddressManagerChanged events raised by the TaikoL1 contract. -type TaikoL1AddressManagerChangedIterator struct { - Event *TaikoL1AddressManagerChanged // Event containing the contract specifics and raw log - - contract *bind.BoundContract // Generic contract to use for unpacking event data - event string // Event name to use for unpacking event data - - logs chan types.Log // Log channel receiving the found contract events - sub ethereum.Subscription // Subscription for errors, completion and termination - done bool // Whether the subscription completed delivering logs - fail error // Occurred error to stop iteration -} - -// Next advances the iterator to the subsequent event, returning whether there -// are any more events found. In case of a retrieval or parsing error, false is -// returned and Error() can be queried for the exact failure. -func (it *TaikoL1AddressManagerChangedIterator) Next() bool { - // If the iterator failed, stop iterating - if it.fail != nil { - return false - } - // If the iterator completed, deliver directly whatever's available - if it.done { - select { - case log := <-it.logs: - it.Event = new(TaikoL1AddressManagerChanged) - if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { - it.fail = err - return false - } - it.Event.Raw = log - return true - - default: - return false - } - } - // Iterator still in progress, wait for either a data or an error event - select { - case log := <-it.logs: - it.Event = new(TaikoL1AddressManagerChanged) - if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { - it.fail = err - return false - } - it.Event.Raw = log - return true - - case err := <-it.sub.Err(): - it.done = true - it.fail = err - return it.Next() - } -} - -// Error returns any retrieval or parsing error occurred during filtering. -func (it *TaikoL1AddressManagerChangedIterator) Error() error { - return it.fail -} - -// Close terminates the iteration process, releasing any pending underlying -// resources. -func (it *TaikoL1AddressManagerChangedIterator) Close() error { - it.sub.Unsubscribe() - return nil -} - -// TaikoL1AddressManagerChanged represents a AddressManagerChanged event raised by the TaikoL1 contract. -type TaikoL1AddressManagerChanged struct { - AddressManager common.Address - Raw types.Log // Blockchain specific contextual infos -} - -// FilterAddressManagerChanged is a free log retrieval operation binding the contract event 0x399ded90cb5ed8d89ef7e76ff4af65c373f06d3bf5d7eef55f4228e7b702a18b. -// -// Solidity: event AddressManagerChanged(address indexed addressManager) -func (_TaikoL1 *TaikoL1Filterer) FilterAddressManagerChanged(opts *bind.FilterOpts, addressManager []common.Address) (*TaikoL1AddressManagerChangedIterator, error) { - - var addressManagerRule []interface{} - for _, addressManagerItem := range addressManager { - addressManagerRule = append(addressManagerRule, addressManagerItem) - } - - logs, sub, err := _TaikoL1.contract.FilterLogs(opts, "AddressManagerChanged", addressManagerRule) - if err != nil { - return nil, err - } - return &TaikoL1AddressManagerChangedIterator{contract: _TaikoL1.contract, event: "AddressManagerChanged", logs: logs, sub: sub}, nil -} - -// WatchAddressManagerChanged is a free log subscription operation binding the contract event 0x399ded90cb5ed8d89ef7e76ff4af65c373f06d3bf5d7eef55f4228e7b702a18b. -// -// Solidity: event AddressManagerChanged(address indexed addressManager) -func (_TaikoL1 *TaikoL1Filterer) WatchAddressManagerChanged(opts *bind.WatchOpts, sink chan<- *TaikoL1AddressManagerChanged, addressManager []common.Address) (event.Subscription, error) { - - var addressManagerRule []interface{} - for _, addressManagerItem := range addressManager { - addressManagerRule = append(addressManagerRule, addressManagerItem) - } - - logs, sub, err := _TaikoL1.contract.WatchLogs(opts, "AddressManagerChanged", addressManagerRule) - if err != nil { - return nil, err - } - return event.NewSubscription(func(quit <-chan struct{}) error { - defer sub.Unsubscribe() - for { - select { - case log := <-logs: - // New log arrived, parse the event and forward to the user - event := new(TaikoL1AddressManagerChanged) - if err := _TaikoL1.contract.UnpackLog(event, "AddressManagerChanged", log); err != nil { - return err - } - event.Raw = log - - select { - case sink <- event: - case err := <-sub.Err(): - return err - case <-quit: - return nil - } - case err := <-sub.Err(): - return err - case <-quit: - return nil - } - } - }), nil -} - -// ParseAddressManagerChanged is a log parse operation binding the contract event 0x399ded90cb5ed8d89ef7e76ff4af65c373f06d3bf5d7eef55f4228e7b702a18b. -// -// Solidity: event AddressManagerChanged(address indexed addressManager) -func (_TaikoL1 *TaikoL1Filterer) ParseAddressManagerChanged(log types.Log) (*TaikoL1AddressManagerChanged, error) { - event := new(TaikoL1AddressManagerChanged) - if err := _TaikoL1.contract.UnpackLog(event, "AddressManagerChanged", log); err != nil { - return nil, err - } - event.Raw = log - return event, nil -} - // TaikoL1BlockProposedIterator is returned from FilterBlockProposed and is used to iterate over the raw logs and unpacked data for BlockProposed events raised by the TaikoL1 contract. type TaikoL1BlockProposedIterator struct { Event *TaikoL1BlockProposed // Event containing the contract specifics and raw log @@ -1264,15 +1113,14 @@ type TaikoL1BlockProposed struct { AssignedProver common.Address LivenessBond *big.Int ProverFee *big.Int - Reward *big.Int MinTier uint16 Meta TaikoDataBlockMetadata Raw types.Log // Blockchain specific contextual infos } -// FilterBlockProposed is a free log retrieval operation binding the contract event 0x3bc85eed257804b26e2232e767692931a620954ad0ae6ca5c58adb22be553418. +// FilterBlockProposed is a free log retrieval operation binding the contract event 0xc857f5d042c0ceb165ef70eab0812ba2e6b15a03ce07638b58efc04dbb175ef6. // -// Solidity: event BlockProposed(uint256 indexed blockId, address indexed assignedProver, uint96 livenessBond, uint256 proverFee, uint256 reward, uint16 minTier, (bytes32,bytes32,bytes32,bytes32,uint64,uint64,uint64,uint32,address,(address,uint96,uint64)[]) meta) +// Solidity: event BlockProposed(uint256 indexed blockId, address indexed assignedProver, uint96 livenessBond, uint256 proverFee, uint16 minTier, (bytes32,bytes32,bytes32,bytes32,uint64,uint64,uint64,uint32,address,(address,uint96,uint64)[]) meta) func (_TaikoL1 *TaikoL1Filterer) FilterBlockProposed(opts *bind.FilterOpts, blockId []*big.Int, assignedProver []common.Address) (*TaikoL1BlockProposedIterator, error) { var blockIdRule []interface{} @@ -1291,9 +1139,9 @@ func (_TaikoL1 *TaikoL1Filterer) FilterBlockProposed(opts *bind.FilterOpts, bloc return &TaikoL1BlockProposedIterator{contract: _TaikoL1.contract, event: "BlockProposed", logs: logs, sub: sub}, nil } -// WatchBlockProposed is a free log subscription operation binding the contract event 0x3bc85eed257804b26e2232e767692931a620954ad0ae6ca5c58adb22be553418. +// WatchBlockProposed is a free log subscription operation binding the contract event 0xc857f5d042c0ceb165ef70eab0812ba2e6b15a03ce07638b58efc04dbb175ef6. // -// Solidity: event BlockProposed(uint256 indexed blockId, address indexed assignedProver, uint96 livenessBond, uint256 proverFee, uint256 reward, uint16 minTier, (bytes32,bytes32,bytes32,bytes32,uint64,uint64,uint64,uint32,address,(address,uint96,uint64)[]) meta) +// Solidity: event BlockProposed(uint256 indexed blockId, address indexed assignedProver, uint96 livenessBond, uint256 proverFee, uint16 minTier, (bytes32,bytes32,bytes32,bytes32,uint64,uint64,uint64,uint32,address,(address,uint96,uint64)[]) meta) func (_TaikoL1 *TaikoL1Filterer) WatchBlockProposed(opts *bind.WatchOpts, sink chan<- *TaikoL1BlockProposed, blockId []*big.Int, assignedProver []common.Address) (event.Subscription, error) { var blockIdRule []interface{} @@ -1337,9 +1185,9 @@ func (_TaikoL1 *TaikoL1Filterer) WatchBlockProposed(opts *bind.WatchOpts, sink c }), nil } -// ParseBlockProposed is a log parse operation binding the contract event 0x3bc85eed257804b26e2232e767692931a620954ad0ae6ca5c58adb22be553418. +// ParseBlockProposed is a log parse operation binding the contract event 0xc857f5d042c0ceb165ef70eab0812ba2e6b15a03ce07638b58efc04dbb175ef6. // -// Solidity: event BlockProposed(uint256 indexed blockId, address indexed assignedProver, uint96 livenessBond, uint256 proverFee, uint256 reward, uint16 minTier, (bytes32,bytes32,bytes32,bytes32,uint64,uint64,uint64,uint32,address,(address,uint96,uint64)[]) meta) +// Solidity: event BlockProposed(uint256 indexed blockId, address indexed assignedProver, uint96 livenessBond, uint256 proverFee, uint16 minTier, (bytes32,bytes32,bytes32,bytes32,uint64,uint64,uint64,uint32,address,(address,uint96,uint64)[]) meta) func (_TaikoL1 *TaikoL1Filterer) ParseBlockProposed(log types.Log) (*TaikoL1BlockProposed, error) { event := new(TaikoL1BlockProposed) if err := _TaikoL1.contract.UnpackLog(event, "BlockProposed", log); err != nil { @@ -1422,15 +1270,14 @@ type TaikoL1BlockProposed0 struct { AssignedProver common.Address LivenessBond *big.Int ProverFee *big.Int - Reward *big.Int MinTier uint16 Meta TaikoDataBlockMetadata Raw types.Log // Blockchain specific contextual infos } -// FilterBlockProposed0 is a free log retrieval operation binding the contract event 0x3bc85eed257804b26e2232e767692931a620954ad0ae6ca5c58adb22be553418. +// FilterBlockProposed0 is a free log retrieval operation binding the contract event 0xc857f5d042c0ceb165ef70eab0812ba2e6b15a03ce07638b58efc04dbb175ef6. // -// Solidity: event BlockProposed(uint256 indexed blockId, address indexed assignedProver, uint96 livenessBond, uint256 proverFee, uint256 reward, uint16 minTier, (bytes32,bytes32,bytes32,bytes32,uint64,uint64,uint64,uint32,address,(address,uint96,uint64)[]) meta) +// Solidity: event BlockProposed(uint256 indexed blockId, address indexed assignedProver, uint96 livenessBond, uint256 proverFee, uint16 minTier, (bytes32,bytes32,bytes32,bytes32,uint64,uint64,uint64,uint32,address,(address,uint96,uint64)[]) meta) func (_TaikoL1 *TaikoL1Filterer) FilterBlockProposed0(opts *bind.FilterOpts, blockId []*big.Int, assignedProver []common.Address) (*TaikoL1BlockProposed0Iterator, error) { var blockIdRule []interface{} @@ -1449,9 +1296,9 @@ func (_TaikoL1 *TaikoL1Filterer) FilterBlockProposed0(opts *bind.FilterOpts, blo return &TaikoL1BlockProposed0Iterator{contract: _TaikoL1.contract, event: "BlockProposed0", logs: logs, sub: sub}, nil } -// WatchBlockProposed0 is a free log subscription operation binding the contract event 0x3bc85eed257804b26e2232e767692931a620954ad0ae6ca5c58adb22be553418. +// WatchBlockProposed0 is a free log subscription operation binding the contract event 0xc857f5d042c0ceb165ef70eab0812ba2e6b15a03ce07638b58efc04dbb175ef6. // -// Solidity: event BlockProposed(uint256 indexed blockId, address indexed assignedProver, uint96 livenessBond, uint256 proverFee, uint256 reward, uint16 minTier, (bytes32,bytes32,bytes32,bytes32,uint64,uint64,uint64,uint32,address,(address,uint96,uint64)[]) meta) +// Solidity: event BlockProposed(uint256 indexed blockId, address indexed assignedProver, uint96 livenessBond, uint256 proverFee, uint16 minTier, (bytes32,bytes32,bytes32,bytes32,uint64,uint64,uint64,uint32,address,(address,uint96,uint64)[]) meta) func (_TaikoL1 *TaikoL1Filterer) WatchBlockProposed0(opts *bind.WatchOpts, sink chan<- *TaikoL1BlockProposed0, blockId []*big.Int, assignedProver []common.Address) (event.Subscription, error) { var blockIdRule []interface{} @@ -1495,9 +1342,9 @@ func (_TaikoL1 *TaikoL1Filterer) WatchBlockProposed0(opts *bind.WatchOpts, sink }), nil } -// ParseBlockProposed0 is a log parse operation binding the contract event 0x3bc85eed257804b26e2232e767692931a620954ad0ae6ca5c58adb22be553418. +// ParseBlockProposed0 is a log parse operation binding the contract event 0xc857f5d042c0ceb165ef70eab0812ba2e6b15a03ce07638b58efc04dbb175ef6. // -// Solidity: event BlockProposed(uint256 indexed blockId, address indexed assignedProver, uint96 livenessBond, uint256 proverFee, uint256 reward, uint16 minTier, (bytes32,bytes32,bytes32,bytes32,uint64,uint64,uint64,uint32,address,(address,uint96,uint64)[]) meta) +// Solidity: event BlockProposed(uint256 indexed blockId, address indexed assignedProver, uint96 livenessBond, uint256 proverFee, uint16 minTier, (bytes32,bytes32,bytes32,bytes32,uint64,uint64,uint64,uint32,address,(address,uint96,uint64)[]) meta) func (_TaikoL1 *TaikoL1Filterer) ParseBlockProposed0(log types.Log) (*TaikoL1BlockProposed0, error) { event := new(TaikoL1BlockProposed0) if err := _TaikoL1.contract.UnpackLog(event, "BlockProposed0", log); err != nil { diff --git a/packages/relayer/bindings/taikol2/TaikoL2.go b/packages/relayer/bindings/taikol2/TaikoL2.go index 8d8097c599..0491da5cba 100644 --- a/packages/relayer/bindings/taikol2/TaikoL2.go +++ b/packages/relayer/bindings/taikol2/TaikoL2.go @@ -29,17 +29,24 @@ var ( _ = abi.ConvertType ) -// TaikoL2EIP1559Config is an auto generated low-level Go binding around an user-defined struct. -type TaikoL2EIP1559Config struct { - Xscale *big.Int - Yscale *big.Int - GasIssuedPerSecond uint32 - GasExcessMax uint64 +// ICrossChainSyncSnippet is an auto generated low-level Go binding around an user-defined struct. +type ICrossChainSyncSnippet struct { + BlockHash [32]byte + SignalRoot [32]byte +} + +// TaikoL2Config is an auto generated low-level Go binding around an user-defined struct. +type TaikoL2Config struct { + GasTargetPerL1Block uint64 + BasefeeAdjustmentQuotient *big.Int + BlockRewardPerL1Block *big.Int + BlockRewardPoolMax *big.Int + BlockRewardPoolPctg uint8 } // TaikoL2MetaData contains all meta data concerning the TaikoL2 contract. var TaikoL2MetaData = &bind.MetaData{ - ABI: "[{\"inputs\":[],\"name\":\"L2_1559_OUT_OF_STOCK\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"expected\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"actual\",\"type\":\"uint64\"}],\"name\":\"L2_1559_UNEXPECTED_CHANGE\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"L2_BASEFEE_MISMATCH\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"L2_INVALID_1559_PARAMS\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"L2_INVALID_CHAIN_ID\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"L2_INVALID_GOLDEN_TOUCH_K\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"L2_INVALID_SENDER\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"L2_PUBLIC_INPUT_HASH_MISMATCH\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"L2_TOO_LATE\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"Overflow\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"RESOLVER_DENIED\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"RESOLVER_INVALID_ADDR\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"chainId\",\"type\":\"uint256\"},{\"internalType\":\"bytes32\",\"name\":\"name\",\"type\":\"bytes32\"}],\"name\":\"RESOLVER_ZERO_ADDR\",\"type\":\"error\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"addressManager\",\"type\":\"address\"}],\"name\":\"AddressManagerChanged\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint64\",\"name\":\"number\",\"type\":\"uint64\"},{\"indexed\":false,\"internalType\":\"uint64\",\"name\":\"basefee\",\"type\":\"uint64\"},{\"indexed\":false,\"internalType\":\"uint32\",\"name\":\"gaslimit\",\"type\":\"uint32\"},{\"indexed\":false,\"internalType\":\"uint64\",\"name\":\"timestamp\",\"type\":\"uint64\"},{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"parentHash\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"prevrandao\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"coinbase\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint64\",\"name\":\"chainid\",\"type\":\"uint64\"}],\"name\":\"Anchored\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint64\",\"name\":\"srcHeight\",\"type\":\"uint64\"},{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"blockHash\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"signalRoot\",\"type\":\"bytes32\"}],\"name\":\"CrossChainSynced\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint8\",\"name\":\"version\",\"type\":\"uint8\"}],\"name\":\"Initialized\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"previousOwner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"newOwner\",\"type\":\"address\"}],\"name\":\"OwnershipTransferred\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"GOLDEN_TOUCH_ADDRESS\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"GOLDEN_TOUCH_PRIVATEKEY\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"addressManager\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"l1Hash\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"l1SignalRoot\",\"type\":\"bytes32\"},{\"internalType\":\"uint64\",\"name\":\"l1Height\",\"type\":\"uint64\"},{\"internalType\":\"uint32\",\"name\":\"parentGasUsed\",\"type\":\"uint32\"}],\"name\":\"anchor\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"basefee\",\"type\":\"uint64\"},{\"internalType\":\"uint32\",\"name\":\"gasIssuedPerSecond\",\"type\":\"uint32\"},{\"internalType\":\"uint64\",\"name\":\"gasExcessMax\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"gasTarget\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"ratio2x1x\",\"type\":\"uint64\"}],\"name\":\"calcEIP1559Config\",\"outputs\":[{\"components\":[{\"internalType\":\"uint128\",\"name\":\"xscale\",\"type\":\"uint128\"},{\"internalType\":\"uint128\",\"name\":\"yscale\",\"type\":\"uint128\"},{\"internalType\":\"uint32\",\"name\":\"gasIssuedPerSecond\",\"type\":\"uint32\"},{\"internalType\":\"uint64\",\"name\":\"gasExcessMax\",\"type\":\"uint64\"}],\"internalType\":\"structTaikoL2.EIP1559Config\",\"name\":\"config\",\"type\":\"tuple\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"gasExcess\",\"outputs\":[{\"internalType\":\"uint64\",\"name\":\"\",\"type\":\"uint64\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"timeSinceParent\",\"type\":\"uint64\"},{\"internalType\":\"uint32\",\"name\":\"parentGasUsed\",\"type\":\"uint32\"}],\"name\":\"getBasefee\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"_basefee\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"blockId\",\"type\":\"uint64\"}],\"name\":\"getBlockHash\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"blockId\",\"type\":\"uint64\"}],\"name\":\"getCrossChainBlockHash\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"blockId\",\"type\":\"uint64\"}],\"name\":\"getCrossChainSignalRoot\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getEIP1559Config\",\"outputs\":[{\"components\":[{\"internalType\":\"uint128\",\"name\":\"xscale\",\"type\":\"uint128\"},{\"internalType\":\"uint128\",\"name\":\"yscale\",\"type\":\"uint128\"},{\"internalType\":\"uint32\",\"name\":\"gasIssuedPerSecond\",\"type\":\"uint32\"},{\"internalType\":\"uint64\",\"name\":\"gasExcessMax\",\"type\":\"uint64\"}],\"internalType\":\"structTaikoL2.EIP1559Config\",\"name\":\"config\",\"type\":\"tuple\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_addressManager\",\"type\":\"address\"}],\"name\":\"init\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"latestSyncedL1Height\",\"outputs\":[{\"internalType\":\"uint64\",\"name\":\"\",\"type\":\"uint64\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"owner\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"parentTimestamp\",\"outputs\":[{\"internalType\":\"uint64\",\"name\":\"\",\"type\":\"uint64\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"publicInputHash\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"renounceOwnership\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"chainId\",\"type\":\"uint256\"},{\"internalType\":\"bytes32\",\"name\":\"name\",\"type\":\"bytes32\"},{\"internalType\":\"bool\",\"name\":\"allowZeroAddress\",\"type\":\"bool\"}],\"name\":\"resolve\",\"outputs\":[{\"internalType\":\"addresspayable\",\"name\":\"addr\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"name\",\"type\":\"bytes32\"},{\"internalType\":\"bool\",\"name\":\"allowZeroAddress\",\"type\":\"bool\"}],\"name\":\"resolve\",\"outputs\":[{\"internalType\":\"addresspayable\",\"name\":\"addr\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"newAddressManager\",\"type\":\"address\"}],\"name\":\"setAddressManager\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"digest\",\"type\":\"bytes32\"},{\"internalType\":\"uint8\",\"name\":\"k\",\"type\":\"uint8\"}],\"name\":\"signAnchor\",\"outputs\":[{\"internalType\":\"uint8\",\"name\":\"v\",\"type\":\"uint8\"},{\"internalType\":\"uint256\",\"name\":\"r\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"s\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"newOwner\",\"type\":\"address\"}],\"name\":\"transferOwnership\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}]", + ABI: "[{\"inputs\":[],\"name\":\"EIP1559_INVALID_PARAMS\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"L2_BASEFEE_MISMATCH\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"L2_GAS_EXCESS_TOO_LARGE\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"L2_INVALID_CHAIN_ID\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"L2_INVALID_GOLDEN_TOUCH_K\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"L2_INVALID_SENDER\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"L2_PUBLIC_INPUT_HASH_MISMATCH\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"L2_TOO_LATE\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"Overflow\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"RESOLVER_DENIED\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"RESOLVER_INVALID_MANAGER\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"chainId\",\"type\":\"uint256\"},{\"internalType\":\"bytes32\",\"name\":\"name\",\"type\":\"bytes32\"}],\"name\":\"RESOLVER_ZERO_ADDR\",\"type\":\"error\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"parentHash\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"uint128\",\"name\":\"gasExcess\",\"type\":\"uint128\"},{\"indexed\":false,\"internalType\":\"uint128\",\"name\":\"blockReward\",\"type\":\"uint128\"}],\"name\":\"Anchored\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint64\",\"name\":\"srcHeight\",\"type\":\"uint64\"},{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"blockHash\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"signalRoot\",\"type\":\"bytes32\"}],\"name\":\"CrossChainSynced\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint8\",\"name\":\"version\",\"type\":\"uint8\"}],\"name\":\"Initialized\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"previousOwner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"newOwner\",\"type\":\"address\"}],\"name\":\"OwnershipTransferred\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"ANCHOR_GAS_DEDUCT\",\"outputs\":[{\"internalType\":\"uint32\",\"name\":\"\",\"type\":\"uint32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"GOLDEN_TOUCH_ADDRESS\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"GOLDEN_TOUCH_PRIVATEKEY\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"accumulatedReward\",\"outputs\":[{\"internalType\":\"uint128\",\"name\":\"\",\"type\":\"uint128\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"addressManager\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"l1BlockHash\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"l1SignalRoot\",\"type\":\"bytes32\"},{\"internalType\":\"uint64\",\"name\":\"l1Height\",\"type\":\"uint64\"},{\"internalType\":\"uint32\",\"name\":\"parentGasUsed\",\"type\":\"uint32\"}],\"name\":\"anchor\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"avgGasUsed\",\"outputs\":[{\"internalType\":\"uint32\",\"name\":\"\",\"type\":\"uint32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"gasExcess\",\"outputs\":[{\"internalType\":\"uint128\",\"name\":\"\",\"type\":\"uint128\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"l1Height\",\"type\":\"uint64\"},{\"internalType\":\"uint32\",\"name\":\"parentGasUsed\",\"type\":\"uint32\"}],\"name\":\"getBasefee\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"basefee\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"blockId\",\"type\":\"uint64\"}],\"name\":\"getBlockHash\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getConfig\",\"outputs\":[{\"components\":[{\"internalType\":\"uint64\",\"name\":\"gasTargetPerL1Block\",\"type\":\"uint64\"},{\"internalType\":\"uint256\",\"name\":\"basefeeAdjustmentQuotient\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"blockRewardPerL1Block\",\"type\":\"uint256\"},{\"internalType\":\"uint128\",\"name\":\"blockRewardPoolMax\",\"type\":\"uint128\"},{\"internalType\":\"uint8\",\"name\":\"blockRewardPoolPctg\",\"type\":\"uint8\"}],\"internalType\":\"structTaikoL2.Config\",\"name\":\"config\",\"type\":\"tuple\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"blockId\",\"type\":\"uint64\"}],\"name\":\"getSyncedSnippet\",\"outputs\":[{\"components\":[{\"internalType\":\"bytes32\",\"name\":\"blockHash\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"signalRoot\",\"type\":\"bytes32\"}],\"internalType\":\"structICrossChainSync.Snippet\",\"name\":\"\",\"type\":\"tuple\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_addressManager\",\"type\":\"address\"},{\"internalType\":\"uint128\",\"name\":\"_gasExcess\",\"type\":\"uint128\"}],\"name\":\"init\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"blockId\",\"type\":\"uint256\"}],\"name\":\"l2Hashes\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"blockHash\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"latestSyncedL1Height\",\"outputs\":[{\"internalType\":\"uint64\",\"name\":\"\",\"type\":\"uint64\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"owner\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"parentProposer\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"publicInputHash\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"renounceOwnership\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"chainId\",\"type\":\"uint256\"},{\"internalType\":\"bytes32\",\"name\":\"name\",\"type\":\"bytes32\"},{\"internalType\":\"bool\",\"name\":\"allowZeroAddress\",\"type\":\"bool\"}],\"name\":\"resolve\",\"outputs\":[{\"internalType\":\"addresspayable\",\"name\":\"addr\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"name\",\"type\":\"bytes32\"},{\"internalType\":\"bool\",\"name\":\"allowZeroAddress\",\"type\":\"bool\"}],\"name\":\"resolve\",\"outputs\":[{\"internalType\":\"addresspayable\",\"name\":\"addr\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"digest\",\"type\":\"bytes32\"},{\"internalType\":\"uint8\",\"name\":\"k\",\"type\":\"uint8\"}],\"name\":\"signAnchor\",\"outputs\":[{\"internalType\":\"uint8\",\"name\":\"v\",\"type\":\"uint8\"},{\"internalType\":\"uint256\",\"name\":\"r\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"s\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"l1height\",\"type\":\"uint256\"}],\"name\":\"snippets\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"blockHash\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"signalRoot\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"newOwner\",\"type\":\"address\"}],\"name\":\"transferOwnership\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}]", } // TaikoL2ABI is the input ABI used to generate the binding from. @@ -188,6 +195,37 @@ func (_TaikoL2 *TaikoL2TransactorRaw) Transact(opts *bind.TransactOpts, method s return _TaikoL2.Contract.contract.Transact(opts, method, params...) } +// ANCHORGASDEDUCT is a free data retrieval call binding the contract method 0x51bf57b4. +// +// Solidity: function ANCHOR_GAS_DEDUCT() view returns(uint32) +func (_TaikoL2 *TaikoL2Caller) ANCHORGASDEDUCT(opts *bind.CallOpts) (uint32, error) { + var out []interface{} + err := _TaikoL2.contract.Call(opts, &out, "ANCHOR_GAS_DEDUCT") + + if err != nil { + return *new(uint32), err + } + + out0 := *abi.ConvertType(out[0], new(uint32)).(*uint32) + + return out0, err + +} + +// ANCHORGASDEDUCT is a free data retrieval call binding the contract method 0x51bf57b4. +// +// Solidity: function ANCHOR_GAS_DEDUCT() view returns(uint32) +func (_TaikoL2 *TaikoL2Session) ANCHORGASDEDUCT() (uint32, error) { + return _TaikoL2.Contract.ANCHORGASDEDUCT(&_TaikoL2.CallOpts) +} + +// ANCHORGASDEDUCT is a free data retrieval call binding the contract method 0x51bf57b4. +// +// Solidity: function ANCHOR_GAS_DEDUCT() view returns(uint32) +func (_TaikoL2 *TaikoL2CallerSession) ANCHORGASDEDUCT() (uint32, error) { + return _TaikoL2.Contract.ANCHORGASDEDUCT(&_TaikoL2.CallOpts) +} + // GOLDENTOUCHADDRESS is a free data retrieval call binding the contract method 0x9ee512f2. // // Solidity: function GOLDEN_TOUCH_ADDRESS() view returns(address) @@ -250,6 +288,37 @@ func (_TaikoL2 *TaikoL2CallerSession) GOLDENTOUCHPRIVATEKEY() (*big.Int, error) return _TaikoL2.Contract.GOLDENTOUCHPRIVATEKEY(&_TaikoL2.CallOpts) } +// AccumulatedReward is a free data retrieval call binding the contract method 0x80fad325. +// +// Solidity: function accumulatedReward() view returns(uint128) +func (_TaikoL2 *TaikoL2Caller) AccumulatedReward(opts *bind.CallOpts) (*big.Int, error) { + var out []interface{} + err := _TaikoL2.contract.Call(opts, &out, "accumulatedReward") + + if err != nil { + return *new(*big.Int), err + } + + out0 := *abi.ConvertType(out[0], new(*big.Int)).(**big.Int) + + return out0, err + +} + +// AccumulatedReward is a free data retrieval call binding the contract method 0x80fad325. +// +// Solidity: function accumulatedReward() view returns(uint128) +func (_TaikoL2 *TaikoL2Session) AccumulatedReward() (*big.Int, error) { + return _TaikoL2.Contract.AccumulatedReward(&_TaikoL2.CallOpts) +} + +// AccumulatedReward is a free data retrieval call binding the contract method 0x80fad325. +// +// Solidity: function accumulatedReward() view returns(uint128) +func (_TaikoL2 *TaikoL2CallerSession) AccumulatedReward() (*big.Int, error) { + return _TaikoL2.Contract.AccumulatedReward(&_TaikoL2.CallOpts) +} + // AddressManager is a free data retrieval call binding the contract method 0x3ab76e9f. // // Solidity: function addressManager() view returns(address) @@ -281,49 +350,49 @@ func (_TaikoL2 *TaikoL2CallerSession) AddressManager() (common.Address, error) { return _TaikoL2.Contract.AddressManager(&_TaikoL2.CallOpts) } -// CalcEIP1559Config is a free data retrieval call binding the contract method 0x06becb55. +// AvgGasUsed is a free data retrieval call binding the contract method 0x6d6372c4. // -// Solidity: function calcEIP1559Config(uint64 basefee, uint32 gasIssuedPerSecond, uint64 gasExcessMax, uint64 gasTarget, uint64 ratio2x1x) pure returns((uint128,uint128,uint32,uint64) config) -func (_TaikoL2 *TaikoL2Caller) CalcEIP1559Config(opts *bind.CallOpts, basefee uint64, gasIssuedPerSecond uint32, gasExcessMax uint64, gasTarget uint64, ratio2x1x uint64) (TaikoL2EIP1559Config, error) { +// Solidity: function avgGasUsed() view returns(uint32) +func (_TaikoL2 *TaikoL2Caller) AvgGasUsed(opts *bind.CallOpts) (uint32, error) { var out []interface{} - err := _TaikoL2.contract.Call(opts, &out, "calcEIP1559Config", basefee, gasIssuedPerSecond, gasExcessMax, gasTarget, ratio2x1x) + err := _TaikoL2.contract.Call(opts, &out, "avgGasUsed") if err != nil { - return *new(TaikoL2EIP1559Config), err + return *new(uint32), err } - out0 := *abi.ConvertType(out[0], new(TaikoL2EIP1559Config)).(*TaikoL2EIP1559Config) + out0 := *abi.ConvertType(out[0], new(uint32)).(*uint32) return out0, err } -// CalcEIP1559Config is a free data retrieval call binding the contract method 0x06becb55. +// AvgGasUsed is a free data retrieval call binding the contract method 0x6d6372c4. // -// Solidity: function calcEIP1559Config(uint64 basefee, uint32 gasIssuedPerSecond, uint64 gasExcessMax, uint64 gasTarget, uint64 ratio2x1x) pure returns((uint128,uint128,uint32,uint64) config) -func (_TaikoL2 *TaikoL2Session) CalcEIP1559Config(basefee uint64, gasIssuedPerSecond uint32, gasExcessMax uint64, gasTarget uint64, ratio2x1x uint64) (TaikoL2EIP1559Config, error) { - return _TaikoL2.Contract.CalcEIP1559Config(&_TaikoL2.CallOpts, basefee, gasIssuedPerSecond, gasExcessMax, gasTarget, ratio2x1x) +// Solidity: function avgGasUsed() view returns(uint32) +func (_TaikoL2 *TaikoL2Session) AvgGasUsed() (uint32, error) { + return _TaikoL2.Contract.AvgGasUsed(&_TaikoL2.CallOpts) } -// CalcEIP1559Config is a free data retrieval call binding the contract method 0x06becb55. +// AvgGasUsed is a free data retrieval call binding the contract method 0x6d6372c4. // -// Solidity: function calcEIP1559Config(uint64 basefee, uint32 gasIssuedPerSecond, uint64 gasExcessMax, uint64 gasTarget, uint64 ratio2x1x) pure returns((uint128,uint128,uint32,uint64) config) -func (_TaikoL2 *TaikoL2CallerSession) CalcEIP1559Config(basefee uint64, gasIssuedPerSecond uint32, gasExcessMax uint64, gasTarget uint64, ratio2x1x uint64) (TaikoL2EIP1559Config, error) { - return _TaikoL2.Contract.CalcEIP1559Config(&_TaikoL2.CallOpts, basefee, gasIssuedPerSecond, gasExcessMax, gasTarget, ratio2x1x) +// Solidity: function avgGasUsed() view returns(uint32) +func (_TaikoL2 *TaikoL2CallerSession) AvgGasUsed() (uint32, error) { + return _TaikoL2.Contract.AvgGasUsed(&_TaikoL2.CallOpts) } // GasExcess is a free data retrieval call binding the contract method 0xf535bd56. // -// Solidity: function gasExcess() view returns(uint64) -func (_TaikoL2 *TaikoL2Caller) GasExcess(opts *bind.CallOpts) (uint64, error) { +// Solidity: function gasExcess() view returns(uint128) +func (_TaikoL2 *TaikoL2Caller) GasExcess(opts *bind.CallOpts) (*big.Int, error) { var out []interface{} err := _TaikoL2.contract.Call(opts, &out, "gasExcess") if err != nil { - return *new(uint64), err + return *new(*big.Int), err } - out0 := *abi.ConvertType(out[0], new(uint64)).(*uint64) + out0 := *abi.ConvertType(out[0], new(*big.Int)).(**big.Int) return out0, err @@ -331,24 +400,24 @@ func (_TaikoL2 *TaikoL2Caller) GasExcess(opts *bind.CallOpts) (uint64, error) { // GasExcess is a free data retrieval call binding the contract method 0xf535bd56. // -// Solidity: function gasExcess() view returns(uint64) -func (_TaikoL2 *TaikoL2Session) GasExcess() (uint64, error) { +// Solidity: function gasExcess() view returns(uint128) +func (_TaikoL2 *TaikoL2Session) GasExcess() (*big.Int, error) { return _TaikoL2.Contract.GasExcess(&_TaikoL2.CallOpts) } // GasExcess is a free data retrieval call binding the contract method 0xf535bd56. // -// Solidity: function gasExcess() view returns(uint64) -func (_TaikoL2 *TaikoL2CallerSession) GasExcess() (uint64, error) { +// Solidity: function gasExcess() view returns(uint128) +func (_TaikoL2 *TaikoL2CallerSession) GasExcess() (*big.Int, error) { return _TaikoL2.Contract.GasExcess(&_TaikoL2.CallOpts) } // GetBasefee is a free data retrieval call binding the contract method 0xa7e022d1. // -// Solidity: function getBasefee(uint64 timeSinceParent, uint32 parentGasUsed) view returns(uint256 _basefee) -func (_TaikoL2 *TaikoL2Caller) GetBasefee(opts *bind.CallOpts, timeSinceParent uint64, parentGasUsed uint32) (*big.Int, error) { +// Solidity: function getBasefee(uint64 l1Height, uint32 parentGasUsed) view returns(uint256 basefee) +func (_TaikoL2 *TaikoL2Caller) GetBasefee(opts *bind.CallOpts, l1Height uint64, parentGasUsed uint32) (*big.Int, error) { var out []interface{} - err := _TaikoL2.contract.Call(opts, &out, "getBasefee", timeSinceParent, parentGasUsed) + err := _TaikoL2.contract.Call(opts, &out, "getBasefee", l1Height, parentGasUsed) if err != nil { return *new(*big.Int), err @@ -362,16 +431,16 @@ func (_TaikoL2 *TaikoL2Caller) GetBasefee(opts *bind.CallOpts, timeSinceParent u // GetBasefee is a free data retrieval call binding the contract method 0xa7e022d1. // -// Solidity: function getBasefee(uint64 timeSinceParent, uint32 parentGasUsed) view returns(uint256 _basefee) -func (_TaikoL2 *TaikoL2Session) GetBasefee(timeSinceParent uint64, parentGasUsed uint32) (*big.Int, error) { - return _TaikoL2.Contract.GetBasefee(&_TaikoL2.CallOpts, timeSinceParent, parentGasUsed) +// Solidity: function getBasefee(uint64 l1Height, uint32 parentGasUsed) view returns(uint256 basefee) +func (_TaikoL2 *TaikoL2Session) GetBasefee(l1Height uint64, parentGasUsed uint32) (*big.Int, error) { + return _TaikoL2.Contract.GetBasefee(&_TaikoL2.CallOpts, l1Height, parentGasUsed) } // GetBasefee is a free data retrieval call binding the contract method 0xa7e022d1. // -// Solidity: function getBasefee(uint64 timeSinceParent, uint32 parentGasUsed) view returns(uint256 _basefee) -func (_TaikoL2 *TaikoL2CallerSession) GetBasefee(timeSinceParent uint64, parentGasUsed uint32) (*big.Int, error) { - return _TaikoL2.Contract.GetBasefee(&_TaikoL2.CallOpts, timeSinceParent, parentGasUsed) +// Solidity: function getBasefee(uint64 l1Height, uint32 parentGasUsed) view returns(uint256 basefee) +func (_TaikoL2 *TaikoL2CallerSession) GetBasefee(l1Height uint64, parentGasUsed uint32) (*big.Int, error) { + return _TaikoL2.Contract.GetBasefee(&_TaikoL2.CallOpts, l1Height, parentGasUsed) } // GetBlockHash is a free data retrieval call binding the contract method 0x23ac7136. @@ -405,97 +474,97 @@ func (_TaikoL2 *TaikoL2CallerSession) GetBlockHash(blockId uint64) ([32]byte, er return _TaikoL2.Contract.GetBlockHash(&_TaikoL2.CallOpts, blockId) } -// GetCrossChainBlockHash is a free data retrieval call binding the contract method 0xbdd6bc36. +// GetConfig is a free data retrieval call binding the contract method 0xc3f909d4. // -// Solidity: function getCrossChainBlockHash(uint64 blockId) view returns(bytes32) -func (_TaikoL2 *TaikoL2Caller) GetCrossChainBlockHash(opts *bind.CallOpts, blockId uint64) ([32]byte, error) { +// Solidity: function getConfig() pure returns((uint64,uint256,uint256,uint128,uint8) config) +func (_TaikoL2 *TaikoL2Caller) GetConfig(opts *bind.CallOpts) (TaikoL2Config, error) { var out []interface{} - err := _TaikoL2.contract.Call(opts, &out, "getCrossChainBlockHash", blockId) + err := _TaikoL2.contract.Call(opts, &out, "getConfig") if err != nil { - return *new([32]byte), err + return *new(TaikoL2Config), err } - out0 := *abi.ConvertType(out[0], new([32]byte)).(*[32]byte) + out0 := *abi.ConvertType(out[0], new(TaikoL2Config)).(*TaikoL2Config) return out0, err } -// GetCrossChainBlockHash is a free data retrieval call binding the contract method 0xbdd6bc36. +// GetConfig is a free data retrieval call binding the contract method 0xc3f909d4. // -// Solidity: function getCrossChainBlockHash(uint64 blockId) view returns(bytes32) -func (_TaikoL2 *TaikoL2Session) GetCrossChainBlockHash(blockId uint64) ([32]byte, error) { - return _TaikoL2.Contract.GetCrossChainBlockHash(&_TaikoL2.CallOpts, blockId) +// Solidity: function getConfig() pure returns((uint64,uint256,uint256,uint128,uint8) config) +func (_TaikoL2 *TaikoL2Session) GetConfig() (TaikoL2Config, error) { + return _TaikoL2.Contract.GetConfig(&_TaikoL2.CallOpts) } -// GetCrossChainBlockHash is a free data retrieval call binding the contract method 0xbdd6bc36. +// GetConfig is a free data retrieval call binding the contract method 0xc3f909d4. // -// Solidity: function getCrossChainBlockHash(uint64 blockId) view returns(bytes32) -func (_TaikoL2 *TaikoL2CallerSession) GetCrossChainBlockHash(blockId uint64) ([32]byte, error) { - return _TaikoL2.Contract.GetCrossChainBlockHash(&_TaikoL2.CallOpts, blockId) +// Solidity: function getConfig() pure returns((uint64,uint256,uint256,uint128,uint8) config) +func (_TaikoL2 *TaikoL2CallerSession) GetConfig() (TaikoL2Config, error) { + return _TaikoL2.Contract.GetConfig(&_TaikoL2.CallOpts) } -// GetCrossChainSignalRoot is a free data retrieval call binding the contract method 0x0599d294. +// GetSyncedSnippet is a free data retrieval call binding the contract method 0x8cfb0459. // -// Solidity: function getCrossChainSignalRoot(uint64 blockId) view returns(bytes32) -func (_TaikoL2 *TaikoL2Caller) GetCrossChainSignalRoot(opts *bind.CallOpts, blockId uint64) ([32]byte, error) { +// Solidity: function getSyncedSnippet(uint64 blockId) view returns((bytes32,bytes32)) +func (_TaikoL2 *TaikoL2Caller) GetSyncedSnippet(opts *bind.CallOpts, blockId uint64) (ICrossChainSyncSnippet, error) { var out []interface{} - err := _TaikoL2.contract.Call(opts, &out, "getCrossChainSignalRoot", blockId) + err := _TaikoL2.contract.Call(opts, &out, "getSyncedSnippet", blockId) if err != nil { - return *new([32]byte), err + return *new(ICrossChainSyncSnippet), err } - out0 := *abi.ConvertType(out[0], new([32]byte)).(*[32]byte) + out0 := *abi.ConvertType(out[0], new(ICrossChainSyncSnippet)).(*ICrossChainSyncSnippet) return out0, err } -// GetCrossChainSignalRoot is a free data retrieval call binding the contract method 0x0599d294. +// GetSyncedSnippet is a free data retrieval call binding the contract method 0x8cfb0459. // -// Solidity: function getCrossChainSignalRoot(uint64 blockId) view returns(bytes32) -func (_TaikoL2 *TaikoL2Session) GetCrossChainSignalRoot(blockId uint64) ([32]byte, error) { - return _TaikoL2.Contract.GetCrossChainSignalRoot(&_TaikoL2.CallOpts, blockId) +// Solidity: function getSyncedSnippet(uint64 blockId) view returns((bytes32,bytes32)) +func (_TaikoL2 *TaikoL2Session) GetSyncedSnippet(blockId uint64) (ICrossChainSyncSnippet, error) { + return _TaikoL2.Contract.GetSyncedSnippet(&_TaikoL2.CallOpts, blockId) } -// GetCrossChainSignalRoot is a free data retrieval call binding the contract method 0x0599d294. +// GetSyncedSnippet is a free data retrieval call binding the contract method 0x8cfb0459. // -// Solidity: function getCrossChainSignalRoot(uint64 blockId) view returns(bytes32) -func (_TaikoL2 *TaikoL2CallerSession) GetCrossChainSignalRoot(blockId uint64) ([32]byte, error) { - return _TaikoL2.Contract.GetCrossChainSignalRoot(&_TaikoL2.CallOpts, blockId) +// Solidity: function getSyncedSnippet(uint64 blockId) view returns((bytes32,bytes32)) +func (_TaikoL2 *TaikoL2CallerSession) GetSyncedSnippet(blockId uint64) (ICrossChainSyncSnippet, error) { + return _TaikoL2.Contract.GetSyncedSnippet(&_TaikoL2.CallOpts, blockId) } -// GetEIP1559Config is a free data retrieval call binding the contract method 0x4e755573. +// L2Hashes is a free data retrieval call binding the contract method 0x8551f41e. // -// Solidity: function getEIP1559Config() pure returns((uint128,uint128,uint32,uint64) config) -func (_TaikoL2 *TaikoL2Caller) GetEIP1559Config(opts *bind.CallOpts) (TaikoL2EIP1559Config, error) { +// Solidity: function l2Hashes(uint256 blockId) view returns(bytes32 blockHash) +func (_TaikoL2 *TaikoL2Caller) L2Hashes(opts *bind.CallOpts, blockId *big.Int) ([32]byte, error) { var out []interface{} - err := _TaikoL2.contract.Call(opts, &out, "getEIP1559Config") + err := _TaikoL2.contract.Call(opts, &out, "l2Hashes", blockId) if err != nil { - return *new(TaikoL2EIP1559Config), err + return *new([32]byte), err } - out0 := *abi.ConvertType(out[0], new(TaikoL2EIP1559Config)).(*TaikoL2EIP1559Config) + out0 := *abi.ConvertType(out[0], new([32]byte)).(*[32]byte) return out0, err } -// GetEIP1559Config is a free data retrieval call binding the contract method 0x4e755573. +// L2Hashes is a free data retrieval call binding the contract method 0x8551f41e. // -// Solidity: function getEIP1559Config() pure returns((uint128,uint128,uint32,uint64) config) -func (_TaikoL2 *TaikoL2Session) GetEIP1559Config() (TaikoL2EIP1559Config, error) { - return _TaikoL2.Contract.GetEIP1559Config(&_TaikoL2.CallOpts) +// Solidity: function l2Hashes(uint256 blockId) view returns(bytes32 blockHash) +func (_TaikoL2 *TaikoL2Session) L2Hashes(blockId *big.Int) ([32]byte, error) { + return _TaikoL2.Contract.L2Hashes(&_TaikoL2.CallOpts, blockId) } -// GetEIP1559Config is a free data retrieval call binding the contract method 0x4e755573. +// L2Hashes is a free data retrieval call binding the contract method 0x8551f41e. // -// Solidity: function getEIP1559Config() pure returns((uint128,uint128,uint32,uint64) config) -func (_TaikoL2 *TaikoL2CallerSession) GetEIP1559Config() (TaikoL2EIP1559Config, error) { - return _TaikoL2.Contract.GetEIP1559Config(&_TaikoL2.CallOpts) +// Solidity: function l2Hashes(uint256 blockId) view returns(bytes32 blockHash) +func (_TaikoL2 *TaikoL2CallerSession) L2Hashes(blockId *big.Int) ([32]byte, error) { + return _TaikoL2.Contract.L2Hashes(&_TaikoL2.CallOpts, blockId) } // LatestSyncedL1Height is a free data retrieval call binding the contract method 0xc7b96908. @@ -560,35 +629,35 @@ func (_TaikoL2 *TaikoL2CallerSession) Owner() (common.Address, error) { return _TaikoL2.Contract.Owner(&_TaikoL2.CallOpts) } -// ParentTimestamp is a free data retrieval call binding the contract method 0x539b8ade. +// ParentProposer is a free data retrieval call binding the contract method 0xfca19902. // -// Solidity: function parentTimestamp() view returns(uint64) -func (_TaikoL2 *TaikoL2Caller) ParentTimestamp(opts *bind.CallOpts) (uint64, error) { +// Solidity: function parentProposer() view returns(address) +func (_TaikoL2 *TaikoL2Caller) ParentProposer(opts *bind.CallOpts) (common.Address, error) { var out []interface{} - err := _TaikoL2.contract.Call(opts, &out, "parentTimestamp") + err := _TaikoL2.contract.Call(opts, &out, "parentProposer") if err != nil { - return *new(uint64), err + return *new(common.Address), err } - out0 := *abi.ConvertType(out[0], new(uint64)).(*uint64) + out0 := *abi.ConvertType(out[0], new(common.Address)).(*common.Address) return out0, err } -// ParentTimestamp is a free data retrieval call binding the contract method 0x539b8ade. +// ParentProposer is a free data retrieval call binding the contract method 0xfca19902. // -// Solidity: function parentTimestamp() view returns(uint64) -func (_TaikoL2 *TaikoL2Session) ParentTimestamp() (uint64, error) { - return _TaikoL2.Contract.ParentTimestamp(&_TaikoL2.CallOpts) +// Solidity: function parentProposer() view returns(address) +func (_TaikoL2 *TaikoL2Session) ParentProposer() (common.Address, error) { + return _TaikoL2.Contract.ParentProposer(&_TaikoL2.CallOpts) } -// ParentTimestamp is a free data retrieval call binding the contract method 0x539b8ade. +// ParentProposer is a free data retrieval call binding the contract method 0xfca19902. // -// Solidity: function parentTimestamp() view returns(uint64) -func (_TaikoL2 *TaikoL2CallerSession) ParentTimestamp() (uint64, error) { - return _TaikoL2.Contract.ParentTimestamp(&_TaikoL2.CallOpts) +// Solidity: function parentProposer() view returns(address) +func (_TaikoL2 *TaikoL2CallerSession) ParentProposer() (common.Address, error) { + return _TaikoL2.Contract.ParentProposer(&_TaikoL2.CallOpts) } // PublicInputHash is a free data retrieval call binding the contract method 0xdac5df78. @@ -734,46 +803,91 @@ func (_TaikoL2 *TaikoL2CallerSession) SignAnchor(digest [32]byte, k uint8) (stru return _TaikoL2.Contract.SignAnchor(&_TaikoL2.CallOpts, digest, k) } +// Snippets is a free data retrieval call binding the contract method 0xe8e2c5fb. +// +// Solidity: function snippets(uint256 l1height) view returns(bytes32 blockHash, bytes32 signalRoot) +func (_TaikoL2 *TaikoL2Caller) Snippets(opts *bind.CallOpts, l1height *big.Int) (struct { + BlockHash [32]byte + SignalRoot [32]byte +}, error) { + var out []interface{} + err := _TaikoL2.contract.Call(opts, &out, "snippets", l1height) + + outstruct := new(struct { + BlockHash [32]byte + SignalRoot [32]byte + }) + if err != nil { + return *outstruct, err + } + + outstruct.BlockHash = *abi.ConvertType(out[0], new([32]byte)).(*[32]byte) + outstruct.SignalRoot = *abi.ConvertType(out[1], new([32]byte)).(*[32]byte) + + return *outstruct, err + +} + +// Snippets is a free data retrieval call binding the contract method 0xe8e2c5fb. +// +// Solidity: function snippets(uint256 l1height) view returns(bytes32 blockHash, bytes32 signalRoot) +func (_TaikoL2 *TaikoL2Session) Snippets(l1height *big.Int) (struct { + BlockHash [32]byte + SignalRoot [32]byte +}, error) { + return _TaikoL2.Contract.Snippets(&_TaikoL2.CallOpts, l1height) +} + +// Snippets is a free data retrieval call binding the contract method 0xe8e2c5fb. +// +// Solidity: function snippets(uint256 l1height) view returns(bytes32 blockHash, bytes32 signalRoot) +func (_TaikoL2 *TaikoL2CallerSession) Snippets(l1height *big.Int) (struct { + BlockHash [32]byte + SignalRoot [32]byte +}, error) { + return _TaikoL2.Contract.Snippets(&_TaikoL2.CallOpts, l1height) +} + // Anchor is a paid mutator transaction binding the contract method 0xda69d3db. // -// Solidity: function anchor(bytes32 l1Hash, bytes32 l1SignalRoot, uint64 l1Height, uint32 parentGasUsed) returns() -func (_TaikoL2 *TaikoL2Transactor) Anchor(opts *bind.TransactOpts, l1Hash [32]byte, l1SignalRoot [32]byte, l1Height uint64, parentGasUsed uint32) (*types.Transaction, error) { - return _TaikoL2.contract.Transact(opts, "anchor", l1Hash, l1SignalRoot, l1Height, parentGasUsed) +// Solidity: function anchor(bytes32 l1BlockHash, bytes32 l1SignalRoot, uint64 l1Height, uint32 parentGasUsed) returns() +func (_TaikoL2 *TaikoL2Transactor) Anchor(opts *bind.TransactOpts, l1BlockHash [32]byte, l1SignalRoot [32]byte, l1Height uint64, parentGasUsed uint32) (*types.Transaction, error) { + return _TaikoL2.contract.Transact(opts, "anchor", l1BlockHash, l1SignalRoot, l1Height, parentGasUsed) } // Anchor is a paid mutator transaction binding the contract method 0xda69d3db. // -// Solidity: function anchor(bytes32 l1Hash, bytes32 l1SignalRoot, uint64 l1Height, uint32 parentGasUsed) returns() -func (_TaikoL2 *TaikoL2Session) Anchor(l1Hash [32]byte, l1SignalRoot [32]byte, l1Height uint64, parentGasUsed uint32) (*types.Transaction, error) { - return _TaikoL2.Contract.Anchor(&_TaikoL2.TransactOpts, l1Hash, l1SignalRoot, l1Height, parentGasUsed) +// Solidity: function anchor(bytes32 l1BlockHash, bytes32 l1SignalRoot, uint64 l1Height, uint32 parentGasUsed) returns() +func (_TaikoL2 *TaikoL2Session) Anchor(l1BlockHash [32]byte, l1SignalRoot [32]byte, l1Height uint64, parentGasUsed uint32) (*types.Transaction, error) { + return _TaikoL2.Contract.Anchor(&_TaikoL2.TransactOpts, l1BlockHash, l1SignalRoot, l1Height, parentGasUsed) } // Anchor is a paid mutator transaction binding the contract method 0xda69d3db. // -// Solidity: function anchor(bytes32 l1Hash, bytes32 l1SignalRoot, uint64 l1Height, uint32 parentGasUsed) returns() -func (_TaikoL2 *TaikoL2TransactorSession) Anchor(l1Hash [32]byte, l1SignalRoot [32]byte, l1Height uint64, parentGasUsed uint32) (*types.Transaction, error) { - return _TaikoL2.Contract.Anchor(&_TaikoL2.TransactOpts, l1Hash, l1SignalRoot, l1Height, parentGasUsed) +// Solidity: function anchor(bytes32 l1BlockHash, bytes32 l1SignalRoot, uint64 l1Height, uint32 parentGasUsed) returns() +func (_TaikoL2 *TaikoL2TransactorSession) Anchor(l1BlockHash [32]byte, l1SignalRoot [32]byte, l1Height uint64, parentGasUsed uint32) (*types.Transaction, error) { + return _TaikoL2.Contract.Anchor(&_TaikoL2.TransactOpts, l1BlockHash, l1SignalRoot, l1Height, parentGasUsed) } -// Init is a paid mutator transaction binding the contract method 0x19ab453c. +// Init is a paid mutator transaction binding the contract method 0xcce03bf3. // -// Solidity: function init(address _addressManager) returns() -func (_TaikoL2 *TaikoL2Transactor) Init(opts *bind.TransactOpts, _addressManager common.Address) (*types.Transaction, error) { - return _TaikoL2.contract.Transact(opts, "init", _addressManager) +// Solidity: function init(address _addressManager, uint128 _gasExcess) returns() +func (_TaikoL2 *TaikoL2Transactor) Init(opts *bind.TransactOpts, _addressManager common.Address, _gasExcess *big.Int) (*types.Transaction, error) { + return _TaikoL2.contract.Transact(opts, "init", _addressManager, _gasExcess) } -// Init is a paid mutator transaction binding the contract method 0x19ab453c. +// Init is a paid mutator transaction binding the contract method 0xcce03bf3. // -// Solidity: function init(address _addressManager) returns() -func (_TaikoL2 *TaikoL2Session) Init(_addressManager common.Address) (*types.Transaction, error) { - return _TaikoL2.Contract.Init(&_TaikoL2.TransactOpts, _addressManager) +// Solidity: function init(address _addressManager, uint128 _gasExcess) returns() +func (_TaikoL2 *TaikoL2Session) Init(_addressManager common.Address, _gasExcess *big.Int) (*types.Transaction, error) { + return _TaikoL2.Contract.Init(&_TaikoL2.TransactOpts, _addressManager, _gasExcess) } -// Init is a paid mutator transaction binding the contract method 0x19ab453c. +// Init is a paid mutator transaction binding the contract method 0xcce03bf3. // -// Solidity: function init(address _addressManager) returns() -func (_TaikoL2 *TaikoL2TransactorSession) Init(_addressManager common.Address) (*types.Transaction, error) { - return _TaikoL2.Contract.Init(&_TaikoL2.TransactOpts, _addressManager) +// Solidity: function init(address _addressManager, uint128 _gasExcess) returns() +func (_TaikoL2 *TaikoL2TransactorSession) Init(_addressManager common.Address, _gasExcess *big.Int) (*types.Transaction, error) { + return _TaikoL2.Contract.Init(&_TaikoL2.TransactOpts, _addressManager, _gasExcess) } // RenounceOwnership is a paid mutator transaction binding the contract method 0x715018a6. @@ -797,27 +911,6 @@ func (_TaikoL2 *TaikoL2TransactorSession) RenounceOwnership() (*types.Transactio return _TaikoL2.Contract.RenounceOwnership(&_TaikoL2.TransactOpts) } -// SetAddressManager is a paid mutator transaction binding the contract method 0x0652b57a. -// -// Solidity: function setAddressManager(address newAddressManager) returns() -func (_TaikoL2 *TaikoL2Transactor) SetAddressManager(opts *bind.TransactOpts, newAddressManager common.Address) (*types.Transaction, error) { - return _TaikoL2.contract.Transact(opts, "setAddressManager", newAddressManager) -} - -// SetAddressManager is a paid mutator transaction binding the contract method 0x0652b57a. -// -// Solidity: function setAddressManager(address newAddressManager) returns() -func (_TaikoL2 *TaikoL2Session) SetAddressManager(newAddressManager common.Address) (*types.Transaction, error) { - return _TaikoL2.Contract.SetAddressManager(&_TaikoL2.TransactOpts, newAddressManager) -} - -// SetAddressManager is a paid mutator transaction binding the contract method 0x0652b57a. -// -// Solidity: function setAddressManager(address newAddressManager) returns() -func (_TaikoL2 *TaikoL2TransactorSession) SetAddressManager(newAddressManager common.Address) (*types.Transaction, error) { - return _TaikoL2.Contract.SetAddressManager(&_TaikoL2.TransactOpts, newAddressManager) -} - // TransferOwnership is a paid mutator transaction binding the contract method 0xf2fde38b. // // Solidity: function transferOwnership(address newOwner) returns() @@ -839,150 +932,6 @@ func (_TaikoL2 *TaikoL2TransactorSession) TransferOwnership(newOwner common.Addr return _TaikoL2.Contract.TransferOwnership(&_TaikoL2.TransactOpts, newOwner) } -// TaikoL2AddressManagerChangedIterator is returned from FilterAddressManagerChanged and is used to iterate over the raw logs and unpacked data for AddressManagerChanged events raised by the TaikoL2 contract. -type TaikoL2AddressManagerChangedIterator struct { - Event *TaikoL2AddressManagerChanged // Event containing the contract specifics and raw log - - contract *bind.BoundContract // Generic contract to use for unpacking event data - event string // Event name to use for unpacking event data - - logs chan types.Log // Log channel receiving the found contract events - sub ethereum.Subscription // Subscription for errors, completion and termination - done bool // Whether the subscription completed delivering logs - fail error // Occurred error to stop iteration -} - -// Next advances the iterator to the subsequent event, returning whether there -// are any more events found. In case of a retrieval or parsing error, false is -// returned and Error() can be queried for the exact failure. -func (it *TaikoL2AddressManagerChangedIterator) Next() bool { - // If the iterator failed, stop iterating - if it.fail != nil { - return false - } - // If the iterator completed, deliver directly whatever's available - if it.done { - select { - case log := <-it.logs: - it.Event = new(TaikoL2AddressManagerChanged) - if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { - it.fail = err - return false - } - it.Event.Raw = log - return true - - default: - return false - } - } - // Iterator still in progress, wait for either a data or an error event - select { - case log := <-it.logs: - it.Event = new(TaikoL2AddressManagerChanged) - if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { - it.fail = err - return false - } - it.Event.Raw = log - return true - - case err := <-it.sub.Err(): - it.done = true - it.fail = err - return it.Next() - } -} - -// Error returns any retrieval or parsing error occurred during filtering. -func (it *TaikoL2AddressManagerChangedIterator) Error() error { - return it.fail -} - -// Close terminates the iteration process, releasing any pending underlying -// resources. -func (it *TaikoL2AddressManagerChangedIterator) Close() error { - it.sub.Unsubscribe() - return nil -} - -// TaikoL2AddressManagerChanged represents a AddressManagerChanged event raised by the TaikoL2 contract. -type TaikoL2AddressManagerChanged struct { - AddressManager common.Address - Raw types.Log // Blockchain specific contextual infos -} - -// FilterAddressManagerChanged is a free log retrieval operation binding the contract event 0x399ded90cb5ed8d89ef7e76ff4af65c373f06d3bf5d7eef55f4228e7b702a18b. -// -// Solidity: event AddressManagerChanged(address indexed addressManager) -func (_TaikoL2 *TaikoL2Filterer) FilterAddressManagerChanged(opts *bind.FilterOpts, addressManager []common.Address) (*TaikoL2AddressManagerChangedIterator, error) { - - var addressManagerRule []interface{} - for _, addressManagerItem := range addressManager { - addressManagerRule = append(addressManagerRule, addressManagerItem) - } - - logs, sub, err := _TaikoL2.contract.FilterLogs(opts, "AddressManagerChanged", addressManagerRule) - if err != nil { - return nil, err - } - return &TaikoL2AddressManagerChangedIterator{contract: _TaikoL2.contract, event: "AddressManagerChanged", logs: logs, sub: sub}, nil -} - -// WatchAddressManagerChanged is a free log subscription operation binding the contract event 0x399ded90cb5ed8d89ef7e76ff4af65c373f06d3bf5d7eef55f4228e7b702a18b. -// -// Solidity: event AddressManagerChanged(address indexed addressManager) -func (_TaikoL2 *TaikoL2Filterer) WatchAddressManagerChanged(opts *bind.WatchOpts, sink chan<- *TaikoL2AddressManagerChanged, addressManager []common.Address) (event.Subscription, error) { - - var addressManagerRule []interface{} - for _, addressManagerItem := range addressManager { - addressManagerRule = append(addressManagerRule, addressManagerItem) - } - - logs, sub, err := _TaikoL2.contract.WatchLogs(opts, "AddressManagerChanged", addressManagerRule) - if err != nil { - return nil, err - } - return event.NewSubscription(func(quit <-chan struct{}) error { - defer sub.Unsubscribe() - for { - select { - case log := <-logs: - // New log arrived, parse the event and forward to the user - event := new(TaikoL2AddressManagerChanged) - if err := _TaikoL2.contract.UnpackLog(event, "AddressManagerChanged", log); err != nil { - return err - } - event.Raw = log - - select { - case sink <- event: - case err := <-sub.Err(): - return err - case <-quit: - return nil - } - case err := <-sub.Err(): - return err - case <-quit: - return nil - } - } - }), nil -} - -// ParseAddressManagerChanged is a log parse operation binding the contract event 0x399ded90cb5ed8d89ef7e76ff4af65c373f06d3bf5d7eef55f4228e7b702a18b. -// -// Solidity: event AddressManagerChanged(address indexed addressManager) -func (_TaikoL2 *TaikoL2Filterer) ParseAddressManagerChanged(log types.Log) (*TaikoL2AddressManagerChanged, error) { - event := new(TaikoL2AddressManagerChanged) - if err := _TaikoL2.contract.UnpackLog(event, "AddressManagerChanged", log); err != nil { - return nil, err - } - event.Raw = log - return event, nil -} - // TaikoL2AnchoredIterator is returned from FilterAnchored and is used to iterate over the raw logs and unpacked data for Anchored events raised by the TaikoL2 contract. type TaikoL2AnchoredIterator struct { Event *TaikoL2Anchored // Event containing the contract specifics and raw log @@ -1052,20 +1001,15 @@ func (it *TaikoL2AnchoredIterator) Close() error { // TaikoL2Anchored represents a Anchored event raised by the TaikoL2 contract. type TaikoL2Anchored struct { - Number uint64 - Basefee uint64 - Gaslimit uint32 - Timestamp uint64 - ParentHash [32]byte - Prevrandao *big.Int - Coinbase common.Address - Chainid uint64 - Raw types.Log // Blockchain specific contextual infos + ParentHash [32]byte + GasExcess *big.Int + BlockReward *big.Int + Raw types.Log // Blockchain specific contextual infos } -// FilterAnchored is a free log retrieval operation binding the contract event 0xf0fde5abf5476e9fb590d1e786d07c1ceee1d3c80cce3fafe0478e203cf5184e. +// FilterAnchored is a free log retrieval operation binding the contract event 0xf3a1ab67cc789a3e3961363ffd80ff59c13f394ff689b2fb85531a45dd0aa80d. // -// Solidity: event Anchored(uint64 number, uint64 basefee, uint32 gaslimit, uint64 timestamp, bytes32 parentHash, uint256 prevrandao, address coinbase, uint64 chainid) +// Solidity: event Anchored(bytes32 parentHash, uint128 gasExcess, uint128 blockReward) func (_TaikoL2 *TaikoL2Filterer) FilterAnchored(opts *bind.FilterOpts) (*TaikoL2AnchoredIterator, error) { logs, sub, err := _TaikoL2.contract.FilterLogs(opts, "Anchored") @@ -1075,9 +1019,9 @@ func (_TaikoL2 *TaikoL2Filterer) FilterAnchored(opts *bind.FilterOpts) (*TaikoL2 return &TaikoL2AnchoredIterator{contract: _TaikoL2.contract, event: "Anchored", logs: logs, sub: sub}, nil } -// WatchAnchored is a free log subscription operation binding the contract event 0xf0fde5abf5476e9fb590d1e786d07c1ceee1d3c80cce3fafe0478e203cf5184e. +// WatchAnchored is a free log subscription operation binding the contract event 0xf3a1ab67cc789a3e3961363ffd80ff59c13f394ff689b2fb85531a45dd0aa80d. // -// Solidity: event Anchored(uint64 number, uint64 basefee, uint32 gaslimit, uint64 timestamp, bytes32 parentHash, uint256 prevrandao, address coinbase, uint64 chainid) +// Solidity: event Anchored(bytes32 parentHash, uint128 gasExcess, uint128 blockReward) func (_TaikoL2 *TaikoL2Filterer) WatchAnchored(opts *bind.WatchOpts, sink chan<- *TaikoL2Anchored) (event.Subscription, error) { logs, sub, err := _TaikoL2.contract.WatchLogs(opts, "Anchored") @@ -1112,9 +1056,9 @@ func (_TaikoL2 *TaikoL2Filterer) WatchAnchored(opts *bind.WatchOpts, sink chan<- }), nil } -// ParseAnchored is a log parse operation binding the contract event 0xf0fde5abf5476e9fb590d1e786d07c1ceee1d3c80cce3fafe0478e203cf5184e. +// ParseAnchored is a log parse operation binding the contract event 0xf3a1ab67cc789a3e3961363ffd80ff59c13f394ff689b2fb85531a45dd0aa80d. // -// Solidity: event Anchored(uint64 number, uint64 basefee, uint32 gaslimit, uint64 timestamp, bytes32 parentHash, uint256 prevrandao, address coinbase, uint64 chainid) +// Solidity: event Anchored(bytes32 parentHash, uint128 gasExcess, uint128 blockReward) func (_TaikoL2 *TaikoL2Filterer) ParseAnchored(log types.Log) (*TaikoL2Anchored, error) { event := new(TaikoL2Anchored) if err := _TaikoL2.contract.UnpackLog(event, "Anchored", log); err != nil { diff --git a/packages/relayer/bridge.go b/packages/relayer/bridge.go index 7f2b40da95..7b555b7fc8 100644 --- a/packages/relayer/bridge.go +++ b/packages/relayer/bridge.go @@ -1,8 +1,6 @@ package relayer import ( - "math/big" - "github.com/ethereum/go-ethereum/accounts/abi/bind" "github.com/ethereum/go-ethereum/core/types" "github.com/ethereum/go-ethereum/event" @@ -16,9 +14,9 @@ type Bridge interface { msgHash [][32]byte, ) (event.Subscription, error) FilterMessageSent(opts *bind.FilterOpts, msgHash [][32]byte) (*bridge.BridgeMessageSentIterator, error) - GetMessageStatus(opts *bind.CallOpts, msgHash [32]byte) (uint8, error) + MessageStatus(opts *bind.CallOpts, msgHash [32]byte) (uint8, error) ProcessMessage(opts *bind.TransactOpts, message bridge.IBridgeMessage, proof []byte) (*types.Transaction, error) - IsMessageReceived(opts *bind.CallOpts, msgHash [32]byte, srcChainId *big.Int, proof []byte) (bool, error) // nolint + ProveMessageReceived(opts *bind.CallOpts, message bridge.IBridgeMessage, proof []byte) (bool, error) FilterMessageStatusChanged( opts *bind.FilterOpts, msgHash [][32]byte, diff --git a/packages/relayer/header_syncer.go b/packages/relayer/header_syncer.go index 662e54abb9..3b52ae8eac 100644 --- a/packages/relayer/header_syncer.go +++ b/packages/relayer/header_syncer.go @@ -2,8 +2,12 @@ package relayer import ( "github.com/ethereum/go-ethereum/accounts/abi/bind" + "github.com/taikoxyz/taiko-mono/packages/relayer/bindings/icrosschainsync" ) type HeaderSyncer interface { - GetCrossChainBlockHash(opts *bind.CallOpts, blockId uint64) ([32]byte, error) + GetSyncedSnippet( + opts *bind.CallOpts, + blockId uint64, + ) (icrosschainsync.ICrossChainSyncSnippet, error) } diff --git a/packages/relayer/indexer/handle_event.go b/packages/relayer/indexer/handle_event.go index 8052cce0d3..5620740ebe 100644 --- a/packages/relayer/indexer/handle_event.go +++ b/packages/relayer/indexer/handle_event.go @@ -110,7 +110,7 @@ func (i *Indexer) eventStatusFromMsgHash( defer cancel() - messageStatus, err := i.destBridge.GetMessageStatus(&bind.CallOpts{ + messageStatus, err := i.destBridge.MessageStatus(&bind.CallOpts{ Context: ctx, }, signal) if err != nil { diff --git a/packages/relayer/mock/bridge.go b/packages/relayer/mock/bridge.go index 5b198241db..be4e7317aa 100644 --- a/packages/relayer/mock/bridge.go +++ b/packages/relayer/mock/bridge.go @@ -15,6 +15,7 @@ import ( var ( SuccessMsgHash = [32]byte{0x1} + SuccessId = big.NewInt(1) FailSignal = [32]byte{0x2} ) @@ -121,7 +122,7 @@ func (b *Bridge) FilterMessageStatusChanged( return &bridge.BridgeMessageStatusChangedIterator{}, nil } -func (b *Bridge) GetMessageStatus(opts *bind.CallOpts, msgHash [32]byte) (uint8, error) { +func (b *Bridge) MessageStatus(opts *bind.CallOpts, msgHash [32]byte) (uint8, error) { if msgHash == SuccessMsgHash { return uint8(relayer.EventStatusNew), nil } @@ -141,8 +142,8 @@ func (b *Bridge) ProcessMessage( return ProcessMessageTx, nil } -func (b *Bridge) IsMessageReceived(opts *bind.CallOpts, signal [32]byte, srcChainId *big.Int, proof []byte) (bool, error) { // nolint - if signal == SuccessMsgHash { +func (b *Bridge) ProveMessageReceived(opts *bind.CallOpts, message bridge.IBridgeMessage, proof []byte) (bool, error) { + if message.Id.Uint64() == SuccessId.Uint64() { return true, nil } diff --git a/packages/relayer/mock/header_syncer.go b/packages/relayer/mock/header_syncer.go index fe204c9b42..a5b4688022 100644 --- a/packages/relayer/mock/header_syncer.go +++ b/packages/relayer/mock/header_syncer.go @@ -4,17 +4,24 @@ import ( "errors" "github.com/ethereum/go-ethereum/accounts/abi/bind" + "github.com/taikoxyz/taiko-mono/packages/relayer/bindings/icrosschainsync" ) -var SuccessHeader = [32]byte{0x1} +var SuccessHeader = icrosschainsync.ICrossChainSyncSnippet{ + BlockHash: [32]byte{0x1}, + SignalRoot: [32]byte{0x2}, +} type HeaderSyncer struct { Fail bool } -func (h *HeaderSyncer) GetCrossChainBlockHash(opts *bind.CallOpts, blockId uint64) ([32]byte, error) { +func (h *HeaderSyncer) GetSyncedSnippet( + opts *bind.CallOpts, + blockId uint64, +) (icrosschainsync.ICrossChainSyncSnippet, error) { if h.Fail { - return [32]byte{}, errors.New("fail") + return icrosschainsync.ICrossChainSyncSnippet{}, errors.New("fail") } return SuccessHeader, nil diff --git a/packages/relayer/processor/process_message.go b/packages/relayer/processor/process_message.go index 2a0b0ceb86..e235a9d01a 100644 --- a/packages/relayer/processor/process_message.go +++ b/packages/relayer/processor/process_message.go @@ -39,11 +39,11 @@ func (p *Processor) eventStatusFromMsgHash( defer cancel() - messageStatus, err := p.destBridge.GetMessageStatus(&bind.CallOpts{ + messageStatus, err := p.destBridge.MessageStatus(&bind.CallOpts{ Context: ctx, }, signal) if err != nil { - return 0, errors.Wrap(err, "svc.destBridge.GetMessageStatus") + return 0, errors.Wrap(err, "svc.destBridge.MessageStatus") } eventStatus = relayer.EventStatus(messageStatus) @@ -94,7 +94,7 @@ func (p *Processor) processMessage( // get latest synced header since not every header is synced from L1 => L2, // and later blocks still have the storage trie proof from previous blocks. - latestSyncedHeader, err := p.destHeaderSyncer.GetCrossChainBlockHash(&bind.CallOpts{}, 0) + latestSyncedSnippet, err := p.destHeaderSyncer.GetSyncedSnippet(&bind.CallOpts{}, 0) if err != nil { return errors.Wrap(err, "taiko.GetSyncedHeader") } @@ -106,7 +106,13 @@ func (p *Processor) processMessage( key := hex.EncodeToString(hashed) - encodedSignalProof, err := p.prover.EncodedSignalProof(ctx, p.rpc, p.srcSignalServiceAddress, key, latestSyncedHeader) + encodedSignalProof, err := p.prover.EncodedSignalProof( + ctx, + p.rpc, + p.srcSignalServiceAddress, + key, + latestSyncedSnippet.BlockHash, + ) if err != nil { slog.Error("srcChainID: %v, destChainID: %v, txHash: %v: msgHash: %v, from: %v encountered signalProofError %v", msgBody.Event.Message.SrcChainId.String(), @@ -123,9 +129,9 @@ func (p *Processor) processMessage( // check if message is received first. if not, it will definitely fail, // so we can exit early on this one. there is most likely // an issue with the signal generation. - received, err := p.destBridge.IsMessageReceived(&bind.CallOpts{ + received, err := p.destBridge.ProveMessageReceived(&bind.CallOpts{ Context: ctx, - }, msgBody.Event.MsgHash, msgBody.Event.Message.SrcChainId, encodedSignalProof) + }, msgBody.Event.Message, encodedSignalProof) if err != nil { return errors.Wrap(err, "p.destBridge.IsMessageReceived") } @@ -181,7 +187,7 @@ func (p *Processor) processMessage( slog.Info("Mined tx", "txHash", hex.EncodeToString(tx.Hash().Bytes())) - messageStatus, err := p.destBridge.GetMessageStatus(&bind.CallOpts{}, msgBody.Event.MsgHash) + messageStatus, err := p.destBridge.MessageStatus(&bind.CallOpts{}, msgBody.Event.MsgHash) if err != nil { return errors.Wrap(err, "p.destBridge.GetMessageStatus") } diff --git a/packages/relayer/processor/process_message_test.go b/packages/relayer/processor/process_message_test.go index 42d5108115..235d40af50 100644 --- a/packages/relayer/processor/process_message_test.go +++ b/packages/relayer/processor/process_message_test.go @@ -26,6 +26,7 @@ func Test_sendProcessMessageCall(t *testing.T) { &bridge.BridgeMessageSent{ Message: bridge.IBridgeMessage{ DestChainId: mock.MockChainID, + Id: big.NewInt(1), Fee: new(big.Int).Add(mock.ProcessMessageTx.Cost(), big.NewInt(1)), }, Raw: types.Log{ @@ -48,6 +49,7 @@ func Test_ProcessMessage_messageUnprocessable(t *testing.T) { Event: &bridge.BridgeMessageSent{ Message: bridge.IBridgeMessage{ GasLimit: big.NewInt(1), + Id: big.NewInt(1), }, Raw: types.Log{ Address: relayer.ZeroAddress, @@ -78,6 +80,7 @@ func Test_ProcessMessage_gasLimit0(t *testing.T) { Event: &bridge.BridgeMessageSent{ Message: bridge.IBridgeMessage{ GasLimit: big.NewInt(0), + Id: big.NewInt(1), }, Raw: types.Log{ Address: relayer.ZeroAddress, @@ -108,6 +111,7 @@ func Test_ProcessMessage_noChainId(t *testing.T) { Event: &bridge.BridgeMessageSent{ Message: bridge.IBridgeMessage{ GasLimit: big.NewInt(1), + Id: big.NewInt(0), }, MsgHash: mock.SuccessMsgHash, Raw: types.Log{ @@ -129,7 +133,7 @@ func Test_ProcessMessage_noChainId(t *testing.T) { } err = p.processMessage(context.Background(), msg) - assert.EqualError(t, err, "bind.NewKeyedTransactorWithChainID: no chain id specified") + assert.EqualError(t, err, "message not received") } func Test_ProcessMessage(t *testing.T) { @@ -142,6 +146,7 @@ func Test_ProcessMessage(t *testing.T) { DestChainId: mock.MockChainID, Fee: big.NewInt(1000000000), SrcChainId: mock.MockChainID, + Id: big.NewInt(1), }, MsgHash: mock.SuccessMsgHash, Raw: types.Log{ diff --git a/packages/relayer/processor/wait_header_synced.go b/packages/relayer/processor/wait_header_synced.go index 2c8465546e..d78044f31c 100644 --- a/packages/relayer/processor/wait_header_synced.go +++ b/packages/relayer/processor/wait_header_synced.go @@ -27,12 +27,12 @@ func (p *Processor) waitHeaderSynced(ctx context.Context, event *bridge.BridgeMe ) // get latest synced header since not every header is synced from L1 => L2, // and later blocks still have the storage trie proof from previous blocks. - latestSyncedHeader, err := p.destHeaderSyncer.GetCrossChainBlockHash(&bind.CallOpts{}, 0) + latestSyncedSnippet, err := p.destHeaderSyncer.GetSyncedSnippet(&bind.CallOpts{}, 0) if err != nil { return errors.Wrap(err, "p.destHeaderSyncer.GetCrossChainBlockHash") } - header, err := p.srcEthClient.HeaderByHash(ctx, latestSyncedHeader) + header, err := p.srcEthClient.HeaderByHash(ctx, latestSyncedSnippet.BlockHash) if err != nil { return errors.Wrap(err, "p.destHeaderSyncer.GetCrossChainBlockHash") } From 7a58e9517123da9b9499cceb9a42de62b4c88738 Mon Sep 17 00:00:00 2001 From: adaki2004 Date: Wed, 18 Oct 2023 10:06:25 +0200 Subject: [PATCH 57/87] Add refund in onMessageRecalled --- packages/protocol/contracts/tokenvault/ERC20Vault.sol | 2 ++ 1 file changed, 2 insertions(+) diff --git a/packages/protocol/contracts/tokenvault/ERC20Vault.sol b/packages/protocol/contracts/tokenvault/ERC20Vault.sol index 50e7862d9a..b57ee92f05 100644 --- a/packages/protocol/contracts/tokenvault/ERC20Vault.sol +++ b/packages/protocol/contracts/tokenvault/ERC20Vault.sol @@ -242,6 +242,8 @@ contract ERC20Vault is } } + message.user.sendEther(message.value); + emit TokenReleased({ msgHash: msgHash, from: message.user, From b8e699cb791efbb3f0ff45a79e2b0025921fb6d5 Mon Sep 17 00:00:00 2001 From: adaki2004 Date: Wed, 18 Oct 2023 10:34:10 +0200 Subject: [PATCH 58/87] fix typo --- packages/protocol/contracts/signal/SignalService.sol | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/protocol/contracts/signal/SignalService.sol b/packages/protocol/contracts/signal/SignalService.sol index 7342c34925..39c4369349 100644 --- a/packages/protocol/contracts/signal/SignalService.sol +++ b/packages/protocol/contracts/signal/SignalService.sol @@ -156,7 +156,7 @@ contract SignalService is EssentialContract, ISignalService { pure returns (bytes32) { - return keccak256(abi.encodePacked("SINGAL", chainId, app, signal)); + return keccak256(abi.encodePacked("SIGNAL", chainId, app, signal)); } } From 372b8e5f7916f26f7d8371112649971980d51039 Mon Sep 17 00:00:00 2001 From: adaki2004 Date: Wed, 18 Oct 2023 11:53:47 +0200 Subject: [PATCH 59/87] Added sgxAndZk verifier to deployment --- packages/protocol/script/DeployOnL1.s.sol | 11 +++++++++++ 1 file changed, 11 insertions(+) diff --git a/packages/protocol/script/DeployOnL1.s.sol b/packages/protocol/script/DeployOnL1.s.sol index 76969121b8..662f286b2f 100644 --- a/packages/protocol/script/DeployOnL1.s.sol +++ b/packages/protocol/script/DeployOnL1.s.sol @@ -15,6 +15,7 @@ import "../contracts/L1/TaikoToken.sol"; import "../contracts/L1/TaikoL1.sol"; import "../contracts/L1/verifiers/PseZkVerifier.sol"; import "../contracts/L1/verifiers/SgxVerifier.sol"; +import "../contracts/L1/verifiers/SgxAndZkVerifier.sol"; import "../contracts/L1/verifiers/GuardianVerifier.sol"; import "../contracts/L1/tiers/ITierProvider.sol"; import "../contracts/L1/tiers/TaikoA6TierProvider.sol"; @@ -199,6 +200,16 @@ contract DeployOnL1 is Script { ) ); + // SgxAndZkVerifier + SgxAndZkVerifier sgxAndZkVerifier = new ProxiedSgxAndZkVerifier(); + deployProxy( + "tier_sgx_and_pse_zkevm", + address(sgxAndZkVerifier), + bytes.concat( + sgxVerifier.init.selector, abi.encode(addressManagerProxy) + ) + ); + // PseZkVerifier PseZkVerifier pseZkVerifier = new ProxiedPseZkVerifier(); deployProxy( From ee4f93edea1a2273172cb3db7082f3b73df51c3c Mon Sep 17 00:00:00 2001 From: adaki2004 Date: Wed, 18 Oct 2023 15:34:48 +0200 Subject: [PATCH 60/87] Test for proof and hop proof --- .../protocol/test/signal/SignalService.t.sol | 90 +++++++++++++++++++ 1 file changed, 90 insertions(+) diff --git a/packages/protocol/test/signal/SignalService.t.sol b/packages/protocol/test/signal/SignalService.t.sol index c1b357fb2f..5aad33897d 100644 --- a/packages/protocol/test/signal/SignalService.t.sol +++ b/packages/protocol/test/signal/SignalService.t.sol @@ -79,4 +79,94 @@ contract TestSignalService is TestBase { assertTrue(signalService.isSignalSent(Alice, signal)); } } + + function test_SignalService_proveSignalReceived_L1_L2() public { + uint256 chainId = 11_155_111; // Created the proofs on a deployed + // Sepolia contract, this is why this chainId. + address app = 0x927a146e18294efb36edCacC99D9aCEA6aB16b95; // Mock app, + // actually it is an EOA, but it is ok for tests! + bytes32 signal = + 0x21761f7cd1af3972774272b39a0f4602dbcd418325cddb14e156b4bb073d52a8; + bytes memory inclusionProof = + hex"e5a4e3a120be7cf54b321b1863f6772ac6b5776a712628a78149e662c87d93ae1ef2a5b3bd01"; //eth_getProof's + // result RLP encoded storage proof + bytes32 signalRoot = + 0x15e2682cef63ccbfeb896e5faaf1eeaa2a834301e468c92f9764be56416682d4; //eth_getProof + // result's storage hash + + vm.startPrank(Alice); + addressManager.setAddress( + block.chainid, "taiko", address(crossChainSync) + ); + + crossChainSync.setSyncedData("", signalRoot); + + SignalService.Proof memory p; + SignalService.Hop[] memory h; + p.height = 10; + p.storageProof = inclusionProof; + p.hops = h; + + bool isSignalReceived = signalService.proveSignalReceived( + chainId, app, signal, abi.encode(p) + ); + assertEq(isSignalReceived, true); + } + + function test_SignalService_proveSignalReceived_L2_L2() public { + uint256 chainId = 11_155_111; // Created the proofs on a deployed + // Sepolia contract, this is why this chainId. This works as a + // static 'chainId' becuase i imitated 2 contracts (L2A and L1 + // Signal Service contracts) on Sepolia. + address app = 0x927a146e18294efb36edCacC99D9aCEA6aB16b95; // Mock app, + // actually it is an EOA, but it is ok for tests! Same applies here, + // i imitated everything with one 'app' (Bridge) with my same EOA + // wallet. + bytes32 signal_of_L2A_msgHash = + 0x21761f7cd1af3972774272b39a0f4602dbcd418325cddb14e156b4bb073d52a8; // + bytes memory inclusionProof_of_L2A_msgHash = + hex"e5a4e3a120be7cf54b321b1863f6772ac6b5776a712628a78149e662c87d93ae1ef2a5b3bd01"; //eth_getProof's + // result RLP encoded storage proof + bytes32 signalRoot_of_L2 = + 0x15e2682cef63ccbfeb896e5faaf1eeaa2a834301e468c92f9764be56416682d4; //eth_getProof + // result's storage hash + bytes memory hop_inclusionProof_from_L1_SignalService = + hex"e5a4e3a1201a9344e0a9498d6fb8f30b92d061ca7cee3ec0cdf641e63b777b94b5717b21be01"; //eth_getProof's + // result RLP encoded storage proof + bytes32 l1_common_signalService_root = + 0x630872b5926b611c6dbcff64c181865a376d4e9250b594e8669198e0f19aa9b0; //eth_getProof + // result's storage hash + + vm.startPrank(Alice); + addressManager.setAddress( + block.chainid, "taiko", address(crossChainSync) + ); + + vm.startPrank(Alice); + addressManager.setAddress(chainId, "taiko", app); + + crossChainSync.setSyncedData("", l1_common_signalService_root); + + SignalService.Proof memory p; + p.height = 10; + p.storageProof = inclusionProof_of_L2A_msgHash; + + // Imagine this scenario: L2A to L2B birdging. + // The 'hop' proof is the one that proves to L2B, that L1 Signal service + // contains the signalRoot (as storage slot / leaf) with value 0x1. + // The 'normal' proof is the one which proves that the resolving + // hop.signalRoot is the one which belongs to L2A, and the proof is + // accordingly. + SignalService.Hop[] memory h = new SignalService.Hop[](1); + h[0].chainId = chainId; + h[0].signalRoot = signalRoot_of_L2; + h[0].storageProof = hop_inclusionProof_from_L1_SignalService; + + p.hops = h; + + bool isSignalReceived = signalService.proveSignalReceived( + chainId, app, signal_of_L2A_msgHash, abi.encode(p) + ); + assertEq(isSignalReceived, true); + } } From 362ee5724c64a3810df7d82f1da3dc3e820c8c67 Mon Sep 17 00:00:00 2001 From: Daniel Wang Date: Thu, 19 Oct 2023 16:52:54 +0800 Subject: [PATCH 61/87] getInstance -> calcInstance --- CHANGELOG.md | 2 +- packages/protocol/CHANGELOG.md | 2 +- packages/protocol/contracts/L1/verifiers/PseZkVerifier.sol | 4 ++-- packages/protocol/test/L1/TaikoL1TestBase.sol | 2 +- packages/website/pages/docs/concepts/proposing.mdx | 2 +- 5 files changed, 6 insertions(+), 6 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 91b61da912..a6a51bf3c5 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -121,7 +121,7 @@ * **pos-dashboard:** Changed font color of error message ([#14543](https://github.com/taikoxyz/taiko-mono/issues/14543)) ([279d4e9](https://github.com/taikoxyz/taiko-mono/commit/279d4e96bf378eb651b91976d7729b0675ea1368)) * **protocol:** block reward must be minted ([#14595](https://github.com/taikoxyz/taiko-mono/issues/14595)) ([e92b1da](https://github.com/taikoxyz/taiko-mono/commit/e92b1da2ced73c2b28a825fce916acededab0a39)) * **protocol:** change transition ID from uint16 to uint32 ([#14620](https://github.com/taikoxyz/taiko-mono/issues/14620)) ([c8969b6](https://github.com/taikoxyz/taiko-mono/commit/c8969b64bbaacf9ec6d239608509424fdc02ee97)) -* **protocol:** remove proof from getInstance calculation ([#14623](https://github.com/taikoxyz/taiko-mono/issues/14623)) ([2eedc33](https://github.com/taikoxyz/taiko-mono/commit/2eedc33c213cb5d0abf9daa8bc9bd21b730ae6af)) +* **protocol:** remove proof from calcInstance calculation ([#14623](https://github.com/taikoxyz/taiko-mono/issues/14623)) ([2eedc33](https://github.com/taikoxyz/taiko-mono/commit/2eedc33c213cb5d0abf9daa8bc9bd21b730ae6af)) * **protocol:** revert impl deployment V2 ([#14621](https://github.com/taikoxyz/taiko-mono/issues/14621)) ([7e59e0b](https://github.com/taikoxyz/taiko-mono/commit/7e59e0b0077e4d81bcd5333bc6f0900e0761d6ea)) * **relayer:** Eth bridge ([#14609](https://github.com/taikoxyz/taiko-mono/issues/14609)) ([f5207ae](https://github.com/taikoxyz/taiko-mono/commit/f5207ae19c48d9aaa83dab2739cd05d9c2985112)) diff --git a/packages/protocol/CHANGELOG.md b/packages/protocol/CHANGELOG.md index 0962c1b143..c39160090f 100644 --- a/packages/protocol/CHANGELOG.md +++ b/packages/protocol/CHANGELOG.md @@ -34,7 +34,7 @@ * **protocol:** block reward must be minted ([#14595](https://github.com/taikoxyz/taiko-mono/issues/14595)) ([e92b1da](https://github.com/taikoxyz/taiko-mono/commit/e92b1da2ced73c2b28a825fce916acededab0a39)) * **protocol:** change transition ID from uint16 to uint32 ([#14620](https://github.com/taikoxyz/taiko-mono/issues/14620)) ([c8969b6](https://github.com/taikoxyz/taiko-mono/commit/c8969b64bbaacf9ec6d239608509424fdc02ee97)) -* **protocol:** remove proof from getInstance calculation ([#14623](https://github.com/taikoxyz/taiko-mono/issues/14623)) ([2eedc33](https://github.com/taikoxyz/taiko-mono/commit/2eedc33c213cb5d0abf9daa8bc9bd21b730ae6af)) +* **protocol:** remove proof from calcInstance calculation ([#14623](https://github.com/taikoxyz/taiko-mono/issues/14623)) ([2eedc33](https://github.com/taikoxyz/taiko-mono/commit/2eedc33c213cb5d0abf9daa8bc9bd21b730ae6af)) * **protocol:** revert impl deployment V2 ([#14621](https://github.com/taikoxyz/taiko-mono/issues/14621)) ([7e59e0b](https://github.com/taikoxyz/taiko-mono/commit/7e59e0b0077e4d81bcd5333bc6f0900e0761d6ea)) ## [0.13.0](https://github.com/taikoxyz/taiko-mono/compare/protocol-v0.12.0...protocol-v0.13.0) (2023-08-15) diff --git a/packages/protocol/contracts/L1/verifiers/PseZkVerifier.sol b/packages/protocol/contracts/L1/verifiers/PseZkVerifier.sol index 87b93884d9..dcb716525b 100644 --- a/packages/protocol/contracts/L1/verifiers/PseZkVerifier.sol +++ b/packages/protocol/contracts/L1/verifiers/PseZkVerifier.sol @@ -42,7 +42,7 @@ contract PseZkVerifier is EssentialContract, IVerifier { // Do not run proof verification to contest an existing proof if (isContesting) return; - bytes32 instance = getInstance(prover, evidence); + bytes32 instance = calcInstance(prover, evidence); // Validate the instance using bytes utilities. bool verified = LibBytesUtils.equal( @@ -75,7 +75,7 @@ contract PseZkVerifier is EssentialContract, IVerifier { if (bytes32(ret) != keccak256("taiko")) revert L1_INVALID_PROOF(); } - function getInstance( + function calcInstance( address prover, TaikoData.BlockEvidence memory evidence ) diff --git a/packages/protocol/test/L1/TaikoL1TestBase.sol b/packages/protocol/test/L1/TaikoL1TestBase.sol index 799c27955e..33b8d40717 100644 --- a/packages/protocol/test/L1/TaikoL1TestBase.sol +++ b/packages/protocol/test/L1/TaikoL1TestBase.sol @@ -210,7 +210,7 @@ abstract contract TaikoL1TestBase is TestBase { proof: new bytes(102) }); - bytes32 instance = pv.getInstance(prover, evidence); + bytes32 instance = pv.calcInstance(prover, evidence); uint16 verifierId = 300; // 300 as see mock verifier in line 95 evidence.proof = bytes.concat( diff --git a/packages/website/pages/docs/concepts/proposing.mdx b/packages/website/pages/docs/concepts/proposing.mdx index dd92ed9db4..3dc15c0822 100644 --- a/packages/website/pages/docs/concepts/proposing.mdx +++ b/packages/website/pages/docs/concepts/proposing.mdx @@ -46,7 +46,7 @@ The anchor transaction is required to be the first transaction in a Taiko block When the block is proposed, the TaikoL1 contract will set some L2 block metadata such as `meta.coinbase`, which is the sender of the proposeBlock() tx. When the L2 client builds the L2 block, it will set the `block.coinbase` to this `meta.coinbase` specified for the block on L1. The validity proof (ZKP) for this block must check that the `block.coinbase` is indeed the `meta.coinbase` recorded on L1. -When the ZKP instance is returned from the `TaikoL1` contract with `getInstance()`, the `evidence.metaHash` for the proposed block is included. This is how the ZKP verifier can check that the L2's `block.coinbase` (and other block-level variables as well) are correctly set to what is specified in the metadata on L1. +When the ZKP instance is returned from the `TaikoL1` contract with `calcInstance()`, the `evidence.metaHash` for the proposed block is included. This is how the ZKP verifier can check that the L2's `block.coinbase` (and other block-level variables as well) are correctly set to what is specified in the metadata on L1. ## How does the proposer earn TKO From ee6f34d9ba531713bb9a19c2b152ef54c13d296d Mon Sep 17 00:00:00 2001 From: Daniel Wang Date: Thu, 19 Oct 2023 17:06:12 +0800 Subject: [PATCH 62/87] remove errors --- packages/protocol/contracts/L1/TaikoErrors.sol | 2 -- packages/protocol/contracts/L1/libs/LibProposing.sol | 2 -- 2 files changed, 4 deletions(-) diff --git a/packages/protocol/contracts/L1/TaikoErrors.sol b/packages/protocol/contracts/L1/TaikoErrors.sol index b12a17371d..8aade39b34 100644 --- a/packages/protocol/contracts/L1/TaikoErrors.sol +++ b/packages/protocol/contracts/L1/TaikoErrors.sol @@ -39,9 +39,7 @@ abstract contract TaikoErrors { error L1_TOO_MANY_BLOCKS(); error L1_TRANSITION_ID_ZERO(); error L1_TRANSITION_NOT_FOUND(); - error L1_TXLIST_INVALID_RANGE(); error L1_TXLIST_MISMATCH(); - error L1_TXLIST_NOT_FOUND(); error L1_TXLIST_TOO_LARGE(); error L1_UNAUTHORIZED(); error L1_UNEXPECTED_TRANSITION_ID(); diff --git a/packages/protocol/contracts/L1/libs/LibProposing.sol b/packages/protocol/contracts/L1/libs/LibProposing.sol index ddfed19776..5e1d066923 100644 --- a/packages/protocol/contracts/L1/libs/LibProposing.sol +++ b/packages/protocol/contracts/L1/libs/LibProposing.sol @@ -40,9 +40,7 @@ library LibProposing { error L1_ASSIGNMENT_INSUFFICIENT_FEE(); error L1_TIER_NOT_FOUND(); error L1_TOO_MANY_BLOCKS(); - error L1_TXLIST_INVALID_RANGE(); error L1_TXLIST_MISMATCH(); - error L1_TXLIST_NOT_FOUND(); error L1_TXLIST_TOO_LARGE(); error L1_UNAUTHORIZED(); From cb21e4ecd853685f914c2c7a9565a1cc0b438615 Mon Sep 17 00:00:00 2001 From: Daniel Wang Date: Thu, 19 Oct 2023 20:16:41 +0800 Subject: [PATCH 63/87] Update SgxVerifier.sol --- packages/protocol/contracts/L1/verifiers/SgxVerifier.sol | 9 ++++----- 1 file changed, 4 insertions(+), 5 deletions(-) diff --git a/packages/protocol/contracts/L1/verifiers/SgxVerifier.sol b/packages/protocol/contracts/L1/verifiers/SgxVerifier.sol index ca94e96e59..ffa029d351 100644 --- a/packages/protocol/contracts/L1/verifiers/SgxVerifier.sol +++ b/packages/protocol/contracts/L1/verifiers/SgxVerifier.sol @@ -19,8 +19,6 @@ import { IVerifier } from "./IVerifier.sol"; /// @title SgxVerifier contract SgxVerifier is EssentialContract, IVerifier { - using ECDSAUpgradeable for bytes32; - struct Instance { address addr; uint64 addedAt; // We can calculate if expired @@ -83,7 +81,7 @@ contract SgxVerifier is EssentialContract, IVerifier { if (_instances.length == 0) revert SGX_INVALID_INSTANCES(); bytes32 signedHash = keccak256(abi.encode("ADD_INSTANCES", _instances)); - address oldInstance = signedHash.recover(signature); + address oldInstance = ECDSAUpgradeable.recover(signedHash, signature); if (!_isInstanceValid(id, oldInstance)) revert SGX_INVALID_INSTANCE(); _replaceInstance(id, oldInstance, _instances[0]); @@ -112,8 +110,9 @@ contract SgxVerifier is EssentialContract, IVerifier { address newInstance = address(bytes20(LibBytesUtils.slice(evidence.proof, 2, 20))); bytes memory signature = LibBytesUtils.slice(evidence.proof, 22); - address oldInstance = - getSignedHash(evidence, prover, newInstance).recover(signature); + address oldInstance = ECDSAUpgradeable.recover( + getSignedHash(evidence, prover, newInstance), signature + ); if (!_isInstanceValid(id, oldInstance)) revert SGX_INVALID_INSTANCE(); _replaceInstance(id, oldInstance, newInstance); From 00e20be2bffcb01918cbd0efa3e99295adf38ca3 Mon Sep 17 00:00:00 2001 From: D <51912515+adaki2004@users.noreply.github.com> Date: Thu, 19 Oct 2023 15:18:04 +0200 Subject: [PATCH 64/87] fix(protocol): Fix LibAddress (#14989) Co-authored-by: Daniel Wang <99078276+dantaik@users.noreply.github.com> --- packages/protocol/contracts/bridge/Bridge.sol | 7 +- .../protocol/contracts/libs/LibAddress.sol | 34 ++++--- packages/protocol/test/bridge/Bridge.t.sol | 96 +++++++++++++++++++ 3 files changed, 123 insertions(+), 14 deletions(-) diff --git a/packages/protocol/contracts/bridge/Bridge.sol b/packages/protocol/contracts/bridge/Bridge.sol index 9cbdae49fd..016b2e26a9 100644 --- a/packages/protocol/contracts/bridge/Bridge.sol +++ b/packages/protocol/contracts/bridge/Bridge.sol @@ -104,7 +104,8 @@ contract Bridge is EssentialContract, IBridge { // On Taiko, send the expectedAmount to the EtherVault; otherwise, store // it on the Bridge. address ethVault = resolve("ether_vault", true); - ethVault.sendEther(expectedAmount); + + if (ethVault != address(0)) ethVault.sendEther(expectedAmount); _message = message; // Configure message details and send signal to indicate message @@ -223,7 +224,7 @@ contract Bridge is EssentialContract, IBridge { status = Status.DONE; } else { status = Status.RETRIABLE; - ethVault.sendEther(message.value); + if (ethVault != address(0)) ethVault.sendEther(message.value); } } @@ -291,7 +292,7 @@ contract Bridge is EssentialContract, IBridge { _updateMessageStatus(msgHash, Status.FAILED); // Release Ether back to EtherVault (if on Taiko it is OK) // otherwise funds stay at Bridge anyways. - ethVault.sendEther(message.value); + if (ethVault != address(0)) ethVault.sendEther(message.value); } } diff --git a/packages/protocol/contracts/libs/LibAddress.sol b/packages/protocol/contracts/libs/LibAddress.sol index 688c2c426e..0c1e32837f 100644 --- a/packages/protocol/contracts/libs/LibAddress.sol +++ b/packages/protocol/contracts/libs/LibAddress.sol @@ -20,10 +20,23 @@ import { IERC1271Upgradeable } from library LibAddress { bytes4 private constant EIP1271_MAGICVALUE = 0x1626ba7e; - /// @dev Wrap this into a new function so the parameter `to` is `address` - /// instead of `address payable`. + error ETH_TRANSFER_FAILED(); + + /// @dev Sends Ether to the specified address. It is recommended to avoid + /// using `.transfer()` due to potential reentrancy issues. + /// Reference: + /// https://consensys.net/diligence/blog/2019/09/stop-using-soliditys-transfer-now + /// @param to The recipient address. + /// @param amount The amount of Ether to send in wei. function sendEther(address to, uint256 amount) internal { - AddressUpgradeable.sendValue(payable(to), amount); + // Check for zero-value or zero-address transactions + if (to == address(0)) revert ETH_TRANSFER_FAILED(); + + // Attempt to send Ether to the recipient address + (bool success,) = payable(to).call{ value: amount }(""); + + // Ensure the transfer was successful + if (!success) revert ETH_TRANSFER_FAILED(); } function supportsInterface( @@ -34,6 +47,8 @@ library LibAddress { view returns (bool result) { + if (!AddressUpgradeable.isContract(addr)) return false; + try IERC165Upgradeable(addr).supportsInterface(interfaceId) returns ( bool _result ) { @@ -50,14 +65,11 @@ library LibAddress { view returns (bool valid) { - if ( - AddressUpgradeable.isContract(addr) - && IERC1271Upgradeable(addr).isValidSignature(hash, sig) - == EIP1271_MAGICVALUE - ) { - valid = true; - } else if (ECDSAUpgradeable.recover(hash, sig) == addr) { - valid = true; + if (AddressUpgradeable.isContract(addr)) { + return IERC1271Upgradeable(addr).isValidSignature(hash, sig) + == EIP1271_MAGICVALUE; + } else { + return ECDSAUpgradeable.recover(hash, sig) == addr; } } } diff --git a/packages/protocol/test/bridge/Bridge.t.sol b/packages/protocol/test/bridge/Bridge.t.sol index 173d71f46f..6257034bde 100644 --- a/packages/protocol/test/bridge/Bridge.t.sol +++ b/packages/protocol/test/bridge/Bridge.t.sol @@ -14,6 +14,21 @@ import { BadReceiver } from "../TestBase.sol"; +// A contract which is not our ErcXXXTokenVault +// Which in such case, the sent funds are still recoverable, but not via the +// onMessageRecall() but Bridge will send it back +contract UntrustedSendMessageRelayer { + function sendMessage( + address bridge, + IBridge.Message memory message, + uint256 message_value + ) + public + { + IBridge(bridge).sendMessage{ value: message_value }(message); + } +} + contract BridgeTest is TestBase { AddressManager addressManager; BadReceiver badReceiver; @@ -24,6 +39,7 @@ contract BridgeTest is TestBase { SignalService signalService; DummyCrossChainSync crossChainSync; SkipProofCheckSignal mockProofSignalService; + UntrustedSendMessageRelayer untrustedSenderContract; uint256 destChainId = 19_389; function setUp() public { @@ -53,6 +69,9 @@ contract BridgeTest is TestBase { crossChainSync = new DummyCrossChainSync(); + untrustedSenderContract = new UntrustedSendMessageRelayer(); + vm.deal(address(untrustedSenderContract), 10 ether); + addressManager.setAddress( block.chainid, "signal_service", address(mockProofSignalService) ); @@ -254,6 +273,24 @@ contract BridgeTest is TestBase { bridge.sendMessage{ value: amount }(message); } + function test_Bridge_send_message_ether_reverts_when_to_is_destination_bridge_address( + ) + public + { + uint256 amount = 1 wei; + IBridge.Message memory message = newMessage({ + user: Alice, + to: address(destChainBridge), + value: 0, + gasLimit: 0, + fee: 0, + destChain: destChainId + }); + + vm.expectRevert(Bridge.B_INVALID_TO.selector); + bridge.sendMessage{ value: amount }(message); + } + function test_Bridge_send_message_ether_reverts_when_to_is_zero_address() public { @@ -304,6 +341,65 @@ contract BridgeTest is TestBase { assertEq(bridge.isMessageSent(_message), true); } + function test_Bridge_recall_message_ether() public { + uint256 amount = 1 ether; + uint256 fee = 1 wei; + IBridge.Message memory message = newMessage({ + user: Alice, + to: Alice, + value: amount, + gasLimit: 0, + fee: fee, + destChain: destChainId + }); + + uint256 starterBalanceBridge = address(bridge).balance; + uint256 starterBalanceAlice = Alice.balance; + + vm.prank(Alice, Alice); + (, IBridge.Message memory _message) = + bridge.sendMessage{ value: amount + fee }(message); + assertEq(bridge.isMessageSent(_message), true); + + assertEq(address(bridge).balance, (starterBalanceBridge + amount + fee)); + assertEq(Alice.balance, (starterBalanceAlice - (amount + fee))); + bridge.recallMessage(message, ""); + + assertEq(address(bridge).balance, (starterBalanceBridge + fee)); + assertEq(Alice.balance, (starterBalanceAlice - fee)); + } + + function test_Bridge_recall_message_but_not_supports_recall_interface() + public + { + // In this test we expect that the 'message value is still refundable, + // just not via + // ERCXXTokenVault (message.from) but directly from the Bridge + + uint256 amount = 1 ether; + uint256 fee = 1 wei; + IBridge.Message memory message = newMessage({ + user: Alice, + to: Alice, + value: amount, + gasLimit: 0, + fee: fee, + destChain: destChainId + }); + + uint256 starterBalanceBridge = address(bridge).balance; + + untrustedSenderContract.sendMessage( + address(bridge), message, amount + fee + ); + + assertEq(address(bridge).balance, (starterBalanceBridge + amount + fee)); + + bridge.recallMessage(message, ""); + + assertEq(address(bridge).balance, (starterBalanceBridge + fee)); + } + function test_Bridge_send_message_ether_with_processing_fee_invalid_amount() public { From 4d740b5397e902c534ecca3932b01dca8a1dbc2b Mon Sep 17 00:00:00 2001 From: adaki2004 Date: Thu, 19 Oct 2023 17:39:58 +0200 Subject: [PATCH 65/87] add warning acc. to Brecht --- packages/protocol/contracts/libs/LibAddress.sol | 3 +++ 1 file changed, 3 insertions(+) diff --git a/packages/protocol/contracts/libs/LibAddress.sol b/packages/protocol/contracts/libs/LibAddress.sol index 0c1e32837f..d276f158e7 100644 --- a/packages/protocol/contracts/libs/LibAddress.sol +++ b/packages/protocol/contracts/libs/LibAddress.sol @@ -33,6 +33,9 @@ library LibAddress { if (to == address(0)) revert ETH_TRANSFER_FAILED(); // Attempt to send Ether to the recipient address + // WARNING: call() functions do not have an upper gas cost limit, so + // it's important to note that it may not reliably execute as expected + // when invoked with untrusted addresses. (bool success,) = payable(to).call{ value: amount }(""); // Ensure the transfer was successful From 74d26495bb579b1659154892288da1232d064403 Mon Sep 17 00:00:00 2001 From: adaki2004 Date: Thu, 19 Oct 2023 17:42:51 +0200 Subject: [PATCH 66/87] function order change --- packages/protocol/contracts/signal/SignalService.sol | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/packages/protocol/contracts/signal/SignalService.sol b/packages/protocol/contracts/signal/SignalService.sol index 39c4369349..b229da9331 100644 --- a/packages/protocol/contracts/signal/SignalService.sol +++ b/packages/protocol/contracts/signal/SignalService.sol @@ -46,10 +46,6 @@ contract SignalService is EssentialContract, ISignalService { EssentialContract._init(_addressManager); } - /// @notice Tells if we need to check real proof or it is a test. - /// @return Returns true to skip checking inclusion proofs. - function skipProofCheck() public pure virtual returns (bool) { } - /// @inheritdoc ISignalService function sendSignal(bytes32 signal) public @@ -62,6 +58,10 @@ contract SignalService is EssentialContract, ISignalService { } } + /// @notice Tells if we need to check real proof or it is a test. + /// @return Returns true to skip checking inclusion proofs. + function skipProofCheck() public pure virtual returns (bool) { } + /// @inheritdoc ISignalService function isSignalSent( address app, From d63982e257859cbff7fd6ad45e3c48f7d3f89836 Mon Sep 17 00:00:00 2001 From: adaki2004 Date: Thu, 19 Oct 2023 17:43:44 +0200 Subject: [PATCH 67/87] function order change2 --- packages/protocol/contracts/signal/SignalService.sol | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/packages/protocol/contracts/signal/SignalService.sol b/packages/protocol/contracts/signal/SignalService.sol index b229da9331..8f657622d7 100644 --- a/packages/protocol/contracts/signal/SignalService.sol +++ b/packages/protocol/contracts/signal/SignalService.sol @@ -58,10 +58,6 @@ contract SignalService is EssentialContract, ISignalService { } } - /// @notice Tells if we need to check real proof or it is a test. - /// @return Returns true to skip checking inclusion proofs. - function skipProofCheck() public pure virtual returns (bool) { } - /// @inheritdoc ISignalService function isSignalSent( address app, @@ -158,6 +154,10 @@ contract SignalService is EssentialContract, ISignalService { { return keccak256(abi.encodePacked("SIGNAL", chainId, app, signal)); } + + /// @notice Tells if we need to check real proof or it is a test. + /// @return Returns true to skip checking inclusion proofs. + function skipProofCheck() public pure virtual returns (bool) { } } /// @title ProxiedSignalService From 56c01983568cd6df054caa3eb77fba6934ea8259 Mon Sep 17 00:00:00 2001 From: David Date: Fri, 20 Oct 2023 16:06:51 +0800 Subject: [PATCH 68/87] chore(protocol): deploy `ProxiedGuardianProver` in `DeployOnL1` script (#14993) --- packages/protocol/script/DeployOnL1.s.sol | 33 ++++++++++++++----- packages/protocol/script/test_deploy_on_l1.sh | 2 +- 2 files changed, 26 insertions(+), 9 deletions(-) diff --git a/packages/protocol/script/DeployOnL1.s.sol b/packages/protocol/script/DeployOnL1.s.sol index 662f286b2f..157c6a239a 100644 --- a/packages/protocol/script/DeployOnL1.s.sol +++ b/packages/protocol/script/DeployOnL1.s.sol @@ -13,6 +13,7 @@ import import "lib/openzeppelin-contracts/contracts/utils/Strings.sol"; import "../contracts/L1/TaikoToken.sol"; import "../contracts/L1/TaikoL1.sol"; +import "../contracts/L1/provers/GuardianProver.sol"; import "../contracts/L1/verifiers/PseZkVerifier.sol"; import "../contracts/L1/verifiers/SgxVerifier.sol"; import "../contracts/L1/verifiers/SgxAndZkVerifier.sol"; @@ -32,6 +33,9 @@ import "../contracts/test/erc20/MayFailFreeMintERC20.sol"; /// @notice This script deploys the core Taiko protocol smart contract on L1, /// initializing the rollup. contract DeployOnL1 is Script { + // NOTE: this value must match the constant defined in GuardianProver.sol + uint256 public constant NUM_GUARDIANS = 5; + bytes32 public genesisHash = vm.envBytes32("L2_GENESIS_HASH"); uint256 public deployerPrivateKey = vm.envUint("PRIVATE_KEY"); @@ -42,7 +46,7 @@ contract DeployOnL1 is Script { address public owner = vm.envAddress("OWNER"); - address public guardianProver = vm.envAddress("GUARDIAN_PROVER"); + address[] public guardianProvers = vm.envAddress("GUARDIAN_PROVERS", ","); address public proposer = vm.envAddress("PROPOSER"); @@ -67,6 +71,10 @@ contract DeployOnL1 is Script { require(owner != address(0), "owner is zero"); require(taikoL2Address != address(0), "taikoL2Address is zero"); require(l2SignalService != address(0), "l2SignalService is zero"); + require( + guardianProvers.length == NUM_GUARDIANS, + "invalid guardian provers number" + ); require( taikoTokenPremintRecipients.length != 0, "taikoTokenPremintRecipients length is zero" @@ -93,7 +101,6 @@ contract DeployOnL1 is Script { setAddress(l2ChainId, "taiko", taikoL2Address); setAddress(l2ChainId, "signal_service", l2SignalService); - setAddress("guardian", guardianProver); if (proposer != address(0)) { setAddress("proposer", proposer); } @@ -120,17 +127,12 @@ contract DeployOnL1 is Script { address horseToken = address(new FreeMintERC20("Horse Token", "HORSE")); console2.log("HorseToken", horseToken); - uint64 feePerGas = 10; - uint64 provingWindow = 60 minutes; - address taikoL1Proxy = deployProxy( "taiko", address(taikoL1), bytes.concat( taikoL1.init.selector, - abi.encode( - addressManagerProxy, genesisHash, feePerGas, provingWindow - ) + abi.encode(addressManagerProxy, genesisHash) ) ); setAddress("taiko", taikoL1Proxy); @@ -173,6 +175,21 @@ contract DeployOnL1 is Script { ) ); + // Guardian prover + ProxiedGuardianProver guardianProver = new ProxiedGuardianProver(); + address guardianProverProxy = deployProxy( + "guardian", + address(guardianProver), + bytes.concat( + guardianProver.init.selector, abi.encode(addressManagerProxy) + ) + ); + address[NUM_GUARDIANS] memory guardians; + for (uint256 i = 0; i < NUM_GUARDIANS; ++i) { + guardians[i] = guardianProvers[i]; + } + ProxiedGuardianProver(guardianProverProxy).setGuardians(guardians); + // Config provider deployProxy( "tier_provider", diff --git a/packages/protocol/script/test_deploy_on_l1.sh b/packages/protocol/script/test_deploy_on_l1.sh index dfcd5ecc16..dc200049ad 100755 --- a/packages/protocol/script/test_deploy_on_l1.sh +++ b/packages/protocol/script/test_deploy_on_l1.sh @@ -6,7 +6,7 @@ set -e PRIVATE_KEY=0xac0974bec39a17e36ba4a6b4d238ff944bacb478cbed5efcae784d7bf4f2ff80 \ SHARED_SIGNAL_SERVICE=0x0000000000000000000000000000000000000000 \ PROPOSER=0x0000000000000000000000000000000000000000 \ -GUARDIAN_PROVER=0xa0Ee7A142d267C1f36714E4a8F75612F20a79720 \ +GUARDIAN_PROVERS="0x1000777700000000000000000000000000000001,0x1000777700000000000000000000000000000002,0x1000777700000000000000000000000000000003,0x1000777700000000000000000000000000000004,0x1000777700000000000000000000000000000005" \ OWNER=0x70997970C51812dc3A010C7d01b50e0d17dc79C8 \ TAIKO_L2_ADDRESS=0x1000777700000000000000000000000000000001 \ L2_SIGNAL_SERVICE=0x1000777700000000000000000000000000000007 \ From 409f368cb8cee888ce7c9adb42967ff17da2ddc2 Mon Sep 17 00:00:00 2001 From: Daniel Wang <99078276+dantaik@users.noreply.github.com> Date: Fri, 20 Oct 2023 19:04:27 +0800 Subject: [PATCH 69/87] feat(protocol): remove block reward (#14992) Co-authored-by: Daniel Wang --- packages/protocol/contracts/L1/TaikoData.sol | 9 +- .../contracts/L1/libs/LibVerifying.sol | 2 - packages/protocol/contracts/L2/TaikoL2.sol | 98 +------------------ .../contracts/tokenvault/BridgedERC20.sol | 2 +- 4 files changed, 4 insertions(+), 107 deletions(-) diff --git a/packages/protocol/contracts/L1/TaikoData.sol b/packages/protocol/contracts/L1/TaikoData.sol index e6e5158ed1..34a547a511 100644 --- a/packages/protocol/contracts/L1/TaikoData.sol +++ b/packages/protocol/contracts/L1/TaikoData.sol @@ -159,15 +159,9 @@ library TaikoData { struct SlotB { uint64 numBlocks; uint64 nextEthDepositToProcess; - uint64 lastVerifiedAt; uint64 lastVerifiedBlockId; } - struct SlotC { - uint128 accumulatedReward; - uint64 lastProposedHeight; - } - /// @dev Struct holding the state variables for the {TaikoL1} contract. struct State { // Ring buffer for proposed blocks and a some recent verified blocks. @@ -188,7 +182,6 @@ library TaikoData { mapping(address account => uint256 balance) tokenBalances; SlotA slotA; // slot 6 SlotB slotB; // slot 7 - SlotC slotC; // slot 8 - uint256[142] __gap; + uint256[143] __gap; } } diff --git a/packages/protocol/contracts/L1/libs/LibVerifying.sol b/packages/protocol/contracts/L1/libs/LibVerifying.sol index 41c48bac91..63be819c6c 100644 --- a/packages/protocol/contracts/L1/libs/LibVerifying.sol +++ b/packages/protocol/contracts/L1/libs/LibVerifying.sol @@ -49,7 +49,6 @@ library LibVerifying { state.slotA.genesisHeight = uint64(block.number); state.slotA.genesisTimestamp = uint64(block.timestamp); state.slotB.numBlocks = 1; - state.slotB.lastVerifiedAt = uint64(block.timestamp); // Init the genesis block TaikoData.Block storage blk = state.blocks[0]; @@ -204,7 +203,6 @@ library LibVerifying { // Update protocol level state variables state.slotB.lastVerifiedBlockId = lastVerifiedBlockId; - state.slotB.lastVerifiedAt = uint64(block.timestamp); // Store the L2's signal root as a signal to the local signal // service to allow for multi-hop bridging. diff --git a/packages/protocol/contracts/L2/TaikoL2.sol b/packages/protocol/contracts/L2/TaikoL2.sol index 99e2d116a3..4658a05a4b 100644 --- a/packages/protocol/contracts/L2/TaikoL2.sol +++ b/packages/protocol/contracts/L2/TaikoL2.sol @@ -11,7 +11,6 @@ import { ICrossChainSync } from "../common/ICrossChainSync.sol"; import { ISignalService } from "../signal/ISignalService.sol"; import { Proxied } from "../common/Proxied.sol"; import { LibMath } from "../libs/LibMath.sol"; -import { TaikoToken } from "../L1/TaikoToken.sol"; import { Lib1559Math } from "./Lib1559Math.sol"; import { TaikoL2Signer } from "./TaikoL2Signer.sol"; @@ -28,14 +27,8 @@ contract TaikoL2 is EssentialContract, TaikoL2Signer, ICrossChainSync { struct Config { uint64 gasTargetPerL1Block; uint256 basefeeAdjustmentQuotient; - uint256 blockRewardPerL1Block; - uint128 blockRewardPoolMax; - uint8 blockRewardPoolPctg; } - // TODO(david): figure out this value from internal devnet. - uint32 public constant ANCHOR_GAS_DEDUCT = 40_000; - // Mapping from L2 block numbers to their block hashes. // All L2 block hashes will be saved in this mapping. mapping(uint256 blockId => bytes32 blockHash) public l2Hashes; @@ -43,22 +36,17 @@ contract TaikoL2 is EssentialContract, TaikoL2Signer, ICrossChainSync { // A hash to check the integrity of public inputs. bytes32 public publicInputHash; // slot 3 - uint128 public gasExcess; // slot 4 - uint128 public accumulatedReward; - address public parentProposer; // slot 5 uint64 public latestSyncedL1Height; - uint32 public avgGasUsed; uint256[145] private __gap; - event Anchored(bytes32 parentHash, uint128 gasExcess, uint128 blockReward); + event Anchored(bytes32 parentHash, uint128 gasExcess); error L2_BASEFEE_MISMATCH(); error L2_INVALID_CHAIN_ID(); error L2_INVALID_SENDER(); - error L2_GAS_EXCESS_TOO_LARGE(); error L2_PUBLIC_INPUT_HASH_MISMATCH(); error L2_TOO_LATE(); @@ -134,10 +122,6 @@ contract TaikoL2 is EssentialContract, TaikoL2Signer, ICrossChainSync { } emit CrossChainSynced(l1Height, l1BlockHash, l1SignalRoot); - // Reward block reward in Taiko token to the parent block's proposer - uint128 blockReward = - _rewardParentBlock(config, l1Height, parentGasUsed); - // Update state variables l2Hashes[parentId] = blockhash(parentId); snippets[l1Height] = ICrossChainSync.Snippet(l1BlockHash, l1SignalRoot); @@ -145,7 +129,7 @@ contract TaikoL2 is EssentialContract, TaikoL2Signer, ICrossChainSync { latestSyncedL1Height = l1Height; parentProposer = block.coinbase; - emit Anchored(blockhash(parentId), gasExcess, blockReward); + emit Anchored(blockhash(parentId), gasExcess); } /// @inheritdoc ICrossChainSync @@ -189,84 +173,6 @@ contract TaikoL2 is EssentialContract, TaikoL2Signer, ICrossChainSync { function getConfig() public pure virtual returns (Config memory config) { config.gasTargetPerL1Block = 15 * 1e6 * 10; // 10x Ethereum gas target config.basefeeAdjustmentQuotient = 8; - config.blockRewardPerL1Block = 1e15; // 0.001 Taiko token; - config.blockRewardPoolMax = 12e18; // 12 Taiko token - config.blockRewardPoolPctg = 40; // 40% - } - - // In situations where the network lacks sufficient transactions for the - // proposer to profit, they are still obligated to pay the prover the - // proving fee, which can be a substantial cost compared to the total L2 - // transaction fees collected. As a solution, Taiko mints additional Taiko - // tokens per second as block rewards. - // - // The block reward doesn't undergo automatic halving; instead, we depend on - // Taiko DAO to make necessary adjustments to the rewards. uint96 - // rewardBase; - // - // Reward block proposers with Taiko tokens to encourage chain adoption and - // ensure liveness. Rewards are issued only if `blockRewardPerL1Block` and - // `blockRewardPoolMax` are set to nonzero values in the configuration. - // - // Mint additional tokens into the reward pool as L1 block numbers increase, - // to incentivize future proposers. - function _rewardParentBlock( - Config memory config, - uint64 l1Height, - uint32 parentGasUsed - ) - private - returns (uint128 blockReward) - { - if ( - config.blockRewardPerL1Block == 0 || config.blockRewardPoolMax == 0 - || config.blockRewardPoolPctg == 0 || latestSyncedL1Height == 0 - || accumulatedReward == 0 - ) return 0; - - if (latestSyncedL1Height < l1Height) { - uint256 extraRewardMinted = uint256(l1Height - latestSyncedL1Height) - * config.blockRewardPerL1Block; - - // Reward pool is capped to `blockRewardPoolMax` - accumulatedReward = uint128( - (extraRewardMinted + accumulatedReward).min( - config.blockRewardPoolMax - ) - ); - } - - if (avgGasUsed == 0) { - avgGasUsed = parentGasUsed; - return 0; - } - - avgGasUsed = avgGasUsed / 1024 * 1023 + parentGasUsed / 1024; - - uint128 maxBlockReward = - accumulatedReward / 100 * config.blockRewardPoolPctg; - accumulatedReward -= maxBlockReward; - - if ( - parentGasUsed <= ANCHOR_GAS_DEDUCT - || avgGasUsed <= ANCHOR_GAS_DEDUCT || parentProposer == address(0) - ) { - return 0; - } - - address tt = resolve("taiko_token", true); - if (tt == address(0)) return 0; - - // The ratio is in [0-200] - uint128 ratio = uint128( - ( - uint256(parentGasUsed - ANCHOR_GAS_DEDUCT) * 100 - / (avgGasUsed - ANCHOR_GAS_DEDUCT) - ).min(200) - ); - - blockReward = maxBlockReward * ratio / 200; - TaikoToken(tt).mint(parentProposer, blockReward); } function _calcPublicInputHash(uint256 blockId) diff --git a/packages/protocol/contracts/tokenvault/BridgedERC20.sol b/packages/protocol/contracts/tokenvault/BridgedERC20.sol index 98a467f63c..9402250af1 100644 --- a/packages/protocol/contracts/tokenvault/BridgedERC20.sol +++ b/packages/protocol/contracts/tokenvault/BridgedERC20.sol @@ -86,7 +86,7 @@ contract BridgedERC20 is uint256 amount ) public - onlyFromNamed2("erc20_vault", "taiko") + onlyFromNamed("erc20_vault") { _mint(account, amount); emit Transfer(address(0), account, amount); From 5b7fc25dd3c5e4034cd4c6199b6e8451ce4f51a4 Mon Sep 17 00:00:00 2001 From: D <51912515+adaki2004@users.noreply.github.com> Date: Sat, 21 Oct 2023 07:57:55 +0200 Subject: [PATCH 70/87] feat(protocol): Simulate and plot l2 basefee (#14997) Co-authored-by: Daniel Wang --- packages/protocol/.gitignore | 2 + packages/protocol/contracts/L2/TaikoL2.sol | 6 +- packages/protocol/package.json | 1 + packages/protocol/simulation/README.md | 15 ++ packages/protocol/simulation/requirements.txt | 15 ++ packages/protocol/simulation/simulate.py | 179 ++++++++++++++++++ packages/protocol/test/L2/TaikoL2.t.sol | 158 ++++++++++++++++ 7 files changed, 375 insertions(+), 1 deletion(-) create mode 100644 packages/protocol/simulation/README.md create mode 100644 packages/protocol/simulation/requirements.txt create mode 100644 packages/protocol/simulation/simulate.py diff --git a/packages/protocol/.gitignore b/packages/protocol/.gitignore index c99ed87a51..a8640e16fc 100644 --- a/packages/protocol/.gitignore +++ b/packages/protocol/.gitignore @@ -31,3 +31,5 @@ broadcast #coverage lcov.info + +simulation/out/ diff --git a/packages/protocol/contracts/L2/TaikoL2.sol b/packages/protocol/contracts/L2/TaikoL2.sol index 4658a05a4b..1553518179 100644 --- a/packages/protocol/contracts/L2/TaikoL2.sol +++ b/packages/protocol/contracts/L2/TaikoL2.sol @@ -109,7 +109,7 @@ contract TaikoL2 is EssentialContract, TaikoL2Signer, ICrossChainSync { // Verify the base fee per gas is correct uint256 basefee; (basefee, gasExcess) = _calc1559BaseFee(config, l1Height, parentGasUsed); - if (block.basefee != basefee) { + if (!skipFeeCheck() && block.basefee != basefee) { revert L2_BASEFEE_MISMATCH(); } @@ -174,6 +174,10 @@ contract TaikoL2 is EssentialContract, TaikoL2Signer, ICrossChainSync { config.gasTargetPerL1Block = 15 * 1e6 * 10; // 10x Ethereum gas target config.basefeeAdjustmentQuotient = 8; } + + /// @notice Tells if we need to validate basefee (for simulation). + /// @return Returns true to skip checking basefee mismatch. + function skipFeeCheck() public pure virtual returns (bool) { } function _calcPublicInputHash(uint256 blockId) private diff --git a/packages/protocol/package.json b/packages/protocol/package.json index e45c35fe8f..5d847583c3 100644 --- a/packages/protocol/package.json +++ b/packages/protocol/package.json @@ -19,6 +19,7 @@ "test": "forge test -vvv --gas-report --match-path test/*.t.sol", "test:coverage": "mkdir -p coverage && forge coverage --report lcov && lcov --remove ./lcov.info -o ./coverage/lcov.info 'test/' 'script/' 'contracts/thirdparty/' && genhtml coverage/lcov.info --branch-coverage --output-dir coverage --ignore-errors category && open coverage/index.html", "test:genesis": "pnpm compile && pnpm compile:hardhat && FOUNDRY_PROFILE=genesis ./genesis/generate_genesis.test.sh", + "export:simconf": "forge test --match-test 'test_simulation' -vv > simulation/out/simconf_$(date +%s).txt", "upgrade": "./script/upgrade_to.sh" }, "keywords": [ diff --git a/packages/protocol/simulation/README.md b/packages/protocol/simulation/README.md new file mode 100644 index 0000000000..ad01e2f587 --- /dev/null +++ b/packages/protocol/simulation/README.md @@ -0,0 +1,15 @@ +# Simulation and Exported Data Parser and Visualization + +## How to use + +Assuming you are in this directory. + +1. Install required packages: `python3 -m pip install -r requirements.txt` + +1. Make the output directory: `mkdir -p out` + +1. Run `pnpm run export:simconf` to export a new the config used in test `test_eip1559_math` to a file in `out/`, the file name will be automatically generated, for example `simconf_1697809145.txt` + +1. Run `python3 simulate.py out/simconf_1697809145.txt` + +Currently, every parameter set in the `test_eip1559_math` is an approximation of a possible mainnet scenario (like 10x the ethereum gas target), so you can just run the commands below to get familiar with the outcome and plots. diff --git a/packages/protocol/simulation/requirements.txt b/packages/protocol/simulation/requirements.txt new file mode 100644 index 0000000000..10cbcded97 --- /dev/null +++ b/packages/protocol/simulation/requirements.txt @@ -0,0 +1,15 @@ +contourpy==1.0.7 +cycler==0.11.0 +docutils==0.19 +fonttools==4.39.3 +kiwisolver==1.4.4 +matplotlib==3.7.1 +numpy==1.24.3 +packaging==23.1 +Pillow==9.5.0 +py-solc==3.2.0 +pycparser==2.21 +pyparsing==3.0.9 +python-dateutil==2.8.2 +semantic-version==2.10.0 +six==1.16.0 diff --git a/packages/protocol/simulation/simulate.py b/packages/protocol/simulation/simulate.py new file mode 100644 index 0000000000..4b8ebf4837 --- /dev/null +++ b/packages/protocol/simulation/simulate.py @@ -0,0 +1,179 @@ +import argparse +import matplotlib.pyplot as plt +import numpy as np +from pathlib import Path + +HIGH_TRAFFIC_STARTS = "HIGH TRAFFIC STARTS" +HIGH_TRAFFIC_ENDS = "HIGH TRAFFIC ENDS" +LOW_TRAFFIC_STARTS = "LOW TRAFFIC STARTS" +LOW_TRAFFIC_ENDS = "LOW TRAFFIC ENDS" +TARGET_TRAFFIC_STARTS = "TARGET TRAFFIC STARTS" +TARGET_TRAFFIC_ENDS = "TARGET TRAFFIC ENDS" +INFO = "L2block to baseFee is" +AVERAGE_GAS_USED_PER_L1 = "Average gasUsed per L1 block" +AVERAGE_GAS_PRICE_IN_L2 = "Average wei gas price per L2 block is" +# 0: no parsing ATM +# 1: HIGH +# 2: LOW +# 3: TARGET +PARSER_MODE = 1 + +# Average propsal time +AVG_BASEFEE_PER_L2_BLOCK = 0 +# Average proof time +AVG_GAS_USED_PER_L1_BLOCK = 0 + + +def percentage_deviation(initial, final): + deviation = final - initial + percentage_deviation = (deviation / initial) * 100 + return round(percentage_deviation, 1) + + +def label_text(): + global AVG_BASEFEE_PER_L2_BLOCK, AVG_GAS_USED_PER_L1_BLOCK + return "Avg basefee / L2 block:{:.2f} gwei Avg. gas per L1 block (12s):{:.2f} million".format( + AVG_BASEFEE_PER_L2_BLOCK, AVG_GAS_USED_PER_L1_BLOCK + ) + + +def save_plots( + x_axis, + y_axis, + filename, + title, + x_label, + y_label, + y_signal_label, + y2_signal_label=None, + y2_axis=None, +): + fig = plt.figure(figsize=(10, 6)) + fig.text( + 0.1, + 0.96, + label_text(), + fontsize=10, + style="italic", + bbox={"facecolor": "green", "alpha": 0.4, "pad": 1}, + ) + xpoints = np.array(x_axis) + ypoints = np.array(y_axis) + + plt.title(title) + plt.xlabel(x_label) + plt.ylabel(y_label) + + plt.plot(xpoints, ypoints, "r", label=y_signal_label) + if y2_axis is not None: + y2points = np.array(y2_axis) + plt.plot(xpoints, y2points, "b", label=y2_signal_label) + plt.legend() + plt.savefig(filename) + + +def parse_and_plot(filename): + global PARSER_MODE, AVG_BASEFEE_PER_L2_BLOCK, AVG_GAS_USED_PER_L1_BLOCK, AVERAGE_GAS_USED_PER_L1, AVERAGE_GAS_PRICE_IN_L2 + + only_stem = Path(filename).stem + timestamp = only_stem.split("_")[1] + # First part + x_ax_block_nr = [] + y_ax_base_fee = [] + with open(filename) as file: + for line in file: + + if HIGH_TRAFFIC_STARTS in line: + PARSER_MODE = 1 + continue + + if HIGH_TRAFFIC_ENDS in line: + # Saving the first plot + x_axis = x_ax_block_nr + y_axis = y_ax_base_fee + filename = "out/{}_above_average_traffic.png".format(timestamp) + title = "Basefee chart per L2 block (if gas used above target)" + y_label = "baseFee" + x_label = "L2 block count" + y_signal_label = "basefee in gwei" + save_plots( + x_axis, y_axis, filename, title, x_label, y_label, y_signal_label + ) + x_ax_block_nr = [] + y_ax_base_fee = [] + PARSER_MODE = 0 + continue + + if LOW_TRAFFIC_STARTS in line: + PARSER_MODE = 2 + continue + + if LOW_TRAFFIC_ENDS in line: + # Saving the first plot + x_axis = x_ax_block_nr + y_axis = y_ax_base_fee + filename = "out/{}_below_average_traffic.png".format(timestamp) + title = "Basefee chart per L2 block (if gas used below target)" + y_label = "baseFee" + x_label = "L2 block count" + y_signal_label = "basefee in gwei" + save_plots( + x_axis, y_axis, filename, title, x_label, y_label, y_signal_label + ) + x_ax_block_nr = [] + y_ax_base_fee = [] + PARSER_MODE = 0 + continue + + if TARGET_TRAFFIC_STARTS in line: + PARSER_MODE = 3 + continue + + if TARGET_TRAFFIC_ENDS in line: + # Saving the first plot + x_axis = x_ax_block_nr + y_axis = y_ax_base_fee + filename = "out/{}_target_traffic.png".format(timestamp) + title = "Basefee chart per L2 block (if gas used around target)" + y_label = "baseFee" + x_label = "L2 block count" + y_signal_label = "basefee in gwei" + save_plots( + x_axis, y_axis, filename, title, x_label, y_label, y_signal_label + ) + x_ax_block_nr = [] + y_ax_base_fee = [] + PARSER_MODE = 0 + continue + + if INFO in line and PARSER_MODE != 0: + data = line.rstrip().split(":") + x_ax_block_nr.append(float(data[1])) + y_ax_base_fee.append(float(data[2]) / 1000000000) + continue + + if AVERAGE_GAS_USED_PER_L1 in line: + data = line.rstrip().split(":") + AVG_GAS_USED_PER_L1_BLOCK = float(data[1]) / 1000000 + continue + + if AVERAGE_GAS_PRICE_IN_L2 in line: + data = line.rstrip().split(":") + AVG_BASEFEE_PER_L2_BLOCK = float(data[1]) / 1000000000 + continue + + +def parse_args(): + parser = argparse.ArgumentParser(description="Parsed filename") + parser.add_argument("file", type=str) + args = parser.parse_args() + return args + + +def main(): + inputs = parse_args() + parse_and_plot(inputs.file) + + +if __name__ == "__main__": + main() diff --git a/packages/protocol/test/L2/TaikoL2.t.sol b/packages/protocol/test/L2/TaikoL2.t.sol index 8f19080af9..a8c340152a 100644 --- a/packages/protocol/test/L2/TaikoL2.t.sol +++ b/packages/protocol/test/L2/TaikoL2.t.sol @@ -10,15 +10,24 @@ import { SignalService } from "../../contracts/signal/SignalService.sol"; import { TaikoL2 } from "../../contracts/L2/TaikoL2.sol"; import { TestBase } from "../TestBase.sol"; +contract SkipBasefeeCheckL2 is TaikoL2 { + function skipFeeCheck() public pure override returns (bool) { + return true; + } +} + contract TestTaikoL2 is TestBase { using SafeCastUpgradeable for uint256; + // Initial salt for semi-random generation + uint256 salt = 2_195_684_615_435_261_315_311; // same as `block_gas_limit` in foundry.toml uint32 public constant BLOCK_GAS_LIMIT = 30_000_000; AddressManager public addressManager; SignalService public ss; TaikoL2 public L2; + SkipBasefeeCheckL2 public L2FeeSimulation; uint256 private logIndex; function setUp() public { @@ -33,6 +42,10 @@ contract TestTaikoL2 is TestBase { uint128 gasExcess = 0; L2.init(address(addressManager), gasExcess); + L2FeeSimulation = new SkipBasefeeCheckL2(); + gasExcess = 49_954_623_777; + L2FeeSimulation.init(address(addressManager), gasExcess); + vm.roll(block.number + 1); vm.warp(block.timestamp + 30); } @@ -74,6 +87,126 @@ contract TestTaikoL2 is TestBase { } } + function test_simulation_lower_traffic() external { + console2.log("LOW TRAFFIC STARTS"); // For parser + _simulation(100_000, 60_000_000, 1, 8); + console2.log("LOW TRAFFIC ENDS"); + } + + function test_simulation_higher_traffic() external { + console2.log("HIGH TRAFFIC STARTS"); // For parser + _simulation(100_000, 120_000_000, 1, 8); + console2.log("HIGH TRAFFIC ENDS"); + } + + function test_simulation_target_traffic() external { + console2.log("TARGET TRAFFIC STARTS"); // For parser + _simulation(150_000_000, 0, 12, 0); + console2.log("TARGET TRAFFIC ENDS"); + } + + function _simulation( + uint256 minGas, + uint256 maxDiffToMinGas, + uint8 quickest, + uint8 maxDiffToQuickest + ) + internal + { + // We need to randomize the: + // - parent gas used (We should sometimes exceed 150.000.000 gas / 12 + // seconds (to simulate congestion a bit) !!) + // - the time we fire away an L2 block (anchor transaction). + // The rest is baked in. + // initial gas excess issued: 49954623777 (from eip1559_util.py) if we + // want to stick to the params of 10x Ethereum gas, etc. + + // This variables counts if we reached the 12seconds (L1) height, if so + // then resets the accumulated parent gas used and increments the L1 + // height number + uint8 accumulated_seconds = 0; + uint256 accumulated_parent_gas_per_l1_block = 0; + uint64 l1Height = uint64(block.number); + uint64 l1BlockCounter = 0; + uint64 maxL2BlockCount = 200; + uint256 allBaseFee = 0; + uint256 allGasUsed = 0; + uint256 newRandomWithoutSalt; + // Simulate 200 L2 blocks + for (uint256 i; i < maxL2BlockCount; ++i) { + newRandomWithoutSalt = uint256( + keccak256( + abi.encodePacked( + block.prevrandao, + msg.sender, + block.timestamp, + i, + newRandomWithoutSalt, + salt + ) + ) + ); + + uint32 currentGasUsed; + if (maxDiffToMinGas == 0) { + currentGasUsed = uint32(minGas); + } else { + currentGasUsed = uint32( + pickRandomNumber( + newRandomWithoutSalt, minGas, maxDiffToMinGas + ) + ); + } + salt = uint256(keccak256(abi.encodePacked(currentGasUsed, salt))); + accumulated_parent_gas_per_l1_block += currentGasUsed; + allGasUsed += currentGasUsed; + + uint8 currentTimeAhead; + if (maxDiffToQuickest == 0) { + currentTimeAhead = uint8(quickest); + } else { + currentTimeAhead = uint8( + pickRandomNumber( + newRandomWithoutSalt, quickest, maxDiffToQuickest + ) + ); + } + accumulated_seconds += currentTimeAhead; + + if (accumulated_seconds >= 12) { + console2.log( + "Gas used per L1 block:", + l1Height, + ":", + accumulated_parent_gas_per_l1_block + ); + l1Height++; + l1BlockCounter++; + accumulated_parent_gas_per_l1_block = 0; + accumulated_seconds = 0; + } + + vm.prank(L2.GOLDEN_TOUCH_ADDRESS()); + _anchorSimulation(currentGasUsed, l1Height); + uint256 currentBaseFee = + L2FeeSimulation.getBasefee(l1Height, currentGasUsed); + allBaseFee += currentBaseFee; + console2.log("Actual gas in L2 block is:", currentGasUsed); + console2.log("L2block to baseFee is:", i, ":", currentBaseFee); + vm.roll(block.number + 1); + + vm.warp(block.timestamp + currentTimeAhead); + } + + console2.log( + "Average wei gas price per L2 block is:", + (allBaseFee / maxL2BlockCount) + ); + console2.log( + "Average gasUsed per L1 block:", (allGasUsed / l1BlockCounter) + ); + } + // calling anchor in the same block more than once should fail function test_L2_AnchorTx_revert_in_same_block() external { vm.fee(1); @@ -115,8 +248,33 @@ contract TestTaikoL2 is TestBase { L2.anchor(l1Hash, l1SignalRoot, 12_345, parentGasLimit); } + function _anchorSimulation( + uint32 parentGasLimit, + uint64 l1Height + ) + private + { + bytes32 l1Hash = getRandomBytes32(); + bytes32 l1SignalRoot = getRandomBytes32(); + L2FeeSimulation.anchor(l1Hash, l1SignalRoot, l1Height, parentGasLimit); + } + function registerAddress(bytes32 nameHash, address addr) internal { addressManager.setAddress(block.chainid, nameHash, addr); console2.log(block.chainid, uint256(nameHash), unicode"→", addr); } + + // Semi-random number generator + function pickRandomNumber( + uint256 randomNum, + uint256 lowerLimit, + uint256 diffBtwLowerAndUpperLimit + ) + internal + view + returns (uint256) + { + randomNum = uint256(keccak256(abi.encodePacked(randomNum, salt))); + return (lowerLimit + (randomNum % diffBtwLowerAndUpperLimit)); + } } From 394ff17561cf4be40ca3ae88e9f527cf0f50d6b8 Mon Sep 17 00:00:00 2001 From: Daniel Wang <99078276+dantaik@users.noreply.github.com> Date: Sat, 21 Oct 2023 22:54:12 +0800 Subject: [PATCH 71/87] refactor(protocol): improve TaikoToken and allow pausing Bridge/Vaults (#14994) Co-authored-by: Daniel Wang Co-authored-by: D <51912515+adaki2004@users.noreply.github.com> Co-authored-by: David The following changes are made: - AddressManager can set an name to address(0), but in reality, the in-production AddressManager's `getAddress` function should be a pure function. - TaikoToken no longer has the `burn` or `mint` function - No special handling for Taiko token in ERC20Vault. - Removed unnecessary OZ imports from TaikoToken.sol - Allow admin to pause Bridge and Vaults - @je4nt0nic @KorbinianK please note that our UI may have to reflect the pause status (true or false). when the Bridge/Vaults are paused, no user transactions are allowed. - Disable pausing TaikoToken transfers - @davidtaikocha EtherVault can no longer be address(0) now. --- packages/protocol/.solhint.json | 3 +- .../protocol/contracts/L1/TaikoErrors.sol | 5 +- .../protocol/contracts/L1/TaikoEvents.sol | 7 +- packages/protocol/contracts/L1/TaikoL1.sol | 10 - packages/protocol/contracts/L1/TaikoToken.sol | 73 +------ .../contracts/L1/libs/LibDepositing.sol | 7 +- .../protocol/contracts/L1/libs/LibProving.sol | 24 +-- .../contracts/L1/libs/LibTaikoToken.sol | 43 ++--- .../contracts/L1/libs/LibVerifying.sol | 4 +- packages/protocol/contracts/L2/TaikoL2.sol | 6 +- packages/protocol/contracts/bridge/Bridge.sol | 58 +++--- .../protocol/contracts/bridge/EtherVault.sol | 17 +- .../protocol/contracts/bridge/IBridge.sol | 2 +- .../contracts/common/AddressManager.sol | 7 +- .../contracts/common/AddressResolver.sol | 13 -- .../contracts/common/EssentialContract.sol | 60 +++++- .../contracts/tokenvault/BridgedERC20.sol | 3 +- .../contracts/tokenvault/ERC1155Vault.sol | 3 + .../contracts/tokenvault/ERC20Vault.sol | 35 ++-- .../contracts/tokenvault/ERC721Vault.sol | 3 + .../{common => tokenvault}/IMintableERC20.sol | 0 .../protocol/genesis/GenerateGenesis.g.sol | 30 +++ packages/protocol/script/DeployOnL1.s.sol | 14 +- packages/protocol/test/L1/TaikoL1TestBase.sol | 8 +- packages/protocol/test/L1/TaikoToken.t.sol | 167 ---------------- packages/protocol/test/bridge/Bridge.t.sol | 34 ++-- .../protocol/test/tokenvault/ERC20Vault.t.sol | 13 ++ .../protocol/test/tokenvault/EtherVault.t.sol | 20 -- .../protocol/utils/generate_genesis/erc20.ts | 19 +- .../protocol/utils/generate_genesis/main.ts | 16 +- .../utils/generate_genesis/taikoL2.ts | 180 +++++++++--------- 31 files changed, 328 insertions(+), 556 deletions(-) rename packages/protocol/contracts/{common => tokenvault}/IMintableERC20.sol (100%) diff --git a/packages/protocol/.solhint.json b/packages/protocol/.solhint.json index ce3716cc9d..3bdc8bc7fc 100644 --- a/packages/protocol/.solhint.json +++ b/packages/protocol/.solhint.json @@ -10,6 +10,7 @@ "not-rely-on-time": "off", "ordering": "warn", "payable-fallback": "off", - "no-console": "off" + "no-console": "off", + "one-contract-per-file": "off" } } diff --git a/packages/protocol/contracts/L1/TaikoErrors.sol b/packages/protocol/contracts/L1/TaikoErrors.sol index 8aade39b34..eca0fd7af1 100644 --- a/packages/protocol/contracts/L1/TaikoErrors.sol +++ b/packages/protocol/contracts/L1/TaikoErrors.sol @@ -23,16 +23,13 @@ abstract contract TaikoErrors { error L1_BLOCK_MISMATCH(); error L1_INSUFFICIENT_TOKEN(); error L1_INVALID_ADDRESS(); + error L1_INVALID_AMOUNT(); error L1_INVALID_BLOCK_ID(); error L1_INVALID_CONFIG(); error L1_INVALID_ETH_DEPOSIT(); error L1_INVALID_EVIDENCE(); - error L1_INVALID_METADATA(); error L1_INVALID_PARAM(); error L1_INVALID_PROOF(); - error L1_INVALID_PROPOSER(); - error L1_INVALID_PROVER(); - error L1_INVALID_PROVER_SIG(); error L1_INVALID_TIER(); error L1_NOT_ASSIGNED_PROVER(); error L1_TIER_NOT_FOUND(); diff --git a/packages/protocol/contracts/L1/TaikoEvents.sol b/packages/protocol/contracts/L1/TaikoEvents.sol index 70e3d729c4..a2592c52f7 100644 --- a/packages/protocol/contracts/L1/TaikoEvents.sol +++ b/packages/protocol/contracts/L1/TaikoEvents.sol @@ -81,12 +81,9 @@ abstract contract TaikoEvents { /// @dev Emitted when Taiko token are credited to the user's in-protocol /// balance. - event TokenCredited(uint256 amount, bool minted); + event TokenCredited(address to, uint256 amount); /// @dev Emitted when Taiko token are debited from the user's in-protocol /// balance. - event TokenDebited(uint256 amount, bool fromLocalBalance); - - /// @dev Emitted when the owner withdrawn Taiko token from this contract. - event TokenWithdrawnByOwner(address to, uint256 amount); + event TokenDebited(address from, uint256 amount); } diff --git a/packages/protocol/contracts/L1/TaikoL1.sol b/packages/protocol/contracts/L1/TaikoL1.sol index c0199e45cb..7402a5902a 100644 --- a/packages/protocol/contracts/L1/TaikoL1.sol +++ b/packages/protocol/contracts/L1/TaikoL1.sol @@ -145,16 +145,6 @@ contract TaikoL1 is LibTaikoToken.withdrawTaikoToken(state, AddressResolver(this), amount); } - function ownerWithdrawTaikoToken( - address to, - uint256 amount - ) - public - onlyOwner - { - LibTaikoToken.ownerWithdrawTaikoToken(AddressResolver(this), to, amount); - } - /// @notice Deposits Ether to Layer 2. /// @param recipient Address of the recipient for the deposited Ether on /// Layer 2. diff --git a/packages/protocol/contracts/L1/TaikoToken.sol b/packages/protocol/contracts/L1/TaikoToken.sol index 5b1a95edb0..2a8eb326ac 100644 --- a/packages/protocol/contracts/L1/TaikoToken.sol +++ b/packages/protocol/contracts/L1/TaikoToken.sol @@ -6,24 +6,14 @@ pragma solidity ^0.8.20; -import { ERC20BurnableUpgradeable } from - "lib/openzeppelin-contracts-upgradeable/contracts/token/ERC20/extensions/ERC20BurnableUpgradeable.sol"; -import { ERC20PermitUpgradeable } from - "lib/openzeppelin-contracts-upgradeable/contracts/token/ERC20/extensions/draft-ERC20PermitUpgradeable.sol"; import { ERC20SnapshotUpgradeable } from "lib/openzeppelin-contracts-upgradeable/contracts/token/ERC20/extensions/ERC20SnapshotUpgradeable.sol"; -import { - ERC20Upgradeable, - IERC20Upgradeable -} from +import { ERC20Upgradeable } from "lib/openzeppelin-contracts-upgradeable/contracts/token/ERC20/ERC20Upgradeable.sol"; import { ERC20VotesUpgradeable } from "lib/openzeppelin-contracts-upgradeable/contracts/token/ERC20/extensions/ERC20VotesUpgradeable.sol"; -import { PausableUpgradeable } from - "lib/openzeppelin-contracts-upgradeable/contracts/security/PausableUpgradeable.sol"; import { EssentialContract } from "../common/EssentialContract.sol"; -import { IMintableERC20 } from "../common/IMintableERC20.sol"; import { Proxied } from "../common/Proxied.sol"; /// @title TaikoToken @@ -32,13 +22,8 @@ import { Proxied } from "../common/Proxied.sol"; /// precision. contract TaikoToken is EssentialContract, - ERC20Upgradeable, - ERC20BurnableUpgradeable, ERC20SnapshotUpgradeable, - PausableUpgradeable, - ERC20PermitUpgradeable, - ERC20VotesUpgradeable, - IMintableERC20 + ERC20VotesUpgradeable { error TKO_INVALID_ADDR(); error TKO_INVALID_PREMINT_PARAMS(); @@ -63,12 +48,9 @@ contract TaikoToken is initializer { EssentialContract._init(_addressManager); - __ERC20_init(_name, _symbol); - __ERC20Burnable_init(); - __ERC20Snapshot_init(); - __Pausable_init(); - __ERC20Permit_init(_name); - __ERC20Votes_init(); + ERC20Upgradeable.__ERC20_init_unchained(_name, _symbol); + ERC20SnapshotUpgradeable.__ERC20Snapshot_init_unchained(); + ERC20VotesUpgradeable.__ERC20Votes_init_unchained(); for (uint256 i; i < _premintRecipients.length; ++i) { _mint(_premintRecipients[i], _premintAmounts[i]); @@ -80,42 +62,6 @@ contract TaikoToken is _snapshot(); } - /// @notice Pauses token transfers. - function pause() public onlyOwner { - _pause(); - } - - /// @notice Unpauses token transfers. - function unpause() public onlyOwner { - _unpause(); - } - - /// @notice Mints new tokens to the specified address. - /// @param to The address to receive the minted tokens. - /// @param amount The amount of tokens to mint. - function mint( - address to, - uint256 amount - ) - public - onlyFromNamed2("erc20_vault", "taiko") - { - _mint(to, amount); - } - - /// @notice Burns tokens from the specified address. - /// @param from The address to burn tokens from. - /// @param amount The amount of tokens to burn. - function burn( - address from, - uint256 amount - ) - public - onlyFromNamed2("erc20_vault", "taiko") - { - _burn(from, amount); - } - /// @notice Transfers tokens to a specified address. /// @param to The address to transfer tokens to. /// @param amount The amount of tokens to transfer. @@ -125,11 +71,11 @@ contract TaikoToken is uint256 amount ) public - override(ERC20Upgradeable, IERC20Upgradeable) + override returns (bool) { if (to == address(this)) revert TKO_INVALID_ADDR(); - return ERC20Upgradeable.transfer(to, amount); + return super.transfer(to, amount); } /// @notice Transfers tokens from one address to another. @@ -143,11 +89,11 @@ contract TaikoToken is uint256 amount ) public - override(ERC20Upgradeable, IERC20Upgradeable) + override returns (bool) { if (to == address(this)) revert TKO_INVALID_ADDR(); - return ERC20Upgradeable.transferFrom(from, to, amount); + return super.transferFrom(from, to, amount); } function _beforeTokenTransfer( @@ -157,7 +103,6 @@ contract TaikoToken is ) internal override(ERC20Upgradeable, ERC20SnapshotUpgradeable) - whenNotPaused { super._beforeTokenTransfer(from, to, amount); } diff --git a/packages/protocol/contracts/L1/libs/LibDepositing.sol b/packages/protocol/contracts/L1/libs/LibDepositing.sol index 9655cd5e2b..162020a85c 100644 --- a/packages/protocol/contracts/L1/libs/LibDepositing.sol +++ b/packages/protocol/contracts/L1/libs/LibDepositing.sol @@ -16,6 +16,7 @@ import { TaikoData } from "../TaikoData.sol"; /// @notice A library for handling Ether deposits in the Taiko protocol. library LibDepositing { using LibAddress for address; + using LibAddress for address payable; using LibMath for uint256; // Warning: Any events defined here must also be defined in TaikoEvents.sol. @@ -37,11 +38,7 @@ library LibDepositing { revert L1_INVALID_ETH_DEPOSIT(); } - address to = resolver.resolve("ether_vault", true); - if (to == address(0)) { - to = resolver.resolve("bridge", false); - } - to.sendEther(msg.value); + resolver.resolve("ether_vault", false).sendEther(msg.value); // Append the deposit to the queue. address _recipient = recipient == address(0) ? msg.sender : recipient; diff --git a/packages/protocol/contracts/L1/libs/LibProving.sol b/packages/protocol/contracts/L1/libs/LibProving.sol index b538239491..a61ddf3750 100644 --- a/packages/protocol/contracts/L1/libs/LibProving.sol +++ b/packages/protocol/contracts/L1/libs/LibProving.sol @@ -227,7 +227,7 @@ library LibProving { && bytes32(evidence.proof) == keccak256("RETURN_LIVENESS_BOND") ) { LibTaikoToken.creditTaikoToken( - state, resolver, blk.assignedProver, blk.livenessBond, false + state, blk.assignedProver, blk.livenessBond ); } @@ -373,11 +373,7 @@ library LibProving { // Mint the reward and the validity bond and return it to // the previous prover. LibTaikoToken.creditTaikoToken( - state, - resolver, - tran.prover, - reward + tran.validityBond, - false + state, tran.prover, reward + tran.validityBond ); } else { // In the event that the contester is the winner, half of @@ -390,17 +386,13 @@ library LibProving { // reward to the contester if it is not a zero-address. if (tran.contester != address(0)) { LibTaikoToken.creditTaikoToken( - state, - resolver, - tran.contester, - reward + tran.contestBond, - false + state, tran.contester, reward + tran.contestBond ); - } else if (reward != 0) { + } else { // The prover is also the contester, so the reward is // sent to him. LibTaikoToken.creditTaikoToken( - state, resolver, msg.sender, reward, false + state, msg.sender, reward ); } @@ -414,11 +406,7 @@ library LibProving { // In theory, the reward can also be zero for certain tiers if // their validity bonds are set to zero. - if (reward != 0) { - LibTaikoToken.creditTaikoToken( - state, resolver, msg.sender, reward, false - ); - } + LibTaikoToken.creditTaikoToken(state, msg.sender, reward); } // Regardless of whether the previous prover or the contester diff --git a/packages/protocol/contracts/L1/libs/LibTaikoToken.sol b/packages/protocol/contracts/L1/libs/LibTaikoToken.sol index 8504a91278..f1d127b5cc 100644 --- a/packages/protocol/contracts/L1/libs/LibTaikoToken.sol +++ b/packages/protocol/contracts/L1/libs/LibTaikoToken.sol @@ -14,12 +14,12 @@ import { TaikoToken } from "../TaikoToken.sol"; library LibTaikoToken { event TokenDeposited(uint256 amount); event TokenWithdrawn(uint256 amount); - event TokenCredited(uint256 amount, bool minted); - event TokenDebited(uint256 amount, bool fromLocalBalance); - event TokenWithdrawnByOwner(address to, uint256 amount); + event TokenCredited(address to, uint256 amount); + event TokenDebited(address from, uint256 amount); error L1_INSUFFICIENT_TOKEN(); error L1_INVALID_ADDRESS(); + error L1_INVALID_AMOUNT(); function depositTaikoToken( TaikoData.State storage state, @@ -28,7 +28,7 @@ library LibTaikoToken { ) internal { - if (amount == 0) return; + if (amount == 0) revert L1_INVALID_AMOUNT(); TaikoToken(resolver.resolve("taiko_token", false)).transferFrom( msg.sender, address(this), amount ); @@ -45,7 +45,7 @@ library LibTaikoToken { ) internal { - if (amount == 0) return; + if (amount == 0) revert L1_INVALID_AMOUNT(); if (state.tokenBalances[msg.sender] < amount) { revert L1_INSUFFICIENT_TOKEN(); } @@ -63,22 +63,16 @@ library LibTaikoToken { function creditTaikoToken( TaikoData.State storage state, - AddressResolver resolver, address to, - uint256 amount, - bool mint + uint256 amount ) internal { - if (amount == 0) return; - if (mint) { - TaikoToken(resolver.resolve("taiko_token", false)).mint( - address(this), amount - ); + if (amount == 0 || to == address(0)) return; + unchecked { + state.tokenBalances[to] += amount; } - - state.tokenBalances[to] += amount; - emit TokenCredited(amount, mint); + emit TokenCredited(to, amount); } function debitTaikoToken( @@ -94,26 +88,11 @@ library LibTaikoToken { TaikoToken(resolver.resolve("taiko_token", false)).transferFrom( from, address(this), amount ); - emit TokenDebited(amount, false); } else { unchecked { state.tokenBalances[from] -= amount; } - emit TokenDebited(amount, true); } - } - - function ownerWithdrawTaikoToken( - AddressResolver resolver, - address to, - uint256 amount - ) - internal - { - if (to == address(0)) revert L1_INVALID_ADDRESS(); - TaikoToken(resolver.resolve("taiko_token", false)).transferFrom( - address(this), to, amount - ); - emit TokenWithdrawnByOwner(to, amount); + emit TokenDebited(from, amount); } } diff --git a/packages/protocol/contracts/L1/libs/LibVerifying.sol b/packages/protocol/contracts/L1/libs/LibVerifying.sol index 63be819c6c..4762d571e7 100644 --- a/packages/protocol/contracts/L1/libs/LibVerifying.sol +++ b/packages/protocol/contracts/L1/libs/LibVerifying.sol @@ -174,9 +174,7 @@ library LibVerifying { bondToReturn -= blk.livenessBond / 2; } - LibTaikoToken.creditTaikoToken( - state, resolver, tran.prover, bondToReturn, false - ); + LibTaikoToken.creditTaikoToken(state, tran.prover, bondToReturn); // Note: We exclusively address the bonds linked to the // transition used for verification. While there may exist diff --git a/packages/protocol/contracts/L2/TaikoL2.sol b/packages/protocol/contracts/L2/TaikoL2.sol index 1553518179..3da088e4f8 100644 --- a/packages/protocol/contracts/L2/TaikoL2.sol +++ b/packages/protocol/contracts/L2/TaikoL2.sol @@ -37,8 +37,7 @@ contract TaikoL2 is EssentialContract, TaikoL2Signer, ICrossChainSync { // A hash to check the integrity of public inputs. bytes32 public publicInputHash; // slot 3 uint128 public gasExcess; // slot 4 - address public parentProposer; // slot 5 - uint64 public latestSyncedL1Height; + uint64 public latestSyncedL1Height; // slot 5 uint256[145] private __gap; @@ -127,7 +126,6 @@ contract TaikoL2 is EssentialContract, TaikoL2Signer, ICrossChainSync { snippets[l1Height] = ICrossChainSync.Snippet(l1BlockHash, l1SignalRoot); publicInputHash = publicInputHashNew; latestSyncedL1Height = l1Height; - parentProposer = block.coinbase; emit Anchored(blockhash(parentId), gasExcess); } @@ -174,7 +172,7 @@ contract TaikoL2 is EssentialContract, TaikoL2Signer, ICrossChainSync { config.gasTargetPerL1Block = 15 * 1e6 * 10; // 10x Ethereum gas target config.basefeeAdjustmentQuotient = 8; } - + /// @notice Tells if we need to validate basefee (for simulation). /// @return Returns true to skip checking basefee mismatch. function skipFeeCheck() public pure virtual returns (bool) { } diff --git a/packages/protocol/contracts/bridge/Bridge.sol b/packages/protocol/contracts/bridge/Bridge.sol index 016b2e26a9..fc59744bfd 100644 --- a/packages/protocol/contracts/bridge/Bridge.sol +++ b/packages/protocol/contracts/bridge/Bridge.sol @@ -5,7 +5,6 @@ // |_|\__,_|_|_\_\___/ |____\__,_|_.__/__/ pragma solidity ^0.8.20; -import { AddressResolver } from "../common/AddressResolver.sol"; import { EssentialContract } from "../common/EssentialContract.sol"; import { Proxied } from "../common/Proxied.sol"; import { ISignalService } from "../signal/ISignalService.sol"; @@ -19,6 +18,7 @@ import { IBridge, IRecallableSender } from "./IBridge.sol"; /// @dev The code hash for the same address on L1 and L2 may be different. contract Bridge is EssentialContract, IBridge { using LibAddress for address; + using LibAddress for address payable; enum Status { NEW, @@ -32,10 +32,10 @@ contract Bridge is EssentialContract, IBridge { address internal constant SRC_CHAIN_SENDER_PLACEHOLDER = address(uint160(uint256(1))); - uint256 public nextMessageId; + uint128 public nextMessageId; // slot 1 mapping(bytes32 msgHash => bool recalled) public isMessageRecalled; - mapping(bytes32 msgHash => Status) public messageStatus; - Context private _ctx; // 3 slots + mapping(bytes32 msgHash => Status) public messageStatus; // slot 3 + Context private _ctx; // // slot 4,5,6pnpm uint256[44] private __gap; event SignalSent(address indexed sender, bytes32 msgHash); @@ -63,6 +63,8 @@ contract Bridge is EssentialContract, IBridge { _; } + /// @dev Vaults will transfer Ether to this Bridge before these Ether are + /// sent to users. receive() external payable { } /// @notice Initializes the contract. @@ -79,6 +81,7 @@ contract Bridge is EssentialContract, IBridge { payable override nonReentrant + whenNotPaused returns (bytes32 msgHash, Message memory _message) { // Ensure the message user is not null. @@ -101,11 +104,7 @@ contract Bridge is EssentialContract, IBridge { uint256 expectedAmount = message.value + message.fee; if (expectedAmount != msg.value) revert B_INVALID_VALUE(); - // On Taiko, send the expectedAmount to the EtherVault; otherwise, store - // it on the Bridge. - address ethVault = resolve("ether_vault", true); - - if (ethVault != address(0)) ethVault.sendEther(expectedAmount); + resolve("ether_vault", false).sendEther(expectedAmount); _message = message; // Configure message details and send signal to indicate message @@ -132,6 +131,7 @@ contract Bridge is EssentialContract, IBridge { ) external nonReentrant + whenNotPaused sameChain(message.srcChainId) { bytes32 msgHash = keccak256(abi.encode(message)); @@ -144,14 +144,10 @@ contract Bridge is EssentialContract, IBridge { isMessageRecalled[msgHash] = true; - // Release necessary Ether from EtherVault if on Taiko, otherwise it's - // already available on this Bridge. - address ethVault = resolve("ether_vault", true); - if (ethVault != address(0)) { - EtherVault(payable(ethVault)).releaseEther( - address(this), message.value - ); - } + // Release necessary Ether from EtherVault. + EtherVault(resolve("ether_vault", false)).releaseEther( + address(this), message.value + ); // Execute the recall logic based on the contract's support for the // IRecallableSender interface @@ -182,6 +178,7 @@ contract Bridge is EssentialContract, IBridge { ) external nonReentrant + whenNotPaused sameChain(message.destChainId) { // If the gas limit is set to zero, only the user can process the @@ -196,14 +193,10 @@ contract Bridge is EssentialContract, IBridge { bool received = _proveSignalReceived(msgHash, message.srcChainId, proof); if (!received) revert B_NOT_RECEIVED(); - // Release necessary Ether from EtherVault if on Taiko, otherwise it's - // already available on this Bridge. - address ethVault = resolve("ether_vault", true); - if (ethVault != address(0)) { - EtherVault(payable(ethVault)).releaseEther( - address(this), message.value + message.fee - ); - } + address payable ethVault = resolve("ether_vault", false); + EtherVault(ethVault).releaseEther( + address(this), message.value + message.fee + ); Status status; uint256 refundAmount; @@ -224,7 +217,7 @@ contract Bridge is EssentialContract, IBridge { status = Status.DONE; } else { status = Status.RETRIABLE; - if (ethVault != address(0)) ethVault.sendEther(message.value); + ethVault.sendEther(message.value); } } @@ -261,6 +254,7 @@ contract Bridge is EssentialContract, IBridge { ) external nonReentrant + whenNotPaused sameChain(message.destChainId) { // If the gasLimit is set to 0 or isLastAttempt is true, the caller must @@ -274,14 +268,8 @@ contract Bridge is EssentialContract, IBridge { revert B_NON_RETRIABLE(); } - // Release necessary Ether from EtherVault if on Taiko, otherwise it's - // already available on this Bridge. - address ethVault = resolve("ether_vault", true); - if (ethVault != address(0)) { - EtherVault(payable(ethVault)).releaseEther( - address(this), message.value - ); - } + address payable ethVault = resolve("ether_vault", false); + EtherVault(ethVault).releaseEther(address(this), message.value); // Attempt to invoke the messageCall. if (_invokeMessageCall(message, msgHash, gasleft())) { @@ -292,7 +280,7 @@ contract Bridge is EssentialContract, IBridge { _updateMessageStatus(msgHash, Status.FAILED); // Release Ether back to EtherVault (if on Taiko it is OK) // otherwise funds stay at Bridge anyways. - if (ethVault != address(0)) ethVault.sendEther(message.value); + ethVault.sendEther(message.value); } } diff --git a/packages/protocol/contracts/bridge/EtherVault.sol b/packages/protocol/contracts/bridge/EtherVault.sol index 344560e243..f55fec9c46 100644 --- a/packages/protocol/contracts/bridge/EtherVault.sol +++ b/packages/protocol/contracts/bridge/EtherVault.sol @@ -33,14 +33,7 @@ contract EtherVault is EssentialContract { _; } - /// @notice Function to receive Ether. - /// @dev Only authorized addresses can send Ether to the contract. - receive() external payable { - // EthVault's balance must == 0 OR the sender isAuthorized. - if (address(this).balance != 0 && !isAuthorized[msg.sender]) { - revert VAULT_PERMISSION_DENIED(); - } - } + receive() external payable { } /// @notice Initializes the contract with an {AddressManager}. /// @param addressManager The address of the {AddressManager} contract. @@ -51,7 +44,12 @@ contract EtherVault is EssentialContract { /// @notice Transfers Ether from EtherVault to the sender, checking that the /// sender is authorized. /// @param amount Amount of Ether to send. - function releaseEther(uint256 amount) public onlyAuthorized nonReentrant { + function releaseEther(uint256 amount) + public + onlyAuthorized + nonReentrant + whenNotPaused + { msg.sender.sendEther(amount); emit EtherReleased(msg.sender, amount); } @@ -67,6 +65,7 @@ contract EtherVault is EssentialContract { public onlyAuthorized nonReentrant + whenNotPaused { if (recipient == address(0)) revert VAULT_INVALID_RECIPIENT(); diff --git a/packages/protocol/contracts/bridge/IBridge.sol b/packages/protocol/contracts/bridge/IBridge.sol index bad6efb3c4..03bbef9e76 100644 --- a/packages/protocol/contracts/bridge/IBridge.sol +++ b/packages/protocol/contracts/bridge/IBridge.sol @@ -13,7 +13,7 @@ pragma solidity ^0.8.20; interface IBridge { struct Message { // Message ID. - uint256 id; + uint128 id; // Message sender address (auto filled). address from; // Source chain ID (auto filled). diff --git a/packages/protocol/contracts/common/AddressManager.sol b/packages/protocol/contracts/common/AddressManager.sol index cab24d5eae..57baa58d93 100644 --- a/packages/protocol/contracts/common/AddressManager.sol +++ b/packages/protocol/contracts/common/AddressManager.sol @@ -34,6 +34,7 @@ interface IAddressManager { /// @notice Manages a mapping of domain-name pairs to Ethereum addresses. contract AddressManager is OwnableUpgradeable, IAddressManager { mapping(uint256 => mapping(bytes32 => address)) private addresses; + uint256[49] private __gap; event AddressSet( uint256 indexed domain, @@ -42,8 +43,6 @@ contract AddressManager is OwnableUpgradeable, IAddressManager { address oldAddress ); - error AM_INVALID_ADDRESS(); - /// @notice Initializes the owner for the upgradable contract. function init() external initializer { OwnableUpgradeable.__Ownable_init(); @@ -62,10 +61,6 @@ contract AddressManager is OwnableUpgradeable, IAddressManager { virtual onlyOwner { - if (newAddress.code.length == 0 && newAddress == msg.sender) { - revert AM_INVALID_ADDRESS(); - } - address oldAddress = addresses[domain][name]; addresses[domain][name] = newAddress; emit AddressSet(domain, name, newAddress, oldAddress); diff --git a/packages/protocol/contracts/common/AddressResolver.sol b/packages/protocol/contracts/common/AddressResolver.sol index 04610fb5a3..e1a40c841c 100644 --- a/packages/protocol/contracts/common/AddressResolver.sol +++ b/packages/protocol/contracts/common/AddressResolver.sol @@ -19,7 +19,6 @@ import { IAddressManager } from "./AddressManager.sol"; /// contracts that are resolvers. abstract contract AddressResolver { address public addressManager; - uint256[49] private __gap; error RESOLVER_DENIED(); @@ -34,18 +33,6 @@ abstract contract AddressResolver { _; } - /// @dev Modifier that ensures the caller is the resolved address of two - /// given names. - /// @param name1 The first name to check against. - /// @param name2 The second name to check against. - modifier onlyFromNamed2(bytes32 name1, bytes32 name2) { - if ( - msg.sender != resolve(name1, true) - && msg.sender != resolve(name2, true) - ) revert RESOLVER_DENIED(); - _; - } - /// @notice Resolves a name to its address on the current chain. /// @param name Name whose address is to be resolved. /// @param allowZeroAddress If set to true, does not throw if the resolved diff --git a/packages/protocol/contracts/common/EssentialContract.sol b/packages/protocol/contracts/common/EssentialContract.sol index 7ed61dc13e..e1133df1da 100644 --- a/packages/protocol/contracts/common/EssentialContract.sol +++ b/packages/protocol/contracts/common/EssentialContract.sol @@ -8,23 +8,65 @@ pragma solidity ^0.8.20; import { OwnableUpgradeable } from "lib/openzeppelin-contracts-upgradeable/contracts/access/OwnableUpgradeable.sol"; -import { ReentrancyGuardUpgradeable } from - "lib/openzeppelin-contracts-upgradeable/contracts/security/ReentrancyGuardUpgradeable.sol"; import { AddressResolver } from "./AddressResolver.sol"; /// @title EssentialContract /// @notice This contract serves as the base contract for many core components. -abstract contract EssentialContract is - ReentrancyGuardUpgradeable, - OwnableUpgradeable, - AddressResolver -{ +/// @dev We didn't use OpenZeppelin's PausableUpgradeable and +/// ReentrancyGuardUpgradeable contract to optimize storage reads. +abstract contract EssentialContract is OwnableUpgradeable, AddressResolver { + uint8 private constant _FALSE = 1; + uint8 private constant _TRUE = 2; + + uint8 private _reentry; // slot 1 + uint8 private _paused; + uint256[49] private __gap; + + event Paused(address account); + event Unpaused(address account); + + error REENTRANT_CALL(); + error INVALID_PAUSE_STATUS(); + + modifier nonReentrant() { + if (_reentry == _TRUE) revert REENTRANT_CALL(); + _reentry = _TRUE; + _; + _reentry = _FALSE; + } + + modifier whenPaused() { + if (!paused()) revert INVALID_PAUSE_STATUS(); + _; + } + + modifier whenNotPaused() { + if (paused()) revert INVALID_PAUSE_STATUS(); + _; + } + + function pause() external whenNotPaused onlyOwner { + _paused = _TRUE; + emit Paused(msg.sender); + } + + function unpause() external whenPaused onlyOwner { + _paused = _FALSE; + emit Unpaused(msg.sender); + } + + function paused() public view returns (bool) { + return _paused == _TRUE; + } + /// @notice Initializes the contract with an address manager. /// @param _addressManager The address of the address manager. function _init(address _addressManager) internal virtual override { - ReentrancyGuardUpgradeable.__ReentrancyGuard_init(); - OwnableUpgradeable.__Ownable_init(); + OwnableUpgradeable.__Ownable_init_unchained(); AddressResolver._init(_addressManager); + + _reentry = _FALSE; + _paused = _FALSE; } } diff --git a/packages/protocol/contracts/tokenvault/BridgedERC20.sol b/packages/protocol/contracts/tokenvault/BridgedERC20.sol index 9402250af1..94ce327f0f 100644 --- a/packages/protocol/contracts/tokenvault/BridgedERC20.sol +++ b/packages/protocol/contracts/tokenvault/BridgedERC20.sol @@ -17,9 +17,10 @@ import { StringsUpgradeable } from "lib/openzeppelin-contracts-upgradeable/contracts/utils/StringsUpgradeable.sol"; import { EssentialContract } from "../common/EssentialContract.sol"; -import { IMintableERC20 } from "../common/IMintableERC20.sol"; import { Proxied } from "../common/Proxied.sol"; +import { IMintableERC20 } from "./IMintableERC20.sol"; + /// @title BridgedERC20 /// @notice An upgradeable ERC20 contract that represents tokens bridged from /// another chain. diff --git a/packages/protocol/contracts/tokenvault/ERC1155Vault.sol b/packages/protocol/contracts/tokenvault/ERC1155Vault.sol index f14bb5cb35..61eca1436c 100644 --- a/packages/protocol/contracts/tokenvault/ERC1155Vault.sol +++ b/packages/protocol/contracts/tokenvault/ERC1155Vault.sol @@ -54,6 +54,7 @@ contract ERC1155Vault is BaseNFTVault, ERC1155ReceiverUpgradeable { external payable nonReentrant + whenNotPaused { // Validate amounts and addresses LibVaultUtils.checkIfValidAmounts(opt.amounts, opt.tokenIds, false); @@ -119,6 +120,7 @@ contract ERC1155Vault is BaseNFTVault, ERC1155ReceiverUpgradeable { external payable nonReentrant + whenNotPaused onlyFromNamed("bridge") { // Check context validity @@ -172,6 +174,7 @@ contract ERC1155Vault is BaseNFTVault, ERC1155ReceiverUpgradeable { payable override nonReentrant + whenNotPaused onlyFromNamed("bridge") { ( diff --git a/packages/protocol/contracts/tokenvault/ERC20Vault.sol b/packages/protocol/contracts/tokenvault/ERC20Vault.sol index b57ee92f05..8f3a239c7b 100644 --- a/packages/protocol/contracts/tokenvault/ERC20Vault.sol +++ b/packages/protocol/contracts/tokenvault/ERC20Vault.sol @@ -16,18 +16,18 @@ import { IERC165Upgradeable } from "lib/openzeppelin-contracts-upgradeable/contracts/utils/introspection/IERC165Upgradeable.sol"; import { EssentialContract } from "../common/EssentialContract.sol"; -import { IMintableERC20 } from "../common/IMintableERC20.sol"; import { Proxied } from "../common/Proxied.sol"; import { IBridge, IRecallableSender } from "../bridge/IBridge.sol"; import { LibAddress } from "../libs/LibAddress.sol"; import { ProxiedBridgedERC20 } from "./BridgedERC20.sol"; +import { IMintableERC20 } from "./IMintableERC20.sol"; import { LibVaultUtils } from "./libs/LibVaultUtils.sol"; + /// @title ERC20Vault /// @notice This vault holds all ERC20 tokens (excluding Ether) that users have /// deposited. It also manages the mapping between canonical ERC20 tokens and /// their bridged tokens. - contract ERC20Vault is EssentialContract, IERC165Upgradeable, @@ -135,6 +135,7 @@ contract ERC20Vault is external payable nonReentrant + whenNotPaused onlyValidAddresses(opt.destChainId, "erc20_vault", opt.to, opt.token) { if (opt.amount == 0) revert VAULT_INVALID_AMOUNT(); @@ -186,6 +187,7 @@ contract ERC20Vault is external payable nonReentrant + whenNotPaused onlyFromNamed("bridge") { IBridge.Context memory ctx = @@ -194,11 +196,7 @@ contract ERC20Vault is address token; if (ctoken.chainId == block.chainid) { token = ctoken.addr; - if (token == resolve("taiko_token", true)) { - IMintableERC20(token).mint(to, amount); - } else { - ERC20Upgradeable(token).safeTransfer(to, amount); - } + ERC20Upgradeable(token).safeTransfer(to, amount); } else { token = _getOrDeployBridgedToken(ctoken); IMintableERC20(token).mint(to, amount); @@ -225,6 +223,7 @@ contract ERC20Vault is payable override nonReentrant + whenNotPaused onlyFromNamed("bridge") { (, address token,, uint256 amount) = abi.decode( @@ -234,8 +233,7 @@ contract ERC20Vault is if (token == address(0)) revert VAULT_INVALID_TOKEN(); if (amount > 0) { - if (isBridgedToken[token] || token == resolve("taiko_token", true)) - { + if (isBridgedToken[token]) { IMintableERC20(token).burn(address(this), amount); } else { ERC20Upgradeable(token).safeTransfer(message.user, amount); @@ -302,18 +300,13 @@ contract ERC20Vault is name: t.name() }); - if (token == resolve("taiko_token", true)) { - IMintableERC20(token).burn(msg.sender, amount); - _balanceChange = amount; - } else { - uint256 _balance = t.balanceOf(address(this)); - t.transferFrom({ - from: msg.sender, - to: address(this), - amount: amount - }); - _balanceChange = t.balanceOf(address(this)) - _balance; - } + uint256 _balance = t.balanceOf(address(this)); + t.transferFrom({ + from: msg.sender, + to: address(this), + amount: amount + }); + _balanceChange = t.balanceOf(address(this)) - _balance; } msgData = abi.encodeWithSelector( diff --git a/packages/protocol/contracts/tokenvault/ERC721Vault.sol b/packages/protocol/contracts/tokenvault/ERC721Vault.sol index c1b5754d25..0d5de271f0 100644 --- a/packages/protocol/contracts/tokenvault/ERC721Vault.sol +++ b/packages/protocol/contracts/tokenvault/ERC721Vault.sol @@ -47,6 +47,7 @@ contract ERC721Vault is external payable nonReentrant + whenNotPaused { LibVaultUtils.checkIfValidAmounts(opt.amounts, opt.tokenIds, true); LibVaultUtils.checkIfValidAddresses( @@ -103,6 +104,7 @@ contract ERC721Vault is external payable nonReentrant + whenNotPaused onlyFromNamed("bridge") { IBridge.Context memory ctx = @@ -149,6 +151,7 @@ contract ERC721Vault is payable override nonReentrant + whenNotPaused onlyFromNamed("bridge") { if (message.user == address(0)) revert VAULT_INVALID_USER(); diff --git a/packages/protocol/contracts/common/IMintableERC20.sol b/packages/protocol/contracts/tokenvault/IMintableERC20.sol similarity index 100% rename from packages/protocol/contracts/common/IMintableERC20.sol rename to packages/protocol/contracts/tokenvault/IMintableERC20.sol diff --git a/packages/protocol/genesis/GenerateGenesis.g.sol b/packages/protocol/genesis/GenerateGenesis.g.sol index bb23b2e334..2a4b5f5334 100644 --- a/packages/protocol/genesis/GenerateGenesis.g.sol +++ b/packages/protocol/genesis/GenerateGenesis.g.sol @@ -9,6 +9,7 @@ import { TransparentUpgradeableProxy } from "lib/openzeppelin-contracts/contract import { AddressManager } from "../contracts/common/AddressManager.sol"; import { AddressResolver } from "../contracts/common/AddressResolver.sol"; +import { EssentialContract } from "../contracts/common/EssentialContract.sol"; import { Bridge } from "../contracts/bridge/Bridge.sol"; import { ERC1155Vault } from "../contracts/tokenvault/ERC1155Vault.sol"; import { ERC20Vault } from "../contracts/tokenvault/ERC20Vault.sol"; @@ -162,6 +163,35 @@ contract TestGenerateGenesis is Test, AddressResolver { "" ); + assertEq(bridge.paused(), false); + + vm.startPrank(owner); + bridge.pause(); + assertEq(bridge.paused(), true); + + vm.expectRevert(EssentialContract.INVALID_PAUSE_STATUS.selector); + bridge.processMessage( + IBridge.Message({ + id: 0, + from: address(0), + srcChainId: 1, + destChainId: 167, + user: address(0), + to: address(0), + refundTo: address(0), + value: 0, + fee: 0, + gasLimit: 0, + data: "", + memo: "" + }), + "" + ); + + bridge.unpause(); + assertEq(bridge.paused(), false); + vm.stopPrank(); + vm.startPrank(admin); TransparentUpgradeableProxy proxy = TransparentUpgradeableProxy( diff --git a/packages/protocol/script/DeployOnL1.s.sol b/packages/protocol/script/DeployOnL1.s.sol index 157c6a239a..1e8fa33688 100644 --- a/packages/protocol/script/DeployOnL1.s.sol +++ b/packages/protocol/script/DeployOnL1.s.sol @@ -21,6 +21,7 @@ import "../contracts/L1/verifiers/GuardianVerifier.sol"; import "../contracts/L1/tiers/ITierProvider.sol"; import "../contracts/L1/tiers/TaikoA6TierProvider.sol"; import "../contracts/bridge/Bridge.sol"; +import "../contracts/bridge/EtherVault.sol"; import "../contracts/tokenvault/ERC20Vault.sol"; import "../contracts/tokenvault/ERC1155Vault.sol"; import "../contracts/tokenvault/ERC721Vault.sol"; @@ -139,12 +140,23 @@ contract DeployOnL1 is Script { // Bridge Bridge bridge = new ProxiedBridge(); - deployProxy( + address bridgeProxy = deployProxy( "bridge", address(bridge), bytes.concat(bridge.init.selector, abi.encode(addressManagerProxy)) ); + // EtherVault + EtherVault etherVault = new ProxiedEtherVault(); + address etherVaultProxy = deployProxy( + "ether_vault", + address(etherVault), + bytes.concat( + etherVault.init.selector, abi.encode(addressManagerProxy) + ) + ); + ProxiedEtherVault(payable(etherVaultProxy)).authorize(bridgeProxy, true); + // ERC20Vault ERC20Vault erc20Vault = new ProxiedERC20Vault(); deployProxy( diff --git a/packages/protocol/test/L1/TaikoL1TestBase.sol b/packages/protocol/test/L1/TaikoL1TestBase.sol index 33b8d40717..17ce8069aa 100644 --- a/packages/protocol/test/L1/TaikoL1TestBase.sol +++ b/packages/protocol/test/L1/TaikoL1TestBase.sol @@ -87,6 +87,7 @@ abstract contract TaikoL1TestBase is TestBase { cp = new TaikoA6TierProvider(); + registerAddress("taiko", address(L1)); registerAddress("tier_pse_zkevm", address(pv)); registerAddress("tier_sgx", address(sv)); registerAddress("tier_guardian", address(gv)); @@ -98,6 +99,7 @@ abstract contract TaikoL1TestBase is TestBase { registerL2Address("taiko", address(TaikoL2)); registerL2Address("signal_service", address(L2SS)); registerL2Address("taiko_l2", address(TaikoL2)); + registerAddress(pv.getVerifierName(300), address(new MockVerifier())); tko = new TaikoToken(); @@ -116,12 +118,6 @@ abstract contract TaikoL1TestBase is TestBase { premintAmounts ); - // Set protocol broker - registerAddress("taiko", address(this)); - tko.mint(address(this), 1e9 ether); - - registerAddress("taiko", address(L1)); - L1.init(address(addressManager), GENESIS_BLOCK_HASH); printVariables("init "); } diff --git a/packages/protocol/test/L1/TaikoToken.t.sol b/packages/protocol/test/L1/TaikoToken.t.sol index a167ffe8da..68d413d093 100644 --- a/packages/protocol/test/L1/TaikoToken.t.sol +++ b/packages/protocol/test/L1/TaikoToken.t.sol @@ -12,7 +12,6 @@ contract TaikoTokenTest is TestBase { bytes32 GENESIS_BLOCK_HASH; address public tokenOwner; - address public taikoL1; AddressManager public addressManager; TransparentUpgradeableProxy public tokenProxy; @@ -23,12 +22,9 @@ contract TaikoTokenTest is TestBase { GENESIS_BLOCK_HASH = getRandomBytes32(); tokenOwner = getRandomAddress(); - taikoL1 = getRandomAddress(); addressManager = new AddressManager(); addressManager.init(); - _registerAddress("taiko", taikoL1); - tko = new TaikoToken(); address[] memory premintRecipients = new address[](2); @@ -80,169 +76,6 @@ contract TaikoTokenTest is TestBase { tokenProxy.upgradeTo(address(tkoUpgradedImpl)); } - function test_TaikoToken_mint() public { - assertEq(tko.balanceOf(Emma), 0 ether); - - uint256 amountToMint = 1 ether; - vm.prank(taikoL1); - tko.mint(Emma, amountToMint); - assertEq(tko.balanceOf(Emma), amountToMint); - } - - function test_TaikoToken_mint_invalid_address() public { - vm.prank(taikoL1); - vm.expectRevert("ERC20: mint to the zero address"); - tko.mint(address(0), 1 ether); - } - - function test_TaikoToken_mint_not_taiko_l1() public { - vm.expectRevert(AddressResolver.RESOLVER_DENIED.selector); - tko.mint(Emma, 1 ether); - } - - function test_TaikoToken_burn() public { - uint256 amountToMint = 1 ether; - vm.prank(taikoL1); - tko.mint(Emma, amountToMint); - assertEq(tko.balanceOf(Emma), amountToMint); - - vm.prank(taikoL1); - tko.burn(Emma, amountToMint); - assertEq(tko.balanceOf(Emma), 0); - } - - function test_TaikoToken_burn_not_taiko_l1() public { - vm.expectRevert(AddressResolver.RESOLVER_DENIED.selector); - tko.burn(address(0), 1 ether); - } - - function test_TaikoToken_burn_amount_exceeded() public { - uint256 amountToMint = 1 ether; - vm.prank(taikoL1); - tko.mint(Emma, amountToMint); - assertEq(tko.balanceOf(Emma), amountToMint); - } - - function test_TaikoToken_transfer() public { - uint256 amountToMint = 1 ether; - vm.prank(taikoL1); - tko.mint(Emma, amountToMint); - assertEq(tko.balanceOf(Emma), amountToMint); - - vm.prank(Emma); - tko.transfer(David, amountToMint); - - assertEq(tko.balanceOf(Emma), 0); - assertEq(tko.balanceOf(David), amountToMint); - } - - function test_TaikoToken_transfer_invalid_address() public { - uint256 amountToMint = 1 ether; - vm.prank(taikoL1); - tko.mint(Emma, amountToMint); - assertEq(tko.balanceOf(Emma), amountToMint); - - vm.prank(Emma); - vm.expectRevert("ERC20: transfer to the zero address"); - tko.transfer(address(0), amountToMint); - } - - function test_TaikoToken_transfer_to_contract_address() public { - uint256 amountToMint = 1 ether; - vm.prank(taikoL1); - tko.mint(Emma, amountToMint); - assertEq(tko.balanceOf(Emma), amountToMint); - - vm.prank(Emma); - vm.expectRevert(TaikoToken.TKO_INVALID_ADDR.selector); - tko.transfer(address(tko), amountToMint); - } - - function test_TaikoToken_transfer_amount_exceeded() public { - uint256 amountToMint = 1 ether; - uint256 amountToTransfer = 2 ether; - vm.prank(taikoL1); - tko.mint(Emma, amountToMint); - assertEq(tko.balanceOf(Emma), amountToMint); - - vm.prank(Emma); - vm.expectRevert(); - tko.transfer(address(tko), amountToTransfer); - assertEq(tko.balanceOf(Emma), amountToMint); - } - - function test_TaikoToken_transferFrom() public { - uint256 amountToMint = 1 ether; - vm.prank(taikoL1); - tko.mint(Emma, amountToMint); - assertEq(tko.balanceOf(Emma), amountToMint); - - vm.prank(Emma); - tko.approve(David, 1 ether); - - vm.prank(David); - tko.transferFrom(Emma, David, amountToMint); - - assertEq(tko.balanceOf(Emma), 0); - assertEq(tko.balanceOf(David), amountToMint); - } - - function test_TaikoToken_transferFrom_to_is_invalid() public { - uint256 amountToMint = 1 ether; - vm.prank(taikoL1); - tko.mint(Emma, amountToMint); - assertEq(tko.balanceOf(Emma), amountToMint); - - vm.prank(Emma); - tko.approve(David, 1 ether); - - vm.prank(David); - vm.expectRevert("ERC20: transfer to the zero address"); - tko.transferFrom(Emma, address(0), amountToMint); - } - - function test_TaikoToken_transferFrom_to_is_the_contract() public { - uint256 amountToMint = 1 ether; - vm.prank(taikoL1); - tko.mint(Emma, amountToMint); - assertEq(tko.balanceOf(Emma), amountToMint); - - vm.prank(Emma); - tko.approve(David, 1 ether); - - vm.prank(David); - vm.expectRevert(TaikoToken.TKO_INVALID_ADDR.selector); - tko.transferFrom(Emma, address(tko), amountToMint); - } - - function test_TaikoToken_transferFrom_from_is_invalid() public { - uint256 amountToMint = 1 ether; - vm.prank(taikoL1); - tko.mint(Emma, amountToMint); - assertEq(tko.balanceOf(Emma), amountToMint); - - vm.prank(Emma); - tko.approve(David, 1 ether); - - vm.prank(David); - // transferFrom(address(0)) will always throw has no allowance - vm.expectRevert("ERC20: insufficient allowance"); - tko.transferFrom(address(0), David, amountToMint); - } - - function test_TaikoToken_transferFrom_amount_exceeded() public { - uint256 amountToMint = 1 ether; - uint256 amountToTransfer = 2 ether; - vm.prank(taikoL1); - tko.mint(Emma, amountToMint); - assertEq(tko.balanceOf(Emma), amountToMint); - - vm.prank(Emma); - vm.expectRevert(); - tko.transfer(address(tko), amountToTransfer); - assertEq(tko.balanceOf(Emma), amountToMint); - } - function _registerAddress(bytes32 nameHash, address addr) private { addressManager.setAddress(block.chainid, nameHash, addr); } diff --git a/packages/protocol/test/bridge/Bridge.t.sol b/packages/protocol/test/bridge/Bridge.t.sol index 6257034bde..b28d39409d 100644 --- a/packages/protocol/test/bridge/Bridge.t.sol +++ b/packages/protocol/test/bridge/Bridge.t.sol @@ -54,18 +54,17 @@ contract BridgeTest is TestBase { destChainBridge = new Bridge(); destChainBridge.init(address(addressManager)); - vm.deal(address(destChainBridge), 100 ether); - mockProofSignalService = new SkipProofCheckSignal(); mockProofSignalService.init(address(addressManager)); - vm.deal(address(mockProofSignalService), 100 ether); - signalService = new SignalService(); signalService.init(address(addressManager)); etherVault = new EtherVault(); etherVault.init(address(addressManager)); + vm.deal(address(etherVault), 100 ether); + etherVault.authorize(address(bridge), true); + etherVault.authorize(address(destChainBridge), true); crossChainSync = new DummyCrossChainSync(); @@ -84,6 +83,14 @@ contract BridgeTest is TestBase { destChainId, "bridge", address(destChainBridge) ); + addressManager.setAddress( + block.chainid, "ether_vault", address(etherVault) + ); + + addressManager.setAddress( + destChainId, "ether_vault", address(etherVault) + ); + addressManager.setAddress(block.chainid, "bridge", address(bridge)); vm.stopPrank(); @@ -353,7 +360,7 @@ contract BridgeTest is TestBase { destChain: destChainId }); - uint256 starterBalanceBridge = address(bridge).balance; + uint256 starterBalanceVault = address(etherVault).balance; uint256 starterBalanceAlice = Alice.balance; vm.prank(Alice, Alice); @@ -361,11 +368,13 @@ contract BridgeTest is TestBase { bridge.sendMessage{ value: amount + fee }(message); assertEq(bridge.isMessageSent(_message), true); - assertEq(address(bridge).balance, (starterBalanceBridge + amount + fee)); + assertEq( + address(etherVault).balance, (starterBalanceVault + amount + fee) + ); assertEq(Alice.balance, (starterBalanceAlice - (amount + fee))); bridge.recallMessage(message, ""); - assertEq(address(bridge).balance, (starterBalanceBridge + fee)); + assertEq(address(etherVault).balance, (starterBalanceVault + fee)); assertEq(Alice.balance, (starterBalanceAlice - fee)); } @@ -387,17 +396,19 @@ contract BridgeTest is TestBase { destChain: destChainId }); - uint256 starterBalanceBridge = address(bridge).balance; + uint256 starterBalanceVault = address(etherVault).balance; untrustedSenderContract.sendMessage( address(bridge), message, amount + fee ); - assertEq(address(bridge).balance, (starterBalanceBridge + amount + fee)); + assertEq( + address(etherVault).balance, (starterBalanceVault + amount + fee) + ); bridge.recallMessage(message, ""); - assertEq(address(bridge).balance, (starterBalanceBridge + fee)); + assertEq(address(etherVault).balance, (starterBalanceVault + fee)); } function test_Bridge_send_message_ether_with_processing_fee_invalid_amount() @@ -524,9 +535,6 @@ contract BridgeTest is TestBase { addressManager.setAddress(dest, "ether_vault", address(etherVault)); - etherVault.authorize(address(destChainBridge), true); - etherVault.authorize(address(mockProofSignalService), true); - vm.deal(address(etherVault), 100 ether); addressManager.setAddress( diff --git a/packages/protocol/test/tokenvault/ERC20Vault.t.sol b/packages/protocol/test/tokenvault/ERC20Vault.t.sol index 2e454e84a7..3e7473aa3b 100644 --- a/packages/protocol/test/tokenvault/ERC20Vault.t.sol +++ b/packages/protocol/test/tokenvault/ERC20Vault.t.sol @@ -7,6 +7,7 @@ import { Bridge } from "../../contracts/bridge/Bridge.sol"; import { BridgedERC20 } from "../../contracts/tokenvault/BridgedERC20.sol"; import { FreeMintERC20 } from "../../contracts/test/erc20/FreeMintERC20.sol"; import { SignalService } from "../../contracts/signal/SignalService.sol"; +import { EtherVault } from "../../contracts/bridge/EtherVault.sol"; import { TaikoToken } from "../../contracts/L1/TaikoToken.sol"; import { Test } from "forge-std/Test.sol"; import { ERC20Vault } from "../../contracts/tokenvault/ERC20Vault.sol"; @@ -82,6 +83,7 @@ contract TestERC20Vault is Test { TaikoToken tko; AddressManager addressManager; Bridge bridge; + EtherVault etherVault; ERC20Vault erc20Vault; ERC20Vault destChainIdERC20Vault; PrankDestBridge destChainIdBridge; @@ -109,6 +111,9 @@ contract TestERC20Vault is Test { addressManager.init(); addressManager.setAddress(block.chainid, "taiko_token", address(tko)); + etherVault = new EtherVault(); + etherVault.init(address(addressManager)); + erc20Vault = new ERC20Vault(); erc20Vault.init(address(addressManager)); @@ -137,6 +142,10 @@ contract TestERC20Vault is Test { block.chainid, "erc20_vault", address(erc20Vault) ); + addressManager.setAddress( + block.chainid, "ether_vault", address(etherVault) + ); + addressManager.setAddress( destChainId, "erc20_vault", address(destChainIdERC20Vault) ); @@ -145,6 +154,10 @@ contract TestERC20Vault is Test { destChainId, "bridge", address(destChainIdBridge) ); + // Authorize + etherVault.authorize(address(destChainIdBridge), true); + etherVault.authorize(address(bridge), true); + vm.stopPrank(); } diff --git a/packages/protocol/test/tokenvault/EtherVault.t.sol b/packages/protocol/test/tokenvault/EtherVault.t.sol index 46ece6f452..c04dcc1450 100644 --- a/packages/protocol/test/tokenvault/EtherVault.t.sol +++ b/packages/protocol/test/tokenvault/EtherVault.t.sol @@ -43,26 +43,6 @@ contract TestEtherVault is TestBase { assertTrue(etherVault.isAuthorized(Bob)); } - function test_EtherVault_receive_allows_sending_when_authorized_only() - public - { - assertEq(address(etherVault).balance, 0); - assertEq(Alice.balance > 0, true); - vm.startPrank(Alice); - etherVault.authorize(Alice, true); - (bool aliceSent,) = address(etherVault).call{ value: 1 }(""); - assertTrue(aliceSent); - assertEq(address(etherVault).balance, 1); - - vm.stopPrank(); - assertTrue(Bob.balance > 0); - vm.startPrank(Bob); - - (bool bobSent,) = address(etherVault).call{ value: 1 }(""); - assertFalse(bobSent); - vm.stopPrank(); - } - function test_EtherVault_releaseEther_reverts_when_zero_address() public { vm.startPrank(Alice); etherVault.authorize(Alice, true); diff --git a/packages/protocol/utils/generate_genesis/erc20.ts b/packages/protocol/utils/generate_genesis/erc20.ts index cbc7db4ea0..6621d40014 100644 --- a/packages/protocol/utils/generate_genesis/erc20.ts +++ b/packages/protocol/utils/generate_genesis/erc20.ts @@ -15,16 +15,17 @@ export const PREMINT_SEED_ACCOUNT_BALANCE = ethers.BigNumber.from(1024000); // and premints some tokens for the seed accounts given in the configurations. export async function deployERC20( config: any, - result: Result, + result: Result ): Promise { const { contractOwner, chainId, seedAccounts } = config; const alloc: any = {}; const storageLayouts: any = {}; - const artifact = require( - path.join(ARTIFACTS_PATH, "./RegularERC20.sol/RegularERC20.json"), - ); + const artifact = require(path.join( + ARTIFACTS_PATH, + "./RegularERC20.sol/RegularERC20.json" + )); artifact.contractName = "RegularERC20"; @@ -38,9 +39,9 @@ export async function deployERC20( address = ethers.utils.getCreate2Address( contractOwner, ethers.utils.keccak256( - ethers.utils.toUtf8Bytes(`${chainId}${artifact.contractName}`), + ethers.utils.toUtf8Bytes(`${chainId}${artifact.contractName}`) ), - ethers.utils.keccak256(ethers.utils.toUtf8Bytes(artifact.bytecode)), + ethers.utils.keccak256(ethers.utils.toUtf8Bytes(artifact.bytecode)) ); } @@ -64,12 +65,12 @@ export async function deployERC20( }; storageLayouts[artifact.contractName] = await getStorageLayout( - artifact.contractName, + artifact.contractName ); for (const slot of computeStorageSlots( storageLayouts[artifact.contractName], - variables, + variables )) { alloc[address].storage[slot.key] = slot.val; } @@ -77,7 +78,7 @@ export async function deployERC20( result.alloc = Object.assign(result.alloc, alloc); result.storageLayouts = Object.assign( result.storageLayouts, - storageLayouts, + storageLayouts ); return result; diff --git a/packages/protocol/utils/generate_genesis/main.ts b/packages/protocol/utils/generate_genesis/main.ts index 450fe4590f..777c48402c 100644 --- a/packages/protocol/utils/generate_genesis/main.ts +++ b/packages/protocol/utils/generate_genesis/main.ts @@ -12,11 +12,9 @@ async function main() { throw new Error("missing config json"); } - const config: Config = require( - path.isAbsolute(process.argv[2]) - ? process.argv[2] - : path.join(process.cwd(), process.argv[2]), - ); + const config: Config = require(path.isAbsolute(process.argv[2]) + ? process.argv[2] + : path.join(process.cwd(), process.argv[2])); const contractOwner = config.contractOwner; const chainId = config.chainId; @@ -41,7 +39,7 @@ async function main() { contractOwner, chainId, seedAccounts, - })}`, + })}` ); } @@ -62,19 +60,19 @@ async function main() { const allocSavedPath = path.join( __dirname, - "../../deployments/genesis_alloc.json", + "../../deployments/genesis_alloc.json" ); fs.writeFileSync(allocSavedPath, JSON.stringify(result.alloc, null, 2)); const layoutSavedPath = path.join( __dirname, - "../../deployments/genesis_storage_layout.json", + "../../deployments/genesis_storage_layout.json" ); fs.writeFileSync( layoutSavedPath, - JSON.stringify(result.storageLayouts, null, 2), + JSON.stringify(result.storageLayouts, null, 2) ); console.log("done"); diff --git a/packages/protocol/utils/generate_genesis/taikoL2.ts b/packages/protocol/utils/generate_genesis/taikoL2.ts index ea979aa451..19f2ec2792 100644 --- a/packages/protocol/utils/generate_genesis/taikoL2.ts +++ b/packages/protocol/utils/generate_genesis/taikoL2.ts @@ -8,6 +8,7 @@ const { getStorageLayout, } = require("@defi-wonderland/smock/dist/src/utils"); const ARTIFACTS_PATH = path.join(__dirname, "../../out"); + const IMPLEMENTATION_SLOT = "0x360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc"; @@ -17,7 +18,7 @@ const ADMIN_SLOT = // deployTaikoL2 generates a L2 genesis alloc of the TaikoL2 contract. export async function deployTaikoL2( config: Config, - result: Result, + result: Result ): Promise { const { contractOwner, chainId, seedAccounts, contractAdmin } = config; @@ -28,7 +29,7 @@ export async function deployTaikoL2( for (const seedAccount of seedAccounts) { const accountAddress = Object.keys(seedAccount)[0]; const balance = ethers.utils.parseEther( - `${Object.values(seedAccount)[0]}`, + `${Object.values(seedAccount)[0]}` ); console.log(`seedAccountAddress: ${accountAddress}`); @@ -47,7 +48,7 @@ export async function deployTaikoL2( contractAdmin, chainId, config.contractAddresses, - config.param1559, + config.param1559 ); const storageLayouts: any = {}; @@ -78,13 +79,14 @@ export async function deployTaikoL2( storageLayoutName = `Proxied${storageLayoutName}`; } - storageLayouts[contractName] = - await getStorageLayout(storageLayoutName); + storageLayouts[contractName] = await getStorageLayout( + storageLayoutName + ); // initialize contract variables, we only care about the variables // that need to be initialized with non-zero value. const slots = computeStorageSlots( storageLayouts[contractName], - contractConfigs[contractName].variables, + contractConfigs[contractName].variables ); for (const slot of slots) { @@ -93,7 +95,7 @@ export async function deployTaikoL2( if (contractConfigs[contractName].slots) { for (const [slot, val] of Object.entries( - contractConfigs[contractName].slots, + contractConfigs[contractName].slots )) { alloc[contractConfig.address].storage[slot] = val; } @@ -103,7 +105,7 @@ export async function deployTaikoL2( result.alloc = Object.assign(result.alloc, alloc); result.storageLayouts = Object.assign( result.storageLayouts, - storageLayouts, + storageLayouts ); return result; @@ -116,64 +118,53 @@ async function generateContractConfigs( contractAdmin: string, chainId: number, hardCodedAddresses: any, - param1559: any, + param1559: any ): Promise { const contractArtifacts: any = { // Libraries - LibVaultUtils: require( - path.join(ARTIFACTS_PATH, "./LibVaultUtils.sol/LibVaultUtils.json"), - ), + LibVaultUtils: require(path.join( + ARTIFACTS_PATH, + "./LibVaultUtils.sol/LibVaultUtils.json" + )), // Contracts - ProxiedAddressManager: require( - path.join( - ARTIFACTS_PATH, - "./AddressManager.sol/ProxiedAddressManager.json", - ), - ), - ProxiedTaikoL2: require( - path.join(ARTIFACTS_PATH, "./TaikoL2.sol/ProxiedTaikoL2.json"), - ), - ProxiedBridge: require( - path.join(ARTIFACTS_PATH, "./Bridge.sol/ProxiedBridge.json"), - ), - ProxiedERC20Vault: require( - path.join( - ARTIFACTS_PATH, - "./ERC20Vault.sol/ProxiedERC20Vault.json", - ), - ), - ProxiedERC721Vault: require( - path.join( - ARTIFACTS_PATH, - "./ERC721Vault.sol/ProxiedERC721Vault.json", - ), - ), - ProxiedERC1155Vault: require( - path.join( - ARTIFACTS_PATH, - "./ERC1155Vault.sol/ProxiedERC1155Vault.json", - ), - ), - ProxiedEtherVault: require( - path.join( - ARTIFACTS_PATH, - "./EtherVault.sol/ProxiedEtherVault.json", - ), - ), - ProxiedSignalService: require( - path.join( - ARTIFACTS_PATH, - "./SignalService.sol/ProxiedSignalService.json", - ), - ), + ProxiedAddressManager: require(path.join( + ARTIFACTS_PATH, + "./AddressManager.sol/ProxiedAddressManager.json" + )), + ProxiedTaikoL2: require(path.join( + ARTIFACTS_PATH, + "./TaikoL2.sol/ProxiedTaikoL2.json" + )), + ProxiedBridge: require(path.join( + ARTIFACTS_PATH, + "./Bridge.sol/ProxiedBridge.json" + )), + ProxiedERC20Vault: require(path.join( + ARTIFACTS_PATH, + "./ERC20Vault.sol/ProxiedERC20Vault.json" + )), + ProxiedERC721Vault: require(path.join( + ARTIFACTS_PATH, + "./ERC721Vault.sol/ProxiedERC721Vault.json" + )), + ProxiedERC1155Vault: require(path.join( + ARTIFACTS_PATH, + "./ERC1155Vault.sol/ProxiedERC1155Vault.json" + )), + ProxiedEtherVault: require(path.join( + ARTIFACTS_PATH, + "./EtherVault.sol/ProxiedEtherVault.json" + )), + ProxiedSignalService: require(path.join( + ARTIFACTS_PATH, + "./SignalService.sol/ProxiedSignalService.json" + )), }; - const proxy = require( - path.join( - ARTIFACTS_PATH, - "./TransparentUpgradeableProxy.sol/TransparentUpgradeableProxy.json", - ), - ); + const proxy = require(path.join( + ARTIFACTS_PATH, + "./TransparentUpgradeableProxy.sol/TransparentUpgradeableProxy.json" + )); contractArtifacts.TaikoL2Proxy = proxy; contractArtifacts.BridgeProxy = proxy; contractArtifacts.ERC20VaultProxy = proxy; @@ -192,19 +183,19 @@ async function generateContractConfigs( case "ProxiedTaikoL2": bytecode = linkContractLibs( contractArtifacts.ProxiedTaikoL2, - addressMap, + addressMap ); break; case "ProxiedBridge": bytecode = linkContractLibs( contractArtifacts.ProxiedBridge, - addressMap, + addressMap ); break; case "ProxiedSignalService": bytecode = linkContractLibs( contractArtifacts.ProxiedSignalService, - addressMap, + addressMap ); break; default: @@ -220,9 +211,9 @@ async function generateContractConfigs( addressMap[contractName] = ethers.utils.getCreate2Address( contractOwner, ethers.utils.keccak256( - ethers.utils.toUtf8Bytes(`${chainId}${contractName}`), + ethers.utils.toUtf8Bytes(`${chainId}${contractName}`) ), - ethers.utils.keccak256(ethers.utils.toUtf8Bytes(bytecode)), + ethers.utils.keccak256(ethers.utils.toUtf8Bytes(bytecode)) ); } } @@ -251,25 +242,25 @@ async function generateContractConfigs( addresses: { [chainId]: { [ethers.utils.hexlify( - ethers.utils.toUtf8Bytes("taiko"), + ethers.utils.toUtf8Bytes("taiko") )]: addressMap.TaikoL2Proxy, [ethers.utils.hexlify( - ethers.utils.toUtf8Bytes("bridge"), + ethers.utils.toUtf8Bytes("bridge") )]: addressMap.BridgeProxy, [ethers.utils.hexlify( - ethers.utils.toUtf8Bytes("erc20_vault"), + ethers.utils.toUtf8Bytes("erc20_vault") )]: addressMap.ERC20VaultProxy, [ethers.utils.hexlify( - ethers.utils.toUtf8Bytes("erc721_vault"), + ethers.utils.toUtf8Bytes("erc721_vault") )]: addressMap.ERC721VaultProxy, [ethers.utils.hexlify( - ethers.utils.toUtf8Bytes("erc1155_vault"), + ethers.utils.toUtf8Bytes("erc1155_vault") )]: addressMap.ERC1155VaultProxy, [ethers.utils.hexlify( - ethers.utils.toUtf8Bytes("ether_vault"), + ethers.utils.toUtf8Bytes("ether_vault") )]: addressMap.EtherVaultProxy, [ethers.utils.hexlify( - ethers.utils.toUtf8Bytes("signal_service"), + ethers.utils.toUtf8Bytes("signal_service") )]: addressMap.SignalServiceProxy, }, }, @@ -284,7 +275,7 @@ async function generateContractConfigs( address: addressMap.ProxiedTaikoL2, deployedBytecode: linkContractLibs( contractArtifacts.ProxiedTaikoL2, - addressMap, + addressMap ), }, TaikoL2Proxy: { @@ -295,6 +286,9 @@ async function generateContractConfigs( // TaikoL2 // OwnableUpgradeable _owner: contractOwner, + // ReentrancyGuardUpgradeable + _reentry: 1, // _FALSE + _paused: 1, // _FALSE // keccak256(abi.encodePacked(block.chainid, basefee, ancestors)) publicInputHash: `${ethers.utils.solidityKeccak256( ["bytes32[256]"], @@ -304,10 +298,10 @@ async function generateContractConfigs( .concat([ ethers.utils.hexZeroPad( ethers.utils.hexlify(chainId), - 32, + 32 ), ]), - ], + ] )}`, gasExcess: ethers.BigNumber.from(param1559.gasExcess), // AddressResolver @@ -323,7 +317,7 @@ async function generateContractConfigs( address: addressMap.ProxiedBridge, deployedBytecode: linkContractLibs( contractArtifacts.ProxiedBridge, - addressMap, + addressMap ), }, BridgeProxy: { @@ -335,7 +329,8 @@ async function generateContractConfigs( _initialized: 1, _initializing: false, // ReentrancyGuardUpgradeable - _status: 1, // _NOT_ENTERED + _reentry: 1, // _FALSE + _paused: 1, // _FALSE // OwnableUpgradeable _owner: contractOwner, // AddressResolver @@ -351,7 +346,7 @@ async function generateContractConfigs( address: addressMap.ProxiedERC20Vault, deployedBytecode: linkContractLibs( contractArtifacts.ProxiedERC20Vault, - addressMap, + addressMap ), }, ERC20VaultProxy: { @@ -363,7 +358,8 @@ async function generateContractConfigs( _initialized: 1, _initializing: false, // ReentrancyGuardUpgradeable - _status: 1, // _NOT_ENTERED + _reentry: 1, // _FALSE + _paused: 1, // _FALSE // OwnableUpgradeable _owner: contractOwner, // AddressResolver @@ -379,7 +375,7 @@ async function generateContractConfigs( address: addressMap.ProxiedERC721Vault, deployedBytecode: linkContractLibs( contractArtifacts.ProxiedERC721Vault, - addressMap, + addressMap ), }, ERC721VaultProxy: { @@ -391,7 +387,8 @@ async function generateContractConfigs( _initialized: 1, _initializing: false, // ReentrancyGuardUpgradeable - _status: 1, // _NOT_ENTERED + _reentry: 1, // _FALSE + _paused: 1, // _FALSE // OwnableUpgradeable _owner: contractOwner, // AddressResolver @@ -407,7 +404,7 @@ async function generateContractConfigs( address: addressMap.ProxiedERC1155Vault, deployedBytecode: linkContractLibs( contractArtifacts.ProxiedERC1155Vault, - addressMap, + addressMap ), }, ERC1155VaultProxy: { @@ -419,7 +416,8 @@ async function generateContractConfigs( _initialized: 1, _initializing: false, // ReentrancyGuardUpgradeable - _status: 1, // _NOT_ENTERED + _reentry: 1, // _FALSE + _paused: 1, // _FALSE // OwnableUpgradeable _owner: contractOwner, // AddressResolver @@ -445,7 +443,8 @@ async function generateContractConfigs( _initialized: 1, _initializing: false, // ReentrancyGuardUpgradeable - _status: 1, // _NOT_ENTERED + _reentry: 1, // _FALSE + _paused: 1, // _FALSE // OwnableUpgradeable _owner: contractOwner, // AddressResolver @@ -464,7 +463,7 @@ async function generateContractConfigs( address: addressMap.ProxiedSignalService, deployedBytecode: linkContractLibs( contractArtifacts.ProxiedSignalService, - addressMap, + addressMap ), }, SignalServiceProxy: { @@ -476,7 +475,8 @@ async function generateContractConfigs( _initialized: 1, _initializing: false, // ReentrancyGuardUpgradeable - _status: 1, // _NOT_ENTERED + _reentry: 1, // _FALSE + _paused: 1, // _FALSE // OwnableUpgradeable _owner: contractOwner, // AddressResolver @@ -499,8 +499,8 @@ function linkContractLibs(artifact: any, addressMap: any) { getLinkLibs( artifact, linker.findLinkReferences(artifact.deployedBytecode.object), - addressMap, - ), + addressMap + ) ); if (ethers.utils.toUtf8Bytes(linkedBytecode).includes("$__")) { @@ -521,11 +521,11 @@ function getLinkLibs(artifact: any, linkRefs: any, addressMap: any) { const linkRefKey: any = Object.keys(linkRefs).find( (key) => linkRefs[key][0].start === - linkReference[contractName][0].start + 1, + linkReference[contractName][0].start + 1 ); result[linkRefKey] = addressMap[contractName]; - }, + } ); return result; From 8ba512b54c2102b93907d12cc108c4c3b02602f0 Mon Sep 17 00:00:00 2001 From: Daniel Wang <99078276+dantaik@users.noreply.github.com> Date: Mon, 23 Oct 2023 13:27:04 +0800 Subject: [PATCH 72/87] feat(protocol): set taiko token supply to 1 billion (#15007) Co-authored-by: Daniel Wang Co-authored-by: David --- packages/protocol/contracts/L1/TaikoToken.sol | 16 +++++--------- packages/protocol/script/DeployOnL1.s.sol | 19 +++------------- packages/protocol/script/test_deploy_on_l1.sh | 3 +-- packages/protocol/test/L1/TaikoL1TestBase.sol | 15 ++----------- packages/protocol/test/L1/TaikoToken.t.sol | 22 +++---------------- 5 files changed, 14 insertions(+), 61 deletions(-) diff --git a/packages/protocol/contracts/L1/TaikoToken.sol b/packages/protocol/contracts/L1/TaikoToken.sol index 2a8eb326ac..c4963b7297 100644 --- a/packages/protocol/contracts/L1/TaikoToken.sol +++ b/packages/protocol/contracts/L1/TaikoToken.sol @@ -28,21 +28,16 @@ contract TaikoToken is error TKO_INVALID_ADDR(); error TKO_INVALID_PREMINT_PARAMS(); - /// @notice Initializes the TaikoToken contract and mints initial tokens to - /// specified recipients. + /// @notice Initializes the TaikoToken contract and mints initial tokens. /// @param _addressManager The {AddressManager} address. /// @param _name The name of the token. /// @param _symbol The symbol of the token. - /// @param _premintRecipients An array of addresses to receive initial token - /// minting. - /// @param _premintAmounts An array of token amounts to mint for each - /// corresponding recipient. + /// @param _recipient The address to receive initial token minting. function init( address _addressManager, string calldata _name, string calldata _symbol, - address[] calldata _premintRecipients, - uint256[] calldata _premintAmounts + address _recipient ) public initializer @@ -52,9 +47,8 @@ contract TaikoToken is ERC20SnapshotUpgradeable.__ERC20Snapshot_init_unchained(); ERC20VotesUpgradeable.__ERC20Votes_init_unchained(); - for (uint256 i; i < _premintRecipients.length; ++i) { - _mint(_premintRecipients[i], _premintAmounts[i]); - } + // Mint 1 billion tokens + _mint(_recipient, 1_000_000_000 ether); } /// @notice Creates a new token snapshot. diff --git a/packages/protocol/script/DeployOnL1.s.sol b/packages/protocol/script/DeployOnL1.s.sol index 1e8fa33688..3e56306e24 100644 --- a/packages/protocol/script/DeployOnL1.s.sol +++ b/packages/protocol/script/DeployOnL1.s.sol @@ -55,11 +55,8 @@ contract DeployOnL1 is Script { uint256 public tierProvider = vm.envUint("TIER_PROVIDER"); - address[] public taikoTokenPremintRecipients = - vm.envAddress("TAIKO_TOKEN_PREMINT_RECIPIENTS", ","); - - uint256[] public taikoTokenPremintAmounts = - vm.envUint("TAIKO_TOKEN_PREMINT_AMOUNTS", ","); + address public taikoTokenPremintRecipient = + vm.envAddress("TAIKO_TOKEN_PREMINT_RECIPIENT"); TaikoL1 taikoL1; address public addressManagerProxy; @@ -76,15 +73,6 @@ contract DeployOnL1 is Script { guardianProvers.length == NUM_GUARDIANS, "invalid guardian provers number" ); - require( - taikoTokenPremintRecipients.length != 0, - "taikoTokenPremintRecipients length is zero" - ); - require( - taikoTokenPremintRecipients.length - == taikoTokenPremintAmounts.length, - "taikoTokenPremintRecipients and taikoTokenPremintAmounts must be same length" - ); vm.startBroadcast(deployerPrivateKey); // AddressManager @@ -118,8 +106,7 @@ contract DeployOnL1 is Script { addressManagerProxy, "Taiko Token Eldfell", "TTKOe", - taikoTokenPremintRecipients, - taikoTokenPremintAmounts + taikoTokenPremintRecipient ) ) ); diff --git a/packages/protocol/script/test_deploy_on_l1.sh b/packages/protocol/script/test_deploy_on_l1.sh index dc200049ad..a2333c889f 100755 --- a/packages/protocol/script/test_deploy_on_l1.sh +++ b/packages/protocol/script/test_deploy_on_l1.sh @@ -10,8 +10,7 @@ GUARDIAN_PROVERS="0x1000777700000000000000000000000000000001,0x10007777000000000 OWNER=0x70997970C51812dc3A010C7d01b50e0d17dc79C8 \ TAIKO_L2_ADDRESS=0x1000777700000000000000000000000000000001 \ L2_SIGNAL_SERVICE=0x1000777700000000000000000000000000000007 \ -TAIKO_TOKEN_PREMINT_RECIPIENTS=0xa0Ee7A142d267C1f36714E4a8F75612F20a79720 \ -TAIKO_TOKEN_PREMINT_AMOUNTS=0xffff \ +TAIKO_TOKEN_PREMINT_RECIPIENT=0xa0Ee7A142d267C1f36714E4a8F75612F20a79720 \ TIER_PROVIDER=0x1 \ L2_GENESIS_HASH=0xee1950562d42f0da28bd4550d88886bc90894c77c9c9eaefef775d4c8223f259 \ forge script script/DeployOnL1.s.sol:DeployOnL1 \ diff --git a/packages/protocol/test/L1/TaikoL1TestBase.sol b/packages/protocol/test/L1/TaikoL1TestBase.sol index 17ce8069aa..35a06d0bdb 100644 --- a/packages/protocol/test/L1/TaikoL1TestBase.sol +++ b/packages/protocol/test/L1/TaikoL1TestBase.sol @@ -104,19 +104,8 @@ abstract contract TaikoL1TestBase is TestBase { tko = new TaikoToken(); registerAddress("taiko_token", address(tko)); - address[] memory premintRecipients = new address[](1); - premintRecipients[0] = address(this); - - uint256[] memory premintAmounts = new uint256[](1); - premintAmounts[0] = 1e9 ether; - - tko.init( - address(addressManager), - "TaikoToken", - "TKO", - premintRecipients, - premintAmounts - ); + + tko.init(address(addressManager), "TaikoToken", "TKO", address(this)); L1.init(address(addressManager), GENESIS_BLOCK_HASH); printVariables("init "); diff --git a/packages/protocol/test/L1/TaikoToken.t.sol b/packages/protocol/test/L1/TaikoToken.t.sol index 68d413d093..3cc9862a99 100644 --- a/packages/protocol/test/L1/TaikoToken.t.sol +++ b/packages/protocol/test/L1/TaikoToken.t.sol @@ -27,35 +27,19 @@ contract TaikoTokenTest is TestBase { addressManager.init(); tko = new TaikoToken(); - address[] memory premintRecipients = new address[](2); - premintRecipients[0] = Yasmine; - premintRecipients[1] = Zachary; - - uint256[] memory premintAmounts = new uint256[](2); - premintAmounts[0] = 5 ether; - premintAmounts[1] = 5 ether; - tokenProxy = _deployViaProxy( address(tko), bytes.concat( tko.init.selector, abi.encode( - address(addressManager), - "Taiko Token", - "TKO", - premintRecipients, - premintAmounts + address(addressManager), "Taiko Token", "TKO", address(this) ) ) ); tko = TaikoToken(address(tokenProxy)); - } - - function test_TaikoToken_proper_premint() public { - assertEq(tko.balanceOf(Yasmine), 5 ether); - - assertEq(tko.balanceOf(Zachary), 5 ether); + tko.transfer(Yasmine, 5 ether); + tko.transfer(Zachary, 5 ether); } function test_TaikoToken_upgrade() public { From 8e6c04777ffb4feea810ff0261959dd4542582d3 Mon Sep 17 00:00:00 2001 From: jeff <113397187+cyberhorsey@users.noreply.github.com> Date: Mon, 23 Oct 2023 05:38:14 -0700 Subject: [PATCH 73/87] feat(relayer): Relayer multihop (#15000) Co-authored-by: Daniel Wang <99078276+dantaik@users.noreply.github.com> Co-authored-by: David Co-authored-by: Roger <50648015+RogerLamTd@users.noreply.github.com> --- go.mod | 2 +- packages/protocol/script/SetAddress.s.sol | 45 + packages/relayer/.gitignore | 11 +- packages/relayer/.golangci.yml | 4 +- packages/relayer/.l1processor.example.env | 9 +- packages/relayer/SignalService.json | 301 +++++++ .../bindings/signalservice/SignalService.go | 800 ++++++++++++++++++ packages/relayer/cmd/flags/processor.go | 24 + .../relayer/encoding/signal_proof_test.go | 9 +- packages/relayer/encoding/types.go | 35 +- packages/relayer/mock/blocker.go | 4 + packages/relayer/mock/eth_client.go | 4 + packages/relayer/mock/signalservice.go | 20 + packages/relayer/processor/config.go | 27 + packages/relayer/processor/process_message.go | 136 ++- .../relayer/processor/process_message_test.go | 16 +- packages/relayer/processor/processor.go | 92 +- packages/relayer/processor/processor_test.go | 3 +- .../relayer/processor/wait_header_synced.go | 46 +- .../processor/wait_header_synced_test.go | 9 +- packages/relayer/proof/block_header.go | 26 +- packages/relayer/proof/block_header_test.go | 8 +- .../relayer/proof/encoded_signal_proof.go | 123 ++- .../proof/encoded_signal_proof_test.go | 10 +- packages/relayer/proof/prover.go | 2 + packages/relayer/scripts/abigen.sh | 4 +- packages/relayer/signalservice.go | 12 + 27 files changed, 1671 insertions(+), 111 deletions(-) create mode 100644 packages/protocol/script/SetAddress.s.sol create mode 100644 packages/relayer/SignalService.json create mode 100644 packages/relayer/bindings/signalservice/SignalService.go create mode 100644 packages/relayer/mock/signalservice.go create mode 100644 packages/relayer/signalservice.go diff --git a/go.mod b/go.mod index f38d47597b..604d9f4f2f 100644 --- a/go.mod +++ b/go.mod @@ -25,6 +25,7 @@ require ( github.com/rabbitmq/amqp091-go v1.8.1 github.com/shopspring/decimal v1.3.1 github.com/stretchr/testify v1.8.4 + github.com/swaggo/swag v1.16.2 github.com/testcontainers/testcontainers-go v0.21.0 github.com/urfave/cli/v2 v2.25.7 golang.org/x/exp v0.0.0-20230810033253-352e893a4cad @@ -133,7 +134,6 @@ require ( github.com/shirou/gopsutil v3.21.4-0.20210419000835-c7a38de76ee5+incompatible // indirect github.com/sirupsen/logrus v1.9.0 // indirect github.com/skeema/knownhosts v1.1.1 // indirect - github.com/swaggo/swag v1.16.2 // indirect github.com/syndtr/goleveldb v1.0.1-0.20210819022825-2ae1ddf74ef7 // indirect github.com/tklauser/go-sysconf v0.3.12 // indirect github.com/tklauser/numcpus v0.6.1 // indirect diff --git a/packages/protocol/script/SetAddress.s.sol b/packages/protocol/script/SetAddress.s.sol new file mode 100644 index 0000000000..5bac86a26e --- /dev/null +++ b/packages/protocol/script/SetAddress.s.sol @@ -0,0 +1,45 @@ +// SPDX-License-Identifier: MIT +// _____ _ _ _ _ +// |_ _|_ _(_) |_____ | | __ _| |__ ___ +// | |/ _` | | / / _ \ | |__/ _` | '_ (_-< +// |_|\__,_|_|_\_\___/ |____\__,_|_.__/__/ + +pragma solidity ^0.8.20; + +import "forge-std/Script.sol"; +import "forge-std/console2.sol"; + +import "../contracts/common/AddressManager.sol"; + +import + "lib/openzeppelin-contracts/contracts/proxy/transparent/TransparentUpgradeableProxy.sol"; + +contract SetAddress is Script { + uint256 public adminPrivateKey = vm.envUint("PRIVATE_KEY"); + + address public proxyAddress = vm.envAddress("PROXY_ADDRESS"); + + uint256 public domain = vm.envUint("DOMAIN"); + + bytes32 public name = vm.envBytes32("NAME"); + + address public addr = vm.envAddress("ADDRESS"); + + ProxiedAddressManager proxy; + + function run() external { + require(adminPrivateKey != 0, "PRIVATE_KEY not set"); + require(proxyAddress != address(0), "PROXY_ADDRESS not set"); + require(domain != 0, "DOMAIN NOT SET"); + require(name != bytes32(0), "NAME NOT SET"); + require(addr != address(0), "ADDR NOT SET"); + + vm.startBroadcast(adminPrivateKey); + + proxy = ProxiedAddressManager(payable(proxyAddress)); + + proxy.setAddress(domain, name, addr); + + vm.stopBroadcast(); + } +} diff --git a/packages/relayer/.gitignore b/packages/relayer/.gitignore index 4903d05bca..1e90821859 100644 --- a/packages/relayer/.gitignore +++ b/packages/relayer/.gitignore @@ -3,11 +3,14 @@ .l1l2.env .l2l3.env .test.env -.l1indexer.env -.l2indexer.env +.l1l2indexer.env +.l1l3indexer.env +.l2l1indexer.env +.l1l2processor.env +.l1l3processor.env +.l2l1processor.env .l1processor.env -.l2processor.env - +.l2indexer.env main coverage.txt diff --git a/packages/relayer/.golangci.yml b/packages/relayer/.golangci.yml index 6f7b138feb..010e197cd3 100644 --- a/packages/relayer/.golangci.yml +++ b/packages/relayer/.golangci.yml @@ -28,8 +28,8 @@ linters: linters-settings: funlen: - lines: 155 - statements: 60 + lines: 250 + statements: 80 gocognit: min-complexity: 55 diff --git a/packages/relayer/.l1processor.example.env b/packages/relayer/.l1processor.example.env index 859b666682..d4be45f765 100644 --- a/packages/relayer/.l1processor.example.env +++ b/packages/relayer/.l1processor.example.env @@ -12,14 +12,17 @@ QUEUE_HOST=localhost QUEUE_PORT=5672 PROCESSOR_PRIVATE_KEY= DEST_BRIDGE_ADDRESS=0x1000777700000000000000000000000000000004 -SRC_ERC20_VAULT_ADDRESS=0xc6e7DF5E7b4f2A278906862b61205850344D4e7d +SRC_ERC20_VAULT_ADDRESS=0x68B1D87F95878fE05B998F19b66F4baba5De1aed DEST_ERC20_VAULT_ADDRESS=0x1000777700000000000000000000000000000002 DEST_ERC721_VAULT_ADDRESS=0x1000777700000000000000000000000000000008 DEST_ERC1155_VAULT_ADDRESS=0x1000777700000000000000000000000000000009 DEST_TAIKO_ADDRESS=0x1000777700000000000000000000000000000001 -SRC_SIGNAL_SERVICE_ADDRESS=0x84eA74d481Ee0A5332c457a4d796187F6Ba67fEB +SRC_SIGNAL_SERVICE_ADDRESS=0x998abeb3E57409262aE5b751f60747921B33613E +HOP_SIGNAL_SERVICE_ADDRESSES=0x1000777700000000000000000000000000000007 +HOP_TAIKO_ADDRESSES=0x1000777700000000000000000000000000000007 SRC_RPC_URL=wss://l1ws.internal.taiko.xyz -DEST_RPC_URL=wss://ws.internal.taiko.xyz +HOP_RPC_URLS=wss://ws.internal.taiko.xyz +DEST_RPC_URL=wss://l3ws.internal.taiko.xyz CONFIRMATIONS_BEFORE_PROCESSING=2 CORS_ORIGINS=* NUM_GOROUTINES=50 diff --git a/packages/relayer/SignalService.json b/packages/relayer/SignalService.json new file mode 100644 index 0000000000..8800a8cd6a --- /dev/null +++ b/packages/relayer/SignalService.json @@ -0,0 +1,301 @@ +[ + { + "inputs": [], + "name": "RESOLVER_DENIED", + "type": "error" + }, + { + "inputs": [], + "name": "RESOLVER_INVALID_MANAGER", + "type": "error" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "chainId", + "type": "uint256" + }, + { + "internalType": "bytes32", + "name": "name", + "type": "bytes32" + } + ], + "name": "RESOLVER_ZERO_ADDR", + "type": "error" + }, + { + "inputs": [], + "name": "SS_INVALID_APP", + "type": "error" + }, + { + "inputs": [], + "name": "SS_INVALID_SIGNAL", + "type": "error" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "uint8", + "name": "version", + "type": "uint8" + } + ], + "name": "Initialized", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "previousOwner", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "newOwner", + "type": "address" + } + ], + "name": "OwnershipTransferred", + "type": "event" + }, + { + "inputs": [], + "name": "addressManager", + "outputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "chainId", + "type": "uint256" + }, + { + "internalType": "address", + "name": "app", + "type": "address" + }, + { + "internalType": "bytes32", + "name": "signal", + "type": "bytes32" + } + ], + "name": "getSignalSlot", + "outputs": [ + { + "internalType": "bytes32", + "name": "", + "type": "bytes32" + } + ], + "stateMutability": "pure", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "_addressManager", + "type": "address" + } + ], + "name": "init", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "app", + "type": "address" + }, + { + "internalType": "bytes32", + "name": "signal", + "type": "bytes32" + } + ], + "name": "isSignalSent", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "owner", + "outputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "srcChainId", + "type": "uint256" + }, + { + "internalType": "address", + "name": "app", + "type": "address" + }, + { + "internalType": "bytes32", + "name": "signal", + "type": "bytes32" + }, + { + "internalType": "bytes", + "name": "proof", + "type": "bytes" + } + ], + "name": "proveSignalReceived", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "renounceOwnership", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "chainId", + "type": "uint256" + }, + { + "internalType": "bytes32", + "name": "name", + "type": "bytes32" + }, + { + "internalType": "bool", + "name": "allowZeroAddress", + "type": "bool" + } + ], + "name": "resolve", + "outputs": [ + { + "internalType": "address payable", + "name": "addr", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "bytes32", + "name": "name", + "type": "bytes32" + }, + { + "internalType": "bool", + "name": "allowZeroAddress", + "type": "bool" + } + ], + "name": "resolve", + "outputs": [ + { + "internalType": "address payable", + "name": "addr", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "bytes32", + "name": "signal", + "type": "bytes32" + } + ], + "name": "sendSignal", + "outputs": [ + { + "internalType": "bytes32", + "name": "slot", + "type": "bytes32" + } + ], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [], + "name": "skipProofCheck", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "pure", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "newOwner", + "type": "address" + } + ], + "name": "transferOwnership", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + } +] diff --git a/packages/relayer/bindings/signalservice/SignalService.go b/packages/relayer/bindings/signalservice/SignalService.go new file mode 100644 index 0000000000..866cf6b6bd --- /dev/null +++ b/packages/relayer/bindings/signalservice/SignalService.go @@ -0,0 +1,800 @@ +// Code generated - DO NOT EDIT. +// This file is a generated binding and any manual changes will be lost. + +package signalservice + +import ( + "errors" + "math/big" + "strings" + + ethereum "github.com/ethereum/go-ethereum" + "github.com/ethereum/go-ethereum/accounts/abi" + "github.com/ethereum/go-ethereum/accounts/abi/bind" + "github.com/ethereum/go-ethereum/common" + "github.com/ethereum/go-ethereum/core/types" + "github.com/ethereum/go-ethereum/event" +) + +// Reference imports to suppress errors if they are not otherwise used. +var ( + _ = errors.New + _ = big.NewInt + _ = strings.NewReader + _ = ethereum.NotFound + _ = bind.Bind + _ = common.Big1 + _ = types.BloomLookup + _ = event.NewSubscription + _ = abi.ConvertType +) + +// SignalServiceMetaData contains all meta data concerning the SignalService contract. +var SignalServiceMetaData = &bind.MetaData{ + ABI: "[{\"inputs\":[],\"name\":\"RESOLVER_DENIED\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"RESOLVER_INVALID_MANAGER\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"chainId\",\"type\":\"uint256\"},{\"internalType\":\"bytes32\",\"name\":\"name\",\"type\":\"bytes32\"}],\"name\":\"RESOLVER_ZERO_ADDR\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"SS_INVALID_APP\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"SS_INVALID_SIGNAL\",\"type\":\"error\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint8\",\"name\":\"version\",\"type\":\"uint8\"}],\"name\":\"Initialized\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"previousOwner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"newOwner\",\"type\":\"address\"}],\"name\":\"OwnershipTransferred\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"addressManager\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"chainId\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"app\",\"type\":\"address\"},{\"internalType\":\"bytes32\",\"name\":\"signal\",\"type\":\"bytes32\"}],\"name\":\"getSignalSlot\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_addressManager\",\"type\":\"address\"}],\"name\":\"init\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"app\",\"type\":\"address\"},{\"internalType\":\"bytes32\",\"name\":\"signal\",\"type\":\"bytes32\"}],\"name\":\"isSignalSent\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"owner\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"srcChainId\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"app\",\"type\":\"address\"},{\"internalType\":\"bytes32\",\"name\":\"signal\",\"type\":\"bytes32\"},{\"internalType\":\"bytes\",\"name\":\"proof\",\"type\":\"bytes\"}],\"name\":\"proveSignalReceived\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"renounceOwnership\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"chainId\",\"type\":\"uint256\"},{\"internalType\":\"bytes32\",\"name\":\"name\",\"type\":\"bytes32\"},{\"internalType\":\"bool\",\"name\":\"allowZeroAddress\",\"type\":\"bool\"}],\"name\":\"resolve\",\"outputs\":[{\"internalType\":\"addresspayable\",\"name\":\"addr\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"name\",\"type\":\"bytes32\"},{\"internalType\":\"bool\",\"name\":\"allowZeroAddress\",\"type\":\"bool\"}],\"name\":\"resolve\",\"outputs\":[{\"internalType\":\"addresspayable\",\"name\":\"addr\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"signal\",\"type\":\"bytes32\"}],\"name\":\"sendSignal\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"slot\",\"type\":\"bytes32\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"skipProofCheck\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"newOwner\",\"type\":\"address\"}],\"name\":\"transferOwnership\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}]", +} + +// SignalServiceABI is the input ABI used to generate the binding from. +// Deprecated: Use SignalServiceMetaData.ABI instead. +var SignalServiceABI = SignalServiceMetaData.ABI + +// SignalService is an auto generated Go binding around an Ethereum contract. +type SignalService struct { + SignalServiceCaller // Read-only binding to the contract + SignalServiceTransactor // Write-only binding to the contract + SignalServiceFilterer // Log filterer for contract events +} + +// SignalServiceCaller is an auto generated read-only Go binding around an Ethereum contract. +type SignalServiceCaller struct { + contract *bind.BoundContract // Generic contract wrapper for the low level calls +} + +// SignalServiceTransactor is an auto generated write-only Go binding around an Ethereum contract. +type SignalServiceTransactor struct { + contract *bind.BoundContract // Generic contract wrapper for the low level calls +} + +// SignalServiceFilterer is an auto generated log filtering Go binding around an Ethereum contract events. +type SignalServiceFilterer struct { + contract *bind.BoundContract // Generic contract wrapper for the low level calls +} + +// SignalServiceSession is an auto generated Go binding around an Ethereum contract, +// with pre-set call and transact options. +type SignalServiceSession struct { + Contract *SignalService // Generic contract binding to set the session for + CallOpts bind.CallOpts // Call options to use throughout this session + TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session +} + +// SignalServiceCallerSession is an auto generated read-only Go binding around an Ethereum contract, +// with pre-set call options. +type SignalServiceCallerSession struct { + Contract *SignalServiceCaller // Generic contract caller binding to set the session for + CallOpts bind.CallOpts // Call options to use throughout this session +} + +// SignalServiceTransactorSession is an auto generated write-only Go binding around an Ethereum contract, +// with pre-set transact options. +type SignalServiceTransactorSession struct { + Contract *SignalServiceTransactor // Generic contract transactor binding to set the session for + TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session +} + +// SignalServiceRaw is an auto generated low-level Go binding around an Ethereum contract. +type SignalServiceRaw struct { + Contract *SignalService // Generic contract binding to access the raw methods on +} + +// SignalServiceCallerRaw is an auto generated low-level read-only Go binding around an Ethereum contract. +type SignalServiceCallerRaw struct { + Contract *SignalServiceCaller // Generic read-only contract binding to access the raw methods on +} + +// SignalServiceTransactorRaw is an auto generated low-level write-only Go binding around an Ethereum contract. +type SignalServiceTransactorRaw struct { + Contract *SignalServiceTransactor // Generic write-only contract binding to access the raw methods on +} + +// NewSignalService creates a new instance of SignalService, bound to a specific deployed contract. +func NewSignalService(address common.Address, backend bind.ContractBackend) (*SignalService, error) { + contract, err := bindSignalService(address, backend, backend, backend) + if err != nil { + return nil, err + } + return &SignalService{SignalServiceCaller: SignalServiceCaller{contract: contract}, SignalServiceTransactor: SignalServiceTransactor{contract: contract}, SignalServiceFilterer: SignalServiceFilterer{contract: contract}}, nil +} + +// NewSignalServiceCaller creates a new read-only instance of SignalService, bound to a specific deployed contract. +func NewSignalServiceCaller(address common.Address, caller bind.ContractCaller) (*SignalServiceCaller, error) { + contract, err := bindSignalService(address, caller, nil, nil) + if err != nil { + return nil, err + } + return &SignalServiceCaller{contract: contract}, nil +} + +// NewSignalServiceTransactor creates a new write-only instance of SignalService, bound to a specific deployed contract. +func NewSignalServiceTransactor(address common.Address, transactor bind.ContractTransactor) (*SignalServiceTransactor, error) { + contract, err := bindSignalService(address, nil, transactor, nil) + if err != nil { + return nil, err + } + return &SignalServiceTransactor{contract: contract}, nil +} + +// NewSignalServiceFilterer creates a new log filterer instance of SignalService, bound to a specific deployed contract. +func NewSignalServiceFilterer(address common.Address, filterer bind.ContractFilterer) (*SignalServiceFilterer, error) { + contract, err := bindSignalService(address, nil, nil, filterer) + if err != nil { + return nil, err + } + return &SignalServiceFilterer{contract: contract}, nil +} + +// bindSignalService binds a generic wrapper to an already deployed contract. +func bindSignalService(address common.Address, caller bind.ContractCaller, transactor bind.ContractTransactor, filterer bind.ContractFilterer) (*bind.BoundContract, error) { + parsed, err := SignalServiceMetaData.GetAbi() + if err != nil { + return nil, err + } + return bind.NewBoundContract(address, *parsed, caller, transactor, filterer), nil +} + +// Call invokes the (constant) contract method with params as input values and +// sets the output to result. The result type might be a single field for simple +// returns, a slice of interfaces for anonymous returns and a struct for named +// returns. +func (_SignalService *SignalServiceRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error { + return _SignalService.Contract.SignalServiceCaller.contract.Call(opts, result, method, params...) +} + +// Transfer initiates a plain transaction to move funds to the contract, calling +// its default method if one is available. +func (_SignalService *SignalServiceRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) { + return _SignalService.Contract.SignalServiceTransactor.contract.Transfer(opts) +} + +// Transact invokes the (paid) contract method with params as input values. +func (_SignalService *SignalServiceRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) { + return _SignalService.Contract.SignalServiceTransactor.contract.Transact(opts, method, params...) +} + +// Call invokes the (constant) contract method with params as input values and +// sets the output to result. The result type might be a single field for simple +// returns, a slice of interfaces for anonymous returns and a struct for named +// returns. +func (_SignalService *SignalServiceCallerRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error { + return _SignalService.Contract.contract.Call(opts, result, method, params...) +} + +// Transfer initiates a plain transaction to move funds to the contract, calling +// its default method if one is available. +func (_SignalService *SignalServiceTransactorRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) { + return _SignalService.Contract.contract.Transfer(opts) +} + +// Transact invokes the (paid) contract method with params as input values. +func (_SignalService *SignalServiceTransactorRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) { + return _SignalService.Contract.contract.Transact(opts, method, params...) +} + +// AddressManager is a free data retrieval call binding the contract method 0x3ab76e9f. +// +// Solidity: function addressManager() view returns(address) +func (_SignalService *SignalServiceCaller) AddressManager(opts *bind.CallOpts) (common.Address, error) { + var out []interface{} + err := _SignalService.contract.Call(opts, &out, "addressManager") + + if err != nil { + return *new(common.Address), err + } + + out0 := *abi.ConvertType(out[0], new(common.Address)).(*common.Address) + + return out0, err + +} + +// AddressManager is a free data retrieval call binding the contract method 0x3ab76e9f. +// +// Solidity: function addressManager() view returns(address) +func (_SignalService *SignalServiceSession) AddressManager() (common.Address, error) { + return _SignalService.Contract.AddressManager(&_SignalService.CallOpts) +} + +// AddressManager is a free data retrieval call binding the contract method 0x3ab76e9f. +// +// Solidity: function addressManager() view returns(address) +func (_SignalService *SignalServiceCallerSession) AddressManager() (common.Address, error) { + return _SignalService.Contract.AddressManager(&_SignalService.CallOpts) +} + +// GetSignalSlot is a free data retrieval call binding the contract method 0x850fd955. +// +// Solidity: function getSignalSlot(uint256 chainId, address app, bytes32 signal) pure returns(bytes32) +func (_SignalService *SignalServiceCaller) GetSignalSlot(opts *bind.CallOpts, chainId *big.Int, app common.Address, signal [32]byte) ([32]byte, error) { + var out []interface{} + err := _SignalService.contract.Call(opts, &out, "getSignalSlot", chainId, app, signal) + + if err != nil { + return *new([32]byte), err + } + + out0 := *abi.ConvertType(out[0], new([32]byte)).(*[32]byte) + + return out0, err + +} + +// GetSignalSlot is a free data retrieval call binding the contract method 0x850fd955. +// +// Solidity: function getSignalSlot(uint256 chainId, address app, bytes32 signal) pure returns(bytes32) +func (_SignalService *SignalServiceSession) GetSignalSlot(chainId *big.Int, app common.Address, signal [32]byte) ([32]byte, error) { + return _SignalService.Contract.GetSignalSlot(&_SignalService.CallOpts, chainId, app, signal) +} + +// GetSignalSlot is a free data retrieval call binding the contract method 0x850fd955. +// +// Solidity: function getSignalSlot(uint256 chainId, address app, bytes32 signal) pure returns(bytes32) +func (_SignalService *SignalServiceCallerSession) GetSignalSlot(chainId *big.Int, app common.Address, signal [32]byte) ([32]byte, error) { + return _SignalService.Contract.GetSignalSlot(&_SignalService.CallOpts, chainId, app, signal) +} + +// IsSignalSent is a free data retrieval call binding the contract method 0x32676bc6. +// +// Solidity: function isSignalSent(address app, bytes32 signal) view returns(bool) +func (_SignalService *SignalServiceCaller) IsSignalSent(opts *bind.CallOpts, app common.Address, signal [32]byte) (bool, error) { + var out []interface{} + err := _SignalService.contract.Call(opts, &out, "isSignalSent", app, signal) + + if err != nil { + return *new(bool), err + } + + out0 := *abi.ConvertType(out[0], new(bool)).(*bool) + + return out0, err + +} + +// IsSignalSent is a free data retrieval call binding the contract method 0x32676bc6. +// +// Solidity: function isSignalSent(address app, bytes32 signal) view returns(bool) +func (_SignalService *SignalServiceSession) IsSignalSent(app common.Address, signal [32]byte) (bool, error) { + return _SignalService.Contract.IsSignalSent(&_SignalService.CallOpts, app, signal) +} + +// IsSignalSent is a free data retrieval call binding the contract method 0x32676bc6. +// +// Solidity: function isSignalSent(address app, bytes32 signal) view returns(bool) +func (_SignalService *SignalServiceCallerSession) IsSignalSent(app common.Address, signal [32]byte) (bool, error) { + return _SignalService.Contract.IsSignalSent(&_SignalService.CallOpts, app, signal) +} + +// Owner is a free data retrieval call binding the contract method 0x8da5cb5b. +// +// Solidity: function owner() view returns(address) +func (_SignalService *SignalServiceCaller) Owner(opts *bind.CallOpts) (common.Address, error) { + var out []interface{} + err := _SignalService.contract.Call(opts, &out, "owner") + + if err != nil { + return *new(common.Address), err + } + + out0 := *abi.ConvertType(out[0], new(common.Address)).(*common.Address) + + return out0, err + +} + +// Owner is a free data retrieval call binding the contract method 0x8da5cb5b. +// +// Solidity: function owner() view returns(address) +func (_SignalService *SignalServiceSession) Owner() (common.Address, error) { + return _SignalService.Contract.Owner(&_SignalService.CallOpts) +} + +// Owner is a free data retrieval call binding the contract method 0x8da5cb5b. +// +// Solidity: function owner() view returns(address) +func (_SignalService *SignalServiceCallerSession) Owner() (common.Address, error) { + return _SignalService.Contract.Owner(&_SignalService.CallOpts) +} + +// ProveSignalReceived is a free data retrieval call binding the contract method 0x92824e90. +// +// Solidity: function proveSignalReceived(uint256 srcChainId, address app, bytes32 signal, bytes proof) view returns(bool) +func (_SignalService *SignalServiceCaller) ProveSignalReceived(opts *bind.CallOpts, srcChainId *big.Int, app common.Address, signal [32]byte, proof []byte) (bool, error) { + var out []interface{} + err := _SignalService.contract.Call(opts, &out, "proveSignalReceived", srcChainId, app, signal, proof) + + if err != nil { + return *new(bool), err + } + + out0 := *abi.ConvertType(out[0], new(bool)).(*bool) + + return out0, err + +} + +// ProveSignalReceived is a free data retrieval call binding the contract method 0x92824e90. +// +// Solidity: function proveSignalReceived(uint256 srcChainId, address app, bytes32 signal, bytes proof) view returns(bool) +func (_SignalService *SignalServiceSession) ProveSignalReceived(srcChainId *big.Int, app common.Address, signal [32]byte, proof []byte) (bool, error) { + return _SignalService.Contract.ProveSignalReceived(&_SignalService.CallOpts, srcChainId, app, signal, proof) +} + +// ProveSignalReceived is a free data retrieval call binding the contract method 0x92824e90. +// +// Solidity: function proveSignalReceived(uint256 srcChainId, address app, bytes32 signal, bytes proof) view returns(bool) +func (_SignalService *SignalServiceCallerSession) ProveSignalReceived(srcChainId *big.Int, app common.Address, signal [32]byte, proof []byte) (bool, error) { + return _SignalService.Contract.ProveSignalReceived(&_SignalService.CallOpts, srcChainId, app, signal, proof) +} + +// Resolve is a free data retrieval call binding the contract method 0x6c6563f6. +// +// Solidity: function resolve(uint256 chainId, bytes32 name, bool allowZeroAddress) view returns(address addr) +func (_SignalService *SignalServiceCaller) Resolve(opts *bind.CallOpts, chainId *big.Int, name [32]byte, allowZeroAddress bool) (common.Address, error) { + var out []interface{} + err := _SignalService.contract.Call(opts, &out, "resolve", chainId, name, allowZeroAddress) + + if err != nil { + return *new(common.Address), err + } + + out0 := *abi.ConvertType(out[0], new(common.Address)).(*common.Address) + + return out0, err + +} + +// Resolve is a free data retrieval call binding the contract method 0x6c6563f6. +// +// Solidity: function resolve(uint256 chainId, bytes32 name, bool allowZeroAddress) view returns(address addr) +func (_SignalService *SignalServiceSession) Resolve(chainId *big.Int, name [32]byte, allowZeroAddress bool) (common.Address, error) { + return _SignalService.Contract.Resolve(&_SignalService.CallOpts, chainId, name, allowZeroAddress) +} + +// Resolve is a free data retrieval call binding the contract method 0x6c6563f6. +// +// Solidity: function resolve(uint256 chainId, bytes32 name, bool allowZeroAddress) view returns(address addr) +func (_SignalService *SignalServiceCallerSession) Resolve(chainId *big.Int, name [32]byte, allowZeroAddress bool) (common.Address, error) { + return _SignalService.Contract.Resolve(&_SignalService.CallOpts, chainId, name, allowZeroAddress) +} + +// Resolve0 is a free data retrieval call binding the contract method 0xa86f9d9e. +// +// Solidity: function resolve(bytes32 name, bool allowZeroAddress) view returns(address addr) +func (_SignalService *SignalServiceCaller) Resolve0(opts *bind.CallOpts, name [32]byte, allowZeroAddress bool) (common.Address, error) { + var out []interface{} + err := _SignalService.contract.Call(opts, &out, "resolve0", name, allowZeroAddress) + + if err != nil { + return *new(common.Address), err + } + + out0 := *abi.ConvertType(out[0], new(common.Address)).(*common.Address) + + return out0, err + +} + +// Resolve0 is a free data retrieval call binding the contract method 0xa86f9d9e. +// +// Solidity: function resolve(bytes32 name, bool allowZeroAddress) view returns(address addr) +func (_SignalService *SignalServiceSession) Resolve0(name [32]byte, allowZeroAddress bool) (common.Address, error) { + return _SignalService.Contract.Resolve0(&_SignalService.CallOpts, name, allowZeroAddress) +} + +// Resolve0 is a free data retrieval call binding the contract method 0xa86f9d9e. +// +// Solidity: function resolve(bytes32 name, bool allowZeroAddress) view returns(address addr) +func (_SignalService *SignalServiceCallerSession) Resolve0(name [32]byte, allowZeroAddress bool) (common.Address, error) { + return _SignalService.Contract.Resolve0(&_SignalService.CallOpts, name, allowZeroAddress) +} + +// SkipProofCheck is a free data retrieval call binding the contract method 0xcbb3ddf3. +// +// Solidity: function skipProofCheck() pure returns(bool) +func (_SignalService *SignalServiceCaller) SkipProofCheck(opts *bind.CallOpts) (bool, error) { + var out []interface{} + err := _SignalService.contract.Call(opts, &out, "skipProofCheck") + + if err != nil { + return *new(bool), err + } + + out0 := *abi.ConvertType(out[0], new(bool)).(*bool) + + return out0, err + +} + +// SkipProofCheck is a free data retrieval call binding the contract method 0xcbb3ddf3. +// +// Solidity: function skipProofCheck() pure returns(bool) +func (_SignalService *SignalServiceSession) SkipProofCheck() (bool, error) { + return _SignalService.Contract.SkipProofCheck(&_SignalService.CallOpts) +} + +// SkipProofCheck is a free data retrieval call binding the contract method 0xcbb3ddf3. +// +// Solidity: function skipProofCheck() pure returns(bool) +func (_SignalService *SignalServiceCallerSession) SkipProofCheck() (bool, error) { + return _SignalService.Contract.SkipProofCheck(&_SignalService.CallOpts) +} + +// Init is a paid mutator transaction binding the contract method 0x19ab453c. +// +// Solidity: function init(address _addressManager) returns() +func (_SignalService *SignalServiceTransactor) Init(opts *bind.TransactOpts, _addressManager common.Address) (*types.Transaction, error) { + return _SignalService.contract.Transact(opts, "init", _addressManager) +} + +// Init is a paid mutator transaction binding the contract method 0x19ab453c. +// +// Solidity: function init(address _addressManager) returns() +func (_SignalService *SignalServiceSession) Init(_addressManager common.Address) (*types.Transaction, error) { + return _SignalService.Contract.Init(&_SignalService.TransactOpts, _addressManager) +} + +// Init is a paid mutator transaction binding the contract method 0x19ab453c. +// +// Solidity: function init(address _addressManager) returns() +func (_SignalService *SignalServiceTransactorSession) Init(_addressManager common.Address) (*types.Transaction, error) { + return _SignalService.Contract.Init(&_SignalService.TransactOpts, _addressManager) +} + +// RenounceOwnership is a paid mutator transaction binding the contract method 0x715018a6. +// +// Solidity: function renounceOwnership() returns() +func (_SignalService *SignalServiceTransactor) RenounceOwnership(opts *bind.TransactOpts) (*types.Transaction, error) { + return _SignalService.contract.Transact(opts, "renounceOwnership") +} + +// RenounceOwnership is a paid mutator transaction binding the contract method 0x715018a6. +// +// Solidity: function renounceOwnership() returns() +func (_SignalService *SignalServiceSession) RenounceOwnership() (*types.Transaction, error) { + return _SignalService.Contract.RenounceOwnership(&_SignalService.TransactOpts) +} + +// RenounceOwnership is a paid mutator transaction binding the contract method 0x715018a6. +// +// Solidity: function renounceOwnership() returns() +func (_SignalService *SignalServiceTransactorSession) RenounceOwnership() (*types.Transaction, error) { + return _SignalService.Contract.RenounceOwnership(&_SignalService.TransactOpts) +} + +// SendSignal is a paid mutator transaction binding the contract method 0x66ca2bc0. +// +// Solidity: function sendSignal(bytes32 signal) returns(bytes32 slot) +func (_SignalService *SignalServiceTransactor) SendSignal(opts *bind.TransactOpts, signal [32]byte) (*types.Transaction, error) { + return _SignalService.contract.Transact(opts, "sendSignal", signal) +} + +// SendSignal is a paid mutator transaction binding the contract method 0x66ca2bc0. +// +// Solidity: function sendSignal(bytes32 signal) returns(bytes32 slot) +func (_SignalService *SignalServiceSession) SendSignal(signal [32]byte) (*types.Transaction, error) { + return _SignalService.Contract.SendSignal(&_SignalService.TransactOpts, signal) +} + +// SendSignal is a paid mutator transaction binding the contract method 0x66ca2bc0. +// +// Solidity: function sendSignal(bytes32 signal) returns(bytes32 slot) +func (_SignalService *SignalServiceTransactorSession) SendSignal(signal [32]byte) (*types.Transaction, error) { + return _SignalService.Contract.SendSignal(&_SignalService.TransactOpts, signal) +} + +// TransferOwnership is a paid mutator transaction binding the contract method 0xf2fde38b. +// +// Solidity: function transferOwnership(address newOwner) returns() +func (_SignalService *SignalServiceTransactor) TransferOwnership(opts *bind.TransactOpts, newOwner common.Address) (*types.Transaction, error) { + return _SignalService.contract.Transact(opts, "transferOwnership", newOwner) +} + +// TransferOwnership is a paid mutator transaction binding the contract method 0xf2fde38b. +// +// Solidity: function transferOwnership(address newOwner) returns() +func (_SignalService *SignalServiceSession) TransferOwnership(newOwner common.Address) (*types.Transaction, error) { + return _SignalService.Contract.TransferOwnership(&_SignalService.TransactOpts, newOwner) +} + +// TransferOwnership is a paid mutator transaction binding the contract method 0xf2fde38b. +// +// Solidity: function transferOwnership(address newOwner) returns() +func (_SignalService *SignalServiceTransactorSession) TransferOwnership(newOwner common.Address) (*types.Transaction, error) { + return _SignalService.Contract.TransferOwnership(&_SignalService.TransactOpts, newOwner) +} + +// SignalServiceInitializedIterator is returned from FilterInitialized and is used to iterate over the raw logs and unpacked data for Initialized events raised by the SignalService contract. +type SignalServiceInitializedIterator struct { + Event *SignalServiceInitialized // Event containing the contract specifics and raw log + + contract *bind.BoundContract // Generic contract to use for unpacking event data + event string // Event name to use for unpacking event data + + logs chan types.Log // Log channel receiving the found contract events + sub ethereum.Subscription // Subscription for errors, completion and termination + done bool // Whether the subscription completed delivering logs + fail error // Occurred error to stop iteration +} + +// Next advances the iterator to the subsequent event, returning whether there +// are any more events found. In case of a retrieval or parsing error, false is +// returned and Error() can be queried for the exact failure. +func (it *SignalServiceInitializedIterator) Next() bool { + // If the iterator failed, stop iterating + if it.fail != nil { + return false + } + // If the iterator completed, deliver directly whatever's available + if it.done { + select { + case log := <-it.logs: + it.Event = new(SignalServiceInitialized) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + default: + return false + } + } + // Iterator still in progress, wait for either a data or an error event + select { + case log := <-it.logs: + it.Event = new(SignalServiceInitialized) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + case err := <-it.sub.Err(): + it.done = true + it.fail = err + return it.Next() + } +} + +// Error returns any retrieval or parsing error occurred during filtering. +func (it *SignalServiceInitializedIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *SignalServiceInitializedIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// SignalServiceInitialized represents a Initialized event raised by the SignalService contract. +type SignalServiceInitialized struct { + Version uint8 + Raw types.Log // Blockchain specific contextual infos +} + +// FilterInitialized is a free log retrieval operation binding the contract event 0x7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb3847402498. +// +// Solidity: event Initialized(uint8 version) +func (_SignalService *SignalServiceFilterer) FilterInitialized(opts *bind.FilterOpts) (*SignalServiceInitializedIterator, error) { + + logs, sub, err := _SignalService.contract.FilterLogs(opts, "Initialized") + if err != nil { + return nil, err + } + return &SignalServiceInitializedIterator{contract: _SignalService.contract, event: "Initialized", logs: logs, sub: sub}, nil +} + +// WatchInitialized is a free log subscription operation binding the contract event 0x7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb3847402498. +// +// Solidity: event Initialized(uint8 version) +func (_SignalService *SignalServiceFilterer) WatchInitialized(opts *bind.WatchOpts, sink chan<- *SignalServiceInitialized) (event.Subscription, error) { + + logs, sub, err := _SignalService.contract.WatchLogs(opts, "Initialized") + if err != nil { + return nil, err + } + return event.NewSubscription(func(quit <-chan struct{}) error { + defer sub.Unsubscribe() + for { + select { + case log := <-logs: + // New log arrived, parse the event and forward to the user + event := new(SignalServiceInitialized) + if err := _SignalService.contract.UnpackLog(event, "Initialized", log); err != nil { + return err + } + event.Raw = log + + select { + case sink <- event: + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + } + }), nil +} + +// ParseInitialized is a log parse operation binding the contract event 0x7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb3847402498. +// +// Solidity: event Initialized(uint8 version) +func (_SignalService *SignalServiceFilterer) ParseInitialized(log types.Log) (*SignalServiceInitialized, error) { + event := new(SignalServiceInitialized) + if err := _SignalService.contract.UnpackLog(event, "Initialized", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} + +// SignalServiceOwnershipTransferredIterator is returned from FilterOwnershipTransferred and is used to iterate over the raw logs and unpacked data for OwnershipTransferred events raised by the SignalService contract. +type SignalServiceOwnershipTransferredIterator struct { + Event *SignalServiceOwnershipTransferred // Event containing the contract specifics and raw log + + contract *bind.BoundContract // Generic contract to use for unpacking event data + event string // Event name to use for unpacking event data + + logs chan types.Log // Log channel receiving the found contract events + sub ethereum.Subscription // Subscription for errors, completion and termination + done bool // Whether the subscription completed delivering logs + fail error // Occurred error to stop iteration +} + +// Next advances the iterator to the subsequent event, returning whether there +// are any more events found. In case of a retrieval or parsing error, false is +// returned and Error() can be queried for the exact failure. +func (it *SignalServiceOwnershipTransferredIterator) Next() bool { + // If the iterator failed, stop iterating + if it.fail != nil { + return false + } + // If the iterator completed, deliver directly whatever's available + if it.done { + select { + case log := <-it.logs: + it.Event = new(SignalServiceOwnershipTransferred) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + default: + return false + } + } + // Iterator still in progress, wait for either a data or an error event + select { + case log := <-it.logs: + it.Event = new(SignalServiceOwnershipTransferred) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + case err := <-it.sub.Err(): + it.done = true + it.fail = err + return it.Next() + } +} + +// Error returns any retrieval or parsing error occurred during filtering. +func (it *SignalServiceOwnershipTransferredIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *SignalServiceOwnershipTransferredIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// SignalServiceOwnershipTransferred represents a OwnershipTransferred event raised by the SignalService contract. +type SignalServiceOwnershipTransferred struct { + PreviousOwner common.Address + NewOwner common.Address + Raw types.Log // Blockchain specific contextual infos +} + +// FilterOwnershipTransferred is a free log retrieval operation binding the contract event 0x8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0. +// +// Solidity: event OwnershipTransferred(address indexed previousOwner, address indexed newOwner) +func (_SignalService *SignalServiceFilterer) FilterOwnershipTransferred(opts *bind.FilterOpts, previousOwner []common.Address, newOwner []common.Address) (*SignalServiceOwnershipTransferredIterator, error) { + + var previousOwnerRule []interface{} + for _, previousOwnerItem := range previousOwner { + previousOwnerRule = append(previousOwnerRule, previousOwnerItem) + } + var newOwnerRule []interface{} + for _, newOwnerItem := range newOwner { + newOwnerRule = append(newOwnerRule, newOwnerItem) + } + + logs, sub, err := _SignalService.contract.FilterLogs(opts, "OwnershipTransferred", previousOwnerRule, newOwnerRule) + if err != nil { + return nil, err + } + return &SignalServiceOwnershipTransferredIterator{contract: _SignalService.contract, event: "OwnershipTransferred", logs: logs, sub: sub}, nil +} + +// WatchOwnershipTransferred is a free log subscription operation binding the contract event 0x8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0. +// +// Solidity: event OwnershipTransferred(address indexed previousOwner, address indexed newOwner) +func (_SignalService *SignalServiceFilterer) WatchOwnershipTransferred(opts *bind.WatchOpts, sink chan<- *SignalServiceOwnershipTransferred, previousOwner []common.Address, newOwner []common.Address) (event.Subscription, error) { + + var previousOwnerRule []interface{} + for _, previousOwnerItem := range previousOwner { + previousOwnerRule = append(previousOwnerRule, previousOwnerItem) + } + var newOwnerRule []interface{} + for _, newOwnerItem := range newOwner { + newOwnerRule = append(newOwnerRule, newOwnerItem) + } + + logs, sub, err := _SignalService.contract.WatchLogs(opts, "OwnershipTransferred", previousOwnerRule, newOwnerRule) + if err != nil { + return nil, err + } + return event.NewSubscription(func(quit <-chan struct{}) error { + defer sub.Unsubscribe() + for { + select { + case log := <-logs: + // New log arrived, parse the event and forward to the user + event := new(SignalServiceOwnershipTransferred) + if err := _SignalService.contract.UnpackLog(event, "OwnershipTransferred", log); err != nil { + return err + } + event.Raw = log + + select { + case sink <- event: + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + } + }), nil +} + +// ParseOwnershipTransferred is a log parse operation binding the contract event 0x8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0. +// +// Solidity: event OwnershipTransferred(address indexed previousOwner, address indexed newOwner) +func (_SignalService *SignalServiceFilterer) ParseOwnershipTransferred(log types.Log) (*SignalServiceOwnershipTransferred, error) { + event := new(SignalServiceOwnershipTransferred) + if err := _SignalService.contract.UnpackLog(event, "OwnershipTransferred", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} diff --git a/packages/relayer/cmd/flags/processor.go b/packages/relayer/cmd/flags/processor.go index a2282b8fb5..fc913328d9 100644 --- a/packages/relayer/cmd/flags/processor.go +++ b/packages/relayer/cmd/flags/processor.go @@ -105,6 +105,27 @@ var ( Category: processorCategory, EnvVars: []string{"ENABLE_TAIKO_L2"}, } + HopSignalServiceAddresses = &cli.StringSliceFlag{ + Name: "hopSignalServiceAddresses", + Usage: "SignalService addresses for the intermediary chains", + Required: false, + Category: processorCategory, + EnvVars: []string{"HOP_SIGNAL_SERVICE_ADDRESSES"}, + } + HopTaikoAddresses = &cli.StringSliceFlag{ + Name: "hopTaikoAddresses", + Usage: "Taiko addresses for the intermediary chains", + Required: false, + Category: processorCategory, + EnvVars: []string{"HOP_TAIKO_ADDRESSES"}, + } + HopRPCUrls = &cli.StringSliceFlag{ + Name: "hopRpcUrls", + Usage: "RPC URL for the intermediary chains", + Required: false, + Category: processorCategory, + EnvVars: []string{"HOP_RPC_URLS"}, + } ) var ProcessorFlags = MergeFlags(CommonFlags, []cli.Flag{ @@ -123,4 +144,7 @@ var ProcessorFlags = MergeFlags(CommonFlags, []cli.Flag{ BackOffMaxRetrys, QueuePrefetchCount, EnableTaikoL2, + HopRPCUrls, + HopSignalServiceAddresses, + HopTaikoAddresses, }) diff --git a/packages/relayer/encoding/signal_proof_test.go b/packages/relayer/encoding/signal_proof_test.go index 40107b425f..177caa403b 100644 --- a/packages/relayer/encoding/signal_proof_test.go +++ b/packages/relayer/encoding/signal_proof_test.go @@ -1,7 +1,6 @@ package encoding import ( - "math/big" "testing" "github.com/ethereum/go-ethereum/common/hexutil" @@ -9,17 +8,17 @@ import ( ) func Test_EncodeSignalProof(t *testing.T) { - height := new(big.Int).SetInt64(1) // nolint: lll storageProof := "0x00edb9377a94f02e691ea208a80a7bd13dcb51dfae3a389d3001a55c5fdf3f3ae70807df1d8ffcaeefa5dc56875a03dae3494d93bbf3074018fea52137a098433d9795f455fcfaf89b6456b970605bd0f70bec98418ef322fa5bba9874ab2277225a38c19f99275cd6d25d9cd4259c366c02b750056a6b71810034f95d34ae12c1298a95e6ba03de90dbbfacc5c8edbeb6ed93a0e01c08f3435b1ca944e9229a176804445432795c14dc315925fe2480084d6b0729c30fb1c2e50e481df5d7daa25769a0c74baf362ff02f2a934538cd11bf939f64377489255aa60a12628b130f4bddd30664d6b5f91d17cc110bee38a7ce5c629585e57d777bfbb2eaf09e15" s := SignalProof{ - Height: height, - Proof: hexutil.MustDecode(storageProof), + Height: uint64(1), + StorageProof: hexutil.MustDecode(storageProof), + Hops: []Hop{}, } // nolint: lll - want := "0x000000000000000000000000000000000000000000000000000000000000002000000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000040000000000000000000000000000000000000000000000000000000000000010000edb9377a94f02e691ea208a80a7bd13dcb51dfae3a389d3001a55c5fdf3f3ae70807df1d8ffcaeefa5dc56875a03dae3494d93bbf3074018fea52137a098433d9795f455fcfaf89b6456b970605bd0f70bec98418ef322fa5bba9874ab2277225a38c19f99275cd6d25d9cd4259c366c02b750056a6b71810034f95d34ae12c1298a95e6ba03de90dbbfacc5c8edbeb6ed93a0e01c08f3435b1ca944e9229a176804445432795c14dc315925fe2480084d6b0729c30fb1c2e50e481df5d7daa25769a0c74baf362ff02f2a934538cd11bf939f64377489255aa60a12628b130f4bddd30664d6b5f91d17cc110bee38a7ce5c629585e57d777bfbb2eaf09e15" + want := "0x0000000000000000000000000000000000000000000000000000000000000020000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000000600000000000000000000000000000000000000000000000000000000000000180000000000000000000000000000000000000000000000000000000000000010000edb9377a94f02e691ea208a80a7bd13dcb51dfae3a389d3001a55c5fdf3f3ae70807df1d8ffcaeefa5dc56875a03dae3494d93bbf3074018fea52137a098433d9795f455fcfaf89b6456b970605bd0f70bec98418ef322fa5bba9874ab2277225a38c19f99275cd6d25d9cd4259c366c02b750056a6b71810034f95d34ae12c1298a95e6ba03de90dbbfacc5c8edbeb6ed93a0e01c08f3435b1ca944e9229a176804445432795c14dc315925fe2480084d6b0729c30fb1c2e50e481df5d7daa25769a0c74baf362ff02f2a934538cd11bf939f64377489255aa60a12628b130f4bddd30664d6b5f91d17cc110bee38a7ce5c629585e57d777bfbb2eaf09e150000000000000000000000000000000000000000000000000000000000000000" proof, err := EncodeSignalProof(s) assert.Equal(t, nil, err) assert.Equal(t, hexutil.Encode(proof), want) diff --git a/packages/relayer/encoding/types.go b/packages/relayer/encoding/types.go index 806b2500e1..8874b2921f 100644 --- a/packages/relayer/encoding/types.go +++ b/packages/relayer/encoding/types.go @@ -33,17 +33,44 @@ type BlockHeader struct { } type SignalProof struct { - Height *big.Int `abi:"height"` - Proof []byte `abi:"proof"` + Height uint64 `abi:"height"` + StorageProof []byte `abi:"storageProof"` + Hops []Hop `abi:"hops"` +} + +type Hop struct { + ChainID *big.Int `abi:"chainId"` + SignalRoot [32]byte `abi:"signalRoot"` + StorageProof []byte `abi:"storageProof"` +} + +var hopComponents = []abi.ArgumentMarshaling{ + { + Name: "chainId", + Type: "uint256", + }, + { + Name: "signalRoot", + Type: "bytes32", + }, + { + Name: "storageProof", + Type: "bytes", + }, } var signalProofT, _ = abi.NewType("tuple", "", []abi.ArgumentMarshaling{ { Name: "height", - Type: "uint256", + Type: "uint64", }, { - Name: "proof", + Name: "storageProof", Type: "bytes", }, + { + Name: "hops", + Type: "tuple[]", + Components: hopComponents, + }, }) diff --git a/packages/relayer/mock/blocker.go b/packages/relayer/mock/blocker.go index 6ab6198c5e..040e5a3b13 100644 --- a/packages/relayer/mock/blocker.go +++ b/packages/relayer/mock/blocker.go @@ -41,3 +41,7 @@ func (b *Blocker) BlockByHash(ctx context.Context, hash common.Hash) (*types.Blo return types.NewBlockWithHeader(Header), nil } + +func (b *Blocker) BlockByNumber(ctx context.Context, number *big.Int) (*types.Block, error) { + return types.NewBlockWithHeader(Header), nil +} diff --git a/packages/relayer/mock/eth_client.go b/packages/relayer/mock/eth_client.go index 3c5fb4a80c..65ff42892e 100644 --- a/packages/relayer/mock/eth_client.go +++ b/packages/relayer/mock/eth_client.go @@ -47,6 +47,10 @@ func (c *EthClient) HeaderByNumber(ctx context.Context, number *big.Int) (*types }, nil } +func (c *EthClient) BlockByHash(ctx context.Context, hash common.Hash) (*types.Block, error) { + return &types.Block{}, nil +} + func (c *EthClient) BlockByNumber(ctx context.Context, number *big.Int) (*types.Block, error) { if number == nil { number = LatestBlockNumber diff --git a/packages/relayer/mock/signalservice.go b/packages/relayer/mock/signalservice.go new file mode 100644 index 0000000000..c12edc666d --- /dev/null +++ b/packages/relayer/mock/signalservice.go @@ -0,0 +1,20 @@ +package mock + +import ( + "math/big" + + "github.com/ethereum/go-ethereum/accounts/abi/bind" + "github.com/ethereum/go-ethereum/common" +) + +type SignalService struct { +} + +func (s *SignalService) GetSignalSlot( + opts *bind.CallOpts, + chainId *big.Int, + app common.Address, + signal [32]byte, +) ([32]byte, error) { + return [32]byte{0xff}, nil +} diff --git a/packages/relayer/processor/config.go b/packages/relayer/processor/config.go index bf3171f6b1..58a4b8c5aa 100644 --- a/packages/relayer/processor/config.go +++ b/packages/relayer/processor/config.go @@ -16,6 +16,11 @@ import ( "gorm.io/gorm/logger" ) +type hopConfig struct { + signalServiceAddress common.Address + taikoAddress common.Address + rpcURL string +} type Config struct { // address configs SrcSignalServiceAddress common.Address @@ -59,6 +64,8 @@ type Config struct { ETHClientTimeout uint64 OpenQueueFunc func() (queue.Queue, error) OpenDBFunc func() (DB, error) + + hopConfigs []hopConfig } // NewConfigFromCliContext creates a new config instance from command line flags. @@ -70,7 +77,27 @@ func NewConfigFromCliContext(c *cli.Context) (*Config, error) { return nil, fmt.Errorf("invalid processorPrivateKey: %w", err) } + hopSignalServiceAddresses := c.StringSlice(flags.HopSignalServiceAddresses.Name) + hopTaikoAddresses := c.StringSlice(flags.HopTaikoAddresses.Name) + hopRPCUrls := c.StringSlice(flags.HopRPCUrls.Name) + + if len(hopSignalServiceAddresses) != len(hopTaikoAddresses) || + len(hopSignalServiceAddresses) != len(hopRPCUrls) || + len(hopTaikoAddresses) != len(hopRPCUrls) { + return nil, fmt.Errorf("all hop parameters must be of same length") + } + + hopConfigs := []hopConfig{} + for i, hopSignalServiceAddress := range hopSignalServiceAddresses { + hopConfigs = append(hopConfigs, hopConfig{ + signalServiceAddress: common.HexToAddress(hopSignalServiceAddress), + rpcURL: hopRPCUrls[i], + taikoAddress: common.HexToAddress(hopTaikoAddresses[i]), + }) + } + return &Config{ + hopConfigs: hopConfigs, ProcessorPrivateKey: processorPrivateKey, SrcSignalServiceAddress: common.HexToAddress(c.String(flags.SrcSignalServiceAddress.Name)), DestTaikoAddress: common.HexToAddress(c.String(flags.DestTaikoAddress.Name)), diff --git a/packages/relayer/processor/process_message.go b/packages/relayer/processor/process_message.go index e235a9d01a..05fbaa8f69 100644 --- a/packages/relayer/processor/process_message.go +++ b/packages/relayer/processor/process_message.go @@ -16,11 +16,12 @@ import ( "github.com/ethereum/go-ethereum/common" "github.com/ethereum/go-ethereum/consensus/misc/eip1559" "github.com/ethereum/go-ethereum/core/types" - "github.com/ethereum/go-ethereum/crypto" "github.com/ethereum/go-ethereum/params" "github.com/pkg/errors" "github.com/taikoxyz/taiko-mono/packages/relayer" "github.com/taikoxyz/taiko-mono/packages/relayer/bindings/bridge" + "github.com/taikoxyz/taiko-mono/packages/relayer/bindings/icrosschainsync" + "github.com/taikoxyz/taiko-mono/packages/relayer/proof" "github.com/taikoxyz/taiko-mono/packages/relayer/queue" ) @@ -57,7 +58,7 @@ func (p *Processor) eventStatusFromMsgHash( return eventStatus, nil } -// Process prepares and calls `processMessage` on the bridge. +// processMessage prepares and calls `processMessage` on the bridge. // the proof must be generated from the gethclient's eth_getProof via the Prover, // then rlp-encoded and combined as a singular byte slice, // then abi encoded into a SignalProof struct as the contract @@ -88,39 +89,118 @@ func (p *Processor) processMessage( return errors.Wrap(err, "p.waitForConfirmations") } - if err := p.waitHeaderSynced(ctx, msgBody.Event); err != nil { - return errors.Wrap(err, "p.waitHeaderSynced") + var blockNum uint64 = msgBody.Event.Raw.BlockNumber + + // wait for srcChain => destChain header to sync if no hops, + // or srcChain => hopChain => hopChain => hopChain => destChain if hops exist. + if p.hops != nil { + var hopEthClient ethClient = p.srcEthClient + + for _, hop := range p.hops { + hop.blockNum = blockNum + + err := p.waitHeaderSynced(ctx, hop.headerSyncer, hopEthClient, blockNum) + + if err != nil { + return errors.Wrap(err, "p.waitHeaderSynced") + } + + // todo: instead of latest, need way to find out which block num on the hop chain + // the previous blockHash was synced in, and then wait for that header to be synced + // on the next hop chain. + latestBlock, err := hop.ethClient.BlockByNumber(ctx, nil) + if err != nil { + return errors.Wrap(err, "hop.ethClient.BlockByNumber(ctx, nil)") + } + + blockNum = latestBlock.NumberU64() + + hopEthClient = hop.ethClient + } + + if err := p.waitHeaderSynced(ctx, p.destHeaderSyncer, hopEthClient, blockNum); err != nil { + return errors.Wrap(err, "p.waitHeaderSynced") + } + } else { + if err := p.waitHeaderSynced(ctx, p.destHeaderSyncer, p.srcEthClient, msgBody.Event.Raw.BlockNumber); err != nil { + return errors.Wrap(err, "p.waitHeaderSynced") + } } - // get latest synced header since not every header is synced from L1 => L2, - // and later blocks still have the storage trie proof from previous blocks. - latestSyncedSnippet, err := p.destHeaderSyncer.GetSyncedSnippet(&bind.CallOpts{}, 0) + key, err := p.srcSignalService.GetSignalSlot(&bind.CallOpts{}, + msgBody.Event.Message.SrcChainId, + msgBody.Event.Raw.Address, + msgBody.Event.MsgHash, + ) + if err != nil { - return errors.Wrap(err, "taiko.GetSyncedHeader") + return errors.Wrap(err, "p.srcSignalService.GetSignalSlot") } - hashed := crypto.Keccak256( - msgBody.Event.Raw.Address.Bytes(), - msgBody.Event.MsgHash[:], - ) + hops := []proof.HopParams{} - key := hex.EncodeToString(hashed) + var encodedSignalProof []byte + + var latestSyncedSnippet icrosschainsync.ICrossChainSyncSnippet + + // if a hop is set, the proof service needs to generate an additional proof + // for the signal service intermediary chain in between the source chain + // and the destination chain. + // TODO: support multiple hops via env vars/configs instead of just one. + for _, hop := range p.hops { + slog.Info( + "adding hop", + "hopChainId", hop.chainID.Uint64(), + "hopSignalServiceAddress", hop.signalServiceAddress.Hex(), + ) + + hops = append(hops, proof.HopParams{ + ChainID: hop.chainID, + SignalServiceAddress: hop.signalServiceAddress, + Blocker: hop.ethClient, + Caller: hop.caller, + SignalService: hop.signalService, + TaikoAddress: hop.taikoAddress, + BlockNumber: blockNum, + }) + } + + if hops != nil { + encodedSignalProof, _, err = p.prover.EncodedSignalProofWithHops( + ctx, + p.srcCaller, + p.srcSignalServiceAddress, + hops, + common.Bytes2Hex(key[:]), + msgBody.Event.Raw.BlockHash, + blockNum, + ) + } else { + // get latest synced header since not every header is synced from L1 => L2, + // and later blocks still have the storage trie proof from previous blocks. + latestSyncedSnippet, err = p.destHeaderSyncer.GetSyncedSnippet(&bind.CallOpts{}, 0) + if err != nil { + return errors.Wrap(err, "taiko.GetSyncedSnippet") + } + + encodedSignalProof, err = p.prover.EncodedSignalProof( + ctx, + p.srcCaller, + p.srcSignalServiceAddress, + common.Bytes2Hex(key[:]), + latestSyncedSnippet.BlockHash, + ) + } - encodedSignalProof, err := p.prover.EncodedSignalProof( - ctx, - p.rpc, - p.srcSignalServiceAddress, - key, - latestSyncedSnippet.BlockHash, - ) if err != nil { - slog.Error("srcChainID: %v, destChainID: %v, txHash: %v: msgHash: %v, from: %v encountered signalProofError %v", - msgBody.Event.Message.SrcChainId.String(), - msgBody.Event.Message.DestChainId.String(), - msgBody.Event.Raw.TxHash.Hex(), - common.Hash(msgBody.Event.MsgHash).Hex(), - msgBody.Event.Message.User.Hex(), - err, + slog.Error("error encoding signal proof", + "srcChainID", msgBody.Event.Message.SrcChainId.String(), + "destChainID", msgBody.Event.Message.DestChainId.String(), + "txHash", msgBody.Event.Raw.TxHash.Hex(), + "msgHash", common.Hash(msgBody.Event.MsgHash).Hex(), + "from", msgBody.Event.Message.User.Hex(), + "error", err, + "hopsLength", len(hops), ) return errors.Wrap(err, "p.prover.GetEncodedSignalProof") @@ -133,7 +213,7 @@ func (p *Processor) processMessage( Context: ctx, }, msgBody.Event.Message, encodedSignalProof) if err != nil { - return errors.Wrap(err, "p.destBridge.IsMessageReceived") + return errors.Wrap(err, "p.destBridge.ProveMessageReceived") } // message will fail when we try to process it diff --git a/packages/relayer/processor/process_message_test.go b/packages/relayer/processor/process_message_test.go index 235d40af50..d64854bde2 100644 --- a/packages/relayer/processor/process_message_test.go +++ b/packages/relayer/processor/process_message_test.go @@ -26,6 +26,7 @@ func Test_sendProcessMessageCall(t *testing.T) { &bridge.BridgeMessageSent{ Message: bridge.IBridgeMessage{ DestChainId: mock.MockChainID, + SrcChainId: mock.MockChainID, Id: big.NewInt(1), Fee: new(big.Int).Add(mock.ProcessMessageTx.Cost(), big.NewInt(1)), }, @@ -48,8 +49,9 @@ func Test_ProcessMessage_messageUnprocessable(t *testing.T) { body := &queue.QueueMessageBody{ Event: &bridge.BridgeMessageSent{ Message: bridge.IBridgeMessage{ - GasLimit: big.NewInt(1), - Id: big.NewInt(1), + GasLimit: big.NewInt(1), + SrcChainId: mock.MockChainID, + Id: big.NewInt(1), }, Raw: types.Log{ Address: relayer.ZeroAddress, @@ -79,8 +81,9 @@ func Test_ProcessMessage_gasLimit0(t *testing.T) { body := queue.QueueMessageBody{ Event: &bridge.BridgeMessageSent{ Message: bridge.IBridgeMessage{ - GasLimit: big.NewInt(0), - Id: big.NewInt(1), + GasLimit: big.NewInt(0), + SrcChainId: mock.MockChainID, + Id: big.NewInt(1), }, Raw: types.Log{ Address: relayer.ZeroAddress, @@ -110,8 +113,9 @@ func Test_ProcessMessage_noChainId(t *testing.T) { body := queue.QueueMessageBody{ Event: &bridge.BridgeMessageSent{ Message: bridge.IBridgeMessage{ - GasLimit: big.NewInt(1), - Id: big.NewInt(0), + SrcChainId: mock.MockChainID, + GasLimit: big.NewInt(1), + Id: big.NewInt(0), }, MsgHash: mock.SuccessMsgHash, Raw: types.Log{ diff --git a/packages/relayer/processor/processor.go b/packages/relayer/processor/processor.go index 59cff33c4a..2d36762837 100644 --- a/packages/relayer/processor/processor.go +++ b/packages/relayer/processor/processor.go @@ -26,6 +26,7 @@ import ( "github.com/taikoxyz/taiko-mono/packages/relayer/bindings/erc20vault" "github.com/taikoxyz/taiko-mono/packages/relayer/bindings/erc721vault" "github.com/taikoxyz/taiko-mono/packages/relayer/bindings/icrosschainsync" + "github.com/taikoxyz/taiko-mono/packages/relayer/bindings/signalservice" "github.com/taikoxyz/taiko-mono/packages/relayer/bindings/taikol2" "github.com/taikoxyz/taiko-mono/packages/relayer/proof" "github.com/taikoxyz/taiko-mono/packages/relayer/queue" @@ -42,12 +43,24 @@ type ethClient interface { TransactionReceipt(ctx context.Context, txHash common.Hash) (*types.Receipt, error) BlockNumber(ctx context.Context) (uint64, error) BlockByNumber(ctx context.Context, number *big.Int) (*types.Block, error) + BlockByHash(ctx context.Context, hash common.Hash) (*types.Block, error) HeaderByHash(ctx context.Context, hash common.Hash) (*types.Header, error) SuggestGasPrice(ctx context.Context) (*big.Int, error) SuggestGasTipCap(ctx context.Context) (*big.Int, error) ChainID(ctx context.Context) (*big.Int, error) } +type hop struct { + chainID *big.Int + signalServiceAddress common.Address + signalService relayer.SignalService + headerSyncer relayer.HeaderSyncer + taikoAddress common.Address + ethClient ethClient + caller relayer.Caller + blockNum uint64 +} + type Processor struct { cancel context.CancelFunc @@ -55,12 +68,16 @@ type Processor struct { queue queue.Queue + hops []hop + srcEthClient ethClient destEthClient ethClient - rpc relayer.Caller + srcCaller relayer.Caller ecdsaKey *ecdsa.PrivateKey + srcSignalService relayer.SignalService + destBridge relayer.Bridge destHeaderSyncer relayer.HeaderSyncer destERC20Vault relayer.TokenVault @@ -74,7 +91,8 @@ type Processor struct { destNonce uint64 relayerAddr common.Address srcSignalServiceAddress common.Address - confirmations uint64 + + confirmations uint64 profitableOnly bool headerSyncIntervalSeconds int64 @@ -131,11 +149,76 @@ func InitFromConfig(ctx context.Context, p *Processor, cfg *Config) error { return err } + hops := []hop{} + + for _, hopConfig := range cfg.hopConfigs { + var hopEthClient *ethclient.Client + + var hopChainID *big.Int + + var hopHeaderSyncer *icrosschainsync.ICrossChainSync + + var hopRpcClient *rpc.Client + + var hopSignalService *signalservice.SignalService + + hopEthClient, err = ethclient.Dial(hopConfig.rpcURL) + if err != nil { + return err + } + + hopChainID, err = hopEthClient.ChainID(context.Background()) + if err != nil { + return err + } + + hopHeaderSyncer, err = icrosschainsync.NewICrossChainSync( + hopConfig.taikoAddress, + hopEthClient, + ) + if err != nil { + return err + } + + hopSignalService, err = signalservice.NewSignalService( + hopConfig.signalServiceAddress, + hopEthClient, + ) + if err != nil { + return err + } + + hopRpcClient, err = rpc.Dial(hopConfig.rpcURL) + if err != nil { + return err + } + + // only support one hop rn, add in array configs + // to support more. + hops = append(hops, hop{ + caller: hopRpcClient, + signalServiceAddress: hopConfig.signalServiceAddress, + taikoAddress: hopConfig.taikoAddress, + chainID: hopChainID, + headerSyncer: hopHeaderSyncer, + signalService: hopSignalService, + ethClient: hopEthClient, + }) + } + q, err := cfg.OpenQueueFunc() if err != nil { return err } + srcSignalService, err := signalservice.NewSignalService( + cfg.SrcSignalServiceAddress, + srcEthClient, + ) + if err != nil { + return err + } + destHeaderSyncer, err := icrosschainsync.NewICrossChainSync( cfg.DestTaikoAddress, destEthClient, @@ -210,12 +293,15 @@ func InitFromConfig(ctx context.Context, p *Processor, cfg *Config) error { p.taikoL2 = taikoL2 } + p.hops = hops p.prover = prover p.eventRepo = eventRepository p.srcEthClient = srcEthClient p.destEthClient = destEthClient + p.srcSignalService = srcSignalService + p.destBridge = destBridge p.destERC1155Vault = destERC1155Vault p.destERC20Vault = destERC20Vault @@ -241,7 +327,7 @@ func InitFromConfig(ctx context.Context, p *Processor, cfg *Config) error { p.msgCh = make(chan queue.Message) p.wg = &sync.WaitGroup{} p.mu = &sync.Mutex{} - p.rpc = srcRpcClient + p.srcCaller = srcRpcClient p.backOffRetryInterval = time.Duration(cfg.BackoffRetryInterval) * time.Second p.backOffMaxRetries = cfg.BackOffMaxRetrys diff --git a/packages/relayer/processor/processor_test.go b/packages/relayer/processor/processor_test.go index 8c11790646..77ee697fce 100644 --- a/packages/relayer/processor/processor_test.go +++ b/packages/relayer/processor/processor_test.go @@ -24,11 +24,12 @@ func newTestProcessor(profitableOnly bool) *Processor { srcEthClient: &mock.EthClient{}, destEthClient: &mock.EthClient{}, destERC20Vault: &mock.TokenVault{}, + srcSignalService: &mock.SignalService{}, mu: &sync.Mutex{}, ecdsaKey: privateKey, destHeaderSyncer: &mock.HeaderSyncer{}, prover: prover, - rpc: &mock.Caller{}, + srcCaller: &mock.Caller{}, profitableOnly: profitableOnly, headerSyncIntervalSeconds: 1, confTimeoutInSeconds: 900, diff --git a/packages/relayer/processor/wait_header_synced.go b/packages/relayer/processor/wait_header_synced.go index d78044f31c..e55985fca8 100644 --- a/packages/relayer/processor/wait_header_synced.go +++ b/packages/relayer/processor/wait_header_synced.go @@ -8,10 +8,15 @@ import ( "github.com/ethereum/go-ethereum/accounts/abi/bind" "github.com/ethereum/go-ethereum/common" "github.com/pkg/errors" - "github.com/taikoxyz/taiko-mono/packages/relayer/bindings/bridge" + "github.com/taikoxyz/taiko-mono/packages/relayer" ) -func (p *Processor) waitHeaderSynced(ctx context.Context, event *bridge.BridgeMessageSent) error { +func (p *Processor) waitHeaderSynced( + ctx context.Context, + headerSyncer relayer.HeaderSyncer, + ethClient ethClient, + blockNum uint64, +) error { ticker := time.NewTicker(time.Duration(p.headerSyncIntervalSeconds) * time.Second) defer ticker.Stop() @@ -21,38 +26,39 @@ func (p *Processor) waitHeaderSynced(ctx context.Context, event *bridge.BridgeMe return ctx.Err() case <-ticker.C: slog.Info("waitHeaderSynced checking if tx is processable", - "msgHash", common.Hash(event.MsgHash).Hex(), - "txHash", event.Raw.TxHash.Hex(), - "blockNumber", event.Raw.BlockNumber, + "blockNumber", blockNum, ) - // get latest synced header since not every header is synced from L1 => L2, + // get latest synced block has via snippet since not every header is synced from L1 => L2, // and later blocks still have the storage trie proof from previous blocks. - latestSyncedSnippet, err := p.destHeaderSyncer.GetSyncedSnippet(&bind.CallOpts{}, 0) + latestSyncedSnippet, err := headerSyncer.GetSyncedSnippet(&bind.CallOpts{ + Context: ctx, + }, 0) if err != nil { - return errors.Wrap(err, "p.destHeaderSyncer.GetCrossChainBlockHash") + return errors.Wrap(err, "p.destHeaderSyncer.GetSyncedSnippet") } - header, err := p.srcEthClient.HeaderByHash(ctx, latestSyncedSnippet.BlockHash) + slog.Info("latestSyncedSnippet", + "blockHash", common.Bytes2Hex(latestSyncedSnippet.BlockHash[:]), + "signalRoot", common.Bytes2Hex(latestSyncedSnippet.SignalRoot[:]), + ) + + header, err := ethClient.HeaderByHash(ctx, latestSyncedSnippet.BlockHash) if err != nil { - return errors.Wrap(err, "p.destHeaderSyncer.GetCrossChainBlockHash") + return errors.Wrap(err, "ethClient.HeaderByHash") } - // header is caught up and processible - if header.Number.Uint64() >= event.Raw.BlockNumber { - slog.Info("waitHeaderSynced processable", - "msgHash", common.Hash(event.MsgHash).Hex(), - "txHash", event.Raw.TxHash.Hex(), - "eventBlockNum", event.Raw.BlockNumber, + // header is caught up + if header.Number.Uint64() >= blockNum { + slog.Info("waitHeaderSynced caughtUp", + "blockNum", blockNum, "latestSyncedBlockNum", header.Number.Uint64(), ) return nil } - slog.Info("waitHeaderSynced waiting to be processable", - "msgHash", common.Hash(event.MsgHash).Hex(), - "txHash", event.Raw.TxHash.Hex(), - "eventBlockNum", event.Raw.BlockNumber, + slog.Info("waitHeaderSynced waiting to be caughtUp", + "blockNum", blockNum, "latestSyncedBlockNum", header.Number.Uint64(), ) } diff --git a/packages/relayer/processor/wait_header_synced_test.go b/packages/relayer/processor/wait_header_synced_test.go index 6ab4f2072d..043c7c7bc3 100644 --- a/packages/relayer/processor/wait_header_synced_test.go +++ b/packages/relayer/processor/wait_header_synced_test.go @@ -4,18 +4,13 @@ import ( "context" "testing" - "github.com/ethereum/go-ethereum/core/types" "github.com/stretchr/testify/assert" - "github.com/taikoxyz/taiko-mono/packages/relayer/bindings/bridge" + "github.com/taikoxyz/taiko-mono/packages/relayer/mock" ) func Test_waitHeaderSynced(t *testing.T) { p := newTestProcessor(true) - err := p.waitHeaderSynced(context.TODO(), &bridge.BridgeMessageSent{ - Raw: types.Log{ - BlockNumber: 1, - }, - }) + err := p.waitHeaderSynced(context.TODO(), &mock.HeaderSyncer{}, &mock.EthClient{}, 1) assert.Nil(t, err) } diff --git a/packages/relayer/proof/block_header.go b/packages/relayer/proof/block_header.go index 00a8d84268..49ae951129 100644 --- a/packages/relayer/proof/block_header.go +++ b/packages/relayer/proof/block_header.go @@ -4,17 +4,33 @@ import ( "context" "github.com/ethereum/go-ethereum/common" + "github.com/ethereum/go-ethereum/core/types" "github.com/pkg/errors" "github.com/taikoxyz/taiko-mono/packages/relayer/encoding" ) // blockHeader fetches block via rpc, then converts an ethereum block to the BlockHeader type that LibBridgeData // uses in our contracts -func (p *Prover) blockHeader(ctx context.Context, blockHash common.Hash) (encoding.BlockHeader, error) { - h, err := p.blocker.BlockByHash(ctx, blockHash) - if err != nil { - return encoding.BlockHeader{}, errors.Wrap(err, "p.ethClient.GetBlockByNumber") +func (p *Prover) blockHeader( + ctx context.Context, + blocker blocker, + blockHash common.Hash, +) (encoding.BlockHeader, error) { + var b *types.Block + + var err error + + if blockHash == (common.Hash{}) { + b, err = blocker.BlockByNumber(ctx, nil) + if err != nil { + return encoding.BlockHeader{}, errors.Wrap(err, "blocker.BlockByNumber") + } + } else { + b, err = blocker.BlockByHash(ctx, blockHash) + if err != nil { + return encoding.BlockHeader{}, errors.Wrap(err, "blocker.BlockByHash") + } } - return encoding.BlockToBlockHeader(h), nil + return encoding.BlockToBlockHeader(b), nil } diff --git a/packages/relayer/proof/block_header_test.go b/packages/relayer/proof/block_header_test.go index c1c70c217b..6f2f96da43 100644 --- a/packages/relayer/proof/block_header_test.go +++ b/packages/relayer/proof/block_header_test.go @@ -14,14 +14,14 @@ import ( func Test_blockHeader(t *testing.T) { p := newTestProver() - header, err := p.blockHeader(context.Background(), common.HexToHash("0x123")) + header, err := p.blockHeader(context.Background(), p.blocker, common.HexToHash("0x123")) assert.Equal(t, err, nil) assert.Equal(t, header, encoding.BlockToBlockHeader(types.NewBlockWithHeader(mock.Header))) } -func Test_blockHeader_cantFindBlock(t *testing.T) { +func Test_blockHeader_noHash(t *testing.T) { p := newTestProver() - _, err := p.blockHeader(context.Background(), common.HexToHash("0x")) - assert.NotEqual(t, err, nil) + _, err := p.blockHeader(context.Background(), p.blocker, common.HexToHash("0x")) + assert.Equal(t, err, nil) } diff --git a/packages/relayer/proof/encoded_signal_proof.go b/packages/relayer/proof/encoded_signal_proof.go index 8a1730d064..458bb5d50b 100644 --- a/packages/relayer/proof/encoded_signal_proof.go +++ b/packages/relayer/proof/encoded_signal_proof.go @@ -9,14 +9,28 @@ import ( "github.com/taikoxyz/taiko-mono/packages/relayer" "github.com/taikoxyz/taiko-mono/packages/relayer/encoding" + "github.com/ethereum/go-ethereum/accounts/abi/bind" "github.com/ethereum/go-ethereum/common" "github.com/ethereum/go-ethereum/common/hexutil" "github.com/ethereum/go-ethereum/rlp" "github.com/pkg/errors" ) -// EncodedSignalProof rlp and abi encodes the SignalProof struct expected by LibBridgeSignal -// in our contracts +type HopParams struct { + ChainID *big.Int + SignalServiceAddress common.Address + SignalService relayer.SignalService + TaikoAddress common.Address + Blocker blocker + Caller relayer.Caller + BlockNumber uint64 +} + +// EncodedSignalProof rlp and abi encodes the SignalProof struct expected by SignalService +// in our contracts. If there is no intermediary chain, and no `hops` are in between, +// it needs just a proof of the source SignalService having sent the signal. +// If it needs hops (ie: L1 => L3, L2A => L2B), it needs to generate proof calls for the hops +// as well, and we call `EncodedSignalProofWithHops` instead func (p *Prover) EncodedSignalProof( ctx context.Context, caller relayer.Caller, @@ -24,19 +38,26 @@ func (p *Prover) EncodedSignalProof( key string, blockHash common.Hash, ) ([]byte, error) { - blockHeader, err := p.blockHeader(ctx, blockHash) + blockHeader, err := p.blockHeader(ctx, p.blocker, blockHash) if err != nil { return nil, errors.Wrap(err, "p.blockHeader") } - encodedStorageProof, err := p.encodedStorageProof(ctx, caller, signalServiceAddress, key, blockHeader.Height.Int64()) + encodedStorageProof, _, err := p.encodedStorageProof( + ctx, + caller, + signalServiceAddress, + key, + blockHeader.Height.Int64(), + ) if err != nil { return nil, errors.Wrap(err, "p.getEncodedStorageProof") } signalProof := encoding.SignalProof{ - Height: blockHeader.Height, - Proof: encodedStorageProof, + Height: blockHeader.Height.Uint64(), + StorageProof: encodedStorageProof, + Hops: []encoding.Hop{}, } encodedSignalProof, err := encoding.EncodeSignalProof(signalProof) @@ -47,16 +68,90 @@ func (p *Prover) EncodedSignalProof( return encodedSignalProof, nil } -// getEncodedStorageProof rlp and abi encodes a proof for LibBridgeSignal, -// where `proof` is an rlp and abi encoded (bytes, bytes) consisting of the accountProof and storageProof.Proofs[0] -// response from `eth_getProof` +func (p *Prover) EncodedSignalProofWithHops( + ctx context.Context, + caller relayer.Caller, + signalServiceAddress common.Address, + hopParams []HopParams, + key string, + blockHash common.Hash, + blockNum uint64, +) ([]byte, uint64, error) { + blockHeader, err := p.blockHeader(ctx, p.blocker, blockHash) + if err != nil { + return nil, 0, errors.Wrap(err, "p.blockHeader") + } + + encodedStorageProof, signalRoot, err := p.encodedStorageProof( + ctx, + caller, + signalServiceAddress, + key, + blockHeader.Height.Int64(), + ) + + if err != nil { + return nil, 0, errors.Wrap(err, "p.encodedStorageProof") + } + + slog.Info("successfully generated main storage proof") + + hops := []encoding.Hop{} + + for _, hop := range hopParams { + hopStorageSlotKey, err := hop.SignalService.GetSignalSlot(&bind.CallOpts{}, + hop.ChainID, + hop.TaikoAddress, + signalRoot, + ) + if err != nil { + return nil, 0, errors.Wrap(err, "hopSignalService.GetSignalSlot") + } + + encodedHopStorageProof, nextSignalRoot, err := p.encodedStorageProof( + ctx, + hop.Caller, + hop.SignalServiceAddress, + common.Bytes2Hex(hopStorageSlotKey[:]), + int64(hop.BlockNumber), + ) + if err != nil { + return nil, 0, errors.Wrap(err, "hop p.getEncodedStorageProof") + } + + hops = append(hops, encoding.Hop{ + ChainID: hop.ChainID, + SignalRoot: signalRoot, + StorageProof: encodedHopStorageProof, + }) + + signalRoot = nextSignalRoot + } + + signalProof := encoding.SignalProof{ + Height: blockNum, + StorageProof: encodedStorageProof, + Hops: hops, + } + + encodedSignalProof, err := encoding.EncodeSignalProof(signalProof) + if err != nil { + return nil, 0, errors.Wrap(err, "enoding.EncodeSignalProof") + } + + return encodedSignalProof, blockHeader.Height.Uint64(), nil +} + +// getEncodedStorageProof rlp and abi encodes a proof for SignalService, +// where `proof` is an rlp and abi encoded (bytes, bytes) consisting of storageProof.Proofs[0] +// response from `eth_getProof`, and returns the storageHash to be used as the signalRoot. func (p *Prover) encodedStorageProof( ctx context.Context, c relayer.Caller, signalServiceAddress common.Address, key string, blockNumber int64, -) ([]byte, error) { +) ([]byte, common.Hash, error) { var ethProof StorageProof slog.Info("getting proof", @@ -73,19 +168,19 @@ func (p *Prover) encodedStorageProof( hexutil.EncodeBig(new(big.Int).SetInt64(blockNumber)), ) if err != nil { - return nil, errors.Wrap(err, "c.CallContext") + return nil, common.Hash{}, errors.Wrap(err, "c.CallContext") } slog.Info("proof generated", "value", new(big.Int).SetBytes(ethProof.StorageProof[0].Value).Int64()) if new(big.Int).SetBytes(ethProof.StorageProof[0].Value).Int64() != int64(1) { - return nil, errors.New("proof will not be valid, expected storageProof to be 1 but was not") + return nil, common.Hash{}, errors.New("proof will not be valid, expected storageProof to be 1 but was not") } rlpEncodedStorageProof, err := rlp.EncodeToBytes(ethProof.StorageProof[0].Proof) if err != nil { - return nil, errors.Wrap(err, "rlp.EncodeToBytes(proof.StorageProof[0].Proof") + return nil, common.Hash{}, errors.Wrap(err, "rlp.EncodeToBytes(proof.StorageProof[0].Proof") } - return rlpEncodedStorageProof, nil + return rlpEncodedStorageProof, ethProof.StorageHash, nil } diff --git a/packages/relayer/proof/encoded_signal_proof_test.go b/packages/relayer/proof/encoded_signal_proof_test.go index 3d700cbfbe..94395d1d65 100644 --- a/packages/relayer/proof/encoded_signal_proof_test.go +++ b/packages/relayer/proof/encoded_signal_proof_test.go @@ -12,13 +12,19 @@ import ( var ( // nolint: lll - wantEncoded = "0x0000000000000000000000000000000000000000000000000000000000000020000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000000400000000000000000000000000000000000000000000000000000000000000001c000000000000000000000000000000000000000000000000000000000000000" + wantEncoded = "0x00000000000000000000000000000000000000000000000000000000000000200000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000006000000000000000000000000000000000000000000000000000000000000000a00000000000000000000000000000000000000000000000000000000000000001c0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000" ) func Test_EncodedSignalProof(t *testing.T) { p := newTestProver() - encoded, err := p.EncodedSignalProof(context.Background(), &mock.Caller{}, common.Address{}, "1", mock.Header.TxHash) + encoded, err := p.EncodedSignalProof( + context.Background(), + &mock.Caller{}, + common.Address{}, + "1", + mock.Header.TxHash, + ) assert.Nil(t, err) assert.Equal(t, hexutil.Encode(encoded), wantEncoded) } diff --git a/packages/relayer/proof/prover.go b/packages/relayer/proof/prover.go index 18ec735e3d..bccab7e785 100644 --- a/packages/relayer/proof/prover.go +++ b/packages/relayer/proof/prover.go @@ -2,6 +2,7 @@ package proof import ( "context" + "math/big" "github.com/ethereum/go-ethereum/common" "github.com/ethereum/go-ethereum/core/types" @@ -10,6 +11,7 @@ import ( type blocker interface { BlockByHash(ctx context.Context, hash common.Hash) (*types.Block, error) + BlockByNumber(ctx context.Context, number *big.Int) (*types.Block, error) } type Prover struct { blocker blocker diff --git a/packages/relayer/scripts/abigen.sh b/packages/relayer/scripts/abigen.sh index 6344eb4ca6..64a6268263 100755 --- a/packages/relayer/scripts/abigen.sh +++ b/packages/relayer/scripts/abigen.sh @@ -5,9 +5,9 @@ if [ ! -d "../protocol/out" ]; then exit 1 fi -paths=("ERC1155Vault.sol" "ERC721Vault.sol" "ERC20Vault.sol" "Bridge.sol" "ICrossChainSync.sol" "TaikoL2.sol" "TaikoL1.sol") +paths=("ERC1155Vault.sol" "ERC721Vault.sol" "ERC20Vault.sol" "Bridge.sol" "ICrossChainSync.sol" "TaikoL2.sol" "TaikoL1.sol" "SignalService.sol") -names=("ERC1155Vault" "ERC721Vault" "ERC20Vault" "Bridge" "ICrossChainSync" "TaikoL2" "TaikoL1") +names=("ERC1155Vault" "ERC721Vault" "ERC20Vault" "Bridge" "ICrossChainSync" "TaikoL2" "TaikoL1" "SignalService") for (( i = 0; i < ${#paths[@]}; ++i )); do diff --git a/packages/relayer/signalservice.go b/packages/relayer/signalservice.go new file mode 100644 index 0000000000..cd0ced4f87 --- /dev/null +++ b/packages/relayer/signalservice.go @@ -0,0 +1,12 @@ +package relayer + +import ( + "math/big" + + "github.com/ethereum/go-ethereum/accounts/abi/bind" + "github.com/ethereum/go-ethereum/common" +) + +type SignalService interface { + GetSignalSlot(opts *bind.CallOpts, chainId *big.Int, app common.Address, signal [32]byte) ([32]byte, error) +} From 9ca78ae6febfaafde7031c9efd924411e3219646 Mon Sep 17 00:00:00 2001 From: adaki2004 Date: Tue, 24 Oct 2023 10:41:29 +0200 Subject: [PATCH 74/87] Add description --- packages/protocol/contracts/L1/verifiers/SgxVerifier.sol | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/packages/protocol/contracts/L1/verifiers/SgxVerifier.sol b/packages/protocol/contracts/L1/verifiers/SgxVerifier.sol index ffa029d351..13f523f1f1 100644 --- a/packages/protocol/contracts/L1/verifiers/SgxVerifier.sol +++ b/packages/protocol/contracts/L1/verifiers/SgxVerifier.sol @@ -18,7 +18,15 @@ import { TaikoData } from "../TaikoData.sol"; import { IVerifier } from "./IVerifier.sol"; /// @title SgxVerifier +/// @notice This contract is the implementation of verifying SGX signature +/// proofs on-chain. Please see references below! +/// Reference #1: https://ethresear.ch/t/2fa-zk-rollups-using-sgx/14462 +/// Reference #2: https://github.com/gramineproject/gramine/discussions/1579 contract SgxVerifier is EssentialContract, IVerifier { + /// @dev Each public-private key pair (Ethereum address) is generated within + /// the SGX program when it boots up. The off-chain remote attestation + /// ensures the validity of the program hash and has the capability of + /// bootstrapping the network with trustworthy instances. struct Instance { address addr; uint64 addedAt; // We can calculate if expired From 136ee0e215f1ac3a5a65ba84e803c758ed3c0fca Mon Sep 17 00:00:00 2001 From: Daniel Wang <99078276+dantaik@users.noreply.github.com> Date: Wed, 25 Oct 2023 16:22:15 +0800 Subject: [PATCH 75/87] feat(protocol): Enable designated address to propose 1st block post-genesis. (#15027) Co-authored-by: Daniel Wang --- .../contracts/L1/libs/LibProposing.sol | 29 +++++++++++++++---- 1 file changed, 24 insertions(+), 5 deletions(-) diff --git a/packages/protocol/contracts/L1/libs/LibProposing.sol b/packages/protocol/contracts/L1/libs/LibProposing.sol index 5e1d066923..24a82b422c 100644 --- a/packages/protocol/contracts/L1/libs/LibProposing.sol +++ b/packages/protocol/contracts/L1/libs/LibProposing.sol @@ -45,6 +45,7 @@ library LibProposing { error L1_UNAUTHORIZED(); /// @dev Proposes a Taiko L2 block. + function proposeBlock( TaikoData.State storage state, TaikoData.Config memory config, @@ -61,10 +62,8 @@ library LibProposing { // However, if the "proposer" address is set to a non-zero value, we // ensure that only that specific address has the authority to propose // blocks. - address proposer = resolver.resolve("proposer", true); - if (proposer != address(0) && msg.sender != proposer) { - revert L1_UNAUTHORIZED(); - } + TaikoData.SlotB memory b = state.slotB; + if (!_isProposerPermitted(b, resolver)) revert L1_UNAUTHORIZED(); if (txList.length > config.blockMaxTxListBytes) { revert L1_TXLIST_TOO_LARGE(); @@ -79,7 +78,7 @@ library LibProposing { // It's essential to ensure that the ring buffer for proposed blocks // still has space for at least one more block. - TaikoData.SlotB memory b = state.slotB; + if (b.numBlocks >= b.lastVerifiedBlockId + config.blockMaxProposals + 1) { revert L1_TOO_MANY_BLOCKS(); @@ -270,6 +269,26 @@ library LibProposing { } } + function _isProposerPermitted( + TaikoData.SlotB memory slotB, + AddressResolver resolver + ) + private + view + returns (bool) + { + if (slotB.numBlocks == 1) { + // Only proposer_one can propose the first block after genesis + address proposerOne = resolver.resolve("proposer_one", true); + if (proposerOne != address(0) && msg.sender != proposerOne) { + return false; + } + } + + address proposer = resolver.resolve("proposer", true); + return proposer == address(0) || msg.sender == proposer; + } + function _getProverFee( TaikoData.TierFee[] memory tierFees, uint16 tierId From edf94526df9170e1db7aacfdd20a5465512e5b65 Mon Sep 17 00:00:00 2001 From: Daniel Wang <99078276+dantaik@users.noreply.github.com> Date: Wed, 25 Oct 2023 16:24:59 +0800 Subject: [PATCH 76/87] feat(repo): add a contract to handle token granting and unlocking (#15006) Co-authored-by: Daniel Wang Co-authored-by: Brecht Devos Co-authored-by: David --- .../contracts/team/TimeLockTokenPool.sol | 269 +++++++++++ .../test/team/TimeLockTokenPool.t.sol | 428 ++++++++++++++++++ 2 files changed, 697 insertions(+) create mode 100644 packages/protocol/contracts/team/TimeLockTokenPool.sol create mode 100644 packages/protocol/test/team/TimeLockTokenPool.t.sol diff --git a/packages/protocol/contracts/team/TimeLockTokenPool.sol b/packages/protocol/contracts/team/TimeLockTokenPool.sol new file mode 100644 index 0000000000..bae807d41b --- /dev/null +++ b/packages/protocol/contracts/team/TimeLockTokenPool.sol @@ -0,0 +1,269 @@ +// SPDX-License-Identifier: MIT +// _____ _ _ _ _ +// |_ _|_ _(_) |_____ | | __ _| |__ ___ +// | |/ _` | | / / _ \ | |__/ _` | '_ (_-< +// |_|\__,_|_|_\_\___/ |____\__,_|_.__/__/ + +pragma solidity ^0.8.20; + +import { OwnableUpgradeable } from + "lib/openzeppelin-contracts-upgradeable/contracts/access/OwnableUpgradeable.sol"; +import { ERC20Upgradeable } from + "lib/openzeppelin-contracts-upgradeable/contracts/token/ERC20/ERC20Upgradeable.sol"; +import { SafeERC20Upgradeable } from + "lib/openzeppelin-contracts-upgradeable/contracts/token/ERC20/utils/SafeERC20Upgradeable.sol"; +import { ECDSAUpgradeable } from + "lib/openzeppelin-contracts-upgradeable/contracts/utils/cryptography/ECDSAUpgradeable.sol"; + +import { Proxied } from "../common/Proxied.sol"; +/// @title TimeLockTokenPool +/// Contract for managing Taiko tokens allocated to different roles and +/// individuals. +/// +/// Manages Taiko tokens through a three-state lifecycle: "allocated" to +/// "granted, owned, and locked," and finally to "granted, owned, and unlocked." +/// Allocation doesn't transfer ownership unless specified by grant settings. +/// Conditional allocated tokens can be canceled by invoking `void()`, making +/// them available for other uses. Once granted and owned, tokens are +/// irreversible and their unlock schedules are immutable. +/// +/// We should deploy multiple instances of this contract for different roles: +/// - investors +/// - team members, advisors, etc. +/// - grant program grantees + +contract TimeLockTokenPool is OwnableUpgradeable { + using SafeERC20Upgradeable for ERC20Upgradeable; + + struct Grant { + uint128 amount; + // If non-zero, indicates the start time for the recipient to receive + // tokens, subject to an unlocking schedule. + uint64 grantStart; + // If non-zero, indicates the time after which the token to be received + // will be actually non-zero + uint64 grantCliff; + // If non-zero, specifies the total seconds required for the recipient + // to fully own all granted tokens. + uint32 grantPeriod; + // If non-zero, indicates the start time for the recipient to unlock + // tokens. + uint64 unlockStart; + // If non-zero, indicates the time after which the unlock will be + // actually non-zero + uint64 unlockCliff; + // If non-zero, specifies the total seconds required for the recipient + // to fully unlock all owned tokens. + uint32 unlockPeriod; + } + + struct Recipient { + uint128 amountWithdrawn; + Grant[] grants; + } + + uint256 public constant MAX_GRANTS_PER_ADDRESS = 8; + + address public taikoToken; + address public sharedVault; + uint128 public totalAmountGranted; + uint128 public totalAmountVoided; + uint128 public totalAmountWithdrawn; + mapping(address recipient => Recipient) public recipients; + uint128[44] private __gap; + + event Granted(address indexed recipient, Grant grant); + event Voided(address indexed recipient, uint128 amount); + event Withdrawn(address indexed recipient, address to, uint128 amount); + + error INVALID_GRANT(); + error INVALID_PARAM(); + error NOTHING_TO_VOID(); + error NOTHING_TO_WITHDRAW(); + error TOO_MANY(); + + function init( + address _taikoToken, + address _sharedVault + ) + external + initializer + { + OwnableUpgradeable.__Ownable_init_unchained(); + + if (_taikoToken == address(0)) revert INVALID_PARAM(); + taikoToken = _taikoToken; + + if (_sharedVault == address(0)) revert INVALID_PARAM(); + sharedVault = _sharedVault; + } + + /// @notice Gives a new grant to a address with its own unlock schedule. + /// This transaction should happen on a regular basis, e.g., quarterly. + /// @dev It is strongly recommended to add one Grant per receipient address + /// so that such a grant can be voided without voiding other grants for the + /// same recipient. + function grant(address recipient, Grant memory g) external onlyOwner { + if (recipient == address(0)) revert INVALID_PARAM(); + if (recipients[recipient].grants.length >= MAX_GRANTS_PER_ADDRESS) { + revert TOO_MANY(); + } + + _validateGrant(g); + + totalAmountGranted += g.amount; + recipients[recipient].grants.push(g); + emit Granted(recipient, g); + } + + /// @notice Puts a stop to all grants for a given recipient.Tokens already + /// granted to the recipient will NOT be voided but are subject to the + /// original unlock schedule. + function void(address recipient) external onlyOwner { + Recipient storage r = recipients[recipient]; + uint128 amountVoided; + for (uint128 i; i < r.grants.length; ++i) { + amountVoided += _voidGrant(r.grants[i]); + } + if (amountVoided == 0) revert NOTHING_TO_VOID(); + + totalAmountVoided += amountVoided; + emit Voided(recipient, amountVoided); + } + + /// @notice Withdraws all withdrawable tokens. + function withdraw() external { + _withdraw(msg.sender, msg.sender); + } + + /// @notice Withdraws all withdrawable tokens. + function withdraw(address to, bytes memory sig) external { + if (to == address(0)) revert INVALID_PARAM(); + bytes32 hash = keccak256( + abi.encodePacked("Withdraw unlocked Taiko token to: ", to) + ); + address recipient = ECDSAUpgradeable.recover(hash, sig); + _withdraw(recipient, to); + } + + function getMyGrantSummary(address recipient) + public + view + returns ( + uint128 amountOwned, + uint128 amountUnlocked, + uint128 amountWithdrawn, + uint128 amountWithdrawable + ) + { + Recipient storage r = recipients[recipient]; + for (uint128 i; i < r.grants.length; ++i) { + amountOwned += _getAmountOwned(r.grants[i]); + amountUnlocked += _getAmountUnlocked(r.grants[i]); + } + + amountWithdrawn = r.amountWithdrawn; + amountWithdrawable = amountUnlocked - amountWithdrawn; + } + + function getMyGrants(address recipient) + public + view + returns (Grant[] memory) + { + return recipients[recipient].grants; + } + + function _withdraw(address recipient, address to) private { + Recipient storage r = recipients[recipient]; + uint128 amount; + + for (uint128 i; i < r.grants.length; ++i) { + amount += _getAmountUnlocked(r.grants[i]); + } + + amount -= r.amountWithdrawn; + if (amount == 0) revert NOTHING_TO_WITHDRAW(); + + r.amountWithdrawn += amount; + totalAmountWithdrawn += amount; + ERC20Upgradeable(taikoToken).transferFrom(sharedVault, to, amount); + + emit Withdrawn(recipient, to, amount); + } + + function _voidGrant(Grant storage g) + private + returns (uint128 amountVoided) + { + uint128 amountOwned = _getAmountOwned(g); + + amountVoided = g.amount - amountOwned; + g.amount = amountOwned; + + g.grantStart = 0; + g.grantPeriod = 0; + } + + function _getAmountOwned(Grant memory g) private view returns (uint128) { + return _calcAmount(g.amount, g.grantStart, g.grantCliff, g.grantPeriod); + } + + function _getAmountUnlocked(Grant memory g) + private + view + returns (uint128) + { + return _calcAmount( + _getAmountOwned(g), g.unlockStart, g.unlockCliff, g.unlockPeriod + ); + } + + function _calcAmount( + uint128 amount, + uint64 start, + uint64 cliff, + uint64 period + ) + private + view + returns (uint128) + { + if (amount == 0) return 0; + if (start == 0) return amount; + if (block.timestamp <= start) return 0; + + if (period == 0) return amount; + if (block.timestamp >= start + period) return amount; + + if (block.timestamp <= cliff) return 0; + + return amount * uint64(block.timestamp - start) / period; + } + + function _validateGrant(Grant memory g) private pure { + if (g.amount == 0) revert INVALID_GRANT(); + _validateCliff(g.grantStart, g.grantCliff, g.grantPeriod); + _validateCliff(g.unlockStart, g.unlockCliff, g.unlockPeriod); + } + + function _validateCliff( + uint64 start, + uint64 cliff, + uint32 period + ) + private + pure + { + if (start == 0 || period == 0) { + if (cliff > 0) revert INVALID_GRANT(); + } else { + if (cliff > 0 && cliff <= start) revert INVALID_GRANT(); + if (cliff >= start + period) revert INVALID_GRANT(); + } + } +} + +/// @title ProxiedTimeLockTokenPool +/// @notice Proxied version of the parent contract. +contract ProxiedTimeLockTokenPool is Proxied, TimeLockTokenPool { } diff --git a/packages/protocol/test/team/TimeLockTokenPool.t.sol b/packages/protocol/test/team/TimeLockTokenPool.t.sol new file mode 100644 index 0000000000..49c6586d22 --- /dev/null +++ b/packages/protocol/test/team/TimeLockTokenPool.t.sol @@ -0,0 +1,428 @@ +// SPDX-License-Identifier: MIT +pragma solidity ^0.8.20; + +import { TimeLockTokenPool as Pool } from + "../../contracts/team/TimeLockTokenPool.sol"; +import { Test } from "forge-std/Test.sol"; +import { ERC20 } from + "lib/openzeppelin-contracts/contracts/token/ERC20/ERC20.sol"; +import { console2 } from "forge-std/console2.sol"; + +contract MyERC20 is ERC20 { + constructor(address owner) ERC20("Taiko Token", "TKO") { + _mint(owner, 1_000_000_000e18); + } +} + +contract TestTimeLockTokenPool is Test { + address internal Vault = vm.addr(0x1); + address internal Alice = vm.addr(0x2); + address internal Bob = vm.addr(0x3); + + ERC20 tko = new MyERC20(Vault); + Pool pool = new Pool(); + + function setUp() public { + pool.init(address(tko), Vault); + } + + function test_invalid_granting() public { + vm.expectRevert(Pool.INVALID_GRANT.selector); + pool.grant(Alice, Pool.Grant(0, 0, 0, 0, 0, 0, 0)); + + vm.expectRevert(Pool.INVALID_PARAM.selector); + pool.grant(address(0), Pool.Grant(100e18, 0, 0, 0, 0, 0, 0)); + } + + function test_single_grant_zero_grant_period_zero_unlock_period() public { + pool.grant(Alice, Pool.Grant(10_000e18, 0, 0, 0, 0, 0, 0)); + vm.prank(Vault); + tko.approve(address(pool), 10_000e18); + + ( + uint128 amountOwned, + uint128 amountUnlocked, + uint128 amountWithdrawn, + uint128 amountWithdrawable + ) = pool.getMyGrantSummary(Alice); + assertEq(amountOwned, 10_000e18); + assertEq(amountUnlocked, 10_000e18); + assertEq(amountWithdrawn, 0); + assertEq(amountWithdrawable, 10_000e18); + + // Try to void the grant + vm.expectRevert(Pool.NOTHING_TO_VOID.selector); + pool.void(Alice); + + vm.prank(Alice); + pool.withdraw(); + assertEq(tko.balanceOf(Alice), 10_000e18); + + (amountOwned, amountUnlocked, amountWithdrawn, amountWithdrawable) = + pool.getMyGrantSummary(Alice); + assertEq(amountOwned, 10_000e18); + assertEq(amountUnlocked, 10_000e18); + assertEq(amountWithdrawn, 10_000e18); + assertEq(amountWithdrawable, 0); + } + + function test_single_grant_zero_grant_period_1year_unlock_period() public { + uint64 unlockStart = uint64(block.timestamp); + uint32 unlockPeriod = 365 days; + uint64 unlockCliff = unlockStart + unlockPeriod / 2; + + pool.grant( + Alice, + Pool.Grant( + 10_000e18, 0, 0, 0, unlockStart, unlockCliff, unlockPeriod + ) + ); + vm.prank(Vault); + tko.approve(address(pool), 10_000e18); + + ( + uint128 amountOwned, + uint128 amountUnlocked, + uint128 amountWithdrawn, + uint128 amountWithdrawable + ) = pool.getMyGrantSummary(Alice); + assertEq(amountOwned, 10_000e18); + assertEq(amountUnlocked, 0); + assertEq(amountWithdrawn, 0); + assertEq(amountWithdrawable, 0); + + vm.warp(unlockCliff); + + (amountOwned, amountUnlocked, amountWithdrawn, amountWithdrawable) = + pool.getMyGrantSummary(Alice); + assertEq(amountOwned, 10_000e18); + assertEq(amountUnlocked, 0); + assertEq(amountWithdrawn, 0); + assertEq(amountWithdrawable, 0); + + vm.warp(unlockCliff + 1); + + (amountOwned, amountUnlocked, amountWithdrawn, amountWithdrawable) = + pool.getMyGrantSummary(Alice); + uint256 amount1 = 5_000_000_317_097_919_837_645; + assertEq(amountOwned, 10_000e18); + assertEq(amountUnlocked, amount1); + assertEq(amountWithdrawn, 0); + assertEq(amountWithdrawable, amount1); + + vm.prank(Alice); + pool.withdraw(); + + vm.warp(unlockStart + unlockPeriod + 365 days); + + (amountOwned, amountUnlocked, amountWithdrawn, amountWithdrawable) = + pool.getMyGrantSummary(Alice); + assertEq(amountOwned, 10_000e18); + assertEq(amountUnlocked, 10_000e18); + assertEq(amountWithdrawn, amount1); + assertEq(amountWithdrawable, 10_000e18 - amount1); + + vm.prank(Alice); + pool.withdraw(); + + (amountOwned, amountUnlocked, amountWithdrawn, amountWithdrawable) = + pool.getMyGrantSummary(Alice); + assertEq(amountOwned, 10_000e18); + assertEq(amountUnlocked, 10_000e18); + assertEq(amountWithdrawn, 10_000e18); + assertEq(amountWithdrawable, 0); + } + + function test_single_grant_1year_grant_period_zero_unlock_period() public { + uint64 grantStart = uint64(block.timestamp); + uint32 grantPeriod = 365 days; + uint64 grantCliff = grantStart + grantPeriod / 2; + + pool.grant( + Alice, + Pool.Grant(10_000e18, grantStart, grantCliff, grantPeriod, 0, 0, 0) + ); + vm.prank(Vault); + tko.approve(address(pool), 10_000e18); + + ( + uint128 amountOwned, + uint128 amountUnlocked, + uint128 amountWithdrawn, + uint128 amountWithdrawable + ) = pool.getMyGrantSummary(Alice); + assertEq(amountOwned, 0); + assertEq(amountUnlocked, 0); + assertEq(amountWithdrawn, 0); + assertEq(amountWithdrawable, 0); + + vm.warp(grantCliff); + + (amountOwned, amountUnlocked, amountWithdrawn, amountWithdrawable) = + pool.getMyGrantSummary(Alice); + assertEq(amountOwned, 0); + assertEq(amountUnlocked, 0); + assertEq(amountWithdrawn, 0); + assertEq(amountWithdrawable, 0); + + vm.warp(grantCliff + 1); + + (amountOwned, amountUnlocked, amountWithdrawn, amountWithdrawable) = + pool.getMyGrantSummary(Alice); + uint256 amount1 = 5_000_000_317_097_919_837_645; + assertEq(amountOwned, amount1); + assertEq(amountUnlocked, amount1); + assertEq(amountWithdrawn, 0); + assertEq(amountWithdrawable, amount1); + + vm.prank(Alice); + pool.withdraw(); + + vm.warp(grantStart + grantPeriod + 365 days); + + (amountOwned, amountUnlocked, amountWithdrawn, amountWithdrawable) = + pool.getMyGrantSummary(Alice); + assertEq(amountOwned, 10_000e18); + assertEq(amountUnlocked, 10_000e18); + assertEq(amountWithdrawn, amount1); + assertEq(amountWithdrawable, 10_000e18 - amount1); + + vm.prank(Alice); + pool.withdraw(); + + (amountOwned, amountUnlocked, amountWithdrawn, amountWithdrawable) = + pool.getMyGrantSummary(Alice); + assertEq(amountOwned, 10_000e18); + assertEq(amountUnlocked, 10_000e18); + assertEq(amountWithdrawn, 10_000e18); + assertEq(amountWithdrawable, 0); + } + + function test_single_grant_4year_grant_period_4year_unlock_period() + public + { + uint64 grantStart = uint64(block.timestamp); + uint32 grantPeriod = 4 * 365 days; + uint64 grantCliff = grantStart + 90 days; + + uint64 unlockStart = grantStart + 365 days; + uint32 unlockPeriod = 4 * 365 days; + uint64 unlockCliff = unlockStart + 365 days; + + pool.grant( + Alice, + Pool.Grant( + 10_000e18, + grantStart, + grantCliff, + grantPeriod, + unlockStart, + unlockCliff, + unlockPeriod + ) + ); + vm.prank(Vault); + tko.approve(address(pool), 10_000e18); + + ( + uint128 amountOwned, + uint128 amountUnlocked, + uint128 amountWithdrawn, + uint128 amountWithdrawable + ) = pool.getMyGrantSummary(Alice); + assertEq(amountOwned, 0); + assertEq(amountUnlocked, 0); + assertEq(amountWithdrawn, 0); + assertEq(amountWithdrawable, 0); + + // 90 days later + vm.warp(grantStart + 90 days); + (amountOwned, amountUnlocked, amountWithdrawn, amountWithdrawable) = + pool.getMyGrantSummary(Alice); + assertEq(amountOwned, 0); + assertEq(amountUnlocked, 0); + assertEq(amountWithdrawn, 0); + assertEq(amountWithdrawable, 0); + + // 1 year later + vm.warp(grantStart + 365 days); + (amountOwned, amountUnlocked, amountWithdrawn, amountWithdrawable) = + pool.getMyGrantSummary(Alice); + assertEq(amountOwned, 2500e18); + assertEq(amountUnlocked, 0); + assertEq(amountWithdrawn, 0); + assertEq(amountWithdrawable, 0); + + // 2 year later + vm.warp(grantStart + 2 * 365 days); + (amountOwned, amountUnlocked, amountWithdrawn, amountWithdrawable) = + pool.getMyGrantSummary(Alice); + assertEq(amountOwned, 5000e18); + assertEq(amountUnlocked, 0); + assertEq(amountWithdrawn, 0); + assertEq(amountWithdrawable, 0); + + // 3 year later + vm.warp(grantStart + 3 * 365 days); + (amountOwned, amountUnlocked, amountWithdrawn, amountWithdrawable) = + pool.getMyGrantSummary(Alice); + assertEq(amountOwned, 7500e18); + assertEq(amountUnlocked, 3750e18); + assertEq(amountWithdrawn, 0); + assertEq(amountWithdrawable, 3750e18); + + // 4 year later + vm.warp(grantStart + 4 * 365 days); + (amountOwned, amountUnlocked, amountWithdrawn, amountWithdrawable) = + pool.getMyGrantSummary(Alice); + assertEq(amountOwned, 10_000e18); + assertEq(amountUnlocked, 7500e18); + assertEq(amountWithdrawn, 0); + assertEq(amountWithdrawable, 7500e18); + + // 5 year later + vm.warp(grantStart + 5 * 365 days); + (amountOwned, amountUnlocked, amountWithdrawn, amountWithdrawable) = + pool.getMyGrantSummary(Alice); + assertEq(amountOwned, 10_000e18); + assertEq(amountUnlocked, 10_000e18); + assertEq(amountWithdrawn, 0); + assertEq(amountWithdrawable, 10_000e18); + + // 6 year later + vm.warp(grantStart + 6 * 365 days); + (amountOwned, amountUnlocked, amountWithdrawn, amountWithdrawable) = + pool.getMyGrantSummary(Alice); + assertEq(amountOwned, 10_000e18); + assertEq(amountUnlocked, 10_000e18); + assertEq(amountWithdrawn, 0); + assertEq(amountWithdrawable, 10_000e18); + } + + function test_multiple_grants() public { + pool.grant(Alice, Pool.Grant(10_000e18, 0, 0, 0, 0, 0, 0)); + pool.grant(Alice, Pool.Grant(20_000e18, 0, 0, 0, 0, 0, 0)); + + vm.prank(Vault); + tko.approve(address(pool), 30_000e18); + + ( + uint128 amountOwned, + uint128 amountUnlocked, + uint128 amountWithdrawn, + uint128 amountWithdrawable + ) = pool.getMyGrantSummary(Alice); + assertEq(amountOwned, 30_000e18); + assertEq(amountUnlocked, 30_000e18); + assertEq(amountWithdrawn, 0); + assertEq(amountWithdrawable, 30_000e18); + } + + function test_void_multiple_grants_before_granted() public { + uint64 grantStart = uint64(block.timestamp) + 30 days; + pool.grant(Alice, Pool.Grant(10_000e18, grantStart, 0, 0, 0, 0, 0)); + pool.grant(Alice, Pool.Grant(20_000e18, grantStart, 0, 0, 0, 0, 0)); + + vm.prank(Vault); + tko.approve(address(pool), 30_000e18); + + ( + uint128 amountOwned, + uint128 amountUnlocked, + uint128 amountWithdrawn, + uint128 amountWithdrawable + ) = pool.getMyGrantSummary(Alice); + assertEq(amountOwned, 0); + assertEq(amountUnlocked, 0); + assertEq(amountWithdrawn, 0); + assertEq(amountWithdrawable, 0); + + // Try to void the grant + pool.void(Alice); + + Pool.Grant[] memory grants = pool.getMyGrants(Alice); + for (uint256 i; i < grants.length; ++i) { + assertEq(grants[i].grantStart, 0); + assertEq(grants[i].grantPeriod, 0); + assertEq(grants[i].grantCliff, 0); + + assertEq(grants[i].unlockStart, 0); + assertEq(grants[i].unlockPeriod, 0); + assertEq(grants[i].unlockCliff, 0); + + assertEq(grants[i].amount, 0); + } + } + + function test_void_multiple_grants_after_granted() public { + uint64 grantStart = uint64(block.timestamp) + 30 days; + pool.grant(Alice, Pool.Grant(10_000e18, grantStart, 0, 0, 0, 0, 0)); + pool.grant(Alice, Pool.Grant(20_000e18, grantStart, 0, 0, 0, 0, 0)); + + vm.prank(Vault); + tko.approve(address(pool), 30_000e18); + + ( + uint128 amountOwned, + uint128 amountUnlocked, + uint128 amountWithdrawn, + uint128 amountWithdrawable + ) = pool.getMyGrantSummary(Alice); + + assertEq(amountOwned, 0); + assertEq(amountUnlocked, 0); + assertEq(amountWithdrawn, 0); + assertEq(amountWithdrawable, 0); + + vm.warp(grantStart + 1); + + // Try to void the grant + // Try to void the grant + vm.expectRevert(Pool.NOTHING_TO_VOID.selector); + pool.void(Alice); + } + + function test_void_multiple_grants_in_the_middle() public { + uint64 grantStart = uint64(block.timestamp); + uint32 grantPeriod = 100 days; + pool.grant( + Alice, Pool.Grant(10_000e18, grantStart, 0, grantPeriod, 0, 0, 0) + ); + pool.grant( + Alice, Pool.Grant(20_000e18, grantStart, 0, grantPeriod, 0, 0, 0) + ); + + vm.prank(Vault); + tko.approve(address(pool), 30_000e18); + + vm.warp(grantStart + 50 days); + ( + uint128 amountOwned, + uint128 amountUnlocked, + uint128 amountWithdrawn, + uint128 amountWithdrawable + ) = pool.getMyGrantSummary(Alice); + + assertEq(amountOwned, 15_000e18); + assertEq(amountUnlocked, 15_000e18); + assertEq(amountWithdrawn, 0); + assertEq(amountWithdrawable, 15_000e18); + + pool.void(Alice); + + (amountOwned, amountUnlocked, amountWithdrawn, amountWithdrawable) = + pool.getMyGrantSummary(Alice); + assertEq(amountOwned, 15_000e18); + assertEq(amountUnlocked, 15_000e18); + assertEq(amountWithdrawn, 0); + assertEq(amountWithdrawable, 15_000e18); + + vm.warp(grantStart + 100 days); + (amountOwned, amountUnlocked, amountWithdrawn, amountWithdrawable) = + pool.getMyGrantSummary(Alice); + assertEq(amountOwned, 15_000e18); + assertEq(amountUnlocked, 15_000e18); + assertEq(amountWithdrawn, 0); + assertEq(amountWithdrawable, 15_000e18); + } +} From cb43010d59dd532e495167cc51046c2f1073d1c3 Mon Sep 17 00:00:00 2001 From: Daniel Wang <99078276+dantaik@users.noreply.github.com> Date: Wed, 25 Oct 2023 23:15:51 +0800 Subject: [PATCH 77/87] fix(protocol): check l1BlockHash & l1SignalRoot in anchortx (#15035) Co-authored-by: Daniel Wang Co-authored-by: David --- packages/protocol/contracts/L2/TaikoL2.sol | 14 +++++++++----- packages/protocol/genesis/GenerateGenesis.g.sol | 5 ++++- 2 files changed, 13 insertions(+), 6 deletions(-) diff --git a/packages/protocol/contracts/L2/TaikoL2.sol b/packages/protocol/contracts/L2/TaikoL2.sol index 3da088e4f8..f9b9bd95ee 100644 --- a/packages/protocol/contracts/L2/TaikoL2.sol +++ b/packages/protocol/contracts/L2/TaikoL2.sol @@ -45,6 +45,7 @@ contract TaikoL2 is EssentialContract, TaikoL2Signer, ICrossChainSync { error L2_BASEFEE_MISMATCH(); error L2_INVALID_CHAIN_ID(); + error L2_INVALID_PARAM(); error L2_INVALID_SENDER(); error L2_PUBLIC_INPUT_HASH_MISMATCH(); error L2_TOO_LATE(); @@ -89,6 +90,11 @@ contract TaikoL2 is EssentialContract, TaikoL2Signer, ICrossChainSync { ) external { + if ( + l1BlockHash == 0 || l1SignalRoot == 0 || l1Height == 0 + || (block.number != 1 && parentGasUsed == 0) + ) revert L2_INVALID_PARAM(); + if (msg.sender != GOLDEN_TOUCH_ADDRESS) revert L2_INVALID_SENDER(); uint256 parentId; @@ -114,11 +120,9 @@ contract TaikoL2 is EssentialContract, TaikoL2Signer, ICrossChainSync { // Store the L1's signal root as a signal to the local signal service to // allow for multi-hop bridging. - if (l1SignalRoot != 0) { - ISignalService(resolve("signal_service", false)).sendSignal( - l1SignalRoot - ); - } + ISignalService(resolve("signal_service", false)).sendSignal( + l1SignalRoot + ); emit CrossChainSynced(l1Height, l1BlockHash, l1SignalRoot); // Update state variables diff --git a/packages/protocol/genesis/GenerateGenesis.g.sol b/packages/protocol/genesis/GenerateGenesis.g.sol index 2a4b5f5334..a80c63e494 100644 --- a/packages/protocol/genesis/GenerateGenesis.g.sol +++ b/packages/protocol/genesis/GenerateGenesis.g.sol @@ -111,7 +111,10 @@ contract TestGenerateGenesis is Test, AddressResolver { uint256 gasLeftBefore = gasleft(); taikoL2.anchor( - bytes32(block.prevrandao), bytes32(block.prevrandao), i, i + keccak256(abi.encodePacked(block.timestamp, i)), + keccak256(abi.encodePacked(block.timestamp, i)), + i + 1, + i + 1 ); if (i == 299) { From 004e02a56a598f5e4687ac04d7963645ada55850 Mon Sep 17 00:00:00 2001 From: David Date: Thu, 26 Oct 2023 19:34:35 +0800 Subject: [PATCH 78/87] test(protocol): fix workflow errors (#15043) --- pnpm-lock.yaml | 957 +++++++++++++++++-------------------------------- 1 file changed, 321 insertions(+), 636 deletions(-) diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 48ec3ff779..c0a8c5a767 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -1,9 +1,5 @@ lockfileVersion: '6.0' -settings: - autoInstallPeers: true - excludeLinksFromLockfile: false - importers: .: @@ -97,13 +93,13 @@ importers: version: 5.16.0(eslint@7.32.0)(typescript@4.6.4) '@wagmi/cli': specifier: ^1.0.1 - version: 1.0.1(typescript@4.6.4)(wagmi@0.12.16) + version: 1.0.1(@wagmi/core@1.4.5)(typescript@5.2.2)(wagmi@1.4.5) '@zerodevx/svelte-toast': specifier: ^0.6.3 version: 0.6.3 abitype: specifier: ^0.8.2 - version: 0.8.7(typescript@4.6.4)(zod@3.22.4) + version: 0.8.7(typescript@5.2.2)(zod@3.22.4) autoprefixer: specifier: ^10.4.13 version: 10.4.16(postcss@8.4.31) @@ -204,14 +200,11 @@ importers: packages/bridge-ui-v2: dependencies: '@wagmi/core': - specifier: ^1.3.6 - version: 1.3.6(lokijs@1.5.12)(react@18.2.0)(typescript@5.2.2)(viem@1.16.0) - '@web3modal/ethereum': - specifier: ^2.6.2 - version: 2.6.2(@wagmi/core@1.3.6)(viem@1.16.0) - '@web3modal/html': - specifier: ^2.6.2 - version: 2.6.2(react@18.2.0) + specifier: ^1.4.4 + version: 1.4.5(lokijs@1.5.12)(react@18.2.0)(typescript@5.2.2)(viem@1.16.6) + '@web3modal/wagmi': + specifier: ^3.1.0 + version: 3.1.0(@wagmi/core@1.4.5)(typescript@5.2.2)(viem@1.16.6) '@zerodevx/svelte-toast': specifier: ^0.9.5 version: 0.9.5(svelte@4.1.0) @@ -231,8 +224,11 @@ importers: specifier: ^3.6.0 version: 3.6.0(svelte@4.1.0) viem: - specifier: ^1.4.1 - version: 1.16.0(typescript@5.2.2) + specifier: ^1.16.6 + version: 1.16.6(typescript@5.2.2) + wagmi: + specifier: ^1.4.4 + version: 1.4.5(lokijs@1.5.12)(react@18.2.0)(typescript@5.2.2)(viem@1.16.6) devDependencies: '@playwright/test': specifier: ^1.28.1 @@ -260,7 +256,7 @@ importers: version: 0.33.0(vitest@0.32.2) '@wagmi/cli': specifier: ^1.0.1 - version: 1.0.1(@wagmi/core@1.3.6)(typescript@5.2.2) + version: 1.0.1(@wagmi/core@1.4.5)(typescript@5.2.2)(wagmi@1.4.5) abitype: specifier: ^0.8.7 version: 0.8.7(typescript@5.2.2)(zod@3.22.4) @@ -341,190 +337,6 @@ importers: packages/fork-diff: {} - packages/pos-dashboard: - dependencies: - '@coinbase/wallet-sdk': - specifier: ^3.6.3 - version: 3.6.3(@babel/core@7.23.2) - '@ethersproject/experimental': - specifier: ^5.7.0 - version: 5.7.0 - '@lottiefiles/svelte-lottie-player': - specifier: ^0.2.0 - version: 0.2.0 - '@sentry/svelte': - specifier: ^7.54.0 - version: 7.54.0(svelte@3.53.1) - '@sveltestack/svelte-query': - specifier: ^1.6.0 - version: 1.6.0 - axios: - specifier: ^1.2.0 - version: 1.4.0(debug@4.3.4) - buffer: - specifier: ^6.0.3 - version: 6.0.3 - debug: - specifier: ^4.3.4 - version: 4.3.4(supports-color@8.1.1) - ethers: - specifier: ^5.7.1 - version: 5.7.1 - identicon.js: - specifier: ^2.3.3 - version: 2.3.3 - svelte-i18n: - specifier: ^3.5.1 - version: 3.6.0(svelte@3.53.1) - svelte-spa-router: - specifier: ^3.2.0 - version: 3.2.0 - wagmi: - specifier: ^0.12.16 - version: 0.12.16(debug@4.3.4)(ethers@5.7.1)(react@18.2.0)(typescript@4.6.4) - devDependencies: - '@babel/preset-env': - specifier: ^7.16.0 - version: 7.16.0(@babel/core@7.23.2) - '@sentry/vite-plugin': - specifier: ^2.2.1 - version: 2.2.1 - '@sveltejs/vite-plugin-svelte': - specifier: ^1.0.1 - version: 1.0.1(svelte@3.53.1)(vite@3.2.7) - '@tsconfig/svelte': - specifier: ^5.0.2 - version: 5.0.2 - '@types/debug': - specifier: ^4.1.7 - version: 4.1.7 - '@types/eslint': - specifier: ^8.2.1 - version: 8.2.1 - '@types/estree': - specifier: ^0.0.50 - version: 0.0.50 - '@types/jest': - specifier: ^27.0.2 - version: 27.5.2 - '@types/mixpanel': - specifier: ^2.14.3 - version: 2.14.3 - '@types/sanitize-html': - specifier: ^2.6.2 - version: 2.6.2 - '@typescript-eslint/eslint-plugin': - specifier: ^6.6.0 - version: 6.7.5(@typescript-eslint/parser@5.16.0)(eslint@7.32.0)(typescript@4.6.4) - '@typescript-eslint/parser': - specifier: ^5.16.0 - version: 5.16.0(eslint@7.32.0)(typescript@4.6.4) - '@wagmi/cli': - specifier: ^1.0.1 - version: 1.0.1(typescript@4.6.4)(wagmi@0.12.16) - '@zerodevx/svelte-toast': - specifier: ^0.6.3 - version: 0.6.3 - abitype: - specifier: ^0.8.2 - version: 0.8.7(typescript@4.6.4)(zod@3.22.4) - autoprefixer: - specifier: ^10.4.13 - version: 10.4.16(postcss@8.4.31) - babel-jest: - specifier: ^27.3.1 - version: 27.3.1(@babel/core@7.23.2) - babel-plugin-transform-es2015-modules-commonjs: - specifier: ^6.26.2 - version: 6.26.2 - daisyui: - specifier: 1.16.6 - version: 1.16.6 - eslint: - specifier: ^7.32.0 - version: 7.32.0 - eslint-plugin-jest: - specifier: ^27.2.1 - version: 27.2.1(@typescript-eslint/eslint-plugin@6.7.5)(eslint@7.32.0)(jest@27.5.1)(typescript@4.6.4) - eslint-plugin-simple-import-sort: - specifier: ^10.0.0 - version: 10.0.0(eslint@7.32.0) - eslint-plugin-svelte3: - specifier: ^4.0.0 - version: 4.0.0(eslint@7.32.0)(svelte@3.53.1) - fs-extra: - specifier: ^11.1.1 - version: 11.1.1 - jest: - specifier: ^27.5.1 - version: 27.5.1 - node-sass: - specifier: ^7.0.1 - version: 7.0.1 - postcss: - specifier: ^8.4.19 - version: 8.4.31 - postcss-cli: - specifier: ^7.1.2 - version: 7.1.2 - postcss-loader: - specifier: ^7.3.3 - version: 7.3.3(postcss@8.4.31)(typescript@4.6.4)(webpack@5.89.0) - prettier: - specifier: 2.7.1 - version: 2.7.1 - prettier-plugin-svelte: - specifier: ^2.9.0 - version: 2.9.0(prettier@2.7.1)(svelte@3.53.1) - rollup-plugin-node-builtins: - specifier: ^2.0.0 - version: 2.0.0 - rollup-plugin-polyfill-node: - specifier: ^0.10.2 - version: 0.10.2(rollup@2.79.1) - svelte: - specifier: ^3.53.1 - version: 3.53.1 - svelte-check: - specifier: ^2.8.0 - version: 2.8.0(@babel/core@7.23.2)(node-sass@7.0.1)(postcss@8.4.31)(svelte@3.53.1) - svelte-heros-v2: - specifier: ^0.3.10 - version: 0.3.10 - svelte-jester: - specifier: ^2.1.5 - version: 2.1.5(jest@27.5.1)(svelte@3.53.1) - svelte-loader: - specifier: ^3.1.2 - version: 3.1.2(svelte@3.53.1) - svelte-preprocess: - specifier: ^4.10.7 - version: 4.10.7(@babel/core@7.23.2)(node-sass@7.0.1)(postcss@8.4.31)(svelte@3.53.1)(typescript@4.6.4) - tailwindcss: - specifier: ^3.2.4 - version: 3.3.3 - theme-change: - specifier: ^2.2.0 - version: 2.2.0 - ts-jest: - specifier: ^27.0.7 - version: 27.0.7(@babel/core@7.23.2)(@types/jest@27.5.2)(babel-jest@27.3.1)(jest@27.5.1)(typescript@4.6.4) - ts-jest-mock-import-meta: - specifier: ^0.12.0 - version: 0.12.0(ts-jest@27.0.7) - ts-loader: - specifier: ^9.2.6 - version: 9.2.6(typescript@4.6.4)(webpack@5.89.0) - tslib: - specifier: ^2.4.0 - version: 2.4.1 - typescript: - specifier: ^4.6.4 - version: 4.6.4 - vite: - specifier: ^3.2.7 - version: 3.2.7 - packages/protocol: devDependencies: '@defi-wonderland/smock': @@ -2992,6 +2804,7 @@ packages: transitivePeerDependencies: - bufferutil - utf-8-validate + dev: false /@ethersproject/providers@5.7.2: resolution: {integrity: sha512-g34EWZ1WWAVgr4aptGlVBF8mhl3VWjv+8hoAnzStu8Ah22VHBsuGzP17eb6xDVRzw895G4W7vvx60lFFur/1Rg==} @@ -3520,12 +3333,14 @@ packages: - bufferutil - debug - utf-8-validate + dev: false /@json-rpc-tools/types@1.7.6: resolution: {integrity: sha512-nDSqmyRNEqEK9TZHtM15uNnDljczhCUdBmRhpNZ95bIPKEDQ+nTDmGMFd2lLin3upc5h2VVVd9tkTDdbXUhDIQ==} deprecated: Package no longer supported. Contact Support at https://www.npmjs.com/support for more info. dependencies: keyvaluestorage-interface: 1.0.0 + dev: false /@json-rpc-tools/utils@1.7.6: resolution: {integrity: sha512-HjA8x/U/Q78HRRe19yh8HVKoZ+Iaoo3YZjakJYxR+rw52NHo6jM+VE9b8+7ygkCFXl/EHID5wh/MkXaE/jGyYw==} @@ -3533,6 +3348,7 @@ packages: dependencies: '@json-rpc-tools/types': 1.7.6 '@pedrouid/environment': 1.0.1 + dev: false /@ledgerhq/connect-kit-loader@1.1.2: resolution: {integrity: sha512-mscwGroSJQrCTjtNGBu+18FQbZYA4+q6Tyx6K7CXHl6AwgZKbWfZYdgP2F+fyZcRUdGRsMX8QtvU61VcGGtO1A==} @@ -3545,6 +3361,12 @@ packages: dependencies: '@lit-labs/ssr-dom-shim': 1.1.2 + /@lit/reactive-element@2.0.0: + resolution: {integrity: sha512-wn+2+uDcs62ROBmVAwssO4x5xue/uKD3MGGZOXL2sMxReTRIT0JXKyMXeu7gh0aJ4IJNEIG/3aOnUaQvM7BMzQ==} + dependencies: + '@lit-labs/ssr-dom-shim': 1.1.2 + dev: false + /@ljharb/resumer@0.0.1: resolution: {integrity: sha512-skQiAOrCfO7vRTq53cxznMpks7wS1va95UCidALlOVWqvBAzwPVErwizDwoMqNVMEn1mDq0utxZd02eIrvF1lw==} engines: {node: '>= 0.4'} @@ -4533,6 +4355,7 @@ packages: /@pedrouid/environment@1.0.1: resolution: {integrity: sha512-HaW78NszGzRZd9SeoI3JD11JqY+lubnaOx7Pewj5pfjqWXOEATpeKIFb9Z4t2WBUK2iryiXX3lzWwmYWgUL0Ug==} + dev: false /@pkgjs/parseargs@0.11.0: resolution: {integrity: sha512-+1VkjdD0QBLPodGrJUeqarH8VAIvQODIbwh9XpP5Syisf7YoQgsJKPNFoqqLQlu+VQ/tVSshMR6loPMn8U+dPg==} @@ -4650,6 +4473,7 @@ packages: transitivePeerDependencies: - bufferutil - utf-8-validate + dev: false /@safe-global/safe-apps-provider@0.17.1(typescript@5.2.2): resolution: {integrity: sha512-lYfRqrbbK1aKU1/UGkYWc/X7PgySYcumXKc5FB2uuwAs2Ghj8uETuW5BrwPqyjBknRxutFbTv+gth/JzjxAhdQ==} @@ -4670,6 +4494,7 @@ packages: transitivePeerDependencies: - bufferutil - utf-8-validate + dev: false /@safe-global/safe-apps-sdk@7.9.0: resolution: {integrity: sha512-S2EI+JL8ocSgE3uGNaDZCzKmwfhtxXZFDUP76vN0FeaY35itFMyi8F0Vhxu0XnZm3yLzJE3tp5px6GhuQFLU6w==} @@ -4679,6 +4504,7 @@ packages: transitivePeerDependencies: - bufferutil - utf-8-validate + dev: false /@safe-global/safe-apps-sdk@8.0.0(typescript@5.2.2): resolution: {integrity: sha512-gYw0ki/EAuV1oSyMxpqandHjnthZjYYy+YWpTAzf8BqfXM3ItcZLpjxfg+3+mXW8HIO+3jw6T9iiqEXsqHaMMw==} @@ -5934,35 +5760,6 @@ packages: - supports-color dev: true - /@typescript-eslint/eslint-plugin@6.7.5(@typescript-eslint/parser@5.16.0)(eslint@7.32.0)(typescript@4.6.4): - resolution: {integrity: sha512-JhtAwTRhOUcP96D0Y6KYnwig/MRQbOoLGXTON2+LlyB/N35SP9j1boai2zzwXb7ypKELXMx3DVk9UTaEq1vHEw==} - engines: {node: ^16.0.0 || >=18.0.0} - peerDependencies: - '@typescript-eslint/parser': ^6.0.0 || ^6.0.0-alpha - eslint: ^7.0.0 || ^8.0.0 - typescript: '*' - peerDependenciesMeta: - typescript: - optional: true - dependencies: - '@eslint-community/regexpp': 4.9.1 - '@typescript-eslint/parser': 5.16.0(eslint@7.32.0)(typescript@4.6.4) - '@typescript-eslint/scope-manager': 6.7.5 - '@typescript-eslint/type-utils': 6.7.5(eslint@7.32.0)(typescript@4.6.4) - '@typescript-eslint/utils': 6.7.5(eslint@7.32.0)(typescript@4.6.4) - '@typescript-eslint/visitor-keys': 6.7.5 - debug: 4.3.4(supports-color@8.1.1) - eslint: 7.32.0 - graphemer: 1.4.0 - ignore: 5.2.4 - natural-compare: 1.4.0 - semver: 7.5.4 - ts-api-utils: 1.0.3(typescript@4.6.4) - typescript: 4.6.4 - transitivePeerDependencies: - - supports-color - dev: true - /@typescript-eslint/eslint-plugin@6.7.5(@typescript-eslint/parser@5.16.0)(eslint@8.51.0)(typescript@4.6.4): resolution: {integrity: sha512-JhtAwTRhOUcP96D0Y6KYnwig/MRQbOoLGXTON2+LlyB/N35SP9j1boai2zzwXb7ypKELXMx3DVk9UTaEq1vHEw==} engines: {node: ^16.0.0 || >=18.0.0} @@ -6125,26 +5922,6 @@ packages: - supports-color dev: true - /@typescript-eslint/type-utils@6.7.5(eslint@7.32.0)(typescript@4.6.4): - resolution: {integrity: sha512-Gs0qos5wqxnQrvpYv+pf3XfcRXW6jiAn9zE/K+DlmYf6FcpxeNYN0AIETaPR7rHO4K2UY+D0CIbDP9Ut0U4m1g==} - engines: {node: ^16.0.0 || >=18.0.0} - peerDependencies: - eslint: ^7.0.0 || ^8.0.0 - typescript: '*' - peerDependenciesMeta: - typescript: - optional: true - dependencies: - '@typescript-eslint/typescript-estree': 6.7.5(typescript@4.6.4) - '@typescript-eslint/utils': 6.7.5(eslint@7.32.0)(typescript@4.6.4) - debug: 4.3.4(supports-color@8.1.1) - eslint: 7.32.0 - ts-api-utils: 1.0.3(typescript@4.6.4) - typescript: 4.6.4 - transitivePeerDependencies: - - supports-color - dev: true - /@typescript-eslint/type-utils@6.7.5(eslint@8.51.0)(typescript@4.6.4): resolution: {integrity: sha512-Gs0qos5wqxnQrvpYv+pf3XfcRXW6jiAn9zE/K+DlmYf6FcpxeNYN0AIETaPR7rHO4K2UY+D0CIbDP9Ut0U4m1g==} engines: {node: ^16.0.0 || >=18.0.0} @@ -6322,25 +6099,6 @@ packages: - typescript dev: true - /@typescript-eslint/utils@6.7.5(eslint@7.32.0)(typescript@4.6.4): - resolution: {integrity: sha512-pfRRrH20thJbzPPlPc4j0UNGvH1PjPlhlCMq4Yx7EGjV7lvEeGX0U6MJYe8+SyFutWgSHsdbJ3BXzZccYggezA==} - engines: {node: ^16.0.0 || >=18.0.0} - peerDependencies: - eslint: ^7.0.0 || ^8.0.0 - dependencies: - '@eslint-community/eslint-utils': 4.4.0(eslint@7.32.0) - '@types/json-schema': 7.0.13 - '@types/semver': 7.5.3 - '@typescript-eslint/scope-manager': 6.7.5 - '@typescript-eslint/types': 6.7.5 - '@typescript-eslint/typescript-estree': 6.7.5(typescript@4.6.4) - eslint: 7.32.0 - semver: 7.5.4 - transitivePeerDependencies: - - supports-color - - typescript - dev: true - /@typescript-eslint/utils@6.7.5(eslint@8.51.0)(typescript@4.6.4): resolution: {integrity: sha512-pfRRrH20thJbzPPlPc4j0UNGvH1PjPlhlCMq4Yx7EGjV7lvEeGX0U6MJYe8+SyFutWgSHsdbJ3BXzZccYggezA==} engines: {node: ^16.0.0 || >=18.0.0} @@ -6467,6 +6225,24 @@ packages: pretty-format: 27.5.1 dev: true + /@vue/compiler-core@3.3.7: + resolution: {integrity: sha512-pACdY6YnTNVLXsB86YD8OF9ihwpolzhhtdLVHhBL6do/ykr6kKXNYABRtNMGrsQXpEXXyAdwvWWkuTbs4MFtPQ==} + dependencies: + '@babel/parser': 7.23.0 + '@vue/shared': 3.3.7 + estree-walker: 2.0.2 + source-map-js: 1.0.2 + dev: false + optional: true + + /@vue/compiler-dom@3.3.7: + resolution: {integrity: sha512-0LwkyJjnUPssXv/d1vNJ0PKfBlDoQs7n81CbO6Q0zdL7H1EzqYRrTVXDqdBVqro0aJjo/FOa1qBAPVI4PGSHBw==} + dependencies: + '@vue/compiler-core': 3.3.7 + '@vue/shared': 3.3.7 + dev: false + optional: true + /@vue/compiler-sfc@2.7.14: resolution: {integrity: sha512-aNmNHyLPsw+sVvlQFQ2/8sjNuLtK54TC6cuKnVzAY93ks4ZBrvwQSnkkIh7bsbNhum5hJBS00wSDipQ937f5DA==} dependencies: @@ -6475,6 +6251,30 @@ packages: source-map: 0.6.1 dev: true + /@vue/compiler-sfc@3.3.7: + resolution: {integrity: sha512-7pfldWy/J75U/ZyYIXRVqvLRw3vmfxDo2YLMwVtWVNew8Sm8d6wodM+OYFq4ll/UxfqVr0XKiVwti32PCrruAw==} + dependencies: + '@babel/parser': 7.23.0 + '@vue/compiler-core': 3.3.7 + '@vue/compiler-dom': 3.3.7 + '@vue/compiler-ssr': 3.3.7 + '@vue/reactivity-transform': 3.3.7 + '@vue/shared': 3.3.7 + estree-walker: 2.0.2 + magic-string: 0.30.5 + postcss: 8.4.31 + source-map-js: 1.0.2 + dev: false + optional: true + + /@vue/compiler-ssr@3.3.7: + resolution: {integrity: sha512-TxOfNVVeH3zgBc82kcUv+emNHo+vKnlRrkv8YvQU5+Y5LJGJwSNzcmLUoxD/dNzv0bhQ/F0s+InlgV0NrApJZg==} + dependencies: + '@vue/compiler-dom': 3.3.7 + '@vue/shared': 3.3.7 + dev: false + optional: true + /@vue/component-compiler-utils@3.3.0: resolution: {integrity: sha512-97sfH2mYNU+2PzGrmK2haqffDpVASuib9/w2/noxiFi31Z54hW+q3izKQXXQZSNhtiUpAI36uSuYepeBe4wpHQ==} dependencies: @@ -6544,6 +6344,57 @@ packages: - whiskers dev: true + /@vue/reactivity-transform@3.3.7: + resolution: {integrity: sha512-APhRmLVbgE1VPGtoLQoWBJEaQk4V8JUsqrQihImVqKT+8U6Qi3t5ATcg4Y9wGAPb3kIhetpufyZ1RhwbZCIdDA==} + dependencies: + '@babel/parser': 7.23.0 + '@vue/compiler-core': 3.3.7 + '@vue/shared': 3.3.7 + estree-walker: 2.0.2 + magic-string: 0.30.5 + dev: false + optional: true + + /@vue/reactivity@3.3.7: + resolution: {integrity: sha512-cZNVjWiw00708WqT0zRpyAgduG79dScKEPYJXq2xj/aMtk3SKvL3FBt2QKUlh6EHBJ1m8RhBY+ikBUzwc7/khg==} + dependencies: + '@vue/shared': 3.3.7 + dev: false + optional: true + + /@vue/runtime-core@3.3.7: + resolution: {integrity: sha512-LHq9du3ubLZFdK/BP0Ysy3zhHqRfBn80Uc+T5Hz3maFJBGhci1MafccnL3rpd5/3wVfRHAe6c+PnlO2PAavPTQ==} + dependencies: + '@vue/reactivity': 3.3.7 + '@vue/shared': 3.3.7 + dev: false + optional: true + + /@vue/runtime-dom@3.3.7: + resolution: {integrity: sha512-PFQU1oeJxikdDmrfoNQay5nD4tcPNYixUBruZzVX/l0eyZvFKElZUjW4KctCcs52nnpMGO6UDK+jF5oV4GT5Lw==} + dependencies: + '@vue/runtime-core': 3.3.7 + '@vue/shared': 3.3.7 + csstype: 3.1.2 + dev: false + optional: true + + /@vue/server-renderer@3.3.7(vue@3.3.7): + resolution: {integrity: sha512-UlpKDInd1hIZiNuVVVvLgxpfnSouxKQOSE2bOfQpBuGwxRV/JqqTCyyjXUWiwtVMyeRaZhOYYqntxElk8FhBhw==} + peerDependencies: + vue: 3.3.7 + dependencies: + '@vue/compiler-ssr': 3.3.7 + '@vue/shared': 3.3.7 + vue: 3.3.7(typescript@5.2.2) + dev: false + optional: true + + /@vue/shared@3.3.7: + resolution: {integrity: sha512-N/tbkINRUDExgcPTBvxNkvHGu504k8lzlNQRITVnm6YjOjwa4r0nnbd4Jb01sNpur5hAllyRJzSK5PvB9PPwRg==} + dev: false + optional: true + /@wagmi/chains@0.1.14: resolution: {integrity: sha512-hSzb6Ni/PejVzliKkc5T3ehzRJxr5k4fZMGYuouqwArWQ8z7R4jrIlm2j2nNOD7Epz6ZucdiVluU1YH0d/EEyw==} dev: false @@ -6557,6 +6408,7 @@ packages: optional: true dependencies: typescript: 4.6.4 + dev: false /@wagmi/chains@0.2.22(typescript@5.2.2): resolution: {integrity: sha512-TdiOzJT6TO1JrztRNjTA5Quz+UmQlbvWFG8N41u9tta0boHA1JCAzGGvU6KuIcOmJfRJkKOUIt67wlbopCpVHg==} @@ -6569,17 +6421,6 @@ packages: typescript: 5.2.2 dev: true - /@wagmi/chains@1.0.0(typescript@4.6.4): - resolution: {integrity: sha512-eNbqRWyHbivcMNq5tbXJks4NaOzVLHnNQauHPeE/EDT9AlpqzcrMc+v2T1/2Iw8zN4zgqB86NCsxeJHJs7+xng==} - peerDependencies: - typescript: '>=5.0.4' - peerDependenciesMeta: - typescript: - optional: true - dependencies: - typescript: 4.6.4 - dev: true - /@wagmi/chains@1.0.0(typescript@5.2.2): resolution: {integrity: sha512-eNbqRWyHbivcMNq5tbXJks4NaOzVLHnNQauHPeE/EDT9AlpqzcrMc+v2T1/2Iw8zN4zgqB86NCsxeJHJs7+xng==} peerDependencies: @@ -6591,17 +6432,7 @@ packages: typescript: 5.2.2 dev: true - /@wagmi/chains@1.4.0(typescript@5.2.2): - resolution: {integrity: sha512-9HwJrhcZ1TxyrCbE10y7s1eSiSiyfGam7AHIOLYExaOX+vpOZ+MNTt4orFEDbEpz1fxwJDPPI38lanAUix1OSA==} - peerDependencies: - typescript: '>=5.0.4' - peerDependenciesMeta: - typescript: - optional: true - dependencies: - typescript: 5.2.2 - - /@wagmi/cli@1.0.1(@wagmi/core@1.3.6)(typescript@5.2.2): + /@wagmi/cli@1.0.1(@wagmi/core@1.4.5)(typescript@5.2.2)(wagmi@1.4.5): resolution: {integrity: sha512-SZwT7RglyVDipDTPL/dEKfrAJ3GdSKfdhaF6CFoseIgSiOLkj3xbakvAqdjYSkYnnpjrqLXc3WKZCnszQryctA==} engines: {node: '>=14'} hasBin: true @@ -6618,7 +6449,7 @@ packages: optional: true dependencies: '@wagmi/chains': 0.2.22(typescript@5.2.2) - '@wagmi/core': 1.3.6(lokijs@1.5.12)(react@18.2.0)(typescript@5.2.2)(viem@1.16.0) + '@wagmi/core': 1.4.5(lokijs@1.5.12)(react@18.2.0)(typescript@5.2.2)(viem@1.16.6) abitype: 0.8.1(typescript@5.2.2)(zod@3.22.4) abort-controller: 3.0.0 bundle-require: 3.1.2(esbuild@0.15.13) @@ -6641,52 +6472,7 @@ packages: prettier: 2.8.8 typescript: 5.2.2 viem: 0.3.50(typescript@5.2.2)(zod@3.22.4) - zod: 3.22.4 - transitivePeerDependencies: - - bufferutil - - utf-8-validate - dev: true - - /@wagmi/cli@1.0.1(typescript@4.6.4)(wagmi@0.12.16): - resolution: {integrity: sha512-SZwT7RglyVDipDTPL/dEKfrAJ3GdSKfdhaF6CFoseIgSiOLkj3xbakvAqdjYSkYnnpjrqLXc3WKZCnszQryctA==} - engines: {node: '>=14'} - hasBin: true - peerDependencies: - '@wagmi/core': '>=1.0.0-next.0' - typescript: '>=4.9.4' - wagmi: '>=1.0.0-next.0' - peerDependenciesMeta: - '@wagmi/core': - optional: true - typescript: - optional: true - wagmi: - optional: true - dependencies: - '@wagmi/chains': 0.2.22(typescript@4.6.4) - abitype: 0.8.1(typescript@4.6.4)(zod@3.22.4) - abort-controller: 3.0.0 - bundle-require: 3.1.2(esbuild@0.15.13) - cac: 6.7.14 - change-case: 4.1.2 - chokidar: 3.5.3 - dedent: 0.7.0 - detect-package-manager: 2.0.1 - dotenv: 16.3.1 - dotenv-expand: 10.0.0 - esbuild: 0.15.13 - execa: 6.1.0 - find-up: 6.3.0 - fs-extra: 10.1.0 - globby: 13.2.2 - node-fetch: 3.3.2 - ora: 6.3.1 - pathe: 1.1.1 - picocolors: 1.0.0 - prettier: 2.8.8 - typescript: 4.6.4 - viem: 0.3.50(typescript@4.6.4)(zod@3.22.4) - wagmi: 0.12.16(debug@4.3.4)(ethers@5.7.1)(react@18.2.0)(typescript@4.6.4) + wagmi: 1.4.5(lokijs@1.5.12)(react@18.2.0)(typescript@5.2.2)(viem@1.16.6) zod: 3.22.4 transitivePeerDependencies: - bufferutil @@ -6754,16 +6540,14 @@ packages: - supports-color - utf-8-validate - zod + dev: false - /@wagmi/connectors@2.6.5(@wagmi/chains@1.4.0)(lokijs@1.5.12)(react@18.2.0)(typescript@5.2.2)(viem@1.16.0): - resolution: {integrity: sha512-klF31togMDd0qQqEcLl5cCGxjMbL0RRXQ8I1vxmEa3KdGzw6Z3ICVzX7/bDfnNEZcOW7BKyAnZDq7rCt5jTOiw==} + /@wagmi/connectors@3.1.3(lokijs@1.5.12)(react@18.2.0)(typescript@5.2.2)(viem@1.16.6): + resolution: {integrity: sha512-UgwsQKQDFObJVJMf9pDfFoXTv710o4zrTHyhIWKBTMMkLpCMsMxN5+ZaDhBYt/BgoRinfRYQo8uwuwLhxE6Log==} peerDependencies: - '@wagmi/chains': '>=1.3.0' typescript: '>=5.0.4' viem: '>=0.3.35' peerDependenciesMeta: - '@wagmi/chains': - optional: true typescript: optional: true dependencies: @@ -6771,17 +6555,17 @@ packages: '@ledgerhq/connect-kit-loader': 1.1.2 '@safe-global/safe-apps-provider': 0.17.1(typescript@5.2.2) '@safe-global/safe-apps-sdk': 8.1.0(typescript@5.2.2) - '@wagmi/chains': 1.4.0(typescript@5.2.2) - '@walletconnect/ethereum-provider': 2.8.6(@walletconnect/modal@2.5.9)(lokijs@1.5.12) + '@walletconnect/ethereum-provider': 2.10.2(@walletconnect/modal@2.6.2)(lokijs@1.5.12) '@walletconnect/legacy-provider': 2.0.0 - '@walletconnect/modal': 2.5.9(react@18.2.0) - '@walletconnect/utils': 2.8.6(lokijs@1.5.12) + '@walletconnect/modal': 2.6.2(react@18.2.0) + '@walletconnect/utils': 2.10.2(lokijs@1.5.12) abitype: 0.8.7(typescript@5.2.2)(zod@3.22.4) eventemitter3: 4.0.7 typescript: 5.2.2 - viem: 1.16.0(typescript@5.2.2) + viem: 1.16.6(typescript@5.2.2) transitivePeerDependencies: - '@react-native-async-storage/async-storage' + - '@types/react' - bufferutil - encoding - lokijs @@ -6818,6 +6602,7 @@ packages: - supports-color - utf-8-validate - zod + dev: false /@wagmi/core@0.8.0(@coinbase/wallet-sdk@3.6.3)(ethers@5.7.1)(react@18.2.0)(typescript@4.6.4): resolution: {integrity: sha512-249Iph7Z289ym2WQGtUHXSzUK4w/n33IYSAAIDpL4/csB7sOoAYAEAOH5bxH/x2KT7gPd1pNSgOWDzfoG3hI4w==} @@ -6844,8 +6629,8 @@ packages: - typescript dev: false - /@wagmi/core@1.3.6(lokijs@1.5.12)(react@18.2.0)(typescript@5.2.2)(viem@1.16.0): - resolution: {integrity: sha512-TXv9ZlRR5aySfERFuWMuo+lKXC/CoqtxVJZVHPqhK1jY+nldMx3AvrWzzF4CccRaMYcVdvPFepvmxzq2A2VvWg==} + /@wagmi/core@1.4.5(lokijs@1.5.12)(react@18.2.0)(typescript@5.2.2)(viem@1.16.6): + resolution: {integrity: sha512-N9luRb1Uk4tBN9kaYcQSWKE9AsRt/rvZaFt5IZech4JPzNN2sQlfhKd9GEjOXYRDqEPHdDvos7qyBKiDNTz4GA==} peerDependencies: typescript: '>=5.0.4' viem: '>=0.3.35' @@ -6853,12 +6638,11 @@ packages: typescript: optional: true dependencies: - '@wagmi/chains': 1.4.0(typescript@5.2.2) - '@wagmi/connectors': 2.6.5(@wagmi/chains@1.4.0)(lokijs@1.5.12)(react@18.2.0)(typescript@5.2.2)(viem@1.16.0) + '@wagmi/connectors': 3.1.3(lokijs@1.5.12)(react@18.2.0)(typescript@5.2.2)(viem@1.16.6) abitype: 0.8.7(typescript@5.2.2)(zod@3.22.4) eventemitter3: 4.0.7 typescript: 5.2.2 - viem: 1.16.0(typescript@5.2.2) + viem: 1.16.6(typescript@5.2.2) zustand: 4.4.3(react@18.2.0) transitivePeerDependencies: - '@react-native-async-storage/async-storage' @@ -6906,8 +6690,8 @@ packages: - utf-8-validate dev: false - /@walletconnect/core@2.8.1: - resolution: {integrity: sha512-mN9Zkdl/NeThntK8cydDoQOW6jUEpOeFgYR1RCKPLH51VQwlbdSgvvQIeanSQXEY4U7AM3x8cs1sxqMomIfRQg==} + /@walletconnect/core@2.10.2(lokijs@1.5.12): + resolution: {integrity: sha512-JQz/xp3SLEpTeRQctdck2ugSBVEpMxoSE+lFi2voJkZop1hv6P+uqr6E4PzjFluAjeAnKlT1xvra0aFWjPWVcw==} dependencies: '@walletconnect/heartbeat': 1.2.1 '@walletconnect/jsonrpc-provider': 1.0.13 @@ -6920,8 +6704,8 @@ packages: '@walletconnect/relay-auth': 1.0.4 '@walletconnect/safe-json': 1.0.2 '@walletconnect/time': 1.0.2 - '@walletconnect/types': 2.8.1 - '@walletconnect/utils': 2.8.1 + '@walletconnect/types': 2.10.2(lokijs@1.5.12) + '@walletconnect/utils': 2.10.2(lokijs@1.5.12) events: 3.3.0 lodash.isequal: 4.5.0 uint8arrays: 3.1.1 @@ -6931,8 +6715,8 @@ packages: - lokijs - utf-8-validate - /@walletconnect/core@2.8.6(lokijs@1.5.12): - resolution: {integrity: sha512-rnSqm1KJLcww/v6+UH8JeibQkJ3EKgyUDPfEK0stSEkrIUIcXaFlq3Et8S+vgV8bPhI0MVUhAhFL5OJZ3t2ryg==} + /@walletconnect/core@2.8.1: + resolution: {integrity: sha512-mN9Zkdl/NeThntK8cydDoQOW6jUEpOeFgYR1RCKPLH51VQwlbdSgvvQIeanSQXEY4U7AM3x8cs1sxqMomIfRQg==} dependencies: '@walletconnect/heartbeat': 1.2.1 '@walletconnect/jsonrpc-provider': 1.0.13 @@ -6945,8 +6729,8 @@ packages: '@walletconnect/relay-auth': 1.0.4 '@walletconnect/safe-json': 1.0.2 '@walletconnect/time': 1.0.2 - '@walletconnect/types': 2.8.6(lokijs@1.5.12) - '@walletconnect/utils': 2.8.6(lokijs@1.5.12) + '@walletconnect/types': 2.8.1 + '@walletconnect/utils': 2.8.1 events: 3.3.0 lodash.isequal: 4.5.0 uint8arrays: 3.1.1 @@ -6955,6 +6739,7 @@ packages: - bufferutil - lokijs - utf-8-validate + dev: false /@walletconnect/crypto@1.0.3: resolution: {integrity: sha512-+2jdORD7XQs76I2Odgr3wwrtyuLUXD/kprNVsjWRhhhdO9Mt6WqVzOPu0/t7OHSmgal8k7SoBQzUc5hu/8zL/g==} @@ -6997,8 +6782,8 @@ packages: - utf-8-validate dev: false - /@walletconnect/ethereum-provider@2.8.1(@walletconnect/modal@2.6.2)(debug@4.3.4): - resolution: {integrity: sha512-YlF8CCiFTSEZRyANIBsop/U+t+d1Z1/UXXoE9+iwjSGKJsaym6PgBLPb2d8XdmS/qR6Tcx7lVodTp4cVtezKnA==} + /@walletconnect/ethereum-provider@2.10.2(@walletconnect/modal@2.6.2)(lokijs@1.5.12): + resolution: {integrity: sha512-QMYFZ6+rVq2CJLdIPdKK0j1Qm66UA27oQU5V2SrL8EVwl7wFfm0Bq7fnL+qAWeDpn612dNeNErpk/ROa1zWlWg==} peerDependencies: '@walletconnect/modal': '>=2' peerDependenciesMeta: @@ -7010,21 +6795,20 @@ packages: '@walletconnect/jsonrpc-types': 1.0.3 '@walletconnect/jsonrpc-utils': 1.0.8 '@walletconnect/modal': 2.6.2(react@18.2.0) - '@walletconnect/sign-client': 2.8.1 - '@walletconnect/types': 2.8.1 - '@walletconnect/universal-provider': 2.8.1(debug@4.3.4) - '@walletconnect/utils': 2.8.1 + '@walletconnect/sign-client': 2.10.2(lokijs@1.5.12) + '@walletconnect/types': 2.10.2(lokijs@1.5.12) + '@walletconnect/universal-provider': 2.10.2(lokijs@1.5.12) + '@walletconnect/utils': 2.10.2(lokijs@1.5.12) events: 3.3.0 transitivePeerDependencies: - '@react-native-async-storage/async-storage' - bufferutil - - debug - encoding - lokijs - utf-8-validate - /@walletconnect/ethereum-provider@2.8.6(@walletconnect/modal@2.5.9)(lokijs@1.5.12): - resolution: {integrity: sha512-wUvJEsXTLmMihrOhQxAs1k9hrWEOT03QBn54P9r9GpJbJ1zEfIjQaXFfi8uup6gldhH+vN38PsbOiLyv/6d3qQ==} + /@walletconnect/ethereum-provider@2.8.1(@walletconnect/modal@2.6.2)(debug@4.3.4): + resolution: {integrity: sha512-YlF8CCiFTSEZRyANIBsop/U+t+d1Z1/UXXoE9+iwjSGKJsaym6PgBLPb2d8XdmS/qR6Tcx7lVodTp4cVtezKnA==} peerDependencies: '@walletconnect/modal': '>=2' peerDependenciesMeta: @@ -7035,18 +6819,20 @@ packages: '@walletconnect/jsonrpc-provider': 1.0.13 '@walletconnect/jsonrpc-types': 1.0.3 '@walletconnect/jsonrpc-utils': 1.0.8 - '@walletconnect/modal': 2.5.9(react@18.2.0) - '@walletconnect/sign-client': 2.8.6(lokijs@1.5.12) - '@walletconnect/types': 2.8.6(lokijs@1.5.12) - '@walletconnect/universal-provider': 2.8.6(lokijs@1.5.12) - '@walletconnect/utils': 2.8.6(lokijs@1.5.12) + '@walletconnect/modal': 2.6.2(react@18.2.0) + '@walletconnect/sign-client': 2.8.1 + '@walletconnect/types': 2.8.1 + '@walletconnect/universal-provider': 2.8.1(debug@4.3.4) + '@walletconnect/utils': 2.8.1 events: 3.3.0 transitivePeerDependencies: - '@react-native-async-storage/async-storage' - bufferutil + - debug - encoding - lokijs - utf-8-validate + dev: false /@walletconnect/events@1.0.1: resolution: {integrity: sha512-NPTqaoi0oPBVNuLv7qPaJazmGHs5JGyO8eEAk5VGKmJzDR7AHzD4k6ilox5kxk1iwiOnFopBOOMLs86Oa76HpQ==} @@ -7189,14 +6975,6 @@ packages: deprecated: 'Deprecated in favor of dynamic registry available from: https://github.com/walletconnect/walletconnect-registry' dev: false - /@walletconnect/modal-core@2.5.9(react@18.2.0): - resolution: {integrity: sha512-isIebwF9hOknGouhS/Ob4YJ9Sa/tqNYG2v6Ua9EkCqIoLimepkG5eC53tslUWW29SLSfQ9qqBNG2+iE7yQXqgw==} - dependencies: - buffer: 6.0.3 - valtio: 1.10.6(react@18.2.0) - transitivePeerDependencies: - - react - /@walletconnect/modal-core@2.6.2(react@18.2.0): resolution: {integrity: sha512-cv8ibvdOJQv2B+nyxP9IIFdxvQznMz8OOr/oR/AaUZym4hjXNL/l1a2UlSQBXrVjo3xxbouMxLb3kBsHoYP2CA==} dependencies: @@ -7205,16 +6983,6 @@ packages: - '@types/react' - react - /@walletconnect/modal-ui@2.5.9(react@18.2.0): - resolution: {integrity: sha512-nfBaAT9Ls7RZTBBgAq+Nt/3AoUcinIJ9bcq5UHXTV3lOPu/qCKmUC/0HY3GvUK8ykabUAsjr0OAGmcqkB91qug==} - dependencies: - '@walletconnect/modal-core': 2.5.9(react@18.2.0) - lit: 2.7.5 - motion: 10.16.2 - qrcode: 1.5.3 - transitivePeerDependencies: - - react - /@walletconnect/modal-ui@2.6.2(react@18.2.0): resolution: {integrity: sha512-rbdstM1HPGvr7jprQkyPggX7rP4XiCG85ZA+zWBEX0dVQg8PpAgRUqpeub4xQKDgY7pY/xLRXSiCVdWGqvG2HA==} dependencies: @@ -7226,14 +6994,6 @@ packages: - '@types/react' - react - /@walletconnect/modal@2.5.9(react@18.2.0): - resolution: {integrity: sha512-Zs2RvPwbBNRdBhb50FuJCxi3FJltt1KSpI7odjU/x9GTpTOcSOkmR66PBCy2JvNA0+ztnS1Xs0LVEr3lu7/Jzw==} - dependencies: - '@walletconnect/modal-core': 2.5.9(react@18.2.0) - '@walletconnect/modal-ui': 2.5.9(react@18.2.0) - transitivePeerDependencies: - - react - /@walletconnect/modal@2.6.2(react@18.2.0): resolution: {integrity: sha512-eFopgKi8AjKf/0U4SemvcYw9zlLpx9njVN8sf6DAkowC2Md0gPU/UNEbH1Wwj407pEKnEds98pKWib1NN1ACoA==} dependencies: @@ -7288,17 +7048,17 @@ packages: dependencies: tslib: 1.14.1 - /@walletconnect/sign-client@2.8.1: - resolution: {integrity: sha512-6DbpjP9BED2YZOZdpVgYo0HwPBV7k99imnsdMFrTn16EFAxhuYP0/qPwum9d072oNMGWJSA6d4rzc8FHNtHsCA==} + /@walletconnect/sign-client@2.10.2(lokijs@1.5.12): + resolution: {integrity: sha512-vviSLV3f92I0bReX+OLr1HmbH0uIzYEQQFd1MzIfDk9PkfFT/LLAHhUnDaIAMkIdippqDcJia+5QEtT4JihL3Q==} dependencies: - '@walletconnect/core': 2.8.1 + '@walletconnect/core': 2.10.2(lokijs@1.5.12) '@walletconnect/events': 1.0.1 '@walletconnect/heartbeat': 1.2.1 '@walletconnect/jsonrpc-utils': 1.0.8 '@walletconnect/logger': 2.0.1 '@walletconnect/time': 1.0.2 - '@walletconnect/types': 2.8.1 - '@walletconnect/utils': 2.8.1 + '@walletconnect/types': 2.10.2(lokijs@1.5.12) + '@walletconnect/utils': 2.10.2(lokijs@1.5.12) events: 3.3.0 transitivePeerDependencies: - '@react-native-async-storage/async-storage' @@ -7306,23 +7066,24 @@ packages: - lokijs - utf-8-validate - /@walletconnect/sign-client@2.8.6(lokijs@1.5.12): - resolution: {integrity: sha512-rOFTKTHP7oJfXgYHX7+SdB8VbcsEE3ZFG/bMdmZboWaBim1mrY3vUyDdKrNr0VgI3AwBiEQezQDfKxBX0pMSQQ==} + /@walletconnect/sign-client@2.8.1: + resolution: {integrity: sha512-6DbpjP9BED2YZOZdpVgYo0HwPBV7k99imnsdMFrTn16EFAxhuYP0/qPwum9d072oNMGWJSA6d4rzc8FHNtHsCA==} dependencies: - '@walletconnect/core': 2.8.6(lokijs@1.5.12) + '@walletconnect/core': 2.8.1 '@walletconnect/events': 1.0.1 '@walletconnect/heartbeat': 1.2.1 '@walletconnect/jsonrpc-utils': 1.0.8 '@walletconnect/logger': 2.0.1 '@walletconnect/time': 1.0.2 - '@walletconnect/types': 2.8.6(lokijs@1.5.12) - '@walletconnect/utils': 2.8.6(lokijs@1.5.12) + '@walletconnect/types': 2.8.1 + '@walletconnect/utils': 2.8.1 events: 3.3.0 transitivePeerDependencies: - '@react-native-async-storage/async-storage' - bufferutil - lokijs - utf-8-validate + dev: false /@walletconnect/signer-connection@1.8.0: resolution: {integrity: sha512-+YAaTAP52MWZJ2wWnqKClKCPlPHBo6reURFe0cWidLADh9mi/kPWGALZ5AENK22zpem1bbKV466rF5Rzvu0ehA==} @@ -7359,8 +7120,8 @@ packages: deprecated: 'WalletConnect''s v1 SDKs are now deprecated. Please upgrade to a v2 SDK. For details see: https://docs.walletconnect.com/' dev: false - /@walletconnect/types@2.8.1: - resolution: {integrity: sha512-MLISp85b+27vVkm3Wkud+eYCwySXCdOrmn0yQCSN6DnRrrunrD05ksz4CXGP7h2oXUvvXPDt/6lXBf1B4AfqrA==} + /@walletconnect/types@2.10.2(lokijs@1.5.12): + resolution: {integrity: sha512-luNV+07Wdla4STi9AejseCQY31tzWKQ5a7C3zZZaRK/di+rFaAAb7YW04OP4klE7tw/mJRGPTlekZElmHxO8kQ==} dependencies: '@walletconnect/events': 1.0.1 '@walletconnect/heartbeat': 1.2.1 @@ -7372,8 +7133,8 @@ packages: - '@react-native-async-storage/async-storage' - lokijs - /@walletconnect/types@2.8.6(lokijs@1.5.12): - resolution: {integrity: sha512-Z/PFa3W1XdxeTcCtdR6lUsFgZfU/69wWJBPyclPwn7cu1+eriuCr6XZXQpJjib3flU+HnwHiXeUuqZaheehPxw==} + /@walletconnect/types@2.8.1: + resolution: {integrity: sha512-MLISp85b+27vVkm3Wkud+eYCwySXCdOrmn0yQCSN6DnRrrunrD05ksz4CXGP7h2oXUvvXPDt/6lXBf1B4AfqrA==} dependencies: '@walletconnect/events': 1.0.1 '@walletconnect/heartbeat': 1.2.1 @@ -7384,46 +7145,48 @@ packages: transitivePeerDependencies: - '@react-native-async-storage/async-storage' - lokijs + dev: false - /@walletconnect/universal-provider@2.8.1(debug@4.3.4): - resolution: {integrity: sha512-6shgE4PM/S+GEh9oTWMloHZlt2BLsCitRn9tBh2Vf+jZiGlug3WNm+tBc/Fo6ILyHuzeYPbkzCM67AxcutOHGQ==} + /@walletconnect/universal-provider@2.10.2(lokijs@1.5.12): + resolution: {integrity: sha512-wFgI0LbQ3D56sgaUMsgOHCM5m8WLxiC71BGuCKQfApgsbNMVKugYVy2zWHyUyi8sqTQHI+uSaVpDev4UHq9LEw==} dependencies: '@walletconnect/jsonrpc-http-connection': 1.0.7 '@walletconnect/jsonrpc-provider': 1.0.13 '@walletconnect/jsonrpc-types': 1.0.3 '@walletconnect/jsonrpc-utils': 1.0.8 '@walletconnect/logger': 2.0.1 - '@walletconnect/sign-client': 2.8.1 - '@walletconnect/types': 2.8.1 - '@walletconnect/utils': 2.8.1 - eip1193-provider: 1.0.1(debug@4.3.4) + '@walletconnect/sign-client': 2.10.2(lokijs@1.5.12) + '@walletconnect/types': 2.10.2(lokijs@1.5.12) + '@walletconnect/utils': 2.10.2(lokijs@1.5.12) events: 3.3.0 transitivePeerDependencies: - '@react-native-async-storage/async-storage' - bufferutil - - debug - encoding - lokijs - utf-8-validate - /@walletconnect/universal-provider@2.8.6(lokijs@1.5.12): - resolution: {integrity: sha512-ln1RVv8+oHu9enOJ/oVkjiarneB+4vJCk16znOklIN2JtDHwB8iObDHlQH3UE6ynNTw1iRvaGuPR4g+YdIfB6w==} + /@walletconnect/universal-provider@2.8.1(debug@4.3.4): + resolution: {integrity: sha512-6shgE4PM/S+GEh9oTWMloHZlt2BLsCitRn9tBh2Vf+jZiGlug3WNm+tBc/Fo6ILyHuzeYPbkzCM67AxcutOHGQ==} dependencies: '@walletconnect/jsonrpc-http-connection': 1.0.7 '@walletconnect/jsonrpc-provider': 1.0.13 '@walletconnect/jsonrpc-types': 1.0.3 '@walletconnect/jsonrpc-utils': 1.0.8 '@walletconnect/logger': 2.0.1 - '@walletconnect/sign-client': 2.8.6(lokijs@1.5.12) - '@walletconnect/types': 2.8.6(lokijs@1.5.12) - '@walletconnect/utils': 2.8.6(lokijs@1.5.12) + '@walletconnect/sign-client': 2.8.1 + '@walletconnect/types': 2.8.1 + '@walletconnect/utils': 2.8.1 + eip1193-provider: 1.0.1(debug@4.3.4) events: 3.3.0 transitivePeerDependencies: - '@react-native-async-storage/async-storage' - bufferutil + - debug - encoding - lokijs - utf-8-validate + dev: false /@walletconnect/utils@1.8.0: resolution: {integrity: sha512-zExzp8Mj1YiAIBfKNm5u622oNw44WOESzo6hj+Q3apSMIb0Jph9X3GDIdbZmvVZsNPxWDL7uodKgZcCInZv2vA==} @@ -7437,8 +7200,8 @@ packages: query-string: 6.13.5 dev: false - /@walletconnect/utils@2.8.1: - resolution: {integrity: sha512-d6p9OX3v70m6ijp+j4qvqiQZQU1vbEHN48G8HqXasyro3Z+N8vtcB5/gV4pTYsbWgLSDtPHj49mzbWQ0LdIdTw==} + /@walletconnect/utils@2.10.2(lokijs@1.5.12): + resolution: {integrity: sha512-syxXRpc2yhSknMu3IfiBGobxOY7fLfLTJuw+ppKaeO6WUdZpIit3wfuGOcc0Ms3ZPFCrGfyGOoZsCvgdXtptRg==} dependencies: '@stablelib/chacha20poly1305': 1.0.1 '@stablelib/hkdf': 1.0.1 @@ -7448,7 +7211,7 @@ packages: '@walletconnect/relay-api': 1.0.9 '@walletconnect/safe-json': 1.0.2 '@walletconnect/time': 1.0.2 - '@walletconnect/types': 2.8.1 + '@walletconnect/types': 2.10.2(lokijs@1.5.12) '@walletconnect/window-getters': 1.0.1 '@walletconnect/window-metadata': 1.0.1 detect-browser: 5.3.0 @@ -7458,8 +7221,8 @@ packages: - '@react-native-async-storage/async-storage' - lokijs - /@walletconnect/utils@2.8.6(lokijs@1.5.12): - resolution: {integrity: sha512-wcy6e5+COYo7tfNnW8YqidnATdJDIW6vDiWWE7A1F78Sl/VflkaevB9cIgyn8eLdxC1SxXgGoeC2oLP90nnHJg==} + /@walletconnect/utils@2.8.1: + resolution: {integrity: sha512-d6p9OX3v70m6ijp+j4qvqiQZQU1vbEHN48G8HqXasyro3Z+N8vtcB5/gV4pTYsbWgLSDtPHj49mzbWQ0LdIdTw==} dependencies: '@stablelib/chacha20poly1305': 1.0.1 '@stablelib/hkdf': 1.0.1 @@ -7469,7 +7232,7 @@ packages: '@walletconnect/relay-api': 1.0.9 '@walletconnect/safe-json': 1.0.2 '@walletconnect/time': 1.0.2 - '@walletconnect/types': 2.8.6(lokijs@1.5.12) + '@walletconnect/types': 2.8.1 '@walletconnect/window-getters': 1.0.1 '@walletconnect/window-metadata': 1.0.1 detect-browser: 5.3.0 @@ -7478,6 +7241,7 @@ packages: transitivePeerDependencies: - '@react-native-async-storage/async-storage' - lokijs + dev: false /@walletconnect/window-getters@1.0.0: resolution: {integrity: sha512-xB0SQsLaleIYIkSsl43vm8EwETpBzJ2gnzk7e0wMF3ktqiTGS6TFHxcprMl5R44KKh4tCcHCJwolMCaDSwtAaA==} @@ -7500,43 +7264,63 @@ packages: '@walletconnect/window-getters': 1.0.1 tslib: 1.14.1 - /@web3modal/core@2.6.2(react@18.2.0): - resolution: {integrity: sha512-7gi618Z+bFOwEzhdxROt4AC8N45oiPHJFEA0AX3PxhB+ni5Usc1VQ03jQhk7DnQLDnQq+3hCY71F1escdxkdBA==} + /@web3modal/core@3.1.0(react@18.2.0): + resolution: {integrity: sha512-gXzUCVr4QkgkwxYgu7PBZIUsv3MEJRsYXUDSCU0LZz5BLXnMVSj0+YPhQ1msZLPCo0el/MTPtAzwu0VEOMijTQ==} dependencies: - buffer: 6.0.3 - valtio: 1.10.6(react@18.2.0) + valtio: 1.11.2(react@18.2.0) transitivePeerDependencies: + - '@types/react' - react dev: false - /@web3modal/ethereum@2.6.2(@wagmi/core@1.3.6)(viem@1.16.0): - resolution: {integrity: sha512-8QCzJj0+x6y/7V++DQnXdPjdmMvq+zm/Fl8CEKhNlni9p4H406q7ramjdJEu1Bk4xtCklYh/aU3ZGR5wUIDysA==} - peerDependencies: - '@wagmi/core': '>=1' - viem: '>=1' + /@web3modal/polyfills@3.1.0: + resolution: {integrity: sha512-y830qGJW16k7EZe6N2LIhcLWsHv+TkgC4FuARCSQzJPvVsKi/XsKXGk4Fbrv75nETF7AqCiFrEFQVGnAc7mg8A==} dependencies: - '@wagmi/core': 1.3.6(lokijs@1.5.12)(react@18.2.0)(typescript@5.2.2)(viem@1.16.0) - viem: 1.16.0(typescript@5.2.2) + buffer: 6.0.3 dev: false - /@web3modal/html@2.6.2(react@18.2.0): - resolution: {integrity: sha512-SUm0lUyd+Dps7CCWbv0w5RZgqIHNJF/omTwZJ8yZckbE7JjhxnoFDjGNZI3AVJo0HSEZHWilDQvhF2NaLv97eg==} + /@web3modal/scaffold@3.1.0(react@18.2.0): + resolution: {integrity: sha512-jxCsvkGvVTSds/ezwrX27Xkhlr4IPVeewKAiGxPNZKg9ZGkZ8c+7I2XZnTCKB5XQZvLgqIpGmSYhy4OqAKbHVg==} dependencies: - '@web3modal/core': 2.6.2(react@18.2.0) - '@web3modal/ui': 2.6.2(react@18.2.0) + '@web3modal/core': 3.1.0(react@18.2.0) + '@web3modal/ui': 3.1.0 + lit: 3.0.0 transitivePeerDependencies: + - '@types/react' - react dev: false - /@web3modal/ui@2.6.2(react@18.2.0): - resolution: {integrity: sha512-bhBNsookaqkTdLjyERBA7XM9KV8XPQ2bWAGd3roIgAFxLlaoWqrV0pPZHLtp+C97AglV4mbeqvFsHZ0jwpm8lw==} + /@web3modal/ui@3.1.0: + resolution: {integrity: sha512-8Av6psGG/rO5M+5s+I7l2ESUWfeKkeXMIz/Bp2pP3a3yJ+EfO3V4kN1lO/bnbquMYvO+ETmvUXprvcBPMizSBQ==} dependencies: - '@web3modal/core': 2.6.2(react@18.2.0) - lit: 2.7.5 - motion: 10.16.2 + lit: 3.0.0 qrcode: 1.5.3 + dev: false + + /@web3modal/wagmi@3.1.0(@wagmi/core@1.4.5)(typescript@5.2.2)(viem@1.16.6): + resolution: {integrity: sha512-PSzhHtj2GTY+36d6lbfzl4EVeuzA4XcMOW7+/CyLFzUDpG4BI5fsKrDbc7NqZU6L6BjN9dPi/oZO/Q+PM8MrPw==} + peerDependencies: + '@wagmi/core': '>=1' + viem: '>=1' + peerDependenciesMeta: + react: + optional: true + react-dom: + optional: true + vue: + optional: true + dependencies: + '@wagmi/core': 1.4.5(lokijs@1.5.12)(react@18.2.0)(typescript@5.2.2)(viem@1.16.6) + '@web3modal/polyfills': 3.1.0 + '@web3modal/scaffold': 3.1.0(react@18.2.0) + viem: 1.16.6(typescript@5.2.2) + optionalDependencies: + react: 18.2.0 + react-dom: 18.2.0(react@18.2.0) + vue: 3.3.7(typescript@5.2.2) transitivePeerDependencies: - - react + - '@types/react' + - typescript dev: false /@webassemblyjs/ast@1.11.6: @@ -7708,19 +7492,7 @@ packages: optional: true dependencies: typescript: 4.6.4 - - /abitype@0.8.1(typescript@4.6.4)(zod@3.22.4): - resolution: {integrity: sha512-n8Di6AWb3i7HnEkBvecU6pG0a5nj5YwMvdAIwPLsQK95ulRy/XS113s/RXvSfTX1iOQJYFrEO3/q4SMWu7OwTA==} - peerDependencies: - typescript: '>=4.9.4' - zod: ^3 >=3.19.1 - peerDependenciesMeta: - zod: - optional: true - dependencies: - typescript: 4.6.4 - zod: 3.22.4 - dev: true + dev: false /abitype@0.8.1(typescript@5.2.2)(zod@3.22.4): resolution: {integrity: sha512-n8Di6AWb3i7HnEkBvecU6pG0a5nj5YwMvdAIwPLsQK95ulRy/XS113s/RXvSfTX1iOQJYFrEO3/q4SMWu7OwTA==} @@ -7735,19 +7507,6 @@ packages: zod: 3.22.4 dev: true - /abitype@0.8.7(typescript@4.6.4)(zod@3.22.4): - resolution: {integrity: sha512-wQ7hV8Yg/yKmGyFpqrNZufCxbszDe5es4AZGYPBitocfSqXtjrTG9JMWFcc4N30ukl2ve48aBTwt7NJxVQdU3w==} - peerDependencies: - typescript: '>=5.0.4' - zod: ^3 >=3.19.1 - peerDependenciesMeta: - zod: - optional: true - dependencies: - typescript: 4.6.4 - zod: 3.22.4 - dev: true - /abitype@0.8.7(typescript@5.2.2)(zod@3.22.4): resolution: {integrity: sha512-wQ7hV8Yg/yKmGyFpqrNZufCxbszDe5es4AZGYPBitocfSqXtjrTG9JMWFcc4N30ukl2ve48aBTwt7NJxVQdU3w==} peerDependencies: @@ -8421,6 +8180,7 @@ packages: follow-redirects: 1.15.3(debug@4.3.4) transitivePeerDependencies: - debug + dev: false /axios@1.4.0(debug@4.3.4): resolution: {integrity: sha512-S4XCWMEmzvo64T9GfvQDOXgYRDJ/wsSZc7Jvdgx5u1sd0JwsuPLqb3SYmusag+edF6ziyMensPVqLTSc1PiSEA==} @@ -10793,7 +10553,7 @@ packages: postcss-modules-values: 4.0.0(postcss@8.4.31) postcss-value-parser: 4.2.0 semver: 7.5.4 - webpack: 5.89.0 + webpack: 5.89.0(esbuild@0.15.13) dev: true /css-select@4.3.0: @@ -11789,6 +11549,7 @@ packages: - bufferutil - debug - utf-8-validate + dev: false /electron-to-chromium@1.4.554: resolution: {integrity: sha512-Q0umzPJjfBrrj8unkONTgbKQXzXRrH7sVV7D9ea2yBV3Oaogz991yhbpfvo2LMNkJItmruXTEzVpP9cp7vaIiQ==} @@ -12691,28 +12452,6 @@ packages: - typescript dev: true - /eslint-plugin-jest@27.2.1(@typescript-eslint/eslint-plugin@6.7.5)(eslint@7.32.0)(jest@27.5.1)(typescript@4.6.4): - resolution: {integrity: sha512-l067Uxx7ZT8cO9NJuf+eJHvt6bqJyz2Z29wykyEdz/OtmcELQl2MQGQLX8J94O1cSJWAwUSEvCjwjA7KEK3Hmg==} - engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} - peerDependencies: - '@typescript-eslint/eslint-plugin': ^5.0.0 - eslint: ^7.0.0 || ^8.0.0 - jest: '*' - peerDependenciesMeta: - '@typescript-eslint/eslint-plugin': - optional: true - jest: - optional: true - dependencies: - '@typescript-eslint/eslint-plugin': 6.7.5(@typescript-eslint/parser@5.16.0)(eslint@7.32.0)(typescript@4.6.4) - '@typescript-eslint/utils': 5.62.0(eslint@7.32.0)(typescript@4.6.4) - eslint: 7.32.0 - jest: 27.5.1 - transitivePeerDependencies: - - supports-color - - typescript - dev: true - /eslint-plugin-n@16.2.0(eslint@8.51.0): resolution: {integrity: sha512-AQER2jEyQOt1LG6JkGJCCIFotzmlcCZFur2wdKrp1JX2cNotC7Ae0BcD/4lLv3lUAArM9uNS8z/fsvXTd0L71g==} engines: {node: '>=16.0.0'} @@ -13631,6 +13370,7 @@ packages: transitivePeerDependencies: - bufferutil - utf-8-validate + dev: false /ethers@5.7.2: resolution: {integrity: sha512-wswUsmWo1aOK8rR7DIKiWSw9DbLWe6x98Jrn8wcTflTVvaXhAMaB5zGAXy0GYQEQp9iO1iSHWVyARQm11zUtyg==} @@ -14929,7 +14669,7 @@ packages: vue-loader: 15.10.2(css-loader@6.8.1)(prettier@3.0.3)(vue-template-compiler@2.7.14)(webpack@5.89.0) vue-router: 3.6.5(vue@2.7.14) vue-template-compiler: 2.7.14 - webpack: 5.89.0 + webpack: 5.89.0(esbuild@0.15.13) transitivePeerDependencies: - '@swc/core' - '@vue/compiler-sfc' @@ -15424,7 +15164,7 @@ packages: lodash: 4.17.21 pretty-error: 4.0.0 tapable: 2.2.1 - webpack: 5.89.0 + webpack: 5.89.0(esbuild@0.15.13) dev: true /htmlparser2@6.1.0: @@ -16203,13 +15943,6 @@ packages: ws: 8.12.0 dev: true - /isows@1.0.2(ws@8.13.0): - resolution: {integrity: sha512-ohHPFvRjcGLLA7uqHjIcGf5M3OrzN/k9QVYMGOvCppV/HY2GZdz7oFsJHT70ZXEL7ImrOGE1F9M0SovDGSfT6Q==} - peerDependencies: - ws: '*' - dependencies: - ws: 8.13.0 - /isows@1.0.3(ws@8.13.0): resolution: {integrity: sha512-2cKei4vlmg2cxEjm3wVSqn8pcoRF/LX/wpifuuNquFO4SQmPwarClT+SUCA2lt+l581tTeZIPIZuIDo2jWN1fg==} peerDependencies: @@ -17478,17 +17211,24 @@ packages: '@lit/reactive-element': 1.6.3 lit-html: 2.8.0 + /lit-element@4.0.0: + resolution: {integrity: sha512-N6+f7XgusURHl69DUZU6sTBGlIN+9Ixfs3ykkNDfgfTkDYGGOWwHAYBhDqVswnFGyWgQYR2KiSpu4J76Kccs/A==} + dependencies: + '@lit-labs/ssr-dom-shim': 1.1.2 + '@lit/reactive-element': 2.0.0 + lit-html: 3.0.0 + dev: false + /lit-html@2.8.0: resolution: {integrity: sha512-o9t+MQM3P4y7M7yNzqAyjp7z+mQGa4NS4CxiyLqFPyFWyc4O+nodLrkrxSaCTrla6M5YOLaT3RpbbqjszB5g3Q==} dependencies: '@types/trusted-types': 2.0.4 - /lit@2.7.5: - resolution: {integrity: sha512-i/cH7Ye6nBDUASMnfwcictBnsTN91+aBjXoTHF2xARghXScKxpD4F4WYI+VLXg9lqbMinDfvoI7VnZXjyHgdfQ==} + /lit-html@3.0.0: + resolution: {integrity: sha512-DNJIE8dNY0dQF2Gs0sdMNUppMQT2/CvV4OVnSdg7BXAsGqkVwsE5bqQ04POfkYH5dBIuGnJYdFz5fYYyNnOxiA==} dependencies: - '@lit/reactive-element': 1.6.3 - lit-element: 3.3.3 - lit-html: 2.8.0 + '@types/trusted-types': 2.0.4 + dev: false /lit@2.8.0: resolution: {integrity: sha512-4Sc3OFX9QHOJaHbmTMk28SYgVxLN3ePDjg7hofEft2zWlehFL3LiAuapWc4U/kYwMYJSh2hTCPZ6/LIC7ii0MA==} @@ -17497,6 +17237,14 @@ packages: lit-element: 3.3.3 lit-html: 2.8.0 + /lit@3.0.0: + resolution: {integrity: sha512-nQ0teRzU1Kdj++VdmttS2WvIen8M79wChJ6guRKIIym2M3Ansg3Adj9O6yuQh2IpjxiUXlNuS81WKlQ4iL3BmA==} + dependencies: + '@lit/reactive-element': 2.0.0 + lit-element: 4.0.0 + lit-html: 3.0.0 + dev: false + /load-json-file@1.1.0: resolution: {integrity: sha512-cy7ZdNRXdablkXYNI049pthVeXFurRyb9+hA/dZzerZ0pGTx42z+y+ssxBaVV2l70t1muq5IdKhn4UtcoGUY9A==} engines: {node: '>=0.10.0'} @@ -23385,30 +23133,6 @@ packages: webpack: 5.89.0(esbuild@0.15.13) dev: true - /terser-webpack-plugin@5.3.9(webpack@5.89.0): - resolution: {integrity: sha512-ZuXsqE07EcggTWQjXUj+Aot/OMcD0bMKGgF63f7UxYcu5/AJF53aIpK1YoP5xR9l6s/Hy2b+t1AM0bLNPRuhwA==} - engines: {node: '>= 10.13.0'} - peerDependencies: - '@swc/core': '*' - esbuild: '*' - uglify-js: '*' - webpack: ^5.1.0 - peerDependenciesMeta: - '@swc/core': - optional: true - esbuild: - optional: true - uglify-js: - optional: true - dependencies: - '@jridgewell/trace-mapping': 0.3.19 - jest-worker: 27.5.1 - schema-utils: 3.3.0 - serialize-javascript: 6.0.1 - terser: 5.22.0 - webpack: 5.89.0 - dev: true - /terser@5.22.0: resolution: {integrity: sha512-hHZVLgRA2z4NWcN6aS5rQDc+7Dcy58HOf2zbYwmFcQ+ua3h6eEFf5lIDKTzbWwlazPyOZsFQO8V80/IjVNExEw==} engines: {node: '>=10'} @@ -24594,19 +24318,6 @@ packages: spdx-expression-parse: 3.0.1 dev: true - /valtio@1.10.6(react@18.2.0): - resolution: {integrity: sha512-SxN1bHUmdhW6V8qsQTpCgJEwp7uHbntuH0S9cdLQtiohuevwBksbpXjwj5uDMA7bLwg1WKyq9sEpZrx3TIMrkA==} - engines: {node: '>=12.20.0'} - peerDependencies: - react: '>=16.8' - peerDependenciesMeta: - react: - optional: true - dependencies: - proxy-compare: 2.5.1 - react: 18.2.0 - use-sync-external-store: 1.2.0(react@18.2.0) - /valtio@1.11.2(react@18.2.0): resolution: {integrity: sha512-1XfIxnUXzyswPAPXo1P3Pdx2mq/pIqZICkWN60Hby0d9Iqb+MEIpqgYVlbflvHdrp2YR/q3jyKWRPJJ100yxaw==} engines: {node: '>=12.20.0'} @@ -24691,25 +24402,6 @@ packages: vfile-message: 4.0.2 dev: false - /viem@0.3.50(typescript@4.6.4)(zod@3.22.4): - resolution: {integrity: sha512-s+LxCYZTR9F/qPk1/n1YDVAX9vSeVz7GraqBZWGrDuenCJxo9ArCoIceJ6ksI0WwSeNzcZ0VVbD/kWRzTxkipw==} - dependencies: - '@adraffy/ens-normalize': 1.9.0 - '@noble/curves': 1.0.0 - '@noble/hashes': 1.3.0 - '@scure/bip32': 1.3.0 - '@scure/bip39': 1.2.0 - '@wagmi/chains': 1.0.0(typescript@4.6.4) - abitype: 0.8.7(typescript@4.6.4)(zod@3.22.4) - isomorphic-ws: 5.0.0(ws@8.12.0) - ws: 8.12.0 - transitivePeerDependencies: - - bufferutil - - typescript - - utf-8-validate - - zod - dev: true - /viem@0.3.50(typescript@5.2.2)(zod@3.22.4): resolution: {integrity: sha512-s+LxCYZTR9F/qPk1/n1YDVAX9vSeVz7GraqBZWGrDuenCJxo9ArCoIceJ6ksI0WwSeNzcZ0VVbD/kWRzTxkipw==} dependencies: @@ -24729,28 +24421,6 @@ packages: - zod dev: true - /viem@1.16.0(typescript@5.2.2): - resolution: {integrity: sha512-noRMxaMubiLbVrZ0tXKxUKNwle0QtF0wO6kBOWnm6wg6XIqptSW7xhFzrFdDRp8Jduu5rwwkCB4Tokd5MtFRtw==} - peerDependencies: - typescript: '>=5.0.4' - peerDependenciesMeta: - typescript: - optional: true - dependencies: - '@adraffy/ens-normalize': 1.9.4 - '@noble/curves': 1.2.0 - '@noble/hashes': 1.3.2 - '@scure/bip32': 1.3.2 - '@scure/bip39': 1.2.1 - abitype: 0.9.8(typescript@5.2.2) - isows: 1.0.2(ws@8.13.0) - typescript: 5.2.2 - ws: 8.13.0 - transitivePeerDependencies: - - bufferutil - - utf-8-validate - - zod - /viem@1.16.6(typescript@5.2.2): resolution: {integrity: sha512-jcWcFQ+xzIfDwexwPJRvCuCRJKEkK9iHTStG7mpU5MmuSBpACs4nATBDyXNFtUiyYTFzLlVEwWkt68K0nCSImg==} peerDependencies: @@ -25023,7 +24693,7 @@ packages: vue-hot-reload-api: 2.3.4 vue-style-loader: 4.1.3 vue-template-compiler: 2.7.14 - webpack: 5.89.0 + webpack: 5.89.0(esbuild@0.15.13) transitivePeerDependencies: - arc-templates - atpl @@ -25113,6 +24783,24 @@ packages: csstype: 3.1.2 dev: true + /vue@3.3.7(typescript@5.2.2): + resolution: {integrity: sha512-YEMDia1ZTv1TeBbnu6VybatmSteGOS3A3YgfINOfraCbf85wdKHzscD6HSS/vB4GAtI7sa1XPX7HcQaJ1l24zA==} + requiresBuild: true + peerDependencies: + typescript: '*' + peerDependenciesMeta: + typescript: + optional: true + dependencies: + '@vue/compiler-dom': 3.3.7 + '@vue/compiler-sfc': 3.3.7 + '@vue/runtime-dom': 3.3.7 + '@vue/server-renderer': 3.3.7(vue@3.3.7) + '@vue/shared': 3.3.7 + typescript: 5.2.2 + dev: false + optional: true + /w3c-hr-time@1.0.2: resolution: {integrity: sha512-z8P5DvDNjKDoFIHK7q8r8lackT6l+jo/Ye3HOle7l9nICP9lf1Ci25fy9vHd0JOWewkIFzXIEig3TdKT7JQ5fQ==} deprecated: Use your platform's native performance.now() and performance.timeOrigin. @@ -25166,6 +24854,39 @@ packages: - supports-color - utf-8-validate - zod + dev: false + + /wagmi@1.4.5(lokijs@1.5.12)(react@18.2.0)(typescript@5.2.2)(viem@1.16.6): + resolution: {integrity: sha512-Ph62E6cO5n2Z8Z5LTyZrkaNprxTsbC4w0qZJT4OJdXrEELziI8z/b4FO6amVFXdu2rDp/wpvF56e4mhKC8/Kdw==} + peerDependencies: + react: '>=17.0.0' + typescript: '>=5.0.4' + viem: '>=0.3.35' + peerDependenciesMeta: + typescript: + optional: true + dependencies: + '@tanstack/query-sync-storage-persister': 4.36.1 + '@tanstack/react-query': 4.36.1(react@18.2.0) + '@tanstack/react-query-persist-client': 4.36.1(@tanstack/react-query@4.36.1) + '@wagmi/core': 1.4.5(lokijs@1.5.12)(react@18.2.0)(typescript@5.2.2)(viem@1.16.6) + abitype: 0.8.7(typescript@5.2.2)(zod@3.22.4) + react: 18.2.0 + typescript: 5.2.2 + use-sync-external-store: 1.2.0(react@18.2.0) + viem: 1.16.6(typescript@5.2.2) + transitivePeerDependencies: + - '@react-native-async-storage/async-storage' + - '@types/react' + - bufferutil + - encoding + - immer + - lokijs + - react-dom + - react-native + - supports-color + - utf-8-validate + - zod /walker@1.0.8: resolution: {integrity: sha512-ts/8E8l5b7kY0vlWLewOkDXMmPdLcVV4GmOQLyxuSswIJsweeFZtAsMF7k1Nszz+TYBQrlYRmzOnr398y1JemQ==} @@ -25579,46 +25300,6 @@ packages: resolution: {integrity: sha512-kyDivFZ7ZM0BVOUteVbDFhlRt7Ah/CSPwJdi8hBpkK7QLumUqdLtVfm/PX/hkcnrvr0i77fO5+TjZ94Pe+C9iw==} dev: true - /webpack@5.89.0: - resolution: {integrity: sha512-qyfIC10pOr70V+jkmud8tMfajraGCZMBWJtrmuBymQKCrLTRejBI8STDp1MCyZu/QTdZSeacCQYpYNQVOzX5kw==} - engines: {node: '>=10.13.0'} - hasBin: true - peerDependencies: - webpack-cli: '*' - peerDependenciesMeta: - webpack-cli: - optional: true - dependencies: - '@types/eslint-scope': 3.7.5 - '@types/estree': 1.0.2 - '@webassemblyjs/ast': 1.11.6 - '@webassemblyjs/wasm-edit': 1.11.6 - '@webassemblyjs/wasm-parser': 1.11.6 - acorn: 8.10.0 - acorn-import-assertions: 1.9.0(acorn@8.10.0) - browserslist: 4.22.1 - chrome-trace-event: 1.0.3 - enhanced-resolve: 5.15.0 - es-module-lexer: 1.3.1 - eslint-scope: 5.1.1 - events: 3.3.0 - glob-to-regexp: 0.4.1 - graceful-fs: 4.2.11 - json-parse-even-better-errors: 2.3.1 - loader-runner: 4.3.0 - mime-types: 2.1.35 - neo-async: 2.6.2 - schema-utils: 3.3.0 - tapable: 2.2.1 - terser-webpack-plugin: 5.3.9(webpack@5.89.0) - watchpack: 2.4.0 - webpack-sources: 3.2.3 - transitivePeerDependencies: - - '@swc/core' - - esbuild - - uglify-js - dev: true - /webpack@5.89.0(esbuild@0.15.13): resolution: {integrity: sha512-qyfIC10pOr70V+jkmud8tMfajraGCZMBWJtrmuBymQKCrLTRejBI8STDp1MCyZu/QTdZSeacCQYpYNQVOzX5kw==} engines: {node: '>=10.13.0'} @@ -26287,3 +25968,7 @@ packages: transitivePeerDependencies: - supports-color dev: true + +settings: + autoInstallPeers: true + excludeLinksFromLockfile: false From 7363b6407c79443e785f0bdbdc58346fbb95d44f Mon Sep 17 00:00:00 2001 From: David Date: Fri, 27 Oct 2023 22:06:57 +0800 Subject: [PATCH 79/87] feat(protocol): update A6 configurations (#15025) Co-authored-by: Daniel Wang Co-authored-by: Daniel Wang <99078276+dantaik@users.noreply.github.com> Co-authored-by: D <51912515+adaki2004@users.noreply.github.com> --- packages/protocol/contracts/L1/TaikoL1.sol | 27 +++++++--- .../contracts/L1/libs/LibVerifying.sol | 2 +- .../L1/tiers/TaikoA6TierProvider.sol | 46 +++++++++------- packages/protocol/contracts/L2/TaikoL2.sol | 33 +++++++----- .../L2/TaikoL2EIP1559Configurable.sol | 52 +++++++++++++++++++ packages/protocol/genesis/test_config.json | 5 +- packages/protocol/script/DeployOnL1.s.sol | 4 +- packages/protocol/test/L1/TaikoL1.t.sol | 4 +- .../test/L1/TaikoL1LibProvingWithTiers.t.sol | 2 +- packages/protocol/test/L2/TaikoL2.t.sol | 23 +++++--- .../utils/generate_genesis/taikoL2.ts | 1 - 11 files changed, 140 insertions(+), 59 deletions(-) create mode 100644 packages/protocol/contracts/L2/TaikoL2EIP1559Configurable.sol diff --git a/packages/protocol/contracts/L1/TaikoL1.sol b/packages/protocol/contracts/L1/TaikoL1.sol index 7402a5902a..bff326bafc 100644 --- a/packages/protocol/contracts/L1/TaikoL1.sol +++ b/packages/protocol/contracts/L1/TaikoL1.sol @@ -258,18 +258,31 @@ contract TaikoL1 is /// @return Config struct containing configuration parameters. function getConfig() public - pure + view virtual returns (TaikoData.Config memory) { + // All hard-coded configurations: + // - treasury: 0xdf09A0afD09a63fb04ab3573922437e1e637dE8b + // - blockMaxTxs: 150 (limited by the PSE zkEVM circuits) + // - anchorGasLimit: 250_000 (based on internal devnet, its ~220_000 + // after 256 L2 blocks) return TaikoData.Config({ - chainId: 167_007, - blockMaxProposals: 403_200, - blockRingBufferSize: 403_210, + chainId: 167_008, + // Assume the block time is 3s, the protocol will allow ~1 month of + // new blocks without any verification. + blockMaxProposals: 864_000, + blockRingBufferSize: 864_100, + // Can be overridden by the tier config. maxBlocksToVerifyPerProposal: 10, - blockMaxGasLimit: 8_000_000, + // Limited by the PSE zkEVM circuits. + blockMaxGasLimit: 15_000_000, + // Each go-ethereum transaction has a size limit of 128KB, + // and right now txList is still saved in calldata, so we set it + // to 120KB. blockMaxTxListBytes: 120_000, - livenessBond: 10_240e18, + livenessBond: 250e18, // 250 Taiko token + // ETH deposit related. ethDepositRingBufferSize: 1024, ethDepositMinCountPerBlock: 8, ethDepositMaxCountPerBlock: 32, @@ -280,7 +293,7 @@ contract TaikoL1 is }); } - function isConfigValid() public pure returns (bool) { + function isConfigValid() public view returns (bool) { return LibVerifying.isConfigValid(getConfig()); } } diff --git a/packages/protocol/contracts/L1/libs/LibVerifying.sol b/packages/protocol/contracts/L1/libs/LibVerifying.sol index 4762d571e7..555fec3220 100644 --- a/packages/protocol/contracts/L1/libs/LibVerifying.sol +++ b/packages/protocol/contracts/L1/libs/LibVerifying.sol @@ -224,7 +224,7 @@ library LibVerifying { || config.blockMaxProposals == 1 || config.blockRingBufferSize <= config.blockMaxProposals + 1 || config.blockMaxGasLimit == 0 || config.blockMaxTxListBytes == 0 - || config.blockMaxTxListBytes > 128 * 1024 // blob up to 128K + || config.blockMaxTxListBytes > 128 * 1024 // calldata up to 128K || config.livenessBond == 0 || config.ethDepositRingBufferSize <= 1 || config.ethDepositMinCountPerBlock == 0 || config.ethDepositMaxCountPerBlock diff --git a/packages/protocol/contracts/L1/tiers/TaikoA6TierProvider.sol b/packages/protocol/contracts/L1/tiers/TaikoA6TierProvider.sol index 83590d6fac..e5140cc736 100644 --- a/packages/protocol/contracts/L1/tiers/TaikoA6TierProvider.sol +++ b/packages/protocol/contracts/L1/tiers/TaikoA6TierProvider.sol @@ -9,10 +9,13 @@ pragma solidity ^0.8.20; import { ITierProvider, LibTiers } from "./ITierProvider.sol"; /// @title TaikoA6TierProvider +/// @dev Assuming liveness bound is 250TKO. +// Taiko token's total supply is 1 billion. Assuming block time is 2 second, and +// the cool down period is 2 days. In 2 days, we can have (2*86400/2)=86400 +// blocks. Assuming 10% tokens are used in bonds, then each block may use up to +// these many tokens: 1,000,000,000 * 10% / 86400=1157 TOK per block, which is +// about 722 USD. contract TaikoA6TierProvider is ITierProvider { - uint96 private constant UNIT = 10_000e18; // 10000 Taiko token - uint24 private constant COOLDOWN_BASE = 24 hours; - error TIER_NOT_FOUND(); function getTier(uint16 tierId) @@ -24,10 +27,10 @@ contract TaikoA6TierProvider is ITierProvider { if (tierId == LibTiers.TIER_OPTIMISTIC) { return ITierProvider.Tier({ verifierName: "tier_optimistic", - validityBond: 20 * UNIT, - contestBond: 20 * UNIT, - cooldownWindow: 4 hours + COOLDOWN_BASE, - provingWindow: 1 hours, + validityBond: 1000 ether, // TKO + contestBond: 1000 ether, // TKO + cooldownWindow: 24 hours, + provingWindow: 2 hours, maxBlocksToVerify: 10 }); } @@ -35,10 +38,10 @@ contract TaikoA6TierProvider is ITierProvider { if (tierId == LibTiers.TIER_SGX) { return ITierProvider.Tier({ verifierName: "tier_sgx", - validityBond: 10 * UNIT, - contestBond: 10 * UNIT, - cooldownWindow: 3 hours + COOLDOWN_BASE, - provingWindow: 2 hours, + validityBond: 500 ether, // TKO + contestBond: 500 ether, // TKO + cooldownWindow: 24 hours, + provingWindow: 4 hours, maxBlocksToVerify: 8 }); } @@ -46,10 +49,10 @@ contract TaikoA6TierProvider is ITierProvider { if (tierId == LibTiers.TIER_SGX_AND_PSE_ZKEVM) { return ITierProvider.Tier({ verifierName: "tier_sgx_and_pse_zkevm", - validityBond: 5 * UNIT, - contestBond: 5 * UNIT, - cooldownWindow: 2 hours + COOLDOWN_BASE, - provingWindow: 4 hours, + validityBond: 250 ether, // TKO + contestBond: 250 ether, // TKO + cooldownWindow: 24 hours, + provingWindow: 6 hours, maxBlocksToVerify: 6 }); } @@ -59,8 +62,8 @@ contract TaikoA6TierProvider is ITierProvider { verifierName: "tier_guardian", validityBond: 0, contestBond: 0, // not contestable - cooldownWindow: 1 hours + COOLDOWN_BASE, - provingWindow: 4 hours, + cooldownWindow: 24 hours, + provingWindow: 8 hours, maxBlocksToVerify: 4 }); } @@ -82,8 +85,11 @@ contract TaikoA6TierProvider is ITierProvider { } function getMinTier(uint256 rand) public pure override returns (uint16) { - if (rand % 1000 == 0) return LibTiers.TIER_SGX_AND_PSE_ZKEVM; - else if (rand % 100 == 0) return LibTiers.TIER_SGX; - else return LibTiers.TIER_OPTIMISTIC; + // 0.2% will be selected to require PSE zkEVM + SGX proofs. + if (rand % 500 == 0) return LibTiers.TIER_SGX_AND_PSE_ZKEVM; + // 10% will be selected to require SGX proofs. + if (rand % 10 == 0) return LibTiers.TIER_SGX; + // Other blocks are optimisitc, without validity proofs. + return LibTiers.TIER_OPTIMISTIC; } } diff --git a/packages/protocol/contracts/L2/TaikoL2.sol b/packages/protocol/contracts/L2/TaikoL2.sol index f9b9bd95ee..299310b9b3 100644 --- a/packages/protocol/contracts/L2/TaikoL2.sol +++ b/packages/protocol/contracts/L2/TaikoL2.sol @@ -25,8 +25,8 @@ contract TaikoL2 is EssentialContract, TaikoL2Signer, ICrossChainSync { using LibMath for uint256; struct Config { - uint64 gasTargetPerL1Block; - uint256 basefeeAdjustmentQuotient; + uint32 gasTargetPerL1Block; + uint8 basefeeAdjustmentQuotient; } // Mapping from L2 block numbers to their block hashes. @@ -36,12 +36,12 @@ contract TaikoL2 is EssentialContract, TaikoL2Signer, ICrossChainSync { // A hash to check the integrity of public inputs. bytes32 public publicInputHash; // slot 3 - uint128 public gasExcess; // slot 4 - uint64 public latestSyncedL1Height; // slot 5 + uint64 public gasExcess; // slot 4 + uint64 public latestSyncedL1Height; - uint256[145] private __gap; + uint256[146] private __gap; - event Anchored(bytes32 parentHash, uint128 gasExcess); + event Anchored(bytes32 parentHash, uint64 gasExcess); error L2_BASEFEE_MISMATCH(); error L2_INVALID_CHAIN_ID(); @@ -54,7 +54,7 @@ contract TaikoL2 is EssentialContract, TaikoL2Signer, ICrossChainSync { /// @param _addressManager Address of the {AddressManager} contract. function init( address _addressManager, - uint128 _gasExcess + uint64 _gasExcess ) external initializer @@ -172,8 +172,12 @@ contract TaikoL2 is EssentialContract, TaikoL2Signer, ICrossChainSync { } /// @notice Returns EIP1559 related configurations - function getConfig() public pure virtual returns (Config memory config) { - config.gasTargetPerL1Block = 15 * 1e6 * 10; // 10x Ethereum gas target + function getConfig() public view virtual returns (Config memory config) { + // 4x Ethereum gas target, if we assume most of the time, L2 block time + // is 3s, and each block is full (gasUsed is 15_000_000), then its + // ~60_000_000, if the network is congester than that, the base fee + // will increase. + config.gasTargetPerL1Block = 15 * 1e6 * 4; config.basefeeAdjustmentQuotient = 8; } @@ -217,7 +221,7 @@ contract TaikoL2 is EssentialContract, TaikoL2Signer, ICrossChainSync { ) private view - returns (uint256 _basefee, uint128 _gasExcess) + returns (uint256 _basefee, uint64 _gasExcess) { // gasExcess being 0 indicate the dynamic 1559 base fee is disabled. if (gasExcess > 0) { @@ -229,17 +233,17 @@ contract TaikoL2 is EssentialContract, TaikoL2Signer, ICrossChainSync { // after each L1 block time, config.gasTarget more gas is issued, // the gas excess will be reduced accordingly. // Note that when latestSyncedL1Height is zero, we skip this step. - uint128 numL1Blocks; + uint256 numL1Blocks; if (latestSyncedL1Height > 0 && l1Height > latestSyncedL1Height) { numL1Blocks = l1Height - latestSyncedL1Height; } if (numL1Blocks > 0) { - uint128 issuance = numL1Blocks * config.gasTargetPerL1Block; + uint256 issuance = numL1Blocks * config.gasTargetPerL1Block; excess = excess > issuance ? excess - issuance : 1; } - _gasExcess = uint128(excess.min(type(uint128).max)); + _gasExcess = uint64(excess.min(type(uint64).max)); // The base fee per gas used by this block is the spot price at the // bonding curve, regardless the actual amount of gas used by this @@ -247,7 +251,8 @@ contract TaikoL2 is EssentialContract, TaikoL2Signer, ICrossChainSync { // block's base fee. _basefee = Lib1559Math.basefee( _gasExcess, - config.basefeeAdjustmentQuotient * config.gasTargetPerL1Block + uint256(config.basefeeAdjustmentQuotient) + * config.gasTargetPerL1Block ); } diff --git a/packages/protocol/contracts/L2/TaikoL2EIP1559Configurable.sol b/packages/protocol/contracts/L2/TaikoL2EIP1559Configurable.sol new file mode 100644 index 0000000000..9b82c39c7a --- /dev/null +++ b/packages/protocol/contracts/L2/TaikoL2EIP1559Configurable.sol @@ -0,0 +1,52 @@ +// SPDX-License-Identifier: MIT +// _____ _ _ _ _ +// |_ _|_ _(_) |_____ | | __ _| |__ ___ +// | |/ _` | | / / _ \ | |__/ _` | '_ (_-< +// |_|\__,_|_|_\_\___/ |____\__,_|_.__/__/ + +pragma solidity ^0.8.20; + +import { TaikoL2 } from "./TaikoL2.sol"; +import { Proxied } from "../common/Proxied.sol"; + +/// @title TaikoL2EIP1559Configurable +/// @notice Taiko L2 with a setter to change EIP-1559 configurations and states. +contract TaikoL2EIP1559Configurable is TaikoL2 { + Config private _config; + uint256[49] private __gap; + + event ConfigAndExcessChanged(Config config, uint64 gasExcess); + + error L2_INVALID_CONFIG(); + + /// @notice Sets EIP1559 configuration and gas excess. + /// @param config The new EIP1559 config. + /// @param newGasExcess The new gas excess + function setConfigAndExcess( + Config memory config, + uint64 newGasExcess + ) + external + virtual + onlyOwner + { + if (config.gasTargetPerL1Block == 0) revert L2_INVALID_CONFIG(); + if (config.basefeeAdjustmentQuotient == 0) revert L2_INVALID_CONFIG(); + + _config = config; + gasExcess = newGasExcess; + + emit ConfigAndExcessChanged(config, newGasExcess); + } + + function getConfig() public view override returns (Config memory) { + return _config; + } +} + +/// @title ProxiedTaikoL2EIP1559Configurable +/// @notice Proxied version of the TaikoL2EIP1559Configurable contract. +contract ProxiedTaikoL2EIP1559Configurable is + Proxied, + TaikoL2EIP1559Configurable +{ } diff --git a/packages/protocol/genesis/test_config.json b/packages/protocol/genesis/test_config.json index c747215a27..e736b82338 100644 --- a/packages/protocol/genesis/test_config.json +++ b/packages/protocol/genesis/test_config.json @@ -84,10 +84,7 @@ "ERC1155VaultProxy": "0x1000777700000000000000000000000000000009" }, "param1559": { - "yscale": "1679526101464767541687441923934", - "xscale": "6977415078", - "gasIssuedPerSecond": "2666666", - "gasExcess": "9695997576" + "gasExcess": "1" }, "predeployERC20": true } diff --git a/packages/protocol/script/DeployOnL1.s.sol b/packages/protocol/script/DeployOnL1.s.sol index 3e56306e24..056dd51e73 100644 --- a/packages/protocol/script/DeployOnL1.s.sol +++ b/packages/protocol/script/DeployOnL1.s.sol @@ -104,8 +104,8 @@ contract DeployOnL1 is Script { taikoToken.init.selector, abi.encode( addressManagerProxy, - "Taiko Token Eldfell", - "TTKOe", + "Taiko Token Katla", + "TTKOk", taikoTokenPremintRecipient ) ) diff --git a/packages/protocol/test/L1/TaikoL1.t.sol b/packages/protocol/test/L1/TaikoL1.t.sol index e8c9c1608b..35591d2b35 100644 --- a/packages/protocol/test/L1/TaikoL1.t.sol +++ b/packages/protocol/test/L1/TaikoL1.t.sol @@ -15,12 +15,12 @@ import { TaikoL1TestBase } from "./TaikoL1TestBase.sol"; contract TaikoL1_NoCooldown is TaikoL1 { function getConfig() public - pure + view override returns (TaikoData.Config memory config) { config = TaikoL1.getConfig(); - + // over-write the following config.maxBlocksToVerifyPerProposal = 0; config.blockMaxProposals = 10; config.blockRingBufferSize = 12; diff --git a/packages/protocol/test/L1/TaikoL1LibProvingWithTiers.t.sol b/packages/protocol/test/L1/TaikoL1LibProvingWithTiers.t.sol index 7e21eb9cdd..3ac5feae82 100644 --- a/packages/protocol/test/L1/TaikoL1LibProvingWithTiers.t.sol +++ b/packages/protocol/test/L1/TaikoL1LibProvingWithTiers.t.sol @@ -21,7 +21,7 @@ import { LibTiers } from "../../contracts/L1/tiers/ITierProvider.sol"; contract TaikoL1Tiers is TaikoL1 { function getConfig() public - pure + view override returns (TaikoData.Config memory config) { diff --git a/packages/protocol/test/L2/TaikoL2.t.sol b/packages/protocol/test/L2/TaikoL2.t.sol index a8c340152a..08221e0148 100644 --- a/packages/protocol/test/L2/TaikoL2.t.sol +++ b/packages/protocol/test/L2/TaikoL2.t.sol @@ -7,10 +7,12 @@ import { SafeCastUpgradeable } from "lib/openzeppelin-contracts-upgradeable/contracts/utils/math/SafeCastUpgradeable.sol"; import { AddressManager } from "../../contracts/common/AddressManager.sol"; import { SignalService } from "../../contracts/signal/SignalService.sol"; +import { TaikoL2EIP1559Configurable } from + "../../contracts/L2/TaikoL2EIP1559Configurable.sol"; import { TaikoL2 } from "../../contracts/L2/TaikoL2.sol"; import { TestBase } from "../TestBase.sol"; -contract SkipBasefeeCheckL2 is TaikoL2 { +contract SkipBasefeeCheckL2 is TaikoL2EIP1559Configurable { function skipFeeCheck() public pure override returns (bool) { return true; } @@ -26,7 +28,7 @@ contract TestTaikoL2 is TestBase { AddressManager public addressManager; SignalService public ss; - TaikoL2 public L2; + TaikoL2EIP1559Configurable public L2; SkipBasefeeCheckL2 public L2FeeSimulation; uint256 private logIndex; @@ -38,13 +40,20 @@ contract TestTaikoL2 is TestBase { ss.init(address(addressManager)); registerAddress("signal_service", address(ss)); - L2 = new TaikoL2(); - uint128 gasExcess = 0; + L2 = new TaikoL2EIP1559Configurable(); + uint64 gasExcess = 0; + uint8 quotient = 8; + uint32 gasTarget = 60_000_000; L2.init(address(addressManager), gasExcess); + L2.setConfigAndExcess(TaikoL2.Config(gasTarget, quotient), gasExcess); L2FeeSimulation = new SkipBasefeeCheckL2(); - gasExcess = 49_954_623_777; + gasExcess = 195_420_300_100; + L2FeeSimulation.init(address(addressManager), gasExcess); + L2FeeSimulation.setConfigAndExcess( + TaikoL2.Config(gasTarget, quotient), gasExcess + ); vm.roll(block.number + 1); vm.warp(block.timestamp + 30); @@ -89,7 +98,7 @@ contract TestTaikoL2 is TestBase { function test_simulation_lower_traffic() external { console2.log("LOW TRAFFIC STARTS"); // For parser - _simulation(100_000, 60_000_000, 1, 8); + _simulation(100_000, 10_000_000, 1, 8); console2.log("LOW TRAFFIC ENDS"); } @@ -101,7 +110,7 @@ contract TestTaikoL2 is TestBase { function test_simulation_target_traffic() external { console2.log("TARGET TRAFFIC STARTS"); // For parser - _simulation(150_000_000, 0, 12, 0); + _simulation(60_000_000, 0, 12, 0); console2.log("TARGET TRAFFIC ENDS"); } diff --git a/packages/protocol/utils/generate_genesis/taikoL2.ts b/packages/protocol/utils/generate_genesis/taikoL2.ts index 19f2ec2792..462f0e401f 100644 --- a/packages/protocol/utils/generate_genesis/taikoL2.ts +++ b/packages/protocol/utils/generate_genesis/taikoL2.ts @@ -303,7 +303,6 @@ async function generateContractConfigs( ]), ] )}`, - gasExcess: ethers.BigNumber.from(param1559.gasExcess), // AddressResolver addressManager: addressMap.AddressManagerProxy, }, From ff5d3da75c4c2a3e9bc08baff3ebe350e8237dd2 Mon Sep 17 00:00:00 2001 From: Jeffery Walsh Date: Fri, 27 Oct 2023 12:19:35 -0700 Subject: [PATCH 80/87] bindings --- packages/relayer/ERC1155Vault.json | 72 +- packages/relayer/ERC20Vault.json | 72 +- packages/relayer/ERC721Vault.json | 72 +- packages/relayer/SignalService.json | 63 ++ packages/relayer/TaikoL1.json | 213 +++--- packages/relayer/bindings/bridge/Bridge.go | 445 +++++++++-- .../bindings/erc1155vault/ERC1155Vault.go | 355 ++++++++- .../relayer/bindings/erc20vault/ERC20Vault.go | 355 ++++++++- .../bindings/erc721vault/ERC721Vault.go | 355 ++++++++- .../bindings/signalservice/SignalService.go | 343 ++++++++- packages/relayer/bindings/taikol1/TaikoL1.go | 710 +++++++++--------- packages/relayer/bindings/taikol2/TaikoL2.go | 530 +++++++++---- 12 files changed, 2902 insertions(+), 683 deletions(-) diff --git a/packages/relayer/ERC1155Vault.json b/packages/relayer/ERC1155Vault.json index 2de11eda06..9e347629b3 100644 --- a/packages/relayer/ERC1155Vault.json +++ b/packages/relayer/ERC1155Vault.json @@ -1,4 +1,19 @@ [ + { + "inputs": [], + "name": "ETH_TRANSFER_FAILED", + "type": "error" + }, + { + "inputs": [], + "name": "INVALID_PAUSE_STATUS", + "type": "error" + }, + { + "inputs": [], + "name": "REENTRANT_CALL", + "type": "error" + }, { "inputs": [], "name": "RESOLVER_DENIED", @@ -149,6 +164,19 @@ "name": "OwnershipTransferred", "type": "event" }, + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "address", + "name": "account", + "type": "address" + } + ], + "name": "Paused", + "type": "event" + }, { "anonymous": false, "inputs": [ @@ -284,6 +312,19 @@ "name": "TokenSent", "type": "event" }, + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "address", + "name": "account", + "type": "address" + } + ], + "name": "Unpaused", + "type": "event" + }, { "inputs": [], "name": "ERC1155_INTERFACE_ID", @@ -496,9 +537,9 @@ { "components": [ { - "internalType": "uint256", + "internalType": "uint128", "name": "id", - "type": "uint256" + "type": "uint128" }, { "internalType": "address", @@ -584,6 +625,26 @@ "stateMutability": "view", "type": "function" }, + { + "inputs": [], + "name": "pause", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [], + "name": "paused", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "view", + "type": "function" + }, { "inputs": [ { @@ -790,5 +851,12 @@ "outputs": [], "stateMutability": "nonpayable", "type": "function" + }, + { + "inputs": [], + "name": "unpause", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" } ] diff --git a/packages/relayer/ERC20Vault.json b/packages/relayer/ERC20Vault.json index ab3080b0db..dfb9732b6d 100644 --- a/packages/relayer/ERC20Vault.json +++ b/packages/relayer/ERC20Vault.json @@ -1,4 +1,19 @@ [ + { + "inputs": [], + "name": "ETH_TRANSFER_FAILED", + "type": "error" + }, + { + "inputs": [], + "name": "INVALID_PAUSE_STATUS", + "type": "error" + }, + { + "inputs": [], + "name": "REENTRANT_CALL", + "type": "error" + }, { "inputs": [], "name": "RESOLVER_DENIED", @@ -140,6 +155,19 @@ "name": "OwnershipTransferred", "type": "event" }, + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "address", + "name": "account", + "type": "address" + } + ], + "name": "Paused", + "type": "event" + }, { "anonymous": false, "inputs": [ @@ -257,6 +285,19 @@ "name": "TokenSent", "type": "event" }, + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "address", + "name": "account", + "type": "address" + } + ], + "name": "Unpaused", + "type": "event" + }, { "inputs": [], "name": "addressManager", @@ -370,9 +411,9 @@ { "components": [ { - "internalType": "uint256", + "internalType": "uint128", "name": "id", - "type": "uint256" + "type": "uint128" }, { "internalType": "address", @@ -458,6 +499,26 @@ "stateMutability": "view", "type": "function" }, + { + "inputs": [], + "name": "pause", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [], + "name": "paused", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "view", + "type": "function" + }, { "inputs": [ { @@ -659,5 +720,12 @@ "outputs": [], "stateMutability": "nonpayable", "type": "function" + }, + { + "inputs": [], + "name": "unpause", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" } ] diff --git a/packages/relayer/ERC721Vault.json b/packages/relayer/ERC721Vault.json index e914bc4a7c..cd39623310 100644 --- a/packages/relayer/ERC721Vault.json +++ b/packages/relayer/ERC721Vault.json @@ -1,4 +1,19 @@ [ + { + "inputs": [], + "name": "ETH_TRANSFER_FAILED", + "type": "error" + }, + { + "inputs": [], + "name": "INVALID_PAUSE_STATUS", + "type": "error" + }, + { + "inputs": [], + "name": "REENTRANT_CALL", + "type": "error" + }, { "inputs": [], "name": "RESOLVER_DENIED", @@ -149,6 +164,19 @@ "name": "OwnershipTransferred", "type": "event" }, + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "address", + "name": "account", + "type": "address" + } + ], + "name": "Paused", + "type": "event" + }, { "anonymous": false, "inputs": [ @@ -284,6 +312,19 @@ "name": "TokenSent", "type": "event" }, + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "address", + "name": "account", + "type": "address" + } + ], + "name": "Unpaused", + "type": "event" + }, { "inputs": [], "name": "ERC1155_INTERFACE_ID", @@ -452,9 +493,9 @@ { "components": [ { - "internalType": "uint256", + "internalType": "uint128", "name": "id", - "type": "uint256" + "type": "uint128" }, { "internalType": "address", @@ -540,6 +581,26 @@ "stateMutability": "view", "type": "function" }, + { + "inputs": [], + "name": "pause", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [], + "name": "paused", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "view", + "type": "function" + }, { "inputs": [ { @@ -741,5 +802,12 @@ "outputs": [], "stateMutability": "nonpayable", "type": "function" + }, + { + "inputs": [], + "name": "unpause", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" } ] diff --git a/packages/relayer/SignalService.json b/packages/relayer/SignalService.json index 8800a8cd6a..f62e58d0af 100644 --- a/packages/relayer/SignalService.json +++ b/packages/relayer/SignalService.json @@ -1,4 +1,14 @@ [ + { + "inputs": [], + "name": "INVALID_PAUSE_STATUS", + "type": "error" + }, + { + "inputs": [], + "name": "REENTRANT_CALL", + "type": "error" + }, { "inputs": [], "name": "RESOLVER_DENIED", @@ -67,6 +77,32 @@ "name": "OwnershipTransferred", "type": "event" }, + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "address", + "name": "account", + "type": "address" + } + ], + "name": "Paused", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "address", + "name": "account", + "type": "address" + } + ], + "name": "Unpaused", + "type": "event" + }, { "inputs": [], "name": "addressManager", @@ -159,6 +195,26 @@ "stateMutability": "view", "type": "function" }, + { + "inputs": [], + "name": "pause", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [], + "name": "paused", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "view", + "type": "function" + }, { "inputs": [ { @@ -297,5 +353,12 @@ "outputs": [], "stateMutability": "nonpayable", "type": "function" + }, + { + "inputs": [], + "name": "unpause", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" } ] diff --git a/packages/relayer/TaikoL1.json b/packages/relayer/TaikoL1.json index a9a6ee556f..20ee6001f9 100644 --- a/packages/relayer/TaikoL1.json +++ b/packages/relayer/TaikoL1.json @@ -1,4 +1,14 @@ [ + { + "inputs": [], + "name": "ETH_TRANSFER_FAILED", + "type": "error" + }, + { + "inputs": [], + "name": "INVALID_PAUSE_STATUS", + "type": "error" + }, { "inputs": [], "name": "L1_ALREADY_CONTESTED", @@ -106,12 +116,12 @@ }, { "inputs": [], - "name": "L1_INVALID_ADDRESS", + "name": "L1_INVALID_AMOUNT", "type": "error" }, { "inputs": [], - "name": "L1_INVALID_BLOCK_ID", + "name": "L1_INVALID_AMOUNT", "type": "error" }, { @@ -126,7 +136,7 @@ }, { "inputs": [], - "name": "L1_INVALID_CONFIG", + "name": "L1_INVALID_BLOCK_ID", "type": "error" }, { @@ -136,7 +146,7 @@ }, { "inputs": [], - "name": "L1_INVALID_ETH_DEPOSIT", + "name": "L1_INVALID_CONFIG", "type": "error" }, { @@ -146,7 +156,7 @@ }, { "inputs": [], - "name": "L1_INVALID_EVIDENCE", + "name": "L1_INVALID_ETH_DEPOSIT", "type": "error" }, { @@ -156,7 +166,7 @@ }, { "inputs": [], - "name": "L1_INVALID_METADATA", + "name": "L1_INVALID_EVIDENCE", "type": "error" }, { @@ -169,21 +179,6 @@ "name": "L1_INVALID_PROOF", "type": "error" }, - { - "inputs": [], - "name": "L1_INVALID_PROPOSER", - "type": "error" - }, - { - "inputs": [], - "name": "L1_INVALID_PROVER", - "type": "error" - }, - { - "inputs": [], - "name": "L1_INVALID_PROVER_SIG", - "type": "error" - }, { "inputs": [], "name": "L1_INVALID_TIER", @@ -244,11 +239,6 @@ "name": "L1_TRANSITION_NOT_FOUND", "type": "error" }, - { - "inputs": [], - "name": "L1_TXLIST_INVALID_RANGE", - "type": "error" - }, { "inputs": [], "name": "L1_TXLIST_MISMATCH", @@ -259,11 +249,6 @@ "name": "L1_TXLIST_MISMATCH", "type": "error" }, - { - "inputs": [], - "name": "L1_TXLIST_NOT_FOUND", - "type": "error" - }, { "inputs": [], "name": "L1_TXLIST_TOO_LARGE", @@ -304,6 +289,11 @@ "name": "L1_UNEXPECTED_TRANSITION_TIER", "type": "error" }, + { + "inputs": [], + "name": "REENTRANT_CALL", + "type": "error" + }, { "inputs": [], "name": "RESOLVER_DENIED", @@ -775,18 +765,12 @@ "inputs": [ { "indexed": false, - "internalType": "uint256", - "name": "amount", - "type": "uint256" - }, - { - "indexed": false, - "internalType": "bool", - "name": "minted", - "type": "bool" + "internalType": "address", + "name": "account", + "type": "address" } ], - "name": "TokenCredited", + "name": "Paused", "type": "event" }, { @@ -794,15 +778,15 @@ "inputs": [ { "indexed": false, - "internalType": "uint256", - "name": "amount", - "type": "uint256" + "internalType": "address", + "name": "to", + "type": "address" }, { "indexed": false, - "internalType": "bool", - "name": "minted", - "type": "bool" + "internalType": "uint256", + "name": "amount", + "type": "uint256" } ], "name": "TokenCredited", @@ -813,42 +797,29 @@ "inputs": [ { "indexed": false, - "internalType": "uint256", - "name": "amount", - "type": "uint256" + "internalType": "address", + "name": "to", + "type": "address" }, - { - "indexed": false, - "internalType": "bool", - "name": "fromLocalBalance", - "type": "bool" - } - ], - "name": "TokenDebited", - "type": "event" - }, - { - "anonymous": false, - "inputs": [ { "indexed": false, "internalType": "uint256", "name": "amount", "type": "uint256" - }, - { - "indexed": false, - "internalType": "bool", - "name": "fromLocalBalance", - "type": "bool" } ], - "name": "TokenDebited", + "name": "TokenCredited", "type": "event" }, { "anonymous": false, "inputs": [ + { + "indexed": false, + "internalType": "address", + "name": "from", + "type": "address" + }, { "indexed": false, "internalType": "uint256", @@ -856,12 +827,18 @@ "type": "uint256" } ], - "name": "TokenDeposited", + "name": "TokenDebited", "type": "event" }, { "anonymous": false, "inputs": [ + { + "indexed": false, + "internalType": "address", + "name": "from", + "type": "address" + }, { "indexed": false, "internalType": "uint256", @@ -869,7 +846,7 @@ "type": "uint256" } ], - "name": "TokenDeposited", + "name": "TokenDebited", "type": "event" }, { @@ -882,7 +859,7 @@ "type": "uint256" } ], - "name": "TokenWithdrawn", + "name": "TokenDeposited", "type": "event" }, { @@ -895,18 +872,12 @@ "type": "uint256" } ], - "name": "TokenWithdrawn", + "name": "TokenDeposited", "type": "event" }, { "anonymous": false, "inputs": [ - { - "indexed": false, - "internalType": "address", - "name": "to", - "type": "address" - }, { "indexed": false, "internalType": "uint256", @@ -914,18 +885,12 @@ "type": "uint256" } ], - "name": "TokenWithdrawnByOwner", + "name": "TokenWithdrawn", "type": "event" }, { "anonymous": false, "inputs": [ - { - "indexed": false, - "internalType": "address", - "name": "to", - "type": "address" - }, { "indexed": false, "internalType": "uint256", @@ -933,7 +898,7 @@ "type": "uint256" } ], - "name": "TokenWithdrawnByOwner", + "name": "TokenWithdrawn", "type": "event" }, { @@ -1132,6 +1097,19 @@ "name": "TransitionProved", "type": "event" }, + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "address", + "name": "account", + "type": "address" + } + ], + "name": "Unpaused", + "type": "event" + }, { "inputs": [], "name": "addressManager", @@ -1338,7 +1316,7 @@ "type": "tuple" } ], - "stateMutability": "pure", + "stateMutability": "view", "type": "function" }, { @@ -1623,7 +1601,7 @@ "type": "bool" } ], - "stateMutability": "pure", + "stateMutability": "view", "type": "function" }, { @@ -1640,21 +1618,23 @@ "type": "function" }, { - "inputs": [ - { - "internalType": "address", - "name": "to", - "type": "address" - }, + "inputs": [], + "name": "pause", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [], + "name": "paused", + "outputs": [ { - "internalType": "uint256", - "name": "amount", - "type": "uint256" + "internalType": "bool", + "name": "", + "type": "bool" } ], - "name": "ownerWithdrawTaikoToken", - "outputs": [], - "stateMutability": "nonpayable", + "stateMutability": "view", "type": "function" }, { @@ -1881,11 +1861,6 @@ "name": "nextEthDepositToProcess", "type": "uint64" }, - { - "internalType": "uint64", - "name": "lastVerifiedAt", - "type": "uint64" - }, { "internalType": "uint64", "name": "lastVerifiedBlockId", @@ -1895,23 +1870,6 @@ "internalType": "struct TaikoData.SlotB", "name": "slotB", "type": "tuple" - }, - { - "components": [ - { - "internalType": "uint128", - "name": "accumulatedReward", - "type": "uint128" - }, - { - "internalType": "uint64", - "name": "lastProposedHeight", - "type": "uint64" - } - ], - "internalType": "struct TaikoData.SlotC", - "name": "slotC", - "type": "tuple" } ], "stateMutability": "view", @@ -1930,6 +1888,13 @@ "stateMutability": "nonpayable", "type": "function" }, + { + "inputs": [], + "name": "unpause", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, { "inputs": [ { diff --git a/packages/relayer/bindings/bridge/Bridge.go b/packages/relayer/bindings/bridge/Bridge.go index 3802d78c7e..cd1b03352e 100644 --- a/packages/relayer/bindings/bridge/Bridge.go +++ b/packages/relayer/bindings/bridge/Bridge.go @@ -54,7 +54,7 @@ type IBridgeMessage struct { // BridgeMetaData contains all meta data concerning the Bridge contract. var BridgeMetaData = &bind.MetaData{ - ABI: "[{\"inputs\":[],\"name\":\"B_INVALID_CHAINID\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"B_INVALID_CONTEXT\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"B_INVALID_GAS_LIMIT\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"B_INVALID_SIGNAL\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"B_INVALID_TO\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"B_INVALID_USER\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"B_INVALID_VALUE\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"B_NON_RETRIABLE\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"B_NOT_FAILED\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"B_NOT_RECEIVED\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"B_PERMISSION_DENIED\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"B_RECALLED_ALREADY\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"B_STATUS_MISMATCH\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"RESOLVER_DENIED\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"RESOLVER_INVALID_MANAGER\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"chainId\",\"type\":\"uint256\"},{\"internalType\":\"bytes32\",\"name\":\"name\",\"type\":\"bytes32\"}],\"name\":\"RESOLVER_ZERO_ADDR\",\"type\":\"error\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"chainId\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"bool\",\"name\":\"enabled\",\"type\":\"bool\"}],\"name\":\"DestChainEnabled\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint8\",\"name\":\"version\",\"type\":\"uint8\"}],\"name\":\"Initialized\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"msgHash\",\"type\":\"bytes32\"}],\"name\":\"MessageRecalled\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"msgHash\",\"type\":\"bytes32\"},{\"components\":[{\"internalType\":\"uint256\",\"name\":\"id\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"srcChainId\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"destChainId\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"user\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"refundTo\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"fee\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"gasLimit\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"},{\"internalType\":\"string\",\"name\":\"memo\",\"type\":\"string\"}],\"indexed\":false,\"internalType\":\"structIBridge.Message\",\"name\":\"message\",\"type\":\"tuple\"}],\"name\":\"MessageSent\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"msgHash\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"enumBridge.Status\",\"name\":\"status\",\"type\":\"uint8\"}],\"name\":\"MessageStatusChanged\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"previousOwner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"newOwner\",\"type\":\"address\"}],\"name\":\"OwnershipTransferred\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"msgHash\",\"type\":\"bytes32\"}],\"name\":\"SignalSent\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"addressManager\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"context\",\"outputs\":[{\"components\":[{\"internalType\":\"bytes32\",\"name\":\"msgHash\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"srcChainId\",\"type\":\"uint256\"}],\"internalType\":\"structIBridge.Context\",\"name\":\"\",\"type\":\"tuple\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_addressManager\",\"type\":\"address\"}],\"name\":\"init\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"chainId\",\"type\":\"uint256\"}],\"name\":\"isDestChainEnabled\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"enabled\",\"type\":\"bool\"},{\"internalType\":\"address\",\"name\":\"destBridge\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"msgHash\",\"type\":\"bytes32\"}],\"name\":\"isMessageRecalled\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"recalled\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"uint256\",\"name\":\"id\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"srcChainId\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"destChainId\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"user\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"refundTo\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"fee\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"gasLimit\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"},{\"internalType\":\"string\",\"name\":\"memo\",\"type\":\"string\"}],\"internalType\":\"structIBridge.Message\",\"name\":\"message\",\"type\":\"tuple\"}],\"name\":\"isMessageSent\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"msgHash\",\"type\":\"bytes32\"}],\"name\":\"messageStatus\",\"outputs\":[{\"internalType\":\"enumBridge.Status\",\"name\":\"\",\"type\":\"uint8\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"nextMessageId\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"owner\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"uint256\",\"name\":\"id\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"srcChainId\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"destChainId\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"user\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"refundTo\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"fee\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"gasLimit\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"},{\"internalType\":\"string\",\"name\":\"memo\",\"type\":\"string\"}],\"internalType\":\"structIBridge.Message\",\"name\":\"message\",\"type\":\"tuple\"},{\"internalType\":\"bytes\",\"name\":\"proof\",\"type\":\"bytes\"}],\"name\":\"processMessage\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"uint256\",\"name\":\"id\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"srcChainId\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"destChainId\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"user\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"refundTo\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"fee\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"gasLimit\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"},{\"internalType\":\"string\",\"name\":\"memo\",\"type\":\"string\"}],\"internalType\":\"structIBridge.Message\",\"name\":\"message\",\"type\":\"tuple\"},{\"internalType\":\"bytes\",\"name\":\"proof\",\"type\":\"bytes\"}],\"name\":\"proveMessageFailed\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"uint256\",\"name\":\"id\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"srcChainId\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"destChainId\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"user\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"refundTo\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"fee\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"gasLimit\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"},{\"internalType\":\"string\",\"name\":\"memo\",\"type\":\"string\"}],\"internalType\":\"structIBridge.Message\",\"name\":\"message\",\"type\":\"tuple\"},{\"internalType\":\"bytes\",\"name\":\"proof\",\"type\":\"bytes\"}],\"name\":\"proveMessageReceived\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"uint256\",\"name\":\"id\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"srcChainId\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"destChainId\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"user\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"refundTo\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"fee\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"gasLimit\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"},{\"internalType\":\"string\",\"name\":\"memo\",\"type\":\"string\"}],\"internalType\":\"structIBridge.Message\",\"name\":\"message\",\"type\":\"tuple\"},{\"internalType\":\"bytes\",\"name\":\"proof\",\"type\":\"bytes\"}],\"name\":\"recallMessage\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"renounceOwnership\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"chainId\",\"type\":\"uint256\"},{\"internalType\":\"bytes32\",\"name\":\"name\",\"type\":\"bytes32\"},{\"internalType\":\"bool\",\"name\":\"allowZeroAddress\",\"type\":\"bool\"}],\"name\":\"resolve\",\"outputs\":[{\"internalType\":\"addresspayable\",\"name\":\"addr\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"name\",\"type\":\"bytes32\"},{\"internalType\":\"bool\",\"name\":\"allowZeroAddress\",\"type\":\"bool\"}],\"name\":\"resolve\",\"outputs\":[{\"internalType\":\"addresspayable\",\"name\":\"addr\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"uint256\",\"name\":\"id\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"srcChainId\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"destChainId\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"user\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"refundTo\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"fee\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"gasLimit\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"},{\"internalType\":\"string\",\"name\":\"memo\",\"type\":\"string\"}],\"internalType\":\"structIBridge.Message\",\"name\":\"message\",\"type\":\"tuple\"},{\"internalType\":\"bool\",\"name\":\"isLastAttempt\",\"type\":\"bool\"}],\"name\":\"retryMessage\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"uint256\",\"name\":\"id\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"srcChainId\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"destChainId\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"user\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"refundTo\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"fee\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"gasLimit\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"},{\"internalType\":\"string\",\"name\":\"memo\",\"type\":\"string\"}],\"internalType\":\"structIBridge.Message\",\"name\":\"message\",\"type\":\"tuple\"}],\"name\":\"sendMessage\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"msgHash\",\"type\":\"bytes32\"},{\"components\":[{\"internalType\":\"uint256\",\"name\":\"id\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"srcChainId\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"destChainId\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"user\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"refundTo\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"fee\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"gasLimit\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"},{\"internalType\":\"string\",\"name\":\"memo\",\"type\":\"string\"}],\"internalType\":\"structIBridge.Message\",\"name\":\"_message\",\"type\":\"tuple\"}],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"newOwner\",\"type\":\"address\"}],\"name\":\"transferOwnership\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"stateMutability\":\"payable\",\"type\":\"receive\"}]", + ABI: "[{\"inputs\":[],\"name\":\"B_INVALID_CHAINID\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"B_INVALID_CONTEXT\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"B_INVALID_GAS_LIMIT\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"B_INVALID_SIGNAL\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"B_INVALID_TO\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"B_INVALID_USER\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"B_INVALID_VALUE\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"B_NON_RETRIABLE\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"B_NOT_FAILED\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"B_NOT_RECEIVED\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"B_PERMISSION_DENIED\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"B_RECALLED_ALREADY\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"B_STATUS_MISMATCH\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ETH_TRANSFER_FAILED\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"INVALID_PAUSE_STATUS\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"REENTRANT_CALL\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"RESOLVER_DENIED\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"RESOLVER_INVALID_MANAGER\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"chainId\",\"type\":\"uint256\"},{\"internalType\":\"bytes32\",\"name\":\"name\",\"type\":\"bytes32\"}],\"name\":\"RESOLVER_ZERO_ADDR\",\"type\":\"error\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"chainId\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"bool\",\"name\":\"enabled\",\"type\":\"bool\"}],\"name\":\"DestChainEnabled\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint8\",\"name\":\"version\",\"type\":\"uint8\"}],\"name\":\"Initialized\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"msgHash\",\"type\":\"bytes32\"}],\"name\":\"MessageRecalled\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"msgHash\",\"type\":\"bytes32\"},{\"components\":[{\"internalType\":\"uint128\",\"name\":\"id\",\"type\":\"uint128\"},{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"srcChainId\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"destChainId\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"user\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"refundTo\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"fee\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"gasLimit\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"},{\"internalType\":\"string\",\"name\":\"memo\",\"type\":\"string\"}],\"indexed\":false,\"internalType\":\"structIBridge.Message\",\"name\":\"message\",\"type\":\"tuple\"}],\"name\":\"MessageSent\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"msgHash\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"enumBridge.Status\",\"name\":\"status\",\"type\":\"uint8\"}],\"name\":\"MessageStatusChanged\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"previousOwner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"newOwner\",\"type\":\"address\"}],\"name\":\"OwnershipTransferred\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"Paused\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"msgHash\",\"type\":\"bytes32\"}],\"name\":\"SignalSent\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"Unpaused\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"addressManager\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"context\",\"outputs\":[{\"components\":[{\"internalType\":\"bytes32\",\"name\":\"msgHash\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"srcChainId\",\"type\":\"uint256\"}],\"internalType\":\"structIBridge.Context\",\"name\":\"\",\"type\":\"tuple\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_addressManager\",\"type\":\"address\"}],\"name\":\"init\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"chainId\",\"type\":\"uint256\"}],\"name\":\"isDestChainEnabled\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"enabled\",\"type\":\"bool\"},{\"internalType\":\"address\",\"name\":\"destBridge\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"msgHash\",\"type\":\"bytes32\"}],\"name\":\"isMessageRecalled\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"recalled\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"uint128\",\"name\":\"id\",\"type\":\"uint128\"},{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"srcChainId\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"destChainId\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"user\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"refundTo\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"fee\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"gasLimit\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"},{\"internalType\":\"string\",\"name\":\"memo\",\"type\":\"string\"}],\"internalType\":\"structIBridge.Message\",\"name\":\"message\",\"type\":\"tuple\"}],\"name\":\"isMessageSent\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"msgHash\",\"type\":\"bytes32\"}],\"name\":\"messageStatus\",\"outputs\":[{\"internalType\":\"enumBridge.Status\",\"name\":\"\",\"type\":\"uint8\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"nextMessageId\",\"outputs\":[{\"internalType\":\"uint128\",\"name\":\"\",\"type\":\"uint128\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"owner\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"pause\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"paused\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"uint128\",\"name\":\"id\",\"type\":\"uint128\"},{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"srcChainId\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"destChainId\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"user\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"refundTo\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"fee\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"gasLimit\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"},{\"internalType\":\"string\",\"name\":\"memo\",\"type\":\"string\"}],\"internalType\":\"structIBridge.Message\",\"name\":\"message\",\"type\":\"tuple\"},{\"internalType\":\"bytes\",\"name\":\"proof\",\"type\":\"bytes\"}],\"name\":\"processMessage\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"uint128\",\"name\":\"id\",\"type\":\"uint128\"},{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"srcChainId\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"destChainId\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"user\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"refundTo\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"fee\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"gasLimit\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"},{\"internalType\":\"string\",\"name\":\"memo\",\"type\":\"string\"}],\"internalType\":\"structIBridge.Message\",\"name\":\"message\",\"type\":\"tuple\"},{\"internalType\":\"bytes\",\"name\":\"proof\",\"type\":\"bytes\"}],\"name\":\"proveMessageFailed\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"uint128\",\"name\":\"id\",\"type\":\"uint128\"},{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"srcChainId\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"destChainId\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"user\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"refundTo\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"fee\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"gasLimit\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"},{\"internalType\":\"string\",\"name\":\"memo\",\"type\":\"string\"}],\"internalType\":\"structIBridge.Message\",\"name\":\"message\",\"type\":\"tuple\"},{\"internalType\":\"bytes\",\"name\":\"proof\",\"type\":\"bytes\"}],\"name\":\"proveMessageReceived\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"uint128\",\"name\":\"id\",\"type\":\"uint128\"},{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"srcChainId\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"destChainId\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"user\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"refundTo\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"fee\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"gasLimit\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"},{\"internalType\":\"string\",\"name\":\"memo\",\"type\":\"string\"}],\"internalType\":\"structIBridge.Message\",\"name\":\"message\",\"type\":\"tuple\"},{\"internalType\":\"bytes\",\"name\":\"proof\",\"type\":\"bytes\"}],\"name\":\"recallMessage\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"renounceOwnership\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"chainId\",\"type\":\"uint256\"},{\"internalType\":\"bytes32\",\"name\":\"name\",\"type\":\"bytes32\"},{\"internalType\":\"bool\",\"name\":\"allowZeroAddress\",\"type\":\"bool\"}],\"name\":\"resolve\",\"outputs\":[{\"internalType\":\"addresspayable\",\"name\":\"addr\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"name\",\"type\":\"bytes32\"},{\"internalType\":\"bool\",\"name\":\"allowZeroAddress\",\"type\":\"bool\"}],\"name\":\"resolve\",\"outputs\":[{\"internalType\":\"addresspayable\",\"name\":\"addr\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"uint128\",\"name\":\"id\",\"type\":\"uint128\"},{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"srcChainId\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"destChainId\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"user\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"refundTo\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"fee\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"gasLimit\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"},{\"internalType\":\"string\",\"name\":\"memo\",\"type\":\"string\"}],\"internalType\":\"structIBridge.Message\",\"name\":\"message\",\"type\":\"tuple\"},{\"internalType\":\"bool\",\"name\":\"isLastAttempt\",\"type\":\"bool\"}],\"name\":\"retryMessage\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"uint128\",\"name\":\"id\",\"type\":\"uint128\"},{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"srcChainId\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"destChainId\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"user\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"refundTo\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"fee\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"gasLimit\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"},{\"internalType\":\"string\",\"name\":\"memo\",\"type\":\"string\"}],\"internalType\":\"structIBridge.Message\",\"name\":\"message\",\"type\":\"tuple\"}],\"name\":\"sendMessage\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"msgHash\",\"type\":\"bytes32\"},{\"components\":[{\"internalType\":\"uint128\",\"name\":\"id\",\"type\":\"uint128\"},{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"srcChainId\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"destChainId\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"user\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"refundTo\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"fee\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"gasLimit\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"},{\"internalType\":\"string\",\"name\":\"memo\",\"type\":\"string\"}],\"internalType\":\"structIBridge.Message\",\"name\":\"_message\",\"type\":\"tuple\"}],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"newOwner\",\"type\":\"address\"}],\"name\":\"transferOwnership\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"unpause\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"stateMutability\":\"payable\",\"type\":\"receive\"}]", } // BridgeABI is the input ABI used to generate the binding from. @@ -341,9 +341,9 @@ func (_Bridge *BridgeCallerSession) IsMessageRecalled(msgHash [32]byte) (bool, e return _Bridge.Contract.IsMessageRecalled(&_Bridge.CallOpts, msgHash) } -// IsMessageSent is a free data retrieval call binding the contract method 0xd6624194. +// IsMessageSent is a free data retrieval call binding the contract method 0xaedf6cd3. // -// Solidity: function isMessageSent((uint256,address,uint256,uint256,address,address,address,uint256,uint256,uint256,bytes,string) message) view returns(bool) +// Solidity: function isMessageSent((uint128,address,uint256,uint256,address,address,address,uint256,uint256,uint256,bytes,string) message) view returns(bool) func (_Bridge *BridgeCaller) IsMessageSent(opts *bind.CallOpts, message IBridgeMessage) (bool, error) { var out []interface{} err := _Bridge.contract.Call(opts, &out, "isMessageSent", message) @@ -358,16 +358,16 @@ func (_Bridge *BridgeCaller) IsMessageSent(opts *bind.CallOpts, message IBridgeM } -// IsMessageSent is a free data retrieval call binding the contract method 0xd6624194. +// IsMessageSent is a free data retrieval call binding the contract method 0xaedf6cd3. // -// Solidity: function isMessageSent((uint256,address,uint256,uint256,address,address,address,uint256,uint256,uint256,bytes,string) message) view returns(bool) +// Solidity: function isMessageSent((uint128,address,uint256,uint256,address,address,address,uint256,uint256,uint256,bytes,string) message) view returns(bool) func (_Bridge *BridgeSession) IsMessageSent(message IBridgeMessage) (bool, error) { return _Bridge.Contract.IsMessageSent(&_Bridge.CallOpts, message) } -// IsMessageSent is a free data retrieval call binding the contract method 0xd6624194. +// IsMessageSent is a free data retrieval call binding the contract method 0xaedf6cd3. // -// Solidity: function isMessageSent((uint256,address,uint256,uint256,address,address,address,uint256,uint256,uint256,bytes,string) message) view returns(bool) +// Solidity: function isMessageSent((uint128,address,uint256,uint256,address,address,address,uint256,uint256,uint256,bytes,string) message) view returns(bool) func (_Bridge *BridgeCallerSession) IsMessageSent(message IBridgeMessage) (bool, error) { return _Bridge.Contract.IsMessageSent(&_Bridge.CallOpts, message) } @@ -405,7 +405,7 @@ func (_Bridge *BridgeCallerSession) MessageStatus(msgHash [32]byte) (uint8, erro // NextMessageId is a free data retrieval call binding the contract method 0xeefbf17e. // -// Solidity: function nextMessageId() view returns(uint256) +// Solidity: function nextMessageId() view returns(uint128) func (_Bridge *BridgeCaller) NextMessageId(opts *bind.CallOpts) (*big.Int, error) { var out []interface{} err := _Bridge.contract.Call(opts, &out, "nextMessageId") @@ -422,14 +422,14 @@ func (_Bridge *BridgeCaller) NextMessageId(opts *bind.CallOpts) (*big.Int, error // NextMessageId is a free data retrieval call binding the contract method 0xeefbf17e. // -// Solidity: function nextMessageId() view returns(uint256) +// Solidity: function nextMessageId() view returns(uint128) func (_Bridge *BridgeSession) NextMessageId() (*big.Int, error) { return _Bridge.Contract.NextMessageId(&_Bridge.CallOpts) } // NextMessageId is a free data retrieval call binding the contract method 0xeefbf17e. // -// Solidity: function nextMessageId() view returns(uint256) +// Solidity: function nextMessageId() view returns(uint128) func (_Bridge *BridgeCallerSession) NextMessageId() (*big.Int, error) { return _Bridge.Contract.NextMessageId(&_Bridge.CallOpts) } @@ -465,9 +465,40 @@ func (_Bridge *BridgeCallerSession) Owner() (common.Address, error) { return _Bridge.Contract.Owner(&_Bridge.CallOpts) } -// ProveMessageFailed is a free data retrieval call binding the contract method 0x6b778a9e. +// Paused is a free data retrieval call binding the contract method 0x5c975abb. // -// Solidity: function proveMessageFailed((uint256,address,uint256,uint256,address,address,address,uint256,uint256,uint256,bytes,string) message, bytes proof) view returns(bool) +// Solidity: function paused() view returns(bool) +func (_Bridge *BridgeCaller) Paused(opts *bind.CallOpts) (bool, error) { + var out []interface{} + err := _Bridge.contract.Call(opts, &out, "paused") + + if err != nil { + return *new(bool), err + } + + out0 := *abi.ConvertType(out[0], new(bool)).(*bool) + + return out0, err + +} + +// Paused is a free data retrieval call binding the contract method 0x5c975abb. +// +// Solidity: function paused() view returns(bool) +func (_Bridge *BridgeSession) Paused() (bool, error) { + return _Bridge.Contract.Paused(&_Bridge.CallOpts) +} + +// Paused is a free data retrieval call binding the contract method 0x5c975abb. +// +// Solidity: function paused() view returns(bool) +func (_Bridge *BridgeCallerSession) Paused() (bool, error) { + return _Bridge.Contract.Paused(&_Bridge.CallOpts) +} + +// ProveMessageFailed is a free data retrieval call binding the contract method 0x1b5fd0ab. +// +// Solidity: function proveMessageFailed((uint128,address,uint256,uint256,address,address,address,uint256,uint256,uint256,bytes,string) message, bytes proof) view returns(bool) func (_Bridge *BridgeCaller) ProveMessageFailed(opts *bind.CallOpts, message IBridgeMessage, proof []byte) (bool, error) { var out []interface{} err := _Bridge.contract.Call(opts, &out, "proveMessageFailed", message, proof) @@ -482,23 +513,23 @@ func (_Bridge *BridgeCaller) ProveMessageFailed(opts *bind.CallOpts, message IBr } -// ProveMessageFailed is a free data retrieval call binding the contract method 0x6b778a9e. +// ProveMessageFailed is a free data retrieval call binding the contract method 0x1b5fd0ab. // -// Solidity: function proveMessageFailed((uint256,address,uint256,uint256,address,address,address,uint256,uint256,uint256,bytes,string) message, bytes proof) view returns(bool) +// Solidity: function proveMessageFailed((uint128,address,uint256,uint256,address,address,address,uint256,uint256,uint256,bytes,string) message, bytes proof) view returns(bool) func (_Bridge *BridgeSession) ProveMessageFailed(message IBridgeMessage, proof []byte) (bool, error) { return _Bridge.Contract.ProveMessageFailed(&_Bridge.CallOpts, message, proof) } -// ProveMessageFailed is a free data retrieval call binding the contract method 0x6b778a9e. +// ProveMessageFailed is a free data retrieval call binding the contract method 0x1b5fd0ab. // -// Solidity: function proveMessageFailed((uint256,address,uint256,uint256,address,address,address,uint256,uint256,uint256,bytes,string) message, bytes proof) view returns(bool) +// Solidity: function proveMessageFailed((uint128,address,uint256,uint256,address,address,address,uint256,uint256,uint256,bytes,string) message, bytes proof) view returns(bool) func (_Bridge *BridgeCallerSession) ProveMessageFailed(message IBridgeMessage, proof []byte) (bool, error) { return _Bridge.Contract.ProveMessageFailed(&_Bridge.CallOpts, message, proof) } -// ProveMessageReceived is a free data retrieval call binding the contract method 0x9494caf7. +// ProveMessageReceived is a free data retrieval call binding the contract method 0xa665077e. // -// Solidity: function proveMessageReceived((uint256,address,uint256,uint256,address,address,address,uint256,uint256,uint256,bytes,string) message, bytes proof) view returns(bool) +// Solidity: function proveMessageReceived((uint128,address,uint256,uint256,address,address,address,uint256,uint256,uint256,bytes,string) message, bytes proof) view returns(bool) func (_Bridge *BridgeCaller) ProveMessageReceived(opts *bind.CallOpts, message IBridgeMessage, proof []byte) (bool, error) { var out []interface{} err := _Bridge.contract.Call(opts, &out, "proveMessageReceived", message, proof) @@ -513,16 +544,16 @@ func (_Bridge *BridgeCaller) ProveMessageReceived(opts *bind.CallOpts, message I } -// ProveMessageReceived is a free data retrieval call binding the contract method 0x9494caf7. +// ProveMessageReceived is a free data retrieval call binding the contract method 0xa665077e. // -// Solidity: function proveMessageReceived((uint256,address,uint256,uint256,address,address,address,uint256,uint256,uint256,bytes,string) message, bytes proof) view returns(bool) +// Solidity: function proveMessageReceived((uint128,address,uint256,uint256,address,address,address,uint256,uint256,uint256,bytes,string) message, bytes proof) view returns(bool) func (_Bridge *BridgeSession) ProveMessageReceived(message IBridgeMessage, proof []byte) (bool, error) { return _Bridge.Contract.ProveMessageReceived(&_Bridge.CallOpts, message, proof) } -// ProveMessageReceived is a free data retrieval call binding the contract method 0x9494caf7. +// ProveMessageReceived is a free data retrieval call binding the contract method 0xa665077e. // -// Solidity: function proveMessageReceived((uint256,address,uint256,uint256,address,address,address,uint256,uint256,uint256,bytes,string) message, bytes proof) view returns(bool) +// Solidity: function proveMessageReceived((uint128,address,uint256,uint256,address,address,address,uint256,uint256,uint256,bytes,string) message, bytes proof) view returns(bool) func (_Bridge *BridgeCallerSession) ProveMessageReceived(message IBridgeMessage, proof []byte) (bool, error) { return _Bridge.Contract.ProveMessageReceived(&_Bridge.CallOpts, message, proof) } @@ -610,44 +641,65 @@ func (_Bridge *BridgeTransactorSession) Init(_addressManager common.Address) (*t return _Bridge.Contract.Init(&_Bridge.TransactOpts, _addressManager) } -// ProcessMessage is a paid mutator transaction binding the contract method 0xec9b3121. +// Pause is a paid mutator transaction binding the contract method 0x8456cb59. +// +// Solidity: function pause() returns() +func (_Bridge *BridgeTransactor) Pause(opts *bind.TransactOpts) (*types.Transaction, error) { + return _Bridge.contract.Transact(opts, "pause") +} + +// Pause is a paid mutator transaction binding the contract method 0x8456cb59. +// +// Solidity: function pause() returns() +func (_Bridge *BridgeSession) Pause() (*types.Transaction, error) { + return _Bridge.Contract.Pause(&_Bridge.TransactOpts) +} + +// Pause is a paid mutator transaction binding the contract method 0x8456cb59. +// +// Solidity: function pause() returns() +func (_Bridge *BridgeTransactorSession) Pause() (*types.Transaction, error) { + return _Bridge.Contract.Pause(&_Bridge.TransactOpts) +} + +// ProcessMessage is a paid mutator transaction binding the contract method 0x1136c050. // -// Solidity: function processMessage((uint256,address,uint256,uint256,address,address,address,uint256,uint256,uint256,bytes,string) message, bytes proof) returns() +// Solidity: function processMessage((uint128,address,uint256,uint256,address,address,address,uint256,uint256,uint256,bytes,string) message, bytes proof) returns() func (_Bridge *BridgeTransactor) ProcessMessage(opts *bind.TransactOpts, message IBridgeMessage, proof []byte) (*types.Transaction, error) { return _Bridge.contract.Transact(opts, "processMessage", message, proof) } -// ProcessMessage is a paid mutator transaction binding the contract method 0xec9b3121. +// ProcessMessage is a paid mutator transaction binding the contract method 0x1136c050. // -// Solidity: function processMessage((uint256,address,uint256,uint256,address,address,address,uint256,uint256,uint256,bytes,string) message, bytes proof) returns() +// Solidity: function processMessage((uint128,address,uint256,uint256,address,address,address,uint256,uint256,uint256,bytes,string) message, bytes proof) returns() func (_Bridge *BridgeSession) ProcessMessage(message IBridgeMessage, proof []byte) (*types.Transaction, error) { return _Bridge.Contract.ProcessMessage(&_Bridge.TransactOpts, message, proof) } -// ProcessMessage is a paid mutator transaction binding the contract method 0xec9b3121. +// ProcessMessage is a paid mutator transaction binding the contract method 0x1136c050. // -// Solidity: function processMessage((uint256,address,uint256,uint256,address,address,address,uint256,uint256,uint256,bytes,string) message, bytes proof) returns() +// Solidity: function processMessage((uint128,address,uint256,uint256,address,address,address,uint256,uint256,uint256,bytes,string) message, bytes proof) returns() func (_Bridge *BridgeTransactorSession) ProcessMessage(message IBridgeMessage, proof []byte) (*types.Transaction, error) { return _Bridge.Contract.ProcessMessage(&_Bridge.TransactOpts, message, proof) } -// RecallMessage is a paid mutator transaction binding the contract method 0x620c23fb. +// RecallMessage is a paid mutator transaction binding the contract method 0x40d0ff96. // -// Solidity: function recallMessage((uint256,address,uint256,uint256,address,address,address,uint256,uint256,uint256,bytes,string) message, bytes proof) returns() +// Solidity: function recallMessage((uint128,address,uint256,uint256,address,address,address,uint256,uint256,uint256,bytes,string) message, bytes proof) returns() func (_Bridge *BridgeTransactor) RecallMessage(opts *bind.TransactOpts, message IBridgeMessage, proof []byte) (*types.Transaction, error) { return _Bridge.contract.Transact(opts, "recallMessage", message, proof) } -// RecallMessage is a paid mutator transaction binding the contract method 0x620c23fb. +// RecallMessage is a paid mutator transaction binding the contract method 0x40d0ff96. // -// Solidity: function recallMessage((uint256,address,uint256,uint256,address,address,address,uint256,uint256,uint256,bytes,string) message, bytes proof) returns() +// Solidity: function recallMessage((uint128,address,uint256,uint256,address,address,address,uint256,uint256,uint256,bytes,string) message, bytes proof) returns() func (_Bridge *BridgeSession) RecallMessage(message IBridgeMessage, proof []byte) (*types.Transaction, error) { return _Bridge.Contract.RecallMessage(&_Bridge.TransactOpts, message, proof) } -// RecallMessage is a paid mutator transaction binding the contract method 0x620c23fb. +// RecallMessage is a paid mutator transaction binding the contract method 0x40d0ff96. // -// Solidity: function recallMessage((uint256,address,uint256,uint256,address,address,address,uint256,uint256,uint256,bytes,string) message, bytes proof) returns() +// Solidity: function recallMessage((uint128,address,uint256,uint256,address,address,address,uint256,uint256,uint256,bytes,string) message, bytes proof) returns() func (_Bridge *BridgeTransactorSession) RecallMessage(message IBridgeMessage, proof []byte) (*types.Transaction, error) { return _Bridge.Contract.RecallMessage(&_Bridge.TransactOpts, message, proof) } @@ -673,44 +725,44 @@ func (_Bridge *BridgeTransactorSession) RenounceOwnership() (*types.Transaction, return _Bridge.Contract.RenounceOwnership(&_Bridge.TransactOpts) } -// RetryMessage is a paid mutator transaction binding the contract method 0xf21be36f. +// RetryMessage is a paid mutator transaction binding the contract method 0x0be0b938. // -// Solidity: function retryMessage((uint256,address,uint256,uint256,address,address,address,uint256,uint256,uint256,bytes,string) message, bool isLastAttempt) returns() +// Solidity: function retryMessage((uint128,address,uint256,uint256,address,address,address,uint256,uint256,uint256,bytes,string) message, bool isLastAttempt) returns() func (_Bridge *BridgeTransactor) RetryMessage(opts *bind.TransactOpts, message IBridgeMessage, isLastAttempt bool) (*types.Transaction, error) { return _Bridge.contract.Transact(opts, "retryMessage", message, isLastAttempt) } -// RetryMessage is a paid mutator transaction binding the contract method 0xf21be36f. +// RetryMessage is a paid mutator transaction binding the contract method 0x0be0b938. // -// Solidity: function retryMessage((uint256,address,uint256,uint256,address,address,address,uint256,uint256,uint256,bytes,string) message, bool isLastAttempt) returns() +// Solidity: function retryMessage((uint128,address,uint256,uint256,address,address,address,uint256,uint256,uint256,bytes,string) message, bool isLastAttempt) returns() func (_Bridge *BridgeSession) RetryMessage(message IBridgeMessage, isLastAttempt bool) (*types.Transaction, error) { return _Bridge.Contract.RetryMessage(&_Bridge.TransactOpts, message, isLastAttempt) } -// RetryMessage is a paid mutator transaction binding the contract method 0xf21be36f. +// RetryMessage is a paid mutator transaction binding the contract method 0x0be0b938. // -// Solidity: function retryMessage((uint256,address,uint256,uint256,address,address,address,uint256,uint256,uint256,bytes,string) message, bool isLastAttempt) returns() +// Solidity: function retryMessage((uint128,address,uint256,uint256,address,address,address,uint256,uint256,uint256,bytes,string) message, bool isLastAttempt) returns() func (_Bridge *BridgeTransactorSession) RetryMessage(message IBridgeMessage, isLastAttempt bool) (*types.Transaction, error) { return _Bridge.Contract.RetryMessage(&_Bridge.TransactOpts, message, isLastAttempt) } -// SendMessage is a paid mutator transaction binding the contract method 0x4c1888bc. +// SendMessage is a paid mutator transaction binding the contract method 0x5fc34de7. // -// Solidity: function sendMessage((uint256,address,uint256,uint256,address,address,address,uint256,uint256,uint256,bytes,string) message) payable returns(bytes32 msgHash, (uint256,address,uint256,uint256,address,address,address,uint256,uint256,uint256,bytes,string) _message) +// Solidity: function sendMessage((uint128,address,uint256,uint256,address,address,address,uint256,uint256,uint256,bytes,string) message) payable returns(bytes32 msgHash, (uint128,address,uint256,uint256,address,address,address,uint256,uint256,uint256,bytes,string) _message) func (_Bridge *BridgeTransactor) SendMessage(opts *bind.TransactOpts, message IBridgeMessage) (*types.Transaction, error) { return _Bridge.contract.Transact(opts, "sendMessage", message) } -// SendMessage is a paid mutator transaction binding the contract method 0x4c1888bc. +// SendMessage is a paid mutator transaction binding the contract method 0x5fc34de7. // -// Solidity: function sendMessage((uint256,address,uint256,uint256,address,address,address,uint256,uint256,uint256,bytes,string) message) payable returns(bytes32 msgHash, (uint256,address,uint256,uint256,address,address,address,uint256,uint256,uint256,bytes,string) _message) +// Solidity: function sendMessage((uint128,address,uint256,uint256,address,address,address,uint256,uint256,uint256,bytes,string) message) payable returns(bytes32 msgHash, (uint128,address,uint256,uint256,address,address,address,uint256,uint256,uint256,bytes,string) _message) func (_Bridge *BridgeSession) SendMessage(message IBridgeMessage) (*types.Transaction, error) { return _Bridge.Contract.SendMessage(&_Bridge.TransactOpts, message) } -// SendMessage is a paid mutator transaction binding the contract method 0x4c1888bc. +// SendMessage is a paid mutator transaction binding the contract method 0x5fc34de7. // -// Solidity: function sendMessage((uint256,address,uint256,uint256,address,address,address,uint256,uint256,uint256,bytes,string) message) payable returns(bytes32 msgHash, (uint256,address,uint256,uint256,address,address,address,uint256,uint256,uint256,bytes,string) _message) +// Solidity: function sendMessage((uint128,address,uint256,uint256,address,address,address,uint256,uint256,uint256,bytes,string) message) payable returns(bytes32 msgHash, (uint128,address,uint256,uint256,address,address,address,uint256,uint256,uint256,bytes,string) _message) func (_Bridge *BridgeTransactorSession) SendMessage(message IBridgeMessage) (*types.Transaction, error) { return _Bridge.Contract.SendMessage(&_Bridge.TransactOpts, message) } @@ -736,6 +788,27 @@ func (_Bridge *BridgeTransactorSession) TransferOwnership(newOwner common.Addres return _Bridge.Contract.TransferOwnership(&_Bridge.TransactOpts, newOwner) } +// Unpause is a paid mutator transaction binding the contract method 0x3f4ba83a. +// +// Solidity: function unpause() returns() +func (_Bridge *BridgeTransactor) Unpause(opts *bind.TransactOpts) (*types.Transaction, error) { + return _Bridge.contract.Transact(opts, "unpause") +} + +// Unpause is a paid mutator transaction binding the contract method 0x3f4ba83a. +// +// Solidity: function unpause() returns() +func (_Bridge *BridgeSession) Unpause() (*types.Transaction, error) { + return _Bridge.Contract.Unpause(&_Bridge.TransactOpts) +} + +// Unpause is a paid mutator transaction binding the contract method 0x3f4ba83a. +// +// Solidity: function unpause() returns() +func (_Bridge *BridgeTransactorSession) Unpause() (*types.Transaction, error) { + return _Bridge.Contract.Unpause(&_Bridge.TransactOpts) +} + // Receive is a paid mutator transaction binding the contract receive function. // // Solidity: receive() payable returns() @@ -1254,9 +1327,9 @@ type BridgeMessageSent struct { Raw types.Log // Blockchain specific contextual infos } -// FilterMessageSent is a free log retrieval operation binding the contract event 0x238646a410b383b664b8d2fe57d2895c1ecd3464a3159cae73a93a9f21a43355. +// FilterMessageSent is a free log retrieval operation binding the contract event 0x769685e0f49529ee2429cb28b4b48bd962ff754c08a2849804458ad716d75dcf. // -// Solidity: event MessageSent(bytes32 indexed msgHash, (uint256,address,uint256,uint256,address,address,address,uint256,uint256,uint256,bytes,string) message) +// Solidity: event MessageSent(bytes32 indexed msgHash, (uint128,address,uint256,uint256,address,address,address,uint256,uint256,uint256,bytes,string) message) func (_Bridge *BridgeFilterer) FilterMessageSent(opts *bind.FilterOpts, msgHash [][32]byte) (*BridgeMessageSentIterator, error) { var msgHashRule []interface{} @@ -1271,9 +1344,9 @@ func (_Bridge *BridgeFilterer) FilterMessageSent(opts *bind.FilterOpts, msgHash return &BridgeMessageSentIterator{contract: _Bridge.contract, event: "MessageSent", logs: logs, sub: sub}, nil } -// WatchMessageSent is a free log subscription operation binding the contract event 0x238646a410b383b664b8d2fe57d2895c1ecd3464a3159cae73a93a9f21a43355. +// WatchMessageSent is a free log subscription operation binding the contract event 0x769685e0f49529ee2429cb28b4b48bd962ff754c08a2849804458ad716d75dcf. // -// Solidity: event MessageSent(bytes32 indexed msgHash, (uint256,address,uint256,uint256,address,address,address,uint256,uint256,uint256,bytes,string) message) +// Solidity: event MessageSent(bytes32 indexed msgHash, (uint128,address,uint256,uint256,address,address,address,uint256,uint256,uint256,bytes,string) message) func (_Bridge *BridgeFilterer) WatchMessageSent(opts *bind.WatchOpts, sink chan<- *BridgeMessageSent, msgHash [][32]byte) (event.Subscription, error) { var msgHashRule []interface{} @@ -1313,9 +1386,9 @@ func (_Bridge *BridgeFilterer) WatchMessageSent(opts *bind.WatchOpts, sink chan< }), nil } -// ParseMessageSent is a log parse operation binding the contract event 0x238646a410b383b664b8d2fe57d2895c1ecd3464a3159cae73a93a9f21a43355. +// ParseMessageSent is a log parse operation binding the contract event 0x769685e0f49529ee2429cb28b4b48bd962ff754c08a2849804458ad716d75dcf. // -// Solidity: event MessageSent(bytes32 indexed msgHash, (uint256,address,uint256,uint256,address,address,address,uint256,uint256,uint256,bytes,string) message) +// Solidity: event MessageSent(bytes32 indexed msgHash, (uint128,address,uint256,uint256,address,address,address,uint256,uint256,uint256,bytes,string) message) func (_Bridge *BridgeFilterer) ParseMessageSent(log types.Log) (*BridgeMessageSent, error) { event := new(BridgeMessageSent) if err := _Bridge.contract.UnpackLog(event, "MessageSent", log); err != nil { @@ -1623,6 +1696,140 @@ func (_Bridge *BridgeFilterer) ParseOwnershipTransferred(log types.Log) (*Bridge return event, nil } +// BridgePausedIterator is returned from FilterPaused and is used to iterate over the raw logs and unpacked data for Paused events raised by the Bridge contract. +type BridgePausedIterator struct { + Event *BridgePaused // Event containing the contract specifics and raw log + + contract *bind.BoundContract // Generic contract to use for unpacking event data + event string // Event name to use for unpacking event data + + logs chan types.Log // Log channel receiving the found contract events + sub ethereum.Subscription // Subscription for errors, completion and termination + done bool // Whether the subscription completed delivering logs + fail error // Occurred error to stop iteration +} + +// Next advances the iterator to the subsequent event, returning whether there +// are any more events found. In case of a retrieval or parsing error, false is +// returned and Error() can be queried for the exact failure. +func (it *BridgePausedIterator) Next() bool { + // If the iterator failed, stop iterating + if it.fail != nil { + return false + } + // If the iterator completed, deliver directly whatever's available + if it.done { + select { + case log := <-it.logs: + it.Event = new(BridgePaused) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + default: + return false + } + } + // Iterator still in progress, wait for either a data or an error event + select { + case log := <-it.logs: + it.Event = new(BridgePaused) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + case err := <-it.sub.Err(): + it.done = true + it.fail = err + return it.Next() + } +} + +// Error returns any retrieval or parsing error occurred during filtering. +func (it *BridgePausedIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *BridgePausedIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// BridgePaused represents a Paused event raised by the Bridge contract. +type BridgePaused struct { + Account common.Address + Raw types.Log // Blockchain specific contextual infos +} + +// FilterPaused is a free log retrieval operation binding the contract event 0x62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a258. +// +// Solidity: event Paused(address account) +func (_Bridge *BridgeFilterer) FilterPaused(opts *bind.FilterOpts) (*BridgePausedIterator, error) { + + logs, sub, err := _Bridge.contract.FilterLogs(opts, "Paused") + if err != nil { + return nil, err + } + return &BridgePausedIterator{contract: _Bridge.contract, event: "Paused", logs: logs, sub: sub}, nil +} + +// WatchPaused is a free log subscription operation binding the contract event 0x62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a258. +// +// Solidity: event Paused(address account) +func (_Bridge *BridgeFilterer) WatchPaused(opts *bind.WatchOpts, sink chan<- *BridgePaused) (event.Subscription, error) { + + logs, sub, err := _Bridge.contract.WatchLogs(opts, "Paused") + if err != nil { + return nil, err + } + return event.NewSubscription(func(quit <-chan struct{}) error { + defer sub.Unsubscribe() + for { + select { + case log := <-logs: + // New log arrived, parse the event and forward to the user + event := new(BridgePaused) + if err := _Bridge.contract.UnpackLog(event, "Paused", log); err != nil { + return err + } + event.Raw = log + + select { + case sink <- event: + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + } + }), nil +} + +// ParsePaused is a log parse operation binding the contract event 0x62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a258. +// +// Solidity: event Paused(address account) +func (_Bridge *BridgeFilterer) ParsePaused(log types.Log) (*BridgePaused, error) { + event := new(BridgePaused) + if err := _Bridge.contract.UnpackLog(event, "Paused", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} + // BridgeSignalSentIterator is returned from FilterSignalSent and is used to iterate over the raw logs and unpacked data for SignalSent events raised by the Bridge contract. type BridgeSignalSentIterator struct { Event *BridgeSignalSent // Event containing the contract specifics and raw log @@ -1767,3 +1974,137 @@ func (_Bridge *BridgeFilterer) ParseSignalSent(log types.Log) (*BridgeSignalSent event.Raw = log return event, nil } + +// BridgeUnpausedIterator is returned from FilterUnpaused and is used to iterate over the raw logs and unpacked data for Unpaused events raised by the Bridge contract. +type BridgeUnpausedIterator struct { + Event *BridgeUnpaused // Event containing the contract specifics and raw log + + contract *bind.BoundContract // Generic contract to use for unpacking event data + event string // Event name to use for unpacking event data + + logs chan types.Log // Log channel receiving the found contract events + sub ethereum.Subscription // Subscription for errors, completion and termination + done bool // Whether the subscription completed delivering logs + fail error // Occurred error to stop iteration +} + +// Next advances the iterator to the subsequent event, returning whether there +// are any more events found. In case of a retrieval or parsing error, false is +// returned and Error() can be queried for the exact failure. +func (it *BridgeUnpausedIterator) Next() bool { + // If the iterator failed, stop iterating + if it.fail != nil { + return false + } + // If the iterator completed, deliver directly whatever's available + if it.done { + select { + case log := <-it.logs: + it.Event = new(BridgeUnpaused) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + default: + return false + } + } + // Iterator still in progress, wait for either a data or an error event + select { + case log := <-it.logs: + it.Event = new(BridgeUnpaused) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + case err := <-it.sub.Err(): + it.done = true + it.fail = err + return it.Next() + } +} + +// Error returns any retrieval or parsing error occurred during filtering. +func (it *BridgeUnpausedIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *BridgeUnpausedIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// BridgeUnpaused represents a Unpaused event raised by the Bridge contract. +type BridgeUnpaused struct { + Account common.Address + Raw types.Log // Blockchain specific contextual infos +} + +// FilterUnpaused is a free log retrieval operation binding the contract event 0x5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa. +// +// Solidity: event Unpaused(address account) +func (_Bridge *BridgeFilterer) FilterUnpaused(opts *bind.FilterOpts) (*BridgeUnpausedIterator, error) { + + logs, sub, err := _Bridge.contract.FilterLogs(opts, "Unpaused") + if err != nil { + return nil, err + } + return &BridgeUnpausedIterator{contract: _Bridge.contract, event: "Unpaused", logs: logs, sub: sub}, nil +} + +// WatchUnpaused is a free log subscription operation binding the contract event 0x5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa. +// +// Solidity: event Unpaused(address account) +func (_Bridge *BridgeFilterer) WatchUnpaused(opts *bind.WatchOpts, sink chan<- *BridgeUnpaused) (event.Subscription, error) { + + logs, sub, err := _Bridge.contract.WatchLogs(opts, "Unpaused") + if err != nil { + return nil, err + } + return event.NewSubscription(func(quit <-chan struct{}) error { + defer sub.Unsubscribe() + for { + select { + case log := <-logs: + // New log arrived, parse the event and forward to the user + event := new(BridgeUnpaused) + if err := _Bridge.contract.UnpackLog(event, "Unpaused", log); err != nil { + return err + } + event.Raw = log + + select { + case sink <- event: + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + } + }), nil +} + +// ParseUnpaused is a log parse operation binding the contract event 0x5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa. +// +// Solidity: event Unpaused(address account) +func (_Bridge *BridgeFilterer) ParseUnpaused(log types.Log) (*BridgeUnpaused, error) { + event := new(BridgeUnpaused) + if err := _Bridge.contract.UnpackLog(event, "Unpaused", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} diff --git a/packages/relayer/bindings/erc1155vault/ERC1155Vault.go b/packages/relayer/bindings/erc1155vault/ERC1155Vault.go index 8d24460057..476152b5c6 100644 --- a/packages/relayer/bindings/erc1155vault/ERC1155Vault.go +++ b/packages/relayer/bindings/erc1155vault/ERC1155Vault.go @@ -68,7 +68,7 @@ type IBridgeMessage struct { // ERC1155VaultMetaData contains all meta data concerning the ERC1155Vault contract. var ERC1155VaultMetaData = &bind.MetaData{ - ABI: "[{\"inputs\":[],\"name\":\"RESOLVER_DENIED\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"RESOLVER_INVALID_MANAGER\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"chainId\",\"type\":\"uint256\"},{\"internalType\":\"bytes32\",\"name\":\"name\",\"type\":\"bytes32\"}],\"name\":\"RESOLVER_ZERO_ADDR\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"VAULT_INTERFACE_NOT_SUPPORTED\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"VAULT_INVALID_AMOUNT\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"VAULT_INVALID_FROM\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"VAULT_INVALID_SRC_CHAIN_ID\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"VAULT_INVALID_TO\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"VAULT_INVALID_TOKEN\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"VAULT_INVALID_USER\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"VAULT_MAX_TOKEN_PER_TXN_EXCEEDED\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"VAULT_MESSAGE_NOT_FAILED\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"VAULT_MESSAGE_RELEASED_ALREADY\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"VAULT_TOKEN_ARRAY_MISMATCH\",\"type\":\"error\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"chainId\",\"type\":\"uint256\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"ctoken\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"btoken\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"string\",\"name\":\"ctokenSymbol\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"string\",\"name\":\"ctokenName\",\"type\":\"string\"}],\"name\":\"BridgedTokenDeployed\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint8\",\"name\":\"version\",\"type\":\"uint8\"}],\"name\":\"Initialized\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"previousOwner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"newOwner\",\"type\":\"address\"}],\"name\":\"OwnershipTransferred\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"msgHash\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"srcChainId\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256[]\",\"name\":\"tokenIds\",\"type\":\"uint256[]\"},{\"indexed\":false,\"internalType\":\"uint256[]\",\"name\":\"amounts\",\"type\":\"uint256[]\"}],\"name\":\"TokenReceived\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"msgHash\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256[]\",\"name\":\"tokenIds\",\"type\":\"uint256[]\"},{\"indexed\":false,\"internalType\":\"uint256[]\",\"name\":\"amounts\",\"type\":\"uint256[]\"}],\"name\":\"TokenReleased\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"msgHash\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"destChainId\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256[]\",\"name\":\"tokenIds\",\"type\":\"uint256[]\"},{\"indexed\":false,\"internalType\":\"uint256[]\",\"name\":\"amounts\",\"type\":\"uint256[]\"}],\"name\":\"TokenSent\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"ERC1155_INTERFACE_ID\",\"outputs\":[{\"internalType\":\"bytes4\",\"name\":\"\",\"type\":\"bytes4\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"ERC721_INTERFACE_ID\",\"outputs\":[{\"internalType\":\"bytes4\",\"name\":\"\",\"type\":\"bytes4\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"addressManager\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"name\":\"bridgedToCanonical\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"chainId\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"addr\",\"type\":\"address\"},{\"internalType\":\"string\",\"name\":\"symbol\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"name\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"name\":\"canonicalToBridged\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"addressManager\",\"type\":\"address\"}],\"name\":\"init\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"name\":\"isBridgedToken\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"},{\"internalType\":\"uint256[]\",\"name\":\"\",\"type\":\"uint256[]\"},{\"internalType\":\"uint256[]\",\"name\":\"\",\"type\":\"uint256[]\"},{\"internalType\":\"bytes\",\"name\":\"\",\"type\":\"bytes\"}],\"name\":\"onERC1155BatchReceived\",\"outputs\":[{\"internalType\":\"bytes4\",\"name\":\"\",\"type\":\"bytes4\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"\",\"type\":\"bytes\"}],\"name\":\"onERC1155Received\",\"outputs\":[{\"internalType\":\"bytes4\",\"name\":\"\",\"type\":\"bytes4\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"uint256\",\"name\":\"id\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"srcChainId\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"destChainId\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"user\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"refundTo\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"fee\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"gasLimit\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"},{\"internalType\":\"string\",\"name\":\"memo\",\"type\":\"string\"}],\"internalType\":\"structIBridge.Message\",\"name\":\"message\",\"type\":\"tuple\"},{\"internalType\":\"bytes32\",\"name\":\"msgHash\",\"type\":\"bytes32\"}],\"name\":\"onMessageRecalled\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"owner\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"uint256\",\"name\":\"chainId\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"addr\",\"type\":\"address\"},{\"internalType\":\"string\",\"name\":\"symbol\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"name\",\"type\":\"string\"}],\"internalType\":\"structBaseNFTVault.CanonicalNFT\",\"name\":\"ctoken\",\"type\":\"tuple\"},{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256[]\",\"name\":\"tokenIds\",\"type\":\"uint256[]\"},{\"internalType\":\"uint256[]\",\"name\":\"amounts\",\"type\":\"uint256[]\"}],\"name\":\"receiveToken\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"renounceOwnership\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"chainId\",\"type\":\"uint256\"},{\"internalType\":\"bytes32\",\"name\":\"name\",\"type\":\"bytes32\"},{\"internalType\":\"bool\",\"name\":\"allowZeroAddress\",\"type\":\"bool\"}],\"name\":\"resolve\",\"outputs\":[{\"internalType\":\"addresspayable\",\"name\":\"addr\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"name\",\"type\":\"bytes32\"},{\"internalType\":\"bool\",\"name\":\"allowZeroAddress\",\"type\":\"bool\"}],\"name\":\"resolve\",\"outputs\":[{\"internalType\":\"addresspayable\",\"name\":\"addr\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"uint256\",\"name\":\"destChainId\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"uint256[]\",\"name\":\"tokenIds\",\"type\":\"uint256[]\"},{\"internalType\":\"uint256[]\",\"name\":\"amounts\",\"type\":\"uint256[]\"},{\"internalType\":\"uint256\",\"name\":\"gasLimit\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"fee\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"refundTo\",\"type\":\"address\"},{\"internalType\":\"string\",\"name\":\"memo\",\"type\":\"string\"}],\"internalType\":\"structBaseNFTVault.BridgeTransferOp\",\"name\":\"opt\",\"type\":\"tuple\"}],\"name\":\"sendToken\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes4\",\"name\":\"interfaceId\",\"type\":\"bytes4\"}],\"name\":\"supportsInterface\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"newOwner\",\"type\":\"address\"}],\"name\":\"transferOwnership\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}]", + ABI: "[{\"inputs\":[],\"name\":\"ETH_TRANSFER_FAILED\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"INVALID_PAUSE_STATUS\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"REENTRANT_CALL\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"RESOLVER_DENIED\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"RESOLVER_INVALID_MANAGER\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"chainId\",\"type\":\"uint256\"},{\"internalType\":\"bytes32\",\"name\":\"name\",\"type\":\"bytes32\"}],\"name\":\"RESOLVER_ZERO_ADDR\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"VAULT_INTERFACE_NOT_SUPPORTED\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"VAULT_INVALID_AMOUNT\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"VAULT_INVALID_FROM\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"VAULT_INVALID_SRC_CHAIN_ID\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"VAULT_INVALID_TO\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"VAULT_INVALID_TOKEN\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"VAULT_INVALID_USER\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"VAULT_MAX_TOKEN_PER_TXN_EXCEEDED\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"VAULT_MESSAGE_NOT_FAILED\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"VAULT_MESSAGE_RELEASED_ALREADY\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"VAULT_TOKEN_ARRAY_MISMATCH\",\"type\":\"error\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"chainId\",\"type\":\"uint256\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"ctoken\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"btoken\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"string\",\"name\":\"ctokenSymbol\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"string\",\"name\":\"ctokenName\",\"type\":\"string\"}],\"name\":\"BridgedTokenDeployed\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint8\",\"name\":\"version\",\"type\":\"uint8\"}],\"name\":\"Initialized\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"previousOwner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"newOwner\",\"type\":\"address\"}],\"name\":\"OwnershipTransferred\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"Paused\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"msgHash\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"srcChainId\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256[]\",\"name\":\"tokenIds\",\"type\":\"uint256[]\"},{\"indexed\":false,\"internalType\":\"uint256[]\",\"name\":\"amounts\",\"type\":\"uint256[]\"}],\"name\":\"TokenReceived\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"msgHash\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256[]\",\"name\":\"tokenIds\",\"type\":\"uint256[]\"},{\"indexed\":false,\"internalType\":\"uint256[]\",\"name\":\"amounts\",\"type\":\"uint256[]\"}],\"name\":\"TokenReleased\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"msgHash\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"destChainId\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256[]\",\"name\":\"tokenIds\",\"type\":\"uint256[]\"},{\"indexed\":false,\"internalType\":\"uint256[]\",\"name\":\"amounts\",\"type\":\"uint256[]\"}],\"name\":\"TokenSent\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"Unpaused\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"ERC1155_INTERFACE_ID\",\"outputs\":[{\"internalType\":\"bytes4\",\"name\":\"\",\"type\":\"bytes4\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"ERC721_INTERFACE_ID\",\"outputs\":[{\"internalType\":\"bytes4\",\"name\":\"\",\"type\":\"bytes4\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"addressManager\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"name\":\"bridgedToCanonical\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"chainId\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"addr\",\"type\":\"address\"},{\"internalType\":\"string\",\"name\":\"symbol\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"name\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"name\":\"canonicalToBridged\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"addressManager\",\"type\":\"address\"}],\"name\":\"init\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"name\":\"isBridgedToken\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"},{\"internalType\":\"uint256[]\",\"name\":\"\",\"type\":\"uint256[]\"},{\"internalType\":\"uint256[]\",\"name\":\"\",\"type\":\"uint256[]\"},{\"internalType\":\"bytes\",\"name\":\"\",\"type\":\"bytes\"}],\"name\":\"onERC1155BatchReceived\",\"outputs\":[{\"internalType\":\"bytes4\",\"name\":\"\",\"type\":\"bytes4\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"\",\"type\":\"bytes\"}],\"name\":\"onERC1155Received\",\"outputs\":[{\"internalType\":\"bytes4\",\"name\":\"\",\"type\":\"bytes4\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"uint128\",\"name\":\"id\",\"type\":\"uint128\"},{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"srcChainId\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"destChainId\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"user\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"refundTo\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"fee\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"gasLimit\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"},{\"internalType\":\"string\",\"name\":\"memo\",\"type\":\"string\"}],\"internalType\":\"structIBridge.Message\",\"name\":\"message\",\"type\":\"tuple\"},{\"internalType\":\"bytes32\",\"name\":\"msgHash\",\"type\":\"bytes32\"}],\"name\":\"onMessageRecalled\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"owner\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"pause\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"paused\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"uint256\",\"name\":\"chainId\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"addr\",\"type\":\"address\"},{\"internalType\":\"string\",\"name\":\"symbol\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"name\",\"type\":\"string\"}],\"internalType\":\"structBaseNFTVault.CanonicalNFT\",\"name\":\"ctoken\",\"type\":\"tuple\"},{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256[]\",\"name\":\"tokenIds\",\"type\":\"uint256[]\"},{\"internalType\":\"uint256[]\",\"name\":\"amounts\",\"type\":\"uint256[]\"}],\"name\":\"receiveToken\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"renounceOwnership\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"chainId\",\"type\":\"uint256\"},{\"internalType\":\"bytes32\",\"name\":\"name\",\"type\":\"bytes32\"},{\"internalType\":\"bool\",\"name\":\"allowZeroAddress\",\"type\":\"bool\"}],\"name\":\"resolve\",\"outputs\":[{\"internalType\":\"addresspayable\",\"name\":\"addr\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"name\",\"type\":\"bytes32\"},{\"internalType\":\"bool\",\"name\":\"allowZeroAddress\",\"type\":\"bool\"}],\"name\":\"resolve\",\"outputs\":[{\"internalType\":\"addresspayable\",\"name\":\"addr\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"uint256\",\"name\":\"destChainId\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"uint256[]\",\"name\":\"tokenIds\",\"type\":\"uint256[]\"},{\"internalType\":\"uint256[]\",\"name\":\"amounts\",\"type\":\"uint256[]\"},{\"internalType\":\"uint256\",\"name\":\"gasLimit\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"fee\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"refundTo\",\"type\":\"address\"},{\"internalType\":\"string\",\"name\":\"memo\",\"type\":\"string\"}],\"internalType\":\"structBaseNFTVault.BridgeTransferOp\",\"name\":\"opt\",\"type\":\"tuple\"}],\"name\":\"sendToken\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes4\",\"name\":\"interfaceId\",\"type\":\"bytes4\"}],\"name\":\"supportsInterface\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"newOwner\",\"type\":\"address\"}],\"name\":\"transferOwnership\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"unpause\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}]", } // ERC1155VaultABI is the input ABI used to generate the binding from. @@ -520,6 +520,37 @@ func (_ERC1155Vault *ERC1155VaultCallerSession) Owner() (common.Address, error) return _ERC1155Vault.Contract.Owner(&_ERC1155Vault.CallOpts) } +// Paused is a free data retrieval call binding the contract method 0x5c975abb. +// +// Solidity: function paused() view returns(bool) +func (_ERC1155Vault *ERC1155VaultCaller) Paused(opts *bind.CallOpts) (bool, error) { + var out []interface{} + err := _ERC1155Vault.contract.Call(opts, &out, "paused") + + if err != nil { + return *new(bool), err + } + + out0 := *abi.ConvertType(out[0], new(bool)).(*bool) + + return out0, err + +} + +// Paused is a free data retrieval call binding the contract method 0x5c975abb. +// +// Solidity: function paused() view returns(bool) +func (_ERC1155Vault *ERC1155VaultSession) Paused() (bool, error) { + return _ERC1155Vault.Contract.Paused(&_ERC1155Vault.CallOpts) +} + +// Paused is a free data retrieval call binding the contract method 0x5c975abb. +// +// Solidity: function paused() view returns(bool) +func (_ERC1155Vault *ERC1155VaultCallerSession) Paused() (bool, error) { + return _ERC1155Vault.Contract.Paused(&_ERC1155Vault.CallOpts) +} + // Resolve is a free data retrieval call binding the contract method 0x6c6563f6. // // Solidity: function resolve(uint256 chainId, bytes32 name, bool allowZeroAddress) view returns(address addr) @@ -634,27 +665,48 @@ func (_ERC1155Vault *ERC1155VaultTransactorSession) Init(addressManager common.A return _ERC1155Vault.Contract.Init(&_ERC1155Vault.TransactOpts, addressManager) } -// OnMessageRecalled is a paid mutator transaction binding the contract method 0xa19ec154. +// OnMessageRecalled is a paid mutator transaction binding the contract method 0x3005fb98. // -// Solidity: function onMessageRecalled((uint256,address,uint256,uint256,address,address,address,uint256,uint256,uint256,bytes,string) message, bytes32 msgHash) payable returns() +// Solidity: function onMessageRecalled((uint128,address,uint256,uint256,address,address,address,uint256,uint256,uint256,bytes,string) message, bytes32 msgHash) payable returns() func (_ERC1155Vault *ERC1155VaultTransactor) OnMessageRecalled(opts *bind.TransactOpts, message IBridgeMessage, msgHash [32]byte) (*types.Transaction, error) { return _ERC1155Vault.contract.Transact(opts, "onMessageRecalled", message, msgHash) } -// OnMessageRecalled is a paid mutator transaction binding the contract method 0xa19ec154. +// OnMessageRecalled is a paid mutator transaction binding the contract method 0x3005fb98. // -// Solidity: function onMessageRecalled((uint256,address,uint256,uint256,address,address,address,uint256,uint256,uint256,bytes,string) message, bytes32 msgHash) payable returns() +// Solidity: function onMessageRecalled((uint128,address,uint256,uint256,address,address,address,uint256,uint256,uint256,bytes,string) message, bytes32 msgHash) payable returns() func (_ERC1155Vault *ERC1155VaultSession) OnMessageRecalled(message IBridgeMessage, msgHash [32]byte) (*types.Transaction, error) { return _ERC1155Vault.Contract.OnMessageRecalled(&_ERC1155Vault.TransactOpts, message, msgHash) } -// OnMessageRecalled is a paid mutator transaction binding the contract method 0xa19ec154. +// OnMessageRecalled is a paid mutator transaction binding the contract method 0x3005fb98. // -// Solidity: function onMessageRecalled((uint256,address,uint256,uint256,address,address,address,uint256,uint256,uint256,bytes,string) message, bytes32 msgHash) payable returns() +// Solidity: function onMessageRecalled((uint128,address,uint256,uint256,address,address,address,uint256,uint256,uint256,bytes,string) message, bytes32 msgHash) payable returns() func (_ERC1155Vault *ERC1155VaultTransactorSession) OnMessageRecalled(message IBridgeMessage, msgHash [32]byte) (*types.Transaction, error) { return _ERC1155Vault.Contract.OnMessageRecalled(&_ERC1155Vault.TransactOpts, message, msgHash) } +// Pause is a paid mutator transaction binding the contract method 0x8456cb59. +// +// Solidity: function pause() returns() +func (_ERC1155Vault *ERC1155VaultTransactor) Pause(opts *bind.TransactOpts) (*types.Transaction, error) { + return _ERC1155Vault.contract.Transact(opts, "pause") +} + +// Pause is a paid mutator transaction binding the contract method 0x8456cb59. +// +// Solidity: function pause() returns() +func (_ERC1155Vault *ERC1155VaultSession) Pause() (*types.Transaction, error) { + return _ERC1155Vault.Contract.Pause(&_ERC1155Vault.TransactOpts) +} + +// Pause is a paid mutator transaction binding the contract method 0x8456cb59. +// +// Solidity: function pause() returns() +func (_ERC1155Vault *ERC1155VaultTransactorSession) Pause() (*types.Transaction, error) { + return _ERC1155Vault.Contract.Pause(&_ERC1155Vault.TransactOpts) +} + // ReceiveToken is a paid mutator transaction binding the contract method 0x20b81559. // // Solidity: function receiveToken((uint256,address,string,string) ctoken, address from, address to, uint256[] tokenIds, uint256[] amounts) payable returns() @@ -739,6 +791,27 @@ func (_ERC1155Vault *ERC1155VaultTransactorSession) TransferOwnership(newOwner c return _ERC1155Vault.Contract.TransferOwnership(&_ERC1155Vault.TransactOpts, newOwner) } +// Unpause is a paid mutator transaction binding the contract method 0x3f4ba83a. +// +// Solidity: function unpause() returns() +func (_ERC1155Vault *ERC1155VaultTransactor) Unpause(opts *bind.TransactOpts) (*types.Transaction, error) { + return _ERC1155Vault.contract.Transact(opts, "unpause") +} + +// Unpause is a paid mutator transaction binding the contract method 0x3f4ba83a. +// +// Solidity: function unpause() returns() +func (_ERC1155Vault *ERC1155VaultSession) Unpause() (*types.Transaction, error) { + return _ERC1155Vault.Contract.Unpause(&_ERC1155Vault.TransactOpts) +} + +// Unpause is a paid mutator transaction binding the contract method 0x3f4ba83a. +// +// Solidity: function unpause() returns() +func (_ERC1155Vault *ERC1155VaultTransactorSession) Unpause() (*types.Transaction, error) { + return _ERC1155Vault.Contract.Unpause(&_ERC1155Vault.TransactOpts) +} + // ERC1155VaultBridgedTokenDeployedIterator is returned from FilterBridgedTokenDeployed and is used to iterate over the raw logs and unpacked data for BridgedTokenDeployed events raised by the ERC1155Vault contract. type ERC1155VaultBridgedTokenDeployedIterator struct { Event *ERC1155VaultBridgedTokenDeployed // Event containing the contract specifics and raw log @@ -1190,6 +1263,140 @@ func (_ERC1155Vault *ERC1155VaultFilterer) ParseOwnershipTransferred(log types.L return event, nil } +// ERC1155VaultPausedIterator is returned from FilterPaused and is used to iterate over the raw logs and unpacked data for Paused events raised by the ERC1155Vault contract. +type ERC1155VaultPausedIterator struct { + Event *ERC1155VaultPaused // Event containing the contract specifics and raw log + + contract *bind.BoundContract // Generic contract to use for unpacking event data + event string // Event name to use for unpacking event data + + logs chan types.Log // Log channel receiving the found contract events + sub ethereum.Subscription // Subscription for errors, completion and termination + done bool // Whether the subscription completed delivering logs + fail error // Occurred error to stop iteration +} + +// Next advances the iterator to the subsequent event, returning whether there +// are any more events found. In case of a retrieval or parsing error, false is +// returned and Error() can be queried for the exact failure. +func (it *ERC1155VaultPausedIterator) Next() bool { + // If the iterator failed, stop iterating + if it.fail != nil { + return false + } + // If the iterator completed, deliver directly whatever's available + if it.done { + select { + case log := <-it.logs: + it.Event = new(ERC1155VaultPaused) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + default: + return false + } + } + // Iterator still in progress, wait for either a data or an error event + select { + case log := <-it.logs: + it.Event = new(ERC1155VaultPaused) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + case err := <-it.sub.Err(): + it.done = true + it.fail = err + return it.Next() + } +} + +// Error returns any retrieval or parsing error occurred during filtering. +func (it *ERC1155VaultPausedIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *ERC1155VaultPausedIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// ERC1155VaultPaused represents a Paused event raised by the ERC1155Vault contract. +type ERC1155VaultPaused struct { + Account common.Address + Raw types.Log // Blockchain specific contextual infos +} + +// FilterPaused is a free log retrieval operation binding the contract event 0x62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a258. +// +// Solidity: event Paused(address account) +func (_ERC1155Vault *ERC1155VaultFilterer) FilterPaused(opts *bind.FilterOpts) (*ERC1155VaultPausedIterator, error) { + + logs, sub, err := _ERC1155Vault.contract.FilterLogs(opts, "Paused") + if err != nil { + return nil, err + } + return &ERC1155VaultPausedIterator{contract: _ERC1155Vault.contract, event: "Paused", logs: logs, sub: sub}, nil +} + +// WatchPaused is a free log subscription operation binding the contract event 0x62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a258. +// +// Solidity: event Paused(address account) +func (_ERC1155Vault *ERC1155VaultFilterer) WatchPaused(opts *bind.WatchOpts, sink chan<- *ERC1155VaultPaused) (event.Subscription, error) { + + logs, sub, err := _ERC1155Vault.contract.WatchLogs(opts, "Paused") + if err != nil { + return nil, err + } + return event.NewSubscription(func(quit <-chan struct{}) error { + defer sub.Unsubscribe() + for { + select { + case log := <-logs: + // New log arrived, parse the event and forward to the user + event := new(ERC1155VaultPaused) + if err := _ERC1155Vault.contract.UnpackLog(event, "Paused", log); err != nil { + return err + } + event.Raw = log + + select { + case sink <- event: + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + } + }), nil +} + +// ParsePaused is a log parse operation binding the contract event 0x62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a258. +// +// Solidity: event Paused(address account) +func (_ERC1155Vault *ERC1155VaultFilterer) ParsePaused(log types.Log) (*ERC1155VaultPaused, error) { + event := new(ERC1155VaultPaused) + if err := _ERC1155Vault.contract.UnpackLog(event, "Paused", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} + // ERC1155VaultTokenReceivedIterator is returned from FilterTokenReceived and is used to iterate over the raw logs and unpacked data for TokenReceived events raised by the ERC1155Vault contract. type ERC1155VaultTokenReceivedIterator struct { Event *ERC1155VaultTokenReceived // Event containing the contract specifics and raw log @@ -1677,3 +1884,137 @@ func (_ERC1155Vault *ERC1155VaultFilterer) ParseTokenSent(log types.Log) (*ERC11 event.Raw = log return event, nil } + +// ERC1155VaultUnpausedIterator is returned from FilterUnpaused and is used to iterate over the raw logs and unpacked data for Unpaused events raised by the ERC1155Vault contract. +type ERC1155VaultUnpausedIterator struct { + Event *ERC1155VaultUnpaused // Event containing the contract specifics and raw log + + contract *bind.BoundContract // Generic contract to use for unpacking event data + event string // Event name to use for unpacking event data + + logs chan types.Log // Log channel receiving the found contract events + sub ethereum.Subscription // Subscription for errors, completion and termination + done bool // Whether the subscription completed delivering logs + fail error // Occurred error to stop iteration +} + +// Next advances the iterator to the subsequent event, returning whether there +// are any more events found. In case of a retrieval or parsing error, false is +// returned and Error() can be queried for the exact failure. +func (it *ERC1155VaultUnpausedIterator) Next() bool { + // If the iterator failed, stop iterating + if it.fail != nil { + return false + } + // If the iterator completed, deliver directly whatever's available + if it.done { + select { + case log := <-it.logs: + it.Event = new(ERC1155VaultUnpaused) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + default: + return false + } + } + // Iterator still in progress, wait for either a data or an error event + select { + case log := <-it.logs: + it.Event = new(ERC1155VaultUnpaused) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + case err := <-it.sub.Err(): + it.done = true + it.fail = err + return it.Next() + } +} + +// Error returns any retrieval or parsing error occurred during filtering. +func (it *ERC1155VaultUnpausedIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *ERC1155VaultUnpausedIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// ERC1155VaultUnpaused represents a Unpaused event raised by the ERC1155Vault contract. +type ERC1155VaultUnpaused struct { + Account common.Address + Raw types.Log // Blockchain specific contextual infos +} + +// FilterUnpaused is a free log retrieval operation binding the contract event 0x5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa. +// +// Solidity: event Unpaused(address account) +func (_ERC1155Vault *ERC1155VaultFilterer) FilterUnpaused(opts *bind.FilterOpts) (*ERC1155VaultUnpausedIterator, error) { + + logs, sub, err := _ERC1155Vault.contract.FilterLogs(opts, "Unpaused") + if err != nil { + return nil, err + } + return &ERC1155VaultUnpausedIterator{contract: _ERC1155Vault.contract, event: "Unpaused", logs: logs, sub: sub}, nil +} + +// WatchUnpaused is a free log subscription operation binding the contract event 0x5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa. +// +// Solidity: event Unpaused(address account) +func (_ERC1155Vault *ERC1155VaultFilterer) WatchUnpaused(opts *bind.WatchOpts, sink chan<- *ERC1155VaultUnpaused) (event.Subscription, error) { + + logs, sub, err := _ERC1155Vault.contract.WatchLogs(opts, "Unpaused") + if err != nil { + return nil, err + } + return event.NewSubscription(func(quit <-chan struct{}) error { + defer sub.Unsubscribe() + for { + select { + case log := <-logs: + // New log arrived, parse the event and forward to the user + event := new(ERC1155VaultUnpaused) + if err := _ERC1155Vault.contract.UnpackLog(event, "Unpaused", log); err != nil { + return err + } + event.Raw = log + + select { + case sink <- event: + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + } + }), nil +} + +// ParseUnpaused is a log parse operation binding the contract event 0x5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa. +// +// Solidity: event Unpaused(address account) +func (_ERC1155Vault *ERC1155VaultFilterer) ParseUnpaused(log types.Log) (*ERC1155VaultUnpaused, error) { + event := new(ERC1155VaultUnpaused) + if err := _ERC1155Vault.contract.UnpackLog(event, "Unpaused", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} diff --git a/packages/relayer/bindings/erc20vault/ERC20Vault.go b/packages/relayer/bindings/erc20vault/ERC20Vault.go index 9dfc050821..d31d0be633 100644 --- a/packages/relayer/bindings/erc20vault/ERC20Vault.go +++ b/packages/relayer/bindings/erc20vault/ERC20Vault.go @@ -68,7 +68,7 @@ type IBridgeMessage struct { // ERC20VaultMetaData contains all meta data concerning the ERC20Vault contract. var ERC20VaultMetaData = &bind.MetaData{ - ABI: "[{\"inputs\":[],\"name\":\"RESOLVER_DENIED\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"RESOLVER_INVALID_MANAGER\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"chainId\",\"type\":\"uint256\"},{\"internalType\":\"bytes32\",\"name\":\"name\",\"type\":\"bytes32\"}],\"name\":\"RESOLVER_ZERO_ADDR\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"VAULT_INVALID_AMOUNT\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"VAULT_INVALID_FROM\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"VAULT_INVALID_SRC_CHAIN_ID\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"VAULT_INVALID_TO\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"VAULT_INVALID_TOKEN\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"VAULT_INVALID_USER\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"VAULT_MESSAGE_NOT_FAILED\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"VAULT_MESSAGE_RELEASED_ALREADY\",\"type\":\"error\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"srcChainId\",\"type\":\"uint256\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"ctoken\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"btoken\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"string\",\"name\":\"ctokenSymbol\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"string\",\"name\":\"ctokenName\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"uint8\",\"name\":\"ctokenDecimal\",\"type\":\"uint8\"}],\"name\":\"BridgedTokenDeployed\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint8\",\"name\":\"version\",\"type\":\"uint8\"}],\"name\":\"Initialized\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"previousOwner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"newOwner\",\"type\":\"address\"}],\"name\":\"OwnershipTransferred\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"msgHash\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"srcChainId\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"TokenReceived\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"msgHash\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"TokenReleased\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"msgHash\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"destChainId\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"TokenSent\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"addressManager\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"name\":\"bridgedToCanonical\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"chainId\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"addr\",\"type\":\"address\"},{\"internalType\":\"uint8\",\"name\":\"decimals\",\"type\":\"uint8\"},{\"internalType\":\"string\",\"name\":\"symbol\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"name\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"name\":\"canonicalToBridged\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"addressManager\",\"type\":\"address\"}],\"name\":\"init\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"name\":\"isBridgedToken\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"uint256\",\"name\":\"id\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"srcChainId\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"destChainId\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"user\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"refundTo\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"fee\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"gasLimit\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"},{\"internalType\":\"string\",\"name\":\"memo\",\"type\":\"string\"}],\"internalType\":\"structIBridge.Message\",\"name\":\"message\",\"type\":\"tuple\"},{\"internalType\":\"bytes32\",\"name\":\"msgHash\",\"type\":\"bytes32\"}],\"name\":\"onMessageRecalled\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"owner\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"uint256\",\"name\":\"chainId\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"addr\",\"type\":\"address\"},{\"internalType\":\"uint8\",\"name\":\"decimals\",\"type\":\"uint8\"},{\"internalType\":\"string\",\"name\":\"symbol\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"name\",\"type\":\"string\"}],\"internalType\":\"structERC20Vault.CanonicalERC20\",\"name\":\"ctoken\",\"type\":\"tuple\"},{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"receiveToken\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"renounceOwnership\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"chainId\",\"type\":\"uint256\"},{\"internalType\":\"bytes32\",\"name\":\"name\",\"type\":\"bytes32\"},{\"internalType\":\"bool\",\"name\":\"allowZeroAddress\",\"type\":\"bool\"}],\"name\":\"resolve\",\"outputs\":[{\"internalType\":\"addresspayable\",\"name\":\"addr\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"name\",\"type\":\"bytes32\"},{\"internalType\":\"bool\",\"name\":\"allowZeroAddress\",\"type\":\"bool\"}],\"name\":\"resolve\",\"outputs\":[{\"internalType\":\"addresspayable\",\"name\":\"addr\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"uint256\",\"name\":\"destChainId\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"gasLimit\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"fee\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"refundTo\",\"type\":\"address\"},{\"internalType\":\"string\",\"name\":\"memo\",\"type\":\"string\"}],\"internalType\":\"structERC20Vault.BridgeTransferOp\",\"name\":\"opt\",\"type\":\"tuple\"}],\"name\":\"sendToken\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes4\",\"name\":\"interfaceId\",\"type\":\"bytes4\"}],\"name\":\"supportsInterface\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"newOwner\",\"type\":\"address\"}],\"name\":\"transferOwnership\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}]", + ABI: "[{\"inputs\":[],\"name\":\"ETH_TRANSFER_FAILED\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"INVALID_PAUSE_STATUS\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"REENTRANT_CALL\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"RESOLVER_DENIED\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"RESOLVER_INVALID_MANAGER\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"chainId\",\"type\":\"uint256\"},{\"internalType\":\"bytes32\",\"name\":\"name\",\"type\":\"bytes32\"}],\"name\":\"RESOLVER_ZERO_ADDR\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"VAULT_INVALID_AMOUNT\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"VAULT_INVALID_FROM\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"VAULT_INVALID_SRC_CHAIN_ID\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"VAULT_INVALID_TO\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"VAULT_INVALID_TOKEN\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"VAULT_INVALID_USER\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"VAULT_MESSAGE_NOT_FAILED\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"VAULT_MESSAGE_RELEASED_ALREADY\",\"type\":\"error\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"srcChainId\",\"type\":\"uint256\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"ctoken\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"btoken\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"string\",\"name\":\"ctokenSymbol\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"string\",\"name\":\"ctokenName\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"uint8\",\"name\":\"ctokenDecimal\",\"type\":\"uint8\"}],\"name\":\"BridgedTokenDeployed\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint8\",\"name\":\"version\",\"type\":\"uint8\"}],\"name\":\"Initialized\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"previousOwner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"newOwner\",\"type\":\"address\"}],\"name\":\"OwnershipTransferred\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"Paused\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"msgHash\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"srcChainId\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"TokenReceived\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"msgHash\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"TokenReleased\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"msgHash\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"destChainId\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"TokenSent\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"Unpaused\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"addressManager\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"name\":\"bridgedToCanonical\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"chainId\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"addr\",\"type\":\"address\"},{\"internalType\":\"uint8\",\"name\":\"decimals\",\"type\":\"uint8\"},{\"internalType\":\"string\",\"name\":\"symbol\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"name\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"name\":\"canonicalToBridged\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"addressManager\",\"type\":\"address\"}],\"name\":\"init\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"name\":\"isBridgedToken\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"uint128\",\"name\":\"id\",\"type\":\"uint128\"},{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"srcChainId\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"destChainId\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"user\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"refundTo\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"fee\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"gasLimit\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"},{\"internalType\":\"string\",\"name\":\"memo\",\"type\":\"string\"}],\"internalType\":\"structIBridge.Message\",\"name\":\"message\",\"type\":\"tuple\"},{\"internalType\":\"bytes32\",\"name\":\"msgHash\",\"type\":\"bytes32\"}],\"name\":\"onMessageRecalled\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"owner\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"pause\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"paused\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"uint256\",\"name\":\"chainId\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"addr\",\"type\":\"address\"},{\"internalType\":\"uint8\",\"name\":\"decimals\",\"type\":\"uint8\"},{\"internalType\":\"string\",\"name\":\"symbol\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"name\",\"type\":\"string\"}],\"internalType\":\"structERC20Vault.CanonicalERC20\",\"name\":\"ctoken\",\"type\":\"tuple\"},{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"receiveToken\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"renounceOwnership\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"chainId\",\"type\":\"uint256\"},{\"internalType\":\"bytes32\",\"name\":\"name\",\"type\":\"bytes32\"},{\"internalType\":\"bool\",\"name\":\"allowZeroAddress\",\"type\":\"bool\"}],\"name\":\"resolve\",\"outputs\":[{\"internalType\":\"addresspayable\",\"name\":\"addr\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"name\",\"type\":\"bytes32\"},{\"internalType\":\"bool\",\"name\":\"allowZeroAddress\",\"type\":\"bool\"}],\"name\":\"resolve\",\"outputs\":[{\"internalType\":\"addresspayable\",\"name\":\"addr\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"uint256\",\"name\":\"destChainId\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"gasLimit\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"fee\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"refundTo\",\"type\":\"address\"},{\"internalType\":\"string\",\"name\":\"memo\",\"type\":\"string\"}],\"internalType\":\"structERC20Vault.BridgeTransferOp\",\"name\":\"opt\",\"type\":\"tuple\"}],\"name\":\"sendToken\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes4\",\"name\":\"interfaceId\",\"type\":\"bytes4\"}],\"name\":\"supportsInterface\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"newOwner\",\"type\":\"address\"}],\"name\":\"transferOwnership\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"unpause\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}]", } // ERC20VaultABI is the input ABI used to generate the binding from. @@ -401,6 +401,37 @@ func (_ERC20Vault *ERC20VaultCallerSession) Owner() (common.Address, error) { return _ERC20Vault.Contract.Owner(&_ERC20Vault.CallOpts) } +// Paused is a free data retrieval call binding the contract method 0x5c975abb. +// +// Solidity: function paused() view returns(bool) +func (_ERC20Vault *ERC20VaultCaller) Paused(opts *bind.CallOpts) (bool, error) { + var out []interface{} + err := _ERC20Vault.contract.Call(opts, &out, "paused") + + if err != nil { + return *new(bool), err + } + + out0 := *abi.ConvertType(out[0], new(bool)).(*bool) + + return out0, err + +} + +// Paused is a free data retrieval call binding the contract method 0x5c975abb. +// +// Solidity: function paused() view returns(bool) +func (_ERC20Vault *ERC20VaultSession) Paused() (bool, error) { + return _ERC20Vault.Contract.Paused(&_ERC20Vault.CallOpts) +} + +// Paused is a free data retrieval call binding the contract method 0x5c975abb. +// +// Solidity: function paused() view returns(bool) +func (_ERC20Vault *ERC20VaultCallerSession) Paused() (bool, error) { + return _ERC20Vault.Contract.Paused(&_ERC20Vault.CallOpts) +} + // Resolve is a free data retrieval call binding the contract method 0x6c6563f6. // // Solidity: function resolve(uint256 chainId, bytes32 name, bool allowZeroAddress) view returns(address addr) @@ -515,27 +546,48 @@ func (_ERC20Vault *ERC20VaultTransactorSession) Init(addressManager common.Addre return _ERC20Vault.Contract.Init(&_ERC20Vault.TransactOpts, addressManager) } -// OnMessageRecalled is a paid mutator transaction binding the contract method 0xa19ec154. +// OnMessageRecalled is a paid mutator transaction binding the contract method 0x3005fb98. // -// Solidity: function onMessageRecalled((uint256,address,uint256,uint256,address,address,address,uint256,uint256,uint256,bytes,string) message, bytes32 msgHash) payable returns() +// Solidity: function onMessageRecalled((uint128,address,uint256,uint256,address,address,address,uint256,uint256,uint256,bytes,string) message, bytes32 msgHash) payable returns() func (_ERC20Vault *ERC20VaultTransactor) OnMessageRecalled(opts *bind.TransactOpts, message IBridgeMessage, msgHash [32]byte) (*types.Transaction, error) { return _ERC20Vault.contract.Transact(opts, "onMessageRecalled", message, msgHash) } -// OnMessageRecalled is a paid mutator transaction binding the contract method 0xa19ec154. +// OnMessageRecalled is a paid mutator transaction binding the contract method 0x3005fb98. // -// Solidity: function onMessageRecalled((uint256,address,uint256,uint256,address,address,address,uint256,uint256,uint256,bytes,string) message, bytes32 msgHash) payable returns() +// Solidity: function onMessageRecalled((uint128,address,uint256,uint256,address,address,address,uint256,uint256,uint256,bytes,string) message, bytes32 msgHash) payable returns() func (_ERC20Vault *ERC20VaultSession) OnMessageRecalled(message IBridgeMessage, msgHash [32]byte) (*types.Transaction, error) { return _ERC20Vault.Contract.OnMessageRecalled(&_ERC20Vault.TransactOpts, message, msgHash) } -// OnMessageRecalled is a paid mutator transaction binding the contract method 0xa19ec154. +// OnMessageRecalled is a paid mutator transaction binding the contract method 0x3005fb98. // -// Solidity: function onMessageRecalled((uint256,address,uint256,uint256,address,address,address,uint256,uint256,uint256,bytes,string) message, bytes32 msgHash) payable returns() +// Solidity: function onMessageRecalled((uint128,address,uint256,uint256,address,address,address,uint256,uint256,uint256,bytes,string) message, bytes32 msgHash) payable returns() func (_ERC20Vault *ERC20VaultTransactorSession) OnMessageRecalled(message IBridgeMessage, msgHash [32]byte) (*types.Transaction, error) { return _ERC20Vault.Contract.OnMessageRecalled(&_ERC20Vault.TransactOpts, message, msgHash) } +// Pause is a paid mutator transaction binding the contract method 0x8456cb59. +// +// Solidity: function pause() returns() +func (_ERC20Vault *ERC20VaultTransactor) Pause(opts *bind.TransactOpts) (*types.Transaction, error) { + return _ERC20Vault.contract.Transact(opts, "pause") +} + +// Pause is a paid mutator transaction binding the contract method 0x8456cb59. +// +// Solidity: function pause() returns() +func (_ERC20Vault *ERC20VaultSession) Pause() (*types.Transaction, error) { + return _ERC20Vault.Contract.Pause(&_ERC20Vault.TransactOpts) +} + +// Pause is a paid mutator transaction binding the contract method 0x8456cb59. +// +// Solidity: function pause() returns() +func (_ERC20Vault *ERC20VaultTransactorSession) Pause() (*types.Transaction, error) { + return _ERC20Vault.Contract.Pause(&_ERC20Vault.TransactOpts) +} + // ReceiveToken is a paid mutator transaction binding the contract method 0xcb03d23c. // // Solidity: function receiveToken((uint256,address,uint8,string,string) ctoken, address from, address to, uint256 amount) payable returns() @@ -620,6 +672,27 @@ func (_ERC20Vault *ERC20VaultTransactorSession) TransferOwnership(newOwner commo return _ERC20Vault.Contract.TransferOwnership(&_ERC20Vault.TransactOpts, newOwner) } +// Unpause is a paid mutator transaction binding the contract method 0x3f4ba83a. +// +// Solidity: function unpause() returns() +func (_ERC20Vault *ERC20VaultTransactor) Unpause(opts *bind.TransactOpts) (*types.Transaction, error) { + return _ERC20Vault.contract.Transact(opts, "unpause") +} + +// Unpause is a paid mutator transaction binding the contract method 0x3f4ba83a. +// +// Solidity: function unpause() returns() +func (_ERC20Vault *ERC20VaultSession) Unpause() (*types.Transaction, error) { + return _ERC20Vault.Contract.Unpause(&_ERC20Vault.TransactOpts) +} + +// Unpause is a paid mutator transaction binding the contract method 0x3f4ba83a. +// +// Solidity: function unpause() returns() +func (_ERC20Vault *ERC20VaultTransactorSession) Unpause() (*types.Transaction, error) { + return _ERC20Vault.Contract.Unpause(&_ERC20Vault.TransactOpts) +} + // ERC20VaultBridgedTokenDeployedIterator is returned from FilterBridgedTokenDeployed and is used to iterate over the raw logs and unpacked data for BridgedTokenDeployed events raised by the ERC20Vault contract. type ERC20VaultBridgedTokenDeployedIterator struct { Event *ERC20VaultBridgedTokenDeployed // Event containing the contract specifics and raw log @@ -1072,6 +1145,140 @@ func (_ERC20Vault *ERC20VaultFilterer) ParseOwnershipTransferred(log types.Log) return event, nil } +// ERC20VaultPausedIterator is returned from FilterPaused and is used to iterate over the raw logs and unpacked data for Paused events raised by the ERC20Vault contract. +type ERC20VaultPausedIterator struct { + Event *ERC20VaultPaused // Event containing the contract specifics and raw log + + contract *bind.BoundContract // Generic contract to use for unpacking event data + event string // Event name to use for unpacking event data + + logs chan types.Log // Log channel receiving the found contract events + sub ethereum.Subscription // Subscription for errors, completion and termination + done bool // Whether the subscription completed delivering logs + fail error // Occurred error to stop iteration +} + +// Next advances the iterator to the subsequent event, returning whether there +// are any more events found. In case of a retrieval or parsing error, false is +// returned and Error() can be queried for the exact failure. +func (it *ERC20VaultPausedIterator) Next() bool { + // If the iterator failed, stop iterating + if it.fail != nil { + return false + } + // If the iterator completed, deliver directly whatever's available + if it.done { + select { + case log := <-it.logs: + it.Event = new(ERC20VaultPaused) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + default: + return false + } + } + // Iterator still in progress, wait for either a data or an error event + select { + case log := <-it.logs: + it.Event = new(ERC20VaultPaused) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + case err := <-it.sub.Err(): + it.done = true + it.fail = err + return it.Next() + } +} + +// Error returns any retrieval or parsing error occurred during filtering. +func (it *ERC20VaultPausedIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *ERC20VaultPausedIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// ERC20VaultPaused represents a Paused event raised by the ERC20Vault contract. +type ERC20VaultPaused struct { + Account common.Address + Raw types.Log // Blockchain specific contextual infos +} + +// FilterPaused is a free log retrieval operation binding the contract event 0x62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a258. +// +// Solidity: event Paused(address account) +func (_ERC20Vault *ERC20VaultFilterer) FilterPaused(opts *bind.FilterOpts) (*ERC20VaultPausedIterator, error) { + + logs, sub, err := _ERC20Vault.contract.FilterLogs(opts, "Paused") + if err != nil { + return nil, err + } + return &ERC20VaultPausedIterator{contract: _ERC20Vault.contract, event: "Paused", logs: logs, sub: sub}, nil +} + +// WatchPaused is a free log subscription operation binding the contract event 0x62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a258. +// +// Solidity: event Paused(address account) +func (_ERC20Vault *ERC20VaultFilterer) WatchPaused(opts *bind.WatchOpts, sink chan<- *ERC20VaultPaused) (event.Subscription, error) { + + logs, sub, err := _ERC20Vault.contract.WatchLogs(opts, "Paused") + if err != nil { + return nil, err + } + return event.NewSubscription(func(quit <-chan struct{}) error { + defer sub.Unsubscribe() + for { + select { + case log := <-logs: + // New log arrived, parse the event and forward to the user + event := new(ERC20VaultPaused) + if err := _ERC20Vault.contract.UnpackLog(event, "Paused", log); err != nil { + return err + } + event.Raw = log + + select { + case sink <- event: + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + } + }), nil +} + +// ParsePaused is a log parse operation binding the contract event 0x62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a258. +// +// Solidity: event Paused(address account) +func (_ERC20Vault *ERC20VaultFilterer) ParsePaused(log types.Log) (*ERC20VaultPaused, error) { + event := new(ERC20VaultPaused) + if err := _ERC20Vault.contract.UnpackLog(event, "Paused", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} + // ERC20VaultTokenReceivedIterator is returned from FilterTokenReceived and is used to iterate over the raw logs and unpacked data for TokenReceived events raised by the ERC20Vault contract. type ERC20VaultTokenReceivedIterator struct { Event *ERC20VaultTokenReceived // Event containing the contract specifics and raw log @@ -1556,3 +1763,137 @@ func (_ERC20Vault *ERC20VaultFilterer) ParseTokenSent(log types.Log) (*ERC20Vaul event.Raw = log return event, nil } + +// ERC20VaultUnpausedIterator is returned from FilterUnpaused and is used to iterate over the raw logs and unpacked data for Unpaused events raised by the ERC20Vault contract. +type ERC20VaultUnpausedIterator struct { + Event *ERC20VaultUnpaused // Event containing the contract specifics and raw log + + contract *bind.BoundContract // Generic contract to use for unpacking event data + event string // Event name to use for unpacking event data + + logs chan types.Log // Log channel receiving the found contract events + sub ethereum.Subscription // Subscription for errors, completion and termination + done bool // Whether the subscription completed delivering logs + fail error // Occurred error to stop iteration +} + +// Next advances the iterator to the subsequent event, returning whether there +// are any more events found. In case of a retrieval or parsing error, false is +// returned and Error() can be queried for the exact failure. +func (it *ERC20VaultUnpausedIterator) Next() bool { + // If the iterator failed, stop iterating + if it.fail != nil { + return false + } + // If the iterator completed, deliver directly whatever's available + if it.done { + select { + case log := <-it.logs: + it.Event = new(ERC20VaultUnpaused) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + default: + return false + } + } + // Iterator still in progress, wait for either a data or an error event + select { + case log := <-it.logs: + it.Event = new(ERC20VaultUnpaused) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + case err := <-it.sub.Err(): + it.done = true + it.fail = err + return it.Next() + } +} + +// Error returns any retrieval or parsing error occurred during filtering. +func (it *ERC20VaultUnpausedIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *ERC20VaultUnpausedIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// ERC20VaultUnpaused represents a Unpaused event raised by the ERC20Vault contract. +type ERC20VaultUnpaused struct { + Account common.Address + Raw types.Log // Blockchain specific contextual infos +} + +// FilterUnpaused is a free log retrieval operation binding the contract event 0x5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa. +// +// Solidity: event Unpaused(address account) +func (_ERC20Vault *ERC20VaultFilterer) FilterUnpaused(opts *bind.FilterOpts) (*ERC20VaultUnpausedIterator, error) { + + logs, sub, err := _ERC20Vault.contract.FilterLogs(opts, "Unpaused") + if err != nil { + return nil, err + } + return &ERC20VaultUnpausedIterator{contract: _ERC20Vault.contract, event: "Unpaused", logs: logs, sub: sub}, nil +} + +// WatchUnpaused is a free log subscription operation binding the contract event 0x5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa. +// +// Solidity: event Unpaused(address account) +func (_ERC20Vault *ERC20VaultFilterer) WatchUnpaused(opts *bind.WatchOpts, sink chan<- *ERC20VaultUnpaused) (event.Subscription, error) { + + logs, sub, err := _ERC20Vault.contract.WatchLogs(opts, "Unpaused") + if err != nil { + return nil, err + } + return event.NewSubscription(func(quit <-chan struct{}) error { + defer sub.Unsubscribe() + for { + select { + case log := <-logs: + // New log arrived, parse the event and forward to the user + event := new(ERC20VaultUnpaused) + if err := _ERC20Vault.contract.UnpackLog(event, "Unpaused", log); err != nil { + return err + } + event.Raw = log + + select { + case sink <- event: + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + } + }), nil +} + +// ParseUnpaused is a log parse operation binding the contract event 0x5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa. +// +// Solidity: event Unpaused(address account) +func (_ERC20Vault *ERC20VaultFilterer) ParseUnpaused(log types.Log) (*ERC20VaultUnpaused, error) { + event := new(ERC20VaultUnpaused) + if err := _ERC20Vault.contract.UnpackLog(event, "Unpaused", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} diff --git a/packages/relayer/bindings/erc721vault/ERC721Vault.go b/packages/relayer/bindings/erc721vault/ERC721Vault.go index edcdecaed7..e687659f89 100644 --- a/packages/relayer/bindings/erc721vault/ERC721Vault.go +++ b/packages/relayer/bindings/erc721vault/ERC721Vault.go @@ -68,7 +68,7 @@ type IBridgeMessage struct { // ERC721VaultMetaData contains all meta data concerning the ERC721Vault contract. var ERC721VaultMetaData = &bind.MetaData{ - ABI: "[{\"inputs\":[],\"name\":\"RESOLVER_DENIED\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"RESOLVER_INVALID_MANAGER\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"chainId\",\"type\":\"uint256\"},{\"internalType\":\"bytes32\",\"name\":\"name\",\"type\":\"bytes32\"}],\"name\":\"RESOLVER_ZERO_ADDR\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"VAULT_INTERFACE_NOT_SUPPORTED\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"VAULT_INVALID_AMOUNT\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"VAULT_INVALID_FROM\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"VAULT_INVALID_SRC_CHAIN_ID\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"VAULT_INVALID_TO\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"VAULT_INVALID_TOKEN\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"VAULT_INVALID_USER\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"VAULT_MAX_TOKEN_PER_TXN_EXCEEDED\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"VAULT_MESSAGE_NOT_FAILED\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"VAULT_MESSAGE_RELEASED_ALREADY\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"VAULT_TOKEN_ARRAY_MISMATCH\",\"type\":\"error\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"chainId\",\"type\":\"uint256\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"ctoken\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"btoken\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"string\",\"name\":\"ctokenSymbol\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"string\",\"name\":\"ctokenName\",\"type\":\"string\"}],\"name\":\"BridgedTokenDeployed\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint8\",\"name\":\"version\",\"type\":\"uint8\"}],\"name\":\"Initialized\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"previousOwner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"newOwner\",\"type\":\"address\"}],\"name\":\"OwnershipTransferred\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"msgHash\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"srcChainId\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256[]\",\"name\":\"tokenIds\",\"type\":\"uint256[]\"},{\"indexed\":false,\"internalType\":\"uint256[]\",\"name\":\"amounts\",\"type\":\"uint256[]\"}],\"name\":\"TokenReceived\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"msgHash\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256[]\",\"name\":\"tokenIds\",\"type\":\"uint256[]\"},{\"indexed\":false,\"internalType\":\"uint256[]\",\"name\":\"amounts\",\"type\":\"uint256[]\"}],\"name\":\"TokenReleased\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"msgHash\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"destChainId\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256[]\",\"name\":\"tokenIds\",\"type\":\"uint256[]\"},{\"indexed\":false,\"internalType\":\"uint256[]\",\"name\":\"amounts\",\"type\":\"uint256[]\"}],\"name\":\"TokenSent\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"ERC1155_INTERFACE_ID\",\"outputs\":[{\"internalType\":\"bytes4\",\"name\":\"\",\"type\":\"bytes4\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"ERC721_INTERFACE_ID\",\"outputs\":[{\"internalType\":\"bytes4\",\"name\":\"\",\"type\":\"bytes4\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"addressManager\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"name\":\"bridgedToCanonical\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"chainId\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"addr\",\"type\":\"address\"},{\"internalType\":\"string\",\"name\":\"symbol\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"name\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"name\":\"canonicalToBridged\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"addressManager\",\"type\":\"address\"}],\"name\":\"init\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"name\":\"isBridgedToken\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"\",\"type\":\"bytes\"}],\"name\":\"onERC721Received\",\"outputs\":[{\"internalType\":\"bytes4\",\"name\":\"\",\"type\":\"bytes4\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"uint256\",\"name\":\"id\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"srcChainId\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"destChainId\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"user\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"refundTo\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"fee\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"gasLimit\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"},{\"internalType\":\"string\",\"name\":\"memo\",\"type\":\"string\"}],\"internalType\":\"structIBridge.Message\",\"name\":\"message\",\"type\":\"tuple\"},{\"internalType\":\"bytes32\",\"name\":\"msgHash\",\"type\":\"bytes32\"}],\"name\":\"onMessageRecalled\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"owner\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"uint256\",\"name\":\"chainId\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"addr\",\"type\":\"address\"},{\"internalType\":\"string\",\"name\":\"symbol\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"name\",\"type\":\"string\"}],\"internalType\":\"structBaseNFTVault.CanonicalNFT\",\"name\":\"ctoken\",\"type\":\"tuple\"},{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256[]\",\"name\":\"tokenIds\",\"type\":\"uint256[]\"}],\"name\":\"receiveToken\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"renounceOwnership\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"chainId\",\"type\":\"uint256\"},{\"internalType\":\"bytes32\",\"name\":\"name\",\"type\":\"bytes32\"},{\"internalType\":\"bool\",\"name\":\"allowZeroAddress\",\"type\":\"bool\"}],\"name\":\"resolve\",\"outputs\":[{\"internalType\":\"addresspayable\",\"name\":\"addr\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"name\",\"type\":\"bytes32\"},{\"internalType\":\"bool\",\"name\":\"allowZeroAddress\",\"type\":\"bool\"}],\"name\":\"resolve\",\"outputs\":[{\"internalType\":\"addresspayable\",\"name\":\"addr\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"uint256\",\"name\":\"destChainId\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"uint256[]\",\"name\":\"tokenIds\",\"type\":\"uint256[]\"},{\"internalType\":\"uint256[]\",\"name\":\"amounts\",\"type\":\"uint256[]\"},{\"internalType\":\"uint256\",\"name\":\"gasLimit\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"fee\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"refundTo\",\"type\":\"address\"},{\"internalType\":\"string\",\"name\":\"memo\",\"type\":\"string\"}],\"internalType\":\"structBaseNFTVault.BridgeTransferOp\",\"name\":\"opt\",\"type\":\"tuple\"}],\"name\":\"sendToken\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes4\",\"name\":\"interfaceId\",\"type\":\"bytes4\"}],\"name\":\"supportsInterface\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"newOwner\",\"type\":\"address\"}],\"name\":\"transferOwnership\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}]", + ABI: "[{\"inputs\":[],\"name\":\"ETH_TRANSFER_FAILED\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"INVALID_PAUSE_STATUS\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"REENTRANT_CALL\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"RESOLVER_DENIED\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"RESOLVER_INVALID_MANAGER\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"chainId\",\"type\":\"uint256\"},{\"internalType\":\"bytes32\",\"name\":\"name\",\"type\":\"bytes32\"}],\"name\":\"RESOLVER_ZERO_ADDR\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"VAULT_INTERFACE_NOT_SUPPORTED\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"VAULT_INVALID_AMOUNT\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"VAULT_INVALID_FROM\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"VAULT_INVALID_SRC_CHAIN_ID\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"VAULT_INVALID_TO\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"VAULT_INVALID_TOKEN\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"VAULT_INVALID_USER\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"VAULT_MAX_TOKEN_PER_TXN_EXCEEDED\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"VAULT_MESSAGE_NOT_FAILED\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"VAULT_MESSAGE_RELEASED_ALREADY\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"VAULT_TOKEN_ARRAY_MISMATCH\",\"type\":\"error\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"chainId\",\"type\":\"uint256\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"ctoken\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"btoken\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"string\",\"name\":\"ctokenSymbol\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"string\",\"name\":\"ctokenName\",\"type\":\"string\"}],\"name\":\"BridgedTokenDeployed\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint8\",\"name\":\"version\",\"type\":\"uint8\"}],\"name\":\"Initialized\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"previousOwner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"newOwner\",\"type\":\"address\"}],\"name\":\"OwnershipTransferred\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"Paused\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"msgHash\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"srcChainId\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256[]\",\"name\":\"tokenIds\",\"type\":\"uint256[]\"},{\"indexed\":false,\"internalType\":\"uint256[]\",\"name\":\"amounts\",\"type\":\"uint256[]\"}],\"name\":\"TokenReceived\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"msgHash\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256[]\",\"name\":\"tokenIds\",\"type\":\"uint256[]\"},{\"indexed\":false,\"internalType\":\"uint256[]\",\"name\":\"amounts\",\"type\":\"uint256[]\"}],\"name\":\"TokenReleased\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"msgHash\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"destChainId\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256[]\",\"name\":\"tokenIds\",\"type\":\"uint256[]\"},{\"indexed\":false,\"internalType\":\"uint256[]\",\"name\":\"amounts\",\"type\":\"uint256[]\"}],\"name\":\"TokenSent\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"Unpaused\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"ERC1155_INTERFACE_ID\",\"outputs\":[{\"internalType\":\"bytes4\",\"name\":\"\",\"type\":\"bytes4\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"ERC721_INTERFACE_ID\",\"outputs\":[{\"internalType\":\"bytes4\",\"name\":\"\",\"type\":\"bytes4\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"addressManager\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"name\":\"bridgedToCanonical\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"chainId\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"addr\",\"type\":\"address\"},{\"internalType\":\"string\",\"name\":\"symbol\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"name\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"name\":\"canonicalToBridged\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"addressManager\",\"type\":\"address\"}],\"name\":\"init\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"name\":\"isBridgedToken\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"\",\"type\":\"bytes\"}],\"name\":\"onERC721Received\",\"outputs\":[{\"internalType\":\"bytes4\",\"name\":\"\",\"type\":\"bytes4\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"uint128\",\"name\":\"id\",\"type\":\"uint128\"},{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"srcChainId\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"destChainId\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"user\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"refundTo\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"fee\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"gasLimit\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"},{\"internalType\":\"string\",\"name\":\"memo\",\"type\":\"string\"}],\"internalType\":\"structIBridge.Message\",\"name\":\"message\",\"type\":\"tuple\"},{\"internalType\":\"bytes32\",\"name\":\"msgHash\",\"type\":\"bytes32\"}],\"name\":\"onMessageRecalled\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"owner\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"pause\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"paused\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"uint256\",\"name\":\"chainId\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"addr\",\"type\":\"address\"},{\"internalType\":\"string\",\"name\":\"symbol\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"name\",\"type\":\"string\"}],\"internalType\":\"structBaseNFTVault.CanonicalNFT\",\"name\":\"ctoken\",\"type\":\"tuple\"},{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256[]\",\"name\":\"tokenIds\",\"type\":\"uint256[]\"}],\"name\":\"receiveToken\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"renounceOwnership\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"chainId\",\"type\":\"uint256\"},{\"internalType\":\"bytes32\",\"name\":\"name\",\"type\":\"bytes32\"},{\"internalType\":\"bool\",\"name\":\"allowZeroAddress\",\"type\":\"bool\"}],\"name\":\"resolve\",\"outputs\":[{\"internalType\":\"addresspayable\",\"name\":\"addr\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"name\",\"type\":\"bytes32\"},{\"internalType\":\"bool\",\"name\":\"allowZeroAddress\",\"type\":\"bool\"}],\"name\":\"resolve\",\"outputs\":[{\"internalType\":\"addresspayable\",\"name\":\"addr\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"uint256\",\"name\":\"destChainId\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"uint256[]\",\"name\":\"tokenIds\",\"type\":\"uint256[]\"},{\"internalType\":\"uint256[]\",\"name\":\"amounts\",\"type\":\"uint256[]\"},{\"internalType\":\"uint256\",\"name\":\"gasLimit\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"fee\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"refundTo\",\"type\":\"address\"},{\"internalType\":\"string\",\"name\":\"memo\",\"type\":\"string\"}],\"internalType\":\"structBaseNFTVault.BridgeTransferOp\",\"name\":\"opt\",\"type\":\"tuple\"}],\"name\":\"sendToken\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes4\",\"name\":\"interfaceId\",\"type\":\"bytes4\"}],\"name\":\"supportsInterface\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"newOwner\",\"type\":\"address\"}],\"name\":\"transferOwnership\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"unpause\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}]", } // ERC721VaultABI is the input ABI used to generate the binding from. @@ -489,6 +489,37 @@ func (_ERC721Vault *ERC721VaultCallerSession) Owner() (common.Address, error) { return _ERC721Vault.Contract.Owner(&_ERC721Vault.CallOpts) } +// Paused is a free data retrieval call binding the contract method 0x5c975abb. +// +// Solidity: function paused() view returns(bool) +func (_ERC721Vault *ERC721VaultCaller) Paused(opts *bind.CallOpts) (bool, error) { + var out []interface{} + err := _ERC721Vault.contract.Call(opts, &out, "paused") + + if err != nil { + return *new(bool), err + } + + out0 := *abi.ConvertType(out[0], new(bool)).(*bool) + + return out0, err + +} + +// Paused is a free data retrieval call binding the contract method 0x5c975abb. +// +// Solidity: function paused() view returns(bool) +func (_ERC721Vault *ERC721VaultSession) Paused() (bool, error) { + return _ERC721Vault.Contract.Paused(&_ERC721Vault.CallOpts) +} + +// Paused is a free data retrieval call binding the contract method 0x5c975abb. +// +// Solidity: function paused() view returns(bool) +func (_ERC721Vault *ERC721VaultCallerSession) Paused() (bool, error) { + return _ERC721Vault.Contract.Paused(&_ERC721Vault.CallOpts) +} + // Resolve is a free data retrieval call binding the contract method 0x6c6563f6. // // Solidity: function resolve(uint256 chainId, bytes32 name, bool allowZeroAddress) view returns(address addr) @@ -603,27 +634,48 @@ func (_ERC721Vault *ERC721VaultTransactorSession) Init(addressManager common.Add return _ERC721Vault.Contract.Init(&_ERC721Vault.TransactOpts, addressManager) } -// OnMessageRecalled is a paid mutator transaction binding the contract method 0xa19ec154. +// OnMessageRecalled is a paid mutator transaction binding the contract method 0x3005fb98. // -// Solidity: function onMessageRecalled((uint256,address,uint256,uint256,address,address,address,uint256,uint256,uint256,bytes,string) message, bytes32 msgHash) payable returns() +// Solidity: function onMessageRecalled((uint128,address,uint256,uint256,address,address,address,uint256,uint256,uint256,bytes,string) message, bytes32 msgHash) payable returns() func (_ERC721Vault *ERC721VaultTransactor) OnMessageRecalled(opts *bind.TransactOpts, message IBridgeMessage, msgHash [32]byte) (*types.Transaction, error) { return _ERC721Vault.contract.Transact(opts, "onMessageRecalled", message, msgHash) } -// OnMessageRecalled is a paid mutator transaction binding the contract method 0xa19ec154. +// OnMessageRecalled is a paid mutator transaction binding the contract method 0x3005fb98. // -// Solidity: function onMessageRecalled((uint256,address,uint256,uint256,address,address,address,uint256,uint256,uint256,bytes,string) message, bytes32 msgHash) payable returns() +// Solidity: function onMessageRecalled((uint128,address,uint256,uint256,address,address,address,uint256,uint256,uint256,bytes,string) message, bytes32 msgHash) payable returns() func (_ERC721Vault *ERC721VaultSession) OnMessageRecalled(message IBridgeMessage, msgHash [32]byte) (*types.Transaction, error) { return _ERC721Vault.Contract.OnMessageRecalled(&_ERC721Vault.TransactOpts, message, msgHash) } -// OnMessageRecalled is a paid mutator transaction binding the contract method 0xa19ec154. +// OnMessageRecalled is a paid mutator transaction binding the contract method 0x3005fb98. // -// Solidity: function onMessageRecalled((uint256,address,uint256,uint256,address,address,address,uint256,uint256,uint256,bytes,string) message, bytes32 msgHash) payable returns() +// Solidity: function onMessageRecalled((uint128,address,uint256,uint256,address,address,address,uint256,uint256,uint256,bytes,string) message, bytes32 msgHash) payable returns() func (_ERC721Vault *ERC721VaultTransactorSession) OnMessageRecalled(message IBridgeMessage, msgHash [32]byte) (*types.Transaction, error) { return _ERC721Vault.Contract.OnMessageRecalled(&_ERC721Vault.TransactOpts, message, msgHash) } +// Pause is a paid mutator transaction binding the contract method 0x8456cb59. +// +// Solidity: function pause() returns() +func (_ERC721Vault *ERC721VaultTransactor) Pause(opts *bind.TransactOpts) (*types.Transaction, error) { + return _ERC721Vault.contract.Transact(opts, "pause") +} + +// Pause is a paid mutator transaction binding the contract method 0x8456cb59. +// +// Solidity: function pause() returns() +func (_ERC721Vault *ERC721VaultSession) Pause() (*types.Transaction, error) { + return _ERC721Vault.Contract.Pause(&_ERC721Vault.TransactOpts) +} + +// Pause is a paid mutator transaction binding the contract method 0x8456cb59. +// +// Solidity: function pause() returns() +func (_ERC721Vault *ERC721VaultTransactorSession) Pause() (*types.Transaction, error) { + return _ERC721Vault.Contract.Pause(&_ERC721Vault.TransactOpts) +} + // ReceiveToken is a paid mutator transaction binding the contract method 0xa9976baf. // // Solidity: function receiveToken((uint256,address,string,string) ctoken, address from, address to, uint256[] tokenIds) payable returns() @@ -708,6 +760,27 @@ func (_ERC721Vault *ERC721VaultTransactorSession) TransferOwnership(newOwner com return _ERC721Vault.Contract.TransferOwnership(&_ERC721Vault.TransactOpts, newOwner) } +// Unpause is a paid mutator transaction binding the contract method 0x3f4ba83a. +// +// Solidity: function unpause() returns() +func (_ERC721Vault *ERC721VaultTransactor) Unpause(opts *bind.TransactOpts) (*types.Transaction, error) { + return _ERC721Vault.contract.Transact(opts, "unpause") +} + +// Unpause is a paid mutator transaction binding the contract method 0x3f4ba83a. +// +// Solidity: function unpause() returns() +func (_ERC721Vault *ERC721VaultSession) Unpause() (*types.Transaction, error) { + return _ERC721Vault.Contract.Unpause(&_ERC721Vault.TransactOpts) +} + +// Unpause is a paid mutator transaction binding the contract method 0x3f4ba83a. +// +// Solidity: function unpause() returns() +func (_ERC721Vault *ERC721VaultTransactorSession) Unpause() (*types.Transaction, error) { + return _ERC721Vault.Contract.Unpause(&_ERC721Vault.TransactOpts) +} + // ERC721VaultBridgedTokenDeployedIterator is returned from FilterBridgedTokenDeployed and is used to iterate over the raw logs and unpacked data for BridgedTokenDeployed events raised by the ERC721Vault contract. type ERC721VaultBridgedTokenDeployedIterator struct { Event *ERC721VaultBridgedTokenDeployed // Event containing the contract specifics and raw log @@ -1159,6 +1232,140 @@ func (_ERC721Vault *ERC721VaultFilterer) ParseOwnershipTransferred(log types.Log return event, nil } +// ERC721VaultPausedIterator is returned from FilterPaused and is used to iterate over the raw logs and unpacked data for Paused events raised by the ERC721Vault contract. +type ERC721VaultPausedIterator struct { + Event *ERC721VaultPaused // Event containing the contract specifics and raw log + + contract *bind.BoundContract // Generic contract to use for unpacking event data + event string // Event name to use for unpacking event data + + logs chan types.Log // Log channel receiving the found contract events + sub ethereum.Subscription // Subscription for errors, completion and termination + done bool // Whether the subscription completed delivering logs + fail error // Occurred error to stop iteration +} + +// Next advances the iterator to the subsequent event, returning whether there +// are any more events found. In case of a retrieval or parsing error, false is +// returned and Error() can be queried for the exact failure. +func (it *ERC721VaultPausedIterator) Next() bool { + // If the iterator failed, stop iterating + if it.fail != nil { + return false + } + // If the iterator completed, deliver directly whatever's available + if it.done { + select { + case log := <-it.logs: + it.Event = new(ERC721VaultPaused) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + default: + return false + } + } + // Iterator still in progress, wait for either a data or an error event + select { + case log := <-it.logs: + it.Event = new(ERC721VaultPaused) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + case err := <-it.sub.Err(): + it.done = true + it.fail = err + return it.Next() + } +} + +// Error returns any retrieval or parsing error occurred during filtering. +func (it *ERC721VaultPausedIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *ERC721VaultPausedIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// ERC721VaultPaused represents a Paused event raised by the ERC721Vault contract. +type ERC721VaultPaused struct { + Account common.Address + Raw types.Log // Blockchain specific contextual infos +} + +// FilterPaused is a free log retrieval operation binding the contract event 0x62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a258. +// +// Solidity: event Paused(address account) +func (_ERC721Vault *ERC721VaultFilterer) FilterPaused(opts *bind.FilterOpts) (*ERC721VaultPausedIterator, error) { + + logs, sub, err := _ERC721Vault.contract.FilterLogs(opts, "Paused") + if err != nil { + return nil, err + } + return &ERC721VaultPausedIterator{contract: _ERC721Vault.contract, event: "Paused", logs: logs, sub: sub}, nil +} + +// WatchPaused is a free log subscription operation binding the contract event 0x62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a258. +// +// Solidity: event Paused(address account) +func (_ERC721Vault *ERC721VaultFilterer) WatchPaused(opts *bind.WatchOpts, sink chan<- *ERC721VaultPaused) (event.Subscription, error) { + + logs, sub, err := _ERC721Vault.contract.WatchLogs(opts, "Paused") + if err != nil { + return nil, err + } + return event.NewSubscription(func(quit <-chan struct{}) error { + defer sub.Unsubscribe() + for { + select { + case log := <-logs: + // New log arrived, parse the event and forward to the user + event := new(ERC721VaultPaused) + if err := _ERC721Vault.contract.UnpackLog(event, "Paused", log); err != nil { + return err + } + event.Raw = log + + select { + case sink <- event: + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + } + }), nil +} + +// ParsePaused is a log parse operation binding the contract event 0x62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a258. +// +// Solidity: event Paused(address account) +func (_ERC721Vault *ERC721VaultFilterer) ParsePaused(log types.Log) (*ERC721VaultPaused, error) { + event := new(ERC721VaultPaused) + if err := _ERC721Vault.contract.UnpackLog(event, "Paused", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} + // ERC721VaultTokenReceivedIterator is returned from FilterTokenReceived and is used to iterate over the raw logs and unpacked data for TokenReceived events raised by the ERC721Vault contract. type ERC721VaultTokenReceivedIterator struct { Event *ERC721VaultTokenReceived // Event containing the contract specifics and raw log @@ -1646,3 +1853,137 @@ func (_ERC721Vault *ERC721VaultFilterer) ParseTokenSent(log types.Log) (*ERC721V event.Raw = log return event, nil } + +// ERC721VaultUnpausedIterator is returned from FilterUnpaused and is used to iterate over the raw logs and unpacked data for Unpaused events raised by the ERC721Vault contract. +type ERC721VaultUnpausedIterator struct { + Event *ERC721VaultUnpaused // Event containing the contract specifics and raw log + + contract *bind.BoundContract // Generic contract to use for unpacking event data + event string // Event name to use for unpacking event data + + logs chan types.Log // Log channel receiving the found contract events + sub ethereum.Subscription // Subscription for errors, completion and termination + done bool // Whether the subscription completed delivering logs + fail error // Occurred error to stop iteration +} + +// Next advances the iterator to the subsequent event, returning whether there +// are any more events found. In case of a retrieval or parsing error, false is +// returned and Error() can be queried for the exact failure. +func (it *ERC721VaultUnpausedIterator) Next() bool { + // If the iterator failed, stop iterating + if it.fail != nil { + return false + } + // If the iterator completed, deliver directly whatever's available + if it.done { + select { + case log := <-it.logs: + it.Event = new(ERC721VaultUnpaused) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + default: + return false + } + } + // Iterator still in progress, wait for either a data or an error event + select { + case log := <-it.logs: + it.Event = new(ERC721VaultUnpaused) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + case err := <-it.sub.Err(): + it.done = true + it.fail = err + return it.Next() + } +} + +// Error returns any retrieval or parsing error occurred during filtering. +func (it *ERC721VaultUnpausedIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *ERC721VaultUnpausedIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// ERC721VaultUnpaused represents a Unpaused event raised by the ERC721Vault contract. +type ERC721VaultUnpaused struct { + Account common.Address + Raw types.Log // Blockchain specific contextual infos +} + +// FilterUnpaused is a free log retrieval operation binding the contract event 0x5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa. +// +// Solidity: event Unpaused(address account) +func (_ERC721Vault *ERC721VaultFilterer) FilterUnpaused(opts *bind.FilterOpts) (*ERC721VaultUnpausedIterator, error) { + + logs, sub, err := _ERC721Vault.contract.FilterLogs(opts, "Unpaused") + if err != nil { + return nil, err + } + return &ERC721VaultUnpausedIterator{contract: _ERC721Vault.contract, event: "Unpaused", logs: logs, sub: sub}, nil +} + +// WatchUnpaused is a free log subscription operation binding the contract event 0x5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa. +// +// Solidity: event Unpaused(address account) +func (_ERC721Vault *ERC721VaultFilterer) WatchUnpaused(opts *bind.WatchOpts, sink chan<- *ERC721VaultUnpaused) (event.Subscription, error) { + + logs, sub, err := _ERC721Vault.contract.WatchLogs(opts, "Unpaused") + if err != nil { + return nil, err + } + return event.NewSubscription(func(quit <-chan struct{}) error { + defer sub.Unsubscribe() + for { + select { + case log := <-logs: + // New log arrived, parse the event and forward to the user + event := new(ERC721VaultUnpaused) + if err := _ERC721Vault.contract.UnpackLog(event, "Unpaused", log); err != nil { + return err + } + event.Raw = log + + select { + case sink <- event: + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + } + }), nil +} + +// ParseUnpaused is a log parse operation binding the contract event 0x5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa. +// +// Solidity: event Unpaused(address account) +func (_ERC721Vault *ERC721VaultFilterer) ParseUnpaused(log types.Log) (*ERC721VaultUnpaused, error) { + event := new(ERC721VaultUnpaused) + if err := _ERC721Vault.contract.UnpackLog(event, "Unpaused", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} diff --git a/packages/relayer/bindings/signalservice/SignalService.go b/packages/relayer/bindings/signalservice/SignalService.go index 866cf6b6bd..a7828a854c 100644 --- a/packages/relayer/bindings/signalservice/SignalService.go +++ b/packages/relayer/bindings/signalservice/SignalService.go @@ -31,7 +31,7 @@ var ( // SignalServiceMetaData contains all meta data concerning the SignalService contract. var SignalServiceMetaData = &bind.MetaData{ - ABI: "[{\"inputs\":[],\"name\":\"RESOLVER_DENIED\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"RESOLVER_INVALID_MANAGER\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"chainId\",\"type\":\"uint256\"},{\"internalType\":\"bytes32\",\"name\":\"name\",\"type\":\"bytes32\"}],\"name\":\"RESOLVER_ZERO_ADDR\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"SS_INVALID_APP\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"SS_INVALID_SIGNAL\",\"type\":\"error\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint8\",\"name\":\"version\",\"type\":\"uint8\"}],\"name\":\"Initialized\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"previousOwner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"newOwner\",\"type\":\"address\"}],\"name\":\"OwnershipTransferred\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"addressManager\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"chainId\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"app\",\"type\":\"address\"},{\"internalType\":\"bytes32\",\"name\":\"signal\",\"type\":\"bytes32\"}],\"name\":\"getSignalSlot\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_addressManager\",\"type\":\"address\"}],\"name\":\"init\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"app\",\"type\":\"address\"},{\"internalType\":\"bytes32\",\"name\":\"signal\",\"type\":\"bytes32\"}],\"name\":\"isSignalSent\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"owner\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"srcChainId\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"app\",\"type\":\"address\"},{\"internalType\":\"bytes32\",\"name\":\"signal\",\"type\":\"bytes32\"},{\"internalType\":\"bytes\",\"name\":\"proof\",\"type\":\"bytes\"}],\"name\":\"proveSignalReceived\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"renounceOwnership\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"chainId\",\"type\":\"uint256\"},{\"internalType\":\"bytes32\",\"name\":\"name\",\"type\":\"bytes32\"},{\"internalType\":\"bool\",\"name\":\"allowZeroAddress\",\"type\":\"bool\"}],\"name\":\"resolve\",\"outputs\":[{\"internalType\":\"addresspayable\",\"name\":\"addr\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"name\",\"type\":\"bytes32\"},{\"internalType\":\"bool\",\"name\":\"allowZeroAddress\",\"type\":\"bool\"}],\"name\":\"resolve\",\"outputs\":[{\"internalType\":\"addresspayable\",\"name\":\"addr\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"signal\",\"type\":\"bytes32\"}],\"name\":\"sendSignal\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"slot\",\"type\":\"bytes32\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"skipProofCheck\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"newOwner\",\"type\":\"address\"}],\"name\":\"transferOwnership\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}]", + ABI: "[{\"inputs\":[],\"name\":\"INVALID_PAUSE_STATUS\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"REENTRANT_CALL\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"RESOLVER_DENIED\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"RESOLVER_INVALID_MANAGER\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"chainId\",\"type\":\"uint256\"},{\"internalType\":\"bytes32\",\"name\":\"name\",\"type\":\"bytes32\"}],\"name\":\"RESOLVER_ZERO_ADDR\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"SS_INVALID_APP\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"SS_INVALID_SIGNAL\",\"type\":\"error\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint8\",\"name\":\"version\",\"type\":\"uint8\"}],\"name\":\"Initialized\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"previousOwner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"newOwner\",\"type\":\"address\"}],\"name\":\"OwnershipTransferred\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"Paused\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"Unpaused\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"addressManager\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"chainId\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"app\",\"type\":\"address\"},{\"internalType\":\"bytes32\",\"name\":\"signal\",\"type\":\"bytes32\"}],\"name\":\"getSignalSlot\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_addressManager\",\"type\":\"address\"}],\"name\":\"init\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"app\",\"type\":\"address\"},{\"internalType\":\"bytes32\",\"name\":\"signal\",\"type\":\"bytes32\"}],\"name\":\"isSignalSent\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"owner\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"pause\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"paused\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"srcChainId\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"app\",\"type\":\"address\"},{\"internalType\":\"bytes32\",\"name\":\"signal\",\"type\":\"bytes32\"},{\"internalType\":\"bytes\",\"name\":\"proof\",\"type\":\"bytes\"}],\"name\":\"proveSignalReceived\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"renounceOwnership\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"chainId\",\"type\":\"uint256\"},{\"internalType\":\"bytes32\",\"name\":\"name\",\"type\":\"bytes32\"},{\"internalType\":\"bool\",\"name\":\"allowZeroAddress\",\"type\":\"bool\"}],\"name\":\"resolve\",\"outputs\":[{\"internalType\":\"addresspayable\",\"name\":\"addr\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"name\",\"type\":\"bytes32\"},{\"internalType\":\"bool\",\"name\":\"allowZeroAddress\",\"type\":\"bool\"}],\"name\":\"resolve\",\"outputs\":[{\"internalType\":\"addresspayable\",\"name\":\"addr\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"signal\",\"type\":\"bytes32\"}],\"name\":\"sendSignal\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"slot\",\"type\":\"bytes32\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"skipProofCheck\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"newOwner\",\"type\":\"address\"}],\"name\":\"transferOwnership\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"unpause\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}]", } // SignalServiceABI is the input ABI used to generate the binding from. @@ -304,6 +304,37 @@ func (_SignalService *SignalServiceCallerSession) Owner() (common.Address, error return _SignalService.Contract.Owner(&_SignalService.CallOpts) } +// Paused is a free data retrieval call binding the contract method 0x5c975abb. +// +// Solidity: function paused() view returns(bool) +func (_SignalService *SignalServiceCaller) Paused(opts *bind.CallOpts) (bool, error) { + var out []interface{} + err := _SignalService.contract.Call(opts, &out, "paused") + + if err != nil { + return *new(bool), err + } + + out0 := *abi.ConvertType(out[0], new(bool)).(*bool) + + return out0, err + +} + +// Paused is a free data retrieval call binding the contract method 0x5c975abb. +// +// Solidity: function paused() view returns(bool) +func (_SignalService *SignalServiceSession) Paused() (bool, error) { + return _SignalService.Contract.Paused(&_SignalService.CallOpts) +} + +// Paused is a free data retrieval call binding the contract method 0x5c975abb. +// +// Solidity: function paused() view returns(bool) +func (_SignalService *SignalServiceCallerSession) Paused() (bool, error) { + return _SignalService.Contract.Paused(&_SignalService.CallOpts) +} + // ProveSignalReceived is a free data retrieval call binding the contract method 0x92824e90. // // Solidity: function proveSignalReceived(uint256 srcChainId, address app, bytes32 signal, bytes proof) view returns(bool) @@ -449,6 +480,27 @@ func (_SignalService *SignalServiceTransactorSession) Init(_addressManager commo return _SignalService.Contract.Init(&_SignalService.TransactOpts, _addressManager) } +// Pause is a paid mutator transaction binding the contract method 0x8456cb59. +// +// Solidity: function pause() returns() +func (_SignalService *SignalServiceTransactor) Pause(opts *bind.TransactOpts) (*types.Transaction, error) { + return _SignalService.contract.Transact(opts, "pause") +} + +// Pause is a paid mutator transaction binding the contract method 0x8456cb59. +// +// Solidity: function pause() returns() +func (_SignalService *SignalServiceSession) Pause() (*types.Transaction, error) { + return _SignalService.Contract.Pause(&_SignalService.TransactOpts) +} + +// Pause is a paid mutator transaction binding the contract method 0x8456cb59. +// +// Solidity: function pause() returns() +func (_SignalService *SignalServiceTransactorSession) Pause() (*types.Transaction, error) { + return _SignalService.Contract.Pause(&_SignalService.TransactOpts) +} + // RenounceOwnership is a paid mutator transaction binding the contract method 0x715018a6. // // Solidity: function renounceOwnership() returns() @@ -512,6 +564,27 @@ func (_SignalService *SignalServiceTransactorSession) TransferOwnership(newOwner return _SignalService.Contract.TransferOwnership(&_SignalService.TransactOpts, newOwner) } +// Unpause is a paid mutator transaction binding the contract method 0x3f4ba83a. +// +// Solidity: function unpause() returns() +func (_SignalService *SignalServiceTransactor) Unpause(opts *bind.TransactOpts) (*types.Transaction, error) { + return _SignalService.contract.Transact(opts, "unpause") +} + +// Unpause is a paid mutator transaction binding the contract method 0x3f4ba83a. +// +// Solidity: function unpause() returns() +func (_SignalService *SignalServiceSession) Unpause() (*types.Transaction, error) { + return _SignalService.Contract.Unpause(&_SignalService.TransactOpts) +} + +// Unpause is a paid mutator transaction binding the contract method 0x3f4ba83a. +// +// Solidity: function unpause() returns() +func (_SignalService *SignalServiceTransactorSession) Unpause() (*types.Transaction, error) { + return _SignalService.Contract.Unpause(&_SignalService.TransactOpts) +} + // SignalServiceInitializedIterator is returned from FilterInitialized and is used to iterate over the raw logs and unpacked data for Initialized events raised by the SignalService contract. type SignalServiceInitializedIterator struct { Event *SignalServiceInitialized // Event containing the contract specifics and raw log @@ -798,3 +871,271 @@ func (_SignalService *SignalServiceFilterer) ParseOwnershipTransferred(log types event.Raw = log return event, nil } + +// SignalServicePausedIterator is returned from FilterPaused and is used to iterate over the raw logs and unpacked data for Paused events raised by the SignalService contract. +type SignalServicePausedIterator struct { + Event *SignalServicePaused // Event containing the contract specifics and raw log + + contract *bind.BoundContract // Generic contract to use for unpacking event data + event string // Event name to use for unpacking event data + + logs chan types.Log // Log channel receiving the found contract events + sub ethereum.Subscription // Subscription for errors, completion and termination + done bool // Whether the subscription completed delivering logs + fail error // Occurred error to stop iteration +} + +// Next advances the iterator to the subsequent event, returning whether there +// are any more events found. In case of a retrieval or parsing error, false is +// returned and Error() can be queried for the exact failure. +func (it *SignalServicePausedIterator) Next() bool { + // If the iterator failed, stop iterating + if it.fail != nil { + return false + } + // If the iterator completed, deliver directly whatever's available + if it.done { + select { + case log := <-it.logs: + it.Event = new(SignalServicePaused) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + default: + return false + } + } + // Iterator still in progress, wait for either a data or an error event + select { + case log := <-it.logs: + it.Event = new(SignalServicePaused) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + case err := <-it.sub.Err(): + it.done = true + it.fail = err + return it.Next() + } +} + +// Error returns any retrieval or parsing error occurred during filtering. +func (it *SignalServicePausedIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *SignalServicePausedIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// SignalServicePaused represents a Paused event raised by the SignalService contract. +type SignalServicePaused struct { + Account common.Address + Raw types.Log // Blockchain specific contextual infos +} + +// FilterPaused is a free log retrieval operation binding the contract event 0x62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a258. +// +// Solidity: event Paused(address account) +func (_SignalService *SignalServiceFilterer) FilterPaused(opts *bind.FilterOpts) (*SignalServicePausedIterator, error) { + + logs, sub, err := _SignalService.contract.FilterLogs(opts, "Paused") + if err != nil { + return nil, err + } + return &SignalServicePausedIterator{contract: _SignalService.contract, event: "Paused", logs: logs, sub: sub}, nil +} + +// WatchPaused is a free log subscription operation binding the contract event 0x62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a258. +// +// Solidity: event Paused(address account) +func (_SignalService *SignalServiceFilterer) WatchPaused(opts *bind.WatchOpts, sink chan<- *SignalServicePaused) (event.Subscription, error) { + + logs, sub, err := _SignalService.contract.WatchLogs(opts, "Paused") + if err != nil { + return nil, err + } + return event.NewSubscription(func(quit <-chan struct{}) error { + defer sub.Unsubscribe() + for { + select { + case log := <-logs: + // New log arrived, parse the event and forward to the user + event := new(SignalServicePaused) + if err := _SignalService.contract.UnpackLog(event, "Paused", log); err != nil { + return err + } + event.Raw = log + + select { + case sink <- event: + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + } + }), nil +} + +// ParsePaused is a log parse operation binding the contract event 0x62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a258. +// +// Solidity: event Paused(address account) +func (_SignalService *SignalServiceFilterer) ParsePaused(log types.Log) (*SignalServicePaused, error) { + event := new(SignalServicePaused) + if err := _SignalService.contract.UnpackLog(event, "Paused", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} + +// SignalServiceUnpausedIterator is returned from FilterUnpaused and is used to iterate over the raw logs and unpacked data for Unpaused events raised by the SignalService contract. +type SignalServiceUnpausedIterator struct { + Event *SignalServiceUnpaused // Event containing the contract specifics and raw log + + contract *bind.BoundContract // Generic contract to use for unpacking event data + event string // Event name to use for unpacking event data + + logs chan types.Log // Log channel receiving the found contract events + sub ethereum.Subscription // Subscription for errors, completion and termination + done bool // Whether the subscription completed delivering logs + fail error // Occurred error to stop iteration +} + +// Next advances the iterator to the subsequent event, returning whether there +// are any more events found. In case of a retrieval or parsing error, false is +// returned and Error() can be queried for the exact failure. +func (it *SignalServiceUnpausedIterator) Next() bool { + // If the iterator failed, stop iterating + if it.fail != nil { + return false + } + // If the iterator completed, deliver directly whatever's available + if it.done { + select { + case log := <-it.logs: + it.Event = new(SignalServiceUnpaused) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + default: + return false + } + } + // Iterator still in progress, wait for either a data or an error event + select { + case log := <-it.logs: + it.Event = new(SignalServiceUnpaused) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + case err := <-it.sub.Err(): + it.done = true + it.fail = err + return it.Next() + } +} + +// Error returns any retrieval or parsing error occurred during filtering. +func (it *SignalServiceUnpausedIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *SignalServiceUnpausedIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// SignalServiceUnpaused represents a Unpaused event raised by the SignalService contract. +type SignalServiceUnpaused struct { + Account common.Address + Raw types.Log // Blockchain specific contextual infos +} + +// FilterUnpaused is a free log retrieval operation binding the contract event 0x5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa. +// +// Solidity: event Unpaused(address account) +func (_SignalService *SignalServiceFilterer) FilterUnpaused(opts *bind.FilterOpts) (*SignalServiceUnpausedIterator, error) { + + logs, sub, err := _SignalService.contract.FilterLogs(opts, "Unpaused") + if err != nil { + return nil, err + } + return &SignalServiceUnpausedIterator{contract: _SignalService.contract, event: "Unpaused", logs: logs, sub: sub}, nil +} + +// WatchUnpaused is a free log subscription operation binding the contract event 0x5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa. +// +// Solidity: event Unpaused(address account) +func (_SignalService *SignalServiceFilterer) WatchUnpaused(opts *bind.WatchOpts, sink chan<- *SignalServiceUnpaused) (event.Subscription, error) { + + logs, sub, err := _SignalService.contract.WatchLogs(opts, "Unpaused") + if err != nil { + return nil, err + } + return event.NewSubscription(func(quit <-chan struct{}) error { + defer sub.Unsubscribe() + for { + select { + case log := <-logs: + // New log arrived, parse the event and forward to the user + event := new(SignalServiceUnpaused) + if err := _SignalService.contract.UnpackLog(event, "Unpaused", log); err != nil { + return err + } + event.Raw = log + + select { + case sink <- event: + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + } + }), nil +} + +// ParseUnpaused is a log parse operation binding the contract event 0x5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa. +// +// Solidity: event Unpaused(address account) +func (_SignalService *SignalServiceFilterer) ParseUnpaused(log types.Log) (*SignalServiceUnpaused, error) { + event := new(SignalServiceUnpaused) + if err := _SignalService.contract.UnpackLog(event, "Unpaused", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} diff --git a/packages/relayer/bindings/taikol1/TaikoL1.go b/packages/relayer/bindings/taikol1/TaikoL1.go index af6e0a0dd8..586b591da1 100644 --- a/packages/relayer/bindings/taikol1/TaikoL1.go +++ b/packages/relayer/bindings/taikol1/TaikoL1.go @@ -109,16 +109,9 @@ type TaikoDataSlotA struct { type TaikoDataSlotB struct { NumBlocks uint64 NextEthDepositToProcess uint64 - LastVerifiedAt uint64 LastVerifiedBlockId uint64 } -// TaikoDataSlotC is an auto generated low-level Go binding around an user-defined struct. -type TaikoDataSlotC struct { - AccumulatedReward *big.Int - LastProposedHeight uint64 -} - // TaikoDataStateVariables is an auto generated low-level Go binding around an user-defined struct. type TaikoDataStateVariables struct { GenesisHeight uint64 @@ -145,7 +138,7 @@ type TaikoDataTransition struct { // TaikoL1MetaData contains all meta data concerning the TaikoL1 contract. var TaikoL1MetaData = &bind.MetaData{ - ABI: "[{\"inputs\":[],\"name\":\"L1_ALREADY_CONTESTED\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"L1_ALREADY_CONTESTED\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"L1_ALREADY_PROVED\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"L1_ALREADY_PROVED\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"L1_ASSIGNED_PROVER_NOT_ALLOWED\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"L1_ASSIGNED_PROVER_NOT_ALLOWED\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"L1_ASSIGNMENT_EXPIRED\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"L1_ASSIGNMENT_EXPIRED\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"L1_ASSIGNMENT_INSUFFICIENT_FEE\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"L1_ASSIGNMENT_INSUFFICIENT_FEE\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"L1_ASSIGNMENT_INVALID_PARAMS\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"L1_ASSIGNMENT_INVALID_PARAMS\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"L1_ASSIGNMENT_INVALID_SIG\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"L1_ASSIGNMENT_INVALID_SIG\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"L1_BLOCK_MISMATCH\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"L1_BLOCK_MISMATCH\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"L1_BLOCK_MISMATCH\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"L1_BLOCK_MISMATCH\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"L1_INSUFFICIENT_TOKEN\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"L1_INSUFFICIENT_TOKEN\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"L1_INVALID_ADDRESS\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"L1_INVALID_ADDRESS\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"L1_INVALID_BLOCK_ID\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"L1_INVALID_BLOCK_ID\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"L1_INVALID_BLOCK_ID\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"L1_INVALID_CONFIG\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"L1_INVALID_CONFIG\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"L1_INVALID_ETH_DEPOSIT\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"L1_INVALID_ETH_DEPOSIT\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"L1_INVALID_EVIDENCE\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"L1_INVALID_EVIDENCE\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"L1_INVALID_METADATA\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"L1_INVALID_PARAM\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"L1_INVALID_PROOF\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"L1_INVALID_PROPOSER\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"L1_INVALID_PROVER\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"L1_INVALID_PROVER_SIG\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"L1_INVALID_TIER\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"L1_INVALID_TIER\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"L1_NOT_ASSIGNED_PROVER\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"L1_NOT_ASSIGNED_PROVER\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"L1_TIER_NOT_FOUND\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"L1_TIER_NOT_FOUND\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"L1_TOO_MANY_BLOCKS\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"L1_TOO_MANY_BLOCKS\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"L1_TRANSITION_ID_ZERO\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"L1_TRANSITION_ID_ZERO\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"L1_TRANSITION_NOT_FOUND\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"L1_TRANSITION_NOT_FOUND\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"L1_TXLIST_INVALID_RANGE\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"L1_TXLIST_MISMATCH\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"L1_TXLIST_MISMATCH\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"L1_TXLIST_NOT_FOUND\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"L1_TXLIST_TOO_LARGE\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"L1_TXLIST_TOO_LARGE\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"L1_UNAUTHORIZED\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"L1_UNAUTHORIZED\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"L1_UNEXPECTED_TRANSITION_ID\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"L1_UNEXPECTED_TRANSITION_ID\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"L1_UNEXPECTED_TRANSITION_TIER\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"L1_UNEXPECTED_TRANSITION_TIER\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"RESOLVER_DENIED\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"RESOLVER_INVALID_MANAGER\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"chainId\",\"type\":\"uint256\"},{\"internalType\":\"bytes32\",\"name\":\"name\",\"type\":\"bytes32\"}],\"name\":\"RESOLVER_ZERO_ADDR\",\"type\":\"error\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"blockId\",\"type\":\"uint256\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"assignedProver\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint96\",\"name\":\"livenessBond\",\"type\":\"uint96\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"proverFee\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint16\",\"name\":\"minTier\",\"type\":\"uint16\"},{\"components\":[{\"internalType\":\"bytes32\",\"name\":\"l1Hash\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"difficulty\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"txListHash\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"extraData\",\"type\":\"bytes32\"},{\"internalType\":\"uint64\",\"name\":\"id\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"timestamp\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"l1Height\",\"type\":\"uint64\"},{\"internalType\":\"uint32\",\"name\":\"gasLimit\",\"type\":\"uint32\"},{\"internalType\":\"address\",\"name\":\"coinbase\",\"type\":\"address\"},{\"components\":[{\"internalType\":\"address\",\"name\":\"recipient\",\"type\":\"address\"},{\"internalType\":\"uint96\",\"name\":\"amount\",\"type\":\"uint96\"},{\"internalType\":\"uint64\",\"name\":\"id\",\"type\":\"uint64\"}],\"internalType\":\"structTaikoData.EthDeposit[]\",\"name\":\"depositsProcessed\",\"type\":\"tuple[]\"}],\"indexed\":false,\"internalType\":\"structTaikoData.BlockMetadata\",\"name\":\"meta\",\"type\":\"tuple\"}],\"name\":\"BlockProposed\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"blockId\",\"type\":\"uint256\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"assignedProver\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint96\",\"name\":\"livenessBond\",\"type\":\"uint96\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"proverFee\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint16\",\"name\":\"minTier\",\"type\":\"uint16\"},{\"components\":[{\"internalType\":\"bytes32\",\"name\":\"l1Hash\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"difficulty\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"txListHash\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"extraData\",\"type\":\"bytes32\"},{\"internalType\":\"uint64\",\"name\":\"id\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"timestamp\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"l1Height\",\"type\":\"uint64\"},{\"internalType\":\"uint32\",\"name\":\"gasLimit\",\"type\":\"uint32\"},{\"internalType\":\"address\",\"name\":\"coinbase\",\"type\":\"address\"},{\"components\":[{\"internalType\":\"address\",\"name\":\"recipient\",\"type\":\"address\"},{\"internalType\":\"uint96\",\"name\":\"amount\",\"type\":\"uint96\"},{\"internalType\":\"uint64\",\"name\":\"id\",\"type\":\"uint64\"}],\"internalType\":\"structTaikoData.EthDeposit[]\",\"name\":\"depositsProcessed\",\"type\":\"tuple[]\"}],\"indexed\":false,\"internalType\":\"structTaikoData.BlockMetadata\",\"name\":\"meta\",\"type\":\"tuple\"}],\"name\":\"BlockProposed\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"blockId\",\"type\":\"uint256\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"assignedProver\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"prover\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"blockHash\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"signalRoot\",\"type\":\"bytes32\"}],\"name\":\"BlockVerified\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"blockId\",\"type\":\"uint256\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"assignedProver\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"prover\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"blockHash\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"signalRoot\",\"type\":\"bytes32\"}],\"name\":\"BlockVerified\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint64\",\"name\":\"srcHeight\",\"type\":\"uint64\"},{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"blockHash\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"signalRoot\",\"type\":\"bytes32\"}],\"name\":\"CrossChainSynced\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint64\",\"name\":\"srcHeight\",\"type\":\"uint64\"},{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"blockHash\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"signalRoot\",\"type\":\"bytes32\"}],\"name\":\"CrossChainSynced\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"components\":[{\"internalType\":\"address\",\"name\":\"recipient\",\"type\":\"address\"},{\"internalType\":\"uint96\",\"name\":\"amount\",\"type\":\"uint96\"},{\"internalType\":\"uint64\",\"name\":\"id\",\"type\":\"uint64\"}],\"indexed\":false,\"internalType\":\"structTaikoData.EthDeposit\",\"name\":\"deposit\",\"type\":\"tuple\"}],\"name\":\"EthDeposited\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"components\":[{\"internalType\":\"address\",\"name\":\"recipient\",\"type\":\"address\"},{\"internalType\":\"uint96\",\"name\":\"amount\",\"type\":\"uint96\"},{\"internalType\":\"uint64\",\"name\":\"id\",\"type\":\"uint64\"}],\"indexed\":false,\"internalType\":\"structTaikoData.EthDeposit\",\"name\":\"deposit\",\"type\":\"tuple\"}],\"name\":\"EthDeposited\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint8\",\"name\":\"version\",\"type\":\"uint8\"}],\"name\":\"Initialized\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"previousOwner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"newOwner\",\"type\":\"address\"}],\"name\":\"OwnershipTransferred\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"bool\",\"name\":\"minted\",\"type\":\"bool\"}],\"name\":\"TokenCredited\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"bool\",\"name\":\"minted\",\"type\":\"bool\"}],\"name\":\"TokenCredited\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"bool\",\"name\":\"fromLocalBalance\",\"type\":\"bool\"}],\"name\":\"TokenDebited\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"bool\",\"name\":\"fromLocalBalance\",\"type\":\"bool\"}],\"name\":\"TokenDebited\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"TokenDeposited\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"TokenDeposited\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"TokenWithdrawn\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"TokenWithdrawn\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"TokenWithdrawnByOwner\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"TokenWithdrawnByOwner\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"blockId\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"parentHash\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"blockHash\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"signalRoot\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"contester\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint96\",\"name\":\"contestBond\",\"type\":\"uint96\"},{\"indexed\":false,\"internalType\":\"uint16\",\"name\":\"tier\",\"type\":\"uint16\"}],\"name\":\"TransitionContested\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"blockId\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"parentHash\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"blockHash\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"signalRoot\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"contester\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint96\",\"name\":\"contestBond\",\"type\":\"uint96\"},{\"indexed\":false,\"internalType\":\"uint16\",\"name\":\"tier\",\"type\":\"uint16\"}],\"name\":\"TransitionContested\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"blockId\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"parentHash\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"blockHash\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"signalRoot\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"prover\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint96\",\"name\":\"validityBond\",\"type\":\"uint96\"},{\"indexed\":false,\"internalType\":\"uint16\",\"name\":\"tier\",\"type\":\"uint16\"}],\"name\":\"TransitionProved\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"blockId\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"parentHash\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"blockHash\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"signalRoot\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"prover\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint96\",\"name\":\"validityBond\",\"type\":\"uint96\"},{\"indexed\":false,\"internalType\":\"uint16\",\"name\":\"tier\",\"type\":\"uint16\"}],\"name\":\"TransitionProved\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"addressManager\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"canDepositEthToL2\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"recipient\",\"type\":\"address\"}],\"name\":\"depositEtherToL2\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"depositTaikoToken\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"blockId\",\"type\":\"uint64\"}],\"name\":\"getBlock\",\"outputs\":[{\"components\":[{\"internalType\":\"bytes32\",\"name\":\"metaHash\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"assignedProver\",\"type\":\"address\"},{\"internalType\":\"uint96\",\"name\":\"livenessBond\",\"type\":\"uint96\"},{\"internalType\":\"uint64\",\"name\":\"blockId\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"proposedAt\",\"type\":\"uint64\"},{\"internalType\":\"uint32\",\"name\":\"nextTransitionId\",\"type\":\"uint32\"},{\"internalType\":\"uint32\",\"name\":\"verifiedTransitionId\",\"type\":\"uint32\"},{\"internalType\":\"uint16\",\"name\":\"minTier\",\"type\":\"uint16\"},{\"internalType\":\"bytes32[7]\",\"name\":\"__reserved\",\"type\":\"bytes32[7]\"}],\"internalType\":\"structTaikoData.Block\",\"name\":\"blk\",\"type\":\"tuple\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getConfig\",\"outputs\":[{\"components\":[{\"internalType\":\"uint256\",\"name\":\"chainId\",\"type\":\"uint256\"},{\"internalType\":\"uint64\",\"name\":\"blockMaxProposals\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"blockRingBufferSize\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"maxBlocksToVerifyPerProposal\",\"type\":\"uint64\"},{\"internalType\":\"uint32\",\"name\":\"blockMaxGasLimit\",\"type\":\"uint32\"},{\"internalType\":\"uint24\",\"name\":\"blockMaxTxListBytes\",\"type\":\"uint24\"},{\"internalType\":\"uint96\",\"name\":\"livenessBond\",\"type\":\"uint96\"},{\"internalType\":\"uint256\",\"name\":\"ethDepositRingBufferSize\",\"type\":\"uint256\"},{\"internalType\":\"uint64\",\"name\":\"ethDepositMinCountPerBlock\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"ethDepositMaxCountPerBlock\",\"type\":\"uint64\"},{\"internalType\":\"uint96\",\"name\":\"ethDepositMinAmount\",\"type\":\"uint96\"},{\"internalType\":\"uint96\",\"name\":\"ethDepositMaxAmount\",\"type\":\"uint96\"},{\"internalType\":\"uint256\",\"name\":\"ethDepositGas\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"ethDepositMaxFee\",\"type\":\"uint256\"}],\"internalType\":\"structTaikoData.Config\",\"name\":\"\",\"type\":\"tuple\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"rand\",\"type\":\"uint256\"}],\"name\":\"getMinTier\",\"outputs\":[{\"internalType\":\"uint16\",\"name\":\"\",\"type\":\"uint16\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getStateVariables\",\"outputs\":[{\"components\":[{\"internalType\":\"uint64\",\"name\":\"genesisHeight\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"genesisTimestamp\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"nextEthDepositToProcess\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"numEthDeposits\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"numBlocks\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"lastVerifiedBlockId\",\"type\":\"uint64\"}],\"internalType\":\"structTaikoData.StateVariables\",\"name\":\"\",\"type\":\"tuple\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"blockId\",\"type\":\"uint64\"}],\"name\":\"getSyncedSnippet\",\"outputs\":[{\"components\":[{\"internalType\":\"bytes32\",\"name\":\"blockHash\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"signalRoot\",\"type\":\"bytes32\"}],\"internalType\":\"structICrossChainSync.Snippet\",\"name\":\"data\",\"type\":\"tuple\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"user\",\"type\":\"address\"}],\"name\":\"getTaikoTokenBalance\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint16\",\"name\":\"tierId\",\"type\":\"uint16\"}],\"name\":\"getTier\",\"outputs\":[{\"components\":[{\"internalType\":\"bytes32\",\"name\":\"verifierName\",\"type\":\"bytes32\"},{\"internalType\":\"uint96\",\"name\":\"validityBond\",\"type\":\"uint96\"},{\"internalType\":\"uint96\",\"name\":\"contestBond\",\"type\":\"uint96\"},{\"internalType\":\"uint24\",\"name\":\"cooldownWindow\",\"type\":\"uint24\"},{\"internalType\":\"uint16\",\"name\":\"provingWindow\",\"type\":\"uint16\"},{\"internalType\":\"uint8\",\"name\":\"maxBlocksToVerify\",\"type\":\"uint8\"}],\"internalType\":\"structITierProvider.Tier\",\"name\":\"\",\"type\":\"tuple\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getTierIds\",\"outputs\":[{\"internalType\":\"uint16[]\",\"name\":\"\",\"type\":\"uint16[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"blockId\",\"type\":\"uint64\"},{\"internalType\":\"bytes32\",\"name\":\"parentHash\",\"type\":\"bytes32\"}],\"name\":\"getTransition\",\"outputs\":[{\"components\":[{\"internalType\":\"bytes32\",\"name\":\"key\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"blockHash\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"signalRoot\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"prover\",\"type\":\"address\"},{\"internalType\":\"uint96\",\"name\":\"validityBond\",\"type\":\"uint96\"},{\"internalType\":\"address\",\"name\":\"contester\",\"type\":\"address\"},{\"internalType\":\"uint96\",\"name\":\"contestBond\",\"type\":\"uint96\"},{\"internalType\":\"uint64\",\"name\":\"timestamp\",\"type\":\"uint64\"},{\"internalType\":\"uint16\",\"name\":\"tier\",\"type\":\"uint16\"},{\"internalType\":\"bytes32[4]\",\"name\":\"__reserved\",\"type\":\"bytes32[4]\"}],\"internalType\":\"structTaikoData.Transition\",\"name\":\"\",\"type\":\"tuple\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_addressManager\",\"type\":\"address\"},{\"internalType\":\"bytes32\",\"name\":\"_genesisBlockHash\",\"type\":\"bytes32\"}],\"name\":\"init\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"isConfigValid\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"owner\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"ownerWithdrawTaikoToken\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"txListHash\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"extraData\",\"type\":\"bytes32\"},{\"internalType\":\"bytes\",\"name\":\"assignment\",\"type\":\"bytes\"},{\"internalType\":\"bytes\",\"name\":\"txList\",\"type\":\"bytes\"}],\"name\":\"proposeBlock\",\"outputs\":[{\"components\":[{\"internalType\":\"bytes32\",\"name\":\"l1Hash\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"difficulty\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"txListHash\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"extraData\",\"type\":\"bytes32\"},{\"internalType\":\"uint64\",\"name\":\"id\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"timestamp\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"l1Height\",\"type\":\"uint64\"},{\"internalType\":\"uint32\",\"name\":\"gasLimit\",\"type\":\"uint32\"},{\"internalType\":\"address\",\"name\":\"coinbase\",\"type\":\"address\"},{\"components\":[{\"internalType\":\"address\",\"name\":\"recipient\",\"type\":\"address\"},{\"internalType\":\"uint96\",\"name\":\"amount\",\"type\":\"uint96\"},{\"internalType\":\"uint64\",\"name\":\"id\",\"type\":\"uint64\"}],\"internalType\":\"structTaikoData.EthDeposit[]\",\"name\":\"depositsProcessed\",\"type\":\"tuple[]\"}],\"internalType\":\"structTaikoData.BlockMetadata\",\"name\":\"meta\",\"type\":\"tuple\"}],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"blockId\",\"type\":\"uint64\"},{\"internalType\":\"bytes\",\"name\":\"input\",\"type\":\"bytes\"}],\"name\":\"proveBlock\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"renounceOwnership\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"chainId\",\"type\":\"uint256\"},{\"internalType\":\"bytes32\",\"name\":\"name\",\"type\":\"bytes32\"},{\"internalType\":\"bool\",\"name\":\"allowZeroAddress\",\"type\":\"bool\"}],\"name\":\"resolve\",\"outputs\":[{\"internalType\":\"addresspayable\",\"name\":\"addr\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"name\",\"type\":\"bytes32\"},{\"internalType\":\"bool\",\"name\":\"allowZeroAddress\",\"type\":\"bool\"}],\"name\":\"resolve\",\"outputs\":[{\"internalType\":\"addresspayable\",\"name\":\"addr\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"state\",\"outputs\":[{\"components\":[{\"internalType\":\"uint64\",\"name\":\"genesisHeight\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"genesisTimestamp\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"numEthDeposits\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"nextEthDepositToProcess\",\"type\":\"uint64\"}],\"internalType\":\"structTaikoData.SlotA\",\"name\":\"slotA\",\"type\":\"tuple\"},{\"components\":[{\"internalType\":\"uint64\",\"name\":\"numBlocks\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"nextEthDepositToProcess\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"lastVerifiedAt\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"lastVerifiedBlockId\",\"type\":\"uint64\"}],\"internalType\":\"structTaikoData.SlotB\",\"name\":\"slotB\",\"type\":\"tuple\"},{\"components\":[{\"internalType\":\"uint128\",\"name\":\"accumulatedReward\",\"type\":\"uint128\"},{\"internalType\":\"uint64\",\"name\":\"lastProposedHeight\",\"type\":\"uint64\"}],\"internalType\":\"structTaikoData.SlotC\",\"name\":\"slotC\",\"type\":\"tuple\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"newOwner\",\"type\":\"address\"}],\"name\":\"transferOwnership\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"maxBlocksToVerify\",\"type\":\"uint64\"}],\"name\":\"verifyBlocks\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"withdrawTaikoToken\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"stateMutability\":\"payable\",\"type\":\"receive\"}]", + ABI: "[{\"inputs\":[],\"name\":\"ETH_TRANSFER_FAILED\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"INVALID_PAUSE_STATUS\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"L1_ALREADY_CONTESTED\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"L1_ALREADY_CONTESTED\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"L1_ALREADY_PROVED\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"L1_ALREADY_PROVED\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"L1_ASSIGNED_PROVER_NOT_ALLOWED\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"L1_ASSIGNED_PROVER_NOT_ALLOWED\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"L1_ASSIGNMENT_EXPIRED\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"L1_ASSIGNMENT_EXPIRED\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"L1_ASSIGNMENT_INSUFFICIENT_FEE\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"L1_ASSIGNMENT_INSUFFICIENT_FEE\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"L1_ASSIGNMENT_INVALID_PARAMS\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"L1_ASSIGNMENT_INVALID_PARAMS\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"L1_ASSIGNMENT_INVALID_SIG\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"L1_ASSIGNMENT_INVALID_SIG\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"L1_BLOCK_MISMATCH\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"L1_BLOCK_MISMATCH\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"L1_BLOCK_MISMATCH\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"L1_BLOCK_MISMATCH\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"L1_INSUFFICIENT_TOKEN\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"L1_INSUFFICIENT_TOKEN\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"L1_INVALID_ADDRESS\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"L1_INVALID_AMOUNT\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"L1_INVALID_AMOUNT\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"L1_INVALID_BLOCK_ID\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"L1_INVALID_BLOCK_ID\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"L1_INVALID_BLOCK_ID\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"L1_INVALID_CONFIG\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"L1_INVALID_CONFIG\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"L1_INVALID_ETH_DEPOSIT\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"L1_INVALID_ETH_DEPOSIT\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"L1_INVALID_EVIDENCE\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"L1_INVALID_EVIDENCE\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"L1_INVALID_PARAM\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"L1_INVALID_PROOF\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"L1_INVALID_TIER\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"L1_INVALID_TIER\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"L1_NOT_ASSIGNED_PROVER\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"L1_NOT_ASSIGNED_PROVER\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"L1_TIER_NOT_FOUND\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"L1_TIER_NOT_FOUND\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"L1_TOO_MANY_BLOCKS\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"L1_TOO_MANY_BLOCKS\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"L1_TRANSITION_ID_ZERO\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"L1_TRANSITION_ID_ZERO\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"L1_TRANSITION_NOT_FOUND\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"L1_TRANSITION_NOT_FOUND\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"L1_TXLIST_MISMATCH\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"L1_TXLIST_MISMATCH\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"L1_TXLIST_TOO_LARGE\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"L1_TXLIST_TOO_LARGE\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"L1_UNAUTHORIZED\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"L1_UNAUTHORIZED\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"L1_UNEXPECTED_TRANSITION_ID\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"L1_UNEXPECTED_TRANSITION_ID\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"L1_UNEXPECTED_TRANSITION_TIER\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"L1_UNEXPECTED_TRANSITION_TIER\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"REENTRANT_CALL\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"RESOLVER_DENIED\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"RESOLVER_INVALID_MANAGER\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"chainId\",\"type\":\"uint256\"},{\"internalType\":\"bytes32\",\"name\":\"name\",\"type\":\"bytes32\"}],\"name\":\"RESOLVER_ZERO_ADDR\",\"type\":\"error\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"blockId\",\"type\":\"uint256\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"assignedProver\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint96\",\"name\":\"livenessBond\",\"type\":\"uint96\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"proverFee\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint16\",\"name\":\"minTier\",\"type\":\"uint16\"},{\"components\":[{\"internalType\":\"bytes32\",\"name\":\"l1Hash\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"difficulty\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"txListHash\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"extraData\",\"type\":\"bytes32\"},{\"internalType\":\"uint64\",\"name\":\"id\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"timestamp\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"l1Height\",\"type\":\"uint64\"},{\"internalType\":\"uint32\",\"name\":\"gasLimit\",\"type\":\"uint32\"},{\"internalType\":\"address\",\"name\":\"coinbase\",\"type\":\"address\"},{\"components\":[{\"internalType\":\"address\",\"name\":\"recipient\",\"type\":\"address\"},{\"internalType\":\"uint96\",\"name\":\"amount\",\"type\":\"uint96\"},{\"internalType\":\"uint64\",\"name\":\"id\",\"type\":\"uint64\"}],\"internalType\":\"structTaikoData.EthDeposit[]\",\"name\":\"depositsProcessed\",\"type\":\"tuple[]\"}],\"indexed\":false,\"internalType\":\"structTaikoData.BlockMetadata\",\"name\":\"meta\",\"type\":\"tuple\"}],\"name\":\"BlockProposed\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"blockId\",\"type\":\"uint256\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"assignedProver\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint96\",\"name\":\"livenessBond\",\"type\":\"uint96\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"proverFee\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint16\",\"name\":\"minTier\",\"type\":\"uint16\"},{\"components\":[{\"internalType\":\"bytes32\",\"name\":\"l1Hash\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"difficulty\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"txListHash\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"extraData\",\"type\":\"bytes32\"},{\"internalType\":\"uint64\",\"name\":\"id\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"timestamp\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"l1Height\",\"type\":\"uint64\"},{\"internalType\":\"uint32\",\"name\":\"gasLimit\",\"type\":\"uint32\"},{\"internalType\":\"address\",\"name\":\"coinbase\",\"type\":\"address\"},{\"components\":[{\"internalType\":\"address\",\"name\":\"recipient\",\"type\":\"address\"},{\"internalType\":\"uint96\",\"name\":\"amount\",\"type\":\"uint96\"},{\"internalType\":\"uint64\",\"name\":\"id\",\"type\":\"uint64\"}],\"internalType\":\"structTaikoData.EthDeposit[]\",\"name\":\"depositsProcessed\",\"type\":\"tuple[]\"}],\"indexed\":false,\"internalType\":\"structTaikoData.BlockMetadata\",\"name\":\"meta\",\"type\":\"tuple\"}],\"name\":\"BlockProposed\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"blockId\",\"type\":\"uint256\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"assignedProver\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"prover\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"blockHash\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"signalRoot\",\"type\":\"bytes32\"}],\"name\":\"BlockVerified\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"blockId\",\"type\":\"uint256\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"assignedProver\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"prover\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"blockHash\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"signalRoot\",\"type\":\"bytes32\"}],\"name\":\"BlockVerified\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint64\",\"name\":\"srcHeight\",\"type\":\"uint64\"},{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"blockHash\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"signalRoot\",\"type\":\"bytes32\"}],\"name\":\"CrossChainSynced\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint64\",\"name\":\"srcHeight\",\"type\":\"uint64\"},{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"blockHash\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"signalRoot\",\"type\":\"bytes32\"}],\"name\":\"CrossChainSynced\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"components\":[{\"internalType\":\"address\",\"name\":\"recipient\",\"type\":\"address\"},{\"internalType\":\"uint96\",\"name\":\"amount\",\"type\":\"uint96\"},{\"internalType\":\"uint64\",\"name\":\"id\",\"type\":\"uint64\"}],\"indexed\":false,\"internalType\":\"structTaikoData.EthDeposit\",\"name\":\"deposit\",\"type\":\"tuple\"}],\"name\":\"EthDeposited\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"components\":[{\"internalType\":\"address\",\"name\":\"recipient\",\"type\":\"address\"},{\"internalType\":\"uint96\",\"name\":\"amount\",\"type\":\"uint96\"},{\"internalType\":\"uint64\",\"name\":\"id\",\"type\":\"uint64\"}],\"indexed\":false,\"internalType\":\"structTaikoData.EthDeposit\",\"name\":\"deposit\",\"type\":\"tuple\"}],\"name\":\"EthDeposited\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint8\",\"name\":\"version\",\"type\":\"uint8\"}],\"name\":\"Initialized\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"previousOwner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"newOwner\",\"type\":\"address\"}],\"name\":\"OwnershipTransferred\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"Paused\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"TokenCredited\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"TokenCredited\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"TokenDebited\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"TokenDebited\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"TokenDeposited\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"TokenDeposited\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"TokenWithdrawn\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"TokenWithdrawn\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"blockId\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"parentHash\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"blockHash\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"signalRoot\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"contester\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint96\",\"name\":\"contestBond\",\"type\":\"uint96\"},{\"indexed\":false,\"internalType\":\"uint16\",\"name\":\"tier\",\"type\":\"uint16\"}],\"name\":\"TransitionContested\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"blockId\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"parentHash\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"blockHash\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"signalRoot\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"contester\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint96\",\"name\":\"contestBond\",\"type\":\"uint96\"},{\"indexed\":false,\"internalType\":\"uint16\",\"name\":\"tier\",\"type\":\"uint16\"}],\"name\":\"TransitionContested\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"blockId\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"parentHash\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"blockHash\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"signalRoot\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"prover\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint96\",\"name\":\"validityBond\",\"type\":\"uint96\"},{\"indexed\":false,\"internalType\":\"uint16\",\"name\":\"tier\",\"type\":\"uint16\"}],\"name\":\"TransitionProved\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"blockId\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"parentHash\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"blockHash\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"signalRoot\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"prover\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint96\",\"name\":\"validityBond\",\"type\":\"uint96\"},{\"indexed\":false,\"internalType\":\"uint16\",\"name\":\"tier\",\"type\":\"uint16\"}],\"name\":\"TransitionProved\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"Unpaused\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"addressManager\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"canDepositEthToL2\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"recipient\",\"type\":\"address\"}],\"name\":\"depositEtherToL2\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"depositTaikoToken\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"blockId\",\"type\":\"uint64\"}],\"name\":\"getBlock\",\"outputs\":[{\"components\":[{\"internalType\":\"bytes32\",\"name\":\"metaHash\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"assignedProver\",\"type\":\"address\"},{\"internalType\":\"uint96\",\"name\":\"livenessBond\",\"type\":\"uint96\"},{\"internalType\":\"uint64\",\"name\":\"blockId\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"proposedAt\",\"type\":\"uint64\"},{\"internalType\":\"uint32\",\"name\":\"nextTransitionId\",\"type\":\"uint32\"},{\"internalType\":\"uint32\",\"name\":\"verifiedTransitionId\",\"type\":\"uint32\"},{\"internalType\":\"uint16\",\"name\":\"minTier\",\"type\":\"uint16\"},{\"internalType\":\"bytes32[7]\",\"name\":\"__reserved\",\"type\":\"bytes32[7]\"}],\"internalType\":\"structTaikoData.Block\",\"name\":\"blk\",\"type\":\"tuple\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getConfig\",\"outputs\":[{\"components\":[{\"internalType\":\"uint256\",\"name\":\"chainId\",\"type\":\"uint256\"},{\"internalType\":\"uint64\",\"name\":\"blockMaxProposals\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"blockRingBufferSize\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"maxBlocksToVerifyPerProposal\",\"type\":\"uint64\"},{\"internalType\":\"uint32\",\"name\":\"blockMaxGasLimit\",\"type\":\"uint32\"},{\"internalType\":\"uint24\",\"name\":\"blockMaxTxListBytes\",\"type\":\"uint24\"},{\"internalType\":\"uint96\",\"name\":\"livenessBond\",\"type\":\"uint96\"},{\"internalType\":\"uint256\",\"name\":\"ethDepositRingBufferSize\",\"type\":\"uint256\"},{\"internalType\":\"uint64\",\"name\":\"ethDepositMinCountPerBlock\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"ethDepositMaxCountPerBlock\",\"type\":\"uint64\"},{\"internalType\":\"uint96\",\"name\":\"ethDepositMinAmount\",\"type\":\"uint96\"},{\"internalType\":\"uint96\",\"name\":\"ethDepositMaxAmount\",\"type\":\"uint96\"},{\"internalType\":\"uint256\",\"name\":\"ethDepositGas\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"ethDepositMaxFee\",\"type\":\"uint256\"}],\"internalType\":\"structTaikoData.Config\",\"name\":\"\",\"type\":\"tuple\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"rand\",\"type\":\"uint256\"}],\"name\":\"getMinTier\",\"outputs\":[{\"internalType\":\"uint16\",\"name\":\"\",\"type\":\"uint16\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getStateVariables\",\"outputs\":[{\"components\":[{\"internalType\":\"uint64\",\"name\":\"genesisHeight\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"genesisTimestamp\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"nextEthDepositToProcess\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"numEthDeposits\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"numBlocks\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"lastVerifiedBlockId\",\"type\":\"uint64\"}],\"internalType\":\"structTaikoData.StateVariables\",\"name\":\"\",\"type\":\"tuple\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"blockId\",\"type\":\"uint64\"}],\"name\":\"getSyncedSnippet\",\"outputs\":[{\"components\":[{\"internalType\":\"bytes32\",\"name\":\"blockHash\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"signalRoot\",\"type\":\"bytes32\"}],\"internalType\":\"structICrossChainSync.Snippet\",\"name\":\"data\",\"type\":\"tuple\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"user\",\"type\":\"address\"}],\"name\":\"getTaikoTokenBalance\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint16\",\"name\":\"tierId\",\"type\":\"uint16\"}],\"name\":\"getTier\",\"outputs\":[{\"components\":[{\"internalType\":\"bytes32\",\"name\":\"verifierName\",\"type\":\"bytes32\"},{\"internalType\":\"uint96\",\"name\":\"validityBond\",\"type\":\"uint96\"},{\"internalType\":\"uint96\",\"name\":\"contestBond\",\"type\":\"uint96\"},{\"internalType\":\"uint24\",\"name\":\"cooldownWindow\",\"type\":\"uint24\"},{\"internalType\":\"uint16\",\"name\":\"provingWindow\",\"type\":\"uint16\"},{\"internalType\":\"uint8\",\"name\":\"maxBlocksToVerify\",\"type\":\"uint8\"}],\"internalType\":\"structITierProvider.Tier\",\"name\":\"\",\"type\":\"tuple\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getTierIds\",\"outputs\":[{\"internalType\":\"uint16[]\",\"name\":\"\",\"type\":\"uint16[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"blockId\",\"type\":\"uint64\"},{\"internalType\":\"bytes32\",\"name\":\"parentHash\",\"type\":\"bytes32\"}],\"name\":\"getTransition\",\"outputs\":[{\"components\":[{\"internalType\":\"bytes32\",\"name\":\"key\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"blockHash\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"signalRoot\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"prover\",\"type\":\"address\"},{\"internalType\":\"uint96\",\"name\":\"validityBond\",\"type\":\"uint96\"},{\"internalType\":\"address\",\"name\":\"contester\",\"type\":\"address\"},{\"internalType\":\"uint96\",\"name\":\"contestBond\",\"type\":\"uint96\"},{\"internalType\":\"uint64\",\"name\":\"timestamp\",\"type\":\"uint64\"},{\"internalType\":\"uint16\",\"name\":\"tier\",\"type\":\"uint16\"},{\"internalType\":\"bytes32[4]\",\"name\":\"__reserved\",\"type\":\"bytes32[4]\"}],\"internalType\":\"structTaikoData.Transition\",\"name\":\"\",\"type\":\"tuple\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_addressManager\",\"type\":\"address\"},{\"internalType\":\"bytes32\",\"name\":\"_genesisBlockHash\",\"type\":\"bytes32\"}],\"name\":\"init\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"isConfigValid\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"owner\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"pause\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"paused\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"txListHash\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"extraData\",\"type\":\"bytes32\"},{\"internalType\":\"bytes\",\"name\":\"assignment\",\"type\":\"bytes\"},{\"internalType\":\"bytes\",\"name\":\"txList\",\"type\":\"bytes\"}],\"name\":\"proposeBlock\",\"outputs\":[{\"components\":[{\"internalType\":\"bytes32\",\"name\":\"l1Hash\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"difficulty\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"txListHash\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"extraData\",\"type\":\"bytes32\"},{\"internalType\":\"uint64\",\"name\":\"id\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"timestamp\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"l1Height\",\"type\":\"uint64\"},{\"internalType\":\"uint32\",\"name\":\"gasLimit\",\"type\":\"uint32\"},{\"internalType\":\"address\",\"name\":\"coinbase\",\"type\":\"address\"},{\"components\":[{\"internalType\":\"address\",\"name\":\"recipient\",\"type\":\"address\"},{\"internalType\":\"uint96\",\"name\":\"amount\",\"type\":\"uint96\"},{\"internalType\":\"uint64\",\"name\":\"id\",\"type\":\"uint64\"}],\"internalType\":\"structTaikoData.EthDeposit[]\",\"name\":\"depositsProcessed\",\"type\":\"tuple[]\"}],\"internalType\":\"structTaikoData.BlockMetadata\",\"name\":\"meta\",\"type\":\"tuple\"}],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"blockId\",\"type\":\"uint64\"},{\"internalType\":\"bytes\",\"name\":\"input\",\"type\":\"bytes\"}],\"name\":\"proveBlock\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"renounceOwnership\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"chainId\",\"type\":\"uint256\"},{\"internalType\":\"bytes32\",\"name\":\"name\",\"type\":\"bytes32\"},{\"internalType\":\"bool\",\"name\":\"allowZeroAddress\",\"type\":\"bool\"}],\"name\":\"resolve\",\"outputs\":[{\"internalType\":\"addresspayable\",\"name\":\"addr\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"name\",\"type\":\"bytes32\"},{\"internalType\":\"bool\",\"name\":\"allowZeroAddress\",\"type\":\"bool\"}],\"name\":\"resolve\",\"outputs\":[{\"internalType\":\"addresspayable\",\"name\":\"addr\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"state\",\"outputs\":[{\"components\":[{\"internalType\":\"uint64\",\"name\":\"genesisHeight\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"genesisTimestamp\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"numEthDeposits\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"nextEthDepositToProcess\",\"type\":\"uint64\"}],\"internalType\":\"structTaikoData.SlotA\",\"name\":\"slotA\",\"type\":\"tuple\"},{\"components\":[{\"internalType\":\"uint64\",\"name\":\"numBlocks\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"nextEthDepositToProcess\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"lastVerifiedBlockId\",\"type\":\"uint64\"}],\"internalType\":\"structTaikoData.SlotB\",\"name\":\"slotB\",\"type\":\"tuple\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"newOwner\",\"type\":\"address\"}],\"name\":\"transferOwnership\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"unpause\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"maxBlocksToVerify\",\"type\":\"uint64\"}],\"name\":\"verifyBlocks\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"withdrawTaikoToken\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"stateMutability\":\"payable\",\"type\":\"receive\"}]", } // TaikoL1ABI is the input ABI used to generate the binding from. @@ -389,7 +382,7 @@ func (_TaikoL1 *TaikoL1CallerSession) GetBlock(blockId uint64) (TaikoDataBlock, // GetConfig is a free data retrieval call binding the contract method 0xc3f909d4. // -// Solidity: function getConfig() pure returns((uint256,uint64,uint64,uint64,uint32,uint24,uint96,uint256,uint64,uint64,uint96,uint96,uint256,uint256)) +// Solidity: function getConfig() view returns((uint256,uint64,uint64,uint64,uint32,uint24,uint96,uint256,uint64,uint64,uint96,uint96,uint256,uint256)) func (_TaikoL1 *TaikoL1Caller) GetConfig(opts *bind.CallOpts) (TaikoDataConfig, error) { var out []interface{} err := _TaikoL1.contract.Call(opts, &out, "getConfig") @@ -406,14 +399,14 @@ func (_TaikoL1 *TaikoL1Caller) GetConfig(opts *bind.CallOpts) (TaikoDataConfig, // GetConfig is a free data retrieval call binding the contract method 0xc3f909d4. // -// Solidity: function getConfig() pure returns((uint256,uint64,uint64,uint64,uint32,uint24,uint96,uint256,uint64,uint64,uint96,uint96,uint256,uint256)) +// Solidity: function getConfig() view returns((uint256,uint64,uint64,uint64,uint32,uint24,uint96,uint256,uint64,uint64,uint96,uint96,uint256,uint256)) func (_TaikoL1 *TaikoL1Session) GetConfig() (TaikoDataConfig, error) { return _TaikoL1.Contract.GetConfig(&_TaikoL1.CallOpts) } // GetConfig is a free data retrieval call binding the contract method 0xc3f909d4. // -// Solidity: function getConfig() pure returns((uint256,uint64,uint64,uint64,uint32,uint24,uint96,uint256,uint64,uint64,uint96,uint96,uint256,uint256)) +// Solidity: function getConfig() view returns((uint256,uint64,uint64,uint64,uint32,uint24,uint96,uint256,uint64,uint64,uint96,uint96,uint256,uint256)) func (_TaikoL1 *TaikoL1CallerSession) GetConfig() (TaikoDataConfig, error) { return _TaikoL1.Contract.GetConfig(&_TaikoL1.CallOpts) } @@ -637,7 +630,7 @@ func (_TaikoL1 *TaikoL1CallerSession) GetTransition(blockId uint64, parentHash [ // IsConfigValid is a free data retrieval call binding the contract method 0xe3f1bdc5. // -// Solidity: function isConfigValid() pure returns(bool) +// Solidity: function isConfigValid() view returns(bool) func (_TaikoL1 *TaikoL1Caller) IsConfigValid(opts *bind.CallOpts) (bool, error) { var out []interface{} err := _TaikoL1.contract.Call(opts, &out, "isConfigValid") @@ -654,14 +647,14 @@ func (_TaikoL1 *TaikoL1Caller) IsConfigValid(opts *bind.CallOpts) (bool, error) // IsConfigValid is a free data retrieval call binding the contract method 0xe3f1bdc5. // -// Solidity: function isConfigValid() pure returns(bool) +// Solidity: function isConfigValid() view returns(bool) func (_TaikoL1 *TaikoL1Session) IsConfigValid() (bool, error) { return _TaikoL1.Contract.IsConfigValid(&_TaikoL1.CallOpts) } // IsConfigValid is a free data retrieval call binding the contract method 0xe3f1bdc5. // -// Solidity: function isConfigValid() pure returns(bool) +// Solidity: function isConfigValid() view returns(bool) func (_TaikoL1 *TaikoL1CallerSession) IsConfigValid() (bool, error) { return _TaikoL1.Contract.IsConfigValid(&_TaikoL1.CallOpts) } @@ -697,6 +690,37 @@ func (_TaikoL1 *TaikoL1CallerSession) Owner() (common.Address, error) { return _TaikoL1.Contract.Owner(&_TaikoL1.CallOpts) } +// Paused is a free data retrieval call binding the contract method 0x5c975abb. +// +// Solidity: function paused() view returns(bool) +func (_TaikoL1 *TaikoL1Caller) Paused(opts *bind.CallOpts) (bool, error) { + var out []interface{} + err := _TaikoL1.contract.Call(opts, &out, "paused") + + if err != nil { + return *new(bool), err + } + + out0 := *abi.ConvertType(out[0], new(bool)).(*bool) + + return out0, err + +} + +// Paused is a free data retrieval call binding the contract method 0x5c975abb. +// +// Solidity: function paused() view returns(bool) +func (_TaikoL1 *TaikoL1Session) Paused() (bool, error) { + return _TaikoL1.Contract.Paused(&_TaikoL1.CallOpts) +} + +// Paused is a free data retrieval call binding the contract method 0x5c975abb. +// +// Solidity: function paused() view returns(bool) +func (_TaikoL1 *TaikoL1CallerSession) Paused() (bool, error) { + return _TaikoL1.Contract.Paused(&_TaikoL1.CallOpts) +} + // Resolve is a free data retrieval call binding the contract method 0x6c6563f6. // // Solidity: function resolve(uint256 chainId, bytes32 name, bool allowZeroAddress) view returns(address addr) @@ -761,11 +785,10 @@ func (_TaikoL1 *TaikoL1CallerSession) Resolve0(name [32]byte, allowZeroAddress b // State is a free data retrieval call binding the contract method 0xc19d93fb. // -// Solidity: function state() view returns((uint64,uint64,uint64,uint64) slotA, (uint64,uint64,uint64,uint64) slotB, (uint128,uint64) slotC) +// Solidity: function state() view returns((uint64,uint64,uint64,uint64) slotA, (uint64,uint64,uint64) slotB) func (_TaikoL1 *TaikoL1Caller) State(opts *bind.CallOpts) (struct { SlotA TaikoDataSlotA SlotB TaikoDataSlotB - SlotC TaikoDataSlotC }, error) { var out []interface{} err := _TaikoL1.contract.Call(opts, &out, "state") @@ -773,7 +796,6 @@ func (_TaikoL1 *TaikoL1Caller) State(opts *bind.CallOpts) (struct { outstruct := new(struct { SlotA TaikoDataSlotA SlotB TaikoDataSlotB - SlotC TaikoDataSlotC }) if err != nil { return *outstruct, err @@ -781,7 +803,6 @@ func (_TaikoL1 *TaikoL1Caller) State(opts *bind.CallOpts) (struct { outstruct.SlotA = *abi.ConvertType(out[0], new(TaikoDataSlotA)).(*TaikoDataSlotA) outstruct.SlotB = *abi.ConvertType(out[1], new(TaikoDataSlotB)).(*TaikoDataSlotB) - outstruct.SlotC = *abi.ConvertType(out[2], new(TaikoDataSlotC)).(*TaikoDataSlotC) return *outstruct, err @@ -789,22 +810,20 @@ func (_TaikoL1 *TaikoL1Caller) State(opts *bind.CallOpts) (struct { // State is a free data retrieval call binding the contract method 0xc19d93fb. // -// Solidity: function state() view returns((uint64,uint64,uint64,uint64) slotA, (uint64,uint64,uint64,uint64) slotB, (uint128,uint64) slotC) +// Solidity: function state() view returns((uint64,uint64,uint64,uint64) slotA, (uint64,uint64,uint64) slotB) func (_TaikoL1 *TaikoL1Session) State() (struct { SlotA TaikoDataSlotA SlotB TaikoDataSlotB - SlotC TaikoDataSlotC }, error) { return _TaikoL1.Contract.State(&_TaikoL1.CallOpts) } // State is a free data retrieval call binding the contract method 0xc19d93fb. // -// Solidity: function state() view returns((uint64,uint64,uint64,uint64) slotA, (uint64,uint64,uint64,uint64) slotB, (uint128,uint64) slotC) +// Solidity: function state() view returns((uint64,uint64,uint64,uint64) slotA, (uint64,uint64,uint64) slotB) func (_TaikoL1 *TaikoL1CallerSession) State() (struct { SlotA TaikoDataSlotA SlotB TaikoDataSlotB - SlotC TaikoDataSlotC }, error) { return _TaikoL1.Contract.State(&_TaikoL1.CallOpts) } @@ -872,25 +891,25 @@ func (_TaikoL1 *TaikoL1TransactorSession) Init(_addressManager common.Address, _ return _TaikoL1.Contract.Init(&_TaikoL1.TransactOpts, _addressManager, _genesisBlockHash) } -// OwnerWithdrawTaikoToken is a paid mutator transaction binding the contract method 0x6edda419. +// Pause is a paid mutator transaction binding the contract method 0x8456cb59. // -// Solidity: function ownerWithdrawTaikoToken(address to, uint256 amount) returns() -func (_TaikoL1 *TaikoL1Transactor) OwnerWithdrawTaikoToken(opts *bind.TransactOpts, to common.Address, amount *big.Int) (*types.Transaction, error) { - return _TaikoL1.contract.Transact(opts, "ownerWithdrawTaikoToken", to, amount) +// Solidity: function pause() returns() +func (_TaikoL1 *TaikoL1Transactor) Pause(opts *bind.TransactOpts) (*types.Transaction, error) { + return _TaikoL1.contract.Transact(opts, "pause") } -// OwnerWithdrawTaikoToken is a paid mutator transaction binding the contract method 0x6edda419. +// Pause is a paid mutator transaction binding the contract method 0x8456cb59. // -// Solidity: function ownerWithdrawTaikoToken(address to, uint256 amount) returns() -func (_TaikoL1 *TaikoL1Session) OwnerWithdrawTaikoToken(to common.Address, amount *big.Int) (*types.Transaction, error) { - return _TaikoL1.Contract.OwnerWithdrawTaikoToken(&_TaikoL1.TransactOpts, to, amount) +// Solidity: function pause() returns() +func (_TaikoL1 *TaikoL1Session) Pause() (*types.Transaction, error) { + return _TaikoL1.Contract.Pause(&_TaikoL1.TransactOpts) } -// OwnerWithdrawTaikoToken is a paid mutator transaction binding the contract method 0x6edda419. +// Pause is a paid mutator transaction binding the contract method 0x8456cb59. // -// Solidity: function ownerWithdrawTaikoToken(address to, uint256 amount) returns() -func (_TaikoL1 *TaikoL1TransactorSession) OwnerWithdrawTaikoToken(to common.Address, amount *big.Int) (*types.Transaction, error) { - return _TaikoL1.Contract.OwnerWithdrawTaikoToken(&_TaikoL1.TransactOpts, to, amount) +// Solidity: function pause() returns() +func (_TaikoL1 *TaikoL1TransactorSession) Pause() (*types.Transaction, error) { + return _TaikoL1.Contract.Pause(&_TaikoL1.TransactOpts) } // ProposeBlock is a paid mutator transaction binding the contract method 0x04dc4c8b. @@ -977,6 +996,27 @@ func (_TaikoL1 *TaikoL1TransactorSession) TransferOwnership(newOwner common.Addr return _TaikoL1.Contract.TransferOwnership(&_TaikoL1.TransactOpts, newOwner) } +// Unpause is a paid mutator transaction binding the contract method 0x3f4ba83a. +// +// Solidity: function unpause() returns() +func (_TaikoL1 *TaikoL1Transactor) Unpause(opts *bind.TransactOpts) (*types.Transaction, error) { + return _TaikoL1.contract.Transact(opts, "unpause") +} + +// Unpause is a paid mutator transaction binding the contract method 0x3f4ba83a. +// +// Solidity: function unpause() returns() +func (_TaikoL1 *TaikoL1Session) Unpause() (*types.Transaction, error) { + return _TaikoL1.Contract.Unpause(&_TaikoL1.TransactOpts) +} + +// Unpause is a paid mutator transaction binding the contract method 0x3f4ba83a. +// +// Solidity: function unpause() returns() +func (_TaikoL1 *TaikoL1TransactorSession) Unpause() (*types.Transaction, error) { + return _TaikoL1.Contract.Unpause(&_TaikoL1.TransactOpts) +} + // VerifyBlocks is a paid mutator transaction binding the contract method 0x8778209d. // // Solidity: function verifyBlocks(uint64 maxBlocksToVerify) returns() @@ -2529,6 +2569,140 @@ func (_TaikoL1 *TaikoL1Filterer) ParseOwnershipTransferred(log types.Log) (*Taik return event, nil } +// TaikoL1PausedIterator is returned from FilterPaused and is used to iterate over the raw logs and unpacked data for Paused events raised by the TaikoL1 contract. +type TaikoL1PausedIterator struct { + Event *TaikoL1Paused // Event containing the contract specifics and raw log + + contract *bind.BoundContract // Generic contract to use for unpacking event data + event string // Event name to use for unpacking event data + + logs chan types.Log // Log channel receiving the found contract events + sub ethereum.Subscription // Subscription for errors, completion and termination + done bool // Whether the subscription completed delivering logs + fail error // Occurred error to stop iteration +} + +// Next advances the iterator to the subsequent event, returning whether there +// are any more events found. In case of a retrieval or parsing error, false is +// returned and Error() can be queried for the exact failure. +func (it *TaikoL1PausedIterator) Next() bool { + // If the iterator failed, stop iterating + if it.fail != nil { + return false + } + // If the iterator completed, deliver directly whatever's available + if it.done { + select { + case log := <-it.logs: + it.Event = new(TaikoL1Paused) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + default: + return false + } + } + // Iterator still in progress, wait for either a data or an error event + select { + case log := <-it.logs: + it.Event = new(TaikoL1Paused) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + case err := <-it.sub.Err(): + it.done = true + it.fail = err + return it.Next() + } +} + +// Error returns any retrieval or parsing error occurred during filtering. +func (it *TaikoL1PausedIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *TaikoL1PausedIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// TaikoL1Paused represents a Paused event raised by the TaikoL1 contract. +type TaikoL1Paused struct { + Account common.Address + Raw types.Log // Blockchain specific contextual infos +} + +// FilterPaused is a free log retrieval operation binding the contract event 0x62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a258. +// +// Solidity: event Paused(address account) +func (_TaikoL1 *TaikoL1Filterer) FilterPaused(opts *bind.FilterOpts) (*TaikoL1PausedIterator, error) { + + logs, sub, err := _TaikoL1.contract.FilterLogs(opts, "Paused") + if err != nil { + return nil, err + } + return &TaikoL1PausedIterator{contract: _TaikoL1.contract, event: "Paused", logs: logs, sub: sub}, nil +} + +// WatchPaused is a free log subscription operation binding the contract event 0x62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a258. +// +// Solidity: event Paused(address account) +func (_TaikoL1 *TaikoL1Filterer) WatchPaused(opts *bind.WatchOpts, sink chan<- *TaikoL1Paused) (event.Subscription, error) { + + logs, sub, err := _TaikoL1.contract.WatchLogs(opts, "Paused") + if err != nil { + return nil, err + } + return event.NewSubscription(func(quit <-chan struct{}) error { + defer sub.Unsubscribe() + for { + select { + case log := <-logs: + // New log arrived, parse the event and forward to the user + event := new(TaikoL1Paused) + if err := _TaikoL1.contract.UnpackLog(event, "Paused", log); err != nil { + return err + } + event.Raw = log + + select { + case sink <- event: + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + } + }), nil +} + +// ParsePaused is a log parse operation binding the contract event 0x62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a258. +// +// Solidity: event Paused(address account) +func (_TaikoL1 *TaikoL1Filterer) ParsePaused(log types.Log) (*TaikoL1Paused, error) { + event := new(TaikoL1Paused) + if err := _TaikoL1.contract.UnpackLog(event, "Paused", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} + // TaikoL1TokenCreditedIterator is returned from FilterTokenCredited and is used to iterate over the raw logs and unpacked data for TokenCredited events raised by the TaikoL1 contract. type TaikoL1TokenCreditedIterator struct { Event *TaikoL1TokenCredited // Event containing the contract specifics and raw log @@ -2598,14 +2772,14 @@ func (it *TaikoL1TokenCreditedIterator) Close() error { // TaikoL1TokenCredited represents a TokenCredited event raised by the TaikoL1 contract. type TaikoL1TokenCredited struct { + To common.Address Amount *big.Int - Minted bool Raw types.Log // Blockchain specific contextual infos } -// FilterTokenCredited is a free log retrieval operation binding the contract event 0xeb0ac084e2fa6cfaebe54184190c7137c2fcc63c16e1dfaf6442ae95c01c44ad. +// FilterTokenCredited is a free log retrieval operation binding the contract event 0xcc91b0b567e69e32d26830c50d1078f0baec319d458fa847f2633c1c2f71dd74. // -// Solidity: event TokenCredited(uint256 amount, bool minted) +// Solidity: event TokenCredited(address to, uint256 amount) func (_TaikoL1 *TaikoL1Filterer) FilterTokenCredited(opts *bind.FilterOpts) (*TaikoL1TokenCreditedIterator, error) { logs, sub, err := _TaikoL1.contract.FilterLogs(opts, "TokenCredited") @@ -2615,9 +2789,9 @@ func (_TaikoL1 *TaikoL1Filterer) FilterTokenCredited(opts *bind.FilterOpts) (*Ta return &TaikoL1TokenCreditedIterator{contract: _TaikoL1.contract, event: "TokenCredited", logs: logs, sub: sub}, nil } -// WatchTokenCredited is a free log subscription operation binding the contract event 0xeb0ac084e2fa6cfaebe54184190c7137c2fcc63c16e1dfaf6442ae95c01c44ad. +// WatchTokenCredited is a free log subscription operation binding the contract event 0xcc91b0b567e69e32d26830c50d1078f0baec319d458fa847f2633c1c2f71dd74. // -// Solidity: event TokenCredited(uint256 amount, bool minted) +// Solidity: event TokenCredited(address to, uint256 amount) func (_TaikoL1 *TaikoL1Filterer) WatchTokenCredited(opts *bind.WatchOpts, sink chan<- *TaikoL1TokenCredited) (event.Subscription, error) { logs, sub, err := _TaikoL1.contract.WatchLogs(opts, "TokenCredited") @@ -2652,9 +2826,9 @@ func (_TaikoL1 *TaikoL1Filterer) WatchTokenCredited(opts *bind.WatchOpts, sink c }), nil } -// ParseTokenCredited is a log parse operation binding the contract event 0xeb0ac084e2fa6cfaebe54184190c7137c2fcc63c16e1dfaf6442ae95c01c44ad. +// ParseTokenCredited is a log parse operation binding the contract event 0xcc91b0b567e69e32d26830c50d1078f0baec319d458fa847f2633c1c2f71dd74. // -// Solidity: event TokenCredited(uint256 amount, bool minted) +// Solidity: event TokenCredited(address to, uint256 amount) func (_TaikoL1 *TaikoL1Filterer) ParseTokenCredited(log types.Log) (*TaikoL1TokenCredited, error) { event := new(TaikoL1TokenCredited) if err := _TaikoL1.contract.UnpackLog(event, "TokenCredited", log); err != nil { @@ -2733,14 +2907,14 @@ func (it *TaikoL1TokenCredited0Iterator) Close() error { // TaikoL1TokenCredited0 represents a TokenCredited0 event raised by the TaikoL1 contract. type TaikoL1TokenCredited0 struct { + To common.Address Amount *big.Int - Minted bool Raw types.Log // Blockchain specific contextual infos } -// FilterTokenCredited0 is a free log retrieval operation binding the contract event 0xeb0ac084e2fa6cfaebe54184190c7137c2fcc63c16e1dfaf6442ae95c01c44ad. +// FilterTokenCredited0 is a free log retrieval operation binding the contract event 0xcc91b0b567e69e32d26830c50d1078f0baec319d458fa847f2633c1c2f71dd74. // -// Solidity: event TokenCredited(uint256 amount, bool minted) +// Solidity: event TokenCredited(address to, uint256 amount) func (_TaikoL1 *TaikoL1Filterer) FilterTokenCredited0(opts *bind.FilterOpts) (*TaikoL1TokenCredited0Iterator, error) { logs, sub, err := _TaikoL1.contract.FilterLogs(opts, "TokenCredited0") @@ -2750,9 +2924,9 @@ func (_TaikoL1 *TaikoL1Filterer) FilterTokenCredited0(opts *bind.FilterOpts) (*T return &TaikoL1TokenCredited0Iterator{contract: _TaikoL1.contract, event: "TokenCredited0", logs: logs, sub: sub}, nil } -// WatchTokenCredited0 is a free log subscription operation binding the contract event 0xeb0ac084e2fa6cfaebe54184190c7137c2fcc63c16e1dfaf6442ae95c01c44ad. +// WatchTokenCredited0 is a free log subscription operation binding the contract event 0xcc91b0b567e69e32d26830c50d1078f0baec319d458fa847f2633c1c2f71dd74. // -// Solidity: event TokenCredited(uint256 amount, bool minted) +// Solidity: event TokenCredited(address to, uint256 amount) func (_TaikoL1 *TaikoL1Filterer) WatchTokenCredited0(opts *bind.WatchOpts, sink chan<- *TaikoL1TokenCredited0) (event.Subscription, error) { logs, sub, err := _TaikoL1.contract.WatchLogs(opts, "TokenCredited0") @@ -2787,9 +2961,9 @@ func (_TaikoL1 *TaikoL1Filterer) WatchTokenCredited0(opts *bind.WatchOpts, sink }), nil } -// ParseTokenCredited0 is a log parse operation binding the contract event 0xeb0ac084e2fa6cfaebe54184190c7137c2fcc63c16e1dfaf6442ae95c01c44ad. +// ParseTokenCredited0 is a log parse operation binding the contract event 0xcc91b0b567e69e32d26830c50d1078f0baec319d458fa847f2633c1c2f71dd74. // -// Solidity: event TokenCredited(uint256 amount, bool minted) +// Solidity: event TokenCredited(address to, uint256 amount) func (_TaikoL1 *TaikoL1Filterer) ParseTokenCredited0(log types.Log) (*TaikoL1TokenCredited0, error) { event := new(TaikoL1TokenCredited0) if err := _TaikoL1.contract.UnpackLog(event, "TokenCredited0", log); err != nil { @@ -2868,14 +3042,14 @@ func (it *TaikoL1TokenDebitedIterator) Close() error { // TaikoL1TokenDebited represents a TokenDebited event raised by the TaikoL1 contract. type TaikoL1TokenDebited struct { - Amount *big.Int - FromLocalBalance bool - Raw types.Log // Blockchain specific contextual infos + From common.Address + Amount *big.Int + Raw types.Log // Blockchain specific contextual infos } -// FilterTokenDebited is a free log retrieval operation binding the contract event 0x8012eed335fcd2a9b93e688e5146be66d3b48c2e40578e713dc5f254d7fea32a. +// FilterTokenDebited is a free log retrieval operation binding the contract event 0x9414c932608e522aea77e1b5fd1cdb441e5d57daf49d9a9a0b7409ef8d9e0070. // -// Solidity: event TokenDebited(uint256 amount, bool fromLocalBalance) +// Solidity: event TokenDebited(address from, uint256 amount) func (_TaikoL1 *TaikoL1Filterer) FilterTokenDebited(opts *bind.FilterOpts) (*TaikoL1TokenDebitedIterator, error) { logs, sub, err := _TaikoL1.contract.FilterLogs(opts, "TokenDebited") @@ -2885,9 +3059,9 @@ func (_TaikoL1 *TaikoL1Filterer) FilterTokenDebited(opts *bind.FilterOpts) (*Tai return &TaikoL1TokenDebitedIterator{contract: _TaikoL1.contract, event: "TokenDebited", logs: logs, sub: sub}, nil } -// WatchTokenDebited is a free log subscription operation binding the contract event 0x8012eed335fcd2a9b93e688e5146be66d3b48c2e40578e713dc5f254d7fea32a. +// WatchTokenDebited is a free log subscription operation binding the contract event 0x9414c932608e522aea77e1b5fd1cdb441e5d57daf49d9a9a0b7409ef8d9e0070. // -// Solidity: event TokenDebited(uint256 amount, bool fromLocalBalance) +// Solidity: event TokenDebited(address from, uint256 amount) func (_TaikoL1 *TaikoL1Filterer) WatchTokenDebited(opts *bind.WatchOpts, sink chan<- *TaikoL1TokenDebited) (event.Subscription, error) { logs, sub, err := _TaikoL1.contract.WatchLogs(opts, "TokenDebited") @@ -2922,9 +3096,9 @@ func (_TaikoL1 *TaikoL1Filterer) WatchTokenDebited(opts *bind.WatchOpts, sink ch }), nil } -// ParseTokenDebited is a log parse operation binding the contract event 0x8012eed335fcd2a9b93e688e5146be66d3b48c2e40578e713dc5f254d7fea32a. +// ParseTokenDebited is a log parse operation binding the contract event 0x9414c932608e522aea77e1b5fd1cdb441e5d57daf49d9a9a0b7409ef8d9e0070. // -// Solidity: event TokenDebited(uint256 amount, bool fromLocalBalance) +// Solidity: event TokenDebited(address from, uint256 amount) func (_TaikoL1 *TaikoL1Filterer) ParseTokenDebited(log types.Log) (*TaikoL1TokenDebited, error) { event := new(TaikoL1TokenDebited) if err := _TaikoL1.contract.UnpackLog(event, "TokenDebited", log); err != nil { @@ -3003,14 +3177,14 @@ func (it *TaikoL1TokenDebited0Iterator) Close() error { // TaikoL1TokenDebited0 represents a TokenDebited0 event raised by the TaikoL1 contract. type TaikoL1TokenDebited0 struct { - Amount *big.Int - FromLocalBalance bool - Raw types.Log // Blockchain specific contextual infos + From common.Address + Amount *big.Int + Raw types.Log // Blockchain specific contextual infos } -// FilterTokenDebited0 is a free log retrieval operation binding the contract event 0x8012eed335fcd2a9b93e688e5146be66d3b48c2e40578e713dc5f254d7fea32a. +// FilterTokenDebited0 is a free log retrieval operation binding the contract event 0x9414c932608e522aea77e1b5fd1cdb441e5d57daf49d9a9a0b7409ef8d9e0070. // -// Solidity: event TokenDebited(uint256 amount, bool fromLocalBalance) +// Solidity: event TokenDebited(address from, uint256 amount) func (_TaikoL1 *TaikoL1Filterer) FilterTokenDebited0(opts *bind.FilterOpts) (*TaikoL1TokenDebited0Iterator, error) { logs, sub, err := _TaikoL1.contract.FilterLogs(opts, "TokenDebited0") @@ -3020,9 +3194,9 @@ func (_TaikoL1 *TaikoL1Filterer) FilterTokenDebited0(opts *bind.FilterOpts) (*Ta return &TaikoL1TokenDebited0Iterator{contract: _TaikoL1.contract, event: "TokenDebited0", logs: logs, sub: sub}, nil } -// WatchTokenDebited0 is a free log subscription operation binding the contract event 0x8012eed335fcd2a9b93e688e5146be66d3b48c2e40578e713dc5f254d7fea32a. +// WatchTokenDebited0 is a free log subscription operation binding the contract event 0x9414c932608e522aea77e1b5fd1cdb441e5d57daf49d9a9a0b7409ef8d9e0070. // -// Solidity: event TokenDebited(uint256 amount, bool fromLocalBalance) +// Solidity: event TokenDebited(address from, uint256 amount) func (_TaikoL1 *TaikoL1Filterer) WatchTokenDebited0(opts *bind.WatchOpts, sink chan<- *TaikoL1TokenDebited0) (event.Subscription, error) { logs, sub, err := _TaikoL1.contract.WatchLogs(opts, "TokenDebited0") @@ -3057,9 +3231,9 @@ func (_TaikoL1 *TaikoL1Filterer) WatchTokenDebited0(opts *bind.WatchOpts, sink c }), nil } -// ParseTokenDebited0 is a log parse operation binding the contract event 0x8012eed335fcd2a9b93e688e5146be66d3b48c2e40578e713dc5f254d7fea32a. +// ParseTokenDebited0 is a log parse operation binding the contract event 0x9414c932608e522aea77e1b5fd1cdb441e5d57daf49d9a9a0b7409ef8d9e0070. // -// Solidity: event TokenDebited(uint256 amount, bool fromLocalBalance) +// Solidity: event TokenDebited(address from, uint256 amount) func (_TaikoL1 *TaikoL1Filterer) ParseTokenDebited0(log types.Log) (*TaikoL1TokenDebited0, error) { event := new(TaikoL1TokenDebited0) if err := _TaikoL1.contract.UnpackLog(event, "TokenDebited0", log); err != nil { @@ -3605,276 +3779,6 @@ func (_TaikoL1 *TaikoL1Filterer) ParseTokenWithdrawn0(log types.Log) (*TaikoL1To return event, nil } -// TaikoL1TokenWithdrawnByOwnerIterator is returned from FilterTokenWithdrawnByOwner and is used to iterate over the raw logs and unpacked data for TokenWithdrawnByOwner events raised by the TaikoL1 contract. -type TaikoL1TokenWithdrawnByOwnerIterator struct { - Event *TaikoL1TokenWithdrawnByOwner // Event containing the contract specifics and raw log - - contract *bind.BoundContract // Generic contract to use for unpacking event data - event string // Event name to use for unpacking event data - - logs chan types.Log // Log channel receiving the found contract events - sub ethereum.Subscription // Subscription for errors, completion and termination - done bool // Whether the subscription completed delivering logs - fail error // Occurred error to stop iteration -} - -// Next advances the iterator to the subsequent event, returning whether there -// are any more events found. In case of a retrieval or parsing error, false is -// returned and Error() can be queried for the exact failure. -func (it *TaikoL1TokenWithdrawnByOwnerIterator) Next() bool { - // If the iterator failed, stop iterating - if it.fail != nil { - return false - } - // If the iterator completed, deliver directly whatever's available - if it.done { - select { - case log := <-it.logs: - it.Event = new(TaikoL1TokenWithdrawnByOwner) - if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { - it.fail = err - return false - } - it.Event.Raw = log - return true - - default: - return false - } - } - // Iterator still in progress, wait for either a data or an error event - select { - case log := <-it.logs: - it.Event = new(TaikoL1TokenWithdrawnByOwner) - if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { - it.fail = err - return false - } - it.Event.Raw = log - return true - - case err := <-it.sub.Err(): - it.done = true - it.fail = err - return it.Next() - } -} - -// Error returns any retrieval or parsing error occurred during filtering. -func (it *TaikoL1TokenWithdrawnByOwnerIterator) Error() error { - return it.fail -} - -// Close terminates the iteration process, releasing any pending underlying -// resources. -func (it *TaikoL1TokenWithdrawnByOwnerIterator) Close() error { - it.sub.Unsubscribe() - return nil -} - -// TaikoL1TokenWithdrawnByOwner represents a TokenWithdrawnByOwner event raised by the TaikoL1 contract. -type TaikoL1TokenWithdrawnByOwner struct { - To common.Address - Amount *big.Int - Raw types.Log // Blockchain specific contextual infos -} - -// FilterTokenWithdrawnByOwner is a free log retrieval operation binding the contract event 0xc4f72d4b841abf7e4afe6a797fbc9d92a5186aa6332c2ff33c0e327f1c3e9a4c. -// -// Solidity: event TokenWithdrawnByOwner(address to, uint256 amount) -func (_TaikoL1 *TaikoL1Filterer) FilterTokenWithdrawnByOwner(opts *bind.FilterOpts) (*TaikoL1TokenWithdrawnByOwnerIterator, error) { - - logs, sub, err := _TaikoL1.contract.FilterLogs(opts, "TokenWithdrawnByOwner") - if err != nil { - return nil, err - } - return &TaikoL1TokenWithdrawnByOwnerIterator{contract: _TaikoL1.contract, event: "TokenWithdrawnByOwner", logs: logs, sub: sub}, nil -} - -// WatchTokenWithdrawnByOwner is a free log subscription operation binding the contract event 0xc4f72d4b841abf7e4afe6a797fbc9d92a5186aa6332c2ff33c0e327f1c3e9a4c. -// -// Solidity: event TokenWithdrawnByOwner(address to, uint256 amount) -func (_TaikoL1 *TaikoL1Filterer) WatchTokenWithdrawnByOwner(opts *bind.WatchOpts, sink chan<- *TaikoL1TokenWithdrawnByOwner) (event.Subscription, error) { - - logs, sub, err := _TaikoL1.contract.WatchLogs(opts, "TokenWithdrawnByOwner") - if err != nil { - return nil, err - } - return event.NewSubscription(func(quit <-chan struct{}) error { - defer sub.Unsubscribe() - for { - select { - case log := <-logs: - // New log arrived, parse the event and forward to the user - event := new(TaikoL1TokenWithdrawnByOwner) - if err := _TaikoL1.contract.UnpackLog(event, "TokenWithdrawnByOwner", log); err != nil { - return err - } - event.Raw = log - - select { - case sink <- event: - case err := <-sub.Err(): - return err - case <-quit: - return nil - } - case err := <-sub.Err(): - return err - case <-quit: - return nil - } - } - }), nil -} - -// ParseTokenWithdrawnByOwner is a log parse operation binding the contract event 0xc4f72d4b841abf7e4afe6a797fbc9d92a5186aa6332c2ff33c0e327f1c3e9a4c. -// -// Solidity: event TokenWithdrawnByOwner(address to, uint256 amount) -func (_TaikoL1 *TaikoL1Filterer) ParseTokenWithdrawnByOwner(log types.Log) (*TaikoL1TokenWithdrawnByOwner, error) { - event := new(TaikoL1TokenWithdrawnByOwner) - if err := _TaikoL1.contract.UnpackLog(event, "TokenWithdrawnByOwner", log); err != nil { - return nil, err - } - event.Raw = log - return event, nil -} - -// TaikoL1TokenWithdrawnByOwner0Iterator is returned from FilterTokenWithdrawnByOwner0 and is used to iterate over the raw logs and unpacked data for TokenWithdrawnByOwner0 events raised by the TaikoL1 contract. -type TaikoL1TokenWithdrawnByOwner0Iterator struct { - Event *TaikoL1TokenWithdrawnByOwner0 // Event containing the contract specifics and raw log - - contract *bind.BoundContract // Generic contract to use for unpacking event data - event string // Event name to use for unpacking event data - - logs chan types.Log // Log channel receiving the found contract events - sub ethereum.Subscription // Subscription for errors, completion and termination - done bool // Whether the subscription completed delivering logs - fail error // Occurred error to stop iteration -} - -// Next advances the iterator to the subsequent event, returning whether there -// are any more events found. In case of a retrieval or parsing error, false is -// returned and Error() can be queried for the exact failure. -func (it *TaikoL1TokenWithdrawnByOwner0Iterator) Next() bool { - // If the iterator failed, stop iterating - if it.fail != nil { - return false - } - // If the iterator completed, deliver directly whatever's available - if it.done { - select { - case log := <-it.logs: - it.Event = new(TaikoL1TokenWithdrawnByOwner0) - if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { - it.fail = err - return false - } - it.Event.Raw = log - return true - - default: - return false - } - } - // Iterator still in progress, wait for either a data or an error event - select { - case log := <-it.logs: - it.Event = new(TaikoL1TokenWithdrawnByOwner0) - if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { - it.fail = err - return false - } - it.Event.Raw = log - return true - - case err := <-it.sub.Err(): - it.done = true - it.fail = err - return it.Next() - } -} - -// Error returns any retrieval or parsing error occurred during filtering. -func (it *TaikoL1TokenWithdrawnByOwner0Iterator) Error() error { - return it.fail -} - -// Close terminates the iteration process, releasing any pending underlying -// resources. -func (it *TaikoL1TokenWithdrawnByOwner0Iterator) Close() error { - it.sub.Unsubscribe() - return nil -} - -// TaikoL1TokenWithdrawnByOwner0 represents a TokenWithdrawnByOwner0 event raised by the TaikoL1 contract. -type TaikoL1TokenWithdrawnByOwner0 struct { - To common.Address - Amount *big.Int - Raw types.Log // Blockchain specific contextual infos -} - -// FilterTokenWithdrawnByOwner0 is a free log retrieval operation binding the contract event 0xc4f72d4b841abf7e4afe6a797fbc9d92a5186aa6332c2ff33c0e327f1c3e9a4c. -// -// Solidity: event TokenWithdrawnByOwner(address to, uint256 amount) -func (_TaikoL1 *TaikoL1Filterer) FilterTokenWithdrawnByOwner0(opts *bind.FilterOpts) (*TaikoL1TokenWithdrawnByOwner0Iterator, error) { - - logs, sub, err := _TaikoL1.contract.FilterLogs(opts, "TokenWithdrawnByOwner0") - if err != nil { - return nil, err - } - return &TaikoL1TokenWithdrawnByOwner0Iterator{contract: _TaikoL1.contract, event: "TokenWithdrawnByOwner0", logs: logs, sub: sub}, nil -} - -// WatchTokenWithdrawnByOwner0 is a free log subscription operation binding the contract event 0xc4f72d4b841abf7e4afe6a797fbc9d92a5186aa6332c2ff33c0e327f1c3e9a4c. -// -// Solidity: event TokenWithdrawnByOwner(address to, uint256 amount) -func (_TaikoL1 *TaikoL1Filterer) WatchTokenWithdrawnByOwner0(opts *bind.WatchOpts, sink chan<- *TaikoL1TokenWithdrawnByOwner0) (event.Subscription, error) { - - logs, sub, err := _TaikoL1.contract.WatchLogs(opts, "TokenWithdrawnByOwner0") - if err != nil { - return nil, err - } - return event.NewSubscription(func(quit <-chan struct{}) error { - defer sub.Unsubscribe() - for { - select { - case log := <-logs: - // New log arrived, parse the event and forward to the user - event := new(TaikoL1TokenWithdrawnByOwner0) - if err := _TaikoL1.contract.UnpackLog(event, "TokenWithdrawnByOwner0", log); err != nil { - return err - } - event.Raw = log - - select { - case sink <- event: - case err := <-sub.Err(): - return err - case <-quit: - return nil - } - case err := <-sub.Err(): - return err - case <-quit: - return nil - } - } - }), nil -} - -// ParseTokenWithdrawnByOwner0 is a log parse operation binding the contract event 0xc4f72d4b841abf7e4afe6a797fbc9d92a5186aa6332c2ff33c0e327f1c3e9a4c. -// -// Solidity: event TokenWithdrawnByOwner(address to, uint256 amount) -func (_TaikoL1 *TaikoL1Filterer) ParseTokenWithdrawnByOwner0(log types.Log) (*TaikoL1TokenWithdrawnByOwner0, error) { - event := new(TaikoL1TokenWithdrawnByOwner0) - if err := _TaikoL1.contract.UnpackLog(event, "TokenWithdrawnByOwner0", log); err != nil { - return nil, err - } - event.Raw = log - return event, nil -} - // TaikoL1TransitionContestedIterator is returned from FilterTransitionContested and is used to iterate over the raw logs and unpacked data for TransitionContested events raised by the TaikoL1 contract. type TaikoL1TransitionContestedIterator struct { Event *TaikoL1TransitionContested // Event containing the contract specifics and raw log @@ -4474,3 +4378,137 @@ func (_TaikoL1 *TaikoL1Filterer) ParseTransitionProved0(log types.Log) (*TaikoL1 event.Raw = log return event, nil } + +// TaikoL1UnpausedIterator is returned from FilterUnpaused and is used to iterate over the raw logs and unpacked data for Unpaused events raised by the TaikoL1 contract. +type TaikoL1UnpausedIterator struct { + Event *TaikoL1Unpaused // Event containing the contract specifics and raw log + + contract *bind.BoundContract // Generic contract to use for unpacking event data + event string // Event name to use for unpacking event data + + logs chan types.Log // Log channel receiving the found contract events + sub ethereum.Subscription // Subscription for errors, completion and termination + done bool // Whether the subscription completed delivering logs + fail error // Occurred error to stop iteration +} + +// Next advances the iterator to the subsequent event, returning whether there +// are any more events found. In case of a retrieval or parsing error, false is +// returned and Error() can be queried for the exact failure. +func (it *TaikoL1UnpausedIterator) Next() bool { + // If the iterator failed, stop iterating + if it.fail != nil { + return false + } + // If the iterator completed, deliver directly whatever's available + if it.done { + select { + case log := <-it.logs: + it.Event = new(TaikoL1Unpaused) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + default: + return false + } + } + // Iterator still in progress, wait for either a data or an error event + select { + case log := <-it.logs: + it.Event = new(TaikoL1Unpaused) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + case err := <-it.sub.Err(): + it.done = true + it.fail = err + return it.Next() + } +} + +// Error returns any retrieval or parsing error occurred during filtering. +func (it *TaikoL1UnpausedIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *TaikoL1UnpausedIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// TaikoL1Unpaused represents a Unpaused event raised by the TaikoL1 contract. +type TaikoL1Unpaused struct { + Account common.Address + Raw types.Log // Blockchain specific contextual infos +} + +// FilterUnpaused is a free log retrieval operation binding the contract event 0x5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa. +// +// Solidity: event Unpaused(address account) +func (_TaikoL1 *TaikoL1Filterer) FilterUnpaused(opts *bind.FilterOpts) (*TaikoL1UnpausedIterator, error) { + + logs, sub, err := _TaikoL1.contract.FilterLogs(opts, "Unpaused") + if err != nil { + return nil, err + } + return &TaikoL1UnpausedIterator{contract: _TaikoL1.contract, event: "Unpaused", logs: logs, sub: sub}, nil +} + +// WatchUnpaused is a free log subscription operation binding the contract event 0x5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa. +// +// Solidity: event Unpaused(address account) +func (_TaikoL1 *TaikoL1Filterer) WatchUnpaused(opts *bind.WatchOpts, sink chan<- *TaikoL1Unpaused) (event.Subscription, error) { + + logs, sub, err := _TaikoL1.contract.WatchLogs(opts, "Unpaused") + if err != nil { + return nil, err + } + return event.NewSubscription(func(quit <-chan struct{}) error { + defer sub.Unsubscribe() + for { + select { + case log := <-logs: + // New log arrived, parse the event and forward to the user + event := new(TaikoL1Unpaused) + if err := _TaikoL1.contract.UnpackLog(event, "Unpaused", log); err != nil { + return err + } + event.Raw = log + + select { + case sink <- event: + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + } + }), nil +} + +// ParseUnpaused is a log parse operation binding the contract event 0x5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa. +// +// Solidity: event Unpaused(address account) +func (_TaikoL1 *TaikoL1Filterer) ParseUnpaused(log types.Log) (*TaikoL1Unpaused, error) { + event := new(TaikoL1Unpaused) + if err := _TaikoL1.contract.UnpackLog(event, "Unpaused", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} diff --git a/packages/relayer/bindings/taikol2/TaikoL2.go b/packages/relayer/bindings/taikol2/TaikoL2.go index 0491da5cba..a7ae4d82bc 100644 --- a/packages/relayer/bindings/taikol2/TaikoL2.go +++ b/packages/relayer/bindings/taikol2/TaikoL2.go @@ -37,16 +37,13 @@ type ICrossChainSyncSnippet struct { // TaikoL2Config is an auto generated low-level Go binding around an user-defined struct. type TaikoL2Config struct { - GasTargetPerL1Block uint64 - BasefeeAdjustmentQuotient *big.Int - BlockRewardPerL1Block *big.Int - BlockRewardPoolMax *big.Int - BlockRewardPoolPctg uint8 + GasTargetPerL1Block uint32 + BasefeeAdjustmentQuotient uint8 } // TaikoL2MetaData contains all meta data concerning the TaikoL2 contract. var TaikoL2MetaData = &bind.MetaData{ - ABI: "[{\"inputs\":[],\"name\":\"EIP1559_INVALID_PARAMS\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"L2_BASEFEE_MISMATCH\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"L2_GAS_EXCESS_TOO_LARGE\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"L2_INVALID_CHAIN_ID\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"L2_INVALID_GOLDEN_TOUCH_K\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"L2_INVALID_SENDER\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"L2_PUBLIC_INPUT_HASH_MISMATCH\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"L2_TOO_LATE\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"Overflow\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"RESOLVER_DENIED\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"RESOLVER_INVALID_MANAGER\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"chainId\",\"type\":\"uint256\"},{\"internalType\":\"bytes32\",\"name\":\"name\",\"type\":\"bytes32\"}],\"name\":\"RESOLVER_ZERO_ADDR\",\"type\":\"error\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"parentHash\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"uint128\",\"name\":\"gasExcess\",\"type\":\"uint128\"},{\"indexed\":false,\"internalType\":\"uint128\",\"name\":\"blockReward\",\"type\":\"uint128\"}],\"name\":\"Anchored\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint64\",\"name\":\"srcHeight\",\"type\":\"uint64\"},{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"blockHash\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"signalRoot\",\"type\":\"bytes32\"}],\"name\":\"CrossChainSynced\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint8\",\"name\":\"version\",\"type\":\"uint8\"}],\"name\":\"Initialized\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"previousOwner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"newOwner\",\"type\":\"address\"}],\"name\":\"OwnershipTransferred\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"ANCHOR_GAS_DEDUCT\",\"outputs\":[{\"internalType\":\"uint32\",\"name\":\"\",\"type\":\"uint32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"GOLDEN_TOUCH_ADDRESS\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"GOLDEN_TOUCH_PRIVATEKEY\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"accumulatedReward\",\"outputs\":[{\"internalType\":\"uint128\",\"name\":\"\",\"type\":\"uint128\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"addressManager\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"l1BlockHash\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"l1SignalRoot\",\"type\":\"bytes32\"},{\"internalType\":\"uint64\",\"name\":\"l1Height\",\"type\":\"uint64\"},{\"internalType\":\"uint32\",\"name\":\"parentGasUsed\",\"type\":\"uint32\"}],\"name\":\"anchor\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"avgGasUsed\",\"outputs\":[{\"internalType\":\"uint32\",\"name\":\"\",\"type\":\"uint32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"gasExcess\",\"outputs\":[{\"internalType\":\"uint128\",\"name\":\"\",\"type\":\"uint128\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"l1Height\",\"type\":\"uint64\"},{\"internalType\":\"uint32\",\"name\":\"parentGasUsed\",\"type\":\"uint32\"}],\"name\":\"getBasefee\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"basefee\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"blockId\",\"type\":\"uint64\"}],\"name\":\"getBlockHash\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getConfig\",\"outputs\":[{\"components\":[{\"internalType\":\"uint64\",\"name\":\"gasTargetPerL1Block\",\"type\":\"uint64\"},{\"internalType\":\"uint256\",\"name\":\"basefeeAdjustmentQuotient\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"blockRewardPerL1Block\",\"type\":\"uint256\"},{\"internalType\":\"uint128\",\"name\":\"blockRewardPoolMax\",\"type\":\"uint128\"},{\"internalType\":\"uint8\",\"name\":\"blockRewardPoolPctg\",\"type\":\"uint8\"}],\"internalType\":\"structTaikoL2.Config\",\"name\":\"config\",\"type\":\"tuple\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"blockId\",\"type\":\"uint64\"}],\"name\":\"getSyncedSnippet\",\"outputs\":[{\"components\":[{\"internalType\":\"bytes32\",\"name\":\"blockHash\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"signalRoot\",\"type\":\"bytes32\"}],\"internalType\":\"structICrossChainSync.Snippet\",\"name\":\"\",\"type\":\"tuple\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_addressManager\",\"type\":\"address\"},{\"internalType\":\"uint128\",\"name\":\"_gasExcess\",\"type\":\"uint128\"}],\"name\":\"init\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"blockId\",\"type\":\"uint256\"}],\"name\":\"l2Hashes\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"blockHash\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"latestSyncedL1Height\",\"outputs\":[{\"internalType\":\"uint64\",\"name\":\"\",\"type\":\"uint64\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"owner\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"parentProposer\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"publicInputHash\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"renounceOwnership\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"chainId\",\"type\":\"uint256\"},{\"internalType\":\"bytes32\",\"name\":\"name\",\"type\":\"bytes32\"},{\"internalType\":\"bool\",\"name\":\"allowZeroAddress\",\"type\":\"bool\"}],\"name\":\"resolve\",\"outputs\":[{\"internalType\":\"addresspayable\",\"name\":\"addr\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"name\",\"type\":\"bytes32\"},{\"internalType\":\"bool\",\"name\":\"allowZeroAddress\",\"type\":\"bool\"}],\"name\":\"resolve\",\"outputs\":[{\"internalType\":\"addresspayable\",\"name\":\"addr\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"digest\",\"type\":\"bytes32\"},{\"internalType\":\"uint8\",\"name\":\"k\",\"type\":\"uint8\"}],\"name\":\"signAnchor\",\"outputs\":[{\"internalType\":\"uint8\",\"name\":\"v\",\"type\":\"uint8\"},{\"internalType\":\"uint256\",\"name\":\"r\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"s\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"l1height\",\"type\":\"uint256\"}],\"name\":\"snippets\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"blockHash\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"signalRoot\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"newOwner\",\"type\":\"address\"}],\"name\":\"transferOwnership\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}]", + ABI: "[{\"inputs\":[],\"name\":\"EIP1559_INVALID_PARAMS\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"INVALID_PAUSE_STATUS\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"L2_BASEFEE_MISMATCH\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"L2_INVALID_CHAIN_ID\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"L2_INVALID_GOLDEN_TOUCH_K\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"L2_INVALID_PARAM\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"L2_INVALID_SENDER\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"L2_PUBLIC_INPUT_HASH_MISMATCH\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"L2_TOO_LATE\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"Overflow\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"REENTRANT_CALL\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"RESOLVER_DENIED\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"RESOLVER_INVALID_MANAGER\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"chainId\",\"type\":\"uint256\"},{\"internalType\":\"bytes32\",\"name\":\"name\",\"type\":\"bytes32\"}],\"name\":\"RESOLVER_ZERO_ADDR\",\"type\":\"error\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"parentHash\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"uint64\",\"name\":\"gasExcess\",\"type\":\"uint64\"}],\"name\":\"Anchored\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint64\",\"name\":\"srcHeight\",\"type\":\"uint64\"},{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"blockHash\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"signalRoot\",\"type\":\"bytes32\"}],\"name\":\"CrossChainSynced\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint8\",\"name\":\"version\",\"type\":\"uint8\"}],\"name\":\"Initialized\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"previousOwner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"newOwner\",\"type\":\"address\"}],\"name\":\"OwnershipTransferred\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"Paused\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"Unpaused\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"GOLDEN_TOUCH_ADDRESS\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"GOLDEN_TOUCH_PRIVATEKEY\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"addressManager\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"l1BlockHash\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"l1SignalRoot\",\"type\":\"bytes32\"},{\"internalType\":\"uint64\",\"name\":\"l1Height\",\"type\":\"uint64\"},{\"internalType\":\"uint32\",\"name\":\"parentGasUsed\",\"type\":\"uint32\"}],\"name\":\"anchor\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"gasExcess\",\"outputs\":[{\"internalType\":\"uint64\",\"name\":\"\",\"type\":\"uint64\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"l1Height\",\"type\":\"uint64\"},{\"internalType\":\"uint32\",\"name\":\"parentGasUsed\",\"type\":\"uint32\"}],\"name\":\"getBasefee\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"basefee\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"blockId\",\"type\":\"uint64\"}],\"name\":\"getBlockHash\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getConfig\",\"outputs\":[{\"components\":[{\"internalType\":\"uint32\",\"name\":\"gasTargetPerL1Block\",\"type\":\"uint32\"},{\"internalType\":\"uint8\",\"name\":\"basefeeAdjustmentQuotient\",\"type\":\"uint8\"}],\"internalType\":\"structTaikoL2.Config\",\"name\":\"config\",\"type\":\"tuple\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"blockId\",\"type\":\"uint64\"}],\"name\":\"getSyncedSnippet\",\"outputs\":[{\"components\":[{\"internalType\":\"bytes32\",\"name\":\"blockHash\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"signalRoot\",\"type\":\"bytes32\"}],\"internalType\":\"structICrossChainSync.Snippet\",\"name\":\"\",\"type\":\"tuple\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_addressManager\",\"type\":\"address\"},{\"internalType\":\"uint64\",\"name\":\"_gasExcess\",\"type\":\"uint64\"}],\"name\":\"init\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"blockId\",\"type\":\"uint256\"}],\"name\":\"l2Hashes\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"blockHash\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"latestSyncedL1Height\",\"outputs\":[{\"internalType\":\"uint64\",\"name\":\"\",\"type\":\"uint64\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"owner\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"pause\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"paused\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"publicInputHash\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"renounceOwnership\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"chainId\",\"type\":\"uint256\"},{\"internalType\":\"bytes32\",\"name\":\"name\",\"type\":\"bytes32\"},{\"internalType\":\"bool\",\"name\":\"allowZeroAddress\",\"type\":\"bool\"}],\"name\":\"resolve\",\"outputs\":[{\"internalType\":\"addresspayable\",\"name\":\"addr\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"name\",\"type\":\"bytes32\"},{\"internalType\":\"bool\",\"name\":\"allowZeroAddress\",\"type\":\"bool\"}],\"name\":\"resolve\",\"outputs\":[{\"internalType\":\"addresspayable\",\"name\":\"addr\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"digest\",\"type\":\"bytes32\"},{\"internalType\":\"uint8\",\"name\":\"k\",\"type\":\"uint8\"}],\"name\":\"signAnchor\",\"outputs\":[{\"internalType\":\"uint8\",\"name\":\"v\",\"type\":\"uint8\"},{\"internalType\":\"uint256\",\"name\":\"r\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"s\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"skipFeeCheck\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"l1height\",\"type\":\"uint256\"}],\"name\":\"snippets\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"blockHash\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"signalRoot\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"newOwner\",\"type\":\"address\"}],\"name\":\"transferOwnership\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"unpause\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}]", } // TaikoL2ABI is the input ABI used to generate the binding from. @@ -195,37 +192,6 @@ func (_TaikoL2 *TaikoL2TransactorRaw) Transact(opts *bind.TransactOpts, method s return _TaikoL2.Contract.contract.Transact(opts, method, params...) } -// ANCHORGASDEDUCT is a free data retrieval call binding the contract method 0x51bf57b4. -// -// Solidity: function ANCHOR_GAS_DEDUCT() view returns(uint32) -func (_TaikoL2 *TaikoL2Caller) ANCHORGASDEDUCT(opts *bind.CallOpts) (uint32, error) { - var out []interface{} - err := _TaikoL2.contract.Call(opts, &out, "ANCHOR_GAS_DEDUCT") - - if err != nil { - return *new(uint32), err - } - - out0 := *abi.ConvertType(out[0], new(uint32)).(*uint32) - - return out0, err - -} - -// ANCHORGASDEDUCT is a free data retrieval call binding the contract method 0x51bf57b4. -// -// Solidity: function ANCHOR_GAS_DEDUCT() view returns(uint32) -func (_TaikoL2 *TaikoL2Session) ANCHORGASDEDUCT() (uint32, error) { - return _TaikoL2.Contract.ANCHORGASDEDUCT(&_TaikoL2.CallOpts) -} - -// ANCHORGASDEDUCT is a free data retrieval call binding the contract method 0x51bf57b4. -// -// Solidity: function ANCHOR_GAS_DEDUCT() view returns(uint32) -func (_TaikoL2 *TaikoL2CallerSession) ANCHORGASDEDUCT() (uint32, error) { - return _TaikoL2.Contract.ANCHORGASDEDUCT(&_TaikoL2.CallOpts) -} - // GOLDENTOUCHADDRESS is a free data retrieval call binding the contract method 0x9ee512f2. // // Solidity: function GOLDEN_TOUCH_ADDRESS() view returns(address) @@ -288,37 +254,6 @@ func (_TaikoL2 *TaikoL2CallerSession) GOLDENTOUCHPRIVATEKEY() (*big.Int, error) return _TaikoL2.Contract.GOLDENTOUCHPRIVATEKEY(&_TaikoL2.CallOpts) } -// AccumulatedReward is a free data retrieval call binding the contract method 0x80fad325. -// -// Solidity: function accumulatedReward() view returns(uint128) -func (_TaikoL2 *TaikoL2Caller) AccumulatedReward(opts *bind.CallOpts) (*big.Int, error) { - var out []interface{} - err := _TaikoL2.contract.Call(opts, &out, "accumulatedReward") - - if err != nil { - return *new(*big.Int), err - } - - out0 := *abi.ConvertType(out[0], new(*big.Int)).(**big.Int) - - return out0, err - -} - -// AccumulatedReward is a free data retrieval call binding the contract method 0x80fad325. -// -// Solidity: function accumulatedReward() view returns(uint128) -func (_TaikoL2 *TaikoL2Session) AccumulatedReward() (*big.Int, error) { - return _TaikoL2.Contract.AccumulatedReward(&_TaikoL2.CallOpts) -} - -// AccumulatedReward is a free data retrieval call binding the contract method 0x80fad325. -// -// Solidity: function accumulatedReward() view returns(uint128) -func (_TaikoL2 *TaikoL2CallerSession) AccumulatedReward() (*big.Int, error) { - return _TaikoL2.Contract.AccumulatedReward(&_TaikoL2.CallOpts) -} - // AddressManager is a free data retrieval call binding the contract method 0x3ab76e9f. // // Solidity: function addressManager() view returns(address) @@ -350,49 +285,18 @@ func (_TaikoL2 *TaikoL2CallerSession) AddressManager() (common.Address, error) { return _TaikoL2.Contract.AddressManager(&_TaikoL2.CallOpts) } -// AvgGasUsed is a free data retrieval call binding the contract method 0x6d6372c4. -// -// Solidity: function avgGasUsed() view returns(uint32) -func (_TaikoL2 *TaikoL2Caller) AvgGasUsed(opts *bind.CallOpts) (uint32, error) { - var out []interface{} - err := _TaikoL2.contract.Call(opts, &out, "avgGasUsed") - - if err != nil { - return *new(uint32), err - } - - out0 := *abi.ConvertType(out[0], new(uint32)).(*uint32) - - return out0, err - -} - -// AvgGasUsed is a free data retrieval call binding the contract method 0x6d6372c4. -// -// Solidity: function avgGasUsed() view returns(uint32) -func (_TaikoL2 *TaikoL2Session) AvgGasUsed() (uint32, error) { - return _TaikoL2.Contract.AvgGasUsed(&_TaikoL2.CallOpts) -} - -// AvgGasUsed is a free data retrieval call binding the contract method 0x6d6372c4. -// -// Solidity: function avgGasUsed() view returns(uint32) -func (_TaikoL2 *TaikoL2CallerSession) AvgGasUsed() (uint32, error) { - return _TaikoL2.Contract.AvgGasUsed(&_TaikoL2.CallOpts) -} - // GasExcess is a free data retrieval call binding the contract method 0xf535bd56. // -// Solidity: function gasExcess() view returns(uint128) -func (_TaikoL2 *TaikoL2Caller) GasExcess(opts *bind.CallOpts) (*big.Int, error) { +// Solidity: function gasExcess() view returns(uint64) +func (_TaikoL2 *TaikoL2Caller) GasExcess(opts *bind.CallOpts) (uint64, error) { var out []interface{} err := _TaikoL2.contract.Call(opts, &out, "gasExcess") if err != nil { - return *new(*big.Int), err + return *new(uint64), err } - out0 := *abi.ConvertType(out[0], new(*big.Int)).(**big.Int) + out0 := *abi.ConvertType(out[0], new(uint64)).(*uint64) return out0, err @@ -400,15 +304,15 @@ func (_TaikoL2 *TaikoL2Caller) GasExcess(opts *bind.CallOpts) (*big.Int, error) // GasExcess is a free data retrieval call binding the contract method 0xf535bd56. // -// Solidity: function gasExcess() view returns(uint128) -func (_TaikoL2 *TaikoL2Session) GasExcess() (*big.Int, error) { +// Solidity: function gasExcess() view returns(uint64) +func (_TaikoL2 *TaikoL2Session) GasExcess() (uint64, error) { return _TaikoL2.Contract.GasExcess(&_TaikoL2.CallOpts) } // GasExcess is a free data retrieval call binding the contract method 0xf535bd56. // -// Solidity: function gasExcess() view returns(uint128) -func (_TaikoL2 *TaikoL2CallerSession) GasExcess() (*big.Int, error) { +// Solidity: function gasExcess() view returns(uint64) +func (_TaikoL2 *TaikoL2CallerSession) GasExcess() (uint64, error) { return _TaikoL2.Contract.GasExcess(&_TaikoL2.CallOpts) } @@ -476,7 +380,7 @@ func (_TaikoL2 *TaikoL2CallerSession) GetBlockHash(blockId uint64) ([32]byte, er // GetConfig is a free data retrieval call binding the contract method 0xc3f909d4. // -// Solidity: function getConfig() pure returns((uint64,uint256,uint256,uint128,uint8) config) +// Solidity: function getConfig() view returns((uint32,uint8) config) func (_TaikoL2 *TaikoL2Caller) GetConfig(opts *bind.CallOpts) (TaikoL2Config, error) { var out []interface{} err := _TaikoL2.contract.Call(opts, &out, "getConfig") @@ -493,14 +397,14 @@ func (_TaikoL2 *TaikoL2Caller) GetConfig(opts *bind.CallOpts) (TaikoL2Config, er // GetConfig is a free data retrieval call binding the contract method 0xc3f909d4. // -// Solidity: function getConfig() pure returns((uint64,uint256,uint256,uint128,uint8) config) +// Solidity: function getConfig() view returns((uint32,uint8) config) func (_TaikoL2 *TaikoL2Session) GetConfig() (TaikoL2Config, error) { return _TaikoL2.Contract.GetConfig(&_TaikoL2.CallOpts) } // GetConfig is a free data retrieval call binding the contract method 0xc3f909d4. // -// Solidity: function getConfig() pure returns((uint64,uint256,uint256,uint128,uint8) config) +// Solidity: function getConfig() view returns((uint32,uint8) config) func (_TaikoL2 *TaikoL2CallerSession) GetConfig() (TaikoL2Config, error) { return _TaikoL2.Contract.GetConfig(&_TaikoL2.CallOpts) } @@ -629,35 +533,35 @@ func (_TaikoL2 *TaikoL2CallerSession) Owner() (common.Address, error) { return _TaikoL2.Contract.Owner(&_TaikoL2.CallOpts) } -// ParentProposer is a free data retrieval call binding the contract method 0xfca19902. +// Paused is a free data retrieval call binding the contract method 0x5c975abb. // -// Solidity: function parentProposer() view returns(address) -func (_TaikoL2 *TaikoL2Caller) ParentProposer(opts *bind.CallOpts) (common.Address, error) { +// Solidity: function paused() view returns(bool) +func (_TaikoL2 *TaikoL2Caller) Paused(opts *bind.CallOpts) (bool, error) { var out []interface{} - err := _TaikoL2.contract.Call(opts, &out, "parentProposer") + err := _TaikoL2.contract.Call(opts, &out, "paused") if err != nil { - return *new(common.Address), err + return *new(bool), err } - out0 := *abi.ConvertType(out[0], new(common.Address)).(*common.Address) + out0 := *abi.ConvertType(out[0], new(bool)).(*bool) return out0, err } -// ParentProposer is a free data retrieval call binding the contract method 0xfca19902. +// Paused is a free data retrieval call binding the contract method 0x5c975abb. // -// Solidity: function parentProposer() view returns(address) -func (_TaikoL2 *TaikoL2Session) ParentProposer() (common.Address, error) { - return _TaikoL2.Contract.ParentProposer(&_TaikoL2.CallOpts) +// Solidity: function paused() view returns(bool) +func (_TaikoL2 *TaikoL2Session) Paused() (bool, error) { + return _TaikoL2.Contract.Paused(&_TaikoL2.CallOpts) } -// ParentProposer is a free data retrieval call binding the contract method 0xfca19902. +// Paused is a free data retrieval call binding the contract method 0x5c975abb. // -// Solidity: function parentProposer() view returns(address) -func (_TaikoL2 *TaikoL2CallerSession) ParentProposer() (common.Address, error) { - return _TaikoL2.Contract.ParentProposer(&_TaikoL2.CallOpts) +// Solidity: function paused() view returns(bool) +func (_TaikoL2 *TaikoL2CallerSession) Paused() (bool, error) { + return _TaikoL2.Contract.Paused(&_TaikoL2.CallOpts) } // PublicInputHash is a free data retrieval call binding the contract method 0xdac5df78. @@ -803,6 +707,37 @@ func (_TaikoL2 *TaikoL2CallerSession) SignAnchor(digest [32]byte, k uint8) (stru return _TaikoL2.Contract.SignAnchor(&_TaikoL2.CallOpts, digest, k) } +// SkipFeeCheck is a free data retrieval call binding the contract method 0x2f980473. +// +// Solidity: function skipFeeCheck() pure returns(bool) +func (_TaikoL2 *TaikoL2Caller) SkipFeeCheck(opts *bind.CallOpts) (bool, error) { + var out []interface{} + err := _TaikoL2.contract.Call(opts, &out, "skipFeeCheck") + + if err != nil { + return *new(bool), err + } + + out0 := *abi.ConvertType(out[0], new(bool)).(*bool) + + return out0, err + +} + +// SkipFeeCheck is a free data retrieval call binding the contract method 0x2f980473. +// +// Solidity: function skipFeeCheck() pure returns(bool) +func (_TaikoL2 *TaikoL2Session) SkipFeeCheck() (bool, error) { + return _TaikoL2.Contract.SkipFeeCheck(&_TaikoL2.CallOpts) +} + +// SkipFeeCheck is a free data retrieval call binding the contract method 0x2f980473. +// +// Solidity: function skipFeeCheck() pure returns(bool) +func (_TaikoL2 *TaikoL2CallerSession) SkipFeeCheck() (bool, error) { + return _TaikoL2.Contract.SkipFeeCheck(&_TaikoL2.CallOpts) +} + // Snippets is a free data retrieval call binding the contract method 0xe8e2c5fb. // // Solidity: function snippets(uint256 l1height) view returns(bytes32 blockHash, bytes32 signalRoot) @@ -869,27 +804,48 @@ func (_TaikoL2 *TaikoL2TransactorSession) Anchor(l1BlockHash [32]byte, l1SignalR return _TaikoL2.Contract.Anchor(&_TaikoL2.TransactOpts, l1BlockHash, l1SignalRoot, l1Height, parentGasUsed) } -// Init is a paid mutator transaction binding the contract method 0xcce03bf3. +// Init is a paid mutator transaction binding the contract method 0xb259f48b. // -// Solidity: function init(address _addressManager, uint128 _gasExcess) returns() -func (_TaikoL2 *TaikoL2Transactor) Init(opts *bind.TransactOpts, _addressManager common.Address, _gasExcess *big.Int) (*types.Transaction, error) { +// Solidity: function init(address _addressManager, uint64 _gasExcess) returns() +func (_TaikoL2 *TaikoL2Transactor) Init(opts *bind.TransactOpts, _addressManager common.Address, _gasExcess uint64) (*types.Transaction, error) { return _TaikoL2.contract.Transact(opts, "init", _addressManager, _gasExcess) } -// Init is a paid mutator transaction binding the contract method 0xcce03bf3. +// Init is a paid mutator transaction binding the contract method 0xb259f48b. // -// Solidity: function init(address _addressManager, uint128 _gasExcess) returns() -func (_TaikoL2 *TaikoL2Session) Init(_addressManager common.Address, _gasExcess *big.Int) (*types.Transaction, error) { +// Solidity: function init(address _addressManager, uint64 _gasExcess) returns() +func (_TaikoL2 *TaikoL2Session) Init(_addressManager common.Address, _gasExcess uint64) (*types.Transaction, error) { return _TaikoL2.Contract.Init(&_TaikoL2.TransactOpts, _addressManager, _gasExcess) } -// Init is a paid mutator transaction binding the contract method 0xcce03bf3. +// Init is a paid mutator transaction binding the contract method 0xb259f48b. // -// Solidity: function init(address _addressManager, uint128 _gasExcess) returns() -func (_TaikoL2 *TaikoL2TransactorSession) Init(_addressManager common.Address, _gasExcess *big.Int) (*types.Transaction, error) { +// Solidity: function init(address _addressManager, uint64 _gasExcess) returns() +func (_TaikoL2 *TaikoL2TransactorSession) Init(_addressManager common.Address, _gasExcess uint64) (*types.Transaction, error) { return _TaikoL2.Contract.Init(&_TaikoL2.TransactOpts, _addressManager, _gasExcess) } +// Pause is a paid mutator transaction binding the contract method 0x8456cb59. +// +// Solidity: function pause() returns() +func (_TaikoL2 *TaikoL2Transactor) Pause(opts *bind.TransactOpts) (*types.Transaction, error) { + return _TaikoL2.contract.Transact(opts, "pause") +} + +// Pause is a paid mutator transaction binding the contract method 0x8456cb59. +// +// Solidity: function pause() returns() +func (_TaikoL2 *TaikoL2Session) Pause() (*types.Transaction, error) { + return _TaikoL2.Contract.Pause(&_TaikoL2.TransactOpts) +} + +// Pause is a paid mutator transaction binding the contract method 0x8456cb59. +// +// Solidity: function pause() returns() +func (_TaikoL2 *TaikoL2TransactorSession) Pause() (*types.Transaction, error) { + return _TaikoL2.Contract.Pause(&_TaikoL2.TransactOpts) +} + // RenounceOwnership is a paid mutator transaction binding the contract method 0x715018a6. // // Solidity: function renounceOwnership() returns() @@ -932,6 +888,27 @@ func (_TaikoL2 *TaikoL2TransactorSession) TransferOwnership(newOwner common.Addr return _TaikoL2.Contract.TransferOwnership(&_TaikoL2.TransactOpts, newOwner) } +// Unpause is a paid mutator transaction binding the contract method 0x3f4ba83a. +// +// Solidity: function unpause() returns() +func (_TaikoL2 *TaikoL2Transactor) Unpause(opts *bind.TransactOpts) (*types.Transaction, error) { + return _TaikoL2.contract.Transact(opts, "unpause") +} + +// Unpause is a paid mutator transaction binding the contract method 0x3f4ba83a. +// +// Solidity: function unpause() returns() +func (_TaikoL2 *TaikoL2Session) Unpause() (*types.Transaction, error) { + return _TaikoL2.Contract.Unpause(&_TaikoL2.TransactOpts) +} + +// Unpause is a paid mutator transaction binding the contract method 0x3f4ba83a. +// +// Solidity: function unpause() returns() +func (_TaikoL2 *TaikoL2TransactorSession) Unpause() (*types.Transaction, error) { + return _TaikoL2.Contract.Unpause(&_TaikoL2.TransactOpts) +} + // TaikoL2AnchoredIterator is returned from FilterAnchored and is used to iterate over the raw logs and unpacked data for Anchored events raised by the TaikoL2 contract. type TaikoL2AnchoredIterator struct { Event *TaikoL2Anchored // Event containing the contract specifics and raw log @@ -1001,15 +978,14 @@ func (it *TaikoL2AnchoredIterator) Close() error { // TaikoL2Anchored represents a Anchored event raised by the TaikoL2 contract. type TaikoL2Anchored struct { - ParentHash [32]byte - GasExcess *big.Int - BlockReward *big.Int - Raw types.Log // Blockchain specific contextual infos + ParentHash [32]byte + GasExcess uint64 + Raw types.Log // Blockchain specific contextual infos } -// FilterAnchored is a free log retrieval operation binding the contract event 0xf3a1ab67cc789a3e3961363ffd80ff59c13f394ff689b2fb85531a45dd0aa80d. +// FilterAnchored is a free log retrieval operation binding the contract event 0x41c3f410f5c8ac36bb46b1dccef0de0f964087c9e688795fa02ecfa2c20b3fe4. // -// Solidity: event Anchored(bytes32 parentHash, uint128 gasExcess, uint128 blockReward) +// Solidity: event Anchored(bytes32 parentHash, uint64 gasExcess) func (_TaikoL2 *TaikoL2Filterer) FilterAnchored(opts *bind.FilterOpts) (*TaikoL2AnchoredIterator, error) { logs, sub, err := _TaikoL2.contract.FilterLogs(opts, "Anchored") @@ -1019,9 +995,9 @@ func (_TaikoL2 *TaikoL2Filterer) FilterAnchored(opts *bind.FilterOpts) (*TaikoL2 return &TaikoL2AnchoredIterator{contract: _TaikoL2.contract, event: "Anchored", logs: logs, sub: sub}, nil } -// WatchAnchored is a free log subscription operation binding the contract event 0xf3a1ab67cc789a3e3961363ffd80ff59c13f394ff689b2fb85531a45dd0aa80d. +// WatchAnchored is a free log subscription operation binding the contract event 0x41c3f410f5c8ac36bb46b1dccef0de0f964087c9e688795fa02ecfa2c20b3fe4. // -// Solidity: event Anchored(bytes32 parentHash, uint128 gasExcess, uint128 blockReward) +// Solidity: event Anchored(bytes32 parentHash, uint64 gasExcess) func (_TaikoL2 *TaikoL2Filterer) WatchAnchored(opts *bind.WatchOpts, sink chan<- *TaikoL2Anchored) (event.Subscription, error) { logs, sub, err := _TaikoL2.contract.WatchLogs(opts, "Anchored") @@ -1056,9 +1032,9 @@ func (_TaikoL2 *TaikoL2Filterer) WatchAnchored(opts *bind.WatchOpts, sink chan<- }), nil } -// ParseAnchored is a log parse operation binding the contract event 0xf3a1ab67cc789a3e3961363ffd80ff59c13f394ff689b2fb85531a45dd0aa80d. +// ParseAnchored is a log parse operation binding the contract event 0x41c3f410f5c8ac36bb46b1dccef0de0f964087c9e688795fa02ecfa2c20b3fe4. // -// Solidity: event Anchored(bytes32 parentHash, uint128 gasExcess, uint128 blockReward) +// Solidity: event Anchored(bytes32 parentHash, uint64 gasExcess) func (_TaikoL2 *TaikoL2Filterer) ParseAnchored(log types.Log) (*TaikoL2Anchored, error) { event := new(TaikoL2Anchored) if err := _TaikoL2.contract.UnpackLog(event, "Anchored", log); err != nil { @@ -1500,3 +1476,271 @@ func (_TaikoL2 *TaikoL2Filterer) ParseOwnershipTransferred(log types.Log) (*Taik event.Raw = log return event, nil } + +// TaikoL2PausedIterator is returned from FilterPaused and is used to iterate over the raw logs and unpacked data for Paused events raised by the TaikoL2 contract. +type TaikoL2PausedIterator struct { + Event *TaikoL2Paused // Event containing the contract specifics and raw log + + contract *bind.BoundContract // Generic contract to use for unpacking event data + event string // Event name to use for unpacking event data + + logs chan types.Log // Log channel receiving the found contract events + sub ethereum.Subscription // Subscription for errors, completion and termination + done bool // Whether the subscription completed delivering logs + fail error // Occurred error to stop iteration +} + +// Next advances the iterator to the subsequent event, returning whether there +// are any more events found. In case of a retrieval or parsing error, false is +// returned and Error() can be queried for the exact failure. +func (it *TaikoL2PausedIterator) Next() bool { + // If the iterator failed, stop iterating + if it.fail != nil { + return false + } + // If the iterator completed, deliver directly whatever's available + if it.done { + select { + case log := <-it.logs: + it.Event = new(TaikoL2Paused) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + default: + return false + } + } + // Iterator still in progress, wait for either a data or an error event + select { + case log := <-it.logs: + it.Event = new(TaikoL2Paused) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + case err := <-it.sub.Err(): + it.done = true + it.fail = err + return it.Next() + } +} + +// Error returns any retrieval or parsing error occurred during filtering. +func (it *TaikoL2PausedIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *TaikoL2PausedIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// TaikoL2Paused represents a Paused event raised by the TaikoL2 contract. +type TaikoL2Paused struct { + Account common.Address + Raw types.Log // Blockchain specific contextual infos +} + +// FilterPaused is a free log retrieval operation binding the contract event 0x62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a258. +// +// Solidity: event Paused(address account) +func (_TaikoL2 *TaikoL2Filterer) FilterPaused(opts *bind.FilterOpts) (*TaikoL2PausedIterator, error) { + + logs, sub, err := _TaikoL2.contract.FilterLogs(opts, "Paused") + if err != nil { + return nil, err + } + return &TaikoL2PausedIterator{contract: _TaikoL2.contract, event: "Paused", logs: logs, sub: sub}, nil +} + +// WatchPaused is a free log subscription operation binding the contract event 0x62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a258. +// +// Solidity: event Paused(address account) +func (_TaikoL2 *TaikoL2Filterer) WatchPaused(opts *bind.WatchOpts, sink chan<- *TaikoL2Paused) (event.Subscription, error) { + + logs, sub, err := _TaikoL2.contract.WatchLogs(opts, "Paused") + if err != nil { + return nil, err + } + return event.NewSubscription(func(quit <-chan struct{}) error { + defer sub.Unsubscribe() + for { + select { + case log := <-logs: + // New log arrived, parse the event and forward to the user + event := new(TaikoL2Paused) + if err := _TaikoL2.contract.UnpackLog(event, "Paused", log); err != nil { + return err + } + event.Raw = log + + select { + case sink <- event: + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + } + }), nil +} + +// ParsePaused is a log parse operation binding the contract event 0x62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a258. +// +// Solidity: event Paused(address account) +func (_TaikoL2 *TaikoL2Filterer) ParsePaused(log types.Log) (*TaikoL2Paused, error) { + event := new(TaikoL2Paused) + if err := _TaikoL2.contract.UnpackLog(event, "Paused", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} + +// TaikoL2UnpausedIterator is returned from FilterUnpaused and is used to iterate over the raw logs and unpacked data for Unpaused events raised by the TaikoL2 contract. +type TaikoL2UnpausedIterator struct { + Event *TaikoL2Unpaused // Event containing the contract specifics and raw log + + contract *bind.BoundContract // Generic contract to use for unpacking event data + event string // Event name to use for unpacking event data + + logs chan types.Log // Log channel receiving the found contract events + sub ethereum.Subscription // Subscription for errors, completion and termination + done bool // Whether the subscription completed delivering logs + fail error // Occurred error to stop iteration +} + +// Next advances the iterator to the subsequent event, returning whether there +// are any more events found. In case of a retrieval or parsing error, false is +// returned and Error() can be queried for the exact failure. +func (it *TaikoL2UnpausedIterator) Next() bool { + // If the iterator failed, stop iterating + if it.fail != nil { + return false + } + // If the iterator completed, deliver directly whatever's available + if it.done { + select { + case log := <-it.logs: + it.Event = new(TaikoL2Unpaused) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + default: + return false + } + } + // Iterator still in progress, wait for either a data or an error event + select { + case log := <-it.logs: + it.Event = new(TaikoL2Unpaused) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + case err := <-it.sub.Err(): + it.done = true + it.fail = err + return it.Next() + } +} + +// Error returns any retrieval or parsing error occurred during filtering. +func (it *TaikoL2UnpausedIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *TaikoL2UnpausedIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// TaikoL2Unpaused represents a Unpaused event raised by the TaikoL2 contract. +type TaikoL2Unpaused struct { + Account common.Address + Raw types.Log // Blockchain specific contextual infos +} + +// FilterUnpaused is a free log retrieval operation binding the contract event 0x5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa. +// +// Solidity: event Unpaused(address account) +func (_TaikoL2 *TaikoL2Filterer) FilterUnpaused(opts *bind.FilterOpts) (*TaikoL2UnpausedIterator, error) { + + logs, sub, err := _TaikoL2.contract.FilterLogs(opts, "Unpaused") + if err != nil { + return nil, err + } + return &TaikoL2UnpausedIterator{contract: _TaikoL2.contract, event: "Unpaused", logs: logs, sub: sub}, nil +} + +// WatchUnpaused is a free log subscription operation binding the contract event 0x5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa. +// +// Solidity: event Unpaused(address account) +func (_TaikoL2 *TaikoL2Filterer) WatchUnpaused(opts *bind.WatchOpts, sink chan<- *TaikoL2Unpaused) (event.Subscription, error) { + + logs, sub, err := _TaikoL2.contract.WatchLogs(opts, "Unpaused") + if err != nil { + return nil, err + } + return event.NewSubscription(func(quit <-chan struct{}) error { + defer sub.Unsubscribe() + for { + select { + case log := <-logs: + // New log arrived, parse the event and forward to the user + event := new(TaikoL2Unpaused) + if err := _TaikoL2.contract.UnpackLog(event, "Unpaused", log); err != nil { + return err + } + event.Raw = log + + select { + case sink <- event: + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + } + }), nil +} + +// ParseUnpaused is a log parse operation binding the contract event 0x5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa. +// +// Solidity: event Unpaused(address account) +func (_TaikoL2 *TaikoL2Filterer) ParseUnpaused(log types.Log) (*TaikoL2Unpaused, error) { + event := new(TaikoL2Unpaused) + if err := _TaikoL2.contract.UnpackLog(event, "Unpaused", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} From ac3856a43b14f1ca081e660ec1c0ad34e5f4d3ee Mon Sep 17 00:00:00 2001 From: Jeffery Walsh Date: Fri, 27 Oct 2023 13:12:35 -0700 Subject: [PATCH 81/87] not every block is synced --- packages/relayer/processor/process_message.go | 8 ++++---- packages/relayer/processor/wait_header_synced.go | 10 +++++----- packages/relayer/proof/encoded_signal_proof.go | 2 ++ 3 files changed, 11 insertions(+), 9 deletions(-) diff --git a/packages/relayer/processor/process_message.go b/packages/relayer/processor/process_message.go index 05fbaa8f69..6095442386 100644 --- a/packages/relayer/processor/process_message.go +++ b/packages/relayer/processor/process_message.go @@ -99,7 +99,7 @@ func (p *Processor) processMessage( for _, hop := range p.hops { hop.blockNum = blockNum - err := p.waitHeaderSynced(ctx, hop.headerSyncer, hopEthClient, blockNum) + _, err := p.waitHeaderSynced(ctx, hop.headerSyncer, hopEthClient, blockNum) if err != nil { return errors.Wrap(err, "p.waitHeaderSynced") @@ -118,11 +118,12 @@ func (p *Processor) processMessage( hopEthClient = hop.ethClient } - if err := p.waitHeaderSynced(ctx, p.destHeaderSyncer, hopEthClient, blockNum); err != nil { + blockNum, err = p.waitHeaderSynced(ctx, p.destHeaderSyncer, hopEthClient, blockNum) + if err != nil { return errors.Wrap(err, "p.waitHeaderSynced") } } else { - if err := p.waitHeaderSynced(ctx, p.destHeaderSyncer, p.srcEthClient, msgBody.Event.Raw.BlockNumber); err != nil { + if _, err := p.waitHeaderSynced(ctx, p.destHeaderSyncer, p.srcEthClient, msgBody.Event.Raw.BlockNumber); err != nil { return errors.Wrap(err, "p.waitHeaderSynced") } } @@ -146,7 +147,6 @@ func (p *Processor) processMessage( // if a hop is set, the proof service needs to generate an additional proof // for the signal service intermediary chain in between the source chain // and the destination chain. - // TODO: support multiple hops via env vars/configs instead of just one. for _, hop := range p.hops { slog.Info( "adding hop", diff --git a/packages/relayer/processor/wait_header_synced.go b/packages/relayer/processor/wait_header_synced.go index e55985fca8..e402c05343 100644 --- a/packages/relayer/processor/wait_header_synced.go +++ b/packages/relayer/processor/wait_header_synced.go @@ -16,14 +16,14 @@ func (p *Processor) waitHeaderSynced( headerSyncer relayer.HeaderSyncer, ethClient ethClient, blockNum uint64, -) error { +) (uint64, error) { ticker := time.NewTicker(time.Duration(p.headerSyncIntervalSeconds) * time.Second) defer ticker.Stop() for { select { case <-ctx.Done(): - return ctx.Err() + return 0, ctx.Err() case <-ticker.C: slog.Info("waitHeaderSynced checking if tx is processable", "blockNumber", blockNum, @@ -34,7 +34,7 @@ func (p *Processor) waitHeaderSynced( Context: ctx, }, 0) if err != nil { - return errors.Wrap(err, "p.destHeaderSyncer.GetSyncedSnippet") + return 0, errors.Wrap(err, "p.destHeaderSyncer.GetSyncedSnippet") } slog.Info("latestSyncedSnippet", @@ -44,7 +44,7 @@ func (p *Processor) waitHeaderSynced( header, err := ethClient.HeaderByHash(ctx, latestSyncedSnippet.BlockHash) if err != nil { - return errors.Wrap(err, "ethClient.HeaderByHash") + return 0, errors.Wrap(err, "ethClient.HeaderByHash") } // header is caught up @@ -54,7 +54,7 @@ func (p *Processor) waitHeaderSynced( "latestSyncedBlockNum", header.Number.Uint64(), ) - return nil + return header.Number.Uint64(), nil } slog.Info("waitHeaderSynced waiting to be caughtUp", diff --git a/packages/relayer/proof/encoded_signal_proof.go b/packages/relayer/proof/encoded_signal_proof.go index 458bb5d50b..811baeaf5c 100644 --- a/packages/relayer/proof/encoded_signal_proof.go +++ b/packages/relayer/proof/encoded_signal_proof.go @@ -139,6 +139,8 @@ func (p *Prover) EncodedSignalProofWithHops( return nil, 0, errors.Wrap(err, "enoding.EncodeSignalProof") } + slog.Info("blockNum", "blockNUm", blockNum) + return encodedSignalProof, blockHeader.Height.Uint64(), nil } From ca29a7214e261086c77a8b89c2c6b3b6be2915a9 Mon Sep 17 00:00:00 2001 From: Jeffery Walsh Date: Fri, 27 Oct 2023 16:39:35 -0700 Subject: [PATCH 82/87] test --- packages/relayer/processor/wait_header_synced_test.go | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/relayer/processor/wait_header_synced_test.go b/packages/relayer/processor/wait_header_synced_test.go index 043c7c7bc3..8ed94de93d 100644 --- a/packages/relayer/processor/wait_header_synced_test.go +++ b/packages/relayer/processor/wait_header_synced_test.go @@ -11,6 +11,6 @@ import ( func Test_waitHeaderSynced(t *testing.T) { p := newTestProcessor(true) - err := p.waitHeaderSynced(context.TODO(), &mock.HeaderSyncer{}, &mock.EthClient{}, 1) + _, err := p.waitHeaderSynced(context.TODO(), &mock.HeaderSyncer{}, &mock.EthClient{}, 1) assert.Nil(t, err) } From c704baec00e984a6ab85ff4f27c08ff317d1e6a9 Mon Sep 17 00:00:00 2001 From: D <51912515+adaki2004@users.noreply.github.com> Date: Tue, 31 Oct 2023 09:46:24 +0100 Subject: [PATCH 83/87] fix(protocol): Change sgx instanceId to 4bytes (#15092) --- .../contracts/L1/verifiers/SgxAndZkVerifier.sol | 2 +- .../protocol/contracts/L1/verifiers/SgxVerifier.sol | 12 ++++++------ packages/protocol/test/L1/TaikoL1TestBase.sol | 4 ++-- 3 files changed, 9 insertions(+), 9 deletions(-) diff --git a/packages/protocol/contracts/L1/verifiers/SgxAndZkVerifier.sol b/packages/protocol/contracts/L1/verifiers/SgxAndZkVerifier.sol index 28e3e6d408..9bb37564b7 100644 --- a/packages/protocol/contracts/L1/verifiers/SgxAndZkVerifier.sol +++ b/packages/protocol/contracts/L1/verifiers/SgxAndZkVerifier.sol @@ -17,7 +17,7 @@ import { IVerifier } from "./IVerifier.sol"; /// @title SgxAndZkVerifier /// @notice See the documentation in {IVerifier}. contract SgxAndZkVerifier is EssentialContract, IVerifier { - uint8 public constant SGX_PROOF_SIZE = 87; + uint8 public constant SGX_PROOF_SIZE = 89; uint256[50] private __gap; /// @notice Initializes the contract with the provided address manager. diff --git a/packages/protocol/contracts/L1/verifiers/SgxVerifier.sol b/packages/protocol/contracts/L1/verifiers/SgxVerifier.sol index 13f523f1f1..d96d559a8a 100644 --- a/packages/protocol/contracts/L1/verifiers/SgxVerifier.sol +++ b/packages/protocol/contracts/L1/verifiers/SgxVerifier.sol @@ -110,14 +110,14 @@ contract SgxVerifier is EssentialContract, IVerifier { // Do not run proof verification to contest an existing proof if (isContesting) return; - // Size is: 87 bytes - // 2 bytes + 20 bytes + 65 bytes (signature) = 87 - if (evidence.proof.length != 87) revert SGX_INVALID_PROOF(); + // Size is: 89 bytes + // 4 bytes + 20 bytes + 65 bytes (signature) = 89 + if (evidence.proof.length != 89) revert SGX_INVALID_PROOF(); - uint16 id = uint16(bytes2(LibBytesUtils.slice(evidence.proof, 0, 2))); + uint32 id = uint32(bytes4(LibBytesUtils.slice(evidence.proof, 0, 4))); address newInstance = - address(bytes20(LibBytesUtils.slice(evidence.proof, 2, 20))); - bytes memory signature = LibBytesUtils.slice(evidence.proof, 22); + address(bytes20(LibBytesUtils.slice(evidence.proof, 4, 20))); + bytes memory signature = LibBytesUtils.slice(evidence.proof, 24); address oldInstance = ECDSAUpgradeable.recover( getSignedHash(evidence, prover, newInstance), signature ); diff --git a/packages/protocol/test/L1/TaikoL1TestBase.sol b/packages/protocol/test/L1/TaikoL1TestBase.sol index 35a06d0bdb..7b435d2f63 100644 --- a/packages/protocol/test/L1/TaikoL1TestBase.sol +++ b/packages/protocol/test/L1/TaikoL1TestBase.sol @@ -223,7 +223,7 @@ abstract contract TaikoL1TestBase is TestBase { createSgxSignatureProof(evidence, newPubKey, prover); evidence.proof = - bytes.concat(bytes2(0), bytes20(newPubKey), signature); + bytes.concat(bytes4(0), bytes20(newPubKey), signature); } if (tier == LibTiers.TIER_SGX_AND_PSE_ZKEVM) { @@ -231,7 +231,7 @@ abstract contract TaikoL1TestBase is TestBase { createSgxSignatureProof(evidence, newPubKey, prover); bytes memory sgxProof = - bytes.concat(bytes2(0), bytes20(newPubKey), signature); + bytes.concat(bytes4(0), bytes20(newPubKey), signature); // Concatenate SGX and ZK (in this order) evidence.proof = bytes.concat(sgxProof, evidence.proof); } From a31854de0cefd8fd2e9fd372263e1676a5d51786 Mon Sep 17 00:00:00 2001 From: Daniel Wang <99078276+dantaik@users.noreply.github.com> Date: Thu, 2 Nov 2023 12:05:38 +0800 Subject: [PATCH 84/87] feat(protocol): allow using both blob & calldata for DA (#15011) Co-authored-by: Daniel Wang Co-authored-by: adaki2004 Co-authored-by: D <51912515+adaki2004@users.noreply.github.com> --- .../contracts/4844/BlobHashReader.yulp | 27 ++ .../contracts/4844/IBlobHashReader.sol | 15 ++ packages/protocol/contracts/4844/Lib4844.sol | 46 ++++ packages/protocol/contracts/L1/TaikoData.sol | 51 ++-- .../protocol/contracts/L1/TaikoErrors.sol | 5 +- .../protocol/contracts/L1/TaikoEvents.sol | 14 +- packages/protocol/contracts/L1/TaikoL1.sol | 55 ++-- .../contracts/L1/libs/LibProposing.sol | 135 +++++----- .../protocol/contracts/L1/libs/LibProving.sol | 254 ++++++++++-------- .../protocol/contracts/L1/libs/LibUtils.sol | 6 +- .../contracts/L1/libs/LibVerifying.sol | 33 +-- .../contracts/L1/provers/GuardianProver.sol | 36 +-- .../contracts/L1/tiers/ITierProvider.sol | 1 + .../L1/verifiers/GuardianVerifier.sol | 11 +- .../contracts/L1/verifiers/IVerifier.sol | 16 +- .../contracts/L1/verifiers/PlonkVerifier.yulp | 1 + .../contracts/L1/verifiers/PseZkVerifier.sol | 100 +++++-- .../L1/verifiers/SgxAndZkVerifier.sol | 24 +- .../contracts/L1/verifiers/SgxVerifier.sol | 38 ++- packages/protocol/contracts/bridge/Bridge.sol | 33 ++- .../contracts/tokenvault/ERC1155Vault.sol | 4 +- .../contracts/tokenvault/ERC20Vault.sol | 4 +- .../contracts/tokenvault/ERC721Vault.sol | 4 +- .../tokenvault/libs/LibVaultUtils.sol | 18 +- .../protocol/docs/how_taiko_proves_blocks.md | 6 +- packages/protocol/test/L1/TaikoL1.t.sol | 40 +-- .../test/L1/TaikoL1LibProvingWithTiers.t.sol | 99 ++++--- packages/protocol/test/L1/TaikoL1TestBase.sol | 119 ++++---- packages/protocol/test/bridge/Bridge.t.sol | 37 +-- pnpm-lock.yaml | 218 ++++++++++++--- 30 files changed, 868 insertions(+), 582 deletions(-) create mode 100644 packages/protocol/contracts/4844/BlobHashReader.yulp create mode 100644 packages/protocol/contracts/4844/IBlobHashReader.sol create mode 100644 packages/protocol/contracts/4844/Lib4844.sol diff --git a/packages/protocol/contracts/4844/BlobHashReader.yulp b/packages/protocol/contracts/4844/BlobHashReader.yulp new file mode 100644 index 0000000000..7490d5c1c8 --- /dev/null +++ b/packages/protocol/contracts/4844/BlobHashReader.yulp @@ -0,0 +1,27 @@ +// SPDX-License-Identifier: MIT +// _____ _ _ _ _ +// |_ _|_ _(_) |_____ | | __ _| |__ ___ +// | |/ _` | | / / _ \ | |__/ _` | '_ (_-< +// |_|\__,_|_|_\_\___/ |____\__,_|_.__/__/ + +// An implemenatation of IBlobHashReader +object "BlobHashReader" { + code { + datacopy(0, dataoffset("runtime"), datasize("runtime")) + return(0, datasize("runtime")) + } + object "runtime" { + code { + // Match against the keccak of the ABI function signature needed. + switch shr(0xe0,calldataload(0)) + // bytes4(keccak("function getFirstBlobHash()")) + // Returns the versioned hash for the first blob in this transaction. + case 0xfd122ecf { + // DATAHASH opcode has hex value 0x49 + let hash := verbatim_1i_1o(hex"49", 0) + mstore(0, hash) + return(0, 32) + } + } + } +} \ No newline at end of file diff --git a/packages/protocol/contracts/4844/IBlobHashReader.sol b/packages/protocol/contracts/4844/IBlobHashReader.sol new file mode 100644 index 0000000000..07dde2def3 --- /dev/null +++ b/packages/protocol/contracts/4844/IBlobHashReader.sol @@ -0,0 +1,15 @@ +// SPDX-License-Identifier: MIT +// _____ _ _ _ _ +// |_ _|_ _(_) |_____ | | __ _| |__ ___ +// | |/ _` | | / / _ \ | |__/ _` | '_ (_-< +// |_|\__,_|_|_\_\___/ |____\__,_|_.__/__/ + +pragma solidity ^0.8.20; + +/// @dev This interface and its corresponding implementation may deprecate once +/// solidity supports the new BLOBHASH opcode natively. +interface IBlobHashReader { + /// @notice Returns the versioned hash for the first blob in this + /// transaction. If there is no blob found, 0x0 is returned. + function getFirstBlobHash() external view returns (bytes32); +} diff --git a/packages/protocol/contracts/4844/Lib4844.sol b/packages/protocol/contracts/4844/Lib4844.sol new file mode 100644 index 0000000000..64ae752c17 --- /dev/null +++ b/packages/protocol/contracts/4844/Lib4844.sol @@ -0,0 +1,46 @@ +// SPDX-License-Identifier: MIT +// _____ _ _ _ _ +// |_ _|_ _(_) |_____ | | __ _| |__ ___ +// | |/ _` | | / / _ \ | |__/ _` | '_ (_-< +// |_|\__,_|_|_\_\___/ |____\__,_|_.__/__/ + +pragma solidity ^0.8.20; + +/// @title Lib4844 +/// @notice A library for handling EIP-4844 blobs +/// `solc contracts/libs/Lib4844.sol --ir > contracts/libs/Lib4844.yul` +library Lib4844 { + address public constant POINT_EVALUATION_PRECOMPILE_ADDRESS = address(0x0A); + uint32 public constant FIELD_ELEMENTS_PERBLOB = 4096; + uint256 public constant BLS_MODULUS = + 52_435_875_175_126_190_479_447_740_508_185_965_837_690_552_500_527_637_822_603_658_699_938_581_184_513; + + error EVAL_FAILED(); + error POINT_X_TOO_LARGE(); + error POINT_Y_TOO_LARGE(); + + /// @notice Evaluates the 4844 point using the precompile. + /// @param blobHash The versioned hash + /// @param x The evaluation point + /// @param y The expected output + /// @param commitment The input kzg point + /// @param pointProof The quotient kzg + function evaluatePoint( + bytes32 blobHash, + uint256 x, + uint256 y, + bytes1[48] memory commitment, + bytes1[48] memory pointProof + ) + internal + view + { + if (x >= BLS_MODULUS) revert POINT_X_TOO_LARGE(); + if (y >= BLS_MODULUS) revert POINT_Y_TOO_LARGE(); + + (bool ok,) = POINT_EVALUATION_PRECOMPILE_ADDRESS.staticcall( + abi.encodePacked(blobHash, x, y, commitment, pointProof) + ); + if (!ok) revert EVAL_FAILED(); + } +} diff --git a/packages/protocol/contracts/L1/TaikoData.sol b/packages/protocol/contracts/L1/TaikoData.sol index 34a547a511..33abeb9d5f 100644 --- a/packages/protocol/contracts/L1/TaikoData.sol +++ b/packages/protocol/contracts/L1/TaikoData.sol @@ -52,6 +52,8 @@ library TaikoData { uint256 ethDepositGas; // The maximum fee allowed for an ETH deposit. uint256 ethDepositMaxFee; + // True if EIP-4844 is enabled for DA + bool allowUsingBlobForDA; } /// @dev Struct holding state variables. @@ -67,7 +69,12 @@ library TaikoData { /// @dev Struct representing prover assignment struct TierFee { uint16 tier; - uint256 fee; + uint128 fee; + } + + struct TierProof { + uint16 tier; + bytes data; } struct ProverAssignment { @@ -78,38 +85,41 @@ library TaikoData { bytes signature; } + struct BlockParams { + ProverAssignment assignment; + bytes32 extraData; + } + /// @dev Struct containing data only required for proving a block - /// Warning: changing this struct requires changing - /// {LibProposing.hashMetadata} accordingly. + /// Note: On L2, `block.difficulty` is the pseudo name of + /// `block.prevrandao`, which returns a random number provided by the layer + /// 1 chain. struct BlockMetadata { - bytes32 l1Hash; - // On L2, `block.difficulty` is the pseudo name of `block.prevrandao`, - // which returns a random number provided by the layer 1 chain. - bytes32 difficulty; - bytes32 txListHash; - bytes32 extraData; + bytes32 l1Hash; // slot 1 + bytes32 difficulty; // slot 2 + bytes32 blobHash; //or txListHash (if Blob not yet supported), // slot 3 + bytes32 extraData; // slot 4 + bytes32 depositsHash; // slot 5 + address coinbase; // L2 coinbase, // slot 6 uint64 id; - uint64 timestamp; - uint64 l1Height; uint32 gasLimit; - address coinbase; // L2 coinbase - TaikoData.EthDeposit[] depositsProcessed; + uint64 timestamp; // slot 7 + uint64 l1Height; + uint16 minTier; + bool blobUsed; } - /// @dev Struct representing block evidence. - struct BlockEvidence { - bytes32 metaHash; + /// @dev Struct representing transition to be proven. + struct Transition { bytes32 parentHash; bytes32 blockHash; bytes32 signalRoot; bytes32 graffiti; - uint16 tier; - bytes proof; } /// @dev Struct representing state transition data. /// 10 slots reserved for upgradability, 6 slots used. - struct Transition { + struct TransitionState { bytes32 key; // slot 1, only written/read for the 1st state transition. bytes32 blockHash; // slot 2 bytes32 signalRoot; // slot 3 @@ -132,7 +142,6 @@ library TaikoData { uint64 proposedAt; uint32 nextTransitionId; uint32 verifiedTransitionId; - uint16 minTier; bytes32[7] __reserved; } @@ -173,7 +182,7 @@ library TaikoData { // Ring buffer for transitions mapping( uint64 blockId_mod_blockRingBufferSize - => mapping(uint32 transitionId => Transition) + => mapping(uint32 transitionId => TransitionState) ) transitions; // Ring buffer for Ether deposits mapping(uint256 depositId_mod_ethDepositRingBufferSize => uint256) diff --git a/packages/protocol/contracts/L1/TaikoErrors.sol b/packages/protocol/contracts/L1/TaikoErrors.sol index eca0fd7af1..7c95447e44 100644 --- a/packages/protocol/contracts/L1/TaikoErrors.sol +++ b/packages/protocol/contracts/L1/TaikoErrors.sol @@ -20,6 +20,7 @@ abstract contract TaikoErrors { error L1_ASSIGNMENT_INVALID_PARAMS(); error L1_ASSIGNMENT_INSUFFICIENT_FEE(); error L1_ASSIGNED_PROVER_NOT_ALLOWED(); + error L1_BLOB_FOR_DA_DISABLED(); error L1_BLOCK_MISMATCH(); error L1_INSUFFICIENT_TOKEN(); error L1_INVALID_ADDRESS(); @@ -27,16 +28,16 @@ abstract contract TaikoErrors { error L1_INVALID_BLOCK_ID(); error L1_INVALID_CONFIG(); error L1_INVALID_ETH_DEPOSIT(); - error L1_INVALID_EVIDENCE(); error L1_INVALID_PARAM(); error L1_INVALID_PROOF(); error L1_INVALID_TIER(); + error L1_INVALID_TRANSITION(); error L1_NOT_ASSIGNED_PROVER(); + error L1_NO_BLOB_FOUND(); error L1_TIER_NOT_FOUND(); error L1_TOO_MANY_BLOCKS(); error L1_TRANSITION_ID_ZERO(); error L1_TRANSITION_NOT_FOUND(); - error L1_TXLIST_MISMATCH(); error L1_TXLIST_TOO_LARGE(); error L1_UNAUTHORIZED(); error L1_UNEXPECTED_TRANSITION_ID(); diff --git a/packages/protocol/contracts/L1/TaikoEvents.sol b/packages/protocol/contracts/L1/TaikoEvents.sol index a2592c52f7..664b235394 100644 --- a/packages/protocol/contracts/L1/TaikoEvents.sol +++ b/packages/protocol/contracts/L1/TaikoEvents.sol @@ -22,15 +22,15 @@ abstract contract TaikoEvents { /// @param proverFee The fee paid to the assigned prover. /// @param meta The block metadata containing information about the proposed /// block. + /// @param depositsProcessed Ether deposits processed. event BlockProposed( uint256 indexed blockId, address indexed assignedProver, uint96 livenessBond, uint256 proverFee, - uint16 minTier, - TaikoData.BlockMetadata meta + TaikoData.BlockMetadata meta, + TaikoData.EthDeposit[] depositsProcessed ); - /// @dev Emitted when a block is verified. /// @param blockId The ID of the verified block. /// @param assignedProver The block's assigned prover. @@ -49,9 +49,7 @@ abstract contract TaikoEvents { /// @dev Emitted when a block transition is proved or re-proved. event TransitionProved( uint256 indexed blockId, - bytes32 parentHash, - bytes32 blockHash, - bytes32 signalRoot, + TaikoData.Transition tran, address prover, uint96 validityBond, uint16 tier @@ -60,9 +58,7 @@ abstract contract TaikoEvents { /// @dev Emitted when a block transition is contested. event TransitionContested( uint256 indexed blockId, - bytes32 parentHash, - bytes32 blockHash, - bytes32 signalRoot, + TaikoData.Transition tran, address contester, uint96 contestBond, uint16 tier diff --git a/packages/protocol/contracts/L1/TaikoL1.sol b/packages/protocol/contracts/L1/TaikoL1.sol index bff326bafc..b13184cd8f 100644 --- a/packages/protocol/contracts/L1/TaikoL1.sol +++ b/packages/protocol/contracts/L1/TaikoL1.sol @@ -60,33 +60,25 @@ contract TaikoL1 is } /// @notice Proposes a Taiko L2 block. - /// @param txListHash The hash of the block's txList - /// @param assignment Data to assign a prover. - /// @param txList A list of transactions in this block, encoded with RLP. - /// Note, in the corresponding L2 block an "anchor transaction" will be the - /// first transaction in the block. If there are `n` transactions in the - /// `txList`, then there will be up to `n + 1` transactions in the L2 block. + /// @param params Block parameters, currently an encoded BlockParams object. + /// @param txList txList data if calldata is used for DA. /// @return meta The metadata of the proposed L2 block. + /// @return depositsProcessed The Ether deposits processed. function proposeBlock( - bytes32 txListHash, - bytes32 extraData, - bytes calldata assignment, + bytes calldata params, bytes calldata txList ) external payable nonReentrant - returns (TaikoData.BlockMetadata memory meta) + returns ( + TaikoData.BlockMetadata memory meta, + TaikoData.EthDeposit[] memory depositsProcessed + ) { TaikoData.Config memory config = getConfig(); - meta = LibProposing.proposeBlock( - state, - config, - AddressResolver(this), - txListHash, - extraData, - abi.decode(assignment, (TaikoData.ProverAssignment)), - txList + (meta, depositsProcessed) = LibProposing.proposeBlock( + state, config, AddressResolver(this), params, txList ); if (config.maxBlocksToVerifyPerProposal > 0) { LibVerifying.verifyBlocks( @@ -101,7 +93,8 @@ contract TaikoL1 is /// @notice Proves or contests a block transition. /// @param blockId The index of the block to prove. This is also used to /// select the right implementation version. - /// @param input An abi-encoded {TaikoData.BlockEvidence} object. + /// @param input An abi-encoded (BlockMetadata, Transition, TierProof) + /// tuple. function proveBlock( uint64 blockId, bytes calldata input @@ -109,13 +102,20 @@ contract TaikoL1 is external nonReentrant { + ( + TaikoData.BlockMetadata memory meta, + TaikoData.Transition memory tran, + TaikoData.TierProof memory proof + ) = abi.decode( + input, + (TaikoData.BlockMetadata, TaikoData.Transition, TaikoData.TierProof) + ); + + if (blockId != meta.id) revert L1_INVALID_BLOCK_ID(); + TaikoData.Config memory config = getConfig(); uint8 maxBlocksToVerify = LibProving.proveBlock( - state, - config, - AddressResolver(this), - blockId, - abi.decode(input, (TaikoData.BlockEvidence)) + state, config, AddressResolver(this), meta, tran, proof ); if (maxBlocksToVerify > 0) { LibVerifying.verifyBlocks( @@ -182,7 +182,7 @@ contract TaikoL1 is ) public view - returns (TaikoData.Transition memory) + returns (TaikoData.TransitionState memory) { return LibUtils.getTransition(state, getConfig(), blockId, parentHash); } @@ -194,7 +194,7 @@ contract TaikoL1 is override returns (ICrossChainSync.Snippet memory data) { - TaikoData.Transition storage transition = + TaikoData.TransitionState storage transition = LibUtils.getVerifyingTransition(state, getConfig(), blockId); data.blockHash = transition.blockHash; @@ -289,7 +289,8 @@ contract TaikoL1 is ethDepositMinAmount: 1 ether, ethDepositMaxAmount: 10_000 ether, ethDepositGas: 21_000, - ethDepositMaxFee: 1 ether / 10 + ethDepositMaxFee: 1 ether / 10, + allowUsingBlobForDA: false }); } diff --git a/packages/protocol/contracts/L1/libs/LibProposing.sol b/packages/protocol/contracts/L1/libs/LibProposing.sol index 24a82b422c..44f8b1554d 100644 --- a/packages/protocol/contracts/L1/libs/LibProposing.sol +++ b/packages/protocol/contracts/L1/libs/LibProposing.sol @@ -10,6 +10,7 @@ import { ERC20Upgradeable } from "lib/openzeppelin-contracts-upgradeable/contracts/token/ERC20/ERC20Upgradeable.sol"; import { AddressResolver } from "../../common/AddressResolver.sol"; +import { IBlobHashReader } from "../../4844/IBlobHashReader.sol"; import { LibAddress } from "../../libs/LibAddress.sol"; import { ITierProvider } from "../tiers/ITierProvider.sol"; @@ -29,8 +30,8 @@ library LibProposing { address indexed assignedProver, uint96 livenessBond, uint256 proverFee, - uint16 minTier, - TaikoData.BlockMetadata meta + TaikoData.BlockMetadata meta, + TaikoData.EthDeposit[] depositsProcessed ); // Warning: Any errors defined here must also be defined in TaikoErrors.sol. @@ -38,26 +39,34 @@ library LibProposing { error L1_ASSIGNMENT_INVALID_SIG(); error L1_ASSIGNMENT_INVALID_PARAMS(); error L1_ASSIGNMENT_INSUFFICIENT_FEE(); + error L1_BLOB_FOR_DA_DISABLED(); + error L1_NO_BLOB_FOUND(); error L1_TIER_NOT_FOUND(); error L1_TOO_MANY_BLOCKS(); - error L1_TXLIST_MISMATCH(); error L1_TXLIST_TOO_LARGE(); error L1_UNAUTHORIZED(); /// @dev Proposes a Taiko L2 block. - function proposeBlock( TaikoData.State storage state, TaikoData.Config memory config, AddressResolver resolver, - bytes32 txListHash, - bytes32 extraData, - TaikoData.ProverAssignment memory assignment, + bytes calldata data, bytes calldata txList ) internal - returns (TaikoData.BlockMetadata memory meta) + returns ( + TaikoData.BlockMetadata memory meta, + TaikoData.EthDeposit[] memory depositsProcessed + ) { + TaikoData.BlockParams memory params = + abi.decode(data, (TaikoData.BlockParams)); + + if (!config.allowUsingBlobForDA && txList.length == 0) { + revert L1_BLOB_FOR_DA_DISABLED(); + } + // Taiko, as a Based Rollup, enables permissionless block proposals. // However, if the "proposer" address is set to a non-zero value, we // ensure that only that specific address has the authority to propose @@ -65,17 +74,6 @@ library LibProposing { TaikoData.SlotB memory b = state.slotB; if (!_isProposerPermitted(b, resolver)) revert L1_UNAUTHORIZED(); - if (txList.length > config.blockMaxTxListBytes) { - revert L1_TXLIST_TOO_LARGE(); - } - - // It's necessary to verify that the txHash matches the provided hash. - // However, when we employ a blob for the txList, the verification - // process will differ. - if (txListHash != keccak256(txList)) { - revert L1_TXLIST_MISMATCH(); - } - // It's essential to ensure that the ring buffer for proposed blocks // still has space for at least one more block. @@ -84,11 +82,37 @@ library LibProposing { revert L1_TOO_MANY_BLOCKS(); } + bytes32 blobHash; //or txListHash (if Blob not yet supported) + if (txList.length == 0) { + // Always use the first blob in this transaction. + // If the proposeBlock functions are called more than once in the + // same L1 transaction, these 2 L2 blocks will use the same blob as + // DA. + blobHash = IBlobHashReader( + resolver.resolve("blob_hash_reader", false) + ).getFirstBlobHash(); + + if (blobHash == 0) revert L1_NO_BLOB_FOUND(); + } else { + if (txList.length > config.blockMaxTxListBytes) { + revert L1_TXLIST_TOO_LARGE(); + } + blobHash = keccak256(txList); + } + + // Each transaction must handle a specific quantity of L1-to-L2 + // Ether deposits. + depositsProcessed = + LibDepositing.processDeposits(state, config, msg.sender); + // Initialize metadata to compute a metaHash, which forms a part of // the block data to be stored on-chain for future integrity checks. // If we choose to persist all data fields in the metadata, it will // require additional storage slots. unchecked { + uint256 rand = uint256(blobHash) + ^ (block.prevrandao * b.numBlocks * block.number); + meta = TaikoData.BlockMetadata({ l1Hash: blockhash(block.number - 1), // Following the Merge, the L1 mixHash incorporates the @@ -96,22 +120,20 @@ library LibProposing { // of multiple Taiko blocks being proposed within a single // Ethereum block, we must introduce a salt to this random // number as the L2 mixHash. - difficulty: bytes32(block.prevrandao * b.numBlocks), - txListHash: txListHash, - extraData: extraData, + difficulty: bytes32(rand), + blobHash: blobHash, + extraData: params.extraData, + depositsHash: keccak256(abi.encode(depositsProcessed)), + coinbase: msg.sender, id: b.numBlocks, + gasLimit: config.blockMaxGasLimit, timestamp: uint64(block.timestamp), l1Height: uint64(block.number - 1), - gasLimit: config.blockMaxGasLimit, - coinbase: msg.sender, - // Each transaction must handle a specific quantity of L1-to-L2 - // Ether deposits. - depositsProcessed: LibDepositing.processDeposits( - state, config, msg.sender - ) + minTier: ITierProvider(resolver.resolve("tier_provider", false)) + .getMinTier(rand), + blobUsed: txList.length == 0 }); } - // Now, it's essential to initialize the block that will be stored // on L1. We should aim to utilize as few storage slots as possible, // alghouth using a ring buffer can minimize storage writes once @@ -122,13 +144,14 @@ library LibProposing { // Please note that all fields must be re-initialized since we are // utilizing an existing ring buffer slot, not creating a new storage // slot. - blk.metaHash = hashMetadata(meta); + blk.metaHash = keccak256(abi.encode(meta)); // Safeguard the liveness bond to ensure its preservation, // particularly in scenarios where it might be altered after the // block's proposal but before it has been proven or verified. blk.livenessBond = config.livenessBond; blk.blockId = b.numBlocks; + blk.proposedAt = meta.timestamp; // For a new block, the next transition ID is always 1, not 0. @@ -137,19 +160,12 @@ library LibProposing { // For unverified block, its verifiedTransitionId is always 0. blk.verifiedTransitionId = 0; - // The LibTiers play a crucial role in determining the minimum tier - // required for the block's validity proof. It's imperative to - // maintain a certain percentage of blocks for each tier to ensure - // that provers are consistently available when needed. - blk.minTier = ITierProvider(resolver.resolve("tier_provider", false)) - .getMinTier(uint256(blk.metaHash)); - // Verify assignment authorization; if prover's address is an IProver // contract, transfer Ether and call "validateAssignment" for // verification. // Prover can charge ERC20/NFT as fees; msg.value can be zero. Taiko // doesn't mandate Ether as the only proofing fee. - blk.assignedProver = assignment.prover; + blk.assignedProver = params.assignment.prover; // The assigned prover burns Taiko tokens, referred to as the // "liveness bond." This bond remains non-refundable to the @@ -169,42 +185,21 @@ library LibProposing { // Validate the prover assignment, then charge Ether or ERC20 as the // prover fee based on the block's minTier. uint256 proverFee = - _validateAssignment(blk.minTier, txListHash, assignment); + _validateAssignment(meta.minTier, blobHash, params.assignment); emit BlockProposed({ blockId: blk.blockId, assignedProver: blk.assignedProver, livenessBond: config.livenessBond, proverFee: proverFee, - minTier: blk.minTier, - meta: meta + meta: meta, + depositsProcessed: depositsProcessed }); } - /// @dev Hashing the block metadata. - function hashMetadata(TaikoData.BlockMetadata memory meta) - internal - pure - returns (bytes32 hash) - { - uint256[7] memory inputs; - inputs[0] = uint256(meta.l1Hash); - inputs[1] = uint256(meta.difficulty); - inputs[2] = uint256(meta.txListHash); - inputs[3] = uint256(meta.extraData); - inputs[4] = (uint256(meta.id)) | (uint256(meta.timestamp) << 64) - | (uint256(meta.l1Height) << 128) | (uint256(meta.gasLimit) << 192); - inputs[5] = uint256(uint160(meta.coinbase)); - inputs[6] = uint256(keccak256(abi.encode(meta.depositsProcessed))); - - assembly { - hash := keccak256(inputs, 224 /*mul(7, 32)*/ ) - } - } - - function hashAssignmentForTxList( + function hashAssignment( TaikoData.ProverAssignment memory assignment, - bytes32 txListHash + bytes32 blobHash ) internal pure @@ -213,7 +208,7 @@ library LibProposing { return keccak256( abi.encode( "PROVER_ASSIGNMENT", - txListHash, + blobHash, assignment.feeToken, assignment.expiry, assignment.tierFees @@ -223,7 +218,7 @@ library LibProposing { function _validateAssignment( uint16 minTier, - bytes32 txListHash, + bytes32 blobHash, TaikoData.ProverAssignment memory assignment ) private @@ -234,13 +229,13 @@ library LibProposing { revert L1_ASSIGNMENT_EXPIRED(); } - if (txListHash == 0 || assignment.prover == address(0)) { + if (blobHash == 0 || assignment.prover == address(0)) { revert L1_ASSIGNMENT_INVALID_PARAMS(); } - // Hash the assignment with the txListHash, this hash will be signed by + // Hash the assignment with the blobHash, this hash will be signed by // the prover, therefore, we add a string as a prefix. - bytes32 hash = hashAssignmentForTxList(assignment, txListHash); + bytes32 hash = hashAssignment(assignment, blobHash); if (!assignment.prover.isValidSignature(hash, assignment.signature)) { revert L1_ASSIGNMENT_INVALID_SIG(); diff --git a/packages/protocol/contracts/L1/libs/LibProving.sol b/packages/protocol/contracts/L1/libs/LibProving.sol index a61ddf3750..eb246a4090 100644 --- a/packages/protocol/contracts/L1/libs/LibProving.sol +++ b/packages/protocol/contracts/L1/libs/LibProving.sol @@ -19,12 +19,13 @@ import { LibUtils } from "./LibUtils.sol"; /// @notice A library for handling block contestation and proving in the Taiko /// protocol. library LibProving { + bytes32 public constant RETURN_LIVENESS_BOND = + keccak256("RETURN_LIVENESS_BOND"); // Warning: Any events defined here must also be defined in TaikoEvents.sol. + event TransitionProved( uint256 indexed blockId, - bytes32 parentHash, - bytes32 blockHash, - bytes32 signalRoot, + TaikoData.Transition tran, address prover, uint96 validityBond, uint16 tier @@ -32,9 +33,7 @@ library LibProving { event TransitionContested( uint256 indexed blockId, - bytes32 parentHash, - bytes32 blockHash, - bytes32 signalRoot, + TaikoData.Transition tran, address contester, uint96 contestBond, uint16 tier @@ -46,8 +45,8 @@ library LibProving { error L1_ASSIGNED_PROVER_NOT_ALLOWED(); error L1_BLOCK_MISMATCH(); error L1_INVALID_BLOCK_ID(); - error L1_INVALID_EVIDENCE(); error L1_INVALID_TIER(); + error L1_INVALID_TRANSITION(); error L1_NOT_ASSIGNED_PROVER(); error L1_UNEXPECTED_TRANSITION_TIER(); @@ -56,28 +55,32 @@ library LibProving { TaikoData.State storage state, TaikoData.Config memory config, AddressResolver resolver, - uint64 blockId, - TaikoData.BlockEvidence memory evidence + TaikoData.BlockMetadata memory meta, + TaikoData.Transition memory tran, + TaikoData.TierProof memory proof ) internal returns (uint8 maxBlocksToVerify) { // Make sure parentHash is not zero - if (evidence.parentHash == 0) revert L1_INVALID_EVIDENCE(); + if (tran.parentHash == 0) revert L1_INVALID_TRANSITION(); // Check that the block has been proposed but has not yet been verified. TaikoData.SlotB memory b = state.slotB; - if (blockId <= b.lastVerifiedBlockId || blockId >= b.numBlocks) { + if (meta.id <= b.lastVerifiedBlockId || meta.id >= b.numBlocks) { revert L1_INVALID_BLOCK_ID(); } - uint64 slot = blockId % config.blockRingBufferSize; + uint64 slot = meta.id % config.blockRingBufferSize; TaikoData.Block storage blk = state.blocks[slot]; // Check the integrity of the block data. It's worth noting that in // theory, this check may be skipped, but it's included for added // caution. - if (blk.blockId != blockId || blk.metaHash != evidence.metaHash) { + if ( + blk.blockId != meta.id + || blk.metaHash != keccak256(abi.encode(meta)) + ) { revert L1_BLOCK_MISMATCH(); } @@ -85,9 +88,8 @@ library LibProving { // blockHash and signalRoot open for later updates as higher-tier proofs // become available. In cases where a transition with the specified // parentHash does not exist, the transition ID (tid) will be set to 0. - uint32 tid = - LibUtils.getTransitionId(state, blk, slot, evidence.parentHash); - TaikoData.Transition storage tran; + uint32 tid = LibUtils.getTransitionId(state, blk, slot, tran.parentHash); + TaikoData.TransitionState storage ts; if (tid == 0) { // In cases where a transition with the provided parentHash is not @@ -108,14 +110,14 @@ library LibProving { // Keep in mind that state.transitions are also reusable storage // slots, so it's necessary to reinitialize all transition fields // below. - tran = state.transitions[slot][tid]; - tran.blockHash = 0; - tran.signalRoot = 0; - tran.validityBond = 0; - tran.contester = address(0); - tran.contestBond = 1; // see below (the value does't matter) - tran.timestamp = blk.proposedAt; - tran.tier = 0; + ts = state.transitions[slot][tid]; + ts.blockHash = 0; + ts.signalRoot = 0; + ts.validityBond = 0; + ts.contester = address(0); + ts.contestBond = 1; // see below (the value does't matter) + ts.timestamp = blk.proposedAt; + ts.tier = 0; if (tid == 1) { // This approach serves as a cost-saving technique for the @@ -123,7 +125,7 @@ library LibProving { // be the correct one. Writing to `tran` is more economical // since it resides in the ring buffer, whereas writing to // `transitionIds` is not as cost-effective. - tran.key = evidence.parentHash; + ts.key = tran.parentHash; // In the case of this first transition, the block's assigned // prover has the privilege to re-prove it, but only when the @@ -135,31 +137,32 @@ library LibProving { // // While alternative implementations are possible, introducing // such changes would require additional if-else logic. - tran.prover = blk.assignedProver; + ts.prover = blk.assignedProver; } else { // In scenarios where this transition is not the first one, we // straightforwardly reset the transition prover to address // zero. - tran.prover = address(0); + ts.prover = address(0); // Furthermore, we index the transition for future retrieval. // It's worth emphasizing that this mapping for indexing is not // reusable. However, given that the majority of blocks will // only possess one transition — the correct one — we don't need // to be concerned about the cost in this case. - state.transitionIds[blk.blockId][evidence.parentHash] = tid; + state.transitionIds[blk.blockId][tran.parentHash] = tid; } } else { // A transition with the provided parentHash has been located. - tran = state.transitions[slot][tid]; - if (tran.tier < blk.minTier) revert L1_UNEXPECTED_TRANSITION_TIER(); + ts = state.transitions[slot][tid]; + if (ts.tier < meta.minTier) { + revert L1_UNEXPECTED_TRANSITION_TIER(); + } } // The new proof must meet or exceed the minimum tier required by the // block or the previous proof; it cannot be on a lower tier. if ( - evidence.tier == 0 || evidence.tier < blk.minTier - || evidence.tier < tran.tier + proof.tier == 0 || proof.tier < meta.minTier || proof.tier < ts.tier ) { revert L1_INVALID_TIER(); } @@ -168,93 +171,108 @@ library LibProving { // subsequent action will result in a revert. ITierProvider.Tier memory tier = ITierProvider( resolver.resolve("tier_provider", false) - ).getTier(evidence.tier); + ).getTier(proof.tier); + + maxBlocksToVerify = tier.maxBlocksToVerify; // We must verify the proof, and any failure in proof verification will - // result in a revert of the following code. + // result in a revert. // // It's crucial to emphasize that the proof can be assessed in two // potential modes: "proving mode" and "contesting mode." However, the - // precise verification logic is defined within each - // tier'IVerifier contract implementation. We simply specify to - // the verifier contract which mode it should utilize - if the new tier - // is higher than the previous tier, we employ the proving mode; - // otherwise, we employ the contesting mode (the new tier cannot be - // lower than the previous tier, this has been checked above). + // precise verification logic is defined within each tier'IVerifier + // contract implementation. We simply specify to the verifier contract + // which mode it should utilize - if the new tier is higher than the + // previous tier, we employ the proving mode; otherwise, we employ the + // contesting mode (the new tier cannot be lower than the previous tier, + // this has been checked above). // // It's obvious that proof verification is entirely decoupled from // Taiko's core protocol. { address verifier = resolver.resolve(tier.verifierName, true); - // The verifier can be address-zero, signifying that there are no // proof checks for the tier. In practice, this only applies to // optimistic proofs. if (verifier != address(0)) { - IVerifier(verifier).verifyProof({ - blockId: blk.blockId, + bool isContesting = + proof.tier == ts.tier && tier.contestBond != 0; + + IVerifier.Context memory ctx = IVerifier.Context({ + metaHash: blk.metaHash, + blobHash: meta.blobHash, prover: msg.sender, - isContesting: evidence.tier == tran.tier - && tier.contestBond != 0, - evidence: evidence + blockId: blk.blockId, + isContesting: isContesting, + blobUsed: meta.blobUsed }); + + IVerifier(verifier).verifyProof(ctx, tran, proof); } } - maxBlocksToVerify = tier.maxBlocksToVerify; - if (tier.contestBond == 0) { + assert(tier.validityBond == 0); // When contestBond is zero for the current tier, it signifies // it's the top tier. In this case, it can overwrite existing // transitions without contestation. - - // We should outright prohibit the use of zero values for both - // blockHash and signalRoot since, when we initialize a new - // transition, we set both blockHash and signalRoot to 0. if ( - evidence.blockHash == tran.blockHash - && evidence.signalRoot == tran.signalRoot + tran.blockHash == ts.blockHash + && tran.signalRoot == ts.signalRoot ) { revert L1_ALREADY_PROVED(); } - - if (evidence.blockHash == 0 || evidence.signalRoot == 0) { - revert L1_INVALID_EVIDENCE(); + // We should outright prohibit the use of zero values for both + // blockHash and signalRoot since, when we initialize a new + // transition, we set both blockHash and signalRoot to 0. + if (tran.blockHash == 0 || tran.signalRoot == 0) { + revert L1_INVALID_TRANSITION(); } + // A special return value from the top tier prover can signal this + // contract to return all liveness bond. if ( - evidence.proof.length == 32 - && bytes32(evidence.proof) == keccak256("RETURN_LIVENESS_BOND") + blk.livenessBond > 0 && proof.data.length == 32 + && bytes32(proof.data) == RETURN_LIVENESS_BOND ) { LibTaikoToken.creditTaikoToken( state, blk.assignedProver, blk.livenessBond ); + blk.livenessBond = 0; } - tran.blockHash = evidence.blockHash; - tran.signalRoot = evidence.signalRoot; - tran.prover = msg.sender; - tran.timestamp = uint64(block.timestamp); - tran.tier = evidence.tier; + ts.blockHash = tran.blockHash; + ts.signalRoot = tran.signalRoot; + ts.prover = msg.sender; + + if (ts.contester != address(0)) { + // At this point we know that the contester was right + LibTaikoToken.creditTaikoToken( + state, ts.contester, ts.validityBond / 4 + ts.contestBond + ); + ts.contester = address(0); + ts.validityBond = 0; + } + + ts.timestamp = uint64(block.timestamp); + ts.tier = proof.tier; emit TransitionProved({ blockId: blk.blockId, - parentHash: evidence.parentHash, - blockHash: evidence.blockHash, - signalRoot: evidence.signalRoot, + tran: tran, prover: msg.sender, validityBond: 0, - tier: evidence.tier + tier: proof.tier }); - } else if (evidence.tier == tran.tier) { + } else if (proof.tier == ts.tier) { // Contesting an existing transition requires either the blockHash // or signalRoot to be different. This precaution is necessary // because this `proveBlock` transaction might aim to prove a // transition but could potentially be front-run by another prover // attempting to prove the same transition. if ( - evidence.blockHash == tran.blockHash - && evidence.signalRoot == tran.signalRoot + tran.blockHash == ts.blockHash + && tran.signalRoot == ts.signalRoot ) { revert L1_ALREADY_PROVED(); } @@ -262,15 +280,15 @@ library LibProving { // The new tier is the same as the previous tier, we are in the // contesting mode. // - // It's important to note that evidence.blockHash and - // evidence.signalRoot are not permanently stored, so their + // It's important to note that tran.blockHash and + // tran.signalRoot are not permanently stored, so their // specific values are inconsequential. They only need to differ // from the existing values to signify a contest. Therefore, a // contester can conveniently utilize the value 1 for these two // parameters. // The existing transiton must not have been contested. - if (tran.contester != address(0)) revert L1_ALREADY_CONTESTED(); + if (ts.contester != address(0)) revert L1_ALREADY_CONTESTED(); // Burn the contest bond from the prover. LibTaikoToken.debitTaikoToken( @@ -281,36 +299,35 @@ library LibProving { // case this configuration is altered to a different value // before the contest is resolved. // - // It's worth noting that the previous value of tran.contestBond + // It's worth noting that the previous value of ts.contestBond // doesn't have any significance. - tran.contestBond = tier.contestBond; - tran.contester = msg.sender; - tran.timestamp = uint64(block.timestamp); + ts.contestBond = tier.contestBond; + ts.contester = msg.sender; + ts.timestamp = uint64(block.timestamp); emit TransitionContested({ blockId: blk.blockId, - parentHash: evidence.parentHash, - blockHash: tran.blockHash, - signalRoot: tran.signalRoot, + tran: tran, contester: msg.sender, contestBond: tier.contestBond, - tier: evidence.tier + tier: proof.tier }); } else { - // The new tier is higher than the previous tier, we are in the + assert(proof.tier > ts.tier); + // The new tier is higher than the previous tier, we are in the // proving mode. This works even if this transition's contester is - // address zero. + // address zero, see more info below. // zero values are not allowed - if (evidence.blockHash == 0 || evidence.signalRoot == 0) { - revert L1_INVALID_EVIDENCE(); + if (tran.blockHash == 0 || tran.signalRoot == 0) { + revert L1_INVALID_TRANSITION(); } // The ability to prove a transition is granted under the following // two circumstances: // // 1. When the transition has been contested, indicated by - // tran.contester not being address zero. + // ts.contester not being address zero. // // 2. When the transition's blockHash and/or signalRoot differs. In // this case, the new prover essentially contests the previous proof @@ -319,9 +336,8 @@ library LibProving { // This streamlined process is applied to 0-to-non-zero transition // updates. if ( - tran.contester == address(0) - && tran.blockHash == evidence.blockHash - && tran.signalRoot == evidence.signalRoot + ts.contester == address(0) && ts.blockHash == tran.blockHash + && ts.signalRoot == tran.signalRoot ) { // Alternatively, it can be understood that a transition cannot // be re-approved by higher-tier proofs without undergoing @@ -329,18 +345,18 @@ library LibProving { revert L1_ALREADY_PROVED(); } - if (tid == 1 && tran.prover == blk.assignedProver) { + if (tid == 1 && ts.prover == blk.assignedProver) { // For the first transition, (1) if the previous prover is // still the assigned prover, we exclusively grant permission to // the assigned approver to re-prove the block, (2) unless the // proof window has elapsed. if ( - block.timestamp <= tran.timestamp + tier.provingWindow + block.timestamp <= ts.timestamp + tier.provingWindow && msg.sender != blk.assignedProver ) revert L1_NOT_ASSIGNED_PROVER(); if ( - block.timestamp > tran.timestamp + tier.provingWindow + block.timestamp > ts.timestamp + tier.provingWindow && msg.sender == blk.assignedProver ) revert L1_ASSIGNED_PROVER_NOT_ALLOWED(); } else if (msg.sender == blk.assignedProver) { @@ -351,42 +367,38 @@ library LibProving { revert L1_ASSIGNED_PROVER_NOT_ALLOWED(); } - // Burn the validity bond from the prover. - LibTaikoToken.debitTaikoToken( - state, resolver, msg.sender, tier.validityBond - ); - unchecked { // This is the amount of Taiko tokens to send to the new prover - // and the winner of the contest. + // and the winner of the contest (same amount to both parties). uint256 reward; if ( - tran.blockHash == evidence.blockHash - && tran.signalRoot == evidence.signalRoot + ts.blockHash == tran.blockHash + && ts.signalRoot == tran.signalRoot ) { + assert(ts.contester != address(0)); // In the event that the previous prover emerges as the // winner, half of the contest bond is designated as the // reward, to be divided equally between the new prover and - // the previous prover. - reward = tran.contestBond / 4; + // the previous prover -- 1/4 each + reward = ts.contestBond / 4; // Mint the reward and the validity bond and return it to // the previous prover. LibTaikoToken.creditTaikoToken( - state, tran.prover, reward + tran.validityBond + state, ts.prover, reward + ts.validityBond ); } else { // In the event that the contester is the winner, half of // the validity bond is designated as the reward, to be // divided equally between the new prover and the contester. - reward = tran.validityBond / 4; + reward = ts.validityBond / 4; // It's important to note that the contester is set to zero // for the tier-0 transition. Consequently, we only grant a // reward to the contester if it is not a zero-address. - if (tran.contester != address(0)) { + if (ts.contester != address(0)) { LibTaikoToken.creditTaikoToken( - state, tran.contester, reward + tran.contestBond + state, ts.contester, reward + ts.contestBond ); } else { // The prover is also the contester, so the reward is @@ -400,33 +412,37 @@ library LibProving { // previous blockHash and signalRoot are considered // incorrect, and we must replace them with the correct // values. - tran.blockHash = evidence.blockHash; - tran.signalRoot = evidence.signalRoot; + ts.blockHash = tran.blockHash; + ts.signalRoot = tran.signalRoot; } + // Reward this prover. // In theory, the reward can also be zero for certain tiers if // their validity bonds are set to zero. LibTaikoToken.creditTaikoToken(state, msg.sender, reward); } + // Burn the validity bond from the prover. + LibTaikoToken.debitTaikoToken( + state, resolver, msg.sender, tier.validityBond + ); + // Regardless of whether the previous prover or the contester // emerges as the winner, we consistently erase the contest history // to make this transition appear entirely new. - tran.prover = msg.sender; - tran.validityBond = tier.validityBond; - tran.contester = address(0); - tran.contestBond = 1; - tran.timestamp = uint64(block.timestamp); - tran.tier = evidence.tier; + ts.prover = msg.sender; + ts.validityBond = tier.validityBond; + ts.contester = address(0); + ts.contestBond = 1; // to save gas + ts.timestamp = uint64(block.timestamp); + ts.tier = proof.tier; emit TransitionProved({ blockId: blk.blockId, - parentHash: evidence.parentHash, - blockHash: evidence.blockHash, - signalRoot: evidence.signalRoot, + tran: tran, prover: msg.sender, validityBond: tier.validityBond, - tier: evidence.tier + tier: proof.tier }); } } diff --git a/packages/protocol/contracts/L1/libs/LibUtils.sol b/packages/protocol/contracts/L1/libs/LibUtils.sol index 165246beb3..0155b65fa5 100644 --- a/packages/protocol/contracts/L1/libs/LibUtils.sol +++ b/packages/protocol/contracts/L1/libs/LibUtils.sol @@ -64,7 +64,7 @@ library LibUtils { ) internal view - returns (TaikoData.Transition storage tran) + returns (TaikoData.TransitionState storage ts) { TaikoData.SlotB memory b = state.slotB; if (blockId < b.lastVerifiedBlockId || blockId >= b.numBlocks) { @@ -78,7 +78,7 @@ library LibUtils { uint32 tid = getTransitionId(state, blk, slot, parentHash); if (tid == 0) revert L1_TRANSITION_NOT_FOUND(); - tran = state.transitions[slot][tid]; + ts = state.transitions[slot][tid]; } /// @dev Retrieves the transition that is used to verify the given block. @@ -90,7 +90,7 @@ library LibUtils { ) internal view - returns (TaikoData.Transition storage) + returns (TaikoData.TransitionState storage) { uint64 _blockId = blockId == 0 ? state.slotB.lastVerifiedBlockId : blockId; diff --git a/packages/protocol/contracts/L1/libs/LibVerifying.sol b/packages/protocol/contracts/L1/libs/LibVerifying.sol index 555fec3220..17c15440e5 100644 --- a/packages/protocol/contracts/L1/libs/LibVerifying.sol +++ b/packages/protocol/contracts/L1/libs/LibVerifying.sol @@ -57,10 +57,10 @@ library LibVerifying { blk.verifiedTransitionId = 1; // Init the first state transition - TaikoData.Transition storage tran = state.transitions[0][1]; - tran.blockHash = genesisBlockHash; - tran.prover = address(0); - tran.timestamp = uint64(block.timestamp); + TaikoData.TransitionState storage ts = state.transitions[0][1]; + ts.blockHash = genesisBlockHash; + ts.prover = address(0); + ts.timestamp = uint64(block.timestamp); emit BlockVerified({ blockId: 0, @@ -123,12 +123,13 @@ library LibVerifying { if (tid == 0) break; // A transition with the correct `parentHash` has been located. - TaikoData.Transition storage tran = state.transitions[slot][tid]; + TaikoData.TransitionState storage ts = + state.transitions[slot][tid]; // It's not possible to verify this block if either the // transition is contested and awaiting higher-tier proof or if // the transition is still within its cooldown period. - if (tran.contester != address(0)) { + if (ts.contester != address(0)) { break; } else { if (tierProvider == address(0)) { @@ -136,9 +137,9 @@ library LibVerifying { } if ( uint256( - ITierProvider(tierProvider).getTier(tran.tier) + ITierProvider(tierProvider).getTier(ts.tier) .cooldownWindow - ) + tran.timestamp > block.timestamp + ) + ts.timestamp > block.timestamp ) { // If cooldownWindow is 0, the block can theoretically // be proved and verified within the same L1 block. @@ -150,8 +151,8 @@ library LibVerifying { blk.verifiedTransitionId = tid; // Update variables - blockHash = tran.blockHash; - signalRoot = tran.signalRoot; + blockHash = ts.blockHash; + signalRoot = ts.signalRoot; // We consistently return the liveness bond and the validity // bond to the actual prover of the transition utilized for @@ -164,17 +165,17 @@ library LibVerifying { // forfeits his liveness bond due to failure to fulfill their // commitment. uint256 bondToReturn = - uint256(tran.validityBond) + blk.livenessBond; + uint256(ts.validityBond) + blk.livenessBond; // Nevertheless, it's possible for the actual prover to be the // same individual or entity as the block's assigned prover. // Consequently, we have chosen to grant the actual prover only // half of the liveness bond as a reward. - if (tran.prover != blk.assignedProver) { + if (ts.prover != blk.assignedProver) { bondToReturn -= blk.livenessBond / 2; } - LibTaikoToken.creditTaikoToken(state, tran.prover, bondToReturn); + LibTaikoToken.creditTaikoToken(state, ts.prover, bondToReturn); // Note: We exclusively address the bonds linked to the // transition used for verification. While there may exist @@ -187,9 +188,9 @@ library LibVerifying { emit BlockVerified({ blockId: blockId, assignedProver: blk.assignedProver, - prover: tran.prover, - blockHash: tran.blockHash, - signalRoot: tran.signalRoot + prover: ts.prover, + blockHash: ts.blockHash, + signalRoot: ts.signalRoot }); ++blockId; diff --git a/packages/protocol/contracts/L1/provers/GuardianProver.sol b/packages/protocol/contracts/L1/provers/GuardianProver.sol index 8c9b50f9b6..73f83dfb79 100644 --- a/packages/protocol/contracts/L1/provers/GuardianProver.sol +++ b/packages/protocol/contracts/L1/provers/GuardianProver.sol @@ -17,19 +17,16 @@ contract GuardianProver is EssentialContract { uint256 public constant NUM_GUARDIANS = 5; uint256 public constant REQUIRED_GUARDIANS = 3; - address[NUM_GUARDIANS] public guardians; // slots 1 - 5 - mapping(address guardian => uint256 id) public guardianIds; // slot 6 - mapping(bytes32 => uint256 approvalBits) public approvals; // slot 7 - - uint256[43] private __gap; - // Cannot use NUM_GUARDIANS directly below otherwise hardhat will fail + mapping(address guardian => uint256 id) public guardianIds; // slot 1 + mapping(bytes32 => uint256 approvalBits) public approvals; // slot 2 + address[NUM_GUARDIANS] public guardians; // slots 3,4,5,6,7 + uint256[43] private __gap2; + // Cannot use NUM_GUARDIANS below in event directly otherwise hardhat will + // fail event GuardiansUpdated(address[5]); event Approved( - uint64 blockId, - TaikoData.BlockEvidence evidence, - uint256 approvalBits, - bool proofSubmitted + uint64 indexed blockId, uint256 approvalBits, bool proofSubmitted ); error INVALID_GUARDIAN(); @@ -73,9 +70,10 @@ contract GuardianProver is EssentialContract { } /// @dev Called by guardians to approve a guardian proof - function approveEvidence( - uint64 blockId, - TaikoData.BlockEvidence memory evidence + function approve( + TaikoData.BlockMetadata calldata meta, + TaikoData.Transition calldata tran, + TaikoData.TierProof calldata proof ) external nonReentrant @@ -83,16 +81,18 @@ contract GuardianProver is EssentialContract { uint256 id = guardianIds[msg.sender]; if (id == 0) revert INVALID_GUARDIAN(); - if (evidence.tier != LibTiers.TIER_GUARDIAN) revert INVALID_PROOF(); + if (proof.tier != LibTiers.TIER_GUARDIAN) revert INVALID_PROOF(); - bytes32 hash = keccak256(abi.encode(blockId, evidence)); + bytes32 hash = keccak256(abi.encode(meta, tran)); uint256 approvalBits = approvals[hash]; approvalBits |= 1 << id; if (_isApproved(approvalBits)) { bytes memory data = abi.encodeWithSignature( - "proveBlock(uint64,bytes)", blockId, abi.encode(evidence) + "proveBlock(uint64,bytes)", + meta.id, + abi.encode(meta, tran, proof) ); (bool success,) = resolve("taiko", false).call(data); @@ -100,10 +100,10 @@ contract GuardianProver is EssentialContract { if (!success) revert PROVING_FAILED(); delete approvals[hash]; - emit Approved(blockId, evidence, approvalBits, true); + emit Approved(meta.id, approvalBits, true); } else { approvals[hash] = approvalBits; - emit Approved(blockId, evidence, approvalBits, false); + emit Approved(meta.id, approvalBits, false); } } diff --git a/packages/protocol/contracts/L1/tiers/ITierProvider.sol b/packages/protocol/contracts/L1/tiers/ITierProvider.sol index 034331af81..162283d09b 100644 --- a/packages/protocol/contracts/L1/tiers/ITierProvider.sol +++ b/packages/protocol/contracts/L1/tiers/ITierProvider.sol @@ -28,6 +28,7 @@ interface ITierProvider { function getMinTier(uint256 rand) external view returns (uint16); } +/// @dev Tier ID cannot be zero! library LibTiers { uint16 public constant TIER_OPTIMISTIC = 100; uint16 public constant TIER_SGX = 200; diff --git a/packages/protocol/contracts/L1/verifiers/GuardianVerifier.sol b/packages/protocol/contracts/L1/verifiers/GuardianVerifier.sol index 54f15a16f3..a1fad322c8 100644 --- a/packages/protocol/contracts/L1/verifiers/GuardianVerifier.sol +++ b/packages/protocol/contracts/L1/verifiers/GuardianVerifier.sol @@ -27,15 +27,16 @@ contract GuardianVerifier is EssentialContract, IVerifier { /// @inheritdoc IVerifier function verifyProof( - uint64, - address prover, - bool, - TaikoData.BlockEvidence calldata + Context calldata ctx, + TaikoData.Transition calldata, + TaikoData.TierProof calldata ) external view { - if (prover != resolve("guardian", false)) revert PERMISSION_DENIED(); + if (ctx.prover != resolve("guardian", false)) { + revert PERMISSION_DENIED(); + } } } diff --git a/packages/protocol/contracts/L1/verifiers/IVerifier.sol b/packages/protocol/contracts/L1/verifiers/IVerifier.sol index 6826341538..e32b399878 100644 --- a/packages/protocol/contracts/L1/verifiers/IVerifier.sol +++ b/packages/protocol/contracts/L1/verifiers/IVerifier.sol @@ -11,11 +11,19 @@ import { TaikoData } from "../TaikoData.sol"; /// @title IVerifier Interface /// @notice Defines the function that handles proof verification. interface IVerifier { + struct Context { + bytes32 metaHash; + bytes32 blobHash; + address prover; + uint64 blockId; + bool isContesting; + bool blobUsed; + } + function verifyProof( - uint64 blockId, - address prover, - bool isContesting, - TaikoData.BlockEvidence memory evidence + Context calldata ctx, + TaikoData.Transition calldata tran, + TaikoData.TierProof calldata proof ) external; } diff --git a/packages/protocol/contracts/L1/verifiers/PlonkVerifier.yulp b/packages/protocol/contracts/L1/verifiers/PlonkVerifier.yulp index ff337407c4..570e425c7d 100644 --- a/packages/protocol/contracts/L1/verifiers/PlonkVerifier.yulp +++ b/packages/protocol/contracts/L1/verifiers/PlonkVerifier.yulp @@ -1,4 +1,5 @@ // Code generated - DO NOT EDIT. +// Generated using https://github.com/privacy-scaling-explorations/snark-verifier // SPDX-License-Identifier: MIT // _____ _ _ _ _ // |_ _|_ _(_) |_____ | | __ _| |__ ___ diff --git a/packages/protocol/contracts/L1/verifiers/PseZkVerifier.sol b/packages/protocol/contracts/L1/verifiers/PseZkVerifier.sol index dcb716525b..ba5f97d387 100644 --- a/packages/protocol/contracts/L1/verifiers/PseZkVerifier.sol +++ b/packages/protocol/contracts/L1/verifiers/PseZkVerifier.sol @@ -7,6 +7,8 @@ pragma solidity ^0.8.20; import { EssentialContract } from "../../common/EssentialContract.sol"; +import { Lib4844 } from "../../4844/Lib4844.sol"; +import { Proxied } from "../../common/Proxied.sol"; import { Proxied } from "../../common/Proxied.sol"; import { LibBytesUtils } from "../../thirdparty/LibBytesUtils.sol"; @@ -17,6 +19,19 @@ import { IVerifier } from "./IVerifier.sol"; /// @title PseZkVerifier /// @notice See the documentation in {IVerifier}. contract PseZkVerifier is EssentialContract, IVerifier { + struct PointProof { + bytes32 txListHash; + uint256 pointValue; + bytes1[48] pointCommitment; + bytes1[48] pointProof; + } + + struct ZkEvmProof { + uint16 verifierId; + bytes zkp; + bytes pointProof; + } + uint256[50] private __gap; error L1_INVALID_PROOF(); @@ -29,45 +44,70 @@ contract PseZkVerifier is EssentialContract, IVerifier { /// @inheritdoc IVerifier function verifyProof( - // blockId is unused now, but can be used later when supporting - // different types of proofs. - uint64, - address prover, - bool isContesting, - TaikoData.BlockEvidence calldata evidence + Context calldata ctx, + TaikoData.Transition calldata tran, + TaikoData.TierProof calldata proof ) external view { // Do not run proof verification to contest an existing proof - if (isContesting) return; - - bytes32 instance = calcInstance(prover, evidence); + if (ctx.isContesting) return; + + ZkEvmProof memory zkProof = abi.decode(proof.data, (ZkEvmProof)); + + bytes32 instance; + if (ctx.blobUsed) { + PointProof memory pf = abi.decode(zkProof.pointProof, (PointProof)); + + instance = calcInstance({ + tran: tran, + prover: ctx.prover, + metaHash: ctx.metaHash, + txListHash: pf.txListHash, + pointValue: pf.pointValue + }); + + Lib4844.evaluatePoint({ + blobHash: ctx.blobHash, + x: calc4844PointEvalX(ctx.blobHash, pf.txListHash), + y: pf.pointValue, + commitment: pf.pointCommitment, + pointProof: pf.pointProof + }); + } else { + assert(zkProof.pointProof.length == 0); + instance = calcInstance({ + tran: tran, + prover: ctx.prover, + metaHash: ctx.metaHash, + txListHash: ctx.blobHash, + pointValue: 0 + }); + } // Validate the instance using bytes utilities. bool verified = LibBytesUtils.equal( - LibBytesUtils.slice(evidence.proof, 2, 32), + LibBytesUtils.slice(zkProof.zkp, 0, 32), bytes.concat(bytes16(0), bytes16(instance)) ); + if (!verified) revert L1_INVALID_PROOF(); verified = LibBytesUtils.equal( - LibBytesUtils.slice(evidence.proof, 34, 32), + LibBytesUtils.slice(zkProof.zkp, 32, 32), bytes.concat(bytes16(0), bytes16(uint128(uint256(instance)))) ); if (!verified) revert L1_INVALID_PROOF(); - // Extract verifier ID from the proof. - uint16 verifierId = uint16(bytes2(evidence.proof[0:2])); - // Delegate to the ZKP verifier library to validate the proof. // Resolve the verifier's name and obtain its address. - address verifierAddress = resolve(getVerifierName(verifierId), false); + address verifierAddress = + resolve(getVerifierName(zkProof.verifierId), false); // Call the verifier contract with the provided proof. bytes memory ret; - (verified, ret) = - verifierAddress.staticcall(bytes.concat(evidence.proof[2:])); + (verified, ret) = verifierAddress.staticcall(bytes.concat(zkProof.zkp)); // Check if the proof is valid. if (!verified) revert L1_INVALID_PROOF(); @@ -75,23 +115,31 @@ contract PseZkVerifier is EssentialContract, IVerifier { if (bytes32(ret) != keccak256("taiko")) revert L1_INVALID_PROOF(); } + function calc4844PointEvalX( + bytes32 blobHash, + bytes32 txListHash + ) + public + pure + returns (uint256) + { + return uint256(keccak256(abi.encodePacked(blobHash, txListHash))) + % Lib4844.BLS_MODULUS; + } + function calcInstance( + TaikoData.Transition memory tran, address prover, - TaikoData.BlockEvidence memory evidence + bytes32 metaHash, + bytes32 txListHash, + uint256 pointValue ) public pure returns (bytes32 instance) { return keccak256( - abi.encode( - evidence.metaHash, - evidence.parentHash, - evidence.blockHash, - evidence.signalRoot, - evidence.graffiti, - prover - ) + abi.encode(tran, prover, metaHash, txListHash, pointValue) ); } diff --git a/packages/protocol/contracts/L1/verifiers/SgxAndZkVerifier.sol b/packages/protocol/contracts/L1/verifiers/SgxAndZkVerifier.sol index 9bb37564b7..b4a3388b4d 100644 --- a/packages/protocol/contracts/L1/verifiers/SgxAndZkVerifier.sol +++ b/packages/protocol/contracts/L1/verifiers/SgxAndZkVerifier.sol @@ -28,29 +28,25 @@ contract SgxAndZkVerifier is EssentialContract, IVerifier { /// @inheritdoc IVerifier function verifyProof( - uint64 blockId, - address prover, - bool isContesting, - TaikoData.BlockEvidence calldata evidence + Context calldata ctx, + TaikoData.Transition calldata tran, + TaikoData.TierProof calldata proof ) external { - TaikoData.BlockEvidence memory _evidence = evidence; + TaikoData.TierProof memory _proof; + _proof.tier = proof.tier; // Verify the SGX part - _evidence.proof = LibBytesUtils.slice(evidence.proof, 0, SGX_PROOF_SIZE); - IVerifier(resolve("tier_sgx", false)).verifyProof( - blockId, prover, isContesting, _evidence - ); + _proof.data = LibBytesUtils.slice(proof.data, 0, SGX_PROOF_SIZE); + IVerifier(resolve("tier_sgx", false)).verifyProof(ctx, tran, _proof); // Verify the ZK part - _evidence.proof = LibBytesUtils.slice( - evidence.proof, - SGX_PROOF_SIZE, - (evidence.proof.length - SGX_PROOF_SIZE) + _proof.data = LibBytesUtils.slice( + proof.data, SGX_PROOF_SIZE, (proof.data.length - SGX_PROOF_SIZE) ); IVerifier(resolve("tier_pse_zkevm", false)).verifyProof( - blockId, prover, isContesting, _evidence + ctx, tran, _proof ); } } diff --git a/packages/protocol/contracts/L1/verifiers/SgxVerifier.sol b/packages/protocol/contracts/L1/verifiers/SgxVerifier.sol index d96d559a8a..9975d58d36 100644 --- a/packages/protocol/contracts/L1/verifiers/SgxVerifier.sol +++ b/packages/protocol/contracts/L1/verifiers/SgxVerifier.sol @@ -100,26 +100,27 @@ contract SgxVerifier is EssentialContract, IVerifier { /// @inheritdoc IVerifier function verifyProof( - uint64, - address prover, - bool isContesting, - TaikoData.BlockEvidence calldata evidence + Context calldata ctx, + TaikoData.Transition calldata tran, + TaikoData.TierProof calldata proof ) external { // Do not run proof verification to contest an existing proof - if (isContesting) return; + if (ctx.isContesting) return; // Size is: 89 bytes // 4 bytes + 20 bytes + 65 bytes (signature) = 89 - if (evidence.proof.length != 89) revert SGX_INVALID_PROOF(); + if (proof.data.length != 89) revert SGX_INVALID_PROOF(); - uint32 id = uint32(bytes4(LibBytesUtils.slice(evidence.proof, 0, 4))); + uint32 id = uint32(bytes4(LibBytesUtils.slice(proof.data, 0, 4))); address newInstance = - address(bytes20(LibBytesUtils.slice(evidence.proof, 4, 20))); - bytes memory signature = LibBytesUtils.slice(evidence.proof, 24); + address(bytes20(LibBytesUtils.slice(proof.data, 4, 20))); + bytes memory signature = LibBytesUtils.slice(proof.data, 24); + address oldInstance = ECDSAUpgradeable.recover( - getSignedHash(evidence, prover, newInstance), signature + getSignedHash(tran, newInstance, ctx.prover, ctx.metaHash), + signature ); if (!_isInstanceValid(id, oldInstance)) revert SGX_INVALID_INSTANCE(); @@ -127,25 +128,16 @@ contract SgxVerifier is EssentialContract, IVerifier { } function getSignedHash( - TaikoData.BlockEvidence memory evidence, + TaikoData.Transition memory tran, + address newInstance, address prover, - address newAddress + bytes32 metaHash ) public pure returns (bytes32 signedHash) { - return keccak256( - abi.encode( - evidence.metaHash, - evidence.parentHash, - evidence.blockHash, - evidence.signalRoot, - evidence.graffiti, - prover, - newAddress - ) - ); + return keccak256(abi.encode(tran, newInstance, prover, metaHash)); } function _addInstance(address instance) private { diff --git a/packages/protocol/contracts/bridge/Bridge.sol b/packages/protocol/contracts/bridge/Bridge.sol index fc59744bfd..ca0d7cca4d 100644 --- a/packages/protocol/contracts/bridge/Bridge.sol +++ b/packages/protocol/contracts/bridge/Bridge.sol @@ -48,7 +48,6 @@ contract Bridge is EssentialContract, IBridge { error B_INVALID_CONTEXT(); error B_INVALID_GAS_LIMIT(); error B_INVALID_SIGNAL(); - error B_INVALID_TO(); error B_INVALID_USER(); error B_INVALID_VALUE(); error B_NON_RETRIABLE(); @@ -88,8 +87,7 @@ contract Bridge is EssentialContract, IBridge { if (message.user == address(0)) revert B_INVALID_USER(); // Check if the destination chain is enabled. - (bool destChainEnabled, address destBridge) = - isDestChainEnabled(message.destChainId); + (bool destChainEnabled,) = isDestChainEnabled(message.destChainId); // Verify destination chain and to address. if (!destChainEnabled) revert B_INVALID_CHAINID(); @@ -97,9 +95,6 @@ contract Bridge is EssentialContract, IBridge { revert B_INVALID_CHAINID(); } - if (message.to == address(0)) revert B_INVALID_TO(); - if (message.to == destBridge) revert B_INVALID_TO(); - // Ensure the sent value matches the expected amount. uint256 expectedAmount = message.value + message.fee; if (expectedAmount != msg.value) revert B_INVALID_VALUE(); @@ -154,9 +149,23 @@ contract Bridge is EssentialContract, IBridge { bool support = message.from.supportsInterface(type(IRecallableSender).interfaceId); if (support) { + _ctx = Context({ + msgHash: msgHash, + from: address(this), + srcChainId: message.srcChainId + }); + + // Perform recall IRecallableSender(message.from).onMessageRecalled{ value: message.value }(message, msgHash); + + // Reset the context after the message call + _ctx = Context({ + msgHash: MESSAGE_HASH_PLACEHOLDER, + from: SRC_CHAIN_SENDER_PLACEHOLDER, + srcChainId: CHAINID_PLACEHOLDER + }); } else { message.user.sendEther(message.value); } @@ -202,7 +211,10 @@ contract Bridge is EssentialContract, IBridge { uint256 refundAmount; // Process message differently based on the target address - if (message.to == address(this) || message.to == address(0)) { + if ( + message.to == address(0) || message.to == address(this) + || message.to == ethVault || message.to == resolve("taiko", false) + ) { // Handle special addresses that don't require actual invocation but // mark message as DONE status = Status.DONE; @@ -230,8 +242,7 @@ contract Bridge is EssentialContract, IBridge { // Refund the processing fee if (msg.sender == refundTo) { - uint256 amount = message.fee + refundAmount; - refundTo.sendEther(amount); + refundTo.sendEther(message.fee + refundAmount); } else { // If sender is another address, reward it and refund the rest msg.sender.sendEther(message.fee); @@ -376,10 +387,8 @@ contract Bridge is EssentialContract, IBridge { returns (bool success) { if (gasLimit == 0) revert B_INVALID_GAS_LIMIT(); + assert(message.from != address(this)); - // Update the context for the message call - // Should we simply provide the message itself rather than - // a context object? _ctx = Context({ msgHash: msgHash, from: message.from, diff --git a/packages/protocol/contracts/tokenvault/ERC1155Vault.sol b/packages/protocol/contracts/tokenvault/ERC1155Vault.sol index 61eca1436c..4ee2a9dc02 100644 --- a/packages/protocol/contracts/tokenvault/ERC1155Vault.sol +++ b/packages/protocol/contracts/tokenvault/ERC1155Vault.sol @@ -125,7 +125,7 @@ contract ERC1155Vault is BaseNFTVault, ERC1155ReceiverUpgradeable { { // Check context validity IBridge.Context memory ctx = - LibVaultUtils.checkValidContext("erc1155_vault", address(this)); + LibVaultUtils.checkValidContext("erc1155_vault"); address token; unchecked { @@ -177,6 +177,8 @@ contract ERC1155Vault is BaseNFTVault, ERC1155ReceiverUpgradeable { whenNotPaused onlyFromNamed("bridge") { + LibVaultUtils.checkValidContext("bridge"); + ( CanonicalNFT memory nft, , diff --git a/packages/protocol/contracts/tokenvault/ERC20Vault.sol b/packages/protocol/contracts/tokenvault/ERC20Vault.sol index 8f3a239c7b..685429ab6f 100644 --- a/packages/protocol/contracts/tokenvault/ERC20Vault.sol +++ b/packages/protocol/contracts/tokenvault/ERC20Vault.sol @@ -191,7 +191,7 @@ contract ERC20Vault is onlyFromNamed("bridge") { IBridge.Context memory ctx = - LibVaultUtils.checkValidContext("erc20_vault", address(this)); + LibVaultUtils.checkValidContext("erc20_vault"); address token; if (ctoken.chainId == block.chainid) { @@ -226,6 +226,8 @@ contract ERC20Vault is whenNotPaused onlyFromNamed("bridge") { + LibVaultUtils.checkValidContext("bridge"); + (, address token,, uint256 amount) = abi.decode( message.data[4:], (CanonicalERC20, address, address, uint256) ); diff --git a/packages/protocol/contracts/tokenvault/ERC721Vault.sol b/packages/protocol/contracts/tokenvault/ERC721Vault.sol index 0d5de271f0..15e075400d 100644 --- a/packages/protocol/contracts/tokenvault/ERC721Vault.sol +++ b/packages/protocol/contracts/tokenvault/ERC721Vault.sol @@ -108,7 +108,7 @@ contract ERC721Vault is onlyFromNamed("bridge") { IBridge.Context memory ctx = - LibVaultUtils.checkValidContext("erc721_vault", address(this)); + LibVaultUtils.checkValidContext("erc721_vault"); address token; unchecked { @@ -154,6 +154,8 @@ contract ERC721Vault is whenNotPaused onlyFromNamed("bridge") { + LibVaultUtils.checkValidContext("bridge"); + if (message.user == address(0)) revert VAULT_INVALID_USER(); if (message.srcChainId != block.chainid) { revert VAULT_INVALID_SRC_CHAIN_ID(); diff --git a/packages/protocol/contracts/tokenvault/libs/LibVaultUtils.sol b/packages/protocol/contracts/tokenvault/libs/LibVaultUtils.sol index 8d5c121352..2ec4ffeaff 100644 --- a/packages/protocol/contracts/tokenvault/libs/LibVaultUtils.sol +++ b/packages/protocol/contracts/tokenvault/libs/LibVaultUtils.sol @@ -42,19 +42,15 @@ library LibVaultUtils { } /// @dev Checks if context is valid - /// @param validSender The valid sender to be allowed - /// @param resolver The address of the resolver - function checkValidContext( - bytes32 validSender, - address resolver - ) - external + /// @param senderName The valid sender to be allowed + function checkValidContext(bytes32 senderName) + internal view returns (IBridge.Context memory ctx) { ctx = IBridge(msg.sender).context(); - address sender = AddressResolver(resolver).resolve( - ctx.srcChainId, validSender, false + address sender = AddressResolver(address(this)).resolve( + ctx.srcChainId, senderName, false ); if (ctx.from != sender) revert VAULT_INVALID_FROM(); } @@ -64,7 +60,7 @@ library LibVaultUtils { address to, address token ) - external + internal pure { if (to == address(0) || to == vault) revert VAULT_INVALID_TO(); @@ -76,7 +72,7 @@ library LibVaultUtils { uint256[] memory tokenIds, bool isERC721 ) - external + internal pure { if (tokenIds.length != amounts.length) { diff --git a/packages/protocol/docs/how_taiko_proves_blocks.md b/packages/protocol/docs/how_taiko_proves_blocks.md index ae7d5e873b..f81bd05a6f 100644 --- a/packages/protocol/docs/how_taiko_proves_blocks.md +++ b/packages/protocol/docs/how_taiko_proves_blocks.md @@ -81,7 +81,7 @@ struct BlockMetadata { uint64 l1Height; bytes32 l1Hash; bytes32 mixHash; - bytes32 txListHash; + bytes32 blobHash; uint24 txListByteStart; uint24 txListByteEnd; uint32 gasLimit; @@ -96,7 +96,7 @@ struct BlockMetadata { - `l1Height`: The actual block height in L1. - `l1Hash`: The actual block hash in L1. - `mixHash`: Salted random number to accommodate multiple L2 blocks fitting into one L1 block. -- `txListHash`: Hash of the transaction list in L2. +- `blobHash`: Hash of the transaction list in L2. - `txListByteStart`: Byte start of the transaction list in L2. - `txListByteEnd`: Byte end of the transaction list in L2. - `gasLimit`: Gas limit for the L2 block. @@ -257,7 +257,7 @@ m_timestamp(timestamp) m_h1_height(h1Height) m_h1_hash(h1Hash) m_mix_hash(mixHash) -m_txlist_hash(txListHash) +m_txlist_hash(blobHash) m_txlist_first(txListByteStart) m_txlist_last(txListByteEnd) m_treasury(treasury) diff --git a/packages/protocol/test/L1/TaikoL1.t.sol b/packages/protocol/test/L1/TaikoL1.t.sol index 35591d2b35..625a1c30b2 100644 --- a/packages/protocol/test/L1/TaikoL1.t.sol +++ b/packages/protocol/test/L1/TaikoL1.t.sol @@ -63,7 +63,7 @@ contract TaikoL1Test is TaikoL1TestBase { uint256 blockId = 1; blockId < conf.blockMaxProposals * 3; blockId++ ) { //printVariables("before propose"); - TaikoData.BlockMetadata memory meta = + (TaikoData.BlockMetadata memory meta,) = proposeBlock(Alice, Bob, 1_000_000, 1024); //printVariables("after propose"); mine(1); @@ -77,12 +77,12 @@ contract TaikoL1Test is TaikoL1TestBase { parentHash, blockHash, signalRoot, - L1.getBlock(meta.id).minTier, + meta.minTier, "" ); vm.roll(block.number + 15 * 12); - uint16 minTier = L1.getBlock(meta.id).minTier; + uint16 minTier = meta.minTier; vm.warp(block.timestamp + L1.getTier(minTier).cooldownWindow + 1); verifyBlock(Carol, 1); @@ -106,7 +106,7 @@ contract TaikoL1Test is TaikoL1TestBase { for (uint256 blockId = 1; blockId <= 20; ++blockId) { printVariables("before propose"); - TaikoData.BlockMetadata memory meta = + (TaikoData.BlockMetadata memory meta,) = proposeBlock(Alice, Bob, 1_000_000, 1024); printVariables("after propose"); @@ -120,11 +120,11 @@ contract TaikoL1Test is TaikoL1TestBase { parentHash, blockHash, signalRoot, - L1.getBlock(meta.id).minTier, + meta.minTier, "" ); vm.roll(block.number + 15 * 12); - uint16 minTier = L1.getBlock(meta.id).minTier; + uint16 minTier = meta.minTier; vm.warp(block.timestamp + L1.getTier(minTier).cooldownWindow + 1); verifyBlock(Alice, 2); @@ -148,7 +148,7 @@ contract TaikoL1Test is TaikoL1TestBase { for (uint256 blockId = 1; blockId <= conf.blockMaxProposals; blockId++) { printVariables("before propose"); - TaikoData.BlockMetadata memory meta = + (TaikoData.BlockMetadata memory meta,) = proposeBlock(Alice, Bob, 1_000_000, 1024); printVariables("after propose"); @@ -162,7 +162,7 @@ contract TaikoL1Test is TaikoL1TestBase { parentHash, blockHash, signalRoot, - L1.getBlock(meta.id).minTier, + meta.minTier, "" ); parentHash = blockHash; @@ -201,9 +201,9 @@ contract TaikoL1Test is TaikoL1TestBase { giveEthAndTko(Bob, 1e6 ether, 0); proposeBlock(Alice, Bob, 1_000_000, 1024); - TaikoData.BlockMetadata memory meta = + (, TaikoData.EthDeposit[] memory depositsProcessed) = proposeBlock(Alice, Bob, 1_000_000, 1024); - assertEq(meta.depositsProcessed.length, 0); + assertEq(depositsProcessed.length, 0); uint256 count = conf.ethDepositMaxCountPerBlock; @@ -215,18 +215,19 @@ contract TaikoL1Test is TaikoL1TestBase { printVariables("after sending ethers"); uint256 gas = gasleft(); - meta = proposeBlock(Alice, Bob, 1_000_000, 1024); + TaikoData.BlockMetadata memory meta; + (meta, depositsProcessed) = proposeBlock(Alice, Bob, 1_000_000, 1024); uint256 gasUsedWithDeposits = gas - gasleft(); console2.log("gas used with eth deposits:", gasUsedWithDeposits); printVariables("after processing send-ethers"); assertTrue( - keccak256(abi.encode(meta.depositsProcessed)) != emptyDepositsRoot + keccak256(abi.encode(depositsProcessed)) != emptyDepositsRoot ); - assertEq(meta.depositsProcessed.length, count); + assertEq(depositsProcessed.length, count); gas = gasleft(); - meta = proposeBlock(Alice, Bob, 1_000_000, 1024); + (meta,) = proposeBlock(Alice, Bob, 1_000_000, 1024); uint256 gasUsedWithoutDeposits = gas - gasleft(); console2.log("gas used without eth deposits:", gasUsedWithoutDeposits); @@ -266,7 +267,7 @@ contract TaikoL1Test is TaikoL1TestBase { // Propose blocks for (uint64 blockId = 1; blockId < count; ++blockId) { printVariables("before propose"); - meta = proposeBlock(Alice, Bob, 1_000_000, 1024); + (meta,) = proposeBlock(Alice, Bob, 1_000_000, 1024); mine(5); blockHash = bytes32(1e10 + uint256(blockId)); @@ -279,12 +280,12 @@ contract TaikoL1Test is TaikoL1TestBase { parentHashes[blockId - 1], blockHash, signalRoot, - L1.getBlock(meta.id).minTier, + meta.minTier, "" ); vm.roll(block.number + 15 * 12); - uint16 minTier = L1.getBlock(meta.id).minTier; + uint16 minTier = meta.minTier; vm.warp(block.timestamp + L1.getTier(minTier).cooldownWindow + 1); verifyBlock(Carol, 1); @@ -352,14 +353,15 @@ contract TaikoL1Test is TaikoL1TestBase { // We shall invoke proposeBlock() because this is what will call the // processDeposits() - TaikoData.BlockMetadata memory meta = + (, TaikoData.EthDeposit[] memory depositsProcessed) = proposeBlock(Alice, Bob, 1_000_000, 1024); // Expected: // 0x3b61cf81fd007398a8efd07a055ac8fb542bcfa62d76cf6dc28a889371afb21e (pre // calculated with these values) //console2.logBytes32(meta.depositsRoot); + assertEq( - keccak256(abi.encode(meta.depositsProcessed)), + keccak256(abi.encode(depositsProcessed)), 0x3b61cf81fd007398a8efd07a055ac8fb542bcfa62d76cf6dc28a889371afb21e ); } diff --git a/packages/protocol/test/L1/TaikoL1LibProvingWithTiers.t.sol b/packages/protocol/test/L1/TaikoL1LibProvingWithTiers.t.sol index 3ac5feae82..b468128ed0 100644 --- a/packages/protocol/test/L1/TaikoL1LibProvingWithTiers.t.sol +++ b/packages/protocol/test/L1/TaikoL1LibProvingWithTiers.t.sol @@ -96,7 +96,7 @@ contract TaikoL1LibProvingWithTiers is TaikoL1TestBase { uint256 blockId = 1; blockId < conf.blockMaxProposals * 3; blockId++ ) { printVariables("before propose"); - TaikoData.BlockMetadata memory meta = + (TaikoData.BlockMetadata memory meta,) = proposeBlock(Alice, Bob, 1_000_000, 1024); //printVariables("after propose"); mine(1); @@ -112,7 +112,7 @@ contract TaikoL1LibProvingWithTiers is TaikoL1TestBase { parentHash, blockHash, signalRoot, - L1.getBlock(meta.id).minTier, + meta.minTier, "" ); @@ -124,13 +124,13 @@ contract TaikoL1LibProvingWithTiers is TaikoL1TestBase { parentHash, blockHash, signalRoot, - L1.getBlock(meta.id).minTier, + meta.minTier, TaikoErrors.L1_ALREADY_PROVED.selector ); vm.roll(block.number + 15 * 12); - uint16 minTier = L1.getBlock(meta.id).minTier; + uint16 minTier = meta.minTier; vm.warp(block.timestamp + L1.getTier(minTier).cooldownWindow + 1); verifyBlock(Carol, 1); @@ -158,7 +158,7 @@ contract TaikoL1LibProvingWithTiers is TaikoL1TestBase { uint256 blockId = 1; blockId < conf.blockMaxProposals * 3; blockId++ ) { printVariables("before propose"); - TaikoData.BlockMetadata memory meta = + (TaikoData.BlockMetadata memory meta,) = proposeBlock(Alice, Bob, 1_000_000, 1024); //printVariables("after propose"); mine(1); @@ -167,7 +167,7 @@ contract TaikoL1LibProvingWithTiers is TaikoL1TestBase { bytes32 signalRoot = bytes32(1e9 + blockId); // This proof cannot be verified obviously because of // signalRoot instead of blockHash - uint16 minTier = L1.getBlock(meta.id).minTier; + uint16 minTier = meta.minTier; proveBlock( Bob, Bob, meta, parentHash, signalRoot, signalRoot, minTier, "" @@ -201,6 +201,7 @@ contract TaikoL1LibProvingWithTiers is TaikoL1TestBase { + L1.getTier(LibTiers.TIER_GUARDIAN).cooldownWindow + 1 ); // Now can verify + console2.log("Probalom verify-olni"); verifyBlock(Carol, 1); parentHash = blockHash; @@ -226,7 +227,7 @@ contract TaikoL1LibProvingWithTiers is TaikoL1TestBase { uint256 blockId = 1; blockId < conf.blockMaxProposals * 3; blockId++ ) { printVariables("before propose"); - TaikoData.BlockMetadata memory meta = + (TaikoData.BlockMetadata memory meta,) = proposeBlock(Alice, Bob, 1_000_000, 1024); //printVariables("after propose"); mine(1); @@ -235,7 +236,7 @@ contract TaikoL1LibProvingWithTiers is TaikoL1TestBase { bytes32 signalRoot = bytes32(1e9 + blockId); // This proof cannot be verified obviously because of // signalRoot instead of blockHash - uint16 minTier = L1.getBlock(meta.id).minTier; + uint16 minTier = meta.minTier; proveBlock( Bob, Bob, meta, parentHash, signalRoot, signalRoot, minTier, "" ); @@ -294,7 +295,7 @@ contract TaikoL1LibProvingWithTiers is TaikoL1TestBase { uint256 blockId = 1; blockId < conf.blockMaxProposals * 3; blockId++ ) { printVariables("before propose"); - TaikoData.BlockMetadata memory meta = + (TaikoData.BlockMetadata memory meta,) = proposeBlock(Alice, Bob, 1_000_000, 1024); //printVariables("after propose"); mine(1); @@ -303,7 +304,7 @@ contract TaikoL1LibProvingWithTiers is TaikoL1TestBase { bytes32 signalRoot = bytes32(1e9 + blockId); // This proof cannot be verified obviously because of // signalRoot instead of blockHash - uint16 minTier = L1.getBlock(meta.id).minTier; + uint16 minTier = meta.minTier; proveBlock( Bob, Bob, meta, parentHash, blockHash, signalRoot, minTier, "" @@ -372,7 +373,7 @@ contract TaikoL1LibProvingWithTiers is TaikoL1TestBase { bytes32 parentHash = GENESIS_BLOCK_HASH; for (uint256 blockId = 1; blockId < 10; blockId++) { printVariables("before propose"); - TaikoData.BlockMetadata memory meta = + (TaikoData.BlockMetadata memory meta,) = proposeBlock(Alice, Bob, 1_000_000, 1024); //printVariables("after propose"); mine(1); @@ -381,7 +382,7 @@ contract TaikoL1LibProvingWithTiers is TaikoL1TestBase { bytes32 signalRoot = bytes32(1e9 + blockId); // This proof cannot be verified obviously because of // signalRoot instead of blockHash - uint16 minTier = L1.getBlock(meta.id).minTier; + uint16 minTier = meta.minTier; proveBlock( Bob, Bob, meta, parentHash, signalRoot, signalRoot, minTier, "" ); @@ -417,7 +418,7 @@ contract TaikoL1LibProvingWithTiers is TaikoL1TestBase { 0, signalRoot, LibTiers.TIER_SGX_AND_PSE_ZKEVM, - TaikoErrors.L1_INVALID_EVIDENCE.selector + TaikoErrors.L1_INVALID_TRANSITION.selector ); } @@ -452,7 +453,7 @@ contract TaikoL1LibProvingWithTiers is TaikoL1TestBase { for (uint256 blockId = 1; blockId < 10; blockId++) { //printVariables("before propose"); - TaikoData.BlockMetadata memory meta = + (TaikoData.BlockMetadata memory meta,) = proposeBlock(Alice, Bob, 1_000_000, 1024); //printVariables("after propose"); mine(1); @@ -466,12 +467,12 @@ contract TaikoL1LibProvingWithTiers is TaikoL1TestBase { parentHash, blockHash, signalRoot, - L1.getBlock(meta.id).minTier, + meta.minTier, TaikoErrors.L1_NOT_ASSIGNED_PROVER.selector ); vm.roll(block.number + 15 * 12); - uint16 minTier = L1.getBlock(meta.id).minTier; + uint16 minTier = meta.minTier; vm.warp(block.timestamp + L1.getTier(minTier).cooldownWindow + 1); verifyBlock(Carol, 1); @@ -496,7 +497,7 @@ contract TaikoL1LibProvingWithTiers is TaikoL1TestBase { for (uint256 blockId = 1; blockId < 10; blockId++) { //printVariables("before propose"); - TaikoData.BlockMetadata memory meta = + (TaikoData.BlockMetadata memory meta,) = proposeBlock(Alice, Bob, 1_000_000, 1024); //printVariables("after propose"); mine(1); @@ -506,7 +507,7 @@ contract TaikoL1LibProvingWithTiers is TaikoL1TestBase { vm.roll(block.number + 15 * 12); - uint16 minTier = L1.getBlock(meta.id).minTier; + uint16 minTier = meta.minTier; vm.warp(block.timestamp + L1.getTier(minTier).cooldownWindow + 1); proveBlock( @@ -516,7 +517,7 @@ contract TaikoL1LibProvingWithTiers is TaikoL1TestBase { parentHash, blockHash, signalRoot, - L1.getBlock(meta.id).minTier, + meta.minTier, TaikoErrors.L1_ASSIGNED_PROVER_NOT_ALLOWED.selector ); @@ -544,7 +545,7 @@ contract TaikoL1LibProvingWithTiers is TaikoL1TestBase { uint256 blockId = 1; blockId < conf.blockMaxProposals * 3; blockId++ ) { printVariables("before propose"); - TaikoData.BlockMetadata memory meta = + (TaikoData.BlockMetadata memory meta,) = proposeBlock(Alice, Bob, 1_000_000, 1024); //printVariables("after propose"); mine(1); @@ -560,7 +561,7 @@ contract TaikoL1LibProvingWithTiers is TaikoL1TestBase { parentHash, blockHash, signalRoot, - L1.getBlock(meta.id).minTier, + meta.minTier, "" ); @@ -578,7 +579,7 @@ contract TaikoL1LibProvingWithTiers is TaikoL1TestBase { vm.roll(block.number + 15 * 12); - uint16 minTier = L1.getBlock(meta.id).minTier; + uint16 minTier = meta.minTier; vm.warp(block.timestamp + L1.getTier(minTier).cooldownWindow + 1); verifyBlock(Carol, 1); @@ -606,7 +607,7 @@ contract TaikoL1LibProvingWithTiers is TaikoL1TestBase { uint256 blockId = 1; blockId < conf.blockMaxProposals * 3; blockId++ ) { printVariables("before propose"); - TaikoData.BlockMetadata memory meta = + (TaikoData.BlockMetadata memory meta,) = proposeBlock(Alice, Bob, 1_000_000, 1024); //printVariables("after propose"); mine(1); @@ -622,7 +623,7 @@ contract TaikoL1LibProvingWithTiers is TaikoL1TestBase { parentHash, blockHash, signalRoot, - L1.getBlock(meta.id).minTier, + meta.minTier, "" ); @@ -635,12 +636,12 @@ contract TaikoL1LibProvingWithTiers is TaikoL1TestBase { 0, signalRoot, LibTiers.TIER_GUARDIAN, - TaikoErrors.L1_INVALID_EVIDENCE.selector + TaikoErrors.L1_INVALID_TRANSITION.selector ); vm.roll(block.number + 15 * 12); - uint16 minTier = L1.getBlock(meta.id).minTier; + uint16 minTier = meta.minTier; vm.warp(block.timestamp + L1.getTier(minTier).cooldownWindow + 1); verifyBlock(Carol, 1); @@ -668,7 +669,7 @@ contract TaikoL1LibProvingWithTiers is TaikoL1TestBase { uint256 blockId = 1; blockId < conf.blockMaxProposals * 3; blockId++ ) { printVariables("before propose"); - TaikoData.BlockMetadata memory meta = + (TaikoData.BlockMetadata memory meta,) = proposeBlock(Alice, Bob, 1_000_000, 1024); //printVariables("after propose"); mine(1); @@ -684,7 +685,7 @@ contract TaikoL1LibProvingWithTiers is TaikoL1TestBase { parentHash, signalRoot, signalRoot, - L1.getBlock(meta.id).minTier, + meta.minTier, "" ); @@ -702,7 +703,7 @@ contract TaikoL1LibProvingWithTiers is TaikoL1TestBase { vm.roll(block.number + 15 * 12); - uint16 minTier = L1.getBlock(meta.id).minTier; + uint16 minTier = meta.minTier; vm.warp(block.timestamp + L1.getTier(minTier).cooldownWindow + 1); verifyBlock(Carol, 1); @@ -730,7 +731,7 @@ contract TaikoL1LibProvingWithTiers is TaikoL1TestBase { bytes32 parentHash = GENESIS_BLOCK_HASH; for (uint256 blockId = 1; blockId < 10; blockId++) { printVariables("before propose"); - TaikoData.BlockMetadata memory meta = + (TaikoData.BlockMetadata memory meta,) = proposeBlock(Alice, Bob, 1_000_000, 1024); //printVariables("after propose"); mine(1); @@ -746,7 +747,7 @@ contract TaikoL1LibProvingWithTiers is TaikoL1TestBase { parentHash, signalRoot, signalRoot, - L1.getBlock(meta.id).minTier, + meta.minTier, "" ); @@ -764,7 +765,7 @@ contract TaikoL1LibProvingWithTiers is TaikoL1TestBase { vm.roll(block.number + 15 * 12); - uint16 minTier = L1.getBlock(meta.id).minTier; + uint16 minTier = meta.minTier; vm.warp(block.timestamp + L1.getTier(minTier).cooldownWindow + 1); verifyBlock(Carol, 1); @@ -792,7 +793,7 @@ contract TaikoL1LibProvingWithTiers is TaikoL1TestBase { bytes32 parentHash = GENESIS_BLOCK_HASH; for (uint256 blockId = 1; blockId < 10; blockId++) { printVariables("before propose"); - TaikoData.BlockMetadata memory meta = + (TaikoData.BlockMetadata memory meta,) = proposeBlock(Alice, Bob, 1_000_000, 1024); //printVariables("after propose"); mine(1); @@ -835,7 +836,7 @@ contract TaikoL1LibProvingWithTiers is TaikoL1TestBase { bytes32 parentHash = GENESIS_BLOCK_HASH; for (uint256 blockId = 1; blockId < 10; blockId++) { printVariables("before propose"); - TaikoData.BlockMetadata memory meta = + (TaikoData.BlockMetadata memory meta,) = proposeBlock(Alice, Bob, 1_000_000, 1024); //printVariables("after propose"); mine(1); @@ -879,7 +880,7 @@ contract TaikoL1LibProvingWithTiers is TaikoL1TestBase { uint256 blockId = 1; blockId < conf.blockMaxProposals * 3; blockId++ ) { printVariables("before propose"); - TaikoData.BlockMetadata memory meta = + (TaikoData.BlockMetadata memory meta,) = proposeBlock(Alice, Bob, 1_000_000, 1024); //printVariables("after propose"); mine(1); @@ -895,7 +896,7 @@ contract TaikoL1LibProvingWithTiers is TaikoL1TestBase { parentHash, signalRoot, signalRoot, - L1.getBlock(meta.id).minTier, + meta.minTier, "" ); @@ -925,7 +926,7 @@ contract TaikoL1LibProvingWithTiers is TaikoL1TestBase { vm.roll(block.number + 15 * 12); - uint16 minTier = L1.getBlock(meta.id).minTier; + uint16 minTier = meta.minTier; vm.warp(block.timestamp + L1.getTier(minTier).cooldownWindow + 1); verifyBlock(Carol, 1); @@ -953,7 +954,7 @@ contract TaikoL1LibProvingWithTiers is TaikoL1TestBase { uint256 blockId = 1; blockId < conf.blockMaxProposals * 3; blockId++ ) { printVariables("before propose"); - TaikoData.BlockMetadata memory meta = + (TaikoData.BlockMetadata memory meta,) = proposeBlock(Alice, Bob, 1_000_000, 1024); //printVariables("after propose"); mine(1); @@ -969,31 +970,29 @@ contract TaikoL1LibProvingWithTiers is TaikoL1TestBase { parentHash, signalRoot, signalRoot, - L1.getBlock(meta.id).minTier, + meta.minTier, "" ); // Let's say the 10th block is unprovable so prove accordingly if (blockId == 10) { - TaikoData.BlockEvidence memory evidence = TaikoData - .BlockEvidence({ - metaHash: LibProposing.hashMetadata(meta), + TaikoData.Transition memory tran = TaikoData.Transition({ parentHash: parentHash, blockHash: blockHash, signalRoot: signalRoot, - graffiti: 0x0, - tier: LibTiers.TIER_GUARDIAN, - proof: new bytes(102) + graffiti: 0x0 }); - evidence.proof = bytes.concat(keccak256("RETURN_LIVENESS_BOND")); + TaikoData.TierProof memory proof; + proof.tier = LibTiers.TIER_GUARDIAN; + proof.data = bytes.concat(keccak256("RETURN_LIVENESS_BOND")); vm.prank(David, David); - gp.approveEvidence(meta.id, evidence); + gp.approve(meta, tran, proof); vm.prank(Emma, Emma); - gp.approveEvidence(meta.id, evidence); + gp.approve(meta, tran, proof); vm.prank(Frank, Frank); - gp.approveEvidence(meta.id, evidence); + gp.approve(meta, tran, proof); // // Credited back the bond (not transferred to the user // wallet, @@ -1014,7 +1013,7 @@ contract TaikoL1LibProvingWithTiers is TaikoL1TestBase { } vm.roll(block.number + 15 * 12); - uint16 minTier = L1.getBlock(meta.id).minTier; + uint16 minTier = meta.minTier; vm.warp(block.timestamp + L1.getTier(minTier).cooldownWindow + 1); verifyBlock(Carol, 1); diff --git a/packages/protocol/test/L1/TaikoL1TestBase.sol b/packages/protocol/test/L1/TaikoL1TestBase.sol index 7b435d2f63..b6c74f6a6b 100644 --- a/packages/protocol/test/L1/TaikoL1TestBase.sol +++ b/packages/protocol/test/L1/TaikoL1TestBase.sol @@ -118,7 +118,10 @@ abstract contract TaikoL1TestBase is TestBase { uint24 txListSize ) internal - returns (TaikoData.BlockMetadata memory meta) + returns ( + TaikoData.BlockMetadata memory meta, + TaikoData.EthDeposit[] memory depositsProcessed + ) { TaikoData.TierFee[] memory tierFees = new TaikoData.TierFee[](5); // Register the tier fees @@ -151,7 +154,7 @@ abstract contract TaikoL1TestBase is TestBase { bytes memory txList = new bytes(txListSize); assignment.signature = - grantWithSignature(prover, assignment, keccak256(txList)); + _signAssignment(prover, assignment, keccak256(txList)); TaikoData.StateVariables memory variables = L1.getStateVariables(); @@ -164,12 +167,11 @@ abstract contract TaikoL1TestBase is TestBase { meta.l1Height = uint64(block.number - 1); meta.l1Hash = blockhash(block.number - 1); meta.difficulty = bytes32(_difficulty); - meta.txListHash = keccak256(txList); meta.gasLimit = gasLimit; vm.prank(proposer, proposer); - meta = L1.proposeBlock{ value: msgValue }( - meta.txListHash, bytes32(0), abi.encode(assignment), txList + (meta, depositsProcessed) = L1.proposeBlock{ value: msgValue }( + abi.encode(TaikoData.BlockParams(assignment, bytes32(0))), txList ); } @@ -185,83 +187,90 @@ abstract contract TaikoL1TestBase is TestBase { ) internal { - TaikoData.BlockEvidence memory evidence = TaikoData.BlockEvidence({ - metaHash: LibProposing.hashMetadata(meta), + TaikoData.Transition memory tran = TaikoData.Transition({ parentHash: parentHash, blockHash: blockHash, signalRoot: signalRoot, - graffiti: 0x0, - tier: tier, - proof: new bytes(102) + graffiti: 0x0 }); - bytes32 instance = pv.calcInstance(prover, evidence); - uint16 verifierId = 300; // 300 as see mock verifier in line 95 - - evidence.proof = bytes.concat( - bytes2(verifierId), - bytes16(0), - bytes16(instance), - bytes16(0), - bytes16(uint128(uint256(instance))), - new bytes(100) + bytes32 instance = pv.calcInstance( + tran, prover, keccak256(abi.encode(meta)), meta.blobHash, 0 ); - address newPubKey; + TaikoData.TierProof memory proof; + proof.tier = tier; + { + PseZkVerifier.ZkEvmProof memory zkProof; + zkProof.verifierId = 300; + zkProof.zkp = bytes.concat( + bytes16(0), + bytes16(instance), + bytes16(0), + bytes16(uint128(uint256(instance))), + new bytes(100) + ); + + proof.data = abi.encode(zkProof); + } + + address newInstance; // Keep changing the pub key associated with an instance to avoid // attacks, // obviously just a mock due to 2 addresses changing all the time. - (newPubKey,) = sv.instances(0); - if (newPubKey == SGX_X_0) { - newPubKey = SGX_X_1; + (newInstance,) = sv.instances(0); + if (newInstance == SGX_X_0) { + newInstance = SGX_X_1; } else { - newPubKey = SGX_X_0; + newInstance = SGX_X_0; } if (tier == LibTiers.TIER_SGX) { - bytes memory signature = - createSgxSignatureProof(evidence, newPubKey, prover); + bytes memory signature = createSgxSignatureProof( + tran, newInstance, prover, keccak256(abi.encode(meta)) + ); - evidence.proof = - bytes.concat(bytes4(0), bytes20(newPubKey), signature); + proof.data = + bytes.concat(bytes4(0), bytes20(newInstance), signature); } if (tier == LibTiers.TIER_SGX_AND_PSE_ZKEVM) { - bytes memory signature = - createSgxSignatureProof(evidence, newPubKey, prover); + bytes memory signature = createSgxSignatureProof( + tran, newInstance, prover, keccak256(abi.encode(meta)) + ); bytes memory sgxProof = - bytes.concat(bytes4(0), bytes20(newPubKey), signature); + bytes.concat(bytes4(0), bytes20(newInstance), signature); // Concatenate SGX and ZK (in this order) - evidence.proof = bytes.concat(sgxProof, evidence.proof); + proof.data = bytes.concat(sgxProof, proof.data); } if (tier == LibTiers.TIER_GUARDIAN) { - evidence.proof = ""; + proof.data = ""; // Grant 2 signatures, 3rd might be a revert vm.prank(David, David); - gp.approveEvidence(meta.id, evidence); + gp.approve(meta, tran, proof); vm.prank(Emma, Emma); - gp.approveEvidence(meta.id, evidence); + gp.approve(meta, tran, proof); if (revertReason != "") { vm.prank(Frank, Frank); vm.expectRevert(); // Revert reason is 'wrapped' so will not be // identical to the expectedRevert - gp.approveEvidence(meta.id, evidence); + gp.approve(meta, tran, proof); } else { vm.prank(Frank, Frank); - gp.approveEvidence(meta.id, evidence); + gp.approve(meta, tran, proof); } } else { if (revertReason != "") { vm.prank(msgSender, msgSender); vm.expectRevert(revertReason); - L1.proveBlock(meta.id, abi.encode(evidence)); + L1.proveBlock(meta.id, abi.encode(meta, tran, proof)); } else { vm.prank(msgSender, msgSender); - L1.proveBlock(meta.id, abi.encode(evidence)); + L1.proveBlock(meta.id, abi.encode(meta, tran, proof)); } } } @@ -292,17 +301,16 @@ abstract contract TaikoL1TestBase is TestBase { ); } - function grantWithSignature( + function _signAssignment( address signer, TaikoData.ProverAssignment memory assignment, - bytes32 txListHash + bytes32 blobHash ) internal view returns (bytes memory signature) { - bytes32 digest = - LibProposing.hashAssignmentForTxList(assignment, txListHash); + bytes32 digest = LibProposing.hashAssignment(assignment, blobHash); uint256 signerPrivateKey; // In the test suite these are the 3 which acts as provers @@ -319,32 +327,23 @@ abstract contract TaikoL1TestBase is TestBase { } function createSgxSignatureProof( - TaikoData.BlockEvidence memory evidence, - address newPubKey, - address prover + TaikoData.Transition memory tran, + address newInstance, + address prover, + bytes32 metaHash ) internal view returns (bytes memory signature) { - bytes32 digest = keccak256( - abi.encode( - evidence.metaHash, - evidence.parentHash, - evidence.blockHash, - evidence.signalRoot, - evidence.graffiti, - prover, - newPubKey - ) - ); + bytes32 digest = sv.getSignedHash(tran, newInstance, prover, metaHash); uint256 signerPrivateKey; // In the test suite these are the 3 which acts as provers - if (SGX_X_0 == newPubKey) { + if (SGX_X_0 == newInstance) { signerPrivateKey = 0x5; - } else if (SGX_X_1 == newPubKey) { + } else if (SGX_X_1 == newInstance) { signerPrivateKey = 0x4; } diff --git a/packages/protocol/test/bridge/Bridge.t.sol b/packages/protocol/test/bridge/Bridge.t.sol index b28d39409d..3cc7ec7f9c 100644 --- a/packages/protocol/test/bridge/Bridge.t.sol +++ b/packages/protocol/test/bridge/Bridge.t.sol @@ -91,6 +91,8 @@ contract BridgeTest is TestBase { destChainId, "ether_vault", address(etherVault) ); + addressManager.setAddress(destChainId, "taiko", address(uint160(123))); + addressManager.setAddress(block.chainid, "bridge", address(bridge)); vm.stopPrank(); @@ -280,41 +282,6 @@ contract BridgeTest is TestBase { bridge.sendMessage{ value: amount }(message); } - function test_Bridge_send_message_ether_reverts_when_to_is_destination_bridge_address( - ) - public - { - uint256 amount = 1 wei; - IBridge.Message memory message = newMessage({ - user: Alice, - to: address(destChainBridge), - value: 0, - gasLimit: 0, - fee: 0, - destChain: destChainId - }); - - vm.expectRevert(Bridge.B_INVALID_TO.selector); - bridge.sendMessage{ value: amount }(message); - } - - function test_Bridge_send_message_ether_reverts_when_to_is_zero_address() - public - { - uint256 amount = 1 wei; - IBridge.Message memory message = newMessage({ - user: Alice, - to: address(0), - value: 0, - gasLimit: 0, - fee: 0, - destChain: destChainId - }); - - vm.expectRevert(Bridge.B_INVALID_TO.selector); - bridge.sendMessage{ value: amount }(message); - } - function test_Bridge_send_message_ether_with_no_processing_fee() public { uint256 amount = 0 wei; IBridge.Message memory message = newMessage({ diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index c0a8c5a767..e937662a6a 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -1,5 +1,9 @@ lockfileVersion: '6.0' +settings: + autoInstallPeers: true + excludeLinksFromLockfile: false + importers: .: @@ -93,13 +97,13 @@ importers: version: 5.16.0(eslint@7.32.0)(typescript@4.6.4) '@wagmi/cli': specifier: ^1.0.1 - version: 1.0.1(@wagmi/core@1.4.5)(typescript@5.2.2)(wagmi@1.4.5) + version: 1.0.1(typescript@4.6.4)(wagmi@0.12.16) '@zerodevx/svelte-toast': specifier: ^0.6.3 version: 0.6.3 abitype: specifier: ^0.8.2 - version: 0.8.7(typescript@5.2.2)(zod@3.22.4) + version: 0.8.7(typescript@4.6.4)(zod@3.22.4) autoprefixer: specifier: ^10.4.13 version: 10.4.16(postcss@8.4.31) @@ -2804,7 +2808,6 @@ packages: transitivePeerDependencies: - bufferutil - utf-8-validate - dev: false /@ethersproject/providers@5.7.2: resolution: {integrity: sha512-g34EWZ1WWAVgr4aptGlVBF8mhl3VWjv+8hoAnzStu8Ah22VHBsuGzP17eb6xDVRzw895G4W7vvx60lFFur/1Rg==} @@ -3333,14 +3336,12 @@ packages: - bufferutil - debug - utf-8-validate - dev: false /@json-rpc-tools/types@1.7.6: resolution: {integrity: sha512-nDSqmyRNEqEK9TZHtM15uNnDljczhCUdBmRhpNZ95bIPKEDQ+nTDmGMFd2lLin3upc5h2VVVd9tkTDdbXUhDIQ==} deprecated: Package no longer supported. Contact Support at https://www.npmjs.com/support for more info. dependencies: keyvaluestorage-interface: 1.0.0 - dev: false /@json-rpc-tools/utils@1.7.6: resolution: {integrity: sha512-HjA8x/U/Q78HRRe19yh8HVKoZ+Iaoo3YZjakJYxR+rw52NHo6jM+VE9b8+7ygkCFXl/EHID5wh/MkXaE/jGyYw==} @@ -3348,7 +3349,6 @@ packages: dependencies: '@json-rpc-tools/types': 1.7.6 '@pedrouid/environment': 1.0.1 - dev: false /@ledgerhq/connect-kit-loader@1.1.2: resolution: {integrity: sha512-mscwGroSJQrCTjtNGBu+18FQbZYA4+q6Tyx6K7CXHl6AwgZKbWfZYdgP2F+fyZcRUdGRsMX8QtvU61VcGGtO1A==} @@ -4355,7 +4355,6 @@ packages: /@pedrouid/environment@1.0.1: resolution: {integrity: sha512-HaW78NszGzRZd9SeoI3JD11JqY+lubnaOx7Pewj5pfjqWXOEATpeKIFb9Z4t2WBUK2iryiXX3lzWwmYWgUL0Ug==} - dev: false /@pkgjs/parseargs@0.11.0: resolution: {integrity: sha512-+1VkjdD0QBLPodGrJUeqarH8VAIvQODIbwh9XpP5Syisf7YoQgsJKPNFoqqLQlu+VQ/tVSshMR6loPMn8U+dPg==} @@ -4473,7 +4472,6 @@ packages: transitivePeerDependencies: - bufferutil - utf-8-validate - dev: false /@safe-global/safe-apps-provider@0.17.1(typescript@5.2.2): resolution: {integrity: sha512-lYfRqrbbK1aKU1/UGkYWc/X7PgySYcumXKc5FB2uuwAs2Ghj8uETuW5BrwPqyjBknRxutFbTv+gth/JzjxAhdQ==} @@ -4494,7 +4492,6 @@ packages: transitivePeerDependencies: - bufferutil - utf-8-validate - dev: false /@safe-global/safe-apps-sdk@7.9.0: resolution: {integrity: sha512-S2EI+JL8ocSgE3uGNaDZCzKmwfhtxXZFDUP76vN0FeaY35itFMyi8F0Vhxu0XnZm3yLzJE3tp5px6GhuQFLU6w==} @@ -4504,7 +4501,6 @@ packages: transitivePeerDependencies: - bufferutil - utf-8-validate - dev: false /@safe-global/safe-apps-sdk@8.0.0(typescript@5.2.2): resolution: {integrity: sha512-gYw0ki/EAuV1oSyMxpqandHjnthZjYYy+YWpTAzf8BqfXM3ItcZLpjxfg+3+mXW8HIO+3jw6T9iiqEXsqHaMMw==} @@ -6227,6 +6223,7 @@ packages: /@vue/compiler-core@3.3.7: resolution: {integrity: sha512-pACdY6YnTNVLXsB86YD8OF9ihwpolzhhtdLVHhBL6do/ykr6kKXNYABRtNMGrsQXpEXXyAdwvWWkuTbs4MFtPQ==} + requiresBuild: true dependencies: '@babel/parser': 7.23.0 '@vue/shared': 3.3.7 @@ -6237,6 +6234,7 @@ packages: /@vue/compiler-dom@3.3.7: resolution: {integrity: sha512-0LwkyJjnUPssXv/d1vNJ0PKfBlDoQs7n81CbO6Q0zdL7H1EzqYRrTVXDqdBVqro0aJjo/FOa1qBAPVI4PGSHBw==} + requiresBuild: true dependencies: '@vue/compiler-core': 3.3.7 '@vue/shared': 3.3.7 @@ -6253,6 +6251,7 @@ packages: /@vue/compiler-sfc@3.3.7: resolution: {integrity: sha512-7pfldWy/J75U/ZyYIXRVqvLRw3vmfxDo2YLMwVtWVNew8Sm8d6wodM+OYFq4ll/UxfqVr0XKiVwti32PCrruAw==} + requiresBuild: true dependencies: '@babel/parser': 7.23.0 '@vue/compiler-core': 3.3.7 @@ -6269,6 +6268,7 @@ packages: /@vue/compiler-ssr@3.3.7: resolution: {integrity: sha512-TxOfNVVeH3zgBc82kcUv+emNHo+vKnlRrkv8YvQU5+Y5LJGJwSNzcmLUoxD/dNzv0bhQ/F0s+InlgV0NrApJZg==} + requiresBuild: true dependencies: '@vue/compiler-dom': 3.3.7 '@vue/shared': 3.3.7 @@ -6346,6 +6346,7 @@ packages: /@vue/reactivity-transform@3.3.7: resolution: {integrity: sha512-APhRmLVbgE1VPGtoLQoWBJEaQk4V8JUsqrQihImVqKT+8U6Qi3t5ATcg4Y9wGAPb3kIhetpufyZ1RhwbZCIdDA==} + requiresBuild: true dependencies: '@babel/parser': 7.23.0 '@vue/compiler-core': 3.3.7 @@ -6357,6 +6358,7 @@ packages: /@vue/reactivity@3.3.7: resolution: {integrity: sha512-cZNVjWiw00708WqT0zRpyAgduG79dScKEPYJXq2xj/aMtk3SKvL3FBt2QKUlh6EHBJ1m8RhBY+ikBUzwc7/khg==} + requiresBuild: true dependencies: '@vue/shared': 3.3.7 dev: false @@ -6364,6 +6366,7 @@ packages: /@vue/runtime-core@3.3.7: resolution: {integrity: sha512-LHq9du3ubLZFdK/BP0Ysy3zhHqRfBn80Uc+T5Hz3maFJBGhci1MafccnL3rpd5/3wVfRHAe6c+PnlO2PAavPTQ==} + requiresBuild: true dependencies: '@vue/reactivity': 3.3.7 '@vue/shared': 3.3.7 @@ -6372,6 +6375,7 @@ packages: /@vue/runtime-dom@3.3.7: resolution: {integrity: sha512-PFQU1oeJxikdDmrfoNQay5nD4tcPNYixUBruZzVX/l0eyZvFKElZUjW4KctCcs52nnpMGO6UDK+jF5oV4GT5Lw==} + requiresBuild: true dependencies: '@vue/runtime-core': 3.3.7 '@vue/shared': 3.3.7 @@ -6381,6 +6385,7 @@ packages: /@vue/server-renderer@3.3.7(vue@3.3.7): resolution: {integrity: sha512-UlpKDInd1hIZiNuVVVvLgxpfnSouxKQOSE2bOfQpBuGwxRV/JqqTCyyjXUWiwtVMyeRaZhOYYqntxElk8FhBhw==} + requiresBuild: true peerDependencies: vue: 3.3.7 dependencies: @@ -6392,6 +6397,7 @@ packages: /@vue/shared@3.3.7: resolution: {integrity: sha512-N/tbkINRUDExgcPTBvxNkvHGu504k8lzlNQRITVnm6YjOjwa4r0nnbd4Jb01sNpur5hAllyRJzSK5PvB9PPwRg==} + requiresBuild: true dev: false optional: true @@ -6408,7 +6414,6 @@ packages: optional: true dependencies: typescript: 4.6.4 - dev: false /@wagmi/chains@0.2.22(typescript@5.2.2): resolution: {integrity: sha512-TdiOzJT6TO1JrztRNjTA5Quz+UmQlbvWFG8N41u9tta0boHA1JCAzGGvU6KuIcOmJfRJkKOUIt67wlbopCpVHg==} @@ -6421,6 +6426,17 @@ packages: typescript: 5.2.2 dev: true + /@wagmi/chains@1.0.0(typescript@4.6.4): + resolution: {integrity: sha512-eNbqRWyHbivcMNq5tbXJks4NaOzVLHnNQauHPeE/EDT9AlpqzcrMc+v2T1/2Iw8zN4zgqB86NCsxeJHJs7+xng==} + peerDependencies: + typescript: '>=5.0.4' + peerDependenciesMeta: + typescript: + optional: true + dependencies: + typescript: 4.6.4 + dev: true + /@wagmi/chains@1.0.0(typescript@5.2.2): resolution: {integrity: sha512-eNbqRWyHbivcMNq5tbXJks4NaOzVLHnNQauHPeE/EDT9AlpqzcrMc+v2T1/2Iw8zN4zgqB86NCsxeJHJs7+xng==} peerDependencies: @@ -6479,6 +6495,52 @@ packages: - utf-8-validate dev: true + /@wagmi/cli@1.0.1(typescript@4.6.4)(wagmi@0.12.16): + resolution: {integrity: sha512-SZwT7RglyVDipDTPL/dEKfrAJ3GdSKfdhaF6CFoseIgSiOLkj3xbakvAqdjYSkYnnpjrqLXc3WKZCnszQryctA==} + engines: {node: '>=14'} + hasBin: true + peerDependencies: + '@wagmi/core': '>=1.0.0-next.0' + typescript: '>=4.9.4' + wagmi: '>=1.0.0-next.0' + peerDependenciesMeta: + '@wagmi/core': + optional: true + typescript: + optional: true + wagmi: + optional: true + dependencies: + '@wagmi/chains': 0.2.22(typescript@4.6.4) + abitype: 0.8.1(typescript@4.6.4)(zod@3.22.4) + abort-controller: 3.0.0 + bundle-require: 3.1.2(esbuild@0.15.13) + cac: 6.7.14 + change-case: 4.1.2 + chokidar: 3.5.3 + dedent: 0.7.0 + detect-package-manager: 2.0.1 + dotenv: 16.3.1 + dotenv-expand: 10.0.0 + esbuild: 0.15.13 + execa: 6.1.0 + find-up: 6.3.0 + fs-extra: 10.1.0 + globby: 13.2.2 + node-fetch: 3.3.2 + ora: 6.3.1 + pathe: 1.1.1 + picocolors: 1.0.0 + prettier: 2.8.8 + typescript: 4.6.4 + viem: 0.3.50(typescript@4.6.4)(zod@3.22.4) + wagmi: 0.12.16(debug@4.3.4)(ethers@5.7.1)(react@18.2.0)(typescript@4.6.4) + zod: 3.22.4 + transitivePeerDependencies: + - bufferutil + - utf-8-validate + dev: true + /@wagmi/connectors@0.1.1(@babel/core@7.23.2)(@wagmi/core@0.8.0)(ethers@5.7.1)(typescript@4.6.4): resolution: {integrity: sha512-W9w73o9HCYzuBsDHuujwBT/nGGIu5qLBSqVqslXf/S1Q9OiWoudmuIs3opuYqxgw5MpWbMqhq6QaxA7Qcd6NrA==} peerDependencies: @@ -6540,7 +6602,6 @@ packages: - supports-color - utf-8-validate - zod - dev: false /@wagmi/connectors@3.1.3(lokijs@1.5.12)(react@18.2.0)(typescript@5.2.2)(viem@1.16.6): resolution: {integrity: sha512-UgwsQKQDFObJVJMf9pDfFoXTv710o4zrTHyhIWKBTMMkLpCMsMxN5+ZaDhBYt/BgoRinfRYQo8uwuwLhxE6Log==} @@ -6602,7 +6663,6 @@ packages: - supports-color - utf-8-validate - zod - dev: false /@wagmi/core@0.8.0(@coinbase/wallet-sdk@3.6.3)(ethers@5.7.1)(react@18.2.0)(typescript@4.6.4): resolution: {integrity: sha512-249Iph7Z289ym2WQGtUHXSzUK4w/n33IYSAAIDpL4/csB7sOoAYAEAOH5bxH/x2KT7gPd1pNSgOWDzfoG3hI4w==} @@ -6739,7 +6799,6 @@ packages: - bufferutil - lokijs - utf-8-validate - dev: false /@walletconnect/crypto@1.0.3: resolution: {integrity: sha512-+2jdORD7XQs76I2Odgr3wwrtyuLUXD/kprNVsjWRhhhdO9Mt6WqVzOPu0/t7OHSmgal8k7SoBQzUc5hu/8zL/g==} @@ -6832,7 +6891,6 @@ packages: - encoding - lokijs - utf-8-validate - dev: false /@walletconnect/events@1.0.1: resolution: {integrity: sha512-NPTqaoi0oPBVNuLv7qPaJazmGHs5JGyO8eEAk5VGKmJzDR7AHzD4k6ilox5kxk1iwiOnFopBOOMLs86Oa76HpQ==} @@ -7083,7 +7141,6 @@ packages: - bufferutil - lokijs - utf-8-validate - dev: false /@walletconnect/signer-connection@1.8.0: resolution: {integrity: sha512-+YAaTAP52MWZJ2wWnqKClKCPlPHBo6reURFe0cWidLADh9mi/kPWGALZ5AENK22zpem1bbKV466rF5Rzvu0ehA==} @@ -7145,7 +7202,6 @@ packages: transitivePeerDependencies: - '@react-native-async-storage/async-storage' - lokijs - dev: false /@walletconnect/universal-provider@2.10.2(lokijs@1.5.12): resolution: {integrity: sha512-wFgI0LbQ3D56sgaUMsgOHCM5m8WLxiC71BGuCKQfApgsbNMVKugYVy2zWHyUyi8sqTQHI+uSaVpDev4UHq9LEw==} @@ -7186,7 +7242,6 @@ packages: - encoding - lokijs - utf-8-validate - dev: false /@walletconnect/utils@1.8.0: resolution: {integrity: sha512-zExzp8Mj1YiAIBfKNm5u622oNw44WOESzo6hj+Q3apSMIb0Jph9X3GDIdbZmvVZsNPxWDL7uodKgZcCInZv2vA==} @@ -7241,7 +7296,6 @@ packages: transitivePeerDependencies: - '@react-native-async-storage/async-storage' - lokijs - dev: false /@walletconnect/window-getters@1.0.0: resolution: {integrity: sha512-xB0SQsLaleIYIkSsl43vm8EwETpBzJ2gnzk7e0wMF3ktqiTGS6TFHxcprMl5R44KKh4tCcHCJwolMCaDSwtAaA==} @@ -7492,7 +7546,19 @@ packages: optional: true dependencies: typescript: 4.6.4 - dev: false + + /abitype@0.8.1(typescript@4.6.4)(zod@3.22.4): + resolution: {integrity: sha512-n8Di6AWb3i7HnEkBvecU6pG0a5nj5YwMvdAIwPLsQK95ulRy/XS113s/RXvSfTX1iOQJYFrEO3/q4SMWu7OwTA==} + peerDependencies: + typescript: '>=4.9.4' + zod: ^3 >=3.19.1 + peerDependenciesMeta: + zod: + optional: true + dependencies: + typescript: 4.6.4 + zod: 3.22.4 + dev: true /abitype@0.8.1(typescript@5.2.2)(zod@3.22.4): resolution: {integrity: sha512-n8Di6AWb3i7HnEkBvecU6pG0a5nj5YwMvdAIwPLsQK95ulRy/XS113s/RXvSfTX1iOQJYFrEO3/q4SMWu7OwTA==} @@ -7507,6 +7573,19 @@ packages: zod: 3.22.4 dev: true + /abitype@0.8.7(typescript@4.6.4)(zod@3.22.4): + resolution: {integrity: sha512-wQ7hV8Yg/yKmGyFpqrNZufCxbszDe5es4AZGYPBitocfSqXtjrTG9JMWFcc4N30ukl2ve48aBTwt7NJxVQdU3w==} + peerDependencies: + typescript: '>=5.0.4' + zod: ^3 >=3.19.1 + peerDependenciesMeta: + zod: + optional: true + dependencies: + typescript: 4.6.4 + zod: 3.22.4 + dev: true + /abitype@0.8.7(typescript@5.2.2)(zod@3.22.4): resolution: {integrity: sha512-wQ7hV8Yg/yKmGyFpqrNZufCxbszDe5es4AZGYPBitocfSqXtjrTG9JMWFcc4N30ukl2ve48aBTwt7NJxVQdU3w==} peerDependencies: @@ -8180,7 +8259,6 @@ packages: follow-redirects: 1.15.3(debug@4.3.4) transitivePeerDependencies: - debug - dev: false /axios@1.4.0(debug@4.3.4): resolution: {integrity: sha512-S4XCWMEmzvo64T9GfvQDOXgYRDJ/wsSZc7Jvdgx5u1sd0JwsuPLqb3SYmusag+edF6ziyMensPVqLTSc1PiSEA==} @@ -10553,7 +10631,7 @@ packages: postcss-modules-values: 4.0.0(postcss@8.4.31) postcss-value-parser: 4.2.0 semver: 7.5.4 - webpack: 5.89.0(esbuild@0.15.13) + webpack: 5.89.0 dev: true /css-select@4.3.0: @@ -11549,7 +11627,6 @@ packages: - bufferutil - debug - utf-8-validate - dev: false /electron-to-chromium@1.4.554: resolution: {integrity: sha512-Q0umzPJjfBrrj8unkONTgbKQXzXRrH7sVV7D9ea2yBV3Oaogz991yhbpfvo2LMNkJItmruXTEzVpP9cp7vaIiQ==} @@ -13370,7 +13447,6 @@ packages: transitivePeerDependencies: - bufferutil - utf-8-validate - dev: false /ethers@5.7.2: resolution: {integrity: sha512-wswUsmWo1aOK8rR7DIKiWSw9DbLWe6x98Jrn8wcTflTVvaXhAMaB5zGAXy0GYQEQp9iO1iSHWVyARQm11zUtyg==} @@ -14669,7 +14745,7 @@ packages: vue-loader: 15.10.2(css-loader@6.8.1)(prettier@3.0.3)(vue-template-compiler@2.7.14)(webpack@5.89.0) vue-router: 3.6.5(vue@2.7.14) vue-template-compiler: 2.7.14 - webpack: 5.89.0(esbuild@0.15.13) + webpack: 5.89.0 transitivePeerDependencies: - '@swc/core' - '@vue/compiler-sfc' @@ -15164,7 +15240,7 @@ packages: lodash: 4.17.21 pretty-error: 4.0.0 tapable: 2.2.1 - webpack: 5.89.0(esbuild@0.15.13) + webpack: 5.89.0 dev: true /htmlparser2@6.1.0: @@ -23133,6 +23209,30 @@ packages: webpack: 5.89.0(esbuild@0.15.13) dev: true + /terser-webpack-plugin@5.3.9(webpack@5.89.0): + resolution: {integrity: sha512-ZuXsqE07EcggTWQjXUj+Aot/OMcD0bMKGgF63f7UxYcu5/AJF53aIpK1YoP5xR9l6s/Hy2b+t1AM0bLNPRuhwA==} + engines: {node: '>= 10.13.0'} + peerDependencies: + '@swc/core': '*' + esbuild: '*' + uglify-js: '*' + webpack: ^5.1.0 + peerDependenciesMeta: + '@swc/core': + optional: true + esbuild: + optional: true + uglify-js: + optional: true + dependencies: + '@jridgewell/trace-mapping': 0.3.19 + jest-worker: 27.5.1 + schema-utils: 3.3.0 + serialize-javascript: 6.0.1 + terser: 5.22.0 + webpack: 5.89.0 + dev: true + /terser@5.22.0: resolution: {integrity: sha512-hHZVLgRA2z4NWcN6aS5rQDc+7Dcy58HOf2zbYwmFcQ+ua3h6eEFf5lIDKTzbWwlazPyOZsFQO8V80/IjVNExEw==} engines: {node: '>=10'} @@ -24402,6 +24502,25 @@ packages: vfile-message: 4.0.2 dev: false + /viem@0.3.50(typescript@4.6.4)(zod@3.22.4): + resolution: {integrity: sha512-s+LxCYZTR9F/qPk1/n1YDVAX9vSeVz7GraqBZWGrDuenCJxo9ArCoIceJ6ksI0WwSeNzcZ0VVbD/kWRzTxkipw==} + dependencies: + '@adraffy/ens-normalize': 1.9.0 + '@noble/curves': 1.0.0 + '@noble/hashes': 1.3.0 + '@scure/bip32': 1.3.0 + '@scure/bip39': 1.2.0 + '@wagmi/chains': 1.0.0(typescript@4.6.4) + abitype: 0.8.7(typescript@4.6.4)(zod@3.22.4) + isomorphic-ws: 5.0.0(ws@8.12.0) + ws: 8.12.0 + transitivePeerDependencies: + - bufferutil + - typescript + - utf-8-validate + - zod + dev: true + /viem@0.3.50(typescript@5.2.2)(zod@3.22.4): resolution: {integrity: sha512-s+LxCYZTR9F/qPk1/n1YDVAX9vSeVz7GraqBZWGrDuenCJxo9ArCoIceJ6ksI0WwSeNzcZ0VVbD/kWRzTxkipw==} dependencies: @@ -24693,7 +24812,7 @@ packages: vue-hot-reload-api: 2.3.4 vue-style-loader: 4.1.3 vue-template-compiler: 2.7.14 - webpack: 5.89.0(esbuild@0.15.13) + webpack: 5.89.0 transitivePeerDependencies: - arc-templates - atpl @@ -24854,7 +24973,6 @@ packages: - supports-color - utf-8-validate - zod - dev: false /wagmi@1.4.5(lokijs@1.5.12)(react@18.2.0)(typescript@5.2.2)(viem@1.16.6): resolution: {integrity: sha512-Ph62E6cO5n2Z8Z5LTyZrkaNprxTsbC4w0qZJT4OJdXrEELziI8z/b4FO6amVFXdu2rDp/wpvF56e4mhKC8/Kdw==} @@ -25300,6 +25418,46 @@ packages: resolution: {integrity: sha512-kyDivFZ7ZM0BVOUteVbDFhlRt7Ah/CSPwJdi8hBpkK7QLumUqdLtVfm/PX/hkcnrvr0i77fO5+TjZ94Pe+C9iw==} dev: true + /webpack@5.89.0: + resolution: {integrity: sha512-qyfIC10pOr70V+jkmud8tMfajraGCZMBWJtrmuBymQKCrLTRejBI8STDp1MCyZu/QTdZSeacCQYpYNQVOzX5kw==} + engines: {node: '>=10.13.0'} + hasBin: true + peerDependencies: + webpack-cli: '*' + peerDependenciesMeta: + webpack-cli: + optional: true + dependencies: + '@types/eslint-scope': 3.7.5 + '@types/estree': 1.0.2 + '@webassemblyjs/ast': 1.11.6 + '@webassemblyjs/wasm-edit': 1.11.6 + '@webassemblyjs/wasm-parser': 1.11.6 + acorn: 8.10.0 + acorn-import-assertions: 1.9.0(acorn@8.10.0) + browserslist: 4.22.1 + chrome-trace-event: 1.0.3 + enhanced-resolve: 5.15.0 + es-module-lexer: 1.3.1 + eslint-scope: 5.1.1 + events: 3.3.0 + glob-to-regexp: 0.4.1 + graceful-fs: 4.2.11 + json-parse-even-better-errors: 2.3.1 + loader-runner: 4.3.0 + mime-types: 2.1.35 + neo-async: 2.6.2 + schema-utils: 3.3.0 + tapable: 2.2.1 + terser-webpack-plugin: 5.3.9(webpack@5.89.0) + watchpack: 2.4.0 + webpack-sources: 3.2.3 + transitivePeerDependencies: + - '@swc/core' + - esbuild + - uglify-js + dev: true + /webpack@5.89.0(esbuild@0.15.13): resolution: {integrity: sha512-qyfIC10pOr70V+jkmud8tMfajraGCZMBWJtrmuBymQKCrLTRejBI8STDp1MCyZu/QTdZSeacCQYpYNQVOzX5kw==} engines: {node: '>=10.13.0'} @@ -25968,7 +26126,3 @@ packages: transitivePeerDependencies: - supports-color dev: true - -settings: - autoInstallPeers: true - excludeLinksFromLockfile: false From 19e7ec180d4f5263263ac42bdc7598eaa6af39ec Mon Sep 17 00:00:00 2001 From: D <51912515+adaki2004@users.noreply.github.com> Date: Fri, 3 Nov 2023 03:00:04 +0100 Subject: [PATCH 85/87] feat(protocol): Return value to sgx addition (#15111) Co-authored-by: Daniel Wang --- .../contracts/L1/verifiers/SgxVerifier.sol | 55 ++++++++++++------- packages/protocol/test/L1/SgxVerifier.t.sol | 9 ++- 2 files changed, 40 insertions(+), 24 deletions(-) diff --git a/packages/protocol/contracts/L1/verifiers/SgxVerifier.sol b/packages/protocol/contracts/L1/verifiers/SgxVerifier.sol index 9975d58d36..c6364d8d93 100644 --- a/packages/protocol/contracts/L1/verifiers/SgxVerifier.sol +++ b/packages/protocol/contracts/L1/verifiers/SgxVerifier.sol @@ -67,35 +67,39 @@ contract SgxVerifier is EssentialContract, IVerifier { /// @notice Adds trusted SGX instances to the registry. /// @param _instances The address array of trusted SGX instances. - function addInstances(address[] calldata _instances) external onlyOwner { + /// @return ids The respective instanceId array per addresses. + function addInstances(address[] calldata _instances) + external + onlyOwner + returns (uint256[] memory ids) + { if (_instances.length == 0) revert SGX_INVALID_INSTANCES(); - - for (uint256 i; i < _instances.length; ++i) { - _addInstance(_instances[i]); - } + ids = _addInstances(_instances); } /// @notice Adds SGX instances to the registry by another SGX instance. /// @param id The id of the SGX instance who is adding new members. - /// @param _instances The address array of SGX instances. + /// @param newInstance The new address of this instance. + /// @param extraInstances The address array of SGX instances. /// @param signature The signature proving authenticity. + /// @return ids The respective instanceId array per addresses. function addInstances( uint256 id, - address[] calldata _instances, + address newInstance, + address[] calldata extraInstances, bytes calldata signature ) external + returns (uint256[] memory ids) { - if (_instances.length == 0) revert SGX_INVALID_INSTANCES(); - - bytes32 signedHash = keccak256(abi.encode("ADD_INSTANCES", _instances)); + bytes32 signedHash = + keccak256(abi.encode("ADD_INSTANCES", extraInstances)); address oldInstance = ECDSAUpgradeable.recover(signedHash, signature); if (!_isInstanceValid(id, oldInstance)) revert SGX_INVALID_INSTANCE(); - _replaceInstance(id, oldInstance, _instances[0]); - for (uint256 i = 1; i < _instances.length; ++i) { - _addInstance(_instances[i]); - } + _replaceInstance(id, oldInstance, newInstance); + + ids = _addInstances(extraInstances); } /// @inheritdoc IVerifier @@ -140,12 +144,25 @@ contract SgxVerifier is EssentialContract, IVerifier { return keccak256(abi.encode(tran, newInstance, prover, metaHash)); } - function _addInstance(address instance) private { - if (instance == address(0)) revert SGX_INVALID_INSTANCE(); + function _addInstances(address[] calldata _instances) + private + returns (uint256[] memory ids) + { + ids = new uint256[](_instances.length); - uint256 id = nextInstanceId++; - instances[id] = Instance(instance, uint64(block.timestamp)); - emit InstanceAdded(id, instance, address(0), block.timestamp); + for (uint256 i; i < _instances.length; ++i) { + if (_instances[i] == address(0)) revert SGX_INVALID_INSTANCE(); + + instances[nextInstanceId] = + Instance(_instances[i], uint64(block.timestamp)); + ids[i] = nextInstanceId; + + emit InstanceAdded( + nextInstanceId, _instances[i], address(0), block.timestamp + ); + + nextInstanceId++; + } } function _replaceInstance( diff --git a/packages/protocol/test/L1/SgxVerifier.t.sol b/packages/protocol/test/L1/SgxVerifier.t.sol index 9337f9d3aa..73a9efedfe 100644 --- a/packages/protocol/test/L1/SgxVerifier.t.sol +++ b/packages/protocol/test/L1/SgxVerifier.t.sol @@ -36,15 +36,14 @@ contract TestSgxVerifier is TaikoL1TestBase { } function test_addInstancesBySgxInstance() external { - address[] memory _instances = new address[](3); - _instances[0] = SGX_X_1; - _instances[1] = SGX_Y; - _instances[2] = SGX_Z; + address[] memory _instances = new address[](2); + _instances[0] = SGX_Y; + _instances[1] = SGX_Z; bytes memory signature = _getSignature(_instances, 0x4); vm.prank(Bob, Bob); - sv.addInstances(0, _instances, signature); + sv.addInstances(0, SGX_X_1, _instances, signature); } function _getSignature( From 1c273b025d885c9f1f50cddf4ea2e91b40f9ffb5 Mon Sep 17 00:00:00 2001 From: Daniel Wang <99078276+dantaik@users.noreply.github.com> Date: Sun, 12 Nov 2023 09:34:43 +0300 Subject: [PATCH 86/87] fix(protocol): get around forge bug (#15192) Co-authored-by: Daniel Wang --- packages/protocol/package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/protocol/package.json b/packages/protocol/package.json index b7193429f8..75a823420f 100644 --- a/packages/protocol/package.json +++ b/packages/protocol/package.json @@ -16,7 +16,7 @@ "lint:sol": "forge fmt && pnpm solhint 'contracts/**/*.sol' --fix", "sizer": "pnpm hardhat size-contracts", "snapshot": "forge snapshot --match-path 'test/**/*.t.sol'", - "test": "forge test -vvv --gas-report --match-path test/*.t.sol", + "test": "forge test -vvv --match-path test/*.t.sol", "test:coverage": "mkdir -p coverage && forge coverage --report lcov && lcov --remove ./lcov.info -o ./coverage/lcov.info 'test/' 'script/' 'contracts/thirdparty/' && genhtml coverage/lcov.info --branch-coverage --output-dir coverage --ignore-errors category && open coverage/index.html", "test:genesis": "pnpm compile && pnpm compile:hardhat && FOUNDRY_PROFILE=genesis ./genesis/generate_genesis.test.sh", "export:simconf": "forge test --match-test 'test_simulation' -vv > simulation/out/simconf_$(date +%s).txt", From 3069a52c061e050c337c2d0971c4a9e7f51a5375 Mon Sep 17 00:00:00 2001 From: Daniel Wang <99078276+dantaik@users.noreply.github.com> Date: Wed, 15 Nov 2023 13:30:03 +0300 Subject: [PATCH 87/87] refactor(protocol): refactor bridge/vault/signal for multi-chain deployment (#15061) Co-authored-by: Daniel Wang Co-authored-by: adaki2004 Co-authored-by: D <51912515+adaki2004@users.noreply.github.com> Co-authored-by: David Co-authored-by: jeff <113397187+cyberhorsey@users.noreply.github.com> Co-authored-by: Jeffery Walsh Co-authored-by: Brecht Devos --- .../workflows/guardianproverhealthcheck.yml | 101 + .github/workflows/lint-pr.yml | 1 + packages/eventindexer/TaikoL1.json | 1033 +++++---- packages/eventindexer/cmd/flags/generator.go | 2 +- .../eventindexer/contracts/bridge/Bridge.go | 1473 ++++++------ .../eventindexer/contracts/taikol1/TaikoL1.go | 1961 +++++++++------- packages/eventindexer/generator/generator.go | 23 +- .../indexer/save_block_proposed_event.go | 62 +- .../set_initial_processing_block_height.go | 2 +- packages/eventindexer/tasks/tasks.go | 4 - packages/fork-diff/index.html | 10 +- .../guardian-prover-health-check/.default.env | 13 + .../.generator.env | 12 + .../guardian-prover-health-check/.gitignore | 45 + .../.golangci.yml | 48 + .../guardian-prover-health-check/CHANGELOG.md | 194 ++ .../GuardianProver.json | 552 +++++ .../guardian-prover-health-check/README.md | 40 + .../bindings/guardianprover/GuardianProver.go | 1708 ++++++++++++++ .../cmd/flags/common.go | 97 + .../cmd/flags/generator.go | 24 + .../cmd/flags/healthcheck.go | 72 + .../guardian-prover-health-check/cmd/main.go | 59 + .../cmd/utils/subcommand.go | 62 + packages/guardian-prover-health-check/db.go | 28 + .../guardian-prover-health-check/db/db.go | 86 + .../db/db_test.go | 14 + .../generator/config.go | 75 + .../generator/config_test.go | 58 + .../generator/generator.go | 270 +++ .../healthcheck.go | 38 + .../healthchecker/config.go | 78 + .../healthchecker/config_test.go | 76 + .../healthchecker/healthchecker.go | 272 +++ .../http/get_health_checks.go | 27 + ...get_health_checks_by_guardian_prover_id.go | 39 + ...ealth_checks_by_guardian_prover_id_test.go | 66 + .../http/get_health_checks_test.go | 57 + .../http/routes.go | 10 + .../http/server.go | 102 + .../http/server_test.go | 84 + .../metrics/metrics.go | 34 + .../metrics/metrics_test.go | 64 + .../1666650599_create_health_checks_table.sql | 18 + .../1666651000_create_stats_table.sql | 19 + .../guardian-prover-health-check/mock/db.go | 18 + .../mock/health_check_repo.go | 50 + .../guardian-prover-health-check/package.json | 5 + .../prometheus.go | 13 + .../repo/containers_test.go | 76 + .../guardian-prover-health-check/repo/db.go | 17 + .../repo/healthcheck.go | 74 + .../repo/healthcheck_test.go | 78 + .../scripts/abigen.sh | 22 + packages/protocol/.solhint.json | 1 + packages/protocol/README.md | 23 +- .../contracts/4844/IBlobHashReader.sol | 2 + packages/protocol/contracts/L1/TaikoData.sol | 45 +- .../protocol/contracts/L1/TaikoErrors.sol | 8 +- .../protocol/contracts/L1/TaikoEvents.sol | 12 +- packages/protocol/contracts/L1/TaikoL1.sol | 58 +- packages/protocol/contracts/L1/TaikoToken.sol | 15 + .../contracts/L1/libs/LibDepositing.sol | 4 +- .../contracts/L1/libs/LibProposing.sol | 217 +- .../protocol/contracts/L1/libs/LibProving.sol | 14 + .../contracts/L1/libs/LibTaikoToken.sol | 4 +- .../protocol/contracts/L1/libs/LibUtils.sol | 102 +- .../contracts/L1/libs/LibVerifying.sol | 82 +- .../contracts/L1/provers/GuardianProver.sol | 1 + .../contracts/L1/tiers/ITierProvider.sol | 2 + .../L1/tiers/TaikoA6TierProvider.sol | 1 + .../L1/verifiers/GuardianVerifier.sol | 2 +- packages/protocol/contracts/L2/TaikoL2.sol | 53 +- packages/protocol/contracts/bridge/Bridge.sol | 118 +- .../protocol/contracts/bridge/EtherVault.sol | 91 - .../protocol/contracts/bridge/IBridge.sol | 31 +- packages/protocol/contracts/bridge/README.md | 25 +- .../contracts/common/AddressManager.sol | 38 +- .../contracts/common/AddressResolver.sol | 25 +- .../contracts/common/AuthorizableContract.sol | 59 + .../contracts/common/EssentialContract.sol | 11 +- .../contracts/common/ICrossChainSync.sol | 12 +- .../protocol/contracts/common/Proxied.sol | 9 +- .../protocol/contracts/libs/LibAddress.sol | 21 +- .../contracts/signal/ISignalService.sol | 2 +- .../contracts/signal/SignalService.sol | 87 +- .../contracts/team/TimeLockTokenPool.sol | 8 +- .../contracts/tokenvault/BaseNFTVault.sol | 37 +- .../contracts/tokenvault/BaseVault.sol | 69 + .../contracts/tokenvault/ERC1155Vault.sol | 194 +- .../contracts/tokenvault/ERC20Vault.sol | 200 +- .../contracts/tokenvault/ERC721Vault.sol | 197 +- .../tokenvault/libs/LibVaultUtils.sol | 96 - .../docs/actors_privileges_deployments.md | 3 +- packages/protocol/docs/multihop/L1_to_L2.png | Bin 0 -> 603415 bytes packages/protocol/docs/multihop/L2A_to_L3.png | Bin 0 -> 362794 bytes packages/protocol/docs/multihop/L2_to_L1.png | Bin 0 -> 510444 bytes packages/protocol/docs/multihop/L2_to_L2.png | Bin 0 -> 591351 bytes .../docs/multihop_bridging_deployment.md | 99 + .../protocol/genesis/GenerateGenesis.g.sol | 183 +- .../protocol/genesis/generate_genesis.test.sh | 2 +- packages/protocol/genesis/test_config.js | 128 ++ packages/protocol/genesis/test_config.json | 90 - .../AuthorizeRemoteTaikoProtocols.s.sol | 44 + packages/protocol/script/DeployOnL1.s.sol | 230 +- packages/protocol/script/SetAddress.s.sol | 2 +- .../script/SetRemoteBridgeSuites.s.sol | 91 + packages/protocol/script/merge_contracts.py | 27 + packages/protocol/script/test_deploy_on_l1.sh | 4 +- .../script/upgrade/UpgradeBridge.s.sol | 2 +- .../script/upgrade/UpgradeERC1155Vault.s.sol | 2 +- .../script/upgrade/UpgradeERC20Vault.s.sol | 2 +- .../script/upgrade/UpgradeERC721Vault.s.sol | 2 +- .../script/upgrade/UpgradeSignalService.sol | 2 +- .../script/upgrade/UpgradeTaikoL2.s.sol | 2 +- packages/protocol/test/L1/TaikoL1.t.sol | 16 +- .../test/L1/TaikoL1LibProvingWithTiers.t.sol | 6 +- packages/protocol/test/L1/TaikoL1TestBase.sol | 42 +- packages/protocol/test/L1/TaikoToken.t.sol | 2 +- packages/protocol/test/L2/TaikoL2.t.sol | 10 +- packages/protocol/test/TestBase.sol | 7 +- packages/protocol/test/bridge/Bridge.t.sol | 112 +- .../protocol/test/signal/SignalService.t.sol | 49 +- .../test/tokenvault/ERC1155Vault.t.sol | 122 +- .../protocol/test/tokenvault/ERC20Vault.t.sol | 72 +- .../test/tokenvault/ERC721Vault.t.sol | 113 +- .../protocol/test/tokenvault/EtherVault.t.sol | 87 - .../protocol/utils/generate_genesis/erc20.ts | 19 +- .../protocol/utils/generate_genesis/main.ts | 25 +- .../utils/generate_genesis/taikoL2.ts | 493 ++-- packages/relayer/.l1indexer.example.env | 2 +- packages/relayer/ERC1155Vault.json | 201 +- packages/relayer/ERC20Vault.json | 184 +- packages/relayer/ERC721Vault.json | 201 +- packages/relayer/ICrossChainSync.json | 18 +- packages/relayer/SignalService.json | 186 +- packages/relayer/TaikoL1.json | 811 ++++--- packages/relayer/bindings/bridge/Bridge.go | 402 +++- .../bindings/erc1155vault/ERC1155Vault.go | 404 +++- .../relayer/bindings/erc20vault/ERC20Vault.go | 355 ++- .../bindings/erc721vault/ERC721Vault.go | 404 +++- .../icrosschainsync/ICrossChainSync.go | 55 +- .../bindings/signalservice/SignalService.go | 545 ++++- packages/relayer/bindings/taikol1/TaikoL1.go | 2024 ++++++++++------- packages/relayer/bindings/taikol2/TaikoL2.go | 575 ++--- .../relayer/encoding/signal_proof_test.go | 2 +- packages/relayer/encoding/types.go | 21 +- packages/relayer/indexer/handle_event.go | 6 +- .../set_initial_processing_block_by_mode.go | 2 +- packages/relayer/mock/bridge.go | 4 +- packages/relayer/mock/signalservice.go | 4 +- packages/relayer/processor/estimate_gas.go | 3 +- .../relayer/processor/is_profitable_test.go | 4 +- packages/relayer/processor/process_message.go | 53 +- .../relayer/processor/process_message_test.go | 16 +- packages/relayer/processor/processor.go | 2 + .../relayer/proof/encoded_signal_proof.go | 24 +- .../proof/encoded_signal_proof_test.go | 3 +- packages/relayer/signalservice.go | 4 +- packages/relayer/types.go | 22 +- packages/relayer/types_test.go | 6 +- .../contract-documentation/L2/TaikoL2.md | 4 +- .../signal/SignalService.md | 4 +- .../tokenvault/ERC1155Vault.md | 4 +- .../tokenvault/ERC721Vault.md | 4 +- 165 files changed, 14154 insertions(+), 5937 deletions(-) create mode 100644 .github/workflows/guardianproverhealthcheck.yml create mode 100644 packages/guardian-prover-health-check/.default.env create mode 100644 packages/guardian-prover-health-check/.generator.env create mode 100644 packages/guardian-prover-health-check/.gitignore create mode 100644 packages/guardian-prover-health-check/.golangci.yml create mode 100644 packages/guardian-prover-health-check/CHANGELOG.md create mode 100644 packages/guardian-prover-health-check/GuardianProver.json create mode 100644 packages/guardian-prover-health-check/README.md create mode 100644 packages/guardian-prover-health-check/bindings/guardianprover/GuardianProver.go create mode 100644 packages/guardian-prover-health-check/cmd/flags/common.go create mode 100644 packages/guardian-prover-health-check/cmd/flags/generator.go create mode 100644 packages/guardian-prover-health-check/cmd/flags/healthcheck.go create mode 100644 packages/guardian-prover-health-check/cmd/main.go create mode 100644 packages/guardian-prover-health-check/cmd/utils/subcommand.go create mode 100644 packages/guardian-prover-health-check/db.go create mode 100644 packages/guardian-prover-health-check/db/db.go create mode 100644 packages/guardian-prover-health-check/db/db_test.go create mode 100644 packages/guardian-prover-health-check/generator/config.go create mode 100644 packages/guardian-prover-health-check/generator/config_test.go create mode 100644 packages/guardian-prover-health-check/generator/generator.go create mode 100644 packages/guardian-prover-health-check/healthcheck.go create mode 100644 packages/guardian-prover-health-check/healthchecker/config.go create mode 100644 packages/guardian-prover-health-check/healthchecker/config_test.go create mode 100644 packages/guardian-prover-health-check/healthchecker/healthchecker.go create mode 100644 packages/guardian-prover-health-check/http/get_health_checks.go create mode 100644 packages/guardian-prover-health-check/http/get_health_checks_by_guardian_prover_id.go create mode 100644 packages/guardian-prover-health-check/http/get_health_checks_by_guardian_prover_id_test.go create mode 100644 packages/guardian-prover-health-check/http/get_health_checks_test.go create mode 100644 packages/guardian-prover-health-check/http/routes.go create mode 100644 packages/guardian-prover-health-check/http/server.go create mode 100644 packages/guardian-prover-health-check/http/server_test.go create mode 100644 packages/guardian-prover-health-check/metrics/metrics.go create mode 100644 packages/guardian-prover-health-check/metrics/metrics_test.go create mode 100644 packages/guardian-prover-health-check/migrations/1666650599_create_health_checks_table.sql create mode 100644 packages/guardian-prover-health-check/migrations/1666651000_create_stats_table.sql create mode 100644 packages/guardian-prover-health-check/mock/db.go create mode 100644 packages/guardian-prover-health-check/mock/health_check_repo.go create mode 100644 packages/guardian-prover-health-check/package.json create mode 100644 packages/guardian-prover-health-check/prometheus.go create mode 100644 packages/guardian-prover-health-check/repo/containers_test.go create mode 100644 packages/guardian-prover-health-check/repo/db.go create mode 100644 packages/guardian-prover-health-check/repo/healthcheck.go create mode 100644 packages/guardian-prover-health-check/repo/healthcheck_test.go create mode 100755 packages/guardian-prover-health-check/scripts/abigen.sh delete mode 100644 packages/protocol/contracts/bridge/EtherVault.sol create mode 100644 packages/protocol/contracts/common/AuthorizableContract.sol create mode 100644 packages/protocol/contracts/tokenvault/BaseVault.sol delete mode 100644 packages/protocol/contracts/tokenvault/libs/LibVaultUtils.sol create mode 100644 packages/protocol/docs/multihop/L1_to_L2.png create mode 100644 packages/protocol/docs/multihop/L2A_to_L3.png create mode 100644 packages/protocol/docs/multihop/L2_to_L1.png create mode 100644 packages/protocol/docs/multihop/L2_to_L2.png create mode 100644 packages/protocol/docs/multihop_bridging_deployment.md create mode 100644 packages/protocol/genesis/test_config.js delete mode 100644 packages/protocol/genesis/test_config.json create mode 100644 packages/protocol/script/AuthorizeRemoteTaikoProtocols.s.sol create mode 100644 packages/protocol/script/SetRemoteBridgeSuites.s.sol create mode 100644 packages/protocol/script/merge_contracts.py delete mode 100644 packages/protocol/test/tokenvault/EtherVault.t.sol diff --git a/.github/workflows/guardianproverhealthcheck.yml b/.github/workflows/guardianproverhealthcheck.yml new file mode 100644 index 0000000000..df51950dfb --- /dev/null +++ b/.github/workflows/guardianproverhealthcheck.yml @@ -0,0 +1,101 @@ +name: guardianproverhealthcheck + +on: + push: + branches: [main] + paths: + - "packages/guardianproverhealthcheck/**" + pull_request: + paths: + - "packages/guardianproverhealthcheck/**" + +jobs: + lint: + name: lint + runs-on: ubuntu-latest + steps: + - uses: actions/setup-go@v3 + with: + go-version: 1.21.0 + - uses: actions/checkout@v3 + - name: golangci-lint + uses: golangci/golangci-lint-action@v3 + with: + # Optional: version of golangci-lint to use in form of v1.2 or v1.2.3 or `latest` to use the latest version + version: latest + + # Optional: working directory, useful for monorepos + working-directory: ./packages/guardianproverhealthcheck + args: --config=.golangci.yml --timeout=4m + + test: + runs-on: ubuntu-latest + needs: lint + steps: + - name: Cancel Previous Runs + uses: styfle/cancel-workflow-action@0.11.0 + with: + access_token: ${{ github.token }} + + - uses: actions/checkout@v3 + - uses: actions/setup-go@v3 + with: + go-version: "1.21.0" + + - name: guardianproverhealthcheck - Unit Tests + working-directory: ./packages/guardianproverhealthcheck + run: go test `go list ./... | grep -v ./contracts | grep -v ./mock | grep -v ./cmd` -coverprofile=coverage.txt -covermode=atomic + + - name: guardianproverhealthcheck - Upload coverage to Codecov + uses: codecov/codecov-action@v3 + with: + files: ./packages/guardianproverhealthcheck/coverage.txt + flags: guardianproverhealthcheck + + push-docker-image: + # only push docker image on PR merge to main + if: ${{ github.event }} == 'push' + name: Build and push docker image + runs-on: ubuntu-latest + + steps: + - name: Checkout + uses: actions/checkout@v2 + with: + ref: ${{ github.ref }} + + - name: Login to GCR + uses: docker/login-action@v2 + with: + registry: gcr.io + username: _json_key + password: ${{ secrets.GCR_JSON_KEY }} + + - name: Set up QEMU + uses: docker/setup-qemu-action@v1 + + - name: Set up Docker Buildx + uses: docker/setup-buildx-action@v1 + + - name: Docker meta + id: meta + uses: docker/metadata-action@v4 + with: + images: | + gcr.io/evmchain/guardianproverhealthcheck + tags: | + type=ref,event=branch + type=ref,event=pr + type=ref,event=tag + type=sha + + - name: Build and push + uses: docker/build-push-action@v2 + with: + platforms: linux/amd64 + push: true + context: . + tags: ${{ steps.meta.outputs.tags }} + labels: ${{ steps.meta.outputs.labels }} + build-args: | + PACKAGE=guardianproverhealthcheck diff --git a/.github/workflows/lint-pr.yml b/.github/workflows/lint-pr.yml index a83fc8ac80..f2c4996c2d 100644 --- a/.github/workflows/lint-pr.yml +++ b/.github/workflows/lint-pr.yml @@ -23,6 +23,7 @@ jobs: deps eventindexer fork-diff + guardianproverhealthcheck protocol relayer starter-dapp diff --git a/packages/eventindexer/TaikoL1.json b/packages/eventindexer/TaikoL1.json index 60f46b34c0..fea82990c0 100644 --- a/packages/eventindexer/TaikoL1.json +++ b/packages/eventindexer/TaikoL1.json @@ -1,4 +1,14 @@ [ + { + "inputs": [], + "name": "ETH_TRANSFER_FAILED", + "type": "error" + }, + { + "inputs": [], + "name": "INVALID_PAUSE_STATUS", + "type": "error" + }, { "inputs": [], "name": "L1_ALREADY_CONTESTED", @@ -71,12 +81,32 @@ }, { "inputs": [], - "name": "L1_BLOCK_MISMATCH", + "name": "L1_BLOB_FOR_DA_DISABLED", "type": "error" }, { "inputs": [], - "name": "L1_BLOCK_MISMATCH", + "name": "L1_BLOB_FOR_DA_DISABLED", + "type": "error" + }, + { + "inputs": [], + "name": "L1_BLOB_NOT_FOUND", + "type": "error" + }, + { + "inputs": [], + "name": "L1_BLOB_NOT_FOUND", + "type": "error" + }, + { + "inputs": [], + "name": "L1_BLOB_NOT_REUSEABLE", + "type": "error" + }, + { + "inputs": [], + "name": "L1_BLOB_NOT_REUSEABLE", "type": "error" }, { @@ -91,12 +121,12 @@ }, { "inputs": [], - "name": "L1_INSUFFICIENT_TOKEN", + "name": "L1_BLOCK_MISMATCH", "type": "error" }, { "inputs": [], - "name": "L1_INVALID_ADDRESS", + "name": "L1_INSUFFICIENT_TOKEN", "type": "error" }, { @@ -106,7 +136,7 @@ }, { "inputs": [], - "name": "L1_INVALID_BLOCK_ID", + "name": "L1_INVALID_AMOUNT", "type": "error" }, { @@ -121,7 +151,7 @@ }, { "inputs": [], - "name": "L1_INVALID_CONFIG", + "name": "L1_INVALID_BLOCK_ID", "type": "error" }, { @@ -141,22 +171,22 @@ }, { "inputs": [], - "name": "L1_INVALID_EVIDENCE", + "name": "L1_INVALID_PARAM", "type": "error" }, { "inputs": [], - "name": "L1_INVALID_EVIDENCE", + "name": "L1_INVALID_PARAM", "type": "error" }, { "inputs": [], - "name": "L1_INVALID_METADATA", + "name": "L1_INVALID_PAUSE_STATUS", "type": "error" }, { "inputs": [], - "name": "L1_INVALID_PARAM", + "name": "L1_INVALID_PAUSE_STATUS", "type": "error" }, { @@ -166,27 +196,27 @@ }, { "inputs": [], - "name": "L1_INVALID_PROPOSER", + "name": "L1_INVALID_TIER", "type": "error" }, { "inputs": [], - "name": "L1_INVALID_PROVER", + "name": "L1_INVALID_TIER", "type": "error" }, { "inputs": [], - "name": "L1_INVALID_PROVER_SIG", + "name": "L1_INVALID_TRANSITION", "type": "error" }, { "inputs": [], - "name": "L1_INVALID_TIER", + "name": "L1_INVALID_TRANSITION", "type": "error" }, { "inputs": [], - "name": "L1_INVALID_TIER", + "name": "L1_NOT_ASSIGNED_PROVER", "type": "error" }, { @@ -196,7 +226,17 @@ }, { "inputs": [], - "name": "L1_NOT_ASSIGNED_PROVER", + "name": "L1_PROPOSER_NOT_EOA", + "type": "error" + }, + { + "inputs": [], + "name": "L1_PROPOSER_NOT_EOA", + "type": "error" + }, + { + "inputs": [], + "name": "L1_PROVING_PAUSED", "type": "error" }, { @@ -221,7 +261,7 @@ }, { "inputs": [], - "name": "L1_TRANSITION_ID_ZERO", + "name": "L1_TOO_MANY_TIERS", "type": "error" }, { @@ -231,7 +271,7 @@ }, { "inputs": [], - "name": "L1_TRANSITION_NOT_FOUND", + "name": "L1_TRANSITION_ID_ZERO", "type": "error" }, { @@ -241,42 +281,42 @@ }, { "inputs": [], - "name": "L1_TXLIST_INVALID_RANGE", + "name": "L1_TXLIST_OFFSET", "type": "error" }, { "inputs": [], - "name": "L1_TXLIST_MISMATCH", + "name": "L1_TXLIST_OFFSET_SIZE", "type": "error" }, { "inputs": [], - "name": "L1_TXLIST_MISMATCH", + "name": "L1_TXLIST_SIZE", "type": "error" }, { "inputs": [], - "name": "L1_TXLIST_NOT_FOUND", + "name": "L1_TXLIST_TOO_LARGE", "type": "error" }, { "inputs": [], - "name": "L1_TXLIST_TOO_LARGE", + "name": "L1_UNAUTHORIZED", "type": "error" }, { "inputs": [], - "name": "L1_TXLIST_TOO_LARGE", + "name": "L1_UNAUTHORIZED", "type": "error" }, { "inputs": [], - "name": "L1_UNAUTHORIZED", + "name": "L1_UNEXPECTED_PARENT", "type": "error" }, { "inputs": [], - "name": "L1_UNAUTHORIZED", + "name": "L1_UNEXPECTED_PARENT", "type": "error" }, { @@ -299,6 +339,11 @@ "name": "L1_UNEXPECTED_TRANSITION_TIER", "type": "error" }, + { + "inputs": [], + "name": "REENTRANT_CALL", + "type": "error" + }, { "inputs": [], "name": "RESOLVER_DENIED", @@ -306,20 +351,25 @@ }, { "inputs": [], - "name": "RESOLVER_INVALID_ADDR", + "name": "RESOLVER_INVALID_MANAGER", + "type": "error" + }, + { + "inputs": [], + "name": "RESOLVER_UNEXPECTED_CHAINID", "type": "error" }, { "inputs": [ { - "internalType": "uint256", + "internalType": "uint64", "name": "chainId", - "type": "uint256" + "type": "uint64" }, { - "internalType": "bytes32", + "internalType": "string", "name": "name", - "type": "bytes32" + "type": "string" } ], "name": "RESOLVER_ZERO_ADDR", @@ -329,13 +379,26 @@ "anonymous": false, "inputs": [ { - "indexed": true, - "internalType": "address", - "name": "addressManager", - "type": "address" + "indexed": false, + "internalType": "bytes32", + "name": "blobHash", + "type": "bytes32" } ], - "name": "AddressManagerChanged", + "name": "BlobCached", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "bytes32", + "name": "blobHash", + "type": "bytes32" + } + ], + "name": "BlobCached", "type": "event" }, { @@ -365,18 +428,6 @@ "name": "proverFee", "type": "uint256" }, - { - "indexed": false, - "internalType": "uint256", - "name": "reward", - "type": "uint256" - }, - { - "indexed": false, - "internalType": "uint16", - "name": "minTier", - "type": "uint16" - }, { "components": [ { @@ -391,7 +442,7 @@ }, { "internalType": "bytes32", - "name": "txListHash", + "name": "blobHash", "type": "bytes32" }, { @@ -399,11 +450,26 @@ "name": "extraData", "type": "bytes32" }, + { + "internalType": "bytes32", + "name": "depositsHash", + "type": "bytes32" + }, + { + "internalType": "address", + "name": "coinbase", + "type": "address" + }, { "internalType": "uint64", "name": "id", "type": "uint64" }, + { + "internalType": "uint32", + "name": "gasLimit", + "type": "uint32" + }, { "internalType": "uint64", "name": "timestamp", @@ -415,42 +481,58 @@ "type": "uint64" }, { - "internalType": "uint32", - "name": "gasLimit", - "type": "uint32" + "internalType": "uint24", + "name": "txListByteOffset", + "type": "uint24" }, { - "internalType": "address", - "name": "coinbase", - "type": "address" + "internalType": "uint24", + "name": "txListByteSize", + "type": "uint24" + }, + { + "internalType": "uint16", + "name": "minTier", + "type": "uint16" + }, + { + "internalType": "bool", + "name": "blobUsed", + "type": "bool" }, { - "components": [ - { - "internalType": "address", - "name": "recipient", - "type": "address" - }, - { - "internalType": "uint96", - "name": "amount", - "type": "uint96" - }, - { - "internalType": "uint64", - "name": "id", - "type": "uint64" - } - ], - "internalType": "struct TaikoData.EthDeposit[]", - "name": "depositsProcessed", - "type": "tuple[]" + "internalType": "bytes32", + "name": "parentMetaHash", + "type": "bytes32" } ], "indexed": false, "internalType": "struct TaikoData.BlockMetadata", "name": "meta", "type": "tuple" + }, + { + "components": [ + { + "internalType": "address", + "name": "recipient", + "type": "address" + }, + { + "internalType": "uint96", + "name": "amount", + "type": "uint96" + }, + { + "internalType": "uint64", + "name": "id", + "type": "uint64" + } + ], + "indexed": false, + "internalType": "struct TaikoData.EthDeposit[]", + "name": "depositsProcessed", + "type": "tuple[]" } ], "name": "BlockProposed", @@ -483,18 +565,6 @@ "name": "proverFee", "type": "uint256" }, - { - "indexed": false, - "internalType": "uint256", - "name": "reward", - "type": "uint256" - }, - { - "indexed": false, - "internalType": "uint16", - "name": "minTier", - "type": "uint16" - }, { "components": [ { @@ -509,7 +579,7 @@ }, { "internalType": "bytes32", - "name": "txListHash", + "name": "blobHash", "type": "bytes32" }, { @@ -517,11 +587,26 @@ "name": "extraData", "type": "bytes32" }, + { + "internalType": "bytes32", + "name": "depositsHash", + "type": "bytes32" + }, + { + "internalType": "address", + "name": "coinbase", + "type": "address" + }, { "internalType": "uint64", "name": "id", "type": "uint64" }, + { + "internalType": "uint32", + "name": "gasLimit", + "type": "uint32" + }, { "internalType": "uint64", "name": "timestamp", @@ -533,42 +618,58 @@ "type": "uint64" }, { - "internalType": "uint32", - "name": "gasLimit", - "type": "uint32" + "internalType": "uint24", + "name": "txListByteOffset", + "type": "uint24" }, { - "internalType": "address", - "name": "coinbase", - "type": "address" + "internalType": "uint24", + "name": "txListByteSize", + "type": "uint24" + }, + { + "internalType": "uint16", + "name": "minTier", + "type": "uint16" + }, + { + "internalType": "bool", + "name": "blobUsed", + "type": "bool" }, { - "components": [ - { - "internalType": "address", - "name": "recipient", - "type": "address" - }, - { - "internalType": "uint96", - "name": "amount", - "type": "uint96" - }, - { - "internalType": "uint64", - "name": "id", - "type": "uint64" - } - ], - "internalType": "struct TaikoData.EthDeposit[]", - "name": "depositsProcessed", - "type": "tuple[]" + "internalType": "bytes32", + "name": "parentMetaHash", + "type": "bytes32" } ], "indexed": false, "internalType": "struct TaikoData.BlockMetadata", "name": "meta", "type": "tuple" + }, + { + "components": [ + { + "internalType": "address", + "name": "recipient", + "type": "address" + }, + { + "internalType": "uint96", + "name": "amount", + "type": "uint96" + }, + { + "internalType": "uint64", + "name": "id", + "type": "uint64" + } + ], + "indexed": false, + "internalType": "struct TaikoData.EthDeposit[]", + "name": "depositsProcessed", + "type": "tuple[]" } ], "name": "BlockProposed", @@ -606,6 +707,18 @@ "internalType": "bytes32", "name": "signalRoot", "type": "bytes32" + }, + { + "indexed": false, + "internalType": "uint16", + "name": "tier", + "type": "uint16" + }, + { + "indexed": false, + "internalType": "uint8", + "name": "contestations", + "type": "uint8" } ], "name": "BlockVerified", @@ -643,6 +756,18 @@ "internalType": "bytes32", "name": "signalRoot", "type": "bytes32" + }, + { + "indexed": false, + "internalType": "uint16", + "name": "tier", + "type": "uint16" + }, + { + "indexed": false, + "internalType": "uint8", + "name": "contestations", + "type": "uint8" } ], "name": "BlockVerified", @@ -679,7 +804,13 @@ { "indexed": true, "internalType": "uint64", - "name": "srcHeight", + "name": "remoteBlockId", + "type": "uint64" + }, + { + "indexed": false, + "internalType": "uint64", + "name": "syncedInBlock", "type": "uint64" }, { @@ -728,36 +859,6 @@ "name": "EthDeposited", "type": "event" }, - { - "anonymous": false, - "inputs": [ - { - "components": [ - { - "internalType": "address", - "name": "recipient", - "type": "address" - }, - { - "internalType": "uint96", - "name": "amount", - "type": "uint96" - }, - { - "internalType": "uint64", - "name": "id", - "type": "uint64" - } - ], - "indexed": false, - "internalType": "struct TaikoData.EthDeposit", - "name": "deposit", - "type": "tuple" - } - ], - "name": "EthDeposited", - "type": "event" - }, { "anonymous": false, "inputs": [ @@ -787,26 +888,26 @@ "type": "address" } ], - "name": "OwnershipTransferred", + "name": "OwnershipTransferStarted", "type": "event" }, { "anonymous": false, "inputs": [ { - "indexed": false, - "internalType": "uint256", - "name": "amount", - "type": "uint256" + "indexed": true, + "internalType": "address", + "name": "previousOwner", + "type": "address" }, { - "indexed": false, - "internalType": "bool", - "name": "minted", - "type": "bool" + "indexed": true, + "internalType": "address", + "name": "newOwner", + "type": "address" } ], - "name": "TokenCredited", + "name": "OwnershipTransferred", "type": "event" }, { @@ -814,61 +915,49 @@ "inputs": [ { "indexed": false, - "internalType": "uint256", - "name": "amount", - "type": "uint256" - }, - { - "indexed": false, - "internalType": "bool", - "name": "minted", - "type": "bool" + "internalType": "address", + "name": "account", + "type": "address" } ], - "name": "TokenCredited", + "name": "Paused", "type": "event" }, { "anonymous": false, "inputs": [ - { - "indexed": false, - "internalType": "uint256", - "name": "amount", - "type": "uint256" - }, { "indexed": false, "internalType": "bool", - "name": "fromLocalBalance", + "name": "paused", "type": "bool" } ], - "name": "TokenDebited", + "name": "ProvingPaused", "type": "event" }, { "anonymous": false, "inputs": [ - { - "indexed": false, - "internalType": "uint256", - "name": "amount", - "type": "uint256" - }, { "indexed": false, "internalType": "bool", - "name": "fromLocalBalance", + "name": "paused", "type": "bool" } ], - "name": "TokenDebited", + "name": "ProvingPaused", "type": "event" }, { "anonymous": false, "inputs": [ + { + "indexed": false, + "internalType": "address", + "name": "to", + "type": "address" + }, { "indexed": false, "internalType": "uint256", @@ -876,12 +965,18 @@ "type": "uint256" } ], - "name": "TokenDeposited", + "name": "TokenCredited", "type": "event" }, { "anonymous": false, "inputs": [ + { + "indexed": false, + "internalType": "address", + "name": "to", + "type": "address" + }, { "indexed": false, "internalType": "uint256", @@ -889,12 +984,18 @@ "type": "uint256" } ], - "name": "TokenDeposited", + "name": "TokenCredited", "type": "event" }, { "anonymous": false, "inputs": [ + { + "indexed": false, + "internalType": "address", + "name": "from", + "type": "address" + }, { "indexed": false, "internalType": "uint256", @@ -902,12 +1003,18 @@ "type": "uint256" } ], - "name": "TokenWithdrawn", + "name": "TokenDebited", "type": "event" }, { "anonymous": false, "inputs": [ + { + "indexed": false, + "internalType": "address", + "name": "from", + "type": "address" + }, { "indexed": false, "internalType": "uint256", @@ -915,18 +1022,12 @@ "type": "uint256" } ], - "name": "TokenWithdrawn", + "name": "TokenDebited", "type": "event" }, { "anonymous": false, "inputs": [ - { - "indexed": false, - "internalType": "address", - "name": "to", - "type": "address" - }, { "indexed": false, "internalType": "uint256", @@ -934,18 +1035,12 @@ "type": "uint256" } ], - "name": "TokenWithdrawnByOwner", + "name": "TokenDeposited", "type": "event" }, { "anonymous": false, "inputs": [ - { - "indexed": false, - "internalType": "address", - "name": "to", - "type": "address" - }, { "indexed": false, "internalType": "uint256", @@ -953,7 +1048,7 @@ "type": "uint256" } ], - "name": "TokenWithdrawnByOwner", + "name": "TokenWithdrawn", "type": "event" }, { @@ -966,22 +1061,32 @@ "type": "uint256" }, { + "components": [ + { + "internalType": "bytes32", + "name": "parentHash", + "type": "bytes32" + }, + { + "internalType": "bytes32", + "name": "blockHash", + "type": "bytes32" + }, + { + "internalType": "bytes32", + "name": "signalRoot", + "type": "bytes32" + }, + { + "internalType": "bytes32", + "name": "graffiti", + "type": "bytes32" + } + ], "indexed": false, - "internalType": "bytes32", - "name": "parentHash", - "type": "bytes32" - }, - { - "indexed": false, - "internalType": "bytes32", - "name": "blockHash", - "type": "bytes32" - }, - { - "indexed": false, - "internalType": "bytes32", - "name": "signalRoot", - "type": "bytes32" + "internalType": "struct TaikoData.Transition", + "name": "tran", + "type": "tuple" }, { "indexed": false, @@ -1015,22 +1120,32 @@ "type": "uint256" }, { + "components": [ + { + "internalType": "bytes32", + "name": "parentHash", + "type": "bytes32" + }, + { + "internalType": "bytes32", + "name": "blockHash", + "type": "bytes32" + }, + { + "internalType": "bytes32", + "name": "signalRoot", + "type": "bytes32" + }, + { + "internalType": "bytes32", + "name": "graffiti", + "type": "bytes32" + } + ], "indexed": false, - "internalType": "bytes32", - "name": "parentHash", - "type": "bytes32" - }, - { - "indexed": false, - "internalType": "bytes32", - "name": "blockHash", - "type": "bytes32" - }, - { - "indexed": false, - "internalType": "bytes32", - "name": "signalRoot", - "type": "bytes32" + "internalType": "struct TaikoData.Transition", + "name": "tran", + "type": "tuple" }, { "indexed": false, @@ -1064,22 +1179,32 @@ "type": "uint256" }, { + "components": [ + { + "internalType": "bytes32", + "name": "parentHash", + "type": "bytes32" + }, + { + "internalType": "bytes32", + "name": "blockHash", + "type": "bytes32" + }, + { + "internalType": "bytes32", + "name": "signalRoot", + "type": "bytes32" + }, + { + "internalType": "bytes32", + "name": "graffiti", + "type": "bytes32" + } + ], "indexed": false, - "internalType": "bytes32", - "name": "parentHash", - "type": "bytes32" - }, - { - "indexed": false, - "internalType": "bytes32", - "name": "blockHash", - "type": "bytes32" - }, - { - "indexed": false, - "internalType": "bytes32", - "name": "signalRoot", - "type": "bytes32" + "internalType": "struct TaikoData.Transition", + "name": "tran", + "type": "tuple" }, { "indexed": false, @@ -1113,22 +1238,32 @@ "type": "uint256" }, { + "components": [ + { + "internalType": "bytes32", + "name": "parentHash", + "type": "bytes32" + }, + { + "internalType": "bytes32", + "name": "blockHash", + "type": "bytes32" + }, + { + "internalType": "bytes32", + "name": "signalRoot", + "type": "bytes32" + }, + { + "internalType": "bytes32", + "name": "graffiti", + "type": "bytes32" + } + ], "indexed": false, - "internalType": "bytes32", - "name": "parentHash", - "type": "bytes32" - }, - { - "indexed": false, - "internalType": "bytes32", - "name": "blockHash", - "type": "bytes32" - }, - { - "indexed": false, - "internalType": "bytes32", - "name": "signalRoot", - "type": "bytes32" + "internalType": "struct TaikoData.Transition", + "name": "tran", + "type": "tuple" }, { "indexed": false, @@ -1152,6 +1287,26 @@ "name": "TransitionProved", "type": "event" }, + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "address", + "name": "account", + "type": "address" + } + ], + "name": "Unpaused", + "type": "event" + }, + { + "inputs": [], + "name": "acceptOwnership", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, { "inputs": [], "name": "addressManager", @@ -1247,6 +1402,11 @@ "name": "proposedAt", "type": "uint64" }, + { + "internalType": "uint64", + "name": "proposedIn", + "type": "uint64" + }, { "internalType": "uint32", "name": "nextTransitionId", @@ -1257,11 +1417,6 @@ "name": "verifiedTransitionId", "type": "uint32" }, - { - "internalType": "uint16", - "name": "minTier", - "type": "uint16" - }, { "internalType": "bytes32[7]", "name": "__reserved", @@ -1283,14 +1438,9 @@ { "components": [ { - "internalType": "uint256", + "internalType": "uint64", "name": "chainId", - "type": "uint256" - }, - { - "internalType": "bool", - "name": "relaySignalRoot", - "type": "bool" + "type": "uint64" }, { "internalType": "uint64", @@ -1312,25 +1462,20 @@ "name": "blockMaxGasLimit", "type": "uint32" }, - { - "internalType": "uint32", - "name": "blockFeeBaseGas", - "type": "uint32" - }, { "internalType": "uint24", "name": "blockMaxTxListBytes", "type": "uint24" }, { - "internalType": "uint256", - "name": "proposerRewardPerSecond", - "type": "uint256" + "internalType": "uint24", + "name": "blobExpiry", + "type": "uint24" }, { - "internalType": "uint256", - "name": "proposerRewardMax", - "type": "uint256" + "internalType": "bool", + "name": "blobAllowedForDA", + "type": "bool" }, { "internalType": "uint96", @@ -1378,44 +1523,6 @@ "type": "tuple" } ], - "stateMutability": "pure", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "uint64", - "name": "blockId", - "type": "uint64" - } - ], - "name": "getCrossChainBlockHash", - "outputs": [ - { - "internalType": "bytes32", - "name": "", - "type": "bytes32" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "uint64", - "name": "blockId", - "type": "uint64" - } - ], - "name": "getCrossChainSignalRoot", - "outputs": [ - { - "internalType": "bytes32", - "name": "", - "type": "bytes32" - } - ], "stateMutability": "view", "type": "function" }, @@ -1456,14 +1563,21 @@ }, { "internalType": "uint64", - "name": "nextEthDepositToProcess", + "name": "numEthDeposits", "type": "uint64" }, { "internalType": "uint64", - "name": "numEthDeposits", + "name": "nextEthDepositToProcess", "type": "uint64" - }, + } + ], + "internalType": "struct TaikoData.SlotA", + "name": "a", + "type": "tuple" + }, + { + "components": [ { "internalType": "uint64", "name": "numBlocks", @@ -1473,9 +1587,55 @@ "internalType": "uint64", "name": "lastVerifiedBlockId", "type": "uint64" + }, + { + "internalType": "bool", + "name": "provingPaused", + "type": "bool" + } + ], + "internalType": "struct TaikoData.SlotB", + "name": "b", + "type": "tuple" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint64", + "name": "blockId", + "type": "uint64" + } + ], + "name": "getSyncedSnippet", + "outputs": [ + { + "components": [ + { + "internalType": "uint64", + "name": "remoteBlockId", + "type": "uint64" + }, + { + "internalType": "uint64", + "name": "syncedInBlock", + "type": "uint64" + }, + { + "internalType": "bytes32", + "name": "blockHash", + "type": "bytes32" + }, + { + "internalType": "bytes32", + "name": "signalRoot", + "type": "bytes32" } ], - "internalType": "struct TaikoData.StateVariables", + "internalType": "struct ICrossChainSync.Snippet", "name": "", "type": "tuple" } @@ -1538,6 +1698,11 @@ "internalType": "uint16", "name": "provingWindow", "type": "uint16" + }, + { + "internalType": "uint8", + "name": "maxBlocksToVerify", + "type": "uint8" } ], "internalType": "struct ITierProvider.Tier", @@ -1554,7 +1719,7 @@ "outputs": [ { "internalType": "uint16[]", - "name": "", + "name": "ids", "type": "uint16[]" } ], @@ -1623,13 +1788,18 @@ "name": "tier", "type": "uint16" }, + { + "internalType": "uint8", + "name": "contestations", + "type": "uint8" + }, { "internalType": "bytes32[4]", "name": "__reserved", "type": "bytes32[4]" } ], - "internalType": "struct TaikoData.Transition", + "internalType": "struct TaikoData.TransitionState", "name": "", "type": "tuple" } @@ -1655,6 +1825,38 @@ "stateMutability": "nonpayable", "type": "function" }, + { + "inputs": [ + { + "internalType": "bytes32", + "name": "blobHash", + "type": "bytes32" + } + ], + "name": "isBlobReusable", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "isConfigValid", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "view", + "type": "function" + }, { "inputs": [], "name": "owner", @@ -1668,39 +1870,57 @@ "stateMutability": "view", "type": "function" }, + { + "inputs": [], + "name": "pause", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, { "inputs": [ { - "internalType": "address", - "name": "to", - "type": "address" - }, - { - "internalType": "uint256", - "name": "amount", - "type": "uint256" + "internalType": "bool", + "name": "pause", + "type": "bool" } ], - "name": "ownerWithdrawTaikoToken", + "name": "pauseProving", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { - "inputs": [ + "inputs": [], + "name": "paused", + "outputs": [ { - "internalType": "bytes32", - "name": "txListHash", - "type": "bytes32" - }, + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "pendingOwner", + "outputs": [ { - "internalType": "bytes32", - "name": "extraData", - "type": "bytes32" - }, + "internalType": "address", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ { "internalType": "bytes", - "name": "assignment", + "name": "params", "type": "bytes" }, { @@ -1725,7 +1945,7 @@ }, { "internalType": "bytes32", - "name": "txListHash", + "name": "blobHash", "type": "bytes32" }, { @@ -1733,11 +1953,26 @@ "name": "extraData", "type": "bytes32" }, + { + "internalType": "bytes32", + "name": "depositsHash", + "type": "bytes32" + }, + { + "internalType": "address", + "name": "coinbase", + "type": "address" + }, { "internalType": "uint64", "name": "id", "type": "uint64" }, + { + "internalType": "uint32", + "name": "gasLimit", + "type": "uint32" + }, { "internalType": "uint64", "name": "timestamp", @@ -1749,41 +1984,56 @@ "type": "uint64" }, { - "internalType": "uint32", - "name": "gasLimit", - "type": "uint32" + "internalType": "uint24", + "name": "txListByteOffset", + "type": "uint24" }, { - "internalType": "address", - "name": "coinbase", - "type": "address" + "internalType": "uint24", + "name": "txListByteSize", + "type": "uint24" + }, + { + "internalType": "uint16", + "name": "minTier", + "type": "uint16" + }, + { + "internalType": "bool", + "name": "blobUsed", + "type": "bool" }, { - "components": [ - { - "internalType": "address", - "name": "recipient", - "type": "address" - }, - { - "internalType": "uint96", - "name": "amount", - "type": "uint96" - }, - { - "internalType": "uint64", - "name": "id", - "type": "uint64" - } - ], - "internalType": "struct TaikoData.EthDeposit[]", - "name": "depositsProcessed", - "type": "tuple[]" + "internalType": "bytes32", + "name": "parentMetaHash", + "type": "bytes32" } ], "internalType": "struct TaikoData.BlockMetadata", "name": "meta", "type": "tuple" + }, + { + "components": [ + { + "internalType": "address", + "name": "recipient", + "type": "address" + }, + { + "internalType": "uint96", + "name": "amount", + "type": "uint96" + }, + { + "internalType": "uint64", + "name": "id", + "type": "uint64" + } + ], + "internalType": "struct TaikoData.EthDeposit[]", + "name": "depositsProcessed", + "type": "tuple[]" } ], "stateMutability": "payable", @@ -1817,9 +2067,9 @@ { "inputs": [ { - "internalType": "uint256", + "internalType": "uint64", "name": "chainId", - "type": "uint256" + "type": "uint64" }, { "internalType": "bytes32", @@ -1867,19 +2117,6 @@ "stateMutability": "view", "type": "function" }, - { - "inputs": [ - { - "internalType": "address", - "name": "newAddressManager", - "type": "address" - } - ], - "name": "setAddressManager", - "outputs": [], - "stateMutability": "nonpayable", - "type": "function" - }, { "inputs": [], "name": "state", @@ -1920,18 +2157,13 @@ }, { "internalType": "uint64", - "name": "nextEthDepositToProcess", - "type": "uint64" - }, - { - "internalType": "uint64", - "name": "lastVerifiedAt", + "name": "lastVerifiedBlockId", "type": "uint64" }, { - "internalType": "uint64", - "name": "lastVerifiedBlockId", - "type": "uint64" + "internalType": "bool", + "name": "provingPaused", + "type": "bool" } ], "internalType": "struct TaikoData.SlotB", @@ -1955,11 +2187,18 @@ "stateMutability": "nonpayable", "type": "function" }, + { + "inputs": [], + "name": "unpause", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, { "inputs": [ { "internalType": "uint64", - "name": "maxBlocks", + "name": "maxBlocksToVerify", "type": "uint64" } ], diff --git a/packages/eventindexer/cmd/flags/generator.go b/packages/eventindexer/cmd/flags/generator.go index 9c53b437f5..9f9f4988ee 100644 --- a/packages/eventindexer/cmd/flags/generator.go +++ b/packages/eventindexer/cmd/flags/generator.go @@ -5,7 +5,7 @@ import "github.com/urfave/cli/v2" var ( GenesisDate = &cli.StringFlag{ Name: "genesisDate", - Usage: "Genesis date to start genrating data from, YYYY-MM-DD", + Usage: "Genesis date to start generating data from, YYYY-MM-DD", Required: true, Category: generatorCategory, EnvVars: []string{"GENESIS_DATE"}, diff --git a/packages/eventindexer/contracts/bridge/Bridge.go b/packages/eventindexer/contracts/bridge/Bridge.go index 2313b34e13..e363c41bef 100644 --- a/packages/eventindexer/contracts/bridge/Bridge.go +++ b/packages/eventindexer/contracts/bridge/Bridge.go @@ -33,16 +33,16 @@ var ( type IBridgeContext struct { MsgHash [32]byte From common.Address - SrcChainId *big.Int + SrcChainId uint64 } // IBridgeMessage is an auto generated low-level Go binding around an user-defined struct. type IBridgeMessage struct { Id *big.Int From common.Address - SrcChainId *big.Int - DestChainId *big.Int - User common.Address + SrcChainId uint64 + DestChainId uint64 + Owner common.Address To common.Address RefundTo common.Address Value *big.Int @@ -54,7 +54,7 @@ type IBridgeMessage struct { // BridgeMetaData contains all meta data concerning the Bridge contract. var BridgeMetaData = &bind.MetaData{ - ABI: "[{\"inputs\":[],\"name\":\"B_DENIED\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"B_DENIED\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"B_ERC20_CANNOT_RECEIVE\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"B_EV_DO_NOT_BURN\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"B_EV_NOT_AUTHORIZED\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"B_EV_PARAM\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"B_FAILED_TRANSFER\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"B_FORBIDDEN\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"B_FORBIDDEN\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"B_GAS_LIMIT\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"B_GAS_LIMIT\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"B_INCORRECT_VALUE\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"B_INCORRECT_VALUE\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"B_INIT_PARAM_ERROR\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"B_MSG_HASH_NULL\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"B_MSG_HASH_NULL\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"B_MSG_NON_RETRIABLE\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"B_MSG_NON_RETRIABLE\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"B_MSG_NOT_FAILED\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"B_MSG_NOT_FAILED\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"B_MSG_RECALLED_ALREADY\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"B_MSG_RECALLED_ALREADY\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"B_NULL_APP_ADDR\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"B_SIGNAL_NOT_RECEIVED\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"B_SIGNAL_NOT_RECEIVED\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"B_STATUS_MISMATCH\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"B_STATUS_MISMATCH\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"B_USER_IS_NULL\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"B_USER_IS_NULL\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"B_WRONG_CHAIN_ID\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"B_WRONG_CHAIN_ID\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"B_WRONG_CHAIN_ID\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"B_WRONG_CHAIN_ID\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"B_WRONG_TO_ADDRESS\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"B_WRONG_TO_ADDRESS\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"B_ZERO_SIGNAL\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"RESOLVER_DENIED\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"RESOLVER_INVALID_ADDR\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"chainId\",\"type\":\"uint256\"},{\"internalType\":\"bytes32\",\"name\":\"name\",\"type\":\"bytes32\"}],\"name\":\"RESOLVER_ZERO_ADDR\",\"type\":\"error\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"addressManager\",\"type\":\"address\"}],\"name\":\"AddressManagerChanged\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"chainId\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"bool\",\"name\":\"enabled\",\"type\":\"bool\"}],\"name\":\"DestChainEnabled\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint8\",\"name\":\"version\",\"type\":\"uint8\"}],\"name\":\"Initialized\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"msgHash\",\"type\":\"bytes32\"}],\"name\":\"MessageRecalled\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"msgHash\",\"type\":\"bytes32\"}],\"name\":\"MessageRecalled\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"msgHash\",\"type\":\"bytes32\"},{\"components\":[{\"internalType\":\"uint256\",\"name\":\"id\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"srcChainId\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"destChainId\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"user\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"refundTo\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"fee\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"gasLimit\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"},{\"internalType\":\"string\",\"name\":\"memo\",\"type\":\"string\"}],\"indexed\":false,\"internalType\":\"structIBridge.Message\",\"name\":\"message\",\"type\":\"tuple\"}],\"name\":\"MessageSent\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"msgHash\",\"type\":\"bytes32\"},{\"components\":[{\"internalType\":\"uint256\",\"name\":\"id\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"srcChainId\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"destChainId\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"user\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"refundTo\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"fee\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"gasLimit\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"},{\"internalType\":\"string\",\"name\":\"memo\",\"type\":\"string\"}],\"indexed\":false,\"internalType\":\"structIBridge.Message\",\"name\":\"message\",\"type\":\"tuple\"}],\"name\":\"MessageSent\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"msgHash\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"enumLibBridgeStatus.MessageStatus\",\"name\":\"status\",\"type\":\"uint8\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"transactor\",\"type\":\"address\"}],\"name\":\"MessageStatusChanged\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"msgHash\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"enumLibBridgeStatus.MessageStatus\",\"name\":\"status\",\"type\":\"uint8\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"transactor\",\"type\":\"address\"}],\"name\":\"MessageStatusChanged\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"previousOwner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"newOwner\",\"type\":\"address\"}],\"name\":\"OwnershipTransferred\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"msgHash\",\"type\":\"bytes32\"}],\"name\":\"SignalSent\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"addressManager\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"context\",\"outputs\":[{\"components\":[{\"internalType\":\"bytes32\",\"name\":\"msgHash\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"srcChainId\",\"type\":\"uint256\"}],\"internalType\":\"structIBridge.Context\",\"name\":\"\",\"type\":\"tuple\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"msgHash\",\"type\":\"bytes32\"}],\"name\":\"getMessageStatus\",\"outputs\":[{\"internalType\":\"enumLibBridgeStatus.MessageStatus\",\"name\":\"\",\"type\":\"uint8\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"msgHash\",\"type\":\"bytes32\"}],\"name\":\"getMessageStatusSlot\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"uint256\",\"name\":\"id\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"srcChainId\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"destChainId\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"user\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"refundTo\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"fee\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"gasLimit\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"},{\"internalType\":\"string\",\"name\":\"memo\",\"type\":\"string\"}],\"internalType\":\"structIBridge.Message\",\"name\":\"message\",\"type\":\"tuple\"}],\"name\":\"hashMessage\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_addressManager\",\"type\":\"address\"}],\"name\":\"init\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_chainId\",\"type\":\"uint256\"}],\"name\":\"isDestChainEnabled\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"enabled\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"msgHash\",\"type\":\"bytes32\"},{\"internalType\":\"uint256\",\"name\":\"destChainId\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"proof\",\"type\":\"bytes\"}],\"name\":\"isMessageFailed\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"msgHash\",\"type\":\"bytes32\"}],\"name\":\"isMessageRecalled\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"msgHash\",\"type\":\"bytes32\"},{\"internalType\":\"uint256\",\"name\":\"srcChainId\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"proof\",\"type\":\"bytes\"}],\"name\":\"isMessageReceived\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"msgHash\",\"type\":\"bytes32\"}],\"name\":\"isMessageSent\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"owner\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"uint256\",\"name\":\"id\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"srcChainId\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"destChainId\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"user\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"refundTo\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"fee\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"gasLimit\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"},{\"internalType\":\"string\",\"name\":\"memo\",\"type\":\"string\"}],\"internalType\":\"structIBridge.Message\",\"name\":\"message\",\"type\":\"tuple\"},{\"internalType\":\"bytes\",\"name\":\"proof\",\"type\":\"bytes\"}],\"name\":\"processMessage\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"uint256\",\"name\":\"id\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"srcChainId\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"destChainId\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"user\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"refundTo\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"fee\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"gasLimit\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"},{\"internalType\":\"string\",\"name\":\"memo\",\"type\":\"string\"}],\"internalType\":\"structIBridge.Message\",\"name\":\"message\",\"type\":\"tuple\"},{\"internalType\":\"bytes\",\"name\":\"proof\",\"type\":\"bytes\"}],\"name\":\"recallMessage\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"renounceOwnership\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"chainId\",\"type\":\"uint256\"},{\"internalType\":\"bytes32\",\"name\":\"name\",\"type\":\"bytes32\"},{\"internalType\":\"bool\",\"name\":\"allowZeroAddress\",\"type\":\"bool\"}],\"name\":\"resolve\",\"outputs\":[{\"internalType\":\"addresspayable\",\"name\":\"addr\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"name\",\"type\":\"bytes32\"},{\"internalType\":\"bool\",\"name\":\"allowZeroAddress\",\"type\":\"bool\"}],\"name\":\"resolve\",\"outputs\":[{\"internalType\":\"addresspayable\",\"name\":\"addr\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"uint256\",\"name\":\"id\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"srcChainId\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"destChainId\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"user\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"refundTo\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"fee\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"gasLimit\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"},{\"internalType\":\"string\",\"name\":\"memo\",\"type\":\"string\"}],\"internalType\":\"structIBridge.Message\",\"name\":\"message\",\"type\":\"tuple\"},{\"internalType\":\"bool\",\"name\":\"isLastAttempt\",\"type\":\"bool\"}],\"name\":\"retryMessage\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"uint256\",\"name\":\"id\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"srcChainId\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"destChainId\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"user\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"refundTo\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"fee\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"gasLimit\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"},{\"internalType\":\"string\",\"name\":\"memo\",\"type\":\"string\"}],\"internalType\":\"structIBridge.Message\",\"name\":\"message\",\"type\":\"tuple\"}],\"name\":\"sendMessage\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"msgHash\",\"type\":\"bytes32\"}],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"newAddressManager\",\"type\":\"address\"}],\"name\":\"setAddressManager\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"newOwner\",\"type\":\"address\"}],\"name\":\"transferOwnership\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"stateMutability\":\"payable\",\"type\":\"receive\"}]", + ABI: "[{\"inputs\":[],\"name\":\"B_INVALID_CHAINID\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"B_INVALID_CONTEXT\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"B_INVALID_GAS_LIMIT\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"B_INVALID_SIGNAL\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"B_INVALID_USER\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"B_INVALID_VALUE\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"B_NON_RETRIABLE\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"B_NOT_FAILED\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"B_NOT_RECEIVED\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"B_PERMISSION_DENIED\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"B_RECALLED_ALREADY\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"B_STATUS_MISMATCH\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ETH_TRANSFER_FAILED\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"INVALID_PAUSE_STATUS\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"REENTRANT_CALL\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"RESOLVER_DENIED\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"RESOLVER_INVALID_MANAGER\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"RESOLVER_UNEXPECTED_CHAINID\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"chainId\",\"type\":\"uint64\"},{\"internalType\":\"string\",\"name\":\"name\",\"type\":\"string\"}],\"name\":\"RESOLVER_ZERO_ADDR\",\"type\":\"error\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint64\",\"name\":\"chainId\",\"type\":\"uint64\"},{\"indexed\":false,\"internalType\":\"bool\",\"name\":\"enabled\",\"type\":\"bool\"}],\"name\":\"DestChainEnabled\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint8\",\"name\":\"version\",\"type\":\"uint8\"}],\"name\":\"Initialized\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"msgHash\",\"type\":\"bytes32\"}],\"name\":\"MessageRecalled\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"msgHash\",\"type\":\"bytes32\"},{\"components\":[{\"internalType\":\"uint128\",\"name\":\"id\",\"type\":\"uint128\"},{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"uint64\",\"name\":\"srcChainId\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"destChainId\",\"type\":\"uint64\"},{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"refundTo\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"fee\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"gasLimit\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"},{\"internalType\":\"string\",\"name\":\"memo\",\"type\":\"string\"}],\"indexed\":false,\"internalType\":\"structIBridge.Message\",\"name\":\"message\",\"type\":\"tuple\"}],\"name\":\"MessageSent\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"msgHash\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"enumBridge.Status\",\"name\":\"status\",\"type\":\"uint8\"}],\"name\":\"MessageStatusChanged\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"previousOwner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"newOwner\",\"type\":\"address\"}],\"name\":\"OwnershipTransferStarted\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"previousOwner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"newOwner\",\"type\":\"address\"}],\"name\":\"OwnershipTransferred\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"Paused\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"msgHash\",\"type\":\"bytes32\"}],\"name\":\"SignalSent\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"Unpaused\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"acceptOwnership\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"addressManager\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"context\",\"outputs\":[{\"components\":[{\"internalType\":\"bytes32\",\"name\":\"msgHash\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"uint64\",\"name\":\"srcChainId\",\"type\":\"uint64\"}],\"internalType\":\"structIBridge.Context\",\"name\":\"\",\"type\":\"tuple\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"uint128\",\"name\":\"id\",\"type\":\"uint128\"},{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"uint64\",\"name\":\"srcChainId\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"destChainId\",\"type\":\"uint64\"},{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"refundTo\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"fee\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"gasLimit\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"},{\"internalType\":\"string\",\"name\":\"memo\",\"type\":\"string\"}],\"internalType\":\"structIBridge.Message\",\"name\":\"message\",\"type\":\"tuple\"}],\"name\":\"hashMessage\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_addressManager\",\"type\":\"address\"}],\"name\":\"init\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"chainId\",\"type\":\"uint64\"}],\"name\":\"isDestChainEnabled\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"enabled\",\"type\":\"bool\"},{\"internalType\":\"address\",\"name\":\"destBridge\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"msgHash\",\"type\":\"bytes32\"}],\"name\":\"isMessageRecalled\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"recalled\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"uint128\",\"name\":\"id\",\"type\":\"uint128\"},{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"uint64\",\"name\":\"srcChainId\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"destChainId\",\"type\":\"uint64\"},{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"refundTo\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"fee\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"gasLimit\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"},{\"internalType\":\"string\",\"name\":\"memo\",\"type\":\"string\"}],\"internalType\":\"structIBridge.Message\",\"name\":\"message\",\"type\":\"tuple\"}],\"name\":\"isMessageSent\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"msgHash\",\"type\":\"bytes32\"}],\"name\":\"messageStatus\",\"outputs\":[{\"internalType\":\"enumBridge.Status\",\"name\":\"\",\"type\":\"uint8\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"nextMessageId\",\"outputs\":[{\"internalType\":\"uint128\",\"name\":\"\",\"type\":\"uint128\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"owner\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"pause\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"paused\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"pendingOwner\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"uint128\",\"name\":\"id\",\"type\":\"uint128\"},{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"uint64\",\"name\":\"srcChainId\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"destChainId\",\"type\":\"uint64\"},{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"refundTo\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"fee\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"gasLimit\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"},{\"internalType\":\"string\",\"name\":\"memo\",\"type\":\"string\"}],\"internalType\":\"structIBridge.Message\",\"name\":\"message\",\"type\":\"tuple\"},{\"internalType\":\"bytes\",\"name\":\"proof\",\"type\":\"bytes\"}],\"name\":\"processMessage\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"uint128\",\"name\":\"id\",\"type\":\"uint128\"},{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"uint64\",\"name\":\"srcChainId\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"destChainId\",\"type\":\"uint64\"},{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"refundTo\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"fee\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"gasLimit\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"},{\"internalType\":\"string\",\"name\":\"memo\",\"type\":\"string\"}],\"internalType\":\"structIBridge.Message\",\"name\":\"message\",\"type\":\"tuple\"},{\"internalType\":\"bytes\",\"name\":\"proof\",\"type\":\"bytes\"}],\"name\":\"proveMessageFailed\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"uint128\",\"name\":\"id\",\"type\":\"uint128\"},{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"uint64\",\"name\":\"srcChainId\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"destChainId\",\"type\":\"uint64\"},{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"refundTo\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"fee\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"gasLimit\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"},{\"internalType\":\"string\",\"name\":\"memo\",\"type\":\"string\"}],\"internalType\":\"structIBridge.Message\",\"name\":\"message\",\"type\":\"tuple\"},{\"internalType\":\"bytes\",\"name\":\"proof\",\"type\":\"bytes\"}],\"name\":\"proveMessageReceived\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"uint128\",\"name\":\"id\",\"type\":\"uint128\"},{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"uint64\",\"name\":\"srcChainId\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"destChainId\",\"type\":\"uint64\"},{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"refundTo\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"fee\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"gasLimit\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"},{\"internalType\":\"string\",\"name\":\"memo\",\"type\":\"string\"}],\"internalType\":\"structIBridge.Message\",\"name\":\"message\",\"type\":\"tuple\"},{\"internalType\":\"bytes\",\"name\":\"proof\",\"type\":\"bytes\"}],\"name\":\"recallMessage\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"renounceOwnership\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"chainId\",\"type\":\"uint64\"},{\"internalType\":\"bytes32\",\"name\":\"name\",\"type\":\"bytes32\"},{\"internalType\":\"bool\",\"name\":\"allowZeroAddress\",\"type\":\"bool\"}],\"name\":\"resolve\",\"outputs\":[{\"internalType\":\"addresspayable\",\"name\":\"addr\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"name\",\"type\":\"bytes32\"},{\"internalType\":\"bool\",\"name\":\"allowZeroAddress\",\"type\":\"bool\"}],\"name\":\"resolve\",\"outputs\":[{\"internalType\":\"addresspayable\",\"name\":\"addr\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"uint128\",\"name\":\"id\",\"type\":\"uint128\"},{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"uint64\",\"name\":\"srcChainId\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"destChainId\",\"type\":\"uint64\"},{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"refundTo\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"fee\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"gasLimit\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"},{\"internalType\":\"string\",\"name\":\"memo\",\"type\":\"string\"}],\"internalType\":\"structIBridge.Message\",\"name\":\"message\",\"type\":\"tuple\"},{\"internalType\":\"bool\",\"name\":\"isLastAttempt\",\"type\":\"bool\"}],\"name\":\"retryMessage\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"uint128\",\"name\":\"id\",\"type\":\"uint128\"},{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"uint64\",\"name\":\"srcChainId\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"destChainId\",\"type\":\"uint64\"},{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"refundTo\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"fee\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"gasLimit\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"},{\"internalType\":\"string\",\"name\":\"memo\",\"type\":\"string\"}],\"internalType\":\"structIBridge.Message\",\"name\":\"message\",\"type\":\"tuple\"}],\"name\":\"sendMessage\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"msgHash\",\"type\":\"bytes32\"},{\"components\":[{\"internalType\":\"uint128\",\"name\":\"id\",\"type\":\"uint128\"},{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"uint64\",\"name\":\"srcChainId\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"destChainId\",\"type\":\"uint64\"},{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"refundTo\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"fee\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"gasLimit\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"},{\"internalType\":\"string\",\"name\":\"memo\",\"type\":\"string\"}],\"internalType\":\"structIBridge.Message\",\"name\":\"_message\",\"type\":\"tuple\"}],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"newOwner\",\"type\":\"address\"}],\"name\":\"transferOwnership\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"unpause\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"stateMutability\":\"payable\",\"type\":\"receive\"}]", } // BridgeABI is the input ABI used to generate the binding from. @@ -236,7 +236,7 @@ func (_Bridge *BridgeCallerSession) AddressManager() (common.Address, error) { // Context is a free data retrieval call binding the contract method 0xd0496d6a. // -// Solidity: function context() view returns((bytes32,address,uint256)) +// Solidity: function context() view returns((bytes32,address,uint64)) func (_Bridge *BridgeCaller) Context(opts *bind.CallOpts) (IBridgeContext, error) { var out []interface{} err := _Bridge.contract.Call(opts, &out, "context") @@ -253,117 +253,131 @@ func (_Bridge *BridgeCaller) Context(opts *bind.CallOpts) (IBridgeContext, error // Context is a free data retrieval call binding the contract method 0xd0496d6a. // -// Solidity: function context() view returns((bytes32,address,uint256)) +// Solidity: function context() view returns((bytes32,address,uint64)) func (_Bridge *BridgeSession) Context() (IBridgeContext, error) { return _Bridge.Contract.Context(&_Bridge.CallOpts) } // Context is a free data retrieval call binding the contract method 0xd0496d6a. // -// Solidity: function context() view returns((bytes32,address,uint256)) +// Solidity: function context() view returns((bytes32,address,uint64)) func (_Bridge *BridgeCallerSession) Context() (IBridgeContext, error) { return _Bridge.Contract.Context(&_Bridge.CallOpts) } -// GetMessageStatus is a free data retrieval call binding the contract method 0x5075a9d4. +// HashMessage is a free data retrieval call binding the contract method 0x48c09539. // -// Solidity: function getMessageStatus(bytes32 msgHash) view returns(uint8) -func (_Bridge *BridgeCaller) GetMessageStatus(opts *bind.CallOpts, msgHash [32]byte) (uint8, error) { +// Solidity: function hashMessage((uint128,address,uint64,uint64,address,address,address,uint256,uint256,uint256,bytes,string) message) pure returns(bytes32) +func (_Bridge *BridgeCaller) HashMessage(opts *bind.CallOpts, message IBridgeMessage) ([32]byte, error) { var out []interface{} - err := _Bridge.contract.Call(opts, &out, "getMessageStatus", msgHash) + err := _Bridge.contract.Call(opts, &out, "hashMessage", message) if err != nil { - return *new(uint8), err + return *new([32]byte), err } - out0 := *abi.ConvertType(out[0], new(uint8)).(*uint8) + out0 := *abi.ConvertType(out[0], new([32]byte)).(*[32]byte) return out0, err } -// GetMessageStatus is a free data retrieval call binding the contract method 0x5075a9d4. +// HashMessage is a free data retrieval call binding the contract method 0x48c09539. // -// Solidity: function getMessageStatus(bytes32 msgHash) view returns(uint8) -func (_Bridge *BridgeSession) GetMessageStatus(msgHash [32]byte) (uint8, error) { - return _Bridge.Contract.GetMessageStatus(&_Bridge.CallOpts, msgHash) +// Solidity: function hashMessage((uint128,address,uint64,uint64,address,address,address,uint256,uint256,uint256,bytes,string) message) pure returns(bytes32) +func (_Bridge *BridgeSession) HashMessage(message IBridgeMessage) ([32]byte, error) { + return _Bridge.Contract.HashMessage(&_Bridge.CallOpts, message) } -// GetMessageStatus is a free data retrieval call binding the contract method 0x5075a9d4. +// HashMessage is a free data retrieval call binding the contract method 0x48c09539. // -// Solidity: function getMessageStatus(bytes32 msgHash) view returns(uint8) -func (_Bridge *BridgeCallerSession) GetMessageStatus(msgHash [32]byte) (uint8, error) { - return _Bridge.Contract.GetMessageStatus(&_Bridge.CallOpts, msgHash) +// Solidity: function hashMessage((uint128,address,uint64,uint64,address,address,address,uint256,uint256,uint256,bytes,string) message) pure returns(bytes32) +func (_Bridge *BridgeCallerSession) HashMessage(message IBridgeMessage) ([32]byte, error) { + return _Bridge.Contract.HashMessage(&_Bridge.CallOpts, message) } -// GetMessageStatusSlot is a free data retrieval call binding the contract method 0x606b5b74. +// IsDestChainEnabled is a free data retrieval call binding the contract method 0x8e3881a9. // -// Solidity: function getMessageStatusSlot(bytes32 msgHash) pure returns(bytes32) -func (_Bridge *BridgeCaller) GetMessageStatusSlot(opts *bind.CallOpts, msgHash [32]byte) ([32]byte, error) { +// Solidity: function isDestChainEnabled(uint64 chainId) view returns(bool enabled, address destBridge) +func (_Bridge *BridgeCaller) IsDestChainEnabled(opts *bind.CallOpts, chainId uint64) (struct { + Enabled bool + DestBridge common.Address +}, error) { var out []interface{} - err := _Bridge.contract.Call(opts, &out, "getMessageStatusSlot", msgHash) + err := _Bridge.contract.Call(opts, &out, "isDestChainEnabled", chainId) + outstruct := new(struct { + Enabled bool + DestBridge common.Address + }) if err != nil { - return *new([32]byte), err + return *outstruct, err } - out0 := *abi.ConvertType(out[0], new([32]byte)).(*[32]byte) + outstruct.Enabled = *abi.ConvertType(out[0], new(bool)).(*bool) + outstruct.DestBridge = *abi.ConvertType(out[1], new(common.Address)).(*common.Address) - return out0, err + return *outstruct, err } -// GetMessageStatusSlot is a free data retrieval call binding the contract method 0x606b5b74. +// IsDestChainEnabled is a free data retrieval call binding the contract method 0x8e3881a9. // -// Solidity: function getMessageStatusSlot(bytes32 msgHash) pure returns(bytes32) -func (_Bridge *BridgeSession) GetMessageStatusSlot(msgHash [32]byte) ([32]byte, error) { - return _Bridge.Contract.GetMessageStatusSlot(&_Bridge.CallOpts, msgHash) +// Solidity: function isDestChainEnabled(uint64 chainId) view returns(bool enabled, address destBridge) +func (_Bridge *BridgeSession) IsDestChainEnabled(chainId uint64) (struct { + Enabled bool + DestBridge common.Address +}, error) { + return _Bridge.Contract.IsDestChainEnabled(&_Bridge.CallOpts, chainId) } -// GetMessageStatusSlot is a free data retrieval call binding the contract method 0x606b5b74. +// IsDestChainEnabled is a free data retrieval call binding the contract method 0x8e3881a9. // -// Solidity: function getMessageStatusSlot(bytes32 msgHash) pure returns(bytes32) -func (_Bridge *BridgeCallerSession) GetMessageStatusSlot(msgHash [32]byte) ([32]byte, error) { - return _Bridge.Contract.GetMessageStatusSlot(&_Bridge.CallOpts, msgHash) +// Solidity: function isDestChainEnabled(uint64 chainId) view returns(bool enabled, address destBridge) +func (_Bridge *BridgeCallerSession) IsDestChainEnabled(chainId uint64) (struct { + Enabled bool + DestBridge common.Address +}, error) { + return _Bridge.Contract.IsDestChainEnabled(&_Bridge.CallOpts, chainId) } -// HashMessage is a free data retrieval call binding the contract method 0x263463c8. +// IsMessageRecalled is a free data retrieval call binding the contract method 0x4f5f9772. // -// Solidity: function hashMessage((uint256,address,uint256,uint256,address,address,address,uint256,uint256,uint256,bytes,string) message) pure returns(bytes32) -func (_Bridge *BridgeCaller) HashMessage(opts *bind.CallOpts, message IBridgeMessage) ([32]byte, error) { +// Solidity: function isMessageRecalled(bytes32 msgHash) view returns(bool recalled) +func (_Bridge *BridgeCaller) IsMessageRecalled(opts *bind.CallOpts, msgHash [32]byte) (bool, error) { var out []interface{} - err := _Bridge.contract.Call(opts, &out, "hashMessage", message) + err := _Bridge.contract.Call(opts, &out, "isMessageRecalled", msgHash) if err != nil { - return *new([32]byte), err + return *new(bool), err } - out0 := *abi.ConvertType(out[0], new([32]byte)).(*[32]byte) + out0 := *abi.ConvertType(out[0], new(bool)).(*bool) return out0, err } -// HashMessage is a free data retrieval call binding the contract method 0x263463c8. +// IsMessageRecalled is a free data retrieval call binding the contract method 0x4f5f9772. // -// Solidity: function hashMessage((uint256,address,uint256,uint256,address,address,address,uint256,uint256,uint256,bytes,string) message) pure returns(bytes32) -func (_Bridge *BridgeSession) HashMessage(message IBridgeMessage) ([32]byte, error) { - return _Bridge.Contract.HashMessage(&_Bridge.CallOpts, message) +// Solidity: function isMessageRecalled(bytes32 msgHash) view returns(bool recalled) +func (_Bridge *BridgeSession) IsMessageRecalled(msgHash [32]byte) (bool, error) { + return _Bridge.Contract.IsMessageRecalled(&_Bridge.CallOpts, msgHash) } -// HashMessage is a free data retrieval call binding the contract method 0x263463c8. +// IsMessageRecalled is a free data retrieval call binding the contract method 0x4f5f9772. // -// Solidity: function hashMessage((uint256,address,uint256,uint256,address,address,address,uint256,uint256,uint256,bytes,string) message) pure returns(bytes32) -func (_Bridge *BridgeCallerSession) HashMessage(message IBridgeMessage) ([32]byte, error) { - return _Bridge.Contract.HashMessage(&_Bridge.CallOpts, message) +// Solidity: function isMessageRecalled(bytes32 msgHash) view returns(bool recalled) +func (_Bridge *BridgeCallerSession) IsMessageRecalled(msgHash [32]byte) (bool, error) { + return _Bridge.Contract.IsMessageRecalled(&_Bridge.CallOpts, msgHash) } -// IsDestChainEnabled is a free data retrieval call binding the contract method 0x5d0bd986. +// IsMessageSent is a free data retrieval call binding the contract method 0x60ecbdfd. // -// Solidity: function isDestChainEnabled(uint256 _chainId) view returns(bool enabled) -func (_Bridge *BridgeCaller) IsDestChainEnabled(opts *bind.CallOpts, _chainId *big.Int) (bool, error) { +// Solidity: function isMessageSent((uint128,address,uint64,uint64,address,address,address,uint256,uint256,uint256,bytes,string) message) view returns(bool) +func (_Bridge *BridgeCaller) IsMessageSent(opts *bind.CallOpts, message IBridgeMessage) (bool, error) { var out []interface{} - err := _Bridge.contract.Call(opts, &out, "isDestChainEnabled", _chainId) + err := _Bridge.contract.Call(opts, &out, "isMessageSent", message) if err != nil { return *new(bool), err @@ -375,119 +389,119 @@ func (_Bridge *BridgeCaller) IsDestChainEnabled(opts *bind.CallOpts, _chainId *b } -// IsDestChainEnabled is a free data retrieval call binding the contract method 0x5d0bd986. +// IsMessageSent is a free data retrieval call binding the contract method 0x60ecbdfd. // -// Solidity: function isDestChainEnabled(uint256 _chainId) view returns(bool enabled) -func (_Bridge *BridgeSession) IsDestChainEnabled(_chainId *big.Int) (bool, error) { - return _Bridge.Contract.IsDestChainEnabled(&_Bridge.CallOpts, _chainId) +// Solidity: function isMessageSent((uint128,address,uint64,uint64,address,address,address,uint256,uint256,uint256,bytes,string) message) view returns(bool) +func (_Bridge *BridgeSession) IsMessageSent(message IBridgeMessage) (bool, error) { + return _Bridge.Contract.IsMessageSent(&_Bridge.CallOpts, message) } -// IsDestChainEnabled is a free data retrieval call binding the contract method 0x5d0bd986. +// IsMessageSent is a free data retrieval call binding the contract method 0x60ecbdfd. // -// Solidity: function isDestChainEnabled(uint256 _chainId) view returns(bool enabled) -func (_Bridge *BridgeCallerSession) IsDestChainEnabled(_chainId *big.Int) (bool, error) { - return _Bridge.Contract.IsDestChainEnabled(&_Bridge.CallOpts, _chainId) +// Solidity: function isMessageSent((uint128,address,uint64,uint64,address,address,address,uint256,uint256,uint256,bytes,string) message) view returns(bool) +func (_Bridge *BridgeCallerSession) IsMessageSent(message IBridgeMessage) (bool, error) { + return _Bridge.Contract.IsMessageSent(&_Bridge.CallOpts, message) } -// IsMessageFailed is a free data retrieval call binding the contract method 0xce70f39b. +// MessageStatus is a free data retrieval call binding the contract method 0x3c6cf473. // -// Solidity: function isMessageFailed(bytes32 msgHash, uint256 destChainId, bytes proof) view returns(bool) -func (_Bridge *BridgeCaller) IsMessageFailed(opts *bind.CallOpts, msgHash [32]byte, destChainId *big.Int, proof []byte) (bool, error) { +// Solidity: function messageStatus(bytes32 msgHash) view returns(uint8) +func (_Bridge *BridgeCaller) MessageStatus(opts *bind.CallOpts, msgHash [32]byte) (uint8, error) { var out []interface{} - err := _Bridge.contract.Call(opts, &out, "isMessageFailed", msgHash, destChainId, proof) + err := _Bridge.contract.Call(opts, &out, "messageStatus", msgHash) if err != nil { - return *new(bool), err + return *new(uint8), err } - out0 := *abi.ConvertType(out[0], new(bool)).(*bool) + out0 := *abi.ConvertType(out[0], new(uint8)).(*uint8) return out0, err } -// IsMessageFailed is a free data retrieval call binding the contract method 0xce70f39b. +// MessageStatus is a free data retrieval call binding the contract method 0x3c6cf473. // -// Solidity: function isMessageFailed(bytes32 msgHash, uint256 destChainId, bytes proof) view returns(bool) -func (_Bridge *BridgeSession) IsMessageFailed(msgHash [32]byte, destChainId *big.Int, proof []byte) (bool, error) { - return _Bridge.Contract.IsMessageFailed(&_Bridge.CallOpts, msgHash, destChainId, proof) +// Solidity: function messageStatus(bytes32 msgHash) view returns(uint8) +func (_Bridge *BridgeSession) MessageStatus(msgHash [32]byte) (uint8, error) { + return _Bridge.Contract.MessageStatus(&_Bridge.CallOpts, msgHash) } -// IsMessageFailed is a free data retrieval call binding the contract method 0xce70f39b. +// MessageStatus is a free data retrieval call binding the contract method 0x3c6cf473. // -// Solidity: function isMessageFailed(bytes32 msgHash, uint256 destChainId, bytes proof) view returns(bool) -func (_Bridge *BridgeCallerSession) IsMessageFailed(msgHash [32]byte, destChainId *big.Int, proof []byte) (bool, error) { - return _Bridge.Contract.IsMessageFailed(&_Bridge.CallOpts, msgHash, destChainId, proof) +// Solidity: function messageStatus(bytes32 msgHash) view returns(uint8) +func (_Bridge *BridgeCallerSession) MessageStatus(msgHash [32]byte) (uint8, error) { + return _Bridge.Contract.MessageStatus(&_Bridge.CallOpts, msgHash) } -// IsMessageRecalled is a free data retrieval call binding the contract method 0x4f5f9772. +// NextMessageId is a free data retrieval call binding the contract method 0xeefbf17e. // -// Solidity: function isMessageRecalled(bytes32 msgHash) view returns(bool) -func (_Bridge *BridgeCaller) IsMessageRecalled(opts *bind.CallOpts, msgHash [32]byte) (bool, error) { +// Solidity: function nextMessageId() view returns(uint128) +func (_Bridge *BridgeCaller) NextMessageId(opts *bind.CallOpts) (*big.Int, error) { var out []interface{} - err := _Bridge.contract.Call(opts, &out, "isMessageRecalled", msgHash) + err := _Bridge.contract.Call(opts, &out, "nextMessageId") if err != nil { - return *new(bool), err + return *new(*big.Int), err } - out0 := *abi.ConvertType(out[0], new(bool)).(*bool) + out0 := *abi.ConvertType(out[0], new(*big.Int)).(**big.Int) return out0, err } -// IsMessageRecalled is a free data retrieval call binding the contract method 0x4f5f9772. +// NextMessageId is a free data retrieval call binding the contract method 0xeefbf17e. // -// Solidity: function isMessageRecalled(bytes32 msgHash) view returns(bool) -func (_Bridge *BridgeSession) IsMessageRecalled(msgHash [32]byte) (bool, error) { - return _Bridge.Contract.IsMessageRecalled(&_Bridge.CallOpts, msgHash) +// Solidity: function nextMessageId() view returns(uint128) +func (_Bridge *BridgeSession) NextMessageId() (*big.Int, error) { + return _Bridge.Contract.NextMessageId(&_Bridge.CallOpts) } -// IsMessageRecalled is a free data retrieval call binding the contract method 0x4f5f9772. +// NextMessageId is a free data retrieval call binding the contract method 0xeefbf17e. // -// Solidity: function isMessageRecalled(bytes32 msgHash) view returns(bool) -func (_Bridge *BridgeCallerSession) IsMessageRecalled(msgHash [32]byte) (bool, error) { - return _Bridge.Contract.IsMessageRecalled(&_Bridge.CallOpts, msgHash) +// Solidity: function nextMessageId() view returns(uint128) +func (_Bridge *BridgeCallerSession) NextMessageId() (*big.Int, error) { + return _Bridge.Contract.NextMessageId(&_Bridge.CallOpts) } -// IsMessageReceived is a free data retrieval call binding the contract method 0xa4444efd. +// Owner is a free data retrieval call binding the contract method 0x8da5cb5b. // -// Solidity: function isMessageReceived(bytes32 msgHash, uint256 srcChainId, bytes proof) view returns(bool) -func (_Bridge *BridgeCaller) IsMessageReceived(opts *bind.CallOpts, msgHash [32]byte, srcChainId *big.Int, proof []byte) (bool, error) { +// Solidity: function owner() view returns(address) +func (_Bridge *BridgeCaller) Owner(opts *bind.CallOpts) (common.Address, error) { var out []interface{} - err := _Bridge.contract.Call(opts, &out, "isMessageReceived", msgHash, srcChainId, proof) + err := _Bridge.contract.Call(opts, &out, "owner") if err != nil { - return *new(bool), err + return *new(common.Address), err } - out0 := *abi.ConvertType(out[0], new(bool)).(*bool) + out0 := *abi.ConvertType(out[0], new(common.Address)).(*common.Address) return out0, err } -// IsMessageReceived is a free data retrieval call binding the contract method 0xa4444efd. +// Owner is a free data retrieval call binding the contract method 0x8da5cb5b. // -// Solidity: function isMessageReceived(bytes32 msgHash, uint256 srcChainId, bytes proof) view returns(bool) -func (_Bridge *BridgeSession) IsMessageReceived(msgHash [32]byte, srcChainId *big.Int, proof []byte) (bool, error) { - return _Bridge.Contract.IsMessageReceived(&_Bridge.CallOpts, msgHash, srcChainId, proof) +// Solidity: function owner() view returns(address) +func (_Bridge *BridgeSession) Owner() (common.Address, error) { + return _Bridge.Contract.Owner(&_Bridge.CallOpts) } -// IsMessageReceived is a free data retrieval call binding the contract method 0xa4444efd. +// Owner is a free data retrieval call binding the contract method 0x8da5cb5b. // -// Solidity: function isMessageReceived(bytes32 msgHash, uint256 srcChainId, bytes proof) view returns(bool) -func (_Bridge *BridgeCallerSession) IsMessageReceived(msgHash [32]byte, srcChainId *big.Int, proof []byte) (bool, error) { - return _Bridge.Contract.IsMessageReceived(&_Bridge.CallOpts, msgHash, srcChainId, proof) +// Solidity: function owner() view returns(address) +func (_Bridge *BridgeCallerSession) Owner() (common.Address, error) { + return _Bridge.Contract.Owner(&_Bridge.CallOpts) } -// IsMessageSent is a free data retrieval call binding the contract method 0x540be6a3. +// Paused is a free data retrieval call binding the contract method 0x5c975abb. // -// Solidity: function isMessageSent(bytes32 msgHash) view returns(bool) -func (_Bridge *BridgeCaller) IsMessageSent(opts *bind.CallOpts, msgHash [32]byte) (bool, error) { +// Solidity: function paused() view returns(bool) +func (_Bridge *BridgeCaller) Paused(opts *bind.CallOpts) (bool, error) { var out []interface{} - err := _Bridge.contract.Call(opts, &out, "isMessageSent", msgHash) + err := _Bridge.contract.Call(opts, &out, "paused") if err != nil { return *new(bool), err @@ -499,26 +513,26 @@ func (_Bridge *BridgeCaller) IsMessageSent(opts *bind.CallOpts, msgHash [32]byte } -// IsMessageSent is a free data retrieval call binding the contract method 0x540be6a3. +// Paused is a free data retrieval call binding the contract method 0x5c975abb. // -// Solidity: function isMessageSent(bytes32 msgHash) view returns(bool) -func (_Bridge *BridgeSession) IsMessageSent(msgHash [32]byte) (bool, error) { - return _Bridge.Contract.IsMessageSent(&_Bridge.CallOpts, msgHash) +// Solidity: function paused() view returns(bool) +func (_Bridge *BridgeSession) Paused() (bool, error) { + return _Bridge.Contract.Paused(&_Bridge.CallOpts) } -// IsMessageSent is a free data retrieval call binding the contract method 0x540be6a3. +// Paused is a free data retrieval call binding the contract method 0x5c975abb. // -// Solidity: function isMessageSent(bytes32 msgHash) view returns(bool) -func (_Bridge *BridgeCallerSession) IsMessageSent(msgHash [32]byte) (bool, error) { - return _Bridge.Contract.IsMessageSent(&_Bridge.CallOpts, msgHash) +// Solidity: function paused() view returns(bool) +func (_Bridge *BridgeCallerSession) Paused() (bool, error) { + return _Bridge.Contract.Paused(&_Bridge.CallOpts) } -// Owner is a free data retrieval call binding the contract method 0x8da5cb5b. +// PendingOwner is a free data retrieval call binding the contract method 0xe30c3978. // -// Solidity: function owner() view returns(address) -func (_Bridge *BridgeCaller) Owner(opts *bind.CallOpts) (common.Address, error) { +// Solidity: function pendingOwner() view returns(address) +func (_Bridge *BridgeCaller) PendingOwner(opts *bind.CallOpts) (common.Address, error) { var out []interface{} - err := _Bridge.contract.Call(opts, &out, "owner") + err := _Bridge.contract.Call(opts, &out, "pendingOwner") if err != nil { return *new(common.Address), err @@ -530,24 +544,86 @@ func (_Bridge *BridgeCaller) Owner(opts *bind.CallOpts) (common.Address, error) } -// Owner is a free data retrieval call binding the contract method 0x8da5cb5b. +// PendingOwner is a free data retrieval call binding the contract method 0xe30c3978. // -// Solidity: function owner() view returns(address) -func (_Bridge *BridgeSession) Owner() (common.Address, error) { - return _Bridge.Contract.Owner(&_Bridge.CallOpts) +// Solidity: function pendingOwner() view returns(address) +func (_Bridge *BridgeSession) PendingOwner() (common.Address, error) { + return _Bridge.Contract.PendingOwner(&_Bridge.CallOpts) } -// Owner is a free data retrieval call binding the contract method 0x8da5cb5b. +// PendingOwner is a free data retrieval call binding the contract method 0xe30c3978. // -// Solidity: function owner() view returns(address) -func (_Bridge *BridgeCallerSession) Owner() (common.Address, error) { - return _Bridge.Contract.Owner(&_Bridge.CallOpts) +// Solidity: function pendingOwner() view returns(address) +func (_Bridge *BridgeCallerSession) PendingOwner() (common.Address, error) { + return _Bridge.Contract.PendingOwner(&_Bridge.CallOpts) +} + +// ProveMessageFailed is a free data retrieval call binding the contract method 0x625e5b7f. +// +// Solidity: function proveMessageFailed((uint128,address,uint64,uint64,address,address,address,uint256,uint256,uint256,bytes,string) message, bytes proof) view returns(bool) +func (_Bridge *BridgeCaller) ProveMessageFailed(opts *bind.CallOpts, message IBridgeMessage, proof []byte) (bool, error) { + var out []interface{} + err := _Bridge.contract.Call(opts, &out, "proveMessageFailed", message, proof) + + if err != nil { + return *new(bool), err + } + + out0 := *abi.ConvertType(out[0], new(bool)).(*bool) + + return out0, err + +} + +// ProveMessageFailed is a free data retrieval call binding the contract method 0x625e5b7f. +// +// Solidity: function proveMessageFailed((uint128,address,uint64,uint64,address,address,address,uint256,uint256,uint256,bytes,string) message, bytes proof) view returns(bool) +func (_Bridge *BridgeSession) ProveMessageFailed(message IBridgeMessage, proof []byte) (bool, error) { + return _Bridge.Contract.ProveMessageFailed(&_Bridge.CallOpts, message, proof) +} + +// ProveMessageFailed is a free data retrieval call binding the contract method 0x625e5b7f. +// +// Solidity: function proveMessageFailed((uint128,address,uint64,uint64,address,address,address,uint256,uint256,uint256,bytes,string) message, bytes proof) view returns(bool) +func (_Bridge *BridgeCallerSession) ProveMessageFailed(message IBridgeMessage, proof []byte) (bool, error) { + return _Bridge.Contract.ProveMessageFailed(&_Bridge.CallOpts, message, proof) +} + +// ProveMessageReceived is a free data retrieval call binding the contract method 0x783f8c93. +// +// Solidity: function proveMessageReceived((uint128,address,uint64,uint64,address,address,address,uint256,uint256,uint256,bytes,string) message, bytes proof) view returns(bool) +func (_Bridge *BridgeCaller) ProveMessageReceived(opts *bind.CallOpts, message IBridgeMessage, proof []byte) (bool, error) { + var out []interface{} + err := _Bridge.contract.Call(opts, &out, "proveMessageReceived", message, proof) + + if err != nil { + return *new(bool), err + } + + out0 := *abi.ConvertType(out[0], new(bool)).(*bool) + + return out0, err + +} + +// ProveMessageReceived is a free data retrieval call binding the contract method 0x783f8c93. +// +// Solidity: function proveMessageReceived((uint128,address,uint64,uint64,address,address,address,uint256,uint256,uint256,bytes,string) message, bytes proof) view returns(bool) +func (_Bridge *BridgeSession) ProveMessageReceived(message IBridgeMessage, proof []byte) (bool, error) { + return _Bridge.Contract.ProveMessageReceived(&_Bridge.CallOpts, message, proof) +} + +// ProveMessageReceived is a free data retrieval call binding the contract method 0x783f8c93. +// +// Solidity: function proveMessageReceived((uint128,address,uint64,uint64,address,address,address,uint256,uint256,uint256,bytes,string) message, bytes proof) view returns(bool) +func (_Bridge *BridgeCallerSession) ProveMessageReceived(message IBridgeMessage, proof []byte) (bool, error) { + return _Bridge.Contract.ProveMessageReceived(&_Bridge.CallOpts, message, proof) } -// Resolve is a free data retrieval call binding the contract method 0x6c6563f6. +// Resolve is a free data retrieval call binding the contract method 0x3eb6b8cf. // -// Solidity: function resolve(uint256 chainId, bytes32 name, bool allowZeroAddress) view returns(address addr) -func (_Bridge *BridgeCaller) Resolve(opts *bind.CallOpts, chainId *big.Int, name [32]byte, allowZeroAddress bool) (common.Address, error) { +// Solidity: function resolve(uint64 chainId, bytes32 name, bool allowZeroAddress) view returns(address addr) +func (_Bridge *BridgeCaller) Resolve(opts *bind.CallOpts, chainId uint64, name [32]byte, allowZeroAddress bool) (common.Address, error) { var out []interface{} err := _Bridge.contract.Call(opts, &out, "resolve", chainId, name, allowZeroAddress) @@ -561,17 +637,17 @@ func (_Bridge *BridgeCaller) Resolve(opts *bind.CallOpts, chainId *big.Int, name } -// Resolve is a free data retrieval call binding the contract method 0x6c6563f6. +// Resolve is a free data retrieval call binding the contract method 0x3eb6b8cf. // -// Solidity: function resolve(uint256 chainId, bytes32 name, bool allowZeroAddress) view returns(address addr) -func (_Bridge *BridgeSession) Resolve(chainId *big.Int, name [32]byte, allowZeroAddress bool) (common.Address, error) { +// Solidity: function resolve(uint64 chainId, bytes32 name, bool allowZeroAddress) view returns(address addr) +func (_Bridge *BridgeSession) Resolve(chainId uint64, name [32]byte, allowZeroAddress bool) (common.Address, error) { return _Bridge.Contract.Resolve(&_Bridge.CallOpts, chainId, name, allowZeroAddress) } -// Resolve is a free data retrieval call binding the contract method 0x6c6563f6. +// Resolve is a free data retrieval call binding the contract method 0x3eb6b8cf. // -// Solidity: function resolve(uint256 chainId, bytes32 name, bool allowZeroAddress) view returns(address addr) -func (_Bridge *BridgeCallerSession) Resolve(chainId *big.Int, name [32]byte, allowZeroAddress bool) (common.Address, error) { +// Solidity: function resolve(uint64 chainId, bytes32 name, bool allowZeroAddress) view returns(address addr) +func (_Bridge *BridgeCallerSession) Resolve(chainId uint64, name [32]byte, allowZeroAddress bool) (common.Address, error) { return _Bridge.Contract.Resolve(&_Bridge.CallOpts, chainId, name, allowZeroAddress) } @@ -606,6 +682,27 @@ func (_Bridge *BridgeCallerSession) Resolve0(name [32]byte, allowZeroAddress boo return _Bridge.Contract.Resolve0(&_Bridge.CallOpts, name, allowZeroAddress) } +// AcceptOwnership is a paid mutator transaction binding the contract method 0x79ba5097. +// +// Solidity: function acceptOwnership() returns() +func (_Bridge *BridgeTransactor) AcceptOwnership(opts *bind.TransactOpts) (*types.Transaction, error) { + return _Bridge.contract.Transact(opts, "acceptOwnership") +} + +// AcceptOwnership is a paid mutator transaction binding the contract method 0x79ba5097. +// +// Solidity: function acceptOwnership() returns() +func (_Bridge *BridgeSession) AcceptOwnership() (*types.Transaction, error) { + return _Bridge.Contract.AcceptOwnership(&_Bridge.TransactOpts) +} + +// AcceptOwnership is a paid mutator transaction binding the contract method 0x79ba5097. +// +// Solidity: function acceptOwnership() returns() +func (_Bridge *BridgeTransactorSession) AcceptOwnership() (*types.Transaction, error) { + return _Bridge.Contract.AcceptOwnership(&_Bridge.TransactOpts) +} + // Init is a paid mutator transaction binding the contract method 0x19ab453c. // // Solidity: function init(address _addressManager) returns() @@ -627,44 +724,65 @@ func (_Bridge *BridgeTransactorSession) Init(_addressManager common.Address) (*t return _Bridge.Contract.Init(&_Bridge.TransactOpts, _addressManager) } -// ProcessMessage is a paid mutator transaction binding the contract method 0xec9b3121. +// Pause is a paid mutator transaction binding the contract method 0x8456cb59. +// +// Solidity: function pause() returns() +func (_Bridge *BridgeTransactor) Pause(opts *bind.TransactOpts) (*types.Transaction, error) { + return _Bridge.contract.Transact(opts, "pause") +} + +// Pause is a paid mutator transaction binding the contract method 0x8456cb59. +// +// Solidity: function pause() returns() +func (_Bridge *BridgeSession) Pause() (*types.Transaction, error) { + return _Bridge.Contract.Pause(&_Bridge.TransactOpts) +} + +// Pause is a paid mutator transaction binding the contract method 0x8456cb59. // -// Solidity: function processMessage((uint256,address,uint256,uint256,address,address,address,uint256,uint256,uint256,bytes,string) message, bytes proof) returns() +// Solidity: function pause() returns() +func (_Bridge *BridgeTransactorSession) Pause() (*types.Transaction, error) { + return _Bridge.Contract.Pause(&_Bridge.TransactOpts) +} + +// ProcessMessage is a paid mutator transaction binding the contract method 0x01382408. +// +// Solidity: function processMessage((uint128,address,uint64,uint64,address,address,address,uint256,uint256,uint256,bytes,string) message, bytes proof) returns() func (_Bridge *BridgeTransactor) ProcessMessage(opts *bind.TransactOpts, message IBridgeMessage, proof []byte) (*types.Transaction, error) { return _Bridge.contract.Transact(opts, "processMessage", message, proof) } -// ProcessMessage is a paid mutator transaction binding the contract method 0xec9b3121. +// ProcessMessage is a paid mutator transaction binding the contract method 0x01382408. // -// Solidity: function processMessage((uint256,address,uint256,uint256,address,address,address,uint256,uint256,uint256,bytes,string) message, bytes proof) returns() +// Solidity: function processMessage((uint128,address,uint64,uint64,address,address,address,uint256,uint256,uint256,bytes,string) message, bytes proof) returns() func (_Bridge *BridgeSession) ProcessMessage(message IBridgeMessage, proof []byte) (*types.Transaction, error) { return _Bridge.Contract.ProcessMessage(&_Bridge.TransactOpts, message, proof) } -// ProcessMessage is a paid mutator transaction binding the contract method 0xec9b3121. +// ProcessMessage is a paid mutator transaction binding the contract method 0x01382408. // -// Solidity: function processMessage((uint256,address,uint256,uint256,address,address,address,uint256,uint256,uint256,bytes,string) message, bytes proof) returns() +// Solidity: function processMessage((uint128,address,uint64,uint64,address,address,address,uint256,uint256,uint256,bytes,string) message, bytes proof) returns() func (_Bridge *BridgeTransactorSession) ProcessMessage(message IBridgeMessage, proof []byte) (*types.Transaction, error) { return _Bridge.Contract.ProcessMessage(&_Bridge.TransactOpts, message, proof) } -// RecallMessage is a paid mutator transaction binding the contract method 0x620c23fb. +// RecallMessage is a paid mutator transaction binding the contract method 0x1a92e520. // -// Solidity: function recallMessage((uint256,address,uint256,uint256,address,address,address,uint256,uint256,uint256,bytes,string) message, bytes proof) returns() +// Solidity: function recallMessage((uint128,address,uint64,uint64,address,address,address,uint256,uint256,uint256,bytes,string) message, bytes proof) returns() func (_Bridge *BridgeTransactor) RecallMessage(opts *bind.TransactOpts, message IBridgeMessage, proof []byte) (*types.Transaction, error) { return _Bridge.contract.Transact(opts, "recallMessage", message, proof) } -// RecallMessage is a paid mutator transaction binding the contract method 0x620c23fb. +// RecallMessage is a paid mutator transaction binding the contract method 0x1a92e520. // -// Solidity: function recallMessage((uint256,address,uint256,uint256,address,address,address,uint256,uint256,uint256,bytes,string) message, bytes proof) returns() +// Solidity: function recallMessage((uint128,address,uint64,uint64,address,address,address,uint256,uint256,uint256,bytes,string) message, bytes proof) returns() func (_Bridge *BridgeSession) RecallMessage(message IBridgeMessage, proof []byte) (*types.Transaction, error) { return _Bridge.Contract.RecallMessage(&_Bridge.TransactOpts, message, proof) } -// RecallMessage is a paid mutator transaction binding the contract method 0x620c23fb. +// RecallMessage is a paid mutator transaction binding the contract method 0x1a92e520. // -// Solidity: function recallMessage((uint256,address,uint256,uint256,address,address,address,uint256,uint256,uint256,bytes,string) message, bytes proof) returns() +// Solidity: function recallMessage((uint128,address,uint64,uint64,address,address,address,uint256,uint256,uint256,bytes,string) message, bytes proof) returns() func (_Bridge *BridgeTransactorSession) RecallMessage(message IBridgeMessage, proof []byte) (*types.Transaction, error) { return _Bridge.Contract.RecallMessage(&_Bridge.TransactOpts, message, proof) } @@ -690,69 +808,48 @@ func (_Bridge *BridgeTransactorSession) RenounceOwnership() (*types.Transaction, return _Bridge.Contract.RenounceOwnership(&_Bridge.TransactOpts) } -// RetryMessage is a paid mutator transaction binding the contract method 0xf21be36f. +// RetryMessage is a paid mutator transaction binding the contract method 0xa24f721b. // -// Solidity: function retryMessage((uint256,address,uint256,uint256,address,address,address,uint256,uint256,uint256,bytes,string) message, bool isLastAttempt) returns() +// Solidity: function retryMessage((uint128,address,uint64,uint64,address,address,address,uint256,uint256,uint256,bytes,string) message, bool isLastAttempt) returns() func (_Bridge *BridgeTransactor) RetryMessage(opts *bind.TransactOpts, message IBridgeMessage, isLastAttempt bool) (*types.Transaction, error) { return _Bridge.contract.Transact(opts, "retryMessage", message, isLastAttempt) } -// RetryMessage is a paid mutator transaction binding the contract method 0xf21be36f. +// RetryMessage is a paid mutator transaction binding the contract method 0xa24f721b. // -// Solidity: function retryMessage((uint256,address,uint256,uint256,address,address,address,uint256,uint256,uint256,bytes,string) message, bool isLastAttempt) returns() +// Solidity: function retryMessage((uint128,address,uint64,uint64,address,address,address,uint256,uint256,uint256,bytes,string) message, bool isLastAttempt) returns() func (_Bridge *BridgeSession) RetryMessage(message IBridgeMessage, isLastAttempt bool) (*types.Transaction, error) { return _Bridge.Contract.RetryMessage(&_Bridge.TransactOpts, message, isLastAttempt) } -// RetryMessage is a paid mutator transaction binding the contract method 0xf21be36f. +// RetryMessage is a paid mutator transaction binding the contract method 0xa24f721b. // -// Solidity: function retryMessage((uint256,address,uint256,uint256,address,address,address,uint256,uint256,uint256,bytes,string) message, bool isLastAttempt) returns() +// Solidity: function retryMessage((uint128,address,uint64,uint64,address,address,address,uint256,uint256,uint256,bytes,string) message, bool isLastAttempt) returns() func (_Bridge *BridgeTransactorSession) RetryMessage(message IBridgeMessage, isLastAttempt bool) (*types.Transaction, error) { return _Bridge.Contract.RetryMessage(&_Bridge.TransactOpts, message, isLastAttempt) } -// SendMessage is a paid mutator transaction binding the contract method 0x4c1888bc. +// SendMessage is a paid mutator transaction binding the contract method 0x33bcd0cc. // -// Solidity: function sendMessage((uint256,address,uint256,uint256,address,address,address,uint256,uint256,uint256,bytes,string) message) payable returns(bytes32 msgHash) +// Solidity: function sendMessage((uint128,address,uint64,uint64,address,address,address,uint256,uint256,uint256,bytes,string) message) payable returns(bytes32 msgHash, (uint128,address,uint64,uint64,address,address,address,uint256,uint256,uint256,bytes,string) _message) func (_Bridge *BridgeTransactor) SendMessage(opts *bind.TransactOpts, message IBridgeMessage) (*types.Transaction, error) { return _Bridge.contract.Transact(opts, "sendMessage", message) } -// SendMessage is a paid mutator transaction binding the contract method 0x4c1888bc. +// SendMessage is a paid mutator transaction binding the contract method 0x33bcd0cc. // -// Solidity: function sendMessage((uint256,address,uint256,uint256,address,address,address,uint256,uint256,uint256,bytes,string) message) payable returns(bytes32 msgHash) +// Solidity: function sendMessage((uint128,address,uint64,uint64,address,address,address,uint256,uint256,uint256,bytes,string) message) payable returns(bytes32 msgHash, (uint128,address,uint64,uint64,address,address,address,uint256,uint256,uint256,bytes,string) _message) func (_Bridge *BridgeSession) SendMessage(message IBridgeMessage) (*types.Transaction, error) { return _Bridge.Contract.SendMessage(&_Bridge.TransactOpts, message) } -// SendMessage is a paid mutator transaction binding the contract method 0x4c1888bc. +// SendMessage is a paid mutator transaction binding the contract method 0x33bcd0cc. // -// Solidity: function sendMessage((uint256,address,uint256,uint256,address,address,address,uint256,uint256,uint256,bytes,string) message) payable returns(bytes32 msgHash) +// Solidity: function sendMessage((uint128,address,uint64,uint64,address,address,address,uint256,uint256,uint256,bytes,string) message) payable returns(bytes32 msgHash, (uint128,address,uint64,uint64,address,address,address,uint256,uint256,uint256,bytes,string) _message) func (_Bridge *BridgeTransactorSession) SendMessage(message IBridgeMessage) (*types.Transaction, error) { return _Bridge.Contract.SendMessage(&_Bridge.TransactOpts, message) } -// SetAddressManager is a paid mutator transaction binding the contract method 0x0652b57a. -// -// Solidity: function setAddressManager(address newAddressManager) returns() -func (_Bridge *BridgeTransactor) SetAddressManager(opts *bind.TransactOpts, newAddressManager common.Address) (*types.Transaction, error) { - return _Bridge.contract.Transact(opts, "setAddressManager", newAddressManager) -} - -// SetAddressManager is a paid mutator transaction binding the contract method 0x0652b57a. -// -// Solidity: function setAddressManager(address newAddressManager) returns() -func (_Bridge *BridgeSession) SetAddressManager(newAddressManager common.Address) (*types.Transaction, error) { - return _Bridge.Contract.SetAddressManager(&_Bridge.TransactOpts, newAddressManager) -} - -// SetAddressManager is a paid mutator transaction binding the contract method 0x0652b57a. -// -// Solidity: function setAddressManager(address newAddressManager) returns() -func (_Bridge *BridgeTransactorSession) SetAddressManager(newAddressManager common.Address) (*types.Transaction, error) { - return _Bridge.Contract.SetAddressManager(&_Bridge.TransactOpts, newAddressManager) -} - // TransferOwnership is a paid mutator transaction binding the contract method 0xf2fde38b. // // Solidity: function transferOwnership(address newOwner) returns() @@ -774,6 +871,27 @@ func (_Bridge *BridgeTransactorSession) TransferOwnership(newOwner common.Addres return _Bridge.Contract.TransferOwnership(&_Bridge.TransactOpts, newOwner) } +// Unpause is a paid mutator transaction binding the contract method 0x3f4ba83a. +// +// Solidity: function unpause() returns() +func (_Bridge *BridgeTransactor) Unpause(opts *bind.TransactOpts) (*types.Transaction, error) { + return _Bridge.contract.Transact(opts, "unpause") +} + +// Unpause is a paid mutator transaction binding the contract method 0x3f4ba83a. +// +// Solidity: function unpause() returns() +func (_Bridge *BridgeSession) Unpause() (*types.Transaction, error) { + return _Bridge.Contract.Unpause(&_Bridge.TransactOpts) +} + +// Unpause is a paid mutator transaction binding the contract method 0x3f4ba83a. +// +// Solidity: function unpause() returns() +func (_Bridge *BridgeTransactorSession) Unpause() (*types.Transaction, error) { + return _Bridge.Contract.Unpause(&_Bridge.TransactOpts) +} + // Receive is a paid mutator transaction binding the contract receive function. // // Solidity: receive() payable returns() @@ -795,9 +913,9 @@ func (_Bridge *BridgeTransactorSession) Receive() (*types.Transaction, error) { return _Bridge.Contract.Receive(&_Bridge.TransactOpts) } -// BridgeAddressManagerChangedIterator is returned from FilterAddressManagerChanged and is used to iterate over the raw logs and unpacked data for AddressManagerChanged events raised by the Bridge contract. -type BridgeAddressManagerChangedIterator struct { - Event *BridgeAddressManagerChanged // Event containing the contract specifics and raw log +// BridgeDestChainEnabledIterator is returned from FilterDestChainEnabled and is used to iterate over the raw logs and unpacked data for DestChainEnabled events raised by the Bridge contract. +type BridgeDestChainEnabledIterator struct { + Event *BridgeDestChainEnabled // Event containing the contract specifics and raw log contract *bind.BoundContract // Generic contract to use for unpacking event data event string // Event name to use for unpacking event data @@ -811,7 +929,7 @@ type BridgeAddressManagerChangedIterator struct { // Next advances the iterator to the subsequent event, returning whether there // are any more events found. In case of a retrieval or parsing error, false is // returned and Error() can be queried for the exact failure. -func (it *BridgeAddressManagerChangedIterator) Next() bool { +func (it *BridgeDestChainEnabledIterator) Next() bool { // If the iterator failed, stop iterating if it.fail != nil { return false @@ -820,7 +938,7 @@ func (it *BridgeAddressManagerChangedIterator) Next() bool { if it.done { select { case log := <-it.logs: - it.Event = new(BridgeAddressManagerChanged) + it.Event = new(BridgeDestChainEnabled) if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { it.fail = err return false @@ -835,7 +953,7 @@ func (it *BridgeAddressManagerChangedIterator) Next() bool { // Iterator still in progress, wait for either a data or an error event select { case log := <-it.logs: - it.Event = new(BridgeAddressManagerChanged) + it.Event = new(BridgeDestChainEnabled) if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { it.fail = err return false @@ -851,51 +969,52 @@ func (it *BridgeAddressManagerChangedIterator) Next() bool { } // Error returns any retrieval or parsing error occurred during filtering. -func (it *BridgeAddressManagerChangedIterator) Error() error { +func (it *BridgeDestChainEnabledIterator) Error() error { return it.fail } // Close terminates the iteration process, releasing any pending underlying // resources. -func (it *BridgeAddressManagerChangedIterator) Close() error { +func (it *BridgeDestChainEnabledIterator) Close() error { it.sub.Unsubscribe() return nil } -// BridgeAddressManagerChanged represents a AddressManagerChanged event raised by the Bridge contract. -type BridgeAddressManagerChanged struct { - AddressManager common.Address - Raw types.Log // Blockchain specific contextual infos +// BridgeDestChainEnabled represents a DestChainEnabled event raised by the Bridge contract. +type BridgeDestChainEnabled struct { + ChainId uint64 + Enabled bool + Raw types.Log // Blockchain specific contextual infos } -// FilterAddressManagerChanged is a free log retrieval operation binding the contract event 0x399ded90cb5ed8d89ef7e76ff4af65c373f06d3bf5d7eef55f4228e7b702a18b. +// FilterDestChainEnabled is a free log retrieval operation binding the contract event 0xacf89c9e8ba7f621aa9632bc23b65f5d4c7a0eacfb7bc5149c17a9dec05e89a4. // -// Solidity: event AddressManagerChanged(address indexed addressManager) -func (_Bridge *BridgeFilterer) FilterAddressManagerChanged(opts *bind.FilterOpts, addressManager []common.Address) (*BridgeAddressManagerChangedIterator, error) { +// Solidity: event DestChainEnabled(uint64 indexed chainId, bool enabled) +func (_Bridge *BridgeFilterer) FilterDestChainEnabled(opts *bind.FilterOpts, chainId []uint64) (*BridgeDestChainEnabledIterator, error) { - var addressManagerRule []interface{} - for _, addressManagerItem := range addressManager { - addressManagerRule = append(addressManagerRule, addressManagerItem) + var chainIdRule []interface{} + for _, chainIdItem := range chainId { + chainIdRule = append(chainIdRule, chainIdItem) } - logs, sub, err := _Bridge.contract.FilterLogs(opts, "AddressManagerChanged", addressManagerRule) + logs, sub, err := _Bridge.contract.FilterLogs(opts, "DestChainEnabled", chainIdRule) if err != nil { return nil, err } - return &BridgeAddressManagerChangedIterator{contract: _Bridge.contract, event: "AddressManagerChanged", logs: logs, sub: sub}, nil + return &BridgeDestChainEnabledIterator{contract: _Bridge.contract, event: "DestChainEnabled", logs: logs, sub: sub}, nil } -// WatchAddressManagerChanged is a free log subscription operation binding the contract event 0x399ded90cb5ed8d89ef7e76ff4af65c373f06d3bf5d7eef55f4228e7b702a18b. +// WatchDestChainEnabled is a free log subscription operation binding the contract event 0xacf89c9e8ba7f621aa9632bc23b65f5d4c7a0eacfb7bc5149c17a9dec05e89a4. // -// Solidity: event AddressManagerChanged(address indexed addressManager) -func (_Bridge *BridgeFilterer) WatchAddressManagerChanged(opts *bind.WatchOpts, sink chan<- *BridgeAddressManagerChanged, addressManager []common.Address) (event.Subscription, error) { +// Solidity: event DestChainEnabled(uint64 indexed chainId, bool enabled) +func (_Bridge *BridgeFilterer) WatchDestChainEnabled(opts *bind.WatchOpts, sink chan<- *BridgeDestChainEnabled, chainId []uint64) (event.Subscription, error) { - var addressManagerRule []interface{} - for _, addressManagerItem := range addressManager { - addressManagerRule = append(addressManagerRule, addressManagerItem) + var chainIdRule []interface{} + for _, chainIdItem := range chainId { + chainIdRule = append(chainIdRule, chainIdItem) } - logs, sub, err := _Bridge.contract.WatchLogs(opts, "AddressManagerChanged", addressManagerRule) + logs, sub, err := _Bridge.contract.WatchLogs(opts, "DestChainEnabled", chainIdRule) if err != nil { return nil, err } @@ -905,8 +1024,8 @@ func (_Bridge *BridgeFilterer) WatchAddressManagerChanged(opts *bind.WatchOpts, select { case log := <-logs: // New log arrived, parse the event and forward to the user - event := new(BridgeAddressManagerChanged) - if err := _Bridge.contract.UnpackLog(event, "AddressManagerChanged", log); err != nil { + event := new(BridgeDestChainEnabled) + if err := _Bridge.contract.UnpackLog(event, "DestChainEnabled", log); err != nil { return err } event.Raw = log @@ -927,21 +1046,21 @@ func (_Bridge *BridgeFilterer) WatchAddressManagerChanged(opts *bind.WatchOpts, }), nil } -// ParseAddressManagerChanged is a log parse operation binding the contract event 0x399ded90cb5ed8d89ef7e76ff4af65c373f06d3bf5d7eef55f4228e7b702a18b. +// ParseDestChainEnabled is a log parse operation binding the contract event 0xacf89c9e8ba7f621aa9632bc23b65f5d4c7a0eacfb7bc5149c17a9dec05e89a4. // -// Solidity: event AddressManagerChanged(address indexed addressManager) -func (_Bridge *BridgeFilterer) ParseAddressManagerChanged(log types.Log) (*BridgeAddressManagerChanged, error) { - event := new(BridgeAddressManagerChanged) - if err := _Bridge.contract.UnpackLog(event, "AddressManagerChanged", log); err != nil { +// Solidity: event DestChainEnabled(uint64 indexed chainId, bool enabled) +func (_Bridge *BridgeFilterer) ParseDestChainEnabled(log types.Log) (*BridgeDestChainEnabled, error) { + event := new(BridgeDestChainEnabled) + if err := _Bridge.contract.UnpackLog(event, "DestChainEnabled", log); err != nil { return nil, err } event.Raw = log return event, nil } -// BridgeDestChainEnabledIterator is returned from FilterDestChainEnabled and is used to iterate over the raw logs and unpacked data for DestChainEnabled events raised by the Bridge contract. -type BridgeDestChainEnabledIterator struct { - Event *BridgeDestChainEnabled // Event containing the contract specifics and raw log +// BridgeInitializedIterator is returned from FilterInitialized and is used to iterate over the raw logs and unpacked data for Initialized events raised by the Bridge contract. +type BridgeInitializedIterator struct { + Event *BridgeInitialized // Event containing the contract specifics and raw log contract *bind.BoundContract // Generic contract to use for unpacking event data event string // Event name to use for unpacking event data @@ -955,7 +1074,7 @@ type BridgeDestChainEnabledIterator struct { // Next advances the iterator to the subsequent event, returning whether there // are any more events found. In case of a retrieval or parsing error, false is // returned and Error() can be queried for the exact failure. -func (it *BridgeDestChainEnabledIterator) Next() bool { +func (it *BridgeInitializedIterator) Next() bool { // If the iterator failed, stop iterating if it.fail != nil { return false @@ -964,7 +1083,7 @@ func (it *BridgeDestChainEnabledIterator) Next() bool { if it.done { select { case log := <-it.logs: - it.Event = new(BridgeDestChainEnabled) + it.Event = new(BridgeInitialized) if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { it.fail = err return false @@ -979,7 +1098,7 @@ func (it *BridgeDestChainEnabledIterator) Next() bool { // Iterator still in progress, wait for either a data or an error event select { case log := <-it.logs: - it.Event = new(BridgeDestChainEnabled) + it.Event = new(BridgeInitialized) if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { it.fail = err return false @@ -995,52 +1114,41 @@ func (it *BridgeDestChainEnabledIterator) Next() bool { } // Error returns any retrieval or parsing error occurred during filtering. -func (it *BridgeDestChainEnabledIterator) Error() error { +func (it *BridgeInitializedIterator) Error() error { return it.fail } // Close terminates the iteration process, releasing any pending underlying // resources. -func (it *BridgeDestChainEnabledIterator) Close() error { +func (it *BridgeInitializedIterator) Close() error { it.sub.Unsubscribe() return nil } -// BridgeDestChainEnabled represents a DestChainEnabled event raised by the Bridge contract. -type BridgeDestChainEnabled struct { - ChainId *big.Int - Enabled bool +// BridgeInitialized represents a Initialized event raised by the Bridge contract. +type BridgeInitialized struct { + Version uint8 Raw types.Log // Blockchain specific contextual infos } -// FilterDestChainEnabled is a free log retrieval operation binding the contract event 0x9f391218c06d4fc365ceb15f340bb3d77306b28ac0b8d4e519aec2654794536d. +// FilterInitialized is a free log retrieval operation binding the contract event 0x7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb3847402498. // -// Solidity: event DestChainEnabled(uint256 indexed chainId, bool enabled) -func (_Bridge *BridgeFilterer) FilterDestChainEnabled(opts *bind.FilterOpts, chainId []*big.Int) (*BridgeDestChainEnabledIterator, error) { - - var chainIdRule []interface{} - for _, chainIdItem := range chainId { - chainIdRule = append(chainIdRule, chainIdItem) - } +// Solidity: event Initialized(uint8 version) +func (_Bridge *BridgeFilterer) FilterInitialized(opts *bind.FilterOpts) (*BridgeInitializedIterator, error) { - logs, sub, err := _Bridge.contract.FilterLogs(opts, "DestChainEnabled", chainIdRule) + logs, sub, err := _Bridge.contract.FilterLogs(opts, "Initialized") if err != nil { return nil, err } - return &BridgeDestChainEnabledIterator{contract: _Bridge.contract, event: "DestChainEnabled", logs: logs, sub: sub}, nil + return &BridgeInitializedIterator{contract: _Bridge.contract, event: "Initialized", logs: logs, sub: sub}, nil } -// WatchDestChainEnabled is a free log subscription operation binding the contract event 0x9f391218c06d4fc365ceb15f340bb3d77306b28ac0b8d4e519aec2654794536d. +// WatchInitialized is a free log subscription operation binding the contract event 0x7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb3847402498. // -// Solidity: event DestChainEnabled(uint256 indexed chainId, bool enabled) -func (_Bridge *BridgeFilterer) WatchDestChainEnabled(opts *bind.WatchOpts, sink chan<- *BridgeDestChainEnabled, chainId []*big.Int) (event.Subscription, error) { - - var chainIdRule []interface{} - for _, chainIdItem := range chainId { - chainIdRule = append(chainIdRule, chainIdItem) - } +// Solidity: event Initialized(uint8 version) +func (_Bridge *BridgeFilterer) WatchInitialized(opts *bind.WatchOpts, sink chan<- *BridgeInitialized) (event.Subscription, error) { - logs, sub, err := _Bridge.contract.WatchLogs(opts, "DestChainEnabled", chainIdRule) + logs, sub, err := _Bridge.contract.WatchLogs(opts, "Initialized") if err != nil { return nil, err } @@ -1050,8 +1158,8 @@ func (_Bridge *BridgeFilterer) WatchDestChainEnabled(opts *bind.WatchOpts, sink select { case log := <-logs: // New log arrived, parse the event and forward to the user - event := new(BridgeDestChainEnabled) - if err := _Bridge.contract.UnpackLog(event, "DestChainEnabled", log); err != nil { + event := new(BridgeInitialized) + if err := _Bridge.contract.UnpackLog(event, "Initialized", log); err != nil { return err } event.Raw = log @@ -1072,21 +1180,21 @@ func (_Bridge *BridgeFilterer) WatchDestChainEnabled(opts *bind.WatchOpts, sink }), nil } -// ParseDestChainEnabled is a log parse operation binding the contract event 0x9f391218c06d4fc365ceb15f340bb3d77306b28ac0b8d4e519aec2654794536d. +// ParseInitialized is a log parse operation binding the contract event 0x7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb3847402498. // -// Solidity: event DestChainEnabled(uint256 indexed chainId, bool enabled) -func (_Bridge *BridgeFilterer) ParseDestChainEnabled(log types.Log) (*BridgeDestChainEnabled, error) { - event := new(BridgeDestChainEnabled) - if err := _Bridge.contract.UnpackLog(event, "DestChainEnabled", log); err != nil { +// Solidity: event Initialized(uint8 version) +func (_Bridge *BridgeFilterer) ParseInitialized(log types.Log) (*BridgeInitialized, error) { + event := new(BridgeInitialized) + if err := _Bridge.contract.UnpackLog(event, "Initialized", log); err != nil { return nil, err } event.Raw = log return event, nil } -// BridgeInitializedIterator is returned from FilterInitialized and is used to iterate over the raw logs and unpacked data for Initialized events raised by the Bridge contract. -type BridgeInitializedIterator struct { - Event *BridgeInitialized // Event containing the contract specifics and raw log +// BridgeMessageRecalledIterator is returned from FilterMessageRecalled and is used to iterate over the raw logs and unpacked data for MessageRecalled events raised by the Bridge contract. +type BridgeMessageRecalledIterator struct { + Event *BridgeMessageRecalled // Event containing the contract specifics and raw log contract *bind.BoundContract // Generic contract to use for unpacking event data event string // Event name to use for unpacking event data @@ -1100,7 +1208,7 @@ type BridgeInitializedIterator struct { // Next advances the iterator to the subsequent event, returning whether there // are any more events found. In case of a retrieval or parsing error, false is // returned and Error() can be queried for the exact failure. -func (it *BridgeInitializedIterator) Next() bool { +func (it *BridgeMessageRecalledIterator) Next() bool { // If the iterator failed, stop iterating if it.fail != nil { return false @@ -1109,7 +1217,7 @@ func (it *BridgeInitializedIterator) Next() bool { if it.done { select { case log := <-it.logs: - it.Event = new(BridgeInitialized) + it.Event = new(BridgeMessageRecalled) if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { it.fail = err return false @@ -1124,7 +1232,7 @@ func (it *BridgeInitializedIterator) Next() bool { // Iterator still in progress, wait for either a data or an error event select { case log := <-it.logs: - it.Event = new(BridgeInitialized) + it.Event = new(BridgeMessageRecalled) if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { it.fail = err return false @@ -1140,158 +1248,24 @@ func (it *BridgeInitializedIterator) Next() bool { } // Error returns any retrieval or parsing error occurred during filtering. -func (it *BridgeInitializedIterator) Error() error { +func (it *BridgeMessageRecalledIterator) Error() error { return it.fail } // Close terminates the iteration process, releasing any pending underlying // resources. -func (it *BridgeInitializedIterator) Close() error { +func (it *BridgeMessageRecalledIterator) Close() error { it.sub.Unsubscribe() return nil } -// BridgeInitialized represents a Initialized event raised by the Bridge contract. -type BridgeInitialized struct { - Version uint8 +// BridgeMessageRecalled represents a MessageRecalled event raised by the Bridge contract. +type BridgeMessageRecalled struct { + MsgHash [32]byte Raw types.Log // Blockchain specific contextual infos } -// FilterInitialized is a free log retrieval operation binding the contract event 0x7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb3847402498. -// -// Solidity: event Initialized(uint8 version) -func (_Bridge *BridgeFilterer) FilterInitialized(opts *bind.FilterOpts) (*BridgeInitializedIterator, error) { - - logs, sub, err := _Bridge.contract.FilterLogs(opts, "Initialized") - if err != nil { - return nil, err - } - return &BridgeInitializedIterator{contract: _Bridge.contract, event: "Initialized", logs: logs, sub: sub}, nil -} - -// WatchInitialized is a free log subscription operation binding the contract event 0x7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb3847402498. -// -// Solidity: event Initialized(uint8 version) -func (_Bridge *BridgeFilterer) WatchInitialized(opts *bind.WatchOpts, sink chan<- *BridgeInitialized) (event.Subscription, error) { - - logs, sub, err := _Bridge.contract.WatchLogs(opts, "Initialized") - if err != nil { - return nil, err - } - return event.NewSubscription(func(quit <-chan struct{}) error { - defer sub.Unsubscribe() - for { - select { - case log := <-logs: - // New log arrived, parse the event and forward to the user - event := new(BridgeInitialized) - if err := _Bridge.contract.UnpackLog(event, "Initialized", log); err != nil { - return err - } - event.Raw = log - - select { - case sink <- event: - case err := <-sub.Err(): - return err - case <-quit: - return nil - } - case err := <-sub.Err(): - return err - case <-quit: - return nil - } - } - }), nil -} - -// ParseInitialized is a log parse operation binding the contract event 0x7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb3847402498. -// -// Solidity: event Initialized(uint8 version) -func (_Bridge *BridgeFilterer) ParseInitialized(log types.Log) (*BridgeInitialized, error) { - event := new(BridgeInitialized) - if err := _Bridge.contract.UnpackLog(event, "Initialized", log); err != nil { - return nil, err - } - event.Raw = log - return event, nil -} - -// BridgeMessageRecalledIterator is returned from FilterMessageRecalled and is used to iterate over the raw logs and unpacked data for MessageRecalled events raised by the Bridge contract. -type BridgeMessageRecalledIterator struct { - Event *BridgeMessageRecalled // Event containing the contract specifics and raw log - - contract *bind.BoundContract // Generic contract to use for unpacking event data - event string // Event name to use for unpacking event data - - logs chan types.Log // Log channel receiving the found contract events - sub ethereum.Subscription // Subscription for errors, completion and termination - done bool // Whether the subscription completed delivering logs - fail error // Occurred error to stop iteration -} - -// Next advances the iterator to the subsequent event, returning whether there -// are any more events found. In case of a retrieval or parsing error, false is -// returned and Error() can be queried for the exact failure. -func (it *BridgeMessageRecalledIterator) Next() bool { - // If the iterator failed, stop iterating - if it.fail != nil { - return false - } - // If the iterator completed, deliver directly whatever's available - if it.done { - select { - case log := <-it.logs: - it.Event = new(BridgeMessageRecalled) - if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { - it.fail = err - return false - } - it.Event.Raw = log - return true - - default: - return false - } - } - // Iterator still in progress, wait for either a data or an error event - select { - case log := <-it.logs: - it.Event = new(BridgeMessageRecalled) - if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { - it.fail = err - return false - } - it.Event.Raw = log - return true - - case err := <-it.sub.Err(): - it.done = true - it.fail = err - return it.Next() - } -} - -// Error returns any retrieval or parsing error occurred during filtering. -func (it *BridgeMessageRecalledIterator) Error() error { - return it.fail -} - -// Close terminates the iteration process, releasing any pending underlying -// resources. -func (it *BridgeMessageRecalledIterator) Close() error { - it.sub.Unsubscribe() - return nil -} - -// BridgeMessageRecalled represents a MessageRecalled event raised by the Bridge contract. -type BridgeMessageRecalled struct { - MsgHash [32]byte - Raw types.Log // Blockchain specific contextual infos -} - -// FilterMessageRecalled is a free log retrieval operation binding the contract event 0xc6fbc1fa0145a394c9c414b2ae7bd634eb50dd888938bcd75692ae427b680fa2. +// FilterMessageRecalled is a free log retrieval operation binding the contract event 0xc6fbc1fa0145a394c9c414b2ae7bd634eb50dd888938bcd75692ae427b680fa2. // // Solidity: event MessageRecalled(bytes32 indexed msgHash) func (_Bridge *BridgeFilterer) FilterMessageRecalled(opts *bind.FilterOpts, msgHash [][32]byte) (*BridgeMessageRecalledIterator, error) { @@ -1362,150 +1336,6 @@ func (_Bridge *BridgeFilterer) ParseMessageRecalled(log types.Log) (*BridgeMessa return event, nil } -// BridgeMessageRecalled0Iterator is returned from FilterMessageRecalled0 and is used to iterate over the raw logs and unpacked data for MessageRecalled0 events raised by the Bridge contract. -type BridgeMessageRecalled0Iterator struct { - Event *BridgeMessageRecalled0 // Event containing the contract specifics and raw log - - contract *bind.BoundContract // Generic contract to use for unpacking event data - event string // Event name to use for unpacking event data - - logs chan types.Log // Log channel receiving the found contract events - sub ethereum.Subscription // Subscription for errors, completion and termination - done bool // Whether the subscription completed delivering logs - fail error // Occurred error to stop iteration -} - -// Next advances the iterator to the subsequent event, returning whether there -// are any more events found. In case of a retrieval or parsing error, false is -// returned and Error() can be queried for the exact failure. -func (it *BridgeMessageRecalled0Iterator) Next() bool { - // If the iterator failed, stop iterating - if it.fail != nil { - return false - } - // If the iterator completed, deliver directly whatever's available - if it.done { - select { - case log := <-it.logs: - it.Event = new(BridgeMessageRecalled0) - if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { - it.fail = err - return false - } - it.Event.Raw = log - return true - - default: - return false - } - } - // Iterator still in progress, wait for either a data or an error event - select { - case log := <-it.logs: - it.Event = new(BridgeMessageRecalled0) - if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { - it.fail = err - return false - } - it.Event.Raw = log - return true - - case err := <-it.sub.Err(): - it.done = true - it.fail = err - return it.Next() - } -} - -// Error returns any retrieval or parsing error occurred during filtering. -func (it *BridgeMessageRecalled0Iterator) Error() error { - return it.fail -} - -// Close terminates the iteration process, releasing any pending underlying -// resources. -func (it *BridgeMessageRecalled0Iterator) Close() error { - it.sub.Unsubscribe() - return nil -} - -// BridgeMessageRecalled0 represents a MessageRecalled0 event raised by the Bridge contract. -type BridgeMessageRecalled0 struct { - MsgHash [32]byte - Raw types.Log // Blockchain specific contextual infos -} - -// FilterMessageRecalled0 is a free log retrieval operation binding the contract event 0xc6fbc1fa0145a394c9c414b2ae7bd634eb50dd888938bcd75692ae427b680fa2. -// -// Solidity: event MessageRecalled(bytes32 indexed msgHash) -func (_Bridge *BridgeFilterer) FilterMessageRecalled0(opts *bind.FilterOpts, msgHash [][32]byte) (*BridgeMessageRecalled0Iterator, error) { - - var msgHashRule []interface{} - for _, msgHashItem := range msgHash { - msgHashRule = append(msgHashRule, msgHashItem) - } - - logs, sub, err := _Bridge.contract.FilterLogs(opts, "MessageRecalled0", msgHashRule) - if err != nil { - return nil, err - } - return &BridgeMessageRecalled0Iterator{contract: _Bridge.contract, event: "MessageRecalled0", logs: logs, sub: sub}, nil -} - -// WatchMessageRecalled0 is a free log subscription operation binding the contract event 0xc6fbc1fa0145a394c9c414b2ae7bd634eb50dd888938bcd75692ae427b680fa2. -// -// Solidity: event MessageRecalled(bytes32 indexed msgHash) -func (_Bridge *BridgeFilterer) WatchMessageRecalled0(opts *bind.WatchOpts, sink chan<- *BridgeMessageRecalled0, msgHash [][32]byte) (event.Subscription, error) { - - var msgHashRule []interface{} - for _, msgHashItem := range msgHash { - msgHashRule = append(msgHashRule, msgHashItem) - } - - logs, sub, err := _Bridge.contract.WatchLogs(opts, "MessageRecalled0", msgHashRule) - if err != nil { - return nil, err - } - return event.NewSubscription(func(quit <-chan struct{}) error { - defer sub.Unsubscribe() - for { - select { - case log := <-logs: - // New log arrived, parse the event and forward to the user - event := new(BridgeMessageRecalled0) - if err := _Bridge.contract.UnpackLog(event, "MessageRecalled0", log); err != nil { - return err - } - event.Raw = log - - select { - case sink <- event: - case err := <-sub.Err(): - return err - case <-quit: - return nil - } - case err := <-sub.Err(): - return err - case <-quit: - return nil - } - } - }), nil -} - -// ParseMessageRecalled0 is a log parse operation binding the contract event 0xc6fbc1fa0145a394c9c414b2ae7bd634eb50dd888938bcd75692ae427b680fa2. -// -// Solidity: event MessageRecalled(bytes32 indexed msgHash) -func (_Bridge *BridgeFilterer) ParseMessageRecalled0(log types.Log) (*BridgeMessageRecalled0, error) { - event := new(BridgeMessageRecalled0) - if err := _Bridge.contract.UnpackLog(event, "MessageRecalled0", log); err != nil { - return nil, err - } - event.Raw = log - return event, nil -} - // BridgeMessageSentIterator is returned from FilterMessageSent and is used to iterate over the raw logs and unpacked data for MessageSent events raised by the Bridge contract. type BridgeMessageSentIterator struct { Event *BridgeMessageSent // Event containing the contract specifics and raw log @@ -1546,152 +1376,7 @@ func (it *BridgeMessageSentIterator) Next() bool { // Iterator still in progress, wait for either a data or an error event select { case log := <-it.logs: - it.Event = new(BridgeMessageSent) - if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { - it.fail = err - return false - } - it.Event.Raw = log - return true - - case err := <-it.sub.Err(): - it.done = true - it.fail = err - return it.Next() - } -} - -// Error returns any retrieval or parsing error occurred during filtering. -func (it *BridgeMessageSentIterator) Error() error { - return it.fail -} - -// Close terminates the iteration process, releasing any pending underlying -// resources. -func (it *BridgeMessageSentIterator) Close() error { - it.sub.Unsubscribe() - return nil -} - -// BridgeMessageSent represents a MessageSent event raised by the Bridge contract. -type BridgeMessageSent struct { - MsgHash [32]byte - Message IBridgeMessage - Raw types.Log // Blockchain specific contextual infos -} - -// FilterMessageSent is a free log retrieval operation binding the contract event 0x238646a410b383b664b8d2fe57d2895c1ecd3464a3159cae73a93a9f21a43355. -// -// Solidity: event MessageSent(bytes32 indexed msgHash, (uint256,address,uint256,uint256,address,address,address,uint256,uint256,uint256,bytes,string) message) -func (_Bridge *BridgeFilterer) FilterMessageSent(opts *bind.FilterOpts, msgHash [][32]byte) (*BridgeMessageSentIterator, error) { - - var msgHashRule []interface{} - for _, msgHashItem := range msgHash { - msgHashRule = append(msgHashRule, msgHashItem) - } - - logs, sub, err := _Bridge.contract.FilterLogs(opts, "MessageSent", msgHashRule) - if err != nil { - return nil, err - } - return &BridgeMessageSentIterator{contract: _Bridge.contract, event: "MessageSent", logs: logs, sub: sub}, nil -} - -// WatchMessageSent is a free log subscription operation binding the contract event 0x238646a410b383b664b8d2fe57d2895c1ecd3464a3159cae73a93a9f21a43355. -// -// Solidity: event MessageSent(bytes32 indexed msgHash, (uint256,address,uint256,uint256,address,address,address,uint256,uint256,uint256,bytes,string) message) -func (_Bridge *BridgeFilterer) WatchMessageSent(opts *bind.WatchOpts, sink chan<- *BridgeMessageSent, msgHash [][32]byte) (event.Subscription, error) { - - var msgHashRule []interface{} - for _, msgHashItem := range msgHash { - msgHashRule = append(msgHashRule, msgHashItem) - } - - logs, sub, err := _Bridge.contract.WatchLogs(opts, "MessageSent", msgHashRule) - if err != nil { - return nil, err - } - return event.NewSubscription(func(quit <-chan struct{}) error { - defer sub.Unsubscribe() - for { - select { - case log := <-logs: - // New log arrived, parse the event and forward to the user - event := new(BridgeMessageSent) - if err := _Bridge.contract.UnpackLog(event, "MessageSent", log); err != nil { - return err - } - event.Raw = log - - select { - case sink <- event: - case err := <-sub.Err(): - return err - case <-quit: - return nil - } - case err := <-sub.Err(): - return err - case <-quit: - return nil - } - } - }), nil -} - -// ParseMessageSent is a log parse operation binding the contract event 0x238646a410b383b664b8d2fe57d2895c1ecd3464a3159cae73a93a9f21a43355. -// -// Solidity: event MessageSent(bytes32 indexed msgHash, (uint256,address,uint256,uint256,address,address,address,uint256,uint256,uint256,bytes,string) message) -func (_Bridge *BridgeFilterer) ParseMessageSent(log types.Log) (*BridgeMessageSent, error) { - event := new(BridgeMessageSent) - if err := _Bridge.contract.UnpackLog(event, "MessageSent", log); err != nil { - return nil, err - } - event.Raw = log - return event, nil -} - -// BridgeMessageSent0Iterator is returned from FilterMessageSent0 and is used to iterate over the raw logs and unpacked data for MessageSent0 events raised by the Bridge contract. -type BridgeMessageSent0Iterator struct { - Event *BridgeMessageSent0 // Event containing the contract specifics and raw log - - contract *bind.BoundContract // Generic contract to use for unpacking event data - event string // Event name to use for unpacking event data - - logs chan types.Log // Log channel receiving the found contract events - sub ethereum.Subscription // Subscription for errors, completion and termination - done bool // Whether the subscription completed delivering logs - fail error // Occurred error to stop iteration -} - -// Next advances the iterator to the subsequent event, returning whether there -// are any more events found. In case of a retrieval or parsing error, false is -// returned and Error() can be queried for the exact failure. -func (it *BridgeMessageSent0Iterator) Next() bool { - // If the iterator failed, stop iterating - if it.fail != nil { - return false - } - // If the iterator completed, deliver directly whatever's available - if it.done { - select { - case log := <-it.logs: - it.Event = new(BridgeMessageSent0) - if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { - it.fail = err - return false - } - it.Event.Raw = log - return true - - default: - return false - } - } - // Iterator still in progress, wait for either a data or an error event - select { - case log := <-it.logs: - it.Event = new(BridgeMessageSent0) + it.Event = new(BridgeMessageSent) if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { it.fail = err return false @@ -1707,52 +1392,52 @@ func (it *BridgeMessageSent0Iterator) Next() bool { } // Error returns any retrieval or parsing error occurred during filtering. -func (it *BridgeMessageSent0Iterator) Error() error { +func (it *BridgeMessageSentIterator) Error() error { return it.fail } // Close terminates the iteration process, releasing any pending underlying // resources. -func (it *BridgeMessageSent0Iterator) Close() error { +func (it *BridgeMessageSentIterator) Close() error { it.sub.Unsubscribe() return nil } -// BridgeMessageSent0 represents a MessageSent0 event raised by the Bridge contract. -type BridgeMessageSent0 struct { +// BridgeMessageSent represents a MessageSent event raised by the Bridge contract. +type BridgeMessageSent struct { MsgHash [32]byte Message IBridgeMessage Raw types.Log // Blockchain specific contextual infos } -// FilterMessageSent0 is a free log retrieval operation binding the contract event 0x238646a410b383b664b8d2fe57d2895c1ecd3464a3159cae73a93a9f21a43355. +// FilterMessageSent is a free log retrieval operation binding the contract event 0x3406baf0dfd13f7f0ce1d077c461a35b763927e1438d49749442de2eb42148ba. // -// Solidity: event MessageSent(bytes32 indexed msgHash, (uint256,address,uint256,uint256,address,address,address,uint256,uint256,uint256,bytes,string) message) -func (_Bridge *BridgeFilterer) FilterMessageSent0(opts *bind.FilterOpts, msgHash [][32]byte) (*BridgeMessageSent0Iterator, error) { +// Solidity: event MessageSent(bytes32 indexed msgHash, (uint128,address,uint64,uint64,address,address,address,uint256,uint256,uint256,bytes,string) message) +func (_Bridge *BridgeFilterer) FilterMessageSent(opts *bind.FilterOpts, msgHash [][32]byte) (*BridgeMessageSentIterator, error) { var msgHashRule []interface{} for _, msgHashItem := range msgHash { msgHashRule = append(msgHashRule, msgHashItem) } - logs, sub, err := _Bridge.contract.FilterLogs(opts, "MessageSent0", msgHashRule) + logs, sub, err := _Bridge.contract.FilterLogs(opts, "MessageSent", msgHashRule) if err != nil { return nil, err } - return &BridgeMessageSent0Iterator{contract: _Bridge.contract, event: "MessageSent0", logs: logs, sub: sub}, nil + return &BridgeMessageSentIterator{contract: _Bridge.contract, event: "MessageSent", logs: logs, sub: sub}, nil } -// WatchMessageSent0 is a free log subscription operation binding the contract event 0x238646a410b383b664b8d2fe57d2895c1ecd3464a3159cae73a93a9f21a43355. +// WatchMessageSent is a free log subscription operation binding the contract event 0x3406baf0dfd13f7f0ce1d077c461a35b763927e1438d49749442de2eb42148ba. // -// Solidity: event MessageSent(bytes32 indexed msgHash, (uint256,address,uint256,uint256,address,address,address,uint256,uint256,uint256,bytes,string) message) -func (_Bridge *BridgeFilterer) WatchMessageSent0(opts *bind.WatchOpts, sink chan<- *BridgeMessageSent0, msgHash [][32]byte) (event.Subscription, error) { +// Solidity: event MessageSent(bytes32 indexed msgHash, (uint128,address,uint64,uint64,address,address,address,uint256,uint256,uint256,bytes,string) message) +func (_Bridge *BridgeFilterer) WatchMessageSent(opts *bind.WatchOpts, sink chan<- *BridgeMessageSent, msgHash [][32]byte) (event.Subscription, error) { var msgHashRule []interface{} for _, msgHashItem := range msgHash { msgHashRule = append(msgHashRule, msgHashItem) } - logs, sub, err := _Bridge.contract.WatchLogs(opts, "MessageSent0", msgHashRule) + logs, sub, err := _Bridge.contract.WatchLogs(opts, "MessageSent", msgHashRule) if err != nil { return nil, err } @@ -1762,8 +1447,8 @@ func (_Bridge *BridgeFilterer) WatchMessageSent0(opts *bind.WatchOpts, sink chan select { case log := <-logs: // New log arrived, parse the event and forward to the user - event := new(BridgeMessageSent0) - if err := _Bridge.contract.UnpackLog(event, "MessageSent0", log); err != nil { + event := new(BridgeMessageSent) + if err := _Bridge.contract.UnpackLog(event, "MessageSent", log); err != nil { return err } event.Raw = log @@ -1784,12 +1469,12 @@ func (_Bridge *BridgeFilterer) WatchMessageSent0(opts *bind.WatchOpts, sink chan }), nil } -// ParseMessageSent0 is a log parse operation binding the contract event 0x238646a410b383b664b8d2fe57d2895c1ecd3464a3159cae73a93a9f21a43355. +// ParseMessageSent is a log parse operation binding the contract event 0x3406baf0dfd13f7f0ce1d077c461a35b763927e1438d49749442de2eb42148ba. // -// Solidity: event MessageSent(bytes32 indexed msgHash, (uint256,address,uint256,uint256,address,address,address,uint256,uint256,uint256,bytes,string) message) -func (_Bridge *BridgeFilterer) ParseMessageSent0(log types.Log) (*BridgeMessageSent0, error) { - event := new(BridgeMessageSent0) - if err := _Bridge.contract.UnpackLog(event, "MessageSent0", log); err != nil { +// Solidity: event MessageSent(bytes32 indexed msgHash, (uint128,address,uint64,uint64,address,address,address,uint256,uint256,uint256,bytes,string) message) +func (_Bridge *BridgeFilterer) ParseMessageSent(log types.Log) (*BridgeMessageSent, error) { + event := new(BridgeMessageSent) + if err := _Bridge.contract.UnpackLog(event, "MessageSent", log); err != nil { return nil, err } event.Raw = log @@ -1865,15 +1550,14 @@ func (it *BridgeMessageStatusChangedIterator) Close() error { // BridgeMessageStatusChanged represents a MessageStatusChanged event raised by the Bridge contract. type BridgeMessageStatusChanged struct { - MsgHash [32]byte - Status uint8 - Transactor common.Address - Raw types.Log // Blockchain specific contextual infos + MsgHash [32]byte + Status uint8 + Raw types.Log // Blockchain specific contextual infos } -// FilterMessageStatusChanged is a free log retrieval operation binding the contract event 0x0af4d5247f6a4028d6699afb62871a76b398da1d1a626c8a9b90e0bd5f54c73c. +// FilterMessageStatusChanged is a free log retrieval operation binding the contract event 0x6c51882bc2ed67617f77a1e9b9a25d2caad8448647ecb093b357a603b2575634. // -// Solidity: event MessageStatusChanged(bytes32 indexed msgHash, uint8 status, address transactor) +// Solidity: event MessageStatusChanged(bytes32 indexed msgHash, uint8 status) func (_Bridge *BridgeFilterer) FilterMessageStatusChanged(opts *bind.FilterOpts, msgHash [][32]byte) (*BridgeMessageStatusChangedIterator, error) { var msgHashRule []interface{} @@ -1888,9 +1572,9 @@ func (_Bridge *BridgeFilterer) FilterMessageStatusChanged(opts *bind.FilterOpts, return &BridgeMessageStatusChangedIterator{contract: _Bridge.contract, event: "MessageStatusChanged", logs: logs, sub: sub}, nil } -// WatchMessageStatusChanged is a free log subscription operation binding the contract event 0x0af4d5247f6a4028d6699afb62871a76b398da1d1a626c8a9b90e0bd5f54c73c. +// WatchMessageStatusChanged is a free log subscription operation binding the contract event 0x6c51882bc2ed67617f77a1e9b9a25d2caad8448647ecb093b357a603b2575634. // -// Solidity: event MessageStatusChanged(bytes32 indexed msgHash, uint8 status, address transactor) +// Solidity: event MessageStatusChanged(bytes32 indexed msgHash, uint8 status) func (_Bridge *BridgeFilterer) WatchMessageStatusChanged(opts *bind.WatchOpts, sink chan<- *BridgeMessageStatusChanged, msgHash [][32]byte) (event.Subscription, error) { var msgHashRule []interface{} @@ -1930,9 +1614,9 @@ func (_Bridge *BridgeFilterer) WatchMessageStatusChanged(opts *bind.WatchOpts, s }), nil } -// ParseMessageStatusChanged is a log parse operation binding the contract event 0x0af4d5247f6a4028d6699afb62871a76b398da1d1a626c8a9b90e0bd5f54c73c. +// ParseMessageStatusChanged is a log parse operation binding the contract event 0x6c51882bc2ed67617f77a1e9b9a25d2caad8448647ecb093b357a603b2575634. // -// Solidity: event MessageStatusChanged(bytes32 indexed msgHash, uint8 status, address transactor) +// Solidity: event MessageStatusChanged(bytes32 indexed msgHash, uint8 status) func (_Bridge *BridgeFilterer) ParseMessageStatusChanged(log types.Log) (*BridgeMessageStatusChanged, error) { event := new(BridgeMessageStatusChanged) if err := _Bridge.contract.UnpackLog(event, "MessageStatusChanged", log); err != nil { @@ -1942,9 +1626,9 @@ func (_Bridge *BridgeFilterer) ParseMessageStatusChanged(log types.Log) (*Bridge return event, nil } -// BridgeMessageStatusChanged0Iterator is returned from FilterMessageStatusChanged0 and is used to iterate over the raw logs and unpacked data for MessageStatusChanged0 events raised by the Bridge contract. -type BridgeMessageStatusChanged0Iterator struct { - Event *BridgeMessageStatusChanged0 // Event containing the contract specifics and raw log +// BridgeOwnershipTransferStartedIterator is returned from FilterOwnershipTransferStarted and is used to iterate over the raw logs and unpacked data for OwnershipTransferStarted events raised by the Bridge contract. +type BridgeOwnershipTransferStartedIterator struct { + Event *BridgeOwnershipTransferStarted // Event containing the contract specifics and raw log contract *bind.BoundContract // Generic contract to use for unpacking event data event string // Event name to use for unpacking event data @@ -1958,7 +1642,7 @@ type BridgeMessageStatusChanged0Iterator struct { // Next advances the iterator to the subsequent event, returning whether there // are any more events found. In case of a retrieval or parsing error, false is // returned and Error() can be queried for the exact failure. -func (it *BridgeMessageStatusChanged0Iterator) Next() bool { +func (it *BridgeOwnershipTransferStartedIterator) Next() bool { // If the iterator failed, stop iterating if it.fail != nil { return false @@ -1967,7 +1651,7 @@ func (it *BridgeMessageStatusChanged0Iterator) Next() bool { if it.done { select { case log := <-it.logs: - it.Event = new(BridgeMessageStatusChanged0) + it.Event = new(BridgeOwnershipTransferStarted) if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { it.fail = err return false @@ -1982,7 +1666,7 @@ func (it *BridgeMessageStatusChanged0Iterator) Next() bool { // Iterator still in progress, wait for either a data or an error event select { case log := <-it.logs: - it.Event = new(BridgeMessageStatusChanged0) + it.Event = new(BridgeOwnershipTransferStarted) if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { it.fail = err return false @@ -1998,53 +1682,60 @@ func (it *BridgeMessageStatusChanged0Iterator) Next() bool { } // Error returns any retrieval or parsing error occurred during filtering. -func (it *BridgeMessageStatusChanged0Iterator) Error() error { +func (it *BridgeOwnershipTransferStartedIterator) Error() error { return it.fail } // Close terminates the iteration process, releasing any pending underlying // resources. -func (it *BridgeMessageStatusChanged0Iterator) Close() error { +func (it *BridgeOwnershipTransferStartedIterator) Close() error { it.sub.Unsubscribe() return nil } -// BridgeMessageStatusChanged0 represents a MessageStatusChanged0 event raised by the Bridge contract. -type BridgeMessageStatusChanged0 struct { - MsgHash [32]byte - Status uint8 - Transactor common.Address - Raw types.Log // Blockchain specific contextual infos +// BridgeOwnershipTransferStarted represents a OwnershipTransferStarted event raised by the Bridge contract. +type BridgeOwnershipTransferStarted struct { + PreviousOwner common.Address + NewOwner common.Address + Raw types.Log // Blockchain specific contextual infos } -// FilterMessageStatusChanged0 is a free log retrieval operation binding the contract event 0x0af4d5247f6a4028d6699afb62871a76b398da1d1a626c8a9b90e0bd5f54c73c. +// FilterOwnershipTransferStarted is a free log retrieval operation binding the contract event 0x38d16b8cac22d99fc7c124b9cd0de2d3fa1faef420bfe791d8c362d765e22700. // -// Solidity: event MessageStatusChanged(bytes32 indexed msgHash, uint8 status, address transactor) -func (_Bridge *BridgeFilterer) FilterMessageStatusChanged0(opts *bind.FilterOpts, msgHash [][32]byte) (*BridgeMessageStatusChanged0Iterator, error) { +// Solidity: event OwnershipTransferStarted(address indexed previousOwner, address indexed newOwner) +func (_Bridge *BridgeFilterer) FilterOwnershipTransferStarted(opts *bind.FilterOpts, previousOwner []common.Address, newOwner []common.Address) (*BridgeOwnershipTransferStartedIterator, error) { - var msgHashRule []interface{} - for _, msgHashItem := range msgHash { - msgHashRule = append(msgHashRule, msgHashItem) + var previousOwnerRule []interface{} + for _, previousOwnerItem := range previousOwner { + previousOwnerRule = append(previousOwnerRule, previousOwnerItem) + } + var newOwnerRule []interface{} + for _, newOwnerItem := range newOwner { + newOwnerRule = append(newOwnerRule, newOwnerItem) } - logs, sub, err := _Bridge.contract.FilterLogs(opts, "MessageStatusChanged0", msgHashRule) + logs, sub, err := _Bridge.contract.FilterLogs(opts, "OwnershipTransferStarted", previousOwnerRule, newOwnerRule) if err != nil { return nil, err } - return &BridgeMessageStatusChanged0Iterator{contract: _Bridge.contract, event: "MessageStatusChanged0", logs: logs, sub: sub}, nil + return &BridgeOwnershipTransferStartedIterator{contract: _Bridge.contract, event: "OwnershipTransferStarted", logs: logs, sub: sub}, nil } -// WatchMessageStatusChanged0 is a free log subscription operation binding the contract event 0x0af4d5247f6a4028d6699afb62871a76b398da1d1a626c8a9b90e0bd5f54c73c. +// WatchOwnershipTransferStarted is a free log subscription operation binding the contract event 0x38d16b8cac22d99fc7c124b9cd0de2d3fa1faef420bfe791d8c362d765e22700. // -// Solidity: event MessageStatusChanged(bytes32 indexed msgHash, uint8 status, address transactor) -func (_Bridge *BridgeFilterer) WatchMessageStatusChanged0(opts *bind.WatchOpts, sink chan<- *BridgeMessageStatusChanged0, msgHash [][32]byte) (event.Subscription, error) { +// Solidity: event OwnershipTransferStarted(address indexed previousOwner, address indexed newOwner) +func (_Bridge *BridgeFilterer) WatchOwnershipTransferStarted(opts *bind.WatchOpts, sink chan<- *BridgeOwnershipTransferStarted, previousOwner []common.Address, newOwner []common.Address) (event.Subscription, error) { - var msgHashRule []interface{} - for _, msgHashItem := range msgHash { - msgHashRule = append(msgHashRule, msgHashItem) + var previousOwnerRule []interface{} + for _, previousOwnerItem := range previousOwner { + previousOwnerRule = append(previousOwnerRule, previousOwnerItem) + } + var newOwnerRule []interface{} + for _, newOwnerItem := range newOwner { + newOwnerRule = append(newOwnerRule, newOwnerItem) } - logs, sub, err := _Bridge.contract.WatchLogs(opts, "MessageStatusChanged0", msgHashRule) + logs, sub, err := _Bridge.contract.WatchLogs(opts, "OwnershipTransferStarted", previousOwnerRule, newOwnerRule) if err != nil { return nil, err } @@ -2054,8 +1745,8 @@ func (_Bridge *BridgeFilterer) WatchMessageStatusChanged0(opts *bind.WatchOpts, select { case log := <-logs: // New log arrived, parse the event and forward to the user - event := new(BridgeMessageStatusChanged0) - if err := _Bridge.contract.UnpackLog(event, "MessageStatusChanged0", log); err != nil { + event := new(BridgeOwnershipTransferStarted) + if err := _Bridge.contract.UnpackLog(event, "OwnershipTransferStarted", log); err != nil { return err } event.Raw = log @@ -2076,12 +1767,12 @@ func (_Bridge *BridgeFilterer) WatchMessageStatusChanged0(opts *bind.WatchOpts, }), nil } -// ParseMessageStatusChanged0 is a log parse operation binding the contract event 0x0af4d5247f6a4028d6699afb62871a76b398da1d1a626c8a9b90e0bd5f54c73c. +// ParseOwnershipTransferStarted is a log parse operation binding the contract event 0x38d16b8cac22d99fc7c124b9cd0de2d3fa1faef420bfe791d8c362d765e22700. // -// Solidity: event MessageStatusChanged(bytes32 indexed msgHash, uint8 status, address transactor) -func (_Bridge *BridgeFilterer) ParseMessageStatusChanged0(log types.Log) (*BridgeMessageStatusChanged0, error) { - event := new(BridgeMessageStatusChanged0) - if err := _Bridge.contract.UnpackLog(event, "MessageStatusChanged0", log); err != nil { +// Solidity: event OwnershipTransferStarted(address indexed previousOwner, address indexed newOwner) +func (_Bridge *BridgeFilterer) ParseOwnershipTransferStarted(log types.Log) (*BridgeOwnershipTransferStarted, error) { + event := new(BridgeOwnershipTransferStarted) + if err := _Bridge.contract.UnpackLog(event, "OwnershipTransferStarted", log); err != nil { return nil, err } event.Raw = log @@ -2241,6 +1932,140 @@ func (_Bridge *BridgeFilterer) ParseOwnershipTransferred(log types.Log) (*Bridge return event, nil } +// BridgePausedIterator is returned from FilterPaused and is used to iterate over the raw logs and unpacked data for Paused events raised by the Bridge contract. +type BridgePausedIterator struct { + Event *BridgePaused // Event containing the contract specifics and raw log + + contract *bind.BoundContract // Generic contract to use for unpacking event data + event string // Event name to use for unpacking event data + + logs chan types.Log // Log channel receiving the found contract events + sub ethereum.Subscription // Subscription for errors, completion and termination + done bool // Whether the subscription completed delivering logs + fail error // Occurred error to stop iteration +} + +// Next advances the iterator to the subsequent event, returning whether there +// are any more events found. In case of a retrieval or parsing error, false is +// returned and Error() can be queried for the exact failure. +func (it *BridgePausedIterator) Next() bool { + // If the iterator failed, stop iterating + if it.fail != nil { + return false + } + // If the iterator completed, deliver directly whatever's available + if it.done { + select { + case log := <-it.logs: + it.Event = new(BridgePaused) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + default: + return false + } + } + // Iterator still in progress, wait for either a data or an error event + select { + case log := <-it.logs: + it.Event = new(BridgePaused) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + case err := <-it.sub.Err(): + it.done = true + it.fail = err + return it.Next() + } +} + +// Error returns any retrieval or parsing error occurred during filtering. +func (it *BridgePausedIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *BridgePausedIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// BridgePaused represents a Paused event raised by the Bridge contract. +type BridgePaused struct { + Account common.Address + Raw types.Log // Blockchain specific contextual infos +} + +// FilterPaused is a free log retrieval operation binding the contract event 0x62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a258. +// +// Solidity: event Paused(address account) +func (_Bridge *BridgeFilterer) FilterPaused(opts *bind.FilterOpts) (*BridgePausedIterator, error) { + + logs, sub, err := _Bridge.contract.FilterLogs(opts, "Paused") + if err != nil { + return nil, err + } + return &BridgePausedIterator{contract: _Bridge.contract, event: "Paused", logs: logs, sub: sub}, nil +} + +// WatchPaused is a free log subscription operation binding the contract event 0x62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a258. +// +// Solidity: event Paused(address account) +func (_Bridge *BridgeFilterer) WatchPaused(opts *bind.WatchOpts, sink chan<- *BridgePaused) (event.Subscription, error) { + + logs, sub, err := _Bridge.contract.WatchLogs(opts, "Paused") + if err != nil { + return nil, err + } + return event.NewSubscription(func(quit <-chan struct{}) error { + defer sub.Unsubscribe() + for { + select { + case log := <-logs: + // New log arrived, parse the event and forward to the user + event := new(BridgePaused) + if err := _Bridge.contract.UnpackLog(event, "Paused", log); err != nil { + return err + } + event.Raw = log + + select { + case sink <- event: + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + } + }), nil +} + +// ParsePaused is a log parse operation binding the contract event 0x62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a258. +// +// Solidity: event Paused(address account) +func (_Bridge *BridgeFilterer) ParsePaused(log types.Log) (*BridgePaused, error) { + event := new(BridgePaused) + if err := _Bridge.contract.UnpackLog(event, "Paused", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} + // BridgeSignalSentIterator is returned from FilterSignalSent and is used to iterate over the raw logs and unpacked data for SignalSent events raised by the Bridge contract. type BridgeSignalSentIterator struct { Event *BridgeSignalSent // Event containing the contract specifics and raw log @@ -2385,3 +2210,137 @@ func (_Bridge *BridgeFilterer) ParseSignalSent(log types.Log) (*BridgeSignalSent event.Raw = log return event, nil } + +// BridgeUnpausedIterator is returned from FilterUnpaused and is used to iterate over the raw logs and unpacked data for Unpaused events raised by the Bridge contract. +type BridgeUnpausedIterator struct { + Event *BridgeUnpaused // Event containing the contract specifics and raw log + + contract *bind.BoundContract // Generic contract to use for unpacking event data + event string // Event name to use for unpacking event data + + logs chan types.Log // Log channel receiving the found contract events + sub ethereum.Subscription // Subscription for errors, completion and termination + done bool // Whether the subscription completed delivering logs + fail error // Occurred error to stop iteration +} + +// Next advances the iterator to the subsequent event, returning whether there +// are any more events found. In case of a retrieval or parsing error, false is +// returned and Error() can be queried for the exact failure. +func (it *BridgeUnpausedIterator) Next() bool { + // If the iterator failed, stop iterating + if it.fail != nil { + return false + } + // If the iterator completed, deliver directly whatever's available + if it.done { + select { + case log := <-it.logs: + it.Event = new(BridgeUnpaused) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + default: + return false + } + } + // Iterator still in progress, wait for either a data or an error event + select { + case log := <-it.logs: + it.Event = new(BridgeUnpaused) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + case err := <-it.sub.Err(): + it.done = true + it.fail = err + return it.Next() + } +} + +// Error returns any retrieval or parsing error occurred during filtering. +func (it *BridgeUnpausedIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *BridgeUnpausedIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// BridgeUnpaused represents a Unpaused event raised by the Bridge contract. +type BridgeUnpaused struct { + Account common.Address + Raw types.Log // Blockchain specific contextual infos +} + +// FilterUnpaused is a free log retrieval operation binding the contract event 0x5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa. +// +// Solidity: event Unpaused(address account) +func (_Bridge *BridgeFilterer) FilterUnpaused(opts *bind.FilterOpts) (*BridgeUnpausedIterator, error) { + + logs, sub, err := _Bridge.contract.FilterLogs(opts, "Unpaused") + if err != nil { + return nil, err + } + return &BridgeUnpausedIterator{contract: _Bridge.contract, event: "Unpaused", logs: logs, sub: sub}, nil +} + +// WatchUnpaused is a free log subscription operation binding the contract event 0x5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa. +// +// Solidity: event Unpaused(address account) +func (_Bridge *BridgeFilterer) WatchUnpaused(opts *bind.WatchOpts, sink chan<- *BridgeUnpaused) (event.Subscription, error) { + + logs, sub, err := _Bridge.contract.WatchLogs(opts, "Unpaused") + if err != nil { + return nil, err + } + return event.NewSubscription(func(quit <-chan struct{}) error { + defer sub.Unsubscribe() + for { + select { + case log := <-logs: + // New log arrived, parse the event and forward to the user + event := new(BridgeUnpaused) + if err := _Bridge.contract.UnpackLog(event, "Unpaused", log); err != nil { + return err + } + event.Raw = log + + select { + case sink <- event: + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + } + }), nil +} + +// ParseUnpaused is a log parse operation binding the contract event 0x5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa. +// +// Solidity: event Unpaused(address account) +func (_Bridge *BridgeFilterer) ParseUnpaused(log types.Log) (*BridgeUnpaused, error) { + event := new(BridgeUnpaused) + if err := _Bridge.contract.UnpackLog(event, "Unpaused", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} diff --git a/packages/eventindexer/contracts/taikol1/TaikoL1.go b/packages/eventindexer/contracts/taikol1/TaikoL1.go index 09838474c5..491618fe57 100644 --- a/packages/eventindexer/contracts/taikol1/TaikoL1.go +++ b/packages/eventindexer/contracts/taikol1/TaikoL1.go @@ -29,13 +29,22 @@ var ( _ = abi.ConvertType ) +// ICrossChainSyncSnippet is an auto generated low-level Go binding around an user-defined struct. +type ICrossChainSyncSnippet struct { + RemoteBlockId uint64 + SyncedInBlock uint64 + BlockHash [32]byte + SignalRoot [32]byte +} + // ITierProviderTier is an auto generated low-level Go binding around an user-defined struct. type ITierProviderTier struct { - VerifierName [32]byte - ValidityBond *big.Int - ContestBond *big.Int - CooldownWindow *big.Int - ProvingWindow uint16 + VerifierName [32]byte + ValidityBond *big.Int + ContestBond *big.Int + CooldownWindow *big.Int + ProvingWindow uint16 + MaxBlocksToVerify uint8 } // TaikoDataBlock is an auto generated low-level Go binding around an user-defined struct. @@ -45,46 +54,49 @@ type TaikoDataBlock struct { LivenessBond *big.Int BlockId uint64 ProposedAt uint64 + ProposedIn uint64 NextTransitionId uint32 VerifiedTransitionId uint32 - MinTier uint16 Reserved [7][32]byte } // TaikoDataBlockMetadata is an auto generated low-level Go binding around an user-defined struct. type TaikoDataBlockMetadata struct { - L1Hash [32]byte - Difficulty [32]byte - TxListHash [32]byte - ExtraData [32]byte - Id uint64 - Timestamp uint64 - L1Height uint64 - GasLimit uint32 - Coinbase common.Address - DepositsProcessed []TaikoDataEthDeposit + L1Hash [32]byte + Difficulty [32]byte + BlobHash [32]byte + ExtraData [32]byte + DepositsHash [32]byte + Coinbase common.Address + Id uint64 + GasLimit uint32 + Timestamp uint64 + L1Height uint64 + TxListByteOffset *big.Int + TxListByteSize *big.Int + MinTier uint16 + BlobUsed bool + ParentMetaHash [32]byte } // TaikoDataConfig is an auto generated low-level Go binding around an user-defined struct. type TaikoDataConfig struct { - ChainId *big.Int - RelaySignalRoot bool - BlockMaxProposals uint64 - BlockRingBufferSize uint64 - BlockMaxVerificationsPerTx uint64 - BlockMaxGasLimit uint32 - BlockFeeBaseGas uint32 - BlockMaxTxListBytes *big.Int - ProposerRewardPerSecond *big.Int - ProposerRewardMax *big.Int - LivenessBond *big.Int - EthDepositRingBufferSize *big.Int - EthDepositMinCountPerBlock uint64 - EthDepositMaxCountPerBlock uint64 - EthDepositMinAmount *big.Int - EthDepositMaxAmount *big.Int - EthDepositGas *big.Int - EthDepositMaxFee *big.Int + ChainId uint64 + BlockMaxProposals uint64 + BlockRingBufferSize uint64 + MaxBlocksToVerifyPerProposal uint64 + BlockMaxGasLimit uint32 + BlockMaxTxListBytes *big.Int + BlobExpiry *big.Int + BlobAllowedForDA bool + LivenessBond *big.Int + EthDepositRingBufferSize *big.Int + EthDepositMinCountPerBlock uint64 + EthDepositMaxCountPerBlock uint64 + EthDepositMinAmount *big.Int + EthDepositMaxAmount *big.Int + EthDepositGas *big.Int + EthDepositMaxFee *big.Int } // TaikoDataEthDeposit is an auto generated low-level Go binding around an user-defined struct. @@ -104,39 +116,37 @@ type TaikoDataSlotA struct { // TaikoDataSlotB is an auto generated low-level Go binding around an user-defined struct. type TaikoDataSlotB struct { - NumBlocks uint64 - NextEthDepositToProcess uint64 - LastVerifiedAt uint64 - LastVerifiedBlockId uint64 -} - -// TaikoDataStateVariables is an auto generated low-level Go binding around an user-defined struct. -type TaikoDataStateVariables struct { - GenesisHeight uint64 - GenesisTimestamp uint64 - NextEthDepositToProcess uint64 - NumEthDeposits uint64 - NumBlocks uint64 - LastVerifiedBlockId uint64 + NumBlocks uint64 + LastVerifiedBlockId uint64 + ProvingPaused bool } // TaikoDataTransition is an auto generated low-level Go binding around an user-defined struct. type TaikoDataTransition struct { - Key [32]byte - BlockHash [32]byte - SignalRoot [32]byte - Prover common.Address - ValidityBond *big.Int - Contester common.Address - ContestBond *big.Int - Timestamp uint64 - Tier uint16 - Reserved [4][32]byte + ParentHash [32]byte + BlockHash [32]byte + SignalRoot [32]byte + Graffiti [32]byte +} + +// TaikoDataTransitionState is an auto generated low-level Go binding around an user-defined struct. +type TaikoDataTransitionState struct { + Key [32]byte + BlockHash [32]byte + SignalRoot [32]byte + Prover common.Address + ValidityBond *big.Int + Contester common.Address + ContestBond *big.Int + Timestamp uint64 + Tier uint16 + Contestations uint8 + Reserved [4][32]byte } // TaikoL1MetaData contains all meta data concerning the TaikoL1 contract. var TaikoL1MetaData = &bind.MetaData{ - ABI: "[{\"inputs\":[],\"name\":\"L1_ALREADY_CONTESTED\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"L1_ALREADY_CONTESTED\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"L1_ALREADY_PROVED\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"L1_ALREADY_PROVED\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"L1_ASSIGNED_PROVER_NOT_ALLOWED\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"L1_ASSIGNED_PROVER_NOT_ALLOWED\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"L1_ASSIGNMENT_EXPIRED\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"L1_ASSIGNMENT_EXPIRED\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"L1_ASSIGNMENT_INSUFFICIENT_FEE\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"L1_ASSIGNMENT_INSUFFICIENT_FEE\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"L1_ASSIGNMENT_INVALID_PARAMS\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"L1_ASSIGNMENT_INVALID_PARAMS\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"L1_ASSIGNMENT_INVALID_SIG\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"L1_ASSIGNMENT_INVALID_SIG\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"L1_BLOCK_MISMATCH\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"L1_BLOCK_MISMATCH\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"L1_BLOCK_MISMATCH\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"L1_BLOCK_MISMATCH\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"L1_INSUFFICIENT_TOKEN\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"L1_INVALID_ADDRESS\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"L1_INVALID_ADDRESS\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"L1_INVALID_BLOCK_ID\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"L1_INVALID_BLOCK_ID\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"L1_INVALID_BLOCK_ID\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"L1_INVALID_CONFIG\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"L1_INVALID_CONFIG\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"L1_INVALID_ETH_DEPOSIT\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"L1_INVALID_ETH_DEPOSIT\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"L1_INVALID_EVIDENCE\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"L1_INVALID_EVIDENCE\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"L1_INVALID_METADATA\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"L1_INVALID_PARAM\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"L1_INVALID_PROOF\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"L1_INVALID_PROPOSER\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"L1_INVALID_PROVER\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"L1_INVALID_PROVER_SIG\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"L1_INVALID_TIER\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"L1_INVALID_TIER\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"L1_NOT_ASSIGNED_PROVER\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"L1_NOT_ASSIGNED_PROVER\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"L1_TIER_NOT_FOUND\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"L1_TIER_NOT_FOUND\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"L1_TOO_MANY_BLOCKS\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"L1_TOO_MANY_BLOCKS\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"L1_TRANSITION_ID_ZERO\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"L1_TRANSITION_ID_ZERO\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"L1_TRANSITION_NOT_FOUND\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"L1_TRANSITION_NOT_FOUND\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"L1_TXLIST_INVALID_RANGE\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"L1_TXLIST_MISMATCH\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"L1_TXLIST_MISMATCH\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"L1_TXLIST_NOT_FOUND\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"L1_TXLIST_TOO_LARGE\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"L1_TXLIST_TOO_LARGE\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"L1_UNAUTHORIZED\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"L1_UNAUTHORIZED\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"L1_UNEXPECTED_TRANSITION_ID\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"L1_UNEXPECTED_TRANSITION_ID\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"L1_UNEXPECTED_TRANSITION_TIER\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"L1_UNEXPECTED_TRANSITION_TIER\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"RESOLVER_DENIED\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"RESOLVER_INVALID_ADDR\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"chainId\",\"type\":\"uint256\"},{\"internalType\":\"bytes32\",\"name\":\"name\",\"type\":\"bytes32\"}],\"name\":\"RESOLVER_ZERO_ADDR\",\"type\":\"error\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"addressManager\",\"type\":\"address\"}],\"name\":\"AddressManagerChanged\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"blockId\",\"type\":\"uint256\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"assignedProver\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint96\",\"name\":\"livenessBond\",\"type\":\"uint96\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"proverFee\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"reward\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint16\",\"name\":\"minTier\",\"type\":\"uint16\"},{\"components\":[{\"internalType\":\"bytes32\",\"name\":\"l1Hash\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"difficulty\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"txListHash\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"extraData\",\"type\":\"bytes32\"},{\"internalType\":\"uint64\",\"name\":\"id\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"timestamp\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"l1Height\",\"type\":\"uint64\"},{\"internalType\":\"uint32\",\"name\":\"gasLimit\",\"type\":\"uint32\"},{\"internalType\":\"address\",\"name\":\"coinbase\",\"type\":\"address\"},{\"components\":[{\"internalType\":\"address\",\"name\":\"recipient\",\"type\":\"address\"},{\"internalType\":\"uint96\",\"name\":\"amount\",\"type\":\"uint96\"},{\"internalType\":\"uint64\",\"name\":\"id\",\"type\":\"uint64\"}],\"internalType\":\"structTaikoData.EthDeposit[]\",\"name\":\"depositsProcessed\",\"type\":\"tuple[]\"}],\"indexed\":false,\"internalType\":\"structTaikoData.BlockMetadata\",\"name\":\"meta\",\"type\":\"tuple\"}],\"name\":\"BlockProposed\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"blockId\",\"type\":\"uint256\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"assignedProver\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint96\",\"name\":\"livenessBond\",\"type\":\"uint96\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"proverFee\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"reward\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint16\",\"name\":\"minTier\",\"type\":\"uint16\"},{\"components\":[{\"internalType\":\"bytes32\",\"name\":\"l1Hash\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"difficulty\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"txListHash\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"extraData\",\"type\":\"bytes32\"},{\"internalType\":\"uint64\",\"name\":\"id\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"timestamp\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"l1Height\",\"type\":\"uint64\"},{\"internalType\":\"uint32\",\"name\":\"gasLimit\",\"type\":\"uint32\"},{\"internalType\":\"address\",\"name\":\"coinbase\",\"type\":\"address\"},{\"components\":[{\"internalType\":\"address\",\"name\":\"recipient\",\"type\":\"address\"},{\"internalType\":\"uint96\",\"name\":\"amount\",\"type\":\"uint96\"},{\"internalType\":\"uint64\",\"name\":\"id\",\"type\":\"uint64\"}],\"internalType\":\"structTaikoData.EthDeposit[]\",\"name\":\"depositsProcessed\",\"type\":\"tuple[]\"}],\"indexed\":false,\"internalType\":\"structTaikoData.BlockMetadata\",\"name\":\"meta\",\"type\":\"tuple\"}],\"name\":\"BlockProposed\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"blockId\",\"type\":\"uint256\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"assignedProver\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"prover\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"blockHash\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"signalRoot\",\"type\":\"bytes32\"}],\"name\":\"BlockVerified\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"blockId\",\"type\":\"uint256\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"assignedProver\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"prover\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"blockHash\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"signalRoot\",\"type\":\"bytes32\"}],\"name\":\"BlockVerified\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint64\",\"name\":\"srcHeight\",\"type\":\"uint64\"},{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"blockHash\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"signalRoot\",\"type\":\"bytes32\"}],\"name\":\"CrossChainSynced\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint64\",\"name\":\"srcHeight\",\"type\":\"uint64\"},{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"blockHash\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"signalRoot\",\"type\":\"bytes32\"}],\"name\":\"CrossChainSynced\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"components\":[{\"internalType\":\"address\",\"name\":\"recipient\",\"type\":\"address\"},{\"internalType\":\"uint96\",\"name\":\"amount\",\"type\":\"uint96\"},{\"internalType\":\"uint64\",\"name\":\"id\",\"type\":\"uint64\"}],\"indexed\":false,\"internalType\":\"structTaikoData.EthDeposit\",\"name\":\"deposit\",\"type\":\"tuple\"}],\"name\":\"EthDeposited\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"components\":[{\"internalType\":\"address\",\"name\":\"recipient\",\"type\":\"address\"},{\"internalType\":\"uint96\",\"name\":\"amount\",\"type\":\"uint96\"},{\"internalType\":\"uint64\",\"name\":\"id\",\"type\":\"uint64\"}],\"indexed\":false,\"internalType\":\"structTaikoData.EthDeposit\",\"name\":\"deposit\",\"type\":\"tuple\"}],\"name\":\"EthDeposited\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint8\",\"name\":\"version\",\"type\":\"uint8\"}],\"name\":\"Initialized\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"previousOwner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"newOwner\",\"type\":\"address\"}],\"name\":\"OwnershipTransferred\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"bool\",\"name\":\"minted\",\"type\":\"bool\"}],\"name\":\"TokenCredited\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"bool\",\"name\":\"minted\",\"type\":\"bool\"}],\"name\":\"TokenCredited\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"bool\",\"name\":\"fromLocalBalance\",\"type\":\"bool\"}],\"name\":\"TokenDebited\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"bool\",\"name\":\"fromLocalBalance\",\"type\":\"bool\"}],\"name\":\"TokenDebited\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"TokenDeposited\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"TokenDeposited\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"TokenWithdrawn\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"TokenWithdrawn\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"TokenWithdrawnByOwner\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"TokenWithdrawnByOwner\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"blockId\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"parentHash\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"blockHash\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"signalRoot\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"contester\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint96\",\"name\":\"contestBond\",\"type\":\"uint96\"},{\"indexed\":false,\"internalType\":\"uint16\",\"name\":\"tier\",\"type\":\"uint16\"}],\"name\":\"TransitionContested\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"blockId\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"parentHash\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"blockHash\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"signalRoot\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"contester\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint96\",\"name\":\"contestBond\",\"type\":\"uint96\"},{\"indexed\":false,\"internalType\":\"uint16\",\"name\":\"tier\",\"type\":\"uint16\"}],\"name\":\"TransitionContested\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"blockId\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"parentHash\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"blockHash\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"signalRoot\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"prover\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint96\",\"name\":\"validityBond\",\"type\":\"uint96\"},{\"indexed\":false,\"internalType\":\"uint16\",\"name\":\"tier\",\"type\":\"uint16\"}],\"name\":\"TransitionProved\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"blockId\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"parentHash\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"blockHash\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"signalRoot\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"prover\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint96\",\"name\":\"validityBond\",\"type\":\"uint96\"},{\"indexed\":false,\"internalType\":\"uint16\",\"name\":\"tier\",\"type\":\"uint16\"}],\"name\":\"TransitionProved\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"addressManager\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"canDepositEthToL2\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"recipient\",\"type\":\"address\"}],\"name\":\"depositEtherToL2\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"depositTaikoToken\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"blockId\",\"type\":\"uint64\"}],\"name\":\"getBlock\",\"outputs\":[{\"components\":[{\"internalType\":\"bytes32\",\"name\":\"metaHash\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"assignedProver\",\"type\":\"address\"},{\"internalType\":\"uint96\",\"name\":\"livenessBond\",\"type\":\"uint96\"},{\"internalType\":\"uint64\",\"name\":\"blockId\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"proposedAt\",\"type\":\"uint64\"},{\"internalType\":\"uint32\",\"name\":\"nextTransitionId\",\"type\":\"uint32\"},{\"internalType\":\"uint32\",\"name\":\"verifiedTransitionId\",\"type\":\"uint32\"},{\"internalType\":\"uint16\",\"name\":\"minTier\",\"type\":\"uint16\"},{\"internalType\":\"bytes32[7]\",\"name\":\"__reserved\",\"type\":\"bytes32[7]\"}],\"internalType\":\"structTaikoData.Block\",\"name\":\"blk\",\"type\":\"tuple\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getConfig\",\"outputs\":[{\"components\":[{\"internalType\":\"uint256\",\"name\":\"chainId\",\"type\":\"uint256\"},{\"internalType\":\"bool\",\"name\":\"relaySignalRoot\",\"type\":\"bool\"},{\"internalType\":\"uint64\",\"name\":\"blockMaxProposals\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"blockRingBufferSize\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"maxBlocksToVerifyPerProposal\",\"type\":\"uint64\"},{\"internalType\":\"uint32\",\"name\":\"blockMaxGasLimit\",\"type\":\"uint32\"},{\"internalType\":\"uint32\",\"name\":\"blockFeeBaseGas\",\"type\":\"uint32\"},{\"internalType\":\"uint24\",\"name\":\"blockMaxTxListBytes\",\"type\":\"uint24\"},{\"internalType\":\"uint256\",\"name\":\"proposerRewardPerSecond\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"proposerRewardMax\",\"type\":\"uint256\"},{\"internalType\":\"uint96\",\"name\":\"livenessBond\",\"type\":\"uint96\"},{\"internalType\":\"uint256\",\"name\":\"ethDepositRingBufferSize\",\"type\":\"uint256\"},{\"internalType\":\"uint64\",\"name\":\"ethDepositMinCountPerBlock\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"ethDepositMaxCountPerBlock\",\"type\":\"uint64\"},{\"internalType\":\"uint96\",\"name\":\"ethDepositMinAmount\",\"type\":\"uint96\"},{\"internalType\":\"uint96\",\"name\":\"ethDepositMaxAmount\",\"type\":\"uint96\"},{\"internalType\":\"uint256\",\"name\":\"ethDepositGas\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"ethDepositMaxFee\",\"type\":\"uint256\"}],\"internalType\":\"structTaikoData.Config\",\"name\":\"\",\"type\":\"tuple\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"blockId\",\"type\":\"uint64\"}],\"name\":\"getCrossChainBlockHash\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"blockId\",\"type\":\"uint64\"}],\"name\":\"getCrossChainSignalRoot\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"rand\",\"type\":\"uint256\"}],\"name\":\"getMinTier\",\"outputs\":[{\"internalType\":\"uint16\",\"name\":\"\",\"type\":\"uint16\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getStateVariables\",\"outputs\":[{\"components\":[{\"internalType\":\"uint64\",\"name\":\"genesisHeight\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"genesisTimestamp\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"nextEthDepositToProcess\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"numEthDeposits\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"numBlocks\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"lastVerifiedBlockId\",\"type\":\"uint64\"}],\"internalType\":\"structTaikoData.StateVariables\",\"name\":\"\",\"type\":\"tuple\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"user\",\"type\":\"address\"}],\"name\":\"getTaikoTokenBalance\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint16\",\"name\":\"tierId\",\"type\":\"uint16\"}],\"name\":\"getTier\",\"outputs\":[{\"components\":[{\"internalType\":\"bytes32\",\"name\":\"verifierName\",\"type\":\"bytes32\"},{\"internalType\":\"uint96\",\"name\":\"validityBond\",\"type\":\"uint96\"},{\"internalType\":\"uint96\",\"name\":\"contestBond\",\"type\":\"uint96\"},{\"internalType\":\"uint24\",\"name\":\"cooldownWindow\",\"type\":\"uint24\"},{\"internalType\":\"uint16\",\"name\":\"provingWindow\",\"type\":\"uint16\"}],\"internalType\":\"structITierProvider.Tier\",\"name\":\"\",\"type\":\"tuple\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getTierIds\",\"outputs\":[{\"internalType\":\"uint16[]\",\"name\":\"\",\"type\":\"uint16[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"blockId\",\"type\":\"uint64\"},{\"internalType\":\"bytes32\",\"name\":\"parentHash\",\"type\":\"bytes32\"}],\"name\":\"getTransition\",\"outputs\":[{\"components\":[{\"internalType\":\"bytes32\",\"name\":\"key\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"blockHash\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"signalRoot\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"prover\",\"type\":\"address\"},{\"internalType\":\"uint96\",\"name\":\"validityBond\",\"type\":\"uint96\"},{\"internalType\":\"address\",\"name\":\"contester\",\"type\":\"address\"},{\"internalType\":\"uint96\",\"name\":\"contestBond\",\"type\":\"uint96\"},{\"internalType\":\"uint64\",\"name\":\"timestamp\",\"type\":\"uint64\"},{\"internalType\":\"uint16\",\"name\":\"tier\",\"type\":\"uint16\"},{\"internalType\":\"bytes32[4]\",\"name\":\"__reserved\",\"type\":\"bytes32[4]\"}],\"internalType\":\"structTaikoData.Transition\",\"name\":\"\",\"type\":\"tuple\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_addressManager\",\"type\":\"address\"},{\"internalType\":\"bytes32\",\"name\":\"_genesisBlockHash\",\"type\":\"bytes32\"}],\"name\":\"init\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"owner\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"ownerWithdrawTaikoToken\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"txListHash\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"extraData\",\"type\":\"bytes32\"},{\"internalType\":\"bytes\",\"name\":\"assignment\",\"type\":\"bytes\"},{\"internalType\":\"bytes\",\"name\":\"txList\",\"type\":\"bytes\"}],\"name\":\"proposeBlock\",\"outputs\":[{\"components\":[{\"internalType\":\"bytes32\",\"name\":\"l1Hash\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"difficulty\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"txListHash\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"extraData\",\"type\":\"bytes32\"},{\"internalType\":\"uint64\",\"name\":\"id\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"timestamp\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"l1Height\",\"type\":\"uint64\"},{\"internalType\":\"uint32\",\"name\":\"gasLimit\",\"type\":\"uint32\"},{\"internalType\":\"address\",\"name\":\"coinbase\",\"type\":\"address\"},{\"components\":[{\"internalType\":\"address\",\"name\":\"recipient\",\"type\":\"address\"},{\"internalType\":\"uint96\",\"name\":\"amount\",\"type\":\"uint96\"},{\"internalType\":\"uint64\",\"name\":\"id\",\"type\":\"uint64\"}],\"internalType\":\"structTaikoData.EthDeposit[]\",\"name\":\"depositsProcessed\",\"type\":\"tuple[]\"}],\"internalType\":\"structTaikoData.BlockMetadata\",\"name\":\"meta\",\"type\":\"tuple\"}],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"blockId\",\"type\":\"uint64\"},{\"internalType\":\"bytes\",\"name\":\"input\",\"type\":\"bytes\"}],\"name\":\"proveBlock\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"renounceOwnership\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"chainId\",\"type\":\"uint256\"},{\"internalType\":\"bytes32\",\"name\":\"name\",\"type\":\"bytes32\"},{\"internalType\":\"bool\",\"name\":\"allowZeroAddress\",\"type\":\"bool\"}],\"name\":\"resolve\",\"outputs\":[{\"internalType\":\"addresspayable\",\"name\":\"addr\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"name\",\"type\":\"bytes32\"},{\"internalType\":\"bool\",\"name\":\"allowZeroAddress\",\"type\":\"bool\"}],\"name\":\"resolve\",\"outputs\":[{\"internalType\":\"addresspayable\",\"name\":\"addr\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"newAddressManager\",\"type\":\"address\"}],\"name\":\"setAddressManager\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"state\",\"outputs\":[{\"components\":[{\"internalType\":\"uint64\",\"name\":\"genesisHeight\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"genesisTimestamp\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"numEthDeposits\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"nextEthDepositToProcess\",\"type\":\"uint64\"}],\"internalType\":\"structTaikoData.SlotA\",\"name\":\"slotA\",\"type\":\"tuple\"},{\"components\":[{\"internalType\":\"uint64\",\"name\":\"numBlocks\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"nextEthDepositToProcess\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"lastVerifiedAt\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"lastVerifiedBlockId\",\"type\":\"uint64\"}],\"internalType\":\"structTaikoData.SlotB\",\"name\":\"slotB\",\"type\":\"tuple\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"newOwner\",\"type\":\"address\"}],\"name\":\"transferOwnership\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"maxBlocks\",\"type\":\"uint64\"}],\"name\":\"verifyBlocks\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"withdrawTaikoToken\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"stateMutability\":\"payable\",\"type\":\"receive\"}]", + ABI: "[{\"inputs\":[],\"name\":\"ETH_TRANSFER_FAILED\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"INVALID_PAUSE_STATUS\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"L1_ALREADY_CONTESTED\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"L1_ALREADY_CONTESTED\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"L1_ALREADY_PROVED\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"L1_ALREADY_PROVED\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"L1_ASSIGNED_PROVER_NOT_ALLOWED\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"L1_ASSIGNED_PROVER_NOT_ALLOWED\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"L1_ASSIGNMENT_EXPIRED\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"L1_ASSIGNMENT_EXPIRED\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"L1_ASSIGNMENT_INSUFFICIENT_FEE\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"L1_ASSIGNMENT_INSUFFICIENT_FEE\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"L1_ASSIGNMENT_INVALID_PARAMS\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"L1_ASSIGNMENT_INVALID_PARAMS\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"L1_ASSIGNMENT_INVALID_SIG\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"L1_ASSIGNMENT_INVALID_SIG\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"L1_BLOB_FOR_DA_DISABLED\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"L1_BLOB_FOR_DA_DISABLED\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"L1_BLOB_NOT_FOUND\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"L1_BLOB_NOT_FOUND\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"L1_BLOB_NOT_REUSEABLE\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"L1_BLOB_NOT_REUSEABLE\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"L1_BLOCK_MISMATCH\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"L1_BLOCK_MISMATCH\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"L1_BLOCK_MISMATCH\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"L1_INSUFFICIENT_TOKEN\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"L1_INVALID_ADDRESS\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"L1_INVALID_AMOUNT\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"L1_INVALID_BLOCK_ID\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"L1_INVALID_BLOCK_ID\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"L1_INVALID_BLOCK_ID\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"L1_INVALID_CONFIG\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"L1_INVALID_ETH_DEPOSIT\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"L1_INVALID_ETH_DEPOSIT\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"L1_INVALID_PARAM\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"L1_INVALID_PARAM\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"L1_INVALID_PAUSE_STATUS\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"L1_INVALID_PAUSE_STATUS\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"L1_INVALID_PROOF\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"L1_INVALID_TIER\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"L1_INVALID_TIER\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"L1_INVALID_TRANSITION\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"L1_INVALID_TRANSITION\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"L1_NOT_ASSIGNED_PROVER\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"L1_NOT_ASSIGNED_PROVER\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"L1_PROPOSER_NOT_EOA\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"L1_PROPOSER_NOT_EOA\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"L1_PROVING_PAUSED\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"L1_TIER_NOT_FOUND\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"L1_TIER_NOT_FOUND\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"L1_TOO_MANY_BLOCKS\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"L1_TOO_MANY_BLOCKS\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"L1_TOO_MANY_TIERS\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"L1_TRANSITION_ID_ZERO\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"L1_TRANSITION_ID_ZERO\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"L1_TRANSITION_NOT_FOUND\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"L1_TXLIST_OFFSET\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"L1_TXLIST_OFFSET_SIZE\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"L1_TXLIST_SIZE\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"L1_TXLIST_TOO_LARGE\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"L1_UNAUTHORIZED\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"L1_UNAUTHORIZED\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"L1_UNEXPECTED_PARENT\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"L1_UNEXPECTED_PARENT\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"L1_UNEXPECTED_TRANSITION_ID\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"L1_UNEXPECTED_TRANSITION_ID\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"L1_UNEXPECTED_TRANSITION_TIER\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"L1_UNEXPECTED_TRANSITION_TIER\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"REENTRANT_CALL\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"RESOLVER_DENIED\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"RESOLVER_INVALID_MANAGER\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"RESOLVER_UNEXPECTED_CHAINID\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"chainId\",\"type\":\"uint64\"},{\"internalType\":\"string\",\"name\":\"name\",\"type\":\"string\"}],\"name\":\"RESOLVER_ZERO_ADDR\",\"type\":\"error\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"blobHash\",\"type\":\"bytes32\"}],\"name\":\"BlobCached\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"blobHash\",\"type\":\"bytes32\"}],\"name\":\"BlobCached\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"blockId\",\"type\":\"uint256\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"assignedProver\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint96\",\"name\":\"livenessBond\",\"type\":\"uint96\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"proverFee\",\"type\":\"uint256\"},{\"components\":[{\"internalType\":\"bytes32\",\"name\":\"l1Hash\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"difficulty\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"blobHash\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"extraData\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"depositsHash\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"coinbase\",\"type\":\"address\"},{\"internalType\":\"uint64\",\"name\":\"id\",\"type\":\"uint64\"},{\"internalType\":\"uint32\",\"name\":\"gasLimit\",\"type\":\"uint32\"},{\"internalType\":\"uint64\",\"name\":\"timestamp\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"l1Height\",\"type\":\"uint64\"},{\"internalType\":\"uint24\",\"name\":\"txListByteOffset\",\"type\":\"uint24\"},{\"internalType\":\"uint24\",\"name\":\"txListByteSize\",\"type\":\"uint24\"},{\"internalType\":\"uint16\",\"name\":\"minTier\",\"type\":\"uint16\"},{\"internalType\":\"bool\",\"name\":\"blobUsed\",\"type\":\"bool\"},{\"internalType\":\"bytes32\",\"name\":\"parentMetaHash\",\"type\":\"bytes32\"}],\"indexed\":false,\"internalType\":\"structTaikoData.BlockMetadata\",\"name\":\"meta\",\"type\":\"tuple\"},{\"components\":[{\"internalType\":\"address\",\"name\":\"recipient\",\"type\":\"address\"},{\"internalType\":\"uint96\",\"name\":\"amount\",\"type\":\"uint96\"},{\"internalType\":\"uint64\",\"name\":\"id\",\"type\":\"uint64\"}],\"indexed\":false,\"internalType\":\"structTaikoData.EthDeposit[]\",\"name\":\"depositsProcessed\",\"type\":\"tuple[]\"}],\"name\":\"BlockProposed\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"blockId\",\"type\":\"uint256\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"assignedProver\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint96\",\"name\":\"livenessBond\",\"type\":\"uint96\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"proverFee\",\"type\":\"uint256\"},{\"components\":[{\"internalType\":\"bytes32\",\"name\":\"l1Hash\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"difficulty\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"blobHash\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"extraData\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"depositsHash\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"coinbase\",\"type\":\"address\"},{\"internalType\":\"uint64\",\"name\":\"id\",\"type\":\"uint64\"},{\"internalType\":\"uint32\",\"name\":\"gasLimit\",\"type\":\"uint32\"},{\"internalType\":\"uint64\",\"name\":\"timestamp\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"l1Height\",\"type\":\"uint64\"},{\"internalType\":\"uint24\",\"name\":\"txListByteOffset\",\"type\":\"uint24\"},{\"internalType\":\"uint24\",\"name\":\"txListByteSize\",\"type\":\"uint24\"},{\"internalType\":\"uint16\",\"name\":\"minTier\",\"type\":\"uint16\"},{\"internalType\":\"bool\",\"name\":\"blobUsed\",\"type\":\"bool\"},{\"internalType\":\"bytes32\",\"name\":\"parentMetaHash\",\"type\":\"bytes32\"}],\"indexed\":false,\"internalType\":\"structTaikoData.BlockMetadata\",\"name\":\"meta\",\"type\":\"tuple\"},{\"components\":[{\"internalType\":\"address\",\"name\":\"recipient\",\"type\":\"address\"},{\"internalType\":\"uint96\",\"name\":\"amount\",\"type\":\"uint96\"},{\"internalType\":\"uint64\",\"name\":\"id\",\"type\":\"uint64\"}],\"indexed\":false,\"internalType\":\"structTaikoData.EthDeposit[]\",\"name\":\"depositsProcessed\",\"type\":\"tuple[]\"}],\"name\":\"BlockProposed\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"blockId\",\"type\":\"uint256\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"assignedProver\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"prover\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"blockHash\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"signalRoot\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"uint16\",\"name\":\"tier\",\"type\":\"uint16\"},{\"indexed\":false,\"internalType\":\"uint8\",\"name\":\"contestations\",\"type\":\"uint8\"}],\"name\":\"BlockVerified\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"blockId\",\"type\":\"uint256\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"assignedProver\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"prover\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"blockHash\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"signalRoot\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"uint16\",\"name\":\"tier\",\"type\":\"uint16\"},{\"indexed\":false,\"internalType\":\"uint8\",\"name\":\"contestations\",\"type\":\"uint8\"}],\"name\":\"BlockVerified\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint64\",\"name\":\"srcHeight\",\"type\":\"uint64\"},{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"blockHash\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"signalRoot\",\"type\":\"bytes32\"}],\"name\":\"CrossChainSynced\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint64\",\"name\":\"remoteBlockId\",\"type\":\"uint64\"},{\"indexed\":false,\"internalType\":\"uint64\",\"name\":\"syncedInBlock\",\"type\":\"uint64\"},{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"blockHash\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"signalRoot\",\"type\":\"bytes32\"}],\"name\":\"CrossChainSynced\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"components\":[{\"internalType\":\"address\",\"name\":\"recipient\",\"type\":\"address\"},{\"internalType\":\"uint96\",\"name\":\"amount\",\"type\":\"uint96\"},{\"internalType\":\"uint64\",\"name\":\"id\",\"type\":\"uint64\"}],\"indexed\":false,\"internalType\":\"structTaikoData.EthDeposit\",\"name\":\"deposit\",\"type\":\"tuple\"}],\"name\":\"EthDeposited\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint8\",\"name\":\"version\",\"type\":\"uint8\"}],\"name\":\"Initialized\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"previousOwner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"newOwner\",\"type\":\"address\"}],\"name\":\"OwnershipTransferStarted\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"previousOwner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"newOwner\",\"type\":\"address\"}],\"name\":\"OwnershipTransferred\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"Paused\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"bool\",\"name\":\"paused\",\"type\":\"bool\"}],\"name\":\"ProvingPaused\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"bool\",\"name\":\"paused\",\"type\":\"bool\"}],\"name\":\"ProvingPaused\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"TokenCredited\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"TokenCredited\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"TokenDebited\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"TokenDebited\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"TokenDeposited\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"TokenWithdrawn\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"blockId\",\"type\":\"uint256\"},{\"components\":[{\"internalType\":\"bytes32\",\"name\":\"parentHash\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"blockHash\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"signalRoot\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"graffiti\",\"type\":\"bytes32\"}],\"indexed\":false,\"internalType\":\"structTaikoData.Transition\",\"name\":\"tran\",\"type\":\"tuple\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"contester\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint96\",\"name\":\"contestBond\",\"type\":\"uint96\"},{\"indexed\":false,\"internalType\":\"uint16\",\"name\":\"tier\",\"type\":\"uint16\"}],\"name\":\"TransitionContested\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"blockId\",\"type\":\"uint256\"},{\"components\":[{\"internalType\":\"bytes32\",\"name\":\"parentHash\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"blockHash\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"signalRoot\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"graffiti\",\"type\":\"bytes32\"}],\"indexed\":false,\"internalType\":\"structTaikoData.Transition\",\"name\":\"tran\",\"type\":\"tuple\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"contester\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint96\",\"name\":\"contestBond\",\"type\":\"uint96\"},{\"indexed\":false,\"internalType\":\"uint16\",\"name\":\"tier\",\"type\":\"uint16\"}],\"name\":\"TransitionContested\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"blockId\",\"type\":\"uint256\"},{\"components\":[{\"internalType\":\"bytes32\",\"name\":\"parentHash\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"blockHash\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"signalRoot\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"graffiti\",\"type\":\"bytes32\"}],\"indexed\":false,\"internalType\":\"structTaikoData.Transition\",\"name\":\"tran\",\"type\":\"tuple\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"prover\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint96\",\"name\":\"validityBond\",\"type\":\"uint96\"},{\"indexed\":false,\"internalType\":\"uint16\",\"name\":\"tier\",\"type\":\"uint16\"}],\"name\":\"TransitionProved\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"blockId\",\"type\":\"uint256\"},{\"components\":[{\"internalType\":\"bytes32\",\"name\":\"parentHash\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"blockHash\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"signalRoot\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"graffiti\",\"type\":\"bytes32\"}],\"indexed\":false,\"internalType\":\"structTaikoData.Transition\",\"name\":\"tran\",\"type\":\"tuple\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"prover\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint96\",\"name\":\"validityBond\",\"type\":\"uint96\"},{\"indexed\":false,\"internalType\":\"uint16\",\"name\":\"tier\",\"type\":\"uint16\"}],\"name\":\"TransitionProved\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"Unpaused\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"acceptOwnership\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"addressManager\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"canDepositEthToL2\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"recipient\",\"type\":\"address\"}],\"name\":\"depositEtherToL2\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"depositTaikoToken\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"blockId\",\"type\":\"uint64\"}],\"name\":\"getBlock\",\"outputs\":[{\"components\":[{\"internalType\":\"bytes32\",\"name\":\"metaHash\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"assignedProver\",\"type\":\"address\"},{\"internalType\":\"uint96\",\"name\":\"livenessBond\",\"type\":\"uint96\"},{\"internalType\":\"uint64\",\"name\":\"blockId\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"proposedAt\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"proposedIn\",\"type\":\"uint64\"},{\"internalType\":\"uint32\",\"name\":\"nextTransitionId\",\"type\":\"uint32\"},{\"internalType\":\"uint32\",\"name\":\"verifiedTransitionId\",\"type\":\"uint32\"},{\"internalType\":\"bytes32[7]\",\"name\":\"__reserved\",\"type\":\"bytes32[7]\"}],\"internalType\":\"structTaikoData.Block\",\"name\":\"blk\",\"type\":\"tuple\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getConfig\",\"outputs\":[{\"components\":[{\"internalType\":\"uint64\",\"name\":\"chainId\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"blockMaxProposals\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"blockRingBufferSize\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"maxBlocksToVerifyPerProposal\",\"type\":\"uint64\"},{\"internalType\":\"uint32\",\"name\":\"blockMaxGasLimit\",\"type\":\"uint32\"},{\"internalType\":\"uint24\",\"name\":\"blockMaxTxListBytes\",\"type\":\"uint24\"},{\"internalType\":\"uint24\",\"name\":\"blobExpiry\",\"type\":\"uint24\"},{\"internalType\":\"bool\",\"name\":\"blobAllowedForDA\",\"type\":\"bool\"},{\"internalType\":\"uint96\",\"name\":\"livenessBond\",\"type\":\"uint96\"},{\"internalType\":\"uint256\",\"name\":\"ethDepositRingBufferSize\",\"type\":\"uint256\"},{\"internalType\":\"uint64\",\"name\":\"ethDepositMinCountPerBlock\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"ethDepositMaxCountPerBlock\",\"type\":\"uint64\"},{\"internalType\":\"uint96\",\"name\":\"ethDepositMinAmount\",\"type\":\"uint96\"},{\"internalType\":\"uint96\",\"name\":\"ethDepositMaxAmount\",\"type\":\"uint96\"},{\"internalType\":\"uint256\",\"name\":\"ethDepositGas\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"ethDepositMaxFee\",\"type\":\"uint256\"}],\"internalType\":\"structTaikoData.Config\",\"name\":\"\",\"type\":\"tuple\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"rand\",\"type\":\"uint256\"}],\"name\":\"getMinTier\",\"outputs\":[{\"internalType\":\"uint16\",\"name\":\"\",\"type\":\"uint16\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getStateVariables\",\"outputs\":[{\"components\":[{\"internalType\":\"uint64\",\"name\":\"genesisHeight\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"genesisTimestamp\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"numEthDeposits\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"nextEthDepositToProcess\",\"type\":\"uint64\"}],\"internalType\":\"structTaikoData.SlotA\",\"name\":\"a\",\"type\":\"tuple\"},{\"components\":[{\"internalType\":\"uint64\",\"name\":\"numBlocks\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"lastVerifiedBlockId\",\"type\":\"uint64\"},{\"internalType\":\"bool\",\"name\":\"provingPaused\",\"type\":\"bool\"}],\"internalType\":\"structTaikoData.SlotB\",\"name\":\"b\",\"type\":\"tuple\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"blockId\",\"type\":\"uint64\"}],\"name\":\"getSyncedSnippet\",\"outputs\":[{\"components\":[{\"internalType\":\"uint64\",\"name\":\"remoteBlockId\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"syncedInBlock\",\"type\":\"uint64\"},{\"internalType\":\"bytes32\",\"name\":\"blockHash\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"signalRoot\",\"type\":\"bytes32\"}],\"internalType\":\"structICrossChainSync.Snippet\",\"name\":\"\",\"type\":\"tuple\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"user\",\"type\":\"address\"}],\"name\":\"getTaikoTokenBalance\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint16\",\"name\":\"tierId\",\"type\":\"uint16\"}],\"name\":\"getTier\",\"outputs\":[{\"components\":[{\"internalType\":\"bytes32\",\"name\":\"verifierName\",\"type\":\"bytes32\"},{\"internalType\":\"uint96\",\"name\":\"validityBond\",\"type\":\"uint96\"},{\"internalType\":\"uint96\",\"name\":\"contestBond\",\"type\":\"uint96\"},{\"internalType\":\"uint24\",\"name\":\"cooldownWindow\",\"type\":\"uint24\"},{\"internalType\":\"uint16\",\"name\":\"provingWindow\",\"type\":\"uint16\"},{\"internalType\":\"uint8\",\"name\":\"maxBlocksToVerify\",\"type\":\"uint8\"}],\"internalType\":\"structITierProvider.Tier\",\"name\":\"\",\"type\":\"tuple\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getTierIds\",\"outputs\":[{\"internalType\":\"uint16[]\",\"name\":\"ids\",\"type\":\"uint16[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"blockId\",\"type\":\"uint64\"},{\"internalType\":\"bytes32\",\"name\":\"parentHash\",\"type\":\"bytes32\"}],\"name\":\"getTransition\",\"outputs\":[{\"components\":[{\"internalType\":\"bytes32\",\"name\":\"key\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"blockHash\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"signalRoot\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"prover\",\"type\":\"address\"},{\"internalType\":\"uint96\",\"name\":\"validityBond\",\"type\":\"uint96\"},{\"internalType\":\"address\",\"name\":\"contester\",\"type\":\"address\"},{\"internalType\":\"uint96\",\"name\":\"contestBond\",\"type\":\"uint96\"},{\"internalType\":\"uint64\",\"name\":\"timestamp\",\"type\":\"uint64\"},{\"internalType\":\"uint16\",\"name\":\"tier\",\"type\":\"uint16\"},{\"internalType\":\"uint8\",\"name\":\"contestations\",\"type\":\"uint8\"},{\"internalType\":\"bytes32[4]\",\"name\":\"__reserved\",\"type\":\"bytes32[4]\"}],\"internalType\":\"structTaikoData.TransitionState\",\"name\":\"\",\"type\":\"tuple\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_addressManager\",\"type\":\"address\"},{\"internalType\":\"bytes32\",\"name\":\"_genesisBlockHash\",\"type\":\"bytes32\"}],\"name\":\"init\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"blobHash\",\"type\":\"bytes32\"}],\"name\":\"isBlobReusable\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"isConfigValid\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"owner\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"pause\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bool\",\"name\":\"pause\",\"type\":\"bool\"}],\"name\":\"pauseProving\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"paused\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"pendingOwner\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"params\",\"type\":\"bytes\"},{\"internalType\":\"bytes\",\"name\":\"txList\",\"type\":\"bytes\"}],\"name\":\"proposeBlock\",\"outputs\":[{\"components\":[{\"internalType\":\"bytes32\",\"name\":\"l1Hash\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"difficulty\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"blobHash\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"extraData\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"depositsHash\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"coinbase\",\"type\":\"address\"},{\"internalType\":\"uint64\",\"name\":\"id\",\"type\":\"uint64\"},{\"internalType\":\"uint32\",\"name\":\"gasLimit\",\"type\":\"uint32\"},{\"internalType\":\"uint64\",\"name\":\"timestamp\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"l1Height\",\"type\":\"uint64\"},{\"internalType\":\"uint24\",\"name\":\"txListByteOffset\",\"type\":\"uint24\"},{\"internalType\":\"uint24\",\"name\":\"txListByteSize\",\"type\":\"uint24\"},{\"internalType\":\"uint16\",\"name\":\"minTier\",\"type\":\"uint16\"},{\"internalType\":\"bool\",\"name\":\"blobUsed\",\"type\":\"bool\"},{\"internalType\":\"bytes32\",\"name\":\"parentMetaHash\",\"type\":\"bytes32\"}],\"internalType\":\"structTaikoData.BlockMetadata\",\"name\":\"meta\",\"type\":\"tuple\"},{\"components\":[{\"internalType\":\"address\",\"name\":\"recipient\",\"type\":\"address\"},{\"internalType\":\"uint96\",\"name\":\"amount\",\"type\":\"uint96\"},{\"internalType\":\"uint64\",\"name\":\"id\",\"type\":\"uint64\"}],\"internalType\":\"structTaikoData.EthDeposit[]\",\"name\":\"depositsProcessed\",\"type\":\"tuple[]\"}],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"blockId\",\"type\":\"uint64\"},{\"internalType\":\"bytes\",\"name\":\"input\",\"type\":\"bytes\"}],\"name\":\"proveBlock\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"renounceOwnership\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"chainId\",\"type\":\"uint64\"},{\"internalType\":\"bytes32\",\"name\":\"name\",\"type\":\"bytes32\"},{\"internalType\":\"bool\",\"name\":\"allowZeroAddress\",\"type\":\"bool\"}],\"name\":\"resolve\",\"outputs\":[{\"internalType\":\"addresspayable\",\"name\":\"addr\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"name\",\"type\":\"bytes32\"},{\"internalType\":\"bool\",\"name\":\"allowZeroAddress\",\"type\":\"bool\"}],\"name\":\"resolve\",\"outputs\":[{\"internalType\":\"addresspayable\",\"name\":\"addr\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"state\",\"outputs\":[{\"components\":[{\"internalType\":\"uint64\",\"name\":\"genesisHeight\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"genesisTimestamp\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"numEthDeposits\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"nextEthDepositToProcess\",\"type\":\"uint64\"}],\"internalType\":\"structTaikoData.SlotA\",\"name\":\"slotA\",\"type\":\"tuple\"},{\"components\":[{\"internalType\":\"uint64\",\"name\":\"numBlocks\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"lastVerifiedBlockId\",\"type\":\"uint64\"},{\"internalType\":\"bool\",\"name\":\"provingPaused\",\"type\":\"bool\"}],\"internalType\":\"structTaikoData.SlotB\",\"name\":\"slotB\",\"type\":\"tuple\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"newOwner\",\"type\":\"address\"}],\"name\":\"transferOwnership\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"unpause\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"maxBlocksToVerify\",\"type\":\"uint64\"}],\"name\":\"verifyBlocks\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"withdrawTaikoToken\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"stateMutability\":\"payable\",\"type\":\"receive\"}]", } // TaikoL1ABI is the input ABI used to generate the binding from. @@ -349,7 +359,7 @@ func (_TaikoL1 *TaikoL1CallerSession) CanDepositEthToL2(amount *big.Int) (bool, // GetBlock is a free data retrieval call binding the contract method 0x5fa15e79. // -// Solidity: function getBlock(uint64 blockId) view returns((bytes32,address,uint96,uint64,uint64,uint32,uint32,uint16,bytes32[7]) blk) +// Solidity: function getBlock(uint64 blockId) view returns((bytes32,address,uint96,uint64,uint64,uint64,uint32,uint32,bytes32[7]) blk) func (_TaikoL1 *TaikoL1Caller) GetBlock(opts *bind.CallOpts, blockId uint64) (TaikoDataBlock, error) { var out []interface{} err := _TaikoL1.contract.Call(opts, &out, "getBlock", blockId) @@ -366,21 +376,21 @@ func (_TaikoL1 *TaikoL1Caller) GetBlock(opts *bind.CallOpts, blockId uint64) (Ta // GetBlock is a free data retrieval call binding the contract method 0x5fa15e79. // -// Solidity: function getBlock(uint64 blockId) view returns((bytes32,address,uint96,uint64,uint64,uint32,uint32,uint16,bytes32[7]) blk) +// Solidity: function getBlock(uint64 blockId) view returns((bytes32,address,uint96,uint64,uint64,uint64,uint32,uint32,bytes32[7]) blk) func (_TaikoL1 *TaikoL1Session) GetBlock(blockId uint64) (TaikoDataBlock, error) { return _TaikoL1.Contract.GetBlock(&_TaikoL1.CallOpts, blockId) } // GetBlock is a free data retrieval call binding the contract method 0x5fa15e79. // -// Solidity: function getBlock(uint64 blockId) view returns((bytes32,address,uint96,uint64,uint64,uint32,uint32,uint16,bytes32[7]) blk) +// Solidity: function getBlock(uint64 blockId) view returns((bytes32,address,uint96,uint64,uint64,uint64,uint32,uint32,bytes32[7]) blk) func (_TaikoL1 *TaikoL1CallerSession) GetBlock(blockId uint64) (TaikoDataBlock, error) { return _TaikoL1.Contract.GetBlock(&_TaikoL1.CallOpts, blockId) } // GetConfig is a free data retrieval call binding the contract method 0xc3f909d4. // -// Solidity: function getConfig() pure returns((uint256,bool,uint64,uint64,uint64,uint32,uint32,uint24,uint256,uint256,uint96,uint256,uint64,uint64,uint96,uint96,uint256,uint256)) +// Solidity: function getConfig() view returns((uint64,uint64,uint64,uint64,uint32,uint24,uint24,bool,uint96,uint256,uint64,uint64,uint96,uint96,uint256,uint256)) func (_TaikoL1 *TaikoL1Caller) GetConfig(opts *bind.CallOpts) (TaikoDataConfig, error) { var out []interface{} err := _TaikoL1.contract.Call(opts, &out, "getConfig") @@ -397,80 +407,18 @@ func (_TaikoL1 *TaikoL1Caller) GetConfig(opts *bind.CallOpts) (TaikoDataConfig, // GetConfig is a free data retrieval call binding the contract method 0xc3f909d4. // -// Solidity: function getConfig() pure returns((uint256,bool,uint64,uint64,uint64,uint32,uint32,uint24,uint256,uint256,uint96,uint256,uint64,uint64,uint96,uint96,uint256,uint256)) +// Solidity: function getConfig() view returns((uint64,uint64,uint64,uint64,uint32,uint24,uint24,bool,uint96,uint256,uint64,uint64,uint96,uint96,uint256,uint256)) func (_TaikoL1 *TaikoL1Session) GetConfig() (TaikoDataConfig, error) { return _TaikoL1.Contract.GetConfig(&_TaikoL1.CallOpts) } // GetConfig is a free data retrieval call binding the contract method 0xc3f909d4. // -// Solidity: function getConfig() pure returns((uint256,bool,uint64,uint64,uint64,uint32,uint32,uint24,uint256,uint256,uint96,uint256,uint64,uint64,uint96,uint96,uint256,uint256)) +// Solidity: function getConfig() view returns((uint64,uint64,uint64,uint64,uint32,uint24,uint24,bool,uint96,uint256,uint64,uint64,uint96,uint96,uint256,uint256)) func (_TaikoL1 *TaikoL1CallerSession) GetConfig() (TaikoDataConfig, error) { return _TaikoL1.Contract.GetConfig(&_TaikoL1.CallOpts) } -// GetCrossChainBlockHash is a free data retrieval call binding the contract method 0xbdd6bc36. -// -// Solidity: function getCrossChainBlockHash(uint64 blockId) view returns(bytes32) -func (_TaikoL1 *TaikoL1Caller) GetCrossChainBlockHash(opts *bind.CallOpts, blockId uint64) ([32]byte, error) { - var out []interface{} - err := _TaikoL1.contract.Call(opts, &out, "getCrossChainBlockHash", blockId) - - if err != nil { - return *new([32]byte), err - } - - out0 := *abi.ConvertType(out[0], new([32]byte)).(*[32]byte) - - return out0, err - -} - -// GetCrossChainBlockHash is a free data retrieval call binding the contract method 0xbdd6bc36. -// -// Solidity: function getCrossChainBlockHash(uint64 blockId) view returns(bytes32) -func (_TaikoL1 *TaikoL1Session) GetCrossChainBlockHash(blockId uint64) ([32]byte, error) { - return _TaikoL1.Contract.GetCrossChainBlockHash(&_TaikoL1.CallOpts, blockId) -} - -// GetCrossChainBlockHash is a free data retrieval call binding the contract method 0xbdd6bc36. -// -// Solidity: function getCrossChainBlockHash(uint64 blockId) view returns(bytes32) -func (_TaikoL1 *TaikoL1CallerSession) GetCrossChainBlockHash(blockId uint64) ([32]byte, error) { - return _TaikoL1.Contract.GetCrossChainBlockHash(&_TaikoL1.CallOpts, blockId) -} - -// GetCrossChainSignalRoot is a free data retrieval call binding the contract method 0x0599d294. -// -// Solidity: function getCrossChainSignalRoot(uint64 blockId) view returns(bytes32) -func (_TaikoL1 *TaikoL1Caller) GetCrossChainSignalRoot(opts *bind.CallOpts, blockId uint64) ([32]byte, error) { - var out []interface{} - err := _TaikoL1.contract.Call(opts, &out, "getCrossChainSignalRoot", blockId) - - if err != nil { - return *new([32]byte), err - } - - out0 := *abi.ConvertType(out[0], new([32]byte)).(*[32]byte) - - return out0, err - -} - -// GetCrossChainSignalRoot is a free data retrieval call binding the contract method 0x0599d294. -// -// Solidity: function getCrossChainSignalRoot(uint64 blockId) view returns(bytes32) -func (_TaikoL1 *TaikoL1Session) GetCrossChainSignalRoot(blockId uint64) ([32]byte, error) { - return _TaikoL1.Contract.GetCrossChainSignalRoot(&_TaikoL1.CallOpts, blockId) -} - -// GetCrossChainSignalRoot is a free data retrieval call binding the contract method 0x0599d294. -// -// Solidity: function getCrossChainSignalRoot(uint64 blockId) view returns(bytes32) -func (_TaikoL1 *TaikoL1CallerSession) GetCrossChainSignalRoot(blockId uint64) ([32]byte, error) { - return _TaikoL1.Contract.GetCrossChainSignalRoot(&_TaikoL1.CallOpts, blockId) -} - // GetMinTier is a free data retrieval call binding the contract method 0x59ab4e23. // // Solidity: function getMinTier(uint256 rand) view returns(uint16) @@ -504,35 +452,80 @@ func (_TaikoL1 *TaikoL1CallerSession) GetMinTier(rand *big.Int) (uint16, error) // GetStateVariables is a free data retrieval call binding the contract method 0xdde89cf5. // -// Solidity: function getStateVariables() view returns((uint64,uint64,uint64,uint64,uint64,uint64)) -func (_TaikoL1 *TaikoL1Caller) GetStateVariables(opts *bind.CallOpts) (TaikoDataStateVariables, error) { +// Solidity: function getStateVariables() view returns((uint64,uint64,uint64,uint64) a, (uint64,uint64,bool) b) +func (_TaikoL1 *TaikoL1Caller) GetStateVariables(opts *bind.CallOpts) (struct { + A TaikoDataSlotA + B TaikoDataSlotB +}, error) { var out []interface{} err := _TaikoL1.contract.Call(opts, &out, "getStateVariables") + outstruct := new(struct { + A TaikoDataSlotA + B TaikoDataSlotB + }) if err != nil { - return *new(TaikoDataStateVariables), err + return *outstruct, err } - out0 := *abi.ConvertType(out[0], new(TaikoDataStateVariables)).(*TaikoDataStateVariables) + outstruct.A = *abi.ConvertType(out[0], new(TaikoDataSlotA)).(*TaikoDataSlotA) + outstruct.B = *abi.ConvertType(out[1], new(TaikoDataSlotB)).(*TaikoDataSlotB) - return out0, err + return *outstruct, err } // GetStateVariables is a free data retrieval call binding the contract method 0xdde89cf5. // -// Solidity: function getStateVariables() view returns((uint64,uint64,uint64,uint64,uint64,uint64)) -func (_TaikoL1 *TaikoL1Session) GetStateVariables() (TaikoDataStateVariables, error) { +// Solidity: function getStateVariables() view returns((uint64,uint64,uint64,uint64) a, (uint64,uint64,bool) b) +func (_TaikoL1 *TaikoL1Session) GetStateVariables() (struct { + A TaikoDataSlotA + B TaikoDataSlotB +}, error) { return _TaikoL1.Contract.GetStateVariables(&_TaikoL1.CallOpts) } // GetStateVariables is a free data retrieval call binding the contract method 0xdde89cf5. // -// Solidity: function getStateVariables() view returns((uint64,uint64,uint64,uint64,uint64,uint64)) -func (_TaikoL1 *TaikoL1CallerSession) GetStateVariables() (TaikoDataStateVariables, error) { +// Solidity: function getStateVariables() view returns((uint64,uint64,uint64,uint64) a, (uint64,uint64,bool) b) +func (_TaikoL1 *TaikoL1CallerSession) GetStateVariables() (struct { + A TaikoDataSlotA + B TaikoDataSlotB +}, error) { return _TaikoL1.Contract.GetStateVariables(&_TaikoL1.CallOpts) } +// GetSyncedSnippet is a free data retrieval call binding the contract method 0x8cfb0459. +// +// Solidity: function getSyncedSnippet(uint64 blockId) view returns((uint64,uint64,bytes32,bytes32)) +func (_TaikoL1 *TaikoL1Caller) GetSyncedSnippet(opts *bind.CallOpts, blockId uint64) (ICrossChainSyncSnippet, error) { + var out []interface{} + err := _TaikoL1.contract.Call(opts, &out, "getSyncedSnippet", blockId) + + if err != nil { + return *new(ICrossChainSyncSnippet), err + } + + out0 := *abi.ConvertType(out[0], new(ICrossChainSyncSnippet)).(*ICrossChainSyncSnippet) + + return out0, err + +} + +// GetSyncedSnippet is a free data retrieval call binding the contract method 0x8cfb0459. +// +// Solidity: function getSyncedSnippet(uint64 blockId) view returns((uint64,uint64,bytes32,bytes32)) +func (_TaikoL1 *TaikoL1Session) GetSyncedSnippet(blockId uint64) (ICrossChainSyncSnippet, error) { + return _TaikoL1.Contract.GetSyncedSnippet(&_TaikoL1.CallOpts, blockId) +} + +// GetSyncedSnippet is a free data retrieval call binding the contract method 0x8cfb0459. +// +// Solidity: function getSyncedSnippet(uint64 blockId) view returns((uint64,uint64,bytes32,bytes32)) +func (_TaikoL1 *TaikoL1CallerSession) GetSyncedSnippet(blockId uint64) (ICrossChainSyncSnippet, error) { + return _TaikoL1.Contract.GetSyncedSnippet(&_TaikoL1.CallOpts, blockId) +} + // GetTaikoTokenBalance is a free data retrieval call binding the contract method 0x8dff9cea. // // Solidity: function getTaikoTokenBalance(address user) view returns(uint256) @@ -566,7 +559,7 @@ func (_TaikoL1 *TaikoL1CallerSession) GetTaikoTokenBalance(user common.Address) // GetTier is a free data retrieval call binding the contract method 0x576c3de7. // -// Solidity: function getTier(uint16 tierId) view returns((bytes32,uint96,uint96,uint24,uint16)) +// Solidity: function getTier(uint16 tierId) view returns((bytes32,uint96,uint96,uint24,uint16,uint8)) func (_TaikoL1 *TaikoL1Caller) GetTier(opts *bind.CallOpts, tierId uint16) (ITierProviderTier, error) { var out []interface{} err := _TaikoL1.contract.Call(opts, &out, "getTier", tierId) @@ -583,21 +576,21 @@ func (_TaikoL1 *TaikoL1Caller) GetTier(opts *bind.CallOpts, tierId uint16) (ITie // GetTier is a free data retrieval call binding the contract method 0x576c3de7. // -// Solidity: function getTier(uint16 tierId) view returns((bytes32,uint96,uint96,uint24,uint16)) +// Solidity: function getTier(uint16 tierId) view returns((bytes32,uint96,uint96,uint24,uint16,uint8)) func (_TaikoL1 *TaikoL1Session) GetTier(tierId uint16) (ITierProviderTier, error) { return _TaikoL1.Contract.GetTier(&_TaikoL1.CallOpts, tierId) } // GetTier is a free data retrieval call binding the contract method 0x576c3de7. // -// Solidity: function getTier(uint16 tierId) view returns((bytes32,uint96,uint96,uint24,uint16)) +// Solidity: function getTier(uint16 tierId) view returns((bytes32,uint96,uint96,uint24,uint16,uint8)) func (_TaikoL1 *TaikoL1CallerSession) GetTier(tierId uint16) (ITierProviderTier, error) { return _TaikoL1.Contract.GetTier(&_TaikoL1.CallOpts, tierId) } // GetTierIds is a free data retrieval call binding the contract method 0xd8cde1c6. // -// Solidity: function getTierIds() view returns(uint16[]) +// Solidity: function getTierIds() view returns(uint16[] ids) func (_TaikoL1 *TaikoL1Caller) GetTierIds(opts *bind.CallOpts) ([]uint16, error) { var out []interface{} err := _TaikoL1.contract.Call(opts, &out, "getTierIds") @@ -614,30 +607,30 @@ func (_TaikoL1 *TaikoL1Caller) GetTierIds(opts *bind.CallOpts) ([]uint16, error) // GetTierIds is a free data retrieval call binding the contract method 0xd8cde1c6. // -// Solidity: function getTierIds() view returns(uint16[]) +// Solidity: function getTierIds() view returns(uint16[] ids) func (_TaikoL1 *TaikoL1Session) GetTierIds() ([]uint16, error) { return _TaikoL1.Contract.GetTierIds(&_TaikoL1.CallOpts) } // GetTierIds is a free data retrieval call binding the contract method 0xd8cde1c6. // -// Solidity: function getTierIds() view returns(uint16[]) +// Solidity: function getTierIds() view returns(uint16[] ids) func (_TaikoL1 *TaikoL1CallerSession) GetTierIds() ([]uint16, error) { return _TaikoL1.Contract.GetTierIds(&_TaikoL1.CallOpts) } // GetTransition is a free data retrieval call binding the contract method 0xfd257e29. // -// Solidity: function getTransition(uint64 blockId, bytes32 parentHash) view returns((bytes32,bytes32,bytes32,address,uint96,address,uint96,uint64,uint16,bytes32[4])) -func (_TaikoL1 *TaikoL1Caller) GetTransition(opts *bind.CallOpts, blockId uint64, parentHash [32]byte) (TaikoDataTransition, error) { +// Solidity: function getTransition(uint64 blockId, bytes32 parentHash) view returns((bytes32,bytes32,bytes32,address,uint96,address,uint96,uint64,uint16,uint8,bytes32[4])) +func (_TaikoL1 *TaikoL1Caller) GetTransition(opts *bind.CallOpts, blockId uint64, parentHash [32]byte) (TaikoDataTransitionState, error) { var out []interface{} err := _TaikoL1.contract.Call(opts, &out, "getTransition", blockId, parentHash) if err != nil { - return *new(TaikoDataTransition), err + return *new(TaikoDataTransitionState), err } - out0 := *abi.ConvertType(out[0], new(TaikoDataTransition)).(*TaikoDataTransition) + out0 := *abi.ConvertType(out[0], new(TaikoDataTransitionState)).(*TaikoDataTransitionState) return out0, err @@ -645,18 +638,80 @@ func (_TaikoL1 *TaikoL1Caller) GetTransition(opts *bind.CallOpts, blockId uint64 // GetTransition is a free data retrieval call binding the contract method 0xfd257e29. // -// Solidity: function getTransition(uint64 blockId, bytes32 parentHash) view returns((bytes32,bytes32,bytes32,address,uint96,address,uint96,uint64,uint16,bytes32[4])) -func (_TaikoL1 *TaikoL1Session) GetTransition(blockId uint64, parentHash [32]byte) (TaikoDataTransition, error) { +// Solidity: function getTransition(uint64 blockId, bytes32 parentHash) view returns((bytes32,bytes32,bytes32,address,uint96,address,uint96,uint64,uint16,uint8,bytes32[4])) +func (_TaikoL1 *TaikoL1Session) GetTransition(blockId uint64, parentHash [32]byte) (TaikoDataTransitionState, error) { return _TaikoL1.Contract.GetTransition(&_TaikoL1.CallOpts, blockId, parentHash) } // GetTransition is a free data retrieval call binding the contract method 0xfd257e29. // -// Solidity: function getTransition(uint64 blockId, bytes32 parentHash) view returns((bytes32,bytes32,bytes32,address,uint96,address,uint96,uint64,uint16,bytes32[4])) -func (_TaikoL1 *TaikoL1CallerSession) GetTransition(blockId uint64, parentHash [32]byte) (TaikoDataTransition, error) { +// Solidity: function getTransition(uint64 blockId, bytes32 parentHash) view returns((bytes32,bytes32,bytes32,address,uint96,address,uint96,uint64,uint16,uint8,bytes32[4])) +func (_TaikoL1 *TaikoL1CallerSession) GetTransition(blockId uint64, parentHash [32]byte) (TaikoDataTransitionState, error) { return _TaikoL1.Contract.GetTransition(&_TaikoL1.CallOpts, blockId, parentHash) } +// IsBlobReusable is a free data retrieval call binding the contract method 0xb67d7638. +// +// Solidity: function isBlobReusable(bytes32 blobHash) view returns(bool) +func (_TaikoL1 *TaikoL1Caller) IsBlobReusable(opts *bind.CallOpts, blobHash [32]byte) (bool, error) { + var out []interface{} + err := _TaikoL1.contract.Call(opts, &out, "isBlobReusable", blobHash) + + if err != nil { + return *new(bool), err + } + + out0 := *abi.ConvertType(out[0], new(bool)).(*bool) + + return out0, err + +} + +// IsBlobReusable is a free data retrieval call binding the contract method 0xb67d7638. +// +// Solidity: function isBlobReusable(bytes32 blobHash) view returns(bool) +func (_TaikoL1 *TaikoL1Session) IsBlobReusable(blobHash [32]byte) (bool, error) { + return _TaikoL1.Contract.IsBlobReusable(&_TaikoL1.CallOpts, blobHash) +} + +// IsBlobReusable is a free data retrieval call binding the contract method 0xb67d7638. +// +// Solidity: function isBlobReusable(bytes32 blobHash) view returns(bool) +func (_TaikoL1 *TaikoL1CallerSession) IsBlobReusable(blobHash [32]byte) (bool, error) { + return _TaikoL1.Contract.IsBlobReusable(&_TaikoL1.CallOpts, blobHash) +} + +// IsConfigValid is a free data retrieval call binding the contract method 0xe3f1bdc5. +// +// Solidity: function isConfigValid() view returns(bool) +func (_TaikoL1 *TaikoL1Caller) IsConfigValid(opts *bind.CallOpts) (bool, error) { + var out []interface{} + err := _TaikoL1.contract.Call(opts, &out, "isConfigValid") + + if err != nil { + return *new(bool), err + } + + out0 := *abi.ConvertType(out[0], new(bool)).(*bool) + + return out0, err + +} + +// IsConfigValid is a free data retrieval call binding the contract method 0xe3f1bdc5. +// +// Solidity: function isConfigValid() view returns(bool) +func (_TaikoL1 *TaikoL1Session) IsConfigValid() (bool, error) { + return _TaikoL1.Contract.IsConfigValid(&_TaikoL1.CallOpts) +} + +// IsConfigValid is a free data retrieval call binding the contract method 0xe3f1bdc5. +// +// Solidity: function isConfigValid() view returns(bool) +func (_TaikoL1 *TaikoL1CallerSession) IsConfigValid() (bool, error) { + return _TaikoL1.Contract.IsConfigValid(&_TaikoL1.CallOpts) +} + // Owner is a free data retrieval call binding the contract method 0x8da5cb5b. // // Solidity: function owner() view returns(address) @@ -688,10 +743,72 @@ func (_TaikoL1 *TaikoL1CallerSession) Owner() (common.Address, error) { return _TaikoL1.Contract.Owner(&_TaikoL1.CallOpts) } -// Resolve is a free data retrieval call binding the contract method 0x6c6563f6. +// Paused is a free data retrieval call binding the contract method 0x5c975abb. +// +// Solidity: function paused() view returns(bool) +func (_TaikoL1 *TaikoL1Caller) Paused(opts *bind.CallOpts) (bool, error) { + var out []interface{} + err := _TaikoL1.contract.Call(opts, &out, "paused") + + if err != nil { + return *new(bool), err + } + + out0 := *abi.ConvertType(out[0], new(bool)).(*bool) + + return out0, err + +} + +// Paused is a free data retrieval call binding the contract method 0x5c975abb. +// +// Solidity: function paused() view returns(bool) +func (_TaikoL1 *TaikoL1Session) Paused() (bool, error) { + return _TaikoL1.Contract.Paused(&_TaikoL1.CallOpts) +} + +// Paused is a free data retrieval call binding the contract method 0x5c975abb. +// +// Solidity: function paused() view returns(bool) +func (_TaikoL1 *TaikoL1CallerSession) Paused() (bool, error) { + return _TaikoL1.Contract.Paused(&_TaikoL1.CallOpts) +} + +// PendingOwner is a free data retrieval call binding the contract method 0xe30c3978. +// +// Solidity: function pendingOwner() view returns(address) +func (_TaikoL1 *TaikoL1Caller) PendingOwner(opts *bind.CallOpts) (common.Address, error) { + var out []interface{} + err := _TaikoL1.contract.Call(opts, &out, "pendingOwner") + + if err != nil { + return *new(common.Address), err + } + + out0 := *abi.ConvertType(out[0], new(common.Address)).(*common.Address) + + return out0, err + +} + +// PendingOwner is a free data retrieval call binding the contract method 0xe30c3978. +// +// Solidity: function pendingOwner() view returns(address) +func (_TaikoL1 *TaikoL1Session) PendingOwner() (common.Address, error) { + return _TaikoL1.Contract.PendingOwner(&_TaikoL1.CallOpts) +} + +// PendingOwner is a free data retrieval call binding the contract method 0xe30c3978. +// +// Solidity: function pendingOwner() view returns(address) +func (_TaikoL1 *TaikoL1CallerSession) PendingOwner() (common.Address, error) { + return _TaikoL1.Contract.PendingOwner(&_TaikoL1.CallOpts) +} + +// Resolve is a free data retrieval call binding the contract method 0x3eb6b8cf. // -// Solidity: function resolve(uint256 chainId, bytes32 name, bool allowZeroAddress) view returns(address addr) -func (_TaikoL1 *TaikoL1Caller) Resolve(opts *bind.CallOpts, chainId *big.Int, name [32]byte, allowZeroAddress bool) (common.Address, error) { +// Solidity: function resolve(uint64 chainId, bytes32 name, bool allowZeroAddress) view returns(address addr) +func (_TaikoL1 *TaikoL1Caller) Resolve(opts *bind.CallOpts, chainId uint64, name [32]byte, allowZeroAddress bool) (common.Address, error) { var out []interface{} err := _TaikoL1.contract.Call(opts, &out, "resolve", chainId, name, allowZeroAddress) @@ -705,17 +822,17 @@ func (_TaikoL1 *TaikoL1Caller) Resolve(opts *bind.CallOpts, chainId *big.Int, na } -// Resolve is a free data retrieval call binding the contract method 0x6c6563f6. +// Resolve is a free data retrieval call binding the contract method 0x3eb6b8cf. // -// Solidity: function resolve(uint256 chainId, bytes32 name, bool allowZeroAddress) view returns(address addr) -func (_TaikoL1 *TaikoL1Session) Resolve(chainId *big.Int, name [32]byte, allowZeroAddress bool) (common.Address, error) { +// Solidity: function resolve(uint64 chainId, bytes32 name, bool allowZeroAddress) view returns(address addr) +func (_TaikoL1 *TaikoL1Session) Resolve(chainId uint64, name [32]byte, allowZeroAddress bool) (common.Address, error) { return _TaikoL1.Contract.Resolve(&_TaikoL1.CallOpts, chainId, name, allowZeroAddress) } -// Resolve is a free data retrieval call binding the contract method 0x6c6563f6. +// Resolve is a free data retrieval call binding the contract method 0x3eb6b8cf. // -// Solidity: function resolve(uint256 chainId, bytes32 name, bool allowZeroAddress) view returns(address addr) -func (_TaikoL1 *TaikoL1CallerSession) Resolve(chainId *big.Int, name [32]byte, allowZeroAddress bool) (common.Address, error) { +// Solidity: function resolve(uint64 chainId, bytes32 name, bool allowZeroAddress) view returns(address addr) +func (_TaikoL1 *TaikoL1CallerSession) Resolve(chainId uint64, name [32]byte, allowZeroAddress bool) (common.Address, error) { return _TaikoL1.Contract.Resolve(&_TaikoL1.CallOpts, chainId, name, allowZeroAddress) } @@ -752,7 +869,7 @@ func (_TaikoL1 *TaikoL1CallerSession) Resolve0(name [32]byte, allowZeroAddress b // State is a free data retrieval call binding the contract method 0xc19d93fb. // -// Solidity: function state() view returns((uint64,uint64,uint64,uint64) slotA, (uint64,uint64,uint64,uint64) slotB) +// Solidity: function state() view returns((uint64,uint64,uint64,uint64) slotA, (uint64,uint64,bool) slotB) func (_TaikoL1 *TaikoL1Caller) State(opts *bind.CallOpts) (struct { SlotA TaikoDataSlotA SlotB TaikoDataSlotB @@ -777,7 +894,7 @@ func (_TaikoL1 *TaikoL1Caller) State(opts *bind.CallOpts) (struct { // State is a free data retrieval call binding the contract method 0xc19d93fb. // -// Solidity: function state() view returns((uint64,uint64,uint64,uint64) slotA, (uint64,uint64,uint64,uint64) slotB) +// Solidity: function state() view returns((uint64,uint64,uint64,uint64) slotA, (uint64,uint64,bool) slotB) func (_TaikoL1 *TaikoL1Session) State() (struct { SlotA TaikoDataSlotA SlotB TaikoDataSlotB @@ -787,7 +904,7 @@ func (_TaikoL1 *TaikoL1Session) State() (struct { // State is a free data retrieval call binding the contract method 0xc19d93fb. // -// Solidity: function state() view returns((uint64,uint64,uint64,uint64) slotA, (uint64,uint64,uint64,uint64) slotB) +// Solidity: function state() view returns((uint64,uint64,uint64,uint64) slotA, (uint64,uint64,bool) slotB) func (_TaikoL1 *TaikoL1CallerSession) State() (struct { SlotA TaikoDataSlotA SlotB TaikoDataSlotB @@ -795,6 +912,27 @@ func (_TaikoL1 *TaikoL1CallerSession) State() (struct { return _TaikoL1.Contract.State(&_TaikoL1.CallOpts) } +// AcceptOwnership is a paid mutator transaction binding the contract method 0x79ba5097. +// +// Solidity: function acceptOwnership() returns() +func (_TaikoL1 *TaikoL1Transactor) AcceptOwnership(opts *bind.TransactOpts) (*types.Transaction, error) { + return _TaikoL1.contract.Transact(opts, "acceptOwnership") +} + +// AcceptOwnership is a paid mutator transaction binding the contract method 0x79ba5097. +// +// Solidity: function acceptOwnership() returns() +func (_TaikoL1 *TaikoL1Session) AcceptOwnership() (*types.Transaction, error) { + return _TaikoL1.Contract.AcceptOwnership(&_TaikoL1.TransactOpts) +} + +// AcceptOwnership is a paid mutator transaction binding the contract method 0x79ba5097. +// +// Solidity: function acceptOwnership() returns() +func (_TaikoL1 *TaikoL1TransactorSession) AcceptOwnership() (*types.Transaction, error) { + return _TaikoL1.Contract.AcceptOwnership(&_TaikoL1.TransactOpts) +} + // DepositEtherToL2 is a paid mutator transaction binding the contract method 0x047a289d. // // Solidity: function depositEtherToL2(address recipient) payable returns() @@ -858,46 +996,67 @@ func (_TaikoL1 *TaikoL1TransactorSession) Init(_addressManager common.Address, _ return _TaikoL1.Contract.Init(&_TaikoL1.TransactOpts, _addressManager, _genesisBlockHash) } -// OwnerWithdrawTaikoToken is a paid mutator transaction binding the contract method 0x6edda419. +// Pause is a paid mutator transaction binding the contract method 0x8456cb59. +// +// Solidity: function pause() returns() +func (_TaikoL1 *TaikoL1Transactor) Pause(opts *bind.TransactOpts) (*types.Transaction, error) { + return _TaikoL1.contract.Transact(opts, "pause") +} + +// Pause is a paid mutator transaction binding the contract method 0x8456cb59. +// +// Solidity: function pause() returns() +func (_TaikoL1 *TaikoL1Session) Pause() (*types.Transaction, error) { + return _TaikoL1.Contract.Pause(&_TaikoL1.TransactOpts) +} + +// Pause is a paid mutator transaction binding the contract method 0x8456cb59. +// +// Solidity: function pause() returns() +func (_TaikoL1 *TaikoL1TransactorSession) Pause() (*types.Transaction, error) { + return _TaikoL1.Contract.Pause(&_TaikoL1.TransactOpts) +} + +// PauseProving is a paid mutator transaction binding the contract method 0xff00c391. // -// Solidity: function ownerWithdrawTaikoToken(address to, uint256 amount) returns() -func (_TaikoL1 *TaikoL1Transactor) OwnerWithdrawTaikoToken(opts *bind.TransactOpts, to common.Address, amount *big.Int) (*types.Transaction, error) { - return _TaikoL1.contract.Transact(opts, "ownerWithdrawTaikoToken", to, amount) +// Solidity: function pauseProving(bool pause) returns() +func (_TaikoL1 *TaikoL1Transactor) PauseProving(opts *bind.TransactOpts, pause bool) (*types.Transaction, error) { + return _TaikoL1.contract.Transact(opts, "pauseProving", pause) } -// OwnerWithdrawTaikoToken is a paid mutator transaction binding the contract method 0x6edda419. +// PauseProving is a paid mutator transaction binding the contract method 0xff00c391. // -// Solidity: function ownerWithdrawTaikoToken(address to, uint256 amount) returns() -func (_TaikoL1 *TaikoL1Session) OwnerWithdrawTaikoToken(to common.Address, amount *big.Int) (*types.Transaction, error) { - return _TaikoL1.Contract.OwnerWithdrawTaikoToken(&_TaikoL1.TransactOpts, to, amount) +// Solidity: function pauseProving(bool pause) returns() +func (_TaikoL1 *TaikoL1Session) PauseProving(pause bool) (*types.Transaction, error) { + return _TaikoL1.Contract.PauseProving(&_TaikoL1.TransactOpts, pause) } -// OwnerWithdrawTaikoToken is a paid mutator transaction binding the contract method 0x6edda419. +// PauseProving is a paid mutator transaction binding the contract method 0xff00c391. // -// Solidity: function ownerWithdrawTaikoToken(address to, uint256 amount) returns() -func (_TaikoL1 *TaikoL1TransactorSession) OwnerWithdrawTaikoToken(to common.Address, amount *big.Int) (*types.Transaction, error) { - return _TaikoL1.Contract.OwnerWithdrawTaikoToken(&_TaikoL1.TransactOpts, to, amount) +// Solidity: function pauseProving(bool pause) returns() +func (_TaikoL1 *TaikoL1TransactorSession) PauseProving(pause bool) (*types.Transaction, error) { + return _TaikoL1.Contract.PauseProving(&_TaikoL1.TransactOpts, pause) } -// ProposeBlock is a paid mutator transaction binding the contract method 0x04dc4c8b. +// ProposeBlock is a paid mutator transaction binding the contract method 0xef16e845. // -// Solidity: function proposeBlock(bytes32 txListHash, bytes32 extraData, bytes assignment, bytes txList) payable returns((bytes32,bytes32,bytes32,bytes32,uint64,uint64,uint64,uint32,address,(address,uint96,uint64)[]) meta) -func (_TaikoL1 *TaikoL1Transactor) ProposeBlock(opts *bind.TransactOpts, txListHash [32]byte, extraData [32]byte, assignment []byte, txList []byte) (*types.Transaction, error) { - return _TaikoL1.contract.Transact(opts, "proposeBlock", txListHash, extraData, assignment, txList) +// Solidity: function proposeBlock(bytes params, bytes txList) payable returns((bytes32,bytes32,bytes32,bytes32,bytes32,address,uint64,uint32,uint64,uint64,uint24,uint24,uint16,bool,bytes32) meta, (address,uint96,uint64)[] depositsProcessed) +func (_TaikoL1 *TaikoL1Transactor) ProposeBlock(opts *bind.TransactOpts, params []byte, txList []byte) (*types.Transaction, error) { + return _TaikoL1.contract.Transact(opts, "proposeBlock", params, txList) } -// ProposeBlock is a paid mutator transaction binding the contract method 0x04dc4c8b. +// ProposeBlock is a paid mutator transaction binding the contract method 0xef16e845. // -// Solidity: function proposeBlock(bytes32 txListHash, bytes32 extraData, bytes assignment, bytes txList) payable returns((bytes32,bytes32,bytes32,bytes32,uint64,uint64,uint64,uint32,address,(address,uint96,uint64)[]) meta) -func (_TaikoL1 *TaikoL1Session) ProposeBlock(txListHash [32]byte, extraData [32]byte, assignment []byte, txList []byte) (*types.Transaction, error) { - return _TaikoL1.Contract.ProposeBlock(&_TaikoL1.TransactOpts, txListHash, extraData, assignment, txList) +// Solidity: function proposeBlock(bytes params, bytes txList) payable returns((bytes32,bytes32,bytes32,bytes32,bytes32,address,uint64,uint32,uint64,uint64,uint24,uint24,uint16,bool,bytes32) meta, (address,uint96,uint64)[] depositsProcessed) +func (_TaikoL1 *TaikoL1Session) ProposeBlock(params []byte, txList []byte) (*types.Transaction, error) { + return _TaikoL1.Contract.ProposeBlock(&_TaikoL1.TransactOpts, params, txList) } -// ProposeBlock is a paid mutator transaction binding the contract method 0x04dc4c8b. +// ProposeBlock is a paid mutator transaction binding the contract method 0xef16e845. // -// Solidity: function proposeBlock(bytes32 txListHash, bytes32 extraData, bytes assignment, bytes txList) payable returns((bytes32,bytes32,bytes32,bytes32,uint64,uint64,uint64,uint32,address,(address,uint96,uint64)[]) meta) -func (_TaikoL1 *TaikoL1TransactorSession) ProposeBlock(txListHash [32]byte, extraData [32]byte, assignment []byte, txList []byte) (*types.Transaction, error) { - return _TaikoL1.Contract.ProposeBlock(&_TaikoL1.TransactOpts, txListHash, extraData, assignment, txList) +// Solidity: function proposeBlock(bytes params, bytes txList) payable returns((bytes32,bytes32,bytes32,bytes32,bytes32,address,uint64,uint32,uint64,uint64,uint24,uint24,uint16,bool,bytes32) meta, (address,uint96,uint64)[] depositsProcessed) +func (_TaikoL1 *TaikoL1TransactorSession) ProposeBlock(params []byte, txList []byte) (*types.Transaction, error) { + return _TaikoL1.Contract.ProposeBlock(&_TaikoL1.TransactOpts, params, txList) } // ProveBlock is a paid mutator transaction binding the contract method 0x10d008bd. @@ -942,27 +1101,6 @@ func (_TaikoL1 *TaikoL1TransactorSession) RenounceOwnership() (*types.Transactio return _TaikoL1.Contract.RenounceOwnership(&_TaikoL1.TransactOpts) } -// SetAddressManager is a paid mutator transaction binding the contract method 0x0652b57a. -// -// Solidity: function setAddressManager(address newAddressManager) returns() -func (_TaikoL1 *TaikoL1Transactor) SetAddressManager(opts *bind.TransactOpts, newAddressManager common.Address) (*types.Transaction, error) { - return _TaikoL1.contract.Transact(opts, "setAddressManager", newAddressManager) -} - -// SetAddressManager is a paid mutator transaction binding the contract method 0x0652b57a. -// -// Solidity: function setAddressManager(address newAddressManager) returns() -func (_TaikoL1 *TaikoL1Session) SetAddressManager(newAddressManager common.Address) (*types.Transaction, error) { - return _TaikoL1.Contract.SetAddressManager(&_TaikoL1.TransactOpts, newAddressManager) -} - -// SetAddressManager is a paid mutator transaction binding the contract method 0x0652b57a. -// -// Solidity: function setAddressManager(address newAddressManager) returns() -func (_TaikoL1 *TaikoL1TransactorSession) SetAddressManager(newAddressManager common.Address) (*types.Transaction, error) { - return _TaikoL1.Contract.SetAddressManager(&_TaikoL1.TransactOpts, newAddressManager) -} - // TransferOwnership is a paid mutator transaction binding the contract method 0xf2fde38b. // // Solidity: function transferOwnership(address newOwner) returns() @@ -984,25 +1122,46 @@ func (_TaikoL1 *TaikoL1TransactorSession) TransferOwnership(newOwner common.Addr return _TaikoL1.Contract.TransferOwnership(&_TaikoL1.TransactOpts, newOwner) } +// Unpause is a paid mutator transaction binding the contract method 0x3f4ba83a. +// +// Solidity: function unpause() returns() +func (_TaikoL1 *TaikoL1Transactor) Unpause(opts *bind.TransactOpts) (*types.Transaction, error) { + return _TaikoL1.contract.Transact(opts, "unpause") +} + +// Unpause is a paid mutator transaction binding the contract method 0x3f4ba83a. +// +// Solidity: function unpause() returns() +func (_TaikoL1 *TaikoL1Session) Unpause() (*types.Transaction, error) { + return _TaikoL1.Contract.Unpause(&_TaikoL1.TransactOpts) +} + +// Unpause is a paid mutator transaction binding the contract method 0x3f4ba83a. +// +// Solidity: function unpause() returns() +func (_TaikoL1 *TaikoL1TransactorSession) Unpause() (*types.Transaction, error) { + return _TaikoL1.Contract.Unpause(&_TaikoL1.TransactOpts) +} + // VerifyBlocks is a paid mutator transaction binding the contract method 0x8778209d. // -// Solidity: function verifyBlocks(uint64 maxBlocks) returns() -func (_TaikoL1 *TaikoL1Transactor) VerifyBlocks(opts *bind.TransactOpts, maxBlocks uint64) (*types.Transaction, error) { - return _TaikoL1.contract.Transact(opts, "verifyBlocks", maxBlocks) +// Solidity: function verifyBlocks(uint64 maxBlocksToVerify) returns() +func (_TaikoL1 *TaikoL1Transactor) VerifyBlocks(opts *bind.TransactOpts, maxBlocksToVerify uint64) (*types.Transaction, error) { + return _TaikoL1.contract.Transact(opts, "verifyBlocks", maxBlocksToVerify) } // VerifyBlocks is a paid mutator transaction binding the contract method 0x8778209d. // -// Solidity: function verifyBlocks(uint64 maxBlocks) returns() -func (_TaikoL1 *TaikoL1Session) VerifyBlocks(maxBlocks uint64) (*types.Transaction, error) { - return _TaikoL1.Contract.VerifyBlocks(&_TaikoL1.TransactOpts, maxBlocks) +// Solidity: function verifyBlocks(uint64 maxBlocksToVerify) returns() +func (_TaikoL1 *TaikoL1Session) VerifyBlocks(maxBlocksToVerify uint64) (*types.Transaction, error) { + return _TaikoL1.Contract.VerifyBlocks(&_TaikoL1.TransactOpts, maxBlocksToVerify) } // VerifyBlocks is a paid mutator transaction binding the contract method 0x8778209d. // -// Solidity: function verifyBlocks(uint64 maxBlocks) returns() -func (_TaikoL1 *TaikoL1TransactorSession) VerifyBlocks(maxBlocks uint64) (*types.Transaction, error) { - return _TaikoL1.Contract.VerifyBlocks(&_TaikoL1.TransactOpts, maxBlocks) +// Solidity: function verifyBlocks(uint64 maxBlocksToVerify) returns() +func (_TaikoL1 *TaikoL1TransactorSession) VerifyBlocks(maxBlocksToVerify uint64) (*types.Transaction, error) { + return _TaikoL1.Contract.VerifyBlocks(&_TaikoL1.TransactOpts, maxBlocksToVerify) } // WithdrawTaikoToken is a paid mutator transaction binding the contract method 0x5043f059. @@ -1047,9 +1206,9 @@ func (_TaikoL1 *TaikoL1TransactorSession) Receive() (*types.Transaction, error) return _TaikoL1.Contract.Receive(&_TaikoL1.TransactOpts) } -// TaikoL1AddressManagerChangedIterator is returned from FilterAddressManagerChanged and is used to iterate over the raw logs and unpacked data for AddressManagerChanged events raised by the TaikoL1 contract. -type TaikoL1AddressManagerChangedIterator struct { - Event *TaikoL1AddressManagerChanged // Event containing the contract specifics and raw log +// TaikoL1BlobCachedIterator is returned from FilterBlobCached and is used to iterate over the raw logs and unpacked data for BlobCached events raised by the TaikoL1 contract. +type TaikoL1BlobCachedIterator struct { + Event *TaikoL1BlobCached // Event containing the contract specifics and raw log contract *bind.BoundContract // Generic contract to use for unpacking event data event string // Event name to use for unpacking event data @@ -1063,7 +1222,7 @@ type TaikoL1AddressManagerChangedIterator struct { // Next advances the iterator to the subsequent event, returning whether there // are any more events found. In case of a retrieval or parsing error, false is // returned and Error() can be queried for the exact failure. -func (it *TaikoL1AddressManagerChangedIterator) Next() bool { +func (it *TaikoL1BlobCachedIterator) Next() bool { // If the iterator failed, stop iterating if it.fail != nil { return false @@ -1072,7 +1231,7 @@ func (it *TaikoL1AddressManagerChangedIterator) Next() bool { if it.done { select { case log := <-it.logs: - it.Event = new(TaikoL1AddressManagerChanged) + it.Event = new(TaikoL1BlobCached) if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { it.fail = err return false @@ -1087,7 +1246,7 @@ func (it *TaikoL1AddressManagerChangedIterator) Next() bool { // Iterator still in progress, wait for either a data or an error event select { case log := <-it.logs: - it.Event = new(TaikoL1AddressManagerChanged) + it.Event = new(TaikoL1BlobCached) if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { it.fail = err return false @@ -1103,51 +1262,41 @@ func (it *TaikoL1AddressManagerChangedIterator) Next() bool { } // Error returns any retrieval or parsing error occurred during filtering. -func (it *TaikoL1AddressManagerChangedIterator) Error() error { +func (it *TaikoL1BlobCachedIterator) Error() error { return it.fail } // Close terminates the iteration process, releasing any pending underlying // resources. -func (it *TaikoL1AddressManagerChangedIterator) Close() error { +func (it *TaikoL1BlobCachedIterator) Close() error { it.sub.Unsubscribe() return nil } -// TaikoL1AddressManagerChanged represents a AddressManagerChanged event raised by the TaikoL1 contract. -type TaikoL1AddressManagerChanged struct { - AddressManager common.Address - Raw types.Log // Blockchain specific contextual infos +// TaikoL1BlobCached represents a BlobCached event raised by the TaikoL1 contract. +type TaikoL1BlobCached struct { + BlobHash [32]byte + Raw types.Log // Blockchain specific contextual infos } -// FilterAddressManagerChanged is a free log retrieval operation binding the contract event 0x399ded90cb5ed8d89ef7e76ff4af65c373f06d3bf5d7eef55f4228e7b702a18b. +// FilterBlobCached is a free log retrieval operation binding the contract event 0xb303828b7c63a3e480df6d8239eb7be1d4a1eb1c8878d6fa461103b94f4ce852. // -// Solidity: event AddressManagerChanged(address indexed addressManager) -func (_TaikoL1 *TaikoL1Filterer) FilterAddressManagerChanged(opts *bind.FilterOpts, addressManager []common.Address) (*TaikoL1AddressManagerChangedIterator, error) { - - var addressManagerRule []interface{} - for _, addressManagerItem := range addressManager { - addressManagerRule = append(addressManagerRule, addressManagerItem) - } +// Solidity: event BlobCached(bytes32 blobHash) +func (_TaikoL1 *TaikoL1Filterer) FilterBlobCached(opts *bind.FilterOpts) (*TaikoL1BlobCachedIterator, error) { - logs, sub, err := _TaikoL1.contract.FilterLogs(opts, "AddressManagerChanged", addressManagerRule) + logs, sub, err := _TaikoL1.contract.FilterLogs(opts, "BlobCached") if err != nil { return nil, err } - return &TaikoL1AddressManagerChangedIterator{contract: _TaikoL1.contract, event: "AddressManagerChanged", logs: logs, sub: sub}, nil + return &TaikoL1BlobCachedIterator{contract: _TaikoL1.contract, event: "BlobCached", logs: logs, sub: sub}, nil } -// WatchAddressManagerChanged is a free log subscription operation binding the contract event 0x399ded90cb5ed8d89ef7e76ff4af65c373f06d3bf5d7eef55f4228e7b702a18b. +// WatchBlobCached is a free log subscription operation binding the contract event 0xb303828b7c63a3e480df6d8239eb7be1d4a1eb1c8878d6fa461103b94f4ce852. // -// Solidity: event AddressManagerChanged(address indexed addressManager) -func (_TaikoL1 *TaikoL1Filterer) WatchAddressManagerChanged(opts *bind.WatchOpts, sink chan<- *TaikoL1AddressManagerChanged, addressManager []common.Address) (event.Subscription, error) { - - var addressManagerRule []interface{} - for _, addressManagerItem := range addressManager { - addressManagerRule = append(addressManagerRule, addressManagerItem) - } +// Solidity: event BlobCached(bytes32 blobHash) +func (_TaikoL1 *TaikoL1Filterer) WatchBlobCached(opts *bind.WatchOpts, sink chan<- *TaikoL1BlobCached) (event.Subscription, error) { - logs, sub, err := _TaikoL1.contract.WatchLogs(opts, "AddressManagerChanged", addressManagerRule) + logs, sub, err := _TaikoL1.contract.WatchLogs(opts, "BlobCached") if err != nil { return nil, err } @@ -1157,8 +1306,8 @@ func (_TaikoL1 *TaikoL1Filterer) WatchAddressManagerChanged(opts *bind.WatchOpts select { case log := <-logs: // New log arrived, parse the event and forward to the user - event := new(TaikoL1AddressManagerChanged) - if err := _TaikoL1.contract.UnpackLog(event, "AddressManagerChanged", log); err != nil { + event := new(TaikoL1BlobCached) + if err := _TaikoL1.contract.UnpackLog(event, "BlobCached", log); err != nil { return err } event.Raw = log @@ -1179,21 +1328,21 @@ func (_TaikoL1 *TaikoL1Filterer) WatchAddressManagerChanged(opts *bind.WatchOpts }), nil } -// ParseAddressManagerChanged is a log parse operation binding the contract event 0x399ded90cb5ed8d89ef7e76ff4af65c373f06d3bf5d7eef55f4228e7b702a18b. +// ParseBlobCached is a log parse operation binding the contract event 0xb303828b7c63a3e480df6d8239eb7be1d4a1eb1c8878d6fa461103b94f4ce852. // -// Solidity: event AddressManagerChanged(address indexed addressManager) -func (_TaikoL1 *TaikoL1Filterer) ParseAddressManagerChanged(log types.Log) (*TaikoL1AddressManagerChanged, error) { - event := new(TaikoL1AddressManagerChanged) - if err := _TaikoL1.contract.UnpackLog(event, "AddressManagerChanged", log); err != nil { +// Solidity: event BlobCached(bytes32 blobHash) +func (_TaikoL1 *TaikoL1Filterer) ParseBlobCached(log types.Log) (*TaikoL1BlobCached, error) { + event := new(TaikoL1BlobCached) + if err := _TaikoL1.contract.UnpackLog(event, "BlobCached", log); err != nil { return nil, err } event.Raw = log return event, nil } -// TaikoL1BlockProposedIterator is returned from FilterBlockProposed and is used to iterate over the raw logs and unpacked data for BlockProposed events raised by the TaikoL1 contract. -type TaikoL1BlockProposedIterator struct { - Event *TaikoL1BlockProposed // Event containing the contract specifics and raw log +// TaikoL1BlobCached0Iterator is returned from FilterBlobCached0 and is used to iterate over the raw logs and unpacked data for BlobCached0 events raised by the TaikoL1 contract. +type TaikoL1BlobCached0Iterator struct { + Event *TaikoL1BlobCached0 // Event containing the contract specifics and raw log contract *bind.BoundContract // Generic contract to use for unpacking event data event string // Event name to use for unpacking event data @@ -1207,7 +1356,7 @@ type TaikoL1BlockProposedIterator struct { // Next advances the iterator to the subsequent event, returning whether there // are any more events found. In case of a retrieval or parsing error, false is // returned and Error() can be queried for the exact failure. -func (it *TaikoL1BlockProposedIterator) Next() bool { +func (it *TaikoL1BlobCached0Iterator) Next() bool { // If the iterator failed, stop iterating if it.fail != nil { return false @@ -1216,7 +1365,7 @@ func (it *TaikoL1BlockProposedIterator) Next() bool { if it.done { select { case log := <-it.logs: - it.Event = new(TaikoL1BlockProposed) + it.Event = new(TaikoL1BlobCached0) if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { it.fail = err return false @@ -1231,7 +1380,7 @@ func (it *TaikoL1BlockProposedIterator) Next() bool { // Iterator still in progress, wait for either a data or an error event select { case log := <-it.logs: - it.Event = new(TaikoL1BlockProposed) + it.Event = new(TaikoL1BlobCached0) if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { it.fail = err return false @@ -1247,65 +1396,41 @@ func (it *TaikoL1BlockProposedIterator) Next() bool { } // Error returns any retrieval or parsing error occurred during filtering. -func (it *TaikoL1BlockProposedIterator) Error() error { +func (it *TaikoL1BlobCached0Iterator) Error() error { return it.fail } // Close terminates the iteration process, releasing any pending underlying // resources. -func (it *TaikoL1BlockProposedIterator) Close() error { +func (it *TaikoL1BlobCached0Iterator) Close() error { it.sub.Unsubscribe() return nil } -// TaikoL1BlockProposed represents a BlockProposed event raised by the TaikoL1 contract. -type TaikoL1BlockProposed struct { - BlockId *big.Int - AssignedProver common.Address - LivenessBond *big.Int - ProverFee *big.Int - Reward *big.Int - MinTier uint16 - Meta TaikoDataBlockMetadata - Raw types.Log // Blockchain specific contextual infos +// TaikoL1BlobCached0 represents a BlobCached0 event raised by the TaikoL1 contract. +type TaikoL1BlobCached0 struct { + BlobHash [32]byte + Raw types.Log // Blockchain specific contextual infos } -// FilterBlockProposed is a free log retrieval operation binding the contract event 0x3bc85eed257804b26e2232e767692931a620954ad0ae6ca5c58adb22be553418. +// FilterBlobCached0 is a free log retrieval operation binding the contract event 0xb303828b7c63a3e480df6d8239eb7be1d4a1eb1c8878d6fa461103b94f4ce852. // -// Solidity: event BlockProposed(uint256 indexed blockId, address indexed assignedProver, uint96 livenessBond, uint256 proverFee, uint256 reward, uint16 minTier, (bytes32,bytes32,bytes32,bytes32,uint64,uint64,uint64,uint32,address,(address,uint96,uint64)[]) meta) -func (_TaikoL1 *TaikoL1Filterer) FilterBlockProposed(opts *bind.FilterOpts, blockId []*big.Int, assignedProver []common.Address) (*TaikoL1BlockProposedIterator, error) { - - var blockIdRule []interface{} - for _, blockIdItem := range blockId { - blockIdRule = append(blockIdRule, blockIdItem) - } - var assignedProverRule []interface{} - for _, assignedProverItem := range assignedProver { - assignedProverRule = append(assignedProverRule, assignedProverItem) - } +// Solidity: event BlobCached(bytes32 blobHash) +func (_TaikoL1 *TaikoL1Filterer) FilterBlobCached0(opts *bind.FilterOpts) (*TaikoL1BlobCached0Iterator, error) { - logs, sub, err := _TaikoL1.contract.FilterLogs(opts, "BlockProposed", blockIdRule, assignedProverRule) + logs, sub, err := _TaikoL1.contract.FilterLogs(opts, "BlobCached0") if err != nil { return nil, err } - return &TaikoL1BlockProposedIterator{contract: _TaikoL1.contract, event: "BlockProposed", logs: logs, sub: sub}, nil + return &TaikoL1BlobCached0Iterator{contract: _TaikoL1.contract, event: "BlobCached0", logs: logs, sub: sub}, nil } -// WatchBlockProposed is a free log subscription operation binding the contract event 0x3bc85eed257804b26e2232e767692931a620954ad0ae6ca5c58adb22be553418. +// WatchBlobCached0 is a free log subscription operation binding the contract event 0xb303828b7c63a3e480df6d8239eb7be1d4a1eb1c8878d6fa461103b94f4ce852. // -// Solidity: event BlockProposed(uint256 indexed blockId, address indexed assignedProver, uint96 livenessBond, uint256 proverFee, uint256 reward, uint16 minTier, (bytes32,bytes32,bytes32,bytes32,uint64,uint64,uint64,uint32,address,(address,uint96,uint64)[]) meta) -func (_TaikoL1 *TaikoL1Filterer) WatchBlockProposed(opts *bind.WatchOpts, sink chan<- *TaikoL1BlockProposed, blockId []*big.Int, assignedProver []common.Address) (event.Subscription, error) { - - var blockIdRule []interface{} - for _, blockIdItem := range blockId { - blockIdRule = append(blockIdRule, blockIdItem) - } - var assignedProverRule []interface{} - for _, assignedProverItem := range assignedProver { - assignedProverRule = append(assignedProverRule, assignedProverItem) - } +// Solidity: event BlobCached(bytes32 blobHash) +func (_TaikoL1 *TaikoL1Filterer) WatchBlobCached0(opts *bind.WatchOpts, sink chan<- *TaikoL1BlobCached0) (event.Subscription, error) { - logs, sub, err := _TaikoL1.contract.WatchLogs(opts, "BlockProposed", blockIdRule, assignedProverRule) + logs, sub, err := _TaikoL1.contract.WatchLogs(opts, "BlobCached0") if err != nil { return nil, err } @@ -1315,8 +1440,8 @@ func (_TaikoL1 *TaikoL1Filterer) WatchBlockProposed(opts *bind.WatchOpts, sink c select { case log := <-logs: // New log arrived, parse the event and forward to the user - event := new(TaikoL1BlockProposed) - if err := _TaikoL1.contract.UnpackLog(event, "BlockProposed", log); err != nil { + event := new(TaikoL1BlobCached0) + if err := _TaikoL1.contract.UnpackLog(event, "BlobCached0", log); err != nil { return err } event.Raw = log @@ -1337,21 +1462,21 @@ func (_TaikoL1 *TaikoL1Filterer) WatchBlockProposed(opts *bind.WatchOpts, sink c }), nil } -// ParseBlockProposed is a log parse operation binding the contract event 0x3bc85eed257804b26e2232e767692931a620954ad0ae6ca5c58adb22be553418. +// ParseBlobCached0 is a log parse operation binding the contract event 0xb303828b7c63a3e480df6d8239eb7be1d4a1eb1c8878d6fa461103b94f4ce852. // -// Solidity: event BlockProposed(uint256 indexed blockId, address indexed assignedProver, uint96 livenessBond, uint256 proverFee, uint256 reward, uint16 minTier, (bytes32,bytes32,bytes32,bytes32,uint64,uint64,uint64,uint32,address,(address,uint96,uint64)[]) meta) -func (_TaikoL1 *TaikoL1Filterer) ParseBlockProposed(log types.Log) (*TaikoL1BlockProposed, error) { - event := new(TaikoL1BlockProposed) - if err := _TaikoL1.contract.UnpackLog(event, "BlockProposed", log); err != nil { +// Solidity: event BlobCached(bytes32 blobHash) +func (_TaikoL1 *TaikoL1Filterer) ParseBlobCached0(log types.Log) (*TaikoL1BlobCached0, error) { + event := new(TaikoL1BlobCached0) + if err := _TaikoL1.contract.UnpackLog(event, "BlobCached0", log); err != nil { return nil, err } event.Raw = log return event, nil } -// TaikoL1BlockProposed0Iterator is returned from FilterBlockProposed0 and is used to iterate over the raw logs and unpacked data for BlockProposed0 events raised by the TaikoL1 contract. -type TaikoL1BlockProposed0Iterator struct { - Event *TaikoL1BlockProposed0 // Event containing the contract specifics and raw log +// TaikoL1BlockProposedIterator is returned from FilterBlockProposed and is used to iterate over the raw logs and unpacked data for BlockProposed events raised by the TaikoL1 contract. +type TaikoL1BlockProposedIterator struct { + Event *TaikoL1BlockProposed // Event containing the contract specifics and raw log contract *bind.BoundContract // Generic contract to use for unpacking event data event string // Event name to use for unpacking event data @@ -1365,7 +1490,7 @@ type TaikoL1BlockProposed0Iterator struct { // Next advances the iterator to the subsequent event, returning whether there // are any more events found. In case of a retrieval or parsing error, false is // returned and Error() can be queried for the exact failure. -func (it *TaikoL1BlockProposed0Iterator) Next() bool { +func (it *TaikoL1BlockProposedIterator) Next() bool { // If the iterator failed, stop iterating if it.fail != nil { return false @@ -1374,7 +1499,7 @@ func (it *TaikoL1BlockProposed0Iterator) Next() bool { if it.done { select { case log := <-it.logs: - it.Event = new(TaikoL1BlockProposed0) + it.Event = new(TaikoL1BlockProposed) if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { it.fail = err return false @@ -1389,7 +1514,7 @@ func (it *TaikoL1BlockProposed0Iterator) Next() bool { // Iterator still in progress, wait for either a data or an error event select { case log := <-it.logs: - it.Event = new(TaikoL1BlockProposed0) + it.Event = new(TaikoL1BlockProposed) if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { it.fail = err return false @@ -1405,32 +1530,188 @@ func (it *TaikoL1BlockProposed0Iterator) Next() bool { } // Error returns any retrieval or parsing error occurred during filtering. -func (it *TaikoL1BlockProposed0Iterator) Error() error { +func (it *TaikoL1BlockProposedIterator) Error() error { return it.fail } // Close terminates the iteration process, releasing any pending underlying // resources. -func (it *TaikoL1BlockProposed0Iterator) Close() error { +func (it *TaikoL1BlockProposedIterator) Close() error { it.sub.Unsubscribe() return nil } -// TaikoL1BlockProposed0 represents a BlockProposed0 event raised by the TaikoL1 contract. -type TaikoL1BlockProposed0 struct { - BlockId *big.Int - AssignedProver common.Address - LivenessBond *big.Int - ProverFee *big.Int - Reward *big.Int - MinTier uint16 - Meta TaikoDataBlockMetadata - Raw types.Log // Blockchain specific contextual infos -} +// TaikoL1BlockProposed represents a BlockProposed event raised by the TaikoL1 contract. +type TaikoL1BlockProposed struct { + BlockId *big.Int + AssignedProver common.Address + LivenessBond *big.Int + ProverFee *big.Int + Meta TaikoDataBlockMetadata + DepositsProcessed []TaikoDataEthDeposit + Raw types.Log // Blockchain specific contextual infos +} + +// FilterBlockProposed is a free log retrieval operation binding the contract event 0x16b70ac93964250a116fa6c730a771b24c7a0546bf6e6a5dcf120bd37348237f. +// +// Solidity: event BlockProposed(uint256 indexed blockId, address indexed assignedProver, uint96 livenessBond, uint256 proverFee, (bytes32,bytes32,bytes32,bytes32,bytes32,address,uint64,uint32,uint64,uint64,uint24,uint24,uint16,bool,bytes32) meta, (address,uint96,uint64)[] depositsProcessed) +func (_TaikoL1 *TaikoL1Filterer) FilterBlockProposed(opts *bind.FilterOpts, blockId []*big.Int, assignedProver []common.Address) (*TaikoL1BlockProposedIterator, error) { + + var blockIdRule []interface{} + for _, blockIdItem := range blockId { + blockIdRule = append(blockIdRule, blockIdItem) + } + var assignedProverRule []interface{} + for _, assignedProverItem := range assignedProver { + assignedProverRule = append(assignedProverRule, assignedProverItem) + } + + logs, sub, err := _TaikoL1.contract.FilterLogs(opts, "BlockProposed", blockIdRule, assignedProverRule) + if err != nil { + return nil, err + } + return &TaikoL1BlockProposedIterator{contract: _TaikoL1.contract, event: "BlockProposed", logs: logs, sub: sub}, nil +} + +// WatchBlockProposed is a free log subscription operation binding the contract event 0x16b70ac93964250a116fa6c730a771b24c7a0546bf6e6a5dcf120bd37348237f. +// +// Solidity: event BlockProposed(uint256 indexed blockId, address indexed assignedProver, uint96 livenessBond, uint256 proverFee, (bytes32,bytes32,bytes32,bytes32,bytes32,address,uint64,uint32,uint64,uint64,uint24,uint24,uint16,bool,bytes32) meta, (address,uint96,uint64)[] depositsProcessed) +func (_TaikoL1 *TaikoL1Filterer) WatchBlockProposed(opts *bind.WatchOpts, sink chan<- *TaikoL1BlockProposed, blockId []*big.Int, assignedProver []common.Address) (event.Subscription, error) { + + var blockIdRule []interface{} + for _, blockIdItem := range blockId { + blockIdRule = append(blockIdRule, blockIdItem) + } + var assignedProverRule []interface{} + for _, assignedProverItem := range assignedProver { + assignedProverRule = append(assignedProverRule, assignedProverItem) + } + + logs, sub, err := _TaikoL1.contract.WatchLogs(opts, "BlockProposed", blockIdRule, assignedProverRule) + if err != nil { + return nil, err + } + return event.NewSubscription(func(quit <-chan struct{}) error { + defer sub.Unsubscribe() + for { + select { + case log := <-logs: + // New log arrived, parse the event and forward to the user + event := new(TaikoL1BlockProposed) + if err := _TaikoL1.contract.UnpackLog(event, "BlockProposed", log); err != nil { + return err + } + event.Raw = log + + select { + case sink <- event: + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + } + }), nil +} + +// ParseBlockProposed is a log parse operation binding the contract event 0x16b70ac93964250a116fa6c730a771b24c7a0546bf6e6a5dcf120bd37348237f. +// +// Solidity: event BlockProposed(uint256 indexed blockId, address indexed assignedProver, uint96 livenessBond, uint256 proverFee, (bytes32,bytes32,bytes32,bytes32,bytes32,address,uint64,uint32,uint64,uint64,uint24,uint24,uint16,bool,bytes32) meta, (address,uint96,uint64)[] depositsProcessed) +func (_TaikoL1 *TaikoL1Filterer) ParseBlockProposed(log types.Log) (*TaikoL1BlockProposed, error) { + event := new(TaikoL1BlockProposed) + if err := _TaikoL1.contract.UnpackLog(event, "BlockProposed", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} + +// TaikoL1BlockProposed0Iterator is returned from FilterBlockProposed0 and is used to iterate over the raw logs and unpacked data for BlockProposed0 events raised by the TaikoL1 contract. +type TaikoL1BlockProposed0Iterator struct { + Event *TaikoL1BlockProposed0 // Event containing the contract specifics and raw log + + contract *bind.BoundContract // Generic contract to use for unpacking event data + event string // Event name to use for unpacking event data + + logs chan types.Log // Log channel receiving the found contract events + sub ethereum.Subscription // Subscription for errors, completion and termination + done bool // Whether the subscription completed delivering logs + fail error // Occurred error to stop iteration +} + +// Next advances the iterator to the subsequent event, returning whether there +// are any more events found. In case of a retrieval or parsing error, false is +// returned and Error() can be queried for the exact failure. +func (it *TaikoL1BlockProposed0Iterator) Next() bool { + // If the iterator failed, stop iterating + if it.fail != nil { + return false + } + // If the iterator completed, deliver directly whatever's available + if it.done { + select { + case log := <-it.logs: + it.Event = new(TaikoL1BlockProposed0) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + default: + return false + } + } + // Iterator still in progress, wait for either a data or an error event + select { + case log := <-it.logs: + it.Event = new(TaikoL1BlockProposed0) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + case err := <-it.sub.Err(): + it.done = true + it.fail = err + return it.Next() + } +} + +// Error returns any retrieval or parsing error occurred during filtering. +func (it *TaikoL1BlockProposed0Iterator) Error() error { + return it.fail +} -// FilterBlockProposed0 is a free log retrieval operation binding the contract event 0x3bc85eed257804b26e2232e767692931a620954ad0ae6ca5c58adb22be553418. +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *TaikoL1BlockProposed0Iterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// TaikoL1BlockProposed0 represents a BlockProposed0 event raised by the TaikoL1 contract. +type TaikoL1BlockProposed0 struct { + BlockId *big.Int + AssignedProver common.Address + LivenessBond *big.Int + ProverFee *big.Int + Meta TaikoDataBlockMetadata + DepositsProcessed []TaikoDataEthDeposit + Raw types.Log // Blockchain specific contextual infos +} + +// FilterBlockProposed0 is a free log retrieval operation binding the contract event 0x16b70ac93964250a116fa6c730a771b24c7a0546bf6e6a5dcf120bd37348237f. // -// Solidity: event BlockProposed(uint256 indexed blockId, address indexed assignedProver, uint96 livenessBond, uint256 proverFee, uint256 reward, uint16 minTier, (bytes32,bytes32,bytes32,bytes32,uint64,uint64,uint64,uint32,address,(address,uint96,uint64)[]) meta) +// Solidity: event BlockProposed(uint256 indexed blockId, address indexed assignedProver, uint96 livenessBond, uint256 proverFee, (bytes32,bytes32,bytes32,bytes32,bytes32,address,uint64,uint32,uint64,uint64,uint24,uint24,uint16,bool,bytes32) meta, (address,uint96,uint64)[] depositsProcessed) func (_TaikoL1 *TaikoL1Filterer) FilterBlockProposed0(opts *bind.FilterOpts, blockId []*big.Int, assignedProver []common.Address) (*TaikoL1BlockProposed0Iterator, error) { var blockIdRule []interface{} @@ -1449,9 +1730,9 @@ func (_TaikoL1 *TaikoL1Filterer) FilterBlockProposed0(opts *bind.FilterOpts, blo return &TaikoL1BlockProposed0Iterator{contract: _TaikoL1.contract, event: "BlockProposed0", logs: logs, sub: sub}, nil } -// WatchBlockProposed0 is a free log subscription operation binding the contract event 0x3bc85eed257804b26e2232e767692931a620954ad0ae6ca5c58adb22be553418. +// WatchBlockProposed0 is a free log subscription operation binding the contract event 0x16b70ac93964250a116fa6c730a771b24c7a0546bf6e6a5dcf120bd37348237f. // -// Solidity: event BlockProposed(uint256 indexed blockId, address indexed assignedProver, uint96 livenessBond, uint256 proverFee, uint256 reward, uint16 minTier, (bytes32,bytes32,bytes32,bytes32,uint64,uint64,uint64,uint32,address,(address,uint96,uint64)[]) meta) +// Solidity: event BlockProposed(uint256 indexed blockId, address indexed assignedProver, uint96 livenessBond, uint256 proverFee, (bytes32,bytes32,bytes32,bytes32,bytes32,address,uint64,uint32,uint64,uint64,uint24,uint24,uint16,bool,bytes32) meta, (address,uint96,uint64)[] depositsProcessed) func (_TaikoL1 *TaikoL1Filterer) WatchBlockProposed0(opts *bind.WatchOpts, sink chan<- *TaikoL1BlockProposed0, blockId []*big.Int, assignedProver []common.Address) (event.Subscription, error) { var blockIdRule []interface{} @@ -1495,9 +1776,9 @@ func (_TaikoL1 *TaikoL1Filterer) WatchBlockProposed0(opts *bind.WatchOpts, sink }), nil } -// ParseBlockProposed0 is a log parse operation binding the contract event 0x3bc85eed257804b26e2232e767692931a620954ad0ae6ca5c58adb22be553418. +// ParseBlockProposed0 is a log parse operation binding the contract event 0x16b70ac93964250a116fa6c730a771b24c7a0546bf6e6a5dcf120bd37348237f. // -// Solidity: event BlockProposed(uint256 indexed blockId, address indexed assignedProver, uint96 livenessBond, uint256 proverFee, uint256 reward, uint16 minTier, (bytes32,bytes32,bytes32,bytes32,uint64,uint64,uint64,uint32,address,(address,uint96,uint64)[]) meta) +// Solidity: event BlockProposed(uint256 indexed blockId, address indexed assignedProver, uint96 livenessBond, uint256 proverFee, (bytes32,bytes32,bytes32,bytes32,bytes32,address,uint64,uint32,uint64,uint64,uint24,uint24,uint16,bool,bytes32) meta, (address,uint96,uint64)[] depositsProcessed) func (_TaikoL1 *TaikoL1Filterer) ParseBlockProposed0(log types.Log) (*TaikoL1BlockProposed0, error) { event := new(TaikoL1BlockProposed0) if err := _TaikoL1.contract.UnpackLog(event, "BlockProposed0", log); err != nil { @@ -1581,12 +1862,14 @@ type TaikoL1BlockVerified struct { Prover common.Address BlockHash [32]byte SignalRoot [32]byte + Tier uint16 + Contestations uint8 Raw types.Log // Blockchain specific contextual infos } -// FilterBlockVerified is a free log retrieval operation binding the contract event 0x1433d0a0bbdef88a556faadc3c8481900a1bd0941743e979ddbe046e27ce4299. +// FilterBlockVerified is a free log retrieval operation binding the contract event 0xaeba6e73abba9419294b1017075cf8dc2e7de6f2d7fd3b336b3ba882a2acfca5. // -// Solidity: event BlockVerified(uint256 indexed blockId, address indexed assignedProver, address indexed prover, bytes32 blockHash, bytes32 signalRoot) +// Solidity: event BlockVerified(uint256 indexed blockId, address indexed assignedProver, address indexed prover, bytes32 blockHash, bytes32 signalRoot, uint16 tier, uint8 contestations) func (_TaikoL1 *TaikoL1Filterer) FilterBlockVerified(opts *bind.FilterOpts, blockId []*big.Int, assignedProver []common.Address, prover []common.Address) (*TaikoL1BlockVerifiedIterator, error) { var blockIdRule []interface{} @@ -1609,9 +1892,9 @@ func (_TaikoL1 *TaikoL1Filterer) FilterBlockVerified(opts *bind.FilterOpts, bloc return &TaikoL1BlockVerifiedIterator{contract: _TaikoL1.contract, event: "BlockVerified", logs: logs, sub: sub}, nil } -// WatchBlockVerified is a free log subscription operation binding the contract event 0x1433d0a0bbdef88a556faadc3c8481900a1bd0941743e979ddbe046e27ce4299. +// WatchBlockVerified is a free log subscription operation binding the contract event 0xaeba6e73abba9419294b1017075cf8dc2e7de6f2d7fd3b336b3ba882a2acfca5. // -// Solidity: event BlockVerified(uint256 indexed blockId, address indexed assignedProver, address indexed prover, bytes32 blockHash, bytes32 signalRoot) +// Solidity: event BlockVerified(uint256 indexed blockId, address indexed assignedProver, address indexed prover, bytes32 blockHash, bytes32 signalRoot, uint16 tier, uint8 contestations) func (_TaikoL1 *TaikoL1Filterer) WatchBlockVerified(opts *bind.WatchOpts, sink chan<- *TaikoL1BlockVerified, blockId []*big.Int, assignedProver []common.Address, prover []common.Address) (event.Subscription, error) { var blockIdRule []interface{} @@ -1659,9 +1942,9 @@ func (_TaikoL1 *TaikoL1Filterer) WatchBlockVerified(opts *bind.WatchOpts, sink c }), nil } -// ParseBlockVerified is a log parse operation binding the contract event 0x1433d0a0bbdef88a556faadc3c8481900a1bd0941743e979ddbe046e27ce4299. +// ParseBlockVerified is a log parse operation binding the contract event 0xaeba6e73abba9419294b1017075cf8dc2e7de6f2d7fd3b336b3ba882a2acfca5. // -// Solidity: event BlockVerified(uint256 indexed blockId, address indexed assignedProver, address indexed prover, bytes32 blockHash, bytes32 signalRoot) +// Solidity: event BlockVerified(uint256 indexed blockId, address indexed assignedProver, address indexed prover, bytes32 blockHash, bytes32 signalRoot, uint16 tier, uint8 contestations) func (_TaikoL1 *TaikoL1Filterer) ParseBlockVerified(log types.Log) (*TaikoL1BlockVerified, error) { event := new(TaikoL1BlockVerified) if err := _TaikoL1.contract.UnpackLog(event, "BlockVerified", log); err != nil { @@ -1745,12 +2028,14 @@ type TaikoL1BlockVerified0 struct { Prover common.Address BlockHash [32]byte SignalRoot [32]byte + Tier uint16 + Contestations uint8 Raw types.Log // Blockchain specific contextual infos } -// FilterBlockVerified0 is a free log retrieval operation binding the contract event 0x1433d0a0bbdef88a556faadc3c8481900a1bd0941743e979ddbe046e27ce4299. +// FilterBlockVerified0 is a free log retrieval operation binding the contract event 0xaeba6e73abba9419294b1017075cf8dc2e7de6f2d7fd3b336b3ba882a2acfca5. // -// Solidity: event BlockVerified(uint256 indexed blockId, address indexed assignedProver, address indexed prover, bytes32 blockHash, bytes32 signalRoot) +// Solidity: event BlockVerified(uint256 indexed blockId, address indexed assignedProver, address indexed prover, bytes32 blockHash, bytes32 signalRoot, uint16 tier, uint8 contestations) func (_TaikoL1 *TaikoL1Filterer) FilterBlockVerified0(opts *bind.FilterOpts, blockId []*big.Int, assignedProver []common.Address, prover []common.Address) (*TaikoL1BlockVerified0Iterator, error) { var blockIdRule []interface{} @@ -1773,9 +2058,9 @@ func (_TaikoL1 *TaikoL1Filterer) FilterBlockVerified0(opts *bind.FilterOpts, blo return &TaikoL1BlockVerified0Iterator{contract: _TaikoL1.contract, event: "BlockVerified0", logs: logs, sub: sub}, nil } -// WatchBlockVerified0 is a free log subscription operation binding the contract event 0x1433d0a0bbdef88a556faadc3c8481900a1bd0941743e979ddbe046e27ce4299. +// WatchBlockVerified0 is a free log subscription operation binding the contract event 0xaeba6e73abba9419294b1017075cf8dc2e7de6f2d7fd3b336b3ba882a2acfca5. // -// Solidity: event BlockVerified(uint256 indexed blockId, address indexed assignedProver, address indexed prover, bytes32 blockHash, bytes32 signalRoot) +// Solidity: event BlockVerified(uint256 indexed blockId, address indexed assignedProver, address indexed prover, bytes32 blockHash, bytes32 signalRoot, uint16 tier, uint8 contestations) func (_TaikoL1 *TaikoL1Filterer) WatchBlockVerified0(opts *bind.WatchOpts, sink chan<- *TaikoL1BlockVerified0, blockId []*big.Int, assignedProver []common.Address, prover []common.Address) (event.Subscription, error) { var blockIdRule []interface{} @@ -1823,9 +2108,9 @@ func (_TaikoL1 *TaikoL1Filterer) WatchBlockVerified0(opts *bind.WatchOpts, sink }), nil } -// ParseBlockVerified0 is a log parse operation binding the contract event 0x1433d0a0bbdef88a556faadc3c8481900a1bd0941743e979ddbe046e27ce4299. +// ParseBlockVerified0 is a log parse operation binding the contract event 0xaeba6e73abba9419294b1017075cf8dc2e7de6f2d7fd3b336b3ba882a2acfca5. // -// Solidity: event BlockVerified(uint256 indexed blockId, address indexed assignedProver, address indexed prover, bytes32 blockHash, bytes32 signalRoot) +// Solidity: event BlockVerified(uint256 indexed blockId, address indexed assignedProver, address indexed prover, bytes32 blockHash, bytes32 signalRoot, uint16 tier, uint8 contestations) func (_TaikoL1 *TaikoL1Filterer) ParseBlockVerified0(log types.Log) (*TaikoL1BlockVerified0, error) { event := new(TaikoL1BlockVerified0) if err := _TaikoL1.contract.UnpackLog(event, "BlockVerified0", log); err != nil { @@ -2050,40 +2335,41 @@ func (it *TaikoL1CrossChainSynced0Iterator) Close() error { // TaikoL1CrossChainSynced0 represents a CrossChainSynced0 event raised by the TaikoL1 contract. type TaikoL1CrossChainSynced0 struct { - SrcHeight uint64 - BlockHash [32]byte - SignalRoot [32]byte - Raw types.Log // Blockchain specific contextual infos + RemoteBlockId uint64 + SyncedInBlock uint64 + BlockHash [32]byte + SignalRoot [32]byte + Raw types.Log // Blockchain specific contextual infos } -// FilterCrossChainSynced0 is a free log retrieval operation binding the contract event 0x004ce985b8852a486571d0545799251fd671adcf33b7854a5f0f6a6a2431a555. +// FilterCrossChainSynced0 is a free log retrieval operation binding the contract event 0xf35ec3b262cf74881db1b8051c635496bccb1497a1e776dacb463d0e0e2b0f51. // -// Solidity: event CrossChainSynced(uint64 indexed srcHeight, bytes32 blockHash, bytes32 signalRoot) -func (_TaikoL1 *TaikoL1Filterer) FilterCrossChainSynced0(opts *bind.FilterOpts, srcHeight []uint64) (*TaikoL1CrossChainSynced0Iterator, error) { +// Solidity: event CrossChainSynced(uint64 indexed remoteBlockId, uint64 syncedInBlock, bytes32 blockHash, bytes32 signalRoot) +func (_TaikoL1 *TaikoL1Filterer) FilterCrossChainSynced0(opts *bind.FilterOpts, remoteBlockId []uint64) (*TaikoL1CrossChainSynced0Iterator, error) { - var srcHeightRule []interface{} - for _, srcHeightItem := range srcHeight { - srcHeightRule = append(srcHeightRule, srcHeightItem) + var remoteBlockIdRule []interface{} + for _, remoteBlockIdItem := range remoteBlockId { + remoteBlockIdRule = append(remoteBlockIdRule, remoteBlockIdItem) } - logs, sub, err := _TaikoL1.contract.FilterLogs(opts, "CrossChainSynced0", srcHeightRule) + logs, sub, err := _TaikoL1.contract.FilterLogs(opts, "CrossChainSynced0", remoteBlockIdRule) if err != nil { return nil, err } return &TaikoL1CrossChainSynced0Iterator{contract: _TaikoL1.contract, event: "CrossChainSynced0", logs: logs, sub: sub}, nil } -// WatchCrossChainSynced0 is a free log subscription operation binding the contract event 0x004ce985b8852a486571d0545799251fd671adcf33b7854a5f0f6a6a2431a555. +// WatchCrossChainSynced0 is a free log subscription operation binding the contract event 0xf35ec3b262cf74881db1b8051c635496bccb1497a1e776dacb463d0e0e2b0f51. // -// Solidity: event CrossChainSynced(uint64 indexed srcHeight, bytes32 blockHash, bytes32 signalRoot) -func (_TaikoL1 *TaikoL1Filterer) WatchCrossChainSynced0(opts *bind.WatchOpts, sink chan<- *TaikoL1CrossChainSynced0, srcHeight []uint64) (event.Subscription, error) { +// Solidity: event CrossChainSynced(uint64 indexed remoteBlockId, uint64 syncedInBlock, bytes32 blockHash, bytes32 signalRoot) +func (_TaikoL1 *TaikoL1Filterer) WatchCrossChainSynced0(opts *bind.WatchOpts, sink chan<- *TaikoL1CrossChainSynced0, remoteBlockId []uint64) (event.Subscription, error) { - var srcHeightRule []interface{} - for _, srcHeightItem := range srcHeight { - srcHeightRule = append(srcHeightRule, srcHeightItem) + var remoteBlockIdRule []interface{} + for _, remoteBlockIdItem := range remoteBlockId { + remoteBlockIdRule = append(remoteBlockIdRule, remoteBlockIdItem) } - logs, sub, err := _TaikoL1.contract.WatchLogs(opts, "CrossChainSynced0", srcHeightRule) + logs, sub, err := _TaikoL1.contract.WatchLogs(opts, "CrossChainSynced0", remoteBlockIdRule) if err != nil { return nil, err } @@ -2115,9 +2401,9 @@ func (_TaikoL1 *TaikoL1Filterer) WatchCrossChainSynced0(opts *bind.WatchOpts, si }), nil } -// ParseCrossChainSynced0 is a log parse operation binding the contract event 0x004ce985b8852a486571d0545799251fd671adcf33b7854a5f0f6a6a2431a555. +// ParseCrossChainSynced0 is a log parse operation binding the contract event 0xf35ec3b262cf74881db1b8051c635496bccb1497a1e776dacb463d0e0e2b0f51. // -// Solidity: event CrossChainSynced(uint64 indexed srcHeight, bytes32 blockHash, bytes32 signalRoot) +// Solidity: event CrossChainSynced(uint64 indexed remoteBlockId, uint64 syncedInBlock, bytes32 blockHash, bytes32 signalRoot) func (_TaikoL1 *TaikoL1Filterer) ParseCrossChainSynced0(log types.Log) (*TaikoL1CrossChainSynced0, error) { event := new(TaikoL1CrossChainSynced0) if err := _TaikoL1.contract.UnpackLog(event, "CrossChainSynced0", log); err != nil { @@ -2261,140 +2547,6 @@ func (_TaikoL1 *TaikoL1Filterer) ParseEthDeposited(log types.Log) (*TaikoL1EthDe return event, nil } -// TaikoL1EthDeposited0Iterator is returned from FilterEthDeposited0 and is used to iterate over the raw logs and unpacked data for EthDeposited0 events raised by the TaikoL1 contract. -type TaikoL1EthDeposited0Iterator struct { - Event *TaikoL1EthDeposited0 // Event containing the contract specifics and raw log - - contract *bind.BoundContract // Generic contract to use for unpacking event data - event string // Event name to use for unpacking event data - - logs chan types.Log // Log channel receiving the found contract events - sub ethereum.Subscription // Subscription for errors, completion and termination - done bool // Whether the subscription completed delivering logs - fail error // Occurred error to stop iteration -} - -// Next advances the iterator to the subsequent event, returning whether there -// are any more events found. In case of a retrieval or parsing error, false is -// returned and Error() can be queried for the exact failure. -func (it *TaikoL1EthDeposited0Iterator) Next() bool { - // If the iterator failed, stop iterating - if it.fail != nil { - return false - } - // If the iterator completed, deliver directly whatever's available - if it.done { - select { - case log := <-it.logs: - it.Event = new(TaikoL1EthDeposited0) - if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { - it.fail = err - return false - } - it.Event.Raw = log - return true - - default: - return false - } - } - // Iterator still in progress, wait for either a data or an error event - select { - case log := <-it.logs: - it.Event = new(TaikoL1EthDeposited0) - if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { - it.fail = err - return false - } - it.Event.Raw = log - return true - - case err := <-it.sub.Err(): - it.done = true - it.fail = err - return it.Next() - } -} - -// Error returns any retrieval or parsing error occurred during filtering. -func (it *TaikoL1EthDeposited0Iterator) Error() error { - return it.fail -} - -// Close terminates the iteration process, releasing any pending underlying -// resources. -func (it *TaikoL1EthDeposited0Iterator) Close() error { - it.sub.Unsubscribe() - return nil -} - -// TaikoL1EthDeposited0 represents a EthDeposited0 event raised by the TaikoL1 contract. -type TaikoL1EthDeposited0 struct { - Deposit TaikoDataEthDeposit - Raw types.Log // Blockchain specific contextual infos -} - -// FilterEthDeposited0 is a free log retrieval operation binding the contract event 0x7120a3b075ad25974c5eed76dedb3a217c76c9c6d1f1e201caeba9b89de9a9d9. -// -// Solidity: event EthDeposited((address,uint96,uint64) deposit) -func (_TaikoL1 *TaikoL1Filterer) FilterEthDeposited0(opts *bind.FilterOpts) (*TaikoL1EthDeposited0Iterator, error) { - - logs, sub, err := _TaikoL1.contract.FilterLogs(opts, "EthDeposited0") - if err != nil { - return nil, err - } - return &TaikoL1EthDeposited0Iterator{contract: _TaikoL1.contract, event: "EthDeposited0", logs: logs, sub: sub}, nil -} - -// WatchEthDeposited0 is a free log subscription operation binding the contract event 0x7120a3b075ad25974c5eed76dedb3a217c76c9c6d1f1e201caeba9b89de9a9d9. -// -// Solidity: event EthDeposited((address,uint96,uint64) deposit) -func (_TaikoL1 *TaikoL1Filterer) WatchEthDeposited0(opts *bind.WatchOpts, sink chan<- *TaikoL1EthDeposited0) (event.Subscription, error) { - - logs, sub, err := _TaikoL1.contract.WatchLogs(opts, "EthDeposited0") - if err != nil { - return nil, err - } - return event.NewSubscription(func(quit <-chan struct{}) error { - defer sub.Unsubscribe() - for { - select { - case log := <-logs: - // New log arrived, parse the event and forward to the user - event := new(TaikoL1EthDeposited0) - if err := _TaikoL1.contract.UnpackLog(event, "EthDeposited0", log); err != nil { - return err - } - event.Raw = log - - select { - case sink <- event: - case err := <-sub.Err(): - return err - case <-quit: - return nil - } - case err := <-sub.Err(): - return err - case <-quit: - return nil - } - } - }), nil -} - -// ParseEthDeposited0 is a log parse operation binding the contract event 0x7120a3b075ad25974c5eed76dedb3a217c76c9c6d1f1e201caeba9b89de9a9d9. -// -// Solidity: event EthDeposited((address,uint96,uint64) deposit) -func (_TaikoL1 *TaikoL1Filterer) ParseEthDeposited0(log types.Log) (*TaikoL1EthDeposited0, error) { - event := new(TaikoL1EthDeposited0) - if err := _TaikoL1.contract.UnpackLog(event, "EthDeposited0", log); err != nil { - return nil, err - } - event.Raw = log - return event, nil -} - // TaikoL1InitializedIterator is returned from FilterInitialized and is used to iterate over the raw logs and unpacked data for Initialized events raised by the TaikoL1 contract. type TaikoL1InitializedIterator struct { Event *TaikoL1Initialized // Event containing the contract specifics and raw log @@ -2529,9 +2681,9 @@ func (_TaikoL1 *TaikoL1Filterer) ParseInitialized(log types.Log) (*TaikoL1Initia return event, nil } -// TaikoL1OwnershipTransferredIterator is returned from FilterOwnershipTransferred and is used to iterate over the raw logs and unpacked data for OwnershipTransferred events raised by the TaikoL1 contract. -type TaikoL1OwnershipTransferredIterator struct { - Event *TaikoL1OwnershipTransferred // Event containing the contract specifics and raw log +// TaikoL1OwnershipTransferStartedIterator is returned from FilterOwnershipTransferStarted and is used to iterate over the raw logs and unpacked data for OwnershipTransferStarted events raised by the TaikoL1 contract. +type TaikoL1OwnershipTransferStartedIterator struct { + Event *TaikoL1OwnershipTransferStarted // Event containing the contract specifics and raw log contract *bind.BoundContract // Generic contract to use for unpacking event data event string // Event name to use for unpacking event data @@ -2545,7 +2697,7 @@ type TaikoL1OwnershipTransferredIterator struct { // Next advances the iterator to the subsequent event, returning whether there // are any more events found. In case of a retrieval or parsing error, false is // returned and Error() can be queried for the exact failure. -func (it *TaikoL1OwnershipTransferredIterator) Next() bool { +func (it *TaikoL1OwnershipTransferStartedIterator) Next() bool { // If the iterator failed, stop iterating if it.fail != nil { return false @@ -2554,7 +2706,7 @@ func (it *TaikoL1OwnershipTransferredIterator) Next() bool { if it.done { select { case log := <-it.logs: - it.Event = new(TaikoL1OwnershipTransferred) + it.Event = new(TaikoL1OwnershipTransferStarted) if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { it.fail = err return false @@ -2569,7 +2721,7 @@ func (it *TaikoL1OwnershipTransferredIterator) Next() bool { // Iterator still in progress, wait for either a data or an error event select { case log := <-it.logs: - it.Event = new(TaikoL1OwnershipTransferred) + it.Event = new(TaikoL1OwnershipTransferStarted) if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { it.fail = err return false @@ -2585,28 +2737,28 @@ func (it *TaikoL1OwnershipTransferredIterator) Next() bool { } // Error returns any retrieval or parsing error occurred during filtering. -func (it *TaikoL1OwnershipTransferredIterator) Error() error { +func (it *TaikoL1OwnershipTransferStartedIterator) Error() error { return it.fail } // Close terminates the iteration process, releasing any pending underlying // resources. -func (it *TaikoL1OwnershipTransferredIterator) Close() error { +func (it *TaikoL1OwnershipTransferStartedIterator) Close() error { it.sub.Unsubscribe() return nil } -// TaikoL1OwnershipTransferred represents a OwnershipTransferred event raised by the TaikoL1 contract. -type TaikoL1OwnershipTransferred struct { +// TaikoL1OwnershipTransferStarted represents a OwnershipTransferStarted event raised by the TaikoL1 contract. +type TaikoL1OwnershipTransferStarted struct { PreviousOwner common.Address NewOwner common.Address Raw types.Log // Blockchain specific contextual infos } -// FilterOwnershipTransferred is a free log retrieval operation binding the contract event 0x8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0. +// FilterOwnershipTransferStarted is a free log retrieval operation binding the contract event 0x38d16b8cac22d99fc7c124b9cd0de2d3fa1faef420bfe791d8c362d765e22700. // -// Solidity: event OwnershipTransferred(address indexed previousOwner, address indexed newOwner) -func (_TaikoL1 *TaikoL1Filterer) FilterOwnershipTransferred(opts *bind.FilterOpts, previousOwner []common.Address, newOwner []common.Address) (*TaikoL1OwnershipTransferredIterator, error) { +// Solidity: event OwnershipTransferStarted(address indexed previousOwner, address indexed newOwner) +func (_TaikoL1 *TaikoL1Filterer) FilterOwnershipTransferStarted(opts *bind.FilterOpts, previousOwner []common.Address, newOwner []common.Address) (*TaikoL1OwnershipTransferStartedIterator, error) { var previousOwnerRule []interface{} for _, previousOwnerItem := range previousOwner { @@ -2617,17 +2769,17 @@ func (_TaikoL1 *TaikoL1Filterer) FilterOwnershipTransferred(opts *bind.FilterOpt newOwnerRule = append(newOwnerRule, newOwnerItem) } - logs, sub, err := _TaikoL1.contract.FilterLogs(opts, "OwnershipTransferred", previousOwnerRule, newOwnerRule) + logs, sub, err := _TaikoL1.contract.FilterLogs(opts, "OwnershipTransferStarted", previousOwnerRule, newOwnerRule) if err != nil { return nil, err } - return &TaikoL1OwnershipTransferredIterator{contract: _TaikoL1.contract, event: "OwnershipTransferred", logs: logs, sub: sub}, nil + return &TaikoL1OwnershipTransferStartedIterator{contract: _TaikoL1.contract, event: "OwnershipTransferStarted", logs: logs, sub: sub}, nil } -// WatchOwnershipTransferred is a free log subscription operation binding the contract event 0x8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0. +// WatchOwnershipTransferStarted is a free log subscription operation binding the contract event 0x38d16b8cac22d99fc7c124b9cd0de2d3fa1faef420bfe791d8c362d765e22700. // -// Solidity: event OwnershipTransferred(address indexed previousOwner, address indexed newOwner) -func (_TaikoL1 *TaikoL1Filterer) WatchOwnershipTransferred(opts *bind.WatchOpts, sink chan<- *TaikoL1OwnershipTransferred, previousOwner []common.Address, newOwner []common.Address) (event.Subscription, error) { +// Solidity: event OwnershipTransferStarted(address indexed previousOwner, address indexed newOwner) +func (_TaikoL1 *TaikoL1Filterer) WatchOwnershipTransferStarted(opts *bind.WatchOpts, sink chan<- *TaikoL1OwnershipTransferStarted, previousOwner []common.Address, newOwner []common.Address) (event.Subscription, error) { var previousOwnerRule []interface{} for _, previousOwnerItem := range previousOwner { @@ -2638,7 +2790,7 @@ func (_TaikoL1 *TaikoL1Filterer) WatchOwnershipTransferred(opts *bind.WatchOpts, newOwnerRule = append(newOwnerRule, newOwnerItem) } - logs, sub, err := _TaikoL1.contract.WatchLogs(opts, "OwnershipTransferred", previousOwnerRule, newOwnerRule) + logs, sub, err := _TaikoL1.contract.WatchLogs(opts, "OwnershipTransferStarted", previousOwnerRule, newOwnerRule) if err != nil { return nil, err } @@ -2648,8 +2800,8 @@ func (_TaikoL1 *TaikoL1Filterer) WatchOwnershipTransferred(opts *bind.WatchOpts, select { case log := <-logs: // New log arrived, parse the event and forward to the user - event := new(TaikoL1OwnershipTransferred) - if err := _TaikoL1.contract.UnpackLog(event, "OwnershipTransferred", log); err != nil { + event := new(TaikoL1OwnershipTransferStarted) + if err := _TaikoL1.contract.UnpackLog(event, "OwnershipTransferStarted", log); err != nil { return err } event.Raw = log @@ -2670,21 +2822,21 @@ func (_TaikoL1 *TaikoL1Filterer) WatchOwnershipTransferred(opts *bind.WatchOpts, }), nil } -// ParseOwnershipTransferred is a log parse operation binding the contract event 0x8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0. +// ParseOwnershipTransferStarted is a log parse operation binding the contract event 0x38d16b8cac22d99fc7c124b9cd0de2d3fa1faef420bfe791d8c362d765e22700. // -// Solidity: event OwnershipTransferred(address indexed previousOwner, address indexed newOwner) -func (_TaikoL1 *TaikoL1Filterer) ParseOwnershipTransferred(log types.Log) (*TaikoL1OwnershipTransferred, error) { - event := new(TaikoL1OwnershipTransferred) - if err := _TaikoL1.contract.UnpackLog(event, "OwnershipTransferred", log); err != nil { +// Solidity: event OwnershipTransferStarted(address indexed previousOwner, address indexed newOwner) +func (_TaikoL1 *TaikoL1Filterer) ParseOwnershipTransferStarted(log types.Log) (*TaikoL1OwnershipTransferStarted, error) { + event := new(TaikoL1OwnershipTransferStarted) + if err := _TaikoL1.contract.UnpackLog(event, "OwnershipTransferStarted", log); err != nil { return nil, err } event.Raw = log return event, nil } -// TaikoL1TokenCreditedIterator is returned from FilterTokenCredited and is used to iterate over the raw logs and unpacked data for TokenCredited events raised by the TaikoL1 contract. -type TaikoL1TokenCreditedIterator struct { - Event *TaikoL1TokenCredited // Event containing the contract specifics and raw log +// TaikoL1OwnershipTransferredIterator is returned from FilterOwnershipTransferred and is used to iterate over the raw logs and unpacked data for OwnershipTransferred events raised by the TaikoL1 contract. +type TaikoL1OwnershipTransferredIterator struct { + Event *TaikoL1OwnershipTransferred // Event containing the contract specifics and raw log contract *bind.BoundContract // Generic contract to use for unpacking event data event string // Event name to use for unpacking event data @@ -2698,7 +2850,7 @@ type TaikoL1TokenCreditedIterator struct { // Next advances the iterator to the subsequent event, returning whether there // are any more events found. In case of a retrieval or parsing error, false is // returned and Error() can be queried for the exact failure. -func (it *TaikoL1TokenCreditedIterator) Next() bool { +func (it *TaikoL1OwnershipTransferredIterator) Next() bool { // If the iterator failed, stop iterating if it.fail != nil { return false @@ -2707,7 +2859,7 @@ func (it *TaikoL1TokenCreditedIterator) Next() bool { if it.done { select { case log := <-it.logs: - it.Event = new(TaikoL1TokenCredited) + it.Event = new(TaikoL1OwnershipTransferred) if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { it.fail = err return false @@ -2722,7 +2874,7 @@ func (it *TaikoL1TokenCreditedIterator) Next() bool { // Iterator still in progress, wait for either a data or an error event select { case log := <-it.logs: - it.Event = new(TaikoL1TokenCredited) + it.Event = new(TaikoL1OwnershipTransferred) if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { it.fail = err return false @@ -2738,42 +2890,60 @@ func (it *TaikoL1TokenCreditedIterator) Next() bool { } // Error returns any retrieval or parsing error occurred during filtering. -func (it *TaikoL1TokenCreditedIterator) Error() error { +func (it *TaikoL1OwnershipTransferredIterator) Error() error { return it.fail } // Close terminates the iteration process, releasing any pending underlying // resources. -func (it *TaikoL1TokenCreditedIterator) Close() error { +func (it *TaikoL1OwnershipTransferredIterator) Close() error { it.sub.Unsubscribe() return nil } -// TaikoL1TokenCredited represents a TokenCredited event raised by the TaikoL1 contract. -type TaikoL1TokenCredited struct { - Amount *big.Int - Minted bool - Raw types.Log // Blockchain specific contextual infos +// TaikoL1OwnershipTransferred represents a OwnershipTransferred event raised by the TaikoL1 contract. +type TaikoL1OwnershipTransferred struct { + PreviousOwner common.Address + NewOwner common.Address + Raw types.Log // Blockchain specific contextual infos } -// FilterTokenCredited is a free log retrieval operation binding the contract event 0xeb0ac084e2fa6cfaebe54184190c7137c2fcc63c16e1dfaf6442ae95c01c44ad. +// FilterOwnershipTransferred is a free log retrieval operation binding the contract event 0x8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0. // -// Solidity: event TokenCredited(uint256 amount, bool minted) -func (_TaikoL1 *TaikoL1Filterer) FilterTokenCredited(opts *bind.FilterOpts) (*TaikoL1TokenCreditedIterator, error) { +// Solidity: event OwnershipTransferred(address indexed previousOwner, address indexed newOwner) +func (_TaikoL1 *TaikoL1Filterer) FilterOwnershipTransferred(opts *bind.FilterOpts, previousOwner []common.Address, newOwner []common.Address) (*TaikoL1OwnershipTransferredIterator, error) { - logs, sub, err := _TaikoL1.contract.FilterLogs(opts, "TokenCredited") + var previousOwnerRule []interface{} + for _, previousOwnerItem := range previousOwner { + previousOwnerRule = append(previousOwnerRule, previousOwnerItem) + } + var newOwnerRule []interface{} + for _, newOwnerItem := range newOwner { + newOwnerRule = append(newOwnerRule, newOwnerItem) + } + + logs, sub, err := _TaikoL1.contract.FilterLogs(opts, "OwnershipTransferred", previousOwnerRule, newOwnerRule) if err != nil { return nil, err } - return &TaikoL1TokenCreditedIterator{contract: _TaikoL1.contract, event: "TokenCredited", logs: logs, sub: sub}, nil + return &TaikoL1OwnershipTransferredIterator{contract: _TaikoL1.contract, event: "OwnershipTransferred", logs: logs, sub: sub}, nil } -// WatchTokenCredited is a free log subscription operation binding the contract event 0xeb0ac084e2fa6cfaebe54184190c7137c2fcc63c16e1dfaf6442ae95c01c44ad. +// WatchOwnershipTransferred is a free log subscription operation binding the contract event 0x8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0. // -// Solidity: event TokenCredited(uint256 amount, bool minted) -func (_TaikoL1 *TaikoL1Filterer) WatchTokenCredited(opts *bind.WatchOpts, sink chan<- *TaikoL1TokenCredited) (event.Subscription, error) { +// Solidity: event OwnershipTransferred(address indexed previousOwner, address indexed newOwner) +func (_TaikoL1 *TaikoL1Filterer) WatchOwnershipTransferred(opts *bind.WatchOpts, sink chan<- *TaikoL1OwnershipTransferred, previousOwner []common.Address, newOwner []common.Address) (event.Subscription, error) { - logs, sub, err := _TaikoL1.contract.WatchLogs(opts, "TokenCredited") + var previousOwnerRule []interface{} + for _, previousOwnerItem := range previousOwner { + previousOwnerRule = append(previousOwnerRule, previousOwnerItem) + } + var newOwnerRule []interface{} + for _, newOwnerItem := range newOwner { + newOwnerRule = append(newOwnerRule, newOwnerItem) + } + + logs, sub, err := _TaikoL1.contract.WatchLogs(opts, "OwnershipTransferred", previousOwnerRule, newOwnerRule) if err != nil { return nil, err } @@ -2783,8 +2953,8 @@ func (_TaikoL1 *TaikoL1Filterer) WatchTokenCredited(opts *bind.WatchOpts, sink c select { case log := <-logs: // New log arrived, parse the event and forward to the user - event := new(TaikoL1TokenCredited) - if err := _TaikoL1.contract.UnpackLog(event, "TokenCredited", log); err != nil { + event := new(TaikoL1OwnershipTransferred) + if err := _TaikoL1.contract.UnpackLog(event, "OwnershipTransferred", log); err != nil { return err } event.Raw = log @@ -2805,21 +2975,21 @@ func (_TaikoL1 *TaikoL1Filterer) WatchTokenCredited(opts *bind.WatchOpts, sink c }), nil } -// ParseTokenCredited is a log parse operation binding the contract event 0xeb0ac084e2fa6cfaebe54184190c7137c2fcc63c16e1dfaf6442ae95c01c44ad. +// ParseOwnershipTransferred is a log parse operation binding the contract event 0x8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0. // -// Solidity: event TokenCredited(uint256 amount, bool minted) -func (_TaikoL1 *TaikoL1Filterer) ParseTokenCredited(log types.Log) (*TaikoL1TokenCredited, error) { - event := new(TaikoL1TokenCredited) - if err := _TaikoL1.contract.UnpackLog(event, "TokenCredited", log); err != nil { +// Solidity: event OwnershipTransferred(address indexed previousOwner, address indexed newOwner) +func (_TaikoL1 *TaikoL1Filterer) ParseOwnershipTransferred(log types.Log) (*TaikoL1OwnershipTransferred, error) { + event := new(TaikoL1OwnershipTransferred) + if err := _TaikoL1.contract.UnpackLog(event, "OwnershipTransferred", log); err != nil { return nil, err } event.Raw = log return event, nil } -// TaikoL1TokenCredited0Iterator is returned from FilterTokenCredited0 and is used to iterate over the raw logs and unpacked data for TokenCredited0 events raised by the TaikoL1 contract. -type TaikoL1TokenCredited0Iterator struct { - Event *TaikoL1TokenCredited0 // Event containing the contract specifics and raw log +// TaikoL1PausedIterator is returned from FilterPaused and is used to iterate over the raw logs and unpacked data for Paused events raised by the TaikoL1 contract. +type TaikoL1PausedIterator struct { + Event *TaikoL1Paused // Event containing the contract specifics and raw log contract *bind.BoundContract // Generic contract to use for unpacking event data event string // Event name to use for unpacking event data @@ -2833,7 +3003,7 @@ type TaikoL1TokenCredited0Iterator struct { // Next advances the iterator to the subsequent event, returning whether there // are any more events found. In case of a retrieval or parsing error, false is // returned and Error() can be queried for the exact failure. -func (it *TaikoL1TokenCredited0Iterator) Next() bool { +func (it *TaikoL1PausedIterator) Next() bool { // If the iterator failed, stop iterating if it.fail != nil { return false @@ -2842,7 +3012,7 @@ func (it *TaikoL1TokenCredited0Iterator) Next() bool { if it.done { select { case log := <-it.logs: - it.Event = new(TaikoL1TokenCredited0) + it.Event = new(TaikoL1Paused) if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { it.fail = err return false @@ -2857,7 +3027,7 @@ func (it *TaikoL1TokenCredited0Iterator) Next() bool { // Iterator still in progress, wait for either a data or an error event select { case log := <-it.logs: - it.Event = new(TaikoL1TokenCredited0) + it.Event = new(TaikoL1Paused) if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { it.fail = err return false @@ -2873,42 +3043,41 @@ func (it *TaikoL1TokenCredited0Iterator) Next() bool { } // Error returns any retrieval or parsing error occurred during filtering. -func (it *TaikoL1TokenCredited0Iterator) Error() error { +func (it *TaikoL1PausedIterator) Error() error { return it.fail } // Close terminates the iteration process, releasing any pending underlying // resources. -func (it *TaikoL1TokenCredited0Iterator) Close() error { +func (it *TaikoL1PausedIterator) Close() error { it.sub.Unsubscribe() return nil } -// TaikoL1TokenCredited0 represents a TokenCredited0 event raised by the TaikoL1 contract. -type TaikoL1TokenCredited0 struct { - Amount *big.Int - Minted bool - Raw types.Log // Blockchain specific contextual infos +// TaikoL1Paused represents a Paused event raised by the TaikoL1 contract. +type TaikoL1Paused struct { + Account common.Address + Raw types.Log // Blockchain specific contextual infos } -// FilterTokenCredited0 is a free log retrieval operation binding the contract event 0xeb0ac084e2fa6cfaebe54184190c7137c2fcc63c16e1dfaf6442ae95c01c44ad. +// FilterPaused is a free log retrieval operation binding the contract event 0x62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a258. // -// Solidity: event TokenCredited(uint256 amount, bool minted) -func (_TaikoL1 *TaikoL1Filterer) FilterTokenCredited0(opts *bind.FilterOpts) (*TaikoL1TokenCredited0Iterator, error) { +// Solidity: event Paused(address account) +func (_TaikoL1 *TaikoL1Filterer) FilterPaused(opts *bind.FilterOpts) (*TaikoL1PausedIterator, error) { - logs, sub, err := _TaikoL1.contract.FilterLogs(opts, "TokenCredited0") + logs, sub, err := _TaikoL1.contract.FilterLogs(opts, "Paused") if err != nil { return nil, err } - return &TaikoL1TokenCredited0Iterator{contract: _TaikoL1.contract, event: "TokenCredited0", logs: logs, sub: sub}, nil + return &TaikoL1PausedIterator{contract: _TaikoL1.contract, event: "Paused", logs: logs, sub: sub}, nil } -// WatchTokenCredited0 is a free log subscription operation binding the contract event 0xeb0ac084e2fa6cfaebe54184190c7137c2fcc63c16e1dfaf6442ae95c01c44ad. +// WatchPaused is a free log subscription operation binding the contract event 0x62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a258. // -// Solidity: event TokenCredited(uint256 amount, bool minted) -func (_TaikoL1 *TaikoL1Filterer) WatchTokenCredited0(opts *bind.WatchOpts, sink chan<- *TaikoL1TokenCredited0) (event.Subscription, error) { +// Solidity: event Paused(address account) +func (_TaikoL1 *TaikoL1Filterer) WatchPaused(opts *bind.WatchOpts, sink chan<- *TaikoL1Paused) (event.Subscription, error) { - logs, sub, err := _TaikoL1.contract.WatchLogs(opts, "TokenCredited0") + logs, sub, err := _TaikoL1.contract.WatchLogs(opts, "Paused") if err != nil { return nil, err } @@ -2918,8 +3087,8 @@ func (_TaikoL1 *TaikoL1Filterer) WatchTokenCredited0(opts *bind.WatchOpts, sink select { case log := <-logs: // New log arrived, parse the event and forward to the user - event := new(TaikoL1TokenCredited0) - if err := _TaikoL1.contract.UnpackLog(event, "TokenCredited0", log); err != nil { + event := new(TaikoL1Paused) + if err := _TaikoL1.contract.UnpackLog(event, "Paused", log); err != nil { return err } event.Raw = log @@ -2940,21 +3109,21 @@ func (_TaikoL1 *TaikoL1Filterer) WatchTokenCredited0(opts *bind.WatchOpts, sink }), nil } -// ParseTokenCredited0 is a log parse operation binding the contract event 0xeb0ac084e2fa6cfaebe54184190c7137c2fcc63c16e1dfaf6442ae95c01c44ad. +// ParsePaused is a log parse operation binding the contract event 0x62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a258. // -// Solidity: event TokenCredited(uint256 amount, bool minted) -func (_TaikoL1 *TaikoL1Filterer) ParseTokenCredited0(log types.Log) (*TaikoL1TokenCredited0, error) { - event := new(TaikoL1TokenCredited0) - if err := _TaikoL1.contract.UnpackLog(event, "TokenCredited0", log); err != nil { +// Solidity: event Paused(address account) +func (_TaikoL1 *TaikoL1Filterer) ParsePaused(log types.Log) (*TaikoL1Paused, error) { + event := new(TaikoL1Paused) + if err := _TaikoL1.contract.UnpackLog(event, "Paused", log); err != nil { return nil, err } event.Raw = log return event, nil } -// TaikoL1TokenDebitedIterator is returned from FilterTokenDebited and is used to iterate over the raw logs and unpacked data for TokenDebited events raised by the TaikoL1 contract. -type TaikoL1TokenDebitedIterator struct { - Event *TaikoL1TokenDebited // Event containing the contract specifics and raw log +// TaikoL1ProvingPausedIterator is returned from FilterProvingPaused and is used to iterate over the raw logs and unpacked data for ProvingPaused events raised by the TaikoL1 contract. +type TaikoL1ProvingPausedIterator struct { + Event *TaikoL1ProvingPaused // Event containing the contract specifics and raw log contract *bind.BoundContract // Generic contract to use for unpacking event data event string // Event name to use for unpacking event data @@ -2968,7 +3137,7 @@ type TaikoL1TokenDebitedIterator struct { // Next advances the iterator to the subsequent event, returning whether there // are any more events found. In case of a retrieval or parsing error, false is // returned and Error() can be queried for the exact failure. -func (it *TaikoL1TokenDebitedIterator) Next() bool { +func (it *TaikoL1ProvingPausedIterator) Next() bool { // If the iterator failed, stop iterating if it.fail != nil { return false @@ -2977,7 +3146,7 @@ func (it *TaikoL1TokenDebitedIterator) Next() bool { if it.done { select { case log := <-it.logs: - it.Event = new(TaikoL1TokenDebited) + it.Event = new(TaikoL1ProvingPaused) if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { it.fail = err return false @@ -2992,7 +3161,7 @@ func (it *TaikoL1TokenDebitedIterator) Next() bool { // Iterator still in progress, wait for either a data or an error event select { case log := <-it.logs: - it.Event = new(TaikoL1TokenDebited) + it.Event = new(TaikoL1ProvingPaused) if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { it.fail = err return false @@ -3008,42 +3177,41 @@ func (it *TaikoL1TokenDebitedIterator) Next() bool { } // Error returns any retrieval or parsing error occurred during filtering. -func (it *TaikoL1TokenDebitedIterator) Error() error { +func (it *TaikoL1ProvingPausedIterator) Error() error { return it.fail } // Close terminates the iteration process, releasing any pending underlying // resources. -func (it *TaikoL1TokenDebitedIterator) Close() error { +func (it *TaikoL1ProvingPausedIterator) Close() error { it.sub.Unsubscribe() return nil } -// TaikoL1TokenDebited represents a TokenDebited event raised by the TaikoL1 contract. -type TaikoL1TokenDebited struct { - Amount *big.Int - FromLocalBalance bool - Raw types.Log // Blockchain specific contextual infos +// TaikoL1ProvingPaused represents a ProvingPaused event raised by the TaikoL1 contract. +type TaikoL1ProvingPaused struct { + Paused bool + Raw types.Log // Blockchain specific contextual infos } -// FilterTokenDebited is a free log retrieval operation binding the contract event 0x8012eed335fcd2a9b93e688e5146be66d3b48c2e40578e713dc5f254d7fea32a. +// FilterProvingPaused is a free log retrieval operation binding the contract event 0xed64db85835d07c3c990b8ebdd55e32d64e5ed53143b6ef2179e7bfaf17ddc3b. // -// Solidity: event TokenDebited(uint256 amount, bool fromLocalBalance) -func (_TaikoL1 *TaikoL1Filterer) FilterTokenDebited(opts *bind.FilterOpts) (*TaikoL1TokenDebitedIterator, error) { +// Solidity: event ProvingPaused(bool paused) +func (_TaikoL1 *TaikoL1Filterer) FilterProvingPaused(opts *bind.FilterOpts) (*TaikoL1ProvingPausedIterator, error) { - logs, sub, err := _TaikoL1.contract.FilterLogs(opts, "TokenDebited") + logs, sub, err := _TaikoL1.contract.FilterLogs(opts, "ProvingPaused") if err != nil { return nil, err } - return &TaikoL1TokenDebitedIterator{contract: _TaikoL1.contract, event: "TokenDebited", logs: logs, sub: sub}, nil + return &TaikoL1ProvingPausedIterator{contract: _TaikoL1.contract, event: "ProvingPaused", logs: logs, sub: sub}, nil } -// WatchTokenDebited is a free log subscription operation binding the contract event 0x8012eed335fcd2a9b93e688e5146be66d3b48c2e40578e713dc5f254d7fea32a. +// WatchProvingPaused is a free log subscription operation binding the contract event 0xed64db85835d07c3c990b8ebdd55e32d64e5ed53143b6ef2179e7bfaf17ddc3b. // -// Solidity: event TokenDebited(uint256 amount, bool fromLocalBalance) -func (_TaikoL1 *TaikoL1Filterer) WatchTokenDebited(opts *bind.WatchOpts, sink chan<- *TaikoL1TokenDebited) (event.Subscription, error) { +// Solidity: event ProvingPaused(bool paused) +func (_TaikoL1 *TaikoL1Filterer) WatchProvingPaused(opts *bind.WatchOpts, sink chan<- *TaikoL1ProvingPaused) (event.Subscription, error) { - logs, sub, err := _TaikoL1.contract.WatchLogs(opts, "TokenDebited") + logs, sub, err := _TaikoL1.contract.WatchLogs(opts, "ProvingPaused") if err != nil { return nil, err } @@ -3053,8 +3221,8 @@ func (_TaikoL1 *TaikoL1Filterer) WatchTokenDebited(opts *bind.WatchOpts, sink ch select { case log := <-logs: // New log arrived, parse the event and forward to the user - event := new(TaikoL1TokenDebited) - if err := _TaikoL1.contract.UnpackLog(event, "TokenDebited", log); err != nil { + event := new(TaikoL1ProvingPaused) + if err := _TaikoL1.contract.UnpackLog(event, "ProvingPaused", log); err != nil { return err } event.Raw = log @@ -3075,21 +3243,21 @@ func (_TaikoL1 *TaikoL1Filterer) WatchTokenDebited(opts *bind.WatchOpts, sink ch }), nil } -// ParseTokenDebited is a log parse operation binding the contract event 0x8012eed335fcd2a9b93e688e5146be66d3b48c2e40578e713dc5f254d7fea32a. +// ParseProvingPaused is a log parse operation binding the contract event 0xed64db85835d07c3c990b8ebdd55e32d64e5ed53143b6ef2179e7bfaf17ddc3b. // -// Solidity: event TokenDebited(uint256 amount, bool fromLocalBalance) -func (_TaikoL1 *TaikoL1Filterer) ParseTokenDebited(log types.Log) (*TaikoL1TokenDebited, error) { - event := new(TaikoL1TokenDebited) - if err := _TaikoL1.contract.UnpackLog(event, "TokenDebited", log); err != nil { +// Solidity: event ProvingPaused(bool paused) +func (_TaikoL1 *TaikoL1Filterer) ParseProvingPaused(log types.Log) (*TaikoL1ProvingPaused, error) { + event := new(TaikoL1ProvingPaused) + if err := _TaikoL1.contract.UnpackLog(event, "ProvingPaused", log); err != nil { return nil, err } event.Raw = log return event, nil } -// TaikoL1TokenDebited0Iterator is returned from FilterTokenDebited0 and is used to iterate over the raw logs and unpacked data for TokenDebited0 events raised by the TaikoL1 contract. -type TaikoL1TokenDebited0Iterator struct { - Event *TaikoL1TokenDebited0 // Event containing the contract specifics and raw log +// TaikoL1ProvingPaused0Iterator is returned from FilterProvingPaused0 and is used to iterate over the raw logs and unpacked data for ProvingPaused0 events raised by the TaikoL1 contract. +type TaikoL1ProvingPaused0Iterator struct { + Event *TaikoL1ProvingPaused0 // Event containing the contract specifics and raw log contract *bind.BoundContract // Generic contract to use for unpacking event data event string // Event name to use for unpacking event data @@ -3103,7 +3271,7 @@ type TaikoL1TokenDebited0Iterator struct { // Next advances the iterator to the subsequent event, returning whether there // are any more events found. In case of a retrieval or parsing error, false is // returned and Error() can be queried for the exact failure. -func (it *TaikoL1TokenDebited0Iterator) Next() bool { +func (it *TaikoL1ProvingPaused0Iterator) Next() bool { // If the iterator failed, stop iterating if it.fail != nil { return false @@ -3112,7 +3280,7 @@ func (it *TaikoL1TokenDebited0Iterator) Next() bool { if it.done { select { case log := <-it.logs: - it.Event = new(TaikoL1TokenDebited0) + it.Event = new(TaikoL1ProvingPaused0) if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { it.fail = err return false @@ -3127,7 +3295,7 @@ func (it *TaikoL1TokenDebited0Iterator) Next() bool { // Iterator still in progress, wait for either a data or an error event select { case log := <-it.logs: - it.Event = new(TaikoL1TokenDebited0) + it.Event = new(TaikoL1ProvingPaused0) if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { it.fail = err return false @@ -3143,42 +3311,41 @@ func (it *TaikoL1TokenDebited0Iterator) Next() bool { } // Error returns any retrieval or parsing error occurred during filtering. -func (it *TaikoL1TokenDebited0Iterator) Error() error { +func (it *TaikoL1ProvingPaused0Iterator) Error() error { return it.fail } // Close terminates the iteration process, releasing any pending underlying // resources. -func (it *TaikoL1TokenDebited0Iterator) Close() error { +func (it *TaikoL1ProvingPaused0Iterator) Close() error { it.sub.Unsubscribe() return nil } -// TaikoL1TokenDebited0 represents a TokenDebited0 event raised by the TaikoL1 contract. -type TaikoL1TokenDebited0 struct { - Amount *big.Int - FromLocalBalance bool - Raw types.Log // Blockchain specific contextual infos +// TaikoL1ProvingPaused0 represents a ProvingPaused0 event raised by the TaikoL1 contract. +type TaikoL1ProvingPaused0 struct { + Paused bool + Raw types.Log // Blockchain specific contextual infos } -// FilterTokenDebited0 is a free log retrieval operation binding the contract event 0x8012eed335fcd2a9b93e688e5146be66d3b48c2e40578e713dc5f254d7fea32a. +// FilterProvingPaused0 is a free log retrieval operation binding the contract event 0xed64db85835d07c3c990b8ebdd55e32d64e5ed53143b6ef2179e7bfaf17ddc3b. // -// Solidity: event TokenDebited(uint256 amount, bool fromLocalBalance) -func (_TaikoL1 *TaikoL1Filterer) FilterTokenDebited0(opts *bind.FilterOpts) (*TaikoL1TokenDebited0Iterator, error) { +// Solidity: event ProvingPaused(bool paused) +func (_TaikoL1 *TaikoL1Filterer) FilterProvingPaused0(opts *bind.FilterOpts) (*TaikoL1ProvingPaused0Iterator, error) { - logs, sub, err := _TaikoL1.contract.FilterLogs(opts, "TokenDebited0") + logs, sub, err := _TaikoL1.contract.FilterLogs(opts, "ProvingPaused0") if err != nil { return nil, err } - return &TaikoL1TokenDebited0Iterator{contract: _TaikoL1.contract, event: "TokenDebited0", logs: logs, sub: sub}, nil + return &TaikoL1ProvingPaused0Iterator{contract: _TaikoL1.contract, event: "ProvingPaused0", logs: logs, sub: sub}, nil } -// WatchTokenDebited0 is a free log subscription operation binding the contract event 0x8012eed335fcd2a9b93e688e5146be66d3b48c2e40578e713dc5f254d7fea32a. +// WatchProvingPaused0 is a free log subscription operation binding the contract event 0xed64db85835d07c3c990b8ebdd55e32d64e5ed53143b6ef2179e7bfaf17ddc3b. // -// Solidity: event TokenDebited(uint256 amount, bool fromLocalBalance) -func (_TaikoL1 *TaikoL1Filterer) WatchTokenDebited0(opts *bind.WatchOpts, sink chan<- *TaikoL1TokenDebited0) (event.Subscription, error) { +// Solidity: event ProvingPaused(bool paused) +func (_TaikoL1 *TaikoL1Filterer) WatchProvingPaused0(opts *bind.WatchOpts, sink chan<- *TaikoL1ProvingPaused0) (event.Subscription, error) { - logs, sub, err := _TaikoL1.contract.WatchLogs(opts, "TokenDebited0") + logs, sub, err := _TaikoL1.contract.WatchLogs(opts, "ProvingPaused0") if err != nil { return nil, err } @@ -3188,8 +3355,8 @@ func (_TaikoL1 *TaikoL1Filterer) WatchTokenDebited0(opts *bind.WatchOpts, sink c select { case log := <-logs: // New log arrived, parse the event and forward to the user - event := new(TaikoL1TokenDebited0) - if err := _TaikoL1.contract.UnpackLog(event, "TokenDebited0", log); err != nil { + event := new(TaikoL1ProvingPaused0) + if err := _TaikoL1.contract.UnpackLog(event, "ProvingPaused0", log); err != nil { return err } event.Raw = log @@ -3210,21 +3377,21 @@ func (_TaikoL1 *TaikoL1Filterer) WatchTokenDebited0(opts *bind.WatchOpts, sink c }), nil } -// ParseTokenDebited0 is a log parse operation binding the contract event 0x8012eed335fcd2a9b93e688e5146be66d3b48c2e40578e713dc5f254d7fea32a. +// ParseProvingPaused0 is a log parse operation binding the contract event 0xed64db85835d07c3c990b8ebdd55e32d64e5ed53143b6ef2179e7bfaf17ddc3b. // -// Solidity: event TokenDebited(uint256 amount, bool fromLocalBalance) -func (_TaikoL1 *TaikoL1Filterer) ParseTokenDebited0(log types.Log) (*TaikoL1TokenDebited0, error) { - event := new(TaikoL1TokenDebited0) - if err := _TaikoL1.contract.UnpackLog(event, "TokenDebited0", log); err != nil { +// Solidity: event ProvingPaused(bool paused) +func (_TaikoL1 *TaikoL1Filterer) ParseProvingPaused0(log types.Log) (*TaikoL1ProvingPaused0, error) { + event := new(TaikoL1ProvingPaused0) + if err := _TaikoL1.contract.UnpackLog(event, "ProvingPaused0", log); err != nil { return nil, err } event.Raw = log return event, nil } -// TaikoL1TokenDepositedIterator is returned from FilterTokenDeposited and is used to iterate over the raw logs and unpacked data for TokenDeposited events raised by the TaikoL1 contract. -type TaikoL1TokenDepositedIterator struct { - Event *TaikoL1TokenDeposited // Event containing the contract specifics and raw log +// TaikoL1TokenCreditedIterator is returned from FilterTokenCredited and is used to iterate over the raw logs and unpacked data for TokenCredited events raised by the TaikoL1 contract. +type TaikoL1TokenCreditedIterator struct { + Event *TaikoL1TokenCredited // Event containing the contract specifics and raw log contract *bind.BoundContract // Generic contract to use for unpacking event data event string // Event name to use for unpacking event data @@ -3238,7 +3405,7 @@ type TaikoL1TokenDepositedIterator struct { // Next advances the iterator to the subsequent event, returning whether there // are any more events found. In case of a retrieval or parsing error, false is // returned and Error() can be queried for the exact failure. -func (it *TaikoL1TokenDepositedIterator) Next() bool { +func (it *TaikoL1TokenCreditedIterator) Next() bool { // If the iterator failed, stop iterating if it.fail != nil { return false @@ -3247,7 +3414,7 @@ func (it *TaikoL1TokenDepositedIterator) Next() bool { if it.done { select { case log := <-it.logs: - it.Event = new(TaikoL1TokenDeposited) + it.Event = new(TaikoL1TokenCredited) if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { it.fail = err return false @@ -3262,7 +3429,7 @@ func (it *TaikoL1TokenDepositedIterator) Next() bool { // Iterator still in progress, wait for either a data or an error event select { case log := <-it.logs: - it.Event = new(TaikoL1TokenDeposited) + it.Event = new(TaikoL1TokenCredited) if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { it.fail = err return false @@ -3278,41 +3445,42 @@ func (it *TaikoL1TokenDepositedIterator) Next() bool { } // Error returns any retrieval or parsing error occurred during filtering. -func (it *TaikoL1TokenDepositedIterator) Error() error { +func (it *TaikoL1TokenCreditedIterator) Error() error { return it.fail } // Close terminates the iteration process, releasing any pending underlying // resources. -func (it *TaikoL1TokenDepositedIterator) Close() error { +func (it *TaikoL1TokenCreditedIterator) Close() error { it.sub.Unsubscribe() return nil } -// TaikoL1TokenDeposited represents a TokenDeposited event raised by the TaikoL1 contract. -type TaikoL1TokenDeposited struct { +// TaikoL1TokenCredited represents a TokenCredited event raised by the TaikoL1 contract. +type TaikoL1TokenCredited struct { + To common.Address Amount *big.Int Raw types.Log // Blockchain specific contextual infos } -// FilterTokenDeposited is a free log retrieval operation binding the contract event 0x26a49ee784523ce049bcbe276a63c7c9dbd9f428b1aa53633e679c9c046e8858. +// FilterTokenCredited is a free log retrieval operation binding the contract event 0xcc91b0b567e69e32d26830c50d1078f0baec319d458fa847f2633c1c2f71dd74. // -// Solidity: event TokenDeposited(uint256 amount) -func (_TaikoL1 *TaikoL1Filterer) FilterTokenDeposited(opts *bind.FilterOpts) (*TaikoL1TokenDepositedIterator, error) { +// Solidity: event TokenCredited(address to, uint256 amount) +func (_TaikoL1 *TaikoL1Filterer) FilterTokenCredited(opts *bind.FilterOpts) (*TaikoL1TokenCreditedIterator, error) { - logs, sub, err := _TaikoL1.contract.FilterLogs(opts, "TokenDeposited") + logs, sub, err := _TaikoL1.contract.FilterLogs(opts, "TokenCredited") if err != nil { return nil, err } - return &TaikoL1TokenDepositedIterator{contract: _TaikoL1.contract, event: "TokenDeposited", logs: logs, sub: sub}, nil + return &TaikoL1TokenCreditedIterator{contract: _TaikoL1.contract, event: "TokenCredited", logs: logs, sub: sub}, nil } -// WatchTokenDeposited is a free log subscription operation binding the contract event 0x26a49ee784523ce049bcbe276a63c7c9dbd9f428b1aa53633e679c9c046e8858. +// WatchTokenCredited is a free log subscription operation binding the contract event 0xcc91b0b567e69e32d26830c50d1078f0baec319d458fa847f2633c1c2f71dd74. // -// Solidity: event TokenDeposited(uint256 amount) -func (_TaikoL1 *TaikoL1Filterer) WatchTokenDeposited(opts *bind.WatchOpts, sink chan<- *TaikoL1TokenDeposited) (event.Subscription, error) { +// Solidity: event TokenCredited(address to, uint256 amount) +func (_TaikoL1 *TaikoL1Filterer) WatchTokenCredited(opts *bind.WatchOpts, sink chan<- *TaikoL1TokenCredited) (event.Subscription, error) { - logs, sub, err := _TaikoL1.contract.WatchLogs(opts, "TokenDeposited") + logs, sub, err := _TaikoL1.contract.WatchLogs(opts, "TokenCredited") if err != nil { return nil, err } @@ -3322,8 +3490,8 @@ func (_TaikoL1 *TaikoL1Filterer) WatchTokenDeposited(opts *bind.WatchOpts, sink select { case log := <-logs: // New log arrived, parse the event and forward to the user - event := new(TaikoL1TokenDeposited) - if err := _TaikoL1.contract.UnpackLog(event, "TokenDeposited", log); err != nil { + event := new(TaikoL1TokenCredited) + if err := _TaikoL1.contract.UnpackLog(event, "TokenCredited", log); err != nil { return err } event.Raw = log @@ -3344,21 +3512,21 @@ func (_TaikoL1 *TaikoL1Filterer) WatchTokenDeposited(opts *bind.WatchOpts, sink }), nil } -// ParseTokenDeposited is a log parse operation binding the contract event 0x26a49ee784523ce049bcbe276a63c7c9dbd9f428b1aa53633e679c9c046e8858. +// ParseTokenCredited is a log parse operation binding the contract event 0xcc91b0b567e69e32d26830c50d1078f0baec319d458fa847f2633c1c2f71dd74. // -// Solidity: event TokenDeposited(uint256 amount) -func (_TaikoL1 *TaikoL1Filterer) ParseTokenDeposited(log types.Log) (*TaikoL1TokenDeposited, error) { - event := new(TaikoL1TokenDeposited) - if err := _TaikoL1.contract.UnpackLog(event, "TokenDeposited", log); err != nil { +// Solidity: event TokenCredited(address to, uint256 amount) +func (_TaikoL1 *TaikoL1Filterer) ParseTokenCredited(log types.Log) (*TaikoL1TokenCredited, error) { + event := new(TaikoL1TokenCredited) + if err := _TaikoL1.contract.UnpackLog(event, "TokenCredited", log); err != nil { return nil, err } event.Raw = log return event, nil } -// TaikoL1TokenDeposited0Iterator is returned from FilterTokenDeposited0 and is used to iterate over the raw logs and unpacked data for TokenDeposited0 events raised by the TaikoL1 contract. -type TaikoL1TokenDeposited0Iterator struct { - Event *TaikoL1TokenDeposited0 // Event containing the contract specifics and raw log +// TaikoL1TokenCredited0Iterator is returned from FilterTokenCredited0 and is used to iterate over the raw logs and unpacked data for TokenCredited0 events raised by the TaikoL1 contract. +type TaikoL1TokenCredited0Iterator struct { + Event *TaikoL1TokenCredited0 // Event containing the contract specifics and raw log contract *bind.BoundContract // Generic contract to use for unpacking event data event string // Event name to use for unpacking event data @@ -3372,7 +3540,7 @@ type TaikoL1TokenDeposited0Iterator struct { // Next advances the iterator to the subsequent event, returning whether there // are any more events found. In case of a retrieval or parsing error, false is // returned and Error() can be queried for the exact failure. -func (it *TaikoL1TokenDeposited0Iterator) Next() bool { +func (it *TaikoL1TokenCredited0Iterator) Next() bool { // If the iterator failed, stop iterating if it.fail != nil { return false @@ -3381,7 +3549,7 @@ func (it *TaikoL1TokenDeposited0Iterator) Next() bool { if it.done { select { case log := <-it.logs: - it.Event = new(TaikoL1TokenDeposited0) + it.Event = new(TaikoL1TokenCredited0) if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { it.fail = err return false @@ -3396,7 +3564,7 @@ func (it *TaikoL1TokenDeposited0Iterator) Next() bool { // Iterator still in progress, wait for either a data or an error event select { case log := <-it.logs: - it.Event = new(TaikoL1TokenDeposited0) + it.Event = new(TaikoL1TokenCredited0) if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { it.fail = err return false @@ -3412,41 +3580,42 @@ func (it *TaikoL1TokenDeposited0Iterator) Next() bool { } // Error returns any retrieval or parsing error occurred during filtering. -func (it *TaikoL1TokenDeposited0Iterator) Error() error { +func (it *TaikoL1TokenCredited0Iterator) Error() error { return it.fail } // Close terminates the iteration process, releasing any pending underlying // resources. -func (it *TaikoL1TokenDeposited0Iterator) Close() error { +func (it *TaikoL1TokenCredited0Iterator) Close() error { it.sub.Unsubscribe() return nil } -// TaikoL1TokenDeposited0 represents a TokenDeposited0 event raised by the TaikoL1 contract. -type TaikoL1TokenDeposited0 struct { +// TaikoL1TokenCredited0 represents a TokenCredited0 event raised by the TaikoL1 contract. +type TaikoL1TokenCredited0 struct { + To common.Address Amount *big.Int Raw types.Log // Blockchain specific contextual infos } -// FilterTokenDeposited0 is a free log retrieval operation binding the contract event 0x26a49ee784523ce049bcbe276a63c7c9dbd9f428b1aa53633e679c9c046e8858. +// FilterTokenCredited0 is a free log retrieval operation binding the contract event 0xcc91b0b567e69e32d26830c50d1078f0baec319d458fa847f2633c1c2f71dd74. // -// Solidity: event TokenDeposited(uint256 amount) -func (_TaikoL1 *TaikoL1Filterer) FilterTokenDeposited0(opts *bind.FilterOpts) (*TaikoL1TokenDeposited0Iterator, error) { +// Solidity: event TokenCredited(address to, uint256 amount) +func (_TaikoL1 *TaikoL1Filterer) FilterTokenCredited0(opts *bind.FilterOpts) (*TaikoL1TokenCredited0Iterator, error) { - logs, sub, err := _TaikoL1.contract.FilterLogs(opts, "TokenDeposited0") + logs, sub, err := _TaikoL1.contract.FilterLogs(opts, "TokenCredited0") if err != nil { return nil, err } - return &TaikoL1TokenDeposited0Iterator{contract: _TaikoL1.contract, event: "TokenDeposited0", logs: logs, sub: sub}, nil + return &TaikoL1TokenCredited0Iterator{contract: _TaikoL1.contract, event: "TokenCredited0", logs: logs, sub: sub}, nil } -// WatchTokenDeposited0 is a free log subscription operation binding the contract event 0x26a49ee784523ce049bcbe276a63c7c9dbd9f428b1aa53633e679c9c046e8858. +// WatchTokenCredited0 is a free log subscription operation binding the contract event 0xcc91b0b567e69e32d26830c50d1078f0baec319d458fa847f2633c1c2f71dd74. // -// Solidity: event TokenDeposited(uint256 amount) -func (_TaikoL1 *TaikoL1Filterer) WatchTokenDeposited0(opts *bind.WatchOpts, sink chan<- *TaikoL1TokenDeposited0) (event.Subscription, error) { +// Solidity: event TokenCredited(address to, uint256 amount) +func (_TaikoL1 *TaikoL1Filterer) WatchTokenCredited0(opts *bind.WatchOpts, sink chan<- *TaikoL1TokenCredited0) (event.Subscription, error) { - logs, sub, err := _TaikoL1.contract.WatchLogs(opts, "TokenDeposited0") + logs, sub, err := _TaikoL1.contract.WatchLogs(opts, "TokenCredited0") if err != nil { return nil, err } @@ -3456,8 +3625,8 @@ func (_TaikoL1 *TaikoL1Filterer) WatchTokenDeposited0(opts *bind.WatchOpts, sink select { case log := <-logs: // New log arrived, parse the event and forward to the user - event := new(TaikoL1TokenDeposited0) - if err := _TaikoL1.contract.UnpackLog(event, "TokenDeposited0", log); err != nil { + event := new(TaikoL1TokenCredited0) + if err := _TaikoL1.contract.UnpackLog(event, "TokenCredited0", log); err != nil { return err } event.Raw = log @@ -3478,21 +3647,21 @@ func (_TaikoL1 *TaikoL1Filterer) WatchTokenDeposited0(opts *bind.WatchOpts, sink }), nil } -// ParseTokenDeposited0 is a log parse operation binding the contract event 0x26a49ee784523ce049bcbe276a63c7c9dbd9f428b1aa53633e679c9c046e8858. +// ParseTokenCredited0 is a log parse operation binding the contract event 0xcc91b0b567e69e32d26830c50d1078f0baec319d458fa847f2633c1c2f71dd74. // -// Solidity: event TokenDeposited(uint256 amount) -func (_TaikoL1 *TaikoL1Filterer) ParseTokenDeposited0(log types.Log) (*TaikoL1TokenDeposited0, error) { - event := new(TaikoL1TokenDeposited0) - if err := _TaikoL1.contract.UnpackLog(event, "TokenDeposited0", log); err != nil { +// Solidity: event TokenCredited(address to, uint256 amount) +func (_TaikoL1 *TaikoL1Filterer) ParseTokenCredited0(log types.Log) (*TaikoL1TokenCredited0, error) { + event := new(TaikoL1TokenCredited0) + if err := _TaikoL1.contract.UnpackLog(event, "TokenCredited0", log); err != nil { return nil, err } event.Raw = log return event, nil } -// TaikoL1TokenWithdrawnIterator is returned from FilterTokenWithdrawn and is used to iterate over the raw logs and unpacked data for TokenWithdrawn events raised by the TaikoL1 contract. -type TaikoL1TokenWithdrawnIterator struct { - Event *TaikoL1TokenWithdrawn // Event containing the contract specifics and raw log +// TaikoL1TokenDebitedIterator is returned from FilterTokenDebited and is used to iterate over the raw logs and unpacked data for TokenDebited events raised by the TaikoL1 contract. +type TaikoL1TokenDebitedIterator struct { + Event *TaikoL1TokenDebited // Event containing the contract specifics and raw log contract *bind.BoundContract // Generic contract to use for unpacking event data event string // Event name to use for unpacking event data @@ -3506,7 +3675,7 @@ type TaikoL1TokenWithdrawnIterator struct { // Next advances the iterator to the subsequent event, returning whether there // are any more events found. In case of a retrieval or parsing error, false is // returned and Error() can be queried for the exact failure. -func (it *TaikoL1TokenWithdrawnIterator) Next() bool { +func (it *TaikoL1TokenDebitedIterator) Next() bool { // If the iterator failed, stop iterating if it.fail != nil { return false @@ -3515,7 +3684,7 @@ func (it *TaikoL1TokenWithdrawnIterator) Next() bool { if it.done { select { case log := <-it.logs: - it.Event = new(TaikoL1TokenWithdrawn) + it.Event = new(TaikoL1TokenDebited) if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { it.fail = err return false @@ -3530,7 +3699,7 @@ func (it *TaikoL1TokenWithdrawnIterator) Next() bool { // Iterator still in progress, wait for either a data or an error event select { case log := <-it.logs: - it.Event = new(TaikoL1TokenWithdrawn) + it.Event = new(TaikoL1TokenDebited) if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { it.fail = err return false @@ -3546,41 +3715,42 @@ func (it *TaikoL1TokenWithdrawnIterator) Next() bool { } // Error returns any retrieval or parsing error occurred during filtering. -func (it *TaikoL1TokenWithdrawnIterator) Error() error { +func (it *TaikoL1TokenDebitedIterator) Error() error { return it.fail } // Close terminates the iteration process, releasing any pending underlying // resources. -func (it *TaikoL1TokenWithdrawnIterator) Close() error { +func (it *TaikoL1TokenDebitedIterator) Close() error { it.sub.Unsubscribe() return nil } -// TaikoL1TokenWithdrawn represents a TokenWithdrawn event raised by the TaikoL1 contract. -type TaikoL1TokenWithdrawn struct { +// TaikoL1TokenDebited represents a TokenDebited event raised by the TaikoL1 contract. +type TaikoL1TokenDebited struct { + From common.Address Amount *big.Int Raw types.Log // Blockchain specific contextual infos } -// FilterTokenWithdrawn is a free log retrieval operation binding the contract event 0xc172f6497c150fc242267f743e8e4034b31b16ee123408d6d5f75a81128de114. +// FilterTokenDebited is a free log retrieval operation binding the contract event 0x9414c932608e522aea77e1b5fd1cdb441e5d57daf49d9a9a0b7409ef8d9e0070. // -// Solidity: event TokenWithdrawn(uint256 amount) -func (_TaikoL1 *TaikoL1Filterer) FilterTokenWithdrawn(opts *bind.FilterOpts) (*TaikoL1TokenWithdrawnIterator, error) { +// Solidity: event TokenDebited(address from, uint256 amount) +func (_TaikoL1 *TaikoL1Filterer) FilterTokenDebited(opts *bind.FilterOpts) (*TaikoL1TokenDebitedIterator, error) { - logs, sub, err := _TaikoL1.contract.FilterLogs(opts, "TokenWithdrawn") + logs, sub, err := _TaikoL1.contract.FilterLogs(opts, "TokenDebited") if err != nil { return nil, err } - return &TaikoL1TokenWithdrawnIterator{contract: _TaikoL1.contract, event: "TokenWithdrawn", logs: logs, sub: sub}, nil + return &TaikoL1TokenDebitedIterator{contract: _TaikoL1.contract, event: "TokenDebited", logs: logs, sub: sub}, nil } -// WatchTokenWithdrawn is a free log subscription operation binding the contract event 0xc172f6497c150fc242267f743e8e4034b31b16ee123408d6d5f75a81128de114. +// WatchTokenDebited is a free log subscription operation binding the contract event 0x9414c932608e522aea77e1b5fd1cdb441e5d57daf49d9a9a0b7409ef8d9e0070. // -// Solidity: event TokenWithdrawn(uint256 amount) -func (_TaikoL1 *TaikoL1Filterer) WatchTokenWithdrawn(opts *bind.WatchOpts, sink chan<- *TaikoL1TokenWithdrawn) (event.Subscription, error) { +// Solidity: event TokenDebited(address from, uint256 amount) +func (_TaikoL1 *TaikoL1Filterer) WatchTokenDebited(opts *bind.WatchOpts, sink chan<- *TaikoL1TokenDebited) (event.Subscription, error) { - logs, sub, err := _TaikoL1.contract.WatchLogs(opts, "TokenWithdrawn") + logs, sub, err := _TaikoL1.contract.WatchLogs(opts, "TokenDebited") if err != nil { return nil, err } @@ -3590,8 +3760,8 @@ func (_TaikoL1 *TaikoL1Filterer) WatchTokenWithdrawn(opts *bind.WatchOpts, sink select { case log := <-logs: // New log arrived, parse the event and forward to the user - event := new(TaikoL1TokenWithdrawn) - if err := _TaikoL1.contract.UnpackLog(event, "TokenWithdrawn", log); err != nil { + event := new(TaikoL1TokenDebited) + if err := _TaikoL1.contract.UnpackLog(event, "TokenDebited", log); err != nil { return err } event.Raw = log @@ -3612,21 +3782,21 @@ func (_TaikoL1 *TaikoL1Filterer) WatchTokenWithdrawn(opts *bind.WatchOpts, sink }), nil } -// ParseTokenWithdrawn is a log parse operation binding the contract event 0xc172f6497c150fc242267f743e8e4034b31b16ee123408d6d5f75a81128de114. +// ParseTokenDebited is a log parse operation binding the contract event 0x9414c932608e522aea77e1b5fd1cdb441e5d57daf49d9a9a0b7409ef8d9e0070. // -// Solidity: event TokenWithdrawn(uint256 amount) -func (_TaikoL1 *TaikoL1Filterer) ParseTokenWithdrawn(log types.Log) (*TaikoL1TokenWithdrawn, error) { - event := new(TaikoL1TokenWithdrawn) - if err := _TaikoL1.contract.UnpackLog(event, "TokenWithdrawn", log); err != nil { +// Solidity: event TokenDebited(address from, uint256 amount) +func (_TaikoL1 *TaikoL1Filterer) ParseTokenDebited(log types.Log) (*TaikoL1TokenDebited, error) { + event := new(TaikoL1TokenDebited) + if err := _TaikoL1.contract.UnpackLog(event, "TokenDebited", log); err != nil { return nil, err } event.Raw = log return event, nil } -// TaikoL1TokenWithdrawn0Iterator is returned from FilterTokenWithdrawn0 and is used to iterate over the raw logs and unpacked data for TokenWithdrawn0 events raised by the TaikoL1 contract. -type TaikoL1TokenWithdrawn0Iterator struct { - Event *TaikoL1TokenWithdrawn0 // Event containing the contract specifics and raw log +// TaikoL1TokenDebited0Iterator is returned from FilterTokenDebited0 and is used to iterate over the raw logs and unpacked data for TokenDebited0 events raised by the TaikoL1 contract. +type TaikoL1TokenDebited0Iterator struct { + Event *TaikoL1TokenDebited0 // Event containing the contract specifics and raw log contract *bind.BoundContract // Generic contract to use for unpacking event data event string // Event name to use for unpacking event data @@ -3640,7 +3810,7 @@ type TaikoL1TokenWithdrawn0Iterator struct { // Next advances the iterator to the subsequent event, returning whether there // are any more events found. In case of a retrieval or parsing error, false is // returned and Error() can be queried for the exact failure. -func (it *TaikoL1TokenWithdrawn0Iterator) Next() bool { +func (it *TaikoL1TokenDebited0Iterator) Next() bool { // If the iterator failed, stop iterating if it.fail != nil { return false @@ -3649,7 +3819,7 @@ func (it *TaikoL1TokenWithdrawn0Iterator) Next() bool { if it.done { select { case log := <-it.logs: - it.Event = new(TaikoL1TokenWithdrawn0) + it.Event = new(TaikoL1TokenDebited0) if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { it.fail = err return false @@ -3664,7 +3834,7 @@ func (it *TaikoL1TokenWithdrawn0Iterator) Next() bool { // Iterator still in progress, wait for either a data or an error event select { case log := <-it.logs: - it.Event = new(TaikoL1TokenWithdrawn0) + it.Event = new(TaikoL1TokenDebited0) if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { it.fail = err return false @@ -3680,41 +3850,42 @@ func (it *TaikoL1TokenWithdrawn0Iterator) Next() bool { } // Error returns any retrieval or parsing error occurred during filtering. -func (it *TaikoL1TokenWithdrawn0Iterator) Error() error { +func (it *TaikoL1TokenDebited0Iterator) Error() error { return it.fail } // Close terminates the iteration process, releasing any pending underlying // resources. -func (it *TaikoL1TokenWithdrawn0Iterator) Close() error { +func (it *TaikoL1TokenDebited0Iterator) Close() error { it.sub.Unsubscribe() return nil } -// TaikoL1TokenWithdrawn0 represents a TokenWithdrawn0 event raised by the TaikoL1 contract. -type TaikoL1TokenWithdrawn0 struct { +// TaikoL1TokenDebited0 represents a TokenDebited0 event raised by the TaikoL1 contract. +type TaikoL1TokenDebited0 struct { + From common.Address Amount *big.Int Raw types.Log // Blockchain specific contextual infos } -// FilterTokenWithdrawn0 is a free log retrieval operation binding the contract event 0xc172f6497c150fc242267f743e8e4034b31b16ee123408d6d5f75a81128de114. +// FilterTokenDebited0 is a free log retrieval operation binding the contract event 0x9414c932608e522aea77e1b5fd1cdb441e5d57daf49d9a9a0b7409ef8d9e0070. // -// Solidity: event TokenWithdrawn(uint256 amount) -func (_TaikoL1 *TaikoL1Filterer) FilterTokenWithdrawn0(opts *bind.FilterOpts) (*TaikoL1TokenWithdrawn0Iterator, error) { +// Solidity: event TokenDebited(address from, uint256 amount) +func (_TaikoL1 *TaikoL1Filterer) FilterTokenDebited0(opts *bind.FilterOpts) (*TaikoL1TokenDebited0Iterator, error) { - logs, sub, err := _TaikoL1.contract.FilterLogs(opts, "TokenWithdrawn0") + logs, sub, err := _TaikoL1.contract.FilterLogs(opts, "TokenDebited0") if err != nil { return nil, err } - return &TaikoL1TokenWithdrawn0Iterator{contract: _TaikoL1.contract, event: "TokenWithdrawn0", logs: logs, sub: sub}, nil + return &TaikoL1TokenDebited0Iterator{contract: _TaikoL1.contract, event: "TokenDebited0", logs: logs, sub: sub}, nil } -// WatchTokenWithdrawn0 is a free log subscription operation binding the contract event 0xc172f6497c150fc242267f743e8e4034b31b16ee123408d6d5f75a81128de114. +// WatchTokenDebited0 is a free log subscription operation binding the contract event 0x9414c932608e522aea77e1b5fd1cdb441e5d57daf49d9a9a0b7409ef8d9e0070. // -// Solidity: event TokenWithdrawn(uint256 amount) -func (_TaikoL1 *TaikoL1Filterer) WatchTokenWithdrawn0(opts *bind.WatchOpts, sink chan<- *TaikoL1TokenWithdrawn0) (event.Subscription, error) { +// Solidity: event TokenDebited(address from, uint256 amount) +func (_TaikoL1 *TaikoL1Filterer) WatchTokenDebited0(opts *bind.WatchOpts, sink chan<- *TaikoL1TokenDebited0) (event.Subscription, error) { - logs, sub, err := _TaikoL1.contract.WatchLogs(opts, "TokenWithdrawn0") + logs, sub, err := _TaikoL1.contract.WatchLogs(opts, "TokenDebited0") if err != nil { return nil, err } @@ -3724,8 +3895,8 @@ func (_TaikoL1 *TaikoL1Filterer) WatchTokenWithdrawn0(opts *bind.WatchOpts, sink select { case log := <-logs: // New log arrived, parse the event and forward to the user - event := new(TaikoL1TokenWithdrawn0) - if err := _TaikoL1.contract.UnpackLog(event, "TokenWithdrawn0", log); err != nil { + event := new(TaikoL1TokenDebited0) + if err := _TaikoL1.contract.UnpackLog(event, "TokenDebited0", log); err != nil { return err } event.Raw = log @@ -3746,21 +3917,21 @@ func (_TaikoL1 *TaikoL1Filterer) WatchTokenWithdrawn0(opts *bind.WatchOpts, sink }), nil } -// ParseTokenWithdrawn0 is a log parse operation binding the contract event 0xc172f6497c150fc242267f743e8e4034b31b16ee123408d6d5f75a81128de114. +// ParseTokenDebited0 is a log parse operation binding the contract event 0x9414c932608e522aea77e1b5fd1cdb441e5d57daf49d9a9a0b7409ef8d9e0070. // -// Solidity: event TokenWithdrawn(uint256 amount) -func (_TaikoL1 *TaikoL1Filterer) ParseTokenWithdrawn0(log types.Log) (*TaikoL1TokenWithdrawn0, error) { - event := new(TaikoL1TokenWithdrawn0) - if err := _TaikoL1.contract.UnpackLog(event, "TokenWithdrawn0", log); err != nil { +// Solidity: event TokenDebited(address from, uint256 amount) +func (_TaikoL1 *TaikoL1Filterer) ParseTokenDebited0(log types.Log) (*TaikoL1TokenDebited0, error) { + event := new(TaikoL1TokenDebited0) + if err := _TaikoL1.contract.UnpackLog(event, "TokenDebited0", log); err != nil { return nil, err } event.Raw = log return event, nil } -// TaikoL1TokenWithdrawnByOwnerIterator is returned from FilterTokenWithdrawnByOwner and is used to iterate over the raw logs and unpacked data for TokenWithdrawnByOwner events raised by the TaikoL1 contract. -type TaikoL1TokenWithdrawnByOwnerIterator struct { - Event *TaikoL1TokenWithdrawnByOwner // Event containing the contract specifics and raw log +// TaikoL1TokenDepositedIterator is returned from FilterTokenDeposited and is used to iterate over the raw logs and unpacked data for TokenDeposited events raised by the TaikoL1 contract. +type TaikoL1TokenDepositedIterator struct { + Event *TaikoL1TokenDeposited // Event containing the contract specifics and raw log contract *bind.BoundContract // Generic contract to use for unpacking event data event string // Event name to use for unpacking event data @@ -3774,7 +3945,7 @@ type TaikoL1TokenWithdrawnByOwnerIterator struct { // Next advances the iterator to the subsequent event, returning whether there // are any more events found. In case of a retrieval or parsing error, false is // returned and Error() can be queried for the exact failure. -func (it *TaikoL1TokenWithdrawnByOwnerIterator) Next() bool { +func (it *TaikoL1TokenDepositedIterator) Next() bool { // If the iterator failed, stop iterating if it.fail != nil { return false @@ -3783,7 +3954,7 @@ func (it *TaikoL1TokenWithdrawnByOwnerIterator) Next() bool { if it.done { select { case log := <-it.logs: - it.Event = new(TaikoL1TokenWithdrawnByOwner) + it.Event = new(TaikoL1TokenDeposited) if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { it.fail = err return false @@ -3798,7 +3969,7 @@ func (it *TaikoL1TokenWithdrawnByOwnerIterator) Next() bool { // Iterator still in progress, wait for either a data or an error event select { case log := <-it.logs: - it.Event = new(TaikoL1TokenWithdrawnByOwner) + it.Event = new(TaikoL1TokenDeposited) if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { it.fail = err return false @@ -3814,42 +3985,41 @@ func (it *TaikoL1TokenWithdrawnByOwnerIterator) Next() bool { } // Error returns any retrieval or parsing error occurred during filtering. -func (it *TaikoL1TokenWithdrawnByOwnerIterator) Error() error { +func (it *TaikoL1TokenDepositedIterator) Error() error { return it.fail } // Close terminates the iteration process, releasing any pending underlying // resources. -func (it *TaikoL1TokenWithdrawnByOwnerIterator) Close() error { +func (it *TaikoL1TokenDepositedIterator) Close() error { it.sub.Unsubscribe() return nil } -// TaikoL1TokenWithdrawnByOwner represents a TokenWithdrawnByOwner event raised by the TaikoL1 contract. -type TaikoL1TokenWithdrawnByOwner struct { - To common.Address +// TaikoL1TokenDeposited represents a TokenDeposited event raised by the TaikoL1 contract. +type TaikoL1TokenDeposited struct { Amount *big.Int Raw types.Log // Blockchain specific contextual infos } -// FilterTokenWithdrawnByOwner is a free log retrieval operation binding the contract event 0xc4f72d4b841abf7e4afe6a797fbc9d92a5186aa6332c2ff33c0e327f1c3e9a4c. +// FilterTokenDeposited is a free log retrieval operation binding the contract event 0x26a49ee784523ce049bcbe276a63c7c9dbd9f428b1aa53633e679c9c046e8858. // -// Solidity: event TokenWithdrawnByOwner(address to, uint256 amount) -func (_TaikoL1 *TaikoL1Filterer) FilterTokenWithdrawnByOwner(opts *bind.FilterOpts) (*TaikoL1TokenWithdrawnByOwnerIterator, error) { +// Solidity: event TokenDeposited(uint256 amount) +func (_TaikoL1 *TaikoL1Filterer) FilterTokenDeposited(opts *bind.FilterOpts) (*TaikoL1TokenDepositedIterator, error) { - logs, sub, err := _TaikoL1.contract.FilterLogs(opts, "TokenWithdrawnByOwner") + logs, sub, err := _TaikoL1.contract.FilterLogs(opts, "TokenDeposited") if err != nil { return nil, err } - return &TaikoL1TokenWithdrawnByOwnerIterator{contract: _TaikoL1.contract, event: "TokenWithdrawnByOwner", logs: logs, sub: sub}, nil + return &TaikoL1TokenDepositedIterator{contract: _TaikoL1.contract, event: "TokenDeposited", logs: logs, sub: sub}, nil } -// WatchTokenWithdrawnByOwner is a free log subscription operation binding the contract event 0xc4f72d4b841abf7e4afe6a797fbc9d92a5186aa6332c2ff33c0e327f1c3e9a4c. +// WatchTokenDeposited is a free log subscription operation binding the contract event 0x26a49ee784523ce049bcbe276a63c7c9dbd9f428b1aa53633e679c9c046e8858. // -// Solidity: event TokenWithdrawnByOwner(address to, uint256 amount) -func (_TaikoL1 *TaikoL1Filterer) WatchTokenWithdrawnByOwner(opts *bind.WatchOpts, sink chan<- *TaikoL1TokenWithdrawnByOwner) (event.Subscription, error) { +// Solidity: event TokenDeposited(uint256 amount) +func (_TaikoL1 *TaikoL1Filterer) WatchTokenDeposited(opts *bind.WatchOpts, sink chan<- *TaikoL1TokenDeposited) (event.Subscription, error) { - logs, sub, err := _TaikoL1.contract.WatchLogs(opts, "TokenWithdrawnByOwner") + logs, sub, err := _TaikoL1.contract.WatchLogs(opts, "TokenDeposited") if err != nil { return nil, err } @@ -3859,8 +4029,8 @@ func (_TaikoL1 *TaikoL1Filterer) WatchTokenWithdrawnByOwner(opts *bind.WatchOpts select { case log := <-logs: // New log arrived, parse the event and forward to the user - event := new(TaikoL1TokenWithdrawnByOwner) - if err := _TaikoL1.contract.UnpackLog(event, "TokenWithdrawnByOwner", log); err != nil { + event := new(TaikoL1TokenDeposited) + if err := _TaikoL1.contract.UnpackLog(event, "TokenDeposited", log); err != nil { return err } event.Raw = log @@ -3881,21 +4051,21 @@ func (_TaikoL1 *TaikoL1Filterer) WatchTokenWithdrawnByOwner(opts *bind.WatchOpts }), nil } -// ParseTokenWithdrawnByOwner is a log parse operation binding the contract event 0xc4f72d4b841abf7e4afe6a797fbc9d92a5186aa6332c2ff33c0e327f1c3e9a4c. +// ParseTokenDeposited is a log parse operation binding the contract event 0x26a49ee784523ce049bcbe276a63c7c9dbd9f428b1aa53633e679c9c046e8858. // -// Solidity: event TokenWithdrawnByOwner(address to, uint256 amount) -func (_TaikoL1 *TaikoL1Filterer) ParseTokenWithdrawnByOwner(log types.Log) (*TaikoL1TokenWithdrawnByOwner, error) { - event := new(TaikoL1TokenWithdrawnByOwner) - if err := _TaikoL1.contract.UnpackLog(event, "TokenWithdrawnByOwner", log); err != nil { +// Solidity: event TokenDeposited(uint256 amount) +func (_TaikoL1 *TaikoL1Filterer) ParseTokenDeposited(log types.Log) (*TaikoL1TokenDeposited, error) { + event := new(TaikoL1TokenDeposited) + if err := _TaikoL1.contract.UnpackLog(event, "TokenDeposited", log); err != nil { return nil, err } event.Raw = log return event, nil } -// TaikoL1TokenWithdrawnByOwner0Iterator is returned from FilterTokenWithdrawnByOwner0 and is used to iterate over the raw logs and unpacked data for TokenWithdrawnByOwner0 events raised by the TaikoL1 contract. -type TaikoL1TokenWithdrawnByOwner0Iterator struct { - Event *TaikoL1TokenWithdrawnByOwner0 // Event containing the contract specifics and raw log +// TaikoL1TokenWithdrawnIterator is returned from FilterTokenWithdrawn and is used to iterate over the raw logs and unpacked data for TokenWithdrawn events raised by the TaikoL1 contract. +type TaikoL1TokenWithdrawnIterator struct { + Event *TaikoL1TokenWithdrawn // Event containing the contract specifics and raw log contract *bind.BoundContract // Generic contract to use for unpacking event data event string // Event name to use for unpacking event data @@ -3909,7 +4079,7 @@ type TaikoL1TokenWithdrawnByOwner0Iterator struct { // Next advances the iterator to the subsequent event, returning whether there // are any more events found. In case of a retrieval or parsing error, false is // returned and Error() can be queried for the exact failure. -func (it *TaikoL1TokenWithdrawnByOwner0Iterator) Next() bool { +func (it *TaikoL1TokenWithdrawnIterator) Next() bool { // If the iterator failed, stop iterating if it.fail != nil { return false @@ -3918,7 +4088,7 @@ func (it *TaikoL1TokenWithdrawnByOwner0Iterator) Next() bool { if it.done { select { case log := <-it.logs: - it.Event = new(TaikoL1TokenWithdrawnByOwner0) + it.Event = new(TaikoL1TokenWithdrawn) if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { it.fail = err return false @@ -3933,7 +4103,7 @@ func (it *TaikoL1TokenWithdrawnByOwner0Iterator) Next() bool { // Iterator still in progress, wait for either a data or an error event select { case log := <-it.logs: - it.Event = new(TaikoL1TokenWithdrawnByOwner0) + it.Event = new(TaikoL1TokenWithdrawn) if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { it.fail = err return false @@ -3949,42 +4119,41 @@ func (it *TaikoL1TokenWithdrawnByOwner0Iterator) Next() bool { } // Error returns any retrieval or parsing error occurred during filtering. -func (it *TaikoL1TokenWithdrawnByOwner0Iterator) Error() error { +func (it *TaikoL1TokenWithdrawnIterator) Error() error { return it.fail } // Close terminates the iteration process, releasing any pending underlying // resources. -func (it *TaikoL1TokenWithdrawnByOwner0Iterator) Close() error { +func (it *TaikoL1TokenWithdrawnIterator) Close() error { it.sub.Unsubscribe() return nil } -// TaikoL1TokenWithdrawnByOwner0 represents a TokenWithdrawnByOwner0 event raised by the TaikoL1 contract. -type TaikoL1TokenWithdrawnByOwner0 struct { - To common.Address +// TaikoL1TokenWithdrawn represents a TokenWithdrawn event raised by the TaikoL1 contract. +type TaikoL1TokenWithdrawn struct { Amount *big.Int Raw types.Log // Blockchain specific contextual infos } -// FilterTokenWithdrawnByOwner0 is a free log retrieval operation binding the contract event 0xc4f72d4b841abf7e4afe6a797fbc9d92a5186aa6332c2ff33c0e327f1c3e9a4c. +// FilterTokenWithdrawn is a free log retrieval operation binding the contract event 0xc172f6497c150fc242267f743e8e4034b31b16ee123408d6d5f75a81128de114. // -// Solidity: event TokenWithdrawnByOwner(address to, uint256 amount) -func (_TaikoL1 *TaikoL1Filterer) FilterTokenWithdrawnByOwner0(opts *bind.FilterOpts) (*TaikoL1TokenWithdrawnByOwner0Iterator, error) { +// Solidity: event TokenWithdrawn(uint256 amount) +func (_TaikoL1 *TaikoL1Filterer) FilterTokenWithdrawn(opts *bind.FilterOpts) (*TaikoL1TokenWithdrawnIterator, error) { - logs, sub, err := _TaikoL1.contract.FilterLogs(opts, "TokenWithdrawnByOwner0") + logs, sub, err := _TaikoL1.contract.FilterLogs(opts, "TokenWithdrawn") if err != nil { return nil, err } - return &TaikoL1TokenWithdrawnByOwner0Iterator{contract: _TaikoL1.contract, event: "TokenWithdrawnByOwner0", logs: logs, sub: sub}, nil + return &TaikoL1TokenWithdrawnIterator{contract: _TaikoL1.contract, event: "TokenWithdrawn", logs: logs, sub: sub}, nil } -// WatchTokenWithdrawnByOwner0 is a free log subscription operation binding the contract event 0xc4f72d4b841abf7e4afe6a797fbc9d92a5186aa6332c2ff33c0e327f1c3e9a4c. +// WatchTokenWithdrawn is a free log subscription operation binding the contract event 0xc172f6497c150fc242267f743e8e4034b31b16ee123408d6d5f75a81128de114. // -// Solidity: event TokenWithdrawnByOwner(address to, uint256 amount) -func (_TaikoL1 *TaikoL1Filterer) WatchTokenWithdrawnByOwner0(opts *bind.WatchOpts, sink chan<- *TaikoL1TokenWithdrawnByOwner0) (event.Subscription, error) { +// Solidity: event TokenWithdrawn(uint256 amount) +func (_TaikoL1 *TaikoL1Filterer) WatchTokenWithdrawn(opts *bind.WatchOpts, sink chan<- *TaikoL1TokenWithdrawn) (event.Subscription, error) { - logs, sub, err := _TaikoL1.contract.WatchLogs(opts, "TokenWithdrawnByOwner0") + logs, sub, err := _TaikoL1.contract.WatchLogs(opts, "TokenWithdrawn") if err != nil { return nil, err } @@ -3994,8 +4163,8 @@ func (_TaikoL1 *TaikoL1Filterer) WatchTokenWithdrawnByOwner0(opts *bind.WatchOpt select { case log := <-logs: // New log arrived, parse the event and forward to the user - event := new(TaikoL1TokenWithdrawnByOwner0) - if err := _TaikoL1.contract.UnpackLog(event, "TokenWithdrawnByOwner0", log); err != nil { + event := new(TaikoL1TokenWithdrawn) + if err := _TaikoL1.contract.UnpackLog(event, "TokenWithdrawn", log); err != nil { return err } event.Raw = log @@ -4016,12 +4185,12 @@ func (_TaikoL1 *TaikoL1Filterer) WatchTokenWithdrawnByOwner0(opts *bind.WatchOpt }), nil } -// ParseTokenWithdrawnByOwner0 is a log parse operation binding the contract event 0xc4f72d4b841abf7e4afe6a797fbc9d92a5186aa6332c2ff33c0e327f1c3e9a4c. +// ParseTokenWithdrawn is a log parse operation binding the contract event 0xc172f6497c150fc242267f743e8e4034b31b16ee123408d6d5f75a81128de114. // -// Solidity: event TokenWithdrawnByOwner(address to, uint256 amount) -func (_TaikoL1 *TaikoL1Filterer) ParseTokenWithdrawnByOwner0(log types.Log) (*TaikoL1TokenWithdrawnByOwner0, error) { - event := new(TaikoL1TokenWithdrawnByOwner0) - if err := _TaikoL1.contract.UnpackLog(event, "TokenWithdrawnByOwner0", log); err != nil { +// Solidity: event TokenWithdrawn(uint256 amount) +func (_TaikoL1 *TaikoL1Filterer) ParseTokenWithdrawn(log types.Log) (*TaikoL1TokenWithdrawn, error) { + event := new(TaikoL1TokenWithdrawn) + if err := _TaikoL1.contract.UnpackLog(event, "TokenWithdrawn", log); err != nil { return nil, err } event.Raw = log @@ -4098,18 +4267,16 @@ func (it *TaikoL1TransitionContestedIterator) Close() error { // TaikoL1TransitionContested represents a TransitionContested event raised by the TaikoL1 contract. type TaikoL1TransitionContested struct { BlockId *big.Int - ParentHash [32]byte - BlockHash [32]byte - SignalRoot [32]byte + Tran TaikoDataTransition Contester common.Address ContestBond *big.Int Tier uint16 Raw types.Log // Blockchain specific contextual infos } -// FilterTransitionContested is a free log retrieval operation binding the contract event 0x135961061f7c7cad9a389080483d14014ba6fe9ebcf6d3d826185c69dd71ce75. +// FilterTransitionContested is a free log retrieval operation binding the contract event 0xb4c0a86c1ff239277697775b1e91d3375fd3a5ef6b345aa4e2f6001c890558f6. // -// Solidity: event TransitionContested(uint256 indexed blockId, bytes32 parentHash, bytes32 blockHash, bytes32 signalRoot, address contester, uint96 contestBond, uint16 tier) +// Solidity: event TransitionContested(uint256 indexed blockId, (bytes32,bytes32,bytes32,bytes32) tran, address contester, uint96 contestBond, uint16 tier) func (_TaikoL1 *TaikoL1Filterer) FilterTransitionContested(opts *bind.FilterOpts, blockId []*big.Int) (*TaikoL1TransitionContestedIterator, error) { var blockIdRule []interface{} @@ -4124,9 +4291,9 @@ func (_TaikoL1 *TaikoL1Filterer) FilterTransitionContested(opts *bind.FilterOpts return &TaikoL1TransitionContestedIterator{contract: _TaikoL1.contract, event: "TransitionContested", logs: logs, sub: sub}, nil } -// WatchTransitionContested is a free log subscription operation binding the contract event 0x135961061f7c7cad9a389080483d14014ba6fe9ebcf6d3d826185c69dd71ce75. +// WatchTransitionContested is a free log subscription operation binding the contract event 0xb4c0a86c1ff239277697775b1e91d3375fd3a5ef6b345aa4e2f6001c890558f6. // -// Solidity: event TransitionContested(uint256 indexed blockId, bytes32 parentHash, bytes32 blockHash, bytes32 signalRoot, address contester, uint96 contestBond, uint16 tier) +// Solidity: event TransitionContested(uint256 indexed blockId, (bytes32,bytes32,bytes32,bytes32) tran, address contester, uint96 contestBond, uint16 tier) func (_TaikoL1 *TaikoL1Filterer) WatchTransitionContested(opts *bind.WatchOpts, sink chan<- *TaikoL1TransitionContested, blockId []*big.Int) (event.Subscription, error) { var blockIdRule []interface{} @@ -4166,9 +4333,9 @@ func (_TaikoL1 *TaikoL1Filterer) WatchTransitionContested(opts *bind.WatchOpts, }), nil } -// ParseTransitionContested is a log parse operation binding the contract event 0x135961061f7c7cad9a389080483d14014ba6fe9ebcf6d3d826185c69dd71ce75. +// ParseTransitionContested is a log parse operation binding the contract event 0xb4c0a86c1ff239277697775b1e91d3375fd3a5ef6b345aa4e2f6001c890558f6. // -// Solidity: event TransitionContested(uint256 indexed blockId, bytes32 parentHash, bytes32 blockHash, bytes32 signalRoot, address contester, uint96 contestBond, uint16 tier) +// Solidity: event TransitionContested(uint256 indexed blockId, (bytes32,bytes32,bytes32,bytes32) tran, address contester, uint96 contestBond, uint16 tier) func (_TaikoL1 *TaikoL1Filterer) ParseTransitionContested(log types.Log) (*TaikoL1TransitionContested, error) { event := new(TaikoL1TransitionContested) if err := _TaikoL1.contract.UnpackLog(event, "TransitionContested", log); err != nil { @@ -4248,18 +4415,16 @@ func (it *TaikoL1TransitionContested0Iterator) Close() error { // TaikoL1TransitionContested0 represents a TransitionContested0 event raised by the TaikoL1 contract. type TaikoL1TransitionContested0 struct { BlockId *big.Int - ParentHash [32]byte - BlockHash [32]byte - SignalRoot [32]byte + Tran TaikoDataTransition Contester common.Address ContestBond *big.Int Tier uint16 Raw types.Log // Blockchain specific contextual infos } -// FilterTransitionContested0 is a free log retrieval operation binding the contract event 0x135961061f7c7cad9a389080483d14014ba6fe9ebcf6d3d826185c69dd71ce75. +// FilterTransitionContested0 is a free log retrieval operation binding the contract event 0xb4c0a86c1ff239277697775b1e91d3375fd3a5ef6b345aa4e2f6001c890558f6. // -// Solidity: event TransitionContested(uint256 indexed blockId, bytes32 parentHash, bytes32 blockHash, bytes32 signalRoot, address contester, uint96 contestBond, uint16 tier) +// Solidity: event TransitionContested(uint256 indexed blockId, (bytes32,bytes32,bytes32,bytes32) tran, address contester, uint96 contestBond, uint16 tier) func (_TaikoL1 *TaikoL1Filterer) FilterTransitionContested0(opts *bind.FilterOpts, blockId []*big.Int) (*TaikoL1TransitionContested0Iterator, error) { var blockIdRule []interface{} @@ -4274,9 +4439,9 @@ func (_TaikoL1 *TaikoL1Filterer) FilterTransitionContested0(opts *bind.FilterOpt return &TaikoL1TransitionContested0Iterator{contract: _TaikoL1.contract, event: "TransitionContested0", logs: logs, sub: sub}, nil } -// WatchTransitionContested0 is a free log subscription operation binding the contract event 0x135961061f7c7cad9a389080483d14014ba6fe9ebcf6d3d826185c69dd71ce75. +// WatchTransitionContested0 is a free log subscription operation binding the contract event 0xb4c0a86c1ff239277697775b1e91d3375fd3a5ef6b345aa4e2f6001c890558f6. // -// Solidity: event TransitionContested(uint256 indexed blockId, bytes32 parentHash, bytes32 blockHash, bytes32 signalRoot, address contester, uint96 contestBond, uint16 tier) +// Solidity: event TransitionContested(uint256 indexed blockId, (bytes32,bytes32,bytes32,bytes32) tran, address contester, uint96 contestBond, uint16 tier) func (_TaikoL1 *TaikoL1Filterer) WatchTransitionContested0(opts *bind.WatchOpts, sink chan<- *TaikoL1TransitionContested0, blockId []*big.Int) (event.Subscription, error) { var blockIdRule []interface{} @@ -4316,9 +4481,9 @@ func (_TaikoL1 *TaikoL1Filterer) WatchTransitionContested0(opts *bind.WatchOpts, }), nil } -// ParseTransitionContested0 is a log parse operation binding the contract event 0x135961061f7c7cad9a389080483d14014ba6fe9ebcf6d3d826185c69dd71ce75. +// ParseTransitionContested0 is a log parse operation binding the contract event 0xb4c0a86c1ff239277697775b1e91d3375fd3a5ef6b345aa4e2f6001c890558f6. // -// Solidity: event TransitionContested(uint256 indexed blockId, bytes32 parentHash, bytes32 blockHash, bytes32 signalRoot, address contester, uint96 contestBond, uint16 tier) +// Solidity: event TransitionContested(uint256 indexed blockId, (bytes32,bytes32,bytes32,bytes32) tran, address contester, uint96 contestBond, uint16 tier) func (_TaikoL1 *TaikoL1Filterer) ParseTransitionContested0(log types.Log) (*TaikoL1TransitionContested0, error) { event := new(TaikoL1TransitionContested0) if err := _TaikoL1.contract.UnpackLog(event, "TransitionContested0", log); err != nil { @@ -4398,18 +4563,16 @@ func (it *TaikoL1TransitionProvedIterator) Close() error { // TaikoL1TransitionProved represents a TransitionProved event raised by the TaikoL1 contract. type TaikoL1TransitionProved struct { BlockId *big.Int - ParentHash [32]byte - BlockHash [32]byte - SignalRoot [32]byte + Tran TaikoDataTransition Prover common.Address ValidityBond *big.Int Tier uint16 Raw types.Log // Blockchain specific contextual infos } -// FilterTransitionProved is a free log retrieval operation binding the contract event 0x9eaac66787b7d7e72981c31449ddd9bde78ffdb8cb3e6543ba2b9a4bb653b5e3. +// FilterTransitionProved is a free log retrieval operation binding the contract event 0xc195e4be3b936845492b8be4b1cf604db687a4d79ad84d979499c136f8e6701f. // -// Solidity: event TransitionProved(uint256 indexed blockId, bytes32 parentHash, bytes32 blockHash, bytes32 signalRoot, address prover, uint96 validityBond, uint16 tier) +// Solidity: event TransitionProved(uint256 indexed blockId, (bytes32,bytes32,bytes32,bytes32) tran, address prover, uint96 validityBond, uint16 tier) func (_TaikoL1 *TaikoL1Filterer) FilterTransitionProved(opts *bind.FilterOpts, blockId []*big.Int) (*TaikoL1TransitionProvedIterator, error) { var blockIdRule []interface{} @@ -4424,9 +4587,9 @@ func (_TaikoL1 *TaikoL1Filterer) FilterTransitionProved(opts *bind.FilterOpts, b return &TaikoL1TransitionProvedIterator{contract: _TaikoL1.contract, event: "TransitionProved", logs: logs, sub: sub}, nil } -// WatchTransitionProved is a free log subscription operation binding the contract event 0x9eaac66787b7d7e72981c31449ddd9bde78ffdb8cb3e6543ba2b9a4bb653b5e3. +// WatchTransitionProved is a free log subscription operation binding the contract event 0xc195e4be3b936845492b8be4b1cf604db687a4d79ad84d979499c136f8e6701f. // -// Solidity: event TransitionProved(uint256 indexed blockId, bytes32 parentHash, bytes32 blockHash, bytes32 signalRoot, address prover, uint96 validityBond, uint16 tier) +// Solidity: event TransitionProved(uint256 indexed blockId, (bytes32,bytes32,bytes32,bytes32) tran, address prover, uint96 validityBond, uint16 tier) func (_TaikoL1 *TaikoL1Filterer) WatchTransitionProved(opts *bind.WatchOpts, sink chan<- *TaikoL1TransitionProved, blockId []*big.Int) (event.Subscription, error) { var blockIdRule []interface{} @@ -4466,9 +4629,9 @@ func (_TaikoL1 *TaikoL1Filterer) WatchTransitionProved(opts *bind.WatchOpts, sin }), nil } -// ParseTransitionProved is a log parse operation binding the contract event 0x9eaac66787b7d7e72981c31449ddd9bde78ffdb8cb3e6543ba2b9a4bb653b5e3. +// ParseTransitionProved is a log parse operation binding the contract event 0xc195e4be3b936845492b8be4b1cf604db687a4d79ad84d979499c136f8e6701f. // -// Solidity: event TransitionProved(uint256 indexed blockId, bytes32 parentHash, bytes32 blockHash, bytes32 signalRoot, address prover, uint96 validityBond, uint16 tier) +// Solidity: event TransitionProved(uint256 indexed blockId, (bytes32,bytes32,bytes32,bytes32) tran, address prover, uint96 validityBond, uint16 tier) func (_TaikoL1 *TaikoL1Filterer) ParseTransitionProved(log types.Log) (*TaikoL1TransitionProved, error) { event := new(TaikoL1TransitionProved) if err := _TaikoL1.contract.UnpackLog(event, "TransitionProved", log); err != nil { @@ -4548,18 +4711,16 @@ func (it *TaikoL1TransitionProved0Iterator) Close() error { // TaikoL1TransitionProved0 represents a TransitionProved0 event raised by the TaikoL1 contract. type TaikoL1TransitionProved0 struct { BlockId *big.Int - ParentHash [32]byte - BlockHash [32]byte - SignalRoot [32]byte + Tran TaikoDataTransition Prover common.Address ValidityBond *big.Int Tier uint16 Raw types.Log // Blockchain specific contextual infos } -// FilterTransitionProved0 is a free log retrieval operation binding the contract event 0x9eaac66787b7d7e72981c31449ddd9bde78ffdb8cb3e6543ba2b9a4bb653b5e3. +// FilterTransitionProved0 is a free log retrieval operation binding the contract event 0xc195e4be3b936845492b8be4b1cf604db687a4d79ad84d979499c136f8e6701f. // -// Solidity: event TransitionProved(uint256 indexed blockId, bytes32 parentHash, bytes32 blockHash, bytes32 signalRoot, address prover, uint96 validityBond, uint16 tier) +// Solidity: event TransitionProved(uint256 indexed blockId, (bytes32,bytes32,bytes32,bytes32) tran, address prover, uint96 validityBond, uint16 tier) func (_TaikoL1 *TaikoL1Filterer) FilterTransitionProved0(opts *bind.FilterOpts, blockId []*big.Int) (*TaikoL1TransitionProved0Iterator, error) { var blockIdRule []interface{} @@ -4574,9 +4735,9 @@ func (_TaikoL1 *TaikoL1Filterer) FilterTransitionProved0(opts *bind.FilterOpts, return &TaikoL1TransitionProved0Iterator{contract: _TaikoL1.contract, event: "TransitionProved0", logs: logs, sub: sub}, nil } -// WatchTransitionProved0 is a free log subscription operation binding the contract event 0x9eaac66787b7d7e72981c31449ddd9bde78ffdb8cb3e6543ba2b9a4bb653b5e3. +// WatchTransitionProved0 is a free log subscription operation binding the contract event 0xc195e4be3b936845492b8be4b1cf604db687a4d79ad84d979499c136f8e6701f. // -// Solidity: event TransitionProved(uint256 indexed blockId, bytes32 parentHash, bytes32 blockHash, bytes32 signalRoot, address prover, uint96 validityBond, uint16 tier) +// Solidity: event TransitionProved(uint256 indexed blockId, (bytes32,bytes32,bytes32,bytes32) tran, address prover, uint96 validityBond, uint16 tier) func (_TaikoL1 *TaikoL1Filterer) WatchTransitionProved0(opts *bind.WatchOpts, sink chan<- *TaikoL1TransitionProved0, blockId []*big.Int) (event.Subscription, error) { var blockIdRule []interface{} @@ -4616,9 +4777,9 @@ func (_TaikoL1 *TaikoL1Filterer) WatchTransitionProved0(opts *bind.WatchOpts, si }), nil } -// ParseTransitionProved0 is a log parse operation binding the contract event 0x9eaac66787b7d7e72981c31449ddd9bde78ffdb8cb3e6543ba2b9a4bb653b5e3. +// ParseTransitionProved0 is a log parse operation binding the contract event 0xc195e4be3b936845492b8be4b1cf604db687a4d79ad84d979499c136f8e6701f. // -// Solidity: event TransitionProved(uint256 indexed blockId, bytes32 parentHash, bytes32 blockHash, bytes32 signalRoot, address prover, uint96 validityBond, uint16 tier) +// Solidity: event TransitionProved(uint256 indexed blockId, (bytes32,bytes32,bytes32,bytes32) tran, address prover, uint96 validityBond, uint16 tier) func (_TaikoL1 *TaikoL1Filterer) ParseTransitionProved0(log types.Log) (*TaikoL1TransitionProved0, error) { event := new(TaikoL1TransitionProved0) if err := _TaikoL1.contract.UnpackLog(event, "TransitionProved0", log); err != nil { @@ -4627,3 +4788,137 @@ func (_TaikoL1 *TaikoL1Filterer) ParseTransitionProved0(log types.Log) (*TaikoL1 event.Raw = log return event, nil } + +// TaikoL1UnpausedIterator is returned from FilterUnpaused and is used to iterate over the raw logs and unpacked data for Unpaused events raised by the TaikoL1 contract. +type TaikoL1UnpausedIterator struct { + Event *TaikoL1Unpaused // Event containing the contract specifics and raw log + + contract *bind.BoundContract // Generic contract to use for unpacking event data + event string // Event name to use for unpacking event data + + logs chan types.Log // Log channel receiving the found contract events + sub ethereum.Subscription // Subscription for errors, completion and termination + done bool // Whether the subscription completed delivering logs + fail error // Occurred error to stop iteration +} + +// Next advances the iterator to the subsequent event, returning whether there +// are any more events found. In case of a retrieval or parsing error, false is +// returned and Error() can be queried for the exact failure. +func (it *TaikoL1UnpausedIterator) Next() bool { + // If the iterator failed, stop iterating + if it.fail != nil { + return false + } + // If the iterator completed, deliver directly whatever's available + if it.done { + select { + case log := <-it.logs: + it.Event = new(TaikoL1Unpaused) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + default: + return false + } + } + // Iterator still in progress, wait for either a data or an error event + select { + case log := <-it.logs: + it.Event = new(TaikoL1Unpaused) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + case err := <-it.sub.Err(): + it.done = true + it.fail = err + return it.Next() + } +} + +// Error returns any retrieval or parsing error occurred during filtering. +func (it *TaikoL1UnpausedIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *TaikoL1UnpausedIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// TaikoL1Unpaused represents a Unpaused event raised by the TaikoL1 contract. +type TaikoL1Unpaused struct { + Account common.Address + Raw types.Log // Blockchain specific contextual infos +} + +// FilterUnpaused is a free log retrieval operation binding the contract event 0x5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa. +// +// Solidity: event Unpaused(address account) +func (_TaikoL1 *TaikoL1Filterer) FilterUnpaused(opts *bind.FilterOpts) (*TaikoL1UnpausedIterator, error) { + + logs, sub, err := _TaikoL1.contract.FilterLogs(opts, "Unpaused") + if err != nil { + return nil, err + } + return &TaikoL1UnpausedIterator{contract: _TaikoL1.contract, event: "Unpaused", logs: logs, sub: sub}, nil +} + +// WatchUnpaused is a free log subscription operation binding the contract event 0x5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa. +// +// Solidity: event Unpaused(address account) +func (_TaikoL1 *TaikoL1Filterer) WatchUnpaused(opts *bind.WatchOpts, sink chan<- *TaikoL1Unpaused) (event.Subscription, error) { + + logs, sub, err := _TaikoL1.contract.WatchLogs(opts, "Unpaused") + if err != nil { + return nil, err + } + return event.NewSubscription(func(quit <-chan struct{}) error { + defer sub.Unsubscribe() + for { + select { + case log := <-logs: + // New log arrived, parse the event and forward to the user + event := new(TaikoL1Unpaused) + if err := _TaikoL1.contract.UnpackLog(event, "Unpaused", log); err != nil { + return err + } + event.Raw = log + + select { + case sink <- event: + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + } + }), nil +} + +// ParseUnpaused is a log parse operation binding the contract event 0x5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa. +// +// Solidity: event Unpaused(address account) +func (_TaikoL1 *TaikoL1Filterer) ParseUnpaused(log types.Log) (*TaikoL1Unpaused, error) { + event := new(TaikoL1Unpaused) + if err := _TaikoL1.contract.UnpackLog(event, "Unpaused", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} diff --git a/packages/eventindexer/generator/generator.go b/packages/eventindexer/generator/generator.go index 6d93016d7d..df4f08ba4b 100644 --- a/packages/eventindexer/generator/generator.go +++ b/packages/eventindexer/generator/generator.go @@ -77,7 +77,7 @@ func (g *Generator) Close(ctx context.Context) { } if err := sqlDB.Close(); err != nil { - slog.Error("error closing sqlbd connecting", "err", err.Error()) + slog.Error("error closing sqlbd connection", "err", err.Error()) } } @@ -201,27 +201,6 @@ func (g *Generator) queryByTask(task string, date time.Time) (decimal.Decimal, e var err error switch task { - case tasks.ProposerRewardsPerDay: - query := "SELECT COALESCE(SUM(proposer_reward), 0) FROM events WHERE event = ? AND DATE(transacted_at) = ?" - err = g.db.GormDB(). - Raw(query, eventindexer.EventNameBlockProposed, dateString). - Scan(&result).Error - - case tasks.TotalProposerRewards: - var dailyProposerRewards decimal.NullDecimal - - query := "SELECT COALESCE(SUM(proposer_reward), 0) FROM events WHERE event = ? AND DATE(transacted_at) = ?" - err = g.db.GormDB(). - Raw(query, eventindexer.EventNameBlockProposed, dateString). - Scan(&dailyProposerRewards).Error - - tsdResult, err := g.previousDayTsdResultByTask(task, date) - if err != nil { - return result, err - } - - result = tsdResult.Decimal.Add(dailyProposerRewards.Decimal) - case tasks.TotalProofRewards: var dailyProofRewards decimal.NullDecimal diff --git a/packages/eventindexer/indexer/save_block_proposed_event.go b/packages/eventindexer/indexer/save_block_proposed_event.go index 231e4283a3..75b75ea179 100644 --- a/packages/eventindexer/indexer/save_block_proposed_event.go +++ b/packages/eventindexer/indexer/save_block_proposed_event.go @@ -75,11 +75,6 @@ func (indxr *Indexer) saveBlockProposedEvent( return errors.Wrap(err, "indxr.ethClient.BlockByNumber") } - proposerReward, err := indxr.updateAverageProposerReward(ctx, event) - if err != nil { - return errors.Wrap(err, "indxr.updateAverageProposerReward") - } - proverReward, err := indxr.updateAverageProverReward(ctx, event) if err != nil { return errors.Wrap(err, "indxr.updateAverageProposerReward") @@ -94,8 +89,7 @@ func (indxr *Indexer) saveBlockProposedEvent( BlockID: &blockID, AssignedProver: &assignedProver, TransactedAt: time.Unix(int64(block.Time()), 0).UTC(), - Amount: event.Reward, - ProposerReward: proposerReward, + Amount: event.ProverFee, ProofReward: proverReward, }) if err != nil { @@ -107,49 +101,6 @@ func (indxr *Indexer) saveBlockProposedEvent( return nil } -func (indxr *Indexer) updateAverageProposerReward( - ctx context.Context, - event *taikol1.TaikoL1BlockProposed, -) (*big.Int, error) { - stat, err := indxr.statRepo.Find(ctx) - if err != nil { - return nil, errors.Wrap(err, "indxr.statRepo.Find") - } - - reward := event.Reward - - avg, ok := new(big.Int).SetString(stat.AverageProposerReward, 10) - if !ok { - return nil, errors.New("unable to convert average proposer to string") - } - - newAverageProposerReward := calcNewAverage( - avg, - new(big.Int).SetUint64(stat.NumProposerRewards), - reward, - ) - - slog.Info("newAverageProposerReward update", - "id", - event.BlockId.Int64(), - "prover", - event.AssignedProver.Hex(), - "avg", - avg.String(), - "newAvg", - newAverageProposerReward.String(), - ) - - _, err = indxr.statRepo.Save(ctx, eventindexer.SaveStatOpts{ - ProposerReward: newAverageProposerReward, - }) - if err != nil { - return nil, errors.Wrap(err, "indxr.statRepo.Save") - } - - return reward, err -} - func (indxr *Indexer) updateAverageProverReward( ctx context.Context, event *taikol1.TaikoL1BlockProposed, @@ -159,13 +110,6 @@ func (indxr *Indexer) updateAverageProverReward( return nil, errors.Wrap(err, "indxr.statRepo.Find") } - tx, _, err := indxr.ethClient.TransactionByHash(ctx, event.Raw.TxHash) - if err != nil { - return nil, errors.Wrap(err, "indxr.ethClient.TransactionByHash") - } - - reward := tx.Value() - avg, ok := new(big.Int).SetString(stat.AverageProofReward, 10) if !ok { return nil, errors.New("unable to convert average proof time to string") @@ -174,7 +118,7 @@ func (indxr *Indexer) updateAverageProverReward( newAverageProofReward := calcNewAverage( avg, new(big.Int).SetUint64(stat.NumProofs), - reward, + event.ProverFee, ) slog.Info("newAverageProofReward update", @@ -195,5 +139,5 @@ func (indxr *Indexer) updateAverageProverReward( return nil, errors.Wrap(err, "indxr.statRepo.Save") } - return reward, nil + return event.ProverFee, nil } diff --git a/packages/eventindexer/indexer/set_initial_processing_block_height.go b/packages/eventindexer/indexer/set_initial_processing_block_height.go index 2f2f9d1612..978b6f0cde 100644 --- a/packages/eventindexer/indexer/set_initial_processing_block_height.go +++ b/packages/eventindexer/indexer/set_initial_processing_block_height.go @@ -22,7 +22,7 @@ func (indxr *Indexer) setInitialProcessingBlockByMode( return errors.Wrap(err, "indxr.taikoL1.GetStateVariables") } - startingBlock = stateVars.GenesisHeight + startingBlock = stateVars.A.GenesisHeight } switch mode { diff --git a/packages/eventindexer/tasks/tasks.go b/packages/eventindexer/tasks/tasks.go index 54140776fe..623b2ac047 100644 --- a/packages/eventindexer/tasks/tasks.go +++ b/packages/eventindexer/tasks/tasks.go @@ -23,8 +23,6 @@ var ( TotalBridgeMessagesSent = "total-bridge-messages-sent" TotalProofRewards = "total-proof-rewards" ProofRewardsPerDay = "proof-rewards-per-day" - TotalProposerRewards = "total-proposer-rewards" - ProposerRewardsPerDay = "proposer-rewards-per-day" ) var Tasks = []string{ @@ -50,6 +48,4 @@ var Tasks = []string{ TotalBridgeMessagesSent, TotalProofRewards, ProofRewardsPerDay, - TotalProposerRewards, - ProposerRewardsPerDay, } diff --git a/packages/fork-diff/index.html b/packages/fork-diff/index.html index 4bf32a4977..a0864d2b80 100755 --- a/packages/fork-diff/index.html +++ b/packages/fork-diff/index.html @@ -5623,7 +5623,7 @@ + "balance": "0xffffffffffffff21f494c589bfffffff" + }, + "0x0000777700000000000000000000000000000007": { -+ "contractName": "ProxiedSignalService", ++ "contractName": "ProxiedSingletonSignalService", + "storage": {}, + "code": "0x608060405234801561001057600080fd5b50600436106100b45760003560e01c80636c6563f6116100715780636c6563f614610162578063715018a6146101755780638da5cb5b1461017d578063a86f9d9e1461018e578063f2fde38b146101a1578063f8f3f844146101b457600080fd5b80630652b57a146100b957806319ab453c146100ce57806332676bc6146100e15780633ab76e9f146101095780635221f6131461012e57806366ca2bc014610141575b600080fd5b6100cc6100c7366004611a18565b6101e0565b005b6100cc6100dc366004611a18565b610263565b6100f46100ef366004611a35565b61037b565b60405190151581526020015b60405180910390f35b6097546001600160a01b03165b6040516001600160a01b039091168152602001610100565b6100f461013c366004611a61565b6103ed565b61015461014f366004611af7565b61055d565b604051908152602001610100565b610116610170366004611b25565b6105a2565b6100cc6105b9565b6065546001600160a01b0316610116565b61011661019c366004611b5a565b6105cd565b6100cc6101af366004611a18565b6105da565b6101546101c2366004611a35565b6040805192835260208301919091526034600c830120918101905290565b6101e8610653565b6001600160a01b03811661020f57604051634d084d8560e11b815260040160405180910390fd5b609780546001600160a01b0319166001600160a01b0383169081179091556040519081527f399ded90cb5ed8d89ef7e76ff4af65c373f06d3bf5d7eef55f4228e7b702a18b9060200160405180910390a150565b600054610100900460ff16158080156102835750600054600160ff909116105b8061029d5750303b15801561029d575060005460ff166001145b6103055760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b60648201526084015b60405180910390fd5b6000805460ff191660011790558015610328576000805461ff0019166101001790555b610331826106ad565b8015610377576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b5050565b60006001600160a01b0383166103a4576040516354cdfc8d60e11b815260040160405180910390fd5b60008290036103c65760405163014f1da760e21b815260040160405180910390fd5b5060408051838152602081018390526034600c820120908201909152546001145b92915050565b600046860361040f5760405163e822b48d60e01b815260040160405180910390fd5b6001600160a01b038516610436576040516354cdfc8d60e11b815260040160405180910390fd5b60008490036104585760405163014f1da760e21b815260040160405180910390fd5b600061046683850185611bf6565b9050600061047d647461696b6f60d81b60006105cd565b8251604051632e24533960e21b81526001600160a01b03929092169163b8914ce4916104af9160040190815260200190565b602060405180830381865afa1580156104cc573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906104f09190611cbd565b60408051898152602081018990526034600c820120818301909252606081019190915290915061055190608001604051602081830303815290604052604051806040016040528060018152602001600160f81b8152508460200151846106c6565b98975050505050505050565b600081810361057f5760405163014f1da760e21b815260040160405180910390fd5b506040805133815260208101929092526034600c83012091810190526001815590565b60006105af8484846106ea565b90505b9392505050565b6105c1610653565b6105cb600061079e565b565b60006105b24684846106ea565b6105e2610653565b6001600160a01b0381166106475760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b60648201526084016102fc565b6106508161079e565b50565b6065546001600160a01b031633146105cb5760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064016102fc565b6106b56107f0565b6106bd61081f565b6106508161084e565b6000806106d286610897565b90506106e0818686866108c9565b9695505050505050565b60975460405163195ac1a960e21b815260048101859052602481018490526000916001600160a01b03169063656b06a490604401602060405180830381865afa15801561073b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061075f9190611cd6565b90508115801561077657506001600160a01b038116155b156105b257604051631467050360e21b815260048101859052602481018490526044016102fc565b606580546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b600054610100900460ff166108175760405162461bcd60e51b81526004016102fc90611cf3565b6105cb610906565b600054610100900460ff166108465760405162461bcd60e51b81526004016102fc90611cf3565b6105cb610933565b6001600160a01b03811661087557604051634d084d8560e11b815260040160405180910390fd5b609780546001600160a01b0319166001600160a01b0392909216919091179055565b606081805190602001206040516020016108b391815260200190565b6040516020818303038152906040529050919050565b60008060006108d9878686610963565b915091508180156108fb57508051602080830191909120875191880191909120145b979650505050505050565b600054610100900460ff1661092d5760405162461bcd60e51b81526004016102fc90611cf3565b60018055565b600054610100900460ff1661095a5760405162461bcd60e51b81526004016102fc90611cf3565b6105cb3361079e565b60006060600061097285610a3e565b90506000806000610984848a89610b37565b815192955090935091501580806109985750815b6109e45760405162461bcd60e51b815260206004820152601a60248201527f50726f76696465642070726f6f6620697320696e76616c69642e00000000000060448201526064016102fc565b600081610a005760405180602001604052806000815250610a2c565b610a2c86610a0f600188611d54565b81518110610a1f57610a1f611d67565b6020026020010151610f57565b919b919a509098505050505050505050565b60606000610a4b83610f7e565b90506000815167ffffffffffffffff811115610a6957610a69611b86565b604051908082528060200260200182016040528015610aae57816020015b6040805180820190915260608082526020820152815260200190600190039081610a875790505b50905060005b8251811015610b2f576000610ae1848381518110610ad457610ad4611d67565b6020026020010151610fb1565b90506040518060400160405280610af783610f7e565b815260200182815250838381518110610b1257610b12611d67565b60200260200101819052505080610b2890611d7d565b9050610ab4565b509392505050565b600060606000806000610b4987611041565b90506000869050600080610b70604051806040016040528060608152602001606081525090565b60005b8c51811015610f2f578c8181518110610b8e57610b8e611d67565b602002602001015191508284610ba49190611d96565b9350610bb1600188611d96565b965083600003610c0e578482602001518051906020012014610c095760405162461bcd60e51b8152602060048201526011602482015270092dcecc2d8d2c840e4dedee840d0c2e6d607b1b60448201526064016102fc565b610cd0565b602082602001515110610c75578482602001518051906020012014610c095760405162461bcd60e51b815260206004820152601b60248201527f496e76616c6964206c6172676520696e7465726e616c2068617368000000000060448201526064016102fc565b84610c83836020015161117a565b14610cd05760405162461bcd60e51b815260206004820152601a60248201527f496e76616c696420696e7465726e616c206e6f6465206861736800000000000060448201526064016102fc565b610cdc60106001611da9565b60ff1682600001515103610d4a5785518414610f2f576000868581518110610d0657610d06611d67565b01602001518351805160f89290921c925060009183908110610d2a57610d2a611d67565b60200260200101519050610d3d816111a2565b9650600194505050610f1f565b81515160011901610ed7576000610d60836111d8565b9050600081600081518110610d7757610d77611d67565b016020015160f81c90506000610d8e600283611dc2565b610d99906002611df2565b90506000610daa848360ff166111fc565b90506000610db88b8a6111fc565b90506000610dc68383611232565b905060ff851660021480610ddd575060ff85166003145b15610e1757808351148015610df25750808251145b15610e0457610e01818b611d96565b99505b50600160ff1b9950610f2f945050505050565b60ff85161580610e2a575060ff85166001145b15610e805782518114610e4a5750600160ff1b9950610f2f945050505050565b610e718860000151600181518110610e6457610e64611d67565b60200260200101516111a2565b9a509750610f1f945050505050565b60405162461bcd60e51b815260206004820152602660248201527f52656365697665642061206e6f6465207769746820616e20756e6b6e6f776e206044820152650e0e4caccd2f60d31b60648201526084016102fc565b60405162461bcd60e51b815260206004820152601d60248201527f526563656976656420616e20756e706172736561626c65206e6f64652e00000060448201526064016102fc565b610f2881611d7d565b9050610b73565b50600160ff1b841486610f4287866111fc565b909e909d50909b509950505050505050505050565b805180516060916103e791610f6e90600190611d54565b81518110610ad457610ad4611d67565b6040805180820182526000808252602091820152815180830190925282518252808301908201526060906103e7906112ac565b60606000806000610fc185611498565b919450925090506000816001811115610fdc57610fdc611e0b565b146110295760405162461bcd60e51b815260206004820152601860248201527f496e76616c696420524c502062797465732076616c75652e000000000000000060448201526064016102fc565b611038856020015184846117e2565b95945050505050565b60606000825160026110539190611e21565b67ffffffffffffffff81111561106b5761106b611b86565b6040519080825280601f01601f191660200182016040528015611095576020820181803683370190505b50905060005b83518110156111735760048482815181106110b8576110b8611d67565b01602001516001600160f81b031916901c826110d5836002611e21565b815181106110e5576110e5611d67565b60200101906001600160f81b031916908160001a905350601084828151811061111057611110611d67565b0160200151611122919060f81c611dc2565b60f81b82611131836002611e21565b61113c906001611d96565b8151811061114c5761114c611d67565b60200101906001600160f81b031916908160001a90535061116c81611d7d565b905061109b565b5092915050565b600060208251101561118e57506020015190565b818060200190518101906103e79190611cbd565b600060606020836000015110156111c3576111bc8361188b565b90506111cf565b6111cc83610fb1565b90505b6105b28161117a565b60606103e76111f78360000151600081518110610ad457610ad4611d67565b611041565b60608251821061121b57506040805160208101909152600081526103e7565b6105b2838384865161122d9190611d54565b611896565b6000805b8084511180156112465750808351115b8015611297575082818151811061125f5761125f611d67565b602001015160f81c60f81b6001600160f81b03191684828151811061128657611286611d67565b01602001516001600160f81b031916145b156105b2576112a581611d7d565b9050611236565b60606000806112ba84611498565b919350909150600190508160018111156112d6576112d6611e0b565b146113235760405162461bcd60e51b815260206004820152601760248201527f496e76616c696420524c50206c6973742076616c75652e00000000000000000060448201526064016102fc565b6040805160208082526104208201909252600091816020015b604080518082019091526000808252602082015281526020019060019003908161133c5790505090506000835b865181101561148d57602082106113d55760405162461bcd60e51b815260206004820152602a60248201527f50726f766964656420524c50206c6973742065786365656473206d6178206c6960448201526939ba103632b733ba341760b11b60648201526084016102fc565b6000806114126040518060400160405280858c600001516113f69190611d54565b8152602001858c6020015161140b9190611d96565b9052611498565b50915091506040518060400160405280838361142e9190611d96565b8152602001848b602001516114439190611d96565b81525085858151811061145857611458611d67565b602090810291909101015261146e600185611d96565b935061147a8183611d96565b6114849084611d96565b92505050611369565b508152949350505050565b6000806000808460000151116114f05760405162461bcd60e51b815260206004820152601860248201527f524c50206974656d2063616e6e6f74206265206e756c6c2e000000000000000060448201526064016102fc565b6020840151805160001a607f81116115155760006001600094509450945050506117db565b60b7811161159157600061152a608083611d54565b90508087600001511161157f5760405162461bcd60e51b815260206004820152601960248201527f496e76616c696420524c502073686f727420737472696e672e0000000000000060448201526064016102fc565b600195509350600092506117db915050565b60bf81116116805760006115a660b783611d54565b9050808760000151116115fb5760405162461bcd60e51b815260206004820152601f60248201527f496e76616c696420524c50206c6f6e6720737472696e67206c656e6774682e0060448201526064016102fc565b600183015160208290036101000a90046116158183611d96565b8851116116645760405162461bcd60e51b815260206004820152601860248201527f496e76616c696420524c50206c6f6e6720737472696e672e000000000000000060448201526064016102fc565b61166f826001611d96565b96509450600093506117db92505050565b60f781116116fb57600061169560c083611d54565b9050808760000151116116ea5760405162461bcd60e51b815260206004820152601760248201527f496e76616c696420524c502073686f7274206c6973742e00000000000000000060448201526064016102fc565b6001955093508492506117db915050565b600061170860f783611d54565b90508087600001511161175d5760405162461bcd60e51b815260206004820152601d60248201527f496e76616c696420524c50206c6f6e67206c697374206c656e6774682e00000060448201526064016102fc565b600183015160208290036101000a90046117778183611d96565b8851116117bf5760405162461bcd60e51b815260206004820152601660248201527524b73b30b634b210292628103637b733903634b9ba1760511b60448201526064016102fc565b6117ca826001611d96565b96509450600193506117db92505050565b9193909250565b606060008267ffffffffffffffff8111156117ff576117ff611b86565b6040519080825280601f01601f191660200182016040528015611829576020820181803683370190505b509050805160000361183c5790506105b2565b8484016020820160005b8581101561185e578281015182820152602001611846565b5060006001602087066020036101000a039050808251168119845116178252839450505050509392505050565b60606103e7826119ed565b6060816118a481601f611d96565b10156118e35760405162461bcd60e51b815260206004820152600e60248201526d736c6963655f6f766572666c6f7760901b60448201526064016102fc565b826118ee8382611d96565b101561192d5760405162461bcd60e51b815260206004820152600e60248201526d736c6963655f6f766572666c6f7760901b60448201526064016102fc565b6119378284611d96565b8451101561197b5760405162461bcd60e51b8152602060048201526011602482015270736c6963655f6f75744f66426f756e647360781b60448201526064016102fc565b60608215801561199a57604051915060008252602082016040526119e4565b6040519150601f8416801560200281840101858101878315602002848b0101015b818310156119d35780518352602092830192016119bb565b5050858452601f01601f1916604052505b50949350505050565b60606103e78260200151600084600001516117e2565b6001600160a01b038116811461065057600080fd5b600060208284031215611a2a57600080fd5b81356105b281611a03565b60008060408385031215611a4857600080fd5b8235611a5381611a03565b946020939093013593505050565b600080600080600060808688031215611a7957600080fd5b853594506020860135611a8b81611a03565b935060408601359250606086013567ffffffffffffffff80821115611aaf57600080fd5b818801915088601f830112611ac357600080fd5b813581811115611ad257600080fd5b896020828501011115611ae457600080fd5b9699959850939650602001949392505050565b600060208284031215611b0957600080fd5b5035919050565b80358015158114611b2057600080fd5b919050565b600080600060608486031215611b3a57600080fd5b8335925060208401359150611b5160408501611b10565b90509250925092565b60008060408385031215611b6d57600080fd5b82359150611b7d60208401611b10565b90509250929050565b634e487b7160e01b600052604160045260246000fd5b6040805190810167ffffffffffffffff81118282101715611bbf57611bbf611b86565b60405290565b604051601f8201601f1916810167ffffffffffffffff81118282101715611bee57611bee611b86565b604052919050565b60006020808385031215611c0957600080fd5b823567ffffffffffffffff80821115611c2157600080fd5b9084019060408287031215611c3557600080fd5b611c3d611b9c565b823581528383013582811115611c5257600080fd5b80840193505086601f840112611c6757600080fd5b823582811115611c7957611c79611b86565b611c8b601f8201601f19168601611bc5565b92508083528785828601011115611ca157600080fd5b8085850186850137600090830185015292830152509392505050565b600060208284031215611ccf57600080fd5b5051919050565b600060208284031215611ce857600080fd5b81516105b281611a03565b6020808252602b908201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960408201526a6e697469616c697a696e6760a81b606082015260800190565b634e487b7160e01b600052601160045260246000fd5b818103818111156103e7576103e7611d3e565b634e487b7160e01b600052603260045260246000fd5b600060018201611d8f57611d8f611d3e565b5060010190565b808201808211156103e7576103e7611d3e565b60ff81811683821601908111156103e7576103e7611d3e565b600060ff831680611de357634e487b7160e01b600052601260045260246000fd5b8060ff84160691505092915050565b60ff82811682821603908111156103e7576103e7611d3e565b634e487b7160e01b600052602160045260246000fd5b80820281158282048414176103e7576103e7611d3e56fea2646970667358221220727b3b71bb6428f2b0ff827ceeabefd08ed4c1ffd6ad882c5d137fbe8f96be8064736f6c63430008140033", + "balance": "0x0" @@ -5829,7 +5829,7 @@ + "balance": "0xffffffffffffff21f494c589bfffffff" + }, + "0x0000777700000000000000000000000000000007": { -+ "contractName": "ProxiedSignalService", ++ "contractName": "ProxiedSingletonSignalService", + "storage": {}, + "code": "0x608060405234801561001057600080fd5b50600436106100b45760003560e01c80636c6563f6116100715780636c6563f614610162578063715018a6146101755780638da5cb5b1461017d578063a86f9d9e1461018e578063f2fde38b146101a1578063f8f3f844146101b457600080fd5b80630652b57a146100b957806319ab453c146100ce57806332676bc6146100e15780633ab76e9f146101095780635221f6131461012e57806366ca2bc014610141575b600080fd5b6100cc6100c7366004611a18565b6101e0565b005b6100cc6100dc366004611a18565b610263565b6100f46100ef366004611a35565b61037b565b60405190151581526020015b60405180910390f35b6097546001600160a01b03165b6040516001600160a01b039091168152602001610100565b6100f461013c366004611a61565b6103ed565b61015461014f366004611af7565b61055d565b604051908152602001610100565b610116610170366004611b25565b6105a2565b6100cc6105b9565b6065546001600160a01b0316610116565b61011661019c366004611b5a565b6105cd565b6100cc6101af366004611a18565b6105da565b6101546101c2366004611a35565b6040805192835260208301919091526034600c830120918101905290565b6101e8610653565b6001600160a01b03811661020f57604051634d084d8560e11b815260040160405180910390fd5b609780546001600160a01b0319166001600160a01b0383169081179091556040519081527f399ded90cb5ed8d89ef7e76ff4af65c373f06d3bf5d7eef55f4228e7b702a18b9060200160405180910390a150565b600054610100900460ff16158080156102835750600054600160ff909116105b8061029d5750303b15801561029d575060005460ff166001145b6103055760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b60648201526084015b60405180910390fd5b6000805460ff191660011790558015610328576000805461ff0019166101001790555b610331826106ad565b8015610377576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b5050565b60006001600160a01b0383166103a4576040516354cdfc8d60e11b815260040160405180910390fd5b60008290036103c65760405163014f1da760e21b815260040160405180910390fd5b5060408051838152602081018390526034600c820120908201909152546001145b92915050565b600046860361040f5760405163e822b48d60e01b815260040160405180910390fd5b6001600160a01b038516610436576040516354cdfc8d60e11b815260040160405180910390fd5b60008490036104585760405163014f1da760e21b815260040160405180910390fd5b600061046683850185611bf6565b9050600061047d647461696b6f60d81b60006105cd565b8251604051632e24533960e21b81526001600160a01b03929092169163b8914ce4916104af9160040190815260200190565b602060405180830381865afa1580156104cc573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906104f09190611cbd565b60408051898152602081018990526034600c820120818301909252606081019190915290915061055190608001604051602081830303815290604052604051806040016040528060018152602001600160f81b8152508460200151846106c6565b98975050505050505050565b600081810361057f5760405163014f1da760e21b815260040160405180910390fd5b506040805133815260208101929092526034600c83012091810190526001815590565b60006105af8484846106ea565b90505b9392505050565b6105c1610653565b6105cb600061079e565b565b60006105b24684846106ea565b6105e2610653565b6001600160a01b0381166106475760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b60648201526084016102fc565b6106508161079e565b50565b6065546001600160a01b031633146105cb5760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064016102fc565b6106b56107f0565b6106bd61081f565b6106508161084e565b6000806106d286610897565b90506106e0818686866108c9565b9695505050505050565b60975460405163195ac1a960e21b815260048101859052602481018490526000916001600160a01b03169063656b06a490604401602060405180830381865afa15801561073b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061075f9190611cd6565b90508115801561077657506001600160a01b038116155b156105b257604051631467050360e21b815260048101859052602481018490526044016102fc565b606580546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b600054610100900460ff166108175760405162461bcd60e51b81526004016102fc90611cf3565b6105cb610906565b600054610100900460ff166108465760405162461bcd60e51b81526004016102fc90611cf3565b6105cb610933565b6001600160a01b03811661087557604051634d084d8560e11b815260040160405180910390fd5b609780546001600160a01b0319166001600160a01b0392909216919091179055565b606081805190602001206040516020016108b391815260200190565b6040516020818303038152906040529050919050565b60008060006108d9878686610963565b915091508180156108fb57508051602080830191909120875191880191909120145b979650505050505050565b600054610100900460ff1661092d5760405162461bcd60e51b81526004016102fc90611cf3565b60018055565b600054610100900460ff1661095a5760405162461bcd60e51b81526004016102fc90611cf3565b6105cb3361079e565b60006060600061097285610a3e565b90506000806000610984848a89610b37565b815192955090935091501580806109985750815b6109e45760405162461bcd60e51b815260206004820152601a60248201527f50726f76696465642070726f6f6620697320696e76616c69642e00000000000060448201526064016102fc565b600081610a005760405180602001604052806000815250610a2c565b610a2c86610a0f600188611d54565b81518110610a1f57610a1f611d67565b6020026020010151610f57565b919b919a509098505050505050505050565b60606000610a4b83610f7e565b90506000815167ffffffffffffffff811115610a6957610a69611b86565b604051908082528060200260200182016040528015610aae57816020015b6040805180820190915260608082526020820152815260200190600190039081610a875790505b50905060005b8251811015610b2f576000610ae1848381518110610ad457610ad4611d67565b6020026020010151610fb1565b90506040518060400160405280610af783610f7e565b815260200182815250838381518110610b1257610b12611d67565b60200260200101819052505080610b2890611d7d565b9050610ab4565b509392505050565b600060606000806000610b4987611041565b90506000869050600080610b70604051806040016040528060608152602001606081525090565b60005b8c51811015610f2f578c8181518110610b8e57610b8e611d67565b602002602001015191508284610ba49190611d96565b9350610bb1600188611d96565b965083600003610c0e578482602001518051906020012014610c095760405162461bcd60e51b8152602060048201526011602482015270092dcecc2d8d2c840e4dedee840d0c2e6d607b1b60448201526064016102fc565b610cd0565b602082602001515110610c75578482602001518051906020012014610c095760405162461bcd60e51b815260206004820152601b60248201527f496e76616c6964206c6172676520696e7465726e616c2068617368000000000060448201526064016102fc565b84610c83836020015161117a565b14610cd05760405162461bcd60e51b815260206004820152601a60248201527f496e76616c696420696e7465726e616c206e6f6465206861736800000000000060448201526064016102fc565b610cdc60106001611da9565b60ff1682600001515103610d4a5785518414610f2f576000868581518110610d0657610d06611d67565b01602001518351805160f89290921c925060009183908110610d2a57610d2a611d67565b60200260200101519050610d3d816111a2565b9650600194505050610f1f565b81515160011901610ed7576000610d60836111d8565b9050600081600081518110610d7757610d77611d67565b016020015160f81c90506000610d8e600283611dc2565b610d99906002611df2565b90506000610daa848360ff166111fc565b90506000610db88b8a6111fc565b90506000610dc68383611232565b905060ff851660021480610ddd575060ff85166003145b15610e1757808351148015610df25750808251145b15610e0457610e01818b611d96565b99505b50600160ff1b9950610f2f945050505050565b60ff85161580610e2a575060ff85166001145b15610e805782518114610e4a5750600160ff1b9950610f2f945050505050565b610e718860000151600181518110610e6457610e64611d67565b60200260200101516111a2565b9a509750610f1f945050505050565b60405162461bcd60e51b815260206004820152602660248201527f52656365697665642061206e6f6465207769746820616e20756e6b6e6f776e206044820152650e0e4caccd2f60d31b60648201526084016102fc565b60405162461bcd60e51b815260206004820152601d60248201527f526563656976656420616e20756e706172736561626c65206e6f64652e00000060448201526064016102fc565b610f2881611d7d565b9050610b73565b50600160ff1b841486610f4287866111fc565b909e909d50909b509950505050505050505050565b805180516060916103e791610f6e90600190611d54565b81518110610ad457610ad4611d67565b6040805180820182526000808252602091820152815180830190925282518252808301908201526060906103e7906112ac565b60606000806000610fc185611498565b919450925090506000816001811115610fdc57610fdc611e0b565b146110295760405162461bcd60e51b815260206004820152601860248201527f496e76616c696420524c502062797465732076616c75652e000000000000000060448201526064016102fc565b611038856020015184846117e2565b95945050505050565b60606000825160026110539190611e21565b67ffffffffffffffff81111561106b5761106b611b86565b6040519080825280601f01601f191660200182016040528015611095576020820181803683370190505b50905060005b83518110156111735760048482815181106110b8576110b8611d67565b01602001516001600160f81b031916901c826110d5836002611e21565b815181106110e5576110e5611d67565b60200101906001600160f81b031916908160001a905350601084828151811061111057611110611d67565b0160200151611122919060f81c611dc2565b60f81b82611131836002611e21565b61113c906001611d96565b8151811061114c5761114c611d67565b60200101906001600160f81b031916908160001a90535061116c81611d7d565b905061109b565b5092915050565b600060208251101561118e57506020015190565b818060200190518101906103e79190611cbd565b600060606020836000015110156111c3576111bc8361188b565b90506111cf565b6111cc83610fb1565b90505b6105b28161117a565b60606103e76111f78360000151600081518110610ad457610ad4611d67565b611041565b60608251821061121b57506040805160208101909152600081526103e7565b6105b2838384865161122d9190611d54565b611896565b6000805b8084511180156112465750808351115b8015611297575082818151811061125f5761125f611d67565b602001015160f81c60f81b6001600160f81b03191684828151811061128657611286611d67565b01602001516001600160f81b031916145b156105b2576112a581611d7d565b9050611236565b60606000806112ba84611498565b919350909150600190508160018111156112d6576112d6611e0b565b146113235760405162461bcd60e51b815260206004820152601760248201527f496e76616c696420524c50206c6973742076616c75652e00000000000000000060448201526064016102fc565b6040805160208082526104208201909252600091816020015b604080518082019091526000808252602082015281526020019060019003908161133c5790505090506000835b865181101561148d57602082106113d55760405162461bcd60e51b815260206004820152602a60248201527f50726f766964656420524c50206c6973742065786365656473206d6178206c6960448201526939ba103632b733ba341760b11b60648201526084016102fc565b6000806114126040518060400160405280858c600001516113f69190611d54565b8152602001858c6020015161140b9190611d96565b9052611498565b50915091506040518060400160405280838361142e9190611d96565b8152602001848b602001516114439190611d96565b81525085858151811061145857611458611d67565b602090810291909101015261146e600185611d96565b935061147a8183611d96565b6114849084611d96565b92505050611369565b508152949350505050565b6000806000808460000151116114f05760405162461bcd60e51b815260206004820152601860248201527f524c50206974656d2063616e6e6f74206265206e756c6c2e000000000000000060448201526064016102fc565b6020840151805160001a607f81116115155760006001600094509450945050506117db565b60b7811161159157600061152a608083611d54565b90508087600001511161157f5760405162461bcd60e51b815260206004820152601960248201527f496e76616c696420524c502073686f727420737472696e672e0000000000000060448201526064016102fc565b600195509350600092506117db915050565b60bf81116116805760006115a660b783611d54565b9050808760000151116115fb5760405162461bcd60e51b815260206004820152601f60248201527f496e76616c696420524c50206c6f6e6720737472696e67206c656e6774682e0060448201526064016102fc565b600183015160208290036101000a90046116158183611d96565b8851116116645760405162461bcd60e51b815260206004820152601860248201527f496e76616c696420524c50206c6f6e6720737472696e672e000000000000000060448201526064016102fc565b61166f826001611d96565b96509450600093506117db92505050565b60f781116116fb57600061169560c083611d54565b9050808760000151116116ea5760405162461bcd60e51b815260206004820152601760248201527f496e76616c696420524c502073686f7274206c6973742e00000000000000000060448201526064016102fc565b6001955093508492506117db915050565b600061170860f783611d54565b90508087600001511161175d5760405162461bcd60e51b815260206004820152601d60248201527f496e76616c696420524c50206c6f6e67206c697374206c656e6774682e00000060448201526064016102fc565b600183015160208290036101000a90046117778183611d96565b8851116117bf5760405162461bcd60e51b815260206004820152601660248201527524b73b30b634b210292628103637b733903634b9ba1760511b60448201526064016102fc565b6117ca826001611d96565b96509450600193506117db92505050565b9193909250565b606060008267ffffffffffffffff8111156117ff576117ff611b86565b6040519080825280601f01601f191660200182016040528015611829576020820181803683370190505b509050805160000361183c5790506105b2565b8484016020820160005b8581101561185e578281015182820152602001611846565b5060006001602087066020036101000a039050808251168119845116178252839450505050509392505050565b60606103e7826119ed565b6060816118a481601f611d96565b10156118e35760405162461bcd60e51b815260206004820152600e60248201526d736c6963655f6f766572666c6f7760901b60448201526064016102fc565b826118ee8382611d96565b101561192d5760405162461bcd60e51b815260206004820152600e60248201526d736c6963655f6f766572666c6f7760901b60448201526064016102fc565b6119378284611d96565b8451101561197b5760405162461bcd60e51b8152602060048201526011602482015270736c6963655f6f75744f66426f756e647360781b60448201526064016102fc565b60608215801561199a57604051915060008252602082016040526119e4565b6040519150601f8416801560200281840101858101878315602002848b0101015b818310156119d35780518352602092830192016119bb565b5050858452601f01601f1916604052505b50949350505050565b60606103e78260200151600084600001516117e2565b6001600160a01b038116811461065057600080fd5b600060208284031215611a2a57600080fd5b81356105b281611a03565b60008060408385031215611a4857600080fd5b8235611a5381611a03565b946020939093013593505050565b600080600080600060808688031215611a7957600080fd5b853594506020860135611a8b81611a03565b935060408601359250606086013567ffffffffffffffff80821115611aaf57600080fd5b818801915088601f830112611ac357600080fd5b813581811115611ad257600080fd5b896020828501011115611ae457600080fd5b9699959850939650602001949392505050565b600060208284031215611b0957600080fd5b5035919050565b80358015158114611b2057600080fd5b919050565b600080600060608486031215611b3a57600080fd5b8335925060208401359150611b5160408501611b10565b90509250925092565b60008060408385031215611b6d57600080fd5b82359150611b7d60208401611b10565b90509250929050565b634e487b7160e01b600052604160045260246000fd5b6040805190810167ffffffffffffffff81118282101715611bbf57611bbf611b86565b60405290565b604051601f8201601f1916810167ffffffffffffffff81118282101715611bee57611bee611b86565b604052919050565b60006020808385031215611c0957600080fd5b823567ffffffffffffffff80821115611c2157600080fd5b9084019060408287031215611c3557600080fd5b611c3d611b9c565b823581528383013582811115611c5257600080fd5b80840193505086601f840112611c6757600080fd5b823582811115611c7957611c79611b86565b611c8b601f8201601f19168601611bc5565b92508083528785828601011115611ca157600080fd5b8085850186850137600090830185015292830152509392505050565b600060208284031215611ccf57600080fd5b5051919050565b600060208284031215611ce857600080fd5b81516105b281611a03565b6020808252602b908201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960408201526a6e697469616c697a696e6760a81b606082015260800190565b634e487b7160e01b600052601160045260246000fd5b818103818111156103e7576103e7611d3e565b634e487b7160e01b600052603260045260246000fd5b600060018201611d8f57611d8f611d3e565b5060010190565b808201808211156103e7576103e7611d3e565b60ff81811683821601908111156103e7576103e7611d3e565b600060ff831680611de357634e487b7160e01b600052601260045260246000fd5b8060ff84160691505092915050565b60ff82811682821603908111156103e7576103e7611d3e565b634e487b7160e01b600052602160045260246000fd5b80820281158282048414176103e7576103e7611d3e56fea2646970667358221220914fd418156d9d9a0e4aa8f2d563552ff29aa367381c04f0e5db5dcc63b0ce7264736f6c63430008120033", + "balance": "0x0" @@ -6123,7 +6123,7 @@ + "balance": "0xfffffffffffffba9c6e7dbb0bfffffff" + }, + "0x0000777700000000000000000000000000000007": { -+ "contractName": "ProxiedSignalService", ++ "contractName": "ProxiedSingletonSignalService", + "storage": {}, + "code": "0x608060405234801561001057600080fd5b50600436106100b45760003560e01c80636c6563f6116100715780636c6563f614610162578063715018a6146101755780638da5cb5b1461017d578063a86f9d9e1461018e578063f2fde38b146101a1578063f8f3f844146101b457600080fd5b80630652b57a146100b957806319ab453c146100ce57806332676bc6146100e15780633ab76e9f146101095780635221f6131461012e57806366ca2bc014610141575b600080fd5b6100cc6100c7366004611a23565b6101e0565b005b6100cc6100dc366004611a23565b610259565b6100f46100ef366004611a40565b610371565b60405190151581526020015b60405180910390f35b6097546001600160a01b03165b6040516001600160a01b039091168152602001610100565b6100f461013c366004611a6c565b6103e3565b61015461014f366004611b02565b61055d565b604051908152602001610100565b610116610170366004611b30565b6105a4565b6100cc6105bb565b6065546001600160a01b0316610116565b61011661019c366004611b65565b6105cf565b6100cc6101af366004611a23565b6105e5565b6101546101c2366004611a40565b6040805192835260208301919091526034600c830120918101905290565b6101e861065e565b6001600160a01b03811661020f57604051634d084d8560e11b815260040160405180910390fd5b609780546001600160a01b0319166001600160a01b0383169081179091556040517f399ded90cb5ed8d89ef7e76ff4af65c373f06d3bf5d7eef55f4228e7b702a18b90600090a250565b600054610100900460ff16158080156102795750600054600160ff909116105b806102935750303b158015610293575060005460ff166001145b6102fb5760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b60648201526084015b60405180910390fd5b6000805460ff19166001179055801561031e576000805461ff0019166101001790555b610327826106b8565b801561036d576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b5050565b6000826001600160a01b03811661039b576040516354cdfc8d60e11b815260040160405180910390fd5b8260008190036103be5760405163014f1da760e21b815260040160405180910390fd5b5050604080519384526020840192909252506034600c83012091810190525460011490565b6000854681036104065760405163e822b48d60e01b815260040160405180910390fd5b856001600160a01b03811661042e576040516354cdfc8d60e11b815260040160405180910390fd5b8560008190036104515760405163014f1da760e21b815260040160405180910390fd5b600061045f86880188611c01565b90506000610476647461696b6f60d81b60006105cf565b825160405163016674a560e21b815267ffffffffffffffff90911660048201526001600160a01b039190911690630599d29490602401602060405180830381865afa1580156104c9573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906104ed9190611cd6565b604080518c8152602081018c90526034600c820120818301909252606081019190915290915061054e90608001604051602081830303815290604052604051806040016040528060018152602001600160f81b8152508460200151846106d1565b9b9a5050505050505050505050565b6000818082036105805760405163014f1da760e21b815260040160405180910390fd5b50506040805133815260208101929092526034600c83012091810190526001815590565b60006105b18484846106f5565b90505b9392505050565b6105c361065e565b6105cd60006107a9565b565b60006105dc4684846106f5565b90505b92915050565b6105ed61065e565b6001600160a01b0381166106525760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b60648201526084016102f2565b61065b816107a9565b50565b6065546001600160a01b031633146105cd5760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064016102f2565b6106c06107fb565b6106c861082a565b61065b81610859565b6000806106dd866108a2565b90506106eb818686866108d4565b9695505050505050565b60975460405163195ac1a960e21b815260048101859052602481018490526000916001600160a01b03169063656b06a490604401602060405180830381865afa158015610746573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061076a9190611cef565b90508115801561078157506001600160a01b038116155b156105b457604051631467050360e21b815260048101859052602481018490526044016102f2565b606580546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b600054610100900460ff166108225760405162461bcd60e51b81526004016102f290611d0c565b6105cd610911565b600054610100900460ff166108515760405162461bcd60e51b81526004016102f290611d0c565b6105cd61093e565b6001600160a01b03811661088057604051634d084d8560e11b815260040160405180910390fd5b609780546001600160a01b0319166001600160a01b0392909216919091179055565b606081805190602001206040516020016108be91815260200190565b6040516020818303038152906040529050919050565b60008060006108e487868661096e565b9150915081801561090657508051602080830191909120875191880191909120145b979650505050505050565b600054610100900460ff166109385760405162461bcd60e51b81526004016102f290611d0c565b60018055565b600054610100900460ff166109655760405162461bcd60e51b81526004016102f290611d0c565b6105cd336107a9565b60006060600061097d85610a49565b9050600080600061098f848a89610b42565b815192955090935091501580806109a35750815b6109ef5760405162461bcd60e51b815260206004820152601a60248201527f50726f76696465642070726f6f6620697320696e76616c69642e00000000000060448201526064016102f2565b600081610a0b5760405180602001604052806000815250610a37565b610a3786610a1a600188611d6d565b81518110610a2a57610a2a611d80565b6020026020010151610f62565b919b919a509098505050505050505050565b60606000610a5683610f89565b90506000815167ffffffffffffffff811115610a7457610a74611b91565b604051908082528060200260200182016040528015610ab957816020015b6040805180820190915260608082526020820152815260200190600190039081610a925790505b50905060005b8251811015610b3a576000610aec848381518110610adf57610adf611d80565b6020026020010151610fbc565b90506040518060400160405280610b0283610f89565b815260200182815250838381518110610b1d57610b1d611d80565b60200260200101819052505080610b3390611d96565b9050610abf565b509392505050565b600060606000806000610b548761104c565b90506000869050600080610b7b604051806040016040528060608152602001606081525090565b60005b8c51811015610f3a578c8181518110610b9957610b99611d80565b602002602001015191508284610baf9190611daf565b9350610bbc600188611daf565b965083600003610c19578482602001518051906020012014610c145760405162461bcd60e51b8152602060048201526011602482015270092dcecc2d8d2c840e4dedee840d0c2e6d607b1b60448201526064016102f2565b610cdb565b602082602001515110610c80578482602001518051906020012014610c145760405162461bcd60e51b815260206004820152601b60248201527f496e76616c6964206c6172676520696e7465726e616c2068617368000000000060448201526064016102f2565b84610c8e8360200151611185565b14610cdb5760405162461bcd60e51b815260206004820152601a60248201527f496e76616c696420696e7465726e616c206e6f6465206861736800000000000060448201526064016102f2565b610ce760106001611dc2565b60ff1682600001515103610d555785518414610f3a576000868581518110610d1157610d11611d80565b01602001518351805160f89290921c925060009183908110610d3557610d35611d80565b60200260200101519050610d48816111ad565b9650600194505050610f2a565b81515160011901610ee2576000610d6b836111e3565b9050600081600081518110610d8257610d82611d80565b016020015160f81c90506000610d99600283611ddb565b610da4906002611e0b565b90506000610db5848360ff16611207565b90506000610dc38b8a611207565b90506000610dd1838361123d565b905060ff851660021480610de8575060ff85166003145b15610e2257808351148015610dfd5750808251145b15610e0f57610e0c818b611daf565b99505b50600160ff1b9950610f3a945050505050565b60ff85161580610e35575060ff85166001145b15610e8b5782518114610e555750600160ff1b9950610f3a945050505050565b610e7c8860000151600181518110610e6f57610e6f611d80565b60200260200101516111ad565b9a509750610f2a945050505050565b60405162461bcd60e51b815260206004820152602660248201527f52656365697665642061206e6f6465207769746820616e20756e6b6e6f776e206044820152650e0e4caccd2f60d31b60648201526084016102f2565b60405162461bcd60e51b815260206004820152601d60248201527f526563656976656420616e20756e706172736561626c65206e6f64652e00000060448201526064016102f2565b610f3381611d96565b9050610b7e565b50600160ff1b841486610f4d8786611207565b909e909d50909b509950505050505050505050565b805180516060916105df91610f7990600190611d6d565b81518110610adf57610adf611d80565b6040805180820182526000808252602091820152815180830190925282518252808301908201526060906105df906112b7565b60606000806000610fcc856114a3565b919450925090506000816001811115610fe757610fe7611e24565b146110345760405162461bcd60e51b815260206004820152601860248201527f496e76616c696420524c502062797465732076616c75652e000000000000000060448201526064016102f2565b611043856020015184846117ed565b95945050505050565b606060008251600261105e9190611e3a565b67ffffffffffffffff81111561107657611076611b91565b6040519080825280601f01601f1916602001820160405280156110a0576020820181803683370190505b50905060005b835181101561117e5760048482815181106110c3576110c3611d80565b01602001516001600160f81b031916901c826110e0836002611e3a565b815181106110f0576110f0611d80565b60200101906001600160f81b031916908160001a905350601084828151811061111b5761111b611d80565b016020015161112d919060f81c611ddb565b60f81b8261113c836002611e3a565b611147906001611daf565b8151811061115757611157611d80565b60200101906001600160f81b031916908160001a90535061117781611d96565b90506110a6565b5092915050565b600060208251101561119957506020015190565b818060200190518101906105df9190611cd6565b600060606020836000015110156111ce576111c783611896565b90506111da565b6111d783610fbc565b90505b6105b481611185565b60606105df6112028360000151600081518110610adf57610adf611d80565b61104c565b60608251821061122657506040805160208101909152600081526105df565b6105dc83838486516112389190611d6d565b6118a1565b6000805b8084511180156112515750808351115b80156112a2575082818151811061126a5761126a611d80565b602001015160f81c60f81b6001600160f81b03191684828151811061129157611291611d80565b01602001516001600160f81b031916145b156105dc576112b081611d96565b9050611241565b60606000806112c5846114a3565b919350909150600190508160018111156112e1576112e1611e24565b1461132e5760405162461bcd60e51b815260206004820152601760248201527f496e76616c696420524c50206c6973742076616c75652e00000000000000000060448201526064016102f2565b6040805160208082526104208201909252600091816020015b60408051808201909152600080825260208201528152602001906001900390816113475790505090506000835b865181101561149857602082106113e05760405162461bcd60e51b815260206004820152602a60248201527f50726f766964656420524c50206c6973742065786365656473206d6178206c6960448201526939ba103632b733ba341760b11b60648201526084016102f2565b60008061141d6040518060400160405280858c600001516114019190611d6d565b8152602001858c602001516114169190611daf565b90526114a3565b5091509150604051806040016040528083836114399190611daf565b8152602001848b6020015161144e9190611daf565b81525085858151811061146357611463611d80565b6020908102919091010152611479600185611daf565b93506114858183611daf565b61148f9084611daf565b92505050611374565b508152949350505050565b6000806000808460000151116114fb5760405162461bcd60e51b815260206004820152601860248201527f524c50206974656d2063616e6e6f74206265206e756c6c2e000000000000000060448201526064016102f2565b6020840151805160001a607f81116115205760006001600094509450945050506117e6565b60b7811161159c576000611535608083611d6d565b90508087600001511161158a5760405162461bcd60e51b815260206004820152601960248201527f496e76616c696420524c502073686f727420737472696e672e0000000000000060448201526064016102f2565b600195509350600092506117e6915050565b60bf811161168b5760006115b160b783611d6d565b9050808760000151116116065760405162461bcd60e51b815260206004820152601f60248201527f496e76616c696420524c50206c6f6e6720737472696e67206c656e6774682e0060448201526064016102f2565b600183015160208290036101000a90046116208183611daf565b88511161166f5760405162461bcd60e51b815260206004820152601860248201527f496e76616c696420524c50206c6f6e6720737472696e672e000000000000000060448201526064016102f2565b61167a826001611daf565b96509450600093506117e692505050565b60f781116117065760006116a060c083611d6d565b9050808760000151116116f55760405162461bcd60e51b815260206004820152601760248201527f496e76616c696420524c502073686f7274206c6973742e00000000000000000060448201526064016102f2565b6001955093508492506117e6915050565b600061171360f783611d6d565b9050808760000151116117685760405162461bcd60e51b815260206004820152601d60248201527f496e76616c696420524c50206c6f6e67206c697374206c656e6774682e00000060448201526064016102f2565b600183015160208290036101000a90046117828183611daf565b8851116117ca5760405162461bcd60e51b815260206004820152601660248201527524b73b30b634b210292628103637b733903634b9ba1760511b60448201526064016102f2565b6117d5826001611daf565b96509450600193506117e692505050565b9193909250565b606060008267ffffffffffffffff81111561180a5761180a611b91565b6040519080825280601f01601f191660200182016040528015611834576020820181803683370190505b50905080516000036118475790506105b4565b8484016020820160005b85811015611869578281015182820152602001611851565b5060006001602087066020036101000a039050808251168119845116178252839450505050509392505050565b60606105df826119f8565b6060816118af81601f611daf565b10156118ee5760405162461bcd60e51b815260206004820152600e60248201526d736c6963655f6f766572666c6f7760901b60448201526064016102f2565b826118f98382611daf565b10156119385760405162461bcd60e51b815260206004820152600e60248201526d736c6963655f6f766572666c6f7760901b60448201526064016102f2565b6119428284611daf565b845110156119865760405162461bcd60e51b8152602060048201526011602482015270736c6963655f6f75744f66426f756e647360781b60448201526064016102f2565b6060821580156119a557604051915060008252602082016040526119ef565b6040519150601f8416801560200281840101858101878315602002848b0101015b818310156119de5780518352602092830192016119c6565b5050858452601f01601f1916604052505b50949350505050565b60606105df8260200151600084600001516117ed565b6001600160a01b038116811461065b57600080fd5b600060208284031215611a3557600080fd5b81356105dc81611a0e565b60008060408385031215611a5357600080fd5b8235611a5e81611a0e565b946020939093013593505050565b600080600080600060808688031215611a8457600080fd5b853594506020860135611a9681611a0e565b935060408601359250606086013567ffffffffffffffff80821115611aba57600080fd5b818801915088601f830112611ace57600080fd5b813581811115611add57600080fd5b896020828501011115611aef57600080fd5b9699959850939650602001949392505050565b600060208284031215611b1457600080fd5b5035919050565b80358015158114611b2b57600080fd5b919050565b600080600060608486031215611b4557600080fd5b8335925060208401359150611b5c60408501611b1b565b90509250925092565b60008060408385031215611b7857600080fd5b82359150611b8860208401611b1b565b90509250929050565b634e487b7160e01b600052604160045260246000fd5b6040805190810167ffffffffffffffff81118282101715611bca57611bca611b91565b60405290565b604051601f8201601f1916810167ffffffffffffffff81118282101715611bf957611bf9611b91565b604052919050565b60006020808385031215611c1457600080fd5b823567ffffffffffffffff80821115611c2c57600080fd5b9084019060408287031215611c4057600080fd5b611c48611ba7565b82358281168114611c5857600080fd5b81528284013582811115611c6b57600080fd5b80840193505086601f840112611c8057600080fd5b823582811115611c9257611c92611b91565b611ca4601f8201601f19168601611bd0565b92508083528785828601011115611cba57600080fd5b8085850186850137600090830185015292830152509392505050565b600060208284031215611ce857600080fd5b5051919050565b600060208284031215611d0157600080fd5b81516105dc81611a0e565b6020808252602b908201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960408201526a6e697469616c697a696e6760a81b606082015260800190565b634e487b7160e01b600052601160045260246000fd5b818103818111156105df576105df611d57565b634e487b7160e01b600052603260045260246000fd5b600060018201611da857611da8611d57565b5060010190565b808201808211156105df576105df611d57565b60ff81811683821601908111156105df576105df611d57565b600060ff831680611dfc57634e487b7160e01b600052601260045260246000fd5b8060ff84160691505092915050565b60ff82811682821603908111156105df576105df611d57565b634e487b7160e01b600052602160045260246000fd5b80820281158282048414176105df576105df611d5756fea2646970667358221220151fc91dac790a2ffff3f5862cbc56fc2ca0ee6980528cb06692174bd7c2d26064736f6c63430008140033", + "balance": "0x0" @@ -6433,7 +6433,7 @@ + "balance": "0xfffffffffffffba9c6e7dbb0bfffffff" + }, + "0x0000777700000000000000000000000000000007": { -+ "contractName": "ProxiedSignalService", ++ "contractName": "ProxiedSingletonSignalService", + "storage": {}, + "code": "0x608060405234801561001057600080fd5b50600436106100b45760003560e01c80636c6563f6116100715780636c6563f614610162578063715018a6146101755780638da5cb5b1461017d578063a86f9d9e1461018e578063f2fde38b146101a1578063f8f3f844146101b457600080fd5b80630652b57a146100b957806319ab453c146100ce57806332676bc6146100e15780633ab76e9f146101095780635221f6131461012e57806366ca2bc014610141575b600080fd5b6100cc6100c7366004611a23565b6101e0565b005b6100cc6100dc366004611a23565b610259565b6100f46100ef366004611a40565b610371565b60405190151581526020015b60405180910390f35b6097546001600160a01b03165b6040516001600160a01b039091168152602001610100565b6100f461013c366004611a6c565b6103e3565b61015461014f366004611b02565b61055d565b604051908152602001610100565b610116610170366004611b30565b6105a4565b6100cc6105bb565b6065546001600160a01b0316610116565b61011661019c366004611b65565b6105cf565b6100cc6101af366004611a23565b6105e5565b6101546101c2366004611a40565b6040805192835260208301919091526034600c830120918101905290565b6101e861065e565b6001600160a01b03811661020f57604051634d084d8560e11b815260040160405180910390fd5b609780546001600160a01b0319166001600160a01b0383169081179091556040517f399ded90cb5ed8d89ef7e76ff4af65c373f06d3bf5d7eef55f4228e7b702a18b90600090a250565b600054610100900460ff16158080156102795750600054600160ff909116105b806102935750303b158015610293575060005460ff166001145b6102fb5760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b60648201526084015b60405180910390fd5b6000805460ff19166001179055801561031e576000805461ff0019166101001790555b610327826106b8565b801561036d576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b5050565b6000826001600160a01b03811661039b576040516354cdfc8d60e11b815260040160405180910390fd5b8260008190036103be5760405163014f1da760e21b815260040160405180910390fd5b5050604080519384526020840192909252506034600c83012091810190525460011490565b6000854681036104065760405163e822b48d60e01b815260040160405180910390fd5b856001600160a01b03811661042e576040516354cdfc8d60e11b815260040160405180910390fd5b8560008190036104515760405163014f1da760e21b815260040160405180910390fd5b600061045f86880188611c01565b90506000610476647461696b6f60d81b60006105cf565b825160405163016674a560e21b815267ffffffffffffffff90911660048201526001600160a01b039190911690630599d29490602401602060405180830381865afa1580156104c9573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906104ed9190611cd6565b604080518c8152602081018c90526034600c820120818301909252606081019190915290915061054e90608001604051602081830303815290604052604051806040016040528060018152602001600160f81b8152508460200151846106d1565b9b9a5050505050505050505050565b6000818082036105805760405163014f1da760e21b815260040160405180910390fd5b50506040805133815260208101929092526034600c83012091810190526001815590565b60006105b18484846106f5565b90505b9392505050565b6105c361065e565b6105cd60006107a9565b565b60006105dc4684846106f5565b90505b92915050565b6105ed61065e565b6001600160a01b0381166106525760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b60648201526084016102f2565b61065b816107a9565b50565b6065546001600160a01b031633146105cd5760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064016102f2565b6106c06107fb565b6106c861082a565b61065b81610859565b6000806106dd866108a2565b90506106eb818686866108d4565b9695505050505050565b60975460405163195ac1a960e21b815260048101859052602481018490526000916001600160a01b03169063656b06a490604401602060405180830381865afa158015610746573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061076a9190611cef565b90508115801561078157506001600160a01b038116155b156105b457604051631467050360e21b815260048101859052602481018490526044016102f2565b606580546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b600054610100900460ff166108225760405162461bcd60e51b81526004016102f290611d0c565b6105cd610911565b600054610100900460ff166108515760405162461bcd60e51b81526004016102f290611d0c565b6105cd61093e565b6001600160a01b03811661088057604051634d084d8560e11b815260040160405180910390fd5b609780546001600160a01b0319166001600160a01b0392909216919091179055565b606081805190602001206040516020016108be91815260200190565b6040516020818303038152906040529050919050565b60008060006108e487868661096e565b9150915081801561090657508051602080830191909120875191880191909120145b979650505050505050565b600054610100900460ff166109385760405162461bcd60e51b81526004016102f290611d0c565b60018055565b600054610100900460ff166109655760405162461bcd60e51b81526004016102f290611d0c565b6105cd336107a9565b60006060600061097d85610a49565b9050600080600061098f848a89610b42565b815192955090935091501580806109a35750815b6109ef5760405162461bcd60e51b815260206004820152601a60248201527f50726f76696465642070726f6f6620697320696e76616c69642e00000000000060448201526064016102f2565b600081610a0b5760405180602001604052806000815250610a37565b610a3786610a1a600188611d6d565b81518110610a2a57610a2a611d80565b6020026020010151610f62565b919b919a509098505050505050505050565b60606000610a5683610f89565b90506000815167ffffffffffffffff811115610a7457610a74611b91565b604051908082528060200260200182016040528015610ab957816020015b6040805180820190915260608082526020820152815260200190600190039081610a925790505b50905060005b8251811015610b3a576000610aec848381518110610adf57610adf611d80565b6020026020010151610fbc565b90506040518060400160405280610b0283610f89565b815260200182815250838381518110610b1d57610b1d611d80565b60200260200101819052505080610b3390611d96565b9050610abf565b509392505050565b600060606000806000610b548761104c565b90506000869050600080610b7b604051806040016040528060608152602001606081525090565b60005b8c51811015610f3a578c8181518110610b9957610b99611d80565b602002602001015191508284610baf9190611daf565b9350610bbc600188611daf565b965083600003610c19578482602001518051906020012014610c145760405162461bcd60e51b8152602060048201526011602482015270092dcecc2d8d2c840e4dedee840d0c2e6d607b1b60448201526064016102f2565b610cdb565b602082602001515110610c80578482602001518051906020012014610c145760405162461bcd60e51b815260206004820152601b60248201527f496e76616c6964206c6172676520696e7465726e616c2068617368000000000060448201526064016102f2565b84610c8e8360200151611185565b14610cdb5760405162461bcd60e51b815260206004820152601a60248201527f496e76616c696420696e7465726e616c206e6f6465206861736800000000000060448201526064016102f2565b610ce760106001611dc2565b60ff1682600001515103610d555785518414610f3a576000868581518110610d1157610d11611d80565b01602001518351805160f89290921c925060009183908110610d3557610d35611d80565b60200260200101519050610d48816111ad565b9650600194505050610f2a565b81515160011901610ee2576000610d6b836111e3565b9050600081600081518110610d8257610d82611d80565b016020015160f81c90506000610d99600283611ddb565b610da4906002611e0b565b90506000610db5848360ff16611207565b90506000610dc38b8a611207565b90506000610dd1838361123d565b905060ff851660021480610de8575060ff85166003145b15610e2257808351148015610dfd5750808251145b15610e0f57610e0c818b611daf565b99505b50600160ff1b9950610f3a945050505050565b60ff85161580610e35575060ff85166001145b15610e8b5782518114610e555750600160ff1b9950610f3a945050505050565b610e7c8860000151600181518110610e6f57610e6f611d80565b60200260200101516111ad565b9a509750610f2a945050505050565b60405162461bcd60e51b815260206004820152602660248201527f52656365697665642061206e6f6465207769746820616e20756e6b6e6f776e206044820152650e0e4caccd2f60d31b60648201526084016102f2565b60405162461bcd60e51b815260206004820152601d60248201527f526563656976656420616e20756e706172736561626c65206e6f64652e00000060448201526064016102f2565b610f3381611d96565b9050610b7e565b50600160ff1b841486610f4d8786611207565b909e909d50909b509950505050505050505050565b805180516060916105df91610f7990600190611d6d565b81518110610adf57610adf611d80565b6040805180820182526000808252602091820152815180830190925282518252808301908201526060906105df906112b7565b60606000806000610fcc856114a3565b919450925090506000816001811115610fe757610fe7611e24565b146110345760405162461bcd60e51b815260206004820152601860248201527f496e76616c696420524c502062797465732076616c75652e000000000000000060448201526064016102f2565b611043856020015184846117ed565b95945050505050565b606060008251600261105e9190611e3a565b67ffffffffffffffff81111561107657611076611b91565b6040519080825280601f01601f1916602001820160405280156110a0576020820181803683370190505b50905060005b835181101561117e5760048482815181106110c3576110c3611d80565b01602001516001600160f81b031916901c826110e0836002611e3a565b815181106110f0576110f0611d80565b60200101906001600160f81b031916908160001a905350601084828151811061111b5761111b611d80565b016020015161112d919060f81c611ddb565b60f81b8261113c836002611e3a565b611147906001611daf565b8151811061115757611157611d80565b60200101906001600160f81b031916908160001a90535061117781611d96565b90506110a6565b5092915050565b600060208251101561119957506020015190565b818060200190518101906105df9190611cd6565b600060606020836000015110156111ce576111c783611896565b90506111da565b6111d783610fbc565b90505b6105b481611185565b60606105df6112028360000151600081518110610adf57610adf611d80565b61104c565b60608251821061122657506040805160208101909152600081526105df565b6105dc83838486516112389190611d6d565b6118a1565b6000805b8084511180156112515750808351115b80156112a2575082818151811061126a5761126a611d80565b602001015160f81c60f81b6001600160f81b03191684828151811061129157611291611d80565b01602001516001600160f81b031916145b156105dc576112b081611d96565b9050611241565b60606000806112c5846114a3565b919350909150600190508160018111156112e1576112e1611e24565b1461132e5760405162461bcd60e51b815260206004820152601760248201527f496e76616c696420524c50206c6973742076616c75652e00000000000000000060448201526064016102f2565b6040805160208082526104208201909252600091816020015b60408051808201909152600080825260208201528152602001906001900390816113475790505090506000835b865181101561149857602082106113e05760405162461bcd60e51b815260206004820152602a60248201527f50726f766964656420524c50206c6973742065786365656473206d6178206c6960448201526939ba103632b733ba341760b11b60648201526084016102f2565b60008061141d6040518060400160405280858c600001516114019190611d6d565b8152602001858c602001516114169190611daf565b90526114a3565b5091509150604051806040016040528083836114399190611daf565b8152602001848b6020015161144e9190611daf565b81525085858151811061146357611463611d80565b6020908102919091010152611479600185611daf565b93506114858183611daf565b61148f9084611daf565b92505050611374565b508152949350505050565b6000806000808460000151116114fb5760405162461bcd60e51b815260206004820152601860248201527f524c50206974656d2063616e6e6f74206265206e756c6c2e000000000000000060448201526064016102f2565b6020840151805160001a607f81116115205760006001600094509450945050506117e6565b60b7811161159c576000611535608083611d6d565b90508087600001511161158a5760405162461bcd60e51b815260206004820152601960248201527f496e76616c696420524c502073686f727420737472696e672e0000000000000060448201526064016102f2565b600195509350600092506117e6915050565b60bf811161168b5760006115b160b783611d6d565b9050808760000151116116065760405162461bcd60e51b815260206004820152601f60248201527f496e76616c696420524c50206c6f6e6720737472696e67206c656e6774682e0060448201526064016102f2565b600183015160208290036101000a90046116208183611daf565b88511161166f5760405162461bcd60e51b815260206004820152601860248201527f496e76616c696420524c50206c6f6e6720737472696e672e000000000000000060448201526064016102f2565b61167a826001611daf565b96509450600093506117e692505050565b60f781116117065760006116a060c083611d6d565b9050808760000151116116f55760405162461bcd60e51b815260206004820152601760248201527f496e76616c696420524c502073686f7274206c6973742e00000000000000000060448201526064016102f2565b6001955093508492506117e6915050565b600061171360f783611d6d565b9050808760000151116117685760405162461bcd60e51b815260206004820152601d60248201527f496e76616c696420524c50206c6f6e67206c697374206c656e6774682e00000060448201526064016102f2565b600183015160208290036101000a90046117828183611daf565b8851116117ca5760405162461bcd60e51b815260206004820152601660248201527524b73b30b634b210292628103637b733903634b9ba1760511b60448201526064016102f2565b6117d5826001611daf565b96509450600193506117e692505050565b9193909250565b606060008267ffffffffffffffff81111561180a5761180a611b91565b6040519080825280601f01601f191660200182016040528015611834576020820181803683370190505b50905080516000036118475790506105b4565b8484016020820160005b85811015611869578281015182820152602001611851565b5060006001602087066020036101000a039050808251168119845116178252839450505050509392505050565b60606105df826119f8565b6060816118af81601f611daf565b10156118ee5760405162461bcd60e51b815260206004820152600e60248201526d736c6963655f6f766572666c6f7760901b60448201526064016102f2565b826118f98382611daf565b10156119385760405162461bcd60e51b815260206004820152600e60248201526d736c6963655f6f766572666c6f7760901b60448201526064016102f2565b6119428284611daf565b845110156119865760405162461bcd60e51b8152602060048201526011602482015270736c6963655f6f75744f66426f756e647360781b60448201526064016102f2565b6060821580156119a557604051915060008252602082016040526119ef565b6040519150601f8416801560200281840101858101878315602002848b0101015b818310156119de5780518352602092830192016119c6565b5050858452601f01601f1916604052505b50949350505050565b60606105df8260200151600084600001516117ed565b6001600160a01b038116811461065b57600080fd5b600060208284031215611a3557600080fd5b81356105dc81611a0e565b60008060408385031215611a5357600080fd5b8235611a5e81611a0e565b946020939093013593505050565b600080600080600060808688031215611a8457600080fd5b853594506020860135611a9681611a0e565b935060408601359250606086013567ffffffffffffffff80821115611aba57600080fd5b818801915088601f830112611ace57600080fd5b813581811115611add57600080fd5b896020828501011115611aef57600080fd5b9699959850939650602001949392505050565b600060208284031215611b1457600080fd5b5035919050565b80358015158114611b2b57600080fd5b919050565b600080600060608486031215611b4557600080fd5b8335925060208401359150611b5c60408501611b1b565b90509250925092565b60008060408385031215611b7857600080fd5b82359150611b8860208401611b1b565b90509250929050565b634e487b7160e01b600052604160045260246000fd5b6040805190810167ffffffffffffffff81118282101715611bca57611bca611b91565b60405290565b604051601f8201601f1916810167ffffffffffffffff81118282101715611bf957611bf9611b91565b604052919050565b60006020808385031215611c1457600080fd5b823567ffffffffffffffff80821115611c2c57600080fd5b9084019060408287031215611c4057600080fd5b611c48611ba7565b82358281168114611c5857600080fd5b81528284013582811115611c6b57600080fd5b80840193505086601f840112611c8057600080fd5b823582811115611c9257611c92611b91565b611ca4601f8201601f19168601611bd0565b92508083528785828601011115611cba57600080fd5b8085850186850137600090830185015292830152509392505050565b600060208284031215611ce857600080fd5b5051919050565b600060208284031215611d0157600080fd5b81516105dc81611a0e565b6020808252602b908201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960408201526a6e697469616c697a696e6760a81b606082015260800190565b634e487b7160e01b600052601160045260246000fd5b818103818111156105df576105df611d57565b634e487b7160e01b600052603260045260246000fd5b600060018201611da857611da8611d57565b5060010190565b808201808211156105df576105df611d57565b60ff81811683821601908111156105df576105df611d57565b600060ff831680611dfc57634e487b7160e01b600052601260045260246000fd5b8060ff84160691505092915050565b60ff82811682821603908111156105df576105df611d57565b634e487b7160e01b600052602160045260246000fd5b80820281158282048414176105df576105df611d5756fea2646970667358221220151fc91dac790a2ffff3f5862cbc56fc2ca0ee6980528cb06692174bd7c2d26064736f6c63430008140033", + "balance": "0x0" @@ -6701,7 +6701,7 @@ + "balance": "0xffffffffffffff21f494c589bfffffff" + }, + "0x0000777700000000000000000000000000000007": { -+ "contractName": "ProxiedSignalService", ++ "contractName": "ProxiedSingletonSignalService", + "storage": {}, + "code": "0x608060405234801561001057600080fd5b50600436106100b45760003560e01c80636c6563f6116100715780636c6563f614610162578063715018a6146101755780638da5cb5b1461017d578063a86f9d9e1461018e578063f2fde38b146101a1578063f8f3f844146101b457600080fd5b80630652b57a146100b957806319ab453c146100ce57806332676bc6146100e15780633ab76e9f146101095780635221f6131461012e57806366ca2bc014610141575b600080fd5b6100cc6100c7366004611a23565b6101e0565b005b6100cc6100dc366004611a23565b610259565b6100f46100ef366004611a40565b610371565b60405190151581526020015b60405180910390f35b6097546001600160a01b03165b6040516001600160a01b039091168152602001610100565b6100f461013c366004611a6c565b6103e3565b61015461014f366004611b02565b61055d565b604051908152602001610100565b610116610170366004611b30565b6105a4565b6100cc6105bb565b6065546001600160a01b0316610116565b61011661019c366004611b65565b6105cf565b6100cc6101af366004611a23565b6105e5565b6101546101c2366004611a40565b6040805192835260208301919091526034600c830120918101905290565b6101e861065e565b6001600160a01b03811661020f57604051634d084d8560e11b815260040160405180910390fd5b609780546001600160a01b0319166001600160a01b0383169081179091556040517f399ded90cb5ed8d89ef7e76ff4af65c373f06d3bf5d7eef55f4228e7b702a18b90600090a250565b600054610100900460ff16158080156102795750600054600160ff909116105b806102935750303b158015610293575060005460ff166001145b6102fb5760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b60648201526084015b60405180910390fd5b6000805460ff19166001179055801561031e576000805461ff0019166101001790555b610327826106b8565b801561036d576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b5050565b6000826001600160a01b03811661039b576040516354cdfc8d60e11b815260040160405180910390fd5b8260008190036103be5760405163014f1da760e21b815260040160405180910390fd5b5050604080519384526020840192909252506034600c83012091810190525460011490565b6000854681036104065760405163e822b48d60e01b815260040160405180910390fd5b856001600160a01b03811661042e576040516354cdfc8d60e11b815260040160405180910390fd5b8560008190036104515760405163014f1da760e21b815260040160405180910390fd5b600061045f86880188611c01565b90506000610476647461696b6f60d81b60006105cf565b825160405163016674a560e21b815267ffffffffffffffff90911660048201526001600160a01b039190911690630599d29490602401602060405180830381865afa1580156104c9573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906104ed9190611cd6565b604080518c8152602081018c90526034600c820120818301909252606081019190915290915061054e90608001604051602081830303815290604052604051806040016040528060018152602001600160f81b8152508460200151846106d1565b9b9a5050505050505050505050565b6000818082036105805760405163014f1da760e21b815260040160405180910390fd5b50506040805133815260208101929092526034600c83012091810190526001815590565b60006105b18484846106f5565b90505b9392505050565b6105c361065e565b6105cd60006107a9565b565b60006105dc4684846106f5565b90505b92915050565b6105ed61065e565b6001600160a01b0381166106525760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b60648201526084016102f2565b61065b816107a9565b50565b6065546001600160a01b031633146105cd5760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064016102f2565b6106c06107fb565b6106c861082a565b61065b81610859565b6000806106dd866108a2565b90506106eb818686866108d4565b9695505050505050565b60975460405163195ac1a960e21b815260048101859052602481018490526000916001600160a01b03169063656b06a490604401602060405180830381865afa158015610746573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061076a9190611cef565b90508115801561078157506001600160a01b038116155b156105b457604051631467050360e21b815260048101859052602481018490526044016102f2565b606580546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b600054610100900460ff166108225760405162461bcd60e51b81526004016102f290611d0c565b6105cd610911565b600054610100900460ff166108515760405162461bcd60e51b81526004016102f290611d0c565b6105cd61093e565b6001600160a01b03811661088057604051634d084d8560e11b815260040160405180910390fd5b609780546001600160a01b0319166001600160a01b0392909216919091179055565b606081805190602001206040516020016108be91815260200190565b6040516020818303038152906040529050919050565b60008060006108e487868661096e565b9150915081801561090657508051602080830191909120875191880191909120145b979650505050505050565b600054610100900460ff166109385760405162461bcd60e51b81526004016102f290611d0c565b60018055565b600054610100900460ff166109655760405162461bcd60e51b81526004016102f290611d0c565b6105cd336107a9565b60006060600061097d85610a49565b9050600080600061098f848a89610b42565b815192955090935091501580806109a35750815b6109ef5760405162461bcd60e51b815260206004820152601a60248201527f50726f76696465642070726f6f6620697320696e76616c69642e00000000000060448201526064016102f2565b600081610a0b5760405180602001604052806000815250610a37565b610a3786610a1a600188611d6d565b81518110610a2a57610a2a611d80565b6020026020010151610f62565b919b919a509098505050505050505050565b60606000610a5683610f89565b90506000815167ffffffffffffffff811115610a7457610a74611b91565b604051908082528060200260200182016040528015610ab957816020015b6040805180820190915260608082526020820152815260200190600190039081610a925790505b50905060005b8251811015610b3a576000610aec848381518110610adf57610adf611d80565b6020026020010151610fbc565b90506040518060400160405280610b0283610f89565b815260200182815250838381518110610b1d57610b1d611d80565b60200260200101819052505080610b3390611d96565b9050610abf565b509392505050565b600060606000806000610b548761104c565b90506000869050600080610b7b604051806040016040528060608152602001606081525090565b60005b8c51811015610f3a578c8181518110610b9957610b99611d80565b602002602001015191508284610baf9190611daf565b9350610bbc600188611daf565b965083600003610c19578482602001518051906020012014610c145760405162461bcd60e51b8152602060048201526011602482015270092dcecc2d8d2c840e4dedee840d0c2e6d607b1b60448201526064016102f2565b610cdb565b602082602001515110610c80578482602001518051906020012014610c145760405162461bcd60e51b815260206004820152601b60248201527f496e76616c6964206c6172676520696e7465726e616c2068617368000000000060448201526064016102f2565b84610c8e8360200151611185565b14610cdb5760405162461bcd60e51b815260206004820152601a60248201527f496e76616c696420696e7465726e616c206e6f6465206861736800000000000060448201526064016102f2565b610ce760106001611dc2565b60ff1682600001515103610d555785518414610f3a576000868581518110610d1157610d11611d80565b01602001518351805160f89290921c925060009183908110610d3557610d35611d80565b60200260200101519050610d48816111ad565b9650600194505050610f2a565b81515160011901610ee2576000610d6b836111e3565b9050600081600081518110610d8257610d82611d80565b016020015160f81c90506000610d99600283611ddb565b610da4906002611e0b565b90506000610db5848360ff16611207565b90506000610dc38b8a611207565b90506000610dd1838361123d565b905060ff851660021480610de8575060ff85166003145b15610e2257808351148015610dfd5750808251145b15610e0f57610e0c818b611daf565b99505b50600160ff1b9950610f3a945050505050565b60ff85161580610e35575060ff85166001145b15610e8b5782518114610e555750600160ff1b9950610f3a945050505050565b610e7c8860000151600181518110610e6f57610e6f611d80565b60200260200101516111ad565b9a509750610f2a945050505050565b60405162461bcd60e51b815260206004820152602660248201527f52656365697665642061206e6f6465207769746820616e20756e6b6e6f776e206044820152650e0e4caccd2f60d31b60648201526084016102f2565b60405162461bcd60e51b815260206004820152601d60248201527f526563656976656420616e20756e706172736561626c65206e6f64652e00000060448201526064016102f2565b610f3381611d96565b9050610b7e565b50600160ff1b841486610f4d8786611207565b909e909d50909b509950505050505050505050565b805180516060916105df91610f7990600190611d6d565b81518110610adf57610adf611d80565b6040805180820182526000808252602091820152815180830190925282518252808301908201526060906105df906112b7565b60606000806000610fcc856114a3565b919450925090506000816001811115610fe757610fe7611e24565b146110345760405162461bcd60e51b815260206004820152601860248201527f496e76616c696420524c502062797465732076616c75652e000000000000000060448201526064016102f2565b611043856020015184846117ed565b95945050505050565b606060008251600261105e9190611e3a565b67ffffffffffffffff81111561107657611076611b91565b6040519080825280601f01601f1916602001820160405280156110a0576020820181803683370190505b50905060005b835181101561117e5760048482815181106110c3576110c3611d80565b01602001516001600160f81b031916901c826110e0836002611e3a565b815181106110f0576110f0611d80565b60200101906001600160f81b031916908160001a905350601084828151811061111b5761111b611d80565b016020015161112d919060f81c611ddb565b60f81b8261113c836002611e3a565b611147906001611daf565b8151811061115757611157611d80565b60200101906001600160f81b031916908160001a90535061117781611d96565b90506110a6565b5092915050565b600060208251101561119957506020015190565b818060200190518101906105df9190611cd6565b600060606020836000015110156111ce576111c783611896565b90506111da565b6111d783610fbc565b90505b6105b481611185565b60606105df6112028360000151600081518110610adf57610adf611d80565b61104c565b60608251821061122657506040805160208101909152600081526105df565b6105dc83838486516112389190611d6d565b6118a1565b6000805b8084511180156112515750808351115b80156112a2575082818151811061126a5761126a611d80565b602001015160f81c60f81b6001600160f81b03191684828151811061129157611291611d80565b01602001516001600160f81b031916145b156105dc576112b081611d96565b9050611241565b60606000806112c5846114a3565b919350909150600190508160018111156112e1576112e1611e24565b1461132e5760405162461bcd60e51b815260206004820152601760248201527f496e76616c696420524c50206c6973742076616c75652e00000000000000000060448201526064016102f2565b6040805160208082526104208201909252600091816020015b60408051808201909152600080825260208201528152602001906001900390816113475790505090506000835b865181101561149857602082106113e05760405162461bcd60e51b815260206004820152602a60248201527f50726f766964656420524c50206c6973742065786365656473206d6178206c6960448201526939ba103632b733ba341760b11b60648201526084016102f2565b60008061141d6040518060400160405280858c600001516114019190611d6d565b8152602001858c602001516114169190611daf565b90526114a3565b5091509150604051806040016040528083836114399190611daf565b8152602001848b6020015161144e9190611daf565b81525085858151811061146357611463611d80565b6020908102919091010152611479600185611daf565b93506114858183611daf565b61148f9084611daf565b92505050611374565b508152949350505050565b6000806000808460000151116114fb5760405162461bcd60e51b815260206004820152601860248201527f524c50206974656d2063616e6e6f74206265206e756c6c2e000000000000000060448201526064016102f2565b6020840151805160001a607f81116115205760006001600094509450945050506117e6565b60b7811161159c576000611535608083611d6d565b90508087600001511161158a5760405162461bcd60e51b815260206004820152601960248201527f496e76616c696420524c502073686f727420737472696e672e0000000000000060448201526064016102f2565b600195509350600092506117e6915050565b60bf811161168b5760006115b160b783611d6d565b9050808760000151116116065760405162461bcd60e51b815260206004820152601f60248201527f496e76616c696420524c50206c6f6e6720737472696e67206c656e6774682e0060448201526064016102f2565b600183015160208290036101000a90046116208183611daf565b88511161166f5760405162461bcd60e51b815260206004820152601860248201527f496e76616c696420524c50206c6f6e6720737472696e672e000000000000000060448201526064016102f2565b61167a826001611daf565b96509450600093506117e692505050565b60f781116117065760006116a060c083611d6d565b9050808760000151116116f55760405162461bcd60e51b815260206004820152601760248201527f496e76616c696420524c502073686f7274206c6973742e00000000000000000060448201526064016102f2565b6001955093508492506117e6915050565b600061171360f783611d6d565b9050808760000151116117685760405162461bcd60e51b815260206004820152601d60248201527f496e76616c696420524c50206c6f6e67206c697374206c656e6774682e00000060448201526064016102f2565b600183015160208290036101000a90046117828183611daf565b8851116117ca5760405162461bcd60e51b815260206004820152601660248201527524b73b30b634b210292628103637b733903634b9ba1760511b60448201526064016102f2565b6117d5826001611daf565b96509450600193506117e692505050565b9193909250565b606060008267ffffffffffffffff81111561180a5761180a611b91565b6040519080825280601f01601f191660200182016040528015611834576020820181803683370190505b50905080516000036118475790506105b4565b8484016020820160005b85811015611869578281015182820152602001611851565b5060006001602087066020036101000a039050808251168119845116178252839450505050509392505050565b60606105df826119f8565b6060816118af81601f611daf565b10156118ee5760405162461bcd60e51b815260206004820152600e60248201526d736c6963655f6f766572666c6f7760901b60448201526064016102f2565b826118f98382611daf565b10156119385760405162461bcd60e51b815260206004820152600e60248201526d736c6963655f6f766572666c6f7760901b60448201526064016102f2565b6119428284611daf565b845110156119865760405162461bcd60e51b8152602060048201526011602482015270736c6963655f6f75744f66426f756e647360781b60448201526064016102f2565b6060821580156119a557604051915060008252602082016040526119ef565b6040519150601f8416801560200281840101858101878315602002848b0101015b818310156119de5780518352602092830192016119c6565b5050858452601f01601f1916604052505b50949350505050565b60606105df8260200151600084600001516117ed565b6001600160a01b038116811461065b57600080fd5b600060208284031215611a3557600080fd5b81356105dc81611a0e565b60008060408385031215611a5357600080fd5b8235611a5e81611a0e565b946020939093013593505050565b600080600080600060808688031215611a8457600080fd5b853594506020860135611a9681611a0e565b935060408601359250606086013567ffffffffffffffff80821115611aba57600080fd5b818801915088601f830112611ace57600080fd5b813581811115611add57600080fd5b896020828501011115611aef57600080fd5b9699959850939650602001949392505050565b600060208284031215611b1457600080fd5b5035919050565b80358015158114611b2b57600080fd5b919050565b600080600060608486031215611b4557600080fd5b8335925060208401359150611b5c60408501611b1b565b90509250925092565b60008060408385031215611b7857600080fd5b82359150611b8860208401611b1b565b90509250929050565b634e487b7160e01b600052604160045260246000fd5b6040805190810167ffffffffffffffff81118282101715611bca57611bca611b91565b60405290565b604051601f8201601f1916810167ffffffffffffffff81118282101715611bf957611bf9611b91565b604052919050565b60006020808385031215611c1457600080fd5b823567ffffffffffffffff80821115611c2c57600080fd5b9084019060408287031215611c4057600080fd5b611c48611ba7565b82358281168114611c5857600080fd5b81528284013582811115611c6b57600080fd5b80840193505086601f840112611c8057600080fd5b823582811115611c9257611c92611b91565b611ca4601f8201601f19168601611bd0565b92508083528785828601011115611cba57600080fd5b8085850186850137600090830185015292830152509392505050565b600060208284031215611ce857600080fd5b5051919050565b600060208284031215611d0157600080fd5b81516105dc81611a0e565b6020808252602b908201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960408201526a6e697469616c697a696e6760a81b606082015260800190565b634e487b7160e01b600052601160045260246000fd5b818103818111156105df576105df611d57565b634e487b7160e01b600052603260045260246000fd5b600060018201611da857611da8611d57565b5060010190565b808201808211156105df576105df611d57565b60ff81811683821601908111156105df576105df611d57565b600060ff831680611dfc57634e487b7160e01b600052601260045260246000fd5b8060ff84160691505092915050565b60ff82811682821603908111156105df576105df611d57565b634e487b7160e01b600052602160045260246000fd5b80820281158282048414176105df576105df611d5756fea2646970667358221220c8e5d2f03cdfd05271211f91051ea017cc78712d374c157f61c7f6293b421c5864736f6c63430008140033", + "balance": "0x0" diff --git a/packages/guardian-prover-health-check/.default.env b/packages/guardian-prover-health-check/.default.env new file mode 100644 index 0000000000..7482b03442 --- /dev/null +++ b/packages/guardian-prover-health-check/.default.env @@ -0,0 +1,13 @@ +HTTP_PORT=4103 +PROMETHEUS_HTTP_PORT=6062 +DATABASE_USER=root +DATABASE_PASSWORD=root +DATABASE_NAME=healthcheck +DATABASE_HOST=localhost:3306 +DATABASE_MAX_IDLE_CONNS=50 +DATABASE_MAX_OPEN_CONNS=3000 +DATABASE_CONN_MAX_LIFETIME_IN_MS=100000 +GUARDIAN_PROVER_CONTRACT_ADDRESS=0x9A9f2CCfdE556A7E9Ff0848998Aa4a0CFD8863AE +GUARDIAN_PROVER_ENDPOINTS=https://guardian-prover-1.internal.taiko.xyz,https://guardian-prover-2.internal.taiko.xyz,https://guardian-prover-3.internal.taiko.xyz,https://guardian-prover-4.internal.taiko.xyz,https://guardian-prover-5.internal.taiko.xyz, +RPC_URL=wss://l1ws.internal.taiko.xyz +INTERVAL=12s \ No newline at end of file diff --git a/packages/guardian-prover-health-check/.generator.env b/packages/guardian-prover-health-check/.generator.env new file mode 100644 index 0000000000..80211abf57 --- /dev/null +++ b/packages/guardian-prover-health-check/.generator.env @@ -0,0 +1,12 @@ +HTTP_PORT=4103 +METRICS_HTTP_PORT=6044 +DATABASE_USER=root +DATABASE_PASSWORD=root +DATABASE_NAME=healthcheck +DATABASE_HOST=localhost:3306 +DATABASE_MAX_IDLE_CONNS=50 +DATABASE_MAX_OPEN_CONNS=3000 +DATABASE_CONN_MAX_LIFETIME_IN_MS=100000 +REGENERATE=false +GENESIS_DATE=2023-11-03 +INTERVAL=12s \ No newline at end of file diff --git a/packages/guardian-prover-health-check/.gitignore b/packages/guardian-prover-health-check/.gitignore new file mode 100644 index 0000000000..e3b802550a --- /dev/null +++ b/packages/guardian-prover-health-check/.gitignore @@ -0,0 +1,45 @@ +.netrc +.env +main +coverage.txt + +# Local .terraform directories +.terraform + +# .tfstate files +*.tfstate +*.tfstate.* + +# Crash log files +crash.log + +# Exclude all .tfvars files, which are likely to contain sentitive data, such as +# password, private keys, and other secrets. These should not be part of version +# control as they are data points which are potentially sensitive and subject +# to change depending on the environment. +# +*.tfvars + +# Ignore override files as they are usually used to override resources locally and so +# are not checked in +override.tf +override.tf.json +*_override.tf +*_override.tf.json + +# Include override files you do wish to add to version control using negated pattern +# +# !example_override.tf + +# Include tfplan files to ignore the plan output of command: terraform plan -out=tfplan +# example: *tfplan* + +# Ignore CLI configuration files +.terraformrc +terraform.rc + +.idea + +Bridge.json +TaikoL2.json +IHeaderSync.json \ No newline at end of file diff --git a/packages/guardian-prover-health-check/.golangci.yml b/packages/guardian-prover-health-check/.golangci.yml new file mode 100644 index 0000000000..010e197cd3 --- /dev/null +++ b/packages/guardian-prover-health-check/.golangci.yml @@ -0,0 +1,48 @@ +# See: https://golangci-lint.run/usage/configuration/ +# +# Note: for VSCode, you must have the following settings to use this configuration: +# +# "go.lintTool": "golangci-lint", +# "go.lintFlags": [ +# "--fast", +# "--config=${workspaceFolder}/.golangci.yml" +# ], + +output: + format: colored-line-number + +linters: + enable: + - errcheck + - funlen + - gocognit + - gocritic + - gofmt + # - revive + # - gosec + - gosimple + - lll + - unused + - whitespace + - wsl + +linters-settings: + funlen: + lines: 250 + statements: 80 + gocognit: + min-complexity: 55 + +issues: + exclude-rules: + # Exclude some linters from running on tests files. + - path: _test\.go + linters: + - funlen + - path: / + linters: + - typecheck + +run: + skip-dirs: + - contracts/* diff --git a/packages/guardian-prover-health-check/CHANGELOG.md b/packages/guardian-prover-health-check/CHANGELOG.md new file mode 100644 index 0000000000..3d809e6770 --- /dev/null +++ b/packages/guardian-prover-health-check/CHANGELOG.md @@ -0,0 +1,194 @@ +# Changelog + +## [0.12.0](https://github.com/taikoxyz/taiko-mono/compare/relayer-v0.11.0...relayer-v0.12.0) (2023-10-18) + + +### Features + +* **eventindexer:** API documentation, swagger, github pages ([#14948](https://github.com/taikoxyz/taiko-mono/issues/14948)) ([5455267](https://github.com/taikoxyz/taiko-mono/commit/54552674fe8a6b0b4321afe1ef4d90d00d62f0e8)) + + +### Bug Fixes + +* **eventindexer:** update config tests ([#14912](https://github.com/taikoxyz/taiko-mono/issues/14912)) ([beab49b](https://github.com/taikoxyz/taiko-mono/commit/beab49bd8f085b1e285fb3a16e9b493f3c5f5932)) +* **relayer:** ERC1155 bridging, amount => amounts ([#14959](https://github.com/taikoxyz/taiko-mono/issues/14959)) ([d42c59d](https://github.com/taikoxyz/taiko-mono/commit/d42c59d5150c9c41941458e25fac75121d73da76)) + +## [0.11.0](https://github.com/taikoxyz/taiko-mono/compare/relayer-v0.10.0...relayer-v0.11.0) (2023-09-25) + + +### Features + +* **eventindexer:** Track proposer/prover rewards, + generate tasks for total/per day ([#14690](https://github.com/taikoxyz/taiko-mono/issues/14690)) ([cc477b9](https://github.com/taikoxyz/taiko-mono/commit/cc477b97c00e8339a87c4d4502a0ee8ad811c10f)) +* **relayer:** fix cost calculation for isProfitable ([#14767](https://github.com/taikoxyz/taiko-mono/issues/14767)) ([8e1c897](https://github.com/taikoxyz/taiko-mono/commit/8e1c89748fcb42e354d2219ceac2be1c668bcf31)) +* **relayer:** queue processor Prefetch ([#14765](https://github.com/taikoxyz/taiko-mono/issues/14765)) ([a37797a](https://github.com/taikoxyz/taiko-mono/commit/a37797a6115fda37e933b0742881649a411a29ef)) +* **relayer:** Relayer indexer/processor separation and refactor, messaging queue ([#14605](https://github.com/taikoxyz/taiko-mono/issues/14605)) ([15b0e50](https://github.com/taikoxyz/taiko-mono/commit/15b0e50c130687cac32eef97ba5f396f79ad933f)) +* **relayer:** support L2-L2 bridging ([#14711](https://github.com/taikoxyz/taiko-mono/issues/14711)) ([1410217](https://github.com/taikoxyz/taiko-mono/commit/1410217363077ea6179080fca4a7aeadc6c7d149)) + + +### Bug Fixes + +* **relayer:** Relayer cors flag was not being used ([#14661](https://github.com/taikoxyz/taiko-mono/issues/14661)) ([19f35f7](https://github.com/taikoxyz/taiko-mono/commit/19f35f74e8a955c2776defe6e5cac48a9b6456a3)) +* **relayer:** Relayer paid gas ([#14748](https://github.com/taikoxyz/taiko-mono/issues/14748)) ([b4cb3ff](https://github.com/taikoxyz/taiko-mono/commit/b4cb3ffe9d4bad67682a8217621b8b67cb263f65)) + +## [0.10.0](https://github.com/taikoxyz/taiko-mono/compare/relayer-v0.9.1...relayer-v0.10.0) (2023-09-05) + + +### Features + +* **eventindexer:** Eventindexer and relayer a5 updates ([#14597](https://github.com/taikoxyz/taiko-mono/issues/14597)) ([87c9d53](https://github.com/taikoxyz/taiko-mono/commit/87c9d53fa9c6911aada78a1746839d14e4401916)) + + +### Bug Fixes + +* **relayer:** Eth bridge ([#14609](https://github.com/taikoxyz/taiko-mono/issues/14609)) ([f5207ae](https://github.com/taikoxyz/taiko-mono/commit/f5207ae19c48d9aaa83dab2739cd05d9c2985112)) + +## [0.9.1](https://github.com/taikoxyz/taiko-mono/compare/relayer-v0.9.0...relayer-v0.9.1) (2023-08-22) + + +### Bug Fixes + +* **relayer:** use erc20vault not token vault for required end var ([#14519](https://github.com/taikoxyz/taiko-mono/issues/14519)) ([a49c65c](https://github.com/taikoxyz/taiko-mono/commit/a49c65c6ba9535a761f4ef2abd7be2b2213a71c2)) + +## [0.9.0](https://github.com/taikoxyz/taiko-mono/compare/relayer-v0.8.0...relayer-v0.9.0) (2023-08-15) + + +### Features + +* **eventindexer:** Index nfts ([#14418](https://github.com/taikoxyz/taiko-mono/issues/14418)) ([364b09b](https://github.com/taikoxyz/taiko-mono/commit/364b09b52344dff8782be7333eac4fdb3e5d1597)) +* **protocol:** alpha-4 with staking-based tokenomics ([#14065](https://github.com/taikoxyz/taiko-mono/issues/14065)) ([1eeba9d](https://github.com/taikoxyz/taiko-mono/commit/1eeba9d97ed8e6e4a8d07a8b0af163a16fbc9ccf)) + +## [0.8.0](https://github.com/taikoxyz/taiko-mono/compare/relayer-v0.7.0...relayer-v0.8.0) (2023-06-26) + + +### Features + +* **protocol:** use ring buffer for ETH deposit and optimize storage ([#13868](https://github.com/taikoxyz/taiko-mono/issues/13868)) ([acffb61](https://github.com/taikoxyz/taiko-mono/commit/acffb61b13b44fd4792e8f4a31498d788ca38961)) +* **relayer:** use gas tip cap if available ([#14024](https://github.com/taikoxyz/taiko-mono/issues/14024)) ([773331b](https://github.com/taikoxyz/taiko-mono/commit/773331bebb509ef66f3a9aab51a8927432e11dc3)) + + +### Bug Fixes + +* **relayer:** cancel waiting for receipts ([#14019](https://github.com/taikoxyz/taiko-mono/issues/14019)) ([c9fcffe](https://github.com/taikoxyz/taiko-mono/commit/c9fcffe1d1227219b244b97555e96a49a865f868)) +* **relayer:** fix scanning blocks twice ([#14047](https://github.com/taikoxyz/taiko-mono/issues/14047)) ([9ee6723](https://github.com/taikoxyz/taiko-mono/commit/9ee67238eccc5218346f7cbcf936a76919bf7ae4)) +* **relayer:** make sure to return nil for first by msg hash ([#13967](https://github.com/taikoxyz/taiko-mono/issues/13967)) ([bf69226](https://github.com/taikoxyz/taiko-mono/commit/bf692264ede4545089515372002ee176e0783729)) +* **relayer:** only need to find first msg hash ([#13966](https://github.com/taikoxyz/taiko-mono/issues/13966)) ([87c6e20](https://github.com/taikoxyz/taiko-mono/commit/87c6e20340757d3bdd6075afb8b5cd264cc511a3)) +* **relayer:** relayer is slow due to inefficient indexing in sql ([#13964](https://github.com/taikoxyz/taiko-mono/issues/13964)) ([edd643c](https://github.com/taikoxyz/taiko-mono/commit/edd643cda2ba883d8060ea4921b726b499927575)) +* **relayer:** Relayer reorg ([#14033](https://github.com/taikoxyz/taiko-mono/issues/14033)) ([4794f45](https://github.com/taikoxyz/taiko-mono/commit/4794f45006aff0287bc6cf4630910a1ec3a01fbd)) +* **relayer:** return nil, not error, if we dont have a previous msghash ([#13968](https://github.com/taikoxyz/taiko-mono/issues/13968)) ([22a1171](https://github.com/taikoxyz/taiko-mono/commit/22a1171a151e26f136771b8bc303bbfefe1dcca8)) + +## [0.7.0](https://github.com/taikoxyz/taiko-mono/compare/relayer-v0.6.0...relayer-v0.7.0) (2023-06-12) + + +### Features + +* **eventindexer:** handle reorg ([#13841](https://github.com/taikoxyz/taiko-mono/issues/13841)) ([0a26ce5](https://github.com/taikoxyz/taiko-mono/commit/0a26ce58422d2674f1b5cd151c74bb40f2bec17d)) +* **status-page:** updates for a3 ([#13821](https://github.com/taikoxyz/taiko-mono/issues/13821)) ([7ed816d](https://github.com/taikoxyz/taiko-mono/commit/7ed816d8db7ac75468faa235c09f147db5009034)) + +## [0.6.0](https://github.com/taikoxyz/taiko-mono/compare/relayer-v0.5.0...relayer-v0.6.0) (2023-05-26) + + +### Features + +* **eventindexer:** add stats tracking ([#13810](https://github.com/taikoxyz/taiko-mono/issues/13810)) ([bfbbb97](https://github.com/taikoxyz/taiko-mono/commit/bfbbb97fcb67dc33749f0f08f84b8bd54eae9aeb)) +* **relayer:** hardcode gas limit to determine if a message needs extra gas to deploy a contract ([#13764](https://github.com/taikoxyz/taiko-mono/issues/13764)) ([0615bf6](https://github.com/taikoxyz/taiko-mono/commit/0615bf6dfc9d5109c7a70d55dd57e79c2a69925f)) + + +### Bug Fixes + +* **protocol:** rename treasure to treasury ([#13780](https://github.com/taikoxyz/taiko-mono/issues/13780)) ([ccecd70](https://github.com/taikoxyz/taiko-mono/commit/ccecd708276bce3eca84b92c7c48c95b2156dd18)) +* **relayer:** catch relayer message processing up to latest protocol changes ([#13746](https://github.com/taikoxyz/taiko-mono/issues/13746)) ([e3746ee](https://github.com/taikoxyz/taiko-mono/commit/e3746ee1980dade609ac190d27183a6a5b94f4df)) +* **relayer:** Out of gas ([#13778](https://github.com/taikoxyz/taiko-mono/issues/13778)) ([a42a33b](https://github.com/taikoxyz/taiko-mono/commit/a42a33b30bc0daec707ff51cc639c966642e50ca)) + +## [0.5.0](https://github.com/taikoxyz/taiko-mono/compare/relayer-v0.4.1...relayer-v0.5.0) (2023-05-11) + + +### Features + +* **protocol:** major protocol upgrade for alpha-3 testnet ([#13640](https://github.com/taikoxyz/taiko-mono/issues/13640)) ([02552f2](https://github.com/taikoxyz/taiko-mono/commit/02552f2aa001893d326062ce627004c61b46cd26)) + +## [0.4.1](https://github.com/taikoxyz/taiko-mono/compare/relayer-v0.4.0...relayer-v0.4.1) (2023-04-08) + + +### Bug Fixes + +* **repo:** fix multiple typos ([#13558](https://github.com/taikoxyz/taiko-mono/issues/13558)) ([f54242a](https://github.com/taikoxyz/taiko-mono/commit/f54242aa95e5c5563f8f0a7f9af0a1eab20ab67b)) + +## [0.4.0](https://github.com/taikoxyz/taiko-mono/compare/relayer-v0.3.0...relayer-v0.4.0) (2023-03-29) + + +### Features + +* **eventindexer:** Event indexer ([#13439](https://github.com/taikoxyz/taiko-mono/issues/13439)) ([08b26d2](https://github.com/taikoxyz/taiko-mono/commit/08b26d21577ed8ecd14beed5a600108fe7a0f765)) +* **protocol:** merge alpha 2 to main ([#13369](https://github.com/taikoxyz/taiko-mono/issues/13369)) ([2b9cc64](https://github.com/taikoxyz/taiko-mono/commit/2b9cc6466509372f35109b48c00948d2234b0d59)) +* **relayer:** add failed status to Stringer interface impl for eventstatus ([#13495](https://github.com/taikoxyz/taiko-mono/issues/13495)) ([858f485](https://github.com/taikoxyz/taiko-mono/commit/858f485a858a59fe196de22a3d4eed78278ba4a4)) +* **relayer:** big Gas price ([#13492](https://github.com/taikoxyz/taiko-mono/issues/13492)) ([cb3f7b9](https://github.com/taikoxyz/taiko-mono/commit/cb3f7b9529addc25fe4d3067f2e2c3da3ae1b2bf)) +* **relayer:** handle fail status ([#13493](https://github.com/taikoxyz/taiko-mono/issues/13493)) ([dfac2c4](https://github.com/taikoxyz/taiko-mono/commit/dfac2c4cf84d247f4aa1434e52e403d18253951a)) +* **relayer:** merge alpha-2 to main ([#13376](https://github.com/taikoxyz/taiko-mono/issues/13376)) ([3148f6b](https://github.com/taikoxyz/taiko-mono/commit/3148f6ba955e1b3918289332d2ee30f139edea8b)) + + +### Bug Fixes + +* **relayer:** 3m => 1.5 gas ([#13494](https://github.com/taikoxyz/taiko-mono/issues/13494)) ([02a582e](https://github.com/taikoxyz/taiko-mono/commit/02a582ebda4a8993c4fad221e88e2b65d57ceb25)) +* **relayer:** new abi gen bindings ([#13342](https://github.com/taikoxyz/taiko-mono/issues/13342)) ([8655ff1](https://github.com/taikoxyz/taiko-mono/commit/8655ff16f3de7445f01b4fd502d183d93e394e1a)) + +## [0.3.0](https://github.com/taikoxyz/taiko-mono/compare/relayer-v0.2.1...relayer-v0.3.0) (2023-03-15) + + +### Features + +* **relayer:** add msgHash and event type lookups to findallbyaddress ([#13310](https://github.com/taikoxyz/taiko-mono/issues/13310)) ([8b753ee](https://github.com/taikoxyz/taiko-mono/commit/8b753ee07eeee51adf48e72343b62abcde3b2338)) +* **relayer:** Event filter ([#13318](https://github.com/taikoxyz/taiko-mono/issues/13318)) ([f20d419](https://github.com/taikoxyz/taiko-mono/commit/f20d4195ac9d700dfd4a51192232c3fe7c4c0b43)) +* **relayer:** MessageStatusChanged events ([#13272](https://github.com/taikoxyz/taiko-mono/issues/13272)) ([f5f4fc4](https://github.com/taikoxyz/taiko-mono/commit/f5f4fc4af16520a34e805e8f16c50e0de4902815)) +* **relayer:** Pagination ([#13311](https://github.com/taikoxyz/taiko-mono/issues/13311)) ([9350006](https://github.com/taikoxyz/taiko-mono/commit/9350006aefa8f6423c663ea3a0377f7334a5b749)) + + +### Bug Fixes + +* **relayer:** estimate gas for tx, set gas to 2.5mil if not estimatable. works now. ([#13271](https://github.com/taikoxyz/taiko-mono/issues/13271)) ([3913ca5](https://github.com/taikoxyz/taiko-mono/commit/3913ca52242913dfb9502488f0a5558724f9ef2b)) + +## [0.2.1](https://github.com/taikoxyz/taiko-mono/compare/relayer-v0.2.0...relayer-v0.2.1) (2023-03-01) + + +### Bug Fixes + +* **relayer:** estimate gas, now that gas estimation works again ([#13176](https://github.com/taikoxyz/taiko-mono/issues/13176)) ([b7ae677](https://github.com/taikoxyz/taiko-mono/commit/b7ae677ec2d84dce3e3ae50d369bf31dedc547c3)) +* **relayer:** Save block progress when caught up and subscribing to new events ([#13177](https://github.com/taikoxyz/taiko-mono/issues/13177)) ([5ef2c0f](https://github.com/taikoxyz/taiko-mono/commit/5ef2c0f5d78764189d168aa527cec62238f1d6c6)) + +## [0.2.0](https://github.com/taikoxyz/taiko-mono/compare/relayer-v0.1.0...relayer-v0.2.0) (2023-02-15) + + +### Features + +* **protocol:** change statevariables to return a struct ([#13113](https://github.com/taikoxyz/taiko-mono/issues/13113)) ([0bffeb0](https://github.com/taikoxyz/taiko-mono/commit/0bffeb0f3d17938bf2146772962719ae21ce22fa)) +* **relayer:** catch relayer & status page up to new testnet ([#13114](https://github.com/taikoxyz/taiko-mono/issues/13114)) ([543f242](https://github.com/taikoxyz/taiko-mono/commit/543f242bfbf18b155f3476c2d172e79d3041ffc9)) +* **relayer:** prepare bridge relayer API for frontend ([#13124](https://github.com/taikoxyz/taiko-mono/issues/13124)) ([ef1f691](https://github.com/taikoxyz/taiko-mono/commit/ef1f691ac9e6b3138b1ee80bc7bebcf53b749581)) + +## [0.1.0](https://github.com/taikoxyz/taiko-mono/compare/relayer-v0.0.1...relayer-v0.1.0) (2023-01-19) + + +### Features + +* **bridge-ui:** process message ([#387](https://github.com/taikoxyz/taiko-mono/issues/387)) ([d1781c0](https://github.com/taikoxyz/taiko-mono/commit/d1781c0107110e70c87e76d3fc1f6a9bc2aa1a46)) +* **bridge:** add faucet link to announcement ([#485](https://github.com/taikoxyz/taiko-mono/issues/485)) ([d1a4921](https://github.com/taikoxyz/taiko-mono/commit/d1a492183fd4ab8f195697864f54c35349dca93d)) +* **bridge:** bridge design ([#369](https://github.com/taikoxyz/taiko-mono/issues/369)) ([04702db](https://github.com/taikoxyz/taiko-mono/commit/04702db23e3fd705133408e077b8d1a040951202)) +* **bridge:** bridge transactions ([#411](https://github.com/taikoxyz/taiko-mono/issues/411)) ([19dd7ab](https://github.com/taikoxyz/taiko-mono/commit/19dd7abd4a2f5bc83e43d31938e43501472ff108)) +* **bridge:** implement the bridge relayer ([#191](https://github.com/taikoxyz/taiko-mono/issues/191)) ([9f49e4c](https://github.com/taikoxyz/taiko-mono/commit/9f49e4c87304853c9d94693434d23a6b8258eac6)) +* implement release-please workflow ([#12967](https://github.com/taikoxyz/taiko-mono/issues/12967)) ([b0c8b60](https://github.com/taikoxyz/taiko-mono/commit/b0c8b60da0af3160db758f83c1f6368a3a712593)) +* **protocol:** implement & simulate tokenomics ([#376](https://github.com/taikoxyz/taiko-mono/issues/376)) ([191eb11](https://github.com/taikoxyz/taiko-mono/commit/191eb110990d60b49883eb3f3d7841c33421d067)) +* **relayer:** Allow resync flag option to restart processing from block 0 ([#266](https://github.com/taikoxyz/taiko-mono/issues/266)) ([6b01cbe](https://github.com/taikoxyz/taiko-mono/commit/6b01cbe986d61795fc9a2ef256dbe85409251720)) +* **relayer:** Asynchronous message processing, error handling, nonce management, and indexer folder structuring ([#259](https://github.com/taikoxyz/taiko-mono/issues/259)) ([ed6d551](https://github.com/taikoxyz/taiko-mono/commit/ed6d551744965440153eaa7a8c42c887fa26938c)) +* **relayer:** header sync check before processing messages ([#441](https://github.com/taikoxyz/taiko-mono/issues/441)) ([e9fda8b](https://github.com/taikoxyz/taiko-mono/commit/e9fda8bb80ecfefcfd7d64062b50ebf5b5eec2ef)) +* **relayer:** HTTP api for exposing events table for bridge UI ([#271](https://github.com/taikoxyz/taiko-mono/issues/271)) ([7b5e6b8](https://github.com/taikoxyz/taiko-mono/commit/7b5e6b809c0e2f6a8615896d57e2b0d2db98c80b)) +* **relayer:** only process profitable transactions ([#408](https://github.com/taikoxyz/taiko-mono/issues/408)) ([b5d8180](https://github.com/taikoxyz/taiko-mono/commit/b5d81802e32b038b5bcdd26f233b0cd4b3eca3fa)) +* **relayer:** run in http only mode, so we can scale up if necessary for requests and only have one indexer ([6500234](https://github.com/taikoxyz/taiko-mono/commit/6500234991702b203e6e8baeb496e5473b631f83)) +* **relayer:** Wait N confirmations on source chain before processing message on destination chain ([#270](https://github.com/taikoxyz/taiko-mono/issues/270)) ([7ab1291](https://github.com/taikoxyz/taiko-mono/commit/7ab129193f3e08faf04cd1b7e09b5b5994636775)) + + +### Bug Fixes + +* **bridge-ui:** Eth fix ([#475](https://github.com/taikoxyz/taiko-mono/issues/475)) ([08175b8](https://github.com/taikoxyz/taiko-mono/commit/08175b803aaabdf6195f5a7a3ed8e0baf9558cc5)) +* **protocol:** Remove enableDestChain functionality ([#12341](https://github.com/taikoxyz/taiko-mono/issues/12341)) ([362d083](https://github.com/taikoxyz/taiko-mono/commit/362d083497cc74b3bcd05a406beeff2101a422ef)) +* **relayer:** fix migrations ([#300](https://github.com/taikoxyz/taiko-mono/issues/300)) ([151415e](https://github.com/taikoxyz/taiko-mono/commit/151415e71f2b6ac62c607d5cc928fa258064a679)) +* **relayer:** gas limit + use loading as priorioty on bridge form ([#487](https://github.com/taikoxyz/taiko-mono/issues/487)) ([3747d4c](https://github.com/taikoxyz/taiko-mono/commit/3747d4c41e836ab533e864ec44073ae681bf4b36)) +* **relayer:** save block by chain id ([#379](https://github.com/taikoxyz/taiko-mono/issues/379)) ([608e3e3](https://github.com/taikoxyz/taiko-mono/commit/608e3e3723586f8b412d71118d15f6bab86ad596)) +* **tests:** cleanup tests to prepare for tokenomics testing ([#11316](https://github.com/taikoxyz/taiko-mono/issues/11316)) ([d63fae3](https://github.com/taikoxyz/taiko-mono/commit/d63fae30f1e3415d6f377adeab90c062fed5ad42)) diff --git a/packages/guardian-prover-health-check/GuardianProver.json b/packages/guardian-prover-health-check/GuardianProver.json new file mode 100644 index 0000000000..8348d1ff4d --- /dev/null +++ b/packages/guardian-prover-health-check/GuardianProver.json @@ -0,0 +1,552 @@ +[ + { + "inputs": [], + "name": "INVALID_GUARDIAN", + "type": "error" + }, + { + "inputs": [], + "name": "INVALID_GUARDIAN_SET", + "type": "error" + }, + { + "inputs": [], + "name": "INVALID_PAUSE_STATUS", + "type": "error" + }, + { + "inputs": [], + "name": "INVALID_PROOF", + "type": "error" + }, + { + "inputs": [], + "name": "PROVING_FAILED", + "type": "error" + }, + { + "inputs": [], + "name": "REENTRANT_CALL", + "type": "error" + }, + { + "inputs": [], + "name": "RESOLVER_DENIED", + "type": "error" + }, + { + "inputs": [], + "name": "RESOLVER_INVALID_MANAGER", + "type": "error" + }, + { + "inputs": [], + "name": "RESOLVER_UNEXPECTED_CHAINID", + "type": "error" + }, + { + "inputs": [ + { + "internalType": "uint64", + "name": "chainId", + "type": "uint64" + }, + { + "internalType": "string", + "name": "name", + "type": "string" + } + ], + "name": "RESOLVER_ZERO_ADDR", + "type": "error" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "uint64", + "name": "blockId", + "type": "uint64" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "approvalBits", + "type": "uint256" + }, + { + "indexed": false, + "internalType": "bool", + "name": "proofSubmitted", + "type": "bool" + } + ], + "name": "Approved", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "address[5]", + "name": "", + "type": "address[5]" + } + ], + "name": "GuardiansUpdated", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "uint8", + "name": "version", + "type": "uint8" + } + ], + "name": "Initialized", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "previousOwner", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "newOwner", + "type": "address" + } + ], + "name": "OwnershipTransferStarted", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "previousOwner", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "newOwner", + "type": "address" + } + ], + "name": "OwnershipTransferred", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "address", + "name": "account", + "type": "address" + } + ], + "name": "Paused", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "address", + "name": "account", + "type": "address" + } + ], + "name": "Unpaused", + "type": "event" + }, + { + "inputs": [], + "name": "NUM_GUARDIANS", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "REQUIRED_GUARDIANS", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "acceptOwnership", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [], + "name": "addressManager", + "outputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "bytes32", + "name": "", + "type": "bytes32" + } + ], + "name": "approvals", + "outputs": [ + { + "internalType": "uint256", + "name": "approvalBits", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "components": [ + { + "internalType": "bytes32", + "name": "l1Hash", + "type": "bytes32" + }, + { + "internalType": "bytes32", + "name": "difficulty", + "type": "bytes32" + }, + { + "internalType": "bytes32", + "name": "blobHash", + "type": "bytes32" + }, + { + "internalType": "bytes32", + "name": "extraData", + "type": "bytes32" + }, + { + "internalType": "bytes32", + "name": "depositsHash", + "type": "bytes32" + }, + { + "internalType": "address", + "name": "coinbase", + "type": "address" + }, + { + "internalType": "uint64", + "name": "id", + "type": "uint64" + }, + { + "internalType": "uint32", + "name": "gasLimit", + "type": "uint32" + }, + { + "internalType": "uint64", + "name": "timestamp", + "type": "uint64" + }, + { + "internalType": "uint64", + "name": "l1Height", + "type": "uint64" + }, + { + "internalType": "uint16", + "name": "minTier", + "type": "uint16" + }, + { + "internalType": "bool", + "name": "blobUsed", + "type": "bool" + } + ], + "internalType": "struct TaikoData.BlockMetadata", + "name": "meta", + "type": "tuple" + }, + { + "components": [ + { + "internalType": "bytes32", + "name": "parentHash", + "type": "bytes32" + }, + { + "internalType": "bytes32", + "name": "blockHash", + "type": "bytes32" + }, + { + "internalType": "bytes32", + "name": "signalRoot", + "type": "bytes32" + }, + { + "internalType": "bytes32", + "name": "graffiti", + "type": "bytes32" + } + ], + "internalType": "struct TaikoData.Transition", + "name": "tran", + "type": "tuple" + }, + { + "components": [ + { + "internalType": "uint16", + "name": "tier", + "type": "uint16" + }, + { + "internalType": "bytes", + "name": "data", + "type": "bytes" + } + ], + "internalType": "struct TaikoData.TierProof", + "name": "proof", + "type": "tuple" + } + ], + "name": "approve", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "guardian", + "type": "address" + } + ], + "name": "guardianIds", + "outputs": [ + { + "internalType": "uint256", + "name": "id", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "name": "guardians", + "outputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "_addressManager", + "type": "address" + } + ], + "name": "init", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [], + "name": "owner", + "outputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "pause", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [], + "name": "paused", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "pendingOwner", + "outputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "renounceOwnership", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint64", + "name": "chainId", + "type": "uint64" + }, + { + "internalType": "bytes32", + "name": "name", + "type": "bytes32" + }, + { + "internalType": "bool", + "name": "allowZeroAddress", + "type": "bool" + } + ], + "name": "resolve", + "outputs": [ + { + "internalType": "address payable", + "name": "addr", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "bytes32", + "name": "name", + "type": "bytes32" + }, + { + "internalType": "bool", + "name": "allowZeroAddress", + "type": "bool" + } + ], + "name": "resolve", + "outputs": [ + { + "internalType": "address payable", + "name": "addr", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address[5]", + "name": "_guardians", + "type": "address[5]" + } + ], + "name": "setGuardians", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "newOwner", + "type": "address" + } + ], + "name": "transferOwnership", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [], + "name": "unpause", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + } +] diff --git a/packages/guardian-prover-health-check/README.md b/packages/guardian-prover-health-check/README.md new file mode 100644 index 0000000000..9bbbcf78c6 --- /dev/null +++ b/packages/guardian-prover-health-check/README.md @@ -0,0 +1,40 @@ +[![Golang](https://github.com/taikoxyz/taiko-mono/actions/workflows/golang.yml/badge.svg)](https://github.com/taikoxyz/taiko-mono/actions/workflows/golang.yml) +[![GuardianProverHealthCheck](https://codecov.io/gh/taikoxyz/taiko-mono/branch/main/graph/badge.svg?token=E468X2PTJC&flag=guardianproverhealthcheck)](https://codecov.io/gh/taikoxyz/taiko-mono) + +# Guardian Prover Health Check Service + +A service that watches the guardian provers and pings them for uptime availability metrics. + +## Build the source + +Building the `taiko-client` binary requires a Go compiler. Once installed, run: + +```sh +make build +``` + +## Configuration + +Run migrations: +`cd migrations` +`goose mysql "user:pass@/dbname?parseTime=true" up` + +To run the health check service: +`ENV_FILE=.env go run cmd/main.go healthchecker` + +To run the stats generator: +`ENV_FILE=.generator.env go run cmd/main.go generator` + +## Usage + +Review all available sub-commands: + +```sh +bin/guardian-prover-health-check --help +``` + +Review each sub-command's command line flags: + +```sh +bin/guardian-prover-health-check --help +``` diff --git a/packages/guardian-prover-health-check/bindings/guardianprover/GuardianProver.go b/packages/guardian-prover-health-check/bindings/guardianprover/GuardianProver.go new file mode 100644 index 0000000000..31628eab56 --- /dev/null +++ b/packages/guardian-prover-health-check/bindings/guardianprover/GuardianProver.go @@ -0,0 +1,1708 @@ +// Code generated - DO NOT EDIT. +// This file is a generated binding and any manual changes will be lost. + +package guardianprover + +import ( + "errors" + "math/big" + "strings" + + ethereum "github.com/ethereum/go-ethereum" + "github.com/ethereum/go-ethereum/accounts/abi" + "github.com/ethereum/go-ethereum/accounts/abi/bind" + "github.com/ethereum/go-ethereum/common" + "github.com/ethereum/go-ethereum/core/types" + "github.com/ethereum/go-ethereum/event" +) + +// Reference imports to suppress errors if they are not otherwise used. +var ( + _ = errors.New + _ = big.NewInt + _ = strings.NewReader + _ = ethereum.NotFound + _ = bind.Bind + _ = common.Big1 + _ = types.BloomLookup + _ = event.NewSubscription + _ = abi.ConvertType +) + +// TaikoDataBlockMetadata is an auto generated low-level Go binding around an user-defined struct. +type TaikoDataBlockMetadata struct { + L1Hash [32]byte + Difficulty [32]byte + BlobHash [32]byte + ExtraData [32]byte + DepositsHash [32]byte + Coinbase common.Address + Id uint64 + GasLimit uint32 + Timestamp uint64 + L1Height uint64 + MinTier uint16 + BlobUsed bool +} + +// TaikoDataTierProof is an auto generated low-level Go binding around an user-defined struct. +type TaikoDataTierProof struct { + Tier uint16 + Data []byte +} + +// TaikoDataTransition is an auto generated low-level Go binding around an user-defined struct. +type TaikoDataTransition struct { + ParentHash [32]byte + BlockHash [32]byte + SignalRoot [32]byte + Graffiti [32]byte +} + +// GuardianProverMetaData contains all meta data concerning the GuardianProver contract. +var GuardianProverMetaData = &bind.MetaData{ + ABI: "[{\"inputs\":[],\"name\":\"INVALID_GUARDIAN\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"INVALID_GUARDIAN_SET\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"INVALID_PAUSE_STATUS\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"INVALID_PROOF\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"PROVING_FAILED\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"REENTRANT_CALL\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"RESOLVER_DENIED\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"RESOLVER_INVALID_MANAGER\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"RESOLVER_UNEXPECTED_CHAINID\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"chainId\",\"type\":\"uint64\"},{\"internalType\":\"string\",\"name\":\"name\",\"type\":\"string\"}],\"name\":\"RESOLVER_ZERO_ADDR\",\"type\":\"error\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint64\",\"name\":\"blockId\",\"type\":\"uint64\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"approvalBits\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"bool\",\"name\":\"proofSubmitted\",\"type\":\"bool\"}],\"name\":\"Approved\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address[5]\",\"name\":\"\",\"type\":\"address[5]\"}],\"name\":\"GuardiansUpdated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint8\",\"name\":\"version\",\"type\":\"uint8\"}],\"name\":\"Initialized\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"previousOwner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"newOwner\",\"type\":\"address\"}],\"name\":\"OwnershipTransferStarted\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"previousOwner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"newOwner\",\"type\":\"address\"}],\"name\":\"OwnershipTransferred\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"Paused\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"Unpaused\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"NUM_GUARDIANS\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"REQUIRED_GUARDIANS\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"acceptOwnership\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"addressManager\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"name\":\"approvals\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"approvalBits\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"bytes32\",\"name\":\"l1Hash\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"difficulty\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"blobHash\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"extraData\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"depositsHash\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"coinbase\",\"type\":\"address\"},{\"internalType\":\"uint64\",\"name\":\"id\",\"type\":\"uint64\"},{\"internalType\":\"uint32\",\"name\":\"gasLimit\",\"type\":\"uint32\"},{\"internalType\":\"uint64\",\"name\":\"timestamp\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"l1Height\",\"type\":\"uint64\"},{\"internalType\":\"uint16\",\"name\":\"minTier\",\"type\":\"uint16\"},{\"internalType\":\"bool\",\"name\":\"blobUsed\",\"type\":\"bool\"}],\"internalType\":\"structTaikoData.BlockMetadata\",\"name\":\"meta\",\"type\":\"tuple\"},{\"components\":[{\"internalType\":\"bytes32\",\"name\":\"parentHash\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"blockHash\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"signalRoot\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"graffiti\",\"type\":\"bytes32\"}],\"internalType\":\"structTaikoData.Transition\",\"name\":\"tran\",\"type\":\"tuple\"},{\"components\":[{\"internalType\":\"uint16\",\"name\":\"tier\",\"type\":\"uint16\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"internalType\":\"structTaikoData.TierProof\",\"name\":\"proof\",\"type\":\"tuple\"}],\"name\":\"approve\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"guardian\",\"type\":\"address\"}],\"name\":\"guardianIds\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"id\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"name\":\"guardians\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_addressManager\",\"type\":\"address\"}],\"name\":\"init\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"owner\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"pause\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"paused\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"pendingOwner\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"renounceOwnership\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"chainId\",\"type\":\"uint64\"},{\"internalType\":\"bytes32\",\"name\":\"name\",\"type\":\"bytes32\"},{\"internalType\":\"bool\",\"name\":\"allowZeroAddress\",\"type\":\"bool\"}],\"name\":\"resolve\",\"outputs\":[{\"internalType\":\"addresspayable\",\"name\":\"addr\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"name\",\"type\":\"bytes32\"},{\"internalType\":\"bool\",\"name\":\"allowZeroAddress\",\"type\":\"bool\"}],\"name\":\"resolve\",\"outputs\":[{\"internalType\":\"addresspayable\",\"name\":\"addr\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address[5]\",\"name\":\"_guardians\",\"type\":\"address[5]\"}],\"name\":\"setGuardians\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"newOwner\",\"type\":\"address\"}],\"name\":\"transferOwnership\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"unpause\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}]", +} + +// GuardianProverABI is the input ABI used to generate the binding from. +// Deprecated: Use GuardianProverMetaData.ABI instead. +var GuardianProverABI = GuardianProverMetaData.ABI + +// GuardianProver is an auto generated Go binding around an Ethereum contract. +type GuardianProver struct { + GuardianProverCaller // Read-only binding to the contract + GuardianProverTransactor // Write-only binding to the contract + GuardianProverFilterer // Log filterer for contract events +} + +// GuardianProverCaller is an auto generated read-only Go binding around an Ethereum contract. +type GuardianProverCaller struct { + contract *bind.BoundContract // Generic contract wrapper for the low level calls +} + +// GuardianProverTransactor is an auto generated write-only Go binding around an Ethereum contract. +type GuardianProverTransactor struct { + contract *bind.BoundContract // Generic contract wrapper for the low level calls +} + +// GuardianProverFilterer is an auto generated log filtering Go binding around an Ethereum contract events. +type GuardianProverFilterer struct { + contract *bind.BoundContract // Generic contract wrapper for the low level calls +} + +// GuardianProverSession is an auto generated Go binding around an Ethereum contract, +// with pre-set call and transact options. +type GuardianProverSession struct { + Contract *GuardianProver // Generic contract binding to set the session for + CallOpts bind.CallOpts // Call options to use throughout this session + TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session +} + +// GuardianProverCallerSession is an auto generated read-only Go binding around an Ethereum contract, +// with pre-set call options. +type GuardianProverCallerSession struct { + Contract *GuardianProverCaller // Generic contract caller binding to set the session for + CallOpts bind.CallOpts // Call options to use throughout this session +} + +// GuardianProverTransactorSession is an auto generated write-only Go binding around an Ethereum contract, +// with pre-set transact options. +type GuardianProverTransactorSession struct { + Contract *GuardianProverTransactor // Generic contract transactor binding to set the session for + TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session +} + +// GuardianProverRaw is an auto generated low-level Go binding around an Ethereum contract. +type GuardianProverRaw struct { + Contract *GuardianProver // Generic contract binding to access the raw methods on +} + +// GuardianProverCallerRaw is an auto generated low-level read-only Go binding around an Ethereum contract. +type GuardianProverCallerRaw struct { + Contract *GuardianProverCaller // Generic read-only contract binding to access the raw methods on +} + +// GuardianProverTransactorRaw is an auto generated low-level write-only Go binding around an Ethereum contract. +type GuardianProverTransactorRaw struct { + Contract *GuardianProverTransactor // Generic write-only contract binding to access the raw methods on +} + +// NewGuardianProver creates a new instance of GuardianProver, bound to a specific deployed contract. +func NewGuardianProver(address common.Address, backend bind.ContractBackend) (*GuardianProver, error) { + contract, err := bindGuardianProver(address, backend, backend, backend) + if err != nil { + return nil, err + } + return &GuardianProver{GuardianProverCaller: GuardianProverCaller{contract: contract}, GuardianProverTransactor: GuardianProverTransactor{contract: contract}, GuardianProverFilterer: GuardianProverFilterer{contract: contract}}, nil +} + +// NewGuardianProverCaller creates a new read-only instance of GuardianProver, bound to a specific deployed contract. +func NewGuardianProverCaller(address common.Address, caller bind.ContractCaller) (*GuardianProverCaller, error) { + contract, err := bindGuardianProver(address, caller, nil, nil) + if err != nil { + return nil, err + } + return &GuardianProverCaller{contract: contract}, nil +} + +// NewGuardianProverTransactor creates a new write-only instance of GuardianProver, bound to a specific deployed contract. +func NewGuardianProverTransactor(address common.Address, transactor bind.ContractTransactor) (*GuardianProverTransactor, error) { + contract, err := bindGuardianProver(address, nil, transactor, nil) + if err != nil { + return nil, err + } + return &GuardianProverTransactor{contract: contract}, nil +} + +// NewGuardianProverFilterer creates a new log filterer instance of GuardianProver, bound to a specific deployed contract. +func NewGuardianProverFilterer(address common.Address, filterer bind.ContractFilterer) (*GuardianProverFilterer, error) { + contract, err := bindGuardianProver(address, nil, nil, filterer) + if err != nil { + return nil, err + } + return &GuardianProverFilterer{contract: contract}, nil +} + +// bindGuardianProver binds a generic wrapper to an already deployed contract. +func bindGuardianProver(address common.Address, caller bind.ContractCaller, transactor bind.ContractTransactor, filterer bind.ContractFilterer) (*bind.BoundContract, error) { + parsed, err := GuardianProverMetaData.GetAbi() + if err != nil { + return nil, err + } + return bind.NewBoundContract(address, *parsed, caller, transactor, filterer), nil +} + +// Call invokes the (constant) contract method with params as input values and +// sets the output to result. The result type might be a single field for simple +// returns, a slice of interfaces for anonymous returns and a struct for named +// returns. +func (_GuardianProver *GuardianProverRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error { + return _GuardianProver.Contract.GuardianProverCaller.contract.Call(opts, result, method, params...) +} + +// Transfer initiates a plain transaction to move funds to the contract, calling +// its default method if one is available. +func (_GuardianProver *GuardianProverRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) { + return _GuardianProver.Contract.GuardianProverTransactor.contract.Transfer(opts) +} + +// Transact invokes the (paid) contract method with params as input values. +func (_GuardianProver *GuardianProverRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) { + return _GuardianProver.Contract.GuardianProverTransactor.contract.Transact(opts, method, params...) +} + +// Call invokes the (constant) contract method with params as input values and +// sets the output to result. The result type might be a single field for simple +// returns, a slice of interfaces for anonymous returns and a struct for named +// returns. +func (_GuardianProver *GuardianProverCallerRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error { + return _GuardianProver.Contract.contract.Call(opts, result, method, params...) +} + +// Transfer initiates a plain transaction to move funds to the contract, calling +// its default method if one is available. +func (_GuardianProver *GuardianProverTransactorRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) { + return _GuardianProver.Contract.contract.Transfer(opts) +} + +// Transact invokes the (paid) contract method with params as input values. +func (_GuardianProver *GuardianProverTransactorRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) { + return _GuardianProver.Contract.contract.Transact(opts, method, params...) +} + +// NUMGUARDIANS is a free data retrieval call binding the contract method 0x55ff4c83. +// +// Solidity: function NUM_GUARDIANS() view returns(uint256) +func (_GuardianProver *GuardianProverCaller) NUMGUARDIANS(opts *bind.CallOpts) (*big.Int, error) { + var out []interface{} + err := _GuardianProver.contract.Call(opts, &out, "NUM_GUARDIANS") + + if err != nil { + return *new(*big.Int), err + } + + out0 := *abi.ConvertType(out[0], new(*big.Int)).(**big.Int) + + return out0, err + +} + +// NUMGUARDIANS is a free data retrieval call binding the contract method 0x55ff4c83. +// +// Solidity: function NUM_GUARDIANS() view returns(uint256) +func (_GuardianProver *GuardianProverSession) NUMGUARDIANS() (*big.Int, error) { + return _GuardianProver.Contract.NUMGUARDIANS(&_GuardianProver.CallOpts) +} + +// NUMGUARDIANS is a free data retrieval call binding the contract method 0x55ff4c83. +// +// Solidity: function NUM_GUARDIANS() view returns(uint256) +func (_GuardianProver *GuardianProverCallerSession) NUMGUARDIANS() (*big.Int, error) { + return _GuardianProver.Contract.NUMGUARDIANS(&_GuardianProver.CallOpts) +} + +// REQUIREDGUARDIANS is a free data retrieval call binding the contract method 0x05520401. +// +// Solidity: function REQUIRED_GUARDIANS() view returns(uint256) +func (_GuardianProver *GuardianProverCaller) REQUIREDGUARDIANS(opts *bind.CallOpts) (*big.Int, error) { + var out []interface{} + err := _GuardianProver.contract.Call(opts, &out, "REQUIRED_GUARDIANS") + + if err != nil { + return *new(*big.Int), err + } + + out0 := *abi.ConvertType(out[0], new(*big.Int)).(**big.Int) + + return out0, err + +} + +// REQUIREDGUARDIANS is a free data retrieval call binding the contract method 0x05520401. +// +// Solidity: function REQUIRED_GUARDIANS() view returns(uint256) +func (_GuardianProver *GuardianProverSession) REQUIREDGUARDIANS() (*big.Int, error) { + return _GuardianProver.Contract.REQUIREDGUARDIANS(&_GuardianProver.CallOpts) +} + +// REQUIREDGUARDIANS is a free data retrieval call binding the contract method 0x05520401. +// +// Solidity: function REQUIRED_GUARDIANS() view returns(uint256) +func (_GuardianProver *GuardianProverCallerSession) REQUIREDGUARDIANS() (*big.Int, error) { + return _GuardianProver.Contract.REQUIREDGUARDIANS(&_GuardianProver.CallOpts) +} + +// AddressManager is a free data retrieval call binding the contract method 0x3ab76e9f. +// +// Solidity: function addressManager() view returns(address) +func (_GuardianProver *GuardianProverCaller) AddressManager(opts *bind.CallOpts) (common.Address, error) { + var out []interface{} + err := _GuardianProver.contract.Call(opts, &out, "addressManager") + + if err != nil { + return *new(common.Address), err + } + + out0 := *abi.ConvertType(out[0], new(common.Address)).(*common.Address) + + return out0, err + +} + +// AddressManager is a free data retrieval call binding the contract method 0x3ab76e9f. +// +// Solidity: function addressManager() view returns(address) +func (_GuardianProver *GuardianProverSession) AddressManager() (common.Address, error) { + return _GuardianProver.Contract.AddressManager(&_GuardianProver.CallOpts) +} + +// AddressManager is a free data retrieval call binding the contract method 0x3ab76e9f. +// +// Solidity: function addressManager() view returns(address) +func (_GuardianProver *GuardianProverCallerSession) AddressManager() (common.Address, error) { + return _GuardianProver.Contract.AddressManager(&_GuardianProver.CallOpts) +} + +// Approvals is a free data retrieval call binding the contract method 0xbf7c2131. +// +// Solidity: function approvals(bytes32 ) view returns(uint256 approvalBits) +func (_GuardianProver *GuardianProverCaller) Approvals(opts *bind.CallOpts, arg0 [32]byte) (*big.Int, error) { + var out []interface{} + err := _GuardianProver.contract.Call(opts, &out, "approvals", arg0) + + if err != nil { + return *new(*big.Int), err + } + + out0 := *abi.ConvertType(out[0], new(*big.Int)).(**big.Int) + + return out0, err + +} + +// Approvals is a free data retrieval call binding the contract method 0xbf7c2131. +// +// Solidity: function approvals(bytes32 ) view returns(uint256 approvalBits) +func (_GuardianProver *GuardianProverSession) Approvals(arg0 [32]byte) (*big.Int, error) { + return _GuardianProver.Contract.Approvals(&_GuardianProver.CallOpts, arg0) +} + +// Approvals is a free data retrieval call binding the contract method 0xbf7c2131. +// +// Solidity: function approvals(bytes32 ) view returns(uint256 approvalBits) +func (_GuardianProver *GuardianProverCallerSession) Approvals(arg0 [32]byte) (*big.Int, error) { + return _GuardianProver.Contract.Approvals(&_GuardianProver.CallOpts, arg0) +} + +// GuardianIds is a free data retrieval call binding the contract method 0xb6158373. +// +// Solidity: function guardianIds(address guardian) view returns(uint256 id) +func (_GuardianProver *GuardianProverCaller) GuardianIds(opts *bind.CallOpts, guardian common.Address) (*big.Int, error) { + var out []interface{} + err := _GuardianProver.contract.Call(opts, &out, "guardianIds", guardian) + + if err != nil { + return *new(*big.Int), err + } + + out0 := *abi.ConvertType(out[0], new(*big.Int)).(**big.Int) + + return out0, err + +} + +// GuardianIds is a free data retrieval call binding the contract method 0xb6158373. +// +// Solidity: function guardianIds(address guardian) view returns(uint256 id) +func (_GuardianProver *GuardianProverSession) GuardianIds(guardian common.Address) (*big.Int, error) { + return _GuardianProver.Contract.GuardianIds(&_GuardianProver.CallOpts, guardian) +} + +// GuardianIds is a free data retrieval call binding the contract method 0xb6158373. +// +// Solidity: function guardianIds(address guardian) view returns(uint256 id) +func (_GuardianProver *GuardianProverCallerSession) GuardianIds(guardian common.Address) (*big.Int, error) { + return _GuardianProver.Contract.GuardianIds(&_GuardianProver.CallOpts, guardian) +} + +// Guardians is a free data retrieval call binding the contract method 0xf560c734. +// +// Solidity: function guardians(uint256 ) view returns(address) +func (_GuardianProver *GuardianProverCaller) Guardians(opts *bind.CallOpts, arg0 *big.Int) (common.Address, error) { + var out []interface{} + err := _GuardianProver.contract.Call(opts, &out, "guardians", arg0) + + if err != nil { + return *new(common.Address), err + } + + out0 := *abi.ConvertType(out[0], new(common.Address)).(*common.Address) + + return out0, err + +} + +// Guardians is a free data retrieval call binding the contract method 0xf560c734. +// +// Solidity: function guardians(uint256 ) view returns(address) +func (_GuardianProver *GuardianProverSession) Guardians(arg0 *big.Int) (common.Address, error) { + return _GuardianProver.Contract.Guardians(&_GuardianProver.CallOpts, arg0) +} + +// Guardians is a free data retrieval call binding the contract method 0xf560c734. +// +// Solidity: function guardians(uint256 ) view returns(address) +func (_GuardianProver *GuardianProverCallerSession) Guardians(arg0 *big.Int) (common.Address, error) { + return _GuardianProver.Contract.Guardians(&_GuardianProver.CallOpts, arg0) +} + +// Owner is a free data retrieval call binding the contract method 0x8da5cb5b. +// +// Solidity: function owner() view returns(address) +func (_GuardianProver *GuardianProverCaller) Owner(opts *bind.CallOpts) (common.Address, error) { + var out []interface{} + err := _GuardianProver.contract.Call(opts, &out, "owner") + + if err != nil { + return *new(common.Address), err + } + + out0 := *abi.ConvertType(out[0], new(common.Address)).(*common.Address) + + return out0, err + +} + +// Owner is a free data retrieval call binding the contract method 0x8da5cb5b. +// +// Solidity: function owner() view returns(address) +func (_GuardianProver *GuardianProverSession) Owner() (common.Address, error) { + return _GuardianProver.Contract.Owner(&_GuardianProver.CallOpts) +} + +// Owner is a free data retrieval call binding the contract method 0x8da5cb5b. +// +// Solidity: function owner() view returns(address) +func (_GuardianProver *GuardianProverCallerSession) Owner() (common.Address, error) { + return _GuardianProver.Contract.Owner(&_GuardianProver.CallOpts) +} + +// Paused is a free data retrieval call binding the contract method 0x5c975abb. +// +// Solidity: function paused() view returns(bool) +func (_GuardianProver *GuardianProverCaller) Paused(opts *bind.CallOpts) (bool, error) { + var out []interface{} + err := _GuardianProver.contract.Call(opts, &out, "paused") + + if err != nil { + return *new(bool), err + } + + out0 := *abi.ConvertType(out[0], new(bool)).(*bool) + + return out0, err + +} + +// Paused is a free data retrieval call binding the contract method 0x5c975abb. +// +// Solidity: function paused() view returns(bool) +func (_GuardianProver *GuardianProverSession) Paused() (bool, error) { + return _GuardianProver.Contract.Paused(&_GuardianProver.CallOpts) +} + +// Paused is a free data retrieval call binding the contract method 0x5c975abb. +// +// Solidity: function paused() view returns(bool) +func (_GuardianProver *GuardianProverCallerSession) Paused() (bool, error) { + return _GuardianProver.Contract.Paused(&_GuardianProver.CallOpts) +} + +// PendingOwner is a free data retrieval call binding the contract method 0xe30c3978. +// +// Solidity: function pendingOwner() view returns(address) +func (_GuardianProver *GuardianProverCaller) PendingOwner(opts *bind.CallOpts) (common.Address, error) { + var out []interface{} + err := _GuardianProver.contract.Call(opts, &out, "pendingOwner") + + if err != nil { + return *new(common.Address), err + } + + out0 := *abi.ConvertType(out[0], new(common.Address)).(*common.Address) + + return out0, err + +} + +// PendingOwner is a free data retrieval call binding the contract method 0xe30c3978. +// +// Solidity: function pendingOwner() view returns(address) +func (_GuardianProver *GuardianProverSession) PendingOwner() (common.Address, error) { + return _GuardianProver.Contract.PendingOwner(&_GuardianProver.CallOpts) +} + +// PendingOwner is a free data retrieval call binding the contract method 0xe30c3978. +// +// Solidity: function pendingOwner() view returns(address) +func (_GuardianProver *GuardianProverCallerSession) PendingOwner() (common.Address, error) { + return _GuardianProver.Contract.PendingOwner(&_GuardianProver.CallOpts) +} + +// Resolve is a free data retrieval call binding the contract method 0x3eb6b8cf. +// +// Solidity: function resolve(uint64 chainId, bytes32 name, bool allowZeroAddress) view returns(address addr) +func (_GuardianProver *GuardianProverCaller) Resolve(opts *bind.CallOpts, chainId uint64, name [32]byte, allowZeroAddress bool) (common.Address, error) { + var out []interface{} + err := _GuardianProver.contract.Call(opts, &out, "resolve", chainId, name, allowZeroAddress) + + if err != nil { + return *new(common.Address), err + } + + out0 := *abi.ConvertType(out[0], new(common.Address)).(*common.Address) + + return out0, err + +} + +// Resolve is a free data retrieval call binding the contract method 0x3eb6b8cf. +// +// Solidity: function resolve(uint64 chainId, bytes32 name, bool allowZeroAddress) view returns(address addr) +func (_GuardianProver *GuardianProverSession) Resolve(chainId uint64, name [32]byte, allowZeroAddress bool) (common.Address, error) { + return _GuardianProver.Contract.Resolve(&_GuardianProver.CallOpts, chainId, name, allowZeroAddress) +} + +// Resolve is a free data retrieval call binding the contract method 0x3eb6b8cf. +// +// Solidity: function resolve(uint64 chainId, bytes32 name, bool allowZeroAddress) view returns(address addr) +func (_GuardianProver *GuardianProverCallerSession) Resolve(chainId uint64, name [32]byte, allowZeroAddress bool) (common.Address, error) { + return _GuardianProver.Contract.Resolve(&_GuardianProver.CallOpts, chainId, name, allowZeroAddress) +} + +// Resolve0 is a free data retrieval call binding the contract method 0xa86f9d9e. +// +// Solidity: function resolve(bytes32 name, bool allowZeroAddress) view returns(address addr) +func (_GuardianProver *GuardianProverCaller) Resolve0(opts *bind.CallOpts, name [32]byte, allowZeroAddress bool) (common.Address, error) { + var out []interface{} + err := _GuardianProver.contract.Call(opts, &out, "resolve0", name, allowZeroAddress) + + if err != nil { + return *new(common.Address), err + } + + out0 := *abi.ConvertType(out[0], new(common.Address)).(*common.Address) + + return out0, err + +} + +// Resolve0 is a free data retrieval call binding the contract method 0xa86f9d9e. +// +// Solidity: function resolve(bytes32 name, bool allowZeroAddress) view returns(address addr) +func (_GuardianProver *GuardianProverSession) Resolve0(name [32]byte, allowZeroAddress bool) (common.Address, error) { + return _GuardianProver.Contract.Resolve0(&_GuardianProver.CallOpts, name, allowZeroAddress) +} + +// Resolve0 is a free data retrieval call binding the contract method 0xa86f9d9e. +// +// Solidity: function resolve(bytes32 name, bool allowZeroAddress) view returns(address addr) +func (_GuardianProver *GuardianProverCallerSession) Resolve0(name [32]byte, allowZeroAddress bool) (common.Address, error) { + return _GuardianProver.Contract.Resolve0(&_GuardianProver.CallOpts, name, allowZeroAddress) +} + +// AcceptOwnership is a paid mutator transaction binding the contract method 0x79ba5097. +// +// Solidity: function acceptOwnership() returns() +func (_GuardianProver *GuardianProverTransactor) AcceptOwnership(opts *bind.TransactOpts) (*types.Transaction, error) { + return _GuardianProver.contract.Transact(opts, "acceptOwnership") +} + +// AcceptOwnership is a paid mutator transaction binding the contract method 0x79ba5097. +// +// Solidity: function acceptOwnership() returns() +func (_GuardianProver *GuardianProverSession) AcceptOwnership() (*types.Transaction, error) { + return _GuardianProver.Contract.AcceptOwnership(&_GuardianProver.TransactOpts) +} + +// AcceptOwnership is a paid mutator transaction binding the contract method 0x79ba5097. +// +// Solidity: function acceptOwnership() returns() +func (_GuardianProver *GuardianProverTransactorSession) AcceptOwnership() (*types.Transaction, error) { + return _GuardianProver.Contract.AcceptOwnership(&_GuardianProver.TransactOpts) +} + +// Approve is a paid mutator transaction binding the contract method 0x0bba05b8. +// +// Solidity: function approve((bytes32,bytes32,bytes32,bytes32,bytes32,address,uint64,uint32,uint64,uint64,uint16,bool) meta, (bytes32,bytes32,bytes32,bytes32) tran, (uint16,bytes) proof) returns() +func (_GuardianProver *GuardianProverTransactor) Approve(opts *bind.TransactOpts, meta TaikoDataBlockMetadata, tran TaikoDataTransition, proof TaikoDataTierProof) (*types.Transaction, error) { + return _GuardianProver.contract.Transact(opts, "approve", meta, tran, proof) +} + +// Approve is a paid mutator transaction binding the contract method 0x0bba05b8. +// +// Solidity: function approve((bytes32,bytes32,bytes32,bytes32,bytes32,address,uint64,uint32,uint64,uint64,uint16,bool) meta, (bytes32,bytes32,bytes32,bytes32) tran, (uint16,bytes) proof) returns() +func (_GuardianProver *GuardianProverSession) Approve(meta TaikoDataBlockMetadata, tran TaikoDataTransition, proof TaikoDataTierProof) (*types.Transaction, error) { + return _GuardianProver.Contract.Approve(&_GuardianProver.TransactOpts, meta, tran, proof) +} + +// Approve is a paid mutator transaction binding the contract method 0x0bba05b8. +// +// Solidity: function approve((bytes32,bytes32,bytes32,bytes32,bytes32,address,uint64,uint32,uint64,uint64,uint16,bool) meta, (bytes32,bytes32,bytes32,bytes32) tran, (uint16,bytes) proof) returns() +func (_GuardianProver *GuardianProverTransactorSession) Approve(meta TaikoDataBlockMetadata, tran TaikoDataTransition, proof TaikoDataTierProof) (*types.Transaction, error) { + return _GuardianProver.Contract.Approve(&_GuardianProver.TransactOpts, meta, tran, proof) +} + +// Init is a paid mutator transaction binding the contract method 0x19ab453c. +// +// Solidity: function init(address _addressManager) returns() +func (_GuardianProver *GuardianProverTransactor) Init(opts *bind.TransactOpts, _addressManager common.Address) (*types.Transaction, error) { + return _GuardianProver.contract.Transact(opts, "init", _addressManager) +} + +// Init is a paid mutator transaction binding the contract method 0x19ab453c. +// +// Solidity: function init(address _addressManager) returns() +func (_GuardianProver *GuardianProverSession) Init(_addressManager common.Address) (*types.Transaction, error) { + return _GuardianProver.Contract.Init(&_GuardianProver.TransactOpts, _addressManager) +} + +// Init is a paid mutator transaction binding the contract method 0x19ab453c. +// +// Solidity: function init(address _addressManager) returns() +func (_GuardianProver *GuardianProverTransactorSession) Init(_addressManager common.Address) (*types.Transaction, error) { + return _GuardianProver.Contract.Init(&_GuardianProver.TransactOpts, _addressManager) +} + +// Pause is a paid mutator transaction binding the contract method 0x8456cb59. +// +// Solidity: function pause() returns() +func (_GuardianProver *GuardianProverTransactor) Pause(opts *bind.TransactOpts) (*types.Transaction, error) { + return _GuardianProver.contract.Transact(opts, "pause") +} + +// Pause is a paid mutator transaction binding the contract method 0x8456cb59. +// +// Solidity: function pause() returns() +func (_GuardianProver *GuardianProverSession) Pause() (*types.Transaction, error) { + return _GuardianProver.Contract.Pause(&_GuardianProver.TransactOpts) +} + +// Pause is a paid mutator transaction binding the contract method 0x8456cb59. +// +// Solidity: function pause() returns() +func (_GuardianProver *GuardianProverTransactorSession) Pause() (*types.Transaction, error) { + return _GuardianProver.Contract.Pause(&_GuardianProver.TransactOpts) +} + +// RenounceOwnership is a paid mutator transaction binding the contract method 0x715018a6. +// +// Solidity: function renounceOwnership() returns() +func (_GuardianProver *GuardianProverTransactor) RenounceOwnership(opts *bind.TransactOpts) (*types.Transaction, error) { + return _GuardianProver.contract.Transact(opts, "renounceOwnership") +} + +// RenounceOwnership is a paid mutator transaction binding the contract method 0x715018a6. +// +// Solidity: function renounceOwnership() returns() +func (_GuardianProver *GuardianProverSession) RenounceOwnership() (*types.Transaction, error) { + return _GuardianProver.Contract.RenounceOwnership(&_GuardianProver.TransactOpts) +} + +// RenounceOwnership is a paid mutator transaction binding the contract method 0x715018a6. +// +// Solidity: function renounceOwnership() returns() +func (_GuardianProver *GuardianProverTransactorSession) RenounceOwnership() (*types.Transaction, error) { + return _GuardianProver.Contract.RenounceOwnership(&_GuardianProver.TransactOpts) +} + +// SetGuardians is a paid mutator transaction binding the contract method 0x5cb1eb25. +// +// Solidity: function setGuardians(address[5] _guardians) returns() +func (_GuardianProver *GuardianProverTransactor) SetGuardians(opts *bind.TransactOpts, _guardians [5]common.Address) (*types.Transaction, error) { + return _GuardianProver.contract.Transact(opts, "setGuardians", _guardians) +} + +// SetGuardians is a paid mutator transaction binding the contract method 0x5cb1eb25. +// +// Solidity: function setGuardians(address[5] _guardians) returns() +func (_GuardianProver *GuardianProverSession) SetGuardians(_guardians [5]common.Address) (*types.Transaction, error) { + return _GuardianProver.Contract.SetGuardians(&_GuardianProver.TransactOpts, _guardians) +} + +// SetGuardians is a paid mutator transaction binding the contract method 0x5cb1eb25. +// +// Solidity: function setGuardians(address[5] _guardians) returns() +func (_GuardianProver *GuardianProverTransactorSession) SetGuardians(_guardians [5]common.Address) (*types.Transaction, error) { + return _GuardianProver.Contract.SetGuardians(&_GuardianProver.TransactOpts, _guardians) +} + +// TransferOwnership is a paid mutator transaction binding the contract method 0xf2fde38b. +// +// Solidity: function transferOwnership(address newOwner) returns() +func (_GuardianProver *GuardianProverTransactor) TransferOwnership(opts *bind.TransactOpts, newOwner common.Address) (*types.Transaction, error) { + return _GuardianProver.contract.Transact(opts, "transferOwnership", newOwner) +} + +// TransferOwnership is a paid mutator transaction binding the contract method 0xf2fde38b. +// +// Solidity: function transferOwnership(address newOwner) returns() +func (_GuardianProver *GuardianProverSession) TransferOwnership(newOwner common.Address) (*types.Transaction, error) { + return _GuardianProver.Contract.TransferOwnership(&_GuardianProver.TransactOpts, newOwner) +} + +// TransferOwnership is a paid mutator transaction binding the contract method 0xf2fde38b. +// +// Solidity: function transferOwnership(address newOwner) returns() +func (_GuardianProver *GuardianProverTransactorSession) TransferOwnership(newOwner common.Address) (*types.Transaction, error) { + return _GuardianProver.Contract.TransferOwnership(&_GuardianProver.TransactOpts, newOwner) +} + +// Unpause is a paid mutator transaction binding the contract method 0x3f4ba83a. +// +// Solidity: function unpause() returns() +func (_GuardianProver *GuardianProverTransactor) Unpause(opts *bind.TransactOpts) (*types.Transaction, error) { + return _GuardianProver.contract.Transact(opts, "unpause") +} + +// Unpause is a paid mutator transaction binding the contract method 0x3f4ba83a. +// +// Solidity: function unpause() returns() +func (_GuardianProver *GuardianProverSession) Unpause() (*types.Transaction, error) { + return _GuardianProver.Contract.Unpause(&_GuardianProver.TransactOpts) +} + +// Unpause is a paid mutator transaction binding the contract method 0x3f4ba83a. +// +// Solidity: function unpause() returns() +func (_GuardianProver *GuardianProverTransactorSession) Unpause() (*types.Transaction, error) { + return _GuardianProver.Contract.Unpause(&_GuardianProver.TransactOpts) +} + +// GuardianProverApprovedIterator is returned from FilterApproved and is used to iterate over the raw logs and unpacked data for Approved events raised by the GuardianProver contract. +type GuardianProverApprovedIterator struct { + Event *GuardianProverApproved // Event containing the contract specifics and raw log + + contract *bind.BoundContract // Generic contract to use for unpacking event data + event string // Event name to use for unpacking event data + + logs chan types.Log // Log channel receiving the found contract events + sub ethereum.Subscription // Subscription for errors, completion and termination + done bool // Whether the subscription completed delivering logs + fail error // Occurred error to stop iteration +} + +// Next advances the iterator to the subsequent event, returning whether there +// are any more events found. In case of a retrieval or parsing error, false is +// returned and Error() can be queried for the exact failure. +func (it *GuardianProverApprovedIterator) Next() bool { + // If the iterator failed, stop iterating + if it.fail != nil { + return false + } + // If the iterator completed, deliver directly whatever's available + if it.done { + select { + case log := <-it.logs: + it.Event = new(GuardianProverApproved) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + default: + return false + } + } + // Iterator still in progress, wait for either a data or an error event + select { + case log := <-it.logs: + it.Event = new(GuardianProverApproved) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + case err := <-it.sub.Err(): + it.done = true + it.fail = err + return it.Next() + } +} + +// Error returns any retrieval or parsing error occurred during filtering. +func (it *GuardianProverApprovedIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *GuardianProverApprovedIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// GuardianProverApproved represents a Approved event raised by the GuardianProver contract. +type GuardianProverApproved struct { + BlockId uint64 + ApprovalBits *big.Int + ProofSubmitted bool + Raw types.Log // Blockchain specific contextual infos +} + +// FilterApproved is a free log retrieval operation binding the contract event 0x491ef33230925e6876158c5f7551d4f58c2c7d04e41546850b1009678c20816a. +// +// Solidity: event Approved(uint64 indexed blockId, uint256 approvalBits, bool proofSubmitted) +func (_GuardianProver *GuardianProverFilterer) FilterApproved(opts *bind.FilterOpts, blockId []uint64) (*GuardianProverApprovedIterator, error) { + + var blockIdRule []interface{} + for _, blockIdItem := range blockId { + blockIdRule = append(blockIdRule, blockIdItem) + } + + logs, sub, err := _GuardianProver.contract.FilterLogs(opts, "Approved", blockIdRule) + if err != nil { + return nil, err + } + return &GuardianProverApprovedIterator{contract: _GuardianProver.contract, event: "Approved", logs: logs, sub: sub}, nil +} + +// WatchApproved is a free log subscription operation binding the contract event 0x491ef33230925e6876158c5f7551d4f58c2c7d04e41546850b1009678c20816a. +// +// Solidity: event Approved(uint64 indexed blockId, uint256 approvalBits, bool proofSubmitted) +func (_GuardianProver *GuardianProverFilterer) WatchApproved(opts *bind.WatchOpts, sink chan<- *GuardianProverApproved, blockId []uint64) (event.Subscription, error) { + + var blockIdRule []interface{} + for _, blockIdItem := range blockId { + blockIdRule = append(blockIdRule, blockIdItem) + } + + logs, sub, err := _GuardianProver.contract.WatchLogs(opts, "Approved", blockIdRule) + if err != nil { + return nil, err + } + return event.NewSubscription(func(quit <-chan struct{}) error { + defer sub.Unsubscribe() + for { + select { + case log := <-logs: + // New log arrived, parse the event and forward to the user + event := new(GuardianProverApproved) + if err := _GuardianProver.contract.UnpackLog(event, "Approved", log); err != nil { + return err + } + event.Raw = log + + select { + case sink <- event: + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + } + }), nil +} + +// ParseApproved is a log parse operation binding the contract event 0x491ef33230925e6876158c5f7551d4f58c2c7d04e41546850b1009678c20816a. +// +// Solidity: event Approved(uint64 indexed blockId, uint256 approvalBits, bool proofSubmitted) +func (_GuardianProver *GuardianProverFilterer) ParseApproved(log types.Log) (*GuardianProverApproved, error) { + event := new(GuardianProverApproved) + if err := _GuardianProver.contract.UnpackLog(event, "Approved", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} + +// GuardianProverGuardiansUpdatedIterator is returned from FilterGuardiansUpdated and is used to iterate over the raw logs and unpacked data for GuardiansUpdated events raised by the GuardianProver contract. +type GuardianProverGuardiansUpdatedIterator struct { + Event *GuardianProverGuardiansUpdated // Event containing the contract specifics and raw log + + contract *bind.BoundContract // Generic contract to use for unpacking event data + event string // Event name to use for unpacking event data + + logs chan types.Log // Log channel receiving the found contract events + sub ethereum.Subscription // Subscription for errors, completion and termination + done bool // Whether the subscription completed delivering logs + fail error // Occurred error to stop iteration +} + +// Next advances the iterator to the subsequent event, returning whether there +// are any more events found. In case of a retrieval or parsing error, false is +// returned and Error() can be queried for the exact failure. +func (it *GuardianProverGuardiansUpdatedIterator) Next() bool { + // If the iterator failed, stop iterating + if it.fail != nil { + return false + } + // If the iterator completed, deliver directly whatever's available + if it.done { + select { + case log := <-it.logs: + it.Event = new(GuardianProverGuardiansUpdated) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + default: + return false + } + } + // Iterator still in progress, wait for either a data or an error event + select { + case log := <-it.logs: + it.Event = new(GuardianProverGuardiansUpdated) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + case err := <-it.sub.Err(): + it.done = true + it.fail = err + return it.Next() + } +} + +// Error returns any retrieval or parsing error occurred during filtering. +func (it *GuardianProverGuardiansUpdatedIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *GuardianProverGuardiansUpdatedIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// GuardianProverGuardiansUpdated represents a GuardiansUpdated event raised by the GuardianProver contract. +type GuardianProverGuardiansUpdated struct { + Arg0 [5]common.Address + Raw types.Log // Blockchain specific contextual infos +} + +// FilterGuardiansUpdated is a free log retrieval operation binding the contract event 0x9ce971150384a46b1b1f7cfdf16a84a1c346add127bf86ce2787fb41872b6fc9. +// +// Solidity: event GuardiansUpdated(address[5] arg0) +func (_GuardianProver *GuardianProverFilterer) FilterGuardiansUpdated(opts *bind.FilterOpts) (*GuardianProverGuardiansUpdatedIterator, error) { + + logs, sub, err := _GuardianProver.contract.FilterLogs(opts, "GuardiansUpdated") + if err != nil { + return nil, err + } + return &GuardianProverGuardiansUpdatedIterator{contract: _GuardianProver.contract, event: "GuardiansUpdated", logs: logs, sub: sub}, nil +} + +// WatchGuardiansUpdated is a free log subscription operation binding the contract event 0x9ce971150384a46b1b1f7cfdf16a84a1c346add127bf86ce2787fb41872b6fc9. +// +// Solidity: event GuardiansUpdated(address[5] arg0) +func (_GuardianProver *GuardianProverFilterer) WatchGuardiansUpdated(opts *bind.WatchOpts, sink chan<- *GuardianProverGuardiansUpdated) (event.Subscription, error) { + + logs, sub, err := _GuardianProver.contract.WatchLogs(opts, "GuardiansUpdated") + if err != nil { + return nil, err + } + return event.NewSubscription(func(quit <-chan struct{}) error { + defer sub.Unsubscribe() + for { + select { + case log := <-logs: + // New log arrived, parse the event and forward to the user + event := new(GuardianProverGuardiansUpdated) + if err := _GuardianProver.contract.UnpackLog(event, "GuardiansUpdated", log); err != nil { + return err + } + event.Raw = log + + select { + case sink <- event: + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + } + }), nil +} + +// ParseGuardiansUpdated is a log parse operation binding the contract event 0x9ce971150384a46b1b1f7cfdf16a84a1c346add127bf86ce2787fb41872b6fc9. +// +// Solidity: event GuardiansUpdated(address[5] arg0) +func (_GuardianProver *GuardianProverFilterer) ParseGuardiansUpdated(log types.Log) (*GuardianProverGuardiansUpdated, error) { + event := new(GuardianProverGuardiansUpdated) + if err := _GuardianProver.contract.UnpackLog(event, "GuardiansUpdated", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} + +// GuardianProverInitializedIterator is returned from FilterInitialized and is used to iterate over the raw logs and unpacked data for Initialized events raised by the GuardianProver contract. +type GuardianProverInitializedIterator struct { + Event *GuardianProverInitialized // Event containing the contract specifics and raw log + + contract *bind.BoundContract // Generic contract to use for unpacking event data + event string // Event name to use for unpacking event data + + logs chan types.Log // Log channel receiving the found contract events + sub ethereum.Subscription // Subscription for errors, completion and termination + done bool // Whether the subscription completed delivering logs + fail error // Occurred error to stop iteration +} + +// Next advances the iterator to the subsequent event, returning whether there +// are any more events found. In case of a retrieval or parsing error, false is +// returned and Error() can be queried for the exact failure. +func (it *GuardianProverInitializedIterator) Next() bool { + // If the iterator failed, stop iterating + if it.fail != nil { + return false + } + // If the iterator completed, deliver directly whatever's available + if it.done { + select { + case log := <-it.logs: + it.Event = new(GuardianProverInitialized) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + default: + return false + } + } + // Iterator still in progress, wait for either a data or an error event + select { + case log := <-it.logs: + it.Event = new(GuardianProverInitialized) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + case err := <-it.sub.Err(): + it.done = true + it.fail = err + return it.Next() + } +} + +// Error returns any retrieval or parsing error occurred during filtering. +func (it *GuardianProverInitializedIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *GuardianProverInitializedIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// GuardianProverInitialized represents a Initialized event raised by the GuardianProver contract. +type GuardianProverInitialized struct { + Version uint8 + Raw types.Log // Blockchain specific contextual infos +} + +// FilterInitialized is a free log retrieval operation binding the contract event 0x7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb3847402498. +// +// Solidity: event Initialized(uint8 version) +func (_GuardianProver *GuardianProverFilterer) FilterInitialized(opts *bind.FilterOpts) (*GuardianProverInitializedIterator, error) { + + logs, sub, err := _GuardianProver.contract.FilterLogs(opts, "Initialized") + if err != nil { + return nil, err + } + return &GuardianProverInitializedIterator{contract: _GuardianProver.contract, event: "Initialized", logs: logs, sub: sub}, nil +} + +// WatchInitialized is a free log subscription operation binding the contract event 0x7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb3847402498. +// +// Solidity: event Initialized(uint8 version) +func (_GuardianProver *GuardianProverFilterer) WatchInitialized(opts *bind.WatchOpts, sink chan<- *GuardianProverInitialized) (event.Subscription, error) { + + logs, sub, err := _GuardianProver.contract.WatchLogs(opts, "Initialized") + if err != nil { + return nil, err + } + return event.NewSubscription(func(quit <-chan struct{}) error { + defer sub.Unsubscribe() + for { + select { + case log := <-logs: + // New log arrived, parse the event and forward to the user + event := new(GuardianProverInitialized) + if err := _GuardianProver.contract.UnpackLog(event, "Initialized", log); err != nil { + return err + } + event.Raw = log + + select { + case sink <- event: + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + } + }), nil +} + +// ParseInitialized is a log parse operation binding the contract event 0x7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb3847402498. +// +// Solidity: event Initialized(uint8 version) +func (_GuardianProver *GuardianProverFilterer) ParseInitialized(log types.Log) (*GuardianProverInitialized, error) { + event := new(GuardianProverInitialized) + if err := _GuardianProver.contract.UnpackLog(event, "Initialized", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} + +// GuardianProverOwnershipTransferStartedIterator is returned from FilterOwnershipTransferStarted and is used to iterate over the raw logs and unpacked data for OwnershipTransferStarted events raised by the GuardianProver contract. +type GuardianProverOwnershipTransferStartedIterator struct { + Event *GuardianProverOwnershipTransferStarted // Event containing the contract specifics and raw log + + contract *bind.BoundContract // Generic contract to use for unpacking event data + event string // Event name to use for unpacking event data + + logs chan types.Log // Log channel receiving the found contract events + sub ethereum.Subscription // Subscription for errors, completion and termination + done bool // Whether the subscription completed delivering logs + fail error // Occurred error to stop iteration +} + +// Next advances the iterator to the subsequent event, returning whether there +// are any more events found. In case of a retrieval or parsing error, false is +// returned and Error() can be queried for the exact failure. +func (it *GuardianProverOwnershipTransferStartedIterator) Next() bool { + // If the iterator failed, stop iterating + if it.fail != nil { + return false + } + // If the iterator completed, deliver directly whatever's available + if it.done { + select { + case log := <-it.logs: + it.Event = new(GuardianProverOwnershipTransferStarted) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + default: + return false + } + } + // Iterator still in progress, wait for either a data or an error event + select { + case log := <-it.logs: + it.Event = new(GuardianProverOwnershipTransferStarted) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + case err := <-it.sub.Err(): + it.done = true + it.fail = err + return it.Next() + } +} + +// Error returns any retrieval or parsing error occurred during filtering. +func (it *GuardianProverOwnershipTransferStartedIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *GuardianProverOwnershipTransferStartedIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// GuardianProverOwnershipTransferStarted represents a OwnershipTransferStarted event raised by the GuardianProver contract. +type GuardianProverOwnershipTransferStarted struct { + PreviousOwner common.Address + NewOwner common.Address + Raw types.Log // Blockchain specific contextual infos +} + +// FilterOwnershipTransferStarted is a free log retrieval operation binding the contract event 0x38d16b8cac22d99fc7c124b9cd0de2d3fa1faef420bfe791d8c362d765e22700. +// +// Solidity: event OwnershipTransferStarted(address indexed previousOwner, address indexed newOwner) +func (_GuardianProver *GuardianProverFilterer) FilterOwnershipTransferStarted(opts *bind.FilterOpts, previousOwner []common.Address, newOwner []common.Address) (*GuardianProverOwnershipTransferStartedIterator, error) { + + var previousOwnerRule []interface{} + for _, previousOwnerItem := range previousOwner { + previousOwnerRule = append(previousOwnerRule, previousOwnerItem) + } + var newOwnerRule []interface{} + for _, newOwnerItem := range newOwner { + newOwnerRule = append(newOwnerRule, newOwnerItem) + } + + logs, sub, err := _GuardianProver.contract.FilterLogs(opts, "OwnershipTransferStarted", previousOwnerRule, newOwnerRule) + if err != nil { + return nil, err + } + return &GuardianProverOwnershipTransferStartedIterator{contract: _GuardianProver.contract, event: "OwnershipTransferStarted", logs: logs, sub: sub}, nil +} + +// WatchOwnershipTransferStarted is a free log subscription operation binding the contract event 0x38d16b8cac22d99fc7c124b9cd0de2d3fa1faef420bfe791d8c362d765e22700. +// +// Solidity: event OwnershipTransferStarted(address indexed previousOwner, address indexed newOwner) +func (_GuardianProver *GuardianProverFilterer) WatchOwnershipTransferStarted(opts *bind.WatchOpts, sink chan<- *GuardianProverOwnershipTransferStarted, previousOwner []common.Address, newOwner []common.Address) (event.Subscription, error) { + + var previousOwnerRule []interface{} + for _, previousOwnerItem := range previousOwner { + previousOwnerRule = append(previousOwnerRule, previousOwnerItem) + } + var newOwnerRule []interface{} + for _, newOwnerItem := range newOwner { + newOwnerRule = append(newOwnerRule, newOwnerItem) + } + + logs, sub, err := _GuardianProver.contract.WatchLogs(opts, "OwnershipTransferStarted", previousOwnerRule, newOwnerRule) + if err != nil { + return nil, err + } + return event.NewSubscription(func(quit <-chan struct{}) error { + defer sub.Unsubscribe() + for { + select { + case log := <-logs: + // New log arrived, parse the event and forward to the user + event := new(GuardianProverOwnershipTransferStarted) + if err := _GuardianProver.contract.UnpackLog(event, "OwnershipTransferStarted", log); err != nil { + return err + } + event.Raw = log + + select { + case sink <- event: + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + } + }), nil +} + +// ParseOwnershipTransferStarted is a log parse operation binding the contract event 0x38d16b8cac22d99fc7c124b9cd0de2d3fa1faef420bfe791d8c362d765e22700. +// +// Solidity: event OwnershipTransferStarted(address indexed previousOwner, address indexed newOwner) +func (_GuardianProver *GuardianProverFilterer) ParseOwnershipTransferStarted(log types.Log) (*GuardianProverOwnershipTransferStarted, error) { + event := new(GuardianProverOwnershipTransferStarted) + if err := _GuardianProver.contract.UnpackLog(event, "OwnershipTransferStarted", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} + +// GuardianProverOwnershipTransferredIterator is returned from FilterOwnershipTransferred and is used to iterate over the raw logs and unpacked data for OwnershipTransferred events raised by the GuardianProver contract. +type GuardianProverOwnershipTransferredIterator struct { + Event *GuardianProverOwnershipTransferred // Event containing the contract specifics and raw log + + contract *bind.BoundContract // Generic contract to use for unpacking event data + event string // Event name to use for unpacking event data + + logs chan types.Log // Log channel receiving the found contract events + sub ethereum.Subscription // Subscription for errors, completion and termination + done bool // Whether the subscription completed delivering logs + fail error // Occurred error to stop iteration +} + +// Next advances the iterator to the subsequent event, returning whether there +// are any more events found. In case of a retrieval or parsing error, false is +// returned and Error() can be queried for the exact failure. +func (it *GuardianProverOwnershipTransferredIterator) Next() bool { + // If the iterator failed, stop iterating + if it.fail != nil { + return false + } + // If the iterator completed, deliver directly whatever's available + if it.done { + select { + case log := <-it.logs: + it.Event = new(GuardianProverOwnershipTransferred) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + default: + return false + } + } + // Iterator still in progress, wait for either a data or an error event + select { + case log := <-it.logs: + it.Event = new(GuardianProverOwnershipTransferred) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + case err := <-it.sub.Err(): + it.done = true + it.fail = err + return it.Next() + } +} + +// Error returns any retrieval or parsing error occurred during filtering. +func (it *GuardianProverOwnershipTransferredIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *GuardianProverOwnershipTransferredIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// GuardianProverOwnershipTransferred represents a OwnershipTransferred event raised by the GuardianProver contract. +type GuardianProverOwnershipTransferred struct { + PreviousOwner common.Address + NewOwner common.Address + Raw types.Log // Blockchain specific contextual infos +} + +// FilterOwnershipTransferred is a free log retrieval operation binding the contract event 0x8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0. +// +// Solidity: event OwnershipTransferred(address indexed previousOwner, address indexed newOwner) +func (_GuardianProver *GuardianProverFilterer) FilterOwnershipTransferred(opts *bind.FilterOpts, previousOwner []common.Address, newOwner []common.Address) (*GuardianProverOwnershipTransferredIterator, error) { + + var previousOwnerRule []interface{} + for _, previousOwnerItem := range previousOwner { + previousOwnerRule = append(previousOwnerRule, previousOwnerItem) + } + var newOwnerRule []interface{} + for _, newOwnerItem := range newOwner { + newOwnerRule = append(newOwnerRule, newOwnerItem) + } + + logs, sub, err := _GuardianProver.contract.FilterLogs(opts, "OwnershipTransferred", previousOwnerRule, newOwnerRule) + if err != nil { + return nil, err + } + return &GuardianProverOwnershipTransferredIterator{contract: _GuardianProver.contract, event: "OwnershipTransferred", logs: logs, sub: sub}, nil +} + +// WatchOwnershipTransferred is a free log subscription operation binding the contract event 0x8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0. +// +// Solidity: event OwnershipTransferred(address indexed previousOwner, address indexed newOwner) +func (_GuardianProver *GuardianProverFilterer) WatchOwnershipTransferred(opts *bind.WatchOpts, sink chan<- *GuardianProverOwnershipTransferred, previousOwner []common.Address, newOwner []common.Address) (event.Subscription, error) { + + var previousOwnerRule []interface{} + for _, previousOwnerItem := range previousOwner { + previousOwnerRule = append(previousOwnerRule, previousOwnerItem) + } + var newOwnerRule []interface{} + for _, newOwnerItem := range newOwner { + newOwnerRule = append(newOwnerRule, newOwnerItem) + } + + logs, sub, err := _GuardianProver.contract.WatchLogs(opts, "OwnershipTransferred", previousOwnerRule, newOwnerRule) + if err != nil { + return nil, err + } + return event.NewSubscription(func(quit <-chan struct{}) error { + defer sub.Unsubscribe() + for { + select { + case log := <-logs: + // New log arrived, parse the event and forward to the user + event := new(GuardianProverOwnershipTransferred) + if err := _GuardianProver.contract.UnpackLog(event, "OwnershipTransferred", log); err != nil { + return err + } + event.Raw = log + + select { + case sink <- event: + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + } + }), nil +} + +// ParseOwnershipTransferred is a log parse operation binding the contract event 0x8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0. +// +// Solidity: event OwnershipTransferred(address indexed previousOwner, address indexed newOwner) +func (_GuardianProver *GuardianProverFilterer) ParseOwnershipTransferred(log types.Log) (*GuardianProverOwnershipTransferred, error) { + event := new(GuardianProverOwnershipTransferred) + if err := _GuardianProver.contract.UnpackLog(event, "OwnershipTransferred", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} + +// GuardianProverPausedIterator is returned from FilterPaused and is used to iterate over the raw logs and unpacked data for Paused events raised by the GuardianProver contract. +type GuardianProverPausedIterator struct { + Event *GuardianProverPaused // Event containing the contract specifics and raw log + + contract *bind.BoundContract // Generic contract to use for unpacking event data + event string // Event name to use for unpacking event data + + logs chan types.Log // Log channel receiving the found contract events + sub ethereum.Subscription // Subscription for errors, completion and termination + done bool // Whether the subscription completed delivering logs + fail error // Occurred error to stop iteration +} + +// Next advances the iterator to the subsequent event, returning whether there +// are any more events found. In case of a retrieval or parsing error, false is +// returned and Error() can be queried for the exact failure. +func (it *GuardianProverPausedIterator) Next() bool { + // If the iterator failed, stop iterating + if it.fail != nil { + return false + } + // If the iterator completed, deliver directly whatever's available + if it.done { + select { + case log := <-it.logs: + it.Event = new(GuardianProverPaused) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + default: + return false + } + } + // Iterator still in progress, wait for either a data or an error event + select { + case log := <-it.logs: + it.Event = new(GuardianProverPaused) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + case err := <-it.sub.Err(): + it.done = true + it.fail = err + return it.Next() + } +} + +// Error returns any retrieval or parsing error occurred during filtering. +func (it *GuardianProverPausedIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *GuardianProverPausedIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// GuardianProverPaused represents a Paused event raised by the GuardianProver contract. +type GuardianProverPaused struct { + Account common.Address + Raw types.Log // Blockchain specific contextual infos +} + +// FilterPaused is a free log retrieval operation binding the contract event 0x62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a258. +// +// Solidity: event Paused(address account) +func (_GuardianProver *GuardianProverFilterer) FilterPaused(opts *bind.FilterOpts) (*GuardianProverPausedIterator, error) { + + logs, sub, err := _GuardianProver.contract.FilterLogs(opts, "Paused") + if err != nil { + return nil, err + } + return &GuardianProverPausedIterator{contract: _GuardianProver.contract, event: "Paused", logs: logs, sub: sub}, nil +} + +// WatchPaused is a free log subscription operation binding the contract event 0x62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a258. +// +// Solidity: event Paused(address account) +func (_GuardianProver *GuardianProverFilterer) WatchPaused(opts *bind.WatchOpts, sink chan<- *GuardianProverPaused) (event.Subscription, error) { + + logs, sub, err := _GuardianProver.contract.WatchLogs(opts, "Paused") + if err != nil { + return nil, err + } + return event.NewSubscription(func(quit <-chan struct{}) error { + defer sub.Unsubscribe() + for { + select { + case log := <-logs: + // New log arrived, parse the event and forward to the user + event := new(GuardianProverPaused) + if err := _GuardianProver.contract.UnpackLog(event, "Paused", log); err != nil { + return err + } + event.Raw = log + + select { + case sink <- event: + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + } + }), nil +} + +// ParsePaused is a log parse operation binding the contract event 0x62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a258. +// +// Solidity: event Paused(address account) +func (_GuardianProver *GuardianProverFilterer) ParsePaused(log types.Log) (*GuardianProverPaused, error) { + event := new(GuardianProverPaused) + if err := _GuardianProver.contract.UnpackLog(event, "Paused", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} + +// GuardianProverUnpausedIterator is returned from FilterUnpaused and is used to iterate over the raw logs and unpacked data for Unpaused events raised by the GuardianProver contract. +type GuardianProverUnpausedIterator struct { + Event *GuardianProverUnpaused // Event containing the contract specifics and raw log + + contract *bind.BoundContract // Generic contract to use for unpacking event data + event string // Event name to use for unpacking event data + + logs chan types.Log // Log channel receiving the found contract events + sub ethereum.Subscription // Subscription for errors, completion and termination + done bool // Whether the subscription completed delivering logs + fail error // Occurred error to stop iteration +} + +// Next advances the iterator to the subsequent event, returning whether there +// are any more events found. In case of a retrieval or parsing error, false is +// returned and Error() can be queried for the exact failure. +func (it *GuardianProverUnpausedIterator) Next() bool { + // If the iterator failed, stop iterating + if it.fail != nil { + return false + } + // If the iterator completed, deliver directly whatever's available + if it.done { + select { + case log := <-it.logs: + it.Event = new(GuardianProverUnpaused) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + default: + return false + } + } + // Iterator still in progress, wait for either a data or an error event + select { + case log := <-it.logs: + it.Event = new(GuardianProverUnpaused) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + case err := <-it.sub.Err(): + it.done = true + it.fail = err + return it.Next() + } +} + +// Error returns any retrieval or parsing error occurred during filtering. +func (it *GuardianProverUnpausedIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *GuardianProverUnpausedIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// GuardianProverUnpaused represents a Unpaused event raised by the GuardianProver contract. +type GuardianProverUnpaused struct { + Account common.Address + Raw types.Log // Blockchain specific contextual infos +} + +// FilterUnpaused is a free log retrieval operation binding the contract event 0x5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa. +// +// Solidity: event Unpaused(address account) +func (_GuardianProver *GuardianProverFilterer) FilterUnpaused(opts *bind.FilterOpts) (*GuardianProverUnpausedIterator, error) { + + logs, sub, err := _GuardianProver.contract.FilterLogs(opts, "Unpaused") + if err != nil { + return nil, err + } + return &GuardianProverUnpausedIterator{contract: _GuardianProver.contract, event: "Unpaused", logs: logs, sub: sub}, nil +} + +// WatchUnpaused is a free log subscription operation binding the contract event 0x5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa. +// +// Solidity: event Unpaused(address account) +func (_GuardianProver *GuardianProverFilterer) WatchUnpaused(opts *bind.WatchOpts, sink chan<- *GuardianProverUnpaused) (event.Subscription, error) { + + logs, sub, err := _GuardianProver.contract.WatchLogs(opts, "Unpaused") + if err != nil { + return nil, err + } + return event.NewSubscription(func(quit <-chan struct{}) error { + defer sub.Unsubscribe() + for { + select { + case log := <-logs: + // New log arrived, parse the event and forward to the user + event := new(GuardianProverUnpaused) + if err := _GuardianProver.contract.UnpackLog(event, "Unpaused", log); err != nil { + return err + } + event.Raw = log + + select { + case sink <- event: + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + } + }), nil +} + +// ParseUnpaused is a log parse operation binding the contract event 0x5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa. +// +// Solidity: event Unpaused(address account) +func (_GuardianProver *GuardianProverFilterer) ParseUnpaused(log types.Log) (*GuardianProverUnpaused, error) { + event := new(GuardianProverUnpaused) + if err := _GuardianProver.contract.UnpackLog(event, "Unpaused", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} diff --git a/packages/guardian-prover-health-check/cmd/flags/common.go b/packages/guardian-prover-health-check/cmd/flags/common.go new file mode 100644 index 0000000000..434e5a98ee --- /dev/null +++ b/packages/guardian-prover-health-check/cmd/flags/common.go @@ -0,0 +1,97 @@ +package flags + +import ( + "github.com/urfave/cli/v2" +) + +var ( + commonCategory = "COMMON" + healthCheckCategory = "HEALTHCHECK" + generatorCategory = "GENERATOR" +) + +var ( + DatabaseUsername = &cli.StringFlag{ + Name: "db.username", + Usage: "Database connection username", + Required: true, + Category: commonCategory, + EnvVars: []string{"DATABASE_USER"}, + } + DatabasePassword = &cli.StringFlag{ + Name: "db.password", + Usage: "Database connection password", + Required: true, + Category: commonCategory, + EnvVars: []string{"DATABASE_PASSWORD"}, + } + DatabaseHost = &cli.StringFlag{ + Name: "db.host", + Usage: "Database connection host", + Required: true, + Category: commonCategory, + EnvVars: []string{"DATABASE_HOST"}, + } + DatabaseName = &cli.StringFlag{ + Name: "db.name", + Usage: "Database connection name", + Required: true, + Category: commonCategory, + EnvVars: []string{"DATABASE_NAME"}, + } +) + +var ( + DatabaseMaxIdleConns = &cli.Uint64Flag{ + Name: "db.maxIdleConns", + Usage: "Database max idle connections", + Value: 50, + Category: commonCategory, + EnvVars: []string{"DATABASE_MAX_IDLE_CONNS"}, + } + DatabaseMaxOpenConns = &cli.Uint64Flag{ + Name: "db.maxOpenConns", + Usage: "Database max open connections", + Value: 200, + Category: commonCategory, + EnvVars: []string{"DATABASE_MAX_OPEN_CONNS"}, + } + DatabaseConnMaxLifetime = &cli.Uint64Flag{ + Name: "db.connMaxLifetime", + Usage: "Database connection max lifetime in seconds", + Value: 10, + Category: commonCategory, + EnvVars: []string{"DATABASE_CONN_MAX_LIFETIME"}, + } + MetricsHTTPPort = &cli.Uint64Flag{ + Name: "metrics.port", + Usage: "Port to run metrics http server on", + Category: commonCategory, + Value: 6061, + EnvVars: []string{"METRICS_HTTP_PORT"}, + } +) + +// All common flags. +var CommonFlags = []cli.Flag{ + // required + DatabaseUsername, + DatabasePassword, + DatabaseHost, + DatabaseName, + // optional + DatabaseMaxIdleConns, + DatabaseConnMaxLifetime, + DatabaseMaxOpenConns, + MetricsHTTPPort, +} + +// MergeFlags merges the given flag slices. +func MergeFlags(groups ...[]cli.Flag) []cli.Flag { + var merged []cli.Flag + for _, group := range groups { + merged = append(merged, group...) + } + + return merged +} diff --git a/packages/guardian-prover-health-check/cmd/flags/generator.go b/packages/guardian-prover-health-check/cmd/flags/generator.go new file mode 100644 index 0000000000..9f9f4988ee --- /dev/null +++ b/packages/guardian-prover-health-check/cmd/flags/generator.go @@ -0,0 +1,24 @@ +package flags + +import "github.com/urfave/cli/v2" + +var ( + GenesisDate = &cli.StringFlag{ + Name: "genesisDate", + Usage: "Genesis date to start generating data from, YYYY-MM-DD", + Required: true, + Category: generatorCategory, + EnvVars: []string{"GENESIS_DATE"}, + } + Regenerate = &cli.StringFlag{ + Name: "regenerate", + Usage: "True to delete all existing data and regenerate from genesis, false to not", + Required: false, + Category: generatorCategory, + EnvVars: []string{"REGENERATE"}, + } +) +var GeneratorFlags = MergeFlags(CommonFlags, []cli.Flag{ + GenesisDate, + Regenerate, +}) diff --git a/packages/guardian-prover-health-check/cmd/flags/healthcheck.go b/packages/guardian-prover-health-check/cmd/flags/healthcheck.go new file mode 100644 index 0000000000..78f913e43b --- /dev/null +++ b/packages/guardian-prover-health-check/cmd/flags/healthcheck.go @@ -0,0 +1,72 @@ +package flags + +import ( + "time" + + "github.com/urfave/cli/v2" +) + +// required flags +var ( + GuardianProverEndpoints = &cli.StringSliceFlag{ + Name: "guardianProverEndpoints", + Usage: "List of guardian prover endpoints", + Category: healthCheckCategory, + EnvVars: []string{"GUARDIAN_PROVER_ENDPOINTS"}, + Required: true, + } + GuardianProverContractAddress = &cli.StringFlag{ + Name: "guardianProverContractAddress", + Usage: "Address of the GuardianProver contract", + Category: healthCheckCategory, + EnvVars: []string{"GUARDIAN_PROVER_CONTRACT_ADDRESS"}, + Required: true, + } + RPCUrl = &cli.StringFlag{ + Name: "rpcUrl", + Usage: "RPC Url", + Category: healthCheckCategory, + EnvVars: []string{"RPC_URL"}, + Required: true, + } +) +var ( + Backoff = &cli.DurationFlag{ + Name: "backoff", + Usage: "Backoff in time units (ie: 5s)", + Value: 1 * time.Second, + Category: healthCheckCategory, + EnvVars: []string{"BACKOFF"}, + } + HTTPPort = &cli.Uint64Flag{ + Name: "http.port", + Usage: "Port to run http server on", + Category: healthCheckCategory, + Value: 4102, + EnvVars: []string{"HTTP_PORT"}, + } + CORSOrigins = &cli.StringFlag{ + Name: "http.corsOrigins", + Usage: "Comma-delinated list of cors origins", + Category: healthCheckCategory, + Value: "*", + EnvVars: []string{"HTTP_CORS_ORIGINS"}, + } + Interval = &cli.DurationFlag{ + Name: "interval", + Usage: "Health check interval duration", + Category: healthCheckCategory, + Value: 12 * time.Second, + EnvVars: []string{"INTERVAL"}, + } +) + +var HealthCheckFlags = MergeFlags(CommonFlags, []cli.Flag{ + HTTPPort, + CORSOrigins, + Backoff, + GuardianProverEndpoints, + GuardianProverContractAddress, + Interval, + RPCUrl, +}) diff --git a/packages/guardian-prover-health-check/cmd/main.go b/packages/guardian-prover-health-check/cmd/main.go new file mode 100644 index 0000000000..c07735e773 --- /dev/null +++ b/packages/guardian-prover-health-check/cmd/main.go @@ -0,0 +1,59 @@ +package main + +import ( + "fmt" + "log" + "os" + + "github.com/joho/godotenv" + "github.com/taikoxyz/taiko-mono/packages/guardian-prover-health-check/cmd/flags" + "github.com/taikoxyz/taiko-mono/packages/guardian-prover-health-check/cmd/utils" + "github.com/taikoxyz/taiko-mono/packages/guardian-prover-health-check/generator" + "github.com/taikoxyz/taiko-mono/packages/guardian-prover-health-check/healthchecker" + "github.com/urfave/cli/v2" +) + +func main() { + app := cli.NewApp() + + log.SetOutput(os.Stdout) + // attempt to load a .env file to overwrite CLI flags, but allow it to not + // exist. + + envFile := os.Getenv("ENV_FILE") + if envFile == "" { + envFile = ".env" + } + + _ = godotenv.Load(envFile) + + app.Name = "Taiko guardian-prover-health-check" + app.Usage = "The taiko guardian-prover-health-check softwares command line interface" + app.Copyright = "Copyright 2021-2023 Taiko Labs" + app.Description = "guardian-prover-health-check implementation in Golang for Taiko protocol" + app.Authors = []*cli.Author{{Name: "Taiko Labs", Email: "info@taiko.xyz"}} + app.EnableBashCompletion = true + + // All supported sub commands. + app.Commands = []*cli.Command{ + { + Name: "healthchecker", + Flags: flags.HealthCheckFlags, + Usage: "Starts the health check software", + Description: "Taiko guardian-prover-health-check health checker software", + Action: utils.SubcommandAction(new(healthchecker.HealthChecker)), + }, + { + Name: "generator", + Flags: flags.GeneratorFlags, + Usage: "Starts the health check software", + Description: "Taiko guardian-prover-health-check uptime availability generator software", + Action: utils.SubcommandAction(new(generator.Generator)), + }, + } + + if err := app.Run(os.Args); err != nil { + fmt.Fprintln(os.Stderr, err) + os.Exit(1) + } +} diff --git a/packages/guardian-prover-health-check/cmd/utils/subcommand.go b/packages/guardian-prover-health-check/cmd/utils/subcommand.go new file mode 100644 index 0000000000..7ceb08e2b2 --- /dev/null +++ b/packages/guardian-prover-health-check/cmd/utils/subcommand.go @@ -0,0 +1,62 @@ +package utils + +import ( + "context" + "os" + "os/signal" + "syscall" + + "log/slog" + + "github.com/taikoxyz/taiko-mono/packages/guardian-prover-health-check/metrics" + "github.com/urfave/cli/v2" +) + +type SubcommandApplication interface { + InitFromCli(context.Context, *cli.Context) error + Name() string + Start() error + Close(context.Context) +} + +func SubcommandAction(app SubcommandApplication) cli.ActionFunc { + return func(c *cli.Context) error { + ctx, ctxClose := context.WithCancel(context.Background()) + defer func() { ctxClose() }() + + if err := app.InitFromCli(ctx, c); err != nil { + return err + } + + slog.Info("Starting Taiko relayer application", "name", app.Name()) + + if err := app.Start(); err != nil { + slog.Error("Starting application error", "name", app.Name(), "error", err) + return err + } + + _, startMetrics := metrics.Serve(ctx, c) + + if err := startMetrics(); err != nil { + slog.Error("Starting metrics server error", "error", err) + return err + } + + defer func() { + ctxClose() + app.Close(ctx) + slog.Info("Application stopped", "name", app.Name()) + }() + + quitCh := make(chan os.Signal, 1) + signal.Notify(quitCh, []os.Signal{ + os.Interrupt, + os.Kill, + syscall.SIGTERM, + syscall.SIGQUIT, + }...) + <-quitCh + + return nil + } +} diff --git a/packages/guardian-prover-health-check/db.go b/packages/guardian-prover-health-check/db.go new file mode 100644 index 0000000000..75263f6eda --- /dev/null +++ b/packages/guardian-prover-health-check/db.go @@ -0,0 +1,28 @@ +package guardianproverhealthcheck + +import ( + "database/sql" + + "github.com/cyberhorsey/errors" + "gorm.io/gorm" +) + +var ( + ErrNoDB = errors.Validation.NewWithKeyAndDetail("ERR_NO_DB", "DB is required") +) + +type DBConnectionOpts struct { + Name string + Password string + Host string + Database string + MaxIdleConns uint64 + MaxOpenConns uint64 + MaxConnLifetime uint64 + OpenFunc func(dsn string) (DB, error) +} + +type DB interface { + DB() (*sql.DB, error) + GormDB() *gorm.DB +} diff --git a/packages/guardian-prover-health-check/db/db.go b/packages/guardian-prover-health-check/db/db.go new file mode 100644 index 0000000000..e2d19c61ca --- /dev/null +++ b/packages/guardian-prover-health-check/db/db.go @@ -0,0 +1,86 @@ +package db + +import ( + "database/sql" + "fmt" + "time" + + "github.com/cyberhorsey/errors" + "gorm.io/gorm" +) + +type DB struct { + gormdb *gorm.DB +} + +func (db *DB) DB() (*sql.DB, error) { + return db.gormdb.DB() +} + +func (db *DB) GormDB() *gorm.DB { + return db.gormdb +} + +func New(gormdb *gorm.DB) *DB { + return &DB{ + gormdb: gormdb, + } +} + +var ( + ErrNoDB = errors.Validation.NewWithKeyAndDetail("ERR_NO_DB", "DB is required") +) + +type DBConnectionOpts struct { + Name string + Password string + Host string + Database string + MaxIdleConns uint64 + MaxOpenConns uint64 + MaxConnLifetime uint64 + OpenFunc func(dsn string) (*DB, error) +} + +func OpenDBConnection(opts DBConnectionOpts) (*DB, error) { + dsn := "" + if opts.Password == "" { + dsn = fmt.Sprintf( + "%v@tcp(%v)/%v?charset=utf8mb4&parseTime=True&loc=%v", + opts.Name, + opts.Host, + opts.Database, + "UTC", + ) + } else { + dsn = fmt.Sprintf( + "%v:%v@tcp(%v)/%v?charset=utf8mb4&parseTime=True&loc=%v", + opts.Name, + opts.Password, + opts.Host, + opts.Database, + "UTC", + ) + } + + db, err := opts.OpenFunc(dsn) + if err != nil { + return nil, err + } + + sqlDB, err := db.DB() + if err != nil { + return nil, err + } + + // SetMaxOpenConns sets the maximum number of open connections to the database. + sqlDB.SetMaxOpenConns(int(opts.MaxOpenConns)) + + // SetMaxIdleConns sets the maximum number of connections in the idle connection pool. + sqlDB.SetMaxIdleConns(int(opts.MaxIdleConns)) + + // SetConnMaxLifetime sets the maximum amount of time a connection may be reused. + sqlDB.SetConnMaxLifetime(time.Duration(opts.MaxConnLifetime)) + + return db, nil +} diff --git a/packages/guardian-prover-health-check/db/db_test.go b/packages/guardian-prover-health-check/db/db_test.go new file mode 100644 index 0000000000..001cc59d67 --- /dev/null +++ b/packages/guardian-prover-health-check/db/db_test.go @@ -0,0 +1,14 @@ +package db + +import ( + "testing" + + "github.com/stretchr/testify/assert" + "gorm.io/gorm" +) + +func Test_DB(t *testing.T) { + d := New(&gorm.DB{}) + + assert.Equal(t, &gorm.DB{}, d.GormDB()) +} diff --git a/packages/guardian-prover-health-check/generator/config.go b/packages/guardian-prover-health-check/generator/config.go new file mode 100644 index 0000000000..4c17d508e9 --- /dev/null +++ b/packages/guardian-prover-health-check/generator/config.go @@ -0,0 +1,75 @@ +package generator + +import ( + "database/sql" + "time" + + "github.com/taikoxyz/taiko-mono/packages/guardian-prover-health-check/cmd/flags" + "github.com/taikoxyz/taiko-mono/packages/guardian-prover-health-check/db" + "github.com/urfave/cli/v2" + "gorm.io/driver/mysql" + "gorm.io/gorm" + "gorm.io/gorm/logger" +) + +type DB interface { + DB() (*sql.DB, error) + GormDB() *gorm.DB +} + +type Config struct { + // db configs + DatabaseUsername string + DatabasePassword string + DatabaseName string + DatabaseHost string + DatabaseMaxIdleConns uint64 + DatabaseMaxOpenConns uint64 + DatabaseMaxConnLifetime uint64 + MetricsHTTPPort uint64 + GenesisDate time.Time + Regenerate bool + OpenDBFunc func() (DB, error) +} + +// NewConfigFromCliContext creates a new config instance from command line flags. +func NewConfigFromCliContext(c *cli.Context) (*Config, error) { + date, err := time.Parse("2006-01-02", c.String(flags.GenesisDate.Name)) + if err != nil { + return nil, err + } + + return &Config{ + DatabaseUsername: c.String(flags.DatabaseUsername.Name), + DatabasePassword: c.String(flags.DatabasePassword.Name), + DatabaseName: c.String(flags.DatabaseName.Name), + DatabaseHost: c.String(flags.DatabaseHost.Name), + DatabaseMaxIdleConns: c.Uint64(flags.DatabaseMaxIdleConns.Name), + DatabaseMaxOpenConns: c.Uint64(flags.DatabaseMaxOpenConns.Name), + DatabaseMaxConnLifetime: c.Uint64(flags.DatabaseConnMaxLifetime.Name), + GenesisDate: date, + Regenerate: c.Bool(flags.Regenerate.Name), + MetricsHTTPPort: c.Uint64(flags.MetricsHTTPPort.Name), + OpenDBFunc: func() (DB, error) { + return db.OpenDBConnection(db.DBConnectionOpts{ + Name: c.String(flags.DatabaseUsername.Name), + Password: c.String(flags.DatabasePassword.Name), + Database: c.String(flags.DatabaseName.Name), + Host: c.String(flags.DatabaseHost.Name), + MaxIdleConns: c.Uint64(flags.DatabaseMaxIdleConns.Name), + MaxOpenConns: c.Uint64(flags.DatabaseMaxOpenConns.Name), + MaxConnLifetime: c.Uint64(flags.DatabaseConnMaxLifetime.Name), + OpenFunc: func(dsn string) (*db.DB, error) { + gormDB, err := gorm.Open(mysql.Open(dsn), &gorm.Config{ + Logger: logger.Default.LogMode(logger.Silent), + }) + if err != nil { + return nil, err + } + + return db.New(gormDB), nil + }, + }) + }, + }, nil +} diff --git a/packages/guardian-prover-health-check/generator/config_test.go b/packages/guardian-prover-health-check/generator/config_test.go new file mode 100644 index 0000000000..aae2c43a54 --- /dev/null +++ b/packages/guardian-prover-health-check/generator/config_test.go @@ -0,0 +1,58 @@ +package generator + +import ( + "context" + "testing" + "time" + + "github.com/stretchr/testify/assert" + "github.com/taikoxyz/taiko-mono/packages/guardian-prover-health-check/cmd/flags" + "github.com/urfave/cli/v2" +) + +func setupApp() *cli.App { + app := cli.NewApp() + app.Flags = flags.GeneratorFlags + app.Action = func(ctx *cli.Context) error { + _, err := NewConfigFromCliContext(ctx) + return err + } + + return app +} + +func TestNewConfigFromCliContext(t *testing.T) { + app := setupApp() + + app.Action = func(ctx *cli.Context) error { + c, err := NewConfigFromCliContext(ctx) + + assert.Nil(t, err) + assert.Equal(t, "dbuser", c.DatabaseUsername) + assert.Equal(t, "dbpass", c.DatabasePassword) + assert.Equal(t, "dbname", c.DatabaseName) + assert.Equal(t, "dbhost", c.DatabaseHost) + + d, err := time.Parse("2006-01-02", "2023-11-03") + assert.Nil(t, err) + + assert.Equal(t, d, c.GenesisDate) + + c.OpenDBFunc = func() (DB, error) { + return nil, nil + } + + assert.Nil(t, InitFromConfig(context.Background(), new(Generator), c)) + + return err + } + + assert.Nil(t, app.Run([]string{ + "TestNewConfigFromCliContext", + "--" + flags.DatabaseUsername.Name, "dbuser", + "--" + flags.DatabasePassword.Name, "dbpass", + "--" + flags.DatabaseHost.Name, "dbhost", + "--" + flags.DatabaseName.Name, "dbname", + "--" + flags.GenesisDate.Name, "2023-11-03", + })) +} diff --git a/packages/guardian-prover-health-check/generator/generator.go b/packages/guardian-prover-health-check/generator/generator.go new file mode 100644 index 0000000000..24599218cb --- /dev/null +++ b/packages/guardian-prover-health-check/generator/generator.go @@ -0,0 +1,270 @@ +package generator + +import ( + "context" + "time" + + "github.com/urfave/cli/v2" + "golang.org/x/exp/slog" +) + +type generatorQueryResult struct { + Requests int + SuccessfulRequests int +} + +// Generator is a subcommand which is intended to be run on an interval, like +// a cronjob, to parse the indexed data from the database, and generate +// time series data that can easily be displayed via charting libraries. +type Generator struct { + db DB + genesisDate time.Time + regenerate bool +} + +func (g *Generator) InitFromCli(ctx context.Context, c *cli.Context) error { + config, err := NewConfigFromCliContext(c) + if err != nil { + return err + } + + return InitFromConfig(ctx, g, config) +} + +func InitFromConfig(ctx context.Context, g *Generator, cfg *Config) error { + db, err := cfg.OpenDBFunc() + if err != nil { + return err + } + + g.db = db + g.genesisDate = cfg.GenesisDate + g.regenerate = cfg.Regenerate + + return nil +} + +func (g *Generator) Name() string { + return "generator" +} + +func (g *Generator) Start() error { + if g.regenerate { + slog.Info("regenerating, deleting existing data") + + if err := g.deleteUptimeAvailabilityStats(context.Background()); err != nil { + return err + } + } + + slog.Info("generating uptime availability statistics") + + if err := g.generateUptimeAvailabilityStats(context.Background()); err != nil { + return err + } + + return nil +} + +func (g *Generator) Close(ctx context.Context) { + sqlDB, err := g.db.DB() + if err != nil { + slog.Error("error getting sqldb when closing generator", "err", err.Error()) + } + + if err := sqlDB.Close(); err != nil { + slog.Error("error closing sqlbd connection", "err", err.Error()) + } +} + +func (g *Generator) generateUptimeAvailabilityStats(ctx context.Context) error { + guardianProverIDs, err := g.getGuardianProverIDs(ctx) + if err != nil { + return err + } + + for _, guardianProverID := range guardianProverIDs { + if err := g.generateByGuardianProverID(ctx, guardianProverID); err != nil { + slog.Error("error generating", "guardianProverID", guardianProverID, "error", err.Error()) + return err + } + } + + return nil +} + +func (g *Generator) getGuardianProverIDs(ctx context.Context) ([]int, error) { + var guardianProverIDs []int + + q := `SELECT DISTINCT guardian_prover_id FROM health_checks;` + + err := g.db.GormDB().Raw(q).Scan(&guardianProverIDs).Error + + if err != nil { + return nil, err + } + + slog.Info("guardian prover IDs found", "guardianProverIDs", guardianProverIDs) + + return guardianProverIDs, nil +} + +// generateByTask generates uptime availability data for each day in between the current date +// and the most recently generated data, for the given guardian prover. +func (g *Generator) generateByGuardianProverID(ctx context.Context, guardianProverID int) error { + slog.Info("generating", "guardianProverID", guardianProverID) + + startingDate, err := g.getStartingDate(ctx, guardianProverID) + if err != nil { + return err + } + + currentDate := g.getCurrentDate() + if startingDate.Compare(currentDate) == 0 { + slog.Info( + "data already generated up-to-date for id", + "guardianProverID", guardianProverID, + "date", startingDate.Format("2006-01-02"), + "currentDate", currentDate.Format("2006-01-02"), + ) + + return nil + } + + // Loop through each date from latestDate to currentDate + for d := startingDate; d.Before(currentDate); d = d.AddDate(0, 0, 1) { + slog.Info("Processing", + "guardianProverID", guardianProverID, + "date", d.Format("2006-01-02"), + "currentDate", currentDate.Format("2006-01-02"), + ) + + result, err := g.query(ctx, guardianProverID, d) + if err != nil { + slog.Info("Query failed", "guardianProverID", guardianProverID, "date", d.Format("2006-01-02"), "error", err.Error()) + return err + } + + var uptime float64 = 0 + if result.Requests != 0 && result.SuccessfulRequests != 0 { + uptime = (float64(result.Requests) / float64(result.SuccessfulRequests)) * 100 + } + + slog.Info("Query successful", + "guardianProverID", guardianProverID, + "date", d.Format("2006-01-02"), + "numRequests", result.Requests, + "numSuccessfulRequests", result.SuccessfulRequests, + "uptime", uptime, + ) + + insertStmt := ` + INSERT INTO stats(guardian_prover_id, requests, successful_requests, uptime, date) + VALUES (?, ?, ?, ?, ?)` + + err = g.db.GormDB().Exec( + insertStmt, + guardianProverID, + result.Requests, + result.SuccessfulRequests, + uptime, + d.Format("2006-01-02"), + ).Error + if err != nil { + slog.Info("Insert failed", + "guardianProverID", guardianProverID, + "date", d.Format("2006-01-02"), + "error", err.Error(), + ) + + return err + } + + slog.Info("Processed", "guardianProverID", guardianProverID, "date", d.Format("2006-01-02")) + } + + return nil +} + +func (g *Generator) query(ctx context.Context, guardianProverID int, date time.Time) (*generatorQueryResult, error) { + dateString := date.Format("2006-01-02") + + var numRequests int + + var numSuccessfulRequests int + + query := "SELECT count(*) FROM health_checks WHERE guardian_prover_id = ? AND DATE(created_at) = ?" + err := g.db.GormDB(). + Raw(query, guardianProverID, dateString). + Scan(&numRequests).Error + + if err != nil { + return nil, err + } + + query = "SELECT count(*) FROM health_checks WHERE guardian_prover_id = ? AND alive = 1 AND DATE(created_at) = ?" + err = g.db.GormDB(). + Raw(query, guardianProverID, dateString). + Scan(&numSuccessfulRequests).Error + + if err != nil { + return nil, err + } + + result := &generatorQueryResult{ + Requests: numRequests, + SuccessfulRequests: numSuccessfulRequests, + } + + return result, nil +} + +// getCurrentDate returns the current date in YYYY-MM-DD format +func (g *Generator) getCurrentDate() time.Time { + // Get current date + currentTime := time.Now().UTC() + currentDate := time.Date(currentTime.Year(), currentTime.Month(), currentTime.Day(), 0, 0, 0, 0, time.UTC) + + return currentDate +} + +// getStartingDate returns first required data to be generated, one after the latest date entry, +// or the genesis date. +func (g *Generator) getStartingDate(ctx context.Context, guardianProverID int) (time.Time, error) { + var latestDateString string + + var nextRequiredDate time.Time + + q := `SELECT date FROM health_checks WHERE guardian_prover_id = ? ORDER BY date DESC LIMIT 1;` + + err := g.db.GormDB().Raw(q, guardianProverID).Scan(&latestDateString).Error + + slog.Info("latestDateString", "guardianProverID", guardianProverID, "date", latestDateString) + + if err != nil || latestDateString == "" { + nextRequiredDate = g.genesisDate + } else { + latestDate, err := time.Parse("2006-01-02", latestDateString) + if err != nil { + return time.Time{}, err + } + + nextRequiredDate = latestDate.AddDate(0, 0, 1) + } + + slog.Info("next required date for task", + "guardianProverID", guardianProverID, + "nextRequiredDate", nextRequiredDate.Format("2006-01-02"), + ) + + return nextRequiredDate, nil +} + +func (g *Generator) deleteUptimeAvailabilityStats(ctx context.Context) error { + deleteStmt := "DELETE FROM stats;" + if err := g.db.GormDB().Exec(deleteStmt).Error; err != nil { + return err + } + + return nil +} diff --git a/packages/guardian-prover-health-check/healthcheck.go b/packages/guardian-prover-health-check/healthcheck.go new file mode 100644 index 0000000000..5e8353bd2c --- /dev/null +++ b/packages/guardian-prover-health-check/healthcheck.go @@ -0,0 +1,38 @@ +package guardianproverhealthcheck + +import ( + "context" + "net/http" + + "github.com/morkid/paginate" +) + +type HealthCheck struct { + ID int `json:"id"` + GuardianProverID uint64 `json:"guardianProverId"` + Alive bool `json:"alive"` + ExpectedAddress string `json:"expectedAddress"` + RecoveredAddress string `json:"recoveredAddress"` + SignedResponse string `json:"signedResponse"` +} + +type SaveHealthCheckOpts struct { + GuardianProverID uint64 + Alive bool + ExpectedAddress string + RecoveredAddress string + SignedResponse string +} + +type HealthCheckRepository interface { + Get( + ctx context.Context, + req *http.Request, + ) (paginate.Page, error) + GetByGuardianProverID( + ctx context.Context, + req *http.Request, + id int, + ) (paginate.Page, error) + Save(opts SaveHealthCheckOpts) error +} diff --git a/packages/guardian-prover-health-check/healthchecker/config.go b/packages/guardian-prover-health-check/healthchecker/config.go new file mode 100644 index 0000000000..8a8eb2b648 --- /dev/null +++ b/packages/guardian-prover-health-check/healthchecker/config.go @@ -0,0 +1,78 @@ +package healthchecker + +import ( + "database/sql" + "strings" + "time" + + "github.com/taikoxyz/taiko-mono/packages/guardian-prover-health-check/cmd/flags" + "github.com/taikoxyz/taiko-mono/packages/guardian-prover-health-check/db" + "github.com/urfave/cli/v2" + "gorm.io/driver/mysql" + "gorm.io/gorm" + "gorm.io/gorm/logger" +) + +type DB interface { + DB() (*sql.DB, error) + GormDB() *gorm.DB +} + +type Config struct { + // db configs + DatabaseUsername string + DatabasePassword string + DatabaseName string + DatabaseHost string + DatabaseMaxIdleConns uint64 + DatabaseMaxOpenConns uint64 + DatabaseMaxConnLifetime uint64 + CORSOrigins []string + Backoff uint64 + HTTPPort uint64 + GuardianProverEndpoints []string + GuardianProverContractAddress string + RPCUrl string + Interval time.Duration + OpenDBFunc func() (DB, error) +} + +// NewConfigFromCliContext creates a new config instance from command line flags. +func NewConfigFromCliContext(c *cli.Context) (*Config, error) { + return &Config{ + DatabaseUsername: c.String(flags.DatabaseUsername.Name), + DatabasePassword: c.String(flags.DatabasePassword.Name), + DatabaseName: c.String(flags.DatabaseName.Name), + DatabaseHost: c.String(flags.DatabaseHost.Name), + DatabaseMaxIdleConns: c.Uint64(flags.DatabaseMaxIdleConns.Name), + DatabaseMaxOpenConns: c.Uint64(flags.DatabaseMaxOpenConns.Name), + DatabaseMaxConnLifetime: c.Uint64(flags.DatabaseConnMaxLifetime.Name), + CORSOrigins: strings.Split(c.String(flags.CORSOrigins.Name), ","), + GuardianProverEndpoints: c.StringSlice(flags.GuardianProverEndpoints.Name), + GuardianProverContractAddress: c.String(flags.GuardianProverContractAddress.Name), + RPCUrl: c.String(flags.RPCUrl.Name), + HTTPPort: c.Uint64(flags.HTTPPort.Name), + Interval: c.Duration(flags.Interval.Name), + OpenDBFunc: func() (DB, error) { + return db.OpenDBConnection(db.DBConnectionOpts{ + Name: c.String(flags.DatabaseUsername.Name), + Password: c.String(flags.DatabasePassword.Name), + Database: c.String(flags.DatabaseName.Name), + Host: c.String(flags.DatabaseHost.Name), + MaxIdleConns: c.Uint64(flags.DatabaseMaxIdleConns.Name), + MaxOpenConns: c.Uint64(flags.DatabaseMaxOpenConns.Name), + MaxConnLifetime: c.Uint64(flags.DatabaseConnMaxLifetime.Name), + OpenFunc: func(dsn string) (*db.DB, error) { + gormDB, err := gorm.Open(mysql.Open(dsn), &gorm.Config{ + Logger: logger.Default.LogMode(logger.Silent), + }) + if err != nil { + return nil, err + } + + return db.New(gormDB), nil + }, + }) + }, + }, nil +} diff --git a/packages/guardian-prover-health-check/healthchecker/config_test.go b/packages/guardian-prover-health-check/healthchecker/config_test.go new file mode 100644 index 0000000000..6776e04c06 --- /dev/null +++ b/packages/guardian-prover-health-check/healthchecker/config_test.go @@ -0,0 +1,76 @@ +package healthchecker + +import ( + "strings" + "testing" + + "github.com/stretchr/testify/assert" + "github.com/taikoxyz/taiko-mono/packages/guardian-prover-health-check/cmd/flags" + "github.com/taikoxyz/taiko-mono/packages/guardian-prover-health-check/mock" + "github.com/urfave/cli/v2" +) + +var ( + guardianProverAddress = "0x63FaC9201494f0bd17B9892B9fae4d52fe3BD377" + guardianProverEndpoints = "http://endpoint.com,http://endpoint2.com" + databaseMaxIdleConns = "10" + databaseMaxOpenConns = "10" + databaseMaxConnLifetime = "30" + HTTPPort = "1000" +) + +func setupApp() *cli.App { + app := cli.NewApp() + app.Flags = flags.HealthCheckFlags + app.Action = func(ctx *cli.Context) error { + _, err := NewConfigFromCliContext(ctx) + return err + } + + return app +} + +func TestNewConfigFromCliContext(t *testing.T) { + app := setupApp() + + app.Action = func(ctx *cli.Context) error { + c, err := NewConfigFromCliContext(ctx) + assert.Nil(t, err) + assert.Equal(t, "dbuser", c.DatabaseUsername) + assert.Equal(t, "dbpass", c.DatabasePassword) + assert.Equal(t, "dbname", c.DatabaseName) + assert.Equal(t, "dbhost", c.DatabaseHost) + assert.Equal(t, "rpcUrl", c.RPCUrl) + assert.Equal(t, strings.Split(guardianProverEndpoints, ","), c.GuardianProverEndpoints) + assert.Equal(t, guardianProverAddress, c.GuardianProverContractAddress) + assert.Equal(t, []string{"*"}, c.CORSOrigins) + assert.Equal(t, uint64(10), c.DatabaseMaxIdleConns) + assert.Equal(t, uint64(10), c.DatabaseMaxOpenConns) + assert.Equal(t, uint64(30), c.DatabaseMaxConnLifetime) + assert.Equal(t, uint64(1000), c.HTTPPort) + + c.OpenDBFunc = func() (DB, error) { + return &mock.DB{}, nil + } + + // assert.Nil(t, InitFromConfig(context.Background(), new(Indexer), c)) + + return err + } + + assert.Nil(t, app.Run([]string{ + "TestNewConfigFromCliContext", + "--" + flags.DatabaseUsername.Name, "dbuser", + "--" + flags.DatabasePassword.Name, "dbpass", + "--" + flags.DatabaseHost.Name, "dbhost", + "--" + flags.DatabaseName.Name, "dbname", + "--" + flags.RPCUrl.Name, "rpcUrl", + "--" + flags.CORSOrigins.Name, "*", + "--" + flags.DatabaseMaxOpenConns.Name, databaseMaxOpenConns, + "--" + flags.DatabaseMaxIdleConns.Name, databaseMaxIdleConns, + "--" + flags.DatabaseConnMaxLifetime.Name, databaseMaxConnLifetime, + "--" + flags.HTTPPort.Name, HTTPPort, + "--" + flags.GuardianProverContractAddress.Name, guardianProverAddress, + "--" + flags.GuardianProverEndpoints.Name, guardianProverEndpoints, + })) +} diff --git a/packages/guardian-prover-health-check/healthchecker/healthchecker.go b/packages/guardian-prover-health-check/healthchecker/healthchecker.go new file mode 100644 index 0000000000..c27567f868 --- /dev/null +++ b/packages/guardian-prover-health-check/healthchecker/healthchecker.go @@ -0,0 +1,272 @@ +package healthchecker + +import ( + "context" + "encoding/base64" + "encoding/json" + "errors" + "fmt" + "io" + "log/slog" + "math/big" + "net/http" + "net/url" + "time" + + "github.com/ethereum/go-ethereum/accounts/abi/bind" + "github.com/ethereum/go-ethereum/common" + "github.com/ethereum/go-ethereum/crypto" + "github.com/ethereum/go-ethereum/ethclient" + "github.com/labstack/echo/v4" + guardianproverhealthcheck "github.com/taikoxyz/taiko-mono/packages/guardian-prover-health-check" + "github.com/taikoxyz/taiko-mono/packages/guardian-prover-health-check/bindings/guardianprover" + hchttp "github.com/taikoxyz/taiko-mono/packages/guardian-prover-health-check/http" + "github.com/taikoxyz/taiko-mono/packages/guardian-prover-health-check/repo" + "github.com/urfave/cli/v2" +) + +var ( + msg = crypto.Keccak256Hash([]byte("HEART_BEAT")).Bytes() +) + +type guardianProver struct { + address common.Address + id *big.Int + endpoint *url.URL +} + +type HealthChecker struct { + ctx context.Context + cancelCtx context.CancelFunc + healthCheckRepo guardianproverhealthcheck.HealthCheckRepository + interval time.Duration + guardianProverContract *guardianprover.GuardianProver + numGuardians uint64 + guardianProvers []guardianProver + httpSrv *hchttp.Server + httpPort uint64 +} + +type healthCheckResponse struct { + ProverAddress string `json:"prover"` + HeartBeatSignature string `json:"heartBeatSignature"` +} + +func (h *HealthChecker) Name() string { + return "healthchecker" +} + +func (h *HealthChecker) Close(ctx context.Context) { + h.cancelCtx() + + if err := h.httpSrv.Shutdown(ctx); err != nil { + slog.Error("error encountered shutting down http server", "error", err) + } +} + +func (h *HealthChecker) InitFromCli(ctx context.Context, c *cli.Context) error { + cfg, err := NewConfigFromCliContext(c) + if err != nil { + return err + } + + return InitFromConfig(ctx, h, cfg) +} + +func InitFromConfig(ctx context.Context, h *HealthChecker, cfg *Config) (err error) { + db, err := cfg.OpenDBFunc() + if err != nil { + return err + } + + healthCheckRepo, err := repo.NewHealthCheckRepository(db) + if err != nil { + return err + } + + endpoints := make([]*url.URL, 0) + + for _, v := range cfg.GuardianProverEndpoints { + url, err := url.Parse(v) + if err != nil { + return err + } + + endpoints = append(endpoints, url) + } + + ethClient, err := ethclient.Dial(cfg.RPCUrl) + if err != nil { + return err + } + + guardianProverContract, err := guardianprover.NewGuardianProver( + common.HexToAddress(cfg.GuardianProverContractAddress), + ethClient, + ) + if err != nil { + return err + } + + numGuardians, err := guardianProverContract.NUMGUARDIANS(nil) + if err != nil { + return err + } + + var guardianProvers []guardianProver + + for i := 0; i < int(numGuardians.Uint64()); i++ { + guardianAddress, err := guardianProverContract.Guardians(&bind.CallOpts{}, new(big.Int).SetInt64(int64(i))) + if err != nil { + return err + } + + guardianId, err := guardianProverContract.GuardianIds(&bind.CallOpts{}, guardianAddress) + if err != nil { + return err + } + + endpoint, err := url.Parse(cfg.GuardianProverEndpoints[i]) + if err != nil { + return err + } + + guardianProvers = append(guardianProvers, guardianProver{ + address: guardianAddress, + id: guardianId, + endpoint: endpoint, + }) + } + + h.httpSrv, err = hchttp.NewServer(hchttp.NewServerOpts{ + Echo: echo.New(), + HealthCheckRepo: healthCheckRepo, + }) + + if err != nil { + return err + } + + h.guardianProvers = guardianProvers + h.numGuardians = numGuardians.Uint64() + h.healthCheckRepo = healthCheckRepo + h.interval = cfg.Interval + h.guardianProverContract = guardianProverContract + h.httpPort = cfg.HTTPPort + + h.ctx, h.cancelCtx = context.WithCancel(ctx) + + return nil +} + +func (h *HealthChecker) Start() error { + go func() { + if err := h.httpSrv.Start(fmt.Sprintf(":%v", h.httpPort)); !errors.Is(err, http.ErrServerClosed) { + slog.Error("Failed to start http server", "error", err) + } + }() + + go h.checkGuardianProversOnInterval() + + return nil +} + +func (h *HealthChecker) checkGuardianProversOnInterval() { + t := time.NewTicker(h.interval) + + for { + select { + case <-h.ctx.Done(): + return + case <-t.C: + for _, g := range h.guardianProvers { + resp, recoveredAddr, err := h.checkGuardianProver(g) + if err != nil { + slog.Error( + "error checking guardian prover endpoint", + "endpoint", g.endpoint, + "id", g.id, + "address", g.address.Hex(), + "recoveredAddr", recoveredAddr, + "error", err, + ) + } + + var sig string = "" + + if resp != nil { + sig = resp.HeartBeatSignature + } + + err = h.healthCheckRepo.Save( + guardianproverhealthcheck.SaveHealthCheckOpts{ + GuardianProverID: g.id.Uint64(), + Alive: sig != "", + ExpectedAddress: g.address.Hex(), + RecoveredAddress: recoveredAddr, + SignedResponse: sig, + }, + ) + + if err != nil { + slog.Error("error saving failed health check to database", + "endpoint", g.endpoint, + "id", g.id, + "address", g.address.Hex(), + "recoveredAddr", recoveredAddr, + "sig", sig, + "error", err, + ) + } else { + slog.Info("saved health check to database", + "endpoint", g.endpoint, + "id", g.id, + "address", g.address.Hex(), + "recoveredAddr", recoveredAddr, + "sig", sig, + ) + } + } + } + } +} + +func (h *HealthChecker) checkGuardianProver(g guardianProver) (*healthCheckResponse, string, error) { + slog.Info("checking guardian prover", "id", g.id, "endpoint", g.endpoint) + + healthCheckResponse := &healthCheckResponse{} + + resp, err := http.Get(g.endpoint.String() + "/status") + if err != nil { + // save fail to db + return healthCheckResponse, "", err + } + + b, err := io.ReadAll(resp.Body) + if err != nil { + return healthCheckResponse, "", err + } + + if err := json.Unmarshal(b, healthCheckResponse); err != nil { + return healthCheckResponse, "", err + } + + if g.address.Cmp(common.HexToAddress(healthCheckResponse.ProverAddress)) != 0 { + slog.Error("address mismatch", "expected", g.address.Hex(), "received", healthCheckResponse.ProverAddress) + return healthCheckResponse, "", errors.New("prover address provided was not the address expected") + } + + b64DecodedSig, err := base64.StdEncoding.DecodeString(healthCheckResponse.HeartBeatSignature) + if err != nil { + return healthCheckResponse, "", err + } + + pubKey, err := crypto.SigToPub(msg, b64DecodedSig) + if err != nil { + return healthCheckResponse, "", err + } + + recoveredAddr := crypto.PubkeyToAddress(*pubKey) + + return healthCheckResponse, recoveredAddr.Hex(), nil +} diff --git a/packages/guardian-prover-health-check/http/get_health_checks.go b/packages/guardian-prover-health-check/http/get_health_checks.go new file mode 100644 index 0000000000..00e9509795 --- /dev/null +++ b/packages/guardian-prover-health-check/http/get_health_checks.go @@ -0,0 +1,27 @@ +package http + +import ( + "net/http" + + echo "github.com/labstack/echo/v4" +) + +// GetHealthChecks +// +// returns the health checks. +// +// @Summary Get health checks +// @ID get-health-checks +// @Accept json +// @Produce json +// @Success 200 {object} paginate.Page +// @Router /healthchecks [get] + +func (srv *Server) GetHealthChecks(c echo.Context) error { + page, err := srv.healthCheckRepo.Get(c.Request().Context(), c.Request()) + if err != nil { + return c.JSON(http.StatusBadRequest, err) + } + + return c.JSON(http.StatusOK, page) +} diff --git a/packages/guardian-prover-health-check/http/get_health_checks_by_guardian_prover_id.go b/packages/guardian-prover-health-check/http/get_health_checks_by_guardian_prover_id.go new file mode 100644 index 0000000000..e65c2dee97 --- /dev/null +++ b/packages/guardian-prover-health-check/http/get_health_checks_by_guardian_prover_id.go @@ -0,0 +1,39 @@ +package http + +import ( + "errors" + "net/http" + "strconv" + + echo "github.com/labstack/echo/v4" +) + +// GetHealthChecks +// +// returns the health checks. +// +// @Summary Get health checks +// @ID get-health-checks +// @Accept json +// @Produce json +// @Success 200 {object} paginate.Page +// @Router /healthchecks [get] + +func (srv *Server) GetHealthChecksByGuardianProverID(c echo.Context) error { + idParam := c.Param("id") + if idParam == "" { + return c.JSON(http.StatusBadRequest, errors.New("no id provided")) + } + + id, err := strconv.Atoi(idParam) + if err != nil { + return c.JSON(http.StatusBadRequest, err) + } + + page, err := srv.healthCheckRepo.GetByGuardianProverID(c.Request().Context(), c.Request(), id) + if err != nil { + return c.JSON(http.StatusBadRequest, err) + } + + return c.JSON(http.StatusOK, page) +} diff --git a/packages/guardian-prover-health-check/http/get_health_checks_by_guardian_prover_id_test.go b/packages/guardian-prover-health-check/http/get_health_checks_by_guardian_prover_id_test.go new file mode 100644 index 0000000000..3b4e59f17c --- /dev/null +++ b/packages/guardian-prover-health-check/http/get_health_checks_by_guardian_prover_id_test.go @@ -0,0 +1,66 @@ +package http + +import ( + "fmt" + "net/http" + "net/http/httptest" + "testing" + + "github.com/cyberhorsey/webutils/testutils" + "github.com/labstack/echo/v4" + "github.com/stretchr/testify/assert" + guardianproverhealthcheck "github.com/taikoxyz/taiko-mono/packages/guardian-prover-health-check" +) + +func Test_GetHealthChecksByGuardianProverID(t *testing.T) { + srv := newTestServer("") + + err := srv.healthCheckRepo.Save(guardianproverhealthcheck.SaveHealthCheckOpts{ + GuardianProverID: 1, + Alive: true, + ExpectedAddress: "0x123", + RecoveredAddress: "0x123", + SignedResponse: "0x123", + }) + + assert.Nil(t, err) + + assert.Equal(t, nil, err) + + tests := []struct { + name string + id string + wantStatus int + wantBodyRegexpMatches []string + }{ + { + "success", + "1", + http.StatusOK, + // nolint: lll + []string{`[{"id":0,"guardianProverId":1,"alive":true,"expectedAddress":"0x123","recoveredAddress":"0x123","signedResponse":"0x123"}]`}, + }, + { + "success", + "9839483294", + http.StatusOK, + []string{``}, + }, + } + + for _, tt := range tests { + t.Run(tt.name, func(t *testing.T) { + req := testutils.NewUnauthenticatedRequest( + echo.GET, + fmt.Sprintf("/healthchecks/%v", tt.id), + nil, + ) + + rec := httptest.NewRecorder() + + srv.ServeHTTP(rec, req) + + testutils.AssertStatusAndBody(t, rec, tt.wantStatus, tt.wantBodyRegexpMatches) + }) + } +} diff --git a/packages/guardian-prover-health-check/http/get_health_checks_test.go b/packages/guardian-prover-health-check/http/get_health_checks_test.go new file mode 100644 index 0000000000..d32db8b46b --- /dev/null +++ b/packages/guardian-prover-health-check/http/get_health_checks_test.go @@ -0,0 +1,57 @@ +package http + +import ( + "net/http" + "net/http/httptest" + "testing" + + "github.com/cyberhorsey/webutils/testutils" + "github.com/labstack/echo/v4" + "github.com/stretchr/testify/assert" + guardianproverhealthcheck "github.com/taikoxyz/taiko-mono/packages/guardian-prover-health-check" +) + +func Test_GetHealthChecks(t *testing.T) { + srv := newTestServer("") + + err := srv.healthCheckRepo.Save(guardianproverhealthcheck.SaveHealthCheckOpts{ + GuardianProverID: 1, + Alive: true, + ExpectedAddress: "0x123", + RecoveredAddress: "0x123", + SignedResponse: "0x123", + }) + + assert.Nil(t, err) + + assert.Equal(t, nil, err) + + tests := []struct { + name string + wantStatus int + wantBodyRegexpMatches []string + }{ + { + "success", + http.StatusOK, + // nolint: lll + []string{`[{"id":0,"guardianProverId":1,"alive":true,"expectedAddress":"0x123","recoveredAddress":"0x123","signedResponse":"0x123"}]`}, + }, + } + + for _, tt := range tests { + t.Run(tt.name, func(t *testing.T) { + req := testutils.NewUnauthenticatedRequest( + echo.GET, + "/healthchecks", + nil, + ) + + rec := httptest.NewRecorder() + + srv.ServeHTTP(rec, req) + + testutils.AssertStatusAndBody(t, rec, tt.wantStatus, tt.wantBodyRegexpMatches) + }) + } +} diff --git a/packages/guardian-prover-health-check/http/routes.go b/packages/guardian-prover-health-check/http/routes.go new file mode 100644 index 0000000000..b128d86fc5 --- /dev/null +++ b/packages/guardian-prover-health-check/http/routes.go @@ -0,0 +1,10 @@ +package http + +func (srv *Server) configureRoutes() { + srv.echo.GET("/healthz", srv.Health) + srv.echo.GET("/", srv.Health) + + srv.echo.GET("/healthchecks", srv.GetHealthChecks) + + srv.echo.GET("/healthchecks/:id", srv.GetHealthChecksByGuardianProverID) +} diff --git a/packages/guardian-prover-health-check/http/server.go b/packages/guardian-prover-health-check/http/server.go new file mode 100644 index 0000000000..01244e082d --- /dev/null +++ b/packages/guardian-prover-health-check/http/server.go @@ -0,0 +1,102 @@ +package http + +import ( + "context" + "net/http" + "os" + + "github.com/labstack/echo/v4/middleware" + guardianproverhealthcheck "github.com/taikoxyz/taiko-mono/packages/guardian-prover-health-check" + + echo "github.com/labstack/echo/v4" +) + +// @title Taiko Guardian Prover Health Check API +// @version 1.0 +// @termsOfService http://swagger.io/terms/ + +// @contact.name API Support +// @contact.url https://community.taiko.xyz/ +// @contact.email info@taiko.xyz + +// @license.name MIT + +// @host healthcheck.internal.taiko.xyz +// Server represents an guardian prover health check http server instance. +type Server struct { + echo *echo.Echo + healthCheckRepo guardianproverhealthcheck.HealthCheckRepository +} + +type NewServerOpts struct { + Echo *echo.Echo + HealthCheckRepo guardianproverhealthcheck.HealthCheckRepository + CorsOrigins []string +} + +func NewServer(opts NewServerOpts) (*Server, error) { + srv := &Server{ + echo: opts.Echo, + healthCheckRepo: opts.HealthCheckRepo, + } + + corsOrigins := opts.CorsOrigins + if corsOrigins == nil { + corsOrigins = []string{"*"} + } + + srv.configureMiddleware(corsOrigins) + srv.configureRoutes() + + return srv, nil +} + +// Start starts the HTTP server +func (srv *Server) Start(address string) error { + return srv.echo.Start(address) +} + +// Shutdown shuts down the HTTP server +func (srv *Server) Shutdown(ctx context.Context) error { + return srv.echo.Shutdown(ctx) +} + +// ServeHTTP implements the `http.Handler` interface which serves HTTP requests +func (srv *Server) ServeHTTP(w http.ResponseWriter, r *http.Request) { + srv.echo.ServeHTTP(w, r) +} + +// Health endpoints for probes +func (srv *Server) Health(c echo.Context) error { + return c.NoContent(http.StatusOK) +} + +func LogSkipper(c echo.Context) bool { + switch c.Request().URL.Path { + case "/healthz": + return true + case "/metrics": + return true + default: + return true + } +} + +func (srv *Server) configureMiddleware(corsOrigins []string) { + srv.echo.Use(middleware.RequestID()) + + srv.echo.Use(middleware.LoggerWithConfig(middleware.LoggerConfig{ + Skipper: LogSkipper, + Format: `{"time":"${time_rfc3339_nano}","level":"INFO","message":{"id":"${id}","remote_ip":"${remote_ip}",` + //nolint:lll + `"host":"${host}","method":"${method}","uri":"${uri}","user_agent":"${user_agent}",` + //nolint:lll + `"response_status":${status},"error":"${error}","latency":${latency},"latency_human":"${latency_human}",` + + `"bytes_in":${bytes_in},"bytes_out":${bytes_out}}}` + "\n", + Output: os.Stdout, + })) + + srv.echo.Use(middleware.CORSWithConfig(middleware.CORSConfig{ + AllowOrigins: corsOrigins, + AllowHeaders: []string{echo.HeaderOrigin, echo.HeaderContentType, echo.HeaderAccept}, + AllowMethods: []string{http.MethodGet, http.MethodHead}, + })) +} diff --git a/packages/guardian-prover-health-check/http/server_test.go b/packages/guardian-prover-health-check/http/server_test.go new file mode 100644 index 0000000000..506607cbec --- /dev/null +++ b/packages/guardian-prover-health-check/http/server_test.go @@ -0,0 +1,84 @@ +package http + +import ( + "context" + "net/http" + "net/http/httptest" + "testing" + + "github.com/joho/godotenv" + echo "github.com/labstack/echo/v4" + "github.com/stretchr/testify/assert" + "github.com/taikoxyz/taiko-mono/packages/guardian-prover-health-check/mock" +) + +func newTestServer(url string) *Server { + _ = godotenv.Load("../.test.env") + + srv := &Server{ + echo: echo.New(), + healthCheckRepo: mock.NewHealthCheckRepository(), + } + + srv.configureMiddleware([]string{"*"}) + srv.configureRoutes() + + return srv +} + +func Test_NewServer(t *testing.T) { + tests := []struct { + name string + opts NewServerOpts + wantErr error + }{ + { + "success", + NewServerOpts{ + Echo: echo.New(), + CorsOrigins: make([]string, 0), + }, + nil, + }, + } + + for _, tt := range tests { + _, err := NewServer(tt.opts) + assert.Equal(t, tt.wantErr, err) + } +} + +func Test_Health(t *testing.T) { + srv := newTestServer("") + + req, _ := http.NewRequest(echo.GET, "/healthz", nil) + rec := httptest.NewRecorder() + + srv.ServeHTTP(rec, req) + + if rec.Code != http.StatusOK { + t.Fatalf("Test_Health expected code %v, got %v", http.StatusOK, rec.Code) + } +} + +func Test_Root(t *testing.T) { + srv := newTestServer("") + + req, _ := http.NewRequest(echo.GET, "/", nil) + rec := httptest.NewRecorder() + + srv.ServeHTTP(rec, req) + + if rec.Code != http.StatusOK { + t.Fatalf("Test_Root expected code %v, got %v", http.StatusOK, rec.Code) + } +} + +func Test_StartShutdown(t *testing.T) { + srv := newTestServer("") + + go func() { + _ = srv.Start(":3928") + }() + assert.Nil(t, srv.Shutdown(context.Background())) +} diff --git a/packages/guardian-prover-health-check/metrics/metrics.go b/packages/guardian-prover-health-check/metrics/metrics.go new file mode 100644 index 0000000000..9ca8ff7be7 --- /dev/null +++ b/packages/guardian-prover-health-check/metrics/metrics.go @@ -0,0 +1,34 @@ +package metrics + +import ( + "context" + "fmt" + + echoprom "github.com/labstack/echo-contrib/prometheus" + "github.com/labstack/echo/v4" + "github.com/labstack/gommon/log" + "github.com/taikoxyz/taiko-mono/packages/guardian-prover-health-check/cmd/flags" + "github.com/urfave/cli/v2" + "golang.org/x/exp/slog" +) + +// Serve starts the metrics server on the given address, will be closed when the given +// context is cancelled. +func Serve(ctx context.Context, c *cli.Context) (*echo.Echo, func() error) { + // Enable metrics middleware + p := echoprom.NewPrometheus("echo", nil) + e := echo.New() + p.SetMetricsPath(e) + + go func() { + <-ctx.Done() + + if err := e.Shutdown(ctx); err != nil { + log.Error("Failed to close metrics server", "error", err) + } + }() + + slog.Info("Starting metrics server", "port", c.Uint64(flags.MetricsHTTPPort.Name)) + + return e, func() error { return e.Start(fmt.Sprintf(":%v", c.Uint64(flags.MetricsHTTPPort.Name))) } +} diff --git a/packages/guardian-prover-health-check/metrics/metrics_test.go b/packages/guardian-prover-health-check/metrics/metrics_test.go new file mode 100644 index 0000000000..5c4775e2e9 --- /dev/null +++ b/packages/guardian-prover-health-check/metrics/metrics_test.go @@ -0,0 +1,64 @@ +package metrics + +import ( + "context" + "net/http" + "net/http/httptest" + "testing" + "time" + + "github.com/labstack/echo/v4" + "github.com/stretchr/testify/assert" + "github.com/taikoxyz/taiko-mono/packages/relayer/cmd/flags" + "github.com/urfave/cli/v2" +) + +func Test_Metrics(t *testing.T) { + app := cli.NewApp() + app.Flags = []cli.Flag{ + flags.MetricsHTTPPort, + } + + app.Action = func(c *cli.Context) error { + ctx, cancel := context.WithCancel(context.Background()) + + var e *echo.Echo + + var startFunc func() error + + var err error + + go func() { + e, startFunc = Serve(ctx, c) + + err = startFunc() + }() + + for e == nil && err == nil { + time.Sleep(1 * time.Second) + } + + assert.Nil(t, err) + assert.NotNil(t, e) + + req, _ := http.NewRequest(echo.GET, "/metrics", nil) + rec := httptest.NewRecorder() + + e.ServeHTTP(rec, req) + + if rec.Code != http.StatusOK { + t.Fatalf("Test_Metrics expected code %v, got %v", http.StatusOK, rec.Code) + } + + cancel() + + assert.Nil(t, err) + + return nil + } + + assert.Nil(t, app.Run([]string{ + "TestMetrics", + "-" + flags.MetricsHTTPPort.Name, "5019", + })) +} diff --git a/packages/guardian-prover-health-check/migrations/1666650599_create_health_checks_table.sql b/packages/guardian-prover-health-check/migrations/1666650599_create_health_checks_table.sql new file mode 100644 index 0000000000..f330cf20bd --- /dev/null +++ b/packages/guardian-prover-health-check/migrations/1666650599_create_health_checks_table.sql @@ -0,0 +1,18 @@ +-- +goose Up +-- +goose StatementBegin +CREATE TABLE IF NOT EXISTS health_checks ( + id int NOT NULL PRIMARY KEY AUTO_INCREMENT, + guardian_prover_id int NOT NULL, + alive BOOLEAN NOT NULL DEFAULT false, + expected_address VARCHAR(42) NOT NULL, + recovered_address VARCHAR(42) NOT NULL DEFAULT "", + signed_response VARCHAR(5000) NOT NULL DEFAULT "", + created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP , + updated_at DATETIME DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP +); + +-- +goose StatementEnd +-- +goose Down +-- +goose StatementBegin +DROP TABLE health_checks; +-- +goose StatementEnd diff --git a/packages/guardian-prover-health-check/migrations/1666651000_create_stats_table.sql b/packages/guardian-prover-health-check/migrations/1666651000_create_stats_table.sql new file mode 100644 index 0000000000..0812d0799c --- /dev/null +++ b/packages/guardian-prover-health-check/migrations/1666651000_create_stats_table.sql @@ -0,0 +1,19 @@ +-- +goose Up +-- +goose StatementBegin +CREATE TABLE IF NOT EXISTS stats ( + id int NOT NULL PRIMARY KEY AUTO_INCREMENT, + guardian_prover_id int NOT NULL, + date VARCHAR(20) NOT NULL, + requests int NOT NULL, + successful_requests int NOT NULL, + uptime FLOAT NOT NULL, + created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP , + updated_at DATETIME DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP, + UNIQUE key `guardian_prover_id_date` (`guardian_prover_id`, `date`) +); + +-- +goose StatementEnd +-- +goose Down +-- +goose StatementBegin +DROP TABLE stats; +-- +goose StatementEnd diff --git a/packages/guardian-prover-health-check/mock/db.go b/packages/guardian-prover-health-check/mock/db.go new file mode 100644 index 0000000000..00d2111641 --- /dev/null +++ b/packages/guardian-prover-health-check/mock/db.go @@ -0,0 +1,18 @@ +package mock + +import ( + "database/sql" + + "gorm.io/gorm" +) + +type DB struct { +} + +func (db *DB) DB() (*sql.DB, error) { + return &sql.DB{}, nil +} + +func (db *DB) GormDB() *gorm.DB { + return &gorm.DB{} +} diff --git a/packages/guardian-prover-health-check/mock/health_check_repo.go b/packages/guardian-prover-health-check/mock/health_check_repo.go new file mode 100644 index 0000000000..4005171432 --- /dev/null +++ b/packages/guardian-prover-health-check/mock/health_check_repo.go @@ -0,0 +1,50 @@ +package mock + +import ( + "context" + "net/http" + + "github.com/morkid/paginate" + guardianproverhealthcheck "github.com/taikoxyz/taiko-mono/packages/guardian-prover-health-check" +) + +type HealthCheckRepo struct { + healthChecks []*guardianproverhealthcheck.HealthCheck +} + +func NewHealthCheckRepository() *HealthCheckRepo { + return &HealthCheckRepo{ + healthChecks: make([]*guardianproverhealthcheck.HealthCheck, 0), + } +} +func (h *HealthCheckRepo) GetByGuardianProverID( + ctx context.Context, + req *http.Request, + id int, +) (paginate.Page, error) { + return paginate.Page{ + Items: h.healthChecks, + }, nil +} + +func (h *HealthCheckRepo) Get( + ctx context.Context, + req *http.Request, +) (paginate.Page, error) { + return paginate.Page{ + Items: h.healthChecks, + }, nil +} + +func (h *HealthCheckRepo) Save(opts guardianproverhealthcheck.SaveHealthCheckOpts) error { + h.healthChecks = append(h.healthChecks, &guardianproverhealthcheck.HealthCheck{ + GuardianProverID: opts.GuardianProverID, + Alive: opts.Alive, + ExpectedAddress: opts.ExpectedAddress, + RecoveredAddress: opts.RecoveredAddress, + SignedResponse: opts.SignedResponse, + }, + ) + + return nil +} diff --git a/packages/guardian-prover-health-check/package.json b/packages/guardian-prover-health-check/package.json new file mode 100644 index 0000000000..6f112354b5 --- /dev/null +++ b/packages/guardian-prover-health-check/package.json @@ -0,0 +1,5 @@ +{ + "name": "@taiko/guardian-prover-health-check", + "version": "0.1.0", + "private": true +} diff --git a/packages/guardian-prover-health-check/prometheus.go b/packages/guardian-prover-health-check/prometheus.go new file mode 100644 index 0000000000..b15056f252 --- /dev/null +++ b/packages/guardian-prover-health-check/prometheus.go @@ -0,0 +1,13 @@ +package guardianproverhealthcheck + +import ( + "github.com/prometheus/client_golang/prometheus" + "github.com/prometheus/client_golang/prometheus/promauto" +) + +var ( + EventsProcessed = promauto.NewCounter(prometheus.CounterOpts{ + Name: "events_processed_ops_total", + Help: "The total number of processed events", + }) +) diff --git a/packages/guardian-prover-health-check/repo/containers_test.go b/packages/guardian-prover-health-check/repo/containers_test.go new file mode 100644 index 0000000000..ead1b0b685 --- /dev/null +++ b/packages/guardian-prover-health-check/repo/containers_test.go @@ -0,0 +1,76 @@ +package repo + +import ( + "context" + "fmt" + "testing" + + "github.com/pressly/goose/v3" + "github.com/taikoxyz/taiko-mono/packages/guardian-prover-health-check/db" + "github.com/testcontainers/testcontainers-go" + "github.com/testcontainers/testcontainers-go/wait" + "gorm.io/driver/mysql" + "gorm.io/gorm" + "gorm.io/gorm/logger" +) + +var ( + dbName = "relayer" + dbUsername = "root" + dbPassword = "password" +) + +func testMysql(t *testing.T) (DB, func(), error) { + req := testcontainers.ContainerRequest{ + Image: "mysql:latest", + ExposedPorts: []string{"3306/tcp", "33060/tcp"}, + Env: map[string]string{ + "MYSQL_ROOT_PASSWORD": dbPassword, + "MYSQL_DATABASE": dbName, + }, + WaitingFor: wait.ForLog("port: 3306 MySQL Community Server - GPL"), + } + + ctx := context.Background() + + mysqlC, err := testcontainers.GenericContainer(ctx, testcontainers.GenericContainerRequest{ + ContainerRequest: req, + Started: true, + }) + + if err != nil { + t.Fatal(err) + } + + closeContainer := func() { + err := mysqlC.Terminate(ctx) + if err != nil { + t.Fatal(err) + } + } + + host, _ := mysqlC.Host(ctx) + p, _ := mysqlC.MappedPort(ctx, "3306/tcp") + port := p.Int() + + dsn := fmt.Sprintf("%s:%s@tcp(%s:%d)/%s?tls=skip-verify&parseTime=true&multiStatements=true", + dbUsername, dbPassword, host, port, dbName) + + gormDB, err := gorm.Open(mysql.Open(dsn), &gorm.Config{ + Logger: logger.Default.LogMode(logger.Silent), + }) + if err != nil { + t.Fatal(err) + } + + if err := goose.SetDialect("mysql"); err != nil { + t.Fatal(err) + } + + sqlDB, _ := gormDB.DB() + if err := goose.Up(sqlDB, "../migrations"); err != nil { + t.Fatal(err) + } + + return db.New(gormDB), closeContainer, nil +} diff --git a/packages/guardian-prover-health-check/repo/db.go b/packages/guardian-prover-health-check/repo/db.go new file mode 100644 index 0000000000..1c8a35dbca --- /dev/null +++ b/packages/guardian-prover-health-check/repo/db.go @@ -0,0 +1,17 @@ +package repo + +import ( + "database/sql" + + "github.com/cyberhorsey/errors" + "gorm.io/gorm" +) + +var ( + ErrNoDB = errors.Validation.NewWithKeyAndDetail("ERR_NO_DB", "no db") +) + +type DB interface { + DB() (*sql.DB, error) + GormDB() *gorm.DB +} diff --git a/packages/guardian-prover-health-check/repo/healthcheck.go b/packages/guardian-prover-health-check/repo/healthcheck.go new file mode 100644 index 0000000000..de90298557 --- /dev/null +++ b/packages/guardian-prover-health-check/repo/healthcheck.go @@ -0,0 +1,74 @@ +package repo + +import ( + "context" + "net/http" + + "github.com/morkid/paginate" + guardianproverhealthcheck "github.com/taikoxyz/taiko-mono/packages/guardian-prover-health-check" + "gorm.io/gorm" +) + +type HealthCheckRepository struct { + db DB +} + +func NewHealthCheckRepository(db DB) (*HealthCheckRepository, error) { + if db == nil { + return nil, ErrNoDB + } + + return &HealthCheckRepository{ + db: db, + }, nil +} + +func (r *HealthCheckRepository) startQuery() *gorm.DB { + return r.db.GormDB().Table("health_checks") +} + +func (r *HealthCheckRepository) Get( + ctx context.Context, + req *http.Request, +) (paginate.Page, error) { + pg := paginate.New(&paginate.Config{ + DefaultSize: 100, + }) + + reqCtx := pg.With(r.startQuery()) + + page := reqCtx.Request(req).Response(&[]guardianproverhealthcheck.HealthCheck{}) + + return page, nil +} + +func (r *HealthCheckRepository) GetByGuardianProverID( + ctx context.Context, + req *http.Request, + id int, +) (paginate.Page, error) { + pg := paginate.New(&paginate.Config{ + DefaultSize: 100, + }) + + reqCtx := pg.With(r.startQuery().Where("guardian_prover_id = ?", id)) + + page := reqCtx.Request(req).Response(&[]guardianproverhealthcheck.HealthCheck{}) + + return page, nil +} + +func (r *HealthCheckRepository) Save(opts guardianproverhealthcheck.SaveHealthCheckOpts) error { + b := &guardianproverhealthcheck.HealthCheck{ + Alive: opts.Alive, + ExpectedAddress: opts.ExpectedAddress, + RecoveredAddress: opts.RecoveredAddress, + SignedResponse: opts.SignedResponse, + GuardianProverID: opts.GuardianProverID, + } + if err := r.startQuery().Create(b).Error; err != nil { + return err + } + + return nil +} diff --git a/packages/guardian-prover-health-check/repo/healthcheck_test.go b/packages/guardian-prover-health-check/repo/healthcheck_test.go new file mode 100644 index 0000000000..9e98dd968b --- /dev/null +++ b/packages/guardian-prover-health-check/repo/healthcheck_test.go @@ -0,0 +1,78 @@ +package repo + +import ( + "context" + "net/http" + "testing" + + guardianproverhealthcheck "github.com/taikoxyz/taiko-mono/packages/guardian-prover-health-check" + "github.com/taikoxyz/taiko-mono/packages/guardian-prover-health-check/db" + "gopkg.in/go-playground/assert.v1" +) + +func Test_NewHealthCheckRepo(t *testing.T) { + tests := []struct { + name string + db DB + wantErr error + }{ + { + "success", + &db.DB{}, + nil, + }, + { + "noDb", + nil, + ErrNoDB, + }, + } + + for _, tt := range tests { + t.Run(tt.name, func(t *testing.T) { + _, err := NewHealthCheckRepository(tt.db) + assert.Equal(t, tt.wantErr, err) + }) + } +} + +func TestIntegration_HealthCheck_Save(t *testing.T) { + db, close, err := testMysql(t) + assert.Equal(t, nil, err) + + defer close() + + healthCheckRepo, err := NewHealthCheckRepository(db) + assert.Equal(t, nil, err) + tests := []struct { + name string + opts guardianproverhealthcheck.SaveHealthCheckOpts + wantErr error + }{ + { + "success", + guardianproverhealthcheck.SaveHealthCheckOpts{ + GuardianProverID: 1, + Alive: true, + ExpectedAddress: "0x123", + RecoveredAddress: "0x123", + SignedResponse: "0x123456", + }, + nil, + }, + } + + for _, tt := range tests { + t.Run(tt.name, func(t *testing.T) { + err = healthCheckRepo.Save(tt.opts) + assert.Equal(t, tt.wantErr, err) + + req, err := http.NewRequest(http.MethodGet, "/healtcheck", nil) + assert.Equal(t, nil, err) + + page, err := healthCheckRepo.Get(context.Background(), req) + assert.Equal(t, nil, err) + assert.Equal(t, page.Size, 1) + }) + } +} diff --git a/packages/guardian-prover-health-check/scripts/abigen.sh b/packages/guardian-prover-health-check/scripts/abigen.sh new file mode 100755 index 0000000000..206fba1c65 --- /dev/null +++ b/packages/guardian-prover-health-check/scripts/abigen.sh @@ -0,0 +1,22 @@ +#/bin/sh + +if [ ! -d "../protocol/out" ]; then + echo "ABI not generated in protocol package yet. Please run npm install && npx hardhat compile in ../protocol" + exit 1 +fi + +paths=("GuardianProver.sol") + +names=("GuardianProver") + +for (( i = 0; i < ${#paths[@]}; ++i )); +do + jq .abi ../protocol/out/${paths[i]}/${names[i]}.json > ${names[i]}.json + lower=$(echo "${names[i]}" | tr '[:upper:]' '[:lower:]') + abigen --abi ${names[i]}.json \ + --pkg $lower \ + --type ${names[i]} \ + --out bindings/$lower/${names[i]}.go +done + +exit 0 \ No newline at end of file diff --git a/packages/protocol/.solhint.json b/packages/protocol/.solhint.json index 3bdc8bc7fc..268d2d3391 100644 --- a/packages/protocol/.solhint.json +++ b/packages/protocol/.solhint.json @@ -11,6 +11,7 @@ "ordering": "warn", "payable-fallback": "off", "no-console": "off", + "avoid-tx-origin": "off", "one-contract-per-file": "off" } } diff --git a/packages/protocol/README.md b/packages/protocol/README.md index c08f896a06..b35b54d212 100644 --- a/packages/protocol/README.md +++ b/packages/protocol/README.md @@ -36,35 +36,32 @@ pnpm test:integration ## Generate L2 genesis JSON's `alloc` field -Start by creating a `config.json`, for example: +Start by creating a `config.js`, for example: -```json -{ +```javascript +module.exports = { // Owner address of the pre-deployed L2 contracts. - "contractOwner": "0xDf08F82De32B8d460adbE8D72043E3a7e25A3B39", + contractOwner: "0xDf08F82De32B8d460adbE8D72043E3a7e25A3B39", // Chain ID of the Taiko L2 network. - "chainId": 167, + chainId: 167, // Account address and pre-mint ETH amount as key-value pairs. - "seedAccounts": [ + seedAccounts: [ { "0xDf08F82De32B8d460adbE8D72043E3a7e25A3B39": 1024 }, { "0x79fcdef22feed20eddacbb2587640e45491b757f": 1024 } ], // L2 EIP-1559 baseFee calculation related fields. - "param1559": { - "yscale": "358298803609133338137582400989", - "xscale": "1488514844", - "gasIssuedPerSecond": "12500000", - "gasExcess": "45450000000" + param1559: { + "gasExcess": 1 }, // Option to pre-deploy an ERC-20 token. - "predeployERC20": true + predeployERC20: true } ``` Next, run the generation script: ```sh -pnpm compile && pnpm generate:genesis config.json +pnpm compile && pnpm generate:genesis config.js ``` The script will output two JSON files under `./deployments`: diff --git a/packages/protocol/contracts/4844/IBlobHashReader.sol b/packages/protocol/contracts/4844/IBlobHashReader.sol index 07dde2def3..eb88b6e193 100644 --- a/packages/protocol/contracts/4844/IBlobHashReader.sol +++ b/packages/protocol/contracts/4844/IBlobHashReader.sol @@ -6,6 +6,8 @@ pragma solidity ^0.8.20; +/// @title IBlobHashReader +/// @dev Labeled in AddressResolver as "blob_hash_reader" /// @dev This interface and its corresponding implementation may deprecate once /// solidity supports the new BLOBHASH opcode natively. interface IBlobHashReader { diff --git a/packages/protocol/contracts/L1/TaikoData.sol b/packages/protocol/contracts/L1/TaikoData.sol index 33abeb9d5f..fde37dd4e6 100644 --- a/packages/protocol/contracts/L1/TaikoData.sol +++ b/packages/protocol/contracts/L1/TaikoData.sol @@ -16,7 +16,7 @@ library TaikoData { // Group 1: General configs // --------------------------------------------------------------------- // The chain ID of the network where Taiko contracts are deployed. - uint256 chainId; + uint64 chainId; // --------------------------------------------------------------------- // Group 2: Block level configs // --------------------------------------------------------------------- @@ -30,6 +30,10 @@ library TaikoData { uint32 blockMaxGasLimit; // The maximum allowed bytes for the proposed transaction list calldata. uint24 blockMaxTxListBytes; + // The max period in seconds that a blob can be reused for DA. + uint24 blobExpiry; + // True if EIP-4844 is enabled for DA + bool blobAllowedForDA; // --------------------------------------------------------------------- // Group 3: Proof related configs // --------------------------------------------------------------------- @@ -52,18 +56,6 @@ library TaikoData { uint256 ethDepositGas; // The maximum fee allowed for an ETH deposit. uint256 ethDepositMaxFee; - // True if EIP-4844 is enabled for DA - bool allowUsingBlobForDA; - } - - /// @dev Struct holding state variables. - struct StateVariables { - uint64 genesisHeight; - uint64 genesisTimestamp; - uint64 nextEthDepositToProcess; - uint64 numEthDeposits; - uint64 numBlocks; - uint64 lastVerifiedBlockId; } /// @dev Struct representing prover assignment @@ -82,12 +74,20 @@ library TaikoData { address feeToken; TierFee[] tierFees; uint64 expiry; + uint64 maxBlockId; + uint64 maxProposedIn; + bytes32 metaHash; bytes signature; } struct BlockParams { ProverAssignment assignment; bytes32 extraData; + bytes32 blobHash; + uint24 txListByteOffset; + uint24 txListByteSize; + bool cacheBlobForReuse; + bytes32 parentMetaHash; } /// @dev Struct containing data only required for proving a block @@ -105,8 +105,11 @@ library TaikoData { uint32 gasLimit; uint64 timestamp; // slot 7 uint64 l1Height; + uint24 txListByteOffset; + uint24 txListByteSize; uint16 minTier; bool blobUsed; + bytes32 parentMetaHash; // slot 8 } /// @dev Struct representing transition to be proven. @@ -127,8 +130,9 @@ library TaikoData { uint96 validityBond; address contester; // slot 5 uint96 contestBond; - uint64 timestamp; // slot 6 (82 bits) + uint64 timestamp; // slot 6 (90 bits) uint16 tier; + uint8 contestations; bytes32[4] __reserved; } @@ -139,7 +143,8 @@ library TaikoData { address assignedProver; // slot 2 uint96 livenessBond; uint64 blockId; // slot 3 - uint64 proposedAt; + uint64 proposedAt; // timestamp + uint64 proposedIn; // L1 block number uint32 nextTransitionId; uint32 verifiedTransitionId; bytes32[7] __reserved; @@ -167,8 +172,8 @@ library TaikoData { struct SlotB { uint64 numBlocks; - uint64 nextEthDepositToProcess; uint64 lastVerifiedBlockId; + bool provingPaused; } /// @dev Struct holding the state variables for the {TaikoL1} contract. @@ -189,8 +194,10 @@ library TaikoData { ethDeposits; // In-protocol Taiko token balances mapping(address account => uint256 balance) tokenBalances; - SlotA slotA; // slot 6 - SlotB slotB; // slot 7 - uint256[143] __gap; + // Reusable blobs + mapping(bytes32 blobHash => uint256 since) reusableBlobs; + SlotA slotA; // slot 7 + SlotB slotB; // slot 8 + uint256[142] __gap; } } diff --git a/packages/protocol/contracts/L1/TaikoErrors.sol b/packages/protocol/contracts/L1/TaikoErrors.sol index 7c95447e44..d9e8232395 100644 --- a/packages/protocol/contracts/L1/TaikoErrors.sol +++ b/packages/protocol/contracts/L1/TaikoErrors.sol @@ -21,6 +21,8 @@ abstract contract TaikoErrors { error L1_ASSIGNMENT_INSUFFICIENT_FEE(); error L1_ASSIGNED_PROVER_NOT_ALLOWED(); error L1_BLOB_FOR_DA_DISABLED(); + error L1_BLOB_NOT_FOUND(); + error L1_BLOB_NOT_REUSEABLE(); error L1_BLOCK_MISMATCH(); error L1_INSUFFICIENT_TOKEN(); error L1_INVALID_ADDRESS(); @@ -29,17 +31,21 @@ abstract contract TaikoErrors { error L1_INVALID_CONFIG(); error L1_INVALID_ETH_DEPOSIT(); error L1_INVALID_PARAM(); + error L1_INVALID_PAUSE_STATUS(); error L1_INVALID_PROOF(); error L1_INVALID_TIER(); error L1_INVALID_TRANSITION(); error L1_NOT_ASSIGNED_PROVER(); - error L1_NO_BLOB_FOUND(); + error L1_PROPOSER_NOT_EOA(); + error L1_PROVING_PAUSED(); error L1_TIER_NOT_FOUND(); error L1_TOO_MANY_BLOCKS(); error L1_TRANSITION_ID_ZERO(); error L1_TRANSITION_NOT_FOUND(); + error L1_TXLIST_OFFSET_SIZE(); error L1_TXLIST_TOO_LARGE(); error L1_UNAUTHORIZED(); + error L1_UNEXPECTED_PARENT(); error L1_UNEXPECTED_TRANSITION_ID(); error L1_UNEXPECTED_TRANSITION_TIER(); } diff --git a/packages/protocol/contracts/L1/TaikoEvents.sol b/packages/protocol/contracts/L1/TaikoEvents.sol index 664b235394..637ed5416c 100644 --- a/packages/protocol/contracts/L1/TaikoEvents.sol +++ b/packages/protocol/contracts/L1/TaikoEvents.sol @@ -38,12 +38,16 @@ abstract contract TaikoEvents { /// block. /// @param blockHash The hash of the verified block. /// @param signalRoot The latest value of the signal service storage. + /// @param tier The tier ID of the proof. + /// @param contestations Number of total contestations. event BlockVerified( uint256 indexed blockId, address indexed assignedProver, address indexed prover, bytes32 blockHash, - bytes32 signalRoot + bytes32 signalRoot, + uint16 tier, + uint8 contestations ); /// @dev Emitted when a block transition is proved or re-proved. @@ -64,6 +68,12 @@ abstract contract TaikoEvents { uint16 tier ); + /// @dev Emitted when a blob is cached for reuse. + event BlobCached(bytes32 blobHash); + + /// @dev Emitted when proving has been paused + event ProvingPaused(bool paused); + /// @dev Emitted when an Ethereum deposit is made. /// @param deposit The Ethereum deposit information including recipient, /// amount, and ID. diff --git a/packages/protocol/contracts/L1/TaikoL1.sol b/packages/protocol/contracts/L1/TaikoL1.sol index b13184cd8f..461125ce76 100644 --- a/packages/protocol/contracts/L1/TaikoL1.sol +++ b/packages/protocol/contracts/L1/TaikoL1.sol @@ -24,6 +24,7 @@ import { TaikoEvents } from "./TaikoEvents.sol"; import { ITierProvider } from "./tiers/ITierProvider.sol"; /// @title TaikoL1 +/// @dev Labeled in AddressResolver as "taiko" /// @notice This contract serves as the "base layer contract" of the Taiko /// protocol, providing functionalities for proposing, proving, and verifying /// blocks. The term "base layer contract" means that although this is usually @@ -40,6 +41,8 @@ contract TaikoL1 is TaikoData.State public state; uint256[100] private __gap; + error L1_TOO_MANY_TIERS(); + /// @dev Fallback function to receive Ether and deposit to Layer 2. receive() external payable { depositEtherToL2(address(0)); @@ -71,6 +74,7 @@ contract TaikoL1 is external payable nonReentrant + whenNotPaused returns ( TaikoData.BlockMetadata memory meta, TaikoData.EthDeposit[] memory depositsProcessed @@ -80,7 +84,10 @@ contract TaikoL1 is (meta, depositsProcessed) = LibProposing.proposeBlock( state, config, AddressResolver(this), params, txList ); - if (config.maxBlocksToVerifyPerProposal > 0) { + if ( + !state.slotB.provingPaused + && config.maxBlocksToVerifyPerProposal > 0 + ) { LibVerifying.verifyBlocks( state, config, @@ -101,6 +108,7 @@ contract TaikoL1 is ) external nonReentrant + whenNotPaused { ( TaikoData.BlockMetadata memory meta, @@ -126,29 +134,41 @@ contract TaikoL1 is /// @notice Verifies up to N blocks. /// @param maxBlocksToVerify Max number of blocks to verify. - function verifyBlocks(uint64 maxBlocksToVerify) external nonReentrant { + function verifyBlocks(uint64 maxBlocksToVerify) + external + nonReentrant + whenNotPaused + { if (maxBlocksToVerify == 0) revert L1_INVALID_PARAM(); + if (state.slotB.provingPaused) revert L1_PROVING_PAUSED(); + LibVerifying.verifyBlocks( state, getConfig(), AddressResolver(this), maxBlocksToVerify ); } + /// @notice Pause block proving. + /// @param pause True if paused. + function pauseProving(bool pause) external onlyOwner { + LibProving.pauseProving(state, pause); + } + /// @notice Deposit Taiko token to this contract /// @param amount Amount of Taiko token to deposit. - function depositTaikoToken(uint256 amount) public { + function depositTaikoToken(uint256 amount) external whenNotPaused { LibTaikoToken.depositTaikoToken(state, AddressResolver(this), amount); } /// @notice Withdraw Taiko token from this contract /// @param amount Amount of Taiko token to withdraw. - function withdrawTaikoToken(uint256 amount) public { + function withdrawTaikoToken(uint256 amount) external whenNotPaused { LibTaikoToken.withdrawTaikoToken(state, AddressResolver(this), amount); } /// @notice Deposits Ether to Layer 2. /// @param recipient Address of the recipient for the deposited Ether on /// Layer 2. - function depositEtherToL2(address recipient) public payable { + function depositEtherToL2(address recipient) public payable whenNotPaused { LibDepositing.depositEtherToL2( state, getConfig(), AddressResolver(this), recipient ); @@ -161,6 +181,10 @@ contract TaikoL1 is return LibDepositing.canDepositEthToL2(state, getConfig(), amount); } + function isBlobReusable(bytes32 blobHash) public view returns (bool) { + return LibProposing.isBlobReusable(state, getConfig(), blobHash); + } + /// @notice Gets the details of a block. /// @param blockId Index of the block. /// @return blk The block. @@ -192,23 +216,19 @@ contract TaikoL1 is public view override - returns (ICrossChainSync.Snippet memory data) + returns (ICrossChainSync.Snippet memory) { - TaikoData.TransitionState storage transition = - LibUtils.getVerifyingTransition(state, getConfig(), blockId); - - data.blockHash = transition.blockHash; - data.signalRoot = transition.signalRoot; + return LibUtils.getSyncedSnippet(state, getConfig(), blockId); } /// @notice Gets the state variables of the TaikoL1 contract. - /// @return StateVariables struct containing state variables. function getStateVariables() public view - returns (TaikoData.StateVariables memory) + returns (TaikoData.SlotA memory a, TaikoData.SlotB memory b) { - return LibUtils.getStateVariables(state); + a = state.slotA; + b = state.slotB; } /// @notice Gets the in-protocol Taiko token balance for a user @@ -238,9 +258,10 @@ contract TaikoL1 is view virtual override - returns (uint16[] memory) + returns (uint16[] memory ids) { - return ITierProvider(resolve("tier_provider", false)).getTierIds(); + ids = ITierProvider(resolve("tier_provider", false)).getTierIds(); + if (ids.length >= type(uint8).max) revert L1_TOO_MANY_TIERS(); } /// @notice Determines the minimal tier for a block based on a random input. @@ -281,6 +302,8 @@ contract TaikoL1 is // and right now txList is still saved in calldata, so we set it // to 120KB. blockMaxTxListBytes: 120_000, + blobExpiry: 24 hours, + blobAllowedForDA: false, livenessBond: 250e18, // 250 Taiko token // ETH deposit related. ethDepositRingBufferSize: 1024, @@ -289,8 +312,7 @@ contract TaikoL1 is ethDepositMinAmount: 1 ether, ethDepositMaxAmount: 10_000 ether, ethDepositGas: 21_000, - ethDepositMaxFee: 1 ether / 10, - allowUsingBlobForDA: false + ethDepositMaxFee: 1 ether / 10 }); } diff --git a/packages/protocol/contracts/L1/TaikoToken.sol b/packages/protocol/contracts/L1/TaikoToken.sol index c4963b7297..f02c9289d9 100644 --- a/packages/protocol/contracts/L1/TaikoToken.sol +++ b/packages/protocol/contracts/L1/TaikoToken.sol @@ -17,6 +17,7 @@ import { EssentialContract } from "../common/EssentialContract.sol"; import { Proxied } from "../common/Proxied.sol"; /// @title TaikoToken +/// @dev Labeled in AddressResolver as "taiko_token" /// @notice The TaikoToken (TKO), in the protocol is used for prover collateral /// in the form of bonds. It is an ERC20 token with 18 decimal places of /// precision. @@ -51,6 +52,20 @@ contract TaikoToken is _mint(_recipient, 1_000_000_000 ether); } + /// @notice Mints new tokens to the specified address. + /// @param to The address to receive the minted tokens. + /// @param amount The amount of tokens to mint. + function mint(address to, uint256 amount) public onlyOwner { + _mint(to, amount); + } + + /// @notice Burns tokens from the specified address. + /// @param from The address to burn tokens from. + /// @param amount The amount of tokens to burn. + function burn(address from, uint256 amount) public onlyOwner { + _burn(from, amount); + } + /// @notice Creates a new token snapshot. function snapshot() public onlyOwner { _snapshot(); diff --git a/packages/protocol/contracts/L1/libs/LibDepositing.sol b/packages/protocol/contracts/L1/libs/LibDepositing.sol index 162020a85c..8a1e282b3f 100644 --- a/packages/protocol/contracts/L1/libs/LibDepositing.sol +++ b/packages/protocol/contracts/L1/libs/LibDepositing.sol @@ -32,13 +32,13 @@ library LibDepositing { AddressResolver resolver, address recipient ) - internal + external { if (!canDepositEthToL2(state, config, msg.value)) { revert L1_INVALID_ETH_DEPOSIT(); } - resolver.resolve("ether_vault", false).sendEther(msg.value); + resolver.resolve("bridge", false).sendEther(msg.value); // Append the deposit to the queue. address _recipient = recipient == address(0) ? msg.sender : recipient; diff --git a/packages/protocol/contracts/L1/libs/LibProposing.sol b/packages/protocol/contracts/L1/libs/LibProposing.sol index 44f8b1554d..4af52c7b23 100644 --- a/packages/protocol/contracts/L1/libs/LibProposing.sol +++ b/packages/protocol/contracts/L1/libs/LibProposing.sol @@ -24,6 +24,15 @@ import { LibTaikoToken } from "./LibTaikoToken.sol"; library LibProposing { using LibAddress for address; + // According to EIP4844, each blob has up to 4096 field elements, and each + // field element has 32 bytes. + uint256 public constant MAX_BYTES_PER_BLOB = 4096 * 32; + + // Max gas paying the prover. This should be large enough to prevent the + // worst cases, usually block proposer shall be aware the risks and only + // choose provers that cannot consume too much gas when receiving Ether. + uint256 public constant MAX_GAS_PAYING_PROVER = 200_000; + // Warning: Any events defined here must also be defined in TaikoEvents.sol. event BlockProposed( uint256 indexed blockId, @@ -34,17 +43,24 @@ library LibProposing { TaikoData.EthDeposit[] depositsProcessed ); + event BlobCached(bytes32 blobHash); + // Warning: Any errors defined here must also be defined in TaikoErrors.sol. error L1_ASSIGNMENT_EXPIRED(); error L1_ASSIGNMENT_INVALID_SIG(); error L1_ASSIGNMENT_INVALID_PARAMS(); error L1_ASSIGNMENT_INSUFFICIENT_FEE(); error L1_BLOB_FOR_DA_DISABLED(); - error L1_NO_BLOB_FOUND(); + error L1_BLOB_NOT_FOUND(); + error L1_BLOB_NOT_REUSEABLE(); + error L1_INVALID_PARAM(); + error L1_PROPOSER_NOT_EOA(); error L1_TIER_NOT_FOUND(); error L1_TOO_MANY_BLOCKS(); - error L1_TXLIST_TOO_LARGE(); + error L1_TXLIST_OFFSET(); + error L1_TXLIST_SIZE(); error L1_UNAUTHORIZED(); + error L1_UNEXPECTED_PARENT(); /// @dev Proposes a Taiko L2 block. function proposeBlock( @@ -63,10 +79,6 @@ library LibProposing { TaikoData.BlockParams memory params = abi.decode(data, (TaikoData.BlockParams)); - if (!config.allowUsingBlobForDA && txList.length == 0) { - revert L1_BLOB_FOR_DA_DISABLED(); - } - // Taiko, as a Based Rollup, enables permissionless block proposals. // However, if the "proposer" address is set to a non-zero value, we // ensure that only that specific address has the authority to propose @@ -82,22 +94,15 @@ library LibProposing { revert L1_TOO_MANY_BLOCKS(); } - bytes32 blobHash; //or txListHash (if Blob not yet supported) - if (txList.length == 0) { - // Always use the first blob in this transaction. - // If the proposeBlock functions are called more than once in the - // same L1 transaction, these 2 L2 blocks will use the same blob as - // DA. - blobHash = IBlobHashReader( - resolver.resolve("blob_hash_reader", false) - ).getFirstBlobHash(); - - if (blobHash == 0) revert L1_NO_BLOB_FOUND(); - } else { - if (txList.length > config.blockMaxTxListBytes) { - revert L1_TXLIST_TOO_LARGE(); - } - blobHash = keccak256(txList); + TaikoData.Block storage parent = + state.blocks[(b.numBlocks - 1) % config.blockRingBufferSize]; + + // Check if parent block has the right meta hash + if ( + params.parentMetaHash != 0 + && parent.metaHash != params.parentMetaHash + ) { + revert L1_UNEXPECTED_PARENT(); } // Each transaction must handle a specific quantity of L1-to-L2 @@ -110,18 +115,10 @@ library LibProposing { // If we choose to persist all data fields in the metadata, it will // require additional storage slots. unchecked { - uint256 rand = uint256(blobHash) - ^ (block.prevrandao * b.numBlocks * block.number); - meta = TaikoData.BlockMetadata({ l1Hash: blockhash(block.number - 1), - // Following the Merge, the L1 mixHash incorporates the - // prevrandao value from the beacon chain. Given the possibility - // of multiple Taiko blocks being proposed within a single - // Ethereum block, we must introduce a salt to this random - // number as the L2 mixHash. - difficulty: bytes32(rand), - blobHash: blobHash, + difficulty: 0, // to be initialized below + blobHash: 0, // to be initialized below extraData: params.extraData, depositsHash: keccak256(abi.encode(depositsProcessed)), coinbase: msg.sender, @@ -129,11 +126,93 @@ library LibProposing { gasLimit: config.blockMaxGasLimit, timestamp: uint64(block.timestamp), l1Height: uint64(block.number - 1), - minTier: ITierProvider(resolver.resolve("tier_provider", false)) - .getMinTier(rand), - blobUsed: txList.length == 0 + txListByteOffset: 0, // to be initialized below + txListByteSize: 0, // to be initialized below + minTier: 0, // to be initialized below + blobUsed: txList.length == 0, + parentMetaHash: parent.metaHash }); } + + // Update certain meta fields + if (meta.blobUsed) { + if (!config.blobAllowedForDA) revert L1_BLOB_FOR_DA_DISABLED(); + + if (params.blobHash != 0) { + // We try to reuse an old blob + if (isBlobReusable(state, config, params.blobHash)) { + revert L1_BLOB_NOT_REUSEABLE(); + } + meta.blobHash = params.blobHash; + } else { + // Always use the first blob in this transaction. If the + // proposeBlock functions are called more than once in the same + // L1 transaction, these multiple L2 blocks will share the same + // blob. + meta.blobHash = IBlobHashReader( + resolver.resolve("blob_hash_reader", false) + ).getFirstBlobHash(); + + if (meta.blobHash == 0) revert L1_BLOB_NOT_FOUND(); + + // Depends on the blob data price, it may not make sense to + // cache the blob which costs 20,000 (sstore) + 631 (event) + // extra gas. + if (params.cacheBlobForReuse) { + state.reusableBlobs[meta.blobHash] = block.timestamp; + emit BlobCached(meta.blobHash); + } + } + + if ( + uint256(params.txListByteOffset) + params.txListByteSize + > MAX_BYTES_PER_BLOB + ) { + revert L1_TXLIST_OFFSET(); + } + + if ( + params.txListByteSize == 0 + || params.txListByteSize > config.blockMaxTxListBytes + ) revert L1_TXLIST_SIZE(); + + meta.txListByteOffset = params.txListByteOffset; + meta.txListByteSize = params.txListByteSize; + } else { + // The proposer must be an Externally Owned Account (EOA) for + // calldata usage. This ensures that the transaction is not an + // internal one, making calldata retrieval more straightforward for + // Taiko node software. + if (!LibAddress.isSenderEOA()) revert L1_PROPOSER_NOT_EOA(); + + if (params.txListByteOffset != 0 || params.txListByteSize != 0) { + revert L1_INVALID_PARAM(); + } + + // blockMaxTxListBytes is a uint24 + if (txList.length > config.blockMaxTxListBytes) { + revert L1_TXLIST_SIZE(); + } + + meta.blobHash = keccak256(txList); + meta.txListByteOffset = 0; + meta.txListByteSize = uint24(txList.length); + } + + // Following the Merge, the L1 mixHash incorporates the + // prevrandao value from the beacon chain. Given the possibility + // of multiple Taiko blocks being proposed within a single + // Ethereum block, we must introduce a salt to this random + // number as the L2 mixHash. + unchecked { + meta.difficulty = meta.blobHash + ^ bytes32(block.prevrandao * b.numBlocks * block.number); + } + + // Use the difficulty as a random number + meta.minTier = ITierProvider(resolver.resolve("tier_provider", false)) + .getMinTier(uint256(meta.difficulty)); + // Now, it's essential to initialize the block that will be stored // on L1. We should aim to utilize as few storage slots as possible, // alghouth using a ring buffer can minimize storage writes once @@ -153,6 +232,7 @@ library LibProposing { blk.blockId = b.numBlocks; blk.proposedAt = meta.timestamp; + blk.proposedIn = uint64(block.number); // For a new block, the next transition ID is always 1, not 0. blk.nextTransitionId = 1; @@ -184,8 +264,13 @@ library LibProposing { // Validate the prover assignment, then charge Ether or ERC20 as the // prover fee based on the block's minTier. - uint256 proverFee = - _validateAssignment(meta.minTier, blobHash, params.assignment); + uint256 proverFee = _payProverFeeAndTip( + meta.minTier, + meta.blobHash, + blk.blockId, + blk.metaHash, + params.assignment + ); emit BlockProposed({ blockId: blk.blockId, @@ -197,8 +282,22 @@ library LibProposing { }); } + function isBlobReusable( + TaikoData.State storage state, + TaikoData.Config memory config, + bytes32 blobHash + ) + internal + view + returns (bool) + { + return + state.reusableBlobs[blobHash] + config.blobExpiry > block.timestamp; + } + function hashAssignment( TaikoData.ProverAssignment memory assignment, + address taikoAddress, bytes32 blobHash ) internal @@ -208,34 +307,45 @@ library LibProposing { return keccak256( abi.encode( "PROVER_ASSIGNMENT", + taikoAddress, blobHash, assignment.feeToken, assignment.expiry, + assignment.maxBlockId, + assignment.maxProposedIn, assignment.tierFees ) ); } - function _validateAssignment( + function _payProverFeeAndTip( uint16 minTier, bytes32 blobHash, + uint64 blockId, + bytes32 metaHash, TaikoData.ProverAssignment memory assignment ) private returns (uint256 proverFee) { - // Check assignment not expired - if (block.timestamp >= assignment.expiry) { - revert L1_ASSIGNMENT_EXPIRED(); - } - if (blobHash == 0 || assignment.prover == address(0)) { revert L1_ASSIGNMENT_INVALID_PARAMS(); } + // Check assignment validity + if ( + block.timestamp > assignment.expiry + || assignment.metaHash != 0 && metaHash != assignment.metaHash + || assignment.maxBlockId != 0 && blockId > assignment.maxBlockId + || assignment.maxProposedIn != 0 + && block.number > assignment.maxProposedIn + ) { + revert L1_ASSIGNMENT_EXPIRED(); + } + // Hash the assignment with the blobHash, this hash will be signed by // the prover, therefore, we add a string as a prefix. - bytes32 hash = hashAssignment(assignment, blobHash); + bytes32 hash = hashAssignment(assignment, address(this), blobHash); if (!assignment.prover.isValidSignature(hash, assignment.signature)) { revert L1_ASSIGNMENT_INVALID_SIG(); @@ -246,22 +356,29 @@ library LibProposing { // The proposer irrevocably pays a fee to the assigned prover, either in // Ether or ERC20 tokens. + uint256 tip; if (assignment.feeToken == address(0)) { - // Paying Ether if (msg.value < proverFee) revert L1_ASSIGNMENT_INSUFFICIENT_FEE(); - assignment.prover.sendEther(proverFee); + unchecked { - // Return the extra Ether to the proposer - uint256 refund = msg.value - proverFee; - if (refund != 0) msg.sender.sendEther(refund); + tip = msg.value - proverFee; } + + // Paying Ether + assignment.prover.sendEther(proverFee, MAX_GAS_PAYING_PROVER); } else { + tip = msg.value; + // Paying ERC20 tokens - if (msg.value != 0) msg.sender.sendEther(msg.value); ERC20Upgradeable(assignment.feeToken).transferFrom( msg.sender, assignment.prover, proverFee ); } + + // block.coinbase can be address(0) in tests + if (tip != 0 && block.coinbase != address(0)) { + address(block.coinbase).sendEther(tip); + } } function _isProposerPermitted( diff --git a/packages/protocol/contracts/L1/libs/LibProving.sol b/packages/protocol/contracts/L1/libs/LibProving.sol index eb246a4090..0dac9d8285 100644 --- a/packages/protocol/contracts/L1/libs/LibProving.sol +++ b/packages/protocol/contracts/L1/libs/LibProving.sol @@ -39,15 +39,19 @@ library LibProving { uint16 tier ); + event ProvingPaused(bool paused); + // Warning: Any errors defined here must also be defined in TaikoErrors.sol. error L1_ALREADY_CONTESTED(); error L1_ALREADY_PROVED(); error L1_ASSIGNED_PROVER_NOT_ALLOWED(); error L1_BLOCK_MISMATCH(); error L1_INVALID_BLOCK_ID(); + error L1_INVALID_PAUSE_STATUS(); error L1_INVALID_TIER(); error L1_INVALID_TRANSITION(); error L1_NOT_ASSIGNED_PROVER(); + error L1_PROVING_PAUSED(); error L1_UNEXPECTED_TRANSITION_TIER(); /// @dev Proves or contests a block transition. @@ -118,6 +122,7 @@ library LibProving { ts.contestBond = 1; // see below (the value does't matter) ts.timestamp = blk.proposedAt; ts.tier = 0; + ts.contestations = 0; if (tid == 1) { // This approach serves as a cost-saving technique for the @@ -304,6 +309,7 @@ library LibProving { ts.contestBond = tier.contestBond; ts.contester = msg.sender; ts.timestamp = uint64(block.timestamp); + ts.contestations += 1; emit TransitionContested({ blockId: blk.blockId, @@ -446,4 +452,12 @@ library LibProving { }); } } + + function pauseProving(TaikoData.State storage state, bool pause) internal { + if (state.slotB.provingPaused == pause) { + revert L1_INVALID_PAUSE_STATUS(); + } + state.slotB.provingPaused = pause; + emit ProvingPaused(pause); + } } diff --git a/packages/protocol/contracts/L1/libs/LibTaikoToken.sol b/packages/protocol/contracts/L1/libs/LibTaikoToken.sol index f1d127b5cc..60ebd22297 100644 --- a/packages/protocol/contracts/L1/libs/LibTaikoToken.sol +++ b/packages/protocol/contracts/L1/libs/LibTaikoToken.sol @@ -26,7 +26,7 @@ library LibTaikoToken { AddressResolver resolver, uint256 amount ) - internal + external { if (amount == 0) revert L1_INVALID_AMOUNT(); TaikoToken(resolver.resolve("taiko_token", false)).transferFrom( @@ -43,7 +43,7 @@ library LibTaikoToken { AddressResolver resolver, uint256 amount ) - internal + external { if (amount == 0) revert L1_INVALID_AMOUNT(); if (state.tokenBalances[msg.sender] < amount) { diff --git a/packages/protocol/contracts/L1/libs/LibUtils.sol b/packages/protocol/contracts/L1/libs/LibUtils.sol index 0155b65fa5..b4a04786d4 100644 --- a/packages/protocol/contracts/L1/libs/LibUtils.sol +++ b/packages/protocol/contracts/L1/libs/LibUtils.sol @@ -6,6 +6,8 @@ pragma solidity ^0.8.20; +import { ICrossChainSync } from "../../common/ICrossChainSync.sol"; + import { TaikoData } from "../TaikoData.sol"; /// @title LibUtils @@ -17,43 +19,6 @@ library LibUtils { error L1_TRANSITION_NOT_FOUND(); error L1_UNEXPECTED_TRANSITION_ID(); - /// @dev Retrieves a block based on its ID. - function getBlock( - TaikoData.State storage state, - TaikoData.Config memory config, - uint64 blockId - ) - internal - view - returns (TaikoData.Block storage blk) - { - blk = state.blocks[blockId % config.blockRingBufferSize]; - if (blk.blockId != blockId) { - revert L1_INVALID_BLOCK_ID(); - } - } - - /// @dev Retrieves the ID of the transition with a given parentHash. - /// This function will return 0 if the transtion is not found. - function getTransitionId( - TaikoData.State storage state, - TaikoData.Block storage blk, - uint64 slot, - bytes32 parentHash - ) - internal - view - returns (uint32 tid) - { - if (state.transitions[slot][1].key == parentHash) { - tid = 1; - } else { - tid = state.transitionIds[blk.blockId][parentHash]; - } - - if (tid >= blk.nextTransitionId) revert L1_UNEXPECTED_TRANSITION_ID(); - } - /// @dev Retrieves the transition with a given parentHash. /// This function will revert if the transition is not found. function getTransition( @@ -62,7 +27,7 @@ library LibUtils { uint64 blockId, bytes32 parentHash ) - internal + external view returns (TaikoData.TransitionState storage ts) { @@ -81,16 +46,14 @@ library LibUtils { ts = state.transitions[slot][tid]; } - /// @dev Retrieves the transition that is used to verify the given block. - /// This function will revert if the block is not verified. - function getVerifyingTransition( + function getSyncedSnippet( TaikoData.State storage state, TaikoData.Config memory config, uint64 blockId ) - internal + external view - returns (TaikoData.TransitionState storage) + returns (ICrossChainSync.Snippet memory) { uint64 _blockId = blockId == 0 ? state.slotB.lastVerifiedBlockId : blockId; @@ -101,24 +64,51 @@ library LibUtils { if (blk.blockId != _blockId) revert L1_BLOCK_MISMATCH(); if (blk.verifiedTransitionId == 0) revert L1_TRANSITION_NOT_FOUND(); - return state.transitions[slot][blk.verifiedTransitionId]; + TaikoData.TransitionState storage transition = + state.transitions[slot][blk.verifiedTransitionId]; + + return ICrossChainSync.Snippet({ + remoteBlockId: blockId, + syncedInBlock: blk.proposedIn, + blockHash: transition.blockHash, + signalRoot: transition.signalRoot + }); } - function getStateVariables(TaikoData.State storage state) + /// @dev Retrieves a block based on its ID. + function getBlock( + TaikoData.State storage state, + TaikoData.Config memory config, + uint64 blockId + ) internal view - returns (TaikoData.StateVariables memory) + returns (TaikoData.Block storage blk) { - TaikoData.SlotA memory a = state.slotA; - TaikoData.SlotB memory b = state.slotB; + blk = state.blocks[blockId % config.blockRingBufferSize]; + if (blk.blockId != blockId) { + revert L1_INVALID_BLOCK_ID(); + } + } - return TaikoData.StateVariables({ - genesisHeight: a.genesisHeight, - genesisTimestamp: a.genesisTimestamp, - nextEthDepositToProcess: a.nextEthDepositToProcess, - numEthDeposits: a.numEthDeposits - a.nextEthDepositToProcess, - numBlocks: b.numBlocks, - lastVerifiedBlockId: b.lastVerifiedBlockId - }); + /// @dev Retrieves the ID of the transition with a given parentHash. + /// This function will return 0 if the transtion is not found. + function getTransitionId( + TaikoData.State storage state, + TaikoData.Block storage blk, + uint64 slot, + bytes32 parentHash + ) + internal + view + returns (uint32 tid) + { + if (state.transitions[slot][1].key == parentHash) { + tid = 1; + } else { + tid = state.transitionIds[blk.blockId][parentHash]; + } + + if (tid >= blk.nextTransitionId) revert L1_UNEXPECTED_TRANSITION_ID(); } } diff --git a/packages/protocol/contracts/L1/libs/LibVerifying.sol b/packages/protocol/contracts/L1/libs/LibVerifying.sol index 17c15440e5..717d1fd736 100644 --- a/packages/protocol/contracts/L1/libs/LibVerifying.sol +++ b/packages/protocol/contracts/L1/libs/LibVerifying.sol @@ -24,11 +24,16 @@ library LibVerifying { address indexed assignedProver, address indexed prover, bytes32 blockHash, - bytes32 signalRoot + bytes32 signalRoot, + uint16 tier, + uint8 contestations ); event CrossChainSynced( - uint64 indexed srcHeight, bytes32 blockHash, bytes32 signalRoot + uint64 indexed syncedInBlock, + uint64 indexed blockId, + bytes32 blockHash, + bytes32 signalRoot ); // Warning: Any errors defined here must also be defined in TaikoErrors.sol. @@ -41,7 +46,7 @@ library LibVerifying { TaikoData.Config memory config, bytes32 genesisBlockHash ) - internal + external { if (!isConfigValid(config)) revert L1_INVALID_CONFIG(); @@ -67,10 +72,39 @@ library LibVerifying { assignedProver: address(0), prover: address(0), blockHash: genesisBlockHash, - signalRoot: 0 + signalRoot: 0, + tier: 0, + contestations: 0 }); } + function isConfigValid(TaikoData.Config memory config) + public + pure + returns (bool isValid) + { + if ( + config.chainId <= 1 // + || config.blockMaxProposals == 1 + || config.blockRingBufferSize <= config.blockMaxProposals + 1 + || config.blockMaxGasLimit == 0 || config.blockMaxTxListBytes == 0 + || config.blockMaxTxListBytes > 128 * 1024 // calldata up to 128K + || config.livenessBond == 0 || config.ethDepositRingBufferSize <= 1 + || config.ethDepositMinCountPerBlock == 0 + || config.ethDepositMaxCountPerBlock + < config.ethDepositMinCountPerBlock + || config.ethDepositMinAmount == 0 + || config.ethDepositMaxAmount <= config.ethDepositMinAmount + || config.ethDepositMaxAmount >= type(uint96).max + || config.ethDepositGas == 0 || config.ethDepositMaxFee == 0 + || config.ethDepositMaxFee >= type(uint96).max + || config.ethDepositMaxFee + >= type(uint96).max / config.ethDepositMaxCountPerBlock + ) return false; + + return true; + } + /// @dev Verifies up to N blocks. function verifyBlocks( TaikoData.State storage state, @@ -83,6 +117,8 @@ library LibVerifying { // Retrieve the latest verified block and the associated transition used // for its verification. TaikoData.SlotB memory b = state.slotB; + if (b.provingPaused) return; + uint64 blockId = b.lastVerifiedBlockId; uint64 slot = blockId % config.blockRingBufferSize; @@ -189,8 +225,10 @@ library LibVerifying { blockId: blockId, assignedProver: blk.assignedProver, prover: ts.prover, - blockHash: ts.blockHash, - signalRoot: ts.signalRoot + blockHash: blockHash, + signalRoot: signalRoot, + tier: ts.tier, + contestations: ts.contestations }); ++blockId; @@ -209,36 +247,12 @@ library LibVerifying { .sendSignal(signalRoot); emit CrossChainSynced( - lastVerifiedBlockId, blockHash, signalRoot + uint64(block.number), + lastVerifiedBlockId, + blockHash, + signalRoot ); } } } - - function isConfigValid(TaikoData.Config memory config) - internal - pure - returns (bool isValid) - { - if ( - config.chainId <= 1 // - || config.blockMaxProposals == 1 - || config.blockRingBufferSize <= config.blockMaxProposals + 1 - || config.blockMaxGasLimit == 0 || config.blockMaxTxListBytes == 0 - || config.blockMaxTxListBytes > 128 * 1024 // calldata up to 128K - || config.livenessBond == 0 || config.ethDepositRingBufferSize <= 1 - || config.ethDepositMinCountPerBlock == 0 - || config.ethDepositMaxCountPerBlock - < config.ethDepositMinCountPerBlock - || config.ethDepositMinAmount == 0 - || config.ethDepositMaxAmount <= config.ethDepositMinAmount - || config.ethDepositMaxAmount >= type(uint96).max - || config.ethDepositGas == 0 || config.ethDepositMaxFee == 0 - || config.ethDepositMaxFee >= type(uint96).max - || config.ethDepositMaxFee - >= type(uint96).max / config.ethDepositMaxCountPerBlock - ) return false; - - return true; - } } diff --git a/packages/protocol/contracts/L1/provers/GuardianProver.sol b/packages/protocol/contracts/L1/provers/GuardianProver.sol index 73f83dfb79..4797768346 100644 --- a/packages/protocol/contracts/L1/provers/GuardianProver.sol +++ b/packages/protocol/contracts/L1/provers/GuardianProver.sol @@ -13,6 +13,7 @@ import { LibTiers } from "../tiers/ITierProvider.sol"; import { TaikoData } from "../TaikoData.sol"; /// @title GuardianProver +/// @dev Labeled in AddressResolver as "guardian_prover" contract GuardianProver is EssentialContract { uint256 public constant NUM_GUARDIANS = 5; uint256 public constant REQUIRED_GUARDIANS = 3; diff --git a/packages/protocol/contracts/L1/tiers/ITierProvider.sol b/packages/protocol/contracts/L1/tiers/ITierProvider.sol index 162283d09b..3425380be6 100644 --- a/packages/protocol/contracts/L1/tiers/ITierProvider.sol +++ b/packages/protocol/contracts/L1/tiers/ITierProvider.sol @@ -22,6 +22,8 @@ interface ITierProvider { function getTier(uint16 tierId) external view returns (Tier memory); /// @dev Retrieves the IDs of all supported tiers. + /// Note that the core protocol requires the number of tiers to be smaller + /// than 256. In reality, this number should be much smaller. function getTierIds() external view returns (uint16[] memory); /// @dev Determines the minimal tier for a block based on a random input. diff --git a/packages/protocol/contracts/L1/tiers/TaikoA6TierProvider.sol b/packages/protocol/contracts/L1/tiers/TaikoA6TierProvider.sol index e5140cc736..4b2ee81dc5 100644 --- a/packages/protocol/contracts/L1/tiers/TaikoA6TierProvider.sol +++ b/packages/protocol/contracts/L1/tiers/TaikoA6TierProvider.sol @@ -9,6 +9,7 @@ pragma solidity ^0.8.20; import { ITierProvider, LibTiers } from "./ITierProvider.sol"; /// @title TaikoA6TierProvider +/// @dev Labeled in AddressResolver as "tier_provider" /// @dev Assuming liveness bound is 250TKO. // Taiko token's total supply is 1 billion. Assuming block time is 2 second, and // the cool down period is 2 days. In 2 days, we can have (2*86400/2)=86400 diff --git a/packages/protocol/contracts/L1/verifiers/GuardianVerifier.sol b/packages/protocol/contracts/L1/verifiers/GuardianVerifier.sol index a1fad322c8..5b4a810011 100644 --- a/packages/protocol/contracts/L1/verifiers/GuardianVerifier.sol +++ b/packages/protocol/contracts/L1/verifiers/GuardianVerifier.sol @@ -34,7 +34,7 @@ contract GuardianVerifier is EssentialContract, IVerifier { external view { - if (ctx.prover != resolve("guardian", false)) { + if (ctx.prover != resolve("guardian_prover", false)) { revert PERMISSION_DENIED(); } } diff --git a/packages/protocol/contracts/L2/TaikoL2.sol b/packages/protocol/contracts/L2/TaikoL2.sol index 299310b9b3..facafa388f 100644 --- a/packages/protocol/contracts/L2/TaikoL2.sol +++ b/packages/protocol/contracts/L2/TaikoL2.sol @@ -6,7 +6,9 @@ pragma solidity ^0.8.20; -import { EssentialContract } from "../common/EssentialContract.sol"; +import { Ownable2StepUpgradeable } from + "lib/openzeppelin-contracts-upgradeable/contracts/access/Ownable2StepUpgradeable.sol"; + import { ICrossChainSync } from "../common/ICrossChainSync.sol"; import { ISignalService } from "../signal/ISignalService.sol"; import { Proxied } from "../common/Proxied.sol"; @@ -21,7 +23,7 @@ import { TaikoL2Signer } from "./TaikoL2Signer.sol"; /// It is used to anchor the latest L1 block details to L2 for cross-layer /// communication, manage EIP-1559 parameters for gas pricing, and store /// verified L1 block information. -contract TaikoL2 is EssentialContract, TaikoL2Signer, ICrossChainSync { +contract TaikoL2 is Ownable2StepUpgradeable, TaikoL2Signer, ICrossChainSync { using LibMath for uint256; struct Config { @@ -35,11 +37,13 @@ contract TaikoL2 is EssentialContract, TaikoL2Signer, ICrossChainSync { mapping(uint256 l1height => ICrossChainSync.Snippet) public snippets; // A hash to check the integrity of public inputs. - bytes32 public publicInputHash; // slot 3 - uint64 public gasExcess; // slot 4 + address public signalService; // slot 3 + bytes32 public publicInputHash; // slot 4 + + uint64 public gasExcess; // slot 5 uint64 public latestSyncedL1Height; - uint256[146] private __gap; + uint256[145] private __gap; event Anchored(bytes32 parentHash, uint64 gasExcess); @@ -51,24 +55,32 @@ contract TaikoL2 is EssentialContract, TaikoL2Signer, ICrossChainSync { error L2_TOO_LATE(); /// @notice Initializes the TaikoL2 contract. - /// @param _addressManager Address of the {AddressManager} contract. + /// @param _signalService Address of the {ISignalService} contract. + /// @param _gasExcess The initial gasExcess. function init( - address _addressManager, + address _signalService, uint64 _gasExcess ) external initializer { - EssentialContract._init(_addressManager); + Ownable2StepUpgradeable.__Ownable2Step_init(); + + if (_signalService == address(0)) revert L2_INVALID_PARAM(); + signalService = _signalService; if (block.chainid <= 1 || block.chainid >= type(uint64).max) { revert L2_INVALID_CHAIN_ID(); } - if (block.number > 1) revert L2_TOO_LATE(); - if (block.number > 0) { + if (block.number == 0) { + // This is the case in real L2 genesis + } else if (block.number == 1) { + // This is the case in tests uint256 parentHeight = block.number - 1; l2Hashes[parentHeight] = blockhash(parentHeight); + } else { + revert L2_TOO_LATE(); } gasExcess = _gasExcess; @@ -120,14 +132,19 @@ contract TaikoL2 is EssentialContract, TaikoL2Signer, ICrossChainSync { // Store the L1's signal root as a signal to the local signal service to // allow for multi-hop bridging. - ISignalService(resolve("signal_service", false)).sendSignal( - l1SignalRoot + ISignalService(signalService).sendSignal(l1SignalRoot); + emit CrossChainSynced( + uint64(block.number), l1Height, l1BlockHash, l1SignalRoot ); - emit CrossChainSynced(l1Height, l1BlockHash, l1SignalRoot); // Update state variables l2Hashes[parentId] = blockhash(parentId); - snippets[l1Height] = ICrossChainSync.Snippet(l1BlockHash, l1SignalRoot); + snippets[l1Height] = ICrossChainSync.Snippet({ + remoteBlockId: l1Height, + syncedInBlock: uint64(block.number), + blockHash: l1BlockHash, + signalRoot: l1SignalRoot + }); publicInputHash = publicInputHashNew; latestSyncedL1Height = l1Height; @@ -261,6 +278,10 @@ contract TaikoL2 is EssentialContract, TaikoL2Signer, ICrossChainSync { } } -/// @title ProxiedTaikoL2 +/// @title ProxiedSingletonTaikoL2 /// @notice Proxied version of the TaikoL2 contract. -contract ProxiedTaikoL2 is Proxied, TaikoL2 { } +/// @dev Deploy this contract as a singleton per chain for use by multiple L2s +/// or L3s. No singleton check is performed within the code; it's the deployer's +/// responsibility to ensure this. Singleton deployment is essential for +/// enabling multi-hop bridging across all Taiko L2/L3s. +contract ProxiedSingletonTaikoL2 is Proxied, TaikoL2 { } diff --git a/packages/protocol/contracts/bridge/Bridge.sol b/packages/protocol/contracts/bridge/Bridge.sol index ca0d7cca4d..f4a3fb9837 100644 --- a/packages/protocol/contracts/bridge/Bridge.sol +++ b/packages/protocol/contracts/bridge/Bridge.sol @@ -10,10 +10,10 @@ import { Proxied } from "../common/Proxied.sol"; import { ISignalService } from "../signal/ISignalService.sol"; import { LibAddress } from "../libs/LibAddress.sol"; -import { EtherVault } from "./EtherVault.sol"; import { IBridge, IRecallableSender } from "./IBridge.sol"; /// @title Bridge +/// @dev Labeled in AddressResolver as "bridge" /// @notice See the documentation for {IBridge}. /// @dev The code hash for the same address on L1 and L2 may be different. contract Bridge is EssentialContract, IBridge { @@ -27,10 +27,7 @@ contract Bridge is EssentialContract, IBridge { FAILED } - bytes32 internal constant MESSAGE_HASH_PLACEHOLDER = bytes32(uint256(1)); - uint256 internal constant CHAINID_PLACEHOLDER = type(uint256).max; - address internal constant SRC_CHAIN_SENDER_PLACEHOLDER = - address(uint160(uint256(1))); + uint256 internal constant PLACEHOLDER = type(uint256).max; uint128 public nextMessageId; // slot 1 mapping(bytes32 msgHash => bool recalled) public isMessageRecalled; @@ -41,7 +38,7 @@ contract Bridge is EssentialContract, IBridge { event SignalSent(address indexed sender, bytes32 msgHash); event MessageSent(bytes32 indexed msgHash, Message message); event MessageRecalled(bytes32 indexed msgHash); - event DestChainEnabled(uint256 indexed chainId, bool enabled); + event DestChainEnabled(uint64 indexed chainId, bool enabled); event MessageStatusChanged(bytes32 indexed msgHash, Status status); error B_INVALID_CHAINID(); @@ -57,19 +54,18 @@ contract Bridge is EssentialContract, IBridge { error B_RECALLED_ALREADY(); error B_STATUS_MISMATCH(); - modifier sameChain(uint256 chainId) { + modifier sameChain(uint64 chainId) { if (chainId != block.chainid) revert B_INVALID_CHAINID(); _; } - /// @dev Vaults will transfer Ether to this Bridge before these Ether are - /// sent to users. receive() external payable { } /// @notice Initializes the contract. /// @param _addressManager The address of the {AddressManager} contract. function init(address _addressManager) external initializer { EssentialContract._init(_addressManager); + _ctx.msgHash == bytes32(PLACEHOLDER); } /// @notice Sends a message to the destination chain and takes custody @@ -84,7 +80,7 @@ contract Bridge is EssentialContract, IBridge { returns (bytes32 msgHash, Message memory _message) { // Ensure the message user is not null. - if (message.user == address(0)) revert B_INVALID_USER(); + if (message.owner == address(0)) revert B_INVALID_USER(); // Check if the destination chain is enabled. (bool destChainEnabled,) = isDestChainEnabled(message.destChainId); @@ -99,16 +95,14 @@ contract Bridge is EssentialContract, IBridge { uint256 expectedAmount = message.value + message.fee; if (expectedAmount != msg.value) revert B_INVALID_VALUE(); - resolve("ether_vault", false).sendEther(expectedAmount); - _message = message; // Configure message details and send signal to indicate message // sending. _message.id = nextMessageId++; _message.from = msg.sender; - _message.srcChainId = block.chainid; + _message.srcChainId = uint64(block.chainid); - msgHash = keccak256(abi.encode(_message)); + msgHash = hashMessage(_message); ISignalService(resolve("signal_service", false)).sendSignal(msgHash); emit MessageSent(msgHash, _message); @@ -129,7 +123,7 @@ contract Bridge is EssentialContract, IBridge { whenNotPaused sameChain(message.srcChainId) { - bytes32 msgHash = keccak256(abi.encode(message)); + bytes32 msgHash = hashMessage(message); if (isMessageRecalled[msgHash]) revert B_RECALLED_ALREADY(); bool received = _proveSignalReceived( @@ -139,11 +133,6 @@ contract Bridge is EssentialContract, IBridge { isMessageRecalled[msgHash] = true; - // Release necessary Ether from EtherVault. - EtherVault(resolve("ether_vault", false)).releaseEther( - address(this), message.value - ); - // Execute the recall logic based on the contract's support for the // IRecallableSender interface bool support = @@ -162,23 +151,23 @@ contract Bridge is EssentialContract, IBridge { // Reset the context after the message call _ctx = Context({ - msgHash: MESSAGE_HASH_PLACEHOLDER, - from: SRC_CHAIN_SENDER_PLACEHOLDER, - srcChainId: CHAINID_PLACEHOLDER + msgHash: bytes32(PLACEHOLDER), + from: address(uint160(PLACEHOLDER)), + srcChainId: uint64(PLACEHOLDER) }); } else { - message.user.sendEther(message.value); + message.owner.sendEther(message.value); } emit MessageRecalled(msgHash); } /// @notice Processes a bridge message on the destination chain. This - /// function is callable by any address, including the `message.user`. + /// function is callable by any address, including the `message.owner`. /// @dev The process begins by hashing the message and checking the message - /// status in the bridge If the status is "NEW", custody of Ether is - /// taken from the EtherVault, and the message is invoked. The status is - /// updated accordingly, and processing fees are refunded as needed. + /// status in the bridge If the status is "NEW", the message is invoked. The + /// status is updated accordingly, and processing fees are refunded as + /// needed. /// @param message The message to be processed. /// @param proof The merkle inclusion proof. function processMessage( @@ -190,46 +179,38 @@ contract Bridge is EssentialContract, IBridge { whenNotPaused sameChain(message.destChainId) { - // If the gas limit is set to zero, only the user can process the + // If the gas limit is set to zero, only the owner can process the // message. - if (message.gasLimit == 0 && msg.sender != message.user) { + if (message.gasLimit == 0 && msg.sender != message.owner) { revert B_PERMISSION_DENIED(); } - bytes32 msgHash = keccak256(abi.encode(message)); + bytes32 msgHash = hashMessage(message); + if (messageStatus[msgHash] != Status.NEW) revert B_STATUS_MISMATCH(); bool received = _proveSignalReceived(msgHash, message.srcChainId, proof); if (!received) revert B_NOT_RECEIVED(); - address payable ethVault = resolve("ether_vault", false); - EtherVault(ethVault).releaseEther( - address(this), message.value + message.fee - ); - Status status; uint256 refundAmount; // Process message differently based on the target address - if ( - message.to == address(0) || message.to == address(this) - || message.to == ethVault || message.to == resolve("taiko", false) - ) { + if (message.to == address(0) || message.to == address(this)) { // Handle special addresses that don't require actual invocation but // mark message as DONE status = Status.DONE; refundAmount = message.value; } else { - // Use the specified message gas limit if called by the user, else + // Use the specified message gas limit if called by the owner, else // use remaining gas uint256 gasLimit = - msg.sender == message.user ? gasleft() : message.gasLimit; + msg.sender == message.owner ? gasleft() : message.gasLimit; if (_invokeMessageCall(message, msgHash, gasLimit)) { status = Status.DONE; } else { status = Status.RETRIABLE; - ethVault.sendEther(message.value); } } @@ -238,7 +219,7 @@ contract Bridge is EssentialContract, IBridge { // Determine the refund recipient address refundTo = - message.refundTo == address(0) ? message.user : message.refundTo; + message.refundTo == address(0) ? message.owner : message.refundTo; // Refund the processing fee if (msg.sender == refundTo) { @@ -253,7 +234,7 @@ contract Bridge is EssentialContract, IBridge { /// @notice Retries to invoke the messageCall after releasing associated /// Ether and tokens. /// @dev This function can be called by any address, including the - /// `message.user`. + /// `message.owner`. /// It attempts to invoke the messageCall and updates the message status /// accordingly. /// @param message The message to retry. @@ -269,19 +250,16 @@ contract Bridge is EssentialContract, IBridge { sameChain(message.destChainId) { // If the gasLimit is set to 0 or isLastAttempt is true, the caller must - // be the message.user. + // be the message.owner. if (message.gasLimit == 0 || isLastAttempt) { - if (msg.sender != message.user) revert B_PERMISSION_DENIED(); + if (msg.sender != message.owner) revert B_PERMISSION_DENIED(); } - bytes32 msgHash = keccak256(abi.encode(message)); + bytes32 msgHash = hashMessage(message); if (messageStatus[msgHash] != Status.RETRIABLE) { revert B_NON_RETRIABLE(); } - address payable ethVault = resolve("ether_vault", false); - EtherVault(ethVault).releaseEther(address(this), message.value); - // Attempt to invoke the messageCall. if (_invokeMessageCall(message, msgHash, gasleft())) { // Update the message status to "DONE" on successful invocation. @@ -289,9 +267,6 @@ contract Bridge is EssentialContract, IBridge { } else { // Update the message status to "FAILED" _updateMessageStatus(msgHash, Status.FAILED); - // Release Ether back to EtherVault (if on Taiko it is OK) - // otherwise funds stay at Bridge anyways. - ethVault.sendEther(message.value); } } @@ -306,7 +281,7 @@ contract Bridge is EssentialContract, IBridge { if (message.srcChainId != block.chainid) return false; return ISignalService(resolve("signal_service", false)).isSignalSent({ app: address(this), - signal: keccak256(abi.encode(message)) + signal: hashMessage(message) }); } @@ -324,7 +299,7 @@ contract Bridge is EssentialContract, IBridge { { if (message.srcChainId != block.chainid) return false; return _proveSignalReceived( - _signalForFailedMessage(keccak256(abi.encode(message))), + _signalForFailedMessage(hashMessage(message)), message.destChainId, proof ); @@ -344,7 +319,7 @@ contract Bridge is EssentialContract, IBridge { { if (message.destChainId != block.chainid) return false; return _proveSignalReceived( - keccak256(abi.encode(message)), message.srcChainId, proof + hashMessage(message), message.srcChainId, proof ); } @@ -352,7 +327,7 @@ contract Bridge is EssentialContract, IBridge { /// @param chainId The destination chain ID. /// @return enabled True if the destination chain is enabled. /// @return destBridge The bridge of the destination chain. - function isDestChainEnabled(uint256 chainId) + function isDestChainEnabled(uint64 chainId) public view returns (bool enabled, address destBridge) @@ -364,12 +339,21 @@ contract Bridge is EssentialContract, IBridge { /// @notice Gets the current context. /// @inheritdoc IBridge function context() public view returns (Context memory) { - if (_ctx.msgHash == 0 || _ctx.msgHash == MESSAGE_HASH_PLACEHOLDER) { + if (_ctx.msgHash == bytes32(PLACEHOLDER) || _ctx.msgHash == 0) { revert B_INVALID_CONTEXT(); } return _ctx; } + /// @notice Hash the message + function hashMessage(Message memory message) + public + pure + returns (bytes32) + { + return keccak256(abi.encode("TAIKO_MESSAGE", message)); + } + /// @notice Invokes a call message on the Bridge. /// @param message The call message to be invoked. /// @param msgHash The hash of the message. @@ -401,9 +385,9 @@ contract Bridge is EssentialContract, IBridge { // Reset the context after the message call _ctx = Context({ - msgHash: MESSAGE_HASH_PLACEHOLDER, - from: SRC_CHAIN_SENDER_PLACEHOLDER, - srcChainId: CHAINID_PLACEHOLDER + msgHash: bytes32(PLACEHOLDER), + from: address(uint160(PLACEHOLDER)), + srcChainId: uint64(PLACEHOLDER) }); } @@ -432,7 +416,7 @@ contract Bridge is EssentialContract, IBridge { /// @return True if the message was received. function _proveSignalReceived( bytes32 signal, - uint256 srcChainId, + uint64 srcChainId, bytes calldata proof ) private @@ -457,6 +441,10 @@ contract Bridge is EssentialContract, IBridge { } } -/// @title ProxiedBridge +/// @title ProxiedSingletonBridge /// @notice Proxied version of the parent contract. -contract ProxiedBridge is Proxied, Bridge { } +/// @dev Deploy this contract as a singleton per chain for use by multiple L2s +/// or L3s. No singleton check is performed within the code; it's the deployer's +/// responsibility to ensure this. Singleton deployment is essential for +/// enabling multi-hop bridging across all Taiko L2/L3s. +contract ProxiedSingletonBridge is Proxied, Bridge { } diff --git a/packages/protocol/contracts/bridge/EtherVault.sol b/packages/protocol/contracts/bridge/EtherVault.sol deleted file mode 100644 index f55fec9c46..0000000000 --- a/packages/protocol/contracts/bridge/EtherVault.sol +++ /dev/null @@ -1,91 +0,0 @@ -// SPDX-License-Identifier: MIT -// _____ _ _ _ _ -// |_ _|_ _(_) |_____ | | __ _| |__ ___ -// | |/ _` | | / / _ \ | |__/ _` | '_ (_-< -// |_|\__,_|_|_\_\___/ |____\__,_|_.__/__/ - -pragma solidity ^0.8.20; - -import { EssentialContract } from "../common/EssentialContract.sol"; -import { LibAddress } from "../libs/LibAddress.sol"; -import { Proxied } from "../common/Proxied.sol"; - -/// @title EtherVault -/// @notice This contract is initialized with 2^128 Ether and allows authorized -/// addresses to release Ether. -/// @dev Only the contract owner can authorize or deauthorize addresses. -contract EtherVault is EssentialContract { - using LibAddress for address; - - mapping(address addr => bool authorized) public isAuthorized; - uint256[49] private __gap; - - event Authorized(address indexed addr, bool authorized); - event EtherReleased(address indexed to, uint256 amount); - - error VAULT_PERMISSION_DENIED(); - error VAULT_INVALID_RECIPIENT(); - error VAULT_INVALID_PARAMS(); - - modifier onlyAuthorized() { - // Ensure the caller is authorized to perform the action - if (!isAuthorized[msg.sender]) revert VAULT_PERMISSION_DENIED(); - _; - } - - receive() external payable { } - - /// @notice Initializes the contract with an {AddressManager}. - /// @param addressManager The address of the {AddressManager} contract. - function init(address addressManager) external initializer { - EssentialContract._init(addressManager); - } - - /// @notice Transfers Ether from EtherVault to the sender, checking that the - /// sender is authorized. - /// @param amount Amount of Ether to send. - function releaseEther(uint256 amount) - public - onlyAuthorized - nonReentrant - whenNotPaused - { - msg.sender.sendEther(amount); - emit EtherReleased(msg.sender, amount); - } - - /// @notice Transfers Ether from EtherVault to a designated address, - /// checking that the sender is authorized. - /// @param recipient Address to receive Ether. - /// @param amount Amount of ether to send. - function releaseEther( - address recipient, - uint256 amount - ) - public - onlyAuthorized - nonReentrant - whenNotPaused - { - if (recipient == address(0)) revert VAULT_INVALID_RECIPIENT(); - - recipient.sendEther(amount); - emit EtherReleased(recipient, amount); - } - - /// @notice Sets the authorized status of an address, only the owner can - /// call this function. - /// @param addr Address to set the authorized status of. - /// @param authorized Authorized status to set. - function authorize(address addr, bool authorized) public onlyOwner { - if (addr == address(0)) revert VAULT_INVALID_PARAMS(); - if (isAuthorized[addr] == authorized) revert VAULT_INVALID_PARAMS(); - - isAuthorized[addr] = authorized; - emit Authorized(addr, authorized); - } -} - -/// @title ProxiedEtherVault -/// @notice Proxied version of the parent contract. -contract ProxiedEtherVault is Proxied, EtherVault { } diff --git a/packages/protocol/contracts/bridge/IBridge.sol b/packages/protocol/contracts/bridge/IBridge.sol index 03bbef9e76..3c96a0635a 100644 --- a/packages/protocol/contracts/bridge/IBridge.sol +++ b/packages/protocol/contracts/bridge/IBridge.sol @@ -8,31 +8,30 @@ pragma solidity ^0.8.20; /// @title IBridge /// @notice The bridge used in conjunction with the {ISignalService}. -/// @dev Ether is held by Bridges on L1 and by the EtherVault on L2, -/// not by token vaults. +/// @dev Ether is held by Bridges on L1 and L2s. interface IBridge { struct Message { // Message ID. uint128 id; - // Message sender address (auto filled). + // The address, EOA or contract, that interacts with this bridge. address from; - // Source chain ID (auto filled). - uint256 srcChainId; - // Destination chain ID where the `to` address lives (auto filled). - uint256 destChainId; - // User address of the bridged asset. - address user; - // Destination address. + // Source chain ID. + uint64 srcChainId; + // Destination chain ID where the `to` address lives. + uint64 destChainId; + // The owner of the message. + address owner; + // The destination address on the destination chain. address to; - // Alternate address to send any refund. If blank, defaults to user. + // Alternate address to send any refund. If blank, defaults to owner. address refundTo; - // value to invoke on the destination chain, for ERC20 transfers. + // value to invoke on the destination chain. uint256 value; - // Processing fee for the relayer. Zero if user will process themself. + // Processing fee for the relayer. Zero if owner will process themself. uint256 fee; - // gasLimit to invoke on the destination chain, for ERC20 transfers. + // gasLimit to invoke on the destination chain. uint256 gasLimit; - // callData to invoke on the destination chain, for ERC20 transfers. + // callData to invoke on the destination chain. bytes data; // Optional memo. string memo; @@ -42,7 +41,7 @@ interface IBridge { struct Context { bytes32 msgHash; // Message hash. address from; // Sender's address. - uint256 srcChainId; // Source chain ID. + uint64 srcChainId; // Source chain ID. } /// @notice Sends a message to the destination chain and takes custody diff --git a/packages/protocol/contracts/bridge/README.md b/packages/protocol/contracts/bridge/README.md index 227c3bd8a8..4cfbdf8b81 100644 --- a/packages/protocol/contracts/bridge/README.md +++ b/packages/protocol/contracts/bridge/README.md @@ -15,8 +15,7 @@ Let's go deeper into the steps that occur when bridging ETH from srcChain to des ### Send message / Send token -The bridge distinguishes 4 different token types: `Ether`, `Erc20`, `Erc1155`, `Erc721`. -Each type has it's own vault contract both deployed to the source and destination chain. (Except `EtherVault`, which is only deployed on L1 and Bridge itself holds the funds on L2.) +The bridge distinguishes 4 different token types: `Ether`, `ERC20`, `ERC1155`, `ERC721`. Ether is kept in the Bridge contract, and token vaults for ERC20, ERC1155, and ERC721 tokens must be deployed to the source and destination chain, #### Bridging Ether @@ -26,25 +25,25 @@ If user wants to bridge ether, he/she will initiate a bridge transaction with `s struct Message { // Message ID. uint256 id; - // Message sender address (auto filled). + // Message sender address. address from; - // Source chain ID (auto filled). - uint256 srcChainId; - // Destination chain ID where the `to` address lives (auto filled). - uint256 destChainId; + // Source chain ID. + uint64 srcChainId; + // Destination chain ID where the `to` address lives. + uint64 destChainId; // User address of the bridged asset. address user; // Destination user address. address to; // Alternate address to send any refund. If blank, defaults to user. address refundAddress; - // value to invoke on the destination chain, for ERC20 transfers. + // value to invoke on the destination chain. uint256 value; // Processing fee for the relayer. Zero if user will process themself. uint256 fee; - // gasLimit to invoke on the destination chain, for ERC20 transfers. + // gasLimit to invoke on the destination chain. uint256 gasLimit; - // callData to invoke on the destination chain, for ERC20 transfers. + // callData to invoke on the destination chain. bytes data; // Optional memo. string memo; @@ -54,11 +53,11 @@ If user wants to bridge ether, he/she will initiate a bridge transaction with `s - `value` and `fee` must sum to `msg.value`. - The destination chain's ID (must be enabled via setting `addressResolver` for `${chainID}.bridge`). -Inside the `sendMessage` call, the `msg.value` amount of Ether is sent to the srcChain `EtherVault` contract. Next, a `signal` is created from the message, and a `key` is stored on the srcChain bridge contract address. The `key` is a hash of the `signal` and the srcChain bridge contract address. The `key` is stored on the `Bridge` contract with a value of `1`, and a `MessageSent` event is emitted for the relayer to pick up. +Inside the `sendMessage` call, the `msg.value` amount of Ether is kept in the Bridge contract, then a `signal` is created from the message, and a `key` is stored on the srcChain bridge contract address. The `key` is a hash of the `signal` and the srcChain bridge contract address. The `key` is stored on the `Bridge` contract with a value of `1`, and a `MessageSent` event is emitted for the relayer to pick up. #### Bridging other tokens -If user wants to bridge other tokens (`Erc20`, `Erc1155` or `Erc721`.) he/she will just indirectly initiate a bridge transaction (`sendMessage`) by interacting with the corresponding token vault contracts. +If user wants to bridge other tokens (`ERC20`, `ERC1155` or `ERC721`.) he/she will just indirectly initiate a bridge transaction (`sendMessage`) by interacting with the corresponding token vault contracts. In case of ERC20 the transaction can be initiated by initializing a struct (below) and calling `sendToken`: @@ -75,7 +74,7 @@ In case of ERC20 the transaction can be initiated by initializing a struct (belo } ``` -In case of `Erc1155` or `Erc721`, the mechanism is the same but struct looks like this: +In case of `ERC1155` or `ERC721`, the mechanism is the same but struct looks like this: ``` struct BridgeTransferOp { diff --git a/packages/protocol/contracts/common/AddressManager.sol b/packages/protocol/contracts/common/AddressManager.sol index 57baa58d93..0cb649773a 100644 --- a/packages/protocol/contracts/common/AddressManager.sol +++ b/packages/protocol/contracts/common/AddressManager.sol @@ -6,23 +6,23 @@ pragma solidity ^0.8.20; -import { OwnableUpgradeable } from - "lib/openzeppelin-contracts-upgradeable/contracts/access/OwnableUpgradeable.sol"; +import { Ownable2StepUpgradeable } from + "lib/openzeppelin-contracts-upgradeable/contracts/access/Ownable2StepUpgradeable.sol"; import { Proxied } from "./Proxied.sol"; /// @title IAddressManager -/// @notice Specifies methods to manage address mappings for given domain-name +/// @notice Specifies methods to manage address mappings for given chainId-name /// pairs. interface IAddressManager { - /// @notice Gets the address mapped to a specific domain-name pair. + /// @notice Gets the address mapped to a specific chainId-name pair. /// @dev Note that in production, this method shall be a pure function /// without any storage access. - /// @param domain The domain for which the address needs to be fetched. + /// @param chainId The chainId for which the address needs to be fetched. /// @param name The name for which the address needs to be fetched. - /// @return Address associated with the domain-name pair. + /// @return Address associated with the chainId-name pair. function getAddress( - uint256 domain, + uint64 chainId, bytes32 name ) external @@ -31,13 +31,13 @@ interface IAddressManager { } /// @title AddressManager -/// @notice Manages a mapping of domain-name pairs to Ethereum addresses. -contract AddressManager is OwnableUpgradeable, IAddressManager { +/// @notice Manages a mapping of chainId-name pairs to Ethereum addresses. +contract AddressManager is Ownable2StepUpgradeable, IAddressManager { mapping(uint256 => mapping(bytes32 => address)) private addresses; uint256[49] private __gap; event AddressSet( - uint256 indexed domain, + uint64 indexed chainId, bytes32 indexed name, address newAddress, address oldAddress @@ -45,15 +45,15 @@ contract AddressManager is OwnableUpgradeable, IAddressManager { /// @notice Initializes the owner for the upgradable contract. function init() external initializer { - OwnableUpgradeable.__Ownable_init(); + Ownable2StepUpgradeable.__Ownable2Step_init(); } - /// @notice Sets the address for a specific domain-name pair. - /// @param domain The domain to which the address will be mapped. + /// @notice Sets the address for a specific chainId-name pair. + /// @param chainId The chainId to which the address will be mapped. /// @param name The name to which the address will be mapped. /// @param newAddress The Ethereum address to be mapped. function setAddress( - uint256 domain, + uint64 chainId, bytes32 name, address newAddress ) @@ -61,14 +61,14 @@ contract AddressManager is OwnableUpgradeable, IAddressManager { virtual onlyOwner { - address oldAddress = addresses[domain][name]; - addresses[domain][name] = newAddress; - emit AddressSet(domain, name, newAddress, oldAddress); + address oldAddress = addresses[chainId][name]; + addresses[chainId][name] = newAddress; + emit AddressSet(chainId, name, newAddress, oldAddress); } /// @inheritdoc IAddressManager function getAddress( - uint256 domain, + uint64 chainId, bytes32 name ) public @@ -76,7 +76,7 @@ contract AddressManager is OwnableUpgradeable, IAddressManager { override returns (address) { - return addresses[domain][name]; + return addresses[chainId][name]; } } diff --git a/packages/protocol/contracts/common/AddressResolver.sol b/packages/protocol/contracts/common/AddressResolver.sol index e1a40c841c..c8c8d733f5 100644 --- a/packages/protocol/contracts/common/AddressResolver.sol +++ b/packages/protocol/contracts/common/AddressResolver.sol @@ -6,6 +6,8 @@ pragma solidity ^0.8.20; +import { StringsUpgradeable } from + "lib/openzeppelin-contracts-upgradeable/contracts/utils/StringsUpgradeable.sol"; import { IAddressManager } from "./AddressManager.sol"; /// @title AddressResolver @@ -18,12 +20,15 @@ import { IAddressManager } from "./AddressManager.sol"; /// is no setAddressManager() function go guarantee atomicness across all /// contracts that are resolvers. abstract contract AddressResolver { + using StringsUpgradeable for uint256; + address public addressManager; uint256[49] private __gap; error RESOLVER_DENIED(); error RESOLVER_INVALID_MANAGER(); - error RESOLVER_ZERO_ADDR(uint256 chainId, bytes32 name); + error RESOLVER_UNEXPECTED_CHAINID(); + error RESOLVER_ZERO_ADDR(uint64 chainId, string name); /// @dev Modifier that ensures the caller is the resolved address of a given /// name. @@ -33,7 +38,7 @@ abstract contract AddressResolver { _; } - /// @notice Resolves a name to its address on the current chain. + /// @notice Resolves a name to its address deployed on this chain. /// @param name Name whose address is to be resolved. /// @param allowZeroAddress If set to true, does not throw if the resolved /// address is `address(0)`. @@ -47,10 +52,10 @@ abstract contract AddressResolver { virtual returns (address payable addr) { - return _resolve(block.chainid, name, allowZeroAddress); + return _resolve(uint64(block.chainid), name, allowZeroAddress); } - /// @notice Resolves a name to its address on a specified chain. + /// @notice Resolves a name to its address deployed on a specified chain. /// @param chainId The chainId of interest. /// @param name Name whose address is to be resolved. /// @param allowZeroAddress If set to true, does not throw if the resolved @@ -58,7 +63,7 @@ abstract contract AddressResolver { /// @return addr Address associated with the given name on the specified /// chain. function resolve( - uint256 chainId, + uint64 chainId, bytes32 name, bool allowZeroAddress ) @@ -73,7 +78,9 @@ abstract contract AddressResolver { /// @dev Initialization method for setting up AddressManager reference. /// @param _addressManager Address of the AddressManager. function _init(address _addressManager) internal virtual { - if (_addressManager == address(0)) revert RESOLVER_INVALID_MANAGER(); + if (block.chainid >= type(uint64).max) { + revert RESOLVER_UNEXPECTED_CHAINID(); + } addressManager = _addressManager; } @@ -85,7 +92,7 @@ abstract contract AddressResolver { /// @return addr Address associated with the given name on the specified /// chain. function _resolve( - uint256 chainId, + uint64 chainId, bytes32 name, bool allowZeroAddress ) @@ -93,11 +100,13 @@ abstract contract AddressResolver { view returns (address payable addr) { + if (addressManager == address(0)) revert RESOLVER_INVALID_MANAGER(); + addr = payable(IAddressManager(addressManager).getAddress(chainId, name)); if (!allowZeroAddress && addr == address(0)) { - revert RESOLVER_ZERO_ADDR(chainId, name); + revert RESOLVER_ZERO_ADDR(chainId, uint256(name).toString()); } } } diff --git a/packages/protocol/contracts/common/AuthorizableContract.sol b/packages/protocol/contracts/common/AuthorizableContract.sol new file mode 100644 index 0000000000..4a5532e274 --- /dev/null +++ b/packages/protocol/contracts/common/AuthorizableContract.sol @@ -0,0 +1,59 @@ +// SPDX-License-Identifier: MIT +// _____ _ _ _ _ +// |_ _|_ _(_) |_____ | | __ _| |__ ___ +// | |/ _` | | / / _ \ | |__/ _` | '_ (_-< +// |_|\__,_|_|_\_\___/ |____\__,_|_.__/__/ + +pragma solidity ^0.8.20; + +import { EssentialContract } from "../common/EssentialContract.sol"; + +/// @title AuthorizableContract +abstract contract AuthorizableContract is EssentialContract { + mapping(address => bytes32 label) public authorizedAddresses; + uint256[49] private __gap; + + event Authorized(address indexed addr, bytes32 oldLabel, bytes32 newLabel); + + error ADDRESS_UNAUTHORIZED(); + error INVALID_ADDRESS(); + error INVALID_LABEL(); + + modifier onlyFromAuthorized() { + if (!isAuthorized(msg.sender)) revert ADDRESS_UNAUTHORIZED(); + _; + } + + function authorize(address addr, bytes32 label) external onlyOwner { + if (addr == address(0)) revert INVALID_ADDRESS(); + + bytes32 oldLabel = authorizedAddresses[addr]; + if (oldLabel == label) revert INVALID_LABEL(); + authorizedAddresses[addr] = label; + + emit Authorized(addr, oldLabel, label); + } + + function isAuthorized(address addr) public view returns (bool) { + return authorizedAddresses[addr] != 0; + } + + function isAuthorizedAs( + address addr, + bytes32 label + ) + public + view + returns (bool) + { + return label != 0 && authorizedAddresses[addr] == label; + } + + function _init(address _addressManager) internal virtual override { + EssentialContract._init(_addressManager); + } + + function _init() internal virtual { + EssentialContract._init(address(0)); + } +} diff --git a/packages/protocol/contracts/common/EssentialContract.sol b/packages/protocol/contracts/common/EssentialContract.sol index e1133df1da..101d596b6d 100644 --- a/packages/protocol/contracts/common/EssentialContract.sol +++ b/packages/protocol/contracts/common/EssentialContract.sol @@ -6,8 +6,8 @@ pragma solidity ^0.8.20; -import { OwnableUpgradeable } from - "lib/openzeppelin-contracts-upgradeable/contracts/access/OwnableUpgradeable.sol"; +import { Ownable2StepUpgradeable } from + "lib/openzeppelin-contracts-upgradeable/contracts/access/Ownable2StepUpgradeable.sol"; import { AddressResolver } from "./AddressResolver.sol"; @@ -15,7 +15,10 @@ import { AddressResolver } from "./AddressResolver.sol"; /// @notice This contract serves as the base contract for many core components. /// @dev We didn't use OpenZeppelin's PausableUpgradeable and /// ReentrancyGuardUpgradeable contract to optimize storage reads. -abstract contract EssentialContract is OwnableUpgradeable, AddressResolver { +abstract contract EssentialContract is + Ownable2StepUpgradeable, + AddressResolver +{ uint8 private constant _FALSE = 1; uint8 private constant _TRUE = 2; @@ -63,7 +66,7 @@ abstract contract EssentialContract is OwnableUpgradeable, AddressResolver { /// @notice Initializes the contract with an address manager. /// @param _addressManager The address of the address manager. function _init(address _addressManager) internal virtual override { - OwnableUpgradeable.__Ownable_init_unchained(); + Ownable2StepUpgradeable.__Ownable2Step_init(); AddressResolver._init(_addressManager); _reentry = _FALSE; diff --git a/packages/protocol/contracts/common/ICrossChainSync.sol b/packages/protocol/contracts/common/ICrossChainSync.sol index 85903e36a8..f491e15cf7 100644 --- a/packages/protocol/contracts/common/ICrossChainSync.sol +++ b/packages/protocol/contracts/common/ICrossChainSync.sol @@ -14,16 +14,24 @@ pragma solidity ^0.8.20; /// both chains remain consistent and can be cross-referenced with integrity. interface ICrossChainSync { struct Snippet { + uint64 remoteBlockId; + uint64 syncedInBlock; bytes32 blockHash; bytes32 signalRoot; } /// @dev Emitted when a block has been synced across chains. - /// @param srcHeight The height (block id_ that was synced. + /// @param syncedInBlock The ID of this chain's block where the sync + /// happened. + /// @param blockId The ID of the remote block whose block hash and + /// signal root are synced. /// @param blockHash The hash of the synced block. /// @param signalRoot The root hash representing cross-chain signals. event CrossChainSynced( - uint64 indexed srcHeight, bytes32 blockHash, bytes32 signalRoot + uint64 indexed syncedInBlock, + uint64 indexed blockId, + bytes32 blockHash, + bytes32 signalRoot ); /// @notice Fetches the hash of a block from the opposite chain. diff --git a/packages/protocol/contracts/common/Proxied.sol b/packages/protocol/contracts/common/Proxied.sol index 68d7a9caeb..fe66d15aba 100644 --- a/packages/protocol/contracts/common/Proxied.sol +++ b/packages/protocol/contracts/common/Proxied.sol @@ -10,9 +10,12 @@ import { Initializable } from "lib/openzeppelin-contracts-upgradeable/contracts/proxy/utils/Initializable.sol"; /// @title Proxied -/// @dev This abstract contract extends Initializable from OpenZeppelin's -/// upgradeable contracts library. It is intended to be used for proxy pattern -/// implementations where constructors are non-traditional. +/// @dev Extends OpenZeppelin's Initializable for upgradeable contracts. +/// Intended as the base class for contracts used with +/// TransparentUpgradeableProxy. +/// +/// @dev For each chain, deploy Proxied contracts with unique deployers to +/// ensure distinct contract addresses. abstract contract Proxied is Initializable { /// @custom:oz-upgrades-unsafe-allow constructor constructor() { diff --git a/packages/protocol/contracts/libs/LibAddress.sol b/packages/protocol/contracts/libs/LibAddress.sol index d276f158e7..0402013a0b 100644 --- a/packages/protocol/contracts/libs/LibAddress.sol +++ b/packages/protocol/contracts/libs/LibAddress.sol @@ -22,13 +22,11 @@ library LibAddress { error ETH_TRANSFER_FAILED(); - /// @dev Sends Ether to the specified address. It is recommended to avoid - /// using `.transfer()` due to potential reentrancy issues. - /// Reference: - /// https://consensys.net/diligence/blog/2019/09/stop-using-soliditys-transfer-now + /// @dev Sends Ether to the specified address. /// @param to The recipient address. /// @param amount The amount of Ether to send in wei. - function sendEther(address to, uint256 amount) internal { + /// @param gasLimit The max amount gas to pay for this transaction. + function sendEther(address to, uint256 amount, uint256 gasLimit) internal { // Check for zero-value or zero-address transactions if (to == address(0)) revert ETH_TRANSFER_FAILED(); @@ -36,12 +34,19 @@ library LibAddress { // WARNING: call() functions do not have an upper gas cost limit, so // it's important to note that it may not reliably execute as expected // when invoked with untrusted addresses. - (bool success,) = payable(to).call{ value: amount }(""); + (bool success,) = payable(to).call{ value: amount, gas: gasLimit }(""); // Ensure the transfer was successful if (!success) revert ETH_TRANSFER_FAILED(); } + /// @dev Sends Ether to the specified address. + /// @param to The recipient address. + /// @param amount The amount of Ether to send in wei. + function sendEther(address to, uint256 amount) internal { + sendEther(to, amount, gasleft()); + } + function supportsInterface( address addr, bytes4 interfaceId @@ -75,4 +80,8 @@ library LibAddress { return ECDSAUpgradeable.recover(hash, sig) == addr; } } + + function isSenderEOA() internal view returns (bool) { + return msg.sender == tx.origin; + } } diff --git a/packages/protocol/contracts/signal/ISignalService.sol b/packages/protocol/contracts/signal/ISignalService.sol index 5073c9315f..db1e96da88 100644 --- a/packages/protocol/contracts/signal/ISignalService.sol +++ b/packages/protocol/contracts/signal/ISignalService.sol @@ -45,7 +45,7 @@ interface ISignalService { /// source chain. /// @return True if the signal has been received, otherwise false. function proveSignalReceived( - uint256 srcChainId, + uint64 srcChainId, address app, bytes32 signal, bytes calldata proof diff --git a/packages/protocol/contracts/signal/SignalService.sol b/packages/protocol/contracts/signal/SignalService.sol index 8f657622d7..bca95a2bf8 100644 --- a/packages/protocol/contracts/signal/SignalService.sol +++ b/packages/protocol/contracts/signal/SignalService.sol @@ -6,7 +6,10 @@ pragma solidity ^0.8.20; -import { EssentialContract } from "../common/EssentialContract.sol"; +import { SafeCastUpgradeable } from + "lib/openzeppelin-contracts-upgradeable/contracts/utils/math/SafeCastUpgradeable.sol"; + +import { AuthorizableContract } from "../common/AuthorizableContract.sol"; import { ICrossChainSync } from "../common/ICrossChainSync.sol"; import { Proxied } from "../common/Proxied.sol"; import { LibSecureMerkleTrie } from "../thirdparty/LibSecureMerkleTrie.sol"; @@ -14,15 +17,28 @@ import { LibSecureMerkleTrie } from "../thirdparty/LibSecureMerkleTrie.sol"; import { ISignalService } from "./ISignalService.sol"; /// @title SignalService +/// @dev Labeled in AddressResolver as "signal_service" /// @notice See the documentation in {ISignalService} for more details. -contract SignalService is EssentialContract, ISignalService { +/// +/// @dev Authorization Guide for Multi-Hop Bridging: +/// For facilitating multi-hop bridging, authorize all deployed TaikoL1 and +/// TaikoL2 contracts involved in the bridging path. +/// Use the respective chain IDs as labels for authorization. +/// Note: SignalService should not authorize Bridges or other Bridgable +/// applications. +contract SignalService is AuthorizableContract, ISignalService { + using SafeCastUpgradeable for uint256; + + // storageProof represents ABI-encoded tuple of (key, value, and proof) + // returned from the eth_getProof() API. struct Hop { - uint256 chainId; + address signalRootRelay; bytes32 signalRoot; bytes storageProof; } struct Proof { + address crossChainSync; uint64 height; bytes storageProof; Hop[] hops; @@ -31,28 +47,15 @@ contract SignalService is EssentialContract, ISignalService { error SS_INVALID_APP(); error SS_INVALID_SIGNAL(); - modifier validApp(address app) { - if (app == address(0)) revert SS_INVALID_APP(); - _; - } - - modifier validSignal(bytes32 signal) { - if (signal == 0) revert SS_INVALID_SIGNAL(); - _; - } - /// @dev Initializer to be called after being deployed behind a proxy. - function init(address _addressManager) external initializer { - EssentialContract._init(_addressManager); + function init() external initializer { + AuthorizableContract._init(); } /// @inheritdoc ISignalService - function sendSignal(bytes32 signal) - public - validSignal(signal) - returns (bytes32 slot) - { - slot = getSignalSlot(block.chainid, msg.sender, signal); + function sendSignal(bytes32 signal) public returns (bytes32 slot) { + if (signal == 0) revert SS_INVALID_SIGNAL(); + slot = getSignalSlot(uint64(block.chainid), msg.sender, signal); assembly { sstore(slot, 1) } @@ -65,11 +68,11 @@ contract SignalService is EssentialContract, ISignalService { ) public view - validApp(app) - validSignal(signal) returns (bool) { - bytes32 slot = getSignalSlot(block.chainid, app, signal); + if (signal == 0) revert SS_INVALID_SIGNAL(); + if (app == address(0)) revert SS_INVALID_APP(); + bytes32 slot = getSignalSlot(uint64(block.chainid), app, signal); uint256 value; assembly { value := sload(slot) @@ -79,7 +82,7 @@ contract SignalService is EssentialContract, ISignalService { /// @inheritdoc ISignalService function proveSignalReceived( - uint256 srcChainId, + uint64 srcChainId, address app, bytes32 signal, bytes calldata proof @@ -98,7 +101,9 @@ contract SignalService is EssentialContract, ISignalService { } Proof memory p = abi.decode(proof, (Proof)); - if (p.storageProof.length == 0) return false; + if (p.crossChainSync == address(0) || p.storageProof.length == 0) { + return false; + } for (uint256 i; i < p.hops.length; ++i) { if (p.hops[i].signalRoot == 0) return false; @@ -110,15 +115,27 @@ contract SignalService is EssentialContract, ISignalService { // verify that chainB's signalRoot has been sent as a signal by chainB's // "taiko" contract, then using chainB's signalRoot, we further check // the signal is sent by chainC's "bridge" contract. - bytes32 signalRoot = ICrossChainSync(resolve("taiko", false)) - .getSyncedSnippet(p.height).signalRoot; + + if (!isAuthorizedAs(p.crossChainSync, bytes32(block.chainid))) { + return false; + } + + bytes32 signalRoot = ICrossChainSync(p.crossChainSync).getSyncedSnippet( + p.height + ).signalRoot; + if (signalRoot == 0) return false; for (uint256 i; i < p.hops.length; ++i) { Hop memory hop = p.hops[i]; + + bytes32 label = authorizedAddresses[hop.signalRootRelay]; + if (label == 0) return false; + uint64 chainId = uint256(label).toUint64(); + bytes32 slot = getSignalSlot( - hop.chainId, - resolve(hop.chainId, "taiko", false), + chainId, // use label as chainId + hop.signalRootRelay, hop.signalRoot // as a signal ); bool verified = LibSecureMerkleTrie.verifyInclusionProof( @@ -144,7 +161,7 @@ contract SignalService is EssentialContract, ISignalService { /// @return The unique storage slot of the signal which is /// created by encoding the sender address with the signal (message). function getSignalSlot( - uint256 chainId, + uint64 chainId, address app, bytes32 signal ) @@ -160,6 +177,10 @@ contract SignalService is EssentialContract, ISignalService { function skipProofCheck() public pure virtual returns (bool) { } } -/// @title ProxiedSignalService +/// @title ProxiedSingletonSignalService /// @notice Proxied version of the parent contract. -contract ProxiedSignalService is Proxied, SignalService { } +/// @dev Deploy this contract as a singleton per chain for use by multiple L2s +/// or L3s. No singleton check is performed within the code; it's the deployer's +/// responsibility to ensure this. Singleton deployment is essential for +/// enabling multi-hop bridging across all Taiko L2/L3s. +contract ProxiedSingletonSignalService is Proxied, SignalService { } diff --git a/packages/protocol/contracts/team/TimeLockTokenPool.sol b/packages/protocol/contracts/team/TimeLockTokenPool.sol index bae807d41b..57ad948f56 100644 --- a/packages/protocol/contracts/team/TimeLockTokenPool.sol +++ b/packages/protocol/contracts/team/TimeLockTokenPool.sol @@ -6,8 +6,8 @@ pragma solidity ^0.8.20; -import { OwnableUpgradeable } from - "lib/openzeppelin-contracts-upgradeable/contracts/access/OwnableUpgradeable.sol"; +import { Ownable2StepUpgradeable } from + "lib/openzeppelin-contracts-upgradeable/contracts/access/Ownable2StepUpgradeable.sol"; import { ERC20Upgradeable } from "lib/openzeppelin-contracts-upgradeable/contracts/token/ERC20/ERC20Upgradeable.sol"; import { SafeERC20Upgradeable } from @@ -32,7 +32,7 @@ import { Proxied } from "../common/Proxied.sol"; /// - team members, advisors, etc. /// - grant program grantees -contract TimeLockTokenPool is OwnableUpgradeable { +contract TimeLockTokenPool is Ownable2StepUpgradeable { using SafeERC20Upgradeable for ERC20Upgradeable; struct Grant { @@ -89,7 +89,7 @@ contract TimeLockTokenPool is OwnableUpgradeable { external initializer { - OwnableUpgradeable.__Ownable_init_unchained(); + Ownable2StepUpgradeable.__Ownable2Step_init(); if (_taikoToken == address(0)) revert INVALID_PARAM(); taikoToken = _taikoToken; diff --git a/packages/protocol/contracts/tokenvault/BaseNFTVault.sol b/packages/protocol/contracts/tokenvault/BaseNFTVault.sol index 2673071081..41ef9e39a4 100644 --- a/packages/protocol/contracts/tokenvault/BaseNFTVault.sol +++ b/packages/protocol/contracts/tokenvault/BaseNFTVault.sol @@ -6,16 +6,15 @@ pragma solidity ^0.8.20; -import { EssentialContract } from "../common/EssentialContract.sol"; -import { IRecallableSender } from "../bridge/IBridge.sol"; +import { BaseVault } from "./BaseVault.sol"; /// @title BaseNFTVault /// @notice Abstract contract for bridging NFTs across different chains. -abstract contract BaseNFTVault is EssentialContract, IRecallableSender { +abstract contract BaseNFTVault is BaseVault { // Struct representing the canonical NFT on another chain. struct CanonicalNFT { // Chain ID of the NFT. - uint256 chainId; + uint64 chainId; // Address of the NFT contract. address addr; // Symbol of the NFT. @@ -27,7 +26,7 @@ abstract contract BaseNFTVault is EssentialContract, IRecallableSender { // Struct representing the details of a bridged token transfer operation. struct BridgeTransferOp { // Destination chain ID. - uint256 destChainId; + uint64 destChainId; // Recipient address. address to; // Address of the token. @@ -49,9 +48,7 @@ abstract contract BaseNFTVault is EssentialContract, IRecallableSender { // Constants for interface IDs. bytes4 public constant ERC1155_INTERFACE_ID = 0xd9b67a26; bytes4 public constant ERC721_INTERFACE_ID = 0x80ac58cd; - - // Mapping to track bridged tokens. - mapping(address => bool) public isBridgedToken; + uint256 public constant MAX_TOKEN_PER_TXN = 10; // Mapping to store bridged NFTs and their canonical counterparts. mapping(address => CanonicalNFT) public bridgedToCanonical; @@ -59,10 +56,10 @@ abstract contract BaseNFTVault is EssentialContract, IRecallableSender { // Mapping to store canonical NFTs and their bridged counterparts. mapping(uint256 => mapping(address => address)) public canonicalToBridged; - uint256[47] private __gap; + uint256[48] private __gap; event BridgedTokenDeployed( - uint256 indexed chainId, + uint64 indexed chainId, address indexed ctoken, address indexed btoken, string ctokenSymbol, @@ -73,7 +70,7 @@ abstract contract BaseNFTVault is EssentialContract, IRecallableSender { bytes32 indexed msgHash, address indexed from, address indexed to, - uint256 destChainId, + uint64 destChainId, address token, uint256[] tokenIds, uint256[] amounts @@ -91,13 +88,12 @@ abstract contract BaseNFTVault is EssentialContract, IRecallableSender { bytes32 indexed msgHash, address indexed from, address indexed to, - uint256 srcChainId, + uint64 srcChainId, address token, uint256[] tokenIds, uint256[] amounts ); - error VAULT_INVALID_TO(); error VAULT_INVALID_TOKEN(); error VAULT_INVALID_AMOUNT(); error VAULT_INVALID_USER(); @@ -109,9 +105,16 @@ abstract contract BaseNFTVault is EssentialContract, IRecallableSender { error VAULT_TOKEN_ARRAY_MISMATCH(); error VAULT_MAX_TOKEN_PER_TXN_EXCEEDED(); - /// @notice Initializes the contract with an address manager. - /// @param addressManager The address of the address manager. - function init(address addressManager) external initializer { - EssentialContract._init(addressManager); + modifier withValidOperation(BridgeTransferOp calldata op) { + if (op.tokenIds.length != op.amounts.length) { + revert VAULT_TOKEN_ARRAY_MISMATCH(); + } + + if (op.tokenIds.length > MAX_TOKEN_PER_TXN) { + revert VAULT_MAX_TOKEN_PER_TXN_EXCEEDED(); + } + + if (op.token == address(0)) revert VAULT_INVALID_TOKEN(); + _; } } diff --git a/packages/protocol/contracts/tokenvault/BaseVault.sol b/packages/protocol/contracts/tokenvault/BaseVault.sol new file mode 100644 index 0000000000..e615c35b38 --- /dev/null +++ b/packages/protocol/contracts/tokenvault/BaseVault.sol @@ -0,0 +1,69 @@ +// SPDX-License-Identifier: MIT +// _____ _ _ _ _ +// |_ _|_ _(_) |_____ | | __ _| |__ ___ +// | |/ _` | | / / _ \ | |__/ _` | '_ (_-< +// |_|\__,_|_|_\_\___/ |____\__,_|_.__/__/ +pragma solidity ^0.8.20; + +import { IERC165Upgradeable } from + "lib/openzeppelin-contracts-upgradeable/contracts/utils/introspection/IERC165Upgradeable.sol"; + +import { IBridge, IRecallableSender } from "../bridge/IBridge.sol"; +import { EssentialContract } from "../common/EssentialContract.sol"; + +abstract contract BaseVault is + EssentialContract, + IRecallableSender, + IERC165Upgradeable +{ + error VAULT_PERMISSION_DENIED(); + + modifier onlyFromBridge() { + if (msg.sender != resolve("bridge", false)) { + revert VAULT_PERMISSION_DENIED(); + } + _; + } + /// @notice Initializes the contract with the address manager. + /// @param addressManager Address manager contract address. + + function init(address addressManager) external initializer { + EssentialContract._init(addressManager); + } + + /// @notice Checks if the contract supports the given interface. + /// @param interfaceId The interface identifier. + /// @return true if the contract supports the interface, false otherwise. + function supportsInterface(bytes4 interfaceId) + public + view + virtual + override + returns (bool) + { + return interfaceId == type(IRecallableSender).interfaceId; + } + + function name() public pure virtual returns (bytes32); + + function checkProcessMessageContext() + internal + view + onlyFromBridge + returns (IBridge.Context memory ctx) + { + ctx = IBridge(msg.sender).context(); + address sender = resolve(ctx.srcChainId, name(), false); + if (ctx.from != sender) revert VAULT_PERMISSION_DENIED(); + } + + function checkRecallMessageContext() + internal + view + onlyFromBridge + returns (IBridge.Context memory ctx) + { + ctx = IBridge(msg.sender).context(); + if (ctx.from != msg.sender) revert VAULT_PERMISSION_DENIED(); + } +} diff --git a/packages/protocol/contracts/tokenvault/ERC1155Vault.sol b/packages/protocol/contracts/tokenvault/ERC1155Vault.sol index 4ee2a9dc02..5e420a1da0 100644 --- a/packages/protocol/contracts/tokenvault/ERC1155Vault.sol +++ b/packages/protocol/contracts/tokenvault/ERC1155Vault.sol @@ -6,26 +6,23 @@ pragma solidity ^0.8.20; -import { Create2Upgradeable } from - "lib/openzeppelin-contracts-upgradeable/contracts/utils/Create2Upgradeable.sol"; +import { TransparentUpgradeableProxy } from + "lib/openzeppelin-contracts/contracts/proxy/transparent/TransparentUpgradeableProxy.sol"; + import { ERC1155ReceiverUpgradeable, IERC1155ReceiverUpgradeable } from "lib/openzeppelin-contracts-upgradeable/contracts/token/ERC1155/utils/ERC1155ReceiverUpgradeable.sol"; -import { - ERC1155Upgradeable, - IERC1155Upgradeable -} from +import { ERC1155Upgradeable } from "lib/openzeppelin-contracts-upgradeable/contracts/token/ERC1155/ERC1155Upgradeable.sol"; import { Proxied } from "../common/Proxied.sol"; import { IBridge, IRecallableSender } from "../bridge/IBridge.sol"; import { LibAddress } from "../libs/LibAddress.sol"; -import { LibVaultUtils } from "./libs/LibVaultUtils.sol"; -import { BaseNFTVault } from "./BaseNFTVault.sol"; -import { ProxiedBridgedERC1155 } from "./BridgedERC1155.sol"; +import { BaseVault, BaseNFTVault } from "./BaseNFTVault.sol"; +import { BridgedERC1155 } from "./BridgedERC1155.sol"; /// @title ERC1155NameAndSymbol /// @notice Interface for ERC1155 contracts that provide name() and symbol() @@ -38,6 +35,7 @@ interface ERC1155NameAndSymbol { } /// @title ERC1155Vault +/// @dev Labeled in AddressResolver as "erc1155_vault" /// @notice This vault holds all ERC1155 tokens that users have deposited. /// It also manages the mapping between canonical tokens and their bridged /// tokens. @@ -49,51 +47,51 @@ contract ERC1155Vault is BaseNFTVault, ERC1155ReceiverUpgradeable { /// @notice Transfers ERC1155 tokens to this vault and sends a message to /// the destination chain so the user can receive the same (bridged) tokens /// by invoking the message call. - /// @param opt Option for sending the ERC1155 token. - function sendToken(BridgeTransferOp memory opt) + /// @param op Option for sending the ERC1155 token. + function sendToken(BridgeTransferOp calldata op) external payable nonReentrant whenNotPaused + withValidOperation(op) + returns (IBridge.Message memory _message) { - // Validate amounts and addresses - LibVaultUtils.checkIfValidAmounts(opt.amounts, opt.tokenIds, false); - LibVaultUtils.checkIfValidAddresses( - resolve(opt.destChainId, "erc1155_vault", false), opt.to, opt.token - ); - + for (uint256 i; i < op.amounts.length; ++i) { + if (op.amounts[i] == 0) revert VAULT_INVALID_AMOUNT(); + } // Check token interface support - if (!opt.token.supportsInterface(ERC1155_INTERFACE_ID)) { + if (!op.token.supportsInterface(ERC1155_INTERFACE_ID)) { revert VAULT_INTERFACE_NOT_SUPPORTED(); } // Store variables in memory to avoid stack-too-deep error - uint256[] memory _amounts = opt.amounts; - address _token = opt.token; - uint256[] memory _tokenIds = opt.tokenIds; + uint256[] memory _amounts = op.amounts; + address _token = op.token; + uint256[] memory _tokenIds = op.tokenIds; // Create a message to send to the destination chain IBridge.Message memory message; - message.destChainId = opt.destChainId; - message.data = _encodeDestinationCall(msg.sender, opt); - message.user = msg.sender; - message.to = resolve(message.destChainId, "erc1155_vault", false); - message.gasLimit = opt.gasLimit; - message.value = msg.value - opt.fee; - message.fee = opt.fee; - message.refundTo = opt.refundTo; - message.memo = opt.memo; + message.destChainId = op.destChainId; + message.data = _handleMessage(msg.sender, op); + message.owner = msg.sender; + message.to = resolve(message.destChainId, name(), false); + message.gasLimit = op.gasLimit; + message.value = msg.value - op.fee; + message.fee = op.fee; + message.refundTo = op.refundTo; + message.memo = op.memo; // Send the message and obtain the message hash - (bytes32 msgHash, IBridge.Message memory _message) = IBridge( - resolve("bridge", false) - ).sendMessage{ value: msg.value }(message); + bytes32 msgHash; + (msgHash, _message) = IBridge(resolve("bridge", false)).sendMessage{ + value: msg.value + }(message); // Emit TokenSent event emit TokenSent({ msgHash: msgHash, - from: _message.user, - to: opt.to, + from: _message.owner, + to: op.to, destChainId: _message.destChainId, token: _token, tokenIds: _tokenIds, @@ -121,11 +119,11 @@ contract ERC1155Vault is BaseNFTVault, ERC1155ReceiverUpgradeable { payable nonReentrant whenNotPaused - onlyFromNamed("bridge") { // Check context validity - IBridge.Context memory ctx = - LibVaultUtils.checkValidContext("erc1155_vault"); + IBridge.Context memory ctx = checkProcessMessageContext(); + + address _to = to == address(0) || to == address(this) ? from : to; address token; unchecked { @@ -135,7 +133,7 @@ contract ERC1155Vault is BaseNFTVault, ERC1155ReceiverUpgradeable { for (uint256 i; i < tokenIds.length; ++i) { ERC1155Upgradeable(token).safeTransferFrom({ from: address(this), - to: to, + to: _to, id: tokenIds[i], amount: amounts[i], data: "" @@ -145,14 +143,12 @@ contract ERC1155Vault is BaseNFTVault, ERC1155ReceiverUpgradeable { // Token does not live on this chain token = _getOrDeployBridgedToken(ctoken); for (uint256 i; i < tokenIds.length; ++i) { - ProxiedBridgedERC1155(token).mint( - to, tokenIds[i], amounts[i] - ); + BridgedERC1155(token).mint(_to, tokenIds[i], amounts[i]); } } } - to.sendEther(msg.value); + _to.sendEther(msg.value); emit TokenReceived({ msgHash: ctx.msgHash, @@ -175,9 +171,8 @@ contract ERC1155Vault is BaseNFTVault, ERC1155ReceiverUpgradeable { override nonReentrant whenNotPaused - onlyFromNamed("bridge") { - LibVaultUtils.checkValidContext("bridge"); + checkRecallMessageContext(); ( CanonicalNFT memory nft, @@ -193,17 +188,17 @@ contract ERC1155Vault is BaseNFTVault, ERC1155ReceiverUpgradeable { if (nft.addr == address(0)) revert VAULT_INVALID_TOKEN(); unchecked { - if (isBridgedToken[nft.addr]) { + if (bridgedToCanonical[nft.addr].addr != address(0)) { for (uint256 i; i < tokenIds.length; ++i) { - ProxiedBridgedERC1155(nft.addr).mint( - message.user, tokenIds[i], amounts[i] + BridgedERC1155(nft.addr).mint( + message.owner, tokenIds[i], amounts[i] ); } } else { for (uint256 i; i < tokenIds.length; ++i) { - IERC1155Upgradeable(nft.addr).safeTransferFrom({ + ERC1155Upgradeable(nft.addr).safeTransferFrom({ from: address(this), - to: message.user, + to: message.owner, id: tokenIds[i], amount: amounts[i], data: "" @@ -212,11 +207,12 @@ contract ERC1155Vault is BaseNFTVault, ERC1155ReceiverUpgradeable { } } // Send back Ether - message.user.sendEther(message.value); + message.owner.sendEther(message.value); + // Emit TokenReleased event emit TokenReleased({ msgHash: msgHash, - from: message.user, + from: message.owner, token: nft.addr, tokenIds: tokenIds, amounts: amounts @@ -256,21 +252,25 @@ contract ERC1155Vault is BaseNFTVault, ERC1155ReceiverUpgradeable { public view virtual - override(ERC1155ReceiverUpgradeable) + override(BaseVault, ERC1155ReceiverUpgradeable) returns (bool) { return interfaceId == type(ERC1155ReceiverUpgradeable).interfaceId - || interfaceId == type(IRecallableSender).interfaceId - || super.supportsInterface(interfaceId); + || BaseVault.supportsInterface(interfaceId); } - /// @dev Encodes sending bridged or canonical ERC1155 tokens to the user. + function name() public pure override returns (bytes32) { + return "erc1155_vault"; + } + + /// @dev Handles the message on the source chain and returns the encoded + /// call on the destination call. /// @param user The user's address. - /// @param opt BridgeTransferOp data. + /// @param op BridgeTransferOp data. /// @return msgData Encoded message data. - function _encodeDestinationCall( + function _handleMessage( address user, - BridgeTransferOp memory opt + BridgeTransferOp memory op ) private returns (bytes memory msgData) @@ -278,46 +278,46 @@ contract ERC1155Vault is BaseNFTVault, ERC1155ReceiverUpgradeable { CanonicalNFT memory nft; unchecked { // is a btoken, meaning, it does not live on this chain - if (isBridgedToken[opt.token]) { - nft = bridgedToCanonical[opt.token]; - for (uint256 i; i < opt.tokenIds.length; ++i) { - ProxiedBridgedERC1155(opt.token).burn( - user, opt.tokenIds[i], opt.amounts[i] + if (bridgedToCanonical[op.token].addr != address(0)) { + nft = bridgedToCanonical[op.token]; + for (uint256 i; i < op.tokenIds.length; ++i) { + BridgedERC1155(op.token).burn( + user, op.tokenIds[i], op.amounts[i] ); } } else { // is a ctoken token, meaning, it lives on this chain nft = CanonicalNFT({ - chainId: block.chainid, - addr: opt.token, + chainId: uint64(block.chainid), + addr: op.token, symbol: "", name: "" }); - ERC1155NameAndSymbol t = ERC1155NameAndSymbol(opt.token); + ERC1155NameAndSymbol t = ERC1155NameAndSymbol(op.token); try t.name() returns (string memory _name) { nft.name = _name; } catch { } try t.symbol() returns (string memory _symbol) { nft.symbol = _symbol; } catch { } - for (uint256 i; i < opt.tokenIds.length; ++i) { - ERC1155Upgradeable(opt.token).safeTransferFrom({ + for (uint256 i; i < op.tokenIds.length; ++i) { + ERC1155Upgradeable(op.token).safeTransferFrom({ from: msg.sender, to: address(this), - id: opt.tokenIds[i], - amount: opt.amounts[i], + id: op.tokenIds[i], + amount: op.amounts[i], data: "" }); } } } msgData = abi.encodeWithSelector( - ERC1155Vault.receiveToken.selector, + this.receiveToken.selector, nft, user, - opt.to, - opt.tokenIds, - opt.amounts + op.to, + op.tokenIds, + op.amounts ); } @@ -343,29 +343,27 @@ contract ERC1155Vault is BaseNFTVault, ERC1155ReceiverUpgradeable { private returns (address btoken) { - address bridgedToken = Create2Upgradeable.deploy({ - amount: 0, // amount of Ether to send - salt: keccak256(abi.encode(ctoken)), - bytecode: type(ProxiedBridgedERC1155).creationCode - }); - - btoken = LibVaultUtils.deployProxy( - address(bridgedToken), - owner(), - bytes.concat( - ProxiedBridgedERC1155(bridgedToken).init.selector, - abi.encode( - addressManager, - ctoken.addr, - ctoken.chainId, - ctoken.symbol, - ctoken.name - ) + bytes memory data = bytes.concat( + BridgedERC1155.init.selector, + abi.encode( + addressManager, + ctoken.addr, + ctoken.chainId, + ctoken.symbol, + ctoken.name ) ); - isBridgedToken[btoken] = true; + btoken = address( + new TransparentUpgradeableProxy( + resolve("proxied_bridged_erc1155", false), + owner(), + data + ) + ); + bridgedToCanonical[btoken] = ctoken; canonicalToBridged[ctoken.chainId][ctoken.addr] = btoken; + emit BridgedTokenDeployed({ chainId: ctoken.chainId, ctoken: ctoken.addr, @@ -376,6 +374,10 @@ contract ERC1155Vault is BaseNFTVault, ERC1155ReceiverUpgradeable { } } -/// @title ProxiedERC1155Vault +/// @title ProxiedSingletonERC1155Vault /// @notice Proxied version of the parent contract. -contract ProxiedERC1155Vault is Proxied, ERC1155Vault { } +/// @dev Deploy this contract as a singleton per chain for use by multiple L2s +/// or L3s. No singleton check is performed within the code; it's the deployer's +/// responsibility to ensure this. Singleton deployment is essential for +/// enabling multi-hop bridging across all Taiko L2/L3s. +contract ProxiedSingletonERC1155Vault is Proxied, ERC1155Vault { } diff --git a/packages/protocol/contracts/tokenvault/ERC20Vault.sol b/packages/protocol/contracts/tokenvault/ERC20Vault.sol index 685429ab6f..7a849a624f 100644 --- a/packages/protocol/contracts/tokenvault/ERC20Vault.sol +++ b/packages/protocol/contracts/tokenvault/ERC20Vault.sol @@ -6,39 +6,34 @@ pragma solidity ^0.8.20; -import { Create2Upgradeable } from - "lib/openzeppelin-contracts-upgradeable/contracts/utils/Create2Upgradeable.sol"; +import { TransparentUpgradeableProxy } from + "lib/openzeppelin-contracts/contracts/proxy/transparent/TransparentUpgradeableProxy.sol"; + import { ERC20Upgradeable } from "lib/openzeppelin-contracts-upgradeable/contracts/token/ERC20/ERC20Upgradeable.sol"; import { SafeERC20Upgradeable } from "lib/openzeppelin-contracts-upgradeable/contracts/token/ERC20/utils/SafeERC20Upgradeable.sol"; -import { IERC165Upgradeable } from - "lib/openzeppelin-contracts-upgradeable/contracts/utils/introspection/IERC165Upgradeable.sol"; -import { EssentialContract } from "../common/EssentialContract.sol"; import { Proxied } from "../common/Proxied.sol"; -import { IBridge, IRecallableSender } from "../bridge/IBridge.sol"; +import { IBridge } from "../bridge/IBridge.sol"; import { LibAddress } from "../libs/LibAddress.sol"; -import { ProxiedBridgedERC20 } from "./BridgedERC20.sol"; +import { BridgedERC20 } from "./BridgedERC20.sol"; import { IMintableERC20 } from "./IMintableERC20.sol"; -import { LibVaultUtils } from "./libs/LibVaultUtils.sol"; +import { BaseVault } from "./BaseVault.sol"; /// @title ERC20Vault +/// @dev Labeled in AddressResolver as "erc20_vault" /// @notice This vault holds all ERC20 tokens (excluding Ether) that users have /// deposited. It also manages the mapping between canonical ERC20 tokens and /// their bridged tokens. -contract ERC20Vault is - EssentialContract, - IERC165Upgradeable, - IRecallableSender -{ +contract ERC20Vault is BaseVault { using LibAddress for address; using SafeERC20Upgradeable for ERC20Upgradeable; // Structs for canonical ERC20 tokens and transfer operations struct CanonicalERC20 { - uint256 chainId; + uint64 chainId; address addr; uint8 decimals; string symbol; @@ -46,7 +41,7 @@ contract ERC20Vault is } struct BridgeTransferOp { - uint256 destChainId; + uint64 destChainId; address to; address token; uint256 amount; @@ -56,9 +51,6 @@ contract ERC20Vault is string memo; } - // Tracks if a token on the current chain is a canonical or btoken. - mapping(address => bool) public isBridgedToken; - // Mappings from btokens to their canonical tokens. mapping(address => CanonicalERC20) public bridgedToCanonical; @@ -66,7 +58,7 @@ contract ERC20Vault is // tokens across other chains aside from Ethereum. mapping(uint256 => mapping(address => address)) public canonicalToBridged; - uint256[47] private __gap; + uint256[48] private __gap; event BridgedTokenDeployed( uint256 indexed srcChainId, @@ -80,7 +72,7 @@ contract ERC20Vault is bytes32 indexed msgHash, address indexed from, address indexed to, - uint256 destChainId, + uint64 destChainId, address token, uint256 amount ); @@ -94,12 +86,11 @@ contract ERC20Vault is bytes32 indexed msgHash, address indexed from, address indexed to, - uint256 srcChainId, + uint64 srcChainId, address token, uint256 amount ); - error VAULT_INVALID_TO(); error VAULT_INVALID_TOKEN(); error VAULT_INVALID_AMOUNT(); error VAULT_INVALID_USER(); @@ -108,67 +99,50 @@ contract ERC20Vault is error VAULT_MESSAGE_NOT_FAILED(); error VAULT_MESSAGE_RELEASED_ALREADY(); - modifier onlyValidAddresses( - uint256 chainId, - bytes32 name, - address to, - address token - ) { - if (to == address(0) || to == resolve(chainId, name, false)) { - revert VAULT_INVALID_TO(); - } - if (token == address(0)) revert VAULT_INVALID_TOKEN(); - _; - } - - /// @notice Initializes the contract with the address manager. - /// @param addressManager Address manager contract address. - function init(address addressManager) external initializer { - EssentialContract._init(addressManager); - } - /// @notice Transfers ERC20 tokens to this vault and sends a message to the /// destination chain so the user can receive the same amount of tokens by /// invoking the message call. - /// @param opt Option for sending ERC20 tokens. - function sendToken(BridgeTransferOp calldata opt) + /// @param op Option for sending ERC20 tokens. + function sendToken(BridgeTransferOp calldata op) external payable nonReentrant whenNotPaused - onlyValidAddresses(opt.destChainId, "erc20_vault", opt.to, opt.token) + returns (IBridge.Message memory _message) { - if (opt.amount == 0) revert VAULT_INVALID_AMOUNT(); + if (op.amount == 0) revert VAULT_INVALID_AMOUNT(); + if (op.token == address(0)) revert VAULT_INVALID_TOKEN(); uint256 _amount; IBridge.Message memory message; - (message.data, _amount) = _encodeDestinationCall({ + (message.data, _amount) = _handleMessage({ user: msg.sender, - token: opt.token, - amount: opt.amount, - to: opt.to + token: op.token, + amount: op.amount, + to: op.to }); - message.destChainId = opt.destChainId; - message.user = msg.sender; - message.to = resolve(opt.destChainId, "erc20_vault", false); - message.gasLimit = opt.gasLimit; - message.value = msg.value - opt.fee; - message.fee = opt.fee; - message.refundTo = opt.refundTo; - message.memo = opt.memo; + message.destChainId = op.destChainId; + message.owner = msg.sender; + message.to = resolve(op.destChainId, name(), false); + message.gasLimit = op.gasLimit; + message.value = msg.value - op.fee; + message.fee = op.fee; + message.refundTo = op.refundTo; + message.memo = op.memo; - (bytes32 msgHash, IBridge.Message memory _message) = IBridge( - resolve("bridge", false) - ).sendMessage{ value: msg.value }(message); + bytes32 msgHash; + (msgHash, _message) = IBridge(resolve("bridge", false)).sendMessage{ + value: msg.value + }(message); emit TokenSent({ msgHash: msgHash, - from: _message.user, - to: opt.to, - destChainId: opt.destChainId, - token: opt.token, + from: _message.owner, + to: op.to, + destChainId: op.destChainId, + token: op.token, amount: _amount }); } @@ -188,21 +162,20 @@ contract ERC20Vault is payable nonReentrant whenNotPaused - onlyFromNamed("bridge") { - IBridge.Context memory ctx = - LibVaultUtils.checkValidContext("erc20_vault"); - + IBridge.Context memory ctx = checkProcessMessageContext(); + address _to = to == address(0) || to == address(this) ? from : to; address token; + if (ctoken.chainId == block.chainid) { token = ctoken.addr; - ERC20Upgradeable(token).safeTransfer(to, amount); + ERC20Upgradeable(token).safeTransfer(_to, amount); } else { token = _getOrDeployBridgedToken(ctoken); - IMintableERC20(token).mint(to, amount); + IMintableERC20(token).mint(_to, amount); } - to.sendEther(msg.value); + _to.sendEther(msg.value); emit TokenReceived({ msgHash: ctx.msgHash, @@ -214,7 +187,6 @@ contract ERC20Vault is }); } - /// @inheritdoc IRecallableSender function onMessageRecalled( IBridge.Message calldata message, bytes32 msgHash @@ -224,9 +196,8 @@ contract ERC20Vault is override nonReentrant whenNotPaused - onlyFromNamed("bridge") { - LibVaultUtils.checkValidContext("bridge"); + checkRecallMessageContext(); (, address token,, uint256 amount) = abi.decode( message.data[4:], (CanonicalERC20, address, address, uint256) @@ -235,37 +206,29 @@ contract ERC20Vault is if (token == address(0)) revert VAULT_INVALID_TOKEN(); if (amount > 0) { - if (isBridgedToken[token]) { + if (bridgedToCanonical[token].addr != address(0)) { IMintableERC20(token).burn(address(this), amount); } else { - ERC20Upgradeable(token).safeTransfer(message.user, amount); + ERC20Upgradeable(token).safeTransfer(message.owner, amount); } } - message.user.sendEther(message.value); + message.owner.sendEther(message.value); emit TokenReleased({ msgHash: msgHash, - from: message.user, + from: message.owner, token: token, amount: amount }); } - /// @notice Checks if the contract supports the given interface. - /// @param interfaceId The interface identifier. - /// @return true if the contract supports the interface, false otherwise. - function supportsInterface(bytes4 interfaceId) - public - view - virtual - override - returns (bool) - { - return interfaceId == type(IRecallableSender).interfaceId; + function name() public pure override returns (bytes32) { + return "erc20_vault"; } - /// @dev Encodes sending bridged or canonical ERC20 tokens to the user. + /// @dev Handles the message on the source chain and returns the encoded + /// call on the destination call. /// @param user The user's address. /// @param token The token address. /// @param to To address. @@ -274,7 +237,7 @@ contract ERC20Vault is /// @return _balanceChange User token balance actual change after the token /// transfer. This value is calculated so we do not assume token balance /// change is the amount of token transfered away. - function _encodeDestinationCall( + function _handleMessage( address user, address token, address to, @@ -286,22 +249,25 @@ contract ERC20Vault is CanonicalERC20 memory ctoken; // If it's a bridged token - if (isBridgedToken[token]) { + if (bridgedToCanonical[token].addr != address(0)) { ctoken = bridgedToCanonical[token]; - assert(ctoken.addr != address(0)); IMintableERC20(token).burn(msg.sender, amount); _balanceChange = amount; } else { // If it's a canonical token ERC20Upgradeable t = ERC20Upgradeable(token); ctoken = CanonicalERC20({ - chainId: block.chainid, + chainId: uint64(block.chainid), addr: token, decimals: t.decimals(), symbol: t.symbol(), name: t.name() }); + // Query the balance then query it again to get the actual amount of + // token transferred into this address, this is more accurate than + // simply using `amount` -- some contract may deduct a fee from the + // transferred amount. uint256 _balance = t.balanceOf(address(this)); t.transferFrom({ from: msg.sender, @@ -312,7 +278,7 @@ contract ERC20Vault is } msgData = abi.encodeWithSelector( - ERC20Vault.receiveToken.selector, ctoken, user, to, _balanceChange + this.receiveToken.selector, ctoken, user, to, _balanceChange ); } @@ -339,29 +305,25 @@ contract ERC20Vault is private returns (address btoken) { - address bridgedToken = Create2Upgradeable.deploy({ - amount: 0, // amount of Ether to send - salt: keccak256(abi.encode(ctoken)), - bytecode: type(ProxiedBridgedERC20).creationCode - }); - - btoken = LibVaultUtils.deployProxy( - address(bridgedToken), - owner(), - bytes.concat( - ProxiedBridgedERC20(bridgedToken).init.selector, - abi.encode( - addressManager, - ctoken.addr, - ctoken.chainId, - ctoken.decimals, - ctoken.symbol, - ctoken.name - ) + bytes memory data = bytes.concat( + BridgedERC20.init.selector, + abi.encode( + addressManager, + ctoken.addr, + ctoken.chainId, + ctoken.decimals, + ctoken.symbol, + ctoken.name + ) + ); + btoken = address( + new TransparentUpgradeableProxy( + resolve("proxied_bridged_erc20", false), + owner(), + data ) ); - isBridgedToken[btoken] = true; bridgedToCanonical[btoken] = ctoken; canonicalToBridged[ctoken.chainId][ctoken.addr] = btoken; @@ -376,6 +338,10 @@ contract ERC20Vault is } } -/// @title ProxiedERC20Vault +/// @title ProxiedSingletonERC20Vault /// @notice Proxied version of the parent contract. -contract ProxiedERC20Vault is Proxied, ERC20Vault { } +/// @dev Deploy this contract as a singleton per chain for use by multiple L2s +/// or L3s. No singleton check is performed within the code; it's the deployer's +/// responsibility to ensure this. Singleton deployment is essential for +/// enabling multi-hop bridging across all Taiko L2/L3s. +contract ProxiedSingletonERC20Vault is Proxied, ERC20Vault { } diff --git a/packages/protocol/contracts/tokenvault/ERC721Vault.sol b/packages/protocol/contracts/tokenvault/ERC721Vault.sol index 15e075400d..afdaaa0de7 100644 --- a/packages/protocol/contracts/tokenvault/ERC721Vault.sol +++ b/packages/protocol/contracts/tokenvault/ERC721Vault.sol @@ -6,35 +6,27 @@ pragma solidity ^0.8.20; -import { Create2Upgradeable } from - "lib/openzeppelin-contracts-upgradeable/contracts/utils/Create2Upgradeable.sol"; -import { - ERC721Upgradeable, - IERC721Upgradeable -} from +import { TransparentUpgradeableProxy } from + "lib/openzeppelin-contracts/contracts/proxy/transparent/TransparentUpgradeableProxy.sol"; + +import { ERC721Upgradeable } from "lib/openzeppelin-contracts-upgradeable/contracts/token/ERC721/ERC721Upgradeable.sol"; -import { IERC165Upgradeable } from - "lib/openzeppelin-contracts-upgradeable/contracts/utils/introspection/IERC165Upgradeable.sol"; import { IERC721ReceiverUpgradeable } from "lib/openzeppelin-contracts-upgradeable/contracts/token/ERC721/IERC721ReceiverUpgradeable.sol"; -import { IBridge, IRecallableSender } from "../bridge/IBridge.sol"; +import { IBridge } from "../bridge/IBridge.sol"; import { LibAddress } from "../libs/LibAddress.sol"; import { Proxied } from "../common/Proxied.sol"; import { BaseNFTVault } from "./BaseNFTVault.sol"; -import { LibVaultUtils } from "./libs/LibVaultUtils.sol"; -import { ProxiedBridgedERC721 } from "./BridgedERC721.sol"; +import { BridgedERC721 } from "./BridgedERC721.sol"; /// @title ERC721Vault +/// @dev Labeled in AddressResolver as "erc721_vault" /// @notice This vault holds all ERC721 tokens that users have deposited. /// It also manages the mapping between canonical tokens and their bridged /// tokens. -contract ERC721Vault is - BaseNFTVault, - IERC721ReceiverUpgradeable, - IERC165Upgradeable -{ +contract ERC721Vault is BaseNFTVault, IERC721ReceiverUpgradeable { using LibAddress for address; uint256[50] private __gap; @@ -42,47 +34,49 @@ contract ERC721Vault is /// @notice Transfers ERC721 tokens to this vault and sends a message to the /// destination chain so the user can receive the same (bridged) tokens /// by invoking the message call. - /// @param opt Option for sending the ERC721 token. - function sendToken(BridgeTransferOp calldata opt) + /// @param op Option for sending the ERC721 token. + function sendToken(BridgeTransferOp calldata op) external payable nonReentrant whenNotPaused + withValidOperation(op) + returns (IBridge.Message memory _message) { - LibVaultUtils.checkIfValidAmounts(opt.amounts, opt.tokenIds, true); - LibVaultUtils.checkIfValidAddresses( - resolve(opt.destChainId, "erc721_vault", false), opt.to, opt.token - ); + for (uint256 i; i < op.tokenIds.length; ++i) { + if (op.amounts[i] != 0) revert VAULT_INVALID_AMOUNT(); + } - if (!opt.token.supportsInterface(ERC721_INTERFACE_ID)) { + if (!op.token.supportsInterface(ERC721_INTERFACE_ID)) { revert VAULT_INTERFACE_NOT_SUPPORTED(); } // We need to save them into memory - because structs containing // dynamic arrays will cause stack-too-deep error when passed - uint256[] memory _amounts = opt.amounts; - address _token = opt.token; - uint256[] memory _tokenIds = opt.tokenIds; + uint256[] memory _amounts = op.amounts; + address _token = op.token; + uint256[] memory _tokenIds = op.tokenIds; IBridge.Message memory message; - message.destChainId = opt.destChainId; - message.data = _encodeDestinationCall(msg.sender, opt); - message.user = msg.sender; - message.to = resolve(message.destChainId, "erc721_vault", false); - message.gasLimit = opt.gasLimit; - message.value = msg.value - opt.fee; - message.fee = opt.fee; - message.refundTo = opt.refundTo; - message.memo = opt.memo; - - (bytes32 msgHash, IBridge.Message memory _message) = IBridge( - resolve("bridge", false) - ).sendMessage{ value: msg.value }(message); + message.destChainId = op.destChainId; + message.data = _handleMessage(msg.sender, op); + message.owner = msg.sender; + message.to = resolve(message.destChainId, name(), false); + message.gasLimit = op.gasLimit; + message.value = msg.value - op.fee; + message.fee = op.fee; + message.refundTo = op.refundTo; + message.memo = op.memo; + + bytes32 msgHash; + (msgHash, _message) = IBridge(resolve("bridge", false)).sendMessage{ + value: msg.value + }(message); emit TokenSent({ msgHash: msgHash, - from: _message.user, - to: opt.to, + from: _message.owner, + to: op.to, destChainId: _message.destChainId, token: _token, tokenIds: _tokenIds, @@ -105,10 +99,10 @@ contract ERC721Vault is payable nonReentrant whenNotPaused - onlyFromNamed("bridge") { - IBridge.Context memory ctx = - LibVaultUtils.checkValidContext("erc721_vault"); + IBridge.Context memory ctx = checkProcessMessageContext(); + + address _to = to == address(0) || to == address(this) ? from : to; address token; unchecked { @@ -117,19 +111,19 @@ contract ERC721Vault is for (uint256 i; i < tokenIds.length; ++i) { ERC721Upgradeable(token).transferFrom({ from: address(this), - to: to, + to: _to, tokenId: tokenIds[i] }); } } else { token = _getOrDeployBridgedToken(ctoken); for (uint256 i; i < tokenIds.length; ++i) { - ProxiedBridgedERC721(token).mint(to, tokenIds[i]); + BridgedERC721(token).mint(_to, tokenIds[i]); } } } - to.sendEther(msg.value); + _to.sendEther(msg.value); emit TokenReceived({ msgHash: ctx.msgHash, @@ -142,7 +136,6 @@ contract ERC721Vault is }); } - /// @inheritdoc IRecallableSender function onMessageRecalled( IBridge.Message calldata message, bytes32 msgHash @@ -152,38 +145,30 @@ contract ERC721Vault is override nonReentrant whenNotPaused - onlyFromNamed("bridge") { - LibVaultUtils.checkValidContext("bridge"); + checkRecallMessageContext(); - if (message.user == address(0)) revert VAULT_INVALID_USER(); + if (message.owner == address(0)) revert VAULT_INVALID_USER(); if (message.srcChainId != block.chainid) { revert VAULT_INVALID_SRC_CHAIN_ID(); } - ( - CanonicalNFT memory nft, // - , - , - uint256[] memory tokenIds - ) = abi.decode( + (CanonicalNFT memory nft,,, uint256[] memory tokenIds) = abi.decode( message.data[4:], (CanonicalNFT, address, address, uint256[]) ); if (nft.addr == address(0)) revert VAULT_INVALID_TOKEN(); unchecked { - if (isBridgedToken[nft.addr]) { + if (bridgedToCanonical[nft.addr].addr != address(0)) { for (uint256 i; i < tokenIds.length; ++i) { - ProxiedBridgedERC721(nft.addr).mint( - message.user, tokenIds[i] - ); + BridgedERC721(nft.addr).mint(message.owner, tokenIds[i]); } } else { for (uint256 i; i < tokenIds.length; ++i) { - IERC721Upgradeable(nft.addr).safeTransferFrom({ + ERC721Upgradeable(nft.addr).safeTransferFrom({ from: address(this), - to: message.user, + to: message.owner, tokenId: tokenIds[i] }); } @@ -191,11 +176,11 @@ contract ERC721Vault is } // send back Ether - message.user.sendEther(message.value); + message.owner.sendEther(message.value); emit TokenReleased({ msgHash: msgHash, - from: message.user, + from: message.owner, token: nft.addr, tokenIds: tokenIds, amounts: new uint256[](0) @@ -216,24 +201,18 @@ contract ERC721Vault is return IERC721ReceiverUpgradeable.onERC721Received.selector; } - /// @inheritdoc IERC165Upgradeable - function supportsInterface(bytes4 interfaceId) - public - view - virtual - override - returns (bool) - { - return interfaceId == type(IRecallableSender).interfaceId; + function name() public pure override returns (bytes32) { + return "erc721_vault"; } - /// @dev Encodes sending bridged or canonical ERC721 tokens to the user. + /// @dev Handles the message on the source chain and returns the encoded + /// call on the destination call. /// @param user The user's address. - /// @param opt BridgeTransferOp data. + /// @param op BridgeTransferOp data. /// @return msgData Encoded message data. - function _encodeDestinationCall( + function _handleMessage( address user, - BridgeTransferOp calldata opt + BridgeTransferOp calldata op ) private returns (bytes memory msgData) @@ -241,29 +220,29 @@ contract ERC721Vault is CanonicalNFT memory nft; unchecked { - if (isBridgedToken[opt.token]) { - nft = bridgedToCanonical[opt.token]; - for (uint256 i; i < opt.tokenIds.length; ++i) { - ProxiedBridgedERC721(opt.token).burn(user, opt.tokenIds[i]); + if (bridgedToCanonical[op.token].addr != address(0)) { + nft = bridgedToCanonical[op.token]; + for (uint256 i; i < op.tokenIds.length; ++i) { + BridgedERC721(op.token).burn(user, op.tokenIds[i]); } } else { - ERC721Upgradeable t = ERC721Upgradeable(opt.token); + ERC721Upgradeable t = ERC721Upgradeable(op.token); nft = CanonicalNFT({ - chainId: block.chainid, - addr: opt.token, + chainId: uint64(block.chainid), + addr: op.token, symbol: t.symbol(), name: t.name() }); - for (uint256 i; i < opt.tokenIds.length; ++i) { - t.transferFrom(user, address(this), opt.tokenIds[i]); + for (uint256 i; i < op.tokenIds.length; ++i) { + t.transferFrom(user, address(this), op.tokenIds[i]); } } } msgData = abi.encodeWithSelector( - ERC721Vault.receiveToken.selector, nft, user, opt.to, opt.tokenIds + this.receiveToken.selector, nft, user, op.to, op.tokenIds ); } @@ -290,28 +269,24 @@ contract ERC721Vault is private returns (address btoken) { - address bridgedToken = Create2Upgradeable.deploy({ - amount: 0, // amount of Ether to send - salt: keccak256(abi.encode(ctoken)), - bytecode: type(ProxiedBridgedERC721).creationCode - }); - - btoken = LibVaultUtils.deployProxy( - address(bridgedToken), - owner(), - bytes.concat( - ProxiedBridgedERC721(bridgedToken).init.selector, - abi.encode( - addressManager, - ctoken.addr, - ctoken.chainId, - ctoken.symbol, - ctoken.name - ) + bytes memory data = bytes.concat( + BridgedERC721.init.selector, + abi.encode( + addressManager, + ctoken.addr, + ctoken.chainId, + ctoken.symbol, + ctoken.name + ) + ); + btoken = address( + new TransparentUpgradeableProxy( + resolve("proxied_bridged_erc721", false), + owner(), + data ) ); - isBridgedToken[btoken] = true; bridgedToCanonical[btoken] = ctoken; canonicalToBridged[ctoken.chainId][ctoken.addr] = btoken; @@ -325,6 +300,10 @@ contract ERC721Vault is } } -/// @title ProxiedERC721Vault +/// @title ProxiedSingletonERC721Vault /// @notice Proxied version of the parent contract. -contract ProxiedERC721Vault is Proxied, ERC721Vault { } +/// @dev Deploy this contract as a singleton per chain for use by multiple L2s +/// or L3s. No singleton check is performed within the code; it's the deployer's +/// responsibility to ensure this. Singleton deployment is essential for +/// enabling multi-hop bridging across all Taiko L2/L3s. +contract ProxiedSingletonERC721Vault is Proxied, ERC721Vault { } diff --git a/packages/protocol/contracts/tokenvault/libs/LibVaultUtils.sol b/packages/protocol/contracts/tokenvault/libs/LibVaultUtils.sol deleted file mode 100644 index 2ec4ffeaff..0000000000 --- a/packages/protocol/contracts/tokenvault/libs/LibVaultUtils.sol +++ /dev/null @@ -1,96 +0,0 @@ -// SPDX-License-Identifier: MIT -// _____ _ _ _ _ -// |_ _|_ _(_) |_____ | | __ _| |__ ___ -// | |/ _` | | / / _ \ | |__/ _` | '_ (_-< -// |_|\__,_|_|_\_\___/ |____\__,_|_.__/__/ - -pragma solidity ^0.8.20; - -import { TransparentUpgradeableProxy } from - "lib/openzeppelin-contracts/contracts/proxy/transparent/TransparentUpgradeableProxy.sol"; - -import { AddressResolver } from "../../common/AddressResolver.sol"; -import { IBridge } from "../../bridge/IBridge.sol"; - -library LibVaultUtils { - uint256 public constant MAX_TOKEN_PER_TXN = 10; - - error VAULT_INVALID_FROM(); - error VAULT_INVALID_IMPL(); - error VAULT_INVALID_TOKEN(); - error VAULT_INVALID_TO(); - error VAULT_TOKEN_ARRAY_MISMATCH(); - error VAULT_MAX_TOKEN_PER_TXN_EXCEEDED(); - error VAULT_INVALID_AMOUNT(); - - /// @dev Deploys a contract (via proxy) - /// @param implementation The new implementation address - /// @param owner The owner of the proxy admin contract - /// @param initializationData Data for the initialization - function deployProxy( - address implementation, - address owner, - bytes memory initializationData - ) - external - returns (address proxy) - { - if (implementation == address(0)) revert VAULT_INVALID_IMPL(); - proxy = address( - new TransparentUpgradeableProxy(implementation, owner, initializationData) - ); - } - - /// @dev Checks if context is valid - /// @param senderName The valid sender to be allowed - function checkValidContext(bytes32 senderName) - internal - view - returns (IBridge.Context memory ctx) - { - ctx = IBridge(msg.sender).context(); - address sender = AddressResolver(address(this)).resolve( - ctx.srcChainId, senderName, false - ); - if (ctx.from != sender) revert VAULT_INVALID_FROM(); - } - - function checkIfValidAddresses( - address vault, - address to, - address token - ) - internal - pure - { - if (to == address(0) || to == vault) revert VAULT_INVALID_TO(); - if (token == address(0)) revert VAULT_INVALID_TOKEN(); - } - - function checkIfValidAmounts( - uint256[] memory amounts, - uint256[] memory tokenIds, - bool isERC721 - ) - internal - pure - { - if (tokenIds.length != amounts.length) { - revert VAULT_TOKEN_ARRAY_MISMATCH(); - } - - if (tokenIds.length > MAX_TOKEN_PER_TXN) { - revert VAULT_MAX_TOKEN_PER_TXN_EXCEEDED(); - } - - if (isERC721) { - for (uint256 i; i < tokenIds.length; ++i) { - if (amounts[i] != 0) revert VAULT_INVALID_AMOUNT(); - } - } else { - for (uint256 i; i < amounts.length; ++i) { - if (amounts[i] == 0) revert VAULT_INVALID_AMOUNT(); - } - } - } -} diff --git a/packages/protocol/docs/actors_privileges_deployments.md b/packages/protocol/docs/actors_privileges_deployments.md index 18f954d319..6084063a08 100644 --- a/packages/protocol/docs/actors_privileges_deployments.md +++ b/packages/protocol/docs/actors_privileges_deployments.md @@ -37,12 +37,11 @@ Beside the `onlyFromNamed` or `onlyFromNamed2` modifiers, we have others such as ### 2.1 onlyOwner - **Description**: Only owner can be granted access. -- **Associated contracts**: TaikoToken, AddressManager, EtherVault +- **Associated contracts**: TaikoToken, AddressManager ### 2.2 onlyAuthorized - **Description**: Only authorized (by owner) can be granted access - the address shall be a smart contract. (`Bridge` in our case) -- **Associated Actors**: EtherVault ## 3. Upgradeable Procedures diff --git a/packages/protocol/docs/multihop/L1_to_L2.png b/packages/protocol/docs/multihop/L1_to_L2.png new file mode 100644 index 0000000000000000000000000000000000000000..3d913e36d97ca1d701819a27fa09ea25714b8997 GIT binary patch literal 603415 zcmeFZc|4SB{{U>MXpu@05pk4#&u)+;+4r3!yRkEau~mlU_kCU0_xkSJB}83Sf#Mw9IU*t=3dM)_HHnDM zB8iC3?2w-U?vVD}wj?6DAY&^hr>-a`$E5D+WM%6B+x8{$)G zFEFQ~=wu#|bFX3Uv;IbWFNFV+_WaC;XZAGb`#W?lpXO|R#_UPmfT20h(Ojip!0DtZ z)8{+sgZFitMiCOX+vD7<7i&lZ23;Z^Mh9n+zUJk++IVKS>#de1E-f?Q!UZAm0$cWXfDES|KgTMH# zX+eY3k@)=7g&CRorioK8WF3fHUi0w^7=N~YdhS{OrTS~nRIgnvnz+^bJM1uK8xdSc*EZ?~9*uRd4{O&B6vEc?dP9ER+E|Ph@ZSZy;W!W`9k=^H|ykMcQ0OjE`4kK`Li*XgCbK9+q1nsb6vku zvbZ7)^T12vg6Hv%Z)_B^mR*tv zNcyb$c)EZ^pXHrJu0B<7AVbXfSkJnCSyd3Sp?Un<@8Zw=w{CbBbt+Sf_KI(a`$cVD zTg`lg{T^^vQAmZWshKBDaEvBU&H8-h#nc(q2-P;ChbZ3FzP^O(0}#^hxUIIld(lNyS!mYQX|T)(MqYT%r=|(`iUxN*_NbWstoJpe+c(yO226 zo!<(SxpeM>jO0UNs>f>s&PidPukw+$oKAm7&qbR3*}LGZ!)b}nHwzerp0SLc5~bh? zP#UGHAk|Z&gc9$3mRP2hy>#WCyv@s-PhROWdA_9jLk9L*<~RBfdCk}Ezn#C#eC6pG z0ZMiSU8cDx?uQgbl(r94nWkU!{GeVX!pWPmq^Mueku6o1>%PJeE}(v!F6e9O#CI-t z0mD~q3W#_1-|gH*1_P31c;EGPIIf)*4zck z;yI^5)13Muy}`a;LPRMtCpMf<2alc=rAc|!{s+y(+)5IZ6cb_gnQ?S~ON1omu}lFA z^h*DWr}wDM&%KXUm+e;-y)SxtQbt(NKw8nhR+RG5MnK zh4@NHnnDqa*V_*d={0YCiY|#LN$7r5r96AfS6x$AK-X3CoaQ5)D;zOwI&2G?;u-D+ zxKEwdMdAa`<`pBD@l9P#O5cW>xPOHGxVdT_dZrw{D-3Zmch*~F-9CtAGNbsdm`f>ai{UT z?^RdRT+)*M*s0B+J&+~YGmsUNMUjQjG0TeT;p&dHqv{Ur;po2j(L{Sr>rS>&R&lr3 zY;iYdPePB=M@pLxp|3XgZGYHv_4cQ`s7}P)R_xLgRDYW(X6BYXrP!(<^vddi#rKL5 zuM%*HR>@875AYajBTj{EWBW+mOkGr2Mp>BWhYjt8M+>QgBjT|U=@*Ues9Aq%^Gli& zPkC@X;&H@iq`uGx$1jtYmpl|^cW|p7X!kjfe4Jlr>fGts$yx3``|j$@$ho1}#u>Hm z*pL2?P)=#R5A&mjqbylABaz?$x_-JZbjl+Ab{*z?k8Pe_cVH7RwuW{Vv_EWYYG-S- ziTTc-YHAT*7+F{cjd96dajOzeQfyDnPcQG9rTObm=j`UPh40@8QpsyQlb}@gF*h4r22Nj)m*{S5RefCkInVy8d2}P&*vDB7 zk$Ii@xDEM@(hW*_cltjV9?{b=m_`UQCW(7*&j_ZX#Hz%n#2np_f)Cu3XJX&*b6c27 z42ZiVaU|u5Yb8BTw3ZMNL%9~Zja56iSK=PIg*%&!4o>a#w2r9E>rVI1IW8tInojyX zf8X%Zipwf-oe8?-)3PBtzVf}RwYb9#HEm|PVOnWgjZ6+Nr9(4TgXdYCw45R~sh1oX ztJJF6tx_D#sLUdqN|)rM1*Ma*o~TUa8&((HMDXdTR8&9VHNgjd$Nu&ll!*Egy*hOV z?MK?!OBJAHzt^_vy6Rwc{{s8vwb6-NFJ2eCp1dW}ALPJO9W=r?dsAGnL`s>Ji^svY zzutMs*#)X}itaL9p}@FfntU2x5&yaSg{is^M#9QMlj(g$gRWCCXwl+-^HiRH)i3B$ zQW4@(J&tMEZR8C{y?va-q-dk0t)#4!qX^tnwqBFEL?VikT zbO*WwPUuF?DY~g}s#Jq8c6;3`)3;~Tni8DdKMdY)`$CF)v6i-Gf-@7Kz`*pJp?T@GZ ze@Oh+`^M}y%1~G+M;J(1G12vL)>rMZ?g-nmE@~AYLwfDKA$OQK#Czz%TUs}3$=Gj+ zm6p^3oEEx64#fj_>&=$4$;ECwmX3?VSS5NT-DqSILMY#|c5F`!&$xeOPYL|V?o-9u zSCahG3Do1~PoI~d5#u#1pE07%pNCaic*$=g8ipID{Tc9cgJxuir#v|0*)sPDfpLMc zqB*oLV#)Y@;Rk3#YRqNM8@k{1VsgE!y~k(WuJK$;=vD81*z2B8VK!9K1{*2zFzdC> zN9p3s49qOmOFz!;pTPv7Z|n>Af(3@PYjIsxpQjRxo|Ow}8|msfusU)N?mRUbFB3%Z z`(+R0p=w~eeGGpvj7V5O%K9q$y5|M@OG~J8W4bpMRfl|S)#{Qn#CNN>*TvT-eLkCh z!%XjXZkk{j%TNnM6EY*RVb67fZGxNWUI*Dy?1vA8kEpP#n6$oc1#_En2Vaz+$GCj? z@o-XOAyp|-BcfGWxZiMC+}YS2xpcobL;*}Sw3w(2@+y_esKIOZe=5#=u9_lQFWKeY zyE`A{mOLHbF4!hw>RjE?F*fKj1L?z3dQ^D`8@r?W-M>v}D)sf}Ss;9QQ!1`FPp;`~ z^qlWw&i61;tMJ1=7z|%bKqj<1PL6ncRL^WoOSmmwS%i;hq4Zp^qkij*!v5WmY7a)= zOUv&j%!lhGA}bDC8Svu{H)zpB|Mi%Cgz-stwhZC6Z7@!sbJZN?mYTCwg? znnREgR(G>gr7Ka>Fwn0e^jY8jZxd-R}s50ZjK_;&0T;8`Xn;?xvVlKqlb ze_yj)&`ZeY#{N+|!qCD^&cEfe?l?r^@`YvGU^ zl{Vj|)zBR#`uLo%#P7SjG$01IngO%I-=9S z6*2Gu5#RXh`T;Q;5$T`zNr;GoZHZ1Dy`u_zAO5@sK8Is|ev`flA|eC+x&nNl??{f{ zK8t)udVGCm2Y5y#t0kwX2z+Z%-f; z%uIj2;%+a+tgoWZB*GsB*$bD+n><#u#q`8mn)Johc#EL?4!-EEy5nGWYQ zf8ylfF2&4zxX@oeKjE~5+Wu!HN4KMG0UP8!e8S7m!^ivA+`v%D!@J_@wopq4gZs8% z0B67&Abt^1VaY!S{MV!ZEcwe&{r?OV5E2vkb?7gT{ytR4&C*rQ2@EXi4*Czljt2kw z@MxeU@8RBm!NpHR|9Ka{H0Ycp?_X2{o#PwZDFg^fZ+l-&8~6s;?C^)w7x=~Y^BcH6 zO?<5)Z~%yeWr!5-%W6Z3=SR*4=<00qEt9fwWTZc{vOU*}b(Q5rv)<|&rVuF^u1i-& z-$hdhamwblTq)O;b-~J9?bBrM6QX*QyZ7Z0zlw^B{Oj#xH*Dn+lJ`|x0R{e#rJa52 zMV}?9%|yHeq;0s?3#y99=zkMVL`-su{1TH)!2fmO?i$ELf)U>)x4rpKhg>Bg!AO$- zv*|A}bzA~or+X4B^ydEpe*zE~1iapRsXi_0pW>2fv{mr`Ch5`cC~h&0=H3cY zWI6i}w<}YZVEupc%kf-v_hjmfr~D&HwVC{&i{oOZOhh*S{{!zb?(6LB#*xL2KZd%Uf79 zZ>9zduQD%c?~zGZ^_R?yt)f59ai)=86lLN@4X^g#d26?xMAOD()QXpG>l^o{v!DA? zE?PAHh%=p(Qj(9mdcLSfpj~0*`O+U**?I9BSbsuEx2BQ~dT-8*po}o_^zz2Hiexvs22M?-_vji) zEl5Mv4WE2t&7Mwyt$uTFh|$Zib*j;k(kHR~XX$N~=YkuZ^F-#|N z9CKrBA;ELNqpwO}bHv}jYQJpgL(8jisD^@@VAcKB8{iU+L6=5`x#nTt%@G^~wGZ~T zwz|2sh1%oJYXZ*=mMRTGCsaDih8&IbrrIQyl&Kc0I47B7IE_@Tvs*>5lHkfoI5(Na z(gqfjyjZ!L+%4p0m5#m3S}h;PUAz2ycfJ{_Ng_?UG zpa@C1gv#e=?#)^uXvb)Gv0l4foSvEQU6bpUraM@r$qCx&)h^>We+=PZvTHO}TKAP$ z-mt0Pwm@;eYdcU1f`cmJ`>-aHObh`j!M5usPCUxHr{;Uz**-B0EnE+C) zMZHR?%{@GByufdvw69st1FILZ?Mxu0e2C^65nxn}TUDm>{g#ev?K8^Sn87ij+XbC@@Plb$^n?I(c@(NUH(k$}Um;Ml?umxQo}WIL z_W7}r0tW3Vv;^y!yal+}&`pYahAX7O)SK}YJFp9 zeEOpRWABDE!qx+{C)W}T`2yQ&Yk_A>*4UW#Z8=S-2s`?M5-;J+E$`*P(Y^d3Uy;=K zF`C)wdMp4|mBduNB(HYaBZAwFYLBpO=dgk4`UDFQ5*177<~Hk3m=ZAZEsWWAHf{;_ z58dX&R#@%14OLBUJMS)>3!Zv#6`NNhJXNpA&o~v5HyodU@Sk2Rm{7&Nz2T^y%$`?0 zo5k5>5!uroTp6*4@ALh(Xj|7t+UY%4))KtEDRaO;*o01T7`dHp1-G;l@>X^iCK#RK zD6PN3M8z?zt1wY}0$vJk2L`<=>9otvH`%CFGsS=YhlLOHJw{14=c8@}*jS9V&C-qDtydY1J zjJ3wx8b(E{e$dB;e%q5-mZ6*V8Y~tdSg9-5x#<0N@Iqy0C@z4M61ab}N1(VZSe{{9 z318-#9~0&U!NqUZv#j{-FmINEVp#C-v8@T8Jag-Y%O;Wql%r-fvE@V*KVE7K<-j<(fc3($q&!G%Hl zyztF>#k-bgJ@6gFMk`H(%nRu+Tnzp+o96N*^~PP-kleZ zyyC|$mtPVz>{!7+_#0u_c`bx}ECG0s_Eyb~ohs@~c7CmQf~Bg&{+eAJPB23xx5zbL z7@g?5@zO3%1OqE(e`Yzzh0iwI&oaFI>{7xwWgi$``J+=Q+j2Z|N(If;mD(y`kLslLON6@J1XG`d9=o{nJff&p0YGjXLhC~8;uurBtP(6id+#YlhL$hGTI{ zgv7kMp4D_^EG4Qx575k2-h+aSH^uevWBeZLCDtIx?KJo{-?KA=cNvrYc5HjRS7FzQ z(O|93*)F%8vnWe#%NjYDa$o25t1|jhf4E30BjkaICV0 zC0I^bfna9*jJ5i?*4<4};9h*-CJM#=tTfBA&1n-RnroQhiysS)XI8H;oZ7`E;J25z zCWZtV^Ney?mgv3i58=nGt>Y+BJ3Y?_-4lF4!`ZC@5-km|id`5W0>%;;%IQW}#Rh#X zW0^lF$4fd9lxjPvGnh=N(6Z_$DuN$dU5KaT{RDDq-@k*Q^x^87a&z9#SqgR&XFOm* zG4c#pNkIr>ls#oC92m->c*<%aDQ&!8f9-aGeM@kp&YW%guK6Y_!ohp>+qWKpiNP?n-a(cy-~){;e?oiT`qSqW!ZyXqPbEHbQpJ%Baux47R`T)5w7IEhotR&alY-&fJAEiq?ze>3RB;G^f@|Lu^w7wIojH|}YTh2JxVNfw zfQvYOp0|us#-V?CtVbYOffnv^u!>f#RXnttfP(6AN^KwrZwI=Lotxr)tLMe1FP`6y&pLR zN0mqcth9-*2YMKROLY<~nYHvxq!Iw8OR(J8Tr$(MdQLHTu_ehDWSrgV?TPipOx0(^ zQVvl)^>JQ+UH@z^_7FdkT)Yb1hiyG*2?mqBq+l?VV65!`1PQtT+gj^dNTl>PWJtM_ zyyXwxVBNIMo2vhwn!P>@!PYEfO;-UFcgpQ`15{U8b~09N%ePdydb*x$+6v@w_BXLj zWZ86m)0w-|cymN$0%c}fE5PflY-#)Wv6ig$K(d=1Q(GWv9eP6byj)b2WZSWa#2^F8w#qS6)yY*~@i;DG{}0;8{XDL4k;zeGxw z8TO*4GFx>KM$i7;u{7bKnCXu1rTDR$1t00e>TPEpKt`-UiP@X=@a<)!XIrpZ50deq zKnf57F~-`}M+>`SkU{#c!Oi-pyMf<)7E1Nj4a((?NtNql$K z6yM%aAgtn+PbUvIcBx8i}C3(+&V&{#DDc?i9O+?({ zm4zd^4cOsAtL3$`O^lC|_{3UQS9akGGZ$a_T))U99Z-dcV53!2w__*3}*^mPYN~4 zDciBbtqHchoFo{+$->@cT{WbrkTSab5yHgVpfG2yM1O;;JckW|5)oOND13p%S??9-N91r_ z^|uL~4CRSrRY6-43;{>f08-=8h09Dz_Wq)2JGp^RAxKW9Pi85_!>m4=$1}G zOU<|22@S>gnkvicAc`CC#g{I*M#&|W1h2~aRtwwCCQ%)e-n)JN%@DN^*1dz*gg{Ge zlc6f4fNo#Oq^?mqRfKe{gKlBsw4zJo?3;|@HECXh()x{|O!C1`@DMH?+!rd<93BIm zg!NMaf^TsK6*#+Wt(2|U3hntXLmxebPlb?$SmC{~f zmGwY1e-H#0;3`Mv81o2D#<6>}``3atd882v3?AB{qs2uJL#3C4*3aUk0iL?qTI99; z%$TD{Mt&%g8(!YpxJn(EXxsFfs_Q&2QeR9Re-{y=EP{JMrKTK3o9BI-_bqhw+nsd8 zle1H+)6#nSwg%B5mWpbi?H_C3)clGJZ%0nDXTn4p7=yzsO848zR$cwE1k7fq_*|Y5 zH@-2JGPnUIa(Aj8o>`p3I#qv7PdW3eoAewE>J50S$P6_J78e0lv4Q)1b}q1($55)*HlSJNyLR=1mB6<#Z^ zbO+UkIedAO+oiv_cE)TMRAx*aOtU7J54vVQG3A(RT40~5-?a#t9!EWUKihE^zCUCh zytB<`l;k{qmY?z9lcubTN3DhBJ69BbcqQBki2J;5CX2Gem$NZaOAjXg;Nm@>H2tw^ zn=g5C;z_bM7kn9Q1Sa68SpgXY*tOgdlt?F?(D*e`D~>V&Ewm|J&hw1d!fS2cVsYQK zR=%)ity78pSwPp1%-ec%Y;(=6M&5DhowvyRrQmA5<=cE_N#&0Sc+*oa(&{fpZaY`& zPSxxCRd|El2yP8hPiWgyBgDl4zOb}Q@#dJSzjY_Asa6MURO^pfh1NI?Yywe3(i5@9 z=I^c``YZUc^DzQ0OM{z{O)p|qUv2XV)W^t&T3%5L-Ck@cU`v@9_la(m_V)s{OiSxX zFn)bAyS=%@Sy*CgX^-9#XJS>=Jx((d7NcKHpS*7*AD&K6MomGC-*07dy(;EkBW_fBcKfJA%O|QFB}PmF=f6seUe`3n@{(X~ zE5~*$7V#Xnod{(CeJBqY#1?M<8ubM>s6MV)?^QZ9r(u3(9z8m?qjiB{Nr4xsel0G^ zgvqqsr&D@ELv{*TTG4;x2vdWB=993EtyzW>aB$rt(KGgv7aw0{>D=+%&6sP9$Tixr zxjdVZccT6)BXJs-jjGx5X91#)nU!f297U&^bn90LPfQJr2V&QcCY>ezT(;f_Ruvk= z`#!Zl{hR{*^8n^@g3YG?KbwSXv;zkNM3mx%XW8sTe$LI83AA-hX}7HZuR`Nb+RU6H zkrtcFac?QF)hT(J04`H3A9hu`V-s`xcvsXp0E$n~%`Kjs=yC1Yy_L^oUF>&K5_{){ zM3R8G?vv7<^@(sIut9G$&N^Aq$f?G|dt<=5ixpuS@7eFS+dw1N{&Pox4G(1MhMov^ zi$6Ni>=VvYu=4drCfQBsyP2z)3U z3&iv5*2=M}azPhWw33tF1SN@c(t`NM=$q%34-XTkNEgWMpdK1^2o#&8q(T4kI)yF)Cu%3=*KDm|0=H%UHkl&We z_#Vh4{rYIen4~_KBJzThTaLfo%bW(FHs3)EI^FlSR%~s!Y~RL@ck;x*_i*o}bvCC>WEKomv z$QBe*>;kaH+oRz37k_U)5~7P&0lp0E&tm?STZu^+Zgm(2m5Wh86M&*ivr?)bflT`0 zVe+ubDw6gFE#}O;F{Fj;#O`LG#IzW3jB)r+GS>Y;b7{G3xl!i)uaL+D)WNRVaF6EJ zD8(NvIQc6L-G5L%eSkNP7X}+3>Bp$?0`@899Au2P=!XIBBQM2Pa zfHHAIW8c3q4e@znNpE+$60`j`84DE9-TDzoreA{7K{7YJgq1Q~LGcBrrH~&ddP>D* zMsrdQgnZ{_Qp4iQMm&eyfoc~-CO7L?7P*W8#eTle>~FIBZiHlW*iB7*Pwhj|6tc23V1SI}daM!%Tb#lEdN^K!)JZ&WW$#NgjY&e^}28$4S_ zwOYzr_m6K4CJ(~tmZ$j<-2uO$hKktfZ2~FgK?Ggg8Or##0p)R@?E4-L z2-6JRyu9q`p;DJ{!O1P~Bl)ii@IM=Ap#ji_|NXnle{LPlT=$ITBL(!vT{~?qBg2%2 zT!+sMselu=Kjo;{wR*D@Yu&mmY&9RN-|0R*s5F1V(%0R)1O>`!o#m+g1tH7k=(T#r z13uriR7Ml>Ty@qXDBf8dDvzA8rBpZyI)%lwNQW#Ky%{xi1Llt)GV`a0>ta z>*fpUP6tskCI?-h)$C>&1qZriA2arEhhqCp#^%gP3fd?=2GUT$qT?R_~Oc0(U zmI&Q2W7x`!kWGi5$F$XhpmH8Od;L&9zeQI-5?S{M_V4N^(7Zk<^S#_@qz4j7cck8a zX9v{0`D}K=-!>9h2h?#BBgCeRJ~?42G~1SYYkW3!mC6Cy9J(^{e&sx^2AKE{Hi&Vh z`5#N{;Wr?1hOXaO!}bSx1&}><{da!Rmon3ruM2a*g%}JC{_?~m+DC1Uyo!Q4z+Q6m z8H${6HHk^iD~yhRj~WA`b}l$A*nTT1$2=NA7}}L7ku4S~R87rhXE!#!Vo313$y9H2 z?aOho;!i|Uzo{z#*!3ge@x7_FJKpP|=VAUW8*y^4Tugzz0?5+Lta3~|9Byd0k>lcX zfj%~`b}D|B`|B&(x1JcU=~-)u6D(EWd@4wxZs-!A_sGn0k2Lx{DnO%m%;+c|5%WlT zsbAH_=$S^-4Z)ZBf)UXB{TX=a{7~rY@-bcINMzMRh zhQhVdrGotp+}D)}8cpB;-!Z?49x6iX+`pM+J~a{`rJ^9d*l*Ew=u@W<_NHw^SmCjm zyX+^S3+G<`<2-K~pw+qmRJPEu-#?k5{K7|W$Bf41SD+5<%&xJPvZA49p@ek_%Rn#bx(#NmtsW%F}~iJnYX2NhM#sf0p8=N zEZ$Qt{a1PXm6@IcGHzc$+-3Z$X1JseJH4}pdwW|g*_h}R-8EvT=KxRDsy$CWp{|Z0 zd%Oae^)hHgwdsk+GNk9$0M8*4I9M^-WGnEi2m(YrEYDw*m@hcgbMCzc*6C`najNqf z%#dSG)}0w3Mv@Jm(C^3V{KOa%A>$iV9tE)SvX99k{jbxKbB&YG7(2^~uXV_UnJyNg zd2m%glIe?2j?WRl1x5o6Hs^j-9x?$k&&ivXdznbn<9=nz8K%Io`ryo4azR&1*XOX( zDiw2i7qblR9#8c99f1GG2D0N$Le~-%0N9K#lTUudC)X-T>7iS(t_D#7Fx5m^b@52| z3H;X?6`53W*sNB{BTDH#=kLRXeUU1pwL7 zT2N;C%ImRQxA5SzX4TM~)m}ryeEW~cB&JIDIuZ5)$m_3X>3{{)XojQrc9g=!g z26#}iP|3{4fO2_% z*cMABE=r``a74O*hI_b=UraIr#Bcg0WA2FnkeEa#Fu|#omBFp$yDd;jddQ*>@o1zP zlAm0BoY?=Ve!^1f2&Ow`gZ4``ozd)CoxJ|r=n^0RK2il-o`>#r^{qbhUs>Q1 z5c^Vy4D(5?HnGU#^J^BXO6GW~h3xc7{$?!xLTXD4AmEixv|gTMFn6R(3dpzf$G5j( zp$g%2F=r^~x>v&0Sx%7fuSqWHzdVG7xi;%0;_DI*=|RQacWi@?@pDA34{QK;YtZZX zp77KIkQ+PpxNI`tyNB8@$!$^W)6$ObkWshC zvD5@z1Khp>xy-Sn8$Y2gs5lGMawXtGzF9LHAESWi>#?z{Gd#ay zfA%y`Yyfx|d=WZFL+nI#3fXgh`~J`2T%m{LXwc|6355P{r$IH}AK=s|rL@<;!xb*J znMt08zwLg~I)SGS5a4yFh6j|t4Gr5p3$0Orlc=B{nK?OPB`%Bq2 zh1|(l7wKn8^5|95EYBOEM&!-i`4wdH5@tZWu3Zg2noi#I5S7wj#E(OS6Rz{|$hr?~ zd=5}9Tk$V%GQ!6DXQ_TZSY8D7h#C1xdjik@HG{ih;22=0(=I^gu)Hc2_V+Tu*+IuX z`V<0S{%uwq=*0eiF$%lUMUEYXBN@i4y@RBHaGwBqzY#%qmxF>%$mU>VIO(Lo{rvAJG z^4nKj;4UNE4!_^tRtb>O5rL(+pHM8Prc7mm$}7vYj*hwhPyJK(oDvjU>$CdJb|1(F z0Qv%6<&G?9x2N@W)1*%ml^a&PU!bz!9GUUq343ed zPOwxPY+LpGo3F+YlYgLc9s@ZZm&q91%X&&R-`%{FuMst%^_lM$#C=!73m1k@Asood!QfiBy=54G8O zRU8!bq6PJ{f5r~f8FgO(S0GssDGyV>{G1w_@U}w7B0F9#I4cFsRtiHFO%hciC-Y;n z!}5EcO^yxDgIz4O4PShg=U>O0b*G?`#YVy5cULJx|8`j1-SAM_J#B`oY?j-}lFx8nSbism{+(`! zMFJ}{*VUHwWv-Zy5fA1HzPAVwIW5TT^}|Y9@BYXny4&pRnU*JeH+BHr73=N13@G2z z0-x~n0#&&HJ4Zzsk#THjjtrh*AdqL`{=xP$=IhxnmBZ#8T#ED~N@}0tGvUMF;xna_TV+q| zYq#gkm1lWLiMI7_#=sRaRvms2l|O(TcyG*JQ;PRX+a{|MIb7A|R3MF+H~T_m<4xOU zpijRKwWBjQ@0Mc!!pi>GwS1g>n2D!K`QwP&juqy_VI=YtIwuObdzqO*gz zomb4VLph(VW9A)N6|BV!_ODA!Y9{oImN9ec?Z3&4NrtDdZccGCBSKRzkLV=lCWn%m zgpyYdsOjd1Gpvh{U8iPCzd*=t8m$&baC^Ij}ms=Xc<<9(uuv(I6FB zvvdee2N4NN8%Tn|{mpAzjG}=dwj1x=%W-%n}O6W+ySkG2)Q?Pd^qg>n9iaAWBk3FyAFF?cvUBJyb>IWY{lmb z>N(h2ajkay5*7se>QcVF>C%H_DQ;Us$$(nGuD=UB6+{^sP<{*e9}qT8LPzdgEG6K1 zO_6>uI(A=5u^|OI;;%cQp6*y{wiNU0Y*( z=A#!HzCJ9@vjYT4gy%tLfKaimm5bx=*YqBWgrnHGzvmj6TrxEI%)H9Q7{XQ}@CXdw zAqe1jfe!48Y@ta~Pwo$Lk(5{sHBYL}sS2e7eZ&g)2P7N&zzZKytgywJU9+yhDUML} z!rtc{%@0~E_w$u~S;3_}x|1fFeR(EbTM3Sjr1T6wdFRmKs6D#Rd^U0Zd>W?*h~Ih@ z0QK$3oV!a?SlV4PFsu^KGhya#2R}f_hc3C{%pj3_<`?IddISZKKnc#F+~rUGDxME$ zjUw3xBDO9*U)AMMT?<=ep~g2B?aou9Mz8+ zITcR$82M`+>9cbLbedvMK>5zQ(w!ZAX3;`J+!lbj-01KLfNy+uv4;CG%C<3{tzd#t zHX%lDmK5Vkp+N8TbkGUq8&=4Zx4GI3OKEuTrxdT7eBBIi$~zvCcqqkh z{ETIz;`5I(szia6K+#25&*9uj<9B3*G)N+qVZXIP0pGdj%nSKRc|Og%%%9%0b28@g zc+gHC_IJDYn+IQ0X{A+P^dCKN-|wFbYjGACc9t`=jL`{oU1*v1dfXi%k+7fMXdRKp&P7;iSth-b+a%PN>xm^4<}pG?Z^eF`-)|NUAg zaEt;4v!w$HE{2d14^EG%2R%J8or-soq8&ri)%0Eo@ZLq(o`s^r!v%6*`76Q8AGJ4A z)5K7FT=nVU#SapO7dvxn&x8BSXj6y72X?Wp`98X^+aS*o%r}W051&SKW9mOBUQsK<6pVtQic`G5kpz;T_cNdN<&y)_}>>|%` zsQukZ27;nGl4~{wokC>iOHbi`j3&djy2)s_!bxALijKW-2hO!+-b8OaEXTOo zbFuCq+-GhDU)5uPEq}(1<}=Vw+ASH>*t@juZ(>s%fkR?zeW-)GfMX@bJ(Q|2TmAWr zEztI^ivB7^DLNW3UUk_z@?nA_wZWiWSyhqRWD)vnQMYgEys3ug0K6#5*0GCOpC^4T zubM|CmhV<>*`OUR)*^y^wsoO>(-3Ie?*i)db02SA{ovGR0s&X;Ci`@yelG)#QI%Fe z+MblJ)1YEOMPKO}?#9Su(!Yx73h~ZN(W-}J0`%f85~fDR1_QKw$A-# z#PgpH)A_YYPq0nl`A-t#MsU7aJ@ z%>#QY;dC?k0kc}Y0TmI&%?C1?n6`+b1o@!y;YCKEWfr%}$rH(xQ`!ZD*{_2xFvMF4 zZTi-%_bIXP(#M&GGUdNj1Bs15%+g^lZ{vB<+$fkh0g3NyWO<$4KVD1N>yz#Rq-Z^w zv>yZJ40k0I<4_0N`JU0VuT>8g6*bbvr9EajZL@RBII@~P+vh9r^~REq8-WH7tN59V zBZyaS1`-xDv$jA_2CiF6jl0>{bHLIT>${o6I-2VWzBnr}^X_>k0EB_@&>-TPo+1DK z_%!OFeO{&2`kJ*ge&ETl+q;R1rrFK4E;YUOo<-PhtW#z_Y?4#HxY?S6jA^PRV5xMW zW)ma7Y`B0&BmvQ9(;9Fdrl#jZWy@jtD^X%HTB{Ri_tw4@!os`H`*pLLzqYl#F-N2c zKAr4ix^w>~mML*(w!37Kri_b6!lVBaZZaLav;vL^Edhs2RWCxbhclI;WVy)lCb_LGhb$2$niqA^1MRMtwB{^1i4~%wHq5u&@TOdpd9qRsbHi_b`ffepx?x-99R2aZFm;co^kRIJi8&_It?> z&5^F>lzaT)v=U|H9cWn%8q=)=W-5KtFRMTqFZ+!8BvT#l{kWUxwTF>}g_Y>%EvB%Q zhH<}vY%^3ME=Ngxez`tXne|;hS8P^rB(Dr|LrcL(_*i=^#LB0%#%Dd>|tx0A3RE0>@1P7#xNuANnx3DFui2SE> z=oI0-A3?Sg?T(3n3$B*-Nh>o0V6==11yK26Fn}m*odf|r5Dl&$wx2oxez@XyLOQeH zaBfr}581^jqQ*%q3PuOnuV8jFTOrB-9eCvEuc^L!0 zAWQ_8mkG<`)x#6aQr=utkfkdV!rX_6hNcgQxgnd>@J?#8erDfMQqDAbq*rTcUmC;; z`Bv@P5IZ(3pqznal)G%W?>TCt2dIJi^MIyT_V1l4o|O4aM%a4%YAH5;rKaFImY)3o zVeBiQqTJeW6;VM11PN*B2BjMm5J5tbMoOf+8w906q@_Vp>8_zfK)M@-?yjL{?jFxk z|NlSd-gVEK`;;06CeUG^DRN|Sdg1%#@YCPQQ0814FUPEz(S7k-)QwO0M=MCRe^;+Hg>Rc^2ZD6 z!P!UeG^;x(kyh%8!hg@S_3+1T%)<111DjlNikIZ9_Le(gKeXV_7e^({`(stoIMOM=D8Dcc{u5Fg~TCxGY07&-}GI(d=V;sj_R;b>xuxq*k7*xWr=V-nrCg*c7TYRQD z4omDcXgt-A?Jg?a0*FmRw*!Bx4n{Fx?}X&&p=4IClp>Gg!J60&IABdco2+zI7> z%B(pQ!+41}+VRSob_(Noh$b1AuJ6*bTZrjA>9*rRbuivAaUa`r2iP6xGr2O;LMW=U#7TDOSM4 z&bVQb({_a{9r%1~8jM&b49XuR{d zhBqcn`0P_UbFaO7&(RK^`c1n`&^vGE;NC#A;MVAU-nM6K-X9mWU45Ky^>*=`Q-_JLL{lBKu^4p zN1d+q--wAW0g%BW8L3RbNOjx#hJpXB#&w-eKIFDlF^dVeHT`S*4i>#`^qHU!glU4^ zdxDX4axynbt;KAFZt^eDrrDiBhD@Na5SBO>ldeQziwn60=BoxR9@IJJ7bmaV``oAV z#=mvUroTeK-yJI;<;4dEAVSK$9{(}k>B-rn5_6uH@3lMI{YVbT#v0WnLg;Jqr_sJBJr71oX_Y1<0K(`7GF@(!Nkb^Vgd+oOfRbiz1(-h*80S;SPS6bQ&Jp3f%97Q*yY=M z^zgW?Yu#5JtNmFo5z|&)s;Dtb!M#B0j}vfwO0{d-%dVQ7zXYv(Rbz7z+QPR8ANk;g zCDAp$w6D^=OE9`wJ5%qlkWkuIZXSJhuwPidkPr)D1<%;bYds|46#TjF2+kI4P;gzi^Ge0k^kep<+Kpy4=l^IX`ykX7l~p09_MY zB&I!J{{(cOy|6q*;6IX#u1Zf-$mM^XjXOG+*B9lv`;H=`Sig{6LU^`VU2W5>?r=1*Hrcar0Qv0ZPVf!jT zb!!q|ZoUIGYaIt3sRUkA0@N6hay+c-z0cCLp`^Qxtwf?Bv&HNZ-IB(tEVbiNXOfPk zCgBdO?3D4GW91`=8L5vW(f!+yCD`I^BhizlFLMvG_+nz!yRRw&MU?skXqTk^XfZ5v zMQyw*z^_C7z>oW;%F^R!taVCna3)I>4c{>wq%jOmmCR>#!(GNlIA$$?H)_^Ig@887 zgYc%!XD`~i?7xRgWjs1xn$eN#Pl>8O%uJfUuxlwv5dY zaG!;Vgj?31#vqF>{3X$PM^uOwN6k7cuD3NJOE31?iR}a3mb@izmpNZTYF(?z&*oSX zlNO^|!EjZ+4sDfIL^-dvLL_1)614jUw(RGE%)=|#mVaSt1vGS0JvgwN6X3jU*IFH^ z&@+A_Gd8s$V`Y1Py0RW$eed><25iQ zg{4FL&a&ORG|%U9D!n{#>z=LGwoE(mMmge1F7+_1VN|M+x;nR)VGC)JmJ^nRLxXP-oC3 z#NDJ&yDsSRVrd2ecbee#DPDfl`OM6cWPCc=YrA1B1Faq@U^Qe;F0DJ-IIb>JV0lzC zVVbMjBXy&8B_)ib*xl63z_y~Y*8*C|Pzn^Sl5s(ZA=NCEYfxC=+sgD0A~maCJw;B4 z%j0Zl-FXJ+xF3;QtG~Ie;Ex}7+>!U@a^5<&Y>$qFkZ8GL+%SO)kc%}i_(CB4K-ET} z0#e3v<`tf{vt=^4-m`*j21o{4{$@?shh7q?Mjb4%P9o5lR^(zH#L54SxgZA>VxdZ! z4+NV82F%pLtlKH21Jg(fe?SKw(Q&16em}aDiMy5Ee*h=l_JZ5_!6qMCK4g-D+#Kh8G_Bho? zZdWaQFdc`yH_ePQc&oiMxM^V5s2QsSSWYkjsOA`Y{+g(7s!rw-!R}L6e-T}%ln~BY zUS6K${4LProXjaea52PGZVjZV3^8jE`t3^qRE*&Fb{Z{*IPmx78C#&5bcf`bJ1ufJ zU5ZRQ%?Pi7lEZbB<5U8uNPuUvM};hr&)|BwQwVSw2|g>%SkEcz5!iTQtxH>Eof)kn zvtR`&M#Jh_(d^xgi47GN)WYj5UQTU-u#Q^<9;OY8B#PiZv-aH7r+C&7{LpRvOE%M0 ztKuoM>ZRLGaxXw}h$Z7s?)sFJtu4d0#heK0IGMkS7({r|d0fsGX09ZZRxRZo>}Mgz zJfLnL$#=5Vn%8WW$XLGyar^*m)EPLe@&`ecg3W?Bws2WaY5ATPXcistJl|4%70U_P zsv5*vLr5-HA(cxl#TS{v3vS=g=`-M$XW8uLr@o)3kmWD1rltF}F%$tK>xHDbD)@rY z)BqKXN9s_;^wAb)cagHV&~74KJAxM^e}^UA7f1(Bx}5 z3(V1@+|IYwOh7pw)>s~g9JKOuCdAwzy8e45soLli;sj6gN&AfLJLcM!wwUQ3Phf?I zjn}XgBEwl(t)8(}zc~ZF1_`b#rLs1?6K4l?@S`0DI|RjGw5m>ca>$kZ2`~?9 zkXkNjq9kKYwWLDYMYw7+`Z8uiTDSh337-;ceTe@xP!ats_zc$G6 zqo8ZI!U7eFNg~4X!AaUHKom+b4MANsrO;+2J4n(WK;j2rmew@0Rw#UBljp9dXqwvm z0Z8B2CSoQp;zAE1vN(fhOU0?s@~32CMo^#}%k?-PVW8oTFm?xjd<-_GA6DjyIvTx@ z(z{i=Q{Qs>Go;qxj9(XRXjuu?=bxPDqZHRXYSM!0EE~)jSkrxdt50Yw1BE&Ma^=QS|+!<@-fw7mO%xO(#?nu3H4NRxog64NLmqH$9FH zNCS`tXGxqz5|9w*mvwPG%TBPW;b$fBHq>to36(VxW!R4Atk@z_ue5E{j5Eot0#b(FQ) zYMgdbptzW2vKig)srF%8>$4(_4>EV$+q=MEdrF~wB)&EQM)Fi=aaqqce(uV|t&;^VOnR^eIG`OeE%uQ0JzCj2F6=u9StOzhoD7Yx<~^2M;N z7&R`sR{IY}G_B%bgINPMZM=5ZLsY7U7naG(T!&4ic42;k+Hd_UYt?oQ@y!G{@X<^r ze1##ITMiO$AfD)i0=A22mKK*;adjuJ=N=P(N8ywnX->FTcd^gBy3^pKxHVDEpEpGs zgvaXv@sz81LV7d>StCj4R&v#Y-~1AqIl5^7<3p{NmTNCi>SE zBfK{IrPhE>W`H)RjTJ}m^5A&JUM|~=A=1|x1WYcuxd-v(8$;+t4H2S|Zl#25aj`T< zyRDRRnO5}M%v1t6F?AwKm|tJk5*%~CW-P7_YF3B3npxrRjn@;t>U%u-^yy$_wp{u; z_g6dPq3ebPA9Ur<>VG6J<{k6z(T&c#!)~vrds)h3VI>XwT>?I#znWaq(6}V=r!#0u&PbM)9`b5@`}SyMFL8Tw&_9M%Gt1)544a{MW=22DVriN@ z=1y`APciN72KYKNG2ch=I@>BW>1IEyrH@%;Wuco*8y}pS2({hA*^K)ij~0?&RON5( zgp!UpUQ#%EiKgXk%9`4lkdSpcJ8x`{amupZG!u2coCtSAL%e_QEMuN%9AteREdSLz zXy_J9=|2q2|HE5n=ev4ww;Ysa z7YXyLRjP&j>l(G%zh!E%)O=OWjd6V*91_AMCt-p&J02{xP(nMyw%iwfS=QZ7pCbD* zOSbSX^gA1GB% zt|U=>AM_8GB55T$Vkzy47@)<#AyL+C0<@&H$pU-K^L1L(obat;Jjk`g1PZFQ~ zDmnOMz#qLJ!7@_kO)Cg0H0(-zlww^aD?M7`tbqDTguqA(x@~)AG%8BE%pD=|emG71 z=2xv;9)p!P{i8bUS#t_ls&lHhG1_UOOeG{x%gshVIBrcSrz#K}pZZ-lY*r7cuv?KI z5Mk*F4hgz_xI6Mr7&6^S4yED0D6HLfJ$u)p!6V%GxT0XXrq+!)P8Zv1V5F8})P7xp z>RYaQDV+rrqAuximtOu&eVoANi@m)=sNl|5SeYSuj`Pt8}hjV%fni=>nPOiEBN{zg2$qYRd{2j4$KfgP9dL^Y;8 ziDlK40c0V_xqNv`SX=aZoGs#G^&V?NBMs`e zVdZAoRUzmm9ndPit;txMS&x=TLUwCBw_6Ec$)OUvJTqFk3rccrDZNWb4(+Y6JhM>j zT?L_VFanG_C^Ww#Q;%5W<@e{Or>(i4xbhWggPN0q`~|%ABAoARwQgoCGGkRUQVL!> zSJDe74K9E4SRQxBY+AjHZebHz*M?a=Eq>kVTJ@Ck%-y=V@9mMRv;=o$f`Wn+UwlRz zwHF%KwY2lZXz;ImLonQ4Q8@oRv(9a%`+en@sTWAhSU8{3M-IdWYJerXloM)}=heo2$D0RR(+P&PH>V;aTn9jDI8u_XbM={Sv9A7muJT>$n@GR#@&3n%2-$c1T{SfC zxiAA+n`wS8bH`f{gbc3WfbNCA!_uEOVlFs8^s%LIMl@fz5c!fJSDvp6^?S2s!CiqN z>Uc9xd-YOs&?`k>xZj%3@oZZ z9CFjt)gf9PH%eKkmYuuvwcG?se~|H1Qdb}+;kdsQGl9XtIp`K7&xrF2ft49h8NBmj zRi=!?6Oe|K$R+Z5dtU5GX)Zz)_>b@~=f>-W-2_U5XD6)cPyNniSs=ZPQ!C5lL-l0G zHmE9Yg9AC;w6XhlL=49xg^Q1zES?%pR#>cS$;0HoS%0|4PnD`oe#_a}Zuy`kR;RDD zSBPYmQeLRPT?Ct4=+oz1i4Av_FcYf=xwhchP~p-*;XS|XbNn*Id`p4FWQ71W$$-*G zWO(=^&@_?(AXC0Z>I7%(&2M@NJCIUrObU@i!>&(h9_;!}laZTsy^kJ|@JHo2`<%P9 z-0HDXEOepjFdMBPE7vQum~WRGIOr8sVAZS`f@nK?lJHoh())`_+rqY7GkR(pY;0^? z;e+alE_*Hc4wJ92t>FE)mVHKcEbgRyY^0Q%o9pgGbwRFY&MIna7>PpVjGpJqS6-J# z$U&@1hm883eVOf53o=9z;RP;eWpQF`bV8_Fo9w>A1vVAPro8{ zUjYEC-PEosiZvtg!-i}fV zXJ`I6$}SGDTJQ^vYMpy>H-WTsPV(+6cnO@_Y{ZmL3uiQNRDei3qMZ7=+aS!^c#I+F zi-vM1ADaJ~^t)!f*2gmNJkA8}H%$Kw2q zYhmHmUv3!}wWOqEb!Ic#{;vP2=XyK+7wJek%7<36xPQB7;HYK9kzTq_T<1UB@~_ol zkV2tPvE|6usFq=^7v8d1pU5}k*YIcjxsTmZX);XMFrZ2^`jR472N}!yEO6A!uBF<3 zQLZ$3H>>ibllGmn>xrc7_G*@IgM*l_2x?f~XXaeR*G)=#7zZ$Kk65**yIy;~glnCJ z^=}?&a}x`~ly8LvC~2kg6B+XEY){74pKl8iG)WG8mJH^C`Ir@mW}>kh zc8~UtiTz4X@PmLe!Z#IsK=g076E8NHC1)~S<1nGSzt|oX6{TdaKZNvFVzgAVuFiLD zJ|&P!e}rD_-$&PC)E@tC7aJ~JoZPi=+Kn~0Gq>73Wkb7=@4$2mkN>*sf$BGrQoe7e zz4Ldf!mvrQZf2W}7JxCK$ItEU%aXrdObKBwoI%}oOgt(rr&r-O$#>D_Gse7<%U+~O z%9GTcPR7D6Xp3g^AEH{ZIllQTV*cl!OmtV#piIm4x+?#?%lpsYirpoEGv%#F(I#iy+>F3U#|a-#QnbJNgCMh z2xrc9a%3n;wZ-lGm^EH)Xrt#D7#;LQsj=0--KpHXz`VP;d2JcSqa~DF4#5W36`n-4-u@li#8RVB?>jTo zirFKh;Qze5_o=R6TP;ZvJA#{LBEEWefXn~71@2d+h*9PQ{F`4CpKj#s%L$iCYgVQ> z@>sm;k731tkQ7=z@uK0rKs-GPxpwYZ=saunc!j_dJ^%wFO2eC-EOG1C6`$pJb4-`MHk+WAw{M`-A0mh(I*PcXve3zO}B!6OX z6gpUe4pizJSO4e2!C$?_6|Rs&v4r*2kS_cas?u%@Gf0$_Xaei1_Yip(-8R7nUk}%D zC|rCkUYV19i+i1&6g1vd<@tzA(`G(#qF-0%={@;b9sb@FG$<~mvt19rCGxWF5Thz8 zDjEa6Phfl`Ut{o_B!;;D{3qJ~xGEoH&HC2A;9tz*c`_=>b*o7J3=>6{cz@QPZpIu{ zF_t}>lmMb$sQTH>u31W>o48lL#Z)C}nUVJ{p?3sLb-Ya71Wa)W@1!o)28TphkId5&&K@mGI^WjQV8SL6w^VUt4GfAPG8FA5O<>r@{huY%I9!!!tf?jaC?TS z&`{PYzNo*_CnYr$#`euQi-5h|8%>(N({!@8e_df}2)fv=N~_pI(m#*&cg{u1gkt8U z^GqR(RI)oEMc(5aCah%mfbAc@DHd?&sXUw=lW3nJi51m~vc%*Q-LGE~`-1!e)A#p& zrSgC7|NrunjubIlnOm4dx50)`ASd{}fw1U-4Pw!IjNSOB4gTv-yx-BxVwz0UC^KtR z8TUW>@cyS+{pH?4nSrb^>c0J{G5%cG+kwI37r2Z}Q%8MS7jTUSeoCZ)aKG^I*LEt0MnT&%#%N zo(Rq!C^H>q^1Y83uD=*PfBMf$`mdi@(}0iLdOBf|hyRbuxu1a!jwgr$d_}g|Cm|OO zT3TA)L)QmCQ@8*8+W&da_Z*~bWDF0>{>|?-OEfY&Cw%v*Oa{M`mGoBq*HiqpqB&}) z`v)F)@EIvOpCm*tpPY>%Ry}ug!M3vlgB*q3pU3I_4*6A&^u+1^_n(71W$;1) zBFfK7V&!eK#gYGYI3SZxA!S^Hf@T?qk+Fhmw4a%FmJ*gubocA3poD ztPIz|bCkJ?t@X!JeqY_MH(0{nLra~EZRlp}#`$A8Is$JD@Ap!%+R|7SFg)uxX|kDK zc6E&8P_E*~EU&!15fGX8we$A2wuRZ)O)q9GPXBb<#DR|F8Upy1&2oSYnSi(3otkeQb+ zWs#5r|I+dzL1LJ4%6RSI=TyAT04RjK(x=9{w-J}D*=B`+!F*q~*|FGZOce#h@z-5@ zMM|5IiPBcLge3eoE}EJXoD@F(geLm#KQQRPlaY}bXorGUoWtb=E5HB$XO=329&(RA zg4}iYkpSSNOxi1F6sO<6-{->CMBcXb7#be_z>sW!@8hrduSG50RkJNLD18%2do7on zxXN9a`ARM?sHoSBZXTdTJF`e#TY153BlxhzZ<@{Y3Jmi`miZ$L6;>`nP4jARQH-Tc zm-6SIJ~0om_#ddo3PZU4{CRsBB?*uQ$0Xtnfe3+#%-O~V%dDVhnA-lZzfI{vTHo*Y zj=ld}23bkt-mgJE$NzZ&tc7naBhvV2ec04;edx;&&>ih_U<&@c4K;KYP&ZXq^MBZt z%9;;&D`7^Elf6G0XZXZ?DagMpzEde}S?EVM(RaoXlHuQA+FW6#kXyOLW=6@{;s~Oo=OBCA66EA}_T14vf`+76sm;&g6`BtvAsvIq{tm zPLIyx$3nC`@?0c=%>Q^`z>y)NoN`}iQ`x^<{rykBsznVU7hDXeE8TV8CeEM!PX=Xv zP7c+IN$RC{oKD#?+t^qCyn8(&lQ+)HF_LOu8ZK%~^{Lc)R5b>MudCR!3ec2xA6k+q z>7Mg%((WA3cxCVITAPj)Q7VUi`MO?DZE#r-(QjF{9fvQa0>5N$Kf4RiRWJqZ+6Nx; zzb*_I$Hj$vM|*qb>M9eySIH;JKX(Io>8Q2G6rPyH+2c<C5*BJ&vaJ&0?PIJw@7lyl!h>hZFc@m{6HT+kC zIq_WmV~eXZAhKL~zZVb7LRR8*+B*zc^)4{KHU zBz7Q*mQ>yNIU%pr?PZRQ0;>p0nqm7qT{z(wf62M4F*;HP5!{M>1M4Ni)GA~fr zLP7lle{43Iw-h_aufY}zXq^G>QG1}msR=h#DzyCW(c_bp!18Fc#&(J6>@*htaO3N6 zR5$xj3mlB}ezKD2CSME#eQwW0;V0DjmmaKJ&nBhX$lX}D1>w#$yPty@sHmohl8o1f zDve?O6kq8!VlrrIARcbzW?P+SM1gdgJm3t7_*Tk#gW6hXU$lTjO{>YQPJLezZqK|HscN}4!RTD0<3+DA&hrSe#F7SVGJgQ9yZ;iz!UI8 zgZc?^yeH-{%{i*bMFR(35s3qyhjLHgZlb)%(i>NIpf1laxto8spUZACD}0UH3x2vX z_>8@7ap(2TXx#1upGm8RBqSxal~uBvuU=|+b>kTOPSnD-K`|mp&?zgFgm(bU;*wSn z+IvqN9#_|7roF#~D-)oQid^9ze4;Vom$L`-e&0n9l6WaW#T30L9TLvY%*hm{$Vipy zgY$7`?R=*}$7mR&HSxSw+Sd~(v#$MdO9l!61}iZN!ucK8{=I?@PMkeT(VOl&~R_lE8W%`tAUBefgJ?ImA&?D5xzjBd+wTTarMywYXPd$O8 zj`QPgP1FT@YVUDcj1_rzx{U2Ua6Qdb9U6>xx@>-_Xbi??O+2CVXs0C{1QTT+Whc54 z`yPCnKeYfX!k{a?QboW@D}=*OUigv=f$K8wbhsw|ES7E9M&jNm#KkTsBLxkw7-p19I?Rvy;a5F zkv@63QK2PhCN%7|!Z|AuDR_dJTyt%T%9`A1b4*@U+a@!DALys-S)oV4S8IEpTsOSI z(0O@$3rbGdlwb!ZHwd4U+RQI_ba{hIfBAN)hX7GKdCh^*R&5RqHRMpcBx_j7$g;f`OZZ=wF!dFB0Ab?M#z?LlunN_~ z2RA@$|AY?M=T`)f>KZbs!^M=CkrRq{w%+ADS7>5295gAfxt$~NOQowkvSv7tZd;+U z?oSWjfte_&`4IiUv!{{@CGq#q#mB`Hk9G;hX13B`b_e?m{HF~xR9&PW*2hw&*1w^(37_5{{#A#@%z05MFOyR!! z$U`KwIaUO5ae${vEib7=1#w%PlUfCvWcW;QyXxIGXF?_kFwj0`vGP-z-Ok+o9`gqA*nn{fq&(dv;^vf{sf%?YCZB6 zX0=buEc$`r3oe~AGH;|jUBY>-M%0UFQs42|PONq>){#$0tSY5kS6J80eGhwguGy40 znixm%#lK>E+G?on5kbPFJuM&jKcxZ>@`goS-)4ky1lJkLVoSc#7_Y{c~zI_Vf zlaGMBCDi+LbU_Cj92i(#Hxp2tNUl>#se^Ru&Lu|$)AQr>NSltAWD5EbjG=E_3&%8K z5)@8o{xKqWW;__O<#wzCNtWK9h&9@=hC+s}kHkm3#gb3xNvg%WZPEcF*Plywc88Z*GT+gJ9#Q-_jWqZhUhc_S0M>p5CG8O?+s(Skp#$ZWq+kFLnwg~<)0)37`IM*?4Q z7JVasbWd-PXV-L4$i+M@V6$nlcT4)e06#I%W);ORwF5$GUpv zDrVm5P7zJ{oSt6(3X|``ADd#^)$T69>6B$*o2CSPm*o!3l24wPstpp8j&M0&PF7lF zg9#=wlPNCC>R{TFS$m^wh(gw8L3iK%OKtY6dWhn_ifIy`Waeiu7neRZSDP*r z!9lQJr9rORwGbCL*u7;@TO;=ycxP&b_vwjaU`l_zgfu^ULCZ-@fGIdGTF(lOvrgI z&(Cpdlu+bffV=9iL_heA2r=j*H{ZkOw|_#&e`>w| zD3$I%uRxW3I!H=j&rc3jBV9a}F=%=8;j`3x@edJF!tam-LsG1TSqcU;RP`Y>S%e1M zE5o&wamuquH{a6(-DG{sXbaC$2UVL2HIjz%1#QNcvM4-r#IUMP`lvQZuERC;5J#Xw zm1c$&I99rUJCTYTK$D95Coq`$U+TR&Vybr9Xbg(?Ac}ZOZ#0WwOjf9KhI3lmcO& z4LW1ZJ`Dqg2bT>5xaWn=9J^IE3npFn!e&{0u3IHS&e^GIKy{V!Vct5$Zlx<+L)c5J z2G!M>L=eW^@#9A-ICM4w34~TiurRD8+V#8$b31$f7(SnxpK~dyv?5CBEglbQ#li1? z!Kn9X(458ND@>>330Pm_^ZU7K3ea?|0rfRP+yO4R8-v!A;MMyP zxwX9S+<)M(uB6JsMlJ~^K;fa3w*JAa#8T~%%SR@9_%F1Cw=MN9s{gad*wwb8E3enW zM62fgY!j~B{wv~9ee58wu~pk`C8kfODE-D5hrObVXK1-yTKOto+80Nzeb{~=cW}n! zn||O}prlDwF*VP^O}LR4jKT=pqLdWdLICQ?2F3^TgnC5RmGM_Ve5x<)ht~oAYwX+u z+WFUm_CLJ{CLpv<3X>PTw2$Yr`5co_++leMR3tBJLE<}*#vbwUYp+Od=f^ua`D~Vw z_3kNt#2zQ%O|3$`-&tN3h@2%|x0olBS46-szZmr<_f(u1U%U@I?C4}SOF}~_tl4LZ zMIfLq2~SGs`K1+XPev+Y%ZCNflWL6nslF2A~m?Uf)7kW8w2^2|;Y04pvh+FFcau8_O)6X`WnA5YiiI za|pxq2obs16+h}bzUsEl$!LAaVUqM&dy4Lr`|gUu>BL@Q?UXE2+@&)PgqChXzUr?8 z1k_mQa&RzDa&Vb7VXf&VIn61H)F0s3yF(rnYaR8?Y83ydlEpG9t>>lb2MTk&hL0de zBbo(9i87^PEU3s_GwA+L;L+AtPMN3LLal@PE48%y%ZJ299xV58MJ=A}+@&GskP8jy zW}3(dd%4|hgG0Yvm>zcl-xL)wzlQ-eH0j+aXh@znRdSNFEtm?R{|a;N0aFq)dRXF1 zVAx8#Dz%OlV19xW_hGgcf;LwBv5AR^Qc81LPvYLARA9?=--q<49u;`exv{tz9&(oP zS`-!>pb$)lzUejT?|&%Z==wyUeA(JG0<>Rgz;EJ}H_drZUSdBP`W%lowjTRHu zEFHEcSPj4|CLLs%og@AC7Fzq6_48&e&@rI0PhVR6;4zp{R0QaPJr0B{lTyh-%P7ph zvQ0gzz--}w_pmta!)(5Y$8J;C<58=+n;mM7h&q0=1+ku#a-H~tlshS6p_I;?CpQ1| zhdD)HujLkLz6<=9EJW-+fHV^NY8*Dot#RE-*5ab@#;zzJgWz*%^qg7N1YtThn?D>7 zFn`mhFR4EzaG6k%HS0;g1J1vE-gz-{GG}DyE zMK>=V0lDQ!5yd$!6?cm8cTnsq?^p{|J*`SSvYOr}6b`>YWmShr9L%0=1Z z>lP{QXXwhg8ljGxQ*(ZtTdN@!y*{_2lAafl$dZz2K}s|BMe;ThIH^)lYKWWX-FRrBx@!9RA{ z6*SblA3r((DeB;B^ywJXCd~&_LSXMIDWbFjai5U`3)BYHm<4?xBc8nH%N3bulg*@H z=9bB5-f>4NEZdEYkHU7<`V&v&Rr6t3RP&jSH-l#_D((&_y_Y{C89JV{KATL#D78Yh zDlN}ceW3d3vW?t;{WXP0j)i~m^X;#>g2wQ0DRRR{Q$pPhd&?yD1A+7=Q0-f#4IZ^< z?FD^wV9X1p@bRWyR&^;{LG(Q2yPKA)YfVgw?SA`VUjs$fOL^gzOtUt8IHA^1JO?M| z>IDH3j;ennw=rFzS)?l>49?QlpxdZFGsV(0jk87a#r=cpXoFGiJ2msYe&@!@&wfuc3WT*27@s{5_0ieFT$)}X3Gx??Cp-6&5zXZ zF0>ZUT68gM)W2!R1!||h^wjG;XD#rXqyt>Z!jSGb!Ps19AED76tqUJsbQ31&5d_0d zw-ki81i@+4HDv2nyuogcsM{EY-E@X$D46tm{UyUO&kh#+xlVxC|IyR4yaQzk3ch<) z2=~w80hJJdyWzsEw|-X$zw2%$^s9xlnB-8V_N>=LVE@rleXMckHz-|sVDp^Thf?Zh zhDWFqPc~Q1fX8A8ri1B?B5sx-{W-2K9x5N3uwzIrW&qd zWOY$tOdtS+*#&P0tKO^PEtpPt_) zb;h1{FU4e+;W8UB$K5fQzho53?tw%>LE>1 zExO#hOV`KDPLei0R;-U4Z=iBM@#)LfRP{^Y?7(RrFo8!Q^xhZfB2D6#kn?^iig4$+ zQkX#xGMqlNd}C$9yGu&UZMnIxQ|(GS{dt3mnA;UkYwGNEoN!&MPo?U$$MGdnLR++g zmIEH|wzGjs5jYkc$oPS3V{?N2oXo~t_xosWa;VR!l||IjDX0HX&qT!H%H?Lm@dZ6i zk$+`tApFtKv;+{EyQm`t>f)^GMR1U-Mqc>805btz`lfKw{Rau1Neg87Cg`6<|191g z6!@+;-6o(PP$OpN@)J{=0VONudmmYdFD)A$yviH;A>aAp-gTj`HT0<_V$5G+!V}Zf z_FK~hd`jN>IX-75Wy<3y%1hPl2Gyc*3-;NofJNYZ%>m{&F6Yu3_5g^z`?qB z78h-2qB)bH(~P|I{y;kUjJ>3?f=(`eEc}F=kN#ja-Jinq{c<;__HtGOZxV5FTaoU$ z)68_NL>VCgc^3JaX$dcnP05PY)1e)mOXIzW7QAjf&6#ALXk+E8Ndcs4_9s|fJj-#1)e9Hi_gnhh7^ zySTNlJS?nUCZ6a>d$W-AF{`4$x+x(n?^t+T6i4I+3v+;%da`Jzj!?_>!kLz0igR=a zO6St^zxLMqTi)4HB68S5#*i#+fZ`plWvBRc3_Vo%1#JO&voY9XWLyIFsK4uh-*3G4 zY5U5g?`l+f))D&xPR0P+4D2-j*hX8}ZcIWarJQ75x&}ElRCnA?Gh>lG39xt?2B!- zwE_NRDd4AP1gjSng-0ypTqIu!3NxCS(*F?FJRe6&p2nT-ZTv3GfAeWMT&NJFB-@q;AvgFfX%JAG2dQIk*gjm@}xzH_p|`go+0C7#>tiIrTEsZfSZ zn8*1*j@vPbN#_WwfF+PMO@kpg_N_!leP6PZAM>-2UpO2Ua_L>5p27Wh%H@W?vY00D zgc9=@=k&V4HVq3+Vol&+CY17C0@L>(H7|2>Zh^h`cgsCMeu>dmvp-d_Uh4cb(yL`* z{1q1Z8KBJjU|WJ^mM6P&Lj_ub-8Wx-^3u>CF1PZ!ZeUe7*HfV8qgh|q@lp=6QDj6Z7jZg# zVP!MVE&tvP*HXD9=9L$on{$GoQNai5^O;OL!U>SL_-T72HrKDeSeO7PPXyHESSu(X zKzDBDj==J#Gn$#Xa;+Vk9)6|;KoV@AZY^Eu^+NFvwn+SB?6!dQlgI%Y1;q&UT^>}Q z$~$9BvN*rs<<#5Awe@@O5bs~yDX9#KYH86Uq5h|5ut}>U19)1QfAL>%&7C_<2?1pn z(64;-HJk*ueaFW#u10eEP%+Cy(od?Ioy>=w8BYkvbyc0|W>{nuzSNa;lt<{ELxEFi zgKyWl9)0$_JTu|6^4hyYk5W9pIWv|on6F;@gy`uB2aa3Z;=;#lx8cqSRWR4Cf$@3h zI=3+zMk$-VcY^H_c`zY+7Q6=n6THHEXU7^04!4d!t3u$`0FBJk$5{l?6BQQEz<9C5 zTr$bDrFHv{1K>dCkAN_+a|)<;I?4nCQ1Tn$q8Gc(miLrRNPAxM;53d8U4$$XS8xkz zK3<3jI(-u29Aqb=y>jKuaF17m+#RPlHDHCn_NkKU?s8Y@vy~ozDxecU#*u>lqE)$8 zST^Wk<4Q$bnO5jeB?~%Osiez(a?wZhB1b6t@S@G`>EQR)z=>;wKYgKh-+iEsO)FOT zBmEQ`N2&qLU0!qj@s_{07~dOI$IY=vg*E{KIQaIfeRChjn;L(X0sUwhYzhWVnjeCE zH>b?iq!|x`{Ut{9BdF7ClQWd?ZRPb5rD1}(hCMoqJke|wYBwSva=zoouEwQXFsFt~ znBZzb?e+%kOvg4O>Gx?&RDP@=>eiUA~DZB+5+A>l+&jQQ6EBqMP z*ghcpP+*Tolg9lCI}r!HE2XPjS4Tf!;*)fVa#Ftobk7&IYyI~$rPzK9_WDMjO6Pb^qYp5` zb7Yf>E&h%}n8;a9Oed3_ni9SC@-q9ULha=@vgqX#4Wbw%M@2HscI2J=7wxDl25yEK zT~Wkt=cQpEv;6M;6yM&FL5+xv1g9-i3M{GQ^JlC*1{p!-W%H}w*&!CPzw~AsX5H^J z@t-mZA~>uRz-U0XkmM;g{zakn%kxI;!M-cUM>bfx?h$-L3Uam$IZqOQ{8j z^6C@Eo@J>4NBo%T`Xq+ zXC(g272a&nT58>O4I;ahow=1MN5cDJ0?H*L#1oE-i)-)h23X@zKL&t{EiiI0`2=^X zhY!o30esRkT?lsDX+Dr%vD~z{$7Fuu&Wu+r{4xoF3iRjq$e}E3Q^-38a34)}M&HLK zG!tUn1mFMYvL!+aEN;`@_=7V0=$AZ_wo!L zCkJ&&eI>Jr9F$Ap+QH)^yOtuG7A5WD!A?ex4R_^WYCa8C5PSOaQoQXinLvOT_#2Q} zr6n~h{a%XyXPbr*O0FtGrfo>nZ{Bo>;Sb;_w!XhaIuIocafvX_Qz~jD+$ir@EvS0D z&L#h4@R7YbPc_?kMj!ADi54qFgZ2lN<;{&EC#tOnvB1K zUiWif*ZscF{pVflTkHIBGQ)y1j$_Yl+xA0v%O7dW|2N3=6DpB!01lB?WUeY#q0r~+ z!*x-N>A%W!o$pMq{sl=9QHuS*CT789@b+=CVrhjsYml>TV{oJt$QT4_pA`^pqEtE< zqd>Gnt1m08{R|}OfK1?r?PL)#9bxZ3t&lfMOMnw_ zJ=**IA06YrS95<{+hgX`H-NcFnf>B-%eI7WP-oZ<&sUR>|3Ux-;b*vauRA zXk)GE>uqTpUOq%FnaGWppkc$8mWS@t z{Qfso`%O0k5af5ylMZ72+fn_EoVtgOh5uo;<|SZ{ln0nq(iP?8YvW%u&;RU5+(Qe% z|Ip!Ie;%=9{|6lP?noPxkqCHRn$l}5G$sy!Q7&c`G{nW`5w#$RpxqiRK88B^r zqV*j<;3!C?E_Iaa&@O@rSQEKD2XKcZ^<*G_r&g9lU^9IG)AvvRV)(Du^Dd|jpn1l| z*8%B-u+V3w@P9z1zHeRvKvQij_pN^sp8n4ZT$gLxUB&@a!WjO-@&%>5VF}_H>I3N1 zsW-1{?=?nEB?`%`Z1C{#w+fZb8ICx-j%Jxp4HT++vf8j)Rm8-#BUk70V?Nm6*B5tL z)=FpcWC{~Alcn$Rst*0wHv!+ARat&rg+`Vu1P31-<;f8JwH7g-q7`eGXT_7&0_o@+ps^2oxul^e>FPCFf~&A z9}GsEg_$nKKfg!xhfQX_^z*+hX%+&Y#J~<%qoL$9324bLYd7wWl%yxrc2aHVriY|dy zr0VpiRhLSv{|{j6-)&T&8P51S*V+2owCBmx;I~nL!2HG(?{Bx}iNvz_`86fX=#fe0X#B;V|Rg$-my& zBRSIxZu-6ipvw;}m_ep=ZtNeK1=PeeErE=YUQ+0YlbBxypxvAdtfNWHz2YVK5&_Ts z!J0P%SWYY@rIt@niuwMj&@JbY>>_*4dV^rE$CwP&OZMOC{~!Yi?nw~-J0SCue+#@m z`O0uz^nYII{}dkDqTZMS=sJe+i|APEmYr^>@l$6^9-DzEBkEc)Ay+)4gvZ7 z8XFPxWb79Z7F>r-u)*HpM$M;`CbInC&6%Mlvb$Hw<4)836z!7!f_~x|E`BR=xb&oP zDW7KD(-%roj>G8n*e`%*05D(L?qS0HUo8I>#^Z*x9gMQMTi}6C)a+vJ2w~sLa^?*< zN5-V1b$l58+2vL)HO_AMuIA)}qg*_SurZr+T1xTu>}0-qi<3eXac^+qLOfA4?x%OR z@jMBsse`miK_8p}B(*%w{@-5UT^bPXWVU`y{BLEKZ_oTL;Fj%kBUJ4vZm5%~sn(>k z*g12r3(dxvm7S0D_8NwrbUPm_Tjq`-7r+O?|G$6Gu>%k;!I*GJ;=h2;UztorA$^;r z3`pm0u@rUZI3WWEDXF?aFh7C7_VW2d<`D$9(cyf1$jV2PahWn7;f+4S2eX2=_DOfR z$g-pGU<1Ka%N-}DOSwk&YL7YX131y|;cd{sjoT4th&Vb3KCW5yMPB}O5D%|E|2H0X zGVYqcBOpv~U?&8isLV0`F)M%DFno1%fG~VRqC@F}0THWFIEGNxNFnyiy{DSJ?VqV` zwZ6b*!}0X@KH6L*)D9k@7J*>g4z2$6p5@=ZK?hxtk4<1@Tn3>R&p;xC_f?1+NfGCC zP<;lEb*+H9xI^Z$-$D-MP}j4pg|y5@5=8qV6@jQuy2Yj-=f*^$P@m4(De2cAd9DNU zUsV2J>7S0(bU}XO|J%R)bixPRn$sS=_WgewZ;)#0?&i)0$1dW-nrf0CB*pO8#kErk3qF&3@fz(FEIy@<> zp;{q37ScSY(Tl3Cj$q){#6J%M&u0d@6}_0RlA#RfS){o(WUEk;!zf}5eG>J1$b%I3Obb1Ka8d>sSQKj` zcv63^!STl*2?#8TcdZL8eYc*g?+lnNqx~~#+X|mt$NgNyF}tDMCay|SLo0VxG{8az zRpMWUn%qza{1{pgSe^Yix(u9 zGO|9NO^MvWI5QdH?TBDxpic4denTMGi14&+oeCDzA(?OE+R`6UFdYoeJ zj0HT}B)aT1s^?O+;O_jAY;|MwChhl=PUe=YhWbj0Sek~G3+)$>%H)R-}3r>Nk+-LFNXs>OY5(OJVgJp6!BDe>P}*Mg zJY%0D#=8G|58Bn96}B;qx>*QJtwiJwrd)_AH0EUOC3Ig~ z-l*2$;eo2Y{zvKa9vYG!;L4#eGpYV1VZrpv145xqEI3o;QmHjY(u|*y1Ug8( zGKk-Mxfg_-5Y#!s-?+7KENrC|IUSVUnV8|siI%qLwHl9Sze-26mtTF1d+8Q*F)jWT z1C&;}ROLKN^=^m_%Q2N2OaQ|<#ubKb4v86YddsMeP>(-V>{7=B~kGu!xK#VWr zb4HXYkhMm+S7bzUnb|f=h8N1@Djo)P?ohHc_|(J5t_PPbQAu|UZFW$3-z9r0OYiy| zRiwE(v?sM$M26qG(lE%hGId;j6ADJYjyU_FIe(oiHr;BudS$r;@J^9*?!^aBA;J4+ zWaBS)6HFjm^BF|O$WQZ}{>Zu5dKc{dGy!Ak@XPswaC^1msd8lI&DmuGAsZ(uw-$J3 zsA?CQMgTV-gxH%=0t&KJvivpwbld%Y{An5ea-jStTK&hV0K`-dH zLkoK{Ie%5Trqa;G;^ycc9^?b)*KMEdFHo$R1VESa-P;TEbvbIs~>Te-pkrQkuRJ3Dt^w15i|8ZoB@h)#($sGa~EQ7H$N6bN5OaEnq5K-28Lu% z+a=xN#yvXJ`7W|6Fl-9v$}RH+a^cRDIhEJ&E@$3MF>J(;(>2w1Z?YzaUAO$D%ES1+ zXX!y>vv`1qkk~9krXiHQLUFEOhg^jS`Us&A+q3Omb|zMLLci9Jim$*nhNDv;Qq^h0 zPy^_`jy}pY^=mD)_ppa%E#hv@lF)^FX6T1&oOr(z%^s-l1TJU*_i1ehH(H z)9htm(@LQnhf^Z&XYo>u@f3tx7bVwD-uEtD+P}B2;4GZ(%3jk}I;!Z0@SD8RJULf@ zEgfT>9x=^lcrb+`4u}QgD`~u23YAi10h;k|>q^(OhQ0_W7Kg6JTxivvrpVEhCyqu$$`y~>=Wg^Ce`gT5U1Im;G_Fd3CW_Y;va zGPN$&k5UVG9x@4tXj2oh`)q&^b7wDFotp+0iumqEN~iE07Z=xX;PM7zh1Z$v$uS=8 z>C3iF6EW(`b`dXwWGK#I{rmS{L?#%|{oq90wqwbACIl0>R zYk%38?Op9Z@^p{+k*82o4r}GEx=K9_(<#tBxVN8jm6)4k*M3fFX)>Eq+xJ4b_;m&K zDI|rzUr7nY=X(Vd)s3Km~kZXZ27TTv#Z)fmF2g14&5ILN-5F+18f6h`w{ip z@2Yj>f{BiYpNvs*yO)=aMH)dbSXsmBP;n}HWP7>$VVFBBfjmQ*-3m7rddSy%YV#K_ zaEX)R)>m7_`uhQ0GQI>1P-uccf3vTPp5K$m_VjvN7?XZAlZi=eb@fy4)n{a6(lXSP z(xWBYb2WW3Ng{O&<+r}HjmkYmWHLnU-WU6)0OnOpUWNa5a7hT=1Z^Ky(&tTwwY|!d z@RXeQ3Fp$XQjs{4Eur%_Cd{rYML}vq`esBF z6w-}1!{TWd7Q5PoT)QtEZeOb#hQBIu`z)}&cD==UkkEe1+c(6!Wde01LGjvt<9;Ca zXwYMGQEc5>hvIF;Keq?JMQ+ah>=uARP`tWp^OI zqyk5!_|-P2q?xe%`4WA}XVGi6Ea$d!3UL~y5Ptdlq{k1@F;!9zDh_Wv1aAz(_*P%K z$@)Y63#K1UJ9&M5G2thAKQ|6&tj~~s1|E?uJQa((>YRnPDFZJyZm@YW zuGZ;7gz6qk3BciF;;B+Ig#)$2Hf0`@#axM>=to%=B3!44U2bm*mbEr17}_%ay6)e%m)_%RcgI9F;Yp# zjPDHsCw&QSLKibFDaZrXHt`~#_8)n#9XI^1VvmP(%5eIQUMsE~ucCN;H;FDEF#QQP zxId-Z6Ia|VPp-a5-6SNT7~oiQdXWK38$c4ok5DWfeG(>#4*p&&_ta%KIug2gQg@tw zl>CvU!lw+=V)!YqoyM~fwZ>!A=HYeF$#ii-iNwfbYpgx!ndNX)?*wy5*u<-*s=Mg< zb7y!eH@hnWc7-BrhCt1#pay)WjjO*~hp$VFyb|uWAUd;(RNsHSjveueV-`2}k3OsJ zn~f9%=yA0HLHq-`3>W{?0_L*^D#YyiH3k1q7P<-(4)^9v@G)*Tf9X-Y?meJo%Dtdt ztxrg$%=1B&N2}OMsO9Jj39l$es?g`}W7pz$gZaUPj1zg#3_E}BQ7*HI<((HonMs%t zH$7{Xdz{d0xc=^dv6;Df66hn7GY8(z!Kc0}V;eH9f?yley|1 zAt+M%l>T)gJ2paDOwj*w;f3W%^HP3;qWS`Qx)_T{oD{7E4xSo%gvbfbMm6G1g}tSQ-Q-eT-qS(--1~wxC6yU8Nxh2P{*x6}!<` zRbZwCLJ5__R8<_! znFacU7t5i;x#g`VwW!$yla0}I(W}q2fP7ox4hls3Iy--21E@Im1GJmQG(Ny8I2(c0tHLLXatSjZHrKcCjO?eq?iV zY=}RF7hL%wGNW4~l3EGv5Y!u?HsOo$?EvMp2(2TYH!0U?xmX-o=Dl_wR-5=9koNQ= z?AzdZ#*irr?xDlfKIcU8b|EHBR z?^GJ00emp>O&9PRR*iw|_SU!UUjV6=ROq)$blWHGDT1)KI=jnCA?wu)0^6IB$d{|- zIGcEf4L%RTUxb8Sgn0yKCG+GK?UzqTH&XEbhVwJ+{v4Kx<8Hm`!io&e({-Tm_`;2K z>f=#az+!za-*0iO|HO+aCib|{-5sfY3TOjTi&W~!E)q7B_pUPEwQrQLOv3_sO5wLm zA!~xym(Fe%)!79*x%Mx1x?(hcZdhbaaNr)YynIdTS7iK&SZWH?)|1L9!!a^f7w)8u zQY140TSCukTT06NXYP7epd>`Y9WB0H&e0XwWT)c!h9qFJ{y^C$7r}59>Zf6Pk3xwV>tRK$HHTSlz49iKwTGqn$NPF|XesSS`Qs zq?~A8S|Ln|I*WT$2Lno9UWaj${j{b|Yi*=J<($n_zW~7&4b2k;wKQ{Q9$S^kRMU(u z&{Jc>>eM%~Ff>c&!e@C-cR61=FQW~mobG3T|K>^L#duhbxjx@Ij6$7YhdzSVSjkES zih6B3U+*Qwj@X4YRuBgr+yC;WKl|8!RaJZf-w&Kll94#taALP%VobsSNdQIimz*_! z<3S3Z1Kz#(Ir6*K-&m}_PoCdLcW7Al^t@QOcoAkIz;4hK3y@5yqKk3Qj+n~pQen1V zPPbG<>{j`12+nde=n4#U=vihf+GPlt-m6U(nSH*y9X$|kAT=4xOA{_N9T5NK{#3Y_>k0 z0xl3H`R5KqNv-S0VjG_rAG1Fu^&|_zVdn_0um7}qvr?)}Dy2#x^IJz#e4M%WoMx)x zsh9h%y>ST&VIU?|nNVpF$@`=?as(jVQsTL!-!F%9geZ#+xi6>mq5)`}K@q8EOu*Ln z(tV0raFoz|>UBV^ieVh8ch+OIJF$$Pc02T?N>}ok(NS9YoZ1GHGf%K+)iFP_<0BVe$x?KnlZr>Gy?@g+&km6^nF=4bVAa z8cgBiHQw5D?~o9|oQ?Tt@@&rYux0EqylSR1rP}dnRbS?j@z8824PEz`(4|C=n$7l5 z>3ENo0BxznNkDjKYde9g@qIxE#3NtULH!Ae_7jRg;EV|!%`IL=`4$LbvWo{d#qV)VyG{XpvTPCPe_us=kI% zmd?F8i*CGL_yUI@o|sFyC;znJ(7e{J|AM!<+CUTINu4qjuy%wH(0KFRQI9P3zel}H*DUwa>0)b zI&=qb_G`Wj=>|{6IA~!D+QBMFCB($DCfuS$Q%+v&-@cU18FmgAd_)Dm`63^$ASVYP z^CW7xL?CftWcq)@!oP_DMWlCNyvo01ApXXN{5kQX|Mq6KmB-U-XYO-L2@EgoD_%<*mcn z9;dnj47Zv|9TrCt>gvR{V_h{-W(gbv*-C8R2_j9Hs}i^kcOkBe#GvUPDusntu>%T( zDxaA%_P}ZaZXDQYB+iLi2;=kL5?o~oO|^ST_A_H5D_d4OQTsO}QO{B8Y*B%faYxxF z>D)i@ynGFMc7OFFK248d+K$rscYmx?q4H+&cF$sQZyw@wN3JJ)*_r6Woc1wARf`ju zk#fq$Jnm*elYHv-sfIQAl~^cha->21)XSZ_l={o7K#Wi(&SeEyMT0_OR}VoSIl*&~ z6CF`1Pah@>;?F-G(-0Y{&KS#HuI3KlU#*#LbD#`lry&TdgGP~k6YUeR*Py2j!3Bzv z_J|UtDS7_ zK-~^>6N*Yh*$@$GUOSSf4bX@mLjd{U_#=Venkyo)-qDPs)W~kbifL~XBr+#3V2aF& zEMTKm3J>BJ1o0g=d4%6YF7S=W@whngDT(r*FeoVQ7=cCAe}N4S66>PIwTeY8WKHTz zH4YBVcXDv{22j4xi>+yAy3I~Y`T*j!o9^n~G62F4e@TCcU*XU1m34kNH=}yj>ggya zQC84SRYR9T-mZH+ANg{(m%2tRe79NceYI8ci2eyqE*OK(a=Il3z@0e%as2rlBV@`t_3}js)UuBBSV%-Z8U^S?8Gx9)I;vESuB4k`qXRm zoN4^Zc>PngPKhbZq>;$QkQ?#PEo+W{l^ZwinmtI*k~E+95xm@tD_0%TXnA)=80@PI z@zpYm(nvhDURNxbeb+eJ0uT3k@lf0ssY#FN{?8{mYxlsN6E>0xhC#4tHU&C1WP zf|t)NRo`d#Xs*|cF9`L052}CC3ye^@^9^3Ttrb^YAM7*q_V9o}dyDJE=VlJd6BT z_$z<%@MD~=v;UokzoD7H)CF32@RJS&<1b0Y-nY3Jp24Bm*jjz13t*9v5DN?|RK&GAB6}NGDo|LS~wjQckyTw;Rhyn;aI3 ze#yNVx#&9&GtotO~(Je)GX=yXhV?gWlHoQo2{ocLa6X-<+en zhGSHcucitKd#K=wjT5(n%kT45MlwatUM5bJm-kX+cX=M7n;po<1npdds|N?1)ao~W=_<_`;J`0Q+czFvbjLBudDFwN zZCQec&KIF0$#~wI6igu(nVyjbVT@uQkYb6-GtWCFX7N_J7}#vj^sJk!EB))yysZ^C z@v~XepeCq!3sC!H11OIB0n*C5{#!2=Jy34LO|7@&-cRBEdV;dz{0wQcg)O{MV@@rY zoO$l#NgcFIlnG&I?D=k8>AHWeC+XB|;vL+XF_leTzmRE3&f+qmv2ki3|4c=5e6>&? zcA#HwJj|q$^Q+0FQH6Ru2z<6jE~>u&OkqB#TW4}XEXC$VnEp=tvpiS17^SjI88B)FpVyE8yo7|b3ft+;8)yDICVpu~v zFc%lS!<6&(yJ|P8d)mZ0)Z&Ns0hVvyxBIK_OLv#O_+Wn61AkG+K%QOM{fwuQAUxTh zoKS&Cjn*~0r|kPvJFy4aPlg^!OZf#@?s_fWr8YVrLhA7h*&2|SDt`upZ1SHTzzD?w?+hkseor6||*NN4^0~Ky8{3;tI`#gzD z`($0}7%&)Td>K?PA{2JvTymI^`w{0AHJ5sd6YbYKfu$MiTq^V7kJ_7Lx0KymE_c01 zU4>m=dv(ut&{qznxPGUA-?`hsn3}a2xtRE3G3=OokAM8@cq7B`rrkiskT)U;UDo&i zK7?M~C!}b>C5}vY*tXHZ-%A`wbHOO2lW=2+IXv9!k{!>peBXg?eXM|8_$jJ-IIx>L zKO||ZFPNym?LXERi3DIh(V2ixDFd<%`NJmJkF~1cQJ~()c0@7 zf8-(&rS-yH!z~khV?jTxGb)IZOUPOB{MBe-gl1=!oKFIK5=?a?^|srS1v37VWIznb z#%i6e_Z0gxlk&$vMt*Bvwjw&=j`f#eS&6!PjJhcr_w|%1F$+-VUyRczm#YXDc-|Qx z#s-ubNU-4WfF=7I%5bM8Kg+5aD+l(2K=-2|e!?l{R8`s*ujcl}dru9FjI@z%b+Kj(jaB0rJAF3Mrl{C3H`iO_ai@FX{z;>=ys6WyObb;e)s zfnth3ZEps|aB{dEe(RE2HVRN6|c7mVjy^DOfS-ip-$~y;m^;IdLgN^ewLi|J} z2R>}y%^S4Uw%8gtFN`PAr8S426ge8n@;;n*9+L4@VLZQ`R3EJbl)JENwtsN(%#Lsh z=D(my6`BTZeHB69n}Kg{MdY(`Y?XB5AHqhcmSMLxP%gDT_PJm4#`VnYP=L8wC-H5v z=!$t>LcF?sb*;AMP-Qso3Q$+swBTq|wK4|2>p&TBD%=}?6$O22145Qtb7H}7w1=Ra zmz~7Xg>K+p9+mov152E%PYGDdFkFcor!8f~^w|NA-j@+0Im(8jJ=dLW$NFs)oW1qJ zp&GtExA#ORmgQ#j_t}AP)>TyA;Mg9sras+*vY3|o=%X+LA^d^IT}$)WUgUSK>`a`fG2)Na~Bz zXg&*i3e0~;R5s|d4SYc*eHLBc{LprLxtsCz8J6};mF*PCTMgFw#rBdW8?T*YUX1&C z^%^uZ&RSiQe!l(R3=XvBY?=#jzofySAwnNyO2a+cQ}o>pzHFjzLk>~ut$lg3aT9Ov zO&?7ekiZnqzgy&f9)cqby|5*nEBvROeDL-8^IFobJ6)3v4IIo zbflJXk$7fzVoHatVH?G{km({L-S5Y_1eh40nxi^R#X*|;1phi-yhbB}5YPBK2{F7u z`@fEE1)9(Y#eFf%3U@xYmP2qm*XdxmH=d-r<72&7YZ)O@0Y12+n)O=qYKi*B3h4I9 z@o~2Z_86)t?7?kEm~RlM7%0{a9$sRzhGSZ9H1PfiSNUj7%I?Y~ zKeH@-o>89!c2`!={Iwh#md)9+g>I3#qy$Ww+%*a2jry&gqR*wFlYr9vjaxHXQ&)z@ z!8v$brY+OaZME3ulArE9oE*n>k#^XE2m48F>4e)&y!)wFd#%A_sPI93hO?9B1Fl8A z^4{0-j#af^+Z<*NezVDzkq8J1DMrY4cBJe|^m=vTBsRS59D0Yfs*v-0 zg|5V*wC1jAEViW8Q{J}1`t$tG!4&pX4V(}kq7=AfKg2ukv=Uqf#cMkU@e5bJM_uDl z8L~9*Z?M&hUOYz!sqk;=u4s67?T%hExzy%Q?INE}9bEnjFKOax*||9Pw4yr1NmCpP zOo`!rpD@3Q^OD6$J4I5AUWhaqum8l~Mu|IqCvqKf~>)t5LZsLlqrb!e$WZQtw*VJd!~k zw$@E$n=cnep}XA|#TUxr(^4#T3-A+&<*Qmx5?Fv`dCy(zSNRwF&2?iHxCrlw1&;bM zs{sG{>)?@J(WL2-wr>zU}Dh4#SiVLQ91h?0H!ZK$Je^eeuj->~V? zb#Y;o`e5Pv^U2!B*eveFfJ*-7aNb-nF1^?a7qp*jAnQbWS z&BOjiRtykrcwIO3m#w!mVCZe>5kLrG1BU9^&#_by{W}!6_xQ6Zu+?3bx>tY8{jX3! zn*%LB)hUG1`1AIdlri|$WgAv*5`_NaP+5JX?WCLKxa$WD{6;?zk25l+l`YHMPaKu` zmV`qReR(ZIJMoA7D!8#s4RsM*)Z~wU4qYe7ty=U^u32M;qcdg$#~BuEVLxb8~IaxQB6AATaUzY zw(EEmTwqz>SFtiR@y+k2ZpyA=#LmyY=j{}1kcIo$AaZ5lQUY^6;h1=FUl)6OZP$fb zqAc;=5p;_Y{s9)p!fkd4VD@=^L-o@%GN+kRa&nuRjznsJfl1xypzlE(N{fEAt&c0F z5=^*>)>?cU3zmjR^}#I!GY&`s%)2ow52ZOyBFK_`C(gJoef+-aoJ%rK8a`hoL4os)4;SOgbY#oX%XzxBuZZ`%(jxI&%mLS-sSO)`=JEs3em7Lu%uhJq<75&1)lo)#@l%Ex)VDh;v{@b$!#+hamEH zbICY(c-Jm8TCX<7JVw0PMht9rZC&ixN)dS!IqNZZ-4;`IwZ!)MU+{O{ea>%(O}Zy^ zM#hfaf56KUdhqO#+N_thLdFpBE?yd|wzq@A2j9e^gBfeZ60O?1`-wW`{*x0``khb{ zE>=sj^Y#d}qPAk&y9X8|SH#Y{JTnk1J@;|Yke2dwQcjagHQuvYMVPul3jK94nB1SM zVM%e7p82zlzSpVJ@r}X}rE%*}oqFXlQ^gw?BUqr%nZaFSHrLTc|8_NoU8VG#-M?ED z8qxaBu6>U1m(#9h-GQgNpO^y7UsqM>7Y8F-`z6II)a!Q}(FCv+0hM5K__wpW@nGFl(Ra4454I>+4bcCPkN* zkh*|2?+ZAyGYz>YARd?l5a;a+J6`|e9e-y&Ry~@^Oo;r-{BJ+{w?oxU!Yl!lre0h0 zJV`kLfcG?cLU|I(;sAxsLkIPVI&V#->!a&SLIQip@fh9()>~Enj1jTjl9JoC94tL{ zg23DJ^6-=6-r4)8p46I;rTGL=~;A0LZgu5zTiFWAr=xRUImrh*BiJ0NrO)_iEkaVQg zZ`dLD&@eoZ1Wu5U_tKfti*7zcS{hX1+}&vUR(oS;;9YEDTswZAjVeb%M@Nb}HUGciw_g{Q)vv<1fn9ZrN5bXy0~qP|__j9fE^M27 zjURf2qc7hFh-<#%ThLsY(<}t*LWDPW@H9^ z`2Bgc`&%ta_aCvKhEXR!jf6A>)OqUUwrfWu!@~IE&WT*B(_ZHVBwnN09r0CGt&U0b z&MNrHfTh_&q(QhuZ;^{IhJU?h!_&#%7#vCi*LW2TO`RXFZk)Roko6yLadLKkO0bP^ zSOrc%*>5Owxn#Y?w+>DFRwLy)WAAi7)v9Z^j$Y(ES**3ZMM}89t{>!iAU-zG1|Ww? zE*92zK86YH%G*Fu(JV)!<04-1dQK9IFZG=Fr)LwZkNDcJ4|v`eXdVbmtk^b|p>q2i zcRiB{%a$Klwbz1Q>tr()f5tOR9*zsZhiu;{G--Bf?NnCGJ{nEMOZ-4W*Bw8y8La=k zc-l&MKn)v&ZMv)kW2rfs0#ePYEtFS9JZ8h?NU-|NK~tMjL118lNi?I1xS7Y!M(z0U zV*O{ZT0%M5J_s&C5&C%fhh8}e{8fGx4qx4E{yN2?hXKi=TVy%;V(s0@&_lV+mW$e& zz|A{GmlzuN0fWVovT|iK;`v3BL7he9vxd6N1V$B+h(<7ZbCi9Uq-!$uffoD0*Ye%X z^6geOz^%wb{zJ<5(;QDW)0Gxb~L4Ww<*}eL>>W`B3VU(=&fp{R9 zY&)c?dAosXH)ZBZq5>dYy#4GTjYY$0Lys8Wt+9jUy~eJk+#8JNO@;TOaEbRiUu4M7OL?<$V-{;=l#5n3Y`Gp(>Nab3Z{ADQIGZ{3oXryK+8Y@66o%_=B z-i%#sY{>&VCj*cM-9pnWR~B*Wdc3r=OY(%Gx$XJT&POAxcAe;hT{fkoymv(z?M{h^ z6Ebv*Nby-V8OnWh6CVyC40bpD_hugt=EDrZErenFm0n4D`r}jyY<=&3!RQWK=jd?G z3y77@V>7g5BdH31b)*;!7`7W=ql1hY6OZ~xA%y|;@&GqySPpkW3&Llk9&>XD7Ls3J zd^xk`Rgvsgk>idL1#lRP5}NSeQ61dX zPAT`2z>Pf`rBIKb8a`nxc!q%1d|7v45g?IB6tXPhS^m9HnwX-t_ImYaszv(hai39sF|4s4Dez~Jg%IAu66)Gczr1a(4+Dd)uo zy8*i|`JK=juI<;tjGd0VNhyBTo#^c502;w1;Rid#6(v|z0}>}cc#?8x&;*p8sUm#k-+KN=MonctUjf+VArNL-PM{y)Yh&NjkQ96EJXX6XCr`Fk>@{R+a1!*d zkCeg)5(*t|K42m?0NJfi+UH}nB%_3tUOVpZY%b!&&yQ7X#W(N-sNx>Zl)*dZgh71( zx}%n_L!mXGo^fZarb@jj%}3j??hbEXjU8A?O}}$(9@0TD z9LM#)gEtot-*{_FOB^1|mU_8nRi1Mgr&P3tW}k<{NOH0F?|yi6-nFo}M2gz(H^q%} zYEehuZfcwzTy3|Q7u)BIJ2VH)g#G8%|M7+uh^}kjb)f&Zy`KT>{VlxqxsMd{(*`~L zM^7nrju1lg60_|I!VipCj_hgaW(m#dZ~*a%C~*_)c1?G>z|V`4k;$>CXcxI+^R5Q; zY%7*D?^(Yx(zz{(00IgQI-%Ath!ExQOl2KxORX}5MI>KeC}-_2hvvBCIVGjEh&l&q zSQEI|tEt){Zylnmyb1&isz-UZ33(bP#cISGNm!dXC;8&MiI)ny0dIRN;Ma_N@JCdR zXyx7rju@hzk^^oNFt<6GmVEYth6+1>sAY1_RKM6I4Lx%2t59N%K8;r=EcngV^NI6Z zeZf-~CKZQaXPa3%xA_PZJ&ImBUP1i(6W+Fp;7jfu=;C9ur8#BIY45n2RL^AR$3TiH zifC}!eqfdm*nD6cT@UXkrY%~IH@V3gn=Y`ddB>sD(p~G$UdoF}jm)!T=*e5g&~?{n zpYy%X`1)hwoJ@vfN3G*+?VdxkS;iArWEZe!KHZ!o1e1wa)8bEA`74_hNDqrt6J!b5 zV|>Z5i?U94sH)81FB+SA3HDyy`My`@^%6a)%*4o~_A`*^ww_?2gYG`tIfNraP!U}; zwo)AfMGNEjOhP1Po-$!7NmvPa;T1i)&w6D4hTAkLq?iRCme8vA{p_m2d}p1ub_8GaT}XY z(8hC^3Ep9sFwdNPQ{(01#-^*&yJbJ|SUj%*;${#f8c-*S0Yfik{~ z&4;T!4L$cx6Z`xiD2I3XR&pF-i*{06sIPy=a&)m*VSJEm?CMdoYlX;w!BN*m2nmYMyCMSb2V^2QWZx%#gwUEO-2R4>_qdRmp+u{)}={^J;q9(Cl z67oXnXj2g5#M%?`S)%Cy3gfYQO+67yo+t`XK zJz9f_hvNk~h>MRmQg%NYym?0gSG9i1R(5rMv8x_$vAi#(hsKp&_BMe&q7L=C;%D8G zbbTbx+s!Q6d1i&It6~g@gLUdY)>4swOMIkwolqDr+AMtLR=-mH!Tdg87 zs>@P*c^<&n7yvV3pAll7s&NU?FYUUHFK-r0uTsA_`ii(!7yXj6&iC%9?wLRTVgl2( zyOSGoQM~yzM>q-m$*PmdMhDi~4d=$H_`O-j#@#Bk|48E{|D^F>iVpl>&iEJ)7G2y6v8f9p6? zw#u4wp+*RbIvK#`1s(l+~!K0>i%q;P8&?v+9-`8F^h zwxrQYURfY>UeDxRa>$A{uqtFE%T&cLX;>|K`F<*EGB)8*XyZmD5XLTm!7&9({mp=a z%-nRP(%4v-M7Qr<#j+eFvGMJuI2k5fz4B7NGJneu|A^IWTF7=O-UH#7=QWH z5(o5AF&lg~rdE}{BMw>(1ig&40U;LxGQqKM1q@K6=oG^u(m1%WXOe*0CowL?0S#aC z^z?8+7^hfc9gdGT|Bi3K8NbXXGdq%lpVeLe!b0~Og>aqPj#-@Y*AQ$xVYa6wHpx?7 zR*|HK#xan5Cqw;(CUkda@U`Jc zx~O5x^PjE6HDAwu+)bTuFcI<4-({k|K zq{PfR2#hP^&GB42K7O-9<)KS{cd9@35Mi*na1kBCUKcjt-fqyBFr}2qQR1~eSqdiR zP~!UaOay`2$3zlrzAP4#{_3U{Y-ic~f z=U!#wS&mY!;*Ub_+{KH3KFhrRl|5ux*rOzgk?Anmu9k*(e9*Yc=gxLcEh-ePIjmc& zOpiXs*a8bNO6KeAFxWS$I0{_R&o&<)$~hH7+K_%ywX?_Wxw+4=G|Gpyjtx&$(1>!t zXUg;1@=^&1c6*a3!0p3acv*Jp^GG(y%_6j}wc(~dJ_DB>;s?t@nl0mKAm}X8z^zNA zxFqm?e*g2j2dU?E@q*NH`_n1*xDHEtFO3LKHTesQT4f5ru337%8mT}c^|4JTzKmp< zBpk5Q4S5!&*URmdG^0E3R2$xpNv42N*BlX3uu`Tb){0h}?xZUKkVa-ceU*!m;UZxhZO*zQ{`BwcUty=+w3yQzH^X=+1jG&6tp z4(ZLfrl>c}I0yN7QeAsZsPSh7Q5$nmd|W~|)i>x?ueP?v=wUY%WoL)0CxNcG8n(V1 zGcuRi81a8?A`>>y)G54jX$jz`ti~EKPsoFI>e6M#9_BMknlQJQ7N$L-S1XNdL3xHw zun+goR`}*w?9R`qjf!b~oGjFk9~KiXJUyN-fgmzSu5M1l8V@uxbp>>Y)p&W{uag$6 z-Ur`s?LY#*>P{5;Hjms0Si0xXUQ zaOEBpnAvx}J;%Q>DErQ|of-hN0@bT)OX6TZX{ycWBMCkC{bx363g&OGUX@|6 z*3Xi2Jil;sp^4RZ9Lg9hN)Bo1pE6j?T`gLvvTC@Ri2QNlG8GdIsl{4|=BPes+U@Aq zgEkn2yH}?66h{dBe|)`lSd?4$KCaRtf>Kfv3MefS(ui~l(y7upbi)V|(hbtx-8C?T zNQ1Q00Mb2l49xr<&Uuf%-_Lok-#=cDUN}6n_u6Z(b+5JVTcz(3f4qRj&%Zuiuw6$+ zA;0y@`gXC`v2eimzMC*v=VrK~quQ3&d9 z=BTK6_SQ&8WB*v|3gsc)!CGdPP$z+tO z+SYX0v1E|6i44`H9`2rzPI-CIzGP_4rNt8POSUMl_0L>b3BH$#Iob)JWqm6>@c7An zDddOo$biYGpRHMUNa!pf9(pt+u&i^Om>X}5`NwS#;oiOr3pS?b!~a(@cEj%Af}Th^_V6uuDaAl=loQVGYnnZD7p+@pHLhBXS0u{a6Q7VM6u}Nr`f!Lq_9k}H>x5pZxS~15Mrj#uRWjr*5#yb;$-h_t&Q2zu8T&S z@$+vk{Jdk!8GP1u&DL^*rN$XgMvC}e`+M`Y@oTe+e;^mrDCfgCdaUoOGby!{rq)@v zVLB|7`iP@kb7)zPpj7BkIws7T^~+v(AVL|>Vu=+1a-WLd7p#!ynH?yNif=>)NG1wk zF-&Lu@QM?M^I&yAD9T*KeDD@Kj=ns(lbcdbFkgGYl7y2uhoe!5LKt9@z?e#6?@m5! z*BKS1O~`Yv^X|YQHhIDRJdvXK^Fh*v6^v8W({cYI4dvAUc#_PzK6ZFQr$pnk=&pz#Go$3L_c0>M{NY<$n?U&y-0n}>^9H|Y zR`daAY49D$hxO2TmIPh#?86HmoUQQ zB`VJx)%IOLPyDfES9ySc{qBb))|K-3<-O)JedQ4EEo9C8;biN&!kvcYx7fz`aW98H zX<{xFWQWI>*1=?5-ca7qdN*Fz&8{dk2&M>oHI-mmssJ)~{#Gp$>Q#t6kFT1;!_Y@l z3qH08o`8>0liSdei>dKrKidW+8$wUcJFwis?xnMIBk$@oHFX6Qx)x3BE`MFx~ zAs+V0si4z6=e*7-^gwH0hlfxS!z zvu&!SN-JT2;mnvl3TY|+ejd}K&I4Li8aEXZF;q`wbpVC@6{hFh*{keo5} zetg86i|eEAYSiA&%W*gE{QE35ufMHgm{>g6qej{OYQzpX-cF8x@I)^k^;vX>9ULG! zz-_%-ey4rb96-DP6cv9Y4PVDfnMnW)6)!?dOUhs7Xs05QmZDN4Ngr9m1z1_w!Pg!g z7-f4@cloh?*+tEdqNL5ApG5s3OYxmN!CC;O1C4&C0!X9q)L z56+ytMK}ne(HThdSSnlE^Rs6O)hT!hzzu|muwj#aa_>@2d@hR3c9Dqv1VQ{)fyB>ucJQpX=Pjya$0N$)IE-ODfod0gt ztiaCZodG96R>=uLeJye|EVXjj&;HU!H?t4WZG)x+Hhv@7`c*qIy7Y!1B3t=sYwhp} zD(@7mgbg!WD*eIs5U5v>0oi7T2s2dTxU49;Y_V!;?Gz~2(9!N?j7s9%U?Y8V|~WQAOC znvd_+Y?oD})cN>1oqW#OY|$D;_bF&v8h?v#X>?K!u{zqST0p9t3Tfh7TEt#}FVXgT z7r?CB>)HWl^7JfYaboY25Lj$zAs~=6fFwVye&4Dd7xol->YR=}iSPx1vbh>z5KsQS#GW6Eqs}=ts2Z-^a%2~kycI4fxIR(_(k&iz>BH8B$6_4Lu;z@>^u%z zC;lVP44&4^ZA3{8i)O}zgSamqD!`u?8+OGr<(XOp;vK?X+c(}xQf-{zsc>y*RyQb!Yq;En8h>YB_C1SImd4<57+>J%PkLBDF;8GPg(tgW~Vn2-*SE{if>~JPZJ4KYJxYh>Isiq+=KwWr zhW*B&_=P6oT%)Mzr2N+D%0vGwEM9N zG%AVsmHi>?t=Lmt!&+(3P%?+wdjYo;FL=3ldNQ%7=^WNNIv)CJgAhnX0XbexEftqK zK!BavJ3`Sm`+{k2)?>lzEjK+N>2p`SjM2QxaeER^Y&u(9@6)h^&e@z-1SEft`oVqS z6@rUZzICGA%WX<)Xx&T=TV^Q&nn%h4`Ore9O$cXG;Fc=9Bxq&lV)eYge2RQsR!*^I zK9{e9HuA=stae6yG+R;|uA^?JNz%7jF;I1>VQHtWp=ZkjJ|**OE+cHIs|8ydyb)CY zRto-ND(8O8rJSnm)IWd{<2?V=OO+hXod}jmu#kCemE5&2qNi-WY@sY?+y1`el3XcU zk=%*1ASQUr=*hO7xBP`u^ugL`y1~$tfjVj?KA>cX)JA@ciN?|o4zE_?U|`&ua(UK8Y#!iRYGnXd57J!nFS8XQ>YWo1(G*ZqZ=A z4V+(fUx_uMf5#QUpGAenWzITeze!TquzcpB9{<1?r|Ek14&JTnj$IV^!T-(P3$nhA z-mi&lhf+qZRHX~?4e?`({Z-&YPzwq`MT375?-`(GXqfz}33j1dWpp9}xg8WqQGiqW z6vxkcV2l{$KC<3}?h%}(k~e-jX>l5FZsM{Ikb9?=ooL6sTpl~0+`dMf+sMa{?Dcr! zR{hk;p6Oc$>lBIX()BNk3-V_R;RualQ&@*id74lzAv&oyk_=miWWeCoNS*_8fx{da zb-e<#nFM?qYwUQp+pngfhp{x{8c3i)+<3jl3yoK!+2KgMy9Qpw2ar2b1Ha?g@i&5Y zZAh#h$nbi*uL)`6WzvhPUWVjv*W1ESK%mBW;Oh&!Sq%drOg06q*&{E48oj$NR^<2j zH)#0I5};g}0qY_c{-mp+W8iS1#cw&J`nH)nXze(H2# zy=Jz#-lm-qSUw)34F>pdnuP!gXqB<*@85U&&=Ggkc9eqe-{Ih&xtxt%-fXx)oVe_h zrG6cnL7CLZ>(atdefgmDR`vJ<-J9?{-vs@DVDtN(BvS!%9Yl6+k zIe7-`8vWem9`V-z35(04ogzf}Hjwm|*-nV*;p)}}AlT=fhzpS;N>7Qk`gDNu2hH4P zf`_b6o7sX&d#*Jqxmh5}aFUXZ1Sxj^MFrMGi$|P9YzpbA$E$IgzJL1V`CkF%#D9Lr z{`|Lv{dxE?f?cqWe({ib-u1;`*ULVb+-Q=vrhq&DlspJ*t*vmU_Le`L~^Er}_JB+@EhK4qmR?ZJV z3s@lSeH!nK6c{cB>7~y0)(eJhP}4$88#WC^cW$8yUWvODP;JhJ&@gRGJkL`d3Gi$p z4riCKKx~N+LApNcNg4s|EO9_XicDPqH@DPNTwH4=*W~xLJae{aWW0NI>Z~h3UDco0 z_+l80eCK_=ZJ;w9^+c*qNr{jC`?~AW-LfZ=;h#J#)?o)0Ul!`9OML4~D4l;UtyMLX zBYmm8&(kZuVL#A+j54_1(l`V-`gN#DbzL)enulSW=A#bw0AajlQWMv8J6rS5{o%_{ zlC9+kk@)MgStZruGs1zh^W|{%z7vgbn?44G(1S)U-Ps0|rG>l9LTe4&B$;Xd7Y4|! zcO*N%oOubX%qFMt%_yK9A=TfoD7QX2g26S_+xlovCY9zzc$4$-*@n*X>NKja7dmzZ zrXil?Q?|pT<~UIjp$!|$mn*6npG$X!8Seiav_2|HtTOAM>V1p|KQmaJ)OiE1lY%sp zUD)4YA{PM>u|mA~p2z?0;CRLWBr3#X7WQm^HvV_R^pD%vb9n8u$)H!vLe95RD9dZf zy<9yhzB}B#jM0nXIA5M$X`4zo>AKPzn+9*__QlBVg~tg9<1fqLeBMyp42ebE)EawY zWr%f?*_aDRw!c$Q46+u-fcpS4o{B>#5Zbj#PZ8|Bq^Tj?}f?g{Ww{3L@Fe5$B zk*-q&^gf#ksA-eI@||AZ>GlFXBxWHr9d&&sLUWVw$5A-cI+z!gSzzJAZi{`pS2DCq zjk|uhj!FrdRjh9Uu1i3QaWy^}6s}iwBV1uis%w1F_=JRSea<1*W`vH6%Z$J~pEqNG zcUa`>o=X*SK@|m9fKI`p1O{l!`(;f*p2sZK+0>}eh3j@Riuzc4E{rFEidZR zkPiRrb@~HB8{?fxH_n$qQ<0M1OjQ6Q`YwO$Y z%rU0_WV?4HD59VfbyS|?UvEn`Lqsj)UK2{r-Pd=YieEL&>vWoD!jSe4khRf+{>*i| zr?|WF|Ed4~HE>g+imt8Ad3gLzsSi-AGyUir&VMn@O9__P0k_57m=RW8bxu{HW6+CqMaFr!~J^U4E!1wFRlhQI5bN3s}_(_D|M|11O zTEss64zb~*Y0)8w1*65{W?9vZ?ppxeR$3cy3~Po!r8sX&#PmcI2#KcEoZRVz7*#f z^Mi$RWA%>=f5Lr7+Z(U~jKYo3QD97@17hxv9>44_uU8U@v9TC*TbT9gn zMQXM*QXRfPFU&e*>*V=FxoZ9`W5`LjtoR`ME?sWR35W#t*pUR5vRGPA{c7)P6sbT% zZ?7HD|49s%<0_CF)hDReb6Sn#e9WdGCo8)GWXqAN{PPw_5ka`<1t36dT;6i}uoj-T z;e8NNy_%SxURkH_wrYI5y0v-)-Y%^-0>nGi_bfDBXT1@-Ml&@os{n&S9hXz3`_(~r zvxVE$0x%as#$)w0?j0@&(bh4`2R-)}1mqs$)wQ(D&y4ldb-cJ6*V(XPs)Y}R?~TxD zqKshe!eRMA(y&W*Yoy5%UWaJFBsyeq5LK}=pF!#;eiZ}PxMF)n8)b06bU#<3Ren5l z*Q?afTB_EIf=w-5S8iwF+A$9M0--nJ4l-B7Ve!s82v>613~q_@Y1?(^^*m^-VbLx* zw}Ng8%|!^8ZML3pAc5#j_AZQaYZW4l{AqYNlEP`3Q^7q~s-IQarGC-{0)WGEw*jyUn=%ljuY)XM$ zc#^yQyGkCVDjdtP?0W97^(&N=UuBY9rZpm)`!qe}%i712NS3%Os+7|TR8wc}W}(Ed zQOB*==cDM*$^+0#rM5W#8QQAXCb${SW}dQpLZ;0OyAsVB{T6Wdf-B@GBzx1Mm>Y+^d692Dx5pV9N4ODkOZylATk3Bw+?&cswmKAQJSwX&1_F2wFj*vf*-S7N< zhS29W8fFg=$XZDog2`z`&)JYG z`(AT96;>uf(y%8x3)tv_zsx9QI2eq3MTC8a*K2&w(wjcAK2FF}gqvU;Em}M~sx!EH zc<`}7{Ytr=dD`;>bIg}Jp7wJ!AY2?fhusYD<@UeavOCIN)@EYLOcqH2i+FfJh6odh1zfRt?bA-pEBvI8^va zv2)rqofXiza=kSWy?X&UlIqQl5H`U9KDv3=TETh2Q0c-GCb${?LJ+_%Og;?V#kdAU zL^clr!Aq?w?dn;Vbg#kG!Y1wsTYwI?H{*3Oycs%g^rrC;q@ ziN7>auAkjayxT*=)2oz@Z6m`M{7CW5DTF*uVgbqBb8QF~`gn&|b9`D_n%m(sb7bZEorW{t{NF1k zBV$QjCQ8naKBT8i`4N9Ps>w_VghyS+KyB{h*|4uz6DO<^+U-9>D79#v?58^~?=Mb0 ze@E+TX>~eNY?d1><1cn!ZczDKqf;$2n_avToIOG?GqQNq1!GUT=iqLlWBQY)7iE{w zALt-A;QoJatEMA00_%F5c0TZuL4Irp5Iv?6;~VcpFNbU~CEiNNo0!mB*)(PNUal~U z9J#{9fe8nCK+x|0G>B&@l=3LpI zGBN1#2Q9_UVL;SYGL(|6ymB&4@WSol!d#@A;6!G{7nj{{(V7|nw%LE|-&WDkU`z%H zO9S;B{^zW$5($@YYO{EFoqURxVhgPMt3EVVYULR$KI>io<|00Gbh&=DdT(w2Vph;L zsM^yPi+IqW^ynm0?%nLei-fhrm*U#mZ3F_+XJ~gfn!BIK^RTMF@%QV~d{e?ChKG0bOwb#oT|s|8(I ze-7>syPI(fyQ%Oee;n^Wa~GPu*g$6`ZqBAd;XhmeplZ|U5`ilJ`Z%lUS9%X=d_bSt zh#LM%zi}C^Dnf8FRHDw?Llkv~5*&lYV0h;3(HCKU!z3;^Ol=nI*9O=?;+?yBGeZT4 zCs}aUUL39WQ-C0}NztgFtF~pY-eYN-r=N zGt17*90LH@!|2{jkD2QJ!lLoS8NAGwSYei-Hy4qp6b-zOxx6P_VDDL2SeX6AYC`v3 zr$EO~KFL2Z?RgOp(;|viG$a1Ufl}x2`B(|B^R28D02Y&u=Dlxyo-{nqB+e5q#zM$J z`{H4Sc@-vihLIRebF-?01!-<`vRu9I7x&L{lecDGZp&X15LFAN=Pd_qc_myIV-K*@ zc74`y7Wa4W48Z$5JDV91naM|VAG=~|BUV#9K zJ~2>5Yp&kM`MJT9eM0`N%k2he(6z=`F{W>Q>tl-lTn|*A+CX50&c#HzxABvCxAoLj zGEIBq-^m}1&qqdJj=r*-V_oY14#_@!%Y}Z4zrkK@I#_q{qeEweg_%+8&eI>5cYu~; zGGAW8XVdghmG*B9Z*9u>X;rZzrBAjPm?I7P%o}T>G9+2zgDL8zZRY0$*-H)!Ut2D` zN0FklDR?PeoH;g$U!Lwh+3vhELyJXy57#QW+m}1_CpGGvv2nL<)@WjHezlS@?XALB z|M%bQf6@jf)s9@BEg0M+@ZIz^neq&VBvY!cye@ll&y;eC4uiwZ`-+R`XYcN~xg9y^>Bm=gFmG zE!LKKXN0x=RH{o~3ZD!#seUAYqEG4lfeptuCpPrz3(Sk=AaT8wd3zTr#2yqtlMti1 z=CHemQ8$(~!+X1Sk{?h9qF9NfePcA5BeUz#MoIO@wR@u77$PQ370w^y{JjmD5704z zuJf0sLp5bKEhp;L1J!hw#?&{C04j_lg~PUsFy& ztr1X0bdc9GSKL#&?3)++fyD9it2m`M0$bU}Qq9q}4iCI1|Li^+Cej^GM zAF)Fpy->077pOlxv`^%BD$;7vdLdLzdb2F&HaPN$oN7tQ6o$8xElTY}9j4)sl)ia2 z*Ic@MaqZmA%P(AnL-ecF($!f>Vc=vY7Ivz5X$gDUoRuw~$9it~vGm z>Ak<-naWS}nQOLx{rxI4%HN4n+Y|#3W=%=3=XvKM=Zl~1m;6b!lLM)ozutIA6@BFoEnM|n{lw5_vGJnhfKGf7-63Iw zRS5Xqb@TVE)XL~`umT=B$kwC(?-l=HhplVBnQM=9Tc7^)+;#ia_V=jhzcPBjg?b7B zX`h#ncZtHk&i?QHg0m9ZvMD5ISijTAC8v=NDXns|(|)QMEMfc1|EYsD`P32GiSf0= zw#N$D#EMN)2ug|x5y9tOeKmo%dC*Nw-MqUu*C@*~ZA55pVHN3;rx4TB#IKW~rmiKi z*Sc<_m8-*BhN`bYd7S#mjR||{plH4VPUgnGY;aaIT`Blg8H5m4%~Z@-l7C)ufe1h? zTc1Z;1^#1m|C;-iUeuul{J9B`(TQ>6F&K6N^!6m(+zYrf09Hi+-@xl={H5F)G+pxv zq>Q2G8hn+)P--TRhB)JV)BS`t7Lk$=-kp13pxOME4SMBrIPh{<+R!lDlA&P_Xz8$@ z)H0O?1X819kqca4JUosKj0(Il}udI331WkB* zpn4^kxqRc*=XL4-`X*WCzt*W4r$T$T)pQO8`1NR^Gi3iL;c!q+0dS*>lRyCl% z@ETp0-ZQZ~-GBNyKvF9T`evysvPq8r9J#GE_U`g6d~GsLX z-M{(Ti_J9f?-b>7@801yshgAgYLRtHbV(F72R~F>B#}tv<`8_<{872dq{%|2sg{^~ zliV3!TfNKvnRyeN%gA^E2LOcqngw%n3mF0PQ_hH#zh3wE9q{*qSw3)0Smxt)eu(<# zl>UCVNKxT`GC3Bvou8GQp6Bo@I!}gwBF6voQUCd?PZr>`bd=fI8UM!(FMngGtOSs- zjK$Kg@d*yJ|L3!O%EjLUdc`*;1LzpOX;tx3r~CaQKH-u#5JBBXO7?%PWSgv9h6oE} zFb@b;ov-=q{;!GjFv2@lNR4`a(2kCd(gERRR0_boe<5)$|L2rT+#nEHIx31^{&mVT zG;!{2EEt#!rdf{xUizb+@zB3g-x`P8-{C)HnYB&ikL#Fffrt`gb*?9W0F zF#XG`dwRt)iP_k@zYv@%)#9u{L5&X6$KB(8xH`;4jAy}blOr?zD?N~ObZ7HjS_j; zEmQrcVsjURzgaOcKfhA?%>1N1CePBsarjsGA(Ag-J=U03;fYLqoSgQlwdHM%*)mrn z6b`*q_ffA8js<3aL(@Yob6ixgeUx?G^A~%N|GWSYjsJlE!ac7}Xn&i%9|3udfTodHx7vDY ztMolk&{ob02lraE#Rphgck`Z#OdXCzPlHhQ1^w6?2$c7K?H2)XK2tY>w@@E7qPYqBeS`468b zC*;zf)Cw6$QG9<*n5KuHdA@K~xauX?SPfR1td{>8Xt^Zk#f@A|#)}^E*e{lAd;1NY z&1Z4flif92Zj4UfTrupQ?WMUPx03$+uT%54{X7!|=o02`+iA8@&jy$`+NInU*tV7) zDvStZDQVnXGKqdrNBUhaneT+P&?#{aHp0b}c=8GekkqC7d!a>480|U|!urDhF?rEu z`V3#*UZc4)$>YWc_$28BLqA#kOfB5hI}<$BS4^7AA0omlgUfJQv>h&Q`#KWZZJymn z)bB@r9liU@0H_M0f(R9e+9^Y0;PYh>O&l0 z2*TU_Fy-fp?cR$M_^Ss=T8%%$%vG2}8x5D9(XZ38)YiO0L|FHK_4o-&1CwIIhH@6I z%_$-`|90lPk!_>|klgo6gJ5-Fa<$BMF!#c-r5Rcn6kGbXCAT(eR&i8AQ#jPpjhagj z4dJ3bA75)DXIOCcFr1FK2A(G!EFAjyS_kOi)8HA-d=uDLJuIwq?68LZ=Z^d2%e(j6 z-~HFa1`YbwHpNPs$9{Ym?~EoU9{KodNj=I=N|Bp^Wy>IZg5{Xyat!iAdZ$ zJQpF4qBJ#o`r!R$Oh5%*_0!@7k`GO_qC2cJiJG}a9&r`H_K zi?BlkGN)UmIw;dsJU8nsBor^p^lV%pTBGJ_j4 zEwXWEwSF+&w;s~cEA`jM`#3ATN3IgI02CpZsNIY+%GxC1C$1hgANW8b>QGHCO})8m z(om?S{-Y^Vyw9{Cu0kaDM~MiA~|8 z?bWM9Jcd<#)6Y4+BUkpPDd~?+e&Gkj?1)MAmL=!Nx7#d#`|F>3kjrn}FxC&=!byPc z?!PUXAKT}`)|@Fy?%j1rd+FyXDsgu^b{NhD^dHt&?c_k znzL5#P1pYi?*UdFIPW7Y^f&qS@5uY_hqpUG68?w=NW!bkVVuq-p^t#IevE~%=#(L#*R)PRD|hi9zZT9nRdSmK~SC5O66rHH^+owJPobR{?)hw zd+yr5+Rpg*)|@IW;sT>)QHz6KWDVsw*I#~o4SsU_N( zz3=&%@{E#dpJYH@#yD46%Uo3^WDTn{KT{NzCGjff^x~OH1uob#Y~V1M2SK3GuMz!PsXU}YST{UbZxCGOfjF6YfNox55gVjVsq*4EvSji zp#cM`Y(g(L&vX#rwcpzH|3nBemY*}(gI1!lp+80lVyMLx-S2`K6>8%L#O3k?T%uLY z$%KXBtiG7aEEaFmA9QueY#z4lVhnd1zVcN@JLIF zeAM;_)q{5xJv7}l-BED><(Z?EMEpzRKGlo!Vz2&I1xgQ9}X=eTo8nPV-dtynW4MFQX+V3{aRw0)7#IFiIFN2|whd zyUj+wEP0Mk8_i%88rPodvR{*8E7mA9l#&=_w@hy5S}gv#@w{V1Xy;|9<*D;*Tpuv^ ztl!h%=qU8$MfTD1hVzgn#gggtKx{3WVZ)v1n` zNH%rr_P7MOItkS0;M}uvKJpsYmI5>OU~Sg3mBY@eGKs4|d|(FZ0rAOo<9b@>8B+0- zx;DiH=5|BPKzicI$MyJfPXzfv$Gge#QBP9g{l;tyCrOs%tJQ7<3mDegxX9^+Y$QNEw_DHKd%Wphkrcgf zC0UyH)R(u~-S@K*V{Ao9ie2|0UH`8Sz9eVE$TVJ*&vtCji|#h2dmVw)CaZbL_7cwh zV_^Q$taf`%+Nx!P#ub2qU71zYwTe=NM(AQ#{Qi@rR)cXYg+QKKZXX@6W%acSRW2^2%pc-iw6e+IVp z%!4%-^*2)k_ns0900cg+*f5jD>zL?0eK-%PZ@msOo>x(0s(yQa#{ALQ=N^Ur-G%iy zyhqOf)``)g8)h?-uogaV{JOQ89i$qIrq@-F%4nySatgQ$L_b@yU`&1&*w;Rh#;m89 z`CzQsQ4tJ~Y{hx!#t1Y{IosQqP;F`UTM%Igcr=CfpQx%$RtZRp;=FMQ{t5X1?5e2L z&1RY{S$CDqjOr%Myv`P}9-vSG>hZchd&PN1v!x#rSu`r2yB%UcGj(StT-7I(jtGzKZMrxvuSn8;`%;>hR^*=Rh~aoZqVa3IR#Cn1`1(=Tr8#Z-N)F5A;vX?E;F|D1xGQ1Nhgf zhBaOr0$hG4UL_R8nrG=+uG_OyCcSdqj2UbSAMQ-RQjn#j`v$YUHsLk~%^G=m8`bej zV(PL@I5y?W*R5vG_A|vcs~S#pMkR`vhk!bBSzjc2$Vu11NRup%>8>^do{Q z=Z0gaj%0yPpPbh99d8&P3CzX`poBWmI7|aFA@<9)!_E;?6x*5c-IM*JKFoWc7I&Xf zNCA{CLq#bbq+99t@vJvR)bv=@5RYkcuP?QzS^$fwx^(f684<9s-iP{T$?dUOVtZhV&?d-aQSXp4L(Zz;F{=5A*^l7!=Y zC=i|&gSjiJ@y-ji%28BjfzNm!s6do(@mMSY1*w@_^B=m7qE{1$`XO7gR|LNGhQLfG zzbx-#1I7J|>vE`mPzlsq+x=L&{qQY+T5`EVZx`NZwB7Fc*@5&0fOHD?C$?hnrGIHuE@7a)Ob2$nJbsTc6hm6E(i6#o;ffJu{48q zBtOoZQ8uRRP0r87>Q1{@jUM}z^HJ5r+?Q7%H+)FS%ORKEcC)rf+R5oItWst4M`WDa zQB{@e1KFP+isHrL#B=XlwaGPI9enE>%qWAHFox~8f^#ynwAsv5yvyQ%JqGdSpHJ`-WnhmNxb(sMH3og{|l(ctKovw&x#Ksn!}#Rpqe&n;3UgP zMLJ;25(9Mlu8n+J={fkR_bvp`!$R1f?hs~s#IAMWE~V94w6Y4GCy{?ZjWqwLo@mBe zNxU#M_@3tV(J^AQXFwFP4(9DO|hSZ(qV35H3)zanS{O+lAyk z?Jy*59>O!tXz*cL@%oJ85j!5xL5YqFs)teXK0bUl4qm6;p(CEPp-vc%VEH6BCciVv zMOhqgMS)^Z7P-mq*oW5T*jrSG1oj1!DKS7@jo(v<|2glXmcYeaYtljV=c@i4rkN$6 zA7{WXzzXrV(JuRwEX$_Zx;0BaThO~Qb0`bh9tWmkRI&E^d3680S7TAque%ioQ5H>Ge-_VXNi8bi6(Z<8--C-Ytp?P@?j0 zO|i2AlU8i666)aXSXvje3*^7-N?NtGPiLCt-Otq9Q<<};7+iHGUI-q)-Fw6ZT5Nj= zSPvfCL~dbvfjV}_VtX#98NvPUQPk!lIUZ-RZ6Qe*#E?z5gQ+DD9&0XGVegJck!flo z*1Xg3_FWndW55}N5kMqDQlP4tk(~iC+0qWVyTNiPtAtlW2NVOu5oaF9U#n4`N$LCu zmyS@)yM%Al#lqwD?0_Quor`Acam7=E;Usd+(Vgvjo_(s68zdkxm-`BKd}1!re7*v^2Oy*PVKig*3i7n!TqXT}GeC=NNB zr2K0a@~Rks-R)cOB+NdBYdAFodRvYZV%}cmeVwxv*-20A)mGzqoH-ue+|>e&G63pp zqi$zHxkh-NQtO^=Trx+2)Y9|WsG1jkN9+JGDpPmv<{%G4YBnZoGWFFJGp%#+Psf+B zBQ812I#seR2h<$E;4Kh<8w8@NE~o62;qg%Zt_x29>k@@KwM7>nh1srH)C&z>X@_coJM$L^fQ`qguVNMiiryTXAOeEIP#8`dO(22Y zg%I(ZjCwY34N9^>oiLHZW^|)YJoRUqvG*mt9~bWN|-tXlmYVb&44nL04(Dm*-uvqiMgSJ(5d zNT6aK;$lv&AZ+aukBox|S z2-=)?`t2CQ@`GLi?#G^%d&)xyTUi_ ziKAF0s2ZFs&mr$I8ImV)gebezSQ;=*AB<@vNKkFB&D5qT-5Kul|P_5P6?X zA^UrcZr9|jbiSTTy}K56LUMk~lR?*X6AMylbLefA%2oCF`~(S?(3rI|ShXoJL`|Fo zrV5|rGHhyzFigmESnKJi1XowBQdrTbVNpIsqU8eolmJzIYP7Xq!()0`3wP-$LhsPa zJv4@9qaZHGWt9=hKtl9mZk5Ujp0@*y_>YKNSg-oIqf3jcFG#E4Btr|B1bSTaEg^co zLONVa3r>&FL6&?6>33o1Brq;dHKaOU6VaAI>6R1BW1-^FvV=4Z5oGs26%)D?`h4*} zs8l21fPUjg|1X|kR*w!$sG%Q>pii4EhZzIahWc4MlI1pS9N4kyXu31onP1GZQZae0 znlzlm+2MT2xT+mfG01sXNa651#oniJ7bvf8s7*_4KX|9o#O*+W@&1h4Iw#Oky6FP6 z(}ES?@p!sP{Oz+0$+3O-U`-3GUo&g7Ak!6_;~4V;sR}x&$69RLrR(=YL@u5(*UwKr ztF4u3z57ctwBQp$iMJ@hz$QxSu}>}uI`Jx=z;|5O`=#AHNsS&Q6{Rn4UefoRXqCOU zmH2Mgt^dRtuS$J^|ab?yei{SjJc92Z#Dk+u(Tdo%9QfRL+rvO0Ql|8i2hP zJ`KmOr-Sv&5J%}Fp0eKH3AIsNo8vi~2|DX-krd^(PaYg}wKVc1oT%KLwXj6-2Z|Wp zCogMt4=ri3h@h0;Z$*@aQt&FKxnG)_tNL3KOlo@J@m+q+K2YS7W@75oYk4K|b&&Hs z(D1&6=kgKQyK3l&-vf1p1lnIMG@0?3i@@xfM}z`rzV*$&{f(6&wBa-G??$E ztp%bZ;0`d)$(=?gDrYL=?-$xE_1M*z(!^d2x`UZ7scfByEl zj?zL5of8U}1%`RP{5gAvG~46#ab4~zyW19yx$6b}HUq$k{G(%57aL}Ck*w+oBD@hQ zc+`-rMu_g@gg+O!PwGUx6`o@CXunMY-`LIwU>xyUM5doSNOD{Lc2Wehj=NCuf^zyc8CdFP|)TTwL9 z>~tCL(RNO7NRl3*-^LyFm=QP|8rZYKexw~ee?5FQmukNaG9mT!5Uii_0%8iC8H)#| zwt3~iaE-=euVZB$>$L$bl}3Ads%Ww(jjbQof%;A!XBu_+bA+d?t_PX}3&$cLecSuh zCPU+VsyO$&fi^5otDhV$@3FweC0e1;(a}$Zg@uQQz%Yngs|WWxG;^mkT9>|5gUDCM z-(H-8rpi)xCI?iiO$P7!4`w3!%@>u_?!d%$JI{Nl;U+?6$N2}|n$<1#&<#HoIGVfxR2GJiRxK}_~lk;wa5D8Z_{^byD#^q3Z6v~Ue zc@0|ZAU6d|ad=^Ok!zHWWleSTv8pGxl3-eo?I40h$?mM65Y#8wU&3mmgmN9yC%TO!u> z)9DqiIip%o)tE8Jlc@z@{g!*uo>jlObsL>P6!=5;_8pij(O-}M^#?Yg4|&puj|%ox zRHZmH8$T-zzlI841@f7H3}!JP8zB01eZGNO8WC_=v>GJdH|<9&cQ?Jd4PtQK?)C9# zk-L0+wK-ZtlprF>r26ImW9-etq1^xf@sl+nbyPwjg=9Cj$(|C~3Xxq|$2Rtzp+!f9 z>}G~kw(QHuWG7`CGxl{D6vjR>_GRXG`<$cm{=7fe_qu-nxR~p5-*dn2=lXa)pO0s+ z!+E=G%j!_WdQFx5z$cz`ln8VyV!HSPa$2lVKrbwV&YzKOR48P7r|nXfS=^Is3wa?8 ze6Aj+^po3?w%8<=E%Eg-hSqA4XB|`OV?zxr`8k|~F-GY+2j?hs&zt)mZxSwR%p0uC z8P6Z+*-!-ZG6z_o6kXq{_$HmL18N~GMTRwEt`nCapd;JfFRDirZ_8uLhye}u(q*bb zyMwl$jz1OX3Nlj9WZG|Hz&Oo=<*jcS8XD!eriwoaSCGT!*BD!4Qi^42r?qRitW`$e zbB60m_5o8xk4uq!GiMP@#e`i!jd*fhJwW2J-hMT1WCa=ADc3)w7y5J%L`}xC*0}xDxvF^y zy^AEaQV&waO!ZS`id{&TC8j0H{O&(JEJDC9ty$t1z?m{6gs?qL?=2NrZpl0ONewf1 zMo~z?38*7;<${THn_#dCmFfI78@O~$movDdv^lvPakdY?<=ljCkZ3GB|)6Wg7f#tk+PPMhuhB1$6%BsIo zf(y4Gt3B5{%DsE{IF!4~K`@CZ~V%i5I47l0#oYK|18r%05gdfZbE{(l;x1y zXTT%^Q5b`qCk!{OY!=*P1-nBkoBMKfWZ$pLg=`%J6ESNXQLoLu4ybU<73t}m%gT)O z0(y}=ElLQ$1e{1|9oLQ$lErF?^2n)lu;_sit(xr8W4Zl+&fTZA2j{~M@vT@{MF{Z_ zu-8kInbYobqO4=LtYhcXd6rQS7eYp?V4RB$~vF6KG`g?ng>@E{`O zi7j)w&HD%N0Mw|O4f)qE6{oEti%!aef_?LL75`wdHSEm3ot&V(c0WtGx__0IMf29# zJWj$XV0wH;9?sA9iz7{$H|%;y zq<0xi_$aSmtXJxNF^2$eV1J2n$QSBg-u_Xb1QSS3LLg zvmoR`pWD{R%H&duB8e>!KPL_emZ4bJ&M6mCm;yo4ZhuSgk-)|S{UR3E2oL9;AItUM zVtgi^#y${Jk6*Ou8xYNNSdW2YJ6`=PFnjkSLOP^;VD z2kpK|$BIJ6D)ZUD%neSW4eZHtETfgeR`-(HooJ`KWVzS2;0%nASQ4F=bxF1o zFx-a{r9VR^%=%>R&=zzNyWRGDM~K}M!zdiF&vLMKMbi-8olu_`8Jt@;dYW>3hjuiI zg-0|7Dfd}+gBl;KMn#YJ=|6jHdT*Nlj(zXfIN8`1QIXKVLq<^Vs0WRN|MJbtAVZYH zU?WrZn#AM9&{Gw|jr|Q-3ma$lxDeBNv;^OvKAGZyFAuKP&Nzy(^23#aDongp^5KUZ z;^x=G_BP662qC0;ctrxweCFttS~B|3;#y)aF7%}Xlmc&%x+MfP?{zFH4f(#e)Q~Dm zDtp(cri_*fG1XXs4K6=4P@+5+wP@(NQ1BotO6k`(cJHx;Jp9jR6VzwBOV3DM&EuIZ zffP(~zkpt$37MfYB#n6oR7aot5$4f0ACP@GLZ=@U&fg_Vejez}A__oU^)31OLPxe4TU~lZn{I8q}5FHv8B_TXXQWSgcNbh)y)L zpFJf6Lcq=u*b*o{ANI`-1{NN!6DCdpkwsHNt_S?qiznGOjkf;fHsRWd-(UC7lr}zv zU~x(y6Z1+>n!cx;geNjnVkYAC158OFuD4zlndgw(Ij+VjFIMIi%DeR3dzGg4ML**d zF#n+6gU4CbxGm_^T*|MlaCvcRcLt}J!2+coBwmqdykyxYM}vM77CHVU>y^ z@6&L%=El9x|ufKbHGE9h> zL%b3LD>46k@5aM|YkuANh3Yw%?RP62q+yg$VXGQn+kCx#S5+%b83BPiV^!|1`|xZ` z6a|>3tOe+qKS(L{5o!WAeSkQ@DCVal@;Sq)kr))26 z-`7}}ghhzWZOfaj5e)M(VU#bQMwKhyU$^1Cb{d`g{1%#C@`OLy zB27xaJqKrR)wKo?1+`xKnQf1bXF;^=?7} zIw?2b^MZO+hl*2wvA1F*JnGqH{%Y-7sSDnm0md9XiE{*@m1TMC)R;P`em3rPG7aLa zXWQ0gX~(XM;KMf{nt*;UIU}X;?nb7-Ld_h##F=U(2`9iX~nrwf5P&m zjIeDp8K-3?qq_kc)Mck;F;bH33*CtP>Q8rWN!R6IE?{pEpYu6sHQaiUb6Y}aZE)aT zZv?JBGfWUdJ%He4iKiAp)-!wD*pf5>z3uSL7b}%o&om9!5*W4)#M#%XZuTeS?m2xe z;p}(gv;5_MS!TW%A%-k>&2!`3M2NfBSj5>~gS|LqcraA5Wsa!LhIsO<`mWrTNduz8 zWCfyxq`!85n4@-oPlUXacK_5tjOF~?2wasTeW>0vBgOyHWCQA(%OB;Vx=lz5y`~NW zhRf$!q7{|8n8^Z7x%tCJWpDoKA)8(LA7QBF9b48Br{Bp4zg0v8TC1_8i|wE6c3 z#v+DmcOzU;wTW^V5G9`Rsrd=K3L_EM{|8H=RVQ|Bs~T`@wK2$<)F>dL+IDS(;DocFNJ2P4t*xo?m~h|5KHcCJu5;)Agvi_Q>*$(zxnHUwQxK@ZH00+op{C z$8+BP8IP)eY34;v)ZUId?ZZEJ3seVb!Y|=2>1Mn=zo)BFGfKvlknL(;PiL?(1^T4Q zY?f3H-r|0sM}Ah}w3yuCLH+Kh-M_z2MosdIxhR`Fpt30i_~!(r{be7nIB(k~6eQcZmwz2tV$uQ0 z%b3#}#=%x=eH_-_H@|#`|04s*un{x~Tfw8z7zCoo!9 z_?P|mF36$&#O1C@8E2B&R4dr869^>bJ^Q=j#p>v*oSTqo*Y`Bs=DdE%!L+%%bJ;R> z>7vqyziyR#Wp?ziKshTM{$i*br9oH~2eS$f&0WBU?x|ASt9na=tmp}^Wgs``CFggS0W z$O`Olpomxuj_Kz$hn2CWa(OC^(@;D=R(GltXF%(QW`&t7IcY_5)m(Ey`fr5-ikuIl zT($t|B4jf7CNV-aw{eQZIti!qwwm6~)Tk`SH$c{*bR- zr;pX~{t;Th@*hCK5rlB&Bs=i2H%XHo$h29S_k$i71U7m*dWm@om)V`F_S3*Ynk=Sm zn=GPQ<5@%d=$^xG@jIoTEmRlKKLbZya=tf(5H`&BR#_OYj@VW#4c&N95V{@>=w^N^ zkYu_%9gx0uZOXlJ0W-Qd+$~{hy>MXbhSNn<+L!>d9r&@&B78y_GxnC!kpa+#Y8(I6 z9_y|oUlAigP1HAlZRQ^C*YIREL^3+|;p>5d3$wk0$HGV zUKFw@vzElYHg}GB2t-B;&?x3U4^f^;Hv(LiuqR{s<(pAhWe512n{82qGHK8A) zgF(oKQCq$VY>yVLgj!1!xTaYrH!T3Kcjg&NCI`%|1l^+SEkPlpA9I#RYul_vjK7qH z3zj75$oK#_c!togUxGeqqo)bfS~7tZ@Ci?73Evnb;Ji6lliR84?xPhstSNg-q(%oy z2x-*Ked}XGS`if5sH_trg*uy`2X8)5_ugC@MxU^ym-(5-^mZTMe-yAv-3I*(A!dLL zZ$B&VIxsEXdkBi3_+c$_MGqm9a?@{7tJ-_kt!V@aZGeE@!QEU0m(n>?M{lLbWXuAm z{a){n_o$?NF~>G&MFad-y7B(C7$vEkaoZa!lgvDz9A#>0BgGsbtro|tbtDMLxLPSn z!CKwNzw~k)0>lhk=9m<*?8#?r5LbRhf4AXXxpHEmaS6YmV)|%jlDHiT>$ehIyD{&T znnAq7VI|sPbIIfGGzqr$_KGwx5fvR1lT6QiVWcbM3fUJl3isE$|AAxYks4^;YI6A| znB0Z>W?v1`7hHM|Tuu0DKQMguPqY5D$J&`^WMGXOX${U z9?nlPC$9QM;h^Nu6tol@1#(0 zr;hzgdz1CdIMiGcQ;LjiM&E~FY!E6t-_dI+sL|*Bq`C!z(9Qilb2X6gh5Bj1kV}7x z<~r%V_Bt=3UA}esj%rd>7vT=G1BsY9=KA3TlwGz3@3LQS)yEu&e-ETcc5cdK!=0yl zhMyK3B7a)-`$3GXyvN>D&tu)Mm6*7Ph^=HcIt1VWyZidsl6v{xZ9z{IQbd*FFTW-2V5QzC!|*KyZqWQW0AqAePMsE#;Ar?;v#T z%e81h;ZRtZ8Czc}81zqq#_~$6$VNnpIne>oA1?0g2i1GQs`q(9Wz4_okk1;9Tv8Bo z(T#Bo6tPG4OunAgX8qw^by3(xT(f3!mhLs&NA)mCTy?1;_k~}6f9Jy|GwC(ua@_G2 z>O&=Z!?v-;W{oNn40W=;sWKUoSAcY7q2^px;&-e)yA-H)rAi^+@H>+mKF4gVt1mZX z%Ta5zVmG_iF~Y}`b71)nzYQ#--~=BhmlFF`4(l}4x0i9Ec6(o$&7pB{n>PamoL5&A z>4;@+aQ!}y)$W?T3oL5hIJledB&>9{PD@aXWO;U>FDJsdS4|bAyg6VEdwMQJd}Frp z(4FJTcB^Z1zC~r=n~mzm_W=ppmoAh6_^#|<{q=X7J#UbG;dx(cgD7E>d@IkgBybu$ zbyF%9xI?z8U&Z3!V4LoJUu_$b&%8-5zhiaVbN=TH$6NqDevr=BvY$HXg3gP(si2!{ z993oha!FAsOy1*zjm*y%tI{W*s<9 zU#sddu27qlrz|Nk_Ujtb6o*mY?s~G3uXCgh@n*x;u8@fmrh9_I=Wj_2HA{3A`#gAlq`+ z8)s@cHCp*-RSDbjI5$sXZ;kkkY@^?%(}cwEo`6~~3XG9h$xP*O35r5gBgc~Gbos&E zA1_p7ilV*W#}21eIW)lRHhg$b2KINuSNg5{6{@^va{`AI$E|_j&Y`hA{7@+O{uS;nxnM+bIvYJ0L90uVlki4s1{xjBgzKBW3Di&cso@}vzv~BQJn2pb{?z`T zIN(2i@afV8Pr@3NwwFox+qnmm*i7KXYYRkL89bzUUE+hXt<$A;9m zf69a8H*?e1CV9VMz@|mW3%&1TsAKh|b+2sL75m~k{M4}ghdNjP*0%GS*<&H8#1*V~ z*xtGdBwGhz4KxkO+)0(uLk(*HVRx0RJiv}A6X`y&D#};x@e!RFey_hsN8i7gjKd0< zT3zO77j)vrY&>~7;n<}WpDa=-5zzkG<-1FiJh5#?_d8qg4t5wKO|t4QMZ;S!Rg0s~ z_t>gROu1*W1}bvFs0S+s)YcZa)t!#DInSA)!o+F4)CE?zVA%K{d?cf@2fE(J;xRuvBkM{v(muBOLw zWW6c23m{B1g0#dYqp+whAClVP;lJdLW@vL{C_OCIrdXL1#_zpMxsohH?!}`ftK1P7 zj-lEn2KNlluT1{YeKcP5sa)pR)7^lzuOTlxob(om^E*z49+oF3g$nOW1R70 zZ?S8V&OONNd)H=Es=Gj%V6&X%x2LO=R)vXr-Iwx+jYW=>LX%<_E$F4^rA4R6A}D^3cQJDSZu zbK~TCdm+p0N1d2ns>;L%oy-d^7rE9_0IJ)tWe{UsO!;7)*H}{(-h<8ljn3|@(5UMic zNJJ3rfED{%$|P$i{-*s~duPdw-W{a+4nqDVZf*-ON{oMwl9-~SrQfS^68QJUL5lyV zWVlZO&~n-WJlm zwnP3HGRA4p9tr&`n84KVE5j#1FPXnVK(BxETcULn(jqso{9^T1jRMfjD%6f~{Z5y9 zc;JJm+qQmXC0*(AkXXYS7~+sQP|IgRYXcNY0Yk>fbNv(i^%MJKoa<9u_ksB0!5eqY ztKJ;~yRv5lcCyw`-K+g9I>CC(DXLd8Eqxw_*Cx4yi&fbCoIT~dE=O+I+V+JPV$wV& z7Ax(z`%}$jWv7Z;rs?a#4!jB&7I&Ve>n4`K@Ix+M1t8Nz)^0kcF|6269{S0RgAWIw zZq-Mc+j-9SBkHNR#KoAVZ-T8OCqK|iFz_&jP$&M759zD@_w<$N63@c097>uu=!HN+qY-t2}o+L z9<}qKDcsG8pH20kY}~hBk6@azpou(*gAK1{tmB~_Pb}LE()g&(5zzpig3n2n8>sIQ z^>aL(?0ed5moyIeP^oZe>W*cNeg44)*&yLbYUXD>m%eO;poQ-ov*YCMeiJ+UWp2CK zoU;<6ub(j}7f)(@uh@{sgst|m=n)5sMSucK$_m%oP`0+61u1*%v%`;UZU0GRBPTih z@K)V=fr#I3e}>#X;k874wv%7~t}1yPB>k&6T5bt{uuER~(nSw=;(F7EH!w@3aq*@y zw3(y1^M8Jlbsg{({VYXVDC5}tJ_(y2XIQAHxI=rmf5;oWqdr<~MD*9U;sks9rjP@I zy+eBUq5Fq%6cC%Zq{+muZD>}~a{K8}N@p@q??QZkD<(|`z)3+`SSnBk2ol`TQtg^^ z?FSE4BiLSnPbNw3J2DTUUYg?yo#HkH?6r;Lr?9TLI-&@V#EZ>Z;gYQm>+?h_Q2xp= zsYaR9JseR{^=ILvl%vkDz+H3Cn8DbZKqiM!RK6b?8*=jnws}8>3*q ziXl(O$9vKiA6`?0UU13!pWg7>|7$v-Dh!zcbK6}v+*ucqohnLT4aJOP@=MWgkOYPI z1^iabN9(7QwI^!^Ka`2t1DW{eY-gl@a=74VCHlsqbwGMKcz&*3_H?}z@)?{X-I z_WnN;Q~Zr7a3X2Kh*TdT4l#c&poj9of34B|YQ!Wx6@SA2G%FBG+!2Lv4Q(ej|5Mpi z+X9?0<{f*^e`n@ue6Q#Q_3y=>M-+GMOKoahujA!$xAL(yN2%Xz9&&@feMu8(c5Wa@^CXf zNN|%{CzhR5?Pl&>x=(v{`EH-7L}hqc@_7*x=L;>Id)>a=YxbR+^Sv4#E1`vQ>0lrL zHtypqxXZxO(=@PsO-|0FVdsaAm09<~bsuWjz6u|2*g-i%9VAK~c;g$P9~kO#TxE(D zvf3t;$3M`wZIp@+207$L$fMsb_p6l!5V48fDpbpG%7V}?p4F3F5<=1kv}&t|w^H72 zNHpKvjP~}yrz+zz7|An_p+Br<$0%ra(A3v#c5}=3!QmfbkIK{<(Wl0`TuF=4A4ew& z9s*1qxq5(%;&Z%y3Rao>SaJDB1lI&ek0hNI`n7O71o{TW1jNECx^kZ#hpmKQl+D!2 zFZnN&KABC`?UOR|*w;+%@Bk>i6_0-`PEJ#W`c*WZD=!2-=MuuI>{QWt88=?AG@h%E zblEQ#dm+b>mg;k}@HHGasu2c$MVu7n)oHSbP+1N*&_M(zO2uiLAjvT^p#@!jK5je$ z;>xIBIfaLYHGH9w}qy# zyPLhcCx&((_ZU&A_?%pqs>UWVY5d_nmjcJ7RG-1>?YTiZakv%}a`5`2E@4|9Rum*B4B^#I zr=8<^<{N+r3JPU_xw^E@F zLhj3erg_>Q)pvQr2HtI_I2?K{#8vE}2f2z;4N4lVQ!fn`3Tj>3$*_NoC)fI~Bq^?b zF-n!QeryoSC3|o2oloo$Q|%GN9#ZnQmZiu@WXUv<35sBNvC^aK4OB&{UaZ!U^{WrJ z@TlcU`{`PMP~E-yrC$)58|qe~9GgEy?G-SEt67k$TH2M()~kn4}S zE#>cyhEeqL955Bx`NWG%Bnt-DDEUOWAtgORKrHmh92kTo7b)z|4N?!_?=6X4%_WT8 zyrFRv9}LjG#6~gJ>^qNoQ-#jn&Z&{v{rZCWDkQjz{uq;NHw20XqGk%w{|#0U*hdO< zL}PUBC4e?x?g{Fpi^>NagAzPah)Y3MBL}vpg(n>59{OB7D zOIf_6aJEK+3Wq)2-o0c8qalP=RhMy}3?$QA2f};Pr@!2#?61avFqQ7Bc|t~K#7Vs`f#MD~#VC)sc2Rg)Xp_oNglC0~HR?aIzLasiQ!&%L$CMAG|P~%GS z;7fFu(m4I7Z=)5toV;~8UBD2lj<0ghd01%T4{=izc89_lvi*7-jIoY11abGk{E2PG zl^~ys0F$k*cj}*;Pp8}-LuKFxZ3Y*iMEA~()j^A~i9UVn@KLj|!Ec06$}We;mP}sq zThq%(6qqdE3PgQOJZ}9}F*QNnAGRCsyuPr$KQ=l0lv%uoqS?+Y!IBD8+>8p0OGH7k z78&e>EWgijK?ry8Gb2O>A(brhMvCs?)H61>i1(nBp8d=Niwf*J(_CFn;XECIh96ix zW>|@OjMuJT{x_i9ovt!ItV`}LpgzN@W@of4H>Qijtv{Q8ek-VO(k8MP2($q_Z7%VL za{XNY6BQ}}OkF<6yiTm63X^ekcxfkHS4Z*~dCU{Xfaz;=NNmy(wPK? z)DfyelYL0Y{PfHJf5Y>ebI@Mek6-D>g;WEIJ4V-lj{FKs%wZU<)$JWMqx`@Vjpa6V%SL)WXk-vV$u@O?@f)jQjVmoc zPsn{xOPZKZ6uJ{}c2$}6GzjC5C=_*+ z!}&f!qh;aG(z-mYWI^ewB3ASDh8biG5@hg-~PSQ)QUic|JoM1(w^s{-Q61l&r^k}e)TN7{0Pme-Q%==ZxrsT!}U zy9eTxs188<vHbI6hZrtJ3CNZ&uPNuET6%JZ5d#sZ4gl_2r z-7`fu-4_#`czdRHZMmD3^F$AMp@2zv+HILlI;;x*EN(_Y50t_lWE&*!{%%_^iHMNr zq5CHx`<;h009Fh7TNJL2zaDe5*lt-?4#KQsZ^uk>!g+S#% zl|p5C7XFd>6Uo%VLu$>tho#Lv8_-*y&Q17i6KHQs85Vt-mwri4>on3~7MY`y;?iVs zPwVZA+V^?&P{FFN`*m=Y`WL=lGnEv|0e&AED_o8s#&FrnB%dr#q{APba1rop!kJ|om$fh!& z3;9*yKsKpXzwA#UWJTirWcgMfM!&|8jAhsdce^q;EN^VB){=T>wG>Aq^P4ez>@c}IA@`l9eI0$=ZrOT$*32%&LSb8S5rl&5x4XT6$8c=6ahs__{D z$-(O+#SW$a$`1Ig0b%36M>=p)@6I1!hzyti|jpVTDfjz+QZiUZtQsQp3T(e_xbFO~r0Y=-v8 z&_&AW=?W@B3ynK~WqDx~;JzLp_dHL>^RR zD`liP(-L*(WD@moboOFaH3LhAfJ~@B@-Xk_UdNn=HQ~F=K-u?l3WlgTsn!YQc5P!f zUz|E$al%@#z0hUwhGE(L$D_FzC~RvXFCm*O)9m5s+VehA2^hifpWKP#0pGLc2KVt~ zdbM))p_~lBvq?tZL?;e+iJ677*O#D{dS&J>P6@Tgt|;bsCAL<@0@!Sd(`NUivx54y z*fgmlf>XC3GGI}ykY-}!!)?Yo?0{S7!vf>JKB@JYL|WOxMK=rTM!!L-_4Z~02&Z7R z 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

      @)k9f-Uaufi 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 z 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

      _yU@vrye5LokI_!K9b%CT&b@7hljKQ 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�j1+y$t$MnJ*+Z9Hxk6Ne#r zZJvSID|K`#cLH=~9${E$LNOo=I8!3?2CAC|eiqEAFTgGc-w)h9JuqohS?iXPj!2U` zFMNp=9QisG)+tJ%s097priR5X1qut=s~G1III#TMJ+RoP@^>sMnrk6LwV0B7 zv2x@m-FN%$Z$0t=74}XT`d-4~?lQB?X;8*5cJVa9>XGb&bKYvD?^92F{zdKQ=-+?z z@lJT~=W%J?xtKk5mo);?jw6aI;yWS2ZD#h5hy?{Qxv&2?G)ho-`vo`v)*E9UtuZV3 zIj?4(T&$%y_t@!(r&k?Yd1hc`^p8&QLWQ$nbZBw4=;P_kd$~;$VXu9(eQt;5%2!#V zWwM7i&z+KnvhZrYM{XqvE{ip`oyjj6ei%$)P6e+M;K^tit#-UJZ=OwzwkUogUABKrB;}ayPo#R__4|b`YBkz~F zUlwdF#*D^3g`W*=>H3mvlLwjI4>!5%;T&&f;bov11By4*8h^8{SM;vqi?efl7nGN8 zoO+gS%PlB(tByJn@Zna^t7BOFS+XNo{qHemZ~F~Kr0LQ3!5#H7=&&u@FA`fh=Qde@&Aw2Vw_OgfS@00XpY9-^} zE>(_HB5q#aGTZYZS_a5U6%-$(LaKFB0SFUM(onNBMTAAd9w}b9Z9t#CqI=KkADs_u z+!3E%NojP3G$f!eY%lu~5*6J-=`r2xKF7XZqoo~;yWc20kBf`g9ia(rY=4iFu(4V0uqH>U- zOGmKB?NIuAl zk6V6x;;g?1W6;XlBEr$6{Q5qjUON4jLmtDk=tNC-rQex4kiBwn0s`S){TVeOy zSGrF3xS4aq^w4m>EYBl1$*X+x(;1AgNT&n_so)}x|t_K80E^ZOE; z1#zB5)I;L6QrTo}zT!*(FU*(nj@~wVtDh8Lh8&NgIz=fb-WI7ZByg@6l7q(&18h1U zS_IpfJr+Tlc4Y%o*hHm?678;w&H1#leoe;o?sX5f%9q{8L7J3t)IlyF77~wy%>7n9 zU%8JU*rWhiULnrR1X1HO(;&e|d^KJTY!Z|C+JQd2_SS)((r;}q*whq==tqiPC|~!5 z+DOQ_W>(TN$Kif>ro)Smv5t||^DuSpt5rj(=2vd3m-Xy_J1shE+EiMRr5#*(K?-@q z6>SAaYP)6jWrJm0!SP>P#$N`m>h6NX7?&SEW$_{0F;Yx!xui_18H%2i&G=T6|6^ib z*V+XgN?CPDn_ward;i&lz5+%b{2l`I{ecD6t6EJa0CJvpRu&_>h=< z5jfI26@Fr|cEylv`X1-eV?ohQ_~ zNX*{%wKc!xEcx5*>+}!L4*!%{tBuV0^MbHXHk zX)Wz^ZNTM6#C5w{X+fb4>~~wToifo2FJ;b%s}#k$r!3K`Zk-6=O=u%O6==XPhqzd_Uo>B#ks_We{nW+wVg<{u!Ra(v_8p>4qPbp<88V9h%)^7irryXpRHYA6`DSNxjaXx>e!n} zipE~(e7B|JOSWS9MuwPHLpQ}OV zKXs;w_r9fv#P%M8+WUF!p`y^2xAm{*S|EWmHsa-7+_6)R(^vof6h89ck<^2po!+6( zucxHnJFC4)P>jBO9kcH6B2;ZsH~GAKK@oY-lrUQ`UrxA^eN^8QXE+*U9xv^3{iMwJ z;e$~Ef@4dO{Hj`bd!=dUw3G9Zu-8c57yXE;WATV6k7c z-}PnIuWLE^+}QUN(pDDwtPE&ncNODXxT*@hX~PPFagz6!HPU4dg7(a6x_huo#?W3AfH7lYTk zGL&^u=}WQ0{^K&s`B1qNjZ*4YEbMY6z0SKMS4#c9vZYO*PmXPS@^R1jW~pE%5pE|DyJ z`kd0ZTU_MgGqf=Gl6E|7ZYc&T*mn~CV^}5$klkp9bee2>I z(QhKKQ_&zKINCr=OaIi@h|)x9rNq;)&F(yP6LrepH~w}1|NeMzeb-N^OKY}jJ^p(y z*4K)f>e#Nn?jlc=Dd1jpiCX5a)AHv-c#p$Bszk;lSckSo2!v9CH^-}*rHE}Z_)z(g z8oWZ-g4U%JqT7o*4xEIK7l(+b5471>%jhdYEC`F~I?}zop?hRbyOeue4`H7b)8v}0 zrsI`z8(>Py8i#x`8*Dih8NnnZ;rkwp+lQkE4 zuD~R^6s>+;eZv|OJ(Gl@{mL(rax{tYeRj4?YgtY~B2ICTs`@4&E3+@_2r1rLY9n## zD*_Pampo5+0pi~*0=Tm|FW}`^tT)v+4qo^n<$hpX|MmeY%t)0TY{lyF(A&OPMwK)vir8 zCX|wmFM782xvV={#agm0%Q%_&+#9)?kkBm^sxsJpy6~#{>i34mkO_)|VO=_!gH8cw zBD9?ob;-geJXgHL44n`bAo?-%JJLcj!Xf2+Waii2xwS#i30aDZVp2^9nle`GVS*uH?d!iINE_D+WD1_yr=me^?zbs?$RgBJvDJplOydrQQBs@9+Cb8PBx6!rP zwwZ-vx_Z8HWYV^ym14j?XC9epYnQopJ*OI>uN9Lv83dZmyz-N>{Gw`?kbvvZZiL2m za1`R8ZZuY#eAXy;LPY=Wy|Z7LC^f;peRr>g>W%5wnff-@2geMeb=rS_&V;pp(#`fd z3tSwu(VX_(qb?3$)7~d1V&J>rUvBGpm6nq}q^|qUt?OQUeCX@hM+$7cR!QNib)}V0 z{XTd!TG*G*7d456bbXs9$$f7#&MvduFFJRsnirTKJCtzTQyv!| zF0;I2K(R^Q_wP-@-+2E&s41%(`_@esxyciw^O0&s5ehSE#WEG-wv7@+M5CI8k-gm; zws~hng0)0biSP346&&7IyQqEee0V~frRY6$!is}4E&M`JS}n>jFOAOQvUD}vr?etx!9%_Ar4m>wUN_lxd z)0wk-gSlp=Xrvoj3ZbBNj{@+iZbpx?%a&j zh5-1Vn6$jMYxUDnN?F#P-dW$Ysf)(j?K6tmGhZVw{OsZ;LY(Vw>yI#!N{ml>!TehG zl`yWADaH8OHKdOW*@kk9We%8ZzZan1xsoisMZuW9$>V=jP!syh_;s88a(c^-(c_R1 zDXGoB_g(k5&dPj~8W9P}f)7WMwSE)x{<L|3^uEVuCAnS#ElPe8`yvFp24Nq#paFWn5F>qi`SUd^X1iKH}GP zL;dv>r012x7BQta5&o=73@PeL7YDxeVaTo%clV#-36ip}k8N-#QxkFv^o$j5y1<_M z7qs4N+NQpG{u0$_+xgf3i@CQBi?ZF?haVFuQBnm42|>C$MnD|8J4HH2I)_mtlo}c& zr4blFx{($T=`QK+9)_9U&GYQ%-TV8!d++1;j_;rEPhf)kzSnhKYn|&{=cyDG-Qz~3 zsdY#8?tJNRE?hJ%Q6|gZX6WD?_dy54o4cT-r4mn40ri;#)2thmS1L|;sy1MPPn7LF z-y<*CPU8|>f2hRD(&ePrwl}+NndG=_9c=X3a5~gT^NB#x#f}F(6P#iG``-K0 zJEn$FCq2e1v)rGaS@Q6T(B|c85u`ec=q32rEueq&-|R#G$Od(vKbY`b3jb5ZELVxL z*D5`YvzKjJWUXl@w0=7jd|B4Nxl+U2@G|=+ijEVZ-#iusQ!oWQtn}a`^qiuMV1Y63Eq;w-oBig6Yek12y-%lClu!h)10RO1ge zmu{e7vKqmc-Ws1Og))cvV#&U+Za!e*DK|STC-t^=o5p6na*r<9Jod5IH-oqH3AvF; zZOM@M9%I!dbIdpVh1!=p))|XN7bEe@;y`0!uiHE)d2X7gO z)DBa!Z>#vnS#*81bV8^+FdM+xVGn$^(qSAOJjZ2YrCV!+pfPnqhn_t+L*%^ZIWyTc zBgGE#(=A%+*3RBJK`(qP&vM@T{`v1?{{>7MD1bL>=tg5?fU-oopmT$W6on00B^x>| zlea0={7N&ixjykoD918TK>7Bnw=LixBT_KPG z3%|tIiQt_;D)NEI0N{;O!M+ExGQ@E06~j@ca6=r zK7`NIFqid9c>E~u_hS&2Ddzb>K~vHTtGovqqys;PRqyD2-8-O^(?gg(rqQ@uk}C!5;LUQ5t7?t!D1E= zc`xtQx|+ORel{7;vMnBd-PFN(1YGtlezL!)+29m>CzN<@Kj3Xz4ochDGqd6Y4l&Pk z2uPj&3utA`$^pijr*QbfAq(Cso$ehwoL1)STd2^yJji)*+{Vp(@;py`x$*=#gZjV; zTr)=a`kMcIS2YHB(EYFuSj$z%_3NsA3jVqgE4a{??O*?bpM&CfpLP`m8w( ztdWiPifqU;9M5J}1-qbvec{N_P+RctAnSjm`PUDbu|fRIkQ0C+30*=b6Qmzy9jq`g zdr2l5mQ}ru(FxJ_DO73dLdZVwP=7mE9sX$T;CZilVW`B)vRPPXP4@B~Q|Im}eBbYA^z(EIGleK;%6x_rGK45L+^k$eBXKV8&x>eYlE@!FSY>!Q@UX^_M527{WfDJbS!AV{sUFI!722J22U90?adt*0 z-hLa6&;4sjEj~w^0@l;r^{DSa<=eN!m#&Naq0}|YahYRtn=w!`J(@^PbU&8DL@}CC z>3*C=ykzBT=>IH;t5?@I+ZmQSCuoo>!39As67lu9TQl?_?D-Om4QKyjA$kMyMS@P1 zcY%;>ZW~`_j^E_1lcMd#!DZI-45F|JEIVh%;bJ7t=D~16cqj)(Iw&kwny68y&_%0v zr+SCeXYVM%oa7vZH_m{mok|`@#L3yEgl6W0Gmcd zneXxBBNDSyNr&>P5w9)=aonBsc5>Z<5@G_FJobD)k&YU2}m$A{Nw9zLG~c5DYWEm==i+iu>d zgxiqD$cv!&DApRq^k>?Zp_|=5B!Z6HmXw9>k1XM+Qe%_k5@(q37cd4Qnx2=@yt3A) zpV{dq%TZEsFohOQG2d4>zJR9AFNv-%_Q%28mwNj0cbmF!@V-413>$#Bpf%V&LjGW^ zHRq-`j+ct_j`!cYBzoTd%AQM#CS0gfjobLQg+o5{>u6zo<5`nY5P=tykl0Sea5fx^ z`ClMYv#CV^<0rH?O7Sa74zBy1)0ptYdidyx!qN$z)m`-6634~=0&DI==vB*GDI@s$ zd`#O#D|rrIbXSx5ULM{z2SqLF1NkIU7>zO5^|qzyEKzE> z1ff&O+iA9+mnE>vy=ZzRVI~D`>7%!SxJy#hJU!vP-PTZ;It^*x5&+!9J&MwCG*o`& zqq?bw*R(`L8bZlUS3Ogc5_bA!q@2{Z3jkRK-@J6JblvhRB%nkYzfN%-l5_4L(@|X? z`FpwNCjhn5G}JI&*hIUx1fI@3I-L0-gq+R+qsB~_(07@!A$Zq`_iwcC&sO8V6iPsX z^8QZ9iygALx1yes?VWr6Wt`#9nVJRgV4DL~R0t6em@XFv>JVCr2rl?7w*b9wCPdz{WD*flH6EAr6vujiY5HwLg z3`AuM?%+bTv}RZfD0q-}Mr=SthX#+#NC8Dr%(na3G6`RBR{-sTS_`Bvr&bfPp8 zBy2u#Uw*L$&_G(BzQvbCZ1Zm%FGq4zre6P)__Le%!?;}NVPWii%s+1F`#bgie}?N{KarE( z1Pm(DXFTR%Ws4yWD_3Xz@$u}*mQqI+PbPdHTG_m6ROVb*kKtTDUu53GH`~mFF2$G8 zrn`sT@Tn>a6NojCH`*8TJ5U%?pCD#>V|nm0J#k24(FEBg0~o@_4CVEcl(phHtSn@R zuav;`<{k}~F$!~-Q5RSqj&R8a4*(yj9Sqxivwg5thSgnQ z&wO$)jwJhypEaQJ2=`|PeN-q%ovZ|Uojy*xw`$s+HJHj-_M2r?+soTKtxm4H*b}MNN zYR?CdTj+(pP8BwiV($yWqyA8^*P*%a=6co$&2EwYn4S-{@Y;;agQl@_Ky4P8;x(qH zrm-XHzWKb1+QZO!*5zCuIL@%V_c#(DU0T(3fi`yK5)&5g2NWLc^}(&FwNOV zuT-8kG%GD9UtZQQsgYdws7qX3@hbqQRrD6K03DI3f#95xI{-2&T1jfTOd{AdzneSJ z|3>ruG7 zd&+2F+KR>HSPFy6^xs+lL@4_eU;W3&I}@ntrtQWl30I+932WhWZS7=^l`zvi&Mlle zdjNiUT3xm+RH$%){si_Kauxp4_0;Ql@Ju?cg;x50+_MDxPhWB;eR@taI(>K;4I`%1)PGj{WFx+Ja8Z$p`) z9e&%;We$enJ|*-cHdOmgAZV{V{=9~%9Z%rZ*;!{gm#M#f?9h%P*QN_W&{6AQS#ki z=8w3rv?1&^KHsJPN6rwo4r+bsu)!}M;^XxEMxHkf3D#^UWDWFoesM_qxpXVeHGJuL zBeC7v2~J3cAaoylzC@E_H~tYk9A9%BbjqxJbIU8i7Kg-o9+PGt@5n!&i6=(XMgqmLb2z?8kjSV!@vVq zqB}G;QI}(QAzJU*!92~CAMFC6oLy?G+Q}{+V)1?{GixeEgVzh-Zq!eo}kM z7P_`Tpvm&+*_j^I##v`SV?)d3C#JOL;`hZ=eKyeL2T}Qr$&AnZfM#?cr98;zo4MAqLUCFGS}5{ejNwYq=*a^?AP8Mk#Z z6Tsf-I5@kaIFmf>u_E+6?NwW67wMk|`OL5ofvFID;((d_%3&{O*X_oC@@&WfKrk7i zpdnriv>&-OR>Q_k#7?ZzL++9dEyi{ZWtU%U)q0Wk&i>nk{2#yksd77V|Fi<5lR#lu zL$qme`KVlv`tU^yWGNI<*yRU8_Av_aQ=qtt2JX;YXI^Z|+iQbUT%mJAtg!5qiCZ-6 zi`ZonY!vLQUIUOFXBV6+t)_CehQtky4UI6yeSlCOJFs>IrG>qSKe$SR$*O2I&>}9qI51~5&RwBl4X^pqxFk;a&cvn z{vgK>&gqu<_^=_cw39Qpux)TJk8ExzKrl;ZoiX+1*Z55H+QO3fh*Z&jH#BL4)R#A} z@wTOY|6!U)8$mUS#im`Xb)@H$&DAC1LEqWN-KSoDPb-aQ7f*o=2aH|J5W;si1A_vp zn_!o;g31P_JZi>#6}N^tU1OBr|Gw%%e})gjI0Aq@Jypqb$(fW<`ju1*1V1!;Wb<1( z#IF4Pi~y=s?6?JTokoX}TzXXq{LHLAmZxE6I{glm1N8UFnNE+a9TH`r8*viq%G>V| z*AyQ*Wf)5ADR0PEl7WZ_dLmQ)gg%ab=UamcUp5VB;c;|IKs6 zT5(L?F)HKaG}e#ul7Z$LsEOB6`1nc`1Qd4{MSED%1&TS{neNIiS&qL& zydV|)CF*@YGhb&vNZ|=f!`F~-6`ccKj*g)zV^}39cxqBJI7{tgkb?OayeDsXn^NH| z@K5J=bUtxL?r#)f{L@AHz;g=5zNl&-yLa6_KUn%;J@7@c?3c)vHTbh(P5<(++~u{o zx{&4A)C3-MBKRR@@dSqiUSne20!6tp4B{Efh~}Lo ze{P<8Wxe2MH&ane>e*ecdmp<#{uBI!{8Vue9mDd;{rV)}>g{bef@j!UA zrnVVf!E3K=D`xb&;2@z`Gy982Sy2=aP`aI&6TLuumtVZTA~k#-K0`AJGd&}{`~pW~ zlEtke2%5I2^@=Wjp~}~dPgfiE{;m>76mE+xIDj~Niw2X9-J{Z+L?|Op5}GW@hEV?U zHWhc_s-L@V%%=VwhySjpASV5XR@kcuDrO}X${sja+(cWq35i<8XI1696jzB)$TLvR zlae@p4f`yB^io^=<8JLIt0ck)#5be46hGltcMJqdp1aHMRmpy#zxu`UleTS~mIUV- z@p!)5Ea1@DT~HVym$tBYMFXNd+RpA5K6x>?x^qMWo3a!5wHFFjCz&hYUkG<_Ov9G< zizuYQPWANczpWku0Dh0Pc+hcTcJu@g9n26aua}2TP4l3D&i-xfbkR)e$MS+b)% zX_-dxvl#^-N(r8<)MXvsq3TK2y{Boftf*rD-mpq>BJ! zYOeE@&WI~zKa52RpTp40DfU5S5u3P%t5Lr@9l!iA=}w)GlOn|xPN$(JdNw(6qgdGC zFVVdp!DbS%J&bWcC)BQ65{H^0*>$d6?1>ZRJYlts+iV$wvzu@>N68Mx?0=YBBLF(i zl|@xk1!YSSqTRdodmxXnqzO1YcfIjGwTR{%@V~tlb(k6{eU{bZS-!L_ z1$$ae78Q?fgr4?Y0So8dl+|>-EfQ+XT^VM{k@^ zJ@2OgNH?=mi`v|gTwnX$fBgF6FdlS2Jg6UU8i&a2P_i7EBH@ZuGIH(R&^2j5IHQ1$ zQ?*YnhfhvQ#L3DfC!Om3k~&5}q9|$Ee_8V2h3mM`u4uO`Q)qD1xW!&gOh_ zAP5lmf>O)|5Gx7mI=$JSVpjIk#8=AuCD{4z=)L*Wv9g+c*Y?e{yte}PP!Of#qp|%* zN_VBTnxRb>jN_P!VdXg3>1;I@JaK96($?a;GhsIZh}wdJryyCG2@|F?SASph0i2%G zWfqRTS^>-?aA)QkIb)67Cm#p3w4FOGwTXmzvhO0pzE;>z$~)E=k9)8inOvPghq6DF zjcObD>(4h)*!eGhpv^$IZ(u@FKH{PH!Pqx})tn!~e3pb)85{ z1UTNj30pm&zu%6N)zGw}h7+qx4C&dPI9$ge4fkIDkT6~?w)xH*{ifj~p;O1B@N+#p ziIX2dQ2I}U7iEp8=X+jD-T{eHFnn#*`deAYENF)&XReymUc7tMN z!OdG%y}L;_uaWy(^`nVNO@@Y`tn~a8Zf-yY0#Wiv1XJf!16^!-Ugt~_#n@VO$HQT_rMCI}h2|Sjuq3^3L*LXkn zcRfyToQ~mR$I~E6Xe6PUjKZ{*j?puZSvQ?^lh7XfBwy`!EN^9Y8~2QB?Y~=?juh$f zPAV08BCB`Pm&Z+*e%w=X_PJO|AnB7G3aAcIm9z(Z^dtu=Y$bWBUSH}r zA+>|soQ-qc&us7TXc|jr&MkMx+)3YHweG0u6PSJJO%3-44kney{F|x2;YWRf7Q4;2ja!)zgm6O4`Ow7AFSO+ljBMft}OVe?;5g3x*zqI3pN8UjZdS z%RFH8&7AC5XLFt{E@{>n&#=;x8#=`o*w~4U`iFCr+fy3C~3B%qkPYP^7aRu zy!5B%^4b0d5A1LqX(nKzz{Cp?>G&%m|V3litkV4dS12z2T@L{tCM7F(2r2H9e1EG1z=kX*2tZwXuIj?X-YlOZ3)G-;sPIG0?8tB3-u|ti0^OOA-otXq$rVtLIqZTPr z{QfT|$e%?ULVVz-5P>7^{CfBQ0-2uo-6PfV^igJQaMP29 z9mqVe8Eb^$TA7pq%(x0ASok0wR3n#$YqcnpPf6=%> zhJYIy23#L!xfJUIbyk3x5k==)j<xs!wP__TEY0z_gKz6nIK2kvR1#_B&fb~ke1;vO z2T}5=I?Q5eU}z^H5t36OzoT?48gkPLjcyrC63Qi(d);Timta@Yq&;Q?HOdbTs;{#f zcv_3vEF_7r#y;7Ysf|%gmQbqO9n>>1u^e3P+Bn2cW4Nt+RHA@wEGZ`8E7tN@tLgz(Xrj0C< zXF}@7dvI($Q;_?clRqo!P0ZR(kpe=+MUX^G+JhR?A2+4#_@A4&A4g6 z;1^#&FrSce6|o8RDIhGE&(NRjW=bcP*kn?a1q$>(e8sB(SDU)t1QWk!$@XQR05ugY znSPq{$ShiJyL8y;XqKr%YqGY^Fn@B^k!0&EsW^sI&M(2{nb_@R6#W5U*5Qs%wtekL z9*pOMMgvWNIBIfILijV*fNpAav0?m7Khl0$&UK~);_qt zyJMI9+)QrikOE4_XwCNV=|0y+Vb{mZoeaCTxu8OW3^^w>8m7g1lMv+m_)RmKNdVWW|rXN`+hON2ukfAsps&djax`c!>B`VHLpsKbFLkNDh|)PO5%X0T6P`ut@)YOEVy#N6MRQ zw=|UHX|jKpPwE0J%#)&$DO7CC|HqF=x)R;p87{u{vEyQ z`~v`2y=b7**iB&{26dQFZ4i;8@a?nWShG($l(OG^yP%qw{m)Fx-}ip<-&Crw?NdY& z1e`W7HaKYU00$pKPf&M^g%_31R#YzK4?ZPN{Jk6!_opZ$b+_o)2a~=B5uS1;cUED3 z&h)Q154x5EzdT5_qu^}i`eRTc`22~29;zdw%LCn4#dT>*I}7J0nTrO>qMJV4MAE)b z_9K6Pm5l|4filvWdJl!}_SqeA_yN@E2-I*RmHxfdPw8Hmc}nrRNCNl$796|4@+G&` z4b&cBgXhh+YL($Uw$Bu#FfHJKAM;4Uwd*Yg?1gq^?OaCj0cjFKe2Db$D9*EBy|&SLc29o#K~AbJ2YRN>Zk6Gs|w%m zHW2#7&mj5LAW`CY;6ujESzzrk0W6V5ZQa6Xx@6J4Sc`Zg@~G%;&E5}064_+4j6Z-^ zu!`C@o7MCKlzO?OefO@N>Rz{TBMO#`8|m&lQ+Jp?!ap2BHH29b7k&%_W_}bpo?FwL z=hR@wloUVIW79iCBI{2l--Py!LjJhxLCW~;Ou|XYiE8_GM^HMJ@);zl%A~H50Oo1^ z{Z`Cx^t|t-lJM%fnSZhb4D|yzM;@7faQ(%3b@|L@xJoI%Az>EYFMj4L%l3hmc)tp` z$ajQ$Svibp;>AZDBIe^XpFRTVwCl&o%hv4HTJ$qeehS7|L+k%--&^7 ze8e^4?+i{A{Ac(#-beAaEpJ(NAFr(i$eusUbVdU0B{Af25XKeHvvxHwS)OzxPXe_~|J1SR}?!~aiu|Es)GgmY9c z7ZLGIDOS<>g+)Ud>lYB>vC1U-K=&azrtTZ!_n#MG!}a^N#|)r^Wwg>kKYFM|@{3m2h$0dI zZ=X#fN}r3>+D>dc|gI5ww1AB~R%Ut_rv@N@Y?XQNGM%rlnPB zUo~mD@Iz6RVP~ZeyOLl$lyD{OkDzpHP(wIhB^&w<%J6JQeS{3>Dz!aKOcnKrClr`? z5wGX{d8WTPlw+3_u@1}RcbH;e&}y-SRqDBawzvtVoCogg(hC)l3-gPEU>b{YBlr7c z%gRCrFNN2?-?{}7vUD9c@`$7HJExsd!D6o3d_~BqZKkTZu-m9xh`mlf$_Nl_vpaA3 zvsF6oS;eZp9UxvYOI;$*b6Jvfc#lg?-lhZH!sP!bR9oiz9K?TX3vZ<%Q+1vIE2@~@Cs zOlLqf=LpH(i2BRYezwjkH41>hm=Cr1J?^I1SOh-*A+YJ6K3dJw;{^qVUxBBu1iS=Y z)D)+-d!TV!VL{rDynlpeM=jyppV$lti85!iDKFnIv5Su(9XfysHaRD2mM>;uzHyqJ z$92MI;dFoRl1#_&;r~q}t$M1RD{nrOQ*Pc#IVI=!*rvfdutLNnX6_i_@lPoJZ>G_| z%wUWV-L?e;UFzl@8MDQCFT}#Q1HH`M*bzMHQE#(1G{uKT3V_3r7$1*(>YJ8DCY|d^ z^V`BHNq(k?uMaxS8Tl5tA7|!Xi4C8M; zGfA#e^js2o?PQ-GDkJ~c21L`ae+-mI923hHU*n#w$}p(RPrZoH7Qy64Q7=X1wrF*l zw3c5&dq$YAahRTwuNoh$G$(oldcN-sm|7@3^)BV=s6c54h7Bw+QEq&*&ahZSJUJ<* za(dbS^i7<=)EmKuyVF60E@1epMp5~Qb+4DD;oZ(a5^zvtjElh+((}Pr-nnjrfr3MSq-(>+>A9cqwI&8+%Sz z?DZ6yy;x5sgK>ASx@>njYFpzKKwIr!BKhnq_Q@o^HKbugdMYa{miRx-6_c~00kxHY z>WsAg&QbTxe{_zq*PY`#m9J32EhJcO4a=r1Ip}$~EPUU#!uFO8>^);+rLL;rg42K7 z=X+@1El1c4=iZ5Isg zdic3W_?z?WFpM6AN&d?hr$;P<_XWI}KmPbacZ=Z{iTX#GZ@?a3D@a~-m7wjpL?ByR zC`>=ldMo>?C@oHs!g=~>wb-9C!=;s|M;Zw{5lBLFYp<#(!D}G6kn%2}W^uvJ1w^YX z6ljtRdhFptw)@+bP5z0zJnP||b3#me#QOyEi$)7zDeGnMU0aLeIwt9?aQ zxdX1`y~=<;nRaGDfxNNj!5uF>#D=d{Okd~Kp+c0`t?6v{MK1m9fQ|5KoSP}=jIDfSZXtn6I0My$Y=0f9>t zcfSwUEY~NQ6WNR^a52B!sfua3irgoUq+lSMb6a~#ZOTUb@L|{2;+jSIg^%Ocor$LN zMSP?uIf5@-n~stZk_0O5w(6oHL2%>{_}MZvxQz!0&YA;>OeG^9=&RO@pTEAf!&JrK z?PfBmMdPE@z7=C+ZV-6{->BJ3FzVb)>89Az{RjBmk9&);z8jdy z{>~b_^(R?1U*U1rSP<&>Bmi4=wg-5cb64oDn#x`lfv$9cq3tjTsH-9itiJB$n@Ps} zjZT2d;HNdft6CApY*x>rw-;;cqhjv4WwXx4v6a)=P z_n|}<$w3?WH;^m-4G$43{{^Cr4E|0VOhxBmE7f9KSQVqTmqyE;lpr7SJCqK{`825kD>^S%n>jyhwz}KT&rhZ)dnYK}8+-tb+YoJ%yXb54`tA%W@bE0j~(& zMmb6%Ls5Z)YyE#{<4L?Pda&zoMaQH^U4i2nE3zTlRSk~hugx~spgFO)a@iaFMSau+z!4!vSfcJ9$F-M*ygN z55}NP%Z$JCiK((jzrLbJ|Mg-fCJnyeB`h7YG@zS9NSfYkEmKus;t4vk7qtx(Z0zg3 z+l~iiH>e=!wrNpw{`_^cQ()Frqa#zEtIG@_s;xBgykycda@q+%aeb}AVe4YZJxgSewRB;K0B2OjN`~htGC3ue6!{3#NQ0* z%X&_~!T&5~5n}(96q!Gz|M9Vs>E$u6O0cc-@8hP@>g}>&4jvcnx~Aa36LAjiAGDhv zE@{#;6g@?O#?zfM{farR{`R%cd6WI=$FjqQS?P%N&3F=_tLNc|#$$j8!{;b3+z8>eK33 ziJLwe7_EX05h7w(^pSLAhJK&z9i=}cx27tSeF3O-L8uGhls(`74fR_9pI(0Re@R=B z>Mtj{}=$!!KR1CPZP?`?c*)>iN@FCB17-I_+x zhqDMYs_p#hznahO^VD-2O$?AOq7!;VrmFICwF$3hd1d1RPVI?VS4E}s)Vr}j6&f$p zvBj0<){Jtjd$SMEu?WiW88%^_HyH`yVE6QmNT;kwj2RL9v2 z=WSV80PeY8nX)h5^sNj6T}{o8qF2Ymm7DP>e6E)`VennAwVoLLT7sPPkjL?!>Z&t%;JJhF+)3g&oD+b%~-dEFQX`n zRkV8*73;I+Y1sS4FYRk^G#|EoOOXz~Pv|mX)-P_pk&|%0>@Dt5wCV-H==OkP!@?^) zZPq;TA_3IlGlu-Y>?s0F7nM&~wt(P|`HEie6XHUk*b>Zv4Y(!J>p3AyC;)AzrOixd1RBlZ=49FLaIZ^oCH{uUsop)bn;4+EWIbIVJh-qOnK=+k#-5oq1N_F>R@ipK@Goc6^f|^i2VrFg zCh#RUKwRcP9XVPspsi;S_m&N?5BJl{FSspH;7I%R*RMNi(nGj4C$F!DyI6e^jzHKX zvblHabv=)A%#OWO^zc4A#2NtnlE=Vc?UA4aOG6(3kcX)|UU4>~@oLx75+CvZF6+e` zt@;_kJcX5|qL%RWOzfCH`PjFcw9V%@BQy!Cp5=e&m{c*oT-pK%$2;(Ob$8P6u1ZUi z73-C&jjEB%6^~_C{-Pdr_qClicEFi`ChJ>v07kzKqw=1};7P91Co7Ht&>SjGO0K62 zt`@8f51ra;T?SHVS1WDDxxW%nB-H9#_9d}j?$($57M2=XzXrpI^QDH;^iM>Z5~!R9 zXg8wos1O$nWr$Eu0n`FUq2d^UuCvW&I5sP)qHr;IzQ2_NfL0hOc@}zQGyA^5WX)5u z2UEL03JR=>*EXXR(=GhgfqUBz5VX=z5!J$6EjE8Z$LU~HSSrg5WcifRu;a!sr3moD zQAU|DU9<2~oR6Q8`|cImO+V4Ralm@=xByBVJV*@4cfVz!yyqAER|-qZK?a~Wqg<1B z;|j+*u9v-{#4i6b0+M>FzOCvuT8u5!&p67CInLKnYL(uCEd-W@G7_|nY2PE*nwDe5 z+AJ9Y*PMgvP}gLVy%h>KvDNhC6&P&V|D7ReG z-E9^>t|*qS9e_A<5n8I@C>Q;WDp(t5kT=9cX?!ioO%rRqW@ zSwyQ)3`XsX95N+q;SMOZbo-LHKL!!*U{&`#)7OojCr>wSrWDn7S72$_sW|#I1R)U| zivN}OT|rkU`eD}{KlDM@&=<*DwZGB$=4(c8T5(*{M>jRsQe2et4@W9&G`vtgy|6&SqK6;MrN_VJ0%%$+CNA3b7oBx!4xH>AxSxT-K* z9HWP5J(C&XivHo?pHs5=`vO)Ge)mVpFy;J@?{%4H_UKZI-=`oOc>>r5y7lfqv1-4k z)G(6GP*FKc%JJ)z#_w&*dVhl4(? zXr|4BI3tgFao=3NVtY0Sja!BNtc9IT^+@#LZob;#k1Rybuu7M?6~i9wC!(r+b3x3w z2^peOWPYiFZs}Lj$MIJP(o|-8V@lctbXGc}-xYCMIfbz&?eD5tcUxYNK={p9rIL&D zisC_}0#_re6jKf7nS9!fPsrwg;gwr}5pO(urgTbbk@ftRb<>S02exK7g!y7 zd4gZx|E8|~7meLmos!+f?)09N`utAyd~sKd@4FL3cym-d zA~~9qEG)~o!KpczT?M<$k< z9k+ct-eXJnL_qT=--grKtSej*-6P&NRcRGbx@5YztMA+W zfX=BQ|M^ep&#(b!LWzMQzvE;Q!;`~fQ|Q0M$>b#vCQ!Q%-?~(|Z-8?2L4cB0SM#G< zv4$_E+-(zQCVwi?sEcvd-iEvalaofN!oJ_oXP)?<$#zx5HFg1Zc8WZ9&tYu5N{{!I z9!_t3!hwvNi##6VC`11PPGZw|O1$iifg$WX=wJe4KX+ z<8)}2pjo(35~NUVF(kt0~{;lrGam!wqq7Y(G_{vxq@2a&Zy6MF3%HmQR!CiFUtHX8VM|e&_ zT?Px|>1~c9H289x*BL-6aDwxl-8XIWay$xhz0$#2-mZ+qwSHq}p9WQ_9mDyx69D^} zuO;QnqdF#p=qZkgl2p+yTSE=Lhr9N(!){gV482+aFUcY>pqe5LE^&6@vk*ujy&|3b zHleYZf80>x?tQA~q3l(<4;s;jSR0-ZW`A>ys!nfG#^~GM`X_)@fOtErgD}-ve!IMC zlb4n&XVUF~?LlfL>*=epRXz|_asr?Ppsp$bU^9~#0%bYkxd%7T=Zob6#*KW8?ga;M zFg&ZWofXkz@J(&x;vK$X^N;|bkGd|&4+=+((Mi6&}EoVNBcB>fF}{-Qge zvM;JfGI2Q7fH+KynAeE-*j8GJI*%$C_rwcWDn%ZkSq|+0>QTkyJRys!kfe zL(yDNpdTbAq^~cq$8v5)@Xw)D*!6@kW}R$kK8ndiR3W$dqe=WyLOdb=B=Y1UZs@HS zX8!^*pWXGRR?uq@N`egvhF6}n?$v2HqKUJ5wGDdew%8jk-6NWQoXeTKL7y)X9kvmH ze*igJ0xpVTHVJ-*@{0B=A=Sa{ zwBfu$+vLITG+{BAgfNR1w~W8rOr`he-nBn%IEK#DyhoqK99iU$O(*Fs=H0D0=QYlb zA}NX0z!?EVdm3zE8_klyyyiLKu97q5(g6j7Mjz8ez|UJ`EEdF4Efi8^&#F@+M`E2R zyBNpyBwQ(8qmg^ol@KZ+7d z1#KSW0}L=rpfn<#ASiF)ZMO-;s*uLm#{kO6$$NE+y*(Y`Tt#eZvay9)! zTiE@9;B1p-h1cXPwn!xRA}7-Zsu{qrsS-5jM6TQGC5@*A55cu=<Wn$0iNlceUMwRth ziGlK9%Fa1iTZ&TH**waCU`)@78tFeQT{Z1jPxsS!cx~TZe6gaU??&0x=`<6jz~XS3 zxokAvfcf@l$Vy8{4u}`;MRb244IIVotNpaQSRnx^<*#e_a#T(NE9%(bl)szE*dTL; z&6D#1E;i8Dl%<`2q`*ejRaA#nO2AQ_S={x0(Q%Nx7Z3(X_BDe+-mcD-R9U0@H&;KO zU{A(z>(ZtJo{Ei;pNT249-i#Yo4gIEK>i5Yd_P<7mOy_ZtD))Va~uWnXD69kbS*r2 zJ_(h6R&$0uYVs|F&9D+b1b7_Ds+HmCTL2K{rWmidiV(l-6ExXEVWj6^)yJqR$5D|N z!6E6uyrYb)ApzOk=`82A)8&N_O*Mk860SPzR zjZp6||MSHE|E_U$*N^0C@AY_AO^sd)Q`NHem*dTtX9!#WdES08gY(6DDhv>f*?xKrwV1%; zv9e)hQQMm{Ju4#=AGaTiM_bmnDg@L8w-53PZQ24LM{#|W-9Iz_?^1{t`QKxx5>97a z8jm|rPb`(sAE$DL9$qtA_@D%jeYJXVXx7!>-q|))9R)mS>Ko0R)=yr_Bn8B2TbMbM zE+mZ(MohnF@#Ou`zmm%T%!wlt3SE#WDueQl+p6IfMGIP<) z{zBUd`lz4i2|!|vBa1hoJq{(APOOCM|&$?hInT zbb$19Bvodh`lHr93qnWtHCrZ>{8NQ~%)2HcIq>T*@?(KAkfcrGP2v`?HeUD^JPU;L zvB1F^P-TLi)Fy7eHhHU5c%s{B)q3DRPqoF>fo2cS#~>s>Zg7*v}>I+@f@fF0F8(axAHU9pBVwJ#>H4qr4STA z%+GGbM2#HwveTTprGT?Wv%?T(lBV^pm#1Yjho#{)eWCqeO`*%p!jcsxB?bfAuQ}#` zlqn&^bkXqSRGayIII&=H!}yp6$XAwG5Njq~z3#S4TM zD%EPU_!(BtpQ35ib^%?;xIOr}aimyH4@+S{flC7dXkBeILuh1!?^7TD&`yoH+xrXd zxTNw~Os;7xF@LPeIXKRu+g-u7=J@kDz#g_Z-PWV6{RPUfTSH{YJ1yG{TlTd|_yI)X z3ZA)*g(@1~b;)aDyvsos%I|7a=deu$EO(iCqO|0)t7p3;-Fd<(h+V{k9w&xtz0f2B zhCY|o3X{hHnKcPOX3dmQ@3F&S{%GH|${G!zvIfjRq|Z{$@Oq7Gt^z1+4g!#7Yr^*I zHOqJWAepNP{hLiV0=<2_=89h5MM^y7TB(}k*>O_xR?yDQl&h=|t5s(aJj|{}l}h*# z0qton_=5>OlDVLMi&jd^%}4N!`uqxu1U>CeKXBF9hT@1Bx&HrQ?k%IDY`ZYfSCo=c z5QpwiQjksokp^jGC<)1-JEcWZ5KvOOQ@RCdB!+H=ZibSEbL0EH@AsXx&iQxFS?3pv zXFW5_aNp0quf6wmUAxNcO+gBCpU=J5@GDF&86Msu(}6ap`8iHr2A?mx0ID)JR>Iqv zOPcVnqc5uGFd|qs#)=Y?(%B(`F1we|*-Pts5VG0HEDxb%$CS@rM5gf{SAVGs|L4>P z{z{n`RK#z8Z%-n2!CpRvhv{dT=*O9?*uHftB=fAIL%{MGSW&AK%vA9>GP)Y#6qla= zdg7jbGh$?^AZbhX4`=))u{c0Qc4`*nemvUmq(nbENQnC0N#SwJIbuxp zxpq6{cf35^7pt1gP6Xp;bl$X3Hly#>S*joue0XSrk_v55@wW!ytIL^=jJfghw^CP;*R8!aHld^hQ4gc$kmUarh_NTW?7f7@;ccA zOWL{cq>zOX?O#O>x6SSnlQW+(MpQQkD($(5@GMl_#W^B#$m(!{xaK8-tI zK1Zhzl|F2D@6xukM1A{T+$(&Gdp9Rh6i5Z6vawSLy$@UCH3)H-GTW8U$K|HoB~#t2 z)Vu|6_jKfgQ`Xq>$5{c@px6I|j8YlG$EcV@#|kYcd7;aqW9m&^n!7taAabFjD7-WB zn%+pysCwgFVoy=^43lNyTjtEZttZ@9h!vV^+0@SRk&!0@ZvYRx?bExJN}d17Bt!90 zxS1P@Qsg7qM6W9K}u!Oj+GrJy$zC zm+l?9%x6`exnd7=v-e|czn&xJq-=F&m_M z1C1oaK9qZ3vp08P++uRq?-G!)qnodH*u_LVPYK!y=i-2l#lnoa;dsO0ll)-5e4{%# zGobn?BZrn+C~olv1hYr6cjTeKxYrqhA*s(?7W3+>N(op(a?g z9^AAdwXR9qjL${Jv2^Xd0YW1my?(x>Fk2BSK zip^iZTfaW@9yrvTpa{{AnjpKWTetyoy-|z!{pU`5UcYfuYZaJ|U4^+*ggqiCV%+nD zfC~E#9CQt(6s59w!P)mIS@f@)tm#8()#BQ$8O)9A@9>HN%=bpHT;MJE|G7ioy7KZ} z{TSNF2KLLcuBAv(Ho#4k&_${FmqmvRrUt4BAEKkIy92i-)OCtC(ORL6f%+Cl)4$q( zTR#ci8P2WvB=?750sIyx%uR*iYWh5V3eYc1CZjwhTgA`-Ay%1q)V?~@Np@A=3Rnfu1Au^z zUCwNc{t1rauh9*?fakfH0#og0;|`o{|ZOWD=sm{}yhN+F3)S)eeTaE`*2 zs@8*kY8MoT-DCEecKV8;~?e8TN)u-lsj{%RB z5}RSW_nb}r2Z4z{_Rcjo25xg%cb$y zIGX}JRFouHz{z4^$$>Jp7N%W|8EGsX)Io7`_vQ-fZcf+WRqXOMb;!1!U#K8vJeb^t z<>H%L-Jpa&%Rmt4>w;dplmQ`PSGT&c9AJZm@g?oe%zx|^wN&(E<2na`fBvDT`{j-L z<;m0*&y|%II_V3=Q37_f^=`<&6iwgruv_Q7;nA<$`LYbZQ|U*aBeRSz?P@lv!o@3j zL*|u6h6PWi|JZ>V>^{(XL=e3B@vjIOZOdQWE5pmEvM^`wOmi3pE8khV^CNcr+4JL_ z>XyF%gGqP=6c}S)xnqx9T9a4yfVNP>etqlF=BQjT&~?qPw1xlIg2VtJ_DzMkyDx$J z`3%xw;3S$2S|-k_PxJ1n+7F2~xi%rU2MnA?XZ8=h0HLA}jnk>ekl~K+HU8{^3cI!n zwt71aZ%5hqlaQndUd>WF8-{Lb=@|AD!xgSM&DV-yu@Ifj6}%7gS-m_7NFHj2hS?Ir zIg771pP$BXD=#_}!7qxjDLkuheI4IYoZgLO<(U`i^Kn&fogVyx%pTr~1AAocW?;^# z<&CoL)%RYuCoH+C81Qs0qi0oLUThnLJ-qkuhaV2A8a`p^%OB#(W#6>d~LUx((7=i z`lx+PpKtyyF5ml(@cQbWv-o&TIAELfZDobwieB1AbD)%>Y>SW8yVz9km=|cUnom`1 zD3&>z*JR~g^1RC8qrBTRiMRnZy5U^qj2Vshi<6+VUk6C3>wsZ#>^nohB0*k%z5AWU zAzqls(%=eKPtMffrWIZG_$$jZbPa=bw0vzM^yc<+#M2oFT%TYhjI2d(sGS^?ym?mhTJW`{7}H`G&Xcs6VAVGZd`I=gAG>$1s{aeL;7* z{Q~9odW+yc_vZ_qo~(0x%9eNQRPY4iY)7EtU8D;mMG1OOZGb_9;ui9rzF}p>WIsmx zMw$LsX1&*JYS046lw`a3v`+^%~j8Uq0>$8D9i7; z1tf6X&Z3u#tH~!PCF?^W`secmy_lnYT?v$lb4Me`{>(yu5eQEugzAVId=}}N{*~HH zS#+KE*7l~8v9h~}O3Ig+rgb=+knS&P_w`oRc;XIrm2x;Nm_(rN&3SRjy|pRpzxLKV zTMg2*+b6V^>RA;CK=jpoj&#t4R>iIMB}m+y4fw3jp3EuG)jX9LZ!qa2N=0@ECnI@c znHwrs@7tiro-BCP^zK)8v-PL)8<3{{QktOfiaFzpvgu}k3-nw@2R&HDe#yZx>E-*nX<8_@8 z%e9uLs0G5Cm&ct_QgO6nwSqFW2H2n5da&@f1aNO!0t)VUQ(BobMVpP7QR*qPIg4}B z?)X=&mJ(3VPl!?MNKmX8GJc*t&C)>>(c~f-^pJ5Hi#GnG33x4!Ufo$&WbMaPsq$rU z+!qMhD^ZGNjz^a6bGO_dejpzl>savZgJtZCVP1HVPuYw0I@>GFLY*H_?}40>=Cg!N z!jTLfQA-KIoeBbO^VXA&1LWmZTy`jtNv-w^fwP`&ZsemzFt~F&U8i$Y#LSYdiO2hq z*gU%8;H!%$soDul1j$|fQ%hXIwFmqyxQk|#2Tve^)THx19oRn26s6u=odWxhyQL8O=O+b`SfG1l7&M(tv8A=2t8F8t?{~LL9pIwXRuLYMifypHrPcQ zi40-PahjhZ5s6l^Yq)&z9dp7}V;#*$a5>AuqiX^sAu(b1quk0`ZG%7W3O+{5gD%Q@ zB-|FCCpdQkA!zo2g}NilDzl-V&?UtOgYhC3DZ4^gt!i2m=^Bcx=~~~5lhf@YL|igo z;8YCOLSL~-6z6lk?ZvS=UcLK*wjRrN3Nw4xFGwJ)EU#m4WJ9_-Yl96o4bO-aPI0^j zi4uQu8~ekwkBNQiRkfDG**KLZ9<^~QZ?w#?HT4CLkZq^;318yRWxp;MgXzrd{)o#q z)K^gvSBZtqoZ8_c-wAHFEQzk_iK7UFLf9Gd^jI80ZTd%Fr?g9!WLSO%lI;(n2a_KO zyvwc{+j8Y;LPRE@DDAZpUwvrYH+WozxzIA>er~pO*B7-l zwZTFf2v)`}i(fU*MZ*%>rm0rMuMP@ZryJlZ7B`9WQC3CuPr-p?K2nreVxb&!79Y|M=(MyZm?9(~dB-_(T(3TWglEL$cLrWg zCVN1z>OvI1iS38;j}yJC>=W_K4crHfeBT31k~nD`bVY3aUeeq!AlQvKLlTIiXZTjy z=>1yMFZez7S`AI_D7VmZ-pfnd7j)WO_QtA&)nf@?pJoWXb7kKKt+tFnEPA()_0Ot` zX#^g}i+k@yjR;ciMK&X^0_k|ft>skboYkZ?T@yKPqoMUmKP9HkP3QFT>~VbaAce=a z80a{WYu0^PysV?}V8Kyk4=dDbOu!Y~eti;=e_7=Ojn3w~@xHnkf@awaIg?#{%}KSB zW`jNk&nc!&8$SZaE!6sjlkHo=>jUx6bQ7#vr7dqjch{TCZ*44}P_qE5UtcUsXi{h4 ztp=o6lbe>x1h?kM}f#%^x(dy{t_daKcli1r}U>K zQf5y>A$$FVb2|BvF2=kkA$X4yJ+H|*98%dtKHTdTL&=J|xpZh_zN(+JmBtU^SzL>b zbuFX{JFMO()@@6L1Q+K2GQHw9KOl!SH#STpXzd(e8r&D*Y9b(`mTQj*GcvqaQ(NYU z4ZOHxhVF`J-+#kY49mh1?8;)N(~`(BQ6wh&78xT3S((z98kAu3q9zsn`O0WTE zzm5@WSMxM@OU{p#nEmHCR)3hQ*b3Dz{>)81z+|E>{N1%1=*?aKP-?w!IH_BHn5 zE4`Yw+`iGSSu(s#D7vR_$F}($>`9)dj_uSrZ2>KekHTJ4;)OupM&|ctbAX9do8FBw z<-S!^UfMrryju8m%6V5OLpa#jBM`+q*M6)py_!#x~HmwZYH zf$VRrqrW+)e!M*Ne9Ye5ANgA4-0Z>?YjsafR3@;xMV;yQ2bt(t_N65&Pqs*2dnu8Z z2ObZ4?CcJ@nUl0z-Y9yH80h`bDuz@XnqNLc6tOZk2&eGf#4>BV&WT7q?PL1tl1U1t z01B}4$3m`;+3P^FdNyy?KGe#*r`z1~`rx1kpuU}DRad!Tp7N}x1o(3i{HsJHZojzM zQq+_MH!@?^3rd>oc|Ze#l-#q6y717TyZ4#?ckAGHf`gyCRm}^ENcaR>m@Y5&nlg4f zopMGkHDc(p6}~+CG0CEvkc8whJjHMs`u@Y`w6wr{jO7NupV%}>4Accg2pu)1 zot-ZU;ZLfwOhg?w?>LLzgC;Q0)LSC(HjI^ZDK{=h8P~jYQCl>TYDu5c;??9PN(7 zMh5KkF8Khr^WY0Kir5Ui;+;$!lvTLYG!k7P#c~@stO+qmQR+;~klyRdimXE5ISP$W zh}|W2Rf`a*sfyvj_##KSbJ>1#N&+10SV`zb5n_k?b z7$!z-?xrveQC1n79}tEnnep`_nyEUE#z%?_Jb%vXX0RC-UpISuxmilzyr*g&U`x_< zbK_S?;0i(0nC=+Iy#L>Uoi3`a2PI*ZS3jPnYj)w07=%Hd-zy zZh#BF?i*q)I>Tg4dJ)5@q-Ysapi=dN1n9tO>%KPr^U(}2Mr7_~k{k|S0#m3X|EHhQ zN{-EXF(uexX}OW>)S=Vx5&kkv!*VYgx=T9osIJvMe+nJH2N9^T0ToX;L?V^xF>!<3 zo_Xic0!Ra!M#HqZV@+w>zCD+dviZ&(kbU5&kfgmKjQ-|^^rU{^Aq}31>ZD(w6e=%8 zW*1<&1$5*&$hd4BVy%TyOq+4rR#K$Tepb9R#X06qsf4O~ShYs%=Ct1_ta|R1&&Bk7 zQnAf^6CEK+2AAj0X9@fcaRmAxH*f@Fza8p1f5l~s1w6V<)II0KEAf;{qTP?y#Q>+& zX@ACIqOZ7FDt&d#M+@N!3FAERav0csCvP*|`maDGsp(?e!a)&=giD-%si|!qMfIbq56`}TGL3dho5y=5vGdwFgo1#gVvrBg$$@DWcF6+&i-KKjYK zAfFF13|99?c-BE4g7DztWDRf@gD0h^{zFdqAi=xF@tfMKJE4SCUv$$=X2 zc9P=$-}>6fdDNqcrN|+mv;6{XX*s{S-n((#8Y=O-&op}f(=y%KSe=t)w5&6?j7oUM z=W0K0&f8smdp=|PvfjBv*MQK;z^hde{>#77_SB5ceuvp>5%#pUmDI+3^TV&Qz;8$U zW^m?}4;C#on0kGAx05`d}8N)>-2pgqPgS<1C0Sb1od=rv}tD&(L+ z6Yj$W5DH8Un0IbK!DeXtjfnZq1Y0NEc1}dCIOcMdK=iDU!I4bU9$~3`v4rAOMRXs;?G_7a{uU+Qf&u^U%XlwQ z1C3E$MP+a04FAyQ+vbAQBG{kM5j^wb(iKg{y>5M*Q`?2(BS!u8{lmbW#F>V6M+9)FsJXcudB$o;XRKpTPU;?lcpJ{sI zy0V~{c`y-AyUzSbL9MD-zM$MfE*57}AfI8qUvM`Q3tdl(AT9rAQ~!cJ| zwgM!1xNH;lGyTKgPTL$es-eSo^wMsnN~O9 z9L?&}dWb_{O-`!&$6ITw&pgWQx-PSl zUy&=3El-&w^arqE>j7<|1mjh9*UH4_L2#{NE zXF>EzQct`Z{HB;a<71X5tx^*+2O$q@CM@W&YGd-gNoVhl*`EZXiRN`iE$;%_!ICUy}r6J4QXc}Ho^|qhM`*;lIO=odSEZ+6i(O@JYy0YJMK5A{&&jd_o zo($+y8)Bz*>R@{loY>gZq0n5VR1rtuv}yYG>!dOGsbr-aJ1M{$3XG`W;01AsF>n4Y z{@kWG-)7mThAvSLYw@+HHA@?#nL}X%hw&FIKYl@6c+Q)!C=5bSU=tRCYeZzxJ5k8h zOa%1@MrD3#1w+~b>|G*`p_Aj81q7Phx?ftdk`{e$EQ!M!q;GDrO@=Ss&VwLqK2Nn2 zFA?rDV)vhnJMu;E(j3rIO$dIA1YBDzmLZf-=E!h%`M!dXDjKg zL8$YG)J`m5+LpYE+&^{4xlAXsORxG6tOb`Mt-@!HNOv|QAcuGrNwAPZ%3cOnh3|cW z^WCZEOL~dc0Nx>!HFF8Y;S+#xSR~ziZXu$t?EH%2mITbm4T-K_(C9eO3;}A{5}nuU z5yfRt&a1?|7GN_B!G$5jr~2hCIV{kjterv?xEzi;ryu@LSF87hQ%Fb+a_vyxrAt6- zqN)z@eZr=GX!PRvq@QE=)spa8{<{I(LT{^oJ6YYT|MlUH{FHdF1YGj+dlLr?`VeBTqF)m}YHbui2HF;-fhQ z$G{@>jNcj9V4FePL?YkXGI+^xXc?KH{3Zt7gv3ccM6H$t&=lE(7%f+SI)@yL%Vf>d z^=IqnT4Idz9s0HQgkJk+YiwZnauqBOP#!|e<+AQiYF89mk?+(^TdV0TH+PPXoniIp zd!Nx?A=~h*3zW~U*Q=9eJ@;L<*f0n0UDBPd4WH%A!PQp7@RSZrsf9?*LvZPSm!bya zlG&fW#a<7TazYOAn6+t~-h|{HX4^+5BOXRG-19a{* z@2-7C$2)UED}p>pe%1KVY%AvDrAz7zO~T*V8Yzx%T>{^|_dM@f6MUc(W@(}ejj zx4&*@x|$MXINk*P31*7{m?I@VH%Y6=P397~&D0G8W9r9`vc-mWQPXfWTE-6z z=*pr>yYmB0gZiro!Tc^um1jhmREFP0>DrtsQU!*wCs%yGBm_8^pf3qYWwc$N_yl3;%0y;Zpr!%+^ z#g;u5QoB2Sig3D73K){gIf>>l=ZDcDuY?or_j?Hmq*#xcnYW#~G9 z73rJvG@tH}n)`EgD9cwWZaaxuU=Lp50qEoaFZ^k7I9Lz{ALrSgkT(QC0r_hZ>;lTGQB@G98!J5ISg{Z4g3?Mf?25EEgt ziMfjtMv+;JYeF(xz2j2qPcLTcU2>i_9LN3(s|+x#QZPnr2H*FL6*(}TZ0i&w$CQ~G z5N}lk*w_xn+QqB~8MG=U-Mq`k`;9r=M(rDE8wEHvWIJYRA+d#-DrC-WIbq2xzr z0XAol=)^8iXO0siLwl0nEKdcnnav)n&t}Z4uHBHQv(dzss zkPDiTcffzXN56oBFBlZacQe5uo54u#K?u_nYo<7O^yEm32*Ax$pO`# zAR?nNHaJa7$ENTEvnsGRAjL^|t;v#Y#g#Van<>fdem*>_r23wu5Z|9{{yV9zns86# zVq0Rb>B2hBREEo9_xBtBv$x+@$xU zs=L*aLKELDkO`6(sqWm~^94kK@n6RfhK3D1zlz!505`*-0v_W8(}RbN45t=fDiQb;NZGP#Sow#6xX=|SpR^*3=vYv9w;z7-wVoL$eWCH zu0U*`NdL|}(}9ci5XL$C^iVbu`RWG6#h*mW3WA(gSS)KhKuRe#GC)!n%60PHDA5JjI_8|Q?DQT%~Y)XYBXIk z)GR02xu>-*zuVngy1^+UsG^DGq6eIG`-%Ru`8RHxQbsp5ZaROAp)#eF{{EO88cW~$%bjrCKpqf;YC)6^T zkI2#;>HHVwrx&PgE#GAIb+tjF1T$yC((Cei<~dBRs_$h(I%*XAe(Q^2qHF{;%##Y? z_DH`d+%RuHeDkN$Ru*0%M^Ky$6hnY~z%pM?j$D6w%TA@+NxmX*`ji4EoD@04S&^Y* zCCQLk5_wdqb1oirmV&U^8YsC}$Xtkp&<=9`+@@Gl)SUn24g?|Ym&yS3p};9*4iAq@ zBVRFO=SQ;*?~hLaApX&kNGx$U3+oiZ}tu5gLwJBhXSfjG@M%~zHw zi@{U&@m#0T!wZ8n7MGng>1d<^@6Y}quh-83j+zNv?faUnTB?xDm&sVq0V3HCXhPh` zK6q@&x-e~AfC#EZg@TE~=W<`?xJcA#)6p32EK=Ids0UJpCN6K!-_s#uM`vuS%av92 z+tE%FckwQ{8?VnT-%NKB%a+dok;vnmkFmml4&r$w*uKe$8Sh;?LcbPUbTX>NIT?Bl zw(24;p-md4_oc7)b`5Qj?p8HhZ--0s)kzNA?XaAKoAkfuc&-t~NXY;+;Xq?Ue84`i zT2Y;;Ap{L?IkSk8C5>_}6qAxK1lPM8FSj%+PmwGd4lA}utl1|Lvq-ETSi)cQdoXzK z9pb@{27K?3vNkjC-7f?ueD4e`6-eii@%g@qljk6de2jd9curF6HI99OIpit|7@CETq$pJOYnbqx$DMcrT9=y5ALL zejh5cx^lY*N0_9FUR-Vr$n#jzCx=JGil&ODB7a9DM$tDQ>WKc6v~`)@La5XdMVvm^ z4i;gBJ&TQ9-7D+pgK=e%5lhvDD!!s|fn6+h9Bd2fKOng4j_)Qt?(x#kw0-_C6_0FE z7dh2pq{cYG91Y>zVsW2!{obpq^WQ7^Hm1tJAY@6Nr?!x-cp4b#MtYz1>c0!01)~w9 z0Ta(`?6+MID2`?mGHZ0?8Jd*OZUVLlc|k8-1DGhb0c@Xs8OLS%9ES65yw@jRFzzHD zPX->0ahU@nZfiT$8}SVah5vgJ>tTHU%$2TQ;BC)%yyt_LDSVA) zD+6XwbAjov{;*a8Ug zL<*k*cV>ByW$yc+Vc#yP?(5c%j4iaEp*m# z;JQW7-xwaO!)u@aN_ozh^ZE<~Tv}`MI!{!_hS=o*^(JDeYAyxd=EX(BYF(?F>ovHt z)D>IVj*38Pcvb;uyUcrgnYS_&B7gT3lnmMkUh-Ie0OBrb&{%+u{Z?+XX}S(d;I?^8 zn6txvvB_*P$HGf_&uYAw{8y?d@> zEdK?F;1G3r5XDql?lo`+y&^mQ`uT?{i`S`)k?1P+6s}LQ1~Bn*sr(g~__r_pe+-Ds zhL078KJDBa5%K!9^6gCGROnONDF%KdH0j&w`441tZ_qMNlJ61?1QM~P8nZaigAT9? zZQFbaq*`T$CI(gQWK6&9Rd1e2@4(ga6$)Oz_{-DJ_cmYZ_s%k+quqhL;QGN3OIGz4 zzOy@78R*Ayp8B^@dXdi4e!34?Fg^{olz%p~C4W*$W{E{~Un$UmiQg0F#<-8W-|yl1 zLew2mq#9pNv}LoI)y`e=n()06Oyu41FXmw?-Ie-}ptsi|!iicdBdcWSgG<&k$|~_3 z7X)|=F~&uvz@G*Df~G|qOdG9?j(-;X{_TQm7LTCyf4Aqhv2)iXF7m3S`9PW0B# zv|ygn%Tdv+MC&#tbM<#K&WAb3xDGqmOjogXJAui2lomtfSsJitXI-6Yhcyu?DT=RG z&S~TNK6iD!&rC);P9g+%sbms*aC`u z`RXHKF+1Mp-I@+EPvBh6%l8BHJ<9?%2`3?WT+hDt{DTK`V=z2Vc9@TRrkhC`9MdR! z=)E>H*BI=hyt~kA<9;Z1_KXBkka4s~;=+x@icLy~%Q!33(50|#KlvYNMOhMWI~K~r z)_**_tFufc{CHU#O^}>fmDJt#=U)(h=}6T77v93{ESPdzfiQORx*u-zjeLa&YbG+r zYw_;oB3}nS`IIun@%MdUn)9iM>IhL3%b|4g6=fw*lT&#y4FfL1+|b8=eZCJ- zzB_C+Rf>w&%1G4l(6?y}e4C{I&%e$8&Hpri2f%{C&rhqeo(^(a{|yJCZfJ#A&MEDL1;0R6=AJN^*KoWN(1@96 z%RC3Ko=eAVKEo+m$}G29|A9`C`Mh6)V8-Da^?H8QFB^E0)aZH3J8G&R?s zvLnz_G#F2S<%jfgIqWtZ(s_yHA1gdjgzs@~?vY^!2IuY;HLw0^&KxU(ppK8}Tl+Yg zX5L%Jili+J=VSYgj64h3e@ZWawSjhv32_63ZQM- zk(VHOkm7ZR5u1z+=6o(w=8T)u)$D+EGdWVH&Rmp#>A=x%Y0~?EKq>P%NAf@I zyFcw#I>b(%!D=3bEh3RX@tHcMJwp7$ng?KTedMwzaT?sx$~%gZTB48K_9&I~L=Z`A zeG6vOrS#@$`u1pX1Kejo4}YSkjoyf$T#Ua@*_GiMl=2pEWb4A!bpRy05j3~u~bm7?Hg{D=Z>G;Y$k?}--CVv3Bqq}#sjO1($J0=B4xj# zu8iN>=)$XU#dytTLi-{3R+1Ez;{xlj%LhNyPG3;8KR?2TmZCPb`j(A};px_iTv~aG zJ^eX+5*^tho2lGTfqOpHb`vq3n&a!wP`{y&%o!W8<(*_X{o|jg-KBX8F7->~SqBQD zQ!z_w8pFmKS)oabSgQ2ge3=xnNt!QFagHI`+9_dy0Fe5!lK5JvyDrh?>=Q7In9t4PMX!WL=>oge?K?i~|Rt7!+ z`sOVI61M&f77yorK*1*$u#Wb7xZqM0ZUKt?E1$U@tE-ozfw3-^Odq+EgvOJqpT-Vo zSE+&4{keU2e1+HW&UYsc!T+NFE{A)|9^JqSS(;pMY|Z%e%C!pN6|)?yuFb}nwU_lG zN9l3-69{Qnh49p%Z)dmUyQRBdU4?x0KZin$-v*STlJjw`V?j7Cg>mig@ubmx7DG?z zp=c_-8yOSYheYS39@A41DDj_%kBDKA-KFS?!q!}YqlUb~$4r605G%KpH~A|yK*E49 zY^6l~8@4e|lhP|}F|>EsuU`|hzv$D&XcIjn*c(K7k!X9xJ-im^^NVX z7$V1o*Xis!7-g9_fM5|NS-Vc{U$i>tD-qoE2cc3)84$>d6FV;CZ6mM*k$kmX*gjMQ zhUDOy?L7$T?3jo)q*6@3W^gt5W~Mgvbw&`QvWNHEiGPdJT`sq4JYVvfb-?Dh;<#ed zrlEPm-BX4(e>^OAf8kuMBIi0?qnDrz34%arJ56a811>BN)8^J?5s0Tu)Rd_)$GMe? zpw-#lUKc}?UIW=YV8F}eUt&L5oo3&mI9^|#jigjF#2zPO?fA6Z;oAGf>tH7{(KA-1 zB+5D+ZXzWqDOq9M4FMw<4z+@TkTZrsA>mPh9DPG5!TR;1m>2OqbIbp&$VAO!Yy*Ds z5zq!8Lm#2`m89#sz)0lz8eH&i-eco6*?QaSOZE4N2{2N%~n63U7|qeihH??)2ka#INg%;mYsV`7xYqx)4e`)hWs zP!kj3NGgeF={Wl+CLP)k@j*I1-e_lfb=!;x=;GdM!v{K~`d11}@$_nJ&(gmqhwt6N zrMkn3*^kpU&n{r#NB@O=tHkY)9+dYDQyyQ>83e5_?LF@QOJ_T?2(yYNbjqCkNLinJ zpd+&L*+tsj_gX*``q9qDhIX0Z{2}Am46D;MDh*E*d^JH* zN;5Y$LGPqQmhzN;f?QP2?b)58_a&Ua=r~mk{*l8(?V8>vuT3}DJ$58llLIyzQ_aUZ z^W}S48OR?DaFx-~Q>u4xgJ(idbV8~uVH35^-{QPSmXEk3-cIkiWdw|z@ zNxj3bJ({r3sYmBWxm9WO8EJn*LLN6jT4w)6Me6kRP| z!^>b$4N;ml`)X~e{|V%0#Vy@NYT7-7b4)bNA#Va<(r=T0-eC`@+nds(ifzQA!;;%j zCzw;`C!IVEsdFwnt)a&WM;ondY(Wl`976!t4^rGCiB-(7tQ-+aemrVlQCZTpy{FGP z=ZE=Bb~K1WXZwX6=X!tyJE+g$aqNGfJMoQQAB?a+H78{qhV3xhw~78F?5s7Va+2;Yhy}jl@bIE0W$+zl|>vvHp#tNFBiUst?^RH4zeax|;;j`#+`9QuBw> zvaTL+z`k^+p8$R$xr}%q-Af%RA_Vt3eRXC3sZFCJwBzAd3ihdBn-O*hzZJbRm!e~X z8D*1lv(9p9WcYBNep#?AOpvMMLjtJt{fI3F8_*2ISOzGZk}X7@AKAcq6L zm#93ZeFC}~^2Q`hR1x>^Mf2bcn6@DwWNnr_)UbWL&mR5_U>?y~ZMiZ8t*s^4`c&i2MnH^te|N7aBqyPC)+e2ZMRGiPlA=Z?R5wPKBJW z&;;+SHeaW>Z_+ZEkA&iiEI;6XL;KI(r7F3lc{el(k^0zM>NDlU8jY*2FnPKyQGN?| z4IRECsdhtE{QKSCb#5Hm!7K;U1YuJ}MP=UL`!)rj+YX4#4g!0Gz42??F~ff)4xWax zi{yly%qpEYtW+!2qUgY))Vu_NNm34=q7K{5)+r0mO_kTF6}?nYbR}*6O5Y#@UyRk% zmEqO%p`Cx#?h?GMJnK9S+W#;87Zqfb<@WW0!?fIlf217IUgMi+lgCUb377n{9mYr|!sqmmn4bZi4*#1u(+6r-hjg#g#}dHM0t zJ|m@Sqo4Z-Fj2Z?cD517dn$gG=H?APjE`TQb)!p_w~Z@ny@%30Rp)l~o&RR}z75~i z@^`$Opbt72seNYpj>vHPA#*>y-oc2?K?vJzbv@nngPIXNU)r8T0!zyuj3oqBIK`6cDgA3U*oor61k9^_bf*$V`w>;gNq zSL>HAA4}QoJF<|95?Asy{1i80@B$(3B~n__&eehic12GM369q?>-zvE*17TLY~70; ze@|0bAw{HbdDom!naY+$t%oO3g-{Wm;b}-dAg%5#$9?T}i83=&>oCcVbUa+q!e`^) z$XfbhdSC;er#$xH$;}KQ*vnW;No1B>{o?mzab0ep_AnkY51M^4f_BFzOCCqxfOcSk zCRC0u=tILY@U=<@>g}+{eW^;f(`gLrEz8X28i<{?oXL)NXA?>4?_Z0E&z!MqmA=2e zn7@Hv>^1KhN*|v&H_s$`do7gEt36AwL_-(7?i2zXjKg(;Rc6hibYLI)6+BtI0-p!k_$?1uGcf(#8BLP^&D9F6ijKibSzK?A$OUvvp`XQ zm?zNP(or@jvU|Byd?N|beW`zlWsXkn`2Yuu#5LO2B=~s8ysZPzl#HNmv%7;xoqV3L zf%Ra#y*=uAlvA1%!5gxW@TjU_%9?6qC!fbq%fHJbx0>~|U+-v2>ipa@Gxg)*;)WKF zH>bUwYe-;+{Q2$CxbW%YB638_nt!XrbRgvDCxMONH^60(H|hwJK~3oXCpq?QcyW6m zEpjd+=$JluyEi1=#6Gkm)epmRVaa6hVMGq`nD+NF+)GRx5l$GVpqN zoQMS4ICa64&X#t43VU&eWSj1UL8-3u-QQ4St*m)v%@qE22}i8Z@`0iB7L)mev%uVp zwCNdNYc#z+{OV-BledTwzStgWN%xNH!wm9fb}wT2XSKun=~BJwL(RjkpgPCh)>uqa zQ=^2^NwTpbL1I00qs}?G`0F#3XeS-O=R4op0JE}6iUpH@L4izX-i!aN7w3vix6b$| zFE{s_MnhaYD>QCMgA~XVLzit5{-^#t0=wtfnplFY3KmGKK{u35KKk}>zBEH;8+2VL zvt=ml%|YtFr#$qQ!$$1*ijVeW`=p!pJIR&kDsQtlA0EYYOi0$c}c)0*Zp_ zYuUBRoR6|@9E?cdHhg^2IZJ@S7Mh~IC|fo-E4W~}W;`QBG{JZyymWzkIj!vNz}TDB z%X!ZZ$LHql@(09jdv*R=vNk7Bj0+rB4C{PGv;{lB$NNS)9{$pR!X$4g+sU2>GS?{| z5>@%8H!l6g6nJN(Eys#OTp3*CWM$XEjL8gte!Je(FH$f2eSRfyJNB|x502zDX)Bg9 z4*8-}NNeiYp;lVY29+IX@9XJnygCUZm-F#hr!MYav+ifC-31PQT!ud}rULaB2rhun zY6uz**}9cLg^iNS)e1ZDe!Rz{Tl48dw^Ky0`N^!w#V+!)ZL5cKcjV}JZ>~|$3%F-E z_HlF$c6}PB>-WJ=J=_AW1-IHc!1_GnA8kE7m$$UI;+BZ6_hieEq!qx^R3#7A`$8lfs#<=g-98g8PqOkgU@HD-$7eyiQzYc#(UB=`tHj0U z&g=@QBD7_VYT>x8KN5H?J8Xha(yrHzTx{fXLg#DcOcS09ju*LJfD?iM9{9^+7IZ;# z*%=drI|&E##pM|**fUQ7(}zsxD1Q>1>)jrhfQ=QJeS{dK_bd%g2bz562(O9+C1I!ag@ z8rl9^Mje798h^!Js&USrA2%1+?H^n&5LEi=ZKn-$c2#1Rr3;*flHC(MeF^&p@mR0G zwr7Bq6IDJbTMj~kW5wIXqmTpQ_L^mil;T6LZ)YcwH2Q+x> z)^^gTY+y#zc|TG}5t^Lrx);f}h%sf8>XoNk-+0y}d&jFUcAmoR=%IFnS=skb%e7@E zVNUAPGqtD&CtLHWb4;vGJkdneKq_AY*^#ZanEpt3ePT6T1p_l=WdQTks-SgFXx^h^ zZii_sB*W_aETFzj-D0{%m-!5v=8Lg*%OOK4_oJcCT*MfTxtAL;xz`cLQS;5!dVWN& z@Mn-g^VR>PZV{VsnfH|QS$O%J*b1D z`jsHu+xVK_YpNn(MvRFdH*KF@uSSplpeHf^A1{DXl-z{1dCyLE@UO9ZAZK_!O2w-5 zgJ|7QetcZOTne+y00Oqh<+uO;Y>)r@-4^Wx9(^F@aCs>mhg>x%_5VAGev$Hr&*bfU z@YX%H;Dd(ZlZ?un#rpdP{?R^|J(_9h8mJ?umxfGJsy;G3!Nk*Kw|zJ^Y6HT#@@DPm z8P&zA?yfm0XwP(eU}X|gquKkeb|PZOR5(XxS}vX~1D&EKl|lZ?i&PM}i+A5l_TucF z9YO{Ne40#UFD#0to36|*1NNU9t=2F4UQm9+Vrww)&#&voIq#(ONh;X9vi4Uz5%VUZ zn$BAlzl(o?%7-z3?n*qc(#=IfX5qA0?AI!ov2!y=^$olZ%&iS-AXK?bx6_&K0O{-r2f%pznyxXUk5$SQp5Q^7^5dJuX=3yDiqGr+5BA?JlS#pjosYybUGfmF1 zi48Q}ce35?_xEnCQ-M{WR)bUGeL4ONP9TXq-6lJK`$Ut07gDRA8ojY zg5irp`s_Aq51aEPsg*2b9bb)hv&t=tm907T0IKL1Xf%Fv{2;YED9 zmdVMoQ;e%imn^Vf+>{^kc=fpB7LNZgiX=b#_ZO?+Us1QTMvx7JIold_HaXZb4h523 z7o0izR=gLJzlyq3W4!)Hx1Gs-TJ$lfeC{rQa>>`~ZujiSoPpsuH0v_jW1jnn+po^9 zJWGA?;odnuN>0lcr+yHLp!;-aJaj)npWDn~rW;!oe~+CmOBc9RcruV2VL9GmVqk;V zTg@$JRQt;7tW2piassqznL|l z9uW0+op7Ox6LAtmfVVdMVnEfU<^xrB0%aj`hOZBKm`5w)Z%QpMHCAOBb}5fp z)V4m*<-3c$PdTRHnzbuI`^qXDn>F(=`HqjUmT)*2!pdPFQ>p{$-Mie)!@80eBWYDK zGk!V_`nwOaW;}Akk}pBREU$;(>=Om#;?NyG_>#X-&IxOf%8>;r@u5yy8Y1n(rMh75 zCaV}yA}1_nlO>|V&F7Jl#cUGF!tXQXjn_5-!eT?3v~4F%_emVGF+n@DiNlfoTs5V? zEOFC~Q70VJyiLuN{C%G=pi4HJ#Nnr?MEm3Q@{Eimuij+YRrOik=aVpkcSe*a1xQ2? z5|ZL9tT6nyk1O*4ppqUXv-R^_eXai!27xK~?$K&~^#^N5!&4j$HC`5vWn&uK(*YET z<4IiLM%6Jt--aCS-4N4*QVe&X;e(cgdoq?dO>XT%h_*Iso>>QN9(5fNpZBWm3To`r zrM3<|nZRE|kY^cFc?qD-r|-Uz`#k39J-;ZTH#TUg{i6{04_|=~CH|tgqc^fL}f^B>L}?GUXte$7CK{yuA)r`-${N9aqJgWYx`8ByQRN*7fk5qy zw&&PY$k`pMQPFFlP}6Ecl&yI?1Uh9KK>`KaRhU2xw^_#90q5&gH*|Gricb2FPuv=B zdx5&hE@*|=O;ks9!V2YnPV-4{I*dkS(dJBW-1Z>$)F(N-kybU#40`L@Nz%K2EJ)dH z`=)LInzMD@{snrGs>}o_h>b{ejA6HtK79RkC(w$UKXWQ8zU2O?&;mIf>si?ojVI)c zb@abfWG^4-fOw*gshpA6WWV(kcA)meUJk+@$^uS@w-RKMj3o!n{(B@p|z7EMcNRnhBacnbs$ z%0-h874|lFORW0|mM|CDRQ$PA%HGGcg`Fqv$}eKJI9-1F&n=l$q*Bmbyd%zir`5%Y z|6Jwd^RUSq_uyWQYN1O7ZMx%ut(QrgL*H;Estu1(hdFtq?}6WY2=kUAlI*SZ`aBLZuME)7a>c)vOVpo7?zVj0Q(gRiIOa{ zYX`HYbtJRMV~+YBS{|LLGBIyZtX>A6@y%s*&@q&=q-CSJn)hk7i)2?mX;OwhA;!>4 zP!JA!b~JC^xvc+2OkhlEf7pcmYCofxr3#yPRu83?66iSq6cL|2#hs@c0(ODN@}mvS zG4Q~RCeHRCWaC;0a=Cf3VjttH**&$OC!539_2Q~5BK(NxUOoLQd{u$+ucvdP#IFCR zPx1f5fJu#v`mvds1)TB^Y?b?L3jT=Zd{x7MwZe9V`>8?;(qQg^*4UC~WB zfqarE`FPw(cmwSqY_@WxPOzFUrM(ox4B`h~h37pBNtu;N+zSTMUiVJTFE}IrsPP=7 z=H_O*_-O9Dns?s~XxJ$Qe=-pm97P{8jY29_=T<-b3Gxw7F`v@`oV z*_t)^o+1`t=cxqH2t{fgrpytKW^Y$Ke6*FiPFI3D8xVIl;@_SYt_?$dN<+98SKH@NE9u(qX^Njx8wq0`yxmS5L!0%dQZr!G)`{8^GJV?|H!g{jL|*K zH$1=)h$pGp4h{?>V}F};Pop5Ozc*hFSLP1K?_duWvpw4_*5l`Kl1g<~+Q=`XM@np2 zMW(Hwd#*^jG$~oC_|t7Ro99HL2Tds&Q+ac|w;Xc^%e>B&3x7uRosTyTD8Cm9`r9(r z2}%WXpHZ92Ris76e*av1%nY?0<#TBmTd29Z3EaDiwd(7t&>FnFZs^_H2NQ1~9&gK? zMxcn3yRolxV~9zfPpC3qoD(`ZM8))i8vZBLi;~J~{|V#eiRL8PsnPbZbCgu6`tO2O zS|?eQ77S%3V z2-W*dH0sX$u`X-FJ(_eek19Z)G|3SlWDL(k-~)#-%8Q+;PF>|{#j4FqCVatb!5-#6> zc{3gmD8>F5TFsFHwwt%pc$tL7{%ukNFOy-Ume=!`;l4kouLU+1j{3H@~b(U0V> z0jQQfe?2`3-^@k4TE-yc%U>&@=Z4mXlJ8-8Rb}V3#-%Q6&z^fJkkF{sVHD!_jL)Zl zZtR})E9+{YG-~Shwp5t?Mww`jwc>LG!jXu}UiW_zc^hRM_g+9h16;4u|7+*!~ zh%eFba$QMkMe0B2Kb@$Dt=01PzTIJdql6JM|Mj)Ypla%WplN04Md=>vi|5urr8V;! zVnmZ*&(4U<0hTj-G5)O9daj+p)A(H0f(WW%M;f$NRW664ujk?Ry!i1F){!NDA0S?) z#J&$L8H>F<1_AA&SUgwHW51L5{z{cO;L=X5J+O=EP19X1Fzu_8;guVLppD zQ>}ds*=L127Si-C-tj&~JxxD*$28X?Gk40V67_jsIdujnOsv+BN+j8u>fH+J!Tw}~ z%TD#@u$B}F{t6_n9~FM1qRfI|x3%4JE&^RST}@iRsF}~o50c1Hc0^|cSv~v2*X1L% zvtv(Zbot2J%s4R}J!_xn*}tTosH?2xBqr!A&t9+ z{MucA-Lg4<@n;f?XLV2d)a`P9EmqtG2{4wfrfiY@hf);tw}sBQLR${w_&zZ1x%kw>x$4B-)%pg87Q0J5{e`I-33`j!rNL|dG-@}*DN~lP+uufS z|d^ZC}uD1iWzSGF@FSq zeifYr7|D)&4_k8l%dO=NXSe8ra)KyRN4%g9%f2UyddC%qB_ZTY&uzVV;LaIbx_n`4 zCt6(l&B-yZDxHHHkJPo>I*)vwx`ZZamgK8M#l7P47re}Zk8A7_e?(E>cW*REs=ZmQ z6{(IlJuBPk8+DGy@hwx+KMxd?FY<@TM&nEpE6&rLBE9DDIr%&(fnjQC5d3zGfWSW* zND!s-o?0TxW76$Zf6RlNPq^`kU*X|-4QR&MQ&Ys9(TSMO14qff$Kd6g zMtX69I;K{(ZVh^XGB>a>IjdTgX8G3?DSyor8uUz)#n+DoY49Ja*-32H2H09kcx*ybwexB6QbVMG{=8SkB8nc|`a z;3@d~k0e9>SY1xr;RlqkrQWtu-kFDi6(89sj;0FynDO6G{evD%>aSS&=HA2q=1>U= zm6jT|6l1I}!D6aP z?uN-GaMvh_#M&&sJxB4?VHSCQVEK-Fi26R|ohCDyRPP`PXA&r?(rL_K+&ve9Nb)(> z8^M?MO3wkn)^USCq<(X4+&w}*0zYa?Q*NK4LCqoYrCg&nv0US7q$hn4v+FHQEsaQ< zL-*#Za*0wO2(R!k4gNd|F6a95blre#SI-M4cuSr3ZWvqs?ig27z!gP@V}b2DR0YG1 zNhd)2oZae4rnW`BpGq*w$Z_QnP%#rH*?2w33BxCyEEYSD%*RL~^pK$`jg*qVO1VI- zP)zMDO+$2g*MJgE_geGV_ak1_(S;q=JceV1$czAu-w~@kwN$79t z*WBu+$a_jjd$7yO5@reTVAfLPgzu3*e0ENUyns@;~cphed(dF6inIkiq>VhYcRn6mvsjI_kN z;PhLr-~9fePlc6+vwASH+;XSzD!Ebw7zj@oT|X*AS_fh8!;np>Y(V?&1jKY7Olg8l zZ%lm>8$3^9pf-K7+Y>VTi7Iw=+n2__;Y{O5<(F>@7a~Ii>hih=i_O&`(=r!1eCo*( zi~XS!*;lz#nHGh=u?Tv(y;9a#HvhI>HWr@8EE-B7J~!2L_(tLzTdq#!yQtiXs$pS> zfyzw9;f0pD3d5+6m39KlL{nQ_z~L$}A+ew(7Kl}Rm&pFrwsv5UuSz3Dl1Gsfgx195 zOe-|#Z?mhp%78ejxb66bO%ylN!Jm2TFkx_TF>l6ohqs*lb@;jpqsW~UkV$`F5VrVP zg%<}Vc zCh6aW%!(&2HsMzxPNn6ZLw!}fj!Ev=`Kp53&)O=RH3-_JdIp){^=5q{L}hM7Kwvr; zLxbk*$M~0j=FTZjTfS5`9j_OeU})q>Xo{ z_nP4Xaia0|w0|o<{_)#s5T7|ztQ6%_ASfGk_Ycuy-QN@ zqjWz1L1+o2@Ai~o{?`#&o*h47hL*(mWmK>t?l?aZ*2tCUa)nQ;DAw;52?rJD3I0HS zqm_7^=C4u1Rl<|@p0GG$uf#3Rw%3tc{`c&jUqiA?gA(>72cSX1MB^GXKGo@0eM)ja z0;J_h!iL6nwQ9DLnBDlW>i({fTE=-&+NaX!xE;`RFa2y@HSf{KoHvVKstN!t4#8y5U2sLArdXk(OsW%T9np| z6V~X?s%#{EFv0-yS&!%DiCDxGt-p#u@)qY+^rc(CH)b6gkJ!vd$v&G7D~Ee;XJt_D ztmT3H?Gn_tZ$Nt|I=$GtVNAo2*kKVqr?A)%6sH5Dhsg~h)ZLDSe?ECl99evy#rDl> zfs4CYrW-0k!yk0VjHMz>R3_9!qKDsJru+>o10>t#t@1tX7#V_NzS~Owp~iDS2yp3t zHhs4&`cEP7U#VuNv92{_$_jdrpYegP%p&%PoFY$w!#gC)XsmOZXZ>`4$w=-GnyfN% z$e*0aBkCxB24Ki4Q{v9$>eSs_%(fTz&lgIc+}dZMl=?X^&Ka6PDT^!6T1YHxVC1T4 z3!Bov#R8&9V5qK|?UHm74`Uz8YhhNV*^F0|T8M zN!>4yBf~0Gmi1LxNG%yrf)YJF>B%Y8>>Qn5i3nX~I5E>&3UKa>h48GH%m#fiZIIvU zbCX|B0q`Uebq4;3M}lJ&tNA4*(wd45derBgJ}5u*OYFc!P@u#do=jJMz57Ls(!=B0 zjd0IKKB^lZwU`i38uU7%eQjN5S9w(p8uUA~(6X<+Y~pWUxVuq^8`H9A?PleBpfU;r zRXIzP^ue6g5e9Lxpm)?L2)j%dIhk8N=~`_)yR|kB>wQnfMl;Y3D;zR(9{Jdj1pqUc z-pn|Ew_Ctk8CNc9J6R`vGM`s{Ph|j;3|d2In;9TKK0@%dxGreY*8RFQfP}j0MNw8gxYV`aI@Up#?~ zB5@;H55WH#DQ7Wvz>saqKE>~0kuIru^MIW7ybqLB+PIR*N|r%leWwPqcc8hSorECD zTHd2m;V~W1AxMfs9_H%77?Ae4TS7E=-nV4>WIcoWb6$9ocWOkvwA9k0OQgh)y^ZoK zha1$KBF3=q-f?)@(3Pls5YDL3m!Uc@1|J$|7oNYc2I}ea4!+58(6?-qZ}QWy z0wm%N-3mrTFROecm~a7&;9F(Hzk7K144Y!#zw|J#jz&buZn=ixv~sy}nn=(^mWFJd zpRJ9+1tzb$XnT<2g-#f-T@W%D&jN= z1jc;CgL4-W7GLuo{KYpHQ}4eK@5VCWjhe`ts8pt75P$Uuxs!anreC$T-I0L$>Fej_ z+0$3Cj)EaWuQ~H-^K&n*K({4zedLneW`Z?zp6blw4E}Omb$_LUM~c{2Hlva-SWNU?d) zz^Ypwu-t8Q-&ay`eg! zp5ceEKONVNkf(~AMnsnXd4xmcIL`!o7S&i>naY<74k9KeN1mVlhhfKqe3VzS{YZqN5fY$PI$o)O)pd$c3!4zUv zJ`{N9#qk}C+4O&o`r+&DQ@Y0OF;!1&fvdor3SNiqH)XTVEqJxCNjxVw9X*3HbA6PW z`t>ML^3C)mXt7W%$MTM)av!j4CQ?W&mDgy-*vKX^wng(7o1;>~nc%IR4(EP=&PPwc z87CJW4Lj$NPC^ttH&`{#g#M=*{x$E$NAQ&<1WPrYold&IZ1aGE!krV)6Mdlo6=vfF ze{|iIL3ZhdgDt5|Uz?E$)|34$xBZ#_;*n$N#tQ4LQj$ThubdV|iBRsR}bxh>pA=0_HAULAF$hY@L8#fv+oGg9b%J1U(2 zB8A_++5rejYHAa?V-C)H1KQ$IEHMPdi7Hp8f#DA;S9|7eM`fMYW@xOO8gF{m1)&}} zO6Uoq<dPr9s}4RskZW%`23;C2RUqWiFuMc zviS?HiKhQ`Mq+j-q2xWL8l0#yJrV^8+%l96!@W4C11O#F4tbsG;v7K5`+OlyF zOBedH7h>T-)v8+7Lj}98G23z`Woad6r3%m?d)DGMl%rZ2VTA3Ea-v?GtUboCf1YO- z+++ZVIstUAb2Pxh4#7s9leeNT!Bo0=vyAkmeQvyp_By%!Y%l-y5bVoVV8lSh8MM+A z=K{xmLBQ!_6TWL9mvKTRdG%kkoWuVvS}uOH9-#my(f_=|B-Z-%f!`94#x=kFvja=! zTl45tCc0f@lN6P$ue{sWxN5ogYY%6wT^D*DGIKBgYftdw5|=kV=TrQW@cukcfl@leBa*+=%c+1Q03sr z5X}CK$pn?Z5>On_ww4?QqVzZkmpg5TP@X&d{27Ud7YKC9(KbI=t(~vC>j+x)XEKCY z*8kT)ccseIohH|dYxgF*%zRe~BK!RzW7#N09oTle`QqRSwO~rnDU2-i8lCo7y;zr; zDLq?zsoLm6iM%kDnKL}QE<5izSW;boYIHa-l~6nbE-T|?*&o*)5CNi@PvWO&*Qut| zt@IprQKd8?CM62 zjrlsU&(qdGW;e4gPRXS-(@;4sX~%;w6|YxyZDESvX~d6NfNg?VozU3(3{9Ur>0s0B zWyH*GKSwse=BTi715u1W=OTabSM4*UUBSaThy6<*6KiWE* zz)pW@<6(@UBT1rLk&QQ>&8Si7ob?+g2)kZpzf>6tGlN7 zoRxoUm49|+=Z#<0*Syd7OdB9vjlnPYW>3YT+%>$Hkkn+e7o(^t&Z3|3d9;@Bj=tyc zE}+s2%>6?W;J&*AjowPHFE0C||GIg~v+^(&U9|iRYk-DN7|5F?Yitd@Ak1s} z^Mj|N&LWRpj5^t7OoGNrR_)5fWEUieOn)%om2w&PUOGPqt zQ0*(w-D`?uo>4M3W5bXRG~1TX$;@1v^aHL|v%?Qka5%*qg6J!G3rHHd==i9y@uHI4&M zBo4p7uox*yv%?0GGj5BfWkj*ZoP3+$&rIMht0mME?-JG$N!}Vf{(PWbCFwbQMe*&e zuQz8~-nZYqZ2#JnO4jvaJLmDYnH%wMZ@nk^+IYvODUs;`(aU!>?=I6{Gfg!8>%p^+ zk7*qq_ z+=A!jv(YmSxH_}3!U(M?oQBW)?8Hw7DrEQ!F?$QI@B1-eRnEYro6U*9$T77o9Jiv; zB9&ZZVR+LO&*U0b&9U}@;Kzcy(XT4mfpD7NQtV5f45W6z8NAseMHk%SOT;akC)f?) zcH?vi-=pfR0Bbz1c2Rn>@M`0R!^dV3!aW(}EsJk2qwv277#ghNi}b?hv8w7>PApFC z?~9ssbbf{u_M4en^>j&zJ+Mltgo~H{HDtu2!T`aEYiCYq1gnmULxl;B4=pL`pNN_c zN*0BhNttBrTpvwgz0S7RD|i5K?Z)+E&b)3rANy&~P+dMlW#MpEcWZD)%pyy=)~>ix z%ylH*xJ4}Iq>BlyA8??bT4qsRcP>U(`CE0_3m)+j^5nT9}?E z*q6R6beP6ke?eE{Cbmm6o3?Fdp`CQsb(WsvPcl%dw#>5BcxuJQ(gIhg};VxrRp+(3^&d3>NrNNVHObo+^4mYqa}XX3rMa z38XuNgk}fW0!!D`9a`!PC#z^DakZ7+MsfT!+^ba!!h7=AD}q{90OGk`YKyLM7v58z zEq&Mg9&D4r5HrL=7VwFKf*hE~-rFZL9lkkvRaW=KPe|%;A3AI&z4zDEEew8vi8-mx zKeITS?d;7PfB$r66RAn=3CAWHSDq6%NUBdDjUyPA(&*VJrH<~f|q9}EpK7P>PJh2x>JnQkj-rMBJ130^x1>^{9 z6cm6y)KcNHE>AYkLrZZVFb9{aBTn#H88hx^hZd&5X2XPSx4GM{FRKBN$eM#eB$}~2 zA<=nTsSGp^zDnBWv4%h1DChT@CJlS;F;XZw4qP@Gj09iejdHedsiHESAKDKEY)S_P zU6IQfE%Dv&2>=@b6?*+EGi?@L0jzyf-7SgdKJCVdPy5r5k=SYsC(U2NN(Bxm96W(pQ*q*vSxVL~=4%Audq%2KNSHa(ev}c(vR(r$704 zbgIj(3$3iIAqYOci&QRU^+~YnvJ})3rg0Z|Ut-v^k?L?^@AQjGHrF774@m23IFBwb z9QrVa+=F(E)lrOodM#2*iK*LMJ=VqRdov2I2{Bi_RNY+Vj`j(kM)BwS>3jgs09(ty zxmdVs?e%d=$xl!Z=li zN=9SBvpMaHAD=2wwAtB^B6|y^oulCvnb$z8JM@*J`W7jAi>{%AmxB}yd}-&a1#lv} zkLe8QT@fC3Pe+RA@uT#T7k&1-QNskFRK^a~@78M8-jbxL8xSOpgNQ)kk{kCVfiR3% z_YMzMe*!@>F!L7Q; z*B-6plzHg9n-mI<8quvz#8229d^FJtf4am?hp1SB3gxv`=^KR!v=#+&nsPEygMdHWE2wbyc<*OK=Y}Iz8oKWI@En}b zq-KV~O~)FBpk~Y|#%#?`x&OHuYcj~Sjz&HktXwC){Q{$nkt`YP;>Bq!;&@_neYfE2 zdLcyiwe&;*XFcC{x9$2Q<9cS-!u*&|s$-$muZJ-$OenjVq9cad4FUjSum33SDmul< z(eml*gg_jcuQuArR?8zNvB;ryb1@vx(agJYp}u!wUUe?7E!gNJS00QuP%MHu%J-y~ z1XA=;$b6(6abnv@0hOhctTC=-T$tQQ#(k3BSu4f}y^T_r5nq^o``Bf;as!keL~#`1 zjD-;FY&Cerw}j0FkvF{XA5pSN_irx2my@RGo#H}eeQ+Vu5$UKxjqc2IZIF0$(#;jP zCC=2OI#%9P=7NpS^@T;(U8gn^Z`-39`8v37(Vy*bm%2KWr(01xxs! z1&jU?QOT6;t?@Losq2fAeYQ};s_rTXFCQ)9@WQf=q}0N0@w8yZ>Xd5iBcew}mh1vo zXlrb1dII;Sw^9!9&8LTOyLU+IgcnZh^V*b2euEAzdHO`jqBtSmlta8uo+`Kor2w&7t^7`@;(+39oPBLKF&1`K43Pnnqu zKeY5rg^&baeE;_EpPx@zw@mN#j5WgWq#T5RXLvKJS$prgFqyPiCPCa%OE}%}0nlQMRh5pdvKYJH4uYa?s49$qoPUO!qmdYin-@ zOlx>Lx0-RN#hR>B;(FceXzA;o%&dZ~46go51Z1gfijKO@+bgnN`U)t@stWP#|9bS-O=fKI|Uve+D6jV>=m*G8*)4K)=ANJyob3PNP@f33xuCzB#N zP-P-Ry4-7@_QRWzu>Cc$wE#LpGWcGSt#wdKa^7|PRE}%$SwaS3tAtml;^(0Iro^CN zP3i_7ag8=Z8rX5Ci<9j1z>H_R_N7p{^F%#L`s>dGN`i14VU}x-6fH2q+B~Pq^v0iw z8p8hI_+D9#GXyNN#^g{rM%VX9_3Khxr-yz$FWqisNaH9q3VIKlnG!$!@?J$}e^wa0 z#hZ0r@)3?EsA>5{a@8%Vqa#@AatK6<6F0pp-j@Y`U%kMk9Um?x%eIauc352v?JLVv zc^+#In4JPk!*G8Nej8rrMFx>QU~M_>S=1?bVPTRi1A)sxO(cij2atcm(2$}&>EHZn ze}jA9n`dk{LgdJ1F;2z;!!JIs-yOtbh%bI^OHEr-+S05<9|C7k4H;Yg7vwl-{CKb6epGG?#X)bGcW>-iLdpb zr8S^G(d%X{s#40+gks@hBNtxix8oc zSnkeOUb)RXNAci(_x#U8KRHs0CTNS-K`H_V92|zqzBGkiX3=VFKJW1Oj`ZU%+%b8T zI@H>-YS`FVX09v@Q$dLy12hOr*>#&oMpSSg;Pi+;i;1(5dV2G(56j*he zEC9zSR^6aucU2T(_|7U*`lb}x-&)&RaBXKGJ34*Jdj(Url__;owwGPq7{wjGuY+lO ze+1>l$!l{7uJ*F`?v=&$m7IJ#egtkiQeNaM2KTNU@X-cA6(Zrxd_EPk@iAbwjLo2@ zp`hGf@^{j)7&tW3vjS@pJ0a??mIqS>-Q3b**#Fzy>w^v?*5n-LO2bJn5BA4HUz&{blKNp z4wl!BsECzNw^VK4m1h0-Lt~oE1hX*xX2?wMYw;n^W*m(rm7wO z^{xGc>U6hM?xTX^RisENXQoG+Y`7OP1K<4!i~g2UTnjICaE%L zsyAMYqOK#azvs~Trl=Vmua_0;+0~Y&@tdS>S+v$0ZtX9ui8b2U&R%ey0D32Roh{LV z-;4faJDaNPmM`TnYY_9Rq!D zD8w0BC6Y?o&Qx=ba_86F{VH@kLx->cINklXj$qn z-J1obB%$_>e zV4aJ}v^4`Ly1n0Xt8VODFz0Vi^i&R9be0)2fzAkKAjqM=FpIvJ6L+j<{XBSh2V`*Z z2~L}ieDX=FntqTJJpwD`^-=p&^7ZK;W@e2a(5@uusg|fZjJ(_T<%%t@MOL1323w*Y zyY$EX88VhZ%#NAfyAavYyV^2W7S`n%?JOvz6BgD%>uOU_^Ec_(vUa{X4m_c<$Fb`* zJ6&N745Nfa7`{bx*vKysU+?%UUJRx6(nT}=1j%^r4(POOJqoZ`H2C+jgelMaW>8@f|^ zWYwqM$c4lcw?7aQOqd=%hld`7GALdVH1va8R8aY-+fgEL-)UZHXGX>O@{ z9An-g6^43jcjj`+d)SSqYmCD)J5XFUe}F97v+T=+SDHgK-9qLJDY98GyaKgkne#P9U8>!k+}{w3CdI_ zHg6zi`S6~va*kROSPLil^iP;$K*-iQy4;s>AW7*9d>(lx`{f9xr(Jp^$Vx+>!})W3 zp#1V?7;q;kS6H&8#)W zMqyD)>8p9!NIZzjcI-Cqk`mIzk{<+6s><7qzcxA8EGQemE)*B}hk{6r_mNTcdU>%P z)N)-R&JHx%-rw@0q_|T$VjNUHAI&&yXA7-i1}nHx*Vm-o8&@P}TG?zy-3Lg~$S_88 z&$YrJrlVNYFehP~-%nt4hP%*PC(~Uyguj3M)|v|TX`#^c%W1*n7M3^TGw1Fqeg*@g zxJ#x3ErKza7JNl|LBnO`({0!7p*qp83FXvYPQxP5pvT~k$%6MgMJy*vxn#Ne|Hk9Z zDn?DMVBtM~$fhcI3$Z&xvRjV2XQ9~QE-IJnceotj36~JM$Oj3eUkLR)wexb z+X4y;7BOfA1d^XbbVkmztN0g>UML5|;_kl8(X#cRc@mO1Ez*1iRBSE{Cd3@{Ah6g? z(Zh$;8%GK=%K);_v)>8z5h`;zEtj2UE?OL4&qH%P%$*Irsh2!NL25svrnjY|?M13{ z+-g)Yvcx1|^NUN;W_U@aP9L_BclNx^E^LnL{0W&x4tSYB$onjW$y>KF;ZZ0 z+I`!CJ$ZpBKd3$MKG&t!?++w-!&uDhItu~Y^7ct6lVlfoi_=(zhKQXVF8wa6U-nJ& zzrU#vmq(LF2H_DoYPd~!b?L^o4m1@$3Yby>4*k2ul;oEC^K>{F83gmuo23mo^AsXU0uQKstNQuZGkFruG*+xOw&!@g2g+ySe$I9Nu)=rTMKuwY%p@qyMj^0v7p=ogMK(3VMc9WSAryrsh+odSz-LZ-5C8d#*#C`v@< z-XwjqOl1U@$V|4CfGpgEY15oBZng(0vjduAIxr-cL~?Q$8BYqC$X}I&(!fq|n4Lgd zt1iJVE{iU)qu~Sb(4bDzzpo|Ym7C4*3pK0Lay$~a;8s$Ik{V2vPe5|zesB9=Gkoyt z%d_ULu?t9;oRy^DfThW;odY$!tuw&eDO}U8GFCx8ixG@up#cFl<&EMf5Ew}F^0e|2M7_+0Gx@ZSrSTBE=WL5mBbNxLScrN)~ZD5Hv zdSliKRMKE|DFt(DK7FRDc0aIdATf{E~L5W$J4~=FN2*A!3G`_`T42 z|IpKql)s+VF3%!-(tR1jAIpAo&wKkFkk$yHTHNBH$NIy~h`A?frv5&s7h0Idpu0q! zzOv3hQ1mLTna@DP)Aa2B?c(0{hw5mNwJlKt$r|?=tKWmZMD(im^#`UwQD*309RF-R{mBde>_o-?95GL{g~T6;jCtf7 zjFt{Dn=&zB&q)woo~^U^<|b*2yP2Jh8kd6Ja7BLeF(eiZgP@vsZd50X-Cqm6O7Q5K zI)ka%kr@ewJ<^mU^CvZlNO1C3#jRGlF`LFXF}_bM1pmuxQa6&`pt&S5@Jy>9UwdPo zNT=|EV3;%=%5Tll?p&de7H(DCkGN^4>)4bFPo=poaG5Xkv11oiS^adrLfpGFP<91# zvC%E6(=p>*?wohR*?s5?uXUe(sE5_7X`5xN-{LH2wApoC7hQP4Bx+-W=(zp#PniS! z(|>=AVsCDlR*a5?a4*m)R(APzCy(`@yw~J_%19F(glf4N?v1SxE@I<6D5N9@6Q^9) zIW5!^oHBE;jyros@AEQ8mgDZrorosZ#WOkPX@}a|icRfo;-907J|7PU1zO-aD8wms zq`5m0kqS4pnA@^SKIM+L$Ou2$;df|t|GDzg68~9>x^P=jEiKJvUS>aqH4gUsB32`@ zu;qw!_#++#CYMjA5)G1w@IQ~~8z@lcK8A*>S=(Ryg~%9Nz*(fYoP37rJbUw{G>nvV zvf*2K&sbT@V|zcLxa@z!z5o7&hl!|QYQ1bLneZ+I;&sS9w@5BS;e!<2K4z#hxVmYL z2~k?mXl`6|>PDd`%kE@lFIrpTJghWpE>Fj%@Z&jXwk+5+rKFWXp6&SiVE&=@-7|3c z=gob^{kR-1?PgM{q-#fUu>a*#<)HZWy5q=utU{4Zip?l14yz>iVq{G%96UUdMe0Q=rT^W}D97Wf zaoa&Qh!Y>vM#(^+GMlht8JjV|KOFe8+DEg2P=)u6vh%}`koyO+zZMLy($<}P>-!-I zTXs4WBt#d4?OF8>Z+RrI@LBrMR2J`}nlM*rN6UBk;Sch4Z;M62UAAZ$ zXzB!5cA$B4MC$?Lt)ZdUSqz79^|I^D+yKYR1e? z+w@0N>dECGq5bjs_zR_EfcvjDlO+WyZ?t@Md7;*ZiOkxS1wk%&3dlSD{}1~={?77S z0P$9YQGEL^&!KAc`HbIlCdfbIPV?2>^`16fin9i=wL&re&64w!E?4IuJ;R#X+OE;ZUJwvbI%F#pSQC zIDa&(EW*lMbIp0*;~rz&A>xg?+Z%Z`U?P>qE3`MlSkhEA*L5XJvREO|sF~&Iqd4uI zO)d;`P>*;N)efzu_t?Fqkn1q7+DjPncfX{E#ed17P{^qm=#PKMo%`u+?|YQ7Sz5f( zj(Qs#YwA!Gcwh3=t;o*D$29(q@OFUL*EpriKf;k}i(0Ig9q z=iY}_9?qo}!s}amARI4$Jw<=51V0xBuFrebLb)uMIK@I^9!)0&;a{8JYRdSK4hNZA zYD7NMyhFFPJ9(={rr$7IIHi`UA*U!+)I>G{P5A))Mk>WSr;5e3TB-9YIE}CPBoEZZ zzCM!;Qn=+weLc+{pNbQp{7RN7tXHkf}$ zbNss0vwsVber*dM@!I!ED--=gL)@K$qFyE$aze<0XJSy5bEdR=&Hg0uH<4-dnfYx# zHE$@K){VPY#4|eWDi^rb+YecEl>RV*P!6*4`v2ehAC8971R7bf5UFW9JXnAqHuqh$ zsms?0{`+x_-FaMB+PgDFukN03T_~6J97=Rl$g%VAs^f%uYD1K*VoD_{-3MnF_=o)k zdpk8$p8rgO{{3GOm)+H#UUg4pkwb)bt70vF5#AkI%JK zgB05}AW!sOfH>(F;L;oO?DpCo?G#=1h2VoTEj3VruxKTS__D#5KGGyiIwouC@Z=vW z`ro?_EP?`ImeF_roD2N}d=!FC(&G;6b3)8kKw`7>^mT=y0-Zoy zrzxc>opl&5jif1d%BQe`a`+SVj+0~R32WyE)~`wqI1Zk-W`+jHY{t!R+fNe;bs$o% z)qzR11yah-?dh)CFAq+KFQ>MXUprFX#LWZzHav~2ekvZ7$bP!EoB)1hEgbRtcU*Db zK_PU?hgl)OYD0l>v;e(~{0*xVhKY z%m5VJ&`X7j!EejY9yByqt>9Fj4tL⁣NRJg!IpK^2yb+UA{rGVqR-|$l~E$AW(Ml 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

      gZ2Tcv19tpE#<-tom>6ecF4Wqb^wDVx zp^%c)Nt;QTD4jjzYV*O={zz-C56I=1wTO$QBymD%wv+cs*mdp2DuYOD1UDHd3VHr}7K*2iz*0&g8S>citK z5acI4^dIT%f6`I6f&5IZ@8g@8AH3u-bNf=B>|w3*cEQsrKIG2EeG#JGx9$sBd*2-0 z2xTn;&7ciXb{)SuZ>VDv_ZeeDn7$jj1$u~aH4FW+EfXLi0asU$B;0tK4~webleMk5 z9h-24f*i_?1GXC@r_8bjvIcAPQ|$YnSB3Eq3`Tl>o2Zrlr*&+|Lmk_b+ORx zmCun4Kz*^fHN;YR$CLs+xcY8-wM&M?Kd`>Lb^yow>u=*~5=$3{65A6??#J_Bq%A6j zAXFh6|97_4?l6uQ(m52kL05G(1S$L$sFkxy_r6Rukl&uW6~?iub`=Z|mTM^_DTj|2 zhlBU*e^($jkZG@sU8Hh!dAK_jIxFJ0tAgY^CN`p2Jlu;@Sdo@ovkVYY#*sSwHZRT|P- zM2BhV-CwSyy-)%6cggoyhrQLV7oPNc>CJfuAk%$ z%UPBe@D9&cv%8vNwnK3FpBEmU>5iwHbG3ll}Ccoo#mC>4vxT#_L*ZJ6ggLC$G zrb;htM_#XCJFElxgzxd^f8NizOOvtj^dak^1$lI_D_aZ8n)KF7ViDgr>d)8CcMbVW zjzSM!<3C%?Y) zJ0l+%e>;^$ji4%*ta}U=!PKx%&pSk;%Lx`RIj8mA9ZqxlEC60S4L&lRnPwMWOKv?t z*;+RO>Q~eapfWgYH2mIv`f?KGEB{d9LKSc&90gPB2hubJpivaxesQzwo0+8E?AAZ=j7N+<4o|L0*UQN}NM&6e$Jkc+*E?v)a`539p_NWDf zC;`H2fY0EBiOH|aH$;^^M`v+@eR#KbQgNR9D*FiB!|rw#WGb4a#n_X{3SCyAc=m2+3KaFG z$>K}#;4CyyDb5t%a3+`O{2h4Bb1X;A~ zoVF>FZD^0j z>%XzW_8mM@(VXX!WjVg|Jytf5aE>JBlBi|9G5aZDD_%ciNzLRaFTm>sC=*{gzSC1q zvkgIdb$`4Q>$*}FYalC0E8hdO97v~mjr#6P#V#1vplBL%sspq*@wLIK`2}CVC!N*O zcbw83j%tM+Wl}F?r$4N7h`&VGU25^({tIm7p~~Q;3h5>RNLan8=!Od3fpykitFZ ziT2G6fn5P+ub3WQmws#zsHZX=!H z45H4Fy*dr0{d(7{{kM}rYR5t86yGlC5CEWE9%$PTZ5mW`8ywirJEgqGdwW-K-MyZ( zmSOMsv(44o9>3-nclgi{U~ym9s5mIoi~!LGw_R6@iu~G6`}EFpmVKn0 zdMS`9e1ZB>iKyl;Wt?EDZS-Cg zyE#iA+E_Bm2x9$uB1rA@q}o#eB6`5831j=RR7DSgbCSL;tkOa8giICrc}UNJK^s*I!=ft;n9dXfaoJon!5ov+PD)l#O@6dudvqQHHCzA1KuT4e#MDRqA% zq9%cg!)^pE0Hk_uA$8)yJJtx~c%%@}d28VLp*#ax$U?Er`fD+>*=I3F=1Xx~dR-br zZiUvh6<&2}R;R9*-S=FZG4!NPxS$v_N2`X`+N`wP;cBuHhjD1H#@wB=*p5_=I4L1Lc_+sAgigTG19^+I>HO@$O@wkP=N$tE z4)07-cB;D-N;o8x`$k%je<|F;IP)ZuA#o|qgYzbcJmjI4RRR^!Vx(^HdMVeqEY&N8 z!c8Q;`cy@(mB@W)?&H89x>zMw z0QD2x^{H>z_vlwM76z+KX1oC10yB@Q!-Z35cCD%6gUN_SYWc?*NRhKKTO@P<_K_IM z7f3dWIgQCj!9x>~@gAY|@yZ&3Wlba7Y%vv*^qwDMJf~`>1U46h)gPi;;c0jKZ=5|3Xr?ax{6iaX_7-<5o{bPV z&)EI>`e3y|V@+7F9{O6XJ+jw-I>lUPr_ll-v>p#CwluX9uhi=P)iF+(ogcJbT|+i; zlECV_M%KvUHsvNlYe@TJVF5QhGB+sJxOCb<;$}}jf{IkOm3F$cyTWKFgGiIqt3jPg4hBH+G!!VPk6nP z0^KYH2+Otw{{mlp3Qs!Q^#R&_Wvb#58OMozHu)6xzsWj(dIsb;jB@df2`W#l}(#oo{lXujf&y1s}v}A zLd&+u+9+tqtK%A|LuSzTL6$1cEoh}BEzA(O1>~bKE1LF<bi0 zYAi$=bW>|*9n@Gd!z_PKOQpK~U6Fea{}Uh`A@>RV2#@jW`yK15jh^UrT+y}A-urOH zG(dEdun&;1j^#K5LMpExeD@pP*>!X=?z<26Bf_xrbY}sY%2n$7Op{IUr3&QgD7M9IlY^-0`?PU2J4JVLg!N z07W!t{O8bii>~#YM&4U;P5?L{TGb_n7|F8sdieJ4$PtB zi~ly0QfaO4{jM_w5C;2<47<3+3d){v4{WmQg4|jdEJky~jn?_Y#IOg-tDSg>5B0BB zUH3pmxPE)M~b)IxMBM&ENz#RY1Kq>u>fvC`yM?v#p+RmyLYkT)$`?+ z@@yPKY`xUz5S+(_g=FXQ?9_RW}*>p%_N zagwqYLYLgM0$N6He2(n&9IIouCepLU&zo91?3M@uMf$S?Fc#-tSq3L$8B@E3StH2r z6@M?yy+o48xk+EAdgf2XiA8KbAeGut4Wvcb^fUDmj1$S<75`d<=pt}0ac1V|k^f5_ zI=%;hrGv>lzLINg!Dy#0Gt)YMNhid6@N`$2`OMKyq%8>uMWU>*azSxM4XS9k64~^e zS5n~WgPDYFg2loH~&+>fodYL>GE9{k-;vS=}I$Z&XMoJ z#!J-Vc{Y*4o}U|`P(bF0GS=D|fI`nJ2hu5@cDL7lS9Ql7Jaj^;z+iv5fJ)fFLqK^3 zLd-uI*u^g#Ved&6+tllLjDFT#8f6zcSl5AF0?bmRq$Kq_L*at}?cvcgl0A^xW0ef6 z09xaie%qcgy^r9sYPxj?-f|Oxt-ZIl*X^It$^BE0*S*e!_Rtv%_dx#aJ2Z&<^ifwV z+p}kSJKppf-eEe7^p?T5v!8Do;sGR;Gx(#vNWX5n#O)FFrk_5+TcTzx zu5?sxCWP>Rw)jKj^CykouEh^wrUhLY68pzcyfeAv`25y{y})}MM)T(jfHS}*PE5TT+=Jznmf@Rrb^6UGy)_xgXQ;RcQzW&FX?e+}-~y~>8h zX9rCOi!1;c@bI_Mv?IS{-iv$|(_Q)gIq*{{KmMnA6Cqo?{5b5Cu_ou!@vly*$>72@qYiBRQuy2Z)>>$ z-)0HxS>fL(#{T@qU!DU-c;ImT-z0?pH3R>8KDjg?I=Y$R-irTf+x35P$x0;3IBQUe=`?;0MgQBO+RS@P6P1(4_$al{zr{hOUugrM((5Yvxk}ZLT!TLb%Wk|#oRL}c%6$2U3 z;Gmyx;>xJp$z$nJSN-y?J@hq{Lc9ploDz zd9*H|Q0l?QXpZV9Wk5ES--HO}E{-;rE{-I%%bkx&Gxn2fA&*tJ+c3H z_j>~wxhLv-5LmShlH$hz@Yt2h%jEcP#a)2B0^F>_H$cmVE(d0*_Ha`SQfkKe0p&d4 ztP+3LBexiEm7(;g>2^TBVZQIU2bu?C>Z6gTm!W(N1USD0f~*!qjs0&)wLm#b5GiB$ z=&L{# z{CZX9F>AdL`d<6Q1wDkuXq8Kn$Typ#rxosLY%`jd7v7Bi@}fB%unN8bsWX(EOL$g@ z#>n)cT%QYy4l_k>95ttVMGj-`!0Bt5oVU)QZKZfsP>85{&{v2Tgc6V+vhrLA%8}#5 z&LgzRHPo<4+b3PA#bC0Ma-oS+XF;stY>$i_aSot&OAZ_rExI`6p0<9FqMF`7e#qr@ zBJpnkhF{Jyjshv^#?g?b2DKt?0&?|-3K6-gS#@P*p` zC^P|CMvn`ih$%%Rnj9zh*wCqXJ10V_p%dX<^B4ppEcXPcVoc-D3@1Q-%g38pifpfa z=uEjx@=2%xgj*>Z_10D+%PfGJzG^zS`lYB_NHD0-RSHvl54L*s;Y6`lwkFDMZ}$Of zt?#ZFval34QiBKNRC-)dD<^_Ar=Z`{WSCJ!^2>Q* zdb+<%l--86*uO0GaR8w`pFB2QIHNoXSIk=G3T_Cq_00-Q*V9YnF>Ou*?l~y49Wm&W zB0Noir_nQuESIHgsC6kLa#LUzUAGBmzH9YCe1yZ4W@AYOVaCeq7ld{elD4_<{ zaxlVke3*dw0o}M$Nv{Ac53NhRiejbTzi~}o+P6qAe|52yqnZPsXcGvq|O>2F>gVJB@k6Kh5D1pAStZ*!c zB3%cIkg3vEGq`GDv9PPR;zTv{IyCghjkI5w7Q#K2m%;)F8mt1q)jW*ISvV!HdH<7+ z?jC*LPGQFG7<7jk&XHyU6cZA7(e0ZuEYCUn8B=Q=gs!supN}RD z_m5p4EY0R;B9gn}<74a6xcnJZJnDnq`% zI)~sI5_X+zjYH)H!>8n3(yBBgs^wjs!gp(c4o{4R zUDyOBLJhKP0`!DXN)aG{fc6X^7IXHva(hN9ErPS*fpQ~7!03ezuBkjhqADR@urU%( zct_obE7IvO#QX+%Z`y!;8MN1G`R#O&8x@BQ7J~qr#MTJ-_t9DIy%Jn&^y7d;R|lys z0Gt_wpi(ZIqX0sDIL!Gr1@CTA31bz#V5{4GSjMt!OS6Qmf#wPQ0Pw{pqWoE2+Cfyq_sbHc+Cz;RV32veQR4|p zdQPUse?^2vspsjQecTdT-v&UmQyYqc-$r-7<(qbyjTofNlW8Jd+|8r7z{!qFF|F?O zCATPvR!LuDAkSK5BF&1^MS3mFiyrntM!BQH+OV?o#KHwPH?B*R<`Hn`Hwo@Zw@Iwb zu+oIG2jV92@hR)`J8EC(*@{-VdpY;^!gsb>JY;EM0Aw7MuQ$uYB+RHdWZ2tjFF7d6 zT8c zx0iWZ#FMonEbj#lc1(u}x(6OD>Ff-E#c1xP4Sp7RVjT+tl9j@OC z0aW>F`JWNHiazA@h74?S^dJyzu_}~jM>S`Kn+4-pll7WQ&}6U!+^oz)d-m6&mkfG%KHNWH}=+i;X*Cv8T}JR z>E=T$heaJLj{%5XGKE`xY=^=}muCW6lDe2`&oPv+lKa%gQFtj(287Hd=6Qzxodn>g z$nLZDQu1a01Xvg(o;M=G{6T8z58t~J;9BcZ&kt2`Q%|I$k@peeRo{2^L5mu!hAW)1 z0{Km@5`!~^l>`&RpgjX&b)MLek!ofaJ!*gteH z>mqBm=0kxwQRVx*9xY)x73uavFZhH<{q*0qhFVtx&skWCS?&B9x&@qDSvVIy3=^P1 zHS!@2KPdV8eYS0YtQlkI|8=zbkX44BFAleQe)CK;vy$Tu1dwQ)Z@I_f2sq`ns`+^} z&2$Km^4?6_o?*u`ui!SnA5zUZmVJqlDym!?;l*gR+)q;KPNC3@d*vA`3gMnyku`wm zFLz6{D z`q|E0@tmbf8aGS~U<+y4NTpc{ITs>PE3qmHLz-s!>7O-#%Z6ql&V1Sh6!)Wmx$0M0 z+w*y)DtP3Rf*yZ#ul!k(*>3mhvJV@&Dx<`Za2Pt92Q#wFhEP;2n?mj;i1x1vJC*i; zqxy~2SEAwS!4;xc?SJP{%8%YDsozzFJOu^x@4(%^6_nRg>wN%vQ)N=GeVJqjiV8Bf z_IVzP1Eh8?Ji$2Tpw(72*|XoG;-X61#lu^Z374_W<$ntRI~D*C=izDE)Q<{9%h-N# z=-RRvX-SOP19qEx@pQQ2xfcf6-*g!Ra}j0&%E)z~QXKV5`OV@R36g{?a!3OdA{5AC zx?4$k%=Z%g(E_%jXf_+2wd@^nia| zx6Otv_Yd#YBXPf)8TM-UWX1(|MAn>Ej4y4ndc|L!-6Et7r?+eDEQ58|DM{ejM9#JT z**ey*{`&l^wl^H9$=#ICW6OT8KJSf>1`Nqd(vrr%0lw_Q3?+|w^|Wu-v4m`EFJOgf zD!Z-A8*4deKb9n-r?x4CxOG_zxxB~e)*0&NtJYmi$l_2RB!XzbRPf5tNWi1qh%A$`Hxe%-vg%hIk!tJS$%^GlVP?MeLt-Yr_g&K3FE>ubrNtbDl-|;|dnF^TPE;tBYouz_ zvo`DWK5TuAmGNy$WiNUp=^wVUk5tXvceKzG_}v~C5r+~d}n*iboi<#{?7?1#MqO&eGYf~rTGPeVy^+NDDHa0x7`O0EryIYw2j>$0KSX> zU~>wfYhnYkDOjdFL0#a?`T2m&_xpAn()Dg&dxBQ!u>9=6wwFgRcMuBDwH{?C$)Yh@ z4QM#DxRDfh^GTgq=+O$J;wJKUSs~6=&C`jae4PW?f$yZW_;o7xaC^&YfY^Wvu{%nw zT~c^aXm&7Pp?H2lsOa};?CwJ{EenF<;gw#A6Uf{u&0gV?@ffM%!Roj`m_&0jW_+%AqyXW1m->eBRu$MjwGSi7*+@nUb`*K!9kio!Rh# z`|$ieEFNTRsJ$$Cyhh2Rd91m~TCmgnYnS0Msn5AAwy@ClDEKYGu(Jx~3vYaOfK5?@ z)%5``=M=d+x#|f}j*f9{=q{Va+0qZ{mYEC2O{<%9=%?PlATZ8*8oJuihI4z%>scST zT#+_WBtGtPIbfKOTI>sJ=bWUo(*&k^(g+Z~2+`}~Y7vZeXHsZlzCwyy{RcB?2!8Bs z!>2PzXQu!NX~~lsl7svRD5$vn0%2DtJRo~+rT8ZhwT1nMG<^~b;lBpAPTi39`KFw7PBMVG|2UZ+tBNy1p&@-*ngpZnWJHRCI+c{}T#iS|NIXI| z-~E_PANJcmhigSZy(K4LgV(C9^xAdcvJ0YN64OK0#(AjmT1=?`bob(i87Sa#VUI2j zm5-5HIkn})=Eak&bY2fa`uz{wcG*h*hrRdwYN~Iyh40&f1rbF71rZyfAfVEutBBH3 zFaZ*Zf|L+Klp1P81aCz^KtMW36GG@ofB;bxklu+9Na#I;9v~z+%V(dn_j#Z99qvEi z-Cr0PgAYm8y0U)rnsZ+B;-&>oTL#WaBy80ri(I4n6IQ@f|#| zKkpvfhxze(F5m;f7=`LHsf6f??EJuO)X z%&)}JRpOKMqe|niGU^uaq8fglg^qRXfor&e=fHgVoyi@;huyLxjJc&WWX~n8LM4D8 zyH(upNpTe6-XU~>>Y_)r_n*0%{9?R3BqC&3$DW&c0x_xu_DruC;IW9;??`f63W9 zEQQFoc6!#fm>&h(^MHC)E^99``Y@7Cd2m;3v)V57W_Cd`VuEjJUx<8yRe)Zf%=@z% zEp%yn&!yo(^0c%(E^kq7txZ0VzPMcjC)6h=?sOAL5Zsm^6`+Ii~_u`a{or#?-9S`DY~6&9der6`TQNPin`>?-Nawq7K!eE4za=t*?!1$;^37@lIo@oa<;a zK5(T$c;hXKAQE^NtX}WxLZ90Rr>#-*>9gOTH!ta$_IIP)TwD06EbJ1Wa_- z#sgG+1JRXf@nY>vt8dP#Wlcj+p24|3u<*Jutop^oeOqRF&`xu0JYcHo0=&VWfn-Eu zXrjJF?gf0fp_&x=a<3IdDro1^z$#mc#i(Q-r93XSq4P_$uJmzg0Z`_K{xh$9DZ#K^HUF2K5=T56Rjx|tUQ)5w*gFdJ$r=+4V*wVeMBS<$aOnZ9rFD7 zDfDpO>#kQ5&G5w4Zds)>Pbo&fJ*vQ1pEAv>cD<(+AC61~j&*`{%~vRUXCsh3sdN4H zEMHA6V$V@M$9YYEYpPdTjjv~OOin;kk0@%PH_xQcOYht=esXTTW(L>)708yHR0F1# z9kLofhzT5A*-R+#EZfIQkTGi<6yHs^VCPsrzI81km>?jbzg5)kpIVAfM~%N7m1qoL zv)x$%d8^m_(inY9S7*Vwu15$VcbLN+UOeBe07~LT+ky#WO?acqcRQ!c;UMq*OAOF zZT_7hzSB3iUaNE6%f1{&9x&Zw@l@EOK39Q$N^RM3@6*-OF)gst_>EkTw+> zclh#ar#DQ__;)O-)Uo)$*w_@~kIBB^R|eOZ_tNxEFQC#$qcgb<7t%$|B)Vm9He@jq zMOEChZSbCnHjcSXo?KtsWI8CfAk!MCo08jk2vNLo-xXB)X8G|mvJ75 z%JYGS6Kirafc4W9yX<)P6BVvpFe58n=+*-Nf2$JqJtgS@)+YroaD6ffv_Kr)l3!D~)F@EsWul<(=GqBN2(; zFtuc~D3ut{v>2Y6>z=;v`P6px?C0=BH!->8%Mrh)vmTLppAZXp#M0xws3gX>QDD2KP9D9#d8~5ug)e*CDShEAb0m); z&%N}r?ayo^&u@#`nDwX#fOCV&GN7-E8o#`f@)Y=9A47}+!*%?D_5jD>YYe*Lzb2}T=o4rwnTf-t zPBZTDP+dbW_@70_5u472zgAl;1u%e0Z{H9cP|zJ8$5jKZ>aXvr{hab~CO;3=xHT|I z9yFzNLLvIF{+#7>yTQ?#{x6AXOUCJaX${|31Da4mSxe1^e@piw0k3dNyCFi_3^XK> z=6}6S5bX7^Q6+80L~5vEXL#6UPi%gmn~)478$bapSK+Is_gXcHKWFfO`a3+ax(lpI zB<|ablmx^_B#E6He)&MjqSNi%>55*|5`|!*%=Z|Bu^HKSHODaB@-ww*bVf1`n7H_v ztd-t*zW*@NvBk+BTW0JtD&wo)E8n56E&H9Id%YE0EbT&7^YspC1w^ijednh{CjAWy z1uSbar!0Ci{6fA04;lA2I6x@@p^UJbgaiHMVOm4A=XR<_&H6 zNPv@zHjYlX`WJfuO8=uK{V0K82DT_W7ht?_a^6)@%-<&e?q$$(AUx^|e4ubnlmMIoW6CFg zi7MqjJ_StQHhD#S{p6rw-*~vDdHH57EdH8h0NK9SazJVL2@{ZLb3VKw2!wuXCDSOiTT_M9m$TM6I&i1D-V43JD4&3F=Wpjlf-#TYU%s{b|KR1=j)RW zu8bFhMW$2Ntc$F&Au&t~c{7;~qAs^wn`Pd;%0aPOyi2$(;^_A-_NK>frUne&bfnAK2GLYZd3E%z_f-E>tqmrqF=~2GOG5FBkld8G85as3 z>#o;vp|e`UWX?3F-Sb=Q#u5!prr?oeWX(!g2Xc?q=GK=-S+0b~Wa`)Cbw*!)xlIkK zG@kYas75f&qf=w4vIi`+I4FVpO6jmBdXCkHj&KAzK0ZmSF|iHAwQX}s$-r%LkoneM zGBxjKPPEr$waSGT?UQ7CC$0%zd;Ak7-LHLs?`)wtV3XkgH196XVQA;sfaYlVGsVOoc;Q~`7JB#l zzxX@kMsA4qo36X(a?N|yKE-qyhy?G8`AhC<4f5Rn>pXi-^`5!@M6K^N^)Bx*{VP1l zZm!Mq)g&)<_w#kV~uD9GIw=G>Dx2uQNkxt z*s*w@0Jsq|JM5}onFcvo1s9V*k`YC%L6UZ8oxKC0Iy(8^1fU+5>4F&J`aks-$l#w>%PNPd_NcJk75fR0Oh3}x@5H4qKiLigP2dZIgRgB(? z90}dSUR(ceJA&=j>}+d$4@D^iLK9iEX(?TJLiOjb6e9ca7`=L-$aZ>YcfFoBq!-@T zHIVtHXp2EkbV^Gzt-ARsBUyNp*`!WqEUwmshZ~H~Axg~qdisvSu%WFjHOC-6YtS$2 zwp_oeWWmM>Li?xaGCbhbE|ox^iupfT0F*!m3B7p}0qc!|qtzA`7Ko`Ke`Z;Nh0ZN2 zb&a3-Z6iN5wg)gm>2LF|%yFOAVwhvkD=G20O=AA8Edd^Wzk2#eM~X?C)o^~7end|c z0@S}b?7>g&=%$e*Nxw<{t>bURk5{xBq>+<7Ivu7fK3J{>c}%xiPCtx`GZ^RBSpNW? ztG*UQ-JWTXQLnsB=~GltXpEIs!IpQZe)}byhCc5=UDtn%x8G6J0}hyh0hj$*vEyU! zpSP&v2eP76R5@i~vN2>tX3eL|xk9oQpH_YS1oPJCp8!GcIwjNV!hqVWpV%771T>MH zMXQ$?HCZr{+m4)|kGw~7+58pt`=wQ>M^fV=E(MyrCigyb~Pjzk8?&?tm|t z;`0Gb?OrFaiJ8^aj#VruNZFr?pf@usYYFi^aRyQeYH4zR@~8&~3mqK%dqc~$LnTHOMonk$}VL zf%;9m@zK?2D`3zu7B!MJhVjf(ttA2C=!tEYZn6M<_Jd+05F>m-vgM25FwNW8o8N_E zMbPBqpI7ms`ZtGj7Rycg*`)dS5lQA`RgW!mlhb?q!|pVJ)Z2QjH~+3(X9W1Tp(Sg$ z%42FYg#YMK93aEad#u?lYqE759CB&^6HCvpu5%M)%LfBMlydj&hdXWvn&rwuiDNh6yGhd-fn}Q$yH)D!9M*fsFx=V9WLmk$)Yt z!64ZTnfnevy6)AcZlxf|4YxvY6idHC?CEkUC>vV&JQFO^!ml~8f6v878JL;eitNXY z@5OqjJnZ8tc;Nl@(I__0f(nIQzLnhIo(o11H6M*3N{ZsV{&-EkgMiQQytXVw_&0X^ zT5{ak%`IO0sLH*w{)?qkX}$4K*YkiME&-lT7#78rmR)z7TXay>$g&)-d{_a)`y)dQ{D!dB-jE!CB^S9Xdb6{AkegZCn7Kz^ntU(HB~ zYW&w5f4V=x$K`I1B7V^J{Pi#0{fJKRzySErgL;8O55mS*E#>!MbY9Ll;!5~2A+mtY z_H*}_Nf>3;6d}_d_Q!90eHr-1Jk*qnztyQf@dE#k|E}Kw(3g1EsXw-T|2~27KX3J4 zSLA;#;D6TB|CGi5l*NA*!+$-5{--Sdr!4;eTo#2#gPjc_X(-#fnIC>^Y$b}mk6(Vh z+FvRVSrxNqCH^QZaOq;IgzR~??Erxs_wZ4Nen-pm|BE2`FRJAKyb8`d2SA7`RuTjM z{JyXyE&Cv6gC2+=gU;U|={&h>>dkt5NbnhR`xBxw=n@@?mRNacb@Q;tCB|#99d&c_ zy$NZa$v@_yUO7}p%%-yNME7-*D+2KkEz@2%oz&ZO6V>08T?oH-b9cmVgUD%lkWJs{ z96qH69!n(ZZ>A-$qau^mob;Mz6y4C)Ngu5OD_@h(KkKvq3M#RuM=ixghJsYfeS`&V zUu4`xgLSKtaKEe~-C&CWsl6IZw9 z((+mBqpAC;5XI$bWG!C}NX$Enhg!2SA7eEtb9c0TW^s)X86{+}p~9?O0ei_gwZv_Jna9fxHSP$dY>=pjibQ}{dIgAuSt$nwP=aVLx>_vuZ zAYmd%*VssIkWBl~S=`2Ul=aWHSJs>Lkav*qKF)B#QRW^b9;{}JvU>Z>?fQ_~>!4#u zSi&ZMU9^Rf*>WOQB1_%2g`wKdDiqeDq@@=3e-$Dgf1zR5F==#3y{@oH{_#$*vUM`H zYQ1sdl6r7_t_IJdW7F&d+Rq*j$0{Um=T6b&nHn8se_2*3uv#xvnTTFYvIy_GV?AaB zHHYvTK#LK9K&qq$BKL?485gX~wOUh{{a75F_fbY9w%V3!4Y9R6 zm6D9b?Ajp6kcwB{SQ#+^>&FY~^7?D0xz^pumEg2+kg^^M+cOFQ!wh;q;T1NDUFSRz zFxAY3_}rChN4|N*y!W=swwn!yt6@X+dYF`6e#N+j_!nVjefma z77(_CelQ^b9lGL8myk5Oxz0H(xPI<>0smW^Fz$(?F6CX4nNO34j0NsODoGG}8_7Df zgfJwF79&=Re1pgf^sQ%a`%-)f6k1yQPoAvo^&$IV))f06IYf+wNAhd(wYi)31bZ1+ zzf6sp7%@vK;1+KXB8Rg_c#ADlR=3@074x-Nrd`_-Am-MJD;5fGrWZ`TH+*02f8+5- z>C=Ew^k$Y5!b+xXp$N;-Xzqf~rv>ZsH#Uw7us;vcN%bVo~|BgYias(!}lHN@+i+M-=*vYiskyg{o_XT9#2+y&*rAN0NXR4 z_oN>9-h~sb67YqU7@x(>3yEVL^1aV>H?|?|`XLW|hr+s~wiVj_tcPf9eLF83VjJ*W zDqS{T8XL+jIgofHd048ZAE+H$;)OdqpY8Br^@qX74jU8}PNxua*jW-(HKU%_o&leK zec*laTJeXu(%R$?DtoO}s-^+Zo^PEeEDdWbEPFdbMveIUKMT&xbGNbymjlI3J6Bma zzf@HMX{AcR(EqZU*$9nNe0wsXu)Rrdg?sjL1lm`>xHsWj-L~Z7 zIZK+Q779tuUWpgBs+8Syi1=aeS2+C7GdFzh$uup?Lb06v)ZyIwLMQ_mtbmMP0gG|R zB?Z_819YLD<%iRa_BqRW{(4z9>5+1nkcl`dDqwl2w(GXZL|Z~OJjqtrtyiXu9Q8TWs;QW3UJw(6{=m!#^P3r_Yw+Uat}ldcnME z!=SdNw9ag8%-h5)9IkyhKnDAs5dCbvHnj%V#)?u{&^j$Ld$n#y7uK^@vRNvY{Qa{hZu(5^ksWGqC~NMD?x#}@eZ05_z7K4kTBtvV(%~* zo7pVlY)oLzMq*UPA>nd>5i#XW4{1m?_IsO3kuhr5SQeNQptJ5F^z(y6w{!I3z; z{TwK;L&Gi(@7m5;8F@ihU;loDPc3dF$lWBqXChF_dKB9r*4v?lY?&58Q4onMURvmf z5L<2=%gU#1$VKKVhn=|;NC_7=0MO2U&LAZ+!JF?aB>c9Tu*dpdq*p>)_pyPzZ@d2+ zF-=mN3X*X#!&Y-BZnA8rR`#81=I7gmTuv;2m1@g#@)RQBx~&=JGbo_po9v~zC@2+4B)H&IZLC59 z+zcQ@Em?SPsf(|LeuFZvP`}M~iSQ`{)jF*Qx*_*NwJ6Xs5;0gSLctgfPI4q&%}n{{ z8KWXC?7il}-H=pQSw6rc_`K%Xmj}Hg#rhKnIbW89w|hl(dMerk;ss9k%?ra7yjn=F zT5(2%U=VP+g{sr&mtw?711YuV^z)u$rfe=-doPmVPj1^R^|};^lnX@j1`FDHSv<_d zOt5uK{a4OlO{YP-3rpKkt~c+$L(5AX6a>(NGJ*4R*tx=U)^Fp3n}H_h=0d-Q%Z8=% zTKfJ#+uiU$2?K8AFEEDbL!{E&WZB0p^9;Yg6RF=&X4Q+`mSYM{T*~_V5VAg;YG#){ zx+QY!+BQjB(OIQK9DC>{pC@NyKdjDH`yJ=i39}sr-KJeF$e(YF-lfu!!ezeD7&!24 zMUAws>2A;~g$&iAnw3c+7XuL!MSfP0^qq6dFXRMfMmwKocD+hp%)it2;}*N#I^A}5 zV`Xmv-lJ#xfIaSl?N}6ZRy{YUduPkvlshB2QPuqe6S4Rny{<7s^w<_^V6_`W@7}N^6==vN~51SciXU_!@L= z-(%0xumEq%PP$_-0m4@!f#f8yJ5~20J*@k0kb2Aj;q9(R(FH5J5^?uK)B0y<)9YH& z{a>N?FvWud&)Z{rc4yU=aNJsddo9;O#AYbFhbi=WWiRpt-_$h?5JQ4*WINW!XZHwV z%0g)(`(wdVYGEs;{{PZ=CDYi{;65^~lTrMi>qucxnn| zSNxTN+pUoCp|xj^zG^N~wWTcZ;`*P3cd%>;9VKBEg)Rw3cKyeRaK8D=J>o(r576W; z|2jd8Cg~&2Lav7|BFNF7rTM+Z32p4CK3ismKb_$eT-&yBUvGUu^(|Q0yCcWrq;0kB z!`i~>H|SVzKII+g6?5r4SS9Ye)Lw}HLoP2n6+NjG<1^o}bOIOx&?++Y<%C!x9@?#N zHcV`a>E>QrMmC@yKQel>&Yq7pswwdDO1QLyWXo=EeG^TFDswq&R0+1BT95_ialEmb z?5|8q=~hMO&?<+35RDq)%|K4Gn*LHZrHX%u%TDaGTF>xt+j%RdrCsb12DU7h@*NQ9 zN9_3OLg|p7twqELOzqYkqbR!MOww|qfye{ z{d=vycA3l$&Q!;j-NWf%j#>n^&}D}cZar&RL8Ps(nH;V0?JU#Odh0*3$>`8xTjERO zhLi?3nZ@XBtfbz3nV2maK~V~!L3WK^A%F&3kK+ z)yzA>S~83AwNNLAQYC~q#3vDa!$2=@_BNj|g!tT)OMcexFFZUddE$^3_}v^VAVHsviRUhRygR4c(p>EpF;y=t;1%M4pJ{4qI*Azxcw( z_H;!(iccCx47(U7f$a>u79nr5+PEW`-^ARD6?>d|q{$B-8)y04AU#vl{V`tGv-EFH5BblT*&CV{Ndp|U*6O6butu!-W>A{Mo#F&jvyRI4xcDd) zX;ZY#xyzcJ&6@)ZeGc_Sta-%GU{+bpHr1-x&yl-Y$iQ^=bHIhbtC8( zy#K_8lL?n|U@z+THtPQ(djI{^^=!Z;$CuyQUneDLiPHx%bdUNlw1<=QSr{*nJm8g>lI0-0QJY9Y8~M znK{Z{ZULf1+T0g#;`ps>nJ@R^wmJe+4`xg{D{4@#ErT&YmtR9CfGE;C8-EK7KB=HI zamUQRuF`~o&Iy|2CR8!89)+BN`1P(p5K`j|srGWNOoXz_tjx+=u{_UeVH7-Qln+)j zrov1OJlhlhM(AioNfb$OWc8Iohu;W#A&B@jISd+an0VPvr^vG;;wo|Kp3hNEhfEYK zyaB^Konn9Aw~klU@?Zf`hAPzW@&qDN0NQH|VHa$@+lv#SY<(O_b|Pic2nM<{t%LsZ z%#of6w`gaF5T9DE-{;MSHr>hj}uB+9Q0l*0&r))Q?COoV+hn3F~hcNEV}|?Zv!w4DOuv=h8d+ z>pFUmS=WV~2r;5W$)>7a{Bp!OUD)LVIjxt6FIrJD^k>`myLE$V#-2>`WIUCQnvq6I zX_PK9+-3**mPx8h=^~oFUcV&DUMM-m^Uy8{c+;U28mom1Df3JLSyh1RjQCN^&qgjF zW$Q1$)L!v&Ep>E6zYt19ZM|FdiuPFbXDaI!mbTMjGwIwA>r2dK?1_tBv}&Pz)iI&y z_{h;pU&#O{r7{RQ4mn>we~hni(9dfv%>mm5j%EaAXtA9J12b5m8*02fJLD1wxj%F4 z9%XTB{|uw3UzjvSUHfkiye%L=MKp-~QT{IAHsry+3_WYLan1VaK(=De7XKR`;y{k% zu+$^$rlZV`)LHfKaF|Pfrb62XtMk&nuV(WM9On3!o{I~nl*LY-#UWP7)^+&9$Oy7V zY>!l_vW!vh@7<;m;wQ_VH2%6PJg!eeI#5}HRM(^Jsg>(`_oTBdyS{6dY$gGH=`7MH zWbo+QP6RoI=Azb)Z8D(nilB(QjLm3Kr@w1I8!*X2X|3Rf^4kxS!6=XO!l{_$J=kgj z?NUB#N*(6!8=OpQoPj^T%BZA|q;R4t!=4N)5~SSTVy_)X!7Ddmurwxs?0w(3-?!`>iJNjV<4v6%N@nkW)+DUP!vzP!+RQ%V*Zus8})J3d)MlJiewyfK^ndOo0X<$HnGRI?4a{WSlRkN0w|EnrMc zM&rS#1tWl6&xJt^DOR`V-ZONUGNJoD46a=^*sL|CiKa1ItqJQdU7&Bkub@(5;qwxk z+omx81rL}9HnjGJcd)xR`71@op9m|6?E8uV3HQRRuRPYmkxvgP$$RuFN|;ISb3~|} zmsotZH&(i5Fz^ZJFEg@eLQ7zAfB)qHjD3qh|3qO=#(rmZyA;tfR2gl+?>Q}oi@;E) z(X^fQH>S+w2O%sP?rPn{GcKG-0i80aP{Q-;7pp-Sq1~n|-au~~_G6PCiUx~v;!@$A zvPtaJ3Rl0dnKyiJrpg~7wO@;>orLpp4WX%mOCnr0h2t}2IFzjW7qt^how^4W`ts!9f2o_m+)DyLp+*@uf(^f==1`PjHG_$`F* zyf$NK&Z^EGzp(($`69zf z#(-{Ve2tDoiOa!Io-T;K<)+gsk?Vi&i0WecAtf?^RFmj-$k9KYL8CE@38O|W* z(ybS8L$SCcd~=5y6`y{r9Z@y)ocd-Hs*L!1;lPV)N9@1dee*#*y3Sk1NTwny88G6E z0`d1ig4b#{?H$_d~m(N&# zxcZ3G9BG>wtjtU55j*@HA5%z|tX!dU*$@}mN^{%dt*s#EX3&bNvj<;|#tfu*sOz1j zjsMSeoqlc<*svF$09GlsOT)Jqx(cB%1M#`|!3_pzly1mZ6Id9mtf58efl`N@KyQo^ zEVSXzIXS(NaX)_?X6aws=lJvyCT$urP;ElgL<3h*G%u5+%BNYSwTHUomYquC?pkg% zEsiMl={pl$!aJ>)zkhusp&*tqvV`r> zd@g5&7prPv>Rd_(_|!8yA1Jg)@qvQa<_S7)vAaWT-Rcr4W})^grN^Et^$3AkprJV% zK1(Ahq|otqvRXeunm|#x^7+UfU2@{?j@Suk)!QGI;PzSn7>cRJ=35uY^}G;7F{;urto9+U?E4%C1?AEeqzNSxntKT!YVAfr%UEc`U2lmpo0PO3%`P#m80-hR-q80QKr0GgqPZ$cjx z8abie0LDP;SWFf|fH#J6>9SZMhY(fWVtCYAi?A6sB~n-xpX)W$(|1!DA4-;rz6oy_ zY;f!^E!2+}SGo!eEG>frhYa5a+0f;*-^r>yEc3STNjzN;S!Ze2FT}H|1k?aDnI~^o zMyq?g3(W|EF7$-tRV8p%usN`B5UETG?5DL=b)IIWb$B<{mU5}V{LIOH{fmJFsDdn3 zNepz1O>Nts@ZH~7(>xwOdmQt(C2Uy2v z1ex=J<{$0l%65DHAT%<>tm;2J=0R;euV=wRxw|e!CpTi z{20!+`i0_t4ezYuxD@U%d%*sl(!e%1yj@{Xr7-KO{*2`*7zG5;b$8D42tOhgB8eF;ugn)xxQKJI?A6%(vZ zlGxC6iIa-_aaAn2;JwU{?60~K#%lE!CD_ET|KkJrm%sD>^(X8NAcBs)5L5ZBnm^G! z_@kodQU49J*W1^Hh(?1IWUeRCjrXCa^G3oK0BT|D9`LGaaI5Im%eXhRD=#pYKK*LigUnprW8U6&gQ7R@V+nO`Achc5 zVp1Ic?#w0H#x)r;XD-E~3_aG>PH0C~|zRh&uv3As-koeqm+_CGNz^er zf!cy)?-6;~*JJJ%lfKL*97et^pD(J162W}s-WjsvpEDEQzuV1F?Y(&pCT=l>&B)0w zQf3?j(jXs=$?Sk4;O9kOzx1TFZAfQN?$|3X=ORSp)`k=y?=F>fmw_<5-y!F|{8kaY zq*-nJ`xO5}ftVYdJ9B#CUCyE-RzTQzAIOt7AW2P7MJUfIjWoTI&gqQ;2;oq;q9v2q zRC6*s$Svz|NALU#mWey@0S@O(Z{XMUd}RI5x}y$AB)~xnRi~$)xQ0$@p+ID2<9zvyr>Fpz`4hVWetOh{&sv{ol@kU&4MdW6>7NDJo^s7pdwcV-_WkPu{yyf>vR{^S zS#d76JAw4qfU39jQKB;23TQ1I0L@l_f40J>5k0Vtx_RdH{{Re>tL8sW1v)qm!P{ z#%bbG1Ae~{kl?O%Ed4ej1Ekez(TlN~iRz6SPPsZ^cLTN+%R{NK17K0p{4GAW>aI_? zJ6^};GZ0zWzzUKjhE@>kw1pf&3Zr^w>L6N-E(W4}Z0wMO=`Q*W+`+im?rASwPH#f2 zxO#>*;E-%PCR5buo}<~iRI=l6#hg3xoZ_D5kbF)Hx*D4{mGfZaT6fZA<>Gd;Pbk@u z1H1n@P51wKG@SAVtl?oJ5>u~%e+Pe)c_P@9gd6{aP@xUpK8&t2(Z6-22)i{e8`K55 zS+?)qv3Jfc3Hp4kgHFBxLV?`PMcxTjHi|fzf-j#uTZPz>ZLL8juEm2<{+ACze}(@{ zYLGoS;f-H^&8_dbvJ|MRkL$NHr%S3;B$;jSGy2&zA09UTDuN~rzz-Jce1F1;r#g0X zYcRB+$`&Em-)DIfp1CQ>mMV#53Vte-c}fwrt=x=JdgE}!gMRE_D7q&NDMq^ z*$5VNd#`WxU{|40qkbvwr&Y%QhiY!h(k_<3Vg|gwmGuvaYy`o2SdEuuO7ZU?u)?t@ z5m&z-yh?%rwv5{E1U;2^p+{v-o`gGl&47bCVGx+CnlsF0#+GVi&^rZGrpnA&AGiH9 znod-eSIdnA=4BwCYiYK_o^|M|_AA!4m3)xl!d4+|kDuP__;AOWx2 zkw{Av=UMY0viwIHWXy=d9k^_+J$xIAwej~{uC3M0U(RiMu~w`F!R!f=!fB;XM8e4y z7fu)LdD4-VTF0i|)ZDwoA*bqBtmc4%G5v?b5Rm3B+F@g=o_o~NZt{TV zLU@m7C!DG>_tt@-{^(th*ULyEO@kF=(6zh%f>3)U!iO|%B0Z=!Uui2o3Un3)NjnkP zoY4b%%#YxS@^jX$@~JZa(7#R*(!Sgw3y|$9%VqL|GSQy^w@+lDS;5#ac&=-p$(yrd zRI-hx&_f`B@f51{WKl6aAs@7t7hRF3*{buceAtsDT!drGD~m}>kT0by%_Z8wG&6=ezz72e(p;DYMO;h@VN#iRo3?~w=BP0@F*`G;_*ht){O^|3(L>XBql0qm0iUqGm0#`s-z2(Cq3c<{NeAazjAlrt~K+{o1(ccE^s z?t!Ijm;In*3A7y4+g|Lgofr&6^cO3Xz?fcv z1&+YYB|2ZJSA*7XE(@_gL(+2+-CUp9RZX5Psp8>Vy97_z7k+!=VH z%=h9xr-DCtBuAPQIh*_BQ@=yLb=e|U*$7r1LBSeeGJJ+q(Q_LQ4DRhk;`^;vN-8w8 zXhsapE(U$OqYkAV~~1L1B0|;JGH=B%bF-y~uL-JZ(S;u`-|bfIVCkt5x*dzS|&m=raC8*jky- zr!OHFdpI1jU*HMBVb2s>dIxeu%I_@Ly0_r#Hm5F+Z5+g5GkxF2=X&45)SGAZAD(b4 zA?>Nvs*tiTe8e3%?P_O0;*=KSR)_meFF^^(xNm75xm2^HG>1RVcpp0z|N8`*a+u2g zj}xeCXE6X)IV~=t-!qU~-FNO>W-*%y-pJR*kR04fJ!rmi4N{)larpw`Rkn1<81{12yZ%o_ z(lvlm1qK=uVdIL6hG`fgIW>+T@K%s=W6ojcmfHOOt zkxttv|4e&coQU;z89A3YS?qhqiwe6IH<*P_Tw8~^y5A!@T`FY+Ei$61oyEyH~5?-cqF~O;RYhkGJ=3%Saa*g5Mh8jr{{C_+nb#WzE=0Xhe@DS z_3wrbx+P5FOIqQuq1E9BA~8K4>15xfmCd91s^gd6!ox==7i@!=`7w|1u9(qD#qGau z5|nCvV)j1a1cBbrviqx4_c{kPR1BrV_TS($$~ohy!nA!>dzkN~*g`G>Z6uv$*=4%d zl=Gn|jr-6s?4)%WNjR)G8gIjUYv>fEx^Ovuc;1{@`qIV%nlv+!jM|BJmZ4~MdC|9{e6mQ*N0n-rn4 z@AXKEPJSXKr+Qn=48 zeTRahtfM|*6eB8WllFY)n)T~wi;eu90*-<#O;em`br&x~hf1+rp_CvOAO~y?d#btl z!gIx#o@?-=tn9E=nNoXXE7F}fH6Zcv^&%>jAeEo)vv2~ucSy|R{pBL}cRZhe5pmqR z07M){<_1~^wjz!VCIgY25lnWu00DittU)V%{7%kEP-%t9n~EW30TbTpvaSZ~VU}9s zJEy5R&Sx2KQsQM>`=yt4yhaP>C`_BU6;M}S9!Y;3I4vZ z@u{Gfn{|;fHwsoWpCl*JR}wvqnyw5fW>B;Bp`~6%zJfk&aVB%(jO+ip3xKAH)yZ=1 zdJ^kzp+ zaHyz#`83~&ZmBz5aBJ+WHps`;rABMM1XN5foF|9Q_061cdZT6HtztJ^*zw5QB=Q?S zv<|rbWeplSxZ(AD9jk0~7qjV1{WE3Hm%uPrt`K-;U!oy)a*g=(0DVAc%4u4IPr8Tu>auOmK!tZz?sSJJYb^gcpJ6hd! zD9%{hItUPtL{hlO(eMv0QFP5O%33>EHBY!$oqbVU_sfPh?*gJEvnU%+HI6 z1<&%ElkHeuYiS;MJ-ulO*(tw7j}|per~20$Wb))A7ZbbReH`s;!LdXf2%hI{RdmX? z6bj$eE) z(Ss^^r(+e)bGBCNtz$}cZKiPm_NhJc=9fQptF6zApWe+iE1EXgdGcPn3b``RUUcgH z`s0@PTLYRcK8l4;hvbwjgi6F5E7Hwi2498Dr`9hNU8~J`3c0Qll}?PmYyRQWrMIBu z)R>Cs2z|*1&vL)*W>ZxGHv)NAN&6&?{JW_}ZNN5uz`Fpek{cR7WA%xa&|lehW=E!q{}AzLUfnQ?rx^qjqERusyyA}(sCh>#r+l_$}V zy+gjvuF)~Jdbo(e>|Iem0o28=z$JSUpN-p)YwPc8Yq4bM^KKf#qprh@g;z;}12skX zUeCn9@an!kdRcNB(!DYtBK_dxhsE=S?*07(pDJgI1uG?e6fZ-6egK1c@0R;JBIM2r zxW9iesc4-v7&;5=qKb%MaJ^Sf`(ZFhla0s>5!^Q+eNKa0dNySTG!0}$8DGr=-pd#k zs1{audXjWlZV1B&ymcw#&|1_@t5MVSTPHIU-|zYI0#XINPwLhj&Vxn)g(CK~Q?mB; zWEP)l(b_!ynHR+hH?LFx&Y*G9T(D}QZT$&7pM&-Sjf?VHeZ%IR>g>j<)zx@~Y5G$P zKKjek_Zj12Ed@Qv%)dA}v$1uonjvZRatSo~n2k>$CdGGyU$dPP{rdGo55x7P-1`A;!%7Zk|R4Ge9*cFIsd zj_R%ato)}05f0jA)^w{}S-ZH;6{Ts|!JYZC200?>n$CyOf%wY4#R=-40=3nW-Qkv~|?-P_3U zKxeO1DuEUn@G;-POVe2=KP?tUt@pkqjh_3a9Cz@G?}g)zAB{X0aEFZ{5eyLo`((vc zidnIGBTy0hQJB}vn{@Xu?qNV4`lT7OYj0nX|Ls5T2G}mUt?&)KQB+xbNaQPt9oOy^ ziX5uY(>&g_$>T__UXpR%pR#Yj#^s8EI^Fj^b?55OTPRxgZ`HC%#lJrCy@TX2b*2)G zEz8j3v+tid*cfc)E?3dI(>cg;oO;j8x<1@KudH#}FTv&!Y9>Vd}wCd zLAK1;UvAI#`NKIQgHooRo7Q82?8lsdQ-I$4?S-wRewyCgv1?5iIIItGxbpo@g`bui z{o8(5gAmX%3D)-D?Xkbpvww9v(>rD0+|Y9NIgg*$-TucuTfr4z`R7N(J^$GS2>-># z{~y->oy-52t&mq|4n?=zU*Qoa%ol2N%L;b9{ka1EJ|WDNzz)z3LE^*jDr+CJatOTM zS2dVMrP!=cp|Lk*JXTXq+CBciU;VpZm(Fiht-WY(IK6F>k71Y~tHk2_I8fPm_fGoB z7-(YOV+l2dU#yx3~`ExYcC+-ZOuG;&oU9Z@~Gyj{wUw$LvJg~UV zOuKuOZa-csZt$Q$UuqDONkCyszsTKjP0_)1^#O4Az0H72wm%QZzmN3T0wBg48zO)F znExQI%GosjHeIsvX}7{TTM^A6aEih-B#wp#0d<`dNMu z*4drv%OJZqH7YM)5=_K&12{@6lj^(U_c{eX-ta^U4+aGP2Zg`<_ZvSTgEf^`vOf?W z!h}fhh*MBz+%oLy(86QhR(}P3IxR13$S1Su*V^8u9r#J?7ixNY-2eL$9`+00z5z_S z^xwtE%K>7DXQ^#caifilTeQ9riQ;{ABl-K8)xTSa+xq+}-y_D>5HBmFdeJimPUqpN5!w1mq{XOQ2MpR@e^=~ezMW5OQw zW9dieg(Oa7x_@D*xp|SVR{`{;9d2ByDV@JE0WO+OsvmGH3mqq}n-U;j!M`KvHQ;LW zLZm12524&Y@YQcdv}z3+4_birbSTZYR}V-h`i46)i3*E@Y#GDG7uqgp4MBZ=LnQl_ zbO6waeeCD`4!V$6qOQ1tF@my1?S#HJ>Ln=MBRAk4Q1mef`i9f{*oh(8xsOW;MtjP2 z^8c5W+s4yEB@fInKN)7mLu;My5enb6UeaE)7XdX5n+Mb^qc@0xOe4_jp{ab|R zvUb3)_jQbYlXerC;w&}KdOi>O)~Bb8ac&G6NAKNm%jkB){f6i_fh!IQ`47GQ-VpDP zkXI)^R0h9F4nkgjeLU)>?Tt8k=j(!J^v*AFyET;GRA+G;jyR9zu-qRjNt&U)orBK0 z!swlG$ps3swn@4u9rrWWqC9?MWRqLz`%QsXg>4QaEJL8mzHzmy3o%;5InLUz#1R1_ z`}&4^e#5^p*y>cTFVJ55gVf0oiw=2f5Gg(!C|n~CB0Vw>GlJ7 zH<%ER4X(v6*s`JHq`HBlRlZO>%loo1z2BgC1)+ZN`ncbt>sJx9@uA(||UP zy>y#>g{hgpVT+hK0BR}(^%AXZYI{l=B9WWd=KPn>0cdG?j*rFjUI{u>9GCeUPA;?l z7O~~F5|zv} z+j<2vmtZ>getT_H2O48Q59~?FcauEv^AyRp|5CXX;T0LiQNBlbS1te8J?FQ~Sv69X zf1Tn|y1GWxq`MPoMAdw2BCJ z8b499cG!OWGm0UvgaDJ0VeZ$t9ioN=A5EaHT%ly=hQQDsmwt;F2f!HU)gk;3gf|@6otnhZuJY`ZJ&a~> z5M$d0#TgZ!F3yAIm;~@|c-y5RU3{UpL`M8+3!qKVg%~#gv zcl=sw{J|u=bu)_1?&JTuEN^kmPOLSWEN@&6G(%}*_ZxlWbLV?d{c~$_^&NhTEBOmY zewdTRT{!xpmn=1P>>}A#6*oS`k5FDbBxC&>n9vsmSc*O3@yGVNPZ164;kZ}ga|))T ziQZ)m*fAnPz<6YK1Tva@>eoYTc({fAJ1(r-m*X|eA6>oQy4SspwAcO#{N=$~MbA0M z*HHaS3fggH+pFWJGiv0#Wj1*f_iiVJELZmh)_aB|yUr+?;5w#jo-4REAJj=SR0`C3 zDgGOBJ9ZQxx2MU*l6~6=!A~!K!#wS&0G9c+AU~rM+d@`R zc~_rlz*1hVQ-YLHUqaSW@sK!a|nU}5T+pjBk z<2;kRzg`^hj1;Mr{yldE3dn8w$XV33w!PH7+Z*A3qvb7-AfTdqgyZ_MP*vjC}w?_`;`Ni~`cKTGnCZ}PIZb^hpUjg?J{0qdBZVe1z> zf`5nD7GDoP%KiXZqyBIuXyvt7o-%OE^vja~vkU8*a!!@0Ld4$)BR(Vovsie}moCWvnyC`UBb_1gp$syNmvC#MYBnZjcMKo3bvY({lW@Zz69b=o^h^cgdf!O zb_HK1Ui7<1k15KWx{OUeZ5K%Wlve85_xx||+y6YcbbV`>uMRd{`Qe7nG9l>eyBB-* zMyub{sO7EhU2w6Fu4WJ=9P*!8|` zfBb(2^)Ge!?@Qy-XTWx{EFAo@_+y|Kna~PuZ@>CcT!iP(#Yp3{gR2<5p*Hpfzk{@d zEu@{}dX3tiD@(6~rt3@K@p?2E-2gK69*&VID+d8OM zz;(=nA?Q=@UiO%ds9R@+r_15@)UxujvtPU8Wb{F>&&Uc~Vm(`T!y0Xw-qn98?s}xz z>~3qal~_(cXm-fx+L?Y1j@=<-vofj^tEO!AW{P&5U}gJk??kFBZKevxanQ(pg`>NR zCwahB<1!F!?b>(fd1vt@();aq-iKQ_D>syh*{C_1ox_6%Hz}SLmr|+-`pPSBng#!M zWZ!9pSR?>eQ*8EWjp=te%vyuC8Ll@omkt3XvtW&{XY>C@MxGz z2##>ANg@K*P;;#Wxw%n=d6`r!tM@k*T7C^f-U*dkQ}n`JvS(2lv%(e&YWl zUi-TsrUhKF2ho}DT?Uj@aUx#io-=0kV`j_T7@40=9l+DOLqJRWlRxiP@D%KpuV5H{jmnN!7Ap?||{W zk=f$EB9m|jK>DBT_-#3ckOk(y@K7@l<~1H&aOatoDVQR3!+dP=`Y$Gb*EvC8KS%aB z@durA`xP#)j`R@QNG}e6ML@9IKJ+Qtxn*?1-yr&bW-%}xn0lZ6w3O`^6HbTN;r&jN z+y*#->L#Dcb);A`@#%%>eD+@s>@Wbw3wOJpZWCJ73W*O>jQ6g8@LocSj{f%Tr3-%M zZBLed5_vXz$1jQLY!Qp?j`~5&AOx-KD?pkj<1Q?^T;TGqv8OUJSe>)!eM-S+e-7>) zOq%S6d>voJ!G28L{oQ*YOE)mpjKm6jF_sY0tL$F>v6v2o zq(SRqq~rq#t0xFUqm`r4KG`n3b{CZbPW_6ZWdM-*VdiyBdS!a$B+Ht3GWs z_E#Y2xdtS;Sf4%pp#gQ)9D1IWueFBjowqVXmBDMzbqoasOZ;-3xiB$-z1~XzcRT{G zuG$=o;FFgt4BXhrO*_@?a+gqupNP-e?XS1f72(8fxV@_XUh8@t2847Zm z%GPg}y5jk>p7wVGohb#gIEdyu5BzFf|m;~ zfcg2)r3g}@vZkWj8M4j`Nh$As&IVx5tM~7#?Tzfdy3O%bs4!epo7FEPXC5{LrrySi z)X4(@^v_509~kMUPV=JPgK-vmzF3FW6jW6EO2|JQ3xwwb$bYz3UROm$1>;#l>MjzV zW&5W%Tf?npOH2|#2cIo-4P7DCb$`6`^MPD_cy(ykF5L7D`;*&a9)1Q|(cEcKoA%IX z-H<0c$WZ>oKgH<@kCtmwS$0M0EY}ulcK2yOKw}U7DLh<1nT2KU&^Aj1{3LsVANqD! zQ4rHVot8=IN$Avz7Nj-{3yb|gm4T+(k`l*19Zj+q-fe2MrBjOq=s@v&AYP-z$yMr~ zaw5a{sN21pZCUsv=UcB_&ri*pY5x$W4XV+pv7J?nRSECe{-u1r@JwB4#IAoj7*o10 z!*lH&B&&qwLI)}+#IrBX@E@xXM`*oFiYIXdIChpPTiuz`iC^*m$McISGt9CED_1^D zu&GX+`a}Xh`KJp8j*vOY>qW6R_-qcfaxZNB>xVgEzJ$bXV0q>Ci zpH6Khqe32a4NXebQBmi`dZ|m#uI&4#G<>b*8*`ERSdK#}7|o<2Jn7y)9m@Q&v_)o} zC|;;eVU|`t)Lqj83Ap-C)w<4b{=WJO$KIli=^qZ_-v>!Os(^tLjo9wE``0)B{}+CxBDN&?|Cp2-wAC!Xl^JFT&&d~650@<9zCBnNt0!uwWKF-e zos!cwDL^~e=lb;m2uY5Bv2vuxnkro_t%>Ko0 zdhk@1{bUO`Yw?zhD@vpLw%J7TC|x=BsW!q*TaFSJWL*_YL>NY^>O%2QI-_Z^C4x7_ z#eZpVX;K)T!E2~2)Y0c$Z)K)}g9xzrW>~BRe$KXMM6NR+C4J>5(zl!cbOa&Y+K2lW+W z(pspJF=YKVxn68*Axf&6yO67y4jOP5X{xO{XmhA)9 zUL#Wsu~zOL>&9Ti`(J&`N2Ir!ErZB)30eq(*n&cIRE2cLKo(S*1Y6l(G2^=dsIJzX zD>;e`#Tv1fYc78JB@uY?7lTKUrfH)IXzY%wQw8%0HW&z76%t?9C}+WL#t7R-2xT)Ud>!!3*=q=C_MG@ zAX>v(NY@}Mx3db1X~`BKnp5_6zFViV_mh?!h70}0Sn+FXKn8wINk!5T+CmQqnD%MJ z#Y%oIlP5+T%nX&TDS&02sFV|60uw0svh_!~WKP4rU~mx|^+rV_#YOqUzL3rV>ydIF zvM#EJB%i%g)JTwJb273g&t_&6>`Hhd1uhckv%$5}sC60KzWGWJ+50sK4Is0xEI+el z!^G3T$UUlJibA(We*TW0FOTQAZ|orFOohWPdrZ%b)%h|Xl%on%%er}722**}ROL;m zykGpfZp#X)7ZZ$U^HKKjtG2Ynn^0lSS?WBZWj@p0C2CG~)qxH}4-_kIC~ZtK)j;d- zuUUPzYf_N)@cb;L+;IRbJMTRm8Ib+7@>w7+@cYZek-a$eZ>i$fpTI>D5udQF(z9<< zSIG@Meu>As-Q<~XiWlmq=$l4?S(%^rkzwQ9xIpr+yWSHyRH<@_@1CJT_Ok=J}jn>$$Kz6Lj z#C%7)3ZL*JDS|=vx{I%ii6sml1>BV#&lbiI3lg{0o5tD0nzIGh0y{zlvv))%o9o52 ze~fFIFs;}Jzuohp>-k-LVC>W2D`z$F_E|ke%X*Q)Zx^HaSs>Dp$7rgFX&y+RJ#7AS zInEh=-Wli$7Oi}@W%_v_sp_!dO#fQNdU;v%K)N|@JQ3XqQ5qdvTHqq94TGB{^s!MD z6y3#<#>y;k{qeWeJ}#Ieqxt83x=478Huye1P(B+55BgO5o0 z&LZHdPvFY>t7AKotbwMN4W5h30ez_m*=msl)}d0J5$CT7;BI;T`czDLC)Kr0Q!R+% zr2qx%Ly@dUMD1VH^SgJg+0O@vJu!?g|6(ef-OGs)3R-OX04!^|QGr)TYI{bNt?Ai9 z#L`^M3Gi)S$YEp`@r;tDGYEdLv2#H|Q@j<1_jd0W3=Ma1r}=FtwFE#}qY%Y?O%#P( zx<%loarMkpd$%N8@-cnBmMn8O&Aravx2mbMe3S?6C&VwliL-DGT}m>~M`O(W zk(Z|i_LVd9FWlqiyO%%utZBSqs9e`8|FNl*jJVg^>ci!&J8~S)oS@!bqT$twvrDXR zw0IYYbbl@Buq}SesmVk4CO`k=pZ(b&PQ?S8b2DBzkOW_-n#x6!Z=n?j#e$XwzFD;) zoEOOw$ghYCO2lOg{uzjPA5_JXmLS(BZdU-Q+TRC-1l*ffnHsH$exYsb<^)(Ya`$MR zfd*HzK?%5?>clNOJu@2bO_IwZOfZ5lPPCx#dF?su>KAOaIc50PRL4DJcC<3T!5>5s zsqCnCXfV-Cy0B`M)xJ8{?!jQ@3XK5gXQ7CnIiYXtQ7_$;c&5K%mWd}zz)CYl?uP26 zxwiFaHspHuw`dEo2`5xmP-0C>x_ym4BbBwvH?%Sg%IQ+Y7}3m`m%8}L+(*glmj7fX zPj~>xi7Szd6Wvp-Un9XN(8!eJ8dBpWNrYci=1m5!zeea$$Yt~?Rmzc~p^DY@@XRdZET|xF{j%2>iw7foXZI%3 zEXh2WSdxCl+Qo1Ud1+|YzN??pb2HOh>`{VE3s5mBOxMB{C^WmdlPl?t{85Ms>A7$r z2$Zu!PE#@HaTli+kJvi#Ia6#b9ekbf)Ck+Zl%3AV?WHd;c9uM|m%k02cu{C9Z9aiy zFGwy-uJ%QyeL*DGm@L$ah(pNbsA)AWBKSpsFCnOf1Ij2F>acG%LTuTCpDdJ2ARBaH zWXm&0912PQ1lombJF}=fRX%jCXg&@CnI!O_-b#}|5+a|(7pCS5i-eh^Y2%YQkG)iP z>AD1@L)g!@5f^=5L5{<190JY79!brJ)v3{Cd3{J)Qv=d-VoJpLK_&jKf)!dnuZzY| zx*TRk1*&N`SPJwaAA<{xqzqn?dvh&yFc+jZ+@}A|y$QA`v--*5!FlL2sdll-yVb;j z{1;vv&Q=jSrK(OYzj%qZDWPNYXTY^_R@bWBl1;_(>|Ma zB7a42EW2QEo$oj0ZeDGAKq-aD$0JgvomkR-LUp*XmTsz9WQL8J+RQoGzq-~Av~zYI z4OqRQ0L>;6#UBOR)N~_i=`N@yN)>JuN&KA8=W|ZEM&c}`EsdRga+37smMr6Js5CE((7T|ZpU1|@QukM;`+pMM^Wj{FeAkd>G^qY2x)?>Q7u(_6VDGq-2 z>#3x4%~!D8rz!4XqhTA?k0XG-t%YTuwWd~g)MR8^)MQ_|QGVgkHJT!3T$Cnb8-@*k z_;tr7S{)j^aL<`OnA2A@%R|ae&GV4+4wKheml}JdprZ8bq}F>{cnC$K!h*GSlbRyf ztNhaVF5(S1iin*cc=cpGXFJjf4K*96 zRnU4a;=m8_vUDD*xSS5|@OnfGZ@?~j#H-w1R5X;t&J+;3=f%>kEck@?w4)`09&=_# zwS|CL14KJH)SJkPSu?Rw7}()&{`A7Vs1o$Xy;@qpZD~V?BcM;LQ3rhAkI8Bo0`J@|sgvyR3zUj;4*^ zetJXpyetS#>t2V}rzl1KVLfI|_0lfTH@%qGs%lBXrXnyEO(&hLc}B*3YV!^5mM{~0 zF?vMkJb-;H>^WUtmEn7io5508{w)izDr=k_Yv!eQ{jDb{_KE#WROAda#@`!SJUjP` z48xO$4M}@LwshSkK-Xd4opDUdPQGhwpVpx>6X%?F*cuhqh}T521fPuD@V_o#uXol& zhy*hud`maO)h{+cisS2P6Eo_Fn;iu;pF8cRXnnW%S@;v@{O0nO`i0>Jf6B2Ro9?go zV2`tZM&d&p7r!DTyQ~3M#32q#yuimN+mRe5ZJhKliE^+wg|kEJU-c_!b_p&~<;&`O zIrTGAqe!>FK^q%6H&)EOIxaXL#y&0L06m;|&pdkcLatGOF?&%^jeU248Bw#)q(ZAM zzF**xf&7gp75%{y6UfLuvnzed-~t9^dd(tg8MtWH`G)l-d!PN0d+CDaHR34>?{rFv z5-yo%O??w^E*-Scp=y<7W#en5hgK(z{l2v!j#<|U_-OEKcq30YR4@?es64M&b*r~9 z5YZUbC(M^1*CJJfM0i1}M?;RJzsBa6Jak48RzzUZB45RrDg9R}WE>`Dp3-VKC`KNB zb+Y?>H==x+6R|CQ*=wiyd!yx0E?_66=to>X-P2Ri&kCFg))J17<$UWwD5v^w zzG%;X+}8K(&Ol2Ob)$4f?t9c$wi5J-?fnf%$_>?%<9#$KP!Hvs}2h*c^(MUjKd0gMdyWV#qfiTWn<{oQ_?TqQ*~kk5|p8kmQ!~n z=i4?)WE_xoEyq#1Zgo|UEEWPM=71CG`s8~9!R}-tF4(f9!et>~X~>_jGd$X_W^nXb ziNAM}a^ARpJ-^2?>(moCU!GYDQ<+H2T7i#=0|x|I#XWr2&?(kDh&nZDKGAL@OYdt( zj9f7_G>0&!1S_^2$fdrnxh?~qUK&2Qv%7;Ko9(^nN5^T9xRDFyw6RJ=*=ll2=h%k- ziaKMZixD!Y3=$&d@9O*v1;DhK?#G;3vp}v1XwSo?9=HdQlGo3v+F#cDb~N=1|37B>lj(bKd4y>oB=NWzK<$Z z1$@l*ImL5BhttXiPwllaF!RhW*MAIaI|Ht$B>N%4MGoV0lV5m)irrmJY|=ztkPVf6 z-SwWy*G(o7E$q`Yft@*{1uXh~{cU+@wXe-Rw=Az2@2Lb5IP$6ywasY3pG+~#_5dsA zNHNNJYcj_eu7)Kxw#R+L?+KqO@U`$85wQw_XaI2&r?sg!xuk?naiA2#CgT&~S32LVU7!R8kEafK*lc%3W|3{I3fPAkuUlbC!f?0|14NwiDGdlVg> zkUek6CrPQDkXc;C>UD@!2?{|Km5LUP(e`#)YR(?kcU?`KO#k@ftmv)l*Ys``J~$yJ zd)?Q55Zz3Ls560)b$*a)$-F#$Tc>BvwsyC$kM;eSH&;8#88k=Enbx$NjgiTI7%V{V zVS8HndMcu5qQ@;yw2L}i{$Lk=v24Xj?^qxKq8+EgaS#5sW+g8OIv56|DnN3}PnCO{ zQ>>pp={|MWrdYxK!9qr5Sd;srVg%c|%cTXyz{_*@{1}F-z31H6*fcDnx!IA#^rq$U zcqtlf@Kh=g2P#0}yn0CxOzs#hV)_ArVpud5RuA=S54K-@mQ!F@^}65R2WcYkQDMbi zdihp#+(*}XTQLDCAe$AH z9Ygm8FVq>F5``Q@7@xk4@oC?`&d9u{5=$P2IMOac4f zAG=x75d|6ELU%JAY_ojZ#bo#Crh;rnI?l{{xduk^kFFZ(sRgVQ?iIqP zn-wwliZI=dedV51G8IDHn<0kaOHJY;#erNyO>FY=`DJ8><|n6mpX-_|pi2rz@`5~2 zOD1|5avP-`4iujVXT|tLpP^&cP9=l2PhSD4gFUKG3aunBLs+4Nt9RpbKIrG0a##~I z5;A87r=B_Q8BcR;K@{OG~z;!BX)x3zd z+J9Kw(5-!p0OJv@^U<5Z2>9gk(oB4mgWgJHRYyMH8++zl#D*ZVCiL!k&Q|s3@P~a> zb=0YsODlUBnrsM9T_CC1(o{>>XmRp!oW}XVJc+3IjDuu_+ERMN36BYQpED*?wni*@ zV!FiD#1)o_8dT&I{uB{Oq`{D~^L>Crm8pT#@~&+FJ?7M|Kb5zn&r|M*zMN8meN3Hy zBXKeh8S7|L;LjFLq;&f#S*Q6GR;}T6?jHZ(KE8t|-F?__D%Gy&Vwf0)my3gmLZMmn zR+)^*^Vh{GJ$pG-!(V5otKlOFj7m}cEvB1_~_yMxH_YX&9-jDyAyVy*W&@Qw?E8eV zMMrzfV4&p>qws4;vsY_)x5?`iVzcadgI$q%jzVi{#V0b_dUO4~Ej}Ff4L_+x7vbLu zJj++W-UWfV^-*y8bY;b!-l!wyj6ZvqmHB!ko~ z`>xg9U5L812urJafqAS3O&A+PhH+#I0|$LoEnPo(9|>l-t}?9F+dZs#u-I-pi$J4; zp}iPQSA@H2d9Bx^;TgnjHH!*o!2k28$Rb2K&MKQ_^Vy^NudHBU;=IyV)m4W{&C0!6 z9mhFvtS)*ZBKXEy5$F0|nqOiG1wPm~jo|{aq8P^^-R^h9qT8Eb<&4#&^J^`~Xtbm^ z5a%72o6|t1v9{2AA(&kMAm3F&k}ka_IH+H|#Aa?1BS{eGjhdF+kP?!dtF?W908CbU z0)LReC}Qm&f7CzW{oEvev9U8-)L<}M!PSLIE!>*{1VS~iO#5V^BF4i=K|Euo5~*7A zAi#GCDzGO1)1>~%`5<5?y*@fo35elW_a7W&2PK-H2!US-e2v$}E|2u2nPo2&O)vXE zZ>gD==@~WYHN1 z3egX^MOvMkOxs{(q^Fx*zNHT7MA{)a>b-_EH%nlWuBm7EkIO~{GAIW5_=w}jIo6x? zQm15~@N=SY2@$&1>G`-~Wgq1SsBm2%4cIZ%BJYia%q$GXLLhrx{BKS7TEB7wrQev@ zz=q&^l`#ZA)+ld}%cluzoQ>Iy{Lv0<{I1ssnF0aCub;qgU2RQf|W{4A*9n z^=9uk(gr$0z2!OsE5MOeb;c%sELO;=%Nua#H7PB9F?jEC`(DuwnW0(L7@!_!UoD4P zMBQld`%hS*Fb)fgV;gtmCZ>6XtXsgcmn27E(AcQ4xHyDQlJ|sFK$lg1)4s(wYS4Y$ zB1f-PHmjA;efWx#U&y{#M#|CGJY)oe^LPnsTk)+NVNEfd-{ZrB74Uuyjuh*cs`>YF zHOR7ZLujd{oUQ7UNl_eUNpZT_R@9=;HE@L>i8$;iihd(J*TLl| ziinoJxvWt&aij<)a}_mh`H^G3m94CL;)qN117xne2bs zG)%(Wj_orKY$>-y+KdGw*{K;Sn32!BQ3)mQ9Vzh~xO1iyJB#3#=24D;3naDfm|`3+ zr%KDv_^}$d*oOV0FWT~61RMXtUCbHSI}tL3bx$V`2gU$&KVJffl6BBg;;K1I zUp+fiN??JgF>0o@AY;1JLWzUSd2AT29`8f&#BkCi{SlqlRTTWN72Ji8Iz8I zH{HCKb4sPAmWgf7es7Lq?TcPbq}ng&VOhnsAfVyG9Nh$bb0W@4LAWGCle19Iqa z2Pd#XwXu%oo<-_U;M$1QlO(SRcgbuizzw5Ir6R4!D9n}MZ(%1a73dfdKRvGltK_^ZAZEHA%`OS_lf&@`5&kUG@GvaRRAv@2D81qxL=qGDfec zr!}UqueBrH78;tV8*twhK5b5Cht2REr=6tR&#tLeG(&*D(b7gaP>Mduf_d~8ic0e+ zP*!_7VPZ>B0j+yEaC>--2U0It0F4IMGy%P{fl|9`mX90|-ZE;6Vdiw$)DzXonJPHn z%@*@IYmtjvA?McKeE5O8?^`0&#p*VV`p&EfiWYPzqnQt8he{*L zkJaSNuUymf4PTzH*5SY{t}!@fikV;PgvS+HZH8sqaIFS8jmgQ?NsM=S&hhT$*yHz{ zw%WcHyA14Q28uGIT0ivc!j{I}%XO-TFefoq!(rR9M% za66FvJod3!To`ZN5x!(1K&qR|t-uRX@6{dvcbyL)5XHerIm(hpHu20?zqW^p4wMO@ zAcA)dAz^3!z2d-V%3Xu0b|_o15|jp?ecNay->f(**YR~~Q#&jJ3$490#E!J{`#NwY z71<#K{F)1^SKe6cn2JcEo7O;4o|8IGvV$-7~^eR z2DBw|-R%Dpw&tT_dQ&}Lq}mH}@{yl2s6t!&#=E%)5dHOy$hExEo@4i0X?^N7MSi9W zbp;tlO4@#pdPil4ET-YvnfDM`#%szAM!!}6wVylkWMN>}J&3S$2B^5u z)*Ft>nfG?n^KDl<{^t}tz{ws1LtQtNu>Cr@6c!WA%Te0g^QUA@ae&pDW^qm*hZ-X1 z-7=6i)L&EW7clI07|PRJ*i7m=6HZobJJ*T4eC^%&y||)i5lxTIbBKb~d>~HoH?k@4 zRQYOkXnhbOTkX$nT3J9G#__owOh2jm9D0{ci=x8WY~NY zL1N3Wt21k8N%>4Wd@aIAhc7=_naUr#J`v;grjO=<>-L-|s#|Pn<;x!G5ma1jE97WA zmZ7S542UFR$BZAu1DUYg^hcnQ!O_e=yM6NWt%E4pp!C;61S&6xf{gjvWt}E5vqZ^E zV^0sT|8fS1FcaN5>P;ibHBo3>klf~GcZUN#l8C=wrOXAINd?YU1S%nJKZw<43lz#b zh11^zJ(mjChi7&mSb`Y@UnS`rMW|oI2D4`GB<&&;!CZ$t3+wF|+juz!;jc@j_d!T) zhkCcNw6N2G(z7uipKN~V&yqs&D|1o3Mq~}tgZktPCw2GqwN((MnqKjzTP+ZttK&Jl z=D#?DZ!20QVFG*Bh+@5>O_X@V=Zwf=WvKlF_D%S4w6c%KPd7xazRLwnu_gy96-dA- zyM+MyFlRn4`tohU8$?^K(gE???G& zQ&WRx>Yo>#L0aI#1|c}(xM#!t#<`mBNfzO5f(uuKnBs#v%})i<34$CMgIRKn8|`y3 z{+@5oq<9AH!sQYDJ3m~Vu4$?)wDh2CY?#TMhm94$jLQw3>`m&zn#kG~Z$#^e32%zi zoOIWS_;!!Fcy0#mE24Mo*-hgS`lpv+jvks0^wCqTN1DC9Vw`bH)WRZ>Ea;^V23Pe% zT`~h`sWESoMB!kQGLtGXwwG`T-oqbzzUrDfmbW?zMK7)iQ?v&WPQ+jAZT#C2mDS_> z27wS~DjCamkx584vAfh}#?xdM4pWip@Y>L4tplPJUF+$w0CIuC;R>f=RTra8ch5~Q zl9OBlMjuH8epXY>$=cU&J+!Y7o0Ul%P0MTdEXuD- zxg~TlWo|LcUZFn3?TD0}UXf_V#_--V50=7AqH^4p;qDu= zfi5y!JL-%)#z>dir5Jw8QJyx(fShO{#z?i{e7(qJ>a=~M4dYFRl=<0c=M*g=2DX(loM1jp$_)TZ=KZfg@Lh`oe`LOQ=Qpj zn#Ih11rJit?&EzsUpQYCBGl1qU{lbLM$pnRdE5zRrye86IHdH|+kvEq32@ zBqC*6p1(Fxv~uP{PS%PixA?h7Zx>7_h~m*na4j>(h38PDm7AA84amJsZRJ&?>jObw zd3q1=bRf1$b_iU9Is3c}Je(G&xGO1DEn~S}3W7Gng{I`9nG?`OgAY}YMiTn_;ENY; z42wTX1r@knWxwN8J6j6z6Qv?KjxZ>g1_`M(yT=M(xV>Ezg0%UbA!MWb<47Bzr~b0i zU=;@_GJKMj+ScQQJHusS$~RS%R>5u9^IFo&5xD_GV?mybqz`1DAcpN%>8T+$3++aw zAYn~jY_T^Z8kzS&eKnhia7+=2OSLw^Gmi1b zcH*8p-&8(9*K+7h_e#81oto>|!gu#XLDNx|#Qac}@Oiu-6k%xO`Rov`oVPmjxEwXY zSqG%mbu7l=jqrz{g=N89Rh9OAnUPwk+r2g~&=R=|=e%4z9}m$D6`-Nv#4-&9C<;xZ zCHK@4s!VC%el>8`h+B%;8BoR z4}WGg_rOum>w2nA$;Js2tlg$~_n&3Omzv^Hm5@2TJrh~Jf3W=gnC86VR$gjvqUetq z4}n%+trD=uRZGO%ufqx_rD3L zs2xAykF~1v4s1Xdl4IH-O*G2dLi#LY$ZkNEN z|7uhTmI8T(ZJk8+pC-$TB@0yJGM zArlsq_!cIDS2vsm?z6mB^DRvczSaRhqfw26V~;7LcQ9U0A~`a{4(Ot1o6QOC9ECa6 z1hiR?Gh&tyOaOmFq`~1caCejG{Jk^rrwN3&7I1=^E(b16!Br%nTRh7j=%Sx*&f*_9 zM=D=@fg2#RnWinnTHv6Y4h*XcH9!}gP0vpwI#8Q{X;OHDi7LWZ`1=CSfP3Py?W&FO zu2e-b%t08KgJv}>)kN|YUf-C^2fFC<&Dp?Xfr#_OECpb~W6|*?I@W%ITy*~48NALw zN-LvTfpAQWW(C5Dbu=pw&T*r)0#c2KrGN*QtfRF8u8=__u+drpsS?Ifl@7)R(u4nu Y9#byevpmrIfB^_RUHx3vIVCg!0Ol%eI<@l7f_16lswL35i38bV!_QT~t82LljV2QW_PN?oJWu z?uKvfBS*RS`rh&V0YArZxZP*(wf358t{KmK*7CY3CqYJXf&>Q#hfMN@_$?e9;$$40 z10h6sa7Vr0*aZH;wY??r2Toeu$uaoPb3-*rl&mZcGh7ql5aJTz>_Z;Gf#-24cCT^a z`UDOE<~|ON3NFphYi-=~zn*_=f`h;N3<~~5{yc-f@b>P%`(kl_wHS+seVRBqb|3co zKnU`hQb5vIRDU6Vam(AqVsUWrNKKT~?9^ms1of>f*zXuv=^3&+Sy&@) z;Rrbi!li|w-5pvd3v)|bK__84%oBoejojv-qs2U8XC_RiCVP|is+El)Egw54J13n8 z2`w$Hkc|OK@Rs=X-PhrN!gR)VcGiL%9FC5T?2g>*RyIZ)7X<_aI5@dDxVYHh2{v12 zOS?NxY?ij?el&t@N8Hd>-^Rq+&cw=+7HRj6o|V0wFdZGz(a%3WzSGVG^{XdK+udQo z06CCfI4-hta{O!?UKK*_3f?lbwKBIynpd_ou@m7E!aV%X+rN7I@s_-ei6MM1@|wuS z-BvT@H<-IHIU*!N96u*ogrtRJ{5%eh7>=a)6(uL!$=>~u+R9O)Uy0AYV4}A> zaQ@F*f8J2VN8dPl?TD&6-}zdq?Kp)ppCejow@vO|Q@GG{+rZ)o3(0vkoGaHT@UJ|7 zKzH^Pk<`Vo9e#nyp`oZs1Fo?7;1T!v<8{I-Eh8nB57vevxl^*TvOZq(#KFbGCnBd6 z``raPm|QJ^0dW|-jFSa*NqSy8RH7;Dd)N{0WU4k=BGXL2dIquT&-%Dn;*q;BVJXneU zcJch5^8DAL_&??OKjryfR_gyO&;ODP#vcE4Td_>&2+IPKg`SFt32ko?XU)=MpS&V-pvWvE%9KsvEExSp1~CCQqiPa(GGrKKoa<>JO`&EuuM z1%`8QL0#&5Pjue#k)?;(s;gEW>$Y|~t;b5VsE50ek+bTkkr({+cXiFX!edU+pqYPPHsvYGaDImuWWe-Tdt*YMsq*N84}P*4}dW=50H6QLkLfu{WoN ztJ;n&#=GL6=;rK8Uy%aSdlRX7+f!B^5p#BIk&%;*0E;Zd4O`(dK(a+Rztonh-y$%u2?1Yj=`hJCvYR zUs2ja)!TPJ2`_h?tD9pT%1T&3??3G{`r_@+ny}`LCsGvHXF&sWpA&5ERMXy{@c9w8 z8LQzIe&w4?zR3C8xB;s(!D?doc3zcANK5Ekir2ZQR0<1Tw*ZFU1!ZE*#D976^|Em5 zB5fX1Lhm~yl(DGFK$znib$HLW{Bp@<6eO4S+Y!G%!i2QXM_GaHY}aL3B<+rAJ$a;;oiiql6DZ}z0mP} z|C_HEjV}Y$lCETKtbXzY`@06To&8Ds^%zzTzfythH)V2{r<73I3|&V)WdE=d=-i_j zq?X+t_&CV(V!n9IiSnXr-vboCms850=M`C3+Not~nUFW}79)JHzGC)Pk zzV*e)CnZ>ubCsDEPw>^IAVw&Uj)Fb?K*rzm{LVC((RLjVw~xNhqEx69(_rt5e#sjJk#g@xR?%Kr6a!&wgkLd-{!u{Csds()5x zIN|b+P~vxQz<||qrwA~^#R`4*Ib#B}5m@RbX^vVMM!CpKuvAn+{ROasT&IWRiit1i zmq4+<5b=bT-FbY@3)^z<@2)4fZY(>;SmX zpnYl2-bwLv;saXq!wojb<2k&aV!Ba_nPFGbni$cYk7u^65B9z}=5u-aT}a7de5=I_ zrM%Ewd5U_L)EX~Xp&(_IF*hxS-_Dg-8T-54%nw|s_Vk|{i_P-s86QY;$a?QB)Pjq1 zvykIxE}Y8kwr|%`CDCyjc=-6F%?%C~=Ig(vL@a`Iaehaq>vrYht|~f^gDPGw`Y}{= z3291RpG&+=(5S0s@$0p(_YY}%Y%LX^e@*mz?{3Ed(^LHPHb#;+@c|R)nIlc7C+sp9 zt_jOXhh8MmD?Uk|C-6{3{P7z&DEjs6G-EW_mPESHxlKzeD$g@pWl5^j?&F} z?s}nxKG&J4x3Q1^rn)~@N5(P8;y>Xy|5(<9O1kyJD@B7omr-DLJ+?P-r)~`X_C;e# zFlf1zPx)k#Z!^A$Mr?Yz$5!&J(fyLsAL)K}(4d6(Qo@&gFqJ}<_uhT1AzO@qEW1>} z^e<$-HI!*JTZTkq_Ctc9~uafXbBbh}@H76J5P8CRAH)9pF*LfvJn z+J~wX`z}t^^7n7X^R_=>NxMW|Y#i`wp`abeFMa##+-XfGhQ@;nyb{Q(U^vR+05Leq za4rV(BrEyqVxs6)J<`@$n_Av>p_{f*&ck8*8lUp*(I{g|^hMHizOWP%tS(bC(Bc)G zKfZ=(R2N+qDPT(?9`yBppd#L^Fyj?gUpjuxq3nSW`$wlR`{<$U?n4_Pts%8 zEE~a5FOx9J_MDK8`d%sPeVqoNr|2tdyRvYm?yaPqA;oYSV0N z9Xqx6*&m;U?jx3o;7dJ{LQ$NYcm(@GD}u00d50hR_X|JopdF|I_ZZ2un*Pm){2a4} zEExROzSnD*<-J4l?AXOP9yNybJhxP=Px$#P=0a?Tgtfc0*2EhlknGShk&Q{)vG@?w zElJkK7WR_WZxiXIC6AfEoOYeetX{v~bN{)-Z$Du4sppxZWr%UxNTjV?{gCJ^`VeTD%=ZgF$F=uj9YD6O{XELZm&JPHU-vob+;Qh|PU8dF zpnuO7+>u4hJ);Nuk^C=9f_+f;MOnt3k59ydaIRtvqCCv~^1T_9EOLX4nNzR)uP(n- z#8l-q?H$wT72V|2TxR)X@k0-Vu?sFcqb#GYu8ul7`VB^s==dX{!mi8TD+8J^e<-QP+UND|?_O$o(o)xku^3c5t4)Q7Gd?eCOm!|Gy$J;Da?UVPR7xkl^zIiQw z=5*crAwTt>2Mv}j;w!^(I!vE0%8Hy9q-K=$i1xoU`|S(lYAK#Xqk3LP_H>Swb;C(K zQEeyQFKXWYyF%yGh0oe|J^9XW+PZ(9)1>KDF+|b_^zsU@Qss$+52Be4I!2Cs5Kmy) zXyZ%78=mz(!D|XGpNyC9{$9LLEVWF-EOn_v-Sfw}$x7=LF~#V!*;ym_iGQvhp{f5|Ajq)dt>Rf$oZLBpdC zbptB{IT+MsDrZbzvDbCCH`n;Q)90RJ!xcm{R|tGW)jnvRe-Ysh)NjeGyjv@Tm4`a9&Y-rIG&Xo;k{XSJv`I(f0Y5gb2&7ZwoxayA46m zN*60U?}Ygx3yzG&>omQN{cd+UtUr<=Ic@F=&OfC3V@&AlNa*{r^z7g{_#OR%3YOCK z<6=R_y5>gr$ab%uxPU>P>inYkU#f#2E(sC|>kEGSZxNEK1(pR~P+V4bVtD(SYaXjy zQ?wc8mt~qxV*kH)&_!i09-nrBqz@I&ZB$n@6s)P?Uc!i#zFMFsZ|qZlzu#EH*f9L* zl8tGu9_B`wm;5SNVeLSovm6s2{A*tSsr%6TF;lRcFWmR7BXRs*0sQT)*d1_U8}+xO zk?(DIg7@+9A&%xGiquQew%En~x3>R|Sso)oM>%x8;n8Fuj5})a8(D$<5%VBEFflnf znVy^d!=!7->n=}rLWW&e#0VG-U^cmZ__dhGXLnMA4`WwC)b2_!9R3yYFi?@>YTddx z^czX@#6cK!u7pZ|_uC)+0b%ad7iseUIoX8QA(hj;o%5UQMAw>tug__)=}yqGp6w-U zI1eK28q54lIXZSzj?X7wDeQIJw0MdMG6K`@2K_H>EjEAgJyVY@Uo_-` z;#+Kt%VKPAtI z&$v5T3$~JCKLeK_1=pf1MDNCK`+L_wu-ex*iP6mVN#zv$FYvH$FdzZlH{Njky^sEF zxgdR$!tmV4|8;wBFMqEE?mPS3R!lleS&!DGk@5FUFNT2PdPtf+M&?sP@#_OhIW>oY zAaS$0hLqp-)S!X)QSkC*O|$E$AFFCzUAHYo-Q+IhDO){h!+T$9NXP3eK!GGpY+7C` z*bdi>wdeBw)MZArVT4J>=O4=d=nt_;+w(0;l2{?{wH;^?5^yZO)=7I+d-p-(^XQ=v zoswsXQamlQ2OeRRl$@5+7(DyI6FEM=K8H1|%p$Kh*MKUJv0)q!lt4CFzHt+N&rrex zuQGS6KCltt5!t*Y%yFVHR2Ox}F4<1!D;?>s(Qhpu3l+vYT;M5}ZMM zi*AVFFJ3!oNn~dSb;Kj^aI6s;f?&|y#_U8AtCl8@1y73P-&aLx&tZE#;0MmC$r)vJ(Kg+0oyGpg>78z=1YsF)TMMu4toq4X|>LD$FZ(5u4O1GvsJl3j{ zHUB9?U2^>OZQJKpjzzL#G!g>10}zNkdm(jT?KviXdrIXr`+k4v>L(7BPq{rd)ewag z7icw=Bd9M++B>=&$Zqn*4>wr3O=!xCZrL%H>}<_geI^++sr-9(!UF*`-W;bx|Zu23#9641Bsu{(pmy}eS(MAT*bY4X@6#OMDX4G(_y-WdPD z;x!!Y)ksO(z=wxOtBN?5#v;4XOnV``rZ6jO0kCUx8c*CvV=d!+GkH}VH~V%Ofu9Pn ztDCf>e|a9{dN=*cIvhw5%Nd!X>0kW})s{rN;ELOP#-}=bGz*rLRn!?4HfkZsg4~_e zG|pqAyFaaTdtC^bb5*rF53f-L{4;_&kX@F!uNS?%XU!htK_BNv8ITzl(D0e7eTacM z{pPVf;vuq7!`(@+(q6i~G@-pxaLt>3Lfm7euwOQe%W%Bq%^{K1uP~&dv4n`}w_i?2 zSmbubB?WG#@D~F>c8jImwq7`Ixy!6{IVZgr%uN9quE^%>$9648EoMuA=({Zoryyse z;HnAA_y*U@Ry)g9$~sV3@Gw~hJW5v4!~wEyz>6jxA3CEQ^oF82L00-Ner2xO!{@H2 z=D#l%kL#1S}GxcS(9VUfE&C-4-JHWl+KB zk`dvVH*Om79-D(_L^me0@_V7&fdrJN50be-T2%_V+Yg1VPA*6A9bsP~i_=+3Qk{Y) z>@^R5PrXKKQLG?vqJ4jq)vEiy&YK}@@BRr$28h=85#`R4S{`W&3s~=C1 zrWZx2maex75V`_xNIHq2#(HZ)6V+mD8TkxM@%n6VY}OoF<_d z?Oc9l8@EC-Z=2dV;mM+fx}o~FDP&qo_&j&h<=w^=`FrgYr~b<9yC^|xbarfgB3&m! zCqnMh!m9weD%>z-RGf?GTBUr+<`75Bz4=OIRFKnG^!_>kR(ilKp^5!v!+9#3JGrkJPn4 zSQeT0^9|JcGr5MI!dD2?4O!EOmCIRE7R0Tfz^&!95wgRpX?@A8Kz8mSC2s2c1V#T^ zoukOkTK$(I_8lY94RzE?rMx@W+mGXoJKHlmjG}pf{pu^Fzx(!NyfJ2bF|jC9nxlB} zB~%6@`W6$IOX-7OhumU#yWs0Ksh@-H#(%MJ{%$9}XZ6#FOLz6O@E2hgt3#zjbF%|( z8h?%qaRP*~(xRR0QoQ+U4OoT9Lo2!9*~fIu880siEl-FO_0N07Cv zi$fr?`u@=Hmy-N>{dL^Q>&>vhM-QR97DOoXS!GqcVs- z%S@T|#e4j|r0y>9c}m$7G7lB1tRqXI`aYE>%Dd)s#vTat?`*HA4%Ck;s8F7^Z&5JG zC-Lw(DUj(BPW9Yb&~dtld4xM=O@_)*2KDF5oQX?WoO6^htK!O+6bkG#9*S~zDXVJP zhZ#oic*M!jKlIqy=vN&wqa6I=+pl|{%%3tXXw@MLu8Dxt{YQ%j;YZ&22|TM;Vq_Y=6J!xJ=;SZ9&b{c9&1z3*0UtThilQl za;v(K*pjOgPl@NzUf8GnP*gEKDTqJxyi*=iBK!E1YONF|N{AuIJanbx%#c)Ez4vQu z3TTWA(FnDZR|3X`?>le3HWU)lmRyeGkYEC{z#1i{GRYtk!k0NdM`q=8)x;bM6%_}Q zC5=|vQ*w+EIoR;pAP%jUwkVLyB3$h^y^Wg9!doPf(xFnixas zouD4)pAu!!&pp3-P}2R-K)q0H)8_}=0Tp#=ojZKV%vlYbd1J-pI}}G`GPvj3b++e2 zL}7Z7{Qtq$t*^cwoBC}R82u(HnPOzn{(V-ZTNEU-qA-dcFDkLOZle7@vi68q8-swxBX(Z8a-J85-rMdgrSUB;C|;=uf2!Z*BJf%OLiN z(Q*-6vT9bLIbj&NevXwjUYEApns=rh>JLz|Q8v!kQ#%IXAT{odSa0$_&bEIXS+QA~Qt`f2x~;MH{ZHxj}(n z8(pj%rm7dOKz$!V%LXQWAZiPGND;B7j~jR)8S$S^5DX&3qN< zvy|S|ccU40z%QgksN+5HIuTs6QnFG^%#M1ipJZ@$kiBry-&-cHL+@z;^H6S=CI^!x zqg?Q+;fE*cJ0UmJ;)0%PaH+K`#hH0sa$nAhsdaZ7;~x=M@hf6=76R`Pr?ZEuk_4u=uGbZKTPJrXiCLsFM^#w%WUc;bCi8p zt6#h_ib^z1Sj|q-RkA!gHa^EP#1*jkv}wv9-0uMacbNSCngL8rmF$g_!H}i8Smfud z%a%bp6d)%p+&m=0Y~V*vN=BbLV#CmwN8N&jv$7wRJ>7m`X(m(2`YZ0tejzq>Fb}DA zM2U5>@r8B1=Z$!yLQ0+}8=)eFz8-88vLL9&Xr!^X;)e2rJ{UkE<0->$1k z<+HW=MKpR#$qdwz;+t#%>${piKC<>~&WDr&zvF7eJ}z6s-T_pEMeu72ycn;t*6U=p zmqtGw)wvxkosbSN2rm^SjogD(-gIZ#DplN1O;IAJD>Q#YeKR~t zxB5wk472o&!nX17fcP{4!X+f|LcHsP0Lt~$Zk0TO70gKKwdAy9^*%p4p5t5Kwvj{d3JH^A>+u8_3N{Oa=?kW( z8%9vdSQLo|5GUj2Vy=CRKhw;c9M1=Zvi#G(GYW=Y(sA?JDU^T3rWuVYY&W3SvXBoC zxUiFcW6Pr*p#OptW>hel*2HP$yv{hjyKR#}8bd9NnPM629l`IFSh!*|omzv_rALek ziLWvq3lnzIS*ucI3=T`ZEgkk?%SOaFEyboH`0JNRy~fF0%5f(uVr;4|oLO&p?4Cbc_2#vqfJyXqS}w;v=Mf|b zKmEbGb0k+>EIofXoC3EPP*$lyVJmb5mluCx71Xz+*S=bTPC%K^omvM~RT;@+a?3fJ zM<*mZ#FT0#?nCQw87(4i0V)OUa!5^E7d$DSq_H*pl*Aqw>o?{*5YOubO5N!Ad*C0v zgAB>xa=7>gd+}nE5Hsm@+cG1SJHvl{$&4~-yW#_cw(cj+N+CK?8>^7Pw+bg&W}VMU zd6r^hN~zqES|vlvhAzwWUqS-Ay494^YZy>EQ&0f>bt_@te?~1Y-O?U^ZL` zxR#B?&{_ip-C6Y_g%3n2r-g?@^|_MhlenC(D7%Z3u^~1pYmSV0{A!t^bn?n4ENqA)`r(r8ep^zpY$cG0HL*ie|oL z@*eBWnJyd~?@(R?aVqk|#x+*=25A_W!#?>S)IRP{;-ymfJl>O#aB49{%>yu2KQW&i zs!pxm2elCz%XfFQ&^^OtjcH-RBlNFT=wiJt1Y4uD)>154zeF+igc1!y1~v=GM1l-# z$Z(y?ksc6lr|_y-S_0b)q&JyiQGhEVl|e(ywBhG`+10GBqx^YZxce=>m3wW>lzONi zD(JXjKo^3T7{wLvrD?$*r$J70@~A`YGZ0bFFYauW?l=NXttE(ce_)&8@_>V+Yb9Mv zlXTxOl98wueWS9ELOFgzpdI$CC!WLmo*R~{*K4TK<~d(suoJxV;XzVJ+NbZk!N3n_ z00-@UR4t)jvxOF;XvPd^06p9c1tre7*|F4C-v-p30c}d!6J7tJ#`IH^V_&|E&=>9C zEtDfvp8W%ejPZ1})NQ&9?aNV1JWpwpy=6FxW?JEWU*4eM@563XP1-Ywb# zv&epmXMc!8@AN7IhqI)Ypwa!Fl-MZ^mbVM__lCKL+=8Nl3xoZzh40;Ph!9XsJ5OC+ zjJaW>n}r0>rV0vBiE_2_HJS!e30FMD%!m!VwU+hRY^%D;qnSb)v@Sd+{|ee2Vn;2K z20@}EJzj{%f}gOindS|(#jKbua|=1ikz;i$MI*utQEUeFf)goSM4jM>me7ap#R^Vk znk`)$GT1bX*KN}qeqA^IpzfB4$B~f-b^h#>o#1t=Ed)xl(mG?dCXE=FUe>ndsGrcR z>#Dga4{)sW!foR`XMOc_XX^=|& zY?!>M3y)Yc8cL~PxYDIiCRw>+GtF+J443CnROVxJ7l%3S4Uj53t|@)b?Zz>ptCBeF zY;Yk=%UbbmQjqvTd#} zM)DbOF;Y?lX)|>2nl&UduIH}p%RuNkci)JUQA*T&PW94{0yOVUXsz5K;l+j&lG?a3 z*00s2J2!4}Ud*uUmdT#?muA1<8i^YC3VfSLsz?(dBT1AADttUwr9SMqOk9ScYoDf7 zF|ScLs;o269&i@ow}b~ib2Tr9svDX0;M-Atlt$T57}iV=36LxTGQlyFwPht> z$=$u_4kkwq6_<;Ij0l8nj*e)JgiwIYCRveFXQQiqS*T8^cF_t#l%x(l{rdRtP+2|k z`W0nW@y_;!&O&%Q{iE={tXDZItkT!&A*SFj8X#jZ&|GS&7Kb>VR%pVwn(k}LYK_sL za=MFhK_PIRsuJV7(-zh$D>J>qnf`Qbl4LTx|1HHr*6GsOwR?m~4|A2Ba=NeogS>`D zlau3~B2wN{1w3{Dosym0);9$O+^52ixdZZ5ZuX&e}qr5S{cIX$+J4Hbmv zBopt9cx)#MW^>6?MplP^ihSRhGZd+`4nX$hb0;r5n42&iE{v23)2hv?$jKdg#r?tD zJYwqJ&XCS_{Ir7Q1Y>lhT^M3)D@@M8wB?MH&`%rEJS&SSygBmd2qLH4oXH;YH(b?~Z>& za+0F~$*B?X!541lI>`=z9nKScm6h9p6VKhk`bX`~Q--!!?ADBj=%4@~gjw4;-RL2z?}oLZ7hfJIVOQz02of^A0 zO>DoSrp~T^{^6Fj(bu+V#)qT){V+f++WpA8jp;&ZGv&B5H0?ila>n>*^Tf?+oo%jj zl`0>RkiqP6Aa9O9aLxnKtk$V&?d8m_#J};lAPKn$Ur)18d<@Ix!vxlZlDZ*U4i^qL zJY_F9zp?L(br~-B>^UTRf+95RZkU9v9UOx?$#qE!_l+F`F*CtKPM`*tYLq z0J3yw*E%-4#Jus57zljdS`_7rXFrgZE=0{hy`gtiMaOLktgGcpuVZ?(BgUPRou5r} zES`Y4s;#(R@xR%9*HcW9gta;FC7wAVF zixEoe4tn#K05sFANpZh5(H*8?w#f6`AvX*T{WJeUF5JK$P3;S3M!Igej(1esX#l~q zh-2K>$1Hd(FeC%)7yk_1#hOVFk(+nDr@8d6AK|Hb(p^$Q{&8N@7NEAi!-N#@XqQTv zz%L>PRz3bPZZT3IuH}A}=4JTTpwWCsVBPUnr6h~f(1l`a-?YHJ5Fy00qI(e!V!mRS zNovIk{k`uW$SDJ~_abT_sQjkywVmBQ(Jziz9~`|oJ`sV8?u5?QKt(wLD7kXi(TmJ^ z$@6S`dO!a;ZXDpLj!sV2EIuZqX{#d|#-_5rwiyc(rvT3b0V1SQAfh}Zx@j$cO&DQa z{aa3GLWBjruL%DtGS_HAYA4uzRW+I&hWVpti9y#yrhC$k8R^djH-g+wRK#*rQ5g2yF^!3(6U0O2fjtXAT+CHAo)&2^JHD*bD5iL(WCJyhlp!_o zLXj5#_5~Obgd_V}Dz!rg5GPeei`3p_CT*YB+W&r+NBm(>;HJ@^K+7I+#46xFfs_`lzg@yWYsW`#@|X0hF;uttwWLkJU9M zK+03|l}ttlz#e{kcX#lS1Eb$tw}sp5coH-;V53 zOhl8NP-X??Zmze?jo}MCEWeX1QT7vn=aP#g7m)X1u&?=~UsLRB_Ep)V(R=0Rfe)M- zQ6G&xOGx)Mel*xdq$sQps34zt$4&1mrI=}qJ&Yd>1$n3~@|+91boX0@-#MB)H$G!k z`4|Pr{p_9gU-WP^is~IGH18@&(ka=pdO{=nMd@Wa~={MnL^rEloaBk5m_Q3`r zm-C$*zQgq~qR#W*VY`jxCn{AT2*)R=x+wBidy~ij;qe<%g@9p*FVa zHsjilB*bU@Rg!v8}1xa+P(6>4(A+h zxCu3G4@qByumM{b`N*}*FuOwtC20Exr6krI|G3}$QX9K`y)R^hdJOi2-sfZ9qj?%? zP#iyf36Qdqttl(VDE)5_jiQ~0k?-%C9htA@h@lEo|3f3F6yiaoc(}beBARX^MYk~& z4cl10obkA)waP6Y5U|-&^+#oahR)WwD)^R)f?1;~`aWlv*R74x9ap-i@l~K33fHaz zR2I{gqv+`Rk&HiZ)@XkJ9b99rnVdZJW8t26(|})*%BO<~5yItS*MpT9!YxS%v0L*- zkAkV*c&Kphmr3f9(}nqRgMw+_LUv(qO>XxSF9H!La|8LnEci(5L11Q`^`?+pv8HF`kyRAZ zo#I%-)jSysaNJZSe0#0lLv9<{ zKMP7T^ZKQalpyK(yngo$ot^b|NhZATpp*(%#_Xku^Yadp~yL zAA4PXvjs*&mbUvd)aBBrKBl<5Ugg-C=ODfw4KT6^Utt&Hbv2r22*V|5c7#QH?g^4k zOE|S1q#dY98N9azoP9svdj@?)&L#u4F&nq-NxGnvm24N6(b?+oy}~bk9f0%A7l+(N z0eE$@q@20;<#OLepl;5OmTpg!N_ld+McLK~D2p!x%)8a`MI`uae8;t;T8jYA@-9dT zo^7JQb%VXCHjJZ;5$3nL-fV=kSzCeW@E6D?6`LUZXOTAB(^Jb@^D9F*hQ4_qRxIay zqSOIhqi_sR@8k1;BC8_v2EtyTl5DdZZmF?}$j}ScYI`V}><{D&>73PhV2_52xVbpn z0c{;IEjI)oTQXJvb08qV$tWnmha#U<`Lz4$0CN<%36%ev&5IE*WXP;Z-DVv?v=k*t z^BmKBjUn~Zt?sgGnFN*&wY|`v*%=I%Wp7|4eL< zHNSFOQw_V(W7l8s_<^sYEM~om;rX5=M;vof4C$dOD+N$(64N9xc-+A?6S=64yZLp$ z==rh8{xH$VMH?{fdTaB+~08R4G0(w1T zU`I|H!lPtc+(n^oTpAq%R$?PjyKB_ERzU2jAzN1C-IWpzzK$K?Bn zP_w1Q%xZQPQhC^3-Oh^_PLL3@R%3MQ-D9Frgi<(3f15W{{E^mm5y-d?H)tHk6l8xo zR%3Rg6y&0F9a|fMnf*kNIs2Biyhg~(F=`9);9IC|1YG9F2gF@f>un^3hRQ=mg_YMm zDrPcBoawK~Ml*Hd6DvUynd=#k%{ly2;D+As+?jee=%Y@&4nBl2%2Thspq2Vvr??~J zsTYDnCm=CRkO{jLUfa$Slo;>VgHkZ}Idv+VjQ9~5jf%JUpL=x?Y7hUePb_r7-0|;&dUMnK`e_KE~O%x|Rq7lilU~^J1f9cZ9|j z=&vj{bv-A?TWPH^6t=tyg!6Q_qN;nq^)NF~;tE4m&NP``E9y`7{;P=@y) ztT7o?IDw&yX?>+3O^+@F=-Mph?RBlNNixl-Kh;kov=y%@VL0!hlEY)1ai?tGp?d(q zYLn2DtMO*S7HE~RZ7G8rNWIB~jmc8wN*n79wlIilr1IQahgBacaASkcrp z*`ujk-xi3d^VV7GE-k=6m2p89+lfw})gYu3kEzg$>Lf-G-#1LI;ieBWfXyg!11I z6A|KuGPx37d@;2~hEIXkVJ&hwW}f>TS*d*s(JM-Z6faVm%+m5vLDM1PalU8PDkNZw zZ9v=gXUFCS4tcyYb%3;sL5m?tfJz1l@%3!fW%#nx}4RsD5U{gxTlu);xmu9lS(4Hm;NR92;@kP!GO6<%s6D(l#}`-&yZAZEL9Cq0N{1y26;T1R~7a z?rTFPOs;*v(3wd+k&;_hTUBQo@)Zc6am+U(Zrol52e*Fpkg!t313-^jY-@u z=YFVEtQ)YhyGOJlFhTC(wOCeSsaod75EUc~1-`Dq{`P43w%aYQV0TC9$Agz!gx!Y2 zj1YVq_EHOX57dQT9E7!7XHx@cc;OL)5?3d2<$qvu+MQm)59&U-={`YbSFW@d&C0y7H$OiRWizANL~LEKqq zQ<-^wr%~d}RIa7gFv4p>u)E5d7tuL1-Hc3E+9oZcbArHT#H+;RcM|0-->ml+h28eR zs9Mf4Njg%|UO+TD9AOo$C{#_H01uec&mumvhAuIzEo#&m!gDQPfg{w^WI_gPu(=zd zp-YHaoAXRf_a?Kk{TMRM$3vn;JQ1y7fH3Pw3z}WjnfDI~T!c8fBf_2XW|8v%vda+a zPmBe?k?VleLFGe?mv1yg9*7|?cqFQr+%?QUV%NrZD?S;HbBVYwn!M@%n(kd|U7m8B zi;@&7$M}y7{{HO?8B0+UunVOa#eH%pGk?7ZtJ zZ(}Wl&xhj6_`1y%gKD-5Bu?2Yb*}L#v_3etv(>*-Y&nHezT|aMLc=oaQVw6KlZE!jbiP$kvYgG3F-H#^?yBjO231j++d^~D&Y$h+6`djXh62(E2W*EC$|O_h^J z#5q)}mV5q6M82}Y4zJVj4%8KoJ5YcPF>3bi_r#`-kc^W3+??`brqJ%>H$piZ%bOZt zzhW{q0_pqLjej=R)f{q+ScQmg38)i+65w4el!pO$x-d{5q^iA!SaG^H!Vg3h&EV`D zX8T0BC=J)|My4)oURvu6eO#HJy}w-Z{c}Ev}LIE zDJ>5vZ%Bi=xn4OeY!78{0r7iC-0WJnbZ0fwe4VXRl#=6JK9lVA3s#7-*&-5$& zKo3*FCa;B(%jXbS1^u4uViMgP?d-VM)uGs z^XiwZgthM@mEWd$0o<GGE+1eZ_t?^Ju8kKO90w4#ec7!CM;kr8TIO}sZzHD*< zu><3~LWr0cm{|0({OuuI0@y-MW(9ZxuBHsvBRbi}sNc0Z)d61|iWhewaYx8?WAWn} z|BTW85hPb!e`whKvEUTxW8L$ZF!??){gDu}xA(_Ceoi937>uI4bPrJ0OcRS%=?^x< zrtZK3XKVZdfv03->m3+6@X$pRD#a<2BOeGQFK|(wuT>Tv4|f`*=~pvE<&16s*BarJ zvtMaQlX#Bgh^ckwQ%zeLGY?x@;Ac&Dt&nsm%!>Sfv(z9C2ccmMCAD?PT* zpeBV@J>8UsG`4!Tt1W*&BFLBsZ62nkMRt+)KIl`~P10w;1Gl>Rnwe3k)0PymGZ&r{ zO&|(h@WG3SF*oFEKk#yIubj^Vh)JI3;@$V+4AsH;@imY~_2*b~*k-0$;yni{c)A6r zy)A`N+pFQ4M$@C6mNYd^NqAQ(EVSNEK6M4KMn3Y=#itx*XBa5%0pbBggon<^mepX1 z)`XILS^8CQ-N{Qe%?MN+5VL6z{6OVvj)g-+ALKMX0>hz8?K-6=M*P{kr*hT9_P7IB z6@a%rS{l$XIMk}Pv?pIk#ji3g$_<~Vkmb{CMAdf#*Wp!UR2YtSZsjRB%ZKW-W?Y+# z;w5RhtlG(JlV&L56hb%vWr+g*92cEo0LUb|c7R73yp%v}kPwn&$+!XMcw7J~MRiZt zb0c7vek<(6zjSuMoT$e__nm2CC#8B?*Q6q+J9w!BufFtT4` zwm+d%7&PqS60irqsy!>qeCj-X5feljTcI}#$Doe<1;JfgkDE`)>MieSg6DM^9N6QZ z70>++ID2oeJT_L_{S|%Xa0cmgEawDf%Wb%dE|fwG*T<8&H~CA~YGH$ba&z6sGGcOL zDP&XckQw(V`Ut!rHg1Y3oc!>2$g!+|$o@Rub>CU*W?B9qRC2l4VjSkkm%mv#%qNd> zKr*-o!-Wk%Rpm*rrL*~eZ0Tf%FfDbSvG)EibBSpP0*xsG_o7)-S3;a0gAyx*T4wGB zQ`shVZhnbE<0>K{S2oxq=zTnl0Na8UH11}r`1D_Gdy453BeAiem~!0P&qh30vAu@_ z2Qmbk_8x8`&6oiNL{@cz-Q(%d%hbr}45VT~##V>2c5(79RXFEu*=+@dts(teGBBVe zq`p|}XnGyfT`YvgXQ7lwho+Rj*O*EJI>Qt1X*Dam)^)&zmf+s~GdHv>usKh-26T|% z?na2A*6m}@_U3V-C&e0)DFnjV# zaM+oKJH{@EE^M*Z%E(Kg`VAzR~+!yRz; zUBus=4LENM_W8w^U``l|og;v9vjU+y!wHX?>(~u2f721DMXKdSF=3C)5sQK&(oQ`- z+4OdDXNzDUqJJ_}ASv|?e;>-qCy-~>(oXsB>u9u-Yu z&v>%qN$WDwkNHb&KHXLx0}cvrWckJ*EjW6*&q@DF%Nvd!DNKL`M^&v7_B$4ahnKu> z*S+yeCdSt2oef;0`-hrme~c9DNri*@;OF9o<~B{o+pbfjdD7u<2$=p<&QT?eIL>jd zY9SpKs${iEe+S|0Ayv((hZhX!f!Li+7u#*I5~snE!kHb=a2Z*c+0Q}Ax8}Lr?#~>( z?tLIb>>w_Jtu$4RCB}%jZ?57_%P#C{5Bf6|)KmvcXwLnpx!&h^{@iG4XhvQq3spQ?{S+93c&B!m}@!_hNnVO5U#=PWxgC|5OYP+$25;$8(6@c4D}wq~Gx4 z=ssADhw(RWW*zSP^CBi#Lq8%{vv2hYDW1G`PTeHl$D7|>!6%}G*gStoZ=9h+$hyrFndg>W28lRAK!`N@gk@c~_@8PPgMj4?*X^w6of zE+RxLE2WM?3o>6qFOq%^xOUF5m$!VM8G73G^ti8k3mmpZmzdcR6U&~Nu%C_18qkNF z#Z4KXG73^aMfjv|OAz#b-9OF!m1eW7(-dU#=r2R>e&PqtEJW*<*!ID9TxSK08y*p_?gTaBi$ zw0C;)$tLZZ>H3o$41^WO)-%lQBqd5-6+d`;$cmd%y~TC%ef;CR{;O=h&~t+}2zrCC ze~PJ(e|7K4ZZO5Xv22T6vIt=ZpHNJ9b%($=0cSpiu6B!Q7g5NBpM+qWc46W>R2@m}v0JDh zW$Fh9E?+*H(k7cq+vC3Rv@Nt`+Wr)A%5YU7=^q6|(l)_5C4-$tmruK812cyDSy6ZL zO0iNaB*s1=C3aUf1m<`yg)QAb%+MX6NHPoGM)hmo>nRprhD(xzvjyuOH;Y>Z&5&_MD0*>QK%(F;CmPf{SJmmNQ zsOm(yNU}Olp_2U0qw-O8x5-PYcrCgX&SpQDrl!J`H6HieM~yF%%+i=Ho;7dQZE^Xu zM^Tl#0^N(kt>p;>NC^x(_8k?$wz~9KwCH?kkAZZbET6N8XcWYwy(u4L!eC4KnzjCg z@b~l@VMIODns!i6IR!QNd!%dfBxh_YNU!wI)9P2G9}uzHFw@Z_XG}?h!1%ekE5oJe z&kJVFvX?2ix2GM=&Xhct<4hM9lP+3*lc?>abjxegux&_cpm-&X4<3eK}=?qlT9)V_`P*}nbYWjpbuoo(;;e?G2e%ZpWUH`G7OI#}QNyB2ugberkv5z63+|3}w<$7B6} z@#A=|h$t&mq%_C~WoA>TWMuD=vLk!%QXwVTdvjejmz|L!d+#kId++r-m(u(7`F=jX zf81`A%k%kooX2^bb3gZUKaR9Dwp(NCV=eu6{Er!EDe8;=)|%ct`~b}Qf6&54P2IB+d?+?=GBMWbEcwM@!h(EA9HL{FRIWe*)h+| z_mEp1#rQ37%`8$mZ_{H|=x@8$=wY7S6&*RU?ZY2Vbq|BH-9^c1=|y-(@knXC9}<6e z_rcvG=D&M8YK)|3-6uwKS}Af7mhDr* z;y-69XD{iS5FTHx6ZFxrnd$pvVQbnwZDp;n60J13ee_&Lz=I$n)I=2_wQ~dd6mxwo zN3nMa>h90EzVhmq`H|@qqFwUsK1qF^Dim>jxl zdnS8&su3w&mBA4qS8$qP&<;-Q&g-I;=Q6YY)oc@ZAtC;bp&Z>4HFRp0Zg)mLPxubc z%#SO(E0kT{s-ntI`IFEndh=5IoUEV9opKgU;(pF4K~hvjr0GMhir4St$W>gnrkA9; z(9N5phO2V1#A$PfF3GM3DPM0A;H-0)%V2 zSh#ZY>Q~$^Waq+M=r-Rav_Wd+zwrgU#nd0oosMX4OKg-B=#uP zRkS>>PRwK=951#1w?Vd}4>SIE#!H4i;Yo^fb8AJX&pFp7)1OsvG7V;qXs?H-&4ha%2r%(M4Qsar!tGbfu zuko2_7;j|U>wi|WCHFchG5+P_3cS?fhQ;}a&wJjO(y~1t5 zFYZh8+2|X5GWouLDaABaC5lhju%(pA^(&WV?km~RrZ+20;xI2ohKvvy4Q>qb>84) zd$NJpJ91aTTRvut&rRwdTuFK()O2yX;?T8TF~h-R#X|nW=R=aMjUi>^(cw+RU&2~E z(3m(WIDUBXD@a6-#HXffrfX|TvJ{X8b?CH$xgFbFEmjlPRqCVfzoRR?&)o!(s#Jzy z5Y5Cv&l%mKh`18Jt`<~2&4Pc4@q^y4q1dmgOzFUhk+|=5dWg@ke;_|OjpA;8Q=@}Z zYHSqSgI5${;`ugu@8WeLT;ET#aK$J4qqJYQbFljkqB3JnF@>k)Fc4JjX(&7*+`01! z5hh`;Xczn~F0>Yl1{#$i_DbF_T$WdePIq&1QvNeFYMJ$gwoG&wpWO@#*z z9x+m_D+za$@hPn5=t9)ul^TL~$f-6IM!(o$M!| zKo`S@H??q8^lfsOb|^UAQl!Cn&4==PA=kt%C8aXnFmhu{m*sr9uq&scAk$M5k3ZWV zi*)R$D#kw%!N6pOicKh2;J~RqPtM!rZ~gLJ{E3u}>drDX24yVeys}iKD8=vuhO5Dq zHg;+0XNHpYIoEm7_&Ie~Y`F2#nFyo$0=}k%=6iM(^OG|Wsi94f+Sr{3DvEKxMP7Lh z2Rh2JHe_v;xm2WGx`wfyM7$*|Ry@Jc{R2U;HeAw#w~!QuahfQ-m;PXM^^bj>K!g#~ zAi_`I3P1Xl?{SrL>;zwGW?D#C$~r?3hL4jZ3Mdof{o}md`-5I|)kft^*~#d%sxv`ahzB}kM~IVZ`J(rcMjnLcE1 zSbQRk-zt=9S^Tb9NTaLhaG?_wkeA7!`dY&MZhcn6_r@+c756&dm9G3=!(T*8;IHjUe_r_nIG0`oTvw zsY-rZXtaB%AfPLn-!Vpxid~D0x|KDMX`qFAc}3m7dnjT>X3wXrO_X9kGyMLh%&n7D zTV6t4!e7PI$v(E;v%Bhpu(U0en7@FUkQS3P?p)dr3k{`wr1(%#h_`!d#NlQVyMS_C zr39Davucqb!n7CC>edG(vyp|v65hlEs|!B4{H!IlcJ~UIvTur0nLgsiTJt1`94>>h zdr+}wa=lzv$h{Ot#}w&>2YNZteJQ=YC@DNb=WNgKuGRbH=m7KIy4>cRO^6ZK-vh;z zREX877VV4HQIqb|oJQ>v04&>)RMa{Mvu}ELr745TmY6|(5K{;e?>CUtKhhpjZvpr$ zjom3FF~oGVU@t4qZ@U+gDg4jd|9k{DDSw&iuRq7KvJc_2t(YEaDKT4~oL_F(6#k)3 zsne&(hagjBjDVLh&=3)MHJ9`xYah8PIlALosz^eLhh6al>Y}8ic+?Kt@+gzN9P(CAaPpKdF^nDO(fn)TLS$c!?p*#m6N=;#8N$ z;C;4nSsK-mXRg)yrN;Av+#_qHq0LW62V|yBvHS?D1UQECd96QC)J0U|EVyivec=WF zSk8x0upE*r>o&99Mscsz^atK-g|g*|9!D4moOkZ0!p%<|S(b-ANjB9}<0{|tyWNgw z)od4~z1?R}X0q4{Vr^OYycgruhPBJPCOkAFR`_f@)ELn){4%Q)XUfsAH7TY zG>EahetQb{qdTLX{D3ox-Zm}Yl+Sv}G#(lA!T5yG{sdoE{E29al&+BA8YnO}@n~nJ zv_nn!nyuATa#>w=}I%|7G_~b>` zLR9gKu+{CU1HV14{ynnbMnvF1^rHvcYIia zqhLiNYtEJGK1E1=An`%ZS!{AzJ(K{haIfmeAK#Jg6~dPf&s{pYSRqPt#-l%FWQA)t z_mF*$;fxpae0y&FMNU;0+m^?sv#EnWD%(+tGx50_r~;DwFwds&r01Xd(@?2arCjN| z&c93ibQuW^e&)K)M{uoY2&b{K+w0lRFobCQL>rFvwA%e{uI*$=QOj2LTklHrW~G@? zCX?Hr3<@exYG5iZ72>UKtL@nTSB#fbOA z)vt7?0(Xr5QGa2U!KsGPudjl5P?i`muqBG{tD`nYD`w~RaRqC!``yPKU)FL%I+Pg6 z&u2A_N5L+}>hM_1fBi7}nq^7x*PH1o311bU%5Ap|jcb_cLiR{~F|7*-yc^77cuvBL z-Bh*{Wgw$1r=uhLGa+|Jl4nz6>ZO|%nQ(rR8s}8Ex_pAmhI0uyt!{Xr1Wp%Ob!+Df zS@&!yss{wy;ktCX&w{(s_)G_Oy2tayY{Ym?`*N$d=ed8F+4m(pFy>7*N(l9pvQZpw zrM=zmyp{dzS)I{PT9TdV3&pyGh1l3@x#3xwi|lI@D5Le4%?4u(YRd>lh$y~fx6$!W}H@xejY=s8pn&{G0}mJ)qXDvc;yU{~ z>$pL=Q8@wJFNdA$Xg}_Yy?Q_NkO}(>Qzh<~;j>qkHmCxL>>rbG2VFPd(ku)r3gbQZ zH#)__ZYCYwoN4(v`ZrqLBFXk`GQJ{_(M(xF&n(CEBm9I1+k^ZI>7JfG&lrkQbpy81 zjp?qn$xR~U{#FmB_Z*deEAS-f4>afMMaA8xHa&xEjq-HvzrwH~7R=LcP z2j7ieQ|`K~r1Up-y+hX@-yI>UYCpF+wHei&ogb2-8}Adxcq6?NlOlzOhkvRsv0-os zrW~6u+-1`ZI-jO!+U2mlg4{Q_p^@@lCL`Cx_gXGjiIL2XVjySQkFX>&a&v0I!9ok< zYnz%#^gL(6!M=+x>C67-EqdsH{FL8L!Xppy+0)+Xw$f;evBf=m z-bjPom(?$;a?4#GyLY9||JdZmN7Ny@$d?|nq{zewI<6U7Fxy0F=(j|hQq;~5mD+hA za0*_I2m-F{CLS6dRKIHvUQesRC;Ws)7sd>o? z4#TshG|A8Eto~|BQ_j-LHxAnAsifpEYz5}I4>?nFIH!rsit#8&Dawv^*?i90>5vf$ z`>_wia>v(~drE9fCW{#*XL|zfW8XUsDIM;Y-Q8D2_JyZx{-kx7IMAMS>9AtKKAg|$ z&j!=D;-IgEld?$3q9wnkv{pYKH-f8Ye?ohj7C$`vECaa&$5nB!%R@Zxd^G!76H2Yb zn6#amLZ(udQhfS*rC6l$Ob6uh7>BsuWHO~DU$HMR4kC4upBtClx;`n0bN8mSWZkdM zQ^6g{JkZtMuEL)CD1L*%C$4Z-0ThD>yW zns4{7Sd{I2zsn@V&iju@D)!L9v`%lGATJWvA^; z!m}SAfY}i!Fs;l3ynPH=wb*(@E_d>@M0o{&-nnkmSkPX(*|> z0by5qnj23;4_FxaCOzGbZ>kZSoi>~aKEkLISC*VBQ(UuQt z)uD6ghPTIm?4Ej7NXePeSwUgqGEJ*Zm&8oPy+g^Q?_gW>)lM@(v!L;O@(`r(#Z|Q7 z$!yy57Y9Bf%IdGUEDB6@$jlda`iSe=)pHnh6-$wKeF&|0TW7LOHskQKo#}+Qf2f(V zw=wL4cVhUeYI8(mzdRYE>%PrMX}4LrezDG38iqR6@G1_Ouu$xkog-S~YzW?Uy+lH^Yia|{0qRA+bE^30$p z8M15Q(MHc;lycL{1i=*~@5{-!XY?w3T2SVqpG0@3%r5!arln?=>5Un~&$5&543@|f z5sreNm&qr@1=O5AF_uX@>%K)uEqCU6=g%}BZ<9)6Qnr}Y72$Z_A0wkKMVeT37aR|#)j9a;Q5kPq`hDz>}w9^PAE6sP( zJoqFMH^?>RimWT$u^_^bTro zc~5Ud5Q?rqXQeoZjb)mPej$6(;o;^w2<|V73qGb1Ab3ss|$Ur4&YL-@40u@ENQ^JcUaTi*zBxO=MI~KvX1cTB*mH zCp)+$mskt3tQnQhE35OQ-(O^}xnwdWT}{KJkg7vyLKgzW1^%VVlLkZn&e^5|T+ERs z%}j0z10TXmYC6iCHjTSbXD{>jzGffVG}e|o=h;;U%v_~`PvL25waO%YJL|JdC(;L7 z^%{bWLY|cNAWLy)@Lnss6KyT+L{AHhUnw(KsI3=bKOhqv&HLFPaBRpY5W}Q8qKie92zaf};J}$%Xo9wFL{7vI;F&n7d zhc*cU=pY99KToT4q zq4~Bp_P{*r|GePCCL*-+`}*d^F1NdR?B=uG8T%|@-{AgWC_t5vO6FgF*~%4(Npmb! zVCgTN@-wtkTOUgIOp_43()jJ)3w=Bd9jd(qPwyUYgYX*OEv-2Pc z#U0j)#Nv~N{@s!HXiPn%qj)jgQ;(kfhjVZ)k}^1?&d3?XHbrm~HLfer-w{#YN>(Nl z=afQw8K?>IWkSB8!wo{SX*^-wYWWL8kLKsq2D&>jy#|Q>kh`&wt#U(kdUhL|TW5bq zo`dHQHiu<@RVwQ4!hIO}LIiPBE7MI(XmcB2pDU+2-`OBFlcsKjKm*8wxj25j zV~bgeJ;4)u*_q+YY0OV5?;~EFI;&P{n{g`9M{}(8{`fO`yorL!7&qP+=bz3yNY;xA zz9SS&zkW9kmo-NVeE2DHQ|8ykmc8pB9vOq2sJc;j%!V^tL z#yT;9#4e3pm+&S&(^t-QVj>bzJP_dvEM{K1Yd$*B=SGW9aVwQWzFMS9k|Bk5U73C! z1Jt~q$W9)@QpUVSBfLh;MP`}&uD4>l8}kC3H%=WLOw0~U_yDG-@pLNgXa{7k>xA4# z2c=%*Jt;=xiNGh1>f^uTDKjaH7s>pj7>0A-bNDO~viA6=q{*X!yj}AbH*FQwD^BsE z`9AhPmRLwv$@v+~tZpr?nyAKCsg)a~jlQwgCnl7bsg^$jbP;Pz_>z@1Z^ZzA%{>Ks z%YCzRR_FH7pFa8$MsjzyC!XEvx+%%O(gDW8iB7*5C}?^w?hxrZ*7E*iySQ-B!=3Su zLZ`}P)%{LIXT|gXo?rtN)XFs8RggD16{Sc-6u zANJj8EKA{MKRMY>|K~k^DhfxKV1kYQjK0^*)fhEk{fqYpObIXCt{lwloq$1KFQkBSLW1-53U9)YFy{q3DjZQr&8s~!IV)&6OVG2-STh^h131+pO3dsI1&%4YByQKjs6#B(hv_J z>fdPOKKCBEL>9dVU7=*w=qYuyVOypqpHrxpPkg{RI?3Auws3llrrVS1J3Dhr`bVw$ za`m{HXL_t4?Kwqsc@O&JruQ;6OUa1KpkSJxoVn8n3Cwgy%Iajp)a8_7&6{t}T(ksH z_Zf3=0FccXfw~arLTt%B6f0!=Z9efD2DJ9x9=S)xs0}bleW}g=n#b_Z~--WhPd1R9D-hE4pk**B& z!Z3D&1K{H>d`2-z$!}tsDB*v}8!D+g^$!W0BPG2I0-ew_En6H1QW1*DNNA%UD1h2` zB{Z`pm7-@;91B7u#gIwR#F4&BQE}=I_)MdNv&P4rY{s-fN`AcWG?^IK^k4k`*LuU; zEt&3rRB1z15F#zPsXCr%NmKK z7M|@&OQA_!uzcX)OU7Wizuq$fly%5Lt%SUIF_v;5yuDW;9f*fPeG|e~? z!M7YnE3vK`?%z-P^}YC1$Ac3dcm&`@u2soQSa={Hng&u`3jC`NO2q#UiD8zYh)Ubj>1?d#VM;6s}$65dq()nXD)Nr$QS5ga#Jp#z zn5mEP!9a*P{BqCNnE%gP|9k-Ov~?Nu_#Zezi}iz#m!(X4`vc}-8^IyFs-3+XlLR;b`#TT$`gFA&E$c6WcS0GbBGSt>3V-We$;v^sHmc(7R#@IyT+bGn5G@! zd!F?&hoOHo3a5AdG0!Jg{+1*2z&tJgb>IfFXL))YS-!oTPH*;85E+ep!)5)u6~YH6 z%lBvSv9NWOV38Wj)#!p1v986c28|0IpKFYr3DcBgd!{#&X`g8PgDiUZBLG$4>M^B# zZpHF{nbGm-n#hG{q<9Zu&yQJ5_a8W5EMH&Ya@PK=_Puh~ymCB2&;EFAj(_Lh0iAGP z5%@n3>v2~49&he3%N@3h$sWhQ^js01UTLz3=>OcOqenl1#d;c(v`#`0r$u@GnaJOt zVqasfWGwnbG39Xd2yL|RUE6y31?K-aiRD{Qk|ct_jY`B?PS&dzyzn-_|8;D{U@C-$ zk!~k%yZj$Z_2=U~E|5Sd|ET9mlPoK^=?!q4mNc;c0$y!jKobf8Gym0h( z{LD{EZB1o9e*F4>xsc z^S+3)w9{Id_|{);}sW9~sEXvf$5j{|jAj|I1b@oiy{px;t2 zXms)ZKX0Z{1_(0nF*+pCl%%iz8LXukq$XBgQE!j_uBcxn#IKDirnJUynuY)8?v7XE zXtzCz$RK2BqBRb)gYg&K=#9_J-KE1HV&{1>)Kk`YZBTi3FDYW4 z&2ss8Nlr*oqx1+RBIR~m>iunY{sa9n6yj!VuQN!S5{{@L#S zzxNgdD{#JY>_gD_fsB)ZtTEGHnQ}vy@lsu14)e#0`*q@_R%QNrUhVVry*uy&cuSr8 zwqy#DrKqJ;C*NLq=dQm~>P2<5!j>YC`o51{#fl+GDteJ;zpTstQr-LUDLTJnQ@uNP zvYs33uN8`>Rn~oO<6U{@S1J({c&YoHz$e^4M((c(8EFSOuthZE@0yvfG>*`ydp|pq z{LjrW`}@82EV6yJ@^|O_cM*B|JlZakLhpT9Z7De=czB!&@=QY9UfqAY*YbTLr(Jxu z+lJT1a%G9&<(+NMFfw=s;%`v1d~06}Un<8)kBukm<+ zNl)MXz;%v2ZSWsM#A6Va6MlI4&rR{Ytg^bE9>ay%ypeM%7CNl%g@2YCUF~ETQU35i zcy&rDqc{O0V2bvU_RtnJ)yvRk3;I_t&;`#YUA&!4g(wot`VlZqr*|l-~pf0*siY-s6x`39Lha7 zN-x{48F&&^o8)SYVx`?L-_2Z|iecypl0@oFDUfAIaw8m@d77KJ`MkXuHqC}+_SWPj zG!G5is*Jj3(lvSVmFB(9@05pgSO^~Uo`2rty1i#*Q0*401KL(`iFkJ`&r>zo#3X)zO8~;!UkxFPm&De` zbN9BVVo2##bDv+XR-gxCB!>rjP;H{?|DOjEeF6`Jo#TM9R?Mw9fpYf@RO{*v)GUo; zEjJHLF1E``IPtv9Q94DM!J?H>k&POQS+=Tpk|IR`8Q7e^HNU%A z5WhatRSIgM4Gf}gwz8p15G8gO%Oy#iy>NSU&R2^cB8e=D>8zM>4Ts5~vy>c5R6juo z;tt6DL1D#kpum*RZh_xsCQ!E$6S65F2b)6k!FcC z(v)KELuW#h)h{TLLx2JKw`QWV13sddz7p4&<>#v5;^{zUb)||Q2^PqoWo>t^9baKI zmIzVd>jq7qj}BS9f(~TvJ74WG)biu4_s$I9D`bSrDPFLw!k%i43%sA?;kuvi`f!57 zc!DoMikDrnS)k|q!7VNR$>gkZ%U_L;=7kxa1C`X$FnV{jh2d?f9Ur>^??54+X6a5d z{g?LgGIk5ydc^||;qTalS1`kqh*(v!D;K?YKQ{m*3+2IKXru(yh$+RIwJ=MVUC&T& zZM(*Yy`69kQR2L9$*v=2wSO(vX9A<(P`VaDk{M5&6(7flAB9N^L31(2^K0g8v9@AS ze>1)EwOD*N;}bzl%5;eE-I22vf(XIU@jWW{=@{l%88oDQ(~*n@+GGDfuXn6i!8Sfw zn@ul{Zb3GtCFn9YVtTUwd>c~Vmbo(YX1MTldvjYtIcqhI=~f5f%Gz|GadL2(!k~hX zZthsi_G$~h8|p`W5Vb&0;LGx5f&Q%Di9;+3RDrn$DKSKE$0(jGj6?lklF%&}AYJ{Y za2Q=49YE96(WMV>+ah%6T!j0XY2OWiKS-Y4&$?0EQptvR9esj zF2tX?cEqwFW_Uhe2yU>d`-~FB6>S1>dcPP)>7VtlrFR*vm|GQ;GAm zn$7qy#Awk(IknodznD8Fqxn$Fy`#e8gN^d~48v5H;B8*2iObSg{qG|rh_}@qwbms; z=?~PF(pIRO#vt1}nwO>JB$ZY*(+IPtF%6=C28X5PET;tTVG_Tf7SyyM&j>~^0Pq85 zg;f8rC`1f&aQ4g;@$y3;e6JeA{y2N)#~WdNgR7qp_ICl+DScWcl(IKhF@@d<`Wzw-FT=U$hL%NyY`8@HECF<2Av?gsED85{GvB|3;--ybGkH(#!9rnbAwJu-)WF-_l+A?ls}R_J7mLgG8CF2#eCmRr|nZcK%4 zYjgfk3srXd6fT$he2FVkjOG%ef5NhmD^ZH2%yAum2hS@XqJLc$qp*$++pmT{WVsR< zL|(r4`8;AsJu_hmvgq4hLi1bsSf~O*&bR%J9nmf8J_UN52cO=%GhWLSZLt`y(R7?n zQi>JxrKtY^LI?-S6|OE$0r&_Ka){012l*Rk5x{Y=bklNjDSH1eL&N(Bx#5^alJZ}d zwiNAd+c!6)UMI(JUH+lvt}WCtMgWW~H#AI<4!gYe>3VY@gY?JCF*@LxPzU@uqAxsaG>w4yx;y4Jmw#k)2QqQDOWbRE$ zOBN}gX{=UQve`W<*9@KJly~H!U4bRjEycjCU|LIxM zGZfTLD^*);w>T`3(?$6OfU?#L)^ew#gl^t+Z$JThxKR2+(=We0olrgBIH_;if=M~^ z2=YaIE5s$b+^I;LfeL%habtcSMRgyWf&DH4bEZmy_}Nk`)T!9>jyXSN$gnLRgS8C? zOch6ywR)c2M@yBB8(y_5K&($N=|1^;I}=}p7?H&D*PXxL`_Cf!%UfRy$wXOF+%gYl zv5}5^NFB%&#jyVTcX%+4%Ph0OqSn+aqR4U=`F`7lIrSPYo`++6pD+DhRsaXcgU`y(?HaMP2Vi==3*?a()nzBohPFGFxB)!UCsK}PShCzsj zig_?#aTj30pf8{%C}=nDTk5*+Sj|9A>3py~byF%lF+0+%QF;=HnUBnvW3b*Z? z3Xalz2YG_#7yBFvjV`k&xOa1=q$V+53xvK1apt1ZhS9#OAiCKKKw5?R9w8u##-3Te z6wK|}^MtXkO{dOW&7)TjT1Y zmT?gz=i!w7oZxS5K!7wzitDo2bp4t?kWjkF5qJV&u2v^;Y$#8s)-2jHnfH#Un2m43&H>MJcncfAI@V zj*fpL+>6}|7oMJE_yT#F6UZ6_PF`Fys%KNMm#d4V)4z!JTaR(sv!^RM>P`WpR zj~mWjANpnN4Hem&H4`1epc2${TIingz%M9v^n1(8s#6^(=%}1 z^F1Mzo&#jbJ``mXW>T&-p_n`mpm^Ueh@>Ir!BlD?){4Jh`Rn%pT*?vuyOepDA-+!$ zn?Cky{0vV}3Nt%}e0DoTvQHZtSRV5jb==vf^5TzX|B>Thm~XL{R&ENM-+^*NM?ql_3?LCocCDigS)1!y z1>rt9(v+EBiS74IAFIpOq#$vBRrPbB=6ZAPe|m9Fof%3#Wc~G;G3Y%qGM&vi~Qmd?$zjY0B+t-u*>C zXb2E$IZ8RC=Z4a?wIjB9xYUuBdJlX}D44_BP2%pU{vPIW9Sq}<-=$0*bm~%MFc~xE z(Wtg2+f|T_w5dE{(9bbdI3gErG?lwBL|rNyi?~#W6&0AaaRvVb?GN`kZyNH_1v7sW zOr;u2tUB;1aw*6to}*l^PVBAE7*ty}F=Mr$KCw@sDwQUb(a8%{46Aj};%GAqNzM$? zEVWzA#Fp?w=?>rm4_!+3r%gW?K@sn;rdyH7*=ib?DCTQ}TK2hpR zGd9YEJye=KZBi;VS;c71Bt4&n91;LdMfK1%F`q$TaxIuA&*=MU;PB;J$2ncqsOD^1 z<2*AzIlWMymAP&&#gcsL5DFE_-4&w&z7*s0BNY_|l#02@()4sFeIHeQQwn^lQsoP_ zJ^MA^t|Fdde9+u?{{H}S9;q1MDJaWNZ4xtjvBra`ush~9f;xj+}~&)M>eq9 z`JCUhQ7S>R;-Na(_A8ZaT>1h#Ob46`aUn`0U9+BfRIMFje{J2L5)npvLD1PAa!suG;LSiGp{h{kl`D__y-TH^oLPy^oXGj63NoRDJ;u1Gy%Z zV=`0)wXEWNQ-mReF!!7<8@Z@8q}f9@+y8**BAck@G>O`R$~Ll|x9Qid7cC0JwVZGy zto)*J{{!uf8o`lRUz>euesotCv*^fwdO_Rs_WOz4TT9Rfb}`uJ38Mmp4#r#Z1BX$( zLG7CkQ#^`k`jb3Y+~%M`!}3{%8kCC4O9G^{-G=%~I47N>`6X^yv6T028d4qX9XL%% z5^71XLoRp&CvX;NqY6C6gU)McAMKKJ#GIt_yQ%NOxkAqfFn+E|<(j!+_*l>Ll)y`A zW5q819V$!PoV3o8!aapn*-!lB^U2d@nOkX|1zemRE)1fYcNB2$=6}evdqJ0tg?k}fIsc>2`5M#H!8RW8=U;uBtP? z0lACPHzwq?*mS6XcaS=x{;40bt{u&;r(XEv=EFN!` z{||h+goeO0+Ew5T;Sr$JgM-eF+qSU6RA^jopP{*qcuSOmZnw;JCHQ7G_?zB2Vf}hT z&}zP{jvP;{kK@Add}G8^!?(7tJnqrE<Y_Rc!MAh_DvhMx7uz8P-3i;pD zembb>aAi-ukCbiQ{5jEH_)3!q!W8xk2@S7=J zb||LQ%!JtV3I2>}ed!>BOom?$9rmMjYV_ z_ob^EGG2|aXGp|We{A6`FL;LR7+>c~DigucZwCTDPX5n($3v;n(7HlM{39lTBR0d@ ze;wXyQ1r>F;E-88QZ}J|&T`-Jfwm7`@U3azkBk#Y93%2K9FyOOs54a3G{6mF)- zY`Sa*#ojc9+x67~f9jQ9V?9k5qoAShq9gG|_>A-YK|9t1uaJ9N&r-d&I0-Gb`c1B~ zSf2LazzG!XM}p?t?nSKng2o8$#Yek^3v&&w zUyJitcdjs`Z`Dw}H1zJj^_G9%iGNpROeF})idrPCxL2H8Z~2!xt{cxYqt=bqpUiU^ zFSN$zG8&AybbqoPR6wLT+4d){rc)RYqQ_EgxyTdrQ>L_%wd>6SHh5 zIWW2&+wa@yBADUGW$;O%L^qBR1)Uxgp4v&a^f>*+JS@7#P!*=35`x42}`Fo_O@iVtX=|j&A94kiaDALPVL?I6#|Wo z+L_2Z&yZj#5`~9!{}{@C`f6sxWI*dd#1C_Z#~sqe?l)uO`W zTVEi6;e5y*1vK{L{DSQH3OK6C<z2OdHdIeMHHlmo;(b{F40)4jw5#Zq3S-LI z^9YdF6287PkIFyjC+cEppDkHPW7K&e*aJOyncr?VRV~K-;fRPzj)F$FV%B}}8+|(~?BSL^$(D8V5k4&{EKHF1QIaK2+3;iK zLwoGwv*}+7FKE>hlX7$|+iQ+Syez+SA5EV1F?1PI@wrF=C~?OAa;mEeCQk*7Y;nzfo%`E6JmK$}@RdDfk)&br$6sbJg%3_~( zH>s{z0Ux>06|>;fH3mbbbepXg2K!tXhDr($oDqda5ptiANIjp&L5x8Qe)zwKfkKnq z_xkiXpnd!**8^Av26g%KBrK%_S1JlP=a~zI|DP31cux`vohz+)uU7A3cHV>j+-(yg zmK6m~HMy_$VEK8e-eMTzr*i7+V0y(Izmc(34Yu+$on>PeTF0Z1{_6TJ~k2 z3arIt2w=*p=v^y(GWytI$xx|fE*#N(mt?LKg)OV`8o!Xj~|}_eH|5 zt0o5K4z!VxNp`Ws{nCn(jqEiWLl*zu0QF8~Wt*2Vf-ab|jq@Vk3Z`*=RWL0K>x=4b z7TDDA;tzV@G}FnjY8XLIX-%>48MK90fdb8O%18(@FGvjJYn5Kg-&K3xBN|J-3)*{p zO`2m7UQP;~|A{}2C?@Z+fst~&cz?5Y{u|~1$6?fuF%jp-OFZ#U87z~xR9lyg_6MLn z@hb}z71~dlaYR-mA9U$Nr$g~ajXp}2N+nyeT=_@ys<%)O)KiN}bked=O8UiQoED6~ zg6viA%#-5+5cf%HRXjBG$W|GukvzfS#Gn;(HQwN9W#EWIf~Cl+~}R^JA!@>hD&@fXa@Laozb#lIRcY!7@5{!{Kb5CMnu{3 z8Xcm2#_&KkZJ^9WbR#Ns+lW4qU)UgU3wJHCTRedO$8frf=)tF2K(i}gGl9*PBh$Dg z6Q2d6-*l^e!l(w|D$Ldq8F*Aet``M-LL}fKa2?rjD-kPy>V!%Hw)748JoC**N8QJj zCJ0bm92jXP%kuO4-`jp7d#EE-@z8Sh*3n5yJx4Da|GL|wGkg7aP+=cu%rVtG0@}Hr7 zFvA)$FVYu7$AzSis(Vsr+48FfB0CY;WmFX;7`1;z_Y%9}PoU$DXLhF|~QST+czsfV; z#mLw#+@HY{l@sQ}oejB4!J?5mBKvN_%7FqBwbqxzKuvv6Xn5MXLIB0yMdWvUBs>hy zKitO>LAShK{+H;4k++gYVL*qVkYuVLy`)P;jT^#F*t(B|NlF>(Xd6Da>&NJmXqp}( z(f8I9G}%qJ0QHFMw$Ak9%G)E`^qUzRs@M(C^=DjQpYA3XS8TIQnJzffFZ{V4>3}mY zL~xTc3V03rGvY+e*W|}j?jXj_wYrwf@aG-so*uFPebFNp0ljW-d0sM!L|FXmzI^8Z zIO&~3pD>!gcLDbKC$1`4T4m^t=zw_ioj4@|g5eK&P_B52H7~$r+Rwqst*%^h-o2|1 zu9*cuB-x|#U-YqkD{Ci)Gr#oO{h&c)90)SrAzx|!6X-mYad#2!IQR3|<$jN^1OORD zjZJ>=Wz>@ZQh)I+b_#7at9l$P(-x!nXf<0!Cj&-Gl)DE-m1dz?lRxE+M*wtdpU7HmHFD4 zVSK}iN>IN&bD3Yo0R6EC{6SEUWxhA%1vsQUi=5 zFpR#zT~Uo#fK_C#jMQQjDlA z?eV+#IBVk#1*QXxdtpLut{Kjy=41D&Vq~`{FXpD;pl2uGLJ8-78GTd6|FGwGZ%zW~ z{n?(Z#c7_~m|F>S?P$$UKD_&nMg|X(f>Vq2-~2iD%Fiqy;q|=zdcsmv2MCYQq#`XL zfdck8cy<_TmwRbCSQ@DIGOQ6ZwSeac~7O;WZ}W=X$7GLidz^9I7$$-cq|Pis3yF9!>Tu#mo`P zD&O&0GO(|n{v&(f5qj>4cTH`05aHsA`v z%6-7upbfcu>fHj8X;`(;Oq13He8V*KBx3*<>z21|e~+rL84$3;sb=`unGl%Sp5;)~ zR9cw2eEh&PO5ohNm4R zkXRg*8Zi;vc@WjGU{d>4;;tL>TF7dj`SyvwFH~y-rfRiM{`Utm1oZy;H3m%4mswst zrci+rkL&6_ycmOa`5sIORzn+N{p+^#r^ak%+ql;8+F&-56}T-EO%B)o9){PlIy0R} zjC?rx!HbUMrkSp^({69t!ZZI^(>p4xb6Ct;U+f1PL%sjijUl@p0t-vn-M{1b_p`GB z#JExpbTwem0{(l`5O$S0^6N1+tAB7H5Q>S1USI~*@X_g|azflY^9v!CfYu`0UsfWn+lNFx* zW8n(CBHMX2zehowCf)WX=I{R~CcrPe!?d%IeE%i;ckhTVdu)!lRX}wX7y?b|UiaYb z--c=ZeS3M2#Kap-{7^iWo@zlSNa#T0lKz(hQpIlu+5a~G0}zCp?nv1FAB0S*C$e+6h4(!a)3N%GppEza zQzeAl=#_c6J0Kn$eDs;lX0G?n2f7x8zo(t%|B<%V-hqAR5r6dH=n?NQ_=6*3XI1yE zGZG(9gl_AMrK!b=!(pI514;m=jDgbNYv|w4tK5Z+Ej#>h;lId$D=_(H|A7Str-58u zcWIzrHH4@3tOo>d>$5#FFGa^>m_15?wN?eigv<7He++E-8dNj1hB;O-+2x-NeRmbp z;PG3J?Z`ht|IuHTqtXxVA#3>yB`FP(1TXs0kB~7?^kk5Y{|>_wx_~VyY4`Q)zeU%F z)&PBR--6>Gz)fR+4+yR|wNAb|I`~WJ!a#Wh4Suc`Le}9^TmYPV@k5Af31=Ic&&wcz zU#6@4!$Sr4vjVSu{blpt?K%2{+GN-a{d4{U$4gC$xG5cZfy3|#;J@Stb6sgYaPS^& zv6C+FpZxoBm)_#hkKoAO@b~xE5jSCy<*8_WQ($-wArR4ElQh6MI}jzBve93 zg-{ZuvX+Q!EoA%O&oDE-@9+O!*Y~)bD|mG`c1y#+yw>SI$%O-0T0WYVw{m!Y;8vNc+C19zb@dF* z!r&6mhP7KTTeM7kn@M^J1MKM;yQP3LHY8S=W{D2Jl20baMozcCL+@b*C{4QXDoocr z3NNRib27LsUwYA->Grm#d^i2UWSMts=JEi}Q{Ldf4PnPkBaZ-nywB~00~t8vxrtx7rYz?r4Ma@_dqLABZbwHkhzLG3ji3R`xONkx%x z$rT@^Q8VX;z39_(2pV}GO_y?9vj(0WyzX^94{$n^Ebr3$#dSTRBZn0zQblL6GU^mk zb3Qc+J)XE>M8L){BXAE$bSFjd4}X(3pHiLfk&ROOgXrEUqGb1KJh+8N!%uyUglD1aOSp+gA^dY>WSTb~J9cc!!C8}+)3qsZgEZ2sjeHJp z?I zuA2qUD0A_3J2}h+-9>?~HGlGh3on;wzmL{*|Fj5MIQ<`RoqJ>tgm*aK&G!6ul(mKo za{**7G8$CPuIrnhy1I)e{$HeS-r_7? zr05p@PsPXINU>!I4?c}0ZaFjc**w;(GL>Sga|)`EV6g1gf{Qr*$$qH3a%LHo7OA1LU7W>OxvCVj_;x5(c^(W`}S?^|1c%;2bJ zDN*|PcQ@t+Z@sBPsC6Xi4D`x`*w4q6*i&S*0)7u2*jqe-r43SM$Nb*(S7xe3O8Hvf zF9*TRkXmx!6B4WC)?R%#_gVlBuz=hPIo<~&(#>=snkm#HR1Hwt6U)R+i#U7fr5ZN3 zq^b1Ru$JLdNp`DLEzhxBp5Bxo+Jh80r1U?6r~y@8b5)0=d5=!PQzTpUKfGG10L~g$ z31Yp;Sz73Rx5F7}>kqqB>PlM=?P8^FKv)}tv3{RSniS(~G9?O}%&PoH z#C+;qI0iX(tj&_+MT+E&3m&)@tbqR^L_lB*tqtFxrRsZ zaC#J^-I98K%z^%%PDrBjSErxL=ohJQ0k&M-q4Y?TCN-QgL)Ih(YqHs&M`!rVF{jab zP-}y9M1%wL4?TVol#yZ&i0=e*zZ&nz!i6{!3w2HO@BW6~gMp8@T1Gz!OEF4~?pw~t zw)p}sB=+}$^2S}H;rZj;o%zYrxG?h)Vv}mcd|2P;KJs{?PIi%Gx1Sl^=HxS`%aoT< z3zNhX67`E-&ekYFLuH@#F9XQ6MLhd5nkyopGpl>^RnF-NB0;%~Bh4J55T4P&pDf_s zv!i)fr;1VGPrJu$Rk}a#&gF>1Y0o7Vd2WGyA~Ki>fw-u=ae0r1+~#Jsg_Q||@|}{$ zAuo=6!)x6Si&Dd*K$5j3opU+>q=mxt(SWaIrSn?*$|JPUIgQQS{Lt0nzWsB6&l3|5 zMU_n4%)T3_*Vka2sZZ4kIQxN}OTdnp3%U+(G*!UGqv*`+mE*3SZqh(GK#~E5G=V4OEwtyqcTG~V$D-_MaVzWl>PIPQ0w2dZJ#SrbMHr9NzCtX06TSfBy`$xqyg#Gda_dd$M7@(H^m_o z$zQYZvq&jVHn@%{Ky>>4wkNH>RYGjW$KPjVX|Zn{W|bJxq11bE2+@H$uruuZVU7PU=l^UEMF5J zBfC+LrqdL#if7J#(_(%2Mxg^;i6WSwZ|`*3il<$*db zEFr*KMb#9rlhEUc94-?J`dZfuoNWkGjyZW0H8$d4GztU&SH8e99bcuhlgRQfKp-;? zd{$fV0mm4PSe6#ZKHtsRhhmbqcXwLbu%Zv~;u*+H!uMtyoRl|>$$4dAq_d>tb$&k>MunE6)5P2=H>ylzRlw1e78 za@>)Kk-fY5EkF)~|K!N+!A~}(Huw^SnM6 zz?D>!=%oYTX292T$54^H-H+>uz-wpjtFdiOl4$`~Z9+-IE~DC)XJ*GKS--k{m1Azu zLP+}2sI1GaQ>vaG+zYM+lIPFPwaX&ypFwUzfK#yO+;_GGO$!-E6zN0_xcU;~il(tG za&n90*wLeh_)m>|L@%L=&9(gm;uTPBBx5+jkc93#sWB#wqdIy32er)2Rbww71k;S< z6q!F&9mo0-&5J1{V-(^1(J22Y?aTNqs1i`<>PltTT)MmIA;Hlejo@f7LG`gr=QHJl zM_W*ynB+5?MZ<3loU#v%bW`WuJ+7$clme6q2J_@;^XSsjb=e5)z)3}(%&Tcpv&%V& ze<`w_wK+VWUj|4zt~vdLEkT&=%RS5>l*McMN1uk%M0BjJm}#tO9;woBaeU;5`zkh% zQ(-zK1Y+WuAHH>&-6k0 z-(>#A7cHwJr?OXvwh1(fnm`xn;fm$JHG49W4VW5{z8_;ji19Z~0nC@^kjVf`h%-R2n^0tWlc(T|ZKc zJr#Ch=(o+H-@)?UpOx6y;<=BTH|mCAa`;vHM{+>zn!8FhLH~JRxkMu>%%A}M;BO%B zuAd*{blpLEaHOSi31_0PazB{0T+>d@D3i9ohZchd&8@L*he9T50b)s zwJN3z3}2D7bL^TeadCxkXs>&n0#-K&=yn0(OF=BEjYic^aMMNWN*4{pv}b&HGEz3qFx7OD;Cg!O`ho9X2KpB!+?|+;N+pw zH&Ndw*(F`@`0Wf}1a-EnU=O*7Yc+7du1q?t6+sWCn!_4K_V`Czo>4ycflus_ODV&OM_ryk%jE9mq5K+frey6|-r`=VR)21P4Ek6K?&A%2AVJPC zDr;yR;W-fXZQ~r2zDUfx!8zx%NDeyZ%Hj*!Sc|(Ez)&`NniUIW*!gzy)|JjXSH5Iq z;qqg0P!VHx7%$bz{bf&A-3D zX@C^3Pss&C;R6zvzf0)e7(UhzOPyJe-q;4bXJ-(1~cg#*%-6VOVj3z+W2c^k5VTO zqbl__47C+{Ta>N}X?fM>he_)p#&oO0x&6!2?0+pvxzSe-EStavhp(GJ)4qGEK8|f? z5ZNPmF;n*P@QTtcw!m;EXjmt%p7o^%Zu~(pC72=JPz|7!pv}^Tq$fWYdz?IB#<5S$ zlrg#Ec2atrn~#Q`RJh4Cg!+Za1v7@Zg#x?z0ID1wvU&B@8}+n$(WJz$HiwBgvbjE8G$ zqrPQ$%V-^Uf!>v7NsJ2~QT1fL1vrgPpNG0=0a^)L~{2SnF>MWejUgfq1B8F!7HNB&!q?RmB=L7%rH)M%07$q36?m#;6K~KiU_gnU< zvLy%k%-BT4*DF!>2Sr=N^U57YOn=r`^3$+oRsPwgT`(o7ZM5sEk~iEO#~M4y8A9 z@w|fJxdqBmK{ItK*s3%|>OGptxo6aklbJ=>2RMyMxPODj=QOZ?&g_{2hC&}43Ns{O z^+c*`aE=`mv@CDccuiS5rE@GhH-wib(L9NFAJCtq4ridd8}4leiY@j<$$J<+LMbZ2 zWPVnyh@$ww_nwxoT--+74d_)hl8SF&r(8b#uw6VVPpeVqsBQVBxpqqveebL;15sf` z@8xOidM9*L8lDwn8=!Y`?h+=%+M;i7eEeBk>wBDg?LIjn;Wet>!?h9CF>#cDqIkf_ zL>g5eXyY*6gl-CNt>VbrZc>%y-rwggV|k_aH=fZwcS4c5L5oxIEB`b$t7m^@G0VUM z9)=r_q)~mgA^A0k_Q<@Ie;hmR=O1u9tY8ZsUa)rcYV*gpw(FoQDJ1^KEe}_ca)OXL z^~)}#At>8sR(*ct{~WpYicFO~q-7eAge6|}K|8a7UIB9<4KkNiyXCz>JgH`Z<%*+= z#Z&JuHrvormR5QA*P__H}G|){^~VM^l1B zZ}yLUE5p^s*PLl9x2cod7z)jM$s-d{#|VJ{PSDOvF=j~t;lmM83=3zVKG5f(W6AEH z7gwj?KKyCS+%rEpbm00mX6PO#*i3P26Md@@oQT=k`UKuxh;2+O#PdYxS?PiSV9vAJ(!-vxD%gr~RSd~_(-+D9V0=O*I1+c#OKNk3@ z-)%P>n|%09&Zp9ece_tf))b3>F*6k}9bD3ak~C#J)#oAy_DTkvR=)D&?3IAZ&Qo{i z;Ey9ua+}Ur=h^HHkm~&VvasXt%XJw_Z+iY34$a;+ly`v?KV;2{c9hZ>_;~1W_y~_- zkb-OTkFIE11DI-le_B64%l_-{E+u_@lb6UfX`2`tzU(z=R$IxtZ>3hDcz6kT0y^5s z$(g}nR}O^dJ{T+bN<93;)teoyIk{aD%Y9ll3Y1P#p5tt#I{dFiZhRlMk5ib{tE(>k zqG-j4US-htQoC9%_U&qVr88Vsgy}+yN4N#yP^9PHb5tbN1cyq$_yumXxFR@KEbRKP z#UZ@B_xDcGf21fu2{H7X7A#A*e{t{Fqc=gHrX^L*ku8WnRvAYS6Po zlFLlJsLd;;IeoLs-gavC1ih$~BJEPYU4ONl+a6}M50uni?sZD?L)%=(>m=J2Ft3=; zi$v@98y0l}AK8hM^{NNVj`#O$`e2sbhWahY`+*RYscAA&*m2h`>1%xe@*?`;&hF~! z3Rm8k(plTFx@ua->45%iRc2`pU1({qutRk*Hn+pGp_9-GOG>i7U2;Qk%|d-JId78S z)FsNBGv?iW(%FM#z%%VY;A9Txd06Foy-ZC`_H1~Dgn4h|vx9p14==rNa&iD&7ujwI zjA=IFM`OC~*bTJ6F;x+tF}QGcW@qg@XQcVMgSS_FAp>dllVyoyJ=&p@wa!gsftYr8 zu?EU9T{*TnbUFXKmw(?_4p=w!$@f<}Gz2{Ho!Psz%TMHXw0Q1-aGu?Z$|O78e%}kd z!4@|RE9BQ-d^_GXby?_wp3Jab{`Wkr=5=%ieFt+esHrR?y77&^SUsv7|+ z@GYFnXI)#MG1iRTWfOzx2o0PRpH5-TJKmMq5%uu$<;&7~!9mm4*zA6@qOKsiZt6}8 z$)Mk?fs+AbDbap9N?nS9z8U;kF2!wKO{eLiqh>*p(=0Mnrj=k&(UJ!b;09cke0&w@ z?2L>tn(v$Wu8zziY#Q^disv4N@Osl@WKmcj$8OA-AG7^l)+f@EGA4mnc6CG<%!N9OeQYj(^*za&6X+qz$VEn zNhd^JG=(lWC0UJ`wH(V!;JiIb%yZ)RxSg5H+55zxJ5d(Ls3}EwlG)IGC__Cjba#1s zSKi&|jUJw-QArs@y%RP96!zZ6E@O<>oM;g~o3$TAQjDmrhoa6dH)gduPgqt9SXe@9 zSL5wlS0z4@p6>++=%?!5xi%qu&dAVrL!KA#TyXsW zT8E&@xCNc(Q@5^SOFT1iN*T{*36*W^&Z216w<$+8 z21nN)R`f&NZ5#A?Ms}uI#0rs0!%Wa0npfMs=PWbz?3`MOvN;y(Rmn%DuPGpXgUV^h=7Uk_4J-kzlIWzU(1atuv~ z-R+GOSWWTb7cdVUI%KT+C>B=RwE^*aJXcVK=#TS5(Y##tgLVpe3YYD)_ZDI=^cZG{ zK*l)D>qn-Du?DkZ3z~~>O|LHdP5RCw-1rAaGhb#Gx1Xy6bvHvpWD@6e^37pjHasiN zvyQZRR1P{Nd!f|e+>I%Xfnz7}Y1jOOI<62qeuT3%X?l$DyR|zm8*v3@7scmU=;l>a zee%(Ln!K_yf#ug~eLY_`*jj$86xKl8fcS}A{<9;8*)%S2l1rrWRkje)=(P1bm4OAR zp1CY#&?3^)`k)jU(DOiwhR!FMSZGUkx5VY{8un|GKjXAiuW_MpS9FR{8BeIGS`h0< z-KXtC+xgtrOQ))AdIu{%xw{Q%wlhv7^R8k)!t@k|p|!}CdyHw?L?_*IU>z~0tFXMH z;^WSO=?H&8?7-MT5@hgyH$_0Sj3?35BPl!+DG zikg9+Xg#{ucJr*Ma_oJ~apKLLd~oY(OUw68DtM6`J$6 zz_HV0LleyCpV~D({q{yZRdA{L(b&F^bYgIQ7cbFpf4E^X(FBfs8T>Ae@t0W2i6w%J z`2rb}UFO$YvsxO@QX$*@=@Yrxcf;tOrt9yE6`Lh_kEI1zyOw4F>9hWNc_n)f8T9K! zUAb%xVrj4nCC?XAjCri z0rOgYW$}DDIcFTmogY*81A9e|{-)4pR_x}@j2Ks(#XAKb6h}rz7IHPNGYf;A(yTpt zoC8HNebZG;1aK7GUYkCR7GB|*WSHc-J4Eg3?#^4iapOi&&FJmiBTa(~kpf3@>(;uP7j6H+%}sZCGfRMZj5%^388HIX&0{z5z6{6c*@yH3j&-8Z zPB+$!M0jD}{rlTK^k(Hu)YoglSt5x%A~!^YM+OwgxXJ%L&{87t7+Zpqyut8g!tlLUM-mRF%-kJmv`R2d{Aap5CeaKR1m?as^1-Y29 zoA#$Uu~dVhAkc5uvPwJL2v5K}CWspNZ~xhy!YPR4Zb!Teha%+CDqLhq_L?FpaaG3AQAVv0}xF!D;tez9w?pQ^$0X zC1Z~(M4%t}5$LG99<%cb(#~Y9O&?NvdwaJ&yLR>$8sC4u8ecwWL$hTO$5gTz*Zcx-2%4D8mNEmJ=k9h$E~MyS7H3v4M= z)BmGz>$1?tXuvK}APfC*Hg}ypY2-JcdhBM*Hl?E5J6rbRw-6ONFTR<)2=qnRPUvm! zkH8!%D(ps`wIdCNN93llU&?fyiiP|m#K#t0oWLWn_AD3O=4YJ&MG6uRKW)EtB@MVk z-X!fEFhbxMoHlZ(=e#rIBV0Q(44}W%F39Sm|Ezy)-O*Fx&#DQ z2au{ReHx1^rVKZ+W{q@l%o)X_TR7{(XC8tBpcM3mWv0`lnc$~p01E(zVG~*hwP!S( zLK4Xe`9;?_lh%gB3lvV3EpQAT%8@ch^n^uz%hQ#D-JH2E9%FJ}Q-9;IZ z4kRfPAbs|<*f7rPXU$3mWrM_K5#vMJ*D*uGT+W2)j4gen1+0J?Xm|y zx+P&{JX`|){HXK*sQfYdjQmMD`-xM;aGOnj=4c zE=A8op0VRd0G#ww1|+!HK0kzSoWdOT@-pN3aUHx zVE>oDSqqW+&{o=V_b6vUyu@Jtc>m5f;hcjl=PfG-C6Ae z-pWeJJ?0OO*l%Tzo~h4Aj9#6TloX*ep>x>c1G()nfX4VDK$H$`GPBzK2^>QhydMzq zN7ZoGfPx!4uCvWTed{eipr8p|K4o~N=7~sh2E;?L#-;FhkF5c@ff*HoL3YN!e}3)* za5Fjk@?%IHN{rk`sMOqVnkD;jG{Xo+kCr!Z2S6(aUtjWHayI#+(NVVW(A#j|t?AQd z43guOkwfC5@NRp%n?O{!2iHgYTg0|mQpp{h+0@Ufm5uSbeSXoXjZX~J-SugcS_4aZ zTBxMS8h}3-jks5aeeHxB>1+$0&Wr6)kWUfeJYbz-%-BnBbB&`gswq>g(spbF?XpCt zyZHL`>&Tb{r7L;|Y>NDCVp8nIU}QpnHdxGk!!i+BpH}UH8SDP&!Wpv6rYk5Y;`F^H zdk8rlo6_9}kY!8mUyIaaN6u8<&cS=*T#GnYCEW%Gdd-HXjzA5V-v#?oFxi(QInzBdr}$)%Ss;_a3(hGp z*d=0H1=-F8%0?55(4$SCdk$iJaj3)F8!U)`#tSe(xd(!zm8$#1r|lmoWo`kMypQLz zSK~IWlQjd@W7v`r$gn3Kt@Wm3I3sj13Ob0942?jZu_P*wq>#Uu5HcgyD9@V8IW&w< zyhe*-5Q;o;a8^C%{)W;W%anNj{P}d9uhOi&ikD!5%_yg>t=;c|M-bQ#7tDs&k1aXt zLZ?v)?;AN?V4Rhc139wy^sQu*td`x>!zNYn>HPbC1B?S`h2)_&LXXtlwqA?L77HQi zWR$zd|6sPs&6>Vy)XmZ%39F*rb06!;7N~EYi4I)vCi{0BPUiiIC>E+*rM{3lX#VW+ zDElys7&H@(jAfsB7H*}sU*S~<8Qyi}4w#6)+G~bDw#NDG1m5)-oH_ZGN*uR@87uHT zQ1)R;*C+=Jvix)+*@&1H>eT}+w{eM(ZW}RePr9+OaW(P+aAgO8ZSC#teaGIyjk}IjsnGiWg>?Sl6x^SCjhsUe zI*=gi01FTFA#G6K(*XG)EDnd3L_P z`{Dg%2jx+pcM@w=r)7>2-jlx~CONqS8uABPg17{b?ZycxA3SN?md|$54No)7%-(<( z2_Dh?aue;Fa&D1qiRPmj691xnJ?kS33|RwVQBm5sod{?EdO5Bmo;034GxXzt8eHtf$>9D->gt3rm=49WG{*HH@s0LhWu+EfkDRr5b;<_N`|aw+$^ zaU@4#EXWOF@koZ~Ort4$2SWzFEzIsk6}g!}4-Wph%t8-tGNL#J3!J#!3?;s|nnXZ` zM>$IocvXm)0dX8cPUL`#r{+=?gL0VfZ?A7c#t=!itQUI3y>r$nL3NJ^2bnY2=gYc8MPu3C?=1_7JKgV6gcvH+=;HxGJ(qfH+`I5hici}FX zDKu=Iy|n4(%~;HZ(fjI;)m>bPpw{c6B5c!&Ix2gcprY6ZcUU{kv4#=x;r9h{XDhC# zg)gH6lW^|i@7K|c3;e)uNPojVt-5*FVcp0PBmz!{0mvU8$GNiUCaE-4-v;~{-c+UiFi(QnN_5yfbW=x=b$L2|0k~( zNB%fN9XOR-zCEyUW7#)iF|y<|el@edzki;erKP2#s=Yh+xzvO;jPa=-zpJdq_U_|X zwt1}isl6LGG5_8%1DyzXz+KXGd#`M(5E9N7i9p6NMnMt0DtWi^3sO^et<+Dqt)(S3*+3US)x$f9x5|9N{40`59@Qepppt% zpdgaJoqLl77o)%m#HWi84naT_RlBdnkyAeNDE#Q*8|w(}TrK#k+HWSrCX(wYgP(wa zh;0u66VI9Lsqec>r1AWe7?FWb<4u{mfS|*rkNB=li zbuVc3y)&?J*}XW|9?d3&Y z7j1lwSqs&3_M4u(3XfUyb{_`}K{ge^(a#$d9>!xtrRM>Y0DK66t45F=rB;%_ZWC3z zGiovP4e7eNy87oXToAn$F$_QsA8E!BK(wjLwbmG5O%@62Aj$@07nmE885+NS-5yZz zD8im&9#q9*`U_Vz@N%VY6|nI&MlxTQ;rDGcD?}4;A?H;@!w6XljLHrP?zme0w7+>P zas}c$E>?r|1+!+eg_>@imvpLKlmQiHV7b z07r{rmTWbx8_dc<M0iRmc_2QjcN2 z=F1qjTZ3T>(2HSDMNO@#K2IPxu0Rcje%;cYD6T$7?e?l5&M$JrAZNP;uT9`?In50- zvbwmogA8UJ6HH`Zv|%w0SJtWx9EE`^8~us1^sCPo@QTf1jy$kt37nv$z zgba;VWYaFi06d$n>)$_R<&68!Z%J^mM|vFvp8LkFTesqt%I!YSaR$dQ-wER8{_Vjt zhRQc*1-*YsU%UU`C+AESE2Qf7{r)iw8pOV{l;X@sbT+(L(FPYW?)smB0~G3ejLI4g zjqh*YguMfq=tk;Rk+27KJ_mvDyTPOvyX-s)%@l#~#Kl*w<0w|cbS!weO~40XdKe!Q zN%T$MzQJm|MS4Tx;zq^V%ORe>c5{YCy-tjwcuRxL_y}=1WcmIM z5;oy$D}{^HM6{>7coa7{w_OBcv#sJQ?&sl0h8aO>%)@QoVl9@B0Q-+%Kjlg?lF-Bq zCn6J=>#>)sg}AR&T!A}joz0zsmGTs@9=% z6Sxu|=1Sgs(XNa0*zH2Np)Vz;Ibek@;lmBL*e&LyUZ2xICl zzt>z{Ojn04KBI7if$t>qvH|`1uI4z8r~QB3fLl!pj#+zNmFB#W%GXLIX>Uo||*u(h={F)2YAl)R)J{41*)o>^ zbQU)1)A-%a3o#ve)hpt4`-eIj2Eui=yti2k);By8;6p#p8msOHxdBL#7;QEq^`OE&9Nkbani?B9I|OMNy|pBo4x|0v5!wtX9b<%wW%e zny?Bxcd1r|#k3e6p#<#WJ3ODy;;*W^IUsDWJUQ)5RMZpH?Eo!w2;rEIXg#{{U^owF zA*g&ij1c8ouYQ$d7tq6Wpoe9X;?!p`=zl1LR#4UJLm>XB1p~+{dkgri>J|rkfcRIa zz>@wfn!J>&5)+_R6BoM??|F+cl~Cdk7X2@{pWdjvjWZiQn!FvcY9_oaEL04L*uXI$ zAvb|I+QO##3N(5cjkGBuwasxg3AUA@&7wED6MT&3S4h<4JZlym2boV~86S6+35Gxd zEvP%ip?A*DCHOV`>*C8=4?w-!`+3g>A0MCIhNs+P2yhn~#$EK{Gww6&Rq)v1D{hWH z;oTAs8vz)fs;#7O`QU0po0}Y2rODt_%3J6ubALbTsKK}ZFtWG8V#AR;x){@=;*wX~!xeHe2Q)uRI3h4BkIK3@91`NHRQN+O*u{-0#5rN~QVZr>Dx#>XJvhhc3Jki6Vrt8H)4rqrHxKj*}&4O~RGi$SS%gY=c4#VqXyTXMLA;lRMt24P$oMw!fR6lQW zz%X_g5s+Umc*1_<55T0B{5j?TWO}D-Y!i3twD=v&vy)s<8&2tpl6QG)RSSOBDN2m*md>wI=`?>d?`=`IAzXD>Li_fKrj;f{-M$6=_6 zbe`7=_^c|H(evOei9P^}gPwp5$?|{Pg^GxAIU;-s`p`JpF)?%{r8`EJ4@RGbin%xo z1M_J-ggRq|+#!S%Nwf6Ic(VqS^y@`9>^F96v^S zWXUmn)N?8a6>$jBBw(-~RnXdqtq;|n)txe)`wKqvbMPwXKeHa?);}b-9t#U#oTU!J zB9}x(eZ(=4KFi`9oIS2Im8}<;8E_N|o*o(n11CR(gO|X#eT&St%jxAvs;dKPMgG?nfdme}j2w4EBOht8b zbi`X!7bGln?vg%defj1X;Bc$mJkMQOrV0-Ccd_N-#6z9P`x8aMlB;(Djsx0*gvED* zpJ*?)v8TdAc|(J3XdtQ2QL6;0#i&X?8bRk7Y=IPjRg5Ak4gmU*^WO<3kCUULjI8!C z_9jEJBCw#j0*aE{=SGnblhd&Ym~PHqDyjWQ2#)}fk>fW5ad|L6v;Vs*`m0$!cVns8 zY)i3Gfzo(=_#2k9?%jrhxtfCn=^7R%uoYaccda|e z`4n2t5gv5-t9rsw+aXWLt}sR5bUDBVLe;}Muz9M0#Y`N(pKB@vqEV56pdi%qM}+bT z@74YqKPS9|#Vr&fk@{DcE{rw@YuY_O$ zY#cfm!;dFqUFn!}*0QS5-LZFIhJ;oLdlw45c-eTbbA$bZg%x9u>tO(H>gCHE=Q zNx*e1Z8DTgM`#ZGFq%)6Uqk3ZiG}XIxSsz0sGK~JGb6CWV1tC(yrObf4MFJ5V;{4E z&~zq+gxP>k>h*O4@gHVeQQVYe*zaTRh7OLqQIf*d!J}dqOhmbDyq=4~y99xiv_3+} z4CNNIN8R{*`Q|LCxeBDFyyplvU=^6NfJ|k2+2!RV-UG8-_~$<@9H?;ZM96y+EEr>XWCs|2T8fb4^}DV&Ij zVKlbnpR4Mq6RQ1AURAY#+`*dvf3W}NM!lb0=@61FgEuCM6@z{KLbC1fh0#&bz#LiL z{$JUvB<8}@8^zLCjr~i#Xs)GIw{WO?#Xrl0c*T}f8}^nVT2x~xxwxy zb)8}dqL34%boSxO1dAOJrhZ%im)7xdhd?uY%nC}X0itO>R>-0a4UdM|4te>jJwpn! z*}+777Dc(UKrFvD5P9yL1}ZH97}>Cycv-_5TwyBYrLbnqTaGPcm>$^=mw{63xudhBtoY zL| zj%#Z&54UEk(S9nOO^dor>=BQGqGy zS!smoPA)Dy#6VW?-HjRmKH)GVqSDkMLDhYzItL*CZ|a=6Ye$d8Af{2G3`scduU8dt z*NPrSWtr-$Ug}N4b;GE|(iXjXwI5-+D9!D=z)ASkR=tpSl`+>5B+xhr%?TJfT=k2v zt5lk_N82Zh1i>aRsSws?YVrqN@j#~Hw2#qs0mFJAuAWN{fh#T;B*+jH6vUPBw8D8Y zH*_+F*+Y!o>|k|z*lvOh*djF!b`G+vP9gFKWB{ow8{VD^XY*LeIj)vr87SX_^J zj7-Q*gN^PRVZ*eXn!!KmD9jRE{b$C3@7GZNyd80&lx|jdlKl`-;%u9p{l+~)w3QH? zg8Q!avSGf2pFeZp`${-v*9NrEXb**yT>@mYThzI>h^ZIEU(|WKEO-Apg`xHPU1jYl z$ENn6X2y8<8gQ2oSQ|pfaK_@@F7@lf>FhCM@S;itwv#O`EKI1{{u(wp``-}#+|Af# zCc8|?@JtR!$x^ESHlt<(?%#QcPQc97UGZv^q8q~$AebZXvP;3E9sx4J^r960ON?2( zNJ|eut?J8&x{9N~+ZhDh~Rywu_&A_B5>1a0vtxs~^HwN)QK;V=W zGzwEh5DY*YNF1W?pvAz?K^dxty6gLW!bUM@k592eHCcd?J3g%IdtlFa%}O9(tpd1x zz<#Zt=Nr?P5!NhloC9@7rnbCKJP05X5My%FCJ^Se zgm!cNn!X653MwGxT;9|Dn7~5+{+`*V7R`D-Z5>zNFk)u$exjz%n*VxKVoop_%hoqR ztLfh;b${{}e)80VSCr==18Eut_9HHu_izVuU5552il2wDHIR83 zvbDYX$GNaZh-)m-P50vw7o6PyW3eA{pZKCHBB`tBUnnH5g(7)`+89*CtXNjJZn`l0rZ#!XpiNnzJ+gvlyGUKg?;&x;{#A)5c@v7MZU)$(aUK(G15- z$ZO3S`fCcvK}97cBt0DJ6*Q%mTUQSx0Nmd`?u_=RX;{c6qo*%Oob!=iP-vM-h#Kr= zIYa!+*h1-P6#gkMi;8e9py#^}vP+;O0_u;+{TE=P)Alnvnj&xuegP8g_WqZ1&6%X| zG29!~{8ZrNu@@R#Eh!3O86c$p7v9%+-p+fQYqi9W3J7p5$ z-*-1Z+SO6}41|Jjz}fC)b`>IGd=H1k%fzsiGXZFYwfK$yd|@@tw3x?kgrPGW} zyk9^^f$#BOK;Q6AP$u`Sw0IM&bIZH*1>8rtAgHP-u?HwugkVrOsYM7!6PcqE7xGjL zp4`9W2sgAqFMzbEsa`GPKG8f3t`^a!7yuC4B_K4TnW7&kez4s;NwOg5tT#pVzKoiO zc{YCYyAm9C_U2F%tO;Uc!}CKpAp%X?w z6?vSVxCcnZR**-K_~?tGEDaYAhm2m8dyF2HmB11alzfP2N~4p4#;DOQm<=HQ^_cyU zW0*oLTmU?Yx)$V40hwxqn~^Zk{FHmE1v1`IK`pQ{H7x_G6VEHlCWwK zLh%xfKsg5l|L~>vAauhkSbKQ<kVu0Qu3UY$KWX|a5(?-TUHx*5K_o+~0?EJFP2d4;&PIWvI}8Y>oAA7Lnyt9u9- zVa+gzk0d{28(H*egdY*%WLqH+Oq`jxcS2kr!SpJ$R8e`S1b_j;paM<;N^zlycH8bB ziRr;bjPkqEqY@NB`~tuJggPf}4}0ebusgx5~z zku>!Hxg=}KK6u@ve8iuVuJC)SdjCM`R&t~FKvMSM3>Dn5y*_F&SK&5JoMTlk6mpJG z6ol>Z|KoOQ3J~cx+4g0ZEcp@& z2Tr)?Pp}Obiu`_MNI`DZP3jrq&K}Ibb2+&5^O`OJr$gO|MJ8S+xIXTfQM&Rj72nWA zB`?w?0Ev7s#c!NitY}#$ILeFVq0|VV@GZUn%3h>ZW&0J5MnZ3kK=2fcRJT*KTWS7t zJECg(<6!m=bM`Ycb+B22qc#g6IoX)|s?oJvIWUhQiqrnmamEg6Zn!BBpF#k`2=j&F zHu-t~g_Ii-O?F(LD$mi>_&hGVf9l#xvM)RCmUIq5B<*a-+B?)CDBd zKubD_d&e1`zXuEpJ1Sp2c_MCr>cDRzl>1W<*?$fzzErE} zGVyVcb`DwD0b5GrG2Njmc`_ieH3q4KZnxj3IY z3w2x?MGl>F@cy8Q9t7G%8MdP;o&Xt_fIACgd$yAn-zc>TPZ}!wvE)9JQCp-*z>mc1 zU8}AUc)kqQ20*?W=%5a;VK1^v)`id=NA18mr1oCwS{V3?JGApCRp7FH;tOiM+&uSB z8OY*SPt`q*njgbjE-7f%sM{}Q7Ti>&rU6;a^8_hmK^7x-13kuZv4R@`) z5TeZPDpW#D#rWFc^V}CA5J_-NRvy5JBl(i}bU^(Wm#Ki}&#@5JUub#o#lNo&@urjO ze~nhPfs7Tbta}B}ycG}FcXPLdl%0?)>#10s&tgDmlq}kYbi1Q7cD+Q^v%eplXO7gt z7(Qo)kFbI32giktqEWns-d9Pii(tHC;q&l$gIV}IBJ(VQpZM=f!+FsoSDoS%On5Hg zejz%kxbgKUH9*Q7AO=m!9Gn-6&fsOK&+o>0ca8rNJt~N%1=D z3aYlQL#-+QzUmrM`smE04W6S0OpBj{2eg=`kBSfQ35vXEQ%XHFNv9*nz|n8M`==g4 z`1)(4e5HKFRGW9e08@e&egx|0-&I_wD=j4eJ58^f)8GHC_t@)SX6umlSajx*qJjy zj47`5q)7$K70s9-%fJ2zzeYpe@~w}OUGSVR>38_Y7z3V!<*p)MY>+0yH{|~g@jl?H z;sNu!{2FT>7pLnrj~#k{;r+`QeeGt!*MBji#ruoHVxxZ;4NdzNfha50cLD!U@13wx z**8P|03SYgyt$1#^=8f3r42_H29};)s{60s>fd3;x2mQW6IL{jjh<=j=5Wf-|5xvu zrWbE@?X+ZRvze0iB5teVudTQ8*W3Rt-YhbfBxQ7sKe_=1Wm|C%dLD%9E}igl!c~;E z?LC}#M>?>$hi28=pywL-jO1>3y?DL(+CfO0Q^9F*jkx|-c>(dDMH&?xJ=~Fu1nu17 z#;w=zJX5`#$WGVubsxV;kb<(Ce?>;#Djqvu@!a#jW|7Kut1wlChQ9dKVl^urQ+k$u z6gkm;L)|fK{W%yxrj~tFA<^t# z)nBvip~d&xZ;+2_R^FU%G_!B1BKelz`D^lirvLili)ThGSw(+FiE6%oVbJneQRk)k z+RB@I)+8HWbYI%?{6w~7w)$_*q=ZI?O|T z{-%tM6W*ngzff@Rf|hc3tc0Vy(aau<4#Upgb927>i>%Y?A~z@d&b;tm-mkSUKGonG z=7Wu2<`^*Zf^8AJ*lHPI@RJ@m2WaFuNAL7cfW;EOzA0)eN|-tMP790Fxt#GKiNwv)i`V$^6JpPpL*jhI<^K$PPajEb=i*2vYddN){yf7rXlu;7- zKuu>!WH?#qG?kUM9oA-WR1MalqD%Yf^ACG?C-1ItX{R5}OiQ|qQ zg*6EcKJ)KSzfA_UF^4CW7Dc5Y$vAZUQRhjEYQu*5vaOM-W1*h4;zYRiPpdv)4!6y2 zd@E=`>bB0lj!0O2C9C~kO0Uf9H28vy!Ua+@u6{rMSGYWwk1C57QR-l@MB8IrRY7P}YqDNwsCdQ8zh?q|^jkM&ube(q z{XKi7zms7_>7JvKe_ogFiJX};1Grio<5km(hhT>FG~YM5asUt4>hFlU_bARRFIc82 z&7<1q)!Uoi-%2M(Kft)}dNs_9KKOI{k^>H6i+zU%ZawWRD6F`%5G$hPP~+z@&|7Lf z-@{ft%dz|0L$`_p&VO1xkDds9vCzG&w)pbpH+jL1vbyzwW4pfiAAFVKIDPV@($>#u zZ8HNpPb@*ciFo$eH5_xdnx*N9kwGaInKT{d;y2TIO zJaqii-zVxd_C55lQ{UgypJDgJr~HfWgW&>Pm3Jx!sma=h!?!PzpS4wTfk8AW$lDXwaQWCnpH9WJnxbgeQk-DVHQmI89CkF>K z&fPIH4K)c}J}>L^tUp%59L@K4cVy-!=jBHfB}6Y zr+}Psq-!! z`ZxLJgH5UO-4<)vkl$Mc+EU%%qFP`7)y}^iZ8UtS#0VmuPxjC~Pudft`NXUS?r7Ki zzAd>79k!hQuAJ$&s_(&S8TK=l)xMIOiHl1N*H!>(K`}uC-pD*#dU|i@%=YdEr$qZD z^nO>5H)mxg!W}_Z$onSxg!NDEWu}10zF!}lt#`M6@7~6H_L8D4rL&rMFRpZeMiUDM z`X)d9{l2gMxymNWbiw}Swb|1(z7^)?{+7F1rIdLyYJT50gJsiC|C%sjmLlWuDR48% z86VRnuKD$S`5RSpUbpH_r>GT5$Lu_%6{lC7)~-9`>-&JF#s0lL z@1Lce`5(H!9ntdhziVan;Q0!=|C8FKz;0zSz=(C&eE#_=EC?V^1Yi4`Z_T{3@xgnG z4FmOWjRWkp52;_%83{N#kVvl8uFQ@f15z5L+Mq|RCIgYPJ8-+0=j!TU#w)Rm#LsiI z#J{o$7D$2-oH|!E5{FbkX#SdFYJDY-ioCqMTFH$3lbbWBSz<4Xq87Nm3q;a)n(MqOh8tuEWGsf{JRaL3QMTK1bnU7_k&v4C zF^+L{t0-Q?P3ygR@zjCV`<<{lGFwyJ{Co1$=DYpV3(7EGI|>`&(>JS)vhlP|4YBvM z=MY7(Jd0se-_iSgX}jpY?$=PnUyCEVx1JD7bbqq5wev;5+(ewZCcN#Hborvp&DR&m0_R7k-f9vq~v=G>S_%eMVvxTTIKjHhf4n z5P$|dJ#l^O+RuBPLuY&#%9~sR9K07q@4atVJ-sfO^nFD74F!qKI47%kS!|vtNp(rk z&+%j23HmT%hBJz(t`+^?gce25+-9j&XBo!m2OkVEj8#8FCH%Zimx;tln|6Yi^ttlJ zN)W$WtL_)&AKU*iT6FCW1D4wqrj8V~C*cmC9{yN3USVvQDp>F@ef@WQO0Ii{;q4Ur7V~|He>&lM-To2DNITAOWkoLe+df< zuPIeq;cjlQnGY)8PXRHcy1Xj&_tAs9^oVV8r>(CIxBmGQtx{VmYwF-E6;q`R?(&e*b^@)v;F!q48NlU`ry z?axq{RVrtVfZTVPf;Kl)LOLPVRu;ReJcC#DODdmlPu)T1tC1kCdEk&Vev4{vuDIi| zN&VtTB`Z@Iii)-6D|Inx1VdL7mBzBK5paZSH*&arkrU!3KGC_KQFT%7s4@m$UR zXD|&%c8Ok=wPYNnnI-PmOkj%JWG}t)`|O?x)WN~OVV4&-J$)PtJ4lX zr@KhA^((xhcm{5)y!z+-YfLr`+2yQZJe@rJV3yLUvZ9AemW7sA)kcD)qqgmyvb@#B z{e%78NmYJ-(;|;r@9Jp2)m^i1TS1h^wqtsr`4bfjkUOkufj zjjf*-@7aV(O~~yyHGXDhboTqXD-+%s*X(B4NZJ+V6Yd{-ny+>gkwl5p0h#xA@A2Mc zQqwib<-47&=d)yRX)=CIsLQZ<;+Ok*Mp4Zh%~r*J-J$Lqu!PPpO-CPvB?qr=`X~P4 zm2iZH^PhOLv0r?>4PbMj@pZ}iwXav%oFjAqR=U^I^PtqIly>Ux2k+A9NK?uB{N$p)fBl`L z!MdzIBi;2Sot;+}hd%m#UHH_}$CuS?1t`%+s~cf$xlAwTxRmlLxIPDezgfB0rJ@kN zkMgPV*`^vkw+GSQb@BI@!-GGvCtXtiY9}h?+tW~k{OB~hY~h9O0l^QE7(7sy7vMSA zd+XwZpP&M!F6+~n;NS7=V4>D?V}9Dc{?2T__Jb=?oFl`ur?=@AsC6-M>xSR_MkJ%B z{>;VAyPRHa(3~wI$~5FZ@9VDAR}IdlmkigbxXOLsR6&o##GeqO)t^UuC? zcW36D``qWcuXu;;A$#sNYPeG1{%TF{oqD&}@9w4xeWNLlq&*k&EEBHN(j&3CXniC8 zl(_)?y-`rL&_;CvwOyVAJ3lMt`l1)QJ_c?l2xqH-U9^>NZm6`z4w-1@B)H5B-`iE zUd6&0EsJr@>awCs2Q=i-88(D5dRY(K;{)qeT!6HbxE~lm(VMp1u0aL-FxXFSeTu$J1T; zlEDo10jqy7sID3C3v}odCh0ZpnJpt(>rdS0xflDh?3Uh(z3L3QgE}0;Ui@yXUG?)| zvBY)90@%9Fbaq{t4_`v^Vnms*S$h!RG!_r(G6)BLTyoyrAY*Pd>;AA68Yl^@y7JOj ze^Hi#kEl0=vpR#W5S`7s^hW1w=|(H)1(Y*CSra!x!RU++wKtWUJ1`LqUl$(l-qYy2 zPh0RRaHcP-AkM|?q-{Lpr5F`Oxl#MVg@oJAmpL2zF_;zU>SXyh+a^=Q@O8j;sqT;x z)G5&|sgu1KnrHvM>R4qG<7Gwq0{cgsZMT*k$J{q6Y-!6s#BHMv>Ek_IP?2Lxr-@hC z4_e<{IdNl2?)r(a{OD*l`ZeuYeJXeRIj7x@cvf?jg2|wydo@4J9FPo110UBXQ#5 z`_-Ds9p-DX%^T6+^?CA>O!WeVi)v34Q8awg?GmYx?&%7`Xs9%C(m@r7~`9IMWSn;_H!?JZFf|-!f zih<_h{C*J6RB#WzKnz#GR#Q9WD!5V_N#(_G1g#EpZ+3nBj5%?&i+Z5Ov^PL!<8SVa z4x(A0lyh9RMdkT`eiL0jx06Sbx5e{TZ?Quy%K#S)=MG<5;@1vJH>BxH34zVECjBPF z%d|vWa$avhp3i(D!pF~Baa`Vk8sbscln-1xi{B+yZF z6$<7`d;ZzQ5CCI@@&7e7I1TJ0tZdZ5rUesD&Jr_So0Fh3RoZXw8#< z-geT#qOF(rsL063W@j$qbM4)JIM*{>apB(Qfa>xs_OlfBPv&1w=r5c(U0m|or`E2i zU4&iL-($Ub_D;>3{q9PwWa8X?7EE7XU!b;}3_qVlG&hS1?0rNl`P4ot^FtxjR=m1dRE2<0e0RvaVlV z9>^O3h5!jkIP_rU<9T=O&*&*01Cx0BJ!9ND1UTsc&g`Ys^M zhsrxdh7vpCj-g1<}!eme``R9Ht|mgbQD zZb>7YI1M-$Xo2us4C;4OKiC;$2N8GMnWI?&Yo4)D2UXt9GUc4Ij-wNl)5=8C>p1Sz zmpY);RdAInKW!~TWy@pdhm()M%aixr!oLO2g`Ok{dYiCU&CU70C7`@5ER0s$LO!>> z8ofj6UY4}4zY8#zrDn4Dv;^m^ZZ=v;9=ju{L>~7lk66w`X3aU{{k7YUteBwq^!#F? z{Ec5y?(h$OtR-FCHY#@p+gm=^!(vAi1f5*FZ z+XE`lM*o?e6M|ZCl*517asBs?3*wyHTI9O#x+A%DHSXx3gy1TR@I&f6Oh?p{93)lj zmcg9)e6}(Iw96YkQIj>2y$9Qejtf(5;>s@Ht?LmBqsRWu{));>xws{GR!{h>e!D)w zcV}I?45)`l%_u=OPpR;0zQT_h+^ffBVmU1#<)W7n*;+mMZhLDU^}v2EMMx**(FNE< zxh3n+xOQ1@UjI>I>}154>AcV<9-G20A{lXHp7j8 zlFOD!L5jwm%9}00*Y7wi?wE8rh6nz=y*->#>#;OZ|7w5Yw+t|1-+LGHo`#^%D_Y>u z&6^KKa#R}vQlH3gwoFX6;9uhfe@MHIMtp=RyT_bd(0)oug9E~>b{A>RDb`fneC37^pCMhHN$H~u&>g78) zo@TQ{9Et7`dV9SsPt@<35y#(2ENMtz9*VaX*TCq&KoH;jd;7m!&29-|^<@#R1Ih_z z1p)QPWkWMFUkHJ(ndvlkT%(l5#@QRa_T=*>QaF6yjJGnr%a>f170zc*1)aC8H$;A47qv#M? zOQWZ6zkGRY+}w2TTt|6o-l_3j@)>iv~(cS@c5A2-S`Cf>A?q+BL)S_RGiWX4;yCRE;C1YJkAs1Ks^{1KrU zGKl4o!>;!?$_$s?4!3z%x0Z*wmp5@Ju&;V*?8cu)!sVjPPw=xOBgH^Skijj^1z?Fn47aZU(26XvaZPbWHYh+ zDpw%FTHK%#Se*s@$M*FAsy1nvT%XKXoG@~ZocqUrW}F$O#N`*R4KUWjPzo+#okj2> zCeD5ArK9!tXDKhUKQG)23ECPucr+D4%a41MV>kOgl-_!zs7cLes==ET8#h;Wp{=`- zl~ojv%#oCHUY}m({x_IJt{z^bJo-6gtrLGx9;*24k!XLuN_#aAH_s;#y-K^8+ra_? zSO0y&l$aw4E@sQ=(ya!lx$8|scM0G0`Fzw8X4bCRtHY~4PjXAaVx(#;WT{5QE`m9h z_p9VrLn|b)XTLHn==>yTVgwxl;@oq8dIO5*L)gTnkx;9nzU#=kh|huh6lzeP&*CfK zF2GhuY(hC!m?j77(xpH^2=4CL;gf%=nP_e1_@=2)ihkBmv4(v5MkSUJ;;y&t+x za0E8b1LsgOJ#fH1zT=Hc@_~rxWbk~6pf{!%xqoL*jyv)p^(U;QqoOCtLiNmAF;jD; zG3-u^lm6=h$4VPji-Cy`q77b-M*HcoB(jU`pVo1+{q*VWD7M?|aDVCi*~yke7NP{z zU8)C9a4o?c()&wqB#dyP1gsHuRaY4a=l!Wzk&d^Ps#tn!n_ zsLOR!FV-k44{7-PtYXBBh~_u2z^H7>b5GIff!)j&1b!%lDm$uS{Lee9VO#|tL*XgJXakIP% zp&BaXw)XM7WsKP!aM%;MmWeE(k(c1)F3)vG$uEi2%4vCj4x^gW$f& zCQZ%Cx~_Awz~j2(Nkc>9x=RW0D)t{GCkP>~-l~rQ|G87ah5*d^6=e9skq*);YS|*^ zEEm<6H@>-+TI(G9F|o}(O7317JwD_Jz9b?jJZZ~@`=5L1QEpKE#G+*#mK6ZnndW14 zN{QCU@>QZM$ZtE#)pPadYq0|kZ-6(?LPz{6TyU?6lIjPlrh!XLeqLtDy$ zF&mfx^nwnI>(<Pg_%!Uao_dbo2RI`h1timr%7$bu66;2ET((rs~s!h+IZGwI#9?Gn2gX^U_4UG z8Q?(fgL8Y-1E*KN4K@WI-K69D27 z{36rR(9|WM;l+R`Vl5Ib1pML#%Ws0XQkg}3DVGo)4)r*T_Xp9DejOKoK^0sR)a6Qj zv2cm-;$os<-qToHs|#_;*~DKW?|4kNo;OLL)4EgmfS;dP|0ybplut2oUmtm)x7L@3 zm34lU?gEXM7akU)iv2_Sc^b?s)CA8@QJ?0Sv<`)~@<{#ISYsHTENF9k)PwQx+qdWX zbH2Mw2JE&*&Stnh_aH!BbGQ=lSkSG<&Uj zO8hwCpwn7XU6z4^21{NmlRh9}2{BS>A8XJ&G zd-#&FdqLJ$fa>{p;^vII>>j%mW$mi22N(r)VETRK9t*iBg%)2_BIt7(K?C#P7~Ix+ zmGgIZpeslfFJVDNrbo^v*iixp*3+KiGeIZ~`M(yYJ)&MXCRKNP9v9+#YPPiQ{(zeL zS}@%nySn||_#HX-b$XrMixICw!;hg9S_1gv&!vy}0!K*&DLi(M&r;hQ?b%A}xvTaC zegtUE=HFk=x&*NEeV4RsTwmDR-d#j@Uwajwxwn;I5fSueU;hjr=1kBPEXfkMOfPHi zeScC`&n@Xs{RE^oI#~8F|A0BD^$@4y@d4uc(bLQ7r!bjRSwN9$r!`za+u3k?f77$( zaK#bho=|u&G1|Yr{ah0GdS$B?Bz(@i5j+dr?vR)5QxBbeB5GIpomMngrJntIB$%X^ z?`1m0a<*?R012fbK#tIRjqvVf%b-mBfYtD2{*;TM@3r4~k>0vQH)$9ZP1kV5I++=2Ocr_%ki_Q1;|HH#qC#n=PvGT{Y4sh}Y+P}61yD9AqtatML5{1UGnBwvv-mN* zD;iAgObqi$0hg^gFbf06GQ0V-NV*?PBxoc*uw^A#x+^noSw+Vh+%TX)pL6%I`43Fe zop}M157M#s@4N@kMQaRR&j-)<)_Q)F)Z(Rb8aunWndQjwzr-@*w5-ZCRpjUp{z|PY z5SvFtG-)hePOOiLB9!&p*MF4RgFYvMKQy!nI5oq+{Xl{(q|o3_*adKrDEcDj&1R9u z{Fl#wKjA!Wq34N*`)k!a(MOLyfBro4HFOq?pasAR&heubFxR%f>m&{bl*-t{`KHbV zCs|cRMFkL5m9rG4BQ&hCfZXy-S*mUz7I*-fh%K-XlX`oJHXqvW?mrkozIl`cl%H## ze#D$cE71Ulgbx(OgkHJa${hqkJE+@@sr)Fjj5T!xof9*Oc2I0C1hyp<$mNC>dLWm8 zyPoa$DyvH$$lq`jWlb!yl)aNSiKMqQ%4sO%Nr^H94`>p4^mG!yZ_S4O+(c%IH(Wq) zIy|djoiSpm#;g}GoSWv7% zYs`EQ#f!DRlvU-Q^29$QzCK7N#08{ zsO<`>v|R47>)zT#$Bw1?^|iB<&l_F|C^rxE5GfHq_!?>*;(Ab~_CGa0q;hRk(E>4@ zmp5D9p{gGp{$5Ulzy_WA-p;r~TQW$YsoAkh^<>w%N91!T0d;0zoh zTn0uRj1n-m{U)}jh$t=X?(6T!SI^HL|KM1m+yS_5=_A>P4=p)!Ix=mW75nXcMG@at zfT4kqu?2es#<-}c%u{)$vw^%Ta?W-_83#vb(fJ$=Erns#?vFt5kTMmW1i*Z{PuW-H zLPaJ$5(%X?W!)Npt!Hv9>*g?|Xa$(5mw9HhAE@MxGR|awM7o6*Ci5@Xncs+^G`zVF z;**zUmz{^e^JYZSeZU<-QmB_mcPgtPuZ2evq0h-RaJpyX2b*DQCZT0j&H!kTbMh5#t6iUkG##>qUF6V!{%w~W{BW8SOeOVe7jq&= z=gk~)%^<;3Uw^tS@=%Ur?qm3H?`|D7_y6qdhrgcFLQ3-y>r0eJ_wC=sMf9D9t6gne zvw?7gIAf}RHnvL7(_B_~EIMf)m+>``-8fLpnpjS0soel{MoyG$Me(k{D4NdF zAp3EY7|Et1sJzi76LF0_pS)lhmRjO+r|6ZY*I=emk}PXj zUe3u(9`#f0o(8$rSbp>PoU&*{i~qts(1D1Sdn1qkI3=_s;r&5xiLtDr;I&R<2*$9e z#(c~Il)V7R;UWo8>C@!L?P83G9`0!H6ONr=(9Vf+g4rntfubbUIf_@=oE-6GlB$;Y z(v6ezuA0-#zgP9oJCF&!&Q0HrSP>;kkUbrcg?|2BH{d*h46eamN#vCGQ?jmX={&=G zwKae*j~h|;>8$Dh`8bF|)6!nTTZ+PZJ~yqD)MVkEc#u>rBtQk+aSEo@8$D`L>koV{ z$8(RG=H2TLX{8bM8H^$EOhGD(U$Hmc%P4B)wiP)1s?Iw(Knt?e(CENSS|?#Y%esmwo`lC8Op@dgQE84t5U2D{B>Ay0DPDJ6rA-}`9aD?H_x~&( z{heR2xQ!}4k-X>kvSNjUO>mM6xjk5b_b8$r_K;G_%#3nQz@5JzJ0QW2eP258IHADV zoK%rH2w6hQHIB-y`)2lF_ zgQ&KuuIS-|7tZNk`@Q+A_LThDk~?|KywIztvB!|^z0Gep{4 zD_zao%r2~OU4QoDhpbwEn)EZ$d9;58J5QPsl9)0_>1B)BRR5A@VYAY$w|5Gw%2ZdEj zz_nT1J0%*qY>1aRoQepkqRUQywE*x4oR$W4B~-E$np6DTb0jHUn~>_rd&`+vlU#}X9u7=275y=pd*-f>nra3|UQq)~G5qQlj+4`sM+ zjF_|Uu5tot05UAjZ?p~ta3sl)kX%#oserI{qxdWk zhQVrtIS)>qevb&{YmOjbCw(T`Y1IwVKHd7vfiMv~*URZ0h#Dv6`5A zR+fAAxCvk2zFnW)CbZZC9B*Zpc=gQmDbw1A}a>Z`N z&!0an&RV4Q&OE;f@-9mCOkIlmg^8G^GNd|-7iK0Oy~YRqp6tyYDG4l1U|JBbDu zZ0P8A?ye^^hmZUlj=HlRLc*)b+*RU!NG}#NKoBKRb->-T?}c7McL=Wtb;)ZQ7q76f zjqAP^78SLBAcL`G+^3#r$Z5KjQ8@5CnpV#5y@_vh)`zAO5Jtb2h9ES_Q%4+`(tEM_ z-D9xOXXFQEvaigQo8849G-DwJe(%d6y-U7ut(mcjs_~7 zRLs4vViod-!!bB>P=f2xB!SC&k?F@>(hA0u`nTD|cC#{y+I!%aen+D$msH2>ODl*h zlvjpD2q?Oe9p0d=v_bGp5;iIY()PT3ybdjkrTb!2$6GKeLzlHO-T+AcIiR6I!a_dp zYK~z{(u3nu0+Yanu8sGn&%P=VHf!my?(-}KOIlj5iJsTy_k5CqI~<)2~H+WF1oie z31WgJgmS(b7Dj%or%rfh!XCK;;EnZbJj3N0>BN#BW zeGZOO6|a^Nlo#eR>0O560!I5>U#~MDxj>ami%n;*{}Kjvqr<0^A00{<&yE|!i$Ab9 zPYu~oIV~fnZNJv_N1C;_K8~G~dhYpd+f<3VE7ySHo=I@Wo_)k_{D5NxqjmOUVb`67 zf;O1Vo0|oYb1Ud*%3T?H<5*og*(k~FCnkY5fn^`V9C%dJl*!^T@eE1#_32grQFMyr*&~~u&BrDa7<3UJm1MEvQd** zZN!1Rx>eH2zgd^+H3tKctnq`n?i9823(J#LaiI3qlRMhWpRcYLHM}5B5wH)ogE5(@ zb(@F4z%@R>FutP!)Fbn6ifNhO-;sjR9~Q}|6+UtfQ^K#HmW3YX{{5Phxy znO#1Kn9~w`Y^R^cBCAaZvn%}*W`NJn^1Yt;1l6s*C7eM)U1|mvc9DWqVX7%bf}yrwJec!HElVK{5Ha$EIHEUIGUAk93K})N(o(Ot#&ABp{24$#B|*@LR$$yQ=vu`*KAU4 zGg6(918VpP_HQX9XP0|3g2cXo3{2!(FGih*a_*g~{tv@d`cA+au>VRL~(4s&u^0GT$a&0&nGA?$Ml1gsIIbydUw)vG!2(ozjrk zB|46WE)*mv4`TX1ri~6!L^3K%$Qyq(f2o<5R0~5wKC@enfIBIKYK=h$!!#(TM)dC_ z;Ds10_-@Hlo_WhlY~1KV5Q)#eDJJ>w_mS#NK=5VeGb>uhaPqT2*^{YhVZkCP-+K?V z)z^)37?y37trbZy`eT^m53;_4XCkB)NFN~;x`-6Yg~foFy6hA6iUAmkLjMv?e&pm! zyl<-~BqY=o_#$xsMp94wcbTp*g;B6 z3R=iM>@BGd=Vw7Z#-PVf&5X5(UC421kd@+zxoq`Teu8G;fwc-Q{zvyE|xto*vQMm*qM*hQ!&f^wJ9Glk)9 z_4P&=g=zabbj^dGS$G97X}9@K8^0Vi#a3H>Ax|N+a68F#Hd8(Y+)Z6WO_BDbYXTGv zTBSq<$8|UB(2TL@jIAPoElD2V7)wT;vA}nn;>?sYNwLi^5CMD@TEvsTr zHc9)iWE7;xOx`ykuKqFWvqMB`gi*|Na>oWLwf~B!Zu?FRkAbRjOm-78Y#Xi=_lns| zmEJdv0Y<4+DUb3v+HvO?Uu8&5&k^NU)CFQ5!={mPcE@NWFVC{{K=-LnsUTBh0u-LagA{>Uec`G5DV`vn5=c0+R=*4!SP9k z&fvw>At$*YN?itmQeh*WE2Tkn!#tnSCq|2L!hXsxv{*wwCO-epU=Z99P8*fhG5Ne( z1LlgqSKu|Sj(3h5Q$-?zr#;sA85hWQk&G%iE%um+A8v#At_qG={lRxuZ%QVSZNmkS z8qK^VDt4sVnM%R7yE$nDkU(KX?7^xyWO0E<$k_JySRuP zn^S73MO#70Rdqqz&ypeUG}&7(9^2vY0SVsfoqWJN-12y?Bq-kiz#pBaKKi?$r(w-Db!w_p3*W_Kd1p2JR4XCaX-p5!%}c3G#{1W8%rYLzVfiO4miN zbum&8YV7Z3lDsV_t30y5|D~ec=uDnS9h^?T2c-!O)Lj`jq2a(%S9h zV_Em2g$I8dv{w{r)S|D(Xzyf;qfLc66jk~1H%Othcr5>PbLK+&J8lM^<_%&&7#c1e z*)Elu!Yp>8slh&E-hj@nt!JGS9X?$=m=)jpgxP;u}D}-=qR>5V+zf>pUI7qW6IoWwk%=FVx|%l!q8I8fgDg=r8AU1 z=qs0`Xy|QWqcuE+gUr=?(H;kt=jGRBh%l6y-LnyMis#(>wzCF2GW@oNn4gf4RKoy~ zn6U4eI1$G7n{;zTBBld~`l$}fe^mOG=0@R{$p%mJwOGpc!cK&Gn`|W~N>+ z?h7-*Y%Q@&HrO$>V549^ntJgbLYX+OH>MeE7{xqaN*Q!(_lT$AN;%GTJ@i%x&3Y3r zldkjyEf}fH&=;X3#MkF1bMH|pC}iV7dlvy7=MwAT@Sp% z{z#7oK|7u6kPqcLxOdw|D`!__k0RN!B(NOG-1mhA@DZ1k;CMYxjHP^btNpw?v#|et zglpOSOFwR2#oQ;Xmfkr}iuL-{s}?j_HA{@7u`>{i-y?Qs=Z6|0ul{u=QlCQ4aU698 zqE4wN`JG@&(Hl0~_nhEM-3>E9=Of^Cc+@@QL;f3Apvg!ue>9!T^f_saBUb2jpbCEj@8-Zl;FDkg2v00^3)$)I>hxC1d5bgv9qcX>SJ<+xdC#EU_Ll?GR7ev%Kpypsk7_V8W@tKF^~Oo(XOS(+zEZOup>bJ43~WCp^@gU&LbeJv|Yu#d@32 z>h5Wg!Xs!`kn{}OlE$=L%x?Av4@_08zC=b;ShtxGGqduPlzB1YK=EVal-Ydb9T-B& zFX@b#t9a?SGeGiWU|{fU8qufV+fG`*2zrU)d6iQ6HdV7ZIqE*yi6pr35^dc1;HkS1 z(pXOUt?Trhu=>geE1XXr%6gzvrp{8pUjqzT^^+I_<1L)6!qT-7`_UUJF$UocY+75Y z_X{x;@G!9AFi99i=;=_lMwK26`-71~YQFa{CvHET4Z_}-<}H3^h`bfi(vne27+Ka} zuYey2NlZq0N1{%_R$Ul^TWzB}d|!X&!B%P8($T7}`pTu!&6cENyu}l{hXF1tT0Ceb zCs!TM@J5nHS?)P6%s3wW&M;533W@U+p@wP^#>n?iyaJ?89T{-wbvUs}hPp~cs} zliIN`A2J{lu72GtrYAbRqgT8)&HXCm|KHD<@a97JkQo_JX*#$ywN&qsYbvH!(o`rD zFiro8==I;$qE80g$L4Uf%&Xa1z%4f%z3=>08vrcx7QuM5*+=fnF5%!j_9~a+!&cSA zt7{f}y_`=fY;;3q`jhF@e*oG-kOhwoh(v~*aDQA0&Y-5B@VMOB2_Nz8yw{*xjh)>Fpm0;YLOOGD+WZ~$B5G8Jb|3h*&5goz*uq%5sn zVUpmg$zhGaPP>S!te(MWW}IyQKvrI|0)~944GWMW^m)J_4=v#Z!;srwt%3n)qf2Yk zLg559i(3F-=*uKoExj&F|Kj3#tHHu#_J3BGnjitf9(sZ4VS%4wMG0(({|S!wvEO)| znYH`cs*NspKq~HcPj3;5Y%c3j3rAR~L^|1orChYyDDbaZqEqZOHRHa5vgU<7R*^6!jPEEfN&E)2LzBnZTzp z%m#>)}G z!PGydFpWM2QI_)c;eLa8(_%^xKkn@*==Sr-TZ6O{98wu2Q2|WE%<6s7t5RZ*9z{U? zG~3Ex2h{=0z#X(NQ0H~eugS+VnnfgL`wk8cf?wuTXQF`DK<0~6n8}R6(DDS_kv$;9 zb)vfPso2fFW6ss#fh@XGez7_U=fLiZFPs|9}n zg0K`xNBmFFj;t1cYZR4Ok0;t`xR`ek9VN7v%YwxM>aVQ1cA@|xibjWmKvpBHadK4 z&PK_+T5B>ifn>QJCMqX+4Dhk&8*4Lf2#>X&U#F3!oC%6P-J$hD8r{S~=Y?YLKDCJ5 zvlzTLcu#AD>SN4W1}XRaQ3tTo8Fa-;pG`}|?y$>4bq|_LBrKYHXzA^-x?=z$5D^i* z2Hb?>(vzVVeD<4=B_N_H&snAzMEWt(EZTA?TO)jOKx)cpR^vEl3#~9$1qR5q5(@n| zXxz-NVCj9E7%D$AaO#lsIDB_|>1z2S>dV+|N343gE9n=mV(Fg_$x~JGojN8u{0s`DhF2E8-8kR$6C%r1-X^f9v9CEfyPeH(6x!Fq9{6>1ZirEP{ zzZ+DOGv6X*744Z9B`op6I-hwL8!j3+Q~irN_VUueg3JEd7=6`hzU12BSNom-S>~xj zO?o=Isg^IN{@ySKmK%=2rfq=a#EqmBR`dknvnx2JKaHp%CzRFd=Jg`5OfEC$|Cx zMcljbQhArB|NUiXXA)t(@iM|J#!MsIP`3w^`Yx98g!iT*1~$Pi{DJ#HsU`dM>$>9&-bVfDY^U$P>ElfM z1PvhF(K5hKKw{h>`7c_W>>PANI>?JxKJfP{!vsJVBR%x`kzYjs23azIj>C!MY zKoQJ)LQOV=t!k_c-Sn+bZ{MJf6Is-X?Hg`ne0VJgFen&{oizl{1k>NuW-msZA3uwF z=@-hTtQ>Vl9_NiIknU8@l>3;1J!VZ}ztol71l=oTsgE6K>0{})coH336wq}JKy;F=4NRWpNXG?RK>*b`U?k4i^DT(nFXq0zoD%^7dG|p(V zMF;d>f`@A@u3Y*(I|4dD1kO7Ud;o}0Uml|N1j>fuRQzFL46<`k`}!h6jlH!l;dNUI zWZT19T82EPiDbRve;Yp-SjC!8_bO~Z*WGbb!HOLw8$1I^=IP;`?`mh%+_OYS7>l&k=+Yy{wb7JeMVm|nuX za|qNr@F?JFm{(;#_Z;TFl2D_L&K={ZBun5?X< zXbDiz9kW--{E$}`K@(YZ2nu;?VCCQvcWQzB4fE=aWRf&A;Qa4x*!VXed+*Jk1NX{xxnv=Gy`NMkmj@Ea z#R9Q5f+pV0kyz3Yl%i=`)H-!Hm{iki6TeMP_KrTrDTiLU50%w3;T$5O&|%t*Kd(Kt zIraw_u{@SiqKXnQT7EgcqDH%>YQvP{(%}A5db|g(;HGPuwE4EghJuS>j6BEKh_!V64(B+u7{`n56ODKD z^k@J)eN|#o?>3G>Fq+O5$IqubSa{&Dn10OiYb)R|QxiyFI&7VY*Zi%s8L;np9_g+B zd=o+&EpTRfGg&_ha?p#_r*FM{t`S%q1 z^%T9&lTr_cer&k+7s38}#Z!X>?>`dk6$?~>gNX_2NmD$@!Z7wPDOgi#tV!K>IH z85!WEgfEWa`0>KmmewSK$1+KJ%~2_0Cr{c*DJUqYs1h|<;XQA_8Qj;8mb??7QHnzf zrz;iu1Bu4%kB`Zol4+tdKtU6nPkp)0H(BNNb)kceA10rw(%^0`7<5$WDKCV1?Mm8? zt>Qn`t6;+j=FXu%=fui-mn#3OzUJArx?5`5VXnf8)Xbd?O%x0s4hc z!Sjjq!;ADj1$qHbKtd2#fC*Y;-_Kwk7i2!40y)%YV0cF7M25`|4Xc=_ zsJYuV3w^hI>9>3Op?KO|`mqUVgcE7uJjh$Qfq)RK4T4)Dj6q)L;YUy|2Y58krnC!e z;!eKZII%fZ+fQhlEigbz40uTi;^&ZJrAt693GmCAk+630$B*T>fYF!(sKU#!iMHpO z`Oy|FJ9blFCf<4Z{e&_?*#r36xMVDGwiHQ*|JiZ`I7}EP8QyxjsJY3Kk4N2SFGl{^ zZ-SV&Zm*mZx^WzW+-jwJQ5b5Ej`xpsydm%3T^`znRok*sS#LyZiUNeUW6c=q^->x| z$;X!aP{IIdZWh>5Mcj1B$AM??DUZif1pQs<59OYBQAsiBfPN6 zEd@JCsM@4Ek6#EkxQ8~N0eag!0oRQ8R^EJEe>aDXiBs`td?wZ!E)lW1LRT4W8A3vW zHw@_^8nw2H6U!+EIdQe4W!_nb(Vsxn`Hmj_Kl3BL1rmmlV5lT9A!~O7`xaVx6BKtu z@@@r#@L&+YT^AXjYIOC3qHDxFtE`IXu?K8ws}9gO0aOlAIKPxsPTQ`X1EA{i>V$H61{@@zN1K4hN&Na< zp*#0D@`_j{-M-fsG|G?Q`Fz^B<3lG!24g@=e(a(;@DdEhgBX`fMURQK|74C5CUQ}N zA-#e@tZbfJr)=vC|BkJ1-nt8ip%o;Fgd~976sKYn)`mJ)?wFBWDT`5ZPc!)16oZ8&nYEIC^2&fGxHx0({sn#%xh_;BMvJcZnS z#l`#A?wQ&Agbi3zN@LkW>c~U1)yh;aG}WfROi0DTEqU_ zRlF0<)7#i?Qm5Tr_cEb{&PAaL=cTs|QKnA$N{sU+4Wr8Wa&LBRtao0AjvxE2XL&)Y zJztCd(A*_~7JYCcF>z_l-ltswRM@rUr-*dL45OHGTqd(0X<~c55jEg-vh?#CEQ}#^ zZDx8PgO`cBpImxzL@Bs`-%fd5CN|~Tt!Jj$fNU8`C!s-1$ZGWuRHJe9i4x{t=iv>v z%w{Mv(OMQ@`=ch#R7mr?xS`ZS>{U9_yMll?&1vnxXbgRpW!hB{fVCq| z@??(tXnn84fIrj6Qd$*QCG+xewm*eZoiWXO>UCnP{CDiKqe$;mYv& z_XL5(!)(@@9&l-YW4f0{$qpwI1%hI)`OKor(Qpp&xktXZB*lirHplQX0D2lQ9riUQ z_V%S#c~SWhLoP>*b^r&0mqJlgOZpj+mZ%%ZU}xi)1AW5cu)`;ipMw<%Sg0sBhbOzr zRZu@8Uks{6{j(as4oD#4p~qflCR##Re&;#C`)HElSR5~!5s^jOb+ITtQ0AaCeAblA zAMZ~5m|DGudu*bC(0VrrRJ8g$fEJ=vYt&#u5AG_h8k20o1G=%>B+4$ZGISXb%W-L4 zzC)OfcVN40Ifz1d7nEGdzW)jusN>b18G$}+503m}8X(@%Hj1gH5MaY+`tg5cc z86vU184yf%0=>+<=K+?lGzg3mFbL_DX$0a(pJneRG%krS99n~6_I{iAO^`sYogg0R z?I>UO@qs^wKU6ktRD6^dHpTD>&^gePbL5b!{an+9b9=k%N-hZysFdmnsDP4Rq)(_- zy%QLSS|l5De0&qm0dE4Lu12vE0>#N^D?EpQEr@xKwuC{QuY>^?WwX6RrW#4MPYdnl zKt5~U-mEu<i=Z|2j#?Arx zMy{FI4m?hG!DL9f{cxbpt}`!f1p7jc^y6!D*(phmXY#hDJ{ z>4lATBP%#CKi+;i6GZs>;`YiQ>rAI``^(CvtqbTQDg~N!r-5)4Ky@=4`h6xiQXab_ zD=*KAi9BNSJRfkjl|cdBg`9(i!(E_y1=#gxPxoec#vw6&C2U{rdvDHm#)jT@A8r)E zawlG^NIipaRO}WB^@Q$oln+fLvbaArUROS7p>Awv@q4Ej#xkGzsw=Q*{1olD52`glrhN{h+_xUV4um=2PH~G%!$s zY!%noULa6p?$rcRk6E5(rNYITDfyr?r(InkozQmtVVKQp`%|Q3N2%KvP5x;uVjXW# zPe;GT!P=NN#Q5!2hSd-|ZS0){7}9r?k>_-w4A-nPYHuN;f3@})-5RQp@!C(Jys|0w z-Q8;bF8p0`Ji17~Gl4gQpWV~``^%K_d0KQ8!}nt4H5F+_B<3=`YqZTFDF$c3BZZ4ff1!jyt~K+p4d&Win(hI04?c8D~}wTEN(>K zl=E_BK}42nnF^Tam z0$eDc(*!TxLY4H|O>{X_j_2k&F|ALG6e|9#1<`jbb6oB*#?D z_2`k97*n2dGF=NQ%b~Q&psWdTHVm1A-txa=F%xjda3^c-g&9FhLiN#D_oIL{^nbHMBYmWMIGow9lD1?FZvP*moNFk{=e& z`j0yWz{3`7yg?}6a&u7#w3K=z??eaa9$Vb3{E~Ub;~R5%8#qQRn{*DLv(B=I)!6we zj!3N+#_chNc=w6?zSV)?BLvxJMj=2P{Cz3EE_#@@;YhyIe?O&~zjO8@s%3hJ}7;)@XNcNt`PG&~- z_Pw5Z)vNdW{rTN~|G1TL&UrrObzS#yB>|^S>#tL@2qdnlYOy4H5If0|0bxo6%;|zJynl{pwD~~qoFyI0 z*DoT3FigJ(>#f8=#gJa5_wov`i}pZ|_BQPSOqBYU;I+2WC4eoX}KSCJ@g6C_c8nDYri

      $KnbliW6*!;2M$LP&kCQLoYB}kTx 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 z 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 jiB)dE! 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�RH0{(f+txnt$eTRQrO<3S`ZdM>`z(unsjJ@!B6 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

      hks>V! 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 t7O^NgM1}V;&DR-~K+Q^M#saExowk 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

      P&UDvJE< zf0u0nJwUL+lah}`nFsc4A$Al%|4gIy@khwPx#f-@M@S<(4jm)>1qehBvDXx2w<`xN zR3b2%9v7ok8oke;3P6=+SkJBL!x{LE9h#9Zdk-c-2H_ywQ`LymL-i9hDvpRNPWDAf z(Gi!1GR{EOdguFtKbXRi=mq6tVP#o3@-?4ku^7^!xb8`+GIlc;cn-ZO#D}|zZ>8dJ zz1{DA5fNZl1#uiDtj#<1Azuxn16^EfQMM>+Sqq{1<0|?&Nd{aTio33W-E5<2E%{y^ z&--lH{AUpPj{n%dJO03={fEc?JV<*U+E2B#_uu-`z-fJ2VtctR(6_YVNN)Yt_(<=d znO8@XFInmRtR>2dXsdbaa%|uXGCB(GyXB!rbg$*hm?04%9C_!SQIVYL%aSF>WWovJ zhiZ=LBeOLut@PMwYUkap&_ky^s%iom5a-9kHDV?AM_fEsmXSUC%RN*rcU1R|Oiz(A zPTd^6Sta6@Q~kCTtNrH}>HmN7izX$zpMCrmV6^uW2o)llO>a&pZS*h(IUq# zN|Ad&FUhp587-+A9HH;ktz$rZ~H(V2OPEdDxZA}zu+f)1VADS;R`?JVUVGuXr` z03l)8vA}1E#n*C#Ld~gPx)phdeg%w+iqlTS?wRkAmC8~cvtvu-)L8WIJyEFnmgrRAtL z`jLafY09LeQgN1xKUe~&*)0~o)|X19Q|RWU$86NrdKX8gCGHMN#Vq8ik*Gu}*4nDx zX+CGL`YmL0k+wv?p>rt-LxR`U_z~V4NVcHGlcQ4Au$OkY0JLaod?{R0G~rt-B<0QH zT_BElY`qN=`9mD>6rA7#$?hFR0^}ayZgh))Sk3Ad0lz^p^U11(u!LyUTt@**qRF1| z;*Pg$B=nQFk^LCf1a=Jh{JA?cjHr8<4&euP7GJ?z)$j>>hxix3_noqm*gn67*1*_IGc)ZJ zaGJPhuhZ@}H6vh&FK|>+U+WdaLgyo5#m$G##8jw?1dC&#tRPPh1UZrZ*i-|5T6t#B z07t=Y|2lo9arTDu&`JCgWhL>VxNz18zMIB=c8%7Z1LBfX$ASvtxC(e4IUO!6qAZ@C zcQbdl-}JSPYtv#`zgk~u)w(c$rijgulH1Taqa~gm`u>GTWZmx?V!`3RzbyNQr#l&= z{js*86n7!vivYDGK(y3}gV3ihx1WOXF8g&u_dseqx@#+Bd^+(K^NtOydD+=euvC#E zR6AOcS{`eOU$wSlN)8&p!oVp6g>x5HRM|Y_%D0)mdKKQ+|^{<3vP_2)LxCz(AMF0LUNv@W^j&t z?lo_;`3{t6D7HafTEc5{_T;rVOV^OMXAF>!l>N~sVZY7lJ4v-(RV-ntXL0fZ33p`q z!?ILIv6)*8bi{V0+fm9RLC}La14A{7*gJTS*@2~AOqXppB-7BL5-xVc=p(ufeEdRvkLWqc1xZ)-h0w%pH0cFQPg^ zlA|X9UQhgfR7Q2?f8YH`Q<)s`x`fvCWxH5x2)H#O~zPeD-Z+ z!bcR*;*y$9^%7p{S7wdIe7YsC1V>zi;9IX6U{=5q%j!go_Oc6i9C=r-Hm^3zC8XrQ zs?v;w0q0Yz57bRcEspN8JE{phfQmB%2B_2`x*n?I7MESyoFOA#Y9S)odT64&-1IXf zz$WGr#_GjBTB-EB^#M?(ntA>PMbSfT$?*0UGjCn3wZ4zvf_iDK z%HIsC+-8qn7|h4i9L>CxFf?l*l}1@23&?ktfflQXw!4u;SlL?ZbC4q(5?+u=5Dop5 zoD?LHllB!NTF)d|cRWO^$c$rfc9kj>4u`h{SP6JtBK{=jZR&YxrOGFD#HLo_?X!5s ztRH=BasF||gIH784p4kfj-s2xnu}4FtOu%C&hKA9n7gCMC|*4;W|OevFzCcbOV!AO zIDlo}+l_O2^3X4?17y~QU3xKBj5gACjI)uYvuE|iH0cGsC$MNN9n^>(nW$_?c0+cr z^M@Kc20zARls+WB`ys}>_YaK}>=RW_x5Sc$8##!z-p+>HUh&auThn^XV^gWjQ+b|- zt@q2{9oIgs#`8Sh8S&|&r(urT5c{=u#MZRcl9q>}dC&*H=eqtnrppCa_a><9G%Z>TcjUu6m8ij(sRZ!mV^AXp1eT#bec{;_p^phw;`lqKt zsgM=-NBKj0iI$d=YyyUQ2N{JZ7OiTgj|Xg=X0U$QadqfGl++$$t*Lwe8Bi^;?N&rx z!>NeNjq&DrNzm9XN!>XMs#`2Yd3!pH)b4U3=YvX(wb$G*73-AWZHC6-egPQS;b_oR zXJ{`_Ry4_w7jjK^YY!A#-jcAnaI?PgYRu~o0{0;XCl-y61#o!&@p85ImJf{5#~8g? zlO)~+3tmtJv&ZeE52WS!%4CAiP7MCG@!r_ys-=(n%l<6}Gl|367$H%jUVRSo6oc8H zt_8)g7OL%fedyv}>5>3HT_WTzKm0LW(!2w##Exd%Vx!9lxDshW7<=+){=}~7nEkcG zOLI%5HgRdw)goSPsyW{fzuM3Ey=-?QdQ}odp};*ousNq&MT3{NJ#fvIbwFNLPB+l>`{<3w@k*22nXe^Wyfa85tVG+GLqI4;n)`UFgJZl!2>FO`8s zaMyo!9sgcr5a%~@PuyE7F#7vk{4C~8CCNsU{k3W1>N|p_tcb=3hw=Yu@L`1ZpYY-E ze+?h1c`BQycjf@MMn*_D4IWRLd~snN(s0m*?;o2-OdDW7S zGFi?Nb3Ffpa-5JpfWCF%Ds6SBi9>9)_=mlptXfuvzn}KM>{JNL8*keo3s0G?^IaD* z&1=~IHK_GrZ-e)J)o;9-X5If%VC}z`h`Nz3i)(H;6c&+6FRJf&=j2nk&sXPgQSDQa z4cAt!(VhuaUkl5;FAi$e!lpq_#ABIYv8LN80iPTEA{RpXynUbhI$aUdb#k|G9K7DD zLoF7zWj#rb{2VY0EiT7Ps5a3Qb#bv*+l6&!{okM3dVi9`4VbF7YSIX`!wI#WeB7ht zf9%k6f2ey*^ZDA(=C7i})nM^lxjU_by6W6^lk`K46X#D^yAQS*(c%QfLb>~xEDCP# zPg^hl!aEg?;yn5!$U$d_9*!A^3je@()m;l9zuDe@7xMe>y=MQn$wT?G&63?OZhi~b zTlM)V^X+q?(7&h5@|Sl5b~4nW%H@g#A@f`JHvAJUa)(#n(3#ykftEcu`c>6I}m_fpg(fAJyJcGUP`qZydnmyFZ8c{ zY9H@q4;;~y3(CwXxovDJ&~|%OYZF3S#v{s}3zn9-2Sh1;YaR5<8WS!v%c;b0c|Dpq z@lsdF`$-(FN4MQPZbG^Sh`w(PTrtR9jNo!*d5m^`#u(744VH>;5wUV_YFTb)wOl+E zt=a7$eGCqIkPdo)4`fNNMo-uBCQl_^Yjcy?$aR$Wm(E#2p$Ir@NozSHGekOTz~x4c z>rM=5a<}y78w7Y2t+>Qi!c`47}kHvFTRgW?X#y3 z|K$bn`?gCdyD)aP!)u$>yvmm4C6v-9em8~r?#kD}cb}4tDQ}z(W~LSe6%zo31owS! zfN%#mRyf%$i-HYOs9kv$`c$0L$VgJ^(y=r|h_|yq6bZ^-p&WB-?v82Alw_smrD&dE zdH{Gd;b?(|`3~K8nb*@u$k^!Js+F^?{yEe~s=cCfRqK~D6@?bql}GDyKqqPqphPE@>}VUT_M+6JBj#(90UXk#-SJWb=dj-mX3{!x^z<=7j#9ju zi!dLHqK=k0GqS42H^gjqpi3xRA}1p?LTnJSHB24<^$~T>xs<%Xd@;T9ES!*yGv`#8 z-7rA9f+!Y)0JIhva9+1oc*E_-w_{iXkcH{cuay{qrI5*uz-;&L^Fri3{vDY;%~1d0 zjyyZ0qUxyv>k%M>+h7~tSXI*S5T9<~C_Uj9QL2qL{U6R){Y%zKVmt6b^$xvT7doSS zkF_w%P`*62aB0+Y1yj_pAWnIdTNw4!RCeR%{|H~Tly$?vTBz_RfD>g*N4M5fOOr7p zv6KQF4~3%P7MwP~@`9Lf{HrEgupJ9!0-Ts@V8>(0Sm$QKd`ud?-jDVJ9u!f6aO3f6{edloJ*2{_kd zkdl3E+0CS5cWzuNcL2kX=qUb`Y)%5?6236GBvAOjCLp?s_Az*1&8X)R~@EQtc+ zF=usG-^sPc>VAIuo1aIL0hY@>Y?#zWLdTX^9H{0knMjsCw8`SN!{W^yFu|6?pn59nkv9hM1_R@)}Nb`oC3es4solPySTDCD`E+)VJ4w#-ci% zHk-X+sUml#!gL2L9eu$z2k8a$aJM~`MLGxTf9

      YQ@>TdG3{c~hYm;ujFsC{OI}?F z@+Eg~pJes~OmCTCO?`|I5`=L+n6$paGH=%|x{B87?I31Ae2*E<^J9j< z>!HR!#0=(dnK#zcr8{l6a^WemT;nX?ttBDxILnGJJ~8xBZU1W#OCz zWM=b|GVHqWT8ncj!LGZboVXC*<^8bg+0B2W&}i7yh^@?m!wSP+G*Db8Z$wb8Qr^?R zmm0l&$jYe#?!wKt^>^FM4&Hp<7l{~o7;A#UhlUSogwSq~!#VCQQ2&A(qK4UGX8BhW z|{>z_@a^H_4Ciy&aRHt`L;?FVY9+{7ZkGgHn9e=k)loW z=cZ1AsDd%v4iynOX8E*-?#Np+nc6|g5WXD?9yeVu@Vx$9v!gOr=P0g5PhUy=#*?f^ zT=os;bGPnY<$UaP-wl5l)*7SvqPGCJw$+T?r1?poVy&<9;3?efg{fp5+cDrOBp5k% zjb9JT&{vzGzIlb}7i6ZrEja#~y;^mJ`%W%So%{tnZ&MHC;vBSE$AYYv|=Mf@fO6uZi2fBJUJ^q&Crsek^vquiY(?bM@l0!Y5M zOwpV_i+g!2eD-Xd`o%0brx*_B%w7^OOYbSrnVENn-UMVDF>S!Ey1dD4UM)79+)v6w zDp9W@0KwPFC-|J9>~9F)%eVCdH!uj$tj9t&_%s~QEqq@a#QRd07R%p={)HGfX(w}I z&#O%{$8W7iU>Uv7)$vI-u6h)zYb;) z)nLM?+4IApG(rn-VTd1laB`tdxPJ?+AG5Mnw!CtG3M}*eE5B(Z>0Wj!aGYu@`E`=_ zhl;;jV{_=hmCBnUrE}*ybyYnt=ae+89`%+B&R;fB4!IHdk%)>-@6?Q33SWQS(cbF1 zvhRbHyEv{{YIG*^7E5I5KF_8(@-l&OjrRP0P>$qJ zYR)}7`GV?CG52KIAEWGXoUevKUORt#@hc%X4P*QZDh1oC&;Yz# zUZ)npso5gbtIlDuuHpu`p-&`p+z^dTCi=hiZ>GQfMp{A!vDoku%?y4;u0j7BmZ;Le z?>04%@XmkddhC9Ve?y$%mG0gXjCiQ|=vu=2Qpu75NR;N&ffKPwD?0jcUp-XbCi#(z zx0kO_9U<_U0!3uWPdJJ~u6u{Ub+^W1{Bxof=^bGB zJ6mPuT>=Z&fhocEqJyO@g?~tP!ylTcRC2nIaM4(Ho5Hk}YF5@EHn%|6D8Llkb^?uO@V8 z0t4+^jH#&n{Gy*^*&ox9SI6izDUB=8D=1svU~ixqQn)4Fz^;70bKJRMi@T*Iq%gsuULYAZUXa1 zgAz4CKh;5pX;Bezu_SpgG$y~)*HwTq7pHu`pJ;8tzxr-^{J{VD?C^$!unZA;#`Nzi@ zqy3+G$25ORCueV=GO6iBWH@#w7RP?|(?N%o0q%yC3M#tnkf(}*)SIiE{`iSDsb0S; zow65AA2f+`uY3-67F@9o*>3-V7~Tn}hG7-9y>{~hLS=GRc{8CjF^rC`$Q>4csQ z%~cdhcQUn!fPT|ItyuAD_#iY@X5;lzjTM8AMM;~%5%gP3$K-aSrR(}DymKpxN)%TXp8}~v<-VUY3F6^5C0;!GGiH%SF{x(53?2{=} z;^Y->xMz(5N^i}I$HzKx&0z-5udp4jTavHwRIif7-zVv`S4l)cCC%mVpIY7etr!0b z>gjv4yNRNZ>7FQk^1p2CR&|!} zuwBzpZk%Rh;HHO~=#+D?_BkU3e9<{RJV**&Q_TvWcb5<<>Fy2MU_QovM>fyT<~2Nf z+6@ZZeQ^SeBg7L~;aJ$?cSb>{j-<}fU+r%?7}7Cad)>^FWp=$U&vLPyVcbzKg3;@l z8a%JOiMmYxAf;e6=sM!(WIf`FxBEbV$u()DfzeueO~Sh}>Gea#TRB7h7Jg!{g5vV- zfp)pmAf}BoV~_+sSG~HW3K5D@|j7 zi~WB0h84WO?c!X_M)XVoChpNBO5e~#rCor0KUyU6*bG~4MY1QbFimps$ZyiCY<_h3 zvu46dqbnE?dPJLc8N=jo(;LHx*zH9nA}HThdb@BhaLc?EIHw2~#|d-l7}3)xy|TMD zyl(14Ebf9Un2Rk+>%ZhEIk~N#T6&W#Hh)h5w(%Y!gBTk84*+RklN%&!SE(a`QF z#|+DPve2*NG3b{y|J(rK@r%ilFTmVu?EYoi^^%6)m2A&Y3GKxW@%B)XxAfkSAY0GV z6bWt3py}-JMYZ<4wTsRLjwgA=wF|)=hv}LrBpa{s^D0^Uh-#j9XV&A+hH#mbC=(D{ zE(~anxa2Tw$UF9YNtn@m3Se!;(%OT1icQ86lI5(8fFyGVVxet3M-^%#mH!&(d^Ty6 zs(Nel;=)1xH32L`2we&(ymd{UWS&uGQWa-f7{Bz;L`+Syx0Hw2u@~?~Mi-Z%gPkk`xc~{9-%oL$6t?Ks#*}e6W;#WNWaotV2_=H# zu2#i_nHz^k_FBh91#we{?Mj=P(Y$vqmThJ3Cr7!nF!j%bJSr?)GlpqSC{$XAV@OD=$@h|@9=f>Zcf6s^Pt9%@5nBwOud>^tb%`!lT# zLA0x1K>C*9KKc{y)ym!4=5A^XJQD9MGl&Zas^>Cx>-n+;xf*N9PW%d$Q*~cOux9m_ z54$6V!bGag$R|Yj<$$4KYgJisz#{nec-t2};lZ@X|y%l#dI4jTh> z*b(KI)(!Ue4giFq4K-1YT20RRnm!AZ<4z?fdOsxKh zm}ILRnLB&iDC1e;n6{ZL%f&LeJG;`0`>dC6M3I@IO~A;4ew-8Hty%&7z+x(bB7W`5 zLCV^-LPb5ioJi2Z5v#N3-7lWM%GvAI*lT(J_P(}125+LoyI}}@&Leks6>OA%6Vu2h zUsBpYmeXq-BX+UacU&UF?aPNs=X~D$$B@a_2hfr*XqHiipZIcn5Wh&(_aX!&*h_81 zhcTkNl45uhi6Y@{5?xRv(5F%lVha+zA52N*UYA9>+6>)|3j@&j5rqom^yZS;o^sZE zgZ_F4!OSq)))-IY8y)RWgb~*@c@0@l1;mZf(q1YFk>91)lKc+b=)M)^j~%#kcA*U& zO)kC9)zkP@@w8R;FvaM%>cb}*U4Ow$NIAF%oq4RiRs=AR%va`u{(zUrP2D&wc|ub9 z#-v{ak^S1sZQasp_N>!ka~kpNyQPjBs7!N*{DpeTCz-j*h{&NJAGMgmcWaHafn4_X z4pDOh`me6V2~w$>>RS?W3R@f0O(44j#ua?I4It*#*#vDK)8K8u%HRz9&=IlEX~@#; zeETexjG9J@dEBH|)0YwI6D*sfO9ksB@B8rVj+dgWO_-IqiP}=l#+M_nGI+obf2X-^ zkmD-&Z!z}`yk;bfJ0&!=V1f#+J<+rp{HZqa;A>AVa89>ld@q3^GjVvlx^7iK7qn?MjUH{dS4L2oiE*C>Fmu} zN1fB~*@i8=ksL2Wyt{(VO?*F)+oRW$?VTH^Ezt@^sOlfX_kpy54}o_K)Hs}R@;^I{ zP})mdXU$kD z7B|FEwr+=`Y-HzjI`6Gs2}?T@SyrE?bsQm%Egx}~Db^rjT+!Qih`5U+DRpQ*(DnPp zgmQuO^!>y6H*Hy#2W5oNgbnxJpD^L+;tTGp!7jGQTGM0r3xtfJhjxio`Rj36C?}xi z8WewulTB|Q-lm_f7vxi06Z0ZZ!n#|-*$HoyW6=i=H6M|!P>P7!&bCO z_jwNI%7)F-1Cp}m$$ZRSp%q@qHWEg1bz$q=zBF+>B8W2zI%AuCoifcs?hY0tQ{Ftz z7`?eWpXmsvJ|hm9nT9=~>l?0en#z<&M&TDuMU%MTN%%Rv?UmNqa$wI>t-Lj*4!f#CiJ zE5GGv8>uCg*9M&{>3ANAFU#v`)ni<9E*?2yhV0K5sgr26)DfDQGR-V^>#`^@0))ET zPUM0fI?BW!Uw8~rtr6xHU!+=`OH+}74vH7mpa)0R3eJ_{%aVFp1OLZ;kbcWId6^u7 zrZ0ZAC@E*{UFBR+Nsh9o3=%>npFff$H5Ojlpz3|d)5nK)++*Ovqn>VUyZB6>!p*EF zMZPXqd0(0I?PQ_0`~=bs=c~^0x4CQzEDFP(Rj~guR+mW_F$r5VwFhNLqXP3u zt7S#uMT}k64%?!}w<1<~_9MSd9P!$FX80uZCk~5*gQBA+?{cSjY?Hz+BJ@ohVU6Fu zwILBvUwo&0S5Pj>VGD+>QP8#Q6wbe@?b8wSxxvdnVat~VivWZZ@e41`~m!#BE`-#fk=zE=#&&P zZcq`~8J>PFgGnlWv&o1g&P)vcRY}m%-AUJDy8udA~`F5k3IWySoY z`3C$aqSxQFPiS{tdv9&pY6N_gDjs-r-GNIYUq(Xx zs%k8|ua7D#>`UC_d+wqQ5%Vww!2i^H9Qo*Z4W~NGFozh+j+65)9@QyDHE`pjN4Jt6 zJ+1HZkUUg3|_Jon=TC~Q0T#?%Mwr%&FSb+DN>XQa>L z`b%`AX|n_vf{gA-c&A6#(7pXBW%=u?rG0{0AOBdJ@$OW}^t(D{$Gu3A>^_2{jjBj& z*Im+sjD@X_+w+T|25$wN@Otcbty6Nc%=04ygqs_?`O%z!(?J|Jgp|Le3}bwZh#Mc6iN@*?MY z`}RefiEi02s(}l#M=SvNpPduL?LMVlKIyQb+BLW+ha9;0<&*(1vild?;8ws`=HfTp z=8cLlh}2Zz(wOwWMQU$M)BXUCh`46<-FG=nD^I*Gd+)pkdZhU4$|rxh7XH;f-Sc)Y ze5j9=8&@5?V3`m`e&Z&?0S0=OF`)kd!~Im7*7Ia*2e?9D0*gAVbx`Xq0xJqI3~d! ztS@kZ^}S9V8V$Nu-eKfaXMBD!N`f!aD7y;EV`i~`}d`94tP|4u>zJ)jEhn1A#NT>mmf^b8w zu6QViqL8vwZ1Km1^7#Y)5@9*c3SCkcQLa<>BO@)>5XIm+4y?X}Y7%lxfIOp!-@Nh- zdrCb`+PhI^%S(;)k&_)9Rz7w!JDU^6d2Sr4MS;R~c)aTtJ2CUPDYl5>dhmfQA9alQtzez6Ms<}k3 zv&mSb)8pzsshmlGzg?7UQj*@fP%uz+h7(Z1vF7UGqaIDGPG1$mebXI@gYk~I8jZL|VeB=>5CH3;{kVu@^ zpF$I0-S8|XnHj=anC#w<%mvaDI&ULggZ@c{au5W_PrnDqa{K^!=K6~E59S)bA6lMM zMrntxCdkH_gqDb6)i+r9Yc$bOv(oQMRwbQO>Twm0-31n3nL0J{nNE?xwk^*30d&9*utR5Y+heXKSeq@ zq=$DIWMR2!6?hBua6V!8IA1g}7}#UDLw2T0-xLm+wMXMEi#L^^ug5?M<|r(b_R*l9 zEsx0(nxR`m;G9O5kuR`oxrsKz7wTguCNCSfCn8HBt&qMd&%$K|dkzqnR@8j6{Fyq; zr-K_cplUxvE)O<`@8$(u-}Ep~GI<*{xAJU|+*PlG2O<%cZr%BxAtuT;w9b*VGqNQV ztk=zi1H~sy^?_QW1zs^I#d4|EK)(4?slmi_vMI{L2XP0}yRwnT?p_*$8mG6+>H8>T z$}jO@;a~7`Miz}5rlfYZLHSkFtSF@Fk5##kF%*8M201};egBROY4`obFvSfE%Uf^zE+Y58x zHNgZYAw=*(wiq}53$&SqLz7~gTeA9O^G zNb@zNJ*2f$%fO;POUqO^PvT{3VNt1sM$m^Y&{9y|iDSGawgOMXCu`M1mWm(g!yq@z z!=es7=H)zk5E*^KH0U%H)i)agXxISx3Fc$2U7Gr#SS!A3B?dUT;2SO!&Oz|%Lu9*_lpL?X@PdUig-aavD zxvZwVF?o1__s-D)KWNMx;i#KY-Cw#AE=xjDkw*MMFQUk0S@HR;iWin9W1CCM4hd@x zGo)vg@;^_ynbs~EYz3aod&~!mG^sbQ9hcE{*m>-$Hd-SJye*wP(0)3f{tuF^uCktt zW>VKzyk?VXcm(s~@>+G4J(u@}uIV}e+&WQWbB7D?J|{AHRz#_LE;yy$Sw%>!eR>)N zE3T+`>l9ESj<^4L%%Ix-AM`K~EUrtLcVpNw`Gfs*+x3>QAX20`Zt=QN$Iy2OD(L_i ztd-9&vPOQOW=6J!a**&H7#%15lnQ!fYlnhSOm@Sm)?!=4VnckZq(ir9mxT*o8bY#c zWDj%&>nLxa9m6bovZ1U6q$GF%Bd!wE;_BlZeyN_#g|Y}ZGAUY!{=_-+#=4kcQ<+2Y z_x-#WWDE>NV+fGTGvN;)qL|6HxP{R0RA-{Vv`@y}9IZV#(QYs0e0HITZTlsYnjpsn z>wMem?`S*(1Ge^Y)08vpHH6Jw#|a_YV+Hsv+2LCt_>nLPNyDNnL$ug4Ln!VRTBf&P zX=t~(1_$}OY|P4H1Qf6ijwc6xlSBXrXfX#v8PagFy&s(Q-86uJl@>McT_>>GHJ%$kR5uw}zt4i&3^39|<)F@1rC#r;YD z-Q}}p(TMm)UPc_WuhSlVc}&YXaoA zpq}IHo05*pG0vr>*=cua9hTMV@ilMnIr3I;B7vY9(U)@5QISA1hkrVpC0O~}wI!*g z+MDg{*XE%u=YF@YlnSuG8(UMgD=RwKGbDaWuZki)q@5kq0E$u_ydiHLPAL;vd>R9_ zWNAm91Jn4XSO-(ZYJFJ`Y#{kWY|RD0a~v|QEKRhOGq7xPf%^`a<8SSZ{(5a1c7Qt( z){p)Ar&;>H5IO9*vt3x>-u*#EeF|Y5<_?+rK_fChdGrhhXW>%qI}-Km6TQXrp>0Qz30>|eVBy5d{K!EoHve`X31_exNc1io49w!Y@#7M zF4#4`^-pVi0xf{HMfk)b(8!2*|9g5E)N*$Ixm2FKYJP>pL`v2s{pq~rlxf$w6V)#> zqEsJX2fxgjBtJDimd3iV%qHXXigDY8WuhmKg;iM+th;mPZbs$uP4tDLfhI;@O-^pv z74X96q^uJ3WtBK(E@Ze`$JzS!*|<5ez-1Zd6n?cF+1C9e7AkcZYyA7 zk3Qx#G%prbW9}Dypu;uL;(5fk`(Hm91z!9Ro@Wm* z1Ze0|{g8?}J*cfDAc{X&H@l6%eqHyQP=#XMv6vnU+7fxEj7#Thsf0|X!nMp+{s%qz z*B`|B%oc*W7;7<~BKt4pbK6n(gk*00zPRzd6{n)dZ_w$HTAXkGP$00`yteNHr~u}f zJ0xp*T0AEiVOAqewDqCBhFv37|1<-q9dBQDRhrg{G_g{aR?UqAye!azJ=J@5RFQ@a za=1y4&v48AlE@!PK(P7EC47!fF_8o($O#w4&0bUV$9@yL(38J?N0B3r`yCUbB>C0%=bH%SXZT!% z`hVjE-fWJH%O`-7)#--a_jY{^VZKI^a`FO8-b#9R zyF7|A@m2ABt@;bh>YG{hg`=bLw#)yOXoO@``cU-XQ*pd43L?BbKbRJH)DVmF^f7AK zmEEoKl~t7bhXHn|&Gbev$3Fo%eSe!{WH~sM&3eJr@>!jIKx_S{62&}&4p5E{_B|Qt zD>?rL1qp^IdGO-3_df%ot&8WqlopH*5AG&P`ZxNO6oj?qxPC64%^B(!8%z}%H6#w| z%br9z0lVWT|I+SQlXs~^RMfFB42!#ThGf=Z5Z0NjGu_BN0h!COt_WD`r7EjUSx)O5 zJTh0HS}2zk)aW;)Si*EZ*l8wy#3bg5^a>eMK%ahosTz2KyUvdsWxh0FUNvA(HgWUt z0!~1z);<1RRQIn80Ea+De;LJFM-}j3Jm2$ygGCw-!X}mv9-63aPWk3(oc{ZNm#Ojp z1ieE8k2rz*2iJ_i59ME7 zuCL3}GPrtFq5HSUrzc+GbMrQK4qiK--@`1WST41Pz$U4clS@Q}Gn5z-i_-{4o`fe? zuOqO;)Fl-5>%?r8Dq~+95#mRBImmjKY%CX-p|J%wy;2wXMWWhLmf7bz8{d!rXs!n( zy|>9RqsqZ`V)T4Q#MqD8DH8R_0k^PO!~A#yW622k3d8zLK#XNcTN{7&vZ4$I zIbV9Eh#s$;sV}4Lu`~SbjIY2r#H|{-n%n#!FC#{NlColvAyDOTCmZo@-T5A69YuS9)*Rz`SIaC~Yh6wnv%M-#1Z}hv2U@ zEY!k=5F0EP3%9kHxoEm56>B3|oC>9uhlQytL0I_Jx2$M7sZ?O-5{5q91eHjV2tzP$ za^A9#q%FuiV(EEZWgU4~vy^0anBVCg{6o96MR+8fG_TB$H+|B%B58iJ5WKeBO z)>pEWrkjJS%uM)#Iw?0k0yFIGJ;Sz*PV+2)l^*AM(?=~mGE;D`lX`wNUUpO}(s!30 zEN9J3<3VfbauKl;t5NDn$FpY`I{nbtK0Um)X{Bh-IZ75^Z!ltuqEXgi*n;7jSoJt>7-VDhUA#$*1<}BuKcz`2#xg7^MI+9F zt%^FV8r!c0?Y!%VxxZ9f&uAZ9PkZD+Jx>!`{~!8A{Se;sa|RSI75Fv5<4w)okYB&w z^5gtlZbOobmH+XUt8cDq4t3(nYTlPvFFxZ5^%j1ZZs75pv@SJ07N;Rft(G6Wg`ucK zZS<0FHV(az_(GE+--3-;7n9PiwT5N2N_{a%kEUBDxYZJUQ(8GLzU8*as{-pmg1)t~ z9><4}Muk&QqP^gH4&iNZ$py$5MZ0?{ysFLu3n_@)(2LUk|KyjvsG^p(=MzK8A&wPc zUq2{F`@B2go2qs5`+N5B_@P~(BzWLc%F!S1#aPhKqLjTJDwV2wU-U0wN*?Qy81T-1 z+zj-^48P^(t$7Mdwfm)+Q#iw-ry+XbIR?EFzP?+j*V*#BbR-aN42!VEY7vZ5oo8-; zieb2f1i~k*I9yj55n3@@pJw%(Ms#eD&v!cTtCTQ{(o5AKdl_%dch- z^iiBHp5f5pub7FqF6ZvwLyd#{w0kHvZqT{$pP#NcBzyKIr(Ax2%g9PO>vKHW@ z_l=Bz?zfx5J*N(hYD~W$RSiah#k1MElq`R(=cUXqk;Ba#`d4V zP`vrhf*g2&`vZ)oAN)0Qd>e}I{(eBkYoejb{X<0`Jou}v>y)67`ibyXgNn)D(n^-X zFFx-G?ia{y(w7Qf-KT3c$r;d3pzDW`1{4HgOose|jG>MC;&am|)g&$UY!?jdU~5wS zGTJx{Z!x_bLioV?vL398T6VT6KW+g>m$yx=Lm>Q}z?4%A8`?*`OMfe7C>0Jjt)!1H z(fQK};@{gfFNpJYi<j?yg)C_=jFYuNKs@#Bdms5O_meN`OFEyNoaseyFaG?+qF^y3!W$Ebt(GZ*hWo_~ zriezHWkg^!%ukGHQJFGvGGIcv)qe5%q$GMnJ+y>wL0`#17ULT%s-~sbRdr8#@i&O; zfomzaCx7Ug6|yGm#{Tx5G zW-YDEgIVjRfZ}WP#^zd+R+44hby-+F-mN?OoMKP2NxGuAM+TiOfoc`N^!Mg$#(|B(XyakN9rsrW_&6-kXuoV}`{iJb2$tOgFY zrTS=cjiuyd>}X)jzBAEGU70c$EL_%9T}f}$8&fJK;p=t@MvgMB4!hJ_=1?^QwNX`1 zL0;k!(|H0Uucv0k?{>aX`Mv(8oxyJx2BIjH1xFw+*@6%Y5>9;;VtFoMRzlH7V4>Bl zYhdb`EX`R;d=L9q>_?tKBX`J_I#ku8^J-@j=Ut*S_lO?~A}_$36y`=9MCr=6`_o;! z3sgB372Dno`NsE_mGp>Fy%+maOc5+qm|vm)?ZEecZL=#?<$M&%bjy^MQFkv=!v|-u zz8zy+99SV7bwJv?jns9aaVc!c5F125UIZ&tev7~Cg82jHnsv0+lOG>EmD6_QExwb& z-7hZHd$$R^96I`Hu=dm({lNj-BuTTyqM!!6hv16m$yi1T{F;7Hi+(*VdlE0)4mp6U zmZ3D&$Uvu84D(e*XEfTe8}87-wyi%)BA zkK+PrH`n`ijJ~~rR~2KPc-C{&MzHVkg~>d%Q>wf_&MwOySKF{+AuPdyY48LQrCKGp z30K6j$Z*_EqG&}k530K6IH!zp|9devgrL0yPSBI+pXf9E4F_?xZ zI~6PT&1ib*Z5=OReg^32yrCL7y zk7|9wu`G7~Nj)2c;ln$|bzt5``uly3^W_jQs6o4kAok=V%*;H_^y~T*s_1ZYn9coq zHwLx2Q?1$ZPK z(n$Gfp9cT*RTBAc+EHagscYY7r#}bfUFTg1L9{-PuB3f?4ZAc`fF>N`X;H1|Son&k zpX~FX{piGo2NW?a2F8xFvbtdSk(Z&Cmu0@#EzDNjPT3|&i9%(7Fr96NkOCWOTYia# z_9uai0%R35W3LZ#S>ji@L1)a)(OtFG0@Qf!^@Qo;k&31>1*dOm#xf#6EYvOAdq zyYD$p;=S60;3Nj(xPxfYGR=G_nF?8ntCTVPd_h8$Ki-(v+VwhDK2nGr0~?xgPv#L6 z_A=OE$0+z6Wy=n*U0VSJp1n3R@NOz(*Y`8G;h%YZsezQyk7q8nXV@XZsL!8dV~(HX zaV7iZWXkP6&VX{`n&V(C^P0i9m!v^4wUe&1_AplhxS}a&kfZuudT4j-SQ@I2JKB?I zx!NnlO?>Km*G5*s^;iJ@iz%EyZL!wjd{hPk>cXoi#e5nOEGC!S{#cRt{5DLx%0~(s z(0$y;NI6%(#kb*RqGqUn&D){6xzAarjlQxzm5N-bxYor-QsXS;}1=Q z_-5YgaQ>q~|G1r8|NQli8>LsdQX;PyE z5~-1rgb*>15JE!Aexftq9^Z9*dwu)Z>sx#M$wLTFxu5&Kuj@L0=jE$&?-a#mxR-F^ z2Z*Pl3kLIs)KEI5>-BS+!H$U6YBdSB{Fi!!!vSxUw@ifW5)*60e#mo?9^>48K6kmw zmu^m^?5%NzJBPbq0oUvs=(PN~!1#L^3Y?ut(zgvR8b_Jwxal2v`Ed|r7P(Uk$oqO2Yx%PnfYB$trn<$ zSAh_?wnr}4l#q*DeWX~IzkeJ=fIbB2czmPV6EQ04PfG*-mAje6z_H~Ra!dGWn zBOf`qudtl&C+1?bH?Xna1jbLi>tEmATJWbCm%++-Cv7v{&QW9qvb_&}9!qL@z+!~? zp!Pjy=dHijp-=by{1Vkvv^dC2uU#^SZ2}vx)oe#{^kwzX z>EX=zu;<`ll!iJDb1i?L$jn&2&K12`Vo^3)7><1pF*HyWAR_hru&z9t6uWX$MnIIQ zWLB-#QmnUZkT`wz`VBU1>V4d6?uog!TX|87O9_3`epUUMk3$0z7Gi6=Lzpm_t&<1B zLBPetXXuSD%=j0j=p71NlX3peen-JmzGx8i8}89Cazq%56EP4 zgru4m&oQO)PV;MfPp=TOmRrZ~;L%jBn=-bC;hAn`SX-D#(G{RooJeVyF2*`Ewc`eJ1GzD zzSwmwtoOv>jPj1cv)LZGMs%-TE!!y3^O91aS*Qx5c0faIc0Rt| zMVQ+TNiRg{+cR@WE_R^h`nAl)wvu9Xm$skP-vxFQY!nx6T3la@sU z=3#yuBe$vY>`*6E!cH0+I&6ckh87;m8 znHjSqC2=Kpb}46XwuH><-w;~Zp$I+>Ne3H8?wj+RS*^+*j(mjK(n*Vye;m@IvEC&m zx(@W~!fSzKLFn(v76=6S-oq5Ge*Z4LO0^XGmiNMCpqlG6U~14GU~sR3)mD`&+KX;$ zx%I%_=dChaIp+K0VZF-(BQ~Dwku|{8p?Vu=qeIpX;B0MT-)~jUcJzqI2nS00WtxS6 zIFdO9+b?;+m)WB%SVf>zzq{H%F4FxHhA(tj-K*r=s=(mojY$e`ccm)ot+3@0 z@RGn>!-jN;+9>{DxbsYtWC#|YzT0T=NqGMWh&9GPSy~LuJ^U}(w=~zO6bP5vB#LZW>u_s?`uBdOOe&LDtZD|!qf^3!qd38 z&9}Y@$X-X2QCG*R*>s0p;*72CI&5*9NvaI3|9E_YG+HEDN}o6@w`4vX-|O-VOW09IMDZ6)8RX#GtUDedX`gu!QU@B*yF6juF(Sh{6a>Y(b*KS1?`NS zretStP;$~dt_O8oj8ve97&WV9N%(Ss5Xi%!Ssgm0A#G=xT3YbWvipp#r5bW=ajQNx^$~ zQiNjR(uZZ`ER3yKvea0`4537K$}r9WU1j+ib)l(7OV8_vjy9I7YQ-*UZ)oE|mu89= zl8UU2C5zaRJqs4!HoTzv&#GbCo(1{=aR3ioL5G&ueryd8QwOrjQW3G~}=KSI_O>6CDanyd{bbO z_*k1BDo&C!$F^vERFFJ+eIZgjGRbF}G~;N463FxwC$H4}m-w#T!jc;wW$pX7RGtU% z`@kcUGqD#1tKA@tei6X0w{wGFHg2GW!@l1gV1FDGDiY!OM&*Tk=GDqaG+1av{B3^i znM#n#)zgK*&4>D0I~k>Dj~txVoogcnB81KXUL{1hMmYH%$F+{T>QjCz!;aJZ#^dNP zbcocORB*yZ{V(}rwGj|2B2@4`QH=gUD(@r8&#dhD_U>N` z_ld*Og*)`{-06Q?xNW>>YPCRba!QK4Z>V`sMg1Y4aa`$y(!5XiJab@~gO&bF9QlKK@I@BjBVi>4slJIJx6Wh~vL7pkDfcwnJXAn_2Hm6xQDx{TF5alTtEi-cnXyc+`wowGiPb9ZCD-nPqXW@XAxGb5?EY=he zBp336Tl{0M#lPZh*My&K*{}pzU(b*6YoXueUD){n1*tQQ7V+dM8$E1Bf)uTbDcmd} z&{#hKW&;#3Anot=N9)o{c2b>Um{#w4B~%El2+KLNrYT-cBi=_D1G&Iw%Eip8Rt=!t zHQts<5q&bxl|AgRNmRNXaZe>nlFJUrnrrVB4dtK!Ufj13Q>K9D120Xz3DA zacHzfipaE3RrSmH8Nw7Al(LMs@FZ0-lh7NOfTL=iyg{YtMTZ!Uiyx zHR+iUbk#RY$nXCgApl(u*IvOzjs(nJRAWzDI0qAKr%Zq@X^MZ99~3dcYyMrn0E~n#I?NLU;mCnrr;2WQ|tv^-ol~w|* z|4_F7w*b!Sb2f1sXZNm28Nc9PFWsqe<2Ri>m+$6XQjW1`+bkwTTyS>->rPlyuIbGH zU11umeApAQ{r>VbBa_j**)+cK?fH!-jV7&wRhFmVzE?k(2{(?V^dWPrPaAOJp5hUZkxQRxb&*{)eD7^dZ7$W>Q-5%0YL+s~&xR0`u8u+pA zHmBaK4{CaA5t9&+7YkE{M-X0xh)761P*GBl{`e-~_o)>s-Bdz(I#j z6FK|JI1VcCfh-fmPHNUOKzyT+Fj){eaiX0+1RJKbSAnZ2;hZ6Un5^;RKcm{_ml?(B zb{g^@7ECtB33fK@m>1HPX^bEF1_;yhut6!{#{Zzm8$>>_0+Np#;b|KQ{>%$YMV9@XO=RTNdG5bJX2aRo%!%68yLuKD6Pe?Y=DgAW>K$TZ)%H+2kXg9g zTbF8qysCnwQq6=w+}jqRHpq`h?-{hPRKCPU_nT1t%hG~R!y0}eTZ3_|c38;Jx zJkTi{mgNy?1&bw`HRG*Y_@#Lq+Q=@0Vm;~Pj-h$ReCIl2#5?}=8s`rPG~*7* zVKH{2I{M(ii|vyBv-oPpW4q2oMLDoW2*8m}pms{m0rJW2WS@i_hrcrQDbhiG2xF~a z|K*^5y-m-f+P_8cqGDIFvU@!^cCk}0sA+M>WBuuyp($GW&zi2@aj5ErUI5Oj@F>a^ zQU%pQMy2oZL|piGutT=Z6t}#ORatUL9^?}cDpQlhtT-DlZ>h*5X8D@w^ekMGt!T(yj;$8U8`DmE{#^W%o0} z0H%p#4~}i;+;CHY`ORns)eY$}R{8t;CKfyZ`;5e}(~`v-;hg8*H_Q6doHO6E}=LcC}h&A{@%nL`pVaL36tv%FH3vhNDLhVL{^SDAI3q5v@F zTs_${ZVZ$F56$HT@ynU^93nYDdGlTGND;fDbjxrfp2?LPAojzw;$9P)R<}0$8f-jzOrq#gVlvbUjt}L_16ehdUSz$Y2*B=6nXcEQ z*&z86B~(M3B-324OT880GJa9aCurK_1=d;_0e*Kx3;7^}o0!*_k2v*qnl8plYR%K{ zhb;`pku7-E`jk-nnTwF~IrW}1Z^ryS5ZTQ3S+Ufw5jIkoj@s}rEy&QH#*U|g^H|cA zpQstXn!Hx5YI*|2iL*u%?Kpsmm-5zyA*L_?K9z2EJu95*;FKxDJ1VB$s~;*-%9(HF zHWKn?9%pKJxCSV|S30N$j~kgBRF*;Ge44Swv^FSXSU`mK@rLQ^)3eP5xrCtkt1cQh z3~54b_uQ|q2)0&9_#8|h#Y-F$Rb_sg`cpr@Hgd<-Gh zL7j?s!Di!qF5iEUI;)~AB0ZvORmD)kN_I+8)$+ZHLmXdNP_1_aY_eL%_kV9cPB`n`HG#y8u%F@4-}z23 z%#z~(wbEkpAz0&bBwu%SfWu6umvuLn;)re&?|&ZN{21d;$YQw^C+s$Q9$0#kx3Mo3 zEXmbRAQQmErLifq^2-GA(nvix#@e8ShvT*L1 zHfDw_O~MFuScQzIvIytCJxE2sCvJ0MZ~W`SEIZ?m8w)>{lRcw?V!WL>ADVj$87i&# zpQl4P>eTx|w<9#b(XaMd4AU#?hOIY0w!*$KeE<8_9h8i!-`CogvS?-bW4le)-W01g zQ*)Xh;(k&$H3p)E!hAbwD@h`JfgDC+1+B}uo|kZ&1D=^=Dtm3PpfJaipX8KU=oar9 z+k1yU#l{jTCQMcf6k`*6GA72X(Uc9X<}Pr%GKn$h2$;J%r5WxnaPShZ3(^W5Hf8*h zunl>^3tu&ve2A;++Tg*CX&<}~2A*hzfh+1R_yE4rb%m9EU2k zbl~T|RXylGMYimGMDB?aNVR;b+4J&)iVqh*jj_@+X@#4jd;jRSpOdS9R~9VZKbit{ z_ACcoYo5r{HFJcZhg!9bY7h~{eE4$qR5s*VOXT&Y?<+oJ7S+E8^>@d-tfEF<5BE-x z9KXJLF>Ge}U}T15yOdRZ3_G1y*xIRTViS9y{?>&PE_k^0SoEJ|9_~0r_g{w~`rG&C zHtw$z6Hy|a0$w|3L{>v^HU?c^`0ILUS&l40z7P;f#XhvuyUqcM%~w7of`qf-gIc{m z;0tv~79kX&=0SL}6Xvz&BgjM3cc=?MWxgDY2oM#r-qW5MQfBgD0y z^Q?xB9KgV=K${H0h}5lUtq+ViBO)Lr;J!FY+|Im)n9Io8D69C}F+{eE-`UFpb-QU2 zu6koJs{k3_avJvD^D$G@ixgVAHUzrJ4B(-aH5LM|cn@xovMBpe?U#-~%9lU*fGL@r%q+q4^U8pw zpO?!G=kEkL(=Q={&I7X@N&~Em3hDXLp9@EK;f1~b+PTvHL5OAu>-oKD{AeSh4VjytO<|DC;C``wp7P#qGs^}WQ6KVM zD)BiL-55v|Bh9|Ngp>+=JQ~{ zS7=T>EjE>gF>_WN==yL}d!4&n2q|BF0cOHvOkZCpyUSf$2`l8}&)N_7D;pAo*EUM| zCbIn)dC6sQ+P~H)YJd-BBl}p4Sa#GNcV&ShQL! zZ_g$QmSWJ^%9qF1S0DA}_$vsFkIiXSaaY4LYs40P+||o}XcL=|q5@>cJiFqalf%o? zMc?%t*G>SmrJecBjx*7t8qf4@Vjsr2i7h@lu}h0RZ=3OQYk-dI|dA-b@WF7>*35{5vg&2Shp-RibEisF(@1uaFsg| zdoD6K*Is^5jjdJ-VL!@RAlu>F7P)0g4?P*CQ(iOrpblZaa9da~)nT}mRS36t$*YQe z5t}^JcpN;wuI-dZ=zTHllC>pOHG-?dHrs5|!rvBrcqRi;^Ry6w@)lIv!2%&2Se#)> zfYW1|>H7Irde{qeA!yvlB518*87~q0(+i@8^Oiv8C$gQ4*WdY!bSkZ{jL0E_B4q&! z-f}dQDa74EKMpU+HrzCKPO>@$VZ>2QIbF zF6eV6^6cZc+Gw{x<{JuiV1?jdW*XnJxxu7s*YN4^s^PljIE7}V1iikKW;D!betKB> zOb$NDi34@b5HPtWJrQi*UIunzkOD&UH4PvXWs*M7hv#PeqbuOd7ls+L)w6<_VkTj*#)I zTsWNHiYuF>RThee@|rD$1NdU8ldW$gpA~^g3B!|o<5Qx>sm)dtZ<1OqzG>m{tZtmCV$X+5R8Wn%dc#rEL5<-H?;U0*NFbgYJ=5vNCO^zw z<^Ha$=BYr6S3F?A>@?g>pkO2#t*5NBAYurkCJhk?l;_OyQ==t&82eBgzr}nTXEk#w zv9%KatvkIqg(r1P&uzbSuYj$i9 znjl!<9P&MBmoU%eJ49*FDf%F8wUH+sl6{R{kb@Kpp=Zia6<31IUnJoCE}LVDa_~xJ z@$zYUeJ@VNDA8L42;0?we$~dW6O`+%9G_|-x6|_TZMefihc?%hG;Z%ix!N=FGuzrq zWtX%t4-u|38mr5ZtRHXxpUau6J52S?OXB7wnPOn5t`j6pyqE{4BDo4Ye2xn^kLvKsw6o85EPt{<}s8Un_{D>|m9V&}L?YE{Q6=Sg>q z3cVfLHE_lalUdV+s27OK0^6BuQ*&as;&e7I7F&LXy{)b=X^5gJhR0v#daz=h3?Gr{ zWjPWcc9aiyJG z>toO-W9#GBQEO9eKUT$d4hds_+3%lfxZdQ$=4FE1=VT2RJp6lAK`I5}jH;fumPiv* z_QTlRrg@B4P?Hj3?X4BXYbKy#XYqC6vi68A)jje!7O>MK4&_5AEhK%6lSjlDJNJVe zenWZ0!O5dwDV?CHE|<<^kdtI+`@ll?SVG)x^)SV?hQ<=069MeHyQBhxJH~LB9^eo^ zQb8658}HdVI&i#n!SUu&BV(TU9KLPo@G>sWbQ6;Gni)__;`phvrp)BRe<<*8yjgWED?G zPNPRR6Xita0=m<32B8|a*Bu%g6aUqwFF%4PEjQZ?US-7q;)9ucqySzD8F(Fp*I4_V z+;bp?q7Qpp*Il7y(g?#8kVa^5k};`Q)G4R?5p)^sBJS|39V&J zSd$hYW-u;+NCf)+c|l4!D1qp_t0{8+ptvO%GE4!*L&dvmCp;x>PO+-w+`-`y4*Ag%^}WJK_qQKvKsgu$1KV5cC1%EC!(NA5olRpKc@Qffm@?SDpXNc)j7 z)+b?_r!qC9^adb;iJwoxof?99HA9SsBK#NLt46v{8Q{s!O5K*yq(Gmj!O=|>s8^QM z-QEZPap1)sH_M1haZ^(W+0t-ysg7NdQsLIFB{9Ga*QXT$+~4r%hk>J(X1d;{%8Ir= zf?Ayb?)YPk*Ay>LoI6g4Z_6t+y~<7Q<1X!xKbrc7KzzrIs)ZK>Jg8{bgW2JZgU(eB z{i+-EB%p1mNI64q;${&W#stR;(uE=_kqvzevZs;o&C*mLyAh%6_=3NqPEVif0a0Au z1cq1mt8Y{vxA0miqLF0JwP*FzOt(zcQm`3+A$<0Z+yPX)-jMuL8}{AfvQGs&IE9)R z@aeD~BMFnUqXBkW)3rXVMHl2E`a{*E#>BVvZ2S-haHy;*HWHZC7G|2Af&K0o{`Op_ zq15Syy~G%EbVHAOk?h~)(V84ab^>ai@TrjA3Lxnbj1}X^vC?dtP=sl)9AHYw4Rgr&*QEArkWf z&wya3DUVSHAkG18A0sffgg9~4J`5gbFOs$yJAJ($Yz?Y4F`V*XEwNL=Jt~F{oI1X{ zT}hN&HVX3ss_?RXn2i}@(}lyxOWE;^QOyh|7zHR2@Ez##B?QFB;_$}SY4n1>;vzBt zK|e;3=?rsoA4XR>ldf8+C%T9y6Q7za3U866yQtZ&=`H)`M#ky|i`tngvdSS5*x|Kw zW=zml!{s(>v8scNx z*O5Sx{bqnGtUZXGXS`ccy!jov`mcf`TUv1J$L|Q)_W8iyXzr7&mu+zS_#fp5so(eo zou-VFW`3j69NZG~97aqN4gNRMmHT57Vm8Aq<8S8-kuE=dyk3^h!T%D&K?fSskyT5j zVX1>535kzwAe+B-7CqChJ`*5EO__1Ru`_(NYff^V;SKjJKq}|}^33=;Q6r-r! zbRc>lBl@;vRn?Mea^oxNguCaGpg)C!Ez=4mtQN6;4l;rx^J_?Nll68qQs@c?!!JcHn)RPX?`EGk%K(({ya-~|PTt!zE-z8I$#J?Cg{<)aujxu2z_vJ9uF5FIY1p&|;;e?`A4d=` zvKReI3ZIBZRY5s+K%uQx%jA^qVr7n`K*Yqy2gJ@$K$@nD9kM5Z@(tj*kg*PEare4F zGz(Bk=roTkK4>$CP+DS>RjLdT&ez^Y5M=Z(OfIMfVng6Swy;!+NKhH%`7{tNIG4r) z!CIGn!jLhz5HTB=Aur98n;5nM9jY=7d4O+vJz!ZqLcU9nV^?6f6EL%apL%!52mT3( zY7d(TBbXA6XZXY6)-j4v)?f|!!Nk&sVXrY?LH>kr&^x#=TG?YR+6Vbn%eL?0KLUD_ zESL_fo@nPkgk@J)FAKXN8D=^BB?bj(QZr#sB*~5&)kU9+6|PUp5+Gm?5TJM*^Z}gU z+w!#qyq(A~@enN7HnzK2uZ}x@PkY$l=yXuK@NtOUDpN96hcjw(geNpBd002n!M2Mh zV5T+jPA>O;sK*blk425JVZTuqMS`{qvFLI$rUN&p2m<*eo7!GgBZzvch5^TEN~f$XyACQ-IgjjXgE{{Hy^I=Ft7* z33tQ2W%*{A8@+tN8Zd=!w)m41HWvx*$m9bE6TIjduD~2dTbz0F^xa?TjMFloN{Lm! zDwuyc(iRWDmmdUnjm!Gk8O8G2Q&XL>TK)mcGWjn^kboz9Y}!dDhnegAa%u>=$AHF) zPO@6Ts1kD!K*ozF(7s4!4AY;&i z9f3qp_cJo{U?+OxF>zEDXi^{s?4n)uo+wvSxAsRR7)oZhd>85KCME;!89<-n7ecV) zDzS&7Zzrv~5dHWW;{g**Fl2IPRre4ehDA~NT%9JIDI%?nZ%XDv)kQNgVwEzri*ZBT zUWABCE`wIJA4B6NmZ%Z$xp{*s(ch1NBX@Z~9J3*UKxOnFi0lj6ePy0W8nfEz&9OORY~AbWELMjn|!7aUO)HEXSC5 z^9uC58QY{3gE7zrIi>VP*#Mmj{-&K>2meO`T3V_}{x?8-S<)jBavBFVp%r77eV2sV z?|vi2hx+FpX`HK??!a_MS~D_+2(|kPP-a7XDt98&#@|6v(7(+w{fP?=PiujWK-c4g z4%aYuMcNXgd$fVP&n3i=M6?TsiUj&hg>I9YFB6scjJXLhi$mrVxnh@vonZ>YMvFqF zVGs?2+dm#GKM94lfg~;nhf-EbXn+ji{^GLI~g6n4r z{0cd2u~o(HADB5!R*dsoZ1pX8yqzfgK5^(sU9KS`|othBI_ZsuSt0a_u*%M9*12SB1M5z-d=0BZMjqlAl){3 z00iD$@w6|t2nSu-mxzMH)5FtBG!8|)E$@_)+iWTd_ynfRb@W`Bna`<^jdofff*02g z%m;N<&T^HSQV@JI_Yegn&1-bC+Z1!7P9(~*G9N8m)K4}neID~|TjzLPwe|SJLWV*Q zZ8v6j)%KMI+xHT{9Ur*IBY-#&hT8prs3RK|b_!%S6 z(r$=zz8;R;!~Y%V?ny3#?BpIdHn=@|I!b(zuFSzqarNcI0F<>%S-g4YJ8~dT?iflx z)WaTSAoL7tz-^W%A7iEns>;E@1+ChSm}a)z0Ip}Z^m_WTkiZAp3j;366$m~N?75#= zb@6*bi?>HL?x4^8P8Kvk`XNt=AX&!m;GIvI&kLGTP;Caf&+@>we`qmRuG_t*up6}` z)Rlx0`@-6@VjK-3b7Lb#F?h6z_GaauaChF>{|2D^MiI98)%nL$EHk>O9y_kycV0f2ptQd*S>)C`_1F~gwT=O+d;~e{SWb{+{zWOR!6VTAq^2V{b3#m zDOOKmTJhXd#@bN z7HNL8ti#<$fP@R>mh*w02@B6cFaIs2H0<~*usN+FU8}7%ep9gcx3yaJi40AfEosu~ zlKDCK;KMtpkT~M~=*A>~v<}B4rbP=!{FOA(L#r{@IVUJg?COS3{KMx%F;@OLK)tFj zFtCdd(*PV4-Ty6U*v5LGvI@ToDAi<99zqb)!Ghf{zEc+Mmt5_uIsjH8uXMcD+!}Eg zQ)Ka{;wWP>{8;4&9q4HuU$cGTk#Llq!6=oqp9nHR&exCo<(1g#w}V}Suw&&$)yQmq zBBg45{NpQ58edWP1hid9&yt}Hu(z!8h^~sz3jazy;rsx?ySNpF3r|zsogyT~=5J1X zM%jDZA51Fn-&QA;upC>+ot7qmLs425iPj}lOdo%D55)#C%y9MAyz51`0h z=wufr5%It<#{9VV zV%S#wbNqA5ps{?GK}-yV0#uTnp(@unk{qzW%n;TB%lb4Cwh?AvUz5c0eV}Mx)(W0!evPVtQd(z^6Y2f^w$eYO0*Jml_d0=9Noq#& z_j06uOX|+u4n&ZpcXl;iD9dNp)(e&Zq2znNMc62H;wlD0em)9nEc{I2F+y{Nqm_}V-dBnAHJ%eVjW#&dnp@GOBk-rsF^>6y@?T{b zJt}vV3Ch>Lcj^D$DbSJDB-Wc)oDh1fRD@kH7z|SB{F^Ap9+VcC~@0qXkJ?qyvuVDA(d-nTF z0TY7?Zef(3G2!KtiM@a;HqNhTaX-c71bavM{Qk|I(&5u+vqxH~L;!uiuTFgg3Y6UOgbfIbOnZKXFQx5`4n=F6LM`YR4?$Yvl@ zU9ErIhG%VjYU(7f`I~vtBWp5j;{0MOgE;g3kur3NR?X68+kEI7sXRNl9vkSTcgVrA zE8qvAB`hG-&F$uG7nO0*tH;9k6bb8(dmYw@rk0G4GMNhIw^p=SEAp@g`BwmPoGRkm@6*HI|fudgo zlb~mUeeMHHVY(_4&>ib^z3^QM{DC^JcL1-=!wDaZmD#>vn00R&&`^EEoO;CSF6kU} z41I!kVxV_8E2#>L=-!4r9}&6No_C@XI1=zbJ(9u7aGLqkQ?#VwKOLc*n`$s8Vkq(6 zJyBC^|2#Qle`|rcsr|PXfYb?Xf7apMNB%K+0C#Wj=W4+r&WK_oSvC85@M%KZ9-_lR zdRTk%$5`%NJ4GVu+WvC+fUeO&T;6YEMFv=0-p!Hr-6E?@z+tztw8k|qu!?-|Ed*nZ ze6*Zro=Y%~uYgW9=#kQtQEt?@@3=n{kp!Pu`O(iXx$(|s1P(B4IaxO$FS>)hB1o^C z16-P{O-A7b9hfm2FAlNC$PFHx@lors{R3BKSi8jo@nyG@A}hy`Wrc-xzIXhk^1%Su znjGm9u?{#vsjXh*MC`yjYTg!O$n&)q{c>6WtaI7`A4B^`!+pLP-R^=-I1YWZrJ@CYet54Eox#*Mj#K@-_3We z)ua`;{VE&3IZ4dpQII<77N196^~fh!0>3TfU;j1~QNQDl#4)5ss*2I)8s?g}5ZBu? zd+S?zTDBC^Le@4by;Z5NSt*CA$~8TLK4b6pNfWZo$1;L}ma*F;{T<|QL}nF>R)Yc9 zk6DKbF2{|G9UD7BUJf)Yc`o`BdYJ(r=I2*13h;tAth%Jau1ZH{eEHiGSk?cIuX8Fs zmz-*qEC+Eu^SA#@R=n`9JQTd*JoQ%eELOP{XG<)(d2$ZWd8n{nji} zUPa9B!1pZ6D3V8=n62aXrrOXLQ3&S&vHcigJR3i9Gk7H=B_6t8&2|Wr)>8$oyz6M$ z0U|*>zNu6r-Km7GxdEXops^Z!f287A{EWBA;ZUX8_4z|0(n-%;*GjxIvQiek6C!u0 z;_28WAqBs|EBgZ3o}-{BbUY~efMNlFBcBA?%Qbu5Lw%ZAMy1M&^46b2e);lJp6p$b zp$WFt>1B@zEe`ku2l!8|PaX_D_Ftp40eD%B1W`GC-$^Lyrl2H4gTCksNvp1_JUJxt z$Z7xf*DR=?MoqeRTV_CoZBiB`jJDVKL=UvQ0U)CJrq}-qze-7i)N^`?b1F3*?uOl; zgI6Qz*bMi~GI;U#ZsGGq{n_x&J2`yZH*5c1IY=8a_DuqfjtlPEkU50cBGNg|8Ap21 z;d5_HNt+)nvmD}4X)Q^Yj{f6N3g5V4?kTA@R0aj;IWY?FpI!Qd`TB@b*tcbv);_u$ z%^7wIExoZ6(PAy&x2C2Ppsq$<>67Z^w`d&Vay^b(=#ePLHQ!ZN={P2!+!$R?<0^U6 zX&Umv|I$~-%E^OIC!hPg8ienY4nLe(Ncb1e4B4{{$C+l8%ErG}^q+mj9RbAV@9u8X zzxHQ@k3~?vXS+7+55A0I_vxNz57QL&2?o=giHX7lS$Pf_`W2{BJIrD}oB$n<-ECG$ zF1=exj~+BAaOY1-Kf=V8A7&aVY1^sl1DS;73AQe944SO_^Ir!6XEuCf5I?sgk&Ep< z^oXmF2Jo`-pG-m<;6v{_1ry#feX*&%4~Ts!pKLH$%jx6^VC(U%r`;*BS9RTGi^WEj}ivg)Z3v82NM^hc<1Kq{^C- z9{2o>RfduNn~~W6|6ttz<^S0UXtnJF;QgAX&dtdWR(~dzv;T7^QFua5o`&uDAJ;## zokZKiX{$AJt6b_|2Y|RZGtc41e_(pv;*W=nE8at#c3lvV>`<7og9GbWXJm~Sp0W}9 zCbomz7%BKn@bTeF@<>U>feV6n+|OUWOFVrj%CSbg6mZLmGQs#voE`uM77DWmBI~NT z@gLu)i^3#}5|JBMjAs8}J^ll*68H&V9M2;9o_-d#zO42_RrX-V0rD&M=aojUFtY3e(%VJN%HoE$sYK95l(6TY z;8~L(enr`-Ozz`)AK-GgYlLoRbVA*^`iV{2-(Hs6r75PQf$w+zo5QZ(UW1jFTZtVo zkb&ters2Z%LVl7CY$m|)ygoz_JhhQ>DBvm9F|@POo6Zf1`SSu1{q*U=6cN{3pXX%DSv$PsKr2T?q!7 z1{#$RSFZMUr`sqrfU^z=4-;!XKDJ9Z>ZmotQ{Z8x1=-t3>J!MjaO<+!&eUYpEQ3J6 zOlQNq)Mxrc!4Atx?>3g5^2lHhSE+qLw z^O;Y{mni@ZI$^+@g@v_y4pIo!)QL0Krg{J{?+O!Y`zrTJVQkbqxdHNE=A;t&t;j$Xj7RuNS#9o09|&K%fxFa@wDIGIW+n@#W5 ztN=Vt|J(m|xoSaKelR0OxI>yeC{33p6zCE6i~fzM@RxSlZKTA<9j;mX0K`yRqh2t57=@x zmiXy_bZVQ37_DlI9Gvjye0*RBY~7rZ%SHiYH)Fr$`j{vSRlQFOrXm)Q%GX6sv>6xe zlV`$wEAc3aFpIGtV{!uBI!s~!;KB{5iZbHxv%luBAEdjr6DsUVby^rVZ+V z=K(t9U!s7$4IHaK{57EaZg#QoG zN`b-}@yW!@#4FeLGg&H{qHrVHJVm4FlZ(pBEjzD-ul{X|VJ^iFXqUTg{ofg$PnUM- zD{aU_w2UAAaCgda>RV;HGI}~iFxP%S|Es>myw?4iu+a%k_FL51J1~z z1wr(QSAZ&=iSaq2H1DbmzWyT<_Sjun^BnN4l5i5`**Rq}5Dh#}xBffpY4cw(^qgta z1?U)<+5{kiG#!MU;@hf__Y+cDLR!dcxVf>mNQWg1nRAfbm!()n4$wyaU+sN&Sd-b- z?>H7LGe$%ZMahVTVJIO3f`BACR-}!hfV2n*NDWAl5|U#hN>x#bQep!{dI=E-i5dt3 z0W_2Vfgm732qh38J^5aoQ#|K6=bn3?@7_PY`<(yaeOLCo*WPQdviI7*B4#txg6Bj zWLRK#?oru8=M#4>=V*@BdNph0JCqXMQZ|QGx4(~xP39&7Fo*pI4BERSzzqF}aMcG3 z%n%WciWx3)`DVz)xnn+z-V0Gne+Cc)EgOrRK;;wv2z>@JFcy*S-4vW^e#!H0MIX$$w`fdIJiJ8OzD+Qm~@*oD4(e8U2;!wMLTf{&&TAz#CW3vJ&%`Xgv4`|s5iaK9Vn5n+SAW@dtu ze7W)U)C{M#Y}xglv{L`UvKy~5Ao1Qse7-w-YQxr&Z28P=bu;@v1qHrVF8FIffhOIG z8uNd5H|(nQbTM%iIPB1)Ro_1g)cK_(@7Rr1o61*bFzl-`_iXy<=WANM zt5z#F-cnwj`Q+n`6L+fUn}6H<{jSa!NnyNv9OXAY;Gh&gc$TurvYuo~G?sXU?nC;8 zA(OFn5rZd(obq9$wx&xzATvrdCM1(xSfWThWq6tqxjP<_E#{ekpF>IRwIMHN3mw30 zj<<0F(VCgE5Fa^7WucO3yr_xVyW~>4_~^{EkLqj#cT#vmbWIi2+ zw8mTWE5BFl3m@Hu_DD=`CcU>8ll0>a+B()tGwCTUj5DM~Zz#R4lf;&}r*p3`KZ0nsu0E@vHo5T7m5Pvx-_`q4k7~*b8*OUscpx63y2yjH?qr zY<~fn9O4!k!247ouG;m2a}-7aVxl{(|K5DM`cqu9^S`Kq3s`Z*AEJu#$-(!e6w}-EX(jOn}JDI?N}dv?Hd_B zw8t>?)0?u8!P;w$fa#tKeZR}1sTNcALg|>t_{V0powln%eQCE(2D{&J!SK|X+IPbQFrf#;nateF`Lb8JK` z&3;dVJEO``a4eZMaj`X5K&YK!xUv#y5AK&3_JCrF3UayD;^Gx5`dBXeJ`K{OBj6@43?GOUz9`Ws#v8T)^bgQem0(1&9^Jhfgk;~QnTk}2;-ET z*Cg4S*3;{jAsL?@80zOdeVWBvo8Do%z7N^W14QIFbcI51&rS2?Tapx=Jzbh|~ z!~5G8wtqVg@7FCXEhQ{+nOi5xiq)0R%q?Gky#Cb9C8(rxrPdH0^%;2vlw1_jC~>t& zyGzMn+sl)YXI)|vQzk6I-QgI~MApx+40Z==UVbs1GL`4_(K%ooDko+16@i8jGZ2f> zq$piTCx`xN=;9gLafx+AIHs=;qtzhii&|cOj!WQ{Hor(tDS=Fv3?QOP;L0Q7QE}kR z>cTN5T`?dH@Ao&o0i@4ToY@N#ozyD-PM3^R8@}oQk1JnooBaxvZ)WvRhvL4MtMmyP z>@QL(g-5GJV(bZ+V=SaC2aYnzMiqtRI@G1>AIpC(B^hrR1+Y$vE-F_>P1~7>GVkLv z^01WCm-M~%1m{O-XO7smbXa#%hkmY7gWjtKer7wjZ)`kwVi>u_B}v_iRWR6`7o9%O zXDskc*B2j4elguObJ2lhC5rKn6>8k<(K^nE3b<0C!+rsL%Tk*1TcGl8e+z;|-xlN< zw8vvj`SGWOTX(Cn`?G@*O?BW9TLp0r9@Rn*IY288gxv~Y(uTs;iT zb!jkw46$@ONH_Mvb0sq?*1=PVefqz_+P;t@=RKuIpY61$Jc-y>kDP?=RL$UaC18fK z=vrtWh9pn3^K@8^U9eEl)~q+;^#7b>THzsYvU{Y8FogWPW_)#J`-;uLWF8`{8bl4t+opmup+Q*#7h%27Zd{&I_FT$w-TW6;Okj|nwtXFxpOk@W#_sQ)9ZUL+g0>v~s0c^n%482eKEWD#04YmHG%5*kU((^5 z&e*Us2xEbf@DK!)p_@9F;uhH4ck6tiQ$RD*g@=rP*~esW)`nW|$vgo)cTmb2U$=Xo zqvKX5i0y2W^DlPE;o!j5JoVYPL(druKzrdXds5=Lyw_D}S_mtU@Q; z#H(lFQqSkW?ZR|LmD8R~i@n`1nB-w`>$B&nVq5{!*cayiedrM6L%ovap=4^thDj)8LuM}lFr zDfUBRIHGUc(8-|Mt+v`Gj!tvQ;dyLdIXPR>QUWCnHu<|*0rA0P$BS8q=>aD>o5@u5 zV{E0_8z-M@@2Z4ChT7wO1oZg9sQ_2^TnGH}Puql<^9wffwR6{(RY&&Hed781$T;%k zNA7&B=ndk<;|diAWaZkSB|uu4W0Cx;l#}~?w1KZGlczEjUBp5tx=pdika}VE;Kfcd$Ko^P#h$_dYJLo{J_N~a9ck3WA-|Cf z?uMqRJCfMyiWvW4_KCqqX%7ZCi_Om$Uy^MLW3~O!BK5>zKX26Yd$?Q|?&+dG9x4{4 z`8GA?@(sQoh8n@^m%XJ|%ihwtjvx4c=Pez+5O$EQs%QnLPP|Ps6V(#VnNPGeX>L3} zhkiv&=dg5WQ{a*v0NTe54fdu6|R`72uMdqu<6@R8dZ?Wg# ztF*j*-8RTv2Snmxg4 zDa!DH9?PG3;++4>t7QDGH}Ei?SC81I^2u9VH#p>@E!^T4OA~KxfRGH`Lf@`F zmc8=plKJN=$Yd9fZbVt@O@pb61zacMelY2Ul5s$0AN=)%b?L6pKv;#ftQd=bR2p%Q zQwXcKWCD&J%Art3-Pbn{MJa09yhwxn+glfYVE`e@ti4I8gJlLM&|Ehe?;M>sa^|~4 zrSdZ@$t#0QXIIxnAimiwx3x3d8t8fzGxFs5Qr6Ogg?;sQz>AJO5~PFgh!-Pqj=x%d zJ7MX8-)Q73AZ)PpyD4jucgo9Tp9D7v#V0dd{5wvT2A-}aK`4~VnT^qP;`{6usx>65d?-l)4l zEp{Y&s}Yw*Oi!D&Hv00pL&y`vTNG?L^W=q>Z^}HW?^+=gw>Lr&$v%Nd3C21Tm7ww! zDHy}fc20b;t|;0+R%A6BA3w;-HT9pH4w_`5irzO_cedKc&T_eIgL*3(vSPoc<7Gz= z?My3Op8bx7MwjVH4{dPz6vffQ>v_CSur3hzO^g8%(_$ntgS|(Z8I*#3koADs?8{g$ zRZ$8ncdV;rHaG2&ls?Gly@WW=N)!T~&|g2hPO;B*)N`-jSY*YcDqx`IY_L}rN^;ByCZjlF?5r-&bL74N``cD4-mFv69HX_;)r}8b=T31)BjH4z*ayO_+ zW=vtp{a%;83{emVMtG*!N?1(j^^dd^jnSdKb-NGpKH*3C8gYlx6E(Y?>7SeHZl<9Z zf_K4%-D*EZkVJGWOkl!OS*0i$$=P&187ndst1Bhgbh~~CNg<0< zjnW8gOjPIBU_faGF=SqkFcNDR{X6o&VwH><$F9Vl1ug+QVmopqv%~NV@`n%pvVGW% z6F>T)7oLQER<5HtRvZ)zyzcjtlJ}PRTa<>6=h*=1)!?Mp50Uc2V%xBWPtM#CniZ|8i!kS zG0Gk>KEY2vZaY=@qbFW~Un^yLg?-@y4*! zjjjz`d*D*G+Ks+S%+8(?TW0pirf>PNEH%(Ee+IU;bUOmi)_C-}~* zV>1=4uhsc8ubuSwEk;cfC>u?Oq^vTujFyLtf0C1vQzn^lJrR;V5^4M-WcGGo4Mh5> zdI(G4ns!-D2A#-Iue>r~v=w2jvjF};fwnU#XrvH8YF6(-_NsfkFu_OOp(SZ)al)4$ zO7SO`Zj`#A?S;*jNmN?O?Ro?yo}mD5%-YlrpA9vQUW*_t%#3Vur!lfU&%SQAG%p7v zBTb1lHhJ#@@8l0RvDxZP?a#+PV7*{J5PB9_HR>N&5F0ZS4i$Ih%)~k!Fk4g2AX#Ln z22Uk8zy|8}g2@YvejGdm`S}Q+pZgxGO+yK^4eVf3MX zYQn}J@GwdCT*mWi({p;3p8oWY<9N7fZ*)vKuFYlsX-roles$-F=zMihf721U&MJnu<5PGq&udp_n%MQKf_XnW`S+Wo{_ zTuxcHW9H2yZ@Mt}M0ec!VRjt&M<-`kvYGLZU2d3&^~l~>K8}@I0u;x(5h_UAdQ+Ej zcm63sCN8!_OVyx6+f-5L>;2xRVNxGw{-pStql;BVf0*QTsKoE2ww1d}MW;VghmUyao<9SV+FHZ9#BKTSu^BsdCTyGzPWBe@>P!_UoSi;Xdlp?o zSi3pYBuLJdHH~pM&IUli@?WK&lqgA~K?4_M4_Qn7fvnKebnHqu80l9I)dIcHROVUV z_Ff+N5Pi3WETQPwWODeP`flcNvhcaV+=x-`Lg{Mw4|f>!8=2OSH-n(WKTtpue89gk8}{y?Zk0cFzWAGR7)EI z<3pS`&w^w%9}h&$dp>U8p_9*LTgyc}9J*VMa9OB?^bioeAVjd4qJM*HipDnYkVFBt zP3nO+`Tpy!$g4v?vGu;%&A*1ySJ!X;GCfW3GYVEn7E9q^zk`*+*#wRDOWgD(xm>W- z#LKt+VD7=Z{QRZfd)D6cq7jO2iST!S8`O$(agznD+)?@~_t=U144izWxZA^d36fId z9xDILz#YE6rpvKZetb8_2yaF*_7(CD6C$}K0S#F(oVU49*VOGUg~7({x8F8{VNZ;G zGlQ#Nrg=h*0s&leST59J_FxGVlJv;fU%INmb&91dWt&-}sxP=}h1(}RgC^)UXD4y#&2rR#6n8b;FU>bIius2Ny z++I{)jl$7HURyrmZNRGZivF{Heco5l~a*X%EJ!r(HJ| z2J6jx)|S}AYFH>-4=Q zqrfYJkx@=i9q_(2M0Sr4jHKX4h768VZ*GvuhOyS;YKZGS54Q-gw_ODyo^A?1d?I&N zf2ZFeI=0mfc92piq2fRYbg=*n1&bxrw5YqF6C%`s!k&1TvF}6{naGtK;oFCm%H*Mr z#Q^b2msya2yAMnT76(DI4n9!3kYzFp>U><=ifw8N`}vQU;Mn&|tV>(|a{TpmALYrl zRZ9bbrPZJSAV5O6O5cyrk^!)a_G)yjnJ>e`5#lb6-pzUFN_N_A6wUk8Z`5&c@YW-v zaWMl2oH;NbQp!lm;oawqPI(_s-LVakS`^ZNnhtcjPfOlrlvf=!*ngb9H{(9VnFUDw zNbB8{6db?ZqBJ6F=anj@khb{(`wYq+mUo)v;}zvm0H*)L)Nmlbrm7(;dgOL46ss8k zIh8rqt1|}SYuo1x{BVn~JI%ZzA`7(RikmgP0RZ(k=2Ue~U5&4ts=OkyUP{AARoedK z9LG1PyPp~klq;)h2qL5xW98lMz!sOD2Ckz~bmr$?F@4dH| zuwrEkV$&c1kdT7AiE-}j-tbJsA2;>VjQ(UgcQa-@V`_=v_4XQ81Ip*fND=xniJ;W7 zLRk79n+6F^4sX>b-cJQ=)P!G-e*^uIQND5Bdu(ewjP%Obw-Y5KFmO=sPR&amY6`;KpD9XCG^PvF&j{?$6o568edAG zK*2DD6ak2isjn!M7ubrmet59Q9VYcR0?R#z-?`Xth0tB+hmo2;cVOqXCadW=f9O?$ z<4sHNhlgRl@Q2+82f;A%0%4r$2iQ_F7bX17+tR5mdRoLwER9SDjmn;OU=d#oz%-2p z+CXhBd|(0?5(Q)iWIs6~=iNE7J+Qpxz7EiPoK((xzx$Mc71k&7bQ1BZ99%io9f-Ri zSMw(;z8?RT>R#2US+`dD>0uK};vQBo%tmzm3Va-v5yr)Yz)z_>5FunD(S zw5#b$5+Zv$++BKT;Wqefaw;bf?`3TEMDeH4-eD}32%xE0)7wmkcEGQ`{%H%?FIlz~ z%&9!0S1*gBzOXvcXg@lcURGZEC44l+GyyL4^c+_TzAEAG6W^Cz#8ZDSTLf z%%u77N~K2oedwRizjeZ9AGe4XxkpfDTj5uQ!hKxRwb$2xHiE^Ult%NVkMVUL#He80 z{y;||Ki$56#HD9Q1)gpZ&3m#5u|Tu8wEti@SNXIw;k=RGjr^Qb_{K%9Y5vo>SzkPg zaeK}IJ*okn8;il2h5JhPOog9j*2=X2`xV-vlYgUl=!5hu*SgSSy_5SQa;|d-(g0bi zE*YW?1PO12PIfs^d!cRi1hQ~s-q4#sD`yS8|>rZ8YMO2$7Peb=XCNsZ$CItQ~vw}wjdv` z44;14QIfzrdJ#29VAAa0(K@cw@sUrf$;GtPAHlarf6(;8|8DCuF`9-oGacCEfgXDR zeBLl^d?5vi@;)G2D464aShAWp`|x1(9+botC}jLT6#~I@SaJLd*#0Poo3=bk<+IeJEPX-XQ3{WmKL^6Zi25AV|jzKgFAZaAHy1h zFthfjc)j7LSk3jz6=-fz)IF0@Uncgca)~k`*Pt$8)czoBGI;8& z<}K#Jboh9}Vpypfy9Z-@Owdb=*NPJe`#z3-_INMiW456eo?DFOpJpN}(3u@Mansw_ zTT9IlBS}fTbO5rjD2Jo)Fy$1@KjGA_hz$LCN^wHYO6^jc$6YLap0K0QOc}2P|gR3Oev$lNYmfCOt^a zm0|&C_Ta(?p-$gzK#NwQge)cSEs?g}K6&Z+5$%f6ad!}Wig$pb2WCfvJM-#RAIsqb zO!jFs0nW=A7V35A@H?$M_2*=?#^npZUdRc1AViST1&iS&pfo-7#q>p1jIAj26dk)% z!#x``$ZX5m30JA#b4_3Fl!d8OgI-^A69nuQK*2L-($>zUPjW}KlSI8I3Vmm#eRCZvIRB3DylDTNN`n!#(>@>NOfO9x zD52~+q7TmLn)mPQh5$z0+fmpW-k~OQR#ZQU)+?cSQWLNa-Z0b=YnYoVfB4*7I1{pm zA~w_a@*41k!fh?5y9{Y#R8=V019+VT1)EqWzZ}Qk-EEo%s3RO`y0g1L&$SwG`OkZH zCq6iRcg;s}u}=*@*~kvG`*^RP$RUOX3_>5D@#@@!^!1`E9rw}OE62QkFPMf{wT=k{ zh?k{(cS?a>3)3h!s2!k61TN-~rp#P=XYJbfq_ z9h#0h07P71RpwFU({M#KIw^+h5f^+9G~S4czCy=pc!jhwhaj}6I;3Ws1tnu1zu|mlBDpXiH=la?1c5`Xn;{v|>t@L~5Es+_M(tvGm~3f$?G$YG!xiAI z#SBgZt|KiRsq9C~)G}s3pxa?eu9c^^3$Tq1BX4EW3GgfnfQv1&odqFlb>!<(ut}05 z7=@4bQkvj?I@?lbih|(EhKWFU1s?S%BXOBXm2wHy8;D!jGjc=nhaZ`3k5u@>BeX>% zxrH)412U!IPgimUSdq9m{qS7QuY=%f4izv%bGbb+t>S4Z4bif`sYyaT2%eN1A}BKF zZ3i!g9%!Bc5i>717_>abf&3a#!n1Usfi_QP68s>PL!Fy(=!n9=!)eJl5MFm4FY=c; zg165;pGUoJnF0ApU7g8#Z1CgsQ*IP}WOOD<2-Njc6FhD8_E;E4i2Oct=H!N)v>wS3 zK=OdBUU;exm*_=)$TArsJp$q5mmY;K?ynrhH6+Xe{~2B9a{&S9zN4f@c;Jo@Nb;`z1Ohm<@OaGhECJThTy;R zlK&OG>fSdSIEgvxd8_}Niu5m;T<-sqfK}0N-3UhSQ2(aWf3)(SLI3CS@Sj2dr;G4E zlKwXx@$LHhpQ>JtC@;l+_uY5qR!0w?1+>)vvDC{UANQ!7n~OTH3bgW_)iJxHCBI#` F_FvDQ;B5c^ literal 0 HcmV?d00001 diff --git a/packages/protocol/docs/multihop/L2_to_L2.png b/packages/protocol/docs/multihop/L2_to_L2.png new file mode 100644 index 0000000000000000000000000000000000000000..f204ec135f33656dca2899a4fc9b3d3f490d3864 GIT binary patch literal 591351 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 z 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

      I&i7%;e{>y*cIUNxYd4iHJG(PAJlSY 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�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%0A9gc7V+ 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ʙM4O9t;<(G7No$txGObU3 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

      (knZb{dU20n)LdbyMHHj#qY7%LPs) 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 E0rz%5g#Z8m literal 0 HcmV?d00001 diff --git a/packages/protocol/docs/multihop_bridging_deployment.md b/packages/protocol/docs/multihop_bridging_deployment.md new file mode 100644 index 0000000000..be2832d8cf --- /dev/null +++ b/packages/protocol/docs/multihop_bridging_deployment.md @@ -0,0 +1,99 @@ +# Deployment for Multi-Hop Briding + +We expect that bridging acorss multiple layers are supported natively by Taiko. I'd like to explain how this is done. + +First of all, we need to ensures some contracts are shared by multiple Taiko deployments. For example, if we deploy two layer 2s, L2A and L2B, if we would like users to deposit Ether to L2A, then bridge Ether from L2A directly to L2B, then withdraw the Ether on L1, then the contract that holds Ether must be shared by L2A and L2B. + +## Shared contracts + +On L2 or any laer, then following contracts shall be deployed as sigletonsshared by multiple TaikoL1 deployments. + +- SignalService +- Bridge +- and all token vaults e.g., ERC20Vault +- An AddressManager used by the above contracts. + +There are some inter-dependency among these shared contracts. Specificly + +- Bridge.sol depends on SignalService; +- Token vaults depend on Bridge.sol; + +These 1-to-1 dependency relations are acheived by AddressResolver with a name-based address resolution (lookup). + +### SignalService + +SignalService also uses AuthorizableContract to authorize multiple TaikoL1 and TaikoL2 contracts deployed **on each chain** that is part of the path of multi-hop bridging. + +For each TaikoL1/TaikoL2 contractswe need to perform: + +```solidity +// 1 is Ethereum's chainID +SignalService(ss).authorize(address(TaikoL1A), 1); +SignalService(ss).authorize(address(TaikoL1B), 1); + +// 10001 is the L2A's chainId +SignalService(ss).authorize(address(TaikoL2A, 10001); + +// 10002 is the L2B's chainId +SignalService(ss).authorize(address(TaikoL2B, 10002); +... +``` + +The label **must be** the id of the chain where the smart contract has been deployed to. + +To guarantee this design works, each pre-deployed contract must have a unique address on L2 and L3 chains, incorporating the chain ID into the address (as a prefix). + +### Bridge + +Bridge depends on a local SignalService .Therefore, we need to registered the service as: + +```solidity +addManager.setAddress(block.chainId, "signal_service", localSignalService); +``` + +Bridge also need to know each and every conterparty bridge deployed **on each chain** that is part of the path of multi-hop bridging. + +```solidity +addManager.setAddress(remoteChainId1, "bridge", remoteBridge1); +addManager.setAddress(remoteChainId2, "bridge", remoteBridge2); +... +``` + +### ERC20Vault + +ERC20Vault (and other token vaults) depends on a local Bridge, you must have: + +```solidity +addressManager.setAddress(block.chainId, "bridge", localBridge) +``` + +Similiar with Bridge, ERC20Vault also needs to know their conterpart vaults **on each chain** that is part of the path of multi-hop bridging. Therefore, we must perform: + +```solidity +addressManager.setAddress(remoteChainId1, "erc20_vault", remoteERC20Vault1); +addressManager.setAddress(remoteChainId2, "erc20_vault", remoteERC20Vault2); +... + +``` + +### Dedicated AddressManager + +A dedicated AddressManager should be deployed on each chain to support only these shared contracts. This AddressManager shall not be used by the TaikoL1 deployments. + +## Bridging + +### L1 to L2 + +![L1_to_L2](./multihop/L1_to_L2.png "L1 to L2") + +### L2 to L1 + +![L2_to_L1](./multihop/L2_to_L1.png "L2 to L1") + +### L2 to L2 + +![L2_to_L2](./multihop/L2_to_L2.png "L2 to L2") + +### L2 to L3 on another L2 + +![L2A_to_L3](./multihop/L2A_to_L3.png "L2A to L3") diff --git a/packages/protocol/genesis/GenerateGenesis.g.sol b/packages/protocol/genesis/GenerateGenesis.g.sol index a80c63e494..b10391d2b5 100644 --- a/packages/protocol/genesis/GenerateGenesis.g.sol +++ b/packages/protocol/genesis/GenerateGenesis.g.sol @@ -14,7 +14,6 @@ import { Bridge } from "../contracts/bridge/Bridge.sol"; import { ERC1155Vault } from "../contracts/tokenvault/ERC1155Vault.sol"; import { ERC20Vault } from "../contracts/tokenvault/ERC20Vault.sol"; import { ERC721Vault } from "../contracts/tokenvault/ERC721Vault.sol"; -import { EtherVault } from "../contracts/bridge/EtherVault.sol"; import { IBridge } from "../contracts/bridge/IBridge.sol"; import { RegularERC20 } from "../contracts/test/erc20/RegularERC20.sol"; import { SignalService } from "../contracts/signal/SignalService.sol"; @@ -25,7 +24,7 @@ contract TestGenerateGenesis is Test, AddressResolver { using stdJson for string; string private configJSON = vm.readFile( - string.concat(vm.projectRoot(), "/genesis/test_config.json") + string.concat(vm.projectRoot(), "/deployments/genesis_config.json") ); string private genesisAllocJSON = vm.readFile( string.concat(vm.projectRoot(), "/deployments/genesis_alloc.json") @@ -33,40 +32,51 @@ contract TestGenerateGenesis is Test, AddressResolver { address private owner = configJSON.readAddress(".contractOwner"); address private admin = configJSON.readAddress(".contractAdmin"); - // uint32 public constant BLOCK_GAS_LIMIT = 30_000_000; - - function testContractDeployment() public { + function testSingletonContractDeployment() public { assertEq(block.chainid, 167); - checkDeployedCode("ProxiedTaikoL2"); - checkDeployedCode("ProxiedERC20Vault"); - checkDeployedCode("ProxiedERC721Vault"); - checkDeployedCode("ProxiedERC1155Vault"); - checkDeployedCode("ProxiedEtherVault"); - checkDeployedCode("ProxiedBridge"); - checkDeployedCode("RegularERC20"); + // check bytecode + checkDeployedCode("ProxiedSingletonERC20Vault"); + checkDeployedCode("ProxiedSingletonERC721Vault"); + checkDeployedCode("ProxiedSingletonERC1155Vault"); + checkDeployedCode("ProxiedSingletonBridge"); + checkDeployedCode("ProxiedSingletonSignalService"); + checkDeployedCode("ProxiedSingletonAddressManagerForSingletons"); + checkDeployedCode("ProxiedBridgedERC20"); + checkDeployedCode("ProxiedBridgedERC721"); + checkDeployedCode("ProxiedBridgedERC1155"); + + // check proxy implementations + checkProxyImplementation("SingletonERC20VaultProxy", "ProxiedSingletonERC20Vault"); + checkProxyImplementation("SingletonERC721VaultProxy", "ProxiedSingletonERC721Vault"); + checkProxyImplementation("SingletonERC1155VaultProxy", "ProxiedSingletonERC1155Vault"); + checkProxyImplementation("SingletonBridgeProxy", "ProxiedSingletonBridge"); + checkProxyImplementation("SingletonSignalServiceProxy", "ProxiedSingletonSignalService"); + checkProxyImplementation( + "SingletonAddressManagerForSingletonsProxy", "ProxiedSingletonAddressManagerForSingletons" + ); + + // check proxies + checkDeployedCode("SingletonERC20VaultProxy"); + checkDeployedCode("SingletonERC721VaultProxy"); + checkDeployedCode("SingletonERC1155VaultProxy"); + checkDeployedCode("SingletonBridgeProxy"); + checkDeployedCode("SingletonSignalServiceProxy"); + checkDeployedCode("SingletonAddressManagerForSingletonsProxy"); + } + + function testNonSingletonContractDeployment() public { + // check bytecode + checkDeployedCode("ProxiedSingletonTaikoL2"); checkDeployedCode("ProxiedAddressManager"); - checkDeployedCode("ProxiedSignalService"); // check proxy implementations - checkProxyImplementation("TaikoL2Proxy", "ProxiedTaikoL2"); - checkProxyImplementation("ERC20VaultProxy", "ProxiedERC20Vault"); - checkProxyImplementation("ERC721VaultProxy", "ProxiedERC721Vault"); - checkProxyImplementation("ERC1155VaultProxy", "ProxiedERC1155Vault"); - checkProxyImplementation("EtherVaultProxy", "ProxiedEtherVault"); - checkProxyImplementation("BridgeProxy", "ProxiedBridge"); + checkProxyImplementation("SingletonTaikoL2Proxy", "ProxiedSingletonTaikoL2"); checkProxyImplementation("AddressManagerProxy", "ProxiedAddressManager"); - checkProxyImplementation("SignalServiceProxy", "ProxiedSignalService"); // check proxies - checkDeployedCode("TaikoL2Proxy"); - checkDeployedCode("ERC20VaultProxy"); - checkDeployedCode("ERC721VaultProxy"); - checkDeployedCode("ERC1155VaultProxy"); - checkDeployedCode("EtherVaultProxy"); - checkDeployedCode("BridgeProxy"); + checkDeployedCode("SingletonTaikoL2Proxy"); checkDeployedCode("AddressManagerProxy"); - checkDeployedCode("SignalServiceProxy"); } function testAddressManager() public { @@ -75,14 +85,9 @@ contract TestGenerateGenesis is Test, AddressResolver { assertEq(owner, addressManager.owner()); - checkSavedAddress(addressManager, "BridgeProxy", "bridge"); - checkSavedAddress(addressManager, "ERC20VaultProxy", "erc20_vault"); - checkSavedAddress(addressManager, "ERC721VaultProxy", "erc721_vault"); - checkSavedAddress(addressManager, "ERC1155VaultProxy", "erc1155_vault"); - checkSavedAddress(addressManager, "EtherVaultProxy", "ether_vault"); - checkSavedAddress(addressManager, "TaikoL2Proxy", "taiko"); + checkSavedAddress(addressManager, "SingletonTaikoL2Proxy", "taiko"); checkSavedAddress( - addressManager, "SignalServiceProxy", "signal_service" + addressManager, "SingletonSignalServiceProxy", "signal_service" ); TransparentUpgradeableProxy proxy = TransparentUpgradeableProxy( @@ -99,8 +104,36 @@ contract TestGenerateGenesis is Test, AddressResolver { vm.stopPrank(); } + function testSingletonAddressManagerForSingletons() public { + AddressManager addressManager = + AddressManager(getPredeployedContractAddress("SingletonAddressManagerForSingletonsProxy")); + + assertEq(owner, addressManager.owner()); + + checkSavedAddress(addressManager, "SingletonBridgeProxy", "bridge"); + checkSavedAddress(addressManager, "SingletonERC20VaultProxy", "erc20_vault"); + checkSavedAddress(addressManager, "SingletonERC721VaultProxy", "erc721_vault"); + checkSavedAddress(addressManager, "SingletonERC1155VaultProxy", "erc1155_vault"); + checkSavedAddress( + addressManager, "SingletonSignalServiceProxy", "signal_service" + ); + + TransparentUpgradeableProxy proxy = TransparentUpgradeableProxy( + payable(getPredeployedContractAddress("SingletonAddressManagerForSingletonsProxy")) + ); + + AddressManager newAddressManager = new AddressManager(); + + vm.startPrank(admin); + + proxy.upgradeTo(address(newAddressManager)); + + assertEq(proxy.implementation(), address(newAddressManager)); + vm.stopPrank(); + } + function testTaikoL2() public { - TaikoL2 taikoL2 = TaikoL2(getPredeployedContractAddress("TaikoL2Proxy")); + TaikoL2 taikoL2 = TaikoL2(getPredeployedContractAddress("SingletonTaikoL2Proxy")); vm.startPrank(taikoL2.GOLDEN_TOUCH_ADDRESS()); for (uint32 i = 0; i < 300; ++i) { @@ -129,7 +162,7 @@ contract TestGenerateGenesis is Test, AddressResolver { vm.startPrank(admin); TransparentUpgradeableProxy proxy = TransparentUpgradeableProxy( - payable(getPredeployedContractAddress("TaikoL2Proxy")) + payable(getPredeployedContractAddress("SingletonTaikoL2Proxy")) ); TaikoL2 newTaikoL2 = new TaikoL2(); @@ -140,9 +173,9 @@ contract TestGenerateGenesis is Test, AddressResolver { vm.stopPrank(); } - function testBridge() public { + function testSingletonBridge() public { address payable bridgeAddress = - payable(getPredeployedContractAddress("BridgeProxy")); + payable(getPredeployedContractAddress("SingletonBridgeProxy")); Bridge bridge = Bridge(bridgeAddress); assertEq(owner, bridge.owner()); @@ -154,7 +187,7 @@ contract TestGenerateGenesis is Test, AddressResolver { from: address(0), srcChainId: 1, destChainId: 167, - user: address(0), + owner: address(0), to: address(0), refundTo: address(0), value: 0, @@ -179,7 +212,7 @@ contract TestGenerateGenesis is Test, AddressResolver { from: address(0), srcChainId: 1, destChainId: 167, - user: address(0), + owner: address(0), to: address(0), refundTo: address(0), value: 0, @@ -198,7 +231,7 @@ contract TestGenerateGenesis is Test, AddressResolver { vm.startPrank(admin); TransparentUpgradeableProxy proxy = TransparentUpgradeableProxy( - payable(getPredeployedContractAddress("BridgeProxy")) + payable(getPredeployedContractAddress("SingletonBridgeProxy")) ); Bridge newBridge = new Bridge(); @@ -209,43 +242,15 @@ contract TestGenerateGenesis is Test, AddressResolver { vm.stopPrank(); } - function testEtherVault() public { - address payable etherVaultAddress = - payable(getPredeployedContractAddress("EtherVaultProxy")); - EtherVault etherVault = EtherVault(etherVaultAddress); - - assertEq(owner, etherVault.owner()); - assertEq( - etherVault.isAuthorized( - getPredeployedContractAddress("BridgeProxy") - ), - true - ); - assertEq(etherVault.isAuthorized(etherVault.owner()), false); - - vm.startPrank(admin); - - TransparentUpgradeableProxy proxy = TransparentUpgradeableProxy( - payable(getPredeployedContractAddress("EtherVaultProxy")) - ); - - EtherVault newEtherVault = new EtherVault(); - - proxy.upgradeTo(address(newEtherVault)); - - assertEq(proxy.implementation(), address(newEtherVault)); - vm.stopPrank(); - } - - function testERC20Vault() public { + function testSingletonERC20Vault() public { address erc20VaultAddress = - getPredeployedContractAddress("ERC20VaultProxy"); - address bridgeAddress = getPredeployedContractAddress("BridgeProxy"); + getPredeployedContractAddress("SingletonERC20VaultProxy"); + address bridgeAddress = getPredeployedContractAddress("SingletonBridgeProxy"); ERC20Vault erc20Vault = ERC20Vault(erc20VaultAddress); AddressManager addressManager = - AddressManager(getPredeployedContractAddress("AddressManagerProxy")); + AddressManager(getPredeployedContractAddress("SingletonAddressManagerForSingletonsProxy")); assertEq(owner, erc20Vault.owner()); @@ -257,7 +262,7 @@ contract TestGenerateGenesis is Test, AddressResolver { vm.startPrank(admin); TransparentUpgradeableProxy proxy = TransparentUpgradeableProxy( - payable(getPredeployedContractAddress("ERC20VaultProxy")) + payable(getPredeployedContractAddress("SingletonERC20VaultProxy")) ); ERC20Vault newERC20Vault = new ERC20Vault(); @@ -268,14 +273,14 @@ contract TestGenerateGenesis is Test, AddressResolver { vm.stopPrank(); } - function testERC721Vault() public { + function testSingletonERC721Vault() public { address erc721VaultAddress = - getPredeployedContractAddress("ERC721VaultProxy"); - address bridgeAddress = getPredeployedContractAddress("BridgeProxy"); + getPredeployedContractAddress("SingletonERC721VaultProxy"); + address bridgeAddress = getPredeployedContractAddress("SingletonBridgeProxy"); ERC721Vault erc721Vault = ERC721Vault(erc721VaultAddress); AddressManager addressManager = - AddressManager(getPredeployedContractAddress("AddressManagerProxy")); + AddressManager(getPredeployedContractAddress("SingletonAddressManagerForSingletonsProxy")); assertEq(owner, erc721Vault.owner()); @@ -287,7 +292,7 @@ contract TestGenerateGenesis is Test, AddressResolver { vm.startPrank(admin); TransparentUpgradeableProxy proxy = TransparentUpgradeableProxy( - payable(getPredeployedContractAddress("ERC721VaultProxy")) + payable(getPredeployedContractAddress("SingletonERC721VaultProxy")) ); ERC721Vault newERC721Vault = new ERC721Vault(); @@ -298,14 +303,14 @@ contract TestGenerateGenesis is Test, AddressResolver { vm.stopPrank(); } - function testERC1155Vault() public { + function testSingletonERC1155Vault() public { address erc1155VaultAddress = - getPredeployedContractAddress("ERC1155VaultProxy"); - address bridgeAddress = getPredeployedContractAddress("BridgeProxy"); + getPredeployedContractAddress("SingletonERC1155VaultProxy"); + address bridgeAddress = getPredeployedContractAddress("SingletonBridgeProxy"); ERC1155Vault erc1155Vault = ERC1155Vault(erc1155VaultAddress); AddressManager addressManager = - AddressManager(getPredeployedContractAddress("AddressManagerProxy")); + AddressManager(getPredeployedContractAddress("SingletonAddressManagerForSingletonsProxy")); assertEq(owner, erc1155Vault.owner()); @@ -317,7 +322,7 @@ contract TestGenerateGenesis is Test, AddressResolver { vm.startPrank(admin); TransparentUpgradeableProxy proxy = TransparentUpgradeableProxy( - payable(getPredeployedContractAddress("ERC1155VaultProxy")) + payable(getPredeployedContractAddress("SingletonERC1155VaultProxy")) ); ERC1155Vault newERC1155Vault = new ERC1155Vault(); @@ -328,18 +333,20 @@ contract TestGenerateGenesis is Test, AddressResolver { vm.stopPrank(); } - function testSignalService() public { + function testSingletonSignalService() public { SignalService signalService = - SignalService(getPredeployedContractAddress("SignalServiceProxy")); + SignalService(getPredeployedContractAddress("SingletonSignalServiceProxy")); assertEq(owner, signalService.owner()); signalService.sendSignal(keccak256(abi.encodePacked(block.prevrandao))); + assertEq(true, signalService.isAuthorizedAs(getPredeployedContractAddress("SingletonTaikoL2Proxy"), bytes32((block.chainid)))); + vm.startPrank(admin); TransparentUpgradeableProxy proxy = TransparentUpgradeableProxy( - payable(getPredeployedContractAddress("SignalServiceProxy")) + payable(getPredeployedContractAddress("SingletonSignalServiceProxy")) ); SignalService newSignalService = new SignalService(); @@ -405,7 +412,7 @@ contract TestGenerateGenesis is Test, AddressResolver { { assertEq( getPredeployedContractAddress(contractName), - addressManager.getAddress(block.chainid, name) + addressManager.getAddress(uint64(block.chainid), name) ); } } diff --git a/packages/protocol/genesis/generate_genesis.test.sh b/packages/protocol/genesis/generate_genesis.test.sh index 67af651e90..7a239d5569 100755 --- a/packages/protocol/genesis/generate_genesis.test.sh +++ b/packages/protocol/genesis/generate_genesis.test.sh @@ -51,7 +51,7 @@ echo "Starting generate_genesis tests..." rm -rf out && pnpm compile # run the task -pnpm run generate:genesis $DIR/test_config.json +pnpm run generate:genesis $DIR/test_config.js # generate complete genesis json cat $DIR/../deployments/genesis_alloc.json >> $GENESIS_JSON diff --git a/packages/protocol/genesis/test_config.js b/packages/protocol/genesis/test_config.js new file mode 100644 index 0000000000..3bce69b791 --- /dev/null +++ b/packages/protocol/genesis/test_config.js @@ -0,0 +1,128 @@ +"use strict"; +const ADDRESS_LENGTH = 40; + +module.exports = { + contractOwner: "0xf39Fd6e51aad88F6F4ce6aB8827279cffFb92266", + contractAdmin: "0x70997970C51812dc3A010C7d01b50e0d17dc79C8", + chainId: 167, + seedAccounts: [ + { + "0xf39Fd6e51aad88F6F4ce6aB8827279cffFb92266": 1024, + }, + { + "0x70997970C51812dc3A010C7d01b50e0d17dc79C8": 1024, + }, + { + "0x3C44CdDdB6a900fa2b585dd299e03d12FA4293BC": 1024, + }, + { + "0x90F79bf6EB2c4f870365E785982E1f101E93b906": 1024, + }, + { + "0x15d34AAf54267DB7D7c367839AAf71A00a2C6A65": 1024, + }, + { + "0x9965507D1a55bcC2695C58ba16FB37d819B0A4dc": 1024, + }, + { + "0x976EA74026E726554dB657fA54763abd0C3a0aa9": 1024, + }, + { + "0x14dC79964da2C08b23698B3D3cc7Ca32193d9955": 1024, + }, + { + "0x23618e81E3f5cdF7f54C3d65f7FBc0aBf5B21E8f": 1024, + }, + { + "0xa0Ee7A142d267C1f36714E4a8F75612F20a79720": 1024, + }, + { + "0xBcd4042DE499D14e55001CcbB24a551F3b954096": 1024, + }, + { + "0x71bE63f3384f5fb98995898A86B02Fb2426c5788": 1024, + }, + { + "0xFABB0ac9d68B0B445fB7357272Ff202C5651694a": 1024, + }, + { + "0x1CBd3b2770909D4e10f157cABC84C7264073C9Ec": 1024, + }, + { + "0xdF3e18d64BC6A983f673Ab319CCaE4f1a57C7097": 1024, + }, + { + "0xcd3B766CCDd6AE721141F452C550Ca635964ce71": 1024, + }, + { + "0x2546BcD3c84621e976D8185a91A922aE77ECEc30": 1024, + }, + { + "0xbDA5747bFD65F08deb54cb465eB87D40e51B197E": 1024, + }, + { + "0xdD2FD4581271e230360230F9337D5c0430Bf44C0": 1024, + }, + { + "0x8626f6940E2eb28930eFb4CeF49B2d1F2C9C1199": 1024, + }, + { + "0x7D86687F980A56b832e9378952B738b614A99dc6": 1024, + }, + { + "0x11e8F3eA3C6FcF12EcfF2722d75CEFC539c51a1C": 1024, + }, + { + "0x9eAF5590f2c84912A08de97FA28d0529361Deb9E": 1024, + }, + { + "0x1003ff39d25F2Ab16dBCc18EcE05a9B6154f65F4": 1024, + }, + ], + get contractAddresses() { + // ============ Implementations ============ + // Singletons + return { + ProxiedSingletonBridge: getConstantAddress(`0${this.chainId}`, 1), + ProxiedSingletonERC20Vault: getConstantAddress(`0${this.chainId}`, 2), + ProxiedSingletonERC721Vault: getConstantAddress(`0${this.chainId}`, 3), + ProxiedSingletonERC1155Vault: getConstantAddress(`0${this.chainId}`, 4), + ProxiedSingletonSignalService: getConstantAddress(`0${this.chainId}`, 5), + ProxiedSingletonAddressManagerForSingletons: getConstantAddress( + `0${this.chainId}`, + 6, + ), + // Non-singletons + ProxiedSingletonTaikoL2: getConstantAddress(`0${this.chainId}`, 10001), + ProxiedAddressManager: getConstantAddress(`0${this.chainId}`, 10002), + ProxiedBridgedERC20: getConstantAddress(`0${this.chainId}`, 10096), + ProxiedBridgedERC721: getConstantAddress(`0${this.chainId}`, 10097), + ProxiedBridgedERC1155: getConstantAddress(`0${this.chainId}`, 10098), + RegularERC20: getConstantAddress(`0${this.chainId}`, 10099), + // ============ Proxies ============ + // Singletons + SingletonBridgeProxy: getConstantAddress(this.chainId, 1), + SingletonERC20VaultProxy: getConstantAddress(this.chainId, 2), + SingletonERC721VaultProxy: getConstantAddress(this.chainId, 3), + SingletonERC1155VaultProxy: getConstantAddress(this.chainId, 4), + SingletonSignalServiceProxy: getConstantAddress(this.chainId, 5), + SingletonAddressManagerForSingletonsProxy: getConstantAddress( + this.chainId, + 6, + ), + // Non-singletons + SingletonTaikoL2Proxy: getConstantAddress(this.chainId, 10001), + AddressManagerProxy: getConstantAddress(this.chainId, 10002), + }; + }, + param1559: { + gasExcess: 1, + }, + predeployERC20: true, +}; + +function getConstantAddress(prefix, suffix) { + return `0x${prefix}${"0".repeat( + ADDRESS_LENGTH - String(prefix).length - String(suffix).length, + )}${suffix}`; +} diff --git a/packages/protocol/genesis/test_config.json b/packages/protocol/genesis/test_config.json deleted file mode 100644 index e736b82338..0000000000 --- a/packages/protocol/genesis/test_config.json +++ /dev/null @@ -1,90 +0,0 @@ -{ - "contractOwner": "0xf39Fd6e51aad88F6F4ce6aB8827279cffFb92266", - "contractAdmin": "0x70997970C51812dc3A010C7d01b50e0d17dc79C8", - "chainId": 167, - "seedAccounts": [ - { - "0xf39Fd6e51aad88F6F4ce6aB8827279cffFb92266": 1024 - }, - { - "0x70997970C51812dc3A010C7d01b50e0d17dc79C8": 1024 - }, - { - "0x3C44CdDdB6a900fa2b585dd299e03d12FA4293BC": 1024 - }, - { - "0x90F79bf6EB2c4f870365E785982E1f101E93b906": 1024 - }, - { - "0x15d34AAf54267DB7D7c367839AAf71A00a2C6A65": 1024 - }, - { - "0x9965507D1a55bcC2695C58ba16FB37d819B0A4dc": 1024 - }, - { - "0x976EA74026E726554dB657fA54763abd0C3a0aa9": 1024 - }, - { - "0x14dC79964da2C08b23698B3D3cc7Ca32193d9955": 1024 - }, - { - "0x23618e81E3f5cdF7f54C3d65f7FBc0aBf5B21E8f": 1024 - }, - { - "0xa0Ee7A142d267C1f36714E4a8F75612F20a79720": 1024 - }, - { - "0xBcd4042DE499D14e55001CcbB24a551F3b954096": 1024 - }, - { - "0x71bE63f3384f5fb98995898A86B02Fb2426c5788": 1024 - }, - { - "0xFABB0ac9d68B0B445fB7357272Ff202C5651694a": 1024 - }, - { - "0x1CBd3b2770909D4e10f157cABC84C7264073C9Ec": 1024 - }, - { - "0xdF3e18d64BC6A983f673Ab319CCaE4f1a57C7097": 1024 - }, - { - "0xcd3B766CCDd6AE721141F452C550Ca635964ce71": 1024 - }, - { - "0x2546BcD3c84621e976D8185a91A922aE77ECEc30": 1024 - }, - { - "0xbDA5747bFD65F08deb54cb465eB87D40e51B197E": 1024 - }, - { - "0xdD2FD4581271e230360230F9337D5c0430Bf44C0": 1024 - }, - { - "0x8626f6940E2eb28930eFb4CeF49B2d1F2C9C1199": 1024 - } - ], - "contractAddresses": { - "ProxiedTaikoL2": "0x0000777700000000000000000000000000000001", - "ProxiedERC20Vault": "0x0000777700000000000000000000000000000002", - "ProxiedEtherVault": "0x0000777700000000000000000000000000000003", - "ProxiedBridge": "0x0000777700000000000000000000000000000004", - "RegularERC20": "0x0000777700000000000000000000000000000005", - "ProxiedAddressManager": "0x0000777700000000000000000000000000000006", - "ProxiedSignalService": "0x0000777700000000000000000000000000000007", - "ProxiedERC721Vault": "0x0000777700000000000000000000000000000008", - "ProxiedERC1155Vault": "0x0000777700000000000000000000000000000009", - "TaikoL2Proxy": "0x1000777700000000000000000000000000000001", - "ERC20VaultProxy": "0x1000777700000000000000000000000000000002", - "EtherVaultProxy": "0x1000777700000000000000000000000000000003", - "BridgeProxy": "0x1000777700000000000000000000000000000004", - "AddressManagerProxy": "0x1000777700000000000000000000000000000006", - "SignalServiceProxy": "0x1000777700000000000000000000000000000007", - "ERC721VaultProxy": "0x1000777700000000000000000000000000000008", - "ERC1155VaultProxy": "0x1000777700000000000000000000000000000009" - }, - "param1559": { - "gasExcess": "1" - }, - "predeployERC20": true -} diff --git a/packages/protocol/script/AuthorizeRemoteTaikoProtocols.s.sol b/packages/protocol/script/AuthorizeRemoteTaikoProtocols.s.sol new file mode 100644 index 0000000000..9435831f4a --- /dev/null +++ b/packages/protocol/script/AuthorizeRemoteTaikoProtocols.s.sol @@ -0,0 +1,44 @@ +// SPDX-License-Identifier: MIT +// _____ _ _ _ _ +// |_ _|_ _(_) |_____ | | __ _| |__ ___ +// | |/ _` | | / / _ \ | |__/ _` | '_ (_-< +// |_|\__,_|_|_\_\___/ |____\__,_|_.__/__/ + +pragma solidity ^0.8.20; + +import "forge-std/Script.sol"; +import "forge-std/console2.sol"; + +import "../contracts/signal/SignalService.sol"; + +import + "lib/openzeppelin-contracts/contracts/proxy/transparent/TransparentUpgradeableProxy.sol"; + +contract AuthorizeRemoteTaikoProtocols is Script { + uint256 public privateKey = vm.envUint("PRIVATE_KEY"); + address public signalServiceAddress = + vm.envAddress("SIGNAL_SERVICE_ADDRESS"); + uint256[] public remoteChainIDs = vm.envUint("REMOTE_CHAIN_IDS", ","); + address[] public remoteTaikoProtocols = + vm.envAddress("REMOTE_TAIKO_PROTOCOLS", ","); + + function run() external { + require( + remoteChainIDs.length == remoteTaikoProtocols.length, + "invalid remote taiko protocol addresses length" + ); + + vm.startBroadcast(privateKey); + + ProxiedSingletonSignalService signalService = + ProxiedSingletonSignalService(payable(signalServiceAddress)); + for (uint256 i; i < remoteChainIDs.length; ++i) { + console2.log(remoteTaikoProtocols[i], "--->", remoteChainIDs[i]); + signalService.authorize( + remoteTaikoProtocols[i], bytes32(remoteChainIDs[i]) + ); + } + + vm.stopBroadcast(); + } +} diff --git a/packages/protocol/script/DeployOnL1.s.sol b/packages/protocol/script/DeployOnL1.s.sol index 056dd51e73..bcfe5eda9d 100644 --- a/packages/protocol/script/DeployOnL1.s.sol +++ b/packages/protocol/script/DeployOnL1.s.sol @@ -21,7 +21,9 @@ import "../contracts/L1/verifiers/GuardianVerifier.sol"; import "../contracts/L1/tiers/ITierProvider.sol"; import "../contracts/L1/tiers/TaikoA6TierProvider.sol"; import "../contracts/bridge/Bridge.sol"; -import "../contracts/bridge/EtherVault.sol"; +import "../contracts/tokenvault/BridgedERC20.sol"; +import "../contracts/tokenvault/BridgedERC721.sol"; +import "../contracts/tokenvault/BridgedERC1155.sol"; import "../contracts/tokenvault/ERC20Vault.sol"; import "../contracts/tokenvault/ERC1155Vault.sol"; import "../contracts/tokenvault/ERC721Vault.sol"; @@ -51,7 +53,12 @@ contract DeployOnL1 is Script { address public proposer = vm.envAddress("PROPOSER"); - address public sharedSignalService = vm.envAddress("SHARED_SIGNAL_SERVICE"); + address public proposerOne = vm.envAddress("PROPOSER_ONE"); + + address public singletonBridge = vm.envAddress("SINGLETON_BRIDGE"); + + address public singletonSignalService = + vm.envAddress("SINGLETON_SIGNAL_SERVICE"); uint256 public tierProvider = vm.envUint("TIER_PROVIDER"); @@ -73,6 +80,17 @@ contract DeployOnL1 is Script { guardianProvers.length == NUM_GUARDIANS, "invalid guardian provers number" ); + if (singletonBridge == address(0)) { + require( + singletonSignalService == address(0), + "non-empty singleton signal service address" + ); + } else { + require( + singletonSignalService != address(0), + "empty singleton signal service address" + ); + } vm.startBroadcast(deployerPrivateKey); // AddressManager @@ -85,7 +103,7 @@ contract DeployOnL1 is Script { // TaikoL1 taikoL1 = new ProxiedTaikoL1(); - uint256 l2ChainId = taikoL1.getConfig().chainId; + uint64 l2ChainId = taikoL1.getConfig().chainId; require(l2ChainId != block.chainid, "same chainid"); setAddress(l2ChainId, "taiko", taikoL2Address); @@ -93,6 +111,9 @@ contract DeployOnL1 is Script { if (proposer != address(0)) { setAddress("proposer", proposer); } + if (proposerOne != address(0)) { + setAddress("proposer_one", proposer); + } // TaikoToken TaikoToken taikoToken = new ProxiedTaikoToken(); @@ -125,59 +146,25 @@ contract DeployOnL1 is Script { ); setAddress("taiko", taikoL1Proxy); - // Bridge - Bridge bridge = new ProxiedBridge(); - address bridgeProxy = deployProxy( - "bridge", - address(bridge), - bytes.concat(bridge.init.selector, abi.encode(addressManagerProxy)) - ); + // All bridging related contracts should be deployed as a singleton on + // each chain. + if (singletonBridge == address(0)) { + deployBridgeSuiteSingletons(); + } - // EtherVault - EtherVault etherVault = new ProxiedEtherVault(); - address etherVaultProxy = deployProxy( - "ether_vault", - address(etherVault), - bytes.concat( - etherVault.init.selector, abi.encode(addressManagerProxy) - ) - ); - ProxiedEtherVault(payable(etherVaultProxy)).authorize(bridgeProxy, true); + // Bridge and SignalService addresses will be used by TaikoL1. + setAddress("bridge", singletonBridge); + setAddress("signal_service", singletonSignalService); - // ERC20Vault - ERC20Vault erc20Vault = new ProxiedERC20Vault(); - deployProxy( - "erc20_vault", - address(erc20Vault), - bytes.concat( - erc20Vault.init.selector, abi.encode(addressManagerProxy) - ) - ); - - // ERC721Vault - ERC721Vault erc721Vault = new ProxiedERC721Vault(); - deployProxy( - "erc721_vault", - address(erc721Vault), - bytes.concat( - erc721Vault.init.selector, abi.encode(addressManagerProxy) - ) - ); - - // ERC1155Vault - ERC1155Vault erc1155Vault = new ProxiedERC1155Vault(); - deployProxy( - "erc1155_vault", - address(erc1155Vault), - bytes.concat( - erc1155Vault.init.selector, abi.encode(addressManagerProxy) - ) + // Authorize the new TaikoL1 contract for shared signal service. + ProxiedSingletonSignalService(singletonSignalService).authorize( + taikoL1Proxy, bytes32(block.chainid) ); // Guardian prover ProxiedGuardianProver guardianProver = new ProxiedGuardianProver(); address guardianProverProxy = deployProxy( - "guardian", + "guardian_prover", address(guardianProver), bytes.concat( guardianProver.init.selector, abi.encode(addressManagerProxy) @@ -236,23 +223,6 @@ contract DeployOnL1 is Script { ) ); - // SignalService - if (sharedSignalService == address(0)) { - SignalService signalService = new ProxiedSignalService(); - deployProxy( - "signal_service", - address(signalService), - bytes.concat( - signalService.init.selector, abi.encode(addressManagerProxy) - ) - ); - } else { - console2.log( - "Warining: using shared signal service: ", sharedSignalService - ); - setAddress("signal_service", sharedSignalService); - } - // PlonkVerifier deployPlonkVerifiers(pseZkVerifier); @@ -310,7 +280,110 @@ contract DeployOnL1 is Script { revert("invalid provider"); } + function deployBridgeSuiteSingletons() private { + // AddressManager + AddressManager addressManagerForSingletons = new ProxiedAddressManager(); + address addressManagerForSingletonsProxy = deployProxy( + address(0), + "address_manager_for_singletons", + address(addressManagerForSingletons), + bytes.concat(addressManagerForSingletons.init.selector) + ); + + // Bridge + Bridge bridge = new ProxiedSingletonBridge(); + singletonBridge = deployProxy( + addressManagerForSingletonsProxy, + "bridge", + address(bridge), + bytes.concat( + bridge.init.selector, + abi.encode(addressManagerForSingletonsProxy) + ) + ); + + // ERC20Vault + ERC20Vault erc20Vault = new ProxiedSingletonERC20Vault(); + deployProxy( + addressManagerForSingletonsProxy, + "erc20_vault", + address(erc20Vault), + bytes.concat( + erc20Vault.init.selector, + abi.encode(addressManagerForSingletonsProxy) + ) + ); + + // ERC721Vault + ERC721Vault erc721Vault = new ProxiedSingletonERC721Vault(); + deployProxy( + addressManagerForSingletonsProxy, + "erc721_vault", + address(erc721Vault), + bytes.concat( + erc721Vault.init.selector, + abi.encode(addressManagerForSingletonsProxy) + ) + ); + + // ERC1155Vault + ERC1155Vault erc1155Vault = new ProxiedSingletonERC1155Vault(); + deployProxy( + addressManagerForSingletonsProxy, + "erc1155_vault", + address(erc1155Vault), + bytes.concat( + erc1155Vault.init.selector, + abi.encode(addressManagerForSingletonsProxy) + ) + ); + + // SignalService + SignalService signalService = new ProxiedSingletonSignalService(); + singletonSignalService = deployProxy( + addressManagerForSingletonsProxy, + "signal_service", + address(signalService), + bytes.concat( + signalService.init.selector, + abi.encode(addressManagerForSingletonsProxy) + ) + ); + + // Deploy ProxiedBridged token contracts + setAddress( + addressManagerForSingletonsProxy, + uint64(block.chainid), + "proxied_bridged_erc20", + address(new ProxiedBridgedERC20()) + ); + setAddress( + addressManagerForSingletonsProxy, + uint64(block.chainid), + "proxied_bridged_erc721", + address(new ProxiedBridgedERC721()) + ); + setAddress( + addressManagerForSingletonsProxy, + uint64(block.chainid), + "proxied_bridged_erc1155", + address(new ProxiedBridgedERC1155()) + ); + } + + function deployProxy( + string memory name, + address implementation, + bytes memory data + ) + private + returns (address proxy) + { + return deployProxy(addressManagerProxy, name, implementation, data); + } + function deployProxy( + address addressManager, string memory name, address implementation, bytes memory data @@ -325,9 +398,9 @@ contract DeployOnL1 is Script { console2.log(name, "(impl) ->", implementation); console2.log(name, "(proxy) ->", proxy); - if (addressManagerProxy != address(0)) { - setAddress(block.chainid, bytes32(bytes(name)), proxy); - } + setAddress( + addressManager, uint64(block.chainid), bytes32(bytes(name)), proxy + ); vm.writeJson( vm.serializeAddress("deployment", name, proxy), @@ -336,13 +409,24 @@ contract DeployOnL1 is Script { } function setAddress(bytes32 name, address addr) private { - setAddress(block.chainid, name, addr); + setAddress(addressManagerProxy, uint64(block.chainid), name, addr); } function setAddress(uint256 chainId, bytes32 name, address addr) private { - console2.log(chainId, uint256(name), "--->", addr); - if (addr != address(0)) { - AddressManager(addressManagerProxy).setAddress(chainId, name, addr); + setAddress(addressManagerProxy, uint64(chainId), name, addr); + } + + function setAddress( + address addressManager, + uint64 chainId, + bytes32 name, + address addr + ) + private + { + if (addressManager != address(0) && addr != address(0)) { + console2.log(chainId, uint256(name), "--->", addr); + AddressManager(addressManager).setAddress(chainId, name, addr); } } } diff --git a/packages/protocol/script/SetAddress.s.sol b/packages/protocol/script/SetAddress.s.sol index 5bac86a26e..dae9b396a1 100644 --- a/packages/protocol/script/SetAddress.s.sol +++ b/packages/protocol/script/SetAddress.s.sol @@ -19,7 +19,7 @@ contract SetAddress is Script { address public proxyAddress = vm.envAddress("PROXY_ADDRESS"); - uint256 public domain = vm.envUint("DOMAIN"); + uint64 public domain = uint64(vm.envUint("DOMAIN")); bytes32 public name = vm.envBytes32("NAME"); diff --git a/packages/protocol/script/SetRemoteBridgeSuites.s.sol b/packages/protocol/script/SetRemoteBridgeSuites.s.sol new file mode 100644 index 0000000000..dbba251ef5 --- /dev/null +++ b/packages/protocol/script/SetRemoteBridgeSuites.s.sol @@ -0,0 +1,91 @@ +// SPDX-License-Identifier: MIT +// _____ _ _ _ _ +// |_ _|_ _(_) |_____ | | __ _| |__ ___ +// | |/ _` | | / / _ \ | |__/ _` | '_ (_-< +// |_|\__,_|_|_\_\___/ |____\__,_|_.__/__/ + +pragma solidity ^0.8.20; + +import "forge-std/Script.sol"; +import "forge-std/console2.sol"; + +import "../contracts/common/AddressManager.sol"; + +import + "lib/openzeppelin-contracts/contracts/proxy/transparent/TransparentUpgradeableProxy.sol"; + +contract SetRemoteBridgeSuites is Script { + uint256 public privateKey = vm.envUint("PRIVATE_KEY"); + address public addressManagerAddress = + vm.envAddress("ADDRESS_MANAGER_ADDRESS"); + uint256[] public remoteChainIDs = vm.envUint("REMOTE_CHAIN_IDS", ","); + address[] public remoteBridges = vm.envAddress("REMOTE_BRIDGES", ","); + address[] public remoteERC20Vaults = + vm.envAddress("REMOTE_ERC20_VAULTS", ","); + address[] public remoteERC721Vaults = + vm.envAddress("REMOTE_ERC721_VAULTS", ","); + address[] public remoteERC1155Vaults = + vm.envAddress("REMOTE_ERC1155_VAULTS", ","); + + function run() external { + require( + remoteChainIDs.length == remoteBridges.length, + "invalid remote bridge addresses length" + ); + require( + remoteChainIDs.length == remoteERC20Vaults.length, + "invalid remote ERC20Vault addresses length" + ); + require( + remoteChainIDs.length == remoteERC721Vaults.length, + "invalid remote ERC721Vault addresses length" + ); + require( + remoteChainIDs.length == remoteERC1155Vaults.length, + "invalid remote ERC1155Vault addresses length" + ); + + vm.startBroadcast(privateKey); + + for (uint256 i; i < remoteChainIDs.length; ++i) { + setAddress( + addressManagerAddress, + uint64(remoteChainIDs[i]), + "bridge", + remoteBridges[i] + ); + setAddress( + addressManagerAddress, + uint64(remoteChainIDs[i]), + "erc20_vault", + remoteERC20Vaults[i] + ); + setAddress( + addressManagerAddress, + uint64(remoteChainIDs[i]), + "erc721_vault", + remoteERC721Vaults[i] + ); + setAddress( + addressManagerAddress, + uint64(remoteChainIDs[i]), + "erc1155_vault", + remoteERC1155Vaults[i] + ); + } + + vm.stopBroadcast(); + } + + function setAddress( + address addressManager, + uint64 chainId, + bytes32 name, + address addr + ) + private + { + console2.log(chainId, uint256(name), "--->", addr); + ProxiedAddressManager(addressManager).setAddress(chainId, name, addr); + } +} diff --git a/packages/protocol/script/merge_contracts.py b/packages/protocol/script/merge_contracts.py new file mode 100644 index 0000000000..7722d5d5eb --- /dev/null +++ b/packages/protocol/script/merge_contracts.py @@ -0,0 +1,27 @@ +import os +import argparse + +def merge_solidity_files(root_dir, output_file='../out/taiko_protocol.md'): + with open(output_file, 'w') as outfile: + for subdir, dirs, files in os.walk(root_dir): + for file in files: + if file.endswith('.sol') and not file.endswith('.t.sol'): + file_path = os.path.join(subdir, file) + if "/test/" in file_path: + continue + print("merging ", file_path) + relative_path = os.path.relpath(file_path, root_dir) + outfile.write(f"## {relative_path}\n") + outfile.write("```solidity\n") + with open(file_path, 'r') as infile: + outfile.write(infile.read()) + outfile.write("\n```\n\n") + + +if __name__ == "__main__": + # parser = argparse.ArgumentParser(description="Merge Solidity files into a Markdown file.") + # parser.add_argument("root_dir", type=str, help="Root directory containing Solidity files") + # args = parser.parse_args() + # merge_solidity_files(args.root_dir) + merge_solidity_files("../contracts") + print("merged into ../out/taiko_protocol.md") diff --git a/packages/protocol/script/test_deploy_on_l1.sh b/packages/protocol/script/test_deploy_on_l1.sh index a2333c889f..8e12f2e7ae 100755 --- a/packages/protocol/script/test_deploy_on_l1.sh +++ b/packages/protocol/script/test_deploy_on_l1.sh @@ -4,8 +4,10 @@ set -e PRIVATE_KEY=0xac0974bec39a17e36ba4a6b4d238ff944bacb478cbed5efcae784d7bf4f2ff80 \ -SHARED_SIGNAL_SERVICE=0x0000000000000000000000000000000000000000 \ +SINGLETON_SIGNAL_SERVICE=0x0000000000000000000000000000000000000000 \ +SINGLETON_BRIDGE=0x0000000000000000000000000000000000000000 \ PROPOSER=0x0000000000000000000000000000000000000000 \ +PROPOSER_ONE=0x0000000000000000000000000000000000000000 \ GUARDIAN_PROVERS="0x1000777700000000000000000000000000000001,0x1000777700000000000000000000000000000002,0x1000777700000000000000000000000000000003,0x1000777700000000000000000000000000000004,0x1000777700000000000000000000000000000005" \ OWNER=0x70997970C51812dc3A010C7d01b50e0d17dc79C8 \ TAIKO_L2_ADDRESS=0x1000777700000000000000000000000000000001 \ diff --git a/packages/protocol/script/upgrade/UpgradeBridge.s.sol b/packages/protocol/script/upgrade/UpgradeBridge.s.sol index c85feace55..9261e01bed 100644 --- a/packages/protocol/script/upgrade/UpgradeBridge.s.sol +++ b/packages/protocol/script/upgrade/UpgradeBridge.s.sol @@ -13,7 +13,7 @@ import "./UpgradeScript.s.sol"; contract UpgradeBridge is UpgradeScript { function run() external setUp { - Bridge newBridge = new ProxiedBridge(); + Bridge newBridge = new ProxiedSingletonBridge(); proxy.upgradeTo(address(newBridge)); console2.log( "proxy upgraded Bridge implementation to", address(newBridge) diff --git a/packages/protocol/script/upgrade/UpgradeERC1155Vault.s.sol b/packages/protocol/script/upgrade/UpgradeERC1155Vault.s.sol index 7373ca202c..b2931ae2f9 100644 --- a/packages/protocol/script/upgrade/UpgradeERC1155Vault.s.sol +++ b/packages/protocol/script/upgrade/UpgradeERC1155Vault.s.sol @@ -13,7 +13,7 @@ import "./UpgradeScript.s.sol"; contract UpgradeERC1155Vault is UpgradeScript { function run() external setUp { - ERC1155Vault newERC1155Vault = new ProxiedERC1155Vault(); + ERC1155Vault newERC1155Vault = new ProxiedSingletonERC1155Vault(); proxy.upgradeTo(address(newERC1155Vault)); console2.log( "proxy upgraded ERC1155Vault implementation to", diff --git a/packages/protocol/script/upgrade/UpgradeERC20Vault.s.sol b/packages/protocol/script/upgrade/UpgradeERC20Vault.s.sol index 5184a56edf..03873dc19c 100644 --- a/packages/protocol/script/upgrade/UpgradeERC20Vault.s.sol +++ b/packages/protocol/script/upgrade/UpgradeERC20Vault.s.sol @@ -13,7 +13,7 @@ import "./UpgradeScript.s.sol"; contract UpgradeERC20Vault is UpgradeScript { function run() external setUp { - ERC20Vault newERC20Vault = new ProxiedERC20Vault(); + ERC20Vault newERC20Vault = new ProxiedSingletonERC20Vault(); proxy.upgradeTo(address(newERC20Vault)); console2.log( "proxy upgraded ERC20Vault implementation to", diff --git a/packages/protocol/script/upgrade/UpgradeERC721Vault.s.sol b/packages/protocol/script/upgrade/UpgradeERC721Vault.s.sol index 270aba5ba0..f29686db9d 100644 --- a/packages/protocol/script/upgrade/UpgradeERC721Vault.s.sol +++ b/packages/protocol/script/upgrade/UpgradeERC721Vault.s.sol @@ -13,7 +13,7 @@ import "./UpgradeScript.s.sol"; contract UpgradeERC721Vault is UpgradeScript { function run() external setUp { - ERC721Vault newERC721Vault = new ProxiedERC721Vault(); + ERC721Vault newERC721Vault = new ProxiedSingletonERC721Vault(); proxy.upgradeTo(address(newERC721Vault)); console2.log( "proxy upgraded ERC721Vault implementation to", diff --git a/packages/protocol/script/upgrade/UpgradeSignalService.sol b/packages/protocol/script/upgrade/UpgradeSignalService.sol index aa2e887319..a8d1592715 100644 --- a/packages/protocol/script/upgrade/UpgradeSignalService.sol +++ b/packages/protocol/script/upgrade/UpgradeSignalService.sol @@ -13,7 +13,7 @@ import "./UpgradeScript.s.sol"; contract UpgradeSignalService is UpgradeScript { function run() external setUp { - SignalService newSignalService = new ProxiedSignalService(); + SignalService newSignalService = new ProxiedSingletonSignalService(); proxy.upgradeTo(address(newSignalService)); console2.log( "proxy upgraded SignalService implementation to", diff --git a/packages/protocol/script/upgrade/UpgradeTaikoL2.s.sol b/packages/protocol/script/upgrade/UpgradeTaikoL2.s.sol index 0d4887a1dc..f2286c644c 100644 --- a/packages/protocol/script/upgrade/UpgradeTaikoL2.s.sol +++ b/packages/protocol/script/upgrade/UpgradeTaikoL2.s.sol @@ -13,7 +13,7 @@ import "./UpgradeScript.s.sol"; contract UpgradeTaikoL2 is UpgradeScript { function run() external setUp { - TaikoL2 newTaikoL2 = new ProxiedTaikoL2(); + TaikoL2 newTaikoL2 = new ProxiedSingletonTaikoL2(); proxy.upgradeTo(address(newTaikoL2)); console2.log( "proxy upgraded TaikoL2 implementation to", address(newTaikoL2) diff --git a/packages/protocol/test/L1/TaikoL1.t.sol b/packages/protocol/test/L1/TaikoL1.t.sol index 625a1c30b2..d84101f7ae 100644 --- a/packages/protocol/test/L1/TaikoL1.t.sol +++ b/packages/protocol/test/L1/TaikoL1.t.sol @@ -188,8 +188,10 @@ contract TaikoL1Test is TaikoL1TestBase { vm.expectRevert(); L1.depositEtherToL2{ value: maxAmount + 1 }(address(0)); - assertEq(L1.getStateVariables().nextEthDepositToProcess, 0); - assertEq(L1.getStateVariables().numEthDeposits, 0); + (TaikoData.SlotA memory a,) = L1.getStateVariables(); + + assertEq(a.nextEthDepositToProcess, 0); + assertEq(a.numEthDeposits, 0); } function test_L1_EthDepositsToL2Gas() external { @@ -346,10 +348,12 @@ contract TaikoL1Test is TaikoL1TestBase { vm.prank(Henry, Henry); L1.depositEtherToL2{ value: 8 ether }(address(0)); - assertEq(L1.getStateVariables().numEthDeposits, 8); // The number of - // deposits - assertEq(L1.getStateVariables().nextEthDepositToProcess, 0); // The - // index / cursos of the next deposit + (TaikoData.SlotA memory a,) = L1.getStateVariables(); + + // The number of deposits + assertEq(a.numEthDeposits, 8); + // The index / cursos of the next deposit + assertEq(a.nextEthDepositToProcess, 0); // We shall invoke proposeBlock() because this is what will call the // processDeposits() diff --git a/packages/protocol/test/L1/TaikoL1LibProvingWithTiers.t.sol b/packages/protocol/test/L1/TaikoL1LibProvingWithTiers.t.sol index b468128ed0..46311ca933 100644 --- a/packages/protocol/test/L1/TaikoL1LibProvingWithTiers.t.sol +++ b/packages/protocol/test/L1/TaikoL1LibProvingWithTiers.t.sol @@ -714,7 +714,7 @@ contract TaikoL1LibProvingWithTiers is TaikoL1TestBase { } function test_L1_IfGuardianRoleIsNotGrantedToProver() external { - registerAddress("guardian", Alice); + registerAddress("guardian_prover", Alice); giveEthAndTko(Alice, 1e8 ether, 1000 ether); giveEthAndTko(Carol, 1e8 ether, 1000 ether); @@ -776,7 +776,7 @@ contract TaikoL1LibProvingWithTiers is TaikoL1TestBase { } function test_L1_ProveWithInvalidBlockId() external { - registerAddress("guardian", Alice); + registerAddress("guardian_prover", Alice); giveEthAndTko(Alice, 1e8 ether, 1000 ether); giveEthAndTko(Carol, 1e8 ether, 1000 ether); @@ -819,7 +819,7 @@ contract TaikoL1LibProvingWithTiers is TaikoL1TestBase { } function test_L1_ProveWithInvalidMetahash() external { - registerAddress("guardian", Alice); + registerAddress("guardian_prover", Alice); giveEthAndTko(Alice, 1e8 ether, 1000 ether); giveEthAndTko(Carol, 1e8 ether, 1000 ether); diff --git a/packages/protocol/test/L1/TaikoL1TestBase.sol b/packages/protocol/test/L1/TaikoL1TestBase.sol index b6c74f6a6b..4cc3731bc3 100644 --- a/packages/protocol/test/L1/TaikoL1TestBase.sol +++ b/packages/protocol/test/L1/TaikoL1TestBase.sol @@ -4,6 +4,7 @@ pragma solidity ^0.8.20; import { TestBase } from "../TestBase.sol"; import { console2 } from "forge-std/console2.sol"; import { AddressManager } from "../../contracts/common/AddressManager.sol"; +import { Bridge } from "../../contracts/bridge/Bridge.sol"; import { LibProving } from "../../contracts/L1/libs/LibProving.sol"; import { LibProposing } from "../../contracts/L1/libs/LibProposing.sol"; import { LibUtils } from "../../contracts/L1/libs/LibUtils.sol"; @@ -46,13 +47,12 @@ abstract contract TaikoL1TestBase is TestBase { GuardianVerifier public gv; GuardianProver public gp; TaikoA6TierProvider public cp; + Bridge public bridge; bytes32 public constant GENESIS_BLOCK_HASH = keccak256("GENESIS_BLOCK_HASH"); address public constant L2SS = 0xa008AE5Ba00656a3Cc384de589579e3E52aC030C; address public constant TaikoL2 = 0x0082D90249342980d011C58105a03b35cCb4A315; - address public constant L1EthVault = - 0xDAFEA492D9c6733ae3d56b7Ed1ADB60692c98Bc5; function deployTaikoL1() internal virtual returns (TaikoL1 taikoL1); @@ -64,7 +64,7 @@ abstract contract TaikoL1TestBase is TestBase { addressManager.init(); ss = new SignalService(); - ss.init(address(addressManager)); + ss.init(); pv = new PseZkVerifier(); pv.init(address(addressManager)); @@ -87,6 +87,9 @@ abstract contract TaikoL1TestBase is TestBase { cp = new TaikoA6TierProvider(); + bridge = new Bridge(); + bridge.init(address(addressManager)); + registerAddress("taiko", address(L1)); registerAddress("tier_pse_zkevm", address(pv)); registerAddress("tier_sgx", address(sv)); @@ -94,8 +97,8 @@ abstract contract TaikoL1TestBase is TestBase { registerAddress("tier_sgx_and_pse_zkevm", address(sgxZkVerifier)); registerAddress("tier_provider", address(cp)); registerAddress("signal_service", address(ss)); - registerAddress("guardian", address(gp)); - registerAddress("ether_vault", address(L1EthVault)); + registerAddress("guardian_prover", address(gp)); + registerAddress("bridge", address(bridge)); registerL2Address("taiko", address(TaikoL2)); registerL2Address("signal_service", address(L2SS)); registerL2Address("taiko_l2", address(TaikoL2)); @@ -148,19 +151,22 @@ abstract contract TaikoL1TestBase is TestBase { feeToken: address(0), tierFees: tierFees, expiry: uint64(block.timestamp + 60 minutes), + maxBlockId: 0, + maxProposedIn: 0, + metaHash: 0, signature: new bytes(0) }); bytes memory txList = new bytes(txListSize); assignment.signature = - _signAssignment(prover, assignment, keccak256(txList)); + _signAssignment(prover, assignment, address(L1), keccak256(txList)); - TaikoData.StateVariables memory variables = L1.getStateVariables(); + (, TaikoData.SlotB memory b) = L1.getStateVariables(); uint256 _difficulty; unchecked { - _difficulty = block.prevrandao * variables.numBlocks; + _difficulty = block.prevrandao * b.numBlocks; } meta.timestamp = uint64(block.timestamp); @@ -171,7 +177,8 @@ abstract contract TaikoL1TestBase is TestBase { vm.prank(proposer, proposer); (meta, depositsProcessed) = L1.proposeBlock{ value: msgValue }( - abi.encode(TaikoData.BlockParams(assignment, bytes32(0))), txList + abi.encode(TaikoData.BlockParams(assignment, 0, 0, 0, 0, false, 0)), + txList ); } @@ -290,7 +297,7 @@ abstract contract TaikoL1TestBase is TestBase { } function registerAddress(bytes32 nameHash, address addr) internal { - addressManager.setAddress(block.chainid, nameHash, addr); + addressManager.setAddress(uint64(block.chainid), nameHash, addr); console2.log(block.chainid, uint256(nameHash), unicode"→", addr); } @@ -304,13 +311,15 @@ abstract contract TaikoL1TestBase is TestBase { function _signAssignment( address signer, TaikoData.ProverAssignment memory assignment, + address taikoAddr, bytes32 blobHash ) internal view returns (bytes memory signature) { - bytes32 digest = LibProposing.hashAssignment(assignment, blobHash); + bytes32 digest = + LibProposing.hashAssignment(assignment, taikoAddr, blobHash); uint256 signerPrivateKey; // In the test suite these are the 3 which acts as provers @@ -371,23 +380,24 @@ abstract contract TaikoL1TestBase is TestBase { } function printVariables(string memory comment) internal { - TaikoData.StateVariables memory vars = L1.getStateVariables(); + (TaikoData.SlotA memory a, TaikoData.SlotB memory b) = + L1.getStateVariables(); string memory str = string.concat( Strings.toString(logCount++), ":[", - Strings.toString(vars.lastVerifiedBlockId), + Strings.toString(b.lastVerifiedBlockId), unicode"→", - Strings.toString(vars.numBlocks), + Strings.toString(b.numBlocks), "]" ); str = string.concat( str, " nextEthDepositToProcess:", - Strings.toString(vars.nextEthDepositToProcess), + Strings.toString(a.nextEthDepositToProcess), " numEthDeposits:", - Strings.toString(vars.numEthDeposits), + Strings.toString(a.numEthDeposits), " // ", comment ); diff --git a/packages/protocol/test/L1/TaikoToken.t.sol b/packages/protocol/test/L1/TaikoToken.t.sol index 3cc9862a99..00aebbe263 100644 --- a/packages/protocol/test/L1/TaikoToken.t.sol +++ b/packages/protocol/test/L1/TaikoToken.t.sol @@ -61,7 +61,7 @@ contract TaikoTokenTest is TestBase { } function _registerAddress(bytes32 nameHash, address addr) private { - addressManager.setAddress(block.chainid, nameHash, addr); + addressManager.setAddress(uint64(block.chainid), nameHash, addr); } function _deployViaProxy( diff --git a/packages/protocol/test/L2/TaikoL2.t.sol b/packages/protocol/test/L2/TaikoL2.t.sol index 08221e0148..64bdd9232e 100644 --- a/packages/protocol/test/L2/TaikoL2.t.sol +++ b/packages/protocol/test/L2/TaikoL2.t.sol @@ -37,20 +37,20 @@ contract TestTaikoL2 is TestBase { addressManager.init(); ss = new SignalService(); - ss.init(address(addressManager)); + ss.init(); registerAddress("signal_service", address(ss)); L2 = new TaikoL2EIP1559Configurable(); uint64 gasExcess = 0; uint8 quotient = 8; uint32 gasTarget = 60_000_000; - L2.init(address(addressManager), gasExcess); + L2.init(address(ss), gasExcess); L2.setConfigAndExcess(TaikoL2.Config(gasTarget, quotient), gasExcess); L2FeeSimulation = new SkipBasefeeCheckL2(); gasExcess = 195_420_300_100; - L2FeeSimulation.init(address(addressManager), gasExcess); + L2FeeSimulation.init(address(ss), gasExcess); L2FeeSimulation.setConfigAndExcess( TaikoL2.Config(gasTarget, quotient), gasExcess ); @@ -137,7 +137,7 @@ contract TestTaikoL2 is TestBase { uint256 accumulated_parent_gas_per_l1_block = 0; uint64 l1Height = uint64(block.number); uint64 l1BlockCounter = 0; - uint64 maxL2BlockCount = 200; + uint64 maxL2BlockCount = 180; uint256 allBaseFee = 0; uint256 allGasUsed = 0; uint256 newRandomWithoutSalt; @@ -269,7 +269,7 @@ contract TestTaikoL2 is TestBase { } function registerAddress(bytes32 nameHash, address addr) internal { - addressManager.setAddress(block.chainid, nameHash, addr); + addressManager.setAddress(uint64(block.chainid), nameHash, addr); console2.log(block.chainid, uint256(nameHash), unicode"→", addr); } diff --git a/packages/protocol/test/TestBase.sol b/packages/protocol/test/TestBase.sol index 187bd5d220..b2c1e9873d 100644 --- a/packages/protocol/test/TestBase.sol +++ b/packages/protocol/test/TestBase.sol @@ -5,6 +5,7 @@ import { Test } from "forge-std/Test.sol"; import { Bridge } from "../contracts/bridge/Bridge.sol"; import { SignalService } from "../contracts/signal/SignalService.sol"; import { ICrossChainSync } from "../contracts/common/ICrossChainSync.sol"; +import { EssentialContract } from "../contracts/common/EssentialContract.sol"; abstract contract TestBase is Test { uint256 private _seed = 0x12345678; @@ -87,9 +88,13 @@ contract SkipProofCheckSignal is SignalService { } } -contract DummyCrossChainSync is ICrossChainSync { +contract DummyCrossChainSync is ICrossChainSync, EssentialContract { Snippet private _snippet; + function init(address _addressManager) external initializer { + EssentialContract._init(_addressManager); + } + function setSyncedData(bytes32 blockHash, bytes32 signalRoot) external { _snippet.blockHash = blockHash; _snippet.signalRoot = signalRoot; diff --git a/packages/protocol/test/bridge/Bridge.t.sol b/packages/protocol/test/bridge/Bridge.t.sol index 3cc7ec7f9c..8daf48f81c 100644 --- a/packages/protocol/test/bridge/Bridge.t.sol +++ b/packages/protocol/test/bridge/Bridge.t.sol @@ -3,7 +3,6 @@ pragma solidity ^0.8.20; import { AddressManager } from "../../contracts/common/AddressManager.sol"; import { IBridge, Bridge } from "../../contracts/bridge/Bridge.sol"; -import { EtherVault } from "../../contracts/bridge/EtherVault.sol"; import { console2 } from "forge-std/console2.sol"; import { SignalService } from "../../contracts/signal/SignalService.sol"; import { @@ -35,12 +34,11 @@ contract BridgeTest is TestBase { GoodReceiver goodReceiver; Bridge bridge; Bridge destChainBridge; - EtherVault etherVault; SignalService signalService; DummyCrossChainSync crossChainSync; SkipProofCheckSignal mockProofSignalService; UntrustedSendMessageRelayer untrustedSenderContract; - uint256 destChainId = 19_389; + uint64 destChainId = 19_389; function setUp() public { vm.startPrank(Alice); @@ -55,16 +53,12 @@ contract BridgeTest is TestBase { destChainBridge.init(address(addressManager)); mockProofSignalService = new SkipProofCheckSignal(); - mockProofSignalService.init(address(addressManager)); + mockProofSignalService.init(); signalService = new SignalService(); - signalService.init(address(addressManager)); + signalService.init(); - etherVault = new EtherVault(); - etherVault.init(address(addressManager)); - vm.deal(address(etherVault), 100 ether); - etherVault.authorize(address(bridge), true); - etherVault.authorize(address(destChainBridge), true); + vm.deal(address(destChainBridge), 100 ether); crossChainSync = new DummyCrossChainSync(); @@ -72,7 +66,9 @@ contract BridgeTest is TestBase { vm.deal(address(untrustedSenderContract), 10 ether); addressManager.setAddress( - block.chainid, "signal_service", address(mockProofSignalService) + uint64(block.chainid), + "signal_service", + address(mockProofSignalService) ); addressManager.setAddress( @@ -83,18 +79,12 @@ contract BridgeTest is TestBase { destChainId, "bridge", address(destChainBridge) ); - addressManager.setAddress( - block.chainid, "ether_vault", address(etherVault) - ); + addressManager.setAddress(destChainId, "taiko", address(uint160(123))); addressManager.setAddress( - destChainId, "ether_vault", address(etherVault) + uint64(block.chainid), "bridge", address(bridge) ); - addressManager.setAddress(destChainId, "taiko", address(uint160(123))); - - addressManager.setAddress(block.chainid, "bridge", address(bridge)); - vm.stopPrank(); } @@ -102,9 +92,9 @@ contract BridgeTest is TestBase { IBridge.Message memory message = IBridge.Message({ id: 0, from: address(bridge), - srcChainId: block.chainid, + srcChainId: uint64(block.chainid), destChainId: destChainId, - user: Alice, + owner: Alice, to: Alice, refundTo: Alice, value: 1000, @@ -117,7 +107,7 @@ contract BridgeTest is TestBase { // coresponding to the message bytes memory proof = hex"00"; - bytes32 msgHash = keccak256(abi.encode(message)); + bytes32 msgHash = destChainBridge.hashMessage(message); vm.chainId(destChainId); vm.prank(Bob, Bob); @@ -141,9 +131,9 @@ contract BridgeTest is TestBase { IBridge.Message memory message = IBridge.Message({ id: 0, from: address(bridge), - srcChainId: block.chainid, + srcChainId: uint64(block.chainid), destChainId: destChainId, - user: Alice, + owner: Alice, to: address(goodReceiver), refundTo: Alice, value: 1000, @@ -156,7 +146,7 @@ contract BridgeTest is TestBase { // coresponding to the message bytes memory proof = hex"00"; - bytes32 msgHash = keccak256(abi.encode(message)); + bytes32 msgHash = destChainBridge.hashMessage(message); vm.chainId(destChainId); @@ -180,9 +170,9 @@ contract BridgeTest is TestBase { IBridge.Message memory message = IBridge.Message({ id: 0, from: address(bridge), - srcChainId: block.chainid, + srcChainId: uint64(block.chainid), destChainId: destChainId, - user: Alice, + owner: Alice, to: address(goodReceiver), refundTo: Alice, value: 1000, @@ -195,7 +185,7 @@ contract BridgeTest is TestBase { // coresponding to the message bytes memory proof = hex"00"; - bytes32 msgHash = keccak256(abi.encode(message)); + bytes32 msgHash = destChainBridge.hashMessage(message); vm.chainId(destChainId); @@ -217,7 +207,7 @@ contract BridgeTest is TestBase { { // uint256 amount = 1 wei; IBridge.Message memory message = newMessage({ - user: Alice, + owner: Alice, to: Alice, value: 0, gasLimit: 0, @@ -234,7 +224,7 @@ contract BridgeTest is TestBase { { uint256 amount = 1 wei; IBridge.Message memory message = newMessage({ - user: address(0), + owner: address(0), to: Alice, value: 0, gasLimit: 0, @@ -252,7 +242,7 @@ contract BridgeTest is TestBase { { uint256 amount = 1 wei; IBridge.Message memory message = newMessage({ - user: Alice, + owner: Alice, to: Alice, value: 0, gasLimit: 0, @@ -270,12 +260,12 @@ contract BridgeTest is TestBase { { uint256 amount = 1 wei; IBridge.Message memory message = newMessage({ - user: Alice, + owner: Alice, to: Alice, value: 0, gasLimit: 0, fee: 0, - destChain: block.chainid + destChain: uint64(block.chainid) }); vm.expectRevert(Bridge.B_INVALID_CHAINID.selector); @@ -285,7 +275,7 @@ contract BridgeTest is TestBase { function test_Bridge_send_message_ether_with_no_processing_fee() public { uint256 amount = 0 wei; IBridge.Message memory message = newMessage({ - user: Alice, + owner: Alice, to: Alice, value: 0, gasLimit: 0, @@ -302,7 +292,7 @@ contract BridgeTest is TestBase { uint256 amount = 0 wei; uint256 fee = 1 wei; IBridge.Message memory message = newMessage({ - user: Alice, + owner: Alice, to: Alice, value: 0, gasLimit: 0, @@ -319,7 +309,7 @@ contract BridgeTest is TestBase { uint256 amount = 1 ether; uint256 fee = 1 wei; IBridge.Message memory message = newMessage({ - user: Alice, + owner: Alice, to: Alice, value: amount, gasLimit: 0, @@ -327,7 +317,7 @@ contract BridgeTest is TestBase { destChain: destChainId }); - uint256 starterBalanceVault = address(etherVault).balance; + uint256 starterBalanceVault = address(bridge).balance; uint256 starterBalanceAlice = Alice.balance; vm.prank(Alice, Alice); @@ -335,13 +325,11 @@ contract BridgeTest is TestBase { bridge.sendMessage{ value: amount + fee }(message); assertEq(bridge.isMessageSent(_message), true); - assertEq( - address(etherVault).balance, (starterBalanceVault + amount + fee) - ); + assertEq(address(bridge).balance, (starterBalanceVault + amount + fee)); assertEq(Alice.balance, (starterBalanceAlice - (amount + fee))); bridge.recallMessage(message, ""); - assertEq(address(etherVault).balance, (starterBalanceVault + fee)); + assertEq(address(bridge).balance, (starterBalanceVault + fee)); assertEq(Alice.balance, (starterBalanceAlice - fee)); } @@ -355,7 +343,7 @@ contract BridgeTest is TestBase { uint256 amount = 1 ether; uint256 fee = 1 wei; IBridge.Message memory message = newMessage({ - user: Alice, + owner: Alice, to: Alice, value: amount, gasLimit: 0, @@ -363,19 +351,17 @@ contract BridgeTest is TestBase { destChain: destChainId }); - uint256 starterBalanceVault = address(etherVault).balance; + uint256 starterBalanceVault = address(bridge).balance; untrustedSenderContract.sendMessage( address(bridge), message, amount + fee ); - assertEq( - address(etherVault).balance, (starterBalanceVault + amount + fee) - ); + assertEq(address(bridge).balance, (starterBalanceVault + amount + fee)); bridge.recallMessage(message, ""); - assertEq(address(etherVault).balance, (starterBalanceVault + fee)); + assertEq(address(bridge).balance, (starterBalanceVault + fee)); } function test_Bridge_send_message_ether_with_processing_fee_invalid_amount() @@ -384,7 +370,7 @@ contract BridgeTest is TestBase { uint256 amount = 0 wei; uint256 fee = 1 wei; IBridge.Message memory message = newMessage({ - user: Alice, + owner: Alice, to: Alice, value: 0, gasLimit: 0, @@ -410,7 +396,7 @@ contract BridgeTest is TestBase { (IBridge.Message memory message, bytes memory proof) = setUpPredefinedSuccessfulProcessMessageCall(); - bytes32 msgHash = keccak256(abi.encode(message)); + bytes32 msgHash = destChainBridge.hashMessage(message); destChainBridge.processMessage(message, proof); @@ -433,7 +419,7 @@ contract BridgeTest is TestBase { // etch bad receiver at the to address, so it fails. vm.etch(message.to, address(badReceiver).code); - bytes32 msgHash = keccak256(abi.encode(message)); + bytes32 msgHash = destChainBridge.hashMessage(message); destChainBridge.processMessage(message, proof); @@ -442,7 +428,7 @@ contract BridgeTest is TestBase { assertEq(status == Bridge.Status.RETRIABLE, true); vm.stopPrank(); - vm.prank(message.user); + vm.prank(message.owner); destChainBridge.retryMessage(message, true); @@ -453,7 +439,7 @@ contract BridgeTest is TestBase { function retry_message_reverts_when_status_non_retriable() public { IBridge.Message memory message = newMessage({ - user: Alice, + owner: Alice, to: Alice, value: 0, gasLimit: 10_000, @@ -470,7 +456,7 @@ contract BridgeTest is TestBase { { vm.startPrank(Alice); IBridge.Message memory message = newMessage({ - user: Bob, + owner: Bob, to: Alice, value: 0, gasLimit: 10_000, @@ -491,7 +477,7 @@ contract BridgeTest is TestBase { { badReceiver = new BadReceiver(); - uint256 dest = 1337; + uint64 dest = 1337; addressManager.setAddress(dest, "taiko", address(crossChainSync)); addressManager.setAddress( @@ -500,9 +486,7 @@ contract BridgeTest is TestBase { addressManager.setAddress(dest, "bridge", address(destChainBridge)); - addressManager.setAddress(dest, "ether_vault", address(etherVault)); - - vm.deal(address(etherVault), 100 ether); + vm.deal(address(bridge), 100 ether); addressManager.setAddress( dest, "signal_service", address(mockProofSignalService) @@ -523,7 +507,7 @@ contract BridgeTest is TestBase { from: 0xDf08F82De32B8d460adbE8D72043E3a7e25A3B39, srcChainId: 1336, destChainId: dest, - user: 0xDf08F82De32B8d460adbE8D72043E3a7e25A3B39, + owner: 0xDf08F82De32B8d460adbE8D72043E3a7e25A3B39, to: 0x200708D76eB1B69761c23821809d53F65049939e, refundTo: 0x10020FCb72e27650651B05eD2CEcA493bC807Ba4, value: 1000, @@ -540,27 +524,27 @@ contract BridgeTest is TestBase { } function newMessage( - address user, + address owner, address to, uint256 value, uint256 gasLimit, uint256 fee, - uint256 destChain + uint64 destChain ) internal view returns (IBridge.Message memory) { return IBridge.Message({ - user: user, + owner: owner, destChainId: destChain, to: to, value: value, fee: fee, id: 0, // placeholder, will be overwritten - from: user, // placeholder, will be overwritten - srcChainId: block.chainid, // will be overwritten - refundTo: user, + from: owner, // placeholder, will be overwritten + srcChainId: uint64(block.chainid), // will be overwritten + refundTo: owner, gasLimit: gasLimit, data: "", memo: "" diff --git a/packages/protocol/test/signal/SignalService.t.sol b/packages/protocol/test/signal/SignalService.t.sol index 5aad33897d..b1bf1f9426 100644 --- a/packages/protocol/test/signal/SignalService.t.sol +++ b/packages/protocol/test/signal/SignalService.t.sol @@ -10,13 +10,15 @@ import { FreeMintERC20 } from "../../contracts/test/erc20/FreeMintERC20.sol"; import { SignalService } from "../../contracts/signal/SignalService.sol"; import { TestBase, DummyCrossChainSync } from "../TestBase.sol"; +import { console2 } from "forge-std/console2.sol"; + contract TestSignalService is TestBase { AddressManager addressManager; SignalService signalService; SignalService destSignalService; DummyCrossChainSync crossChainSync; - uint256 destChainId = 7; + uint64 destChainId = 7; function setUp() public { vm.startPrank(Alice); @@ -27,15 +29,16 @@ contract TestSignalService is TestBase { addressManager.init(); signalService = new SignalService(); - signalService.init(address(addressManager)); + signalService.init(); destSignalService = new SignalService(); - destSignalService.init(address(addressManager)); + destSignalService.init(); crossChainSync = new DummyCrossChainSync(); + crossChainSync.init(address(addressManager)); addressManager.setAddress( - block.chainid, "signal_service", address(signalService) + uint64(block.chainid), "signal_service", address(signalService) ); addressManager.setAddress( @@ -81,28 +84,29 @@ contract TestSignalService is TestBase { } function test_SignalService_proveSignalReceived_L1_L2() public { - uint256 chainId = 11_155_111; // Created the proofs on a deployed - // Sepolia contract, this is why this chainId. + uint64 chainId = 11_155_111; // Created the proofs on a deployed Sepolia + // contract, this is why this chainId. address app = 0x927a146e18294efb36edCacC99D9aCEA6aB16b95; // Mock app, // actually it is an EOA, but it is ok for tests! bytes32 signal = 0x21761f7cd1af3972774272b39a0f4602dbcd418325cddb14e156b4bb073d52a8; bytes memory inclusionProof = - hex"e5a4e3a120be7cf54b321b1863f6772ac6b5776a712628a78149e662c87d93ae1ef2a5b3bd01"; //eth_getProof's + hex"e5a4e3a1209749684f52b5c0717a7ca78127fb56043d637d81763c04e9d30ba4d4746d56e901"; //eth_getProof's // result RLP encoded storage proof bytes32 signalRoot = - 0x15e2682cef63ccbfeb896e5faaf1eeaa2a834301e468c92f9764be56416682d4; //eth_getProof + 0xf7916f389ccda56e3831e115238b7389b30750886785a3c21265601572698f0f; //eth_getProof // result's storage hash vm.startPrank(Alice); - addressManager.setAddress( - block.chainid, "taiko", address(crossChainSync) + signalService.authorize( + address(crossChainSync), bytes32(uint256(block.chainid)) ); crossChainSync.setSyncedData("", signalRoot); SignalService.Proof memory p; SignalService.Hop[] memory h; + p.crossChainSync = address(crossChainSync); p.height = 10; p.storageProof = inclusionProof; p.hops = h; @@ -114,7 +118,7 @@ contract TestSignalService is TestBase { } function test_SignalService_proveSignalReceived_L2_L2() public { - uint256 chainId = 11_155_111; // Created the proofs on a deployed + uint64 chainId = 11_155_111; // Created the proofs on a deployed // Sepolia contract, this is why this chainId. This works as a // static 'chainId' becuase i imitated 2 contracts (L2A and L1 // Signal Service contracts) on Sepolia. @@ -123,24 +127,26 @@ contract TestSignalService is TestBase { // i imitated everything with one 'app' (Bridge) with my same EOA // wallet. bytes32 signal_of_L2A_msgHash = - 0x21761f7cd1af3972774272b39a0f4602dbcd418325cddb14e156b4bb073d52a8; // + 0x21761f7cd1af3972774272b39a0f4602dbcd418325cddb14e156b4bb073d52a8; bytes memory inclusionProof_of_L2A_msgHash = - hex"e5a4e3a120be7cf54b321b1863f6772ac6b5776a712628a78149e662c87d93ae1ef2a5b3bd01"; //eth_getProof's + hex"e5a4e3a1209749684f52b5c0717a7ca78127fb56043d637d81763c04e9d30ba4d4746d56e901"; //eth_getProof's // result RLP encoded storage proof bytes32 signalRoot_of_L2 = - 0x15e2682cef63ccbfeb896e5faaf1eeaa2a834301e468c92f9764be56416682d4; //eth_getProof + 0xf7916f389ccda56e3831e115238b7389b30750886785a3c21265601572698f0f; //eth_getProof // result's storage hash bytes memory hop_inclusionProof_from_L1_SignalService = - hex"e5a4e3a1201a9344e0a9498d6fb8f30b92d061ca7cee3ec0cdf641e63b777b94b5717b21be01"; //eth_getProof's + hex"e5a4e3a120bade38703a7b19341b10a4dd482698dc8ffdd861e83ce41de2980bed39b6a02501"; //eth_getProof's // result RLP encoded storage proof bytes32 l1_common_signalService_root = - 0x630872b5926b611c6dbcff64c181865a376d4e9250b594e8669198e0f19aa9b0; //eth_getProof + 0x5c5fd43df8bcd7ad44cfcae86ed73a11e0baa9a751f0b520d029358ea284833b; //eth_getProof // result's storage hash + // Important to note, we need to have authorized the "relayers' + // addresses" on the source chain we are claiming. + // (TaikoL1 or TaikoL2 depending on where we are) vm.startPrank(Alice); - addressManager.setAddress( - block.chainid, "taiko", address(crossChainSync) - ); + signalService.authorize(address(crossChainSync), bytes32(block.chainid)); + signalService.authorize(address(app), bytes32(uint256(chainId))); vm.startPrank(Alice); addressManager.setAddress(chainId, "taiko", app); @@ -148,17 +154,18 @@ contract TestSignalService is TestBase { crossChainSync.setSyncedData("", l1_common_signalService_root); SignalService.Proof memory p; + p.crossChainSync = address(crossChainSync); p.height = 10; p.storageProof = inclusionProof_of_L2A_msgHash; - // Imagine this scenario: L2A to L2B birdging. + // Imagine this scenario: L2A to L2B bridging. // The 'hop' proof is the one that proves to L2B, that L1 Signal service // contains the signalRoot (as storage slot / leaf) with value 0x1. // The 'normal' proof is the one which proves that the resolving // hop.signalRoot is the one which belongs to L2A, and the proof is // accordingly. SignalService.Hop[] memory h = new SignalService.Hop[](1); - h[0].chainId = chainId; + h[0].signalRootRelay = app; h[0].signalRoot = signalRoot_of_L2; h[0].storageProof = hop_inclusionProof_from_L1_SignalService; diff --git a/packages/protocol/test/tokenvault/ERC1155Vault.t.sol b/packages/protocol/test/tokenvault/ERC1155Vault.t.sol index eb5673c946..acfd0cd560 100644 --- a/packages/protocol/test/tokenvault/ERC1155Vault.t.sol +++ b/packages/protocol/test/tokenvault/ERC1155Vault.t.sol @@ -14,8 +14,10 @@ import { AddressManager } from "../../contracts/common/AddressManager.sol"; import { IBridge, Bridge } from "../../contracts/bridge/Bridge.sol"; import { BaseNFTVault } from "../../contracts/tokenvault/BaseNFTVault.sol"; import { ERC1155Vault } from "../../contracts/tokenvault/ERC1155Vault.sol"; -import { BridgedERC1155 } from "../../contracts/tokenvault/BridgedERC1155.sol"; -import { EtherVault } from "../../contracts/bridge/EtherVault.sol"; +import { + ProxiedBridgedERC1155, + BridgedERC1155 +} from "../../contracts/tokenvault/BridgedERC1155.sol"; import { SignalService } from "../../contracts/signal/SignalService.sol"; import { ICrossChainSync } from "../../contracts/common/ICrossChainSync.sol"; import { ERC1155 } from @@ -40,7 +42,7 @@ contract PrankDestBridge { struct BridgeContext { bytes32 msgHash; address sender; - uint256 srcChainId; + uint64 srcChainId; } BridgeContext ctx; @@ -74,7 +76,7 @@ contract PrankDestBridge { uint256[] memory amounts, bytes32 msgHash, address srcChainERC1155Vault, - uint256 srcChainId, + uint64 srcChainId, uint256 mockLibInvokeMsgValue ) public @@ -117,10 +119,9 @@ contract ERC1155VaultTest is TestBase { ERC1155Vault erc1155Vault; ERC1155Vault destChainErc1155Vault; TestTokenERC1155 ctoken1155; - EtherVault etherVault; SignalService signalService; DummyCrossChainSync crossChainSync; - uint256 destChainId = 19_389; + uint64 destChainId = 19_389; // Need +1 bc. and Amelia is the proxied bridge contracts owner // Change will cause onMessageRecall() test fails, because of @@ -142,10 +143,7 @@ contract ERC1155VaultTest is TestBase { destChainBridge.init(address(addressManager)); signalService = new SignalService(); - signalService.init(address(addressManager)); - - etherVault = new EtherVault(); - etherVault.init(address(addressManager)); + signalService.init(); erc1155Vault = new ERC1155Vault(); erc1155Vault.init(address(addressManager)); @@ -157,26 +155,30 @@ contract ERC1155VaultTest is TestBase { vm.deal(address(destChainIdBridge), 100 ether); mockProofSignalService = new SkipProofCheckSignal(); - mockProofSignalService.init(address(addressManager)); + mockProofSignalService.init(); crossChainSync = new DummyCrossChainSync(); addressManager.setAddress( - block.chainid, "signal_service", address(mockProofSignalService) + uint64(block.chainid), + "signal_service", + address(mockProofSignalService) ); addressManager.setAddress( destChainId, "signal_service", address(mockProofSignalService) ); - addressManager.setAddress(block.chainid, "bridge", address(bridge)); + addressManager.setAddress( + uint64(block.chainid), "bridge", address(bridge) + ); addressManager.setAddress( destChainId, "bridge", address(destChainIdBridge) ); addressManager.setAddress( - block.chainid, "erc1155_vault", address(erc1155Vault) + uint64(block.chainid), "erc1155_vault", address(erc1155Vault) ); addressManager.setAddress( @@ -193,19 +195,28 @@ contract ERC1155VaultTest is TestBase { destChainId, "erc20_vault", address(mockProofSignalService) ); addressManager.setAddress( - block.chainid, "erc721_vault", address(mockProofSignalService) + uint64(block.chainid), + "erc721_vault", + address(mockProofSignalService) + ); + addressManager.setAddress( + uint64(block.chainid), + "erc20_vault", + address(mockProofSignalService) ); + + vm.deal(address(bridge), 100 ether); + + address proxiedBridgedERC1155 = address(new ProxiedBridgedERC1155()); + addressManager.setAddress( - block.chainid, "erc20_vault", address(mockProofSignalService) + destChainId, "proxied_bridged_erc1155", proxiedBridgedERC1155 ); addressManager.setAddress( - block.chainid, "ether_vault", address(etherVault) + uint64(block.chainid), + "proxied_bridged_erc1155", + proxiedBridgedERC1155 ); - // Authorize - etherVault.authorize(address(destChainIdBridge), true); - etherVault.authorize(address(bridge), true); - - vm.deal(address(etherVault), 100 ether); ctoken1155 = new TestTokenERC1155("http://example.host.com/"); vm.stopPrank(); @@ -253,36 +264,6 @@ contract ERC1155VaultTest is TestBase { assertEq(ctoken1155.balanceOf(address(erc1155Vault), 1), 2); } - function test_1155Vault_sendToken_with_invalid_to_address_1155() public { - vm.prank(Alice, Alice); - ctoken1155.setApprovalForAll(address(erc1155Vault), true); - - assertEq(ctoken1155.balanceOf(Alice, 1), 10); - assertEq(ctoken1155.balanceOf(address(erc1155Vault), 1), 0); - - uint256[] memory tokenIds = new uint256[](1); - tokenIds[0] = 1; - - uint256[] memory amounts = new uint256[](1); - amounts[0] = 2; - - BaseNFTVault.BridgeTransferOp memory sendOpts = BaseNFTVault - .BridgeTransferOp( - destChainId, - address(0), - address(ctoken1155), - tokenIds, - amounts, - 140_000, - 140_000, - Alice, - "" - ); - vm.prank(Alice, Alice); - vm.expectRevert(BaseNFTVault.VAULT_INVALID_TO.selector); - erc1155Vault.sendToken{ value: 140_000 }(sendOpts); - } - function test_1155Vault_sendToken_with_invalid_token_address_1155() public { @@ -387,7 +368,7 @@ contract ERC1155VaultTest is TestBase { name: "" }); - uint256 srcChainId = block.chainid; + uint64 srcChainId = uint64(block.chainid); vm.chainId(destChainId); destChainIdBridge.sendReceiveERC1155ToERC1155Vault( @@ -452,7 +433,7 @@ contract ERC1155VaultTest is TestBase { name: "" }); - uint256 srcChainId = block.chainid; + uint64 srcChainId = uint64(block.chainid); vm.chainId(destChainId); destChainIdBridge.sendReceiveERC1155ToERC1155Vault( @@ -561,7 +542,7 @@ contract ERC1155VaultTest is TestBase { name: "" }); - uint256 srcChainId = block.chainid; + uint64 srcChainId = uint64(block.chainid); vm.chainId(destChainId); destChainIdBridge.sendReceiveERC1155ToERC1155Vault( @@ -613,29 +594,12 @@ contract ERC1155VaultTest is TestBase { ); vm.prank(Alice, Alice); - erc1155Vault.sendToken{ value: 140_000 }(sendOpts); + IBridge.Message memory message = + erc1155Vault.sendToken{ value: 140_000 }(sendOpts); assertEq(ctoken1155.balanceOf(Alice, 1), 8); assertEq(ctoken1155.balanceOf(address(erc1155Vault), 1), 2); - // Reconstruct the message. - // Actually the only 2 things absolute necessary to fill are the owner - // and - // srcChain, because we mock the bridge functions, but good to have data - // here so that it could have been hashed back to the exact same bytes32 - // value - if we were not mocking. - IBridge.Message memory message; - message.srcChainId = 31_337; - message.destChainId = destChainId; - message.user = Alice; - message.from = address(erc1155Vault); - message.to = address(destChainErc1155Vault); - message.data = getPreDeterminedDataBytes(); - message.gasLimit = 140_000; - message.fee = 140_000; - message.refundTo = Alice; - message.memo = ""; - bridge.recallMessage(message, bytes("")); // Alice got back her NFTs, and vault has 0 @@ -689,7 +653,7 @@ contract ERC1155VaultTest is TestBase { name: "" }); - uint256 srcChainId = block.chainid; + uint64 srcChainId = uint64(block.chainid); vm.chainId(destChainId); destChainIdBridge.sendReceiveERC1155ToERC1155Vault( @@ -757,7 +721,7 @@ contract ERC1155VaultTest is TestBase { name: "TT" }); - uint256 chainId = block.chainid; + uint64 chainId = uint64(block.chainid); vm.chainId(destChainId); destChainIdBridge.sendReceiveERC1155ToERC1155Vault( @@ -815,7 +779,7 @@ contract ERC1155VaultTest is TestBase { vm.prank(Amelia, Amelia); addressManager.setAddress( - block.chainid, "bridge", address(destChainIdBridge) + uint64(block.chainid), "bridge", address(destChainIdBridge) ); destChainIdBridge.sendReceiveERC1155ToERC1155Vault( @@ -877,7 +841,7 @@ contract ERC1155VaultTest is TestBase { name: "TT" }); - uint256 chainId = block.chainid; + uint64 chainId = uint64(block.chainid); vm.chainId(destChainId); destChainIdBridge.sendReceiveERC1155ToERC1155Vault( @@ -967,7 +931,7 @@ contract ERC1155VaultTest is TestBase { name: "" }); - uint256 srcChainId = block.chainid; + uint64 srcChainId = uint64(block.chainid); vm.chainId(destChainId); destChainIdBridge.sendReceiveERC1155ToERC1155Vault( diff --git a/packages/protocol/test/tokenvault/ERC20Vault.t.sol b/packages/protocol/test/tokenvault/ERC20Vault.t.sol index 3e7473aa3b..7a2cbc583e 100644 --- a/packages/protocol/test/tokenvault/ERC20Vault.t.sol +++ b/packages/protocol/test/tokenvault/ERC20Vault.t.sol @@ -4,10 +4,12 @@ pragma solidity ^0.8.20; import { AddressManager } from "../../contracts/common/AddressManager.sol"; import { AddressResolver } from "../../contracts/common/AddressResolver.sol"; import { Bridge } from "../../contracts/bridge/Bridge.sol"; -import { BridgedERC20 } from "../../contracts/tokenvault/BridgedERC20.sol"; +import { + ProxiedBridgedERC20, + BridgedERC20 +} from "../../contracts/tokenvault/BridgedERC20.sol"; import { FreeMintERC20 } from "../../contracts/test/erc20/FreeMintERC20.sol"; import { SignalService } from "../../contracts/signal/SignalService.sol"; -import { EtherVault } from "../../contracts/bridge/EtherVault.sol"; import { TaikoToken } from "../../contracts/L1/TaikoToken.sol"; import { Test } from "forge-std/Test.sol"; import { ERC20Vault } from "../../contracts/tokenvault/ERC20Vault.sol"; @@ -24,7 +26,7 @@ contract PrankDestBridge { struct Context { bytes32 msgHash; // messageHash address sender; - uint256 srcChainId; + uint64 srcChainId; } constructor(ERC20Vault _erc20Vault) { @@ -46,7 +48,7 @@ contract PrankDestBridge { uint256 amount, bytes32 msgHash, address srcChainERC20Vault, - uint256 srcChainId, + uint64 srcChainId, uint256 mockLibInvokeMsgValue ) public @@ -83,13 +85,12 @@ contract TestERC20Vault is Test { TaikoToken tko; AddressManager addressManager; Bridge bridge; - EtherVault etherVault; ERC20Vault erc20Vault; ERC20Vault destChainIdERC20Vault; PrankDestBridge destChainIdBridge; FreeMintERC20 erc20; SignalService signalService; - uint256 destChainId = 7; + uint64 destChainId = 7; address public constant Alice = 0x10020FCb72e27650651B05eD2CEcA493bC807Ba4; address public constant Bob = 0x200708D76eB1B69761c23821809d53F65049939e; @@ -109,10 +110,9 @@ contract TestERC20Vault is Test { addressManager = new AddressManager(); addressManager.init(); - addressManager.setAddress(block.chainid, "taiko_token", address(tko)); - - etherVault = new EtherVault(); - etherVault.init(address(addressManager)); + addressManager.setAddress( + uint64(block.chainid), "taiko_token", address(tko) + ); erc20Vault = new ERC20Vault(); erc20Vault.init(address(addressManager)); @@ -130,20 +130,18 @@ contract TestERC20Vault is Test { vm.deal(address(destChainIdBridge), 100 ether); signalService = new SignalService(); - signalService.init(address(addressManager)); - - addressManager.setAddress(block.chainid, "bridge", address(bridge)); + signalService.init(); addressManager.setAddress( - block.chainid, "signal_service", address(signalService) + uint64(block.chainid), "bridge", address(bridge) ); addressManager.setAddress( - block.chainid, "erc20_vault", address(erc20Vault) + uint64(block.chainid), "signal_service", address(signalService) ); addressManager.setAddress( - block.chainid, "ether_vault", address(etherVault) + uint64(block.chainid), "erc20_vault", address(erc20Vault) ); addressManager.setAddress( @@ -154,9 +152,15 @@ contract TestERC20Vault is Test { destChainId, "bridge", address(destChainIdBridge) ); - // Authorize - etherVault.authorize(address(destChainIdBridge), true); - etherVault.authorize(address(bridge), true); + address proxiedBridgedERC20 = address(new ProxiedBridgedERC20()); + + addressManager.setAddress( + destChainId, "proxied_bridged_erc20", proxiedBridgedERC20 + ); + + addressManager.setAddress( + uint64(block.chainid), "proxied_bridged_erc20", proxiedBridgedERC20 + ); vm.stopPrank(); } @@ -273,33 +277,13 @@ contract TestERC20Vault is Test { ); } - function test_20Vault_send_erc20_reverts_invalid_to() public { - vm.startPrank(Alice); - - uint256 amount = 1; - - vm.expectRevert(ERC20Vault.VAULT_INVALID_TO.selector); - erc20Vault.sendToken( - ERC20Vault.BridgeTransferOp( - destChainId, - address(0), - address(erc20), - amount, - 1_000_000, - 0, - Bob, - "" - ) - ); - } - function test_20Vault_receive_erc20_canonical_to_dest_chain_transfers_from_canonical_token( ) public { vm.startPrank(Alice); - uint256 srcChainId = block.chainid; + uint64 srcChainId = uint64(block.chainid); vm.chainId(destChainId); erc20.mint(address(erc20Vault)); @@ -331,7 +315,7 @@ contract TestERC20Vault is Test { function test_20Vault_receiveTokens_erc20_with_ether_to_dave() public { vm.startPrank(Alice); - uint256 srcChainId = block.chainid; + uint64 srcChainId = uint64(block.chainid); vm.chainId(destChainId); erc20.mint(address(erc20Vault)); @@ -368,7 +352,7 @@ contract TestERC20Vault is Test { { vm.startPrank(Alice); - uint256 srcChainId = block.chainid; + uint64 srcChainId = uint64(block.chainid); vm.chainId(destChainId); uint256 amount = 1; @@ -399,7 +383,7 @@ contract TestERC20Vault is Test { assertEq(bridgedERC20.balanceOf(Bob), amount); } - function erc20ToCanonicalERC20(uint256 chainId) + function erc20ToCanonicalERC20(uint64 chainId) internal view returns (ERC20Vault.CanonicalERC20 memory) @@ -416,7 +400,7 @@ contract TestERC20Vault is Test { function test_20Vault_upgrade_bridged_tokens_20() public { vm.startPrank(Alice); - uint256 srcChainId = block.chainid; + uint64 srcChainId = uint64(block.chainid); vm.chainId(destChainId); uint256 amount = 1; diff --git a/packages/protocol/test/tokenvault/ERC721Vault.t.sol b/packages/protocol/test/tokenvault/ERC721Vault.t.sol index 2adc5250aa..488a2062a5 100644 --- a/packages/protocol/test/tokenvault/ERC721Vault.t.sol +++ b/packages/protocol/test/tokenvault/ERC721Vault.t.sol @@ -13,8 +13,10 @@ import { AddressManager } from "../../contracts/common/AddressManager.sol"; import { IBridge, Bridge } from "../../contracts/bridge/Bridge.sol"; import { BaseNFTVault } from "../../contracts/tokenvault/BaseNFTVault.sol"; import { ERC721Vault } from "../../contracts/tokenvault/ERC721Vault.sol"; -import { BridgedERC721 } from "../../contracts/tokenvault/BridgedERC721.sol"; -import { EtherVault } from "../../contracts/bridge/EtherVault.sol"; +import { + ProxiedBridgedERC721, + BridgedERC721 +} from "../../contracts/tokenvault/BridgedERC721.sol"; import { SignalService } from "../../contracts/signal/SignalService.sol"; import { ICrossChainSync } from "../../contracts/common/ICrossChainSync.sol"; import { ERC721 } from @@ -61,7 +63,7 @@ contract PrankDestBridge { struct BridgeContext { bytes32 msgHash; address sender; - uint256 chainId; + uint64 chainId; } BridgeContext ctx; @@ -94,7 +96,7 @@ contract PrankDestBridge { uint256[] memory tokenIds, bytes32 msgHash, address srcChainerc721Vault, - uint256 chainId, + uint64 chainId, uint256 mockLibInvokeMsgValue ) public @@ -137,10 +139,9 @@ contract ERC721VaultTest is TestBase { ERC721Vault erc721Vault; ERC721Vault destChainErc721Vault; TestTokenERC721 canonicalToken721; - EtherVault etherVault; SignalService signalService; DummyCrossChainSync crossChainSync; - uint256 destChainId = 19_389; + uint64 destChainId = 19_389; // Need +1 bc. and Amelia is the proxied bridge contracts owner // Change will cause onMessageRecall() test fails, because of @@ -162,10 +163,7 @@ contract ERC721VaultTest is TestBase { destChainBridge.init(address(addressManager)); signalService = new SignalService(); - signalService.init(address(addressManager)); - - etherVault = new EtherVault(); - etherVault.init(address(addressManager)); + signalService.init(); erc721Vault = new ERC721Vault(); erc721Vault.init(address(addressManager)); @@ -177,26 +175,30 @@ contract ERC721VaultTest is TestBase { vm.deal(address(destChainIdBridge), 100 ether); mockProofSignalService = new SkipProofCheckSignal(); - mockProofSignalService.init(address(addressManager)); + mockProofSignalService.init(); crossChainSync = new DummyCrossChainSync(); addressManager.setAddress( - block.chainid, "signal_service", address(mockProofSignalService) + uint64(block.chainid), + "signal_service", + address(mockProofSignalService) ); addressManager.setAddress( destChainId, "signal_service", address(mockProofSignalService) ); - addressManager.setAddress(block.chainid, "bridge", address(bridge)); + addressManager.setAddress( + uint64(block.chainid), "bridge", address(bridge) + ); addressManager.setAddress( destChainId, "bridge", address(destChainIdBridge) ); addressManager.setAddress( - block.chainid, "erc721_vault", address(erc721Vault) + uint64(block.chainid), "erc721_vault", address(erc721Vault) ); addressManager.setAddress( @@ -212,17 +214,22 @@ contract ERC721VaultTest is TestBase { destChainId, "erc20_vault", address(erc721Vault) ); addressManager.setAddress( - block.chainid, "erc1155_vault", address(erc721Vault) + uint64(block.chainid), "erc1155_vault", address(erc721Vault) + ); + addressManager.setAddress( + uint64(block.chainid), "erc20_vault", address(erc721Vault) ); + + address proxiedBridgedERC721 = address(new ProxiedBridgedERC721()); + addressManager.setAddress( - block.chainid, "erc20_vault", address(erc721Vault) + destChainId, "proxied_bridged_erc721", proxiedBridgedERC721 ); addressManager.setAddress( - block.chainid, "ether_vault", address(etherVault) + uint64(block.chainid), + "proxied_bridged_erc721", + proxiedBridgedERC721 ); - // Authorize - etherVault.authorize(address(destChainBridge), true); - etherVault.authorize(address(bridge), true); vm.stopPrank(); @@ -268,35 +275,6 @@ contract ERC721VaultTest is TestBase { assertEq(ERC721(canonicalToken721).ownerOf(1), address(erc721Vault)); } - function test_721Vault_sendToken_with_invalid_to_address_721() public { - vm.prank(Alice, Alice); - canonicalToken721.approve(address(erc721Vault), 1); - - assertEq(canonicalToken721.ownerOf(1), Alice); - - uint256[] memory tokenIds = new uint256[](1); - tokenIds[0] = 1; - - uint256[] memory amounts = new uint256[](1); - amounts[0] = 0; - - BaseNFTVault.BridgeTransferOp memory sendOpts = BaseNFTVault - .BridgeTransferOp( - destChainId, - address(0), - address(canonicalToken721), - tokenIds, - amounts, - 140_000, - 140_000, - Alice, - "" - ); - vm.prank(Alice, Alice); - vm.expectRevert(BaseNFTVault.VAULT_INVALID_TO.selector); - erc721Vault.sendToken{ value: 140_000 }(sendOpts); - } - function test_721Vault_sendToken_with_invalid_token_address() public { vm.prank(Alice, Alice); canonicalToken721.approve(address(erc721Vault), 1); @@ -396,7 +374,7 @@ contract ERC721VaultTest is TestBase { name: "TT" }); - uint256 chainId = block.chainid; + uint64 chainId = uint64(block.chainid); vm.chainId(destChainId); destChainIdBridge.sendReceiveERC721ToERC721Vault( @@ -464,7 +442,7 @@ contract ERC721VaultTest is TestBase { name: "TT" }); - uint256 chainId = block.chainid; + uint64 chainId = uint64(block.chainid); vm.chainId(destChainId); destChainIdBridge.sendReceiveERC721ToERC721Vault( @@ -568,7 +546,7 @@ contract ERC721VaultTest is TestBase { name: "TT" }); - uint256 chainId = block.chainid; + uint64 chainId = uint64(block.chainid); vm.chainId(destChainId); destChainIdBridge.sendReceiveERC721ToERC721Vault( @@ -618,28 +596,11 @@ contract ERC721VaultTest is TestBase { ); vm.prank(Alice, Alice); - erc721Vault.sendToken{ value: 140_000 }(sendOpts); + IBridge.Message memory message = + erc721Vault.sendToken{ value: 140_000 }(sendOpts); assertEq(canonicalToken721.ownerOf(1), address(erc721Vault)); - // Reconstruct the message. - // Actually the only 2 things absolute necessary to fill are the owner - // and - // srcChain, because we mock the bridge functions, but good to have data - // here so that it could have been hashed back to the exact same bytes32 - // value - if we were not mocking. - IBridge.Message memory message; - message.srcChainId = 31_337; - message.destChainId = destChainId; - message.user = Alice; - message.from = address(erc721Vault); - message.to = address(destChainErc721Vault); - message.data = getPreDeterminedDataBytes(); - message.gasLimit = 140_000; - message.fee = 140_000; - message.refundTo = Alice; - message.memo = ""; - bridge.recallMessage(message, bytes("")); // Alice got back her NFT @@ -689,7 +650,7 @@ contract ERC721VaultTest is TestBase { name: "TT" }); - uint256 srcChainId = block.chainid; + uint64 srcChainId = uint64(block.chainid); vm.chainId(destChainId); destChainIdBridge.sendReceiveERC721ToERC721Vault( @@ -757,7 +718,7 @@ contract ERC721VaultTest is TestBase { name: "TT" }); - uint256 chainId = block.chainid; + uint64 chainId = uint64(block.chainid); vm.chainId(destChainId); destChainIdBridge.sendReceiveERC721ToERC721Vault( @@ -812,7 +773,7 @@ contract ERC721VaultTest is TestBase { vm.prank(Amelia, Amelia); addressManager.setAddress( - block.chainid, "bridge", address(destChainIdBridge) + uint64(block.chainid), "bridge", address(destChainIdBridge) ); destChainIdBridge.sendReceiveERC721ToERC721Vault( @@ -874,7 +835,7 @@ contract ERC721VaultTest is TestBase { name: "TT" }); - uint256 chainId = block.chainid; + uint64 chainId = uint64(block.chainid); vm.chainId(destChainId); destChainIdBridge.sendReceiveERC721ToERC721Vault( @@ -966,7 +927,7 @@ contract ERC721VaultTest is TestBase { name: "TT" }); - uint256 chainId = block.chainid; + uint64 chainId = uint64(block.chainid); vm.chainId(destChainId); destChainIdBridge.sendReceiveERC721ToERC721Vault( diff --git a/packages/protocol/test/tokenvault/EtherVault.t.sol b/packages/protocol/test/tokenvault/EtherVault.t.sol deleted file mode 100644 index c04dcc1450..0000000000 --- a/packages/protocol/test/tokenvault/EtherVault.t.sol +++ /dev/null @@ -1,87 +0,0 @@ -// SPDX-License-Identifier: MIT -pragma solidity ^0.8.20; - -import { TestBase } from "../TestBase.sol"; -import { AddressManager } from "../../contracts/common/AddressManager.sol"; -import { EtherVault } from "../../contracts/bridge/EtherVault.sol"; - -contract TestEtherVault is TestBase { - AddressManager addressManager; - EtherVault etherVault; - - function setUp() public { - vm.deal(Alice, 1 ether); - vm.deal(Bob, 1 ether); - addressManager = new AddressManager(); - addressManager.init(); - etherVault = new EtherVault(); - vm.prank(Alice); - etherVault.init(address(addressManager)); - } - - function test_EtherVault_authorize_revert() public { - vm.prank(Bob); - vm.expectRevert("Ownable: caller is not the owner"); - etherVault.authorize(Bob, true); - - vm.prank(Alice); - vm.expectRevert(EtherVault.VAULT_INVALID_PARAMS.selector); - etherVault.authorize(address(0), true); - - vm.startPrank(Alice); - etherVault.authorize(Bob, true); - vm.expectRevert(EtherVault.VAULT_INVALID_PARAMS.selector); - etherVault.authorize(Bob, true); - assertTrue(etherVault.isAuthorized(Bob)); - } - - function test_EtherVault_authorize_authorizes_when_owner_authorizing() - public - { - vm.prank(Alice); - etherVault.authorize(Bob, true); - assertTrue(etherVault.isAuthorized(Bob)); - } - - function test_EtherVault_releaseEther_reverts_when_zero_address() public { - vm.startPrank(Alice); - etherVault.authorize(Alice, true); - _seedEtherVault(); - - vm.expectRevert(EtherVault.VAULT_INVALID_RECIPIENT.selector); - etherVault.releaseEther(address(0), 1 ether); - } - - function test_EtherVault_releaseEther_releases_to_authorized_sender() - public - { - vm.startPrank(Alice); - etherVault.authorize(Alice, true); - _seedEtherVault(); - - uint256 aliceBalanceBefore = Alice.balance; - etherVault.releaseEther(Alice, 1 ether); - uint256 aliceBalanceAfter = Alice.balance; - assertEq(aliceBalanceAfter - aliceBalanceBefore, 1 ether); - vm.stopPrank(); - } - - function test_EtherVault_releaseEther_releases_to_receipient_via_authorized_sender( - ) - public - { - vm.startPrank(Alice); - etherVault.authorize(Alice, true); - _seedEtherVault(); - - uint256 bobBalanceBefore = Bob.balance; - etherVault.releaseEther(Bob, 1 ether); - uint256 bobBalanceAfter = Bob.balance; - assertEq(bobBalanceAfter - bobBalanceBefore, 1 ether); - vm.stopPrank(); - } - - function _seedEtherVault() private { - vm.deal(address(etherVault), 100 ether); - } -} diff --git a/packages/protocol/utils/generate_genesis/erc20.ts b/packages/protocol/utils/generate_genesis/erc20.ts index 6621d40014..cbc7db4ea0 100644 --- a/packages/protocol/utils/generate_genesis/erc20.ts +++ b/packages/protocol/utils/generate_genesis/erc20.ts @@ -15,17 +15,16 @@ export const PREMINT_SEED_ACCOUNT_BALANCE = ethers.BigNumber.from(1024000); // and premints some tokens for the seed accounts given in the configurations. export async function deployERC20( config: any, - result: Result + result: Result, ): Promise { const { contractOwner, chainId, seedAccounts } = config; const alloc: any = {}; const storageLayouts: any = {}; - const artifact = require(path.join( - ARTIFACTS_PATH, - "./RegularERC20.sol/RegularERC20.json" - )); + const artifact = require( + path.join(ARTIFACTS_PATH, "./RegularERC20.sol/RegularERC20.json"), + ); artifact.contractName = "RegularERC20"; @@ -39,9 +38,9 @@ export async function deployERC20( address = ethers.utils.getCreate2Address( contractOwner, ethers.utils.keccak256( - ethers.utils.toUtf8Bytes(`${chainId}${artifact.contractName}`) + ethers.utils.toUtf8Bytes(`${chainId}${artifact.contractName}`), ), - ethers.utils.keccak256(ethers.utils.toUtf8Bytes(artifact.bytecode)) + ethers.utils.keccak256(ethers.utils.toUtf8Bytes(artifact.bytecode)), ); } @@ -65,12 +64,12 @@ export async function deployERC20( }; storageLayouts[artifact.contractName] = await getStorageLayout( - artifact.contractName + artifact.contractName, ); for (const slot of computeStorageSlots( storageLayouts[artifact.contractName], - variables + variables, )) { alloc[address].storage[slot.key] = slot.val; } @@ -78,7 +77,7 @@ export async function deployERC20( result.alloc = Object.assign(result.alloc, alloc); result.storageLayouts = Object.assign( result.storageLayouts, - storageLayouts + storageLayouts, ); return result; diff --git a/packages/protocol/utils/generate_genesis/main.ts b/packages/protocol/utils/generate_genesis/main.ts index 777c48402c..c9b34a2020 100644 --- a/packages/protocol/utils/generate_genesis/main.ts +++ b/packages/protocol/utils/generate_genesis/main.ts @@ -12,9 +12,11 @@ async function main() { throw new Error("missing config json"); } - const config: Config = require(path.isAbsolute(process.argv[2]) - ? process.argv[2] - : path.join(process.cwd(), process.argv[2])); + const config: Config = require( + path.isAbsolute(process.argv[2]) + ? process.argv[2] + : path.join(process.cwd(), process.argv[2]), + ); const contractOwner = config.contractOwner; const chainId = config.chainId; @@ -39,13 +41,13 @@ async function main() { contractOwner, chainId, seedAccounts, - })}` + })}`, ); } console.log("config: %o", config); - console.log("start deploy ProxiedTaikoL2 contract"); + console.log("start deploy ProxiedSingletonTaikoL2 contract"); let result = await deployTaikoL2(config, { alloc: {}, @@ -60,24 +62,31 @@ async function main() { const allocSavedPath = path.join( __dirname, - "../../deployments/genesis_alloc.json" + "../../deployments/genesis_alloc.json", ); fs.writeFileSync(allocSavedPath, JSON.stringify(result.alloc, null, 2)); const layoutSavedPath = path.join( __dirname, - "../../deployments/genesis_storage_layout.json" + "../../deployments/genesis_storage_layout.json", ); fs.writeFileSync( layoutSavedPath, - JSON.stringify(result.storageLayouts, null, 2) + JSON.stringify(result.storageLayouts, null, 2), + ); + + const configJsonSavedPath = path.join( + __dirname, + "../../deployments/genesis_config.json", ); + fs.writeFileSync(configJsonSavedPath, JSON.stringify(config)); console.log("done"); console.log(`alloc JSON saved to ${allocSavedPath}`); console.log(`layout JSON saved to ${layoutSavedPath}`); + console.log(`config JSON saved to ${configJsonSavedPath}`); } main().catch(console.error); diff --git a/packages/protocol/utils/generate_genesis/taikoL2.ts b/packages/protocol/utils/generate_genesis/taikoL2.ts index 462f0e401f..2c639f115c 100644 --- a/packages/protocol/utils/generate_genesis/taikoL2.ts +++ b/packages/protocol/utils/generate_genesis/taikoL2.ts @@ -18,18 +18,19 @@ const ADMIN_SLOT = // deployTaikoL2 generates a L2 genesis alloc of the TaikoL2 contract. export async function deployTaikoL2( config: Config, - result: Result + result: Result, ): Promise { const { contractOwner, chainId, seedAccounts, contractAdmin } = config; const alloc: any = {}; - let etherVaultBalance = ethers.BigNumber.from("2").pow(128).sub(1); // MaxUint128 + // Premint 1 billion ethers to the bridge, current Ethereum's supply is ~120.27M. + let bridgeInitialEtherBalance = ethers.utils.parseEther(`${1_000_000_000}`); for (const seedAccount of seedAccounts) { const accountAddress = Object.keys(seedAccount)[0]; const balance = ethers.utils.parseEther( - `${Object.values(seedAccount)[0]}` + `${Object.values(seedAccount)[0]}`, ); console.log(`seedAccountAddress: ${accountAddress}`); @@ -37,10 +38,10 @@ export async function deployTaikoL2( alloc[accountAddress] = { balance: balance.toHexString() }; - etherVaultBalance = etherVaultBalance.sub(balance); + bridgeInitialEtherBalance = bridgeInitialEtherBalance.sub(balance); } - console.log({ etherVaultBalance }); + console.log({ bridgeInitialEtherBalance }); console.log("\n"); const contractConfigs: any = await generateContractConfigs( @@ -48,7 +49,7 @@ export async function deployTaikoL2( contractAdmin, chainId, config.contractAddresses, - config.param1559 + config.param1559, ); const storageLayouts: any = {}; @@ -64,10 +65,10 @@ export async function deployTaikoL2( code: contractConfig.deployedBytecode, }; - // pre-mint ETHs for EtherVault contract + // pre-mint ETHs for Bridge contract alloc[contractConfig.address].balance = - contractName === "EtherVaultProxy" - ? etherVaultBalance.toHexString() + contractName === "SingletonBridgeProxy" + ? bridgeInitialEtherBalance.toHexString() : "0x0"; // since we enable storageLayout compiler output in hardhat.config.ts, @@ -78,15 +79,17 @@ export async function deployTaikoL2( storageLayoutName = contractName.replace("Proxy", ""); storageLayoutName = `Proxied${storageLayoutName}`; } + storageLayoutName = contractName.includes("AddressManager") + ? "ProxiedAddressManager" + : storageLayoutName; - storageLayouts[contractName] = await getStorageLayout( - storageLayoutName - ); + storageLayouts[contractName] = + await getStorageLayout(storageLayoutName); // initialize contract variables, we only care about the variables // that need to be initialized with non-zero value. const slots = computeStorageSlots( storageLayouts[contractName], - contractConfigs[contractName].variables + contractConfigs[contractName].variables, ); for (const slot of slots) { @@ -95,7 +98,7 @@ export async function deployTaikoL2( if (contractConfigs[contractName].slots) { for (const [slot, val] of Object.entries( - contractConfigs[contractName].slots + contractConfigs[contractName].slots, )) { alloc[contractConfig.address].storage[slot] = val; } @@ -105,7 +108,7 @@ export async function deployTaikoL2( result.alloc = Object.assign(result.alloc, alloc); result.storageLayouts = Object.assign( result.storageLayouts, - storageLayouts + storageLayouts, ); return result; @@ -118,60 +121,96 @@ async function generateContractConfigs( contractAdmin: string, chainId: number, hardCodedAddresses: any, - param1559: any + param1559: any, ): Promise { const contractArtifacts: any = { - // Libraries - LibVaultUtils: require(path.join( - ARTIFACTS_PATH, - "./LibVaultUtils.sol/LibVaultUtils.json" - )), - // Contracts - ProxiedAddressManager: require(path.join( - ARTIFACTS_PATH, - "./AddressManager.sol/ProxiedAddressManager.json" - )), - ProxiedTaikoL2: require(path.join( - ARTIFACTS_PATH, - "./TaikoL2.sol/ProxiedTaikoL2.json" - )), - ProxiedBridge: require(path.join( - ARTIFACTS_PATH, - "./Bridge.sol/ProxiedBridge.json" - )), - ProxiedERC20Vault: require(path.join( - ARTIFACTS_PATH, - "./ERC20Vault.sol/ProxiedERC20Vault.json" - )), - ProxiedERC721Vault: require(path.join( - ARTIFACTS_PATH, - "./ERC721Vault.sol/ProxiedERC721Vault.json" - )), - ProxiedERC1155Vault: require(path.join( - ARTIFACTS_PATH, - "./ERC1155Vault.sol/ProxiedERC1155Vault.json" - )), - ProxiedEtherVault: require(path.join( - ARTIFACTS_PATH, - "./EtherVault.sol/ProxiedEtherVault.json" - )), - ProxiedSignalService: require(path.join( - ARTIFACTS_PATH, - "./SignalService.sol/ProxiedSignalService.json" - )), + // ============ Contracts ============ + // Singletons + ProxiedSingletonBridge: require( + path.join( + ARTIFACTS_PATH, + "./Bridge.sol/ProxiedSingletonBridge.json", + ), + ), + ProxiedSingletonERC20Vault: require( + path.join( + ARTIFACTS_PATH, + "./ERC20Vault.sol/ProxiedSingletonERC20Vault.json", + ), + ), + ProxiedSingletonERC721Vault: require( + path.join( + ARTIFACTS_PATH, + "./ERC721Vault.sol/ProxiedSingletonERC721Vault.json", + ), + ), + ProxiedSingletonERC1155Vault: require( + path.join( + ARTIFACTS_PATH, + "./ERC1155Vault.sol/ProxiedSingletonERC1155Vault.json", + ), + ), + ProxiedSingletonSignalService: require( + path.join( + ARTIFACTS_PATH, + "./SignalService.sol/ProxiedSingletonSignalService.json", + ), + ), + ProxiedSingletonAddressManagerForSingletons: require( + path.join( + ARTIFACTS_PATH, + "./AddressManager.sol/ProxiedAddressManager.json", + ), + ), + ProxiedBridgedERC20: require( + path.join( + ARTIFACTS_PATH, + "./BridgedERC20.sol/ProxiedBridgedERC20.json", + ), + ), + ProxiedBridgedERC721: require( + path.join( + ARTIFACTS_PATH, + "./BridgedERC721.sol/ProxiedBridgedERC721.json", + ), + ), + ProxiedBridgedERC1155: require( + path.join( + ARTIFACTS_PATH, + "./BridgedERC1155.sol/ProxiedBridgedERC1155.json", + ), + ), + // Non-singletons + ProxiedSingletonTaikoL2: require( + path.join( + ARTIFACTS_PATH, + "./TaikoL2.sol/ProxiedSingletonTaikoL2.json", + ), + ), + ProxiedAddressManager: require( + path.join( + ARTIFACTS_PATH, + "./AddressManager.sol/ProxiedAddressManager.json", + ), + ), }; - const proxy = require(path.join( - ARTIFACTS_PATH, - "./TransparentUpgradeableProxy.sol/TransparentUpgradeableProxy.json" - )); - contractArtifacts.TaikoL2Proxy = proxy; - contractArtifacts.BridgeProxy = proxy; - contractArtifacts.ERC20VaultProxy = proxy; - contractArtifacts.ERC721VaultProxy = proxy; - contractArtifacts.ERC1155VaultProxy = proxy; - contractArtifacts.EtherVaultProxy = proxy; - contractArtifacts.SignalServiceProxy = proxy; + const proxy = require( + path.join( + ARTIFACTS_PATH, + "./TransparentUpgradeableProxy.sol/TransparentUpgradeableProxy.json", + ), + ); + + // Singletons + contractArtifacts.SingletonBridgeProxy = proxy; + contractArtifacts.SingletonERC20VaultProxy = proxy; + contractArtifacts.SingletonERC721VaultProxy = proxy; + contractArtifacts.SingletonERC1155VaultProxy = proxy; + contractArtifacts.SingletonSignalServiceProxy = proxy; + contractArtifacts.SingletonAddressManagerForSingletonsProxy = proxy; + // Non-singletons + contractArtifacts.SingletonTaikoL2Proxy = proxy; contractArtifacts.AddressManagerProxy = proxy; const addressMap: any = {}; @@ -180,22 +219,22 @@ async function generateContractConfigs( let bytecode = (artifact as any).bytecode; switch (contractName) { - case "ProxiedTaikoL2": + case "ProxiedSingletonTaikoL2": bytecode = linkContractLibs( - contractArtifacts.ProxiedTaikoL2, - addressMap + contractArtifacts.ProxiedSingletonTaikoL2, + addressMap, ); break; - case "ProxiedBridge": + case "ProxiedSingletonBridge": bytecode = linkContractLibs( - contractArtifacts.ProxiedBridge, - addressMap + contractArtifacts.ProxiedSingletonBridge, + addressMap, ); break; - case "ProxiedSignalService": + case "ProxiedSingletonSignalService": bytecode = linkContractLibs( - contractArtifacts.ProxiedSignalService, - addressMap + contractArtifacts.ProxiedSingletonSignalService, + addressMap, ); break; default: @@ -211,9 +250,9 @@ async function generateContractConfigs( addressMap[contractName] = ethers.utils.getCreate2Address( contractOwner, ethers.utils.keccak256( - ethers.utils.toUtf8Bytes(`${chainId}${contractName}`) + ethers.utils.toUtf8Bytes(`${chainId}${contractName}`), ), - ethers.utils.keccak256(ethers.utils.toUtf8Bytes(bytecode)) + ethers.utils.keccak256(ethers.utils.toUtf8Bytes(bytecode)), ); } } @@ -222,107 +261,105 @@ async function generateContractConfigs( console.log(addressMap); return { - // Libraries - ProxiedAddressManager: { - address: addressMap.ProxiedAddressManager, + // Singletons + ProxiedSingletonAddressManagerForSingletons: { + address: addressMap.ProxiedSingletonAddressManagerForSingletons, deployedBytecode: - contractArtifacts.ProxiedAddressManager.deployedBytecode.object, + contractArtifacts.ProxiedSingletonAddressManagerForSingletons + .deployedBytecode.object, }, - AddressManagerProxy: { - address: addressMap.AddressManagerProxy, + SingletonAddressManagerForSingletonsProxy: { + address: addressMap.SingletonAddressManagerForSingletonsProxy, deployedBytecode: - contractArtifacts.AddressManagerProxy.deployedBytecode.object, + contractArtifacts.SingletonAddressManagerForSingletonsProxy + .deployedBytecode.object, variables: { // initializer _initialized: 1, _initializing: false, - // OwnableUpgradeable + // Ownable2StepUpgradeable _owner: contractOwner, + _pendingOwner: ethers.constants.AddressZero, // AddressManager addresses: { [chainId]: { [ethers.utils.hexlify( - ethers.utils.toUtf8Bytes("taiko") - )]: addressMap.TaikoL2Proxy, + ethers.utils.toUtf8Bytes("bridge"), + )]: addressMap.SingletonBridgeProxy, [ethers.utils.hexlify( - ethers.utils.toUtf8Bytes("bridge") - )]: addressMap.BridgeProxy, + ethers.utils.toUtf8Bytes("erc20_vault"), + )]: addressMap.SingletonERC20VaultProxy, [ethers.utils.hexlify( - ethers.utils.toUtf8Bytes("erc20_vault") - )]: addressMap.ERC20VaultProxy, + ethers.utils.toUtf8Bytes("erc721_vault"), + )]: addressMap.SingletonERC721VaultProxy, [ethers.utils.hexlify( - ethers.utils.toUtf8Bytes("erc721_vault") - )]: addressMap.ERC721VaultProxy, + ethers.utils.toUtf8Bytes("erc1155_vault"), + )]: addressMap.SingletonERC1155VaultProxy, [ethers.utils.hexlify( - ethers.utils.toUtf8Bytes("erc1155_vault") - )]: addressMap.ERC1155VaultProxy, + ethers.utils.toUtf8Bytes("signal_service"), + )]: addressMap.SingletonSignalServiceProxy, [ethers.utils.hexlify( - ethers.utils.toUtf8Bytes("ether_vault") - )]: addressMap.EtherVaultProxy, + ethers.utils.toUtf8Bytes("proxied_bridged_erc20"), + )]: addressMap.ProxiedBridgedERC20, [ethers.utils.hexlify( - ethers.utils.toUtf8Bytes("signal_service") - )]: addressMap.SignalServiceProxy, + ethers.utils.toUtf8Bytes("proxied_bridged_erc721"), + )]: addressMap.ProxiedBridgedERC721, + [ethers.utils.hexlify( + ethers.utils.toUtf8Bytes("proxied_bridged_erc1155"), + )]: addressMap.ProxiedBridgedERC1155, }, }, }, slots: { [ADMIN_SLOT]: contractAdmin, - [IMPLEMENTATION_SLOT]: addressMap.ProxiedAddressManager, + [IMPLEMENTATION_SLOT]: + addressMap.ProxiedSingletonAddressManagerForSingletons, }, isProxy: true, }, - ProxiedTaikoL2: { - address: addressMap.ProxiedTaikoL2, + ProxiedSingletonBridge: { + address: addressMap.ProxiedSingletonBridge, deployedBytecode: linkContractLibs( - contractArtifacts.ProxiedTaikoL2, - addressMap + contractArtifacts.ProxiedSingletonBridge, + addressMap, ), }, - TaikoL2Proxy: { - address: addressMap.TaikoL2Proxy, + SingletonBridgeProxy: { + address: addressMap.SingletonBridgeProxy, deployedBytecode: - contractArtifacts.TaikoL2Proxy.deployedBytecode.object, + contractArtifacts.SingletonBridgeProxy.deployedBytecode.object, variables: { - // TaikoL2 - // OwnableUpgradeable - _owner: contractOwner, + // initializer + _initialized: 1, + _initializing: false, // ReentrancyGuardUpgradeable _reentry: 1, // _FALSE _paused: 1, // _FALSE - // keccak256(abi.encodePacked(block.chainid, basefee, ancestors)) - publicInputHash: `${ethers.utils.solidityKeccak256( - ["bytes32[256]"], - [ - new Array(255) - .fill(ethers.constants.HashZero) - .concat([ - ethers.utils.hexZeroPad( - ethers.utils.hexlify(chainId), - 32 - ), - ]), - ] - )}`, + // Ownable2StepUpgradeable + _owner: contractOwner, + _pendingOwner: ethers.constants.AddressZero, // AddressResolver - addressManager: addressMap.AddressManagerProxy, + addressManager: + addressMap.SingletonAddressManagerForSingletonsProxy, }, slots: { [ADMIN_SLOT]: contractAdmin, - [IMPLEMENTATION_SLOT]: addressMap.ProxiedTaikoL2, + [IMPLEMENTATION_SLOT]: addressMap.ProxiedSingletonBridge, }, isProxy: true, }, - ProxiedBridge: { - address: addressMap.ProxiedBridge, + ProxiedSingletonERC20Vault: { + address: addressMap.ProxiedSingletonERC20Vault, deployedBytecode: linkContractLibs( - contractArtifacts.ProxiedBridge, - addressMap + contractArtifacts.ProxiedSingletonERC20Vault, + addressMap, ), }, - BridgeProxy: { - address: addressMap.BridgeProxy, + SingletonERC20VaultProxy: { + address: addressMap.SingletonERC20VaultProxy, deployedBytecode: - contractArtifacts.BridgeProxy.deployedBytecode.object, + contractArtifacts.SingletonERC20VaultProxy.deployedBytecode + .object, variables: { // initializer _initialized: 1, @@ -330,28 +367,31 @@ async function generateContractConfigs( // ReentrancyGuardUpgradeable _reentry: 1, // _FALSE _paused: 1, // _FALSE - // OwnableUpgradeable + // Ownable2StepUpgradeable _owner: contractOwner, + _pendingOwner: ethers.constants.AddressZero, // AddressResolver - addressManager: addressMap.AddressManagerProxy, + addressManager: + addressMap.SingletonAddressManagerForSingletonsProxy, }, slots: { [ADMIN_SLOT]: contractAdmin, - [IMPLEMENTATION_SLOT]: addressMap.ProxiedBridge, + [IMPLEMENTATION_SLOT]: addressMap.ProxiedSingletonERC20Vault, }, isProxy: true, }, - ProxiedERC20Vault: { - address: addressMap.ProxiedERC20Vault, + ProxiedSingletonERC721Vault: { + address: addressMap.ProxiedSingletonERC721Vault, deployedBytecode: linkContractLibs( - contractArtifacts.ProxiedERC20Vault, - addressMap + contractArtifacts.ProxiedSingletonERC721Vault, + addressMap, ), }, - ERC20VaultProxy: { - address: addressMap.ERC20VaultProxy, + SingletonERC721VaultProxy: { + address: addressMap.SingletonERC721VaultProxy, deployedBytecode: - contractArtifacts.ERC20VaultProxy.deployedBytecode.object, + contractArtifacts.SingletonERC721VaultProxy.deployedBytecode + .object, variables: { // initializer _initialized: 1, @@ -359,28 +399,31 @@ async function generateContractConfigs( // ReentrancyGuardUpgradeable _reentry: 1, // _FALSE _paused: 1, // _FALSE - // OwnableUpgradeable + // Ownable2StepUpgradeable _owner: contractOwner, + _pendingOwner: ethers.constants.AddressZero, // AddressResolver - addressManager: addressMap.AddressManagerProxy, + addressManager: + addressMap.SingletonAddressManagerForSingletonsProxy, }, slots: { [ADMIN_SLOT]: contractAdmin, - [IMPLEMENTATION_SLOT]: addressMap.ProxiedERC20Vault, + [IMPLEMENTATION_SLOT]: addressMap.ProxiedSingletonERC721Vault, }, isProxy: true, }, - ProxiedERC721Vault: { - address: addressMap.ProxiedERC721Vault, + ProxiedSingletonERC1155Vault: { + address: addressMap.ProxiedSingletonERC1155Vault, deployedBytecode: linkContractLibs( - contractArtifacts.ProxiedERC721Vault, - addressMap + contractArtifacts.ProxiedSingletonERC1155Vault, + addressMap, ), }, - ERC721VaultProxy: { - address: addressMap.ERC721VaultProxy, + SingletonERC1155VaultProxy: { + address: addressMap.SingletonERC1155VaultProxy, deployedBytecode: - contractArtifacts.ERC721VaultProxy.deployedBytecode.object, + contractArtifacts.SingletonERC1155VaultProxy.deployedBytecode + .object, variables: { // initializer _initialized: 1, @@ -388,28 +431,46 @@ async function generateContractConfigs( // ReentrancyGuardUpgradeable _reentry: 1, // _FALSE _paused: 1, // _FALSE - // OwnableUpgradeable + // Ownable2StepUpgradeable _owner: contractOwner, + _pendingOwner: ethers.constants.AddressZero, // AddressResolver - addressManager: addressMap.AddressManagerProxy, + addressManager: + addressMap.SingletonAddressManagerForSingletonsProxy, }, slots: { [ADMIN_SLOT]: contractAdmin, - [IMPLEMENTATION_SLOT]: addressMap.ProxiedERC721Vault, + [IMPLEMENTATION_SLOT]: addressMap.ProxiedSingletonERC1155Vault, }, isProxy: true, }, - ProxiedERC1155Vault: { - address: addressMap.ProxiedERC1155Vault, + ProxiedSingletonSignalService: { + address: addressMap.ProxiedSingletonSignalService, deployedBytecode: linkContractLibs( - contractArtifacts.ProxiedERC1155Vault, - addressMap + contractArtifacts.ProxiedSingletonSignalService, + addressMap, ), }, - ERC1155VaultProxy: { - address: addressMap.ERC1155VaultProxy, + ProxiedBridgedERC20: { + address: addressMap.ProxiedBridgedERC20, + deployedBytecode: + contractArtifacts.ProxiedBridgedERC20.deployedBytecode.object, + }, + ProxiedBridgedERC721: { + address: addressMap.ProxiedBridgedERC721, deployedBytecode: - contractArtifacts.ERC1155VaultProxy.deployedBytecode.object, + contractArtifacts.ProxiedBridgedERC721.deployedBytecode.object, + }, + ProxiedBridgedERC1155: { + address: addressMap.ProxiedBridgedERC1155, + deployedBytecode: + contractArtifacts.ProxiedBridgedERC1155.deployedBytecode.object, + }, + SingletonSignalServiceProxy: { + address: addressMap.SingletonSignalServiceProxy, + deployedBytecode: + contractArtifacts.SingletonSignalServiceProxy.deployedBytecode + .object, variables: { // initializer _initialized: 1, @@ -417,73 +478,93 @@ async function generateContractConfigs( // ReentrancyGuardUpgradeable _reentry: 1, // _FALSE _paused: 1, // _FALSE - // OwnableUpgradeable + // Ownable2StepUpgradeable _owner: contractOwner, - // AddressResolver - addressManager: addressMap.AddressManagerProxy, + _pendingOwner: ethers.constants.AddressZero, + authorizedAddresses: { + [addressMap.SingletonTaikoL2Proxy]: ethers.utils.hexZeroPad( + ethers.utils.hexlify(chainId), + 32, + ), + }, }, slots: { [ADMIN_SLOT]: contractAdmin, - [IMPLEMENTATION_SLOT]: addressMap.ProxiedERC1155Vault, + [IMPLEMENTATION_SLOT]: addressMap.ProxiedSingletonSignalService, }, isProxy: true, }, - ProxiedEtherVault: { - address: addressMap.ProxiedEtherVault, + ProxiedAddressManager: { + address: addressMap.ProxiedAddressManager, deployedBytecode: - contractArtifacts.ProxiedEtherVault.deployedBytecode.object, + contractArtifacts.ProxiedAddressManager.deployedBytecode.object, + }, + // Non-singletons + ProxiedSingletonTaikoL2: { + address: addressMap.ProxiedSingletonTaikoL2, + deployedBytecode: linkContractLibs( + contractArtifacts.ProxiedSingletonTaikoL2, + addressMap, + ), }, - EtherVaultProxy: { - address: addressMap.EtherVaultProxy, + SingletonTaikoL2Proxy: { + address: addressMap.SingletonTaikoL2Proxy, deployedBytecode: - contractArtifacts.EtherVaultProxy.deployedBytecode.object, + contractArtifacts.SingletonTaikoL2Proxy.deployedBytecode.object, variables: { - // initializer - _initialized: 1, - _initializing: false, - // ReentrancyGuardUpgradeable - _reentry: 1, // _FALSE - _paused: 1, // _FALSE - // OwnableUpgradeable + // TaikoL2 + // Ownable2StepUpgradeable _owner: contractOwner, - // AddressResolver - addressManager: addressMap.AddressManagerProxy, - // EtherVault - // Authorize L2 bridge - isAuthorized: { [`${addressMap.BridgeProxy}`]: true }, + _pendingOwner: ethers.constants.AddressZero, + signalService: addressMap.SingletonSignalServiceProxy, + gasExcess: param1559.gasExcess, + // keccak256(abi.encodePacked(block.chainid, basefee, ancestors)) + publicInputHash: `${ethers.utils.solidityKeccak256( + ["bytes32[256]"], + [ + new Array(255) + .fill(ethers.constants.HashZero) + .concat([ + ethers.utils.hexZeroPad( + ethers.utils.hexlify(chainId), + 32, + ), + ]), + ], + )}`, }, slots: { [ADMIN_SLOT]: contractAdmin, - [IMPLEMENTATION_SLOT]: addressMap.ProxiedEtherVault, + [IMPLEMENTATION_SLOT]: addressMap.ProxiedSingletonTaikoL2, }, isProxy: true, }, - ProxiedSignalService: { - address: addressMap.ProxiedSignalService, - deployedBytecode: linkContractLibs( - contractArtifacts.ProxiedSignalService, - addressMap - ), - }, - SignalServiceProxy: { - address: addressMap.SignalServiceProxy, + AddressManagerProxy: { + address: addressMap.AddressManagerProxy, deployedBytecode: - contractArtifacts.SignalServiceProxy.deployedBytecode.object, + contractArtifacts.AddressManagerProxy.deployedBytecode.object, variables: { // initializer _initialized: 1, _initializing: false, - // ReentrancyGuardUpgradeable - _reentry: 1, // _FALSE - _paused: 1, // _FALSE - // OwnableUpgradeable + // Ownable2StepUpgradeable _owner: contractOwner, - // AddressResolver - addressManager: addressMap.AddressManagerProxy, + _pendingOwner: ethers.constants.AddressZero, + // AddressManager + addresses: { + [chainId]: { + [ethers.utils.hexlify( + ethers.utils.toUtf8Bytes("taiko"), + )]: addressMap.SingletonTaikoL2Proxy, + [ethers.utils.hexlify( + ethers.utils.toUtf8Bytes("signal_service"), + )]: addressMap.SingletonSignalServiceProxy, + }, + }, }, slots: { [ADMIN_SLOT]: contractAdmin, - [IMPLEMENTATION_SLOT]: addressMap.ProxiedSignalService, + [IMPLEMENTATION_SLOT]: addressMap.ProxiedAddressManager, }, isProxy: true, }, @@ -498,8 +579,8 @@ function linkContractLibs(artifact: any, addressMap: any) { getLinkLibs( artifact, linker.findLinkReferences(artifact.deployedBytecode.object), - addressMap - ) + addressMap, + ), ); if (ethers.utils.toUtf8Bytes(linkedBytecode).includes("$__")) { @@ -520,11 +601,11 @@ function getLinkLibs(artifact: any, linkRefs: any, addressMap: any) { const linkRefKey: any = Object.keys(linkRefs).find( (key) => linkRefs[key][0].start === - linkReference[contractName][0].start + 1 + linkReference[contractName][0].start + 1, ); result[linkRefKey] = addressMap[contractName]; - } + }, ); return result; diff --git a/packages/relayer/.l1indexer.example.env b/packages/relayer/.l1indexer.example.env index fa3d5e8b0a..4f6fe42409 100644 --- a/packages/relayer/.l1indexer.example.env +++ b/packages/relayer/.l1indexer.example.env @@ -11,7 +11,7 @@ QUEUE_USER=guest QUEUE_PASSWORD=guest QUEUE_HOST=localhost QUEUE_PORT=5672 -SRC_BRIDGE_ADDRESS=0x9A9f2CCfdE556A7E9Ff0848998Aa4a0CFD8863AE +SRC_BRIDGE_ADDRESS=0x3Aa5ebB10DC797CAC828524e59A333d0A371443c DEST_BRIDGE_ADDRESS=0x1000777700000000000000000000000000000004 SRC_TAIKO_ADDRESS=0x0DCd1Bf9A1b36cE34237eEaFef220932846BCD82 SRC_RPC_URL=wss://l1ws.internal.taiko.xyz diff --git a/packages/relayer/ERC1155Vault.json b/packages/relayer/ERC1155Vault.json index 9e347629b3..135cd9d680 100644 --- a/packages/relayer/ERC1155Vault.json +++ b/packages/relayer/ERC1155Vault.json @@ -24,17 +24,22 @@ "name": "RESOLVER_INVALID_MANAGER", "type": "error" }, + { + "inputs": [], + "name": "RESOLVER_UNEXPECTED_CHAINID", + "type": "error" + }, { "inputs": [ { - "internalType": "uint256", + "internalType": "uint64", "name": "chainId", - "type": "uint256" + "type": "uint64" }, { - "internalType": "bytes32", + "internalType": "string", "name": "name", - "type": "bytes32" + "type": "string" } ], "name": "RESOLVER_ZERO_ADDR", @@ -60,11 +65,6 @@ "name": "VAULT_INVALID_SRC_CHAIN_ID", "type": "error" }, - { - "inputs": [], - "name": "VAULT_INVALID_TO", - "type": "error" - }, { "inputs": [], "name": "VAULT_INVALID_TOKEN", @@ -90,6 +90,11 @@ "name": "VAULT_MESSAGE_RELEASED_ALREADY", "type": "error" }, + { + "inputs": [], + "name": "VAULT_PERMISSION_DENIED", + "type": "error" + }, { "inputs": [], "name": "VAULT_TOKEN_ARRAY_MISMATCH", @@ -100,9 +105,9 @@ "inputs": [ { "indexed": true, - "internalType": "uint256", + "internalType": "uint64", "name": "chainId", - "type": "uint256" + "type": "uint64" }, { "indexed": true, @@ -145,6 +150,25 @@ "name": "Initialized", "type": "event" }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "previousOwner", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "newOwner", + "type": "address" + } + ], + "name": "OwnershipTransferStarted", + "type": "event" + }, { "anonymous": false, "inputs": [ @@ -200,9 +224,9 @@ }, { "indexed": false, - "internalType": "uint256", + "internalType": "uint64", "name": "srcChainId", - "type": "uint256" + "type": "uint64" }, { "indexed": false, @@ -286,9 +310,9 @@ }, { "indexed": false, - "internalType": "uint256", + "internalType": "uint64", "name": "destChainId", - "type": "uint256" + "type": "uint64" }, { "indexed": false, @@ -351,6 +375,26 @@ "stateMutability": "view", "type": "function" }, + { + "inputs": [], + "name": "MAX_TOKEN_PER_TXN", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "acceptOwnership", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, { "inputs": [], "name": "addressManager", @@ -375,9 +419,9 @@ "name": "bridgedToCanonical", "outputs": [ { - "internalType": "uint256", + "internalType": "uint64", "name": "chainId", - "type": "uint256" + "type": "uint64" }, { "internalType": "address", @@ -436,22 +480,16 @@ "type": "function" }, { - "inputs": [ - { - "internalType": "address", - "name": "", - "type": "address" - } - ], - "name": "isBridgedToken", + "inputs": [], + "name": "name", "outputs": [ { - "internalType": "bool", + "internalType": "bytes32", "name": "", - "type": "bool" + "type": "bytes32" } ], - "stateMutability": "view", + "stateMutability": "pure", "type": "function" }, { @@ -547,18 +585,18 @@ "type": "address" }, { - "internalType": "uint256", + "internalType": "uint64", "name": "srcChainId", - "type": "uint256" + "type": "uint64" }, { - "internalType": "uint256", + "internalType": "uint64", "name": "destChainId", - "type": "uint256" + "type": "uint64" }, { "internalType": "address", - "name": "user", + "name": "owner", "type": "address" }, { @@ -645,14 +683,27 @@ "stateMutability": "view", "type": "function" }, + { + "inputs": [], + "name": "pendingOwner", + "outputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, { "inputs": [ { "components": [ { - "internalType": "uint256", + "internalType": "uint64", "name": "chainId", - "type": "uint256" + "type": "uint64" }, { "internalType": "address", @@ -710,9 +761,9 @@ { "inputs": [ { - "internalType": "uint256", + "internalType": "uint64", "name": "chainId", - "type": "uint256" + "type": "uint64" }, { "internalType": "bytes32", @@ -765,9 +816,9 @@ { "components": [ { - "internalType": "uint256", + "internalType": "uint64", "name": "destChainId", - "type": "uint256" + "type": "uint64" }, { "internalType": "address", @@ -811,12 +862,80 @@ } ], "internalType": "struct BaseNFTVault.BridgeTransferOp", - "name": "opt", + "name": "op", "type": "tuple" } ], "name": "sendToken", - "outputs": [], + "outputs": [ + { + "components": [ + { + "internalType": "uint128", + "name": "id", + "type": "uint128" + }, + { + "internalType": "address", + "name": "from", + "type": "address" + }, + { + "internalType": "uint64", + "name": "srcChainId", + "type": "uint64" + }, + { + "internalType": "uint64", + "name": "destChainId", + "type": "uint64" + }, + { + "internalType": "address", + "name": "owner", + "type": "address" + }, + { + "internalType": "address", + "name": "to", + "type": "address" + }, + { + "internalType": "address", + "name": "refundTo", + "type": "address" + }, + { + "internalType": "uint256", + "name": "value", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "fee", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "gasLimit", + "type": "uint256" + }, + { + "internalType": "bytes", + "name": "data", + "type": "bytes" + }, + { + "internalType": "string", + "name": "memo", + "type": "string" + } + ], + "internalType": "struct IBridge.Message", + "name": "_message", + "type": "tuple" + } + ], "stateMutability": "payable", "type": "function" }, diff --git a/packages/relayer/ERC20Vault.json b/packages/relayer/ERC20Vault.json index dfb9732b6d..c857c0bbc0 100644 --- a/packages/relayer/ERC20Vault.json +++ b/packages/relayer/ERC20Vault.json @@ -24,17 +24,22 @@ "name": "RESOLVER_INVALID_MANAGER", "type": "error" }, + { + "inputs": [], + "name": "RESOLVER_UNEXPECTED_CHAINID", + "type": "error" + }, { "inputs": [ { - "internalType": "uint256", + "internalType": "uint64", "name": "chainId", - "type": "uint256" + "type": "uint64" }, { - "internalType": "bytes32", + "internalType": "string", "name": "name", - "type": "bytes32" + "type": "string" } ], "name": "RESOLVER_ZERO_ADDR", @@ -55,11 +60,6 @@ "name": "VAULT_INVALID_SRC_CHAIN_ID", "type": "error" }, - { - "inputs": [], - "name": "VAULT_INVALID_TO", - "type": "error" - }, { "inputs": [], "name": "VAULT_INVALID_TOKEN", @@ -80,6 +80,11 @@ "name": "VAULT_MESSAGE_RELEASED_ALREADY", "type": "error" }, + { + "inputs": [], + "name": "VAULT_PERMISSION_DENIED", + "type": "error" + }, { "anonymous": false, "inputs": [ @@ -136,6 +141,25 @@ "name": "Initialized", "type": "event" }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "previousOwner", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "newOwner", + "type": "address" + } + ], + "name": "OwnershipTransferStarted", + "type": "event" + }, { "anonymous": false, "inputs": [ @@ -191,9 +215,9 @@ }, { "indexed": false, - "internalType": "uint256", + "internalType": "uint64", "name": "srcChainId", - "type": "uint256" + "type": "uint64" }, { "indexed": false, @@ -265,9 +289,9 @@ }, { "indexed": false, - "internalType": "uint256", + "internalType": "uint64", "name": "destChainId", - "type": "uint256" + "type": "uint64" }, { "indexed": false, @@ -298,6 +322,13 @@ "name": "Unpaused", "type": "event" }, + { + "inputs": [], + "name": "acceptOwnership", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, { "inputs": [], "name": "addressManager", @@ -322,9 +353,9 @@ "name": "bridgedToCanonical", "outputs": [ { - "internalType": "uint256", + "internalType": "uint64", "name": "chainId", - "type": "uint256" + "type": "uint64" }, { "internalType": "address", @@ -388,22 +419,16 @@ "type": "function" }, { - "inputs": [ - { - "internalType": "address", - "name": "", - "type": "address" - } - ], - "name": "isBridgedToken", + "inputs": [], + "name": "name", "outputs": [ { - "internalType": "bool", + "internalType": "bytes32", "name": "", - "type": "bool" + "type": "bytes32" } ], - "stateMutability": "view", + "stateMutability": "pure", "type": "function" }, { @@ -421,18 +446,18 @@ "type": "address" }, { - "internalType": "uint256", + "internalType": "uint64", "name": "srcChainId", - "type": "uint256" + "type": "uint64" }, { - "internalType": "uint256", + "internalType": "uint64", "name": "destChainId", - "type": "uint256" + "type": "uint64" }, { "internalType": "address", - "name": "user", + "name": "owner", "type": "address" }, { @@ -519,14 +544,27 @@ "stateMutability": "view", "type": "function" }, + { + "inputs": [], + "name": "pendingOwner", + "outputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, { "inputs": [ { "components": [ { - "internalType": "uint256", + "internalType": "uint64", "name": "chainId", - "type": "uint256" + "type": "uint64" }, { "internalType": "address", @@ -584,9 +622,9 @@ { "inputs": [ { - "internalType": "uint256", + "internalType": "uint64", "name": "chainId", - "type": "uint256" + "type": "uint64" }, { "internalType": "bytes32", @@ -639,9 +677,9 @@ { "components": [ { - "internalType": "uint256", + "internalType": "uint64", "name": "destChainId", - "type": "uint256" + "type": "uint64" }, { "internalType": "address", @@ -680,12 +718,80 @@ } ], "internalType": "struct ERC20Vault.BridgeTransferOp", - "name": "opt", + "name": "op", "type": "tuple" } ], "name": "sendToken", - "outputs": [], + "outputs": [ + { + "components": [ + { + "internalType": "uint128", + "name": "id", + "type": "uint128" + }, + { + "internalType": "address", + "name": "from", + "type": "address" + }, + { + "internalType": "uint64", + "name": "srcChainId", + "type": "uint64" + }, + { + "internalType": "uint64", + "name": "destChainId", + "type": "uint64" + }, + { + "internalType": "address", + "name": "owner", + "type": "address" + }, + { + "internalType": "address", + "name": "to", + "type": "address" + }, + { + "internalType": "address", + "name": "refundTo", + "type": "address" + }, + { + "internalType": "uint256", + "name": "value", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "fee", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "gasLimit", + "type": "uint256" + }, + { + "internalType": "bytes", + "name": "data", + "type": "bytes" + }, + { + "internalType": "string", + "name": "memo", + "type": "string" + } + ], + "internalType": "struct IBridge.Message", + "name": "_message", + "type": "tuple" + } + ], "stateMutability": "payable", "type": "function" }, diff --git a/packages/relayer/ERC721Vault.json b/packages/relayer/ERC721Vault.json index cd39623310..9f11c1c16b 100644 --- a/packages/relayer/ERC721Vault.json +++ b/packages/relayer/ERC721Vault.json @@ -24,17 +24,22 @@ "name": "RESOLVER_INVALID_MANAGER", "type": "error" }, + { + "inputs": [], + "name": "RESOLVER_UNEXPECTED_CHAINID", + "type": "error" + }, { "inputs": [ { - "internalType": "uint256", + "internalType": "uint64", "name": "chainId", - "type": "uint256" + "type": "uint64" }, { - "internalType": "bytes32", + "internalType": "string", "name": "name", - "type": "bytes32" + "type": "string" } ], "name": "RESOLVER_ZERO_ADDR", @@ -60,11 +65,6 @@ "name": "VAULT_INVALID_SRC_CHAIN_ID", "type": "error" }, - { - "inputs": [], - "name": "VAULT_INVALID_TO", - "type": "error" - }, { "inputs": [], "name": "VAULT_INVALID_TOKEN", @@ -90,6 +90,11 @@ "name": "VAULT_MESSAGE_RELEASED_ALREADY", "type": "error" }, + { + "inputs": [], + "name": "VAULT_PERMISSION_DENIED", + "type": "error" + }, { "inputs": [], "name": "VAULT_TOKEN_ARRAY_MISMATCH", @@ -100,9 +105,9 @@ "inputs": [ { "indexed": true, - "internalType": "uint256", + "internalType": "uint64", "name": "chainId", - "type": "uint256" + "type": "uint64" }, { "indexed": true, @@ -145,6 +150,25 @@ "name": "Initialized", "type": "event" }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "previousOwner", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "newOwner", + "type": "address" + } + ], + "name": "OwnershipTransferStarted", + "type": "event" + }, { "anonymous": false, "inputs": [ @@ -200,9 +224,9 @@ }, { "indexed": false, - "internalType": "uint256", + "internalType": "uint64", "name": "srcChainId", - "type": "uint256" + "type": "uint64" }, { "indexed": false, @@ -286,9 +310,9 @@ }, { "indexed": false, - "internalType": "uint256", + "internalType": "uint64", "name": "destChainId", - "type": "uint256" + "type": "uint64" }, { "indexed": false, @@ -351,6 +375,26 @@ "stateMutability": "view", "type": "function" }, + { + "inputs": [], + "name": "MAX_TOKEN_PER_TXN", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "acceptOwnership", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, { "inputs": [], "name": "addressManager", @@ -375,9 +419,9 @@ "name": "bridgedToCanonical", "outputs": [ { - "internalType": "uint256", + "internalType": "uint64", "name": "chainId", - "type": "uint256" + "type": "uint64" }, { "internalType": "address", @@ -436,22 +480,16 @@ "type": "function" }, { - "inputs": [ - { - "internalType": "address", - "name": "", - "type": "address" - } - ], - "name": "isBridgedToken", + "inputs": [], + "name": "name", "outputs": [ { - "internalType": "bool", + "internalType": "bytes32", "name": "", - "type": "bool" + "type": "bytes32" } ], - "stateMutability": "view", + "stateMutability": "pure", "type": "function" }, { @@ -503,18 +541,18 @@ "type": "address" }, { - "internalType": "uint256", + "internalType": "uint64", "name": "srcChainId", - "type": "uint256" + "type": "uint64" }, { - "internalType": "uint256", + "internalType": "uint64", "name": "destChainId", - "type": "uint256" + "type": "uint64" }, { "internalType": "address", - "name": "user", + "name": "owner", "type": "address" }, { @@ -601,14 +639,27 @@ "stateMutability": "view", "type": "function" }, + { + "inputs": [], + "name": "pendingOwner", + "outputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, { "inputs": [ { "components": [ { - "internalType": "uint256", + "internalType": "uint64", "name": "chainId", - "type": "uint256" + "type": "uint64" }, { "internalType": "address", @@ -661,9 +712,9 @@ { "inputs": [ { - "internalType": "uint256", + "internalType": "uint64", "name": "chainId", - "type": "uint256" + "type": "uint64" }, { "internalType": "bytes32", @@ -716,9 +767,9 @@ { "components": [ { - "internalType": "uint256", + "internalType": "uint64", "name": "destChainId", - "type": "uint256" + "type": "uint64" }, { "internalType": "address", @@ -762,12 +813,80 @@ } ], "internalType": "struct BaseNFTVault.BridgeTransferOp", - "name": "opt", + "name": "op", "type": "tuple" } ], "name": "sendToken", - "outputs": [], + "outputs": [ + { + "components": [ + { + "internalType": "uint128", + "name": "id", + "type": "uint128" + }, + { + "internalType": "address", + "name": "from", + "type": "address" + }, + { + "internalType": "uint64", + "name": "srcChainId", + "type": "uint64" + }, + { + "internalType": "uint64", + "name": "destChainId", + "type": "uint64" + }, + { + "internalType": "address", + "name": "owner", + "type": "address" + }, + { + "internalType": "address", + "name": "to", + "type": "address" + }, + { + "internalType": "address", + "name": "refundTo", + "type": "address" + }, + { + "internalType": "uint256", + "name": "value", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "fee", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "gasLimit", + "type": "uint256" + }, + { + "internalType": "bytes", + "name": "data", + "type": "bytes" + }, + { + "internalType": "string", + "name": "memo", + "type": "string" + } + ], + "internalType": "struct IBridge.Message", + "name": "_message", + "type": "tuple" + } + ], "stateMutability": "payable", "type": "function" }, diff --git a/packages/relayer/ICrossChainSync.json b/packages/relayer/ICrossChainSync.json index dd18064338..670968d37d 100644 --- a/packages/relayer/ICrossChainSync.json +++ b/packages/relayer/ICrossChainSync.json @@ -5,7 +5,13 @@ { "indexed": true, "internalType": "uint64", - "name": "srcHeight", + "name": "remoteBlockId", + "type": "uint64" + }, + { + "indexed": false, + "internalType": "uint64", + "name": "syncedInBlock", "type": "uint64" }, { @@ -36,6 +42,16 @@ "outputs": [ { "components": [ + { + "internalType": "uint64", + "name": "remoteBlockId", + "type": "uint64" + }, + { + "internalType": "uint64", + "name": "syncedInBlock", + "type": "uint64" + }, { "internalType": "bytes32", "name": "blockHash", diff --git a/packages/relayer/SignalService.json b/packages/relayer/SignalService.json index f62e58d0af..b264968c37 100644 --- a/packages/relayer/SignalService.json +++ b/packages/relayer/SignalService.json @@ -1,4 +1,19 @@ [ + { + "inputs": [], + "name": "ADDRESS_UNAUTHORIZED", + "type": "error" + }, + { + "inputs": [], + "name": "INVALID_ADDRESS", + "type": "error" + }, + { + "inputs": [], + "name": "INVALID_LABEL", + "type": "error" + }, { "inputs": [], "name": "INVALID_PAUSE_STATUS", @@ -19,17 +34,22 @@ "name": "RESOLVER_INVALID_MANAGER", "type": "error" }, + { + "inputs": [], + "name": "RESOLVER_UNEXPECTED_CHAINID", + "type": "error" + }, { "inputs": [ { - "internalType": "uint256", + "internalType": "uint64", "name": "chainId", - "type": "uint256" + "type": "uint64" }, { - "internalType": "bytes32", + "internalType": "string", "name": "name", - "type": "bytes32" + "type": "string" } ], "name": "RESOLVER_ZERO_ADDR", @@ -45,6 +65,31 @@ "name": "SS_INVALID_SIGNAL", "type": "error" }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "addr", + "type": "address" + }, + { + "indexed": false, + "internalType": "bytes32", + "name": "oldLabel", + "type": "bytes32" + }, + { + "indexed": false, + "internalType": "bytes32", + "name": "newLabel", + "type": "bytes32" + } + ], + "name": "Authorized", + "type": "event" + }, { "anonymous": false, "inputs": [ @@ -58,6 +103,25 @@ "name": "Initialized", "type": "event" }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "previousOwner", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "newOwner", + "type": "address" + } + ], + "name": "OwnershipTransferStarted", + "type": "event" + }, { "anonymous": false, "inputs": [ @@ -103,6 +167,13 @@ "name": "Unpaused", "type": "event" }, + { + "inputs": [], + "name": "acceptOwnership", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, { "inputs": [], "name": "addressManager", @@ -119,9 +190,46 @@ { "inputs": [ { - "internalType": "uint256", + "internalType": "address", + "name": "addr", + "type": "address" + }, + { + "internalType": "bytes32", + "name": "label", + "type": "bytes32" + } + ], + "name": "authorize", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "name": "authorizedAddresses", + "outputs": [ + { + "internalType": "bytes32", + "name": "label", + "type": "bytes32" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint64", "name": "chainId", - "type": "uint256" + "type": "uint64" }, { "internalType": "address", @@ -145,17 +253,54 @@ "stateMutability": "pure", "type": "function" }, + { + "inputs": [], + "name": "init", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, { "inputs": [ { "internalType": "address", - "name": "_addressManager", + "name": "addr", "type": "address" } ], - "name": "init", - "outputs": [], - "stateMutability": "nonpayable", + "name": "isAuthorized", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "addr", + "type": "address" + }, + { + "internalType": "bytes32", + "name": "label", + "type": "bytes32" + } + ], + "name": "isAuthorizedAs", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "view", "type": "function" }, { @@ -215,12 +360,25 @@ "stateMutability": "view", "type": "function" }, + { + "inputs": [], + "name": "pendingOwner", + "outputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, { "inputs": [ { - "internalType": "uint256", + "internalType": "uint64", "name": "srcChainId", - "type": "uint256" + "type": "uint64" }, { "internalType": "address", @@ -259,9 +417,9 @@ { "inputs": [ { - "internalType": "uint256", + "internalType": "uint64", "name": "chainId", - "type": "uint256" + "type": "uint64" }, { "internalType": "bytes32", diff --git a/packages/relayer/TaikoL1.json b/packages/relayer/TaikoL1.json index 20ee6001f9..fea82990c0 100644 --- a/packages/relayer/TaikoL1.json +++ b/packages/relayer/TaikoL1.json @@ -81,17 +81,32 @@ }, { "inputs": [], - "name": "L1_BLOCK_MISMATCH", + "name": "L1_BLOB_FOR_DA_DISABLED", "type": "error" }, { "inputs": [], - "name": "L1_BLOCK_MISMATCH", + "name": "L1_BLOB_FOR_DA_DISABLED", "type": "error" }, { "inputs": [], - "name": "L1_BLOCK_MISMATCH", + "name": "L1_BLOB_NOT_FOUND", + "type": "error" + }, + { + "inputs": [], + "name": "L1_BLOB_NOT_FOUND", + "type": "error" + }, + { + "inputs": [], + "name": "L1_BLOB_NOT_REUSEABLE", + "type": "error" + }, + { + "inputs": [], + "name": "L1_BLOB_NOT_REUSEABLE", "type": "error" }, { @@ -101,22 +116,22 @@ }, { "inputs": [], - "name": "L1_INSUFFICIENT_TOKEN", + "name": "L1_BLOCK_MISMATCH", "type": "error" }, { "inputs": [], - "name": "L1_INSUFFICIENT_TOKEN", + "name": "L1_BLOCK_MISMATCH", "type": "error" }, { "inputs": [], - "name": "L1_INVALID_ADDRESS", + "name": "L1_INSUFFICIENT_TOKEN", "type": "error" }, { "inputs": [], - "name": "L1_INVALID_AMOUNT", + "name": "L1_INVALID_ADDRESS", "type": "error" }, { @@ -146,7 +161,7 @@ }, { "inputs": [], - "name": "L1_INVALID_CONFIG", + "name": "L1_INVALID_ETH_DEPOSIT", "type": "error" }, { @@ -156,22 +171,22 @@ }, { "inputs": [], - "name": "L1_INVALID_ETH_DEPOSIT", + "name": "L1_INVALID_PARAM", "type": "error" }, { "inputs": [], - "name": "L1_INVALID_EVIDENCE", + "name": "L1_INVALID_PARAM", "type": "error" }, { "inputs": [], - "name": "L1_INVALID_EVIDENCE", + "name": "L1_INVALID_PAUSE_STATUS", "type": "error" }, { "inputs": [], - "name": "L1_INVALID_PARAM", + "name": "L1_INVALID_PAUSE_STATUS", "type": "error" }, { @@ -189,6 +204,16 @@ "name": "L1_INVALID_TIER", "type": "error" }, + { + "inputs": [], + "name": "L1_INVALID_TRANSITION", + "type": "error" + }, + { + "inputs": [], + "name": "L1_INVALID_TRANSITION", + "type": "error" + }, { "inputs": [], "name": "L1_NOT_ASSIGNED_PROVER", @@ -199,6 +224,21 @@ "name": "L1_NOT_ASSIGNED_PROVER", "type": "error" }, + { + "inputs": [], + "name": "L1_PROPOSER_NOT_EOA", + "type": "error" + }, + { + "inputs": [], + "name": "L1_PROPOSER_NOT_EOA", + "type": "error" + }, + { + "inputs": [], + "name": "L1_PROVING_PAUSED", + "type": "error" + }, { "inputs": [], "name": "L1_TIER_NOT_FOUND", @@ -221,7 +261,7 @@ }, { "inputs": [], - "name": "L1_TRANSITION_ID_ZERO", + "name": "L1_TOO_MANY_TIERS", "type": "error" }, { @@ -231,7 +271,7 @@ }, { "inputs": [], - "name": "L1_TRANSITION_NOT_FOUND", + "name": "L1_TRANSITION_ID_ZERO", "type": "error" }, { @@ -241,17 +281,17 @@ }, { "inputs": [], - "name": "L1_TXLIST_MISMATCH", + "name": "L1_TXLIST_OFFSET", "type": "error" }, { "inputs": [], - "name": "L1_TXLIST_MISMATCH", + "name": "L1_TXLIST_OFFSET_SIZE", "type": "error" }, { "inputs": [], - "name": "L1_TXLIST_TOO_LARGE", + "name": "L1_TXLIST_SIZE", "type": "error" }, { @@ -269,6 +309,16 @@ "name": "L1_UNAUTHORIZED", "type": "error" }, + { + "inputs": [], + "name": "L1_UNEXPECTED_PARENT", + "type": "error" + }, + { + "inputs": [], + "name": "L1_UNEXPECTED_PARENT", + "type": "error" + }, { "inputs": [], "name": "L1_UNEXPECTED_TRANSITION_ID", @@ -304,22 +354,53 @@ "name": "RESOLVER_INVALID_MANAGER", "type": "error" }, + { + "inputs": [], + "name": "RESOLVER_UNEXPECTED_CHAINID", + "type": "error" + }, { "inputs": [ { - "internalType": "uint256", + "internalType": "uint64", "name": "chainId", - "type": "uint256" + "type": "uint64" }, { - "internalType": "bytes32", + "internalType": "string", "name": "name", - "type": "bytes32" + "type": "string" } ], "name": "RESOLVER_ZERO_ADDR", "type": "error" }, + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "bytes32", + "name": "blobHash", + "type": "bytes32" + } + ], + "name": "BlobCached", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "bytes32", + "name": "blobHash", + "type": "bytes32" + } + ], + "name": "BlobCached", + "type": "event" + }, { "anonymous": false, "inputs": [ @@ -347,12 +428,6 @@ "name": "proverFee", "type": "uint256" }, - { - "indexed": false, - "internalType": "uint16", - "name": "minTier", - "type": "uint16" - }, { "components": [ { @@ -367,7 +442,7 @@ }, { "internalType": "bytes32", - "name": "txListHash", + "name": "blobHash", "type": "bytes32" }, { @@ -375,11 +450,26 @@ "name": "extraData", "type": "bytes32" }, + { + "internalType": "bytes32", + "name": "depositsHash", + "type": "bytes32" + }, + { + "internalType": "address", + "name": "coinbase", + "type": "address" + }, { "internalType": "uint64", "name": "id", "type": "uint64" }, + { + "internalType": "uint32", + "name": "gasLimit", + "type": "uint32" + }, { "internalType": "uint64", "name": "timestamp", @@ -391,42 +481,58 @@ "type": "uint64" }, { - "internalType": "uint32", - "name": "gasLimit", - "type": "uint32" + "internalType": "uint24", + "name": "txListByteOffset", + "type": "uint24" }, { - "internalType": "address", - "name": "coinbase", - "type": "address" + "internalType": "uint24", + "name": "txListByteSize", + "type": "uint24" + }, + { + "internalType": "uint16", + "name": "minTier", + "type": "uint16" }, { - "components": [ - { - "internalType": "address", - "name": "recipient", - "type": "address" - }, - { - "internalType": "uint96", - "name": "amount", - "type": "uint96" - }, - { - "internalType": "uint64", - "name": "id", - "type": "uint64" - } - ], - "internalType": "struct TaikoData.EthDeposit[]", - "name": "depositsProcessed", - "type": "tuple[]" + "internalType": "bool", + "name": "blobUsed", + "type": "bool" + }, + { + "internalType": "bytes32", + "name": "parentMetaHash", + "type": "bytes32" } ], "indexed": false, "internalType": "struct TaikoData.BlockMetadata", "name": "meta", "type": "tuple" + }, + { + "components": [ + { + "internalType": "address", + "name": "recipient", + "type": "address" + }, + { + "internalType": "uint96", + "name": "amount", + "type": "uint96" + }, + { + "internalType": "uint64", + "name": "id", + "type": "uint64" + } + ], + "indexed": false, + "internalType": "struct TaikoData.EthDeposit[]", + "name": "depositsProcessed", + "type": "tuple[]" } ], "name": "BlockProposed", @@ -459,12 +565,6 @@ "name": "proverFee", "type": "uint256" }, - { - "indexed": false, - "internalType": "uint16", - "name": "minTier", - "type": "uint16" - }, { "components": [ { @@ -479,7 +579,7 @@ }, { "internalType": "bytes32", - "name": "txListHash", + "name": "blobHash", "type": "bytes32" }, { @@ -487,11 +587,26 @@ "name": "extraData", "type": "bytes32" }, + { + "internalType": "bytes32", + "name": "depositsHash", + "type": "bytes32" + }, + { + "internalType": "address", + "name": "coinbase", + "type": "address" + }, { "internalType": "uint64", "name": "id", "type": "uint64" }, + { + "internalType": "uint32", + "name": "gasLimit", + "type": "uint32" + }, { "internalType": "uint64", "name": "timestamp", @@ -503,42 +618,58 @@ "type": "uint64" }, { - "internalType": "uint32", - "name": "gasLimit", - "type": "uint32" + "internalType": "uint24", + "name": "txListByteOffset", + "type": "uint24" }, { - "internalType": "address", - "name": "coinbase", - "type": "address" + "internalType": "uint24", + "name": "txListByteSize", + "type": "uint24" }, { - "components": [ - { - "internalType": "address", - "name": "recipient", - "type": "address" - }, - { - "internalType": "uint96", - "name": "amount", - "type": "uint96" - }, - { - "internalType": "uint64", - "name": "id", - "type": "uint64" - } - ], - "internalType": "struct TaikoData.EthDeposit[]", - "name": "depositsProcessed", - "type": "tuple[]" + "internalType": "uint16", + "name": "minTier", + "type": "uint16" + }, + { + "internalType": "bool", + "name": "blobUsed", + "type": "bool" + }, + { + "internalType": "bytes32", + "name": "parentMetaHash", + "type": "bytes32" } ], "indexed": false, "internalType": "struct TaikoData.BlockMetadata", "name": "meta", "type": "tuple" + }, + { + "components": [ + { + "internalType": "address", + "name": "recipient", + "type": "address" + }, + { + "internalType": "uint96", + "name": "amount", + "type": "uint96" + }, + { + "internalType": "uint64", + "name": "id", + "type": "uint64" + } + ], + "indexed": false, + "internalType": "struct TaikoData.EthDeposit[]", + "name": "depositsProcessed", + "type": "tuple[]" } ], "name": "BlockProposed", @@ -576,6 +707,18 @@ "internalType": "bytes32", "name": "signalRoot", "type": "bytes32" + }, + { + "indexed": false, + "internalType": "uint16", + "name": "tier", + "type": "uint16" + }, + { + "indexed": false, + "internalType": "uint8", + "name": "contestations", + "type": "uint8" } ], "name": "BlockVerified", @@ -613,6 +756,18 @@ "internalType": "bytes32", "name": "signalRoot", "type": "bytes32" + }, + { + "indexed": false, + "internalType": "uint16", + "name": "tier", + "type": "uint16" + }, + { + "indexed": false, + "internalType": "uint8", + "name": "contestations", + "type": "uint8" } ], "name": "BlockVerified", @@ -649,7 +804,13 @@ { "indexed": true, "internalType": "uint64", - "name": "srcHeight", + "name": "remoteBlockId", + "type": "uint64" + }, + { + "indexed": false, + "internalType": "uint64", + "name": "syncedInBlock", "type": "uint64" }, { @@ -702,43 +863,32 @@ "anonymous": false, "inputs": [ { - "components": [ - { - "internalType": "address", - "name": "recipient", - "type": "address" - }, - { - "internalType": "uint96", - "name": "amount", - "type": "uint96" - }, - { - "internalType": "uint64", - "name": "id", - "type": "uint64" - } - ], "indexed": false, - "internalType": "struct TaikoData.EthDeposit", - "name": "deposit", - "type": "tuple" + "internalType": "uint8", + "name": "version", + "type": "uint8" } ], - "name": "EthDeposited", + "name": "Initialized", "type": "event" }, { "anonymous": false, "inputs": [ { - "indexed": false, - "internalType": "uint8", - "name": "version", - "type": "uint8" + "indexed": true, + "internalType": "address", + "name": "previousOwner", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "newOwner", + "type": "address" } ], - "name": "Initialized", + "name": "OwnershipTransferStarted", "type": "event" }, { @@ -778,18 +928,25 @@ "inputs": [ { "indexed": false, - "internalType": "address", - "name": "to", - "type": "address" - }, + "internalType": "bool", + "name": "paused", + "type": "bool" + } + ], + "name": "ProvingPaused", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ { "indexed": false, - "internalType": "uint256", - "name": "amount", - "type": "uint256" + "internalType": "bool", + "name": "paused", + "type": "bool" } ], - "name": "TokenCredited", + "name": "ProvingPaused", "type": "event" }, { @@ -817,7 +974,7 @@ { "indexed": false, "internalType": "address", - "name": "from", + "name": "to", "type": "address" }, { @@ -827,7 +984,7 @@ "type": "uint256" } ], - "name": "TokenDebited", + "name": "TokenCredited", "type": "event" }, { @@ -854,17 +1011,10 @@ "inputs": [ { "indexed": false, - "internalType": "uint256", - "name": "amount", - "type": "uint256" - } - ], - "name": "TokenDeposited", - "type": "event" - }, - { - "anonymous": false, - "inputs": [ + "internalType": "address", + "name": "from", + "type": "address" + }, { "indexed": false, "internalType": "uint256", @@ -872,7 +1022,7 @@ "type": "uint256" } ], - "name": "TokenDeposited", + "name": "TokenDebited", "type": "event" }, { @@ -885,7 +1035,7 @@ "type": "uint256" } ], - "name": "TokenWithdrawn", + "name": "TokenDeposited", "type": "event" }, { @@ -911,22 +1061,32 @@ "type": "uint256" }, { + "components": [ + { + "internalType": "bytes32", + "name": "parentHash", + "type": "bytes32" + }, + { + "internalType": "bytes32", + "name": "blockHash", + "type": "bytes32" + }, + { + "internalType": "bytes32", + "name": "signalRoot", + "type": "bytes32" + }, + { + "internalType": "bytes32", + "name": "graffiti", + "type": "bytes32" + } + ], "indexed": false, - "internalType": "bytes32", - "name": "parentHash", - "type": "bytes32" - }, - { - "indexed": false, - "internalType": "bytes32", - "name": "blockHash", - "type": "bytes32" - }, - { - "indexed": false, - "internalType": "bytes32", - "name": "signalRoot", - "type": "bytes32" + "internalType": "struct TaikoData.Transition", + "name": "tran", + "type": "tuple" }, { "indexed": false, @@ -960,22 +1120,32 @@ "type": "uint256" }, { + "components": [ + { + "internalType": "bytes32", + "name": "parentHash", + "type": "bytes32" + }, + { + "internalType": "bytes32", + "name": "blockHash", + "type": "bytes32" + }, + { + "internalType": "bytes32", + "name": "signalRoot", + "type": "bytes32" + }, + { + "internalType": "bytes32", + "name": "graffiti", + "type": "bytes32" + } + ], "indexed": false, - "internalType": "bytes32", - "name": "parentHash", - "type": "bytes32" - }, - { - "indexed": false, - "internalType": "bytes32", - "name": "blockHash", - "type": "bytes32" - }, - { - "indexed": false, - "internalType": "bytes32", - "name": "signalRoot", - "type": "bytes32" + "internalType": "struct TaikoData.Transition", + "name": "tran", + "type": "tuple" }, { "indexed": false, @@ -1009,22 +1179,32 @@ "type": "uint256" }, { + "components": [ + { + "internalType": "bytes32", + "name": "parentHash", + "type": "bytes32" + }, + { + "internalType": "bytes32", + "name": "blockHash", + "type": "bytes32" + }, + { + "internalType": "bytes32", + "name": "signalRoot", + "type": "bytes32" + }, + { + "internalType": "bytes32", + "name": "graffiti", + "type": "bytes32" + } + ], "indexed": false, - "internalType": "bytes32", - "name": "parentHash", - "type": "bytes32" - }, - { - "indexed": false, - "internalType": "bytes32", - "name": "blockHash", - "type": "bytes32" - }, - { - "indexed": false, - "internalType": "bytes32", - "name": "signalRoot", - "type": "bytes32" + "internalType": "struct TaikoData.Transition", + "name": "tran", + "type": "tuple" }, { "indexed": false, @@ -1058,22 +1238,32 @@ "type": "uint256" }, { + "components": [ + { + "internalType": "bytes32", + "name": "parentHash", + "type": "bytes32" + }, + { + "internalType": "bytes32", + "name": "blockHash", + "type": "bytes32" + }, + { + "internalType": "bytes32", + "name": "signalRoot", + "type": "bytes32" + }, + { + "internalType": "bytes32", + "name": "graffiti", + "type": "bytes32" + } + ], "indexed": false, - "internalType": "bytes32", - "name": "parentHash", - "type": "bytes32" - }, - { - "indexed": false, - "internalType": "bytes32", - "name": "blockHash", - "type": "bytes32" - }, - { - "indexed": false, - "internalType": "bytes32", - "name": "signalRoot", - "type": "bytes32" + "internalType": "struct TaikoData.Transition", + "name": "tran", + "type": "tuple" }, { "indexed": false, @@ -1110,6 +1300,13 @@ "name": "Unpaused", "type": "event" }, + { + "inputs": [], + "name": "acceptOwnership", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, { "inputs": [], "name": "addressManager", @@ -1205,6 +1402,11 @@ "name": "proposedAt", "type": "uint64" }, + { + "internalType": "uint64", + "name": "proposedIn", + "type": "uint64" + }, { "internalType": "uint32", "name": "nextTransitionId", @@ -1215,11 +1417,6 @@ "name": "verifiedTransitionId", "type": "uint32" }, - { - "internalType": "uint16", - "name": "minTier", - "type": "uint16" - }, { "internalType": "bytes32[7]", "name": "__reserved", @@ -1241,9 +1438,9 @@ { "components": [ { - "internalType": "uint256", + "internalType": "uint64", "name": "chainId", - "type": "uint256" + "type": "uint64" }, { "internalType": "uint64", @@ -1270,6 +1467,16 @@ "name": "blockMaxTxListBytes", "type": "uint24" }, + { + "internalType": "uint24", + "name": "blobExpiry", + "type": "uint24" + }, + { + "internalType": "bool", + "name": "blobAllowedForDA", + "type": "bool" + }, { "internalType": "uint96", "name": "livenessBond", @@ -1356,14 +1563,21 @@ }, { "internalType": "uint64", - "name": "nextEthDepositToProcess", + "name": "numEthDeposits", "type": "uint64" }, { "internalType": "uint64", - "name": "numEthDeposits", + "name": "nextEthDepositToProcess", "type": "uint64" - }, + } + ], + "internalType": "struct TaikoData.SlotA", + "name": "a", + "type": "tuple" + }, + { + "components": [ { "internalType": "uint64", "name": "numBlocks", @@ -1373,10 +1587,15 @@ "internalType": "uint64", "name": "lastVerifiedBlockId", "type": "uint64" + }, + { + "internalType": "bool", + "name": "provingPaused", + "type": "bool" } ], - "internalType": "struct TaikoData.StateVariables", - "name": "", + "internalType": "struct TaikoData.SlotB", + "name": "b", "type": "tuple" } ], @@ -1395,6 +1614,16 @@ "outputs": [ { "components": [ + { + "internalType": "uint64", + "name": "remoteBlockId", + "type": "uint64" + }, + { + "internalType": "uint64", + "name": "syncedInBlock", + "type": "uint64" + }, { "internalType": "bytes32", "name": "blockHash", @@ -1407,7 +1636,7 @@ } ], "internalType": "struct ICrossChainSync.Snippet", - "name": "data", + "name": "", "type": "tuple" } ], @@ -1490,7 +1719,7 @@ "outputs": [ { "internalType": "uint16[]", - "name": "", + "name": "ids", "type": "uint16[]" } ], @@ -1559,13 +1788,18 @@ "name": "tier", "type": "uint16" }, + { + "internalType": "uint8", + "name": "contestations", + "type": "uint8" + }, { "internalType": "bytes32[4]", "name": "__reserved", "type": "bytes32[4]" } ], - "internalType": "struct TaikoData.Transition", + "internalType": "struct TaikoData.TransitionState", "name": "", "type": "tuple" } @@ -1591,6 +1825,25 @@ "stateMutability": "nonpayable", "type": "function" }, + { + "inputs": [ + { + "internalType": "bytes32", + "name": "blobHash", + "type": "bytes32" + } + ], + "name": "isBlobReusable", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "view", + "type": "function" + }, { "inputs": [], "name": "isConfigValid", @@ -1624,6 +1877,19 @@ "stateMutability": "nonpayable", "type": "function" }, + { + "inputs": [ + { + "internalType": "bool", + "name": "pause", + "type": "bool" + } + ], + "name": "pauseProving", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, { "inputs": [], "name": "paused", @@ -1638,20 +1904,23 @@ "type": "function" }, { - "inputs": [ - { - "internalType": "bytes32", - "name": "txListHash", - "type": "bytes32" - }, + "inputs": [], + "name": "pendingOwner", + "outputs": [ { - "internalType": "bytes32", - "name": "extraData", - "type": "bytes32" - }, + "internalType": "address", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ { "internalType": "bytes", - "name": "assignment", + "name": "params", "type": "bytes" }, { @@ -1676,7 +1945,7 @@ }, { "internalType": "bytes32", - "name": "txListHash", + "name": "blobHash", "type": "bytes32" }, { @@ -1684,11 +1953,26 @@ "name": "extraData", "type": "bytes32" }, + { + "internalType": "bytes32", + "name": "depositsHash", + "type": "bytes32" + }, + { + "internalType": "address", + "name": "coinbase", + "type": "address" + }, { "internalType": "uint64", "name": "id", "type": "uint64" }, + { + "internalType": "uint32", + "name": "gasLimit", + "type": "uint32" + }, { "internalType": "uint64", "name": "timestamp", @@ -1700,41 +1984,56 @@ "type": "uint64" }, { - "internalType": "uint32", - "name": "gasLimit", - "type": "uint32" + "internalType": "uint24", + "name": "txListByteOffset", + "type": "uint24" }, { - "internalType": "address", - "name": "coinbase", - "type": "address" + "internalType": "uint24", + "name": "txListByteSize", + "type": "uint24" + }, + { + "internalType": "uint16", + "name": "minTier", + "type": "uint16" }, { - "components": [ - { - "internalType": "address", - "name": "recipient", - "type": "address" - }, - { - "internalType": "uint96", - "name": "amount", - "type": "uint96" - }, - { - "internalType": "uint64", - "name": "id", - "type": "uint64" - } - ], - "internalType": "struct TaikoData.EthDeposit[]", - "name": "depositsProcessed", - "type": "tuple[]" + "internalType": "bool", + "name": "blobUsed", + "type": "bool" + }, + { + "internalType": "bytes32", + "name": "parentMetaHash", + "type": "bytes32" } ], "internalType": "struct TaikoData.BlockMetadata", "name": "meta", "type": "tuple" + }, + { + "components": [ + { + "internalType": "address", + "name": "recipient", + "type": "address" + }, + { + "internalType": "uint96", + "name": "amount", + "type": "uint96" + }, + { + "internalType": "uint64", + "name": "id", + "type": "uint64" + } + ], + "internalType": "struct TaikoData.EthDeposit[]", + "name": "depositsProcessed", + "type": "tuple[]" } ], "stateMutability": "payable", @@ -1768,9 +2067,9 @@ { "inputs": [ { - "internalType": "uint256", + "internalType": "uint64", "name": "chainId", - "type": "uint256" + "type": "uint64" }, { "internalType": "bytes32", @@ -1858,13 +2157,13 @@ }, { "internalType": "uint64", - "name": "nextEthDepositToProcess", + "name": "lastVerifiedBlockId", "type": "uint64" }, { - "internalType": "uint64", - "name": "lastVerifiedBlockId", - "type": "uint64" + "internalType": "bool", + "name": "provingPaused", + "type": "bool" } ], "internalType": "struct TaikoData.SlotB", diff --git a/packages/relayer/bindings/bridge/Bridge.go b/packages/relayer/bindings/bridge/Bridge.go index cd1b03352e..e363c41bef 100644 --- a/packages/relayer/bindings/bridge/Bridge.go +++ b/packages/relayer/bindings/bridge/Bridge.go @@ -33,16 +33,16 @@ var ( type IBridgeContext struct { MsgHash [32]byte From common.Address - SrcChainId *big.Int + SrcChainId uint64 } // IBridgeMessage is an auto generated low-level Go binding around an user-defined struct. type IBridgeMessage struct { Id *big.Int From common.Address - SrcChainId *big.Int - DestChainId *big.Int - User common.Address + SrcChainId uint64 + DestChainId uint64 + Owner common.Address To common.Address RefundTo common.Address Value *big.Int @@ -54,7 +54,7 @@ type IBridgeMessage struct { // BridgeMetaData contains all meta data concerning the Bridge contract. var BridgeMetaData = &bind.MetaData{ - ABI: "[{\"inputs\":[],\"name\":\"B_INVALID_CHAINID\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"B_INVALID_CONTEXT\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"B_INVALID_GAS_LIMIT\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"B_INVALID_SIGNAL\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"B_INVALID_TO\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"B_INVALID_USER\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"B_INVALID_VALUE\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"B_NON_RETRIABLE\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"B_NOT_FAILED\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"B_NOT_RECEIVED\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"B_PERMISSION_DENIED\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"B_RECALLED_ALREADY\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"B_STATUS_MISMATCH\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ETH_TRANSFER_FAILED\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"INVALID_PAUSE_STATUS\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"REENTRANT_CALL\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"RESOLVER_DENIED\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"RESOLVER_INVALID_MANAGER\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"chainId\",\"type\":\"uint256\"},{\"internalType\":\"bytes32\",\"name\":\"name\",\"type\":\"bytes32\"}],\"name\":\"RESOLVER_ZERO_ADDR\",\"type\":\"error\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"chainId\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"bool\",\"name\":\"enabled\",\"type\":\"bool\"}],\"name\":\"DestChainEnabled\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint8\",\"name\":\"version\",\"type\":\"uint8\"}],\"name\":\"Initialized\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"msgHash\",\"type\":\"bytes32\"}],\"name\":\"MessageRecalled\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"msgHash\",\"type\":\"bytes32\"},{\"components\":[{\"internalType\":\"uint128\",\"name\":\"id\",\"type\":\"uint128\"},{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"srcChainId\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"destChainId\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"user\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"refundTo\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"fee\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"gasLimit\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"},{\"internalType\":\"string\",\"name\":\"memo\",\"type\":\"string\"}],\"indexed\":false,\"internalType\":\"structIBridge.Message\",\"name\":\"message\",\"type\":\"tuple\"}],\"name\":\"MessageSent\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"msgHash\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"enumBridge.Status\",\"name\":\"status\",\"type\":\"uint8\"}],\"name\":\"MessageStatusChanged\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"previousOwner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"newOwner\",\"type\":\"address\"}],\"name\":\"OwnershipTransferred\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"Paused\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"msgHash\",\"type\":\"bytes32\"}],\"name\":\"SignalSent\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"Unpaused\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"addressManager\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"context\",\"outputs\":[{\"components\":[{\"internalType\":\"bytes32\",\"name\":\"msgHash\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"srcChainId\",\"type\":\"uint256\"}],\"internalType\":\"structIBridge.Context\",\"name\":\"\",\"type\":\"tuple\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_addressManager\",\"type\":\"address\"}],\"name\":\"init\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"chainId\",\"type\":\"uint256\"}],\"name\":\"isDestChainEnabled\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"enabled\",\"type\":\"bool\"},{\"internalType\":\"address\",\"name\":\"destBridge\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"msgHash\",\"type\":\"bytes32\"}],\"name\":\"isMessageRecalled\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"recalled\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"uint128\",\"name\":\"id\",\"type\":\"uint128\"},{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"srcChainId\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"destChainId\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"user\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"refundTo\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"fee\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"gasLimit\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"},{\"internalType\":\"string\",\"name\":\"memo\",\"type\":\"string\"}],\"internalType\":\"structIBridge.Message\",\"name\":\"message\",\"type\":\"tuple\"}],\"name\":\"isMessageSent\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"msgHash\",\"type\":\"bytes32\"}],\"name\":\"messageStatus\",\"outputs\":[{\"internalType\":\"enumBridge.Status\",\"name\":\"\",\"type\":\"uint8\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"nextMessageId\",\"outputs\":[{\"internalType\":\"uint128\",\"name\":\"\",\"type\":\"uint128\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"owner\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"pause\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"paused\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"uint128\",\"name\":\"id\",\"type\":\"uint128\"},{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"srcChainId\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"destChainId\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"user\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"refundTo\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"fee\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"gasLimit\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"},{\"internalType\":\"string\",\"name\":\"memo\",\"type\":\"string\"}],\"internalType\":\"structIBridge.Message\",\"name\":\"message\",\"type\":\"tuple\"},{\"internalType\":\"bytes\",\"name\":\"proof\",\"type\":\"bytes\"}],\"name\":\"processMessage\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"uint128\",\"name\":\"id\",\"type\":\"uint128\"},{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"srcChainId\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"destChainId\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"user\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"refundTo\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"fee\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"gasLimit\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"},{\"internalType\":\"string\",\"name\":\"memo\",\"type\":\"string\"}],\"internalType\":\"structIBridge.Message\",\"name\":\"message\",\"type\":\"tuple\"},{\"internalType\":\"bytes\",\"name\":\"proof\",\"type\":\"bytes\"}],\"name\":\"proveMessageFailed\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"uint128\",\"name\":\"id\",\"type\":\"uint128\"},{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"srcChainId\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"destChainId\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"user\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"refundTo\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"fee\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"gasLimit\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"},{\"internalType\":\"string\",\"name\":\"memo\",\"type\":\"string\"}],\"internalType\":\"structIBridge.Message\",\"name\":\"message\",\"type\":\"tuple\"},{\"internalType\":\"bytes\",\"name\":\"proof\",\"type\":\"bytes\"}],\"name\":\"proveMessageReceived\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"uint128\",\"name\":\"id\",\"type\":\"uint128\"},{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"srcChainId\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"destChainId\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"user\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"refundTo\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"fee\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"gasLimit\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"},{\"internalType\":\"string\",\"name\":\"memo\",\"type\":\"string\"}],\"internalType\":\"structIBridge.Message\",\"name\":\"message\",\"type\":\"tuple\"},{\"internalType\":\"bytes\",\"name\":\"proof\",\"type\":\"bytes\"}],\"name\":\"recallMessage\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"renounceOwnership\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"chainId\",\"type\":\"uint256\"},{\"internalType\":\"bytes32\",\"name\":\"name\",\"type\":\"bytes32\"},{\"internalType\":\"bool\",\"name\":\"allowZeroAddress\",\"type\":\"bool\"}],\"name\":\"resolve\",\"outputs\":[{\"internalType\":\"addresspayable\",\"name\":\"addr\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"name\",\"type\":\"bytes32\"},{\"internalType\":\"bool\",\"name\":\"allowZeroAddress\",\"type\":\"bool\"}],\"name\":\"resolve\",\"outputs\":[{\"internalType\":\"addresspayable\",\"name\":\"addr\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"uint128\",\"name\":\"id\",\"type\":\"uint128\"},{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"srcChainId\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"destChainId\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"user\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"refundTo\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"fee\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"gasLimit\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"},{\"internalType\":\"string\",\"name\":\"memo\",\"type\":\"string\"}],\"internalType\":\"structIBridge.Message\",\"name\":\"message\",\"type\":\"tuple\"},{\"internalType\":\"bool\",\"name\":\"isLastAttempt\",\"type\":\"bool\"}],\"name\":\"retryMessage\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"uint128\",\"name\":\"id\",\"type\":\"uint128\"},{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"srcChainId\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"destChainId\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"user\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"refundTo\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"fee\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"gasLimit\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"},{\"internalType\":\"string\",\"name\":\"memo\",\"type\":\"string\"}],\"internalType\":\"structIBridge.Message\",\"name\":\"message\",\"type\":\"tuple\"}],\"name\":\"sendMessage\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"msgHash\",\"type\":\"bytes32\"},{\"components\":[{\"internalType\":\"uint128\",\"name\":\"id\",\"type\":\"uint128\"},{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"srcChainId\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"destChainId\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"user\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"refundTo\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"fee\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"gasLimit\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"},{\"internalType\":\"string\",\"name\":\"memo\",\"type\":\"string\"}],\"internalType\":\"structIBridge.Message\",\"name\":\"_message\",\"type\":\"tuple\"}],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"newOwner\",\"type\":\"address\"}],\"name\":\"transferOwnership\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"unpause\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"stateMutability\":\"payable\",\"type\":\"receive\"}]", + ABI: "[{\"inputs\":[],\"name\":\"B_INVALID_CHAINID\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"B_INVALID_CONTEXT\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"B_INVALID_GAS_LIMIT\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"B_INVALID_SIGNAL\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"B_INVALID_USER\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"B_INVALID_VALUE\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"B_NON_RETRIABLE\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"B_NOT_FAILED\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"B_NOT_RECEIVED\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"B_PERMISSION_DENIED\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"B_RECALLED_ALREADY\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"B_STATUS_MISMATCH\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ETH_TRANSFER_FAILED\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"INVALID_PAUSE_STATUS\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"REENTRANT_CALL\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"RESOLVER_DENIED\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"RESOLVER_INVALID_MANAGER\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"RESOLVER_UNEXPECTED_CHAINID\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"chainId\",\"type\":\"uint64\"},{\"internalType\":\"string\",\"name\":\"name\",\"type\":\"string\"}],\"name\":\"RESOLVER_ZERO_ADDR\",\"type\":\"error\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint64\",\"name\":\"chainId\",\"type\":\"uint64\"},{\"indexed\":false,\"internalType\":\"bool\",\"name\":\"enabled\",\"type\":\"bool\"}],\"name\":\"DestChainEnabled\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint8\",\"name\":\"version\",\"type\":\"uint8\"}],\"name\":\"Initialized\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"msgHash\",\"type\":\"bytes32\"}],\"name\":\"MessageRecalled\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"msgHash\",\"type\":\"bytes32\"},{\"components\":[{\"internalType\":\"uint128\",\"name\":\"id\",\"type\":\"uint128\"},{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"uint64\",\"name\":\"srcChainId\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"destChainId\",\"type\":\"uint64\"},{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"refundTo\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"fee\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"gasLimit\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"},{\"internalType\":\"string\",\"name\":\"memo\",\"type\":\"string\"}],\"indexed\":false,\"internalType\":\"structIBridge.Message\",\"name\":\"message\",\"type\":\"tuple\"}],\"name\":\"MessageSent\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"msgHash\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"enumBridge.Status\",\"name\":\"status\",\"type\":\"uint8\"}],\"name\":\"MessageStatusChanged\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"previousOwner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"newOwner\",\"type\":\"address\"}],\"name\":\"OwnershipTransferStarted\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"previousOwner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"newOwner\",\"type\":\"address\"}],\"name\":\"OwnershipTransferred\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"Paused\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"msgHash\",\"type\":\"bytes32\"}],\"name\":\"SignalSent\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"Unpaused\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"acceptOwnership\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"addressManager\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"context\",\"outputs\":[{\"components\":[{\"internalType\":\"bytes32\",\"name\":\"msgHash\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"uint64\",\"name\":\"srcChainId\",\"type\":\"uint64\"}],\"internalType\":\"structIBridge.Context\",\"name\":\"\",\"type\":\"tuple\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"uint128\",\"name\":\"id\",\"type\":\"uint128\"},{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"uint64\",\"name\":\"srcChainId\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"destChainId\",\"type\":\"uint64\"},{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"refundTo\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"fee\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"gasLimit\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"},{\"internalType\":\"string\",\"name\":\"memo\",\"type\":\"string\"}],\"internalType\":\"structIBridge.Message\",\"name\":\"message\",\"type\":\"tuple\"}],\"name\":\"hashMessage\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_addressManager\",\"type\":\"address\"}],\"name\":\"init\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"chainId\",\"type\":\"uint64\"}],\"name\":\"isDestChainEnabled\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"enabled\",\"type\":\"bool\"},{\"internalType\":\"address\",\"name\":\"destBridge\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"msgHash\",\"type\":\"bytes32\"}],\"name\":\"isMessageRecalled\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"recalled\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"uint128\",\"name\":\"id\",\"type\":\"uint128\"},{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"uint64\",\"name\":\"srcChainId\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"destChainId\",\"type\":\"uint64\"},{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"refundTo\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"fee\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"gasLimit\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"},{\"internalType\":\"string\",\"name\":\"memo\",\"type\":\"string\"}],\"internalType\":\"structIBridge.Message\",\"name\":\"message\",\"type\":\"tuple\"}],\"name\":\"isMessageSent\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"msgHash\",\"type\":\"bytes32\"}],\"name\":\"messageStatus\",\"outputs\":[{\"internalType\":\"enumBridge.Status\",\"name\":\"\",\"type\":\"uint8\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"nextMessageId\",\"outputs\":[{\"internalType\":\"uint128\",\"name\":\"\",\"type\":\"uint128\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"owner\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"pause\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"paused\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"pendingOwner\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"uint128\",\"name\":\"id\",\"type\":\"uint128\"},{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"uint64\",\"name\":\"srcChainId\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"destChainId\",\"type\":\"uint64\"},{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"refundTo\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"fee\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"gasLimit\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"},{\"internalType\":\"string\",\"name\":\"memo\",\"type\":\"string\"}],\"internalType\":\"structIBridge.Message\",\"name\":\"message\",\"type\":\"tuple\"},{\"internalType\":\"bytes\",\"name\":\"proof\",\"type\":\"bytes\"}],\"name\":\"processMessage\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"uint128\",\"name\":\"id\",\"type\":\"uint128\"},{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"uint64\",\"name\":\"srcChainId\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"destChainId\",\"type\":\"uint64\"},{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"refundTo\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"fee\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"gasLimit\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"},{\"internalType\":\"string\",\"name\":\"memo\",\"type\":\"string\"}],\"internalType\":\"structIBridge.Message\",\"name\":\"message\",\"type\":\"tuple\"},{\"internalType\":\"bytes\",\"name\":\"proof\",\"type\":\"bytes\"}],\"name\":\"proveMessageFailed\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"uint128\",\"name\":\"id\",\"type\":\"uint128\"},{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"uint64\",\"name\":\"srcChainId\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"destChainId\",\"type\":\"uint64\"},{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"refundTo\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"fee\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"gasLimit\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"},{\"internalType\":\"string\",\"name\":\"memo\",\"type\":\"string\"}],\"internalType\":\"structIBridge.Message\",\"name\":\"message\",\"type\":\"tuple\"},{\"internalType\":\"bytes\",\"name\":\"proof\",\"type\":\"bytes\"}],\"name\":\"proveMessageReceived\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"uint128\",\"name\":\"id\",\"type\":\"uint128\"},{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"uint64\",\"name\":\"srcChainId\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"destChainId\",\"type\":\"uint64\"},{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"refundTo\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"fee\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"gasLimit\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"},{\"internalType\":\"string\",\"name\":\"memo\",\"type\":\"string\"}],\"internalType\":\"structIBridge.Message\",\"name\":\"message\",\"type\":\"tuple\"},{\"internalType\":\"bytes\",\"name\":\"proof\",\"type\":\"bytes\"}],\"name\":\"recallMessage\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"renounceOwnership\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"chainId\",\"type\":\"uint64\"},{\"internalType\":\"bytes32\",\"name\":\"name\",\"type\":\"bytes32\"},{\"internalType\":\"bool\",\"name\":\"allowZeroAddress\",\"type\":\"bool\"}],\"name\":\"resolve\",\"outputs\":[{\"internalType\":\"addresspayable\",\"name\":\"addr\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"name\",\"type\":\"bytes32\"},{\"internalType\":\"bool\",\"name\":\"allowZeroAddress\",\"type\":\"bool\"}],\"name\":\"resolve\",\"outputs\":[{\"internalType\":\"addresspayable\",\"name\":\"addr\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"uint128\",\"name\":\"id\",\"type\":\"uint128\"},{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"uint64\",\"name\":\"srcChainId\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"destChainId\",\"type\":\"uint64\"},{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"refundTo\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"fee\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"gasLimit\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"},{\"internalType\":\"string\",\"name\":\"memo\",\"type\":\"string\"}],\"internalType\":\"structIBridge.Message\",\"name\":\"message\",\"type\":\"tuple\"},{\"internalType\":\"bool\",\"name\":\"isLastAttempt\",\"type\":\"bool\"}],\"name\":\"retryMessage\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"uint128\",\"name\":\"id\",\"type\":\"uint128\"},{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"uint64\",\"name\":\"srcChainId\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"destChainId\",\"type\":\"uint64\"},{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"refundTo\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"fee\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"gasLimit\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"},{\"internalType\":\"string\",\"name\":\"memo\",\"type\":\"string\"}],\"internalType\":\"structIBridge.Message\",\"name\":\"message\",\"type\":\"tuple\"}],\"name\":\"sendMessage\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"msgHash\",\"type\":\"bytes32\"},{\"components\":[{\"internalType\":\"uint128\",\"name\":\"id\",\"type\":\"uint128\"},{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"uint64\",\"name\":\"srcChainId\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"destChainId\",\"type\":\"uint64\"},{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"refundTo\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"fee\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"gasLimit\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"},{\"internalType\":\"string\",\"name\":\"memo\",\"type\":\"string\"}],\"internalType\":\"structIBridge.Message\",\"name\":\"_message\",\"type\":\"tuple\"}],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"newOwner\",\"type\":\"address\"}],\"name\":\"transferOwnership\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"unpause\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"stateMutability\":\"payable\",\"type\":\"receive\"}]", } // BridgeABI is the input ABI used to generate the binding from. @@ -236,7 +236,7 @@ func (_Bridge *BridgeCallerSession) AddressManager() (common.Address, error) { // Context is a free data retrieval call binding the contract method 0xd0496d6a. // -// Solidity: function context() view returns((bytes32,address,uint256)) +// Solidity: function context() view returns((bytes32,address,uint64)) func (_Bridge *BridgeCaller) Context(opts *bind.CallOpts) (IBridgeContext, error) { var out []interface{} err := _Bridge.contract.Call(opts, &out, "context") @@ -253,22 +253,53 @@ func (_Bridge *BridgeCaller) Context(opts *bind.CallOpts) (IBridgeContext, error // Context is a free data retrieval call binding the contract method 0xd0496d6a. // -// Solidity: function context() view returns((bytes32,address,uint256)) +// Solidity: function context() view returns((bytes32,address,uint64)) func (_Bridge *BridgeSession) Context() (IBridgeContext, error) { return _Bridge.Contract.Context(&_Bridge.CallOpts) } // Context is a free data retrieval call binding the contract method 0xd0496d6a. // -// Solidity: function context() view returns((bytes32,address,uint256)) +// Solidity: function context() view returns((bytes32,address,uint64)) func (_Bridge *BridgeCallerSession) Context() (IBridgeContext, error) { return _Bridge.Contract.Context(&_Bridge.CallOpts) } -// IsDestChainEnabled is a free data retrieval call binding the contract method 0x5d0bd986. +// HashMessage is a free data retrieval call binding the contract method 0x48c09539. // -// Solidity: function isDestChainEnabled(uint256 chainId) view returns(bool enabled, address destBridge) -func (_Bridge *BridgeCaller) IsDestChainEnabled(opts *bind.CallOpts, chainId *big.Int) (struct { +// Solidity: function hashMessage((uint128,address,uint64,uint64,address,address,address,uint256,uint256,uint256,bytes,string) message) pure returns(bytes32) +func (_Bridge *BridgeCaller) HashMessage(opts *bind.CallOpts, message IBridgeMessage) ([32]byte, error) { + var out []interface{} + err := _Bridge.contract.Call(opts, &out, "hashMessage", message) + + if err != nil { + return *new([32]byte), err + } + + out0 := *abi.ConvertType(out[0], new([32]byte)).(*[32]byte) + + return out0, err + +} + +// HashMessage is a free data retrieval call binding the contract method 0x48c09539. +// +// Solidity: function hashMessage((uint128,address,uint64,uint64,address,address,address,uint256,uint256,uint256,bytes,string) message) pure returns(bytes32) +func (_Bridge *BridgeSession) HashMessage(message IBridgeMessage) ([32]byte, error) { + return _Bridge.Contract.HashMessage(&_Bridge.CallOpts, message) +} + +// HashMessage is a free data retrieval call binding the contract method 0x48c09539. +// +// Solidity: function hashMessage((uint128,address,uint64,uint64,address,address,address,uint256,uint256,uint256,bytes,string) message) pure returns(bytes32) +func (_Bridge *BridgeCallerSession) HashMessage(message IBridgeMessage) ([32]byte, error) { + return _Bridge.Contract.HashMessage(&_Bridge.CallOpts, message) +} + +// IsDestChainEnabled is a free data retrieval call binding the contract method 0x8e3881a9. +// +// Solidity: function isDestChainEnabled(uint64 chainId) view returns(bool enabled, address destBridge) +func (_Bridge *BridgeCaller) IsDestChainEnabled(opts *bind.CallOpts, chainId uint64) (struct { Enabled bool DestBridge common.Address }, error) { @@ -290,20 +321,20 @@ func (_Bridge *BridgeCaller) IsDestChainEnabled(opts *bind.CallOpts, chainId *bi } -// IsDestChainEnabled is a free data retrieval call binding the contract method 0x5d0bd986. +// IsDestChainEnabled is a free data retrieval call binding the contract method 0x8e3881a9. // -// Solidity: function isDestChainEnabled(uint256 chainId) view returns(bool enabled, address destBridge) -func (_Bridge *BridgeSession) IsDestChainEnabled(chainId *big.Int) (struct { +// Solidity: function isDestChainEnabled(uint64 chainId) view returns(bool enabled, address destBridge) +func (_Bridge *BridgeSession) IsDestChainEnabled(chainId uint64) (struct { Enabled bool DestBridge common.Address }, error) { return _Bridge.Contract.IsDestChainEnabled(&_Bridge.CallOpts, chainId) } -// IsDestChainEnabled is a free data retrieval call binding the contract method 0x5d0bd986. +// IsDestChainEnabled is a free data retrieval call binding the contract method 0x8e3881a9. // -// Solidity: function isDestChainEnabled(uint256 chainId) view returns(bool enabled, address destBridge) -func (_Bridge *BridgeCallerSession) IsDestChainEnabled(chainId *big.Int) (struct { +// Solidity: function isDestChainEnabled(uint64 chainId) view returns(bool enabled, address destBridge) +func (_Bridge *BridgeCallerSession) IsDestChainEnabled(chainId uint64) (struct { Enabled bool DestBridge common.Address }, error) { @@ -341,9 +372,9 @@ func (_Bridge *BridgeCallerSession) IsMessageRecalled(msgHash [32]byte) (bool, e return _Bridge.Contract.IsMessageRecalled(&_Bridge.CallOpts, msgHash) } -// IsMessageSent is a free data retrieval call binding the contract method 0xaedf6cd3. +// IsMessageSent is a free data retrieval call binding the contract method 0x60ecbdfd. // -// Solidity: function isMessageSent((uint128,address,uint256,uint256,address,address,address,uint256,uint256,uint256,bytes,string) message) view returns(bool) +// Solidity: function isMessageSent((uint128,address,uint64,uint64,address,address,address,uint256,uint256,uint256,bytes,string) message) view returns(bool) func (_Bridge *BridgeCaller) IsMessageSent(opts *bind.CallOpts, message IBridgeMessage) (bool, error) { var out []interface{} err := _Bridge.contract.Call(opts, &out, "isMessageSent", message) @@ -358,16 +389,16 @@ func (_Bridge *BridgeCaller) IsMessageSent(opts *bind.CallOpts, message IBridgeM } -// IsMessageSent is a free data retrieval call binding the contract method 0xaedf6cd3. +// IsMessageSent is a free data retrieval call binding the contract method 0x60ecbdfd. // -// Solidity: function isMessageSent((uint128,address,uint256,uint256,address,address,address,uint256,uint256,uint256,bytes,string) message) view returns(bool) +// Solidity: function isMessageSent((uint128,address,uint64,uint64,address,address,address,uint256,uint256,uint256,bytes,string) message) view returns(bool) func (_Bridge *BridgeSession) IsMessageSent(message IBridgeMessage) (bool, error) { return _Bridge.Contract.IsMessageSent(&_Bridge.CallOpts, message) } -// IsMessageSent is a free data retrieval call binding the contract method 0xaedf6cd3. +// IsMessageSent is a free data retrieval call binding the contract method 0x60ecbdfd. // -// Solidity: function isMessageSent((uint128,address,uint256,uint256,address,address,address,uint256,uint256,uint256,bytes,string) message) view returns(bool) +// Solidity: function isMessageSent((uint128,address,uint64,uint64,address,address,address,uint256,uint256,uint256,bytes,string) message) view returns(bool) func (_Bridge *BridgeCallerSession) IsMessageSent(message IBridgeMessage) (bool, error) { return _Bridge.Contract.IsMessageSent(&_Bridge.CallOpts, message) } @@ -496,9 +527,40 @@ func (_Bridge *BridgeCallerSession) Paused() (bool, error) { return _Bridge.Contract.Paused(&_Bridge.CallOpts) } -// ProveMessageFailed is a free data retrieval call binding the contract method 0x1b5fd0ab. +// PendingOwner is a free data retrieval call binding the contract method 0xe30c3978. // -// Solidity: function proveMessageFailed((uint128,address,uint256,uint256,address,address,address,uint256,uint256,uint256,bytes,string) message, bytes proof) view returns(bool) +// Solidity: function pendingOwner() view returns(address) +func (_Bridge *BridgeCaller) PendingOwner(opts *bind.CallOpts) (common.Address, error) { + var out []interface{} + err := _Bridge.contract.Call(opts, &out, "pendingOwner") + + if err != nil { + return *new(common.Address), err + } + + out0 := *abi.ConvertType(out[0], new(common.Address)).(*common.Address) + + return out0, err + +} + +// PendingOwner is a free data retrieval call binding the contract method 0xe30c3978. +// +// Solidity: function pendingOwner() view returns(address) +func (_Bridge *BridgeSession) PendingOwner() (common.Address, error) { + return _Bridge.Contract.PendingOwner(&_Bridge.CallOpts) +} + +// PendingOwner is a free data retrieval call binding the contract method 0xe30c3978. +// +// Solidity: function pendingOwner() view returns(address) +func (_Bridge *BridgeCallerSession) PendingOwner() (common.Address, error) { + return _Bridge.Contract.PendingOwner(&_Bridge.CallOpts) +} + +// ProveMessageFailed is a free data retrieval call binding the contract method 0x625e5b7f. +// +// Solidity: function proveMessageFailed((uint128,address,uint64,uint64,address,address,address,uint256,uint256,uint256,bytes,string) message, bytes proof) view returns(bool) func (_Bridge *BridgeCaller) ProveMessageFailed(opts *bind.CallOpts, message IBridgeMessage, proof []byte) (bool, error) { var out []interface{} err := _Bridge.contract.Call(opts, &out, "proveMessageFailed", message, proof) @@ -513,23 +575,23 @@ func (_Bridge *BridgeCaller) ProveMessageFailed(opts *bind.CallOpts, message IBr } -// ProveMessageFailed is a free data retrieval call binding the contract method 0x1b5fd0ab. +// ProveMessageFailed is a free data retrieval call binding the contract method 0x625e5b7f. // -// Solidity: function proveMessageFailed((uint128,address,uint256,uint256,address,address,address,uint256,uint256,uint256,bytes,string) message, bytes proof) view returns(bool) +// Solidity: function proveMessageFailed((uint128,address,uint64,uint64,address,address,address,uint256,uint256,uint256,bytes,string) message, bytes proof) view returns(bool) func (_Bridge *BridgeSession) ProveMessageFailed(message IBridgeMessage, proof []byte) (bool, error) { return _Bridge.Contract.ProveMessageFailed(&_Bridge.CallOpts, message, proof) } -// ProveMessageFailed is a free data retrieval call binding the contract method 0x1b5fd0ab. +// ProveMessageFailed is a free data retrieval call binding the contract method 0x625e5b7f. // -// Solidity: function proveMessageFailed((uint128,address,uint256,uint256,address,address,address,uint256,uint256,uint256,bytes,string) message, bytes proof) view returns(bool) +// Solidity: function proveMessageFailed((uint128,address,uint64,uint64,address,address,address,uint256,uint256,uint256,bytes,string) message, bytes proof) view returns(bool) func (_Bridge *BridgeCallerSession) ProveMessageFailed(message IBridgeMessage, proof []byte) (bool, error) { return _Bridge.Contract.ProveMessageFailed(&_Bridge.CallOpts, message, proof) } -// ProveMessageReceived is a free data retrieval call binding the contract method 0xa665077e. +// ProveMessageReceived is a free data retrieval call binding the contract method 0x783f8c93. // -// Solidity: function proveMessageReceived((uint128,address,uint256,uint256,address,address,address,uint256,uint256,uint256,bytes,string) message, bytes proof) view returns(bool) +// Solidity: function proveMessageReceived((uint128,address,uint64,uint64,address,address,address,uint256,uint256,uint256,bytes,string) message, bytes proof) view returns(bool) func (_Bridge *BridgeCaller) ProveMessageReceived(opts *bind.CallOpts, message IBridgeMessage, proof []byte) (bool, error) { var out []interface{} err := _Bridge.contract.Call(opts, &out, "proveMessageReceived", message, proof) @@ -544,24 +606,24 @@ func (_Bridge *BridgeCaller) ProveMessageReceived(opts *bind.CallOpts, message I } -// ProveMessageReceived is a free data retrieval call binding the contract method 0xa665077e. +// ProveMessageReceived is a free data retrieval call binding the contract method 0x783f8c93. // -// Solidity: function proveMessageReceived((uint128,address,uint256,uint256,address,address,address,uint256,uint256,uint256,bytes,string) message, bytes proof) view returns(bool) +// Solidity: function proveMessageReceived((uint128,address,uint64,uint64,address,address,address,uint256,uint256,uint256,bytes,string) message, bytes proof) view returns(bool) func (_Bridge *BridgeSession) ProveMessageReceived(message IBridgeMessage, proof []byte) (bool, error) { return _Bridge.Contract.ProveMessageReceived(&_Bridge.CallOpts, message, proof) } -// ProveMessageReceived is a free data retrieval call binding the contract method 0xa665077e. +// ProveMessageReceived is a free data retrieval call binding the contract method 0x783f8c93. // -// Solidity: function proveMessageReceived((uint128,address,uint256,uint256,address,address,address,uint256,uint256,uint256,bytes,string) message, bytes proof) view returns(bool) +// Solidity: function proveMessageReceived((uint128,address,uint64,uint64,address,address,address,uint256,uint256,uint256,bytes,string) message, bytes proof) view returns(bool) func (_Bridge *BridgeCallerSession) ProveMessageReceived(message IBridgeMessage, proof []byte) (bool, error) { return _Bridge.Contract.ProveMessageReceived(&_Bridge.CallOpts, message, proof) } -// Resolve is a free data retrieval call binding the contract method 0x6c6563f6. +// Resolve is a free data retrieval call binding the contract method 0x3eb6b8cf. // -// Solidity: function resolve(uint256 chainId, bytes32 name, bool allowZeroAddress) view returns(address addr) -func (_Bridge *BridgeCaller) Resolve(opts *bind.CallOpts, chainId *big.Int, name [32]byte, allowZeroAddress bool) (common.Address, error) { +// Solidity: function resolve(uint64 chainId, bytes32 name, bool allowZeroAddress) view returns(address addr) +func (_Bridge *BridgeCaller) Resolve(opts *bind.CallOpts, chainId uint64, name [32]byte, allowZeroAddress bool) (common.Address, error) { var out []interface{} err := _Bridge.contract.Call(opts, &out, "resolve", chainId, name, allowZeroAddress) @@ -575,17 +637,17 @@ func (_Bridge *BridgeCaller) Resolve(opts *bind.CallOpts, chainId *big.Int, name } -// Resolve is a free data retrieval call binding the contract method 0x6c6563f6. +// Resolve is a free data retrieval call binding the contract method 0x3eb6b8cf. // -// Solidity: function resolve(uint256 chainId, bytes32 name, bool allowZeroAddress) view returns(address addr) -func (_Bridge *BridgeSession) Resolve(chainId *big.Int, name [32]byte, allowZeroAddress bool) (common.Address, error) { +// Solidity: function resolve(uint64 chainId, bytes32 name, bool allowZeroAddress) view returns(address addr) +func (_Bridge *BridgeSession) Resolve(chainId uint64, name [32]byte, allowZeroAddress bool) (common.Address, error) { return _Bridge.Contract.Resolve(&_Bridge.CallOpts, chainId, name, allowZeroAddress) } -// Resolve is a free data retrieval call binding the contract method 0x6c6563f6. +// Resolve is a free data retrieval call binding the contract method 0x3eb6b8cf. // -// Solidity: function resolve(uint256 chainId, bytes32 name, bool allowZeroAddress) view returns(address addr) -func (_Bridge *BridgeCallerSession) Resolve(chainId *big.Int, name [32]byte, allowZeroAddress bool) (common.Address, error) { +// Solidity: function resolve(uint64 chainId, bytes32 name, bool allowZeroAddress) view returns(address addr) +func (_Bridge *BridgeCallerSession) Resolve(chainId uint64, name [32]byte, allowZeroAddress bool) (common.Address, error) { return _Bridge.Contract.Resolve(&_Bridge.CallOpts, chainId, name, allowZeroAddress) } @@ -620,6 +682,27 @@ func (_Bridge *BridgeCallerSession) Resolve0(name [32]byte, allowZeroAddress boo return _Bridge.Contract.Resolve0(&_Bridge.CallOpts, name, allowZeroAddress) } +// AcceptOwnership is a paid mutator transaction binding the contract method 0x79ba5097. +// +// Solidity: function acceptOwnership() returns() +func (_Bridge *BridgeTransactor) AcceptOwnership(opts *bind.TransactOpts) (*types.Transaction, error) { + return _Bridge.contract.Transact(opts, "acceptOwnership") +} + +// AcceptOwnership is a paid mutator transaction binding the contract method 0x79ba5097. +// +// Solidity: function acceptOwnership() returns() +func (_Bridge *BridgeSession) AcceptOwnership() (*types.Transaction, error) { + return _Bridge.Contract.AcceptOwnership(&_Bridge.TransactOpts) +} + +// AcceptOwnership is a paid mutator transaction binding the contract method 0x79ba5097. +// +// Solidity: function acceptOwnership() returns() +func (_Bridge *BridgeTransactorSession) AcceptOwnership() (*types.Transaction, error) { + return _Bridge.Contract.AcceptOwnership(&_Bridge.TransactOpts) +} + // Init is a paid mutator transaction binding the contract method 0x19ab453c. // // Solidity: function init(address _addressManager) returns() @@ -662,44 +745,44 @@ func (_Bridge *BridgeTransactorSession) Pause() (*types.Transaction, error) { return _Bridge.Contract.Pause(&_Bridge.TransactOpts) } -// ProcessMessage is a paid mutator transaction binding the contract method 0x1136c050. +// ProcessMessage is a paid mutator transaction binding the contract method 0x01382408. // -// Solidity: function processMessage((uint128,address,uint256,uint256,address,address,address,uint256,uint256,uint256,bytes,string) message, bytes proof) returns() +// Solidity: function processMessage((uint128,address,uint64,uint64,address,address,address,uint256,uint256,uint256,bytes,string) message, bytes proof) returns() func (_Bridge *BridgeTransactor) ProcessMessage(opts *bind.TransactOpts, message IBridgeMessage, proof []byte) (*types.Transaction, error) { return _Bridge.contract.Transact(opts, "processMessage", message, proof) } -// ProcessMessage is a paid mutator transaction binding the contract method 0x1136c050. +// ProcessMessage is a paid mutator transaction binding the contract method 0x01382408. // -// Solidity: function processMessage((uint128,address,uint256,uint256,address,address,address,uint256,uint256,uint256,bytes,string) message, bytes proof) returns() +// Solidity: function processMessage((uint128,address,uint64,uint64,address,address,address,uint256,uint256,uint256,bytes,string) message, bytes proof) returns() func (_Bridge *BridgeSession) ProcessMessage(message IBridgeMessage, proof []byte) (*types.Transaction, error) { return _Bridge.Contract.ProcessMessage(&_Bridge.TransactOpts, message, proof) } -// ProcessMessage is a paid mutator transaction binding the contract method 0x1136c050. +// ProcessMessage is a paid mutator transaction binding the contract method 0x01382408. // -// Solidity: function processMessage((uint128,address,uint256,uint256,address,address,address,uint256,uint256,uint256,bytes,string) message, bytes proof) returns() +// Solidity: function processMessage((uint128,address,uint64,uint64,address,address,address,uint256,uint256,uint256,bytes,string) message, bytes proof) returns() func (_Bridge *BridgeTransactorSession) ProcessMessage(message IBridgeMessage, proof []byte) (*types.Transaction, error) { return _Bridge.Contract.ProcessMessage(&_Bridge.TransactOpts, message, proof) } -// RecallMessage is a paid mutator transaction binding the contract method 0x40d0ff96. +// RecallMessage is a paid mutator transaction binding the contract method 0x1a92e520. // -// Solidity: function recallMessage((uint128,address,uint256,uint256,address,address,address,uint256,uint256,uint256,bytes,string) message, bytes proof) returns() +// Solidity: function recallMessage((uint128,address,uint64,uint64,address,address,address,uint256,uint256,uint256,bytes,string) message, bytes proof) returns() func (_Bridge *BridgeTransactor) RecallMessage(opts *bind.TransactOpts, message IBridgeMessage, proof []byte) (*types.Transaction, error) { return _Bridge.contract.Transact(opts, "recallMessage", message, proof) } -// RecallMessage is a paid mutator transaction binding the contract method 0x40d0ff96. +// RecallMessage is a paid mutator transaction binding the contract method 0x1a92e520. // -// Solidity: function recallMessage((uint128,address,uint256,uint256,address,address,address,uint256,uint256,uint256,bytes,string) message, bytes proof) returns() +// Solidity: function recallMessage((uint128,address,uint64,uint64,address,address,address,uint256,uint256,uint256,bytes,string) message, bytes proof) returns() func (_Bridge *BridgeSession) RecallMessage(message IBridgeMessage, proof []byte) (*types.Transaction, error) { return _Bridge.Contract.RecallMessage(&_Bridge.TransactOpts, message, proof) } -// RecallMessage is a paid mutator transaction binding the contract method 0x40d0ff96. +// RecallMessage is a paid mutator transaction binding the contract method 0x1a92e520. // -// Solidity: function recallMessage((uint128,address,uint256,uint256,address,address,address,uint256,uint256,uint256,bytes,string) message, bytes proof) returns() +// Solidity: function recallMessage((uint128,address,uint64,uint64,address,address,address,uint256,uint256,uint256,bytes,string) message, bytes proof) returns() func (_Bridge *BridgeTransactorSession) RecallMessage(message IBridgeMessage, proof []byte) (*types.Transaction, error) { return _Bridge.Contract.RecallMessage(&_Bridge.TransactOpts, message, proof) } @@ -725,44 +808,44 @@ func (_Bridge *BridgeTransactorSession) RenounceOwnership() (*types.Transaction, return _Bridge.Contract.RenounceOwnership(&_Bridge.TransactOpts) } -// RetryMessage is a paid mutator transaction binding the contract method 0x0be0b938. +// RetryMessage is a paid mutator transaction binding the contract method 0xa24f721b. // -// Solidity: function retryMessage((uint128,address,uint256,uint256,address,address,address,uint256,uint256,uint256,bytes,string) message, bool isLastAttempt) returns() +// Solidity: function retryMessage((uint128,address,uint64,uint64,address,address,address,uint256,uint256,uint256,bytes,string) message, bool isLastAttempt) returns() func (_Bridge *BridgeTransactor) RetryMessage(opts *bind.TransactOpts, message IBridgeMessage, isLastAttempt bool) (*types.Transaction, error) { return _Bridge.contract.Transact(opts, "retryMessage", message, isLastAttempt) } -// RetryMessage is a paid mutator transaction binding the contract method 0x0be0b938. +// RetryMessage is a paid mutator transaction binding the contract method 0xa24f721b. // -// Solidity: function retryMessage((uint128,address,uint256,uint256,address,address,address,uint256,uint256,uint256,bytes,string) message, bool isLastAttempt) returns() +// Solidity: function retryMessage((uint128,address,uint64,uint64,address,address,address,uint256,uint256,uint256,bytes,string) message, bool isLastAttempt) returns() func (_Bridge *BridgeSession) RetryMessage(message IBridgeMessage, isLastAttempt bool) (*types.Transaction, error) { return _Bridge.Contract.RetryMessage(&_Bridge.TransactOpts, message, isLastAttempt) } -// RetryMessage is a paid mutator transaction binding the contract method 0x0be0b938. +// RetryMessage is a paid mutator transaction binding the contract method 0xa24f721b. // -// Solidity: function retryMessage((uint128,address,uint256,uint256,address,address,address,uint256,uint256,uint256,bytes,string) message, bool isLastAttempt) returns() +// Solidity: function retryMessage((uint128,address,uint64,uint64,address,address,address,uint256,uint256,uint256,bytes,string) message, bool isLastAttempt) returns() func (_Bridge *BridgeTransactorSession) RetryMessage(message IBridgeMessage, isLastAttempt bool) (*types.Transaction, error) { return _Bridge.Contract.RetryMessage(&_Bridge.TransactOpts, message, isLastAttempt) } -// SendMessage is a paid mutator transaction binding the contract method 0x5fc34de7. +// SendMessage is a paid mutator transaction binding the contract method 0x33bcd0cc. // -// Solidity: function sendMessage((uint128,address,uint256,uint256,address,address,address,uint256,uint256,uint256,bytes,string) message) payable returns(bytes32 msgHash, (uint128,address,uint256,uint256,address,address,address,uint256,uint256,uint256,bytes,string) _message) +// Solidity: function sendMessage((uint128,address,uint64,uint64,address,address,address,uint256,uint256,uint256,bytes,string) message) payable returns(bytes32 msgHash, (uint128,address,uint64,uint64,address,address,address,uint256,uint256,uint256,bytes,string) _message) func (_Bridge *BridgeTransactor) SendMessage(opts *bind.TransactOpts, message IBridgeMessage) (*types.Transaction, error) { return _Bridge.contract.Transact(opts, "sendMessage", message) } -// SendMessage is a paid mutator transaction binding the contract method 0x5fc34de7. +// SendMessage is a paid mutator transaction binding the contract method 0x33bcd0cc. // -// Solidity: function sendMessage((uint128,address,uint256,uint256,address,address,address,uint256,uint256,uint256,bytes,string) message) payable returns(bytes32 msgHash, (uint128,address,uint256,uint256,address,address,address,uint256,uint256,uint256,bytes,string) _message) +// Solidity: function sendMessage((uint128,address,uint64,uint64,address,address,address,uint256,uint256,uint256,bytes,string) message) payable returns(bytes32 msgHash, (uint128,address,uint64,uint64,address,address,address,uint256,uint256,uint256,bytes,string) _message) func (_Bridge *BridgeSession) SendMessage(message IBridgeMessage) (*types.Transaction, error) { return _Bridge.Contract.SendMessage(&_Bridge.TransactOpts, message) } -// SendMessage is a paid mutator transaction binding the contract method 0x5fc34de7. +// SendMessage is a paid mutator transaction binding the contract method 0x33bcd0cc. // -// Solidity: function sendMessage((uint128,address,uint256,uint256,address,address,address,uint256,uint256,uint256,bytes,string) message) payable returns(bytes32 msgHash, (uint128,address,uint256,uint256,address,address,address,uint256,uint256,uint256,bytes,string) _message) +// Solidity: function sendMessage((uint128,address,uint64,uint64,address,address,address,uint256,uint256,uint256,bytes,string) message) payable returns(bytes32 msgHash, (uint128,address,uint64,uint64,address,address,address,uint256,uint256,uint256,bytes,string) _message) func (_Bridge *BridgeTransactorSession) SendMessage(message IBridgeMessage) (*types.Transaction, error) { return _Bridge.Contract.SendMessage(&_Bridge.TransactOpts, message) } @@ -899,15 +982,15 @@ func (it *BridgeDestChainEnabledIterator) Close() error { // BridgeDestChainEnabled represents a DestChainEnabled event raised by the Bridge contract. type BridgeDestChainEnabled struct { - ChainId *big.Int + ChainId uint64 Enabled bool Raw types.Log // Blockchain specific contextual infos } -// FilterDestChainEnabled is a free log retrieval operation binding the contract event 0x9f391218c06d4fc365ceb15f340bb3d77306b28ac0b8d4e519aec2654794536d. +// FilterDestChainEnabled is a free log retrieval operation binding the contract event 0xacf89c9e8ba7f621aa9632bc23b65f5d4c7a0eacfb7bc5149c17a9dec05e89a4. // -// Solidity: event DestChainEnabled(uint256 indexed chainId, bool enabled) -func (_Bridge *BridgeFilterer) FilterDestChainEnabled(opts *bind.FilterOpts, chainId []*big.Int) (*BridgeDestChainEnabledIterator, error) { +// Solidity: event DestChainEnabled(uint64 indexed chainId, bool enabled) +func (_Bridge *BridgeFilterer) FilterDestChainEnabled(opts *bind.FilterOpts, chainId []uint64) (*BridgeDestChainEnabledIterator, error) { var chainIdRule []interface{} for _, chainIdItem := range chainId { @@ -921,10 +1004,10 @@ func (_Bridge *BridgeFilterer) FilterDestChainEnabled(opts *bind.FilterOpts, cha return &BridgeDestChainEnabledIterator{contract: _Bridge.contract, event: "DestChainEnabled", logs: logs, sub: sub}, nil } -// WatchDestChainEnabled is a free log subscription operation binding the contract event 0x9f391218c06d4fc365ceb15f340bb3d77306b28ac0b8d4e519aec2654794536d. +// WatchDestChainEnabled is a free log subscription operation binding the contract event 0xacf89c9e8ba7f621aa9632bc23b65f5d4c7a0eacfb7bc5149c17a9dec05e89a4. // -// Solidity: event DestChainEnabled(uint256 indexed chainId, bool enabled) -func (_Bridge *BridgeFilterer) WatchDestChainEnabled(opts *bind.WatchOpts, sink chan<- *BridgeDestChainEnabled, chainId []*big.Int) (event.Subscription, error) { +// Solidity: event DestChainEnabled(uint64 indexed chainId, bool enabled) +func (_Bridge *BridgeFilterer) WatchDestChainEnabled(opts *bind.WatchOpts, sink chan<- *BridgeDestChainEnabled, chainId []uint64) (event.Subscription, error) { var chainIdRule []interface{} for _, chainIdItem := range chainId { @@ -963,9 +1046,9 @@ func (_Bridge *BridgeFilterer) WatchDestChainEnabled(opts *bind.WatchOpts, sink }), nil } -// ParseDestChainEnabled is a log parse operation binding the contract event 0x9f391218c06d4fc365ceb15f340bb3d77306b28ac0b8d4e519aec2654794536d. +// ParseDestChainEnabled is a log parse operation binding the contract event 0xacf89c9e8ba7f621aa9632bc23b65f5d4c7a0eacfb7bc5149c17a9dec05e89a4. // -// Solidity: event DestChainEnabled(uint256 indexed chainId, bool enabled) +// Solidity: event DestChainEnabled(uint64 indexed chainId, bool enabled) func (_Bridge *BridgeFilterer) ParseDestChainEnabled(log types.Log) (*BridgeDestChainEnabled, error) { event := new(BridgeDestChainEnabled) if err := _Bridge.contract.UnpackLog(event, "DestChainEnabled", log); err != nil { @@ -1327,9 +1410,9 @@ type BridgeMessageSent struct { Raw types.Log // Blockchain specific contextual infos } -// FilterMessageSent is a free log retrieval operation binding the contract event 0x769685e0f49529ee2429cb28b4b48bd962ff754c08a2849804458ad716d75dcf. +// FilterMessageSent is a free log retrieval operation binding the contract event 0x3406baf0dfd13f7f0ce1d077c461a35b763927e1438d49749442de2eb42148ba. // -// Solidity: event MessageSent(bytes32 indexed msgHash, (uint128,address,uint256,uint256,address,address,address,uint256,uint256,uint256,bytes,string) message) +// Solidity: event MessageSent(bytes32 indexed msgHash, (uint128,address,uint64,uint64,address,address,address,uint256,uint256,uint256,bytes,string) message) func (_Bridge *BridgeFilterer) FilterMessageSent(opts *bind.FilterOpts, msgHash [][32]byte) (*BridgeMessageSentIterator, error) { var msgHashRule []interface{} @@ -1344,9 +1427,9 @@ func (_Bridge *BridgeFilterer) FilterMessageSent(opts *bind.FilterOpts, msgHash return &BridgeMessageSentIterator{contract: _Bridge.contract, event: "MessageSent", logs: logs, sub: sub}, nil } -// WatchMessageSent is a free log subscription operation binding the contract event 0x769685e0f49529ee2429cb28b4b48bd962ff754c08a2849804458ad716d75dcf. +// WatchMessageSent is a free log subscription operation binding the contract event 0x3406baf0dfd13f7f0ce1d077c461a35b763927e1438d49749442de2eb42148ba. // -// Solidity: event MessageSent(bytes32 indexed msgHash, (uint128,address,uint256,uint256,address,address,address,uint256,uint256,uint256,bytes,string) message) +// Solidity: event MessageSent(bytes32 indexed msgHash, (uint128,address,uint64,uint64,address,address,address,uint256,uint256,uint256,bytes,string) message) func (_Bridge *BridgeFilterer) WatchMessageSent(opts *bind.WatchOpts, sink chan<- *BridgeMessageSent, msgHash [][32]byte) (event.Subscription, error) { var msgHashRule []interface{} @@ -1386,9 +1469,9 @@ func (_Bridge *BridgeFilterer) WatchMessageSent(opts *bind.WatchOpts, sink chan< }), nil } -// ParseMessageSent is a log parse operation binding the contract event 0x769685e0f49529ee2429cb28b4b48bd962ff754c08a2849804458ad716d75dcf. +// ParseMessageSent is a log parse operation binding the contract event 0x3406baf0dfd13f7f0ce1d077c461a35b763927e1438d49749442de2eb42148ba. // -// Solidity: event MessageSent(bytes32 indexed msgHash, (uint128,address,uint256,uint256,address,address,address,uint256,uint256,uint256,bytes,string) message) +// Solidity: event MessageSent(bytes32 indexed msgHash, (uint128,address,uint64,uint64,address,address,address,uint256,uint256,uint256,bytes,string) message) func (_Bridge *BridgeFilterer) ParseMessageSent(log types.Log) (*BridgeMessageSent, error) { event := new(BridgeMessageSent) if err := _Bridge.contract.UnpackLog(event, "MessageSent", log); err != nil { @@ -1543,6 +1626,159 @@ func (_Bridge *BridgeFilterer) ParseMessageStatusChanged(log types.Log) (*Bridge return event, nil } +// BridgeOwnershipTransferStartedIterator is returned from FilterOwnershipTransferStarted and is used to iterate over the raw logs and unpacked data for OwnershipTransferStarted events raised by the Bridge contract. +type BridgeOwnershipTransferStartedIterator struct { + Event *BridgeOwnershipTransferStarted // Event containing the contract specifics and raw log + + contract *bind.BoundContract // Generic contract to use for unpacking event data + event string // Event name to use for unpacking event data + + logs chan types.Log // Log channel receiving the found contract events + sub ethereum.Subscription // Subscription for errors, completion and termination + done bool // Whether the subscription completed delivering logs + fail error // Occurred error to stop iteration +} + +// Next advances the iterator to the subsequent event, returning whether there +// are any more events found. In case of a retrieval or parsing error, false is +// returned and Error() can be queried for the exact failure. +func (it *BridgeOwnershipTransferStartedIterator) Next() bool { + // If the iterator failed, stop iterating + if it.fail != nil { + return false + } + // If the iterator completed, deliver directly whatever's available + if it.done { + select { + case log := <-it.logs: + it.Event = new(BridgeOwnershipTransferStarted) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + default: + return false + } + } + // Iterator still in progress, wait for either a data or an error event + select { + case log := <-it.logs: + it.Event = new(BridgeOwnershipTransferStarted) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + case err := <-it.sub.Err(): + it.done = true + it.fail = err + return it.Next() + } +} + +// Error returns any retrieval or parsing error occurred during filtering. +func (it *BridgeOwnershipTransferStartedIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *BridgeOwnershipTransferStartedIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// BridgeOwnershipTransferStarted represents a OwnershipTransferStarted event raised by the Bridge contract. +type BridgeOwnershipTransferStarted struct { + PreviousOwner common.Address + NewOwner common.Address + Raw types.Log // Blockchain specific contextual infos +} + +// FilterOwnershipTransferStarted is a free log retrieval operation binding the contract event 0x38d16b8cac22d99fc7c124b9cd0de2d3fa1faef420bfe791d8c362d765e22700. +// +// Solidity: event OwnershipTransferStarted(address indexed previousOwner, address indexed newOwner) +func (_Bridge *BridgeFilterer) FilterOwnershipTransferStarted(opts *bind.FilterOpts, previousOwner []common.Address, newOwner []common.Address) (*BridgeOwnershipTransferStartedIterator, error) { + + var previousOwnerRule []interface{} + for _, previousOwnerItem := range previousOwner { + previousOwnerRule = append(previousOwnerRule, previousOwnerItem) + } + var newOwnerRule []interface{} + for _, newOwnerItem := range newOwner { + newOwnerRule = append(newOwnerRule, newOwnerItem) + } + + logs, sub, err := _Bridge.contract.FilterLogs(opts, "OwnershipTransferStarted", previousOwnerRule, newOwnerRule) + if err != nil { + return nil, err + } + return &BridgeOwnershipTransferStartedIterator{contract: _Bridge.contract, event: "OwnershipTransferStarted", logs: logs, sub: sub}, nil +} + +// WatchOwnershipTransferStarted is a free log subscription operation binding the contract event 0x38d16b8cac22d99fc7c124b9cd0de2d3fa1faef420bfe791d8c362d765e22700. +// +// Solidity: event OwnershipTransferStarted(address indexed previousOwner, address indexed newOwner) +func (_Bridge *BridgeFilterer) WatchOwnershipTransferStarted(opts *bind.WatchOpts, sink chan<- *BridgeOwnershipTransferStarted, previousOwner []common.Address, newOwner []common.Address) (event.Subscription, error) { + + var previousOwnerRule []interface{} + for _, previousOwnerItem := range previousOwner { + previousOwnerRule = append(previousOwnerRule, previousOwnerItem) + } + var newOwnerRule []interface{} + for _, newOwnerItem := range newOwner { + newOwnerRule = append(newOwnerRule, newOwnerItem) + } + + logs, sub, err := _Bridge.contract.WatchLogs(opts, "OwnershipTransferStarted", previousOwnerRule, newOwnerRule) + if err != nil { + return nil, err + } + return event.NewSubscription(func(quit <-chan struct{}) error { + defer sub.Unsubscribe() + for { + select { + case log := <-logs: + // New log arrived, parse the event and forward to the user + event := new(BridgeOwnershipTransferStarted) + if err := _Bridge.contract.UnpackLog(event, "OwnershipTransferStarted", log); err != nil { + return err + } + event.Raw = log + + select { + case sink <- event: + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + } + }), nil +} + +// ParseOwnershipTransferStarted is a log parse operation binding the contract event 0x38d16b8cac22d99fc7c124b9cd0de2d3fa1faef420bfe791d8c362d765e22700. +// +// Solidity: event OwnershipTransferStarted(address indexed previousOwner, address indexed newOwner) +func (_Bridge *BridgeFilterer) ParseOwnershipTransferStarted(log types.Log) (*BridgeOwnershipTransferStarted, error) { + event := new(BridgeOwnershipTransferStarted) + if err := _Bridge.contract.UnpackLog(event, "OwnershipTransferStarted", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} + // BridgeOwnershipTransferredIterator is returned from FilterOwnershipTransferred and is used to iterate over the raw logs and unpacked data for OwnershipTransferred events raised by the Bridge contract. type BridgeOwnershipTransferredIterator struct { Event *BridgeOwnershipTransferred // Event containing the contract specifics and raw log diff --git a/packages/relayer/bindings/erc1155vault/ERC1155Vault.go b/packages/relayer/bindings/erc1155vault/ERC1155Vault.go index 476152b5c6..059fd779b1 100644 --- a/packages/relayer/bindings/erc1155vault/ERC1155Vault.go +++ b/packages/relayer/bindings/erc1155vault/ERC1155Vault.go @@ -31,7 +31,7 @@ var ( // BaseNFTVaultBridgeTransferOp is an auto generated low-level Go binding around an user-defined struct. type BaseNFTVaultBridgeTransferOp struct { - DestChainId *big.Int + DestChainId uint64 To common.Address Token common.Address TokenIds []*big.Int @@ -44,7 +44,7 @@ type BaseNFTVaultBridgeTransferOp struct { // BaseNFTVaultCanonicalNFT is an auto generated low-level Go binding around an user-defined struct. type BaseNFTVaultCanonicalNFT struct { - ChainId *big.Int + ChainId uint64 Addr common.Address Symbol string Name string @@ -54,9 +54,9 @@ type BaseNFTVaultCanonicalNFT struct { type IBridgeMessage struct { Id *big.Int From common.Address - SrcChainId *big.Int - DestChainId *big.Int - User common.Address + SrcChainId uint64 + DestChainId uint64 + Owner common.Address To common.Address RefundTo common.Address Value *big.Int @@ -68,7 +68,7 @@ type IBridgeMessage struct { // ERC1155VaultMetaData contains all meta data concerning the ERC1155Vault contract. var ERC1155VaultMetaData = &bind.MetaData{ - ABI: "[{\"inputs\":[],\"name\":\"ETH_TRANSFER_FAILED\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"INVALID_PAUSE_STATUS\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"REENTRANT_CALL\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"RESOLVER_DENIED\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"RESOLVER_INVALID_MANAGER\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"chainId\",\"type\":\"uint256\"},{\"internalType\":\"bytes32\",\"name\":\"name\",\"type\":\"bytes32\"}],\"name\":\"RESOLVER_ZERO_ADDR\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"VAULT_INTERFACE_NOT_SUPPORTED\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"VAULT_INVALID_AMOUNT\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"VAULT_INVALID_FROM\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"VAULT_INVALID_SRC_CHAIN_ID\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"VAULT_INVALID_TO\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"VAULT_INVALID_TOKEN\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"VAULT_INVALID_USER\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"VAULT_MAX_TOKEN_PER_TXN_EXCEEDED\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"VAULT_MESSAGE_NOT_FAILED\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"VAULT_MESSAGE_RELEASED_ALREADY\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"VAULT_TOKEN_ARRAY_MISMATCH\",\"type\":\"error\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"chainId\",\"type\":\"uint256\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"ctoken\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"btoken\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"string\",\"name\":\"ctokenSymbol\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"string\",\"name\":\"ctokenName\",\"type\":\"string\"}],\"name\":\"BridgedTokenDeployed\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint8\",\"name\":\"version\",\"type\":\"uint8\"}],\"name\":\"Initialized\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"previousOwner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"newOwner\",\"type\":\"address\"}],\"name\":\"OwnershipTransferred\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"Paused\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"msgHash\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"srcChainId\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256[]\",\"name\":\"tokenIds\",\"type\":\"uint256[]\"},{\"indexed\":false,\"internalType\":\"uint256[]\",\"name\":\"amounts\",\"type\":\"uint256[]\"}],\"name\":\"TokenReceived\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"msgHash\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256[]\",\"name\":\"tokenIds\",\"type\":\"uint256[]\"},{\"indexed\":false,\"internalType\":\"uint256[]\",\"name\":\"amounts\",\"type\":\"uint256[]\"}],\"name\":\"TokenReleased\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"msgHash\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"destChainId\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256[]\",\"name\":\"tokenIds\",\"type\":\"uint256[]\"},{\"indexed\":false,\"internalType\":\"uint256[]\",\"name\":\"amounts\",\"type\":\"uint256[]\"}],\"name\":\"TokenSent\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"Unpaused\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"ERC1155_INTERFACE_ID\",\"outputs\":[{\"internalType\":\"bytes4\",\"name\":\"\",\"type\":\"bytes4\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"ERC721_INTERFACE_ID\",\"outputs\":[{\"internalType\":\"bytes4\",\"name\":\"\",\"type\":\"bytes4\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"addressManager\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"name\":\"bridgedToCanonical\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"chainId\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"addr\",\"type\":\"address\"},{\"internalType\":\"string\",\"name\":\"symbol\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"name\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"name\":\"canonicalToBridged\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"addressManager\",\"type\":\"address\"}],\"name\":\"init\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"name\":\"isBridgedToken\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"},{\"internalType\":\"uint256[]\",\"name\":\"\",\"type\":\"uint256[]\"},{\"internalType\":\"uint256[]\",\"name\":\"\",\"type\":\"uint256[]\"},{\"internalType\":\"bytes\",\"name\":\"\",\"type\":\"bytes\"}],\"name\":\"onERC1155BatchReceived\",\"outputs\":[{\"internalType\":\"bytes4\",\"name\":\"\",\"type\":\"bytes4\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"\",\"type\":\"bytes\"}],\"name\":\"onERC1155Received\",\"outputs\":[{\"internalType\":\"bytes4\",\"name\":\"\",\"type\":\"bytes4\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"uint128\",\"name\":\"id\",\"type\":\"uint128\"},{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"srcChainId\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"destChainId\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"user\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"refundTo\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"fee\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"gasLimit\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"},{\"internalType\":\"string\",\"name\":\"memo\",\"type\":\"string\"}],\"internalType\":\"structIBridge.Message\",\"name\":\"message\",\"type\":\"tuple\"},{\"internalType\":\"bytes32\",\"name\":\"msgHash\",\"type\":\"bytes32\"}],\"name\":\"onMessageRecalled\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"owner\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"pause\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"paused\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"uint256\",\"name\":\"chainId\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"addr\",\"type\":\"address\"},{\"internalType\":\"string\",\"name\":\"symbol\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"name\",\"type\":\"string\"}],\"internalType\":\"structBaseNFTVault.CanonicalNFT\",\"name\":\"ctoken\",\"type\":\"tuple\"},{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256[]\",\"name\":\"tokenIds\",\"type\":\"uint256[]\"},{\"internalType\":\"uint256[]\",\"name\":\"amounts\",\"type\":\"uint256[]\"}],\"name\":\"receiveToken\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"renounceOwnership\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"chainId\",\"type\":\"uint256\"},{\"internalType\":\"bytes32\",\"name\":\"name\",\"type\":\"bytes32\"},{\"internalType\":\"bool\",\"name\":\"allowZeroAddress\",\"type\":\"bool\"}],\"name\":\"resolve\",\"outputs\":[{\"internalType\":\"addresspayable\",\"name\":\"addr\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"name\",\"type\":\"bytes32\"},{\"internalType\":\"bool\",\"name\":\"allowZeroAddress\",\"type\":\"bool\"}],\"name\":\"resolve\",\"outputs\":[{\"internalType\":\"addresspayable\",\"name\":\"addr\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"uint256\",\"name\":\"destChainId\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"uint256[]\",\"name\":\"tokenIds\",\"type\":\"uint256[]\"},{\"internalType\":\"uint256[]\",\"name\":\"amounts\",\"type\":\"uint256[]\"},{\"internalType\":\"uint256\",\"name\":\"gasLimit\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"fee\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"refundTo\",\"type\":\"address\"},{\"internalType\":\"string\",\"name\":\"memo\",\"type\":\"string\"}],\"internalType\":\"structBaseNFTVault.BridgeTransferOp\",\"name\":\"opt\",\"type\":\"tuple\"}],\"name\":\"sendToken\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes4\",\"name\":\"interfaceId\",\"type\":\"bytes4\"}],\"name\":\"supportsInterface\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"newOwner\",\"type\":\"address\"}],\"name\":\"transferOwnership\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"unpause\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}]", + ABI: "[{\"inputs\":[],\"name\":\"ETH_TRANSFER_FAILED\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"INVALID_PAUSE_STATUS\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"REENTRANT_CALL\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"RESOLVER_DENIED\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"RESOLVER_INVALID_MANAGER\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"RESOLVER_UNEXPECTED_CHAINID\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"chainId\",\"type\":\"uint64\"},{\"internalType\":\"string\",\"name\":\"name\",\"type\":\"string\"}],\"name\":\"RESOLVER_ZERO_ADDR\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"VAULT_INTERFACE_NOT_SUPPORTED\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"VAULT_INVALID_AMOUNT\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"VAULT_INVALID_FROM\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"VAULT_INVALID_SRC_CHAIN_ID\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"VAULT_INVALID_TOKEN\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"VAULT_INVALID_USER\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"VAULT_MAX_TOKEN_PER_TXN_EXCEEDED\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"VAULT_MESSAGE_NOT_FAILED\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"VAULT_MESSAGE_RELEASED_ALREADY\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"VAULT_PERMISSION_DENIED\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"VAULT_TOKEN_ARRAY_MISMATCH\",\"type\":\"error\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint64\",\"name\":\"chainId\",\"type\":\"uint64\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"ctoken\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"btoken\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"string\",\"name\":\"ctokenSymbol\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"string\",\"name\":\"ctokenName\",\"type\":\"string\"}],\"name\":\"BridgedTokenDeployed\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint8\",\"name\":\"version\",\"type\":\"uint8\"}],\"name\":\"Initialized\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"previousOwner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"newOwner\",\"type\":\"address\"}],\"name\":\"OwnershipTransferStarted\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"previousOwner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"newOwner\",\"type\":\"address\"}],\"name\":\"OwnershipTransferred\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"Paused\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"msgHash\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint64\",\"name\":\"srcChainId\",\"type\":\"uint64\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256[]\",\"name\":\"tokenIds\",\"type\":\"uint256[]\"},{\"indexed\":false,\"internalType\":\"uint256[]\",\"name\":\"amounts\",\"type\":\"uint256[]\"}],\"name\":\"TokenReceived\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"msgHash\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256[]\",\"name\":\"tokenIds\",\"type\":\"uint256[]\"},{\"indexed\":false,\"internalType\":\"uint256[]\",\"name\":\"amounts\",\"type\":\"uint256[]\"}],\"name\":\"TokenReleased\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"msgHash\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint64\",\"name\":\"destChainId\",\"type\":\"uint64\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256[]\",\"name\":\"tokenIds\",\"type\":\"uint256[]\"},{\"indexed\":false,\"internalType\":\"uint256[]\",\"name\":\"amounts\",\"type\":\"uint256[]\"}],\"name\":\"TokenSent\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"Unpaused\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"ERC1155_INTERFACE_ID\",\"outputs\":[{\"internalType\":\"bytes4\",\"name\":\"\",\"type\":\"bytes4\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"ERC721_INTERFACE_ID\",\"outputs\":[{\"internalType\":\"bytes4\",\"name\":\"\",\"type\":\"bytes4\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"MAX_TOKEN_PER_TXN\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"acceptOwnership\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"addressManager\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"name\":\"bridgedToCanonical\",\"outputs\":[{\"internalType\":\"uint64\",\"name\":\"chainId\",\"type\":\"uint64\"},{\"internalType\":\"address\",\"name\":\"addr\",\"type\":\"address\"},{\"internalType\":\"string\",\"name\":\"symbol\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"name\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"name\":\"canonicalToBridged\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"addressManager\",\"type\":\"address\"}],\"name\":\"init\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"name\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"},{\"internalType\":\"uint256[]\",\"name\":\"\",\"type\":\"uint256[]\"},{\"internalType\":\"uint256[]\",\"name\":\"\",\"type\":\"uint256[]\"},{\"internalType\":\"bytes\",\"name\":\"\",\"type\":\"bytes\"}],\"name\":\"onERC1155BatchReceived\",\"outputs\":[{\"internalType\":\"bytes4\",\"name\":\"\",\"type\":\"bytes4\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"\",\"type\":\"bytes\"}],\"name\":\"onERC1155Received\",\"outputs\":[{\"internalType\":\"bytes4\",\"name\":\"\",\"type\":\"bytes4\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"uint128\",\"name\":\"id\",\"type\":\"uint128\"},{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"uint64\",\"name\":\"srcChainId\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"destChainId\",\"type\":\"uint64\"},{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"refundTo\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"fee\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"gasLimit\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"},{\"internalType\":\"string\",\"name\":\"memo\",\"type\":\"string\"}],\"internalType\":\"structIBridge.Message\",\"name\":\"message\",\"type\":\"tuple\"},{\"internalType\":\"bytes32\",\"name\":\"msgHash\",\"type\":\"bytes32\"}],\"name\":\"onMessageRecalled\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"owner\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"pause\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"paused\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"pendingOwner\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"uint64\",\"name\":\"chainId\",\"type\":\"uint64\"},{\"internalType\":\"address\",\"name\":\"addr\",\"type\":\"address\"},{\"internalType\":\"string\",\"name\":\"symbol\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"name\",\"type\":\"string\"}],\"internalType\":\"structBaseNFTVault.CanonicalNFT\",\"name\":\"ctoken\",\"type\":\"tuple\"},{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256[]\",\"name\":\"tokenIds\",\"type\":\"uint256[]\"},{\"internalType\":\"uint256[]\",\"name\":\"amounts\",\"type\":\"uint256[]\"}],\"name\":\"receiveToken\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"renounceOwnership\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"chainId\",\"type\":\"uint64\"},{\"internalType\":\"bytes32\",\"name\":\"name\",\"type\":\"bytes32\"},{\"internalType\":\"bool\",\"name\":\"allowZeroAddress\",\"type\":\"bool\"}],\"name\":\"resolve\",\"outputs\":[{\"internalType\":\"addresspayable\",\"name\":\"addr\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"name\",\"type\":\"bytes32\"},{\"internalType\":\"bool\",\"name\":\"allowZeroAddress\",\"type\":\"bool\"}],\"name\":\"resolve\",\"outputs\":[{\"internalType\":\"addresspayable\",\"name\":\"addr\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"uint64\",\"name\":\"destChainId\",\"type\":\"uint64\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"uint256[]\",\"name\":\"tokenIds\",\"type\":\"uint256[]\"},{\"internalType\":\"uint256[]\",\"name\":\"amounts\",\"type\":\"uint256[]\"},{\"internalType\":\"uint256\",\"name\":\"gasLimit\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"fee\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"refundTo\",\"type\":\"address\"},{\"internalType\":\"string\",\"name\":\"memo\",\"type\":\"string\"}],\"internalType\":\"structBaseNFTVault.BridgeTransferOp\",\"name\":\"op\",\"type\":\"tuple\"}],\"name\":\"sendToken\",\"outputs\":[{\"components\":[{\"internalType\":\"uint128\",\"name\":\"id\",\"type\":\"uint128\"},{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"uint64\",\"name\":\"srcChainId\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"destChainId\",\"type\":\"uint64\"},{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"refundTo\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"fee\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"gasLimit\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"},{\"internalType\":\"string\",\"name\":\"memo\",\"type\":\"string\"}],\"internalType\":\"structIBridge.Message\",\"name\":\"_message\",\"type\":\"tuple\"}],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes4\",\"name\":\"interfaceId\",\"type\":\"bytes4\"}],\"name\":\"supportsInterface\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"newOwner\",\"type\":\"address\"}],\"name\":\"transferOwnership\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"unpause\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}]", } // ERC1155VaultABI is the input ABI used to generate the binding from. @@ -279,6 +279,37 @@ func (_ERC1155Vault *ERC1155VaultCallerSession) ERC721INTERFACEID() ([4]byte, er return _ERC1155Vault.Contract.ERC721INTERFACEID(&_ERC1155Vault.CallOpts) } +// MAXTOKENPERTXN is a free data retrieval call binding the contract method 0x634da63a. +// +// Solidity: function MAX_TOKEN_PER_TXN() view returns(uint256) +func (_ERC1155Vault *ERC1155VaultCaller) MAXTOKENPERTXN(opts *bind.CallOpts) (*big.Int, error) { + var out []interface{} + err := _ERC1155Vault.contract.Call(opts, &out, "MAX_TOKEN_PER_TXN") + + if err != nil { + return *new(*big.Int), err + } + + out0 := *abi.ConvertType(out[0], new(*big.Int)).(**big.Int) + + return out0, err + +} + +// MAXTOKENPERTXN is a free data retrieval call binding the contract method 0x634da63a. +// +// Solidity: function MAX_TOKEN_PER_TXN() view returns(uint256) +func (_ERC1155Vault *ERC1155VaultSession) MAXTOKENPERTXN() (*big.Int, error) { + return _ERC1155Vault.Contract.MAXTOKENPERTXN(&_ERC1155Vault.CallOpts) +} + +// MAXTOKENPERTXN is a free data retrieval call binding the contract method 0x634da63a. +// +// Solidity: function MAX_TOKEN_PER_TXN() view returns(uint256) +func (_ERC1155Vault *ERC1155VaultCallerSession) MAXTOKENPERTXN() (*big.Int, error) { + return _ERC1155Vault.Contract.MAXTOKENPERTXN(&_ERC1155Vault.CallOpts) +} + // AddressManager is a free data retrieval call binding the contract method 0x3ab76e9f. // // Solidity: function addressManager() view returns(address) @@ -312,9 +343,9 @@ func (_ERC1155Vault *ERC1155VaultCallerSession) AddressManager() (common.Address // BridgedToCanonical is a free data retrieval call binding the contract method 0x9aa8605c. // -// Solidity: function bridgedToCanonical(address ) view returns(uint256 chainId, address addr, string symbol, string name) +// Solidity: function bridgedToCanonical(address ) view returns(uint64 chainId, address addr, string symbol, string name) func (_ERC1155Vault *ERC1155VaultCaller) BridgedToCanonical(opts *bind.CallOpts, arg0 common.Address) (struct { - ChainId *big.Int + ChainId uint64 Addr common.Address Symbol string Name string @@ -323,7 +354,7 @@ func (_ERC1155Vault *ERC1155VaultCaller) BridgedToCanonical(opts *bind.CallOpts, err := _ERC1155Vault.contract.Call(opts, &out, "bridgedToCanonical", arg0) outstruct := new(struct { - ChainId *big.Int + ChainId uint64 Addr common.Address Symbol string Name string @@ -332,7 +363,7 @@ func (_ERC1155Vault *ERC1155VaultCaller) BridgedToCanonical(opts *bind.CallOpts, return *outstruct, err } - outstruct.ChainId = *abi.ConvertType(out[0], new(*big.Int)).(**big.Int) + outstruct.ChainId = *abi.ConvertType(out[0], new(uint64)).(*uint64) outstruct.Addr = *abi.ConvertType(out[1], new(common.Address)).(*common.Address) outstruct.Symbol = *abi.ConvertType(out[2], new(string)).(*string) outstruct.Name = *abi.ConvertType(out[3], new(string)).(*string) @@ -343,9 +374,9 @@ func (_ERC1155Vault *ERC1155VaultCaller) BridgedToCanonical(opts *bind.CallOpts, // BridgedToCanonical is a free data retrieval call binding the contract method 0x9aa8605c. // -// Solidity: function bridgedToCanonical(address ) view returns(uint256 chainId, address addr, string symbol, string name) +// Solidity: function bridgedToCanonical(address ) view returns(uint64 chainId, address addr, string symbol, string name) func (_ERC1155Vault *ERC1155VaultSession) BridgedToCanonical(arg0 common.Address) (struct { - ChainId *big.Int + ChainId uint64 Addr common.Address Symbol string Name string @@ -355,9 +386,9 @@ func (_ERC1155Vault *ERC1155VaultSession) BridgedToCanonical(arg0 common.Address // BridgedToCanonical is a free data retrieval call binding the contract method 0x9aa8605c. // -// Solidity: function bridgedToCanonical(address ) view returns(uint256 chainId, address addr, string symbol, string name) +// Solidity: function bridgedToCanonical(address ) view returns(uint64 chainId, address addr, string symbol, string name) func (_ERC1155Vault *ERC1155VaultCallerSession) BridgedToCanonical(arg0 common.Address) (struct { - ChainId *big.Int + ChainId uint64 Addr common.Address Symbol string Name string @@ -396,35 +427,35 @@ func (_ERC1155Vault *ERC1155VaultCallerSession) CanonicalToBridged(arg0 *big.Int return _ERC1155Vault.Contract.CanonicalToBridged(&_ERC1155Vault.CallOpts, arg0, arg1) } -// IsBridgedToken is a free data retrieval call binding the contract method 0xc287e578. +// Name is a free data retrieval call binding the contract method 0x06fdde03. // -// Solidity: function isBridgedToken(address ) view returns(bool) -func (_ERC1155Vault *ERC1155VaultCaller) IsBridgedToken(opts *bind.CallOpts, arg0 common.Address) (bool, error) { +// Solidity: function name() pure returns(bytes32) +func (_ERC1155Vault *ERC1155VaultCaller) Name(opts *bind.CallOpts) ([32]byte, error) { var out []interface{} - err := _ERC1155Vault.contract.Call(opts, &out, "isBridgedToken", arg0) + err := _ERC1155Vault.contract.Call(opts, &out, "name") if err != nil { - return *new(bool), err + return *new([32]byte), err } - out0 := *abi.ConvertType(out[0], new(bool)).(*bool) + out0 := *abi.ConvertType(out[0], new([32]byte)).(*[32]byte) return out0, err } -// IsBridgedToken is a free data retrieval call binding the contract method 0xc287e578. +// Name is a free data retrieval call binding the contract method 0x06fdde03. // -// Solidity: function isBridgedToken(address ) view returns(bool) -func (_ERC1155Vault *ERC1155VaultSession) IsBridgedToken(arg0 common.Address) (bool, error) { - return _ERC1155Vault.Contract.IsBridgedToken(&_ERC1155Vault.CallOpts, arg0) +// Solidity: function name() pure returns(bytes32) +func (_ERC1155Vault *ERC1155VaultSession) Name() ([32]byte, error) { + return _ERC1155Vault.Contract.Name(&_ERC1155Vault.CallOpts) } -// IsBridgedToken is a free data retrieval call binding the contract method 0xc287e578. +// Name is a free data retrieval call binding the contract method 0x06fdde03. // -// Solidity: function isBridgedToken(address ) view returns(bool) -func (_ERC1155Vault *ERC1155VaultCallerSession) IsBridgedToken(arg0 common.Address) (bool, error) { - return _ERC1155Vault.Contract.IsBridgedToken(&_ERC1155Vault.CallOpts, arg0) +// Solidity: function name() pure returns(bytes32) +func (_ERC1155Vault *ERC1155VaultCallerSession) Name() ([32]byte, error) { + return _ERC1155Vault.Contract.Name(&_ERC1155Vault.CallOpts) } // OnERC1155BatchReceived is a free data retrieval call binding the contract method 0xbc197c81. @@ -551,10 +582,41 @@ func (_ERC1155Vault *ERC1155VaultCallerSession) Paused() (bool, error) { return _ERC1155Vault.Contract.Paused(&_ERC1155Vault.CallOpts) } -// Resolve is a free data retrieval call binding the contract method 0x6c6563f6. +// PendingOwner is a free data retrieval call binding the contract method 0xe30c3978. +// +// Solidity: function pendingOwner() view returns(address) +func (_ERC1155Vault *ERC1155VaultCaller) PendingOwner(opts *bind.CallOpts) (common.Address, error) { + var out []interface{} + err := _ERC1155Vault.contract.Call(opts, &out, "pendingOwner") + + if err != nil { + return *new(common.Address), err + } + + out0 := *abi.ConvertType(out[0], new(common.Address)).(*common.Address) + + return out0, err + +} + +// PendingOwner is a free data retrieval call binding the contract method 0xe30c3978. +// +// Solidity: function pendingOwner() view returns(address) +func (_ERC1155Vault *ERC1155VaultSession) PendingOwner() (common.Address, error) { + return _ERC1155Vault.Contract.PendingOwner(&_ERC1155Vault.CallOpts) +} + +// PendingOwner is a free data retrieval call binding the contract method 0xe30c3978. +// +// Solidity: function pendingOwner() view returns(address) +func (_ERC1155Vault *ERC1155VaultCallerSession) PendingOwner() (common.Address, error) { + return _ERC1155Vault.Contract.PendingOwner(&_ERC1155Vault.CallOpts) +} + +// Resolve is a free data retrieval call binding the contract method 0x3eb6b8cf. // -// Solidity: function resolve(uint256 chainId, bytes32 name, bool allowZeroAddress) view returns(address addr) -func (_ERC1155Vault *ERC1155VaultCaller) Resolve(opts *bind.CallOpts, chainId *big.Int, name [32]byte, allowZeroAddress bool) (common.Address, error) { +// Solidity: function resolve(uint64 chainId, bytes32 name, bool allowZeroAddress) view returns(address addr) +func (_ERC1155Vault *ERC1155VaultCaller) Resolve(opts *bind.CallOpts, chainId uint64, name [32]byte, allowZeroAddress bool) (common.Address, error) { var out []interface{} err := _ERC1155Vault.contract.Call(opts, &out, "resolve", chainId, name, allowZeroAddress) @@ -568,17 +630,17 @@ func (_ERC1155Vault *ERC1155VaultCaller) Resolve(opts *bind.CallOpts, chainId *b } -// Resolve is a free data retrieval call binding the contract method 0x6c6563f6. +// Resolve is a free data retrieval call binding the contract method 0x3eb6b8cf. // -// Solidity: function resolve(uint256 chainId, bytes32 name, bool allowZeroAddress) view returns(address addr) -func (_ERC1155Vault *ERC1155VaultSession) Resolve(chainId *big.Int, name [32]byte, allowZeroAddress bool) (common.Address, error) { +// Solidity: function resolve(uint64 chainId, bytes32 name, bool allowZeroAddress) view returns(address addr) +func (_ERC1155Vault *ERC1155VaultSession) Resolve(chainId uint64, name [32]byte, allowZeroAddress bool) (common.Address, error) { return _ERC1155Vault.Contract.Resolve(&_ERC1155Vault.CallOpts, chainId, name, allowZeroAddress) } -// Resolve is a free data retrieval call binding the contract method 0x6c6563f6. +// Resolve is a free data retrieval call binding the contract method 0x3eb6b8cf. // -// Solidity: function resolve(uint256 chainId, bytes32 name, bool allowZeroAddress) view returns(address addr) -func (_ERC1155Vault *ERC1155VaultCallerSession) Resolve(chainId *big.Int, name [32]byte, allowZeroAddress bool) (common.Address, error) { +// Solidity: function resolve(uint64 chainId, bytes32 name, bool allowZeroAddress) view returns(address addr) +func (_ERC1155Vault *ERC1155VaultCallerSession) Resolve(chainId uint64, name [32]byte, allowZeroAddress bool) (common.Address, error) { return _ERC1155Vault.Contract.Resolve(&_ERC1155Vault.CallOpts, chainId, name, allowZeroAddress) } @@ -644,6 +706,27 @@ func (_ERC1155Vault *ERC1155VaultCallerSession) SupportsInterface(interfaceId [4 return _ERC1155Vault.Contract.SupportsInterface(&_ERC1155Vault.CallOpts, interfaceId) } +// AcceptOwnership is a paid mutator transaction binding the contract method 0x79ba5097. +// +// Solidity: function acceptOwnership() returns() +func (_ERC1155Vault *ERC1155VaultTransactor) AcceptOwnership(opts *bind.TransactOpts) (*types.Transaction, error) { + return _ERC1155Vault.contract.Transact(opts, "acceptOwnership") +} + +// AcceptOwnership is a paid mutator transaction binding the contract method 0x79ba5097. +// +// Solidity: function acceptOwnership() returns() +func (_ERC1155Vault *ERC1155VaultSession) AcceptOwnership() (*types.Transaction, error) { + return _ERC1155Vault.Contract.AcceptOwnership(&_ERC1155Vault.TransactOpts) +} + +// AcceptOwnership is a paid mutator transaction binding the contract method 0x79ba5097. +// +// Solidity: function acceptOwnership() returns() +func (_ERC1155Vault *ERC1155VaultTransactorSession) AcceptOwnership() (*types.Transaction, error) { + return _ERC1155Vault.Contract.AcceptOwnership(&_ERC1155Vault.TransactOpts) +} + // Init is a paid mutator transaction binding the contract method 0x19ab453c. // // Solidity: function init(address addressManager) returns() @@ -665,23 +748,23 @@ func (_ERC1155Vault *ERC1155VaultTransactorSession) Init(addressManager common.A return _ERC1155Vault.Contract.Init(&_ERC1155Vault.TransactOpts, addressManager) } -// OnMessageRecalled is a paid mutator transaction binding the contract method 0x3005fb98. +// OnMessageRecalled is a paid mutator transaction binding the contract method 0xc389a180. // -// Solidity: function onMessageRecalled((uint128,address,uint256,uint256,address,address,address,uint256,uint256,uint256,bytes,string) message, bytes32 msgHash) payable returns() +// Solidity: function onMessageRecalled((uint128,address,uint64,uint64,address,address,address,uint256,uint256,uint256,bytes,string) message, bytes32 msgHash) payable returns() func (_ERC1155Vault *ERC1155VaultTransactor) OnMessageRecalled(opts *bind.TransactOpts, message IBridgeMessage, msgHash [32]byte) (*types.Transaction, error) { return _ERC1155Vault.contract.Transact(opts, "onMessageRecalled", message, msgHash) } -// OnMessageRecalled is a paid mutator transaction binding the contract method 0x3005fb98. +// OnMessageRecalled is a paid mutator transaction binding the contract method 0xc389a180. // -// Solidity: function onMessageRecalled((uint128,address,uint256,uint256,address,address,address,uint256,uint256,uint256,bytes,string) message, bytes32 msgHash) payable returns() +// Solidity: function onMessageRecalled((uint128,address,uint64,uint64,address,address,address,uint256,uint256,uint256,bytes,string) message, bytes32 msgHash) payable returns() func (_ERC1155Vault *ERC1155VaultSession) OnMessageRecalled(message IBridgeMessage, msgHash [32]byte) (*types.Transaction, error) { return _ERC1155Vault.Contract.OnMessageRecalled(&_ERC1155Vault.TransactOpts, message, msgHash) } -// OnMessageRecalled is a paid mutator transaction binding the contract method 0x3005fb98. +// OnMessageRecalled is a paid mutator transaction binding the contract method 0xc389a180. // -// Solidity: function onMessageRecalled((uint128,address,uint256,uint256,address,address,address,uint256,uint256,uint256,bytes,string) message, bytes32 msgHash) payable returns() +// Solidity: function onMessageRecalled((uint128,address,uint64,uint64,address,address,address,uint256,uint256,uint256,bytes,string) message, bytes32 msgHash) payable returns() func (_ERC1155Vault *ERC1155VaultTransactorSession) OnMessageRecalled(message IBridgeMessage, msgHash [32]byte) (*types.Transaction, error) { return _ERC1155Vault.Contract.OnMessageRecalled(&_ERC1155Vault.TransactOpts, message, msgHash) } @@ -707,23 +790,23 @@ func (_ERC1155Vault *ERC1155VaultTransactorSession) Pause() (*types.Transaction, return _ERC1155Vault.Contract.Pause(&_ERC1155Vault.TransactOpts) } -// ReceiveToken is a paid mutator transaction binding the contract method 0x20b81559. +// ReceiveToken is a paid mutator transaction binding the contract method 0x079312bf. // -// Solidity: function receiveToken((uint256,address,string,string) ctoken, address from, address to, uint256[] tokenIds, uint256[] amounts) payable returns() +// Solidity: function receiveToken((uint64,address,string,string) ctoken, address from, address to, uint256[] tokenIds, uint256[] amounts) payable returns() func (_ERC1155Vault *ERC1155VaultTransactor) ReceiveToken(opts *bind.TransactOpts, ctoken BaseNFTVaultCanonicalNFT, from common.Address, to common.Address, tokenIds []*big.Int, amounts []*big.Int) (*types.Transaction, error) { return _ERC1155Vault.contract.Transact(opts, "receiveToken", ctoken, from, to, tokenIds, amounts) } -// ReceiveToken is a paid mutator transaction binding the contract method 0x20b81559. +// ReceiveToken is a paid mutator transaction binding the contract method 0x079312bf. // -// Solidity: function receiveToken((uint256,address,string,string) ctoken, address from, address to, uint256[] tokenIds, uint256[] amounts) payable returns() +// Solidity: function receiveToken((uint64,address,string,string) ctoken, address from, address to, uint256[] tokenIds, uint256[] amounts) payable returns() func (_ERC1155Vault *ERC1155VaultSession) ReceiveToken(ctoken BaseNFTVaultCanonicalNFT, from common.Address, to common.Address, tokenIds []*big.Int, amounts []*big.Int) (*types.Transaction, error) { return _ERC1155Vault.Contract.ReceiveToken(&_ERC1155Vault.TransactOpts, ctoken, from, to, tokenIds, amounts) } -// ReceiveToken is a paid mutator transaction binding the contract method 0x20b81559. +// ReceiveToken is a paid mutator transaction binding the contract method 0x079312bf. // -// Solidity: function receiveToken((uint256,address,string,string) ctoken, address from, address to, uint256[] tokenIds, uint256[] amounts) payable returns() +// Solidity: function receiveToken((uint64,address,string,string) ctoken, address from, address to, uint256[] tokenIds, uint256[] amounts) payable returns() func (_ERC1155Vault *ERC1155VaultTransactorSession) ReceiveToken(ctoken BaseNFTVaultCanonicalNFT, from common.Address, to common.Address, tokenIds []*big.Int, amounts []*big.Int) (*types.Transaction, error) { return _ERC1155Vault.Contract.ReceiveToken(&_ERC1155Vault.TransactOpts, ctoken, from, to, tokenIds, amounts) } @@ -749,25 +832,25 @@ func (_ERC1155Vault *ERC1155VaultTransactorSession) RenounceOwnership() (*types. return _ERC1155Vault.Contract.RenounceOwnership(&_ERC1155Vault.TransactOpts) } -// SendToken is a paid mutator transaction binding the contract method 0x73339643. +// SendToken is a paid mutator transaction binding the contract method 0x48b2772e. // -// Solidity: function sendToken((uint256,address,address,uint256[],uint256[],uint256,uint256,address,string) opt) payable returns() -func (_ERC1155Vault *ERC1155VaultTransactor) SendToken(opts *bind.TransactOpts, opt BaseNFTVaultBridgeTransferOp) (*types.Transaction, error) { - return _ERC1155Vault.contract.Transact(opts, "sendToken", opt) +// Solidity: function sendToken((uint64,address,address,uint256[],uint256[],uint256,uint256,address,string) op) payable returns((uint128,address,uint64,uint64,address,address,address,uint256,uint256,uint256,bytes,string) _message) +func (_ERC1155Vault *ERC1155VaultTransactor) SendToken(opts *bind.TransactOpts, op BaseNFTVaultBridgeTransferOp) (*types.Transaction, error) { + return _ERC1155Vault.contract.Transact(opts, "sendToken", op) } -// SendToken is a paid mutator transaction binding the contract method 0x73339643. +// SendToken is a paid mutator transaction binding the contract method 0x48b2772e. // -// Solidity: function sendToken((uint256,address,address,uint256[],uint256[],uint256,uint256,address,string) opt) payable returns() -func (_ERC1155Vault *ERC1155VaultSession) SendToken(opt BaseNFTVaultBridgeTransferOp) (*types.Transaction, error) { - return _ERC1155Vault.Contract.SendToken(&_ERC1155Vault.TransactOpts, opt) +// Solidity: function sendToken((uint64,address,address,uint256[],uint256[],uint256,uint256,address,string) op) payable returns((uint128,address,uint64,uint64,address,address,address,uint256,uint256,uint256,bytes,string) _message) +func (_ERC1155Vault *ERC1155VaultSession) SendToken(op BaseNFTVaultBridgeTransferOp) (*types.Transaction, error) { + return _ERC1155Vault.Contract.SendToken(&_ERC1155Vault.TransactOpts, op) } -// SendToken is a paid mutator transaction binding the contract method 0x73339643. +// SendToken is a paid mutator transaction binding the contract method 0x48b2772e. // -// Solidity: function sendToken((uint256,address,address,uint256[],uint256[],uint256,uint256,address,string) opt) payable returns() -func (_ERC1155Vault *ERC1155VaultTransactorSession) SendToken(opt BaseNFTVaultBridgeTransferOp) (*types.Transaction, error) { - return _ERC1155Vault.Contract.SendToken(&_ERC1155Vault.TransactOpts, opt) +// Solidity: function sendToken((uint64,address,address,uint256[],uint256[],uint256,uint256,address,string) op) payable returns((uint128,address,uint64,uint64,address,address,address,uint256,uint256,uint256,bytes,string) _message) +func (_ERC1155Vault *ERC1155VaultTransactorSession) SendToken(op BaseNFTVaultBridgeTransferOp) (*types.Transaction, error) { + return _ERC1155Vault.Contract.SendToken(&_ERC1155Vault.TransactOpts, op) } // TransferOwnership is a paid mutator transaction binding the contract method 0xf2fde38b. @@ -881,7 +964,7 @@ func (it *ERC1155VaultBridgedTokenDeployedIterator) Close() error { // ERC1155VaultBridgedTokenDeployed represents a BridgedTokenDeployed event raised by the ERC1155Vault contract. type ERC1155VaultBridgedTokenDeployed struct { - ChainId *big.Int + ChainId uint64 Ctoken common.Address Btoken common.Address CtokenSymbol string @@ -889,10 +972,10 @@ type ERC1155VaultBridgedTokenDeployed struct { Raw types.Log // Blockchain specific contextual infos } -// FilterBridgedTokenDeployed is a free log retrieval operation binding the contract event 0x2da3c4d305298f6df3653c23d98b4c055f72f7e6f981b2c477ccbec92b1ee579. +// FilterBridgedTokenDeployed is a free log retrieval operation binding the contract event 0x44977f2d30fe1e3aee2c1476f2f95aaacaf34e44b9359c403da01fcc93fd751b. // -// Solidity: event BridgedTokenDeployed(uint256 indexed chainId, address indexed ctoken, address indexed btoken, string ctokenSymbol, string ctokenName) -func (_ERC1155Vault *ERC1155VaultFilterer) FilterBridgedTokenDeployed(opts *bind.FilterOpts, chainId []*big.Int, ctoken []common.Address, btoken []common.Address) (*ERC1155VaultBridgedTokenDeployedIterator, error) { +// Solidity: event BridgedTokenDeployed(uint64 indexed chainId, address indexed ctoken, address indexed btoken, string ctokenSymbol, string ctokenName) +func (_ERC1155Vault *ERC1155VaultFilterer) FilterBridgedTokenDeployed(opts *bind.FilterOpts, chainId []uint64, ctoken []common.Address, btoken []common.Address) (*ERC1155VaultBridgedTokenDeployedIterator, error) { var chainIdRule []interface{} for _, chainIdItem := range chainId { @@ -914,10 +997,10 @@ func (_ERC1155Vault *ERC1155VaultFilterer) FilterBridgedTokenDeployed(opts *bind return &ERC1155VaultBridgedTokenDeployedIterator{contract: _ERC1155Vault.contract, event: "BridgedTokenDeployed", logs: logs, sub: sub}, nil } -// WatchBridgedTokenDeployed is a free log subscription operation binding the contract event 0x2da3c4d305298f6df3653c23d98b4c055f72f7e6f981b2c477ccbec92b1ee579. +// WatchBridgedTokenDeployed is a free log subscription operation binding the contract event 0x44977f2d30fe1e3aee2c1476f2f95aaacaf34e44b9359c403da01fcc93fd751b. // -// Solidity: event BridgedTokenDeployed(uint256 indexed chainId, address indexed ctoken, address indexed btoken, string ctokenSymbol, string ctokenName) -func (_ERC1155Vault *ERC1155VaultFilterer) WatchBridgedTokenDeployed(opts *bind.WatchOpts, sink chan<- *ERC1155VaultBridgedTokenDeployed, chainId []*big.Int, ctoken []common.Address, btoken []common.Address) (event.Subscription, error) { +// Solidity: event BridgedTokenDeployed(uint64 indexed chainId, address indexed ctoken, address indexed btoken, string ctokenSymbol, string ctokenName) +func (_ERC1155Vault *ERC1155VaultFilterer) WatchBridgedTokenDeployed(opts *bind.WatchOpts, sink chan<- *ERC1155VaultBridgedTokenDeployed, chainId []uint64, ctoken []common.Address, btoken []common.Address) (event.Subscription, error) { var chainIdRule []interface{} for _, chainIdItem := range chainId { @@ -964,9 +1047,9 @@ func (_ERC1155Vault *ERC1155VaultFilterer) WatchBridgedTokenDeployed(opts *bind. }), nil } -// ParseBridgedTokenDeployed is a log parse operation binding the contract event 0x2da3c4d305298f6df3653c23d98b4c055f72f7e6f981b2c477ccbec92b1ee579. +// ParseBridgedTokenDeployed is a log parse operation binding the contract event 0x44977f2d30fe1e3aee2c1476f2f95aaacaf34e44b9359c403da01fcc93fd751b. // -// Solidity: event BridgedTokenDeployed(uint256 indexed chainId, address indexed ctoken, address indexed btoken, string ctokenSymbol, string ctokenName) +// Solidity: event BridgedTokenDeployed(uint64 indexed chainId, address indexed ctoken, address indexed btoken, string ctokenSymbol, string ctokenName) func (_ERC1155Vault *ERC1155VaultFilterer) ParseBridgedTokenDeployed(log types.Log) (*ERC1155VaultBridgedTokenDeployed, error) { event := new(ERC1155VaultBridgedTokenDeployed) if err := _ERC1155Vault.contract.UnpackLog(event, "BridgedTokenDeployed", log); err != nil { @@ -1110,6 +1193,159 @@ func (_ERC1155Vault *ERC1155VaultFilterer) ParseInitialized(log types.Log) (*ERC return event, nil } +// ERC1155VaultOwnershipTransferStartedIterator is returned from FilterOwnershipTransferStarted and is used to iterate over the raw logs and unpacked data for OwnershipTransferStarted events raised by the ERC1155Vault contract. +type ERC1155VaultOwnershipTransferStartedIterator struct { + Event *ERC1155VaultOwnershipTransferStarted // Event containing the contract specifics and raw log + + contract *bind.BoundContract // Generic contract to use for unpacking event data + event string // Event name to use for unpacking event data + + logs chan types.Log // Log channel receiving the found contract events + sub ethereum.Subscription // Subscription for errors, completion and termination + done bool // Whether the subscription completed delivering logs + fail error // Occurred error to stop iteration +} + +// Next advances the iterator to the subsequent event, returning whether there +// are any more events found. In case of a retrieval or parsing error, false is +// returned and Error() can be queried for the exact failure. +func (it *ERC1155VaultOwnershipTransferStartedIterator) Next() bool { + // If the iterator failed, stop iterating + if it.fail != nil { + return false + } + // If the iterator completed, deliver directly whatever's available + if it.done { + select { + case log := <-it.logs: + it.Event = new(ERC1155VaultOwnershipTransferStarted) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + default: + return false + } + } + // Iterator still in progress, wait for either a data or an error event + select { + case log := <-it.logs: + it.Event = new(ERC1155VaultOwnershipTransferStarted) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + case err := <-it.sub.Err(): + it.done = true + it.fail = err + return it.Next() + } +} + +// Error returns any retrieval or parsing error occurred during filtering. +func (it *ERC1155VaultOwnershipTransferStartedIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *ERC1155VaultOwnershipTransferStartedIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// ERC1155VaultOwnershipTransferStarted represents a OwnershipTransferStarted event raised by the ERC1155Vault contract. +type ERC1155VaultOwnershipTransferStarted struct { + PreviousOwner common.Address + NewOwner common.Address + Raw types.Log // Blockchain specific contextual infos +} + +// FilterOwnershipTransferStarted is a free log retrieval operation binding the contract event 0x38d16b8cac22d99fc7c124b9cd0de2d3fa1faef420bfe791d8c362d765e22700. +// +// Solidity: event OwnershipTransferStarted(address indexed previousOwner, address indexed newOwner) +func (_ERC1155Vault *ERC1155VaultFilterer) FilterOwnershipTransferStarted(opts *bind.FilterOpts, previousOwner []common.Address, newOwner []common.Address) (*ERC1155VaultOwnershipTransferStartedIterator, error) { + + var previousOwnerRule []interface{} + for _, previousOwnerItem := range previousOwner { + previousOwnerRule = append(previousOwnerRule, previousOwnerItem) + } + var newOwnerRule []interface{} + for _, newOwnerItem := range newOwner { + newOwnerRule = append(newOwnerRule, newOwnerItem) + } + + logs, sub, err := _ERC1155Vault.contract.FilterLogs(opts, "OwnershipTransferStarted", previousOwnerRule, newOwnerRule) + if err != nil { + return nil, err + } + return &ERC1155VaultOwnershipTransferStartedIterator{contract: _ERC1155Vault.contract, event: "OwnershipTransferStarted", logs: logs, sub: sub}, nil +} + +// WatchOwnershipTransferStarted is a free log subscription operation binding the contract event 0x38d16b8cac22d99fc7c124b9cd0de2d3fa1faef420bfe791d8c362d765e22700. +// +// Solidity: event OwnershipTransferStarted(address indexed previousOwner, address indexed newOwner) +func (_ERC1155Vault *ERC1155VaultFilterer) WatchOwnershipTransferStarted(opts *bind.WatchOpts, sink chan<- *ERC1155VaultOwnershipTransferStarted, previousOwner []common.Address, newOwner []common.Address) (event.Subscription, error) { + + var previousOwnerRule []interface{} + for _, previousOwnerItem := range previousOwner { + previousOwnerRule = append(previousOwnerRule, previousOwnerItem) + } + var newOwnerRule []interface{} + for _, newOwnerItem := range newOwner { + newOwnerRule = append(newOwnerRule, newOwnerItem) + } + + logs, sub, err := _ERC1155Vault.contract.WatchLogs(opts, "OwnershipTransferStarted", previousOwnerRule, newOwnerRule) + if err != nil { + return nil, err + } + return event.NewSubscription(func(quit <-chan struct{}) error { + defer sub.Unsubscribe() + for { + select { + case log := <-logs: + // New log arrived, parse the event and forward to the user + event := new(ERC1155VaultOwnershipTransferStarted) + if err := _ERC1155Vault.contract.UnpackLog(event, "OwnershipTransferStarted", log); err != nil { + return err + } + event.Raw = log + + select { + case sink <- event: + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + } + }), nil +} + +// ParseOwnershipTransferStarted is a log parse operation binding the contract event 0x38d16b8cac22d99fc7c124b9cd0de2d3fa1faef420bfe791d8c362d765e22700. +// +// Solidity: event OwnershipTransferStarted(address indexed previousOwner, address indexed newOwner) +func (_ERC1155Vault *ERC1155VaultFilterer) ParseOwnershipTransferStarted(log types.Log) (*ERC1155VaultOwnershipTransferStarted, error) { + event := new(ERC1155VaultOwnershipTransferStarted) + if err := _ERC1155Vault.contract.UnpackLog(event, "OwnershipTransferStarted", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} + // ERC1155VaultOwnershipTransferredIterator is returned from FilterOwnershipTransferred and is used to iterate over the raw logs and unpacked data for OwnershipTransferred events raised by the ERC1155Vault contract. type ERC1155VaultOwnershipTransferredIterator struct { Event *ERC1155VaultOwnershipTransferred // Event containing the contract specifics and raw log @@ -1469,16 +1705,16 @@ type ERC1155VaultTokenReceived struct { MsgHash [32]byte From common.Address To common.Address - SrcChainId *big.Int + SrcChainId uint64 Token common.Address TokenIds []*big.Int Amounts []*big.Int Raw types.Log // Blockchain specific contextual infos } -// FilterTokenReceived is a free log retrieval operation binding the contract event 0x0f60c37489e435ed8490c30b01c1fa57e62510e88b351b75796ad3d95babe6b1. +// FilterTokenReceived is a free log retrieval operation binding the contract event 0x8a4d138c7a19e12f6cdedfca02085820b0b1f5a9655c7a8b784f1d534347f247. // -// Solidity: event TokenReceived(bytes32 indexed msgHash, address indexed from, address indexed to, uint256 srcChainId, address token, uint256[] tokenIds, uint256[] amounts) +// Solidity: event TokenReceived(bytes32 indexed msgHash, address indexed from, address indexed to, uint64 srcChainId, address token, uint256[] tokenIds, uint256[] amounts) func (_ERC1155Vault *ERC1155VaultFilterer) FilterTokenReceived(opts *bind.FilterOpts, msgHash [][32]byte, from []common.Address, to []common.Address) (*ERC1155VaultTokenReceivedIterator, error) { var msgHashRule []interface{} @@ -1501,9 +1737,9 @@ func (_ERC1155Vault *ERC1155VaultFilterer) FilterTokenReceived(opts *bind.Filter return &ERC1155VaultTokenReceivedIterator{contract: _ERC1155Vault.contract, event: "TokenReceived", logs: logs, sub: sub}, nil } -// WatchTokenReceived is a free log subscription operation binding the contract event 0x0f60c37489e435ed8490c30b01c1fa57e62510e88b351b75796ad3d95babe6b1. +// WatchTokenReceived is a free log subscription operation binding the contract event 0x8a4d138c7a19e12f6cdedfca02085820b0b1f5a9655c7a8b784f1d534347f247. // -// Solidity: event TokenReceived(bytes32 indexed msgHash, address indexed from, address indexed to, uint256 srcChainId, address token, uint256[] tokenIds, uint256[] amounts) +// Solidity: event TokenReceived(bytes32 indexed msgHash, address indexed from, address indexed to, uint64 srcChainId, address token, uint256[] tokenIds, uint256[] amounts) func (_ERC1155Vault *ERC1155VaultFilterer) WatchTokenReceived(opts *bind.WatchOpts, sink chan<- *ERC1155VaultTokenReceived, msgHash [][32]byte, from []common.Address, to []common.Address) (event.Subscription, error) { var msgHashRule []interface{} @@ -1551,9 +1787,9 @@ func (_ERC1155Vault *ERC1155VaultFilterer) WatchTokenReceived(opts *bind.WatchOp }), nil } -// ParseTokenReceived is a log parse operation binding the contract event 0x0f60c37489e435ed8490c30b01c1fa57e62510e88b351b75796ad3d95babe6b1. +// ParseTokenReceived is a log parse operation binding the contract event 0x8a4d138c7a19e12f6cdedfca02085820b0b1f5a9655c7a8b784f1d534347f247. // -// Solidity: event TokenReceived(bytes32 indexed msgHash, address indexed from, address indexed to, uint256 srcChainId, address token, uint256[] tokenIds, uint256[] amounts) +// Solidity: event TokenReceived(bytes32 indexed msgHash, address indexed from, address indexed to, uint64 srcChainId, address token, uint256[] tokenIds, uint256[] amounts) func (_ERC1155Vault *ERC1155VaultFilterer) ParseTokenReceived(log types.Log) (*ERC1155VaultTokenReceived, error) { event := new(ERC1155VaultTokenReceived) if err := _ERC1155Vault.contract.UnpackLog(event, "TokenReceived", log); err != nil { @@ -1791,16 +2027,16 @@ type ERC1155VaultTokenSent struct { MsgHash [32]byte From common.Address To common.Address - DestChainId *big.Int + DestChainId uint64 Token common.Address TokenIds []*big.Int Amounts []*big.Int Raw types.Log // Blockchain specific contextual infos } -// FilterTokenSent is a free log retrieval operation binding the contract event 0x5e54276405062454e6226625b28a6fea0a838d6b054e38955667234afb3345a3. +// FilterTokenSent is a free log retrieval operation binding the contract event 0x329b657c35d4e2dfede6ef5132869accb1f8542912a40f9a854b4a917ffae2e9. // -// Solidity: event TokenSent(bytes32 indexed msgHash, address indexed from, address indexed to, uint256 destChainId, address token, uint256[] tokenIds, uint256[] amounts) +// Solidity: event TokenSent(bytes32 indexed msgHash, address indexed from, address indexed to, uint64 destChainId, address token, uint256[] tokenIds, uint256[] amounts) func (_ERC1155Vault *ERC1155VaultFilterer) FilterTokenSent(opts *bind.FilterOpts, msgHash [][32]byte, from []common.Address, to []common.Address) (*ERC1155VaultTokenSentIterator, error) { var msgHashRule []interface{} @@ -1823,9 +2059,9 @@ func (_ERC1155Vault *ERC1155VaultFilterer) FilterTokenSent(opts *bind.FilterOpts return &ERC1155VaultTokenSentIterator{contract: _ERC1155Vault.contract, event: "TokenSent", logs: logs, sub: sub}, nil } -// WatchTokenSent is a free log subscription operation binding the contract event 0x5e54276405062454e6226625b28a6fea0a838d6b054e38955667234afb3345a3. +// WatchTokenSent is a free log subscription operation binding the contract event 0x329b657c35d4e2dfede6ef5132869accb1f8542912a40f9a854b4a917ffae2e9. // -// Solidity: event TokenSent(bytes32 indexed msgHash, address indexed from, address indexed to, uint256 destChainId, address token, uint256[] tokenIds, uint256[] amounts) +// Solidity: event TokenSent(bytes32 indexed msgHash, address indexed from, address indexed to, uint64 destChainId, address token, uint256[] tokenIds, uint256[] amounts) func (_ERC1155Vault *ERC1155VaultFilterer) WatchTokenSent(opts *bind.WatchOpts, sink chan<- *ERC1155VaultTokenSent, msgHash [][32]byte, from []common.Address, to []common.Address) (event.Subscription, error) { var msgHashRule []interface{} @@ -1873,9 +2109,9 @@ func (_ERC1155Vault *ERC1155VaultFilterer) WatchTokenSent(opts *bind.WatchOpts, }), nil } -// ParseTokenSent is a log parse operation binding the contract event 0x5e54276405062454e6226625b28a6fea0a838d6b054e38955667234afb3345a3. +// ParseTokenSent is a log parse operation binding the contract event 0x329b657c35d4e2dfede6ef5132869accb1f8542912a40f9a854b4a917ffae2e9. // -// Solidity: event TokenSent(bytes32 indexed msgHash, address indexed from, address indexed to, uint256 destChainId, address token, uint256[] tokenIds, uint256[] amounts) +// Solidity: event TokenSent(bytes32 indexed msgHash, address indexed from, address indexed to, uint64 destChainId, address token, uint256[] tokenIds, uint256[] amounts) func (_ERC1155Vault *ERC1155VaultFilterer) ParseTokenSent(log types.Log) (*ERC1155VaultTokenSent, error) { event := new(ERC1155VaultTokenSent) if err := _ERC1155Vault.contract.UnpackLog(event, "TokenSent", log); err != nil { diff --git a/packages/relayer/bindings/erc20vault/ERC20Vault.go b/packages/relayer/bindings/erc20vault/ERC20Vault.go index d31d0be633..8b937ab0f0 100644 --- a/packages/relayer/bindings/erc20vault/ERC20Vault.go +++ b/packages/relayer/bindings/erc20vault/ERC20Vault.go @@ -31,7 +31,7 @@ var ( // ERC20VaultBridgeTransferOp is an auto generated low-level Go binding around an user-defined struct. type ERC20VaultBridgeTransferOp struct { - DestChainId *big.Int + DestChainId uint64 To common.Address Token common.Address Amount *big.Int @@ -43,7 +43,7 @@ type ERC20VaultBridgeTransferOp struct { // ERC20VaultCanonicalERC20 is an auto generated low-level Go binding around an user-defined struct. type ERC20VaultCanonicalERC20 struct { - ChainId *big.Int + ChainId uint64 Addr common.Address Decimals uint8 Symbol string @@ -54,9 +54,9 @@ type ERC20VaultCanonicalERC20 struct { type IBridgeMessage struct { Id *big.Int From common.Address - SrcChainId *big.Int - DestChainId *big.Int - User common.Address + SrcChainId uint64 + DestChainId uint64 + Owner common.Address To common.Address RefundTo common.Address Value *big.Int @@ -68,7 +68,7 @@ type IBridgeMessage struct { // ERC20VaultMetaData contains all meta data concerning the ERC20Vault contract. var ERC20VaultMetaData = &bind.MetaData{ - ABI: "[{\"inputs\":[],\"name\":\"ETH_TRANSFER_FAILED\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"INVALID_PAUSE_STATUS\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"REENTRANT_CALL\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"RESOLVER_DENIED\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"RESOLVER_INVALID_MANAGER\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"chainId\",\"type\":\"uint256\"},{\"internalType\":\"bytes32\",\"name\":\"name\",\"type\":\"bytes32\"}],\"name\":\"RESOLVER_ZERO_ADDR\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"VAULT_INVALID_AMOUNT\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"VAULT_INVALID_FROM\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"VAULT_INVALID_SRC_CHAIN_ID\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"VAULT_INVALID_TO\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"VAULT_INVALID_TOKEN\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"VAULT_INVALID_USER\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"VAULT_MESSAGE_NOT_FAILED\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"VAULT_MESSAGE_RELEASED_ALREADY\",\"type\":\"error\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"srcChainId\",\"type\":\"uint256\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"ctoken\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"btoken\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"string\",\"name\":\"ctokenSymbol\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"string\",\"name\":\"ctokenName\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"uint8\",\"name\":\"ctokenDecimal\",\"type\":\"uint8\"}],\"name\":\"BridgedTokenDeployed\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint8\",\"name\":\"version\",\"type\":\"uint8\"}],\"name\":\"Initialized\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"previousOwner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"newOwner\",\"type\":\"address\"}],\"name\":\"OwnershipTransferred\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"Paused\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"msgHash\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"srcChainId\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"TokenReceived\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"msgHash\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"TokenReleased\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"msgHash\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"destChainId\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"TokenSent\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"Unpaused\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"addressManager\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"name\":\"bridgedToCanonical\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"chainId\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"addr\",\"type\":\"address\"},{\"internalType\":\"uint8\",\"name\":\"decimals\",\"type\":\"uint8\"},{\"internalType\":\"string\",\"name\":\"symbol\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"name\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"name\":\"canonicalToBridged\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"addressManager\",\"type\":\"address\"}],\"name\":\"init\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"name\":\"isBridgedToken\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"uint128\",\"name\":\"id\",\"type\":\"uint128\"},{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"srcChainId\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"destChainId\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"user\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"refundTo\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"fee\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"gasLimit\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"},{\"internalType\":\"string\",\"name\":\"memo\",\"type\":\"string\"}],\"internalType\":\"structIBridge.Message\",\"name\":\"message\",\"type\":\"tuple\"},{\"internalType\":\"bytes32\",\"name\":\"msgHash\",\"type\":\"bytes32\"}],\"name\":\"onMessageRecalled\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"owner\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"pause\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"paused\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"uint256\",\"name\":\"chainId\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"addr\",\"type\":\"address\"},{\"internalType\":\"uint8\",\"name\":\"decimals\",\"type\":\"uint8\"},{\"internalType\":\"string\",\"name\":\"symbol\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"name\",\"type\":\"string\"}],\"internalType\":\"structERC20Vault.CanonicalERC20\",\"name\":\"ctoken\",\"type\":\"tuple\"},{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"receiveToken\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"renounceOwnership\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"chainId\",\"type\":\"uint256\"},{\"internalType\":\"bytes32\",\"name\":\"name\",\"type\":\"bytes32\"},{\"internalType\":\"bool\",\"name\":\"allowZeroAddress\",\"type\":\"bool\"}],\"name\":\"resolve\",\"outputs\":[{\"internalType\":\"addresspayable\",\"name\":\"addr\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"name\",\"type\":\"bytes32\"},{\"internalType\":\"bool\",\"name\":\"allowZeroAddress\",\"type\":\"bool\"}],\"name\":\"resolve\",\"outputs\":[{\"internalType\":\"addresspayable\",\"name\":\"addr\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"uint256\",\"name\":\"destChainId\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"gasLimit\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"fee\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"refundTo\",\"type\":\"address\"},{\"internalType\":\"string\",\"name\":\"memo\",\"type\":\"string\"}],\"internalType\":\"structERC20Vault.BridgeTransferOp\",\"name\":\"opt\",\"type\":\"tuple\"}],\"name\":\"sendToken\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes4\",\"name\":\"interfaceId\",\"type\":\"bytes4\"}],\"name\":\"supportsInterface\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"newOwner\",\"type\":\"address\"}],\"name\":\"transferOwnership\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"unpause\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}]", + ABI: "[{\"inputs\":[],\"name\":\"ETH_TRANSFER_FAILED\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"INVALID_PAUSE_STATUS\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"REENTRANT_CALL\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"RESOLVER_DENIED\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"RESOLVER_INVALID_MANAGER\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"RESOLVER_UNEXPECTED_CHAINID\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"chainId\",\"type\":\"uint64\"},{\"internalType\":\"string\",\"name\":\"name\",\"type\":\"string\"}],\"name\":\"RESOLVER_ZERO_ADDR\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"VAULT_INVALID_AMOUNT\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"VAULT_INVALID_FROM\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"VAULT_INVALID_SRC_CHAIN_ID\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"VAULT_INVALID_TOKEN\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"VAULT_INVALID_USER\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"VAULT_MESSAGE_NOT_FAILED\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"VAULT_MESSAGE_RELEASED_ALREADY\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"VAULT_PERMISSION_DENIED\",\"type\":\"error\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"srcChainId\",\"type\":\"uint256\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"ctoken\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"btoken\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"string\",\"name\":\"ctokenSymbol\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"string\",\"name\":\"ctokenName\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"uint8\",\"name\":\"ctokenDecimal\",\"type\":\"uint8\"}],\"name\":\"BridgedTokenDeployed\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint8\",\"name\":\"version\",\"type\":\"uint8\"}],\"name\":\"Initialized\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"previousOwner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"newOwner\",\"type\":\"address\"}],\"name\":\"OwnershipTransferStarted\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"previousOwner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"newOwner\",\"type\":\"address\"}],\"name\":\"OwnershipTransferred\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"Paused\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"msgHash\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint64\",\"name\":\"srcChainId\",\"type\":\"uint64\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"TokenReceived\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"msgHash\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"TokenReleased\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"msgHash\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint64\",\"name\":\"destChainId\",\"type\":\"uint64\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"TokenSent\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"Unpaused\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"acceptOwnership\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"addressManager\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"name\":\"bridgedToCanonical\",\"outputs\":[{\"internalType\":\"uint64\",\"name\":\"chainId\",\"type\":\"uint64\"},{\"internalType\":\"address\",\"name\":\"addr\",\"type\":\"address\"},{\"internalType\":\"uint8\",\"name\":\"decimals\",\"type\":\"uint8\"},{\"internalType\":\"string\",\"name\":\"symbol\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"name\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"name\":\"canonicalToBridged\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"addressManager\",\"type\":\"address\"}],\"name\":\"init\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"name\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"uint128\",\"name\":\"id\",\"type\":\"uint128\"},{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"uint64\",\"name\":\"srcChainId\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"destChainId\",\"type\":\"uint64\"},{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"refundTo\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"fee\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"gasLimit\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"},{\"internalType\":\"string\",\"name\":\"memo\",\"type\":\"string\"}],\"internalType\":\"structIBridge.Message\",\"name\":\"message\",\"type\":\"tuple\"},{\"internalType\":\"bytes32\",\"name\":\"msgHash\",\"type\":\"bytes32\"}],\"name\":\"onMessageRecalled\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"owner\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"pause\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"paused\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"pendingOwner\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"uint64\",\"name\":\"chainId\",\"type\":\"uint64\"},{\"internalType\":\"address\",\"name\":\"addr\",\"type\":\"address\"},{\"internalType\":\"uint8\",\"name\":\"decimals\",\"type\":\"uint8\"},{\"internalType\":\"string\",\"name\":\"symbol\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"name\",\"type\":\"string\"}],\"internalType\":\"structERC20Vault.CanonicalERC20\",\"name\":\"ctoken\",\"type\":\"tuple\"},{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"receiveToken\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"renounceOwnership\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"chainId\",\"type\":\"uint64\"},{\"internalType\":\"bytes32\",\"name\":\"name\",\"type\":\"bytes32\"},{\"internalType\":\"bool\",\"name\":\"allowZeroAddress\",\"type\":\"bool\"}],\"name\":\"resolve\",\"outputs\":[{\"internalType\":\"addresspayable\",\"name\":\"addr\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"name\",\"type\":\"bytes32\"},{\"internalType\":\"bool\",\"name\":\"allowZeroAddress\",\"type\":\"bool\"}],\"name\":\"resolve\",\"outputs\":[{\"internalType\":\"addresspayable\",\"name\":\"addr\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"uint64\",\"name\":\"destChainId\",\"type\":\"uint64\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"gasLimit\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"fee\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"refundTo\",\"type\":\"address\"},{\"internalType\":\"string\",\"name\":\"memo\",\"type\":\"string\"}],\"internalType\":\"structERC20Vault.BridgeTransferOp\",\"name\":\"op\",\"type\":\"tuple\"}],\"name\":\"sendToken\",\"outputs\":[{\"components\":[{\"internalType\":\"uint128\",\"name\":\"id\",\"type\":\"uint128\"},{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"uint64\",\"name\":\"srcChainId\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"destChainId\",\"type\":\"uint64\"},{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"refundTo\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"fee\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"gasLimit\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"},{\"internalType\":\"string\",\"name\":\"memo\",\"type\":\"string\"}],\"internalType\":\"structIBridge.Message\",\"name\":\"_message\",\"type\":\"tuple\"}],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes4\",\"name\":\"interfaceId\",\"type\":\"bytes4\"}],\"name\":\"supportsInterface\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"newOwner\",\"type\":\"address\"}],\"name\":\"transferOwnership\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"unpause\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}]", } // ERC20VaultABI is the input ABI used to generate the binding from. @@ -250,9 +250,9 @@ func (_ERC20Vault *ERC20VaultCallerSession) AddressManager() (common.Address, er // BridgedToCanonical is a free data retrieval call binding the contract method 0x9aa8605c. // -// Solidity: function bridgedToCanonical(address ) view returns(uint256 chainId, address addr, uint8 decimals, string symbol, string name) +// Solidity: function bridgedToCanonical(address ) view returns(uint64 chainId, address addr, uint8 decimals, string symbol, string name) func (_ERC20Vault *ERC20VaultCaller) BridgedToCanonical(opts *bind.CallOpts, arg0 common.Address) (struct { - ChainId *big.Int + ChainId uint64 Addr common.Address Decimals uint8 Symbol string @@ -262,7 +262,7 @@ func (_ERC20Vault *ERC20VaultCaller) BridgedToCanonical(opts *bind.CallOpts, arg err := _ERC20Vault.contract.Call(opts, &out, "bridgedToCanonical", arg0) outstruct := new(struct { - ChainId *big.Int + ChainId uint64 Addr common.Address Decimals uint8 Symbol string @@ -272,7 +272,7 @@ func (_ERC20Vault *ERC20VaultCaller) BridgedToCanonical(opts *bind.CallOpts, arg return *outstruct, err } - outstruct.ChainId = *abi.ConvertType(out[0], new(*big.Int)).(**big.Int) + outstruct.ChainId = *abi.ConvertType(out[0], new(uint64)).(*uint64) outstruct.Addr = *abi.ConvertType(out[1], new(common.Address)).(*common.Address) outstruct.Decimals = *abi.ConvertType(out[2], new(uint8)).(*uint8) outstruct.Symbol = *abi.ConvertType(out[3], new(string)).(*string) @@ -284,9 +284,9 @@ func (_ERC20Vault *ERC20VaultCaller) BridgedToCanonical(opts *bind.CallOpts, arg // BridgedToCanonical is a free data retrieval call binding the contract method 0x9aa8605c. // -// Solidity: function bridgedToCanonical(address ) view returns(uint256 chainId, address addr, uint8 decimals, string symbol, string name) +// Solidity: function bridgedToCanonical(address ) view returns(uint64 chainId, address addr, uint8 decimals, string symbol, string name) func (_ERC20Vault *ERC20VaultSession) BridgedToCanonical(arg0 common.Address) (struct { - ChainId *big.Int + ChainId uint64 Addr common.Address Decimals uint8 Symbol string @@ -297,9 +297,9 @@ func (_ERC20Vault *ERC20VaultSession) BridgedToCanonical(arg0 common.Address) (s // BridgedToCanonical is a free data retrieval call binding the contract method 0x9aa8605c. // -// Solidity: function bridgedToCanonical(address ) view returns(uint256 chainId, address addr, uint8 decimals, string symbol, string name) +// Solidity: function bridgedToCanonical(address ) view returns(uint64 chainId, address addr, uint8 decimals, string symbol, string name) func (_ERC20Vault *ERC20VaultCallerSession) BridgedToCanonical(arg0 common.Address) (struct { - ChainId *big.Int + ChainId uint64 Addr common.Address Decimals uint8 Symbol string @@ -339,35 +339,35 @@ func (_ERC20Vault *ERC20VaultCallerSession) CanonicalToBridged(arg0 *big.Int, ar return _ERC20Vault.Contract.CanonicalToBridged(&_ERC20Vault.CallOpts, arg0, arg1) } -// IsBridgedToken is a free data retrieval call binding the contract method 0xc287e578. +// Name is a free data retrieval call binding the contract method 0x06fdde03. // -// Solidity: function isBridgedToken(address ) view returns(bool) -func (_ERC20Vault *ERC20VaultCaller) IsBridgedToken(opts *bind.CallOpts, arg0 common.Address) (bool, error) { +// Solidity: function name() pure returns(bytes32) +func (_ERC20Vault *ERC20VaultCaller) Name(opts *bind.CallOpts) ([32]byte, error) { var out []interface{} - err := _ERC20Vault.contract.Call(opts, &out, "isBridgedToken", arg0) + err := _ERC20Vault.contract.Call(opts, &out, "name") if err != nil { - return *new(bool), err + return *new([32]byte), err } - out0 := *abi.ConvertType(out[0], new(bool)).(*bool) + out0 := *abi.ConvertType(out[0], new([32]byte)).(*[32]byte) return out0, err } -// IsBridgedToken is a free data retrieval call binding the contract method 0xc287e578. +// Name is a free data retrieval call binding the contract method 0x06fdde03. // -// Solidity: function isBridgedToken(address ) view returns(bool) -func (_ERC20Vault *ERC20VaultSession) IsBridgedToken(arg0 common.Address) (bool, error) { - return _ERC20Vault.Contract.IsBridgedToken(&_ERC20Vault.CallOpts, arg0) +// Solidity: function name() pure returns(bytes32) +func (_ERC20Vault *ERC20VaultSession) Name() ([32]byte, error) { + return _ERC20Vault.Contract.Name(&_ERC20Vault.CallOpts) } -// IsBridgedToken is a free data retrieval call binding the contract method 0xc287e578. +// Name is a free data retrieval call binding the contract method 0x06fdde03. // -// Solidity: function isBridgedToken(address ) view returns(bool) -func (_ERC20Vault *ERC20VaultCallerSession) IsBridgedToken(arg0 common.Address) (bool, error) { - return _ERC20Vault.Contract.IsBridgedToken(&_ERC20Vault.CallOpts, arg0) +// Solidity: function name() pure returns(bytes32) +func (_ERC20Vault *ERC20VaultCallerSession) Name() ([32]byte, error) { + return _ERC20Vault.Contract.Name(&_ERC20Vault.CallOpts) } // Owner is a free data retrieval call binding the contract method 0x8da5cb5b. @@ -432,10 +432,41 @@ func (_ERC20Vault *ERC20VaultCallerSession) Paused() (bool, error) { return _ERC20Vault.Contract.Paused(&_ERC20Vault.CallOpts) } -// Resolve is a free data retrieval call binding the contract method 0x6c6563f6. +// PendingOwner is a free data retrieval call binding the contract method 0xe30c3978. +// +// Solidity: function pendingOwner() view returns(address) +func (_ERC20Vault *ERC20VaultCaller) PendingOwner(opts *bind.CallOpts) (common.Address, error) { + var out []interface{} + err := _ERC20Vault.contract.Call(opts, &out, "pendingOwner") + + if err != nil { + return *new(common.Address), err + } + + out0 := *abi.ConvertType(out[0], new(common.Address)).(*common.Address) + + return out0, err + +} + +// PendingOwner is a free data retrieval call binding the contract method 0xe30c3978. +// +// Solidity: function pendingOwner() view returns(address) +func (_ERC20Vault *ERC20VaultSession) PendingOwner() (common.Address, error) { + return _ERC20Vault.Contract.PendingOwner(&_ERC20Vault.CallOpts) +} + +// PendingOwner is a free data retrieval call binding the contract method 0xe30c3978. +// +// Solidity: function pendingOwner() view returns(address) +func (_ERC20Vault *ERC20VaultCallerSession) PendingOwner() (common.Address, error) { + return _ERC20Vault.Contract.PendingOwner(&_ERC20Vault.CallOpts) +} + +// Resolve is a free data retrieval call binding the contract method 0x3eb6b8cf. // -// Solidity: function resolve(uint256 chainId, bytes32 name, bool allowZeroAddress) view returns(address addr) -func (_ERC20Vault *ERC20VaultCaller) Resolve(opts *bind.CallOpts, chainId *big.Int, name [32]byte, allowZeroAddress bool) (common.Address, error) { +// Solidity: function resolve(uint64 chainId, bytes32 name, bool allowZeroAddress) view returns(address addr) +func (_ERC20Vault *ERC20VaultCaller) Resolve(opts *bind.CallOpts, chainId uint64, name [32]byte, allowZeroAddress bool) (common.Address, error) { var out []interface{} err := _ERC20Vault.contract.Call(opts, &out, "resolve", chainId, name, allowZeroAddress) @@ -449,17 +480,17 @@ func (_ERC20Vault *ERC20VaultCaller) Resolve(opts *bind.CallOpts, chainId *big.I } -// Resolve is a free data retrieval call binding the contract method 0x6c6563f6. +// Resolve is a free data retrieval call binding the contract method 0x3eb6b8cf. // -// Solidity: function resolve(uint256 chainId, bytes32 name, bool allowZeroAddress) view returns(address addr) -func (_ERC20Vault *ERC20VaultSession) Resolve(chainId *big.Int, name [32]byte, allowZeroAddress bool) (common.Address, error) { +// Solidity: function resolve(uint64 chainId, bytes32 name, bool allowZeroAddress) view returns(address addr) +func (_ERC20Vault *ERC20VaultSession) Resolve(chainId uint64, name [32]byte, allowZeroAddress bool) (common.Address, error) { return _ERC20Vault.Contract.Resolve(&_ERC20Vault.CallOpts, chainId, name, allowZeroAddress) } -// Resolve is a free data retrieval call binding the contract method 0x6c6563f6. +// Resolve is a free data retrieval call binding the contract method 0x3eb6b8cf. // -// Solidity: function resolve(uint256 chainId, bytes32 name, bool allowZeroAddress) view returns(address addr) -func (_ERC20Vault *ERC20VaultCallerSession) Resolve(chainId *big.Int, name [32]byte, allowZeroAddress bool) (common.Address, error) { +// Solidity: function resolve(uint64 chainId, bytes32 name, bool allowZeroAddress) view returns(address addr) +func (_ERC20Vault *ERC20VaultCallerSession) Resolve(chainId uint64, name [32]byte, allowZeroAddress bool) (common.Address, error) { return _ERC20Vault.Contract.Resolve(&_ERC20Vault.CallOpts, chainId, name, allowZeroAddress) } @@ -525,6 +556,27 @@ func (_ERC20Vault *ERC20VaultCallerSession) SupportsInterface(interfaceId [4]byt return _ERC20Vault.Contract.SupportsInterface(&_ERC20Vault.CallOpts, interfaceId) } +// AcceptOwnership is a paid mutator transaction binding the contract method 0x79ba5097. +// +// Solidity: function acceptOwnership() returns() +func (_ERC20Vault *ERC20VaultTransactor) AcceptOwnership(opts *bind.TransactOpts) (*types.Transaction, error) { + return _ERC20Vault.contract.Transact(opts, "acceptOwnership") +} + +// AcceptOwnership is a paid mutator transaction binding the contract method 0x79ba5097. +// +// Solidity: function acceptOwnership() returns() +func (_ERC20Vault *ERC20VaultSession) AcceptOwnership() (*types.Transaction, error) { + return _ERC20Vault.Contract.AcceptOwnership(&_ERC20Vault.TransactOpts) +} + +// AcceptOwnership is a paid mutator transaction binding the contract method 0x79ba5097. +// +// Solidity: function acceptOwnership() returns() +func (_ERC20Vault *ERC20VaultTransactorSession) AcceptOwnership() (*types.Transaction, error) { + return _ERC20Vault.Contract.AcceptOwnership(&_ERC20Vault.TransactOpts) +} + // Init is a paid mutator transaction binding the contract method 0x19ab453c. // // Solidity: function init(address addressManager) returns() @@ -546,23 +598,23 @@ func (_ERC20Vault *ERC20VaultTransactorSession) Init(addressManager common.Addre return _ERC20Vault.Contract.Init(&_ERC20Vault.TransactOpts, addressManager) } -// OnMessageRecalled is a paid mutator transaction binding the contract method 0x3005fb98. +// OnMessageRecalled is a paid mutator transaction binding the contract method 0xc389a180. // -// Solidity: function onMessageRecalled((uint128,address,uint256,uint256,address,address,address,uint256,uint256,uint256,bytes,string) message, bytes32 msgHash) payable returns() +// Solidity: function onMessageRecalled((uint128,address,uint64,uint64,address,address,address,uint256,uint256,uint256,bytes,string) message, bytes32 msgHash) payable returns() func (_ERC20Vault *ERC20VaultTransactor) OnMessageRecalled(opts *bind.TransactOpts, message IBridgeMessage, msgHash [32]byte) (*types.Transaction, error) { return _ERC20Vault.contract.Transact(opts, "onMessageRecalled", message, msgHash) } -// OnMessageRecalled is a paid mutator transaction binding the contract method 0x3005fb98. +// OnMessageRecalled is a paid mutator transaction binding the contract method 0xc389a180. // -// Solidity: function onMessageRecalled((uint128,address,uint256,uint256,address,address,address,uint256,uint256,uint256,bytes,string) message, bytes32 msgHash) payable returns() +// Solidity: function onMessageRecalled((uint128,address,uint64,uint64,address,address,address,uint256,uint256,uint256,bytes,string) message, bytes32 msgHash) payable returns() func (_ERC20Vault *ERC20VaultSession) OnMessageRecalled(message IBridgeMessage, msgHash [32]byte) (*types.Transaction, error) { return _ERC20Vault.Contract.OnMessageRecalled(&_ERC20Vault.TransactOpts, message, msgHash) } -// OnMessageRecalled is a paid mutator transaction binding the contract method 0x3005fb98. +// OnMessageRecalled is a paid mutator transaction binding the contract method 0xc389a180. // -// Solidity: function onMessageRecalled((uint128,address,uint256,uint256,address,address,address,uint256,uint256,uint256,bytes,string) message, bytes32 msgHash) payable returns() +// Solidity: function onMessageRecalled((uint128,address,uint64,uint64,address,address,address,uint256,uint256,uint256,bytes,string) message, bytes32 msgHash) payable returns() func (_ERC20Vault *ERC20VaultTransactorSession) OnMessageRecalled(message IBridgeMessage, msgHash [32]byte) (*types.Transaction, error) { return _ERC20Vault.Contract.OnMessageRecalled(&_ERC20Vault.TransactOpts, message, msgHash) } @@ -588,23 +640,23 @@ func (_ERC20Vault *ERC20VaultTransactorSession) Pause() (*types.Transaction, err return _ERC20Vault.Contract.Pause(&_ERC20Vault.TransactOpts) } -// ReceiveToken is a paid mutator transaction binding the contract method 0xcb03d23c. +// ReceiveToken is a paid mutator transaction binding the contract method 0x240f6a5f. // -// Solidity: function receiveToken((uint256,address,uint8,string,string) ctoken, address from, address to, uint256 amount) payable returns() +// Solidity: function receiveToken((uint64,address,uint8,string,string) ctoken, address from, address to, uint256 amount) payable returns() func (_ERC20Vault *ERC20VaultTransactor) ReceiveToken(opts *bind.TransactOpts, ctoken ERC20VaultCanonicalERC20, from common.Address, to common.Address, amount *big.Int) (*types.Transaction, error) { return _ERC20Vault.contract.Transact(opts, "receiveToken", ctoken, from, to, amount) } -// ReceiveToken is a paid mutator transaction binding the contract method 0xcb03d23c. +// ReceiveToken is a paid mutator transaction binding the contract method 0x240f6a5f. // -// Solidity: function receiveToken((uint256,address,uint8,string,string) ctoken, address from, address to, uint256 amount) payable returns() +// Solidity: function receiveToken((uint64,address,uint8,string,string) ctoken, address from, address to, uint256 amount) payable returns() func (_ERC20Vault *ERC20VaultSession) ReceiveToken(ctoken ERC20VaultCanonicalERC20, from common.Address, to common.Address, amount *big.Int) (*types.Transaction, error) { return _ERC20Vault.Contract.ReceiveToken(&_ERC20Vault.TransactOpts, ctoken, from, to, amount) } -// ReceiveToken is a paid mutator transaction binding the contract method 0xcb03d23c. +// ReceiveToken is a paid mutator transaction binding the contract method 0x240f6a5f. // -// Solidity: function receiveToken((uint256,address,uint8,string,string) ctoken, address from, address to, uint256 amount) payable returns() +// Solidity: function receiveToken((uint64,address,uint8,string,string) ctoken, address from, address to, uint256 amount) payable returns() func (_ERC20Vault *ERC20VaultTransactorSession) ReceiveToken(ctoken ERC20VaultCanonicalERC20, from common.Address, to common.Address, amount *big.Int) (*types.Transaction, error) { return _ERC20Vault.Contract.ReceiveToken(&_ERC20Vault.TransactOpts, ctoken, from, to, amount) } @@ -630,25 +682,25 @@ func (_ERC20Vault *ERC20VaultTransactorSession) RenounceOwnership() (*types.Tran return _ERC20Vault.Contract.RenounceOwnership(&_ERC20Vault.TransactOpts) } -// SendToken is a paid mutator transaction binding the contract method 0xe2dc9033. +// SendToken is a paid mutator transaction binding the contract method 0x755fc20c. // -// Solidity: function sendToken((uint256,address,address,uint256,uint256,uint256,address,string) opt) payable returns() -func (_ERC20Vault *ERC20VaultTransactor) SendToken(opts *bind.TransactOpts, opt ERC20VaultBridgeTransferOp) (*types.Transaction, error) { - return _ERC20Vault.contract.Transact(opts, "sendToken", opt) +// Solidity: function sendToken((uint64,address,address,uint256,uint256,uint256,address,string) op) payable returns((uint128,address,uint64,uint64,address,address,address,uint256,uint256,uint256,bytes,string) _message) +func (_ERC20Vault *ERC20VaultTransactor) SendToken(opts *bind.TransactOpts, op ERC20VaultBridgeTransferOp) (*types.Transaction, error) { + return _ERC20Vault.contract.Transact(opts, "sendToken", op) } -// SendToken is a paid mutator transaction binding the contract method 0xe2dc9033. +// SendToken is a paid mutator transaction binding the contract method 0x755fc20c. // -// Solidity: function sendToken((uint256,address,address,uint256,uint256,uint256,address,string) opt) payable returns() -func (_ERC20Vault *ERC20VaultSession) SendToken(opt ERC20VaultBridgeTransferOp) (*types.Transaction, error) { - return _ERC20Vault.Contract.SendToken(&_ERC20Vault.TransactOpts, opt) +// Solidity: function sendToken((uint64,address,address,uint256,uint256,uint256,address,string) op) payable returns((uint128,address,uint64,uint64,address,address,address,uint256,uint256,uint256,bytes,string) _message) +func (_ERC20Vault *ERC20VaultSession) SendToken(op ERC20VaultBridgeTransferOp) (*types.Transaction, error) { + return _ERC20Vault.Contract.SendToken(&_ERC20Vault.TransactOpts, op) } -// SendToken is a paid mutator transaction binding the contract method 0xe2dc9033. +// SendToken is a paid mutator transaction binding the contract method 0x755fc20c. // -// Solidity: function sendToken((uint256,address,address,uint256,uint256,uint256,address,string) opt) payable returns() -func (_ERC20Vault *ERC20VaultTransactorSession) SendToken(opt ERC20VaultBridgeTransferOp) (*types.Transaction, error) { - return _ERC20Vault.Contract.SendToken(&_ERC20Vault.TransactOpts, opt) +// Solidity: function sendToken((uint64,address,address,uint256,uint256,uint256,address,string) op) payable returns((uint128,address,uint64,uint64,address,address,address,uint256,uint256,uint256,bytes,string) _message) +func (_ERC20Vault *ERC20VaultTransactorSession) SendToken(op ERC20VaultBridgeTransferOp) (*types.Transaction, error) { + return _ERC20Vault.Contract.SendToken(&_ERC20Vault.TransactOpts, op) } // TransferOwnership is a paid mutator transaction binding the contract method 0xf2fde38b. @@ -992,6 +1044,159 @@ func (_ERC20Vault *ERC20VaultFilterer) ParseInitialized(log types.Log) (*ERC20Va return event, nil } +// ERC20VaultOwnershipTransferStartedIterator is returned from FilterOwnershipTransferStarted and is used to iterate over the raw logs and unpacked data for OwnershipTransferStarted events raised by the ERC20Vault contract. +type ERC20VaultOwnershipTransferStartedIterator struct { + Event *ERC20VaultOwnershipTransferStarted // Event containing the contract specifics and raw log + + contract *bind.BoundContract // Generic contract to use for unpacking event data + event string // Event name to use for unpacking event data + + logs chan types.Log // Log channel receiving the found contract events + sub ethereum.Subscription // Subscription for errors, completion and termination + done bool // Whether the subscription completed delivering logs + fail error // Occurred error to stop iteration +} + +// Next advances the iterator to the subsequent event, returning whether there +// are any more events found. In case of a retrieval or parsing error, false is +// returned and Error() can be queried for the exact failure. +func (it *ERC20VaultOwnershipTransferStartedIterator) Next() bool { + // If the iterator failed, stop iterating + if it.fail != nil { + return false + } + // If the iterator completed, deliver directly whatever's available + if it.done { + select { + case log := <-it.logs: + it.Event = new(ERC20VaultOwnershipTransferStarted) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + default: + return false + } + } + // Iterator still in progress, wait for either a data or an error event + select { + case log := <-it.logs: + it.Event = new(ERC20VaultOwnershipTransferStarted) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + case err := <-it.sub.Err(): + it.done = true + it.fail = err + return it.Next() + } +} + +// Error returns any retrieval or parsing error occurred during filtering. +func (it *ERC20VaultOwnershipTransferStartedIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *ERC20VaultOwnershipTransferStartedIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// ERC20VaultOwnershipTransferStarted represents a OwnershipTransferStarted event raised by the ERC20Vault contract. +type ERC20VaultOwnershipTransferStarted struct { + PreviousOwner common.Address + NewOwner common.Address + Raw types.Log // Blockchain specific contextual infos +} + +// FilterOwnershipTransferStarted is a free log retrieval operation binding the contract event 0x38d16b8cac22d99fc7c124b9cd0de2d3fa1faef420bfe791d8c362d765e22700. +// +// Solidity: event OwnershipTransferStarted(address indexed previousOwner, address indexed newOwner) +func (_ERC20Vault *ERC20VaultFilterer) FilterOwnershipTransferStarted(opts *bind.FilterOpts, previousOwner []common.Address, newOwner []common.Address) (*ERC20VaultOwnershipTransferStartedIterator, error) { + + var previousOwnerRule []interface{} + for _, previousOwnerItem := range previousOwner { + previousOwnerRule = append(previousOwnerRule, previousOwnerItem) + } + var newOwnerRule []interface{} + for _, newOwnerItem := range newOwner { + newOwnerRule = append(newOwnerRule, newOwnerItem) + } + + logs, sub, err := _ERC20Vault.contract.FilterLogs(opts, "OwnershipTransferStarted", previousOwnerRule, newOwnerRule) + if err != nil { + return nil, err + } + return &ERC20VaultOwnershipTransferStartedIterator{contract: _ERC20Vault.contract, event: "OwnershipTransferStarted", logs: logs, sub: sub}, nil +} + +// WatchOwnershipTransferStarted is a free log subscription operation binding the contract event 0x38d16b8cac22d99fc7c124b9cd0de2d3fa1faef420bfe791d8c362d765e22700. +// +// Solidity: event OwnershipTransferStarted(address indexed previousOwner, address indexed newOwner) +func (_ERC20Vault *ERC20VaultFilterer) WatchOwnershipTransferStarted(opts *bind.WatchOpts, sink chan<- *ERC20VaultOwnershipTransferStarted, previousOwner []common.Address, newOwner []common.Address) (event.Subscription, error) { + + var previousOwnerRule []interface{} + for _, previousOwnerItem := range previousOwner { + previousOwnerRule = append(previousOwnerRule, previousOwnerItem) + } + var newOwnerRule []interface{} + for _, newOwnerItem := range newOwner { + newOwnerRule = append(newOwnerRule, newOwnerItem) + } + + logs, sub, err := _ERC20Vault.contract.WatchLogs(opts, "OwnershipTransferStarted", previousOwnerRule, newOwnerRule) + if err != nil { + return nil, err + } + return event.NewSubscription(func(quit <-chan struct{}) error { + defer sub.Unsubscribe() + for { + select { + case log := <-logs: + // New log arrived, parse the event and forward to the user + event := new(ERC20VaultOwnershipTransferStarted) + if err := _ERC20Vault.contract.UnpackLog(event, "OwnershipTransferStarted", log); err != nil { + return err + } + event.Raw = log + + select { + case sink <- event: + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + } + }), nil +} + +// ParseOwnershipTransferStarted is a log parse operation binding the contract event 0x38d16b8cac22d99fc7c124b9cd0de2d3fa1faef420bfe791d8c362d765e22700. +// +// Solidity: event OwnershipTransferStarted(address indexed previousOwner, address indexed newOwner) +func (_ERC20Vault *ERC20VaultFilterer) ParseOwnershipTransferStarted(log types.Log) (*ERC20VaultOwnershipTransferStarted, error) { + event := new(ERC20VaultOwnershipTransferStarted) + if err := _ERC20Vault.contract.UnpackLog(event, "OwnershipTransferStarted", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} + // ERC20VaultOwnershipTransferredIterator is returned from FilterOwnershipTransferred and is used to iterate over the raw logs and unpacked data for OwnershipTransferred events raised by the ERC20Vault contract. type ERC20VaultOwnershipTransferredIterator struct { Event *ERC20VaultOwnershipTransferred // Event containing the contract specifics and raw log @@ -1351,15 +1556,15 @@ type ERC20VaultTokenReceived struct { MsgHash [32]byte From common.Address To common.Address - SrcChainId *big.Int + SrcChainId uint64 Token common.Address Amount *big.Int Raw types.Log // Blockchain specific contextual infos } -// FilterTokenReceived is a free log retrieval operation binding the contract event 0x883b72735ca0ee2cdd2a462a393658b1a0b36ebd8756e4c22b7509a92ff86a02. +// FilterTokenReceived is a free log retrieval operation binding the contract event 0xc8d296a7a3ffa2fb1e316d8c6cbaf5f7ea5e12f11abd76e61f47d2dfa12bb467. // -// Solidity: event TokenReceived(bytes32 indexed msgHash, address indexed from, address indexed to, uint256 srcChainId, address token, uint256 amount) +// Solidity: event TokenReceived(bytes32 indexed msgHash, address indexed from, address indexed to, uint64 srcChainId, address token, uint256 amount) func (_ERC20Vault *ERC20VaultFilterer) FilterTokenReceived(opts *bind.FilterOpts, msgHash [][32]byte, from []common.Address, to []common.Address) (*ERC20VaultTokenReceivedIterator, error) { var msgHashRule []interface{} @@ -1382,9 +1587,9 @@ func (_ERC20Vault *ERC20VaultFilterer) FilterTokenReceived(opts *bind.FilterOpts return &ERC20VaultTokenReceivedIterator{contract: _ERC20Vault.contract, event: "TokenReceived", logs: logs, sub: sub}, nil } -// WatchTokenReceived is a free log subscription operation binding the contract event 0x883b72735ca0ee2cdd2a462a393658b1a0b36ebd8756e4c22b7509a92ff86a02. +// WatchTokenReceived is a free log subscription operation binding the contract event 0xc8d296a7a3ffa2fb1e316d8c6cbaf5f7ea5e12f11abd76e61f47d2dfa12bb467. // -// Solidity: event TokenReceived(bytes32 indexed msgHash, address indexed from, address indexed to, uint256 srcChainId, address token, uint256 amount) +// Solidity: event TokenReceived(bytes32 indexed msgHash, address indexed from, address indexed to, uint64 srcChainId, address token, uint256 amount) func (_ERC20Vault *ERC20VaultFilterer) WatchTokenReceived(opts *bind.WatchOpts, sink chan<- *ERC20VaultTokenReceived, msgHash [][32]byte, from []common.Address, to []common.Address) (event.Subscription, error) { var msgHashRule []interface{} @@ -1432,9 +1637,9 @@ func (_ERC20Vault *ERC20VaultFilterer) WatchTokenReceived(opts *bind.WatchOpts, }), nil } -// ParseTokenReceived is a log parse operation binding the contract event 0x883b72735ca0ee2cdd2a462a393658b1a0b36ebd8756e4c22b7509a92ff86a02. +// ParseTokenReceived is a log parse operation binding the contract event 0xc8d296a7a3ffa2fb1e316d8c6cbaf5f7ea5e12f11abd76e61f47d2dfa12bb467. // -// Solidity: event TokenReceived(bytes32 indexed msgHash, address indexed from, address indexed to, uint256 srcChainId, address token, uint256 amount) +// Solidity: event TokenReceived(bytes32 indexed msgHash, address indexed from, address indexed to, uint64 srcChainId, address token, uint256 amount) func (_ERC20Vault *ERC20VaultFilterer) ParseTokenReceived(log types.Log) (*ERC20VaultTokenReceived, error) { event := new(ERC20VaultTokenReceived) if err := _ERC20Vault.contract.UnpackLog(event, "TokenReceived", log); err != nil { @@ -1671,15 +1876,15 @@ type ERC20VaultTokenSent struct { MsgHash [32]byte From common.Address To common.Address - DestChainId *big.Int + DestChainId uint64 Token common.Address Amount *big.Int Raw types.Log // Blockchain specific contextual infos } -// FilterTokenSent is a free log retrieval operation binding the contract event 0x91462591aed3d13dcadac8ed73fdc175ec6e79b798ca205822e7ec33dc019e88. +// FilterTokenSent is a free log retrieval operation binding the contract event 0xd2934b7e737b6465ee52ffdc702435c483343c4354cafc7f296e05e890358e48. // -// Solidity: event TokenSent(bytes32 indexed msgHash, address indexed from, address indexed to, uint256 destChainId, address token, uint256 amount) +// Solidity: event TokenSent(bytes32 indexed msgHash, address indexed from, address indexed to, uint64 destChainId, address token, uint256 amount) func (_ERC20Vault *ERC20VaultFilterer) FilterTokenSent(opts *bind.FilterOpts, msgHash [][32]byte, from []common.Address, to []common.Address) (*ERC20VaultTokenSentIterator, error) { var msgHashRule []interface{} @@ -1702,9 +1907,9 @@ func (_ERC20Vault *ERC20VaultFilterer) FilterTokenSent(opts *bind.FilterOpts, ms return &ERC20VaultTokenSentIterator{contract: _ERC20Vault.contract, event: "TokenSent", logs: logs, sub: sub}, nil } -// WatchTokenSent is a free log subscription operation binding the contract event 0x91462591aed3d13dcadac8ed73fdc175ec6e79b798ca205822e7ec33dc019e88. +// WatchTokenSent is a free log subscription operation binding the contract event 0xd2934b7e737b6465ee52ffdc702435c483343c4354cafc7f296e05e890358e48. // -// Solidity: event TokenSent(bytes32 indexed msgHash, address indexed from, address indexed to, uint256 destChainId, address token, uint256 amount) +// Solidity: event TokenSent(bytes32 indexed msgHash, address indexed from, address indexed to, uint64 destChainId, address token, uint256 amount) func (_ERC20Vault *ERC20VaultFilterer) WatchTokenSent(opts *bind.WatchOpts, sink chan<- *ERC20VaultTokenSent, msgHash [][32]byte, from []common.Address, to []common.Address) (event.Subscription, error) { var msgHashRule []interface{} @@ -1752,9 +1957,9 @@ func (_ERC20Vault *ERC20VaultFilterer) WatchTokenSent(opts *bind.WatchOpts, sink }), nil } -// ParseTokenSent is a log parse operation binding the contract event 0x91462591aed3d13dcadac8ed73fdc175ec6e79b798ca205822e7ec33dc019e88. +// ParseTokenSent is a log parse operation binding the contract event 0xd2934b7e737b6465ee52ffdc702435c483343c4354cafc7f296e05e890358e48. // -// Solidity: event TokenSent(bytes32 indexed msgHash, address indexed from, address indexed to, uint256 destChainId, address token, uint256 amount) +// Solidity: event TokenSent(bytes32 indexed msgHash, address indexed from, address indexed to, uint64 destChainId, address token, uint256 amount) func (_ERC20Vault *ERC20VaultFilterer) ParseTokenSent(log types.Log) (*ERC20VaultTokenSent, error) { event := new(ERC20VaultTokenSent) if err := _ERC20Vault.contract.UnpackLog(event, "TokenSent", log); err != nil { diff --git a/packages/relayer/bindings/erc721vault/ERC721Vault.go b/packages/relayer/bindings/erc721vault/ERC721Vault.go index e687659f89..4e7e92d46d 100644 --- a/packages/relayer/bindings/erc721vault/ERC721Vault.go +++ b/packages/relayer/bindings/erc721vault/ERC721Vault.go @@ -31,7 +31,7 @@ var ( // BaseNFTVaultBridgeTransferOp is an auto generated low-level Go binding around an user-defined struct. type BaseNFTVaultBridgeTransferOp struct { - DestChainId *big.Int + DestChainId uint64 To common.Address Token common.Address TokenIds []*big.Int @@ -44,7 +44,7 @@ type BaseNFTVaultBridgeTransferOp struct { // BaseNFTVaultCanonicalNFT is an auto generated low-level Go binding around an user-defined struct. type BaseNFTVaultCanonicalNFT struct { - ChainId *big.Int + ChainId uint64 Addr common.Address Symbol string Name string @@ -54,9 +54,9 @@ type BaseNFTVaultCanonicalNFT struct { type IBridgeMessage struct { Id *big.Int From common.Address - SrcChainId *big.Int - DestChainId *big.Int - User common.Address + SrcChainId uint64 + DestChainId uint64 + Owner common.Address To common.Address RefundTo common.Address Value *big.Int @@ -68,7 +68,7 @@ type IBridgeMessage struct { // ERC721VaultMetaData contains all meta data concerning the ERC721Vault contract. var ERC721VaultMetaData = &bind.MetaData{ - ABI: "[{\"inputs\":[],\"name\":\"ETH_TRANSFER_FAILED\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"INVALID_PAUSE_STATUS\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"REENTRANT_CALL\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"RESOLVER_DENIED\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"RESOLVER_INVALID_MANAGER\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"chainId\",\"type\":\"uint256\"},{\"internalType\":\"bytes32\",\"name\":\"name\",\"type\":\"bytes32\"}],\"name\":\"RESOLVER_ZERO_ADDR\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"VAULT_INTERFACE_NOT_SUPPORTED\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"VAULT_INVALID_AMOUNT\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"VAULT_INVALID_FROM\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"VAULT_INVALID_SRC_CHAIN_ID\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"VAULT_INVALID_TO\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"VAULT_INVALID_TOKEN\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"VAULT_INVALID_USER\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"VAULT_MAX_TOKEN_PER_TXN_EXCEEDED\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"VAULT_MESSAGE_NOT_FAILED\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"VAULT_MESSAGE_RELEASED_ALREADY\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"VAULT_TOKEN_ARRAY_MISMATCH\",\"type\":\"error\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"chainId\",\"type\":\"uint256\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"ctoken\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"btoken\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"string\",\"name\":\"ctokenSymbol\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"string\",\"name\":\"ctokenName\",\"type\":\"string\"}],\"name\":\"BridgedTokenDeployed\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint8\",\"name\":\"version\",\"type\":\"uint8\"}],\"name\":\"Initialized\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"previousOwner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"newOwner\",\"type\":\"address\"}],\"name\":\"OwnershipTransferred\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"Paused\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"msgHash\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"srcChainId\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256[]\",\"name\":\"tokenIds\",\"type\":\"uint256[]\"},{\"indexed\":false,\"internalType\":\"uint256[]\",\"name\":\"amounts\",\"type\":\"uint256[]\"}],\"name\":\"TokenReceived\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"msgHash\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256[]\",\"name\":\"tokenIds\",\"type\":\"uint256[]\"},{\"indexed\":false,\"internalType\":\"uint256[]\",\"name\":\"amounts\",\"type\":\"uint256[]\"}],\"name\":\"TokenReleased\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"msgHash\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"destChainId\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256[]\",\"name\":\"tokenIds\",\"type\":\"uint256[]\"},{\"indexed\":false,\"internalType\":\"uint256[]\",\"name\":\"amounts\",\"type\":\"uint256[]\"}],\"name\":\"TokenSent\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"Unpaused\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"ERC1155_INTERFACE_ID\",\"outputs\":[{\"internalType\":\"bytes4\",\"name\":\"\",\"type\":\"bytes4\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"ERC721_INTERFACE_ID\",\"outputs\":[{\"internalType\":\"bytes4\",\"name\":\"\",\"type\":\"bytes4\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"addressManager\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"name\":\"bridgedToCanonical\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"chainId\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"addr\",\"type\":\"address\"},{\"internalType\":\"string\",\"name\":\"symbol\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"name\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"name\":\"canonicalToBridged\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"addressManager\",\"type\":\"address\"}],\"name\":\"init\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"name\":\"isBridgedToken\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"\",\"type\":\"bytes\"}],\"name\":\"onERC721Received\",\"outputs\":[{\"internalType\":\"bytes4\",\"name\":\"\",\"type\":\"bytes4\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"uint128\",\"name\":\"id\",\"type\":\"uint128\"},{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"srcChainId\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"destChainId\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"user\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"refundTo\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"fee\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"gasLimit\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"},{\"internalType\":\"string\",\"name\":\"memo\",\"type\":\"string\"}],\"internalType\":\"structIBridge.Message\",\"name\":\"message\",\"type\":\"tuple\"},{\"internalType\":\"bytes32\",\"name\":\"msgHash\",\"type\":\"bytes32\"}],\"name\":\"onMessageRecalled\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"owner\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"pause\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"paused\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"uint256\",\"name\":\"chainId\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"addr\",\"type\":\"address\"},{\"internalType\":\"string\",\"name\":\"symbol\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"name\",\"type\":\"string\"}],\"internalType\":\"structBaseNFTVault.CanonicalNFT\",\"name\":\"ctoken\",\"type\":\"tuple\"},{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256[]\",\"name\":\"tokenIds\",\"type\":\"uint256[]\"}],\"name\":\"receiveToken\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"renounceOwnership\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"chainId\",\"type\":\"uint256\"},{\"internalType\":\"bytes32\",\"name\":\"name\",\"type\":\"bytes32\"},{\"internalType\":\"bool\",\"name\":\"allowZeroAddress\",\"type\":\"bool\"}],\"name\":\"resolve\",\"outputs\":[{\"internalType\":\"addresspayable\",\"name\":\"addr\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"name\",\"type\":\"bytes32\"},{\"internalType\":\"bool\",\"name\":\"allowZeroAddress\",\"type\":\"bool\"}],\"name\":\"resolve\",\"outputs\":[{\"internalType\":\"addresspayable\",\"name\":\"addr\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"uint256\",\"name\":\"destChainId\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"uint256[]\",\"name\":\"tokenIds\",\"type\":\"uint256[]\"},{\"internalType\":\"uint256[]\",\"name\":\"amounts\",\"type\":\"uint256[]\"},{\"internalType\":\"uint256\",\"name\":\"gasLimit\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"fee\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"refundTo\",\"type\":\"address\"},{\"internalType\":\"string\",\"name\":\"memo\",\"type\":\"string\"}],\"internalType\":\"structBaseNFTVault.BridgeTransferOp\",\"name\":\"opt\",\"type\":\"tuple\"}],\"name\":\"sendToken\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes4\",\"name\":\"interfaceId\",\"type\":\"bytes4\"}],\"name\":\"supportsInterface\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"newOwner\",\"type\":\"address\"}],\"name\":\"transferOwnership\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"unpause\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}]", + ABI: "[{\"inputs\":[],\"name\":\"ETH_TRANSFER_FAILED\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"INVALID_PAUSE_STATUS\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"REENTRANT_CALL\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"RESOLVER_DENIED\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"RESOLVER_INVALID_MANAGER\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"RESOLVER_UNEXPECTED_CHAINID\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"chainId\",\"type\":\"uint64\"},{\"internalType\":\"string\",\"name\":\"name\",\"type\":\"string\"}],\"name\":\"RESOLVER_ZERO_ADDR\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"VAULT_INTERFACE_NOT_SUPPORTED\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"VAULT_INVALID_AMOUNT\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"VAULT_INVALID_FROM\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"VAULT_INVALID_SRC_CHAIN_ID\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"VAULT_INVALID_TOKEN\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"VAULT_INVALID_USER\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"VAULT_MAX_TOKEN_PER_TXN_EXCEEDED\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"VAULT_MESSAGE_NOT_FAILED\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"VAULT_MESSAGE_RELEASED_ALREADY\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"VAULT_PERMISSION_DENIED\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"VAULT_TOKEN_ARRAY_MISMATCH\",\"type\":\"error\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint64\",\"name\":\"chainId\",\"type\":\"uint64\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"ctoken\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"btoken\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"string\",\"name\":\"ctokenSymbol\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"string\",\"name\":\"ctokenName\",\"type\":\"string\"}],\"name\":\"BridgedTokenDeployed\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint8\",\"name\":\"version\",\"type\":\"uint8\"}],\"name\":\"Initialized\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"previousOwner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"newOwner\",\"type\":\"address\"}],\"name\":\"OwnershipTransferStarted\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"previousOwner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"newOwner\",\"type\":\"address\"}],\"name\":\"OwnershipTransferred\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"Paused\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"msgHash\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint64\",\"name\":\"srcChainId\",\"type\":\"uint64\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256[]\",\"name\":\"tokenIds\",\"type\":\"uint256[]\"},{\"indexed\":false,\"internalType\":\"uint256[]\",\"name\":\"amounts\",\"type\":\"uint256[]\"}],\"name\":\"TokenReceived\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"msgHash\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256[]\",\"name\":\"tokenIds\",\"type\":\"uint256[]\"},{\"indexed\":false,\"internalType\":\"uint256[]\",\"name\":\"amounts\",\"type\":\"uint256[]\"}],\"name\":\"TokenReleased\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"msgHash\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint64\",\"name\":\"destChainId\",\"type\":\"uint64\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256[]\",\"name\":\"tokenIds\",\"type\":\"uint256[]\"},{\"indexed\":false,\"internalType\":\"uint256[]\",\"name\":\"amounts\",\"type\":\"uint256[]\"}],\"name\":\"TokenSent\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"Unpaused\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"ERC1155_INTERFACE_ID\",\"outputs\":[{\"internalType\":\"bytes4\",\"name\":\"\",\"type\":\"bytes4\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"ERC721_INTERFACE_ID\",\"outputs\":[{\"internalType\":\"bytes4\",\"name\":\"\",\"type\":\"bytes4\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"MAX_TOKEN_PER_TXN\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"acceptOwnership\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"addressManager\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"name\":\"bridgedToCanonical\",\"outputs\":[{\"internalType\":\"uint64\",\"name\":\"chainId\",\"type\":\"uint64\"},{\"internalType\":\"address\",\"name\":\"addr\",\"type\":\"address\"},{\"internalType\":\"string\",\"name\":\"symbol\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"name\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"name\":\"canonicalToBridged\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"addressManager\",\"type\":\"address\"}],\"name\":\"init\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"name\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"\",\"type\":\"bytes\"}],\"name\":\"onERC721Received\",\"outputs\":[{\"internalType\":\"bytes4\",\"name\":\"\",\"type\":\"bytes4\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"uint128\",\"name\":\"id\",\"type\":\"uint128\"},{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"uint64\",\"name\":\"srcChainId\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"destChainId\",\"type\":\"uint64\"},{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"refundTo\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"fee\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"gasLimit\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"},{\"internalType\":\"string\",\"name\":\"memo\",\"type\":\"string\"}],\"internalType\":\"structIBridge.Message\",\"name\":\"message\",\"type\":\"tuple\"},{\"internalType\":\"bytes32\",\"name\":\"msgHash\",\"type\":\"bytes32\"}],\"name\":\"onMessageRecalled\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"owner\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"pause\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"paused\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"pendingOwner\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"uint64\",\"name\":\"chainId\",\"type\":\"uint64\"},{\"internalType\":\"address\",\"name\":\"addr\",\"type\":\"address\"},{\"internalType\":\"string\",\"name\":\"symbol\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"name\",\"type\":\"string\"}],\"internalType\":\"structBaseNFTVault.CanonicalNFT\",\"name\":\"ctoken\",\"type\":\"tuple\"},{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256[]\",\"name\":\"tokenIds\",\"type\":\"uint256[]\"}],\"name\":\"receiveToken\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"renounceOwnership\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"chainId\",\"type\":\"uint64\"},{\"internalType\":\"bytes32\",\"name\":\"name\",\"type\":\"bytes32\"},{\"internalType\":\"bool\",\"name\":\"allowZeroAddress\",\"type\":\"bool\"}],\"name\":\"resolve\",\"outputs\":[{\"internalType\":\"addresspayable\",\"name\":\"addr\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"name\",\"type\":\"bytes32\"},{\"internalType\":\"bool\",\"name\":\"allowZeroAddress\",\"type\":\"bool\"}],\"name\":\"resolve\",\"outputs\":[{\"internalType\":\"addresspayable\",\"name\":\"addr\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"uint64\",\"name\":\"destChainId\",\"type\":\"uint64\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"uint256[]\",\"name\":\"tokenIds\",\"type\":\"uint256[]\"},{\"internalType\":\"uint256[]\",\"name\":\"amounts\",\"type\":\"uint256[]\"},{\"internalType\":\"uint256\",\"name\":\"gasLimit\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"fee\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"refundTo\",\"type\":\"address\"},{\"internalType\":\"string\",\"name\":\"memo\",\"type\":\"string\"}],\"internalType\":\"structBaseNFTVault.BridgeTransferOp\",\"name\":\"op\",\"type\":\"tuple\"}],\"name\":\"sendToken\",\"outputs\":[{\"components\":[{\"internalType\":\"uint128\",\"name\":\"id\",\"type\":\"uint128\"},{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"uint64\",\"name\":\"srcChainId\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"destChainId\",\"type\":\"uint64\"},{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"refundTo\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"fee\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"gasLimit\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"},{\"internalType\":\"string\",\"name\":\"memo\",\"type\":\"string\"}],\"internalType\":\"structIBridge.Message\",\"name\":\"_message\",\"type\":\"tuple\"}],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes4\",\"name\":\"interfaceId\",\"type\":\"bytes4\"}],\"name\":\"supportsInterface\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"newOwner\",\"type\":\"address\"}],\"name\":\"transferOwnership\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"unpause\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}]", } // ERC721VaultABI is the input ABI used to generate the binding from. @@ -279,6 +279,37 @@ func (_ERC721Vault *ERC721VaultCallerSession) ERC721INTERFACEID() ([4]byte, erro return _ERC721Vault.Contract.ERC721INTERFACEID(&_ERC721Vault.CallOpts) } +// MAXTOKENPERTXN is a free data retrieval call binding the contract method 0x634da63a. +// +// Solidity: function MAX_TOKEN_PER_TXN() view returns(uint256) +func (_ERC721Vault *ERC721VaultCaller) MAXTOKENPERTXN(opts *bind.CallOpts) (*big.Int, error) { + var out []interface{} + err := _ERC721Vault.contract.Call(opts, &out, "MAX_TOKEN_PER_TXN") + + if err != nil { + return *new(*big.Int), err + } + + out0 := *abi.ConvertType(out[0], new(*big.Int)).(**big.Int) + + return out0, err + +} + +// MAXTOKENPERTXN is a free data retrieval call binding the contract method 0x634da63a. +// +// Solidity: function MAX_TOKEN_PER_TXN() view returns(uint256) +func (_ERC721Vault *ERC721VaultSession) MAXTOKENPERTXN() (*big.Int, error) { + return _ERC721Vault.Contract.MAXTOKENPERTXN(&_ERC721Vault.CallOpts) +} + +// MAXTOKENPERTXN is a free data retrieval call binding the contract method 0x634da63a. +// +// Solidity: function MAX_TOKEN_PER_TXN() view returns(uint256) +func (_ERC721Vault *ERC721VaultCallerSession) MAXTOKENPERTXN() (*big.Int, error) { + return _ERC721Vault.Contract.MAXTOKENPERTXN(&_ERC721Vault.CallOpts) +} + // AddressManager is a free data retrieval call binding the contract method 0x3ab76e9f. // // Solidity: function addressManager() view returns(address) @@ -312,9 +343,9 @@ func (_ERC721Vault *ERC721VaultCallerSession) AddressManager() (common.Address, // BridgedToCanonical is a free data retrieval call binding the contract method 0x9aa8605c. // -// Solidity: function bridgedToCanonical(address ) view returns(uint256 chainId, address addr, string symbol, string name) +// Solidity: function bridgedToCanonical(address ) view returns(uint64 chainId, address addr, string symbol, string name) func (_ERC721Vault *ERC721VaultCaller) BridgedToCanonical(opts *bind.CallOpts, arg0 common.Address) (struct { - ChainId *big.Int + ChainId uint64 Addr common.Address Symbol string Name string @@ -323,7 +354,7 @@ func (_ERC721Vault *ERC721VaultCaller) BridgedToCanonical(opts *bind.CallOpts, a err := _ERC721Vault.contract.Call(opts, &out, "bridgedToCanonical", arg0) outstruct := new(struct { - ChainId *big.Int + ChainId uint64 Addr common.Address Symbol string Name string @@ -332,7 +363,7 @@ func (_ERC721Vault *ERC721VaultCaller) BridgedToCanonical(opts *bind.CallOpts, a return *outstruct, err } - outstruct.ChainId = *abi.ConvertType(out[0], new(*big.Int)).(**big.Int) + outstruct.ChainId = *abi.ConvertType(out[0], new(uint64)).(*uint64) outstruct.Addr = *abi.ConvertType(out[1], new(common.Address)).(*common.Address) outstruct.Symbol = *abi.ConvertType(out[2], new(string)).(*string) outstruct.Name = *abi.ConvertType(out[3], new(string)).(*string) @@ -343,9 +374,9 @@ func (_ERC721Vault *ERC721VaultCaller) BridgedToCanonical(opts *bind.CallOpts, a // BridgedToCanonical is a free data retrieval call binding the contract method 0x9aa8605c. // -// Solidity: function bridgedToCanonical(address ) view returns(uint256 chainId, address addr, string symbol, string name) +// Solidity: function bridgedToCanonical(address ) view returns(uint64 chainId, address addr, string symbol, string name) func (_ERC721Vault *ERC721VaultSession) BridgedToCanonical(arg0 common.Address) (struct { - ChainId *big.Int + ChainId uint64 Addr common.Address Symbol string Name string @@ -355,9 +386,9 @@ func (_ERC721Vault *ERC721VaultSession) BridgedToCanonical(arg0 common.Address) // BridgedToCanonical is a free data retrieval call binding the contract method 0x9aa8605c. // -// Solidity: function bridgedToCanonical(address ) view returns(uint256 chainId, address addr, string symbol, string name) +// Solidity: function bridgedToCanonical(address ) view returns(uint64 chainId, address addr, string symbol, string name) func (_ERC721Vault *ERC721VaultCallerSession) BridgedToCanonical(arg0 common.Address) (struct { - ChainId *big.Int + ChainId uint64 Addr common.Address Symbol string Name string @@ -396,35 +427,35 @@ func (_ERC721Vault *ERC721VaultCallerSession) CanonicalToBridged(arg0 *big.Int, return _ERC721Vault.Contract.CanonicalToBridged(&_ERC721Vault.CallOpts, arg0, arg1) } -// IsBridgedToken is a free data retrieval call binding the contract method 0xc287e578. +// Name is a free data retrieval call binding the contract method 0x06fdde03. // -// Solidity: function isBridgedToken(address ) view returns(bool) -func (_ERC721Vault *ERC721VaultCaller) IsBridgedToken(opts *bind.CallOpts, arg0 common.Address) (bool, error) { +// Solidity: function name() pure returns(bytes32) +func (_ERC721Vault *ERC721VaultCaller) Name(opts *bind.CallOpts) ([32]byte, error) { var out []interface{} - err := _ERC721Vault.contract.Call(opts, &out, "isBridgedToken", arg0) + err := _ERC721Vault.contract.Call(opts, &out, "name") if err != nil { - return *new(bool), err + return *new([32]byte), err } - out0 := *abi.ConvertType(out[0], new(bool)).(*bool) + out0 := *abi.ConvertType(out[0], new([32]byte)).(*[32]byte) return out0, err } -// IsBridgedToken is a free data retrieval call binding the contract method 0xc287e578. +// Name is a free data retrieval call binding the contract method 0x06fdde03. // -// Solidity: function isBridgedToken(address ) view returns(bool) -func (_ERC721Vault *ERC721VaultSession) IsBridgedToken(arg0 common.Address) (bool, error) { - return _ERC721Vault.Contract.IsBridgedToken(&_ERC721Vault.CallOpts, arg0) +// Solidity: function name() pure returns(bytes32) +func (_ERC721Vault *ERC721VaultSession) Name() ([32]byte, error) { + return _ERC721Vault.Contract.Name(&_ERC721Vault.CallOpts) } -// IsBridgedToken is a free data retrieval call binding the contract method 0xc287e578. +// Name is a free data retrieval call binding the contract method 0x06fdde03. // -// Solidity: function isBridgedToken(address ) view returns(bool) -func (_ERC721Vault *ERC721VaultCallerSession) IsBridgedToken(arg0 common.Address) (bool, error) { - return _ERC721Vault.Contract.IsBridgedToken(&_ERC721Vault.CallOpts, arg0) +// Solidity: function name() pure returns(bytes32) +func (_ERC721Vault *ERC721VaultCallerSession) Name() ([32]byte, error) { + return _ERC721Vault.Contract.Name(&_ERC721Vault.CallOpts) } // OnERC721Received is a free data retrieval call binding the contract method 0x150b7a02. @@ -520,10 +551,41 @@ func (_ERC721Vault *ERC721VaultCallerSession) Paused() (bool, error) { return _ERC721Vault.Contract.Paused(&_ERC721Vault.CallOpts) } -// Resolve is a free data retrieval call binding the contract method 0x6c6563f6. +// PendingOwner is a free data retrieval call binding the contract method 0xe30c3978. +// +// Solidity: function pendingOwner() view returns(address) +func (_ERC721Vault *ERC721VaultCaller) PendingOwner(opts *bind.CallOpts) (common.Address, error) { + var out []interface{} + err := _ERC721Vault.contract.Call(opts, &out, "pendingOwner") + + if err != nil { + return *new(common.Address), err + } + + out0 := *abi.ConvertType(out[0], new(common.Address)).(*common.Address) + + return out0, err + +} + +// PendingOwner is a free data retrieval call binding the contract method 0xe30c3978. +// +// Solidity: function pendingOwner() view returns(address) +func (_ERC721Vault *ERC721VaultSession) PendingOwner() (common.Address, error) { + return _ERC721Vault.Contract.PendingOwner(&_ERC721Vault.CallOpts) +} + +// PendingOwner is a free data retrieval call binding the contract method 0xe30c3978. +// +// Solidity: function pendingOwner() view returns(address) +func (_ERC721Vault *ERC721VaultCallerSession) PendingOwner() (common.Address, error) { + return _ERC721Vault.Contract.PendingOwner(&_ERC721Vault.CallOpts) +} + +// Resolve is a free data retrieval call binding the contract method 0x3eb6b8cf. // -// Solidity: function resolve(uint256 chainId, bytes32 name, bool allowZeroAddress) view returns(address addr) -func (_ERC721Vault *ERC721VaultCaller) Resolve(opts *bind.CallOpts, chainId *big.Int, name [32]byte, allowZeroAddress bool) (common.Address, error) { +// Solidity: function resolve(uint64 chainId, bytes32 name, bool allowZeroAddress) view returns(address addr) +func (_ERC721Vault *ERC721VaultCaller) Resolve(opts *bind.CallOpts, chainId uint64, name [32]byte, allowZeroAddress bool) (common.Address, error) { var out []interface{} err := _ERC721Vault.contract.Call(opts, &out, "resolve", chainId, name, allowZeroAddress) @@ -537,17 +599,17 @@ func (_ERC721Vault *ERC721VaultCaller) Resolve(opts *bind.CallOpts, chainId *big } -// Resolve is a free data retrieval call binding the contract method 0x6c6563f6. +// Resolve is a free data retrieval call binding the contract method 0x3eb6b8cf. // -// Solidity: function resolve(uint256 chainId, bytes32 name, bool allowZeroAddress) view returns(address addr) -func (_ERC721Vault *ERC721VaultSession) Resolve(chainId *big.Int, name [32]byte, allowZeroAddress bool) (common.Address, error) { +// Solidity: function resolve(uint64 chainId, bytes32 name, bool allowZeroAddress) view returns(address addr) +func (_ERC721Vault *ERC721VaultSession) Resolve(chainId uint64, name [32]byte, allowZeroAddress bool) (common.Address, error) { return _ERC721Vault.Contract.Resolve(&_ERC721Vault.CallOpts, chainId, name, allowZeroAddress) } -// Resolve is a free data retrieval call binding the contract method 0x6c6563f6. +// Resolve is a free data retrieval call binding the contract method 0x3eb6b8cf. // -// Solidity: function resolve(uint256 chainId, bytes32 name, bool allowZeroAddress) view returns(address addr) -func (_ERC721Vault *ERC721VaultCallerSession) Resolve(chainId *big.Int, name [32]byte, allowZeroAddress bool) (common.Address, error) { +// Solidity: function resolve(uint64 chainId, bytes32 name, bool allowZeroAddress) view returns(address addr) +func (_ERC721Vault *ERC721VaultCallerSession) Resolve(chainId uint64, name [32]byte, allowZeroAddress bool) (common.Address, error) { return _ERC721Vault.Contract.Resolve(&_ERC721Vault.CallOpts, chainId, name, allowZeroAddress) } @@ -613,6 +675,27 @@ func (_ERC721Vault *ERC721VaultCallerSession) SupportsInterface(interfaceId [4]b return _ERC721Vault.Contract.SupportsInterface(&_ERC721Vault.CallOpts, interfaceId) } +// AcceptOwnership is a paid mutator transaction binding the contract method 0x79ba5097. +// +// Solidity: function acceptOwnership() returns() +func (_ERC721Vault *ERC721VaultTransactor) AcceptOwnership(opts *bind.TransactOpts) (*types.Transaction, error) { + return _ERC721Vault.contract.Transact(opts, "acceptOwnership") +} + +// AcceptOwnership is a paid mutator transaction binding the contract method 0x79ba5097. +// +// Solidity: function acceptOwnership() returns() +func (_ERC721Vault *ERC721VaultSession) AcceptOwnership() (*types.Transaction, error) { + return _ERC721Vault.Contract.AcceptOwnership(&_ERC721Vault.TransactOpts) +} + +// AcceptOwnership is a paid mutator transaction binding the contract method 0x79ba5097. +// +// Solidity: function acceptOwnership() returns() +func (_ERC721Vault *ERC721VaultTransactorSession) AcceptOwnership() (*types.Transaction, error) { + return _ERC721Vault.Contract.AcceptOwnership(&_ERC721Vault.TransactOpts) +} + // Init is a paid mutator transaction binding the contract method 0x19ab453c. // // Solidity: function init(address addressManager) returns() @@ -634,23 +717,23 @@ func (_ERC721Vault *ERC721VaultTransactorSession) Init(addressManager common.Add return _ERC721Vault.Contract.Init(&_ERC721Vault.TransactOpts, addressManager) } -// OnMessageRecalled is a paid mutator transaction binding the contract method 0x3005fb98. +// OnMessageRecalled is a paid mutator transaction binding the contract method 0xc389a180. // -// Solidity: function onMessageRecalled((uint128,address,uint256,uint256,address,address,address,uint256,uint256,uint256,bytes,string) message, bytes32 msgHash) payable returns() +// Solidity: function onMessageRecalled((uint128,address,uint64,uint64,address,address,address,uint256,uint256,uint256,bytes,string) message, bytes32 msgHash) payable returns() func (_ERC721Vault *ERC721VaultTransactor) OnMessageRecalled(opts *bind.TransactOpts, message IBridgeMessage, msgHash [32]byte) (*types.Transaction, error) { return _ERC721Vault.contract.Transact(opts, "onMessageRecalled", message, msgHash) } -// OnMessageRecalled is a paid mutator transaction binding the contract method 0x3005fb98. +// OnMessageRecalled is a paid mutator transaction binding the contract method 0xc389a180. // -// Solidity: function onMessageRecalled((uint128,address,uint256,uint256,address,address,address,uint256,uint256,uint256,bytes,string) message, bytes32 msgHash) payable returns() +// Solidity: function onMessageRecalled((uint128,address,uint64,uint64,address,address,address,uint256,uint256,uint256,bytes,string) message, bytes32 msgHash) payable returns() func (_ERC721Vault *ERC721VaultSession) OnMessageRecalled(message IBridgeMessage, msgHash [32]byte) (*types.Transaction, error) { return _ERC721Vault.Contract.OnMessageRecalled(&_ERC721Vault.TransactOpts, message, msgHash) } -// OnMessageRecalled is a paid mutator transaction binding the contract method 0x3005fb98. +// OnMessageRecalled is a paid mutator transaction binding the contract method 0xc389a180. // -// Solidity: function onMessageRecalled((uint128,address,uint256,uint256,address,address,address,uint256,uint256,uint256,bytes,string) message, bytes32 msgHash) payable returns() +// Solidity: function onMessageRecalled((uint128,address,uint64,uint64,address,address,address,uint256,uint256,uint256,bytes,string) message, bytes32 msgHash) payable returns() func (_ERC721Vault *ERC721VaultTransactorSession) OnMessageRecalled(message IBridgeMessage, msgHash [32]byte) (*types.Transaction, error) { return _ERC721Vault.Contract.OnMessageRecalled(&_ERC721Vault.TransactOpts, message, msgHash) } @@ -676,23 +759,23 @@ func (_ERC721Vault *ERC721VaultTransactorSession) Pause() (*types.Transaction, e return _ERC721Vault.Contract.Pause(&_ERC721Vault.TransactOpts) } -// ReceiveToken is a paid mutator transaction binding the contract method 0xa9976baf. +// ReceiveToken is a paid mutator transaction binding the contract method 0x300536b5. // -// Solidity: function receiveToken((uint256,address,string,string) ctoken, address from, address to, uint256[] tokenIds) payable returns() +// Solidity: function receiveToken((uint64,address,string,string) ctoken, address from, address to, uint256[] tokenIds) payable returns() func (_ERC721Vault *ERC721VaultTransactor) ReceiveToken(opts *bind.TransactOpts, ctoken BaseNFTVaultCanonicalNFT, from common.Address, to common.Address, tokenIds []*big.Int) (*types.Transaction, error) { return _ERC721Vault.contract.Transact(opts, "receiveToken", ctoken, from, to, tokenIds) } -// ReceiveToken is a paid mutator transaction binding the contract method 0xa9976baf. +// ReceiveToken is a paid mutator transaction binding the contract method 0x300536b5. // -// Solidity: function receiveToken((uint256,address,string,string) ctoken, address from, address to, uint256[] tokenIds) payable returns() +// Solidity: function receiveToken((uint64,address,string,string) ctoken, address from, address to, uint256[] tokenIds) payable returns() func (_ERC721Vault *ERC721VaultSession) ReceiveToken(ctoken BaseNFTVaultCanonicalNFT, from common.Address, to common.Address, tokenIds []*big.Int) (*types.Transaction, error) { return _ERC721Vault.Contract.ReceiveToken(&_ERC721Vault.TransactOpts, ctoken, from, to, tokenIds) } -// ReceiveToken is a paid mutator transaction binding the contract method 0xa9976baf. +// ReceiveToken is a paid mutator transaction binding the contract method 0x300536b5. // -// Solidity: function receiveToken((uint256,address,string,string) ctoken, address from, address to, uint256[] tokenIds) payable returns() +// Solidity: function receiveToken((uint64,address,string,string) ctoken, address from, address to, uint256[] tokenIds) payable returns() func (_ERC721Vault *ERC721VaultTransactorSession) ReceiveToken(ctoken BaseNFTVaultCanonicalNFT, from common.Address, to common.Address, tokenIds []*big.Int) (*types.Transaction, error) { return _ERC721Vault.Contract.ReceiveToken(&_ERC721Vault.TransactOpts, ctoken, from, to, tokenIds) } @@ -718,25 +801,25 @@ func (_ERC721Vault *ERC721VaultTransactorSession) RenounceOwnership() (*types.Tr return _ERC721Vault.Contract.RenounceOwnership(&_ERC721Vault.TransactOpts) } -// SendToken is a paid mutator transaction binding the contract method 0x73339643. +// SendToken is a paid mutator transaction binding the contract method 0x48b2772e. // -// Solidity: function sendToken((uint256,address,address,uint256[],uint256[],uint256,uint256,address,string) opt) payable returns() -func (_ERC721Vault *ERC721VaultTransactor) SendToken(opts *bind.TransactOpts, opt BaseNFTVaultBridgeTransferOp) (*types.Transaction, error) { - return _ERC721Vault.contract.Transact(opts, "sendToken", opt) +// Solidity: function sendToken((uint64,address,address,uint256[],uint256[],uint256,uint256,address,string) op) payable returns((uint128,address,uint64,uint64,address,address,address,uint256,uint256,uint256,bytes,string) _message) +func (_ERC721Vault *ERC721VaultTransactor) SendToken(opts *bind.TransactOpts, op BaseNFTVaultBridgeTransferOp) (*types.Transaction, error) { + return _ERC721Vault.contract.Transact(opts, "sendToken", op) } -// SendToken is a paid mutator transaction binding the contract method 0x73339643. +// SendToken is a paid mutator transaction binding the contract method 0x48b2772e. // -// Solidity: function sendToken((uint256,address,address,uint256[],uint256[],uint256,uint256,address,string) opt) payable returns() -func (_ERC721Vault *ERC721VaultSession) SendToken(opt BaseNFTVaultBridgeTransferOp) (*types.Transaction, error) { - return _ERC721Vault.Contract.SendToken(&_ERC721Vault.TransactOpts, opt) +// Solidity: function sendToken((uint64,address,address,uint256[],uint256[],uint256,uint256,address,string) op) payable returns((uint128,address,uint64,uint64,address,address,address,uint256,uint256,uint256,bytes,string) _message) +func (_ERC721Vault *ERC721VaultSession) SendToken(op BaseNFTVaultBridgeTransferOp) (*types.Transaction, error) { + return _ERC721Vault.Contract.SendToken(&_ERC721Vault.TransactOpts, op) } -// SendToken is a paid mutator transaction binding the contract method 0x73339643. +// SendToken is a paid mutator transaction binding the contract method 0x48b2772e. // -// Solidity: function sendToken((uint256,address,address,uint256[],uint256[],uint256,uint256,address,string) opt) payable returns() -func (_ERC721Vault *ERC721VaultTransactorSession) SendToken(opt BaseNFTVaultBridgeTransferOp) (*types.Transaction, error) { - return _ERC721Vault.Contract.SendToken(&_ERC721Vault.TransactOpts, opt) +// Solidity: function sendToken((uint64,address,address,uint256[],uint256[],uint256,uint256,address,string) op) payable returns((uint128,address,uint64,uint64,address,address,address,uint256,uint256,uint256,bytes,string) _message) +func (_ERC721Vault *ERC721VaultTransactorSession) SendToken(op BaseNFTVaultBridgeTransferOp) (*types.Transaction, error) { + return _ERC721Vault.Contract.SendToken(&_ERC721Vault.TransactOpts, op) } // TransferOwnership is a paid mutator transaction binding the contract method 0xf2fde38b. @@ -850,7 +933,7 @@ func (it *ERC721VaultBridgedTokenDeployedIterator) Close() error { // ERC721VaultBridgedTokenDeployed represents a BridgedTokenDeployed event raised by the ERC721Vault contract. type ERC721VaultBridgedTokenDeployed struct { - ChainId *big.Int + ChainId uint64 Ctoken common.Address Btoken common.Address CtokenSymbol string @@ -858,10 +941,10 @@ type ERC721VaultBridgedTokenDeployed struct { Raw types.Log // Blockchain specific contextual infos } -// FilterBridgedTokenDeployed is a free log retrieval operation binding the contract event 0x2da3c4d305298f6df3653c23d98b4c055f72f7e6f981b2c477ccbec92b1ee579. +// FilterBridgedTokenDeployed is a free log retrieval operation binding the contract event 0x44977f2d30fe1e3aee2c1476f2f95aaacaf34e44b9359c403da01fcc93fd751b. // -// Solidity: event BridgedTokenDeployed(uint256 indexed chainId, address indexed ctoken, address indexed btoken, string ctokenSymbol, string ctokenName) -func (_ERC721Vault *ERC721VaultFilterer) FilterBridgedTokenDeployed(opts *bind.FilterOpts, chainId []*big.Int, ctoken []common.Address, btoken []common.Address) (*ERC721VaultBridgedTokenDeployedIterator, error) { +// Solidity: event BridgedTokenDeployed(uint64 indexed chainId, address indexed ctoken, address indexed btoken, string ctokenSymbol, string ctokenName) +func (_ERC721Vault *ERC721VaultFilterer) FilterBridgedTokenDeployed(opts *bind.FilterOpts, chainId []uint64, ctoken []common.Address, btoken []common.Address) (*ERC721VaultBridgedTokenDeployedIterator, error) { var chainIdRule []interface{} for _, chainIdItem := range chainId { @@ -883,10 +966,10 @@ func (_ERC721Vault *ERC721VaultFilterer) FilterBridgedTokenDeployed(opts *bind.F return &ERC721VaultBridgedTokenDeployedIterator{contract: _ERC721Vault.contract, event: "BridgedTokenDeployed", logs: logs, sub: sub}, nil } -// WatchBridgedTokenDeployed is a free log subscription operation binding the contract event 0x2da3c4d305298f6df3653c23d98b4c055f72f7e6f981b2c477ccbec92b1ee579. +// WatchBridgedTokenDeployed is a free log subscription operation binding the contract event 0x44977f2d30fe1e3aee2c1476f2f95aaacaf34e44b9359c403da01fcc93fd751b. // -// Solidity: event BridgedTokenDeployed(uint256 indexed chainId, address indexed ctoken, address indexed btoken, string ctokenSymbol, string ctokenName) -func (_ERC721Vault *ERC721VaultFilterer) WatchBridgedTokenDeployed(opts *bind.WatchOpts, sink chan<- *ERC721VaultBridgedTokenDeployed, chainId []*big.Int, ctoken []common.Address, btoken []common.Address) (event.Subscription, error) { +// Solidity: event BridgedTokenDeployed(uint64 indexed chainId, address indexed ctoken, address indexed btoken, string ctokenSymbol, string ctokenName) +func (_ERC721Vault *ERC721VaultFilterer) WatchBridgedTokenDeployed(opts *bind.WatchOpts, sink chan<- *ERC721VaultBridgedTokenDeployed, chainId []uint64, ctoken []common.Address, btoken []common.Address) (event.Subscription, error) { var chainIdRule []interface{} for _, chainIdItem := range chainId { @@ -933,9 +1016,9 @@ func (_ERC721Vault *ERC721VaultFilterer) WatchBridgedTokenDeployed(opts *bind.Wa }), nil } -// ParseBridgedTokenDeployed is a log parse operation binding the contract event 0x2da3c4d305298f6df3653c23d98b4c055f72f7e6f981b2c477ccbec92b1ee579. +// ParseBridgedTokenDeployed is a log parse operation binding the contract event 0x44977f2d30fe1e3aee2c1476f2f95aaacaf34e44b9359c403da01fcc93fd751b. // -// Solidity: event BridgedTokenDeployed(uint256 indexed chainId, address indexed ctoken, address indexed btoken, string ctokenSymbol, string ctokenName) +// Solidity: event BridgedTokenDeployed(uint64 indexed chainId, address indexed ctoken, address indexed btoken, string ctokenSymbol, string ctokenName) func (_ERC721Vault *ERC721VaultFilterer) ParseBridgedTokenDeployed(log types.Log) (*ERC721VaultBridgedTokenDeployed, error) { event := new(ERC721VaultBridgedTokenDeployed) if err := _ERC721Vault.contract.UnpackLog(event, "BridgedTokenDeployed", log); err != nil { @@ -1079,6 +1162,159 @@ func (_ERC721Vault *ERC721VaultFilterer) ParseInitialized(log types.Log) (*ERC72 return event, nil } +// ERC721VaultOwnershipTransferStartedIterator is returned from FilterOwnershipTransferStarted and is used to iterate over the raw logs and unpacked data for OwnershipTransferStarted events raised by the ERC721Vault contract. +type ERC721VaultOwnershipTransferStartedIterator struct { + Event *ERC721VaultOwnershipTransferStarted // Event containing the contract specifics and raw log + + contract *bind.BoundContract // Generic contract to use for unpacking event data + event string // Event name to use for unpacking event data + + logs chan types.Log // Log channel receiving the found contract events + sub ethereum.Subscription // Subscription for errors, completion and termination + done bool // Whether the subscription completed delivering logs + fail error // Occurred error to stop iteration +} + +// Next advances the iterator to the subsequent event, returning whether there +// are any more events found. In case of a retrieval or parsing error, false is +// returned and Error() can be queried for the exact failure. +func (it *ERC721VaultOwnershipTransferStartedIterator) Next() bool { + // If the iterator failed, stop iterating + if it.fail != nil { + return false + } + // If the iterator completed, deliver directly whatever's available + if it.done { + select { + case log := <-it.logs: + it.Event = new(ERC721VaultOwnershipTransferStarted) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + default: + return false + } + } + // Iterator still in progress, wait for either a data or an error event + select { + case log := <-it.logs: + it.Event = new(ERC721VaultOwnershipTransferStarted) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + case err := <-it.sub.Err(): + it.done = true + it.fail = err + return it.Next() + } +} + +// Error returns any retrieval or parsing error occurred during filtering. +func (it *ERC721VaultOwnershipTransferStartedIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *ERC721VaultOwnershipTransferStartedIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// ERC721VaultOwnershipTransferStarted represents a OwnershipTransferStarted event raised by the ERC721Vault contract. +type ERC721VaultOwnershipTransferStarted struct { + PreviousOwner common.Address + NewOwner common.Address + Raw types.Log // Blockchain specific contextual infos +} + +// FilterOwnershipTransferStarted is a free log retrieval operation binding the contract event 0x38d16b8cac22d99fc7c124b9cd0de2d3fa1faef420bfe791d8c362d765e22700. +// +// Solidity: event OwnershipTransferStarted(address indexed previousOwner, address indexed newOwner) +func (_ERC721Vault *ERC721VaultFilterer) FilterOwnershipTransferStarted(opts *bind.FilterOpts, previousOwner []common.Address, newOwner []common.Address) (*ERC721VaultOwnershipTransferStartedIterator, error) { + + var previousOwnerRule []interface{} + for _, previousOwnerItem := range previousOwner { + previousOwnerRule = append(previousOwnerRule, previousOwnerItem) + } + var newOwnerRule []interface{} + for _, newOwnerItem := range newOwner { + newOwnerRule = append(newOwnerRule, newOwnerItem) + } + + logs, sub, err := _ERC721Vault.contract.FilterLogs(opts, "OwnershipTransferStarted", previousOwnerRule, newOwnerRule) + if err != nil { + return nil, err + } + return &ERC721VaultOwnershipTransferStartedIterator{contract: _ERC721Vault.contract, event: "OwnershipTransferStarted", logs: logs, sub: sub}, nil +} + +// WatchOwnershipTransferStarted is a free log subscription operation binding the contract event 0x38d16b8cac22d99fc7c124b9cd0de2d3fa1faef420bfe791d8c362d765e22700. +// +// Solidity: event OwnershipTransferStarted(address indexed previousOwner, address indexed newOwner) +func (_ERC721Vault *ERC721VaultFilterer) WatchOwnershipTransferStarted(opts *bind.WatchOpts, sink chan<- *ERC721VaultOwnershipTransferStarted, previousOwner []common.Address, newOwner []common.Address) (event.Subscription, error) { + + var previousOwnerRule []interface{} + for _, previousOwnerItem := range previousOwner { + previousOwnerRule = append(previousOwnerRule, previousOwnerItem) + } + var newOwnerRule []interface{} + for _, newOwnerItem := range newOwner { + newOwnerRule = append(newOwnerRule, newOwnerItem) + } + + logs, sub, err := _ERC721Vault.contract.WatchLogs(opts, "OwnershipTransferStarted", previousOwnerRule, newOwnerRule) + if err != nil { + return nil, err + } + return event.NewSubscription(func(quit <-chan struct{}) error { + defer sub.Unsubscribe() + for { + select { + case log := <-logs: + // New log arrived, parse the event and forward to the user + event := new(ERC721VaultOwnershipTransferStarted) + if err := _ERC721Vault.contract.UnpackLog(event, "OwnershipTransferStarted", log); err != nil { + return err + } + event.Raw = log + + select { + case sink <- event: + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + } + }), nil +} + +// ParseOwnershipTransferStarted is a log parse operation binding the contract event 0x38d16b8cac22d99fc7c124b9cd0de2d3fa1faef420bfe791d8c362d765e22700. +// +// Solidity: event OwnershipTransferStarted(address indexed previousOwner, address indexed newOwner) +func (_ERC721Vault *ERC721VaultFilterer) ParseOwnershipTransferStarted(log types.Log) (*ERC721VaultOwnershipTransferStarted, error) { + event := new(ERC721VaultOwnershipTransferStarted) + if err := _ERC721Vault.contract.UnpackLog(event, "OwnershipTransferStarted", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} + // ERC721VaultOwnershipTransferredIterator is returned from FilterOwnershipTransferred and is used to iterate over the raw logs and unpacked data for OwnershipTransferred events raised by the ERC721Vault contract. type ERC721VaultOwnershipTransferredIterator struct { Event *ERC721VaultOwnershipTransferred // Event containing the contract specifics and raw log @@ -1438,16 +1674,16 @@ type ERC721VaultTokenReceived struct { MsgHash [32]byte From common.Address To common.Address - SrcChainId *big.Int + SrcChainId uint64 Token common.Address TokenIds []*big.Int Amounts []*big.Int Raw types.Log // Blockchain specific contextual infos } -// FilterTokenReceived is a free log retrieval operation binding the contract event 0x0f60c37489e435ed8490c30b01c1fa57e62510e88b351b75796ad3d95babe6b1. +// FilterTokenReceived is a free log retrieval operation binding the contract event 0x8a4d138c7a19e12f6cdedfca02085820b0b1f5a9655c7a8b784f1d534347f247. // -// Solidity: event TokenReceived(bytes32 indexed msgHash, address indexed from, address indexed to, uint256 srcChainId, address token, uint256[] tokenIds, uint256[] amounts) +// Solidity: event TokenReceived(bytes32 indexed msgHash, address indexed from, address indexed to, uint64 srcChainId, address token, uint256[] tokenIds, uint256[] amounts) func (_ERC721Vault *ERC721VaultFilterer) FilterTokenReceived(opts *bind.FilterOpts, msgHash [][32]byte, from []common.Address, to []common.Address) (*ERC721VaultTokenReceivedIterator, error) { var msgHashRule []interface{} @@ -1470,9 +1706,9 @@ func (_ERC721Vault *ERC721VaultFilterer) FilterTokenReceived(opts *bind.FilterOp return &ERC721VaultTokenReceivedIterator{contract: _ERC721Vault.contract, event: "TokenReceived", logs: logs, sub: sub}, nil } -// WatchTokenReceived is a free log subscription operation binding the contract event 0x0f60c37489e435ed8490c30b01c1fa57e62510e88b351b75796ad3d95babe6b1. +// WatchTokenReceived is a free log subscription operation binding the contract event 0x8a4d138c7a19e12f6cdedfca02085820b0b1f5a9655c7a8b784f1d534347f247. // -// Solidity: event TokenReceived(bytes32 indexed msgHash, address indexed from, address indexed to, uint256 srcChainId, address token, uint256[] tokenIds, uint256[] amounts) +// Solidity: event TokenReceived(bytes32 indexed msgHash, address indexed from, address indexed to, uint64 srcChainId, address token, uint256[] tokenIds, uint256[] amounts) func (_ERC721Vault *ERC721VaultFilterer) WatchTokenReceived(opts *bind.WatchOpts, sink chan<- *ERC721VaultTokenReceived, msgHash [][32]byte, from []common.Address, to []common.Address) (event.Subscription, error) { var msgHashRule []interface{} @@ -1520,9 +1756,9 @@ func (_ERC721Vault *ERC721VaultFilterer) WatchTokenReceived(opts *bind.WatchOpts }), nil } -// ParseTokenReceived is a log parse operation binding the contract event 0x0f60c37489e435ed8490c30b01c1fa57e62510e88b351b75796ad3d95babe6b1. +// ParseTokenReceived is a log parse operation binding the contract event 0x8a4d138c7a19e12f6cdedfca02085820b0b1f5a9655c7a8b784f1d534347f247. // -// Solidity: event TokenReceived(bytes32 indexed msgHash, address indexed from, address indexed to, uint256 srcChainId, address token, uint256[] tokenIds, uint256[] amounts) +// Solidity: event TokenReceived(bytes32 indexed msgHash, address indexed from, address indexed to, uint64 srcChainId, address token, uint256[] tokenIds, uint256[] amounts) func (_ERC721Vault *ERC721VaultFilterer) ParseTokenReceived(log types.Log) (*ERC721VaultTokenReceived, error) { event := new(ERC721VaultTokenReceived) if err := _ERC721Vault.contract.UnpackLog(event, "TokenReceived", log); err != nil { @@ -1760,16 +1996,16 @@ type ERC721VaultTokenSent struct { MsgHash [32]byte From common.Address To common.Address - DestChainId *big.Int + DestChainId uint64 Token common.Address TokenIds []*big.Int Amounts []*big.Int Raw types.Log // Blockchain specific contextual infos } -// FilterTokenSent is a free log retrieval operation binding the contract event 0x5e54276405062454e6226625b28a6fea0a838d6b054e38955667234afb3345a3. +// FilterTokenSent is a free log retrieval operation binding the contract event 0x329b657c35d4e2dfede6ef5132869accb1f8542912a40f9a854b4a917ffae2e9. // -// Solidity: event TokenSent(bytes32 indexed msgHash, address indexed from, address indexed to, uint256 destChainId, address token, uint256[] tokenIds, uint256[] amounts) +// Solidity: event TokenSent(bytes32 indexed msgHash, address indexed from, address indexed to, uint64 destChainId, address token, uint256[] tokenIds, uint256[] amounts) func (_ERC721Vault *ERC721VaultFilterer) FilterTokenSent(opts *bind.FilterOpts, msgHash [][32]byte, from []common.Address, to []common.Address) (*ERC721VaultTokenSentIterator, error) { var msgHashRule []interface{} @@ -1792,9 +2028,9 @@ func (_ERC721Vault *ERC721VaultFilterer) FilterTokenSent(opts *bind.FilterOpts, return &ERC721VaultTokenSentIterator{contract: _ERC721Vault.contract, event: "TokenSent", logs: logs, sub: sub}, nil } -// WatchTokenSent is a free log subscription operation binding the contract event 0x5e54276405062454e6226625b28a6fea0a838d6b054e38955667234afb3345a3. +// WatchTokenSent is a free log subscription operation binding the contract event 0x329b657c35d4e2dfede6ef5132869accb1f8542912a40f9a854b4a917ffae2e9. // -// Solidity: event TokenSent(bytes32 indexed msgHash, address indexed from, address indexed to, uint256 destChainId, address token, uint256[] tokenIds, uint256[] amounts) +// Solidity: event TokenSent(bytes32 indexed msgHash, address indexed from, address indexed to, uint64 destChainId, address token, uint256[] tokenIds, uint256[] amounts) func (_ERC721Vault *ERC721VaultFilterer) WatchTokenSent(opts *bind.WatchOpts, sink chan<- *ERC721VaultTokenSent, msgHash [][32]byte, from []common.Address, to []common.Address) (event.Subscription, error) { var msgHashRule []interface{} @@ -1842,9 +2078,9 @@ func (_ERC721Vault *ERC721VaultFilterer) WatchTokenSent(opts *bind.WatchOpts, si }), nil } -// ParseTokenSent is a log parse operation binding the contract event 0x5e54276405062454e6226625b28a6fea0a838d6b054e38955667234afb3345a3. +// ParseTokenSent is a log parse operation binding the contract event 0x329b657c35d4e2dfede6ef5132869accb1f8542912a40f9a854b4a917ffae2e9. // -// Solidity: event TokenSent(bytes32 indexed msgHash, address indexed from, address indexed to, uint256 destChainId, address token, uint256[] tokenIds, uint256[] amounts) +// Solidity: event TokenSent(bytes32 indexed msgHash, address indexed from, address indexed to, uint64 destChainId, address token, uint256[] tokenIds, uint256[] amounts) func (_ERC721Vault *ERC721VaultFilterer) ParseTokenSent(log types.Log) (*ERC721VaultTokenSent, error) { event := new(ERC721VaultTokenSent) if err := _ERC721Vault.contract.UnpackLog(event, "TokenSent", log); err != nil { diff --git a/packages/relayer/bindings/icrosschainsync/ICrossChainSync.go b/packages/relayer/bindings/icrosschainsync/ICrossChainSync.go index 0f4c38f33c..7ae4a8cdf9 100644 --- a/packages/relayer/bindings/icrosschainsync/ICrossChainSync.go +++ b/packages/relayer/bindings/icrosschainsync/ICrossChainSync.go @@ -31,13 +31,15 @@ var ( // ICrossChainSyncSnippet is an auto generated low-level Go binding around an user-defined struct. type ICrossChainSyncSnippet struct { - BlockHash [32]byte - SignalRoot [32]byte + RemoteBlockId uint64 + SyncedInBlock uint64 + BlockHash [32]byte + SignalRoot [32]byte } // ICrossChainSyncMetaData contains all meta data concerning the ICrossChainSync contract. var ICrossChainSyncMetaData = &bind.MetaData{ - ABI: "[{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint64\",\"name\":\"srcHeight\",\"type\":\"uint64\"},{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"blockHash\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"signalRoot\",\"type\":\"bytes32\"}],\"name\":\"CrossChainSynced\",\"type\":\"event\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"blockId\",\"type\":\"uint64\"}],\"name\":\"getSyncedSnippet\",\"outputs\":[{\"components\":[{\"internalType\":\"bytes32\",\"name\":\"blockHash\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"signalRoot\",\"type\":\"bytes32\"}],\"internalType\":\"structICrossChainSync.Snippet\",\"name\":\"snippet\",\"type\":\"tuple\"}],\"stateMutability\":\"view\",\"type\":\"function\"}]", + ABI: "[{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint64\",\"name\":\"remoteBlockId\",\"type\":\"uint64\"},{\"indexed\":false,\"internalType\":\"uint64\",\"name\":\"syncedInBlock\",\"type\":\"uint64\"},{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"blockHash\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"signalRoot\",\"type\":\"bytes32\"}],\"name\":\"CrossChainSynced\",\"type\":\"event\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"blockId\",\"type\":\"uint64\"}],\"name\":\"getSyncedSnippet\",\"outputs\":[{\"components\":[{\"internalType\":\"uint64\",\"name\":\"remoteBlockId\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"syncedInBlock\",\"type\":\"uint64\"},{\"internalType\":\"bytes32\",\"name\":\"blockHash\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"signalRoot\",\"type\":\"bytes32\"}],\"internalType\":\"structICrossChainSync.Snippet\",\"name\":\"snippet\",\"type\":\"tuple\"}],\"stateMutability\":\"view\",\"type\":\"function\"}]", } // ICrossChainSyncABI is the input ABI used to generate the binding from. @@ -188,7 +190,7 @@ func (_ICrossChainSync *ICrossChainSyncTransactorRaw) Transact(opts *bind.Transa // GetSyncedSnippet is a free data retrieval call binding the contract method 0x8cfb0459. // -// Solidity: function getSyncedSnippet(uint64 blockId) view returns((bytes32,bytes32) snippet) +// Solidity: function getSyncedSnippet(uint64 blockId) view returns((uint64,uint64,bytes32,bytes32) snippet) func (_ICrossChainSync *ICrossChainSyncCaller) GetSyncedSnippet(opts *bind.CallOpts, blockId uint64) (ICrossChainSyncSnippet, error) { var out []interface{} err := _ICrossChainSync.contract.Call(opts, &out, "getSyncedSnippet", blockId) @@ -205,14 +207,14 @@ func (_ICrossChainSync *ICrossChainSyncCaller) GetSyncedSnippet(opts *bind.CallO // GetSyncedSnippet is a free data retrieval call binding the contract method 0x8cfb0459. // -// Solidity: function getSyncedSnippet(uint64 blockId) view returns((bytes32,bytes32) snippet) +// Solidity: function getSyncedSnippet(uint64 blockId) view returns((uint64,uint64,bytes32,bytes32) snippet) func (_ICrossChainSync *ICrossChainSyncSession) GetSyncedSnippet(blockId uint64) (ICrossChainSyncSnippet, error) { return _ICrossChainSync.Contract.GetSyncedSnippet(&_ICrossChainSync.CallOpts, blockId) } // GetSyncedSnippet is a free data retrieval call binding the contract method 0x8cfb0459. // -// Solidity: function getSyncedSnippet(uint64 blockId) view returns((bytes32,bytes32) snippet) +// Solidity: function getSyncedSnippet(uint64 blockId) view returns((uint64,uint64,bytes32,bytes32) snippet) func (_ICrossChainSync *ICrossChainSyncCallerSession) GetSyncedSnippet(blockId uint64) (ICrossChainSyncSnippet, error) { return _ICrossChainSync.Contract.GetSyncedSnippet(&_ICrossChainSync.CallOpts, blockId) } @@ -286,40 +288,41 @@ func (it *ICrossChainSyncCrossChainSyncedIterator) Close() error { // ICrossChainSyncCrossChainSynced represents a CrossChainSynced event raised by the ICrossChainSync contract. type ICrossChainSyncCrossChainSynced struct { - SrcHeight uint64 - BlockHash [32]byte - SignalRoot [32]byte - Raw types.Log // Blockchain specific contextual infos + RemoteBlockId uint64 + SyncedInBlock uint64 + BlockHash [32]byte + SignalRoot [32]byte + Raw types.Log // Blockchain specific contextual infos } -// FilterCrossChainSynced is a free log retrieval operation binding the contract event 0x004ce985b8852a486571d0545799251fd671adcf33b7854a5f0f6a6a2431a555. +// FilterCrossChainSynced is a free log retrieval operation binding the contract event 0xf35ec3b262cf74881db1b8051c635496bccb1497a1e776dacb463d0e0e2b0f51. // -// Solidity: event CrossChainSynced(uint64 indexed srcHeight, bytes32 blockHash, bytes32 signalRoot) -func (_ICrossChainSync *ICrossChainSyncFilterer) FilterCrossChainSynced(opts *bind.FilterOpts, srcHeight []uint64) (*ICrossChainSyncCrossChainSyncedIterator, error) { +// Solidity: event CrossChainSynced(uint64 indexed remoteBlockId, uint64 syncedInBlock, bytes32 blockHash, bytes32 signalRoot) +func (_ICrossChainSync *ICrossChainSyncFilterer) FilterCrossChainSynced(opts *bind.FilterOpts, remoteBlockId []uint64) (*ICrossChainSyncCrossChainSyncedIterator, error) { - var srcHeightRule []interface{} - for _, srcHeightItem := range srcHeight { - srcHeightRule = append(srcHeightRule, srcHeightItem) + var remoteBlockIdRule []interface{} + for _, remoteBlockIdItem := range remoteBlockId { + remoteBlockIdRule = append(remoteBlockIdRule, remoteBlockIdItem) } - logs, sub, err := _ICrossChainSync.contract.FilterLogs(opts, "CrossChainSynced", srcHeightRule) + logs, sub, err := _ICrossChainSync.contract.FilterLogs(opts, "CrossChainSynced", remoteBlockIdRule) if err != nil { return nil, err } return &ICrossChainSyncCrossChainSyncedIterator{contract: _ICrossChainSync.contract, event: "CrossChainSynced", logs: logs, sub: sub}, nil } -// WatchCrossChainSynced is a free log subscription operation binding the contract event 0x004ce985b8852a486571d0545799251fd671adcf33b7854a5f0f6a6a2431a555. +// WatchCrossChainSynced is a free log subscription operation binding the contract event 0xf35ec3b262cf74881db1b8051c635496bccb1497a1e776dacb463d0e0e2b0f51. // -// Solidity: event CrossChainSynced(uint64 indexed srcHeight, bytes32 blockHash, bytes32 signalRoot) -func (_ICrossChainSync *ICrossChainSyncFilterer) WatchCrossChainSynced(opts *bind.WatchOpts, sink chan<- *ICrossChainSyncCrossChainSynced, srcHeight []uint64) (event.Subscription, error) { +// Solidity: event CrossChainSynced(uint64 indexed remoteBlockId, uint64 syncedInBlock, bytes32 blockHash, bytes32 signalRoot) +func (_ICrossChainSync *ICrossChainSyncFilterer) WatchCrossChainSynced(opts *bind.WatchOpts, sink chan<- *ICrossChainSyncCrossChainSynced, remoteBlockId []uint64) (event.Subscription, error) { - var srcHeightRule []interface{} - for _, srcHeightItem := range srcHeight { - srcHeightRule = append(srcHeightRule, srcHeightItem) + var remoteBlockIdRule []interface{} + for _, remoteBlockIdItem := range remoteBlockId { + remoteBlockIdRule = append(remoteBlockIdRule, remoteBlockIdItem) } - logs, sub, err := _ICrossChainSync.contract.WatchLogs(opts, "CrossChainSynced", srcHeightRule) + logs, sub, err := _ICrossChainSync.contract.WatchLogs(opts, "CrossChainSynced", remoteBlockIdRule) if err != nil { return nil, err } @@ -351,9 +354,9 @@ func (_ICrossChainSync *ICrossChainSyncFilterer) WatchCrossChainSynced(opts *bin }), nil } -// ParseCrossChainSynced is a log parse operation binding the contract event 0x004ce985b8852a486571d0545799251fd671adcf33b7854a5f0f6a6a2431a555. +// ParseCrossChainSynced is a log parse operation binding the contract event 0xf35ec3b262cf74881db1b8051c635496bccb1497a1e776dacb463d0e0e2b0f51. // -// Solidity: event CrossChainSynced(uint64 indexed srcHeight, bytes32 blockHash, bytes32 signalRoot) +// Solidity: event CrossChainSynced(uint64 indexed remoteBlockId, uint64 syncedInBlock, bytes32 blockHash, bytes32 signalRoot) func (_ICrossChainSync *ICrossChainSyncFilterer) ParseCrossChainSynced(log types.Log) (*ICrossChainSyncCrossChainSynced, error) { event := new(ICrossChainSyncCrossChainSynced) if err := _ICrossChainSync.contract.UnpackLog(event, "CrossChainSynced", log); err != nil { diff --git a/packages/relayer/bindings/signalservice/SignalService.go b/packages/relayer/bindings/signalservice/SignalService.go index a7828a854c..65354b93d7 100644 --- a/packages/relayer/bindings/signalservice/SignalService.go +++ b/packages/relayer/bindings/signalservice/SignalService.go @@ -31,7 +31,7 @@ var ( // SignalServiceMetaData contains all meta data concerning the SignalService contract. var SignalServiceMetaData = &bind.MetaData{ - ABI: "[{\"inputs\":[],\"name\":\"INVALID_PAUSE_STATUS\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"REENTRANT_CALL\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"RESOLVER_DENIED\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"RESOLVER_INVALID_MANAGER\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"chainId\",\"type\":\"uint256\"},{\"internalType\":\"bytes32\",\"name\":\"name\",\"type\":\"bytes32\"}],\"name\":\"RESOLVER_ZERO_ADDR\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"SS_INVALID_APP\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"SS_INVALID_SIGNAL\",\"type\":\"error\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint8\",\"name\":\"version\",\"type\":\"uint8\"}],\"name\":\"Initialized\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"previousOwner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"newOwner\",\"type\":\"address\"}],\"name\":\"OwnershipTransferred\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"Paused\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"Unpaused\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"addressManager\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"chainId\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"app\",\"type\":\"address\"},{\"internalType\":\"bytes32\",\"name\":\"signal\",\"type\":\"bytes32\"}],\"name\":\"getSignalSlot\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_addressManager\",\"type\":\"address\"}],\"name\":\"init\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"app\",\"type\":\"address\"},{\"internalType\":\"bytes32\",\"name\":\"signal\",\"type\":\"bytes32\"}],\"name\":\"isSignalSent\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"owner\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"pause\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"paused\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"srcChainId\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"app\",\"type\":\"address\"},{\"internalType\":\"bytes32\",\"name\":\"signal\",\"type\":\"bytes32\"},{\"internalType\":\"bytes\",\"name\":\"proof\",\"type\":\"bytes\"}],\"name\":\"proveSignalReceived\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"renounceOwnership\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"chainId\",\"type\":\"uint256\"},{\"internalType\":\"bytes32\",\"name\":\"name\",\"type\":\"bytes32\"},{\"internalType\":\"bool\",\"name\":\"allowZeroAddress\",\"type\":\"bool\"}],\"name\":\"resolve\",\"outputs\":[{\"internalType\":\"addresspayable\",\"name\":\"addr\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"name\",\"type\":\"bytes32\"},{\"internalType\":\"bool\",\"name\":\"allowZeroAddress\",\"type\":\"bool\"}],\"name\":\"resolve\",\"outputs\":[{\"internalType\":\"addresspayable\",\"name\":\"addr\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"signal\",\"type\":\"bytes32\"}],\"name\":\"sendSignal\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"slot\",\"type\":\"bytes32\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"skipProofCheck\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"newOwner\",\"type\":\"address\"}],\"name\":\"transferOwnership\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"unpause\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}]", + ABI: "[{\"inputs\":[],\"name\":\"ADDRESS_UNAUTHORIZED\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"INVALID_ADDRESS\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"INVALID_LABEL\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"INVALID_PAUSE_STATUS\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"REENTRANT_CALL\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"RESOLVER_DENIED\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"RESOLVER_INVALID_MANAGER\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"RESOLVER_UNEXPECTED_CHAINID\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"chainId\",\"type\":\"uint64\"},{\"internalType\":\"string\",\"name\":\"name\",\"type\":\"string\"}],\"name\":\"RESOLVER_ZERO_ADDR\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"SS_INVALID_APP\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"SS_INVALID_SIGNAL\",\"type\":\"error\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"addr\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"oldLabel\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"newLabel\",\"type\":\"bytes32\"}],\"name\":\"Authorized\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint8\",\"name\":\"version\",\"type\":\"uint8\"}],\"name\":\"Initialized\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"previousOwner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"newOwner\",\"type\":\"address\"}],\"name\":\"OwnershipTransferStarted\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"previousOwner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"newOwner\",\"type\":\"address\"}],\"name\":\"OwnershipTransferred\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"Paused\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"Unpaused\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"acceptOwnership\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"addressManager\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"addr\",\"type\":\"address\"},{\"internalType\":\"bytes32\",\"name\":\"label\",\"type\":\"bytes32\"}],\"name\":\"authorize\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"name\":\"authorizedAddresses\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"label\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"chainId\",\"type\":\"uint64\"},{\"internalType\":\"address\",\"name\":\"app\",\"type\":\"address\"},{\"internalType\":\"bytes32\",\"name\":\"signal\",\"type\":\"bytes32\"}],\"name\":\"getSignalSlot\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"init\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"addr\",\"type\":\"address\"}],\"name\":\"isAuthorized\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"addr\",\"type\":\"address\"},{\"internalType\":\"bytes32\",\"name\":\"label\",\"type\":\"bytes32\"}],\"name\":\"isAuthorizedAs\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"app\",\"type\":\"address\"},{\"internalType\":\"bytes32\",\"name\":\"signal\",\"type\":\"bytes32\"}],\"name\":\"isSignalSent\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"owner\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"pause\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"paused\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"pendingOwner\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"srcChainId\",\"type\":\"uint64\"},{\"internalType\":\"address\",\"name\":\"app\",\"type\":\"address\"},{\"internalType\":\"bytes32\",\"name\":\"signal\",\"type\":\"bytes32\"},{\"internalType\":\"bytes\",\"name\":\"proof\",\"type\":\"bytes\"}],\"name\":\"proveSignalReceived\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"renounceOwnership\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"chainId\",\"type\":\"uint64\"},{\"internalType\":\"bytes32\",\"name\":\"name\",\"type\":\"bytes32\"},{\"internalType\":\"bool\",\"name\":\"allowZeroAddress\",\"type\":\"bool\"}],\"name\":\"resolve\",\"outputs\":[{\"internalType\":\"addresspayable\",\"name\":\"addr\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"name\",\"type\":\"bytes32\"},{\"internalType\":\"bool\",\"name\":\"allowZeroAddress\",\"type\":\"bool\"}],\"name\":\"resolve\",\"outputs\":[{\"internalType\":\"addresspayable\",\"name\":\"addr\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"signal\",\"type\":\"bytes32\"}],\"name\":\"sendSignal\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"slot\",\"type\":\"bytes32\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"skipProofCheck\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"newOwner\",\"type\":\"address\"}],\"name\":\"transferOwnership\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"unpause\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}]", } // SignalServiceABI is the input ABI used to generate the binding from. @@ -211,10 +211,41 @@ func (_SignalService *SignalServiceCallerSession) AddressManager() (common.Addre return _SignalService.Contract.AddressManager(&_SignalService.CallOpts) } -// GetSignalSlot is a free data retrieval call binding the contract method 0x850fd955. +// AuthorizedAddresses is a free data retrieval call binding the contract method 0xf19e207e. // -// Solidity: function getSignalSlot(uint256 chainId, address app, bytes32 signal) pure returns(bytes32) -func (_SignalService *SignalServiceCaller) GetSignalSlot(opts *bind.CallOpts, chainId *big.Int, app common.Address, signal [32]byte) ([32]byte, error) { +// Solidity: function authorizedAddresses(address ) view returns(bytes32 label) +func (_SignalService *SignalServiceCaller) AuthorizedAddresses(opts *bind.CallOpts, arg0 common.Address) ([32]byte, error) { + var out []interface{} + err := _SignalService.contract.Call(opts, &out, "authorizedAddresses", arg0) + + if err != nil { + return *new([32]byte), err + } + + out0 := *abi.ConvertType(out[0], new([32]byte)).(*[32]byte) + + return out0, err + +} + +// AuthorizedAddresses is a free data retrieval call binding the contract method 0xf19e207e. +// +// Solidity: function authorizedAddresses(address ) view returns(bytes32 label) +func (_SignalService *SignalServiceSession) AuthorizedAddresses(arg0 common.Address) ([32]byte, error) { + return _SignalService.Contract.AuthorizedAddresses(&_SignalService.CallOpts, arg0) +} + +// AuthorizedAddresses is a free data retrieval call binding the contract method 0xf19e207e. +// +// Solidity: function authorizedAddresses(address ) view returns(bytes32 label) +func (_SignalService *SignalServiceCallerSession) AuthorizedAddresses(arg0 common.Address) ([32]byte, error) { + return _SignalService.Contract.AuthorizedAddresses(&_SignalService.CallOpts, arg0) +} + +// GetSignalSlot is a free data retrieval call binding the contract method 0x91f3f74b. +// +// Solidity: function getSignalSlot(uint64 chainId, address app, bytes32 signal) pure returns(bytes32) +func (_SignalService *SignalServiceCaller) GetSignalSlot(opts *bind.CallOpts, chainId uint64, app common.Address, signal [32]byte) ([32]byte, error) { var out []interface{} err := _SignalService.contract.Call(opts, &out, "getSignalSlot", chainId, app, signal) @@ -228,20 +259,82 @@ func (_SignalService *SignalServiceCaller) GetSignalSlot(opts *bind.CallOpts, ch } -// GetSignalSlot is a free data retrieval call binding the contract method 0x850fd955. +// GetSignalSlot is a free data retrieval call binding the contract method 0x91f3f74b. // -// Solidity: function getSignalSlot(uint256 chainId, address app, bytes32 signal) pure returns(bytes32) -func (_SignalService *SignalServiceSession) GetSignalSlot(chainId *big.Int, app common.Address, signal [32]byte) ([32]byte, error) { +// Solidity: function getSignalSlot(uint64 chainId, address app, bytes32 signal) pure returns(bytes32) +func (_SignalService *SignalServiceSession) GetSignalSlot(chainId uint64, app common.Address, signal [32]byte) ([32]byte, error) { return _SignalService.Contract.GetSignalSlot(&_SignalService.CallOpts, chainId, app, signal) } -// GetSignalSlot is a free data retrieval call binding the contract method 0x850fd955. +// GetSignalSlot is a free data retrieval call binding the contract method 0x91f3f74b. // -// Solidity: function getSignalSlot(uint256 chainId, address app, bytes32 signal) pure returns(bytes32) -func (_SignalService *SignalServiceCallerSession) GetSignalSlot(chainId *big.Int, app common.Address, signal [32]byte) ([32]byte, error) { +// Solidity: function getSignalSlot(uint64 chainId, address app, bytes32 signal) pure returns(bytes32) +func (_SignalService *SignalServiceCallerSession) GetSignalSlot(chainId uint64, app common.Address, signal [32]byte) ([32]byte, error) { return _SignalService.Contract.GetSignalSlot(&_SignalService.CallOpts, chainId, app, signal) } +// IsAuthorized is a free data retrieval call binding the contract method 0xfe9fbb80. +// +// Solidity: function isAuthorized(address addr) view returns(bool) +func (_SignalService *SignalServiceCaller) IsAuthorized(opts *bind.CallOpts, addr common.Address) (bool, error) { + var out []interface{} + err := _SignalService.contract.Call(opts, &out, "isAuthorized", addr) + + if err != nil { + return *new(bool), err + } + + out0 := *abi.ConvertType(out[0], new(bool)).(*bool) + + return out0, err + +} + +// IsAuthorized is a free data retrieval call binding the contract method 0xfe9fbb80. +// +// Solidity: function isAuthorized(address addr) view returns(bool) +func (_SignalService *SignalServiceSession) IsAuthorized(addr common.Address) (bool, error) { + return _SignalService.Contract.IsAuthorized(&_SignalService.CallOpts, addr) +} + +// IsAuthorized is a free data retrieval call binding the contract method 0xfe9fbb80. +// +// Solidity: function isAuthorized(address addr) view returns(bool) +func (_SignalService *SignalServiceCallerSession) IsAuthorized(addr common.Address) (bool, error) { + return _SignalService.Contract.IsAuthorized(&_SignalService.CallOpts, addr) +} + +// IsAuthorizedAs is a free data retrieval call binding the contract method 0xa354b9de. +// +// Solidity: function isAuthorizedAs(address addr, bytes32 label) view returns(bool) +func (_SignalService *SignalServiceCaller) IsAuthorizedAs(opts *bind.CallOpts, addr common.Address, label [32]byte) (bool, error) { + var out []interface{} + err := _SignalService.contract.Call(opts, &out, "isAuthorizedAs", addr, label) + + if err != nil { + return *new(bool), err + } + + out0 := *abi.ConvertType(out[0], new(bool)).(*bool) + + return out0, err + +} + +// IsAuthorizedAs is a free data retrieval call binding the contract method 0xa354b9de. +// +// Solidity: function isAuthorizedAs(address addr, bytes32 label) view returns(bool) +func (_SignalService *SignalServiceSession) IsAuthorizedAs(addr common.Address, label [32]byte) (bool, error) { + return _SignalService.Contract.IsAuthorizedAs(&_SignalService.CallOpts, addr, label) +} + +// IsAuthorizedAs is a free data retrieval call binding the contract method 0xa354b9de. +// +// Solidity: function isAuthorizedAs(address addr, bytes32 label) view returns(bool) +func (_SignalService *SignalServiceCallerSession) IsAuthorizedAs(addr common.Address, label [32]byte) (bool, error) { + return _SignalService.Contract.IsAuthorizedAs(&_SignalService.CallOpts, addr, label) +} + // IsSignalSent is a free data retrieval call binding the contract method 0x32676bc6. // // Solidity: function isSignalSent(address app, bytes32 signal) view returns(bool) @@ -335,10 +428,41 @@ func (_SignalService *SignalServiceCallerSession) Paused() (bool, error) { return _SignalService.Contract.Paused(&_SignalService.CallOpts) } -// ProveSignalReceived is a free data retrieval call binding the contract method 0x92824e90. +// PendingOwner is a free data retrieval call binding the contract method 0xe30c3978. // -// Solidity: function proveSignalReceived(uint256 srcChainId, address app, bytes32 signal, bytes proof) view returns(bool) -func (_SignalService *SignalServiceCaller) ProveSignalReceived(opts *bind.CallOpts, srcChainId *big.Int, app common.Address, signal [32]byte, proof []byte) (bool, error) { +// Solidity: function pendingOwner() view returns(address) +func (_SignalService *SignalServiceCaller) PendingOwner(opts *bind.CallOpts) (common.Address, error) { + var out []interface{} + err := _SignalService.contract.Call(opts, &out, "pendingOwner") + + if err != nil { + return *new(common.Address), err + } + + out0 := *abi.ConvertType(out[0], new(common.Address)).(*common.Address) + + return out0, err + +} + +// PendingOwner is a free data retrieval call binding the contract method 0xe30c3978. +// +// Solidity: function pendingOwner() view returns(address) +func (_SignalService *SignalServiceSession) PendingOwner() (common.Address, error) { + return _SignalService.Contract.PendingOwner(&_SignalService.CallOpts) +} + +// PendingOwner is a free data retrieval call binding the contract method 0xe30c3978. +// +// Solidity: function pendingOwner() view returns(address) +func (_SignalService *SignalServiceCallerSession) PendingOwner() (common.Address, error) { + return _SignalService.Contract.PendingOwner(&_SignalService.CallOpts) +} + +// ProveSignalReceived is a free data retrieval call binding the contract method 0x910af6ed. +// +// Solidity: function proveSignalReceived(uint64 srcChainId, address app, bytes32 signal, bytes proof) view returns(bool) +func (_SignalService *SignalServiceCaller) ProveSignalReceived(opts *bind.CallOpts, srcChainId uint64, app common.Address, signal [32]byte, proof []byte) (bool, error) { var out []interface{} err := _SignalService.contract.Call(opts, &out, "proveSignalReceived", srcChainId, app, signal, proof) @@ -352,24 +476,24 @@ func (_SignalService *SignalServiceCaller) ProveSignalReceived(opts *bind.CallOp } -// ProveSignalReceived is a free data retrieval call binding the contract method 0x92824e90. +// ProveSignalReceived is a free data retrieval call binding the contract method 0x910af6ed. // -// Solidity: function proveSignalReceived(uint256 srcChainId, address app, bytes32 signal, bytes proof) view returns(bool) -func (_SignalService *SignalServiceSession) ProveSignalReceived(srcChainId *big.Int, app common.Address, signal [32]byte, proof []byte) (bool, error) { +// Solidity: function proveSignalReceived(uint64 srcChainId, address app, bytes32 signal, bytes proof) view returns(bool) +func (_SignalService *SignalServiceSession) ProveSignalReceived(srcChainId uint64, app common.Address, signal [32]byte, proof []byte) (bool, error) { return _SignalService.Contract.ProveSignalReceived(&_SignalService.CallOpts, srcChainId, app, signal, proof) } -// ProveSignalReceived is a free data retrieval call binding the contract method 0x92824e90. +// ProveSignalReceived is a free data retrieval call binding the contract method 0x910af6ed. // -// Solidity: function proveSignalReceived(uint256 srcChainId, address app, bytes32 signal, bytes proof) view returns(bool) -func (_SignalService *SignalServiceCallerSession) ProveSignalReceived(srcChainId *big.Int, app common.Address, signal [32]byte, proof []byte) (bool, error) { +// Solidity: function proveSignalReceived(uint64 srcChainId, address app, bytes32 signal, bytes proof) view returns(bool) +func (_SignalService *SignalServiceCallerSession) ProveSignalReceived(srcChainId uint64, app common.Address, signal [32]byte, proof []byte) (bool, error) { return _SignalService.Contract.ProveSignalReceived(&_SignalService.CallOpts, srcChainId, app, signal, proof) } -// Resolve is a free data retrieval call binding the contract method 0x6c6563f6. +// Resolve is a free data retrieval call binding the contract method 0x3eb6b8cf. // -// Solidity: function resolve(uint256 chainId, bytes32 name, bool allowZeroAddress) view returns(address addr) -func (_SignalService *SignalServiceCaller) Resolve(opts *bind.CallOpts, chainId *big.Int, name [32]byte, allowZeroAddress bool) (common.Address, error) { +// Solidity: function resolve(uint64 chainId, bytes32 name, bool allowZeroAddress) view returns(address addr) +func (_SignalService *SignalServiceCaller) Resolve(opts *bind.CallOpts, chainId uint64, name [32]byte, allowZeroAddress bool) (common.Address, error) { var out []interface{} err := _SignalService.contract.Call(opts, &out, "resolve", chainId, name, allowZeroAddress) @@ -383,17 +507,17 @@ func (_SignalService *SignalServiceCaller) Resolve(opts *bind.CallOpts, chainId } -// Resolve is a free data retrieval call binding the contract method 0x6c6563f6. +// Resolve is a free data retrieval call binding the contract method 0x3eb6b8cf. // -// Solidity: function resolve(uint256 chainId, bytes32 name, bool allowZeroAddress) view returns(address addr) -func (_SignalService *SignalServiceSession) Resolve(chainId *big.Int, name [32]byte, allowZeroAddress bool) (common.Address, error) { +// Solidity: function resolve(uint64 chainId, bytes32 name, bool allowZeroAddress) view returns(address addr) +func (_SignalService *SignalServiceSession) Resolve(chainId uint64, name [32]byte, allowZeroAddress bool) (common.Address, error) { return _SignalService.Contract.Resolve(&_SignalService.CallOpts, chainId, name, allowZeroAddress) } -// Resolve is a free data retrieval call binding the contract method 0x6c6563f6. +// Resolve is a free data retrieval call binding the contract method 0x3eb6b8cf. // -// Solidity: function resolve(uint256 chainId, bytes32 name, bool allowZeroAddress) view returns(address addr) -func (_SignalService *SignalServiceCallerSession) Resolve(chainId *big.Int, name [32]byte, allowZeroAddress bool) (common.Address, error) { +// Solidity: function resolve(uint64 chainId, bytes32 name, bool allowZeroAddress) view returns(address addr) +func (_SignalService *SignalServiceCallerSession) Resolve(chainId uint64, name [32]byte, allowZeroAddress bool) (common.Address, error) { return _SignalService.Contract.Resolve(&_SignalService.CallOpts, chainId, name, allowZeroAddress) } @@ -459,25 +583,67 @@ func (_SignalService *SignalServiceCallerSession) SkipProofCheck() (bool, error) return _SignalService.Contract.SkipProofCheck(&_SignalService.CallOpts) } -// Init is a paid mutator transaction binding the contract method 0x19ab453c. +// AcceptOwnership is a paid mutator transaction binding the contract method 0x79ba5097. +// +// Solidity: function acceptOwnership() returns() +func (_SignalService *SignalServiceTransactor) AcceptOwnership(opts *bind.TransactOpts) (*types.Transaction, error) { + return _SignalService.contract.Transact(opts, "acceptOwnership") +} + +// AcceptOwnership is a paid mutator transaction binding the contract method 0x79ba5097. +// +// Solidity: function acceptOwnership() returns() +func (_SignalService *SignalServiceSession) AcceptOwnership() (*types.Transaction, error) { + return _SignalService.Contract.AcceptOwnership(&_SignalService.TransactOpts) +} + +// AcceptOwnership is a paid mutator transaction binding the contract method 0x79ba5097. +// +// Solidity: function acceptOwnership() returns() +func (_SignalService *SignalServiceTransactorSession) AcceptOwnership() (*types.Transaction, error) { + return _SignalService.Contract.AcceptOwnership(&_SignalService.TransactOpts) +} + +// Authorize is a paid mutator transaction binding the contract method 0x969e15a3. +// +// Solidity: function authorize(address addr, bytes32 label) returns() +func (_SignalService *SignalServiceTransactor) Authorize(opts *bind.TransactOpts, addr common.Address, label [32]byte) (*types.Transaction, error) { + return _SignalService.contract.Transact(opts, "authorize", addr, label) +} + +// Authorize is a paid mutator transaction binding the contract method 0x969e15a3. +// +// Solidity: function authorize(address addr, bytes32 label) returns() +func (_SignalService *SignalServiceSession) Authorize(addr common.Address, label [32]byte) (*types.Transaction, error) { + return _SignalService.Contract.Authorize(&_SignalService.TransactOpts, addr, label) +} + +// Authorize is a paid mutator transaction binding the contract method 0x969e15a3. +// +// Solidity: function authorize(address addr, bytes32 label) returns() +func (_SignalService *SignalServiceTransactorSession) Authorize(addr common.Address, label [32]byte) (*types.Transaction, error) { + return _SignalService.Contract.Authorize(&_SignalService.TransactOpts, addr, label) +} + +// Init is a paid mutator transaction binding the contract method 0xe1c7392a. // -// Solidity: function init(address _addressManager) returns() -func (_SignalService *SignalServiceTransactor) Init(opts *bind.TransactOpts, _addressManager common.Address) (*types.Transaction, error) { - return _SignalService.contract.Transact(opts, "init", _addressManager) +// Solidity: function init() returns() +func (_SignalService *SignalServiceTransactor) Init(opts *bind.TransactOpts) (*types.Transaction, error) { + return _SignalService.contract.Transact(opts, "init") } -// Init is a paid mutator transaction binding the contract method 0x19ab453c. +// Init is a paid mutator transaction binding the contract method 0xe1c7392a. // -// Solidity: function init(address _addressManager) returns() -func (_SignalService *SignalServiceSession) Init(_addressManager common.Address) (*types.Transaction, error) { - return _SignalService.Contract.Init(&_SignalService.TransactOpts, _addressManager) +// Solidity: function init() returns() +func (_SignalService *SignalServiceSession) Init() (*types.Transaction, error) { + return _SignalService.Contract.Init(&_SignalService.TransactOpts) } -// Init is a paid mutator transaction binding the contract method 0x19ab453c. +// Init is a paid mutator transaction binding the contract method 0xe1c7392a. // -// Solidity: function init(address _addressManager) returns() -func (_SignalService *SignalServiceTransactorSession) Init(_addressManager common.Address) (*types.Transaction, error) { - return _SignalService.Contract.Init(&_SignalService.TransactOpts, _addressManager) +// Solidity: function init() returns() +func (_SignalService *SignalServiceTransactorSession) Init() (*types.Transaction, error) { + return _SignalService.Contract.Init(&_SignalService.TransactOpts) } // Pause is a paid mutator transaction binding the contract method 0x8456cb59. @@ -585,6 +751,152 @@ func (_SignalService *SignalServiceTransactorSession) Unpause() (*types.Transact return _SignalService.Contract.Unpause(&_SignalService.TransactOpts) } +// SignalServiceAuthorizedIterator is returned from FilterAuthorized and is used to iterate over the raw logs and unpacked data for Authorized events raised by the SignalService contract. +type SignalServiceAuthorizedIterator struct { + Event *SignalServiceAuthorized // Event containing the contract specifics and raw log + + contract *bind.BoundContract // Generic contract to use for unpacking event data + event string // Event name to use for unpacking event data + + logs chan types.Log // Log channel receiving the found contract events + sub ethereum.Subscription // Subscription for errors, completion and termination + done bool // Whether the subscription completed delivering logs + fail error // Occurred error to stop iteration +} + +// Next advances the iterator to the subsequent event, returning whether there +// are any more events found. In case of a retrieval or parsing error, false is +// returned and Error() can be queried for the exact failure. +func (it *SignalServiceAuthorizedIterator) Next() bool { + // If the iterator failed, stop iterating + if it.fail != nil { + return false + } + // If the iterator completed, deliver directly whatever's available + if it.done { + select { + case log := <-it.logs: + it.Event = new(SignalServiceAuthorized) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + default: + return false + } + } + // Iterator still in progress, wait for either a data or an error event + select { + case log := <-it.logs: + it.Event = new(SignalServiceAuthorized) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + case err := <-it.sub.Err(): + it.done = true + it.fail = err + return it.Next() + } +} + +// Error returns any retrieval or parsing error occurred during filtering. +func (it *SignalServiceAuthorizedIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *SignalServiceAuthorizedIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// SignalServiceAuthorized represents a Authorized event raised by the SignalService contract. +type SignalServiceAuthorized struct { + Addr common.Address + OldLabel [32]byte + NewLabel [32]byte + Raw types.Log // Blockchain specific contextual infos +} + +// FilterAuthorized is a free log retrieval operation binding the contract event 0x7abb39ef31cf9e4e81ee30577a27909b031ee95c0459c22280fb8d3468c96fdf. +// +// Solidity: event Authorized(address indexed addr, bytes32 oldLabel, bytes32 newLabel) +func (_SignalService *SignalServiceFilterer) FilterAuthorized(opts *bind.FilterOpts, addr []common.Address) (*SignalServiceAuthorizedIterator, error) { + + var addrRule []interface{} + for _, addrItem := range addr { + addrRule = append(addrRule, addrItem) + } + + logs, sub, err := _SignalService.contract.FilterLogs(opts, "Authorized", addrRule) + if err != nil { + return nil, err + } + return &SignalServiceAuthorizedIterator{contract: _SignalService.contract, event: "Authorized", logs: logs, sub: sub}, nil +} + +// WatchAuthorized is a free log subscription operation binding the contract event 0x7abb39ef31cf9e4e81ee30577a27909b031ee95c0459c22280fb8d3468c96fdf. +// +// Solidity: event Authorized(address indexed addr, bytes32 oldLabel, bytes32 newLabel) +func (_SignalService *SignalServiceFilterer) WatchAuthorized(opts *bind.WatchOpts, sink chan<- *SignalServiceAuthorized, addr []common.Address) (event.Subscription, error) { + + var addrRule []interface{} + for _, addrItem := range addr { + addrRule = append(addrRule, addrItem) + } + + logs, sub, err := _SignalService.contract.WatchLogs(opts, "Authorized", addrRule) + if err != nil { + return nil, err + } + return event.NewSubscription(func(quit <-chan struct{}) error { + defer sub.Unsubscribe() + for { + select { + case log := <-logs: + // New log arrived, parse the event and forward to the user + event := new(SignalServiceAuthorized) + if err := _SignalService.contract.UnpackLog(event, "Authorized", log); err != nil { + return err + } + event.Raw = log + + select { + case sink <- event: + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + } + }), nil +} + +// ParseAuthorized is a log parse operation binding the contract event 0x7abb39ef31cf9e4e81ee30577a27909b031ee95c0459c22280fb8d3468c96fdf. +// +// Solidity: event Authorized(address indexed addr, bytes32 oldLabel, bytes32 newLabel) +func (_SignalService *SignalServiceFilterer) ParseAuthorized(log types.Log) (*SignalServiceAuthorized, error) { + event := new(SignalServiceAuthorized) + if err := _SignalService.contract.UnpackLog(event, "Authorized", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} + // SignalServiceInitializedIterator is returned from FilterInitialized and is used to iterate over the raw logs and unpacked data for Initialized events raised by the SignalService contract. type SignalServiceInitializedIterator struct { Event *SignalServiceInitialized // Event containing the contract specifics and raw log @@ -719,6 +1031,159 @@ func (_SignalService *SignalServiceFilterer) ParseInitialized(log types.Log) (*S return event, nil } +// SignalServiceOwnershipTransferStartedIterator is returned from FilterOwnershipTransferStarted and is used to iterate over the raw logs and unpacked data for OwnershipTransferStarted events raised by the SignalService contract. +type SignalServiceOwnershipTransferStartedIterator struct { + Event *SignalServiceOwnershipTransferStarted // Event containing the contract specifics and raw log + + contract *bind.BoundContract // Generic contract to use for unpacking event data + event string // Event name to use for unpacking event data + + logs chan types.Log // Log channel receiving the found contract events + sub ethereum.Subscription // Subscription for errors, completion and termination + done bool // Whether the subscription completed delivering logs + fail error // Occurred error to stop iteration +} + +// Next advances the iterator to the subsequent event, returning whether there +// are any more events found. In case of a retrieval or parsing error, false is +// returned and Error() can be queried for the exact failure. +func (it *SignalServiceOwnershipTransferStartedIterator) Next() bool { + // If the iterator failed, stop iterating + if it.fail != nil { + return false + } + // If the iterator completed, deliver directly whatever's available + if it.done { + select { + case log := <-it.logs: + it.Event = new(SignalServiceOwnershipTransferStarted) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + default: + return false + } + } + // Iterator still in progress, wait for either a data or an error event + select { + case log := <-it.logs: + it.Event = new(SignalServiceOwnershipTransferStarted) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + case err := <-it.sub.Err(): + it.done = true + it.fail = err + return it.Next() + } +} + +// Error returns any retrieval or parsing error occurred during filtering. +func (it *SignalServiceOwnershipTransferStartedIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *SignalServiceOwnershipTransferStartedIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// SignalServiceOwnershipTransferStarted represents a OwnershipTransferStarted event raised by the SignalService contract. +type SignalServiceOwnershipTransferStarted struct { + PreviousOwner common.Address + NewOwner common.Address + Raw types.Log // Blockchain specific contextual infos +} + +// FilterOwnershipTransferStarted is a free log retrieval operation binding the contract event 0x38d16b8cac22d99fc7c124b9cd0de2d3fa1faef420bfe791d8c362d765e22700. +// +// Solidity: event OwnershipTransferStarted(address indexed previousOwner, address indexed newOwner) +func (_SignalService *SignalServiceFilterer) FilterOwnershipTransferStarted(opts *bind.FilterOpts, previousOwner []common.Address, newOwner []common.Address) (*SignalServiceOwnershipTransferStartedIterator, error) { + + var previousOwnerRule []interface{} + for _, previousOwnerItem := range previousOwner { + previousOwnerRule = append(previousOwnerRule, previousOwnerItem) + } + var newOwnerRule []interface{} + for _, newOwnerItem := range newOwner { + newOwnerRule = append(newOwnerRule, newOwnerItem) + } + + logs, sub, err := _SignalService.contract.FilterLogs(opts, "OwnershipTransferStarted", previousOwnerRule, newOwnerRule) + if err != nil { + return nil, err + } + return &SignalServiceOwnershipTransferStartedIterator{contract: _SignalService.contract, event: "OwnershipTransferStarted", logs: logs, sub: sub}, nil +} + +// WatchOwnershipTransferStarted is a free log subscription operation binding the contract event 0x38d16b8cac22d99fc7c124b9cd0de2d3fa1faef420bfe791d8c362d765e22700. +// +// Solidity: event OwnershipTransferStarted(address indexed previousOwner, address indexed newOwner) +func (_SignalService *SignalServiceFilterer) WatchOwnershipTransferStarted(opts *bind.WatchOpts, sink chan<- *SignalServiceOwnershipTransferStarted, previousOwner []common.Address, newOwner []common.Address) (event.Subscription, error) { + + var previousOwnerRule []interface{} + for _, previousOwnerItem := range previousOwner { + previousOwnerRule = append(previousOwnerRule, previousOwnerItem) + } + var newOwnerRule []interface{} + for _, newOwnerItem := range newOwner { + newOwnerRule = append(newOwnerRule, newOwnerItem) + } + + logs, sub, err := _SignalService.contract.WatchLogs(opts, "OwnershipTransferStarted", previousOwnerRule, newOwnerRule) + if err != nil { + return nil, err + } + return event.NewSubscription(func(quit <-chan struct{}) error { + defer sub.Unsubscribe() + for { + select { + case log := <-logs: + // New log arrived, parse the event and forward to the user + event := new(SignalServiceOwnershipTransferStarted) + if err := _SignalService.contract.UnpackLog(event, "OwnershipTransferStarted", log); err != nil { + return err + } + event.Raw = log + + select { + case sink <- event: + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + } + }), nil +} + +// ParseOwnershipTransferStarted is a log parse operation binding the contract event 0x38d16b8cac22d99fc7c124b9cd0de2d3fa1faef420bfe791d8c362d765e22700. +// +// Solidity: event OwnershipTransferStarted(address indexed previousOwner, address indexed newOwner) +func (_SignalService *SignalServiceFilterer) ParseOwnershipTransferStarted(log types.Log) (*SignalServiceOwnershipTransferStarted, error) { + event := new(SignalServiceOwnershipTransferStarted) + if err := _SignalService.contract.UnpackLog(event, "OwnershipTransferStarted", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} + // SignalServiceOwnershipTransferredIterator is returned from FilterOwnershipTransferred and is used to iterate over the raw logs and unpacked data for OwnershipTransferred events raised by the SignalService contract. type SignalServiceOwnershipTransferredIterator struct { Event *SignalServiceOwnershipTransferred // Event containing the contract specifics and raw log diff --git a/packages/relayer/bindings/taikol1/TaikoL1.go b/packages/relayer/bindings/taikol1/TaikoL1.go index 586b591da1..491618fe57 100644 --- a/packages/relayer/bindings/taikol1/TaikoL1.go +++ b/packages/relayer/bindings/taikol1/TaikoL1.go @@ -31,8 +31,10 @@ var ( // ICrossChainSyncSnippet is an auto generated low-level Go binding around an user-defined struct. type ICrossChainSyncSnippet struct { - BlockHash [32]byte - SignalRoot [32]byte + RemoteBlockId uint64 + SyncedInBlock uint64 + BlockHash [32]byte + SignalRoot [32]byte } // ITierProviderTier is an auto generated low-level Go binding around an user-defined struct. @@ -52,34 +54,41 @@ type TaikoDataBlock struct { LivenessBond *big.Int BlockId uint64 ProposedAt uint64 + ProposedIn uint64 NextTransitionId uint32 VerifiedTransitionId uint32 - MinTier uint16 Reserved [7][32]byte } // TaikoDataBlockMetadata is an auto generated low-level Go binding around an user-defined struct. type TaikoDataBlockMetadata struct { - L1Hash [32]byte - Difficulty [32]byte - TxListHash [32]byte - ExtraData [32]byte - Id uint64 - Timestamp uint64 - L1Height uint64 - GasLimit uint32 - Coinbase common.Address - DepositsProcessed []TaikoDataEthDeposit + L1Hash [32]byte + Difficulty [32]byte + BlobHash [32]byte + ExtraData [32]byte + DepositsHash [32]byte + Coinbase common.Address + Id uint64 + GasLimit uint32 + Timestamp uint64 + L1Height uint64 + TxListByteOffset *big.Int + TxListByteSize *big.Int + MinTier uint16 + BlobUsed bool + ParentMetaHash [32]byte } // TaikoDataConfig is an auto generated low-level Go binding around an user-defined struct. type TaikoDataConfig struct { - ChainId *big.Int + ChainId uint64 BlockMaxProposals uint64 BlockRingBufferSize uint64 MaxBlocksToVerifyPerProposal uint64 BlockMaxGasLimit uint32 BlockMaxTxListBytes *big.Int + BlobExpiry *big.Int + BlobAllowedForDA bool LivenessBond *big.Int EthDepositRingBufferSize *big.Int EthDepositMinCountPerBlock uint64 @@ -107,38 +116,37 @@ type TaikoDataSlotA struct { // TaikoDataSlotB is an auto generated low-level Go binding around an user-defined struct. type TaikoDataSlotB struct { - NumBlocks uint64 - NextEthDepositToProcess uint64 - LastVerifiedBlockId uint64 -} - -// TaikoDataStateVariables is an auto generated low-level Go binding around an user-defined struct. -type TaikoDataStateVariables struct { - GenesisHeight uint64 - GenesisTimestamp uint64 - NextEthDepositToProcess uint64 - NumEthDeposits uint64 - NumBlocks uint64 - LastVerifiedBlockId uint64 + NumBlocks uint64 + LastVerifiedBlockId uint64 + ProvingPaused bool } // TaikoDataTransition is an auto generated low-level Go binding around an user-defined struct. type TaikoDataTransition struct { - Key [32]byte - BlockHash [32]byte - SignalRoot [32]byte - Prover common.Address - ValidityBond *big.Int - Contester common.Address - ContestBond *big.Int - Timestamp uint64 - Tier uint16 - Reserved [4][32]byte + ParentHash [32]byte + BlockHash [32]byte + SignalRoot [32]byte + Graffiti [32]byte +} + +// TaikoDataTransitionState is an auto generated low-level Go binding around an user-defined struct. +type TaikoDataTransitionState struct { + Key [32]byte + BlockHash [32]byte + SignalRoot [32]byte + Prover common.Address + ValidityBond *big.Int + Contester common.Address + ContestBond *big.Int + Timestamp uint64 + Tier uint16 + Contestations uint8 + Reserved [4][32]byte } // TaikoL1MetaData contains all meta data concerning the TaikoL1 contract. var TaikoL1MetaData = &bind.MetaData{ - ABI: "[{\"inputs\":[],\"name\":\"ETH_TRANSFER_FAILED\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"INVALID_PAUSE_STATUS\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"L1_ALREADY_CONTESTED\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"L1_ALREADY_CONTESTED\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"L1_ALREADY_PROVED\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"L1_ALREADY_PROVED\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"L1_ASSIGNED_PROVER_NOT_ALLOWED\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"L1_ASSIGNED_PROVER_NOT_ALLOWED\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"L1_ASSIGNMENT_EXPIRED\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"L1_ASSIGNMENT_EXPIRED\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"L1_ASSIGNMENT_INSUFFICIENT_FEE\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"L1_ASSIGNMENT_INSUFFICIENT_FEE\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"L1_ASSIGNMENT_INVALID_PARAMS\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"L1_ASSIGNMENT_INVALID_PARAMS\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"L1_ASSIGNMENT_INVALID_SIG\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"L1_ASSIGNMENT_INVALID_SIG\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"L1_BLOCK_MISMATCH\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"L1_BLOCK_MISMATCH\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"L1_BLOCK_MISMATCH\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"L1_BLOCK_MISMATCH\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"L1_INSUFFICIENT_TOKEN\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"L1_INSUFFICIENT_TOKEN\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"L1_INVALID_ADDRESS\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"L1_INVALID_AMOUNT\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"L1_INVALID_AMOUNT\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"L1_INVALID_BLOCK_ID\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"L1_INVALID_BLOCK_ID\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"L1_INVALID_BLOCK_ID\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"L1_INVALID_CONFIG\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"L1_INVALID_CONFIG\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"L1_INVALID_ETH_DEPOSIT\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"L1_INVALID_ETH_DEPOSIT\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"L1_INVALID_EVIDENCE\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"L1_INVALID_EVIDENCE\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"L1_INVALID_PARAM\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"L1_INVALID_PROOF\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"L1_INVALID_TIER\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"L1_INVALID_TIER\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"L1_NOT_ASSIGNED_PROVER\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"L1_NOT_ASSIGNED_PROVER\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"L1_TIER_NOT_FOUND\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"L1_TIER_NOT_FOUND\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"L1_TOO_MANY_BLOCKS\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"L1_TOO_MANY_BLOCKS\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"L1_TRANSITION_ID_ZERO\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"L1_TRANSITION_ID_ZERO\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"L1_TRANSITION_NOT_FOUND\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"L1_TRANSITION_NOT_FOUND\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"L1_TXLIST_MISMATCH\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"L1_TXLIST_MISMATCH\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"L1_TXLIST_TOO_LARGE\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"L1_TXLIST_TOO_LARGE\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"L1_UNAUTHORIZED\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"L1_UNAUTHORIZED\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"L1_UNEXPECTED_TRANSITION_ID\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"L1_UNEXPECTED_TRANSITION_ID\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"L1_UNEXPECTED_TRANSITION_TIER\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"L1_UNEXPECTED_TRANSITION_TIER\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"REENTRANT_CALL\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"RESOLVER_DENIED\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"RESOLVER_INVALID_MANAGER\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"chainId\",\"type\":\"uint256\"},{\"internalType\":\"bytes32\",\"name\":\"name\",\"type\":\"bytes32\"}],\"name\":\"RESOLVER_ZERO_ADDR\",\"type\":\"error\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"blockId\",\"type\":\"uint256\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"assignedProver\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint96\",\"name\":\"livenessBond\",\"type\":\"uint96\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"proverFee\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint16\",\"name\":\"minTier\",\"type\":\"uint16\"},{\"components\":[{\"internalType\":\"bytes32\",\"name\":\"l1Hash\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"difficulty\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"txListHash\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"extraData\",\"type\":\"bytes32\"},{\"internalType\":\"uint64\",\"name\":\"id\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"timestamp\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"l1Height\",\"type\":\"uint64\"},{\"internalType\":\"uint32\",\"name\":\"gasLimit\",\"type\":\"uint32\"},{\"internalType\":\"address\",\"name\":\"coinbase\",\"type\":\"address\"},{\"components\":[{\"internalType\":\"address\",\"name\":\"recipient\",\"type\":\"address\"},{\"internalType\":\"uint96\",\"name\":\"amount\",\"type\":\"uint96\"},{\"internalType\":\"uint64\",\"name\":\"id\",\"type\":\"uint64\"}],\"internalType\":\"structTaikoData.EthDeposit[]\",\"name\":\"depositsProcessed\",\"type\":\"tuple[]\"}],\"indexed\":false,\"internalType\":\"structTaikoData.BlockMetadata\",\"name\":\"meta\",\"type\":\"tuple\"}],\"name\":\"BlockProposed\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"blockId\",\"type\":\"uint256\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"assignedProver\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint96\",\"name\":\"livenessBond\",\"type\":\"uint96\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"proverFee\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint16\",\"name\":\"minTier\",\"type\":\"uint16\"},{\"components\":[{\"internalType\":\"bytes32\",\"name\":\"l1Hash\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"difficulty\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"txListHash\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"extraData\",\"type\":\"bytes32\"},{\"internalType\":\"uint64\",\"name\":\"id\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"timestamp\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"l1Height\",\"type\":\"uint64\"},{\"internalType\":\"uint32\",\"name\":\"gasLimit\",\"type\":\"uint32\"},{\"internalType\":\"address\",\"name\":\"coinbase\",\"type\":\"address\"},{\"components\":[{\"internalType\":\"address\",\"name\":\"recipient\",\"type\":\"address\"},{\"internalType\":\"uint96\",\"name\":\"amount\",\"type\":\"uint96\"},{\"internalType\":\"uint64\",\"name\":\"id\",\"type\":\"uint64\"}],\"internalType\":\"structTaikoData.EthDeposit[]\",\"name\":\"depositsProcessed\",\"type\":\"tuple[]\"}],\"indexed\":false,\"internalType\":\"structTaikoData.BlockMetadata\",\"name\":\"meta\",\"type\":\"tuple\"}],\"name\":\"BlockProposed\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"blockId\",\"type\":\"uint256\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"assignedProver\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"prover\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"blockHash\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"signalRoot\",\"type\":\"bytes32\"}],\"name\":\"BlockVerified\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"blockId\",\"type\":\"uint256\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"assignedProver\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"prover\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"blockHash\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"signalRoot\",\"type\":\"bytes32\"}],\"name\":\"BlockVerified\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint64\",\"name\":\"srcHeight\",\"type\":\"uint64\"},{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"blockHash\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"signalRoot\",\"type\":\"bytes32\"}],\"name\":\"CrossChainSynced\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint64\",\"name\":\"srcHeight\",\"type\":\"uint64\"},{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"blockHash\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"signalRoot\",\"type\":\"bytes32\"}],\"name\":\"CrossChainSynced\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"components\":[{\"internalType\":\"address\",\"name\":\"recipient\",\"type\":\"address\"},{\"internalType\":\"uint96\",\"name\":\"amount\",\"type\":\"uint96\"},{\"internalType\":\"uint64\",\"name\":\"id\",\"type\":\"uint64\"}],\"indexed\":false,\"internalType\":\"structTaikoData.EthDeposit\",\"name\":\"deposit\",\"type\":\"tuple\"}],\"name\":\"EthDeposited\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"components\":[{\"internalType\":\"address\",\"name\":\"recipient\",\"type\":\"address\"},{\"internalType\":\"uint96\",\"name\":\"amount\",\"type\":\"uint96\"},{\"internalType\":\"uint64\",\"name\":\"id\",\"type\":\"uint64\"}],\"indexed\":false,\"internalType\":\"structTaikoData.EthDeposit\",\"name\":\"deposit\",\"type\":\"tuple\"}],\"name\":\"EthDeposited\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint8\",\"name\":\"version\",\"type\":\"uint8\"}],\"name\":\"Initialized\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"previousOwner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"newOwner\",\"type\":\"address\"}],\"name\":\"OwnershipTransferred\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"Paused\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"TokenCredited\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"TokenCredited\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"TokenDebited\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"TokenDebited\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"TokenDeposited\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"TokenDeposited\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"TokenWithdrawn\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"TokenWithdrawn\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"blockId\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"parentHash\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"blockHash\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"signalRoot\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"contester\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint96\",\"name\":\"contestBond\",\"type\":\"uint96\"},{\"indexed\":false,\"internalType\":\"uint16\",\"name\":\"tier\",\"type\":\"uint16\"}],\"name\":\"TransitionContested\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"blockId\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"parentHash\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"blockHash\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"signalRoot\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"contester\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint96\",\"name\":\"contestBond\",\"type\":\"uint96\"},{\"indexed\":false,\"internalType\":\"uint16\",\"name\":\"tier\",\"type\":\"uint16\"}],\"name\":\"TransitionContested\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"blockId\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"parentHash\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"blockHash\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"signalRoot\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"prover\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint96\",\"name\":\"validityBond\",\"type\":\"uint96\"},{\"indexed\":false,\"internalType\":\"uint16\",\"name\":\"tier\",\"type\":\"uint16\"}],\"name\":\"TransitionProved\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"blockId\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"parentHash\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"blockHash\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"signalRoot\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"prover\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint96\",\"name\":\"validityBond\",\"type\":\"uint96\"},{\"indexed\":false,\"internalType\":\"uint16\",\"name\":\"tier\",\"type\":\"uint16\"}],\"name\":\"TransitionProved\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"Unpaused\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"addressManager\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"canDepositEthToL2\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"recipient\",\"type\":\"address\"}],\"name\":\"depositEtherToL2\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"depositTaikoToken\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"blockId\",\"type\":\"uint64\"}],\"name\":\"getBlock\",\"outputs\":[{\"components\":[{\"internalType\":\"bytes32\",\"name\":\"metaHash\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"assignedProver\",\"type\":\"address\"},{\"internalType\":\"uint96\",\"name\":\"livenessBond\",\"type\":\"uint96\"},{\"internalType\":\"uint64\",\"name\":\"blockId\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"proposedAt\",\"type\":\"uint64\"},{\"internalType\":\"uint32\",\"name\":\"nextTransitionId\",\"type\":\"uint32\"},{\"internalType\":\"uint32\",\"name\":\"verifiedTransitionId\",\"type\":\"uint32\"},{\"internalType\":\"uint16\",\"name\":\"minTier\",\"type\":\"uint16\"},{\"internalType\":\"bytes32[7]\",\"name\":\"__reserved\",\"type\":\"bytes32[7]\"}],\"internalType\":\"structTaikoData.Block\",\"name\":\"blk\",\"type\":\"tuple\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getConfig\",\"outputs\":[{\"components\":[{\"internalType\":\"uint256\",\"name\":\"chainId\",\"type\":\"uint256\"},{\"internalType\":\"uint64\",\"name\":\"blockMaxProposals\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"blockRingBufferSize\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"maxBlocksToVerifyPerProposal\",\"type\":\"uint64\"},{\"internalType\":\"uint32\",\"name\":\"blockMaxGasLimit\",\"type\":\"uint32\"},{\"internalType\":\"uint24\",\"name\":\"blockMaxTxListBytes\",\"type\":\"uint24\"},{\"internalType\":\"uint96\",\"name\":\"livenessBond\",\"type\":\"uint96\"},{\"internalType\":\"uint256\",\"name\":\"ethDepositRingBufferSize\",\"type\":\"uint256\"},{\"internalType\":\"uint64\",\"name\":\"ethDepositMinCountPerBlock\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"ethDepositMaxCountPerBlock\",\"type\":\"uint64\"},{\"internalType\":\"uint96\",\"name\":\"ethDepositMinAmount\",\"type\":\"uint96\"},{\"internalType\":\"uint96\",\"name\":\"ethDepositMaxAmount\",\"type\":\"uint96\"},{\"internalType\":\"uint256\",\"name\":\"ethDepositGas\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"ethDepositMaxFee\",\"type\":\"uint256\"}],\"internalType\":\"structTaikoData.Config\",\"name\":\"\",\"type\":\"tuple\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"rand\",\"type\":\"uint256\"}],\"name\":\"getMinTier\",\"outputs\":[{\"internalType\":\"uint16\",\"name\":\"\",\"type\":\"uint16\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getStateVariables\",\"outputs\":[{\"components\":[{\"internalType\":\"uint64\",\"name\":\"genesisHeight\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"genesisTimestamp\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"nextEthDepositToProcess\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"numEthDeposits\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"numBlocks\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"lastVerifiedBlockId\",\"type\":\"uint64\"}],\"internalType\":\"structTaikoData.StateVariables\",\"name\":\"\",\"type\":\"tuple\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"blockId\",\"type\":\"uint64\"}],\"name\":\"getSyncedSnippet\",\"outputs\":[{\"components\":[{\"internalType\":\"bytes32\",\"name\":\"blockHash\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"signalRoot\",\"type\":\"bytes32\"}],\"internalType\":\"structICrossChainSync.Snippet\",\"name\":\"data\",\"type\":\"tuple\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"user\",\"type\":\"address\"}],\"name\":\"getTaikoTokenBalance\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint16\",\"name\":\"tierId\",\"type\":\"uint16\"}],\"name\":\"getTier\",\"outputs\":[{\"components\":[{\"internalType\":\"bytes32\",\"name\":\"verifierName\",\"type\":\"bytes32\"},{\"internalType\":\"uint96\",\"name\":\"validityBond\",\"type\":\"uint96\"},{\"internalType\":\"uint96\",\"name\":\"contestBond\",\"type\":\"uint96\"},{\"internalType\":\"uint24\",\"name\":\"cooldownWindow\",\"type\":\"uint24\"},{\"internalType\":\"uint16\",\"name\":\"provingWindow\",\"type\":\"uint16\"},{\"internalType\":\"uint8\",\"name\":\"maxBlocksToVerify\",\"type\":\"uint8\"}],\"internalType\":\"structITierProvider.Tier\",\"name\":\"\",\"type\":\"tuple\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getTierIds\",\"outputs\":[{\"internalType\":\"uint16[]\",\"name\":\"\",\"type\":\"uint16[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"blockId\",\"type\":\"uint64\"},{\"internalType\":\"bytes32\",\"name\":\"parentHash\",\"type\":\"bytes32\"}],\"name\":\"getTransition\",\"outputs\":[{\"components\":[{\"internalType\":\"bytes32\",\"name\":\"key\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"blockHash\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"signalRoot\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"prover\",\"type\":\"address\"},{\"internalType\":\"uint96\",\"name\":\"validityBond\",\"type\":\"uint96\"},{\"internalType\":\"address\",\"name\":\"contester\",\"type\":\"address\"},{\"internalType\":\"uint96\",\"name\":\"contestBond\",\"type\":\"uint96\"},{\"internalType\":\"uint64\",\"name\":\"timestamp\",\"type\":\"uint64\"},{\"internalType\":\"uint16\",\"name\":\"tier\",\"type\":\"uint16\"},{\"internalType\":\"bytes32[4]\",\"name\":\"__reserved\",\"type\":\"bytes32[4]\"}],\"internalType\":\"structTaikoData.Transition\",\"name\":\"\",\"type\":\"tuple\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_addressManager\",\"type\":\"address\"},{\"internalType\":\"bytes32\",\"name\":\"_genesisBlockHash\",\"type\":\"bytes32\"}],\"name\":\"init\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"isConfigValid\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"owner\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"pause\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"paused\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"txListHash\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"extraData\",\"type\":\"bytes32\"},{\"internalType\":\"bytes\",\"name\":\"assignment\",\"type\":\"bytes\"},{\"internalType\":\"bytes\",\"name\":\"txList\",\"type\":\"bytes\"}],\"name\":\"proposeBlock\",\"outputs\":[{\"components\":[{\"internalType\":\"bytes32\",\"name\":\"l1Hash\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"difficulty\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"txListHash\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"extraData\",\"type\":\"bytes32\"},{\"internalType\":\"uint64\",\"name\":\"id\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"timestamp\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"l1Height\",\"type\":\"uint64\"},{\"internalType\":\"uint32\",\"name\":\"gasLimit\",\"type\":\"uint32\"},{\"internalType\":\"address\",\"name\":\"coinbase\",\"type\":\"address\"},{\"components\":[{\"internalType\":\"address\",\"name\":\"recipient\",\"type\":\"address\"},{\"internalType\":\"uint96\",\"name\":\"amount\",\"type\":\"uint96\"},{\"internalType\":\"uint64\",\"name\":\"id\",\"type\":\"uint64\"}],\"internalType\":\"structTaikoData.EthDeposit[]\",\"name\":\"depositsProcessed\",\"type\":\"tuple[]\"}],\"internalType\":\"structTaikoData.BlockMetadata\",\"name\":\"meta\",\"type\":\"tuple\"}],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"blockId\",\"type\":\"uint64\"},{\"internalType\":\"bytes\",\"name\":\"input\",\"type\":\"bytes\"}],\"name\":\"proveBlock\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"renounceOwnership\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"chainId\",\"type\":\"uint256\"},{\"internalType\":\"bytes32\",\"name\":\"name\",\"type\":\"bytes32\"},{\"internalType\":\"bool\",\"name\":\"allowZeroAddress\",\"type\":\"bool\"}],\"name\":\"resolve\",\"outputs\":[{\"internalType\":\"addresspayable\",\"name\":\"addr\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"name\",\"type\":\"bytes32\"},{\"internalType\":\"bool\",\"name\":\"allowZeroAddress\",\"type\":\"bool\"}],\"name\":\"resolve\",\"outputs\":[{\"internalType\":\"addresspayable\",\"name\":\"addr\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"state\",\"outputs\":[{\"components\":[{\"internalType\":\"uint64\",\"name\":\"genesisHeight\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"genesisTimestamp\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"numEthDeposits\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"nextEthDepositToProcess\",\"type\":\"uint64\"}],\"internalType\":\"structTaikoData.SlotA\",\"name\":\"slotA\",\"type\":\"tuple\"},{\"components\":[{\"internalType\":\"uint64\",\"name\":\"numBlocks\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"nextEthDepositToProcess\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"lastVerifiedBlockId\",\"type\":\"uint64\"}],\"internalType\":\"structTaikoData.SlotB\",\"name\":\"slotB\",\"type\":\"tuple\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"newOwner\",\"type\":\"address\"}],\"name\":\"transferOwnership\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"unpause\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"maxBlocksToVerify\",\"type\":\"uint64\"}],\"name\":\"verifyBlocks\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"withdrawTaikoToken\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"stateMutability\":\"payable\",\"type\":\"receive\"}]", + ABI: "[{\"inputs\":[],\"name\":\"ETH_TRANSFER_FAILED\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"INVALID_PAUSE_STATUS\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"L1_ALREADY_CONTESTED\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"L1_ALREADY_CONTESTED\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"L1_ALREADY_PROVED\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"L1_ALREADY_PROVED\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"L1_ASSIGNED_PROVER_NOT_ALLOWED\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"L1_ASSIGNED_PROVER_NOT_ALLOWED\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"L1_ASSIGNMENT_EXPIRED\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"L1_ASSIGNMENT_EXPIRED\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"L1_ASSIGNMENT_INSUFFICIENT_FEE\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"L1_ASSIGNMENT_INSUFFICIENT_FEE\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"L1_ASSIGNMENT_INVALID_PARAMS\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"L1_ASSIGNMENT_INVALID_PARAMS\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"L1_ASSIGNMENT_INVALID_SIG\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"L1_ASSIGNMENT_INVALID_SIG\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"L1_BLOB_FOR_DA_DISABLED\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"L1_BLOB_FOR_DA_DISABLED\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"L1_BLOB_NOT_FOUND\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"L1_BLOB_NOT_FOUND\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"L1_BLOB_NOT_REUSEABLE\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"L1_BLOB_NOT_REUSEABLE\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"L1_BLOCK_MISMATCH\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"L1_BLOCK_MISMATCH\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"L1_BLOCK_MISMATCH\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"L1_INSUFFICIENT_TOKEN\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"L1_INVALID_ADDRESS\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"L1_INVALID_AMOUNT\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"L1_INVALID_BLOCK_ID\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"L1_INVALID_BLOCK_ID\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"L1_INVALID_BLOCK_ID\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"L1_INVALID_CONFIG\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"L1_INVALID_ETH_DEPOSIT\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"L1_INVALID_ETH_DEPOSIT\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"L1_INVALID_PARAM\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"L1_INVALID_PARAM\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"L1_INVALID_PAUSE_STATUS\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"L1_INVALID_PAUSE_STATUS\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"L1_INVALID_PROOF\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"L1_INVALID_TIER\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"L1_INVALID_TIER\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"L1_INVALID_TRANSITION\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"L1_INVALID_TRANSITION\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"L1_NOT_ASSIGNED_PROVER\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"L1_NOT_ASSIGNED_PROVER\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"L1_PROPOSER_NOT_EOA\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"L1_PROPOSER_NOT_EOA\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"L1_PROVING_PAUSED\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"L1_TIER_NOT_FOUND\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"L1_TIER_NOT_FOUND\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"L1_TOO_MANY_BLOCKS\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"L1_TOO_MANY_BLOCKS\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"L1_TOO_MANY_TIERS\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"L1_TRANSITION_ID_ZERO\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"L1_TRANSITION_ID_ZERO\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"L1_TRANSITION_NOT_FOUND\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"L1_TXLIST_OFFSET\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"L1_TXLIST_OFFSET_SIZE\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"L1_TXLIST_SIZE\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"L1_TXLIST_TOO_LARGE\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"L1_UNAUTHORIZED\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"L1_UNAUTHORIZED\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"L1_UNEXPECTED_PARENT\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"L1_UNEXPECTED_PARENT\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"L1_UNEXPECTED_TRANSITION_ID\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"L1_UNEXPECTED_TRANSITION_ID\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"L1_UNEXPECTED_TRANSITION_TIER\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"L1_UNEXPECTED_TRANSITION_TIER\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"REENTRANT_CALL\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"RESOLVER_DENIED\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"RESOLVER_INVALID_MANAGER\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"RESOLVER_UNEXPECTED_CHAINID\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"chainId\",\"type\":\"uint64\"},{\"internalType\":\"string\",\"name\":\"name\",\"type\":\"string\"}],\"name\":\"RESOLVER_ZERO_ADDR\",\"type\":\"error\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"blobHash\",\"type\":\"bytes32\"}],\"name\":\"BlobCached\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"blobHash\",\"type\":\"bytes32\"}],\"name\":\"BlobCached\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"blockId\",\"type\":\"uint256\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"assignedProver\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint96\",\"name\":\"livenessBond\",\"type\":\"uint96\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"proverFee\",\"type\":\"uint256\"},{\"components\":[{\"internalType\":\"bytes32\",\"name\":\"l1Hash\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"difficulty\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"blobHash\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"extraData\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"depositsHash\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"coinbase\",\"type\":\"address\"},{\"internalType\":\"uint64\",\"name\":\"id\",\"type\":\"uint64\"},{\"internalType\":\"uint32\",\"name\":\"gasLimit\",\"type\":\"uint32\"},{\"internalType\":\"uint64\",\"name\":\"timestamp\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"l1Height\",\"type\":\"uint64\"},{\"internalType\":\"uint24\",\"name\":\"txListByteOffset\",\"type\":\"uint24\"},{\"internalType\":\"uint24\",\"name\":\"txListByteSize\",\"type\":\"uint24\"},{\"internalType\":\"uint16\",\"name\":\"minTier\",\"type\":\"uint16\"},{\"internalType\":\"bool\",\"name\":\"blobUsed\",\"type\":\"bool\"},{\"internalType\":\"bytes32\",\"name\":\"parentMetaHash\",\"type\":\"bytes32\"}],\"indexed\":false,\"internalType\":\"structTaikoData.BlockMetadata\",\"name\":\"meta\",\"type\":\"tuple\"},{\"components\":[{\"internalType\":\"address\",\"name\":\"recipient\",\"type\":\"address\"},{\"internalType\":\"uint96\",\"name\":\"amount\",\"type\":\"uint96\"},{\"internalType\":\"uint64\",\"name\":\"id\",\"type\":\"uint64\"}],\"indexed\":false,\"internalType\":\"structTaikoData.EthDeposit[]\",\"name\":\"depositsProcessed\",\"type\":\"tuple[]\"}],\"name\":\"BlockProposed\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"blockId\",\"type\":\"uint256\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"assignedProver\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint96\",\"name\":\"livenessBond\",\"type\":\"uint96\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"proverFee\",\"type\":\"uint256\"},{\"components\":[{\"internalType\":\"bytes32\",\"name\":\"l1Hash\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"difficulty\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"blobHash\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"extraData\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"depositsHash\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"coinbase\",\"type\":\"address\"},{\"internalType\":\"uint64\",\"name\":\"id\",\"type\":\"uint64\"},{\"internalType\":\"uint32\",\"name\":\"gasLimit\",\"type\":\"uint32\"},{\"internalType\":\"uint64\",\"name\":\"timestamp\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"l1Height\",\"type\":\"uint64\"},{\"internalType\":\"uint24\",\"name\":\"txListByteOffset\",\"type\":\"uint24\"},{\"internalType\":\"uint24\",\"name\":\"txListByteSize\",\"type\":\"uint24\"},{\"internalType\":\"uint16\",\"name\":\"minTier\",\"type\":\"uint16\"},{\"internalType\":\"bool\",\"name\":\"blobUsed\",\"type\":\"bool\"},{\"internalType\":\"bytes32\",\"name\":\"parentMetaHash\",\"type\":\"bytes32\"}],\"indexed\":false,\"internalType\":\"structTaikoData.BlockMetadata\",\"name\":\"meta\",\"type\":\"tuple\"},{\"components\":[{\"internalType\":\"address\",\"name\":\"recipient\",\"type\":\"address\"},{\"internalType\":\"uint96\",\"name\":\"amount\",\"type\":\"uint96\"},{\"internalType\":\"uint64\",\"name\":\"id\",\"type\":\"uint64\"}],\"indexed\":false,\"internalType\":\"structTaikoData.EthDeposit[]\",\"name\":\"depositsProcessed\",\"type\":\"tuple[]\"}],\"name\":\"BlockProposed\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"blockId\",\"type\":\"uint256\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"assignedProver\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"prover\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"blockHash\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"signalRoot\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"uint16\",\"name\":\"tier\",\"type\":\"uint16\"},{\"indexed\":false,\"internalType\":\"uint8\",\"name\":\"contestations\",\"type\":\"uint8\"}],\"name\":\"BlockVerified\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"blockId\",\"type\":\"uint256\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"assignedProver\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"prover\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"blockHash\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"signalRoot\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"uint16\",\"name\":\"tier\",\"type\":\"uint16\"},{\"indexed\":false,\"internalType\":\"uint8\",\"name\":\"contestations\",\"type\":\"uint8\"}],\"name\":\"BlockVerified\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint64\",\"name\":\"srcHeight\",\"type\":\"uint64\"},{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"blockHash\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"signalRoot\",\"type\":\"bytes32\"}],\"name\":\"CrossChainSynced\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint64\",\"name\":\"remoteBlockId\",\"type\":\"uint64\"},{\"indexed\":false,\"internalType\":\"uint64\",\"name\":\"syncedInBlock\",\"type\":\"uint64\"},{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"blockHash\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"signalRoot\",\"type\":\"bytes32\"}],\"name\":\"CrossChainSynced\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"components\":[{\"internalType\":\"address\",\"name\":\"recipient\",\"type\":\"address\"},{\"internalType\":\"uint96\",\"name\":\"amount\",\"type\":\"uint96\"},{\"internalType\":\"uint64\",\"name\":\"id\",\"type\":\"uint64\"}],\"indexed\":false,\"internalType\":\"structTaikoData.EthDeposit\",\"name\":\"deposit\",\"type\":\"tuple\"}],\"name\":\"EthDeposited\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint8\",\"name\":\"version\",\"type\":\"uint8\"}],\"name\":\"Initialized\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"previousOwner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"newOwner\",\"type\":\"address\"}],\"name\":\"OwnershipTransferStarted\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"previousOwner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"newOwner\",\"type\":\"address\"}],\"name\":\"OwnershipTransferred\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"Paused\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"bool\",\"name\":\"paused\",\"type\":\"bool\"}],\"name\":\"ProvingPaused\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"bool\",\"name\":\"paused\",\"type\":\"bool\"}],\"name\":\"ProvingPaused\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"TokenCredited\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"TokenCredited\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"TokenDebited\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"TokenDebited\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"TokenDeposited\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"TokenWithdrawn\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"blockId\",\"type\":\"uint256\"},{\"components\":[{\"internalType\":\"bytes32\",\"name\":\"parentHash\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"blockHash\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"signalRoot\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"graffiti\",\"type\":\"bytes32\"}],\"indexed\":false,\"internalType\":\"structTaikoData.Transition\",\"name\":\"tran\",\"type\":\"tuple\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"contester\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint96\",\"name\":\"contestBond\",\"type\":\"uint96\"},{\"indexed\":false,\"internalType\":\"uint16\",\"name\":\"tier\",\"type\":\"uint16\"}],\"name\":\"TransitionContested\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"blockId\",\"type\":\"uint256\"},{\"components\":[{\"internalType\":\"bytes32\",\"name\":\"parentHash\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"blockHash\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"signalRoot\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"graffiti\",\"type\":\"bytes32\"}],\"indexed\":false,\"internalType\":\"structTaikoData.Transition\",\"name\":\"tran\",\"type\":\"tuple\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"contester\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint96\",\"name\":\"contestBond\",\"type\":\"uint96\"},{\"indexed\":false,\"internalType\":\"uint16\",\"name\":\"tier\",\"type\":\"uint16\"}],\"name\":\"TransitionContested\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"blockId\",\"type\":\"uint256\"},{\"components\":[{\"internalType\":\"bytes32\",\"name\":\"parentHash\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"blockHash\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"signalRoot\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"graffiti\",\"type\":\"bytes32\"}],\"indexed\":false,\"internalType\":\"structTaikoData.Transition\",\"name\":\"tran\",\"type\":\"tuple\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"prover\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint96\",\"name\":\"validityBond\",\"type\":\"uint96\"},{\"indexed\":false,\"internalType\":\"uint16\",\"name\":\"tier\",\"type\":\"uint16\"}],\"name\":\"TransitionProved\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"blockId\",\"type\":\"uint256\"},{\"components\":[{\"internalType\":\"bytes32\",\"name\":\"parentHash\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"blockHash\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"signalRoot\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"graffiti\",\"type\":\"bytes32\"}],\"indexed\":false,\"internalType\":\"structTaikoData.Transition\",\"name\":\"tran\",\"type\":\"tuple\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"prover\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint96\",\"name\":\"validityBond\",\"type\":\"uint96\"},{\"indexed\":false,\"internalType\":\"uint16\",\"name\":\"tier\",\"type\":\"uint16\"}],\"name\":\"TransitionProved\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"Unpaused\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"acceptOwnership\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"addressManager\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"canDepositEthToL2\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"recipient\",\"type\":\"address\"}],\"name\":\"depositEtherToL2\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"depositTaikoToken\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"blockId\",\"type\":\"uint64\"}],\"name\":\"getBlock\",\"outputs\":[{\"components\":[{\"internalType\":\"bytes32\",\"name\":\"metaHash\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"assignedProver\",\"type\":\"address\"},{\"internalType\":\"uint96\",\"name\":\"livenessBond\",\"type\":\"uint96\"},{\"internalType\":\"uint64\",\"name\":\"blockId\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"proposedAt\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"proposedIn\",\"type\":\"uint64\"},{\"internalType\":\"uint32\",\"name\":\"nextTransitionId\",\"type\":\"uint32\"},{\"internalType\":\"uint32\",\"name\":\"verifiedTransitionId\",\"type\":\"uint32\"},{\"internalType\":\"bytes32[7]\",\"name\":\"__reserved\",\"type\":\"bytes32[7]\"}],\"internalType\":\"structTaikoData.Block\",\"name\":\"blk\",\"type\":\"tuple\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getConfig\",\"outputs\":[{\"components\":[{\"internalType\":\"uint64\",\"name\":\"chainId\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"blockMaxProposals\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"blockRingBufferSize\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"maxBlocksToVerifyPerProposal\",\"type\":\"uint64\"},{\"internalType\":\"uint32\",\"name\":\"blockMaxGasLimit\",\"type\":\"uint32\"},{\"internalType\":\"uint24\",\"name\":\"blockMaxTxListBytes\",\"type\":\"uint24\"},{\"internalType\":\"uint24\",\"name\":\"blobExpiry\",\"type\":\"uint24\"},{\"internalType\":\"bool\",\"name\":\"blobAllowedForDA\",\"type\":\"bool\"},{\"internalType\":\"uint96\",\"name\":\"livenessBond\",\"type\":\"uint96\"},{\"internalType\":\"uint256\",\"name\":\"ethDepositRingBufferSize\",\"type\":\"uint256\"},{\"internalType\":\"uint64\",\"name\":\"ethDepositMinCountPerBlock\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"ethDepositMaxCountPerBlock\",\"type\":\"uint64\"},{\"internalType\":\"uint96\",\"name\":\"ethDepositMinAmount\",\"type\":\"uint96\"},{\"internalType\":\"uint96\",\"name\":\"ethDepositMaxAmount\",\"type\":\"uint96\"},{\"internalType\":\"uint256\",\"name\":\"ethDepositGas\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"ethDepositMaxFee\",\"type\":\"uint256\"}],\"internalType\":\"structTaikoData.Config\",\"name\":\"\",\"type\":\"tuple\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"rand\",\"type\":\"uint256\"}],\"name\":\"getMinTier\",\"outputs\":[{\"internalType\":\"uint16\",\"name\":\"\",\"type\":\"uint16\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getStateVariables\",\"outputs\":[{\"components\":[{\"internalType\":\"uint64\",\"name\":\"genesisHeight\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"genesisTimestamp\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"numEthDeposits\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"nextEthDepositToProcess\",\"type\":\"uint64\"}],\"internalType\":\"structTaikoData.SlotA\",\"name\":\"a\",\"type\":\"tuple\"},{\"components\":[{\"internalType\":\"uint64\",\"name\":\"numBlocks\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"lastVerifiedBlockId\",\"type\":\"uint64\"},{\"internalType\":\"bool\",\"name\":\"provingPaused\",\"type\":\"bool\"}],\"internalType\":\"structTaikoData.SlotB\",\"name\":\"b\",\"type\":\"tuple\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"blockId\",\"type\":\"uint64\"}],\"name\":\"getSyncedSnippet\",\"outputs\":[{\"components\":[{\"internalType\":\"uint64\",\"name\":\"remoteBlockId\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"syncedInBlock\",\"type\":\"uint64\"},{\"internalType\":\"bytes32\",\"name\":\"blockHash\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"signalRoot\",\"type\":\"bytes32\"}],\"internalType\":\"structICrossChainSync.Snippet\",\"name\":\"\",\"type\":\"tuple\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"user\",\"type\":\"address\"}],\"name\":\"getTaikoTokenBalance\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint16\",\"name\":\"tierId\",\"type\":\"uint16\"}],\"name\":\"getTier\",\"outputs\":[{\"components\":[{\"internalType\":\"bytes32\",\"name\":\"verifierName\",\"type\":\"bytes32\"},{\"internalType\":\"uint96\",\"name\":\"validityBond\",\"type\":\"uint96\"},{\"internalType\":\"uint96\",\"name\":\"contestBond\",\"type\":\"uint96\"},{\"internalType\":\"uint24\",\"name\":\"cooldownWindow\",\"type\":\"uint24\"},{\"internalType\":\"uint16\",\"name\":\"provingWindow\",\"type\":\"uint16\"},{\"internalType\":\"uint8\",\"name\":\"maxBlocksToVerify\",\"type\":\"uint8\"}],\"internalType\":\"structITierProvider.Tier\",\"name\":\"\",\"type\":\"tuple\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getTierIds\",\"outputs\":[{\"internalType\":\"uint16[]\",\"name\":\"ids\",\"type\":\"uint16[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"blockId\",\"type\":\"uint64\"},{\"internalType\":\"bytes32\",\"name\":\"parentHash\",\"type\":\"bytes32\"}],\"name\":\"getTransition\",\"outputs\":[{\"components\":[{\"internalType\":\"bytes32\",\"name\":\"key\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"blockHash\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"signalRoot\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"prover\",\"type\":\"address\"},{\"internalType\":\"uint96\",\"name\":\"validityBond\",\"type\":\"uint96\"},{\"internalType\":\"address\",\"name\":\"contester\",\"type\":\"address\"},{\"internalType\":\"uint96\",\"name\":\"contestBond\",\"type\":\"uint96\"},{\"internalType\":\"uint64\",\"name\":\"timestamp\",\"type\":\"uint64\"},{\"internalType\":\"uint16\",\"name\":\"tier\",\"type\":\"uint16\"},{\"internalType\":\"uint8\",\"name\":\"contestations\",\"type\":\"uint8\"},{\"internalType\":\"bytes32[4]\",\"name\":\"__reserved\",\"type\":\"bytes32[4]\"}],\"internalType\":\"structTaikoData.TransitionState\",\"name\":\"\",\"type\":\"tuple\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_addressManager\",\"type\":\"address\"},{\"internalType\":\"bytes32\",\"name\":\"_genesisBlockHash\",\"type\":\"bytes32\"}],\"name\":\"init\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"blobHash\",\"type\":\"bytes32\"}],\"name\":\"isBlobReusable\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"isConfigValid\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"owner\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"pause\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bool\",\"name\":\"pause\",\"type\":\"bool\"}],\"name\":\"pauseProving\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"paused\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"pendingOwner\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"params\",\"type\":\"bytes\"},{\"internalType\":\"bytes\",\"name\":\"txList\",\"type\":\"bytes\"}],\"name\":\"proposeBlock\",\"outputs\":[{\"components\":[{\"internalType\":\"bytes32\",\"name\":\"l1Hash\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"difficulty\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"blobHash\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"extraData\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"depositsHash\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"coinbase\",\"type\":\"address\"},{\"internalType\":\"uint64\",\"name\":\"id\",\"type\":\"uint64\"},{\"internalType\":\"uint32\",\"name\":\"gasLimit\",\"type\":\"uint32\"},{\"internalType\":\"uint64\",\"name\":\"timestamp\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"l1Height\",\"type\":\"uint64\"},{\"internalType\":\"uint24\",\"name\":\"txListByteOffset\",\"type\":\"uint24\"},{\"internalType\":\"uint24\",\"name\":\"txListByteSize\",\"type\":\"uint24\"},{\"internalType\":\"uint16\",\"name\":\"minTier\",\"type\":\"uint16\"},{\"internalType\":\"bool\",\"name\":\"blobUsed\",\"type\":\"bool\"},{\"internalType\":\"bytes32\",\"name\":\"parentMetaHash\",\"type\":\"bytes32\"}],\"internalType\":\"structTaikoData.BlockMetadata\",\"name\":\"meta\",\"type\":\"tuple\"},{\"components\":[{\"internalType\":\"address\",\"name\":\"recipient\",\"type\":\"address\"},{\"internalType\":\"uint96\",\"name\":\"amount\",\"type\":\"uint96\"},{\"internalType\":\"uint64\",\"name\":\"id\",\"type\":\"uint64\"}],\"internalType\":\"structTaikoData.EthDeposit[]\",\"name\":\"depositsProcessed\",\"type\":\"tuple[]\"}],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"blockId\",\"type\":\"uint64\"},{\"internalType\":\"bytes\",\"name\":\"input\",\"type\":\"bytes\"}],\"name\":\"proveBlock\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"renounceOwnership\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"chainId\",\"type\":\"uint64\"},{\"internalType\":\"bytes32\",\"name\":\"name\",\"type\":\"bytes32\"},{\"internalType\":\"bool\",\"name\":\"allowZeroAddress\",\"type\":\"bool\"}],\"name\":\"resolve\",\"outputs\":[{\"internalType\":\"addresspayable\",\"name\":\"addr\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"name\",\"type\":\"bytes32\"},{\"internalType\":\"bool\",\"name\":\"allowZeroAddress\",\"type\":\"bool\"}],\"name\":\"resolve\",\"outputs\":[{\"internalType\":\"addresspayable\",\"name\":\"addr\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"state\",\"outputs\":[{\"components\":[{\"internalType\":\"uint64\",\"name\":\"genesisHeight\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"genesisTimestamp\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"numEthDeposits\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"nextEthDepositToProcess\",\"type\":\"uint64\"}],\"internalType\":\"structTaikoData.SlotA\",\"name\":\"slotA\",\"type\":\"tuple\"},{\"components\":[{\"internalType\":\"uint64\",\"name\":\"numBlocks\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"lastVerifiedBlockId\",\"type\":\"uint64\"},{\"internalType\":\"bool\",\"name\":\"provingPaused\",\"type\":\"bool\"}],\"internalType\":\"structTaikoData.SlotB\",\"name\":\"slotB\",\"type\":\"tuple\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"newOwner\",\"type\":\"address\"}],\"name\":\"transferOwnership\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"unpause\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"maxBlocksToVerify\",\"type\":\"uint64\"}],\"name\":\"verifyBlocks\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"withdrawTaikoToken\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"stateMutability\":\"payable\",\"type\":\"receive\"}]", } // TaikoL1ABI is the input ABI used to generate the binding from. @@ -351,7 +359,7 @@ func (_TaikoL1 *TaikoL1CallerSession) CanDepositEthToL2(amount *big.Int) (bool, // GetBlock is a free data retrieval call binding the contract method 0x5fa15e79. // -// Solidity: function getBlock(uint64 blockId) view returns((bytes32,address,uint96,uint64,uint64,uint32,uint32,uint16,bytes32[7]) blk) +// Solidity: function getBlock(uint64 blockId) view returns((bytes32,address,uint96,uint64,uint64,uint64,uint32,uint32,bytes32[7]) blk) func (_TaikoL1 *TaikoL1Caller) GetBlock(opts *bind.CallOpts, blockId uint64) (TaikoDataBlock, error) { var out []interface{} err := _TaikoL1.contract.Call(opts, &out, "getBlock", blockId) @@ -368,21 +376,21 @@ func (_TaikoL1 *TaikoL1Caller) GetBlock(opts *bind.CallOpts, blockId uint64) (Ta // GetBlock is a free data retrieval call binding the contract method 0x5fa15e79. // -// Solidity: function getBlock(uint64 blockId) view returns((bytes32,address,uint96,uint64,uint64,uint32,uint32,uint16,bytes32[7]) blk) +// Solidity: function getBlock(uint64 blockId) view returns((bytes32,address,uint96,uint64,uint64,uint64,uint32,uint32,bytes32[7]) blk) func (_TaikoL1 *TaikoL1Session) GetBlock(blockId uint64) (TaikoDataBlock, error) { return _TaikoL1.Contract.GetBlock(&_TaikoL1.CallOpts, blockId) } // GetBlock is a free data retrieval call binding the contract method 0x5fa15e79. // -// Solidity: function getBlock(uint64 blockId) view returns((bytes32,address,uint96,uint64,uint64,uint32,uint32,uint16,bytes32[7]) blk) +// Solidity: function getBlock(uint64 blockId) view returns((bytes32,address,uint96,uint64,uint64,uint64,uint32,uint32,bytes32[7]) blk) func (_TaikoL1 *TaikoL1CallerSession) GetBlock(blockId uint64) (TaikoDataBlock, error) { return _TaikoL1.Contract.GetBlock(&_TaikoL1.CallOpts, blockId) } // GetConfig is a free data retrieval call binding the contract method 0xc3f909d4. // -// Solidity: function getConfig() view returns((uint256,uint64,uint64,uint64,uint32,uint24,uint96,uint256,uint64,uint64,uint96,uint96,uint256,uint256)) +// Solidity: function getConfig() view returns((uint64,uint64,uint64,uint64,uint32,uint24,uint24,bool,uint96,uint256,uint64,uint64,uint96,uint96,uint256,uint256)) func (_TaikoL1 *TaikoL1Caller) GetConfig(opts *bind.CallOpts) (TaikoDataConfig, error) { var out []interface{} err := _TaikoL1.contract.Call(opts, &out, "getConfig") @@ -399,14 +407,14 @@ func (_TaikoL1 *TaikoL1Caller) GetConfig(opts *bind.CallOpts) (TaikoDataConfig, // GetConfig is a free data retrieval call binding the contract method 0xc3f909d4. // -// Solidity: function getConfig() view returns((uint256,uint64,uint64,uint64,uint32,uint24,uint96,uint256,uint64,uint64,uint96,uint96,uint256,uint256)) +// Solidity: function getConfig() view returns((uint64,uint64,uint64,uint64,uint32,uint24,uint24,bool,uint96,uint256,uint64,uint64,uint96,uint96,uint256,uint256)) func (_TaikoL1 *TaikoL1Session) GetConfig() (TaikoDataConfig, error) { return _TaikoL1.Contract.GetConfig(&_TaikoL1.CallOpts) } // GetConfig is a free data retrieval call binding the contract method 0xc3f909d4. // -// Solidity: function getConfig() view returns((uint256,uint64,uint64,uint64,uint32,uint24,uint96,uint256,uint64,uint64,uint96,uint96,uint256,uint256)) +// Solidity: function getConfig() view returns((uint64,uint64,uint64,uint64,uint32,uint24,uint24,bool,uint96,uint256,uint64,uint64,uint96,uint96,uint256,uint256)) func (_TaikoL1 *TaikoL1CallerSession) GetConfig() (TaikoDataConfig, error) { return _TaikoL1.Contract.GetConfig(&_TaikoL1.CallOpts) } @@ -444,38 +452,52 @@ func (_TaikoL1 *TaikoL1CallerSession) GetMinTier(rand *big.Int) (uint16, error) // GetStateVariables is a free data retrieval call binding the contract method 0xdde89cf5. // -// Solidity: function getStateVariables() view returns((uint64,uint64,uint64,uint64,uint64,uint64)) -func (_TaikoL1 *TaikoL1Caller) GetStateVariables(opts *bind.CallOpts) (TaikoDataStateVariables, error) { +// Solidity: function getStateVariables() view returns((uint64,uint64,uint64,uint64) a, (uint64,uint64,bool) b) +func (_TaikoL1 *TaikoL1Caller) GetStateVariables(opts *bind.CallOpts) (struct { + A TaikoDataSlotA + B TaikoDataSlotB +}, error) { var out []interface{} err := _TaikoL1.contract.Call(opts, &out, "getStateVariables") + outstruct := new(struct { + A TaikoDataSlotA + B TaikoDataSlotB + }) if err != nil { - return *new(TaikoDataStateVariables), err + return *outstruct, err } - out0 := *abi.ConvertType(out[0], new(TaikoDataStateVariables)).(*TaikoDataStateVariables) + outstruct.A = *abi.ConvertType(out[0], new(TaikoDataSlotA)).(*TaikoDataSlotA) + outstruct.B = *abi.ConvertType(out[1], new(TaikoDataSlotB)).(*TaikoDataSlotB) - return out0, err + return *outstruct, err } // GetStateVariables is a free data retrieval call binding the contract method 0xdde89cf5. // -// Solidity: function getStateVariables() view returns((uint64,uint64,uint64,uint64,uint64,uint64)) -func (_TaikoL1 *TaikoL1Session) GetStateVariables() (TaikoDataStateVariables, error) { +// Solidity: function getStateVariables() view returns((uint64,uint64,uint64,uint64) a, (uint64,uint64,bool) b) +func (_TaikoL1 *TaikoL1Session) GetStateVariables() (struct { + A TaikoDataSlotA + B TaikoDataSlotB +}, error) { return _TaikoL1.Contract.GetStateVariables(&_TaikoL1.CallOpts) } // GetStateVariables is a free data retrieval call binding the contract method 0xdde89cf5. // -// Solidity: function getStateVariables() view returns((uint64,uint64,uint64,uint64,uint64,uint64)) -func (_TaikoL1 *TaikoL1CallerSession) GetStateVariables() (TaikoDataStateVariables, error) { +// Solidity: function getStateVariables() view returns((uint64,uint64,uint64,uint64) a, (uint64,uint64,bool) b) +func (_TaikoL1 *TaikoL1CallerSession) GetStateVariables() (struct { + A TaikoDataSlotA + B TaikoDataSlotB +}, error) { return _TaikoL1.Contract.GetStateVariables(&_TaikoL1.CallOpts) } // GetSyncedSnippet is a free data retrieval call binding the contract method 0x8cfb0459. // -// Solidity: function getSyncedSnippet(uint64 blockId) view returns((bytes32,bytes32) data) +// Solidity: function getSyncedSnippet(uint64 blockId) view returns((uint64,uint64,bytes32,bytes32)) func (_TaikoL1 *TaikoL1Caller) GetSyncedSnippet(opts *bind.CallOpts, blockId uint64) (ICrossChainSyncSnippet, error) { var out []interface{} err := _TaikoL1.contract.Call(opts, &out, "getSyncedSnippet", blockId) @@ -492,14 +514,14 @@ func (_TaikoL1 *TaikoL1Caller) GetSyncedSnippet(opts *bind.CallOpts, blockId uin // GetSyncedSnippet is a free data retrieval call binding the contract method 0x8cfb0459. // -// Solidity: function getSyncedSnippet(uint64 blockId) view returns((bytes32,bytes32) data) +// Solidity: function getSyncedSnippet(uint64 blockId) view returns((uint64,uint64,bytes32,bytes32)) func (_TaikoL1 *TaikoL1Session) GetSyncedSnippet(blockId uint64) (ICrossChainSyncSnippet, error) { return _TaikoL1.Contract.GetSyncedSnippet(&_TaikoL1.CallOpts, blockId) } // GetSyncedSnippet is a free data retrieval call binding the contract method 0x8cfb0459. // -// Solidity: function getSyncedSnippet(uint64 blockId) view returns((bytes32,bytes32) data) +// Solidity: function getSyncedSnippet(uint64 blockId) view returns((uint64,uint64,bytes32,bytes32)) func (_TaikoL1 *TaikoL1CallerSession) GetSyncedSnippet(blockId uint64) (ICrossChainSyncSnippet, error) { return _TaikoL1.Contract.GetSyncedSnippet(&_TaikoL1.CallOpts, blockId) } @@ -568,7 +590,7 @@ func (_TaikoL1 *TaikoL1CallerSession) GetTier(tierId uint16) (ITierProviderTier, // GetTierIds is a free data retrieval call binding the contract method 0xd8cde1c6. // -// Solidity: function getTierIds() view returns(uint16[]) +// Solidity: function getTierIds() view returns(uint16[] ids) func (_TaikoL1 *TaikoL1Caller) GetTierIds(opts *bind.CallOpts) ([]uint16, error) { var out []interface{} err := _TaikoL1.contract.Call(opts, &out, "getTierIds") @@ -585,30 +607,30 @@ func (_TaikoL1 *TaikoL1Caller) GetTierIds(opts *bind.CallOpts) ([]uint16, error) // GetTierIds is a free data retrieval call binding the contract method 0xd8cde1c6. // -// Solidity: function getTierIds() view returns(uint16[]) +// Solidity: function getTierIds() view returns(uint16[] ids) func (_TaikoL1 *TaikoL1Session) GetTierIds() ([]uint16, error) { return _TaikoL1.Contract.GetTierIds(&_TaikoL1.CallOpts) } // GetTierIds is a free data retrieval call binding the contract method 0xd8cde1c6. // -// Solidity: function getTierIds() view returns(uint16[]) +// Solidity: function getTierIds() view returns(uint16[] ids) func (_TaikoL1 *TaikoL1CallerSession) GetTierIds() ([]uint16, error) { return _TaikoL1.Contract.GetTierIds(&_TaikoL1.CallOpts) } // GetTransition is a free data retrieval call binding the contract method 0xfd257e29. // -// Solidity: function getTransition(uint64 blockId, bytes32 parentHash) view returns((bytes32,bytes32,bytes32,address,uint96,address,uint96,uint64,uint16,bytes32[4])) -func (_TaikoL1 *TaikoL1Caller) GetTransition(opts *bind.CallOpts, blockId uint64, parentHash [32]byte) (TaikoDataTransition, error) { +// Solidity: function getTransition(uint64 blockId, bytes32 parentHash) view returns((bytes32,bytes32,bytes32,address,uint96,address,uint96,uint64,uint16,uint8,bytes32[4])) +func (_TaikoL1 *TaikoL1Caller) GetTransition(opts *bind.CallOpts, blockId uint64, parentHash [32]byte) (TaikoDataTransitionState, error) { var out []interface{} err := _TaikoL1.contract.Call(opts, &out, "getTransition", blockId, parentHash) if err != nil { - return *new(TaikoDataTransition), err + return *new(TaikoDataTransitionState), err } - out0 := *abi.ConvertType(out[0], new(TaikoDataTransition)).(*TaikoDataTransition) + out0 := *abi.ConvertType(out[0], new(TaikoDataTransitionState)).(*TaikoDataTransitionState) return out0, err @@ -616,18 +638,49 @@ func (_TaikoL1 *TaikoL1Caller) GetTransition(opts *bind.CallOpts, blockId uint64 // GetTransition is a free data retrieval call binding the contract method 0xfd257e29. // -// Solidity: function getTransition(uint64 blockId, bytes32 parentHash) view returns((bytes32,bytes32,bytes32,address,uint96,address,uint96,uint64,uint16,bytes32[4])) -func (_TaikoL1 *TaikoL1Session) GetTransition(blockId uint64, parentHash [32]byte) (TaikoDataTransition, error) { +// Solidity: function getTransition(uint64 blockId, bytes32 parentHash) view returns((bytes32,bytes32,bytes32,address,uint96,address,uint96,uint64,uint16,uint8,bytes32[4])) +func (_TaikoL1 *TaikoL1Session) GetTransition(blockId uint64, parentHash [32]byte) (TaikoDataTransitionState, error) { return _TaikoL1.Contract.GetTransition(&_TaikoL1.CallOpts, blockId, parentHash) } // GetTransition is a free data retrieval call binding the contract method 0xfd257e29. // -// Solidity: function getTransition(uint64 blockId, bytes32 parentHash) view returns((bytes32,bytes32,bytes32,address,uint96,address,uint96,uint64,uint16,bytes32[4])) -func (_TaikoL1 *TaikoL1CallerSession) GetTransition(blockId uint64, parentHash [32]byte) (TaikoDataTransition, error) { +// Solidity: function getTransition(uint64 blockId, bytes32 parentHash) view returns((bytes32,bytes32,bytes32,address,uint96,address,uint96,uint64,uint16,uint8,bytes32[4])) +func (_TaikoL1 *TaikoL1CallerSession) GetTransition(blockId uint64, parentHash [32]byte) (TaikoDataTransitionState, error) { return _TaikoL1.Contract.GetTransition(&_TaikoL1.CallOpts, blockId, parentHash) } +// IsBlobReusable is a free data retrieval call binding the contract method 0xb67d7638. +// +// Solidity: function isBlobReusable(bytes32 blobHash) view returns(bool) +func (_TaikoL1 *TaikoL1Caller) IsBlobReusable(opts *bind.CallOpts, blobHash [32]byte) (bool, error) { + var out []interface{} + err := _TaikoL1.contract.Call(opts, &out, "isBlobReusable", blobHash) + + if err != nil { + return *new(bool), err + } + + out0 := *abi.ConvertType(out[0], new(bool)).(*bool) + + return out0, err + +} + +// IsBlobReusable is a free data retrieval call binding the contract method 0xb67d7638. +// +// Solidity: function isBlobReusable(bytes32 blobHash) view returns(bool) +func (_TaikoL1 *TaikoL1Session) IsBlobReusable(blobHash [32]byte) (bool, error) { + return _TaikoL1.Contract.IsBlobReusable(&_TaikoL1.CallOpts, blobHash) +} + +// IsBlobReusable is a free data retrieval call binding the contract method 0xb67d7638. +// +// Solidity: function isBlobReusable(bytes32 blobHash) view returns(bool) +func (_TaikoL1 *TaikoL1CallerSession) IsBlobReusable(blobHash [32]byte) (bool, error) { + return _TaikoL1.Contract.IsBlobReusable(&_TaikoL1.CallOpts, blobHash) +} + // IsConfigValid is a free data retrieval call binding the contract method 0xe3f1bdc5. // // Solidity: function isConfigValid() view returns(bool) @@ -721,10 +774,41 @@ func (_TaikoL1 *TaikoL1CallerSession) Paused() (bool, error) { return _TaikoL1.Contract.Paused(&_TaikoL1.CallOpts) } -// Resolve is a free data retrieval call binding the contract method 0x6c6563f6. +// PendingOwner is a free data retrieval call binding the contract method 0xe30c3978. +// +// Solidity: function pendingOwner() view returns(address) +func (_TaikoL1 *TaikoL1Caller) PendingOwner(opts *bind.CallOpts) (common.Address, error) { + var out []interface{} + err := _TaikoL1.contract.Call(opts, &out, "pendingOwner") + + if err != nil { + return *new(common.Address), err + } + + out0 := *abi.ConvertType(out[0], new(common.Address)).(*common.Address) + + return out0, err + +} + +// PendingOwner is a free data retrieval call binding the contract method 0xe30c3978. +// +// Solidity: function pendingOwner() view returns(address) +func (_TaikoL1 *TaikoL1Session) PendingOwner() (common.Address, error) { + return _TaikoL1.Contract.PendingOwner(&_TaikoL1.CallOpts) +} + +// PendingOwner is a free data retrieval call binding the contract method 0xe30c3978. // -// Solidity: function resolve(uint256 chainId, bytes32 name, bool allowZeroAddress) view returns(address addr) -func (_TaikoL1 *TaikoL1Caller) Resolve(opts *bind.CallOpts, chainId *big.Int, name [32]byte, allowZeroAddress bool) (common.Address, error) { +// Solidity: function pendingOwner() view returns(address) +func (_TaikoL1 *TaikoL1CallerSession) PendingOwner() (common.Address, error) { + return _TaikoL1.Contract.PendingOwner(&_TaikoL1.CallOpts) +} + +// Resolve is a free data retrieval call binding the contract method 0x3eb6b8cf. +// +// Solidity: function resolve(uint64 chainId, bytes32 name, bool allowZeroAddress) view returns(address addr) +func (_TaikoL1 *TaikoL1Caller) Resolve(opts *bind.CallOpts, chainId uint64, name [32]byte, allowZeroAddress bool) (common.Address, error) { var out []interface{} err := _TaikoL1.contract.Call(opts, &out, "resolve", chainId, name, allowZeroAddress) @@ -738,17 +822,17 @@ func (_TaikoL1 *TaikoL1Caller) Resolve(opts *bind.CallOpts, chainId *big.Int, na } -// Resolve is a free data retrieval call binding the contract method 0x6c6563f6. +// Resolve is a free data retrieval call binding the contract method 0x3eb6b8cf. // -// Solidity: function resolve(uint256 chainId, bytes32 name, bool allowZeroAddress) view returns(address addr) -func (_TaikoL1 *TaikoL1Session) Resolve(chainId *big.Int, name [32]byte, allowZeroAddress bool) (common.Address, error) { +// Solidity: function resolve(uint64 chainId, bytes32 name, bool allowZeroAddress) view returns(address addr) +func (_TaikoL1 *TaikoL1Session) Resolve(chainId uint64, name [32]byte, allowZeroAddress bool) (common.Address, error) { return _TaikoL1.Contract.Resolve(&_TaikoL1.CallOpts, chainId, name, allowZeroAddress) } -// Resolve is a free data retrieval call binding the contract method 0x6c6563f6. +// Resolve is a free data retrieval call binding the contract method 0x3eb6b8cf. // -// Solidity: function resolve(uint256 chainId, bytes32 name, bool allowZeroAddress) view returns(address addr) -func (_TaikoL1 *TaikoL1CallerSession) Resolve(chainId *big.Int, name [32]byte, allowZeroAddress bool) (common.Address, error) { +// Solidity: function resolve(uint64 chainId, bytes32 name, bool allowZeroAddress) view returns(address addr) +func (_TaikoL1 *TaikoL1CallerSession) Resolve(chainId uint64, name [32]byte, allowZeroAddress bool) (common.Address, error) { return _TaikoL1.Contract.Resolve(&_TaikoL1.CallOpts, chainId, name, allowZeroAddress) } @@ -785,7 +869,7 @@ func (_TaikoL1 *TaikoL1CallerSession) Resolve0(name [32]byte, allowZeroAddress b // State is a free data retrieval call binding the contract method 0xc19d93fb. // -// Solidity: function state() view returns((uint64,uint64,uint64,uint64) slotA, (uint64,uint64,uint64) slotB) +// Solidity: function state() view returns((uint64,uint64,uint64,uint64) slotA, (uint64,uint64,bool) slotB) func (_TaikoL1 *TaikoL1Caller) State(opts *bind.CallOpts) (struct { SlotA TaikoDataSlotA SlotB TaikoDataSlotB @@ -810,7 +894,7 @@ func (_TaikoL1 *TaikoL1Caller) State(opts *bind.CallOpts) (struct { // State is a free data retrieval call binding the contract method 0xc19d93fb. // -// Solidity: function state() view returns((uint64,uint64,uint64,uint64) slotA, (uint64,uint64,uint64) slotB) +// Solidity: function state() view returns((uint64,uint64,uint64,uint64) slotA, (uint64,uint64,bool) slotB) func (_TaikoL1 *TaikoL1Session) State() (struct { SlotA TaikoDataSlotA SlotB TaikoDataSlotB @@ -820,7 +904,7 @@ func (_TaikoL1 *TaikoL1Session) State() (struct { // State is a free data retrieval call binding the contract method 0xc19d93fb. // -// Solidity: function state() view returns((uint64,uint64,uint64,uint64) slotA, (uint64,uint64,uint64) slotB) +// Solidity: function state() view returns((uint64,uint64,uint64,uint64) slotA, (uint64,uint64,bool) slotB) func (_TaikoL1 *TaikoL1CallerSession) State() (struct { SlotA TaikoDataSlotA SlotB TaikoDataSlotB @@ -828,6 +912,27 @@ func (_TaikoL1 *TaikoL1CallerSession) State() (struct { return _TaikoL1.Contract.State(&_TaikoL1.CallOpts) } +// AcceptOwnership is a paid mutator transaction binding the contract method 0x79ba5097. +// +// Solidity: function acceptOwnership() returns() +func (_TaikoL1 *TaikoL1Transactor) AcceptOwnership(opts *bind.TransactOpts) (*types.Transaction, error) { + return _TaikoL1.contract.Transact(opts, "acceptOwnership") +} + +// AcceptOwnership is a paid mutator transaction binding the contract method 0x79ba5097. +// +// Solidity: function acceptOwnership() returns() +func (_TaikoL1 *TaikoL1Session) AcceptOwnership() (*types.Transaction, error) { + return _TaikoL1.Contract.AcceptOwnership(&_TaikoL1.TransactOpts) +} + +// AcceptOwnership is a paid mutator transaction binding the contract method 0x79ba5097. +// +// Solidity: function acceptOwnership() returns() +func (_TaikoL1 *TaikoL1TransactorSession) AcceptOwnership() (*types.Transaction, error) { + return _TaikoL1.Contract.AcceptOwnership(&_TaikoL1.TransactOpts) +} + // DepositEtherToL2 is a paid mutator transaction binding the contract method 0x047a289d. // // Solidity: function depositEtherToL2(address recipient) payable returns() @@ -912,25 +1017,46 @@ func (_TaikoL1 *TaikoL1TransactorSession) Pause() (*types.Transaction, error) { return _TaikoL1.Contract.Pause(&_TaikoL1.TransactOpts) } -// ProposeBlock is a paid mutator transaction binding the contract method 0x04dc4c8b. +// PauseProving is a paid mutator transaction binding the contract method 0xff00c391. +// +// Solidity: function pauseProving(bool pause) returns() +func (_TaikoL1 *TaikoL1Transactor) PauseProving(opts *bind.TransactOpts, pause bool) (*types.Transaction, error) { + return _TaikoL1.contract.Transact(opts, "pauseProving", pause) +} + +// PauseProving is a paid mutator transaction binding the contract method 0xff00c391. +// +// Solidity: function pauseProving(bool pause) returns() +func (_TaikoL1 *TaikoL1Session) PauseProving(pause bool) (*types.Transaction, error) { + return _TaikoL1.Contract.PauseProving(&_TaikoL1.TransactOpts, pause) +} + +// PauseProving is a paid mutator transaction binding the contract method 0xff00c391. +// +// Solidity: function pauseProving(bool pause) returns() +func (_TaikoL1 *TaikoL1TransactorSession) PauseProving(pause bool) (*types.Transaction, error) { + return _TaikoL1.Contract.PauseProving(&_TaikoL1.TransactOpts, pause) +} + +// ProposeBlock is a paid mutator transaction binding the contract method 0xef16e845. // -// Solidity: function proposeBlock(bytes32 txListHash, bytes32 extraData, bytes assignment, bytes txList) payable returns((bytes32,bytes32,bytes32,bytes32,uint64,uint64,uint64,uint32,address,(address,uint96,uint64)[]) meta) -func (_TaikoL1 *TaikoL1Transactor) ProposeBlock(opts *bind.TransactOpts, txListHash [32]byte, extraData [32]byte, assignment []byte, txList []byte) (*types.Transaction, error) { - return _TaikoL1.contract.Transact(opts, "proposeBlock", txListHash, extraData, assignment, txList) +// Solidity: function proposeBlock(bytes params, bytes txList) payable returns((bytes32,bytes32,bytes32,bytes32,bytes32,address,uint64,uint32,uint64,uint64,uint24,uint24,uint16,bool,bytes32) meta, (address,uint96,uint64)[] depositsProcessed) +func (_TaikoL1 *TaikoL1Transactor) ProposeBlock(opts *bind.TransactOpts, params []byte, txList []byte) (*types.Transaction, error) { + return _TaikoL1.contract.Transact(opts, "proposeBlock", params, txList) } -// ProposeBlock is a paid mutator transaction binding the contract method 0x04dc4c8b. +// ProposeBlock is a paid mutator transaction binding the contract method 0xef16e845. // -// Solidity: function proposeBlock(bytes32 txListHash, bytes32 extraData, bytes assignment, bytes txList) payable returns((bytes32,bytes32,bytes32,bytes32,uint64,uint64,uint64,uint32,address,(address,uint96,uint64)[]) meta) -func (_TaikoL1 *TaikoL1Session) ProposeBlock(txListHash [32]byte, extraData [32]byte, assignment []byte, txList []byte) (*types.Transaction, error) { - return _TaikoL1.Contract.ProposeBlock(&_TaikoL1.TransactOpts, txListHash, extraData, assignment, txList) +// Solidity: function proposeBlock(bytes params, bytes txList) payable returns((bytes32,bytes32,bytes32,bytes32,bytes32,address,uint64,uint32,uint64,uint64,uint24,uint24,uint16,bool,bytes32) meta, (address,uint96,uint64)[] depositsProcessed) +func (_TaikoL1 *TaikoL1Session) ProposeBlock(params []byte, txList []byte) (*types.Transaction, error) { + return _TaikoL1.Contract.ProposeBlock(&_TaikoL1.TransactOpts, params, txList) } -// ProposeBlock is a paid mutator transaction binding the contract method 0x04dc4c8b. +// ProposeBlock is a paid mutator transaction binding the contract method 0xef16e845. // -// Solidity: function proposeBlock(bytes32 txListHash, bytes32 extraData, bytes assignment, bytes txList) payable returns((bytes32,bytes32,bytes32,bytes32,uint64,uint64,uint64,uint32,address,(address,uint96,uint64)[]) meta) -func (_TaikoL1 *TaikoL1TransactorSession) ProposeBlock(txListHash [32]byte, extraData [32]byte, assignment []byte, txList []byte) (*types.Transaction, error) { - return _TaikoL1.Contract.ProposeBlock(&_TaikoL1.TransactOpts, txListHash, extraData, assignment, txList) +// Solidity: function proposeBlock(bytes params, bytes txList) payable returns((bytes32,bytes32,bytes32,bytes32,bytes32,address,uint64,uint32,uint64,uint64,uint24,uint24,uint16,bool,bytes32) meta, (address,uint96,uint64)[] depositsProcessed) +func (_TaikoL1 *TaikoL1TransactorSession) ProposeBlock(params []byte, txList []byte) (*types.Transaction, error) { + return _TaikoL1.Contract.ProposeBlock(&_TaikoL1.TransactOpts, params, txList) } // ProveBlock is a paid mutator transaction binding the contract method 0x10d008bd. @@ -1080,9 +1206,9 @@ func (_TaikoL1 *TaikoL1TransactorSession) Receive() (*types.Transaction, error) return _TaikoL1.Contract.Receive(&_TaikoL1.TransactOpts) } -// TaikoL1BlockProposedIterator is returned from FilterBlockProposed and is used to iterate over the raw logs and unpacked data for BlockProposed events raised by the TaikoL1 contract. -type TaikoL1BlockProposedIterator struct { - Event *TaikoL1BlockProposed // Event containing the contract specifics and raw log +// TaikoL1BlobCachedIterator is returned from FilterBlobCached and is used to iterate over the raw logs and unpacked data for BlobCached events raised by the TaikoL1 contract. +type TaikoL1BlobCachedIterator struct { + Event *TaikoL1BlobCached // Event containing the contract specifics and raw log contract *bind.BoundContract // Generic contract to use for unpacking event data event string // Event name to use for unpacking event data @@ -1096,7 +1222,7 @@ type TaikoL1BlockProposedIterator struct { // Next advances the iterator to the subsequent event, returning whether there // are any more events found. In case of a retrieval or parsing error, false is // returned and Error() can be queried for the exact failure. -func (it *TaikoL1BlockProposedIterator) Next() bool { +func (it *TaikoL1BlobCachedIterator) Next() bool { // If the iterator failed, stop iterating if it.fail != nil { return false @@ -1105,7 +1231,7 @@ func (it *TaikoL1BlockProposedIterator) Next() bool { if it.done { select { case log := <-it.logs: - it.Event = new(TaikoL1BlockProposed) + it.Event = new(TaikoL1BlobCached) if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { it.fail = err return false @@ -1120,7 +1246,7 @@ func (it *TaikoL1BlockProposedIterator) Next() bool { // Iterator still in progress, wait for either a data or an error event select { case log := <-it.logs: - it.Event = new(TaikoL1BlockProposed) + it.Event = new(TaikoL1BlobCached) if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { it.fail = err return false @@ -1136,64 +1262,41 @@ func (it *TaikoL1BlockProposedIterator) Next() bool { } // Error returns any retrieval or parsing error occurred during filtering. -func (it *TaikoL1BlockProposedIterator) Error() error { +func (it *TaikoL1BlobCachedIterator) Error() error { return it.fail } // Close terminates the iteration process, releasing any pending underlying // resources. -func (it *TaikoL1BlockProposedIterator) Close() error { +func (it *TaikoL1BlobCachedIterator) Close() error { it.sub.Unsubscribe() return nil } -// TaikoL1BlockProposed represents a BlockProposed event raised by the TaikoL1 contract. -type TaikoL1BlockProposed struct { - BlockId *big.Int - AssignedProver common.Address - LivenessBond *big.Int - ProverFee *big.Int - MinTier uint16 - Meta TaikoDataBlockMetadata - Raw types.Log // Blockchain specific contextual infos +// TaikoL1BlobCached represents a BlobCached event raised by the TaikoL1 contract. +type TaikoL1BlobCached struct { + BlobHash [32]byte + Raw types.Log // Blockchain specific contextual infos } -// FilterBlockProposed is a free log retrieval operation binding the contract event 0xc857f5d042c0ceb165ef70eab0812ba2e6b15a03ce07638b58efc04dbb175ef6. +// FilterBlobCached is a free log retrieval operation binding the contract event 0xb303828b7c63a3e480df6d8239eb7be1d4a1eb1c8878d6fa461103b94f4ce852. // -// Solidity: event BlockProposed(uint256 indexed blockId, address indexed assignedProver, uint96 livenessBond, uint256 proverFee, uint16 minTier, (bytes32,bytes32,bytes32,bytes32,uint64,uint64,uint64,uint32,address,(address,uint96,uint64)[]) meta) -func (_TaikoL1 *TaikoL1Filterer) FilterBlockProposed(opts *bind.FilterOpts, blockId []*big.Int, assignedProver []common.Address) (*TaikoL1BlockProposedIterator, error) { - - var blockIdRule []interface{} - for _, blockIdItem := range blockId { - blockIdRule = append(blockIdRule, blockIdItem) - } - var assignedProverRule []interface{} - for _, assignedProverItem := range assignedProver { - assignedProverRule = append(assignedProverRule, assignedProverItem) - } +// Solidity: event BlobCached(bytes32 blobHash) +func (_TaikoL1 *TaikoL1Filterer) FilterBlobCached(opts *bind.FilterOpts) (*TaikoL1BlobCachedIterator, error) { - logs, sub, err := _TaikoL1.contract.FilterLogs(opts, "BlockProposed", blockIdRule, assignedProverRule) + logs, sub, err := _TaikoL1.contract.FilterLogs(opts, "BlobCached") if err != nil { return nil, err } - return &TaikoL1BlockProposedIterator{contract: _TaikoL1.contract, event: "BlockProposed", logs: logs, sub: sub}, nil + return &TaikoL1BlobCachedIterator{contract: _TaikoL1.contract, event: "BlobCached", logs: logs, sub: sub}, nil } -// WatchBlockProposed is a free log subscription operation binding the contract event 0xc857f5d042c0ceb165ef70eab0812ba2e6b15a03ce07638b58efc04dbb175ef6. +// WatchBlobCached is a free log subscription operation binding the contract event 0xb303828b7c63a3e480df6d8239eb7be1d4a1eb1c8878d6fa461103b94f4ce852. // -// Solidity: event BlockProposed(uint256 indexed blockId, address indexed assignedProver, uint96 livenessBond, uint256 proverFee, uint16 minTier, (bytes32,bytes32,bytes32,bytes32,uint64,uint64,uint64,uint32,address,(address,uint96,uint64)[]) meta) -func (_TaikoL1 *TaikoL1Filterer) WatchBlockProposed(opts *bind.WatchOpts, sink chan<- *TaikoL1BlockProposed, blockId []*big.Int, assignedProver []common.Address) (event.Subscription, error) { - - var blockIdRule []interface{} - for _, blockIdItem := range blockId { - blockIdRule = append(blockIdRule, blockIdItem) - } - var assignedProverRule []interface{} - for _, assignedProverItem := range assignedProver { - assignedProverRule = append(assignedProverRule, assignedProverItem) - } +// Solidity: event BlobCached(bytes32 blobHash) +func (_TaikoL1 *TaikoL1Filterer) WatchBlobCached(opts *bind.WatchOpts, sink chan<- *TaikoL1BlobCached) (event.Subscription, error) { - logs, sub, err := _TaikoL1.contract.WatchLogs(opts, "BlockProposed", blockIdRule, assignedProverRule) + logs, sub, err := _TaikoL1.contract.WatchLogs(opts, "BlobCached") if err != nil { return nil, err } @@ -1203,8 +1306,8 @@ func (_TaikoL1 *TaikoL1Filterer) WatchBlockProposed(opts *bind.WatchOpts, sink c select { case log := <-logs: // New log arrived, parse the event and forward to the user - event := new(TaikoL1BlockProposed) - if err := _TaikoL1.contract.UnpackLog(event, "BlockProposed", log); err != nil { + event := new(TaikoL1BlobCached) + if err := _TaikoL1.contract.UnpackLog(event, "BlobCached", log); err != nil { return err } event.Raw = log @@ -1225,21 +1328,21 @@ func (_TaikoL1 *TaikoL1Filterer) WatchBlockProposed(opts *bind.WatchOpts, sink c }), nil } -// ParseBlockProposed is a log parse operation binding the contract event 0xc857f5d042c0ceb165ef70eab0812ba2e6b15a03ce07638b58efc04dbb175ef6. +// ParseBlobCached is a log parse operation binding the contract event 0xb303828b7c63a3e480df6d8239eb7be1d4a1eb1c8878d6fa461103b94f4ce852. // -// Solidity: event BlockProposed(uint256 indexed blockId, address indexed assignedProver, uint96 livenessBond, uint256 proverFee, uint16 minTier, (bytes32,bytes32,bytes32,bytes32,uint64,uint64,uint64,uint32,address,(address,uint96,uint64)[]) meta) -func (_TaikoL1 *TaikoL1Filterer) ParseBlockProposed(log types.Log) (*TaikoL1BlockProposed, error) { - event := new(TaikoL1BlockProposed) - if err := _TaikoL1.contract.UnpackLog(event, "BlockProposed", log); err != nil { +// Solidity: event BlobCached(bytes32 blobHash) +func (_TaikoL1 *TaikoL1Filterer) ParseBlobCached(log types.Log) (*TaikoL1BlobCached, error) { + event := new(TaikoL1BlobCached) + if err := _TaikoL1.contract.UnpackLog(event, "BlobCached", log); err != nil { return nil, err } event.Raw = log return event, nil } -// TaikoL1BlockProposed0Iterator is returned from FilterBlockProposed0 and is used to iterate over the raw logs and unpacked data for BlockProposed0 events raised by the TaikoL1 contract. -type TaikoL1BlockProposed0Iterator struct { - Event *TaikoL1BlockProposed0 // Event containing the contract specifics and raw log +// TaikoL1BlobCached0Iterator is returned from FilterBlobCached0 and is used to iterate over the raw logs and unpacked data for BlobCached0 events raised by the TaikoL1 contract. +type TaikoL1BlobCached0Iterator struct { + Event *TaikoL1BlobCached0 // Event containing the contract specifics and raw log contract *bind.BoundContract // Generic contract to use for unpacking event data event string // Event name to use for unpacking event data @@ -1253,7 +1356,7 @@ type TaikoL1BlockProposed0Iterator struct { // Next advances the iterator to the subsequent event, returning whether there // are any more events found. In case of a retrieval or parsing error, false is // returned and Error() can be queried for the exact failure. -func (it *TaikoL1BlockProposed0Iterator) Next() bool { +func (it *TaikoL1BlobCached0Iterator) Next() bool { // If the iterator failed, stop iterating if it.fail != nil { return false @@ -1262,7 +1365,7 @@ func (it *TaikoL1BlockProposed0Iterator) Next() bool { if it.done { select { case log := <-it.logs: - it.Event = new(TaikoL1BlockProposed0) + it.Event = new(TaikoL1BlobCached0) if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { it.fail = err return false @@ -1277,7 +1380,7 @@ func (it *TaikoL1BlockProposed0Iterator) Next() bool { // Iterator still in progress, wait for either a data or an error event select { case log := <-it.logs: - it.Event = new(TaikoL1BlockProposed0) + it.Event = new(TaikoL1BlobCached0) if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { it.fail = err return false @@ -1293,64 +1396,41 @@ func (it *TaikoL1BlockProposed0Iterator) Next() bool { } // Error returns any retrieval or parsing error occurred during filtering. -func (it *TaikoL1BlockProposed0Iterator) Error() error { +func (it *TaikoL1BlobCached0Iterator) Error() error { return it.fail } // Close terminates the iteration process, releasing any pending underlying // resources. -func (it *TaikoL1BlockProposed0Iterator) Close() error { +func (it *TaikoL1BlobCached0Iterator) Close() error { it.sub.Unsubscribe() return nil } -// TaikoL1BlockProposed0 represents a BlockProposed0 event raised by the TaikoL1 contract. -type TaikoL1BlockProposed0 struct { - BlockId *big.Int - AssignedProver common.Address - LivenessBond *big.Int - ProverFee *big.Int - MinTier uint16 - Meta TaikoDataBlockMetadata - Raw types.Log // Blockchain specific contextual infos +// TaikoL1BlobCached0 represents a BlobCached0 event raised by the TaikoL1 contract. +type TaikoL1BlobCached0 struct { + BlobHash [32]byte + Raw types.Log // Blockchain specific contextual infos } -// FilterBlockProposed0 is a free log retrieval operation binding the contract event 0xc857f5d042c0ceb165ef70eab0812ba2e6b15a03ce07638b58efc04dbb175ef6. +// FilterBlobCached0 is a free log retrieval operation binding the contract event 0xb303828b7c63a3e480df6d8239eb7be1d4a1eb1c8878d6fa461103b94f4ce852. // -// Solidity: event BlockProposed(uint256 indexed blockId, address indexed assignedProver, uint96 livenessBond, uint256 proverFee, uint16 minTier, (bytes32,bytes32,bytes32,bytes32,uint64,uint64,uint64,uint32,address,(address,uint96,uint64)[]) meta) -func (_TaikoL1 *TaikoL1Filterer) FilterBlockProposed0(opts *bind.FilterOpts, blockId []*big.Int, assignedProver []common.Address) (*TaikoL1BlockProposed0Iterator, error) { - - var blockIdRule []interface{} - for _, blockIdItem := range blockId { - blockIdRule = append(blockIdRule, blockIdItem) - } - var assignedProverRule []interface{} - for _, assignedProverItem := range assignedProver { - assignedProverRule = append(assignedProverRule, assignedProverItem) - } +// Solidity: event BlobCached(bytes32 blobHash) +func (_TaikoL1 *TaikoL1Filterer) FilterBlobCached0(opts *bind.FilterOpts) (*TaikoL1BlobCached0Iterator, error) { - logs, sub, err := _TaikoL1.contract.FilterLogs(opts, "BlockProposed0", blockIdRule, assignedProverRule) + logs, sub, err := _TaikoL1.contract.FilterLogs(opts, "BlobCached0") if err != nil { return nil, err } - return &TaikoL1BlockProposed0Iterator{contract: _TaikoL1.contract, event: "BlockProposed0", logs: logs, sub: sub}, nil + return &TaikoL1BlobCached0Iterator{contract: _TaikoL1.contract, event: "BlobCached0", logs: logs, sub: sub}, nil } -// WatchBlockProposed0 is a free log subscription operation binding the contract event 0xc857f5d042c0ceb165ef70eab0812ba2e6b15a03ce07638b58efc04dbb175ef6. +// WatchBlobCached0 is a free log subscription operation binding the contract event 0xb303828b7c63a3e480df6d8239eb7be1d4a1eb1c8878d6fa461103b94f4ce852. // -// Solidity: event BlockProposed(uint256 indexed blockId, address indexed assignedProver, uint96 livenessBond, uint256 proverFee, uint16 minTier, (bytes32,bytes32,bytes32,bytes32,uint64,uint64,uint64,uint32,address,(address,uint96,uint64)[]) meta) -func (_TaikoL1 *TaikoL1Filterer) WatchBlockProposed0(opts *bind.WatchOpts, sink chan<- *TaikoL1BlockProposed0, blockId []*big.Int, assignedProver []common.Address) (event.Subscription, error) { - - var blockIdRule []interface{} - for _, blockIdItem := range blockId { - blockIdRule = append(blockIdRule, blockIdItem) - } - var assignedProverRule []interface{} - for _, assignedProverItem := range assignedProver { - assignedProverRule = append(assignedProverRule, assignedProverItem) - } +// Solidity: event BlobCached(bytes32 blobHash) +func (_TaikoL1 *TaikoL1Filterer) WatchBlobCached0(opts *bind.WatchOpts, sink chan<- *TaikoL1BlobCached0) (event.Subscription, error) { - logs, sub, err := _TaikoL1.contract.WatchLogs(opts, "BlockProposed0", blockIdRule, assignedProverRule) + logs, sub, err := _TaikoL1.contract.WatchLogs(opts, "BlobCached0") if err != nil { return nil, err } @@ -1360,8 +1440,8 @@ func (_TaikoL1 *TaikoL1Filterer) WatchBlockProposed0(opts *bind.WatchOpts, sink select { case log := <-logs: // New log arrived, parse the event and forward to the user - event := new(TaikoL1BlockProposed0) - if err := _TaikoL1.contract.UnpackLog(event, "BlockProposed0", log); err != nil { + event := new(TaikoL1BlobCached0) + if err := _TaikoL1.contract.UnpackLog(event, "BlobCached0", log); err != nil { return err } event.Raw = log @@ -1382,21 +1462,21 @@ func (_TaikoL1 *TaikoL1Filterer) WatchBlockProposed0(opts *bind.WatchOpts, sink }), nil } -// ParseBlockProposed0 is a log parse operation binding the contract event 0xc857f5d042c0ceb165ef70eab0812ba2e6b15a03ce07638b58efc04dbb175ef6. +// ParseBlobCached0 is a log parse operation binding the contract event 0xb303828b7c63a3e480df6d8239eb7be1d4a1eb1c8878d6fa461103b94f4ce852. // -// Solidity: event BlockProposed(uint256 indexed blockId, address indexed assignedProver, uint96 livenessBond, uint256 proverFee, uint16 minTier, (bytes32,bytes32,bytes32,bytes32,uint64,uint64,uint64,uint32,address,(address,uint96,uint64)[]) meta) -func (_TaikoL1 *TaikoL1Filterer) ParseBlockProposed0(log types.Log) (*TaikoL1BlockProposed0, error) { - event := new(TaikoL1BlockProposed0) - if err := _TaikoL1.contract.UnpackLog(event, "BlockProposed0", log); err != nil { +// Solidity: event BlobCached(bytes32 blobHash) +func (_TaikoL1 *TaikoL1Filterer) ParseBlobCached0(log types.Log) (*TaikoL1BlobCached0, error) { + event := new(TaikoL1BlobCached0) + if err := _TaikoL1.contract.UnpackLog(event, "BlobCached0", log); err != nil { return nil, err } event.Raw = log return event, nil } -// TaikoL1BlockVerifiedIterator is returned from FilterBlockVerified and is used to iterate over the raw logs and unpacked data for BlockVerified events raised by the TaikoL1 contract. -type TaikoL1BlockVerifiedIterator struct { - Event *TaikoL1BlockVerified // Event containing the contract specifics and raw log +// TaikoL1BlockProposedIterator is returned from FilterBlockProposed and is used to iterate over the raw logs and unpacked data for BlockProposed events raised by the TaikoL1 contract. +type TaikoL1BlockProposedIterator struct { + Event *TaikoL1BlockProposed // Event containing the contract specifics and raw log contract *bind.BoundContract // Generic contract to use for unpacking event data event string // Event name to use for unpacking event data @@ -1410,7 +1490,7 @@ type TaikoL1BlockVerifiedIterator struct { // Next advances the iterator to the subsequent event, returning whether there // are any more events found. In case of a retrieval or parsing error, false is // returned and Error() can be queried for the exact failure. -func (it *TaikoL1BlockVerifiedIterator) Next() bool { +func (it *TaikoL1BlockProposedIterator) Next() bool { // If the iterator failed, stop iterating if it.fail != nil { return false @@ -1419,7 +1499,7 @@ func (it *TaikoL1BlockVerifiedIterator) Next() bool { if it.done { select { case log := <-it.logs: - it.Event = new(TaikoL1BlockVerified) + it.Event = new(TaikoL1BlockProposed) if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { it.fail = err return false @@ -1434,7 +1514,7 @@ func (it *TaikoL1BlockVerifiedIterator) Next() bool { // Iterator still in progress, wait for either a data or an error event select { case log := <-it.logs: - it.Event = new(TaikoL1BlockVerified) + it.Event = new(TaikoL1BlockProposed) if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { it.fail = err return false @@ -1450,31 +1530,32 @@ func (it *TaikoL1BlockVerifiedIterator) Next() bool { } // Error returns any retrieval or parsing error occurred during filtering. -func (it *TaikoL1BlockVerifiedIterator) Error() error { +func (it *TaikoL1BlockProposedIterator) Error() error { return it.fail } // Close terminates the iteration process, releasing any pending underlying // resources. -func (it *TaikoL1BlockVerifiedIterator) Close() error { +func (it *TaikoL1BlockProposedIterator) Close() error { it.sub.Unsubscribe() return nil } -// TaikoL1BlockVerified represents a BlockVerified event raised by the TaikoL1 contract. -type TaikoL1BlockVerified struct { - BlockId *big.Int - AssignedProver common.Address - Prover common.Address - BlockHash [32]byte - SignalRoot [32]byte - Raw types.Log // Blockchain specific contextual infos +// TaikoL1BlockProposed represents a BlockProposed event raised by the TaikoL1 contract. +type TaikoL1BlockProposed struct { + BlockId *big.Int + AssignedProver common.Address + LivenessBond *big.Int + ProverFee *big.Int + Meta TaikoDataBlockMetadata + DepositsProcessed []TaikoDataEthDeposit + Raw types.Log // Blockchain specific contextual infos } -// FilterBlockVerified is a free log retrieval operation binding the contract event 0x1433d0a0bbdef88a556faadc3c8481900a1bd0941743e979ddbe046e27ce4299. +// FilterBlockProposed is a free log retrieval operation binding the contract event 0x16b70ac93964250a116fa6c730a771b24c7a0546bf6e6a5dcf120bd37348237f. // -// Solidity: event BlockVerified(uint256 indexed blockId, address indexed assignedProver, address indexed prover, bytes32 blockHash, bytes32 signalRoot) -func (_TaikoL1 *TaikoL1Filterer) FilterBlockVerified(opts *bind.FilterOpts, blockId []*big.Int, assignedProver []common.Address, prover []common.Address) (*TaikoL1BlockVerifiedIterator, error) { +// Solidity: event BlockProposed(uint256 indexed blockId, address indexed assignedProver, uint96 livenessBond, uint256 proverFee, (bytes32,bytes32,bytes32,bytes32,bytes32,address,uint64,uint32,uint64,uint64,uint24,uint24,uint16,bool,bytes32) meta, (address,uint96,uint64)[] depositsProcessed) +func (_TaikoL1 *TaikoL1Filterer) FilterBlockProposed(opts *bind.FilterOpts, blockId []*big.Int, assignedProver []common.Address) (*TaikoL1BlockProposedIterator, error) { var blockIdRule []interface{} for _, blockIdItem := range blockId { @@ -1484,22 +1565,18 @@ func (_TaikoL1 *TaikoL1Filterer) FilterBlockVerified(opts *bind.FilterOpts, bloc for _, assignedProverItem := range assignedProver { assignedProverRule = append(assignedProverRule, assignedProverItem) } - var proverRule []interface{} - for _, proverItem := range prover { - proverRule = append(proverRule, proverItem) - } - logs, sub, err := _TaikoL1.contract.FilterLogs(opts, "BlockVerified", blockIdRule, assignedProverRule, proverRule) + logs, sub, err := _TaikoL1.contract.FilterLogs(opts, "BlockProposed", blockIdRule, assignedProverRule) if err != nil { return nil, err } - return &TaikoL1BlockVerifiedIterator{contract: _TaikoL1.contract, event: "BlockVerified", logs: logs, sub: sub}, nil + return &TaikoL1BlockProposedIterator{contract: _TaikoL1.contract, event: "BlockProposed", logs: logs, sub: sub}, nil } -// WatchBlockVerified is a free log subscription operation binding the contract event 0x1433d0a0bbdef88a556faadc3c8481900a1bd0941743e979ddbe046e27ce4299. +// WatchBlockProposed is a free log subscription operation binding the contract event 0x16b70ac93964250a116fa6c730a771b24c7a0546bf6e6a5dcf120bd37348237f. // -// Solidity: event BlockVerified(uint256 indexed blockId, address indexed assignedProver, address indexed prover, bytes32 blockHash, bytes32 signalRoot) -func (_TaikoL1 *TaikoL1Filterer) WatchBlockVerified(opts *bind.WatchOpts, sink chan<- *TaikoL1BlockVerified, blockId []*big.Int, assignedProver []common.Address, prover []common.Address) (event.Subscription, error) { +// Solidity: event BlockProposed(uint256 indexed blockId, address indexed assignedProver, uint96 livenessBond, uint256 proverFee, (bytes32,bytes32,bytes32,bytes32,bytes32,address,uint64,uint32,uint64,uint64,uint24,uint24,uint16,bool,bytes32) meta, (address,uint96,uint64)[] depositsProcessed) +func (_TaikoL1 *TaikoL1Filterer) WatchBlockProposed(opts *bind.WatchOpts, sink chan<- *TaikoL1BlockProposed, blockId []*big.Int, assignedProver []common.Address) (event.Subscription, error) { var blockIdRule []interface{} for _, blockIdItem := range blockId { @@ -1509,12 +1586,8 @@ func (_TaikoL1 *TaikoL1Filterer) WatchBlockVerified(opts *bind.WatchOpts, sink c for _, assignedProverItem := range assignedProver { assignedProverRule = append(assignedProverRule, assignedProverItem) } - var proverRule []interface{} - for _, proverItem := range prover { - proverRule = append(proverRule, proverItem) - } - logs, sub, err := _TaikoL1.contract.WatchLogs(opts, "BlockVerified", blockIdRule, assignedProverRule, proverRule) + logs, sub, err := _TaikoL1.contract.WatchLogs(opts, "BlockProposed", blockIdRule, assignedProverRule) if err != nil { return nil, err } @@ -1524,8 +1597,8 @@ func (_TaikoL1 *TaikoL1Filterer) WatchBlockVerified(opts *bind.WatchOpts, sink c select { case log := <-logs: // New log arrived, parse the event and forward to the user - event := new(TaikoL1BlockVerified) - if err := _TaikoL1.contract.UnpackLog(event, "BlockVerified", log); err != nil { + event := new(TaikoL1BlockProposed) + if err := _TaikoL1.contract.UnpackLog(event, "BlockProposed", log); err != nil { return err } event.Raw = log @@ -1546,21 +1619,21 @@ func (_TaikoL1 *TaikoL1Filterer) WatchBlockVerified(opts *bind.WatchOpts, sink c }), nil } -// ParseBlockVerified is a log parse operation binding the contract event 0x1433d0a0bbdef88a556faadc3c8481900a1bd0941743e979ddbe046e27ce4299. +// ParseBlockProposed is a log parse operation binding the contract event 0x16b70ac93964250a116fa6c730a771b24c7a0546bf6e6a5dcf120bd37348237f. // -// Solidity: event BlockVerified(uint256 indexed blockId, address indexed assignedProver, address indexed prover, bytes32 blockHash, bytes32 signalRoot) -func (_TaikoL1 *TaikoL1Filterer) ParseBlockVerified(log types.Log) (*TaikoL1BlockVerified, error) { - event := new(TaikoL1BlockVerified) - if err := _TaikoL1.contract.UnpackLog(event, "BlockVerified", log); err != nil { +// Solidity: event BlockProposed(uint256 indexed blockId, address indexed assignedProver, uint96 livenessBond, uint256 proverFee, (bytes32,bytes32,bytes32,bytes32,bytes32,address,uint64,uint32,uint64,uint64,uint24,uint24,uint16,bool,bytes32) meta, (address,uint96,uint64)[] depositsProcessed) +func (_TaikoL1 *TaikoL1Filterer) ParseBlockProposed(log types.Log) (*TaikoL1BlockProposed, error) { + event := new(TaikoL1BlockProposed) + if err := _TaikoL1.contract.UnpackLog(event, "BlockProposed", log); err != nil { return nil, err } event.Raw = log return event, nil } -// TaikoL1BlockVerified0Iterator is returned from FilterBlockVerified0 and is used to iterate over the raw logs and unpacked data for BlockVerified0 events raised by the TaikoL1 contract. -type TaikoL1BlockVerified0Iterator struct { - Event *TaikoL1BlockVerified0 // Event containing the contract specifics and raw log +// TaikoL1BlockProposed0Iterator is returned from FilterBlockProposed0 and is used to iterate over the raw logs and unpacked data for BlockProposed0 events raised by the TaikoL1 contract. +type TaikoL1BlockProposed0Iterator struct { + Event *TaikoL1BlockProposed0 // Event containing the contract specifics and raw log contract *bind.BoundContract // Generic contract to use for unpacking event data event string // Event name to use for unpacking event data @@ -1574,7 +1647,7 @@ type TaikoL1BlockVerified0Iterator struct { // Next advances the iterator to the subsequent event, returning whether there // are any more events found. In case of a retrieval or parsing error, false is // returned and Error() can be queried for the exact failure. -func (it *TaikoL1BlockVerified0Iterator) Next() bool { +func (it *TaikoL1BlockProposed0Iterator) Next() bool { // If the iterator failed, stop iterating if it.fail != nil { return false @@ -1583,7 +1656,7 @@ func (it *TaikoL1BlockVerified0Iterator) Next() bool { if it.done { select { case log := <-it.logs: - it.Event = new(TaikoL1BlockVerified0) + it.Event = new(TaikoL1BlockProposed0) if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { it.fail = err return false @@ -1598,7 +1671,7 @@ func (it *TaikoL1BlockVerified0Iterator) Next() bool { // Iterator still in progress, wait for either a data or an error event select { case log := <-it.logs: - it.Event = new(TaikoL1BlockVerified0) + it.Event = new(TaikoL1BlockProposed0) if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { it.fail = err return false @@ -1614,31 +1687,32 @@ func (it *TaikoL1BlockVerified0Iterator) Next() bool { } // Error returns any retrieval or parsing error occurred during filtering. -func (it *TaikoL1BlockVerified0Iterator) Error() error { +func (it *TaikoL1BlockProposed0Iterator) Error() error { return it.fail } // Close terminates the iteration process, releasing any pending underlying // resources. -func (it *TaikoL1BlockVerified0Iterator) Close() error { +func (it *TaikoL1BlockProposed0Iterator) Close() error { it.sub.Unsubscribe() return nil } -// TaikoL1BlockVerified0 represents a BlockVerified0 event raised by the TaikoL1 contract. -type TaikoL1BlockVerified0 struct { - BlockId *big.Int - AssignedProver common.Address - Prover common.Address - BlockHash [32]byte - SignalRoot [32]byte - Raw types.Log // Blockchain specific contextual infos +// TaikoL1BlockProposed0 represents a BlockProposed0 event raised by the TaikoL1 contract. +type TaikoL1BlockProposed0 struct { + BlockId *big.Int + AssignedProver common.Address + LivenessBond *big.Int + ProverFee *big.Int + Meta TaikoDataBlockMetadata + DepositsProcessed []TaikoDataEthDeposit + Raw types.Log // Blockchain specific contextual infos } -// FilterBlockVerified0 is a free log retrieval operation binding the contract event 0x1433d0a0bbdef88a556faadc3c8481900a1bd0941743e979ddbe046e27ce4299. +// FilterBlockProposed0 is a free log retrieval operation binding the contract event 0x16b70ac93964250a116fa6c730a771b24c7a0546bf6e6a5dcf120bd37348237f. // -// Solidity: event BlockVerified(uint256 indexed blockId, address indexed assignedProver, address indexed prover, bytes32 blockHash, bytes32 signalRoot) -func (_TaikoL1 *TaikoL1Filterer) FilterBlockVerified0(opts *bind.FilterOpts, blockId []*big.Int, assignedProver []common.Address, prover []common.Address) (*TaikoL1BlockVerified0Iterator, error) { +// Solidity: event BlockProposed(uint256 indexed blockId, address indexed assignedProver, uint96 livenessBond, uint256 proverFee, (bytes32,bytes32,bytes32,bytes32,bytes32,address,uint64,uint32,uint64,uint64,uint24,uint24,uint16,bool,bytes32) meta, (address,uint96,uint64)[] depositsProcessed) +func (_TaikoL1 *TaikoL1Filterer) FilterBlockProposed0(opts *bind.FilterOpts, blockId []*big.Int, assignedProver []common.Address) (*TaikoL1BlockProposed0Iterator, error) { var blockIdRule []interface{} for _, blockIdItem := range blockId { @@ -1648,22 +1722,155 @@ func (_TaikoL1 *TaikoL1Filterer) FilterBlockVerified0(opts *bind.FilterOpts, blo for _, assignedProverItem := range assignedProver { assignedProverRule = append(assignedProverRule, assignedProverItem) } - var proverRule []interface{} - for _, proverItem := range prover { - proverRule = append(proverRule, proverItem) - } - logs, sub, err := _TaikoL1.contract.FilterLogs(opts, "BlockVerified0", blockIdRule, assignedProverRule, proverRule) + logs, sub, err := _TaikoL1.contract.FilterLogs(opts, "BlockProposed0", blockIdRule, assignedProverRule) if err != nil { return nil, err } - return &TaikoL1BlockVerified0Iterator{contract: _TaikoL1.contract, event: "BlockVerified0", logs: logs, sub: sub}, nil + return &TaikoL1BlockProposed0Iterator{contract: _TaikoL1.contract, event: "BlockProposed0", logs: logs, sub: sub}, nil } -// WatchBlockVerified0 is a free log subscription operation binding the contract event 0x1433d0a0bbdef88a556faadc3c8481900a1bd0941743e979ddbe046e27ce4299. +// WatchBlockProposed0 is a free log subscription operation binding the contract event 0x16b70ac93964250a116fa6c730a771b24c7a0546bf6e6a5dcf120bd37348237f. // -// Solidity: event BlockVerified(uint256 indexed blockId, address indexed assignedProver, address indexed prover, bytes32 blockHash, bytes32 signalRoot) -func (_TaikoL1 *TaikoL1Filterer) WatchBlockVerified0(opts *bind.WatchOpts, sink chan<- *TaikoL1BlockVerified0, blockId []*big.Int, assignedProver []common.Address, prover []common.Address) (event.Subscription, error) { +// Solidity: event BlockProposed(uint256 indexed blockId, address indexed assignedProver, uint96 livenessBond, uint256 proverFee, (bytes32,bytes32,bytes32,bytes32,bytes32,address,uint64,uint32,uint64,uint64,uint24,uint24,uint16,bool,bytes32) meta, (address,uint96,uint64)[] depositsProcessed) +func (_TaikoL1 *TaikoL1Filterer) WatchBlockProposed0(opts *bind.WatchOpts, sink chan<- *TaikoL1BlockProposed0, blockId []*big.Int, assignedProver []common.Address) (event.Subscription, error) { + + var blockIdRule []interface{} + for _, blockIdItem := range blockId { + blockIdRule = append(blockIdRule, blockIdItem) + } + var assignedProverRule []interface{} + for _, assignedProverItem := range assignedProver { + assignedProverRule = append(assignedProverRule, assignedProverItem) + } + + logs, sub, err := _TaikoL1.contract.WatchLogs(opts, "BlockProposed0", blockIdRule, assignedProverRule) + if err != nil { + return nil, err + } + return event.NewSubscription(func(quit <-chan struct{}) error { + defer sub.Unsubscribe() + for { + select { + case log := <-logs: + // New log arrived, parse the event and forward to the user + event := new(TaikoL1BlockProposed0) + if err := _TaikoL1.contract.UnpackLog(event, "BlockProposed0", log); err != nil { + return err + } + event.Raw = log + + select { + case sink <- event: + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + } + }), nil +} + +// ParseBlockProposed0 is a log parse operation binding the contract event 0x16b70ac93964250a116fa6c730a771b24c7a0546bf6e6a5dcf120bd37348237f. +// +// Solidity: event BlockProposed(uint256 indexed blockId, address indexed assignedProver, uint96 livenessBond, uint256 proverFee, (bytes32,bytes32,bytes32,bytes32,bytes32,address,uint64,uint32,uint64,uint64,uint24,uint24,uint16,bool,bytes32) meta, (address,uint96,uint64)[] depositsProcessed) +func (_TaikoL1 *TaikoL1Filterer) ParseBlockProposed0(log types.Log) (*TaikoL1BlockProposed0, error) { + event := new(TaikoL1BlockProposed0) + if err := _TaikoL1.contract.UnpackLog(event, "BlockProposed0", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} + +// TaikoL1BlockVerifiedIterator is returned from FilterBlockVerified and is used to iterate over the raw logs and unpacked data for BlockVerified events raised by the TaikoL1 contract. +type TaikoL1BlockVerifiedIterator struct { + Event *TaikoL1BlockVerified // Event containing the contract specifics and raw log + + contract *bind.BoundContract // Generic contract to use for unpacking event data + event string // Event name to use for unpacking event data + + logs chan types.Log // Log channel receiving the found contract events + sub ethereum.Subscription // Subscription for errors, completion and termination + done bool // Whether the subscription completed delivering logs + fail error // Occurred error to stop iteration +} + +// Next advances the iterator to the subsequent event, returning whether there +// are any more events found. In case of a retrieval or parsing error, false is +// returned and Error() can be queried for the exact failure. +func (it *TaikoL1BlockVerifiedIterator) Next() bool { + // If the iterator failed, stop iterating + if it.fail != nil { + return false + } + // If the iterator completed, deliver directly whatever's available + if it.done { + select { + case log := <-it.logs: + it.Event = new(TaikoL1BlockVerified) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + default: + return false + } + } + // Iterator still in progress, wait for either a data or an error event + select { + case log := <-it.logs: + it.Event = new(TaikoL1BlockVerified) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + case err := <-it.sub.Err(): + it.done = true + it.fail = err + return it.Next() + } +} + +// Error returns any retrieval or parsing error occurred during filtering. +func (it *TaikoL1BlockVerifiedIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *TaikoL1BlockVerifiedIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// TaikoL1BlockVerified represents a BlockVerified event raised by the TaikoL1 contract. +type TaikoL1BlockVerified struct { + BlockId *big.Int + AssignedProver common.Address + Prover common.Address + BlockHash [32]byte + SignalRoot [32]byte + Tier uint16 + Contestations uint8 + Raw types.Log // Blockchain specific contextual infos +} + +// FilterBlockVerified is a free log retrieval operation binding the contract event 0xaeba6e73abba9419294b1017075cf8dc2e7de6f2d7fd3b336b3ba882a2acfca5. +// +// Solidity: event BlockVerified(uint256 indexed blockId, address indexed assignedProver, address indexed prover, bytes32 blockHash, bytes32 signalRoot, uint16 tier, uint8 contestations) +func (_TaikoL1 *TaikoL1Filterer) FilterBlockVerified(opts *bind.FilterOpts, blockId []*big.Int, assignedProver []common.Address, prover []common.Address) (*TaikoL1BlockVerifiedIterator, error) { var blockIdRule []interface{} for _, blockIdItem := range blockId { @@ -1678,7 +1885,32 @@ func (_TaikoL1 *TaikoL1Filterer) WatchBlockVerified0(opts *bind.WatchOpts, sink proverRule = append(proverRule, proverItem) } - logs, sub, err := _TaikoL1.contract.WatchLogs(opts, "BlockVerified0", blockIdRule, assignedProverRule, proverRule) + logs, sub, err := _TaikoL1.contract.FilterLogs(opts, "BlockVerified", blockIdRule, assignedProverRule, proverRule) + if err != nil { + return nil, err + } + return &TaikoL1BlockVerifiedIterator{contract: _TaikoL1.contract, event: "BlockVerified", logs: logs, sub: sub}, nil +} + +// WatchBlockVerified is a free log subscription operation binding the contract event 0xaeba6e73abba9419294b1017075cf8dc2e7de6f2d7fd3b336b3ba882a2acfca5. +// +// Solidity: event BlockVerified(uint256 indexed blockId, address indexed assignedProver, address indexed prover, bytes32 blockHash, bytes32 signalRoot, uint16 tier, uint8 contestations) +func (_TaikoL1 *TaikoL1Filterer) WatchBlockVerified(opts *bind.WatchOpts, sink chan<- *TaikoL1BlockVerified, blockId []*big.Int, assignedProver []common.Address, prover []common.Address) (event.Subscription, error) { + + var blockIdRule []interface{} + for _, blockIdItem := range blockId { + blockIdRule = append(blockIdRule, blockIdItem) + } + var assignedProverRule []interface{} + for _, assignedProverItem := range assignedProver { + assignedProverRule = append(assignedProverRule, assignedProverItem) + } + var proverRule []interface{} + for _, proverItem := range prover { + proverRule = append(proverRule, proverItem) + } + + logs, sub, err := _TaikoL1.contract.WatchLogs(opts, "BlockVerified", blockIdRule, assignedProverRule, proverRule) if err != nil { return nil, err } @@ -1688,8 +1920,8 @@ func (_TaikoL1 *TaikoL1Filterer) WatchBlockVerified0(opts *bind.WatchOpts, sink select { case log := <-logs: // New log arrived, parse the event and forward to the user - event := new(TaikoL1BlockVerified0) - if err := _TaikoL1.contract.UnpackLog(event, "BlockVerified0", log); err != nil { + event := new(TaikoL1BlockVerified) + if err := _TaikoL1.contract.UnpackLog(event, "BlockVerified", log); err != nil { return err } event.Raw = log @@ -1710,21 +1942,21 @@ func (_TaikoL1 *TaikoL1Filterer) WatchBlockVerified0(opts *bind.WatchOpts, sink }), nil } -// ParseBlockVerified0 is a log parse operation binding the contract event 0x1433d0a0bbdef88a556faadc3c8481900a1bd0941743e979ddbe046e27ce4299. +// ParseBlockVerified is a log parse operation binding the contract event 0xaeba6e73abba9419294b1017075cf8dc2e7de6f2d7fd3b336b3ba882a2acfca5. // -// Solidity: event BlockVerified(uint256 indexed blockId, address indexed assignedProver, address indexed prover, bytes32 blockHash, bytes32 signalRoot) -func (_TaikoL1 *TaikoL1Filterer) ParseBlockVerified0(log types.Log) (*TaikoL1BlockVerified0, error) { - event := new(TaikoL1BlockVerified0) - if err := _TaikoL1.contract.UnpackLog(event, "BlockVerified0", log); err != nil { +// Solidity: event BlockVerified(uint256 indexed blockId, address indexed assignedProver, address indexed prover, bytes32 blockHash, bytes32 signalRoot, uint16 tier, uint8 contestations) +func (_TaikoL1 *TaikoL1Filterer) ParseBlockVerified(log types.Log) (*TaikoL1BlockVerified, error) { + event := new(TaikoL1BlockVerified) + if err := _TaikoL1.contract.UnpackLog(event, "BlockVerified", log); err != nil { return nil, err } event.Raw = log return event, nil } -// TaikoL1CrossChainSyncedIterator is returned from FilterCrossChainSynced and is used to iterate over the raw logs and unpacked data for CrossChainSynced events raised by the TaikoL1 contract. -type TaikoL1CrossChainSyncedIterator struct { - Event *TaikoL1CrossChainSynced // Event containing the contract specifics and raw log +// TaikoL1BlockVerified0Iterator is returned from FilterBlockVerified0 and is used to iterate over the raw logs and unpacked data for BlockVerified0 events raised by the TaikoL1 contract. +type TaikoL1BlockVerified0Iterator struct { + Event *TaikoL1BlockVerified0 // Event containing the contract specifics and raw log contract *bind.BoundContract // Generic contract to use for unpacking event data event string // Event name to use for unpacking event data @@ -1738,7 +1970,7 @@ type TaikoL1CrossChainSyncedIterator struct { // Next advances the iterator to the subsequent event, returning whether there // are any more events found. In case of a retrieval or parsing error, false is // returned and Error() can be queried for the exact failure. -func (it *TaikoL1CrossChainSyncedIterator) Next() bool { +func (it *TaikoL1BlockVerified0Iterator) Next() bool { // If the iterator failed, stop iterating if it.fail != nil { return false @@ -1747,7 +1979,7 @@ func (it *TaikoL1CrossChainSyncedIterator) Next() bool { if it.done { select { case log := <-it.logs: - it.Event = new(TaikoL1CrossChainSynced) + it.Event = new(TaikoL1BlockVerified0) if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { it.fail = err return false @@ -1762,7 +1994,7 @@ func (it *TaikoL1CrossChainSyncedIterator) Next() bool { // Iterator still in progress, wait for either a data or an error event select { case log := <-it.logs: - it.Event = new(TaikoL1CrossChainSynced) + it.Event = new(TaikoL1BlockVerified0) if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { it.fail = err return false @@ -1778,53 +2010,73 @@ func (it *TaikoL1CrossChainSyncedIterator) Next() bool { } // Error returns any retrieval or parsing error occurred during filtering. -func (it *TaikoL1CrossChainSyncedIterator) Error() error { +func (it *TaikoL1BlockVerified0Iterator) Error() error { return it.fail } // Close terminates the iteration process, releasing any pending underlying // resources. -func (it *TaikoL1CrossChainSyncedIterator) Close() error { +func (it *TaikoL1BlockVerified0Iterator) Close() error { it.sub.Unsubscribe() return nil } -// TaikoL1CrossChainSynced represents a CrossChainSynced event raised by the TaikoL1 contract. -type TaikoL1CrossChainSynced struct { - SrcHeight uint64 - BlockHash [32]byte - SignalRoot [32]byte - Raw types.Log // Blockchain specific contextual infos +// TaikoL1BlockVerified0 represents a BlockVerified0 event raised by the TaikoL1 contract. +type TaikoL1BlockVerified0 struct { + BlockId *big.Int + AssignedProver common.Address + Prover common.Address + BlockHash [32]byte + SignalRoot [32]byte + Tier uint16 + Contestations uint8 + Raw types.Log // Blockchain specific contextual infos } -// FilterCrossChainSynced is a free log retrieval operation binding the contract event 0x004ce985b8852a486571d0545799251fd671adcf33b7854a5f0f6a6a2431a555. +// FilterBlockVerified0 is a free log retrieval operation binding the contract event 0xaeba6e73abba9419294b1017075cf8dc2e7de6f2d7fd3b336b3ba882a2acfca5. // -// Solidity: event CrossChainSynced(uint64 indexed srcHeight, bytes32 blockHash, bytes32 signalRoot) -func (_TaikoL1 *TaikoL1Filterer) FilterCrossChainSynced(opts *bind.FilterOpts, srcHeight []uint64) (*TaikoL1CrossChainSyncedIterator, error) { +// Solidity: event BlockVerified(uint256 indexed blockId, address indexed assignedProver, address indexed prover, bytes32 blockHash, bytes32 signalRoot, uint16 tier, uint8 contestations) +func (_TaikoL1 *TaikoL1Filterer) FilterBlockVerified0(opts *bind.FilterOpts, blockId []*big.Int, assignedProver []common.Address, prover []common.Address) (*TaikoL1BlockVerified0Iterator, error) { - var srcHeightRule []interface{} - for _, srcHeightItem := range srcHeight { - srcHeightRule = append(srcHeightRule, srcHeightItem) + var blockIdRule []interface{} + for _, blockIdItem := range blockId { + blockIdRule = append(blockIdRule, blockIdItem) + } + var assignedProverRule []interface{} + for _, assignedProverItem := range assignedProver { + assignedProverRule = append(assignedProverRule, assignedProverItem) + } + var proverRule []interface{} + for _, proverItem := range prover { + proverRule = append(proverRule, proverItem) } - logs, sub, err := _TaikoL1.contract.FilterLogs(opts, "CrossChainSynced", srcHeightRule) + logs, sub, err := _TaikoL1.contract.FilterLogs(opts, "BlockVerified0", blockIdRule, assignedProverRule, proverRule) if err != nil { return nil, err } - return &TaikoL1CrossChainSyncedIterator{contract: _TaikoL1.contract, event: "CrossChainSynced", logs: logs, sub: sub}, nil + return &TaikoL1BlockVerified0Iterator{contract: _TaikoL1.contract, event: "BlockVerified0", logs: logs, sub: sub}, nil } -// WatchCrossChainSynced is a free log subscription operation binding the contract event 0x004ce985b8852a486571d0545799251fd671adcf33b7854a5f0f6a6a2431a555. +// WatchBlockVerified0 is a free log subscription operation binding the contract event 0xaeba6e73abba9419294b1017075cf8dc2e7de6f2d7fd3b336b3ba882a2acfca5. // -// Solidity: event CrossChainSynced(uint64 indexed srcHeight, bytes32 blockHash, bytes32 signalRoot) -func (_TaikoL1 *TaikoL1Filterer) WatchCrossChainSynced(opts *bind.WatchOpts, sink chan<- *TaikoL1CrossChainSynced, srcHeight []uint64) (event.Subscription, error) { +// Solidity: event BlockVerified(uint256 indexed blockId, address indexed assignedProver, address indexed prover, bytes32 blockHash, bytes32 signalRoot, uint16 tier, uint8 contestations) +func (_TaikoL1 *TaikoL1Filterer) WatchBlockVerified0(opts *bind.WatchOpts, sink chan<- *TaikoL1BlockVerified0, blockId []*big.Int, assignedProver []common.Address, prover []common.Address) (event.Subscription, error) { - var srcHeightRule []interface{} - for _, srcHeightItem := range srcHeight { - srcHeightRule = append(srcHeightRule, srcHeightItem) + var blockIdRule []interface{} + for _, blockIdItem := range blockId { + blockIdRule = append(blockIdRule, blockIdItem) + } + var assignedProverRule []interface{} + for _, assignedProverItem := range assignedProver { + assignedProverRule = append(assignedProverRule, assignedProverItem) + } + var proverRule []interface{} + for _, proverItem := range prover { + proverRule = append(proverRule, proverItem) } - logs, sub, err := _TaikoL1.contract.WatchLogs(opts, "CrossChainSynced", srcHeightRule) + logs, sub, err := _TaikoL1.contract.WatchLogs(opts, "BlockVerified0", blockIdRule, assignedProverRule, proverRule) if err != nil { return nil, err } @@ -1834,8 +2086,8 @@ func (_TaikoL1 *TaikoL1Filterer) WatchCrossChainSynced(opts *bind.WatchOpts, sin select { case log := <-logs: // New log arrived, parse the event and forward to the user - event := new(TaikoL1CrossChainSynced) - if err := _TaikoL1.contract.UnpackLog(event, "CrossChainSynced", log); err != nil { + event := new(TaikoL1BlockVerified0) + if err := _TaikoL1.contract.UnpackLog(event, "BlockVerified0", log); err != nil { return err } event.Raw = log @@ -1856,21 +2108,448 @@ func (_TaikoL1 *TaikoL1Filterer) WatchCrossChainSynced(opts *bind.WatchOpts, sin }), nil } -// ParseCrossChainSynced is a log parse operation binding the contract event 0x004ce985b8852a486571d0545799251fd671adcf33b7854a5f0f6a6a2431a555. +// ParseBlockVerified0 is a log parse operation binding the contract event 0xaeba6e73abba9419294b1017075cf8dc2e7de6f2d7fd3b336b3ba882a2acfca5. // -// Solidity: event CrossChainSynced(uint64 indexed srcHeight, bytes32 blockHash, bytes32 signalRoot) -func (_TaikoL1 *TaikoL1Filterer) ParseCrossChainSynced(log types.Log) (*TaikoL1CrossChainSynced, error) { - event := new(TaikoL1CrossChainSynced) - if err := _TaikoL1.contract.UnpackLog(event, "CrossChainSynced", log); err != nil { +// Solidity: event BlockVerified(uint256 indexed blockId, address indexed assignedProver, address indexed prover, bytes32 blockHash, bytes32 signalRoot, uint16 tier, uint8 contestations) +func (_TaikoL1 *TaikoL1Filterer) ParseBlockVerified0(log types.Log) (*TaikoL1BlockVerified0, error) { + event := new(TaikoL1BlockVerified0) + if err := _TaikoL1.contract.UnpackLog(event, "BlockVerified0", log); err != nil { return nil, err } event.Raw = log return event, nil } -// TaikoL1CrossChainSynced0Iterator is returned from FilterCrossChainSynced0 and is used to iterate over the raw logs and unpacked data for CrossChainSynced0 events raised by the TaikoL1 contract. -type TaikoL1CrossChainSynced0Iterator struct { - Event *TaikoL1CrossChainSynced0 // Event containing the contract specifics and raw log +// TaikoL1CrossChainSyncedIterator is returned from FilterCrossChainSynced and is used to iterate over the raw logs and unpacked data for CrossChainSynced events raised by the TaikoL1 contract. +type TaikoL1CrossChainSyncedIterator struct { + Event *TaikoL1CrossChainSynced // Event containing the contract specifics and raw log + + contract *bind.BoundContract // Generic contract to use for unpacking event data + event string // Event name to use for unpacking event data + + logs chan types.Log // Log channel receiving the found contract events + sub ethereum.Subscription // Subscription for errors, completion and termination + done bool // Whether the subscription completed delivering logs + fail error // Occurred error to stop iteration +} + +// Next advances the iterator to the subsequent event, returning whether there +// are any more events found. In case of a retrieval or parsing error, false is +// returned and Error() can be queried for the exact failure. +func (it *TaikoL1CrossChainSyncedIterator) Next() bool { + // If the iterator failed, stop iterating + if it.fail != nil { + return false + } + // If the iterator completed, deliver directly whatever's available + if it.done { + select { + case log := <-it.logs: + it.Event = new(TaikoL1CrossChainSynced) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + default: + return false + } + } + // Iterator still in progress, wait for either a data or an error event + select { + case log := <-it.logs: + it.Event = new(TaikoL1CrossChainSynced) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + case err := <-it.sub.Err(): + it.done = true + it.fail = err + return it.Next() + } +} + +// Error returns any retrieval or parsing error occurred during filtering. +func (it *TaikoL1CrossChainSyncedIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *TaikoL1CrossChainSyncedIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// TaikoL1CrossChainSynced represents a CrossChainSynced event raised by the TaikoL1 contract. +type TaikoL1CrossChainSynced struct { + SrcHeight uint64 + BlockHash [32]byte + SignalRoot [32]byte + Raw types.Log // Blockchain specific contextual infos +} + +// FilterCrossChainSynced is a free log retrieval operation binding the contract event 0x004ce985b8852a486571d0545799251fd671adcf33b7854a5f0f6a6a2431a555. +// +// Solidity: event CrossChainSynced(uint64 indexed srcHeight, bytes32 blockHash, bytes32 signalRoot) +func (_TaikoL1 *TaikoL1Filterer) FilterCrossChainSynced(opts *bind.FilterOpts, srcHeight []uint64) (*TaikoL1CrossChainSyncedIterator, error) { + + var srcHeightRule []interface{} + for _, srcHeightItem := range srcHeight { + srcHeightRule = append(srcHeightRule, srcHeightItem) + } + + logs, sub, err := _TaikoL1.contract.FilterLogs(opts, "CrossChainSynced", srcHeightRule) + if err != nil { + return nil, err + } + return &TaikoL1CrossChainSyncedIterator{contract: _TaikoL1.contract, event: "CrossChainSynced", logs: logs, sub: sub}, nil +} + +// WatchCrossChainSynced is a free log subscription operation binding the contract event 0x004ce985b8852a486571d0545799251fd671adcf33b7854a5f0f6a6a2431a555. +// +// Solidity: event CrossChainSynced(uint64 indexed srcHeight, bytes32 blockHash, bytes32 signalRoot) +func (_TaikoL1 *TaikoL1Filterer) WatchCrossChainSynced(opts *bind.WatchOpts, sink chan<- *TaikoL1CrossChainSynced, srcHeight []uint64) (event.Subscription, error) { + + var srcHeightRule []interface{} + for _, srcHeightItem := range srcHeight { + srcHeightRule = append(srcHeightRule, srcHeightItem) + } + + logs, sub, err := _TaikoL1.contract.WatchLogs(opts, "CrossChainSynced", srcHeightRule) + if err != nil { + return nil, err + } + return event.NewSubscription(func(quit <-chan struct{}) error { + defer sub.Unsubscribe() + for { + select { + case log := <-logs: + // New log arrived, parse the event and forward to the user + event := new(TaikoL1CrossChainSynced) + if err := _TaikoL1.contract.UnpackLog(event, "CrossChainSynced", log); err != nil { + return err + } + event.Raw = log + + select { + case sink <- event: + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + } + }), nil +} + +// ParseCrossChainSynced is a log parse operation binding the contract event 0x004ce985b8852a486571d0545799251fd671adcf33b7854a5f0f6a6a2431a555. +// +// Solidity: event CrossChainSynced(uint64 indexed srcHeight, bytes32 blockHash, bytes32 signalRoot) +func (_TaikoL1 *TaikoL1Filterer) ParseCrossChainSynced(log types.Log) (*TaikoL1CrossChainSynced, error) { + event := new(TaikoL1CrossChainSynced) + if err := _TaikoL1.contract.UnpackLog(event, "CrossChainSynced", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} + +// TaikoL1CrossChainSynced0Iterator is returned from FilterCrossChainSynced0 and is used to iterate over the raw logs and unpacked data for CrossChainSynced0 events raised by the TaikoL1 contract. +type TaikoL1CrossChainSynced0Iterator struct { + Event *TaikoL1CrossChainSynced0 // Event containing the contract specifics and raw log + + contract *bind.BoundContract // Generic contract to use for unpacking event data + event string // Event name to use for unpacking event data + + logs chan types.Log // Log channel receiving the found contract events + sub ethereum.Subscription // Subscription for errors, completion and termination + done bool // Whether the subscription completed delivering logs + fail error // Occurred error to stop iteration +} + +// Next advances the iterator to the subsequent event, returning whether there +// are any more events found. In case of a retrieval or parsing error, false is +// returned and Error() can be queried for the exact failure. +func (it *TaikoL1CrossChainSynced0Iterator) Next() bool { + // If the iterator failed, stop iterating + if it.fail != nil { + return false + } + // If the iterator completed, deliver directly whatever's available + if it.done { + select { + case log := <-it.logs: + it.Event = new(TaikoL1CrossChainSynced0) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + default: + return false + } + } + // Iterator still in progress, wait for either a data or an error event + select { + case log := <-it.logs: + it.Event = new(TaikoL1CrossChainSynced0) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + case err := <-it.sub.Err(): + it.done = true + it.fail = err + return it.Next() + } +} + +// Error returns any retrieval or parsing error occurred during filtering. +func (it *TaikoL1CrossChainSynced0Iterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *TaikoL1CrossChainSynced0Iterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// TaikoL1CrossChainSynced0 represents a CrossChainSynced0 event raised by the TaikoL1 contract. +type TaikoL1CrossChainSynced0 struct { + RemoteBlockId uint64 + SyncedInBlock uint64 + BlockHash [32]byte + SignalRoot [32]byte + Raw types.Log // Blockchain specific contextual infos +} + +// FilterCrossChainSynced0 is a free log retrieval operation binding the contract event 0xf35ec3b262cf74881db1b8051c635496bccb1497a1e776dacb463d0e0e2b0f51. +// +// Solidity: event CrossChainSynced(uint64 indexed remoteBlockId, uint64 syncedInBlock, bytes32 blockHash, bytes32 signalRoot) +func (_TaikoL1 *TaikoL1Filterer) FilterCrossChainSynced0(opts *bind.FilterOpts, remoteBlockId []uint64) (*TaikoL1CrossChainSynced0Iterator, error) { + + var remoteBlockIdRule []interface{} + for _, remoteBlockIdItem := range remoteBlockId { + remoteBlockIdRule = append(remoteBlockIdRule, remoteBlockIdItem) + } + + logs, sub, err := _TaikoL1.contract.FilterLogs(opts, "CrossChainSynced0", remoteBlockIdRule) + if err != nil { + return nil, err + } + return &TaikoL1CrossChainSynced0Iterator{contract: _TaikoL1.contract, event: "CrossChainSynced0", logs: logs, sub: sub}, nil +} + +// WatchCrossChainSynced0 is a free log subscription operation binding the contract event 0xf35ec3b262cf74881db1b8051c635496bccb1497a1e776dacb463d0e0e2b0f51. +// +// Solidity: event CrossChainSynced(uint64 indexed remoteBlockId, uint64 syncedInBlock, bytes32 blockHash, bytes32 signalRoot) +func (_TaikoL1 *TaikoL1Filterer) WatchCrossChainSynced0(opts *bind.WatchOpts, sink chan<- *TaikoL1CrossChainSynced0, remoteBlockId []uint64) (event.Subscription, error) { + + var remoteBlockIdRule []interface{} + for _, remoteBlockIdItem := range remoteBlockId { + remoteBlockIdRule = append(remoteBlockIdRule, remoteBlockIdItem) + } + + logs, sub, err := _TaikoL1.contract.WatchLogs(opts, "CrossChainSynced0", remoteBlockIdRule) + if err != nil { + return nil, err + } + return event.NewSubscription(func(quit <-chan struct{}) error { + defer sub.Unsubscribe() + for { + select { + case log := <-logs: + // New log arrived, parse the event and forward to the user + event := new(TaikoL1CrossChainSynced0) + if err := _TaikoL1.contract.UnpackLog(event, "CrossChainSynced0", log); err != nil { + return err + } + event.Raw = log + + select { + case sink <- event: + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + } + }), nil +} + +// ParseCrossChainSynced0 is a log parse operation binding the contract event 0xf35ec3b262cf74881db1b8051c635496bccb1497a1e776dacb463d0e0e2b0f51. +// +// Solidity: event CrossChainSynced(uint64 indexed remoteBlockId, uint64 syncedInBlock, bytes32 blockHash, bytes32 signalRoot) +func (_TaikoL1 *TaikoL1Filterer) ParseCrossChainSynced0(log types.Log) (*TaikoL1CrossChainSynced0, error) { + event := new(TaikoL1CrossChainSynced0) + if err := _TaikoL1.contract.UnpackLog(event, "CrossChainSynced0", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} + +// TaikoL1EthDepositedIterator is returned from FilterEthDeposited and is used to iterate over the raw logs and unpacked data for EthDeposited events raised by the TaikoL1 contract. +type TaikoL1EthDepositedIterator struct { + Event *TaikoL1EthDeposited // Event containing the contract specifics and raw log + + contract *bind.BoundContract // Generic contract to use for unpacking event data + event string // Event name to use for unpacking event data + + logs chan types.Log // Log channel receiving the found contract events + sub ethereum.Subscription // Subscription for errors, completion and termination + done bool // Whether the subscription completed delivering logs + fail error // Occurred error to stop iteration +} + +// Next advances the iterator to the subsequent event, returning whether there +// are any more events found. In case of a retrieval or parsing error, false is +// returned and Error() can be queried for the exact failure. +func (it *TaikoL1EthDepositedIterator) Next() bool { + // If the iterator failed, stop iterating + if it.fail != nil { + return false + } + // If the iterator completed, deliver directly whatever's available + if it.done { + select { + case log := <-it.logs: + it.Event = new(TaikoL1EthDeposited) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + default: + return false + } + } + // Iterator still in progress, wait for either a data or an error event + select { + case log := <-it.logs: + it.Event = new(TaikoL1EthDeposited) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + case err := <-it.sub.Err(): + it.done = true + it.fail = err + return it.Next() + } +} + +// Error returns any retrieval or parsing error occurred during filtering. +func (it *TaikoL1EthDepositedIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *TaikoL1EthDepositedIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// TaikoL1EthDeposited represents a EthDeposited event raised by the TaikoL1 contract. +type TaikoL1EthDeposited struct { + Deposit TaikoDataEthDeposit + Raw types.Log // Blockchain specific contextual infos +} + +// FilterEthDeposited is a free log retrieval operation binding the contract event 0x7120a3b075ad25974c5eed76dedb3a217c76c9c6d1f1e201caeba9b89de9a9d9. +// +// Solidity: event EthDeposited((address,uint96,uint64) deposit) +func (_TaikoL1 *TaikoL1Filterer) FilterEthDeposited(opts *bind.FilterOpts) (*TaikoL1EthDepositedIterator, error) { + + logs, sub, err := _TaikoL1.contract.FilterLogs(opts, "EthDeposited") + if err != nil { + return nil, err + } + return &TaikoL1EthDepositedIterator{contract: _TaikoL1.contract, event: "EthDeposited", logs: logs, sub: sub}, nil +} + +// WatchEthDeposited is a free log subscription operation binding the contract event 0x7120a3b075ad25974c5eed76dedb3a217c76c9c6d1f1e201caeba9b89de9a9d9. +// +// Solidity: event EthDeposited((address,uint96,uint64) deposit) +func (_TaikoL1 *TaikoL1Filterer) WatchEthDeposited(opts *bind.WatchOpts, sink chan<- *TaikoL1EthDeposited) (event.Subscription, error) { + + logs, sub, err := _TaikoL1.contract.WatchLogs(opts, "EthDeposited") + if err != nil { + return nil, err + } + return event.NewSubscription(func(quit <-chan struct{}) error { + defer sub.Unsubscribe() + for { + select { + case log := <-logs: + // New log arrived, parse the event and forward to the user + event := new(TaikoL1EthDeposited) + if err := _TaikoL1.contract.UnpackLog(event, "EthDeposited", log); err != nil { + return err + } + event.Raw = log + + select { + case sink <- event: + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + } + }), nil +} + +// ParseEthDeposited is a log parse operation binding the contract event 0x7120a3b075ad25974c5eed76dedb3a217c76c9c6d1f1e201caeba9b89de9a9d9. +// +// Solidity: event EthDeposited((address,uint96,uint64) deposit) +func (_TaikoL1 *TaikoL1Filterer) ParseEthDeposited(log types.Log) (*TaikoL1EthDeposited, error) { + event := new(TaikoL1EthDeposited) + if err := _TaikoL1.contract.UnpackLog(event, "EthDeposited", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} + +// TaikoL1InitializedIterator is returned from FilterInitialized and is used to iterate over the raw logs and unpacked data for Initialized events raised by the TaikoL1 contract. +type TaikoL1InitializedIterator struct { + Event *TaikoL1Initialized // Event containing the contract specifics and raw log contract *bind.BoundContract // Generic contract to use for unpacking event data event string // Event name to use for unpacking event data @@ -1884,7 +2563,7 @@ type TaikoL1CrossChainSynced0Iterator struct { // Next advances the iterator to the subsequent event, returning whether there // are any more events found. In case of a retrieval or parsing error, false is // returned and Error() can be queried for the exact failure. -func (it *TaikoL1CrossChainSynced0Iterator) Next() bool { +func (it *TaikoL1InitializedIterator) Next() bool { // If the iterator failed, stop iterating if it.fail != nil { return false @@ -1893,7 +2572,7 @@ func (it *TaikoL1CrossChainSynced0Iterator) Next() bool { if it.done { select { case log := <-it.logs: - it.Event = new(TaikoL1CrossChainSynced0) + it.Event = new(TaikoL1Initialized) if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { it.fail = err return false @@ -1908,7 +2587,7 @@ func (it *TaikoL1CrossChainSynced0Iterator) Next() bool { // Iterator still in progress, wait for either a data or an error event select { case log := <-it.logs: - it.Event = new(TaikoL1CrossChainSynced0) + it.Event = new(TaikoL1Initialized) if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { it.fail = err return false @@ -1924,53 +2603,41 @@ func (it *TaikoL1CrossChainSynced0Iterator) Next() bool { } // Error returns any retrieval or parsing error occurred during filtering. -func (it *TaikoL1CrossChainSynced0Iterator) Error() error { +func (it *TaikoL1InitializedIterator) Error() error { return it.fail } // Close terminates the iteration process, releasing any pending underlying // resources. -func (it *TaikoL1CrossChainSynced0Iterator) Close() error { +func (it *TaikoL1InitializedIterator) Close() error { it.sub.Unsubscribe() return nil } -// TaikoL1CrossChainSynced0 represents a CrossChainSynced0 event raised by the TaikoL1 contract. -type TaikoL1CrossChainSynced0 struct { - SrcHeight uint64 - BlockHash [32]byte - SignalRoot [32]byte - Raw types.Log // Blockchain specific contextual infos +// TaikoL1Initialized represents a Initialized event raised by the TaikoL1 contract. +type TaikoL1Initialized struct { + Version uint8 + Raw types.Log // Blockchain specific contextual infos } -// FilterCrossChainSynced0 is a free log retrieval operation binding the contract event 0x004ce985b8852a486571d0545799251fd671adcf33b7854a5f0f6a6a2431a555. +// FilterInitialized is a free log retrieval operation binding the contract event 0x7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb3847402498. // -// Solidity: event CrossChainSynced(uint64 indexed srcHeight, bytes32 blockHash, bytes32 signalRoot) -func (_TaikoL1 *TaikoL1Filterer) FilterCrossChainSynced0(opts *bind.FilterOpts, srcHeight []uint64) (*TaikoL1CrossChainSynced0Iterator, error) { - - var srcHeightRule []interface{} - for _, srcHeightItem := range srcHeight { - srcHeightRule = append(srcHeightRule, srcHeightItem) - } +// Solidity: event Initialized(uint8 version) +func (_TaikoL1 *TaikoL1Filterer) FilterInitialized(opts *bind.FilterOpts) (*TaikoL1InitializedIterator, error) { - logs, sub, err := _TaikoL1.contract.FilterLogs(opts, "CrossChainSynced0", srcHeightRule) + logs, sub, err := _TaikoL1.contract.FilterLogs(opts, "Initialized") if err != nil { return nil, err } - return &TaikoL1CrossChainSynced0Iterator{contract: _TaikoL1.contract, event: "CrossChainSynced0", logs: logs, sub: sub}, nil + return &TaikoL1InitializedIterator{contract: _TaikoL1.contract, event: "Initialized", logs: logs, sub: sub}, nil } -// WatchCrossChainSynced0 is a free log subscription operation binding the contract event 0x004ce985b8852a486571d0545799251fd671adcf33b7854a5f0f6a6a2431a555. +// WatchInitialized is a free log subscription operation binding the contract event 0x7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb3847402498. // -// Solidity: event CrossChainSynced(uint64 indexed srcHeight, bytes32 blockHash, bytes32 signalRoot) -func (_TaikoL1 *TaikoL1Filterer) WatchCrossChainSynced0(opts *bind.WatchOpts, sink chan<- *TaikoL1CrossChainSynced0, srcHeight []uint64) (event.Subscription, error) { - - var srcHeightRule []interface{} - for _, srcHeightItem := range srcHeight { - srcHeightRule = append(srcHeightRule, srcHeightItem) - } +// Solidity: event Initialized(uint8 version) +func (_TaikoL1 *TaikoL1Filterer) WatchInitialized(opts *bind.WatchOpts, sink chan<- *TaikoL1Initialized) (event.Subscription, error) { - logs, sub, err := _TaikoL1.contract.WatchLogs(opts, "CrossChainSynced0", srcHeightRule) + logs, sub, err := _TaikoL1.contract.WatchLogs(opts, "Initialized") if err != nil { return nil, err } @@ -1980,8 +2647,8 @@ func (_TaikoL1 *TaikoL1Filterer) WatchCrossChainSynced0(opts *bind.WatchOpts, si select { case log := <-logs: // New log arrived, parse the event and forward to the user - event := new(TaikoL1CrossChainSynced0) - if err := _TaikoL1.contract.UnpackLog(event, "CrossChainSynced0", log); err != nil { + event := new(TaikoL1Initialized) + if err := _TaikoL1.contract.UnpackLog(event, "Initialized", log); err != nil { return err } event.Raw = log @@ -2002,21 +2669,21 @@ func (_TaikoL1 *TaikoL1Filterer) WatchCrossChainSynced0(opts *bind.WatchOpts, si }), nil } -// ParseCrossChainSynced0 is a log parse operation binding the contract event 0x004ce985b8852a486571d0545799251fd671adcf33b7854a5f0f6a6a2431a555. +// ParseInitialized is a log parse operation binding the contract event 0x7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb3847402498. // -// Solidity: event CrossChainSynced(uint64 indexed srcHeight, bytes32 blockHash, bytes32 signalRoot) -func (_TaikoL1 *TaikoL1Filterer) ParseCrossChainSynced0(log types.Log) (*TaikoL1CrossChainSynced0, error) { - event := new(TaikoL1CrossChainSynced0) - if err := _TaikoL1.contract.UnpackLog(event, "CrossChainSynced0", log); err != nil { +// Solidity: event Initialized(uint8 version) +func (_TaikoL1 *TaikoL1Filterer) ParseInitialized(log types.Log) (*TaikoL1Initialized, error) { + event := new(TaikoL1Initialized) + if err := _TaikoL1.contract.UnpackLog(event, "Initialized", log); err != nil { return nil, err } event.Raw = log return event, nil } -// TaikoL1EthDepositedIterator is returned from FilterEthDeposited and is used to iterate over the raw logs and unpacked data for EthDeposited events raised by the TaikoL1 contract. -type TaikoL1EthDepositedIterator struct { - Event *TaikoL1EthDeposited // Event containing the contract specifics and raw log +// TaikoL1OwnershipTransferStartedIterator is returned from FilterOwnershipTransferStarted and is used to iterate over the raw logs and unpacked data for OwnershipTransferStarted events raised by the TaikoL1 contract. +type TaikoL1OwnershipTransferStartedIterator struct { + Event *TaikoL1OwnershipTransferStarted // Event containing the contract specifics and raw log contract *bind.BoundContract // Generic contract to use for unpacking event data event string // Event name to use for unpacking event data @@ -2030,7 +2697,7 @@ type TaikoL1EthDepositedIterator struct { // Next advances the iterator to the subsequent event, returning whether there // are any more events found. In case of a retrieval or parsing error, false is // returned and Error() can be queried for the exact failure. -func (it *TaikoL1EthDepositedIterator) Next() bool { +func (it *TaikoL1OwnershipTransferStartedIterator) Next() bool { // If the iterator failed, stop iterating if it.fail != nil { return false @@ -2039,7 +2706,7 @@ func (it *TaikoL1EthDepositedIterator) Next() bool { if it.done { select { case log := <-it.logs: - it.Event = new(TaikoL1EthDeposited) + it.Event = new(TaikoL1OwnershipTransferStarted) if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { it.fail = err return false @@ -2054,7 +2721,7 @@ func (it *TaikoL1EthDepositedIterator) Next() bool { // Iterator still in progress, wait for either a data or an error event select { case log := <-it.logs: - it.Event = new(TaikoL1EthDeposited) + it.Event = new(TaikoL1OwnershipTransferStarted) if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { it.fail = err return false @@ -2070,41 +2737,60 @@ func (it *TaikoL1EthDepositedIterator) Next() bool { } // Error returns any retrieval or parsing error occurred during filtering. -func (it *TaikoL1EthDepositedIterator) Error() error { +func (it *TaikoL1OwnershipTransferStartedIterator) Error() error { return it.fail } // Close terminates the iteration process, releasing any pending underlying // resources. -func (it *TaikoL1EthDepositedIterator) Close() error { +func (it *TaikoL1OwnershipTransferStartedIterator) Close() error { it.sub.Unsubscribe() return nil } -// TaikoL1EthDeposited represents a EthDeposited event raised by the TaikoL1 contract. -type TaikoL1EthDeposited struct { - Deposit TaikoDataEthDeposit - Raw types.Log // Blockchain specific contextual infos +// TaikoL1OwnershipTransferStarted represents a OwnershipTransferStarted event raised by the TaikoL1 contract. +type TaikoL1OwnershipTransferStarted struct { + PreviousOwner common.Address + NewOwner common.Address + Raw types.Log // Blockchain specific contextual infos } -// FilterEthDeposited is a free log retrieval operation binding the contract event 0x7120a3b075ad25974c5eed76dedb3a217c76c9c6d1f1e201caeba9b89de9a9d9. +// FilterOwnershipTransferStarted is a free log retrieval operation binding the contract event 0x38d16b8cac22d99fc7c124b9cd0de2d3fa1faef420bfe791d8c362d765e22700. // -// Solidity: event EthDeposited((address,uint96,uint64) deposit) -func (_TaikoL1 *TaikoL1Filterer) FilterEthDeposited(opts *bind.FilterOpts) (*TaikoL1EthDepositedIterator, error) { +// Solidity: event OwnershipTransferStarted(address indexed previousOwner, address indexed newOwner) +func (_TaikoL1 *TaikoL1Filterer) FilterOwnershipTransferStarted(opts *bind.FilterOpts, previousOwner []common.Address, newOwner []common.Address) (*TaikoL1OwnershipTransferStartedIterator, error) { - logs, sub, err := _TaikoL1.contract.FilterLogs(opts, "EthDeposited") + var previousOwnerRule []interface{} + for _, previousOwnerItem := range previousOwner { + previousOwnerRule = append(previousOwnerRule, previousOwnerItem) + } + var newOwnerRule []interface{} + for _, newOwnerItem := range newOwner { + newOwnerRule = append(newOwnerRule, newOwnerItem) + } + + logs, sub, err := _TaikoL1.contract.FilterLogs(opts, "OwnershipTransferStarted", previousOwnerRule, newOwnerRule) if err != nil { return nil, err } - return &TaikoL1EthDepositedIterator{contract: _TaikoL1.contract, event: "EthDeposited", logs: logs, sub: sub}, nil + return &TaikoL1OwnershipTransferStartedIterator{contract: _TaikoL1.contract, event: "OwnershipTransferStarted", logs: logs, sub: sub}, nil } -// WatchEthDeposited is a free log subscription operation binding the contract event 0x7120a3b075ad25974c5eed76dedb3a217c76c9c6d1f1e201caeba9b89de9a9d9. +// WatchOwnershipTransferStarted is a free log subscription operation binding the contract event 0x38d16b8cac22d99fc7c124b9cd0de2d3fa1faef420bfe791d8c362d765e22700. // -// Solidity: event EthDeposited((address,uint96,uint64) deposit) -func (_TaikoL1 *TaikoL1Filterer) WatchEthDeposited(opts *bind.WatchOpts, sink chan<- *TaikoL1EthDeposited) (event.Subscription, error) { +// Solidity: event OwnershipTransferStarted(address indexed previousOwner, address indexed newOwner) +func (_TaikoL1 *TaikoL1Filterer) WatchOwnershipTransferStarted(opts *bind.WatchOpts, sink chan<- *TaikoL1OwnershipTransferStarted, previousOwner []common.Address, newOwner []common.Address) (event.Subscription, error) { - logs, sub, err := _TaikoL1.contract.WatchLogs(opts, "EthDeposited") + var previousOwnerRule []interface{} + for _, previousOwnerItem := range previousOwner { + previousOwnerRule = append(previousOwnerRule, previousOwnerItem) + } + var newOwnerRule []interface{} + for _, newOwnerItem := range newOwner { + newOwnerRule = append(newOwnerRule, newOwnerItem) + } + + logs, sub, err := _TaikoL1.contract.WatchLogs(opts, "OwnershipTransferStarted", previousOwnerRule, newOwnerRule) if err != nil { return nil, err } @@ -2114,8 +2800,8 @@ func (_TaikoL1 *TaikoL1Filterer) WatchEthDeposited(opts *bind.WatchOpts, sink ch select { case log := <-logs: // New log arrived, parse the event and forward to the user - event := new(TaikoL1EthDeposited) - if err := _TaikoL1.contract.UnpackLog(event, "EthDeposited", log); err != nil { + event := new(TaikoL1OwnershipTransferStarted) + if err := _TaikoL1.contract.UnpackLog(event, "OwnershipTransferStarted", log); err != nil { return err } event.Raw = log @@ -2136,21 +2822,21 @@ func (_TaikoL1 *TaikoL1Filterer) WatchEthDeposited(opts *bind.WatchOpts, sink ch }), nil } -// ParseEthDeposited is a log parse operation binding the contract event 0x7120a3b075ad25974c5eed76dedb3a217c76c9c6d1f1e201caeba9b89de9a9d9. +// ParseOwnershipTransferStarted is a log parse operation binding the contract event 0x38d16b8cac22d99fc7c124b9cd0de2d3fa1faef420bfe791d8c362d765e22700. // -// Solidity: event EthDeposited((address,uint96,uint64) deposit) -func (_TaikoL1 *TaikoL1Filterer) ParseEthDeposited(log types.Log) (*TaikoL1EthDeposited, error) { - event := new(TaikoL1EthDeposited) - if err := _TaikoL1.contract.UnpackLog(event, "EthDeposited", log); err != nil { +// Solidity: event OwnershipTransferStarted(address indexed previousOwner, address indexed newOwner) +func (_TaikoL1 *TaikoL1Filterer) ParseOwnershipTransferStarted(log types.Log) (*TaikoL1OwnershipTransferStarted, error) { + event := new(TaikoL1OwnershipTransferStarted) + if err := _TaikoL1.contract.UnpackLog(event, "OwnershipTransferStarted", log); err != nil { return nil, err } event.Raw = log return event, nil } -// TaikoL1EthDeposited0Iterator is returned from FilterEthDeposited0 and is used to iterate over the raw logs and unpacked data for EthDeposited0 events raised by the TaikoL1 contract. -type TaikoL1EthDeposited0Iterator struct { - Event *TaikoL1EthDeposited0 // Event containing the contract specifics and raw log +// TaikoL1OwnershipTransferredIterator is returned from FilterOwnershipTransferred and is used to iterate over the raw logs and unpacked data for OwnershipTransferred events raised by the TaikoL1 contract. +type TaikoL1OwnershipTransferredIterator struct { + Event *TaikoL1OwnershipTransferred // Event containing the contract specifics and raw log contract *bind.BoundContract // Generic contract to use for unpacking event data event string // Event name to use for unpacking event data @@ -2164,7 +2850,7 @@ type TaikoL1EthDeposited0Iterator struct { // Next advances the iterator to the subsequent event, returning whether there // are any more events found. In case of a retrieval or parsing error, false is // returned and Error() can be queried for the exact failure. -func (it *TaikoL1EthDeposited0Iterator) Next() bool { +func (it *TaikoL1OwnershipTransferredIterator) Next() bool { // If the iterator failed, stop iterating if it.fail != nil { return false @@ -2173,7 +2859,7 @@ func (it *TaikoL1EthDeposited0Iterator) Next() bool { if it.done { select { case log := <-it.logs: - it.Event = new(TaikoL1EthDeposited0) + it.Event = new(TaikoL1OwnershipTransferred) if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { it.fail = err return false @@ -2188,7 +2874,7 @@ func (it *TaikoL1EthDeposited0Iterator) Next() bool { // Iterator still in progress, wait for either a data or an error event select { case log := <-it.logs: - it.Event = new(TaikoL1EthDeposited0) + it.Event = new(TaikoL1OwnershipTransferred) if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { it.fail = err return false @@ -2204,41 +2890,60 @@ func (it *TaikoL1EthDeposited0Iterator) Next() bool { } // Error returns any retrieval or parsing error occurred during filtering. -func (it *TaikoL1EthDeposited0Iterator) Error() error { +func (it *TaikoL1OwnershipTransferredIterator) Error() error { return it.fail } // Close terminates the iteration process, releasing any pending underlying // resources. -func (it *TaikoL1EthDeposited0Iterator) Close() error { +func (it *TaikoL1OwnershipTransferredIterator) Close() error { it.sub.Unsubscribe() return nil } -// TaikoL1EthDeposited0 represents a EthDeposited0 event raised by the TaikoL1 contract. -type TaikoL1EthDeposited0 struct { - Deposit TaikoDataEthDeposit - Raw types.Log // Blockchain specific contextual infos +// TaikoL1OwnershipTransferred represents a OwnershipTransferred event raised by the TaikoL1 contract. +type TaikoL1OwnershipTransferred struct { + PreviousOwner common.Address + NewOwner common.Address + Raw types.Log // Blockchain specific contextual infos } -// FilterEthDeposited0 is a free log retrieval operation binding the contract event 0x7120a3b075ad25974c5eed76dedb3a217c76c9c6d1f1e201caeba9b89de9a9d9. +// FilterOwnershipTransferred is a free log retrieval operation binding the contract event 0x8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0. // -// Solidity: event EthDeposited((address,uint96,uint64) deposit) -func (_TaikoL1 *TaikoL1Filterer) FilterEthDeposited0(opts *bind.FilterOpts) (*TaikoL1EthDeposited0Iterator, error) { +// Solidity: event OwnershipTransferred(address indexed previousOwner, address indexed newOwner) +func (_TaikoL1 *TaikoL1Filterer) FilterOwnershipTransferred(opts *bind.FilterOpts, previousOwner []common.Address, newOwner []common.Address) (*TaikoL1OwnershipTransferredIterator, error) { + + var previousOwnerRule []interface{} + for _, previousOwnerItem := range previousOwner { + previousOwnerRule = append(previousOwnerRule, previousOwnerItem) + } + var newOwnerRule []interface{} + for _, newOwnerItem := range newOwner { + newOwnerRule = append(newOwnerRule, newOwnerItem) + } - logs, sub, err := _TaikoL1.contract.FilterLogs(opts, "EthDeposited0") + logs, sub, err := _TaikoL1.contract.FilterLogs(opts, "OwnershipTransferred", previousOwnerRule, newOwnerRule) if err != nil { return nil, err } - return &TaikoL1EthDeposited0Iterator{contract: _TaikoL1.contract, event: "EthDeposited0", logs: logs, sub: sub}, nil + return &TaikoL1OwnershipTransferredIterator{contract: _TaikoL1.contract, event: "OwnershipTransferred", logs: logs, sub: sub}, nil } -// WatchEthDeposited0 is a free log subscription operation binding the contract event 0x7120a3b075ad25974c5eed76dedb3a217c76c9c6d1f1e201caeba9b89de9a9d9. +// WatchOwnershipTransferred is a free log subscription operation binding the contract event 0x8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0. // -// Solidity: event EthDeposited((address,uint96,uint64) deposit) -func (_TaikoL1 *TaikoL1Filterer) WatchEthDeposited0(opts *bind.WatchOpts, sink chan<- *TaikoL1EthDeposited0) (event.Subscription, error) { +// Solidity: event OwnershipTransferred(address indexed previousOwner, address indexed newOwner) +func (_TaikoL1 *TaikoL1Filterer) WatchOwnershipTransferred(opts *bind.WatchOpts, sink chan<- *TaikoL1OwnershipTransferred, previousOwner []common.Address, newOwner []common.Address) (event.Subscription, error) { + + var previousOwnerRule []interface{} + for _, previousOwnerItem := range previousOwner { + previousOwnerRule = append(previousOwnerRule, previousOwnerItem) + } + var newOwnerRule []interface{} + for _, newOwnerItem := range newOwner { + newOwnerRule = append(newOwnerRule, newOwnerItem) + } - logs, sub, err := _TaikoL1.contract.WatchLogs(opts, "EthDeposited0") + logs, sub, err := _TaikoL1.contract.WatchLogs(opts, "OwnershipTransferred", previousOwnerRule, newOwnerRule) if err != nil { return nil, err } @@ -2248,8 +2953,8 @@ func (_TaikoL1 *TaikoL1Filterer) WatchEthDeposited0(opts *bind.WatchOpts, sink c select { case log := <-logs: // New log arrived, parse the event and forward to the user - event := new(TaikoL1EthDeposited0) - if err := _TaikoL1.contract.UnpackLog(event, "EthDeposited0", log); err != nil { + event := new(TaikoL1OwnershipTransferred) + if err := _TaikoL1.contract.UnpackLog(event, "OwnershipTransferred", log); err != nil { return err } event.Raw = log @@ -2270,21 +2975,21 @@ func (_TaikoL1 *TaikoL1Filterer) WatchEthDeposited0(opts *bind.WatchOpts, sink c }), nil } -// ParseEthDeposited0 is a log parse operation binding the contract event 0x7120a3b075ad25974c5eed76dedb3a217c76c9c6d1f1e201caeba9b89de9a9d9. +// ParseOwnershipTransferred is a log parse operation binding the contract event 0x8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0. // -// Solidity: event EthDeposited((address,uint96,uint64) deposit) -func (_TaikoL1 *TaikoL1Filterer) ParseEthDeposited0(log types.Log) (*TaikoL1EthDeposited0, error) { - event := new(TaikoL1EthDeposited0) - if err := _TaikoL1.contract.UnpackLog(event, "EthDeposited0", log); err != nil { +// Solidity: event OwnershipTransferred(address indexed previousOwner, address indexed newOwner) +func (_TaikoL1 *TaikoL1Filterer) ParseOwnershipTransferred(log types.Log) (*TaikoL1OwnershipTransferred, error) { + event := new(TaikoL1OwnershipTransferred) + if err := _TaikoL1.contract.UnpackLog(event, "OwnershipTransferred", log); err != nil { return nil, err } event.Raw = log return event, nil } -// TaikoL1InitializedIterator is returned from FilterInitialized and is used to iterate over the raw logs and unpacked data for Initialized events raised by the TaikoL1 contract. -type TaikoL1InitializedIterator struct { - Event *TaikoL1Initialized // Event containing the contract specifics and raw log +// TaikoL1PausedIterator is returned from FilterPaused and is used to iterate over the raw logs and unpacked data for Paused events raised by the TaikoL1 contract. +type TaikoL1PausedIterator struct { + Event *TaikoL1Paused // Event containing the contract specifics and raw log contract *bind.BoundContract // Generic contract to use for unpacking event data event string // Event name to use for unpacking event data @@ -2298,7 +3003,7 @@ type TaikoL1InitializedIterator struct { // Next advances the iterator to the subsequent event, returning whether there // are any more events found. In case of a retrieval or parsing error, false is // returned and Error() can be queried for the exact failure. -func (it *TaikoL1InitializedIterator) Next() bool { +func (it *TaikoL1PausedIterator) Next() bool { // If the iterator failed, stop iterating if it.fail != nil { return false @@ -2307,7 +3012,7 @@ func (it *TaikoL1InitializedIterator) Next() bool { if it.done { select { case log := <-it.logs: - it.Event = new(TaikoL1Initialized) + it.Event = new(TaikoL1Paused) if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { it.fail = err return false @@ -2322,7 +3027,7 @@ func (it *TaikoL1InitializedIterator) Next() bool { // Iterator still in progress, wait for either a data or an error event select { case log := <-it.logs: - it.Event = new(TaikoL1Initialized) + it.Event = new(TaikoL1Paused) if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { it.fail = err return false @@ -2338,41 +3043,41 @@ func (it *TaikoL1InitializedIterator) Next() bool { } // Error returns any retrieval or parsing error occurred during filtering. -func (it *TaikoL1InitializedIterator) Error() error { +func (it *TaikoL1PausedIterator) Error() error { return it.fail } // Close terminates the iteration process, releasing any pending underlying // resources. -func (it *TaikoL1InitializedIterator) Close() error { +func (it *TaikoL1PausedIterator) Close() error { it.sub.Unsubscribe() return nil } -// TaikoL1Initialized represents a Initialized event raised by the TaikoL1 contract. -type TaikoL1Initialized struct { - Version uint8 +// TaikoL1Paused represents a Paused event raised by the TaikoL1 contract. +type TaikoL1Paused struct { + Account common.Address Raw types.Log // Blockchain specific contextual infos } -// FilterInitialized is a free log retrieval operation binding the contract event 0x7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb3847402498. +// FilterPaused is a free log retrieval operation binding the contract event 0x62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a258. // -// Solidity: event Initialized(uint8 version) -func (_TaikoL1 *TaikoL1Filterer) FilterInitialized(opts *bind.FilterOpts) (*TaikoL1InitializedIterator, error) { +// Solidity: event Paused(address account) +func (_TaikoL1 *TaikoL1Filterer) FilterPaused(opts *bind.FilterOpts) (*TaikoL1PausedIterator, error) { - logs, sub, err := _TaikoL1.contract.FilterLogs(opts, "Initialized") + logs, sub, err := _TaikoL1.contract.FilterLogs(opts, "Paused") if err != nil { return nil, err } - return &TaikoL1InitializedIterator{contract: _TaikoL1.contract, event: "Initialized", logs: logs, sub: sub}, nil + return &TaikoL1PausedIterator{contract: _TaikoL1.contract, event: "Paused", logs: logs, sub: sub}, nil } -// WatchInitialized is a free log subscription operation binding the contract event 0x7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb3847402498. +// WatchPaused is a free log subscription operation binding the contract event 0x62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a258. // -// Solidity: event Initialized(uint8 version) -func (_TaikoL1 *TaikoL1Filterer) WatchInitialized(opts *bind.WatchOpts, sink chan<- *TaikoL1Initialized) (event.Subscription, error) { +// Solidity: event Paused(address account) +func (_TaikoL1 *TaikoL1Filterer) WatchPaused(opts *bind.WatchOpts, sink chan<- *TaikoL1Paused) (event.Subscription, error) { - logs, sub, err := _TaikoL1.contract.WatchLogs(opts, "Initialized") + logs, sub, err := _TaikoL1.contract.WatchLogs(opts, "Paused") if err != nil { return nil, err } @@ -2382,8 +3087,8 @@ func (_TaikoL1 *TaikoL1Filterer) WatchInitialized(opts *bind.WatchOpts, sink cha select { case log := <-logs: // New log arrived, parse the event and forward to the user - event := new(TaikoL1Initialized) - if err := _TaikoL1.contract.UnpackLog(event, "Initialized", log); err != nil { + event := new(TaikoL1Paused) + if err := _TaikoL1.contract.UnpackLog(event, "Paused", log); err != nil { return err } event.Raw = log @@ -2404,21 +3109,21 @@ func (_TaikoL1 *TaikoL1Filterer) WatchInitialized(opts *bind.WatchOpts, sink cha }), nil } -// ParseInitialized is a log parse operation binding the contract event 0x7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb3847402498. +// ParsePaused is a log parse operation binding the contract event 0x62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a258. // -// Solidity: event Initialized(uint8 version) -func (_TaikoL1 *TaikoL1Filterer) ParseInitialized(log types.Log) (*TaikoL1Initialized, error) { - event := new(TaikoL1Initialized) - if err := _TaikoL1.contract.UnpackLog(event, "Initialized", log); err != nil { +// Solidity: event Paused(address account) +func (_TaikoL1 *TaikoL1Filterer) ParsePaused(log types.Log) (*TaikoL1Paused, error) { + event := new(TaikoL1Paused) + if err := _TaikoL1.contract.UnpackLog(event, "Paused", log); err != nil { return nil, err } event.Raw = log return event, nil } -// TaikoL1OwnershipTransferredIterator is returned from FilterOwnershipTransferred and is used to iterate over the raw logs and unpacked data for OwnershipTransferred events raised by the TaikoL1 contract. -type TaikoL1OwnershipTransferredIterator struct { - Event *TaikoL1OwnershipTransferred // Event containing the contract specifics and raw log +// TaikoL1ProvingPausedIterator is returned from FilterProvingPaused and is used to iterate over the raw logs and unpacked data for ProvingPaused events raised by the TaikoL1 contract. +type TaikoL1ProvingPausedIterator struct { + Event *TaikoL1ProvingPaused // Event containing the contract specifics and raw log contract *bind.BoundContract // Generic contract to use for unpacking event data event string // Event name to use for unpacking event data @@ -2432,7 +3137,7 @@ type TaikoL1OwnershipTransferredIterator struct { // Next advances the iterator to the subsequent event, returning whether there // are any more events found. In case of a retrieval or parsing error, false is // returned and Error() can be queried for the exact failure. -func (it *TaikoL1OwnershipTransferredIterator) Next() bool { +func (it *TaikoL1ProvingPausedIterator) Next() bool { // If the iterator failed, stop iterating if it.fail != nil { return false @@ -2441,7 +3146,7 @@ func (it *TaikoL1OwnershipTransferredIterator) Next() bool { if it.done { select { case log := <-it.logs: - it.Event = new(TaikoL1OwnershipTransferred) + it.Event = new(TaikoL1ProvingPaused) if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { it.fail = err return false @@ -2456,7 +3161,7 @@ func (it *TaikoL1OwnershipTransferredIterator) Next() bool { // Iterator still in progress, wait for either a data or an error event select { case log := <-it.logs: - it.Event = new(TaikoL1OwnershipTransferred) + it.Event = new(TaikoL1ProvingPaused) if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { it.fail = err return false @@ -2472,60 +3177,41 @@ func (it *TaikoL1OwnershipTransferredIterator) Next() bool { } // Error returns any retrieval or parsing error occurred during filtering. -func (it *TaikoL1OwnershipTransferredIterator) Error() error { +func (it *TaikoL1ProvingPausedIterator) Error() error { return it.fail } // Close terminates the iteration process, releasing any pending underlying // resources. -func (it *TaikoL1OwnershipTransferredIterator) Close() error { +func (it *TaikoL1ProvingPausedIterator) Close() error { it.sub.Unsubscribe() return nil } -// TaikoL1OwnershipTransferred represents a OwnershipTransferred event raised by the TaikoL1 contract. -type TaikoL1OwnershipTransferred struct { - PreviousOwner common.Address - NewOwner common.Address - Raw types.Log // Blockchain specific contextual infos +// TaikoL1ProvingPaused represents a ProvingPaused event raised by the TaikoL1 contract. +type TaikoL1ProvingPaused struct { + Paused bool + Raw types.Log // Blockchain specific contextual infos } -// FilterOwnershipTransferred is a free log retrieval operation binding the contract event 0x8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0. +// FilterProvingPaused is a free log retrieval operation binding the contract event 0xed64db85835d07c3c990b8ebdd55e32d64e5ed53143b6ef2179e7bfaf17ddc3b. // -// Solidity: event OwnershipTransferred(address indexed previousOwner, address indexed newOwner) -func (_TaikoL1 *TaikoL1Filterer) FilterOwnershipTransferred(opts *bind.FilterOpts, previousOwner []common.Address, newOwner []common.Address) (*TaikoL1OwnershipTransferredIterator, error) { - - var previousOwnerRule []interface{} - for _, previousOwnerItem := range previousOwner { - previousOwnerRule = append(previousOwnerRule, previousOwnerItem) - } - var newOwnerRule []interface{} - for _, newOwnerItem := range newOwner { - newOwnerRule = append(newOwnerRule, newOwnerItem) - } +// Solidity: event ProvingPaused(bool paused) +func (_TaikoL1 *TaikoL1Filterer) FilterProvingPaused(opts *bind.FilterOpts) (*TaikoL1ProvingPausedIterator, error) { - logs, sub, err := _TaikoL1.contract.FilterLogs(opts, "OwnershipTransferred", previousOwnerRule, newOwnerRule) + logs, sub, err := _TaikoL1.contract.FilterLogs(opts, "ProvingPaused") if err != nil { return nil, err } - return &TaikoL1OwnershipTransferredIterator{contract: _TaikoL1.contract, event: "OwnershipTransferred", logs: logs, sub: sub}, nil + return &TaikoL1ProvingPausedIterator{contract: _TaikoL1.contract, event: "ProvingPaused", logs: logs, sub: sub}, nil } -// WatchOwnershipTransferred is a free log subscription operation binding the contract event 0x8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0. +// WatchProvingPaused is a free log subscription operation binding the contract event 0xed64db85835d07c3c990b8ebdd55e32d64e5ed53143b6ef2179e7bfaf17ddc3b. // -// Solidity: event OwnershipTransferred(address indexed previousOwner, address indexed newOwner) -func (_TaikoL1 *TaikoL1Filterer) WatchOwnershipTransferred(opts *bind.WatchOpts, sink chan<- *TaikoL1OwnershipTransferred, previousOwner []common.Address, newOwner []common.Address) (event.Subscription, error) { - - var previousOwnerRule []interface{} - for _, previousOwnerItem := range previousOwner { - previousOwnerRule = append(previousOwnerRule, previousOwnerItem) - } - var newOwnerRule []interface{} - for _, newOwnerItem := range newOwner { - newOwnerRule = append(newOwnerRule, newOwnerItem) - } +// Solidity: event ProvingPaused(bool paused) +func (_TaikoL1 *TaikoL1Filterer) WatchProvingPaused(opts *bind.WatchOpts, sink chan<- *TaikoL1ProvingPaused) (event.Subscription, error) { - logs, sub, err := _TaikoL1.contract.WatchLogs(opts, "OwnershipTransferred", previousOwnerRule, newOwnerRule) + logs, sub, err := _TaikoL1.contract.WatchLogs(opts, "ProvingPaused") if err != nil { return nil, err } @@ -2535,8 +3221,8 @@ func (_TaikoL1 *TaikoL1Filterer) WatchOwnershipTransferred(opts *bind.WatchOpts, select { case log := <-logs: // New log arrived, parse the event and forward to the user - event := new(TaikoL1OwnershipTransferred) - if err := _TaikoL1.contract.UnpackLog(event, "OwnershipTransferred", log); err != nil { + event := new(TaikoL1ProvingPaused) + if err := _TaikoL1.contract.UnpackLog(event, "ProvingPaused", log); err != nil { return err } event.Raw = log @@ -2557,21 +3243,21 @@ func (_TaikoL1 *TaikoL1Filterer) WatchOwnershipTransferred(opts *bind.WatchOpts, }), nil } -// ParseOwnershipTransferred is a log parse operation binding the contract event 0x8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0. +// ParseProvingPaused is a log parse operation binding the contract event 0xed64db85835d07c3c990b8ebdd55e32d64e5ed53143b6ef2179e7bfaf17ddc3b. // -// Solidity: event OwnershipTransferred(address indexed previousOwner, address indexed newOwner) -func (_TaikoL1 *TaikoL1Filterer) ParseOwnershipTransferred(log types.Log) (*TaikoL1OwnershipTransferred, error) { - event := new(TaikoL1OwnershipTransferred) - if err := _TaikoL1.contract.UnpackLog(event, "OwnershipTransferred", log); err != nil { +// Solidity: event ProvingPaused(bool paused) +func (_TaikoL1 *TaikoL1Filterer) ParseProvingPaused(log types.Log) (*TaikoL1ProvingPaused, error) { + event := new(TaikoL1ProvingPaused) + if err := _TaikoL1.contract.UnpackLog(event, "ProvingPaused", log); err != nil { return nil, err } event.Raw = log return event, nil } -// TaikoL1PausedIterator is returned from FilterPaused and is used to iterate over the raw logs and unpacked data for Paused events raised by the TaikoL1 contract. -type TaikoL1PausedIterator struct { - Event *TaikoL1Paused // Event containing the contract specifics and raw log +// TaikoL1ProvingPaused0Iterator is returned from FilterProvingPaused0 and is used to iterate over the raw logs and unpacked data for ProvingPaused0 events raised by the TaikoL1 contract. +type TaikoL1ProvingPaused0Iterator struct { + Event *TaikoL1ProvingPaused0 // Event containing the contract specifics and raw log contract *bind.BoundContract // Generic contract to use for unpacking event data event string // Event name to use for unpacking event data @@ -2585,7 +3271,7 @@ type TaikoL1PausedIterator struct { // Next advances the iterator to the subsequent event, returning whether there // are any more events found. In case of a retrieval or parsing error, false is // returned and Error() can be queried for the exact failure. -func (it *TaikoL1PausedIterator) Next() bool { +func (it *TaikoL1ProvingPaused0Iterator) Next() bool { // If the iterator failed, stop iterating if it.fail != nil { return false @@ -2594,7 +3280,7 @@ func (it *TaikoL1PausedIterator) Next() bool { if it.done { select { case log := <-it.logs: - it.Event = new(TaikoL1Paused) + it.Event = new(TaikoL1ProvingPaused0) if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { it.fail = err return false @@ -2609,7 +3295,7 @@ func (it *TaikoL1PausedIterator) Next() bool { // Iterator still in progress, wait for either a data or an error event select { case log := <-it.logs: - it.Event = new(TaikoL1Paused) + it.Event = new(TaikoL1ProvingPaused0) if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { it.fail = err return false @@ -2625,41 +3311,41 @@ func (it *TaikoL1PausedIterator) Next() bool { } // Error returns any retrieval or parsing error occurred during filtering. -func (it *TaikoL1PausedIterator) Error() error { +func (it *TaikoL1ProvingPaused0Iterator) Error() error { return it.fail } // Close terminates the iteration process, releasing any pending underlying // resources. -func (it *TaikoL1PausedIterator) Close() error { +func (it *TaikoL1ProvingPaused0Iterator) Close() error { it.sub.Unsubscribe() return nil } -// TaikoL1Paused represents a Paused event raised by the TaikoL1 contract. -type TaikoL1Paused struct { - Account common.Address - Raw types.Log // Blockchain specific contextual infos +// TaikoL1ProvingPaused0 represents a ProvingPaused0 event raised by the TaikoL1 contract. +type TaikoL1ProvingPaused0 struct { + Paused bool + Raw types.Log // Blockchain specific contextual infos } -// FilterPaused is a free log retrieval operation binding the contract event 0x62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a258. +// FilterProvingPaused0 is a free log retrieval operation binding the contract event 0xed64db85835d07c3c990b8ebdd55e32d64e5ed53143b6ef2179e7bfaf17ddc3b. // -// Solidity: event Paused(address account) -func (_TaikoL1 *TaikoL1Filterer) FilterPaused(opts *bind.FilterOpts) (*TaikoL1PausedIterator, error) { +// Solidity: event ProvingPaused(bool paused) +func (_TaikoL1 *TaikoL1Filterer) FilterProvingPaused0(opts *bind.FilterOpts) (*TaikoL1ProvingPaused0Iterator, error) { - logs, sub, err := _TaikoL1.contract.FilterLogs(opts, "Paused") + logs, sub, err := _TaikoL1.contract.FilterLogs(opts, "ProvingPaused0") if err != nil { return nil, err } - return &TaikoL1PausedIterator{contract: _TaikoL1.contract, event: "Paused", logs: logs, sub: sub}, nil + return &TaikoL1ProvingPaused0Iterator{contract: _TaikoL1.contract, event: "ProvingPaused0", logs: logs, sub: sub}, nil } -// WatchPaused is a free log subscription operation binding the contract event 0x62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a258. +// WatchProvingPaused0 is a free log subscription operation binding the contract event 0xed64db85835d07c3c990b8ebdd55e32d64e5ed53143b6ef2179e7bfaf17ddc3b. // -// Solidity: event Paused(address account) -func (_TaikoL1 *TaikoL1Filterer) WatchPaused(opts *bind.WatchOpts, sink chan<- *TaikoL1Paused) (event.Subscription, error) { +// Solidity: event ProvingPaused(bool paused) +func (_TaikoL1 *TaikoL1Filterer) WatchProvingPaused0(opts *bind.WatchOpts, sink chan<- *TaikoL1ProvingPaused0) (event.Subscription, error) { - logs, sub, err := _TaikoL1.contract.WatchLogs(opts, "Paused") + logs, sub, err := _TaikoL1.contract.WatchLogs(opts, "ProvingPaused0") if err != nil { return nil, err } @@ -2669,8 +3355,8 @@ func (_TaikoL1 *TaikoL1Filterer) WatchPaused(opts *bind.WatchOpts, sink chan<- * select { case log := <-logs: // New log arrived, parse the event and forward to the user - event := new(TaikoL1Paused) - if err := _TaikoL1.contract.UnpackLog(event, "Paused", log); err != nil { + event := new(TaikoL1ProvingPaused0) + if err := _TaikoL1.contract.UnpackLog(event, "ProvingPaused0", log); err != nil { return err } event.Raw = log @@ -2691,12 +3377,12 @@ func (_TaikoL1 *TaikoL1Filterer) WatchPaused(opts *bind.WatchOpts, sink chan<- * }), nil } -// ParsePaused is a log parse operation binding the contract event 0x62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a258. +// ParseProvingPaused0 is a log parse operation binding the contract event 0xed64db85835d07c3c990b8ebdd55e32d64e5ed53143b6ef2179e7bfaf17ddc3b. // -// Solidity: event Paused(address account) -func (_TaikoL1 *TaikoL1Filterer) ParsePaused(log types.Log) (*TaikoL1Paused, error) { - event := new(TaikoL1Paused) - if err := _TaikoL1.contract.UnpackLog(event, "Paused", log); err != nil { +// Solidity: event ProvingPaused(bool paused) +func (_TaikoL1 *TaikoL1Filterer) ParseProvingPaused0(log types.Log) (*TaikoL1ProvingPaused0, error) { + event := new(TaikoL1ProvingPaused0) + if err := _TaikoL1.contract.UnpackLog(event, "ProvingPaused0", log); err != nil { return nil, err } event.Raw = log @@ -3377,140 +4063,6 @@ func (_TaikoL1 *TaikoL1Filterer) ParseTokenDeposited(log types.Log) (*TaikoL1Tok return event, nil } -// TaikoL1TokenDeposited0Iterator is returned from FilterTokenDeposited0 and is used to iterate over the raw logs and unpacked data for TokenDeposited0 events raised by the TaikoL1 contract. -type TaikoL1TokenDeposited0Iterator struct { - Event *TaikoL1TokenDeposited0 // Event containing the contract specifics and raw log - - contract *bind.BoundContract // Generic contract to use for unpacking event data - event string // Event name to use for unpacking event data - - logs chan types.Log // Log channel receiving the found contract events - sub ethereum.Subscription // Subscription for errors, completion and termination - done bool // Whether the subscription completed delivering logs - fail error // Occurred error to stop iteration -} - -// Next advances the iterator to the subsequent event, returning whether there -// are any more events found. In case of a retrieval or parsing error, false is -// returned and Error() can be queried for the exact failure. -func (it *TaikoL1TokenDeposited0Iterator) Next() bool { - // If the iterator failed, stop iterating - if it.fail != nil { - return false - } - // If the iterator completed, deliver directly whatever's available - if it.done { - select { - case log := <-it.logs: - it.Event = new(TaikoL1TokenDeposited0) - if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { - it.fail = err - return false - } - it.Event.Raw = log - return true - - default: - return false - } - } - // Iterator still in progress, wait for either a data or an error event - select { - case log := <-it.logs: - it.Event = new(TaikoL1TokenDeposited0) - if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { - it.fail = err - return false - } - it.Event.Raw = log - return true - - case err := <-it.sub.Err(): - it.done = true - it.fail = err - return it.Next() - } -} - -// Error returns any retrieval or parsing error occurred during filtering. -func (it *TaikoL1TokenDeposited0Iterator) Error() error { - return it.fail -} - -// Close terminates the iteration process, releasing any pending underlying -// resources. -func (it *TaikoL1TokenDeposited0Iterator) Close() error { - it.sub.Unsubscribe() - return nil -} - -// TaikoL1TokenDeposited0 represents a TokenDeposited0 event raised by the TaikoL1 contract. -type TaikoL1TokenDeposited0 struct { - Amount *big.Int - Raw types.Log // Blockchain specific contextual infos -} - -// FilterTokenDeposited0 is a free log retrieval operation binding the contract event 0x26a49ee784523ce049bcbe276a63c7c9dbd9f428b1aa53633e679c9c046e8858. -// -// Solidity: event TokenDeposited(uint256 amount) -func (_TaikoL1 *TaikoL1Filterer) FilterTokenDeposited0(opts *bind.FilterOpts) (*TaikoL1TokenDeposited0Iterator, error) { - - logs, sub, err := _TaikoL1.contract.FilterLogs(opts, "TokenDeposited0") - if err != nil { - return nil, err - } - return &TaikoL1TokenDeposited0Iterator{contract: _TaikoL1.contract, event: "TokenDeposited0", logs: logs, sub: sub}, nil -} - -// WatchTokenDeposited0 is a free log subscription operation binding the contract event 0x26a49ee784523ce049bcbe276a63c7c9dbd9f428b1aa53633e679c9c046e8858. -// -// Solidity: event TokenDeposited(uint256 amount) -func (_TaikoL1 *TaikoL1Filterer) WatchTokenDeposited0(opts *bind.WatchOpts, sink chan<- *TaikoL1TokenDeposited0) (event.Subscription, error) { - - logs, sub, err := _TaikoL1.contract.WatchLogs(opts, "TokenDeposited0") - if err != nil { - return nil, err - } - return event.NewSubscription(func(quit <-chan struct{}) error { - defer sub.Unsubscribe() - for { - select { - case log := <-logs: - // New log arrived, parse the event and forward to the user - event := new(TaikoL1TokenDeposited0) - if err := _TaikoL1.contract.UnpackLog(event, "TokenDeposited0", log); err != nil { - return err - } - event.Raw = log - - select { - case sink <- event: - case err := <-sub.Err(): - return err - case <-quit: - return nil - } - case err := <-sub.Err(): - return err - case <-quit: - return nil - } - } - }), nil -} - -// ParseTokenDeposited0 is a log parse operation binding the contract event 0x26a49ee784523ce049bcbe276a63c7c9dbd9f428b1aa53633e679c9c046e8858. -// -// Solidity: event TokenDeposited(uint256 amount) -func (_TaikoL1 *TaikoL1Filterer) ParseTokenDeposited0(log types.Log) (*TaikoL1TokenDeposited0, error) { - event := new(TaikoL1TokenDeposited0) - if err := _TaikoL1.contract.UnpackLog(event, "TokenDeposited0", log); err != nil { - return nil, err - } - event.Raw = log - return event, nil -} - // TaikoL1TokenWithdrawnIterator is returned from FilterTokenWithdrawn and is used to iterate over the raw logs and unpacked data for TokenWithdrawn events raised by the TaikoL1 contract. type TaikoL1TokenWithdrawnIterator struct { Event *TaikoL1TokenWithdrawn // Event containing the contract specifics and raw log @@ -3645,140 +4197,6 @@ func (_TaikoL1 *TaikoL1Filterer) ParseTokenWithdrawn(log types.Log) (*TaikoL1Tok return event, nil } -// TaikoL1TokenWithdrawn0Iterator is returned from FilterTokenWithdrawn0 and is used to iterate over the raw logs and unpacked data for TokenWithdrawn0 events raised by the TaikoL1 contract. -type TaikoL1TokenWithdrawn0Iterator struct { - Event *TaikoL1TokenWithdrawn0 // Event containing the contract specifics and raw log - - contract *bind.BoundContract // Generic contract to use for unpacking event data - event string // Event name to use for unpacking event data - - logs chan types.Log // Log channel receiving the found contract events - sub ethereum.Subscription // Subscription for errors, completion and termination - done bool // Whether the subscription completed delivering logs - fail error // Occurred error to stop iteration -} - -// Next advances the iterator to the subsequent event, returning whether there -// are any more events found. In case of a retrieval or parsing error, false is -// returned and Error() can be queried for the exact failure. -func (it *TaikoL1TokenWithdrawn0Iterator) Next() bool { - // If the iterator failed, stop iterating - if it.fail != nil { - return false - } - // If the iterator completed, deliver directly whatever's available - if it.done { - select { - case log := <-it.logs: - it.Event = new(TaikoL1TokenWithdrawn0) - if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { - it.fail = err - return false - } - it.Event.Raw = log - return true - - default: - return false - } - } - // Iterator still in progress, wait for either a data or an error event - select { - case log := <-it.logs: - it.Event = new(TaikoL1TokenWithdrawn0) - if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { - it.fail = err - return false - } - it.Event.Raw = log - return true - - case err := <-it.sub.Err(): - it.done = true - it.fail = err - return it.Next() - } -} - -// Error returns any retrieval or parsing error occurred during filtering. -func (it *TaikoL1TokenWithdrawn0Iterator) Error() error { - return it.fail -} - -// Close terminates the iteration process, releasing any pending underlying -// resources. -func (it *TaikoL1TokenWithdrawn0Iterator) Close() error { - it.sub.Unsubscribe() - return nil -} - -// TaikoL1TokenWithdrawn0 represents a TokenWithdrawn0 event raised by the TaikoL1 contract. -type TaikoL1TokenWithdrawn0 struct { - Amount *big.Int - Raw types.Log // Blockchain specific contextual infos -} - -// FilterTokenWithdrawn0 is a free log retrieval operation binding the contract event 0xc172f6497c150fc242267f743e8e4034b31b16ee123408d6d5f75a81128de114. -// -// Solidity: event TokenWithdrawn(uint256 amount) -func (_TaikoL1 *TaikoL1Filterer) FilterTokenWithdrawn0(opts *bind.FilterOpts) (*TaikoL1TokenWithdrawn0Iterator, error) { - - logs, sub, err := _TaikoL1.contract.FilterLogs(opts, "TokenWithdrawn0") - if err != nil { - return nil, err - } - return &TaikoL1TokenWithdrawn0Iterator{contract: _TaikoL1.contract, event: "TokenWithdrawn0", logs: logs, sub: sub}, nil -} - -// WatchTokenWithdrawn0 is a free log subscription operation binding the contract event 0xc172f6497c150fc242267f743e8e4034b31b16ee123408d6d5f75a81128de114. -// -// Solidity: event TokenWithdrawn(uint256 amount) -func (_TaikoL1 *TaikoL1Filterer) WatchTokenWithdrawn0(opts *bind.WatchOpts, sink chan<- *TaikoL1TokenWithdrawn0) (event.Subscription, error) { - - logs, sub, err := _TaikoL1.contract.WatchLogs(opts, "TokenWithdrawn0") - if err != nil { - return nil, err - } - return event.NewSubscription(func(quit <-chan struct{}) error { - defer sub.Unsubscribe() - for { - select { - case log := <-logs: - // New log arrived, parse the event and forward to the user - event := new(TaikoL1TokenWithdrawn0) - if err := _TaikoL1.contract.UnpackLog(event, "TokenWithdrawn0", log); err != nil { - return err - } - event.Raw = log - - select { - case sink <- event: - case err := <-sub.Err(): - return err - case <-quit: - return nil - } - case err := <-sub.Err(): - return err - case <-quit: - return nil - } - } - }), nil -} - -// ParseTokenWithdrawn0 is a log parse operation binding the contract event 0xc172f6497c150fc242267f743e8e4034b31b16ee123408d6d5f75a81128de114. -// -// Solidity: event TokenWithdrawn(uint256 amount) -func (_TaikoL1 *TaikoL1Filterer) ParseTokenWithdrawn0(log types.Log) (*TaikoL1TokenWithdrawn0, error) { - event := new(TaikoL1TokenWithdrawn0) - if err := _TaikoL1.contract.UnpackLog(event, "TokenWithdrawn0", log); err != nil { - return nil, err - } - event.Raw = log - return event, nil -} - // TaikoL1TransitionContestedIterator is returned from FilterTransitionContested and is used to iterate over the raw logs and unpacked data for TransitionContested events raised by the TaikoL1 contract. type TaikoL1TransitionContestedIterator struct { Event *TaikoL1TransitionContested // Event containing the contract specifics and raw log @@ -3849,18 +4267,16 @@ func (it *TaikoL1TransitionContestedIterator) Close() error { // TaikoL1TransitionContested represents a TransitionContested event raised by the TaikoL1 contract. type TaikoL1TransitionContested struct { BlockId *big.Int - ParentHash [32]byte - BlockHash [32]byte - SignalRoot [32]byte + Tran TaikoDataTransition Contester common.Address ContestBond *big.Int Tier uint16 Raw types.Log // Blockchain specific contextual infos } -// FilterTransitionContested is a free log retrieval operation binding the contract event 0x135961061f7c7cad9a389080483d14014ba6fe9ebcf6d3d826185c69dd71ce75. +// FilterTransitionContested is a free log retrieval operation binding the contract event 0xb4c0a86c1ff239277697775b1e91d3375fd3a5ef6b345aa4e2f6001c890558f6. // -// Solidity: event TransitionContested(uint256 indexed blockId, bytes32 parentHash, bytes32 blockHash, bytes32 signalRoot, address contester, uint96 contestBond, uint16 tier) +// Solidity: event TransitionContested(uint256 indexed blockId, (bytes32,bytes32,bytes32,bytes32) tran, address contester, uint96 contestBond, uint16 tier) func (_TaikoL1 *TaikoL1Filterer) FilterTransitionContested(opts *bind.FilterOpts, blockId []*big.Int) (*TaikoL1TransitionContestedIterator, error) { var blockIdRule []interface{} @@ -3875,9 +4291,9 @@ func (_TaikoL1 *TaikoL1Filterer) FilterTransitionContested(opts *bind.FilterOpts return &TaikoL1TransitionContestedIterator{contract: _TaikoL1.contract, event: "TransitionContested", logs: logs, sub: sub}, nil } -// WatchTransitionContested is a free log subscription operation binding the contract event 0x135961061f7c7cad9a389080483d14014ba6fe9ebcf6d3d826185c69dd71ce75. +// WatchTransitionContested is a free log subscription operation binding the contract event 0xb4c0a86c1ff239277697775b1e91d3375fd3a5ef6b345aa4e2f6001c890558f6. // -// Solidity: event TransitionContested(uint256 indexed blockId, bytes32 parentHash, bytes32 blockHash, bytes32 signalRoot, address contester, uint96 contestBond, uint16 tier) +// Solidity: event TransitionContested(uint256 indexed blockId, (bytes32,bytes32,bytes32,bytes32) tran, address contester, uint96 contestBond, uint16 tier) func (_TaikoL1 *TaikoL1Filterer) WatchTransitionContested(opts *bind.WatchOpts, sink chan<- *TaikoL1TransitionContested, blockId []*big.Int) (event.Subscription, error) { var blockIdRule []interface{} @@ -3917,9 +4333,9 @@ func (_TaikoL1 *TaikoL1Filterer) WatchTransitionContested(opts *bind.WatchOpts, }), nil } -// ParseTransitionContested is a log parse operation binding the contract event 0x135961061f7c7cad9a389080483d14014ba6fe9ebcf6d3d826185c69dd71ce75. +// ParseTransitionContested is a log parse operation binding the contract event 0xb4c0a86c1ff239277697775b1e91d3375fd3a5ef6b345aa4e2f6001c890558f6. // -// Solidity: event TransitionContested(uint256 indexed blockId, bytes32 parentHash, bytes32 blockHash, bytes32 signalRoot, address contester, uint96 contestBond, uint16 tier) +// Solidity: event TransitionContested(uint256 indexed blockId, (bytes32,bytes32,bytes32,bytes32) tran, address contester, uint96 contestBond, uint16 tier) func (_TaikoL1 *TaikoL1Filterer) ParseTransitionContested(log types.Log) (*TaikoL1TransitionContested, error) { event := new(TaikoL1TransitionContested) if err := _TaikoL1.contract.UnpackLog(event, "TransitionContested", log); err != nil { @@ -3999,18 +4415,16 @@ func (it *TaikoL1TransitionContested0Iterator) Close() error { // TaikoL1TransitionContested0 represents a TransitionContested0 event raised by the TaikoL1 contract. type TaikoL1TransitionContested0 struct { BlockId *big.Int - ParentHash [32]byte - BlockHash [32]byte - SignalRoot [32]byte + Tran TaikoDataTransition Contester common.Address ContestBond *big.Int Tier uint16 Raw types.Log // Blockchain specific contextual infos } -// FilterTransitionContested0 is a free log retrieval operation binding the contract event 0x135961061f7c7cad9a389080483d14014ba6fe9ebcf6d3d826185c69dd71ce75. +// FilterTransitionContested0 is a free log retrieval operation binding the contract event 0xb4c0a86c1ff239277697775b1e91d3375fd3a5ef6b345aa4e2f6001c890558f6. // -// Solidity: event TransitionContested(uint256 indexed blockId, bytes32 parentHash, bytes32 blockHash, bytes32 signalRoot, address contester, uint96 contestBond, uint16 tier) +// Solidity: event TransitionContested(uint256 indexed blockId, (bytes32,bytes32,bytes32,bytes32) tran, address contester, uint96 contestBond, uint16 tier) func (_TaikoL1 *TaikoL1Filterer) FilterTransitionContested0(opts *bind.FilterOpts, blockId []*big.Int) (*TaikoL1TransitionContested0Iterator, error) { var blockIdRule []interface{} @@ -4025,9 +4439,9 @@ func (_TaikoL1 *TaikoL1Filterer) FilterTransitionContested0(opts *bind.FilterOpt return &TaikoL1TransitionContested0Iterator{contract: _TaikoL1.contract, event: "TransitionContested0", logs: logs, sub: sub}, nil } -// WatchTransitionContested0 is a free log subscription operation binding the contract event 0x135961061f7c7cad9a389080483d14014ba6fe9ebcf6d3d826185c69dd71ce75. +// WatchTransitionContested0 is a free log subscription operation binding the contract event 0xb4c0a86c1ff239277697775b1e91d3375fd3a5ef6b345aa4e2f6001c890558f6. // -// Solidity: event TransitionContested(uint256 indexed blockId, bytes32 parentHash, bytes32 blockHash, bytes32 signalRoot, address contester, uint96 contestBond, uint16 tier) +// Solidity: event TransitionContested(uint256 indexed blockId, (bytes32,bytes32,bytes32,bytes32) tran, address contester, uint96 contestBond, uint16 tier) func (_TaikoL1 *TaikoL1Filterer) WatchTransitionContested0(opts *bind.WatchOpts, sink chan<- *TaikoL1TransitionContested0, blockId []*big.Int) (event.Subscription, error) { var blockIdRule []interface{} @@ -4067,9 +4481,9 @@ func (_TaikoL1 *TaikoL1Filterer) WatchTransitionContested0(opts *bind.WatchOpts, }), nil } -// ParseTransitionContested0 is a log parse operation binding the contract event 0x135961061f7c7cad9a389080483d14014ba6fe9ebcf6d3d826185c69dd71ce75. +// ParseTransitionContested0 is a log parse operation binding the contract event 0xb4c0a86c1ff239277697775b1e91d3375fd3a5ef6b345aa4e2f6001c890558f6. // -// Solidity: event TransitionContested(uint256 indexed blockId, bytes32 parentHash, bytes32 blockHash, bytes32 signalRoot, address contester, uint96 contestBond, uint16 tier) +// Solidity: event TransitionContested(uint256 indexed blockId, (bytes32,bytes32,bytes32,bytes32) tran, address contester, uint96 contestBond, uint16 tier) func (_TaikoL1 *TaikoL1Filterer) ParseTransitionContested0(log types.Log) (*TaikoL1TransitionContested0, error) { event := new(TaikoL1TransitionContested0) if err := _TaikoL1.contract.UnpackLog(event, "TransitionContested0", log); err != nil { @@ -4149,18 +4563,16 @@ func (it *TaikoL1TransitionProvedIterator) Close() error { // TaikoL1TransitionProved represents a TransitionProved event raised by the TaikoL1 contract. type TaikoL1TransitionProved struct { BlockId *big.Int - ParentHash [32]byte - BlockHash [32]byte - SignalRoot [32]byte + Tran TaikoDataTransition Prover common.Address ValidityBond *big.Int Tier uint16 Raw types.Log // Blockchain specific contextual infos } -// FilterTransitionProved is a free log retrieval operation binding the contract event 0x9eaac66787b7d7e72981c31449ddd9bde78ffdb8cb3e6543ba2b9a4bb653b5e3. +// FilterTransitionProved is a free log retrieval operation binding the contract event 0xc195e4be3b936845492b8be4b1cf604db687a4d79ad84d979499c136f8e6701f. // -// Solidity: event TransitionProved(uint256 indexed blockId, bytes32 parentHash, bytes32 blockHash, bytes32 signalRoot, address prover, uint96 validityBond, uint16 tier) +// Solidity: event TransitionProved(uint256 indexed blockId, (bytes32,bytes32,bytes32,bytes32) tran, address prover, uint96 validityBond, uint16 tier) func (_TaikoL1 *TaikoL1Filterer) FilterTransitionProved(opts *bind.FilterOpts, blockId []*big.Int) (*TaikoL1TransitionProvedIterator, error) { var blockIdRule []interface{} @@ -4175,9 +4587,9 @@ func (_TaikoL1 *TaikoL1Filterer) FilterTransitionProved(opts *bind.FilterOpts, b return &TaikoL1TransitionProvedIterator{contract: _TaikoL1.contract, event: "TransitionProved", logs: logs, sub: sub}, nil } -// WatchTransitionProved is a free log subscription operation binding the contract event 0x9eaac66787b7d7e72981c31449ddd9bde78ffdb8cb3e6543ba2b9a4bb653b5e3. +// WatchTransitionProved is a free log subscription operation binding the contract event 0xc195e4be3b936845492b8be4b1cf604db687a4d79ad84d979499c136f8e6701f. // -// Solidity: event TransitionProved(uint256 indexed blockId, bytes32 parentHash, bytes32 blockHash, bytes32 signalRoot, address prover, uint96 validityBond, uint16 tier) +// Solidity: event TransitionProved(uint256 indexed blockId, (bytes32,bytes32,bytes32,bytes32) tran, address prover, uint96 validityBond, uint16 tier) func (_TaikoL1 *TaikoL1Filterer) WatchTransitionProved(opts *bind.WatchOpts, sink chan<- *TaikoL1TransitionProved, blockId []*big.Int) (event.Subscription, error) { var blockIdRule []interface{} @@ -4217,9 +4629,9 @@ func (_TaikoL1 *TaikoL1Filterer) WatchTransitionProved(opts *bind.WatchOpts, sin }), nil } -// ParseTransitionProved is a log parse operation binding the contract event 0x9eaac66787b7d7e72981c31449ddd9bde78ffdb8cb3e6543ba2b9a4bb653b5e3. +// ParseTransitionProved is a log parse operation binding the contract event 0xc195e4be3b936845492b8be4b1cf604db687a4d79ad84d979499c136f8e6701f. // -// Solidity: event TransitionProved(uint256 indexed blockId, bytes32 parentHash, bytes32 blockHash, bytes32 signalRoot, address prover, uint96 validityBond, uint16 tier) +// Solidity: event TransitionProved(uint256 indexed blockId, (bytes32,bytes32,bytes32,bytes32) tran, address prover, uint96 validityBond, uint16 tier) func (_TaikoL1 *TaikoL1Filterer) ParseTransitionProved(log types.Log) (*TaikoL1TransitionProved, error) { event := new(TaikoL1TransitionProved) if err := _TaikoL1.contract.UnpackLog(event, "TransitionProved", log); err != nil { @@ -4299,18 +4711,16 @@ func (it *TaikoL1TransitionProved0Iterator) Close() error { // TaikoL1TransitionProved0 represents a TransitionProved0 event raised by the TaikoL1 contract. type TaikoL1TransitionProved0 struct { BlockId *big.Int - ParentHash [32]byte - BlockHash [32]byte - SignalRoot [32]byte + Tran TaikoDataTransition Prover common.Address ValidityBond *big.Int Tier uint16 Raw types.Log // Blockchain specific contextual infos } -// FilterTransitionProved0 is a free log retrieval operation binding the contract event 0x9eaac66787b7d7e72981c31449ddd9bde78ffdb8cb3e6543ba2b9a4bb653b5e3. +// FilterTransitionProved0 is a free log retrieval operation binding the contract event 0xc195e4be3b936845492b8be4b1cf604db687a4d79ad84d979499c136f8e6701f. // -// Solidity: event TransitionProved(uint256 indexed blockId, bytes32 parentHash, bytes32 blockHash, bytes32 signalRoot, address prover, uint96 validityBond, uint16 tier) +// Solidity: event TransitionProved(uint256 indexed blockId, (bytes32,bytes32,bytes32,bytes32) tran, address prover, uint96 validityBond, uint16 tier) func (_TaikoL1 *TaikoL1Filterer) FilterTransitionProved0(opts *bind.FilterOpts, blockId []*big.Int) (*TaikoL1TransitionProved0Iterator, error) { var blockIdRule []interface{} @@ -4325,9 +4735,9 @@ func (_TaikoL1 *TaikoL1Filterer) FilterTransitionProved0(opts *bind.FilterOpts, return &TaikoL1TransitionProved0Iterator{contract: _TaikoL1.contract, event: "TransitionProved0", logs: logs, sub: sub}, nil } -// WatchTransitionProved0 is a free log subscription operation binding the contract event 0x9eaac66787b7d7e72981c31449ddd9bde78ffdb8cb3e6543ba2b9a4bb653b5e3. +// WatchTransitionProved0 is a free log subscription operation binding the contract event 0xc195e4be3b936845492b8be4b1cf604db687a4d79ad84d979499c136f8e6701f. // -// Solidity: event TransitionProved(uint256 indexed blockId, bytes32 parentHash, bytes32 blockHash, bytes32 signalRoot, address prover, uint96 validityBond, uint16 tier) +// Solidity: event TransitionProved(uint256 indexed blockId, (bytes32,bytes32,bytes32,bytes32) tran, address prover, uint96 validityBond, uint16 tier) func (_TaikoL1 *TaikoL1Filterer) WatchTransitionProved0(opts *bind.WatchOpts, sink chan<- *TaikoL1TransitionProved0, blockId []*big.Int) (event.Subscription, error) { var blockIdRule []interface{} @@ -4367,9 +4777,9 @@ func (_TaikoL1 *TaikoL1Filterer) WatchTransitionProved0(opts *bind.WatchOpts, si }), nil } -// ParseTransitionProved0 is a log parse operation binding the contract event 0x9eaac66787b7d7e72981c31449ddd9bde78ffdb8cb3e6543ba2b9a4bb653b5e3. +// ParseTransitionProved0 is a log parse operation binding the contract event 0xc195e4be3b936845492b8be4b1cf604db687a4d79ad84d979499c136f8e6701f. // -// Solidity: event TransitionProved(uint256 indexed blockId, bytes32 parentHash, bytes32 blockHash, bytes32 signalRoot, address prover, uint96 validityBond, uint16 tier) +// Solidity: event TransitionProved(uint256 indexed blockId, (bytes32,bytes32,bytes32,bytes32) tran, address prover, uint96 validityBond, uint16 tier) func (_TaikoL1 *TaikoL1Filterer) ParseTransitionProved0(log types.Log) (*TaikoL1TransitionProved0, error) { event := new(TaikoL1TransitionProved0) if err := _TaikoL1.contract.UnpackLog(event, "TransitionProved0", log); err != nil { diff --git a/packages/relayer/bindings/taikol2/TaikoL2.go b/packages/relayer/bindings/taikol2/TaikoL2.go index a7ae4d82bc..41ea5939d5 100644 --- a/packages/relayer/bindings/taikol2/TaikoL2.go +++ b/packages/relayer/bindings/taikol2/TaikoL2.go @@ -31,8 +31,10 @@ var ( // ICrossChainSyncSnippet is an auto generated low-level Go binding around an user-defined struct. type ICrossChainSyncSnippet struct { - BlockHash [32]byte - SignalRoot [32]byte + RemoteBlockId uint64 + SyncedInBlock uint64 + BlockHash [32]byte + SignalRoot [32]byte } // TaikoL2Config is an auto generated low-level Go binding around an user-defined struct. @@ -43,7 +45,7 @@ type TaikoL2Config struct { // TaikoL2MetaData contains all meta data concerning the TaikoL2 contract. var TaikoL2MetaData = &bind.MetaData{ - ABI: "[{\"inputs\":[],\"name\":\"EIP1559_INVALID_PARAMS\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"INVALID_PAUSE_STATUS\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"L2_BASEFEE_MISMATCH\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"L2_INVALID_CHAIN_ID\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"L2_INVALID_GOLDEN_TOUCH_K\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"L2_INVALID_PARAM\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"L2_INVALID_SENDER\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"L2_PUBLIC_INPUT_HASH_MISMATCH\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"L2_TOO_LATE\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"Overflow\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"REENTRANT_CALL\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"RESOLVER_DENIED\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"RESOLVER_INVALID_MANAGER\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"chainId\",\"type\":\"uint256\"},{\"internalType\":\"bytes32\",\"name\":\"name\",\"type\":\"bytes32\"}],\"name\":\"RESOLVER_ZERO_ADDR\",\"type\":\"error\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"parentHash\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"uint64\",\"name\":\"gasExcess\",\"type\":\"uint64\"}],\"name\":\"Anchored\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint64\",\"name\":\"srcHeight\",\"type\":\"uint64\"},{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"blockHash\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"signalRoot\",\"type\":\"bytes32\"}],\"name\":\"CrossChainSynced\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint8\",\"name\":\"version\",\"type\":\"uint8\"}],\"name\":\"Initialized\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"previousOwner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"newOwner\",\"type\":\"address\"}],\"name\":\"OwnershipTransferred\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"Paused\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"Unpaused\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"GOLDEN_TOUCH_ADDRESS\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"GOLDEN_TOUCH_PRIVATEKEY\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"addressManager\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"l1BlockHash\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"l1SignalRoot\",\"type\":\"bytes32\"},{\"internalType\":\"uint64\",\"name\":\"l1Height\",\"type\":\"uint64\"},{\"internalType\":\"uint32\",\"name\":\"parentGasUsed\",\"type\":\"uint32\"}],\"name\":\"anchor\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"gasExcess\",\"outputs\":[{\"internalType\":\"uint64\",\"name\":\"\",\"type\":\"uint64\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"l1Height\",\"type\":\"uint64\"},{\"internalType\":\"uint32\",\"name\":\"parentGasUsed\",\"type\":\"uint32\"}],\"name\":\"getBasefee\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"basefee\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"blockId\",\"type\":\"uint64\"}],\"name\":\"getBlockHash\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getConfig\",\"outputs\":[{\"components\":[{\"internalType\":\"uint32\",\"name\":\"gasTargetPerL1Block\",\"type\":\"uint32\"},{\"internalType\":\"uint8\",\"name\":\"basefeeAdjustmentQuotient\",\"type\":\"uint8\"}],\"internalType\":\"structTaikoL2.Config\",\"name\":\"config\",\"type\":\"tuple\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"blockId\",\"type\":\"uint64\"}],\"name\":\"getSyncedSnippet\",\"outputs\":[{\"components\":[{\"internalType\":\"bytes32\",\"name\":\"blockHash\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"signalRoot\",\"type\":\"bytes32\"}],\"internalType\":\"structICrossChainSync.Snippet\",\"name\":\"\",\"type\":\"tuple\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_addressManager\",\"type\":\"address\"},{\"internalType\":\"uint64\",\"name\":\"_gasExcess\",\"type\":\"uint64\"}],\"name\":\"init\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"blockId\",\"type\":\"uint256\"}],\"name\":\"l2Hashes\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"blockHash\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"latestSyncedL1Height\",\"outputs\":[{\"internalType\":\"uint64\",\"name\":\"\",\"type\":\"uint64\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"owner\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"pause\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"paused\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"publicInputHash\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"renounceOwnership\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"chainId\",\"type\":\"uint256\"},{\"internalType\":\"bytes32\",\"name\":\"name\",\"type\":\"bytes32\"},{\"internalType\":\"bool\",\"name\":\"allowZeroAddress\",\"type\":\"bool\"}],\"name\":\"resolve\",\"outputs\":[{\"internalType\":\"addresspayable\",\"name\":\"addr\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"name\",\"type\":\"bytes32\"},{\"internalType\":\"bool\",\"name\":\"allowZeroAddress\",\"type\":\"bool\"}],\"name\":\"resolve\",\"outputs\":[{\"internalType\":\"addresspayable\",\"name\":\"addr\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"digest\",\"type\":\"bytes32\"},{\"internalType\":\"uint8\",\"name\":\"k\",\"type\":\"uint8\"}],\"name\":\"signAnchor\",\"outputs\":[{\"internalType\":\"uint8\",\"name\":\"v\",\"type\":\"uint8\"},{\"internalType\":\"uint256\",\"name\":\"r\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"s\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"skipFeeCheck\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"l1height\",\"type\":\"uint256\"}],\"name\":\"snippets\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"blockHash\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"signalRoot\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"newOwner\",\"type\":\"address\"}],\"name\":\"transferOwnership\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"unpause\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}]", + ABI: "[{\"inputs\":[],\"name\":\"EIP1559_INVALID_PARAMS\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"L2_BASEFEE_MISMATCH\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"L2_INVALID_CHAIN_ID\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"L2_INVALID_GOLDEN_TOUCH_K\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"L2_INVALID_PARAM\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"L2_INVALID_SENDER\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"L2_PUBLIC_INPUT_HASH_MISMATCH\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"L2_TOO_LATE\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"Overflow\",\"type\":\"error\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"parentHash\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"uint64\",\"name\":\"gasExcess\",\"type\":\"uint64\"}],\"name\":\"Anchored\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint64\",\"name\":\"remoteBlockId\",\"type\":\"uint64\"},{\"indexed\":false,\"internalType\":\"uint64\",\"name\":\"syncedInBlock\",\"type\":\"uint64\"},{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"blockHash\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"signalRoot\",\"type\":\"bytes32\"}],\"name\":\"CrossChainSynced\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint8\",\"name\":\"version\",\"type\":\"uint8\"}],\"name\":\"Initialized\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"previousOwner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"newOwner\",\"type\":\"address\"}],\"name\":\"OwnershipTransferStarted\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"previousOwner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"newOwner\",\"type\":\"address\"}],\"name\":\"OwnershipTransferred\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"GOLDEN_TOUCH_ADDRESS\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"GOLDEN_TOUCH_PRIVATEKEY\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"acceptOwnership\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"l1BlockHash\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"l1SignalRoot\",\"type\":\"bytes32\"},{\"internalType\":\"uint64\",\"name\":\"l1Height\",\"type\":\"uint64\"},{\"internalType\":\"uint32\",\"name\":\"parentGasUsed\",\"type\":\"uint32\"}],\"name\":\"anchor\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"gasExcess\",\"outputs\":[{\"internalType\":\"uint64\",\"name\":\"\",\"type\":\"uint64\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"l1Height\",\"type\":\"uint64\"},{\"internalType\":\"uint32\",\"name\":\"parentGasUsed\",\"type\":\"uint32\"}],\"name\":\"getBasefee\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"basefee\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"blockId\",\"type\":\"uint64\"}],\"name\":\"getBlockHash\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getConfig\",\"outputs\":[{\"components\":[{\"internalType\":\"uint32\",\"name\":\"gasTargetPerL1Block\",\"type\":\"uint32\"},{\"internalType\":\"uint8\",\"name\":\"basefeeAdjustmentQuotient\",\"type\":\"uint8\"}],\"internalType\":\"structTaikoL2.Config\",\"name\":\"config\",\"type\":\"tuple\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"blockId\",\"type\":\"uint64\"}],\"name\":\"getSyncedSnippet\",\"outputs\":[{\"components\":[{\"internalType\":\"uint64\",\"name\":\"remoteBlockId\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"syncedInBlock\",\"type\":\"uint64\"},{\"internalType\":\"bytes32\",\"name\":\"blockHash\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"signalRoot\",\"type\":\"bytes32\"}],\"internalType\":\"structICrossChainSync.Snippet\",\"name\":\"\",\"type\":\"tuple\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_signalService\",\"type\":\"address\"},{\"internalType\":\"uint64\",\"name\":\"_gasExcess\",\"type\":\"uint64\"}],\"name\":\"init\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"blockId\",\"type\":\"uint256\"}],\"name\":\"l2Hashes\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"blockHash\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"latestSyncedL1Height\",\"outputs\":[{\"internalType\":\"uint64\",\"name\":\"\",\"type\":\"uint64\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"owner\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"pendingOwner\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"publicInputHash\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"renounceOwnership\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"digest\",\"type\":\"bytes32\"},{\"internalType\":\"uint8\",\"name\":\"k\",\"type\":\"uint8\"}],\"name\":\"signAnchor\",\"outputs\":[{\"internalType\":\"uint8\",\"name\":\"v\",\"type\":\"uint8\"},{\"internalType\":\"uint256\",\"name\":\"r\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"s\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"signalService\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"skipFeeCheck\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"l1height\",\"type\":\"uint256\"}],\"name\":\"snippets\",\"outputs\":[{\"internalType\":\"uint64\",\"name\":\"remoteBlockId\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"syncedInBlock\",\"type\":\"uint64\"},{\"internalType\":\"bytes32\",\"name\":\"blockHash\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"signalRoot\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"newOwner\",\"type\":\"address\"}],\"name\":\"transferOwnership\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}]", } // TaikoL2ABI is the input ABI used to generate the binding from. @@ -254,37 +256,6 @@ func (_TaikoL2 *TaikoL2CallerSession) GOLDENTOUCHPRIVATEKEY() (*big.Int, error) return _TaikoL2.Contract.GOLDENTOUCHPRIVATEKEY(&_TaikoL2.CallOpts) } -// AddressManager is a free data retrieval call binding the contract method 0x3ab76e9f. -// -// Solidity: function addressManager() view returns(address) -func (_TaikoL2 *TaikoL2Caller) AddressManager(opts *bind.CallOpts) (common.Address, error) { - var out []interface{} - err := _TaikoL2.contract.Call(opts, &out, "addressManager") - - if err != nil { - return *new(common.Address), err - } - - out0 := *abi.ConvertType(out[0], new(common.Address)).(*common.Address) - - return out0, err - -} - -// AddressManager is a free data retrieval call binding the contract method 0x3ab76e9f. -// -// Solidity: function addressManager() view returns(address) -func (_TaikoL2 *TaikoL2Session) AddressManager() (common.Address, error) { - return _TaikoL2.Contract.AddressManager(&_TaikoL2.CallOpts) -} - -// AddressManager is a free data retrieval call binding the contract method 0x3ab76e9f. -// -// Solidity: function addressManager() view returns(address) -func (_TaikoL2 *TaikoL2CallerSession) AddressManager() (common.Address, error) { - return _TaikoL2.Contract.AddressManager(&_TaikoL2.CallOpts) -} - // GasExcess is a free data retrieval call binding the contract method 0xf535bd56. // // Solidity: function gasExcess() view returns(uint64) @@ -411,7 +382,7 @@ func (_TaikoL2 *TaikoL2CallerSession) GetConfig() (TaikoL2Config, error) { // GetSyncedSnippet is a free data retrieval call binding the contract method 0x8cfb0459. // -// Solidity: function getSyncedSnippet(uint64 blockId) view returns((bytes32,bytes32)) +// Solidity: function getSyncedSnippet(uint64 blockId) view returns((uint64,uint64,bytes32,bytes32)) func (_TaikoL2 *TaikoL2Caller) GetSyncedSnippet(opts *bind.CallOpts, blockId uint64) (ICrossChainSyncSnippet, error) { var out []interface{} err := _TaikoL2.contract.Call(opts, &out, "getSyncedSnippet", blockId) @@ -428,14 +399,14 @@ func (_TaikoL2 *TaikoL2Caller) GetSyncedSnippet(opts *bind.CallOpts, blockId uin // GetSyncedSnippet is a free data retrieval call binding the contract method 0x8cfb0459. // -// Solidity: function getSyncedSnippet(uint64 blockId) view returns((bytes32,bytes32)) +// Solidity: function getSyncedSnippet(uint64 blockId) view returns((uint64,uint64,bytes32,bytes32)) func (_TaikoL2 *TaikoL2Session) GetSyncedSnippet(blockId uint64) (ICrossChainSyncSnippet, error) { return _TaikoL2.Contract.GetSyncedSnippet(&_TaikoL2.CallOpts, blockId) } // GetSyncedSnippet is a free data retrieval call binding the contract method 0x8cfb0459. // -// Solidity: function getSyncedSnippet(uint64 blockId) view returns((bytes32,bytes32)) +// Solidity: function getSyncedSnippet(uint64 blockId) view returns((uint64,uint64,bytes32,bytes32)) func (_TaikoL2 *TaikoL2CallerSession) GetSyncedSnippet(blockId uint64) (ICrossChainSyncSnippet, error) { return _TaikoL2.Contract.GetSyncedSnippet(&_TaikoL2.CallOpts, blockId) } @@ -533,35 +504,35 @@ func (_TaikoL2 *TaikoL2CallerSession) Owner() (common.Address, error) { return _TaikoL2.Contract.Owner(&_TaikoL2.CallOpts) } -// Paused is a free data retrieval call binding the contract method 0x5c975abb. +// PendingOwner is a free data retrieval call binding the contract method 0xe30c3978. // -// Solidity: function paused() view returns(bool) -func (_TaikoL2 *TaikoL2Caller) Paused(opts *bind.CallOpts) (bool, error) { +// Solidity: function pendingOwner() view returns(address) +func (_TaikoL2 *TaikoL2Caller) PendingOwner(opts *bind.CallOpts) (common.Address, error) { var out []interface{} - err := _TaikoL2.contract.Call(opts, &out, "paused") + err := _TaikoL2.contract.Call(opts, &out, "pendingOwner") if err != nil { - return *new(bool), err + return *new(common.Address), err } - out0 := *abi.ConvertType(out[0], new(bool)).(*bool) + out0 := *abi.ConvertType(out[0], new(common.Address)).(*common.Address) return out0, err } -// Paused is a free data retrieval call binding the contract method 0x5c975abb. +// PendingOwner is a free data retrieval call binding the contract method 0xe30c3978. // -// Solidity: function paused() view returns(bool) -func (_TaikoL2 *TaikoL2Session) Paused() (bool, error) { - return _TaikoL2.Contract.Paused(&_TaikoL2.CallOpts) +// Solidity: function pendingOwner() view returns(address) +func (_TaikoL2 *TaikoL2Session) PendingOwner() (common.Address, error) { + return _TaikoL2.Contract.PendingOwner(&_TaikoL2.CallOpts) } -// Paused is a free data retrieval call binding the contract method 0x5c975abb. +// PendingOwner is a free data retrieval call binding the contract method 0xe30c3978. // -// Solidity: function paused() view returns(bool) -func (_TaikoL2 *TaikoL2CallerSession) Paused() (bool, error) { - return _TaikoL2.Contract.Paused(&_TaikoL2.CallOpts) +// Solidity: function pendingOwner() view returns(address) +func (_TaikoL2 *TaikoL2CallerSession) PendingOwner() (common.Address, error) { + return _TaikoL2.Contract.PendingOwner(&_TaikoL2.CallOpts) } // PublicInputHash is a free data retrieval call binding the contract method 0xdac5df78. @@ -595,68 +566,6 @@ func (_TaikoL2 *TaikoL2CallerSession) PublicInputHash() ([32]byte, error) { return _TaikoL2.Contract.PublicInputHash(&_TaikoL2.CallOpts) } -// Resolve is a free data retrieval call binding the contract method 0x6c6563f6. -// -// Solidity: function resolve(uint256 chainId, bytes32 name, bool allowZeroAddress) view returns(address addr) -func (_TaikoL2 *TaikoL2Caller) Resolve(opts *bind.CallOpts, chainId *big.Int, name [32]byte, allowZeroAddress bool) (common.Address, error) { - var out []interface{} - err := _TaikoL2.contract.Call(opts, &out, "resolve", chainId, name, allowZeroAddress) - - if err != nil { - return *new(common.Address), err - } - - out0 := *abi.ConvertType(out[0], new(common.Address)).(*common.Address) - - return out0, err - -} - -// Resolve is a free data retrieval call binding the contract method 0x6c6563f6. -// -// Solidity: function resolve(uint256 chainId, bytes32 name, bool allowZeroAddress) view returns(address addr) -func (_TaikoL2 *TaikoL2Session) Resolve(chainId *big.Int, name [32]byte, allowZeroAddress bool) (common.Address, error) { - return _TaikoL2.Contract.Resolve(&_TaikoL2.CallOpts, chainId, name, allowZeroAddress) -} - -// Resolve is a free data retrieval call binding the contract method 0x6c6563f6. -// -// Solidity: function resolve(uint256 chainId, bytes32 name, bool allowZeroAddress) view returns(address addr) -func (_TaikoL2 *TaikoL2CallerSession) Resolve(chainId *big.Int, name [32]byte, allowZeroAddress bool) (common.Address, error) { - return _TaikoL2.Contract.Resolve(&_TaikoL2.CallOpts, chainId, name, allowZeroAddress) -} - -// Resolve0 is a free data retrieval call binding the contract method 0xa86f9d9e. -// -// Solidity: function resolve(bytes32 name, bool allowZeroAddress) view returns(address addr) -func (_TaikoL2 *TaikoL2Caller) Resolve0(opts *bind.CallOpts, name [32]byte, allowZeroAddress bool) (common.Address, error) { - var out []interface{} - err := _TaikoL2.contract.Call(opts, &out, "resolve0", name, allowZeroAddress) - - if err != nil { - return *new(common.Address), err - } - - out0 := *abi.ConvertType(out[0], new(common.Address)).(*common.Address) - - return out0, err - -} - -// Resolve0 is a free data retrieval call binding the contract method 0xa86f9d9e. -// -// Solidity: function resolve(bytes32 name, bool allowZeroAddress) view returns(address addr) -func (_TaikoL2 *TaikoL2Session) Resolve0(name [32]byte, allowZeroAddress bool) (common.Address, error) { - return _TaikoL2.Contract.Resolve0(&_TaikoL2.CallOpts, name, allowZeroAddress) -} - -// Resolve0 is a free data retrieval call binding the contract method 0xa86f9d9e. -// -// Solidity: function resolve(bytes32 name, bool allowZeroAddress) view returns(address addr) -func (_TaikoL2 *TaikoL2CallerSession) Resolve0(name [32]byte, allowZeroAddress bool) (common.Address, error) { - return _TaikoL2.Contract.Resolve0(&_TaikoL2.CallOpts, name, allowZeroAddress) -} - // SignAnchor is a free data retrieval call binding the contract method 0x591aad8a. // // Solidity: function signAnchor(bytes32 digest, uint8 k) view returns(uint8 v, uint256 r, uint256 s) @@ -707,6 +616,37 @@ func (_TaikoL2 *TaikoL2CallerSession) SignAnchor(digest [32]byte, k uint8) (stru return _TaikoL2.Contract.SignAnchor(&_TaikoL2.CallOpts, digest, k) } +// SignalService is a free data retrieval call binding the contract method 0x62d09453. +// +// Solidity: function signalService() view returns(address) +func (_TaikoL2 *TaikoL2Caller) SignalService(opts *bind.CallOpts) (common.Address, error) { + var out []interface{} + err := _TaikoL2.contract.Call(opts, &out, "signalService") + + if err != nil { + return *new(common.Address), err + } + + out0 := *abi.ConvertType(out[0], new(common.Address)).(*common.Address) + + return out0, err + +} + +// SignalService is a free data retrieval call binding the contract method 0x62d09453. +// +// Solidity: function signalService() view returns(address) +func (_TaikoL2 *TaikoL2Session) SignalService() (common.Address, error) { + return _TaikoL2.Contract.SignalService(&_TaikoL2.CallOpts) +} + +// SignalService is a free data retrieval call binding the contract method 0x62d09453. +// +// Solidity: function signalService() view returns(address) +func (_TaikoL2 *TaikoL2CallerSession) SignalService() (common.Address, error) { + return _TaikoL2.Contract.SignalService(&_TaikoL2.CallOpts) +} + // SkipFeeCheck is a free data retrieval call binding the contract method 0x2f980473. // // Solidity: function skipFeeCheck() pure returns(bool) @@ -740,24 +680,30 @@ func (_TaikoL2 *TaikoL2CallerSession) SkipFeeCheck() (bool, error) { // Snippets is a free data retrieval call binding the contract method 0xe8e2c5fb. // -// Solidity: function snippets(uint256 l1height) view returns(bytes32 blockHash, bytes32 signalRoot) +// Solidity: function snippets(uint256 l1height) view returns(uint64 remoteBlockId, uint64 syncedInBlock, bytes32 blockHash, bytes32 signalRoot) func (_TaikoL2 *TaikoL2Caller) Snippets(opts *bind.CallOpts, l1height *big.Int) (struct { - BlockHash [32]byte - SignalRoot [32]byte + RemoteBlockId uint64 + SyncedInBlock uint64 + BlockHash [32]byte + SignalRoot [32]byte }, error) { var out []interface{} err := _TaikoL2.contract.Call(opts, &out, "snippets", l1height) outstruct := new(struct { - BlockHash [32]byte - SignalRoot [32]byte + RemoteBlockId uint64 + SyncedInBlock uint64 + BlockHash [32]byte + SignalRoot [32]byte }) if err != nil { return *outstruct, err } - outstruct.BlockHash = *abi.ConvertType(out[0], new([32]byte)).(*[32]byte) - outstruct.SignalRoot = *abi.ConvertType(out[1], new([32]byte)).(*[32]byte) + outstruct.RemoteBlockId = *abi.ConvertType(out[0], new(uint64)).(*uint64) + outstruct.SyncedInBlock = *abi.ConvertType(out[1], new(uint64)).(*uint64) + outstruct.BlockHash = *abi.ConvertType(out[2], new([32]byte)).(*[32]byte) + outstruct.SignalRoot = *abi.ConvertType(out[3], new([32]byte)).(*[32]byte) return *outstruct, err @@ -765,24 +711,49 @@ func (_TaikoL2 *TaikoL2Caller) Snippets(opts *bind.CallOpts, l1height *big.Int) // Snippets is a free data retrieval call binding the contract method 0xe8e2c5fb. // -// Solidity: function snippets(uint256 l1height) view returns(bytes32 blockHash, bytes32 signalRoot) +// Solidity: function snippets(uint256 l1height) view returns(uint64 remoteBlockId, uint64 syncedInBlock, bytes32 blockHash, bytes32 signalRoot) func (_TaikoL2 *TaikoL2Session) Snippets(l1height *big.Int) (struct { - BlockHash [32]byte - SignalRoot [32]byte + RemoteBlockId uint64 + SyncedInBlock uint64 + BlockHash [32]byte + SignalRoot [32]byte }, error) { return _TaikoL2.Contract.Snippets(&_TaikoL2.CallOpts, l1height) } // Snippets is a free data retrieval call binding the contract method 0xe8e2c5fb. // -// Solidity: function snippets(uint256 l1height) view returns(bytes32 blockHash, bytes32 signalRoot) +// Solidity: function snippets(uint256 l1height) view returns(uint64 remoteBlockId, uint64 syncedInBlock, bytes32 blockHash, bytes32 signalRoot) func (_TaikoL2 *TaikoL2CallerSession) Snippets(l1height *big.Int) (struct { - BlockHash [32]byte - SignalRoot [32]byte + RemoteBlockId uint64 + SyncedInBlock uint64 + BlockHash [32]byte + SignalRoot [32]byte }, error) { return _TaikoL2.Contract.Snippets(&_TaikoL2.CallOpts, l1height) } +// AcceptOwnership is a paid mutator transaction binding the contract method 0x79ba5097. +// +// Solidity: function acceptOwnership() returns() +func (_TaikoL2 *TaikoL2Transactor) AcceptOwnership(opts *bind.TransactOpts) (*types.Transaction, error) { + return _TaikoL2.contract.Transact(opts, "acceptOwnership") +} + +// AcceptOwnership is a paid mutator transaction binding the contract method 0x79ba5097. +// +// Solidity: function acceptOwnership() returns() +func (_TaikoL2 *TaikoL2Session) AcceptOwnership() (*types.Transaction, error) { + return _TaikoL2.Contract.AcceptOwnership(&_TaikoL2.TransactOpts) +} + +// AcceptOwnership is a paid mutator transaction binding the contract method 0x79ba5097. +// +// Solidity: function acceptOwnership() returns() +func (_TaikoL2 *TaikoL2TransactorSession) AcceptOwnership() (*types.Transaction, error) { + return _TaikoL2.Contract.AcceptOwnership(&_TaikoL2.TransactOpts) +} + // Anchor is a paid mutator transaction binding the contract method 0xda69d3db. // // Solidity: function anchor(bytes32 l1BlockHash, bytes32 l1SignalRoot, uint64 l1Height, uint32 parentGasUsed) returns() @@ -806,44 +777,23 @@ func (_TaikoL2 *TaikoL2TransactorSession) Anchor(l1BlockHash [32]byte, l1SignalR // Init is a paid mutator transaction binding the contract method 0xb259f48b. // -// Solidity: function init(address _addressManager, uint64 _gasExcess) returns() -func (_TaikoL2 *TaikoL2Transactor) Init(opts *bind.TransactOpts, _addressManager common.Address, _gasExcess uint64) (*types.Transaction, error) { - return _TaikoL2.contract.Transact(opts, "init", _addressManager, _gasExcess) +// Solidity: function init(address _signalService, uint64 _gasExcess) returns() +func (_TaikoL2 *TaikoL2Transactor) Init(opts *bind.TransactOpts, _signalService common.Address, _gasExcess uint64) (*types.Transaction, error) { + return _TaikoL2.contract.Transact(opts, "init", _signalService, _gasExcess) } // Init is a paid mutator transaction binding the contract method 0xb259f48b. // -// Solidity: function init(address _addressManager, uint64 _gasExcess) returns() -func (_TaikoL2 *TaikoL2Session) Init(_addressManager common.Address, _gasExcess uint64) (*types.Transaction, error) { - return _TaikoL2.Contract.Init(&_TaikoL2.TransactOpts, _addressManager, _gasExcess) +// Solidity: function init(address _signalService, uint64 _gasExcess) returns() +func (_TaikoL2 *TaikoL2Session) Init(_signalService common.Address, _gasExcess uint64) (*types.Transaction, error) { + return _TaikoL2.Contract.Init(&_TaikoL2.TransactOpts, _signalService, _gasExcess) } // Init is a paid mutator transaction binding the contract method 0xb259f48b. // -// Solidity: function init(address _addressManager, uint64 _gasExcess) returns() -func (_TaikoL2 *TaikoL2TransactorSession) Init(_addressManager common.Address, _gasExcess uint64) (*types.Transaction, error) { - return _TaikoL2.Contract.Init(&_TaikoL2.TransactOpts, _addressManager, _gasExcess) -} - -// Pause is a paid mutator transaction binding the contract method 0x8456cb59. -// -// Solidity: function pause() returns() -func (_TaikoL2 *TaikoL2Transactor) Pause(opts *bind.TransactOpts) (*types.Transaction, error) { - return _TaikoL2.contract.Transact(opts, "pause") -} - -// Pause is a paid mutator transaction binding the contract method 0x8456cb59. -// -// Solidity: function pause() returns() -func (_TaikoL2 *TaikoL2Session) Pause() (*types.Transaction, error) { - return _TaikoL2.Contract.Pause(&_TaikoL2.TransactOpts) -} - -// Pause is a paid mutator transaction binding the contract method 0x8456cb59. -// -// Solidity: function pause() returns() -func (_TaikoL2 *TaikoL2TransactorSession) Pause() (*types.Transaction, error) { - return _TaikoL2.Contract.Pause(&_TaikoL2.TransactOpts) +// Solidity: function init(address _signalService, uint64 _gasExcess) returns() +func (_TaikoL2 *TaikoL2TransactorSession) Init(_signalService common.Address, _gasExcess uint64) (*types.Transaction, error) { + return _TaikoL2.Contract.Init(&_TaikoL2.TransactOpts, _signalService, _gasExcess) } // RenounceOwnership is a paid mutator transaction binding the contract method 0x715018a6. @@ -888,27 +838,6 @@ func (_TaikoL2 *TaikoL2TransactorSession) TransferOwnership(newOwner common.Addr return _TaikoL2.Contract.TransferOwnership(&_TaikoL2.TransactOpts, newOwner) } -// Unpause is a paid mutator transaction binding the contract method 0x3f4ba83a. -// -// Solidity: function unpause() returns() -func (_TaikoL2 *TaikoL2Transactor) Unpause(opts *bind.TransactOpts) (*types.Transaction, error) { - return _TaikoL2.contract.Transact(opts, "unpause") -} - -// Unpause is a paid mutator transaction binding the contract method 0x3f4ba83a. -// -// Solidity: function unpause() returns() -func (_TaikoL2 *TaikoL2Session) Unpause() (*types.Transaction, error) { - return _TaikoL2.Contract.Unpause(&_TaikoL2.TransactOpts) -} - -// Unpause is a paid mutator transaction binding the contract method 0x3f4ba83a. -// -// Solidity: function unpause() returns() -func (_TaikoL2 *TaikoL2TransactorSession) Unpause() (*types.Transaction, error) { - return _TaikoL2.Contract.Unpause(&_TaikoL2.TransactOpts) -} - // TaikoL2AnchoredIterator is returned from FilterAnchored and is used to iterate over the raw logs and unpacked data for Anchored events raised by the TaikoL2 contract. type TaikoL2AnchoredIterator struct { Event *TaikoL2Anchored // Event containing the contract specifics and raw log @@ -1113,40 +1042,41 @@ func (it *TaikoL2CrossChainSyncedIterator) Close() error { // TaikoL2CrossChainSynced represents a CrossChainSynced event raised by the TaikoL2 contract. type TaikoL2CrossChainSynced struct { - SrcHeight uint64 - BlockHash [32]byte - SignalRoot [32]byte - Raw types.Log // Blockchain specific contextual infos + RemoteBlockId uint64 + SyncedInBlock uint64 + BlockHash [32]byte + SignalRoot [32]byte + Raw types.Log // Blockchain specific contextual infos } -// FilterCrossChainSynced is a free log retrieval operation binding the contract event 0x004ce985b8852a486571d0545799251fd671adcf33b7854a5f0f6a6a2431a555. +// FilterCrossChainSynced is a free log retrieval operation binding the contract event 0xf35ec3b262cf74881db1b8051c635496bccb1497a1e776dacb463d0e0e2b0f51. // -// Solidity: event CrossChainSynced(uint64 indexed srcHeight, bytes32 blockHash, bytes32 signalRoot) -func (_TaikoL2 *TaikoL2Filterer) FilterCrossChainSynced(opts *bind.FilterOpts, srcHeight []uint64) (*TaikoL2CrossChainSyncedIterator, error) { +// Solidity: event CrossChainSynced(uint64 indexed remoteBlockId, uint64 syncedInBlock, bytes32 blockHash, bytes32 signalRoot) +func (_TaikoL2 *TaikoL2Filterer) FilterCrossChainSynced(opts *bind.FilterOpts, remoteBlockId []uint64) (*TaikoL2CrossChainSyncedIterator, error) { - var srcHeightRule []interface{} - for _, srcHeightItem := range srcHeight { - srcHeightRule = append(srcHeightRule, srcHeightItem) + var remoteBlockIdRule []interface{} + for _, remoteBlockIdItem := range remoteBlockId { + remoteBlockIdRule = append(remoteBlockIdRule, remoteBlockIdItem) } - logs, sub, err := _TaikoL2.contract.FilterLogs(opts, "CrossChainSynced", srcHeightRule) + logs, sub, err := _TaikoL2.contract.FilterLogs(opts, "CrossChainSynced", remoteBlockIdRule) if err != nil { return nil, err } return &TaikoL2CrossChainSyncedIterator{contract: _TaikoL2.contract, event: "CrossChainSynced", logs: logs, sub: sub}, nil } -// WatchCrossChainSynced is a free log subscription operation binding the contract event 0x004ce985b8852a486571d0545799251fd671adcf33b7854a5f0f6a6a2431a555. +// WatchCrossChainSynced is a free log subscription operation binding the contract event 0xf35ec3b262cf74881db1b8051c635496bccb1497a1e776dacb463d0e0e2b0f51. // -// Solidity: event CrossChainSynced(uint64 indexed srcHeight, bytes32 blockHash, bytes32 signalRoot) -func (_TaikoL2 *TaikoL2Filterer) WatchCrossChainSynced(opts *bind.WatchOpts, sink chan<- *TaikoL2CrossChainSynced, srcHeight []uint64) (event.Subscription, error) { +// Solidity: event CrossChainSynced(uint64 indexed remoteBlockId, uint64 syncedInBlock, bytes32 blockHash, bytes32 signalRoot) +func (_TaikoL2 *TaikoL2Filterer) WatchCrossChainSynced(opts *bind.WatchOpts, sink chan<- *TaikoL2CrossChainSynced, remoteBlockId []uint64) (event.Subscription, error) { - var srcHeightRule []interface{} - for _, srcHeightItem := range srcHeight { - srcHeightRule = append(srcHeightRule, srcHeightItem) + var remoteBlockIdRule []interface{} + for _, remoteBlockIdItem := range remoteBlockId { + remoteBlockIdRule = append(remoteBlockIdRule, remoteBlockIdItem) } - logs, sub, err := _TaikoL2.contract.WatchLogs(opts, "CrossChainSynced", srcHeightRule) + logs, sub, err := _TaikoL2.contract.WatchLogs(opts, "CrossChainSynced", remoteBlockIdRule) if err != nil { return nil, err } @@ -1178,9 +1108,9 @@ func (_TaikoL2 *TaikoL2Filterer) WatchCrossChainSynced(opts *bind.WatchOpts, sin }), nil } -// ParseCrossChainSynced is a log parse operation binding the contract event 0x004ce985b8852a486571d0545799251fd671adcf33b7854a5f0f6a6a2431a555. +// ParseCrossChainSynced is a log parse operation binding the contract event 0xf35ec3b262cf74881db1b8051c635496bccb1497a1e776dacb463d0e0e2b0f51. // -// Solidity: event CrossChainSynced(uint64 indexed srcHeight, bytes32 blockHash, bytes32 signalRoot) +// Solidity: event CrossChainSynced(uint64 indexed remoteBlockId, uint64 syncedInBlock, bytes32 blockHash, bytes32 signalRoot) func (_TaikoL2 *TaikoL2Filterer) ParseCrossChainSynced(log types.Log) (*TaikoL2CrossChainSynced, error) { event := new(TaikoL2CrossChainSynced) if err := _TaikoL2.contract.UnpackLog(event, "CrossChainSynced", log); err != nil { @@ -1324,9 +1254,9 @@ func (_TaikoL2 *TaikoL2Filterer) ParseInitialized(log types.Log) (*TaikoL2Initia return event, nil } -// TaikoL2OwnershipTransferredIterator is returned from FilterOwnershipTransferred and is used to iterate over the raw logs and unpacked data for OwnershipTransferred events raised by the TaikoL2 contract. -type TaikoL2OwnershipTransferredIterator struct { - Event *TaikoL2OwnershipTransferred // Event containing the contract specifics and raw log +// TaikoL2OwnershipTransferStartedIterator is returned from FilterOwnershipTransferStarted and is used to iterate over the raw logs and unpacked data for OwnershipTransferStarted events raised by the TaikoL2 contract. +type TaikoL2OwnershipTransferStartedIterator struct { + Event *TaikoL2OwnershipTransferStarted // Event containing the contract specifics and raw log contract *bind.BoundContract // Generic contract to use for unpacking event data event string // Event name to use for unpacking event data @@ -1340,7 +1270,7 @@ type TaikoL2OwnershipTransferredIterator struct { // Next advances the iterator to the subsequent event, returning whether there // are any more events found. In case of a retrieval or parsing error, false is // returned and Error() can be queried for the exact failure. -func (it *TaikoL2OwnershipTransferredIterator) Next() bool { +func (it *TaikoL2OwnershipTransferStartedIterator) Next() bool { // If the iterator failed, stop iterating if it.fail != nil { return false @@ -1349,7 +1279,7 @@ func (it *TaikoL2OwnershipTransferredIterator) Next() bool { if it.done { select { case log := <-it.logs: - it.Event = new(TaikoL2OwnershipTransferred) + it.Event = new(TaikoL2OwnershipTransferStarted) if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { it.fail = err return false @@ -1364,7 +1294,7 @@ func (it *TaikoL2OwnershipTransferredIterator) Next() bool { // Iterator still in progress, wait for either a data or an error event select { case log := <-it.logs: - it.Event = new(TaikoL2OwnershipTransferred) + it.Event = new(TaikoL2OwnershipTransferStarted) if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { it.fail = err return false @@ -1380,28 +1310,28 @@ func (it *TaikoL2OwnershipTransferredIterator) Next() bool { } // Error returns any retrieval or parsing error occurred during filtering. -func (it *TaikoL2OwnershipTransferredIterator) Error() error { +func (it *TaikoL2OwnershipTransferStartedIterator) Error() error { return it.fail } // Close terminates the iteration process, releasing any pending underlying // resources. -func (it *TaikoL2OwnershipTransferredIterator) Close() error { +func (it *TaikoL2OwnershipTransferStartedIterator) Close() error { it.sub.Unsubscribe() return nil } -// TaikoL2OwnershipTransferred represents a OwnershipTransferred event raised by the TaikoL2 contract. -type TaikoL2OwnershipTransferred struct { +// TaikoL2OwnershipTransferStarted represents a OwnershipTransferStarted event raised by the TaikoL2 contract. +type TaikoL2OwnershipTransferStarted struct { PreviousOwner common.Address NewOwner common.Address Raw types.Log // Blockchain specific contextual infos } -// FilterOwnershipTransferred is a free log retrieval operation binding the contract event 0x8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0. +// FilterOwnershipTransferStarted is a free log retrieval operation binding the contract event 0x38d16b8cac22d99fc7c124b9cd0de2d3fa1faef420bfe791d8c362d765e22700. // -// Solidity: event OwnershipTransferred(address indexed previousOwner, address indexed newOwner) -func (_TaikoL2 *TaikoL2Filterer) FilterOwnershipTransferred(opts *bind.FilterOpts, previousOwner []common.Address, newOwner []common.Address) (*TaikoL2OwnershipTransferredIterator, error) { +// Solidity: event OwnershipTransferStarted(address indexed previousOwner, address indexed newOwner) +func (_TaikoL2 *TaikoL2Filterer) FilterOwnershipTransferStarted(opts *bind.FilterOpts, previousOwner []common.Address, newOwner []common.Address) (*TaikoL2OwnershipTransferStartedIterator, error) { var previousOwnerRule []interface{} for _, previousOwnerItem := range previousOwner { @@ -1412,17 +1342,17 @@ func (_TaikoL2 *TaikoL2Filterer) FilterOwnershipTransferred(opts *bind.FilterOpt newOwnerRule = append(newOwnerRule, newOwnerItem) } - logs, sub, err := _TaikoL2.contract.FilterLogs(opts, "OwnershipTransferred", previousOwnerRule, newOwnerRule) + logs, sub, err := _TaikoL2.contract.FilterLogs(opts, "OwnershipTransferStarted", previousOwnerRule, newOwnerRule) if err != nil { return nil, err } - return &TaikoL2OwnershipTransferredIterator{contract: _TaikoL2.contract, event: "OwnershipTransferred", logs: logs, sub: sub}, nil + return &TaikoL2OwnershipTransferStartedIterator{contract: _TaikoL2.contract, event: "OwnershipTransferStarted", logs: logs, sub: sub}, nil } -// WatchOwnershipTransferred is a free log subscription operation binding the contract event 0x8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0. +// WatchOwnershipTransferStarted is a free log subscription operation binding the contract event 0x38d16b8cac22d99fc7c124b9cd0de2d3fa1faef420bfe791d8c362d765e22700. // -// Solidity: event OwnershipTransferred(address indexed previousOwner, address indexed newOwner) -func (_TaikoL2 *TaikoL2Filterer) WatchOwnershipTransferred(opts *bind.WatchOpts, sink chan<- *TaikoL2OwnershipTransferred, previousOwner []common.Address, newOwner []common.Address) (event.Subscription, error) { +// Solidity: event OwnershipTransferStarted(address indexed previousOwner, address indexed newOwner) +func (_TaikoL2 *TaikoL2Filterer) WatchOwnershipTransferStarted(opts *bind.WatchOpts, sink chan<- *TaikoL2OwnershipTransferStarted, previousOwner []common.Address, newOwner []common.Address) (event.Subscription, error) { var previousOwnerRule []interface{} for _, previousOwnerItem := range previousOwner { @@ -1433,7 +1363,7 @@ func (_TaikoL2 *TaikoL2Filterer) WatchOwnershipTransferred(opts *bind.WatchOpts, newOwnerRule = append(newOwnerRule, newOwnerItem) } - logs, sub, err := _TaikoL2.contract.WatchLogs(opts, "OwnershipTransferred", previousOwnerRule, newOwnerRule) + logs, sub, err := _TaikoL2.contract.WatchLogs(opts, "OwnershipTransferStarted", previousOwnerRule, newOwnerRule) if err != nil { return nil, err } @@ -1443,8 +1373,8 @@ func (_TaikoL2 *TaikoL2Filterer) WatchOwnershipTransferred(opts *bind.WatchOpts, select { case log := <-logs: // New log arrived, parse the event and forward to the user - event := new(TaikoL2OwnershipTransferred) - if err := _TaikoL2.contract.UnpackLog(event, "OwnershipTransferred", log); err != nil { + event := new(TaikoL2OwnershipTransferStarted) + if err := _TaikoL2.contract.UnpackLog(event, "OwnershipTransferStarted", log); err != nil { return err } event.Raw = log @@ -1465,21 +1395,21 @@ func (_TaikoL2 *TaikoL2Filterer) WatchOwnershipTransferred(opts *bind.WatchOpts, }), nil } -// ParseOwnershipTransferred is a log parse operation binding the contract event 0x8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0. +// ParseOwnershipTransferStarted is a log parse operation binding the contract event 0x38d16b8cac22d99fc7c124b9cd0de2d3fa1faef420bfe791d8c362d765e22700. // -// Solidity: event OwnershipTransferred(address indexed previousOwner, address indexed newOwner) -func (_TaikoL2 *TaikoL2Filterer) ParseOwnershipTransferred(log types.Log) (*TaikoL2OwnershipTransferred, error) { - event := new(TaikoL2OwnershipTransferred) - if err := _TaikoL2.contract.UnpackLog(event, "OwnershipTransferred", log); err != nil { +// Solidity: event OwnershipTransferStarted(address indexed previousOwner, address indexed newOwner) +func (_TaikoL2 *TaikoL2Filterer) ParseOwnershipTransferStarted(log types.Log) (*TaikoL2OwnershipTransferStarted, error) { + event := new(TaikoL2OwnershipTransferStarted) + if err := _TaikoL2.contract.UnpackLog(event, "OwnershipTransferStarted", log); err != nil { return nil, err } event.Raw = log return event, nil } -// TaikoL2PausedIterator is returned from FilterPaused and is used to iterate over the raw logs and unpacked data for Paused events raised by the TaikoL2 contract. -type TaikoL2PausedIterator struct { - Event *TaikoL2Paused // Event containing the contract specifics and raw log +// TaikoL2OwnershipTransferredIterator is returned from FilterOwnershipTransferred and is used to iterate over the raw logs and unpacked data for OwnershipTransferred events raised by the TaikoL2 contract. +type TaikoL2OwnershipTransferredIterator struct { + Event *TaikoL2OwnershipTransferred // Event containing the contract specifics and raw log contract *bind.BoundContract // Generic contract to use for unpacking event data event string // Event name to use for unpacking event data @@ -1493,7 +1423,7 @@ type TaikoL2PausedIterator struct { // Next advances the iterator to the subsequent event, returning whether there // are any more events found. In case of a retrieval or parsing error, false is // returned and Error() can be queried for the exact failure. -func (it *TaikoL2PausedIterator) Next() bool { +func (it *TaikoL2OwnershipTransferredIterator) Next() bool { // If the iterator failed, stop iterating if it.fail != nil { return false @@ -1502,7 +1432,7 @@ func (it *TaikoL2PausedIterator) Next() bool { if it.done { select { case log := <-it.logs: - it.Event = new(TaikoL2Paused) + it.Event = new(TaikoL2OwnershipTransferred) if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { it.fail = err return false @@ -1517,7 +1447,7 @@ func (it *TaikoL2PausedIterator) Next() bool { // Iterator still in progress, wait for either a data or an error event select { case log := <-it.logs: - it.Event = new(TaikoL2Paused) + it.Event = new(TaikoL2OwnershipTransferred) if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { it.fail = err return false @@ -1533,175 +1463,60 @@ func (it *TaikoL2PausedIterator) Next() bool { } // Error returns any retrieval or parsing error occurred during filtering. -func (it *TaikoL2PausedIterator) Error() error { +func (it *TaikoL2OwnershipTransferredIterator) Error() error { return it.fail } // Close terminates the iteration process, releasing any pending underlying // resources. -func (it *TaikoL2PausedIterator) Close() error { +func (it *TaikoL2OwnershipTransferredIterator) Close() error { it.sub.Unsubscribe() return nil } -// TaikoL2Paused represents a Paused event raised by the TaikoL2 contract. -type TaikoL2Paused struct { - Account common.Address - Raw types.Log // Blockchain specific contextual infos +// TaikoL2OwnershipTransferred represents a OwnershipTransferred event raised by the TaikoL2 contract. +type TaikoL2OwnershipTransferred struct { + PreviousOwner common.Address + NewOwner common.Address + Raw types.Log // Blockchain specific contextual infos } -// FilterPaused is a free log retrieval operation binding the contract event 0x62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a258. +// FilterOwnershipTransferred is a free log retrieval operation binding the contract event 0x8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0. // -// Solidity: event Paused(address account) -func (_TaikoL2 *TaikoL2Filterer) FilterPaused(opts *bind.FilterOpts) (*TaikoL2PausedIterator, error) { +// Solidity: event OwnershipTransferred(address indexed previousOwner, address indexed newOwner) +func (_TaikoL2 *TaikoL2Filterer) FilterOwnershipTransferred(opts *bind.FilterOpts, previousOwner []common.Address, newOwner []common.Address) (*TaikoL2OwnershipTransferredIterator, error) { - logs, sub, err := _TaikoL2.contract.FilterLogs(opts, "Paused") - if err != nil { - return nil, err + var previousOwnerRule []interface{} + for _, previousOwnerItem := range previousOwner { + previousOwnerRule = append(previousOwnerRule, previousOwnerItem) + } + var newOwnerRule []interface{} + for _, newOwnerItem := range newOwner { + newOwnerRule = append(newOwnerRule, newOwnerItem) } - return &TaikoL2PausedIterator{contract: _TaikoL2.contract, event: "Paused", logs: logs, sub: sub}, nil -} - -// WatchPaused is a free log subscription operation binding the contract event 0x62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a258. -// -// Solidity: event Paused(address account) -func (_TaikoL2 *TaikoL2Filterer) WatchPaused(opts *bind.WatchOpts, sink chan<- *TaikoL2Paused) (event.Subscription, error) { - logs, sub, err := _TaikoL2.contract.WatchLogs(opts, "Paused") + logs, sub, err := _TaikoL2.contract.FilterLogs(opts, "OwnershipTransferred", previousOwnerRule, newOwnerRule) if err != nil { return nil, err } - return event.NewSubscription(func(quit <-chan struct{}) error { - defer sub.Unsubscribe() - for { - select { - case log := <-logs: - // New log arrived, parse the event and forward to the user - event := new(TaikoL2Paused) - if err := _TaikoL2.contract.UnpackLog(event, "Paused", log); err != nil { - return err - } - event.Raw = log - - select { - case sink <- event: - case err := <-sub.Err(): - return err - case <-quit: - return nil - } - case err := <-sub.Err(): - return err - case <-quit: - return nil - } - } - }), nil + return &TaikoL2OwnershipTransferredIterator{contract: _TaikoL2.contract, event: "OwnershipTransferred", logs: logs, sub: sub}, nil } -// ParsePaused is a log parse operation binding the contract event 0x62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a258. +// WatchOwnershipTransferred is a free log subscription operation binding the contract event 0x8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0. // -// Solidity: event Paused(address account) -func (_TaikoL2 *TaikoL2Filterer) ParsePaused(log types.Log) (*TaikoL2Paused, error) { - event := new(TaikoL2Paused) - if err := _TaikoL2.contract.UnpackLog(event, "Paused", log); err != nil { - return nil, err - } - event.Raw = log - return event, nil -} - -// TaikoL2UnpausedIterator is returned from FilterUnpaused and is used to iterate over the raw logs and unpacked data for Unpaused events raised by the TaikoL2 contract. -type TaikoL2UnpausedIterator struct { - Event *TaikoL2Unpaused // Event containing the contract specifics and raw log - - contract *bind.BoundContract // Generic contract to use for unpacking event data - event string // Event name to use for unpacking event data - - logs chan types.Log // Log channel receiving the found contract events - sub ethereum.Subscription // Subscription for errors, completion and termination - done bool // Whether the subscription completed delivering logs - fail error // Occurred error to stop iteration -} - -// Next advances the iterator to the subsequent event, returning whether there -// are any more events found. In case of a retrieval or parsing error, false is -// returned and Error() can be queried for the exact failure. -func (it *TaikoL2UnpausedIterator) Next() bool { - // If the iterator failed, stop iterating - if it.fail != nil { - return false - } - // If the iterator completed, deliver directly whatever's available - if it.done { - select { - case log := <-it.logs: - it.Event = new(TaikoL2Unpaused) - if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { - it.fail = err - return false - } - it.Event.Raw = log - return true - - default: - return false - } - } - // Iterator still in progress, wait for either a data or an error event - select { - case log := <-it.logs: - it.Event = new(TaikoL2Unpaused) - if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { - it.fail = err - return false - } - it.Event.Raw = log - return true +// Solidity: event OwnershipTransferred(address indexed previousOwner, address indexed newOwner) +func (_TaikoL2 *TaikoL2Filterer) WatchOwnershipTransferred(opts *bind.WatchOpts, sink chan<- *TaikoL2OwnershipTransferred, previousOwner []common.Address, newOwner []common.Address) (event.Subscription, error) { - case err := <-it.sub.Err(): - it.done = true - it.fail = err - return it.Next() + var previousOwnerRule []interface{} + for _, previousOwnerItem := range previousOwner { + previousOwnerRule = append(previousOwnerRule, previousOwnerItem) } -} - -// Error returns any retrieval or parsing error occurred during filtering. -func (it *TaikoL2UnpausedIterator) Error() error { - return it.fail -} - -// Close terminates the iteration process, releasing any pending underlying -// resources. -func (it *TaikoL2UnpausedIterator) Close() error { - it.sub.Unsubscribe() - return nil -} - -// TaikoL2Unpaused represents a Unpaused event raised by the TaikoL2 contract. -type TaikoL2Unpaused struct { - Account common.Address - Raw types.Log // Blockchain specific contextual infos -} - -// FilterUnpaused is a free log retrieval operation binding the contract event 0x5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa. -// -// Solidity: event Unpaused(address account) -func (_TaikoL2 *TaikoL2Filterer) FilterUnpaused(opts *bind.FilterOpts) (*TaikoL2UnpausedIterator, error) { - - logs, sub, err := _TaikoL2.contract.FilterLogs(opts, "Unpaused") - if err != nil { - return nil, err + var newOwnerRule []interface{} + for _, newOwnerItem := range newOwner { + newOwnerRule = append(newOwnerRule, newOwnerItem) } - return &TaikoL2UnpausedIterator{contract: _TaikoL2.contract, event: "Unpaused", logs: logs, sub: sub}, nil -} - -// WatchUnpaused is a free log subscription operation binding the contract event 0x5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa. -// -// Solidity: event Unpaused(address account) -func (_TaikoL2 *TaikoL2Filterer) WatchUnpaused(opts *bind.WatchOpts, sink chan<- *TaikoL2Unpaused) (event.Subscription, error) { - logs, sub, err := _TaikoL2.contract.WatchLogs(opts, "Unpaused") + logs, sub, err := _TaikoL2.contract.WatchLogs(opts, "OwnershipTransferred", previousOwnerRule, newOwnerRule) if err != nil { return nil, err } @@ -1711,8 +1526,8 @@ func (_TaikoL2 *TaikoL2Filterer) WatchUnpaused(opts *bind.WatchOpts, sink chan<- select { case log := <-logs: // New log arrived, parse the event and forward to the user - event := new(TaikoL2Unpaused) - if err := _TaikoL2.contract.UnpackLog(event, "Unpaused", log); err != nil { + event := new(TaikoL2OwnershipTransferred) + if err := _TaikoL2.contract.UnpackLog(event, "OwnershipTransferred", log); err != nil { return err } event.Raw = log @@ -1733,12 +1548,12 @@ func (_TaikoL2 *TaikoL2Filterer) WatchUnpaused(opts *bind.WatchOpts, sink chan<- }), nil } -// ParseUnpaused is a log parse operation binding the contract event 0x5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa. +// ParseOwnershipTransferred is a log parse operation binding the contract event 0x8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0. // -// Solidity: event Unpaused(address account) -func (_TaikoL2 *TaikoL2Filterer) ParseUnpaused(log types.Log) (*TaikoL2Unpaused, error) { - event := new(TaikoL2Unpaused) - if err := _TaikoL2.contract.UnpackLog(event, "Unpaused", log); err != nil { +// Solidity: event OwnershipTransferred(address indexed previousOwner, address indexed newOwner) +func (_TaikoL2 *TaikoL2Filterer) ParseOwnershipTransferred(log types.Log) (*TaikoL2OwnershipTransferred, error) { + event := new(TaikoL2OwnershipTransferred) + if err := _TaikoL2.contract.UnpackLog(event, "OwnershipTransferred", log); err != nil { return nil, err } event.Raw = log diff --git a/packages/relayer/encoding/signal_proof_test.go b/packages/relayer/encoding/signal_proof_test.go index 177caa403b..797cc76190 100644 --- a/packages/relayer/encoding/signal_proof_test.go +++ b/packages/relayer/encoding/signal_proof_test.go @@ -18,7 +18,7 @@ func Test_EncodeSignalProof(t *testing.T) { } // nolint: lll - want := "0x0000000000000000000000000000000000000000000000000000000000000020000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000000600000000000000000000000000000000000000000000000000000000000000180000000000000000000000000000000000000000000000000000000000000010000edb9377a94f02e691ea208a80a7bd13dcb51dfae3a389d3001a55c5fdf3f3ae70807df1d8ffcaeefa5dc56875a03dae3494d93bbf3074018fea52137a098433d9795f455fcfaf89b6456b970605bd0f70bec98418ef322fa5bba9874ab2277225a38c19f99275cd6d25d9cd4259c366c02b750056a6b71810034f95d34ae12c1298a95e6ba03de90dbbfacc5c8edbeb6ed93a0e01c08f3435b1ca944e9229a176804445432795c14dc315925fe2480084d6b0729c30fb1c2e50e481df5d7daa25769a0c74baf362ff02f2a934538cd11bf939f64377489255aa60a12628b130f4bddd30664d6b5f91d17cc110bee38a7ce5c629585e57d777bfbb2eaf09e150000000000000000000000000000000000000000000000000000000000000000" + want := "0x000000000000000000000000000000000000000000000000000000000000002000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000008000000000000000000000000000000000000000000000000000000000000001a0000000000000000000000000000000000000000000000000000000000000010000edb9377a94f02e691ea208a80a7bd13dcb51dfae3a389d3001a55c5fdf3f3ae70807df1d8ffcaeefa5dc56875a03dae3494d93bbf3074018fea52137a098433d9795f455fcfaf89b6456b970605bd0f70bec98418ef322fa5bba9874ab2277225a38c19f99275cd6d25d9cd4259c366c02b750056a6b71810034f95d34ae12c1298a95e6ba03de90dbbfacc5c8edbeb6ed93a0e01c08f3435b1ca944e9229a176804445432795c14dc315925fe2480084d6b0729c30fb1c2e50e481df5d7daa25769a0c74baf362ff02f2a934538cd11bf939f64377489255aa60a12628b130f4bddd30664d6b5f91d17cc110bee38a7ce5c629585e57d777bfbb2eaf09e150000000000000000000000000000000000000000000000000000000000000000" proof, err := EncodeSignalProof(s) assert.Equal(t, nil, err) assert.Equal(t, hexutil.Encode(proof), want) diff --git a/packages/relayer/encoding/types.go b/packages/relayer/encoding/types.go index 8874b2921f..81e4f31d04 100644 --- a/packages/relayer/encoding/types.go +++ b/packages/relayer/encoding/types.go @@ -33,21 +33,22 @@ type BlockHeader struct { } type SignalProof struct { - Height uint64 `abi:"height"` - StorageProof []byte `abi:"storageProof"` - Hops []Hop `abi:"hops"` + CrossChainSync common.Address `abi:"crossChainSync"` + Height uint64 `abi:"height"` + StorageProof []byte `abi:"storageProof"` + Hops []Hop `abi:"hops"` } type Hop struct { - ChainID *big.Int `abi:"chainId"` - SignalRoot [32]byte `abi:"signalRoot"` - StorageProof []byte `abi:"storageProof"` + SignalRootRelay common.Address `abi:"signalRootRelay"` + SignalRoot [32]byte `abi:"signalRoot"` + StorageProof []byte `abi:"storageProof"` } var hopComponents = []abi.ArgumentMarshaling{ { - Name: "chainId", - Type: "uint256", + Name: "signalRootRelay", + Type: "address", }, { Name: "signalRoot", @@ -60,6 +61,10 @@ var hopComponents = []abi.ArgumentMarshaling{ } var signalProofT, _ = abi.NewType("tuple", "", []abi.ArgumentMarshaling{ + { + Name: "crossChainSync", + Type: "address", + }, { Name: "height", Type: "uint64", diff --git a/packages/relayer/indexer/handle_event.go b/packages/relayer/indexer/handle_event.go index 5620740ebe..87d1393384 100644 --- a/packages/relayer/indexer/handle_event.go +++ b/packages/relayer/indexer/handle_event.go @@ -23,10 +23,10 @@ func (i *Indexer) handleEvent( ) error { slog.Info("event found for msgHash", "msgHash", common.Hash(event.MsgHash).Hex(), "txHash", event.Raw.TxHash.Hex()) - if event.Message.DestChainId.Cmp(i.destChainId) != 0 { + if new(big.Int).SetUint64(event.Message.DestChainId).Cmp(i.destChainId) != 0 { slog.Info("skipping event, wrong chainID", "messageDestChainID", - event.Message.DestChainId.Uint64(), + event.Message.DestChainId, "indexerDestChainID", i.destChainId.Uint64(), ) @@ -66,7 +66,7 @@ func (i *Indexer) handleEvent( EventType: eventType, Amount: amount.String(), MsgHash: common.Hash(event.MsgHash).Hex(), - MessageOwner: event.Message.User.Hex(), + MessageOwner: event.Message.Owner.Hex(), Event: relayer.EventNameMessageSent, } diff --git a/packages/relayer/indexer/set_initial_processing_block_by_mode.go b/packages/relayer/indexer/set_initial_processing_block_by_mode.go index 2f04576485..2df25e038a 100644 --- a/packages/relayer/indexer/set_initial_processing_block_by_mode.go +++ b/packages/relayer/indexer/set_initial_processing_block_by_mode.go @@ -21,7 +21,7 @@ func (i *Indexer) setInitialProcessingBlockByMode( return errors.Wrap(err, "svc.taikoL1.GetStateVariables") } - startingBlock = stateVars.GenesisHeight + startingBlock = stateVars.A.GenesisHeight } switch mode { diff --git a/packages/relayer/mock/bridge.go b/packages/relayer/mock/bridge.go index be4e7317aa..83217f0389 100644 --- a/packages/relayer/mock/bridge.go +++ b/packages/relayer/mock/bridge.go @@ -61,8 +61,8 @@ func (b *Bridge) WatchMessageSent( sink <- &bridge.BridgeMessageSent{ Message: bridge.IBridgeMessage{ - SrcChainId: big.NewInt(1), - DestChainId: MockChainID, + SrcChainId: 1, + DestChainId: MockChainID.Uint64(), }, } b.MessagesSent++ diff --git a/packages/relayer/mock/signalservice.go b/packages/relayer/mock/signalservice.go index c12edc666d..04da17f84f 100644 --- a/packages/relayer/mock/signalservice.go +++ b/packages/relayer/mock/signalservice.go @@ -1,8 +1,6 @@ package mock import ( - "math/big" - "github.com/ethereum/go-ethereum/accounts/abi/bind" "github.com/ethereum/go-ethereum/common" ) @@ -12,7 +10,7 @@ type SignalService struct { func (s *SignalService) GetSignalSlot( opts *bind.CallOpts, - chainId *big.Int, + chainId uint64, app common.Address, signal [32]byte, ) ([32]byte, error) { diff --git a/packages/relayer/processor/estimate_gas.go b/packages/relayer/processor/estimate_gas.go index 28763ab94a..5743b44049 100644 --- a/packages/relayer/processor/estimate_gas.go +++ b/packages/relayer/processor/estimate_gas.go @@ -3,6 +3,7 @@ package processor import ( "context" "log/slog" + "math/big" "github.com/ethereum/go-ethereum/accounts/abi/bind" "github.com/pkg/errors" @@ -15,7 +16,7 @@ var ( func (p *Processor) estimateGas( ctx context.Context, message bridge.IBridgeMessage, proof []byte) (uint64, error) { - auth, err := bind.NewKeyedTransactorWithChainID(p.ecdsaKey, message.DestChainId) + auth, err := bind.NewKeyedTransactorWithChainID(p.ecdsaKey, new(big.Int).SetUint64(message.DestChainId)) if err != nil { return 0, errors.Wrap(err, "bind.NewKeyedTransactorWithChainID") } diff --git a/packages/relayer/processor/is_profitable_test.go b/packages/relayer/processor/is_profitable_test.go index 4c137fe6f2..bae4415c71 100644 --- a/packages/relayer/processor/is_profitable_test.go +++ b/packages/relayer/processor/is_profitable_test.go @@ -40,7 +40,7 @@ func Test_isProfitable(t *testing.T) { "lowProcessingFeeHighCost", bridge.IBridgeMessage{ Fee: new(big.Int).Sub(mock.ProcessMessageTx.Cost(), big.NewInt(1)), - DestChainId: big.NewInt(167001), + DestChainId: 167001, }, big.NewInt(1000000), false, @@ -50,7 +50,7 @@ func Test_isProfitable(t *testing.T) { "profitableProcessingFee", bridge.IBridgeMessage{ Fee: new(big.Int).Add(mock.ProcessMessageTx.Cost(), big.NewInt(1)), - DestChainId: big.NewInt(167001), + DestChainId: 167001, }, big.NewInt(1), true, diff --git a/packages/relayer/processor/process_message.go b/packages/relayer/processor/process_message.go index 6095442386..41400e07ee 100644 --- a/packages/relayer/processor/process_message.go +++ b/packages/relayer/processor/process_message.go @@ -81,7 +81,7 @@ func (p *Processor) processMessage( return errors.Wrap(err, "p.eventStatusFromMsgHash") } - if !canProcessMessage(ctx, eventStatus, msgBody.Event.Message.User, p.relayerAddr) { + if !canProcessMessage(ctx, eventStatus, msgBody.Event.Message.Owner, p.relayerAddr) { return errUnprocessable } @@ -108,12 +108,23 @@ func (p *Processor) processMessage( // todo: instead of latest, need way to find out which block num on the hop chain // the previous blockHash was synced in, and then wait for that header to be synced // on the next hop chain. - latestBlock, err := hop.ethClient.BlockByNumber(ctx, nil) + snippet, err := hop.headerSyncer.GetSyncedSnippet(&bind.CallOpts{ + Context: ctx, + }, + hop.blockNum, + ) + + slog.Info("hop synced snippet", + "syncedInBlock", snippet.SyncedInBlock, + "blockNum", hop.blockNum, + "blockHash", common.Bytes2Hex(snippet.BlockHash[:]), + ) + if err != nil { - return errors.Wrap(err, "hop.ethClient.BlockByNumber(ctx, nil)") + return errors.Wrap(err, "hop.headerSyncer.GetSyncedSnippet") } - blockNum = latestBlock.NumberU64() + blockNum = snippet.SyncedInBlock hopEthClient = hop.ethClient } @@ -165,11 +176,12 @@ func (p *Processor) processMessage( }) } - if hops != nil { + if len(hops) != 0 { encodedSignalProof, _, err = p.prover.EncodedSignalProofWithHops( ctx, p.srcCaller, p.srcSignalServiceAddress, + p.destHeaderSyncAddress, hops, common.Bytes2Hex(key[:]), msgBody.Event.Raw.BlockHash, @@ -187,6 +199,7 @@ func (p *Processor) processMessage( ctx, p.srcCaller, p.srcSignalServiceAddress, + p.destHeaderSyncAddress, common.Bytes2Hex(key[:]), latestSyncedSnippet.BlockHash, ) @@ -194,11 +207,12 @@ func (p *Processor) processMessage( if err != nil { slog.Error("error encoding signal proof", - "srcChainID", msgBody.Event.Message.SrcChainId.String(), - "destChainID", msgBody.Event.Message.DestChainId.String(), + "srcChainID", msgBody.Event.Message.SrcChainId, + "destChainID", msgBody.Event.Message.DestChainId, "txHash", msgBody.Event.Raw.TxHash.Hex(), "msgHash", common.Hash(msgBody.Event.MsgHash).Hex(), - "from", msgBody.Event.Message.User.Hex(), + "from", msgBody.Event.Message.From.Hex(), + "owner", msgBody.Event.Message.Owner.Hex(), "error", err, "hopsLength", len(hops), ) @@ -220,7 +234,7 @@ func (p *Processor) processMessage( if !received { slog.Warn("Message not received on dest chain", "msgHash", common.Hash(msgBody.Event.MsgHash).Hex(), - "srcChainId", msgBody.Event.Message.SrcChainId.String(), + "srcChainId", msgBody.Event.Message.SrcChainId, ) relayer.MessagesNotReceivedOnDestChain.Inc() @@ -298,7 +312,7 @@ func (p *Processor) sendProcessMessageCall( event *bridge.BridgeMessageSent, proof []byte, ) (*types.Transaction, error) { - auth, err := bind.NewKeyedTransactorWithChainID(p.ecdsaKey, event.Message.DestChainId) + auth, err := bind.NewKeyedTransactorWithChainID(p.ecdsaKey, new(big.Int).SetUint64(event.Message.DestChainId)) if err != nil { return nil, errors.Wrap(err, "bind.NewKeyedTransactorWithChainID") } @@ -390,7 +404,7 @@ func (p *Processor) needsContractDeployment( var err error - chainID := canonicalToken.ChainID() + chainID := new(big.Int).SetUint64(canonicalToken.ChainID()) addr := canonicalToken.Address() ctx, cancel := context.WithTimeout(ctx, p.ethClientTimeout) @@ -400,17 +414,18 @@ func (p *Processor) needsContractDeployment( Context: ctx, } - if eventType == relayer.EventTypeSendERC20 && event.Message.DestChainId.Cmp(chainID) != 0 { + destChainID := new(big.Int).SetUint64(event.Message.DestChainId) + if eventType == relayer.EventTypeSendERC20 && destChainID.Cmp(chainID) != 0 { // determine whether the canonical token is bridged or not on this chain bridgedAddress, err = p.destERC20Vault.CanonicalToBridged(opts, chainID, addr) } - if eventType == relayer.EventTypeSendERC721 && event.Message.DestChainId.Cmp(chainID) != 0 { + if eventType == relayer.EventTypeSendERC721 && destChainID.Cmp(chainID) != 0 { // determine whether the canonical token is bridged or not on this chain bridgedAddress, err = p.destERC721Vault.CanonicalToBridged(opts, chainID, addr) } - if eventType == relayer.EventTypeSendERC1155 && event.Message.DestChainId.Cmp(chainID) != 0 { + if eventType == relayer.EventTypeSendERC1155 && destChainID.Cmp(chainID) != 0 { // determine whether the canonical token is bridged or not on this chain bridgedAddress, err = p.destERC1155Vault.CanonicalToBridged(opts, chainID, addr) } @@ -447,7 +462,7 @@ func (p *Processor) hardcodeGasLimit( // determine whether the canonical token is bridged or not on this chain bridgedAddress, err = p.destERC20Vault.CanonicalToBridged( nil, - canonicalToken.ChainID(), + new(big.Int).SetUint64(canonicalToken.ChainID()), canonicalToken.Address(), ) if err != nil { @@ -457,7 +472,7 @@ func (p *Processor) hardcodeGasLimit( // determine whether the canonical token is bridged or not on this chain bridgedAddress, err = p.destERC721Vault.CanonicalToBridged( nil, - canonicalToken.ChainID(), + new(big.Int).SetUint64(canonicalToken.ChainID()), canonicalToken.Address(), ) if err != nil { @@ -467,7 +482,7 @@ func (p *Processor) hardcodeGasLimit( // determine whether the canonical token is bridged or not on this chain bridgedAddress, err = p.destERC1155Vault.CanonicalToBridged( nil, - canonicalToken.ChainID(), + new(big.Int).SetUint64(canonicalToken.ChainID()), canonicalToken.Address(), ) if err != nil { @@ -525,10 +540,10 @@ func (p *Processor) saveMessageStatusChangedEvent( _, err = p.eventRepo.Save(ctx, relayer.SaveEventOpts{ Name: relayer.EventNameMessageStatusChanged, Data: data, - ChainID: event.Message.DestChainId, + ChainID: new(big.Int).SetUint64(event.Message.DestChainId), Status: relayer.EventStatus(m["status"].(uint8)), MsgHash: common.Hash(event.MsgHash).Hex(), - MessageOwner: event.Message.User.Hex(), + MessageOwner: event.Message.Owner.Hex(), Event: relayer.EventNameMessageStatusChanged, }) if err != nil { diff --git a/packages/relayer/processor/process_message_test.go b/packages/relayer/processor/process_message_test.go index d64854bde2..f0ce5c0d3d 100644 --- a/packages/relayer/processor/process_message_test.go +++ b/packages/relayer/processor/process_message_test.go @@ -25,8 +25,8 @@ func Test_sendProcessMessageCall(t *testing.T) { context.Background(), &bridge.BridgeMessageSent{ Message: bridge.IBridgeMessage{ - DestChainId: mock.MockChainID, - SrcChainId: mock.MockChainID, + DestChainId: mock.MockChainID.Uint64(), + SrcChainId: mock.MockChainID.Uint64(), Id: big.NewInt(1), Fee: new(big.Int).Add(mock.ProcessMessageTx.Cost(), big.NewInt(1)), }, @@ -50,7 +50,7 @@ func Test_ProcessMessage_messageUnprocessable(t *testing.T) { Event: &bridge.BridgeMessageSent{ Message: bridge.IBridgeMessage{ GasLimit: big.NewInt(1), - SrcChainId: mock.MockChainID, + SrcChainId: mock.MockChainID.Uint64(), Id: big.NewInt(1), }, Raw: types.Log{ @@ -82,7 +82,7 @@ func Test_ProcessMessage_gasLimit0(t *testing.T) { Event: &bridge.BridgeMessageSent{ Message: bridge.IBridgeMessage{ GasLimit: big.NewInt(0), - SrcChainId: mock.MockChainID, + SrcChainId: mock.MockChainID.Uint64(), Id: big.NewInt(1), }, Raw: types.Log{ @@ -113,7 +113,7 @@ func Test_ProcessMessage_noChainId(t *testing.T) { body := queue.QueueMessageBody{ Event: &bridge.BridgeMessageSent{ Message: bridge.IBridgeMessage{ - SrcChainId: mock.MockChainID, + SrcChainId: mock.MockChainID.Uint64(), GasLimit: big.NewInt(1), Id: big.NewInt(0), }, @@ -147,9 +147,9 @@ func Test_ProcessMessage(t *testing.T) { Event: &bridge.BridgeMessageSent{ Message: bridge.IBridgeMessage{ GasLimit: big.NewInt(1), - DestChainId: mock.MockChainID, + DestChainId: mock.MockChainID.Uint64(), Fee: big.NewInt(1000000000), - SrcChainId: mock.MockChainID, + SrcChainId: mock.MockChainID.Uint64(), Id: big.NewInt(1), }, MsgHash: mock.SuccessMsgHash, @@ -185,7 +185,7 @@ func Test_ProcessMessage(t *testing.T) { // err := p.ProcessMessage(context.Background(), &bridge.BridgeMessageSent{ // Message: bridge.IBridgeMessage{ // GasLimit: big.NewInt(1), -// DestChainId: mock.MockChainID, +// DestChainId: mock.MockChainID.Uint64(), // }, // Signal: mock.SuccessMsgHash, // }, &relayer.Event{}) diff --git a/packages/relayer/processor/processor.go b/packages/relayer/processor/processor.go index 2d36762837..beeba0cf4e 100644 --- a/packages/relayer/processor/processor.go +++ b/packages/relayer/processor/processor.go @@ -91,6 +91,7 @@ type Processor struct { destNonce uint64 relayerAddr common.Address srcSignalServiceAddress common.Address + destHeaderSyncAddress common.Address confirmations uint64 @@ -323,6 +324,7 @@ func InitFromConfig(ctx context.Context, p *Processor, cfg *Config) error { p.confirmations = cfg.Confirmations p.srcSignalServiceAddress = cfg.SrcSignalServiceAddress + p.destHeaderSyncAddress = cfg.DestTaikoAddress p.msgCh = make(chan queue.Message) p.wg = &sync.WaitGroup{} diff --git a/packages/relayer/proof/encoded_signal_proof.go b/packages/relayer/proof/encoded_signal_proof.go index 811baeaf5c..1742692ca8 100644 --- a/packages/relayer/proof/encoded_signal_proof.go +++ b/packages/relayer/proof/encoded_signal_proof.go @@ -35,6 +35,7 @@ func (p *Prover) EncodedSignalProof( ctx context.Context, caller relayer.Caller, signalServiceAddress common.Address, + crossChainSyncAddress common.Address, key string, blockHash common.Hash, ) ([]byte, error) { @@ -55,9 +56,10 @@ func (p *Prover) EncodedSignalProof( } signalProof := encoding.SignalProof{ - Height: blockHeader.Height.Uint64(), - StorageProof: encodedStorageProof, - Hops: []encoding.Hop{}, + CrossChainSync: crossChainSyncAddress, + Height: blockHeader.Height.Uint64(), + StorageProof: encodedStorageProof, + Hops: []encoding.Hop{}, } encodedSignalProof, err := encoding.EncodeSignalProof(signalProof) @@ -72,6 +74,7 @@ func (p *Prover) EncodedSignalProofWithHops( ctx context.Context, caller relayer.Caller, signalServiceAddress common.Address, + crossChainSyncAddress common.Address, hopParams []HopParams, key string, blockHash common.Hash, @@ -100,7 +103,7 @@ func (p *Prover) EncodedSignalProofWithHops( for _, hop := range hopParams { hopStorageSlotKey, err := hop.SignalService.GetSignalSlot(&bind.CallOpts{}, - hop.ChainID, + hop.ChainID.Uint64(), hop.TaikoAddress, signalRoot, ) @@ -120,18 +123,19 @@ func (p *Prover) EncodedSignalProofWithHops( } hops = append(hops, encoding.Hop{ - ChainID: hop.ChainID, - SignalRoot: signalRoot, - StorageProof: encodedHopStorageProof, + SignalRootRelay: hop.TaikoAddress, + SignalRoot: signalRoot, + StorageProof: encodedHopStorageProof, }) signalRoot = nextSignalRoot } signalProof := encoding.SignalProof{ - Height: blockNum, - StorageProof: encodedStorageProof, - Hops: hops, + CrossChainSync: crossChainSyncAddress, + Height: blockNum, + StorageProof: encodedStorageProof, + Hops: hops, } encodedSignalProof, err := encoding.EncodeSignalProof(signalProof) diff --git a/packages/relayer/proof/encoded_signal_proof_test.go b/packages/relayer/proof/encoded_signal_proof_test.go index 94395d1d65..36d57e2ae6 100644 --- a/packages/relayer/proof/encoded_signal_proof_test.go +++ b/packages/relayer/proof/encoded_signal_proof_test.go @@ -12,7 +12,7 @@ import ( var ( // nolint: lll - wantEncoded = "0x00000000000000000000000000000000000000000000000000000000000000200000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000006000000000000000000000000000000000000000000000000000000000000000a00000000000000000000000000000000000000000000000000000000000000001c0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000" + wantEncoded = "0x000000000000000000000000000000000000000000000000000000000000002000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000008000000000000000000000000000000000000000000000000000000000000000c00000000000000000000000000000000000000000000000000000000000000001c0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000" ) func Test_EncodedSignalProof(t *testing.T) { @@ -22,6 +22,7 @@ func Test_EncodedSignalProof(t *testing.T) { context.Background(), &mock.Caller{}, common.Address{}, + common.Address{}, "1", mock.Header.TxHash, ) diff --git a/packages/relayer/signalservice.go b/packages/relayer/signalservice.go index cd0ced4f87..37c7aa42f1 100644 --- a/packages/relayer/signalservice.go +++ b/packages/relayer/signalservice.go @@ -1,12 +1,10 @@ package relayer import ( - "math/big" - "github.com/ethereum/go-ethereum/accounts/abi/bind" "github.com/ethereum/go-ethereum/common" ) type SignalService interface { - GetSignalSlot(opts *bind.CallOpts, chainId *big.Int, app common.Address, signal [32]byte) ([32]byte, error) + GetSignalSlot(opts *bind.CallOpts, chainId uint64, app common.Address, signal [32]byte) ([32]byte, error) } diff --git a/packages/relayer/types.go b/packages/relayer/types.go index e394464b53..50784bec6b 100644 --- a/packages/relayer/types.go +++ b/packages/relayer/types.go @@ -129,9 +129,9 @@ func DecodeMessageSentData(event *bridge.BridgeMessageSent) (EventType, Canonica var amount *big.Int = big.NewInt(0) - erc20ReceiveTokensFunctionSig := "cb03d23c" - erc721ReceiveTokensFunctionSig := "a9976baf" - erc1155ReceiveTokensFunctionSig := "20b81559" + erc20ReceiveTokensFunctionSig := "240f6a5f" + erc721ReceiveTokensFunctionSig := "300536b5" + erc1155ReceiveTokensFunctionSig := "079312bf" // try to see if its an ERC20 if event.Message.Data != nil && common.BytesToHash(event.Message.Data) != ZeroHash { @@ -164,7 +164,7 @@ func DecodeMessageSentData(event *bridge.BridgeMessageSent) (EventType, Canonica // have to unpack to anonymous struct first due to abi limitation t := inputsMap["ctoken"].(struct { // nolint - ChainId *big.Int `json:"chainId"` + ChainId uint64 `json:"chainId"` Addr common.Address `json:"addr"` Decimals uint8 `json:"decimals"` Symbol string `json:"symbol"` @@ -209,7 +209,7 @@ func DecodeMessageSentData(event *bridge.BridgeMessageSent) (EventType, Canonica t := inputsMap["ctoken"].(struct { // nolint - ChainId *big.Int `json:"chainId"` + ChainId uint64 `json:"chainId"` Addr common.Address `json:"addr"` Symbol string `json:"symbol"` Name string `json:"name"` @@ -252,7 +252,7 @@ func DecodeMessageSentData(event *bridge.BridgeMessageSent) (EventType, Canonica t := inputsMap["ctoken"].(struct { // nolint - ChainId *big.Int `json:"chainId"` + ChainId uint64 `json:"chainId"` Addr common.Address `json:"addr"` Symbol string `json:"symbol"` Name string `json:"name"` @@ -280,7 +280,7 @@ func DecodeMessageSentData(event *bridge.BridgeMessageSent) (EventType, Canonica } type CanonicalToken interface { - ChainID() *big.Int + ChainID() uint64 Address() common.Address ContractName() string TokenDecimals() uint8 @@ -289,14 +289,14 @@ type CanonicalToken interface { type CanonicalERC20 struct { // nolint - ChainId *big.Int `json:"chainId"` + ChainId uint64 `json:"chainId"` Addr common.Address `json:"addr"` Decimals uint8 `json:"decimals"` Symbol string `json:"symbol"` Name string `json:"name"` } -func (c CanonicalERC20) ChainID() *big.Int { +func (c CanonicalERC20) ChainID() uint64 { return c.ChainId } @@ -318,13 +318,13 @@ func (c CanonicalERC20) TokenDecimals() uint8 { type CanonicalNFT struct { // nolint - ChainId *big.Int `json:"chainId"` + ChainId uint64 `json:"chainId"` Addr common.Address `json:"addr"` Symbol string `json:"symbol"` Name string `json:"name"` } -func (c CanonicalNFT) ChainID() *big.Int { +func (c CanonicalNFT) ChainID() uint64 { return c.ChainId } diff --git a/packages/relayer/types_test.go b/packages/relayer/types_test.go index 188e528666..a8942f9094 100644 --- a/packages/relayer/types_test.go +++ b/packages/relayer/types_test.go @@ -160,13 +160,13 @@ func Test_DecodeMessageSentData(t *testing.T) { &bridge.BridgeMessageSent{ Message: bridge.IBridgeMessage{ // nolint lll - Data: common.Hex2Bytes("cb03d23c00000000000000000000000000000000000000000000000000000000000000800000000000000000000000004ec242468812b6ffc8be8ff423af7bd23108d9910000000000000000000000004ec242468812b6ffc8be8ff423af7bd23108d99100000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000007a68000000000000000000000000e4337137828c93d0046212ebda8a82a24356b67b000000000000000000000000000000000000000000000000000000000000001200000000000000000000000000000000000000000000000000000000000000a000000000000000000000000000000000000000000000000000000000000000e00000000000000000000000000000000000000000000000000000000000000004544553540000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000095465737445524332300000000000000000000000000000000000000000000000"), + Data: common.Hex2Bytes("240f6a5f000000000000000000000000000000000000000000000000000000000000008000000000000000000000000015d34aaf54267db7d7c367839aaf71a00a2c6a650000000000000000000000009965507d1a55bcc2695c58ba16fb37d819b0a4dc00000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000028c590000000000000000000000006e7cfe3fd749f6e1c53bc1065fc702eb6c22f600000000000000000000000000000000000000000000000000000000000000001200000000000000000000000000000000000000000000000000000000000000a000000000000000000000000000000000000000000000000000000000000000e00000000000000000000000000000000000000000000000000000000000000004544553540000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000095465737445524332300000000000000000000000000000000000000000000000"), }, }, EventTypeSendERC20, CanonicalERC20{ - ChainId: big.NewInt(31336), - Addr: common.HexToAddress("0xe4337137828c93D0046212ebDa8a82a24356b67B"), + ChainId: 167001, + Addr: common.HexToAddress("0x6e7cfe3fd749F6E1C53BC1065fc702eb6c22F600"), Decimals: uint8(18), Symbol: "TEST", Name: "TestERC20", diff --git a/packages/website/pages/docs/reference/contract-documentation/L2/TaikoL2.md b/packages/website/pages/docs/reference/contract-documentation/L2/TaikoL2.md index eff1b301e0..caac8c5779 100644 --- a/packages/website/pages/docs/reference/contract-documentation/L2/TaikoL2.md +++ b/packages/website/pages/docs/reference/contract-documentation/L2/TaikoL2.md @@ -251,8 +251,8 @@ Retrieves the current EIP-1559 configuration details. --- -## title: ProxiedTaikoL2 +## title: ProxiedSingletonTaikoL2 -## ProxiedTaikoL2 +## ProxiedSingletonTaikoL2 Proxied version of the TaikoL2 contract. diff --git a/packages/website/pages/docs/reference/contract-documentation/signal/SignalService.md b/packages/website/pages/docs/reference/contract-documentation/signal/SignalService.md index 97b3a0b285..166e5fd41d 100644 --- a/packages/website/pages/docs/reference/contract-documentation/signal/SignalService.md +++ b/packages/website/pages/docs/reference/contract-documentation/signal/SignalService.md @@ -147,8 +147,8 @@ Get the storage slot of the signal. --- -## title: ProxiedSignalService +## title: ProxiedSingletonSignalService -## ProxiedSignalService +## ProxiedSingletonSignalService Proxied version of the parent contract. diff --git a/packages/website/pages/docs/reference/contract-documentation/tokenvault/ERC1155Vault.md b/packages/website/pages/docs/reference/contract-documentation/tokenvault/ERC1155Vault.md index bbdd54f106..e1bf6fc40c 100644 --- a/packages/website/pages/docs/reference/contract-documentation/tokenvault/ERC1155Vault.md +++ b/packages/website/pages/docs/reference/contract-documentation/tokenvault/ERC1155Vault.md @@ -105,8 +105,8 @@ _See {IERC165-supportsInterface}._ --- -## title: ProxiedERC1155Vault +## title: ProxiedSingletonERC1155Vault -## ProxiedERC1155Vault +## ProxiedSingletonERC1155Vault Proxied version of the parent contract. diff --git a/packages/website/pages/docs/reference/contract-documentation/tokenvault/ERC721Vault.md b/packages/website/pages/docs/reference/contract-documentation/tokenvault/ERC721Vault.md index 3cdf9c1fcd..86941b31c8 100644 --- a/packages/website/pages/docs/reference/contract-documentation/tokenvault/ERC721Vault.md +++ b/packages/website/pages/docs/reference/contract-documentation/tokenvault/ERC721Vault.md @@ -86,8 +86,8 @@ This function call must use less than 30 000 gas.\_ --- -## title: ProxiedERC721Vault +## title: ProxiedSingletonERC721Vault -## ProxiedERC721Vault +## ProxiedSingletonERC721Vault Proxied version of the parent contract.

      gT+_(-Q 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%0D}&%2 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%0AyuQ!c#osCFGd8~Um?EMD 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 z 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 @7E9Cy9&1-Vo&yHGsyn|Q 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 =fcyXxwaW**q#XI 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 literal 0 HcmV?d00001 diff --git a/packages/website/public/images/protocol/ContestableZkRollup.png b/packages/website/public/images/protocol/ContestableZkRollup.png new file mode 100644 index 0000000000000000000000000000000000000000..c0f8642e47d1ca1770778a9e74b1655ce42c8434 GIT binary patch literal 2911314 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 z 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

  • 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%0D@=IP{ZM;d=cN`y}$>& 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�X9dMynJXiHzWc%pI2qxv)sVOy`%C$0 z^;wc3ReQ8XP+m%Tm)dqC_!XleMMS=G&W2BVVoP~csCtP%Y&o?dF|$*8!*tBi=3rtBE%_g`8+eoc;cugM=r>^q~gkCqLoLTo*+ zaz>kt-U~e^M>kqu1sgo<`Oxet%jM&FA1C6Xb~$~;!K-TC>U<`WM4AXz&u;^Ycx*o% zklv?3fUxjUF50U=e_j1;>rPm-!ncTqos^vscj4f7Qj4b!zo|O@Oo&t)CScnQ6h43B zT*=M7FKoO#DJ>%@w-YWLQdVKNLZ6I#Y~~jQiKvavjawh%;PQAMasKoH&&lO~x{CF; z)N}oiM3Lgx)0%`o3l>$VL6VD!UJk=GjrD%_N?(2sAf|3miy#to!iN+nY~I7C9+PP% zk?l^~ZtFbNAnaUl z*jbTwRHH+s++Uc$Pgc|!ZHzsd#N;rgHl3ZtpgOkgqPwczEVYJ{%owO%O&6rMq!gG& zi}|8{z0i|7-Tkb3x1T;}5Mpu^MrVeD3j&|UpV1jTK_*pb6mW3#V;9h`*t20B4ZPu3 z1%hf9SFb`eRi10M3YRa)1@{7TP)%Pb@BM8$d_XNC)4dx&^^h8>7}A6@9uTe3_zwH| zdzIDB(o2R%aE!y7+31)XW1v|$94UcJAl%ScP`4{L(hRX}suX!Bds0!8_`}}FFCo~$ zjPl-KiJc=q+grwFOgl;U(A!2H*`ES})ZLY6D!fhb ztG6O?TG#R>e6lgt!7nsc1xpxo|AOtkYXEY_3Ueaq+b8mbVwx~7WIuyB)?CKoN?d&k zvZi}ALNEvd6Y*H@RqsN`uj5G<-m`C>%JD#vH%rzyB#RXK74+#^l?DOx4o~jy>NKGt zmMtsKq8B9i_DnTn_<_k|N_kQE?w>1`_laaD^jQs_G%Cp~)uK{{t5McLf-dcJh)(&@Lt&4#L7RoVu-aq6(weP*8~}CrB(USNBnd17 zqu|cUK%6jzJ~B{nUL$p!J`2ojqPsbLK)UUDa;Fhol4-G=`F z9bX_G((@E^MUgauZZSW0cq%+LwQ|iDvL1sGjvsT;outhp5YcZ24*KKQFaaHwfb6S~V@QN!1%%(k z2MzG6>$qAKLQf75gf!KrG!c8|tr@4s-%^2wSWAWtVyOM-!bioR<+ptVdX-ZdW!KZ5 z-_`yrbDA0ik9mDb12ILqiN~d9Eoq<37DpIk^Utdm97Q+Ys4cg0LBkF3`@Jt`{e6n* zP8QJZ(g;(*o9^O4`u#f56GNjEN_>;(_%|HMq0q%vu&ZL|L7nfq{P?Z$7@aJ?-*x)RsL?P2_Is@i(P1ZD`nH*JYJWnq}Ei2EUoi5UXw&-v#?~49f zFbWH{=-WeAaBBCIVyVG8tAeS8n5MpVYInNw6LC+Lm$JYI+h{(DmODR0|XDv9907QWY7Dj8lbT}ABjUx zPTgUPGuOJT6HU^{>2Jr2fu~6<&O)@hzQ3+C>8v9D&gcVrznr9l%=cjvQq7v%xEw{a zwcCqS;BryiVJ`%#zuXkA*zDab&5!rT4~|i7@T z6QDxaYReq&3}9&u3&Qk3upm*R8C?+Ggl+CfbtDxYCcgnUbI-fddpOA%W_)BL$`Uy- zih_*>;+KQk?Lz*finqOyy@+!WijT$h0Z%L?+laO2RSJ!L4Mv$1lf}}q(Uo&_5#Q$v z9D9-(xOUyl#^8+xxL=1u&OToUe>RDDgp~Q8q4I1~GIL_^sqkDBodmSa!6a;YR#9HC za)ZZ+*rt~owm_8|BF4i3Jw`s^v{Ui7HVs(`@SjN>-AV3H4{KX-I~c~DB-?>KDO??P z5f$`>RiW7oqoNXP(LGyDl%%|Yt;knfV2dCJxCVg^6MIYMiKrQzx7rLy&lL7w& z$k3~hkA$X%!#hb2BG~2NePyRp;aTw@4l+&9vb`U;R&(yOX1_GU2yn~0DJ`bUm%09g_u>W;BoGsF zX0FBmN%iF~0P<&kP2Affm;$U0{>)QYA?^R zGK4s&CF39s)*MP~EUg1z!l22%i6FR7M49n;Y34oEjYiWgyVC}^wTBDrafa*(rXX+2 zwg(AOR%240-D?HUn+x!3UXNP@SqhQ8WB~0}UhC|Jv=KSK>~pvTZbU4FSwuqf($%2?2o_Sk0Pyl^wiQ1#w^xPUS(kYqDCG)%o{#t{y@tT({io zVXCej+2g`0+)VK5Kc#Fh;F?NXu}VX;R}H|rhW|`O^Y;lxooA7YoKQu@40VDDF{ns9 zL*Ch=CJsE38--Os3`6OWr$qg~*^ew66 zY=wVnHB6VKV`_YKxxJQ_dUlpg<1BF!KDGnpDih?6bSY_o(~6p`imHTvI%SK~p}5e0 zAs+wRVwK0?pAubkIEyk-N@-b=?iV&H0|1xtKE|lo>-uxZYGtXg;yY6|E3N>`4IVaT z?XTa&SB~l?Hx-Jl9(`>Xon5Ir<{%YP#AC`BC|BAZkSeY(jD)XnSw%8$S4K=c&rznB z;LTB+w{{t8&;3r9?{7fbWGMIIL-u{S2%lnr>g-6e5$;~DP056ilHl%3eUalQ?C^+x zC65<233${HUT1D{y#x{QE+U02gEA3QP zkLv>XW7pCi#r-lE|K{wPPMG}jC~G|U0ja)9>>;DG9Xm&d<=b1#W*#8nuo!tvL^*YY+y(|^t-7WiHJGM5^bVa|lBpImjb$4--$_uHY; zB)gucOfsJg2yf~Qhk4Z>z3z45c+bxAAZo|q^n2wJ1R-0M7u|DGd$MY!(jJqRyT}kE zecG5c5bWyt)c`#3638VPy+`*(d9&Dmi$ZL15I78KCC#J;-0*mmuYc(DH=Td`7LZ4V zbGK$}H_Iw5795zCZMQ23RMT>m#$Rck?ua(B8j_25bf&`thlQ>ZcHMQkjdp}aOX=&7 zSJ_woYm7l5pf`@9I+}R?@L4k?sOYr0CFI7`M>ydN@L6K*9Up>UWQ3i@Z=IQF#QQTl z;C?~P{z2V}ulnbt=G`4oa;7Mj@jjrB^ii}RtaP*}w_+pRZ84g{YA1(0GTOgQ7nrxM znJ}$MX=3vw8rI7TT`Uli?&CV&#ouuQd!cI)1L}pGaotxZCd5npdL=||) zOJX!VbzkiLFgqItj%N)L*6mFGI1O8VCKe6GSq2~tPSVZqy)z;6d2RyXT5kEWLVAlc zY48oslMl)|iZJMW^IY}fxOm>2(8MIu-}fwR(pYnw?cTgoWqky<->*NTK!fs6ZpKxH z<-AX6%^GIc8Yl1O;a24r!=-A&GkJcdE|R~!AHn%INBoM@-rK|Bc#;;{Q-$S#Ly2gB zVCe$`wX?m_>TJDS*`{c&j?9H9Gi7IdMz@PE=Dym3)~Ok?>Tu%NsOWT#dMuLT*PLO* z{F|iGQ4+mz;RU3*v=WY_Vzi!ub!{&rcSga+bNN*&Ax<)CHJWpCTFqdSLxIlioTVe4 z@;h6(^4&2K|K8*ZU10l;h}fXWoT9^Yh%o?wiUag(N&&9|J* zLii_Hg~8l{SGq}-%13jZlDD?_+%s&Ping05h%g&KPh_l|5na#4+7Dn!?9@Ac1G@@A zX3swhoO_-UcgG768cjaqigu(P1iEDELIt$xM_}^C*^PcC5B_NFIkLQ((m@pXS~tkO1=uQcWO|%Gdb6@@ zRD}k5PYWplhUl+EjXABoeMrS}oIiM=(&XG}y5<}L4dyp$yoRFFJT88trxa^RwVL3c zB3FihJyG5pWw*?n8LWQk#`PjnRN)8Cb0EfB&pXQS+6UU24c+DYYF3**f(pjzvy<@S94lq><`N% z8}H|otNj3Lubht~9@IX%0S^cX)t^04%BBL!Xt9VGN};1bq$XfpL8B~&74z5&#O6J} z-i50dK#L0J-s%eYry+10t2!_wJQR9`zrGZMoVXK_ThqC`MBK8w0Ns`kB6$^#!^1EA z$(R%dLqum7HG8EmngjS8XqnobXyBQD48t4{*@nMMTuOd=_eJ4izjdBICF=D$BGr#h zxR=Z5FLpUl%jdwBPi0R1oZRr?+b)0g#P^PD3Qy~6W<%&lSol8aIPDbi)O4Y&y&*~D z?V)GI$wyy~R#LML5%(nS(I=>7o>TpqT!8F9;@Vw3UqC^;Ueq1#$zZ$R#pqM|Xxb*~ zXdSP|CCx!vjS|=D?Qz~;;)Lh82Ukr+Gal3bX!LvTB}Sl9aYRhtQtF4cXJX|g}Gm(62+dM)c3mzaDKOmmo@qEe6-p^cII+D0D^wb0SkvlL$ zah=@!%R|U0Im9Y6w-9n%6oPeT$z}oImp8b%!Bk5l;J@bt>|GP|Ky~MVm5B4=z=}}CMD2E50JS?)w8*} z5q0TyW5&;la4Pfj;XdY7Xpx{JWBwP}P0q$-Ni_bjk2qQf(J-W5;F3DabH$hp9T)Cp z_QtakbJ$XG@Q2i%=9L*Hulf$UQ=L)PTO!ky__iJORXu`(1_#vZBx41+QJS!Bm*xT7 zqVMn(fqF)KG*r>_$T9GCOMyHeC^@dbc!BUKO+GrCY@<9pDNNX9cs$Q4srXHXcuL}X zGz5(O^Q&#bS?omzKpLM4(J+L3`F`cSRl?asXv%aG`^Z)ELELt?kA-7piT<#1%g2V1 zXu%Lzri4~HW@lR^FhD>s(?}Lj!VWD>wz;mVp7%@aj&1@8HBXMd?6KbpZz@sC8~Gy+ zZ!uGWTC+ypI;s>j_WlUQiM{D@51OF&YhAKQnqh?|2Z(|7r?iQ8selknr|m5Q)06ps}Q8^23<}S zD}-%YvEkV{ZCtqAi10vOZyxcR(2600;kRbbt#D?)Eq6lA=B>=?ZpsW1dSKN&%!RUw zJx6KX#^lEC2AJaf-9_KCB^VlD<&UfvPoU|$7qpCx7a{#X-1tB^(guvl`Wq7rf{QQf z5ueu%7utUhYYw3PVXB72#ekrYsnvyS`VILj)bNBxfG%@cozK_G_8HAD#GA`=3s$PO zx{}Er`+~XpCeLq12#*Jz@|{=4@bH{(mI2im!*V!JG|mk0OszBafzF#iq!tiov;yrM z>`AvqeEmK$DzKF{3S5KS&zVeeL$9o;D}yny3GBmza&kePqBMhjdlI!CA;!wL?JxZ! zUxYD~E_f3%A+-fO-o+m(UMI0DH26P%KgV-C9Zc7BLuF+OFbiH%_8ugLd<*_12;R4k zx5%6JI804^(UAy2!bcZuHE@d^lhdn*!2uK@_jW_>MXb+|+9s|j{N~_1>C`*>++4iV zQT);3EGqTWBksgEzpC36Hk`P}ei*tH6(L@N&8zOx3cnj!d?f4e^gRjl^mRZS-$1&H zwc-Owb@8hXEeW3fd!)`J^JVsucIoQRMdqeri6R528tNokPy&lKlV7=Vtkvyo;OqO0 za^g#WB86g|7aZK~PxC6$uxVshq8`wYCv6YPBg&g2pma_l!WAM?l%?Me_ju!)C_;kv z-*h|QWaD$zCldVIBY@xT+~W+)0W0bNHJyIb6RM|Qs8ia!gydF}vS$ocSvZ6l>=w4D zMdp{Ewbb73I8N$G)nn$&PP5c{kLob?NM$gT+F9-2@9TdU`{X!LmM2Urv)eH@^)Rx? z%R~0Q-_L52h42xv!awCkfQav8f($AA>*b?sfm`D&?9bP3e??FRefL+U?@;>7f)ff@ zEN|Hf;W@f1ws=FRWqQ!?^Ei5lic>i@_AFKJpQ$~2F6mF+mzp9kymE7MZYj7`(mg6G zyu5&i*4|pK4~Ud{rp2&)I;iaT!r)#(bncpcl!-+KiT8FDm7w(rFkpK~#(Uq}H``+I zHmgzjlN>!&7Oi8x7#En)x)lR187GTCdhGh9GaLQ)BS_lA`mg>^EfugImS8186V#tzW>4f!+l@(b-k|V^YMVjNWhe56GwTU zISMZpgoExI|G}ZSSJ5xdXbwe6_0w1+o3JTOiGq zFZ2{}Zgb6ls`r1*{rhvYB*9)615o~kXgRU8CH>}k?l8wWb?fYZakKTp%~}|lA^T-e z0_CW=X6Nszk7*tLT%aLe8%@W1myDn9!=Jpo8WEsh*HYlowg9`ngXSuY$zns=bSqbVxrqf7#ydKg6XJ z8eSc<75eX-_p=fZAbT1>P4#AP!8KJ08~MyM#N=7!k_NxD@Z7)`Y1BOrG-AD%NUhQd zp2!Ofjw#@Q{7rT5Bx!(HQf#h)ylk3|xz0JoX~awe08i1(6BASLp;w_j^=_0jov8#V zb3dN_6vM=JEt>wY4{Ta@BC1z^kh*WQOc*QD4L9e*R=oIzr+jPUxm%j3ui zYYz>9`NZPU?_ut(3Au4}J0)}Vaxu12v%eG`sx-KEoTKv2&f^z^m4H|6DzxvY>PN0s zO-%90L*SObw03Emt}Aulm;H9%AC#m`oR`I38c8-t){3-Qweo+CIJpIL5Yxwj*>#%$ z*?ROusPL^s=w1${g4G)EVcfcORL|8$(wDVft+%SyI%(v;f3bZlY$V8c*uY~g%mq%d z=0;++%3|S6KSG+=)D(IsH2wXRAD}Gi;AY`7_XhL zd;f$u&jNdr+v@+=>6eif9!%?cuKvxmNos2_K1s?3L%>Slr`WYh6Nzf`R-Crk^^-bT z4+pLfz;%Vk27Rb{0qmpH>DDU5Z>X|xZf*RW{ZXtp?@ z^RLt!5P3~j{*}Vz_s(}{03U0Zgz(kNi%vt!L4x#4jvM1V>22jy0{8o{#@IHVVPEQ7 z*+4Oav@famDu3gB}T7;>$&5Wt|#YR9njp$J+c&gIOwyi0N*$ex~Fcm z^B6o|?Hv#ZJZ#w88RQu1Sc;lR(ywS>`ym%q$=M65c1jx2Fth*Qw}r%MDV0++AhwSj z;hJ)!^`g<8dZvTYuTQxo*pB_C$Hn5T;0oiwYq30KZw&=OXOjYB*iMk$=)Ie7I(C_3 zhb${)Cv7uaHyst`{d(I`WAwkkkxY}|@8XK46;C_6SImpJXBI^GRq-1a2BImBKuq1) zV-c=79jgY|D)VkGWzi2}ZAiK_HiN4+gGDxCK#(=HmQa*&CQ+r6@hI8}6d8PUG$Ox* z27-eLra;tD&7wbvLKt~>>N8wEMVs<#{g#SS4PQJq-7hR*%}nqNhAdR~fN~`~eqd`_ z#^pXbFIEXOC{+!Rq0XTJw;c~&(uit!m2}}8{|c>d$?gj>B>A(UodiS^O_ziBKL)FP z8b4cUD!4IBD0#_Pa>eVJa@bV*5g;g%sisVA*t5=%tq{>iKePw-3uBN0=d`}7$VdHZ z)vYHX50Z0;d8D#h4av6Oe{+(`-Iw00I4>;!MU#i3yjxG!9S*m=JnNuuUB?p4zHfXu>x0%iz8%%}M%iN6*P^d}1yeax^KGvss_n@bzP zekwe8n#mN?vv4+1JosnUj+IZL1Qq$QD!l|&khqe#5ACvq>!YUC1|YW9J9kEY4?iH> zx#$P^NfXTvz^{IF-V{6Y9c5E{!PW}y#GCBM&o&~P+B`XVTuTEptKHc{beAIK%SiEr zFx`ycyO5?-TUk(6<~)CT=ux5IW8oky0AxC~Bt7)#v4-8AU?hDkd9L;hcuV7W4*LCL z#P7fv4W1m_67l}>M*SS-tN{BqIDWX-&R>g`u#nKW(pg3S`+@HJK1)?OMYVho z!<8kA4LZu099=j&1U61ZWdCH6@3!(0zorx#i5qzHu?P*$6R$FFkBgw?E0?!QREtT&JsaVy5uOB&kAzmd|G6k(XY1ya<2I$X!l&!!i38`GPC# z3>Mpbj8gw}V)Z1728xvS_MJiI$0xjEl+xq+Pl5gqorbpAl=Q&5wsL$>^7npp&-#>p zVBQpv5jjGPe!ItiOIE7XLT6b8O8q*%A2tii*Qm}EmJ8YG6TDzdtMO$}m~Wr0HS+)t z=Zhd;WeRUn%HK~Nl+Jf~%kR++?n<8B`%!aFq$;#SExgCiz+XDvZ8Md3Mg$3ajl<`W zAo<^ZX>WVjg3slU4sKji>s%;xHF(+NO|)`Q@(7|u8l|xyc$_-{l@ko&5FGv1hwVCjG(HeRFu+g zx5?_j_HrQyt0Mun1QRi@-HR!6r)3zdT~dFeUsk~mR$gd{?w_)7lb!s4zT}?^6VpFF z{EV_M6X+82w_l$H#Oz(D)K}+&_vs8;qikjjE}rvdeL6MLWBtkKn0=S< z^6jSUqJ@i92@z?IPXT(_SLJ`|K8o5|)#0z#7tbWh*4a?qM@bTYp^xrIwIb(>hKdRaf~HGS?Z^x2jFnwKKkRQM1U$EB{nlu~=!W-v z@qo!92+IPzC|f2uo2~T5M0d0}Eb>xRW8e6c%_{+2`74y$AAZF=6ETk{vYF4?SE4M{ znkn<>S8eQ-GTe~r`%1w&?c>-{&$p^xDqRWpzCNzRA2_GwnC9_&3v3^#t|< zQ5)IJ)LiU^;a+5Y{5Z(bM0$VxCTjZMN&*IWKjS=J-y})M9;7}x7;9r{;_WpdY5Ce) z{9@&F>4g@oul}DGQ-9+5B3|EsXJ15^n?)Q@_M?1o1$`$IPw$tcxih)sEto$MlC2gH zo^$eA`}wdZT|syDMNEXO?8Ob|0I?>HaLnt!ppi8ygy>?=&c>Ahv^L|RW@i3|R;QwPN!99; zQ|yXy{O2uq+u|XKl4ft>Zz6glw(c+%c2Riw4{xXs>>=-QQD!+b3O!tx1bdaCyG;*@g zD4MNcM7Ma(vhYB!;A(P_W4WUA{%q{wAq5L*sZM#tnr!OT zBx)cS5y#P^wD0Y>(J5PaqOu5h#Aw2lZ1saQ)$h0z177bBU0}uLnl$@k&(~}Ej@=kt z8+#Ln(SpG-pKTsG@fum_dew+fptKW-J6>*7-v7@3%AY!YXC@OdbwSVp~)gm7E4@98s> z4r_-xr?wl&e;)Hbt6x*IlV=ju*+NgfXa!z!eQK z{9|LE=<)>tClmaVt{>#rH^{bqS0BUD7|c~Cr|;{Km?i9J*w|O_Rc5_pOdBf$FpbAG zLD#T0-g@f&!*26`qcUn$@F6e;#cu00Bg`Oc_sb23*_y$6bdUMkH8u#EYkDWU;rH#I zG0jFk@u^Q1=>TMw^F1JZft`zDIR4wDdDy`3YRLb&Q2}bR25Z&gd$9#yFhr~W+D>R& z@Cg$^>|;&r^tOL~aHD1iBxg)ls_7* zRvu4j=DIM1_&zdMCiU?f2);_L(BI~56qJB{t(9X#RnbAbHy(LP{fL7c(v@jvo7SyB zX`)~WgUBhw6dki;G(YNnsfc@GrC8AL%w7rXXJ;mNzxfe$(S{1T`y~A?ElkCH!LB$;U zG#l~O##zNrHF{Pgww*X}m+>z47LEJYOFu8?SUp?hT=?TiBU}4V$JY~syx%VG5qn_2 zyTfreVQ;;Po02rABhnGz@1zf7o_arny%STLijrs`jHzFAP!IXMTFKvKoW#@eSk=$1j9qvIFpbkjdAjMiUP#G?w#TAJDP;HVLU} z?6>^C6|0;E?UEL9B+`F7`I^+wf@S0SqPNOehjc+e^XQ+2^BWhd_|7x5U2n1gWhx@R{604ec)DlTMyNL3+(K zPwnf$?<#-F$>36-LM9`y2f3n?(`Nna7?17g>8rA~U302B-C_-=h_8HS9G|2zd!`cQ z4Z(w6fQpN-*28gf$%l@j#_jPiU5%!9>j@j9gD+thhw#=X;N*nF4biFq9dGLKR*h`- z5%}3$naI;`BFKOac7!tY#8f9&lck|E9BJ%4Hw<8j=LK81I+ zLzfaH?IA7VH3tSE+80#JBSk%JWOwqqvV3QA@Q-_4CXAzF-f%TYAHI?VT^3_qbQ>c^A5v>rl;z`g9olAOgG=X zsqSyAR8WAoL7x0uZ=!2jpZ_^j`I_2H>q$}XBNxgX&k8o4A)CBXTsCuMHfLM#3=OM@ zeJG1fOaI<3tV-_pU$D))1YaH2gcv!$nL`hHxX^)5DOb}@1o7A%vz@vg>};6TTo%oZ361mKGoF;qxAM{LD$VBRmd>jgbj^z)X}yU&b_X6-irJCdEeu-(30salnVc}lXhaqWu3B4FNf`< z#X#Rp3%juw&#R>9^fs)g+4YboQQqqTH}8Af>=NP>cIa93*^Jd4-s8Ta zr6`+P3AmSdwg0`^qa_ick%oj_9*w)5VJwSC-t6`>nIm1?!0I)frv~IgBOj`+lNX;b zFRpMzlK5Y2KPczAWzo8u87##2O*-wHN`&08Z1v-tQHaEtE-wqQr@V6} zJiWqO=xG-rE=wo#Uy9zbuli`eESCB_u--S*KK^e`S*Tu^yboq$5%q%XMof@9G}m&;TwmFmsvO3wnj9K-h6zS2=eMx zRcsV`bTD18)fQFV&)^nVzL4yO`^$pQI=zcE%&hZ2YYi@2hq|zu?HJ^J9#)y+eCj0H zQm$&}&GW@8SoBcVl+Ai&4VVLPBA=`Q_U(QLJYLm&PZhs@LUp2qRR*kT7a@U10 zEuovHj@>F~`WHi2*D=v0KhZA~@=^?Cle%he}MpEV-@*f11cSys^5mv~&vvl2@=_ zQp}Wg2_Aj5pVF6EMTlJvj&6x#qNIyTdK-nA2VG1$?cZqMo|vPsxhhw*src?5+^%Eq zUees-DD~ZAZg^=qILFX#0q5CX6w}lvD*!-iQqwpM&oQ$~9&Y@aBHzc9sw&Z^x47Q# z1*?2F`tkuP)Q!u$i8RXBLf=%{LB*Z389o0T88;I~_-h&(4?Wo2guB2+3eh=~?dk(V2^s+q zsU@I96N&0Hk~CYpQg#28&n6Jj)n((7HsUkdH6Qj~tQ&hFKyV?`YZq1ZL0TSK5p$AP z;b44isADt3?@XS76uh70GV~yZf*@5_Vi2BNas9>qBP)DXOQ-%L`EX^x7C5YM7MW=D z;z_F!&Hc>j{?eFf`vqlH2XtZ_6DnvGN16XzPpSuL=(x==&IC+%{r=~AW*zs57^z?A zMVxPs=EYKE!LB?_-1d5+S~r-k5#7-smr)Gw-iTy zb-2geWkSPza1;s;X0uS8=AUm`y;z3O-4}hGR6+1jz((y&DqdjBHvAXmU(Jtz!lslZ39{OkWWTd~@y<)XX# zRN*E@DKvtw(!$%6Jf_dJTA$pyG^%f$2-l}o`ZJ3K*`b5BR7rd zZGvc{xWZrx`GW9q!nNA1niu=8%yyrW*j}GJCL|e4Ixjukt`!To)R5vqeI}xGteCs` z4nW;sji2VQP^ud?FQY63hm9LXyLiWNwN%~?g#hC$PonX5~c(tJj6y%`@Mf|?@aC@=Q*i{Xvy&h z5=GRKpx;eUY8{p88622etVaxCeeC4WSOPm2sDDx(AXGvc{_`M*0ZtciR&h@*_32P) zRQ5Q-c&S8V{MT~ipp zOW8Y*A7?5l<_0*MoQZ^nXFslI(VNrHw}jX37}~@KuceUBP5sUb%EwxM2u<@7QD(fh=0FpE}aEKFlc7FFW~m;~{sQiOix z#H7(}*7L>zs$LEnltOZ2Dq1v9EGUW8cZTC0Y`+%BV0jfCC`Z*Eds&U|W4S#EP9zAJ zPI2`6MBcI|tu?ZS<+px8vO>HM)Zg2R|H1d8dcR7Nh9hcYg-xOHMc($8e@W14^Zo;$ zUedQn`{oA^*sfO_WzYM_q^J=oWOFPAU8utLf~m)By{Hh~xOGP8( zk}c@Q)>FCWC3e1^F9yE!@8=crILf%!F078lm%9et_`JB^2)9OEA3Ce*Q`;BXuutG1 ze2)&0tGu0ggJU!jN_`hS40lVUOuX6Y7xR3FP#>M+QO)0}eDAFvhFsfE$&}vTrGWvT zf-n|!%C$#^Gfg+V>p<*@J5L9f3?A*7urWp_PCk(;I+lbKL0lY8!|O53s@ucob!e4{ z(IVjB=NA=6Drd=4R!X#NkrC2qVW45sY;)F4UP7`q*WY$Qd_f9u{G;l&QNmrYz`3OP zUONBHjv%djRHtXKdSJsMmTu$3|6pp6`YUDG6aji0W zuqs_@vOgzFya17W*?uq!;|VZGdJ8-pTrt>Nq3`yI1M59nT-LsDX`M%dO)iD4aj=gv zIzw;vjKkKw=6@ne0t7bl=;2@Nr&@d%PflEV^~|>gPd~a_ISz-X);x7-gAjDVfzf2< z%;4hpOTP;H<;fm@xGI!fdO=Xn%ErxtcuT&COP5ROWugT-zo-(d@-W}%MJgYee=Wq_ zI8nCLnT{N|^?YgrAicb%i`->!|0knN`a);l@M>-1+szKyuBMsY`0rGa*QZa2lRvuq z>TitJKjDN`((UJZJInX}Q@ELaOVQB9|JOy$4JqUm#hyKr=116){p*mIY>+Hrf-s+Q zd;V1ZVv*xlMMeWTM%GhmO!I$Dq*8Ytp1HC4E2#T28+i%5moC<0NJkEPm`KYNzZwh1 zjh;`;ll$2oVN*j+#Md0UOvwomj{akR`Co{lFpt*>obGyv{0o(DBkTVwRv7Ox9piWF z6A5Lg`Gb?@Y6ZQ{3OFXc7i0`hELpD8zTff6h-nXNe_wTer#(GtpYe-mXxcWHf6(n` zYSq2Yt))fWoKS>uMY*9-k7$!E7+xpxPs=;(OHNDpNARd;x=&kHF+~2RBi+r`c0&O2 zi3!#j)mgAy0Aq4-f3!X^UK?Uo*eed(!OpiG0>4s1Y;iNGeCTPBJ$HCy*(<+3UAe6v zuTySq#R9wyd{3TFtn#!MsmX6ZIJW7?B#L&j-7av?)RtpKOo%W_guFuk;-_?tjH zL)J~lrY{D9=<{!O-n@69X@ra&TDBp^LDhm4O(`OuWL&%0fLnj4`3WE=r@C-mIhn3)nQn ztiuikvzdD{!o2}QK>FBIKycv3->yFKI(7Qs>tD#bkDUH`f&q>`=XbBK_{|@%tGhMxRX7M>uMmxLfZbSs%O>e$?>kd1KE z28Z7DUA^e=b~qTf@|f~A$^WUV5V`j0!ll>j5-Gk%>PYYYQ-iQ}= zn0Kk z5zN1(YG}PuTd%JrO+>HF7)C^wfGG|8IsLWqW!P<}XmGJnFdH=ZfN(+4yn?nPG90hf zH26J~jSv(q)VO4;3u-gbFF$xKbZ50k_z{%KZRTC8motyS&y=@SL3{@4TyFdR>(Wo` z`ZBuBGq^Kubg#*lpv$f06l0b5>{bsXmWHszOs$-hGS=(qKwCq4&H2HDL|_Yyz!Djil$v#EeN zUqyS^-IjKBNG&QP$-#Vdx+x9)R{ndO_`xIbmtf6hbxMR|u#j8SBx@vqIfv7x1f59h;ncJGq8< z&ApF`lr-bM!8~jR+FDtBL!NP`D**NGzH=&&`9XSqn!6+u{3gGVxC-7KVT?JWFDwSf zaTUfhC;N^5+1%brCYNMbmrqH<>(G4_yW5w7SowZPda?X&#B4p3eE|tn@wbFC8uYBG z4BwCTd0msd-s-H9=4H4jkW#C>HldAM-iT7a&u51TS!KqLgB!Fwj#-L(9-uWco9l}| zt?UV+H82ZR%jc*L7K; zPn#I24;>{Fdc|MF8fnFv9@xy0vRpl;iPT&pT4~ zH8q#5KUpSJhJ_^`M_i7fpWwuw+{!ZD9y$^E(0E%VbVc&PuQB2c7y%t$9{OD!OHXz+ zQ1tJ;>sSXJ+~;~V;!vdd@F zDk&A^U-Irf)It{`)@qe!WnK!AlBVJ%7M@4;@bnqcOa5h% zCj7^IL3DHZWcgRn;W$0n?OL$^<3U#A!8mJGu!?ASN$a)H9oOC|xDdbgZD?>*NTBhb z@^Zg-}^FKD~pRj*kXYaHoqDSl|BTdqaO=#ALdOYg^Zb zcHReaA^oRLd7BAfaA1Gn-D)HC-NshM%xtO({|rpmhRka^EV^)nu+Da59LSip7aK&# z_tZIDv)re`PGlLb)y%U87r~C=XzjoJ+>suu+a^Wfr(TzW;|EB`Zi1#)S3I(g|6A#_ zu~RW%0yKWCuF`$kq2uDsHTKBxIZCeeU;me2;^TAf;KMV;i?s9iiUN5QMXUbOM0Uf)iDH2Q*DwRFyGd@ z6iWZ(?4@>g*U=jX$-A(i#X*b?%{@uFnduYBhUz2-B)q7d;Jo%DuraS0S((Iw#CuGolDNsj-niX!z znEICEE4)HS=!+jzhdx=%wDJv)6%w&ZpeUk#)9fWy5BFCwYuID1@Eu{2W&H!p!kXX} z5t}LMFx`>|0E-ilaQ67i2XLUrSc;0}v&$u-CJ}=QTJ&|GL*FN^V^ezHJGVM^W6z`8 zcFvN~R4{yAN|N1fkvRL8^?OvZL3h>soZmqZ2ppRi}>R7ajLx zeS-$dqebsD^ua8;2)PIGGMYym`Gz%?fy1R@l3K3Z@}v@}ghKPY%?bBqg+pR76wW^U z)W~sI;7dTjF4}90DSB~6`Kad>g5w)Z6{$r}*0eK#VqMn%#9#`p?GUS=y2K(~zT1oEXW7s=bZ-v+h#le|gYWqdG2aZ5Bv1 zT`){(B*`dBZVxX`JoBIoHPaW5dfvZ}4cU0G6Eg9ZvNu4hY%y%?t3P`Yc2=IrI1oZV z+7i*u8>l!He9dC;jSmcZrmk1U`7EQeHDVkqvAscLmFS{b*x9Sv-J>IKf69FneFU#T z5Oo^Y6{=jHT&vIYo3}+A3zHhv6uj>zrbt)Veb|p5Xt_`|PO7uIPTL638WL4jMYJ`8 zp3ePM63H*x?-<$iyD147q3cjqijKgQnZC3?*dhH_amf{^VIShQu3OWVSU5Xl zkK^Ohu_~G$NFn4mjjc`&pc;x)m{?4}b+iE& zqt0~?MuO$rP=ky}=mm#=*MgznD7OFS{lveUAFleD^)el2CMdPX1KWxMZDlL zX;si!u@bD3*&v__f6&^CzS{hO*~FnM?PFR*FB+-S&8b%t%xcsA>%g6H_QAb$B;yVyae#w7HvDZULf4% z_$OX6b2Euc-E_&5RYj<6l_6UBhs2im%LV=v+EQ2{n*VuCNn}xj!+Ik0K(%q6wWt&R{N9# z@E$KwDMNGX41l^=(F5P`oR#SB%?G{N2u-r7vuhqn?+7qOFu{e$D>4q5I{F=Qk~6%I z*zkAq+*cpbCv|M#D$XclS6Pm)o1>lM zGu@j|!^fZTbgkn4v2t3x3?Nsce7Jn+)!RGpYNL`|{IoGFcwC#Wp$qA}1?kO@!w=B6xQ|;Dwmc=-1Mi{28#YhK*O!8u zwSo@0S&axdpCs2m6|@ty`4ePBUz}l=LBllU7Xnp43qLR^IG$P;1Wi6Wg@RA`U%Rh=d7MyqC;Hj2l5&*wy z=$C9JqDAgWL*Aml$`+koGLiJkqSvI2<>Uo0#fTaVqOps_LF{fokQ2a~RKtP)B?`5o z-D%_x3GqH%d?#ixsHulxe?Js1gey_fbpr6N_#{dOD&hh{XZ&K8(ag*7+4H6_%3YYX z>lLuwORBl7s<~KGx1Em>aCw=Rf} zo|t?p!Sx*U|15wYA*6L4;wN{o&D43QP0;u)bj&s!X`V+Qh%#ZA zbcStHS3s*e-=9eVKCp+0&f-2eFcD*#nV;Z z@9e{f6?8cLIGRp^oi1*ld?{k}kHNA)c1;L1BnU0;#sRWr4FA2!5BB&R;&9PVkEL9N z0$_3cMUHL;@n(k*nMVXBzySrYgSwjVq4w=|J*`E@Me<+pkAJT!osO*wlT{NC1G^^& z_eE*J;Yp-o5UGb)+<@HdhG2=+@xyaQ)zj^E_($yX%*-5wY6rx}4>UbWnUEM84h!*7=D+#2O0_+7IbR#I#yj89H~ z<=F9p3qFIc@{Cx8zM~v`$JQ^srOKu1wp=*a0Pm!~vBzZT3t5NiRfTAes&RYuT(pmYduowf8REOh#hD2}l1ZJ0e`b=Lb| zKaM!FET=8b3TZk%Mg2zSjTxA%*a5rrV_m&9w`KP0rvZ`1(}MDhl!sBhG*VVyOU$9aE;K1xHAE(~pY+#aFd zu|Tc7@qL8Pni*hK>Z8^Gh!V4sL?Lr}WV+q05-8 z>vr(d2A8Ff47|=s5Yk6XR_;1vR7sdM&$6Q?ZpMs5CP=tRsJ2N()w{;>`Wmh+#U zph4$@xXIKUI*f7_dB94VHmo3%MdCFM+kXLuZ%ib2o4z55nGXh;+@MR27SaA+iNnbx>}Am9=OP)&2Uub1 zsn-5jMp2+|TZZhyRQrf;#4{-(_UV3c`4fFzi1hfXyu#`v|xOUSZGAu5K^vR%fy~ois zaHE5eYO=RWqcgMcBOTV^*Qz`3F<-Yv`b5lF88^$#MMG;(o2WE*5pn`4h^h%!hh4Ef6P7V-anz+ z4i(cAr!(d^Q2}~x1MjJ`qzE<2$6c)ptx=L6AM()#z_fonq3a1Hu*vJD6dNR zEXj<%*Cks^mjxT=tcHs=^no*MdHAhEbI_zvOc+Fl)9`)jzQNL`io@$cPgF0gIpGYK`*L1@No8CnO9* zY<#V4uvRN}eJjf7Yv-ShN>Xo{1d_sft80!E?>8r>j z$=P3#{JYrUygL?^Adn{ywLfdxZ*E-C3_VSXYO|PP6wE7CSVGyl*j?D`AD&WvIup?0%T2st~A;q6XehiKO-}M&AxCDWcrh$9(;9(w63jVCPqnIgNPMkR%Ad ze}Gx1%{OhSYGVER9)%4iL%h=f{0i|c=M_2Mr0vAZBCfNwo~vKJxL_qK3-fDZ<#5wf zy7T4jXGXpp#;4ETR&P&)m^_-BdSKZ;O5u1%a9A6dfAWTlCd5^^`Gol|-4fN3)lqI< zV@GEhP$m{@F1N5vbN?MqRf4j@PVq&32}Qh3eOvdq(6*MNOqSVW&enG0UHTamVXnwo zjUy>fo1gVU*_1hEk&xVmmtz%~JtJLh*l~_GuirY_q`3_#ak%1jc#>wB*L%3g^_T6S z-d#ZtYaR^Fo+AK^Fe>W9!Xkk)Rng(!)sRk9xyYEjWgneV*{V(aU(KuH?|u@yf<6?o zhnly3JnedU(4Tlze^netIO-OxE={Jv4K@z4qLTA4cS3hW{JL`Z$m=C87@TF5T0q&K z3iw=k758TyxMm)rldF{%KIEPr>wI#_Hom)u3DV{k@exi>IoiJdO4(khx_TSf!Y=K@ zso7V%@CB!miqPEuSfRaC^j!c+6xCHx|8<>? zNM`zDvZU|VRU-!w);qe?%!&kUxnEO5N^$_ixo7a=DJNk9W`Nb9P%jqqqWDcZocc0zN)7b^r)0(aCa()FjpUSX;dq+5F2Mc6%X!z z2m>sJ@l#u)$>Ox@K|K=iv2b*EO?VSuK4lEf(ulqHgS$x65Z%*J8Lp~%&{a>x%@4i9 z)#S2iM=(&szq6}Uk*_I5WroSGa@*UBj<8f`4s+lC(=LhP|?fvs`SR*;db z+hA4dLL1W8jP@3is-_t+Pku<^1l75UUO)w>Xi^$3hGx<*b5_^HgW2Z0tv6!BCu^;u zGjdwh628LXr-ubSTGLpp$*>Mz^+od8ibBU^fnBeaYRY6ReQz1P``di%)8g z6H#wXbXk@4M(Zq_=OFcWqun-C&km~U**XRE4=1)KC83!^f`R=Rpe-FglPpW>a?er) zn?J`?=DP(Bq|m38W2-F9ogXyYsE~K3Y$qb44|dK(HPEmDrNB$Dd8F1o;&=AI0{x7& z=PjhM@Aj1JW=OR<^=!b~eynF@Thc8}>vZ-Q2O!<)eB$%b%<22qT7$om1{$$@Vs|yq zf1Jcwac_bC$(sY{+#pRq*VY41xedRT8qHn%f7969Q(I7;_%mu`QaqbWD{jSF48ISa zvPFE7cf1uc%DdLG#xM)I^WSV@CU)@d#knZTO#}jE4ScS}EV*!Pzfy~Ft>|chXldB{ z)Iq@lU2s#?3NM?maQ@;&au&LnrTXUMu|bmT??qWPcP}tEP;I9EbX%mBCF2v zK`9y5)3}}uC}#jST4bRqu8070#ytmfEVQgjmUt!7$}&#(UJXr#;o|+ow_Je{K<_fT zrw4iD`?0OVayWwRjUmQQ^97&wpHTV)n6ed3UkB6I0klm7Z8I7{+sOb^D(F4*|3ged zY2#i`c5tGJq@}LH%%W&E*YsP_uOG}cEzFrMRZt{b2bWLEewBcI`rPL2K@r;}hr&&^ zWZ8bCphH+q<8`&pSC}AaJ>QNGEt^}`i<`*^GKL%Q-$Fz1liv71=b+1V3Vu_4gCMUk z#L&@vjohW?g`A@;?f@NHAw8ZUqnB)A##pjf$(dJ*9vDTB)#h;?wg(scD>RaJ>0LfQ z{K}t94T-vidY(3(HKF3^tMT;slW`uAKYisZ)dBlmmq>lVM?G2jWcP+Un^711Z_Lzx zTG#3&^f0$jDwIX6otx0Mh_-^D|Iu{r|4hICAFm{pSW(GwNu^RGhdFMfs2rA5$oWv@ zd_J>~GYOR(mxOnbW6raY^O>BFbDTNPPPWfxHN$U&Qj~WFh zs-};GjQ!SJ)|uxck%0kOCU)L1`L#X?+iUFovp%k@RXcaHqVH$*{PvBQ8aC$A7yh9V z*X2%+v>EG}jk=_6-f@Zv|K@YB}z^t-fC9^ zSSq8QvRX@^xt8*}$zu=r)hb+J+p#4?=B1uQ+1yO;NMRS(+U|}J>|U;KfbGmk-nD+M z5Or8Wa>5iBs{S4FVDwluHK0SFO2xPxG|Pw)-Wo`*_~nmpO)!N60;-xb{`Ho*N6k>- zY5B|&u;6q%)~DjDIxBJnF-PYHW7LdZc(zFbaq4uV5ES@Z`lf|WI=I@u%URkudNZ$O z#2x&sFPkI-mC$AezHE4?3iE5;boWchp;WwH&B&3S%*762>4zC&gs;?K3fn;jDB|*9 z$TTHd#+J=H&T@te8_z$&i?_}IMqF9(cN*O1RGLw#8PY3W?1k+1tfQ|0lB(#QZ`h8u zdFY9!VUjYYqkXvc4f`}>iCmwdSLT5nuUK3s+=3jjq9LH^K9~ayzocwMhkd6HBxebe zNR82Eo@;~n2|w$|8I5!?LWp{&S@QN{zS^C`+cu~u5ht*pSyxil4x5ewYH zsGp3$buYh|TT=B|NZ6gVhOtf~se7XXSUlLhUm&A37<~6<=&_7?>PmQ&RoRG2c*YST zXRr^{#lZDo!!A7TG3#g0R!w`kYND2`ncWvt01l&&mQM|@e=D~s0m(ZIPknjv1QOKN zyRVkQiP3%?x{j^x&2l4TO^lec7O~{>zL27gxnJ$56|d!ZnST}jaq#33Sng!31zuA` zZ%Yzb6%uawjbo`D%UF|PCJ}u%+2%rC*ty-bIz;Z^o%*Ctrl&ufBr0ws+deSKk@Nlps^++Fu;l;_ z{idXN4mW*GKA^c_$1Ym%F&_&xasvaY*YPmuvQC}j@fHFTTn*g6m+5N9bLC4lh%9~@ z_{zt-b~RdU#Al;>Tn8lRYoTTd@)Rl5&I@f6%`NxX4l-8Pxc= zXI0_DYouJ4LMd(L`tnIyZ<(k)>#CSfO5k3% z;0nQhQ7CZ4M-RU6a;2~=k~CfPVqMnRRl9c2M6SyX%1A2D{6v!6z@Lx`h#N}&eg{V1 zmgO@c67v7P`s%4R99fWA%@{2dekay3WS_Y|tQxUHwrXq@4w{%f-^Hh|hi>=@0q1gB znA}7fA79+o*<75mKha3iL9f~zIb~}neDSEk^@o~i#QAS~hVpZh-rh}*|1clG!;6tP zf3KPr*l1w2=ZWI~9-G{Gx%eel+neiU$k*GVgHo1rqyBc4`t}!R`yYBk|E1F9W0R1Y z6P)Yr^*8iH4Q@fE}MN0qqIjw=dil zR$Oe!DpLe9(zK>8eJ&E6Os#^{9Mc(34m=jaj(6X>$nxhPywc!J61zV8?S_SiHeMkn zN+$ndet13hfNX7_Y766R3~@zM_1ShaXbytxv*)9@=U!!C2lm{L$$$#?QPr6i`hu^9 zKH&VzuQfW?_KURmX^W2;GSm)_sfsw;$f;6Jbsr9fATieVYVuci!@xItTZhFg!QTWY zHM!h9DjQ`eTEn|O=|4VlBCp`yJt%$K2U8q6X?~{U)X_gJyWNXM5^X#zZ0n_$|G{`! z3Jfo?KzOng-ZuTic^~};vBH5ia?n+7sgQfUP9Sfx?x0I;R{4=(Juw?(2z`VrbRThc zNMg$~riUXJKC5%oSCQO)LbOWIqFXRZOAbZQ!Ssp?Nuo5xdSgm8pHy&KoLRF|vyA)@+!e+#inT~RTrc)jg3TocO3LahXC5{y-38OLo4E)>OyO1=i z2)!~RMDK+#=KCL<)k$?yBBu9&6HtOLD1Y&V`>?;uno7e;iP~cN;2#4uMs0;5&^^Y~ z8DDttoqcf?GvU^~lN-sXQ|YtRQuQyB&wb=RafWK_$Q}s@XfIJ~ zAH?>*bv=s;VJX%ZWLVdT!I+qss+KtPut^aYwR?B}Tduz+et|hoI{_stfAvL28 z4qPw^e1OW5*yjO1l&MiO-Cn$<5`AE39J=H5W|`WeZnf-gHfZcHQ^xL%jyf@9kNL-A z8}!0#V=V>Y8MpLbycASZVGLo7UAC6d`N?%ciBZ%#_T-cHNA?}vx``s85weM!h9s3( zz+bjeBc9lY-iI((8d%%_?G39*+?K7-F_Fm;M!g~0*1S16~yjdE!4ADaU1(oP2}yl<7*DGh-%$_8&$Qv z5lZ4U^U-QoT8f+!V!Km@D8>37jQIOs7DadvaA;H*Q7;U7Ks}nb))E4K`wG#AVj4Hb6sk8%7G9|5iv@Iy znSVJj(!&|bbt8j0i{(%>Ehn=MD? z2XjWBUPK?jycupP2e`qi@Vl5x+!8kzJ83A<~hutJ3~ z_@Mh?LvzTEmb4=;Thk#9mm7ZZ%E18_OonWfWW6Esa3ictjngMYr-6IBe#A9O^NAnC zk!1!e1_?ihpaL!2wa|1P>C(#|1vcecqRRH!az>kT_mRm}yZ^ZXWo1TE2D#sMXu2!L zwagq(_JkOuyl7wqbIDM3v@NooKdVwdR6>J#7lOsW05TarUr*KwLd@S7kXFn#LpV+3 z-wl}h0QA}v>C_`Xj8dS9HcN6}0K#Ut#Q_{@M;P9?8?b7sw9kvE8i8T>M*bE*v+QMPU%KiIoKO>d&!MOlyPQ#&)uRTy~jhN*2! z5h92hEx0DLQXhVCrs9reHfBrjM)Mw~YFKh!>ky=B_$bvZ%z)OxNQ(uaWqV8bFoU0i znyu(T9u;0W>KGPzRc)!e@$ojosc}f{OC*uMc5OLbcuYiTHMHS<444ZQ$qr^;V39mM z+(n7iVSjBc*W=2<@F%RiAL336(-MlgLcPCnIkhnH9d;LFUEjSx%=)B*29j?|-9QRw zhRDkP3-lPlFh;mg3AxGs!S63SHtt zyDt$n-@L!jUwkl;*5hh@KeVbo|<{DDi*>oXTzT_S-`y=}8!U;Fu=;2VMM zRUs7_-7ULq*Rf^rqe0PORiV$0gnfpskHkc3#q_TN(+c87v33)RRiQ!4E~|ZqL=a4}yr_(V<_mO8bV5Szot#9TrBx zbba=&dckFjEz|R0UURI*`A)(R_`r@^-)~uXk0xkr&0BU zXGcMn4?#O+NgUA;zGZr4LVh_rZOc0J@ebnAVj%%;*!>`qJlra2v-f2o&gzqNCO(Z5 z%c{#*_@jOAljCsLbB;pB$!#=g0q5ixvni;Bxz6@H{()FwNCubBXM43yoAbZI3pVW? z;J}Yg@+{;5!g-_s9l@ z^R+(zU4$5HV_Tk_!NjpSDzz?G+W!mT-X+N$kauP5bJ@SKaS5k`f^`Fzv-9faG!uy9r(Py4x{$x4U2m# z+?H^fC$ootvb~Fp5Kbi(DR{RI4641iPQ(2))Bh3u*Eg;tDLY!ZMx2`gX+s8b9@4`G z%ojtqFEN)GsdM3(c3>Lal=5j}1Tmzb*nUYF3jc(2$o(EL4(BjZUtvUq#qb9#xrajT zzR?;?WxU0mH$l^GD%#w>@}*F_ZRqxdAHALpEJCt|n{zE1m9Qdu6l+-+q~@>LskLDD zAKDkyYKKp{AGXi3lM)vO0funStRtG>=^gHnglyQWOyVV6Hb((W+km z*U`oBuN>_Riv$LRqex(r_G;>>GF~xVIl>jaos~7WTXOY(=L)Y>b#;#|tiB-TvYTp@ zc|=0)*yEJ7!#YRCVsV$fwSBTK%pE@v?#uk;=4XyNhn@Jwcz>j>FBtM8{7u$J=B%)7 z24PYYdAOKI<9)vR+0>mMhNxU^0P?Op1cT@@s+$|y#>LdC1 z1Hafh0uPwJAshM23%|-v3@kneJ)xt#*N;uApT591= za9Whltb?=7!;8?uI|T^hLDw^I|EQW(oj5KbWRwV(*r#EbF)~4fC?q{F>_~3<{M`g; zb59fPT;9IbTj~s_d;yEkcaFU-51)QG4(F9S$H@4V3~`e~1l^k}@}k>zKzH0>M(0Pp z&akkH&qE7!bIs40)CfRUZo)HQCKLd=*O9$xQx#Be3)_KtETo@$;}3!0i<>k*QA&Zi zfHviYrGzEP1y+ujbWNsY_OrY!8Ft%_S53W`<=4B!fBiR1iB(BM-G7xC9#0oWoydOP z5*}Z>lp4rJEC+oZa`OA^jpdu|9cFOE2e(5^ks>`dkaJh_-5P@TnDF`Rmxavotj4q` zl-FsD{*B?)Z9UK1ui9yUYc8`(u?%mSz79HbQ_C5W$EF-R&h6^1|NPNYf zciPc&=>k^!`;hhKp!!UBD6v@=xY0ZZkLVT(KE*~w2CCy-qz0%(DR1__xh0Q;T~kZA zQ?787HS*A!{3$@A(Ua#cd9M+kJ=y<=BpF|H4aO za%=clAKZ?5QoA7pyHI<^3FKA5X<6!)+dYWPdVBreyKU{#?b2qkZ9NiomgfYjkC)hJd--)Mp1jQ~L(Q#l2Cz=|6h^U2V zUjbovkJ9aozkSaP%i5>uE)W5^u3!FaZw44TjFyfCmu?o}+4^|@T%KH0_7C=uqy;&R zyjUCog^W0eF(S zP6d!ClOKb%cdz@=IO#CZ2$UGGXE@_lLXfQXQwd{~HAh&%iLPf>yxcvyBtNx5mzvAc zlY!Jazy8@V zZw?};o0^tqlv{b?I~@2N$j11$I!JFeLuy}t*q*1aZNPm~+T%Ofmv<|Nlokt*Q2HK>own@JUl$L$lZ)rd_?L}>`QzwRBke-kK zS45pI5CjnWRvwc;)!^Lw0222_g9g9Cp{kEWl#;(eyLLax@bB_G{VjT$MV5o1Tg~4r zIo!=zFzyPY;_`YYkwZGl02O7u~ zgpC0X_saJGMj&n!jFv?gN+LBFWy2}V$TEi0c+Ukdl=m%J8D7-9qk7`)4J*ne6TPU< zVe5#ob89NU^}~ydNEEw0k*~Q)U-IbdQvoZ_XP$V;F0iXKXyxw? zbOHQYBBGPdh$bSrYRG)aiMhy`#!!0BJZ*1b6HFHF5c?9u#XW+T>KGW@e4o%k{1R}p* zOS(T z2t1*_fAsSZV7if7#gH>31=|0uV(*9A3B0c6!;06}iKu@5Jl7)L4m4Wj7oX`J+RnX9 zL-5sSdOPP+FoZCl_ZpvWaSa<5-f{q<1Hz)qudIH?_#iTRDK9(;*{~|nnRx#Ez}Rv_ zgSBIu;RZFKm2lNL4iGqkisHt^Oq*`1Xw+ zkFRO5@IjYYFu3Z?qiEOv&h=a)1yG~FK6`Jb^ISoKUfb!zn4&bS#O3@f-&FC?OXk0K zqq~m9^^0#zq?M#0TXin*eA(F3+%Di+NzqxJylQ58?K}Q1t;@+=BfBJO)!p!T&U1mq zQ?UJS?~+x;Pc%OHc0nEkhqs8L@!+{ZoC-#@{0Hz2!FQ5Zkx@z^Trs&zP%%_@j|W-_p6iM6LLjBSx=kWd%+;tnE){h%sNO9& z#Zbx^eTT~{*~IO%Paw76+xJ}FLwB$C>f&)vDh-Bof)MnDcZCC{8Z-pUVz+b_n5;zy1r{x-S2ePzomvzo>m?*uO4S z(kd#nS^a%;`qVoVZ>@omy2<;iwo`@^57_uQx@Z)MI~UDF_01th#x*>DHBq9>XA9#LVyaZUTwtohvsM`ynlCO12q zwXdD=Odu!Jt4ysl@%s7lI^B(xL3BZB=+Lmn#Q?I2Z zQKOe|0He=>2yuL!dG7i|Og3UZsP=bzL#rGmR}G~Yt0!Uo^N;(gqO z(DSXG%~1Q)oX7z=58X8*CPh*$msM?W`S?0nEQVi&-m00+)QaKumy6t%d|}U1PnWQ8 zzpi_)O`!!%0hg3AEpA@b?gX%TIC_&9WANIipoB z+3#)&*TG8nqCR(&2weqG6!?_er=A?%EvT~b-Kdw+wFCc(gft72&c(*(ceWv1Cg5VW z`+9jdjW-p#4>`ed$yfAyA{9v&r2j69>m2B%Icv>m4Cs&I6gE-w-&Tzp=u>qZA0gmn0UZT8|NU;Iz)9Yz$ zUFpu=OAGUQ*2dAC-_?NhRn;pn&*g`aAU})hp)vJu(ui=52q3f6?&Am5E z!!c@Cw0GuiM9%JywGA8d8&6z!(O~RXCjESKFv z(Z8I0d!&{7CJIzi%<}dgCaq&AFn;FS;8Mcpw^|l!@D{j?nW;NV>03(JP7@PgH&eObtA$d2otZ8dnV_=As z1@ilq0!fJWmLVObwxz;Yk^p3WQ-o$i^K~qn@}ENolEW=Py;!x6W4WGBdYBcnw zrN(+j^4RVm28tx4DRZ!(PcLq$S8=1njkAHZ&XvQLVdU==ofS+uxvivF&{PI93A8?_ zW?GQ z81+#3&*{w7;m7W0>%%MmzEd0!w1H>I+pO*@zL2dnwem$d7Il~KJd%dmks8G#FKXTE z!>8W$kpQ*c{UaP35&Bi(%44SC4R!Jfqc8Okw9QU20(&vUi^oXk9vk0=wdIhAy^Q1nr9&1G{A?`GXsiq~l) zCE>d+=)BD%t#8JXL?DoX8b?p_)6UEMQHfW6r9g)5(co+6MQbm)-U_I#pE+@Cu(tj% zPhoyHd_7I!^+~F_GO3ZUvYv8rzRy<$+bh%hdTY0EuU!V2I=hZF`iX_6RC9Pi2F2wj zj-47__KyFS%(R(7%Q-!ef(^Jx%ZtQIAvYeNccV2Nqs!(l^ZnqsE){nEQFkZ*Zgt~& z2<4l~{l(zjy9dOF6Ex)vg;L%KS_cnf_o%j|Fjq$6TW5*GkzRB0dxZ~ZpK5&*>%T^j z9D~hcNpPNu)@K1tk#E?F2S(xt^xsJj7TV%9=a+aw(-%J9V4WzF6cZj<={8^98Af2M z?c`3C>fcEe43|6qond61egheI`&%bG!eIu#A=@(YCpzo)ZsU!ZQpSEh$C)HCn6?Go!euwPhUXoEty!Fh4HsNY@us$}UY@i-eJIb=_A)CELmr849` zoy+P164F-uhPP0$sbwx?;eILGj5ej;xek#2)YM;Ikwcsz{ni&hsn9@%f6;SK6EQ92 z{rG}?j>C31uUkR?n(&$aF`H85TWY^?nqm#6E7}o4ZDIR=)J-b?U6AgZN*w5%l9FEr zGS!bQo8H01C@*ZQHXWNWKliFg3+7l8Op;iDCM|6sC`e`5h2@jQohMJ!?4>A!w&|v9 z2pk@5LLS!kKq!=kU)4ibOs$=8rG57A&p-H z^uh*cMtQ|E@-)l|mr$Va)h0HFR&nXllzA60F6k+JdCy-(yB6WCQj-UazZH<{Dta0J zHq@SSHbxm`zaZndaf+g{d{f~5sBcYm;2L~W*d~{ERhqq~ZSG84Hp2IC;Wr>=4hehV z{S;PCPjiiSUG5$pD`~#97>)T3+$MeeoO^tJRgfvPsO;ma(mkBra3t^VbTss@o7bq6 z@q-hUiW36k9T7ay{C6`(!OBzOkZJYFK|b{K>{nxD5|(1Mc;WWTmC`9UDo+EBFQgV1 zg}XOS%+*&%@^N5JhL{GuT*zRFydr6NdfcuORL9p&8A$gK6IqurKP`y&0ISl;_@1=5 zum&w=Ik@FwIhUsOmsab>ptsY3=~t^rrOND(@fL28_|{qDB@jF2+TZrq$5`O0l2VaZDG4oJPS4c`9psqy$8xd5Q>#uY4} z{8Pk5%EzDV8HCV(BLCUh7{+Wm@EmmZ2fypOsCqn^=etgfiUX#cIw>CftM4bASdq-- z3hjFJhrsAu2~vyQrzA>90VGcfiyA8cUP0!r6psCap5<2)4YU9&=Jc#NNTBZ+m!~8b zxbgn&Q!4E$5N0H#^iow0b`Zj{$lGZ%RS^Dn%nLL6GHV-%>tjPs@-i> z#AZv`Kb}tMK#dWHLcRD)gLkyxDHqDbhMo<&2RH&$eQ2c*w89kmXjDu}MSGuQ{ebZO z8d8x;tjer4m-wE(zXhYzPQaKYAFovivtiFjB zIWL&ejX)QQ#lHaE5Yv4baQ0K#&(=~I%wmF=-{r@Hj$K@gC+F<%_^p3TqQefRNv8U6 zw_8i;B}*D%LOw16N-Bkqn+A*l)Fo?U$kGb59=9<_wDh@vYRb6oMU< z@!{35IJjTQp( z%nF?ucmNO6`%=r+s@%h?#T{2~%)9+aZWO`T-#GK2&mVkADUyZXV22D8xxEfuTQ*^E zv0sCUdt*!kfe?yYDQ58W`h3zewttxUwF{e0+=2gvd8)G#9GJu`T*OL$W|7CTR@nn% zrpsO$_?S*d58u0S6hU`FIIjL=9{dH6g%M+A?Iz*59Nf{0mi=nV3SQH}l}Sz0#G%K3 zSmi8`lkK~l#PMl{9^w5Ct^Zfd9pz(#1Awqufb`16g?dJp%G&BKv(p&=ahISFNEvt% zQCVFO>f$jyC~BzI9qQBalit^~&bdx~pYl+e;Y>l6GCquygl+;G+(`Vqyjqj97~|Q{ z?$RHZ>8!lK98~vWM%pF`Lw_~@$9*!SH1eAJu`S~HpDT9zystibhhvp=)=#RLu50qT zg{(}kV>i8sA+g)|uk($@J+H!|YlL@Qd_EtWRRumOjELHQvr@;1G|BB=UZ2eUvfU<= zJ4)EsK$ZkuSN_$6t$N2^S6bOzv*uD~Y)z(ObYxfCO4As8y=sd%5uqOzykX>h{yFnAX-zOyH+NNG+*10C}x@1cV~q$0x888EufRe9 z#3%EapL^nlO*K$XfMUpum2Ug0mRDQcyXwzg>Q4&Tsn?`@jQc=)5=JhiG4vK+0@Bji zIqP~8C+3#6pIQXXQMX%If2~Y-SCW_UU_~x1 zKWHK}uDe^vHkrM8tUjB$(H68R!|FBkx@y*g*o@T4mfl&kb$etrARVM0;Jk0{&KpFA zuQ|pam3@sg_kVZK`}viapNmen0_mHxvfTG*+}OKYfDHKfYp*`4bWl6>=|#=VVKqLK zWD+4Y`&Z?plX-Qv*L;0IpnPTI4&+8xm4&=|WAfJaE&_%1jo z8L*XZNq;rB-bhVm{of0b%a>l3%ZUJ$4w) zy20V-HHeB%)a>zIn6xaP99o%h8$#!bsd254M~dwOPW1FLJ|M zND3g#NaBt}^apWv_Sb|x7ws&St^EdhAO`}Ye6+2zhh&OysFm%;8$C-GqPs5Sy1cv^ z9{dch@kk`%>9cws0^VQ{Sv0*Ips0n9AI6UVe;0rXUY1(A-@N(?q~xW1qjiKgXp#$~ zYm$NYD8JOG18k8=v$5ZRqIvnidGXx$?7$wF5>L>^qMK!w(xhTYhO2Ed3!iBL120>2 zIbYU-k(}=zqm*BGxsjmGjJ5Fh&dKJ6aE80?o!$*mVDz7EkurRi(ApF%z^%VfTNBrp z`9AC_RqN00G43<84h@gigK^A*ShwZN(B*Ht+W@&ABW#w;mUjkL!r(JCYw4;*4(u~J#owcW^X6_G;`-P<_2P`j#{Du^h8Y*yA5b^s+3_*)2 zOmMo=D4rA++%;Eh)@(d^{nwLJ^V9-KkALrMtFn%^s@|x|+V^Sjb-j9brbU3DE3i=5 zdGMc*`JC$ED2eCMmTM3gfb71JL^t2E?d56#zd9|4`u7kb59-H_ntOLKDy+!o2p@tE z{gFpea9jXv?q(^z`+60)TCn-a`E2q?@~2)D?X7ud*kHVim+RJ>eyfKds9&MPNy1x+ zjmz*br*lo(chAemiK#IfyEtW-N7o%A`ArhZIrSHCZz5IsM;_YBK&zJ+c$iYz&w@^O z_wSYxxf~Tk=Mm|M8-jygaV^Qg-jF|E@k}c{Wu{brkCE#gP?RF(tk#wTp?Kqp=3lmA zr4{H~mu6KlZOA3IDfW3*m85Aq2&yhR$w+mMo}D!3%T=eWc{D-VnxjDIlVyuJscg3a z?S+UDl>f}KF^6{`|8e9(vVZ>C+heCcxOt~cCeCH0dEe;`&H>fF8IEMWtW2}AbY+3g zsch-TIzWvM5xTe5_$Wq$M^0PzRlWhU@#3H;T zvG?Z|VS-*KM{1(W(ANK=lw@UA$QR6` z+3xwKmr3;lHHzfrw`9#${Z9-h+TF4*$+p%j8TeZQma0bxM~SB!n&fGMRdNG`X131(6{YFRnM@py-gM zc9)Yyb!f(jiiqeny-bWy)zg@>C}LKKeupYP57>y$y>jMYvscu*PoM}8i|yvbwdq*8 z$Cgp#M-aZ08_y8GfX`Jy%licgy@#v{>{f5sir|K$94QoHY5zCDe+Gfa`BTqv2-G5w z3@^~qERP9!uKd<~5qssC-C;R7A%&R#_JlrY@BPa#s$rJ9)sLBtD}N$O(RGpUR|OR^ zr5ldAiDj@C3na7TLJ{siI49P@{Tn~!TPHftRsA=A+RZmYT0|qsp{m!NX?Fg(Q)(A;tXSBW0d0+)mAUKdU$!cDan-)C%9Ec|9MZ#(Hk@Y!aq#4t?q9{^9tA}qu=~hO@<6T zgWOdiYWl>q)GF7FEglLv8a{WWOhNNy?r=5Gf`L1w0X0GNhhQaXn0^OV ziyZdHp8V7MPWirg6BCb2-P$4|KtA7})~xr>Jud|9_ArU#FUsn5v z&kG~rX57dDRi|nF^kbNoTIi;+&5jQz1|4aYSaev=_**7pqG~7#>Qp||A$e?9)F7-Q zO^$~tWVt>ZUejtu&B-L3L*LKJH$qN_|0{td-GEZ0>|b!T z#h^T?hg;X;zv+f#v9!%ZH^`nVewc2>7p@y(j|rvd z@Rpz!<1l+Ks>xy=50KYhV%M30b&CZ64h$xVG%(_OVIUl_ALmm5?G@m)(|Xfz8NQ_> zhE(cKHdMerVcAF!QNiL=8LRL+gE5f1ZXY2#5nC+Df9RjEyk7V3l^uh$4sfq8CRny(k8ziDt|yvV+`S#>K6#j1fO22;z1Y`F%$l z2kFPZkHIGK9|xCeLH0gk%q5VT+Q?`0S*B4DzdvCr#s&7#siJ=fjk_*$|^*p15_0pQoRNo7UzXGSZyGGwRn>c1}+@kVHZ*)N$N3Y+#lGw z%XfdzGtwPPIb?hRVx4zwEx_?}d#Tf9m}`n-H|_L#tmQUr5^TPUIlo5*NP=ZbiHOjHUdC8izu zvp(XiXp2C@lCE^6WwPJeU4k-JX1-(aMQ)2fG+?#9SmtTgw%FB)99SA9iz}h(J4J#e zP~0VFdvNo7fljhGu)6^gB;3-*YakRoaX@L>A>Rjtgx<;qyIcKHPiMi`z!n}OxNq;e zTwOd4u1|Y^DK7Je=hdqs5RNr$2Xyrv4i&Qg&Y51o zSFXDy@H%fdI#?rrvnkqz;*Q9NZM4qRQ!nNDG#y&UCxa_h1M2AKMC18oi$Q3T!(RT& z>GXft{e8?rr%c1p6u4=BnlZT(BX<*F;Zk`zD2R_;8!S$nI_pme(zstzW1NIdT*LoW zv#4@kpl6qn5cFhr4ra7Qb4ISdYf&wdNvwnCSpWJE{>h4EG5BJ0%}fIj(`Xg|*a=F*~y2ksgl_k7$tvF<99k9LcfuvS zAf~}x{FC?+k97NrD0O($(<5u|{G-J4z%7fb=5;pKPrxsZ!61Tvu@gp-`H`vyxIby&z)o{@9G9kjrxthD)6@J8$oFnSZSAtbmKhD^OWrL)xcI`{Dlo z^6f?K1hb#oaGOMqYX6LrpOr%8+RHllXz@>{=0*IwJV2>JZVHL;Iyj!Nez%6o+7L^OyO}!y1opD8Nf1BN_j4Vy z*)4h9rN%4Td&7v8=Njv!HNDBWsTcPfk`?c#)s3v8bvA2C-^Zitvodc*9DG$2wTT?G!UOYwVt|H;@8@30MmZ# zo;h9)50%(tK<-IC`K+e{Z8}=%hH51x;l5qoT}-1{`=69kdmYmMPR+ITvDK~Hn3&WL z-M671ijrAkqE*NaZML(TgE~-TM;21Orrbc@eQN1~)%onk$Vdh!=m!~c(S8Z?RrzJJoXX1HPDa!xoJxg^BV==|Z0FdLoyvBSaw>a= z!y#F5?7io)$2rG1=Q!i*m+!yue%#mfxZl_Px}MK$>Y)$(X&x(L^GU|W0CpEgPL;@& zOvc(FPxB1>5`e_wBD!c=Iql8L%xi5p|K!Sh1?%u}jbC6u9q9%KeB@1#U!geU{t*T4XRklQC3w+aPq{VG_DX zQgkjyaN^7Q49MT%g|j~7z&m?y6O5VX1cZLb=~`RwY$<3cY*x_nZaV6ItC0$&%~3-R z2`sM&;o_K@=XvaW4NpT?-I^}SR+M6XzqU4h6Fc0#(VzA2`iv6aD8o*LuMdDXGT6cV z+mZ~RbasNH^7~s~9|)vCcGFB&2}$UGqMpPT0vYNPp<3sE^^h>X9fpKL>T~F~$LW^> zvS*79&92HL=;p)ap`3X0BDzO`T4QQ@66}jtXpu3eXzZUo0v3h zrh(NN?tmZ{(O~NgHQFARNKBn<@_dL_>~h@bhISsC1@x+VJ!=`gj#`MZ1&1;VaBlhD zhm>~7!x){PwyKvQCVM|lQ!TEl z3GN&CrK!Y8EgEAYNpkg_CqMPM*7^68z_+uR8{IdeRC^|!G}nTcu?ECz4Q(n5vky6w zEI+N4nYK&NdJw)hA!uivv;C`JOwDm{2&nkz%oFP;<0~r}>+%r|4QEj?q;FA@ccgrL z?SZG14@$Pi2URkJ6K2S^=iETOrM2LF=IzNb^%Xoj^6b`IRX4*81nKAXp=?NgCWC1T zO^XdY`h*E;8xGNzM#VU4g;d-@-baiDEy#5yH-PUfNjuGL>xx&%AT}4TcC8CKd&kMV zJtwK@XK$RK1Yz+%MrI<*DnZslmZg|cp5`vz2d~@w2M#*;5C-F45S2llH!*>0;J^;L zNzUSB2sAdo=V=K<+kr9Md~eI+9kAJO?!-iBC2AZreX!T!Xe@mpI{X0_eSQCz7k{1> z{i7IGbdf*ls3IJ3^XvYnPdnaCp(nA()w=l#*n;bLZ!UcYJbnDe+ARkoTyGgT0hle4Igr5}hIq!mA&xWV*hNo|Xx>Vu-TRZYbxs2}&T2yQXn>LsYK zZPKrW@SB2_Ils0TT-#n5dk^oD2TNPsf!xl?YYACx{(Jx6bg7!X#>xh)#q;|}h}$Y? zeez6Ht1iGhO2A?B1yH4bB(dZEK7ohgf4*A_E;F~TL)*c&wxqR-+=RC-pRT8s4k8s7 zz^BoQ0r#c^#45tQ6G*-upuiM?QYSywdWr~&EHIP04n5Ytj1**HTfqHYKMg;O^8?|g z3{En)hiZ99?7iTqm7|_+(Is=^zS^zJD#`&7b==ChXIqb*ap@O(N*POzwp$b~tpr|% zqkK?6IQ+oOTpmB%C2Jg;0jX#DPH*YaXX~$}Wwu7)`A~#Lf*plh$Sb z0J5wg?IF3P0ghj$p0nn@73g`|ulcVY64{Qt$zGhz8jg7we|mzzM6l;IiGzMWxKgEt z@{TF0)ru1tgQQEvFO1t&@R(ts3^7dk?8ZCcyRer*A}y*%bW7&<1#ysO>qdh|qiNkO z9lnFZN8q|~t(i~qo};fbtfVs()*XH!I0Wxf%8*(V|5KsaS?i`~3>~T3;K+3D9ZPj7W(b70;vGx=LY*mo8LP=> zo|B4%d;cVV(_mTH?9W~P$9{;v6x)9W)ZY_d+WmTV9^8G7KDORsEv;g9DI1C~dg-S^ zGx?$QknyIpX`Oj{m2%;bK~kgD(e)7ag%(gia7ZFD4y-aygDp#={j~N=@X7SZU+AAV zcKRbsp!81$ylFOKCV|8zD2EvhO3O#!U+2(B=fGT#a~UgTos4#_lz;zjBv4EHKgMrl za$+&ZNZ;bRmN9iUroQL)xp}j|Oa8!-r}`(mBLMWN^ENg~IX+-lD0{`I-6sh@N;H%knI=KAu za(3w4C<6Xpat3Xi`0v=BY=vtxUf%MRJeh62b|UINmt$&MhaCW+kgV3=|Ni8 z8#cK~(+m|+aYyT4jNlejZQSmPi*oApyhEawulx)1uHjJkz$wY;S+YEE3xta))nbx5 zG`_gr-3&(jq!0F?mH+N?zBD)t$5J;^q?059n`LwPegb11=#CUp7QI`Hd$4_vg`==i zPv~;GP=8Ioy|lOcmX_!i@x<{B{2yko$XicaD_FDXGB>0Zq{?^YJ`VzsEgY{b$DhRn@yU&u_r;raa&sMt zvt_z{ytOWTKf3hoy#;nFNLf8O){nN*I_IG2YbDWdCyRMg1&qHN(cBl;cW0p)>yqYn zX@=ALC|}g*(--G^p~Zlfi@uWs*ma=j-eQv~WcU%U5%rovrTw#emaiR-RYQMs&gU6^ z2vDi{V>m{91VJ6_EBTPzU-!ATW9ydr=amlU9t5`kqVuZw82R~<28XFSmx3#;A{OKe zH_p?<8@q;AF3tR{*XDlz&6Uf%{#Q8E=!|*QxAATt;;Bd>-2DUR+)1!Rh|c~pI{@=e zxJmu^eM6DdOKly1$GKVYjAD0>2))W*T)@}7%ONgwRs-%PonSkyVS(gKyGBiS;JMZ{ zXWidodbP`)*N#&&b8O^i?NR5oz6JaIx$&zTc75FPm-N}SFr7$36J4@82-j_h1dNK`G)Xifdz$&q5{Zn?ocz4he5YP;M8?S)?E=U@X9pLo%N~W zr#|!T*JFA=c{ERUxisvLJE%Xr`O1L!@aot7ef9v3^u70SsIk3$XD?M1S5m5fuk(|x zs_QB7+I>L8GCSeY4oU}2dXU9A5i30-;=g>#wEC&6GkBPE7g!X4Pw;jJWZCPOXuzMOCE7lW$z4A@8XKR{ojE`n$jtqPKa*-FQ1F-5RE& zQ8^JjFx*P0bEPxIW1DsFXxTaa(vh}P@*-LaU)c+xO34KOacy~2=wD^T1)sA_t(V;3 z``(^p^c{5TlxtlS(El&`h$p}1x2lghe6QM$g9alj8CnNO>;+br&DB$ny!2i!d^MUftx%XV|! zl%H{#uC#uKPLtMIbSUXMVri@pIX7QF*m&!&>mg(;1dIHy(#ttXdY~X)^M?9QpL(VB zMqK1fW9@EXe7)u)v?ZJpo0;I|51Awqlh#Gj)8*}${p#5)dWndst=5+~vdhUgRPs%X zQNCsP{883@xnGQX-?{j(gwNk| zv3kqGuP&Z^{7tNN2^2=sHh8<$Hhgx73jIyO=5A9b5DV{OV5v6%sxfy_XcaHh)2P?m zy>IzJb4wOEPLhGR0|%@auClev+CWCo>7{=Npsj487mJ=4$vww-9Yi|Es?VwI!X8G>7h#UjrVulEZuT6HQ#oMGRn;@A|rFwKN~6z z_zL(WmX*=ROp62a)7AN-PS>-TQ#i{kU9k%uBoEvQt$LwU5ucMM9b0|E-|FC@DK0$o ziYtcVW`7vZ2KzfP7ASfyP>I2qM;yu?LmZn6EQCfC&Bb?T{T59{lcuRQk8_FV^1%$c zp!G}BC{u5>k?`;Sa-|-&CR=jLZaK6xJmPDdEs!kGn)k|o%`;T3vzn`?u{m$MHz?C1 zUQy-~f|AXnE0JZ)%jDeq5iugMFsG0S1yA@4bbWF9Gs10dlTo%$ObT661l||0cI^E0 z{He+u$KK7Rv8b~Xy0Re$28@*!?o$5m5Gqg4V(HwlHhttF7mhnS8bhs8KLD_h54Kr4 zm}-^IOKK#B_J0Ev8BW)zSi{X2>cS@=yXHt--H%=o*2A;;mze2JI^{->0FZYm7C2W$PGtxca+sN(4j??9!-8R?t*7(l*L@*$lMjH9p{lsXwkk9Y7j4&1p z#G3|k$WVwFxF-RSoTw}lEMJvnRWeLb?Hp)C4tKR2yfu+yrYYHzv9DE1z18gt&95+H zVoJndB$~}NihZ;0^njoCvVK6V8N-6n5KJ6HhUm`ff5ugP9++6H>A;?QKSs?rPYm(< zRjLbf{ShmUt_%tGTdNuiJDUIJEN+5OJbL3H8ALs97bzfJH6t(2x5dX_Qw){v)2^b4 zSAqrh!q6+8ORe4^hmmuBNeKU@B2J@T=~rNlmUITwyUzHZnTiMR7q^jf-M}Ug3PSJC zz)cN=09v#;Ym=WQhMTdyf+QCj8PciT5Yu#xTkcYTpv50aXS7<@#XyzYkIL3TZ9`4t zeFEsE0+pe(4jFQfv$0_cW15bCz((zS_2-pwPV8trTKAZ`<47ikYnm?r$B~VK(t`@wMb=PQgO-!pF~hBK83 zFzZNVg*f){2?P;=6DvU4LC2NCb!~lAB817~m?6NxhGwKjO}mXkU7q3E=v?~vLIdA7 zI?3+swg$^Eh>i9AQv0i!^-Yb9<{Fn8bm&*037$LJb`ENT70WA7d2oVsD{V>P)m z^ovEa0b+;~u)oKGNaE{wQ-2FK`1VEx19zNYAqnnUoTI=)=%<7ZNrQrJ)f-!JWsbN2 z-*FC$n+1FQjTgaYgyX*&l&AfyXgN7h@HaazC)eoMaRa(jGc6q=l-;a;=Mi|H;4HVV zL&qA0@2ECS46PzJ#XF^H2DQQV)YKPA(*h~3v!oZZtf1>nweV?>DR|8;#zo#V1HVNw%iE!Nmh*5Y;k-= z_u?F$Sc-Lx_f64K7;Jk*fZ24-Q*B-LVn7RNh=l{yk2{4)?CkE;`{>IM&v_!aHC6Z1 zWq8URacjCWG^tLQo#D2#zro`*3idXUu{Hw17X}hqMa?rXZ#^ih9H5QK={;niYkatF zO}d}42MO^VFCtc^g1Y!kydKsx92R+ z01(oQwh~RrU5=Nr;4-J6=JBo%B6rs7Ab()6j_3CR4St-#28cZgz+F9etK9Gh$rVcB zFZ>gSecMXPg0`&voxWOV_~gco^J`_Mj$L!~#>U^}DpSdb#Lk?>2!{#YS=^hji2cTv`ZGq-!jC(g zC0)dSA0cXPc(+4Zw{EjYYRiu@WGvWg&qTig39@ma=_6}ts{@DvQ4(~ z=-n6&%mKTTRD&>iI5)buW#*P?#F1@<-Jm<1u*i17RqC6hQ?&FC$=j|y4t?Piw(N&c z?|wBJQ3=lfl`q21_F_yPud)-jBIQfy&Cjd$E6Kb!5`6+wqL-8HMeMh7R|O zD{vUMX6JN$VSff-9m*0JylUn>x2!uB*C!o8JhV6ag66}gU$RCfB^V^n4cZS66zdsyMZ4tHpa0}M-J$YE^Hzv## zmLI3_7pWPZZ?no~4VW&UY5(x`XM#G+X7ZNxXBA;Hm^o#;3D~+0G7m z2keWWNgGb1QOF9UZqJM<4>D|`+$~=L@0^She5&q;@8(E>;Mc@k66)^5%{E4AIHKJ> zb9UVY`GzA@6!;_aI;K0v62h|SS6QCVaXddOL9b{eHceUJUK}`oLO5;WOq$j6f0mE- z76GvVS6orkerpfB4kire{8@;ij1Dh!sh+-1OFWOCC(7ST*vcf_TuN;SnepXC-G+>3 zvY{}-u-yRVR2aPDi@G0eN(Tc(VhI8>D}y2bgn?%JydSYQR2_7yYJZ7JiPXe*P+FSo zH0N#Q-M-Q<*Jm>b;1gEVo$74eyg>Xbq#@E423aLlPJg{?_qVKycr&OQ`Hz%*6Xs;X zvogWZqc1cBX79b4C+M&(ouB$kTJ;>@<;_=?k@|ZW4GkzwEui)%yU33-DTQJgf&Tsk zNBrl#>+sbn>PR2A*C#k#@Wipr{5V&=!cMlXY1+DH3|8rfL|NW>VdQ`}bJYN*VjPPfRS%uK!0vPi^x_?m0 z_%Ebf5BM`9vA)^#{8mU_OpBl8nUVH+7EJGJlW*DITdQ(Z|MJsGY`IbMg79U{CO^A6 zfS)FL)b4yB` z9&}$hnf^H&RSdASIZQR^AiRB>;wh;= zGIrr8QE~ecme-SdB;Cuy80cjiF++0L`WQA&n4TKUb48$5I~l4QpQw{R`FyDh*Q~fg zAf#k*!0lp>@~1)#ivhTUG4wSv_;WG}fsO5Pbug>p3NrGDPB;T>D?xPo;jJ^OcQOK_TvA z-6?RLXUn$AC}DFxMScjw_|i*6ZUC_dtdx1XPGL=y9I49Wwt<_ zUU{dkOz(I5|Db139r@qgGRj$JrflBtnt{Z-0<&E|(O`L!`1f2DB) zHCXu?0&+dJ*80mO^Hszu%wvnY;;WaePys;S2yIQjV?^Cjlx?bLN7vA&g4_%TOR`c* z-bT)R<0crI&kjPL&uF+nbo(Bd*g2&9dt-d>ofx(=P&sVxa49xqFYnweuQz(hp!m0D zTpHte_n_;N+rnubgpJX6?dC@Ndn|6hFL5v?R!USl32H-Lxr?)gJD$kEP7Gddm7#-O zULsX4&1^%7FD*Dd_DOfjc6em!=rZ8J6Lm)9TAiCd6`CmcRd{CXujZrFj24VEgY8?b zz4caKDOe=9roD4SYVb9Yd;0vW8E@OD#JWAoWGf`Mzc%R~pWlS z_U=VPWUZCL7WZ$V0%oel%~NZUs~qn#z^B!yjHK7xkO((6{shjtf?D5oB*!~%mPMsb z^e&}1Po|QK850s}ccBS|Zvs|fjQG&B;dUVHbyf9Q77(LfoV4vW!E@M!6dVjDu+39} z*LQVXgdmadgsHcr$=YUtQ*as7nI#y9Z91V!%~K>A@`-u^@EGSKHG$sFtrPF zU;FTR797TUsU`?Vw3G53KxpS9wF*Rq@ zL)I9AzsgPrEw7K~gtO3xYt?5Z7-?W@V|u$#?lds0Q){9maRl77E=G}EJBbtKpTZ~B z=aa|DW7On)wsA*>Dq&A8@~KuyLl4?_{MErZ>Om3b3Q#tIK~`t<_|_n*t4t28={FGG z10V+Ra)?tOrt8!8bIhIYRKv13`3{xX@kab9xvJeuv95ns{z5qwlC&xomU;ImMY9jh z!>oNERp#r+7|!tsQ+b*}aof~2xnv}mityZ5PrT?VfAU{%;^{^@V{xaROUQY)aS?dg z+s^L1uvI~$Rtj8c>TvB{s11OTGtL7e<5nf(T%IQe9y$s&pA{_jdU`ZtoY+Dytok_wih>x1zKG- zCcHhiiCh;i`Exy|;E5;lOXOHJYh%mg#Mi$pLyJxJhvxSA{#hY5b!U7OIifu~hR?UP zafp7oWco3ne|*T^I=dqwdhqU#bWb^v2#u^e841^;m{79Ktp9AT1W@@=*;Ch}L?5%# znqG-%lC2wt3{208O}H-bV>%}VrsqpTDTiLRzN;mVBJ-;MM2ibJyi zu6O683#!@)ss2`p{>BaJ%`9yV4?X{NwI+1Ah6T2;@twmw3dIjWtw;B^b3_<-5i!)X zVX;<;tB0zsrs(|4i!9Y2)W7~WeW5G&ovP!jM@ zF^oOvy^q2$?aMGy%ll7Qduulo)20OWRZ@wv`4!yKm_N$mhy!&JnH7fXBmR4Rx8j0Y zlBuUPk;Mv;#7ND5u=Y1+={C*Y@U!R9)7vsx*OCtg<`*A>Gpp5Q9$!d%l=cli>~M}j z(!E(N`#}frOY~QD{v-^>KKEGPpv0)}+KnrbD{-Z1VDzXJrT5OuoOvPS@kE_93#&qj zN#yBeeCF!_Zp6;x&3i5l?>n=j+8h=w&bE*4V>q7C^Y%VHnCoX-@CnylUUHyKd2h!^ zxxeQ7Vqm<)O(v?EmSN}gt4MOdhg5k-(syQ_NC!_QW$F#CF6cz9CxQ;@*{-Xqnq zOkJ4jz=w}@999^pk^gYYWUDsXaDzA&vX<7BGA8~SvnJS~|MZ|%g|gS2{*B{qRfNqQ zrnWz3$(IO}BGfFFM?+D;A1^hnx}LNllq1eKzUn+V_^{By-S}hcS_lU$sKCFy)8DR$ z`4zRxbqNBfOr{=wsGx-H3T!d&y`LwfX?51c9i&m^TS7{e9@rfM8aA0d3zNB1UJ+l1 z+62gk)GG}ua^+eRYXm4OWi@7{mtJS}E3id*1~dkyN*`QrE!_Xb`=?)>F})xH0&)B; zl=uu0WRk#AA(9@F+~J;)531@nj$+$&Jrx<>AoP3-!a&RW8$j}!3bIL`zVh&;lgq__ zu>$$Xz27bZ;O}=j<*FNeVuiCM$~KZWrzVuuqYXUvBEXyH_(9^`_BJP`vmLaC#vDqRU-HYV3 z;eIlv;#Pyvrc1B;Oq4oj^7`udQZg0ccfnsdF|ix?8@QXo-W&!e^pAFR4&^yr%8EEP z*2*;5Vm0ynY7|o0s!UtCPlrk}UXUmr14*W8*N)}f2;8lx=_O<6ApqC%Z`|oZe2v)A zZJAk?V4H-nvgCnK>SOGO)xW4w#7(`u16}S1Ie@l-=v|LF)}tK+HjXt@y?lN~QK*aI z)^uoUGZ-&SNM{@9wU%sAc2pw{ihtmg|1tR$^99z%k$rw@3a_5@LtRqeRX!6!cZ4{+ z;lXM$9ZbjDzg2oY2ppsnEs;^kfdn3%{xI z=JrpVJX;C<4XeY_b9V)^MNrfVSuZ_npY`l{3_dxuilfqdjZLuQtH1w$T;sM-tvY`N zf*bfR7Aj_angd>6gIYu-In}JszthP2Ke`$^qD|CDDgM_;B&el zswz+N%)W~oyXDO;x6M?{4Xh@F7C-mz-trd_4!J)`SaUon>t}o2ya9Q;?C?Ucgpt4l z-UAWFK?qlGr1%x-Dq++KvX|H-gGs8Zg7I0cu99cg>{6>`>@6W@qRKx z7eIabI$If!WlV9>%&rqyvHurQV$2UO=gBXng)GrO%>%~rr z1P!Vh-P_gjpgS+(W*=~ur;3WGiOjOcODV+ufFyoujb~%4A$1;Sb?Tl|2hXhA%N$t$ zK4@C)m+1yVmEf(Z+7)Zj)+1+{5j(yrS;Q-hC{k&*AS<;x9^u>k%4v2R=|Mh^HqJv* zg`6b2a-;_W*J9fqD;o!;KHhs0a|=7-HgFxR+q}gpv#A4D>zjL8q}yO$%6WB<(FE!s@#=aeBnj1ZnHvGoy6$bK`9(m9Fxj zP_>O-?Aev40{uCs-(%zYw5_kLlq%hZ!EZn(oz&AKzRF7a3@x5ko9yIrwY+ifE$&-y zH__F#`uDZs5l*f>BC%xq-om%rC5OFhf7xc+9Q%3-xP1??xGrGdjQetxN=w#)Zm9%#5-;3ILyf*9&c$!=enryYtMgf+o&EGhMMu}%1zgdJ?-t{Wi&2vJp(#z8074CAr|P;rJY=$c&#Hy z(qMhi&yy*n>YDsf`Fcvp_Rl|=lAJ;%$?~eujHX`W!zuyS`zNrFXPkz@v2<38R?^l#B7DmBnLcFa^2W}2i$^nRc&!d zDy(`95af5Y2I1!M+?r#^bE3!yv4TzM(BQ16`>X*612G;BQ)O-;CdcnS9R*l;t1H* zcEvr59ZJHliUs(nxJQ;2)-h&6kp~|>$tKo^D;Ij(D|2HLwNr0o?O-g8p3MYacI?Fh z_jIbWmE8X3)iUgTu~QaR9yruTtaQx$UuR%p+Bk*qz3JAg>@J^E@{Udk@J^NlY% zTZjqiMDiKLG*`|;zh1knTL%bEHr{B)GYLZ|tN$Y4E<0aw)N`iig?9JDM7pkrCI>%) zI(;bT_egU*Q9|80C-g|0aALF@QGXVSY?l{ZUoy{EDsPrEWcr;ejAAtiJcYNPdB0U^0sBZM?ojPln zdNEq|a3#p8AdL&WwyBfSIn9*^v1g}@|M03Pplpo6 zH1icX7c@!tG33%lJk_9oVQ3bfy@s3rRF_m*^01qgH%ktbJ@8)n0wzs>xBgQ_Qg!Q~ zm5sOIlM4Y;Rpm)3-F!Da&n9>NIcs1pbkp}_ckrPvBJ}OwmjA}!uCYcVLKh!OU^W2H z8x{ovof?j(6`I|jng##5eI;PiChfIytL}Kjtg#5YpIa`ik{^^4{8?fm=&i|m^e=%9 ze&(?pw?X|MMtX5C?oHeA3}=pEXS<;JXJu4HRok-pgvKZMvxgQAgW`t7q46naSRZVh zSB)+cT3g^{s}d9Ks_>V$|2oe;SFyS%gf;!4PH!%{Zgs^6!mFqJ{kVeR`+~mx{L3u_ z+R4-6;!xw)ump?WpPORS7v2>4Dhsfw(kGSBq>*uT`#dcQ3dvg|GocJ#8o-_$Ip6kM zk_Da>iOFrsoc+{;d!cgY?1oJ@;HVu8>V>B+f0sC5F*%g(xb4xUGmp_@P}UQ3-~S|M ze7)OlVy}vh1cCN#4;x7r11!q^Ty&?RsP;*&3s+eHkqc5anY~`7ZB;y`u2RAY0P=SZ zABFGtUR}|{J8jy^?^9W^!5@93DtJbeMIB{-MPI9S_6702ligmuVyQm7=Am1m*UKZJ zZxSq8HhH(PfZKc_bCB(31HFvHixUpp*p%JLjvch ztT`1c7?tIdto9F7-40G;468ntaanPwU2L=h)*-}NrbqPt|O_QgRl24 zy`01T&S!)a(qX0@oWF!1yt_jDAWw2pn(uD4i>Z(&-}F&XnO7hvhR|ac|aiqBNeWQa*@xgjMa=JUy-@60WG!@0f&WJse!MPi$8V zI-dB8l80e|*|r>w0GUM5hzIm>eJHwx@b^nmPYp;ac{Ex_MQl#0f zjd?e-g-E6vVaGIrdJ9j2ndAEKi~pVyLtTF?y7wkf1kdJgtv#${jZB5Y7?7V! z2+-n_7Bc&>oeE{(@!rZ-E={RcllrZ(_91W74My2m_d-Iqt8&kJGPPIWs_TZY+{jrY z`uFTQs?6sf7)iCRn~Y(7`7CNCOcD6CH)DL^P0wbX;bd0q4qtwaI6G!Dc`Q4V@uhoW zkM#9tvLENssu%Mff)jZqDwbT zJG+;YU!w@cRq+L-K6k1eMBckFuXJwZ2af`Y0_jKr!#B=w$%%_r%vB6ovTV$LVkns} z^3CBt_jPEfhQSM`VRR-}FV;GiM(Ql#qRn-SrGDGEpo3fnxf;t+JsYPqVreqH$kvS8 zM{m`ci{yPso7bqqdwFJ-Cb~&|S$$Bhv^-Xq_JL$RZ%RKi7<>qLwXx?p9W289ifmy` zexvLrtXoEpNT+u*l=xbZ)Dyi=A#CbtL+Vp5$txMnW7-w*uC~MOf7ICX9WJNcs_Gb> zNL;MJi;TTZ%*i#YD2J751`(T*(WmwsU82+VTe*t*(c-@k>rQnh70#}uzUQC~TB_U% zsz;?M=wtge2mx%ZIjJuRX2g*weA*4MZ6CBoVMEH zFY6%lUiJ}XznGq(-)&1zW3Dl17%j>y@|w$GzvrKSl@V(ka+6zyCIq%wB>C90H-p;c z{ORcnxS`vZ_|xZ$Olhq`DIG?Ht0((GkV6|DgpIH2SYo>fwhm&)=uqfG1WdmB)8XLh zR4|g^-}V^zNI0j20|`e{a}b|-A|-xIKK9Y;z&qC%2VxB!aBPGdK>0N|my>rX_FI3; zC^0#4?+Gn;c4GfYKe4Qbk*i)#u-4h!{nqt_6YGuU5bQ;~ea(KQM_v~5S$VzhWXd-l zNZ7o7izX+2)8|L|!7tVtyqV8GFVTa#BQC6)Wz)aHveXI^N}OSBsG?e$m)sliE~l>} z9)Mkpyl7=l+d@eX8fds(M#slCIBZ6xF-n-p5An_0^X0oI_ZnJuQFkuP0Ajm=3@e7? z#S`V1X{YKsQJ{yHUF45nz0+H?PB0Vp$i zz@*TA$4d>MeW3vl}NiMVJ49L*1TAP7L3cf9-`JLiC=gH&e_J8yAWVl8L6O*EGLu z^s*bN&fs>ywe11Eidr%GlN~O8O2u>^ucLO00Ic~;Yd>sXT`GIAo6-8HZp_CcJ-Lx8vJRApo9@F)ATi)S6nYpCz;uJU%$b=CngLI4@L4cV}F8*Y+mj>d6Y)o zPK^t-kb!B5D$vDvqd#?Rj%^J8teI$}H~nT$nt!Kzyi!WB#r)$Tf=DvRkcRM>g~ESNlW66aCEkR=h>U)9={IP^DqIp~CV zN;0~FU7o+~o)pOX>*`vNViw#|7LZzowb;C7l&}HW`{r1!Nl$}^_`=r2x~6Ph{!1?3 zr9WQC7A?ON5>iVB%?CeYghyM@@$#w2Lri2?gtmK2j5}xCXd;v%ALbzge7{;!^4LAR zvGgx@ql6po93@N{-W~5!Tnd$Lbxa^FcNo-%9O9VAGXc{RmNI@ZLEn(he->IrwyI*ZZbEHY0@?-=uwGq4fz+mgAArLZJ8x( zW8j_!Z-8u}Urzn2^eWVqtDG@_@+D|P4~lQ>5E6zBhS-N6TOkG+CE#w9>Q4SW7}lbW zG1{=48lgpa$`}IAR(Fiz65gZCaXBM$R2^gWlXSLM{;?3R zdT>6^G>Jk@8or!qr4bH_{V$nAON={EN8<*gqi2F2BgP!6I#YX$okl&ah)>8zT0B1Y zc(uPXfejISn8?F_pW8b>Yn8z0o>yB2YycwX$VjQFba7OF-dxwOa;jh(P)CCfZ@!(` zel%muHx8xUD7`99U#)ukuszkTk7H4Ht2{JB%YWW^7TG623!}*mCV81J$oT2u$h=PMqBs58KJZs0 ztQ}+HxSgvo_YUN2;Dq3Ix5>3{(jq?lcIL8GpJ$-ebu}yeVujaP&qR^^@lG4;#;usY zE$jTAXL`6r?W=L?g>OYDrM6uGw{TKr^hoK{vnbCoU8^=ONdtpqgX9G90gi8)^>cyzX8W}ga>kg2 zg(Q_|R+4sfx}ZT(r-OaN0ej`WAmAm+%jn_6TB9ERrZ20? zd|Z}8s|$CTL)Gigxs)pfe_6H?9KZt;M)Czs~~yGdzRZO*%O6rXvYgZ~JAtrVMG9em86bqXHQHFUhLdY8~X zeC_4d{=b(Sd6HMJulYYTUC2laHS@f<*Y=z;IQ{4L{gAB{WGS!x!4zjrr;_C?T1jgo z>0;0er^b$cr2+$3S)blIvr9pB`~CF>4wJ&Ui(S9tf4(QrF$qi=(^E#2uZ{4}VebUA zM)PV(JSC`mqn#2R*vtLLR(=S|&GR==CQ02-F`U*vL>sy`D3#rpgQWBQHy29!<-5_2dqm9r!rNKc1Zjh3PI~$W$MIdo{&VP+euKaI_^+of#Oz3C zY1V-?ue$AQNpU-$LYaFO=#upv-1(XBcS6HIAznG1qo;?PTfDZptk2yOw}SQq4X?qX^_gZtwc3K|$4G~~h&i2kW0rwY07tI6n`NentcBU^na3+K%Bd{B zr6S5;N?b{Fw;08jfSjH1E_xT14eg{ZqR?F|(3@9K5O~zd``he4k#KSxE*2c8dpX{UNP(1B0|A zK4;9^z5)EVkxAX?5Es^(uowXERAhD`x3d^!!#5P70S&szSdf>t?zj|Mw7JD2vMBU2 z1z&YNki&`s)|OAgJGTvr&0#6{W8fnkb7wXfI9tcZJz_ThPhz3sE$ z&3JXPHhpD)`eB)*O3pSfUKCw%vI~Ik*C4#2LWgE8=<5ev&(zLN^L)?sKlK!KG#}&} zl+L0d^hXJomnW{O_oqNoJ|G5)^J-*=9=seZbyyLw(d;PV=sT!j7>>qYB$aSz27RJ; z{mi+`I3Led5?b4(8Dt03zR!)EFNBQ`O28jI=uVG zE6>%|g@Qm68@%B4H$IRvMVdbg_H|i>*#rE-)4`qe$(b?G@X0CylsL*sP$B!A9+dgE_ItBN_3prj|9bUhqk#%)O96fECSF*e@iK20&81JwU+bts3nelPW0Gitf87V%xsg{LU^>kZ%h z?gx)wga&O`Sw@Zh%kj^(dY>Axl{1;xt z`dad4Qo`1(Vm@}NTA#8_G_Tci#$3WyL|TS+2OmW+jVjY z{mrKlZh>4ScuI=! zlIFePQ(3G^90r?rq1=(kc>aeOeePF;NW=)EmwxB0M|}^NPGix{9G}FHSntoiw*K%3OirtyY;8hC6{k93 zhXCy(`{{X;E@80R@!?=@^~T-Q7KE8)N6)m-pkoot+Qooagsk_jTjc*Fb@_ zGVF(3lcAGQX62@O_;GYawYDK)r)L&e0jEs_H%Xzw4-!xTO9da@)rda(O-6D(uaWQj z)^H}MtI;DIZUW}m%e|}Zxoo8?aa`iV`>edIfE^n__=Jonj2^CxmX2|ZfXmlY)s?dF zE%1)iOryyPf+}%^!Kb(FRf#Y#N9-HK8$KGDzR@HVb48HJ%}$-Ow%QJI1VRh*o5)U_VO=aFV1&sL$rO zjE@H57LPB8(P6IQd;nPAd3Qc{Hgn10e10S!p=l<(3DcU1ROej4%XU+(ClM z;l*f#x@6}^vZ~b@j~wq-lS>L&=QYsM3>_Qg06souD)0i1@o@kdfIogelk=^odSqPT zR`#iZ^;>1LB;0s$NEC(HpOQ#U+PH{}2^8nMu0JiZ;6r zLt|NR6&2IAzFFGG@qz8Ue~CLLrpFh5Rb8)b)7VTFNuy9DgVh{;V8#cW%qns6HZR%! zE`<4{nx@{j`f4NzR-*WC;91#cI2d4+R;yg{U0SNDZDH&)!pl2+Z_%M>8=LHZIjZ<9 zIj?!F^!gp_hC)_jVq$|ENi*wZ&JS%AfpqpN~?kB)q{1{!?lx&djX{ z^WMM?&Rwrxdh!oW`6gN&GnXr)^lbd~v>D55RP*iQwQD8UhMJAw)GyRS$g{fht{5ra zrzQ~`%%q>F1)_VtSGZCBpnT$euF@n$t4&-o)K@zs`=t?|8FO6HJ!;DYkr(#gD4`ea zec3Hyu%#h|P3gv4?{eswQk{)%lxQWefdzsEt8rO2^^rTdWG6n+t;bmhGhdWwqp2Ke zncX(tDW7(AlW78M^;j#kbiW8*-U8yM0)bDVaoe2sHg&Rms;hW*7N#Tn$Cy3MAI)~m zu`kpGZVF?gIJWg#7x;HRICk4XLBHwm-ptESrR5mIs-^sf5#1e6+71l@q>!NZ-gocI zK5D9e&s>9>-~*0&NwNVpJt$voSYkg#6~C0y9`B#n#wgV|V1V@Kl+$Gh%tL7O zVFlps5o~dtu5Wlv2FX(*npKo#e8hv!{Sn`Ix@KbC*x=DYAA@~B`?uQqhRK>)U|q%0 zkdjwM%(o8i@T9}jHb-sk&gf(2!23AC1g@bK-Km-9?@rS%%+$;^F<%y2RM24>9tnd> z>!TaX{riqzikl=aOPDxDkC(QE?rpl-O_6_ z0M*~p{W@lu&kC@{qqhM1M2$MTf_gp?6R{n?6^lA2q|XXU-$C15gDy6fnT%pJ_K-C< z!S1!B?no$V3c-I@-1GHFHIqZ14YOdPnh)E+di{D|pRgLXL4T;!Jmay~aCA*k8F~jC zu=j`dFM|k*_dYOR7)Mxt;RVekw4e~*KN&asy^Sw!F&z3Ocsu!E%;YGV(&moAYZ6fqN=v|PM6_s-IBz7IQi0Rs^@Ss!~U3y1Yjc`oQ4e&OAoZe76Kd&GNMsrW8 zY4$N$1T>sW^O!@nu6WKVy`)z{k{mBBBAPP~pM0!(GanA|i8eX-Z=z#o+SUy2{Qmis z5n{L?nsU0skl3G+HX3H)N}b`;mOctHxz|Vf{Id|xC~Oz_D+PR=K9@?4{7u}_CCcJZ zj{T$$jBP%Fx_a-RiB85Vo28x{k6OwX{7Uj+-`OF`j@Mm$3LYp91=woX|2Y%SxJl$o z%PeQfpkG-rBsNd~SuCS?ftV-Ul5hlfwW}Xx7l19e>aRzDqQ}t>;eR}uLB{y@vA#C1 zkzu5BeZqfP3>iDn>+VQ`F{O6(UN*a87v1}yTMHr<i{Nc+z8SH|HNOVC;=3E8wGULVP10xDEW2=xT+`=8UP ztz6x-F)<0cS4}gkk!{($j%YaY!rf6(>Y32kCpBpazL zwk%B@*h8FCJdVVm2vxx?6ZR_$h1+~xR^%%cxAzKro(7xKn=bQ!<&=Py_@pn|B3FCW zD=~65qPBS9nWv#nd$jO!NyuWS#Y;ce&st$)MHwT&Yp3w{K;&!tUVM@w*<_tfn$oU9 zSt^id{>tND5j3ES9<4MrG3eckqP0A=>%@zrjOG{1{7KkXcqeXaKr^WK*wQ~i8lcc^ zQi044tL*G7e*f(s>SeqdRT~-5%Ol!ruvTMCOeLO`WrXstcXs^SmbpaHff3#~w-a6b zW9mW$t$pXSX@?c#MG}k`-8%N)MU>Z2FHskCfy%3_pwUeaV9~AXN_~+k|J=GDF@HCr(FShr5pGp|qiwC(r78dB0JLHQfU3gRG&8s4WxwGp}I9TY!ZpJ+U)aL^KKen7!VB1cGzt$ zA>e|r>hw|y^8s!A%T-?73ty5BXM=I95##8r0mpjjZF7KpboJpKCn z?l0&wFZjChA)^VS=PLZG0~|Tid~DK=RE|o}x}#B}%s^QcV{aTt=|py+a_YGcJRjk1 ze5DnqhZqGTJjG+>B9MG>e?=$G5EjF-xPgd8Fc8{5S7613qStn{cwzQ-UH(UeXJCrb zs!`2M{hk=uarjyF-b%_&Njuw#9lis6N|asYbkf3Q+hHWVYyx{g_P0|+{F_O1%w(2I z0`^gL!mvQ^5&^7wru_Ue!sGQ&vB*p4<)!iYSqQHK3E;qNlF#?``>pCNtb+&yv1i7L zqcp)*Uu8bPPbM!O_w|^Fe1ue1a+Cx=d3x7~gZ#eHj>Qw08~g`|r0f0cu+>--IZzbM zY=`}s1V5xIA$@Rub2%~_5-2@SXhan{#y^Z$F`V5jCoX}!M!(=MDnxo^aLa@*L^9pR z5r|Acrj)s)$6a8gNg^tGiw(VX8NY|#i~7T9Fw4ycBkj%a&+ToWj@CW#n0y@7i`i`4?Q(b!*PP}YiXcstBf%x_u2T2g=VNIJs z_z65>B%XuJ|2Ur|{s*vUf{NzdtEKvZ0}KtFfS+D~6;dWJ@I5vLjn$~e{PijEIOHdM z@1acDS_vf~>0gU{c_W#!HbDX!lOmW$d}qP?R|$)IVYWTaep+gVK2o|G13NOVV<7j; zjJ;`@`p3}idi;w;TYOI|js*`*P6wjBTo@PZOmTx(M%#YC&w#X(y^oiUZE|&0#2<*N z2P{Sq*<~h2IY$S^I&I>LWW$Pzx#kkuhga!~(y@O1iGb1~kwr$ja79OGs^LWVj79cr zPRmpx3 zx}}fK`xipaZI(r^b|7VpoD=VO0`PtEHSoJh0|x+$Yi+Ic9d#nsNI|Bd06q0$C`GTX zWbmTd`d$5SBl}}RLn}JmsO)YlTfh|3+~8pb$h)rf>IJYqjsthx8_F(*@W&5 zD@%om_-{I!qgcbWeLGl?D=7a5gCj|2fSIKqb%v66$2A-VqtQHzI6ID)em4+5)xM6{ zCGDCMZJ}*}c&9Hx$chBSSUbH3h)N@tO$Tz?&luVlK8Ry}77$NKR8b>(O(tvcFvlnf zwi`b@_)l5usQudV8~4LE{Z^?rZm%*w{4~-$aW{$=h9v5-5KL=2CNe6Yhy)IK2<62N2P9mKtRK-yKBwWv1IC7y%s*ZVbD|s$sYlg?AD=t*e-)$rp z6VL;MO1mTWA3f*(FX`{`Oh@(H*sV0rBI}#*3|DL0I96p!@a94z7f0pEzsqcCXR}C=WAEP!pk>;jYJDOcOf-=s1b6Tg2({@>&2 z{nj9HOVsmH`S#tVQLEqRjMD5J(SHhap2@Mkbkb^D@g8;AamYReI&-hTW zu9nC?km3XEa}V}Z4*dt`=3f6(#8pF{G`h-}7_{qYThbZh_{^m$`>kC*1dxV#R!{ti z@g2*mN174+DU7MOd?k-4N~5OD)CRo_-@R`TL1F=_`5lpsx|7CHqNNQ|-`sEX;~8;7 zhsEG-mSVOVxvDfKo)Q^GlfDLWtNk9oaLmhfSEMVnoc)%)(bcH8VGKLDuERvqv*1g7 zmt`JE^fPb0X;hgp5p3=O;`oNxY9f@BRI1%zIKhikBv||8l8c?z#?KF49`9Tols`fC z`;*%22uU*OHy&;{rcz@$?{!=%j_oh4>60qoiW6I898oMAR zObQEBQa6vV2E2*~)gsYfR+B#adm)!}7kPm0c7Zu}JY8sjY4I-n^z?MVTHrK}}|{JPV0*5t>FGm7D@pU^eX?5T6R4|2e3s156dpJ;_L#l()&$KA$67XZ;G6qh_A1K8l;TdeI&lUYHo=(iI?~(@2O7j z?f1mpaTj(v98b$;^`Y~VrH@?c)_pWvYUkL|{num6UMV|xrCO=0m7?_HHF{>WNZ$U8 zfLrhKbCpn7<@yjsmDiK?tF3v*y?w7^7I(+Qla}u?%bPqA+*;SC{$18ABPPuCk;Dqag zSd;jOPS;S>`kSg7@%kz-#qB$m{gcrVBhyC63t#OUAuyqQkf$zgGgV#Nzj@wDoBMRQ zUY1w}Uu%b zL&TU#$_uv|owisO_lum0wY*-Lu3p$uyTE0J$HIP(%DPVLSKl^p zL-uz}C=$r0Q@p7e#za@6VoPgHG=Rwg{z7PAO%RXj{dhh^odO$*u!u7u>3A^QMaU^{ z{ie>bgPT|pSPm|Wxk^qCW?*dztXagjQ1XKj^QWEp zx1JrILo`ybFeg&^SK}HmKw6!QGz6efC>gcGJ;v#8t1pOz@rEBwcy1I1r7+aTTu&TC zE^;iV62~6OR^%`XNvuiX z61@y@10g50K=-Gy5~{>bF`=}FY|M0AA1xMDiPuH~ z$R$aEo-OfN;VU``3ctan&D$BV1uy8F0%6om(;y|1eyCpG;UCuDVvg9p%F!78>sTda zLn4c7D5O}k+kdn`$*pM+-8?syT=O|lQvXCF4w7Zy)In60_A9uu+S0rU>E}rc9c)@% zTu1n)rJ!DVr3nC0h$ana0XkZ)3n!o9vO*W%-_ha(RA696V@^(V2d$Lq63RH~ zV~}XLy9sY;MMsxqc(z>Klyu;2Td`!sR^uh`ZixROumcIO<%ClEUqY+^S6X>97#rrF zOuEsNPN_nsswNa6wzX>=807p1*(&D4IXF)^#uW=NX!+GKWlR$+*O<0GFv)zi!f9NA z7r|i91_E%%)~*c!+&Q_}JR#CdtGm5FQZeWHD%JWtDBedA(7Lkff6R{b_Kj=_{8Y=o zkAKHqd~>;=QN6SR*3-srC{X_O3?pa3MmlXw#Ou|4Lu{XWa~fCVcmBGT>h}wcq1Oz4 zK`?g`U*m>54Arm^0=3Ucf55++i*7zWfe_qLhd-5`nF2p~WlK*Gpp)(5!VE2Jf?bV>)O2mwU>I+Kv zAoUt(m*4fDL}tojb4k|Sc&B(;1-~!39pweLmiQ{+&C$h2yLr(w*dD0(iI)qUV^w}{ zif}LRi4l>s&`TCSL7ar=HLr9T6thr1dx99uiBe?q5Id0WoVWC!87@05D?Ti+sJ!(9 ztzH+?9R5C9F~ldRpD&WsMVpu!g)u1`>N@|R6oFvxT+kDy_=vm(g((N&I7WND@dERl z5rQ?POm(h>(No+(xoA=Lk6c=JzAUma3Q=A$zr(?MD4T*GhL{W7%&q@2p1{neydzFt z({5NNR>s@;?eV8B?9MCP%^bZ0iV0S#|9F@U?}rsG>3$WN3W$wFf@uklPmf-Fo%~Pl zbm?ZKNI3%_A?G|Y5>B43nB%(>)xb-u1_A3iYc^5ehuW)bk$6isd-DmNf%*>FwiIUy zpf}Z7EVya5+1tdYfZNUlE)>^;BHB%5qZ`z$Z`Gi*Au6BQ>y;_i}L+Xm-IV>az$ zh_LHJT{f6xsrj0Ow%nr3NcF?6s?Z9su9(e74jJW-uJ^U}^sm{p(krr9kQ?~zg)v^& zS7B?xQ-Cni8BDBzbBecf9X^KOH+k1}^q+$gCV!Xq>;4!D>iYJsofLEjDtn%CZS|W_ z&xHn@JPja}c+rOxA;oL-HN+d1jF+p!YTtXlG_{i6JF0jZNpQ$|Oa*{l34Zv`(ly)6 zfL_9~Lk6hkd7px|dVRXalOOehOT%N=kfJNs7pLcMlb`hx9d3>yXd8zJrVEx&@xHwH zL_n?!a{QkAMyD6$XiKYud9u*f?6>MoP-k;<=fi7g!RLsI>Z#XM&+CNq?z!P_eoY}9 z_T=9+He*CpvevOmB5o67E{%h*lag{gh^lOE^Z0!ww){ck+Tsu8*Yr7j%*+$qS4GV~ z0fVcyk3VmhKr<2!%@$W4=a}mxx~wYro_%mP9*_6ldGIB5Do6Uzfz4dJi!Z<~e%XrM zCG)T9k)7xR_0|BF@f*iqVjMmXIebiA%_|mKk;h#3bG>8pU|kY$s{spd>pI%DsQ<#1 zL~dnvvQ@Nm(0)vX(Q3vzFxz@xZP1i%_g(X>=pg@^RHmhwF~wt7egk?lG+JtYsgE^- zwR$`C;BQYTayuoaP8P$;0Y4p<7h{j_@!k^(R3rL#toU}&H>9i8Q(A>bR4qQ<$iihE zjI6%4S(`Om88(4L(#$ba$DAKX3b=>@R7!Xis4zI{w{3CS`hznU(a8abBE}xBpsOk zZ9&!fq}RL%sh;GmcLdC5JxNYOJwwU-fa&*zFtkxKczVpD%(qF>kM%25J6xs(I$yOx zoq_bu;LE`O9-h*2c09SMM*1BuBE?5EE+ECv!0hd;Uhf0z$VDa=&7INgx3V9VN3uRf zu$WH~YJ9)Mjoh2(*U(_Lw(2942W<7Y=#9#s7o+JC0K@1!6UXw>!O~t3q%tZ-5XI() zfo64^%n#G@wf;K}&FlPiO8LQ_&?oAqTQsUD>?BIgwHw!1gN+o`^qU?_UexGQ05P1{40dw@mh#idZdh{DnzkScwnAK-E?-+tLHr*8U3Jk3(&R}%q%*Zj3NDQN0 zFaCx)?V(;}HRF0}@svpY!)3*F)O8>4cm)9xmbIxAB0+OS7r5sZ?hUCaf!&cspUGVt zqHP|po?e-lVo6l(#Y-jbU!{F*7})N;nps8cM%L0tJJ)XGRD-34(&)@RngcM`T_;N? z`xj3ylH|AK1NBnqnE;2nToGz|TWbC^?NDlqXBHcrSo*#^Cxb5X2+6CP4 zh6UV7qQymu85iC14Td?Nt7M!DFPyioEP1}^2y7>xVC`BMT4OcjaKz>t`t+E+225f3Ia@HBC_AEW!@JNX}1|SSv_(w;c$DhL?KqCSYp$V$nz5y!C|N4 zzn0xoGb0+PfcmTm!|#b6|xLSB2GbXPraBi+t#92u0rbq3hhMz{h`aZ3H0+U*MP9vJal|XnpAx`Z!A6?mYu8fStF#n7bN zDT`|pcEU|3Zjd-Bk>m2e1U{JC*Mr3dq_2|Amkuo{B|}TQBw#14M^n)c2b2s$0h*Z& zM7g6$)1p!&U*o6};lXL1Pnwfa;5KLZx8lGmhCqxJ+^67dnuhPWuXG^Z$h{BJbF;uU zv(trQJu=-%`uHt_G4u-*+xdl~Y2@ixv6ccMveusQvDg>$>6=#U*c3AYkoqrT(=9f$+z!eQ7V9WooorB@Rrh^t7|+o9mns*P=~BQP#5%hZ)dU*G&FD?^^^_n9>XBYZ|qy^Ebgl!8^@qqm}$}dSoBksM{@C_h1`Qm#K zEZW7ie&E;LaI(Va#~sLdsAx2aT#+&}C$#EEE>vJrI} zjx{A)B~4eZ&#gU3HX;-(sQx94280bM3~h&N_XE)!e*po0ZXXGVM#Uq{mDQQvq+&b= zJUeH}ey+)6lNPXVV>Kc^taEAgxeV50k3ooaMqke>VxMlQRj2~JCG$uA z?RVMC^U;nwER0Pj6mT4~)EY2u`D9?R8x=Pv6ohJf5qN$J3wLwaminMJg%ltqcD!(*w+QO+S8a#e85E;Au%koW8Jv%h@e03cxXyXa2JC!d|bwv$3Fd&yj|@O zJJvg{B{MYHHyK)mL$A;B%BX*75>%2mi46KSau-_GnDw`zK>Vb#r<*FN{sSvGB3I!^ zS+C7bl(~43%Hp|wom<_Pk{Z>NYd<07LX8?sYHv8|!xVgNow@m1E{pL`OMWyzjf{Kc zC24#8I^r{>)UQD&u8pDw&trzC0~;cv$ERW6UfDlcE>m;5Hkq+>hl5$(6e0W+na%w; zm*a4}6=zAFOEsm`8z)58=grm~gU$?FZ@x(uH>1@M@qo{0f3%**^f33vSTx%-Uz}$TT|QjBHLw!vTz@S(+d1;Sh;k-@+%R`glpTDnW%;L<=8r{Z zy)J*m3yZ6eXi;=;{SV`LOZ%k!rsld!R8h_il3JnOdnqP`!p@1UtZDjf61ZNbz2!Ad zgBg1%bUzxKh`=kPKZC;W{d2CM!Bqct8eKc!?=6+8dQM~;2~s^w;OHlN%JNWFooN5% zaGdDC(MjwFUr$$bvMVDQe60J%wD?cuZ(CZOsxCD0DbGFi{wT)YWfE(+)n9KbfuTVyKC5I*QVS37;)FJ&Z;tI)C6|Jp2X7@PSKu6f-&q{)n-vHIz? z&DYx-hpVw%b1NV}2?(fMxwu=#u?KY+sbirJ_kfP9kel5_Z-taMr2F_La>v?aCt5I< zkLDrD@rrZqcfCcI4c1XgVh<2y4*IH2OWi1RF168dYo<8{=E0t2&&5U_|KPbcvlzB~ zxU*WDxKWIta10x@cwJ6rGS%F&ZxNGvvxxa`e5v*sK4*!3l)yESN-QQh%FOA=-hYK@{A#Zzn;K?(pX9?o*8uiilET<#4E1?Am z#94+Xt)23XBZ{mpIbvgMOCk-b5TAF|$GeW#HtL1qQI2D3qA7e?kMqv+;NSD=~+&Y+tOl=0ripeT;|@0yF#(D_O%biRW)xgqbrFbZ1(ox(G23n^@X<`V|4 z4dtT@*K(q6TvbAF8VSESLM{VIqT^LJseE-EmRM&pI`_K!2%*+LRy^`%|6U4V zxHR1b#mP-ev>$FQNjHIGV0!ygmltaeO$u6sOI7U1eLxJ6-|s~XWKl|9;P7j&!S6<$ z#EwTvZdN1u2&TdohtJ59dZen9wD%+nU9NT9mDvKlKm=)4r__&4=oexN=hf znu_ho36XQ8JK`*-St&oWDjY{{z_ zVM9_cU8s!te(3K)I~t(IDWzJ6^$EdeKyCsY1h4(|aPPq$;i46z+$Pk+yw zZQ2LLD5R1s+{6^QcKdzbb<^vwRq~SMj|8cEgw3>E`haac`BLzc%Cu`)3P*xeWy>=L z_vGiS9gDS~>A>01hWBO2XcPvXrX3#KNJuKiPIz6ddifXR#+0!w_HX?wN}J3qPuDvh z412R;v@i2y-Z>DzFcKj=_qyLCP&Jyv)8bC6hE(+tx2`5Be)=GG>j* zVb(|ArEky6<+5B;qbAJ{Omb;K;L2~r9YuwxlcI}I!~Kt=SYt#PLe}8cL&pJlID7x8 zRsXC!?NWgCO}1E2)-&Y+?0X?#1A)u0ixu4(1U68`U1H$Cx~Tt3;_3Q-cl>;j(zcTZ z|5{c&K^=Ar>N@Io*bJwZua-6yukm5jxuMkly94ysdf`B(<*bMF|E_rQhoKz7BP(vU~}I)`1DYS5n3k zM=wt;5|}%#$rL*Mr~gts1I~ez?Vz|;Io^CZqMxZG^(bPmeO%m1{Vj1@BR~53A_k@P z@u1lt<2>gore|`=kdOrI_Ysgl2UMv%AZl4eGnfjpfhjRjyIu5Ntcmk_;o?t_Ht{vj zwVj|2QmD~!`t5}$vyA+aE%k|XvemyzydP^-QzH2SW>N#Xf|~1(cx=_&@>AD+gpww% z-g?!2mO!df)0EgOk@UOP^U6PwI_5Cy)6&4Q)cK2Wv(^bM6SUZp&LQMXDLmDdt*yC<;!mi0Fz9|$lPpk&X|f&%Ze&qABr$BE)7)=z4eknWIt%pi3g6U#W$0o6vu{Y$1? ztV6gEppl#ca27ODMnt0@uX5BUWv?j{KX@EJI?V8K=30+w>P%#)wy9p=?b=voFo&#( zMw=x7_2)i&MZ1INbODeZT9++#ok>!iz#8nrU(eoL$AL6CYnZWIMXwf=aD7-y#i|a7 zJP1zG%85o6$At_eaW0;=HWzIf?KiPfX%DVB!GbyUo%XkmzVvn>MuyYNXJ(PMN;Mq` zGjBw1llzX#eM935BHW(z+g(6=9x2o&d3!1m**D3br^H3;w8?E{TJ#@t*vHfka3>?$ z^9$Sz(T!`c+a#^mPqsZ$Rk?6wWk&LWr9?$e6oE}^5?HSF&{!IMCtJI;Hz1h$CKPUP zoTOJT3X9`j;;MGOoiZxn|jh!=|K0&nBC^-_c* zOx&Y6#EYdp*EzLj#RpUVbMXw#J4pJpfcK|79=n$)`evsBtBJz1yxfm+3b4>`rklx1 zkZ;VCAZ1x8trxau@85B7UGM|cpg8$un5V6PXyKAiwoWPO8ZhW4|00uwq@~3(g!3XE zs$rO0&Q`uV`ZVN1U<2$QWE_<*g83~Zrt7c4G$-3}2f%NDs%}v!QhkP@83Bg%R}15O zJCO4Y3-^UncgM1)S*0x6%(0UXZRI3NMBRf}@b%y!((7W-Ma*54FtY+ee-$r+lA@sW zzp~q3O8tp<;&gXVU?IFC4hz4}t6#jeBgf}mM0rS+eFgz8sEUG8`2Q)jc7H8;|5;k} zlVVm{G+^-@{ndtE$G>k`>JUgdJOz6>a++!n3>en*8R zN^881TUQ-KTfm)*wzY0Z`>MRP8*g6y#xd)43@NK9d$5Yjll*)gO-HUP*fejCl65;$ ziuih2o=fg5VeK8-miWA6AyW6c=^f7dxrdxVjE{4xZQkD}d+Z^>rY4T23zb^AAB5V@ z?&7f8yEom^5iZe-HRpX8ak*^a8prqN%0(jl!FF{j?GrprK=iq+lm=aoP0GJ2A0B1t z?;ay`H;}j3C|OiXUEYLIG>uZJhQ9f9TldwBnRO{Paj1m^)>CR(2IoRLzACk}9d1uF z|93A?ujVELbD*#U_ZUXerL^NWAM^X+GlTprbAjUSYEATaL4Ee2khCZ=ImH_- zYls>9Q!h&5(SZ_M^!UHGR@P$Z_qXnuP7LyI#2_`5D?85OF`F?DnR)dxv^UkCNy z8j_7HHsMk4^TMESxoX}fR-M+m#=@t6v{~n=CQ?xOKi=@A^w~IDNUnZatER#FwtbQJ zB^1~8sMHS(Q1vb;UgndR^O-cHR|$7%*4GUZDt}X~BxZJy!6Tblw0k6V7#;g-Sc4uT$6%|8?YF z8S{ozU-|GL5NAEjE9=`rT7;3DFl61YPu1pmhI)Ab@87a~L6vS0bcHD^1}sQJE0eyH zBJ~9GUPv}DLOzg9U*QqIy+QF%D#3v`Y~mnFMoJBytf6eGO1nR8e46B~*5s+_K`C%d z9+qe-x{V-MoU(n+RH%NwR~QYTB{UCKTk6D_(BZ2qMzft>5|E{I0}d3;H8SQ4ox4-V z#qFy7GsYHb2XD^jfGPA3|g*ByAyA4}ZDLTM*->M?bF@mxjR%3bPJB zI6jDjr-G@gtPdQK&+Lx($s%YAOUlX6*=4!c%; zcKNCs<=0!z1tU%q&{Qa&o?ib(h98PPG;vD7Jf+x+*_O)akO7e`B*#51;k%%YB(#1% z+E?q@CWM{l6~`J(9;B7V=jbtb&Q@UGtKpIMSb=h&!E}g#W6OA{5&qf#d|6s- z&?{97X8KIqo(zu9h{_j_H7Q3B!3VY6PgJ=$V=c?SAQrryEH5I>6p^N?x-&<;obKG9 zBd>A;#4GB_O~Nj%=-CHLj#!=3X1 z5n=&mQFUv3HW+;+4~&A)ICFpI`)VTa4Z$w83wUzgG z9S>c%r+DKQrrFcx*NL@cGtv7fEgq zYQPFRjh6qTx2xbW#LpZqe(2pwj{ci$Pn=9~@o#pK@G44Jy{`{m9urCdmY+Pb>1)Hc z^T14hIcc+29xu#)U6u+q)BVPCH1m?8XG5rN5eI0CMY6bhNhgq*!x0uj#ABxOKA2b~ z7bM#Ye8z}Y$P9&X{|O|cZ2}*Jq7*|;tFcuLt<@qxD0@Gt7|K|mrF15=tEZeEe6K~( zOke?X7d~CUp`snA{>)qu;FR4MBHS*5iMLXP%cxml4BWis9s|wg?+Ep&4}*5!$Sgn7`{5=srAjqXa}~m!_FkW zbYp*^WF(=bm;B&syT-anI8`)#l{(z4HulVrKB2Ov&&pw^biH$6NmFkIGr0cDE|=ta zyuM~=_|N4Ml4RbZa(Kc-g~KO9kv!%SVIW@=QYtsAk$ z8Mk?_WbII%9p!|F4{d-jWICWorY|K5FPo$QcJPyvDWC_0M)<7_c5!{)G+a(Wu3=lz zrv3RMV;643h_L>%G9u5-z2#)!m=CCk=mlID+zNF1*%G>sHE^q_#qJL8B3O#)+`s(h z87jv{z_a1BO*q0nwh2eeDqDH*9O@43f(DpoKD~=tU`HEGhIwF>DM3dR^{-Fu7ybl~ zt_ibbbH9Lo>s=HfO6Aw!U3|R7L074(jli2Jj*Nq;f9GLXr+w(PEf3WgEV=Z1>IcGN zblOCo5-+D_irpR7K-}ff-m@FuT#rliQ{ z&7wn|iW_dDejG6*$%-sK)?#VNjXrF+8g%iDiv?onGXJuzH#MA8BieH;IJ(o;;O2-8xwS;bY z{2~qcajaqw@KZJ*1y~ORv$YF|o@C~;v#6F3V4ob}j4*BDsqJc3e~&z-=)e&1rA#K* zByO81{>y8HxvPw&Qm$OTszMZ@gn0Fy7_Lv<3*FOdlwI`QDd9+h+B#+YbH92Pce<0K*B}+4 ziluv+-k^b4L4n_MK{qfILUKf817(74gT+0+c5>2G!;VxZ`qRRFS%3kJW&^8)irS;u zrVwrIiOO|JoK=~H_i>M917ZTm6m_$Fet0uXS_XFtUHUm2v&$4@M!zu#%t#r`ubZ&v zPio5o6}OW{w-$X(^X_&hzGHV38k8ZVUu>rXW#dcW+#P9G$9)duj*$cL*!a;Ay);|; zsM1*GHECwYGrjdO;*>46l6cqeQ!w61X?0Mut2m%};~K7@zFwWq2=}NZ37X!$SeL|c z_=7jSClGfv4T!Z=9t|dwv}@J}wu|TY)?So~m>M>51cWy`n6$E%kv4FYjfBNYPwNQ| zx0S3oe@78gA!uZSEo@kMT63|3wDMp(FrudRH7x?Lk-otBI+-qRo{08X@`4;YLn2I? z{5KKLB)M{>y~i*0Cf^ZPT<}}Je3Hp9K666JkoHImQzmv++O zTkGa~W?9V)LC^IA8FQC}L9g$!Q3edARi^`MV+yYyA6;Onv-*$4aaNmmFc4WX_xUOo z!Z_J2`KzQD{GLQHnPOF< zp1GO+>sSv}S>F$qMa5r@b5R|na5+;BSG;{rT=L0E18K}%%cjkh?jc2Ar5qyn5)bc2 z%JN;jc00=K43e<1-dr*@lv!^m6UY#=_5P4G;@h0z8O|NVuJ`&Kc}_M5JGQ`@((;Jb z65jkKGUr8ERp&#&TpDeJbs1Kk@1lJuhFD78!Tldw5pP!>?g9lp13gE?s^MI1t^TZ44ob}p$<_@0*)^Y72oydA1>#1|g8 zdr|+}dKb~s)Ue``M8-zp(1~1$2yjjPLh&TRGfDmSWOU(ng?wzx!ytiEnb*>6GHk0M z8FLS1Q7L+!o8K?yuNP1oN;UO_619q{1}}DuXOGD+DR=pYw3gjd&^_D$xA*{*QX9`M zzB&C{^^VPrdmiNSon35(2#)x|$|J!|LkTBOJV6@>z&^dhTYy5gh`_ zv^b+dtnuzscQEKRjF=~T!;^FLOG~YLZPV1vuguh~na9RokQ}dNQ>7j^-V!u{nCmeU zi$*O>=fx7-xJo?DwOc%bW{5Sc)F_qJI2ITGr$m<~7Su>rFv7v?aeCbg4@%@kkUB#A z{X-P|DL97Xt*DDYn4foASdmR=juL0%uC}(0z}<51%4ozHJtiWl6f?3S5co6;T{|ig z`^}u{mj0E&%ixnhYSYz!Ez$70$*y1)EdEDIgI7pqRek)k_T%lC3@?{oQs2@jrZD$g zhjLPrA%5*d-8hTsu8(>9`2-LJh?_>sPkN{M_GkRHsim{Xp==v0O9{^7*;mbpyKCf< zWqqw5{tKGXxk~?16_W>IMS|7bevzb5-O42zUV zi_$PcK_9w7Vp5_~DheplAURq_ZiJLHC=CNqu;|W_qq}R2F}g<%#`f-)_g}c{^S!S7 zJdX3o2Q+wBfj+zJ`WQo{^w|Is|6tcqVm%`%9hNGwl1{rK?uz)a{Edis6Vw?vC9@S~ zAV;ZmI{c}!7xy5Gdrr@#X_IC5Q}RI<+~VPFfeK8Xi>|vBZd=dG-A_h5z)YDUA?Gnm zKNn6*H8oJ07tlBA#141ixofH%-+lYcXN~C7>2U0m@e3L{lsv(c3NyWMgcxR%U}_8u zahxN(y6zc_-2j(X|0drog>wWy0rg5Y7&9iT0wnvy_fHDQz1-qnT$vl}mV+B8sAqXt z-uYR(pqesbW^Q-3$-D#cWGC$AELW064ZXDE9_=rv^_%aVRk1n_ba^Twqm*M(R%Ks} zs=@Mq=1rw;e0RhAq=yx}s9AMcD9@aA{)E;{hKgg%GO?}SVRx|JRQ7DWs2?a1G#~&5 z{dcP1(P>O*7a_(n4-wU+x#M%grwk5;05V=z7@uRf=X+tE#!V`HG+A(E%nlml7YUG% zr$}m|O(gL{aqfDL9Y5$TbaBKh-PB|Ca5>=lX_p%g2QOBqY9Hhu74%HsQ%@ouPu#+J zWZ`5@Ap&gj!zxddi!z!|SV0Tq8Meo%XYuYBte{r>5M8AkXHRO`n0chDnry8%+Hyg5 zBay!9?dsU|IvEJF8)Jb*Ar^D?nah#SF*FR@`67(v4cr!MfJ%f&lQlUN8i-G5Av(ue z)h#*10^+k5#X$8R$qeX_5}0zW-vYkpIa7}fXC(e z=})6;a6sKHL!SyXD$f#0-wkckid)YT3Fz&e9S(i;H_? znIhbBG`F=CJm0O~bGdg77N7eJqpy5OSDVHw9jiifr_04~wQzF^aXEbzL_N%v+QHfkKeZbC>Hen9x)3@PHqiSk<$G;1tH%ENA zO+%z^HW-^P3*r-1BhMasuKnUbmZZ*Zt_@K8Fm1{lCF?iK!2a@*;JrEa$>#1`-aZ6C zy;~YTvDay>j7PuaSjJ&(U^-hVv8YB4yRV%Zx6^#kQh0qq9kA~|Fe-19-={4n?>wCC z_C)trhR(TT-etbnduU~Bzo5^=w{XWHbJtc|-I`($t#~bhwFD^VuH8mTp>9~Vq{=no z9<}}iATLz>q#{Qw8~8va9N};r0O+t7@>QsQj+Ff2kQ1BO(k=h%z2dEIb=`<9Zqk%^ z_d)0K`*Yr+z{ZKzW5DHBMBc441DCfjwmm2eR(Sk_$7e!a;eM2{;)+Y|T{5nLm0Y(& z%~r6IQ@AC;T7jYUxnV-c>7%#XjJ~eN#^!ujYFY;cyY*vNq3F-i4<$xxRPi0)?z$Xs z5^-Hj36t^`)t%D+h{RIc$X8>4I6?1yI=<4g`F7b_YO`vC#Dvl-S2N^RG22l`Mvj)T z2(-E12~jHMOgq>QS5one=52fzj$cv3QJYVD^SD)NfEP9<*Pu`2iR`pUwJ~y49fKW! zT`#cJ6s&6oO<->AU4Eq$VXfH9wuA$;41Kx{IWaf@_qxMZy)UXF5Pl^yA0wZ!AW=pi1 zE^6${b#u2J2W>QO)t$LNgqmx%JGPcbP0Qf6B~PX;55LF&*NBpj6y#WYNSU={;G(1S zOyPNRynD}C(o?k(j?Qo?YI*vNm)^2ZBcgvt2$lLwI3xbiX`Z+}HB+3i9R2Koy|=LM zeRpF`zLGFS93^d8#(YMAfk#0KF8RM}{V*R|sE~LVv}Ru!#4axm7fPL`E*K!iZdx|H zpD2qjc)X0=akG0sSY1;iG7(1~@2J^sl%}q|VYE#FzH1cPe%v?zb}i}nB#})Cv_`?p zjT<0V<=sVbV@4FJ&7e0$Eb@crjfhlk8|PD?`Ew?Pns$8#w+`pHael?o2fXDiZk1}$ z_Wb1}-mOV)Hv3uv@;M*)Yoy{U?#~+2yo7Z}w?QnE8O3%{?^RL+MFm8NHT>>F`^h%! zyO5G6WNS|nDfM57ASFvZkm1QzL8)Fdc?L4$SxMt=RxHC&Ru0Vb^@v#kdnxi)t~4)h zW<8(fg)HcyANZ^?H?E)cg2Si=4wVW7?4b+l0Q`SyJboPqmDL6ThGD6EIu@M=_scn7 zRSeQF?_rGZQ*Qir~lw~G{TVf@6=+b zTN>^5IwS1coy1;S+8m)D3@S8KyFCw+4^(`KhSa{IH(2hsOe4J#Ts8Xd<;>N^N+;4D z>{?%hR&^6OWUOeO7ApJr-qDNE^zp}LhhYMbUu~Ezm@*q&7%9HFHMTK)zUqI)|w2(-h1BHnW483lyqt&zmCaa zGn~X^&I!{63^+&;$J26kTiUa9~%=(s952yp0TAt zB_w%#rS6>2f8A_f&Sw4Sr;9SzqIiZVv13YE`#6|t=C3cGF77UG*R^X>1m!nt5pFA8 zY$)P{b2s6X3mjh+JD%E-@yz8v0S8`ys*ruTQUkO~uC~K#(Cc^qZZ*_oX4*w;$X3$g zV94w%fYv?ZC6pn=J!fmK>Q?qK8erz6B00;ELnk^vAaODu^EykUlRdUMA|8=1NF*n{ zOcJN|GBWD49<644;EI2ZJtJa-m?;h~^v9$}(I#(pQ(aq{WVVW%<~2@gt7cp(l z&L!79D%B-_JvI(7dIO{MzKL=;P{Ehd_o$!LwM-II27(AmD4x_$uQXwrYO-odzuI2Y zSgsJn&WUHpa^q+^qHN;nOIGRZ)jq|zd>4>hacO}4R>J@s%=pv*KOV;381R|zG(DqV z9%JoyK&{ju)59aVy~^S3YRYw`AZ1Lf{L8zM8|3O(>By&(wDIB(fj4XXXRT>g*x$gK7tK!A87nyMTzn)A+y0;c)Qh$Z4y~=U60(_82SuZQc8olB6hw18z!pV<@00$#SXA5N(L7$Nf8OTmT zY^Ln`tP1a&4JR=*ec>Nx4v(=GW>a3Mv7nMNEh#hTPhAEsvvmg3Pl>Sm6RqWkU)0f* z&G<^t)&d?d+plPQorZ^QsqWcOn%y<)_L3eX^14=d%7had33rm_Hj|}J$?LGxdJMTD zT{Kf7CsmE)3y))3?Db?7hKtFTz8P6u91PY8MRpEIOv2H0W-Vn`)nXgn-m%5o-*7Q$ zK7*m@F4qxp8$Js`qC=rN*%zOto+rakC2YSh2~m7n?WegJFjwCvzFnu(H=hf50Py>j+`PVRThZW^Lq18+$tPZ_}vuGoywfeCoeJVpnEO-97f~SBZ};^OQ>~ zR`M>2>Gi!lU#45w{t+3~WcB|`*RnN9U(;aPQhw$0xOSeF$$$C1_Zs8Zpwgf$&P&3Z z7>hT9^|txZCM z=JD)>Uf$8{U`vs!=(C*UPDsEX&;{eOH9doxschtyk*EWUcv2=&)kpR;QECNVYQp{T zaC!c*wC8Q0ce49#(c_o25eg^rjK#2U{GV`CH??x>2vJx^@A}AP??&2n=YUX`!K$(` z;j=!$xd1d_5ZRK+x0>R)TEVd8zSnk1y972T5$j2EQD-NA&42Lh1{1y;xgaRK1Df(I zQpR$rquge~debG6V1hqnhlA*uvB1FWBL4?h=I-dg5^&hxGk|G8MBwgTGI0wL#Oi)2 z52bt2IbGb&`OmOMcXu&)Oq8g+?=7^PYu|Z7?H-&e%Hg(K#x-XfTa&4{Y<_@JAg*Sc zCkb+vKu@>m3uutYHpTnZ=5%bfho?pip|aH5OB_qE%7KlT^TbQDgd0Q_SC92KpfF;? zy7BT(Jxf#j7%V7;?F6ayR(Uc?PlcoV(#-TXvfJop_;5~rw@Xg^z3vs_TI zEmI~W-CNZqZ{PT#(YpH4>NbbH;ew))iucOuseuo<0YNN7=2mlJ?0<=$HH^D-=I+e% zdV`1VyUWT9nt9WKh2C8}96BnZp9l*No4dGa2;SbP;+@_8EOel6$5HpV7u+1?BtSdF zIx;io6)>+MvFaQ8y-z`sOpF+OqTV`c$-)tKOfuV*b3_cdC;u%{4Y0ny=cC@ryz&6b zqx48A4JIocz#gZo;0t?{MTpjUZl@|sReKrpWVa{~Upv|+|A=CG%&w{&XFymJ4)-OC zfy{ev{-c|SWV9X54eES*E$DZTG6jpY*CQ}A-PX^~uI^jz8`UK=qWaw9AL4~?#Klqm zr#?CMoWJb^V5~#DEPv!#9xKlC`W+(DR^}#Sb44s&Fpr(<#(To~k&>+p*)TNV=obSa z=HuA~_E4a_mT#Ckbb0B&fkbgTl(;TSwV1OB_z?Xm^%bc3Br=+P+oE}mEz!p6Su3e6 zg2OIKNOjZPCbATsoyNGspUW2|{+Q`xxri~#`iA6X_G{y0D9j^8!mL^bMh5^X;EH*c zc>!wDkY0EwEJu2OKGk}MJk*vv^+UJiq{-cH%u3+#SJ|2Jdp=geBAFjpIO!9rg9l=N zgdVWAFgyAW(ZauKjm^c3-noa1y_oNPy|9>U{_nw?9DZ7N3Ok~w*&dbSV@Ks4dhCg&Y zEj{JTXMbtr9t^q%s8I>oo}pWg6vN$J47AU@#|A@e8Zbz~c%i$3Jrx|3+q^*`hR5XH zTDUQGvhO4lOzXz1K;>w%b+6MuU*VtZIBixe@?b4)}Sq`O^qC!YVcf;QKxyLF{(jdPb?3 zsaO(Mv3#=cvuS}D2^Fr=y=H`knqV4u zHbF1JP6g}EU}2mM`Q5Mn=IwiU6(i|EHy|)2}$ueVRph`|8P~9VYZQW4&N5` zy7jEwDcb$}TJh52*hbA^#xN=U-=uReIK-AH>QLC?=$}KaO4`VNw}(}hV}%_n7GY=c z4USl9Uz?BUQ;?o*=WjKLTNrE01S9*|a=dW+qq76STMMQOOpNje@!X}0N*6)@sRXeTnEPpIgx_Vcq^La2d%7SE0@!*+RL>t#q&c8;XbH8OG9 zs={8jqPWk$6DmA&ixvWT&gKFVkNaDICnXK~oEd!vxg&zHp_9u|`LO`Ma6^?=iApLT zEcEcTt^}Gx0ZLIquvy&!pqH_?jqxnrxvLZWVwbwQ2J9)^Q>h>`B_3Shq(tC(Qyx$WZ5M%95ibhC%z_%z4xmgB|!k2YiwWx_ZMrdqAyxBkTp+kg1;}ZxLKGbcM zCVUix_1S&oz3OR%S{=^O6$6IGX5Ye!&1p^XbKTA72k7QPdw2uns;H_TF`Dr zl@$KeACd&ahVXzOPeF}9$F%H|1^s(ZXFfn|e2D92^U{t`TP4MdVRHs2hNcy{a`bn|QZxl%vNEF0VHFRIQxp*uyh zuKiYQjGHL^Z1@0j{KXs8Ea#OGv2<7cK%I9#F1>0edvo~WM1=Jac+w9PL#QyJwWHf(9&N z@?riTB*r@eF_y%b{jIxYQzh%Y00a4nTFgaYE2+VB)zZyI28=6g@RV`r`y;yLIs2YS z+qWvHu<&bHDDoajR^k>#oc_eI5cGDRQ?g@J6<3YT@L#&8J6?;m3~U?#{PPXyHri=o z_lnZzYUxdPYtA>3o9_q2&s=)r4ONn$htJQ@yxAdtYmNjS5J$5mku{45FSV2d)lDEt zt4+hehICbthZqaWHeK3mXCkrRXn`y6A=;B#q9dOMzR{ ziY|YC0z7tbXVLAoUMH?^Ma%BjlrpvDGIkzR^iDsDLjSoee*bCa&e$I)><1g}ymTw> zDk;@dhDcMUOa!Yt?76ON-Qbl?o>C?HfMiL7=KOGajx*kYYn}c4l+DY&7|__)Hh+VI zUZLJb2A=>+YM+LCRM4EpL9Bm+H2Qcu-7x_CX`i(6^@=^qv?zv3z6N;eQ3w6+$%HxK zV&S4EFMwI4dXMbf!eq0ke1a)Oa|;9b6v1u@8&%&*@*>UX?_zs?V!_^1TGFFChQr0W3#eMDpT`w^Ke%dV1>-T*HC3^77oOJ+iLwgfZA+YdiYJ}$fC}ISE3QgM zx)e{|nf4FZ|9rb_Wer=}Z~X5Uqt;WDvNOf0>c!#eh>~yXUQ?P#lq~dqkLz{p`n)#c zX_WBWke~e6I^Q!evfIitG47EdF_6KKH!+bo{hd)t_USR1cW-WIr_AhXnNuM+@n2n@ z7GtkN-b>?*+X66#iq6rT`{gU&$pp0cs#!KAfqtv` zTb1p@l;5Jl4H>CEzD};AYI@fuiAL>&**D%UPiz`Efr$39cm7DSnU2h<`un7fVxbM1 zK?!dB!u9dSvDv)~S@2_HX7%?ix9(DAe3vtm=xG-jRWa0qYv zKHOy2j=DGRyR9pVTNW&~$HUlmhsGto-}H%gn=kp0_P1irEZTb6!1(+?#`XzHsa0Qo zagdC-gFs>CvxYX|-~aFfhE@~|I(2m8x024=u$->Rk3;MfcU;{B=fydhn=vP>AW3 zafPv&j1}s4bK}5y&v3CecXRvm16R)=tNCV)cEUZWpm0&JS80nhUGx1XI{N{pODT-X z3{J#yj;Er28I!%1Is7C0kanjttbh(BpuvToTPYdPUbA?sS5Xg15}+;#zdA?ILbB9#jL~i(TkZTW?ihUv1G=zxp7Z!J ze&IBLU(LaU90t&>A1q(K`!X+AYT}67ml`W^X{{ha>v!*s-DxyPsi7IuEC923tTarz zPuO#}%5mkVUKUr|Y22e-d7KUcP>>@yL=3)VdqkSK7cy#FBs+wSU9FZORJOC>UcA>m7;&}E+zOSPwyJ!VqC zl`7GvT&l{aohy*vR=&||GE%YPtJ__;Pt-oM7l!F^uVu4Uk0Y)$&UO~6b?L50zb9!`aEfI6d6UHx<-s0q=v>1k%BZtT&04rv$S}LpyvLS_B z9wz})!<;wPb93d~Dbwh1VL2wV?343QHd7g2#&RWR_v8X8%S9lY^(^ok*3e~B(1&u&ExQwiw#^Dj16Dg-12brijzyP()SpkTm!kTc z_MKQ`1^my0>(cPt3(8X!o>d#4%^J!2rlPW9w_Nq3F2a!Ks1NQL=V78n>yn=y;p>zw zHgSj%VipS(ZK;{aF&fx3M9@6=*4NCv^f3gHSwkD#`v_{+E3_7c$geJVJNS!R@MZm6 z!*d*(Ug?zan5Mkx#!uSZiNCfs3)mDET(A2TR~&8-)?IM#LEc3Ou0sEuM>h>jC zJ+h?Y?lPre3Z>P@r~fIA)l^WJW6WR-7VsJ4QCSqgLQTUUSY_e1(s=nh%^WtFt&P_9 zo>|vYt^+J&jVJ)XWplMlxFI)SJPLkWYC|RM)gw|z%jhOrjUn?D|GqyXDJ%ixw(1*@ zT}rxG1YGBqNweD0W|~;-el+()iH?6CZt3NI>AB0%BU{RUCjo2@(;uIu?q3Ygzkj~% zC-abFQbNXbBievEQb5`+*bpG?!R(P=)OqX!u7 z)bJ>*$`wcQH^f7zNkWfA>!M>eY2L8MNPC&~0R*1P+vQ*F`h$&GCE#Y5P}aerlOS>W z0mgBWT$hShA+ZZbzc!J=GW;9fRw-OjhUa#a`ohpvATC+siE2TA8*zBAT!D$B$w3bO zMM-XO2E?Ooz<*MO6Y#ez}344Kdm z5~7O9gfv~OPBe?-XF6Y5f=hc=y33S-5%fXcL2>2YXcnLNIi;Y(%IoQSQ5Npz)pQ1@ zbZSRm>v&DBznx9*`rNR-5kIHGq!{3oBY|wyI;e}KjM82KCC>ve1xnf)oEQv`Rw&Es_9W+2L&|2w-* z7GouX_(~iLShEIgEeG5WCd6GE4i2U}i@W18#M1%!zkTz(zd<>-qV*kjn2U@F7ke2_ zW;iy7%V_f5Nc!{{8V%9}dCLN8*^DGDS8AS=<^78*?s*V3J)+d}5p}>E^v%|ySF_p5 z9jmQ0eBrt!LH-%)+uSgn8GV4=dKb>IS0m<;+p~7J9wzU;mQ(-BxZiBU8Hf{GoM$0! zj@kCrL7uW_ZQV*J@pizx8)aJxyOdLCh8xvSu7h>p?e;oanVxD5LT^FxuDJ1W200PT9ampW8#I zHUIjHX!gj7d9C?b`1}{Vg7FStYlWP5+4TJ_@5so8y(NnD*1(EJ`lydP5?ISsJp}jc zZz;2dl}Ex{WebW8aqiL7j%1|Ea&*`M9Q{EE_`o-k&)?{mI5c{N{c{htPU~me=~Dc1 zqJ;MSWi$(-M3ia|C5G>sT8D-x5WS0C8hsLMKIoYKzD|9RQOfM_PgTBntVG|MMRz<) z&AP(#yQkVo7~900FmCj>e)+TA?n)yHMbi-*0#_etXNWrpX z`22Sdjxyg2aP#b&E<{fqmA5syFtKee>u~nYNw$k>fzK|U?zW1b87$)Csl>(A`V}Jf z;>Pk$O{icjsT_ey-%)DamWLTxMac23sFk(Y%&Lp&lSA$N@G}FppIB3OjBre!H6FV zxne(buWA4JglRawKuM;kwG#F+1TINcn8qCl#E{3iU^2c92>$3GRns)Yx-R)2Ck z?5)|UEujyqf^Y=9Z_2ffm4Ve*e>Fm|fGx4=rF(}?zScqIUmX)1uit^jvVa$Y{k85vh3@hdE}~D?#Qf7F zk}7s!41RsE5l-j~poagw1a^;GdKJt=sNM8Vhi;r>WPinmv?NCX4GV3!CR8f!sse>SrpYaXM(xWn5y~J!DQde}v-eTE-QRJN& zs0i@?qKKktbGnsKOPR)mH(p?+J>1Ust6|c*mGjdep*LuGId$Jo81$v`-RyrJ_cW|e zsv}-Kl6OP=6HJm9cUdt^>e0Ol*=NWij|F%H=NN4^+ztyd;G-Ai!33s0 zJ(SP{8FnI15e108)F5wOAZr<2_lk241;LFi>`GlH>p2>T{%&8QYVO4-VagB#%aDmZbApE)j|nuGA24@Pj0^DM zCd?vB3=YnKU*pWn6`t3F+uL%G4aYJV96<|a0S5k^*7FYj2gow|Er zQh5Vc?kcHe#Xa_N=Ff=SM%{X`({FQ)eX(7TVV(p;n_Gd<5r=JsQ3pd^Hh9A-f|!PY zCZwb8V%g~rfHr>$G@PB|-lT?*dt`mE`$}|+=UAz%L_3I-KBHw1`EMl(|9~-3W|=*0 zUywMu%cSGX62*q4p0G>z-gVlecLkgC;OZ1rJv<7G?g*|5?e+TmPd=F zIXu4fk_q)BM>GWhVB=b+*-@BQiE&PWX5Ubr+eC zP6h9ul^S{yrN!Qu%BVp6DkN>gNct8fk9B$DW2M9)l2VW+7VkpivLnFdWgU$}h`!It za1tqmw82zZy#^Ax6=gDXwa{Usu?FZ=5^xUfgUvm<_~ zY8CRh8>c1wp=>R~{^O%hS%+5IMR?CQN5yS)3~(&eLc`0B{W`KvI*D07OWH#jy}rY@ z#SeG;9FBYuJh*H=OHZLakNiHNNL^NgvuJ(Hv1_f8EDuCBHaN&-RquNLunU%*JuV(u zzZ0+rxU7-$+XgReYCWC=(j~3V;3v56DBCBx#^4nQa_(zEYZ4OXCz0j(ntv}?llse* zzIW<1-?vQVl&-Dt!nTbz)l#j05gc$olp|8G1*Q-?eHm>VZME8G^{Ey-=Ch$4Z@hyV z8=_^+JG2i=kVmF)Ra*h&UpwTPwC6UC!GHI}ZzC+QI@8-_zX!-YP`Smx)pG#^TGh6H zr6kuKx0I2vEm7|HpP|n1=1*l@vDcS;9cuNwT10-FP88~WEbCSmEXKSb9jX->bw58{ zw9D25(|n|;S=;)ZJg8AH@KY3$q}3dpG|etv(M}bH9O_n&wwCG|5v;qFTO;%llCOBcLd_n-&kQ#5;aatl;Yfljd!Xuly+U4DU@;vdrsz_Jr6z7$y ztI!HOR2+Z90f|XzABPuway0k!5gEQ)SBq6{sFjTZK;#ThZv-Of^czW84fKa&3)Dr# z*$~mH2U=;GUQxm$JG{7QUwl269M|Un`0clz8|3z?xys_rFh zPTpMR@Upx2y*)EA))0yjKz3kP*PDBj#Kv8a0jPVx-8UpXoQyQ2+CNS>2*enqV@Ny= z4bfi;efaG7b#sA}0z@v#v7dP~L6}jt%zm(cMY6ltd@8yWx6VW_14^PX_th z$5G3g5z*O*63Ze>gY!fSFabJJjG8UawsF3bZTIN^E`TUU=^~Rhr3=ezdBrcv%Q)Ca zzp@M8ft7F8hwt6L&xj;os>ltRqjRyxD(!aj;<%{v-}Jn`f1(ssfJ@R?Id`6Sar)&l zY8v}qGt(oR`V*K#RNDjYwAVpY&xeF1nKay|5B+)qBVFa55Ke>J297d&467e|6YGRqS%T zKi%u%ieuDUVoV>8@uhxn*GzkT?U~PTw5zKkY}G^Mh??R_^IzRPM$@ zChys~>iN>SpQat#m>9^3w=E3aq|Ts^jV&1&ciNupCjCk@Paoqw3nhSpb>kczh{mKrh&FHpv_V1tuHde-y0hE4j6v-oW`va zM?YB-%W~FWqhdNf-p+PtE0NtkJS=B4h_nRF75TAr#)DF*wBCvR!vtd*Z!PBQN8?L9b>0F^jMuXp`gY0t>Bijlwks6ehDFFLF|4cl1g z)nHNj!WIiykxDq6iNTdf;+2G2@=|I94(@-pcBNI5qUbG#(Z2KwB=9{J55RKX-NxtvhHl>F

    ^Z5w+jZ2`8SUu<2)`m4}CDz2_8;p&f)v@z(vDp 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 HA=2W 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®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%0AD>P^-jy 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 z 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�o97QsDU}{@MoZtk6@}U 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•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 z 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≫FXr~DL;yXl?OibeA7P*RiDRH)j~G8 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%0DQYx21sp+Y$_SO>k;P}}g9%Mep<8%}rO6P_^q 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

    cJ`_b*rtaF;$UzqGy4$dF#?^32- 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%0Dw>U6H29gW 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%0AUcz==T0jt(+h|Zkp9Qw^o@$%AVV;7MX-UmIJ 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 pd21Iq`*#b002M$NklH%@esclOEw;e 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%0Ab>Eu&F869KM@*NA(YOIZ19YPkO`vW0U@xXV~q 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åo~09zZy-Fuewj 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

    D@-T3=uycF{@8uK7N_!&GpCis?|6Ip?b0RX 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Ꮹ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

    |q4yE5gIXWqD)4&x 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

    a!=A>WXkpYPM3tk-?NI4Cavxu%wc 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%0Aja;T+^&R;a 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

    gmk4k&a+JZoW$1L6oZ5dar2(rp7{?ECqoD` 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

    TO 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

    }gK_El(~ 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

    %3 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®oOQ1T@Dg?u1hN@7sMJ5>)11-<+DQ=bs%5 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