S Price: $0.070384 (-0.74%)
Gas: 55 Gwei

Contract

0x17a7Cf838A7C91DE47552a9f65822B547F9A6997

Overview

S Balance

Sonic LogoSonic LogoSonic Logo0 S

S Value

$0.00

Token Holdings

More Info

Private Name Tags

Multichain Info

No addresses found
Transaction Hash
Block
From
To
Deposit610693372026-01-24 19:28:185 hrs ago1769282898IN
0x17a7Cf83...47F9A6997
0 S0.0064554650.0001
Get Reward610693042026-01-24 19:27:275 hrs ago1769282847IN
0x17a7Cf83...47F9A6997
0 S0.0064956650.0001
Deposit610226972026-01-23 22:15:3326 hrs ago1769206533IN
0x17a7Cf83...47F9A6997
0 S0.0074838555
Get Reward610226522026-01-23 22:14:4826 hrs ago1769206488IN
0x17a7Cf83...47F9A6997
0 S0.0075912155
Deposit609733222026-01-23 6:21:2442 hrs ago1769149284IN
0x17a7Cf83...47F9A6997
0 S0.0077221155
Get Reward609733122026-01-23 6:21:0942 hrs ago1769149269IN
0x17a7Cf83...47F9A6997
0 S0.0075912155
Get Reward609304812026-01-22 15:46:222 days ago1769096782IN
0x17a7Cf83...47F9A6997
0 S0.0073236355
Get Reward609002492026-01-22 5:08:402 days ago1769058520IN
0x17a7Cf83...47F9A6997
0 S0.0064956650.0001
Deposit609002172026-01-22 5:07:402 days ago1769058460IN
0x17a7Cf83...47F9A6997
0 S0.0074831355
Get Reward609001882026-01-22 5:06:542 days ago1769058414IN
0x17a7Cf83...47F9A6997
0 S0.0075912155
Get Reward608939402026-01-22 2:29:582 days ago1769048998IN
0x17a7Cf83...47F9A6997
0 S0.0078599455
Get Reward608874202026-01-22 0:13:253 days ago1769040805IN
0x17a7Cf83...47F9A6997
0 S0.0067257150.0001
Get Reward608870722026-01-22 0:06:573 days ago1769040417IN
0x17a7Cf83...47F9A6997
0 S0.0068338150.0001
Deposit608856712026-01-21 23:43:193 days ago1769038999IN
0x17a7Cf83...47F9A6997
0 S0.0115794660
Deposit608699772026-01-21 19:21:503 days ago1769023310IN
0x17a7Cf83...47F9A6997
0 S0.006071550
Get Reward608699452026-01-21 19:20:593 days ago1769023259IN
0x17a7Cf83...47F9A6997
0 S0.006901150
Deposit606406432026-01-18 17:44:266 days ago1768758266IN
0x17a7Cf83...47F9A6997
0 S0.0068938150.0001
Deposit606134342026-01-18 7:12:396 days ago1768720359IN
0x17a7Cf83...47F9A6997
0 S0.0077221155
Get Reward606133222026-01-18 7:09:566 days ago1768720196IN
0x17a7Cf83...47F9A6997
0 S0.002632350
Get Reward606133172026-01-18 7:09:496 days ago1768720189IN
0x17a7Cf83...47F9A6997
0 S0.0075912155
Deposit605250342026-01-16 16:49:258 days ago1768582165IN
0x17a7Cf83...47F9A6997
0 S0.0045560955
Get Reward605249792026-01-16 16:47:578 days ago1768582077IN
0x17a7Cf83...47F9A6997
0 S0.0075912155
Get Reward604902072026-01-16 4:36:478 days ago1768538207IN
0x17a7Cf83...47F9A6997
0 S0.0075912155
Deposit604744062026-01-15 22:51:529 days ago1768517512IN
0x17a7Cf83...47F9A6997
0 S0.0082314150.0001
Deposit604277612026-01-15 7:46:119 days ago1768463171IN
0x17a7Cf83...47F9A6997
0 S0.0074831355
View all transactions

View more zero value Internal Transactions in Advanced View mode

Advanced mode:
Cross-Chain Transactions
Loading...
Loading

Contract Source Code Verified (Exact Match)

Contract Name:
Proxy

Compiler Version
v0.8.28+commit.7893614a

