Contract

0xc6857b8fb0e56e197F3606725Caba9624D5e3Aae

Overview

SOPH Balance

Sophon LogoSophon LogoSophon Logo0 SOPH

SOPH Value

-

Multichain Info

No addresses found
Transaction Hash
Method
Block
From
To

There are no matching entries

1 Internal Transaction found.

Latest 1 internal transaction

Parent Transaction Hash Block From To
76417642025-04-03 14:39:598 days ago1743691199  Contract Creation0 SOPH
Loading...
Loading

Contract Source Code Verified (Exact Match)

Contract Name:
TokenMakerHelper

Compiler Version
v0.8.24+commit.e11b9ed9

ZkSolc Version
v1.5.11

Optimization Enabled:
Yes with Mode 3

Other Settings:
paris EvmVersion
File 1 of 2 : TokenMakerHelper.sol
// SPDX-License-Identifier: BUSL-1.1
pragma solidity ^0.8.23;

import {ITokenMaker} from "contracts/interfaces/ITokenMaker.sol";

contract TokenMakerHelper {
    bytes32 constant MAKE_ERC20_BYTECODE_HASH =
        0x0100018fe6f8527f967fe1b54a9ae0dcb5aac13dcebfeced7b67a2b41c303aaf; //zkout -> MakeErc20.json -> .hash
    bytes32 constant ZKSYNC_CREATE2_PREFIX =
        0x2020dba91b30cc0006188af794c2fb30dd8520db7e2c088b7fc7c103c00ca494; // or keccak256("zksyncCreate2")

    int24 internal constant MIN_TICK = -887272;
    int24 internal constant MAX_TICK = -MIN_TICK;
    uint160 internal constant MIN_SQRT_RATIO = 4295128739;
    uint160 internal constant MAX_SQRT_RATIO = 1461446703485210103287273052203988822378723970342;

    address public tokenMaker;

    constructor(address _tokenMaker) {
        tokenMaker = _tokenMaker;
    }

    function helpMakeToken(
        bytes32 salt,
        uint256 virtualNewTokenAmount,
        uint256 virtualCounterAssetAmount
    ) public view returns (address newToken, int24 startingTick, uint160 roundedPrice) {
        newToken = predictTokenAddress(salt);

        uint256 reserve1;
        uint256 reserve0;

        if (ITokenMaker(tokenMaker).counterAsset() < newToken) {
            reserve1 = virtualNewTokenAmount;
            reserve0 = virtualCounterAssetAmount;
        } else {
            reserve1 = virtualCounterAssetAmount;
            reserve0 = virtualNewTokenAmount;
        }

        uint160 sqrtPriceX96 = encodePriceSqrt(reserve1, reserve0);
        int24 rawTick = getTickAtSqrtRatio(sqrtPriceX96);
        startingTick = rawTick / 2000 * 2000; //round down to nearest CL2000 tick

        if (rawTick >= 0) {
            if (rawTick % 2000 >= 1000) {
                startingTick += 2000; // round up if more than halfway between ticks
            }
        } else {
            if (rawTick % 2000 < -1000) {
                startingTick -= 2000; // round down if more than halfway between ticks
            }
        }

        roundedPrice = getSqrtRatioAtTick(startingTick);
    }

    function predictTokenAddress(bytes32 salt) public view returns (address) {
        bytes32 senderBytes = bytes32(uint256(uint160(tokenMaker)));
        // Use zkSync's precomputed CREATE2_PREFIX
        bytes32 data = keccak256(
            bytes.concat(
                ZKSYNC_CREATE2_PREFIX, // Correct prefix
                senderBytes,
                salt,
                MAKE_ERC20_BYTECODE_HASH,
                keccak256(abi.encode()) // Constructor args hash
            )
        );
        return address(uint160(uint256(data)));
    }

    function sqrt(uint256 y) internal pure returns (uint256 z) {
        if (y > 3) {
            z = y;
            uint256 x = y / 2 + 1;
            while (x < z) {
                z = x;
                x = (y / x + x) / 2;
            }
        } else if (y != 0) {
            z = 1;
        }
    }

    function encodePriceSqrt(uint256 reserve1, uint256 reserve0) public pure returns (uint160) {
        reserve1 = reserve1 * 2 ** 192;
        uint256 division = reserve1 / reserve0;
        uint256 sqrtX96 = sqrt(division);

        return uint160(sqrtX96); // DOES NOT REVERT ON OVERFLOW, PLEASE ensure reserve1 and reserve0 are reduced to minimums
    }

    function getTickAtSqrtRatio(uint160 sqrtPriceX96) internal pure returns (int24 tick) {
        // second inequality must be < because the price can never reach the price at the max tick
        require(sqrtPriceX96 >= MIN_SQRT_RATIO && sqrtPriceX96 < MAX_SQRT_RATIO, "R");
        uint256 ratio = uint256(sqrtPriceX96) << 32;

        uint256 r = ratio;
        uint256 msb = 0;

        assembly {
            let f := shl(7, gt(r, 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF))
            msb := or(msb, f)
            r := shr(f, r)
        }
        assembly {
            let f := shl(6, gt(r, 0xFFFFFFFFFFFFFFFF))
            msb := or(msb, f)
            r := shr(f, r)
        }
        assembly {
            let f := shl(5, gt(r, 0xFFFFFFFF))
            msb := or(msb, f)
            r := shr(f, r)
        }
        assembly {
            let f := shl(4, gt(r, 0xFFFF))
            msb := or(msb, f)
            r := shr(f, r)
        }
        assembly {
            let f := shl(3, gt(r, 0xFF))
            msb := or(msb, f)
            r := shr(f, r)
        }
        assembly {
            let f := shl(2, gt(r, 0xF))
            msb := or(msb, f)
            r := shr(f, r)
        }
        assembly {
            let f := shl(1, gt(r, 0x3))
            msb := or(msb, f)
            r := shr(f, r)
        }
        assembly {
            let f := gt(r, 0x1)
            msb := or(msb, f)
        }

        if (msb >= 128) r = ratio >> (msb - 127);
        else r = ratio << (127 - msb);

        int256 log_2 = (int256(msb) - 128) << 64;

        assembly {
            r := shr(127, mul(r, r))
            let f := shr(128, r)
            log_2 := or(log_2, shl(63, f))
            r := shr(f, r)
        }
        assembly {
            r := shr(127, mul(r, r))
            let f := shr(128, r)
            log_2 := or(log_2, shl(62, f))
            r := shr(f, r)
        }
        assembly {
            r := shr(127, mul(r, r))
            let f := shr(128, r)
            log_2 := or(log_2, shl(61, f))
            r := shr(f, r)
        }
        assembly {
            r := shr(127, mul(r, r))
            let f := shr(128, r)
            log_2 := or(log_2, shl(60, f))
            r := shr(f, r)
        }
        assembly {
            r := shr(127, mul(r, r))
            let f := shr(128, r)
            log_2 := or(log_2, shl(59, f))
            r := shr(f, r)
        }
        assembly {
            r := shr(127, mul(r, r))
            let f := shr(128, r)
            log_2 := or(log_2, shl(58, f))
            r := shr(f, r)
        }
        assembly {
            r := shr(127, mul(r, r))
            let f := shr(128, r)
            log_2 := or(log_2, shl(57, f))
            r := shr(f, r)
        }
        assembly {
            r := shr(127, mul(r, r))
            let f := shr(128, r)
            log_2 := or(log_2, shl(56, f))
            r := shr(f, r)
        }
        assembly {
            r := shr(127, mul(r, r))
            let f := shr(128, r)
            log_2 := or(log_2, shl(55, f))
            r := shr(f, r)
        }
        assembly {
            r := shr(127, mul(r, r))
            let f := shr(128, r)
            log_2 := or(log_2, shl(54, f))
            r := shr(f, r)
        }
        assembly {
            r := shr(127, mul(r, r))
            let f := shr(128, r)
            log_2 := or(log_2, shl(53, f))
            r := shr(f, r)
        }
        assembly {
            r := shr(127, mul(r, r))
            let f := shr(128, r)
            log_2 := or(log_2, shl(52, f))
            r := shr(f, r)
        }
        assembly {
            r := shr(127, mul(r, r))
            let f := shr(128, r)
            log_2 := or(log_2, shl(51, f))
            r := shr(f, r)
        }
        assembly {
            r := shr(127, mul(r, r))
            let f := shr(128, r)
            log_2 := or(log_2, shl(50, f))
        }

        int256 log_sqrt10001 = log_2 * 255738958999603826347141; // 128.128 number

        int24 tickLow = int24((log_sqrt10001 - 3402992956809132418596140100660247210) >> 128);
        int24 tickHi = int24((log_sqrt10001 + 291339464771989622907027621153398088495) >> 128);

        tick = tickLow == tickHi
            ? tickLow
            : getSqrtRatioAtTick(tickHi) <= sqrtPriceX96 ? tickHi : tickLow;
    }

    function getSqrtRatioAtTick(int24 tick) internal pure returns (uint160 sqrtPriceX96) {
        uint256 absTick = tick < 0 ? uint256(-int256(tick)) : uint256(int256(tick));
        require(absTick <= uint256(int256(MAX_TICK)), "T");

        uint256 ratio = absTick & 0x1 != 0
            ? 0xfffcb933bd6fad37aa2d162d1a594001
            : 0x100000000000000000000000000000000;
        if (absTick & 0x2 != 0) ratio = (ratio * 0xfff97272373d413259a46990580e213a) >> 128;
        if (absTick & 0x4 != 0) ratio = (ratio * 0xfff2e50f5f656932ef12357cf3c7fdcc) >> 128;
        if (absTick & 0x8 != 0) ratio = (ratio * 0xffe5caca7e10e4e61c3624eaa0941cd0) >> 128;
        if (absTick & 0x10 != 0) ratio = (ratio * 0xffcb9843d60f6159c9db58835c926644) >> 128;
        if (absTick & 0x20 != 0) ratio = (ratio * 0xff973b41fa98c081472e6896dfb254c0) >> 128;
        if (absTick & 0x40 != 0) ratio = (ratio * 0xff2ea16466c96a3843ec78b326b52861) >> 128;
        if (absTick & 0x80 != 0) ratio = (ratio * 0xfe5dee046a99a2a811c461f1969c3053) >> 128;
        if (absTick & 0x100 != 0) ratio = (ratio * 0xfcbe86c7900a88aedcffc83b479aa3a4) >> 128;
        if (absTick & 0x200 != 0) ratio = (ratio * 0xf987a7253ac413176f2b074cf7815e54) >> 128;
        if (absTick & 0x400 != 0) ratio = (ratio * 0xf3392b0822b70005940c7a398e4b70f3) >> 128;
        if (absTick & 0x800 != 0) ratio = (ratio * 0xe7159475a2c29b7443b29c7fa6e889d9) >> 128;
        if (absTick & 0x1000 != 0) ratio = (ratio * 0xd097f3bdfd2022b8845ad8f792aa5825) >> 128;
        if (absTick & 0x2000 != 0) ratio = (ratio * 0xa9f746462d870fdf8a65dc1f90e061e5) >> 128;
        if (absTick & 0x4000 != 0) ratio = (ratio * 0x70d869a156d2a1b890bb3df62baf32f7) >> 128;
        if (absTick & 0x8000 != 0) ratio = (ratio * 0x31be135f97d08fd981231505542fcfa6) >> 128;
        if (absTick & 0x10000 != 0) ratio = (ratio * 0x9aa508b5b7a84e1c677de54f3e99bc9) >> 128;
        if (absTick & 0x20000 != 0) ratio = (ratio * 0x5d6af8dedb81196699c329225ee604) >> 128;
        if (absTick & 0x40000 != 0) ratio = (ratio * 0x2216e584f5fa1ea926041bedfe98) >> 128;
        if (absTick & 0x80000 != 0) ratio = (ratio * 0x48a170391f7dc42444e8fa2) >> 128;

        if (tick > 0) ratio = type(uint256).max / ratio;

        // this divides by 1<<32 rounding up to go from a Q128.128 to a Q128.96.
        // we then downcast because we know the result always fits within 160 bits due to our tick input constraint
        // we round up in the division so getTickAtSqrtRatio of the output price is always consistent
        sqrtPriceX96 = uint160((ratio >> 32) + (ratio % (1 << 32) == 0 ? 0 : 1));
    }
}

