S Price: $0.713835 (-1.89%)

Contract

0xd8C33f436f3f14E424b3c61043c73c3365De20c2

Overview

S Balance

Sonic LogoSonic LogoSonic Logo0 S

S Value

$0.00

Multichain Info

No addresses found
Transaction Hash
Method
Block
From
To
Allocate Seignio...104114362025-02-27 0:00:284 hrs ago1740614428IN
0xd8C33f43...365De20c2
0 S0.062129755
Allocate Seignio...103296772025-02-26 16:00:5812 hrs ago1740585658IN
0xd8C33f43...365De20c2
0 S0.0629761555
Set Peg Token Co...102559292025-02-26 8:41:2619 hrs ago1740559286IN
0xd8C33f43...365De20c2
0 S0.0023530655
Allocate Seignio...102493062025-02-26 8:00:0220 hrs ago1740556802IN
0xd8C33f43...365De20c2
0 S0.0849733555
Add Peg Token Lo...102286452025-02-26 5:50:1022 hrs ago1740549010IN
0xd8C33f43...365De20c2
0 S0.0037204255
Add Peg Token Lo...102280472025-02-26 5:46:0922 hrs ago1740548769IN
0xd8C33f43...365De20c2
0 S0.0035857855
Add Peg Token Lo...102279302025-02-26 5:45:2122 hrs ago1740548721IN
0xd8C33f43...365De20c2
0 S0.0035857855
Set Regulation S...102201752025-02-26 4:54:5023 hrs ago1740545690IN
0xd8C33f43...365De20c2
0 S0.0028586255
Initialize102184812025-02-26 4:44:2323 hrs ago1740545063IN
0xd8C33f43...365De20c2
0 S0.0500683155

Parent Transaction Hash Block From To
View All Internal Transactions
Loading...
Loading

Contract Source Code Verified (Exact Match)

Contract Name:
UpgradableProxy

Compiler Version
v0.7.6+commit.7338295f

Optimization Enabled:
Yes with 999999 runs

Other Settings:
default evmVersion, MIT license
/**
 *Submitted for verification at SonicScan.org on 2025-02-26
*/

// SPDX-License-Identifier: MIT

pragma solidity 0.7.6;

interface IERCProxy {
    function proxyType() external pure returns (uint256 proxyTypeId);

    function implementation() external view returns (address codeAddr);
}

abstract contract Proxy is IERCProxy {
    function delegatedFwd(address _dst, bytes memory _calldata) internal {
        // solium-disable-next-line security/no-inline-assembly
        assembly {
            let result := delegatecall(
                sub(gas(), 10000),
                _dst,
                add(_calldata, 0x20),
                mload(_calldata),
                0,
                0
            )
            let size := returndatasize()

            let ptr := mload(0x40)
            returndatacopy(ptr, 0, size)

        // revert instead of invalid() bc if the underlying call failed with invalid() it already wasted gas.
        // if the call returned error data, forward it
            switch result
            case 0 {
                revert(ptr, size)
            }
            default {
                return (ptr, size)
            }
        }
    }

    function proxyType()
    external
    pure
    virtual
    override
    returns (uint256 proxyTypeId)
    {
        // Upgradeable proxy
        proxyTypeId = 2;
    }

    function implementation() external view virtual override returns (address);
}

