ETH Price: $3,641.90 (+3.32%)
 

Overview

ETH Balance

0 ETH

Eth Value

$0.00

Multichain Info

No addresses found
Transaction Hash
Method
Block
From
To
Mint182678452023-10-03 5:12:59459 days ago1696309979IN
0x54316F1A...fa3482106
0 ETH0.001834568.05030902
Mint175684732023-06-27 4:55:47557 days ago1687841747IN
0x54316F1A...fa3482106
0 ETH0.0031998514.40810291
Mint175372612023-06-22 19:33:11561 days ago1687462391IN
0x54316F1A...fa3482106
0 ETH0.0037707816.97885567
Mint174604982023-06-12 0:43:59572 days ago1686530639IN
0x54316F1A...fa3482106
0 ETH0.0034538915.55200559
Mint174332392023-06-08 4:31:59576 days ago1686198719IN
0x54316F1A...fa3482106
0 ETH0.0047928221.58082631
Mint174050302023-06-04 4:58:23580 days ago1685854703IN
0x54316F1A...fa3482106
0 ETH0.0043178619.44221908
Mint173660852023-05-29 17:19:47585 days ago1685380787IN
0x54316F1A...fa3482106
0 ETH0.008165635.8318051
Mint173374962023-05-25 16:58:47589 days ago1685033927IN
0x54316F1A...fa3482106
0 ETH0.0091596341.24344765
Mint173123312023-05-22 4:01:35593 days ago1684728095IN
0x54316F1A...fa3482106
0 ETH0.0121524853.32681354
Mint172840402023-05-18 4:23:23597 days ago1684383803IN
0x54316F1A...fa3482106
0 ETH0.0086949638.1547381
Mint172666842023-05-15 17:33:11599 days ago1684171991IN
0x54316F1A...fa3482106
0 ETH0.0141560562.11873591
Mint172635802023-05-15 7:04:35600 days ago1684134275IN
0x54316F1A...fa3482106
0 ETH0.0106924346.91988303
Mint172562572023-05-14 6:10:11601 days ago1684044611IN
0x54316F1A...fa3482106
0 ETH0.0079378335.74199204
Mint172551172023-05-14 2:15:23601 days ago1684030523IN
0x54316F1A...fa3482106
0 ETH0.0083734636.74391472
Mint172549952023-05-14 1:50:23601 days ago1684029023IN
0x54316F1A...fa3482106
0 ETH0.0078246834.33581789
Mint172533842023-05-13 20:22:11601 days ago1684009331IN
0x54316F1A...fa3482106
0 ETH0.0079651134.95204235
Mint172473662023-05-12 23:58:47602 days ago1683935927IN
0x54316F1A...fa3482106
0 ETH0.0097803542.91754483
Mint172466362023-05-12 21:30:47602 days ago1683927047IN
0x54316F1A...fa3482106
0 ETH0.0141058763.51508279
Mint172444802023-05-12 13:38:59603 days ago1683898739IN
0x54316F1A...fa3482106
0 ETH0.0140721561.75057795
Mint172438602023-05-12 11:33:47603 days ago1683891227IN
0x54316F1A...fa3482106
0 ETH0.0096033442.14082738
Mint172436772023-05-12 10:56:23603 days ago1683888983IN
0x54316F1A...fa3482106
0 ETH0.0106200146.60210334
Mint172435652023-05-12 10:33:59603 days ago1683887639IN
0x54316F1A...fa3482106
0 ETH0.0117623352.96272626
Mint172435622023-05-12 10:33:23603 days ago1683887603IN
0x54316F1A...fa3482106
0 ETH0.01196853.88882478
Mint172426752023-05-12 7:33:11603 days ago1683876791IN
0x54316F1A...fa3482106
0 ETH0.0131414957.66670669
Mint172418252023-05-12 4:38:35603 days ago1683866315IN
0x54316F1A...fa3482106
0 ETH0.0135257159.35271495
View all transactions

View more zero value Internal Transactions in Advanced View mode

Advanced mode:
Loading...
Loading

Contract Source Code Verified (Exact Match)

Contract Name:
WayOfTheWorm

Compiler Version
v0.8.18+commit.87f61d96

Optimization Enabled:
Yes with 200 runs

Other Settings:
default evmVersion, None license
File 1 of 3 : WayOfTheWorm.sol
// SPDX-License-Identifier: CC0-1.0
pragma solidity ^0.8.15;

import "./ImmutablesMinter.sol";

interface IERC721 {
    function balanceOf(address _owner) external view returns (uint256);
}

