Contract 0x006A667D701088243238A4Af19A2543fd37b1C6A 7

Contract Overview

Balance:
0 ETH
Txn Hash Method
Block
From
To
Value [Txn Fee]
0x8df7e055f99b3ca2160d1206b8ebc3ca3dddce4ab4b2fa1dc9e4e6f8a1d48a2eDeploy DCNT721A78399882023-02-15 15:38:29106 days 2 hrs ago0x1dde6327a26e6740fdab9780fbf0d059fc85ee33 IN  0x006a667d701088243238a4af19a2543fd37b1c6a0 ETH0.00010236 0.1
0x2f5e7bf37ac1b2718a94a1330a9da01db84b9b9b890f367168cc23300596d918Deploy DCNT721A78350852023-02-15 14:55:57106 days 3 hrs ago0x1dde6327a26e6740fdab9780fbf0d059fc85ee33 IN  0x006a667d701088243238a4af19a2543fd37b1c6a0 ETH0.00122905 2.19899
0x2ad00ee66b820e85303ff86aba41552bfde572cae6c84edcf0e1087a40d74905Deploy DCNT721A77419382023-02-14 23:15:59106 days 19 hrs ago0x1dde6327a26e6740fdab9780fbf0d059fc85ee33 IN  0x006a667d701088243238a4af19a2543fd37b1c6a0 ETH0.00005713 0.1
0xd6e0a3b81b443cab16b634b972927c9b73cdaf460215d333438b708318fa49b0Deploy DCNT721A77392872023-02-14 22:40:49106 days 19 hrs ago0x1dde6327a26e6740fdab9780fbf0d059fc85ee33 IN  0x006a667d701088243238a4af19a2543fd37b1c6a0 ETH0.00005715 0.1
0x25e1e2f9057c9412c9dc40bdba7de9dd973c0a4a8d7b57806b3f59b8c4af1068Deploy DCNT721A77378792023-02-14 22:22:19106 days 20 hrs ago0x1dde6327a26e6740fdab9780fbf0d059fc85ee33 IN  0x006a667d701088243238a4af19a2543fd37b1c6a0 ETH0.00005715 0.1
0x6c408dbbea871e1794e5d59dc15b28c7f10685254875411a94c7c73e117301bbDeploy DCNT721A77321742023-02-14 21:13:26106 days 21 hrs ago0x1dde6327a26e6740fdab9780fbf0d059fc85ee33 IN  0x006a667d701088243238a4af19a2543fd37b1c6a0 ETH0.00005715 0.1
0x50c5f2539c8689baa9e73f46d9ebddcc642dbd3b9529ccd9b25439f46805054fDeploy DCNT721A77308102023-02-14 20:57:45106 days 21 hrs ago0x1dde6327a26e6740fdab9780fbf0d059fc85ee33 IN  0x006a667d701088243238a4af19a2543fd37b1c6a0 ETH0.00005715 0.1
0xf3a85585ca6c56f8dccdfde72cbe77ce75abbff4f957fb85b6f965065a96879dDeploy DCNT721A77300552023-02-14 20:49:17106 days 21 hrs ago0x1dde6327a26e6740fdab9780fbf0d059fc85ee33 IN  0x006a667d701088243238a4af19a2543fd37b1c6a0 ETH0.00005481 0.1
0xc94525d52edb2ec21b3fd743a0d4ad9206cc881d277dfbc462fb3fe04ac4c7c7Deploy DCNT721A73089822023-02-11 0:09:28110 days 18 hrs ago0x1dde6327a26e6740fdab9780fbf0d059fc85ee33 IN  0x006a667d701088243238a4af19a2543fd37b1c6a0 ETH0.00005949 0.1
0x24f56d07cd5198053ae7fae0ec065f632f93b681553398fd0d694bf47d3e41a6Deploy DCNT721A73071202023-02-10 23:24:46110 days 19 hrs ago0x1dde6327a26e6740fdab9780fbf0d059fc85ee33 IN  0x006a667d701088243238a4af19a2543fd37b1c6a0 ETH0.00005949 0.1
0x39eebb4c2866ceea7522e2b379f6e4934f155dabe2e6961152b00cf614fcddceDeploy DCNT721A73070172023-02-10 23:22:39110 days 19 hrs ago0x1dde6327a26e6740fdab9780fbf0d059fc85ee33 IN  0x006a667d701088243238a4af19a2543fd37b1c6a0 ETH0.00004817 0.1
0xf721ebf15ecd5252a5db104472d58969c256929d779e109959b56f414a4ad7a4Deploy DCNT721A73029262023-02-10 22:00:51110 days 20 hrs ago0x1dde6327a26e6740fdab9780fbf0d059fc85ee33 IN  0x006a667d701088243238a4af19a2543fd37b1c6a0 ETH0.00004816 0.1
0xbfe5861c87e4e857c39fd5357e69909a834e3b42d23348346a4227d6fbc1614bDeploy DCNT Cres...69500232023-02-07 1:52:00114 days 16 hrs ago0x1dde6327a26e6740fdab9780fbf0d059fc85ee33 IN  0x006a667d701088243238a4af19a2543fd37b1c6a0 ETH0.00005121 0.1
0x163a6f73d4abfb46aab699e021c0ea0189a881690adfd50d1456e1cc1c31f7d1Deploy DCNT721A69469072023-02-07 0:54:20114 days 17 hrs ago0x1dde6327a26e6740fdab9780fbf0d059fc85ee33 IN  0x006a667d701088243238a4af19a2543fd37b1c6a0 ETH0.00005617 0.1
0x542dfc821b859e6d83b69de8a507b0411789e7da1f38596ca4b16acb8d24cd17Deploy DCNT721A69400942023-02-06 23:05:55114 days 19 hrs ago0x1dde6327a26e6740fdab9780fbf0d059fc85ee33 IN  0x006a667d701088243238a4af19a2543fd37b1c6a0 ETH0.00005618 0.1
0x00cfb930b24d21b8c166e8273829bab851c9a04feaa1720d9a26017d4ece0267Deploy DCNT4907A57809212023-01-27 16:45:22125 days 1 hr ago0x5d7370fcd6e446bbc14a64c1effe5fbb1c893232 IN  0x006a667d701088243238a4af19a2543fd37b1c6a0 ETH0.00012399 0.1
0xb19b65a3cb25b43a5b670af5ad7807d068ddb10330d7f93baa604b92d083070bDeploy DCNT4907A57804042023-01-27 16:38:51125 days 1 hr ago0x5d7370fcd6e446bbc14a64c1effe5fbb1c893232 IN  0x006a667d701088243238a4af19a2543fd37b1c6a0 ETH0.00013096 0.1
0x00279d29a48847a59b39d3b6f25575852b898422e4f397d279c1d2d9cd075605Deploy DCNT4907A56047152023-01-26 3:02:15126 days 15 hrs ago0x5d7370fcd6e446bbc14a64c1effe5fbb1c893232 IN  0x006a667d701088243238a4af19a2543fd37b1c6a0 ETH0.00004585 0.1
0x1f3076cf5ed450ab5d369e058b90a4b73dbcde3e7b9e1415e94569e784917508Deploy DCNT721A56040102023-01-26 2:47:40126 days 15 hrs ago0x5d7370fcd6e446bbc14a64c1effe5fbb1c893232 IN  0x006a667d701088243238a4af19a2543fd37b1c6a0 ETH0.00004585 0.1
0x1ba0fc983f7a8ee1fc28c8397152e20c7b3a01261def7f6da6c6b1b7b13243b7Deploy DCNT721A56012352023-01-26 1:49:22126 days 16 hrs ago0x5d7370fcd6e446bbc14a64c1effe5fbb1c893232 IN  0x006a667d701088243238a4af19a2543fd37b1c6a0 ETH0.00004586 0.1
0x19da1c69a9f113a5fbfb9aee4a378d58eacced182bf3e7149b4e6a0439bf2f51Deploy DCNT721A55009462023-01-25 3:16:16127 days 15 hrs ago0x1dde6327a26e6740fdab9780fbf0d059fc85ee33 IN  0x006a667d701088243238a4af19a2543fd37b1c6a0 ETH0.00004816 0.1
0x8c0ec0e214ee9751865d491d838bf216a035c985d7f64d79d3d2954019e9a2f2Deploy DCNT4907A49351282023-01-19 19:17:20132 days 23 hrs ago0x1dde6327a26e6740fdab9780fbf0d059fc85ee33 IN  0x006a667d701088243238a4af19a2543fd37b1c6a0 ETH0.00004816 0.1
0xfa1d3edf47952706b07d7987a5cd59a8b9adfe6358c5af9809bd3494cde1867bDeploy DCNT4907A49348972023-01-19 19:13:55132 days 23 hrs ago0x1dde6327a26e6740fdab9780fbf0d059fc85ee33 IN  0x006a667d701088243238a4af19a2543fd37b1c6a0 ETH0.00004816 0.1
0x45ae4a92bd78f2d9824fe8efc3a6157034bae73e4bde54b720735d588a0e7d90Deploy DCNT4907A48423292023-01-19 0:59:38133 days 17 hrs ago0x1dde6327a26e6740fdab9780fbf0d059fc85ee33 IN  0x006a667d701088243238a4af19a2543fd37b1c6a0 ETH0.00004816 0.1
0xf58968f1bf86ba102e05b0a9be15c484abbc8f5f6001f0831d860075bab7ff43Deploy DCNT4907A48391832023-01-19 0:14:43133 days 18 hrs ago0x1dde6327a26e6740fdab9780fbf0d059fc85ee33 IN  0x006a667d701088243238a4af19a2543fd37b1c6a0 ETH0.000053860.1
[ Download CSV Export 
Latest 25 internal transaction
Parent Txn Hash Block From To Value
0x8df7e055f99b3ca2160d1206b8ebc3ca3dddce4ab4b2fa1dc9e4e6f8a1d48a2e78399882023-02-15 15:38:29106 days 2 hrs ago 0x006a667d701088243238a4af19a2543fd37b1c6a 0x79cc3c93e7bec01e03ee3249e1a661dd09a1cbcd0 ETH
0x8df7e055f99b3ca2160d1206b8ebc3ca3dddce4ab4b2fa1dc9e4e6f8a1d48a2e78399882023-02-15 15:38:29106 days 2 hrs ago 0x006a667d701088243238a4af19a2543fd37b1c6a0x34b81298d976c9465ccb641bb912b23f05cf497d0 ETH
0x8df7e055f99b3ca2160d1206b8ebc3ca3dddce4ab4b2fa1dc9e4e6f8a1d48a2e78399882023-02-15 15:38:29106 days 2 hrs ago 0x006a667d701088243238a4af19a2543fd37b1c6a  Contract Creation0 ETH
0x2f5e7bf37ac1b2718a94a1330a9da01db84b9b9b890f367168cc23300596d91878350852023-02-15 14:55:57106 days 3 hrs ago 0x006a667d701088243238a4af19a2543fd37b1c6a 0x79cc3c93e7bec01e03ee3249e1a661dd09a1cbcd0 ETH
0x2f5e7bf37ac1b2718a94a1330a9da01db84b9b9b890f367168cc23300596d91878350852023-02-15 14:55:57106 days 3 hrs ago 0x006a667d701088243238a4af19a2543fd37b1c6a0xba5c5bc67822c84c2df3d94856c6eb1c23bf30b70 ETH
0x2f5e7bf37ac1b2718a94a1330a9da01db84b9b9b890f367168cc23300596d91878350852023-02-15 14:55:57106 days 3 hrs ago 0x006a667d701088243238a4af19a2543fd37b1c6a  Contract Creation0 ETH
0x2ad00ee66b820e85303ff86aba41552bfde572cae6c84edcf0e1087a40d7490577419382023-02-14 23:15:59106 days 19 hrs ago 0x006a667d701088243238a4af19a2543fd37b1c6a 0x79cc3c93e7bec01e03ee3249e1a661dd09a1cbcd0 ETH
0x2ad00ee66b820e85303ff86aba41552bfde572cae6c84edcf0e1087a40d7490577419382023-02-14 23:15:59106 days 19 hrs ago 0x006a667d701088243238a4af19a2543fd37b1c6a0x89b77c06a3087fea8e70ff08a58053087968d5af0 ETH
0x2ad00ee66b820e85303ff86aba41552bfde572cae6c84edcf0e1087a40d7490577419382023-02-14 23:15:59106 days 19 hrs ago 0x006a667d701088243238a4af19a2543fd37b1c6a  Contract Creation0 ETH
0xd6e0a3b81b443cab16b634b972927c9b73cdaf460215d333438b708318fa49b077392872023-02-14 22:40:49106 days 19 hrs ago 0x006a667d701088243238a4af19a2543fd37b1c6a 0x79cc3c93e7bec01e03ee3249e1a661dd09a1cbcd0 ETH
0xd6e0a3b81b443cab16b634b972927c9b73cdaf460215d333438b708318fa49b077392872023-02-14 22:40:49106 days 19 hrs ago 0x006a667d701088243238a4af19a2543fd37b1c6a0x4f92a16a31c932fd7de60ad1e1045fc550ff81ec0 ETH
0xd6e0a3b81b443cab16b634b972927c9b73cdaf460215d333438b708318fa49b077392872023-02-14 22:40:49106 days 19 hrs ago 0x006a667d701088243238a4af19a2543fd37b1c6a  Contract Creation0 ETH
0x25e1e2f9057c9412c9dc40bdba7de9dd973c0a4a8d7b57806b3f59b8c4af106877378792023-02-14 22:22:19106 days 20 hrs ago 0x006a667d701088243238a4af19a2543fd37b1c6a 0x79cc3c93e7bec01e03ee3249e1a661dd09a1cbcd0 ETH
0x25e1e2f9057c9412c9dc40bdba7de9dd973c0a4a8d7b57806b3f59b8c4af106877378792023-02-14 22:22:19106 days 20 hrs ago 0x006a667d701088243238a4af19a2543fd37b1c6a0x501ca1257518db2f2436ce8a5a13efc870fd2ac50 ETH
0x25e1e2f9057c9412c9dc40bdba7de9dd973c0a4a8d7b57806b3f59b8c4af106877378792023-02-14 22:22:19106 days 20 hrs ago 0x006a667d701088243238a4af19a2543fd37b1c6a  Contract Creation0 ETH
0x6c408dbbea871e1794e5d59dc15b28c7f10685254875411a94c7c73e117301bb77321742023-02-14 21:13:26106 days 21 hrs ago 0x006a667d701088243238a4af19a2543fd37b1c6a 0x79cc3c93e7bec01e03ee3249e1a661dd09a1cbcd0 ETH
0x6c408dbbea871e1794e5d59dc15b28c7f10685254875411a94c7c73e117301bb77321742023-02-14 21:13:26106 days 21 hrs ago 0x006a667d701088243238a4af19a2543fd37b1c6a0x57e30e4ca405f412728dd926326b6aa6de39cc050 ETH
0x6c408dbbea871e1794e5d59dc15b28c7f10685254875411a94c7c73e117301bb77321742023-02-14 21:13:26106 days 21 hrs ago 0x006a667d701088243238a4af19a2543fd37b1c6a  Contract Creation0 ETH
0x50c5f2539c8689baa9e73f46d9ebddcc642dbd3b9529ccd9b25439f46805054f77308102023-02-14 20:57:45106 days 21 hrs ago 0x006a667d701088243238a4af19a2543fd37b1c6a 0x79cc3c93e7bec01e03ee3249e1a661dd09a1cbcd0 ETH
0x50c5f2539c8689baa9e73f46d9ebddcc642dbd3b9529ccd9b25439f46805054f77308102023-02-14 20:57:45106 days 21 hrs ago 0x006a667d701088243238a4af19a2543fd37b1c6a0x0067e8f439fb5828c84ff14308566e4fe2c490440 ETH
0x50c5f2539c8689baa9e73f46d9ebddcc642dbd3b9529ccd9b25439f46805054f77308102023-02-14 20:57:45106 days 21 hrs ago 0x006a667d701088243238a4af19a2543fd37b1c6a  Contract Creation0 ETH
0xf3a85585ca6c56f8dccdfde72cbe77ce75abbff4f957fb85b6f965065a96879d77300552023-02-14 20:49:17106 days 21 hrs ago 0x006a667d701088243238a4af19a2543fd37b1c6a 0x79cc3c93e7bec01e03ee3249e1a661dd09a1cbcd0 ETH
0xf3a85585ca6c56f8dccdfde72cbe77ce75abbff4f957fb85b6f965065a96879d77300552023-02-14 20:49:17106 days 21 hrs ago 0x006a667d701088243238a4af19a2543fd37b1c6a0x98d68d9db68ddf732549364e6b0bebba795dc8ee0 ETH
0xf3a85585ca6c56f8dccdfde72cbe77ce75abbff4f957fb85b6f965065a96879d77300552023-02-14 20:49:17106 days 21 hrs ago 0x006a667d701088243238a4af19a2543fd37b1c6a  Contract Creation0 ETH
0xc94525d52edb2ec21b3fd743a0d4ad9206cc881d277dfbc462fb3fe04ac4c7c773089822023-02-11 0:09:28110 days 18 hrs ago 0x006a667d701088243238a4af19a2543fd37b1c6a 0x79cc3c93e7bec01e03ee3249e1a661dd09a1cbcd0 ETH
[ Download CSV Export 
Loading
This contract may be a proxy contract. Click on More Options and select Is this a proxy? to confirm and enable the "Read as Proxy" & "Write as Proxy" tabs.

Similar Match Source Code
Note: This contract matches the deployed ByteCode of the Source Code for Contract 0x3a50cf8122B89dc8785770Cf8A8c07d5C0627c72

Contract Name:
DCNTSDK

Compiler Version
v0.8.17+commit.8df45f5f

Optimization Enabled:
Yes with 200 runs

Other Settings:
default evmVersion
File 1 of 9 : Ownable.sol
// 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);
    }
}

