Sonic Blaze Testnet

Contract

0x7d014747C8BC803c2b227A8456EAdF5D5d33F1F6

Overview

S Balance

Sonic Blaze LogoSonic Blaze LogoSonic Blaze Logo0 S

Multichain Info

No addresses found
Transaction Hash
Method
Block
From
To

There are no matching entries

> 10 Internal Transactions found.

Latest 25 internal transactions (View All)

Parent Transaction Hash Block From To
182947612025-02-06 7:14:3528 hrs ago1738826075
0x7d014747...D5d33F1F6
0 S
182947612025-02-06 7:14:3528 hrs ago1738826075
0x7d014747...D5d33F1F6
 Contract Creation0 S
182947612025-02-06 7:14:3528 hrs ago1738826075
0x7d014747...D5d33F1F6
0 S
180657892025-02-05 8:58:422 days ago1738745922
0x7d014747...D5d33F1F6
0 S
180657892025-02-05 8:58:422 days ago1738745922
0x7d014747...D5d33F1F6
 Contract Creation0 S
180657892025-02-05 8:58:422 days ago1738745922
0x7d014747...D5d33F1F6
0 S
180651272025-02-05 8:54:572 days ago1738745697
0x7d014747...D5d33F1F6
0 S
180651272025-02-05 8:54:572 days ago1738745697
0x7d014747...D5d33F1F6
 Contract Creation0 S
180651272025-02-05 8:54:572 days ago1738745697
0x7d014747...D5d33F1F6
0 S
180298772025-02-05 5:29:112 days ago1738733351
0x7d014747...D5d33F1F6
0 S
180298772025-02-05 5:29:112 days ago1738733351
0x7d014747...D5d33F1F6
 Contract Creation0 S
180298772025-02-05 5:29:112 days ago1738733351
0x7d014747...D5d33F1F6
0 S
175733912025-02-03 8:19:024 days ago1738570742
0x7d014747...D5d33F1F6
0 S
175733912025-02-03 8:19:024 days ago1738570742
0x7d014747...D5d33F1F6
 Contract Creation0 S
175733912025-02-03 8:19:024 days ago1738570742
0x7d014747...D5d33F1F6
0 S
161113942025-01-28 7:47:0510 days ago1738050425
0x7d014747...D5d33F1F6
0 S
161113942025-01-28 7:47:0510 days ago1738050425
0x7d014747...D5d33F1F6
 Contract Creation0 S
161113942025-01-28 7:47:0510 days ago1738050425
0x7d014747...D5d33F1F6
0 S
161110442025-01-28 7:45:0610 days ago1738050306
0x7d014747...D5d33F1F6
0 S
161110442025-01-28 7:45:0610 days ago1738050306
0x7d014747...D5d33F1F6
 Contract Creation0 S
161110442025-01-28 7:45:0610 days ago1738050306
0x7d014747...D5d33F1F6
0 S
161102782025-01-28 7:40:3610 days ago1738050036
0x7d014747...D5d33F1F6
0 S
161102782025-01-28 7:40:3610 days ago1738050036
0x7d014747...D5d33F1F6
 Contract Creation0 S
161102782025-01-28 7:40:3610 days ago1738050036
0x7d014747...D5d33F1F6
0 S
161095712025-01-28 7:36:2710 days ago1738049787
0x7d014747...D5d33F1F6
0 S
View All Internal Transactions
Loading...
Loading

Contract Source Code Verified (Exact Match)

Contract Name:
BondingCurveFactory

Compiler Version
v0.8.28+commit.7893614a

Optimization Enabled:
Yes with 200 runs

Other Settings:
paris EvmVersion

Contract Source Code (Solidity Standard Json-Input format)

File 1 of 8 : BondingCurveFactory.sol
// SPDX-License-Identifier: MIT
pragma solidity >=0.8.0;

import "./interfaces/IBondingCurveFactory.sol";
import "./BondingCurve.sol";

contract BondingCurveFactory is IBondingCurveFactory {
    mapping(address => address) public override getCurve;
    address[] public allCurves;

    event CurveCreated(address indexed token, address curve, address migrator);

    function createCurve(address token, address migrator) external override returns (address curve) {
        require(token != address(0), "zero address");
        require(getCurve[token] == address(0), "curve exists");
        
        bytes memory bytecode = type(BondingCurve).creationCode;
        bytes32 salt = keccak256(abi.encodePacked(token, migrator));
        assembly {
            curve := create2(0, add(bytecode, 32), mload(bytecode), salt)
        }
        
        BondingCurve(curve).initialize(token, migrator);

        getCurve[token] = curve;
        allCurves.push(curve);

        emit CurveCreated(token, curve, migrator);
    }

    function allCurvesLength() external view returns (uint) {
        return allCurves.length;
    }
}

