S Price: $0.782953 (+0.38%)

Contract

0xB5B371B75f9850dDD6CCB6C436DB54972a925308

Overview

S Balance

Sonic LogoSonic LogoSonic Logo0 S

S Value

$0.00

Multichain Info

No addresses found
Transaction Hash
Method
Block
From
To
Vote43255362025-01-18 0:23:161 min ago1737159796IN
0xB5B371B7...72a925308
0 S0.0016026550
Vote43255362025-01-18 0:23:161 min ago1737159796IN
0xB5B371B7...72a925308
0 S0.0016032550
Vote43255362025-01-18 0:23:161 min ago1737159796IN
0xB5B371B7...72a925308
0 S0.0016026550
Vote43255122025-01-18 0:22:502 mins ago1737159770IN
0xB5B371B7...72a925308
0 S0.0016032550
Vote43255122025-01-18 0:22:502 mins ago1737159770IN
0xB5B371B7...72a925308
0 S0.0016032550
Vote43255122025-01-18 0:22:502 mins ago1737159770IN
0xB5B371B7...72a925308
0 S0.0016032550
Vote43255122025-01-18 0:22:502 mins ago1737159770IN
0xB5B371B7...72a925308
0 S0.0016032550
Vote43255122025-01-18 0:22:502 mins ago1737159770IN
0xB5B371B7...72a925308
0 S0.0016026550
Vote43255122025-01-18 0:22:502 mins ago1737159770IN
0xB5B371B7...72a925308
0 S0.0016032550
Vote43255112025-01-18 0:22:502 mins ago1737159770IN
0xB5B371B7...72a925308
0 S0.0016032550
Vote43255112025-01-18 0:22:502 mins ago1737159770IN
0xB5B371B7...72a925308
0 S0.0016026550
Vote43250472025-01-18 0:16:278 mins ago1737159387IN
0xB5B371B7...72a925308
0 S0.00490327152.91666666
Vote43250472025-01-18 0:16:278 mins ago1737159387IN
0xB5B371B7...72a925308
0 S0.00490143152.91666666
Vote43250462025-01-18 0:16:258 mins ago1737159385IN
0xB5B371B7...72a925308
0 S0.0016032550
Vote43250462025-01-18 0:16:258 mins ago1737159385IN
0xB5B371B7...72a925308
0 S0.0016032550
Vote43250462025-01-18 0:16:258 mins ago1737159385IN
0xB5B371B7...72a925308
0 S0.0016026550
Vote43250462025-01-18 0:16:258 mins ago1737159385IN
0xB5B371B7...72a925308
0 S0.0016032550
Vote43250462025-01-18 0:16:258 mins ago1737159385IN
0xB5B371B7...72a925308
0 S0.0016032550
Vote43250462025-01-18 0:16:258 mins ago1737159385IN
0xB5B371B7...72a925308
0 S0.0016026550
Vote43239672025-01-18 0:03:3821 mins ago1737158618IN
0xB5B371B7...72a925308
0 S0.00545105170
Vote43239672025-01-18 0:03:3821 mins ago1737158618IN
0xB5B371B7...72a925308
0 S0.00544901170
Vote43239662025-01-18 0:03:3721 mins ago1737158617IN
0xB5B371B7...72a925308
0 S0.0016032550
Vote43239652025-01-18 0:03:3721 mins ago1737158617IN
0xB5B371B7...72a925308
0 S0.0016026550
Vote43239652025-01-18 0:03:3721 mins ago1737158617IN
0xB5B371B7...72a925308
0 S0.0016032550
Vote43239652025-01-18 0:03:3721 mins ago1737158617IN
0xB5B371B7...72a925308
0 S0.0016032550
View all transactions

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

Contract Source Code Verified (Exact Match)

Contract Name:
MessageBus

Compiler Version
v0.8.27+commit.40a35a09

Optimization Enabled:
Yes with 200 runs