File 2 of 9 : 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));
    }
}

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

File 4 of 9 : DCNTSDK.sol
// SPDX-License-Identifier: MIT
pragma solidity ^0.8.0;

/*
 ______   _______  _______  _______  _       _________
(  __  \ (  ____ \(  ____ \(  ____ \( (    /|\__   __/
| (  \  )| (    \/| (    \/| (    \/|  \  ( |   ) (
| |   ) || (__    | |      | (__    |   \ | |   | |
| |   | ||  __)   | |      |  __)   | (\ \) |   | |
| |   ) || (      | |      | (      | | \   |   | |
| (__/  )| (____/\| (____/\| (____/\| )  \  |   | |
(______/ (_______/(_______/(_______/|/    )_)   )_(

*/

/// ============ Imports ============

import "@openzeppelin/contracts/access/Ownable.sol";
import "@openzeppelin/contracts/proxy/Clones.sol";
import "./interfaces/IDCNTRegistry.sol";
import "./storage/EditionConfig.sol";
import "./storage/MetadataConfig.sol";
import "./storage/TokenGateConfig.sol";
import "./storage/CrescendoConfig.sol";

contract DCNTSDK is Ownable {
  /// ============ Storage ===========
  /// @notice implementation addresses for base contracts
  address public DCNT721AImplementation;
  address public DCNT4907AImplementation;
  address public DCNTCrescendoImplementation;
  address public DCNTVaultImplementation;
  address public DCNTStakingImplementation;
  address public ZKEditionImplementation;

  /// @notice address of the metadata renderer
  address public metadataRenderer;

  /// @notice address of the associated registry
  address public contractRegistry;

  /// @notice addresses for splits contract
  address public SplitMain;

  /// ============ Events ============

  /// @notice Emitted after successfully deploying a contract
  event DeployDCNT721A(address DCNT721A);
  event DeployDCNT4907A(address DCNT4907A);
  event DeployDCNTCrescendo(address DCNTCrescendo);
  event DeployDCNTVault(address DCNTVault);
  event DeployDCNTStaking(address DCNTStaking);
  event DeployZKEdition(address ZKEdition);

  /// ============ Constructor ============

  /// @notice Creates a new DecentSDK instance
  constructor(
    address _DCNT721AImplementation,
    address _DCNT4907AImplementation,
    address _DCNTCrescendoImplementation,
    address _DCNTVaultImplementation,
    address _DCNTStakingImplementation,
    address _metadataRenderer,
    address _contractRegistry,
    address _SplitMain,
    address _ZKEditionImplementation
  ) {
    DCNT721AImplementation = _DCNT721AImplementation;
    DCNT4907AImplementation = _DCNT4907AImplementation;
    DCNTCrescendoImplementation = _DCNTCrescendoImplementation;
    DCNTVaultImplementation = _DCNTVaultImplementation;
    DCNTStakingImplementation = _DCNTStakingImplementation;
    metadataRenderer = _metadataRenderer;
    contractRegistry = _contractRegistry;
    SplitMain = _SplitMain;
    ZKEditionImplementation = _ZKEditionImplementation;
  }

  /// ============ Functions ============

  /// @notice deploy and initialize an erc721a clone
  function deployDCNT721A(
    EditionConfig memory _editionConfig,
    MetadataConfig memory _metadataConfig,
    TokenGateConfig memory _tokenGateConfig
  ) external returns (address clone) {
    clone = Clones.clone(DCNT721AImplementation);
    (bool success, ) = clone.call(
      abi.encodeWithSignature(
        "initialize("
          "address,"
          "(string,string,bool,uint256,uint256,uint256,bytes32,uint256,uint256,uint256,uint256,uint256),"
          "(string,string,bytes,address),"
          "(address,uint88,uint8),"
          "address,"
          "address"
        ")",
        msg.sender,
        _editionConfig,
        _metadataConfig,
        _tokenGateConfig,
        metadataRenderer,
        SplitMain
      )
    );
    require(success);
    IDCNTRegistry(contractRegistry).register(msg.sender, clone, "DCNT721A");
    emit DeployDCNT721A(clone);
  }

  /// @notice deploy and initialize a ZKEdition clone
  function deployZKEdition(
    EditionConfig memory _editionConfig,
    MetadataConfig memory _metadataConfig,
    TokenGateConfig memory _tokenGateConfig,
    address zkVerifier
  ) external returns (address clone) {
    clone = Clones.clone(ZKEditionImplementation); //zkedition implementation
    (bool success, ) = clone.call(
      abi.encodeWithSignature(
        "initialize("
          "address,"
          "(string,string,bool,uint256,uint256,uint256,bytes32,uint256,uint256,uint256,uint256,uint256),"
          "(string,string,bytes,address),"
          "(address,uint88,uint8),"
          "address,"
          "address,"
          "address"
        ")",
        msg.sender,
        _editionConfig,
        _metadataConfig,
        _tokenGateConfig,
        metadataRenderer,
        SplitMain,
        zkVerifier
      )
    );
    require(success);
    IDCNTRegistry(contractRegistry).register(msg.sender, clone, "ZKEdition");
    emit DeployZKEdition(clone);
  }

  /// @notice deploy and initialize an erc4907a clone
  function deployDCNT4907A(
    EditionConfig memory _editionConfig,
    MetadataConfig memory _metadataConfig,
    TokenGateConfig memory _tokenGateConfig
  ) external returns (address clone) {
    clone = Clones.clone(DCNT4907AImplementation);
    (bool success, ) = clone.call(
      abi.encodeWithSignature(
        "initialize("
          "address,"
          "(string,string,bool,uint256,uint256,uint256,bytes32,uint256,uint256,uint256,uint256,uint256),"
          "(string,string,bytes,address),"
          "(address,uint88,uint8),"
          "address,"
          "address"
        ")",
        msg.sender,
        _editionConfig,
        _metadataConfig,
        _tokenGateConfig,
        metadataRenderer,
        SplitMain
      )
    );
    require(success);
    IDCNTRegistry(contractRegistry).register(msg.sender, clone, "DCNT4907A");
    emit DeployDCNT4907A(clone);
  }

  // deploy and initialize a Crescendo clone
  function deployDCNTCrescendo(
    CrescendoConfig memory _config,
    MetadataConfig memory _metadataConfig
  ) external returns (address clone) {
    clone = Clones.clone(DCNTCrescendoImplementation);
    (bool success, ) = clone.call(
      abi.encodeWithSignature(
        "initialize("
          "address,"
          "(string,string,uint256,uint256,uint256,uint256,uint256,uint256,uint256,uint256),"
          "(string,string,bytes,address),"
          "address,"
          "address"
        ")",
        msg.sender,
        _config,
        _metadataConfig,
        metadataRenderer,
        SplitMain
      )
    );
    require(success);
    IDCNTRegistry(contractRegistry).register(
      msg.sender,
      clone,
      "DCNTCrescendo"
    );
    emit DeployDCNTCrescendo(clone);
  }

  // deploy and initialize a vault wrapper clone
  function deployDCNTVault(
    address _vaultDistributionTokenAddress,
    address _nftVaultKeyAddress,
    uint256 _nftTotalSupply,
    uint256 _unlockDate
  ) external returns (address clone) {
    clone = Clones.clone(DCNTVaultImplementation);
    (bool success, ) = clone.call(
      abi.encodeWithSignature(
        "initialize(address,address,address,uint256,uint256)",
        msg.sender,
        _vaultDistributionTokenAddress,
        _nftVaultKeyAddress,
        _nftTotalSupply,
        _unlockDate
      )
    );
    require(success);
    IDCNTRegistry(contractRegistry).register(msg.sender, clone, "DCNTVault");
    emit DeployDCNTVault(clone);
  }

  // deploy and initialize a vault wrapper clone
  function deployDCNTStaking(
    address _nft,
    address _token,
    uint256 _vaultDuration,
    uint256 _totalSupply
  ) external returns (address clone) {
    clone = Clones.clone(DCNTStakingImplementation);
    (bool success, ) = clone.call(
      abi.encodeWithSignature(
        "initialize(address,address,address,uint256,uint256)",
        msg.sender,
        _nft,
        _token,
        _vaultDuration,
        _totalSupply
      )
    );
    require(success);
    IDCNTRegistry(contractRegistry).register(msg.sender, clone, "DCNTStaking");
    emit DeployDCNTStaking(clone);
  }
}

