Overview
CRO Balance
0 CRO
CRO Value
$0.00More Info
Private Name Tags
ContractCreator
Latest 5 from a total of 5 transactions
Loading...
Loading
Contract Name:
Supervisor
Compiler Version
v0.8.2+commit.661d1103
Contract Source Code (Solidity Standard Json-Input format)
// SPDX-License-Identifier: BUSL-1.1 pragma solidity ^0.8.0; import "ECDSA.sol"; /// @title Supervisor is the guardian of YPool. It requires multiple validators to valid /// the requests from users and workers and sign on them if valid. contract Supervisor { using ECDSA for bytes32; /* ========== STATE VARIABLES ========== */ bytes32 public constant CLAIM_IDENTIFIER = 'SWAPPER_CLAIM'; bytes32 public constant SET_THRESHOLD_IDENTIFIER = 'SET_THRESHOLD'; bytes32 public constant SET_VALIDATOR_IDENTIFIER = 'SET_VALIDATOR'; bytes32 public constant LOCK_CLOSE_SWAP_AND_REFUND_IDENTIFIER = 'LOCK_CLOSE_SWAP_AND_REFUND'; bytes32 public constant BATCH_CLAIM_IDENTIFIER = 'BATCH_CLAIM'; bytes32 public constant VALIDATE_SWAP_IDENTIFIER = 'VALIDATE_SWAP_IDENTIFIER'; bytes32 public constant VALIDATE_XY_CROSS_CHAIN_IDENTIFIER = 'VALIDATE_XY_XCHAIN_IDENTIFIER'; // the chain ID contract located at uint32 public chainId; // check if the address is one of the validators mapping (address => bool) public validators; // number of validators uint256 private validatorsNum; // threshold to pass the signature validation uint256 public threshold; // current nonce for write functions uint256 public nonce; /// @dev Constuctor with chainId / validators / threshold /// @param _chainId The chain ID located with /// @param _validators Initial validator addresses /// @param _threshold Initial threshold to pass the request validation constructor(uint32 _chainId, address [] memory _validators, uint256 _threshold) { chainId = _chainId; for (uint256 i; i < _validators.length; i++) { validators[_validators[i]] = true; } validatorsNum = _validators.length; require(_threshold <= validatorsNum, "ERR_INVALID_THRESHOLD"); threshold = _threshold; } /* ========== VIEW FUNCTIONS ========== */ /// @notice Check if there are enough signed signatures to the signature hash /// @param sigIdHash The signature hash to be signed /// @param signatures Signed signatures by different validators function checkSignatures(bytes32 sigIdHash, bytes[] memory signatures) public view { require(signatures.length >= threshold, "ERR_NOT_ENOUGH_SIGNATURES"); address prevAddress = address(0); for (uint i; i < threshold; i++) { address recovered = sigIdHash.recover(signatures[i]); require(validators[recovered], "ERR_NOT_VALIDATOR"); require(recovered > prevAddress, "ERR_WRONG_SIGNER_ORDER"); prevAddress = recovered; } } /* ========== WRITE FUNCTIONS ========== */ /// @notice Change `threshold` by providing a correct nonce and enough signatures from validators /// @param _threshold New `threshold` /// @param _nonce The nonce to be processed /// @param signatures Signed signatures by validators function setThreshold(uint256 _threshold, uint256 _nonce, bytes[] memory signatures) external { require(signatures.length >= threshold, "ERR_NOT_ENOUGH_SIGNATURES"); require(_nonce == nonce, "ERR_INVALID_NONCE"); require(_threshold > 0, "ERR_INVALID_THRESHOLD"); require(_threshold <= validatorsNum, "ERR_INVALID_THRESHOLD"); bytes32 sigId = keccak256(abi.encodePacked(SET_THRESHOLD_IDENTIFIER, address(this), chainId, _threshold, _nonce)); bytes32 sigIdHash = sigId.toEthSignedMessageHash(); checkSignatures(sigIdHash, signatures); threshold = _threshold; nonce++; } /// @notice Set / remove the validator address to be part of signatures committee /// @param _validator The address to add or remove /// @param flag `true` to add, `false` to remove /// @param _nonce The nonce to be processed /// @param signatures Signed signatures by validators function setValidator(address _validator, bool flag, uint256 _nonce, bytes[] memory signatures) external { require(_validator != address(0), "ERR_INVALID_VALIDATOR"); require(signatures.length >= threshold, "ERR_NOT_ENOUGH_SIGNATURES"); require(_nonce == nonce, "ERR_INVALID_NONCE"); require(flag != validators[_validator], "ERR_OPERATION_TO_VALIDATOR"); bytes32 sigId = keccak256(abi.encodePacked(SET_VALIDATOR_IDENTIFIER, address(this), chainId, _validator, flag, _nonce)); bytes32 sigIdHash = sigId.toEthSignedMessageHash(); checkSignatures(sigIdHash, signatures); if (validators[_validator]) { validatorsNum--; validators[_validator] = false; if (validatorsNum < threshold) threshold--; } else { validatorsNum++; validators[_validator] = true; } nonce++; } }
// SPDX-License-Identifier: MIT pragma solidity ^0.8.0; /** * @dev Elliptic Curve Digital Signature Algorithm (ECDSA) operations. * * These functions can be used to verify that a message was signed by the holder * of the private keys of a given address. */ library ECDSA { enum RecoverError { NoError, InvalidSignature, InvalidSignatureLength, InvalidSignatureS, InvalidSignatureV } function _throwError(RecoverError error) private pure { if (error == RecoverError.NoError) { return; // no error: do nothing } else if (error == RecoverError.InvalidSignature) { revert("ECDSA: invalid signature"); } else if (error == RecoverError.InvalidSignatureLength) { revert("ECDSA: invalid signature length"); } else if (error == RecoverError.InvalidSignatureS) { revert("ECDSA: invalid signature 's' value"); } else if (error == RecoverError.InvalidSignatureV) { revert("ECDSA: invalid signature 'v' value"); } } /** * @dev Returns the address that signed a hashed message (`hash`) with * `signature` or error string. This address can then be used for verification purposes. * * The `ecrecover` EVM opcode allows for malleable (non-unique) signatures: * this function rejects them by requiring the `s` value to be in the lower * half order, and the `v` value to be either 27 or 28. * * IMPORTANT: `hash` _must_ be the result of a hash operation for the * verification to be secure: it is possible to craft signatures that * recover to arbitrary addresses for non-hashed data. A safe way to ensure * this is by receiving a hash of the original message (which may otherwise * be too long), and then calling {toEthSignedMessageHash} on it. * * Documentation for signature generation: * - with https://web3js.readthedocs.io/en/v1.3.4/web3-eth-accounts.html#sign[Web3.js] * - with https://docs.ethers.io/v5/api/signer/#Signer-signMessage[ethers] * * _Available since v4.3._ */ function tryRecover(bytes32 hash, bytes memory signature) internal pure returns (address, RecoverError) { // Check the signature length // - case 65: r,s,v signature (standard) // - case 64: r,vs signature (cf https://eips.ethereum.org/EIPS/eip-2098) _Available since v4.1._ if (signature.length == 65) { bytes32 r; bytes32 s; uint8 v; // ecrecover takes the signature parameters, and the only way to get them // currently is to use assembly. assembly { r := mload(add(signature, 0x20)) s := mload(add(signature, 0x40)) v := byte(0, mload(add(signature, 0x60))) } return tryRecover(hash, v, r, s); } else if (signature.length == 64) { bytes32 r; bytes32 vs; // ecrecover takes the signature parameters, and the only way to get them // currently is to use assembly. assembly { r := mload(add(signature, 0x20)) vs := mload(add(signature, 0x40)) } return tryRecover(hash, r, vs); } else { return (address(0), RecoverError.InvalidSignatureLength); } } /** * @dev Returns the address that signed a hashed message (`hash`) with * `signature`. This address can then be used for verification purposes. * * The `ecrecover` EVM opcode allows for malleable (non-unique) signatures: * this function rejects them by requiring the `s` value to be in the lower * half order, and the `v` value to be either 27 or 28. * * IMPORTANT: `hash` _must_ be the result of a hash operation for the * verification to be secure: it is possible to craft signatures that * recover to arbitrary addresses for non-hashed data. A safe way to ensure * this is by receiving a hash of the original message (which may otherwise * be too long), and then calling {toEthSignedMessageHash} on it. */ function recover(bytes32 hash, bytes memory signature) internal pure returns (address) { (address recovered, RecoverError error) = tryRecover(hash, signature); _throwError(error); return recovered; } /** * @dev Overload of {ECDSA-tryRecover} that receives the `r` and `vs` short-signature fields separately. * * See https://eips.ethereum.org/EIPS/eip-2098[EIP-2098 short signatures] * * _Available since v4.3._ */ function tryRecover( bytes32 hash, bytes32 r, bytes32 vs ) internal pure returns (address, RecoverError) { bytes32 s; uint8 v; assembly { s := and(vs, 0x7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff) v := add(shr(255, vs), 27) } return tryRecover(hash, v, r, s); } /** * @dev Overload of {ECDSA-recover} that receives the `r and `vs` short-signature fields separately. * * _Available since v4.2._ */ function recover( bytes32 hash, bytes32 r, bytes32 vs ) internal pure returns (address) { (address recovered, RecoverError error) = tryRecover(hash, r, vs); _throwError(error); return recovered; } /** * @dev Overload of {ECDSA-tryRecover} that receives the `v`, * `r` and `s` signature fields separately. * * _Available since v4.3._ */ function tryRecover( bytes32 hash, uint8 v, bytes32 r, bytes32 s ) internal pure returns (address, RecoverError) { // EIP-2 still allows signature malleability for ecrecover(). Remove this possibility and make the signature // unique. Appendix F in the Ethereum Yellow paper (https://ethereum.github.io/yellowpaper/paper.pdf), defines // the valid range for s in (301): 0 < s < secp256k1n ÷ 2 + 1, and for v in (302): v ∈ {27, 28}. Most // signatures from current libraries generate a unique signature with an s-value in the lower half order. // // If your library generates malleable signatures, such as s-values in the upper range, calculate a new s-value // with 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEBAAEDCE6AF48A03BBFD25E8CD0364141 - s1 and flip v from 27 to 28 or // vice versa. If your library also generates signatures with 0/1 for v instead 27/28, add 27 to v to accept // these malleable signatures as well. if (uint256(s) > 0x7FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF5D576E7357A4501DDFE92F46681B20A0) { return (address(0), RecoverError.InvalidSignatureS); } if (v != 27 && v != 28) { return (address(0), RecoverError.InvalidSignatureV); } // If the signature is valid (and not malleable), return the signer address address signer = ecrecover(hash, v, r, s); if (signer == address(0)) { return (address(0), RecoverError.InvalidSignature); } return (signer, RecoverError.NoError); } /** * @dev Overload of {ECDSA-recover} that receives the `v`, * `r` and `s` signature fields separately. */ function recover( bytes32 hash, uint8 v, bytes32 r, bytes32 s ) internal pure returns (address) { (address recovered, RecoverError error) = tryRecover(hash, v, r, s); _throwError(error); return recovered; } /** * @dev Returns an Ethereum Signed Message, created from a `hash`. This * produces hash corresponding to the one signed with the * https://eth.wiki/json-rpc/API#eth_sign[`eth_sign`] * JSON-RPC method as part of EIP-191. * * See {recover}. */ function toEthSignedMessageHash(bytes32 hash) internal pure returns (bytes32) { // 32 is the length in bytes of hash, // enforced by the type signature above return keccak256(abi.encodePacked("\x19Ethereum Signed Message:\n32", hash)); } /** * @dev Returns an Ethereum Signed Typed Data, created from a * `domainSeparator` and a `structHash`. This produces hash corresponding * to the one signed with the * https://eips.ethereum.org/EIPS/eip-712[`eth_signTypedData`] * JSON-RPC method as part of EIP-712. * * See {recover}. */ function toTypedDataHash(bytes32 domainSeparator, bytes32 structHash) internal pure returns (bytes32) { return keccak256(abi.encodePacked("\x19\x01", domainSeparator, structHash)); } }
{ "evmVersion": "istanbul", "optimizer": { "enabled": true, "runs": 200 }, "libraries": { "Supervisor.sol": {} }, "outputSelection": { "*": { "*": [ "evm.bytecode", "evm.deployedBytecode", "abi" ] } } }
Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
[{"inputs":[{"internalType":"uint32","name":"_chainId","type":"uint32"},{"internalType":"address[]","name":"_validators","type":"address[]"},{"internalType":"uint256","name":"_threshold","type":"uint256"}],"stateMutability":"nonpayable","type":"constructor"},{"inputs":[],"name":"BATCH_CLAIM_IDENTIFIER","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"CLAIM_IDENTIFIER","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"LOCK_CLOSE_SWAP_AND_REFUND_IDENTIFIER","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"SET_THRESHOLD_IDENTIFIER","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"SET_VALIDATOR_IDENTIFIER","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"VALIDATE_SWAP_IDENTIFIER","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"VALIDATE_XY_CROSS_CHAIN_IDENTIFIER","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"chainId","outputs":[{"internalType":"uint32","name":"","type":"uint32"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bytes32","name":"sigIdHash","type":"bytes32"},{"internalType":"bytes[]","name":"signatures","type":"bytes[]"}],"name":"checkSignatures","outputs":[],"stateMutability":"view","type":"function"},{"inputs":[],"name":"nonce","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_threshold","type":"uint256"},{"internalType":"uint256","name":"_nonce","type":"uint256"},{"internalType":"bytes[]","name":"signatures","type":"bytes[]"}],"name":"setThreshold","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_validator","type":"address"},{"internalType":"bool","name":"flag","type":"bool"},{"internalType":"uint256","name":"_nonce","type":"uint256"},{"internalType":"bytes[]","name":"signatures","type":"bytes[]"}],"name":"setValidator","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"threshold","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"validators","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"}]
Contract Creation Code
60806040523480156200001157600080fd5b506040516200119c3803806200119c833981016040819052620000349162000146565b6000805463ffffffff191663ffffffff85161781555b8251811015620000c15760018060008584815181106200007a57634e487b7160e01b600052603260045260246000fd5b6020908102919091018101516001600160a01b03168252810191909152604001600020805460ff191691151591909117905580620000b88162000242565b9150506200004a565b50815160028190558111156200011d5760405162461bcd60e51b815260206004820152601560248201527f4552525f494e56414c49445f5448524553484f4c440000000000000000000000604482015260640160405180910390fd5b60035550620002809050565b80516001600160a01b03811681146200014157600080fd5b919050565b6000806000606084860312156200015b578283fd5b835163ffffffff811681146200016f578384fd5b602085810151919450906001600160401b03808211156200018e578485fd5b818701915087601f830112620001a2578485fd5b815181811115620001b757620001b76200026a565b838102604051601f19603f83011681018181108582111715620001de57620001de6200026a565b604052828152858101935084860182860187018c1015620001fd578889fd5b8895505b838610156200022a57620002158162000129565b85526001959095019493860193860162000201565b50809750505050505050604084015190509250925092565b60006000198214156200026357634e487b7160e01b81526011600452602481fd5b5060010190565b634e487b7160e01b600052604160045260246000fd5b610f0c80620002906000396000f3fe608060405234801561001057600080fd5b50600436106100ea5760003560e01c8063935d91dd1161008c578063da8bd3fe11610066578063da8bd3fe146101f4578063f7ca802314610207578063fa52c7d81461021c578063faf55b5c1461024f576100ea565b8063935d91dd146101b35780639a8a0592146101c6578063affed0e0146101eb576100ea565b80635938c87d116100c85780635938c87d146101395780635a0f88301461015057806371aca57e1461016557806374892a721461018c576100ea565b80633c0e39bf146100ef57806342cde4e81461011957806351f61efa14610122575b600080fd5b6101066c14d15517d512149154d213d311609a1b81565b6040519081526020015b60405180910390f35b61010660035481565b6101066c29a2aa2fab20a624a220aa27a960991b81565b6101066c535741505045525f434c41494d60981b81565b61016361015e366004610d7d565b610276565b005b6101067f56414c49444154455f58595f58434841494e5f4944454e54494649455200000081565b6101067f4c4f434b5f434c4f53455f535741505f414e445f524546554e4400000000000081565b6101636101c1366004610dc2565b6103bf565b6000546101d69063ffffffff1681565b60405163ffffffff9091168152602001610110565b61010660045481565b610163610202366004610d11565b610567565b6101066a42415443485f434c41494d60a81b81565b61023f61022a366004610cf0565b60016020526000908152604090205460ff1681565b6040519015158152602001610110565b6101067f56414c49444154455f535741505f4944454e544946494552000000000000000081565b600354815110156102a25760405162461bcd60e51b815260040161029990610e10565b60405180910390fd5b6000805b6003548110156103b95760006102ec8483815181106102d557634e487b7160e01b600052603260045260246000fd5b60200260200101518661080190919063ffffffff16565b6001600160a01b03811660009081526001602052604090205490915060ff1661034b5760405162461bcd60e51b815260206004820152601160248201527022a9292fa727aa2fab20a624a220aa27a960791b6044820152606401610299565b826001600160a01b0316816001600160a01b0316116103a55760405162461bcd60e51b815260206004820152601660248201527522a9292faba927a723afa9a4a3a722a92fa7a92222a960511b6044820152606401610299565b9150806103b181610e8f565b9150506102a6565b50505050565b600354815110156103e25760405162461bcd60e51b815260040161029990610e10565b60045482146104275760405162461bcd60e51b81526020600482015260116024820152704552525f494e56414c49445f4e4f4e434560781b6044820152606401610299565b6000831161046f5760405162461bcd60e51b815260206004820152601560248201527411549497d253959053125117d512149154d213d311605a1b6044820152606401610299565b6002548311156104b95760405162461bcd60e51b815260206004820152601560248201527411549497d253959053125117d512149154d213d311605a1b6044820152606401610299565b60008054604080516c14d15517d512149154d213d311609a1b60208201523060601b6bffffffffffffffffffffffff19169181019190915260e09190911b6001600160e01b03191660548201526058810185905260788101849052609801604051602081830303815290604052805190602001209050600061053a82610825565b90506105468184610276565b60038590556004805490600061055b83610e8f565b91905055505050505050565b6001600160a01b0384166105b55760405162461bcd60e51b815260206004820152601560248201527422a9292fa4a72b20a624a22fab20a624a220aa27a960591b6044820152606401610299565b600354815110156105d85760405162461bcd60e51b815260040161029990610e10565b600454821461061d5760405162461bcd60e51b81526020600482015260116024820152704552525f494e56414c49445f4e4f4e434560781b6044820152606401610299565b6001600160a01b03841660009081526001602052604090205460ff161515831515141561068c5760405162461bcd60e51b815260206004820152601a60248201527f4552525f4f5045524154494f4e5f544f5f56414c494441544f520000000000006044820152606401610299565b60008054604080516c29a2aa2fab20a624a220aa27a960991b602082015230606090811b6bffffffffffffffffffffffff199081169383019390935260e09390931b6001600160e01b03191660548201529187901b16605882015284151560f81b606c820152606d8101849052608d01604051602081830303815290604052805190602001209050600061071f82610825565b905061072b8184610276565b6001600160a01b03861660009081526001602052604090205460ff16156107a8576002805490600061075c83610e78565b90915550506001600160a01b0386166000908152600160205260409020805460ff1916905560035460025410156107a3576003805490600061079d83610e78565b91905055505b6107e4565b600280549060006107b883610e8f565b90915550506001600160a01b0386166000908152600160208190526040909120805460ff191690911790555b600480549060006107f483610e8f565b9190505550505050505050565b60008060006108108585610879565b9150915061081d816108e9565b509392505050565b6040517f19457468657265756d205369676e6564204d6573736167653a0a3332000000006020820152603c8101829052600090605c016040516020818303038152906040528051906020012090505b919050565b6000808251604114156108b05760208301516040840151606085015160001a6108a487828585610aef565b945094505050506108e2565b8251604014156108da57602083015160408401516108cf868383610bdc565b9350935050506108e2565b506000905060025b9250929050565b600081600481111561090b57634e487b7160e01b600052602160045260246000fd5b141561091657610aec565b600181600481111561093857634e487b7160e01b600052602160045260246000fd5b14156109865760405162461bcd60e51b815260206004820152601860248201527f45434453413a20696e76616c6964207369676e617475726500000000000000006044820152606401610299565b60028160048111156109a857634e487b7160e01b600052602160045260246000fd5b14156109f65760405162461bcd60e51b815260206004820152601f60248201527f45434453413a20696e76616c6964207369676e6174757265206c656e677468006044820152606401610299565b6003816004811115610a1857634e487b7160e01b600052602160045260246000fd5b1415610a715760405162461bcd60e51b815260206004820152602260248201527f45434453413a20696e76616c6964207369676e6174757265202773272076616c604482015261756560f01b6064820152608401610299565b6004816004811115610a9357634e487b7160e01b600052602160045260246000fd5b1415610aec5760405162461bcd60e51b815260206004820152602260248201527f45434453413a20696e76616c6964207369676e6174757265202776272076616c604482015261756560f01b6064820152608401610299565b50565b6000807f7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a0831115610b265750600090506003610bd3565b8460ff16601b14158015610b3e57508460ff16601c14155b15610b4f5750600090506004610bd3565b6040805160008082526020820180845289905260ff881692820192909252606081018690526080810185905260019060a0016020604051602081039080840390855afa158015610ba3573d6000803e3d6000fd5b5050604051601f1901519150506001600160a01b038116610bcc57600060019250925050610bd3565b9150600090505b94509492505050565b6000806001600160ff1b03831660ff84901c601b01610bfd87828885610aef565b935093505050935093915050565b80356001600160a01b038116811461087457600080fd5b6000601f8381840112610c33578182fd5b8235602067ffffffffffffffff80831115610c5057610c50610ec0565b610c5d8283850201610e47565b83815282810190878401875b86811015610ce15781358a018b603f820112610c8357898afd5b86810135604087821115610c9957610c99610ec0565b610caa828c01601f19168a01610e47565b8281528e82848601011115610cbd578c8dfd5b828285018b83013791820189018c9052508552509285019290850190600101610c69565b50909998505050505050505050565b600060208284031215610d01578081fd5b610d0a82610c0b565b9392505050565b60008060008060808587031215610d26578283fd5b610d2f85610c0b565b935060208501358015158114610d43578384fd5b925060408501359150606085013567ffffffffffffffff811115610d65578182fd5b610d7187828801610c22565b91505092959194509250565b60008060408385031215610d8f578182fd5b82359150602083013567ffffffffffffffff811115610dac578182fd5b610db885828601610c22565b9150509250929050565b600080600060608486031215610dd6578283fd5b8335925060208401359150604084013567ffffffffffffffff811115610dfa578182fd5b610e0686828701610c22565b9150509250925092565b60208082526019908201527f4552525f4e4f545f454e4f5547485f5349474e41545552455300000000000000604082015260600190565b604051601f8201601f1916810167ffffffffffffffff81118282101715610e7057610e70610ec0565b604052919050565b600081610e8757610e87610eaa565b506000190190565b6000600019821415610ea357610ea3610eaa565b5060010190565b634e487b7160e01b600052601160045260246000fd5b634e487b7160e01b600052604160045260246000fdfea26469706673582212208859070416ce9cbc252fdfbd56c8968d4b4423286bfe38c9b13a95efffa3db1e64736f6c634300080200330000000000000000000000000000000000000000000000000000000000000019000000000000000000000000000000000000000000000000000000000000006000000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000002000000000000000000000000b7702af3cffa4c5bda7ed48b51351dd437343c1b0000000000000000000000000589312aaefb4155d792e4832a00f8e28222bae4
Deployed Bytecode
0x608060405234801561001057600080fd5b50600436106100ea5760003560e01c8063935d91dd1161008c578063da8bd3fe11610066578063da8bd3fe146101f4578063f7ca802314610207578063fa52c7d81461021c578063faf55b5c1461024f576100ea565b8063935d91dd146101b35780639a8a0592146101c6578063affed0e0146101eb576100ea565b80635938c87d116100c85780635938c87d146101395780635a0f88301461015057806371aca57e1461016557806374892a721461018c576100ea565b80633c0e39bf146100ef57806342cde4e81461011957806351f61efa14610122575b600080fd5b6101066c14d15517d512149154d213d311609a1b81565b6040519081526020015b60405180910390f35b61010660035481565b6101066c29a2aa2fab20a624a220aa27a960991b81565b6101066c535741505045525f434c41494d60981b81565b61016361015e366004610d7d565b610276565b005b6101067f56414c49444154455f58595f58434841494e5f4944454e54494649455200000081565b6101067f4c4f434b5f434c4f53455f535741505f414e445f524546554e4400000000000081565b6101636101c1366004610dc2565b6103bf565b6000546101d69063ffffffff1681565b60405163ffffffff9091168152602001610110565b61010660045481565b610163610202366004610d11565b610567565b6101066a42415443485f434c41494d60a81b81565b61023f61022a366004610cf0565b60016020526000908152604090205460ff1681565b6040519015158152602001610110565b6101067f56414c49444154455f535741505f4944454e544946494552000000000000000081565b600354815110156102a25760405162461bcd60e51b815260040161029990610e10565b60405180910390fd5b6000805b6003548110156103b95760006102ec8483815181106102d557634e487b7160e01b600052603260045260246000fd5b60200260200101518661080190919063ffffffff16565b6001600160a01b03811660009081526001602052604090205490915060ff1661034b5760405162461bcd60e51b815260206004820152601160248201527022a9292fa727aa2fab20a624a220aa27a960791b6044820152606401610299565b826001600160a01b0316816001600160a01b0316116103a55760405162461bcd60e51b815260206004820152601660248201527522a9292faba927a723afa9a4a3a722a92fa7a92222a960511b6044820152606401610299565b9150806103b181610e8f565b9150506102a6565b50505050565b600354815110156103e25760405162461bcd60e51b815260040161029990610e10565b60045482146104275760405162461bcd60e51b81526020600482015260116024820152704552525f494e56414c49445f4e4f4e434560781b6044820152606401610299565b6000831161046f5760405162461bcd60e51b815260206004820152601560248201527411549497d253959053125117d512149154d213d311605a1b6044820152606401610299565b6002548311156104b95760405162461bcd60e51b815260206004820152601560248201527411549497d253959053125117d512149154d213d311605a1b6044820152606401610299565b60008054604080516c14d15517d512149154d213d311609a1b60208201523060601b6bffffffffffffffffffffffff19169181019190915260e09190911b6001600160e01b03191660548201526058810185905260788101849052609801604051602081830303815290604052805190602001209050600061053a82610825565b90506105468184610276565b60038590556004805490600061055b83610e8f565b91905055505050505050565b6001600160a01b0384166105b55760405162461bcd60e51b815260206004820152601560248201527422a9292fa4a72b20a624a22fab20a624a220aa27a960591b6044820152606401610299565b600354815110156105d85760405162461bcd60e51b815260040161029990610e10565b600454821461061d5760405162461bcd60e51b81526020600482015260116024820152704552525f494e56414c49445f4e4f4e434560781b6044820152606401610299565b6001600160a01b03841660009081526001602052604090205460ff161515831515141561068c5760405162461bcd60e51b815260206004820152601a60248201527f4552525f4f5045524154494f4e5f544f5f56414c494441544f520000000000006044820152606401610299565b60008054604080516c29a2aa2fab20a624a220aa27a960991b602082015230606090811b6bffffffffffffffffffffffff199081169383019390935260e09390931b6001600160e01b03191660548201529187901b16605882015284151560f81b606c820152606d8101849052608d01604051602081830303815290604052805190602001209050600061071f82610825565b905061072b8184610276565b6001600160a01b03861660009081526001602052604090205460ff16156107a8576002805490600061075c83610e78565b90915550506001600160a01b0386166000908152600160205260409020805460ff1916905560035460025410156107a3576003805490600061079d83610e78565b91905055505b6107e4565b600280549060006107b883610e8f565b90915550506001600160a01b0386166000908152600160208190526040909120805460ff191690911790555b600480549060006107f483610e8f565b9190505550505050505050565b60008060006108108585610879565b9150915061081d816108e9565b509392505050565b6040517f19457468657265756d205369676e6564204d6573736167653a0a3332000000006020820152603c8101829052600090605c016040516020818303038152906040528051906020012090505b919050565b6000808251604114156108b05760208301516040840151606085015160001a6108a487828585610aef565b945094505050506108e2565b8251604014156108da57602083015160408401516108cf868383610bdc565b9350935050506108e2565b506000905060025b9250929050565b600081600481111561090b57634e487b7160e01b600052602160045260246000fd5b141561091657610aec565b600181600481111561093857634e487b7160e01b600052602160045260246000fd5b14156109865760405162461bcd60e51b815260206004820152601860248201527f45434453413a20696e76616c6964207369676e617475726500000000000000006044820152606401610299565b60028160048111156109a857634e487b7160e01b600052602160045260246000fd5b14156109f65760405162461bcd60e51b815260206004820152601f60248201527f45434453413a20696e76616c6964207369676e6174757265206c656e677468006044820152606401610299565b6003816004811115610a1857634e487b7160e01b600052602160045260246000fd5b1415610a715760405162461bcd60e51b815260206004820152602260248201527f45434453413a20696e76616c6964207369676e6174757265202773272076616c604482015261756560f01b6064820152608401610299565b6004816004811115610a9357634e487b7160e01b600052602160045260246000fd5b1415610aec5760405162461bcd60e51b815260206004820152602260248201527f45434453413a20696e76616c6964207369676e6174757265202776272076616c604482015261756560f01b6064820152608401610299565b50565b6000807f7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a0831115610b265750600090506003610bd3565b8460ff16601b14158015610b3e57508460ff16601c14155b15610b4f5750600090506004610bd3565b6040805160008082526020820180845289905260ff881692820192909252606081018690526080810185905260019060a0016020604051602081039080840390855afa158015610ba3573d6000803e3d6000fd5b5050604051601f1901519150506001600160a01b038116610bcc57600060019250925050610bd3565b9150600090505b94509492505050565b6000806001600160ff1b03831660ff84901c601b01610bfd87828885610aef565b935093505050935093915050565b80356001600160a01b038116811461087457600080fd5b6000601f8381840112610c33578182fd5b8235602067ffffffffffffffff80831115610c5057610c50610ec0565b610c5d8283850201610e47565b83815282810190878401875b86811015610ce15781358a018b603f820112610c8357898afd5b86810135604087821115610c9957610c99610ec0565b610caa828c01601f19168a01610e47565b8281528e82848601011115610cbd578c8dfd5b828285018b83013791820189018c9052508552509285019290850190600101610c69565b50909998505050505050505050565b600060208284031215610d01578081fd5b610d0a82610c0b565b9392505050565b60008060008060808587031215610d26578283fd5b610d2f85610c0b565b935060208501358015158114610d43578384fd5b925060408501359150606085013567ffffffffffffffff811115610d65578182fd5b610d7187828801610c22565b91505092959194509250565b60008060408385031215610d8f578182fd5b82359150602083013567ffffffffffffffff811115610dac578182fd5b610db885828601610c22565b9150509250929050565b600080600060608486031215610dd6578283fd5b8335925060208401359150604084013567ffffffffffffffff811115610dfa578182fd5b610e0686828701610c22565b9150509250925092565b60208082526019908201527f4552525f4e4f545f454e4f5547485f5349474e41545552455300000000000000604082015260600190565b604051601f8201601f1916810167ffffffffffffffff81118282101715610e7057610e70610ec0565b604052919050565b600081610e8757610e87610eaa565b506000190190565b6000600019821415610ea357610ea3610eaa565b5060010190565b634e487b7160e01b600052601160045260246000fd5b634e487b7160e01b600052604160045260246000fdfea26469706673582212208859070416ce9cbc252fdfbd56c8968d4b4423286bfe38c9b13a95efffa3db1e64736f6c63430008020033
Constructor Arguments (ABI-Encoded and is the last bytes of the Contract Creation Code above)
0000000000000000000000000000000000000000000000000000000000000019000000000000000000000000000000000000000000000000000000000000006000000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000002000000000000000000000000b7702af3cffa4c5bda7ed48b51351dd437343c1b0000000000000000000000000589312aaefb4155d792e4832a00f8e28222bae4
-----Decoded View---------------
Arg [0] : _chainId (uint32): 25
Arg [1] : _validators (address[]): 0xb7702aF3CFFa4C5bDA7Ed48b51351Dd437343C1B,0x0589312AAEFb4155D792e4832a00f8e28222bae4
Arg [2] : _threshold (uint256): 1
-----Encoded View---------------
6 Constructor Arguments found :
Arg [0] : 0000000000000000000000000000000000000000000000000000000000000019
Arg [1] : 0000000000000000000000000000000000000000000000000000000000000060
Arg [2] : 0000000000000000000000000000000000000000000000000000000000000001
Arg [3] : 0000000000000000000000000000000000000000000000000000000000000002
Arg [4] : 000000000000000000000000b7702af3cffa4c5bda7ed48b51351dd437343c1b
Arg [5] : 0000000000000000000000000589312aaefb4155d792e4832a00f8e28222bae4
Deployed Bytecode Sourcemap
239:4594:1:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;408:66;;-1:-1:-1;;;408:66:1;;;;;5185:25:2;;;5173:2;5158:18;408:66:1;;;;;;;;1182:24;;;;;;480:66;;-1:-1:-1;;;480:66:1;;344:58;;-1:-1:-1;;;344:58:1;;2158:503;;;;;;:::i;:::-;;:::i;:::-;;801:92;;;;;552;;;;;2966:645;;;;;;:::i;:::-;;:::i;940:21::-;;;;;;;;;;;;9951:10:2;9939:23;;;9921:42;;9909:2;9894:18;940:21:1;9876:93:2;1253:20:1;;;;;;3917:914;;;;;;:::i;:::-;;:::i;650:62::-;;-1:-1:-1;;;650:62:1;;1020:43;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;5012:14:2;;5005:22;4987:41;;4975:2;4960:18;1020:43:1;4942:92:2;718:77:1;;;;;2158:503;2280:9;;2259:10;:17;:30;;2251:68;;;;-1:-1:-1;;;2251:68:1;;;;;;;:::i;:::-;;;;;;;;;2329:19;2376:6;2371:284;2388:9;;2384:1;:13;2371:284;;;2418:17;2438:32;2456:10;2467:1;2456:13;;;;;;-1:-1:-1;;;2456:13:1;;;;;;;;;;;;;;;2438:9;:17;;:32;;;;:::i;:::-;-1:-1:-1;;;;;2492:21:1;;;;;;:10;:21;;;;;;2418:52;;-1:-1:-1;2492:21:1;;2484:51;;;;-1:-1:-1;;;2484:51:1;;6539:2:2;2484:51:1;;;6521:21:2;6578:2;6558:18;;;6551:30;-1:-1:-1;;;6597:18:2;;;6590:47;6654:18;;2484:51:1;6511:167:2;2484:51:1;2569:11;-1:-1:-1;;;;;2557:23:1;:9;-1:-1:-1;;;;;2557:23:1;;2549:58;;;;-1:-1:-1;;;2549:58:1;;7240:2:2;2549:58:1;;;7222:21:2;7279:2;7259:18;;;7252:30;-1:-1:-1;;;7298:18:2;;;7291:52;7360:18;;2549:58:1;7212:172:2;2549:58:1;2635:9;-1:-1:-1;2399:3:1;;;;:::i;:::-;;;;2371:284;;;;2158:503;;;:::o;2966:645::-;3099:9;;3078:10;:17;:30;;3070:68;;;;-1:-1:-1;;;3070:68:1;;;;;;;:::i;:::-;3166:5;;3156:6;:15;3148:45;;;;-1:-1:-1;;;3148:45:1;;9101:2:2;3148:45:1;;;9083:21:2;9140:2;9120:18;;;9113:30;-1:-1:-1;;;9159:18:2;;;9152:47;9216:18;;3148:45:1;9073:167:2;3148:45:1;3224:1;3211:10;:14;3203:48;;;;-1:-1:-1;;;3203:48:1;;8751:2:2;3203:48:1;;;8733:21:2;8790:2;8770:18;;;8763:30;-1:-1:-1;;;8809:18:2;;;8802:51;8870:18;;3203:48:1;8723:171:2;3203:48:1;3283:13;;3269:10;:27;;3261:61;;;;-1:-1:-1;;;3261:61:1;;8751:2:2;3261:61:1;;;8733:21:2;8790:2;8770:18;;;8763:30;-1:-1:-1;;;8809:18:2;;;8802:51;8870:18;;3261:61:1;8723:171:2;3261:61:1;3333:13;3417:7;;3359:86;;;-1:-1:-1;;;3359:86:1;;;4171:19:2;3410:4:1;4228:2:2;4224:15;-1:-1:-1;;4220:53:2;4206:12;;;4199:75;;;;4330:3;4308:16;;;;-1:-1:-1;;;;;;4308:16:2;4290:12;;;4283:65;4364:12;;;4357:28;;;4401:12;;;4394:28;;;4438:13;;3359:86:1;;;;;;;;;;;;3349:97;;;;;;3333:113;;3456:17;3476:30;:5;:28;:30::i;:::-;3456:50;;3516:38;3532:9;3543:10;3516:15;:38::i;:::-;3565:9;:22;;;3597:5;:7;;;:5;:7;;;:::i;:::-;;;;;;2966:645;;;;;:::o;3917:914::-;-1:-1:-1;;;;;4040:24:1;;4032:58;;;;-1:-1:-1;;;4032:58:1;;9447:2:2;4032:58:1;;;9429:21:2;9486:2;9466:18;;;9459:30;-1:-1:-1;;;9505:18:2;;;9498:51;9566:18;;4032:58:1;9419:171:2;4032:58:1;4129:9;;4108:10;:17;:30;;4100:68;;;;-1:-1:-1;;;4100:68:1;;;;;;;:::i;:::-;4196:5;;4186:6;:15;4178:45;;;;-1:-1:-1;;;4178:45:1;;9101:2:2;4178:45:1;;;9083:21:2;9140:2;9120:18;;;9113:30;-1:-1:-1;;;9159:18:2;;;9152:47;9216:18;;4178:45:1;9073:167:2;4178:45:1;-1:-1:-1;;;;;4249:22:1;;;;;;:10;:22;;;;;;;;4241:30;;;;;;;4233:69;;;;-1:-1:-1;;;4233:69:1;;6885:2:2;4233:69:1;;;6867:21:2;6924:2;6904:18;;;6897:30;6963:28;6943:18;;;6936:56;7009:18;;4233:69:1;6857:176:2;4233:69:1;4313:13;4397:7;;4339:92;;;-1:-1:-1;;;4339:92:1;;;3539:19:2;4390:4:1;3646:2:2;3642:15;;;-1:-1:-1;;3638:24:2;;;3624:12;;;3617:46;;;;3719:3;3697:16;;;;-1:-1:-1;;;;;;3697:16:2;3679:12;;;3672:65;3771:15;;;;3767:24;3753:12;;;3746:46;3838:14;;3831:22;3826:3;3822:32;3808:12;;;3801:54;3871:12;;;3864:28;;;3908:13;;4339:92:1;;;;;;;;;;;;4329:103;;;;;;4313:119;;4442:17;4462:30;:5;:28;:30::i;:::-;4442:50;;4502:38;4518:9;4529:10;4502:15;:38::i;:::-;-1:-1:-1;;;;;4555:22:1;;;;;;:10;:22;;;;;;;;4551:257;;;4593:13;:15;;;:13;:15;;;:::i;:::-;;;;-1:-1:-1;;;;;;;4622:22:1;;4647:5;4622:22;;;:10;:22;;;;;:30;;-1:-1:-1;;4622:30:1;;;4686:9;;4670:13;;:25;4666:42;;;4697:9;:11;;;:9;:11;;;:::i;:::-;;;;;;4666:42;4551:257;;;4739:13;:15;;;:13;:15;;;:::i;:::-;;;;-1:-1:-1;;;;;;;4768:22:1;;;;;;4793:4;4768:22;;;;;;;;:29;;-1:-1:-1;;4768:29:1;;;;;;4551:257;4817:5;:7;;;:5;:7;;;:::i;:::-;;;;;;3917:914;;;;;;:::o;4203:227:0:-;4281:7;4301:17;4320:18;4342:27;4353:4;4359:9;4342:10;:27::i;:::-;4300:69;;;;4379:18;4391:5;4379:11;:18::i;:::-;-1:-1:-1;4414:9:0;4203:227;-1:-1:-1;;;4203:227:0:o;7950:265::-;8149:58;;4704:66:2;8149:58:0;;;4692:79:2;4787:12;;;4780:28;;;8019:7:0;;4824:12:2;;8149:58:0;;;;;;;;;;;;8139:69;;;;;;8132:76;;7950:265;;;;:::o;2138:1279::-;2219:7;2228:12;2449:9;:16;2469:2;2449:22;2445:966;;;2738:4;2723:20;;2717:27;2787:4;2772:20;;2766:27;2844:4;2829:20;;2823:27;2487:9;2815:36;2885:25;2896:4;2815:36;2717:27;2766;2885:10;:25::i;:::-;2878:32;;;;;;;;;2445:966;2931:9;:16;2951:2;2931:22;2927:484;;;3200:4;3185:20;;3179:27;3250:4;3235:20;;3229:27;3290:23;3301:4;3179:27;3229;3290:10;:23::i;:::-;3283:30;;;;;;;;2927:484;-1:-1:-1;3360:1:0;;-1:-1:-1;3364:35:0;2927:484;2138:1279;;;;;:::o;443:631::-;520:20;511:5;:29;;;;;;-1:-1:-1;;;511:29:0;;;;;;;;;;507:561;;;556:7;;507:561;616:29;607:5;:38;;;;;;-1:-1:-1;;;607:38:0;;;;;;;;;;603:465;;;661:34;;-1:-1:-1;;;661:34:0;;5826:2:2;661:34:0;;;5808:21:2;5865:2;5845:18;;;5838:30;5904:26;5884:18;;;5877:54;5948:18;;661:34:0;5798:174:2;603:465:0;725:35;716:5;:44;;;;;;-1:-1:-1;;;716:44:0;;;;;;;;;;712:356;;;776:41;;-1:-1:-1;;;776:41:0;;6179:2:2;776:41:0;;;6161:21:2;6218:2;6198:18;;;6191:30;6257:33;6237:18;;;6230:61;6308:18;;776:41:0;6151:181:2;712:356:0;847:30;838:5;:39;;;;;;-1:-1:-1;;;838:39:0;;;;;;;;;;834:234;;;893:44;;-1:-1:-1;;;893:44:0;;7591:2:2;893:44:0;;;7573:21:2;7630:2;7610:18;;;7603:30;7669:34;7649:18;;;7642:62;-1:-1:-1;;;7720:18:2;;;7713:32;7762:19;;893:44:0;7563:224:2;834:234:0;967:30;958:5;:39;;;;;;-1:-1:-1;;;958:39:0;;;;;;;;;;954:114;;;1013:44;;-1:-1:-1;;;1013:44:0;;8348:2:2;1013:44:0;;;8330:21:2;8387:2;8367:18;;;8360:30;8426:34;8406:18;;;8399:62;-1:-1:-1;;;8477:18:2;;;8470:32;8519:19;;1013:44:0;8320:224:2;954:114:0;443:631;:::o;5654:1603::-;5780:7;;6704:66;6691:79;;6687:161;;;-1:-1:-1;6802:1:0;;-1:-1:-1;6806:30:0;6786:51;;6687:161;6861:1;:7;;6866:2;6861:7;;:18;;;;;6872:1;:7;;6877:2;6872:7;;6861:18;6857:100;;;-1:-1:-1;6911:1:0;;-1:-1:-1;6915:30:0;6895:51;;6857:100;7068:24;;;7051:14;7068:24;;;;;;;;;5448:25:2;;;5521:4;5509:17;;5489:18;;;5482:45;;;;5543:18;;;5536:34;;;5586:18;;;5579:34;;;7068:24:0;;5420:19:2;;7068:24:0;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;7068:24:0;;-1:-1:-1;;7068:24:0;;;-1:-1:-1;;;;;;;7106:20:0;;7102:101;;7158:1;7162:29;7142:50;;;;;;;7102:101;7221:6;-1:-1:-1;7229:20:0;;-1:-1:-1;5654:1603:0;;;;;;;;:::o;4684:379::-;4794:7;;-1:-1:-1;;;;;4891:75:0;;4992:3;4988:12;;;5002:2;4984:21;5031:25;5042:4;4984:21;5051:1;4891:75;5031:10;:25::i;:::-;5024:32;;;;;;4684:379;;;;;;:::o;14:173:2:-;82:20;;-1:-1:-1;;;;;131:31:2;;121:42;;111:2;;177:1;174;167:12;192:1222;;274:4;318:3;313:2;305:6;301:15;297:25;287:2;;340:5;333;326:20;287:2;380:6;367:20;406:4;429:18;466:2;462;459:10;456:2;;;472:18;;:::i;:::-;512:37;545:2;540;536;532:11;528:20;512:37;:::i;:::-;583:15;;;614:12;;;;646:15;;;679:5;693:692;707:2;704:1;701:9;693:692;;;787:3;774:17;766:6;762:30;832:3;827:2;823;819:11;815:21;805:2;;854:5;847;840:20;805:2;906;902;898:11;885:25;933:2;958;954;951:10;948:2;;;964:18;;:::i;:::-;1012:51;1036:11;;;-1:-1:-1;;1032:25:2;1028:34;;1012:51;:::i;:::-;1092:2;1083:7;1076:19;1136:3;1131:2;1126;1122;1118:11;1114:20;1111:29;1108:2;;;1157:5;1150;1143:20;1108:2;1222;1217;1213;1209:11;1204:2;1195:7;1191:16;1178:47;1249:16;;;1245:25;;1238:40;;;-1:-1:-1;1291:20:2;;-1:-1:-1;1331:12:2;;;;1363;;;;725:1;718:9;693:692;;;-1:-1:-1;1403:5:2;;254:1160;-1:-1:-1;;;;;;;;;254:1160:2:o;1419:196::-;;1531:2;1519:9;1510:7;1506:23;1502:32;1499:2;;;1552:6;1544;1537:22;1499:2;1580:29;1599:9;1580:29;:::i;:::-;1570:39;1489:126;-1:-1:-1;;;1489:126:2:o;1620:689::-;;;;;1814:3;1802:9;1793:7;1789:23;1785:33;1782:2;;;1836:6;1828;1821:22;1782:2;1864:29;1883:9;1864:29;:::i;:::-;1854:39;;1943:2;1932:9;1928:18;1915:32;1990:5;1983:13;1976:21;1969:5;1966:32;1956:2;;2017:6;2009;2002:22;1956:2;2045:5;-1:-1:-1;2097:2:2;2082:18;;2069:32;;-1:-1:-1;2152:2:2;2137:18;;2124:32;2179:18;2168:30;;2165:2;;;2216:6;2208;2201:22;2165:2;2244:59;2295:7;2286:6;2275:9;2271:22;2244:59;:::i;:::-;2234:69;;;1772:537;;;;;;;:::o;2314:443::-;;;2477:2;2465:9;2456:7;2452:23;2448:32;2445:2;;;2498:6;2490;2483:22;2445:2;2539:9;2526:23;2516:33;;2600:2;2589:9;2585:18;2572:32;2627:18;2619:6;2616:30;2613:2;;;2664:6;2656;2649:22;2613:2;2692:59;2743:7;2734:6;2723:9;2719:22;2692:59;:::i;:::-;2682:69;;;2435:322;;;;;:::o;2762:511::-;;;;2942:2;2930:9;2921:7;2917:23;2913:32;2910:2;;;2963:6;2955;2948:22;2910:2;3004:9;2991:23;2981:33;;3061:2;3050:9;3046:18;3033:32;3023:42;;3116:2;3105:9;3101:18;3088:32;3143:18;3135:6;3132:30;3129:2;;;3180:6;3172;3165:22;3129:2;3208:59;3259:7;3250:6;3239:9;3235:22;3208:59;:::i;:::-;3198:69;;;2900:373;;;;;:::o;7792:349::-;7994:2;7976:21;;;8033:2;8013:18;;;8006:30;8072:27;8067:2;8052:18;;8045:55;8132:2;8117:18;;7966:175::o;9974:275::-;10045:2;10039:9;10110:2;10091:13;;-1:-1:-1;;10087:27:2;10075:40;;10145:18;10130:34;;10166:22;;;10127:62;10124:2;;;10192:18;;:::i;:::-;10228:2;10221:22;10019:230;;-1:-1:-1;10019:230:2:o;10254:136::-;;10321:5;10311:2;;10330:18;;:::i;:::-;-1:-1:-1;;;10366:18:2;;10301:89::o;10395:135::-;;-1:-1:-1;;10455:17:2;;10452:2;;;10475:18;;:::i;:::-;-1:-1:-1;10522:1:2;10511:13;;10442:88::o;10535:127::-;10596:10;10591:3;10587:20;10584:1;10577:31;10627:4;10624:1;10617:15;10651:4;10648:1;10641:15;10667:127;10728:10;10723:3;10719:20;10716:1;10709:31;10759:4;10756:1;10749:15;10783:4;10780:1;10773:15
Swarm Source
ipfs://8859070416ce9cbc252fdfbd56c8968d4b4423286bfe38c9b13a95efffa3db1e
Loading...
Loading
Loading...
Loading
Loading...
Loading
Multichain Portfolio | 30 Chains
Chain | Token | Portfolio % | Price | Amount | Value |
---|
[ Download: CSV Export ]
A contract address hosts a smart contract, which is a set of code stored on the blockchain that runs when predetermined conditions are met. Learn more about addresses in our Knowledge Base.