ETH Price: $1,798.77 (+10.00%)

Contract

0x5e3eDDDCbf54c9EC04191f5f33cfE4F67e2b4fD8

Overview

ETH Balance

0 ETH

ETH Value

$0.00

Token Holdings

Multichain Info

No addresses found
Transaction Hash
Method
Block
From
To
Request Purchase1348968552025-04-23 7:14:474 hrs ago1745392487IN
0x5e3eDDDC...67e2b4fD8
0.000114816634443 ETH0.0000018670950.0010063
Request Purchase1348968042025-04-23 7:13:054 hrs ago1745392385IN
0x5e3eDDDC...67e2b4fD8
0.000214816634443 ETH0.0000019174290.0010062
Request Purchase1347827742025-04-20 15:52:052 days ago1745164325IN
0x5e3eDDDC...67e2b4fD8
0.000129834055993 ETH0.0000005728810.0022861
Request Purchase1347433362025-04-19 17:57:293 days ago1745085449IN
0x5e3eDDDC...67e2b4fD8
0.000126483526651 ETH0.0000004999950.0018478
Request Purchase1347082962025-04-18 22:29:294 days ago1745015369IN
0x5e3eDDDC...67e2b4fD8
0.000128194473662 ETH0.0000008514080.0019468
Request Purchase1346373092025-04-17 7:03:156 days ago1744873395IN
0x5e3eDDDC...67e2b4fD8
0.000127699463605 ETH0.0000005544710.0012805
Request Purchase1345914022025-04-16 5:33:017 days ago1744781581IN
0x5e3eDDDC...67e2b4fD8
0.000130812899434 ETH0.0000003517860.0013218
Request Purchase1345741392025-04-15 19:57:357 days ago1744747055IN
0x5e3eDDDC...67e2b4fD8
0.000147654906599 ETH0.0000016152410.00603988
Request Purchase1345603512025-04-15 12:17:597 days ago1744719479IN
0x5e3eDDDC...67e2b4fD8
0.000125150266184 ETH0.000002965160.01100838
Request Purchase1345603332025-04-15 12:17:237 days ago1744719443IN
0x5e3eDDDC...67e2b4fD8
0.000125150266184 ETH0.000002987850.01105602
Request Purchase1345558872025-04-15 9:49:118 days ago1744710551IN
0x5e3eDDDC...67e2b4fD8
0.000724918080214 ETH0.0000009140210.00125362
Request Purchase1345530862025-04-15 8:15:498 days ago1744704949IN
0x5e3eDDDC...67e2b4fD8
0.000144462944024 ETH0.0000004688170.00178777
Request Purchase1345502222025-04-15 6:40:218 days ago1744699221IN
0x5e3eDDDC...67e2b4fD8
0.000124802033534 ETH0.0000003924110.0014762
Request Purchase1345324332025-04-14 20:47:238 days ago1744663643IN
0x5e3eDDDC...67e2b4fD8
0.000125422985999 ETH0.0000003167550.00118022
Request Purchase1345320612025-04-14 20:34:598 days ago1744662899IN
0x5e3eDDDC...67e2b4fD8
0.000225422985999 ETH0.0000003148220.0011911
Request Purchase1345320212025-04-14 20:33:398 days ago1744662819IN
0x5e3eDDDC...67e2b4fD8
0.000125422985999 ETH0.0000003216780.0011911
Request Purchase1345319982025-04-14 20:32:538 days ago1744662773IN
0x5e3eDDDC...67e2b4fD8
0.000125422985999 ETH0.0000003045120.0011912
Request Purchase1345319902025-04-14 20:32:378 days ago1744662757IN
0x5e3eDDDC...67e2b4fD8
0.000125422985999 ETH0.0000003048480.0011904
Request Purchase1345319712025-04-14 20:31:598 days ago1744662719IN
0x5e3eDDDC...67e2b4fD8
0.000125422985999 ETH0.0000003051310.0011918
Request Purchase1345319622025-04-14 20:31:418 days ago1744662701IN
0x5e3eDDDC...67e2b4fD8
0.000125422985999 ETH0.000000306120.0011928
Request Purchase1345319532025-04-14 20:31:238 days ago1744662683IN
0x5e3eDDDC...67e2b4fD8
0.000125422985999 ETH0.0000003231190.0011933
Request Purchase1345313512025-04-14 20:11:198 days ago1744661479IN
0x5e3eDDDC...67e2b4fD8
0.000125321189126 ETH0.0000003155610.0012342
Request Purchase1345313422025-04-14 20:11:018 days ago1744661461IN
0x5e3eDDDC...67e2b4fD8
0.000125321189126 ETH0.0000003162790.0012367
Request Purchase1345313332025-04-14 20:10:438 days ago1744661443IN
0x5e3eDDDC...67e2b4fD8
0.000125321189126 ETH0.0000002929460.0010816
Request Purchase1345297192025-04-14 19:16:558 days ago1744658215IN
0x5e3eDDDC...67e2b4fD8
0.000124572142914 ETH0.0000004861550.0018049
View all transactions

Latest 25 internal transactions (View All)