Other Settings:
cancun EvmVersion
File 1 of 2 : MessageBus.sol
// SPDX-License-Identifier: UNLICENSED
pragma solidity 0.8.27;

import {IUpdateVerifier} from "./interfaces/IUpdateVerifier.sol";

/// MessageBus provides a reliable communication channel for validators to compose the state oracle update.
/// @custom:security-contact [email protected]
contract MessageBus {
    IUpdateVerifier public immutable updateVerifier;

    event Vote(bytes20 messageHash, uint32 chainId, bytes signature, address sender);

    constructor(IUpdateVerifier _updateVerifier) {
        require(address(_updateVerifier) != address(0), "UpdateVerifier address not set");
        updateVerifier = _updateVerifier;
    }

    /// Send a vote for a state oracle update.
    function vote(
        bytes20 messageHash,
        uint32 chainId,
        bytes calldata signature
    ) external {
        require(updateVerifier.validatorWeight(msg.sender) > 0, "Not a validator");
        emit Vote(messageHash, chainId, signature, msg.sender);
    }
}

File 2 of 2 : IUpdateVerifier.sol
// SPDX-License-Identifier: UNLICENSED
pragma solidity 0.8.27;

/// Update verifier provides a way to verify validators signatures on an update.
/// It provides access to the validators registry for the purpose of inter-chain synchronization.
interface IUpdateVerifier {
    struct Validator {
        uint256 id;
        address addr;
        uint256 weight;
    }

    /// Verify the state oracle update signatures
    function verifyUpdate(uint256 blockNum, bytes32 stateRoot, uint256 chainId, bytes calldata newValidators, address proofVerifier, address updateVerifier, address exitAdmin, bytes[] calldata signatures) external view returns (uint256[] memory);

    /// Write into the validators registry - reverts if the registry is readonly.
    function setValidators(bytes calldata newValidators) external;

    /// Get the highest validator id for purpose of iterating
    function lastValidatorId() external view returns(uint256);

    /// Get validator pubkey address by validator id
    function validatorAddress(uint256 index) external view returns(address);

    /// Get validator weight by validator address
    function validatorWeight(address addr) external view returns(uint256);

    /// Get validator id by validator pubkey address
    function validatorId(address addr) external view returns(uint256);

    /// Get weight of all registered validators
    function totalWeight() external view returns(uint256);

    /// Get weight necessary to update the state oracle
    function getQuorum() external view returns (uint256);
}

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

Contract Security Audit

Contract ABI

[{"inputs":[{"internalType":"contract IUpdateVerifier","name":"_updateVerifier","type":"address"}],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"bytes20","name":"messageHash","type":"bytes20"},{"indexed":false,"internalType":"uint32","name":"chainId","type":"uint32"},{"indexed":false,"internalType":"bytes","name":"signature","type":"bytes"},{"indexed":false,"internalType":"address","name":"sender","type":"address"}],"name":"Vote","type":"event"},{"inputs":[],"name":"updateVerifier","outputs":[{"internalType":"contract IUpdateVerifier","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bytes20","name":"messageHash","type":"bytes20"},{"internalType":"uint32","name":"chainId","type":"uint32"},{"internalType":"bytes","name":"signature","type":"bytes"}],"name":"vote","outputs":[],"stateMutability":"nonpayable","type":"function"}]