contract UpgradableProxy is Proxy {
    event ProxyUpdated(address indexed _new, address indexed _old);
    event ProxyOwnerUpdate(address _new, address _old);

    bytes32 constant IMPLEMENTATION_SLOT =
    keccak256("upgradable.proxy.implementation");
    bytes32 constant OWNER_SLOT = keccak256("upgradable.network.proxy.owner");

    constructor(address _proxyTo) {
        setProxyOwner(msg.sender);
        setImplementation(_proxyTo);
    }

    fallback() external payable {
        delegatedFwd(loadImplementation(), msg.data);
    }

    receive() external payable {
        delegatedFwd(loadImplementation(), msg.data);
    }

    modifier onlyProxyOwner() {
        require(loadProxyOwner() == msg.sender, "NOT_OWNER");
        _;
    }

    function proxyOwner() external view returns (address) {
        return loadProxyOwner();
    }

    function loadProxyOwner() internal view returns (address) {
        address _owner;
        bytes32 position = OWNER_SLOT;
        assembly {
            _owner := sload(position)
        }
        return _owner;
    }

    function implementation() external view override returns (address) {
        return loadImplementation();
    }

    function loadImplementation() internal view returns (address) {
        address _impl;
        bytes32 position = IMPLEMENTATION_SLOT;
        assembly {
            _impl := sload(position)
        }
        return _impl;
    }

    function transferProxyOwnership(address newOwner) public onlyProxyOwner {
        require(newOwner != address(0), "ZERO_ADDRESS");
        emit ProxyOwnerUpdate(newOwner, loadProxyOwner());
        setProxyOwner(newOwner);
    }

    function setProxyOwner(address newOwner) private {
        bytes32 position = OWNER_SLOT;
        assembly {
            sstore(position, newOwner)
        }
    }

    function updateImplementation(address _newProxyTo) public onlyProxyOwner {
        require(_newProxyTo != address(0x0), "INVALID_PROXY_ADDRESS");
        require(
            isContract(_newProxyTo),
            "DESTINATION_ADDRESS_IS_NOT_A_CONTRACT"
        );

        emit ProxyUpdated(_newProxyTo, loadImplementation());

        setImplementation(_newProxyTo);
    }

    function updateAndCall(address _newProxyTo, bytes memory data)
    public
    payable
    onlyProxyOwner
    {
        updateImplementation(_newProxyTo);

        (bool success, bytes memory returnData) = address(this).call{
                value: msg.value
            }(data);
        require(success, string(returnData));
    }

    function setImplementation(address _newProxyTo) private {
        bytes32 position = IMPLEMENTATION_SLOT;
        assembly {
            sstore(position, _newProxyTo)
        }
    }

    function isContract(address _target) internal view returns (bool) {
        if (_target == address(0)) {
            return false;
        }

        uint256 size;
        assembly {
            size := extcodesize(_target)
        }
        return size > 0;
    }
}

Contract Security Audit

Contract ABI

[{"inputs":[{"internalType":"address","name":"_proxyTo","type":"address"}],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"_new","type":"address"},{"indexed":false,"internalType":"address","name":"_old","type":"address"}],"name":"ProxyOwnerUpdate","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"_new","type":"address"},{"indexed":true,"internalType":"address","name":"_old","type":"address"}],"name":"ProxyUpdated","type":"event"},{"stateMutability":"payable","type":"fallback"},{"inputs":[],"name":"implementation","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"proxyOwner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"proxyType","outputs":[{"internalType":"uint256","name":"proxyTypeId","type":"uint256"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferProxyOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_newProxyTo","type":"address"},{"internalType":"bytes","name":"data","type":"bytes"}],"name":"updateAndCall","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"address","name":"_newProxyTo","type":"address"}],"name":"updateImplementation","outputs":[],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]