Advanced mode:
Parent Transaction Hash Block From To
1348968552025-04-23 7:14:474 hrs ago1745392487
0x5e3eDDDC...67e2b4fD8
0.000002251306557 ETH
1348968552025-04-23 7:14:474 hrs ago1745392487
0x5e3eDDDC...67e2b4fD8
0.000022513065577 ETH
1348968552025-04-23 7:14:474 hrs ago1745392487
0x5e3eDDDC...67e2b4fD8
0.000090052262308 ETH
1348968042025-04-23 7:13:054 hrs ago1745392385
0x5e3eDDDC...67e2b4fD8
0.000002251306557 ETH
1348968042025-04-23 7:13:054 hrs ago1745392385
0x5e3eDDDC...67e2b4fD8
0.000122513065577 ETH
1348968042025-04-23 7:13:054 hrs ago1745392385
0x5e3eDDDC...67e2b4fD8
0.000090052262308 ETH
1347827742025-04-20 15:52:052 days ago1745164325
0x5e3eDDDC...67e2b4fD8
0.000002545765803 ETH
1347827742025-04-20 15:52:052 days ago1745164325
0x5e3eDDDC...67e2b4fD8
0.000025457658037 ETH
1347827742025-04-20 15:52:052 days ago1745164325
0x5e3eDDDC...67e2b4fD8
0.000101830632151 ETH
1347433362025-04-19 17:57:293 days ago1745085449
0x5e3eDDDC...67e2b4fD8
0.00000248006915 ETH
1347433362025-04-19 17:57:293 days ago1745085449
0x5e3eDDDC...67e2b4fD8
0.0000248006915 ETH
1347433362025-04-19 17:57:293 days ago1745085449
0x5e3eDDDC...67e2b4fD8
0.000099202766001 ETH
1347082962025-04-18 22:29:294 days ago1745015369
0x5e3eDDDC...67e2b4fD8
0.00000251361713 ETH
1347082962025-04-18 22:29:294 days ago1745015369
0x5e3eDDDC...67e2b4fD8
0.000025136171306 ETH
1347082962025-04-18 22:29:294 days ago1745015369
0x5e3eDDDC...67e2b4fD8
0.000100544685225 ETH
1346373092025-04-17 7:03:156 days ago1744873395
0x5e3eDDDC...67e2b4fD8
0.000002503911051 ETH
1346373092025-04-17 7:03:156 days ago1744873395
0x5e3eDDDC...67e2b4fD8
0.00002503911051 ETH
1346373092025-04-17 7:03:156 days ago1744873395
0x5e3eDDDC...67e2b4fD8
0.000100156442043 ETH
1345914022025-04-16 5:33:017 days ago1744781581
0x5e3eDDDC...67e2b4fD8
0.000002564958812 ETH
1345914022025-04-16 5:33:017 days ago1744781581
0x5e3eDDDC...67e2b4fD8
0.000025649588124 ETH
1345914022025-04-16 5:33:017 days ago1744781581
0x5e3eDDDC...67e2b4fD8
0.000102598352497 ETH
1345741392025-04-15 19:57:357 days ago1744747055
0x5e3eDDDC...67e2b4fD8
0.000002503037384 ETH
1345741392025-04-15 19:57:357 days ago1744747055
0x5e3eDDDC...67e2b4fD8
0.000045030373843 ETH
1345741392025-04-15 19:57:357 days ago1744747055
0x5e3eDDDC...67e2b4fD8
0.000100121495372 ETH
1345603512025-04-15 12:17:597 days ago1744719479
0x5e3eDDDC...67e2b4fD8
0.000002453926787 ETH
View All Internal Transactions

Loading...
Loading

Contract Source Code Verified (Exact Match)

Contract Name:
MicroGatewayV2

Compiler Version
v0.8.13+commit.abaa5c0e

Optimization Enabled:
Yes with 200 runs

Other Settings:
default evmVersion
File 1 of 8 : MicroGatewayV2.sol
// SPDX-License-Identifier: MIT
pragma solidity ^0.8.13;

import "@openzeppelin/contracts/security/ReentrancyGuard.sol";
import "@openzeppelin/contracts/access/Ownable.sol";
import "../MicroUtilityV4.sol";

interface MicroNFT {
    struct SaleConfiguration {
        uint64 editionSize;
        uint16 profitSharing;
        address payable fundsRecipient;
        uint256 publicSalePrice;
        uint32 maxSalePurchasePerAddress;
        uint64 publicSaleStart;
        uint64 publicSaleEnd;
        bytes32 presaleMerkleRoot;
        bool cancelable;
    }

    function saleConfig() external view returns (SaleConfiguration memory);

    function purchase(
        address minter,
        uint256 quantity
    ) external returns (uint256);

    function purchasePresale(
        address minter,
        uint256 quantity,
        bytes32[] calldata merkleProof
    ) external returns (uint256);
}

