Contract Overview
My Name Tag:
Not Available, login to update
Txn Hash | Method |
Block
|
From
|
To
|
Value | [Txn Fee] | |||
---|---|---|---|---|---|---|---|---|---|
0x2d11e121df210778e2fa8e59d1abd87638077fff4ea9736fc2b8699351b4ff91 | Release | 12814121 | 46 days 18 hrs ago | 0x15f08e8656fa6205b53819e36dcbec8f481da14c | IN | 0xfea7879bf27b4461de9a9b8a03dbcc7f49c52bea | 0 AVAX | 0.005580372356 | |
0xc5a1841aeaa402acf4b16fec687130021c1e4414a364efaf8875830bb266ed7d | 0x60806040 | 6750707 | 188 days 3 hrs ago | 0x66fb02746d72bc640643fdba3aefe9c126f0aa4f | IN | Contract Creation | 0 AVAX | 0.039306705034 |
[ Download CSV Export ]
Similar Match Source Code
Note: This contract matches the deployed ByteCode of the Source Code for Contract 0x864B1E258cb115EdE2Aa1D824F11aB5B4739e57b
Contract Name:
TokenVesting
Compiler Version
v0.6.12+commit.27d51765
Contract Source Code (Solidity)
/** *Submitted for verification at snowtrace.io on 2021-11-07 */ // File: @openzeppelin/contracts/utils/Context.sol // SPDX-License-Identifier: MIT pragma solidity >=0.6.0 <0.8.0; /* * @dev Provides information about the current execution context, including the * sender of the transaction and its data. While these are generally available * via msg.sender and msg.data, they should not be accessed in such a direct * manner, since when dealing with GSN meta-transactions the account sending and * paying for execution may not be the actual sender (as far as an application * is concerned). * * This contract is only required for intermediate, library-like contracts. */ abstract contract Context { function _msgSender() internal view virtual returns (address payable) { return msg.sender; } function _msgData() internal view virtual returns (bytes memory) { this; // silence state mutability warning without generating bytecode - see https://github.com/ethereum/solidity/issues/2691 return msg.data; } } // File: @openzeppelin/contracts/access/Ownable.sol pragma solidity >=0.6.0 <0.8.0; /** * @dev Contract module which provides a basic access control mechanism, where * there is an account (an owner) that can be granted exclusive access to * specific functions. * * By default, the owner account will be the one that deploys the contract. This * can later be changed with {transferOwnership}. * * This module is used through inheritance. It will make available the modifier * `onlyOwner`, which can be applied to your functions to restrict their use to * the owner. */ abstract contract Ownable is Context { address private _owner; event OwnershipTransferred(address indexed previousOwner, address indexed newOwner); /** * @dev Initializes the contract setting the deployer as the initial owner. */ constructor () internal { address msgSender = _msgSender(); _owner = msgSender; emit OwnershipTransferred(address(0), msgSender); } /** * @dev Returns the address of the current owner. */ function owner() public view virtual returns (address) { return _owner; } /** * @dev Throws if called by any account other than the owner. */ modifier onlyOwner() { require(owner() == _msgSender(), "Ownable: caller is not the owner"); _; } /** * @dev Leaves the contract without owner. It will not be possible to call * `onlyOwner` functions anymore. Can only be called by the current owner. * * NOTE: Renouncing ownership will leave the contract without an owner, * thereby removing any functionality that is only available to the owner. */ function renounceOwnership() public virtual onlyOwner { emit OwnershipTransferred(_owner, address(0)); _owner = address(0); } /** * @dev Transfers ownership of the contract to a new account (`newOwner`). * Can only be called by the current owner. */ function transferOwnership(address newOwner) public virtual onlyOwner { require(newOwner != address(0), "Ownable: new owner is the zero address"); emit OwnershipTransferred(_owner, newOwner); _owner = newOwner; } } // File: contracts/interfaces/IERC20.sol pragma solidity 0.6.12; interface IERC20 { function totalSupply() external view returns (uint256); function balanceOf(address account) external view returns (uint256); function allowance(address owner, address spender) external view returns (uint256); function approve(address spender, uint256 amount) external returns (bool); event Transfer(address indexed from, address indexed to, uint256 value); event Approval(address indexed owner, address indexed spender, uint256 value); // EIP 2612 function permit( address owner, address spender, uint256 value, uint256 deadline, uint8 v, bytes32 r, bytes32 s ) external; } // File: contracts/libraries/SafeERC20.sol pragma solidity 0.6.12; library SafeERC20 { function safeSymbol(IERC20 token) internal view returns (string memory) { (bool success, bytes memory data) = address(token).staticcall(abi.encodeWithSelector(0x95d89b41)); return success && data.length > 0 ? abi.decode(data, (string)) : "???"; } function safeName(IERC20 token) internal view returns (string memory) { (bool success, bytes memory data) = address(token).staticcall(abi.encodeWithSelector(0x06fdde03)); return success && data.length > 0 ? abi.decode(data, (string)) : "???"; } function safeDecimals(IERC20 token) public view returns (uint8) { (bool success, bytes memory data) = address(token).staticcall(abi.encodeWithSelector(0x313ce567)); return success && data.length == 32 ? abi.decode(data, (uint8)) : 18; } function safeTransfer( IERC20 token, address to, uint256 amount ) internal { (bool success, bytes memory data) = address(token).call(abi.encodeWithSelector(0xa9059cbb, to, amount)); require(success && (data.length == 0 || abi.decode(data, (bool))), "SafeERC20: Transfer failed"); } function safeTransferFrom( IERC20 token, address from, uint256 amount ) internal { (bool success, bytes memory data) = address(token).call( abi.encodeWithSelector(0x23b872dd, from, address(this), amount) ); require(success && (data.length == 0 || abi.decode(data, (bool))), "SafeERC20: TransferFrom failed"); } } // File: contracts/libraries/SafeMath.sol pragma solidity 0.6.12; // a library for performing overflow-safe math, updated with awesomeness from of DappHub (https://github.com/dapphub/ds-math) library SafeMath { function add(uint256 a, uint256 b) internal pure returns (uint256 c) { require((c = a + b) >= b, "SafeMath: Add Overflow"); } function sub(uint256 a, uint256 b) internal pure returns (uint256 c) { require((c = a - b) <= a, "SafeMath: Underflow"); } function mul(uint256 a, uint256 b) internal pure returns (uint256 c) { require(b == 0 || (c = a * b) / b == a, "SafeMath: Mul Overflow"); } function div(uint256 a, uint256 b) internal pure returns (uint256 c) { require(b > 0, "SafeMath: Div by Zero"); c = a / b; } function to128(uint256 a) internal pure returns (uint128 c) { require(a <= uint128(-1), "SafeMath: uint128 Overflow"); c = uint128(a); } } library SafeMath128 { function add(uint128 a, uint128 b) internal pure returns (uint128 c) { require((c = a + b) >= b, "SafeMath: Add Overflow"); } function sub(uint128 a, uint128 b) internal pure returns (uint128 c) { require((c = a - b) <= a, "SafeMath: Underflow"); } } // File: contracts/TokenVesting.sol pragma solidity ^0.6.0; /** * @title TokenVesting * @dev A token holder contract that can release its token balance gradually like a * typical vesting scheme, with a cliff and vesting period. Optionally revocable by the * owner. */ contract TokenVesting is Ownable { // The vesting schedule is time-based (i.e. using block timestamps as opposed to e.g. block numbers), and is // therefore sensitive to timestamp manipulation (which is something miners can do, to a certain degree). Therefore, // it is recommended to avoid using short time durations (less than a minute). Typical vesting schemes, with a // cliff period of a year and a duration of four years, are safe to use. // solhint-disable not-rely-on-time using SafeMath for uint256; using SafeERC20 for IERC20; event TokensReleased(address token, uint256 amount); event TokenVestingRevoked(address token); // beneficiary of tokens after they are released address private _beneficiary; // Durations and timestamps are expressed in UNIX time, the same units as block.timestamp. uint256 private _cliff; uint256 private _start; uint256 private _duration; bool private _revocable; mapping(address => uint256) private _released; mapping(address => bool) private _revoked; /** * @dev Creates a vesting contract that vests its balance of any ERC20 token to the * beneficiary, gradually in a linear fashion until start + duration. By then all * of the balance will have vested. * @param beneficiary address of the beneficiary to whom vested tokens are transferred * @param cliffDuration duration in seconds of the cliff in which tokens will begin to vest * @param start the time (as Unix time) at which point vesting starts * @param duration duration in seconds of the period in which the tokens will vest * @param revocable whether the vesting is revocable or not */ constructor( address beneficiary, uint256 start, uint256 cliffDuration, uint256 duration, bool revocable ) public { require(beneficiary != address(0), "TokenVesting: beneficiary is the zero address"); // solhint-disable-next-line max-line-length require(cliffDuration <= duration, "TokenVesting: cliff is longer than duration"); require(duration > 0, "TokenVesting: duration is 0"); // solhint-disable-next-line max-line-length require(start.add(duration) > block.timestamp, "TokenVesting: final time is before current time"); _beneficiary = beneficiary; _revocable = revocable; _duration = duration; _cliff = start.add(cliffDuration); _start = start; } /** * @return the beneficiary of the tokens. */ function beneficiary() public view returns (address) { return _beneficiary; } /** * @return the cliff time of the token vesting. */ function cliff() public view returns (uint256) { return _cliff; } /** * @return the start time of the token vesting. */ function start() public view returns (uint256) { return _start; } /** * @return the duration of the token vesting. */ function duration() public view returns (uint256) { return _duration; } /** * @return true if the vesting is revocable. */ function revocable() public view returns (bool) { return _revocable; } /** * @return the amount of the token released. */ function released(address token) public view returns (uint256) { return _released[token]; } /** * @return true if the token is revoked. */ function revoked(address token) public view returns (bool) { return _revoked[token]; } /** * @notice Transfers vested tokens to beneficiary. * @param token ERC20 token which is being vested */ function release(IERC20 token) public { uint256 unreleased = _releasableAmount(token); require(unreleased > 0, "TokenVesting: no tokens are due"); _released[address(token)] = _released[address(token)].add(unreleased); token.safeTransfer(_beneficiary, unreleased); emit TokensReleased(address(token), unreleased); } /** * @notice Allows the owner to revoke the vesting. Tokens already vested * remain in the contract, the rest are returned to the owner. * @param token ERC20 token which is being vested */ function revoke(IERC20 token) public onlyOwner { require(_revocable, "TokenVesting: cannot revoke"); require(!_revoked[address(token)], "TokenVesting: token already revoked"); uint256 balance = token.balanceOf(address(this)); uint256 unreleased = _releasableAmount(token); uint256 refund = balance.sub(unreleased); _revoked[address(token)] = true; token.safeTransfer(owner(), refund); emit TokenVestingRevoked(address(token)); } /** * @dev Calculates the amount that has already vested but hasn't been released yet. * @param token ERC20 token which is being vested */ function _releasableAmount(IERC20 token) private view returns (uint256) { return _vestedAmount(token).sub(_released[address(token)]); } /** * @dev Calculates the amount that has already vested. * @param token ERC20 token which is being vested */ function _vestedAmount(IERC20 token) private view returns (uint256) { uint256 currentBalance = token.balanceOf(address(this)); uint256 totalBalance = currentBalance.add(_released[address(token)]); if (block.timestamp < _cliff) { return 0; } else if (block.timestamp >= _start.add(_duration) || _revoked[address(token)]) { return totalBalance; } else { return totalBalance.mul(block.timestamp.sub(_start)).div(_duration); } } }
[{"inputs":[{"internalType":"address","name":"beneficiary","type":"address"},{"internalType":"uint256","name":"start","type":"uint256"},{"internalType":"uint256","name":"cliffDuration","type":"uint256"},{"internalType":"uint256","name":"duration","type":"uint256"},{"internalType":"bool","name":"revocable","type":"bool"}],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"token","type":"address"}],"name":"TokenVestingRevoked","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"token","type":"address"},{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"}],"name":"TokensReleased","type":"event"},{"inputs":[],"name":"beneficiary","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"cliff","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"duration","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":"contract IERC20","name":"token","type":"address"}],"name":"release","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"token","type":"address"}],"name":"released","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"revocable","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"contract IERC20","name":"token","type":"address"}],"name":"revoke","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"token","type":"address"}],"name":"revoked","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"start","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"}]
Contract Creation Code
60806040523480156200001157600080fd5b506040516200184b3803806200184b833981810160405260a08110156200003757600080fd5b8101908080519060200190929190805190602001909291908051906020019092919080519060200190929190805190602001909291905050506000620000826200038160201b60201c565b9050806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a350600073ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff161415620001a8576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602d815260200180620017f3602d913960400191505060405180910390fd5b8183111562000203576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602b81526020018062001820602b913960400191505060405180910390fd5b600082116200027a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601b8152602001807f546f6b656e56657374696e673a206475726174696f6e2069732030000000000081525060200191505060405180910390fd5b426200029583866200038960201b62000ce21790919060201c565b11620002ed576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602f815260200180620017c4602f913960400191505060405180910390fd5b84600160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555080600560006101000a81548160ff021916908315150217905550816004819055506200036983856200038960201b62000ce21790919060201c565b6002819055508360038190555050505050506200040d565b600033905090565b600081828401915081101562000407576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260168152602001807f536166654d6174683a20416464204f766572666c6f770000000000000000000081525060200191505060405180910390fd5b92915050565b6113a7806200041d6000396000f3fe608060405234801561001057600080fd5b50600436106100b45760003560e01c8063872a781011610071578063872a7810146101bb5780638da5cb5b146101db5780639852595c1461020f578063be9a655514610267578063f2fde38b14610285578063fa01dc06146102c9576100b4565b80630fb5a6b4146100b957806313d033c0146100d757806319165587146100f557806338af3eed14610139578063715018a61461016d57806374a8f10314610177575b600080fd5b6100c1610323565b6040518082815260200191505060405180910390f35b6100df61032d565b6040518082815260200191505060405180910390f35b6101376004803603602081101561010b57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610337565b005b6101416104f5565b604051808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b61017561051f565b005b6101b96004803603602081101561018d57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919050505061068c565b005b6101c3610a07565b60405180821515815260200191505060405180910390f35b6101e3610a1e565b604051808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b6102516004803603602081101561022557600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610a47565b6040518082815260200191505060405180910390f35b61026f610a90565b6040518082815260200191505060405180910390f35b6102c76004803603602081101561029b57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610a9a565b005b61030b600480360360208110156102df57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610c8c565b60405180821515815260200191505060405180910390f35b6000600454905090565b6000600254905090565b600061034282610d65565b9050600081116103ba576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601f8152602001807f546f6b656e56657374696e673a206e6f20746f6b656e7320617265206475650081525060200191505060405180910390fd5b61040c81600660008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054610ce290919063ffffffff16565b600660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061049c600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16828473ffffffffffffffffffffffffffffffffffffffff16610dc89092919063ffffffff16565b7fc7798891864187665ac6dd119286e44ec13f014527aeeb2b8eb3fd413df931798282604051808373ffffffffffffffffffffffffffffffffffffffff1681526020018281526020019250505060405180910390a15050565b6000600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b610527610fab565b73ffffffffffffffffffffffffffffffffffffffff16610545610a1e565b73ffffffffffffffffffffffffffffffffffffffff16146105ce576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a360008060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b610694610fab565b73ffffffffffffffffffffffffffffffffffffffff166106b2610a1e565b73ffffffffffffffffffffffffffffffffffffffff161461073b576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b600560009054906101000a900460ff166107bd576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601b8152602001807f546f6b656e56657374696e673a2063616e6e6f74207265766f6b65000000000081525060200191505060405180910390fd5b600760008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615610860576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602381526020018061134f6023913960400191505060405180910390fd5b60008173ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b8152600401808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060206040518083038186803b1580156108c957600080fd5b505afa1580156108dd573d6000803e3d6000fd5b505050506040513d60208110156108f357600080fd5b81019080805190602001909291905050509050600061091183610d65565b905060006109288284610fb390919063ffffffff16565b90506001600760008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506109b461098d610a1e565b828673ffffffffffffffffffffffffffffffffffffffff16610dc89092919063ffffffff16565b7f39983c6d4d174a7aee564f449d4a5c3c7ac9649d72b7793c56901183996f8af684604051808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390a150505050565b6000600560009054906101000a900460ff16905090565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b6000600660008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b6000600354905090565b610aa2610fab565b73ffffffffffffffffffffffffffffffffffffffff16610ac0610a1e565b73ffffffffffffffffffffffffffffffffffffffff1614610b49576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415610bcf576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260268152602001806113296026913960400191505060405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b6000600760008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050919050565b6000818284019150811015610d5f576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260168152602001807f536166654d6174683a20416464204f766572666c6f770000000000000000000081525060200191505060405180910390fd5b92915050565b6000610dc1600660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054610db384611036565b610fb390919063ffffffff16565b9050919050565b600060608473ffffffffffffffffffffffffffffffffffffffff1663a9059cbb8585604051602401808373ffffffffffffffffffffffffffffffffffffffff168152602001828152602001925050506040516020818303038152906040529060e01b6020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff83818316178352505050506040518082805190602001908083835b60208310610e8b5780518252602082019150602081019050602083039250610e68565b6001836020036101000a0380198251168184511680821785525050505050509050019150506000604051808303816000865af19150503d8060008114610eed576040519150601f19603f3d011682016040523d82523d6000602084013e610ef2565b606091505b5091509150818015610f325750600081511480610f315750808060200190516020811015610f1f57600080fd5b81019080805190602001909291905050505b5b610fa4576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601a8152602001807f5361666545524332303a205472616e73666572206661696c656400000000000081525060200191505060405180910390fd5b5050505050565b600033905090565b6000828284039150811115611030576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260138152602001807f536166654d6174683a20556e646572666c6f770000000000000000000000000081525060200191505060405180910390fd5b92915050565b6000808273ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b8152600401808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060206040518083038186803b1580156110a057600080fd5b505afa1580156110b4573d6000803e3d6000fd5b505050506040513d60208110156110ca57600080fd5b810190808051906020019092919050505090506000611131600660008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205483610ce290919063ffffffff16565b905060025442101561114857600092505050611205565b61115f600454600354610ce290919063ffffffff16565b421015806111b65750600760008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b156111c5578092505050611205565b6112006004546111f26111e360035442610fb390919063ffffffff16565b8461120a90919063ffffffff16565b61129f90919063ffffffff16565b925050505b919050565b600080821480611227575082828385029250828161122457fe5b04145b611299576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260168152602001807f536166654d6174683a204d756c204f766572666c6f770000000000000000000081525060200191505060405180910390fd5b92915050565b6000808211611316576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260158152602001807f536166654d6174683a20446976206279205a65726f000000000000000000000081525060200191505060405180910390fd5b81838161131f57fe5b0490509291505056fe4f776e61626c653a206e6577206f776e657220697320746865207a65726f2061646472657373546f6b656e56657374696e673a20746f6b656e20616c7265616479207265766f6b6564a2646970667358221220e871d6516f2907337c00eb244b4f3b968eff3b8ce62a380223a2d2e4a336e32f64736f6c634300060c0033546f6b656e56657374696e673a2066696e616c2074696d65206973206265666f72652063757272656e742074696d65546f6b656e56657374696e673a2062656e656669636961727920697320746865207a65726f2061646472657373546f6b656e56657374696e673a20636c696666206973206c6f6e676572207468616e206475726174696f6e000000000000000000000000ac758bae93f7cef39d041384640550ff65cc5f8a00000000000000000000000000000000000000000000000000000000617f907000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001e133800000000000000000000000000000000000000000000000000000000000000001
Deployed ByteCode Sourcemap
7384:5955:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;10503:85;;;:::i;:::-;;;;;;;;;;;;;;;;;;;10189:79;;;:::i;:::-;;;;;;;;;;;;;;;;;;;11238:372;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;10019:91;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;2781:148;;;:::i;:::-;;11837:515;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;10664:84;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;2130:87;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;10824:105;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;10347:79;;;:::i;:::-;;;;;;;;;;;;;;;;;;;3084:244;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;11001:100;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;10503:85;10544:7;10571:9;;10564:16;;10503:85;:::o;10189:79::-;10227:7;10254:6;;10247:13;;10189:79;:::o;11238:372::-;11287:18;11308:24;11326:5;11308:17;:24::i;:::-;11287:45;;11366:1;11353:10;:14;11345:58;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;11444:41;11474:10;11444:9;:25;11462:5;11444:25;;;;;;;;;;;;;;;;:29;;:41;;;;:::i;:::-;11416:9;:25;11434:5;11416:25;;;;;;;;;;;;;;;:69;;;;11498:44;11517:12;;;;;;;;;;;11531:10;11498:5;:18;;;;:44;;;;;:::i;:::-;11560:42;11583:5;11591:10;11560:42;;;;;;;;;;;;;;;;;;;;;;;;;;11238:372;;:::o;10019:91::-;10063:7;10090:12;;;;;;;;;;;10083:19;;10019:91;:::o;2781:148::-;2361:12;:10;:12::i;:::-;2350:23;;:7;:5;:7::i;:::-;:23;;;2342:68;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2888:1:::1;2851:40;;2872:6;::::0;::::1;;;;;;;;2851:40;;;;;;;;;;;;2919:1;2902:6:::0;::::1;:19;;;;;;;;;;;;;;;;;;2781:148::o:0;11837:515::-;2361:12;:10;:12::i;:::-;2350:23;;:7;:5;:7::i;:::-;:23;;;2342:68;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;11903:10:::1;;;;;;;;;;;11895:50;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;11965:8;:24;11982:5;11965:24;;;;;;;;;;;;;;;;;;;;;;;;;11964:25;11956:73;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12042:15;12060:5;:15;;;12084:4;12060:30;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;12042:48;;12103:18;12124:24;12142:5;12124:17;:24::i;:::-;12103:45;;12159:14;12176:23;12188:10;12176:7;:11;;:23;;;;:::i;:::-;12159:40;;12239:4;12212:8;:24;12229:5;12212:24;;;;;;;;;;;;;;;;:31;;;;;;;;;;;;;;;;;;12256:35;12275:7;:5;:7::i;:::-;12284:6;12256:5;:18;;;;:35;;;;;:::i;:::-;12309;12337:5;12309:35;;;;;;;;;;;;;;;;;;;;2421:1;;;11837:515:::0;:::o;10664:84::-;10706:4;10730:10;;;;;;;;;;;10723:17;;10664:84;:::o;2130:87::-;2176:7;2203:6;;;;;;;;;;;2196:13;;2130:87;:::o;10824:105::-;10878:7;10905:9;:16;10915:5;10905:16;;;;;;;;;;;;;;;;10898:23;;10824:105;;;:::o;10347:79::-;10385:7;10412:6;;10405:13;;10347:79;:::o;3084:244::-;2361:12;:10;:12::i;:::-;2350:23;;:7;:5;:7::i;:::-;:23;;;2342:68;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3193:1:::1;3173:22;;:8;:22;;;;3165:73;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3283:8;3254:38;;3275:6;::::0;::::1;;;;;;;;3254:38;;;;;;;;;;;;3312:8;3303:6;::::0;:17:::1;;;;;;;;;;;;;;;;;;3084:244:::0;:::o;11001:100::-;11054:4;11078:8;:15;11087:5;11078:15;;;;;;;;;;;;;;;;;;;;;;;;;11071:22;;11001:100;;;:::o;6001:139::-;6059:9;6104:1;6098;6094;:5;6090:9;;;6089:16;;6081:51;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6001:139;;;;:::o;12522:149::-;12585:7;12612:51;12637:9;:25;12655:5;12637:25;;;;;;;;;;;;;;;;12612:20;12626:5;12612:13;:20::i;:::-;:24;;:51;;;;:::i;:::-;12605:58;;12522:149;;;:::o;5040:336::-;5159:12;5173:17;5202:5;5194:19;;5237:10;5249:2;5253:6;5214:46;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5194:67;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5158:103;;;;5280:7;:57;;;;;5307:1;5292:4;:11;:16;:44;;;;5323:4;5312:24;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5292:44;5280:57;5272:96;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5040:336;;;;;:::o;667:106::-;720:15;755:10;748:17;;667:106;:::o;6148:136::-;6206:9;6251:1;6245;6241;:5;6237:9;;;6236:16;;6228:48;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6148:136;;;;:::o;12812:524::-;12871:7;12891:22;12916:5;:15;;;12940:4;12916:30;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12891:55;;12957:20;12980:45;12999:9;:25;13017:5;12999:25;;;;;;;;;;;;;;;;12980:14;:18;;:45;;;;:::i;:::-;12957:68;;13060:6;;13042:15;:24;13038:291;;;13090:1;13083:8;;;;;;13038:291;13132:21;13143:9;;13132:6;;:10;;:21;;;;:::i;:::-;13113:15;:40;;:68;;;;13157:8;:24;13174:5;13157:24;;;;;;;;;;;;;;;;;;;;;;;;;13113:68;13109:220;;;13205:12;13198:19;;;;;;13109:220;13257:60;13307:9;;13257:45;13274:27;13294:6;;13274:15;:19;;:27;;;;:::i;:::-;13257:12;:16;;:45;;;;:::i;:::-;:49;;:60;;;;:::i;:::-;13250:67;;;;12812:524;;;;:::o;6292:153::-;6350:9;6385:1;6380;:6;:30;;;;6409:1;6404;6399;6395;:5;6391:9;;;6390:15;;;;;;:20;6380:30;6372:65;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6292:153;;;;:::o;6453:147::-;6511:9;6545:1;6541;:5;6533:39;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6591:1;6587;:5;;;;;;6583:9;;6453:147;;;;:::o
Swarm Source
ipfs://e871d6516f2907337c00eb244b4f3b968eff3b8ce62a380223a2d2e4a336e32f
Age | Block | Fee Address | BC Fee Address | Voting Power | Jailed | Incoming |
---|
Make sure to use the "Vote Down" button for any spammy posts, and the "Vote Up" for interesting conversations.