File 2 of 2 : ITokenMaker.sol
// SPDX-License-Identifier: BUSL-1.1
pragma solidity ^0.8.23;

interface ITokenMaker {
    // ======================= Struct =======================

    /**
     * @dev Parameters for creating a new token in the TokenMaker contract.
     * @param salt Unique identifier used to generate the token address deterministically.
     * @param totalSupply Total supply of the token being created.
     * @param startingTick Initial tick corresponding to initial price of the liquidity pool.
     * @param feeRecipients Array of addresses that will receive fees from token transactions.
     * @param feeBPS Array of fee basis points (BPS) corresponding to each fee recipient.
     */
    struct MakeParams {
        bytes32 salt;
        uint256 totalSupply;
        int24 startingTick;
        address[] feeRecipients;
        uint256[] feeBPS;
    }

    /**
     * @dev Initialization parameters for deploying the TokenMaker contract.
     * @param escrowImpl Address of the escrow implementation contract.
     * @param tokenImpl Address of the token implementation contract.
     * @param CLFactory Address of the factory contract for creating liquidity pools.
     * @param counterAsset Address of the counterAsset token.
     * @param positionManager Address of the position manager contract.
     * @param protocolFeeBPS Protocol fee rate in basis points (BPS).
     * @param protocolFeeRecipient Address that receives the protocol fees.
     * @param owner Address that has admin access to the TokenMaker contract.
     * @param pausers Array of addresses that can pause the TokenMaker contract.
     */
    struct InitParams {
        address CLFactory;
        address counterAsset;
        address positionManager;
        uint256 protocolFeeBPS;
        address protocolFeeRecipient;
        address owner;
        address[] pausers;
        address feeManager;
    }