contract MicroGatewayV2 is Ownable, ReentrancyGuard, MicroUtilityV4 {
    using SafeMath for uint256;

    bool private _initialized;

    uint256 private percenPerDiscount = 1000;

    uint256 private percentCreator = 2000;

    uint256 private percenPerRef = 2000;

    uint256 private feeDenominator = 10000;

    error PurchaseWrongPrice(uint256 correctPrice);

    error Unauthorized();

    event NewCollectionMinted(
        address indexed sender,
        address indexed contractAddress,
        uint256 quantity
    );

    event FundsWithdrawn(
        address indexed sender,
        address indexed fundsRecipient,
        uint256 fund
    );

    function init(bytes memory initPayload) external returns (bool) {
        if (_initialized) {
            revert Unauthorized();
        }
        (address _owner, address _manager) = abi.decode(
            initPayload,
            (address, address)
        );
        transferOwnership(_owner);
        _setManager(_manager);
        _initialized = true;
        return true;
    }

    function requestPurchase(
        address nftAddress,
        uint256 quantity,
        address referral
    ) external payable nonReentrant {
        address minter = msg.sender;

        _isMinting(minter, nftAddress, quantity, referral);

        MicroNFT(nftAddress).purchase(minter, quantity);

        emit NewCollectionMinted(minter, nftAddress, quantity);
    }

    function requestPresale(
        address nftAddress,
        uint256 quantity,
        bytes32[] calldata merkleProof,
        address referral
    ) external payable nonReentrant {
        address minter = msg.sender;

        _isMinting(minter, nftAddress, quantity, referral);

        MicroNFT(nftAddress).purchasePresale(minter, quantity, merkleProof);

        emit NewCollectionMinted(minter, nftAddress, quantity);
    }

    function _payoutFundingRaise(
        uint256 totalPurchase,
        address fundsRecipient
    ) internal returns (bool) {
        if (fundsRecipient == address(0) || totalPurchase == 0) {
            return false;
        }

        _payoutRemainder(fundsRecipient, totalPurchase);

        emit FundsWithdrawn(msg.sender, fundsRecipient, totalPurchase);

        return true;
    }

    function _isMinting(
        address minter,
        address nftAddress,
        uint256 quantity,
        address referral
    ) internal {
        if (minter == referral) {
            revert Unauthorized();
        }

        MicroNFT.SaleConfiguration memory saleConfig = MicroNFT(nftAddress)
            .saleConfig();

        uint256 salePrice = saleConfig.publicSalePrice.mul(quantity);

        uint256 protocolFee = getMicroFeeWei(quantity);

        uint256 totalFee = salePrice.add(protocolFee);

        uint256 creatorFee = protocolFee.mul(percentCreator).div(
            feeDenominator
        );

        if (msg.value < totalFee) {
            revert PurchaseWrongPrice(totalFee);
        }

        if (referral == address(0)) {
            _payoutMicroFee(protocolFee.sub(creatorFee));

            _payoutFundingRaise(
                salePrice.add(creatorFee),
                saleConfig.fundsRecipient
            );

            _payoutRemainder(minter, msg.value.sub(totalFee));
        } else {
            uint256 refProtocolFee = protocolFee.mul(percenPerRef).div(
                feeDenominator
            );

            uint256 discountProtocolFee = protocolFee
                .mul(percenPerDiscount)
                .div(feeDenominator);

            uint256 profitSharing = salePrice.mul(saleConfig.profitSharing).div(
                100
            );

            uint256 treasuryFee = protocolFee
                .sub(refProtocolFee)
                .sub(discountProtocolFee)
                .sub(creatorFee);

            _payoutMicroFee(treasuryFee);

            _payoutFundingRaise(
                salePrice.add(creatorFee).sub(profitSharing),
                saleConfig.fundsRecipient
            );

            _payoutRemainder(referral, refProtocolFee.add(profitSharing));

            _payoutRemainder(
                minter,
                msg.value.sub(totalFee).add(discountProtocolFee)
            );
        }
    }

    function configFee(
        uint256 _creator,
        uint256 _discount,
        uint256 _referral
    ) external onlyOwner {
        percentCreator = _creator;
        percenPerDiscount = _discount;
        percenPerRef = _referral;
    }

    function editManager(address _manager) external onlyOwner {
        _setManager(_manager);
    }
}

File 2 of 8 : Ownable.sol
// 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);
    }
}

File 3 of 8 : ReentrancyGuard.sol
// SPDX-License-Identifier: MIT

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 make it call a
     * `private` function that does the actual work.
     */
    modifier nonReentrant() {
        // On the first call to nonReentrant, _notEntered will be true
        require(_status != _ENTERED, "ReentrancyGuard: reentrant call");

        // Any calls to nonReentrant after this point will fail
        _status = _ENTERED;

        _;

        // By storing the original value once again, a refund is triggered (see
        // https://eips.ethereum.org/EIPS/eip-2200)
        _status = _NOT_ENTERED;
    }
}

File 4 of 8 : Context.sol
// 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;
    }
}

File 5 of 8 : SafeMath.sol
// SPDX-License-Identifier: MIT

pragma solidity ^0.8.0;

// CAUTION
// This version of SafeMath should only be used with Solidity 0.8 or later,
// because it relies on the compiler's built in overflow checks.

/**
 * @dev Wrappers over Solidity's arithmetic operations.
 *
 * NOTE: `SafeMath` is no longer needed starting with Solidity 0.8. The compiler
 * now has built in overflow checking.
 */