File 5 of 9 : IDCNTRegistry.sol
// SPDX-License-Identifier: MIT
pragma solidity ^0.8.0;

interface IDCNTRegistry {
  function register(
    address _deployer,
    address _deployment,
    string calldata _key
  ) external;

  function remove(address _deployer, address _deployment) external;

  function query(address _deployer) external returns (address[] memory);
}

File 6 of 9 : CrescendoConfig.sol
// SPDX-License-Identifier: MIT
pragma solidity ^0.8.0;

struct CrescendoConfig {
  string name;
  string symbol;
  uint256 initialPrice;
  uint256 step1;
  uint256 step2;
  uint256 hitch;
  uint256 takeRateBPS;
  uint256 unlockDate;
  uint256 saleStart;
  uint256 royaltyBPS;
}

File 7 of 9 : EditionConfig.sol
// SPDX-License-Identifier: MIT
pragma solidity ^0.8.0;

struct EditionConfig {
  string name;
  string symbol;
  bool hasAdjustableCap;
  uint256 maxTokens;
  uint256 tokenPrice;
  uint256 maxTokenPurchase;
  bytes32 presaleMerkleRoot;
  uint256 presaleStart;
  uint256 presaleEnd;
  uint256 saleStart;
  uint256 saleEnd;
  uint256 royaltyBPS;
}