60a060405234801561000f575f5ffd5b506040516103db3803806103db83398101604081905261002e91610099565b6001600160a01b0381166100885760405162461bcd60e51b815260206004820152601e60248201527f55706461746556657269666965722061646472657373206e6f74207365740000604482015260640160405180910390fd5b6001600160a01b03166080526100c6565b5f602082840312156100a9575f5ffd5b81516001600160a01b03811681146100bf575f5ffd5b9392505050565b6080516102f86100e35f395f8181603d015260a701526102f85ff3fe608060405234801561000f575f5ffd5b5060043610610034575f3560e01c806398887caa14610038578063f5d34d841461007b575b5f5ffd5b61005f7f000000000000000000000000000000000000000000000000000000000000000081565b6040516001600160a01b03909116815260200160405180910390f35b61008e6100893660046101a0565b610090565b005b6040516314d94b5160e31b81523360048201525f907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03169063a6ca5a8890602401602060405180830381865afa1580156100f4573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906101189190610247565b1161015b5760405162461bcd60e51b815260206004820152600f60248201526e2737ba1030903b30b634b230ba37b960891b604482015260640160405180910390fd5b7fda3bb78b59b5e179128ed5dec56aecf7dd68e8788b47c18c9fdfae242f4f3a55848484843360405161019295949392919061025e565b60405180910390a150505050565b5f5f5f5f606085870312156101b3575f5ffd5b84356bffffffffffffffffffffffff19811681146101cf575f5ffd5b9350602085013563ffffffff811681146101e7575f5ffd5b9250604085013567ffffffffffffffff811115610202575f5ffd5b8501601f81018713610212575f5ffd5b803567ffffffffffffffff811115610228575f5ffd5b876020828401011115610239575f5ffd5b949793965060200194505050565b5f60208284031215610257575f5ffd5b5051919050565b6bffffffffffffffffffffffff198616815263ffffffff8516602082015260806040820152826080820152828460a08301375f81840160a0908101919091526001600160a01b03929092166060820152601f909201601f191690910101939250505056fea264697066735822122058860949e8355113b9d0571d6fbb1ea069891603e8c0eee8f39c287f800b8bce64736f6c634300081b003300000000000000000000000012727d4169a42a9b5e3ecb11a6d2c95553d3f447

Deployed Bytecode

0x608060405234801561000f575f5ffd5b5060043610610034575f3560e01c806398887caa14610038578063f5d34d841461007b575b5f5ffd5b61005f7f00000000000000000000000012727d4169a42a9b5e3ecb11a6d2c95553d3f44781565b6040516001600160a01b03909116815260200160405180910390f35b61008e6100893660046101a0565b610090565b005b6040516314d94b5160e31b81523360048201525f907f00000000000000000000000012727d4169a42a9b5e3ecb11a6d2c95553d3f4476001600160a01b03169063a6ca5a8890602401602060405180830381865afa1580156100f4573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906101189190610247565b1161015b5760405162461bcd60e51b815260206004820152600f60248201526e2737ba1030903b30b634b230ba37b960891b604482015260640160405180910390fd5b7fda3bb78b59b5e179128ed5dec56aecf7dd68e8788b47c18c9fdfae242f4f3a55848484843360405161019295949392919061025e565b60405180910390a150505050565b5f5f5f5f606085870312156101b3575f5ffd5b84356bffffffffffffffffffffffff19811681146101cf575f5ffd5b9350602085013563ffffffff811681146101e7575f5ffd5b9250604085013567ffffffffffffffff811115610202575f5ffd5b8501601f81018713610212575f5ffd5b803567ffffffffffffffff811115610228575f5ffd5b876020828401011115610239575f5ffd5b949793965060200194505050565b5f60208284031215610257575f5ffd5b5051919050565b6bffffffffffffffffffffffff198616815263ffffffff8516602082015260806040820152826080820152828460a08301375f81840160a0908101919091526001600160a01b03929092166060820152601f909201601f191690910101939250505056fea264697066735822122058860949e8355113b9d0571d6fbb1ea069891603e8c0eee8f39c287f800b8bce64736f6c634300081b0033

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

00000000000000000000000012727d4169a42a9b5e3ecb11a6d2c95553d3f447

-----Decoded View---------------
Arg [0] : _updateVerifier (address): 0x12727D4169a42A9b5E3ECB11A6d2c95553d3f447

-----Encoded View---------------
1 Constructor Arguments found :
Arg [0] : 00000000000000000000000012727d4169a42a9b5e3ecb11a6d2c95553d3f447


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.