Overview
ETH Balance
0 ETH
Eth Value
$0.00Token Holdings
More Info
Private Name Tags
ContractCreator
Latest 25 from a total of 35,783 transactions
Transaction Hash |
Method
|
Block
|
From
|
To
|
|||||
---|---|---|---|---|---|---|---|---|---|
Register | 20451879 | 141 days ago | IN | 0 ETH | 0.00004818 | ||||
Register | 20395892 | 149 days ago | IN | 0 ETH | 0.00036223 | ||||
Register | 20395891 | 149 days ago | IN | 0 ETH | 0.00003622 | ||||
Register | 17038630 | 619 days ago | IN | 0 ETH | 0.00987077 | ||||
Register | 17029768 | 621 days ago | IN | 0 ETH | 0.00690271 | ||||
Register | 17029002 | 621 days ago | IN | 0 ETH | 0.00665533 | ||||
Register | 17027497 | 621 days ago | IN | 0 ETH | 0.0069056 | ||||
Register | 17020680 | 622 days ago | IN | 0 ETH | 0.0061738 | ||||
Register | 17012846 | 623 days ago | IN | 0 ETH | 0.00612537 | ||||
Register | 17012708 | 623 days ago | IN | 0 ETH | 0.00524476 | ||||
Register | 17008765 | 624 days ago | IN | 0 ETH | 0.00610524 | ||||
Register | 17007641 | 624 days ago | IN | 0 ETH | 0.00498659 | ||||
Register | 17007472 | 624 days ago | IN | 0 ETH | 0.00543794 | ||||
Register | 17007362 | 624 days ago | IN | 0 ETH | 0.00672768 | ||||
Register | 17007354 | 624 days ago | IN | 0 ETH | 0.00497751 | ||||
Register | 17007248 | 624 days ago | IN | 0 ETH | 0.0060453 | ||||
Register | 17007075 | 624 days ago | IN | 0 ETH | 0.00521385 | ||||
Register | 17007059 | 624 days ago | IN | 0 ETH | 0.00621385 | ||||
Register | 17006996 | 624 days ago | IN | 0 ETH | 0.00499799 | ||||
Register | 17006976 | 624 days ago | IN | 0 ETH | 0.00601342 | ||||
Register | 16999879 | 625 days ago | IN | 0 ETH | 0.00570519 | ||||
Register | 16997701 | 625 days ago | IN | 0 ETH | 0.0085321 | ||||
Register | 16994803 | 626 days ago | IN | 0 ETH | 0.00597426 | ||||
Register | 16987023 | 627 days ago | IN | 0 ETH | 0.00851671 | ||||
Register | 16986905 | 627 days ago | IN | 0 ETH | 0.00934088 |
View more zero value Internal Transactions in Advanced View mode
Advanced mode:
Loading...
Loading
Contract Name:
DCLController
Compiler Version
v0.5.15+commit.6a57276f
Contract Source Code (Solidity)
/** *Submitted for verification at Etherscan.io on 2020-02-04 */ // File: openzeppelin-solidity/contracts/GSN/Context.sol pragma solidity ^0.5.0; /* * @dev Provides information about the current execution context, including the * sender of the transaction and its data. While these are generally available * via msg.sender and msg.data, they should not be accessed in such a direct * manner, since when dealing with GSN meta-transactions the account sending and * paying for execution may not be the actual sender (as far as an application * is concerned). * * This contract is only required for intermediate, library-like contracts. */ contract Context { // Empty internal constructor, to prevent people from mistakenly deploying // an instance of this contract, which should be used via inheritance. constructor () internal { } // solhint-disable-previous-line no-empty-blocks function _msgSender() internal view returns (address payable) { return msg.sender; } function _msgData() internal view returns (bytes memory) { this; // silence state mutability warning without generating bytecode - see https://github.com/ethereum/solidity/issues/2691 return msg.data; } } // File: openzeppelin-solidity/contracts/ownership/Ownable.sol pragma solidity ^0.5.0; /** * @dev Contract module which provides a basic access control mechanism, where * there is an account (an owner) that can be granted exclusive access to * specific functions. * * This module is used through inheritance. It will make available the modifier * `onlyOwner`, which can be applied to your functions to restrict their use to * the owner. */ contract Ownable is Context { address private _owner; event OwnershipTransferred(address indexed previousOwner, address indexed newOwner); /** * @dev Initializes the contract setting the deployer as the initial owner. */ constructor () internal { _owner = _msgSender(); emit OwnershipTransferred(address(0), _owner); } /** * @dev Returns the address of the current owner. */ function owner() public view returns (address) { return _owner; } /** * @dev Throws if called by any account other than the owner. */ modifier onlyOwner() { require(isOwner(), "Ownable: caller is not the owner"); _; } /** * @dev Returns true if the caller is the current owner. */ function isOwner() public view returns (bool) { return _msgSender() == _owner; } /** * @dev Leaves the contract without owner. It will not be possible to call * `onlyOwner` functions anymore. Can only be called by the current owner. * * NOTE: Renouncing ownership will leave the contract without an owner, * thereby removing any functionality that is only available to the owner. */ function renounceOwnership() public onlyOwner { emit OwnershipTransferred(_owner, address(0)); _owner = address(0); } /** * @dev Transfers ownership of the contract to a new account (`newOwner`). * Can only be called by the current owner. */ function transferOwnership(address newOwner) public onlyOwner { _transferOwnership(newOwner); } /** * @dev Transfers ownership of the contract to a new account (`newOwner`). */ function _transferOwnership(address newOwner) internal { require(newOwner != address(0), "Ownable: new owner is the zero address"); emit OwnershipTransferred(_owner, newOwner); _owner = newOwner; } } // File: openzeppelin-solidity/contracts/utils/Address.sol pragma solidity ^0.5.5; /** * @dev Collection of functions related to the address type */ library Address { /** * @dev Returns true if `account` is a contract. * * This test is non-exhaustive, and there may be false-negatives: during the * execution of a contract's constructor, its address will be reported as * not containing a contract. * * IMPORTANT: It is unsafe to assume that an address for which this * function returns false is an externally-owned account (EOA) and not a * contract. */ function isContract(address account) internal view returns (bool) { // This method relies in extcodesize, which returns 0 for contracts in // construction, since the code is only stored at the end of the // constructor execution. // According to EIP-1052, 0x0 is the value returned for not-yet created accounts // and 0xc5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470 is returned // for accounts without code, i.e. `keccak256('')` bytes32 codehash; bytes32 accountHash = 0xc5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470; // solhint-disable-next-line no-inline-assembly assembly { codehash := extcodehash(account) } return (codehash != 0x0 && codehash != accountHash); } /** * @dev Converts an `address` into `address payable`. Note that this is * simply a type cast: the actual underlying value is not changed. * * _Available since v2.4.0._ */ function toPayable(address account) internal pure returns (address payable) { return address(uint160(account)); } /** * @dev Replacement for Solidity's `transfer`: sends `amount` wei to * `recipient`, forwarding all available gas and reverting on errors. * * https://eips.ethereum.org/EIPS/eip-1884[EIP1884] increases the gas cost * of certain opcodes, possibly making contracts go over the 2300 gas limit * imposed by `transfer`, making them unable to receive funds via * `transfer`. {sendValue} removes this limitation. * * https://diligence.consensys.net/posts/2019/09/stop-using-soliditys-transfer-now/[Learn more]. * * IMPORTANT: because control is transferred to `recipient`, care must be * taken to not create reentrancy vulnerabilities. Consider using * {ReentrancyGuard} or the * https://solidity.readthedocs.io/en/v0.5.11/security-considerations.html#use-the-checks-effects-interactions-pattern[checks-effects-interactions pattern]. * * _Available since v2.4.0._ */ function sendValue(address payable recipient, uint256 amount) internal { require(address(this).balance >= amount, "Address: insufficient balance"); // solhint-disable-next-line avoid-call-value (bool success, ) = recipient.call.value(amount)(""); require(success, "Address: unable to send value, recipient may have reverted"); } } // File: contracts/interfaces/IENSRegistry.sol pragma solidity ^0.5.15; /** * @title EnsRegistry * @dev Extract of the interface for ENS Registry */ contract IENSRegistry { function setOwner(bytes32 node, address owner) public; function setSubnodeOwner(bytes32 node, bytes32 label, address owner) public; function setResolver(bytes32 node, address resolver) public; function owner(bytes32 node) public view returns (address); function resolver(bytes32 node) public view returns (address); } // File: contracts/interfaces/IDCLRegistrar.sol pragma solidity ^0.5.15; contract IDCLRegistrar { /** * @dev Allows to create a subdomain (e.g. "nacho.dcl.eth"), set its resolver, owner and target address * @param _subdomain - subdomain (e.g. "nacho") * @param _beneficiary - address that will become owner of this new subdomain */ function register(string calldata _subdomain, address _beneficiary) external; /** * @dev Re-claim the ownership of a subdomain (e.g. "nacho"). * @notice After a subdomain is transferred by this contract, the owner in the ENS registry contract * is still the old owner. Therefore, the owner should call `reclaim` to update the owner of the subdomain. * @param _tokenId - erc721 token id which represents the node (subdomain). * @param _owner - new owner. */ function reclaim(uint256 _tokenId, address _owner) external; /** * @dev Transfer a name to a new owner. * @param _from - current owner of the node. * @param _to - new owner of the node. * @param _id - node id. */ function transferFrom(address _from, address _to, uint256 _id) public; /** * @dev Check whether a name is available to be registered or not * @param _labelhash - hash of the name to check * @return whether the name is available or not */ function available(bytes32 _labelhash) public view returns (bool); } // File: openzeppelin-eth/contracts/token/ERC20/IERC20.sol pragma solidity ^0.5.2; /** * @title ERC20 interface * @dev see https://eips.ethereum.org/EIPS/eip-20 */ interface IERC20 { function transfer(address to, uint256 value) external returns (bool); function approve(address spender, uint256 value) external returns (bool); function transferFrom(address from, address to, uint256 value) external returns (bool); function totalSupply() external view returns (uint256); function balanceOf(address who) external view returns (uint256); function allowance(address owner, address spender) external view returns (uint256); event Transfer(address indexed from, address indexed to, uint256 value); event Approval(address indexed owner, address indexed spender, uint256 value); } // File: contracts/interfaces/IERC20Token.sol pragma solidity ^0.5.15; contract IERC20Token is IERC20{ function balanceOf(address from) public view returns (uint256); function transferFrom(address from, address to, uint tokens) public returns (bool); function allowance(address owner, address spender) public view returns (uint256); function burn(uint256 amount) public; } // File: contracts/ens/DCLController.sol pragma solidity ^0.5.15; contract DCLController is Ownable { using Address for address; // Price of each name uint256 constant public PRICE = 100 ether; // Accepted ERC20 token IERC20Token public acceptedToken; // DCL Registrar IDCLRegistrar public registrar; // Price of each name uint256 public maxGasPrice = 20000000000; // 20 gwei // Emitted when a name is bought event NameBought(address indexed _caller, address indexed _beneficiary, uint256 _price, string _name); // Emitted when the max gas price is changed event MaxGasPriceChanged(uint256 indexed _oldMaxGasPrice, uint256 indexed _newMaxGasPrice); /** * @dev Constructor of the contract * @param _acceptedToken - address of the accepted token * @param _registrar - address of the DCL registrar contract */ constructor(IERC20Token _acceptedToken, IDCLRegistrar _registrar) public { require(address(_acceptedToken).isContract(), "Accepted token should be a contract"); require(address(_registrar).isContract(), "Registrar should be a contract"); // Accepted token acceptedToken = _acceptedToken; // DCL registrar registrar = _registrar; } /** * @dev Register a name * @param _name - name to be registered * @param _beneficiary - owner of the name */ function register(string memory _name, address _beneficiary) public { // Check gas price require(tx.gasprice <= maxGasPrice, "Maximum gas price allowed exceeded"); // Check for valid beneficiary require(_beneficiary != address(0), "Invalid beneficiary"); // Check if the name is valid _requireNameValid(_name); // Check if the sender has at least `price` and the contract has allowance to use on its behalf _requireBalance(msg.sender); // Register the name registrar.register(_name, _beneficiary); // Debit `price` from sender acceptedToken.transferFrom(msg.sender, address(this), PRICE); // Burn it acceptedToken.burn(PRICE); // Log emit NameBought(msg.sender, _beneficiary, PRICE, _name); } /** * @dev Update max gas price * @param _maxGasPrice - new max gas price to be used */ function updateMaxGasPrice(uint256 _maxGasPrice) external onlyOwner { require(_maxGasPrice != maxGasPrice, "Max gas price should be different"); require( _maxGasPrice >= 1000000000, "Max gas price should be greater than or equal to 1 gwei" ); emit MaxGasPriceChanged(maxGasPrice, _maxGasPrice); maxGasPrice = _maxGasPrice; } /** * @dev Validate if a user has balance and the contract has enough allowance * to use user's accepted token on his belhalf * @param _user - address of the user */ function _requireBalance(address _user) internal view { require( acceptedToken.balanceOf(_user) >= PRICE, "Insufficient funds" ); require( acceptedToken.allowance(_user, address(this)) >= PRICE, "The contract is not authorized to use the accepted token on sender behalf" ); } /** * @dev Validate a nane * @notice that only a-z is allowed * @param _name - string for the name */ function _requireNameValid(string memory _name) internal pure { bytes memory tempName = bytes(_name); require( tempName.length >= 2 && tempName.length <= 15, "Name should be greather than or equal to 2 and less than or equal to 15" ); for(uint256 i = 0; i < tempName.length; i++) { require(_isLetter(tempName[i]) || _isNumber(tempName[i]), "Invalid Character"); } } function _isLetter(bytes1 _char) internal pure returns (bool) { return (_char >= 0x41 && _char <= 0x5A) || (_char >= 0x61 && _char <= 0x7A); } function _isNumber(bytes1 _char) internal pure returns (bool) { return (_char >= 0x30 && _char <= 0x39); } }
Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
[{"inputs":[{"internalType":"contract IERC20Token","name":"_acceptedToken","type":"address"},{"internalType":"contract IDCLRegistrar","name":"_registrar","type":"address"}],"payable":false,"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"uint256","name":"_oldMaxGasPrice","type":"uint256"},{"indexed":true,"internalType":"uint256","name":"_newMaxGasPrice","type":"uint256"}],"name":"MaxGasPriceChanged","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"_caller","type":"address"},{"indexed":true,"internalType":"address","name":"_beneficiary","type":"address"},{"indexed":false,"internalType":"uint256","name":"_price","type":"uint256"},{"indexed":false,"internalType":"string","name":"_name","type":"string"}],"name":"NameBought","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"},{"constant":true,"inputs":[],"name":"PRICE","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"acceptedToken","outputs":[{"internalType":"contract IERC20Token","name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"isOwner","outputs":[{"internalType":"bool","name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"maxGasPrice","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"internalType":"string","name":"_name","type":"string"},{"internalType":"address","name":"_beneficiary","type":"address"}],"name":"register","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"registrar","outputs":[{"internalType":"contract IDCLRegistrar","name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[],"name":"renounceOwnership","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"internalType":"uint256","name":"_maxGasPrice","type":"uint256"}],"name":"updateMaxGasPrice","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"}]
Contract Creation Code
60806040526404a817c80060035534801561001957600080fd5b50604051610f30380380610f308339818101604052604081101561003c57600080fd5b5080516020909101516100566001600160e01b0361019316565b600080546001600160a01b0319166001600160a01b03928316178082556040519216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908290a36100ba826001600160a01b031661019760201b610b8a1760201c565b6100f55760405162461bcd60e51b8152600401808060200182810382526023815260200180610f0d6023913960400191505060405180910390fd5b610111816001600160a01b031661019760201b610b8a1760201c565b610162576040805162461bcd60e51b815260206004820152601e60248201527f5265676973747261722073686f756c64206265206120636f6e74726163740000604482015290519081900360640190fd5b600180546001600160a01b039384166001600160a01b031991821617909155600280549290931691161790556101d3565b3390565b6000813f7fc5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a47081158015906101cb5750808214155b949350505050565b610d2b806101e26000396000f3fe608060405234801561001057600080fd5b506004361061009e5760003560e01c8063715018a611610066578063715018a6146101b95780638d859f3e146101c15780638da5cb5b146101c95780638f32d59b146101d1578063f2fde38b146101ed5761009e565b80631e59c529146100a35780632b20e397146101565780633de39c111461017a578063451c3d8014610194578063481463411461019c575b600080fd5b610154600480360360408110156100b957600080fd5b8101906020810181356401000000008111156100d457600080fd5b8201836020820111156100e657600080fd5b8035906020019184600183028401116401000000008311171561010857600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929550505090356001600160a01b031691506102139050565b005b61015e610540565b604080516001600160a01b039092168252519081900360200190f35b61018261054f565b60408051918252519081900360200190f35b61015e610555565b610154600480360360208110156101b257600080fd5b5035610564565b610154610675565b610182610718565b61015e610725565b6101d9610734565b604080519115158252519081900360200190f35b6101546004803603602081101561020357600080fd5b50356001600160a01b0316610758565b6003543a11156102545760405162461bcd60e51b8152600401808060200182810382526022815260200180610c6d6022913960400191505060405180910390fd5b6001600160a01b0381166102a5576040805162461bcd60e51b8152602060048201526013602482015272496e76616c69642062656e656669636961727960681b604482015290519081900360640190fd5b6102ae826107bd565b6102b7336108b8565b60025460408051631e59c52960e01b81526001600160a01b03848116602483015260048201928352855160448301528551931692631e59c5299286928692829160640190602086019080838360005b8381101561031e578181015183820152602001610306565b50505050905090810190601f16801561034b5780820380516001836020036101000a031916815260200191505b509350505050600060405180830381600087803b15801561036b57600080fd5b505af115801561037f573d6000803e3d6000fd5b5050600154604080516323b872dd60e01b815233600482015230602482015268056bc75e2d63100000604482015290516001600160a01b0390921693506323b872dd92506064808201926020929091908290030181600087803b1580156103e557600080fd5b505af11580156103f9573d6000803e3d6000fd5b505050506040513d602081101561040f57600080fd5b505060015460408051630852cd8d60e31b815268056bc75e2d63100000600482015290516001600160a01b03909216916342966c689160248082019260009290919082900301818387803b15801561046657600080fd5b505af115801561047a573d6000803e3d6000fd5b50505050806001600160a01b0316336001600160a01b03167fb8c56202a5ae8b00edfcd57a54ec6c3fb8d2f6deb3067a7ba11408a7bd014a3e68056bc75e2d63100000856040518083815260200180602001828103825283818151815260200191508051906020019080838360005b838110156105015781810151838201526020016104e9565b50505050905090810190601f16801561052e5780820380516001836020036101000a031916815260200191505b50935050505060405180910390a35050565b6002546001600160a01b031681565b60035481565b6001546001600160a01b031681565b61056c610734565b6105bd576040805162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015290519081900360640190fd5b6003548114156105fe5760405162461bcd60e51b8152600401808060200182810382526021815260200180610c8f6021913960400191505060405180910390fd5b633b9aca008110156106415760405162461bcd60e51b8152600401808060200182810382526037815260200180610c366037913960400191505060405180910390fd5b6003546040518291907f9ea22ceb38b7339ccae6a8436afbae71421e5a0cc5f08b9e8114f5fc1dee288c90600090a3600355565b61067d610734565b6106ce576040805162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015290519081900360640190fd5b600080546040516001600160a01b03909116907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3600080546001600160a01b0319169055565b68056bc75e2d6310000081565b6000546001600160a01b031690565b600080546001600160a01b0316610749610a4d565b6001600160a01b031614905090565b610760610734565b6107b1576040805162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015290519081900360640190fd5b6107ba81610a51565b50565b805181906002118015906107d35750600f815111155b61080e5760405162461bcd60e51b8152600401808060200182810382526047815260200180610cb06047913960600191505060405180910390fd5b60005b81518110156108b35761083d82828151811061082957fe5b01602001516001600160f81b031916610af1565b80610866575061086682828151811061085257fe5b01602001516001600160f81b031916610b57565b6108ab576040805162461bcd60e51b815260206004820152601160248201527024b73b30b634b21021b430b930b1ba32b960791b604482015290519081900360640190fd5b600101610811565b505050565b600154604080516370a0823160e01b81526001600160a01b038481166004830152915168056bc75e2d631000009392909216916370a0823191602480820192602092909190829003018186803b15801561091157600080fd5b505afa158015610925573d6000803e3d6000fd5b505050506040513d602081101561093b57600080fd5b50511015610985576040805162461bcd60e51b8152602060048201526012602482015271496e73756666696369656e742066756e647360701b604482015290519081900360640190fd5b60015460408051636eb1769f60e11b81526001600160a01b038481166004830152306024830152915168056bc75e2d6310000093929092169163dd62ed3e91604480820192602092909190829003018186803b1580156109e457600080fd5b505afa1580156109f8573d6000803e3d6000fd5b505050506040513d6020811015610a0e57600080fd5b505110156107ba5760405162461bcd60e51b8152600401808060200182810382526049815260200180610bed6049913960600191505060405180910390fd5b3390565b6001600160a01b038116610a965760405162461bcd60e51b8152600401808060200182810382526026815260200180610bc76026913960400191505060405180910390fd5b600080546040516001600160a01b03808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a3600080546001600160a01b0319166001600160a01b0392909216919091179055565b6000604160f81b6001600160f81b0319831610801590610b1f5750602d60f91b6001600160f81b0319831611155b80610b515750606160f81b6001600160f81b0319831610801590610b515750603d60f91b6001600160f81b0319831611155b92915050565b6000600360fc1b6001600160f81b0319831610801590610b51575050603960f81b6001600160f81b031991909116111590565b6000813f7fc5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a4708115801590610bbe5750808214155b94935050505056fe4f776e61626c653a206e6577206f776e657220697320746865207a65726f206164647265737354686520636f6e7472616374206973206e6f7420617574686f72697a656420746f207573652074686520616363657074656420746f6b656e206f6e2073656e64657220626568616c664d6178206761732070726963652073686f756c642062652067726561746572207468616e206f7220657175616c20746f203120677765694d6178696d756d2067617320707269636520616c6c6f7765642065786365656465644d6178206761732070726963652073686f756c6420626520646966666572656e744e616d652073686f756c64206265206772656174686572207468616e206f7220657175616c20746f203220616e64206c657373207468616e206f7220657175616c20746f203135a265627a7a723158206c6835532431a4d51504cb76e3b1be00de1e2a9a8e2bd9fac831c15cca25404164736f6c634300050f0032416363657074656420746f6b656e2073686f756c64206265206120636f6e74726163740000000000000000000000000f5d2fb29fb7d3cfee444a200298f468908cc9420000000000000000000000002a187453064356c898cae034eaed119e1663acb8
Deployed Bytecode
0x608060405234801561001057600080fd5b506004361061009e5760003560e01c8063715018a611610066578063715018a6146101b95780638d859f3e146101c15780638da5cb5b146101c95780638f32d59b146101d1578063f2fde38b146101ed5761009e565b80631e59c529146100a35780632b20e397146101565780633de39c111461017a578063451c3d8014610194578063481463411461019c575b600080fd5b610154600480360360408110156100b957600080fd5b8101906020810181356401000000008111156100d457600080fd5b8201836020820111156100e657600080fd5b8035906020019184600183028401116401000000008311171561010857600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929550505090356001600160a01b031691506102139050565b005b61015e610540565b604080516001600160a01b039092168252519081900360200190f35b61018261054f565b60408051918252519081900360200190f35b61015e610555565b610154600480360360208110156101b257600080fd5b5035610564565b610154610675565b610182610718565b61015e610725565b6101d9610734565b604080519115158252519081900360200190f35b6101546004803603602081101561020357600080fd5b50356001600160a01b0316610758565b6003543a11156102545760405162461bcd60e51b8152600401808060200182810382526022815260200180610c6d6022913960400191505060405180910390fd5b6001600160a01b0381166102a5576040805162461bcd60e51b8152602060048201526013602482015272496e76616c69642062656e656669636961727960681b604482015290519081900360640190fd5b6102ae826107bd565b6102b7336108b8565b60025460408051631e59c52960e01b81526001600160a01b03848116602483015260048201928352855160448301528551931692631e59c5299286928692829160640190602086019080838360005b8381101561031e578181015183820152602001610306565b50505050905090810190601f16801561034b5780820380516001836020036101000a031916815260200191505b509350505050600060405180830381600087803b15801561036b57600080fd5b505af115801561037f573d6000803e3d6000fd5b5050600154604080516323b872dd60e01b815233600482015230602482015268056bc75e2d63100000604482015290516001600160a01b0390921693506323b872dd92506064808201926020929091908290030181600087803b1580156103e557600080fd5b505af11580156103f9573d6000803e3d6000fd5b505050506040513d602081101561040f57600080fd5b505060015460408051630852cd8d60e31b815268056bc75e2d63100000600482015290516001600160a01b03909216916342966c689160248082019260009290919082900301818387803b15801561046657600080fd5b505af115801561047a573d6000803e3d6000fd5b50505050806001600160a01b0316336001600160a01b03167fb8c56202a5ae8b00edfcd57a54ec6c3fb8d2f6deb3067a7ba11408a7bd014a3e68056bc75e2d63100000856040518083815260200180602001828103825283818151815260200191508051906020019080838360005b838110156105015781810151838201526020016104e9565b50505050905090810190601f16801561052e5780820380516001836020036101000a031916815260200191505b50935050505060405180910390a35050565b6002546001600160a01b031681565b60035481565b6001546001600160a01b031681565b61056c610734565b6105bd576040805162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015290519081900360640190fd5b6003548114156105fe5760405162461bcd60e51b8152600401808060200182810382526021815260200180610c8f6021913960400191505060405180910390fd5b633b9aca008110156106415760405162461bcd60e51b8152600401808060200182810382526037815260200180610c366037913960400191505060405180910390fd5b6003546040518291907f9ea22ceb38b7339ccae6a8436afbae71421e5a0cc5f08b9e8114f5fc1dee288c90600090a3600355565b61067d610734565b6106ce576040805162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015290519081900360640190fd5b600080546040516001600160a01b03909116907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3600080546001600160a01b0319169055565b68056bc75e2d6310000081565b6000546001600160a01b031690565b600080546001600160a01b0316610749610a4d565b6001600160a01b031614905090565b610760610734565b6107b1576040805162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015290519081900360640190fd5b6107ba81610a51565b50565b805181906002118015906107d35750600f815111155b61080e5760405162461bcd60e51b8152600401808060200182810382526047815260200180610cb06047913960600191505060405180910390fd5b60005b81518110156108b35761083d82828151811061082957fe5b01602001516001600160f81b031916610af1565b80610866575061086682828151811061085257fe5b01602001516001600160f81b031916610b57565b6108ab576040805162461bcd60e51b815260206004820152601160248201527024b73b30b634b21021b430b930b1ba32b960791b604482015290519081900360640190fd5b600101610811565b505050565b600154604080516370a0823160e01b81526001600160a01b038481166004830152915168056bc75e2d631000009392909216916370a0823191602480820192602092909190829003018186803b15801561091157600080fd5b505afa158015610925573d6000803e3d6000fd5b505050506040513d602081101561093b57600080fd5b50511015610985576040805162461bcd60e51b8152602060048201526012602482015271496e73756666696369656e742066756e647360701b604482015290519081900360640190fd5b60015460408051636eb1769f60e11b81526001600160a01b038481166004830152306024830152915168056bc75e2d6310000093929092169163dd62ed3e91604480820192602092909190829003018186803b1580156109e457600080fd5b505afa1580156109f8573d6000803e3d6000fd5b505050506040513d6020811015610a0e57600080fd5b505110156107ba5760405162461bcd60e51b8152600401808060200182810382526049815260200180610bed6049913960600191505060405180910390fd5b3390565b6001600160a01b038116610a965760405162461bcd60e51b8152600401808060200182810382526026815260200180610bc76026913960400191505060405180910390fd5b600080546040516001600160a01b03808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a3600080546001600160a01b0319166001600160a01b0392909216919091179055565b6000604160f81b6001600160f81b0319831610801590610b1f5750602d60f91b6001600160f81b0319831611155b80610b515750606160f81b6001600160f81b0319831610801590610b515750603d60f91b6001600160f81b0319831611155b92915050565b6000600360fc1b6001600160f81b0319831610801590610b51575050603960f81b6001600160f81b031991909116111590565b6000813f7fc5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a4708115801590610bbe5750808214155b94935050505056fe4f776e61626c653a206e6577206f776e657220697320746865207a65726f206164647265737354686520636f6e7472616374206973206e6f7420617574686f72697a656420746f207573652074686520616363657074656420746f6b656e206f6e2073656e64657220626568616c664d6178206761732070726963652073686f756c642062652067726561746572207468616e206f7220657175616c20746f203120677765694d6178696d756d2067617320707269636520616c6c6f7765642065786365656465644d6178206761732070726963652073686f756c6420626520646966666572656e744e616d652073686f756c64206265206772656174686572207468616e206f7220657175616c20746f203220616e64206c657373207468616e206f7220657175616c20746f203135a265627a7a723158206c6835532431a4d51504cb76e3b1be00de1e2a9a8e2bd9fac831c15cca25404164736f6c634300050f0032
Constructor Arguments (ABI-Encoded and is the last bytes of the Contract Creation Code above)
0000000000000000000000000f5d2fb29fb7d3cfee444a200298f468908cc9420000000000000000000000002a187453064356c898cae034eaed119e1663acb8
-----Decoded View---------------
Arg [0] : _acceptedToken (address): 0x0F5D2fB29fb7d3CFeE444a200298f468908cC942
Arg [1] : _registrar (address): 0x2A187453064356c898cAe034EAed119E1663ACb8
-----Encoded View---------------
2 Constructor Arguments found :
Arg [0] : 0000000000000000000000000f5d2fb29fb7d3cfee444a200298f468908cc942
Arg [1] : 0000000000000000000000002a187453064356c898cae034eaed119e1663acb8
Deployed Bytecode Sourcemap
10150:4201:0:-;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;10150:4201:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;11526:845;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;11526:845:0;;;;;;;;21:11:-1;5:28;;2:2;;;46:1;43;36:12;2:2;11526:845:0;;35:9:-1;28:4;12:14;8:25;5:40;2:2;;;58:1;55;48:12;2:2;11526:845:0;;;;;;100:9:-1;95:1;81:12;77:20;67:8;63:35;60:50;39:11;25:12;22:29;11:107;8:2;;;131:1;128;121:12;8:2;11526:845:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;30:3:-1;22:6;14;1:33;99:1;81:16;;74:27;;;;-1:-1;11526:845:0;;-1:-1:-1;;;11526:845:0;;-1:-1:-1;;;;;11526:845:0;;-1:-1:-1;11526:845:0;;-1:-1:-1;11526:845:0:i;:::-;;10392:30;;;:::i;:::-;;;;-1:-1:-1;;;;;10392:30:0;;;;;;;;;;;;;;10458:40;;;:::i;:::-;;;;;;;;;;;;;;;;10331:32;;;:::i;12490:404::-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;12490:404:0;;:::i;2936:140::-;;;:::i;10252:41::-;;;:::i;2125:79::-;;;:::i;2491:94::-;;;:::i;:::-;;;;;;;;;;;;;;;;;;3231:109;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;3231:109:0;-1:-1:-1;;;;;3231:109:0;;:::i;11526:845::-;11656:11;;11641;:26;;11633:73;;;;-1:-1:-1;;;11633:73:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;11765:26:0;;11757:58;;;;;-1:-1:-1;;;11757:58:0;;;;;;;;;;;;-1:-1:-1;;;11757:58:0;;;;;;;;;;;;;;;11867:24;11885:5;11867:17;:24::i;:::-;12007:27;12023:10;12007:15;:27::i;:::-;12077:9;;:39;;;-1:-1:-1;;;12077:39:0;;-1:-1:-1;;;;;12077:39:0;;;;;;;;;;;;;;;;;;;;;:9;;;:18;;12096:5;;12103:12;;12077:39;;;;;;;;;;;;:9;8:100:-1;33:3;30:1;27:10;8:100;;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;;12:14;12077:39:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;12077:39:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;-1:-1;;12165:13:0;;:60;;;-1:-1:-1;;;12165:60:0;;12192:10;12165:60;;;;12212:4;12165:60;;;;10284:9;12165:60;;;;;;-1:-1:-1;;;;;12165:13:0;;;;-1:-1:-1;12165:26:0;;-1:-1:-1;12165:60:0;;;;;;;;;;;;;;;:13;;:60;;;5:2:-1;;;;30:1;27;20:12;5:2;12165:60:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;12165:60:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;;12256:13:0;;:25;;;-1:-1:-1;;;12256:25:0;;10284:9;12256:25;;;;;;-1:-1:-1;;;;;12256:13:0;;;;:18;;:25;;;;;:13;;:25;;;;;;;;:13;;:25;;;5:2:-1;;;;30:1;27;20:12;5:2;12256:25:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;12256:25:0;;;;12336:12;-1:-1:-1;;;;;12313:50:0;12324:10;-1:-1:-1;;;;;12313:50:0;;10284:9;12357:5;12313:50;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;;12:14;12313:50:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;11526:845;;:::o;10392:30::-;;;-1:-1:-1;;;;;10392:30:0;;:::o;10458:40::-;;;;:::o;10331:32::-;;;-1:-1:-1;;;;;10331:32:0;;:::o;12490:404::-;2337:9;:7;:9::i;:::-;2329:54;;;;;-1:-1:-1;;;2329:54:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12593:11;;12577:12;:27;;12569:73;;;;-1:-1:-1;;;12569:73:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12691:10;12675:12;:26;;12653:131;;;;-1:-1:-1;;;12653:131:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12821:11;;12802:45;;12834:12;;12821:11;12802:45;;;;;12860:11;:26;12490:404::o;2936:140::-;2337:9;:7;:9::i;:::-;2329:54;;;;;-1:-1:-1;;;2329:54:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3035:1;3019:6;;2998:40;;-1:-1:-1;;;;;3019:6:0;;;;2998:40;;3035:1;;2998:40;3066:1;3049:19;;-1:-1:-1;;;;;;3049:19:0;;;2936:140::o;10252:41::-;10284:9;10252:41;:::o;2125:79::-;2163:7;2190:6;-1:-1:-1;;;;;2190:6:0;2125:79;:::o;2491:94::-;2531:4;2571:6;;-1:-1:-1;;;;;2571:6:0;2555:12;:10;:12::i;:::-;-1:-1:-1;;;;;2555:22:0;;2548:29;;2491:94;:::o;3231:109::-;2337:9;:7;:9::i;:::-;2329:54;;;;;-1:-1:-1;;;2329:54:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3304:28;3323:8;3304:18;:28::i;:::-;3231:109;:::o;13600:454::-;13742:15;;13703:5;;13761:1;-1:-1:-1;13742:20:0;;;:45;;;13785:2;13766:8;:15;:21;;13742:45;13720:166;;;;-1:-1:-1;;;13720:166:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;13901:9;13897:150;13920:8;:15;13916:1;:19;13897:150;;;13965:22;13975:8;13984:1;13975:11;;;;;;;;;;;;-1:-1:-1;;;;;;13975:11:0;13965:9;:22::i;:::-;:48;;;;13991:22;14001:8;14010:1;14001:11;;;;;;;;;;;;-1:-1:-1;;;;;;14001:11:0;13991:9;:22::i;:::-;13957:78;;;;;-1:-1:-1;;;13957:78:0;;;;;;;;;;;;-1:-1:-1;;;13957:78:0;;;;;;;;;;;;;;;13937:3;;13897:150;;;;13600:454;;:::o;13097:368::-;13184:13;;:30;;;-1:-1:-1;;;13184:30:0;;-1:-1:-1;;;;;13184:30:0;;;;;;;;;10284:9;;13184:13;;;;;:23;;:30;;;;;;;;;;;;;;;:13;:30;;;5:2:-1;;;;30:1;27;20:12;5:2;13184:30:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;13184:30:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;13184:30:0;:39;;13162:107;;;;;-1:-1:-1;;;13162:107:0;;;;;;;;;;;;-1:-1:-1;;;13162:107:0;;;;;;;;;;;;;;;13302:13;;:45;;;-1:-1:-1;;;13302:45:0;;-1:-1:-1;;;;;13302:45:0;;;;;;;13341:4;13302:45;;;;;;10284:9;;13302:13;;;;;:23;;:45;;;;;;;;;;;;;;;:13;:45;;;5:2:-1;;;;30:1;27;20:12;5:2;13302:45:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;13302:45:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;13302:45:0;:54;;13280:177;;;;-1:-1:-1;;;13280:177:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;866:98;946:10;866:98;:::o;3446:229::-;-1:-1:-1;;;;;3520:22:0;;3512:73;;;;-1:-1:-1;;;3512:73:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3622:6;;;3601:38;;-1:-1:-1;;;;;3601:38:0;;;;3622:6;;;3601:38;;;3650:6;:17;;-1:-1:-1;;;;;;3650:17:0;-1:-1:-1;;;;;3650:17:0;;;;;;;;;;3446:229::o;14062:156::-;14118:4;-1:-1:-1;;;;;;;;;14143:13:0;;;;;;:30;;-1:-1:-1;;;;;;;;;;14160:13:0;;;;14143:30;14142:68;;;-1:-1:-1;;;;;;;;;;14179:13:0;;;;;;:30;;-1:-1:-1;;;;;;;;;;14196:13:0;;;;14179:30;14135:75;14062:156;-1:-1:-1;;14062:156:0:o;14226:120::-;14282:4;-1:-1:-1;;;;;;;;;14307:13:0;;;;;;:30;;-1:-1:-1;;;;;;;;;;;14324:13:0;;;;;;;14226:120::o;4318:810::-;4378:4;5037:20;;4880:66;5077:15;;;;;:42;;;5108:11;5096:8;:23;;5077:42;5069:51;4318:810;-1:-1:-1;;;;4318:810:0:o
Swarm Source
bzzr://6c6835532431a4d51504cb76e3b1be00de1e2a9a8e2bd9fac831c15cca254041
Loading...
Loading
Loading...
Loading
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.