Feature Tip: Add private address tag to any address under My Name Tag !
Overview
ETH Balance
0 ETH
Eth Value
$0.00More Info
Private Name Tags
ContractCreator
Latest 25 from a total of 4,233 transactions
Transaction Hash |
Method
|
Block
|
From
|
To
|
|||||
---|---|---|---|---|---|---|---|---|---|
Mint | 20179153 | 56 days ago | IN | 0 ETH | 0.00039896 | ||||
Mint | 20178853 | 56 days ago | IN | 0 ETH | 0.00047708 | ||||
Mint | 20178555 | 56 days ago | IN | 0 ETH | 0.00066666 | ||||
Mint | 20178258 | 56 days ago | IN | 0 ETH | 0.00066791 | ||||
Mint | 20171694 | 57 days ago | IN | 0 ETH | 0.00031784 | ||||
Mint | 20084339 | 69 days ago | IN | 0 ETH | 0.00177082 | ||||
Mint | 20081912 | 70 days ago | IN | 0 ETH | 0.00127313 | ||||
Mint | 20080723 | 70 days ago | IN | 0 ETH | 0.00115581 | ||||
Mint | 20079538 | 70 days ago | IN | 0 ETH | 0.00112758 | ||||
Mint | 20078292 | 70 days ago | IN | 0 ETH | 0.00166689 | ||||
Mint | 20077153 | 70 days ago | IN | 0 ETH | 0.00187677 | ||||
Mint | 20075950 | 71 days ago | IN | 0 ETH | 0.00390319 | ||||
Mint | 20074741 | 71 days ago | IN | 0 ETH | 0.00116553 | ||||
Mint | 20073568 | 71 days ago | IN | 0 ETH | 0.00073753 | ||||
Mint | 20072405 | 71 days ago | IN | 0 ETH | 0.00056519 | ||||
Mint | 20071196 | 71 days ago | IN | 0 ETH | 0.00132118 | ||||
Mint | 20070011 | 71 days ago | IN | 0 ETH | 0.00193126 | ||||
Mint | 20068792 | 72 days ago | IN | 0 ETH | 0.00193149 | ||||
Mint | 20067609 | 72 days ago | IN | 0 ETH | 0.00098909 | ||||
Mint | 20066417 | 72 days ago | IN | 0 ETH | 0.00055749 | ||||
Mint | 20065198 | 72 days ago | IN | 0 ETH | 0.00046013 | ||||
Mint | 20064030 | 72 days ago | IN | 0 ETH | 0.00185591 | ||||
Mint | 20062839 | 72 days ago | IN | 0 ETH | 0.00173389 | ||||
Mint | 20061644 | 73 days ago | IN | 0 ETH | 0.00115184 | ||||
Mint | 20060486 | 73 days ago | IN | 0 ETH | 0.00051528 |
View more zero value Internal Transactions in Advanced View mode
Advanced mode:
Loading...
Loading
Contract Name:
MintForwarder
Compiler Version
v0.8.6+commit.11564f7e
Optimization Enabled:
Yes with 1000000 runs
Other Settings:
default evmVersion
Contract Source Code (Solidity Standard Json-Input format)
/** * SPDX-License-Identifier: MIT * * Copyright (c) 2022 Coinbase, Inc. * * Permission is hereby granted, free of charge, to any person obtaining a copy * of this software and associated documentation files (the "Software"), to deal * in the Software without restriction, including without limitation the rights * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell * copies of the Software, and to permit persons to whom the Software is * furnished to do so, subject to the following conditions: * * The above copyright notice and this permission notice shall be included in * copies or substantial portions of the Software. * * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE * SOFTWARE. */ pragma solidity 0.8.6; import { RateLimit } from "./RateLimit.sol"; import { MintUtil } from "./MintUtil.sol"; /** * @title MintForwarder * @notice Forwarding contract to ERC20 tokens with mint functionality */ contract MintForwarder is RateLimit { /** * @dev Gets the mintable token contract address * @return The address of the mintable token contract */ address public tokenContract; /** * @dev Indicates that the contract has been initialized */ bool internal initialized; /** * @notice Emitted on mints * @param minter The address initiating the mint * @param to The address the tokens are minted to * @param amount The amount of tokens minted */ event Mint(address indexed minter, address indexed to, uint256 amount); /** * @dev Function to initialize the contract * @dev Can an only be called once by the deployer of the contract * @dev The caller is responsible for ensuring that both the new owner and the token contract are configured correctly * @param newOwner The address of the new owner of the mint contract, can either be an EOA or a contract * @param newTokenContract The address of the token contract that is minted */ function initialize(address newOwner, address newTokenContract) external onlyOwner { require(!initialized, "MintForwarder: contract is already initialized"); require( newOwner != address(0), "MintForwarder: owner is the zero address" ); require( newTokenContract != address(0), "MintForwarder: tokenContract is the zero address" ); transferOwnership(newOwner); tokenContract = newTokenContract; initialized = true; } /** * @dev Rate limited function to mint tokens * @dev The _amount must be less than or equal to the allowance of the caller * @param _to The address that will receive the minted tokens * @param _amount The amount of tokens to mint */ function mint(address _to, uint256 _amount) external onlyCallers { require( _to != address(0), "MintForwarder: cannot mint to the zero address" ); require(_amount > 0, "MintForwarder: mint amount not greater than 0"); _replenishAllowance(msg.sender); require( _amount <= allowances[msg.sender], "MintForwarder: mint amount exceeds caller allowance" ); allowances[msg.sender] = allowances[msg.sender] - _amount; MintUtil.safeMint(_to, _amount, tokenContract); emit Mint(msg.sender, _to, _amount); } }
/** * SPDX-License-Identifier: MIT * * Copyright (c) 2022 Coinbase, Inc. * * Permission is hereby granted, free of charge, to any person obtaining a copy * of this software and associated documentation files (the "Software"), to deal * in the Software without restriction, including without limitation the rights * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell * copies of the Software, and to permit persons to whom the Software is * furnished to do so, subject to the following conditions: * * The above copyright notice and this permission notice shall be included in * copies or substantial portions of the Software. * * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE * SOFTWARE. */ pragma solidity 0.8.6; import { Ownable } from "@openzeppelin4.2.0/contracts/access/Ownable.sol"; /** * @title RateLimit * @dev Rate limiting contract for function calls */ contract RateLimit is Ownable { /** * @dev Mapping denoting caller addresses * @return Boolean denoting whether the given address is a caller */ mapping(address => bool) public callers; /** * @dev Mapping denoting caller address rate limit intervals * @return A time in seconds representing the duration of the given callers interval */ mapping(address => uint256) public intervals; /** * @dev Mapping denoting when a given caller's allowance was last updated * @return The time in seconds since a given caller's allowance was last updated */ mapping(address => uint256) public allowancesLastSet; /** * @dev Mapping denoting a given caller's maximum allowance * @return The maximum allowance of a given caller */ mapping(address => uint256) public maxAllowances; /** * @dev Mapping denoting a given caller's stored allowance * @return The stored allowance of a given caller */ mapping(address => uint256) public allowances; /** * @notice Emitted on caller configuration * @param caller The address configured to make rate limited calls * @param amount The maximum allowance for the given caller * @param interval The amount of time in seconds before a caller's allowance is replenished */ event CallerConfigured( address indexed caller, uint256 amount, uint256 interval ); /** * @notice Emitted on caller removal * @param caller The address of the caller being removed */ event CallerRemoved(address indexed caller); /** * @notice Emitted on caller allowance replenishment * @param caller The address of the caller whose allowance is being replenished * @param allowance The current allowance for the given caller post replenishment * @param amountReplenished The allowance amount that was replenished for the given caller */ event AllowanceReplenished( address indexed caller, uint256 allowance, uint256 amountReplenished ); /** * @dev Throws if called by any account other than a caller * @dev Rate limited functionality in inheriting contracts must have the only caller modifier */ modifier onlyCallers() { require(callers[msg.sender], "RateLimit: caller is not whitelisted"); _; } /** * @dev Function to add/update a new caller. Also updates allowancesLastSet for that caller. * @param caller The address of the caller * @param amount The call amount allowed for the caller for a given interval * @param interval The interval for a given caller */ function configureCaller( address caller, uint256 amount, uint256 interval ) external onlyOwner { require(caller != address(0), "RateLimit: caller is the zero address"); require(amount > 0, "RateLimit: amount is zero"); require(interval > 0, "RateLimit: interval is zero"); callers[caller] = true; maxAllowances[caller] = allowances[caller] = amount; allowancesLastSet[caller] = block.timestamp; intervals[caller] = interval; emit CallerConfigured(caller, amount, interval); } /** * @dev Function to remove a caller. * @param caller The address of the caller */ function removeCaller(address caller) external onlyOwner { delete callers[caller]; delete intervals[caller]; delete allowancesLastSet[caller]; delete maxAllowances[caller]; delete allowances[caller]; emit CallerRemoved(caller); } /** * @dev Helper function to calculate the estimated allowance given caller address * @param caller The address whose call allowance is being estimated * @return The allowance of the given caller if their allowance were to be replenished */ function estimatedAllowance(address caller) external view returns (uint256) { return allowances[caller] + _getReplenishAmount(caller); } /** * @dev Get the current caller allowance for an account * @param caller The address of the caller * @return The allowance of the given caller post replenishment */ function currentAllowance(address caller) public returns (uint256) { _replenishAllowance(caller); return allowances[caller]; } /** * @dev Helper function to replenish a caller's allowance over the interval in proportion to time elapsed, up to their maximum allowance * @param caller The address whose allowance is being updated */ function _replenishAllowance(address caller) internal { if (allowances[caller] == maxAllowances[caller]) { return; } uint256 amountToReplenish = _getReplenishAmount(caller); if (amountToReplenish == 0) { return; } allowances[caller] = allowances[caller] + amountToReplenish; allowancesLastSet[caller] = block.timestamp; emit AllowanceReplenished( caller, allowances[caller], amountToReplenish ); } /** * @dev Helper function to calculate the replenishment amount * @param caller The address whose allowance is being estimated * @return The allowance amount to be replenished for the given caller */ function _getReplenishAmount(address caller) internal view returns (uint256) { uint256 secondsSinceAllowanceSet = block.timestamp - allowancesLastSet[caller]; uint256 amountToReplenish = (secondsSinceAllowanceSet * maxAllowances[caller]) / intervals[caller]; uint256 allowanceAfterReplenish = allowances[caller] + amountToReplenish; if (allowanceAfterReplenish > maxAllowances[caller]) { amountToReplenish = maxAllowances[caller] - allowances[caller]; } return amountToReplenish; } }
/** * SPDX-License-Identifier: MIT * * Copyright (c) 2022 Coinbase, Inc. * * Permission is hereby granted, free of charge, to any person obtaining a copy * of this software and associated documentation files (the "Software"), to deal * in the Software without restriction, including without limitation the rights * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell * copies of the Software, and to permit persons to whom the Software is * furnished to do so, subject to the following conditions: * * The above copyright notice and this permission notice shall be included in * copies or substantial portions of the Software. * * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE * SOFTWARE. */ pragma solidity 0.8.6; import { Address } from "@openzeppelin4.2.0/contracts/utils/Address.sol"; /** * @title MintUtil * @dev Used for safe minting */ library MintUtil { bytes4 private constant _MINT_SELECTOR = bytes4( keccak256("mint(address,uint256)") ); /** * @dev Safely mints ERC20 token * @param to Recipient's address * @param value Amount to mint * @param tokenContract Token contract address */ function safeMint( address to, uint256 value, address tokenContract ) internal { bytes memory data = abi.encodeWithSelector(_MINT_SELECTOR, to, value); Address.functionCall(tokenContract, data, "MinterUtil: mint failed"); } }
// SPDX-License-Identifier: MIT pragma solidity ^0.8.0; import "../utils/Context.sol"; /** * @dev Contract module which provides a basic access control mechanism, where * there is an account (an owner) that can be granted exclusive access to * specific functions. * * By default, the owner account will be the one that deploys the contract. This * can later be changed with {transferOwnership}. * * This module is used through inheritance. It will make available the modifier * `onlyOwner`, which can be applied to your functions to restrict their use to * the owner. */ abstract contract Ownable is Context { address private _owner; event OwnershipTransferred(address indexed previousOwner, address indexed newOwner); /** * @dev Initializes the contract setting the deployer as the initial owner. */ constructor() { _setOwner(_msgSender()); } /** * @dev Returns the address of the current owner. */ function owner() public view virtual returns (address) { return _owner; } /** * @dev Throws if called by any account other than the owner. */ modifier onlyOwner() { require(owner() == _msgSender(), "Ownable: caller is not the owner"); _; } /** * @dev Leaves the contract without owner. It will not be possible to call * `onlyOwner` functions anymore. Can only be called by the current owner. * * NOTE: Renouncing ownership will leave the contract without an owner, * thereby removing any functionality that is only available to the owner. */ function renounceOwnership() public virtual onlyOwner { _setOwner(address(0)); } /** * @dev Transfers ownership of the contract to a new account (`newOwner`). * Can only be called by the current owner. */ function transferOwnership(address newOwner) public virtual onlyOwner { require(newOwner != address(0), "Ownable: new owner is the zero address"); _setOwner(newOwner); } function _setOwner(address newOwner) private { address oldOwner = _owner; _owner = newOwner; emit OwnershipTransferred(oldOwner, newOwner); } }
// SPDX-License-Identifier: MIT pragma solidity ^0.8.0; /* * @dev Provides information about the current execution context, including the * sender of the transaction and its data. While these are generally available * via msg.sender and msg.data, they should not be accessed in such a direct * manner, since when dealing with meta-transactions the account sending and * paying for execution may not be the actual sender (as far as an application * is concerned). * * This contract is only required for intermediate, library-like contracts. */ abstract contract Context { function _msgSender() internal view virtual returns (address) { return msg.sender; } function _msgData() internal view virtual returns (bytes calldata) { return msg.data; } }
// SPDX-License-Identifier: MIT pragma solidity ^0.8.0; /** * @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; 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"); (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"); (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"); (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.4._ */ 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.4._ */ function functionDelegateCall( address target, bytes memory data, string memory errorMessage ) internal returns (bytes memory) { require(isContract(target), "Address: delegate call to non-contract"); (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 assembly { let returndata_size := mload(returndata) revert(add(32, returndata), returndata_size) } } else { revert(errorMessage); } } } }
{ "optimizer": { "enabled": true, "runs": 1000000 }, "outputSelection": { "*": { "*": [ "evm.bytecode", "evm.deployedBytecode", "devdoc", "userdoc", "metadata", "abi" ] } }, "libraries": {} }
Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
[{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"caller","type":"address"},{"indexed":false,"internalType":"uint256","name":"allowance","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"amountReplenished","type":"uint256"}],"name":"AllowanceReplenished","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"caller","type":"address"},{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"interval","type":"uint256"}],"name":"CallerConfigured","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"caller","type":"address"}],"name":"CallerRemoved","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"minter","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"}],"name":"Mint","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"allowances","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"allowancesLastSet","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"callers","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"caller","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"},{"internalType":"uint256","name":"interval","type":"uint256"}],"name":"configureCaller","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"caller","type":"address"}],"name":"currentAllowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"caller","type":"address"}],"name":"estimatedAllowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"},{"internalType":"address","name":"newTokenContract","type":"address"}],"name":"initialize","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"intervals","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"maxAllowances","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_to","type":"address"},{"internalType":"uint256","name":"_amount","type":"uint256"}],"name":"mint","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"caller","type":"address"}],"name":"removeCaller","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"tokenContract","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"}]
Contract Creation Code
608060405234801561001057600080fd5b5061001a3361001f565b61006f565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b6116728061007e6000396000f3fe608060405234801561001057600080fd5b50600436106100f55760003560e01c806365e61fc3116100975780638da5cb5b116100665780638da5cb5b1461024e578063b215a1301461026c578063eef21cd21461028c578063f2fde38b1461029f57600080fd5b806365e61fc3146101e0578063715018a6146102005780637bbf4a3f1461020857806388ead3b81461023b57600080fd5b806340c10f19116100d357806340c10f1914610153578063485cc9551461016857806349c0f07f1461017b57806355a373d61461019b57600080fd5b806302ab4e9d146100fa578063073a56e1146101205780632b603c7114610133575b600080fd5b61010d61010836600461141e565b6102b2565b6040519081526020015b60405180910390f35b61010d61012e36600461141e565b6102e6565b61010d61014136600461141e565b60056020526000908152604090205481565b61016661016136600461146c565b610327565b005b610166610176366004611439565b610647565b61010d61018936600461141e565b60036020526000908152604090205481565b6006546101bb9073ffffffffffffffffffffffffffffffffffffffff1681565b60405173ffffffffffffffffffffffffffffffffffffffff9091168152602001610117565b61010d6101ee36600461141e565b60046020526000908152604090205481565b610166610920565b61022b61021636600461141e565b60016020526000908152604090205460ff1681565b6040519015158152602001610117565b610166610249366004611496565b6109ad565b60005473ffffffffffffffffffffffffffffffffffffffff166101bb565b61010d61027a36600461141e565b60026020526000908152604090205481565b61016661029a36600461141e565b610c5b565b6101666102ad36600461141e565b610d7b565b60006102bd82610eab565b5073ffffffffffffffffffffffffffffffffffffffff1660009081526005602052604090205490565b60006102f182610fa4565b73ffffffffffffffffffffffffffffffffffffffff83166000908152600560205260409020546103219190611536565b92915050565b3360009081526001602052604090205460ff166103ca576040517f08c379a0000000000000000000000000000000000000000000000000000000008152602060048201526024808201527f526174654c696d69743a2063616c6c6572206973206e6f742077686974656c6960448201527f737465640000000000000000000000000000000000000000000000000000000060648201526084015b60405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff821661046d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602e60248201527f4d696e74466f727761726465723a2063616e6e6f74206d696e7420746f20746860448201527f65207a65726f206164647265737300000000000000000000000000000000000060648201526084016103c1565b600081116104fd576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602d60248201527f4d696e74466f727761726465723a206d696e7420616d6f756e74206e6f74206760448201527f726561746572207468616e20300000000000000000000000000000000000000060648201526084016103c1565b61050633610eab565b336000908152600560205260409020548111156105a5576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603360248201527f4d696e74466f727761726465723a206d696e7420616d6f756e7420657863656560448201527f64732063616c6c657220616c6c6f77616e63650000000000000000000000000060648201526084016103c1565b336000908152600560205260409020546105c09082906115c6565b336000908152600560205260409020556006546105f6908390839073ffffffffffffffffffffffffffffffffffffffff166110cc565b60405181815273ffffffffffffffffffffffffffffffffffffffff83169033907fab8530f87dc9b59234c4623bf917212bb2536d647574c8e7e5da92c2ede0c9f89060200160405180910390a35050565b60005473ffffffffffffffffffffffffffffffffffffffff1633146106c8576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064016103c1565b60065474010000000000000000000000000000000000000000900460ff1615610773576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602e60248201527f4d696e74466f727761726465723a20636f6e747261637420697320616c72656160448201527f647920696e697469616c697a656400000000000000000000000000000000000060648201526084016103c1565b73ffffffffffffffffffffffffffffffffffffffff8216610816576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602860248201527f4d696e74466f727761726465723a206f776e657220697320746865207a65726f60448201527f206164647265737300000000000000000000000000000000000000000000000060648201526084016103c1565b73ffffffffffffffffffffffffffffffffffffffff81166108b9576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603060248201527f4d696e74466f727761726465723a20746f6b656e436f6e74726163742069732060448201527f746865207a65726f20616464726573730000000000000000000000000000000060648201526084016103c1565b6108c282610d7b565b600680547fffffffffffffffffffffff0000000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff909216919091177401000000000000000000000000000000000000000017905550565b60005473ffffffffffffffffffffffffffffffffffffffff1633146109a1576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064016103c1565b6109ab6000611194565b565b60005473ffffffffffffffffffffffffffffffffffffffff163314610a2e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064016103c1565b73ffffffffffffffffffffffffffffffffffffffff8316610ad1576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602560248201527f526174654c696d69743a2063616c6c657220697320746865207a65726f20616460448201527f647265737300000000000000000000000000000000000000000000000000000060648201526084016103c1565b60008211610b3b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601960248201527f526174654c696d69743a20616d6f756e74206973207a65726f0000000000000060448201526064016103c1565b60008111610ba5576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601b60248201527f526174654c696d69743a20696e74657276616c206973207a65726f000000000060448201526064016103c1565b73ffffffffffffffffffffffffffffffffffffffff8316600081815260016020818152604080842080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0016909317909255600581528183208690556004815281832086905560038152818320429055600281529181902084905580518581529182018490527fd471a172f23699e5022a18bcbb4025d085f6ca049fa7411510eac07e9a152512910160405180910390a2505050565b60005473ffffffffffffffffffffffffffffffffffffffff163314610cdc576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064016103c1565b73ffffffffffffffffffffffffffffffffffffffff8116600081815260016020908152604080832080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001690556002825280832083905560038252808320839055600482528083208390556005909152808220829055517f50c35a67b454d38c20800d5b55e320f58f4c9c86a28d8ab20f03045d1a38d99a9190a250565b60005473ffffffffffffffffffffffffffffffffffffffff163314610dfc576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064016103c1565b73ffffffffffffffffffffffffffffffffffffffff8116610e9f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201527f646472657373000000000000000000000000000000000000000000000000000060648201526084016103c1565b610ea881611194565b50565b73ffffffffffffffffffffffffffffffffffffffff81166000908152600460209081526040808320546005909252909120541415610ee65750565b6000610ef182610fa4565b905080610efc575050565b73ffffffffffffffffffffffffffffffffffffffff8216600090815260056020526040902054610f2d908290611536565b73ffffffffffffffffffffffffffffffffffffffff8316600081815260056020818152604080842095865560038252928390204290559081529254815190815292830184905290917f37c856889da73e6bbe7d58cd39546fc6619ef62cbad51f4acbad45d6b7247fa0910160405180910390a25050565b73ffffffffffffffffffffffffffffffffffffffff81166000908152600360205260408120548190610fd690426115c6565b73ffffffffffffffffffffffffffffffffffffffff8416600090815260026020908152604080832054600490925282205492935090916110169084611589565b611020919061154e565b73ffffffffffffffffffffffffffffffffffffffff851660009081526005602052604081205491925090611055908390611536565b73ffffffffffffffffffffffffffffffffffffffff86166000908152600460205260409020549091508111156110c45773ffffffffffffffffffffffffffffffffffffffff85166000908152600560209081526040808320546004909252909120546110c191906115c6565b91505b509392505050565b6040805173ffffffffffffffffffffffffffffffffffffffff8516602482015260448082018590528251808303909101815260649091018252602080820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f40c10f19000000000000000000000000000000000000000000000000000000001790528251808401909352601783527f4d696e7465725574696c3a206d696e74206661696c6564000000000000000000908301529061118d9083908390611209565b5050505050565b6000805473ffffffffffffffffffffffffffffffffffffffff8381167fffffffffffffffffffffffff0000000000000000000000000000000000000000831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b60606112188484600085611222565b90505b9392505050565b6060824710156112b4576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602660248201527f416464726573733a20696e73756666696369656e742062616c616e636520666f60448201527f722063616c6c000000000000000000000000000000000000000000000000000060648201526084016103c1565b843b61131c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e747261637400000060448201526064016103c1565b6000808673ffffffffffffffffffffffffffffffffffffffff16858760405161134591906114c9565b60006040518083038185875af1925050503d8060008114611382576040519150601f19603f3d011682016040523d82523d6000602084013e611387565b606091505b50915091506113978282866113a2565b979650505050505050565b606083156113b157508161121b565b8251156113c15782518084602001fd5b816040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016103c191906114e5565b803573ffffffffffffffffffffffffffffffffffffffff8116811461141957600080fd5b919050565b60006020828403121561143057600080fd5b61121b826113f5565b6000806040838503121561144c57600080fd5b611455836113f5565b9150611463602084016113f5565b90509250929050565b6000806040838503121561147f57600080fd5b611488836113f5565b946020939093013593505050565b6000806000606084860312156114ab57600080fd5b6114b4846113f5565b95602085013595506040909401359392505050565b600082516114db8184602087016115dd565b9190910192915050565b60208152600082518060208401526115048160408501602087016115dd565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169190910160400192915050565b600082198211156115495761154961160d565b500190565b600082611584577f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b500490565b6000817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff04831182151516156115c1576115c161160d565b500290565b6000828210156115d8576115d861160d565b500390565b60005b838110156115f85781810151838201526020016115e0565b83811115611607576000848401525b50505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fdfea2646970667358221220c5d82730e31b1bf6c3aa96a7729d83f62abc3b2f431e71d694d547b2e72ed54364736f6c63430008060033
Deployed Bytecode
0x608060405234801561001057600080fd5b50600436106100f55760003560e01c806365e61fc3116100975780638da5cb5b116100665780638da5cb5b1461024e578063b215a1301461026c578063eef21cd21461028c578063f2fde38b1461029f57600080fd5b806365e61fc3146101e0578063715018a6146102005780637bbf4a3f1461020857806388ead3b81461023b57600080fd5b806340c10f19116100d357806340c10f1914610153578063485cc9551461016857806349c0f07f1461017b57806355a373d61461019b57600080fd5b806302ab4e9d146100fa578063073a56e1146101205780632b603c7114610133575b600080fd5b61010d61010836600461141e565b6102b2565b6040519081526020015b60405180910390f35b61010d61012e36600461141e565b6102e6565b61010d61014136600461141e565b60056020526000908152604090205481565b61016661016136600461146c565b610327565b005b610166610176366004611439565b610647565b61010d61018936600461141e565b60036020526000908152604090205481565b6006546101bb9073ffffffffffffffffffffffffffffffffffffffff1681565b60405173ffffffffffffffffffffffffffffffffffffffff9091168152602001610117565b61010d6101ee36600461141e565b60046020526000908152604090205481565b610166610920565b61022b61021636600461141e565b60016020526000908152604090205460ff1681565b6040519015158152602001610117565b610166610249366004611496565b6109ad565b60005473ffffffffffffffffffffffffffffffffffffffff166101bb565b61010d61027a36600461141e565b60026020526000908152604090205481565b61016661029a36600461141e565b610c5b565b6101666102ad36600461141e565b610d7b565b60006102bd82610eab565b5073ffffffffffffffffffffffffffffffffffffffff1660009081526005602052604090205490565b60006102f182610fa4565b73ffffffffffffffffffffffffffffffffffffffff83166000908152600560205260409020546103219190611536565b92915050565b3360009081526001602052604090205460ff166103ca576040517f08c379a0000000000000000000000000000000000000000000000000000000008152602060048201526024808201527f526174654c696d69743a2063616c6c6572206973206e6f742077686974656c6960448201527f737465640000000000000000000000000000000000000000000000000000000060648201526084015b60405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff821661046d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602e60248201527f4d696e74466f727761726465723a2063616e6e6f74206d696e7420746f20746860448201527f65207a65726f206164647265737300000000000000000000000000000000000060648201526084016103c1565b600081116104fd576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602d60248201527f4d696e74466f727761726465723a206d696e7420616d6f756e74206e6f74206760448201527f726561746572207468616e20300000000000000000000000000000000000000060648201526084016103c1565b61050633610eab565b336000908152600560205260409020548111156105a5576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603360248201527f4d696e74466f727761726465723a206d696e7420616d6f756e7420657863656560448201527f64732063616c6c657220616c6c6f77616e63650000000000000000000000000060648201526084016103c1565b336000908152600560205260409020546105c09082906115c6565b336000908152600560205260409020556006546105f6908390839073ffffffffffffffffffffffffffffffffffffffff166110cc565b60405181815273ffffffffffffffffffffffffffffffffffffffff83169033907fab8530f87dc9b59234c4623bf917212bb2536d647574c8e7e5da92c2ede0c9f89060200160405180910390a35050565b60005473ffffffffffffffffffffffffffffffffffffffff1633146106c8576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064016103c1565b60065474010000000000000000000000000000000000000000900460ff1615610773576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602e60248201527f4d696e74466f727761726465723a20636f6e747261637420697320616c72656160448201527f647920696e697469616c697a656400000000000000000000000000000000000060648201526084016103c1565b73ffffffffffffffffffffffffffffffffffffffff8216610816576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602860248201527f4d696e74466f727761726465723a206f776e657220697320746865207a65726f60448201527f206164647265737300000000000000000000000000000000000000000000000060648201526084016103c1565b73ffffffffffffffffffffffffffffffffffffffff81166108b9576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603060248201527f4d696e74466f727761726465723a20746f6b656e436f6e74726163742069732060448201527f746865207a65726f20616464726573730000000000000000000000000000000060648201526084016103c1565b6108c282610d7b565b600680547fffffffffffffffffffffff0000000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff909216919091177401000000000000000000000000000000000000000017905550565b60005473ffffffffffffffffffffffffffffffffffffffff1633146109a1576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064016103c1565b6109ab6000611194565b565b60005473ffffffffffffffffffffffffffffffffffffffff163314610a2e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064016103c1565b73ffffffffffffffffffffffffffffffffffffffff8316610ad1576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602560248201527f526174654c696d69743a2063616c6c657220697320746865207a65726f20616460448201527f647265737300000000000000000000000000000000000000000000000000000060648201526084016103c1565b60008211610b3b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601960248201527f526174654c696d69743a20616d6f756e74206973207a65726f0000000000000060448201526064016103c1565b60008111610ba5576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601b60248201527f526174654c696d69743a20696e74657276616c206973207a65726f000000000060448201526064016103c1565b73ffffffffffffffffffffffffffffffffffffffff8316600081815260016020818152604080842080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0016909317909255600581528183208690556004815281832086905560038152818320429055600281529181902084905580518581529182018490527fd471a172f23699e5022a18bcbb4025d085f6ca049fa7411510eac07e9a152512910160405180910390a2505050565b60005473ffffffffffffffffffffffffffffffffffffffff163314610cdc576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064016103c1565b73ffffffffffffffffffffffffffffffffffffffff8116600081815260016020908152604080832080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001690556002825280832083905560038252808320839055600482528083208390556005909152808220829055517f50c35a67b454d38c20800d5b55e320f58f4c9c86a28d8ab20f03045d1a38d99a9190a250565b60005473ffffffffffffffffffffffffffffffffffffffff163314610dfc576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064016103c1565b73ffffffffffffffffffffffffffffffffffffffff8116610e9f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201527f646472657373000000000000000000000000000000000000000000000000000060648201526084016103c1565b610ea881611194565b50565b73ffffffffffffffffffffffffffffffffffffffff81166000908152600460209081526040808320546005909252909120541415610ee65750565b6000610ef182610fa4565b905080610efc575050565b73ffffffffffffffffffffffffffffffffffffffff8216600090815260056020526040902054610f2d908290611536565b73ffffffffffffffffffffffffffffffffffffffff8316600081815260056020818152604080842095865560038252928390204290559081529254815190815292830184905290917f37c856889da73e6bbe7d58cd39546fc6619ef62cbad51f4acbad45d6b7247fa0910160405180910390a25050565b73ffffffffffffffffffffffffffffffffffffffff81166000908152600360205260408120548190610fd690426115c6565b73ffffffffffffffffffffffffffffffffffffffff8416600090815260026020908152604080832054600490925282205492935090916110169084611589565b611020919061154e565b73ffffffffffffffffffffffffffffffffffffffff851660009081526005602052604081205491925090611055908390611536565b73ffffffffffffffffffffffffffffffffffffffff86166000908152600460205260409020549091508111156110c45773ffffffffffffffffffffffffffffffffffffffff85166000908152600560209081526040808320546004909252909120546110c191906115c6565b91505b509392505050565b6040805173ffffffffffffffffffffffffffffffffffffffff8516602482015260448082018590528251808303909101815260649091018252602080820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f40c10f19000000000000000000000000000000000000000000000000000000001790528251808401909352601783527f4d696e7465725574696c3a206d696e74206661696c6564000000000000000000908301529061118d9083908390611209565b5050505050565b6000805473ffffffffffffffffffffffffffffffffffffffff8381167fffffffffffffffffffffffff0000000000000000000000000000000000000000831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b60606112188484600085611222565b90505b9392505050565b6060824710156112b4576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602660248201527f416464726573733a20696e73756666696369656e742062616c616e636520666f60448201527f722063616c6c000000000000000000000000000000000000000000000000000060648201526084016103c1565b843b61131c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e747261637400000060448201526064016103c1565b6000808673ffffffffffffffffffffffffffffffffffffffff16858760405161134591906114c9565b60006040518083038185875af1925050503d8060008114611382576040519150601f19603f3d011682016040523d82523d6000602084013e611387565b606091505b50915091506113978282866113a2565b979650505050505050565b606083156113b157508161121b565b8251156113c15782518084602001fd5b816040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016103c191906114e5565b803573ffffffffffffffffffffffffffffffffffffffff8116811461141957600080fd5b919050565b60006020828403121561143057600080fd5b61121b826113f5565b6000806040838503121561144c57600080fd5b611455836113f5565b9150611463602084016113f5565b90509250929050565b6000806040838503121561147f57600080fd5b611488836113f5565b946020939093013593505050565b6000806000606084860312156114ab57600080fd5b6114b4846113f5565b95602085013595506040909401359392505050565b600082516114db8184602087016115dd565b9190910192915050565b60208152600082518060208401526115048160408501602087016115dd565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169190910160400192915050565b600082198211156115495761154961160d565b500190565b600082611584577f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b500490565b6000817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff04831182151516156115c1576115c161160d565b500290565b6000828210156115d8576115d861160d565b500390565b60005b838110156115f85781810151838201526020016115e0565b83811115611607576000848401525b50505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fdfea2646970667358221220c5d82730e31b1bf6c3aa96a7729d83f62abc3b2f431e71d694d547b2e72ed54364736f6c63430008060033
Loading...
Loading
Loading...
Loading
Multichain Portfolio | 26 Chains
Chain | Token | Portfolio % | Price | Amount | Value |
---|
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.