contract WayOfTheWorm {
    IERC721 private immutable edworm =
        IERC721(0xACd3CF818EFe8ddce84C585ddCB147c4C844D3b3);
    IERC721 private immutable edwone =
        IERC721(0xf65D6475869F61c6dce6aC194B6a7dbE45a91c63);
    ImmutablesMinter private immutable minter;
    uint256 private immutable projectId;

    uint256 public mintLimit = 1;
    mapping(address => uint256) public minted;

    address public owner;

    event OwnershipTransferred(
        address indexed previousOwner,
        address indexed newOwner
    );

    error LimitReached();
    error NotDisciple();
    error NotOwner();

    constructor(ImmutablesMinter minter_, uint256 projectId_) {
        require(
            minter_.owner() == msg.sender || minter_.isApproved(address(this))
        );

        minter = minter_;
        projectId = projectId_;

        owner = msg.sender;
        emit OwnershipTransferred(address(0), msg.sender);
    }

    // PUBLIC FUNCTIONS

    function mint() external {
        address disciple = msg.sender;
        if (!isDisciple(disciple)) {
            revert NotDisciple();
        } else if (minted[disciple] >= mintLimit) {
            revert LimitReached();
        }

        minted[disciple]++;
        minter.mint(projectId, disciple);
    }

    // OWNER FUNCTIONS

    /// @notice Update the amount of mints allowed per disciple
    function updateMintLimit(uint256 newLimit) external {
        if (msg.sender != owner) revert NotOwner();
        mintLimit = newLimit;
    }

    /// @notice Transfer ownership of this contract to a new address
    function transferOwnership(address newOwner) external {
        if (msg.sender != owner) revert NotOwner();
        owner = newOwner;
        emit OwnershipTransferred(msg.sender, newOwner);
    }

    /// @notice Call a contract with the specified data
    function call(
        address contractAddress,
        bytes calldata data
    ) external payable returns (bytes memory) {
        if (msg.sender != owner) revert NotOwner();
        (bool success, bytes memory returndata) = contractAddress.call{
            value: msg.value
        }(data);
        require(success);
        return returndata;
    }

    // VIEW AND PURE FUNCTIONS

    /// @notice Query if an address is a Worm disciple
    function isDisciple(address disciple) public view returns (bool) {
        return
            edwone.balanceOf(disciple) != 0 || edworm.balanceOf(disciple) != 0;
    }

    /// @notice Query if an address can mint
    function canMint(address disciple) public view returns (bool) {
        return minted[disciple] < mintLimit && isDisciple(disciple);
    }

    /// @notice Query if this contract implements an interface
    function supportsInterface(
        bytes4 interfaceId
    ) external pure returns (bool) {
        return
            interfaceId == 0x01ffc9a7 || // ERC-165
            interfaceId == 0x7f5828d0; // ERC-173
    }

    receive() external payable {}

    fallback() external payable {}
}

File 2 of 3 : ImmutablesMinter.sol
// SPDX-License-Identifier: CC0-1.0
pragma solidity ^0.8.15;

import "@openzeppelin/contracts/proxy/Clones.sol";

interface IImmutablesArt {
    function anyoneMintProjectEdition(uint256) external payable;

    function artistUpdateProjectArtistAddress(uint256, address) external;

    function currentTokenId() external view returns (uint256);

    function projectIdToRoyaltyAddress(
        uint256
    ) external view returns (IRoyaltyManager);

    function safeTransferFrom(address, address, uint256) external;
}

interface IRoyaltyManager {
    function release() external;
}