File 2 of 8 : ReentrancyGuard.sol
// SPDX-License-Identifier: MIT
// OpenZeppelin Contracts (last updated v5.1.0) (utils/ReentrancyGuard.sol)

pragma solidity ^0.8.20;

/**
 * @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 EIP-1153 (transient storage) is available on the chain you're deploying at,
 * consider using {ReentrancyGuardTransient} instead.
 *
 * 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;

    /**
     * @dev Unauthorized reentrant call.
     */
    error ReentrancyGuardReentrantCall();

    constructor() {
        _status = NOT_ENTERED;
    }

    /**
     * @dev Prevents a contract from calling itself, directly or indirectly.
     * Calling a `nonReentrant` function from another `nonReentrant`
     * function is not supported. It is possible to prevent this from happening
     * by making the `nonReentrant` function external, and making it call a
     * `private` function that does the actual work.
     */
    modifier nonReentrant() {
        _nonReentrantBefore();
        _;
        _nonReentrantAfter();
    }

    function _nonReentrantBefore() private {
        // On the first call to nonReentrant, _status will be NOT_ENTERED
        if (_status == ENTERED) {
            revert ReentrancyGuardReentrantCall();
        }

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

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

    /**
     * @dev Returns true if the reentrancy guard is currently set to "entered", which indicates there is a
     * `nonReentrant` function in the call stack.
     */
    function _reentrancyGuardEntered() internal view returns (bool) {
        return _status == ENTERED;
    }
}

File 3 of 8 : BondingCurve.sol
// SPDX-License-Identifier: MIT 
pragma solidity >=0.8.0;

import "./libraries/TransferHelper.sol";
import "./interfaces/IERC20.sol";
import "./interfaces/IBondingCurve.sol";
import "./libraries/BondingCurveLibrary.sol";
import "@openzeppelin/contracts/utils/ReentrancyGuard.sol";
// import "@openzeppelin/contracts/security/ReentrancyGuard.sol";

contract BondingCurve is ReentrancyGuard, IBondingCurve {

    address public immutable factory;
    address public migrator;
    address public token; // meme token

    uint256 private reserve0 = 1073000191 ether;
    uint256 private reserve1 = 1.5 ether;
    uint256 public constant rate = 2096; // test = 6000; default = 2096
    bool public isMarketCapReached;
    uint256 private initialized;

    event Swap(
        address indexed sender,
        uint amount0In,
        uint amount1In,
        uint amount0Out,
        uint amount1Out,
        address indexed to
    );
    event Sync(uint256 reserve0, uint256 reserve1);
    event RemoveLiquidity(uint256 tokenAmount, uint256 ehter);

    constructor() {
        factory = msg.sender;
    }

    function initialize(address _token, address _migrator) external {
        require(msg.sender == factory, 'FORBIDDEN');
        require(initialized == 0, 'already initialized');
        require(_token != address(0), 'zero address');
        token = _token;
        migrator = _migrator;
        initialized = 1;
    }

    function getReserves() external view returns (uint, uint) {
        return (reserve0, reserve1);
    }

    // buy meme token
    // amount = meme token out amount
    function buy(uint256 amountOut, uint256 maxEthCost) external payable nonReentrant {
        require(!isMarketCapReached, "Market Cap reached");
        uint256 amountDiff = IERC20(token).balanceOf(address(this)) - amountOut;
        require(amountDiff > 0, "only 10,000,000,000");
        // check if the meme token is reached the market cap
        if (amountDiff < _migrateToken()) {
            amountOut = IERC20(token).balanceOf(address(this)) - _migrateToken();
            isMarketCapReached = true;
        }

        uint ethIn = BondingCurveLibrary.getAmountIn(amountOut, reserve1, reserve0);
        require(ethIn <= maxEthCost, "Cost ETH too high");

        TransferHelper.safeTransfer(token, msg.sender, amountOut);
        TransferHelper.safeTransferETH(msg.sender, msg.value - ethIn);
        _update(reserve0 - amountOut, reserve1 + ethIn);
        emit Swap(msg.sender, 0, ethIn, amountOut, 0, msg.sender);
    }

    function sell(uint256 amountIn, uint256 minEthOut) external nonReentrant {
        require(!isMarketCapReached, "Market Cap reached");
        
        uint ethOut = BondingCurveLibrary.getAmountOut(amountIn, reserve0, reserve1);
        require(ethOut >= minEthOut, "Get ETH too low");
        require(ethOut <= address(this).balance, "Not enough ETH");
        
        TransferHelper.safeTransferFrom(token, msg.sender, address(this), amountIn);
        TransferHelper.safeTransferETH(msg.sender, ethOut);
        _update(reserve0 + amountIn, reserve1 - ethOut);
        emit Swap(msg.sender, amountIn, 0, 0, ethOut, msg.sender);
    }

    function _update(uint reserve0_, uint reserve1_) internal {
        reserve0 = reserve0_;
        reserve1 = reserve1_;
        emit Sync(reserve0, reserve1);
    }


    function migrateToken() public pure returns (uint256 amount) {
        return _migrateToken();
    }

    function _migrateToken() internal pure returns (uint256 amount) {
        amount = 1e9 * rate * 10 ** 18 / 1e4  ;
    }

    function removeLiquidity() external  {
        require(msg.sender == migrator, "migrator required");
        require(isMarketCapReached, "Market Cap not reach");
        
        TransferHelper.safeTransfer(token, migrator, _migrateToken());
        
        uint eth = address(this).balance;
        TransferHelper.safeTransferETH(migrator, eth);

        emit RemoveLiquidity(_migrateToken(), eth);
    }
}

