ETH Price: $2,310.12 (+2.79%)
 

Overview

ETH Balance

Scroll LogoScroll LogoScroll Logo0 ETH

ETH Value

$0.00

More Info

Private Name Tags

Multichain Info

No addresses found
Transaction Hash
Method
Block
From
To
Init Owner830852023-10-17 16:36:24839 days ago1697560584IN
0x5a0C840a...e5a5006DE
0 ETH0.000101170.5

View more zero value Internal Transactions in Advanced View mode

Advanced mode:
Cross-Chain Transactions
Loading...
Loading

Contract Source Code Verified (Exact Match)

Contract Name:
DVMFactory

Compiler Version
v0.6.9+commit.3e3065ac

Optimization Enabled:
Yes with 200 runs

Other Settings:
istanbul EvmVersion
/*

    Copyright 2020 DODO ZOO.
    SPDX-License-Identifier: Apache-2.0

*/

pragma solidity 0.6.9;
pragma experimental ABIEncoderV2;

import {InitializableOwnable} from "../lib/InitializableOwnable.sol";
import {ICloneFactory} from "../lib/CloneFactory.sol";
import {IDVM} from "../DODOVendingMachine/intf/IDVM.sol";

interface IDVMFactory {
    function createDODOVendingMachine(
        address baseToken,
        address quoteToken,
        uint256 lpFeeRate,
        uint256 i,
        uint256 k,
        bool isOpenTWAP
    ) external returns (address newVendingMachine);
}


/**
 * @title DODO VendingMachine Factory
 * @author DODO Breeder
 *
 * @notice Create And Register DVM Pools 
 */
contract DVMFactory is InitializableOwnable {
    // ============ Templates ============

    address public immutable _CLONE_FACTORY_;
    address public immutable _DEFAULT_MT_FEE_RATE_MODEL_;
    address public _DEFAULT_MAINTAINER_;
    address public _DVM_TEMPLATE_;

    // ============ Registry ============

    // base -> quote -> DVM address list
    mapping(address => mapping(address => address[])) public _REGISTRY_;
    // creator -> DVM address list
    mapping(address => address[]) public _USER_REGISTRY_;

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

    event NewDVM(
        address baseToken,
        address quoteToken,
        address creator,
        address dvm
    );

    event RemoveDVM(address dvm);

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

    constructor(
        address cloneFactory,
        address dvmTemplate,
        address defaultMaintainer,
        address defaultMtFeeRateModel
    ) public {
        _CLONE_FACTORY_ = cloneFactory;
        _DVM_TEMPLATE_ = dvmTemplate;
        _DEFAULT_MAINTAINER_ = defaultMaintainer;
        _DEFAULT_MT_FEE_RATE_MODEL_ = defaultMtFeeRateModel;
    }

    function createDODOVendingMachine(
        address baseToken,
        address quoteToken,
        uint256 lpFeeRate,
        uint256 i,
        uint256 k,
        bool isOpenTWAP
    ) external returns (address newVendingMachine) {
        newVendingMachine = ICloneFactory(_CLONE_FACTORY_).clone(_DVM_TEMPLATE_);
        {
            IDVM(newVendingMachine).init(
                _DEFAULT_MAINTAINER_,
                baseToken,
                quoteToken,
                lpFeeRate,
                _DEFAULT_MT_FEE_RATE_MODEL_,
                i,
                k,
                isOpenTWAP
            );
        }
        _REGISTRY_[baseToken][quoteToken].push(newVendingMachine);
        _USER_REGISTRY_[tx.origin].push(newVendingMachine);
        emit NewDVM(baseToken, quoteToken, tx.origin, newVendingMachine);
    }

    // ============ Admin Operation Functions ============

    function updateDvmTemplate(address _newDVMTemplate) external onlyOwner {
        _DVM_TEMPLATE_ = _newDVMTemplate;
    }
    
    function updateDefaultMaintainer(address _newMaintainer) external onlyOwner {
        _DEFAULT_MAINTAINER_ = _newMaintainer;
    }

    function addPoolByAdmin(
        address creator,
        address baseToken, 
        address quoteToken,
        address pool
    ) external onlyOwner {
        _REGISTRY_[baseToken][quoteToken].push(pool);
        _USER_REGISTRY_[creator].push(pool);
        emit NewDVM(baseToken, quoteToken, creator, pool);
    }

    function removePoolByAdmin(
        address creator,
        address baseToken, 
        address quoteToken,
        address pool
    ) external onlyOwner {
        address[] memory registryList = _REGISTRY_[baseToken][quoteToken];
        for (uint256 i = 0; i < registryList.length; i++) {
            if (registryList[i] == pool) {
                registryList[i] = registryList[registryList.length - 1];
                break;
            }
        }
        _REGISTRY_[baseToken][quoteToken] = registryList;
        _REGISTRY_[baseToken][quoteToken].pop();
        address[] memory userRegistryList = _USER_REGISTRY_[creator];
        for (uint256 i = 0; i < userRegistryList.length; i++) {
            if (userRegistryList[i] == pool) {
                userRegistryList[i] = userRegistryList[userRegistryList.length - 1];
                break;
            }
        }
        _USER_REGISTRY_[creator] = userRegistryList;
        _USER_REGISTRY_[creator].pop();
        emit RemoveDVM(pool);
    }

    // ============ View Functions ============

    function getDODOPool(address baseToken, address quoteToken)
        external
        view
        returns (address[] memory machines)
    {
        return _REGISTRY_[baseToken][quoteToken];
    }

    function getDODOPoolBidirection(address token0, address token1)
        external
        view
        returns (address[] memory baseToken0Machines, address[] memory baseToken1Machines)
    {
        return (_REGISTRY_[token0][token1], _REGISTRY_[token1][token0]);
    }

    function getDODOPoolByUser(address user)
        external
        view
        returns (address[] memory machines)
    {
        return _USER_REGISTRY_[user];
    }
}