library SafeMath {
    /**
     * @dev Returns the addition of two unsigned integers, with an overflow flag.
     *
     * _Available since v3.4._
     */
    function tryAdd(uint256 a, uint256 b) internal pure returns (bool, uint256) {
        unchecked {
            uint256 c = a + b;
            if (c < a) return (false, 0);
            return (true, c);
        }
    }

    /**
     * @dev Returns the substraction of two unsigned integers, with an overflow flag.
     *
     * _Available since v3.4._
     */
    function trySub(uint256 a, uint256 b) internal pure returns (bool, uint256) {
        unchecked {
            if (b > a) return (false, 0);
            return (true, a - b);
        }
    }

    /**
     * @dev Returns the multiplication of two unsigned integers, with an overflow flag.
     *
     * _Available since v3.4._
     */
    function tryMul(uint256 a, uint256 b) internal pure returns (bool, uint256) {
        unchecked {
            // Gas optimization: this is cheaper than requiring 'a' not being zero, but the
            // benefit is lost if 'b' is also tested.
            // See: https://github.com/OpenZeppelin/openzeppelin-contracts/pull/522
            if (a == 0) return (true, 0);
            uint256 c = a * b;
            if (c / a != b) return (false, 0);
            return (true, c);
        }
    }

    /**
     * @dev Returns the division of two unsigned integers, with a division by zero flag.
     *
     * _Available since v3.4._
     */
    function tryDiv(uint256 a, uint256 b) internal pure returns (bool, uint256) {
        unchecked {
            if (b == 0) return (false, 0);
            return (true, a / b);
        }
    }

    /**
     * @dev Returns the remainder of dividing two unsigned integers, with a division by zero flag.
     *
     * _Available since v3.4._
     */
    function tryMod(uint256 a, uint256 b) internal pure returns (bool, uint256) {
        unchecked {
            if (b == 0) return (false, 0);
            return (true, a % b);
        }
    }

    /**
     * @dev Returns the addition of two unsigned integers, reverting on
     * overflow.
     *
     * Counterpart to Solidity's `+` operator.
     *
     * Requirements:
     *
     * - Addition cannot overflow.
     */
    function add(uint256 a, uint256 b) internal pure returns (uint256) {
        return a + b;
    }

    /**
     * @dev Returns the subtraction of two unsigned integers, reverting on
     * overflow (when the result is negative).
     *
     * Counterpart to Solidity's `-` operator.
     *
     * Requirements:
     *
     * - Subtraction cannot overflow.
     */
    function sub(uint256 a, uint256 b) internal pure returns (uint256) {
        return a - b;
    }

    /**
     * @dev Returns the multiplication of two unsigned integers, reverting on
     * overflow.
     *
     * Counterpart to Solidity's `*` operator.
     *
     * Requirements:
     *
     * - Multiplication cannot overflow.
     */
    function mul(uint256 a, uint256 b) internal pure returns (uint256) {
        return a * b;
    }

    /**
     * @dev Returns the integer division of two unsigned integers, reverting on
     * division by zero. The result is rounded towards zero.
     *
     * Counterpart to Solidity's `/` operator.
     *
     * Requirements:
     *
     * - The divisor cannot be zero.
     */
    function div(uint256 a, uint256 b) internal pure returns (uint256) {
        return a / b;
    }

    /**
     * @dev Returns the remainder of dividing two unsigned integers. (unsigned integer modulo),
     * reverting when dividing by zero.
     *
     * Counterpart to Solidity's `%` operator. This function uses a `revert`
     * opcode (which leaves remaining gas untouched) while Solidity uses an
     * invalid opcode to revert (consuming all remaining gas).
     *
     * Requirements:
     *
     * - The divisor cannot be zero.
     */
    function mod(uint256 a, uint256 b) internal pure returns (uint256) {
        return a % b;
    }

    /**
     * @dev Returns the subtraction of two unsigned integers, reverting with custom message on
     * overflow (when the result is negative).
     *
     * CAUTION: This function is deprecated because it requires allocating memory for the error
     * message unnecessarily. For custom revert reasons use {trySub}.
     *
     * Counterpart to Solidity's `-` operator.
     *
     * Requirements:
     *
     * - Subtraction cannot overflow.
     */
    function sub(
        uint256 a,
        uint256 b,
        string memory errorMessage
    ) internal pure returns (uint256) {
        unchecked {
            require(b <= a, errorMessage);
            return a - b;
        }
    }

    /**
     * @dev Returns the integer division of two unsigned integers, reverting with custom message on
     * division by zero. The result is rounded towards zero.
     *
     * Counterpart to Solidity's `/` operator. Note: this function uses a
     * `revert` opcode (which leaves remaining gas untouched) while Solidity
     * uses an invalid opcode to revert (consuming all remaining gas).
     *
     * Requirements:
     *
     * - The divisor cannot be zero.
     */
    function div(
        uint256 a,
        uint256 b,
        string memory errorMessage
    ) internal pure returns (uint256) {
        unchecked {
            require(b > 0, errorMessage);
            return a / b;
        }
    }

    /**
     * @dev Returns the remainder of dividing two unsigned integers. (unsigned integer modulo),
     * reverting with custom message when dividing by zero.
     *
     * CAUTION: This function is deprecated because it requires allocating memory for the error
     * message unnecessarily. For custom revert reasons use {tryMod}.
     *
     * Counterpart to Solidity's `%` operator. This function uses a `revert`
     * opcode (which leaves remaining gas untouched) while Solidity uses an
     * invalid opcode to revert (consuming all remaining gas).
     *
     * Requirements:
     *
     * - The divisor cannot be zero.
     */
    function mod(
        uint256 a,
        uint256 b,
        string memory errorMessage
    ) internal pure returns (uint256) {
        unchecked {
            require(b > 0, errorMessage);
            return a % b;
        }
    }
}

File 6 of 8 : IMicroManager.sol
// SPDX-License-Identifier: UNLICENSED

pragma solidity >=0.5.0;

interface IMicroManager {
    function microBridge(address _address) external view returns (bool);

    function treasuryAddress() external view returns (address);

    function microProtocolFee() external view returns (uint256);

    function oracleAddress() external view returns (address);
}