contract ImmutablesMinter {
    /// @notice The ImmutablesArt contract
    IImmutablesArt public immutable immutablesArt;
    address private immutable base;

    bool private initialized = true;

    /// @notice The owner address
    address public owner;

    /// @notice Query if an account is approved to mint
    mapping(address => bool) public isApproved;

    event Approval(address indexed operator, bool approved);
    event OwnershipTransferred(
        address indexed previousOwner,
        address indexed newOwner
    );

    error NotApproved();
    error NotOwner();

    constructor(IImmutablesArt immutablesArt_) {
        immutablesArt = immutablesArt_;
        base = address(this);

        owner = msg.sender;
        emit OwnershipTransferred(address(0), msg.sender);
    }

    /// @notice A function for intializing a cloned copy of this contract
    function initialize(address owner_) external {
        require(!initialized);

        initialized = true;
        owner = owner_;
        emit OwnershipTransferred(address(0), owner_);
    }

    /// @notice A function that allows you to clone this contract
    function clone() external returns (ImmutablesMinter) {
        ImmutablesMinter newMinter = ImmutablesMinter(
            payable(Clones.clone(base))
        );
        newMinter.initialize(msg.sender);
        return newMinter;
    }

    // OPERATOR FUNCTIONS

    /// @notice Mint an edition from a project
    function mint(
        uint256 projectId,
        address to
    ) external payable returns (uint256 tokenId) {
        if (!isApproved[msg.sender] && msg.sender != owner)
            revert NotApproved();

        immutablesArt.anyoneMintProjectEdition(projectId);
        tokenId = immutablesArt.currentTokenId();
        immutablesArt.safeTransferFrom(address(this), to, tokenId);
    }

    // OWNER FUNCTIONS

    /// @notice Approve an account to mint
    function setApproval(address operator, bool approved) external {
        if (msg.sender != owner) revert NotOwner();
        isApproved[operator] = approved;
        emit Approval(operator, approved);
    }

    /// @notice Transfer ownership of this contract to a new address
    function transferOwnership(address newOwner) external {
        if (msg.sender != owner) revert NotOwner();
        owner = newOwner;
        emit OwnershipTransferred(msg.sender, newOwner);
    }

    /// @notice Set the artist on a project to this contract's owner
    function relinquishProject(uint256 projectId) external {
        if (msg.sender != owner) revert NotOwner();
        immutablesArt.artistUpdateProjectArtistAddress(projectId, owner);
    }

    /// @notice Send any royalties and the contract balance to the owner
    function release(uint256 projectId) external returns (bytes memory) {
        if (msg.sender != owner) revert NotOwner();
        immutablesArt.projectIdToRoyaltyAddress(projectId).release();
        (bool success, bytes memory returndata) = owner.call{
            value: address(this).balance
        }("");
        require(success);
        return returndata;
    }

    /// @notice Transfer ERC-20 tokens to the owner
    function withdrawl(
        address erc20,
        uint256 value
    ) external returns (bytes memory) {
        if (msg.sender != owner) revert NotOwner();
        // "0xa9059cbb" is the selector for ERC-20 transfer.
        (bool success, bytes memory returndata) = erc20.call(
            abi.encodeWithSelector(0xa9059cbb, owner, value)
        );
        require(success);
        return returndata;
    }

    /// @notice Call a contract with the specified data
    function call(
        address contractAddress,
        bytes calldata data
    ) external payable returns (bytes memory) {
        if (msg.sender != owner) revert NotOwner();
        (bool success, bytes memory returndata) = contractAddress.call{
            value: msg.value
        }(data);
        require(success);
        return returndata;
    }

    // VIEW AND PURE FUNCTIONS

    /// @notice Query if this contract implements an interface
    function supportsInterface(
        bytes4 interfaceId
    ) external pure returns (bool) {
        return
            interfaceId == 0x01ffc9a7 || // ERC-165
            interfaceId == 0x7f5828d0; // ERC-173
    }

    receive() external payable {}

    fallback() external payable {}
}

File 3 of 3 : Clones.sol
// SPDX-License-Identifier: MIT
// OpenZeppelin Contracts (last updated v4.8.0) (proxy/Clones.sol)

pragma solidity ^0.8.0;

/**
 * @dev https://eips.ethereum.org/EIPS/eip-1167[EIP 1167] is a standard for
 * deploying minimal proxy contracts, also known as "clones".
 *
 * > To simply and cheaply clone contract functionality in an immutable way, this standard specifies
 * > a minimal bytecode implementation that delegates all calls to a known, fixed address.
 *
 * The library includes functions to deploy a proxy using either `create` (traditional deployment) or `create2`
 * (salted deterministic deployment). It also includes functions to predict the addresses of clones deployed using the
 * deterministic method.
 *
 * _Available since v3.4._
 */