File 8 of 9 : MetadataConfig.sol
// SPDX-License-Identifier: MIT
pragma solidity ^0.8.0;

struct MetadataConfig {
  string contractURI;
  string metadataURI;
  bytes metadataRendererInit;
  address parentIP;
}

File 9 of 9 : TokenGateConfig.sol
// SPDX-License-Identifier: MIT
pragma solidity ^0.8.0;

enum SaleType {
  ALL,
  PRESALE,
  PRIMARY
}

struct TokenGateConfig {
  address tokenAddress; 
  uint88 minBalance;
  SaleType saleType;
}

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

Contract ABI

[{"inputs":[{"internalType":"address","name":"_DCNT721AImplementation","type":"address"},{"internalType":"address","name":"_DCNT4907AImplementation","type":"address"},{"internalType":"address","name":"_DCNTCrescendoImplementation","type":"address"},{"internalType":"address","name":"_DCNTVaultImplementation","type":"address"},{"internalType":"address","name":"_DCNTStakingImplementation","type":"address"},{"internalType":"address","name":"_metadataRenderer","type":"address"},{"internalType":"address","name":"_contractRegistry","type":"address"},{"internalType":"address","name":"_SplitMain","type":"address"},{"internalType":"address","name":"_ZKEditionImplementation","type":"address"}],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"DCNT4907A","type":"address"}],"name":"DeployDCNT4907A","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"DCNT721A","type":"address"}],"name":"DeployDCNT721A","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"DCNTCrescendo","type":"address"}],"name":"DeployDCNTCrescendo","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"DCNTStaking","type":"address"}],"name":"DeployDCNTStaking","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"DCNTVault","type":"address"}],"name":"DeployDCNTVault","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"ZKEdition","type":"address"}],"name":"DeployZKEdition","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":"DCNT4907AImplementation","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"DCNT721AImplementation","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"DCNTCrescendoImplementation","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"DCNTStakingImplementation","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"DCNTVaultImplementation","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"SplitMain","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"ZKEditionImplementation","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"contractRegistry","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"components":[{"internalType":"string","name":"name","type":"string"},{"internalType":"string","name":"symbol","type":"string"},{"internalType":"bool","name":"hasAdjustableCap","type":"bool"},{"internalType":"uint256","name":"maxTokens","type":"uint256"},{"internalType":"uint256","name":"tokenPrice","type":"uint256"},{"internalType":"uint256","name":"maxTokenPurchase","type":"uint256"},{"internalType":"bytes32","name":"presaleMerkleRoot","type":"bytes32"},{"internalType":"uint256","name":"presaleStart","type":"uint256"},{"internalType":"uint256","name":"presaleEnd","type":"uint256"},{"internalType":"uint256","name":"saleStart","type":"uint256"},{"internalType":"uint256","name":"saleEnd","type":"uint256"},{"internalType":"uint256","name":"royaltyBPS","type":"uint256"}],"internalType":"struct EditionConfig","name":"_editionConfig","type":"tuple"},{"components":[{"internalType":"string","name":"contractURI","type":"string"},{"internalType":"string","name":"metadataURI","type":"string"},{"internalType":"bytes","name":"metadataRendererInit","type":"bytes"},{"internalType":"address","name":"parentIP","type":"address"}],"internalType":"struct MetadataConfig","name":"_metadataConfig","type":"tuple"},{"components":[{"internalType":"address","name":"tokenAddress","type":"address"},{"internalType":"uint88","name":"minBalance","type":"uint88"},{"internalType":"enum SaleType","name":"saleType","type":"uint8"}],"internalType":"struct TokenGateConfig","name":"_tokenGateConfig","type":"tuple"}],"name":"deployDCNT4907A","outputs":[{"internalType":"address","name":"clone","type":"address"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"components":[{"internalType":"string","name":"name","type":"string"},{"internalType":"string","name":"symbol","type":"string"},{"internalType":"bool","name":"hasAdjustableCap","type":"bool"},{"internalType":"uint256","name":"maxTokens","type":"uint256"},{"internalType":"uint256","name":"tokenPrice","type":"uint256"},{"internalType":"uint256","name":"maxTokenPurchase","type":"uint256"},{"internalType":"bytes32","name":"presaleMerkleRoot","type":"bytes32"},{"internalType":"uint256","name":"presaleStart","type":"uint256"},{"internalType":"uint256","name":"presaleEnd","type":"uint256"},{"internalType":"uint256","name":"saleStart","type":"uint256"},{"internalType":"uint256","name":"saleEnd","type":"uint256"},{"internalType":"uint256","name":"royaltyBPS","type":"uint256"}],"internalType":"struct EditionConfig","name":"_editionConfig","type":"tuple"},{"components":[{"internalType":"string","name":"contractURI","type":"string"},{"internalType":"string","name":"metadataURI","type":"string"},{"internalType":"bytes","name":"metadataRendererInit","type":"bytes"},{"internalType":"address","name":"parentIP","type":"address"}],"internalType":"struct MetadataConfig","name":"_metadataConfig","type":"tuple"},{"components":[{"internalType":"address","name":"tokenAddress","type":"address"},{"internalType":"uint88","name":"minBalance","type":"uint88"},{"internalType":"enum SaleType","name":"saleType","type":"uint8"}],"internalType":"struct TokenGateConfig","name":"_tokenGateConfig","type":"tuple"}],"name":"deployDCNT721A","outputs":[{"internalType":"address","name":"clone","type":"address"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"components":[{"internalType":"string","name":"name","type":"string"},{"internalType":"string","name":"symbol","type":"string"},{"internalType":"uint256","name":"initialPrice","type":"uint256"},{"internalType":"uint256","name":"step1","type":"uint256"},{"internalType":"uint256","name":"step2","type":"uint256"},{"internalType":"uint256","name":"hitch","type":"uint256"},{"internalType":"uint256","name":"takeRateBPS","type":"uint256"},{"internalType":"uint256","name":"unlockDate","type":"uint256"},{"internalType":"uint256","name":"saleStart","type":"uint256"},{"internalType":"uint256","name":"royaltyBPS","type":"uint256"}],"internalType":"struct CrescendoConfig","name":"_config","type":"tuple"},{"components":[{"internalType":"string","name":"contractURI","type":"string"},{"internalType":"string","name":"metadataURI","type":"string"},{"internalType":"bytes","name":"metadataRendererInit","type":"bytes"},{"internalType":"address","name":"parentIP","type":"address"}],"internalType":"struct MetadataConfig","name":"_metadataConfig","type":"tuple"}],"name":"deployDCNTCrescendo","outputs":[{"internalType":"address","name":"clone","type":"address"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_nft","type":"address"},{"internalType":"address","name":"_token","type":"address"},{"internalType":"uint256","name":"_vaultDuration","type":"uint256"},{"internalType":"uint256","name":"_totalSupply","type":"uint256"}],"name":"deployDCNTStaking","outputs":[{"internalType":"address","name":"clone","type":"address"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_vaultDistributionTokenAddress","type":"address"},{"internalType":"address","name":"_nftVaultKeyAddress","type":"address"},{"internalType":"uint256","name":"_nftTotalSupply","type":"uint256"},{"internalType":"uint256","name":"_unlockDate","type":"uint256"}],"name":"deployDCNTVault","outputs":[{"internalType":"address","name":"clone","type":"address"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"components":[{"internalType":"string","name":"name","type":"string"},{"internalType":"string","name":"symbol","type":"string"},{"internalType":"bool","name":"hasAdjustableCap","type":"bool"},{"internalType":"uint256","name":"maxTokens","type":"uint256"},{"internalType":"uint256","name":"tokenPrice","type":"uint256"},{"internalType":"uint256","name":"maxTokenPurchase","type":"uint256"},{"internalType":"bytes32","name":"presaleMerkleRoot","type":"bytes32"},{"internalType":"uint256","name":"presaleStart","type":"uint256"},{"internalType":"uint256","name":"presaleEnd","type":"uint256"},{"internalType":"uint256","name":"saleStart","type":"uint256"},{"internalType":"uint256","name":"saleEnd","type":"uint256"},{"internalType":"uint256","name":"royaltyBPS","type":"uint256"}],"internalType":"struct EditionConfig","name":"_editionConfig","type":"tuple"},{"components":[{"internalType":"string","name":"contractURI","type":"string"},{"internalType":"string","name":"metadataURI","type":"string"},{"internalType":"bytes","name":"metadataRendererInit","type":"bytes"},{"internalType":"address","name":"parentIP","type":"address"}],"internalType":"struct MetadataConfig","name":"_metadataConfig","type":"tuple"},{"components":[{"internalType":"address","name":"tokenAddress","type":"address"},{"internalType":"uint88","name":"minBalance","type":"uint88"},{"internalType":"enum SaleType","name":"saleType","type":"uint8"}],"internalType":"struct TokenGateConfig","name":"_tokenGateConfig","type":"tuple"},{"internalType":"address","name":"zkVerifier","type":"address"}],"name":"deployZKEdition","outputs":[{"internalType":"address","name":"clone","type":"address"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"metadataRenderer","outputs":[{"internalType":"address","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":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"}]

