ETH Price: $2,081.99 (+2.68%)

Contract

0xAe65b0f676313Fd715F29D07538d1dc8557f2b1A
 

Overview

ETH Balance

0 ETH

Eth Value

$0.00

More Info

Private Name Tags

Multichain Info

No addresses found
Transaction Hash
Method
Block
From
To
Mint153468792022-08-15 15:45:201303 days ago1660578320IN
0xAe65b0f6...8557f2b1A
0 ETH0.00158711.7977424
Mint146546462022-04-25 15:44:411415 days ago1650901481IN
0xAe65b0f6...8557f2b1A
0 ETH0.008163753.84675207
Mint146421682022-04-23 16:33:151417 days ago1650731595IN
0xAe65b0f6...8557f2b1A
0 ETH0.0072124547.56616169
Mint137481482021-12-05 20:38:401555 days ago1638736720IN
0xAe65b0f6...8557f2b1A
0 ETH0.0115724976.3367515
Mint133913872021-10-10 14:19:321612 days ago1633875572IN
0xAe65b0f6...8557f2b1A
0 ETH0.02402594158.45110323
Mint133909992021-10-10 12:56:311612 days ago1633870591IN
0xAe65b0f6...8557f2b1A
0 ETH0.0108362171.4591852
Mint133566102021-10-05 3:27:371617 days ago1633404457IN
0xAe65b0f6...8557f2b1A
0 ETH0.01727764113.96110075
Mint132219282021-09-14 5:22:581638 days ago1631596978IN
0xAe65b0f6...8557f2b1A
0 ETH0.0057198242.51329824
Mint129594342021-08-04 15:23:161679 days ago1628090596IN
0xAe65b0f6...8557f2b1A
0 ETH0.0078027458
Mint129589722021-08-04 13:40:291679 days ago1628084429IN
0xAe65b0f6...8557f2b1A
0 ETH0.0053799240
Mint129588862021-08-04 13:24:401679 days ago1628083480IN
0xAe65b0f6...8557f2b1A
0 ETH0.0063679542
Mint129537552021-08-03 17:54:081679 days ago1628013248IN
0xAe65b0f6...8557f2b1A
0 ETH0.0065200943
Mint129363702021-08-01 0:07:511682 days ago1627776471IN
0xAe65b0f6...8557f2b1A
0 ETH0.0042450828
Mint129290932021-07-30 20:26:371683 days ago1627676797IN
0xAe65b0f6...8557f2b1A
0 ETH0.0047005331
Mint129279382021-07-30 16:03:541684 days ago1627661034IN
0xAe65b0f6...8557f2b1A
0 ETH0.0056086837
Mint129254032021-07-30 6:32:151684 days ago1627626735IN
0xAe65b0f6...8557f2b1A
0 ETH0.0056104537
Mint129248762021-07-30 4:28:111684 days ago1627619291IN
0xAe65b0f6...8557f2b1A
0 ETH0.0059141939
Mint129243462021-07-30 2:17:411684 days ago1627611461IN
0xAe65b0f6...8557f2b1A
0 ETH0.0057625438
Mint129206802021-07-29 12:18:591685 days ago1627561139IN
0xAe65b0f6...8557f2b1A
0 ETH0.0037916525
Mint129133492021-07-28 8:15:391686 days ago1627460139IN
0xAe65b0f6...8557f2b1A
0 ETH0.0017838435
Mint129133392021-07-28 8:14:051686 days ago1627460045IN
0xAe65b0f6...8557f2b1A
0 ETH0.0047093935
Mint129128172021-07-28 6:20:511686 days ago1627453251IN
0xAe65b0f6...8557f2b1A
0 ETH0.0043979629
Mint129125862021-07-28 5:22:541686 days ago1627449774IN
0xAe65b0f6...8557f2b1A
0 ETH0.0028814219
Mint129116862021-07-28 2:11:481686 days ago1627438308IN
0xAe65b0f6...8557f2b1A
0 ETH0.0053059335
Mint129090722021-07-27 16:08:191687 days ago1627402099IN
0xAe65b0f6...8557f2b1A
0 ETH0.0042459728
View all transactions

View more zero value Internal Transactions in Advanced View mode

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

Block Transaction Difficulty Gas Used Reward
View All Blocks Produced

Validator Index Block Amount
View All Withdrawals

Transaction Hash Block Value Eth2 PubKey Valid
View All Deposits
Loading...
Loading

Contract Source Code Verified (Exact Match)

Contract Name:
BasicAdapter

Compiler Version
v0.5.16+commit.9c3226ce

Optimization Enabled:
Yes with 200 runs

Other Settings:
default evmVersion
/**
 *Submitted for verification at Etherscan.io on 2020-10-30
*/

