More Info
Private Name Tags
ContractCreator
Latest 25 from a total of 130 transactions
Transaction Hash |
Method
|
Block
|
From
|
To
|
|||||
---|---|---|---|---|---|---|---|---|---|
Spend ERC20 | 12200052 | 1400 days ago | IN | 0 ETH | 0.01331694 | ||||
Spend ERC20 | 12106481 | 1415 days ago | IN | 0 ETH | 0.00999525 | ||||
Spend ERC20 | 12101512 | 1415 days ago | IN | 0 ETH | 0.0145895 | ||||
Spend ERC20 | 12089512 | 1417 days ago | IN | 0 ETH | 0.01931221 | ||||
Spend ERC20 | 12074620 | 1420 days ago | IN | 0 ETH | 0.00768863 | ||||
Spend ERC20 | 12068444 | 1421 days ago | IN | 0 ETH | 0.0123728 | ||||
Spend ERC20 | 12062910 | 1421 days ago | IN | 0 ETH | 0.01887703 | ||||
Spend ERC20 | 12056478 | 1422 days ago | IN | 0 ETH | 0.02137522 | ||||
Spend ERC20 | 12054974 | 1423 days ago | IN | 0 ETH | 0.01390117 | ||||
Spend ERC20 | 12041115 | 1425 days ago | IN | 0 ETH | 0.01107775 | ||||
Spend ERC20 | 12028511 | 1427 days ago | IN | 0 ETH | 0.00885922 | ||||
Spend ERC20 | 12016311 | 1429 days ago | IN | 0 ETH | 0.01016843 | ||||
Spend ERC20 | 11984098 | 1434 days ago | IN | 0 ETH | 0.00551349 | ||||
Spend ERC20 | 11970666 | 1436 days ago | IN | 0 ETH | 0.00543673 | ||||
Spend ERC20 | 11969541 | 1436 days ago | IN | 0 ETH | 0.01037905 | ||||
Spend ERC20 | 11963783 | 1437 days ago | IN | 0 ETH | 0.00611732 | ||||
Spend ERC20 | 11963476 | 1437 days ago | IN | 0 ETH | 0.00591843 | ||||
Spend ERC20 | 11958896 | 1437 days ago | IN | 0 ETH | 0.00612552 | ||||
Spend ERC20 | 11906388 | 1446 days ago | IN | 0 ETH | 0.01403704 | ||||
Spend ERC20 | 11905736 | 1446 days ago | IN | 0 ETH | 0.0093318 | ||||
Spend ERC20 | 11905331 | 1446 days ago | IN | 0 ETH | 0.01255174 | ||||
Spend ERC20 | 11905265 | 1446 days ago | IN | 0 ETH | 0.01067685 | ||||
Spend ERC20 | 11898542 | 1447 days ago | IN | 0 ETH | 0.00959991 | ||||
Spend ERC20 | 11886067 | 1449 days ago | IN | 0 ETH | 0.01076179 | ||||
Spend ERC20 | 11885991 | 1449 days ago | IN | 0 ETH | 0.01324683 |
View more zero value Internal Transactions in Advanced View mode
Advanced mode:
Loading...
Loading
Similar Match Source Code This contract matches the deployed Bytecode of the Source Code for Contract 0x228EaA0A...9Da789200 The constructor portion of the code might be different and could alter the actual behaviour of the contract
Contract Name:
OwnbitMultiSig
Compiler Version
v0.4.25+commit.59dbf8f1
Contract Source Code (Solidity)
/** *Submitted for verification at Etherscan.io on 2020-09-29 */ pragma solidity ^0.4.21; // This is the ETH/ERC20 multisig contract for Ownbit. // // For 2-of-3 multisig, to authorize a spend, two signtures must be provided by 2 of the 3 owners. // To generate the message to be signed, provide the destination address and // spend amount (in wei) to the generateMessageToSignmethod. // The signatures must be provided as the (v, r, s) hex-encoded coordinates. // The S coordinate must be 0x00 or 0x01 corresponding to 0x1b and 0x1c, respectively. // See the test file for example inputs. // // WARNING: The generated message is only valid until the next spend is executed. // after that, a new message will need to be calculated. // // // INFO: This contract is ERC20 compatible. // This contract can both receive ETH and ERC20 tokens. // NFT is not supported // Add support for DeFi (Compound) interface Erc20 { function approve(address, uint256); function transfer(address, uint256); } interface CErc20 { function mint(uint256) external returns (uint256); function redeem(uint) external returns (uint); function redeemUnderlying(uint) external returns (uint); } interface CEth { function mint() external payable; function redeem(uint) external returns (uint); function redeemUnderlying(uint) external returns (uint); } contract OwnbitMultiSig { uint constant public MAX_OWNER_COUNT = 9; // The N addresses which control the funds in this contract. The // owners of M of these addresses will need to both sign a message // allowing the funds in this contract to be spent. mapping(address => bool) private isOwner; address[] private owners; uint private required; // The contract nonce is not accessible to the contract so we // implement a nonce-like variable for replay protection. uint256 private spendNonce = 0; // An event sent when funds are received. event Funded(uint new_balance); // An event sent when a spend is triggered to the given address. event Spent(address to, uint transfer); // An event sent when a spend is triggered to the given address. event SpentErc20(address erc20contract, address to, uint transfer); modifier validRequirement(uint ownerCount, uint _required) { require (ownerCount <= MAX_OWNER_COUNT && _required <= ownerCount && _required > 0); _; } /// @dev Contract constructor sets initial owners and required number of confirmations. /// @param _owners List of initial owners. /// @param _required Number of required confirmations. constructor(address[] _owners, uint _required) public validRequirement(_owners.length, _required) { for (uint i=0; i<_owners.length; i++) { //onwer should be distinct, and non-zero if (isOwner[_owners[i]] || _owners[i] == 0) { revert(); } isOwner[_owners[i]] = true; } owners = _owners; required = _required; } // The fallback function for this contract. function() public payable { emit Funded(address(this).balance); } /// @dev Returns list of owners. /// @return List of owner addresses. function getOwners() public constant returns (address[]) { return owners; } function getSpendNonce() public constant returns (uint256) { return spendNonce; } function getRequired() public constant returns (uint) { return required; } // Generates the message to sign given the output destination address and amount. // includes this contract's address and a nonce for replay protection. // One option to independently verify: https://leventozturk.com/engineering/sha3/ and select keccak function generateMessageToSign(address erc20Contract, address destination, uint256 value) public constant returns (bytes32) { require(destination != address(this)); //the sequence should match generateMultiSigV2 in JS bytes32 message = keccak256(this, erc20Contract, destination, value, spendNonce); return message; } function _messageToRecover(address erc20Contract, address destination, uint256 value) private constant returns (bytes32) { bytes32 hashedUnsignedMessage = generateMessageToSign(erc20Contract, destination, value); bytes memory prefix = "\x19Ethereum Signed Message:\n32"; return keccak256(prefix,hashedUnsignedMessage); } function spend(address destination, uint256 value, uint8[] vs, bytes32[] rs, bytes32[] ss) public { // This require is handled by generateMessageToSign() // require(destination != address(this)); require(address(this).balance >= value); require(_validSignature(0x0000000000000000000000000000000000000000, destination, value, vs, rs, ss)); spendNonce = spendNonce + 1; //transfer will throw if fails destination.transfer(value); emit Spent(destination, value); } // @erc20contract: the erc20 contract address. // @destination: the token or ether receiver address. // @value: the token or ether value, in wei or token minimum unit. // @vs, rs, ss: the signatures function spendERC20(address destination, address erc20contract, uint256 value, uint8[] vs, bytes32[] rs, bytes32[] ss) public { // This require is handled by generateMessageToSign() // require(destination != address(this)); //transfer erc20 token //require(ERC20Interface(erc20contract).balanceOf(address(this)) >= value); require(_validSignature(erc20contract, destination, value, vs, rs, ss)); spendNonce = spendNonce + 1; // transfer the tokens from the sender to this contract Erc20(erc20contract).transfer(destination, value); emit SpentErc20(erc20contract, destination, value); } //cErc20Contract is just like the destination function compoundAction(address cErc20Contract, address erc20contract, uint256 value, uint8[] vs, bytes32[] rs, bytes32[] ss) public { CEth ethToken; CErc20 erc20Token; if (erc20contract == 0x0000000000000000000000000000000000000001) { require(_validSignature(erc20contract, cErc20Contract, value, vs, rs, ss)); spendNonce = spendNonce + 1; //supply ETH ethToken = CEth(cErc20Contract); ethToken.mint.value(value).gas(250000)(); } else if (erc20contract == 0x0000000000000000000000000000000000000003) { require(_validSignature(erc20contract, cErc20Contract, value, vs, rs, ss)); spendNonce = spendNonce + 1; //redeem ETH ethToken = CEth(cErc20Contract); ethToken.redeem(value); } else if (erc20contract == 0x0000000000000000000000000000000000000004) { require(_validSignature(erc20contract, cErc20Contract, value, vs, rs, ss)); spendNonce = spendNonce + 1; //redeem token erc20Token = CErc20(cErc20Contract); erc20Token.redeem(value); } else if (erc20contract == 0x0000000000000000000000000000000000000005) { require(_validSignature(erc20contract, cErc20Contract, value, vs, rs, ss)); spendNonce = spendNonce + 1; //redeemUnderlying ETH ethToken = CEth(cErc20Contract); ethToken.redeemUnderlying(value); } else if (erc20contract == 0x0000000000000000000000000000000000000006) { require(_validSignature(erc20contract, cErc20Contract, value, vs, rs, ss)); spendNonce = spendNonce + 1; //redeemUnderlying token erc20Token = CErc20(cErc20Contract); erc20Token.redeemUnderlying(value); } else { //Do not conflict with spendERC20 require(_validSignature(0x0000000000000000000000000000000000000002, cErc20Contract, value, vs, rs, ss)); spendNonce = spendNonce + 1; //supply token // Create a reference to the underlying asset contract, like DAI. Erc20 underlying = Erc20(erc20contract); // Create a reference to the corresponding cToken contract, like cDAI erc20Token = CErc20(cErc20Contract); // Approve transfer on the ERC20 contract underlying.approve(cErc20Contract, value); // Mint cTokens erc20Token.mint(value); } } // Confirm that the signature triplets (v1, r1, s1) (v2, r2, s2) ... // authorize a spend of this contract's funds to the given // destination address. function _validSignature(address erc20Contract, address destination, uint256 value, uint8[] vs, bytes32[] rs, bytes32[] ss) private constant returns (bool) { require(vs.length == rs.length); require(rs.length == ss.length); require(vs.length <= owners.length); require(vs.length >= required); bytes32 message = _messageToRecover(erc20Contract, destination, value); address[] memory addrs = new address[](vs.length); for (uint i=0; i<vs.length; i++) { //recover the address associated with the public key from elliptic curve signature or return zero on error addrs[i] = ecrecover(message, vs[i]+27, rs[i], ss[i]); } require(_distinctOwners(addrs)); return true; } // Confirm the addresses as distinct owners of this contract. function _distinctOwners(address[] addrs) private constant returns (bool) { if (addrs.length > owners.length) { return false; } for (uint i = 0; i < addrs.length; i++) { if (!isOwner[addrs[i]]) { return false; } //address should be distinct for (uint j = 0; j < i; j++) { if (addrs[i] == addrs[j]) { return false; } } } return true; } }
Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
[{"constant":false,"inputs":[{"name":"destination","type":"address"},{"name":"erc20contract","type":"address"},{"name":"value","type":"uint256"},{"name":"vs","type":"uint8[]"},{"name":"rs","type":"bytes32[]"},{"name":"ss","type":"bytes32[]"}],"name":"spendERC20","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"getRequired","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"destination","type":"address"},{"name":"value","type":"uint256"},{"name":"vs","type":"uint8[]"},{"name":"rs","type":"bytes32[]"},{"name":"ss","type":"bytes32[]"}],"name":"spend","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"getOwners","outputs":[{"name":"","type":"address[]"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"cErc20Contract","type":"address"},{"name":"erc20contract","type":"address"},{"name":"value","type":"uint256"},{"name":"vs","type":"uint8[]"},{"name":"rs","type":"bytes32[]"},{"name":"ss","type":"bytes32[]"}],"name":"compoundAction","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"getSpendNonce","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"MAX_OWNER_COUNT","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"erc20Contract","type":"address"},{"name":"destination","type":"address"},{"name":"value","type":"uint256"}],"name":"generateMessageToSign","outputs":[{"name":"","type":"bytes32"}],"payable":false,"stateMutability":"view","type":"function"},{"inputs":[{"name":"_owners","type":"address[]"},{"name":"_required","type":"uint256"}],"payable":false,"stateMutability":"nonpayable","type":"constructor"},{"payable":true,"stateMutability":"payable","type":"fallback"},{"anonymous":false,"inputs":[{"indexed":false,"name":"new_balance","type":"uint256"}],"name":"Funded","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"name":"to","type":"address"},{"indexed":false,"name":"transfer","type":"uint256"}],"name":"Spent","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"name":"erc20contract","type":"address"},{"indexed":false,"name":"to","type":"address"},{"indexed":false,"name":"transfer","type":"uint256"}],"name":"SpentErc20","type":"event"}]
Deployed Bytecode
0x60806040526004361061008e576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff16806301173672146100de5780631398a5f61461021457806385b2566a1461023f578063a0e67e2b14610355578063c26e69ca146103c1578063c6a2a9f1146104f7578063d74f8edd14610522578063da1a35d51461054d575b7fc4c14883ae9fd8e26d5d59e3485ed29fd126d781d7e498a4ca5c54c8268e49363073ffffffffffffffffffffffffffffffffffffffff16316040518082815260200191505060405180910390a1005b3480156100ea57600080fd5b50610212600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803590602001909291908035906020019082018035906020019080806020026020016040519081016040528093929190818152602001838360200280828437820191505050505050919291929080359060200190820180359060200190808060200260200160405190810160405280939291908181526020018383602002808284378201915050505050509192919290803590602001908201803590602001908080602002602001604051908101604052809392919081815260200183836020028082843782019150505050505091929192905050506105d6565b005b34801561022057600080fd5b5061022961075d565b6040518082815260200191505060405180910390f35b34801561024b57600080fd5b50610353600480360381019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190803590602001908201803590602001908080602002602001604051908101604052809392919081815260200183836020028082843782019150505050505091929192908035906020019082018035906020019080806020026020016040519081016040528093929190818152602001838360200280828437820191505050505050919291929080359060200190820180359060200190808060200260200160405190810160405280939291908181526020018383602002808284378201915050505050509192919290505050610767565b005b34801561036157600080fd5b5061036a61086c565b6040518080602001828103825283818151815260200191508051906020019060200280838360005b838110156103ad578082015181840152602081019050610392565b505050509050019250505060405180910390f35b3480156103cd57600080fd5b506104f5600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803590602001909291908035906020019082018035906020019080806020026020016040519081016040528093929190818152602001838360200280828437820191505050505050919291929080359060200190820180359060200190808060200260200160405190810160405280939291908181526020018383602002808284378201915050505050509192919290803590602001908201803590602001908080602002602001604051908101604052809392919081815260200183836020028082843782019150505050505091929192905050506108fa565b005b34801561050357600080fd5b5061050c610fba565b6040518082815260200191505060405180910390f35b34801561052e57600080fd5b50610537610fc4565b6040518082815260200191505060405180910390f35b34801561055957600080fd5b506105b8600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050610fc9565b60405180826000191660001916815260200191505060405180910390f35b6105e48587868686866110fd565b15156105ef57600080fd5b6001600354016003819055508473ffffffffffffffffffffffffffffffffffffffff1663a9059cbb87866040518363ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200182815260200192505050600060405180830381600087803b15801561069e57600080fd5b505af11580156106b2573d6000803e3d6000fd5b505050507f05374c4f98ac3202e6e2587fd4fe8290d6d61de6eb031d1abb68f943dcd01635858786604051808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001828152602001935050505060405180910390a1505050505050565b6000600254905090565b833073ffffffffffffffffffffffffffffffffffffffff16311015151561078d57600080fd5b61079c600086868686866110fd565b15156107a757600080fd5b6001600354016003819055508473ffffffffffffffffffffffffffffffffffffffff166108fc859081150290604051600060405180830381858888f193505050501580156107f9573d6000803e3d6000fd5b507fd3eec71143c45f28685b24760ea218d476917aa0ac0392a55e5304cef40bd2b68585604051808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018281526020019250505060405180910390a15050505050565b606060018054806020026020016040519081016040528092919081815260200182805480156108f057602002820191906000526020600020905b8160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190600101908083116108a6575b5050505050905090565b6000806000600173ffffffffffffffffffffffffffffffffffffffff168873ffffffffffffffffffffffffffffffffffffffff1614156109e457610942888a898989896110fd565b151561094d57600080fd5b6001600354016003819055508892508273ffffffffffffffffffffffffffffffffffffffff16631249c58b886203d090906040518363ffffffff167c01000000000000000000000000000000000000000000000000000000000281526004016000604051808303818589803b1580156109c557600080fd5b5088f11580156109d9573d6000803e3d6000fd5b505050505050610faf565b600373ffffffffffffffffffffffffffffffffffffffff168873ffffffffffffffffffffffffffffffffffffffff161415610af157610a27888a898989896110fd565b1515610a3257600080fd5b6001600354016003819055508892508273ffffffffffffffffffffffffffffffffffffffff1663db006a75886040518263ffffffff167c010000000000000000000000000000000000000000000000000000000002815260040180828152602001915050602060405180830381600087803b158015610ab057600080fd5b505af1158015610ac4573d6000803e3d6000fd5b505050506040513d6020811015610ada57600080fd5b810190808051906020019092919050505050610fae565b600473ffffffffffffffffffffffffffffffffffffffff168873ffffffffffffffffffffffffffffffffffffffff161415610bfe57610b34888a898989896110fd565b1515610b3f57600080fd5b6001600354016003819055508891508173ffffffffffffffffffffffffffffffffffffffff1663db006a75886040518263ffffffff167c010000000000000000000000000000000000000000000000000000000002815260040180828152602001915050602060405180830381600087803b158015610bbd57600080fd5b505af1158015610bd1573d6000803e3d6000fd5b505050506040513d6020811015610be757600080fd5b810190808051906020019092919050505050610fad565b600573ffffffffffffffffffffffffffffffffffffffff168873ffffffffffffffffffffffffffffffffffffffff161415610d0b57610c41888a898989896110fd565b1515610c4c57600080fd5b6001600354016003819055508892508273ffffffffffffffffffffffffffffffffffffffff1663852a12e3886040518263ffffffff167c010000000000000000000000000000000000000000000000000000000002815260040180828152602001915050602060405180830381600087803b158015610cca57600080fd5b505af1158015610cde573d6000803e3d6000fd5b505050506040513d6020811015610cf457600080fd5b810190808051906020019092919050505050610fac565b600673ffffffffffffffffffffffffffffffffffffffff168873ffffffffffffffffffffffffffffffffffffffff161415610e1857610d4e888a898989896110fd565b1515610d5957600080fd5b6001600354016003819055508891508173ffffffffffffffffffffffffffffffffffffffff1663852a12e3886040518263ffffffff167c010000000000000000000000000000000000000000000000000000000002815260040180828152602001915050602060405180830381600087803b158015610dd757600080fd5b505af1158015610deb573d6000803e3d6000fd5b505050506040513d6020811015610e0157600080fd5b810190808051906020019092919050505050610fab565b610e2760028a898989896110fd565b1515610e3257600080fd5b6001600354016003819055508790508891508073ffffffffffffffffffffffffffffffffffffffff1663095ea7b38a896040518363ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200182815260200192505050600060405180830381600087803b158015610ee757600080fd5b505af1158015610efb573d6000803e3d6000fd5b505050508173ffffffffffffffffffffffffffffffffffffffff1663a0712d68886040518263ffffffff167c010000000000000000000000000000000000000000000000000000000002815260040180828152602001915050602060405180830381600087803b158015610f6e57600080fd5b505af1158015610f82573d6000803e3d6000fd5b505050506040513d6020811015610f9857600080fd5b8101908080519060200190929190505050505b5b5b5b5b505050505050505050565b6000600354905090565b600981565b6000803073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff161415151561100757600080fd5b30858585600354604051808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166c010000000000000000000000000281526014018573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166c010000000000000000000000000281526014018473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166c010000000000000000000000000281526014018381526020018281526020019550505050505060405180910390209050809150509392505050565b600080606060008551875114151561111457600080fd5b8451865114151561112457600080fd5b60018054905087511115151561113957600080fd5b60025487511015151561114b57600080fd5b6111568a8a8a6112de565b925086516040519080825280602002602001820160405280156111885781602001602082028038833980820191505090505b509150600090505b86518110156112b957600183601b89848151811015156111ac57fe5b906020019060200201510188848151811015156111c557fe5b9060200190602002015188858151811015156111dd57fe5b90602001906020020151604051600081526020016040526040518085600019166000191681526020018460ff1660ff1681526020018360001916600019168152602001826000191660001916815260200194505050505060206040516020810390808403906000865af1158015611258573d6000803e3d6000fd5b50505060206040510351828281518110151561127057fe5b9060200190602002019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250508080600101915050611190565b6112c2826113a6565b15156112cd57600080fd5b600193505050509695505050505050565b60008060606112ee868686610fc9565b91506040805190810160405280601c81526020017f19457468657265756d205369676e6564204d6573736167653a0a333200000000815250905080826040518083805190602001908083835b60208310151561135f578051825260208201915060208101905060208303925061133a565b6001836020036101000a0380198251168184511680821785525050505050509050018260001916600019168152602001925050506040518091039020925050509392505050565b6000806000600180549050845111156113c257600092506114d9565b600091505b83518210156114d45760008085848151811015156113e157fe5b9060200190602002015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16151561144257600092506114d9565b600090505b818110156114c757838181518110151561145d57fe5b9060200190602002015173ffffffffffffffffffffffffffffffffffffffff16848381518110151561148b57fe5b9060200190602002015173ffffffffffffffffffffffffffffffffffffffff1614156114ba57600092506114d9565b8080600101915050611447565b81806001019250506113c7565b600192505b50509190505600a165627a7a72305820a2ccf7247ba566f659b58f7d23539524a71175fd326a4dac4542735f863c53090029
Deployed Bytecode Sourcemap
1351:8751:0:-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3167:29;3182:4;3174:21;;;3167:29;;;;;;;;;;;;;;;;;;1351:8751;5276:633;;8:9:-1;5:2;;;30:1;27;20:12;5:2;5276:633:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3502:88;;8:9:-1;5:2;;;30:1;27;20:12;5:2;3502:88:0;;;;;;;;;;;;;;;;;;;;;;;4553:504;;8:9:-1;5:2;;;30:1;27;20:12;5:2;4553:504:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3294:89;;8:9:-1;5:2;;;30:1;27;20:12;5:2;3294:89:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;99:1;94:3;90:11;84:18;80:1;75:3;71:11;64:39;52:2;49:1;45:10;40:15;;8:100;;;12:14;3294:89:0;;;;;;;;;;;;;;;;;5970:2677;;8:9:-1;5:2;;;30:1;27;20:12;5:2;5970:2677:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3395:95;;8:9:-1;5:2;;;30:1;27;20:12;5:2;3395:95:0;;;;;;;;;;;;;;;;;;;;;;;1388:40;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1388:40:0;;;;;;;;;;;;;;;;;;;;;;;3859:340;;8:9:-1;5:2;;;30:1;27;20:12;5:2;3859:340:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5276:633;5632:62;5648:13;5663:11;5676:5;5683:2;5687;5691;5632:15;:62::i;:::-;5624:71;;;;;;;;5728:1;5715:10;;:14;5702:10;:27;;;;5803:13;5797:29;;;5827:11;5840:5;5797:49;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;5797:49:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;5797:49:0;;;;5858:45;5869:13;5884:11;5897:5;5858:45;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5276:633;;;;;;:::o;3502:88::-;3550:4;3574:8;;3567:15;;3502:88;:::o;4553:504::-;4797:5;4780:4;4772:21;;;:30;;4764:39;;;;;;;;4818:91;4834:42;4878:11;4891:5;4898:2;4902;4906;4818:15;:91::i;:::-;4810:100;;;;;;;;4943:1;4930:10;;:14;4917:10;:27;;;;4987:11;:20;;:27;5008:5;4987:27;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;4987:27:0;5026:25;5032:11;5045:5;5026:25;;;;;;;;;;;;;;;;;;;;;;;;;;;;4553:504;;;;;:::o;3294:89::-;3340:9;3369:6;3362:13;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3294:89;:::o;5970:2677::-;6114:13;6138:17;8278:16;6197:42;6180:59;;:13;:59;;;6176:2463;;;6264:65;6280:13;6295:14;6311:5;6318:2;6322;6326;6264:15;:65::i;:::-;6256:74;;;;;;;;6371:1;6358:10;;:14;6345:10;:27;;;;6443:14;6427:31;;6473:8;:13;;;6493:5;6504:6;6473:38;:40;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;6473:40:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;6473:40:0;;;;;;6176:2463;;;6552:42;6535:59;;:13;:59;;;6531:2108;;;6619:65;6635:13;6650:14;6666:5;6673:2;6677;6681;6619:15;:65::i;:::-;6611:74;;;;;;;;6726:1;6713:10;;:14;6700:10;:27;;;;6798:14;6782:31;;6828:8;:15;;;6844:5;6828:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;6828:22:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;6828:22:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;6828:22:0;;;;;;;;;;;;;;;;;6531:2108;;;6889:42;6872:59;;:13;:59;;;6868:1771;;;6956:65;6972:13;6987:14;7003:5;7010:2;7014;7018;6956:15;:65::i;:::-;6948:74;;;;;;;;7063:1;7050:10;;:14;7037:10;:27;;;;7141:14;7121:35;;7171:10;:17;;;7189:5;7171:24;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;7171:24:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;7171:24:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;7171:24:0;;;;;;;;;;;;;;;;;6868:1771;;;7234:42;7217:59;;:13;:59;;;7213:1426;;;7301:65;7317:13;7332:14;7348:5;7355:2;7359;7363;7301:15;:65::i;:::-;7293:74;;;;;;;;7408:1;7395:10;;:14;7382:10;:27;;;;7490:14;7474:31;;7520:8;:25;;;7546:5;7520:32;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;7520:32:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;7520:32:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;7520:32:0;;;;;;;;;;;;;;;;;7213:1426;;;7591:42;7574:59;;:13;:59;;;7570:1069;;;7658:65;7674:13;7689:14;7705:5;7712:2;7716;7720;7658:15;:65::i;:::-;7650:74;;;;;;;;7765:1;7752:10;;:14;7739:10;:27;;;;7853:14;7833:35;;7883:10;:27;;;7911:5;7883:34;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;7883:34:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;7883:34:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;7883:34:0;;;;;;;;;;;;;;;;;7570:1069;;;8005:94;8021:42;8065:14;8081:5;8088:2;8092;8096;8005:15;:94::i;:::-;7997:103;;;;;;;;8141:1;8128:10;;:14;8115:10;:27;;;;8303:13;8278:39;;8435:14;8415:35;;8520:10;:18;;;8539:14;8555:5;8520:41;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;8520:41:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;8520:41:0;;;;8605:10;:15;;;8621:5;8605:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;8605:22:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;8605:22:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;8605:22:0;;;;;;;;;;;;;;;;;7570:1069;7213:1426;6868:1771;6531:2108;6176:2463;5970:2677;;;;;;;;;:::o;3395:95::-;3445:7;3472:10;;3465:17;;3395:95;:::o;1388:40::-;1427:1;1388:40;:::o;3859:340::-;3974:7;4092:15;4021:4;3998:28;;:11;:28;;;;3990:37;;;;;;;;4120:4;4126:13;4141:11;4154:5;4161:10;;4110:62;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4092:80;;4186:7;4179:14;;3859:340;;;;;;:::o;8820:734::-;8970:4;9138:15;9215:22;9276:6;9004:2;:9;8991:2;:9;:22;8983:31;;;;;;;;9042:2;:9;9029:2;:9;:22;9021:31;;;;;;;;9080:6;:13;;;;9067:2;:9;:26;;9059:35;;;;;;;;9122:8;;9109:2;:9;:21;;9101:30;;;;;;;;9156:52;9174:13;9189:11;9202:5;9156:17;:52::i;:::-;9138:70;;9254:2;:9;9240:24;;;;;;;;;;;;;;;;;;;;;;29:2:-1;21:6;17:15;117:4;105:10;97:6;88:34;148:4;140:6;136:17;126:27;;0:157;9240:24:0;;;;9215:49;;9283:1;9276:8;;9271:222;9288:2;:9;9286:1;:11;9271:222;;;9443:42;9453:7;9468:2;9462;9465:1;9462:5;;;;;;;;;;;;;;;;;;:8;9472:2;9475:1;9472:5;;;;;;;;;;;;;;;;;;9479:2;9482:1;9479:5;;;;;;;;;;;;;;;;;;9443:42;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;9443:42:0;;;;;;;;9432:5;9438:1;9432:8;;;;;;;;;;;;;;;;;:53;;;;;;;;;;;9299:3;;;;;;;9271:222;;;9507:22;9523:5;9507:15;:22::i;:::-;9499:31;;;;;;;;9544:4;9537:11;;8820:734;;;;;;;;;;;:::o;4207:338::-;4319:7;4335:29;4430:19;4367:56;4389:13;4404:11;4417:5;4367:21;:56::i;:::-;4335:88;;4430:56;;;;;;;;;;;;;;;;;;;;4510:6;4517:21;4500:39;;;;;;;;;;;;;36:153:-1;66:2;61:3;58:11;51:19;36:153;;;182:3;176:10;171:3;164:23;98:2;93:3;89:12;82:19;;123:2;118:3;114:12;107:19;;148:2;143:3;139:12;132:19;;36:153;;;274:1;267:3;263:2;259:12;254:3;250:22;246:30;315:4;311:9;305:3;299:10;295:26;356:4;350:3;344:10;340:21;389:7;380;377:20;372:3;365:33;3:399;;;4500:39:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;4493:46;;4207:338;;;;;;;:::o;9627:472::-;9695:4;9784:6;9946;9727;:13;;;;9712:5;:12;:28;9708:65;;;9760:5;9753:12;;;;9708:65;9793:1;9784:10;;9779:297;9800:5;:12;9796:1;:16;9779:297;;;9835:7;:17;9843:5;9849:1;9843:8;;;;;;;;;;;;;;;;;;9835:17;;;;;;;;;;;;;;;;;;;;;;;;;9834:18;9830:63;;;9876:5;9869:12;;;;9830:63;9955:1;9946:10;;9941:128;9962:1;9958;:5;9941:128;;;10001:5;10007:1;10001:8;;;;;;;;;;;;;;;;;;9989:20;;:5;9995:1;9989:8;;;;;;;;;;;;;;;;;;:20;;;9985:73;;;10037:5;10030:12;;;;9985:73;9965:3;;;;;;;9941:128;;;9814:3;;;;;;;9779:297;;;10089:4;10082:11;;9627:472;;;;;;:::o
Swarm Source
bzzr://a2ccf7247ba566f659b58f7d23539524a71175fd326a4dac4542735f863c5309
Loading...
Loading
Loading...
Loading
Multichain Portfolio | 30 Chains
Chain | Token | Portfolio % | Price | Amount | Value |
---|---|---|---|---|---|
ETH | 100.00% | $1 | 168.0176 | $168.02 |
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.