Contract Overview
Balance:
0 MOVR
MOVR Value:
$0.00
My Name Tag:
Not Available, login to update
Txn Hash | Method |
Block
|
From
|
To
|
Value | [Txn Fee] | |||
---|---|---|---|---|---|---|---|---|---|
0x6eb7cddf15a5a0e9c50f4cabb72533bcce857a2a1b2a1d1d8e9c7e6df3373bf1 | Set Ledger Revis... | 1733720 | 286 days 4 hrs ago | Lido: Deployer | IN | 0x36cf86ffa541fed07550ffd9536dbfaac73da7eb | 0 MOVR | 0.000052496 | |
0xa005a9758a31f0ec8d1433c560b4741f6cc91becd9d9210c43cde1db2f63d840 | Set Current Revi... | 1733716 | 286 days 4 hrs ago | Lido: Deployer | IN | 0x36cf86ffa541fed07550ffd9536dbfaac73da7eb | 0 MOVR | 0.000064282 | |
0x3209fa9cba10cb40eec2c6634d3d1970fef12f095fce4fde4675dda1c54c5787 | Set Ledger Revis... | 1722374 | 289 days 7 hrs ago | Lido: Deployer | IN | 0x36cf86ffa541fed07550ffd9536dbfaac73da7eb | 0 MOVR | 0.000107596 | |
0x0e824c766b998170c9da55f9dec0d86eebc604abb7b05d4b6fab63ab8c997857 | Add Implementati... | 1722362 | 289 days 7 hrs ago | Lido: Deployer | IN | 0x36cf86ffa541fed07550ffd9536dbfaac73da7eb | 0 MOVR | 0.000085223 | |
0x88a8bda5d70035fe00b8e396f17ca030ca472aa33c92a43208fd2f3abf724143 | Set Current Revi... | 1545647 | 337 days 4 hrs ago | Lido: Deployer | IN | 0x36cf86ffa541fed07550ffd9536dbfaac73da7eb | 0 MOVR | 0.000064282 | |
0xc290f299d3b4f33a25d0729607678b6c441bce754319788400678a1ec279460f | Add Implementati... | 1545644 | 337 days 4 hrs ago | Lido: Deployer | IN | 0x36cf86ffa541fed07550ffd9536dbfaac73da7eb | 0 MOVR | 0.000085223 | |
0x1c68d1a37bedafa5ce36101869025264ce1bcbf77629cb70b05086f1356ca780 | 0x60806040 | 1462830 | 358 days 3 hrs ago | Lido: Deployer | IN | Create: LedgerBeacon | 0 MOVR | 0.002080461 |
[ Download CSV Export ]
Contract Name:
LedgerBeacon
Compiler Version
v0.8.9+commit.e5eed63a
Contract Source Code (Solidity Standard Json-Input format)
// SPDX-License-Identifier: MIT pragma solidity ^0.8.0; import "IBeacon.sol"; import "Address.sol"; import "ILido.sol"; import "IAuthManager.sol"; /** * @dev This contract is used in conjunction with one or more instances of {BeaconProxy} to determine their * implementation contract, which is where they will delegate all function calls. * * An ROLE_BEACON_MANAGER is able to change the implementation the beacon points to, thus upgrading the proxies that use this beacon. */ contract LedgerBeacon is IBeacon { // LIDO address address public LIDO; // current revision index uint256 public currentRevision; // index of newest revision uint256 public latestRevision; // array of implementations address[] public revisionImplementation; // revision index for specific ledger (if revision == 0 => current revision used) mapping(address => uint256) public ledgerRevision; // index of max revision for ledger mapping(address => uint256) public ledgerMaxRevision; // Beacon manager role bytes32 internal constant ROLE_BEACON_MANAGER = keccak256("ROLE_BEACON_MANAGER"); /** * @dev Emitted when new implementation revision added. */ event NewRevision(address indexed implementation); /** * @dev Emitted when current revision updated. */ event NewCurrentRevision(address indexed implementation); /** * @dev Emitted when ledger current revision updated. */ event NewLedgerRevision(address indexed ledger, address indexed implementation); modifier auth(bytes32 role) { require(IAuthManager(ILido(LIDO).AUTH_MANAGER()).has(role, msg.sender), "LEDGER_BEACON: UNAUTHOROZED"); _; } /** * @dev Sets the address of the initial implementation, and the deployer account as the owner who can upgrade the * beacon. */ constructor(address implementation_, address _lido) { _setImplementation(implementation_); currentRevision = latestRevision; LIDO = _lido; } /** * @dev Returns the current implementation address. */ function implementation() public view virtual override returns (address) { if (ledgerRevision[msg.sender] != 0) { return revisionImplementation[ledgerRevision[msg.sender] - 1]; } return revisionImplementation[currentRevision - 1]; } /** * @dev Set ledger revision to `_revision` */ function setLedgerRevision(address _ledger, uint256 _revision) external auth(ROLE_BEACON_MANAGER) { require( (ledgerRevision[_ledger] == 0 && _revision > ledgerMaxRevision[_ledger] && _revision <= latestRevision) || (ledgerRevision[_ledger] > 0 && _revision == 0), "LEDGER_BEACON: INCORRECT_REVISION" ); ledgerRevision[_ledger] = _revision; if (_revision == 0) { _revision = currentRevision; } else { ledgerMaxRevision[_ledger] = _revision; } emit NewLedgerRevision(_ledger, revisionImplementation[_revision - 1]); } /** * @dev Update current revision */ function setCurrentRevision(uint256 _newCurrentRevision) external auth(ROLE_BEACON_MANAGER) { require(_newCurrentRevision > currentRevision && _newCurrentRevision <= latestRevision, "LEDGER_BEACON: INCORRECT_REVISION"); currentRevision = _newCurrentRevision; emit NewCurrentRevision(revisionImplementation[_newCurrentRevision - 1]); } /** * @dev Add new revision of implementation to beacon. * * Emits an {Upgraded} event. * * Requirements: * * - msg.sender must be the owner of the contract. * - `newImplementation` must be a contract. */ function addImplementation(address newImplementation) public auth(ROLE_BEACON_MANAGER) { _setImplementation(newImplementation); emit NewRevision(newImplementation); } /** * @dev Sets the implementation contract address for this beacon * * Requirements: * * - `newImplementation` must be a contract. */ function _setImplementation(address newImplementation) private { require(Address.isContract(newImplementation), "LEDGER_BEACON: implementation is not a contract"); latestRevision += 1; revisionImplementation.push(newImplementation); } }
// SPDX-License-Identifier: MIT pragma solidity ^0.8.0; /** * @dev This is the interface that {BeaconProxy} expects of its beacon. */ interface IBeacon { /** * @dev Must return an address that can be used as a delegate call target. * * {BeaconProxy} will check that this address is a contract. */ function implementation() external view returns (address); }
// SPDX-License-Identifier: MIT pragma solidity ^0.8.0; /** * @dev Collection of functions related to the address type */ library Address { /** * @dev Returns true if `account` is a contract. * * [IMPORTANT] * ==== * It is unsafe to assume that an address for which this function returns * false is an externally-owned account (EOA) and not a contract. * * Among others, `isContract` will return false for the following * types of addresses: * * - an externally-owned account * - a contract in construction * - an address where a contract will be created * - an address where a contract lived, but was destroyed * ==== */ function isContract(address account) internal view returns (bool) { // This method relies on extcodesize, which returns 0 for contracts in // construction, since the code is only stored at the end of the // constructor execution. uint256 size; // solhint-disable-next-line no-inline-assembly assembly { size := extcodesize(account) } return size > 0; } /** * @dev Replacement for Solidity's `transfer`: sends `amount` wei to * `recipient`, forwarding all available gas and reverting on errors. * * https://eips.ethereum.org/EIPS/eip-1884[EIP1884] increases the gas cost * of certain opcodes, possibly making contracts go over the 2300 gas limit * imposed by `transfer`, making them unable to receive funds via * `transfer`. {sendValue} removes this limitation. * * https://diligence.consensys.net/posts/2019/09/stop-using-soliditys-transfer-now/[Learn more]. * * IMPORTANT: because control is transferred to `recipient`, care must be * taken to not create reentrancy vulnerabilities. Consider using * {ReentrancyGuard} or the * https://solidity.readthedocs.io/en/v0.5.11/security-considerations.html#use-the-checks-effects-interactions-pattern[checks-effects-interactions pattern]. */ function sendValue(address payable recipient, uint256 amount) internal { require(address(this).balance >= amount, "Address: insufficient balance"); // solhint-disable-next-line avoid-low-level-calls, avoid-call-value (bool success, ) = recipient.call{ value: amount }(""); require(success, "Address: unable to send value, recipient may have reverted"); } /** * @dev Performs a Solidity function call using a low level `call`. A * plain`call` is an unsafe replacement for a function call: use this * function instead. * * If `target` reverts with a revert reason, it is bubbled up by this * function (like regular Solidity function calls). * * Returns the raw returned data. To convert to the expected return value, * use https://solidity.readthedocs.io/en/latest/units-and-global-variables.html?highlight=abi.decode#abi-encoding-and-decoding-functions[`abi.decode`]. * * Requirements: * * - `target` must be a contract. * - calling `target` with `data` must not revert. * * _Available since v3.1._ */ function functionCall(address target, bytes memory data) internal returns (bytes memory) { return functionCall(target, data, "Address: low-level call failed"); } /** * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`], but with * `errorMessage` as a fallback revert reason when `target` reverts. * * _Available since v3.1._ */ function functionCall(address target, bytes memory data, string memory errorMessage) internal returns (bytes memory) { return functionCallWithValue(target, data, 0, errorMessage); } /** * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`], * but also transferring `value` wei to `target`. * * Requirements: * * - the calling contract must have an ETH balance of at least `value`. * - the called Solidity function must be `payable`. * * _Available since v3.1._ */ function functionCallWithValue(address target, bytes memory data, uint256 value) internal returns (bytes memory) { return functionCallWithValue(target, data, value, "Address: low-level call with value failed"); } /** * @dev Same as {xref-Address-functionCallWithValue-address-bytes-uint256-}[`functionCallWithValue`], but * with `errorMessage` as a fallback revert reason when `target` reverts. * * _Available since v3.1._ */ function functionCallWithValue(address target, bytes memory data, uint256 value, string memory errorMessage) internal returns (bytes memory) { require(address(this).balance >= value, "Address: insufficient balance for call"); require(isContract(target), "Address: call to non-contract"); // solhint-disable-next-line avoid-low-level-calls (bool success, bytes memory returndata) = target.call{ value: value }(data); return _verifyCallResult(success, returndata, errorMessage); } /** * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`], * but performing a static call. * * _Available since v3.3._ */ function functionStaticCall(address target, bytes memory data) internal view returns (bytes memory) { return functionStaticCall(target, data, "Address: low-level static call failed"); } /** * @dev Same as {xref-Address-functionCall-address-bytes-string-}[`functionCall`], * but performing a static call. * * _Available since v3.3._ */ function functionStaticCall(address target, bytes memory data, string memory errorMessage) internal view returns (bytes memory) { require(isContract(target), "Address: static call to non-contract"); // solhint-disable-next-line avoid-low-level-calls (bool success, bytes memory returndata) = target.staticcall(data); return _verifyCallResult(success, returndata, errorMessage); } /** * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`], * but performing a delegate call. * * _Available since v3.4._ */ function functionDelegateCall(address target, bytes memory data) internal returns (bytes memory) { return functionDelegateCall(target, data, "Address: low-level delegate call failed"); } /** * @dev Same as {xref-Address-functionCall-address-bytes-string-}[`functionCall`], * but performing a delegate call. * * _Available since v3.4._ */ function functionDelegateCall(address target, bytes memory data, string memory errorMessage) internal returns (bytes memory) { require(isContract(target), "Address: delegate call to non-contract"); // solhint-disable-next-line avoid-low-level-calls (bool success, bytes memory returndata) = target.delegatecall(data); return _verifyCallResult(success, returndata, errorMessage); } function _verifyCallResult(bool success, bytes memory returndata, string memory errorMessage) private pure returns(bytes memory) { if (success) { return returndata; } else { // Look for revert reason and bubble it up if present if (returndata.length > 0) { // The easiest way to bubble the revert reason is using memory via assembly // solhint-disable-next-line no-inline-assembly assembly { let returndata_size := mload(returndata) revert(add(32, returndata), returndata_size) } } else { revert(errorMessage); } } } }
// SPDX-License-Identifier: MIT pragma solidity ^0.8.0; import "Types.sol"; interface ILido { function MAX_ALLOWABLE_DIFFERENCE() external view returns(uint128); function developers() external view returns(address); function deposit(uint256 amount) external returns (uint256); function distributeRewards(uint256 totalRewards, uint256 ledgerBalance) external; function distributeLosses(uint256 totalLosses, uint256 ledgerBalance) external; function getStashAccounts() external view returns (bytes32[] memory); function getLedgerAddresses() external view returns (address[] memory); function ledgerStake(address ledger) external view returns (uint256); function ledgerShares(address ledger) external view returns (uint256); function avaliableForStake() external view returns (uint256); function transferFromLedger(uint256 amount) external; function transferToLedger(uint256 amount) external; function flushStakes() external; function findLedger(bytes32 stash) external view returns (address); function AUTH_MANAGER() external returns(address); function ORACLE_MASTER() external view returns (address); function getPooledKSMByShares(uint256 sharesAmount) external view returns (uint256); function getSharesByPooledKSM(uint256 amount) external view returns (uint256); function transfer(address recipient, uint256 amount) external returns (bool); function transferFrom(address sender, address recipient, uint256 amount) external returns (bool); }
// SPDX-License-Identifier: MIT pragma solidity ^0.8.0; interface Types { struct Fee{ uint16 total; uint16 operators; uint16 developers; uint16 treasury; } struct Stash { bytes32 stashAccount; uint64 eraId; } enum LedgerStatus { // bonded but not participate in staking Idle, // participate as nominator Nominator, // participate as validator Validator, // not bonded not participate in staking None } struct UnlockingChunk { uint128 balance; uint64 era; } struct OracleData { bytes32 stashAccount; bytes32 controllerAccount; LedgerStatus stakeStatus; // active part of stash balance uint128 activeBalance; // locked for stake stash balance. uint128 totalBalance; // totalBalance = activeBalance + sum(unlocked.balance) UnlockingChunk[] unlocking; uint32[] claimedRewards; // stash account balance. It includes locked (totalBalance) balance assigned // to a controller. uint128 stashBalance; // slashing spans for ledger uint32 slashingSpans; } struct RelaySpec { uint16 maxValidatorsPerLedger; uint128 minNominatorBalance; uint128 ledgerMinimumActiveBalance; uint256 maxUnlockingChunks; } }
// SPDX-License-Identifier: MIT pragma solidity ^0.8.0; interface IAuthManager { function has(bytes32 role, address member) external view returns (bool); function add(bytes32 role, address member) external; function remove(bytes32 role, address member) external; }
{ "evmVersion": "istanbul", "optimizer": { "enabled": true, "runs": 200 }, "libraries": { "LedgerBeacon.sol": {} }, "outputSelection": { "*": { "*": [ "evm.bytecode", "evm.deployedBytecode", "devdoc", "userdoc", "metadata", "abi" ] } } }
[{"inputs":[{"internalType":"address","name":"implementation_","type":"address"},{"internalType":"address","name":"_lido","type":"address"}],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"implementation","type":"address"}],"name":"NewCurrentRevision","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"ledger","type":"address"},{"indexed":true,"internalType":"address","name":"implementation","type":"address"}],"name":"NewLedgerRevision","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"implementation","type":"address"}],"name":"NewRevision","type":"event"},{"inputs":[],"name":"LIDO","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"newImplementation","type":"address"}],"name":"addImplementation","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"currentRevision","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"implementation","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"latestRevision","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"ledgerMaxRevision","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"ledgerRevision","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"}],"name":"revisionImplementation","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_newCurrentRevision","type":"uint256"}],"name":"setCurrentRevision","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_ledger","type":"address"},{"internalType":"uint256","name":"_revision","type":"uint256"}],"name":"setLedgerRevision","outputs":[],"stateMutability":"nonpayable","type":"function"}]
Contract Creation Code
608060405234801561001057600080fd5b50604051610c73380380610c7383398101604081905261002f9161016b565b61003882610064565b600254600155600080546001600160a01b0319166001600160a01b0392909216919091179055506101c4565b6100778161014960201b6108011760201c565b6100df5760405162461bcd60e51b815260206004820152602f60248201527f4c45444745525f424541434f4e3a20696d706c656d656e746174696f6e20697360448201526e081b9bdd08184818dbdb9d1c9858dd608a1b606482015260840160405180910390fd5b6001600260008282546100f2919061019e565b9091555050600380546001810182556000919091527fc2575a0e9e593c00f959f8c92f12db2869c3395a3b0502d05e2516446f71f85b0180546001600160a01b0319166001600160a01b0392909216919091179055565b3b151590565b80516001600160a01b038116811461016657600080fd5b919050565b6000806040838503121561017e57600080fd5b6101878361014f565b91506101956020840161014f565b90509250929050565b600082198211156101bf57634e487b7160e01b600052601160045260246000fd5b500190565b610aa0806101d36000396000f3fe608060405234801561001057600080fd5b506004361061009e5760003560e01c806362dd5b2c1161006657806362dd5b2c146101285780638b21f1701461013b578063ad46d5f31461014e578063c6e2a40014610163578063d7d908631461017657600080fd5b8063078b97fe146100a35780635637c85e146100bf578063594af68b146100c85780635a5c95ae146100e85780635c60da1b14610108575b600080fd5b6100ac60015481565b6040519081526020015b60405180910390f35b6100ac60025481565b6100ac6100d63660046108ef565b60056020526000908152604090205481565b6100ac6100f63660046108ef565b60046020526000908152604090205481565b610110610189565b6040516001600160a01b0390911681526020016100b6565b610110610136366004610913565b6101f7565b600054610110906001600160a01b031681565b61016161015c366004610913565b610221565b005b6101616101713660046108ef565b6103ff565b61016161018436600461092c565b610583565b33600090815260046020526040812054156101e757336000908152600460205260409020546003906101bd9060019061096e565b815481106101cd576101cd610985565b6000918252602090912001546001600160a01b0316919050565b6003600180546101bd919061096e565b6003818154811061020757600080fd5b6000918252602090912001546001600160a01b0316905081565b7f9336eb28e461adb6ba7e620f5006a6952a65a21a4db92c2edb104bf7f1c38c6360008054906101000a90046001600160a01b03166001600160a01b031663a1e206c76040518163ffffffff1660e01b8152600401602060405180830381600087803b15801561029057600080fd5b505af11580156102a4573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906102c8919061099b565b604051633bfc46cb60e21b8152600481018390523360248201526001600160a01b03919091169063eff11b2c9060440160206040518083038186803b15801561031057600080fd5b505afa158015610324573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061034891906109b8565b61036d5760405162461bcd60e51b8152600401610364906109da565b60405180910390fd5b6001548211801561038057506002548211155b61039c5760405162461bcd60e51b815260040161036490610a11565b60018281556003906103ae908461096e565b815481106103be576103be610985565b60009182526020822001546040516001600160a01b03909116917f1a8dd38a3306ba324b59cdd94317161d6d760814796c8e2fbeafa96bf734b0b991a25050565b7f9336eb28e461adb6ba7e620f5006a6952a65a21a4db92c2edb104bf7f1c38c6360008054906101000a90046001600160a01b03166001600160a01b031663a1e206c76040518163ffffffff1660e01b8152600401602060405180830381600087803b15801561046e57600080fd5b505af1158015610482573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906104a6919061099b565b604051633bfc46cb60e21b8152600481018390523360248201526001600160a01b03919091169063eff11b2c9060440160206040518083038186803b1580156104ee57600080fd5b505afa158015610502573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061052691906109b8565b6105425760405162461bcd60e51b8152600401610364906109da565b61054b82610807565b6040516001600160a01b038316907f9da3a12664246b3a91b1e92c39d7a591ab70c5c32805d4f5dc580c09a7d3bae390600090a25050565b7f9336eb28e461adb6ba7e620f5006a6952a65a21a4db92c2edb104bf7f1c38c6360008054906101000a90046001600160a01b03166001600160a01b031663a1e206c76040518163ffffffff1660e01b8152600401602060405180830381600087803b1580156105f257600080fd5b505af1158015610606573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061062a919061099b565b604051633bfc46cb60e21b8152600481018390523360248201526001600160a01b03919091169063eff11b2c9060440160206040518083038186803b15801561067257600080fd5b505afa158015610686573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906106aa91906109b8565b6106c65760405162461bcd60e51b8152600401610364906109da565b6001600160a01b03831660009081526004602052604090205415801561070357506001600160a01b03831660009081526005602052604090205482115b801561071157506002548211155b8061073c57506001600160a01b0383166000908152600460205260409020541580159061073c575081155b6107585760405162461bcd60e51b815260040161036490610a11565b6001600160a01b03831660009081526004602052604090208290558161078257600154915061079e565b6001600160a01b03831660009081526005602052604090208290555b60036107ab60018461096e565b815481106107bb576107bb610985565b60009182526020822001546040516001600160a01b0391821692918616917fc480c996c754a258bc86eda52e1114d58412383b98e88cebe8f1be817cb5684991a3505050565b3b151590565b803b61086d5760405162461bcd60e51b815260206004820152602f60248201527f4c45444745525f424541434f4e3a20696d706c656d656e746174696f6e20697360448201526e081b9bdd08184818dbdb9d1c9858dd608a1b6064820152608401610364565b6001600260008282546108809190610a52565b9091555050600380546001810182556000919091527fc2575a0e9e593c00f959f8c92f12db2869c3395a3b0502d05e2516446f71f85b0180546001600160a01b0319166001600160a01b0392909216919091179055565b6001600160a01b03811681146108ec57600080fd5b50565b60006020828403121561090157600080fd5b813561090c816108d7565b9392505050565b60006020828403121561092557600080fd5b5035919050565b6000806040838503121561093f57600080fd5b823561094a816108d7565b946020939093013593505050565b634e487b7160e01b600052601160045260246000fd5b60008282101561098057610980610958565b500390565b634e487b7160e01b600052603260045260246000fd5b6000602082840312156109ad57600080fd5b815161090c816108d7565b6000602082840312156109ca57600080fd5b8151801515811461090c57600080fd5b6020808252601b908201527f4c45444745525f424541434f4e3a20554e415554484f524f5a45440000000000604082015260600190565b60208082526021908201527f4c45444745525f424541434f4e3a20494e434f52524543545f5245564953494f6040820152602760f91b606082015260800190565b60008219821115610a6557610a65610958565b50019056fea2646970667358221220ede0d531038035964eed9bd7da8eed9a41ae0125f22bed2e9c0156abe1671b8664736f6c6343000809003300000000000000000000000093f220d3e997d21d423687cbca5874a7eabebe8b000000000000000000000000ffc7780c34b450d917d557e728f033033cb4fa8c
Constructor Arguments (ABI-Encoded and is the last bytes of the Contract Creation Code above)
00000000000000000000000093f220d3e997d21d423687cbca5874a7eabebe8b000000000000000000000000ffc7780c34b450d917d557e728f033033cb4fa8c
-----Decoded View---------------
Arg [0] : implementation_ (address): 0x93f220d3e997d21d423687cbca5874a7eabebe8b
Arg [1] : _lido (address): 0xffc7780c34b450d917d557e728f033033cb4fa8c
-----Encoded View---------------
2 Constructor Arguments found :
Arg [0] : 00000000000000000000000093f220d3e997d21d423687cbca5874a7eabebe8b
Arg [1] : 000000000000000000000000ffc7780c34b450d917d557e728f033033cb4fa8c
Age | Block | Fee Address | BC Fee Address | Voting Power | Jailed | Incoming |
---|
Make sure to use the "Vote Down" button for any spammy posts, and the "Vote Up" for interesting conversations.