library Clones {
    /**
     * @dev Deploys and returns the address of a clone that mimics the behaviour of `implementation`.
     *
     * This function uses the create opcode, which should never revert.
     */
    function clone(address implementation) internal returns (address instance) {
        /// @solidity memory-safe-assembly
        assembly {
            // Cleans the upper 96 bits of the `implementation` word, then packs the first 3 bytes
            // of the `implementation` address with the bytecode before the address.
            mstore(0x00, or(shr(0xe8, shl(0x60, implementation)), 0x3d602d80600a3d3981f3363d3d373d3d3d363d73000000))
            // Packs the remaining 17 bytes of `implementation` with the bytecode after the address.
            mstore(0x20, or(shl(0x78, implementation), 0x5af43d82803e903d91602b57fd5bf3))
            instance := create(0, 0x09, 0x37)
        }
        require(instance != address(0), "ERC1167: create failed");
    }

    /**
     * @dev Deploys and returns the address of a clone that mimics the behaviour of `implementation`.
     *
     * This function uses the create2 opcode and a `salt` to deterministically deploy
     * the clone. Using the same `implementation` and `salt` multiple time will revert, since
     * the clones cannot be deployed twice at the same address.
     */
    function cloneDeterministic(address implementation, bytes32 salt) internal returns (address instance) {
        /// @solidity memory-safe-assembly
        assembly {
            // Cleans the upper 96 bits of the `implementation` word, then packs the first 3 bytes
            // of the `implementation` address with the bytecode before the address.
            mstore(0x00, or(shr(0xe8, shl(0x60, implementation)), 0x3d602d80600a3d3981f3363d3d373d3d3d363d73000000))
            // Packs the remaining 17 bytes of `implementation` with the bytecode after the address.
            mstore(0x20, or(shl(0x78, implementation), 0x5af43d82803e903d91602b57fd5bf3))
            instance := create2(0, 0x09, 0x37, salt)
        }
        require(instance != address(0), "ERC1167: create2 failed");
    }

    /**
     * @dev Computes the address of a clone deployed using {Clones-cloneDeterministic}.
     */
    function predictDeterministicAddress(
        address implementation,
        bytes32 salt,
        address deployer
    ) internal pure returns (address predicted) {
        /// @solidity memory-safe-assembly
        assembly {
            let ptr := mload(0x40)
            mstore(add(ptr, 0x38), deployer)
            mstore(add(ptr, 0x24), 0x5af43d82803e903d91602b57fd5bf3ff)
            mstore(add(ptr, 0x14), implementation)
            mstore(ptr, 0x3d602d80600a3d3981f3363d3d373d3d3d363d73)
            mstore(add(ptr, 0x58), salt)
            mstore(add(ptr, 0x78), keccak256(add(ptr, 0x0c), 0x37))
            predicted := keccak256(add(ptr, 0x43), 0x55)
        }
    }

    /**
     * @dev Computes the address of a clone deployed using {Clones-cloneDeterministic}.
     */
    function predictDeterministicAddress(address implementation, bytes32 salt)
        internal
        view
        returns (address predicted)
    {
        return predictDeterministicAddress(implementation, salt, address(this));
    }
}

Settings
{
  "optimizer": {
    "enabled": true,
    "runs": 200
  },
  "outputSelection": {
    "*": {
      "*": [
        "evm.bytecode",
        "evm.deployedBytecode",
        "abi"
      ]
    }
  }
}

Contract Security Audit

Contract ABI

[{"inputs":[{"internalType":"contract ImmutablesMinter","name":"minter_","type":"address"},{"internalType":"uint256","name":"projectId_","type":"uint256"}],"stateMutability":"nonpayable","type":"constructor"},{"inputs":[],"name":"LimitReached","type":"error"},{"inputs":[],"name":"NotDisciple","type":"error"},{"inputs":[],"name":"NotOwner","type":"error"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"stateMutability":"payable","type":"fallback"},{"inputs":[{"internalType":"address","name":"contractAddress","type":"address"},{"internalType":"bytes","name":"data","type":"bytes"}],"name":"call","outputs":[{"internalType":"bytes","name":"","type":"bytes"}],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"address","name":"disciple","type":"address"}],"name":"canMint","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"disciple","type":"address"}],"name":"isDisciple","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"mint","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"mintLimit","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"minted","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bytes4","name":"interfaceId","type":"bytes4"}],"name":"supportsInterface","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newLimit","type":"uint256"}],"name":"updateMintLimit","outputs":[],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]

