S Price: $0.481658 (-3.24%)

Contract

0x777CF5ba9C291A1A8f57FF14836F6F9dC5c0F9Dd

Overview

S Balance

Sonic LogoSonic LogoSonic Logo0 S

S Value

$0.00

Multichain Info

No addresses found
Transaction Hash
Method
Block
From
To
Approve184217532025-04-06 2:43:477 hrs ago1743907427IN
0x777CF5ba...dC5c0F9Dd
0 S0.0017019555.01
Approve183813032025-04-05 20:51:1713 hrs ago1743886277IN
0x777CF5ba...dC5c0F9Dd
0 S0.0029621755.01
Transfer182095832025-04-04 22:24:1536 hrs ago1743805455IN
0x777CF5ba...dC5c0F9Dd
0 S0.0020135855.01
Approve180843482025-04-04 9:08:542 days ago1743757734IN
0x777CF5ba...dC5c0F9Dd
0 S0.0029600855.01
Approve180479662025-04-04 4:48:432 days ago1743742123IN
0x777CF5ba...dC5c0F9Dd
0 S0.0029781355.01
Approve178856872025-04-03 10:49:112 days ago1743677351IN
0x777CF5ba...dC5c0F9Dd
0 S0.0029618355.02
Approve178674202025-04-03 8:49:453 days ago1743670185IN
0x777CF5ba...dC5c0F9Dd
0 S0.0029628955.01
Approve178672652025-04-03 8:48:423 days ago1743670122IN
0x777CF5ba...dC5c0F9Dd
0 S0.0029615155.01
Approve178670632025-04-03 8:47:183 days ago1743670038IN
0x777CF5ba...dC5c0F9Dd
0 S0.0019715555.01
Approve178669222025-04-03 8:46:233 days ago1743669983IN
0x777CF5ba...dC5c0F9Dd
0 S0.0029615155.01
Approve176986082025-04-02 14:13:243 days ago1743603204IN
0x777CF5ba...dC5c0F9Dd
0 S0.0044663882.5
Approve175538242025-04-01 22:00:164 days ago1743544816IN
0x777CF5ba...dC5c0F9Dd
0 S0.0029638855.01
Approve174638212025-04-01 13:01:164 days ago1743512476IN
0x777CF5ba...dC5c0F9Dd
0 S0.0017246550.0001
Approve173294262025-03-31 21:39:505 days ago1743457190IN
0x777CF5ba...dC5c0F9Dd
0 S0.0029616455
Approve172312472025-03-31 11:34:525 days ago1743420892IN
0x777CF5ba...dC5c0F9Dd
0 S0.0029911255.25
Approve172309772025-03-31 11:33:035 days ago1743420783IN
0x777CF5ba...dC5c0F9Dd
0 S0.002960855.01
Approve171160032025-03-30 23:10:526 days ago1743376252IN
0x777CF5ba...dC5c0F9Dd
0 S0.0017526956.65
Approve170811272025-03-30 19:41:386 days ago1743363698IN
0x777CF5ba...dC5c0F9Dd
0 S0.0017526956.65
Approve170811002025-03-30 19:41:276 days ago1743363687IN
0x777CF5ba...dC5c0F9Dd
0 S0.0017526956.65
Approve170810732025-03-30 19:41:176 days ago1743363677IN
0x777CF5ba...dC5c0F9Dd
0 S0.0017526956.65
Approve168927242025-03-29 23:46:417 days ago1743292001IN
0x777CF5ba...dC5c0F9Dd
0 S0.0017019555.01
Approve166806862025-03-29 0:51:098 days ago1743209469IN
0x777CF5ba...dC5c0F9Dd
0 S0.0029781355.01
Approve166023922025-03-28 16:35:128 days ago1743179712IN
0x777CF5ba...dC5c0F9Dd
0 S0.0029616455
Approve166023262025-03-28 16:34:478 days ago1743179687IN
0x777CF5ba...dC5c0F9Dd
0 S0.0029616455
Approve166020452025-03-28 16:33:028 days ago1743179582IN
0x777CF5ba...dC5c0F9Dd
0 S0.0029616455
View all transactions

Latest 1 internal transaction

Parent Transaction Hash Block From To
2168402024-12-08 21:10:22118 days ago1733692222  Contract Creation0 S
Loading...
Loading

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

Contract Name:
SolidlyProxy

Compiler Version
v0.8.11+commit.d7f03943

