Feature Tip: Add private address tag to any address under My Name Tag !
ERC-20
Overview
Max Total Supply
55,114,027.166666666666666675 buOLAS
Holders
0
Total Transfers
-
Market
Onchain Market Cap
$0.00
Circulating Supply Market Cap
-
Other Info
Token Contract (WITH 18 Decimals)
Loading...
Loading
Loading...
Loading
Loading...
Loading
# | Exchange | Pair | Price | 24H Volume | % Volume |
---|
Contract Source Code Verified (Exact Match)
Contract Name:
buOLAS
Compiler Version
v0.8.15+commit.e14f2714
Optimization Enabled:
Yes with 1000000 runs
Other Settings:
default evmVersion
Contract Source Code (Solidity Standard Json-Input format)
// SPDX-License-Identifier: MIT pragma solidity ^0.8.15; import "@openzeppelin/contracts/token/ERC20/IERC20.sol"; import "@openzeppelin/contracts/utils/introspection/IERC165.sol"; import "./interfaces/IErrors.sol"; /// @title Burnable Locked OLAS Token - OLAS burnable contract /// @author Aleksandr Kuperman - <[email protected]> // Interface for IOLAS burn functionality interface IOLAS { /// @dev Burns OLAS tokens. /// @param amount OLAS token amount to burn. function burn(uint256 amount) external; } // Struct for storing balance, lock and unlock time // The struct size is one storage slot of uint256 (96 + 96 + 32 + 32) struct LockedBalance { // Token amount locked. Initial OLAS cap is 1 bn tokens, or 1e27. // After 10 years, the inflation rate is 2% per year. It would take 220+ years to reach 2^96 - 1 uint96 totalAmount; // Token amount transferred to its owner. It is of the value of at most the total amount locked uint96 transferredAmount; // Lock time start uint32 startTime; // Lock end time // 2^32 - 1 is enough to count 136 years starting from the year of 1970. This counter is safe until the year of 2106 uint32 endTime; } /// @notice This token supports the ERC20 interface specifications except for transfers. contract buOLAS is IErrors, IERC20, IERC165 { event Lock(address indexed account, uint256 amount, uint256 startTime, uint256 endTime); event Withdraw(address indexed account, uint256 amount, uint256 ts); event Revoke(address indexed account, uint256 amount, uint256 ts); event Burn(address indexed account, uint256 amount, uint256 ts); event Supply(uint256 previousSupply, uint256 currentSupply); event OwnerUpdated(address indexed owner); // Locking step time uint32 internal constant STEP_TIME = 365 * 86400; // Maximum number of steps uint32 internal constant MAX_NUM_STEPS = 10; // Total token supply uint256 public supply; // Number of decimals uint8 public constant decimals = 18; // Token address address public immutable token; // Owner address address public owner; // Mapping of account address => LockedBalance mapping(address => LockedBalance) public mapLockedBalances; // Token name string public name; // Token symbol string public symbol; /// @dev Contract constructor /// @param _token Token address. /// @param _name Token name. /// @param _symbol Token symbol. constructor(address _token, string memory _name, string memory _symbol) { token = _token; name = _name; symbol = _symbol; owner = msg.sender; } /// @dev Changes the owner address. /// @param newOwner Address of a new owner. function changeOwner(address newOwner) external { if (msg.sender != owner) { revert OwnerOnly(msg.sender, owner); } if (newOwner == address(0)) { revert ZeroAddress(); } owner = newOwner; emit OwnerUpdated(newOwner); } /// @dev Deposits `amount` tokens for the `account` and locks for the `numSteps` time periods. /// @notice Tokens are taken from `msg.sender`'s balance. /// @param account Target account address. /// @param amount Amount to deposit. /// @param numSteps Number of locking steps. function createLockFor(address account, uint256 amount, uint256 numSteps) external { // Check if the account is zero if (account == address(0)) { revert ZeroAddress(); } // Check if the amount is zero if (amount == 0) { revert ZeroValue(); } // The locking makes sense for one step or more only if (numSteps == 0) { revert ZeroValue(); } // Check the maximum number of steps if (numSteps > MAX_NUM_STEPS) { revert Overflow(numSteps, MAX_NUM_STEPS); } // Lock time is equal to the number of fixed steps multiply on a step time uint256 unlockTime = block.timestamp + uint256(STEP_TIME) * numSteps; // Max of 2^32 - 1 value, the counter is safe until the year of 2106 if (unlockTime > type(uint32).max) { revert Overflow(unlockTime, type(uint32).max); } // After 10 years, the inflation rate is 2% per year. It would take 220+ years to reach 2^96 - 1 total supply if (amount > type(uint96).max) { revert Overflow(amount, type(uint96).max); } LockedBalance memory lockedBalance = mapLockedBalances[account]; // The locked balance must be zero in order to start the lock if (lockedBalance.totalAmount > 0) { revert LockedValueNotZero(account, lockedBalance.totalAmount); } // Store the locked information for the account lockedBalance.startTime = uint32(block.timestamp); lockedBalance.endTime = uint32(unlockTime); lockedBalance.totalAmount = uint96(amount); mapLockedBalances[account] = lockedBalance; // Calculate total supply uint256 supplyBefore = supply; uint256 supplyAfter; // Cannot overflow because we do not add more tokens than the OLAS supply unchecked { supplyAfter = supplyBefore + amount; supply = supplyAfter; } // OLAS is a solmate-based ERC20 token with optimized transferFrom() that either returns true or reverts IERC20(token).transferFrom(msg.sender, address(this), amount); emit Lock(account, amount, block.timestamp, unlockTime); emit Supply(supplyBefore, supplyAfter); } /// @dev Releases all matured tokens for `msg.sender`. function withdraw() external { LockedBalance memory lockedBalance = mapLockedBalances[msg.sender]; // If the balances are still active and not fully withdrawn, start time must be greater than zero if (lockedBalance.startTime > 0) { // Calculate the amount to release uint256 amount = _releasableAmount(lockedBalance); // Check if at least one locking step has passed if (amount == 0) { revert LockNotExpired(msg.sender, lockedBalance.endTime, block.timestamp); } uint256 supplyBefore = supply; uint256 supplyAfter = supplyBefore; // End time is greater than zero if withdraw was not fully completed and `revoke` was not called on the account if (lockedBalance.endTime > 0) { unchecked { // Update the account locked amount. // Cannot practically overflow since the amount to release is smaller than the locked amount lockedBalance.transferredAmount += uint96(amount); } // The balance is fully unlocked. Released amount must be equal to the locked one if ((lockedBalance.transferredAmount + 1) > lockedBalance.totalAmount) { mapLockedBalances[msg.sender] = LockedBalance(0, 0, 0, 0); } else { mapLockedBalances[msg.sender] = lockedBalance; } } else { // This means revoke has been called on this account and some tokens must be burned uint256 amountBurn = uint256(lockedBalance.totalAmount); // Burn revoked tokens if (amountBurn > 0) { IOLAS(token).burn(amountBurn); // Update total supply unchecked { // Amount to burn cannot be bigger than the supply before the burn supplyAfter = supplyBefore - amountBurn; } emit Burn(msg.sender, amountBurn, block.timestamp); } // Set all the data to zero mapLockedBalances[msg.sender] = LockedBalance(0, 0, 0, 0); } // The amount cannot be bigger than the total supply unchecked { supplyAfter -= amount; supply = supplyAfter; } emit Withdraw(msg.sender, amount, block.timestamp); emit Supply(supplyBefore, supplyAfter); // OLAS is a solmate-based ERC20 token with optimized transfer() that either returns true or reverts IERC20(token).transfer(msg.sender, amount); } } /// @dev Revoke and burn all non-matured tokens from the `account`. /// @param accounts Account addresses. function revoke(address[] memory accounts) external { // Check for the ownership if (owner != msg.sender) { revert OwnerOnly(msg.sender, owner); } for (uint256 i = 0; i < accounts.length; ++i) { address account = accounts[i]; LockedBalance memory lockedBalance = mapLockedBalances[account]; // Get the amount to release uint256 amountRelease = _releasableAmount(lockedBalance); // Amount locked now represents the burn amount, which can not become less than zero unchecked { lockedBalance.totalAmount -= (uint96(amountRelease) + lockedBalance.transferredAmount); } // This is the release amount that will be transferred to the account when they withdraw lockedBalance.transferredAmount = uint96(amountRelease); // Termination state of the revoke procedure lockedBalance.endTime = 0; // Update the account data mapLockedBalances[account] = lockedBalance; emit Revoke(account, uint256(lockedBalance.totalAmount), block.timestamp); } } /// @dev Gets the account locking balance. /// @param account Account address. /// @return balance Account balance. function balanceOf(address account) public view override returns (uint256 balance) { LockedBalance memory lockedBalance = mapLockedBalances[account]; // If the end is equal 0, this balance is either left after revoke or expired if (lockedBalance.endTime == 0) { // The maximum balance in this case is the released amount value balance = uint256(lockedBalance.transferredAmount); } else { // Otherwise the balance is the difference between locked and released amounts balance = uint256(lockedBalance.totalAmount - lockedBalance.transferredAmount); } } /// @dev Gets total token supply. /// @return Total token supply. function totalSupply() public view override returns (uint256) { return supply; } /// @dev Gets the account releasable amount. /// @param account Account address. /// @return amount Amount to release. function releasableAmount(address account) external view returns (uint256 amount) { LockedBalance memory lockedBalance = mapLockedBalances[account]; amount = _releasableAmount(lockedBalance); } /// @dev Gets the account releasable amount. /// @param lockedBalance Account locked balance struct. /// @return amount Amount to release. function _releasableAmount(LockedBalance memory lockedBalance) private view returns (uint256 amount) { // If the end is equal 0, this balance is either left after revoke or expired if (lockedBalance.endTime == 0) { return lockedBalance.transferredAmount; } // Number of steps uint32 numSteps; // Current locked time uint32 releasedSteps; // Time in the future will be greater than the start time unchecked { numSteps = (lockedBalance.endTime - lockedBalance.startTime) / STEP_TIME; releasedSteps = (uint32(block.timestamp) - lockedBalance.startTime) / STEP_TIME; } // If the number of release steps is greater or equal to the number of steps, all the available tokens are unlocked if ((releasedSteps + 1) > numSteps) { // Return the remainder from the last release since it's the last one unchecked { amount = uint256(lockedBalance.totalAmount - lockedBalance.transferredAmount); } } else { // Calculate the amount to release unchecked { amount = uint256(lockedBalance.totalAmount * releasedSteps / numSteps); amount -= uint256(lockedBalance.transferredAmount); } } } /// @dev Gets the `account`'s locking end time. /// @param account Account address. /// @return unlockTime Maturity time. function lockedEnd(address account) external view returns (uint256 unlockTime) { unlockTime = uint256(mapLockedBalances[account].endTime); } /// @dev Gets information about the interface support. /// @param interfaceId A specified interface Id. /// @return True if this contract implements the interface defined by interfaceId. function supportsInterface(bytes4 interfaceId) public view virtual override returns (bool) { return interfaceId == type(IERC20).interfaceId || interfaceId == type(IERC165).interfaceId; } /// @dev Reverts the transfer of this token. function transfer(address to, uint256 amount) external virtual override returns (bool) { revert NonTransferable(address(this)); } /// @dev Reverts the approval of this token. function approve(address spender, uint256 amount) external virtual override returns (bool) { revert NonTransferable(address(this)); } /// @dev Reverts the transferFrom of this token. function transferFrom(address from, address to, uint256 amount) external virtual override returns (bool) { revert NonTransferable(address(this)); } /// @dev Reverts the allowance of this token. function allowance(address owner, address spender) external view virtual override returns (uint256) { revert NonTransferable(address(this)); } }
// SPDX-License-Identifier: MIT // OpenZeppelin Contracts (last updated v4.6.0) (token/ERC20/IERC20.sol) pragma solidity ^0.8.0; /** * @dev Interface of the ERC20 standard as defined in the EIP. */ interface IERC20 { /** * @dev Emitted when `value` tokens are moved from one account (`from`) to * another (`to`). * * Note that `value` may be zero. */ event Transfer(address indexed from, address indexed to, uint256 value); /** * @dev Emitted when the allowance of a `spender` for an `owner` is set by * a call to {approve}. `value` is the new allowance. */ event Approval(address indexed owner, address indexed spender, uint256 value); /** * @dev Returns the amount of tokens in existence. */ function totalSupply() external view returns (uint256); /** * @dev Returns the amount of tokens owned by `account`. */ function balanceOf(address account) external view returns (uint256); /** * @dev Moves `amount` tokens from the caller's account to `to`. * * Returns a boolean value indicating whether the operation succeeded. * * Emits a {Transfer} event. */ function transfer(address to, uint256 amount) external returns (bool); /** * @dev Returns the remaining number of tokens that `spender` will be * allowed to spend on behalf of `owner` through {transferFrom}. This is * zero by default. * * This value changes when {approve} or {transferFrom} are called. */ function allowance(address owner, address spender) external view returns (uint256); /** * @dev Sets `amount` as the allowance of `spender` over the caller's tokens. * * Returns a boolean value indicating whether the operation succeeded. * * IMPORTANT: Beware that changing an allowance with this method brings the risk * that someone may use both the old and the new allowance by unfortunate * transaction ordering. One possible solution to mitigate this race * condition is to first reduce the spender's allowance to 0 and set the * desired value afterwards: * https://github.com/ethereum/EIPs/issues/20#issuecomment-263524729 * * Emits an {Approval} event. */ function approve(address spender, uint256 amount) external returns (bool); /** * @dev Moves `amount` tokens from `from` to `to` using the * allowance mechanism. `amount` is then deducted from the caller's * allowance. * * Returns a boolean value indicating whether the operation succeeded. * * Emits a {Transfer} event. */ function transferFrom( address from, address to, uint256 amount ) external returns (bool); }
// SPDX-License-Identifier: MIT // OpenZeppelin Contracts v4.4.1 (utils/introspection/IERC165.sol) pragma solidity ^0.8.0; /** * @dev Interface of the ERC165 standard, as defined in the * https://eips.ethereum.org/EIPS/eip-165[EIP]. * * Implementers can declare support of contract interfaces, which can then be * queried by others ({ERC165Checker}). * * For an implementation, see {ERC165}. */ interface IERC165 { /** * @dev Returns true if this contract implements the interface defined by * `interfaceId`. See the corresponding * https://eips.ethereum.org/EIPS/eip-165#how-interfaces-are-identified[EIP section] * to learn more about how these ids are created. * * This function call must use less than 30 000 gas. */ function supportsInterface(bytes4 interfaceId) external view returns (bool); }
// SPDX-License-Identifier: MIT pragma solidity ^0.8.15; /// @dev Errors. interface IErrors { /// @dev Only `owner` has a privilege, but the `sender` was provided. /// @param sender Sender address. /// @param owner Required sender address as an owner. error OwnerOnly(address sender, address owner); /// @dev Provided zero address. error ZeroAddress(); /// @dev Zero value when it has to be different from zero. error ZeroValue(); /// @dev Non-zero value when it has to be zero. error NonZeroValue(); /// @dev Wrong length of two arrays. /// @param numValues1 Number of values in a first array. /// @param numValues2 Numberf of values in a second array. error WrongArrayLength(uint256 numValues1, uint256 numValues2); /// @dev Value overflow. /// @param provided Overflow value. /// @param max Maximum possible value. error Overflow(uint256 provided, uint256 max); /// @dev Token is non-transferable. /// @param account Token address. error NonTransferable(address account); /// @dev Token is non-delegatable. /// @param account Token address. error NonDelegatable(address account); /// @dev Insufficient token allowance. /// @param provided Provided amount. /// @param expected Minimum expected amount. error InsufficientAllowance(uint256 provided, uint256 expected); /// @dev No existing lock value is found. /// @param account Address that is checked for the locked value. error NoValueLocked(address account); /// @dev Locked value is not zero. /// @param account Address that is checked for the locked value. /// @param amount Locked amount. error LockedValueNotZero(address account, uint256 amount); /// @dev Value lock is expired. /// @param account Address that is checked for the locked value. /// @param deadline The lock expiration deadline. /// @param curTime Current timestamp. error LockExpired(address account, uint256 deadline, uint256 curTime); /// @dev Value lock is not expired. /// @param account Address that is checked for the locked value. /// @param deadline The lock expiration deadline. /// @param curTime Current timestamp. error LockNotExpired(address account, uint256 deadline, uint256 curTime); /// @dev Provided unlock time is incorrect. /// @param account Address that is checked for the locked value. /// @param minUnlockTime Minimal unlock time that can be set. /// @param providedUnlockTime Provided unlock time. error UnlockTimeIncorrect(address account, uint256 minUnlockTime, uint256 providedUnlockTime); /// @dev Provided unlock time is bigger than the maximum allowed. /// @param account Address that is checked for the locked value. /// @param maxUnlockTime Max unlock time that can be set. /// @param providedUnlockTime Provided unlock time. error MaxUnlockTimeReached(address account, uint256 maxUnlockTime, uint256 providedUnlockTime); /// @dev Provided block number is incorrect (has not been processed yet). /// @param providedBlockNumber Provided block number. /// @param actualBlockNumber Actual block number. error WrongBlockNumber(uint256 providedBlockNumber, uint256 actualBlockNumber); }
{ "optimizer": { "enabled": true, "runs": 1000000 }, "outputSelection": { "*": { "*": [ "evm.bytecode", "evm.deployedBytecode", "devdoc", "userdoc", "metadata", "abi" ] } }, "metadata": { "useLiteralContent": true }, "libraries": {} }
Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
[{"inputs":[{"internalType":"address","name":"_token","type":"address"},{"internalType":"string","name":"_name","type":"string"},{"internalType":"string","name":"_symbol","type":"string"}],"stateMutability":"nonpayable","type":"constructor"},{"inputs":[{"internalType":"uint256","name":"provided","type":"uint256"},{"internalType":"uint256","name":"expected","type":"uint256"}],"name":"InsufficientAllowance","type":"error"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"uint256","name":"deadline","type":"uint256"},{"internalType":"uint256","name":"curTime","type":"uint256"}],"name":"LockExpired","type":"error"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"uint256","name":"deadline","type":"uint256"},{"internalType":"uint256","name":"curTime","type":"uint256"}],"name":"LockNotExpired","type":"error"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"LockedValueNotZero","type":"error"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"uint256","name":"maxUnlockTime","type":"uint256"},{"internalType":"uint256","name":"providedUnlockTime","type":"uint256"}],"name":"MaxUnlockTimeReached","type":"error"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"NoValueLocked","type":"error"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"NonDelegatable","type":"error"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"NonTransferable","type":"error"},{"inputs":[],"name":"NonZeroValue","type":"error"},{"inputs":[{"internalType":"uint256","name":"provided","type":"uint256"},{"internalType":"uint256","name":"max","type":"uint256"}],"name":"Overflow","type":"error"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"owner","type":"address"}],"name":"OwnerOnly","type":"error"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"uint256","name":"minUnlockTime","type":"uint256"},{"internalType":"uint256","name":"providedUnlockTime","type":"uint256"}],"name":"UnlockTimeIncorrect","type":"error"},{"inputs":[{"internalType":"uint256","name":"numValues1","type":"uint256"},{"internalType":"uint256","name":"numValues2","type":"uint256"}],"name":"WrongArrayLength","type":"error"},{"inputs":[{"internalType":"uint256","name":"providedBlockNumber","type":"uint256"},{"internalType":"uint256","name":"actualBlockNumber","type":"uint256"}],"name":"WrongBlockNumber","type":"error"},{"inputs":[],"name":"ZeroAddress","type":"error"},{"inputs":[],"name":"ZeroValue","type":"error"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"account","type":"address"},{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"ts","type":"uint256"}],"name":"Burn","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"account","type":"address"},{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"startTime","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"endTime","type":"uint256"}],"name":"Lock","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"}],"name":"OwnerUpdated","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"account","type":"address"},{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"ts","type":"uint256"}],"name":"Revoke","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"previousSupply","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"currentSupply","type":"uint256"}],"name":"Supply","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"account","type":"address"},{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"ts","type":"uint256"}],"name":"Withdraw","type":"event"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"balance","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"changeOwner","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"},{"internalType":"uint256","name":"numSteps","type":"uint256"}],"name":"createLockFor","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"lockedEnd","outputs":[{"internalType":"uint256","name":"unlockTime","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"mapLockedBalances","outputs":[{"internalType":"uint96","name":"totalAmount","type":"uint96"},{"internalType":"uint96","name":"transferredAmount","type":"uint96"},{"internalType":"uint32","name":"startTime","type":"uint32"},{"internalType":"uint32","name":"endTime","type":"uint32"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"releasableAmount","outputs":[{"internalType":"uint256","name":"amount","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address[]","name":"accounts","type":"address[]"}],"name":"revoke","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"supply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bytes4","name":"interfaceId","type":"bytes4"}],"name":"supportsInterface","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"token","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"withdraw","outputs":[],"stateMutability":"nonpayable","type":"function"}]
Contract Creation Code
60a06040523480156200001157600080fd5b50604051620020c1380380620020c1833981016040819052620000349162000148565b6001600160a01b03831660805260036200004f838262000261565b5060046200005e828262000261565b5050600180546001600160a01b03191633179055506200032d9050565b634e487b7160e01b600052604160045260246000fd5b600082601f830112620000a357600080fd5b81516001600160401b0380821115620000c057620000c06200007b565b604051601f8301601f19908116603f01168101908282118183101715620000eb57620000eb6200007b565b816040528381526020925086838588010111156200010857600080fd5b600091505b838210156200012c57858201830151818301840152908201906200010d565b838211156200013e5760008385830101525b9695505050505050565b6000806000606084860312156200015e57600080fd5b83516001600160a01b03811681146200017657600080fd5b60208501519093506001600160401b03808211156200019457600080fd5b620001a28783880162000091565b93506040860151915080821115620001b957600080fd5b50620001c88682870162000091565b9150509250925092565b600181811c90821680620001e757607f821691505b6020821081036200020857634e487b7160e01b600052602260045260246000fd5b50919050565b601f8211156200025c57600081815260208120601f850160051c81016020861015620002375750805b601f850160051c820191505b81811015620002585782815560010162000243565b5050505b505050565b81516001600160401b038111156200027d576200027d6200007b565b62000295816200028e8454620001d2565b846200020e565b602080601f831160018114620002cd5760008415620002b45750858301515b600019600386901b1c1916600185901b17855562000258565b600085815260208120601f198616915b82811015620002fe57888601518255948401946001909101908401620002dd565b50858210156200031d5787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b608051611d636200035e600039600081816103f301528181610d4e0152818161120201526114760152611d636000f3fe608060405234801561001057600080fd5b506004361061016c5760003560e01c8063313ce567116100cd57806395d89b4111610081578063a9059cbb11610066578063a9059cbb146101da578063dd62ed3e146103e0578063fc0c546a146103ee57600080fd5b806395d89b41146103c5578063a6f9dae1146103cd57600080fd5b80634deafcae116100b25780634deafcae1461031157806370a082311461036d5780638da5cb5b1461038057600080fd5b8063313ce567146102ef5780633ccfd60b1461030957600080fd5b80631726cbc81161012457806318b213481161010957806318b213481461020857806323b872dd146102ce57806329b55ca7146102dc57600080fd5b80631726cbc8146101ed57806318160ddd1461020057600080fd5b806305f203d91161015557806305f203d9146101b057806306fdde03146101c5578063095ea7b3146101da57600080fd5b806301ffc9a714610171578063047fc9aa14610199575b600080fd5b61018461017f366004611851565b610415565b60405190151581526020015b60405180910390f35b6101a260005481565b604051908152602001610190565b6101c36101be3660046118eb565b6104ae565b005b6101cd610781565b60405161019091906119ce565b6101846101e8366004611a41565b61080f565b6101a26101fb366004611a6b565b610846565b6000546101a2565b610292610216366004611a6b565b6002602052600090815260409020546bffffffffffffffffffffffff808216916c0100000000000000000000000081049091169063ffffffff780100000000000000000000000000000000000000000000000082048116917c010000000000000000000000000000000000000000000000000000000090041684565b604080516bffffffffffffffffffffffff958616815294909316602085015263ffffffff91821692840192909252166060820152608001610190565b6101846101e8366004611a86565b6101c36102ea366004611ac2565b610903565b6102f7601281565b60405160ff9091168152602001610190565b6101c3610e56565b6101a261031f366004611a6b565b73ffffffffffffffffffffffffffffffffffffffff166000908152600260205260409020547c0100000000000000000000000000000000000000000000000000000000900463ffffffff1690565b6101a261037b366004611a6b565b611500565b6001546103a09073ffffffffffffffffffffffffffffffffffffffff1681565b60405173ffffffffffffffffffffffffffffffffffffffff9091168152602001610190565b6101cd6115f7565b6101c36103db366004611a6b565b611604565b6101a26101e8366004611af5565b6103a07f000000000000000000000000000000000000000000000000000000000000000081565b60007fffffffff0000000000000000000000000000000000000000000000000000000082167f36372b070000000000000000000000000000000000000000000000000000000014806104a857507fffffffff0000000000000000000000000000000000000000000000000000000082167f01ffc9a700000000000000000000000000000000000000000000000000000000145b92915050565b60015473ffffffffffffffffffffffffffffffffffffffff163314610526576001546040517fa43d6ada00000000000000000000000000000000000000000000000000000000815233600482015273ffffffffffffffffffffffffffffffffffffffff90911660248201526044015b60405180910390fd5b60005b815181101561077d57600082828151811061054657610546611b28565b60209081029190910181015173ffffffffffffffffffffffffffffffffffffffff81166000908152600283526040808220815160808101835290546bffffffffffffffffffffffff80821683526c010000000000000000000000008204169582019590955263ffffffff780100000000000000000000000000000000000000000000000086048116928201929092527c010000000000000000000000000000000000000000000000000000000090940416606084015290925061060882611733565b60208381018051855190840190036bffffffffffffffffffffffff9081168652838116825260006060870181815273ffffffffffffffffffffffffffffffffffffffff891680835260028652604092839020895181549651858c015194519187167fffffffffffffffff00000000000000000000000000000000000000000000000090981688176c0100000000000000000000000091909716029590951777ffffffffffffffffffffffffffffffffffffffffffffffff16780100000000000000000000000000000000000000000000000063ffffffff948516027bffffffffffffffffffffffffffffffffffffffffffffffffffffffff16177c01000000000000000000000000000000000000000000000000000000009390951692909202939093179055805192835242938301939093529293507f437a05d5b9037b4fe16f9564c21528b3f978b6a015269140722644f407e943cd910160405180910390a25050508061077690611b86565b9050610529565b5050565b6003805461078e90611bbe565b80601f01602080910402602001604051908101604052809291908181526020018280546107ba90611bbe565b80156108075780601f106107dc57610100808354040283529160200191610807565b820191906000526020600020905b8154815290600101906020018083116107ea57829003601f168201915b505050505081565b6040517f9c21e7b200000000000000000000000000000000000000000000000000000000815230600482015260009060240161051d565b73ffffffffffffffffffffffffffffffffffffffff81166000908152600260209081526040808320815160808101835290546bffffffffffffffffffffffff80821683526c010000000000000000000000008204169382019390935263ffffffff780100000000000000000000000000000000000000000000000084048116928201929092527c01000000000000000000000000000000000000000000000000000000009092041660608201526108fc81611733565b9392505050565b73ffffffffffffffffffffffffffffffffffffffff8316610950576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8160000361098a576040517f7c946ed700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b806000036109c4576040517f7c946ed700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600a811115610a09576040517f7ae5968500000000000000000000000000000000000000000000000000000000815260048101829052600a602482015260440161051d565b6000610a19826301e13380611c0b565b610a239042611c48565b905063ffffffff811115610a70576040517f7ae596850000000000000000000000000000000000000000000000000000000081526004810182905263ffffffff602482015260440161051d565b6bffffffffffffffffffffffff831115610acb576040517f7ae59685000000000000000000000000000000000000000000000000000000008152600481018490526bffffffffffffffffffffffff602482015260440161051d565b73ffffffffffffffffffffffffffffffffffffffff8416600090815260026020908152604091829020825160808101845290546bffffffffffffffffffffffff8082168084526c0100000000000000000000000083049091169383019390935263ffffffff780100000000000000000000000000000000000000000000000082048116948301949094527c01000000000000000000000000000000000000000000000000000000009004909216606083015215610be35780516040517f89bf64dd00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff871660048201526bffffffffffffffffffffffff909116602482015260440161051d565b63ffffffff4281166040838101918252848316606085019081526bffffffffffffffffffffffff888116865273ffffffffffffffffffffffffffffffffffffffff8a811660009081526002602090815285822089518154928b0151985196518a167c0100000000000000000000000000000000000000000000000000000000027bffffffffffffffffffffffffffffffffffffffffffffffffffffffff97909a167801000000000000000000000000000000000000000000000000029690961677ffffffffffffffffffffffffffffffffffffffffffffffff9886166c01000000000000000000000000027fffffffffffffffff000000000000000000000000000000000000000000000000909316969095169590951717959095169190911794909417905581548088019283905590517f23b872dd0000000000000000000000000000000000000000000000000000000081523360048201523060248201526044810188905290927f000000000000000000000000000000000000000000000000000000000000000016906323b872dd906064016020604051808303816000875af1158015610d97573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610dbb9190611c60565b506040805187815242602082015290810185905273ffffffffffffffffffffffffffffffffffffffff8816907f0e31f07bae79135368ff475cf6c7f6abb31e0fd731e03c18ad425bd9406cf0c09060600160405180910390a260408051838152602081018390527f5e2aa66efd74cce82b21852e317e5490d9ecc9e6bb953ae24d90851258cc2f5c910160405180910390a150505050505050565b33600090815260026020908152604091829020825160808101845290546bffffffffffffffffffffffff80821683526c010000000000000000000000008204169282019290925263ffffffff7801000000000000000000000000000000000000000000000000830481169382018490527c0100000000000000000000000000000000000000000000000000000000909204909116606082015290156114fd576000610f0082611733565b905080600003610f565760608201516040517fab0246b300000000000000000000000000000000000000000000000000000000815233600482015263ffffffff909116602482015242604482015260640161051d565b6000546060830151819063ffffffff16156111bd576020840180516bffffffffffffffffffffffff90850181169182905285511690610f96906001611c82565b6bffffffffffffffffffffffff1611156110c057604080516080810182526000808252602080830182815283850183815260608501848152338552600290935294909220925183549251945191516bffffffffffffffffffffffff9182167fffffffffffffffff000000000000000000000000000000000000000000000000909416939093176c0100000000000000000000000091909516029390931777ffffffffffffffffffffffffffffffffffffffffffffffff16780100000000000000000000000000000000000000000000000063ffffffff948516027bffffffffffffffffffffffffffffffffffffffffffffffffffffffff16177c010000000000000000000000000000000000000000000000000000000093909116929092029190911790556113c6565b33600090815260026020908152604091829020865181549288015193880151606089015163ffffffff9081167c0100000000000000000000000000000000000000000000000000000000027bffffffffffffffffffffffffffffffffffffffffffffffffffffffff919092167801000000000000000000000000000000000000000000000000021677ffffffffffffffffffffffffffffffffffffffffffffffff6bffffffffffffffffffffffff9687166c01000000000000000000000000027fffffffffffffffff00000000000000000000000000000000000000000000000090961696909316959095179390931716929092171790556113c6565b83516bffffffffffffffffffffffff1680156112b3576040517f42966c68000000000000000000000000000000000000000000000000000000008152600481018290527f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16906342966c6890602401600060405180830381600087803b15801561125b57600080fd5b505af115801561126f573d6000803e3d6000fd5b50506040805184815242602082015284870395503393507f49995e5dd6158cf69ad3e9777c46755a1a826a446c6416992167462dad033b2a92500160405180910390a25b50604080516080810182526000808252602080830182815283850183815260608501848152338552600290935294909220925183549251945191516bffffffffffffffffffffffff9182167fffffffffffffffff000000000000000000000000000000000000000000000000909416939093176c0100000000000000000000000091909516029390931777ffffffffffffffffffffffffffffffffffffffffffffffff16780100000000000000000000000000000000000000000000000063ffffffff948516027bffffffffffffffffffffffffffffffffffffffffffffffffffffffff16177c010000000000000000000000000000000000000000000000000000000093909116929092029190911790555b82900360008190556040805184815242602082015233917ff279e6a1f5e320cca91135676d9cb6e44ca8a08c0b88342bcdb1144f6511b568910160405180910390a260408051838152602081018390527f5e2aa66efd74cce82b21852e317e5490d9ecc9e6bb953ae24d90851258cc2f5c910160405180910390a16040517fa9059cbb000000000000000000000000000000000000000000000000000000008152336004820152602481018490527f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff169063a9059cbb906044016020604051808303816000875af11580156114d4573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906114f89190611c60565b505050505b50565b73ffffffffffffffffffffffffffffffffffffffff81166000908152600260209081526040808320815160808101835290546bffffffffffffffffffffffff80821683526c010000000000000000000000008204169382019390935263ffffffff780100000000000000000000000000000000000000000000000084048116928201929092527c0100000000000000000000000000000000000000000000000000000000909204166060820181905282036115cf5780602001516bffffffffffffffffffffffff1691506115f1565b602081015181516115e09190611cb2565b6bffffffffffffffffffffffff1691505b50919050565b6004805461078e90611bbe565b60015473ffffffffffffffffffffffffffffffffffffffff163314611677576001546040517fa43d6ada00000000000000000000000000000000000000000000000000000000815233600482015273ffffffffffffffffffffffffffffffffffffffff909116602482015260440161051d565b73ffffffffffffffffffffffffffffffffffffffff81166116c4576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600180547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff83169081179091556040517f4ffd725fc4a22075e9ec71c59edf9c38cdeb588a91b24fc5b61388c5be41282b90600090a250565b6000816060015163ffffffff1660000361175d5750602001516bffffffffffffffffffffffff1690565b6000806301e1338063ffffffff16846040015185606001510363ffffffff168161178957611789611cdf565b0491506301e1338063ffffffff168460400151420363ffffffff16816117b1576117b1611cdf565b04905063ffffffff82166117c6826001611d0e565b63ffffffff1611156117f25783602001518460000151036bffffffffffffffffffffffff16925061184a565b8163ffffffff168163ffffffff168560000151026bffffffffffffffffffffffff168161182157611821611cdf565b046bffffffffffffffffffffffff16925083602001516bffffffffffffffffffffffff16830392505b5050919050565b60006020828403121561186357600080fd5b81357fffffffff00000000000000000000000000000000000000000000000000000000811681146108fc57600080fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b803573ffffffffffffffffffffffffffffffffffffffff811681146118e657600080fd5b919050565b600060208083850312156118fe57600080fd5b823567ffffffffffffffff8082111561191657600080fd5b818501915085601f83011261192a57600080fd5b81358181111561193c5761193c611893565b8060051b6040517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0603f8301168101818110858211171561197f5761197f611893565b60405291825284820192508381018501918883111561199d57600080fd5b938501935b828510156119c2576119b3856118c2565b845293850193928501926119a2565b98975050505050505050565b600060208083528351808285015260005b818110156119fb578581018301518582016040015282016119df565b81811115611a0d576000604083870101525b50601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016929092016040019392505050565b60008060408385031215611a5457600080fd5b611a5d836118c2565b946020939093013593505050565b600060208284031215611a7d57600080fd5b6108fc826118c2565b600080600060608486031215611a9b57600080fd5b611aa4846118c2565b9250611ab2602085016118c2565b9150604084013590509250925092565b600080600060608486031215611ad757600080fd5b611ae0846118c2565b95602085013595506040909401359392505050565b60008060408385031215611b0857600080fd5b611b11836118c2565b9150611b1f602084016118c2565b90509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8203611bb757611bb7611b57565b5060010190565b600181811c90821680611bd257607f821691505b6020821081036115f1577f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b6000817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0483118215151615611c4357611c43611b57565b500290565b60008219821115611c5b57611c5b611b57565b500190565b600060208284031215611c7257600080fd5b815180151581146108fc57600080fd5b60006bffffffffffffffffffffffff808316818516808303821115611ca957611ca9611b57565b01949350505050565b60006bffffffffffffffffffffffff83811690831681811015611cd757611cd7611b57565b039392505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b600063ffffffff808316818516808303821115611ca957611ca9611b5756fea2646970667358221220b49e30fdf93d061c00dd6077912ba82712d17f8f30d710e51088cd0c25b2e8bf64736f6c634300080f00330000000000000000000000000001a500a6b18995b03f44bb040a5ffc28e45cb0000000000000000000000000000000000000000000000000000000000000006000000000000000000000000000000000000000000000000000000000000000a000000000000000000000000000000000000000000000000000000000000000144275726e61626c65204c6f636b6564204f4c4153000000000000000000000000000000000000000000000000000000000000000000000000000000000000000662754f4c41530000000000000000000000000000000000000000000000000000
Deployed Bytecode
0x608060405234801561001057600080fd5b506004361061016c5760003560e01c8063313ce567116100cd57806395d89b4111610081578063a9059cbb11610066578063a9059cbb146101da578063dd62ed3e146103e0578063fc0c546a146103ee57600080fd5b806395d89b41146103c5578063a6f9dae1146103cd57600080fd5b80634deafcae116100b25780634deafcae1461031157806370a082311461036d5780638da5cb5b1461038057600080fd5b8063313ce567146102ef5780633ccfd60b1461030957600080fd5b80631726cbc81161012457806318b213481161010957806318b213481461020857806323b872dd146102ce57806329b55ca7146102dc57600080fd5b80631726cbc8146101ed57806318160ddd1461020057600080fd5b806305f203d91161015557806305f203d9146101b057806306fdde03146101c5578063095ea7b3146101da57600080fd5b806301ffc9a714610171578063047fc9aa14610199575b600080fd5b61018461017f366004611851565b610415565b60405190151581526020015b60405180910390f35b6101a260005481565b604051908152602001610190565b6101c36101be3660046118eb565b6104ae565b005b6101cd610781565b60405161019091906119ce565b6101846101e8366004611a41565b61080f565b6101a26101fb366004611a6b565b610846565b6000546101a2565b610292610216366004611a6b565b6002602052600090815260409020546bffffffffffffffffffffffff808216916c0100000000000000000000000081049091169063ffffffff780100000000000000000000000000000000000000000000000082048116917c010000000000000000000000000000000000000000000000000000000090041684565b604080516bffffffffffffffffffffffff958616815294909316602085015263ffffffff91821692840192909252166060820152608001610190565b6101846101e8366004611a86565b6101c36102ea366004611ac2565b610903565b6102f7601281565b60405160ff9091168152602001610190565b6101c3610e56565b6101a261031f366004611a6b565b73ffffffffffffffffffffffffffffffffffffffff166000908152600260205260409020547c0100000000000000000000000000000000000000000000000000000000900463ffffffff1690565b6101a261037b366004611a6b565b611500565b6001546103a09073ffffffffffffffffffffffffffffffffffffffff1681565b60405173ffffffffffffffffffffffffffffffffffffffff9091168152602001610190565b6101cd6115f7565b6101c36103db366004611a6b565b611604565b6101a26101e8366004611af5565b6103a07f0000000000000000000000000001a500a6b18995b03f44bb040a5ffc28e45cb081565b60007fffffffff0000000000000000000000000000000000000000000000000000000082167f36372b070000000000000000000000000000000000000000000000000000000014806104a857507fffffffff0000000000000000000000000000000000000000000000000000000082167f01ffc9a700000000000000000000000000000000000000000000000000000000145b92915050565b60015473ffffffffffffffffffffffffffffffffffffffff163314610526576001546040517fa43d6ada00000000000000000000000000000000000000000000000000000000815233600482015273ffffffffffffffffffffffffffffffffffffffff90911660248201526044015b60405180910390fd5b60005b815181101561077d57600082828151811061054657610546611b28565b60209081029190910181015173ffffffffffffffffffffffffffffffffffffffff81166000908152600283526040808220815160808101835290546bffffffffffffffffffffffff80821683526c010000000000000000000000008204169582019590955263ffffffff780100000000000000000000000000000000000000000000000086048116928201929092527c010000000000000000000000000000000000000000000000000000000090940416606084015290925061060882611733565b60208381018051855190840190036bffffffffffffffffffffffff9081168652838116825260006060870181815273ffffffffffffffffffffffffffffffffffffffff891680835260028652604092839020895181549651858c015194519187167fffffffffffffffff00000000000000000000000000000000000000000000000090981688176c0100000000000000000000000091909716029590951777ffffffffffffffffffffffffffffffffffffffffffffffff16780100000000000000000000000000000000000000000000000063ffffffff948516027bffffffffffffffffffffffffffffffffffffffffffffffffffffffff16177c01000000000000000000000000000000000000000000000000000000009390951692909202939093179055805192835242938301939093529293507f437a05d5b9037b4fe16f9564c21528b3f978b6a015269140722644f407e943cd910160405180910390a25050508061077690611b86565b9050610529565b5050565b6003805461078e90611bbe565b80601f01602080910402602001604051908101604052809291908181526020018280546107ba90611bbe565b80156108075780601f106107dc57610100808354040283529160200191610807565b820191906000526020600020905b8154815290600101906020018083116107ea57829003601f168201915b505050505081565b6040517f9c21e7b200000000000000000000000000000000000000000000000000000000815230600482015260009060240161051d565b73ffffffffffffffffffffffffffffffffffffffff81166000908152600260209081526040808320815160808101835290546bffffffffffffffffffffffff80821683526c010000000000000000000000008204169382019390935263ffffffff780100000000000000000000000000000000000000000000000084048116928201929092527c01000000000000000000000000000000000000000000000000000000009092041660608201526108fc81611733565b9392505050565b73ffffffffffffffffffffffffffffffffffffffff8316610950576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8160000361098a576040517f7c946ed700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b806000036109c4576040517f7c946ed700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600a811115610a09576040517f7ae5968500000000000000000000000000000000000000000000000000000000815260048101829052600a602482015260440161051d565b6000610a19826301e13380611c0b565b610a239042611c48565b905063ffffffff811115610a70576040517f7ae596850000000000000000000000000000000000000000000000000000000081526004810182905263ffffffff602482015260440161051d565b6bffffffffffffffffffffffff831115610acb576040517f7ae59685000000000000000000000000000000000000000000000000000000008152600481018490526bffffffffffffffffffffffff602482015260440161051d565b73ffffffffffffffffffffffffffffffffffffffff8416600090815260026020908152604091829020825160808101845290546bffffffffffffffffffffffff8082168084526c0100000000000000000000000083049091169383019390935263ffffffff780100000000000000000000000000000000000000000000000082048116948301949094527c01000000000000000000000000000000000000000000000000000000009004909216606083015215610be35780516040517f89bf64dd00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff871660048201526bffffffffffffffffffffffff909116602482015260440161051d565b63ffffffff4281166040838101918252848316606085019081526bffffffffffffffffffffffff888116865273ffffffffffffffffffffffffffffffffffffffff8a811660009081526002602090815285822089518154928b0151985196518a167c0100000000000000000000000000000000000000000000000000000000027bffffffffffffffffffffffffffffffffffffffffffffffffffffffff97909a167801000000000000000000000000000000000000000000000000029690961677ffffffffffffffffffffffffffffffffffffffffffffffff9886166c01000000000000000000000000027fffffffffffffffff000000000000000000000000000000000000000000000000909316969095169590951717959095169190911794909417905581548088019283905590517f23b872dd0000000000000000000000000000000000000000000000000000000081523360048201523060248201526044810188905290927f0000000000000000000000000001a500a6b18995b03f44bb040a5ffc28e45cb016906323b872dd906064016020604051808303816000875af1158015610d97573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610dbb9190611c60565b506040805187815242602082015290810185905273ffffffffffffffffffffffffffffffffffffffff8816907f0e31f07bae79135368ff475cf6c7f6abb31e0fd731e03c18ad425bd9406cf0c09060600160405180910390a260408051838152602081018390527f5e2aa66efd74cce82b21852e317e5490d9ecc9e6bb953ae24d90851258cc2f5c910160405180910390a150505050505050565b33600090815260026020908152604091829020825160808101845290546bffffffffffffffffffffffff80821683526c010000000000000000000000008204169282019290925263ffffffff7801000000000000000000000000000000000000000000000000830481169382018490527c0100000000000000000000000000000000000000000000000000000000909204909116606082015290156114fd576000610f0082611733565b905080600003610f565760608201516040517fab0246b300000000000000000000000000000000000000000000000000000000815233600482015263ffffffff909116602482015242604482015260640161051d565b6000546060830151819063ffffffff16156111bd576020840180516bffffffffffffffffffffffff90850181169182905285511690610f96906001611c82565b6bffffffffffffffffffffffff1611156110c057604080516080810182526000808252602080830182815283850183815260608501848152338552600290935294909220925183549251945191516bffffffffffffffffffffffff9182167fffffffffffffffff000000000000000000000000000000000000000000000000909416939093176c0100000000000000000000000091909516029390931777ffffffffffffffffffffffffffffffffffffffffffffffff16780100000000000000000000000000000000000000000000000063ffffffff948516027bffffffffffffffffffffffffffffffffffffffffffffffffffffffff16177c010000000000000000000000000000000000000000000000000000000093909116929092029190911790556113c6565b33600090815260026020908152604091829020865181549288015193880151606089015163ffffffff9081167c0100000000000000000000000000000000000000000000000000000000027bffffffffffffffffffffffffffffffffffffffffffffffffffffffff919092167801000000000000000000000000000000000000000000000000021677ffffffffffffffffffffffffffffffffffffffffffffffff6bffffffffffffffffffffffff9687166c01000000000000000000000000027fffffffffffffffff00000000000000000000000000000000000000000000000090961696909316959095179390931716929092171790556113c6565b83516bffffffffffffffffffffffff1680156112b3576040517f42966c68000000000000000000000000000000000000000000000000000000008152600481018290527f0000000000000000000000000001a500a6b18995b03f44bb040a5ffc28e45cb073ffffffffffffffffffffffffffffffffffffffff16906342966c6890602401600060405180830381600087803b15801561125b57600080fd5b505af115801561126f573d6000803e3d6000fd5b50506040805184815242602082015284870395503393507f49995e5dd6158cf69ad3e9777c46755a1a826a446c6416992167462dad033b2a92500160405180910390a25b50604080516080810182526000808252602080830182815283850183815260608501848152338552600290935294909220925183549251945191516bffffffffffffffffffffffff9182167fffffffffffffffff000000000000000000000000000000000000000000000000909416939093176c0100000000000000000000000091909516029390931777ffffffffffffffffffffffffffffffffffffffffffffffff16780100000000000000000000000000000000000000000000000063ffffffff948516027bffffffffffffffffffffffffffffffffffffffffffffffffffffffff16177c010000000000000000000000000000000000000000000000000000000093909116929092029190911790555b82900360008190556040805184815242602082015233917ff279e6a1f5e320cca91135676d9cb6e44ca8a08c0b88342bcdb1144f6511b568910160405180910390a260408051838152602081018390527f5e2aa66efd74cce82b21852e317e5490d9ecc9e6bb953ae24d90851258cc2f5c910160405180910390a16040517fa9059cbb000000000000000000000000000000000000000000000000000000008152336004820152602481018490527f0000000000000000000000000001a500a6b18995b03f44bb040a5ffc28e45cb073ffffffffffffffffffffffffffffffffffffffff169063a9059cbb906044016020604051808303816000875af11580156114d4573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906114f89190611c60565b505050505b50565b73ffffffffffffffffffffffffffffffffffffffff81166000908152600260209081526040808320815160808101835290546bffffffffffffffffffffffff80821683526c010000000000000000000000008204169382019390935263ffffffff780100000000000000000000000000000000000000000000000084048116928201929092527c0100000000000000000000000000000000000000000000000000000000909204166060820181905282036115cf5780602001516bffffffffffffffffffffffff1691506115f1565b602081015181516115e09190611cb2565b6bffffffffffffffffffffffff1691505b50919050565b6004805461078e90611bbe565b60015473ffffffffffffffffffffffffffffffffffffffff163314611677576001546040517fa43d6ada00000000000000000000000000000000000000000000000000000000815233600482015273ffffffffffffffffffffffffffffffffffffffff909116602482015260440161051d565b73ffffffffffffffffffffffffffffffffffffffff81166116c4576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600180547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff83169081179091556040517f4ffd725fc4a22075e9ec71c59edf9c38cdeb588a91b24fc5b61388c5be41282b90600090a250565b6000816060015163ffffffff1660000361175d5750602001516bffffffffffffffffffffffff1690565b6000806301e1338063ffffffff16846040015185606001510363ffffffff168161178957611789611cdf565b0491506301e1338063ffffffff168460400151420363ffffffff16816117b1576117b1611cdf565b04905063ffffffff82166117c6826001611d0e565b63ffffffff1611156117f25783602001518460000151036bffffffffffffffffffffffff16925061184a565b8163ffffffff168163ffffffff168560000151026bffffffffffffffffffffffff168161182157611821611cdf565b046bffffffffffffffffffffffff16925083602001516bffffffffffffffffffffffff16830392505b5050919050565b60006020828403121561186357600080fd5b81357fffffffff00000000000000000000000000000000000000000000000000000000811681146108fc57600080fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b803573ffffffffffffffffffffffffffffffffffffffff811681146118e657600080fd5b919050565b600060208083850312156118fe57600080fd5b823567ffffffffffffffff8082111561191657600080fd5b818501915085601f83011261192a57600080fd5b81358181111561193c5761193c611893565b8060051b6040517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0603f8301168101818110858211171561197f5761197f611893565b60405291825284820192508381018501918883111561199d57600080fd5b938501935b828510156119c2576119b3856118c2565b845293850193928501926119a2565b98975050505050505050565b600060208083528351808285015260005b818110156119fb578581018301518582016040015282016119df565b81811115611a0d576000604083870101525b50601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016929092016040019392505050565b60008060408385031215611a5457600080fd5b611a5d836118c2565b946020939093013593505050565b600060208284031215611a7d57600080fd5b6108fc826118c2565b600080600060608486031215611a9b57600080fd5b611aa4846118c2565b9250611ab2602085016118c2565b9150604084013590509250925092565b600080600060608486031215611ad757600080fd5b611ae0846118c2565b95602085013595506040909401359392505050565b60008060408385031215611b0857600080fd5b611b11836118c2565b9150611b1f602084016118c2565b90509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8203611bb757611bb7611b57565b5060010190565b600181811c90821680611bd257607f821691505b6020821081036115f1577f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b6000817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0483118215151615611c4357611c43611b57565b500290565b60008219821115611c5b57611c5b611b57565b500190565b600060208284031215611c7257600080fd5b815180151581146108fc57600080fd5b60006bffffffffffffffffffffffff808316818516808303821115611ca957611ca9611b57565b01949350505050565b60006bffffffffffffffffffffffff83811690831681811015611cd757611cd7611b57565b039392505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b600063ffffffff808316818516808303821115611ca957611ca9611b5756fea2646970667358221220b49e30fdf93d061c00dd6077912ba82712d17f8f30d710e51088cd0c25b2e8bf64736f6c634300080f0033
Constructor Arguments (ABI-Encoded and is the last bytes of the Contract Creation Code above)
0000000000000000000000000001a500a6b18995b03f44bb040a5ffc28e45cb0000000000000000000000000000000000000000000000000000000000000006000000000000000000000000000000000000000000000000000000000000000a000000000000000000000000000000000000000000000000000000000000000144275726e61626c65204c6f636b6564204f4c4153000000000000000000000000000000000000000000000000000000000000000000000000000000000000000662754f4c41530000000000000000000000000000000000000000000000000000
-----Decoded View---------------
Arg [0] : _token (address): 0x0001A500A6B18995B03f44bb040A5fFc28E45CB0
Arg [1] : _name (string): Burnable Locked OLAS
Arg [2] : _symbol (string): buOLAS
-----Encoded View---------------
7 Constructor Arguments found :
Arg [0] : 0000000000000000000000000001a500a6b18995b03f44bb040a5ffc28e45cb0
Arg [1] : 0000000000000000000000000000000000000000000000000000000000000060
Arg [2] : 00000000000000000000000000000000000000000000000000000000000000a0
Arg [3] : 0000000000000000000000000000000000000000000000000000000000000014
Arg [4] : 4275726e61626c65204c6f636b6564204f4c4153000000000000000000000000
Arg [5] : 0000000000000000000000000000000000000000000000000000000000000006
Arg [6] : 62754f4c41530000000000000000000000000000000000000000000000000000
Loading...
Loading
Loading...
Loading
[ Download: CSV Export ]
A token is a representation of an on-chain or off-chain asset. The token page shows information such as price, total supply, holders, transfers and social links. Learn more about this page in our Knowledge Base.