61010060405273acd3cf818efe8ddce84c585ddcb147c4c844d3b360805273f65d6475869f61c6dce6ac194b6a7dbe45a91c6360a052600160005534801561004657600080fd5b50604051610a6a380380610a6a833981016040819052610065916101c3565b336001600160a01b0316826001600160a01b0316638da5cb5b6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156100ad573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906100d191906101f1565b6001600160a01b03161480610149575060405163673448dd60e01b81523060048201526001600160a01b0383169063673448dd90602401602060405180830381865afa158015610125573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906101499190610215565b61015257600080fd5b6001600160a01b03821660c05260e0819052600280546001600160a01b031916339081179091556040516000907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908290a35050610237565b6001600160a01b03811681146101c057600080fd5b50565b600080604083850312156101d657600080fd5b82516101e1816101ab565b6020939093015192949293505050565b60006020828403121561020357600080fd5b815161020e816101ab565b9392505050565b60006020828403121561022757600080fd5b8151801515811461020e57600080fd5b60805160a05160c05160e0516107fa61027060003960006102da0152600061031001526000610449015260006104dd01526107fa6000f3fe60806040526004361061008f5760003560e01c80638da5cb5b116100565780638da5cb5b1461015d578063996517cf14610195578063c2ba4744146101ab578063e01d55c5146101cb578063f2fde38b146101eb57005b806301ffc9a7146100985780631249c58b146100cd5780631b8b921d146100e25780631e7269c51461010257806388072c791461013d57005b3661009657005b005b3480156100a457600080fd5b506100b86100b3366004610622565b61020b565b60405190151581526020015b60405180910390f35b3480156100d957600080fd5b50610096610242565b6100f56100f036600461066f565b610381565b6040516100c491906106f2565b34801561010e57600080fd5b5061012f61011d366004610740565b60016020526000908152604090205481565b6040519081526020016100c4565b34801561014957600080fd5b506100b8610158366004610740565b610427565b34801561016957600080fd5b5060025461017d906001600160a01b031681565b6040516001600160a01b0390911681526020016100c4565b3480156101a157600080fd5b5061012f60005481565b3480156101b757600080fd5b506100b86101c6366004610740565b610550565b3480156101d757600080fd5b506100966101e636600461075b565b61057b565b3480156101f757600080fd5b50610096610206366004610740565b6105ab565b60006301ffc9a760e01b6001600160e01b03198316148061023c57506307f5828d60e41b6001600160e01b03198316145b92915050565b3361024c81610427565b61026957604051635f7ae58760e11b815260040160405180910390fd5b600080546001600160a01b03831682526001602052604090912054106102a257604051633dd1910160e01b815260040160405180910390fd5b6001600160a01b03811660009081526001602052604081208054916102c683610774565b90915550506040516394bf804d60e01b81527f000000000000000000000000000000000000000000000000000000000000000060048201526001600160a01b0382811660248301527f000000000000000000000000000000000000000000000000000000000000000016906394bf804d906044016020604051808303816000875af1158015610359573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061037d919061079b565b5050565b6002546060906001600160a01b031633146103af576040516330cd747160e01b815260040160405180910390fd5b600080856001600160a01b03163486866040516103cd9291906107b4565b60006040518083038185875af1925050503d806000811461040a576040519150601f19603f3d011682016040523d82523d6000602084013e61040f565b606091505b50915091508161041e57600080fd5b95945050505050565b6040516370a0823160e01b81526001600160a01b0382811660048301526000917f0000000000000000000000000000000000000000000000000000000000000000909116906370a0823190602401602060405180830381865afa158015610492573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906104b6919061079b565b15158061023c57506040516370a0823160e01b81526001600160a01b0383811660048301527f000000000000000000000000000000000000000000000000000000000000000016906370a0823190602401602060405180830381865afa158015610524573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610548919061079b565b151592915050565b600080546001600160a01b03831682526001602052604082205410801561023c575061023c82610427565b6002546001600160a01b031633146105a6576040516330cd747160e01b815260040160405180910390fd5b600055565b6002546001600160a01b031633146105d6576040516330cd747160e01b815260040160405180910390fd5b600280546001600160a01b0319166001600160a01b03831690811790915560405133907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a350565b60006020828403121561063457600080fd5b81356001600160e01b03198116811461064c57600080fd5b9392505050565b80356001600160a01b038116811461066a57600080fd5b919050565b60008060006040848603121561068457600080fd5b61068d84610653565b9250602084013567ffffffffffffffff808211156106aa57600080fd5b818601915086601f8301126106be57600080fd5b8135818111156106cd57600080fd5b8760208285010111156106df57600080fd5b6020830194508093505050509250925092565b600060208083528351808285015260005b8181101561071f57858101830151858201604001528201610703565b506000604082860101526040601f19601f8301168501019250505092915050565b60006020828403121561075257600080fd5b61064c82610653565b60006020828403121561076d57600080fd5b5035919050565b60006001820161079457634e487b7160e01b600052601160045260246000fd5b5060010190565b6000602082840312156107ad57600080fd5b5051919050565b818382376000910190815291905056fea26469706673582212202ef1819c3fc8a5850dd9289ebc2ea96d7878da60a7c6bfa747135a9cbdc154f964736f6c6343000812003300000000000000000000000082b14438e77b12ac8ea527c7ed96908efa59e0170000000000000000000000000000000000000000000000000000000000000006