File 4 of 8 : IBondingCurve.sol
// SPDX-License-Identifier: MIT
pragma solidity >=0.8.0;

interface IBondingCurve {
    function initialize(address token0, address migrator) external;
    function buy(uint256 amount, uint256 maxEthCost) external payable;
    function sell(uint256 amount, uint256 minEthOutput) external;
    function removeLiquidity() external;
    function migrateToken() external returns (uint256 amount);
    function token() external returns (address);
}

File 5 of 8 : IBondingCurveFactory.sol
// SPDX-License-Identifier: MIT
pragma solidity >=0.8.0;


interface IBondingCurveFactory {
    function createCurve(address token, address migrator) external returns (address curve);
    function getCurve(address) external view returns (address);
}

File 6 of 8 : IERC20.sol
// SPDX-License-Identifier: GPL-3.0-only
pragma solidity >=0.8.0;

interface IERC20 {
    event Approval(address indexed owner, address indexed spender, uint value);
    event Transfer(address indexed from, address indexed to, uint value);

    function name() external view returns (string memory);
    function symbol() external view returns (string memory);
    function decimals() external view returns (uint8);
    function totalSupply() external view returns (uint);
    function balanceOf(address owner) external view returns (uint);
    function allowance(address owner, address spender) external view returns (uint);

    function approve(address spender, uint value) external returns (bool);
    function transfer(address to, uint value) external returns (bool);
    function transferFrom(address from, address to, uint value) external returns (bool);
}

File 7 of 8 : BondingCurveLibrary.sol
// SPDX-License-Identifier: MIT 
pragma solidity >= 0.8.0;

library BondingCurveLibrary {
        // given an input amount of an asset and pair reserves, returns the maximum output amount of the other asset
    function getAmountOut(uint amountIn, uint reserveIn, uint reserveOut) internal pure returns (uint amountOut) {
        require(amountIn != 0, 'INSUFFICIENT_INPUT_AMOUNT');
        require(reserveIn != 0 && reserveOut != 0, 'INSUFFICIENT_LIQUIDITY');
        uint numerator = amountIn * reserveOut;
        uint denominator = reserveIn + amountIn;
        amountOut = numerator / denominator;
    }

    // given an output amount of an asset and pair reserves, returns a required input amount of the other asset
    function getAmountIn(uint amountOut, uint reserveIn, uint reserveOut) internal pure returns (uint amountIn) {
        require(amountOut != 0, 'INSUFFICIENT_OUTPUT_AMOUNT');
        require(reserveIn != 0 && reserveOut != 0, 'INSUFFICIENT_LIQUIDITY');
        uint numerator = amountOut * reserveIn;
        uint denominator = reserveOut - amountOut;
        amountIn = (numerator / denominator) + 1;
    }

}

File 8 of 8 : TransferHelper.sol
// SPDX-License-Identifier: MIT 
pragma solidity >= 0.8.0;

