Overview
S Balance
0 S
S Value
-More Info
Private Name Tags
ContractCreator
Loading...
Loading
Contract Name:
PresaleVotingContract
Compiler Version
v0.8.17+commit.8df45f5f
Contract Source Code (Solidity Standard Json-Input format)
// SPDX-License-Identifier: MIT pragma solidity ^0.8.17; //pragma experimental ABIEncoderV2; library SafeMath { /** * @dev Returns the addition of two unsigned integers, reverting on * overflow. * * Counterpart to Solidity's `+` operator. * * Requirements: * * - Addition cannot overflow. */ function add(uint256 a, uint256 b) internal pure returns(uint256) { uint256 c = a + b; require(c >= a, "SafeMath: addition overflow"); return c; } /** * @dev Returns the subtraction of two unsigned integers, reverting on * overflow (when the result is negative). * * Counterpart to Solidity's `-` operator. * * Requirements: * * - Subtraction cannot overflow. */ function sub(uint256 a, uint256 b) internal pure returns(uint256) { return sub(a, b, "SafeMath: subtraction overflow"); } /** * @dev Returns the subtraction of two unsigned integers, reverting with custom message on * overflow (when the result is negative). * * Counterpart to Solidity's `-` operator. * * Requirements: * * - Subtraction cannot overflow. */ function sub(uint256 a, uint256 b, string memory errorMessage) internal pure returns(uint256) { require(b <= a, errorMessage); uint256 c = a - b; return c; } /** * @dev Returns the multiplication of two unsigned integers, reverting on * overflow. * * Counterpart to Solidity's `*` operator. * * Requirements: * * - Multiplication cannot overflow. */ function mul(uint256 a, uint256 b) internal pure returns(uint256) { // Gas optimization: this is cheaper than requiring 'a' not being zero, but the // benefit is lost if 'b' is also tested. // See: https://github.com/OpenZeppelin/openzeppelin-contracts/pull/522 if (a == 0) { return 0; } uint256 c = a * b; require(c / a == b, "SafeMath: multiplication overflow"); return c; } /** * @dev Returns the integer division of two unsigned integers. Reverts on * division by zero. The result is rounded towards zero. * * Counterpart to Solidity's `/` operator. Note: this function uses a * `revert` opcode (which leaves remaining gas untouched) while Solidity * uses an invalid opcode to revert (consuming all remaining gas). * * Requirements: * * - The divisor cannot be zero. */ function div(uint256 a, uint256 b) internal pure returns(uint256) { return div(a, b, "SafeMath: division by zero"); } /** * @dev Returns the integer division of two unsigned integers. Reverts with custom message on * division by zero. The result is rounded towards zero. * * Counterpart to Solidity's `/` operator. Note: this function uses a * `revert` opcode (which leaves remaining gas untouched) while Solidity * uses an invalid opcode to revert (consuming all remaining gas). * * Requirements: * * - The divisor cannot be zero. */ function div(uint256 a, uint256 b, string memory errorMessage) internal pure returns(uint256) { require(b > 0, errorMessage); uint256 c = a / b; // assert(a == b * c + a % b); // There is no case in which this doesn't hold return c; } /** * @dev Returns the remainder of dividing two unsigned integers. (unsigned integer modulo), * Reverts when dividing by zero. * * Counterpart to Solidity's `%` operator. This function uses a `revert` * opcode (which leaves remaining gas untouched) while Solidity uses an * invalid opcode to revert (consuming all remaining gas). * * Requirements: * * - The divisor cannot be zero. */ function mod(uint256 a, uint256 b) internal pure returns(uint256) { return mod(a, b, "SafeMath: modulo by zero"); } /** * @dev Returns the remainder of dividing two unsigned integers. (unsigned integer modulo), * Reverts with custom message when dividing by zero. * * Counterpart to Solidity's `%` operator. This function uses a `revert` * opcode (which leaves remaining gas untouched) while Solidity uses an * invalid opcode to revert (consuming all remaining gas). * * Requirements: * * - The divisor cannot be zero. */ function mod(uint256 a, uint256 b, string memory errorMessage) internal pure returns(uint256) { require(b != 0, errorMessage); return a % b; } } /** * @title Ownable * @dev The Ownable contract has an owner address, and provides basic authorization control * functions, this simplifies the implementation of "user permissions". */ contract Ownable { address public owner; event OwnershipRenounced(address indexed previousOwner); event OwnershipTransferred( address indexed previousOwner, address indexed newOwner ); /** * @dev The Ownable constructor sets the original `owner` of the contract to the sender * account. */ constructor() { owner = msg.sender; } /** * @dev Throws if called by any account other than the owner. */ modifier onlyOwner() { require(msg.sender == owner); _; } /** * @dev Allows the current owner to relinquish control of the contract. */ function renounceOwnership() public onlyOwner { emit OwnershipRenounced(owner); owner = address(0); } /** * @dev Allows the current owner to transfer control of the contract to a newOwner. * @param _newOwner The address to transfer ownership to. */ function transferOwnership(address _newOwner) public onlyOwner { _transferOwnership(_newOwner); } /** * @dev Transfers control of the contract to a newOwner. * @param _newOwner The address to transfer ownership to. */ function _transferOwnership(address _newOwner) internal { require(_newOwner != address(0)); emit OwnershipTransferred(owner, _newOwner); owner = _newOwner; } } contract storagedappMaps { //mapping(address => address) public tokenAddrToOwnerAddr; mapping(address => address) public presaleAddrToOwnerAddr; mapping(address => address) public presaleAddrToDeployerAddr; //mapping(address => uint256) public presaleOwnerToIndex; //mapping(address => uint256) public tokenAddrToIndex; //mapping(address => uint256) public ownerPresaleNumber; mapping(address => uint256) public presaleToPresaleNum; } interface storagedapp { function getPresaleDeployerViaOwner(address _creator, uint256 _presaleNum) external view returns(address); function getPresaleDeployer(address _presaleAddr) external view returns(address); } interface maindapp { function voterCallsFinalizeRefund(address presaleToRefundFromOwnerAddress,uint256 _presaleNum) external; function voterCallsFinalizeRefundAnytime(address presaleToRefundFromOwnerAddress,uint256 _presaleNum) external; } interface presale { function CheckTotalEthRaised() external view returns(uint256); function CheckSoftCap() external view returns(uint256); function presaleEndTime() external view returns(uint256); } contract PresaleVotingContract is Ownable { bool public votingEnabled = true; bool public votingOnlyOwnerEnabled = true; bool public votingWhitelistEnabled = true; address public storageDappAddr; //address public mainDappAddr; address public templateCrowdSaleAddr; mapping(uint256 => address) public indexToCaller; mapping(address => uint256) public callerToIndex; mapping(address => bool) public callerToBool; mapping(address => address) public callerToPresaleAddr; mapping(address => address) public presaleAddrToCaller; mapping(address => address) public callerToOwnerAddr; mapping(address => address) public ownerAddrToCaller; mapping(uint256 => address) public indexToPresaleAddr; mapping(uint256 => address) public indexToOwnerAddr; mapping(uint256 => address) public indexToOwner; mapping(address => uint256) public ownerToIndex; mapping(address => bool) public ownerToBool; mapping(address => uint256) public finalizeCallByUserTimestamp; mapping(address => mapping(uint256 => uint256)) public finalizeCallByOwnerTimestamp; mapping(address => uint256) public finalizeCallByWhitelistTimestamp; mapping(address => bool) public voterFinalizeEnableFlag; mapping(address => uint256) public voterEnableFlagTime; mapping(address => bool) public finalized; mapping(address => bool) public whitelist; mapping(address => string) public whitelistToName; mapping(string => address) public whitelistNameToAddr; uint256 public callerIndex; uint256 public ownerIndex; uint256 public checkEndTime; uint256 public voterFinalizeTime = 172800; uint256 public minimumTime = 7200; constructor(address addrStorage) { storageDappAddr = addrStorage; //mainDappAddr = addrMain; } using SafeMath for uint256; function ownerCallsFinalizeRefundMainDapp(uint256 _presaleNum) public { //only presaleCreator to finalize require(votingOnlyOwnerEnabled, "ownerCallIsDisabled"); address mainDappAddr = storagedapp(storageDappAddr).getPresaleDeployerViaOwner(msg.sender,_presaleNum); // (bool _ownerfinalized, bytes memory _finalizedReturn) = address(mainDappAddr).call(abi.encodeWithSignature("voterCallsFinalizeRefundAnytime(address,uint256)", msg.sender,_presaleNum)); // require(_ownerfinalized, "presaleOwner Emergency Finalization call failed"); maindapp(mainDappAddr).voterCallsFinalizeRefundAnytime( msg.sender,_presaleNum); //indexToOwner[ownerIndex] = msg.sender; //ownerToIndex[msg.sender] = ownerIndex; //ownerToBool[msg.sender] = true; //ownerIndex++; finalizeCallByOwnerTimestamp[msg.sender][_presaleNum] = block.timestamp; } function whitelistCallsFinalizeRefundMainDapp(address addrPre) public { //only presaleCreator to finalize require(votingWhitelistEnabled, "whitelistCallIsDisabled"); require(whitelist[msg.sender], "not whitelisted"); address presaleOwnerAddress = storagedappMaps(storageDappAddr).presaleAddrToOwnerAddr(addrPre); uint256 presaleNum = storagedappMaps(storageDappAddr).presaleToPresaleNum(addrPre); address mainDappAddr = storagedappMaps(storageDappAddr).presaleAddrToDeployerAddr(addrPre); //(bool _ownerfinalized, bytes memory _finalizedReturn) = address(mainDappAddr).call(abi.encodeWithSignature("voterCallsFinalizeRefundAnytime(address,uint256)", presaleOwnerAddress,presaleNum)); //require(_ownerfinalized, "whitelist Emergency Finalization call failed"); maindapp(mainDappAddr).voterCallsFinalizeRefundAnytime(presaleOwnerAddress,presaleNum); finalized[addrPre] = true; indexToCaller[callerIndex] = msg.sender; callerToIndex[msg.sender] = callerIndex; callerToBool[msg.sender] = true; indexToPresaleAddr[callerIndex] = addrPre; indexToOwnerAddr[callerIndex] = presaleOwnerAddress; callerToPresaleAddr[msg.sender] = addrPre; presaleAddrToCaller[addrPre] = msg.sender; callerToOwnerAddr[msg.sender] = presaleOwnerAddress; ownerAddrToCaller[presaleOwnerAddress] = msg.sender; callerIndex++; finalizeCallByUserTimestamp[addrPre] = block.timestamp; finalizeCallByWhitelistTimestamp[addrPre] = block.timestamp; } function voterCallsFinalizeRefundMainDapp(address addrPre) public { //anyone to be able to finalize after voterFinalizeTime require(!finalized[addrPre], "already finalized!"); require(votingEnabled, "voterCallIsDisabled"); uint256 presaleNum = storagedappMaps(storageDappAddr).presaleToPresaleNum(addrPre); //(bool _endtime, bytes memory _endtimeFetch) = address(addrPre).call(abi.encodeWithSignature("presaleEndTime()")); //require(_endtime, "presale address is incorrect... No endTime observed"); //uint256 endtimeReturn = abi.decode(_endtimeFetch, (uint256)); uint256 endtimeReturn = presale(addrPre).presaleEndTime(); require((block.timestamp > endtimeReturn.add(voterFinalizeTime)), "voter cannot finalze if time is not greater than presale _endtime + voterFinalizeTime"); address presaleOwnerAddress = storagedappMaps(storageDappAddr).presaleAddrToOwnerAddr(addrPre); address mainDappAddr = storagedappMaps(storageDappAddr).presaleAddrToDeployerAddr(addrPre); // (bool _voterfinalized, bytes memory _finalizedReturn) = address(mainDappAddr).call(abi.encodeWithSignature("voterCallsFinalizeRefund(address,uint256)", presaleOwnerAddress,presaleNum)); // require(_voterfinalized, "voter Emergency Finalization call failed"); maindapp(mainDappAddr).voterCallsFinalizeRefund(presaleOwnerAddress,presaleNum); finalized[addrPre] = true; indexToCaller[callerIndex] = msg.sender; callerToIndex[msg.sender] = callerIndex; callerToBool[msg.sender] = true; indexToPresaleAddr[callerIndex] = addrPre; indexToOwnerAddr[callerIndex] = presaleOwnerAddress; callerToPresaleAddr[msg.sender] = addrPre; presaleAddrToCaller[addrPre] = msg.sender; callerToOwnerAddr[msg.sender] = presaleOwnerAddress; ownerAddrToCaller[presaleOwnerAddress] = msg.sender; callerIndex++; finalizeCallByUserTimestamp[addrPre] = block.timestamp; } function voterCallsFinalizeRefundMainDappHardCap(address addrPre) public { //anyone to be able to finalize after voterFinalizeTime if voterFinalizeEnableFlag is enabled require(!finalized[addrPre], "already finalized!"); require(votingEnabled, "voterCallIsDisabled"); require(voterFinalizeEnableFlag[addrPre], "voter Finalize flag is disabled"); require(voterEnableFlagTime[addrPre] > 0, "voterEnableFlagTime not setup"); require((block.timestamp > voterEnableFlagTime[addrPre].add(voterFinalizeTime)), "voter cannot finalze if time is not greater than voterEnableFlagTime + voterFinalizeTime"); uint256 presaleNum = storagedappMaps(storageDappAddr).presaleToPresaleNum(addrPre); address presaleOwnerAddress = storagedappMaps(storageDappAddr).presaleAddrToOwnerAddr(addrPre); address mainDappAddr = storagedappMaps(storageDappAddr).presaleAddrToDeployerAddr(addrPre); // (bool _voterfinalized, bytes memory _finalizedReturn) = address(mainDappAddr).call(abi.encodeWithSignature("voterCallsFinalizeRefund(address,uint256)", presaleOwnerAddress,presaleNum)); // require(_voterfinalized, "voter Emergency Finalization call by enable flag failed"); maindapp(mainDappAddr).voterCallsFinalizeRefund(presaleOwnerAddress,presaleNum); finalized[addrPre] = true; indexToCaller[callerIndex] = msg.sender; callerToIndex[msg.sender] = callerIndex; callerToBool[msg.sender] = true; indexToPresaleAddr[callerIndex] = addrPre; indexToOwnerAddr[callerIndex] = presaleOwnerAddress; callerToPresaleAddr[msg.sender] = addrPre; presaleAddrToCaller[addrPre] = msg.sender; callerToOwnerAddr[msg.sender] = presaleOwnerAddress; ownerAddrToCaller[presaleOwnerAddress] = msg.sender; callerIndex++; finalizeCallByUserTimestamp[addrPre] = block.timestamp; } function voterCallsFinalizeRefundMainDappSoftCap(address addrPre) public { //anyone to be able to finalize after voterFinalizeTime if voterFinalizeEnableFlag is enabled require(!finalized[addrPre], "already finalized!"); require(votingEnabled, "voterCallIsDisabled"); //(bool _softcap, bytes memory _softcapFetch) = address(addrPre).call(abi.encodeWithSignature("CheckSoftCap()")); //require(_softcap, "potential wrong address-No soft Cap observed"); //uint256 softcapReturn = abi.decode(_softcapFetch, (uint256)); uint256 softcapReturn = presale(addrPre).CheckSoftCap(); //(bool _totalETHRaised, bytes memory _totalETHRaisedFetch) = address(addrPre).call(abi.encodeWithSignature("CheckTotalEthRaised()")); //require(_totalETHRaised, "potential wrong address-No ETH raised observed"); //uint256 totalETHRaisedReturn = abi.decode(_totalETHRaisedFetch, (uint256)); uint256 totalETHRaisedReturn = presale(addrPre).CheckTotalEthRaised(); //(bool _presaleEndTime, bytes memory _presaleEndTimeFetch) = address(addrPre).call(abi.encodeWithSignature("presaleEndTime()")); //require(_presaleEndTime, "presaleEndTime not available"); //uint256 presaleEndTimeReturn = abi.decode(_presaleEndTimeFetch, (uint256)); uint256 presaleEndTimeReturn = presale(addrPre).presaleEndTime(); require((totalETHRaisedReturn < softcapReturn && block.timestamp >= presaleEndTimeReturn), "ETHraised more that scap or timer not ended"); require(presaleStatusCheckSoftCap(addrPre),"condition not met"); address presaleOwnerAddress = storagedappMaps(storageDappAddr).presaleAddrToOwnerAddr(addrPre); uint256 presaleNum = storagedappMaps(storageDappAddr).presaleToPresaleNum(addrPre); address mainDappAddr = storagedappMaps(storageDappAddr).presaleAddrToDeployerAddr(addrPre); //(bool _voterfinalized, bytes memory _finalizedReturn) = address(mainDappAddr).call(abi.encodeWithSignature("voterCallsFinalizeRefund(address,uint256)", presaleOwnerAddress,presaleNum)); //require(_voterfinalized, "voter Emergency Finalization with raised less than SoftCap failed"); maindapp(mainDappAddr).voterCallsFinalizeRefund(presaleOwnerAddress,presaleNum); finalized[addrPre] = true; indexToCaller[callerIndex] = msg.sender; callerToIndex[msg.sender] = callerIndex; callerToBool[msg.sender] = true; indexToPresaleAddr[callerIndex] = addrPre; indexToOwnerAddr[callerIndex] = presaleOwnerAddress; callerToPresaleAddr[msg.sender] = addrPre; presaleAddrToCaller[addrPre] = msg.sender; callerToOwnerAddr[msg.sender] = presaleOwnerAddress; ownerAddrToCaller[presaleOwnerAddress] = msg.sender; callerIndex++; finalizeCallByUserTimestamp[addrPre] = block.timestamp; } function presaleStatusCheckSoftCap(address addrPre) internal view returns(bool){ //(bool _softcap, bytes memory _softcapFetch) = address(addrPre).call(abi.encodeWithSignature("CheckSoftCap()")); //require(_softcap, "potential wrong address-No soft Cap observed"); //uint256 softcapReturn = abi.decode(_softcapFetch, (uint256)); uint256 softcapReturn = presale(addrPre).CheckSoftCap(); //(bool _totalETHRaised, bytes memory _totalETHRaisedFetch) = address(addrPre).call(abi.encodeWithSignature("CheckTotalEthRaised()")); //require(_totalETHRaised, "potential wrong address-No ETH raised observed"); //uint256 totalETHRaisedReturn = abi.decode(_totalETHRaisedFetch, (uint256)); uint256 totalETHRaisedReturn = presale(addrPre).CheckTotalEthRaised(); //(bool _presaleEndTime, bytes memory _presaleEndTimeFetch) = address(addrPre).call(abi.encodeWithSignature("presaleEndTime()")); //require(_presaleEndTime, "presaleEndTime not available"); //uint256 presaleEndTimeReturn = abi.decode(_presaleEndTimeFetch, (uint256)); uint256 presaleEndTimeReturn = presale(addrPre).presaleEndTime(); return(totalETHRaisedReturn < softcapReturn && block.timestamp >= presaleEndTimeReturn); } function CheckBlockTimestamp() public view returns(uint256) { return block.timestamp; } function changeVoterFinalizeTime(uint256 _newVoterTime) public onlyOwner { require((_newVoterTime >= minimumTime), "_newvoterTime must be >= minimum time"); voterFinalizeTime = _newVoterTime; } function changeVoterMinTime(uint256 _newMinTime) public onlyOwner { require((_newMinTime >= 0), "_newMinTime must be >= 0"); minimumTime = _newMinTime; } function disableVoterCall() public onlyOwner { votingEnabled = false; } function enableVoterCall() public onlyOwner { votingEnabled = true; } function disableWhitelistCall() public onlyOwner { votingWhitelistEnabled = false; } function enableWhitelistCall() public onlyOwner { votingWhitelistEnabled = true; } function disableOwnerCall() public onlyOwner { votingOnlyOwnerEnabled = false; } function enableOwnerCall() public onlyOwner { votingOnlyOwnerEnabled = true; } function updateStorageDappAddr(address _newStoragedapp) public onlyOwner { storageDappAddr = _newStoragedapp; } /* function updateMainDappAddr(address _newMaindapp) public onlyOwner { mainDappAddr = _newMaindapp; } */ function addToWhitelist(address _whitelistAddr, string memory _name) onlyOwner public { whitelist[_whitelistAddr] = true; whitelistToName[_whitelistAddr] = _name; whitelistNameToAddr[_name] = _whitelistAddr; } function removeFromWhitelist(address _whitelistAddr) onlyOwner public { whitelist[_whitelistAddr] = false; } function voterFinalizeEnable(address addrPre) public { require(!voterFinalizeEnableFlag[addrPre], "already enabled!"); (bool _closed, bytes memory _closeCheck) = address(addrPre).call(abi.encodeWithSignature("hasClosed()")); require(_closed, "presale not closed"); bool presaleClosed = abi.decode(_closeCheck, (bool)); require(presaleClosed, "presale has not finished yet!"); voterFinalizeEnableFlag[addrPre] = true; voterEnableFlagTime[addrPre] = block.timestamp; } function getVoterFinalizeEnableFlag(address addrPre) public view returns(bool) { return voterFinalizeEnableFlag[addrPre]; } }
{ "evmVersion": "london", "libraries": {}, "metadata": { "bytecodeHash": "ipfs", "useLiteralContent": true }, "optimizer": { "enabled": true, "runs": 1 }, "remappings": [], "outputSelection": { "*": { "*": [ "evm.bytecode", "evm.deployedBytecode", "devdoc", "userdoc", "metadata", "abi" ] } } }
Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
[{"inputs":[{"internalType":"address","name":"addrStorage","type":"address"}],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"}],"name":"OwnershipRenounced","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"inputs":[],"name":"CheckBlockTimestamp","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_whitelistAddr","type":"address"},{"internalType":"string","name":"_name","type":"string"}],"name":"addToWhitelist","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"callerIndex","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"callerToBool","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"callerToIndex","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"callerToOwnerAddr","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"callerToPresaleAddr","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_newVoterTime","type":"uint256"}],"name":"changeVoterFinalizeTime","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_newMinTime","type":"uint256"}],"name":"changeVoterMinTime","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"checkEndTime","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"disableOwnerCall","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"disableVoterCall","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"disableWhitelistCall","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"enableOwnerCall","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"enableVoterCall","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"enableWhitelistCall","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"},{"internalType":"uint256","name":"","type":"uint256"}],"name":"finalizeCallByOwnerTimestamp","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"finalizeCallByUserTimestamp","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"finalizeCallByWhitelistTimestamp","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"finalized","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"addrPre","type":"address"}],"name":"getVoterFinalizeEnableFlag","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"}],"name":"indexToCaller","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"}],"name":"indexToOwner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"}],"name":"indexToOwnerAddr","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"}],"name":"indexToPresaleAddr","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"minimumTime","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"ownerAddrToCaller","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_presaleNum","type":"uint256"}],"name":"ownerCallsFinalizeRefundMainDapp","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"ownerIndex","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"ownerToBool","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"ownerToIndex","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"presaleAddrToCaller","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_whitelistAddr","type":"address"}],"name":"removeFromWhitelist","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"storageDappAddr","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"templateCrowdSaleAddr","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_newStoragedapp","type":"address"}],"name":"updateStorageDappAddr","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"addrPre","type":"address"}],"name":"voterCallsFinalizeRefundMainDapp","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"addrPre","type":"address"}],"name":"voterCallsFinalizeRefundMainDappHardCap","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"addrPre","type":"address"}],"name":"voterCallsFinalizeRefundMainDappSoftCap","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"voterEnableFlagTime","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"addrPre","type":"address"}],"name":"voterFinalizeEnable","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"voterFinalizeEnableFlag","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"voterFinalizeTime","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"votingEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"votingOnlyOwnerEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"votingWhitelistEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"whitelist","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"addrPre","type":"address"}],"name":"whitelistCallsFinalizeRefundMainDapp","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"string","name":"","type":"string"}],"name":"whitelistNameToAddr","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"whitelistToName","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"}]
Contract Creation Code
60806040526000805462ffffff60a01b19166201010160a01b1790556202a300601b55611c20601c553480156200003557600080fd5b50604051620027ad380380620027ad83398101604081905262000058916200008c565b60008054336001600160a01b031991821617909155600180549091166001600160a01b0392909216919091179055620000be565b6000602082840312156200009f57600080fd5b81516001600160a01b0381168114620000b757600080fd5b9392505050565b6126df80620000ce6000396000f3fe608060405234801561001057600080fd5b50600436106102675760003560e01c806301899fc61461026c57806305ac3f4f146102885780630a1ee8b91461029d5780630d4562f8146102d357806310523286146102fc57806311e140c41461030f5780631600c6d41461034b5780631a533daa1461036e57806328b56048146103815780632b72c6b21461038a5780632d211aa4146103b55780632dd261b5146103c85780632f1e3ca0146103d05780633cf66551146103f957806344428c021461041c5780634883d37f1461042f5780634a4cab09146104425780636379821f1461044a578063640e11681461045357806367039376146104675780636d5a8f421461047a5780636e5dd8931461048d578063715018a6146104ad5780638ab1d681146104b55780638b35261a146104c85780638da5cb5b146104e857806391a33650146104fb578063938c9e661461050e578063951127231461052e5780639610b93d146105515780639b19251a14610559578063accef1fa1461057c578063aeb6209414610582578063b5dd808d14610595578063b9dfdfb41461059d578063bbb98417146105b1578063be795535146105c5578063bff051d2146105ce578063c19ca581146105ee578063cd78aefb14610601578063d14c09631461062a578063d72d384314610653578063ddf044201461067c578063e0f55afa1461069c578063e335cea8146106c5578063e71720a3146106cd578063f2fde38b146106d5578063f6a4f301146106e8578063f6f20fb31461071c578063fb5273951461072f578063fb57473c14610752578063fb8f83411461077b578063ff31781a14610784575b600080fd5b61027560185481565b6040519081526020015b60405180910390f35b61029b61029636600461221f565b6107a4565b005b6102c66102ab36600461221f565b6009602052600090815260409020546001600160a01b031681565b60405161027f919061223c565b6102c66102e1366004612250565b600b602052600090815260409020546001600160a01b031681565b6002546102c6906001600160a01b031681565b61033b61031d36600461221f565b6001600160a01b031660009081526012602052604090205460ff1690565b604051901515815260200161027f565b61033b61035936600461221f565b60126020526000908152604090205460ff1681565b61029b61037c36600461230b565b610cd1565b610275601a5481565b61027561039836600461235a565b601060209081526000928352604080842090915290825290205481565b61029b6103c3366004612250565b610d64565b61029b610eac565b6102c66103de36600461221f565b6007602052600090815260409020546001600160a01b031681565b61033b61040736600461221f565b600e6020526000908152604090205460ff1681565b61029b61042a366004612250565b610ed8565b61029b61043d36600461221f565b610f54565b61029b611384565b610275601c5481565b60005461033b90600160a01b900460ff1681565b61029b61047536600461221f565b6113aa565b61029b610488366004612250565b6113e3565b61027561049b36600461221f565b60136020526000908152604090205481565b61029b6113ff565b61029b6104c336600461221f565b61145e565b6104db6104d636600461221f565b611496565b60405161027f91906123aa565b6000546102c6906001600160a01b031681565b61029b61050936600461221f565b611530565b61027561051c36600461221f565b60116020526000908152604090205481565b61033b61053c36600461221f565b60146020526000908152604090205460ff1681565b61029b6116f1565b61033b61056736600461221f565b60156020526000908152604090205460ff1681565b42610275565b61029b61059036600461221f565b611717565b61029b611bc3565b60005461033b90600160b01b900460ff1681565b60005461033b90600160a81b900460ff1681565b610275601b5481565b6102756105dc36600461221f565b600d6020526000908152604090205481565b6001546102c6906001600160a01b031681565b6102c661060f366004612250565b600c602052600090815260409020546001600160a01b031681565b6102c6610638366004612250565b600a602052600090815260409020546001600160a01b031681565b6102c661066136600461221f565b6008602052600090815260409020546001600160a01b031681565b61027561068a36600461221f565b600f6020526000908152604090205481565b6102c66106aa36600461221f565b6006602052600090815260409020546001600160a01b031681565b61029b611be9565b61029b611c15565b61029b6106e336600461221f565b611c41565b6102c66106f63660046123dd565b80516020818301810180516017825292820191909301209152546001600160a01b031681565b61029b61072a36600461221f565b611c64565b61033b61073d36600461221f565b60056020526000908152604090205460ff1681565b6102c6610760366004612250565b6003602052600090815260409020546001600160a01b031681565b61027560195481565b61027561079236600461221f565b60046020526000908152604090205481565b6001600160a01b03811660009081526014602052604090205460ff16156107e65760405162461bcd60e51b81526004016107dd90612419565b60405180910390fd5b600054600160a01b900460ff1661080f5760405162461bcd60e51b81526004016107dd90612445565b6000816001600160a01b031663e4c21cf26040518163ffffffff1660e01b8152600401602060405180830381865afa15801561084f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906108739190612472565b90506000826001600160a01b0316632698d7076040518163ffffffff1660e01b8152600401602060405180830381865afa1580156108b5573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906108d99190612472565b90506000836001600160a01b031663249b7c196040518163ffffffff1660e01b8152600401602060405180830381865afa15801561091b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061093f9190612472565b905082821080156109505750804210155b6109b05760405162461bcd60e51b815260206004820152602b60248201527f455448726169736564206d6f726520746861742073636170206f722074696d6560448201526a1c881b9bdd08195b99195960aa1b60648201526084016107dd565b6109b984611feb565b6109f95760405162461bcd60e51b815260206004820152601160248201527018dbdb991a5d1a5bdb881b9bdd081b595d607a1b60448201526064016107dd565b600154604051639cca1eb960e01b81526000916001600160a01b031690639cca1eb990610a2a90889060040161223c565b602060405180830381865afa158015610a47573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610a6b919061248b565b60015460405163f42d985560e01b81529192506000916001600160a01b039091169063f42d985590610aa190899060040161223c565b602060405180830381865afa158015610abe573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610ae29190612472565b60015460405163b40c2ad960e01b81529192506000916001600160a01b039091169063b40c2ad990610b18908a9060040161223c565b602060405180830381865afa158015610b35573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b59919061248b565b604051636cbfaac760e11b81529091506001600160a01b0382169063d97f558e90610b8a90869086906004016124a8565b600060405180830381600087803b158015610ba457600080fd5b505af1158015610bb8573d6000803e3d6000fd5b505050506001600160a01b0387811660008181526014602090815260408083208054600160ff199182168117909255601880548652600385528386208054336001600160a01b031991821681179092558254828952600488528689205560058752858820805490941690941790925580548652600a8552838620805484168817905580548652600b855283862080548416988c169889179055818652600685528386208054841688179055958552600784528285208054831682179055808552600884528285208054831688179055958452600990925282208054909116909317909255805491610ca8836124d7565b9091555050506001600160a01b039095166000908152600f602052604090204290555050505050565b6000546001600160a01b03163314610ce857600080fd5b6001600160a01b0382166000908152601560209081526040808320805460ff1916600117905560169091529020610d1f8282612579565b5081601782604051610d319190612638565b90815260405190819003602001902080546001600160a01b03929092166001600160a01b03199092169190911790555050565b600054600160a81b900460ff16610db35760405162461bcd60e51b81526020600482015260136024820152721bdddb995c90d85b1b125cd11a5cd8589b1959606a1b60448201526064016107dd565b6001546040516398140b5560e01b81526000916001600160a01b0316906398140b5590610de690339086906004016124a8565b602060405180830381865afa158015610e03573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610e27919061248b565b60405163d276aded60e01b81529091506001600160a01b0382169063d276aded90610e5890339086906004016124a8565b600060405180830381600087803b158015610e7257600080fd5b505af1158015610e86573d6000803e3d6000fd5b505033600090815260106020908152604080832096835295905293909320429055505050565b6000546001600160a01b03163314610ec357600080fd5b6000805460ff60a81b1916600160a81b179055565b6000546001600160a01b03163314610eef57600080fd5b601c54811015610f4f5760405162461bcd60e51b815260206004820152602560248201527f5f6e6577766f74657254696d65206d757374206265203e3d206d696e696d756d6044820152642074696d6560d81b60648201526084016107dd565b601b55565b6001600160a01b03811660009081526014602052604090205460ff1615610f8d5760405162461bcd60e51b81526004016107dd90612419565b600054600160a01b900460ff16610fb65760405162461bcd60e51b81526004016107dd90612445565b60015460405163f42d985560e01b81526000916001600160a01b03169063f42d985590610fe790859060040161223c565b602060405180830381865afa158015611004573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906110289190612472565b90506000826001600160a01b031663249b7c196040518163ffffffff1660e01b8152600401602060405180830381865afa15801561106a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061108e9190612472565b90506110a5601b548261213690919063ffffffff16565b42116111255760405162461bcd60e51b8152602060048201526055602482015260008051602061268a83398151915260448201527f6e6f742067726561746572207468616e2070726573616c65205f656e6474696d60648201527465202b20766f74657246696e616c697a6554696d6560581b608482015260a4016107dd565b600154604051639cca1eb960e01b81526000916001600160a01b031690639cca1eb99061115690879060040161223c565b602060405180830381865afa158015611173573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611197919061248b565b60015460405163b40c2ad960e01b81529192506000916001600160a01b039091169063b40c2ad9906111cd90889060040161223c565b602060405180830381865afa1580156111ea573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061120e919061248b565b604051636cbfaac760e11b81529091506001600160a01b0382169063d97f558e9061123f90859088906004016124a8565b600060405180830381600087803b15801561125957600080fd5b505af115801561126d573d6000803e3d6000fd5b505050506001600160a01b0385811660008181526014602090815260408083208054600160ff199182168117909255601880548652600385528386208054336001600160a01b031991821681179092558254828952600488528689205560058752858820805490941690941790925580548652600a8552838620805484168817905580548652600b855283862080548416988b16988917905581865260068552838620805484168817905595855260078452828520805483168217905580855260088452828520805483168817905595845260099092528220805490911690931790925580549161135d836124d7565b9091555050506001600160a01b039093166000908152600f60205260409020429055505050565b6000546001600160a01b0316331461139b57600080fd5b6000805460ff60a81b19169055565b6000546001600160a01b031633146113c157600080fd5b600180546001600160a01b0319166001600160a01b0392909216919091179055565b6000546001600160a01b031633146113fa57600080fd5b601c55565b6000546001600160a01b0316331461141657600080fd5b600080546040516001600160a01b03909116917ff8df31144d9c2f0f6b59d69b8b98abd5459d07f2742c4df920b25aae33c6482091a2600080546001600160a01b0319169055565b6000546001600160a01b0316331461147557600080fd5b6001600160a01b03166000908152601560205260409020805460ff19169055565b601660205260009081526040902080546114af906124f0565b80601f01602080910402602001604051908101604052809291908181526020018280546114db906124f0565b80156115285780601f106114fd57610100808354040283529160200191611528565b820191906000526020600020905b81548152906001019060200180831161150b57829003601f168201915b505050505081565b6001600160a01b03811660009081526012602052604090205460ff161561158c5760405162461bcd60e51b815260206004820152601060248201526f616c726561647920656e61626c65642160801b60448201526064016107dd565b60408051600481526024810182526020810180516001600160e01b0316631515bc2b60e01b179052905160009182916001600160a01b038516916115cf91612638565b6000604051808303816000865af19150503d806000811461160c576040519150601f19603f3d011682016040523d82523d6000602084013e611611565b606091505b5091509150816116585760405162461bcd60e51b81526020600482015260126024820152711c1c995cd85b19481b9bdd0818db1bdcd95960721b60448201526064016107dd565b60008180602001905181019061166e9190612654565b9050806116bd5760405162461bcd60e51b815260206004820152601d60248201527f70726573616c6520686173206e6f742066696e6973686564207965742100000060448201526064016107dd565b5050506001600160a01b03166000908152601260209081526040808320805460ff1916600117905560139091529020429055565b6000546001600160a01b0316331461170857600080fd5b6000805460ff60b01b19169055565b6001600160a01b03811660009081526014602052604090205460ff16156117505760405162461bcd60e51b81526004016107dd90612419565b600054600160a01b900460ff166117795760405162461bcd60e51b81526004016107dd90612445565b6001600160a01b03811660009081526012602052604090205460ff166117e15760405162461bcd60e51b815260206004820152601f60248201527f766f7465722046696e616c697a6520666c61672069732064697361626c65640060448201526064016107dd565b6001600160a01b0381166000908152601360205260409020546118465760405162461bcd60e51b815260206004820152601d60248201527f766f746572456e61626c65466c616754696d65206e6f7420736574757000000060448201526064016107dd565b601b546001600160a01b03821660009081526013602052604090205461186b91612136565b42116118ee5760405162461bcd60e51b8152602060048201526058602482015260008051602061268a83398151915260448201527f6e6f742067726561746572207468616e20766f746572456e61626c65466c616760648201527754696d65202b20766f74657246696e616c697a6554696d6560401b608482015260a4016107dd565b60015460405163f42d985560e01b81526000916001600160a01b03169063f42d98559061191f90859060040161223c565b602060405180830381865afa15801561193c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906119609190612472565b600154604051639cca1eb960e01b81529192506000916001600160a01b0390911690639cca1eb99061199690869060040161223c565b602060405180830381865afa1580156119b3573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906119d7919061248b565b60015460405163b40c2ad960e01b81529192506000916001600160a01b039091169063b40c2ad990611a0d90879060040161223c565b602060405180830381865afa158015611a2a573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611a4e919061248b565b604051636cbfaac760e11b81529091506001600160a01b0382169063d97f558e90611a7f90859087906004016124a8565b600060405180830381600087803b158015611a9957600080fd5b505af1158015611aad573d6000803e3d6000fd5b505050506001600160a01b0384811660008181526014602090815260408083208054600160ff199182168117909255601880548652600385528386208054336001600160a01b031991821681179092558254828952600488528689205560058752858820805490941690941790925580548652600a8552838620805484168817905580548652600b855283862080548416988b169889179055818652600685528386208054841688179055958552600784528285208054831682179055808552600884528285208054831688179055958452600990925282208054909116909317909255805491611b9d836124d7565b9091555050506001600160a01b039092166000908152600f602052604090204290555050565b6000546001600160a01b03163314611bda57600080fd5b6000805460ff60a01b19169055565b6000546001600160a01b03163314611c0057600080fd5b6000805460ff60a01b1916600160a01b179055565b6000546001600160a01b03163314611c2c57600080fd5b6000805460ff60b01b1916600160b01b179055565b6000546001600160a01b03163314611c5857600080fd5b611c618161219c565b50565b600054600160b01b900460ff16611cb75760405162461bcd60e51b81526020600482015260176024820152761dda1a5d195b1a5cdd10d85b1b125cd11a5cd8589b1959604a1b60448201526064016107dd565b3360009081526015602052604090205460ff16611d085760405162461bcd60e51b815260206004820152600f60248201526e1b9bdd081dda1a5d195b1a5cdd1959608a1b60448201526064016107dd565b600154604051639cca1eb960e01b81526000916001600160a01b031690639cca1eb990611d3990859060040161223c565b602060405180830381865afa158015611d56573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611d7a919061248b565b60015460405163f42d985560e01b81529192506000916001600160a01b039091169063f42d985590611db090869060040161223c565b602060405180830381865afa158015611dcd573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611df19190612472565b60015460405163b40c2ad960e01b81529192506000916001600160a01b039091169063b40c2ad990611e2790879060040161223c565b602060405180830381865afa158015611e44573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611e68919061248b565b60405163d276aded60e01b81529091506001600160a01b0382169063d276aded90611e9990869086906004016124a8565b600060405180830381600087803b158015611eb357600080fd5b505af1158015611ec7573d6000803e3d6000fd5b505050506001600160a01b0384811660008181526014602090815260408083208054600160ff199182168117909255601880548652600385528386208054336001600160a01b031991821681179092558254828952600488528689205560058752858820805490941690941790925580548652600a8552838620805484168817905580548652600b855283862080548416988c169889179055818652600685528386208054841688179055958552600784528285208054831682179055808552600884528285208054831688179055958452600990925282208054909116909317909255805491611fb7836124d7565b9091555050506001600160a01b039092166000908152600f6020908152604080832042908190556011909252909120555050565b600080826001600160a01b031663e4c21cf26040518163ffffffff1660e01b8152600401602060405180830381865afa15801561202c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906120509190612472565b90506000836001600160a01b0316632698d7076040518163ffffffff1660e01b8152600401602060405180830381865afa158015612092573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906120b69190612472565b90506000846001600160a01b031663249b7c196040518163ffffffff1660e01b8152600401602060405180830381865afa1580156120f8573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061211c9190612472565b9050828210801561212d5750804210155b95945050505050565b6000806121438385612676565b9050838110156121935760405162461bcd60e51b815260206004820152601b60248201527a536166654d6174683a206164646974696f6e206f766572666c6f7760281b60448201526064016107dd565b90505b92915050565b6001600160a01b0381166121af57600080fd5b600080546040516001600160a01b03808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a3600080546001600160a01b0319166001600160a01b0392909216919091179055565b6001600160a01b0381168114611c6157600080fd5b60006020828403121561223157600080fd5b81356121938161220a565b6001600160a01b0391909116815260200190565b60006020828403121561226257600080fd5b5035919050565b634e487b7160e01b600052604160045260246000fd5b600082601f83011261229057600080fd5b81356001600160401b03808211156122aa576122aa612269565b604051601f8301601f19908116603f011681019082821181831017156122d2576122d2612269565b816040528381528660208588010111156122eb57600080fd5b836020870160208301376000602085830101528094505050505092915050565b6000806040838503121561231e57600080fd5b82356123298161220a565b915060208301356001600160401b0381111561234457600080fd5b6123508582860161227f565b9150509250929050565b6000806040838503121561236d57600080fd5b82356123788161220a565b946020939093013593505050565b60005b838110156123a1578181015183820152602001612389565b50506000910152565b60208152600082518060208401526123c9816040850160208701612386565b601f01601f19169190910160400192915050565b6000602082840312156123ef57600080fd5b81356001600160401b0381111561240557600080fd5b6124118482850161227f565b949350505050565b602080825260129082015271616c72656164792066696e616c697a65642160701b604082015260600190565b6020808252601390820152721d9bdd195c90d85b1b125cd11a5cd8589b1959606a1b604082015260600190565b60006020828403121561248457600080fd5b5051919050565b60006020828403121561249d57600080fd5b81516121938161220a565b6001600160a01b03929092168252602082015260400190565b634e487b7160e01b600052601160045260246000fd5b6000600182016124e9576124e96124c1565b5060010190565b600181811c9082168061250457607f821691505b60208210810361252457634e487b7160e01b600052602260045260246000fd5b50919050565b601f82111561257457600081815260208120601f850160051c810160208610156125515750805b601f850160051c820191505b818110156125705782815560010161255d565b5050505b505050565b81516001600160401b0381111561259257612592612269565b6125a6816125a084546124f0565b8461252a565b602080601f8311600181146125db57600084156125c35750858301515b600019600386901b1c1916600185901b178555612570565b600085815260208120601f198616915b8281101561260a578886015182559484019460019091019084016125eb565b50858210156126285787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b6000825161264a818460208701612386565b9190910192915050565b60006020828403121561266657600080fd5b8151801515811461219357600080fd5b80820180821115612196576121966124c156fe766f7465722063616e6e6f742066696e616c7a652069662074696d6520697320a2646970667358221220e958c7b10be00e3f341e98277b5c7f67f6a777978ec3dae11e907d9fadbb70ea64736f6c6343000811003300000000000000000000000037d79eea1f3d5475a7e0f0cd8f8130df8500ca29
Deployed Bytecode
0x608060405234801561001057600080fd5b50600436106102675760003560e01c806301899fc61461026c57806305ac3f4f146102885780630a1ee8b91461029d5780630d4562f8146102d357806310523286146102fc57806311e140c41461030f5780631600c6d41461034b5780631a533daa1461036e57806328b56048146103815780632b72c6b21461038a5780632d211aa4146103b55780632dd261b5146103c85780632f1e3ca0146103d05780633cf66551146103f957806344428c021461041c5780634883d37f1461042f5780634a4cab09146104425780636379821f1461044a578063640e11681461045357806367039376146104675780636d5a8f421461047a5780636e5dd8931461048d578063715018a6146104ad5780638ab1d681146104b55780638b35261a146104c85780638da5cb5b146104e857806391a33650146104fb578063938c9e661461050e578063951127231461052e5780639610b93d146105515780639b19251a14610559578063accef1fa1461057c578063aeb6209414610582578063b5dd808d14610595578063b9dfdfb41461059d578063bbb98417146105b1578063be795535146105c5578063bff051d2146105ce578063c19ca581146105ee578063cd78aefb14610601578063d14c09631461062a578063d72d384314610653578063ddf044201461067c578063e0f55afa1461069c578063e335cea8146106c5578063e71720a3146106cd578063f2fde38b146106d5578063f6a4f301146106e8578063f6f20fb31461071c578063fb5273951461072f578063fb57473c14610752578063fb8f83411461077b578063ff31781a14610784575b600080fd5b61027560185481565b6040519081526020015b60405180910390f35b61029b61029636600461221f565b6107a4565b005b6102c66102ab36600461221f565b6009602052600090815260409020546001600160a01b031681565b60405161027f919061223c565b6102c66102e1366004612250565b600b602052600090815260409020546001600160a01b031681565b6002546102c6906001600160a01b031681565b61033b61031d36600461221f565b6001600160a01b031660009081526012602052604090205460ff1690565b604051901515815260200161027f565b61033b61035936600461221f565b60126020526000908152604090205460ff1681565b61029b61037c36600461230b565b610cd1565b610275601a5481565b61027561039836600461235a565b601060209081526000928352604080842090915290825290205481565b61029b6103c3366004612250565b610d64565b61029b610eac565b6102c66103de36600461221f565b6007602052600090815260409020546001600160a01b031681565b61033b61040736600461221f565b600e6020526000908152604090205460ff1681565b61029b61042a366004612250565b610ed8565b61029b61043d36600461221f565b610f54565b61029b611384565b610275601c5481565b60005461033b90600160a01b900460ff1681565b61029b61047536600461221f565b6113aa565b61029b610488366004612250565b6113e3565b61027561049b36600461221f565b60136020526000908152604090205481565b61029b6113ff565b61029b6104c336600461221f565b61145e565b6104db6104d636600461221f565b611496565b60405161027f91906123aa565b6000546102c6906001600160a01b031681565b61029b61050936600461221f565b611530565b61027561051c36600461221f565b60116020526000908152604090205481565b61033b61053c36600461221f565b60146020526000908152604090205460ff1681565b61029b6116f1565b61033b61056736600461221f565b60156020526000908152604090205460ff1681565b42610275565b61029b61059036600461221f565b611717565b61029b611bc3565b60005461033b90600160b01b900460ff1681565b60005461033b90600160a81b900460ff1681565b610275601b5481565b6102756105dc36600461221f565b600d6020526000908152604090205481565b6001546102c6906001600160a01b031681565b6102c661060f366004612250565b600c602052600090815260409020546001600160a01b031681565b6102c6610638366004612250565b600a602052600090815260409020546001600160a01b031681565b6102c661066136600461221f565b6008602052600090815260409020546001600160a01b031681565b61027561068a36600461221f565b600f6020526000908152604090205481565b6102c66106aa36600461221f565b6006602052600090815260409020546001600160a01b031681565b61029b611be9565b61029b611c15565b61029b6106e336600461221f565b611c41565b6102c66106f63660046123dd565b80516020818301810180516017825292820191909301209152546001600160a01b031681565b61029b61072a36600461221f565b611c64565b61033b61073d36600461221f565b60056020526000908152604090205460ff1681565b6102c6610760366004612250565b6003602052600090815260409020546001600160a01b031681565b61027560195481565b61027561079236600461221f565b60046020526000908152604090205481565b6001600160a01b03811660009081526014602052604090205460ff16156107e65760405162461bcd60e51b81526004016107dd90612419565b60405180910390fd5b600054600160a01b900460ff1661080f5760405162461bcd60e51b81526004016107dd90612445565b6000816001600160a01b031663e4c21cf26040518163ffffffff1660e01b8152600401602060405180830381865afa15801561084f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906108739190612472565b90506000826001600160a01b0316632698d7076040518163ffffffff1660e01b8152600401602060405180830381865afa1580156108b5573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906108d99190612472565b90506000836001600160a01b031663249b7c196040518163ffffffff1660e01b8152600401602060405180830381865afa15801561091b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061093f9190612472565b905082821080156109505750804210155b6109b05760405162461bcd60e51b815260206004820152602b60248201527f455448726169736564206d6f726520746861742073636170206f722074696d6560448201526a1c881b9bdd08195b99195960aa1b60648201526084016107dd565b6109b984611feb565b6109f95760405162461bcd60e51b815260206004820152601160248201527018dbdb991a5d1a5bdb881b9bdd081b595d607a1b60448201526064016107dd565b600154604051639cca1eb960e01b81526000916001600160a01b031690639cca1eb990610a2a90889060040161223c565b602060405180830381865afa158015610a47573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610a6b919061248b565b60015460405163f42d985560e01b81529192506000916001600160a01b039091169063f42d985590610aa190899060040161223c565b602060405180830381865afa158015610abe573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610ae29190612472565b60015460405163b40c2ad960e01b81529192506000916001600160a01b039091169063b40c2ad990610b18908a9060040161223c565b602060405180830381865afa158015610b35573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b59919061248b565b604051636cbfaac760e11b81529091506001600160a01b0382169063d97f558e90610b8a90869086906004016124a8565b600060405180830381600087803b158015610ba457600080fd5b505af1158015610bb8573d6000803e3d6000fd5b505050506001600160a01b0387811660008181526014602090815260408083208054600160ff199182168117909255601880548652600385528386208054336001600160a01b031991821681179092558254828952600488528689205560058752858820805490941690941790925580548652600a8552838620805484168817905580548652600b855283862080548416988c169889179055818652600685528386208054841688179055958552600784528285208054831682179055808552600884528285208054831688179055958452600990925282208054909116909317909255805491610ca8836124d7565b9091555050506001600160a01b039095166000908152600f602052604090204290555050505050565b6000546001600160a01b03163314610ce857600080fd5b6001600160a01b0382166000908152601560209081526040808320805460ff1916600117905560169091529020610d1f8282612579565b5081601782604051610d319190612638565b90815260405190819003602001902080546001600160a01b03929092166001600160a01b03199092169190911790555050565b600054600160a81b900460ff16610db35760405162461bcd60e51b81526020600482015260136024820152721bdddb995c90d85b1b125cd11a5cd8589b1959606a1b60448201526064016107dd565b6001546040516398140b5560e01b81526000916001600160a01b0316906398140b5590610de690339086906004016124a8565b602060405180830381865afa158015610e03573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610e27919061248b565b60405163d276aded60e01b81529091506001600160a01b0382169063d276aded90610e5890339086906004016124a8565b600060405180830381600087803b158015610e7257600080fd5b505af1158015610e86573d6000803e3d6000fd5b505033600090815260106020908152604080832096835295905293909320429055505050565b6000546001600160a01b03163314610ec357600080fd5b6000805460ff60a81b1916600160a81b179055565b6000546001600160a01b03163314610eef57600080fd5b601c54811015610f4f5760405162461bcd60e51b815260206004820152602560248201527f5f6e6577766f74657254696d65206d757374206265203e3d206d696e696d756d6044820152642074696d6560d81b60648201526084016107dd565b601b55565b6001600160a01b03811660009081526014602052604090205460ff1615610f8d5760405162461bcd60e51b81526004016107dd90612419565b600054600160a01b900460ff16610fb65760405162461bcd60e51b81526004016107dd90612445565b60015460405163f42d985560e01b81526000916001600160a01b03169063f42d985590610fe790859060040161223c565b602060405180830381865afa158015611004573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906110289190612472565b90506000826001600160a01b031663249b7c196040518163ffffffff1660e01b8152600401602060405180830381865afa15801561106a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061108e9190612472565b90506110a5601b548261213690919063ffffffff16565b42116111255760405162461bcd60e51b8152602060048201526055602482015260008051602061268a83398151915260448201527f6e6f742067726561746572207468616e2070726573616c65205f656e6474696d60648201527465202b20766f74657246696e616c697a6554696d6560581b608482015260a4016107dd565b600154604051639cca1eb960e01b81526000916001600160a01b031690639cca1eb99061115690879060040161223c565b602060405180830381865afa158015611173573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611197919061248b565b60015460405163b40c2ad960e01b81529192506000916001600160a01b039091169063b40c2ad9906111cd90889060040161223c565b602060405180830381865afa1580156111ea573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061120e919061248b565b604051636cbfaac760e11b81529091506001600160a01b0382169063d97f558e9061123f90859088906004016124a8565b600060405180830381600087803b15801561125957600080fd5b505af115801561126d573d6000803e3d6000fd5b505050506001600160a01b0385811660008181526014602090815260408083208054600160ff199182168117909255601880548652600385528386208054336001600160a01b031991821681179092558254828952600488528689205560058752858820805490941690941790925580548652600a8552838620805484168817905580548652600b855283862080548416988b16988917905581865260068552838620805484168817905595855260078452828520805483168217905580855260088452828520805483168817905595845260099092528220805490911690931790925580549161135d836124d7565b9091555050506001600160a01b039093166000908152600f60205260409020429055505050565b6000546001600160a01b0316331461139b57600080fd5b6000805460ff60a81b19169055565b6000546001600160a01b031633146113c157600080fd5b600180546001600160a01b0319166001600160a01b0392909216919091179055565b6000546001600160a01b031633146113fa57600080fd5b601c55565b6000546001600160a01b0316331461141657600080fd5b600080546040516001600160a01b03909116917ff8df31144d9c2f0f6b59d69b8b98abd5459d07f2742c4df920b25aae33c6482091a2600080546001600160a01b0319169055565b6000546001600160a01b0316331461147557600080fd5b6001600160a01b03166000908152601560205260409020805460ff19169055565b601660205260009081526040902080546114af906124f0565b80601f01602080910402602001604051908101604052809291908181526020018280546114db906124f0565b80156115285780601f106114fd57610100808354040283529160200191611528565b820191906000526020600020905b81548152906001019060200180831161150b57829003601f168201915b505050505081565b6001600160a01b03811660009081526012602052604090205460ff161561158c5760405162461bcd60e51b815260206004820152601060248201526f616c726561647920656e61626c65642160801b60448201526064016107dd565b60408051600481526024810182526020810180516001600160e01b0316631515bc2b60e01b179052905160009182916001600160a01b038516916115cf91612638565b6000604051808303816000865af19150503d806000811461160c576040519150601f19603f3d011682016040523d82523d6000602084013e611611565b606091505b5091509150816116585760405162461bcd60e51b81526020600482015260126024820152711c1c995cd85b19481b9bdd0818db1bdcd95960721b60448201526064016107dd565b60008180602001905181019061166e9190612654565b9050806116bd5760405162461bcd60e51b815260206004820152601d60248201527f70726573616c6520686173206e6f742066696e6973686564207965742100000060448201526064016107dd565b5050506001600160a01b03166000908152601260209081526040808320805460ff1916600117905560139091529020429055565b6000546001600160a01b0316331461170857600080fd5b6000805460ff60b01b19169055565b6001600160a01b03811660009081526014602052604090205460ff16156117505760405162461bcd60e51b81526004016107dd90612419565b600054600160a01b900460ff166117795760405162461bcd60e51b81526004016107dd90612445565b6001600160a01b03811660009081526012602052604090205460ff166117e15760405162461bcd60e51b815260206004820152601f60248201527f766f7465722046696e616c697a6520666c61672069732064697361626c65640060448201526064016107dd565b6001600160a01b0381166000908152601360205260409020546118465760405162461bcd60e51b815260206004820152601d60248201527f766f746572456e61626c65466c616754696d65206e6f7420736574757000000060448201526064016107dd565b601b546001600160a01b03821660009081526013602052604090205461186b91612136565b42116118ee5760405162461bcd60e51b8152602060048201526058602482015260008051602061268a83398151915260448201527f6e6f742067726561746572207468616e20766f746572456e61626c65466c616760648201527754696d65202b20766f74657246696e616c697a6554696d6560401b608482015260a4016107dd565b60015460405163f42d985560e01b81526000916001600160a01b03169063f42d98559061191f90859060040161223c565b602060405180830381865afa15801561193c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906119609190612472565b600154604051639cca1eb960e01b81529192506000916001600160a01b0390911690639cca1eb99061199690869060040161223c565b602060405180830381865afa1580156119b3573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906119d7919061248b565b60015460405163b40c2ad960e01b81529192506000916001600160a01b039091169063b40c2ad990611a0d90879060040161223c565b602060405180830381865afa158015611a2a573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611a4e919061248b565b604051636cbfaac760e11b81529091506001600160a01b0382169063d97f558e90611a7f90859087906004016124a8565b600060405180830381600087803b158015611a9957600080fd5b505af1158015611aad573d6000803e3d6000fd5b505050506001600160a01b0384811660008181526014602090815260408083208054600160ff199182168117909255601880548652600385528386208054336001600160a01b031991821681179092558254828952600488528689205560058752858820805490941690941790925580548652600a8552838620805484168817905580548652600b855283862080548416988b169889179055818652600685528386208054841688179055958552600784528285208054831682179055808552600884528285208054831688179055958452600990925282208054909116909317909255805491611b9d836124d7565b9091555050506001600160a01b039092166000908152600f602052604090204290555050565b6000546001600160a01b03163314611bda57600080fd5b6000805460ff60a01b19169055565b6000546001600160a01b03163314611c0057600080fd5b6000805460ff60a01b1916600160a01b179055565b6000546001600160a01b03163314611c2c57600080fd5b6000805460ff60b01b1916600160b01b179055565b6000546001600160a01b03163314611c5857600080fd5b611c618161219c565b50565b600054600160b01b900460ff16611cb75760405162461bcd60e51b81526020600482015260176024820152761dda1a5d195b1a5cdd10d85b1b125cd11a5cd8589b1959604a1b60448201526064016107dd565b3360009081526015602052604090205460ff16611d085760405162461bcd60e51b815260206004820152600f60248201526e1b9bdd081dda1a5d195b1a5cdd1959608a1b60448201526064016107dd565b600154604051639cca1eb960e01b81526000916001600160a01b031690639cca1eb990611d3990859060040161223c565b602060405180830381865afa158015611d56573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611d7a919061248b565b60015460405163f42d985560e01b81529192506000916001600160a01b039091169063f42d985590611db090869060040161223c565b602060405180830381865afa158015611dcd573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611df19190612472565b60015460405163b40c2ad960e01b81529192506000916001600160a01b039091169063b40c2ad990611e2790879060040161223c565b602060405180830381865afa158015611e44573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611e68919061248b565b60405163d276aded60e01b81529091506001600160a01b0382169063d276aded90611e9990869086906004016124a8565b600060405180830381600087803b158015611eb357600080fd5b505af1158015611ec7573d6000803e3d6000fd5b505050506001600160a01b0384811660008181526014602090815260408083208054600160ff199182168117909255601880548652600385528386208054336001600160a01b031991821681179092558254828952600488528689205560058752858820805490941690941790925580548652600a8552838620805484168817905580548652600b855283862080548416988c169889179055818652600685528386208054841688179055958552600784528285208054831682179055808552600884528285208054831688179055958452600990925282208054909116909317909255805491611fb7836124d7565b9091555050506001600160a01b039092166000908152600f6020908152604080832042908190556011909252909120555050565b600080826001600160a01b031663e4c21cf26040518163ffffffff1660e01b8152600401602060405180830381865afa15801561202c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906120509190612472565b90506000836001600160a01b0316632698d7076040518163ffffffff1660e01b8152600401602060405180830381865afa158015612092573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906120b69190612472565b90506000846001600160a01b031663249b7c196040518163ffffffff1660e01b8152600401602060405180830381865afa1580156120f8573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061211c9190612472565b9050828210801561212d5750804210155b95945050505050565b6000806121438385612676565b9050838110156121935760405162461bcd60e51b815260206004820152601b60248201527a536166654d6174683a206164646974696f6e206f766572666c6f7760281b60448201526064016107dd565b90505b92915050565b6001600160a01b0381166121af57600080fd5b600080546040516001600160a01b03808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a3600080546001600160a01b0319166001600160a01b0392909216919091179055565b6001600160a01b0381168114611c6157600080fd5b60006020828403121561223157600080fd5b81356121938161220a565b6001600160a01b0391909116815260200190565b60006020828403121561226257600080fd5b5035919050565b634e487b7160e01b600052604160045260246000fd5b600082601f83011261229057600080fd5b81356001600160401b03808211156122aa576122aa612269565b604051601f8301601f19908116603f011681019082821181831017156122d2576122d2612269565b816040528381528660208588010111156122eb57600080fd5b836020870160208301376000602085830101528094505050505092915050565b6000806040838503121561231e57600080fd5b82356123298161220a565b915060208301356001600160401b0381111561234457600080fd5b6123508582860161227f565b9150509250929050565b6000806040838503121561236d57600080fd5b82356123788161220a565b946020939093013593505050565b60005b838110156123a1578181015183820152602001612389565b50506000910152565b60208152600082518060208401526123c9816040850160208701612386565b601f01601f19169190910160400192915050565b6000602082840312156123ef57600080fd5b81356001600160401b0381111561240557600080fd5b6124118482850161227f565b949350505050565b602080825260129082015271616c72656164792066696e616c697a65642160701b604082015260600190565b6020808252601390820152721d9bdd195c90d85b1b125cd11a5cd8589b1959606a1b604082015260600190565b60006020828403121561248457600080fd5b5051919050565b60006020828403121561249d57600080fd5b81516121938161220a565b6001600160a01b03929092168252602082015260400190565b634e487b7160e01b600052601160045260246000fd5b6000600182016124e9576124e96124c1565b5060010190565b600181811c9082168061250457607f821691505b60208210810361252457634e487b7160e01b600052602260045260246000fd5b50919050565b601f82111561257457600081815260208120601f850160051c810160208610156125515750805b601f850160051c820191505b818110156125705782815560010161255d565b5050505b505050565b81516001600160401b0381111561259257612592612269565b6125a6816125a084546124f0565b8461252a565b602080601f8311600181146125db57600084156125c35750858301515b600019600386901b1c1916600185901b178555612570565b600085815260208120601f198616915b8281101561260a578886015182559484019460019091019084016125eb565b50858210156126285787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b6000825161264a818460208701612386565b9190910192915050565b60006020828403121561266657600080fd5b8151801515811461219357600080fd5b80820180821115612196576121966124c156fe766f7465722063616e6e6f742066696e616c7a652069662074696d6520697320a2646970667358221220e958c7b10be00e3f341e98277b5c7f67f6a777978ec3dae11e907d9fadbb70ea64736f6c63430008110033
Constructor Arguments (ABI-Encoded and is the last bytes of the Contract Creation Code above)
00000000000000000000000037d79eea1f3d5475a7e0f0cd8f8130df8500ca29
-----Decoded View---------------
Arg [0] : addrStorage (address): 0x37d79eea1f3D5475a7e0F0CD8f8130dF8500CA29
-----Encoded View---------------
1 Constructor Arguments found :
Arg [0] : 00000000000000000000000037d79eea1f3d5475a7e0f0cd8f8130df8500ca29
Loading...
Loading
Loading...
Loading
Multichain Portfolio | 30 Chains
Chain | Token | Portfolio % | Price | Amount | Value |
---|
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.