    // ======================= Error =======================

    error TokenMaker__InvalidTokenParams();
    error TokenMaker__InvalidSet();
    error TokenMaker__Paused();

    // ======================= Event =======================

    /**
     * @dev Emitted when a new token is created.
     * @param token Address of the newly created token.
     * @param LP Address of the liquidity pool.
     * @param tokenId Token ID associated with the liquidity position.
     * @param escrow Address of the escrow contract.
     */
    event TokenCreated(address indexed token, address indexed LP, uint256 tokenId, address escrow);

    // ======================= Function =======================

    function makeToken(string memory name, string memory symbol, MakeParams memory params)
        external
        returns (address token, address LP, uint256 tokenId, address escrow);
    function protocolFeeBPS() external view returns (uint256);
    function protocolFeeRecipient() external view returns (address);
    function counterAsset() external view returns (address);
}

Settings
{
  "viaIR": false,
  "codegen": "yul",
  "remappings": [
    "forge-std/=lib/forge-std/src/",
    "zksync-oz/=lib/zksync-era/contracts/l1-contracts/lib/murky/lib/openzeppelin-contracts/",
    "@matterlabs/=lib/zksync-era/contracts/",
    "ds-test/=lib/zksync-era/contracts/l1-contracts/lib/forge-std/lib/ds-test/src/",
    "erc4626-tests/=lib/zksync-era/contracts/lib/openzeppelin-contracts-upgradeable-v4/lib/erc4626-tests/",
    "forge-zksync-std/=lib/forge-zksync-std/src/",
    "murky/=lib/zksync-era/contracts/lib/murky/",
    "openzeppelin-contracts-upgradeable-v4/=lib/zksync-era/contracts/lib/openzeppelin-contracts-upgradeable-v4/",
    "openzeppelin-contracts-v4/=lib/zksync-era/contracts/lib/openzeppelin-contracts-v4/",
    "openzeppelin-contracts/=lib/zksync-era/contracts/lib/murky/lib/openzeppelin-contracts/",
    "solady/=lib/solady/src/",
    "zksync-era/=lib/zksync-era/"
  ],
  "evmVersion": "paris",
  "outputSelection": {
    "*": {
      "*": [
        "abi"
      ]
    }
  },
  "optimizer": {
    "enabled": true,
    "mode": "3",
    "fallback_to_optimizing_for_size": false,
    "disable_system_request_memoization": true
  },
  "metadata": {},
  "libraries": {},
  "enableEraVMExtensions": false,
  "forceEVMLA": false
}