// helper methods for interacting with ERC20 tokens and sending ETH that do not consistently return true/false
library TransferHelper {
    function safeApprove(address token, address to, uint value) internal {
        // bytes4(keccak256(bytes('approve(address,uint256)')));
        (bool success, bytes memory data) = token.call(abi.encodeWithSelector(0x095ea7b3, to, value));
        require(success && (data.length == 0 || abi.decode(data, (bool))), 'APPROVE_FAILED');
    }

    function safeTransfer(address token, address to, uint value) internal {
        // bytes4(keccak256(bytes('transfer(address,uint256)')));
        (bool success, bytes memory data) = token.call(abi.encodeWithSelector(0xa9059cbb, to, value));
        require(success && (data.length == 0 || abi.decode(data, (bool))), 'TRANSFER_FAILED');
    }

    function safeTransferFrom(address token, address from, address to, uint value) internal {
        // bytes4(keccak256(bytes('transferFrom(address,address,uint256)')));
        (bool success, bytes memory data) = token.call(abi.encodeWithSelector(0x23b872dd, from, to, value));
        require(success && (data.length == 0 || abi.decode(data, (bool))), 'TRANSFER_FROM_FAILED');
    }

    function safeTransferETH(address to, uint value) internal {
        (bool success,) = to.call{value:value}(new bytes(0));
        require(success, 'ETH_TRANSFER_FAILED');
    }
}

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

Contract ABI

[{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"token","type":"address"},{"indexed":false,"internalType":"address","name":"curve","type":"address"},{"indexed":false,"internalType":"address","name":"migrator","type":"address"}],"name":"CurveCreated","type":"event"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"}],"name":"allCurves","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"allCurvesLength","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"token","type":"address"},{"internalType":"address","name":"migrator","type":"address"}],"name":"createCurve","outputs":[{"internalType":"address","name":"curve","type":"address"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"getCurve","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"}]

