Contract Overview
Balance:
0 FTM
FTM Value:
$0.00
My Name Tag:
Not Available, login to update
[ Download CSV Export ]
Latest 1 internal transaction
Parent Txn Hash | Block | From | To | Value | |||
---|---|---|---|---|---|---|---|
0x7f183392b8a6225c7a46c1e346b5db12e513e789223d33a55bf0e982916c3810 | 7496537 | 615 days 16 hrs ago | Ren: Deployer | Contract Creation | 0 FTM |
[ Download CSV Export ]
Contract Name:
BasicAdapter
Compiler Version
v0.5.17+commit.d19bba13
Optimization Enabled:
Yes with 200 runs
Other Settings:
default evmVersion
Contract Source Code (Solidity)
/** *Submitted for verification at FtmScan.com on 2021-08-28 */ /** Deployed by Ren Project, https://renproject.io Commit hash: 05c0aaf 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.17; 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
- No Contract Security Audit Submitted- Submit Audit Here
[{"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"}]
Contract Creation Code
60806040523480156200001157600080fd5b506040516200133f3803806200133f833981810160405260208110156200003757600080fd5b50516200004f62000075602090811b6200092717901c565b603480546001600160a01b0319166001600160a01b039290921691909117905562000280565b600054610100900460ff16806200009a57506200009a6001600160e01b036200014c16565b80620000a9575060005460ff16155b620000e65760405162461bcd60e51b815260040180806020018281038252602e815260200180620012e4602e913960400191505060405180910390fd5b600054610100900460ff1615801562000112576000805460ff1961ff0019909116610100171660011790555b6033546001600160a01b03166200013657620001366001600160e01b036200015216565b801562000149576000805461ff00191690555b50565b303b1590565b6200017a73d216153c06e857cd7f72665e0af1d7d82172f4946001600160e01b036200017c16565b565b6033546001600160a01b03908116908216620001ca5760405162461bcd60e51b815260040180806020018281038252602e815260200180620012b6602e913960400191505060405180910390fd5b806001600160a01b0316826001600160a01b031614156200021d5760405162461bcd60e51b815260040180806020018281038252602d81526020018062001312602d913960400191505060405180910390fd5b816001600160a01b0316816001600160a01b03167fb9f84b8e65164b14439ae3620df0a4d8786d896996c0282b683f9d8c08f046e860405160405180910390a350603380546001600160a01b0319166001600160a01b0392909216919091179055565b61102680620002906000396000f3fe608060405234801561001057600080fd5b50600436106100935760003560e01c80638129fc1c116100665780638129fc1c1461021f57806383947ea014610227578063ad61ccd514610394578063b0ba3c5a14610411578063e06e0e22146104cf57610093565b80631220e2ff1461009857806374e861d6146100a257806377f61403146100c657806380274db71461019f575b600080fd5b6100a061054b565b005b6100aa61056a565b604080516001600160a01b039092168252519081900360200190f35b6100a0600480360360a08110156100dc57600080fd5b810190602081018135600160201b8111156100f657600080fd5b82018360208201111561010857600080fd5b803590602001918460018302840111600160201b8311171561012957600080fd5b919390926001600160a01b03833516926020810135926040820135929091608081019060600135600160201b81111561016157600080fd5b82018360208201111561017357600080fd5b803590602001918460018302840111600160201b8311171561019457600080fd5b50909250905061057a565b61020d600480360360208110156101b557600080fd5b810190602081018135600160201b8111156101cf57600080fd5b8201836020820111156101e157600080fd5b803590602001918460018302840111600160201b8311171561020257600080fd5b509092509050610888565b60408051918252519081900360200190f35b6100a0610927565b610315600480360361012081101561023e57600080fd5b6001600160a01b038235811692602081013590911691810190606081016040820135600160201b81111561027157600080fd5b82018360208201111561028357600080fd5b803590602001918460018302840111600160201b831117156102a457600080fd5b9193909282359260208101359260408201359260608301359260a081019060800135600160201b8111156102d757600080fd5b8201836020820111156102e957600080fd5b803590602001918460018302840111600160201b8311171561030a57600080fd5b9193509150356109e1565b6040518083815260200180602001828103825283818151815260200191508051906020019080838360005b83811015610358578181015183820152602001610340565b50505050905090810190601f1680156103855780820380516001836020036101000a031916815260200191505b50935050505060405180910390f35b61039c610a01565b6040805160208082528351818301528351919283929083019185019080838360005b838110156103d65781810151838201526020016103be565b50505050905090810190601f1680156104035780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b6100a06004803603606081101561042757600080fd5b810190602081018135600160201b81111561044157600080fd5b82018360208201111561045357600080fd5b803590602001918460018302840111600160201b8311171561047457600080fd5b919390929091602081019035600160201b81111561049157600080fd5b8201836020820111156104a357600080fd5b803590602001918460018302840111600160201b831117156104c457600080fd5b919350915035610a20565b6100a0600480360360808110156104e557600080fd5b810190602081018135600160201b8111156104ff57600080fd5b82018360208201111561051157600080fd5b803590602001918460018302840111600160201b8311171561053257600080fd5b9193509150803515159060208101359060400135610cef565b61056873d216153c06e857cd7f72665e0af1d7d82172f494610d91565b565b6033546001600160a01b03165b90565b60008787876040516020018080602001836001600160a01b03166001600160a01b031681526020018281038252858582818152602001925080828437600081840152601f19601f8201169050808301925050509450505050506040516020818303038152906040528051906020012090506000603460009054906101000a90046001600160a01b03166001600160a01b03166364936b1e8a8a6040518363ffffffff1660e01b815260040180806020018281038252848482818152602001925080828437600083820152604051601f909101601f191690920195506020945090925050508083038186803b15801561067157600080fd5b505afa158015610685573d6000803e3d6000fd5b505050506040513d602081101561069b57600080fd5b505160405163159ab14d60e01b8152600481018481526024820189905260448201889052608060648301908152608483018790526001600160a01b039093169263159ab14d9286928b928b928b928b92909160a401848480828437600081840152601f19601f8201169050808301925050509650505050505050602060405180830381600087803b15801561072f57600080fd5b505af1158015610743573d6000803e3d6000fd5b505050506040513d602081101561075957600080fd5b505160345460405163efa74f1f60e01b8152602060048201908152602482018c90529293506001600160a01b039091169163efa74f1f918c918c918190604401848480828437600083820152604051601f909101601f191690920195506020945090925050508083038186803b1580156107d257600080fd5b505afa1580156107e6573d6000803e3d6000fd5b505050506040513d60208110156107fc57600080fd5b50516040805163a9059cbb60e01b81526001600160a01b038a81166004830152602482018590529151919092169163a9059cbb9160448083019260209291908290030181600087803b15801561085157600080fd5b505af1158015610865573d6000803e3d6000fd5b505050506040513d602081101561087b57600080fd5b5050505050505050505050565b600061089261056a565b6001600160a01b0316336001600160a01b0316146108e15760405162461bcd60e51b8152600401808060200182810382526024815260200180610fce6024913960400191505060405180910390fd5b61092083838080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250610e9192505050565b9392505050565b600054610100900460ff16806109405750610940610e97565b8061094e575060005460ff16155b6109895760405162461bcd60e51b815260040180806020018281038252602e815260200180610f73602e913960400191505060405180910390fd5b600054610100900460ff161580156109b4576000805460ff1961ff0019909116610100171660011790555b6033546001600160a01b03166109cc576109cc61054b565b80156109de576000805461ff00191690555b50565b600060606109ed610e9d565b915091509b509b9950505050505050505050565b6040805180820190915260058152640312e302e360dc1b602082015290565b60345460405163efa74f1f60e01b8152602060048201908152602482018790526001600160a01b039092169163efa74f1f91889188918190604401848480828437600083820152604051601f909101601f191690920195506020945090925050508083038186803b158015610a9457600080fd5b505afa158015610aa8573d6000803e3d6000fd5b505050506040513d6020811015610abe57600080fd5b50516001600160a01b03166323b872dd610ad6610ec1565b604080516001600160e01b031960e085901b1681526001600160a01b039092166004830152306024830152604482018590525160648083019260209291908290030181600087803b158015610b2a57600080fd5b505af1158015610b3e573d6000803e3d6000fd5b505050506040513d6020811015610b5457600080fd5b5051610b9f576040805162461bcd60e51b81526020600482015260156024820152741d1bdad95b881d1c985b9cd9995c8819985a5b1959605a1b604482015290519081900360640190fd5b603454604051633249b58f60e11b8152602060048201908152602482018790526001600160a01b03909216916364936b1e91889188918190604401848480828437600083820152604051601f909101601f191690920195506020945090925050508083038186803b158015610c1357600080fd5b505afa158015610c27573d6000803e3d6000fd5b505050506040513d6020811015610c3d57600080fd5b5051604080516338463cff60e01b81526024810184905260048101918252604481018590526001600160a01b03909216916338463cff918691869186918190606401858580828437600081840152601f19601f820116905080830192505050945050505050602060405180830381600087803b158015610cbc57600080fd5b505af1158015610cd0573d6000803e3d6000fd5b505050506040513d6020811015610ce657600080fd5b50505050505050565b610cf761056a565b6001600160a01b0316336001600160a01b031614610d465760405162461bcd60e51b8152600401808060200182810382526024815260200180610fce6024913960400191505060405180910390fd5b610d8a85858080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250879250869150859050610eec565b5050505050565b6033546001600160a01b03908116908216610ddd5760405162461bcd60e51b815260040180806020018281038252602e815260200180610f45602e913960400191505060405180910390fd5b806001600160a01b0316826001600160a01b03161415610e2e5760405162461bcd60e51b815260040180806020018281038252602d815260200180610fa1602d913960400191505060405180910390fd5b816001600160a01b0316816001600160a01b03167fb9f84b8e65164b14439ae3620df0a4d8786d896996c0282b683f9d8c08f046e860405160405180910390a350603380546001600160a01b0319166001600160a01b0392909216919091179055565b50600090565b303b1590565b60006060610eb960405180602001604052806000815250610ef2565b915091509091565b6033546000906001600160a01b03163314610edd575033610577565b610ee5610ef7565b9050610577565b50505050565b600091565b600060606000368080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152505050503601516001600160a01b03169291505056fe47534e526563697069656e743a206e65772052656c617948756220697320746865207a65726f2061646472657373436f6e747261637420696e7374616e63652068617320616c7265616479206265656e20696e697469616c697a656447534e526563697069656e743a206e65772052656c6179487562206973207468652063757272656e74206f6e6547534e526563697069656e743a2063616c6c6572206973206e6f742052656c6179487562a265627a7a72315820e484716aa8f5e7e3a42a23fa1a0806b1575f8df9b0782026b19232c971dd45b264736f6c6343000511003247534e526563697069656e743a206e65772052656c617948756220697320746865207a65726f2061646472657373436f6e747261637420696e7374616e63652068617320616c7265616479206265656e20696e697469616c697a656447534e526563697069656e743a206e65772052656c6179487562206973207468652063757272656e74206f6e6500000000000000000000000021c482f153d0317fe85c60be1f7fa079019fcebd
Constructor Arguments (ABI-Encoded and is the last bytes of the Contract Creation Code above)
00000000000000000000000021c482f153d0317fe85c60be1f7fa079019fcebd
-----Decoded View---------------
Arg [0] : _registry (address): 0x21c482f153d0317fe85c60be1f7fa079019fcebd
-----Encoded View---------------
1 Constructor Arguments found :
Arg [0] : 00000000000000000000000021c482f153d0317fe85c60be1f7fa079019fcebd
Age | Block | Fee Address | BC Fee Address | Voting Power | Jailed | Incoming |
---|
Validator ID :
0 FTM
Amount Staked
0
Amount Delegated
0
Staking Total
0
Staking Start Epoch
0
Staking Start Time
0
Proof of Importance
0
Origination Score
0
Validation Score
0
Active
0
Online
0
Downtime
0 s
Address | Amount | claimed Rewards | Created On Epoch | Created On |
---|
Make sure to use the "Vote Down" button for any spammy posts, and the "Vote Up" for interesting conversations.