/*

    Copyright 2020 DODO ZOO.
    SPDX-License-Identifier: Apache-2.0

*/

pragma solidity 0.6.9;
pragma experimental ABIEncoderV2;

/**
 * @title Ownable
 * @author DODO Breeder
 *
 * @notice Ownership related functions
 */
contract InitializableOwnable {
    address public _OWNER_;
    address public _NEW_OWNER_;
    bool internal _INITIALIZED_;

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

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

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

    // ============ Modifiers ============

    modifier notInitialized() {
        require(!_INITIALIZED_, "DODO_INITIALIZED");
        _;
    }

    modifier onlyOwner() {
        require(msg.sender == _OWNER_, "NOT_OWNER");
        _;
    }

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

    function initOwner(address newOwner) public notInitialized {
        _INITIALIZED_ = true;
        _OWNER_ = newOwner;
    }

    function transferOwnership(address newOwner) public onlyOwner {
        emit OwnershipTransferPrepared(_OWNER_, newOwner);
        _NEW_OWNER_ = newOwner;
    }

    function claimOwnership() public {
        require(msg.sender == _NEW_OWNER_, "INVALID_CLAIM");
        emit OwnershipTransferred(_OWNER_, _NEW_OWNER_);
        _OWNER_ = _NEW_OWNER_;
        _NEW_OWNER_ = address(0);
    }
}

/*

    Copyright 2020 DODO ZOO.
    SPDX-License-Identifier: Apache-2.0

*/

pragma solidity 0.6.9;
pragma experimental ABIEncoderV2;

interface ICloneFactory {
    function clone(address prototype) external returns (address proxy);
}

// introduction of proxy mode design: https://docs.openzeppelin.com/upgrades/2.8/
// minimum implementation of transparent proxy: https://eips.ethereum.org/EIPS/eip-1167

contract CloneFactory is ICloneFactory {
    function clone(address prototype) external override returns (address proxy) {
        bytes20 targetBytes = bytes20(prototype);
        assembly {
            let clone := mload(0x40)
            mstore(clone, 0x3d602d80600a3d3981f3363d3d373d3d3d363d73000000000000000000000000)
            mstore(add(clone, 0x14), targetBytes)
            mstore(
                add(clone, 0x28),
                0x5af43d82803e903d91602b57fd5bf30000000000000000000000000000000000
            )
            proxy := create(0, clone, 0x37)
        }
        return proxy;
    }
}

/*

    Copyright 2020 DODO ZOO.
    SPDX-License-Identifier: Apache-2.0

*/

pragma solidity 0.6.9;
pragma experimental ABIEncoderV2;

