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 11 from a total of 11 transactions
| Transaction Hash |
Method
|
Block
|
From
|
|
To
|
||||
|---|---|---|---|---|---|---|---|---|---|
| Approve | 20698857 | 536 days ago | IN | 0 ETH | 0.00012761 | ||||
| Transfer | 20698625 | 537 days ago | IN | 0 ETH | 0.00009743 | ||||
| Transfer | 20698609 | 537 days ago | IN | 0 ETH | 0.00008023 | ||||
| Approve | 20681960 | 539 days ago | IN | 0 ETH | 0.00015822 | ||||
| Approve | 20677470 | 539 days ago | IN | 0 ETH | 0.0002472 | ||||
| Approve | 20674145 | 540 days ago | IN | 0 ETH | 0.00010468 | ||||
| Transfer | 20674101 | 540 days ago | IN | 0 ETH | 0.0001455 | ||||
| Approve | 20670457 | 540 days ago | IN | 0 ETH | 0.00023649 | ||||
| Approve | 20670416 | 540 days ago | IN | 0 ETH | 0.0002437 | ||||
| Approve | 20670148 | 541 days ago | IN | 0 ETH | 0.00010122 | ||||
| Set Gov | 20668913 | 541 days ago | IN | 0 ETH | 0.00007108 |
View more zero value Internal Transactions in Advanced View mode
Advanced mode:
Loading...
Loading
Loading...
Loading
Cross-Chain Transactions
Loading...
Loading
Contract Name:
LogX
Compiler Version
v0.8.22+commit.4fc1097e
Optimization Enabled:
Yes with 200 runs
Other Settings:
paris EvmVersion
Contract Source Code (Solidity Standard Json-Input format)
// SPDX-License-Identifier: MIT
pragma solidity ^0.8.19;
/**
@title $LogX
*/
import "../libraries/token/IERC20.sol";
import "../libraries/token/SafeERC20.sol";
import "./interfaces/ILogX.sol";
import "./common/Errors.sol";
contract LogX is IERC20, ILogX {
using SafeERC20 for IERC20;
string public name;
string public symbol;
uint8 public constant decimals = 18;
//ToDo - add a limit of 1 billion tokens on total supply
uint256 public override totalSupply;
uint256 public maxSupply = 1_000_000_000 * 1e18; // 1 billion tokens
address public gov;
mapping (address => uint256) public balances;
mapping (address => mapping (address => uint256)) public allowances;
mapping (address => bool) public override isMinter;
modifier onlyGov() {
require(msg.sender == gov, "LogX: forbidden");
_;
}
modifier onlyMinter() {
require(isMinter[msg.sender], "LogX: forbidden");
_;
}
constructor(uint256 _initialSupply) {
name = "LOGX";
symbol = "$LOGX";
gov = msg.sender;
_mint(msg.sender, _initialSupply);
}
function setGov(address _gov) external onlyGov {
require(_gov != address(0), "LogX: invalid address");
gov = _gov;
}
function setInfo(string memory _name, string memory _symbol) external override onlyGov {
name = _name;
symbol = _symbol;
}
function setMinter(address _minter, bool _isActive) external override onlyGov {
require(_minter != address(0), "LogX: invalid address");
isMinter[_minter] = _isActive;
}
// to help users who accidentally send their tokens to this contract
function withdrawToken(address _token, address _account, uint256 _amount) external override onlyGov {
IERC20(_token).safeTransfer(_account, _amount);
}
function id() external view returns (string memory) {
return symbol;
}
function balanceOf(address _account) external view override returns (uint256) {
return balances[_account];
}
function transfer(address _recipient, uint256 _amount) external override returns (bool) {
_transfer(msg.sender, _recipient, _amount);
return true;
}
function allowance(address _owner, address _spender) external view override returns (uint256) {
return allowances[_owner][_spender];
}
function approve(address _spender, uint256 _amount) external override returns (bool) {
_approve(msg.sender, _spender, _amount);
return true;
}
function transferFrom(address _sender, address _recipient, uint256 _amount) external override returns (bool) {
uint256 allowanceAmount = allowances[_sender][msg.sender];
require(allowanceAmount >= _amount, ERR_TRANSFER_AMOUNT_EXCEEDS_ALLOWANCE);
uint256 nextAllowance = allowances[_sender][msg.sender] - _amount;
_approve(_sender, msg.sender, nextAllowance);
_transfer(_sender, _recipient, _amount);
return true;
}
function mint(address _account, uint256 _amount) external override onlyMinter {
require(totalSupply + _amount <= maxSupply, ERR_MINT_AMOUNT_EXCEEDS_MAX_SUPPLY);
_mint(_account, _amount);
}
function burn(address _account, uint256 _amount) external override onlyMinter {
_burn(_account, _amount);
}
function _mint(address _account, uint256 _amount) internal {
require(_account != address(0), "LogX: mint to the zero address");
totalSupply = totalSupply + _amount;
balances[_account] = balances[_account] + _amount;
emit Transfer(address(0), _account, _amount);
}
function _burn(address _account, uint256 _amount) internal {
require(_account != address(0), "LogX: burn from the zero address");
require(balances[_account] >= _amount, ERR_BURN_AMOUNT_EXCEEDS_BALANCE);
balances[_account] = balances[_account] - _amount;
totalSupply = totalSupply - _amount;
emit Transfer(_account, address(0), _amount);
}
function _transfer(address _sender, address _recipient, uint256 _amount) private {
require(_sender != address(0), ERR_TRANSFER_FROM_ZERO_ADDRESS);
require(_recipient != address(0), ERR_TRANSFER_TO_ZERO_ADDRESS);
//Note - since $LOGX will be used as gas token on Orbit chain, transfering the token to self should not be allowed.
require(_sender != _recipient, "LogX: transfer to self");
require(balances[_sender] >= _amount, ERR_TRANSFER_AMOUNT_EXCEEDS_BALANCE);
balances[_sender] = balances[_sender] - _amount;
balances[_recipient] = balances[_recipient] + _amount;
emit Transfer(_sender, _recipient,_amount);
}
function _approve(address _owner, address _spender, uint256 _amount) private {
require(_owner != address(0), ERR_APPROVE_FROM_ZERO_ADDRESS);
require(_spender != address(0), ERR_APPROVE_TO_ZERO_ADDRESS);
allowances[_owner][_spender] = _amount;
emit Approval(_owner, _spender, _amount);
}
}// SPDX-License-Identifier: MIT
pragma solidity ^0.8.19;
/**
* @dev Interface of the ERC20 standard as defined in the EIP.
*/
interface IERC20 {
/**
* @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 `recipient`.
*
* Returns a boolean value indicating whether the operation succeeded.
*
* Emits a {Transfer} event.
*/
function transfer(address recipient, 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 `sender` to `recipient` 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 sender, address recipient, uint256 amount) external returns (bool);
/**
* @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);
}// SPDX-License-Identifier: MIT
pragma solidity ^0.8.19;
import "./IERC20.sol";
import "../math/SafeMath.sol";
import "../utils/Address.sol";
/**
* @title SafeERC20
* @dev Wrappers around ERC20 operations that throw on failure (when the token
* contract returns false). Tokens that return no value (and instead revert or
* throw on failure) are also supported, non-reverting calls are assumed to be
* successful.
* To use this library you can add a `using SafeERC20 for IERC20;` statement to your contract,
* which allows you to call the safe operations as `token.safeTransfer(...)`, etc.
*/
library SafeERC20 {
using SafeMath for uint256;
using Address for address;
function safeTransfer(IERC20 token, address to, uint256 value) internal {
_callOptionalReturn(token, abi.encodeWithSelector(token.transfer.selector, to, value));
}
function safeTransferFrom(IERC20 token, address from, address to, uint256 value) internal {
_callOptionalReturn(token, abi.encodeWithSelector(token.transferFrom.selector, from, to, value));
}
/**
* @dev Deprecated. This function has issues similar to the ones found in
* {IERC20-approve}, and its usage is discouraged.
*
* Whenever possible, use {safeIncreaseAllowance} and
* {safeDecreaseAllowance} instead.
*/
function safeApprove(IERC20 token, address spender, uint256 value) internal {
// safeApprove should only be called when setting an initial allowance,
// or when resetting it to zero. To increase and decrease it, use
// 'safeIncreaseAllowance' and 'safeDecreaseAllowance'
// solhint-disable-next-line max-line-length
require((value == 0) || (token.allowance(address(this), spender) == 0),
"SafeERC20: approve from non-zero to non-zero allowance"
);
_callOptionalReturn(token, abi.encodeWithSelector(token.approve.selector, spender, value));
}
function safeIncreaseAllowance(IERC20 token, address spender, uint256 value) internal {
uint256 newAllowance = token.allowance(address(this), spender).add(value);
_callOptionalReturn(token, abi.encodeWithSelector(token.approve.selector, spender, newAllowance));
}
function safeDecreaseAllowance(IERC20 token, address spender, uint256 value) internal {
uint256 newAllowance = token.allowance(address(this), spender).sub(value, "SafeERC20: decreased allowance below zero");
_callOptionalReturn(token, abi.encodeWithSelector(token.approve.selector, spender, newAllowance));
}
/**
* @dev Imitates a Solidity high-level call (i.e. a regular function call to a contract), relaxing the requirement
* on the return value: the return value is optional (but if data is returned, it must not be false).
* @param token The token targeted by the call.
* @param data The call data (encoded using abi.encode or one of its variants).
*/
function _callOptionalReturn(IERC20 token, bytes memory data) private {
// We need to perform a low level call here, to bypass Solidity's return data size checking mechanism, since
// we're implementing it ourselves. We use {Address.functionCall} to perform this call, which verifies that
// the target address contains contract code and also asserts for success in the low-level call.
bytes memory returndata = address(token).functionCall(data, "SafeERC20: low-level call failed");
if (returndata.length > 0) { // Return data is optional
// solhint-disable-next-line max-line-length
require(abi.decode(returndata, (bool)), "SafeERC20: ERC20 operation did not succeed");
}
}
}// SPDX-License-Identifier: MIT
pragma solidity ^0.8.19;
/**
* @title ILogX Interface
* @dev Interface for the LogX token contract functionalities beyond standard ERC20
*/
interface ILogX {
/**
* @dev Sets a new governance address. Only callable by the current governance address.
* @param _gov New governance address.
*/
function setGov(address _gov) external;
/**
* @dev Sets the token information such as name and symbol. Only callable by the governance address.
* @param _name New token name.
* @param _symbol New token symbol.
*/
function setInfo(string memory _name, string memory _symbol) external;
/**
* @dev Sets or unsets an address as a minter. Only callable by the governance address.
* @param _minter The address to modify minter status.
* @param _isActive Whether the address should be a minter or not.
*/
function setMinter(address _minter, bool _isActive) external;
/**
* @dev Allows the governance to withdraw any ERC20 token sent to the contract by mistake.
* @param _token The address of the token to withdraw.
* @param _account The destination address of the tokens.
* @param _amount The amount of tokens to withdraw.
*/
function withdrawToken(address _token, address _account, uint256 _amount) external;
/**
* @dev Mint new tokens to a specified address. This can only be called by authorized minters.
* @param _account The address to mint tokens to.
* @param _amount The amount of tokens to mint.
*/
function mint(address _account, uint256 _amount) external;
/**
* @dev Burn tokens from a specified address. This can only be called by authorized minters.
* @param _account The address from which tokens will be burned.
* @param _amount The amount of tokens to burn.
*/
function burn(address _account, uint256 _amount) external;
/**
* @dev Check if an address is authorized to mint new tokens.
* @param _account The address to verify.
* @return A boolean indicating if the address is authorized to mint tokens.
*/
function isMinter(address _account) external view returns (bool);
}// SPDX-License-Identifier: GPL-2.0-or-later pragma solidity ^0.8.19; string constant ERR_TRANSFER_AMOUNT_EXCEEDS_ALLOWANCE = "TAEA"; string constant ERR_BURN_AMOUNT_EXCEEDS_BALANCE = "BAEB"; string constant ERR_TRANSFER_FROM_ZERO_ADDRESS = "TFZA"; string constant ERR_TRANSFER_TO_ZERO_ADDRESS = "TTZA"; string constant ERR_TRANSFER_AMOUNT_EXCEEDS_BALANCE = "TAEB"; string constant ERR_APPROVE_FROM_ZERO_ADDRESS = "AFZA"; string constant ERR_APPROVE_TO_ZERO_ADDRESS = "ATZA"; string constant ERR_STLOGX_TRANSFER_NOT_ALLOWED = "STNA"; string constant ERR_MINT_AMOUNT_EXCEEDS_MAX_SUPPLY = "MAEM";
// SPDX-License-Identifier: MIT
pragma solidity ^0.8.19;
/**
* @dev Wrappers over Solidity's arithmetic operations with added overflow
* checks.
*
* Arithmetic operations in Solidity wrap on overflow. This can easily result
* in bugs, because programmers usually assume that an overflow raises an
* error, which is the standard behavior in high level programming languages.
* `SafeMath` restores this intuition by reverting the transaction when an
* operation overflows.
*
* Using this library instead of the unchecked operations eliminates an entire
* class of bugs, so it's recommended to use it always.
*/
library SafeMath {
/**
* @dev Returns the addition of two unsigned integers, reverting on
* overflow.
*
* Counterpart to Solidity's `+` operator.
*
* Requirements:
*
* - Addition cannot overflow.
*/
function add(uint256 a, uint256 b) internal pure returns (uint256) {
uint256 c = a + b;
require(c >= a, "SafeMath: addition overflow");
return c;
}
/**
* @dev Returns the subtraction of two unsigned integers, reverting on
* overflow (when the result is negative).
*
* Counterpart to Solidity's `-` operator.
*
* Requirements:
*
* - Subtraction cannot overflow.
*/
function sub(uint256 a, uint256 b) internal pure returns (uint256) {
return sub(a, b, "SafeMath: subtraction overflow");
}
/**
* @dev Returns the subtraction of two unsigned integers, reverting with custom message on
* overflow (when the result is negative).
*
* Counterpart to Solidity's `-` operator.
*
* Requirements:
*
* - Subtraction cannot overflow.
*/
function sub(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) {
require(b <= a, errorMessage);
uint256 c = a - b;
return c;
}
/**
* @dev Returns the multiplication of two unsigned integers, reverting on
* overflow.
*
* Counterpart to Solidity's `*` operator.
*
* Requirements:
*
* - Multiplication cannot overflow.
*/
function mul(uint256 a, uint256 b) internal pure returns (uint256) {
// Gas optimization: this is cheaper than requiring 'a' not being zero, but the
// benefit is lost if 'b' is also tested.
// See: https://github.com/OpenZeppelin/openzeppelin-contracts/pull/522
if (a == 0) {
return 0;
}
uint256 c = a * b;
require(c / a == b, "SafeMath: multiplication overflow");
return c;
}
/**
* @dev Returns the integer division of two unsigned integers. Reverts on
* division by zero. The result is rounded towards zero.
*
* Counterpart to Solidity's `/` operator. Note: this function uses a
* `revert` opcode (which leaves remaining gas untouched) while Solidity
* uses an invalid opcode to revert (consuming all remaining gas).
*
* Requirements:
*
* - The divisor cannot be zero.
*/
function div(uint256 a, uint256 b) internal pure returns (uint256) {
return div(a, b, "SafeMath: division by zero");
}
/**
* @dev Returns the integer division of two unsigned integers. Reverts with custom message on
* division by zero. The result is rounded towards zero.
*
* Counterpart to Solidity's `/` operator. Note: this function uses a
* `revert` opcode (which leaves remaining gas untouched) while Solidity
* uses an invalid opcode to revert (consuming all remaining gas).
*
* Requirements:
*
* - The divisor cannot be zero.
*/
function div(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) {
require(b > 0, errorMessage);
uint256 c = a / b;
// assert(a == b * c + a % b); // There is no case in which this doesn't hold
return c;
}
/**
* @dev Returns the remainder of dividing two unsigned integers. (unsigned integer modulo),
* Reverts when dividing by zero.
*
* Counterpart to Solidity's `%` operator. This function uses a `revert`
* opcode (which leaves remaining gas untouched) while Solidity uses an
* invalid opcode to revert (consuming all remaining gas).
*
* Requirements:
*
* - The divisor cannot be zero.
*/
function mod(uint256 a, uint256 b) internal pure returns (uint256) {
return mod(a, b, "SafeMath: modulo by zero");
}
/**
* @dev Returns the remainder of dividing two unsigned integers. (unsigned integer modulo),
* Reverts with custom message when dividing by zero.
*
* Counterpart to Solidity's `%` operator. This function uses a `revert`
* opcode (which leaves remaining gas untouched) while Solidity uses an
* invalid opcode to revert (consuming all remaining gas).
*
* Requirements:
*
* - The divisor cannot be zero.
*/
function mod(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) {
require(b != 0, errorMessage);
return a % b;
}
}// SPDX-License-Identifier: MIT
pragma solidity ^0.8.19;
/**
* @dev Collection of functions related to the address type
*/
library Address {
/**
* @dev Returns true if `account` is a contract.
*
* [IMPORTANT]
* ====
* It is unsafe to assume that an address for which this function returns
* false is an externally-owned account (EOA) and not a contract.
*
* Among others, `isContract` will return false for the following
* types of addresses:
*
* - an externally-owned account
* - a contract in construction
* - an address where a contract will be created
* - an address where a contract lived, but was destroyed
* ====
*/
function isContract(address account) internal view returns (bool) {
// This method relies on extcodesize, which returns 0 for contracts in
// construction, since the code is only stored at the end of the
// constructor execution.
uint256 size;
// solhint-disable-next-line no-inline-assembly
assembly { size := extcodesize(account) }
return size > 0;
}
/**
* @dev Replacement for Solidity's `transfer`: sends `amount` wei to
* `recipient`, forwarding all available gas and reverting on errors.
*
* https://eips.ethereum.org/EIPS/eip-1884[EIP1884] increases the gas cost
* of certain opcodes, possibly making contracts go over the 2300 gas limit
* imposed by `transfer`, making them unable to receive funds via
* `transfer`. {sendValue} removes this limitation.
*
* https://diligence.consensys.net/posts/2019/09/stop-using-soliditys-transfer-now/[Learn more].
*
* IMPORTANT: because control is transferred to `recipient`, care must be
* taken to not create reentrancy vulnerabilities. Consider using
* {ReentrancyGuard} or the
* https://solidity.readthedocs.io/en/v0.5.11/security-considerations.html#use-the-checks-effects-interactions-pattern[checks-effects-interactions pattern].
*/
function sendValue(address payable recipient, uint256 amount) internal {
require(address(this).balance >= amount, "Address: insufficient balance");
// solhint-disable-next-line avoid-low-level-calls, avoid-call-value
(bool success, ) = recipient.call{ value: amount }("");
require(success, "Address: unable to send value, recipient may have reverted");
}
/**
* @dev Performs a Solidity function call using a low level `call`. A
* plain`call` is an unsafe replacement for a function call: use this
* function instead.
*
* If `target` reverts with a revert reason, it is bubbled up by this
* function (like regular Solidity function calls).
*
* Returns the raw returned data. To convert to the expected return value,
* use https://solidity.readthedocs.io/en/latest/units-and-global-variables.html?highlight=abi.decode#abi-encoding-and-decoding-functions[`abi.decode`].
*
* Requirements:
*
* - `target` must be a contract.
* - calling `target` with `data` must not revert.
*
* _Available since v3.1._
*/
function functionCall(address target, bytes memory data) internal returns (bytes memory) {
return functionCall(target, data, "Address: low-level call failed");
}
/**
* @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`], but with
* `errorMessage` as a fallback revert reason when `target` reverts.
*
* _Available since v3.1._
*/
function functionCall(address target, bytes memory data, string memory errorMessage) internal returns (bytes memory) {
return functionCallWithValue(target, data, 0, errorMessage);
}
/**
* @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],
* but also transferring `value` wei to `target`.
*
* Requirements:
*
* - the calling contract must have an ETH balance of at least `value`.
* - the called Solidity function must be `payable`.
*
* _Available since v3.1._
*/
function functionCallWithValue(address target, bytes memory data, uint256 value) internal returns (bytes memory) {
return functionCallWithValue(target, data, value, "Address: low-level call with value failed");
}
/**
* @dev Same as {xref-Address-functionCallWithValue-address-bytes-uint256-}[`functionCallWithValue`], but
* with `errorMessage` as a fallback revert reason when `target` reverts.
*
* _Available since v3.1._
*/
function functionCallWithValue(address target, bytes memory data, uint256 value, string memory errorMessage) internal returns (bytes memory) {
require(address(this).balance >= value, "Address: insufficient balance for call");
require(isContract(target), "Address: call to non-contract");
// solhint-disable-next-line avoid-low-level-calls
(bool success, bytes memory returndata) = target.call{ value: value }(data);
return _verifyCallResult(success, returndata, errorMessage);
}
/**
* @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],
* but performing a static call.
*
* _Available since v3.3._
*/
function functionStaticCall(address target, bytes memory data) internal view returns (bytes memory) {
return functionStaticCall(target, data, "Address: low-level static call failed");
}
/**
* @dev Same as {xref-Address-functionCall-address-bytes-string-}[`functionCall`],
* but performing a static call.
*
* _Available since v3.3._
*/
function functionStaticCall(address target, bytes memory data, string memory errorMessage) internal view returns (bytes memory) {
require(isContract(target), "Address: static call to non-contract");
// solhint-disable-next-line avoid-low-level-calls
(bool success, bytes memory returndata) = target.staticcall(data);
return _verifyCallResult(success, returndata, errorMessage);
}
/**
* @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],
* but performing a delegate call.
*
* _Available since v3.3._
*/
function functionDelegateCall(address target, bytes memory data) internal returns (bytes memory) {
return functionDelegateCall(target, data, "Address: low-level delegate call failed");
}
/**
* @dev Same as {xref-Address-functionCall-address-bytes-string-}[`functionCall`],
* but performing a delegate call.
*
* _Available since v3.3._
*/
function functionDelegateCall(address target, bytes memory data, string memory errorMessage) internal returns (bytes memory) {
require(isContract(target), "Address: delegate call to non-contract");
// solhint-disable-next-line avoid-low-level-calls
(bool success, bytes memory returndata) = target.delegatecall(data);
return _verifyCallResult(success, returndata, errorMessage);
}
function _verifyCallResult(bool success, bytes memory returndata, string memory errorMessage) private pure returns(bytes memory) {
if (success) {
return returndata;
} else {
// Look for revert reason and bubble it up if present
if (returndata.length > 0) {
// The easiest way to bubble the revert reason is using memory via assembly
// solhint-disable-next-line no-inline-assembly
assembly {
let returndata_size := mload(returndata)
revert(add(32, returndata), returndata_size)
}
} else {
revert(errorMessage);
}
}
}
}{
"remappings": [
"openzeppelin-contracts/=lib/openzeppelin-contracts/",
"openzeppelin-contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/",
"@openzeppelin/contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/",
"@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/",
"ds-test/=lib/openzeppelin-contracts-upgradeable/lib/forge-std/lib/ds-test/src/",
"erc4626-tests/=lib/openzeppelin-contracts-upgradeable/lib/erc4626-tests/",
"forge-std/=lib/forge-std/src/",
"openzeppelin-contracts/=lib/openzeppelin-contracts/"
],
"optimizer": {
"enabled": true,
"runs": 200
},
"metadata": {
"useLiteralContent": false,
"bytecodeHash": "ipfs",
"appendCBOR": true
},
"outputSelection": {
"*": {
"*": [
"evm.bytecode",
"evm.deployedBytecode",
"devdoc",
"userdoc",
"metadata",
"abi"
]
}
},
"evmVersion": "paris",
"viaIR": false,
"libraries": {}
}Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
Contract ABI
API[{"inputs":[{"internalType":"uint256","name":"_initialSupply","type":"uint256"}],"stateMutability":"nonpayable","type":"constructor"},{"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":"","type":"address"},{"internalType":"address","name":"","type":"address"}],"name":"allowances","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":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"balances","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_account","type":"address"},{"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":"gov","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"id","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"isMinter","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_account","type":"address"},{"internalType":"uint256","name":"_amount","type":"uint256"}],"name":"mint","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_gov","type":"address"}],"name":"setGov","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"string","name":"_name","type":"string"},{"internalType":"string","name":"_symbol","type":"string"}],"name":"setInfo","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_minter","type":"address"},{"internalType":"bool","name":"_isActive","type":"bool"}],"name":"setMinter","outputs":[],"stateMutability":"nonpayable","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"},{"inputs":[{"internalType":"address","name":"_token","type":"address"},{"internalType":"address","name":"_account","type":"address"},{"internalType":"uint256","name":"_amount","type":"uint256"}],"name":"withdrawToken","outputs":[],"stateMutability":"nonpayable","type":"function"}]Contract Creation Code
60806040526b033b2e3c9fd0803ce80000006003553480156200002157600080fd5b50604051620017a2380380620017a28339810160408190526200004491620001b5565b6040805180820190915260048152630989e8eb60e31b60208201526000906200006e908262000276565b50604080518082019091526005815264048989e8eb60db1b60208201526001906200009a908262000276565b50600480546001600160a01b03191633908117909155620000bc9082620000c3565b506200036a565b6001600160a01b0382166200011e5760405162461bcd60e51b815260206004820152601e60248201527f4c6f67583a206d696e7420746f20746865207a65726f20616464726573730000604482015260640160405180910390fd5b806002546200012e919062000342565b6002556001600160a01b0382166000908152600560205260409020546200015790829062000342565b6001600160a01b0383166000818152600560205260408082209390935591519091907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef90620001a99085815260200190565b60405180910390a35050565b600060208284031215620001c857600080fd5b5051919050565b634e487b7160e01b600052604160045260246000fd5b600181811c90821680620001fa57607f821691505b6020821081036200021b57634e487b7160e01b600052602260045260246000fd5b50919050565b601f82111562000271576000816000526020600020601f850160051c810160208610156200024c5750805b601f850160051c820191505b818110156200026d5782815560010162000258565b5050505b505050565b81516001600160401b03811115620002925762000292620001cf565b620002aa81620002a38454620001e5565b8462000221565b602080601f831160018114620002e25760008415620002c95750858301515b600019600386901b1c1916600185901b1785556200026d565b600085815260208120601f198616915b828110156200031357888601518255948401946001909101908401620002f2565b5085821015620003325787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b808201808211156200036457634e487b7160e01b600052601160045260246000fd5b92915050565b611428806200037a6000396000f3fe608060405234801561001057600080fd5b50600436106101375760003560e01c806370a08231116100b8578063aa271e1a1161007c578063aa271e1a146102c9578063af640d0f146102ec578063cf456ae7146102f4578063cfad57a214610307578063d5abeb011461031a578063dd62ed3e1461032357600080fd5b806370a082311461025f57806395d89b41146102885780639dc29fac14610290578063a9059cbb146102a3578063a923fc40146102b657600080fd5b806323b872dd116100ff57806323b872dd146101d457806327e235e3146101e7578063313ce5671461020757806340c10f191461022157806355b6ed5c1461023457600080fd5b806301e336671461013c57806306fdde0314610151578063095ea7b31461016f57806312d43a511461019257806318160ddd146101bd575b600080fd5b61014f61014a366004610fb0565b61035c565b005b6101596103a8565b6040516101669190611010565b60405180910390f35b61018261017d366004611043565b610436565b6040519015158152602001610166565b6004546101a5906001600160a01b031681565b6040516001600160a01b039091168152602001610166565b6101c660025481565b604051908152602001610166565b6101826101e2366004610fb0565b61044d565b6101c66101f536600461106d565b60056020526000908152604090205481565b61020f601281565b60405160ff9091168152602001610166565b61014f61022f366004611043565b610503565b6101c6610242366004611088565b600660209081526000928352604080842090915290825290205481565b6101c661026d36600461106d565b6001600160a01b031660009081526005602052604090205490565b61015961058f565b61014f61029e366004611043565b61059c565b6101826102b1366004611043565b6105d5565b61014f6102c436600461115e565b6105e2565b6101826102d736600461106d565b60076020526000908152604090205460ff1681565b610159610625565b61014f6103023660046111d3565b6106b7565b61014f61031536600461106d565b61075a565b6101c660035481565b6101c6610331366004611088565b6001600160a01b03918216600090815260066020908152604080832093909416825291909152205490565b6004546001600160a01b0316331461038f5760405162461bcd60e51b81526004016103869061120a565b60405180910390fd5b6103a36001600160a01b03841683836107f4565b505050565b600080546103b590611233565b80601f01602080910402602001604051908101604052809291908181526020018280546103e190611233565b801561042e5780601f106104035761010080835404028352916020019161042e565b820191906000526020600020905b81548152906001019060200180831161041157829003601f168201915b505050505081565b6000610443338484610846565b5060015b92915050565b6001600160a01b0383166000908152600660209081526040808320338452825280832054815180830190925260048252635441454160e01b92820192909252838210156104ad5760405162461bcd60e51b81526004016103869190611010565b506001600160a01b03851660009081526006602090815260408083203384529091528120546104dd908590611283565b90506104ea863383610846565b6104f586868661092e565b6001925050505b9392505050565b3360009081526007602052604090205460ff166105325760405162461bcd60e51b81526004016103869061120a565b600354816002546105439190611296565b1115604051806040016040528060048152602001634d41454d60e01b815250906105805760405162461bcd60e51b81526004016103869190611010565b5061058b8282610b1b565b5050565b600180546103b590611233565b3360009081526007602052604090205460ff166105cb5760405162461bcd60e51b81526004016103869061120a565b61058b8282610c03565b600061044333848461092e565b6004546001600160a01b0316331461060c5760405162461bcd60e51b81526004016103869061120a565b600061061883826112f9565b5060016103a382826112f9565b60606001805461063490611233565b80601f016020809104026020016040519081016040528092919081815260200182805461066090611233565b80156106ad5780601f10610682576101008083540402835291602001916106ad565b820191906000526020600020905b81548152906001019060200180831161069057829003601f168201915b5050505050905090565b6004546001600160a01b031633146106e15760405162461bcd60e51b81526004016103869061120a565b6001600160a01b03821661072f5760405162461bcd60e51b81526020600482015260156024820152744c6f67583a20696e76616c6964206164647265737360581b6044820152606401610386565b6001600160a01b03919091166000908152600760205260409020805460ff1916911515919091179055565b6004546001600160a01b031633146107845760405162461bcd60e51b81526004016103869061120a565b6001600160a01b0381166107d25760405162461bcd60e51b81526020600482015260156024820152744c6f67583a20696e76616c6964206164647265737360581b6044820152606401610386565b600480546001600160a01b0319166001600160a01b0392909216919091179055565b604080516001600160a01b038416602482015260448082018490528251808303909101815260649091019091526020810180516001600160e01b031663a9059cbb60e01b1790526103a3908490610d4a565b60408051808201909152600481526341465a4160e01b60208201526001600160a01b0384166108885760405162461bcd60e51b81526004016103869190611010565b5060408051808201909152600481526341545a4160e01b60208201526001600160a01b0383166108cb5760405162461bcd60e51b81526004016103869190611010565b506001600160a01b0383811660008181526006602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92591015b60405180910390a3505050565b60408051808201909152600481526354465a4160e01b60208201526001600160a01b0384166109705760405162461bcd60e51b81526004016103869190611010565b5060408051808201909152600481526354545a4160e01b60208201526001600160a01b0383166109b35760405162461bcd60e51b81526004016103869190611010565b50816001600160a01b0316836001600160a01b031603610a0e5760405162461bcd60e51b81526020600482015260166024820152752637b3ac1d103a3930b739b332b9103a379039b2b63360511b6044820152606401610386565b8060056000856001600160a01b03166001600160a01b03168152602001908152602001600020541015604051806040016040528060048152602001632a20a2a160e11b81525090610a725760405162461bcd60e51b81526004016103869190611010565b506001600160a01b038316600090815260056020526040902054610a97908290611283565b6001600160a01b038085166000908152600560205260408082209390935590841681522054610ac7908290611296565b6001600160a01b0380841660008181526005602052604090819020939093559151908516907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef906109219085815260200190565b6001600160a01b038216610b715760405162461bcd60e51b815260206004820152601e60248201527f4c6f67583a206d696e7420746f20746865207a65726f206164647265737300006044820152606401610386565b80600254610b7f9190611296565b6002556001600160a01b038216600090815260056020526040902054610ba6908290611296565b6001600160a01b0383166000818152600560205260408082209390935591519091907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef90610bf79085815260200190565b60405180910390a35050565b6001600160a01b038216610c595760405162461bcd60e51b815260206004820181905260248201527f4c6f67583a206275726e2066726f6d20746865207a65726f20616464726573736044820152606401610386565b8060056000846001600160a01b03166001600160a01b03168152602001908152602001600020541015604051806040016040528060048152602001632120a2a160e11b81525090610cbd5760405162461bcd60e51b81526004016103869190611010565b506001600160a01b038216600090815260056020526040902054610ce2908290611283565b6001600160a01b038316600090815260056020526040902055600254610d09908290611283565b6002556040518181526000906001600160a01b038416907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef90602001610bf7565b6000610d9f826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564815250856001600160a01b0316610e1c9092919063ffffffff16565b8051909150156103a35780806020019051810190610dbd91906113b9565b6103a35760405162461bcd60e51b815260206004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e6044820152691bdd081cdd58d8d9595960b21b6064820152608401610386565b6060610e2b8484600085610e33565b949350505050565b606082471015610e945760405162461bcd60e51b815260206004820152602660248201527f416464726573733a20696e73756666696369656e742062616c616e636520666f6044820152651c8818d85b1b60d21b6064820152608401610386565b843b610ee25760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e74726163740000006044820152606401610386565b600080866001600160a01b03168587604051610efe91906113d6565b60006040518083038185875af1925050503d8060008114610f3b576040519150601f19603f3d011682016040523d82523d6000602084013e610f40565b606091505b5091509150610f50828286610f5b565b979650505050505050565b60608315610f6a5750816104fc565b825115610f7a5782518084602001fd5b8160405162461bcd60e51b81526004016103869190611010565b80356001600160a01b0381168114610fab57600080fd5b919050565b600080600060608486031215610fc557600080fd5b610fce84610f94565b9250610fdc60208501610f94565b9150604084013590509250925092565b60005b83811015611007578181015183820152602001610fef565b50506000910152565b602081526000825180602084015261102f816040850160208701610fec565b601f01601f19169190910160400192915050565b6000806040838503121561105657600080fd5b61105f83610f94565b946020939093013593505050565b60006020828403121561107f57600080fd5b6104fc82610f94565b6000806040838503121561109b57600080fd5b6110a483610f94565b91506110b260208401610f94565b90509250929050565b634e487b7160e01b600052604160045260246000fd5b600082601f8301126110e257600080fd5b813567ffffffffffffffff808211156110fd576110fd6110bb565b604051601f8301601f19908116603f01168101908282118183101715611125576111256110bb565b8160405283815286602085880101111561113e57600080fd5b836020870160208301376000602085830101528094505050505092915050565b6000806040838503121561117157600080fd5b823567ffffffffffffffff8082111561118957600080fd5b611195868387016110d1565b935060208501359150808211156111ab57600080fd5b506111b8858286016110d1565b9150509250929050565b80151581146111d057600080fd5b50565b600080604083850312156111e657600080fd5b6111ef83610f94565b915060208301356111ff816111c2565b809150509250929050565b6020808252600f908201526e2637b3ac1d103337b93134b23232b760891b604082015260600190565b600181811c9082168061124757607f821691505b60208210810361126757634e487b7160e01b600052602260045260246000fd5b50919050565b634e487b7160e01b600052601160045260246000fd5b818103818111156104475761044761126d565b808201808211156104475761044761126d565b601f8211156103a3576000816000526020600020601f850160051c810160208610156112d25750805b601f850160051c820191505b818110156112f1578281556001016112de565b505050505050565b815167ffffffffffffffff811115611313576113136110bb565b611327816113218454611233565b846112a9565b602080601f83116001811461135c57600084156113445750858301515b600019600386901b1c1916600185901b1785556112f1565b600085815260208120601f198616915b8281101561138b5788860151825594840194600190910190840161136c565b50858210156113a95787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b6000602082840312156113cb57600080fd5b81516104fc816111c2565b600082516113e8818460208701610fec565b919091019291505056fea26469706673582212207938f42c9e59a7ae6d0d6505f987f488fa2910a56afecdf6278ce5dc1c898a3464736f6c634300081600330000000000000000000000000000000000000000000000000000000000000000
Deployed Bytecode
0x608060405234801561001057600080fd5b50600436106101375760003560e01c806370a08231116100b8578063aa271e1a1161007c578063aa271e1a146102c9578063af640d0f146102ec578063cf456ae7146102f4578063cfad57a214610307578063d5abeb011461031a578063dd62ed3e1461032357600080fd5b806370a082311461025f57806395d89b41146102885780639dc29fac14610290578063a9059cbb146102a3578063a923fc40146102b657600080fd5b806323b872dd116100ff57806323b872dd146101d457806327e235e3146101e7578063313ce5671461020757806340c10f191461022157806355b6ed5c1461023457600080fd5b806301e336671461013c57806306fdde0314610151578063095ea7b31461016f57806312d43a511461019257806318160ddd146101bd575b600080fd5b61014f61014a366004610fb0565b61035c565b005b6101596103a8565b6040516101669190611010565b60405180910390f35b61018261017d366004611043565b610436565b6040519015158152602001610166565b6004546101a5906001600160a01b031681565b6040516001600160a01b039091168152602001610166565b6101c660025481565b604051908152602001610166565b6101826101e2366004610fb0565b61044d565b6101c66101f536600461106d565b60056020526000908152604090205481565b61020f601281565b60405160ff9091168152602001610166565b61014f61022f366004611043565b610503565b6101c6610242366004611088565b600660209081526000928352604080842090915290825290205481565b6101c661026d36600461106d565b6001600160a01b031660009081526005602052604090205490565b61015961058f565b61014f61029e366004611043565b61059c565b6101826102b1366004611043565b6105d5565b61014f6102c436600461115e565b6105e2565b6101826102d736600461106d565b60076020526000908152604090205460ff1681565b610159610625565b61014f6103023660046111d3565b6106b7565b61014f61031536600461106d565b61075a565b6101c660035481565b6101c6610331366004611088565b6001600160a01b03918216600090815260066020908152604080832093909416825291909152205490565b6004546001600160a01b0316331461038f5760405162461bcd60e51b81526004016103869061120a565b60405180910390fd5b6103a36001600160a01b03841683836107f4565b505050565b600080546103b590611233565b80601f01602080910402602001604051908101604052809291908181526020018280546103e190611233565b801561042e5780601f106104035761010080835404028352916020019161042e565b820191906000526020600020905b81548152906001019060200180831161041157829003601f168201915b505050505081565b6000610443338484610846565b5060015b92915050565b6001600160a01b0383166000908152600660209081526040808320338452825280832054815180830190925260048252635441454160e01b92820192909252838210156104ad5760405162461bcd60e51b81526004016103869190611010565b506001600160a01b03851660009081526006602090815260408083203384529091528120546104dd908590611283565b90506104ea863383610846565b6104f586868661092e565b6001925050505b9392505050565b3360009081526007602052604090205460ff166105325760405162461bcd60e51b81526004016103869061120a565b600354816002546105439190611296565b1115604051806040016040528060048152602001634d41454d60e01b815250906105805760405162461bcd60e51b81526004016103869190611010565b5061058b8282610b1b565b5050565b600180546103b590611233565b3360009081526007602052604090205460ff166105cb5760405162461bcd60e51b81526004016103869061120a565b61058b8282610c03565b600061044333848461092e565b6004546001600160a01b0316331461060c5760405162461bcd60e51b81526004016103869061120a565b600061061883826112f9565b5060016103a382826112f9565b60606001805461063490611233565b80601f016020809104026020016040519081016040528092919081815260200182805461066090611233565b80156106ad5780601f10610682576101008083540402835291602001916106ad565b820191906000526020600020905b81548152906001019060200180831161069057829003601f168201915b5050505050905090565b6004546001600160a01b031633146106e15760405162461bcd60e51b81526004016103869061120a565b6001600160a01b03821661072f5760405162461bcd60e51b81526020600482015260156024820152744c6f67583a20696e76616c6964206164647265737360581b6044820152606401610386565b6001600160a01b03919091166000908152600760205260409020805460ff1916911515919091179055565b6004546001600160a01b031633146107845760405162461bcd60e51b81526004016103869061120a565b6001600160a01b0381166107d25760405162461bcd60e51b81526020600482015260156024820152744c6f67583a20696e76616c6964206164647265737360581b6044820152606401610386565b600480546001600160a01b0319166001600160a01b0392909216919091179055565b604080516001600160a01b038416602482015260448082018490528251808303909101815260649091019091526020810180516001600160e01b031663a9059cbb60e01b1790526103a3908490610d4a565b60408051808201909152600481526341465a4160e01b60208201526001600160a01b0384166108885760405162461bcd60e51b81526004016103869190611010565b5060408051808201909152600481526341545a4160e01b60208201526001600160a01b0383166108cb5760405162461bcd60e51b81526004016103869190611010565b506001600160a01b0383811660008181526006602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92591015b60405180910390a3505050565b60408051808201909152600481526354465a4160e01b60208201526001600160a01b0384166109705760405162461bcd60e51b81526004016103869190611010565b5060408051808201909152600481526354545a4160e01b60208201526001600160a01b0383166109b35760405162461bcd60e51b81526004016103869190611010565b50816001600160a01b0316836001600160a01b031603610a0e5760405162461bcd60e51b81526020600482015260166024820152752637b3ac1d103a3930b739b332b9103a379039b2b63360511b6044820152606401610386565b8060056000856001600160a01b03166001600160a01b03168152602001908152602001600020541015604051806040016040528060048152602001632a20a2a160e11b81525090610a725760405162461bcd60e51b81526004016103869190611010565b506001600160a01b038316600090815260056020526040902054610a97908290611283565b6001600160a01b038085166000908152600560205260408082209390935590841681522054610ac7908290611296565b6001600160a01b0380841660008181526005602052604090819020939093559151908516907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef906109219085815260200190565b6001600160a01b038216610b715760405162461bcd60e51b815260206004820152601e60248201527f4c6f67583a206d696e7420746f20746865207a65726f206164647265737300006044820152606401610386565b80600254610b7f9190611296565b6002556001600160a01b038216600090815260056020526040902054610ba6908290611296565b6001600160a01b0383166000818152600560205260408082209390935591519091907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef90610bf79085815260200190565b60405180910390a35050565b6001600160a01b038216610c595760405162461bcd60e51b815260206004820181905260248201527f4c6f67583a206275726e2066726f6d20746865207a65726f20616464726573736044820152606401610386565b8060056000846001600160a01b03166001600160a01b03168152602001908152602001600020541015604051806040016040528060048152602001632120a2a160e11b81525090610cbd5760405162461bcd60e51b81526004016103869190611010565b506001600160a01b038216600090815260056020526040902054610ce2908290611283565b6001600160a01b038316600090815260056020526040902055600254610d09908290611283565b6002556040518181526000906001600160a01b038416907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef90602001610bf7565b6000610d9f826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564815250856001600160a01b0316610e1c9092919063ffffffff16565b8051909150156103a35780806020019051810190610dbd91906113b9565b6103a35760405162461bcd60e51b815260206004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e6044820152691bdd081cdd58d8d9595960b21b6064820152608401610386565b6060610e2b8484600085610e33565b949350505050565b606082471015610e945760405162461bcd60e51b815260206004820152602660248201527f416464726573733a20696e73756666696369656e742062616c616e636520666f6044820152651c8818d85b1b60d21b6064820152608401610386565b843b610ee25760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e74726163740000006044820152606401610386565b600080866001600160a01b03168587604051610efe91906113d6565b60006040518083038185875af1925050503d8060008114610f3b576040519150601f19603f3d011682016040523d82523d6000602084013e610f40565b606091505b5091509150610f50828286610f5b565b979650505050505050565b60608315610f6a5750816104fc565b825115610f7a5782518084602001fd5b8160405162461bcd60e51b81526004016103869190611010565b80356001600160a01b0381168114610fab57600080fd5b919050565b600080600060608486031215610fc557600080fd5b610fce84610f94565b9250610fdc60208501610f94565b9150604084013590509250925092565b60005b83811015611007578181015183820152602001610fef565b50506000910152565b602081526000825180602084015261102f816040850160208701610fec565b601f01601f19169190910160400192915050565b6000806040838503121561105657600080fd5b61105f83610f94565b946020939093013593505050565b60006020828403121561107f57600080fd5b6104fc82610f94565b6000806040838503121561109b57600080fd5b6110a483610f94565b91506110b260208401610f94565b90509250929050565b634e487b7160e01b600052604160045260246000fd5b600082601f8301126110e257600080fd5b813567ffffffffffffffff808211156110fd576110fd6110bb565b604051601f8301601f19908116603f01168101908282118183101715611125576111256110bb565b8160405283815286602085880101111561113e57600080fd5b836020870160208301376000602085830101528094505050505092915050565b6000806040838503121561117157600080fd5b823567ffffffffffffffff8082111561118957600080fd5b611195868387016110d1565b935060208501359150808211156111ab57600080fd5b506111b8858286016110d1565b9150509250929050565b80151581146111d057600080fd5b50565b600080604083850312156111e657600080fd5b6111ef83610f94565b915060208301356111ff816111c2565b809150509250929050565b6020808252600f908201526e2637b3ac1d103337b93134b23232b760891b604082015260600190565b600181811c9082168061124757607f821691505b60208210810361126757634e487b7160e01b600052602260045260246000fd5b50919050565b634e487b7160e01b600052601160045260246000fd5b818103818111156104475761044761126d565b808201808211156104475761044761126d565b601f8211156103a3576000816000526020600020601f850160051c810160208610156112d25750805b601f850160051c820191505b818110156112f1578281556001016112de565b505050505050565b815167ffffffffffffffff811115611313576113136110bb565b611327816113218454611233565b846112a9565b602080601f83116001811461135c57600084156113445750858301515b600019600386901b1c1916600185901b1785556112f1565b600085815260208120601f198616915b8281101561138b5788860151825594840194600190910190840161136c565b50858210156113a95787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b6000602082840312156113cb57600080fd5b81516104fc816111c2565b600082516113e8818460208701610fec565b919091019291505056fea26469706673582212207938f42c9e59a7ae6d0d6505f987f488fa2910a56afecdf6278ce5dc1c898a3464736f6c63430008160033
Constructor Arguments (ABI-Encoded and is the last bytes of the Contract Creation Code above)
0000000000000000000000000000000000000000000000000000000000000000
-----Decoded View---------------
Arg [0] : _initialSupply (uint256): 0
-----Encoded View---------------
1 Constructor Arguments found :
Arg [0] : 0000000000000000000000000000000000000000000000000000000000000000
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.