S Price: $0.423519 (-3.59%)

Contract

0xD86636FA9a010E62a904c92810A0AC8041040584

Overview

S Balance

Sonic LogoSonic LogoSonic Logo0 S

S Value

$0.00

Token Holdings

Multichain Info

No addresses found
Transaction Hash
Method
Block
From
To
Process Redeems64540492025-02-03 21:42:023 days ago1738618922IN
0xD86636FA...041040584
0 S0.0086147655
Request Redeem64528402025-02-03 21:31:043 days ago1738618264IN
0xD86636FA...041040584
0 S0.0153159655
Process Deposit63898452025-02-03 11:27:033 days ago1738582023IN
0xD86636FA...041040584
0 S0.0081733855
Request Deposit63892482025-02-03 11:20:543 days ago1738581654IN
0xD86636FA...041040584
0 S0.0093501155
Process Redeems63630242025-02-03 7:07:023 days ago1738566422IN
0xD86636FA...041040584
0 S0.0086147655
Request Redeem63599142025-02-03 6:36:503 days ago1738564610IN
0xD86636FA...041040584
0 S0.0147800955
Process Redeems62105302025-02-02 5:07:074 days ago1738472827IN
0xD86636FA...041040584
0 S0.008116455
Request Redeem62100252025-02-02 4:59:084 days ago1738472348IN
0xD86636FA...041040584
0 S0.0152251555
Process Deposit62051562025-02-02 3:52:024 days ago1738468322IN
0xD86636FA...041040584
0 S0.0084955755
Request Deposit62044972025-02-02 3:41:214 days ago1738467681IN
0xD86636FA...041040584
0 S0.0096127955
Process Redeems61888702025-02-02 0:07:154 days ago1738454835IN
0xD86636FA...041040584
0 S0.0089369555
Request Redeem61870442025-02-01 23:41:115 days ago1738453271IN
0xD86636FA...041040584
0 S0.0149604955
Process Deposit61791892025-02-01 22:07:065 days ago1738447626IN
0xD86636FA...041040584
0 S0.0084955755
Request Deposit61781442025-02-01 21:52:375 days ago1738446757IN
0xD86636FA...041040584
0 S0.008755151.5
Process Deposit60076042025-01-31 11:12:066 days ago1738321926IN
0xD86636FA...041040584
0 S0.0084955755
Request Deposit60067682025-01-31 11:03:016 days ago1738321381IN
0xD86636FA...041040584
0 S0.01079760
Process Redeems59298712025-01-30 19:07:027 days ago1738264022IN
0xD86636FA...041040584
0 S0.0086147655
Request Redeem59288602025-01-30 18:55:137 days ago1738263313IN
0xD86636FA...041040584
0 S0.0155962955.02
Process Deposit58623142025-01-30 5:47:037 days ago1738216023IN
0xD86636FA...041040584
0 S0.0081733855
Request Deposit58619682025-01-30 5:40:437 days ago1738215643IN
0xD86636FA...041040584
0 S0.0098990455.01
Process Deposit58051182025-01-29 18:57:028 days ago1738177022IN
0xD86636FA...041040584
0 S0.0081733855
Request Deposit58038512025-01-29 18:39:368 days ago1738175976IN
0xD86636FA...041040584
0 S0.0096127955
Process Deposit57673582025-01-29 10:27:108 days ago1738146430IN
0xD86636FA...041040584
0 S0.0081727255
Request Deposit57672792025-01-29 10:25:558 days ago1738146355IN
0xD86636FA...041040584
0 S0.0093487955
Process Deposit57358272025-01-29 1:32:028 days ago1738114322IN
0xD86636FA...041040584
0 S0.007231455
View all transactions

Latest 1 internal transaction

Parent Transaction Hash Block From To
54765432025-01-26 16:32:0311 days ago1737909123  Contract Creation0 S
Loading...
Loading

Similar Match Source Code
This contract matches the deployed Bytecode of the Source Code for Contract 0x0720F766...9217EccE4
The constructor portion of the code might be different and could alter the actual behaviour of the contract

Contract Name:
LexPoolProxy

Compiler Version
v0.8.24+commit.e11b9ed9

Optimization Enabled:
Yes with 200 runs

Other Settings:
paris EvmVersion
File 1 of 5 : LexPoolProxy.sol
// SPDX-License-Identifier: BUSL-1.1
pragma solidity ^0.8.24;

import "../../../AdministrationContracts/AcceptableRegistryImplementationClaimableAdmin.sol";

/**
 * @title LexPoolProxy
 * @dev Used as the upgradable lex pool of the Lynx platform
 */
contract LexPoolProxy is AcceptableRegistryImplementationClaimableAdmin {
  constructor(
    address _registry,
    address _initialAdmin
  )
    AcceptableRegistryImplementationClaimableAdmin(
      _registry,
      "LexPool",
      _initialAdmin
    )
  {}
}

File 2 of 5 : 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 5 : 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;
}

File 4 of 5 : AcceptableRegistryImplementationClaimableAdmin.sol
// SPDX-License-Identifier: BUSL-1.1
pragma solidity ^0.8.24;

import "./AcceptableImplementationClaimableAdmin.sol";
import "./IContractRegistryBase.sol";

/**
 * @title AcceptableRegistryImplementationClaimableAdmin
 */