interface IDVM {
    function init(
        address maintainer,
        address baseTokenAddress,
        address quoteTokenAddress,
        uint256 lpFeeRate,
        address mtFeeRateModel,
        uint256 i,
        uint256 k,
        bool isOpenTWAP
    ) external;

    function _BASE_TOKEN_() external returns (address);

    function _QUOTE_TOKEN_() external returns (address);

    function _MT_FEE_RATE_MODEL_() external returns (address);

    function getVaultReserve() external returns (uint256 baseReserve, uint256 quoteReserve);

    function sellBase(address to) external returns (uint256);

    function sellQuote(address to) external returns (uint256);

    function buyShares(address to) external returns (uint256,uint256,uint256);

    function addressToShortString(address _addr) external pure returns (string memory);

    function getMidPrice() external view returns (uint256 midPrice);

    function sellShares(
        uint256 shareAmount,
        address to,
        uint256 baseMinAmount,
        uint256 quoteMinAmount,
        bytes calldata data,
        uint256 deadline
    ) external  returns (uint256 baseAmount, uint256 quoteAmount);

}

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

Contract Security Audit

Contract ABI

API
[{"inputs":[{"internalType":"address","name":"cloneFactory","type":"address"},{"internalType":"address","name":"dvmTemplate","type":"address"},{"internalType":"address","name":"defaultMaintainer","type":"address"},{"internalType":"address","name":"defaultMtFeeRateModel","type":"address"}],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"baseToken","type":"address"},{"indexed":false,"internalType":"address","name":"quoteToken","type":"address"},{"indexed":false,"internalType":"address","name":"creator","type":"address"},{"indexed":false,"internalType":"address","name":"dvm","type":"address"}],"name":"NewDVM","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferPrepared","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"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"dvm","type":"address"}],"name":"RemoveDVM","type":"event"},{"inputs":[],"name":"_CLONE_FACTORY_","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_DEFAULT_MAINTAINER_","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_DEFAULT_MT_FEE_RATE_MODEL_","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_DVM_TEMPLATE_","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_NEW_OWNER_","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_OWNER_","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"},{"internalType":"address","name":"","type":"address"},{"internalType":"uint256","name":"","type":"uint256"}],"name":"_REGISTRY_","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"},{"internalType":"uint256","name":"","type":"uint256"}],"name":"_USER_REGISTRY_","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"creator","type":"address"},{"internalType":"address","name":"baseToken","type":"address"},{"internalType":"address","name":"quoteToken","type":"address"},{"internalType":"address","name":"pool","type":"address"}],"name":"addPoolByAdmin","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"claimOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"baseToken","type":"address"},{"internalType":"address","name":"quoteToken","type":"address"},{"internalType":"uint256","name":"lpFeeRate","type":"uint256"},{"internalType":"uint256","name":"i","type":"uint256"},{"internalType":"uint256","name":"k","type":"uint256"},{"internalType":"bool","name":"isOpenTWAP","type":"bool"}],"name":"createDODOVendingMachine","outputs":[{"internalType":"address","name":"newVendingMachine","type":"address"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"baseToken","type":"address"},{"internalType":"address","name":"quoteToken","type":"address"}],"name":"getDODOPool","outputs":[{"internalType":"address[]","name":"machines","type":"address[]"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"token0","type":"address"},{"internalType":"address","name":"token1","type":"address"}],"name":"getDODOPoolBidirection","outputs":[{"internalType":"address[]","name":"baseToken0Machines","type":"address[]"},{"internalType":"address[]","name":"baseToken1Machines","type":"address[]"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"user","type":"address"}],"name":"getDODOPoolByUser","outputs":[{"internalType":"address[]","name":"machines","type":"address[]"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"initOwner","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"creator","type":"address"},{"internalType":"address","name":"baseToken","type":"address"},{"internalType":"address","name":"quoteToken","type":"address"},{"internalType":"address","name":"pool","type":"address"}],"name":"removePoolByAdmin","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_newMaintainer","type":"address"}],"name":"updateDefaultMaintainer","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_newDVMTemplate","type":"address"}],"name":"updateDvmTemplate","outputs":[],"stateMutability":"nonpayable","type":"function"}]