608060405234801561001057600080fd5b506040516109fc3803806109fc8339818101604052602081101561003357600080fd5b505161003e3361004d565b61004781610071565b50610095565b7f80779e3772a658fd8d2c2c42bbab1b2316bc83ce107ce26ca323a06e6417160e55565b7f4e8f220a1793a5189b1ea1409cb3dc3f2765ad96089a8edd4815cbb1d719b2de55565b610958806100a46000396000f3fe6080604052600436106100695760003560e01c80635c60da1b116100435780635c60da1b14610168578063d88ca2c81461017d578063f1739cae14610240576100b8565b8063025313a2146100c3578063025b22bc146101015780634555d5c914610141576100b8565b366100b8576100b6610079610280565b6000368080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152506102a592505050565b005b6100b6610079610280565b3480156100cf57600080fd5b506100d86102cd565b6040805173ffffffffffffffffffffffffffffffffffffffff9092168252519081900360200190f35b34801561010d57600080fd5b506100b66004803603602081101561012457600080fd5b503573ffffffffffffffffffffffffffffffffffffffff166102dc565b34801561014d57600080fd5b506101566104b4565b60408051918252519081900360200190f35b34801561017457600080fd5b506100d86104b9565b6100b66004803603604081101561019357600080fd5b73ffffffffffffffffffffffffffffffffffffffff82351691908101906040810160208201356401000000008111156101cb57600080fd5b8201836020820111156101dd57600080fd5b803590602001918460018302840111640100000000831117156101ff57600080fd5b91908080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152509295506104c3945050505050565b34801561024c57600080fd5b506100b66004803603602081101561026357600080fd5b503573ffffffffffffffffffffffffffffffffffffffff166106d8565b7f4e8f220a1793a5189b1ea1409cb3dc3f2765ad96089a8edd4815cbb1d719b2de5490565b600080825160208401856127105a03f43d604051816000823e8280156102c9578282f35b8282fd5b60006102d7610860565b905090565b336102e5610860565b73ffffffffffffffffffffffffffffffffffffffff161461036757604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600960248201527f4e4f545f4f574e45520000000000000000000000000000000000000000000000604482015290519081900360640190fd5b73ffffffffffffffffffffffffffffffffffffffff81166103e957604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601560248201527f494e56414c49445f50524f58595f414444524553530000000000000000000000604482015290519081900360640190fd5b6103f281610885565b610447576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260258152602001806108fe6025913960400191505060405180910390fd5b61044f610280565b73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167fd32d24edea94f55e932d9a008afc425a8561462d1b1f57bc6e508e9a6b9509e160405160405180910390a36104b1816108b5565b50565b600290565b60006102d7610280565b336104cc610860565b73ffffffffffffffffffffffffffffffffffffffff161461054e57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600960248201527f4e4f545f4f574e45520000000000000000000000000000000000000000000000604482015290519081900360640190fd5b610557826102dc565b6000803073ffffffffffffffffffffffffffffffffffffffff1634846040518082805190602001908083835b602083106105c057805182527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe09092019160209182019101610583565b6001836020036101000a03801982511681845116808217855250505050505090500191505060006040518083038185875af1925050503d8060008114610622576040519150601f19603f3d011682016040523d82523d6000602084013e610627565b606091505b50915091508181906106d1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825283818151815260200191508051906020019080838360005b8381101561069657818101518382015260200161067e565b50505050905090810190601f1680156106c35780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b5050505050565b336106e1610860565b73ffffffffffffffffffffffffffffffffffffffff161461076357604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600960248201527f4e4f545f4f574e45520000000000000000000000000000000000000000000000604482015290519081900360640190fd5b73ffffffffffffffffffffffffffffffffffffffff81166107e557604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600c60248201527f5a45524f5f414444524553530000000000000000000000000000000000000000604482015290519081900360640190fd5b7fdbe5fd65bcdbae152f24ab660ea68e72b4d4705b57b16e0caae994e214680ee28161080f610860565b604051808373ffffffffffffffffffffffffffffffffffffffff1681526020018273ffffffffffffffffffffffffffffffffffffffff1681526020019250505060405180910390a16104b1816108d9565b7f80779e3772a658fd8d2c2c42bbab1b2316bc83ce107ce26ca323a06e6417160e5490565b600073ffffffffffffffffffffffffffffffffffffffff82166108aa575060006108b0565b50803b15155b919050565b7f4e8f220a1793a5189b1ea1409cb3dc3f2765ad96089a8edd4815cbb1d719b2de55565b7f80779e3772a658fd8d2c2c42bbab1b2316bc83ce107ce26ca323a06e6417160e5556fe44455354494e4154494f4e5f414444524553535f49535f4e4f545f415f434f4e5452414354a2646970667358221220405d11edfea715ab1ddd102a0da51d14e8f3003d62ecca130681e448f3ac47ce64736f6c63430007060033000000000000000000000000a588f7806a758d76d64b7f66a3963dea3bec2647

Deployed Bytecode