/**

Deployed by Ren Project, https://renproject.io

Commit hash: 1e106b3
Repository: https://github.com/renproject/gateway-sol
Issues: https://github.com/renproject/gateway-sol/issues

Licenses
@openzeppelin/contracts: https://github.com/OpenZeppelin/openzeppelin-contracts/blob/master/LICENSE
gateway-sol: https://github.com/renproject/gateway-sol/blob/master/LICENSE

*/

pragma solidity ^0.5.16;


contract Initializable {

  
  bool private initialized;

  
  bool private initializing;

  
  modifier initializer() {
    require(initializing || isConstructor() || !initialized, "Contract instance has already been initialized");

    bool isTopLevelCall = !initializing;
    if (isTopLevelCall) {
      initializing = true;
      initialized = true;
    }

    _;

    if (isTopLevelCall) {
      initializing = false;
    }
  }

  
  function isConstructor() private view returns (bool) {
    
    
    
    
    
    address self = address(this);
    uint256 cs;
    assembly { cs := extcodesize(self) }
    return cs == 0;
  }

  
  uint256[50] private ______gap;
}

interface IRelayRecipient {
    
    function getHubAddr() external view returns (address);

    
    function acceptRelayedCall(
        address relay,
        address from,
        bytes calldata encodedFunction,
        uint256 transactionFee,
        uint256 gasPrice,
        uint256 gasLimit,
        uint256 nonce,
        bytes calldata approvalData,
        uint256 maxPossibleCharge
    )
        external
        view
        returns (uint256, bytes memory);

    
    function preRelayedCall(bytes calldata context) external returns (bytes32);

    
    function postRelayedCall(bytes calldata context, bool success, uint256 actualCharge, bytes32 preRetVal) external;
}

interface IRelayHub {
    

    
    function stake(address relayaddr, uint256 unstakeDelay) external payable;

    
    event Staked(address indexed relay, uint256 stake, uint256 unstakeDelay);

    
    function registerRelay(uint256 transactionFee, string calldata url) external;

    
    event RelayAdded(address indexed relay, address indexed owner, uint256 transactionFee, uint256 stake, uint256 unstakeDelay, string url);

    
    function removeRelayByOwner(address relay) external;

    
    event RelayRemoved(address indexed relay, uint256 unstakeTime);

    
    function unstake(address relay) external;

    
    event Unstaked(address indexed relay, uint256 stake);

    
    enum RelayState {
        Unknown, 
        Staked, 
        Registered, 
        Removed    
    }

    
    function getRelay(address relay) external view returns (uint256 totalStake, uint256 unstakeDelay, uint256 unstakeTime, address payable owner, RelayState state);

    

    
    function depositFor(address target) external payable;

    
    event Deposited(address indexed recipient, address indexed from, uint256 amount);

    
    function balanceOf(address target) external view returns (uint256);

    
    function withdraw(uint256 amount, address payable dest) external;

    
    event Withdrawn(address indexed account, address indexed dest, uint256 amount);

    

    
    function canRelay(
        address relay,
        address from,
        address to,
        bytes calldata encodedFunction,
        uint256 transactionFee,
        uint256 gasPrice,
        uint256 gasLimit,
        uint256 nonce,
        bytes calldata signature,
        bytes calldata approvalData
    ) external view returns (uint256 status, bytes memory recipientContext);

    
    enum PreconditionCheck {
        OK,                         
        WrongSignature,             
        WrongNonce,                 
        AcceptRelayedCallReverted,  
        InvalidRecipientStatusCode  
    }

    
    function relayCall(
        address from,
        address to,
        bytes calldata encodedFunction,
        uint256 transactionFee,
        uint256 gasPrice,
        uint256 gasLimit,
        uint256 nonce,
        bytes calldata signature,
        bytes calldata approvalData
    ) external;

    
    event CanRelayFailed(address indexed relay, address indexed from, address indexed to, bytes4 selector, uint256 reason);

    
    event TransactionRelayed(address indexed relay, address indexed from, address indexed to, bytes4 selector, RelayCallStatus status, uint256 charge);

    
    enum RelayCallStatus {
        OK,                      
        RelayedCallFailed,       
        PreRelayedFailed,        
        PostRelayedFailed,       
        RecipientBalanceChanged  
    }

    
    function requiredGas(uint256 relayedCallStipend) external view returns (uint256);

    
    function maxPossibleCharge(uint256 relayedCallStipend, uint256 gasPrice, uint256 transactionFee) external view returns (uint256);

     
     
    
    

    
    function penalizeRepeatedNonce(bytes calldata unsignedTx1, bytes calldata signature1, bytes calldata unsignedTx2, bytes calldata signature2) external;

    
    function penalizeIllegalTransaction(bytes calldata unsignedTx, bytes calldata signature) external;

    
    event Penalized(address indexed relay, address sender, uint256 amount);

    
    function getNonce(address from) external view returns (uint256);
}

contract Context is Initializable {
    
    
    constructor () internal { }
    

    function _msgSender() internal view returns (address payable) {
        return msg.sender;
    }

    function _msgData() internal view returns (bytes memory) {
        this; 
        return msg.data;
    }
}

