Contract 0x32666B64e9fD0F44916E1378Efb2CFa3B3B96e80 2

Ren Bridge 
 
Txn Hash Method
Block
From
To
Value
0x6b0fd88f3eba65bae4059291ada896bea496a6cfe71b43036d8e083fdeb5be6fMint(pending)2021-10-24 4:14:0611 hrs 13 mins ago0xda9b53c44c87f9c3304d000838b4a2f63f5d256c IN Ren: RenBridge0 Ether(Pending)(Pending)
0x80e3d420ed95a85d3d7b4ef711c1b7162f4104e994ef422f64ce52ccc0fb394eMint134808742021-10-24 15:06:0121 mins ago0x9e75d5cf5d6a1970e47bc3d37f3c21a878c321e9 IN  Ren: RenBridge0 Ether0.014690651088 87.129544377
0x4976c71f1580e88cda65271d77e8a095b05b4719f5e294f879a90e9bd9d99a5fMint134807532021-10-24 14:36:0651 mins ago0x7c7199a258b053eb5cb4ce2a06ac2ddeac4a8cf2 IN  Ren: RenBridge0 Ether0.011722349927 69.53294102
0x55d53bcb756d3511b26ea69e71e3f63de523fb935c02d9479b20b4ed4f82b61fMint134799372021-10-24 11:34:473 hrs 52 mins ago0x577c01cb994e714d1284ab2665f3812baabfed07 IN  Ren: RenBridge0 Ether0.012017994633 71.278147604
0xf5fff2d04deda1c63cb77741fa60c52f3e06371d249c21a7407a5a873b1e3bf6Mint134780592021-10-24 4:26:3911 hrs ago0x53e362f2a9943f58ea71555ae9c9623f25076b97 IN  Ren: RenBridge0 Ether0.009314991973 55.253323055
0x028c58b633a4facc2ecc78843723c3cb3a7be6631f8ce5e36de0ecbc952d90fcMint134776562021-10-24 2:55:2612 hrs 32 mins ago0xa9709e74223e01a95762a52979748d55e22cef01 IN  Ren: RenBridge0 Ether0.010358194 77
0xa36ba1fa309d73700fe5d80a5ad97ad497dcc22221e69c4537191c6b47456ec9Mint134774982021-10-24 2:18:5413 hrs 8 mins ago0x37dd3e5158dafb5aef564b97bb6c7108b24b8a2d IN  Ren: RenBridge0 Ether0.008237939359 48.86809645
0x7b7514074279bc491d1d2def30cc563c3306db95be7c57fecba8e67fa24fb4bcTransfer134774582021-10-24 2:10:5113 hrs 16 mins ago0xd78c8e543dce46a07f9c6f5b4652d2d90614ca18 IN  Ren: RenBridge0.024 Ether0.001089055126 51.859767944
0xe220c51a94c6c7b05bf12413d27aa07a4e914ad1e2512e55ebf1f921e737979cMint134770572021-10-24 0:40:5914 hrs 46 mins ago0x873a0af6f90ff49a29d52d4eef565fa0b635b9c5 IN  Ren: RenBridge0 Ether0.009392434117 62.006496894
0x0d6443772af5e03d3b8be84636fe5483f54f9eab6c3e5be4e403e9fb813df349Mint134770522021-10-24 0:40:2014 hrs 47 mins ago0x873a0af6f90ff49a29d52d4eef565fa0b635b9c5 IN  Ren: RenBridge0 Ether0.011699058352 69.394783422
0xc9d28a7bd6ff45d248230ba9373074512b00be0d344a5f4b3c3e59e3c22d580dMint134762682021-10-23 21:35:5617 hrs 51 mins ago0xf5d5f3de7e783f187f5c83030f70d5058b17e0dc IN  Ren: RenBridge0 Ether0.008139664043 48.285119641
0x64bc6515dbf28b040a126073a7a013b8f7518de796f3452278bc102f4f7f12d4Mint134762082021-10-23 21:23:0118 hrs 4 mins ago0xe065550fe104e7bf83ea725f831cb9072e4906b3 IN  Ren: RenBridge0 Ether0.014876427577 88.231375791
0xfd97162159a038fd9e30ab4ef0be9a1b8ab52d1a8d2855def07086d29bfad7beMint134761042021-10-23 20:55:3018 hrs 32 mins agoENS Name ivo2pac.eth IN  Ren: RenBridge0 Ether0.010509456974 62.33995702
0xdc014511879bb8437f2d8db6f4a116e3b196b0e8564b26622b15ad5975cf1637Mint134750932021-10-23 17:17:4922 hrs 9 mins ago0xa9ec77a7aad69280e8b75e474a45a887307be706 IN  Ren: RenBridge0 Ether0.010924405305 64.79980844
0xe143dbfdabe153dc71640d5632b5071480f03d1b19572449866ccddbfd5ad088Mint134750262021-10-23 17:03:0622 hrs 24 mins ago0x064ad79d7f835ecfda1047388450137b1cfbdf87 IN  Ren: RenBridge0 Ether0.010068980757 66.472888317
0x78ddce0caa0ecb8a880c92133f6fa51fcab8694287ec92608e7ab30880a21776Mint134748882021-10-23 16:35:1222 hrs 52 mins ago0xc79cdecc71fc1251d072c7ba4be48a3daac611b0 IN  Ren: RenBridge0 Ether0.014723347779 87.34004318
0xb423edd921008acc1fe29ecd903e886c91ab2cda45e1fc182b5ddd6f706caf05Mint134747782021-10-23 16:09:3623 hrs 17 mins ago0x064ad79d7f835ecfda1047388450137b1cfbdf87 IN  Ren: RenBridge0 Ether0.009208899735 54.627908855
0x5efc1f2ddd550dc4812d5a5b74476deb8d23a4907145c0eb84cdb3a9c1392385Mint134737692021-10-23 12:33:111 day 2 hrs ago0x0116fdba1f1dc87f91fcafe2fb365ca829cee686 IN  Ren: RenBridge0 Ether0.006608577728 49.12345
0xe7b7a1fa22019d0fe318609c353cc75364f9a5986b3bf369793c337d4ecc6f03Mint134732222021-10-23 10:26:571 day 5 hrs ago0x5ba8c82f74c61ec40c3c80b12800c2ed3773a33b IN  Ren: RenBridge0 Ether0.008598419957 51.013758192
0x03bee803745b5b5f08f9b6f1f9972e87df64b7e4300dbf2f135a2e2fc8e3b299Mint134726122021-10-23 8:04:471 day 7 hrs agoENS Name mrunbanked.eth IN  Ren: RenBridge0 Ether0.010743398258 63.723113133
0xb35a81329628e2f2d320bbd77d50e994dd6a1fb7a3ff68fd7b8b5d87d09e070aMint134722062021-10-23 6:27:501 day 8 hrs ago0x14eae6068f57213a5620539d1750fd63ff019a97 IN  Ren: RenBridge0 Ether0.010810111919 64.114253378
0x0ffddd0fc17f50376e378e1e39a469b3925feea8a964c64651dc10af0cef518cMint134718992021-10-23 5:18:511 day 10 hrs ago0xa2683c71becb07e21155313f46f6ba00986414c3 IN  Ren: RenBridge0 Ether0.011422809695 67.752956467
0xf98b5e5fcc6ebbc0c8f3037a93a07fc2ec6cc3493223b645bca9e223376d9f7aMint134718292021-10-23 4:59:131 day 10 hrs ago0x7a7346918292ea438fd45e07a38b234987e22fe5 IN  Ren: RenBridge0 Ether0.010269197168 60.926349701
0x244e5fad48c3ab3d44874833ed7f5b8bd93780214ab5b659cf118c8f54dd8afcMint134715542021-10-23 3:51:081 day 11 hrs ago0x6114694975923c3efae4b87e63c92cc8562125cf IN  Ren: RenBridge0 Ether0.010114560
0x098677b4f96af7e08568ee6941193f7e096451d9175bc1236403e7d64f29ecbeMint134710822021-10-23 1:55:411 day 13 hrs ago0x26c919424e07b6b1d27afb16b47d8ce9fd4e8632 IN  Ren: RenBridge0 Ether0.008536444453 56.34356468
[ Download CSV Export 

OVERVIEW

Bringing cross-chain assets to Ethereum.

Latest 2 internal transactions
Parent Txn Hash Block From To Value
0x5ee9938568744a177302702e0a6fc32c08cb23d79145699e8345bbec48f9687f103545542020-06-28 13:33:54483 days 1 hr ago 0xc28e3fda45241651575cd13ead777a0cfbe8edee Ren: RenBridge0.2 Ether
0x932df73716aae98631f7caa3c02c6c3564ad0438250724fba83b69ef1f9e179c103545472020-06-28 13:32:24483 days 1 hr ago 0xc28e3fda45241651575cd13ead777a0cfbe8edee Ren: RenBridge0.2 Ether
[ Download CSV Export 
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

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2020-03-25
*/

/**

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

Commit hash: 9068f80
Repository: https://github.com/renproject/darknode-sol
Issues: https://github.com/renproject/darknode-sol/issues

Licenses
@openzeppelin/contracts: (MIT) https://github.com/OpenZeppelin/openzeppelin-contracts/blob/master/LICENSE
darknode-sol: (GNU GPL V3) https://github.com/renproject/darknode-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;
}

contract IRelayRecipient {
    
    function getHubAddr() public 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;
}

contract IRelayHub {
    

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

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

    
    function registerRelay(uint256 transactionFee, string memory url) public;

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

    
    function removeRelayByOwner(address relay) public;

    
    event RelayRemoved(address indexed relay, uint256 unstakeTime);

    
    function unstake(address relay) public;

    
    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) public 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) public;

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

    

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

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

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

    
    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) public view returns (uint256);

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

     
     
    
    

    
    function penalizeRepeatedNonce(bytes memory unsignedTx1, bytes memory signature1, bytes memory unsignedTx2, bytes memory signature2) public;

    
    function penalizeIllegalTransaction(bytes memory unsignedTx, bytes memory signature) public;

    
    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

[{"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"}]

60806040523480156200001157600080fd5b506040516200133f3803806200133f833981810160405260208110156200003757600080fd5b50516200004f62000075602090811b6200092717901c565b603480546001600160a01b0319166001600160a01b039290921691909117905562000280565b600054610100900460ff16806200009a57506200009a6001600160e01b036200014c16565b80620000a9575060005460ff16155b620000e65760405162461bcd60e51b815260040180806020018281038252602e815260200180620012e4602e913960400191505060405180910390fd5b600054610100900460ff1615801562000112576000805460ff1961ff0019909116610100171660011790555b6033546001600160a01b03166200013657620001366001600160e01b036200015216565b801562000149576000805461ff00191690555b50565b303b1590565b6200017a73d216153c06e857cd7f72665e0af1d7d82172f4946001600160e01b036200017c16565b565b6033546001600160a01b03908116908216620001ca5760405162461bcd60e51b815260040180806020018281038252602e815260200180620012b6602e913960400191505060405180910390fd5b806001600160a01b0316826001600160a01b031614156200021d5760405162461bcd60e51b815260040180806020018281038252602d81526020018062001312602d913960400191505060405180910390fd5b816001600160a01b0316816001600160a01b03167fb9f84b8e65164b14439ae3620df0a4d8786d896996c0282b683f9d8c08f046e860405160405180910390a350603380546001600160a01b0319166001600160a01b0392909216919091179055565b61102680620002906000396000f3fe608060405234801561001057600080fd5b50600436106100935760003560e01c80638129fc1c116100665780638129fc1c1461021f57806383947ea014610227578063ad61ccd514610394578063b0ba3c5a14610411578063e06e0e22146104cf57610093565b80631220e2ff1461009857806374e861d6146100a257806377f61403146100c657806380274db71461019f575b600080fd5b6100a061054b565b005b6100aa61056a565b604080516001600160a01b039092168252519081900360200190f35b6100a0600480360360a08110156100dc57600080fd5b810190602081018135600160201b8111156100f657600080fd5b82018360208201111561010857600080fd5b803590602001918460018302840111600160201b8311171561012957600080fd5b919390926001600160a01b03833516926020810135926040820135929091608081019060600135600160201b81111561016157600080fd5b82018360208201111561017357600080fd5b803590602001918460018302840111600160201b8311171561019457600080fd5b50909250905061057a565b61020d600480360360208110156101b557600080fd5b810190602081018135600160201b8111156101cf57600080fd5b8201836020820111156101e157600080fd5b803590602001918460018302840111600160201b8311171561020257600080fd5b509092509050610888565b60408051918252519081900360200190f35b6100a0610927565b610315600480360361012081101561023e57600080fd5b6001600160a01b038235811692602081013590911691810190606081016040820135600160201b81111561027157600080fd5b82018360208201111561028357600080fd5b803590602001918460018302840111600160201b831117156102a457600080fd5b9193909282359260208101359260408201359260608301359260a081019060800135600160201b8111156102d757600080fd5b8201836020820111156102e957600080fd5b803590602001918460018302840111600160201b8311171561030a57600080fd5b9193509150356109e1565b6040518083815260200180602001828103825283818151815260200191508051906020019080838360005b83811015610358578181015183820152602001610340565b50505050905090810190601f1680156103855780820380516001836020036101000a031916815260200191505b50935050505060405180910390f35b61039c610a01565b6040805160208082528351818301528351919283929083019185019080838360005b838110156103d65781810151838201526020016103be565b50505050905090810190601f1680156104035780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b6100a06004803603606081101561042757600080fd5b810190602081018135600160201b81111561044157600080fd5b82018360208201111561045357600080fd5b803590602001918460018302840111600160201b8311171561047457600080fd5b919390929091602081019035600160201b81111561049157600080fd5b8201836020820111156104a357600080fd5b803590602001918460018302840111600160201b831117156104c457600080fd5b919350915035610a20565b6100a0600480360360808110156104e557600080fd5b810190602081018135600160201b8111156104ff57600080fd5b82018360208201111561051157600080fd5b803590602001918460018302840111600160201b8311171561053257600080fd5b9193509150803515159060208101359060400135610cef565b61056873d216153c06e857cd7f72665e0af1d7d82172f494610d91565b565b6033546001600160a01b03165b90565b60008787876040516020018080602001836001600160a01b03166001600160a01b031681526020018281038252858582818152602001925080828437600081840152601f19601f8201169050808301925050509450505050506040516020818303038152906040528051906020012090506000603460009054906101000a90046001600160a01b03166001600160a01b03166364936b1e8a8a6040518363ffffffff1660e01b815260040180806020018281038252848482818152602001925080828437600083820152604051601f909101601f191690920195506020945090925050508083038186803b15801561067157600080fd5b505afa158015610685573d6000803e3d6000fd5b505050506040513d602081101561069b57600080fd5b505160405163159ab14d60e01b8152600481018481526024820189905260448201889052608060648301908152608483018790526001600160a01b039093169263159ab14d9286928b928b928b928b92909160a401848480828437600081840152601f19601f8201169050808301925050509650505050505050602060405180830381600087803b15801561072f57600080fd5b505af1158015610743573d6000803e3d6000fd5b505050506040513d602081101561075957600080fd5b505160345460405163efa74f1f60e01b8152602060048201908152602482018c90529293506001600160a01b039091169163efa74f1f918c918c918190604401848480828437600083820152604051601f909101601f191690920195506020945090925050508083038186803b1580156107d257600080fd5b505afa1580156107e6573d6000803e3d6000fd5b505050506040513d60208110156107fc57600080fd5b50516040805163a9059cbb60e01b81526001600160a01b038a81166004830152602482018590529151919092169163a9059cbb9160448083019260209291908290030181600087803b15801561085157600080fd5b505af1158015610865573d6000803e3d6000fd5b505050506040513d602081101561087b57600080fd5b5050505050505050505050565b600061089261056a565b6001600160a01b0316336001600160a01b0316146108e15760405162461bcd60e51b8152600401808060200182810382526024815260200180610fce6024913960400191505060405180910390fd5b61092083838080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250610e9192505050565b9392505050565b600054610100900460ff16806109405750610940610e97565b8061094e575060005460ff16155b6109895760405162461bcd60e51b815260040180806020018281038252602e815260200180610f73602e913960400191505060405180910390fd5b600054610100900460ff161580156109b4576000805460ff1961ff0019909116610100171660011790555b6033546001600160a01b03166109cc576109cc61054b565b80156109de576000805461ff00191690555b50565b600060606109ed610e9d565b915091509b509b9950505050505050505050565b6040805180820190915260058152640312e302e360dc1b602082015290565b60345460405163efa74f1f60e01b8152602060048201908152602482018790526001600160a01b039092169163efa74f1f91889188918190604401848480828437600083820152604051601f909101601f191690920195506020945090925050508083038186803b158015610a9457600080fd5b505afa158015610aa8573d6000803e3d6000fd5b505050506040513d6020811015610abe57600080fd5b50516001600160a01b03166323b872dd610ad6610ec1565b604080516001600160e01b031960e085901b1681526001600160a01b039092166004830152306024830152604482018590525160648083019260209291908290030181600087803b158015610b2a57600080fd5b505af1158015610b3e573d6000803e3d6000fd5b505050506040513d6020811015610b5457600080fd5b5051610b9f576040805162461bcd60e51b81526020600482015260156024820152741d1bdad95b881d1c985b9cd9995c8819985a5b1959605a1b604482015290519081900360640190fd5b603454604051633249b58f60e11b8152602060048201908152602482018790526001600160a01b03909216916364936b1e91889188918190604401848480828437600083820152604051601f909101601f191690920195506020945090925050508083038186803b158015610c1357600080fd5b505afa158015610c27573d6000803e3d6000fd5b505050506040513d6020811015610c3d57600080fd5b5051604080516338463cff60e01b81526024810184905260048101918252604481018590526001600160a01b03909216916338463cff918691869186918190606401858580828437600081840152601f19601f820116905080830192505050945050505050602060405180830381600087803b158015610cbc57600080fd5b505af1158015610cd0573d6000803e3d6000fd5b505050506040513d6020811015610ce657600080fd5b50505050505050565b610cf761056a565b6001600160a01b0316336001600160a01b031614610d465760405162461bcd60e51b8152600401808060200182810382526024815260200180610fce6024913960400191505060405180910390fd5b610d8a85858080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250879250869150859050610eec565b5050505050565b6033546001600160a01b03908116908216610ddd5760405162461bcd60e51b815260040180806020018281038252602e815260200180610f45602e913960400191505060405180910390fd5b806001600160a01b0316826001600160a01b03161415610e2e5760405162461bcd60e51b815260040180806020018281038252602d815260200180610fa1602d913960400191505060405180910390fd5b816001600160a01b0316816001600160a01b03167fb9f84b8e65164b14439ae3620df0a4d8786d896996c0282b683f9d8c08f046e860405160405180910390a350603380546001600160a01b0319166001600160a01b0392909216919091179055565b50600090565b303b1590565b60006060610eb960405180602001604052806000815250610ef2565b915091509091565b6033546000906001600160a01b03163314610edd575033610577565b610ee5610ef7565b9050610577565b50505050565b600091565b600060606000368080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152505050503601516001600160a01b03169291505056fe47534e526563697069656e743a206e65772052656c617948756220697320746865207a65726f2061646472657373436f6e747261637420696e7374616e63652068617320616c7265616479206265656e20696e697469616c697a656447534e526563697069656e743a206e65772052656c6179487562206973207468652063757272656e74206f6e6547534e526563697069656e743a2063616c6c6572206973206e6f742052656c6179487562a265627a7a7231582081296e46a2c4dfca2940f6726ec640b9ef1921d80714c55ae081aa24162bd27164736f6c6343000510003247534e526563697069656e743a206e65772052656c617948756220697320746865207a65726f2061646472657373436f6e747261637420696e7374616e63652068617320616c7265616479206265656e20696e697469616c697a656447534e526563697069656e743a206e65772052656c6179487562206973207468652063757272656e74206f6e65000000000000000000000000e80d347df1209a76dd9d2319d62912ba98c54ddd

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

000000000000000000000000e80d347df1209a76dd9d2319d62912ba98c54ddd

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

-----Encoded View---------------
1 Constructor Arguments found :
Arg [0] : 000000000000000000000000e80d347df1209a76dd9d2319d62912ba98c54ddd


Block Transaction Difficulty Gas Used Reward
Block Uncle Number Difficulty Gas Used Reward
Loading
Loading
Make sure to use the "Vote Down" button for any spammy posts, and the "Vote Up" for interesting conversations.