Contract

0x4CF3d61165a6Be8FF741320ad27Cab57faE5c207

Overview

S Balance

Sonic LogoSonic LogoSonic Logo0 S

S Value

-

Multichain Info

No addresses found
Transaction Hash
Method
Block
From
To
Add New Settleme...10232712024-12-21 11:44:549 days ago1734781494IN
0x4CF3d611...7faE5c207
0 S0.000262971.1
Add New Settleme...9308412024-12-20 21:21:559 days ago1734729715IN
0x4CF3d611...7faE5c207
0 S0.000281811.1
Set Valid Chip B...9094762024-12-20 17:27:249 days ago1734715644IN
0x4CF3d611...7faE5c207
0 S0.000058951.1
Set Chips Factor...9035552024-12-20 16:33:309 days ago1734712410IN
0x4CF3d611...7faE5c207
0 S0.000058111.1
Publish New Syst...8928562024-12-20 15:02:269 days ago1734706946IN
0x4CF3d611...7faE5c207
0 S0.000083951.1
Publish New Syst...8928502024-12-20 15:02:239 days ago1734706943IN
0x4CF3d611...7faE5c207
0 S0.000083951.1
Set Chips Intent...8861792024-12-20 14:15:539 days ago1734704153IN
0x4CF3d611...7faE5c207
0 S0.000058071.1
Set Liquidity In...8861742024-12-20 14:15:519 days ago1734704151IN
0x4CF3d611...7faE5c207
0 S0.000058061.1
Set Trade Intent...8861692024-12-20 14:15:509 days ago1734704150IN
0x4CF3d611...7faE5c207
0 S0.000058071.1
Set Triggers8861642024-12-20 14:15:489 days ago1734704148IN
0x4CF3d611...7faE5c207
0 S0.000085611.1
Set Traders Port...8861602024-12-20 14:15:479 days ago1734704147IN
0x4CF3d611...7faE5c207
0 S0.000085581.1
Set Dynamic Role...8861402024-12-20 14:15:389 days ago1734704138IN
0x4CF3d611...7faE5c207
0 S0.000059441.1
Set Dynamic Role...8858342024-12-20 14:13:369 days ago1734704016IN
0x4CF3d611...7faE5c207
0 S0.000059431.1
Set Dynamic Role...8858182024-12-20 14:13:299 days ago1734704009IN
0x4CF3d611...7faE5c207
0 S0.000059511.1
Set Lex Proxies ...8858152024-12-20 14:13:289 days ago1734704008IN
0x4CF3d611...7faE5c207
0 S0.000058141.1
Publish New Syst...8849962024-12-20 14:07:3610 days ago1734703656IN
0x4CF3d611...7faE5c207
0 S0.000083951.1
Set Order Book8849792024-12-20 14:07:2910 days ago1734703649IN
0x4CF3d611...7faE5c207
0 S0.000085551.1
Publish New Syst...8849622024-12-20 14:07:1910 days ago1734703639IN
0x4CF3d611...7faE5c207
0 S0.000083951.1
Support Trading ...8849492024-12-20 14:07:1310 days ago1734703633IN
0x4CF3d611...7faE5c207
0 S0.00010651.1
_set Pending Imp...8849282024-12-20 14:07:0410 days ago1734703624IN
0x4CF3d611...7faE5c207
0 S0.000052131.1

Parent Transaction Hash Block From To
View All Internal Transactions
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
File 1 of 3 : RegistryProxy.sol
// 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) {}
}

File 2 of 3 : AcceptableImplementationClaimableAdmin.sol
// 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;
  }
}

File 3 of 3 : AcceptableImplementationClaimableAdminStorage.sol
// 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;
}

Settings
{
  "optimizer": {
    "enabled": true,
    "runs": 200
  },
  "outputSelection": {
    "*": {
      "*": [
        "evm.bytecode",
        "evm.deployedBytecode",
        "devdoc",
        "userdoc",
        "metadata",
        "abi"
      ]
    }
  },
  "evmVersion": "paris",
  "metadata": {
    "useLiteralContent": true
  },
  "libraries": {}
}