contract GSNRecipient is Initializable, IRelayRecipient, Context {
    function initialize() public initializer {
        if (_relayHub == address(0)) {
            setDefaultRelayHub();
        }
    }

    function setDefaultRelayHub() public {
        _upgradeRelayHub(0xD216153c06E857cD7f72665E0aF1d7D82172F494);
    }

    
    address private _relayHub;

    uint256 constant private RELAYED_CALL_ACCEPTED = 0;
    uint256 constant private RELAYED_CALL_REJECTED = 11;

    
    uint256 constant internal POST_RELAYED_CALL_MAX_GAS = 100000;

    
    event RelayHubChanged(address indexed oldRelayHub, address indexed newRelayHub);

    
    function getHubAddr() public view returns (address) {
        return _relayHub;
    }

    
    function _upgradeRelayHub(address newRelayHub) internal {
        address currentRelayHub = _relayHub;
        require(newRelayHub != address(0), "GSNRecipient: new RelayHub is the zero address");
        require(newRelayHub != currentRelayHub, "GSNRecipient: new RelayHub is the current one");

        emit RelayHubChanged(currentRelayHub, newRelayHub);

        _relayHub = newRelayHub;
    }

    
    
    
    function relayHubVersion() public view returns (string memory) {
        this; 
        return "1.0.0";
    }

    
    function _withdrawDeposits(uint256 amount, address payable payee) internal {
        IRelayHub(_relayHub).withdraw(amount, payee);
    }

    
    
    
    

    
    function _msgSender() internal view returns (address payable) {
        if (msg.sender != _relayHub) {
            return msg.sender;
        } else {
            return _getRelayedCallSender();
        }
    }

    
    function _msgData() internal view returns (bytes memory) {
        if (msg.sender != _relayHub) {
            return msg.data;
        } else {
            return _getRelayedCallData();
        }
    }

    
    

    
    function preRelayedCall(bytes calldata context) external returns (bytes32) {
        require(msg.sender == getHubAddr(), "GSNRecipient: caller is not RelayHub");
        return _preRelayedCall(context);
    }

    
    function _preRelayedCall(bytes memory context) internal returns (bytes32);

    
    function postRelayedCall(bytes calldata context, bool success, uint256 actualCharge, bytes32 preRetVal) external {
        require(msg.sender == getHubAddr(), "GSNRecipient: caller is not RelayHub");
        _postRelayedCall(context, success, actualCharge, preRetVal);
    }

    
    function _postRelayedCall(bytes memory context, bool success, uint256 actualCharge, bytes32 preRetVal) internal;

    
    function _approveRelayedCall() internal pure returns (uint256, bytes memory) {
        return _approveRelayedCall("");
    }

    
    function _approveRelayedCall(bytes memory context) internal pure returns (uint256, bytes memory) {
        return (RELAYED_CALL_ACCEPTED, context);
    }

    
    function _rejectRelayedCall(uint256 errorCode) internal pure returns (uint256, bytes memory) {
        return (RELAYED_CALL_REJECTED + errorCode, "");
    }

    
    function _computeCharge(uint256 gas, uint256 gasPrice, uint256 serviceFee) internal pure returns (uint256) {
        
        
        return (gas * gasPrice * (100 + serviceFee)) / 100;
    }

    function _getRelayedCallSender() private pure returns (address payable result) {
        
        
        
        
        

        
        

        
        bytes memory array = msg.data;
        uint256 index = msg.data.length;

        
        assembly {
            
            result := and(mload(add(array, index)), 0xffffffffffffffffffffffffffffffffffffffff)
        }
        return result;
    }

    function _getRelayedCallData() private pure returns (bytes memory) {
        
        

        uint256 actualDataLength = msg.data.length - 20;
        bytes memory actualData = new bytes(actualDataLength);

        for (uint256 i = 0; i < actualDataLength; ++i) {
            actualData[i] = msg.data[i];
        }

        return actualData;
    }
}

interface IMintGateway {
    function mint(
        bytes32 _pHash,
        uint256 _amount,
        bytes32 _nHash,
        bytes calldata _sig
    ) external returns (uint256);

    function mintFee() external view returns (uint256);
}

interface IBurnGateway {
    function burn(bytes calldata _to, uint256 _amountScaled)
        external
        returns (uint256);

    function burnFee() external view returns (uint256);
}

interface IGateway {
    
    function mint(
        bytes32 _pHash,
        uint256 _amount,
        bytes32 _nHash,
        bytes calldata _sig
    ) external returns (uint256);

    function mintFee() external view returns (uint256);

    
    function burn(bytes calldata _to, uint256 _amountScaled)
        external
        returns (uint256);

    function burnFee() external view returns (uint256);
}

interface IERC20 {
    