60c06040523480156200001157600080fd5b50604051620012da380380620012da8339810160408190526200003491620000a1565b6001600160601b0319606094851b8116608052600380546001600160a01b039586166001600160a01b0319918216179091556002805494909516931692909217909255911b1660a05262000101565b80516001600160a01b03811681146200009b57600080fd5b92915050565b60008060008060808587031215620000b7578384fd5b620000c3868662000083565b9350620000d4866020870162000083565b9250620000e5866040870162000083565b9150620000f6866060870162000083565b905092959194509250565b60805160601c60a05160601c6111a562000135600039806108405280610b6e525080610ab35280610cfb52506111a56000f3fe608060405234801561001057600080fd5b50600436106101215760003560e01c80638456db15116100ad578063d99b8ad411610071578063d99b8ad414610221578063e18c40c714610234578063e65f702914610247578063eb774d051461025a578063f2fde38b1461026257610121565b80638456db15146101d85780639e988ee3146101e0578063a58888db146101f3578063bdeb0a9114610206578063ccf0c0591461021957610121565b80634e71e0c8116100f45780634e71e0c81461017f57806357a281dc146101875780636c5ccb9b146101a7578063794e5538146101af57806381ab4d0a146101d057610121565b80630d0092971461012657806316048bc41461013b57806339d00ef91461015957806343274b821461016c575b600080fd5b610139610134366004610e2e565b610275565b005b6101436102de565b6040516101509190611018565b60405180910390f35b610139610167366004610ea5565b6102ed565b61013961017a366004610ea5565b6103ca565b61013961072d565b61019a610195366004610e6d565b6107bb565b60405161015091906110a2565b61014361083e565b6101c26101bd366004610e6d565b610862565b6040516101509291906110b5565b61014361095a565b610143610969565b6101396101ee366004610e2e565b610978565b610143610201366004610faa565b6109c4565b610143610214366004610f00565b6109f9565b610143610a3b565b61013961022f366004610e2e565b610a4a565b610143610242366004610f40565b610a96565b61019a610255366004610e2e565b610c83565b610143610cf9565b610139610270366004610e2e565b610d1d565b600154600160a01b900460ff16156102a85760405162461bcd60e51b815260040161029f9061110a565b60405180910390fd5b6001805460ff60a01b1916600160a01b179055600080546001600160a01b039092166001600160a01b0319909216919091179055565b6000546001600160a01b031681565b6000546001600160a01b031633146103175760405162461bcd60e51b815260040161029f90611134565b6001600160a01b038084166000908152600460209081526040808320868516845282528083208054600181810183559185528385200180548787166001600160a01b03199182168117909255958a1685526005845282852080549283018155855292909320909201805490931617909155517faf5c5f12a80fc937520df6fcaed66262a4cc775e0f3fceaf7a7cfe476d9a751d906103bc90859085908890869061102c565b60405180910390a150505050565b6000546001600160a01b031633146103f45760405162461bcd60e51b815260040161029f90611134565b6001600160a01b03808416600090815260046020908152604080832093861683529281529082902080548351818402810184019094528084526060939283018282801561046a57602002820191906000526020600020905b81546001600160a01b0316815260019091019060200180831161044c575b50939450600093505050505b81518110156104fd57826001600160a01b031682828151811061049557fe5b60200260200101516001600160a01b031614156104f557816001835103815181106104bc57fe5b60200260200101518282815181106104d057fe5b60200260200101906001600160a01b031690816001600160a01b0316815250506104fd565b600101610476565b506001600160a01b0380851660009081526004602090815260408083209387168352928152919020825161053392840190610da2565b506001600160a01b03808516600090815260046020908152604080832093871683529290522080548061056257fe5b60008281526020808220830160001990810180546001600160a01b03191690559092019092556001600160a01b0387168252600581526040918290208054835181840281018401909452808452606093928301828280156105ec57602002820191906000526020600020905b81546001600160a01b031681526001909101906020018083116105ce575b50939450600093505050505b815181101561067f57836001600160a01b031682828151811061061757fe5b60200260200101516001600160a01b03161415610677578160018351038151811061063e57fe5b602002602001015182828151811061065257fe5b60200260200101906001600160a01b031690816001600160a01b03168152505061067f565b6001016105f8565b506001600160a01b038616600090815260056020908152604090912082516106a992840190610da2565b506001600160a01b03861660009081526005602052604090208054806106cb57fe5b600082815260209020810160001990810180546001600160a01b03191690550190556040517f63971a172c674ce2e9da5e027e9e81a54fd3aa74a2c246a2eb473dc0aa7f5cdd9061071d908590611018565b60405180910390a1505050505050565b6001546001600160a01b031633146107575760405162461bcd60e51b815260040161029f906110e3565b600154600080546040516001600160a01b0393841693909116917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a360018054600080546001600160a01b03199081166001600160a01b03841617909155169055565b6001600160a01b03808316600090815260046020908152604080832093851683529281529082902080548351818402810184019094528084526060939283018282801561083157602002820191906000526020600020905b81546001600160a01b03168152600190910190602001808311610813575b5050505050905092915050565b7f000000000000000000000000000000000000000000000000000000000000000081565b6001600160a01b03808316600081815260046020818152604080842095871684529481528483209181528483209383529283529083902081548451818502810185019095528085526060948594909184918301828280156108ec57602002820191906000526020600020905b81546001600160a01b031681526001909101906020018083116108ce575b505050505091508080548060200260200160405190810160405280929190818152602001828054801561094857602002820191906000526020600020905b81546001600160a01b0316815260019091019060200180831161092a575b50505050509050915091509250929050565b6002546001600160a01b031681565b6001546001600160a01b031681565b6000546001600160a01b031633146109a25760405162461bcd60e51b815260040161029f90611134565b600280546001600160a01b0319166001600160a01b0392909216919091179055565b600560205281600052604060002081815481106109dd57fe5b6000918252602090912001546001600160a01b03169150829050565b60046020528260005260406000206020528160005260406000208181548110610a1e57fe5b6000918252602090912001546001600160a01b0316925083915050565b6003546001600160a01b031681565b6000546001600160a01b03163314610a745760405162461bcd60e51b815260040161029f90611134565b600380546001600160a01b0319166001600160a01b0392909216919091179055565b6003546040516340925bc760e11b81526000916001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000811692638124b78e92610ae9921690600401611018565b602060405180830381600087803b158015610b0357600080fd5b505af1158015610b17573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b3b9190610e51565b60025460405163281ccb9560e11b81529192506001600160a01b0380841692635039972a92610b9c9216908b908b908b907f0000000000000000000000000000000000000000000000000000000000000000908c908c908c90600401611057565b600060405180830381600087803b158015610bb657600080fd5b505af1158015610bca573d6000803e3d6000fd5b5050506001600160a01b0380891660009081526004602090815260408083208b8516845282528083208054600181810183559185528385200180549588166001600160a01b03199687168117909155328086526005855283862080549384018155865293909420018054909416909217909255517faf5c5f12a80fc937520df6fcaed66262a4cc775e0f3fceaf7a7cfe476d9a751d9250610c71918a918a9190869061102c565b60405180910390a19695505050505050565b6001600160a01b038116600090815260056020908152604091829020805483518184028101840190945280845260609392830182828015610ced57602002820191906000526020600020905b81546001600160a01b03168152600190910190602001808311610ccf575b50505050509050919050565b7f000000000000000000000000000000000000000000000000000000000000000081565b6000546001600160a01b03163314610d475760405162461bcd60e51b815260040161029f90611134565b600080546040516001600160a01b03808516939216917fdcf55418cee3220104fef63f979ff3c4097ad240c0c43dcb33ce837748983e6291a3600180546001600160a01b0319166001600160a01b0392909216919091179055565b828054828255906000526020600020908101928215610df7579160200282015b82811115610df757825182546001600160a01b0319166001600160a01b03909116178255602090920191600190910190610dc2565b50610e03929150610e07565b5090565b610e2b91905b80821115610e035780546001600160a01b0319168155600101610e0d565b90565b600060208284031215610e3f578081fd5b8135610e4a81611157565b9392505050565b600060208284031215610e62578081fd5b8151610e4a81611157565b60008060408385031215610e7f578081fd5b8235610e8a81611157565b91506020830135610e9a81611157565b809150509250929050565b60008060008060808587031215610eba578182fd5b8435610ec581611157565b93506020850135610ed581611157565b92506040850135610ee581611157565b91506060850135610ef581611157565b939692955090935050565b600080600060608486031215610f14578283fd5b8335610f1f81611157565b92506020840135610f2f81611157565b929592945050506040919091013590565b60008060008060008060c08789031215610f58578182fd5b8635610f6381611157565b95506020870135610f7381611157565b945060408701359350606087013592506080870135915060a08701358015158114610f9c578182fd5b809150509295509295509295565b60008060408385031215610fbc578182fd5b8235610fc781611157565b946020939093013593505050565b6000815180845260208085019450808401835b8381101561100d5781516001600160a01b031687529582019590820190600101610fe8565b509495945050505050565b6001600160a01b0391909116815260200190565b6001600160a01b03948516815292841660208401529083166040830152909116606082015260800190565b6001600160a01b0398891681529688166020880152948716604087015260608601939093529416608084015260a083019390935260c082019290925290151560e08201526101000190565b600060208252610e4a6020830184610fd5565b6000604082526110c86040830185610fd5565b82810360208401526110da8185610fd5565b95945050505050565b6020808252600d908201526c494e56414c49445f434c41494d60981b604082015260600190565b60208082526010908201526f1113d113d7d25392551250531256915160821b604082015260600190565b6020808252600990820152682727aa2fa7aba722a960b91b604082015260600190565b6001600160a01b038116811461116c57600080fd5b5056fea2646970667358221220549dde3885fccab9b36e4775843b95efb9962965f47394dfa6c8d4bc0e2ef77364736f6c63430006090033000000000000000000000000628e5081ba93b1c4f58e54e7175088b1ace588520000000000000000000000001fc8ec204549c865a17b4059a57deca66a4bd4cc000000000000000000000000a7b9c3a116b20bedddbe4d90ff97157f67f0bd970000000000000000000000007b07164ecfaf0f0d85dfc062bc205a4674c75aa0