File 7 of 8 : IPriceOracle.sol
// SPDX-License-Identifier: MIT

pragma solidity >=0.5.0;

interface IPriceOracle {
    function convertUsdToWei(uint256 usdAmount) external view returns (uint256 weiAmount);
}

File 8 of 8 : MicroUtilityV4.sol
// SPDX-License-Identifier: MIT

pragma solidity ^0.8.4;
import "@openzeppelin/contracts/utils/math/SafeMath.sol";
import {IPriceOracle} from "./interfaces/IPriceOracle.sol";
import {IMicroManager} from "./interfaces/IMicroManager.sol";

error PaymentFailed();

contract MicroUtilityV4 {
    using SafeMath for uint256;
    IMicroManager public microManager;
    uint256 private constant STATIC_GAS_LIMIT = 210_000;

    event FeePayout(
        uint256 MicroMintFeeWei,
        address MicroFeeRecipient,
        bool success
    );

    /**
     * PUBLIC FUNCTIONS
     * state changing
     */

    function getMicroFeeWei(uint256 quantity) public view returns (uint256) {
        if (quantity == 0) {
            return 0;
        }
        return
            IPriceOracle(microManager.oracleAddress()).convertUsdToWei(
                microManager.microProtocolFee().mul(quantity)
            );
    }

    function _payoutMicroFee(uint256 microProtocolFee) internal {
        address treasury = microManager.treasuryAddress();
        _payoutRemainder(treasury, microProtocolFee);
        emit FeePayout(microProtocolFee, treasury, true);
    }

    function _setManager(address _manager) internal {
        microManager = IMicroManager(_manager);
    }

    function _payoutRemainder(address recipient, uint256 value) internal {
        if (value > 0) {
            (bool success, ) = payable(recipient).call{
                value: value,
                gas: gasleft() > STATIC_GAS_LIMIT ? STATIC_GAS_LIMIT : gasleft()
            }("");
            if (!success) {
                revert PaymentFailed();
            }
        }
    }
}

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

Contract Security Audit

Contract ABI

API
[{"inputs":[],"name":"PaymentFailed","type":"error"},{"inputs":[{"internalType":"uint256","name":"correctPrice","type":"uint256"}],"name":"PurchaseWrongPrice","type":"error"},{"inputs":[],"name":"Unauthorized","type":"error"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"MicroMintFeeWei","type":"uint256"},{"indexed":false,"internalType":"address","name":"MicroFeeRecipient","type":"address"},{"indexed":false,"internalType":"bool","name":"success","type":"bool"}],"name":"FeePayout","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"sender","type":"address"},{"indexed":true,"internalType":"address","name":"fundsRecipient","type":"address"},{"indexed":false,"internalType":"uint256","name":"fund","type":"uint256"}],"name":"FundsWithdrawn","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"sender","type":"address"},{"indexed":true,"internalType":"address","name":"contractAddress","type":"address"},{"indexed":false,"internalType":"uint256","name":"quantity","type":"uint256"}],"name":"NewCollectionMinted","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":"uint256","name":"_creator","type":"uint256"},{"internalType":"uint256","name":"_discount","type":"uint256"},{"internalType":"uint256","name":"_referral","type":"uint256"}],"name":"configFee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_manager","type":"address"}],"name":"editManager","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"quantity","type":"uint256"}],"name":"getMicroFeeWei","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bytes","name":"initPayload","type":"bytes"}],"name":"init","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"microManager","outputs":[{"internalType":"contract IMicroManager","name":"","type":"address"}],"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":"nftAddress","type":"address"},{"internalType":"uint256","name":"quantity","type":"uint256"},{"internalType":"bytes32[]","name":"merkleProof","type":"bytes32[]"},{"internalType":"address","name":"referral","type":"address"}],"name":"requestPresale","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"address","name":"nftAddress","type":"address"},{"internalType":"uint256","name":"quantity","type":"uint256"},{"internalType":"address","name":"referral","type":"address"}],"name":"requestPurchase","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"}]