    function totalSupply() external view returns (uint256);

    
    function balanceOf(address account) external view returns (uint256);

    
    function transfer(address recipient, uint256 amount) external returns (bool);

    
    function allowance(address owner, address spender) external view returns (uint256);

    
    function approve(address spender, uint256 amount) external returns (bool);

    
    function transferFrom(address sender, address recipient, uint256 amount) external returns (bool);

    
    event Transfer(address indexed from, address indexed to, uint256 value);

    
    event Approval(address indexed owner, address indexed spender, uint256 value);
}

interface IGatewayRegistry {
    
    
    event LogGatewayRegistered(
        string _symbol,
        string indexed _indexedSymbol,
        address indexed _tokenAddress,
        address indexed _gatewayAddress
    );
    event LogGatewayDeregistered(
        string _symbol,
        string indexed _indexedSymbol,
        address indexed _tokenAddress,
        address indexed _gatewayAddress
    );
    event LogGatewayUpdated(
        address indexed _tokenAddress,
        address indexed _currentGatewayAddress,
        address indexed _newGatewayAddress
    );

    
    function getGateways(address _start, uint256 _count)
        external
        view
        returns (address[] memory);

    
    function getRenTokens(address _start, uint256 _count)
        external
        view
        returns (address[] memory);

    
    
    
    
    function getGatewayByToken(address _tokenAddress)
        external
        view
        returns (IGateway);

    
    
    
    
    function getGatewayBySymbol(string calldata _tokenSymbol)
        external
        view
        returns (IGateway);

    
    
    
    
    function getTokenBySymbol(string calldata _tokenSymbol)
        external
        view
        returns (IERC20);
}

contract BasicAdapter is GSNRecipient {
    IGatewayRegistry registry;

    constructor(IGatewayRegistry _registry) public {
        GSNRecipient.initialize();
        registry = _registry;
    }

    function mint(
        
        string calldata _symbol,
        address _recipient,
        
        uint256 _amount,
        bytes32 _nHash,
        bytes calldata _sig
    ) external {
        bytes32 payloadHash = keccak256(abi.encode(_symbol, _recipient));
        uint256 amount = registry.getGatewayBySymbol(_symbol).mint(
            payloadHash,
            _amount,
            _nHash,
            _sig
        );
        registry.getTokenBySymbol(_symbol).transfer(_recipient, amount);
    }

    function burn(
        string calldata _symbol,
        bytes calldata _to,
        uint256 _amount
    ) external {
        require(
            registry.getTokenBySymbol(_symbol).transferFrom(
                _msgSender(),
                address(this),
                _amount
            ),
            "token transfer failed"
        );
        registry.getGatewayBySymbol(_symbol).burn(_to, _amount);
    }

    

    function acceptRelayedCall(
        address relay,
        address from,
        bytes calldata encodedFunction,
        uint256 transactionFee,
        uint256 gasPrice,
        uint256 gasLimit,
        uint256 nonce,
        bytes calldata approvalData,
        uint256 maxPossibleCharge
    ) external view returns (uint256, bytes memory) {
        return _approveRelayedCall();
    }

    
    function _preRelayedCall(bytes memory context) internal returns (bytes32) {}

    function _postRelayedCall(
        bytes memory context,
        bool,
        uint256 actualCharge,
        bytes32
    ) internal {}
}

Contract Security Audit

Contract ABI

API
[{"inputs":[{"internalType":"contract IGatewayRegistry","name":"_registry","type":"address"}],"payable":false,"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"oldRelayHub","type":"address"},{"indexed":true,"internalType":"address","name":"newRelayHub","type":"address"}],"name":"RelayHubChanged","type":"event"},{"constant":true,"inputs":[{"internalType":"address","name":"relay","type":"address"},{"internalType":"address","name":"from","type":"address"},{"internalType":"bytes","name":"encodedFunction","type":"bytes"},{"internalType":"uint256","name":"transactionFee","type":"uint256"},{"internalType":"uint256","name":"gasPrice","type":"uint256"},{"internalType":"uint256","name":"gasLimit","type":"uint256"},{"internalType":"uint256","name":"nonce","type":"uint256"},{"internalType":"bytes","name":"approvalData","type":"bytes"},{"internalType":"uint256","name":"maxPossibleCharge","type":"uint256"}],"name":"acceptRelayedCall","outputs":[{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"bytes","name":"","type":"bytes"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"internalType":"string","name":"_symbol","type":"string"},{"internalType":"bytes","name":"_to","type":"bytes"},{"internalType":"uint256","name":"_amount","type":"uint256"}],"name":"burn","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"getHubAddr","outputs":[{"internalType":"address","name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[],"name":"initialize","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"internalType":"string","name":"_symbol","type":"string"},{"internalType":"address","name":"_recipient","type":"address"},{"internalType":"uint256","name":"_amount","type":"uint256"},{"internalType":"bytes32","name":"_nHash","type":"bytes32"},{"internalType":"bytes","name":"_sig","type":"bytes"}],"name":"mint","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"internalType":"bytes","name":"context","type":"bytes"},{"internalType":"bool","name":"success","type":"bool"},{"internalType":"uint256","name":"actualCharge","type":"uint256"},{"internalType":"bytes32","name":"preRetVal","type":"bytes32"}],"name":"postRelayedCall","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"internalType":"bytes","name":"context","type":"bytes"}],"name":"preRelayedCall","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"relayHubVersion","outputs":[{"internalType":"string","name":"","type":"string"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[],"name":"setDefaultRelayHub","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"}]

