Feature Tip: Add private address tag to any address under My Name Tag !
Source Code
Overview
ETH Balance
0 ETH
Eth Value
$0.00More Info
Private Name Tags
ContractCreator
TokenTracker
Latest 25 from a total of 149 transactions
| Transaction Hash |
Method
|
Block
|
From
|
|
To
|
||||
|---|---|---|---|---|---|---|---|---|---|
| Approve | 24072043 | 64 days ago | IN | 0 ETH | 0.00000504 | ||||
| Transfer | 23626534 | 126 days ago | IN | 0 ETH | 0.00009399 | ||||
| Approve | 23479338 | 147 days ago | IN | 0 ETH | 0.00001115 | ||||
| Approve | 23452620 | 150 days ago | IN | 0 ETH | 0.00001253 | ||||
| Approve | 23377525 | 161 days ago | IN | 0 ETH | 0.00002885 | ||||
| Approve | 23370822 | 162 days ago | IN | 0 ETH | 0.00002693 | ||||
| Approve | 23364179 | 163 days ago | IN | 0 ETH | 0.00000948 | ||||
| Transfer | 23341873 | 166 days ago | IN | 0 ETH | 0.00006362 | ||||
| Approve | 23341867 | 166 days ago | IN | 0 ETH | 0.00001658 | ||||
| Transfer | 23341859 | 166 days ago | IN | 0 ETH | 0.00007206 | ||||
| Transfer | 23341802 | 166 days ago | IN | 0 ETH | 0.000073 | ||||
| Approve | 23289842 | 173 days ago | IN | 0 ETH | 0.00009029 | ||||
| Approve | 23262486 | 177 days ago | IN | 0 ETH | 0.00005883 | ||||
| Approve | 23195331 | 186 days ago | IN | 0 ETH | 0.00006085 | ||||
| Approve | 23174933 | 189 days ago | IN | 0 ETH | 0.00005657 | ||||
| Approve | 23159481 | 191 days ago | IN | 0 ETH | 0.00001192 | ||||
| Approve | 23106319 | 199 days ago | IN | 0 ETH | 0.00011749 | ||||
| Approve | 23096450 | 200 days ago | IN | 0 ETH | 0.00007956 | ||||
| Approve | 23090802 | 201 days ago | IN | 0 ETH | 0.00012135 | ||||
| Approve | 23082371 | 202 days ago | IN | 0 ETH | 0.00007179 | ||||
| Approve | 23049335 | 207 days ago | IN | 0 ETH | 0.00013782 | ||||
| Approve | 23042742 | 208 days ago | IN | 0 ETH | 0.00012156 | ||||
| Approve | 23032904 | 209 days ago | IN | 0 ETH | 0.0001668 | ||||
| Approve | 23025684 | 210 days ago | IN | 0 ETH | 0.00026205 | ||||
| Approve | 23019469 | 211 days ago | IN | 0 ETH | 0.00005407 |
View more zero value Internal Transactions in Advanced View mode
Advanced mode:
Loading...
Loading
Loading...
Loading
Cross-Chain Transactions
Loading...
Loading
Contract Name:
BTCE
Compiler Version
v0.8.30+commit.73712a01
Contract Source Code (Solidity)
/**
*Submitted for verification at Etherscan.io on 2025-06-29
*/
// SPDX-License-Identifier: MIT
pragma solidity ^0.8.30; //
/**
* @dev Interface of the ERC-20 standard as defined in the ERC.
*/
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 value of tokens in existence.
*/
function totalSupply() external view returns (uint256);
/**
* @dev Returns the value of tokens owned by `account`.
*/
function balanceOf(address account) external view returns (uint256);
/**
* @dev Moves a `value` amount of 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 value) 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 a `value` amount of tokens 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 value) external returns (bool);
/**
* @dev Moves a `value` amount of tokens from `from` to `to` using the
* allowance mechanism. `value` 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 value) external returns (bool);
}
// File: @openzeppelin/contracts/token/ERC20/extensions/IERC20Metadata.sol
// OpenZeppelin Contracts (last updated v5.1.0) (token/ERC20/extensions/IERC20Metadata.sol)
pragma solidity ^0.8.20;
/**
* @dev Interface for the optional metadata functions from the ERC-20 standard.
*/
interface IERC20Metadata is IERC20 {
/**
* @dev Returns the name of the token.
*/
function name() external view returns (string memory);
/**
* @dev Returns the symbol of the token.
*/
function symbol() external view returns (string memory);
/**
* @dev Returns the decimals places of the token.
*/
function decimals() external view returns (uint8);
}
// File: @openzeppelin/contracts/utils/Context.sol
// OpenZeppelin Contracts (last updated v5.0.1) (utils/Context.sol)
pragma solidity ^0.8.20;
/**
* @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 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) {
return msg.sender;
}
function _msgData() internal view virtual returns (bytes calldata) {
return msg.data;
}
function _contextSuffixLength() internal view virtual returns (uint256) {
return 0;
}
}
// File: @openzeppelin/contracts/interfaces/draft-IERC6093.sol
// OpenZeppelin Contracts (last updated v5.1.0) (interfaces/draft-IERC6093.sol)
pragma solidity ^0.8.20;
/**
* @dev Standard ERC-20 Errors
* Interface of the https://eips.ethereum.org/EIPS/eip-6093[ERC-6093] custom errors for ERC-20 tokens.
*/
interface IERC20Errors {
/**
* @dev Indicates an error related to the current `balance` of a `sender`. Used in transfers.
* @param sender Address whose tokens are being transferred.
* @param balance Current balance for the interacting account.
* @param needed Minimum amount required to perform a transfer.
*/
error ERC20InsufficientBalance(address sender, uint256 balance, uint256 needed);
/**
* @dev Indicates a failure with the token `sender`. Used in transfers.
* @param sender Address whose tokens are being transferred.
*/
error ERC20InvalidSender(address sender);
/**
* @dev Indicates a failure with the token `receiver`. Used in transfers.
* @param receiver Address to which tokens are being transferred.
*/
error ERC20InvalidReceiver(address receiver);
/**
* @dev Indicates a failure with the `spender`’s `allowance`. Used in transfers.
* @param spender Address that may be allowed to operate on tokens without being their owner.
* @param allowance Amount of tokens a `spender` is allowed to operate with.
* @param needed Minimum amount required to perform a transfer.
*/
error ERC20InsufficientAllowance(address spender, uint256 allowance, uint256 needed);
/**
* @dev Indicates a failure with the `approver` of a token to be approved. Used in approvals.
* @param approver Address initiating an approval operation.
*/
error ERC20InvalidApprover(address approver);
/**
* @dev Indicates a failure with the `spender` to be approved. Used in approvals.
* @param spender Address that may be allowed to operate on tokens without being their owner.
*/
error ERC20InvalidSpender(address spender);
}
/**
* @dev Standard ERC-721 Errors
* Interface of the https://eips.ethereum.org/EIPS/eip-6093[ERC-6093] custom errors for ERC-721 tokens.
*/
interface IERC721Errors {
/**
* @dev Indicates that an address can't be an owner. For example, `address(0)` is a forbidden owner in ERC-20.
* Used in balance queries.
* @param owner Address of the current owner of a token.
*/
error ERC721InvalidOwner(address owner);
/**
* @dev Indicates a `tokenId` whose `owner` is the zero address.
* @param tokenId Identifier number of a token.
*/
error ERC721NonexistentToken(uint256 tokenId);
/**
* @dev Indicates an error related to the ownership over a particular token. Used in transfers.
* @param sender Address whose tokens are being transferred.
* @param tokenId Identifier number of a token.
* @param owner Address of the current owner of a token.
*/
error ERC721IncorrectOwner(address sender, uint256 tokenId, address owner);
/**
* @dev Indicates a failure with the token `sender`. Used in transfers.
* @param sender Address whose tokens are being transferred.
*/
error ERC721InvalidSender(address sender);
/**
* @dev Indicates a failure with the token `receiver`. Used in transfers.
* @param receiver Address to which tokens are being transferred.
*/
error ERC721InvalidReceiver(address receiver);
/**
* @dev Indicates a failure with the `operator`’s approval. Used in transfers.
* @param operator Address that may be allowed to operate on tokens without being their owner.
* @param tokenId Identifier number of a token.
*/
error ERC721InsufficientApproval(address operator, uint256 tokenId);
/**
* @dev Indicates a failure with the `approver` of a token to be approved. Used in approvals.
* @param approver Address initiating an approval operation.
*/
error ERC721InvalidApprover(address approver);
/**
* @dev Indicates a failure with the `operator` to be approved. Used in approvals.
* @param operator Address that may be allowed to operate on tokens without being their owner.
*/
error ERC721InvalidOperator(address operator);
}
/**
* @dev Standard ERC-1155 Errors
* Interface of the https://eips.ethereum.org/EIPS/eip-6093[ERC-6093] custom errors for ERC-1155 tokens.
*/
interface IERC1155Errors {
/**
* @dev Indicates an error related to the current `balance` of a `sender`. Used in transfers.
* @param sender Address whose tokens are being transferred.
* @param balance Current balance for the interacting account.
* @param needed Minimum amount required to perform a transfer.
* @param tokenId Identifier number of a token.
*/
error ERC1155InsufficientBalance(address sender, uint256 balance, uint256 needed, uint256 tokenId);
/**
* @dev Indicates a failure with the token `sender`. Used in transfers.
* @param sender Address whose tokens are being transferred.
*/
error ERC1155InvalidSender(address sender);
/**
* @dev Indicates a failure with the token `receiver`. Used in transfers.
* @param receiver Address to which tokens are being transferred.
*/
error ERC1155InvalidReceiver(address receiver);
/**
* @dev Indicates a failure with the `operator`’s approval. Used in transfers.
* @param operator Address that may be allowed to operate on tokens without being their owner.
* @param owner Address of the current owner of a token.
*/
error ERC1155MissingApprovalForAll(address operator, address owner);
/**
* @dev Indicates a failure with the `approver` of a token to be approved. Used in approvals.
* @param approver Address initiating an approval operation.
*/
error ERC1155InvalidApprover(address approver);
/**
* @dev Indicates a failure with the `operator` to be approved. Used in approvals.
* @param operator Address that may be allowed to operate on tokens without being their owner.
*/
error ERC1155InvalidOperator(address operator);
/**
* @dev Indicates an array length mismatch between ids and values in a safeBatchTransferFrom operation.
* Used in batch transfers.
* @param idsLength Length of the array of token identifiers
* @param valuesLength Length of the array of token amounts
*/
error ERC1155InvalidArrayLength(uint256 idsLength, uint256 valuesLength);
}
// File: @openzeppelin/contracts/token/ERC20/ERC20.sol
// OpenZeppelin Contracts (last updated v5.3.0) (token/ERC20/ERC20.sol)
pragma solidity ^0.8.20;
/**
* @dev Implementation of the {IERC20} interface.
*
* This implementation is agnostic to the way tokens are created. This means
* that a supply mechanism has to be added in a derived contract using {_mint}.
*
* TIP: For a detailed writeup see our guide
* https://forum.openzeppelin.com/t/how-to-implement-erc20-supply-mechanisms/226[How
* to implement supply mechanisms].
*
* The default value of {decimals} is 18. To change this, you should override
* this function so it returns a different value.
*
* We have followed general OpenZeppelin Contracts guidelines: functions revert
* instead returning `false` on failure. This behavior is nonetheless
* conventional and does not conflict with the expectations of ERC-20
* applications.
*/
abstract contract ERC20 is Context, IERC20, IERC20Metadata, IERC20Errors {
mapping(address account => uint256) private _balances;
mapping(address account => mapping(address spender => uint256)) private _allowances;
uint256 private _totalSupply;
string private _name;
string private _symbol;
/**
* @dev Sets the values for {name} and {symbol}.
*
* Both values are immutable: they can only be set once during construction.
*/
constructor(string memory name_, string memory symbol_) {
_name = name_;
_symbol = symbol_;
}
/**
* @dev Returns the name of the token.
*/
function name() public view virtual returns (string memory) {
return _name;
}
/**
* @dev Returns the symbol of the token, usually a shorter version of the
* name.
*/
function symbol() public view virtual returns (string memory) {
return _symbol;
}
/**
* @dev Returns the number of decimals used to get its user representation.
* For example, if `decimals` equals `2`, a balance of `505` tokens should
* be displayed to a user as `5.05` (`505 / 10 ** 2`).
*
* Tokens usually opt for a value of 18, imitating the relationship between
* Ether and Wei. This is the default value returned by this function, unless
* it's overridden.
*
* NOTE: This information is only used for _display_ purposes: it in
* no way affects any of the arithmetic of the contract, including
* {IERC20-balanceOf} and {IERC20-transfer}.
*/
function decimals() public view virtual returns (uint8) {
return 18;
}
/**
* @dev See {IERC20-totalSupply}.
*/
function totalSupply() public view virtual returns (uint256) {
return _totalSupply;
}
/**
* @dev See {IERC20-balanceOf}.
*/
function balanceOf(address account) public view virtual returns (uint256) {
return _balances[account];
}
/**
* @dev See {IERC20-transfer}.
*
* Requirements:
*
* - `to` cannot be the zero address.
* - the caller must have a balance of at least `value`.
*/
function transfer(address to, uint256 value) public virtual returns (bool) {
address owner = _msgSender();
_transfer(owner, to, value);
return true;
}
/**
* @dev See {IERC20-allowance}.
*/
function allowance(address owner, address spender) public view virtual returns (uint256) {
return _allowances[owner][spender];
}
/**
* @dev See {IERC20-approve}.
*
* NOTE: If `value` is the maximum `uint256`, the allowance is not updated on
* `transferFrom`. This is semantically equivalent to an infinite approval.
*
* Requirements:
*
* - `spender` cannot be the zero address.
*/
function approve(address spender, uint256 value) public virtual returns (bool) {
address owner = _msgSender();
_approve(owner, spender, value);
return true;
}
/**
* @dev See {IERC20-transferFrom}.
*
* Skips emitting an {Approval} event indicating an allowance update. This is not
* required by the ERC. See {xref-ERC20-_approve-address-address-uint256-bool-}[_approve].
*
* NOTE: Does not update the allowance if the current allowance
* is the maximum `uint256`.
*
* Requirements:
*
* - `from` and `to` cannot be the zero address.
* - `from` must have a balance of at least `value`.
* - the caller must have allowance for ``from``'s tokens of at least
* `value`.
*/
function transferFrom(address from, address to, uint256 value) public virtual returns (bool) {
address spender = _msgSender();
_spendAllowance(from, spender, value);
_transfer(from, to, value);
return true;
}
/**
* @dev Moves a `value` amount of tokens from `from` to `to`.
*
* This internal function is equivalent to {transfer}, and can be used to
* e.g. implement automatic token fees, slashing mechanisms, etc.
*
* Emits a {Transfer} event.
*
* NOTE: This function is not virtual, {_update} should be overridden instead.
*/
function _transfer(address from, address to, uint256 value) internal {
if (from == address(0)) {
revert ERC20InvalidSender(address(0));
}
if (to == address(0)) {
revert ERC20InvalidReceiver(address(0));
}
_update(from, to, value);
}
/**
* @dev Transfers a `value` amount of tokens from `from` to `to`, or alternatively mints (or burns) if `from`
* (or `to`) is the zero address. All customizations to transfers, mints, and burns should be done by overriding
* this function.
*
* Emits a {Transfer} event.
*/
function _update(address from, address to, uint256 value) internal virtual {
if (from == address(0)) {
// Overflow check required: The rest of the code assumes that totalSupply never overflows
_totalSupply += value;
} else {
uint256 fromBalance = _balances[from];
if (fromBalance < value) {
revert ERC20InsufficientBalance(from, fromBalance, value);
}
unchecked {
// Overflow not possible: value <= fromBalance <= totalSupply.
_balances[from] = fromBalance - value;
}
}
if (to == address(0)) {
unchecked {
// Overflow not possible: value <= totalSupply or value <= fromBalance <= totalSupply.
_totalSupply -= value;
}
} else {
unchecked {
// Overflow not possible: balance + value is at most totalSupply, which we know fits into a uint256.
_balances[to] += value;
}
}
emit Transfer(from, to, value);
}
/**
* @dev Creates a `value` amount of tokens and assigns them to `account`, by transferring it from address(0).
* Relies on the `_update` mechanism
*
* Emits a {Transfer} event with `from` set to the zero address.
*
* NOTE: This function is not virtual, {_update} should be overridden instead.
*/
function _mint(address account, uint256 value) internal {
if (account == address(0)) {
revert ERC20InvalidReceiver(address(0));
}
_update(address(0), account, value);
}
/**
* @dev Destroys a `value` amount of tokens from `account`, lowering the total supply.
* Relies on the `_update` mechanism.
*
* Emits a {Transfer} event with `to` set to the zero address.
*
* NOTE: This function is not virtual, {_update} should be overridden instead
*/
function _burn(address account, uint256 value) internal {
if (account == address(0)) {
revert ERC20InvalidSender(address(0));
}
_update(account, address(0), value);
}
/**
* @dev Sets `value` as the allowance of `spender` over the `owner`'s tokens.
*
* This internal function is equivalent to `approve`, and can be used to
* e.g. set automatic allowances for certain subsystems, etc.
*
* Emits an {Approval} event.
*
* Requirements:
*
* - `owner` cannot be the zero address.
* - `spender` cannot be the zero address.
*
* Overrides to this logic should be done to the variant with an additional `bool emitEvent` argument.
*/
function _approve(address owner, address spender, uint256 value) internal {
_approve(owner, spender, value, true);
}
/**
* @dev Variant of {_approve} with an optional flag to enable or disable the {Approval} event.
*
* By default (when calling {_approve}) the flag is set to true. On the other hand, approval changes made by
* `_spendAllowance` during the `transferFrom` operation set the flag to false. This saves gas by not emitting any
* `Approval` event during `transferFrom` operations.
*
* Anyone who wishes to continue emitting `Approval` events on the`transferFrom` operation can force the flag to
* true using the following override:
*
* ```solidity
* function _approve(address owner, address spender, uint256 value, bool) internal virtual override {
* super._approve(owner, spender, value, true);
* }
* ```
*
* Requirements are the same as {_approve}.
*/
function _approve(address owner, address spender, uint256 value, bool emitEvent) internal virtual {
if (owner == address(0)) {
revert ERC20InvalidApprover(address(0));
}
if (spender == address(0)) {
revert ERC20InvalidSpender(address(0));
}
_allowances[owner][spender] = value;
if (emitEvent) {
emit Approval(owner, spender, value);
}
}
/**
* @dev Updates `owner`'s allowance for `spender` based on spent `value`.
*
* Does not update the allowance value in case of infinite allowance.
* Revert if not enough allowance is available.
*
* Does not emit an {Approval} event.
*/
function _spendAllowance(address owner, address spender, uint256 value) internal virtual {
uint256 currentAllowance = allowance(owner, spender);
if (currentAllowance < type(uint256).max) {
if (currentAllowance < value) {
revert ERC20InsufficientAllowance(spender, currentAllowance, value);
}
unchecked {
_approve(owner, spender, currentAllowance - value, false);
}
}
}
}
// File: @openzeppelin/contracts/security/ReentrancyGuard.sol
// OpenZeppelin Contracts (last updated v4.9.0) (security/ReentrancyGuard.sol)
pragma solidity ^0.8.0;
/**
* @dev Contract module that helps prevent reentrant calls to a function.
*
* Inheriting from `ReentrancyGuard` will make the {nonReentrant} modifier
* available, which can be applied to functions to make sure there are no nested
* (reentrant) calls to them.
*
* Note that because there is a single `nonReentrant` guard, functions marked as
* `nonReentrant` may not call one another. This can be worked around by making
* those functions `private`, and then adding `external` `nonReentrant` entry
* points to them.
*
* TIP: If you would like to learn more about reentrancy and alternative ways
* to protect against it, check out our blog post
* https://blog.openzeppelin.com/reentrancy-after-istanbul/[Reentrancy After Istanbul].
*/
abstract contract ReentrancyGuard {
// Booleans are more expensive than uint256 or any type that takes up a full
// word because each write operation emits an extra SLOAD to first read the
// slot's contents, replace the bits taken up by the boolean, and then write
// back. This is the compiler's defense against contract upgrades and
// pointer aliasing, and it cannot be disabled.
// The values being non-zero value makes deployment a bit more expensive,
// but in exchange the refund on every call to nonReentrant will be lower in
// amount. Since refunds are capped to a percentage of the total
// transaction's gas, it is best to keep them low in cases like this one, to
// increase the likelihood of the full refund coming into effect.
uint256 private constant _NOT_ENTERED = 1;
uint256 private constant _ENTERED = 2;
uint256 private _status;
constructor() {
_status = _NOT_ENTERED;
}
/**
* @dev Prevents a contract from calling itself, directly or indirectly.
* Calling a `nonReentrant` function from another `nonReentrant`
* function is not supported. It is possible to prevent this from happening
* by making the `nonReentrant` function external, and making it call a
* `private` function that does the actual work.
*/
modifier nonReentrant() {
_nonReentrantBefore();
_;
_nonReentrantAfter();
}
function _nonReentrantBefore() private {
// On the first call to nonReentrant, _status will be _NOT_ENTERED
require(_status != _ENTERED, "ReentrancyGuard: reentrant call");
// Any calls to nonReentrant after this point will fail
_status = _ENTERED;
}
function _nonReentrantAfter() private {
// By storing the original value once again, a refund is triggered (see
// https://eips.ethereum.org/EIPS/eip-2200)
_status = _NOT_ENTERED;
}
/**
* @dev Returns true if the reentrancy guard is currently set to "entered", which indicates there is a
* `nonReentrant` function in the call stack.
*/
function _reentrancyGuardEntered() internal view returns (bool) {
return _status == _ENTERED;
}
}
// File: btce.sol
pragma solidity ^0.8.0;
contract BTCE is ERC20, ReentrancyGuard {
uint256 private _initialSupply = 21_000_000 * 10 ** decimals();
uint256 public launchBlock;
uint256 public delayBlocks = 3;
constructor() ERC20("Bitcoin on Ethereum", "BTCE") {
_mint(msg.sender, _initialSupply);
launchBlock = block.number;
}
// Anti-sniper modifier for transfers
modifier antiSniper() {
require(block.number > launchBlock + delayBlocks, "Trading not allowed yet");
_;
}
function transfer(address recipient, uint256 amount) public override antiSniper returns (bool) {
return super.transfer(recipient, amount);
}
function transferFrom(address sender, address recipient, uint256 amount) public override antiSniper returns (bool) {
return super.transferFrom(sender, recipient, amount);
}
function burn(uint256 amount) public {
_burn(msg.sender, amount);
}
}Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
Contract ABI
API[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"allowance","type":"uint256"},{"internalType":"uint256","name":"needed","type":"uint256"}],"name":"ERC20InsufficientAllowance","type":"error"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"uint256","name":"balance","type":"uint256"},{"internalType":"uint256","name":"needed","type":"uint256"}],"name":"ERC20InsufficientBalance","type":"error"},{"inputs":[{"internalType":"address","name":"approver","type":"address"}],"name":"ERC20InvalidApprover","type":"error"},{"inputs":[{"internalType":"address","name":"receiver","type":"address"}],"name":"ERC20InvalidReceiver","type":"error"},{"inputs":[{"internalType":"address","name":"sender","type":"address"}],"name":"ERC20InvalidSender","type":"error"},{"inputs":[{"internalType":"address","name":"spender","type":"address"}],"name":"ERC20InvalidSpender","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":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","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":"value","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":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"burn","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"delayBlocks","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"launchBlock","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"}]Contract Creation Code
60806040526100126100f560201b60201c565b600a61001e919061050c565b6301406f4061002d9190610556565b6006556003600855348015610040575f5ffd5b506040518060400160405280601381526020017f426974636f696e206f6e20457468657265756d000000000000000000000000008152506040518060400160405280600481526020017f425443450000000000000000000000000000000000000000000000000000000081525081600390816100bc91906107cb565b5080600490816100cc91906107cb565b50505060016005819055506100e9336006546100fd60201b60201c565b43600781905550610982565b5f6012905090565b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff160361016d575f6040517fec442f0500000000000000000000000000000000000000000000000000000000815260040161016491906108d9565b60405180910390fd5b61017e5f838361018260201b60201c565b5050565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16036101d2578060025f8282546101c691906108f2565b925050819055506102a0565b5f5f5f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205490508181101561025b578381836040517fe450d38c00000000000000000000000000000000000000000000000000000000815260040161025293929190610934565b60405180910390fd5b8181035f5f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2081905550505b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036102e7578060025f8282540392505081905550610331565b805f5f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f82825401925050819055505b8173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8360405161038e9190610969565b60405180910390a3505050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f8160011c9050919050565b5f5f8291508390505b600185111561041d578086048111156103f9576103f861039b565b5b60018516156104085780820291505b8081029050610416856103c8565b94506103dd565b94509492505050565b5f8261043557600190506104f0565b81610442575f90506104f0565b8160018114610458576002811461046257610491565b60019150506104f0565b60ff8411156104745761047361039b565b5b8360020a91508482111561048b5761048a61039b565b5b506104f0565b5060208310610133831016604e8410600b84101617156104c65782820a9050838111156104c1576104c061039b565b5b6104f0565b6104d384848460016103d4565b925090508184048111156104ea576104e961039b565b5b81810290505b9392505050565b5f819050919050565b5f60ff82169050919050565b5f610516826104f7565b915061052183610500565b925061054e7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8484610426565b905092915050565b5f610560826104f7565b915061056b836104f7565b9250828202610579816104f7565b915082820484148315176105905761058f61039b565b5b5092915050565b5f81519050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b5f600282049050600182168061061257607f821691505b602082108103610625576106246105ce565b5b50919050565b5f819050815f5260205f209050919050565b5f6020601f8301049050919050565b5f82821b905092915050565b5f600883026106877fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8261064c565b610691868361064c565b95508019841693508086168417925050509392505050565b5f819050919050565b5f6106cc6106c76106c2846104f7565b6106a9565b6104f7565b9050919050565b5f819050919050565b6106e5836106b2565b6106f96106f1826106d3565b848454610658565b825550505050565b5f5f905090565b610710610701565b61071b8184846106dc565b505050565b5b8181101561073e576107335f82610708565b600181019050610721565b5050565b601f821115610783576107548161062b565b61075d8461063d565b8101602085101561076c578190505b6107806107788561063d565b830182610720565b50505b505050565b5f82821c905092915050565b5f6107a35f1984600802610788565b1980831691505092915050565b5f6107bb8383610794565b9150826002028217905092915050565b6107d482610597565b67ffffffffffffffff8111156107ed576107ec6105a1565b5b6107f782546105fb565b610802828285610742565b5f60209050601f831160018114610833575f8415610821578287015190505b61082b85826107b0565b865550610892565b601f1984166108418661062b565b5f5b8281101561086857848901518255600182019150602085019450602081019050610843565b868310156108855784890151610881601f891682610794565b8355505b6001600288020188555050505b505050505050565b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f6108c38261089a565b9050919050565b6108d3816108b9565b82525050565b5f6020820190506108ec5f8301846108ca565b92915050565b5f6108fc826104f7565b9150610907836104f7565b925082820190508082111561091f5761091e61039b565b5b92915050565b61092e816104f7565b82525050565b5f6060820190506109475f8301866108ca565b6109546020830185610925565b6109616040830184610925565b949350505050565b5f60208201905061097c5f830184610925565b92915050565b6110508061098f5f395ff3fe608060405234801561000f575f5ffd5b50600436106100b2575f3560e01c806370a082311161006f57806370a082311461018c57806395d89b41146101bc578063a9059cbb146101da578063ad9c0c2e1461020a578063d00efb2f14610228578063dd62ed3e14610246576100b2565b806306fdde03146100b6578063095ea7b3146100d457806318160ddd1461010457806323b872dd14610122578063313ce5671461015257806342966c6814610170575b5f5ffd5b6100be610276565b6040516100cb9190610c36565b60405180910390f35b6100ee60048036038101906100e99190610ce7565b610306565b6040516100fb9190610d3f565b60405180910390f35b61010c610328565b6040516101199190610d67565b60405180910390f35b61013c60048036038101906101379190610d80565b610331565b6040516101499190610d3f565b60405180910390f35b61015a610397565b6040516101679190610deb565b60405180910390f35b61018a60048036038101906101859190610e04565b61039f565b005b6101a660048036038101906101a19190610e2f565b6103ac565b6040516101b39190610d67565b60405180910390f35b6101c46103f1565b6040516101d19190610c36565b60405180910390f35b6101f460048036038101906101ef9190610ce7565b610481565b6040516102019190610d3f565b60405180910390f35b6102126104e5565b60405161021f9190610d67565b60405180910390f35b6102306104eb565b60405161023d9190610d67565b60405180910390f35b610260600480360381019061025b9190610e5a565b6104f1565b60405161026d9190610d67565b60405180910390f35b60606003805461028590610ec5565b80601f01602080910402602001604051908101604052809291908181526020018280546102b190610ec5565b80156102fc5780601f106102d3576101008083540402835291602001916102fc565b820191905f5260205f20905b8154815290600101906020018083116102df57829003601f168201915b5050505050905090565b5f5f610310610573565b905061031d81858561057a565b600191505092915050565b5f600254905090565b5f6008546007546103429190610f22565b4311610383576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161037a90610f9f565b60405180910390fd5b61038e84848461058c565b90509392505050565b5f6012905090565b6103a933826105ba565b50565b5f5f5f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20549050919050565b60606004805461040090610ec5565b80601f016020809104026020016040519081016040528092919081815260200182805461042c90610ec5565b80156104775780601f1061044e57610100808354040283529160200191610477565b820191905f5260205f20905b81548152906001019060200180831161045a57829003601f168201915b5050505050905090565b5f6008546007546104929190610f22565b43116104d3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016104ca90610f9f565b60405180910390fd5b6104dd8383610639565b905092915050565b60085481565b60075481565b5f60015f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905092915050565b5f33905090565b610587838383600161065b565b505050565b5f5f610596610573565b90506105a385828561082a565b6105ae8585856108bd565b60019150509392505050565b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff160361062a575f6040517f96c6fd1e0000000000000000000000000000000000000000000000000000000081526004016106219190610fcc565b60405180910390fd5b610635825f836109ad565b5050565b5f5f610643610573565b90506106508185856108bd565b600191505092915050565b5f73ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16036106cb575f6040517fe602df050000000000000000000000000000000000000000000000000000000081526004016106c29190610fcc565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff160361073b575f6040517f94280d620000000000000000000000000000000000000000000000000000000081526004016107329190610fcc565b60405180910390fd5b8160015f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508015610824578273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9258460405161081b9190610d67565b60405180910390a35b50505050565b5f61083584846104f1565b90507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8110156108b757818110156108a8578281836040517ffb8f41b200000000000000000000000000000000000000000000000000000000815260040161089f93929190610fe5565b60405180910390fd5b6108b684848484035f61065b565b5b50505050565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff160361092d575f6040517f96c6fd1e0000000000000000000000000000000000000000000000000000000081526004016109249190610fcc565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff160361099d575f6040517fec442f050000000000000000000000000000000000000000000000000000000081526004016109949190610fcc565b60405180910390fd5b6109a88383836109ad565b505050565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16036109fd578060025f8282546109f19190610f22565b92505081905550610acb565b5f5f5f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905081811015610a86578381836040517fe450d38c000000000000000000000000000000000000000000000000000000008152600401610a7d93929190610fe5565b60405180910390fd5b8181035f5f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2081905550505b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603610b12578060025f8282540392505081905550610b5c565b805f5f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f82825401925050819055505b8173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051610bb99190610d67565b60405180910390a3505050565b5f81519050919050565b5f82825260208201905092915050565b8281835e5f83830152505050565b5f601f19601f8301169050919050565b5f610c0882610bc6565b610c128185610bd0565b9350610c22818560208601610be0565b610c2b81610bee565b840191505092915050565b5f6020820190508181035f830152610c4e8184610bfe565b905092915050565b5f5ffd5b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f610c8382610c5a565b9050919050565b610c9381610c79565b8114610c9d575f5ffd5b50565b5f81359050610cae81610c8a565b92915050565b5f819050919050565b610cc681610cb4565b8114610cd0575f5ffd5b50565b5f81359050610ce181610cbd565b92915050565b5f5f60408385031215610cfd57610cfc610c56565b5b5f610d0a85828601610ca0565b9250506020610d1b85828601610cd3565b9150509250929050565b5f8115159050919050565b610d3981610d25565b82525050565b5f602082019050610d525f830184610d30565b92915050565b610d6181610cb4565b82525050565b5f602082019050610d7a5f830184610d58565b92915050565b5f5f5f60608486031215610d9757610d96610c56565b5b5f610da486828701610ca0565b9350506020610db586828701610ca0565b9250506040610dc686828701610cd3565b9150509250925092565b5f60ff82169050919050565b610de581610dd0565b82525050565b5f602082019050610dfe5f830184610ddc565b92915050565b5f60208284031215610e1957610e18610c56565b5b5f610e2684828501610cd3565b91505092915050565b5f60208284031215610e4457610e43610c56565b5b5f610e5184828501610ca0565b91505092915050565b5f5f60408385031215610e7057610e6f610c56565b5b5f610e7d85828601610ca0565b9250506020610e8e85828601610ca0565b9150509250929050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b5f6002820490506001821680610edc57607f821691505b602082108103610eef57610eee610e98565b5b50919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f610f2c82610cb4565b9150610f3783610cb4565b9250828201905080821115610f4f57610f4e610ef5565b5b92915050565b7f54726164696e67206e6f7420616c6c6f776564207965740000000000000000005f82015250565b5f610f89601783610bd0565b9150610f9482610f55565b602082019050919050565b5f6020820190508181035f830152610fb681610f7d565b9050919050565b610fc681610c79565b82525050565b5f602082019050610fdf5f830184610fbd565b92915050565b5f606082019050610ff85f830186610fbd565b6110056020830185610d58565b6110126040830184610d58565b94935050505056fea2646970667358221220ed428db09359100a1b4c4b5f5e7546e76e393aeb129c1f6456e3fa1cd78f2f6164736f6c634300081e0033
Deployed Bytecode
0x608060405234801561000f575f5ffd5b50600436106100b2575f3560e01c806370a082311161006f57806370a082311461018c57806395d89b41146101bc578063a9059cbb146101da578063ad9c0c2e1461020a578063d00efb2f14610228578063dd62ed3e14610246576100b2565b806306fdde03146100b6578063095ea7b3146100d457806318160ddd1461010457806323b872dd14610122578063313ce5671461015257806342966c6814610170575b5f5ffd5b6100be610276565b6040516100cb9190610c36565b60405180910390f35b6100ee60048036038101906100e99190610ce7565b610306565b6040516100fb9190610d3f565b60405180910390f35b61010c610328565b6040516101199190610d67565b60405180910390f35b61013c60048036038101906101379190610d80565b610331565b6040516101499190610d3f565b60405180910390f35b61015a610397565b6040516101679190610deb565b60405180910390f35b61018a60048036038101906101859190610e04565b61039f565b005b6101a660048036038101906101a19190610e2f565b6103ac565b6040516101b39190610d67565b60405180910390f35b6101c46103f1565b6040516101d19190610c36565b60405180910390f35b6101f460048036038101906101ef9190610ce7565b610481565b6040516102019190610d3f565b60405180910390f35b6102126104e5565b60405161021f9190610d67565b60405180910390f35b6102306104eb565b60405161023d9190610d67565b60405180910390f35b610260600480360381019061025b9190610e5a565b6104f1565b60405161026d9190610d67565b60405180910390f35b60606003805461028590610ec5565b80601f01602080910402602001604051908101604052809291908181526020018280546102b190610ec5565b80156102fc5780601f106102d3576101008083540402835291602001916102fc565b820191905f5260205f20905b8154815290600101906020018083116102df57829003601f168201915b5050505050905090565b5f5f610310610573565b905061031d81858561057a565b600191505092915050565b5f600254905090565b5f6008546007546103429190610f22565b4311610383576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161037a90610f9f565b60405180910390fd5b61038e84848461058c565b90509392505050565b5f6012905090565b6103a933826105ba565b50565b5f5f5f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20549050919050565b60606004805461040090610ec5565b80601f016020809104026020016040519081016040528092919081815260200182805461042c90610ec5565b80156104775780601f1061044e57610100808354040283529160200191610477565b820191905f5260205f20905b81548152906001019060200180831161045a57829003601f168201915b5050505050905090565b5f6008546007546104929190610f22565b43116104d3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016104ca90610f9f565b60405180910390fd5b6104dd8383610639565b905092915050565b60085481565b60075481565b5f60015f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905092915050565b5f33905090565b610587838383600161065b565b505050565b5f5f610596610573565b90506105a385828561082a565b6105ae8585856108bd565b60019150509392505050565b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff160361062a575f6040517f96c6fd1e0000000000000000000000000000000000000000000000000000000081526004016106219190610fcc565b60405180910390fd5b610635825f836109ad565b5050565b5f5f610643610573565b90506106508185856108bd565b600191505092915050565b5f73ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16036106cb575f6040517fe602df050000000000000000000000000000000000000000000000000000000081526004016106c29190610fcc565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff160361073b575f6040517f94280d620000000000000000000000000000000000000000000000000000000081526004016107329190610fcc565b60405180910390fd5b8160015f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508015610824578273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9258460405161081b9190610d67565b60405180910390a35b50505050565b5f61083584846104f1565b90507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8110156108b757818110156108a8578281836040517ffb8f41b200000000000000000000000000000000000000000000000000000000815260040161089f93929190610fe5565b60405180910390fd5b6108b684848484035f61065b565b5b50505050565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff160361092d575f6040517f96c6fd1e0000000000000000000000000000000000000000000000000000000081526004016109249190610fcc565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff160361099d575f6040517fec442f050000000000000000000000000000000000000000000000000000000081526004016109949190610fcc565b60405180910390fd5b6109a88383836109ad565b505050565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16036109fd578060025f8282546109f19190610f22565b92505081905550610acb565b5f5f5f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905081811015610a86578381836040517fe450d38c000000000000000000000000000000000000000000000000000000008152600401610a7d93929190610fe5565b60405180910390fd5b8181035f5f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2081905550505b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603610b12578060025f8282540392505081905550610b5c565b805f5f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f82825401925050819055505b8173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051610bb99190610d67565b60405180910390a3505050565b5f81519050919050565b5f82825260208201905092915050565b8281835e5f83830152505050565b5f601f19601f8301169050919050565b5f610c0882610bc6565b610c128185610bd0565b9350610c22818560208601610be0565b610c2b81610bee565b840191505092915050565b5f6020820190508181035f830152610c4e8184610bfe565b905092915050565b5f5ffd5b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f610c8382610c5a565b9050919050565b610c9381610c79565b8114610c9d575f5ffd5b50565b5f81359050610cae81610c8a565b92915050565b5f819050919050565b610cc681610cb4565b8114610cd0575f5ffd5b50565b5f81359050610ce181610cbd565b92915050565b5f5f60408385031215610cfd57610cfc610c56565b5b5f610d0a85828601610ca0565b9250506020610d1b85828601610cd3565b9150509250929050565b5f8115159050919050565b610d3981610d25565b82525050565b5f602082019050610d525f830184610d30565b92915050565b610d6181610cb4565b82525050565b5f602082019050610d7a5f830184610d58565b92915050565b5f5f5f60608486031215610d9757610d96610c56565b5b5f610da486828701610ca0565b9350506020610db586828701610ca0565b9250506040610dc686828701610cd3565b9150509250925092565b5f60ff82169050919050565b610de581610dd0565b82525050565b5f602082019050610dfe5f830184610ddc565b92915050565b5f60208284031215610e1957610e18610c56565b5b5f610e2684828501610cd3565b91505092915050565b5f60208284031215610e4457610e43610c56565b5b5f610e5184828501610ca0565b91505092915050565b5f5f60408385031215610e7057610e6f610c56565b5b5f610e7d85828601610ca0565b9250506020610e8e85828601610ca0565b9150509250929050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b5f6002820490506001821680610edc57607f821691505b602082108103610eef57610eee610e98565b5b50919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f610f2c82610cb4565b9150610f3783610cb4565b9250828201905080821115610f4f57610f4e610ef5565b5b92915050565b7f54726164696e67206e6f7420616c6c6f776564207965740000000000000000005f82015250565b5f610f89601783610bd0565b9150610f9482610f55565b602082019050919050565b5f6020820190508181035f830152610fb681610f7d565b9050919050565b610fc681610c79565b82525050565b5f602082019050610fdf5f830184610fbd565b92915050565b5f606082019050610ff85f830186610fbd565b6110056020830185610d58565b6110126040830184610d58565b94935050505056fea2646970667358221220ed428db09359100a1b4c4b5f5e7546e76e393aeb129c1f6456e3fa1cd78f2f6164736f6c634300081e0033
Deployed Bytecode Sourcemap
25563:956:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12892:91;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15185:190;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;13994:99;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;26241:186;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;13845:84;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;26435:81;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;14156:118;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;13102:95;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;26079:154;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;25712:30;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;25679:26;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;14724:142;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12892:91;12937:13;12970:5;12963:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12892:91;:::o;15185:190::-;15258:4;15275:13;15291:12;:10;:12::i;:::-;15275:28;;15314:31;15323:5;15330:7;15339:5;15314:8;:31::i;:::-;15363:4;15356:11;;;15185:190;;;;:::o;13994:99::-;14046:7;14073:12;;14066:19;;13994:99;:::o;26241:186::-;26350:4;26012:11;;25998;;:25;;;;:::i;:::-;25983:12;:40;25975:76;;;;;;;;;;;;:::i;:::-;;;;;;;;;26374:45:::1;26393:6;26401:9;26412:6;26374:18;:45::i;:::-;26367:52;;26241:186:::0;;;;;:::o;13845:84::-;13894:5;13919:2;13912:9;;13845:84;:::o;26435:81::-;26483:25;26489:10;26501:6;26483:5;:25::i;:::-;26435:81;:::o;14156:118::-;14221:7;14248:9;:18;14258:7;14248:18;;;;;;;;;;;;;;;;14241:25;;14156:118;;;:::o;13102:95::-;13149:13;13182:7;13175:14;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;13102:95;:::o;26079:154::-;26168:4;26012:11;;25998;;:25;;;;:::i;:::-;25983:12;:40;25975:76;;;;;;;;;;;;:::i;:::-;;;;;;;;;26192:33:::1;26207:9;26218:6;26192:14;:33::i;:::-;26185:40;;26079:154:::0;;;;:::o;25712:30::-;;;;:::o;25679:26::-;;;;:::o;14724:142::-;14804:7;14831:11;:18;14843:5;14831:18;;;;;;;;;;;;;;;:27;14850:7;14831:27;;;;;;;;;;;;;;;;14824:34;;14724:142;;;;:::o;4211:98::-;4264:7;4291:10;4284:17;;4211:98;:::o;20044:130::-;20129:37;20138:5;20145:7;20154:5;20161:4;20129:8;:37::i;:::-;20044:130;;;:::o;15985:249::-;16072:4;16089:15;16107:12;:10;:12::i;:::-;16089:30;;16130:37;16146:4;16152:7;16161:5;16130:15;:37::i;:::-;16178:26;16188:4;16194:2;16198:5;16178:9;:26::i;:::-;16222:4;16215:11;;;15985:249;;;;;:::o;19280:211::-;19370:1;19351:21;;:7;:21;;;19347:91;;19423:1;19396:30;;;;;;;;;;;:::i;:::-;;;;;;;;19347:91;19448:35;19456:7;19473:1;19477:5;19448:7;:35::i;:::-;19280:211;;:::o;14479:182::-;14548:4;14565:13;14581:12;:10;:12::i;:::-;14565:28;;14604:27;14614:5;14621:2;14625:5;14604:9;:27::i;:::-;14649:4;14642:11;;;14479:182;;;;:::o;21041:443::-;21171:1;21154:19;;:5;:19;;;21150:91;;21226:1;21197:32;;;;;;;;;;;:::i;:::-;;;;;;;;21150:91;21274:1;21255:21;;:7;:21;;;21251:92;;21328:1;21300:31;;;;;;;;;;;:::i;:::-;;;;;;;;21251:92;21383:5;21353:11;:18;21365:5;21353:18;;;;;;;;;;;;;;;:27;21372:7;21353:27;;;;;;;;;;;;;;;:35;;;;21403:9;21399:78;;;21450:7;21434:31;;21443:5;21434:31;;;21459:5;21434:31;;;;;;:::i;:::-;;;;;;;;21399:78;21041:443;;;;:::o;21776:486::-;21876:24;21903:25;21913:5;21920:7;21903:9;:25::i;:::-;21876:52;;21962:17;21943:16;:36;21939:316;;;22019:5;22000:16;:24;21996:132;;;22079:7;22088:16;22106:5;22052:60;;;;;;;;;;;;;:::i;:::-;;;;;;;;21996:132;22171:57;22180:5;22187:7;22215:5;22196:16;:24;22222:5;22171:8;:57::i;:::-;21939:316;21865:397;21776:486;;;:::o;16619:308::-;16719:1;16703:18;;:4;:18;;;16699:88;;16772:1;16745:30;;;;;;;;;;;:::i;:::-;;;;;;;;16699:88;16815:1;16801:16;;:2;:16;;;16797:88;;16870:1;16841:32;;;;;;;;;;;:::i;:::-;;;;;;;;16797:88;16895:24;16903:4;16909:2;16913:5;16895:7;:24::i;:::-;16619:308;;;:::o;17251:1135::-;17357:1;17341:18;;:4;:18;;;17337:552;;17495:5;17479:12;;:21;;;;;;;:::i;:::-;;;;;;;;17337:552;;;17533:19;17555:9;:15;17565:4;17555:15;;;;;;;;;;;;;;;;17533:37;;17603:5;17589:11;:19;17585:117;;;17661:4;17667:11;17680:5;17636:50;;;;;;;;;;;;;:::i;:::-;;;;;;;;17585:117;17857:5;17843:11;:19;17825:9;:15;17835:4;17825:15;;;;;;;;;;;;;;;:37;;;;17518:371;17337:552;17919:1;17905:16;;:2;:16;;;17901:435;;18087:5;18071:12;;:21;;;;;;;;;;;17901:435;;;18304:5;18287:9;:13;18297:2;18287:13;;;;;;;;;;;;;;;;:22;;;;;;;;;;;17901:435;18368:2;18353:25;;18362:4;18353:25;;;18372:5;18353:25;;;;;;:::i;:::-;;;;;;;;17251:1135;;;:::o;7:99:1:-;59:6;93:5;87:12;77:22;;7:99;;;:::o;112:169::-;196:11;230:6;225:3;218:19;270:4;265:3;261:14;246:29;;112:169;;;;:::o;287:139::-;376:6;371:3;366;360:23;417:1;408:6;403:3;399:16;392:27;287:139;;;:::o;432:102::-;473:6;524:2;520:7;515:2;508:5;504:14;500:28;490:38;;432:102;;;:::o;540:377::-;628:3;656:39;689:5;656:39;:::i;:::-;711:71;775:6;770:3;711:71;:::i;:::-;704:78;;791:65;849:6;844:3;837:4;830:5;826:16;791:65;:::i;:::-;881:29;903:6;881:29;:::i;:::-;876:3;872:39;865:46;;632:285;540:377;;;;:::o;923:313::-;1036:4;1074:2;1063:9;1059:18;1051:26;;1123:9;1117:4;1113:20;1109:1;1098:9;1094:17;1087:47;1151:78;1224:4;1215:6;1151:78;:::i;:::-;1143:86;;923:313;;;;:::o;1323:117::-;1432:1;1429;1422:12;1569:126;1606:7;1646:42;1639:5;1635:54;1624:65;;1569:126;;;:::o;1701:96::-;1738:7;1767:24;1785:5;1767:24;:::i;:::-;1756:35;;1701:96;;;:::o;1803:122::-;1876:24;1894:5;1876:24;:::i;:::-;1869:5;1866:35;1856:63;;1915:1;1912;1905:12;1856:63;1803:122;:::o;1931:139::-;1977:5;2015:6;2002:20;1993:29;;2031:33;2058:5;2031:33;:::i;:::-;1931:139;;;;:::o;2076:77::-;2113:7;2142:5;2131:16;;2076:77;;;:::o;2159:122::-;2232:24;2250:5;2232:24;:::i;:::-;2225:5;2222:35;2212:63;;2271:1;2268;2261:12;2212:63;2159:122;:::o;2287:139::-;2333:5;2371:6;2358:20;2349:29;;2387:33;2414:5;2387:33;:::i;:::-;2287:139;;;;:::o;2432:474::-;2500:6;2508;2557:2;2545:9;2536:7;2532:23;2528:32;2525:119;;;2563:79;;:::i;:::-;2525:119;2683:1;2708:53;2753:7;2744:6;2733:9;2729:22;2708:53;:::i;:::-;2698:63;;2654:117;2810:2;2836:53;2881:7;2872:6;2861:9;2857:22;2836:53;:::i;:::-;2826:63;;2781:118;2432:474;;;;;:::o;2912:90::-;2946:7;2989:5;2982:13;2975:21;2964:32;;2912:90;;;:::o;3008:109::-;3089:21;3104:5;3089:21;:::i;:::-;3084:3;3077:34;3008:109;;:::o;3123:210::-;3210:4;3248:2;3237:9;3233:18;3225:26;;3261:65;3323:1;3312:9;3308:17;3299:6;3261:65;:::i;:::-;3123:210;;;;:::o;3339:118::-;3426:24;3444:5;3426:24;:::i;:::-;3421:3;3414:37;3339:118;;:::o;3463:222::-;3556:4;3594:2;3583:9;3579:18;3571:26;;3607:71;3675:1;3664:9;3660:17;3651:6;3607:71;:::i;:::-;3463:222;;;;:::o;3691:619::-;3768:6;3776;3784;3833:2;3821:9;3812:7;3808:23;3804:32;3801:119;;;3839:79;;:::i;:::-;3801:119;3959:1;3984:53;4029:7;4020:6;4009:9;4005:22;3984:53;:::i;:::-;3974:63;;3930:117;4086:2;4112:53;4157:7;4148:6;4137:9;4133:22;4112:53;:::i;:::-;4102:63;;4057:118;4214:2;4240:53;4285:7;4276:6;4265:9;4261:22;4240:53;:::i;:::-;4230:63;;4185:118;3691:619;;;;;:::o;4316:86::-;4351:7;4391:4;4384:5;4380:16;4369:27;;4316:86;;;:::o;4408:112::-;4491:22;4507:5;4491:22;:::i;:::-;4486:3;4479:35;4408:112;;:::o;4526:214::-;4615:4;4653:2;4642:9;4638:18;4630:26;;4666:67;4730:1;4719:9;4715:17;4706:6;4666:67;:::i;:::-;4526:214;;;;:::o;4746:329::-;4805:6;4854:2;4842:9;4833:7;4829:23;4825:32;4822:119;;;4860:79;;:::i;:::-;4822:119;4980:1;5005:53;5050:7;5041:6;5030:9;5026:22;5005:53;:::i;:::-;4995:63;;4951:117;4746:329;;;;:::o;5081:::-;5140:6;5189:2;5177:9;5168:7;5164:23;5160:32;5157:119;;;5195:79;;:::i;:::-;5157:119;5315:1;5340:53;5385:7;5376:6;5365:9;5361:22;5340:53;:::i;:::-;5330:63;;5286:117;5081:329;;;;:::o;5416:474::-;5484:6;5492;5541:2;5529:9;5520:7;5516:23;5512:32;5509:119;;;5547:79;;:::i;:::-;5509:119;5667:1;5692:53;5737:7;5728:6;5717:9;5713:22;5692:53;:::i;:::-;5682:63;;5638:117;5794:2;5820:53;5865:7;5856:6;5845:9;5841:22;5820:53;:::i;:::-;5810:63;;5765:118;5416:474;;;;;:::o;5896:180::-;5944:77;5941:1;5934:88;6041:4;6038:1;6031:15;6065:4;6062:1;6055:15;6082:320;6126:6;6163:1;6157:4;6153:12;6143:22;;6210:1;6204:4;6200:12;6231:18;6221:81;;6287:4;6279:6;6275:17;6265:27;;6221:81;6349:2;6341:6;6338:14;6318:18;6315:38;6312:84;;6368:18;;:::i;:::-;6312:84;6133:269;6082:320;;;:::o;6408:180::-;6456:77;6453:1;6446:88;6553:4;6550:1;6543:15;6577:4;6574:1;6567:15;6594:191;6634:3;6653:20;6671:1;6653:20;:::i;:::-;6648:25;;6687:20;6705:1;6687:20;:::i;:::-;6682:25;;6730:1;6727;6723:9;6716:16;;6751:3;6748:1;6745:10;6742:36;;;6758:18;;:::i;:::-;6742:36;6594:191;;;;:::o;6791:173::-;6931:25;6927:1;6919:6;6915:14;6908:49;6791:173;:::o;6970:366::-;7112:3;7133:67;7197:2;7192:3;7133:67;:::i;:::-;7126:74;;7209:93;7298:3;7209:93;:::i;:::-;7327:2;7322:3;7318:12;7311:19;;6970:366;;;:::o;7342:419::-;7508:4;7546:2;7535:9;7531:18;7523:26;;7595:9;7589:4;7585:20;7581:1;7570:9;7566:17;7559:47;7623:131;7749:4;7623:131;:::i;:::-;7615:139;;7342:419;;;:::o;7767:118::-;7854:24;7872:5;7854:24;:::i;:::-;7849:3;7842:37;7767:118;;:::o;7891:222::-;7984:4;8022:2;8011:9;8007:18;7999:26;;8035:71;8103:1;8092:9;8088:17;8079:6;8035:71;:::i;:::-;7891:222;;;;:::o;8119:442::-;8268:4;8306:2;8295:9;8291:18;8283:26;;8319:71;8387:1;8376:9;8372:17;8363:6;8319:71;:::i;:::-;8400:72;8468:2;8457:9;8453:18;8444:6;8400:72;:::i;:::-;8482;8550:2;8539:9;8535:18;8526:6;8482:72;:::i;:::-;8119:442;;;;;;:::o
Swarm Source
ipfs://ed428db09359100a1b4c4b5f5e7546e76e393aeb129c1f6456e3fa1cd78f2f61
Loading...
Loading
Loading...
Loading
Net Worth in USD
$0.00
Net Worth in ETH
0
Multichain Portfolio | 34 Chains
| Chain | Token | Portfolio % | Price | Amount | Value |
|---|
Loading...
Loading
Loading...
Loading
Loading...
Loading
[ Download: CSV Export ]
A contract address hosts a smart contract, which is a set of code stored on the blockchain that runs when predetermined conditions are met. Learn more about addresses in our Knowledge Base.