Deployed Bytecode

0x60806040526004361061008f5760003560e01c80638da5cb5b116100565780638da5cb5b1461015d578063996517cf14610195578063c2ba4744146101ab578063e01d55c5146101cb578063f2fde38b146101eb57005b806301ffc9a7146100985780631249c58b146100cd5780631b8b921d146100e25780631e7269c51461010257806388072c791461013d57005b3661009657005b005b3480156100a457600080fd5b506100b86100b3366004610622565b61020b565b60405190151581526020015b60405180910390f35b3480156100d957600080fd5b50610096610242565b6100f56100f036600461066f565b610381565b6040516100c491906106f2565b34801561010e57600080fd5b5061012f61011d366004610740565b60016020526000908152604090205481565b6040519081526020016100c4565b34801561014957600080fd5b506100b8610158366004610740565b610427565b34801561016957600080fd5b5060025461017d906001600160a01b031681565b6040516001600160a01b0390911681526020016100c4565b3480156101a157600080fd5b5061012f60005481565b3480156101b757600080fd5b506100b86101c6366004610740565b610550565b3480156101d757600080fd5b506100966101e636600461075b565b61057b565b3480156101f757600080fd5b50610096610206366004610740565b6105ab565b60006301ffc9a760e01b6001600160e01b03198316148061023c57506307f5828d60e41b6001600160e01b03198316145b92915050565b3361024c81610427565b61026957604051635f7ae58760e11b815260040160405180910390fd5b600080546001600160a01b03831682526001602052604090912054106102a257604051633dd1910160e01b815260040160405180910390fd5b6001600160a01b03811660009081526001602052604081208054916102c683610774565b90915550506040516394bf804d60e01b81527f000000000000000000000000000000000000000000000000000000000000000660048201526001600160a01b0382811660248301527f00000000000000000000000082b14438e77b12ac8ea527c7ed96908efa59e01716906394bf804d906044016020604051808303816000875af1158015610359573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061037d919061079b565b5050565b6002546060906001600160a01b031633146103af576040516330cd747160e01b815260040160405180910390fd5b600080856001600160a01b03163486866040516103cd9291906107b4565b60006040518083038185875af1925050503d806000811461040a576040519150601f19603f3d011682016040523d82523d6000602084013e61040f565b606091505b50915091508161041e57600080fd5b95945050505050565b6040516370a0823160e01b81526001600160a01b0382811660048301526000917f000000000000000000000000f65d6475869f61c6dce6ac194b6a7dbe45a91c63909116906370a0823190602401602060405180830381865afa158015610492573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906104b6919061079b565b15158061023c57506040516370a0823160e01b81526001600160a01b0383811660048301527f000000000000000000000000acd3cf818efe8ddce84c585ddcb147c4c844d3b316906370a0823190602401602060405180830381865afa158015610524573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610548919061079b565b151592915050565b600080546001600160a01b03831682526001602052604082205410801561023c575061023c82610427565b6002546001600160a01b031633146105a6576040516330cd747160e01b815260040160405180910390fd5b600055565b6002546001600160a01b031633146105d6576040516330cd747160e01b815260040160405180910390fd5b600280546001600160a01b0319166001600160a01b03831690811790915560405133907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a350565b60006020828403121561063457600080fd5b81356001600160e01b03198116811461064c57600080fd5b9392505050565b80356001600160a01b038116811461066a57600080fd5b919050565b60008060006040848603121561068457600080fd5b61068d84610653565b9250602084013567ffffffffffffffff808211156106aa57600080fd5b818601915086601f8301126106be57600080fd5b8135818111156106cd57600080fd5b8760208285010111156106df57600080fd5b6020830194508093505050509250925092565b600060208083528351808285015260005b8181101561071f57858101830151858201604001528201610703565b506000604082860101526040601f19601f8301168501019250505092915050565b60006020828403121561075257600080fd5b61064c82610653565b60006020828403121561076d57600080fd5b5035919050565b60006001820161079457634e487b7160e01b600052601160045260246000fd5b5060010190565b6000602082840312156107ad57600080fd5b5051919050565b818382376000910190815291905056fea26469706673582212202ef1819c3fc8a5850dd9289ebc2ea96d7878da60a7c6bfa747135a9cbdc154f964736f6c63430008120033