contract AcceptableRegistryImplementationClaimableAdmin is
  AcceptableImplementationClaimableAdmin,
  AcceptableRegistryImplementationClaimableAdminStorage
{
  bytes32 public immutable CONTRACT_NAME_HASH;

  constructor(
    address _registry,
    string memory proxyName,
    address _initialAdmin
  ) AcceptableImplementationClaimableAdmin(_initialAdmin) {
    registry = _registry;
    CONTRACT_NAME_HASH = keccak256(abi.encodePacked(proxyName));
  }

  function approvePendingImplementationInternal(
    address _implementation
  ) internal view override returns (bool) {
    return
      IContractRegistryBase(registry).isImplementationValidForProxy(
        CONTRACT_NAME_HASH,
        _implementation
      );
  }
}

File 5 of 5 : IContractRegistryBase.sol
// SPDX-License-Identifier: BUSL-1.1
pragma solidity ^0.8.24;

interface IContractRegistryBase {
  function isImplementationValidForProxy(
    bytes32 proxyNameHash,
    address _implementation
  ) external view returns (bool);
}

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":[{"internalType":"address","name":"_registry","type":"address"},{"internalType":"address","name":"_initialAdmin","type":"address"}],"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":"CONTRACT_NAME_HASH","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"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"},{"inputs":[],"name":"registry","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"stateMutability":"payable","type":"receive"}]

Deployed Bytecode

0x6080604052600436106100955760003560e01c8063b71d1a0c11610059578063b71d1a0c146101f8578063c1e8033414610218578063e992a0411461022d578063e9c714f21461024d578063f851a440146102625761009c565b80632678224714610119578063396f7b23146101565780635c60da1b1461017657806368c63188146101965780637b103999146101d85761009c565b3661009c57005b6002546040516000916001600160a01b0316906100bc9083903690610717565b600060405180830381855af49150503d80600081146100f7576040519150601f19603f3d011682016040523d82523d6000602084013e6100fc565b606091505b505090506040513d6000823e818015610113573d82f35b3d82fd5b005b34801561012557600080fd5b50600154610139906001600160a01b031681565b6040516001600160a01b0390911681526020015b60405180910390f35b34801561016257600080fd5b50600354610139906001600160a01b031681565b34801561018257600080fd5b50600254610139906001600160a01b031681565b3480156101a257600080fd5b506101ca7f3dce49aa7b2562381b9553ec6d9dc264b8c03da67023755db0dac41c1971d94e81565b60405190815260200161014d565b3480156101e457600080fd5b50600454610139906001600160a01b031681565b34801561020457600080fd5b50610117610213366004610727565b610282565b34801561022457600080fd5b506101ca61032f565b34801561023957600080fd5b50610117610248366004610727565b61046c565b34801561025957600080fd5b5061011761055a565b34801561026e57600080fd5b50600054610139906001600160a01b031681565b6000546001600160a01b031633146102cd5760405162461bcd60e51b81526020600482015260096024820152682737ba1020b236b4b760b91b60448201526064015b60405180910390fd5b600180546001600160a01b038381166001600160a01b031983168117909355604080519190921680825260208201939093527fca4f2f25d0898edd99413412fb94012f9e54ec8142f9b093e7720646a95b16a991015b60405180910390a15050565b6003546000906001600160a01b03163314801561035657506003546001600160a01b031615155b6103b25760405162461bcd60e51b815260206004820152602760248201527f4e6f7420746865204558495354494e472070656e64696e6720696d706c656d65604482015266373a30ba34b7b760c91b60648201526084016102c4565b60028054600380546001600160a01b038082166001600160a01b031980861682179096559490911690915560408051919092168082526020820184905292917fd604de94d45953f9138079ec1b82d533cb2160c906d1076d1f7ed54befbca97a910160405180910390a1600354604080516001600160a01b03808516825290921660208301527fe945ccee5d701fc83f9b8aa8ca94ea4219ec1fcbd4f4cab4f0ea57c5c3e1d815910160405180910390a160009250505090565b6000546001600160a01b031633146104b25760405162461bcd60e51b81526020600482015260096024820152683737ba1030b236b4b760b91b60448201526064016102c4565b6104bb81610678565b6105005760405162461bcd60e51b815260206004820152601660248201527524a72b20a624a22fa4a6a82622a6a2a72a20aa24a7a760511b60448201526064016102c4565b600380546001600160a01b038381166001600160a01b031983168117909355604080519190921680825260208201939093527fe945ccee5d701fc83f9b8aa8ca94ea4219ec1fcbd4f4cab4f0ea57c5c3e1d8159101610323565b6001546001600160a01b03163314801561057e57506001546001600160a01b031615155b6105ca5760405162461bcd60e51b815260206004820152601e60248201527f4e6f7420746865204558495354494e472070656e64696e672061646d696e000060448201526064016102c4565b60008054600180546001600160a01b038082166001600160a01b031980861682179096559490911690915560408051919092168082526020820184905292917ff9ffabca9c8276e99321725bcb43fb076a6c66a54b7f21c4e8146d8519b417dc910160405180910390a1600154604080516001600160a01b03808516825290921660208301527fca4f2f25d0898edd99413412fb94012f9e54ec8142f9b093e7720646a95b16a99101610323565b60048054604051631e58694360e01b81527f3dce49aa7b2562381b9553ec6d9dc264b8c03da67023755db0dac41c1971d94e928101929092526001600160a01b038381166024840152600092911690631e58694390604401602060405180830381865afa1580156106ed573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906107119190610757565b92915050565b8183823760009101908152919050565b60006020828403121561073957600080fd5b81356001600160a01b038116811461075057600080fd5b9392505050565b60006020828403121561076957600080fd5b8151801515811461075057600080fdfea26469706673582212200d94f443e05d3b01558490e812d61a9db7d111cd3ec9e83654a6806951e0515964736f6c63430008180033

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  ]
[ 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.