Contract Security Audit

Contract ABI

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

608060405234801561001057600080fd5b50600080546001600160a01b0319908116339182161781178255604080519283526020830182905290917ff9ffabca9c8276e99321725bcb43fb076a6c66a54b7f21c4e8146d8519b417dc910160405180910390a150610636806100756000396000f3fe60806040526004361061007f5760003560e01c8063c1e803341161004e578063c1e80334146101a0578063e992a041146101c3578063e9c714f2146101e3578063f851a440146101f857610086565b80632678224714610103578063396f7b23146101405780635c60da1b14610160578063b71d1a0c1461018057610086565b3661008657005b6002546040516000916001600160a01b0316906100a690839036906105c0565b600060405180830381855af49150503d80600081146100e1576040519150601f19603f3d011682016040523d82523d6000602084013e6100e6565b606091505b505090506040513d6000823e8180156100fd573d82f35b3d82fd5b005b34801561010f57600080fd5b50600154610123906001600160a01b031681565b6040516001600160a01b0390911681526020015b60405180910390f35b34801561014c57600080fd5b50600354610123906001600160a01b031681565b34801561016c57600080fd5b50600254610123906001600160a01b031681565b34801561018c57600080fd5b5061010161019b3660046105d0565b610218565b3480156101ac57600080fd5b506101b56102c5565b604051908152602001610137565b3480156101cf57600080fd5b506101016101de3660046105d0565b610402565b3480156101ef57600080fd5b506101016104a2565b34801561020457600080fd5b50600054610123906001600160a01b031681565b6000546001600160a01b031633146102635760405162461bcd60e51b81526020600482015260096024820152682737ba1020b236b4b760b91b60448201526064015b60405180910390fd5b600180546001600160a01b038381166001600160a01b031983168117909355604080519190921680825260208201939093527fca4f2f25d0898edd99413412fb94012f9e54ec8142f9b093e7720646a95b16a991015b60405180910390a15050565b6003546000906001600160a01b0316331480156102ec57506003546001600160a01b031615155b6103485760405162461bcd60e51b815260206004820152602760248201527f4e6f7420746865204558495354494e472070656e64696e6720696d706c656d65604482015266373a30ba34b7b760c91b606482015260840161025a565b60028054600380546001600160a01b038082166001600160a01b031980861682179096559490911690915560408051919092168082526020820184905292917fd604de94d45953f9138079ec1b82d533cb2160c906d1076d1f7ed54befbca97a910160405180910390a1600354604080516001600160a01b03808516825290921660208301527fe945ccee5d701fc83f9b8aa8ca94ea4219ec1fcbd4f4cab4f0ea57c5c3e1d815910160405180910390a160009250505090565b6000546001600160a01b031633146104485760405162461bcd60e51b81526020600482015260096024820152683737ba1030b236b4b760b91b604482015260640161025a565b600380546001600160a01b038381166001600160a01b031983168117909355604080519190921680825260208201939093527fe945ccee5d701fc83f9b8aa8ca94ea4219ec1fcbd4f4cab4f0ea57c5c3e1d81591016102b9565b6001546001600160a01b0316331480156104c657506001546001600160a01b031615155b6105125760405162461bcd60e51b815260206004820152601e60248201527f4e6f7420746865204558495354494e472070656e64696e672061646d696e0000604482015260640161025a565b60008054600180546001600160a01b038082166001600160a01b031980861682179096559490911690915560408051919092168082526020820184905292917ff9ffabca9c8276e99321725bcb43fb076a6c66a54b7f21c4e8146d8519b417dc910160405180910390a1600154604080516001600160a01b03808516825290921660208301527fca4f2f25d0898edd99413412fb94012f9e54ec8142f9b093e7720646a95b16a991016102b9565b8183823760009101908152919050565b6000602082840312156105e257600080fd5b81356001600160a01b03811681146105f957600080fd5b939250505056fea264697066735822122052f7788b7b3dd7e4d5c9ac1cc1b3fe9ac135f85e8adeefcbb335755ebca84cf564736f6c63430008180033