Optimization Enabled:
Yes with 200 runs

Other Settings:
london EvmVersion, BSL 1.1 license
File 1 of 1 : SolidlyProxy.sol
// SPDX-License-Identifier: MIT
pragma solidity 0.8.11;

/**
 * @title Solidly governance killable proxy
 * @author Solidly Labs
 * @notice EIP-1967 upgradeable proxy with the ability to kill governance and render the contract immutable
 */
contract SolidlyProxy {
    bytes32 constant IMPLEMENTATION_SLOT =
        0x360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc; // keccak256('eip1967.proxy.implementation'), actually used for interface so etherscan picks up the interface
    bytes32 constant LOGIC_SLOT =
        0x5942be825425c77e56e4bce97986794ab0f100954e40fc1390ae0e003710a3ab; // keccak256('LOGIC') - 1, actual logic implementation
    bytes32 constant GOVERNANCE_SLOT =
        0xb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d6103; // keccak256('eip1967.proxy.admin')
    bytes32 constant INITIALIZED_SLOT =
        0x834ce84547018237034401a09067277cdcbe7bbf7d7d30f6b382b0a102b7b4a3; // keccak256('eip1967.proxy.initialized')

    /**
     * @notice Reverts if msg.sender is not governance
     */
    modifier onlyGovernance() {
        require(msg.sender == governanceAddress(), "Only governance");
        _;
    }

    /**
     * @notice Reverts if contract is already initialized
     * @dev Used by implementations to ensure initialize() is only called once
     */
    modifier notInitialized() {
        bool initialized;
        assembly {
            initialized := sload(INITIALIZED_SLOT)
            if eq(initialized, 1) {
                revert(0, 0)
            }
            sstore(INITIALIZED_SLOT, 1)
        }
        _;
    }

    /**
     * @notice Sets up deployer as a proxy governance
     */
    constructor() {
        address _governanceAddress = msg.sender;
        assembly {
            sstore(GOVERNANCE_SLOT, _governanceAddress)
        }
    }

    /**
     * @notice Detect whether or not governance is killed
     * @return Return true if governance is killed, false if not
     * @dev If governance is killed this contract becomes immutable
     */
    function governanceIsKilled() public view returns (bool) {
        return governanceAddress() == address(0);
    }

    /**
     * @notice Kill governance, making this contract immutable
     * @dev Only governance can kil governance
     */
    function killGovernance() external onlyGovernance {
        updateGovernanceAddress(address(0));
    }

    /**
     * @notice Update implementation address
     * @param _interfaceAddress Address of the new interface
     * @dev Only governance can update implementation
     */
    function updateInterfaceAddress(address _interfaceAddress)
        external
        onlyGovernance
    {
        assembly {
            sstore(IMPLEMENTATION_SLOT, _interfaceAddress)
        }
    }

    /**
     * @notice Actually updates interface, kept for etherscan pattern recognition
     * @param _implementationAddress Address of the new implementation
     * @dev Only governance can update implementation
     */
    function updateImplementationAddress(address _implementationAddress)
        external
        onlyGovernance
    {
        assembly {
            sstore(IMPLEMENTATION_SLOT, _implementationAddress)
        }
    }

    /**
     * @notice Update implementation address
     * @param _logicAddress Address of the new implementation
     * @dev Only governance can update implementation
     */
    function updateLogicAddress(address _logicAddress) external onlyGovernance {
        assembly {
            sstore(LOGIC_SLOT, _logicAddress)
        }
    }

    /**
     * @notice Update governance address
     * @param _governanceAddress New governance address
     * @dev Only governance can update governance
     */
    function updateGovernanceAddress(address _governanceAddress)
        public
        onlyGovernance
    {
        assembly {
            sstore(GOVERNANCE_SLOT, _governanceAddress)
        }
    }

    /**
     * @notice Fetch the current implementation address
     * @return _implementationAddress Returns the current implementation address
     */
    function implementationAddress()
        public
        view
        returns (address _implementationAddress)
    {
        assembly {
            _implementationAddress := sload(IMPLEMENTATION_SLOT)
        }
    }

    /**
     * @notice Fetch the current implementation address
     * @return _interfaceAddress Returns the current implementation address
     */
    function interfaceAddress()
        public
        view
        virtual
        returns (address _interfaceAddress)
    {
        assembly {
            _interfaceAddress := sload(IMPLEMENTATION_SLOT)
        }
    }

    /**
     * @notice Fetch the current implementation address
     * @return _logicAddress Returns the current implementation address
     */
    function logicAddress()
        public
        view
        virtual
        returns (address _logicAddress)
    {
        assembly {
            _logicAddress := sload(LOGIC_SLOT)
        }
    }

    /**
     * @notice Fetch current governance address
     * @return _governanceAddress Returns current governance address
     */
    function governanceAddress()
        public
        view
        virtual
        returns (address _governanceAddress)
    {
        assembly {
            _governanceAddress := sload(GOVERNANCE_SLOT)
        }
    }

    /**
     * @notice Fallback function that delegatecalls the subimplementation instead of what's in the IMPLEMENTATION_SLOT
     */
    function _delegateCallSubimplmentation() internal virtual {
        assembly {
            let contractLogic := sload(LOGIC_SLOT)
            calldatacopy(0x0, 0x0, calldatasize())
            let success := delegatecall(
                gas(),
                contractLogic,
                0x0,
                calldatasize(),
                0,
                0
            )
            let returnDataSize := returndatasize()
            returndatacopy(0, 0, returnDataSize)
            switch success
            case 0 {
                revert(0, returnDataSize)
            }
            default {
                return(0, returnDataSize)
            }
        }
    }

    /**
     * @notice Delegatecall fallback proxy
     */
    fallback() external payable virtual {
        _delegateCallSubimplmentation();
    }

    receive() external payable virtual {
        _delegateCallSubimplmentation();
    }
}