Contract Security Audit

Contract ABI

API
[{"inputs":[{"internalType":"address","name":"_tokenMaker","type":"address"}],"stateMutability":"nonpayable","type":"constructor"},{"inputs":[{"internalType":"uint256","name":"reserve1","type":"uint256"},{"internalType":"uint256","name":"reserve0","type":"uint256"}],"name":"encodePriceSqrt","outputs":[{"internalType":"uint160","name":"","type":"uint160"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"bytes32","name":"salt","type":"bytes32"},{"internalType":"uint256","name":"virtualNewTokenAmount","type":"uint256"},{"internalType":"uint256","name":"virtualCounterAssetAmount","type":"uint256"}],"name":"helpMakeToken","outputs":[{"internalType":"address","name":"newToken","type":"address"},{"internalType":"int24","name":"startingTick","type":"int24"},{"internalType":"uint160","name":"roundedPrice","type":"uint160"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bytes32","name":"salt","type":"bytes32"}],"name":"predictTokenAddress","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"tokenMaker","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"}]

9c4d535b00000000000000000000000000000000000000000000000000000000000000000100013d92d13e4128e0b1f0c20462f9df96951cc6c0272412e1c75e3606d8000000000000000000000000000000000000000000000000000000000000000060000000000000000000000000000000000000000000000000000000000000002000000000000000000000000029efba0504ff2829937cff407b7d6cb61f0018be

Deployed Bytecode

0x00040000000000020000006003100270000000de033001970000000100200190000000190000c13d0000008002000039000000400020043f000000040030008c000001010000413d000000000201043b000000e002200270000000e40020009c000000450000213d000000e70020009c000000520000613d000000e80020009c000001010000c13d0000000001000416000000000001004b000001010000c13d000000000100041a000000e101100197000000800010043f000000eb01000041000003730001042e0000000002000416000000000002004b000001010000c13d0000001f02300039000000df022001970000008002200039000000400020043f0000001f0430018f000000e00530019800000080025000390000002a0000613d0000008006000039000000000701034f000000007807043c0000000006860436000000000026004b000000260000c13d000000000004004b000000370000613d000000000151034f0000000304400210000000000502043300000000054501cf000000000545022f000000000101043b0000010004400089000000000141022f00000000014101cf000000000151019f0000000000120435000000200030008c000001010000413d000000800100043d000000e10010009c000001010000213d000000000200041a000000e202200197000000000112019f000000000010041b000000200100003900000100001004430000012000000443000000e301000041000003730001042e000000e50020009c000000ea0000613d000000e60020009c000001010000c13d000000240030008c000001010000413d0000000002000416000000000002004b000001010000c13d0000000401100370000000000101043b0372027a0000040f000001060000013d000000640030008c000001010000413d0000000002000416000000000002004b000001010000c13d0000000402100370000000000202043b000400000002001d0000004402100370000000000202043b000100000002001d0000002401100370000000000101043b000200000001001d000000000100041a000300000001001d000000800000043f000000a001000039000000400010043f0000000001000414000000de0010009c000000de01008041000000c001100210000000ec011001c700008010020000390372036d0000040f0000000100200190000001010000613d000000000101043b000000ed02000041000000c00020043f0000000302000029000000e102200197000000e00020043f0000000402000029000001000020043f000000ee02000041000001200020043f000001400010043f000000a001000039000000a00010043f0000016001000039000000400010043f0000000001000414000000de0010009c000000de01008041000000c001100210000000ef011001c700008010020000390372036d0000040f0000000100200190000001010000613d000000000101043b000300000001001d000000000200041a000000400300043d000400000003001d000000f0010000410000000000130435000000de0030009c000000de01000041000000000103401900000040011002100000000003000414000000de0030009c000000de03008041000000c003300210000000000113019f000000f1011001c7000000e1022001970372036d0000040f000000040b0000290000006003100270000000de03300197000000200030008c000000200400003900000000040340190000001f0640018f000000200740019000000000057b0019000000a90000613d000000000801034f00000000090b0019000000008a08043c0000000009a90436000000000059004b000000a50000c13d000000000006004b000000b60000613d000000000771034f0000000306600210000000000805043300000000086801cf000000000868022f000000000707043b0000010006600089000000000767022f00000000066701cf000000000686019f000000000065043500000001002001900000010d0000613d0000001f01400039000000600210018f0000000001b20019000000000021004b00000000020000390000000102004039000000f20010009c0000012b0000213d00000001002001900000012b0000c13d000000400010043f000000200030008c000001010000413d00000000020b0433000000f30020009c000001010000813d0000000303000029000000e10a3001970000000000a2004b00000001030000290000000202000029000000000203401900000000040300190000000204004029000000c003400210000000000004004b000000d60000613d00000000044300d9000000ea0040009c000002340000c13d000000000002004b000000fb0000613d00000000022300d9000000040020008c000001370000413d00000001032002700000000104300039000000000024004b000001310000813d000000000004004b000000fb0000613d000000000304001900000000044200d9000000000034001a000002340000413d00000000043400190000000104400270000000000034004b000000df0000413d000001320000013d000000440030008c000001010000413d0000000002000416000000000002004b000001010000c13d0000002402100370000000000202043b0000000401100370000000000301043b000000c001300210000000000003004b000000f90000613d00000000033100d9000000ea0030009c000002340000c13d000000000002004b000001030000c13d0000011701000041000000000010043f0000001201000039000000040010043f000001180100004100000374000104300000000001000019000003740001043000000000012100d9037203480000040f000000e101100197000000400200043d0000000000120435000000de0020009c000000de020080410000004001200210000000e9011001c7000003730001042e0000001f0530018f000000e006300198000000400200043d0000000004620019000001180000613d000000000701034f0000000008020019000000007907043c0000000008980436000000000048004b000001140000c13d000000000005004b000001250000613d000000000161034f0000000305500210000000000604043300000000065601cf000000000656022f000000000101043b0000010005500089000000000151022f00000000015101cf000000000161019f00000000001404350000006001300210000000de0020009c000000de020080410000004002200210000000000112019f00000374000104300000011701000041000000000010043f0000004101000039000000040010043f000001180100004100000374000104300000000003020019000000e102300197000400000002001d000000f40220009a000000f50020009c000001470000813d0000004402100039000001190300004100000000003204350000002402100039000000010300003900000000003204350000011a020000410000000000210435000000040210003900000020030000390000000000320435000000de0010009c000000de0100804100000040011002100000011b011001c700000374000104300000002001300210000000f601100197000000f70010009c00000000020000390000008002002039000000000321022f000000f20030009c00000000040000390000004004002039000000000343022f000000de0030009c00000000050000390000002005002039000000000353022f0000ffff0030008c00000000060000390000001006002039000000000363022f000000ff0030008c00000000070000390000000807002039000000000373022f0000000f0030008c00000000080000390000000408002039000000000383022f000000030030008c00000000090000390000000209002039000000000393022f000000010030008c00000001022021bf000000000242019f000000000252019f000000000262019f000000000272019f000000000282019f000000000292019f0000007f0320008c000000000331022f0000007f0420008900000000014101cf000000000103201900000000011100a9000000ff031002700000007f04100270000000000334022f00000000033300a9000000ff043002700000007f05300270000000000445022f00000000044400a9000000ff054002700000007f06400270000000000556022f000000c001100270000000f8011001970000004002200210000000000112019f00000000025500a9000000ff052002700000007f06200270000000000556022f000000c103300270000000f903300197000000000131019f00000000035500a9000000ff053002700000007f06300270000000000556022f000000c204400270000000fa04400197000000000141019f00000000045500a9000000ff054002700000007f06400270000000000556022f000000c302200270000000fb02200197000000000121019f00000000025500a9000000ff052002700000007f06200270000000000556022f000000c403300270000000fc03300197000000000131019f00000000035500a9000000ff053002700000007f06300270000000000556022f000000c504400270000000fd04400197000000fe0110009a000000000114019f00000000045500a9000000ff054002700000007f06400270000000000556022f000000c602200270000000ff02200197000000000121019f00000000025500a9000000ff052002700000007f06200270000000000556022f000000c7033002700000010003300197000000000131019f00000000035500a9000000ff053002700000007f06300270000000000556022f000000c8044002700000010104400197000000000141019f00000000045500a9000000ff054002700000007f06400270000000000556022f000000c9022002700000010202200197000000000121019f00000000025500a9000000ff052002700000007f06200270000000000556022f000000ca033002700000010303300197000000000131019f000000cb034002700000010403300197000000000131019f000000cc022002700000010502200197000000000121019f00000000025500a9000000cd02200270000001060220019700000000022101a000000107012000d1000002300000c13d0000010a0210009a0000010c002001980000010d0300004100000000030060190000010e0010009c000001dd0000213d0000010f0010009c000002340000213d00020000000a001d00000080022002700000010b0220019700030000002301a3000001100110009a00000080021002700000010b022001970000010c001001980000010d010000410000000001006019000000000221019f000000030020006b000001f20000613d0000000001020019000100000002001d037202cc0000040f000000040010006c000000010200002900000000010200190000000301002029000300000001001d00000003020000290000010b0120019700000111002001980000010d020000410000000002006019000000000112019f000001083210012c000001080330c0990000010804000041000007d05440011b000000000442013f000001080550c09900000000235300d9000000ff044002120000000005340049000000000445019f000000000403601900000108001001980000000005020019000000000550c089000000000002004b000000000205c019000000000003004b000000000304c0190000010b0430019700000111003001980000010d030000410000000003006019000000000343019f000007d0073000c9000401110070019c0000010d0400004100000000040060190000011203700197000000000534019f000000000075004b000002340000c13d00000000060700190000010b0520019700000111002001980000010d020000410000000002006019000000000252019f0000010e0010009c000002550000a13d0000011c0020009c0000000001000019000001080100204100000108022001970000010803200167000001080020009c00000000020000190000010802004041000001080030009c000000000201c019000000000002004b000002650000c13d000001150160009a000001140010009c000002340000413d000007d00100008a000002620000013d0000011d0020009c0000023a0000c13d000001080010009c0000023a0000c13d0000011701000041000000000010043f0000001101000039000000040010043f00000118010000410000037400010430000001083220012c000001080330c099000001085410012c000000000424013f000001080550c099000001090010009c0000000002000019000001080200404100000108061001970000010807600167000001080060009c00000000060000190000010806002041000001080070009c000000000602c01900000000023500d9000000ff034002120000000004230049000000000334019f0000000003026019000000000002004b000000000203c019000000000006004b000002340000c13d000001070020009c000001d50000613d000002340000013d0000010e0020009c000002650000213d000003e80020008c000002650000413d00000111004001980000010d010000410000000001006019000000000131019f0000000006010019000001130110009a000001140010009c000002340000413d000007d00100003900000000021600190000000006020019000401110020019b0000000001060019000300000006001d037202cc0000040f00000003020000290000010b02200197000000040000006b0000010d030000410000000003006019000000000223019f000000400300043d000000200430003900000000002404350000004002300039000000000012043500000002010000290000000000130435000000de0030009c000000de03008041000000400130021000000116011001c7000003730001042e0004000000000002000300000001001d000000000100041a000400000001001d000000400200043d00000000010204360000011e0020009c000002c40000813d000000400010043f000000de0010009c000200000001001d000000de010080410000004001100210000100000002001d0000000002020433000000de0020009c000000de020080410000006002200210000000000112019f0000000002000414000000de0020009c000000de02008041000000c002200210000000000112019f0000011f011001c700008010020000390372036d0000040f0000000100200190000002ca0000613d000000000101043b0000000104000029000000c0024000390000000000120435000000a001400039000000ee0200004100000000002104350000008001400039000000030200002900000000002104350000000401000029000000e101100197000000600240003900000000001204350000004001400039000000ed020000410000000000210435000000a00200003900000002030000290000000000230435000001200040009c000002c40000213d000000e002400039000000400020043f000000de0010009c000000de0100804100000040011002100000000002030433000000de0020009c000000de020080410000006002200210000000000112019f0000000002000414000000de0020009c000000de02008041000000c002200210000000000112019f0000011f011001c700008010020000390372036d0000040f0000000100200190000002ca0000613d000000000101043b000000e101100197000000000001042d0000011701000041000000000010043f0000004101000039000000040010043f00000118010000410000037400010430000000000100001900000374000104300000010b0210019700000111001001980000010d010000410000000001006019000000000121019f0000010e0010009c0000000003010019000002d70000a13d000001080010009c000003420000613d0000000003100089000001210030009c000003310000213d00000001003001900000012302000041000001220200604100000124042000d100000080044002700000000200300190000000000204c01900000125042000d100000080044002700000000400300190000000000204c01900000126042000d100000080044002700000000800300190000000000204c01900000127042000d100000080044002700000001000300190000000000204c01900000128042000d100000080044002700000002000300190000000000204c01900000129042000d100000080044002700000004000300190000000000204c0190000012a042000d100000080044002700000008000300190000000000204c0190000012b042000d100000080044002700000010000300190000000000204c0190000012c042000d100000080044002700000020000300190000000000204c0190000012d042000d100000080044002700000040000300190000000000204c0190000012e042000d100000080044002700000080000300190000000000204c0190000012f042000d100000080044002700000100000300190000000000204c01900000130042000d100000080044002700000200000300190000000000204c01900000131042000d100000080044002700000400000300190000000000204c01900000132042000d100000080044002700000800000300190000000000204c01900000133042000d100000080044002700000013400300198000000000204c01900000135042000d100000080044002700000013600300198000000000204c01900000137042000d100000080044002700000013800300198000000000204c01900000139003001980000013a032000d1000000800230c2700000010e0010009c0000032c0000213d000000000001004b000000010100c08a000000000221c0d90000002001200270000000de00200198000000010110c039000000e101100197000000000001042d000000400100043d00000044021000390000013b0300004100000000003204350000002402100039000000010300003900000000003204350000011a020000410000000000210435000000040210003900000020030000390000000000320435000000de0010009c000000de0100804100000040011002100000011b011001c700000374000104300000011701000041000000000010043f0000001101000039000000040010043f00000118010000410000037400010430000000040010008c0000034e0000813d000000000001004b0000035f0000613d0000000101000039000000000001042d00000001021002700000000103200039000000000013004b000003600000813d000000000003004b000003610000613d00000000023100d9000000000032001a000003670000413d00000000023200190000000104200270000000000034004b00000000020300190000000003040019000003520000413d0000000001020019000000000001042d0000000001000019000000000001042d0000011701000041000000000010043f0000001201000039000000040010043f000001180100004100000374000104300000011701000041000000000010043f0000001101000039000000040010043f0000011801000041000003740001043000000370002104230000000102000039000000000001042d0000000002000019000000000001042d0000037200000432000003730001042e000003740001043000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000ffffffff00000000000000000000000000000000000000000000000000000001ffffffe000000000000000000000000000000000000000000000000000000000ffffffe0000000000000000000000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000000000000000000000000000000000000000000000020000000000000000000000000000004000000100000000000000000000000000000000000000000000000000000000000000000000000000cd309ec800000000000000000000000000000000000000000000000000000000cd309ec900000000000000000000000000000000000000000000000000000000ffb623df0000000000000000000000000000000000000000000000000000000024aea3700000000000000000000000000000000000000000000000000000000059956d460000000000000000000000000000000000000020000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000200000008000000000000000000200000000000000000000000000000000000000000000a000000000000000002020dba91b30cc0006188af794c2fb30dd8520db7e2c088b7fc7c103c00ca4940100018fe6f8527f967fe1b54a9ae0dcb5aac13dcebfeced7b67a2b41c303aaf02000000000000000000000000000000000000a0000000c00000000000000000eba08b2a000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000004000000000000000000000000000000000000000000000000000000000000000000000000ffffffffffffffff0000000000000000000000010000000000000000000000000000000000000000000000000000000000000000fffd8963efd1fc6a506488495d951d5263988d26ffffffffffffffffffffffff0002769c102e0395af9b77b6a26ae2ae9c69e97d0000000000000000ffffffffffffffffffffffffffffffffffffffff0000000000000000000000000000000000000000ffffffffffffffffffffffffffffffff000000000000000000000000000000000000000000000000800000000000000000000000000000000000000000000000000000000000000040000000000000000000000000000000000000000000000000000000000000002000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000000008000000000000000000000000000000000000000000000000000000000000000400000000000000000000000000000000000000000000000000000000000080000000000000000000000000000000000000000000000000000000000000000002000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000000008000000000000000000000000000000000000000000000000000000000000000400000000000000000000000000000000000000000000000000000000000000020000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000000080000000000000000000000000000000000000000000000000000000000000004000000000000000000000000000000000000000000000000000000003627a301d71055774c85800000000000000000000000000000000000000000000000000000000000000080000000000000000000000000000000028f6481ab7f045a5af012a19d003aaa00000000000000000000000000000000028f6481ab7f045a5af012a19d003aaa00000000000000000000000000000000000000000000000000000000007fffff0000000000000000000000000080000000000000000000000000000000000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8000007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff7fffffffffffffffffffffffffffffff24d20f617e6a657ebaa1d9f8665f9cd0ffffffffffffffffffffffffffffffff24d20f617e6a657ebaa1d9f8665f9cd1000000000000000000000000000000000000000000000000000000000080000000000000000000000000000000000000000000000000000000000000007ffff000000000000000000000000000000000000000000000000000000000007ff830ffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00000000000000000000000000000000000000000000000000000000000000008007d000000000000000000000000000000000000000600000000000000000000000004e487b71000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000024000000000000000000000000520000000000000000000000000000000000000000000000000000000000000008c379a0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000064000000000000000000000000fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc17ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000000000000000000000000000000000000000000000ffffffffffffffe00200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000ffffffffffffff1f00000000000000000000000000000000000000000000000000000000000d89e8000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000000fffcb933bd6fad37aa2d162d1a59400100000000000000000000000000000000fff97272373d413259a46990580e213a00000000000000000000000000000000fff2e50f5f656932ef12357cf3c7fdcc00000000000000000000000000000000ffe5caca7e10e4e61c3624eaa0941cd000000000000000000000000000000000ffcb9843d60f6159c9db58835c92664400000000000000000000000000000000ff973b41fa98c081472e6896dfb254c000000000000000000000000000000000ff2ea16466c96a3843ec78b326b5286100000000000000000000000000000000fe5dee046a99a2a811c461f1969c305300000000000000000000000000000000fcbe86c7900a88aedcffc83b479aa3a400000000000000000000000000000000f987a7253ac413176f2b074cf7815e5400000000000000000000000000000000f3392b0822b70005940c7a398e4b70f300000000000000000000000000000000e7159475a2c29b7443b29c7fa6e889d900000000000000000000000000000000d097f3bdfd2022b8845ad8f792aa582500000000000000000000000000000000a9f746462d870fdf8a65dc1f90e061e50000000000000000000000000000000070d869a156d2a1b890bb3df62baf32f70000000000000000000000000000000031be135f97d08fd981231505542fcfa60000000000000000000000000000000009aa508b5b7a84e1c677de54f3e99bc9000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000005d6af8dedb81196699c329225ee60400000000000000000000000000000000000000000000000000000000000200000000000000000000000000000000000000002216e584f5fa1ea926041bedfe98000000000000000000000000000000000000000000000000000000000004000000000000000000000000000000000000000000000000000000000000000800000000000000000000000000000000000000000000048a170391f7dc42444e8fa254000000000000000000000000000000000000000000000000000000000000008fca6e91996ae5a8bc2130a024676942c15f6cfc05a4e965dbb690cad1f26bf4

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

00000000000000000000000029efba0504ff2829937cff407b7d6cb61f0018be

-----Decoded View---------------
Arg [0] : _tokenMaker (address): 0x29efbA0504Ff2829937Cff407B7D6Cb61f0018bE

-----Encoded View---------------
1 Constructor Arguments found :
Arg [0] : 00000000000000000000000029efba0504ff2829937cff407b7d6cb61f0018be


Block Transaction 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  ]

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.