Deployed Bytecode

0x60806040526004361061007f5760003560e01c8063c1e803341161004e578063c1e80334146101a0578063e992a041146101c3578063e9c714f2146101e3578063f851a440146101f857610086565b80632678224714610103578063396f7b23146101405780635c60da1b14610160578063b71d1a0c1461018057610086565b3661008657005b6002546040516000916001600160a01b0316906100a690839036906105c0565b600060405180830381855af49150503d80600081146100e1576040519150601f19603f3d011682016040523d82523d6000602084013e6100e6565b606091505b505090506040513d6000823e8180156100fd573d82f35b3d82fd5b005b34801561010f57600080fd5b50600154610123906001600160a01b031681565b6040516001600160a01b0390911681526020015b60405180910390f35b34801561014c57600080fd5b50600354610123906001600160a01b031681565b34801561016c57600080fd5b50600254610123906001600160a01b031681565b34801561018c57600080fd5b5061010161019b3660046105d0565b610218565b3480156101ac57600080fd5b506101b56102c5565b604051908152602001610137565b3480156101cf57600080fd5b506101016101de3660046105d0565b610402565b3480156101ef57600080fd5b506101016104a2565b34801561020457600080fd5b50600054610123906001600160a01b031681565b6000546001600160a01b031633146102635760405162461bcd60e51b81526020600482015260096024820152682737ba1020b236b4b760b91b60448201526064015b60405180910390fd5b600180546001600160a01b038381166001600160a01b031983168117909355604080519190921680825260208201939093527fca4f2f25d0898edd99413412fb94012f9e54ec8142f9b093e7720646a95b16a991015b60405180910390a15050565b6003546000906001600160a01b0316331480156102ec57506003546001600160a01b031615155b6103485760405162461bcd60e51b815260206004820152602760248201527f4e6f7420746865204558495354494e472070656e64696e6720696d706c656d65604482015266373a30ba34b7b760c91b606482015260840161025a565b60028054600380546001600160a01b038082166001600160a01b031980861682179096559490911690915560408051919092168082526020820184905292917fd604de94d45953f9138079ec1b82d533cb2160c906d1076d1f7ed54befbca97a910160405180910390a1600354604080516001600160a01b03808516825290921660208301527fe945ccee5d701fc83f9b8aa8ca94ea4219ec1fcbd4f4cab4f0ea57c5c3e1d815910160405180910390a160009250505090565b6000546001600160a01b031633146104485760405162461bcd60e51b81526020600482015260096024820152683737ba1030b236b4b760b91b604482015260640161025a565b600380546001600160a01b038381166001600160a01b031983168117909355604080519190921680825260208201939093527fe945ccee5d701fc83f9b8aa8ca94ea4219ec1fcbd4f4cab4f0ea57c5c3e1d81591016102b9565b6001546001600160a01b0316331480156104c657506001546001600160a01b031615155b6105125760405162461bcd60e51b815260206004820152601e60248201527f4e6f7420746865204558495354494e472070656e64696e672061646d696e0000604482015260640161025a565b60008054600180546001600160a01b038082166001600160a01b031980861682179096559490911690915560408051919092168082526020820184905292917ff9ffabca9c8276e99321725bcb43fb076a6c66a54b7f21c4e8146d8519b417dc910160405180910390a1600154604080516001600160a01b03808516825290921660208301527fca4f2f25d0898edd99413412fb94012f9e54ec8142f9b093e7720646a95b16a991016102b9565b8183823760009101908152919050565b6000602082840312156105e257600080fd5b81356001600160a01b03811681146105f957600080fd5b939250505056fea264697066735822122052f7788b7b3dd7e4d5c9ac1cc1b3fe9ac135f85e8adeefcbb335755ebca84cf564736f6c63430008180033

Block Transaction Gas Used Reward
view all blocks produced

Block Uncle Number Difficulty Gas Used Reward
View All Uncles
Loading...
Loading
Loading...
Loading

Validator Index Block Amount
View All Withdrawals

Transaction Hash Block Value Eth2 PubKey Valid
View All Deposits
[ 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.