Source Code
Overview
frxETH Balance
0 frxETH
More Info
ContractCreator
Multichain Info
N/A
Transaction Hash |
Method
|
Block
|
From
|
To
|
|||||
---|---|---|---|---|---|---|---|---|---|
Latest 1 internal transaction
Parent Transaction Hash | Block | From | To | |||
---|---|---|---|---|---|---|
7097106 | 322 days ago | Contract Creation | 0 frxETH |
Loading...
Loading
Contract Name:
FraxchainL1Block
Compiler Version
v0.8.15+commit.e14f2714
Contract Source Code (Solidity Standard Json-Input format)
// SPDX-License-Identifier: MIT pragma solidity 0.8.15; import { ISemver } from "@eth-optimism/contracts-bedrock/src/universal/ISemver.sol"; /// @custom:proxied /// @custom:predeploy 0x4200000000000000000000000000000000000015 /// @title L1Block /// @notice The L1Block predeploy gives users access to information about the last known L1 block. /// Values within this contract are updated once per epoch (every L1 block) and can only be /// set by the "depositor" account, a special system address. Depositor account transactions /// are created by the protocol whenever we move to a new epoch. contract FraxchainL1Block is ISemver { /// @notice Address of the special depositor account. address public constant DEPOSITOR_ACCOUNT = 0xDeaDDEaDDeAdDeAdDEAdDEaddeAddEAdDEAd0001; /// @notice The latest L1 block number known by the L2 system. uint64 public number; /// @notice The latest L1 timestamp known by the L2 system. uint64 public timestamp; /// @notice The latest L1 base fee. uint256 public basefee; /// @notice The latest L1 blockhash. bytes32 public hash; /// @notice The number of L2 blocks in the same epoch. uint64 public sequenceNumber; /// @notice The scalar value applied to the L1 blob base fee portion of the blob-capable L1 cost func. uint32 public blobBaseFeeScalar; /// @notice The scalar value applied to the L1 base fee portion of the blob-capable L1 cost func. uint32 public baseFeeScalar; /// @notice The versioned hash to authenticate the batcher by. bytes32 public batcherHash; /// @notice The overhead value applied to the L1 portion of the transaction fee. /// @custom:legacy uint256 public l1FeeOverhead; /// @notice The scalar value applied to the L1 portion of the transaction fee. /// @custom:legacy uint256 public l1FeeScalar; /// @notice The latest L1 blob base fee. uint256 public blobBaseFee; /// @custom:semver 1.2.0 string public constant version = "1.2.0"; /// @notice Reserve extra slots (to a total of 50) in the storage layout for future upgrades of the L1Block contract. /// @dev Added by Frax Finance uint256[42] private __gap; /// @notice Mapping from blockHash to bool that it written after a block hash is received from L1 /// @dev Added by Frax Finance mapping(bytes32 => bool) public storedBlockHashes; /// @notice The ```BlockHashReceived``` event is emitted when a block hash is received /// @dev Added by Frax Finance /// @param blockHash A block hash of a L1 block event BlockHashReceived(bytes32 blockHash); /// @notice Updates the L1 block values. /// @param _number L1 blocknumber. /// @param _timestamp L1 timestamp. /// @param _basefee L1 basefee. /// @param _hash L1 blockhash. /// @param _sequenceNumber Number of L2 blocks since epoch start. /// @param _batcherHash Versioned hash to authenticate batcher by. /// @param _l1FeeOverhead L1 fee overhead. /// @param _l1FeeScalar L1 fee scalar. function setL1BlockValues( uint64 _number, uint64 _timestamp, uint256 _basefee, bytes32 _hash, uint64 _sequenceNumber, bytes32 _batcherHash, uint256 _l1FeeOverhead, uint256 _l1FeeScalar ) external { require(msg.sender == DEPOSITOR_ACCOUNT, "L1Block: only the depositor account can set L1 block values"); number = _number; timestamp = _timestamp; basefee = _basefee; hash = _hash; sequenceNumber = _sequenceNumber; batcherHash = _batcherHash; l1FeeOverhead = _l1FeeOverhead; l1FeeScalar = _l1FeeScalar; // Don't write state or emit event again if we already stored this hash /// @dev Added by Frax Finance if (!storedBlockHashes[_hash]) { storedBlockHashes[_hash] = true; emit BlockHashReceived(_hash); } } /// @notice The ```blockHashStored``` function returns if the _blockHash is stored or not /// @param _blockHash The block hash /// @return _result A bool representing if the _blockHash is stored or not function blockHashStored(bytes32 _blockHash) external view returns (bool _result) { _result = storedBlockHashes[_blockHash]; } /// @notice Updates the L1 block values for an Ecotone upgraded chain. /// Params are packed and passed in as raw msg.data instead of ABI to reduce calldata size. /// Params are expected to be in the following order: /// 1. _baseFeeScalar L1 base fee scalar /// 2. _blobBaseFeeScalar L1 blob base fee scalar /// 3. _sequenceNumber Number of L2 blocks since epoch start. /// 4. _timestamp L1 timestamp. /// 5. _number L1 blocknumber. /// 6. _basefee L1 base fee. /// 7. _blobBaseFee L1 blob base fee. /// 8. _hash L1 blockhash. /// 9. _batcherHash Versioned hash to authenticate batcher by. function setL1BlockValuesEcotone() external { bytes32 eventHash = bytes32(keccak256("BlockHashReceived(bytes32)")); assembly { // Revert if the caller is not the depositor account. if xor(caller(), DEPOSITOR_ACCOUNT) { mstore(0x00, 0x3cc50b45) // 0x3cc50b45 is the 4-byte selector of "NotDepositor()" revert(0x1C, 0x04) // returns the stored 4-byte selector from above } let data := calldataload(4) // sequencenum (uint64), blobBaseFeeScalar (uint32), baseFeeScalar (uint32) sstore(sequenceNumber.slot, shr(128, calldataload(4))) // number (uint64) and timestamp (uint64) sstore(number.slot, shr(128, calldataload(20))) sstore(basefee.slot, calldataload(36)) // uint256 sstore(blobBaseFee.slot, calldataload(68)) // uint256 sstore(hash.slot, calldataload(100)) // bytes32 sstore(batcherHash.slot, calldataload(132)) // bytes32 // Added by Frax Finance // load the L1 blockhash to memory mstore(0, calldataload(100)) // bytes32 // load the storage slot of storedBlockHashes to memory mstore(32, 50) // for clarity - same as storedBlackHashes.slot // Get the hash of the memory for the mapping key let key := keccak256(0, 64) // Update mapping only if the mapping has not yet been updated if eq(sload(key), false) { // Set the mapping to true sstore(key, true) // Emit the event of the blockhash from memory log1(0, 32, eventHash) } } } }
// SPDX-License-Identifier: MIT pragma solidity ^0.8.0; /// @title ISemver /// @notice ISemver is a simple contract for ensuring that contracts are /// versioned using semantic versioning. interface ISemver { /// @notice Getter for the semantic version of the contract. This is not /// meant to be used onchain but instead meant to be used by offchain /// tooling. /// @return Semver contract version as a string. function version() external view returns (string memory); }
{ "remappings": [ "@eth-optimism-bedrock/=lib/optimism/packages/contracts-bedrock/", "@fraxchain-contracts/=lib/fraxchain-contracts/", "@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/", "@openzeppelin/contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/", "safe-contracts/=lib/optimism/packages/contracts-bedrock/lib/safe-contracts/contracts/", "forge-std/=lib/optimism/packages/contracts-bedrock/lib/forge-std/src/", "lib/optimism/packages/contracts-bedrock:src/=lib/optimism/packages/contracts-bedrock/src/", "lib/optimism/packages/contracts-bedrock:scripts/=lib/optimism/packages/contracts-bedrock/scripts/", "lib/optimism/packages/contracts-bedrock:@rari-capital/=lib/optimism/packages/contracts-bedrock/lib/", "lib/optimism/packages/contracts-bedrock:@cwia/=lib/optimism/packages/contracts-bedrock/lib/clones-with-immutable-args/src/", "lib/optimism/packages/contracts-bedrock:@lib-keccak/=lib/optimism/packages/contracts-bedrock/lib/lib-keccak/contracts/lib/", "lib/optimism/packages/contracts-bedrock:ds-test/=lib/optimism/packages/contracts-bedrock/lib/forge-std/lib/ds-test/src/", "lib/optimism/packages/contracts-bedrock:kontrol-cheatcodes/=lib/optimism/packages/contracts-bedrock/lib/kontrol-cheatcodes/src/", "lib/optimism/packages/contracts-bedrock:solady/=lib/optimism/packages/contracts-bedrock/lib/solady/src/", "lib/fraxchain-contracts:frax-std/=lib/fraxchain-contracts/lib/frax-standard-solidity/src/", "lib/fraxchain-contracts:@eth-optimism/=lib/optimism/packages/", "@eth-optimism/=lib/fraxchain-contracts/lib/optimism/packages/", "@openzeppelin-4/=lib/fraxchain-contracts/node_modules/@openzeppelin-4/", "@openzeppelin-5/=lib/fraxchain-contracts/node_modules/@openzeppelin-5/", "@rari-capital/=lib/fraxchain-contracts/node_modules/@rari-capital/", "clones-with-immutable-args/=lib/clones-with-immutable-args/src/", "ds-test/=lib/clones-with-immutable-args/lib/ds-test/src/", "erc4626-tests/=lib/openzeppelin-contracts-upgradeable/lib/erc4626-tests/", "frax-standard-solidity/=lib/fraxchain-contracts/lib/frax-standard-solidity/src/", "frax-std/=lib/fraxchain-contracts/lib/frax-standard-solidity/src/", "fraxchain-contracts/=lib/fraxchain-contracts/src/", "kontrol-cheatcodes/=lib/optimism/packages/contracts-bedrock/lib/kontrol-cheatcodes/src/", "lib-keccak/=lib/optimism/packages/contracts-bedrock/lib/lib-keccak/contracts/", "openzeppelin-contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/", "openzeppelin-contracts/=lib/openzeppelin-contracts/", "optimism/=lib/optimism/", "solady/=lib/optimism/packages/contracts-bedrock/lib/solady/", "solidity-bytes-utils/=lib/fraxchain-contracts/lib/frax-standard-solidity/lib/solidity-bytes-utils/", "solmate/=lib/solmate/src/", "src/=lib/fraxchain-contracts/src/" ], "optimizer": { "enabled": true, "runs": 50000 }, "metadata": { "useLiteralContent": false, "bytecodeHash": "ipfs" }, "outputSelection": { "*": { "*": [ "evm.bytecode", "evm.deployedBytecode", "abi" ] } }, "evmVersion": "london", "viaIR": false, "libraries": {} }
Contract ABI
API[{"anonymous":false,"inputs":[{"indexed":false,"internalType":"bytes32","name":"blockHash","type":"bytes32"}],"name":"BlockHashReceived","type":"event"},{"inputs":[],"name":"DEPOSITOR_ACCOUNT","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"baseFeeScalar","outputs":[{"internalType":"uint32","name":"","type":"uint32"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"basefee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"batcherHash","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"blobBaseFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"blobBaseFeeScalar","outputs":[{"internalType":"uint32","name":"","type":"uint32"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bytes32","name":"_blockHash","type":"bytes32"}],"name":"blockHashStored","outputs":[{"internalType":"bool","name":"_result","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"hash","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"l1FeeOverhead","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"l1FeeScalar","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"number","outputs":[{"internalType":"uint64","name":"","type":"uint64"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"sequenceNumber","outputs":[{"internalType":"uint64","name":"","type":"uint64"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint64","name":"_number","type":"uint64"},{"internalType":"uint64","name":"_timestamp","type":"uint64"},{"internalType":"uint256","name":"_basefee","type":"uint256"},{"internalType":"bytes32","name":"_hash","type":"bytes32"},{"internalType":"uint64","name":"_sequenceNumber","type":"uint64"},{"internalType":"bytes32","name":"_batcherHash","type":"bytes32"},{"internalType":"uint256","name":"_l1FeeOverhead","type":"uint256"},{"internalType":"uint256","name":"_l1FeeScalar","type":"uint256"}],"name":"setL1BlockValues","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"setL1BlockValuesEcotone","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"name":"storedBlockHashes","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"timestamp","outputs":[{"internalType":"uint64","name":"","type":"uint64"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"version","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"}]
Contract Creation Code
608060405234801561001057600080fd5b506106cc806100206000396000f3fe608060405234801561001057600080fd5b506004361061011b5760003560e01c80638381f58a116100b2578063c598591811610081578063e81b2c6d11610066578063e81b2c6d146102e2578063ebe86a55146102eb578063f82061401461030e57600080fd5b8063c598591814610282578063e591b282146102a257600080fd5b80638381f58a1461023c5780638b239f73146102505780639e8c496614610259578063b80777ea1461026257600080fd5b80635cf24969116100ee5780635cf24969146101a257806364ca23ef146101ab57806368d5dca6146101d85780638178856b1461020957600080fd5b8063015d8eb91461012057806309bd5a6014610135578063440a5e201461015157806354fd4d5014610159575b600080fd5b61013361012e366004610598565b610317565b005b61013e60025481565b6040519081526020015b60405180910390f35b6101336104df565b6101956040518060400160405280600581526020017f312e322e3000000000000000000000000000000000000000000000000000000081525081565b604051610148919061060a565b61013e60015481565b6003546101bf9067ffffffffffffffff1681565b60405167ffffffffffffffff9091168152602001610148565b6003546101f49068010000000000000000900463ffffffff1681565b60405163ffffffff9091168152602001610148565b61022c61021736600461067d565b60326020526000908152604090205460ff1681565b6040519015158152602001610148565b6000546101bf9067ffffffffffffffff1681565b61013e60055481565b61013e60065481565b6000546101bf9068010000000000000000900467ffffffffffffffff1681565b6003546101f4906c01000000000000000000000000900463ffffffff1681565b6102bd73deaddeaddeaddeaddeaddeaddeaddeaddead000181565b60405173ffffffffffffffffffffffffffffffffffffffff9091168152602001610148565b61013e60045481565b61022c6102f936600461067d565b60009081526032602052604090205460ff1690565b61013e60075481565b3373deaddeaddeaddeaddeaddeaddeaddeaddead0001146103be576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603b60248201527f4c31426c6f636b3a206f6e6c7920746865206465706f7369746f72206163636f60448201527f756e742063616e20736574204c3120626c6f636b2076616c7565730000000000606482015260840160405180910390fd5b6000805467ffffffffffffffff8a81167fffffffffffffffffffffffffffffffff0000000000000000000000000000000090921691909117680100000000000000008a83160217825560018890556002879055600380547fffffffffffffffffffffffffffffffffffffffffffffffff0000000000000000169187169190911790556004849055600583905560068290558581526032602052604090205460ff166104d5576000858152603260205260409081902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00166001179055517f12cb9a47c977b6cbe82b9e495407e99a32a54bca6b26f1e4d497a3a42dccb914906104cc9087815260200190565b60405180910390a15b5050505050505050565b7f12cb9a47c977b6cbe82b9e495407e99a32a54bca6b26f1e4d497a3a42dccb9143373deaddeaddeaddeaddeaddeaddeaddeaddead00011461052957633cc50b456000526004601cfd5b60043560801c60035560143560801c60005560243560015560443560075560643560025560843560045560643560005260326020526040600020600081540361057757600181558160206000a15b5050565b803567ffffffffffffffff8116811461059357600080fd5b919050565b600080600080600080600080610100898b0312156105b557600080fd5b6105be8961057b565b97506105cc60208a0161057b565b965060408901359550606089013594506105e860808a0161057b565b979a969950949793969560a0850135955060c08501359460e001359350915050565b600060208083528351808285015260005b818110156106375785810183015185820160400152820161061b565b81811115610649576000604083870101525b50601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016929092016040019392505050565b60006020828403121561068f57600080fd5b503591905056fea26469706673582212202bedb71295d039c644af9678dd88ad6cbacd427fb8c178d903120e71ff15cd5364736f6c634300080f0033
Deployed Bytecode
0x608060405234801561001057600080fd5b506004361061011b5760003560e01c80638381f58a116100b2578063c598591811610081578063e81b2c6d11610066578063e81b2c6d146102e2578063ebe86a55146102eb578063f82061401461030e57600080fd5b8063c598591814610282578063e591b282146102a257600080fd5b80638381f58a1461023c5780638b239f73146102505780639e8c496614610259578063b80777ea1461026257600080fd5b80635cf24969116100ee5780635cf24969146101a257806364ca23ef146101ab57806368d5dca6146101d85780638178856b1461020957600080fd5b8063015d8eb91461012057806309bd5a6014610135578063440a5e201461015157806354fd4d5014610159575b600080fd5b61013361012e366004610598565b610317565b005b61013e60025481565b6040519081526020015b60405180910390f35b6101336104df565b6101956040518060400160405280600581526020017f312e322e3000000000000000000000000000000000000000000000000000000081525081565b604051610148919061060a565b61013e60015481565b6003546101bf9067ffffffffffffffff1681565b60405167ffffffffffffffff9091168152602001610148565b6003546101f49068010000000000000000900463ffffffff1681565b60405163ffffffff9091168152602001610148565b61022c61021736600461067d565b60326020526000908152604090205460ff1681565b6040519015158152602001610148565b6000546101bf9067ffffffffffffffff1681565b61013e60055481565b61013e60065481565b6000546101bf9068010000000000000000900467ffffffffffffffff1681565b6003546101f4906c01000000000000000000000000900463ffffffff1681565b6102bd73deaddeaddeaddeaddeaddeaddeaddeaddead000181565b60405173ffffffffffffffffffffffffffffffffffffffff9091168152602001610148565b61013e60045481565b61022c6102f936600461067d565b60009081526032602052604090205460ff1690565b61013e60075481565b3373deaddeaddeaddeaddeaddeaddeaddeaddead0001146103be576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603b60248201527f4c31426c6f636b3a206f6e6c7920746865206465706f7369746f72206163636f60448201527f756e742063616e20736574204c3120626c6f636b2076616c7565730000000000606482015260840160405180910390fd5b6000805467ffffffffffffffff8a81167fffffffffffffffffffffffffffffffff0000000000000000000000000000000090921691909117680100000000000000008a83160217825560018890556002879055600380547fffffffffffffffffffffffffffffffffffffffffffffffff0000000000000000169187169190911790556004849055600583905560068290558581526032602052604090205460ff166104d5576000858152603260205260409081902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00166001179055517f12cb9a47c977b6cbe82b9e495407e99a32a54bca6b26f1e4d497a3a42dccb914906104cc9087815260200190565b60405180910390a15b5050505050505050565b7f12cb9a47c977b6cbe82b9e495407e99a32a54bca6b26f1e4d497a3a42dccb9143373deaddeaddeaddeaddeaddeaddeaddeaddead00011461052957633cc50b456000526004601cfd5b60043560801c60035560143560801c60005560243560015560443560075560643560025560843560045560643560005260326020526040600020600081540361057757600181558160206000a15b5050565b803567ffffffffffffffff8116811461059357600080fd5b919050565b600080600080600080600080610100898b0312156105b557600080fd5b6105be8961057b565b97506105cc60208a0161057b565b965060408901359550606089013594506105e860808a0161057b565b979a969950949793969560a0850135955060c08501359460e001359350915050565b600060208083528351808285015260005b818110156106375785810183015185820160400152820161061b565b81811115610649576000604083870101525b50601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016929092016040019392505050565b60006020828403121561068f57600080fd5b503591905056fea26469706673582212202bedb71295d039c644af9678dd88ad6cbacd427fb8c178d903120e71ff15cd5364736f6c634300080f0033
Deployed Bytecode Sourcemap
620:6224:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3121:907;;;;;;:::i;:::-;;:::i;:::-;;1112:19;;;;;;;;;1014:25:2;;;1002:2;987:18;1112:19:0;;;;;;;;5118:1724;;;:::i;2002:40::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;1042:22::-;;;;;;1197:28;;;;;;;;;;;;2067:18:2;2055:31;;;2037:50;;2025:2;2010:18;1197:28:0;1893:200:2;1339:31:0;;;;;;;;;;;;;;;2272:10:2;2260:23;;;2242:42;;2230:2;2215:18;1339:31:0;2098:192:2;2375:49:0;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;2645:14:2;;2638:22;2620:41;;2608:2;2593:18;2375:49:0;2480:187:2;881:20:0;;;;;;;;;1721:28;;;;;;1862:26;;;;;;972:23;;;;;;;;;;;;1479:27;;;;;;;;;;;;721:86;;765:42;721:86;;;;;2848:42:2;2836:55;;;2818:74;;2806:2;2791:18;721:86:0;2672:226:2;1580:26:0;;;;;;4248:138;;;;;;:::i;:::-;4316:12;4350:29;;;:17;:29;;;;;;;;;4248:138;1940:26;;;;;;3121:907;3404:10;765:42;3404:31;3396:103;;;;;;;3105:2:2;3396:103:0;;;3087:21:2;3144:2;3124:18;;;3117:30;3183:34;3163:18;;;3156:62;3254:29;3234:18;;;3227:57;3301:19;;3396:103:0;;;;;;;;3510:6;:16;;;;;;3536:22;;;;;;;;;;;;;;;;-1:-1:-1;3568:18:0;;;3596:4;:12;;;3618:14;:32;;3510:16;3618:32;;;;;;;;;;3660:11;:26;;;3696:13;:30;;;3736:11;:26;;;3897:24;;;:17;:24;;;;;;;;3892:130;;3937:24;;;;:17;:24;;;;;;;:31;;;;3964:4;3937:31;;;3987:24;;;;;3955:5;1014:25:2;;1002:2;987:18;;868:177;3987:24:0;;;;;;;;3892:130;3121:907;;;;;;;;:::o;5118:1724::-;5200:39;5347:8;5357:17;5340:233;;;5407:10;5401:4;5394:24;5505:4;5499;5492:18;5340:233;5764:1;5751:15;5746:3;5742:25;5721:19;5714:54;5877:2;5864:16;5859:3;5855:26;5842:11;5835:47;5929:2;5916:16;5902:12;5895:38;5995:2;5982:16;5964;5957:42;6054:3;6041:17;6030:9;6023:36;6121:3;6108:17;6090:16;6083:43;6258:3;6245:17;6242:1;6235:28;6366:2;6362;6355:14;6516:2;6513:1;6503:16;6625:5;6619:3;6613:10;6610:21;6607:219;;6705:4;6700:3;6693:17;6802:9;6798:2;6795:1;6790:22;6607:219;;5260:1576;5118:1724::o;14:171:2:-;81:20;;141:18;130:30;;120:41;;110:69;;175:1;172;165:12;110:69;14:171;;;:::o;190:673::-;309:6;317;325;333;341;349;357;365;418:3;406:9;397:7;393:23;389:33;386:53;;;435:1;432;425:12;386:53;458:28;476:9;458:28;:::i;:::-;448:38;;505:37;538:2;527:9;523:18;505:37;:::i;:::-;495:47;;589:2;578:9;574:18;561:32;551:42;;640:2;629:9;625:18;612:32;602:42;;663:38;696:3;685:9;681:19;663:38;:::i;:::-;190:673;;;;-1:-1:-1;190:673:2;;;;653:48;748:3;733:19;;720:33;;-1:-1:-1;800:3:2;785:19;;772:33;;852:3;837:19;824:33;;-1:-1:-1;190:673:2;-1:-1:-1;;190:673:2:o;1050:656::-;1162:4;1191:2;1220;1209:9;1202:21;1252:6;1246:13;1295:6;1290:2;1279:9;1275:18;1268:34;1320:1;1330:140;1344:6;1341:1;1338:13;1330:140;;;1439:14;;;1435:23;;1429:30;1405:17;;;1424:2;1401:26;1394:66;1359:10;;1330:140;;;1488:6;1485:1;1482:13;1479:91;;;1558:1;1553:2;1544:6;1533:9;1529:22;1525:31;1518:42;1479:91;-1:-1:-1;1622:2:2;1610:15;1627:66;1606:88;1591:104;;;;1697:2;1587:113;;1050:656;-1:-1:-1;;;1050:656:2:o;2295:180::-;2354:6;2407:2;2395:9;2386:7;2382:23;2378:32;2375:52;;;2423:1;2420;2413:12;2375:52;-1:-1:-1;2446:23:2;;2295:180;-1:-1:-1;2295:180:2:o
Swarm Source
ipfs://2bedb71295d039c644af9678dd88ad6cbacd427fb8c178d903120e71ff15cd53
Loading...
Loading
Loading...
Loading
[ 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.