60806040523480156200001157600080fd5b506040516200133f3803806200133f833981810160405260208110156200003757600080fd5b50516200004f62000075602090811b6200092717901c565b603480546001600160a01b0319166001600160a01b039290921691909117905562000280565b600054610100900460ff16806200009a57506200009a6001600160e01b036200014c16565b80620000a9575060005460ff16155b620000e65760405162461bcd60e51b815260040180806020018281038252602e815260200180620012e4602e913960400191505060405180910390fd5b600054610100900460ff1615801562000112576000805460ff1961ff0019909116610100171660011790555b6033546001600160a01b03166200013657620001366001600160e01b036200015216565b801562000149576000805461ff00191690555b50565b303b1590565b6200017a73d216153c06e857cd7f72665e0af1d7d82172f4946001600160e01b036200017c16565b565b6033546001600160a01b03908116908216620001ca5760405162461bcd60e51b815260040180806020018281038252602e815260200180620012b6602e913960400191505060405180910390fd5b806001600160a01b0316826001600160a01b031614156200021d5760405162461bcd60e51b815260040180806020018281038252602d81526020018062001312602d913960400191505060405180910390fd5b816001600160a01b0316816001600160a01b03167fb9f84b8e65164b14439ae3620df0a4d8786d896996c0282b683f9d8c08f046e860405160405180910390a350603380546001600160a01b0319166001600160a01b0392909216919091179055565b61102680620002906000396000f3fe608060405234801561001057600080fd5b50600436106100935760003560e01c80638129fc1c116100665780638129fc1c1461021f57806383947ea014610227578063ad61ccd514610394578063b0ba3c5a14610411578063e06e0e22146104cf57610093565b80631220e2ff1461009857806374e861d6146100a257806377f61403146100c657806380274db71461019f575b600080fd5b6100a061054b565b005b6100aa61056a565b604080516001600160a01b039092168252519081900360200190f35b6100a0600480360360a08110156100dc57600080fd5b810190602081018135600160201b8111156100f657600080fd5b82018360208201111561010857600080fd5b803590602001918460018302840111600160201b8311171561012957600080fd5b919390926001600160a01b03833516926020810135926040820135929091608081019060600135600160201b81111561016157600080fd5b82018360208201111561017357600080fd5b803590602001918460018302840111600160201b8311171561019457600080fd5b50909250905061057a565b61020d600480360360208110156101b557600080fd5b810190602081018135600160201b8111156101cf57600080fd5b8201836020820111156101e157600080fd5b803590602001918460018302840111600160201b8311171561020257600080fd5b509092509050610888565b60408051918252519081900360200190f35b6100a0610927565b610315600480360361012081101561023e57600080fd5b6001600160a01b038235811692602081013590911691810190606081016040820135600160201b81111561027157600080fd5b82018360208201111561028357600080fd5b803590602001918460018302840111600160201b831117156102a457600080fd5b9193909282359260208101359260408201359260608301359260a081019060800135600160201b8111156102d757600080fd5b8201836020820111156102e957600080fd5b803590602001918460018302840111600160201b8311171561030a57600080fd5b9193509150356109e1565b6040518083815260200180602001828103825283818151815260200191508051906020019080838360005b83811015610358578181015183820152602001610340565b50505050905090810190601f1680156103855780820380516001836020036101000a031916815260200191505b50935050505060405180910390f35b61039c610a01565b6040805160208082528351818301528351919283929083019185019080838360005b838110156103d65781810151838201526020016103be565b50505050905090810190601f1680156104035780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b6100a06004803603606081101561042757600080fd5b810190602081018135600160201b81111561044157600080fd5b82018360208201111561045357600080fd5b803590602001918460018302840111600160201b8311171561047457600080fd5b919390929091602081019035600160201b81111561049157600080fd5b8201836020820111156104a357600080fd5b803590602001918460018302840111600160201b831117156104c457600080fd5b919350915035610a20565b6100a0600480360360808110156104e557600080fd5b810190602081018135600160201b8111156104ff57600080fd5b82018360208201111561051157600080fd5b803590602001918460018302840111600160201b8311171561053257600080fd5b9193509150803515159060208101359060400135610cef565b61056873d216153c06e857cd7f72665e0af1d7d82172f494610d91565b565b6033546001600160a01b03165b90565b60008787876040516020018080602001836001600160a01b03166001600160a01b031681526020018281038252858582818152602001925080828437600081840152601f19601f8201169050808301925050509450505050506040516020818303038152906040528051906020012090506000603460009054906101000a90046001600160a01b03166001600160a01b03166364936b1e8a8a6040518363ffffffff1660e01b815260040180806020018281038252848482818152602001925080828437600083820152604051601f909101601f191690920195506020945090925050508083038186803b15801561067157600080fd5b505afa158015610685573d6000803e3d6000fd5b505050506040513d602081101561069b57600080fd5b505160405163159ab14d60e01b8152600481018481526024820189905260448201889052608060648301908152608483018790526001600160a01b039093169263159ab14d9286928b928b928b928b92909160a401848480828437600081840152601f19601f8201169050808301925050509650505050505050602060405180830381600087803b15801561072f57600080fd5b505af1158015610743573d6000803e3d6000fd5b505050506040513d602081101561075957600080fd5b505160345460405163efa74f1f60e01b8152602060048201908152602482018c90529293506001600160a01b039091169163efa74f1f918c918c918190604401848480828437600083820152604051601f909101601f191690920195506020945090925050508083038186803b1580156107d257600080fd5b505afa1580156107e6573d6000803e3d6000fd5b505050506040513d60208110156107fc57600080fd5b50516040805163a9059cbb60e01b81526001600160a01b038a81166004830152602482018590529151919092169163a9059cbb9160448083019260209291908290030181600087803b15801561085157600080fd5b505af1158015610865573d6000803e3d6000fd5b505050506040513d602081101561087b57600080fd5b5050505050505050505050565b600061089261056a565b6001600160a01b0316336001600160a01b0316146108e15760405162461bcd60e51b8152600401808060200182810382526024815260200180610fce6024913960400191505060405180910390fd5b61092083838080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250610e9192505050565b9392505050565b600054610100900460ff16806109405750610940610e97565b8061094e575060005460ff16155b6109895760405162461bcd60e51b815260040180806020018281038252602e815260200180610f73602e913960400191505060405180910390fd5b600054610100900460ff161580156109b4576000805460ff1961ff0019909116610100171660011790555b6033546001600160a01b03166109cc576109cc61054b565b80156109de576000805461ff00191690555b50565b600060606109ed610e9d565b915091509b509b9950505050505050505050565b6040805180820190915260058152640312e302e360dc1b602082015290565b60345460405163efa74f1f60e01b8152602060048201908152602482018790526001600160a01b039092169163efa74f1f91889188918190604401848480828437600083820152604051601f909101601f191690920195506020945090925050508083038186803b158015610a9457600080fd5b505afa158015610aa8573d6000803e3d6000fd5b505050506040513d6020811015610abe57600080fd5b50516001600160a01b03166323b872dd610ad6610ec1565b604080516001600160e01b031960e085901b1681526001600160a01b039092166004830152306024830152604482018590525160648083019260209291908290030181600087803b158015610b2a57600080fd5b505af1158015610b3e573d6000803e3d6000fd5b505050506040513d6020811015610b5457600080fd5b5051610b9f576040805162461bcd60e51b81526020600482015260156024820152741d1bdad95b881d1c985b9cd9995c8819985a5b1959605a1b604482015290519081900360640190fd5b603454604051633249b58f60e11b8152602060048201908152602482018790526001600160a01b03909216916364936b1e91889188918190604401848480828437600083820152604051601f909101601f191690920195506020945090925050508083038186803b158015610c1357600080fd5b505afa158015610c27573d6000803e3d6000fd5b505050506040513d6020811015610c3d57600080fd5b5051604080516338463cff60e01b81526024810184905260048101918252604481018590526001600160a01b03909216916338463cff918691869186918190606401858580828437600081840152601f19601f820116905080830192505050945050505050602060405180830381600087803b158015610cbc57600080fd5b505af1158015610cd0573d6000803e3d6000fd5b505050506040513d6020811015610ce657600080fd5b50505050505050565b610cf761056a565b6001600160a01b0316336001600160a01b031614610d465760405162461bcd60e51b8152600401808060200182810382526024815260200180610fce6024913960400191505060405180910390fd5b610d8a85858080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250879250869150859050610eec565b5050505050565b6033546001600160a01b03908116908216610ddd5760405162461bcd60e51b815260040180806020018281038252602e815260200180610f45602e913960400191505060405180910390fd5b806001600160a01b0316826001600160a01b03161415610e2e5760405162461bcd60e51b815260040180806020018281038252602d815260200180610fa1602d913960400191505060405180910390fd5b816001600160a01b0316816001600160a01b03167fb9f84b8e65164b14439ae3620df0a4d8786d896996c0282b683f9d8c08f046e860405160405180910390a350603380546001600160a01b0319166001600160a01b0392909216919091179055565b50600090565b303b1590565b60006060610eb960405180602001604052806000815250610ef2565b915091509091565b6033546000906001600160a01b03163314610edd575033610577565b610ee5610ef7565b9050610577565b50505050565b600091565b600060606000368080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152505050503601516001600160a01b03169291505056fe47534e526563697069656e743a206e65772052656c617948756220697320746865207a65726f2061646472657373436f6e747261637420696e7374616e63652068617320616c7265616479206265656e20696e697469616c697a656447534e526563697069656e743a206e65772052656c6179487562206973207468652063757272656e74206f6e6547534e526563697069656e743a2063616c6c6572206973206e6f742052656c6179487562a265627a7a723158202c74ce09e04b28fb79b81a2dde0500158012bf250892e4f98c018eb642a05e9264736f6c6343000510003247534e526563697069656e743a206e65772052656c617948756220697320746865207a65726f2061646472657373436f6e747261637420696e7374616e63652068617320616c7265616479206265656e20696e697469616c697a656447534e526563697069656e743a206e65772052656c6179487562206973207468652063757272656e74206f6e65000000000000000000000000503670ec851c55ec1acfb5230192da921467a24e