Optimization Enabled:
Yes with 200 runs

Other Settings:
cancun EvmVersion
// SPDX-License-Identifier: MIT
pragma solidity ^0.8.28;

import {UpgradeableProxy} from "../base/UpgradeableProxy.sol";
import {IControllable} from "../../interfaces/IControllable.sol";
import {IProxy} from "../../interfaces/IProxy.sol";

/// @title Proxy for Stability Platform core contracts.
/// @dev ERC-1967: Proxy Storage Slots used.
/// @author JodsMigel (https://github.com/JodsMigel)
contract Proxy is UpgradeableProxy, IProxy {
    /// @inheritdoc IProxy
    function initProxy(address logic) external override {
        _init(logic);
    }

    /// @inheritdoc IProxy
    function upgrade(address newImplementation) external override {
        require(IControllable(address(this)).platform() == msg.sender, IControllable.NotPlatform());
        _upgradeTo(newImplementation);
        // the new contract must have the same ABI and you must have the power to change it again
        require(IControllable(address(this)).platform() == msg.sender, IControllable.NotPlatform());
    }

    /// @inheritdoc IProxy
    function implementation() external view override returns (address) {
        return _implementation();
    }
}

// SPDX-License-Identifier: MIT
pragma solidity ^0.8.28;

/// @title Simple ERC-1967 upgradeable proxy implementation
abstract contract UpgradeableProxy {
    error ImplementationIsNotContract();

    /// @dev This is the keccak-256 hash of "eip1967.proxy.implementation" subtracted by 1, and is
    bytes32 private constant _IMPLEMENTATION_SLOT = 0x360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc;

    /// @dev Emitted when the implementation is upgraded.
    event Upgraded(address indexed implementation);

    constructor() {
        assert(_IMPLEMENTATION_SLOT == bytes32(uint(keccak256("eip1967.proxy.implementation")) - 1));
    }

    /// @dev Post deploy initialisation for compatability with EIP-1167 factory
    function _init(address logic) internal {
        require(_implementation() == address(0), "Already inited");
        _setImplementation(logic);
    }

    /// @dev Returns the current implementation address.
    function _implementation() internal view virtual returns (address impl) {
        bytes32 slot = _IMPLEMENTATION_SLOT;
        // solhint-disable-next-line no-inline-assembly
        //slither-disable-next-line assembly
        assembly {
            impl := sload(slot)
        }
    }

    /// @dev Upgrades the proxy to a new implementation.
    function _upgradeTo(address newImplementation) internal virtual {
        _setImplementation(newImplementation);
        emit Upgraded(newImplementation);
    }

    /// @dev Stores a new address in the EIP1967 implementation slot.
    function _setImplementation(address newImplementation) private {
        if (newImplementation.code.length == 0) revert ImplementationIsNotContract();
        bytes32 slot = _IMPLEMENTATION_SLOT;
        //slither-disable-next-line assembly
        assembly {
            sstore(slot, newImplementation)
        }
    }

    /**
     * @dev Delegates the current call to `implementation`.
     *
     * This function does not return to its internal call site, it will return directly to the external caller.
     */
    function _delegate(address implementation) internal virtual {
        //slither-disable-next-line assembly
        assembly {
            // Copy msg.data. We take full control of memory in this inline assembly
            // block because it will not return to Solidity code. We overwrite the
            // Solidity scratch pad at memory position 0.
            calldatacopy(0, 0, calldatasize())

            // Call the implementation.
            // out and outsize are 0 because we don't know the size yet.
            let result := delegatecall(gas(), implementation, 0, calldatasize(), 0, 0)

            // Copy the returned data.
            returndatacopy(0, 0, returndatasize())

            switch result
            // delegatecall returns 0 on error.
            case 0 { revert(0, returndatasize()) }
            default { return(0, returndatasize()) }
        }
    }

    /**
     * @dev Delegates the current call to the address returned by `_implementation()`.
     *
     * This function does not return to its internal call site, it will return directly to the external caller.
     */
    function _fallback() internal virtual {
        _delegate(_implementation());
    }

    /// @dev Fallback function that delegates calls to the address returned by `_implementation()`. Will run if no other
    /// function in the contract matches the call data.
    //slither-disable-next-line locked-ether
    fallback() external payable virtual {
        _fallback();
    }

    /// @dev Fallback function that delegates calls to the address returned by `_implementation()`. Will run if call data
    /// is empty.
    //slither-disable-next-line locked-ether
    receive() external payable virtual {
        _fallback();
    }
}