608080604052346015576111c5908161001b8239f35b600080fdfe6080604052600436101561001257600080fd5b60003560e01c806361f029fb1461005757806388876b2c14610052578063a1eeba1f1461004d5763ce159c9a1461004857600080fd5b61014d565b6100f2565b6100d4565b34610098576020366003190112610098576001600160a01b0361007861009d565b16600052600060205260018060a01b036040600020541660805260206080f35b600080fd5b600435906001600160a01b038216820361009857565b602435906001600160a01b038216820361009857565b600091031261009857565b34610098576000366003190112610098576020600154604051908152f35b34610098576020366003190112610098576004356001548110156100985760016000527fb10e2d527612073b26eecdfd717e6a320cf44b4afac2b0732d9fcbe2b7fa0cf601546040516001600160a01b039091168152602090f35b346100985760403660031901126100985761016661009d565b61016e6100b3565b6001600160a01b038216610183811515610350565b6101c76101c16101b56101a88660018060a01b03166000526000602052604060002090565b546001600160a01b031690565b6001600160a01b031690565b1561038b565b610cf06101d660208201610403565b9080825260208201906104a08239604051606086811b6bffffffffffffffffffffffff19908116602084019081529187901b166034830152602882529061021e6048826103dc565b5190209151906000f5916001600160a01b03831690813b156100985760405163485cc95560e01b81526001600160a01b03868116600483015282166024820152916000908390604490829084905af190811561034b576102e4856102c561032c987f5beb1a9316febdf79449530de709e3300ab301e2a47cf3ce7928a27e11ca9c1d9661030f96610330575b506001600160a01b0316600090815260208190526040902090565b80546001600160a01b0319166001600160a01b03909216919091179055565b6102ed8561041f565b604080516001600160a01b038088168252909216602083015290918291820190565b0390a26040516001600160a01b0390911681529081906020820190565b0390f35b8061033f6000610345936103dc565b806100c9565b386102aa565b610413565b1561035757565b60405162461bcd60e51b815260206004820152600c60248201526b7a65726f206164647265737360a01b6044820152606490fd5b1561039257565b60405162461bcd60e51b815260206004820152600c60248201526b63757276652065786973747360a01b6044820152606490fd5b634e487b7160e01b600052604160045260246000fd5b90601f8019910116810190811067ffffffffffffffff8211176103fe57604052565b6103c6565b9061041160405192836103dc565b565b6040513d6000823e3d90fd5b600154680100000000000000008110156103fe5760018101600155600060015482101561048b57600190527fb10e2d527612073b26eecdfd717e6a320cf44b4afac2b0732d9fcbe2b7fa0cf60180546001600160a01b0319166001600160a01b03909216919091179055565b634e487b7160e01b81526032600452602490fdfe60a08060405234604a5760016000556b037790a0e8714009b49c00006003556714d1120d7b16000060045533608052610ca09081610050823960805181818161064301526107ee0152f35b600080fdfe608080604052600436101561001357600080fd5b60003560e01c9081630902f1ac146109435750806325a6547a146109205780632c4e722e14610903578063485cc955146107b057806367b9a2861461069b5780637cd07e4714610672578063c45a01551461062d578063d548280414610606578063d6febde814610328578063d79875eb146100c65763fc0c546a1461009857600080fd5b346100c15760003660031901126100c1576002546040516001600160a01b039091168152602090f35b600080fd5b346100c1576100d436610967565b6100dc610bc9565b6100eb60ff600554161561097d565b6003546004549083156102e3576101218461011b61012794841515806102da575b61011590610beb565b82610a10565b92610a03565b90610a23565b9081106102a35747811161026d5760008060018060a01b03600254166040518260208201916323b872dd60e01b8352336024820152306044820152876064820152606481526101776084826109be565b51925af1610183610a43565b8161023e575b5015610202576101998133610b56565b6101ba6101a883600354610a03565b6101b4836004546109f6565b90610c30565b6040519182526000602083015260006040830152606082015233907fd78ad95fa46c994b6551d0da85fc275fe613ce37657fb8d5e3d130840159d82260803392a36001600055005b60405162461bcd60e51b81526020600482015260146024820152731514905394d1915497d19493d357d1905253115160621b6044820152606490fd5b8051801592508215610253575b505083610189565b6102669250602080918301019101610a83565b838061024b565b60405162461bcd60e51b815260206004820152600e60248201526d09cdee840cadcdeeaced0408aa8960931b6044820152606490fd5b60405162461bcd60e51b815260206004820152600f60248201526e4765742045544820746f6f206c6f7760881b6044820152606490fd5b5080151561010c565b60405162461bcd60e51b815260206004820152601960248201527f494e53554646494349454e545f494e5055545f414d4f554e54000000000000006044820152606490fd5b61033136610967565b9061033a610bc9565b8060055461034b60ff82161561097d565b6002546040516370a0823160e01b81523060048201526001600160a01b0390911692602082602481875afa801561058b576000906105d2575b61038e92506109f6565b8015610597576aad6086c48495c238000000809110610509575b505060045460035483156104c457610121846103d2846103d8951515806104bb5761011590610beb565b926109f6565b92600184018094116104a557831161046c57816103f6913390610a9b565b61040961040383346109f6565b33610b56565b610424610418826003546109f6565b6101b484600454610a03565b6040519160008352602083015260408201526000606082015233907fd78ad95fa46c994b6551d0da85fc275fe613ce37657fb8d5e3d130840159d82260803392a36001600055005b60405162461bcd60e51b8152602060048201526011602482015270086dee6e8408aa89040e8dede40d0d2ced607b1b6044820152606490fd5b634e487b7160e01b600052601160045260246000fd5b5084151561010c565b60405162461bcd60e51b815260206004820152601a60248201527f494e53554646494349454e545f4f55545055545f414d4f554e540000000000006044820152606490fd5b6040516370a0823160e01b8152306004820152919350602082602481865afa91821561058b57600092610554575b5081039081116104a55760ff1990921660011760055583806103a8565b90916020823d602011610583575b8161056f602093836109be565b810103126105805750519085610537565b80fd5b3d9150610562565b6040513d6000823e3d90fd5b60405162461bcd60e51b815260206004820152601360248201527206f6e6c792031302c3030302c3030302c30303606c1b6044820152606490fd5b506020823d6020116105fe575b816105ec602093836109be565b810103126100c15761038e9151610384565b3d91506105df565b346100c15760003660031901126100c15760206aad6086c48495c238000000604051908152f35b346100c15760003660031901126100c1576040517f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03168152602090f35b346100c15760003660031901126100c1576001546040516001600160a01b039091168152602090f35b346100c15760003660031901126100c1576001546001600160a01b0316338190036107775760ff600554161561073b576002547f9101fb4cb96b608de64eae79af26fc5fbe69904c5e3b6108204eefd9212f4770916040916aad6086c48495c23800000091610715918391906001600160a01b0316610a9b565b600154479061072e9082906001600160a01b0316610b56565b82519182526020820152a1005b60405162461bcd60e51b815260206004820152601460248201527309ac2e4d6cae84086c2e040dcdee840e4cac2c6d60631b6044820152606490fd5b60405162461bcd60e51b81526020600482015260116024820152701b5a59dc985d1bdc881c995c5d5a5c9959607a1b6044820152606490fd5b346100c15760403660031901126100c1576004356001600160a01b038116908190036100c1576024356001600160a01b03811691908290036100c1577f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031633036108d257600654610897578015610863576bffffffffffffffffffffffff60a01b60025416176002556bffffffffffffffffffffffff60a01b60015416176001556001600655600080f35b60405162461bcd60e51b815260206004820152600c60248201526b7a65726f206164647265737360a01b6044820152606490fd5b60405162461bcd60e51b8152602060048201526013602482015272185b1c9958591e481a5b9a5d1a585b1a5e9959606a1b6044820152606490fd5b60405162461bcd60e51b81526020600482015260096024820152682327a92124a22222a760b91b6044820152606490fd5b346100c15760003660031901126100c15760206040516108308152f35b346100c15760003660031901126100c157602060ff600554166040519015158152f35b346100c15760003660031901126100c1576040906003546004549082526020820152f35b60409060031901126100c1576004359060243590565b1561098457565b60405162461bcd60e51b815260206004820152601260248201527113585c9ad95d0810d85c081c995858da195960721b6044820152606490fd5b90601f8019910116810190811067ffffffffffffffff8211176109e057604052565b634e487b7160e01b600052604160045260246000fd5b919082039182116104a557565b919082018092116104a557565b818102929181159184041417156104a557565b8115610a2d570490565b634e487b7160e01b600052601260045260246000fd5b3d15610a7e573d9067ffffffffffffffff82116109e05760405191610a72601f8201601f1916602001846109be565b82523d6000602084013e565b606090565b908160209103126100c1575180151581036100c15790565b6000929183809360405190602082019363a9059cbb60e01b855260018060a01b03166024830152604482015260448152610ad66064826109be565b51925af1610ae2610a43565b81610b27575b5015610af057565b60405162461bcd60e51b815260206004820152600f60248201526e1514905394d1915497d19052531151608a1b6044820152606490fd5b8051801592508215610b3c575b505038610ae8565b610b4f9250602080918301019101610a83565b3880610b34565b6000809160209360405190610b6b86836109be565b83825285820191601f19870136843751925af1610b86610a43565b5015610b8f5750565b6064906040519062461bcd60e51b82526004820152601360248201527211551217d514905394d1915497d19052531151606a1b6044820152fd5b600260005414610bda576002600055565b633ee5aeb560e01b60005260046000fd5b15610bf257565b60405162461bcd60e51b8152602060048201526016602482015275494e53554646494349454e545f4c495155494449545960501b6044820152606490fd5b6040907fcf2aa50876cdfbb541206f89af0ee78d44a2abf8d328e37fa4917f982149848a92816003558060045582519182526020820152a156fea2646970667358221220b2189e757048ddde8aa46feca95b2f19c2302dab6e11f33bf63d42c22dabb57464736f6c634300081c0033a26469706673582212200b3416dfa86d6da6a3b98b1a39b8bde21aacbc6e0837e9831178ddf81735cbbb64736f6c634300081c0033