Constructor Arguments (ABI-Encoded and is the last bytes of the Contract Creation Code above)

00000000000000000000000082b14438e77b12ac8ea527c7ed96908efa59e0170000000000000000000000000000000000000000000000000000000000000006

-----Decoded View---------------
Arg [0] : minter_ (address): 0x82b14438e77b12aC8Ea527c7Ed96908eFA59E017
Arg [1] : projectId_ (uint256): 6

-----Encoded View---------------
2 Constructor Arguments found :
Arg [0] : 00000000000000000000000082b14438e77b12ac8ea527c7ed96908efa59e017
Arg [1] : 0000000000000000000000000000000000000000000000000000000000000006


Deployed Bytecode Sourcemap

191:2997:2:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2901:214;;;;;;;;;;-1:-1:-1;2901:214:2;;;;;:::i;:::-;;:::i;:::-;;;470:14:3;;463:22;445:41;;433:2;418:18;2901:214:2;;;;;;;;1153:310;;;;;;;;;;;;;:::i;2031:352::-;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;542:41::-;;;;;;;;;;-1:-1:-1;542:41:2;;;;;:::i;:::-;;;;;;;;;;;;;;;;;2233:25:3;;;2221:2;2206:18;542:41:2;2087:177:3;2476:167:2;;;;;;;;;;-1:-1:-1;2476:167:2;;;;;:::i;:::-;;:::i;590:20::-;;;;;;;;;;-1:-1:-1;590:20:2;;;;-1:-1:-1;;;;;590:20:2;;;;;;-1:-1:-1;;;;;2433:32:3;;;2415:51;;2403:2;2388:18;590:20:2;2269:203:3;508:28:2;;;;;;;;;;;;;;;;2694:138;;;;;;;;;;-1:-1:-1;2694:138:2;;;;;:::i;:::-;;:::i;1557:141::-;;;;;;;;;;-1:-1:-1;1557:141:2;;;;;:::i;:::-;;:::i;1773:196::-;;;;;;;;;;-1:-1:-1;1773:196:2;;;;;:::i;:::-;;:::i;2901:214::-;2985:4;-1:-1:-1;;;;;;;;;3020:25:2;;;;:77;;-1:-1:-1;;;;;;;;;;3072:25:2;;;3020:77;3001:96;2901:214;-1:-1:-1;;2901:214:2:o;1153:310::-;1207:10;1232:20;1207:10;1232;:20::i;:::-;1227:159;;1275:13;;-1:-1:-1;;;1275:13:2;;;;;;;;;;;1227:159;1329:9;;;-1:-1:-1;;;;;1309:16:2;;;;:6;:16;;;;;;;:29;1305:81;;1361:14;;-1:-1:-1;;;1361:14:2;;;;;;;;;;;1305:81;-1:-1:-1;;;;;1396:16:2;;;;;;:6;:16;;;;;:18;;;;;;:::i;:::-;;;;-1:-1:-1;;1424:32:2;;-1:-1:-1;;;1424:32:2;;1436:9;1424:32;;;3073:25:3;-1:-1:-1;;;;;3134:32:3;;;3114:18;;;3107:60;1424:6:2;:11;;;;3046:18:3;;1424:32:2;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;1178:285;1153:310::o;2031:352::-;2181:5;;2139:12;;-1:-1:-1;;;;;2181:5:2;2167:10;:19;2163:42;;2195:10;;-1:-1:-1;;;2195:10:2;;;;;;;;;;;2163:42;2216:12;2230:23;2257:15;-1:-1:-1;;;;;2257:20:2;2298:9;2318:4;;2257:66;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2215:108;;;;2341:7;2333:16;;;;;;2366:10;2031:352;-1:-1:-1;;;;;2031:352:2:o;2476:167::-;2570:26;;-1:-1:-1;;;2570:26:2;;-1:-1:-1;;;;;2433:32:3;;;2570:26:2;;;2415:51:3;2535:4:2;;2570:6;:16;;;;;;2388:18:3;;2570:26:2;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;:31;;;:66;;-1:-1:-1;2605:26:2;;-1:-1:-1;;;2605:26:2;;-1:-1:-1;;;;;2433:32:3;;;2605:26:2;;;2415:51:3;2605:6:2;:16;;;;2388:18:3;;2605:26:2;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;:31;;2551:85;2476:167;-1:-1:-1;;2476:167:2:o;2694:138::-;2750:4;2792:9;;-1:-1:-1;;;;;2773:16:2;;;;:6;:16;;;;;;:28;:52;;;;;2805:20;2816:8;2805:10;:20::i;1557:141::-;1637:5;;-1:-1:-1;;;;;1637:5:2;1623:10;:19;1619:42;;1651:10;;-1:-1:-1;;;1651:10:2;;;;;;;;;;;1619:42;1671:9;:20;1557:141::o;1773:196::-;1855:5;;-1:-1:-1;;;;;1855:5:2;1841:10;:19;1837:42;;1869:10;;-1:-1:-1;;;1869:10:2;;;;;;;;;;;1837:42;1889:5;:16;;-1:-1:-1;;;;;;1889:16:2;-1:-1:-1;;;;;1889:16:2;;;;;;;;1920:42;;1941:10;;1920:42;;-1:-1:-1;;1920:42:2;1773:196;:::o;14:286:3:-;72:6;125:2;113:9;104:7;100:23;96:32;93:52;;;141:1;138;131:12;93:52;167:23;;-1:-1:-1;;;;;;219:32:3;;209:43;;199:71;;266:1;263;256:12;199:71;289:5;14:286;-1:-1:-1;;;14:286:3:o;497:173::-;565:20;;-1:-1:-1;;;;;614:31:3;;604:42;;594:70;;660:1;657;650:12;594:70;497:173;;;:::o;675:665::-;754:6;762;770;823:2;811:9;802:7;798:23;794:32;791:52;;;839:1;836;829:12;791:52;862:29;881:9;862:29;:::i;:::-;852:39;;942:2;931:9;927:18;914:32;965:18;1006:2;998:6;995:14;992:34;;;1022:1;1019;1012:12;992:34;1060:6;1049:9;1045:22;1035:32;;1105:7;1098:4;1094:2;1090:13;1086:27;1076:55;;1127:1;1124;1117:12;1076:55;1167:2;1154:16;1193:2;1185:6;1182:14;1179:34;;;1209:1;1206;1199:12;1179:34;1254:7;1249:2;1240:6;1236:2;1232:15;1228:24;1225:37;1222:57;;;1275:1;1272;1265:12;1222:57;1306:2;1302;1298:11;1288:21;;1328:6;1318:16;;;;;675:665;;;;;:::o;1345:546::-;1455:4;1484:2;1513;1502:9;1495:21;1545:6;1539:13;1588:6;1583:2;1572:9;1568:18;1561:34;1613:1;1623:140;1637:6;1634:1;1631:13;1623:140;;;1732:14;;;1728:23;;1722:30;1698:17;;;1717:2;1694:26;1687:66;1652:10;;1623:140;;;1627:3;1812:1;1807:2;1798:6;1787:9;1783:22;1779:31;1772:42;1882:2;1875;1871:7;1866:2;1858:6;1854:15;1850:29;1839:9;1835:45;1831:54;1823:62;;;;1345:546;;;;:::o;1896:186::-;1955:6;2008:2;1996:9;1987:7;1983:23;1979:32;1976:52;;;2024:1;2021;2014:12;1976:52;2047:29;2066:9;2047:29;:::i;2477:180::-;2536:6;2589:2;2577:9;2568:7;2564:23;2560:32;2557:52;;;2605:1;2602;2595:12;2557:52;-1:-1:-1;2628:23:3;;2477:180;-1:-1:-1;2477:180:3:o;2662:232::-;2701:3;2722:17;;;2719:140;;2781:10;2776:3;2772:20;2769:1;2762:31;2816:4;2813:1;2806:15;2844:4;2841:1;2834:15;2719:140;-1:-1:-1;2886:1:3;2875:13;;2662:232::o;3178:184::-;3248:6;3301:2;3289:9;3280:7;3276:23;3272:32;3269:52;;;3317:1;3314;3307:12;3269:52;-1:-1:-1;3340:16:3;;3178:184;-1:-1:-1;3178:184:3:o;3367:271::-;3550:6;3542;3537:3;3524:33;3506:3;3576:16;;3601:13;;;3576:16;3367:271;-1:-1:-1;3367:271:3:o

Swarm Source

ipfs://2ef1819c3fc8a5850dd9289ebc2ea96d7878da60a7c6bfa747135a9cbdc154f9

Block Transaction Difficulty Gas Used Reward
View All Blocks Produced

Block Uncle Number Difficulty Gas Used Reward
View All Uncles
Loading...
Loading
Loading...
Loading

Validator Index Block Amount
View All Withdrawals

Transaction Hash Block Value Eth2 PubKey Valid
View All Deposits
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.