Overview
ETH Balance
0 ETH
Eth Value
$0.00More Info
Private Name Tags
ContractCreator
TokenTracker
Latest 25 from a total of 735 transactions
Transaction Hash |
Method
|
Block
|
From
|
To
|
|||||
---|---|---|---|---|---|---|---|---|---|
Mint | 20250216 | 92 days ago | IN | 0 ETH | 0.00013941 | ||||
Mint | 20185756 | 101 days ago | IN | 0 ETH | 0.00607353 | ||||
Mint | 19840539 | 149 days ago | IN | 0 ETH | 0.00166549 | ||||
Mint | 19712434 | 167 days ago | IN | 0 ETH | 0.00143531 | ||||
Mint | 19677596 | 172 days ago | IN | 0 ETH | 0.00113208 | ||||
Mint | 19677578 | 172 days ago | IN | 0 ETH | 0.00149679 | ||||
Mint | 19435019 | 206 days ago | IN | 0 ETH | 0.00458564 | ||||
Mint | 19423993 | 207 days ago | IN | 0 ETH | 0.00429855 | ||||
Mint | 19367919 | 215 days ago | IN | 0 ETH | 0.00435461 | ||||
Mint | 19367343 | 215 days ago | IN | 0 ETH | 0.00556759 | ||||
Mint | 19355105 | 217 days ago | IN | 0 ETH | 0.01934666 | ||||
Mint | 19334073 | 220 days ago | IN | 0 ETH | 0.00745792 | ||||
Mint | 19331705 | 220 days ago | IN | 0 ETH | 0.00652876 | ||||
Mint | 19300803 | 225 days ago | IN | 0 ETH | 0.00208117 | ||||
Mint | 19232328 | 234 days ago | IN | 0 ETH | 0.0031372 | ||||
Mint | 19219851 | 236 days ago | IN | 0 ETH | 0.00415446 | ||||
Mint | 19131174 | 248 days ago | IN | 0 ETH | 0.00784105 | ||||
Mint | 19130576 | 249 days ago | IN | 0 ETH | 0.00669527 | ||||
Mint | 19107513 | 252 days ago | IN | 0 ETH | 0.00218016 | ||||
Mint | 18994796 | 268 days ago | IN | 0 ETH | 0.0013004 | ||||
Mint | 18929590 | 277 days ago | IN | 0 ETH | 0.01525586 | ||||
Mint | 18904675 | 280 days ago | IN | 0 ETH | 0.00536028 | ||||
Mint | 18901373 | 281 days ago | IN | 0 ETH | 0.00143501 | ||||
Mint | 18870482 | 285 days ago | IN | 0 ETH | 0.00303845 | ||||
Mint | 18807758 | 294 days ago | IN | 0 ETH | 0.0031976 |
View more zero value Internal Transactions in Advanced View mode
Advanced mode:
Loading...
Loading
Contract Name:
SignatureMint
Compiler Version
v0.8.19+commit.7dd6d404
Optimization Enabled:
Yes with 200 runs
Other Settings:
default evmVersion
Contract Source Code (Solidity Standard Json-Input format)
// SPDX-License-Identifier: AGPL-3.0-only+VPL pragma solidity ^0.8.19; import "@openzeppelin/contracts/access/Ownable.sol"; import "@openzeppelin/contracts/security/ReentrancyGuard.sol"; import "./libraries/EIP712.sol"; import "./interfaces/IYAYOMintable.sol"; /* It saves bytecode to revert on custom errors instead of using require statements. We are just declaring these errors for reverting with upon various conditions later in this contract. */ error CannotMintExpiredSignature (); error CannotMintInvalidSignature (); error MintArrayLengthMismatch (); error SignerCannotBeZero (); /** @custom:benediction DEVS BENEDICAT ET PROTEGAT CONTRACTVS MEAM @title A contract which accepts signatures from a trusted signer to mint an ERC-721 item. @author Tim Clancy <tim-clancy.eth> @author cheb <evmcheb.eth> This token contract allows for the implementation of off-chain systems that mint items to callers using entirely off-chain data. @custom:date May 24th, 2023 */ contract SignatureMint is EIP712, Ownable, ReentrancyGuard { /** A constant hash of the mint operation's signature. @dev _minter The address of the minter for the signed-for item. This must be the address of the caller. @dev _expiry The expiry time after which this signature cannot execute. @dev _tokenId The ID of the specific token being minted. */ bytes32 public constant MINT_TYPEHASH = keccak256( "mint(address _minter,uint256 _expiry,uint256 _tokenId)" ); /// The name of this minter. string public name; /// The address permitted to sign claim signatures. address public signer; /// The address of the YAYO contract to mint new items into. address public immutable yayo; /** An event emitted when a caller mints a new item. @param caller The caller who claimed the tokens. @param id The ID of the specific item within the ERC-721 `item` contract. */ event Minted ( address indexed caller, uint256 id ); /** Construct a new minter by providing it a permissioned claim signer which may issue claims and claim amounts, and the item to mint in. @param _name The name of the minter, used in EIP-712 domain separation. @param _signer The address permitted to sign claim signatures. @param _yayo The address of the YAYO NFT contract that items are minted into. */ constructor ( string memory _name, address _signer, address _yayo ) EIP712 (_name, "1") { if (_signer == address(0)) { revert SignerCannotBeZero(); } name = _name; signer = _signer; yayo = _yayo; } /** A private helper function to validate a signature supplied for item mints. This function constructs a digest and verifies that the signature signer was the authorized address we expect. @param _minter The address of the minter for the signed-for item. This must be the address of the caller. @param _expiry The expiry time after which this signature cannot execute. @param _tokenId The specific ID of the item to mint. @param _v The recovery byte of the signature. @param _r Half of the ECDSA signature pair. @param _s Half of the ECDSA signature pair. */ function validMint ( address _minter, uint256 _expiry, uint256 _tokenId, uint8 _v, bytes32 _r, bytes32 _s ) private view returns (bool) { bytes32 digest = keccak256( abi.encodePacked( "\x19\x01", DOMAIN_SEPARATOR, keccak256( abi.encode(MINT_TYPEHASH, _minter, _expiry, _tokenId) ) ) ); // The claim is validated if it was signed by our authorized signer. return ecrecover(digest, _v, _r, _s) == signer; } /** Allow a caller to mint a new item if 1. the mint is backed by a valid signature from the trusted `signer`. 2. the signature is not expired. @param _minter The address of the minter for the signed-for item. This does not have to be the address of the caller, allowing for meta-transaction style minting. @param _expiry The expiry time after which this signature cannot execute. @param _tokenId The specific ID of the item to mint. @param _v The recovery byte of the signature. @param _r Half of the ECDSA signature pair. @param _s Half of the ECDSA signature pair. */ function _mint ( address _minter, uint256 _expiry, uint256 _tokenId, uint8 _v, bytes32 _r, bytes32 _s ) internal nonReentrant { // Validate the expiration time. if (_expiry < block.timestamp) { revert CannotMintExpiredSignature(); } // Validiate that the claim was provided by our trusted `signer`. bool validSignature = validMint(_minter, _expiry, _tokenId, _v, _r, _s); if (!validSignature) { revert CannotMintInvalidSignature(); } // Mint the new item. IYAYOMintable yayoContract = IYAYOMintable(yayo); yayoContract.mint(_minter, _tokenId); // Emit an event. emit Minted(_minter, _tokenId); } /** Allow a caller to mint any new items in an array if, for each item 1. the mint is backed by a valid signature from the trusted `signer`. 2. the signature is not expired. @param _minters Addresses of the minters for the signed-for item. This does not have to be the address of the caller, allowing for meta-transaction style minting. @param _expiries The expiry times after which a signature cannot execute. @param _tokenIds The specific IDs of the items to mint. @param _v The recovery bytes of the signature. @param _r Halves of the ECDSA signature pair. @param _s Halves of the ECDSA signature pair. */ function mint ( address[] memory _minters, uint256[] memory _expiries, uint256[] memory _tokenIds, uint8[] memory _v, bytes32[] memory _r, bytes32[] memory _s ) external { if ( _minters.length != _expiries.length || _minters.length != _tokenIds.length || _minters.length != _v.length || _minters.length != _r.length || _minters.length != _s.length ) { revert MintArrayLengthMismatch(); } // Mint each item. for (uint256 i = 0; i < _minters.length; i++) { _mint(_minters[i], _expiries[i], _tokenIds[i], _v[i], _r[i], _s[i]); } } /** An administrative function to change the signer address. This may be used to rotate the signer address routinely or in the event of a key compromise. The zero address is used to disable the signer entirely. @param _newSigner The address of the new address permitted to sign claim signatures. */ function setSigner ( address _newSigner ) external onlyOwner { if (_newSigner == address(0)) { revert SignerCannotBeZero(); } signer = _newSigner; } }
// SPDX-License-Identifier: MIT // OpenZeppelin Contracts (last updated v4.7.0) (access/Ownable.sol) 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() { _transferOwnership(_msgSender()); } /** * @dev Throws if called by any account other than the owner. */ modifier onlyOwner() { _checkOwner(); _; } /** * @dev Returns the address of the current owner. */ function owner() public view virtual returns (address) { return _owner; } /** * @dev Throws if the sender is not the owner. */ function _checkOwner() internal view virtual { 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 { _transferOwnership(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"); _transferOwnership(newOwner); } /** * @dev Transfers ownership of the contract to a new account (`newOwner`). * Internal function without access restriction. */ function _transferOwnership(address newOwner) internal virtual { address oldOwner = _owner; _owner = newOwner; emit OwnershipTransferred(oldOwner, newOwner); } }
// SPDX-License-Identifier: MIT // OpenZeppelin Contracts (last updated v4.8.0) (security/ReentrancyGuard.sol) pragma solidity ^0.8.0; /** * @dev Contract module that helps prevent reentrant calls to a function. * * Inheriting from `ReentrancyGuard` will make the {nonReentrant} modifier * available, which can be applied to functions to make sure there are no nested * (reentrant) calls to them. * * Note that because there is a single `nonReentrant` guard, functions marked as * `nonReentrant` may not call one another. This can be worked around by making * those functions `private`, and then adding `external` `nonReentrant` entry * points to them. * * TIP: If you would like to learn more about reentrancy and alternative ways * to protect against it, check out our blog post * https://blog.openzeppelin.com/reentrancy-after-istanbul/[Reentrancy After Istanbul]. */ abstract contract ReentrancyGuard { // Booleans are more expensive than uint256 or any type that takes up a full // word because each write operation emits an extra SLOAD to first read the // slot's contents, replace the bits taken up by the boolean, and then write // back. This is the compiler's defense against contract upgrades and // pointer aliasing, and it cannot be disabled. // The values being non-zero value makes deployment a bit more expensive, // but in exchange the refund on every call to nonReentrant will be lower in // amount. Since refunds are capped to a percentage of the total // transaction's gas, it is best to keep them low in cases like this one, to // increase the likelihood of the full refund coming into effect. uint256 private constant _NOT_ENTERED = 1; uint256 private constant _ENTERED = 2; uint256 private _status; constructor() { _status = _NOT_ENTERED; } /** * @dev Prevents a contract from calling itself, directly or indirectly. * Calling a `nonReentrant` function from another `nonReentrant` * function is not supported. It is possible to prevent this from happening * by making the `nonReentrant` function external, and making it call a * `private` function that does the actual work. */ modifier nonReentrant() { _nonReentrantBefore(); _; _nonReentrantAfter(); } function _nonReentrantBefore() private { // On the first call to nonReentrant, _status will be _NOT_ENTERED require(_status != _ENTERED, "ReentrancyGuard: reentrant call"); // Any calls to nonReentrant after this point will fail _status = _ENTERED; } function _nonReentrantAfter() private { // By storing the original value once again, a refund is triggered (see // https://eips.ethereum.org/EIPS/eip-2200) _status = _NOT_ENTERED; } }
pragma solidity ^0.8.11; abstract contract EIP712 { struct EIP712Domain { string name; string version; uint256 chainId; address verifyingContract; } bytes32 constant EIP712DOMAIN_TYPEHASH = keccak256("EIP712Domain(string name,string version,uint256 chainId,address verifyingContract)"); bytes internal personalSignPrefix = "\x19Ethereum Signed Message:\n"; bytes32 public immutable DOMAIN_SEPARATOR; constructor(string memory name, string memory version) { uint256 chainId_; assembly { chainId_ := chainid() } DOMAIN_SEPARATOR = hash(EIP712Domain({name: name, version: version, chainId: chainId_, verifyingContract: address(this)})); } function hash(EIP712Domain memory eip712Domain) internal pure returns (bytes32) { return keccak256( abi.encode( EIP712DOMAIN_TYPEHASH, keccak256(bytes(eip712Domain.name)), keccak256(bytes(eip712Domain.version)), eip712Domain.chainId, eip712Domain.verifyingContract ) ); } function parseSignature(bytes memory signature) internal pure returns (uint8 v, bytes32 r, bytes32 s) { // ecrecover takes the signature parameters, and the only way to get them // currently is to use assembly. // solhint-disable-next-line no-inline-assembly assembly { r := mload(add(signature, 0x20)) s := mload(add(signature, 0x40)) v := byte(0, mload(add(signature, 0x60))) } return (v, r, s); } }
// SPDX-License-Identifier: AGPL-3.0-only+VPL pragma solidity ^0.8.19; /** @custom:benediction DEVS BENEDICAT ET PROTEGAT CONTRACTVS MEAM @title A contract for minting new Ethereum-side YAYO tokens. @author cheb <evmcheb.eth> @author Tim Clancy <tim-clancy.eth> This token contract allows for privileged callers to mint new YAYO. @custom:date May 24th, 2023 */ interface IYAYOMintable { /** A permissioned minting function. This function may only be called by the admin-specified minter. @param _to The recipient of the minted item. @param _tokenId The ID of the item to mint. */ function mint ( address _to, uint256 _tokenId ) external; }
// SPDX-License-Identifier: MIT // OpenZeppelin Contracts v4.4.1 (utils/Context.sol) 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; } }
{ "remappings": [ "@openzeppelin/=lib/openzeppelin-contracts/", "ds-test/=lib/forge-std/lib/ds-test/src/", "forge-std/=lib/forge-std/src/", "openzeppelin-contracts/=lib/openzeppelin-contracts/", "solady/=lib/solady/src/", "solarray/=lib/solarray/src/", "solmate/=lib/solady/lib/solmate/src/" ], "optimizer": { "enabled": true, "runs": 200 }, "metadata": { "bytecodeHash": "ipfs", "appendCBOR": true }, "outputSelection": { "*": { "*": [ "evm.bytecode", "evm.deployedBytecode", "devdoc", "userdoc", "metadata", "abi" ] } }, "evmVersion": "paris", "libraries": {} }
Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
[{"inputs":[{"internalType":"string","name":"_name","type":"string"},{"internalType":"address","name":"_signer","type":"address"},{"internalType":"address","name":"_yayo","type":"address"}],"stateMutability":"nonpayable","type":"constructor"},{"inputs":[],"name":"CannotMintExpiredSignature","type":"error"},{"inputs":[],"name":"CannotMintInvalidSignature","type":"error"},{"inputs":[],"name":"MintArrayLengthMismatch","type":"error"},{"inputs":[],"name":"SignerCannotBeZero","type":"error"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"caller","type":"address"},{"indexed":false,"internalType":"uint256","name":"id","type":"uint256"}],"name":"Minted","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":[],"name":"DOMAIN_SEPARATOR","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"MINT_TYPEHASH","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address[]","name":"_minters","type":"address[]"},{"internalType":"uint256[]","name":"_expiries","type":"uint256[]"},{"internalType":"uint256[]","name":"_tokenIds","type":"uint256[]"},{"internalType":"uint8[]","name":"_v","type":"uint8[]"},{"internalType":"bytes32[]","name":"_r","type":"bytes32[]"},{"internalType":"bytes32[]","name":"_s","type":"bytes32[]"}],"name":"mint","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_newSigner","type":"address"}],"name":"setSigner","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"signer","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"yayo","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"}]
Contract Creation Code
610100604052601a60c09081527f19457468657265756d205369676e6564204d6573736167653a0a00000000000060e0526000906200003f9082620002c2565b503480156200004d57600080fd5b5060405162001072380380620010728339810160408190526200007091620003ab565b60408051808201825260018152603160f81b602080830191909152825160808101845286815290810182905246928101839052306060820152859290620000b7906200012d565b60805250620000ca9150339050620001cb565b60016002556001600160a01b038216620000f757604051633d9d06fb60e11b815260040160405180910390fd5b6003620001058482620002c2565b50600480546001600160a01b0319166001600160a01b039384161790551660a05250620004a5565b60007f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f82600001518051906020012083602001518051906020012084604001518560600151604051602001620001ae9594939291909485526020850193909352604084019190915260608301526001600160a01b0316608082015260a00190565b604051602081830303815290604052805190602001209050919050565b600180546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b634e487b7160e01b600052604160045260246000fd5b600181811c908216806200024857607f821691505b6020821081036200026957634e487b7160e01b600052602260045260246000fd5b50919050565b601f821115620002bd57600081815260208120601f850160051c81016020861015620002985750805b601f850160051c820191505b81811015620002b957828155600101620002a4565b5050505b505050565b81516001600160401b03811115620002de57620002de6200021d565b620002f681620002ef845462000233565b846200026f565b602080601f8311600181146200032e5760008415620003155750858301515b600019600386901b1c1916600185901b178555620002b9565b600085815260208120601f198616915b828110156200035f578886015182559484019460019091019084016200033e565b50858210156200037e5787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b80516001600160a01b0381168114620003a657600080fd5b919050565b600080600060608486031215620003c157600080fd5b83516001600160401b0380821115620003d957600080fd5b818601915086601f830112620003ee57600080fd5b8151818111156200040357620004036200021d565b604051601f8201601f19908116603f011681019083821181831017156200042e576200042e6200021d565b816040528281526020935089848487010111156200044b57600080fd5b600091505b828210156200046f578482018401518183018501529083019062000450565b60008484830101528097505050506200048a8187016200038e565b935050506200049c604085016200038e565b90509250925092565b60805160a051610b9a620004d860003960008181610154015261058201526000818160f101526107000152610b9a6000f3fe608060405234801561001057600080fd5b506004361061009e5760003560e01c80638da5cb5b116100665780638da5cb5b1461013e578063d9507f981461014f578063f2fde38b14610176578063f76fc35e14610189578063fbb710a9146101b057600080fd5b806306fdde03146100a3578063238ac933146100c15780633644e515146100ec5780636c19e78314610121578063715018a614610136575b600080fd5b6100ab6101c3565b6040516100b891906107c9565b60405180910390f35b6004546100d4906001600160a01b031681565b6040516001600160a01b0390911681526020016100b8565b6101137f000000000000000000000000000000000000000000000000000000000000000081565b6040519081526020016100b8565b61013461012f366004610833565b610251565b005b6101346102a2565b6001546001600160a01b03166100d4565b6100d47f000000000000000000000000000000000000000000000000000000000000000081565b610134610184366004610833565b6102b6565b6101137f8e857ca7f733815b4c7a73c6300e4f2969a43fcd45f9c2ccee90365477affab081565b6101346101be3660046109f8565b610334565b600380546101d090610aed565b80601f01602080910402602001604051908101604052809291908181526020018280546101fc90610aed565b80156102495780601f1061021e57610100808354040283529160200191610249565b820191906000526020600020905b81548152906001019060200180831161022c57829003601f168201915b505050505081565b610259610457565b6001600160a01b03811661028057604051633d9d06fb60e11b815260040160405180910390fd5b600480546001600160a01b0319166001600160a01b0392909216919091179055565b6102aa610457565b6102b460006104b1565b565b6102be610457565b6001600160a01b0381166103285760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b60648201526084015b60405180910390fd5b610331816104b1565b50565b8451865114158061034757508351865114155b8061035457508251865114155b8061036157508151865114155b8061036e57508051865114155b1561038c57604051633757dfe560e01b815260040160405180910390fd5b60005b865181101561044e5761043c8782815181106103ad576103ad610b27565b60200260200101518783815181106103c7576103c7610b27565b60200260200101518784815181106103e1576103e1610b27565b60200260200101518785815181106103fb576103fb610b27565b602002602001015187868151811061041557610415610b27565b602002602001015187878151811061042f5761042f610b27565b6020026020010151610503565b8061044681610b3d565b91505061038f565b50505050505050565b6001546001600160a01b031633146102b45760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015260640161031f565b600180546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b61050b610638565b4285101561052c57604051632a0fbded60e21b815260040160405180910390fd5b600061053c87878787878761068f565b90508061055c5760405163b7fc248b60e01b815260040160405180910390fd5b6040516340c10f1960e01b81526001600160a01b038881166004830152602482018790527f000000000000000000000000000000000000000000000000000000000000000091908216906340c10f1990604401600060405180830381600087803b1580156105c957600080fd5b505af11580156105dd573d6000803e3d6000fd5b50505050876001600160a01b03167f30385c845b448a36257a6a1716e6ad2e1bc2cbe333cde1e69fe849ad6511adfe8760405161061c91815260200190565b60405180910390a250506106306001600255565b505050505050565b60028054036106895760405162461bcd60e51b815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c00604482015260640161031f565b60028055565b604080517f8e857ca7f733815b4c7a73c6300e4f2969a43fcd45f9c2ccee90365477affab06020808301919091526001600160a01b038916828401526060820188905260808083018890528351808403909101815260a08301909352825192019190912061190160f01b60c08301527f000000000000000000000000000000000000000000000000000000000000000060c283015260e282015260009081906101020160408051808303601f1901815282825280516020918201206004546000855291840180845281905260ff89169284019290925260608301879052608083018690529092506001600160a01b03169060019060a0016020604051602081039080840390855afa1580156107a8573d6000803e3d6000fd5b505050602060405103516001600160a01b0316149150509695505050505050565b600060208083528351808285015260005b818110156107f6578581018301518582016040015282016107da565b506000604082860101526040601f19601f8301168501019250505092915050565b80356001600160a01b038116811461082e57600080fd5b919050565b60006020828403121561084557600080fd5b61084e82610817565b9392505050565b634e487b7160e01b600052604160045260246000fd5b604051601f8201601f1916810167ffffffffffffffff8111828210171561089457610894610855565b604052919050565b600067ffffffffffffffff8211156108b6576108b6610855565b5060051b60200190565b600082601f8301126108d157600080fd5b813560206108e66108e18361089c565b61086b565b82815260059290921b8401810191818101908684111561090557600080fd5b8286015b848110156109275761091a81610817565b8352918301918301610909565b509695505050505050565b600082601f83011261094357600080fd5b813560206109536108e18361089c565b82815260059290921b8401810191818101908684111561097257600080fd5b8286015b848110156109275780358352918301918301610976565b600082601f83011261099e57600080fd5b813560206109ae6108e18361089c565b82815260059290921b840181019181810190868411156109cd57600080fd5b8286015b8481101561092757803560ff811681146109eb5760008081fd5b83529183019183016109d1565b60008060008060008060c08789031215610a1157600080fd5b863567ffffffffffffffff80821115610a2957600080fd5b610a358a838b016108c0565b97506020890135915080821115610a4b57600080fd5b610a578a838b01610932565b96506040890135915080821115610a6d57600080fd5b610a798a838b01610932565b95506060890135915080821115610a8f57600080fd5b610a9b8a838b0161098d565b94506080890135915080821115610ab157600080fd5b610abd8a838b01610932565b935060a0890135915080821115610ad357600080fd5b50610ae089828a01610932565b9150509295509295509295565b600181811c90821680610b0157607f821691505b602082108103610b2157634e487b7160e01b600052602260045260246000fd5b50919050565b634e487b7160e01b600052603260045260246000fd5b600060018201610b5d57634e487b7160e01b600052601160045260246000fd5b506001019056fea2646970667358221220c1c67133427f9a905edef006ffc3e4faba93b58ff59b36742242eaf0adeedd9664736f6c634300081300330000000000000000000000000000000000000000000000000000000000000060000000000000000000000000000000000000000000000000000000000000000100000000000000000000000009f66a094a0070ebddefa192a33fa5d75b59d46b00000000000000000000000000000000000000000000000000000000000000075961796f4e465400000000000000000000000000000000000000000000000000
Deployed Bytecode
0x608060405234801561001057600080fd5b506004361061009e5760003560e01c80638da5cb5b116100665780638da5cb5b1461013e578063d9507f981461014f578063f2fde38b14610176578063f76fc35e14610189578063fbb710a9146101b057600080fd5b806306fdde03146100a3578063238ac933146100c15780633644e515146100ec5780636c19e78314610121578063715018a614610136575b600080fd5b6100ab6101c3565b6040516100b891906107c9565b60405180910390f35b6004546100d4906001600160a01b031681565b6040516001600160a01b0390911681526020016100b8565b6101137f583819e6b7eb78f01193d914a00475f3225558e7f851791958a7bf23dd97aa1a81565b6040519081526020016100b8565b61013461012f366004610833565b610251565b005b6101346102a2565b6001546001600160a01b03166100d4565b6100d47f00000000000000000000000009f66a094a0070ebddefa192a33fa5d75b59d46b81565b610134610184366004610833565b6102b6565b6101137f8e857ca7f733815b4c7a73c6300e4f2969a43fcd45f9c2ccee90365477affab081565b6101346101be3660046109f8565b610334565b600380546101d090610aed565b80601f01602080910402602001604051908101604052809291908181526020018280546101fc90610aed565b80156102495780601f1061021e57610100808354040283529160200191610249565b820191906000526020600020905b81548152906001019060200180831161022c57829003601f168201915b505050505081565b610259610457565b6001600160a01b03811661028057604051633d9d06fb60e11b815260040160405180910390fd5b600480546001600160a01b0319166001600160a01b0392909216919091179055565b6102aa610457565b6102b460006104b1565b565b6102be610457565b6001600160a01b0381166103285760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b60648201526084015b60405180910390fd5b610331816104b1565b50565b8451865114158061034757508351865114155b8061035457508251865114155b8061036157508151865114155b8061036e57508051865114155b1561038c57604051633757dfe560e01b815260040160405180910390fd5b60005b865181101561044e5761043c8782815181106103ad576103ad610b27565b60200260200101518783815181106103c7576103c7610b27565b60200260200101518784815181106103e1576103e1610b27565b60200260200101518785815181106103fb576103fb610b27565b602002602001015187868151811061041557610415610b27565b602002602001015187878151811061042f5761042f610b27565b6020026020010151610503565b8061044681610b3d565b91505061038f565b50505050505050565b6001546001600160a01b031633146102b45760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015260640161031f565b600180546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b61050b610638565b4285101561052c57604051632a0fbded60e21b815260040160405180910390fd5b600061053c87878787878761068f565b90508061055c5760405163b7fc248b60e01b815260040160405180910390fd5b6040516340c10f1960e01b81526001600160a01b038881166004830152602482018790527f00000000000000000000000009f66a094a0070ebddefa192a33fa5d75b59d46b91908216906340c10f1990604401600060405180830381600087803b1580156105c957600080fd5b505af11580156105dd573d6000803e3d6000fd5b50505050876001600160a01b03167f30385c845b448a36257a6a1716e6ad2e1bc2cbe333cde1e69fe849ad6511adfe8760405161061c91815260200190565b60405180910390a250506106306001600255565b505050505050565b60028054036106895760405162461bcd60e51b815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c00604482015260640161031f565b60028055565b604080517f8e857ca7f733815b4c7a73c6300e4f2969a43fcd45f9c2ccee90365477affab06020808301919091526001600160a01b038916828401526060820188905260808083018890528351808403909101815260a08301909352825192019190912061190160f01b60c08301527f583819e6b7eb78f01193d914a00475f3225558e7f851791958a7bf23dd97aa1a60c283015260e282015260009081906101020160408051808303601f1901815282825280516020918201206004546000855291840180845281905260ff89169284019290925260608301879052608083018690529092506001600160a01b03169060019060a0016020604051602081039080840390855afa1580156107a8573d6000803e3d6000fd5b505050602060405103516001600160a01b0316149150509695505050505050565b600060208083528351808285015260005b818110156107f6578581018301518582016040015282016107da565b506000604082860101526040601f19601f8301168501019250505092915050565b80356001600160a01b038116811461082e57600080fd5b919050565b60006020828403121561084557600080fd5b61084e82610817565b9392505050565b634e487b7160e01b600052604160045260246000fd5b604051601f8201601f1916810167ffffffffffffffff8111828210171561089457610894610855565b604052919050565b600067ffffffffffffffff8211156108b6576108b6610855565b5060051b60200190565b600082601f8301126108d157600080fd5b813560206108e66108e18361089c565b61086b565b82815260059290921b8401810191818101908684111561090557600080fd5b8286015b848110156109275761091a81610817565b8352918301918301610909565b509695505050505050565b600082601f83011261094357600080fd5b813560206109536108e18361089c565b82815260059290921b8401810191818101908684111561097257600080fd5b8286015b848110156109275780358352918301918301610976565b600082601f83011261099e57600080fd5b813560206109ae6108e18361089c565b82815260059290921b840181019181810190868411156109cd57600080fd5b8286015b8481101561092757803560ff811681146109eb5760008081fd5b83529183019183016109d1565b60008060008060008060c08789031215610a1157600080fd5b863567ffffffffffffffff80821115610a2957600080fd5b610a358a838b016108c0565b97506020890135915080821115610a4b57600080fd5b610a578a838b01610932565b96506040890135915080821115610a6d57600080fd5b610a798a838b01610932565b95506060890135915080821115610a8f57600080fd5b610a9b8a838b0161098d565b94506080890135915080821115610ab157600080fd5b610abd8a838b01610932565b935060a0890135915080821115610ad357600080fd5b50610ae089828a01610932565b9150509295509295509295565b600181811c90821680610b0157607f821691505b602082108103610b2157634e487b7160e01b600052602260045260246000fd5b50919050565b634e487b7160e01b600052603260045260246000fd5b600060018201610b5d57634e487b7160e01b600052601160045260246000fd5b506001019056fea2646970667358221220c1c67133427f9a905edef006ffc3e4faba93b58ff59b36742242eaf0adeedd9664736f6c63430008130033
Constructor Arguments (ABI-Encoded and is the last bytes of the Contract Creation Code above)
0000000000000000000000000000000000000000000000000000000000000060000000000000000000000000000000000000000000000000000000000000000100000000000000000000000009f66a094a0070ebddefa192a33fa5d75b59d46b00000000000000000000000000000000000000000000000000000000000000075961796f4e465400000000000000000000000000000000000000000000000000
-----Decoded View---------------
Arg [0] : _name (string): YayoNFT
Arg [1] : _signer (address): 0x0000000000000000000000000000000000000001
Arg [2] : _yayo (address): 0x09f66a094a0070EBDdeFA192a33fa5d75b59D46b
-----Encoded View---------------
5 Constructor Arguments found :
Arg [0] : 0000000000000000000000000000000000000000000000000000000000000060
Arg [1] : 0000000000000000000000000000000000000000000000000000000000000001
Arg [2] : 00000000000000000000000009f66a094a0070ebddefa192a33fa5d75b59d46b
Arg [3] : 0000000000000000000000000000000000000000000000000000000000000007
Arg [4] : 5961796f4e465400000000000000000000000000000000000000000000000000
Loading...
Loading
Loading...
Loading
Multichain Portfolio | 27 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.