Deployed Bytecode

0x608060405234801561001057600080fd5b50600436106101215760003560e01c80638456db15116100ad578063d99b8ad411610071578063d99b8ad414610221578063e18c40c714610234578063e65f702914610247578063eb774d051461025a578063f2fde38b1461026257610121565b80638456db15146101d85780639e988ee3146101e0578063a58888db146101f3578063bdeb0a9114610206578063ccf0c0591461021957610121565b80634e71e0c8116100f45780634e71e0c81461017f57806357a281dc146101875780636c5ccb9b146101a7578063794e5538146101af57806381ab4d0a146101d057610121565b80630d0092971461012657806316048bc41461013b57806339d00ef91461015957806343274b821461016c575b600080fd5b610139610134366004610e2e565b610275565b005b6101436102de565b6040516101509190611018565b60405180910390f35b610139610167366004610ea5565b6102ed565b61013961017a366004610ea5565b6103ca565b61013961072d565b61019a610195366004610e6d565b6107bb565b60405161015091906110a2565b61014361083e565b6101c26101bd366004610e6d565b610862565b6040516101509291906110b5565b61014361095a565b610143610969565b6101396101ee366004610e2e565b610978565b610143610201366004610faa565b6109c4565b610143610214366004610f00565b6109f9565b610143610a3b565b61013961022f366004610e2e565b610a4a565b610143610242366004610f40565b610a96565b61019a610255366004610e2e565b610c83565b610143610cf9565b610139610270366004610e2e565b610d1d565b600154600160a01b900460ff16156102a85760405162461bcd60e51b815260040161029f9061110a565b60405180910390fd5b6001805460ff60a01b1916600160a01b179055600080546001600160a01b039092166001600160a01b0319909216919091179055565b6000546001600160a01b031681565b6000546001600160a01b031633146103175760405162461bcd60e51b815260040161029f90611134565b6001600160a01b038084166000908152600460209081526040808320868516845282528083208054600181810183559185528385200180548787166001600160a01b03199182168117909255958a1685526005845282852080549283018155855292909320909201805490931617909155517faf5c5f12a80fc937520df6fcaed66262a4cc775e0f3fceaf7a7cfe476d9a751d906103bc90859085908890869061102c565b60405180910390a150505050565b6000546001600160a01b031633146103f45760405162461bcd60e51b815260040161029f90611134565b6001600160a01b03808416600090815260046020908152604080832093861683529281529082902080548351818402810184019094528084526060939283018282801561046a57602002820191906000526020600020905b81546001600160a01b0316815260019091019060200180831161044c575b50939450600093505050505b81518110156104fd57826001600160a01b031682828151811061049557fe5b60200260200101516001600160a01b031614156104f557816001835103815181106104bc57fe5b60200260200101518282815181106104d057fe5b60200260200101906001600160a01b031690816001600160a01b0316815250506104fd565b600101610476565b506001600160a01b0380851660009081526004602090815260408083209387168352928152919020825161053392840190610da2565b506001600160a01b03808516600090815260046020908152604080832093871683529290522080548061056257fe5b60008281526020808220830160001990810180546001600160a01b03191690559092019092556001600160a01b0387168252600581526040918290208054835181840281018401909452808452606093928301828280156105ec57602002820191906000526020600020905b81546001600160a01b031681526001909101906020018083116105ce575b50939450600093505050505b815181101561067f57836001600160a01b031682828151811061061757fe5b60200260200101516001600160a01b03161415610677578160018351038151811061063e57fe5b602002602001015182828151811061065257fe5b60200260200101906001600160a01b031690816001600160a01b03168152505061067f565b6001016105f8565b506001600160a01b038616600090815260056020908152604090912082516106a992840190610da2565b506001600160a01b03861660009081526005602052604090208054806106cb57fe5b600082815260209020810160001990810180546001600160a01b03191690550190556040517f63971a172c674ce2e9da5e027e9e81a54fd3aa74a2c246a2eb473dc0aa7f5cdd9061071d908590611018565b60405180910390a1505050505050565b6001546001600160a01b031633146107575760405162461bcd60e51b815260040161029f906110e3565b600154600080546040516001600160a01b0393841693909116917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a360018054600080546001600160a01b03199081166001600160a01b03841617909155169055565b6001600160a01b03808316600090815260046020908152604080832093851683529281529082902080548351818402810184019094528084526060939283018282801561083157602002820191906000526020600020905b81546001600160a01b03168152600190910190602001808311610813575b5050505050905092915050565b7f0000000000000000000000007b07164ecfaf0f0d85dfc062bc205a4674c75aa081565b6001600160a01b03808316600081815260046020818152604080842095871684529481528483209181528483209383529283529083902081548451818502810185019095528085526060948594909184918301828280156108ec57602002820191906000526020600020905b81546001600160a01b031681526001909101906020018083116108ce575b505050505091508080548060200260200160405190810160405280929190818152602001828054801561094857602002820191906000526020600020905b81546001600160a01b0316815260019091019060200180831161092a575b50505050509050915091509250929050565b6002546001600160a01b031681565b6001546001600160a01b031681565b6000546001600160a01b031633146109a25760405162461bcd60e51b815260040161029f90611134565b600280546001600160a01b0319166001600160a01b0392909216919091179055565b600560205281600052604060002081815481106109dd57fe5b6000918252602090912001546001600160a01b03169150829050565b60046020528260005260406000206020528160005260406000208181548110610a1e57fe5b6000918252602090912001546001600160a01b0316925083915050565b6003546001600160a01b031681565b6000546001600160a01b03163314610a745760405162461bcd60e51b815260040161029f90611134565b600380546001600160a01b0319166001600160a01b0392909216919091179055565b6003546040516340925bc760e11b81526000916001600160a01b037f000000000000000000000000628e5081ba93b1c4f58e54e7175088b1ace58852811692638124b78e92610ae9921690600401611018565b602060405180830381600087803b158015610b0357600080fd5b505af1158015610b17573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b3b9190610e51565b60025460405163281ccb9560e11b81529192506001600160a01b0380841692635039972a92610b9c9216908b908b908b907f0000000000000000000000007b07164ecfaf0f0d85dfc062bc205a4674c75aa0908c908c908c90600401611057565b600060405180830381600087803b158015610bb657600080fd5b505af1158015610bca573d6000803e3d6000fd5b5050506001600160a01b0380891660009081526004602090815260408083208b8516845282528083208054600181810183559185528385200180549588166001600160a01b03199687168117909155328086526005855283862080549384018155865293909420018054909416909217909255517faf5c5f12a80fc937520df6fcaed66262a4cc775e0f3fceaf7a7cfe476d9a751d9250610c71918a918a9190869061102c565b60405180910390a19695505050505050565b6001600160a01b038116600090815260056020908152604091829020805483518184028101840190945280845260609392830182828015610ced57602002820191906000526020600020905b81546001600160a01b03168152600190910190602001808311610ccf575b50505050509050919050565b7f000000000000000000000000628e5081ba93b1c4f58e54e7175088b1ace5885281565b6000546001600160a01b03163314610d475760405162461bcd60e51b815260040161029f90611134565b600080546040516001600160a01b03808516939216917fdcf55418cee3220104fef63f979ff3c4097ad240c0c43dcb33ce837748983e6291a3600180546001600160a01b0319166001600160a01b0392909216919091179055565b828054828255906000526020600020908101928215610df7579160200282015b82811115610df757825182546001600160a01b0319166001600160a01b03909116178255602090920191600190910190610dc2565b50610e03929150610e07565b5090565b610e2b91905b80821115610e035780546001600160a01b0319168155600101610e0d565b90565b600060208284031215610e3f578081fd5b8135610e4a81611157565b9392505050565b600060208284031215610e62578081fd5b8151610e4a81611157565b60008060408385031215610e7f578081fd5b8235610e8a81611157565b91506020830135610e9a81611157565b809150509250929050565b60008060008060808587031215610eba578182fd5b8435610ec581611157565b93506020850135610ed581611157565b92506040850135610ee581611157565b91506060850135610ef581611157565b939692955090935050565b600080600060608486031215610f14578283fd5b8335610f1f81611157565b92506020840135610f2f81611157565b929592945050506040919091013590565b60008060008060008060c08789031215610f58578182fd5b8635610f6381611157565b95506020870135610f7381611157565b945060408701359350606087013592506080870135915060a08701358015158114610f9c578182fd5b809150509295509295509295565b60008060408385031215610fbc578182fd5b8235610fc781611157565b946020939093013593505050565b6000815180845260208085019450808401835b8381101561100d5781516001600160a01b031687529582019590820190600101610fe8565b509495945050505050565b6001600160a01b0391909116815260200190565b6001600160a01b03948516815292841660208401529083166040830152909116606082015260800190565b6001600160a01b0398891681529688166020880152948716604087015260608601939093529416608084015260a083019390935260c082019290925290151560e08201526101000190565b600060208252610e4a6020830184610fd5565b6000604082526110c86040830185610fd5565b82810360208401526110da8185610fd5565b95945050505050565b6020808252600d908201526c494e56414c49445f434c41494d60981b604082015260600190565b60208082526010908201526f1113d113d7d25392551250531256915160821b604082015260600190565b6020808252600990820152682727aa2fa7aba722a960b91b604082015260600190565b6001600160a01b038116811461116c57600080fd5b5056fea2646970667358221220549dde3885fccab9b36e4775843b95efb9962965f47394dfa6c8d4bc0e2ef77364736f6c63430006090033

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