// SPDX-License-Identifier: MIT
pragma solidity ^0.8.28;

/// @dev Base core interface implemented by most platform contracts.
///      Inherited contracts store an immutable Platform proxy address in the storage,
///      which provides authorization capabilities and infrastructure contract addresses.
/// @author Alien Deployer (https://github.com/a17)
/// @author JodsMigel (https://github.com/JodsMigel)
interface IControllable {
    //region ----- Custom Errors -----
    error IncorrectZeroArgument();
    error IncorrectMsgSender();
    error NotGovernance();
    error NotMultisig();
    error NotGovernanceAndNotMultisig();
    error NotOperator();
    error NotFactory();
    error NotPlatform();
    error NotVault();
    error IncorrectArrayLength();
    error AlreadyExist();
    error NotExist();
    error NotTheOwner();
    error ETHTransferFailed();
    error IncorrectInitParams();
    //endregion -- Custom Errors -----

    event ContractInitialized(address platform, uint ts, uint block);

    /// @notice Stability Platform main contract address
    function platform() external view returns (address);

    /// @notice Version of contract implementation
    /// @dev SemVer scheme MAJOR.MINOR.PATCH
    //slither-disable-next-line naming-convention
    function VERSION() external view returns (string memory);

    /// @notice Block number when contract was initialized
    function createdBlock() external view returns (uint);
}

// SPDX-License-Identifier: MIT
pragma solidity ^0.8.28;

/// @dev Proxy of core contract implementation
interface IProxy {
    /// @dev Initialize proxy logic. Need to call after deploy new proxy.
    /// @param logic Address of core contract implementation
    function initProxy(address logic) external;

    /// @notice Upgrade proxy implementation (contract logic).
    /// @dev Upgrade execution allowed only for Platform contract.
    /// An upgrade of any core contract proxy is always part of a platform time locked upgrade,
    /// with a change in the platform version.
    /// @param newImplementation New implementation address
    function upgrade(address newImplementation) external;

    /// @notice Return current logic implementation
    /// @return Address of implementation contract
    function implementation() external view returns (address);
}

Settings
{
  "remappings": [
    "@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/",
    "@openzeppelin/contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/",
    "@solady/=lib/solady/src/",
    "ds-test/=lib/forge-std/lib/ds-test/src/",
    "erc4626-tests/=lib/openzeppelin-contracts-upgradeable/lib/erc4626-tests/",
    "forge-std/=lib/forge-std/src/",
    "openzeppelin-contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/",
    "openzeppelin/=lib/openzeppelin-contracts-upgradeable/contracts/",
    "solady/=lib/solady/",
    "openzeppelin-contracts/=lib/openzeppelin-contracts/"
  ],
  "optimizer": {
    "enabled": true,
    "runs": 200
  },
  "metadata": {
    "useLiteralContent": false,
    "bytecodeHash": "ipfs",
    "appendCBOR": true
  },
  "outputSelection": {
    "*": {
      "*": [
        "evm.bytecode",
        "evm.deployedBytecode",
        "devdoc",
        "userdoc",
        "metadata",
        "abi"
      ]
    }
  },
  "evmVersion": "cancun",
  "viaIR": false,
  "libraries": {}
}

Contract Security Audit

Contract ABI