0x6080604052600436106100695760003560e01c80635c60da1b116100435780635c60da1b14610168578063d88ca2c81461017d578063f1739cae14610240576100b8565b8063025313a2146100c3578063025b22bc146101015780634555d5c914610141576100b8565b366100b8576100b6610079610280565b6000368080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152506102a592505050565b005b6100b6610079610280565b3480156100cf57600080fd5b506100d86102cd565b6040805173ffffffffffffffffffffffffffffffffffffffff9092168252519081900360200190f35b34801561010d57600080fd5b506100b66004803603602081101561012457600080fd5b503573ffffffffffffffffffffffffffffffffffffffff166102dc565b34801561014d57600080fd5b506101566104b4565b60408051918252519081900360200190f35b34801561017457600080fd5b506100d86104b9565b6100b66004803603604081101561019357600080fd5b73ffffffffffffffffffffffffffffffffffffffff82351691908101906040810160208201356401000000008111156101cb57600080fd5b8201836020820111156101dd57600080fd5b803590602001918460018302840111640100000000831117156101ff57600080fd5b91908080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152509295506104c3945050505050565b34801561024c57600080fd5b506100b66004803603602081101561026357600080fd5b503573ffffffffffffffffffffffffffffffffffffffff166106d8565b7f4e8f220a1793a5189b1ea1409cb3dc3f2765ad96089a8edd4815cbb1d719b2de5490565b600080825160208401856127105a03f43d604051816000823e8280156102c9578282f35b8282fd5b60006102d7610860565b905090565b336102e5610860565b73ffffffffffffffffffffffffffffffffffffffff161461036757604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600960248201527f4e4f545f4f574e45520000000000000000000000000000000000000000000000604482015290519081900360640190fd5b73ffffffffffffffffffffffffffffffffffffffff81166103e957604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601560248201527f494e56414c49445f50524f58595f414444524553530000000000000000000000604482015290519081900360640190fd5b6103f281610885565b610447576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260258152602001806108fe6025913960400191505060405180910390fd5b61044f610280565b73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167fd32d24edea94f55e932d9a008afc425a8561462d1b1f57bc6e508e9a6b9509e160405160405180910390a36104b1816108b5565b50565b600290565b60006102d7610280565b336104cc610860565b73ffffffffffffffffffffffffffffffffffffffff161461054e57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600960248201527f4e4f545f4f574e45520000000000000000000000000000000000000000000000604482015290519081900360640190fd5b610557826102dc565b6000803073ffffffffffffffffffffffffffffffffffffffff1634846040518082805190602001908083835b602083106105c057805182527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe09092019160209182019101610583565b6001836020036101000a03801982511681845116808217855250505050505090500191505060006040518083038185875af1925050503d8060008114610622576040519150601f19603f3d011682016040523d82523d6000602084013e610627565b606091505b50915091508181906106d1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825283818151815260200191508051906020019080838360005b8381101561069657818101518382015260200161067e565b50505050905090810190601f1680156106c35780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b5050505050565b336106e1610860565b73ffffffffffffffffffffffffffffffffffffffff161461076357604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600960248201527f4e4f545f4f574e45520000000000000000000000000000000000000000000000604482015290519081900360640190fd5b73ffffffffffffffffffffffffffffffffffffffff81166107e557604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600c60248201527f5a45524f5f414444524553530000000000000000000000000000000000000000604482015290519081900360640190fd5b7fdbe5fd65bcdbae152f24ab660ea68e72b4d4705b57b16e0caae994e214680ee28161080f610860565b604051808373ffffffffffffffffffffffffffffffffffffffff1681526020018273ffffffffffffffffffffffffffffffffffffffff1681526020019250505060405180910390a16104b1816108d9565b7f80779e3772a658fd8d2c2c42bbab1b2316bc83ce107ce26ca323a06e6417160e5490565b600073ffffffffffffffffffffffffffffffffffffffff82166108aa575060006108b0565b50803b15155b919050565b7f4e8f220a1793a5189b1ea1409cb3dc3f2765ad96089a8edd4815cbb1d719b2de55565b7f80779e3772a658fd8d2c2c42bbab1b2316bc83ce107ce26ca323a06e6417160e5556fe44455354494e4154494f4e5f414444524553535f49535f4e4f545f415f434f4e5452414354a2646970667358221220405d11edfea715ab1ddd102a0da51d14e8f3003d62ecca130681e448f3ac47ce64736f6c63430007060033

