Overview
S Balance
0 S
S Value
-More Info
Private Name Tags
ContractCreator
Latest 20 from a total of 20 transactions
Transaction Hash |
Method
|
Block
|
From
|
To
|
|||||
---|---|---|---|---|---|---|---|---|---|
Add New Settleme... | 1023271 | 9 days ago | IN | 0 S | 0.00026297 | ||||
Add New Settleme... | 930841 | 9 days ago | IN | 0 S | 0.00028181 | ||||
Set Valid Chip B... | 909476 | 9 days ago | IN | 0 S | 0.00005895 | ||||
Set Chips Factor... | 903555 | 9 days ago | IN | 0 S | 0.00005811 | ||||
Publish New Syst... | 892856 | 9 days ago | IN | 0 S | 0.00008395 | ||||
Publish New Syst... | 892850 | 9 days ago | IN | 0 S | 0.00008395 | ||||
Set Chips Intent... | 886179 | 9 days ago | IN | 0 S | 0.00005807 | ||||
Set Liquidity In... | 886174 | 9 days ago | IN | 0 S | 0.00005806 | ||||
Set Trade Intent... | 886169 | 9 days ago | IN | 0 S | 0.00005807 | ||||
Set Triggers | 886164 | 9 days ago | IN | 0 S | 0.00008561 | ||||
Set Traders Port... | 886160 | 9 days ago | IN | 0 S | 0.00008558 | ||||
Set Dynamic Role... | 886140 | 9 days ago | IN | 0 S | 0.00005944 | ||||
Set Dynamic Role... | 885834 | 9 days ago | IN | 0 S | 0.00005943 | ||||
Set Dynamic Role... | 885818 | 9 days ago | IN | 0 S | 0.00005951 | ||||
Set Lex Proxies ... | 885815 | 9 days ago | IN | 0 S | 0.00005814 | ||||
Publish New Syst... | 884996 | 10 days ago | IN | 0 S | 0.00008395 | ||||
Set Order Book | 884979 | 10 days ago | IN | 0 S | 0.00008555 | ||||
Publish New Syst... | 884962 | 10 days ago | IN | 0 S | 0.00008395 | ||||
Support Trading ... | 884949 | 10 days ago | IN | 0 S | 0.0001065 | ||||
_set Pending Imp... | 884928 | 10 days ago | IN | 0 S | 0.00005213 |
Loading...
Loading
Contract Source Code Verified (Exact Match)
Contract Name:
RegistryProxy
Compiler Version
v0.8.24+commit.e11b9ed9
Optimization Enabled:
Yes with 200 runs
Other Settings:
paris EvmVersion
Contract Source Code (Solidity Standard Json-Input format)
// SPDX-License-Identifier: BUSL-1.1 pragma solidity ^0.8.24; import "../../AdministrationContracts/AcceptableImplementationClaimableAdmin.sol"; /** * @title RegistryProxy * @dev Used as the contracts registry brain of the Lynx platform */ contract RegistryProxy is AcceptableImplementationClaimableAdmin { constructor() AcceptableImplementationClaimableAdmin(msg.sender) {} }
// SPDX-License-Identifier: BUSL-1.1 pragma solidity ^0.8.24; import "./AcceptableImplementationClaimableAdminStorage.sol"; /** * @title SafeUpgradeableClaimableAdmin * @dev based on Compound's Unitroller * https://github.com/compound-finance/compound-protocol/blob/a3214f67b73310d547e00fc578e8355911c9d376/contracts/Unitroller.sol */ contract AcceptableImplementationClaimableAdmin is AcceptableImplementationClaimableAdminStorage { /** * @notice Emitted when pendingImplementation is changed */ event NewPendingImplementation( address oldPendingImplementation, address newPendingImplementation ); /** * @notice Emitted when pendingImplementation is accepted, which means delegation implementation is updated */ event NewImplementation(address oldImplementation, address newImplementation); /** * @notice Emitted when pendingAdmin is changed */ event NewPendingAdmin(address oldPendingAdmin, address newPendingAdmin); /** * @notice Emitted when pendingAdmin is accepted, which means admin is updated */ event NewAdmin(address oldAdmin, address newAdmin); /*** Admin Functions ***/ function _setPendingImplementation(address newPendingImplementation) public { require(msg.sender == admin, "not admin"); require( approvePendingImplementationInternal(newPendingImplementation), "INVALID_IMPLEMENTATION" ); address oldPendingImplementation = pendingImplementation; pendingImplementation = newPendingImplementation; emit NewPendingImplementation( oldPendingImplementation, pendingImplementation ); } /** * @notice Accepts new implementation. msg.sender must be pendingImplementation * @dev Admin function for new implementation to accept it's role as implementation */ function _acceptImplementation() public returns (uint) { // Check caller is pendingImplementation and pendingImplementation ≠ address(0) require( msg.sender == pendingImplementation && pendingImplementation != address(0), "Not the EXISTING pending implementation" ); // Save current values for inclusion in log address oldImplementation = implementation; address oldPendingImplementation = pendingImplementation; implementation = pendingImplementation; pendingImplementation = address(0); emit NewImplementation(oldImplementation, implementation); emit NewPendingImplementation( oldPendingImplementation, pendingImplementation ); return 0; } /** * @notice Begins transfer of admin rights. The newPendingAdmin must call `_acceptAdmin` to finalize the transfer. * @dev Admin function to begin change of admin. The newPendingAdmin must call `_acceptAdmin` to finalize the transfer. * @param newPendingAdmin New pending admin. */ function _setPendingAdmin(address newPendingAdmin) public { // Check caller = admin require(msg.sender == admin, "Not Admin"); // Save current value, if any, for inclusion in log address oldPendingAdmin = pendingAdmin; // Store pendingAdmin with value newPendingAdmin pendingAdmin = newPendingAdmin; // Emit NewPendingAdmin(oldPendingAdmin, newPendingAdmin) emit NewPendingAdmin(oldPendingAdmin, newPendingAdmin); } /** * @notice Accepts transfer of admin rights. msg.sender must be pendingAdmin * @dev Admin function for pending admin to accept role and update admin */ function _acceptAdmin() public { // Check caller is pendingAdmin and pendingAdmin ≠ address(0) require( msg.sender == pendingAdmin && pendingAdmin != address(0), "Not the EXISTING pending admin" ); // Save current values for inclusion in log address oldAdmin = admin; address oldPendingAdmin = pendingAdmin; // Store admin with value pendingAdmin admin = pendingAdmin; // Clear the pending value pendingAdmin = address(0); emit NewAdmin(oldAdmin, admin); emit NewPendingAdmin(oldPendingAdmin, pendingAdmin); } constructor(address _initialAdmin) { admin = _initialAdmin; emit NewAdmin(address(0), _initialAdmin); } /** * @dev Delegates execution to an implementation contract. * It returns to the external caller whatever the implementation returns * or forwards reverts. */ fallback() external payable { // delegate all other functions to current implementation (bool success, ) = implementation.delegatecall(msg.data); assembly { let free_mem_ptr := mload(0x40) returndatacopy(free_mem_ptr, 0, returndatasize()) switch success case 0 { revert(free_mem_ptr, returndatasize()) } default { return(free_mem_ptr, returndatasize()) } } } receive() external payable {} function approvePendingImplementationInternal( address // _implementation ) internal virtual returns (bool) { return true; } }
// SPDX-License-Identifier: BUSL-1.1 pragma solidity ^0.8.24; contract ClaimableAdminStorage { /** * @notice Administrator for this contract */ address public admin; /** * @notice Pending administrator for this contract */ address public pendingAdmin; /*** Modifiers ***/ modifier onlyAdmin() { require(msg.sender == admin, "ONLY_ADMIN"); _; } /*** Constructor ***/ constructor() { // Set admin to caller admin = msg.sender; } } contract AcceptableImplementationClaimableAdminStorage is ClaimableAdminStorage { /** * @notice Active logic */ address public implementation; /** * @notice Pending logic */ address public pendingImplementation; } contract AcceptableRegistryImplementationClaimableAdminStorage is AcceptableImplementationClaimableAdminStorage { /** * @notice System Registry */ address public registry; }
{ "optimizer": { "enabled": true, "runs": 200 }, "outputSelection": { "*": { "*": [ "evm.bytecode", "evm.deployedBytecode", "devdoc", "userdoc", "metadata", "abi" ] } }, "evmVersion": "paris", "metadata": { "useLiteralContent": true }, "libraries": {} }
Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"oldAdmin","type":"address"},{"indexed":false,"internalType":"address","name":"newAdmin","type":"address"}],"name":"NewAdmin","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"oldImplementation","type":"address"},{"indexed":false,"internalType":"address","name":"newImplementation","type":"address"}],"name":"NewImplementation","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"oldPendingAdmin","type":"address"},{"indexed":false,"internalType":"address","name":"newPendingAdmin","type":"address"}],"name":"NewPendingAdmin","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"oldPendingImplementation","type":"address"},{"indexed":false,"internalType":"address","name":"newPendingImplementation","type":"address"}],"name":"NewPendingImplementation","type":"event"},{"stateMutability":"payable","type":"fallback"},{"inputs":[],"name":"_acceptAdmin","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"_acceptImplementation","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newPendingAdmin","type":"address"}],"name":"_setPendingAdmin","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newPendingImplementation","type":"address"}],"name":"_setPendingImplementation","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"admin","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"implementation","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"pendingAdmin","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"pendingImplementation","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"stateMutability":"payable","type":"receive"}]
Contract Creation Code
608060405234801561001057600080fd5b50600080546001600160a01b0319908116339182161781178255604080519283526020830182905290917ff9ffabca9c8276e99321725bcb43fb076a6c66a54b7f21c4e8146d8519b417dc910160405180910390a150610636806100756000396000f3fe60806040526004361061007f5760003560e01c8063c1e803341161004e578063c1e80334146101a0578063e992a041146101c3578063e9c714f2146101e3578063f851a440146101f857610086565b80632678224714610103578063396f7b23146101405780635c60da1b14610160578063b71d1a0c1461018057610086565b3661008657005b6002546040516000916001600160a01b0316906100a690839036906105c0565b600060405180830381855af49150503d80600081146100e1576040519150601f19603f3d011682016040523d82523d6000602084013e6100e6565b606091505b505090506040513d6000823e8180156100fd573d82f35b3d82fd5b005b34801561010f57600080fd5b50600154610123906001600160a01b031681565b6040516001600160a01b0390911681526020015b60405180910390f35b34801561014c57600080fd5b50600354610123906001600160a01b031681565b34801561016c57600080fd5b50600254610123906001600160a01b031681565b34801561018c57600080fd5b5061010161019b3660046105d0565b610218565b3480156101ac57600080fd5b506101b56102c5565b604051908152602001610137565b3480156101cf57600080fd5b506101016101de3660046105d0565b610402565b3480156101ef57600080fd5b506101016104a2565b34801561020457600080fd5b50600054610123906001600160a01b031681565b6000546001600160a01b031633146102635760405162461bcd60e51b81526020600482015260096024820152682737ba1020b236b4b760b91b60448201526064015b60405180910390fd5b600180546001600160a01b038381166001600160a01b031983168117909355604080519190921680825260208201939093527fca4f2f25d0898edd99413412fb94012f9e54ec8142f9b093e7720646a95b16a991015b60405180910390a15050565b6003546000906001600160a01b0316331480156102ec57506003546001600160a01b031615155b6103485760405162461bcd60e51b815260206004820152602760248201527f4e6f7420746865204558495354494e472070656e64696e6720696d706c656d65604482015266373a30ba34b7b760c91b606482015260840161025a565b60028054600380546001600160a01b038082166001600160a01b031980861682179096559490911690915560408051919092168082526020820184905292917fd604de94d45953f9138079ec1b82d533cb2160c906d1076d1f7ed54befbca97a910160405180910390a1600354604080516001600160a01b03808516825290921660208301527fe945ccee5d701fc83f9b8aa8ca94ea4219ec1fcbd4f4cab4f0ea57c5c3e1d815910160405180910390a160009250505090565b6000546001600160a01b031633146104485760405162461bcd60e51b81526020600482015260096024820152683737ba1030b236b4b760b91b604482015260640161025a565b600380546001600160a01b038381166001600160a01b031983168117909355604080519190921680825260208201939093527fe945ccee5d701fc83f9b8aa8ca94ea4219ec1fcbd4f4cab4f0ea57c5c3e1d81591016102b9565b6001546001600160a01b0316331480156104c657506001546001600160a01b031615155b6105125760405162461bcd60e51b815260206004820152601e60248201527f4e6f7420746865204558495354494e472070656e64696e672061646d696e0000604482015260640161025a565b60008054600180546001600160a01b038082166001600160a01b031980861682179096559490911690915560408051919092168082526020820184905292917ff9ffabca9c8276e99321725bcb43fb076a6c66a54b7f21c4e8146d8519b417dc910160405180910390a1600154604080516001600160a01b03808516825290921660208301527fca4f2f25d0898edd99413412fb94012f9e54ec8142f9b093e7720646a95b16a991016102b9565b8183823760009101908152919050565b6000602082840312156105e257600080fd5b81356001600160a01b03811681146105f957600080fd5b939250505056fea264697066735822122052f7788b7b3dd7e4d5c9ac1cc1b3fe9ac135f85e8adeefcbb335755ebca84cf564736f6c63430008180033
Deployed Bytecode
0x60806040526004361061007f5760003560e01c8063c1e803341161004e578063c1e80334146101a0578063e992a041146101c3578063e9c714f2146101e3578063f851a440146101f857610086565b80632678224714610103578063396f7b23146101405780635c60da1b14610160578063b71d1a0c1461018057610086565b3661008657005b6002546040516000916001600160a01b0316906100a690839036906105c0565b600060405180830381855af49150503d80600081146100e1576040519150601f19603f3d011682016040523d82523d6000602084013e6100e6565b606091505b505090506040513d6000823e8180156100fd573d82f35b3d82fd5b005b34801561010f57600080fd5b50600154610123906001600160a01b031681565b6040516001600160a01b0390911681526020015b60405180910390f35b34801561014c57600080fd5b50600354610123906001600160a01b031681565b34801561016c57600080fd5b50600254610123906001600160a01b031681565b34801561018c57600080fd5b5061010161019b3660046105d0565b610218565b3480156101ac57600080fd5b506101b56102c5565b604051908152602001610137565b3480156101cf57600080fd5b506101016101de3660046105d0565b610402565b3480156101ef57600080fd5b506101016104a2565b34801561020457600080fd5b50600054610123906001600160a01b031681565b6000546001600160a01b031633146102635760405162461bcd60e51b81526020600482015260096024820152682737ba1020b236b4b760b91b60448201526064015b60405180910390fd5b600180546001600160a01b038381166001600160a01b031983168117909355604080519190921680825260208201939093527fca4f2f25d0898edd99413412fb94012f9e54ec8142f9b093e7720646a95b16a991015b60405180910390a15050565b6003546000906001600160a01b0316331480156102ec57506003546001600160a01b031615155b6103485760405162461bcd60e51b815260206004820152602760248201527f4e6f7420746865204558495354494e472070656e64696e6720696d706c656d65604482015266373a30ba34b7b760c91b606482015260840161025a565b60028054600380546001600160a01b038082166001600160a01b031980861682179096559490911690915560408051919092168082526020820184905292917fd604de94d45953f9138079ec1b82d533cb2160c906d1076d1f7ed54befbca97a910160405180910390a1600354604080516001600160a01b03808516825290921660208301527fe945ccee5d701fc83f9b8aa8ca94ea4219ec1fcbd4f4cab4f0ea57c5c3e1d815910160405180910390a160009250505090565b6000546001600160a01b031633146104485760405162461bcd60e51b81526020600482015260096024820152683737ba1030b236b4b760b91b604482015260640161025a565b600380546001600160a01b038381166001600160a01b031983168117909355604080519190921680825260208201939093527fe945ccee5d701fc83f9b8aa8ca94ea4219ec1fcbd4f4cab4f0ea57c5c3e1d81591016102b9565b6001546001600160a01b0316331480156104c657506001546001600160a01b031615155b6105125760405162461bcd60e51b815260206004820152601e60248201527f4e6f7420746865204558495354494e472070656e64696e672061646d696e0000604482015260640161025a565b60008054600180546001600160a01b038082166001600160a01b031980861682179096559490911690915560408051919092168082526020820184905292917ff9ffabca9c8276e99321725bcb43fb076a6c66a54b7f21c4e8146d8519b417dc910160405180910390a1600154604080516001600160a01b03808516825290921660208301527fca4f2f25d0898edd99413412fb94012f9e54ec8142f9b093e7720646a95b16a991016102b9565b8183823760009101908152919050565b6000602082840312156105e257600080fd5b81356001600160a01b03811681146105f957600080fd5b939250505056fea264697066735822122052f7788b7b3dd7e4d5c9ac1cc1b3fe9ac135f85e8adeefcbb335755ebca84cf564736f6c63430008180033
Loading...
Loading
Loading...
Loading
Multichain Portfolio | 30 Chains
Chain | Token | Portfolio % | Price | Amount | Value |
---|
[ 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.