API
[{"inputs":[],"name":"ImplementationIsNotContract","type":"error"},{"inputs":[],"name":"NotPlatform","type":"error"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"implementation","type":"address"}],"name":"Upgraded","type":"event"},{"stateMutability":"payable","type":"fallback"},{"inputs":[],"name":"implementation","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"logic","type":"address"}],"name":"initProxy","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newImplementation","type":"address"}],"name":"upgrade","outputs":[],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]

6080604052348015600e575f5ffd5b50603860017f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbd6067565b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc146063576063608b565b609f565b81810381811115608557634e487b7160e01b5f52601160045260245ffd5b92915050565b634e487b7160e01b5f52600160045260245ffd5b6103d2806100ac5f395ff3fe608060405260043610610037575f3560e01c80630900f0101461004e5780635c60da1b1461006d5780639c0200611461009d57610046565b36610046576100446100bc565b005b6100446100bc565b348015610059575f5ffd5b5061004461006836600461033f565b6100db565b348015610078575f5ffd5b50610081610209565b6040516001600160a01b03909116815260200160405180910390f35b3480156100a8575f5ffd5b506100446100b736600461033f565b610224565b6100d96100d45f51602061037d5f395f51905f525490565b61022d565b565b336001600160a01b0316306001600160a01b0316634bde38c86040518163ffffffff1660e01b8152600401602060405180830381865afa158015610121573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906101459190610361565b6001600160a01b03161461016c5760405163016bdfed60e71b815260040160405180910390fd5b6101758161024b565b336001600160a01b0316306001600160a01b0316634bde38c86040518163ffffffff1660e01b8152600401602060405180830381865afa1580156101bb573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906101df9190610361565b6001600160a01b0316146102065760405163016bdfed60e71b815260040160405180910390fd5b50565b5f61021f5f51602061037d5f395f51905f525490565b905090565b6102068161028a565b365f5f375f5f365f845af43d5f5f3e808015610247573d5ff35b3d5ffd5b610254816102f0565b6040516001600160a01b038216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b905f90a250565b5f6102a05f51602061037d5f395f51905f525490565b6001600160a01b0316146102eb5760405162461bcd60e51b815260206004820152600e60248201526d105b1c9958591e481a5b9a5d195960921b604482015260640160405180910390fd5b610206815b806001600160a01b03163b5f0361031a5760405163e84f0f9960e01b815260040160405180910390fd5b5f51602061037d5f395f51905f5255565b6001600160a01b0381168114610206575f5ffd5b5f6020828403121561034f575f5ffd5b813561035a8161032b565b9392505050565b5f60208284031215610371575f5ffd5b815161035a8161032b56fe360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbca2646970667358221220da21f1345d87d64ac93948209dd64a048f159bd639cc7d6c2a9d99038cd4000e64736f6c634300081c0033

Deployed Bytecode

0x608060405260043610610037575f3560e01c80630900f0101461004e5780635c60da1b1461006d5780639c0200611461009d57610046565b36610046576100446100bc565b005b6100446100bc565b348015610059575f5ffd5b5061004461006836600461033f565b6100db565b348015610078575f5ffd5b50610081610209565b6040516001600160a01b03909116815260200160405180910390f35b3480156100a8575f5ffd5b506100446100b736600461033f565b610224565b6100d96100d45f51602061037d5f395f51905f525490565b61022d565b565b336001600160a01b0316306001600160a01b0316634bde38c86040518163ffffffff1660e01b8152600401602060405180830381865afa158015610121573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906101459190610361565b6001600160a01b03161461016c5760405163016bdfed60e71b815260040160405180910390fd5b6101758161024b565b336001600160a01b0316306001600160a01b0316634bde38c86040518163ffffffff1660e01b8152600401602060405180830381865afa1580156101bb573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906101df9190610361565b6001600160a01b0316146102065760405163016bdfed60e71b815260040160405180910390fd5b50565b5f61021f5f51602061037d5f395f51905f525490565b905090565b6102068161028a565b365f5f375f5f365f845af43d5f5f3e808015610247573d5ff35b3d5ffd5b610254816102f0565b6040516001600160a01b038216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b905f90a250565b5f6102a05f51602061037d5f395f51905f525490565b6001600160a01b0316146102eb5760405162461bcd60e51b815260206004820152600e60248201526d105b1c9958591e481a5b9a5d195960921b604482015260640160405180910390fd5b610206815b806001600160a01b03163b5f0361031a5760405163e84f0f9960e01b815260040160405180910390fd5b5f51602061037d5f395f51905f5255565b6001600160a01b0381168114610206575f5ffd5b5f6020828403121561034f575f5ffd5b813561035a8161032b565b9392505050565b5f60208284031215610371575f5ffd5b815161035a8161032b56fe360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbca2646970667358221220da21f1345d87d64ac93948209dd64a048f159bd639cc7d6c2a9d99038cd4000e64736f6c634300081c0033

Block Transaction Gas Used Reward
view all blocks ##produced##

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

Validator Index Block Amount
View All Withdrawals

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