Deployed Bytecode

0x6080604052600436101561001257600080fd5b60003560e01c806361f029fb1461005757806388876b2c14610052578063a1eeba1f1461004d5763ce159c9a1461004857600080fd5b61014d565b6100f2565b6100d4565b34610098576020366003190112610098576001600160a01b0361007861009d565b16600052600060205260018060a01b036040600020541660805260206080f35b600080fd5b600435906001600160a01b038216820361009857565b602435906001600160a01b038216820361009857565b600091031261009857565b34610098576000366003190112610098576020600154604051908152f35b34610098576020366003190112610098576004356001548110156100985760016000527fb10e2d527612073b26eecdfd717e6a320cf44b4afac2b0732d9fcbe2b7fa0cf601546040516001600160a01b039091168152602090f35b346100985760403660031901126100985761016661009d565b61016e6100b3565b6001600160a01b038216610183811515610350565b6101c76101c16101b56101a88660018060a01b03166000526000602052604060002090565b546001600160a01b031690565b6001600160a01b031690565b1561038b565b610cf06101d660208201610403565b9080825260208201906104a08239604051606086811b6bffffffffffffffffffffffff19908116602084019081529187901b166034830152602882529061021e6048826103dc565b5190209151906000f5916001600160a01b03831690813b156100985760405163485cc95560e01b81526001600160a01b03868116600483015282166024820152916000908390604490829084905af190811561034b576102e4856102c561032c987f5beb1a9316febdf79449530de709e3300ab301e2a47cf3ce7928a27e11ca9c1d9661030f96610330575b506001600160a01b0316600090815260208190526040902090565b80546001600160a01b0319166001600160a01b03909216919091179055565b6102ed8561041f565b604080516001600160a01b038088168252909216602083015290918291820190565b0390a26040516001600160a01b0390911681529081906020820190565b0390f35b8061033f6000610345936103dc565b806100c9565b386102aa565b610413565b1561035757565b60405162461bcd60e51b815260206004820152600c60248201526b7a65726f206164647265737360a01b6044820152606490fd5b1561039257565b60405162461bcd60e51b815260206004820152600c60248201526b63757276652065786973747360a01b6044820152606490fd5b634e487b7160e01b600052604160045260246000fd5b90601f8019910116810190811067ffffffffffffffff8211176103fe57604052565b6103c6565b9061041160405192836103dc565b565b6040513d6000823e3d90fd5b600154680100000000000000008110156103fe5760018101600155600060015482101561048b57600190527fb10e2d527612073b26eecdfd717e6a320cf44b4afac2b0732d9fcbe2b7fa0cf60180546001600160a01b0319166001600160a01b03909216919091179055565b634e487b7160e01b81526032600452602490fdfe60a08060405234604a5760016000556b037790a0e8714009b49c00006003556714d1120d7b16000060045533608052610ca09081610050823960805181818161064301526107ee0152f35b600080fdfe608080604052600436101561001357600080fd5b60003560e01c9081630902f1ac146109435750806325a6547a146109205780632c4e722e14610903578063485cc955146107b057806367b9a2861461069b5780637cd07e4714610672578063c45a01551461062d578063d548280414610606578063d6febde814610328578063d79875eb146100c65763fc0c546a1461009857600080fd5b346100c15760003660031901126100c1576002546040516001600160a01b039091168152602090f35b600080fd5b346100c1576100d436610967565b6100dc610bc9565b6100eb60ff600554161561097d565b6003546004549083156102e3576101218461011b61012794841515806102da575b61011590610beb565b82610a10565b92610a03565b90610a23565b9081106102a35747811161026d5760008060018060a01b03600254166040518260208201916323b872dd60e01b8352336024820152306044820152876064820152606481526101776084826109be565b51925af1610183610a43565b8161023e575b5015610202576101998133610b56565b6101ba6101a883600354610a03565b6101b4836004546109f6565b90610c30565b6040519182526000602083015260006040830152606082015233907fd78ad95fa46c994b6551d0da85fc275fe613ce37657fb8d5e3d130840159d82260803392a36001600055005b60405162461bcd60e51b81526020600482015260146024820152731514905394d1915497d19493d357d1905253115160621b6044820152606490fd5b8051801592508215610253575b505083610189565b6102669250602080918301019101610a83565b838061024b565b60405162461bcd60e51b815260206004820152600e60248201526d09cdee840cadcdeeaced0408aa8960931b6044820152606490fd5b60405162461bcd60e51b815260206004820152600f60248201526e4765742045544820746f6f206c6f7760881b6044820152606490fd5b5080151561010c565b60405162461bcd60e51b815260206004820152601960248201527f494e53554646494349454e545f494e5055545f414d4f554e54000000000000006044820152606490fd5b61033136610967565b9061033a610bc9565b8060055461034b60ff82161561097d565b6002546040516370a0823160e01b81523060048201526001600160a01b0390911692602082602481875afa801561058b576000906105d2575b61038e92506109f6565b8015610597576aad6086c48495c238000000809110610509575b505060045460035483156104c457610121846103d2846103d8951515806104bb5761011590610beb565b926109f6565b92600184018094116104a557831161046c57816103f6913390610a9b565b61040961040383346109f6565b33610b56565b610424610418826003546109f6565b6101b484600454610a03565b6040519160008352602083015260408201526000606082015233907fd78ad95fa46c994b6551d0da85fc275fe613ce37657fb8d5e3d130840159d82260803392a36001600055005b60405162461bcd60e51b8152602060048201526011602482015270086dee6e8408aa89040e8dede40d0d2ced607b1b6044820152606490fd5b634e487b7160e01b600052601160045260246000fd5b5084151561010c565b60405162461bcd60e51b815260206004820152601a60248201527f494e53554646494349454e545f4f55545055545f414d4f554e540000000000006044820152606490fd5b6040516370a0823160e01b8152306004820152919350602082602481865afa91821561058b57600092610554575b5081039081116104a55760ff1990921660011760055583806103a8565b90916020823d602011610583575b8161056f602093836109be565b810103126105805750519085610537565b80fd5b3d9150610562565b6040513d6000823e3d90fd5b60405162461bcd60e51b815260206004820152601360248201527206f6e6c792031302c3030302c3030302c30303606c1b6044820152606490fd5b506020823d6020116105fe575b816105ec602093836109be565b810103126100c15761038e9151610384565b3d91506105df565b346100c15760003660031901126100c15760206aad6086c48495c238000000604051908152f35b346100c15760003660031901126100c1576040517f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03168152602090f35b346100c15760003660031901126100c1576001546040516001600160a01b039091168152602090f35b346100c15760003660031901126100c1576001546001600160a01b0316338190036107775760ff600554161561073b576002547f9101fb4cb96b608de64eae79af26fc5fbe69904c5e3b6108204eefd9212f4770916040916aad6086c48495c23800000091610715918391906001600160a01b0316610a9b565b600154479061072e9082906001600160a01b0316610b56565b82519182526020820152a1005b60405162461bcd60e51b815260206004820152601460248201527309ac2e4d6cae84086c2e040dcdee840e4cac2c6d60631b6044820152606490fd5b60405162461bcd60e51b81526020600482015260116024820152701b5a59dc985d1bdc881c995c5d5a5c9959607a1b6044820152606490fd5b346100c15760403660031901126100c1576004356001600160a01b038116908190036100c1576024356001600160a01b03811691908290036100c1577f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031633036108d257600654610897578015610863576bffffffffffffffffffffffff60a01b60025416176002556bffffffffffffffffffffffff60a01b60015416176001556001600655600080f35b60405162461bcd60e51b815260206004820152600c60248201526b7a65726f206164647265737360a01b6044820152606490fd5b60405162461bcd60e51b8152602060048201526013602482015272185b1c9958591e481a5b9a5d1a585b1a5e9959606a1b6044820152606490fd5b60405162461bcd60e51b81526020600482015260096024820152682327a92124a22222a760b91b6044820152606490fd5b346100c15760003660031901126100c15760206040516108308152f35b346100c15760003660031901126100c157602060ff600554166040519015158152f35b346100c15760003660031901126100c1576040906003546004549082526020820152f35b60409060031901126100c1576004359060243590565b1561098457565b60405162461bcd60e51b815260206004820152601260248201527113585c9ad95d0810d85c081c995858da195960721b6044820152606490fd5b90601f8019910116810190811067ffffffffffffffff8211176109e057604052565b634e487b7160e01b600052604160045260246000fd5b919082039182116104a557565b919082018092116104a557565b818102929181159184041417156104a557565b8115610a2d570490565b634e487b7160e01b600052601260045260246000fd5b3d15610a7e573d9067ffffffffffffffff82116109e05760405191610a72601f8201601f1916602001846109be565b82523d6000602084013e565b606090565b908160209103126100c1575180151581036100c15790565b6000929183809360405190602082019363a9059cbb60e01b855260018060a01b03166024830152604482015260448152610ad66064826109be565b51925af1610ae2610a43565b81610b27575b5015610af057565b60405162461bcd60e51b815260206004820152600f60248201526e1514905394d1915497d19052531151608a1b6044820152606490fd5b8051801592508215610b3c575b505038610ae8565b610b4f9250602080918301019101610a83565b3880610b34565b6000809160209360405190610b6b86836109be565b83825285820191601f19870136843751925af1610b86610a43565b5015610b8f5750565b6064906040519062461bcd60e51b82526004820152601360248201527211551217d514905394d1915497d19052531151606a1b6044820152fd5b600260005414610bda576002600055565b633ee5aeb560e01b60005260046000fd5b15610bf257565b60405162461bcd60e51b8152602060048201526016602482015275494e53554646494349454e545f4c495155494449545960501b6044820152606490fd5b6040907fcf2aa50876cdfbb541206f89af0ee78d44a2abf8d328e37fa4917f982149848a92816003558060045582519182526020820152a156fea2646970667358221220b2189e757048ddde8aa46feca95b2f19c2302dab6e11f33bf63d42c22dabb57464736f6c634300081c0033a26469706673582212200b3416dfa86d6da6a3b98b1a39b8bde21aacbc6e0837e9831178ddf81735cbbb64736f6c634300081c0033

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.