Constructor Arguments (ABI-Encoded and is the last bytes of the Contract Creation Code above)

000000000000000000000000a588f7806a758d76d64b7f66a3963dea3bec2647

-----Decoded View---------------
Arg [0] : _proxyTo (address): 0xa588f7806A758D76d64b7f66a3963dEA3beC2647

-----Encoded View---------------
1 Constructor Arguments found :
Arg [0] : 000000000000000000000000a588f7806a758d76d64b7f66a3963dea3bec2647


Deployed Bytecode Sourcemap

1418:3108:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2021:44;2034:20;:18;:20::i;:::-;2056:8;;2021:44;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;2021:12:0;;-1:-1:-1;;;2021:44:0:i;:::-;1418:3108;;1923:44;1936:20;:18;:20::i;2198:96::-;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;3315:382;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;3315:382:0;;;;:::i;1152:176::-;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;2535:113;;;;;;;;;;;;;:::i;3705:341::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;3705:341:0;;-1:-1:-1;3705:341:0;;-1:-1:-1;;;;;3705:341:0:i;2899:232::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;2899:232:0;;;;:::i;2656:235::-;1631:44;2835:15;2656:235;:::o;279:865::-;646:1;626;597:9;591:16;567:4;556:9;552:20;529:4;504:5;497;493:17;462:200;688:16;737:4;731:11;779:4;776:1;771:3;756:28;974:6;994:58;;;;1106:4;1101:3;1093:18;994:58;1032:4;1027:3;1020:17;2198:96;2243:7;2270:16;:14;:16::i;:::-;2263:23;;2198:96;:::o;3315:382::-;2146:10;2126:16;:14;:16::i;:::-;:30;;;2118:52;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3407:27:::1;::::0;::::1;3399:61;;;::::0;;::::1;::::0;;::::1;;::::0;::::1;::::0;::::1;::::0;;;;::::1;::::0;;;;;;;;;;;;;::::1;;3493:23;3504:11;3493:10;:23::i;:::-;3471:110;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3625:20;:18;:20::i;:::-;3599:47;;3612:11;3599:47;;;;;;;;;;;;3659:30;3677:11;3659:17;:30::i;:::-;3315:382:::0;:::o;1152:176::-;1319:1;;1152:176::o;2535:113::-;2593:7;2620:20;:18;:20::i;3705:341::-;2146:10;2126:16;:14;:16::i;:::-;:30;;;2118:52;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3829:33:::1;3850:11;3829:20;:33::i;:::-;3876:12;3890:23:::0;3925:4:::1;3917:18;;3961:9;3986:4;3917:74;;;;;;;;;;;;;;;;;;;::::0;;;;;;;;;::::1;::::0;;::::1;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3875:116;;;;4010:7;4026:10;4002:36;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;;::::1;::::0;;;::::1;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2181:1;;3705:341:::0;;:::o;2899:232::-;2146:10;2126:16;:14;:16::i;:::-;:30;;;2118:52;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2990:22:::1;::::0;::::1;2982:47;;;::::0;;::::1;::::0;;::::1;;::::0;::::1;::::0;::::1;::::0;;;;::::1;::::0;;;;;;;;;;;;;::::1;;3045:44;3062:8;3072:16;:14;:16::i;:::-;3045:44;;;;;;;;;;;;;;;;;;;;;;;;;;;;3100:23;3114:8;3100:13;:23::i;2302:225::-:0;1712:43;2470:15;2302:225;:::o;4249:274::-;4309:4;4330:21;;;4326:66;;-1:-1:-1;4375:5:0;4368:12;;4326:66;-1:-1:-1;4459:20:0;;4507:8;;4249:274;;;;:::o;4054:187::-;1631:44;4194:29;4179:55::o;3139:168::-;1712:43;3263:26;3248:52::o

Swarm Source

ipfs://405d11edfea715ab1ddd102a0da51d14e8f3003d62ecca130681e448f3ac47ce

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.