000000000000000000000000628e5081ba93b1c4f58e54e7175088b1ace588520000000000000000000000001fc8ec204549c865a17b4059a57deca66a4bd4cc000000000000000000000000a7b9c3a116b20bedddbe4d90ff97157f67f0bd970000000000000000000000007b07164ecfaf0f0d85dfc062bc205a4674c75aa0

-----Decoded View---------------
Arg [0] : cloneFactory (address): 0x628E5081bA93b1c4F58E54e7175088B1ACe58852
Arg [1] : dvmTemplate (address): 0x1fC8EC204549C865a17b4059A57decA66A4Bd4cC
Arg [2] : defaultMaintainer (address): 0xa7b9C3a116b20bEDDdBE4d90ff97157f67F0bD97
Arg [3] : defaultMtFeeRateModel (address): 0x7B07164ecFaF0F0D85DFC062Bc205a4674c75Aa0

-----Encoded View---------------
4 Constructor Arguments found :
Arg [0] : 000000000000000000000000628e5081ba93b1c4f58e54e7175088b1ace58852
Arg [1] : 0000000000000000000000001fc8ec204549c865a17b4059a57deca66a4bd4cc
Arg [2] : 000000000000000000000000a7b9c3a116b20bedddbe4d90ff97157f67f0bd97
Arg [3] : 0000000000000000000000007b07164ecfaf0f0d85dfc062bc205a4674c75aa0


Block Transaction Gas Used Reward
view all blocks sequenced

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

Validator Index Block Amount
View All Withdrawals

Transaction Hash Block Value Eth2 PubKey Valid
View All Deposits
Loading...
Loading
[ Download: CSV Export  ]

A contract address hosts a smart contract, which is a set of code stored on the blockchain that runs when predetermined conditions are met. Learn more about addresses in our Knowledge Base.