More Info
Private Name Tags
ContractCreator
Latest 25 from a total of 749 transactions
Transaction Hash |
Method
|
Block
|
From
|
To
|
|||||
---|---|---|---|---|---|---|---|---|---|
Release | 17340015 | 496 days ago | IN | 0 ETH | 0.00054171 | ||||
Release | 17159050 | 521 days ago | IN | 0 ETH | 0.0027673 | ||||
Release | 17155587 | 522 days ago | IN | 0 ETH | 0.00176931 | ||||
Release | 17155539 | 522 days ago | IN | 0 ETH | 0.0020412 | ||||
Release | 17155192 | 522 days ago | IN | 0 ETH | 0.00243785 | ||||
Release | 17148586 | 523 days ago | IN | 0 ETH | 0.00120713 | ||||
Release | 17148571 | 523 days ago | IN | 0 ETH | 0.00223087 | ||||
Release | 17142626 | 524 days ago | IN | 0 ETH | 0.00196693 | ||||
Release | 17142401 | 524 days ago | IN | 0 ETH | 0.0016943 | ||||
Release | 17142114 | 524 days ago | IN | 0 ETH | 0.00164761 | ||||
Release | 17138185 | 524 days ago | IN | 0 ETH | 0.00194792 | ||||
Release | 17138148 | 524 days ago | IN | 0 ETH | 0.002751 | ||||
Release | 17137466 | 524 days ago | IN | 0 ETH | 0.00169889 | ||||
Release | 17137004 | 524 days ago | IN | 0 ETH | 0.00186561 | ||||
Release | 17136759 | 524 days ago | IN | 0 ETH | 0.001701 | ||||
Release | 17135754 | 525 days ago | IN | 0 ETH | 0.00223714 | ||||
Release | 17135271 | 525 days ago | IN | 0 ETH | 0.00227871 | ||||
Release | 17134168 | 525 days ago | IN | 0 ETH | 0.00185216 | ||||
Release | 17122118 | 526 days ago | IN | 0 ETH | 0.0018211 | ||||
Release | 17121632 | 526 days ago | IN | 0 ETH | 0.0024141 | ||||
Release | 17121615 | 527 days ago | IN | 0 ETH | 0.00213512 | ||||
Release | 17120156 | 527 days ago | IN | 0 ETH | 0.00267096 | ||||
Release | 17120131 | 527 days ago | IN | 0 ETH | 0.0025336 | ||||
Release | 17120094 | 527 days ago | IN | 0 ETH | 0.00271308 | ||||
Release | 17115973 | 527 days ago | IN | 0 ETH | 0.00286778 |
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 0x5495Fd25...7C4c96316 The constructor portion of the code might be different and could alter the actual behaviour of the contract
Contract Name:
RetroactiveAirdropLock
Compiler Version
v0.7.6+commit.7338295f
Optimization Enabled:
Yes with 200 runs
Other Settings:
default evmVersion
Contract Source Code (Solidity Standard Json-Input format)
// SPDX-License-Identifier: BUSL-1.1 pragma solidity 0.7.6; import "@openzeppelin/contracts/math/SafeMath.sol"; import "./gov/OLEToken.sol"; import "./Adminable.sol"; /// @title OLE token Locked /// @author OpenLeverage /// @notice Release retroactive airdrop OLE to beneficiaries linearly. contract RetroactiveAirdropLock is Adminable{ using SafeMath for uint256; uint128 public startTime; uint128 public endTime; uint128 public expireTime; OLEToken public token; mapping(address => ReleaseVar) public releaseVars; event Release(address beneficiary, uint amount); struct ReleaseVar { uint256 amount; uint128 lastUpdateTime; } constructor(OLEToken token_, address payable _admin, uint128 startTime_, uint128 endTime_, uint128 expireTime_) { require(endTime_ > startTime_, "StartTime must be earlier than endTime"); require(expireTime_ > endTime_, "EndTime must be earlier than expireTime"); startTime = startTime_; endTime = endTime_; expireTime = expireTime_; admin = _admin; token = token_; } function setReleaseBatch(address[] memory beneficiaries, uint256[] memory amounts) external onlyAdmin{ require(beneficiaries.length == amounts.length, "Length must be same"); for (uint i = 0; i < beneficiaries.length; i++) { address beneficiary = beneficiaries[i]; require(releaseVars[beneficiary].amount == 0, 'Beneficiary is exist'); releaseVars[beneficiary] = ReleaseVar(amounts[i], startTime); } } function release() external { require(expireTime >= block.timestamp, "time expired"); releaseInternal(msg.sender); } function withdraw(address to) external onlyAdmin{ uint256 amount = token.balanceOf(address(this)); require(amount > 0, "no amount available"); token.transfer(to, amount); } function releaseInternal(address beneficiary) internal { uint256 amount = token.balanceOf(address(this)); uint256 releaseAmount = releaseAbleAmount(beneficiary); // The transfer out limit exceeds the available limit of the account require(releaseAmount > 0, "no releasable amount"); require(amount >= releaseAmount, "transfer out limit exceeds"); releaseVars[beneficiary].lastUpdateTime = uint128(block.timestamp > endTime ? endTime : block.timestamp); token.transfer(beneficiary, releaseAmount); emit Release(beneficiary, releaseAmount); } function releaseAbleAmount(address beneficiary) public view returns (uint256){ ReleaseVar memory releaseVar = releaseVars[beneficiary]; require(block.timestamp >= startTime, "not time to unlock"); require(releaseVar.amount > 0, "beneficiary does not exist"); uint256 calTime = block.timestamp > endTime ? endTime : block.timestamp; return calTime.sub(releaseVar.lastUpdateTime).mul(releaseVar.amount) .div(endTime - startTime); } function lockedAmount(address beneficiary) public view returns (uint256){ ReleaseVar memory releaseVar = releaseVars[beneficiary]; return releaseVar.amount.mul(endTime - releaseVar.lastUpdateTime) .div(endTime - startTime); } }
// SPDX-License-Identifier: BUSL-1.1 pragma solidity 0.7.6; pragma experimental ABIEncoderV2; import "../Adminable.sol"; import "@openzeppelin/contracts/math/SafeMath.sol"; /// @dev Admin of this contract is the address of Timelock. contract OLEToken is Adminable { using SafeMath for uint; // EIP-20 token name for this token string public name; // EIP-20 token symbol for this token string public symbol; // EIP-20 token decimals for this token uint8 public constant decimals = 18; // Total number of tokens in circulation uint public totalSupply = 1000000000e18; // 1 billion OLE // Allowance amounts on behalf of others mapping(address => mapping(address => uint)) internal allowances; // Official record of token balances for each account mapping(address => uint) internal balances; // The standard EIP-20 transfer event event Transfer(address indexed from, address indexed to, uint256 amount); // The standard EIP-20 approval event event Approval(address indexed owner, address indexed spender, uint256 amount); /** * Construct a new OpenLev token * @param initAccount The initial account to grant all the tokens */ constructor(address initAccount, address payable _admin, string memory _name, string memory _symbol) { admin = _admin; balances[initAccount] = totalSupply; name = _name; symbol = _symbol; emit Transfer(address(0), initAccount, totalSupply); } function mint(address account, uint amount) external onlyAdmin { require(account != address(0), "OLE: mint to the zero address"); totalSupply = totalSupply.add(amount); balances[account] = balances[account].add(amount); emit Transfer(address(0), account, amount); } function burn(uint amount) external { balances[msg.sender] = balances[msg.sender].sub(amount); totalSupply = totalSupply.sub(amount); emit Transfer(msg.sender, address(0), amount); } /** * Get the number of tokens `spender` is approved to spend on behalf of `account` * @param account The address of the account holding the funds * @param spender The address of the account spending the funds * @return The number of tokens approved */ function allowance(address account, address spender) external view returns (uint) { return allowances[account][spender]; } /** * Approve `spender` to transfer up to `amount` from `src` * @dev This will overwrite the approval amount for `spender` * and is subject to issues noted [here](https://eips.ethereum.org/EIPS/eip-20#approve) * @param spender The address of the account which may transfer tokens * @return Whether or not the approval succeeded */ function approve(address spender, uint amount) external returns (bool) { allowances[msg.sender][spender] = amount; emit Approval(msg.sender, spender, amount); return true; } /** * Get the number of tokens held by the `account` * @param account The address of the account to get the balance of * @return The number of tokens held */ function balanceOf(address account) external view returns (uint) { return balances[account]; } /** * Transfer `amount` tokens from `msg.sender` to `dst` * @param dst The address of the destination account * @return Whether or not the transfer succeeded */ function transfer(address dst, uint amount) external returns (bool) { _transferTokens(msg.sender, dst, amount); return true; } /** * Transfer `amount` tokens from `src` to `dst` * @param src The address of the source account * @param dst The address of the destination account * @return Whether or not the transfer succeeded */ function transferFrom(address src, address dst, uint amount) external returns (bool) { address spender = msg.sender; uint spenderAllowance = allowances[src][spender]; if (spender != src && spenderAllowance != uint(- 1)) { allowances[src][spender] = spenderAllowance.sub(amount); emit Approval(src, spender, allowances[src][spender]); } _transferTokens(src, dst, amount); return true; } function _transferTokens(address src, address dst, uint amount) internal { require(src != address(0), "Zero src address"); require(dst != address(0), "Zero dst address"); balances[src] = balances[src].sub(amount); balances[dst] = balances[dst].add(amount); emit Transfer(src, dst, amount); } }
// SPDX-License-Identifier: BUSL-1.1 pragma solidity 0.7.6; abstract contract Adminable { address payable public admin; address payable public pendingAdmin; address payable public developer; event NewPendingAdmin(address oldPendingAdmin, address newPendingAdmin); event NewAdmin(address oldAdmin, address newAdmin); constructor () { developer = msg.sender; } modifier onlyAdmin() { require(msg.sender == admin, "caller must be admin"); _; } modifier onlyAdminOrDeveloper() { require(msg.sender == admin || msg.sender == developer, "caller must be admin or developer"); _; } function setPendingAdmin(address payable newPendingAdmin) external virtual onlyAdmin { // Save current value, if any, for inclusion in log address oldPendingAdmin = pendingAdmin; // Store pendingAdmin with value newPendingAdmin pendingAdmin = newPendingAdmin; // Emit NewPendingAdmin(oldPendingAdmin, newPendingAdmin) emit NewPendingAdmin(oldPendingAdmin, newPendingAdmin); } function acceptAdmin() external virtual { require(msg.sender == pendingAdmin, "only pendingAdmin can accept admin"); // Save current values for inclusion in log address oldAdmin = admin; address oldPendingAdmin = pendingAdmin; // Store admin with value pendingAdmin admin = pendingAdmin; // Clear the pending value pendingAdmin = address(0); emit NewAdmin(oldAdmin, admin); emit NewPendingAdmin(oldPendingAdmin, pendingAdmin); } }
// SPDX-License-Identifier: MIT pragma solidity >=0.6.0 <0.8.0; /** * @dev Wrappers over Solidity's arithmetic operations with added overflow * checks. * * Arithmetic operations in Solidity wrap on overflow. This can easily result * in bugs, because programmers usually assume that an overflow raises an * error, which is the standard behavior in high level programming languages. * `SafeMath` restores this intuition by reverting the transaction when an * operation overflows. * * Using this library instead of the unchecked operations eliminates an entire * class of bugs, so it's recommended to use it always. */ library SafeMath { /** * @dev Returns the addition of two unsigned integers, with an overflow flag. * * _Available since v3.4._ */ function tryAdd(uint256 a, uint256 b) internal pure returns (bool, uint256) { uint256 c = a + b; if (c < a) return (false, 0); return (true, c); } /** * @dev Returns the substraction of two unsigned integers, with an overflow flag. * * _Available since v3.4._ */ function trySub(uint256 a, uint256 b) internal pure returns (bool, uint256) { if (b > a) return (false, 0); return (true, a - b); } /** * @dev Returns the multiplication of two unsigned integers, with an overflow flag. * * _Available since v3.4._ */ function tryMul(uint256 a, uint256 b) internal pure returns (bool, 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 (true, 0); uint256 c = a * b; if (c / a != b) return (false, 0); return (true, c); } /** * @dev Returns the division of two unsigned integers, with a division by zero flag. * * _Available since v3.4._ */ function tryDiv(uint256 a, uint256 b) internal pure returns (bool, uint256) { if (b == 0) return (false, 0); return (true, a / b); } /** * @dev Returns the remainder of dividing two unsigned integers, with a division by zero flag. * * _Available since v3.4._ */ function tryMod(uint256 a, uint256 b) internal pure returns (bool, uint256) { if (b == 0) return (false, 0); return (true, a % b); } /** * @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) { require(b <= a, "SafeMath: subtraction overflow"); return a - b; } /** * @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) { 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, reverting 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) { require(b > 0, "SafeMath: division by zero"); return a / b; } /** * @dev Returns the remainder of dividing two unsigned integers. (unsigned integer modulo), * reverting 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) { require(b > 0, "SafeMath: modulo by zero"); return a % b; } /** * @dev Returns the subtraction of two unsigned integers, reverting with custom message on * overflow (when the result is negative). * * CAUTION: This function is deprecated because it requires allocating memory for the error * message unnecessarily. For custom revert reasons use {trySub}. * * 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); return a - b; } /** * @dev Returns the integer division of two unsigned integers, reverting with custom message on * division by zero. The result is rounded towards zero. * * CAUTION: This function is deprecated because it requires allocating memory for the error * message unnecessarily. For custom revert reasons use {tryDiv}. * * 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); return a / b; } /** * @dev Returns the remainder of dividing two unsigned integers. (unsigned integer modulo), * reverting with custom message when dividing by zero. * * CAUTION: This function is deprecated because it requires allocating memory for the error * message unnecessarily. For custom revert reasons use {tryMod}. * * 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; } }
{ "remappings": [], "optimizer": { "enabled": true, "runs": 200 }, "evmVersion": "istanbul", "libraries": {}, "outputSelection": { "*": { "*": [ "evm.bytecode", "evm.deployedBytecode", "devdoc", "userdoc", "metadata", "abi" ] } } }
Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
[{"inputs":[{"internalType":"contract OLEToken","name":"token_","type":"address"},{"internalType":"address payable","name":"_admin","type":"address"},{"internalType":"uint128","name":"startTime_","type":"uint128"},{"internalType":"uint128","name":"endTime_","type":"uint128"},{"internalType":"uint128","name":"expireTime_","type":"uint128"}],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"oldAdmin","type":"address"},{"indexed":false,"internalType":"address","name":"newAdmin","type":"address"}],"name":"NewAdmin","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"oldPendingAdmin","type":"address"},{"indexed":false,"internalType":"address","name":"newPendingAdmin","type":"address"}],"name":"NewPendingAdmin","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"beneficiary","type":"address"},{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"}],"name":"Release","type":"event"},{"inputs":[],"name":"acceptAdmin","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"admin","outputs":[{"internalType":"address payable","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"developer","outputs":[{"internalType":"address payable","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"endTime","outputs":[{"internalType":"uint128","name":"","type":"uint128"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"expireTime","outputs":[{"internalType":"uint128","name":"","type":"uint128"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"beneficiary","type":"address"}],"name":"lockedAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"pendingAdmin","outputs":[{"internalType":"address payable","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"release","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"beneficiary","type":"address"}],"name":"releaseAbleAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"releaseVars","outputs":[{"internalType":"uint256","name":"amount","type":"uint256"},{"internalType":"uint128","name":"lastUpdateTime","type":"uint128"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address payable","name":"newPendingAdmin","type":"address"}],"name":"setPendingAdmin","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address[]","name":"beneficiaries","type":"address[]"},{"internalType":"uint256[]","name":"amounts","type":"uint256[]"}],"name":"setReleaseBatch","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"startTime","outputs":[{"internalType":"uint128","name":"","type":"uint128"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"token","outputs":[{"internalType":"contract OLEToken","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"to","type":"address"}],"name":"withdraw","outputs":[],"stateMutability":"nonpayable","type":"function"}]
Deployed Bytecode
0x608060405234801561001057600080fd5b50600436106100f55760003560e01c806351cff8d911610097578063a153e70811610066578063a153e70814610356578063ca4b208b1461037c578063f851a44014610384578063fc0c546a1461038c576100f5565b806351cff8d9146101f9578063695d006d1461021f57806378e979251461034657806386d1a69f1461034e576100f5565b8063310a1ee3116100d3578063310a1ee3146101605780633197cbb61461018457806343d9a2b41461018c5780634dd18bf5146101d3576100f5565b80630792d725146100fa5780630e18b68114610132578063267822471461013c575b600080fd5b6101206004803603602081101561011057600080fd5b50356001600160a01b0316610394565b60408051918252519081900360200190f35b61013a6104fb565b005b6101446105fb565b604080516001600160a01b039092168252519081900360200190f35b61016861060a565b604080516001600160801b039092168252519081900360200190f35b610168610619565b6101b2600480360360208110156101a257600080fd5b50356001600160a01b031661062f565b604080519283526001600160801b0390911660208301528051918290030190f35b61013a600480360360208110156101e957600080fd5b50356001600160a01b0316610651565b61013a6004803603602081101561020f57600080fd5b50356001600160a01b031661070a565b61013a6004803603604081101561023557600080fd5b81019060208101813564010000000081111561025057600080fd5b82018360208201111561026257600080fd5b8035906020019184602083028401116401000000008311171561028457600080fd5b91908080602002602001604051908101604052809392919081815260200183836020028082843760009201919091525092959493602081019350359150506401000000008111156102d457600080fd5b8201836020820111156102e657600080fd5b8035906020019184602083028401116401000000008311171561030857600080fd5b9190808060200260200160405190810160405280939291908181526020018383602002808284376000920191909152509295506108a7945050505050565b610168610a61565b61013a610a70565b6101206004803603602081101561036c57600080fd5b50356001600160a01b0316610acc565b610144610b3d565b610144610b4c565b610144610b5b565b6001600160a01b0381166000908152600660209081526040808320815180830190925280548252600101546001600160801b0390811692820192909252600354909116421015610420576040805162461bcd60e51b81526020600482015260126024820152716e6f742074696d6520746f20756e6c6f636b60701b604482015290519081900360640190fd5b8051610473576040805162461bcd60e51b815260206004820152601a60248201527f62656e656669636961727920646f6573206e6f74206578697374000000000000604482015290519081900360640190fd5b600354600090600160801b90046001600160801b0316421161049557426104a9565b600354600160801b90046001600160801b03165b600354835160208501519293506104f3926001600160801b03808416600160801b9094048116939093038316926104ed92916104e791879116610b6a565b90610bcc565b90610c25565b949350505050565b6001546001600160a01b031633146105445760405162461bcd60e51b8152600401808060200182810382526022815260200180610ee46022913960400191505060405180910390fd5b60008054600180546001600160a01b038082166001600160a01b031980861682179687905590921690925560408051938316808552949092166020840152815190927ff9ffabca9c8276e99321725bcb43fb076a6c66a54b7f21c4e8146d8519b417dc92908290030190a1600154604080516001600160a01b038085168252909216602083015280517fca4f2f25d0898edd99413412fb94012f9e54ec8142f9b093e7720646a95b16a99281900390910190a15050565b6001546001600160a01b031681565b6004546001600160801b031681565b600354600160801b90046001600160801b031681565b600660205260009081526040902080546001909101546001600160801b031682565b6000546001600160a01b031633146106a7576040805162461bcd60e51b815260206004820152601460248201527331b0b63632b91036bab9ba1031329030b236b4b760611b604482015290519081900360640190fd5b600180546001600160a01b038381166001600160a01b0319831681179093556040805191909216808252602082019390935281517fca4f2f25d0898edd99413412fb94012f9e54ec8142f9b093e7720646a95b16a9929181900390910190a15050565b6000546001600160a01b03163314610760576040805162461bcd60e51b815260206004820152601460248201527331b0b63632b91036bab9ba1031329030b236b4b760611b604482015290519081900360640190fd5b600554604080516370a0823160e01b815230600482015290516000926001600160a01b0316916370a08231916024808301926020929190829003018186803b1580156107ab57600080fd5b505afa1580156107bf573d6000803e3d6000fd5b505050506040513d60208110156107d557600080fd5b5051905080610821576040805162461bcd60e51b81526020600482015260136024820152726e6f20616d6f756e7420617661696c61626c6560681b604482015290519081900360640190fd5b6005546040805163a9059cbb60e01b81526001600160a01b038581166004830152602482018590529151919092169163a9059cbb9160448083019260209291908290030181600087803b15801561087757600080fd5b505af115801561088b573d6000803e3d6000fd5b505050506040513d60208110156108a157600080fd5b50505050565b6000546001600160a01b031633146108fd576040805162461bcd60e51b815260206004820152601460248201527331b0b63632b91036bab9ba1031329030b236b4b760611b604482015290519081900360640190fd5b8051825114610949576040805162461bcd60e51b81526020600482015260136024820152724c656e677468206d7573742062652073616d6560681b604482015290519081900360640190fd5b60005b8251811015610a5c57600083828151811061096357fe5b6020026020010151905060066000826001600160a01b03166001600160a01b03168152602001908152602001600020600001546000146109e1576040805162461bcd60e51b815260206004820152601460248201527310995b99599a58da585c9e481a5cc8195e1a5cdd60621b604482015290519081900360640190fd5b60405180604001604052808484815181106109f857fe5b60209081029190910181015182526003546001600160801b03908116928201929092526001600160a01b039390931660009081526006845260409020825181559190920151600191820180546001600160801b03191691909316179091550161094c565b505050565b6003546001600160801b031681565b600454426001600160801b039091161015610ac1576040805162461bcd60e51b815260206004820152600c60248201526b1d1a5b5948195e1c1a5c995960a21b604482015290519081900360640190fd5b610aca33610c8c565b565b6001600160a01b0381166000908152600660209081526040808320815180830190925280548083526001909101546001600160801b039081169383018490526003549293610b3693808316600160801b90910483169081038316936104ed93909290910316610bcc565b9392505050565b6002546001600160a01b031681565b6000546001600160a01b031681565b6005546001600160a01b031681565b600082821115610bc1576040805162461bcd60e51b815260206004820152601e60248201527f536166654d6174683a207375627472616374696f6e206f766572666c6f770000604482015290519081900360640190fd5b508082035b92915050565b600082610bdb57506000610bc6565b82820282848281610be857fe5b0414610b365760405162461bcd60e51b8152600401808060200182810382526021815260200180610f066021913960400191505060405180910390fd5b6000808211610c7b576040805162461bcd60e51b815260206004820152601a60248201527f536166654d6174683a206469766973696f6e206279207a65726f000000000000604482015290519081900360640190fd5b818381610c8457fe5b049392505050565b600554604080516370a0823160e01b815230600482015290516000926001600160a01b0316916370a08231916024808301926020929190829003018186803b158015610cd757600080fd5b505afa158015610ceb573d6000803e3d6000fd5b505050506040513d6020811015610d0157600080fd5b505190506000610d1083610394565b905060008111610d5e576040805162461bcd60e51b81526020600482015260146024820152731b9bc81c995b19585cd8589b1948185b5bdd5b9d60621b604482015290519081900360640190fd5b80821015610db3576040805162461bcd60e51b815260206004820152601a60248201527f7472616e73666572206f7574206c696d69742065786365656473000000000000604482015290519081900360640190fd5b600354600160801b90046001600160801b03164211610dd25742610de6565b600354600160801b90046001600160801b03165b6001600160a01b03848116600081815260066020908152604080832060010180546001600160801b0319166001600160801b039790971696909617909555600554855163a9059cbb60e01b81526004810194909452602484018790529451949093169363a9059cbb936044808501949193918390030190829087803b158015610e6e57600080fd5b505af1158015610e82573d6000803e3d6000fd5b505050506040513d6020811015610e9857600080fd5b5050604080516001600160a01b03851681526020810183905281517ff6334794522b9db534a812aaae1af828a2e96aac68473b58e36d7d0bfd67477b929181900390910190a150505056fe6f6e6c792070656e64696e6741646d696e2063616e206163636570742061646d696e536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f77a264697066735822122012bc5ec2b6ae6fc72e05f11888ea1e3239f37296248797106128c008b3fee88764736f6c63430007060033
Loading...
Loading
Loading...
Loading
Multichain Portfolio | 27 Chains
Chain | Token | Portfolio % | Price | Amount | Value |
---|
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.