Settings
{
  "optimizer": {
    "enabled": true,
    "runs": 200
  },
  "outputSelection": {
    "*": {
      "*": [
        "evm.bytecode",
        "evm.deployedBytecode",
        "abi"
      ]
    }
  },
  "metadata": {
    "bytecodeHash": "none"
  },
  "evmVersion": "london"
}

Contract Security Audit

Contract ABI

API
[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"stateMutability":"payable","type":"fallback"},{"inputs":[],"name":"governanceAddress","outputs":[{"internalType":"address","name":"_governanceAddress","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"governanceIsKilled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"implementationAddress","outputs":[{"internalType":"address","name":"_implementationAddress","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"interfaceAddress","outputs":[{"internalType":"address","name":"_interfaceAddress","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"killGovernance","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"logicAddress","outputs":[{"internalType":"address","name":"_logicAddress","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_governanceAddress","type":"address"}],"name":"updateGovernanceAddress","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_implementationAddress","type":"address"}],"name":"updateImplementationAddress","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_interfaceAddress","type":"address"}],"name":"updateInterfaceAddress","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_logicAddress","type":"address"}],"name":"updateLogicAddress","outputs":[],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]

Deployed Bytecode

0x6080604052600436106100955760003560e01c8063b56fbb9711610059578063b56fbb9714610189578063b90d8930146101a9578063b97a231914610155578063cf6126ed146101c9578063eb5ee83a146101c9576100a4565b8063179781c4146100ac578063654ea5e7146100d6578063795053d3146100eb5780639c1fcc4c14610121578063aa8a675414610155576100a4565b366100a4576100a26101e9565b005b6100a26101e9565b3480156100b857600080fd5b506100c1610232565b60405190151581526020015b60405180910390f35b3480156100e257600080fd5b506100a261025a565b3480156100f757600080fd5b50600080516020610423833981519152545b6040516001600160a01b0390911681526020016100cd565b34801561012d57600080fd5b507f5942be825425c77e56e4bce97986794ab0f100954e40fc1390ae0e003710a3ab54610109565b34801561016157600080fd5b507f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc54610109565b34801561019557600080fd5b506100a26101a43660046103c9565b6102af565b3480156101b557600080fd5b506100a26101c43660046103c9565b610313565b3480156101d557600080fd5b506100a26101e43660046103c9565b610365565b7f5942be825425c77e56e4bce97986794ab0f100954e40fc1390ae0e003710a3ab543660008037600080366000845af490503d806000803e81801561022d57816000f35b816000fd5b60008061024b6000805160206104238339815191525490565b6001600160a01b031614905090565b600080516020610423833981519152546001600160a01b0316336001600160a01b0316146102a35760405162461bcd60e51b815260040161029a906103f9565b60405180910390fd5b6102ad6000610313565b565b600080516020610423833981519152546001600160a01b0316336001600160a01b0316146102ef5760405162461bcd60e51b815260040161029a906103f9565b7f5942be825425c77e56e4bce97986794ab0f100954e40fc1390ae0e003710a3ab55565b600080516020610423833981519152546001600160a01b0316336001600160a01b0316146103535760405162461bcd60e51b815260040161029a906103f9565b60008051602061042383398151915255565b600080516020610423833981519152546001600160a01b0316336001600160a01b0316146103a55760405162461bcd60e51b815260040161029a906103f9565b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc55565b6000602082840312156103db57600080fd5b81356001600160a01b03811681146103f257600080fd5b9392505050565b6020808252600f908201526e4f6e6c7920676f7665726e616e636560881b60408201526060019056feb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d6103a164736f6c634300080b000a

Deployed Bytecode Sourcemap

241:6165:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6366:31;:29;:31::i;:::-;241:6165;;6277:31;:29;:31::i;2031:114::-;;;;;;;;;;;;;:::i;:::-;;;179:14:1;;172:22;154:41;;142:2;127:18;2031:114:0;;;;;;;;2277:102;;;;;;;;;;;;;:::i;5133:215::-;;;;;;;;;;-1:-1:-1;;;;;;;;;;;;5310:22:0;5133:215;;;-1:-1:-1;;;;;370:32:1;;;352:51;;340:2;325:18;5133:215:0;206:203:1;4799:195:0;;;;;;;;;;-1:-1:-1;4967:10:0;4961:17;4799:195;;4433:216;;;;;;;;;;-1:-1:-1;4613:19:0;4607:26;4433:216;;3384:157;;;;;;;;;;-1:-1:-1;3384:157:0;;;;;:::i;:::-;;:::i;3710:195::-;;;;;;;;;;-1:-1:-1;3710:195:0;;;;;:::i;:::-;;:::i;2561:198::-;;;;;;;;;;-1:-1:-1;2561:198:0;;;;;:::i;:::-;;:::i;5489:677::-;5607:10;5601:17;5654:14;5649:3;5644;5631:38;5853:1;5834;5802:14;5781:3;5750:13;5727:5;5697:171;5682:186;;5903:16;5953:14;5950:1;5947;5932:36;5988:7;6008:64;;;;6121:14;6118:1;6111:25;6008:64;6043:14;6040:1;6033:25;2031:114;2082:4;;2105:19;-1:-1:-1;;;;;;;;;;;5310:22:0;;5133:215;2105:19;-1:-1:-1;;;;;2105:33:0;;2098:40;;2031:114;:::o;2277:102::-;-1:-1:-1;;;;;;;;;;;5310:22:0;-1:-1:-1;;;;;1088:33:0;:10;-1:-1:-1;;;;;1088:33:0;;1080:61;;;;-1:-1:-1;;;1080:61:0;;;;;;;:::i;:::-;;;;;;;;;2337:35:::1;2369:1;2337:23;:35::i;:::-;2277:102::o:0;3384:157::-;-1:-1:-1;;;;;;;;;;;5310:22:0;-1:-1:-1;;;;;1088:33:0;:10;-1:-1:-1;;;;;1088:33:0;;1080:61;;;;-1:-1:-1;;;1080:61:0;;;;;;;:::i;:::-;3499:10:::1;3492:33:::0;3384:157::o;3710:195::-;-1:-1:-1;;;;;;;;;;;5310:22:0;-1:-1:-1;;;;;1088:33:0;:10;-1:-1:-1;;;;;1088:33:0;;1080:61;;;;-1:-1:-1;;;1080:61:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;;;;;;;3846:43:0;3710:195::o;2561:198::-;-1:-1:-1;;;;;;;;;;;5310:22:0;-1:-1:-1;;;;;1088:33:0;:10;-1:-1:-1;;;;;1088:33:0;;1080:61;;;;-1:-1:-1;;;1080:61:0;;;;;;;:::i;:::-;2704:19:::1;2697:46:::0;2561:198::o;414:286:1:-;473:6;526:2;514:9;505:7;501:23;497:32;494:52;;;542:1;539;532:12;494:52;568:23;;-1:-1:-1;;;;;620:31:1;;610:42;;600:70;;666:1;663;656:12;600:70;689:5;414:286;-1:-1:-1;;;414:286:1:o;705:339::-;907:2;889:21;;;946:2;926:18;;;919:30;-1:-1:-1;;;980:2:1;965:18;;958:45;1035:2;1020:18;;705:339::o

Swarm Source

none://164736f6c634300080b000a

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.