60806040526103e86003556107d06004556107d060055561271060065534801561002857600080fd5b506100323361003b565b6001805561008b565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b61114c8061009a6000396000f3fe6080604052600436106100915760003560e01c806387031fe51161005957806387031fe51461015b5780638da5cb5b1461017b578063dc0a539414610199578063e276df24146101ac578063f2fde38b146101cc57600080fd5b80630e21ea06146100965780634ddf47d4146100d3578063616985ed14610103578063715018a61461013157806377a59bea14610148575b600080fd5b3480156100a257600080fd5b506002546100b6906001600160a01b031681565b6040516001600160a01b0390911681526020015b60405180910390f35b3480156100df57600080fd5b506100f36100ee366004610c7f565b6101ec565b60405190151581526020016100ca565b34801561010f57600080fd5b5061012361011e366004610d30565b610263565b6040519081526020016100ca565b34801561013d57600080fd5b506101466103e0565b005b610146610156366004610d5e565b61041f565b34801561016757600080fd5b50610146610176366004610e05565b610552565b34801561018757600080fd5b506000546001600160a01b03166100b6565b6101466101a7366004610e22565b610588565b3480156101b857600080fd5b506101466101c7366004610e64565b6106b7565b3480156101d857600080fd5b506101466101e7366004610e05565b6106ef565b600254600090600160a01b900460ff1615610219576040516282b42960e81b815260040160405180910390fd5b600080838060200190518101906102309190610ea0565b9150915061023d826106ef565b61024681610787565b50506002805460ff60a01b1916600160a01b179055506001919050565b60008160000361027557506000919050565b600260009054906101000a90046001600160a01b03166001600160a01b031663a89ae4ba6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156102c8573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906102ec9190610eda565b6001600160a01b031663f5d7816161037b84600260009054906101000a90046001600160a01b03166001600160a01b0316630c1119bb6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610351573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906103759190610ef7565b906107a9565b6040518263ffffffff1660e01b815260040161039991815260200190565b602060405180830381865afa1580156103b6573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906103da9190610ef7565b92915050565b6000546001600160a01b031633146104135760405162461bcd60e51b815260040161040a90610f10565b60405180910390fd5b61041d60006107bc565b565b6002600154036104715760405162461bcd60e51b815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c00604482015260640161040a565b6002600155336104838187878561080c565b6040516341def22360e11b81526001600160a01b038716906383bde446906104b5908490899089908990600401610f45565b6020604051808303816000875af11580156104d4573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906104f89190610ef7565b50856001600160a01b0316816001600160a01b03167fa7b01104a6b6c5840d976794ca3cdc03532966d0b58b7799a9202d093e152ad08760405161053e91815260200190565b60405180910390a350506001805550505050565b6000546001600160a01b0316331461057c5760405162461bcd60e51b815260040161040a90610f10565b61058581610787565b50565b6002600154036105da5760405162461bcd60e51b815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c00604482015260640161040a565b6002600155336105ec8185858561080c565b6040516346f4991160e11b81526001600160a01b03828116600483015260248201859052851690638de93222906044016020604051808303816000875af115801561063b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061065f9190610ef7565b50836001600160a01b0316816001600160a01b03167fa7b01104a6b6c5840d976794ca3cdc03532966d0b58b7799a9202d093e152ad0856040516106a591815260200190565b60405180910390a35050600180555050565b6000546001600160a01b031633146106e15760405162461bcd60e51b815260040161040a90610f10565b600492909255600355600555565b6000546001600160a01b031633146107195760405162461bcd60e51b815260040161040a90610f10565b6001600160a01b03811661077e5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b606482015260840161040a565b610585816107bc565b600280546001600160a01b0319166001600160a01b0392909216919091179055565b60006107b58284610fb0565b9392505050565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b806001600160a01b0316846001600160a01b03160361083d576040516282b42960e81b815260040160405180910390fd5b6000836001600160a01b03166390aa0b0f6040518163ffffffff1660e01b815260040161012060405180830381865afa15801561087e573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906108a2919061101d565b905060006108bd8483606001516107a990919063ffffffff16565b905060006108ca85610263565b905060006108d88383610a4a565b905060006108fd6006546108f7600454866107a990919063ffffffff16565b90610a56565b9050813410156109235760405163c5a8df2f60e01b81526004810183905260240161040a565b6001600160a01b0386166109735761094361093e8483610a62565b610a6e565b61095a6109508583610a4a565b8660400151610b34565b5061096e896109693485610a62565b610baa565b610a3f565b60006109906006546108f7600554876107a990919063ffffffff16565b905060006109af6006546108f7600354886107a990919063ffffffff16565b905060006109d360646108f78a6020015161ffff168a6107a990919063ffffffff16565b905060006109ed856109e785818b89610a62565b90610a62565b90506109f881610a6e565b610a13610a09836109e78b89610a4a565b8a60400151610b34565b50610a228a6109698685610a4a565b610a3a8d61096985610a34348b610a62565b90610a4a565b505050505b505050505050505050565b60006107b582846110c5565b60006107b582846110dd565b60006107b582846110ff565b6002546040805163c5f956af60e01b815290516000926001600160a01b03169163c5f956af9160048083019260209291908290030181865afa158015610ab8573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610adc9190610eda565b9050610ae88183610baa565b604080518381526001600160a01b038316602082015260018183015290517f7d91e6735310f2a10253c2b777a07cdd5bce000456de934af23dfc9e4aea7f879181900360600190a15050565b60006001600160a01b0382161580610b4a575082155b15610b57575060006103da565b610b618284610baa565b6040518381526001600160a01b0383169033907fa92ff919b850e4909ab2261d907ef955f11bc1716733a6cbece38d163a69af8a9060200160405180910390a350600192915050565b8015610c3b576000826001600160a01b031682620334505a11610bcd575a610bd2565b620334505b6040519091906000818181858888f193505050503d8060008114610c12576040519150601f19603f3d011682016040523d82523d6000602084013e610c17565b606091505b5050905080610c39576040516307a4ced160e51b815260040160405180910390fd5b505b5050565b634e487b7160e01b600052604160045260246000fd5b604051610120810167ffffffffffffffff81118282101715610c7957610c79610c3f565b60405290565b600060208284031215610c9157600080fd5b813567ffffffffffffffff80821115610ca957600080fd5b818401915084601f830112610cbd57600080fd5b813581811115610ccf57610ccf610c3f565b604051601f8201601f19908116603f01168101908382118183101715610cf757610cf7610c3f565b81604052828152876020848701011115610d1057600080fd5b826020860160208301376000928101602001929092525095945050505050565b600060208284031215610d4257600080fd5b5035919050565b6001600160a01b038116811461058557600080fd5b600080600080600060808688031215610d7657600080fd5b8535610d8181610d49565b945060208601359350604086013567ffffffffffffffff80821115610da557600080fd5b818801915088601f830112610db957600080fd5b813581811115610dc857600080fd5b8960208260051b8501011115610ddd57600080fd5b6020830195508094505050506060860135610df781610d49565b809150509295509295909350565b600060208284031215610e1757600080fd5b81356107b581610d49565b600080600060608486031215610e3757600080fd5b8335610e4281610d49565b9250602084013591506040840135610e5981610d49565b809150509250925092565b600080600060608486031215610e7957600080fd5b505081359360208301359350604090920135919050565b8051610e9b81610d49565b919050565b60008060408385031215610eb357600080fd5b8251610ebe81610d49565b6020840151909250610ecf81610d49565b809150509250929050565b600060208284031215610eec57600080fd5b81516107b581610d49565b600060208284031215610f0957600080fd5b5051919050565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b6001600160a01b038516815260208101849052606060408201819052810182905260006001600160fb1b03831115610f7c57600080fd5b8260051b808560808501376000920160800191825250949350505050565b634e487b7160e01b600052601160045260246000fd5b6000816000190483118215151615610fca57610fca610f9a565b500290565b805167ffffffffffffffff81168114610e9b57600080fd5b805161ffff81168114610e9b57600080fd5b805163ffffffff81168114610e9b57600080fd5b80518015158114610e9b57600080fd5b6000610120828403121561103057600080fd5b611038610c55565b61104183610fcf565b815261104f60208401610fe7565b602082015261106060408401610e90565b60408201526060830151606082015261107b60808401610ff9565b608082015261108c60a08401610fcf565b60a082015261109d60c08401610fcf565b60c082015260e083015160e08201526101006110ba81850161100d565b908201529392505050565b600082198211156110d8576110d8610f9a565b500190565b6000826110fa57634e487b7160e01b600052601260045260246000fd5b500490565b60008282101561111157611111610f9a565b50039056fea2646970667358221220932046e2e7660dcec057ba0008e2861a2960b61e3eb586be2c70ac7ab27baa8864736f6c634300080d0033

