Overview
ETH Balance
0 ETH
Eth Value
$0.00More Info
Private Name Tags
ContractCreator
Latest 25 from a total of 129 transactions
Transaction Hash |
Method
|
Block
|
From
|
To
|
|||||
---|---|---|---|---|---|---|---|---|---|
Withdraw | 16795844 | 688 days ago | IN | 0.04 ETH | 0.00670737 | ||||
Withdraw | 16795835 | 688 days ago | IN | 0.04 ETH | 0.00650892 | ||||
Add Merkle Tree | 16720669 | 698 days ago | IN | 0 ETH | 0.00574732 | ||||
Withdraw | 16712565 | 699 days ago | IN | 0.04 ETH | 0.00564849 | ||||
Withdraw | 16712431 | 699 days ago | IN | 0.04 ETH | 0.00568759 | ||||
Withdraw | 16712401 | 699 days ago | IN | 0.04 ETH | 0.00561184 | ||||
Withdraw | 16712397 | 699 days ago | IN | 0.04 ETH | 0.00573608 | ||||
Withdraw | 16712393 | 699 days ago | IN | 0.04 ETH | 0.00544523 | ||||
Withdraw | 16712388 | 699 days ago | IN | 0.04 ETH | 0.00508179 | ||||
Withdraw | 16712385 | 699 days ago | IN | 0.04 ETH | 0.00518939 | ||||
Withdraw | 16712381 | 699 days ago | IN | 0.04 ETH | 0.00541338 | ||||
Withdraw | 16703936 | 701 days ago | IN | 0.04 ETH | 0.00695572 | ||||
Withdraw | 16700410 | 701 days ago | IN | 0.04 ETH | 0.00787628 | ||||
Withdraw | 16696382 | 702 days ago | IN | 0.04 ETH | 0.00879453 | ||||
Withdraw | 16696374 | 702 days ago | IN | 0.04 ETH | 0.00828304 | ||||
Withdraw | 16692370 | 702 days ago | IN | 0.04 ETH | 0.01614083 | ||||
Withdraw | 16692366 | 702 days ago | IN | 0.04 ETH | 0.01568021 | ||||
Withdraw | 16692363 | 702 days ago | IN | 0.04 ETH | 0.01756503 | ||||
Withdraw | 16692128 | 702 days ago | IN | 0.04 ETH | 0.01879472 | ||||
Withdraw | 16692118 | 702 days ago | IN | 0.04 ETH | 0.01833668 | ||||
Add Merkle Tree | 16692095 | 702 days ago | IN | 0 ETH | 0.00987985 | ||||
Add Merkle Tree | 16691741 | 702 days ago | IN | 0 ETH | 0.01001759 | ||||
Add Merkle Tree | 16685069 | 703 days ago | IN | 0 ETH | 0.01138215 | ||||
Withdraw | 15964038 | 804 days ago | IN | 0 ETH | 0.00443421 | ||||
Withdraw | 15964034 | 804 days ago | IN | 0 ETH | 0.00407076 |
Latest 25 internal transactions (View All)
Advanced mode:
Parent Transaction Hash | Block |
From
|
To
|
|||
---|---|---|---|---|---|---|
16795844 | 688 days ago | 0.04 ETH | ||||
16795835 | 688 days ago | 0.04 ETH | ||||
16712565 | 699 days ago | 0.04 ETH | ||||
16712431 | 699 days ago | 0.04 ETH | ||||
16712401 | 699 days ago | 0.04 ETH | ||||
16712397 | 699 days ago | 0.04 ETH | ||||
16712393 | 699 days ago | 0.04 ETH | ||||
16712388 | 699 days ago | 0.04 ETH | ||||
16712385 | 699 days ago | 0.04 ETH | ||||
16712381 | 699 days ago | 0.04 ETH | ||||
16703936 | 701 days ago | 0.04 ETH | ||||
16700410 | 701 days ago | 0.04 ETH | ||||
16696382 | 702 days ago | 0.04 ETH | ||||
16696374 | 702 days ago | 0.04 ETH | ||||
16692370 | 702 days ago | 0.04 ETH | ||||
16692366 | 702 days ago | 0.04 ETH | ||||
16692363 | 702 days ago | 0.04 ETH | ||||
16692128 | 702 days ago | 0.04 ETH | ||||
16692118 | 702 days ago | 0.04 ETH | ||||
15884688 | 815 days ago | 0.45 ETH | ||||
15834253 | 822 days ago | 0.45 ETH | ||||
15790255 | 828 days ago | 0.15 ETH | ||||
15754268 | 833 days ago | 0.45 ETH | ||||
15747625 | 834 days ago | 0.45 ETH | ||||
15743288 | 835 days ago | 0.15 ETH |
Loading...
Loading
This contract may be a proxy contract. Click on More Options and select Is this a proxy? to confirm and enable the "Read as Proxy" & "Write as Proxy" tabs.
Contract Source Code Verified (Exact Match)
Contract Name:
MerkleIdentity
Compiler Version
v0.8.12+commit.f00d7308
Contract Source Code (Solidity)
/** *Submitted for verification at Etherscan.io on 2022-07-06 */ // SPDX-License-Identifier: GPL-3.0-only pragma solidity 0.8.12; interface IVoterID { /** @notice Minting function */ function createIdentityFor(address newId, uint tokenId, string calldata uri) external; /** @notice Who has the authority to override metadata uri */ function owner() external view returns (address); /** @notice How many of these things exist? */ function totalSupply() external view returns (uint); } interface IPriceGate { /// @notice This function should return how much ether or tokens the minter must pay to mint an NFT function getCost(uint) external view returns (uint ethCost); /// @notice This function is called by MerkleIdentity when minting an NFT. It is where funds get collected. function passThruGate(uint, address) external payable; } interface IEligibility { // function getGate(uint) external view returns (struct Gate) // function addGate(uint...) external /// @notice Is the given user eligible? Concerns the address, not whether or not they have the funds /// @dev The bytes32[] argument is for merkle proofs of eligibility /// @return eligible true if the user can mint function isEligible(uint, address, bytes32[] calldata) external view returns (bool eligible); /// @notice This function is called by MerkleIdentity to make any state updates like counters /// @dev This function should typically call isEligible, since MerkleIdentity does not function passThruGate(uint, address, bytes32[] calldata) external; } library MerkleLib { function verifyProof(bytes32 root, bytes32 leaf, bytes32[] calldata proof) public pure returns (bool) { bytes32 currentHash = leaf; uint proofLength = proof.length; for (uint i; i < proofLength;) { currentHash = parentHash(currentHash, proof[i]); unchecked { ++i; } } return currentHash == root; } function parentHash(bytes32 a, bytes32 b) private pure returns (bytes32) { return keccak256(a < b ? abi.encode(a, b) : abi.encode(b, a)); } } /// @title A generalized NFT minting system using merkle trees to pre-commit to metadata posted to ipfs /// @author metapriest, adrian.wachel, marek.babiarz, radoslaw.gorecki /// @notice This contract is permissioned, it requires a treeAdder key to add trees /// @dev Merkle trees are used at this layer to prove the correctness of metadata added to newly minted NFTs /// @dev A single NFT contract may have many merkle trees with the same or different roots added here /// @dev Each tree added has a price gate (specifies price schedule) and an eligibility gate (specifies eligibility criteria) /// @dev Double minting of the same NFT is prevented by the NFT contract (VoterID) contract MerkleIdentity { using MerkleLib for bytes32; // this represents a mint of a single NFT contract with a fixed price gate and eligibility gate struct MerkleTree { bytes32 metadataMerkleRoot; // root of merkle tree whose leaves are uri strings to be assigned to minted NFTs bytes32 ipfsHash; // ipfs hash of complete uri dataset, as redundancy so that merkle proof remain computable address nftAddress; // address of NFT contract to be minted address priceGateAddress; // address price gate contract address eligibilityAddress; // address of eligibility gate contract uint eligibilityIndex; // enables re-use of eligibility contracts uint priceIndex; // enables re-use of price gate contracts } // array-like mapping of index to MerkleTree structs mapping (uint => MerkleTree) public merkleTrees; // count the trees uint public numTrees; // management key used to set ipfs hashes and treeAdder addresses address public management; // treeAdder is address that can add trees, separated from management to prevent switching it to a broken contract address public treeAdder; // every time a merkle tree is added event MerkleTreeAdded(uint indexed index, address indexed nftAddress); error ManagementOnly(address notManagement); error TreeAdderOnly(address notTreeAdder); error BadMerkleIndex(uint index); error BadMerkleProof(bytes32[] proof, bytes32 root); // simple call gate modifier managementOnly() { if (msg.sender != management) { revert ManagementOnly(msg.sender); } _; } /// @notice Whoever deploys the contract sets the two privileged keys /// @param _mgmt key that will initially be both management and treeAdder constructor(address _mgmt) { management = _mgmt; treeAdder = _mgmt; } /// @notice Change the management key /// @dev Only the current management key can change this /// @param newMgmt the new management key function setManagement(address newMgmt) external managementOnly { management = newMgmt; } /// @notice Change the treeAdder key /// @dev Only the current management key can call this /// @param newAdder new addres that will be able to add trees, old address will not be able to function setTreeAdder(address newAdder) external managementOnly { treeAdder = newAdder; } /// @notice Set the ipfs hash of a specific tree /// @dev Only the current management key can call this /// @param merkleIndex which merkle tree are we talking about? /// @param hash the new ipfs hash summarizing this dataset, written as bytes32 omitting the first 2 bytes "Qm" function setIpfsHash(uint merkleIndex, bytes32 hash) external managementOnly { MerkleTree storage tree = merkleTrees[merkleIndex]; tree.ipfsHash = hash; } /// @notice Create a new merkle tree, opening a mint to an existing contract /// @dev Only treeAdder can call this /// @param metadataMerkleRoot merkle root of the complete metadata set represented as mintable by this tree /// @param ipfsHash ipfs hash of complete dataset (note that you can post hash here without posting to network aka "submarining" /// @param nftAddress address of NFT contract to be minted (must conform to IVoterID interface) /// @param priceGateAddress address of price gate contract (must conform to IPriceGate interface) /// @param eligibilityAddress address of eligibility gate contract (must conform to IEligibility interface) /// @param eligibilityIndex index passed to eligibility gate, which in general will have many gates, to select which parameters /// @param priceIndex index passed to price gate to select which parameters to use function addMerkleTree( bytes32 metadataMerkleRoot, bytes32 ipfsHash, address nftAddress, address priceGateAddress, address eligibilityAddress, uint eligibilityIndex, uint priceIndex) external returns (uint) { if (msg.sender != treeAdder) { revert TreeAdderOnly(msg.sender); } MerkleTree storage tree = merkleTrees[++numTrees]; tree.metadataMerkleRoot = metadataMerkleRoot; tree.ipfsHash = ipfsHash; tree.nftAddress = nftAddress; tree.priceGateAddress = priceGateAddress; tree.eligibilityAddress = eligibilityAddress; tree.eligibilityIndex = eligibilityIndex; tree.priceIndex = priceIndex; emit MerkleTreeAdded(numTrees, nftAddress); return numTrees; } /// @notice Mint a new NFT /// @dev Anyone may call this, but they must pass thru the two gates /// @param merkleIndex which merkle tree are we withdrawing the NFT from? /// @param tokenId the id number of the NFT to be minted, this data is bound to the uri in each leaf of the metadata merkle tree /// @param uri the metadata uri that will be associated with the minted NFT /// @param addressProof merkle proof proving the presence of msg.sender's address in an eligibility merkle tree /// @param metadataProof sequence of hashes from leaf hash (tokenID, uri) to merkle root, proving data validity function withdraw(uint merkleIndex, uint tokenId, string calldata uri, bytes32[] calldata addressProof, bytes32[] calldata metadataProof) external payable { MerkleTree storage tree = merkleTrees[merkleIndex]; IVoterID id = IVoterID(tree.nftAddress); // mint an identity first, this keeps the token-collision gas cost down id.createIdentityFor(msg.sender, tokenId, uri); // check that the merkle index is real if (merkleIndex > numTrees || merkleIndex == 0) { revert BadMerkleIndex(merkleIndex); } // verify that the metadata is real if (verifyMetadata(tree.metadataMerkleRoot, tokenId, uri, metadataProof) == false) { revert BadMerkleProof(metadataProof, tree.metadataMerkleRoot); } // check eligibility of address IEligibility(tree.eligibilityAddress).passThruGate(tree.eligibilityIndex, msg.sender, addressProof); // check that the price is right IPriceGate(tree.priceGateAddress).passThruGate{value: msg.value}(tree.priceIndex, msg.sender); } /// @notice Get the current price for minting an NFT from a particular tree /// @dev This does not take tokenId as an argument, if you want different tokenIds to have different prices, use different trees /// @return ethCost the cost in wei of minting an NFT (could represent token cost if price gate takes tokens) function getPrice(uint merkleIndex) public view returns (uint) { MerkleTree storage tree = merkleTrees[merkleIndex]; return IPriceGate(tree.priceGateAddress).getCost(tree.priceIndex); } /// @notice Is the given address eligibile to mint from the given tree /// @dev If the eligibility gate does not use merkle trees, the proof can be left empty or used for anything else /// @param merkleIndex which tree are we talking about? /// @param recipient the address about which we are querying eligibility /// @param proof merkle proof linking recipient to eligibility merkle root /// @return eligibility true if recipient is currently eligible function isEligible(uint merkleIndex, address recipient, bytes32[] calldata proof) public view returns (bool) { MerkleTree storage tree = merkleTrees[merkleIndex]; return IEligibility(tree.eligibilityAddress).isEligible(tree.eligibilityIndex, recipient, proof); } /// @notice Is the provided metadata included in tree? /// @dev This is public for interfaces, called internally by withdraw function /// @param root merkle root (proof destination) /// @param tokenId index of NFT being queried /// @param uri intended uri of NFT being minted /// @param proof sequence of hashes linking leaf data to merkle root function verifyMetadata(bytes32 root, uint tokenId, string calldata uri, bytes32[] calldata proof) public pure returns (bool) { bytes32 leaf = keccak256(abi.encode(tokenId, uri)); return root.verifyProof(leaf, proof); } }
Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
[{"inputs":[{"internalType":"address","name":"_mgmt","type":"address"}],"stateMutability":"nonpayable","type":"constructor"},{"inputs":[{"internalType":"uint256","name":"index","type":"uint256"}],"name":"BadMerkleIndex","type":"error"},{"inputs":[{"internalType":"bytes32[]","name":"proof","type":"bytes32[]"},{"internalType":"bytes32","name":"root","type":"bytes32"}],"name":"BadMerkleProof","type":"error"},{"inputs":[{"internalType":"address","name":"notManagement","type":"address"}],"name":"ManagementOnly","type":"error"},{"inputs":[{"internalType":"address","name":"notTreeAdder","type":"address"}],"name":"TreeAdderOnly","type":"error"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"uint256","name":"index","type":"uint256"},{"indexed":true,"internalType":"address","name":"nftAddress","type":"address"}],"name":"MerkleTreeAdded","type":"event"},{"inputs":[{"internalType":"bytes32","name":"metadataMerkleRoot","type":"bytes32"},{"internalType":"bytes32","name":"ipfsHash","type":"bytes32"},{"internalType":"address","name":"nftAddress","type":"address"},{"internalType":"address","name":"priceGateAddress","type":"address"},{"internalType":"address","name":"eligibilityAddress","type":"address"},{"internalType":"uint256","name":"eligibilityIndex","type":"uint256"},{"internalType":"uint256","name":"priceIndex","type":"uint256"}],"name":"addMerkleTree","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"merkleIndex","type":"uint256"}],"name":"getPrice","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"merkleIndex","type":"uint256"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"bytes32[]","name":"proof","type":"bytes32[]"}],"name":"isEligible","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"management","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"}],"name":"merkleTrees","outputs":[{"internalType":"bytes32","name":"metadataMerkleRoot","type":"bytes32"},{"internalType":"bytes32","name":"ipfsHash","type":"bytes32"},{"internalType":"address","name":"nftAddress","type":"address"},{"internalType":"address","name":"priceGateAddress","type":"address"},{"internalType":"address","name":"eligibilityAddress","type":"address"},{"internalType":"uint256","name":"eligibilityIndex","type":"uint256"},{"internalType":"uint256","name":"priceIndex","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"numTrees","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"merkleIndex","type":"uint256"},{"internalType":"bytes32","name":"hash","type":"bytes32"}],"name":"setIpfsHash","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newMgmt","type":"address"}],"name":"setManagement","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newAdder","type":"address"}],"name":"setTreeAdder","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"treeAdder","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bytes32","name":"root","type":"bytes32"},{"internalType":"uint256","name":"tokenId","type":"uint256"},{"internalType":"string","name":"uri","type":"string"},{"internalType":"bytes32[]","name":"proof","type":"bytes32[]"}],"name":"verifyMetadata","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"uint256","name":"merkleIndex","type":"uint256"},{"internalType":"uint256","name":"tokenId","type":"uint256"},{"internalType":"string","name":"uri","type":"string"},{"internalType":"bytes32[]","name":"addressProof","type":"bytes32[]"},{"internalType":"bytes32[]","name":"metadataProof","type":"bytes32[]"}],"name":"withdraw","outputs":[],"stateMutability":"payable","type":"function"}]
Contract Creation Code
608060405234801561001057600080fd5b50604051610d9d380380610d9d83398101604081905261002f9161005e565b600280546001600160a01b039092166001600160a01b031992831681179091556003805490921617905561008e565b60006020828403121561007057600080fd5b81516001600160a01b038116811461008757600080fd5b9392505050565b610d008061009d6000396000f3fe6080604052600436106100a75760003560e01c8063a336384f11610064578063a336384f14610218578063a738d59014610248578063afad04c914610268578063bcdce8611461027b578063d4a22bde1461029b578063e7572230146102bb57600080fd5b80630dc61f2a146100ac578063390b7c66146100df578063517f2ac6146100f557806377bbd51e1461011757806385d88cb11461014f57806388a8d602146101f8575b600080fd5b3480156100b857600080fd5b506100cc6100c7366004610875565b6102db565b6040519081526020015b60405180910390f35b3480156100eb57600080fd5b506100cc60015481565b34801561010157600080fd5b506101156101103660046108df565b6103d3565b005b34801561012357600080fd5b50600354610137906001600160a01b031681565b6040516001600160a01b0390911681526020016100d6565b34801561015b57600080fd5b506101b561016a366004610901565b6000602081905290815260409020805460018201546002830154600384015460048501546005860154600690960154949593946001600160a01b039384169492841693909116919087565b6040805197885260208801969096526001600160a01b03948516958701959095529183166060860152909116608084015260a083015260c082015260e0016100d6565b34801561020457600080fd5b50600254610137906001600160a01b031681565b34801561022457600080fd5b506102386102333660046109a8565b610415565b60405190151581526020016100d6565b34801561025457600080fd5b50610115610263366004610a2b565b6104cf565b610115610276366004610a46565b61051e565b34801561028757600080fd5b50610238610296366004610af3565b6106e3565b3480156102a757600080fd5b506101156102b6366004610a2b565b610779565b3480156102c757600080fd5b506100cc6102d6366004610901565b6107c8565b6003546000906001600160a01b031633146103105760405163713d123160e01b81523360048201526024015b60405180910390fd5b600080600060016000815461032490610b4d565b918290555081526020810191909152604090810160009081208b815560018082018c90556002820180546001600160a01b03808e166001600160a01b031992831681179093556003850180548e8316908416179055600485018054918d169190921617905560058301899055600683018890559054935191945092917f528fe272ad4241205c90c01416e35ed8e15183f15fd9cf63f0be0f5f89cd631d91a35050600154979650505050505050565b6002546001600160a01b03163314610400576040516391ed042960e01b8152336004820152602401610307565b60009182526020829052604090912060010155565b60008086868660405160200161042d93929190610b9f565b60408051601f19818403018152908290528051602090910120632769cd1f60e21b8252915073458efd41740ffb27d86a9157050c0707b41e952090639da7347c90610482908b90859089908990600401610bf8565b602060405180830381865af415801561049f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906104c39190610c18565b98975050505050505050565b6002546001600160a01b031633146104fc576040516391ed042960e01b8152336004820152602401610307565b600380546001600160a01b0319166001600160a01b0392909216919091179055565b60008881526020819052604090819020600281015491516353005fb360e01b815290916001600160a01b03169081906353005fb3906105679033908d908d908d90600401610c3a565b600060405180830381600087803b15801561058157600080fd5b505af1158015610595573d6000803e3d6000fd5b505050506001548a11806105a7575089155b156105c8576040516303412c4960e51b8152600481018b9052602401610307565b81546105d8908a8a8a8888610415565b6105fc57815460405163b591e18160e01b8152610307918691869190600401610c62565b60048083015460058401546040516308abfd8d60e41b81526001600160a01b0390921692638abfd8d092610637929133918c918c9101610c86565b600060405180830381600087803b15801561065157600080fd5b505af1158015610665573d6000803e3d6000fd5b5050505060038201546006830154604051637b01facd60e01b815260048101919091523360248201526001600160a01b0390911690637b01facd9034906044016000604051808303818588803b1580156106be57600080fd5b505af11580156106d2573d6000803e3d6000fd5b505050505050505050505050505050565b6000848152602081905260408082206004808201546005830154935163bcdce86160e01b815292936001600160a01b039091169263bcdce8619261072e92918a918a918a9101610c86565b602060405180830381865afa15801561074b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061076f9190610c18565b9695505050505050565b6002546001600160a01b031633146107a6576040516391ed042960e01b8152336004820152602401610307565b600280546001600160a01b0319166001600160a01b0392909216919091179055565b600081815260208190526040808220600381015460068201549251635a4dd47d60e01b815291926001600160a01b0390911691635a4dd47d916108119160040190815260200190565b602060405180830381865afa15801561082e573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906108529190610cb1565b9392505050565b80356001600160a01b038116811461087057600080fd5b919050565b600080600080600080600060e0888a03121561089057600080fd5b87359650602088013595506108a760408901610859565b94506108b560608901610859565b93506108c360808901610859565b925060a0880135915060c0880135905092959891949750929550565b600080604083850312156108f257600080fd5b50508035926020909101359150565b60006020828403121561091357600080fd5b5035919050565b60008083601f84011261092c57600080fd5b50813567ffffffffffffffff81111561094457600080fd5b60208301915083602082850101111561095c57600080fd5b9250929050565b60008083601f84011261097557600080fd5b50813567ffffffffffffffff81111561098d57600080fd5b6020830191508360208260051b850101111561095c57600080fd5b600080600080600080608087890312156109c157600080fd5b8635955060208701359450604087013567ffffffffffffffff808211156109e757600080fd5b6109f38a838b0161091a565b90965094506060890135915080821115610a0c57600080fd5b50610a1989828a01610963565b979a9699509497509295939492505050565b600060208284031215610a3d57600080fd5b61085282610859565b60008060008060008060008060a0898b031215610a6257600080fd5b8835975060208901359650604089013567ffffffffffffffff80821115610a8857600080fd5b610a948c838d0161091a565b909850965060608b0135915080821115610aad57600080fd5b610ab98c838d01610963565b909650945060808b0135915080821115610ad257600080fd5b50610adf8b828c01610963565b999c989b5096995094979396929594505050565b60008060008060608587031215610b0957600080fd5b84359350610b1960208601610859565b9250604085013567ffffffffffffffff811115610b3557600080fd5b610b4187828801610963565b95989497509550505050565b6000600019821415610b6f57634e487b7160e01b600052601160045260246000fd5b5060010190565b81835281816020850137506000828201602090810191909152601f909101601f19169091010190565b838152604060208201526000610bb9604083018486610b76565b95945050505050565b81835260006001600160fb1b03831115610bdb57600080fd5b8260051b8083602087013760009401602001938452509192915050565b84815283602082015260606040820152600061076f606083018486610bc2565b600060208284031215610c2a57600080fd5b8151801515811461085257600080fd5b60018060a01b038516815283602082015260606040820152600061076f606083018486610b76565b604081526000610c76604083018587610bc2565b9050826020830152949350505050565b8481526001600160a01b038416602082015260606040820181905260009061076f9083018486610bc2565b600060208284031215610cc357600080fd5b505191905056fea264697066735822122041ae37c4852fea135d55bb40fb3275edc768f09e2e44b3cea08efd93b9eecbad64736f6c634300080c0033000000000000000000000000288fe43139741f91a8cbb6f4add83811c794851b
Deployed Bytecode
0x6080604052600436106100a75760003560e01c8063a336384f11610064578063a336384f14610218578063a738d59014610248578063afad04c914610268578063bcdce8611461027b578063d4a22bde1461029b578063e7572230146102bb57600080fd5b80630dc61f2a146100ac578063390b7c66146100df578063517f2ac6146100f557806377bbd51e1461011757806385d88cb11461014f57806388a8d602146101f8575b600080fd5b3480156100b857600080fd5b506100cc6100c7366004610875565b6102db565b6040519081526020015b60405180910390f35b3480156100eb57600080fd5b506100cc60015481565b34801561010157600080fd5b506101156101103660046108df565b6103d3565b005b34801561012357600080fd5b50600354610137906001600160a01b031681565b6040516001600160a01b0390911681526020016100d6565b34801561015b57600080fd5b506101b561016a366004610901565b6000602081905290815260409020805460018201546002830154600384015460048501546005860154600690960154949593946001600160a01b039384169492841693909116919087565b6040805197885260208801969096526001600160a01b03948516958701959095529183166060860152909116608084015260a083015260c082015260e0016100d6565b34801561020457600080fd5b50600254610137906001600160a01b031681565b34801561022457600080fd5b506102386102333660046109a8565b610415565b60405190151581526020016100d6565b34801561025457600080fd5b50610115610263366004610a2b565b6104cf565b610115610276366004610a46565b61051e565b34801561028757600080fd5b50610238610296366004610af3565b6106e3565b3480156102a757600080fd5b506101156102b6366004610a2b565b610779565b3480156102c757600080fd5b506100cc6102d6366004610901565b6107c8565b6003546000906001600160a01b031633146103105760405163713d123160e01b81523360048201526024015b60405180910390fd5b600080600060016000815461032490610b4d565b918290555081526020810191909152604090810160009081208b815560018082018c90556002820180546001600160a01b03808e166001600160a01b031992831681179093556003850180548e8316908416179055600485018054918d169190921617905560058301899055600683018890559054935191945092917f528fe272ad4241205c90c01416e35ed8e15183f15fd9cf63f0be0f5f89cd631d91a35050600154979650505050505050565b6002546001600160a01b03163314610400576040516391ed042960e01b8152336004820152602401610307565b60009182526020829052604090912060010155565b60008086868660405160200161042d93929190610b9f565b60408051601f19818403018152908290528051602090910120632769cd1f60e21b8252915073458efd41740ffb27d86a9157050c0707b41e952090639da7347c90610482908b90859089908990600401610bf8565b602060405180830381865af415801561049f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906104c39190610c18565b98975050505050505050565b6002546001600160a01b031633146104fc576040516391ed042960e01b8152336004820152602401610307565b600380546001600160a01b0319166001600160a01b0392909216919091179055565b60008881526020819052604090819020600281015491516353005fb360e01b815290916001600160a01b03169081906353005fb3906105679033908d908d908d90600401610c3a565b600060405180830381600087803b15801561058157600080fd5b505af1158015610595573d6000803e3d6000fd5b505050506001548a11806105a7575089155b156105c8576040516303412c4960e51b8152600481018b9052602401610307565b81546105d8908a8a8a8888610415565b6105fc57815460405163b591e18160e01b8152610307918691869190600401610c62565b60048083015460058401546040516308abfd8d60e41b81526001600160a01b0390921692638abfd8d092610637929133918c918c9101610c86565b600060405180830381600087803b15801561065157600080fd5b505af1158015610665573d6000803e3d6000fd5b5050505060038201546006830154604051637b01facd60e01b815260048101919091523360248201526001600160a01b0390911690637b01facd9034906044016000604051808303818588803b1580156106be57600080fd5b505af11580156106d2573d6000803e3d6000fd5b505050505050505050505050505050565b6000848152602081905260408082206004808201546005830154935163bcdce86160e01b815292936001600160a01b039091169263bcdce8619261072e92918a918a918a9101610c86565b602060405180830381865afa15801561074b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061076f9190610c18565b9695505050505050565b6002546001600160a01b031633146107a6576040516391ed042960e01b8152336004820152602401610307565b600280546001600160a01b0319166001600160a01b0392909216919091179055565b600081815260208190526040808220600381015460068201549251635a4dd47d60e01b815291926001600160a01b0390911691635a4dd47d916108119160040190815260200190565b602060405180830381865afa15801561082e573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906108529190610cb1565b9392505050565b80356001600160a01b038116811461087057600080fd5b919050565b600080600080600080600060e0888a03121561089057600080fd5b87359650602088013595506108a760408901610859565b94506108b560608901610859565b93506108c360808901610859565b925060a0880135915060c0880135905092959891949750929550565b600080604083850312156108f257600080fd5b50508035926020909101359150565b60006020828403121561091357600080fd5b5035919050565b60008083601f84011261092c57600080fd5b50813567ffffffffffffffff81111561094457600080fd5b60208301915083602082850101111561095c57600080fd5b9250929050565b60008083601f84011261097557600080fd5b50813567ffffffffffffffff81111561098d57600080fd5b6020830191508360208260051b850101111561095c57600080fd5b600080600080600080608087890312156109c157600080fd5b8635955060208701359450604087013567ffffffffffffffff808211156109e757600080fd5b6109f38a838b0161091a565b90965094506060890135915080821115610a0c57600080fd5b50610a1989828a01610963565b979a9699509497509295939492505050565b600060208284031215610a3d57600080fd5b61085282610859565b60008060008060008060008060a0898b031215610a6257600080fd5b8835975060208901359650604089013567ffffffffffffffff80821115610a8857600080fd5b610a948c838d0161091a565b909850965060608b0135915080821115610aad57600080fd5b610ab98c838d01610963565b909650945060808b0135915080821115610ad257600080fd5b50610adf8b828c01610963565b999c989b5096995094979396929594505050565b60008060008060608587031215610b0957600080fd5b84359350610b1960208601610859565b9250604085013567ffffffffffffffff811115610b3557600080fd5b610b4187828801610963565b95989497509550505050565b6000600019821415610b6f57634e487b7160e01b600052601160045260246000fd5b5060010190565b81835281816020850137506000828201602090810191909152601f909101601f19169091010190565b838152604060208201526000610bb9604083018486610b76565b95945050505050565b81835260006001600160fb1b03831115610bdb57600080fd5b8260051b8083602087013760009401602001938452509192915050565b84815283602082015260606040820152600061076f606083018486610bc2565b600060208284031215610c2a57600080fd5b8151801515811461085257600080fd5b60018060a01b038516815283602082015260606040820152600061076f606083018486610b76565b604081526000610c76604083018587610bc2565b9050826020830152949350505050565b8481526001600160a01b038416602082015260606040820181905260009061076f9083018486610bc2565b600060208284031215610cc357600080fd5b505191905056fea264697066735822122041ae37c4852fea135d55bb40fb3275edc768f09e2e44b3cea08efd93b9eecbad64736f6c634300080c0033
Constructor Arguments (ABI-Encoded and is the last bytes of the Contract Creation Code above)
000000000000000000000000288fe43139741f91a8cbb6f4add83811c794851b
-----Decoded View---------------
Arg [0] : _mgmt (address): 0x288fE43139741F91a8Cbb6F4adD83811c794851b
-----Encoded View---------------
1 Constructor Arguments found :
Arg [0] : 000000000000000000000000288fe43139741f91a8cbb6f4add83811c794851b
Deployed Bytecode Sourcemap
2876:8487:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6813:841;;;;;;;;;;-1:-1:-1;6813:841:0;;;;;:::i;:::-;;:::i;:::-;;;953:25:1;;;941:2;926:18;6813:841:0;;;;;;;;3809:20;;;;;;;;;;;;;;;;5718:177;;;;;;;;;;-1:-1:-1;5718:177:0;;;;;:::i;:::-;;:::i;:::-;;4061:24;;;;;;;;;;-1:-1:-1;4061:24:0;;;;-1:-1:-1;;;;;4061:24:0;;;;;;-1:-1:-1;;;;;1406:32:1;;;1388:51;;1376:2;1361:18;4061:24:0;1242:203:1;3731:47:0;;;;;;;;;;-1:-1:-1;3731:47:0;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;3731:47:0;;;;;;;;;;;;;;;;;;;1950:25:1;;;2006:2;1991:18;;1984:34;;;;-1:-1:-1;;;;;2092:15:1;;;2072:18;;;2065:43;;;;2144:15;;;2139:2;2124:18;;2117:43;2197:15;;;2191:3;2176:19;;2169:44;2045:3;2229:19;;2222:35;2288:3;2273:19;;2266:35;1937:3;1922:19;3731:47:0;1635:672:1;3909:25:0;;;;;;;;;;-1:-1:-1;3909:25:0;;;;-1:-1:-1;;;;;3909:25:0;;;11116:242;;;;;;;;;;-1:-1:-1;11116:242:0;;;;;:::i;:::-;;:::i;:::-;;;4091:14:1;;4084:22;4066:41;;4054:2;4039:18;11116:242:0;3926:187:1;5309:103:0;;;;;;;;;;-1:-1:-1;5309:103:0;;;;;:::i;:::-;;:::i;8296:1114::-;;;;;;:::i;:::-;;:::i;10447:286::-;;;;;;;;;;-1:-1:-1;10447:286:0;;;;;:::i;:::-;;:::i;4996:103::-;;;;;;;;;;-1:-1:-1;4996:103:0;;;;;:::i;:::-;;:::i;9748:208::-;;;;;;;;;;-1:-1:-1;9748:208:0;;;;;:::i;:::-;;:::i;6813:841::-;7113:9;;7078:4;;-1:-1:-1;;;;;7113:9:0;7099:10;:23;7095:88;;7146:25;;-1:-1:-1;;;7146:25:0;;7160:10;7146:25;;;1388:51:1;1361:18;;7146:25:0;;;;;;;;7095:88;7193:23;7219:11;:23;7233:8;;7231:10;;;;;:::i;:::-;;;;;-1:-1:-1;7219:23:0;;;;;;;;;;;;;-1:-1:-1;7219:23:0;;;7253:44;;;7308:13;;;;:24;;;7343:15;;;:28;;-1:-1:-1;;;;;7343:28:0;;;-1:-1:-1;;;;;;7343:28:0;;;;;;;;7382:21;;;:40;;;;;;;;;;;7433:23;;;:44;;;;;;;;;;;;7488:21;;;:40;;;7539:15;;;:28;;;7599:8;;7583:37;;7219:23;;-1:-1:-1;7343:28:0;7599:8;7583:37;;;-1:-1:-1;;7638:8:0;;6813:841;;;;;;;;;:::o;5718:177::-;4491:10;;-1:-1:-1;;;;;4491:10:0;4477;:24;4473:90;;4525:26;;-1:-1:-1;;;4525:26:0;;4540:10;4525:26;;;1388:51:1;1361:18;;4525:26:0;1242:203:1;4473:90:0;5806:23:::1;5832:24:::0;;;::::1;::::0;;;;;;;5867:13:::1;;:20:::0;5718:177::o;11116:242::-;11236:4;11253:12;11289:7;11298:3;;11278:24;;;;;;;;;;:::i;:::-;;;;-1:-1:-1;;11278:24:0;;;;;;;;;;11268:35;;11278:24;11268:35;;;;-1:-1:-1;;;11321:29:0;;11268:35;-1:-1:-1;11321:16:0;;;;:29;;:4;;11268:35;;11344:5;;;;11321:29;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;11314:36;11116:242;-1:-1:-1;;;;;;;;11116:242:0:o;5309:103::-;4491:10;;-1:-1:-1;;;;;4491:10:0;4477;:24;4473:90;;4525:26;;-1:-1:-1;;;4525:26:0;;4540:10;4525:26;;;1388:51:1;1361:18;;4525:26:0;1242:203:1;4473:90:0;5384:9:::1;:20:::0;;-1:-1:-1;;;;;;5384:20:0::1;-1:-1:-1::0;;;;;5384:20:0;;;::::1;::::0;;;::::1;::::0;;5309:103::o;8296:1114::-;8462:23;8488:24;;;;;;;;;;;;8546:15;;;;8656:46;;-1:-1:-1;;;8656:46:0;;8488:24;;-1:-1:-1;;;;;8546:15:0;;;;8656:20;;:46;;8677:10;;8689:7;;8698:3;;;;8656:46;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8781:8;;8767:11;:22;:42;;;-1:-1:-1;8793:16:0;;8767:42;8763:109;;;8833:27;;-1:-1:-1;;;8833:27:0;;;;;953:25:1;;;926:18;;8833:27:0;807:177:1;8763:109:0;8948:23;;8933:68;;8973:7;8982:3;;8987:13;;8933:14;:68::i;:::-;8929:171;;9064:23;;9034:54;;-1:-1:-1;;;9034:54:0;;;;9049:13;;;;9064:23;9034:54;;;:::i;8929:171::-;9166:23;;;;;9204:21;;;;9153:99;;-1:-1:-1;;;9153:99:0;;-1:-1:-1;;;;;9166:23:0;;;;9153:50;;:99;;9204:21;9227:10;;9239:12;;;;9153:99;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;9318:21:0;;;;9372:15;;;;9307:93;;-1:-1:-1;;;9307:93:0;;;;;9433:25:1;;;;9389:10:0;9474:18:1;;;9467:60;-1:-1:-1;;;;;9318:21:0;;;;9307:46;;9361:9;;9406:18:1;;9307:93:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8451:959;;8296:1114;;;;;;;;:::o;10447:286::-;10551:4;10594:24;;;;;;;;;;;10649:23;;;;;10685:21;;;;10636:89;;-1:-1:-1;;;10636:89:0;;10594:24;;-1:-1:-1;;;;;10649:23:0;;;;10636:48;;:89;;10685:21;10708:9;;10719:5;;;;10636:89;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;10629:96;10447:286;-1:-1:-1;;;;;;10447:286:0:o;4996:103::-;4491:10;;-1:-1:-1;;;;;4491:10:0;4477;:24;4473:90;;4525:26;;-1:-1:-1;;;4525:26:0;;4540:10;4525:26;;;1388:51:1;1361:18;;4525:26:0;1242:203:1;4473:90:0;5071:10:::1;:20:::0;;-1:-1:-1;;;;;;5071:20:0::1;-1:-1:-1::0;;;;;5071:20:0;;;::::1;::::0;;;::::1;::::0;;4996:103::o;9748:208::-;9805:4;9848:24;;;;;;;;;;;9901:21;;;;9932:15;;;;9890:58;;-1:-1:-1;;;9890:58:0;;9848:24;;-1:-1:-1;;;;;9901:21:0;;;;9890:41;;:58;;;;953:25:1;;;941:2;926:18;;807:177;9890:58:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;9883:65;9748:208;-1:-1:-1;;;9748:208:0:o;14:173:1:-;82:20;;-1:-1:-1;;;;;131:31:1;;121:42;;111:70;;177:1;174;167:12;111:70;14:173;;;:::o;192:610::-;305:6;313;321;329;337;345;353;406:3;394:9;385:7;381:23;377:33;374:53;;;423:1;420;413:12;374:53;459:9;446:23;436:33;;516:2;505:9;501:18;488:32;478:42;;539:38;573:2;562:9;558:18;539:38;:::i;:::-;529:48;;596:38;630:2;619:9;615:18;596:38;:::i;:::-;586:48;;653:39;687:3;676:9;672:19;653:39;:::i;:::-;643:49;;739:3;728:9;724:19;711:33;701:43;;791:3;780:9;776:19;763:33;753:43;;192:610;;;;;;;;;;:::o;989:248::-;1057:6;1065;1118:2;1106:9;1097:7;1093:23;1089:32;1086:52;;;1134:1;1131;1124:12;1086:52;-1:-1:-1;;1157:23:1;;;1227:2;1212:18;;;1199:32;;-1:-1:-1;989:248:1:o;1450:180::-;1509:6;1562:2;1550:9;1541:7;1537:23;1533:32;1530:52;;;1578:1;1575;1568:12;1530:52;-1:-1:-1;1601:23:1;;1450:180;-1:-1:-1;1450:180:1:o;2312:348::-;2364:8;2374:6;2428:3;2421:4;2413:6;2409:17;2405:27;2395:55;;2446:1;2443;2436:12;2395:55;-1:-1:-1;2469:20:1;;2512:18;2501:30;;2498:50;;;2544:1;2541;2534:12;2498:50;2581:4;2573:6;2569:17;2557:29;;2633:3;2626:4;2617:6;2609;2605:19;2601:30;2598:39;2595:59;;;2650:1;2647;2640:12;2595:59;2312:348;;;;;:::o;2665:367::-;2728:8;2738:6;2792:3;2785:4;2777:6;2773:17;2769:27;2759:55;;2810:1;2807;2800:12;2759:55;-1:-1:-1;2833:20:1;;2876:18;2865:30;;2862:50;;;2908:1;2905;2898:12;2862:50;2945:4;2937:6;2933:17;2921:29;;3005:3;2998:4;2988:6;2985:1;2981:14;2973:6;2969:27;2965:38;2962:47;2959:67;;;3022:1;3019;3012:12;3037:884;3162:6;3170;3178;3186;3194;3202;3255:3;3243:9;3234:7;3230:23;3226:33;3223:53;;;3272:1;3269;3262:12;3223:53;3308:9;3295:23;3285:33;;3365:2;3354:9;3350:18;3337:32;3327:42;;3420:2;3409:9;3405:18;3392:32;3443:18;3484:2;3476:6;3473:14;3470:34;;;3500:1;3497;3490:12;3470:34;3539:59;3590:7;3581:6;3570:9;3566:22;3539:59;:::i;:::-;3617:8;;-1:-1:-1;3513:85:1;-1:-1:-1;3705:2:1;3690:18;;3677:32;;-1:-1:-1;3721:16:1;;;3718:36;;;3750:1;3747;3740:12;3718:36;;3789:72;3853:7;3842:8;3831:9;3827:24;3789:72;:::i;:::-;3037:884;;;;-1:-1:-1;3037:884:1;;-1:-1:-1;3037:884:1;;3880:8;;3037:884;-1:-1:-1;;;3037:884:1:o;4118:186::-;4177:6;4230:2;4218:9;4209:7;4205:23;4201:32;4198:52;;;4246:1;4243;4236:12;4198:52;4269:29;4288:9;4269:29;:::i;4309:1200::-;4470:6;4478;4486;4494;4502;4510;4518;4526;4579:3;4567:9;4558:7;4554:23;4550:33;4547:53;;;4596:1;4593;4586:12;4547:53;4632:9;4619:23;4609:33;;4689:2;4678:9;4674:18;4661:32;4651:42;;4744:2;4733:9;4729:18;4716:32;4767:18;4808:2;4800:6;4797:14;4794:34;;;4824:1;4821;4814:12;4794:34;4863:59;4914:7;4905:6;4894:9;4890:22;4863:59;:::i;:::-;4941:8;;-1:-1:-1;4837:85:1;-1:-1:-1;5029:2:1;5014:18;;5001:32;;-1:-1:-1;5045:16:1;;;5042:36;;;5074:1;5071;5064:12;5042:36;5113:72;5177:7;5166:8;5155:9;5151:24;5113:72;:::i;:::-;5204:8;;-1:-1:-1;5087:98:1;-1:-1:-1;5292:3:1;5277:19;;5264:33;;-1:-1:-1;5309:16:1;;;5306:36;;;5338:1;5335;5328:12;5306:36;;5377:72;5441:7;5430:8;5419:9;5415:24;5377:72;:::i;:::-;4309:1200;;;;-1:-1:-1;4309:1200:1;;-1:-1:-1;4309:1200:1;;;;;;5468:8;-1:-1:-1;;;4309:1200:1:o;5514:579::-;5618:6;5626;5634;5642;5695:2;5683:9;5674:7;5670:23;5666:32;5663:52;;;5711:1;5708;5701:12;5663:52;5747:9;5734:23;5724:33;;5776:38;5810:2;5799:9;5795:18;5776:38;:::i;:::-;5766:48;;5865:2;5854:9;5850:18;5837:32;5892:18;5884:6;5881:30;5878:50;;;5924:1;5921;5914:12;5878:50;5963:70;6025:7;6016:6;6005:9;6001:22;5963:70;:::i;:::-;5514:579;;;;-1:-1:-1;6052:8:1;-1:-1:-1;;;;5514:579:1:o;6098:232::-;6137:3;-1:-1:-1;;6158:17:1;;6155:140;;;6217:10;6212:3;6208:20;6205:1;6198:31;6252:4;6249:1;6242:15;6280:4;6277:1;6270:15;6155:140;-1:-1:-1;6322:1:1;6311:13;;6098:232::o;6335:267::-;6424:6;6419:3;6412:19;6476:6;6469:5;6462:4;6457:3;6453:14;6440:43;-1:-1:-1;6528:1:1;6503:16;;;6521:4;6499:27;;;6492:38;;;;6584:2;6563:15;;;-1:-1:-1;;6559:29:1;6550:39;;;6546:50;;6335:267::o;6607:318::-;6794:6;6783:9;6776:25;6837:2;6832;6821:9;6817:18;6810:30;6757:4;6857:62;6915:2;6904:9;6900:18;6892:6;6884;6857:62;:::i;:::-;6849:70;6607:318;-1:-1:-1;;;;;6607:318:1:o;6930:354::-;7018:19;;;7000:3;-1:-1:-1;;;;;7049:31:1;;7046:51;;;7093:1;7090;7083:12;7046:51;7129:6;7126:1;7122:14;7181:8;7174:5;7167:4;7162:3;7158:14;7145:45;7258:1;7213:18;;7233:4;7209:29;7247:13;;;-1:-1:-1;7209:29:1;;6930:354;-1:-1:-1;;6930:354:1:o;7289:438::-;7542:6;7531:9;7524:25;7585:6;7580:2;7569:9;7565:18;7558:34;7628:2;7623;7612:9;7608:18;7601:30;7505:4;7648:73;7717:2;7706:9;7702:18;7694:6;7686;7648:73;:::i;7732:277::-;7799:6;7852:2;7840:9;7831:7;7827:23;7823:32;7820:52;;;7868:1;7865;7858:12;7820:52;7900:9;7894:16;7953:5;7946:13;7939:21;7932:5;7929:32;7919:60;;7975:1;7972;7965:12;8014:415;8258:1;8254;8249:3;8245:11;8241:19;8233:6;8229:32;8218:9;8211:51;8298:6;8293:2;8282:9;8278:18;8271:34;8341:2;8336;8325:9;8321:18;8314:30;8192:4;8361:62;8419:2;8408:9;8404:18;8396:6;8388;8361:62;:::i;8434:359::-;8651:2;8640:9;8633:21;8614:4;8671:73;8740:2;8729:9;8725:18;8717:6;8709;8671:73;:::i;:::-;8663:81;;8780:6;8775:2;8764:9;8760:18;8753:34;8434:359;;;;;;:::o;8798:456::-;9025:25;;;-1:-1:-1;;;;;9086:32:1;;9081:2;9066:18;;9059:60;9155:2;9150;9135:18;;9128:30;;;-1:-1:-1;;9175:73:1;;9229:18;;9221:6;9213;9175:73;:::i;9538:184::-;9608:6;9661:2;9649:9;9640:7;9636:23;9632:32;9629:52;;;9677:1;9674;9667:12;9629:52;-1:-1:-1;9700:16:1;;9538:184;-1:-1:-1;9538:184:1:o
Swarm Source
ipfs://41ae37c4852fea135d55bb40fb3275edc768f09e2e44b3cea08efd93b9eecbad
Loading...
Loading
Loading...
Loading
Multichain Portfolio | 30 Chains
Chain | Token | Portfolio % | Price | Amount | Value |
---|
Loading...
Loading
[ Download: CSV Export ]
[ 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.