Deployed Bytecode

0x608060405234801561001057600080fd5b50600436106100935760003560e01c80638129fc1c116100665780638129fc1c1461021f57806383947ea014610227578063ad61ccd514610394578063b0ba3c5a14610411578063e06e0e22146104cf57610093565b80631220e2ff1461009857806374e861d6146100a257806377f61403146100c657806380274db71461019f575b600080fd5b6100a061054b565b005b6100aa61056a565b604080516001600160a01b039092168252519081900360200190f35b6100a0600480360360a08110156100dc57600080fd5b810190602081018135600160201b8111156100f657600080fd5b82018360208201111561010857600080fd5b803590602001918460018302840111600160201b8311171561012957600080fd5b919390926001600160a01b03833516926020810135926040820135929091608081019060600135600160201b81111561016157600080fd5b82018360208201111561017357600080fd5b803590602001918460018302840111600160201b8311171561019457600080fd5b50909250905061057a565b61020d600480360360208110156101b557600080fd5b810190602081018135600160201b8111156101cf57600080fd5b8201836020820111156101e157600080fd5b803590602001918460018302840111600160201b8311171561020257600080fd5b509092509050610888565b60408051918252519081900360200190f35b6100a0610927565b610315600480360361012081101561023e57600080fd5b6001600160a01b038235811692602081013590911691810190606081016040820135600160201b81111561027157600080fd5b82018360208201111561028357600080fd5b803590602001918460018302840111600160201b831117156102a457600080fd5b9193909282359260208101359260408201359260608301359260a081019060800135600160201b8111156102d757600080fd5b8201836020820111156102e957600080fd5b803590602001918460018302840111600160201b8311171561030a57600080fd5b9193509150356109e1565b6040518083815260200180602001828103825283818151815260200191508051906020019080838360005b83811015610358578181015183820152602001610340565b50505050905090810190601f1680156103855780820380516001836020036101000a031916815260200191505b50935050505060405180910390f35b61039c610a01565b6040805160208082528351818301528351919283929083019185019080838360005b838110156103d65781810151838201526020016103be565b50505050905090810190601f1680156104035780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b6100a06004803603606081101561042757600080fd5b810190602081018135600160201b81111561044157600080fd5b82018360208201111561045357600080fd5b803590602001918460018302840111600160201b8311171561047457600080fd5b919390929091602081019035600160201b81111561049157600080fd5b8201836020820111156104a357600080fd5b803590602001918460018302840111600160201b831117156104c457600080fd5b919350915035610a20565b6100a0600480360360808110156104e557600080fd5b810190602081018135600160201b8111156104ff57600080fd5b82018360208201111561051157600080fd5b803590602001918460018302840111600160201b8311171561053257600080fd5b9193509150803515159060208101359060400135610cef565b61056873d216153c06e857cd7f72665e0af1d7d82172f494610d91565b565b6033546001600160a01b03165b90565b60008787876040516020018080602001836001600160a01b03166001600160a01b031681526020018281038252858582818152602001925080828437600081840152601f19601f8201169050808301925050509450505050506040516020818303038152906040528051906020012090506000603460009054906101000a90046001600160a01b03166001600160a01b03166364936b1e8a8a6040518363ffffffff1660e01b815260040180806020018281038252848482818152602001925080828437600083820152604051601f909101601f191690920195506020945090925050508083038186803b15801561067157600080fd5b505afa158015610685573d6000803e3d6000fd5b505050506040513d602081101561069b57600080fd5b505160405163159ab14d60e01b8152600481018481526024820189905260448201889052608060648301908152608483018790526001600160a01b039093169263159ab14d9286928b928b928b928b92909160a401848480828437600081840152601f19601f8201169050808301925050509650505050505050602060405180830381600087803b15801561072f57600080fd5b505af1158015610743573d6000803e3d6000fd5b505050506040513d602081101561075957600080fd5b505160345460405163efa74f1f60e01b8152602060048201908152602482018c90529293506001600160a01b039091169163efa74f1f918c918c918190604401848480828437600083820152604051601f909101601f191690920195506020945090925050508083038186803b1580156107d257600080fd5b505afa1580156107e6573d6000803e3d6000fd5b505050506040513d60208110156107fc57600080fd5b50516040805163a9059cbb60e01b81526001600160a01b038a81166004830152602482018590529151919092169163a9059cbb9160448083019260209291908290030181600087803b15801561085157600080fd5b505af1158015610865573d6000803e3d6000fd5b505050506040513d602081101561087b57600080fd5b5050505050505050505050565b600061089261056a565b6001600160a01b0316336001600160a01b0316146108e15760405162461bcd60e51b8152600401808060200182810382526024815260200180610fce6024913960400191505060405180910390fd5b61092083838080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250610e9192505050565b9392505050565b600054610100900460ff16806109405750610940610e97565b8061094e575060005460ff16155b6109895760405162461bcd60e51b815260040180806020018281038252602e815260200180610f73602e913960400191505060405180910390fd5b600054610100900460ff161580156109b4576000805460ff1961ff0019909116610100171660011790555b6033546001600160a01b03166109cc576109cc61054b565b80156109de576000805461ff00191690555b50565b600060606109ed610e9d565b915091509b509b9950505050505050505050565b6040805180820190915260058152640312e302e360dc1b602082015290565b60345460405163efa74f1f60e01b8152602060048201908152602482018790526001600160a01b039092169163efa74f1f91889188918190604401848480828437600083820152604051601f909101601f191690920195506020945090925050508083038186803b158015610a9457600080fd5b505afa158015610aa8573d6000803e3d6000fd5b505050506040513d6020811015610abe57600080fd5b50516001600160a01b03166323b872dd610ad6610ec1565b604080516001600160e01b031960e085901b1681526001600160a01b039092166004830152306024830152604482018590525160648083019260209291908290030181600087803b158015610b2a57600080fd5b505af1158015610b3e573d6000803e3d6000fd5b505050506040513d6020811015610b5457600080fd5b5051610b9f576040805162461bcd60e51b81526020600482015260156024820152741d1bdad95b881d1c985b9cd9995c8819985a5b1959605a1b604482015290519081900360640190fd5b603454604051633249b58f60e11b8152602060048201908152602482018790526001600160a01b03909216916364936b1e91889188918190604401848480828437600083820152604051601f909101601f191690920195506020945090925050508083038186803b158015610c1357600080fd5b505afa158015610c27573d6000803e3d6000fd5b505050506040513d6020811015610c3d57600080fd5b5051604080516338463cff60e01b81526024810184905260048101918252604481018590526001600160a01b03909216916338463cff918691869186918190606401858580828437600081840152601f19601f820116905080830192505050945050505050602060405180830381600087803b158015610cbc57600080fd5b505af1158015610cd0573d6000803e3d6000fd5b505050506040513d6020811015610ce657600080fd5b50505050505050565b610cf761056a565b6001600160a01b0316336001600160a01b031614610d465760405162461bcd60e51b8152600401808060200182810382526024815260200180610fce6024913960400191505060405180910390fd5b610d8a85858080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250879250869150859050610eec565b5050505050565b6033546001600160a01b03908116908216610ddd5760405162461bcd60e51b815260040180806020018281038252602e815260200180610f45602e913960400191505060405180910390fd5b806001600160a01b0316826001600160a01b03161415610e2e5760405162461bcd60e51b815260040180806020018281038252602d815260200180610fa1602d913960400191505060405180910390fd5b816001600160a01b0316816001600160a01b03167fb9f84b8e65164b14439ae3620df0a4d8786d896996c0282b683f9d8c08f046e860405160405180910390a350603380546001600160a01b0319166001600160a01b0392909216919091179055565b50600090565b303b1590565b60006060610eb960405180602001604052806000815250610ef2565b915091509091565b6033546000906001600160a01b03163314610edd575033610577565b610ee5610ef7565b9050610577565b50505050565b600091565b600060606000368080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152505050503601516001600160a01b03169291505056fe47534e526563697069656e743a206e65772052656c617948756220697320746865207a65726f2061646472657373436f6e747261637420696e7374616e63652068617320616c7265616479206265656e20696e697469616c697a656447534e526563697069656e743a206e65772052656c6179487562206973207468652063757272656e74206f6e6547534e526563697069656e743a2063616c6c6572206973206e6f742052656c6179487562a265627a7a723158202c74ce09e04b28fb79b81a2dde0500158012bf250892e4f98c018eb642a05e9264736f6c63430005100032

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

000000000000000000000000503670ec851c55ec1acfb5230192da921467a24e

-----Decoded View---------------
Arg [0] : _registry (address): 0x503670EC851C55EC1aCFB5230192da921467a24e

-----Encoded View---------------
1 Constructor Arguments found :
Arg [0] : 000000000000000000000000503670ec851c55ec1acfb5230192da921467a24e


Block Uncle Number Difficulty Gas Used Reward
View All Uncles
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.