Deployed Bytecode

0x6080604052600436106100915760003560e01c806387031fe51161005957806387031fe51461015b5780638da5cb5b1461017b578063dc0a539414610199578063e276df24146101ac578063f2fde38b146101cc57600080fd5b80630e21ea06146100965780634ddf47d4146100d3578063616985ed14610103578063715018a61461013157806377a59bea14610148575b600080fd5b3480156100a257600080fd5b506002546100b6906001600160a01b031681565b6040516001600160a01b0390911681526020015b60405180910390f35b3480156100df57600080fd5b506100f36100ee366004610c7f565b6101ec565b60405190151581526020016100ca565b34801561010f57600080fd5b5061012361011e366004610d30565b610263565b6040519081526020016100ca565b34801561013d57600080fd5b506101466103e0565b005b610146610156366004610d5e565b61041f565b34801561016757600080fd5b50610146610176366004610e05565b610552565b34801561018757600080fd5b506000546001600160a01b03166100b6565b6101466101a7366004610e22565b610588565b3480156101b857600080fd5b506101466101c7366004610e64565b6106b7565b3480156101d857600080fd5b506101466101e7366004610e05565b6106ef565b600254600090600160a01b900460ff1615610219576040516282b42960e81b815260040160405180910390fd5b600080838060200190518101906102309190610ea0565b9150915061023d826106ef565b61024681610787565b50506002805460ff60a01b1916600160a01b179055506001919050565b60008160000361027557506000919050565b600260009054906101000a90046001600160a01b03166001600160a01b031663a89ae4ba6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156102c8573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906102ec9190610eda565b6001600160a01b031663f5d7816161037b84600260009054906101000a90046001600160a01b03166001600160a01b0316630c1119bb6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610351573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906103759190610ef7565b906107a9565b6040518263ffffffff1660e01b815260040161039991815260200190565b602060405180830381865afa1580156103b6573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906103da9190610ef7565b92915050565b6000546001600160a01b031633146104135760405162461bcd60e51b815260040161040a90610f10565b60405180910390fd5b61041d60006107bc565b565b6002600154036104715760405162461bcd60e51b815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c00604482015260640161040a565b6002600155336104838187878561080c565b6040516341def22360e11b81526001600160a01b038716906383bde446906104b5908490899089908990600401610f45565b6020604051808303816000875af11580156104d4573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906104f89190610ef7565b50856001600160a01b0316816001600160a01b03167fa7b01104a6b6c5840d976794ca3cdc03532966d0b58b7799a9202d093e152ad08760405161053e91815260200190565b60405180910390a350506001805550505050565b6000546001600160a01b0316331461057c5760405162461bcd60e51b815260040161040a90610f10565b61058581610787565b50565b6002600154036105da5760405162461bcd60e51b815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c00604482015260640161040a565b6002600155336105ec8185858561080c565b6040516346f4991160e11b81526001600160a01b03828116600483015260248201859052851690638de93222906044016020604051808303816000875af115801561063b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061065f9190610ef7565b50836001600160a01b0316816001600160a01b03167fa7b01104a6b6c5840d976794ca3cdc03532966d0b58b7799a9202d093e152ad0856040516106a591815260200190565b60405180910390a35050600180555050565b6000546001600160a01b031633146106e15760405162461bcd60e51b815260040161040a90610f10565b600492909255600355600555565b6000546001600160a01b031633146107195760405162461bcd60e51b815260040161040a90610f10565b6001600160a01b03811661077e5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b606482015260840161040a565b610585816107bc565b600280546001600160a01b0319166001600160a01b0392909216919091179055565b60006107b58284610fb0565b9392505050565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b806001600160a01b0316846001600160a01b03160361083d576040516282b42960e81b815260040160405180910390fd5b6000836001600160a01b03166390aa0b0f6040518163ffffffff1660e01b815260040161012060405180830381865afa15801561087e573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906108a2919061101d565b905060006108bd8483606001516107a990919063ffffffff16565b905060006108ca85610263565b905060006108d88383610a4a565b905060006108fd6006546108f7600454866107a990919063ffffffff16565b90610a56565b9050813410156109235760405163c5a8df2f60e01b81526004810183905260240161040a565b6001600160a01b0386166109735761094361093e8483610a62565b610a6e565b61095a6109508583610a4a565b8660400151610b34565b5061096e896109693485610a62565b610baa565b610a3f565b60006109906006546108f7600554876107a990919063ffffffff16565b905060006109af6006546108f7600354886107a990919063ffffffff16565b905060006109d360646108f78a6020015161ffff168a6107a990919063ffffffff16565b905060006109ed856109e785818b89610a62565b90610a62565b90506109f881610a6e565b610a13610a09836109e78b89610a4a565b8a60400151610b34565b50610a228a6109698685610a4a565b610a3a8d61096985610a34348b610a62565b90610a4a565b505050505b505050505050505050565b60006107b582846110c5565b60006107b582846110dd565b60006107b582846110ff565b6002546040805163c5f956af60e01b815290516000926001600160a01b03169163c5f956af9160048083019260209291908290030181865afa158015610ab8573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610adc9190610eda565b9050610ae88183610baa565b604080518381526001600160a01b038316602082015260018183015290517f7d91e6735310f2a10253c2b777a07cdd5bce000456de934af23dfc9e4aea7f879181900360600190a15050565b60006001600160a01b0382161580610b4a575082155b15610b57575060006103da565b610b618284610baa565b6040518381526001600160a01b0383169033907fa92ff919b850e4909ab2261d907ef955f11bc1716733a6cbece38d163a69af8a9060200160405180910390a350600192915050565b8015610c3b576000826001600160a01b031682620334505a11610bcd575a610bd2565b620334505b6040519091906000818181858888f193505050503d8060008114610c12576040519150601f19603f3d011682016040523d82523d6000602084013e610c17565b606091505b5050905080610c39576040516307a4ced160e51b815260040160405180910390fd5b505b5050565b634e487b7160e01b600052604160045260246000fd5b604051610120810167ffffffffffffffff81118282101715610c7957610c79610c3f565b60405290565b600060208284031215610c9157600080fd5b813567ffffffffffffffff80821115610ca957600080fd5b818401915084601f830112610cbd57600080fd5b813581811115610ccf57610ccf610c3f565b604051601f8201601f19908116603f01168101908382118183101715610cf757610cf7610c3f565b81604052828152876020848701011115610d1057600080fd5b826020860160208301376000928101602001929092525095945050505050565b600060208284031215610d4257600080fd5b5035919050565b6001600160a01b038116811461058557600080fd5b600080600080600060808688031215610d7657600080fd5b8535610d8181610d49565b945060208601359350604086013567ffffffffffffffff80821115610da557600080fd5b818801915088601f830112610db957600080fd5b813581811115610dc857600080fd5b8960208260051b8501011115610ddd57600080fd5b6020830195508094505050506060860135610df781610d49565b809150509295509295909350565b600060208284031215610e1757600080fd5b81356107b581610d49565b600080600060608486031215610e3757600080fd5b8335610e4281610d49565b9250602084013591506040840135610e5981610d49565b809150509250925092565b600080600060608486031215610e7957600080fd5b505081359360208301359350604090920135919050565b8051610e9b81610d49565b919050565b60008060408385031215610eb357600080fd5b8251610ebe81610d49565b6020840151909250610ecf81610d49565b809150509250929050565b600060208284031215610eec57600080fd5b81516107b581610d49565b600060208284031215610f0957600080fd5b5051919050565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b6001600160a01b038516815260208101849052606060408201819052810182905260006001600160fb1b03831115610f7c57600080fd5b8260051b808560808501376000920160800191825250949350505050565b634e487b7160e01b600052601160045260246000fd5b6000816000190483118215151615610fca57610fca610f9a565b500290565b805167ffffffffffffffff81168114610e9b57600080fd5b805161ffff81168114610e9b57600080fd5b805163ffffffff81168114610e9b57600080fd5b80518015158114610e9b57600080fd5b6000610120828403121561103057600080fd5b611038610c55565b61104183610fcf565b815261104f60208401610fe7565b602082015261106060408401610e90565b60408201526060830151606082015261107b60808401610ff9565b608082015261108c60a08401610fcf565b60a082015261109d60c08401610fcf565b60c082015260e083015160e08201526101006110ba81850161100d565b908201529392505050565b600082198211156110d8576110d8610f9a565b500190565b6000826110fa57634e487b7160e01b600052601260045260246000fd5b500490565b60008282101561111157611111610f9a565b50039056fea2646970667358221220932046e2e7660dcec057ba0008e2861a2960b61e3eb586be2c70ac7ab27baa8864736f6c634300080d0033

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
[ Download: CSV Export  ]
[ 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.