60806040523480156200001157600080fd5b50604051620019a9380380620019a983398101604081905262000034916200014d565b6200003f33620000e0565b600180546001600160a01b03199081166001600160a01b039b8c1617909155600280548216998b1699909917909855600380548916978a1697909717909655600480548816958916959095179094556005805487169388169390931790925560078054861691871691909117905560088054851691861691909117905560098054841691851691909117905560068054909216921691909117905562000208565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b80516001600160a01b03811681146200014857600080fd5b919050565b60008060008060008060008060006101208a8c0312156200016d57600080fd5b620001788a62000130565b98506200018860208b0162000130565b97506200019860408b0162000130565b9650620001a860608b0162000130565b9550620001b860808b0162000130565b9450620001c860a08b0162000130565b9350620001d860c08b0162000130565b9250620001e860e08b0162000130565b9150620001f96101008b0162000130565b90509295985092959850929598565b61179180620002186000396000f3fe608060405234801561001057600080fd5b50600436106101165760003560e01c80639f61dfec116100a2578063ca825bb511610071578063ca825bb514610223578063d0ae315a14610236578063e295877c14610249578063eef702e91461025c578063f2fde38b1461026f57600080fd5b80639f61dfec146101d7578063abf410e5146101ea578063b4675ed6146101fd578063bc10a4fa1461021057600080fd5b806370319970116100e95780637031997014610183578063715018a61461019657806373d622f8146101a057806380fab9ee146101b35780638da5cb5b146101c657600080fd5b806310a089131461011b578063389058981461014a5780633c3b370b1461015d5780634285656b14610170575b600080fd5b60015461012e906001600160a01b031681565b6040516001600160a01b03909116815260200160405180910390f35b61012e610158366004610fe8565b610282565b60055461012e906001600160a01b031681565b60025461012e906001600160a01b031681565b60075461012e906001600160a01b031681565b61019e61041d565b005b61012e6101ae3660046110f5565b610431565b61012e6101c13660046112b2565b6105d5565b6000546001600160a01b031661012e565b60045461012e906001600160a01b031681565b60085461012e906001600160a01b031681565b61012e61020b3660046112b2565b610773565b61012e61021e3660046110f5565b610905565b60035461012e906001600160a01b031681565b60065461012e906001600160a01b031681565b61012e610257366004611327565b610a9e565b60095461012e906001600160a01b031681565b61019e61027d3660046113ad565b610c32565b60035460009061029a906001600160a01b0316610cb0565b6007546009546040519293506000926001600160a01b03808616936102cc9333938a938a93811692169060240161147f565b60408051601f198184030181529181526020820180516001600160e01b0316624ee2bb60e71b17905251610300919061156c565b6000604051808303816000865af19150503d806000811461033d576040519150601f19603f3d011682016040523d82523d6000602084013e610342565b606091505b505090508061035057600080fd5b60085460405163ede4973960e01b81523360048201526001600160a01b03848116602483015260606044830152600d60648301526c44434e544372657363656e646f60981b60848301529091169063ede497399060a401600060405180830381600087803b1580156103c157600080fd5b505af11580156103d5573d6000803e3d6000fd5b50506040516001600160a01b03851681527f2c14c8ffafc8bfdf42e6469d6c292eeaebf445beafb817fb0bc9df3ebd89f0069250602001905060405180910390a15092915050565b610425610d4a565b61042f6000610da4565b565b600454600090610449906001600160a01b0316610cb0565b6040513360248201526001600160a01b03878116604483015286811660648301526084820186905260a4820185905291925060009183169060c40160408051601f198184030181529181526020820180516001600160e01b03166314d6c7d760e31b179052516104b9919061156c565b6000604051808303816000865af19150503d80600081146104f6576040519150601f19603f3d011682016040523d82523d6000602084013e6104fb565b606091505b505090508061050957600080fd5b60085460405163ede4973960e01b81523360048201526001600160a01b0384811660248301526060604483015260096064830152681110d39515985d5b1d60ba1b60848301529091169063ede497399060a401600060405180830381600087803b15801561057657600080fd5b505af115801561058a573d6000803e3d6000fd5b50506040516001600160a01b03851681527ff12b488daa6140ffee78fe266c37addbbaea912b09ce36e613a17844dac4255b925060200190505b60405180910390a150949350505050565b6001546000906105ed906001600160a01b0316610cb0565b6007546009546040519293506000926001600160a01b03808616936106239333938b938b938b9390821692911690602401611687565b60408051601f198184030181529181526020820180516001600160e01b03166364f7af7760e11b17905251610658919061156c565b6000604051808303816000865af19150503d8060008114610695576040519150601f19603f3d011682016040523d82523d6000602084013e61069a565b606091505b50509050806106a857600080fd5b6008805460405163ede4973960e01b81523360048201526001600160a01b0385811660248301526060604483015260648201939093526744434e543732314160c01b608482015291169063ede497399060a401600060405180830381600087803b15801561071557600080fd5b505af1158015610729573d6000803e3d6000fd5b50506040516001600160a01b03851681527f149ce80ffd882db4157fb46dd05201336d87f52ace89212615557e5455b8a0df925060200190505b60405180910390a1509392505050565b60025460009061078b906001600160a01b0316610cb0565b6007546009546040519293506000926001600160a01b03808616936107c19333938b938b938b9390821692911690602401611687565b60408051601f198184030181529181526020820180516001600160e01b03166364f7af7760e11b179052516107f6919061156c565b6000604051808303816000865af19150503d8060008114610833576040519150601f19603f3d011682016040523d82523d6000602084013e610838565b606091505b505090508061084657600080fd5b60085460405163ede4973960e01b81523360048201526001600160a01b03848116602483015260606044830152600960648301526844434e54343930374160b81b60848301529091169063ede497399060a401600060405180830381600087803b1580156108b357600080fd5b505af11580156108c7573d6000803e3d6000fd5b50506040516001600160a01b03851681527f3758a9cde202b40b236c1867c2734461fd598d835ad020bda26ca4f85838f2c492506020019050610763565b60055460009061091d906001600160a01b0316610cb0565b6040513360248201526001600160a01b03878116604483015286811660648301526084820186905260a4820185905291925060009183169060c40160408051601f198184030181529181526020820180516001600160e01b03166314d6c7d760e31b1790525161098d919061156c565b6000604051808303816000865af19150503d80600081146109ca576040519150601f19603f3d011682016040523d82523d6000602084013e6109cf565b606091505b50509050806109dd57600080fd5b60085460405163ede4973960e01b81523360048201526001600160a01b03848116602483015260606044830152600b60648301526a44434e545374616b696e6760a81b60848301529091169063ede497399060a401600060405180830381600087803b158015610a4c57600080fd5b505af1158015610a60573d6000803e3d6000fd5b50506040516001600160a01b03851681527fe9eeb18af71a650338802cfcb86b39b211ed34fd8a37cacc5a16514a183e8d66925060200190506105c4565b600654600090610ab6906001600160a01b0316610cb0565b6007546009546040519293506000926001600160a01b0380861693610aee9333938c938c938c93908216929116908b906024016116ed565b60408051601f198184030181529181526020820180516001600160e01b0316637385777f60e11b17905251610b23919061156c565b6000604051808303816000865af19150503d8060008114610b60576040519150601f19603f3d011682016040523d82523d6000602084013e610b65565b606091505b5050905080610b7357600080fd5b60085460405163ede4973960e01b81523360048201526001600160a01b0384811660248301526060604483015260096064830152682d25a2b234ba34b7b760b91b60848301529091169063ede497399060a401600060405180830381600087803b158015610be057600080fd5b505af1158015610bf4573d6000803e3d6000fd5b50506040516001600160a01b03851681527f49451ac6869c0fa590f484823265bd786e5c483c78431c2fc0cc2f7f939678e4925060200190506105c4565b610c3a610d4a565b6001600160a01b038116610ca45760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b60648201526084015b60405180910390fd5b610cad81610da4565b50565b6000763d602d80600a3d3981f3363d3d373d3d3d363d730000008260601b60e81c176000526e5af43d82803e903d91602b57fd5bf38260781b17602052603760096000f090506001600160a01b038116610d455760405162461bcd60e51b8152602060048201526016602482015275115490cc4c4d8dce8818dc99585d194819985a5b195960521b6044820152606401610c9b565b919050565b6000546001600160a01b0316331461042f5760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610c9b565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b634e487b7160e01b600052604160045260246000fd5b6040516080810167ffffffffffffffff81118282101715610e2d57610e2d610df4565b60405290565b604051610140810167ffffffffffffffff81118282101715610e2d57610e2d610df4565b604051610180810167ffffffffffffffff81118282101715610e2d57610e2d610df4565b600067ffffffffffffffff80841115610e9657610e96610df4565b604051601f8501601f19908116603f01168101908282118183101715610ebe57610ebe610df4565b81604052809350858152868686011115610ed757600080fd5b858560208301376000602087830101525050509392505050565b600082601f830112610f0257600080fd5b610f1183833560208501610e7b565b9392505050565b80356001600160a01b0381168114610d4557600080fd5b600060808284031215610f4157600080fd5b610f49610e0a565b9050813567ffffffffffffffff80821115610f6357600080fd5b610f6f85838601610ef1565b83526020840135915080821115610f8557600080fd5b610f9185838601610ef1565b60208401526040840135915080821115610faa57600080fd5b508201601f81018413610fbc57600080fd5b610fcb84823560208401610e7b565b604083015250610fdd60608301610f18565b606082015292915050565b60008060408385031215610ffb57600080fd5b823567ffffffffffffffff8082111561101357600080fd5b90840190610140828703121561102857600080fd5b611030610e33565b82358281111561103f57600080fd5b61104b88828601610ef1565b82525060208301358281111561106057600080fd5b61106c88828601610ef1565b60208301525060408301356040820152606083013560608201526080830135608082015260a083013560a082015260c083013560c082015260e083013560e08201526101008084013581830152506101208084013581830152508094505060208501359150808211156110de57600080fd5b506110eb85828601610f2f565b9150509250929050565b6000806000806080858703121561110b57600080fd5b61111485610f18565b935061112260208601610f18565b93969395505050506040820135916060013590565b80358015158114610d4557600080fd5b6000610180828403121561115a57600080fd5b611162610e57565b9050813567ffffffffffffffff8082111561117c57600080fd5b61118885838601610ef1565b8352602084013591508082111561119e57600080fd5b506111ab84828501610ef1565b6020830152506111bd60408301611137565b6040820152606082013560608201526080820135608082015260a082013560a082015260c082013560c082015260e082013560e082015261010080830135818301525061012080830135818301525061014080830135818301525061016080830135818301525092915050565b60006060828403121561123c57600080fd5b6040516060810181811067ffffffffffffffff8211171561125f5761125f610df4565b60405290508061126e83610f18565b815260208301356affffffffffffffffffffff8116811461128e57600080fd5b60208201526040830135600381106112a557600080fd5b6040919091015292915050565b600080600060a084860312156112c757600080fd5b833567ffffffffffffffff808211156112df57600080fd5b6112eb87838801611147565b9450602086013591508082111561130157600080fd5b5061130e86828701610f2f565b92505061131e856040860161122a565b90509250925092565b60008060008060c0858703121561133d57600080fd5b843567ffffffffffffffff8082111561135557600080fd5b61136188838901611147565b9550602087013591508082111561137757600080fd5b5061138487828801610f2f565b935050611394866040870161122a565b91506113a260a08601610f18565b905092959194509250565b6000602082840312156113bf57600080fd5b610f1182610f18565b60005b838110156113e35781810151838201526020016113cb565b50506000910152565b600081518084526114048160208601602086016113c8565b601f01601f19169290920160200192915050565b600081516080845261142d60808501826113ec565b90506020830151848203602086015261144682826113ec565b9150506040830151848203604086015261146082826113ec565b6060948501516001600160a01b03169590940194909452509092915050565b60018060a01b038616815260a06020820152600085516101408060a08501526114ac6101e08501836113ec565b91506020880151609f198584030160c08601526114c983826113ec565b925050604088015160e08501526060880151610100818187015260808a01519150610120828188015260a08b01518488015260c08b015161016088015260e08b0151610180880152818b01516101a0880152808b01516101c088015250505050828103604084015261153b8187611418565b91505061155360608301856001600160a01b03169052565b6001600160a01b03831660808301529695505050505050565b6000825161157e8184602087016113c8565b9190910192915050565b6000610180825181855261159e828601826113ec565b915050602083015184820360208601526115b882826113ec565b91505060408301516115ce604086018215159052565b50606083810151908501526080808401519085015260a0808401519085015260c0808401519085015260e080840151908501526101008084015190850152610120808401519085015261014080840151908501526101609283015192909301919091525090565b80516001600160a01b031682526020808201516affffffffffffffffffffff169083015260408101516003811061167c57634e487b7160e01b600052602160045260246000fd5b806040840152505050565b6001600160a01b038781168252610100602083018190526000916116ad8483018a611588565b915083820360408501526116c18289611418565b92506116d06060850188611635565b80861660c085015280851660e08501525050979650505050505050565b6001600160a01b038881168252610120602083018190526000916117138483018b611588565b91508382036040850152611727828a611418565b92506117366060850189611635565b95861660c08401525092841660e082015292166101009092019190915294935050505056fea2646970667358221220b1a762e510db2551afcc2f6cf716511c8279bb06300ebcfe5a154c239dbf206264736f6c634300081100330000000000000000000000007f6c3d5c5524b6b48607ef617f3c311ffd6d0588000000000000000000000000ba489b949294b3be8f0413ff2a734a823845a2dc0000000000000000000000002983589c067b36078ab65a603d9ce4bfba5e115c00000000000000000000000036c3a2b8550558fe7eb86541dafed469cacd2ff9000000000000000000000000d0fb925f5ff15fcad74e7f0fa9242fd2ec8d190a00000000000000000000000049799190ad4ef8299e0d078eef07bdb4309f718600000000000000000000000079cc3c93e7bec01e03ee3249e1a661dd09a1cbcd0000000000000000000000002ed6c4b5da6378c7897ac67ba9e43102feb694ee000000000000000000000000537af717cd649ae3307fcfd9c078e817df8b646c

Block Transaction Gas Used Reward
Age Block Fee Address BC Fee Address Voting Power Jailed Incoming
Block Uncle Number Difficulty Gas Used Reward
Loading