S Price: $0.430799 (+0.88%)

Contract

0xc3fa6C6207229208AcFE7B604fb8c38DB3518C73

Overview

S Balance

Sonic LogoSonic LogoSonic Logo7.745658299998388165 S

S Value

$3.34 (@ $0.43/S)

Token Holdings

Multichain Info

No addresses found
Transaction Hash
Method
Block
From
To
Mass Send130907832025-03-11 17:28:5036 mins ago1741714130IN
0xc3fa6C62...DB3518C73
0 S0.0033534751.05
Mass Send130826322025-03-11 16:36:191 hr ago1741710979IN
0xc3fa6C62...DB3518C73
0 S0.0036975556.26733333
Mass Send130787522025-03-11 16:11:191 hr ago1741709479IN
0xc3fa6C62...DB3518C73
0 S0.003286350
Mass Send130785452025-03-11 16:10:041 hr ago1741709404IN
0xc3fa6C62...DB3518C73
0 S0.003284550
Mass Send130766162025-03-11 15:57:482 hrs ago1741708668IN
0xc3fa6C62...DB3518C73
0 S0.003285750
Mass Send130750692025-03-11 15:47:332 hrs ago1741708053IN
0xc3fa6C62...DB3518C73
0 S0.003285750
Mass Send130462172025-03-11 12:44:025 hrs ago1741697042IN
0xc3fa6C62...DB3518C73
0 S0.003923750
Mass Send130445252025-03-11 12:31:325 hrs ago1741696292IN
0xc3fa6C62...DB3518C73
0 S0.0041498550
Mass Send130405462025-03-11 12:04:026 hrs ago1741694642IN
0xc3fa6C62...DB3518C73
0 S0.003923750
Mass Send130394312025-03-11 11:56:326 hrs ago1741694192IN
0xc3fa6C62...DB3518C73
0 S0.003286350
Mass Send130388092025-03-11 11:52:026 hrs ago1741693922IN
0xc3fa6C62...DB3518C73
0 S0.003285150.00001333
Mass Send130377902025-03-11 11:45:176 hrs ago1741693517IN
0xc3fa6C62...DB3518C73
0 S0.004988760.10710355
Mass Send130365232025-03-11 11:36:476 hrs ago1741693007IN
0xc3fa6C62...DB3518C73
0 S0.003286350
Mass Send130285842025-03-11 10:40:017 hrs ago1741689601IN
0xc3fa6C62...DB3518C73
0 S0.006912750
Mass Send130253982025-03-11 10:16:317 hrs ago1741688191IN
0xc3fa6C62...DB3518C73
0 S0.0041492550.000105
Mass Send130249012025-03-11 10:13:017 hrs ago1741687981IN
0xc3fa6C62...DB3518C73
0 S0.0041480550
Mass Send130244172025-03-11 10:09:317 hrs ago1741687771IN
0xc3fa6C62...DB3518C73
0 S0.0041498550
Mass Send130224162025-03-11 9:55:018 hrs ago1741686901IN
0xc3fa6C62...DB3518C73
0 S0.006912750
Mass Send130178502025-03-11 9:22:078 hrs ago1741684927IN
0xc3fa6C62...DB3518C73
0 S0.008764950
Mass Send129055452025-03-10 19:17:4822 hrs ago1741634268IN
0xc3fa6C62...DB3518C73
0 S0.0033615951.155
Mass Send129042292025-03-10 19:10:1822 hrs ago1741633818IN
0xc3fa6C62...DB3518C73
0 S0.003285750
Mass Send129039022025-03-10 19:08:1822 hrs ago1741633698IN
0xc3fa6C62...DB3518C73
0 S0.003284550
Mass Send129034722025-03-10 19:05:4822 hrs ago1741633548IN
0xc3fa6C62...DB3518C73
0 S0.004350766.20666666
Mass Send128998882025-03-10 18:44:4823 hrs ago1741632288IN
0xc3fa6C62...DB3518C73
0 S0.003285750
Mass Send128925282025-03-10 17:59:4824 hrs ago1741629588IN
0xc3fa6C62...DB3518C73
0 S0.0041498550
View all transactions

Latest 5 internal transactions

Parent Transaction Hash Block From To
130462172025-03-11 12:44:025 hrs ago1741697042
0xc3fa6C62...DB3518C73
0.0295602 S
130405462025-03-11 12:04:026 hrs ago1741694642
0xc3fa6C62...DB3518C73
0.0547815 S
130285842025-03-11 10:40:017 hrs ago1741689601
0xc3fa6C62...DB3518C73
0.39 S
130224162025-03-11 9:55:018 hrs ago1741686901
0xc3fa6C62...DB3518C73
0.39 S
130178502025-03-11 9:22:078 hrs ago1741684927
0xc3fa6C62...DB3518C73
0.39 S
Loading...
Loading

Contract Source Code Verified (Exact Match)

Contract Name:
Disperser

Compiler Version
v0.8.19+commit.7dd6d404

Optimization Enabled:
Yes with 200 runs

Other Settings:
default evmVersion
File 1 of 1 : Disperser.sol
// SPDX-License-Identifier: MIT
pragma solidity 0.8.19;

contract Disperser {
    error WrongArraysLength();
    error OnlyOwner();
    error TokenSend(address problem);
    error NativeSend(address problem);

    address public owner;
    struct Token {
        address token;
        address[] receivers;
        uint256[] amounts;
    }

    modifier onlyOwner() {
        if (msg.sender != owner) revert OnlyOwner();
        _;
    }

    constructor() {
        owner = msg.sender;
    }

    receive() external payable {}

    function massSend(Token[] calldata input) external onlyOwner {
        uint length = input.length;
        for (uint i; i < length; ) {
            if (input[i].token == address(0)) {
                sendNative(input[i]);
            } else {
                sendToken(input[i]);
            }
            unchecked {
                ++i;
            }
        }
    }

    function sendToken(Token memory token) internal {
        if (token.receivers.length != token.amounts.length) revert WrongArraysLength();
        uint length = token.receivers.length;
        for (uint i; i < length; ) {
            (bool success, bytes memory response) = (token.token).call(
                abi.encodeWithSignature(
                    "transfer(address,uint256)",
                    token.receivers[i],
                    token.amounts[i]
                )
            );
            if (!success || (response.length != 0 && !(abi.decode(response, (bool)))))
                revert TokenSend(token.receivers[i]);
            unchecked {
                ++i;
            }
        }
    }

    function sendNative(Token memory token) internal {
        if (token.receivers.length != token.amounts.length) revert WrongArraysLength();
        uint length = token.receivers.length;
        for (uint i; i < length; ) {
            (bool success, ) = token.receivers[i].call{ value: token.amounts[i] }("");
            if (!success) revert NativeSend(token.receivers[i]);
            unchecked {
                ++i;
            }
        }
    }

    function withdraw(address _token) external onlyOwner {
        if (_token == address(0)) {
            uint256 amount = address(this).balance;
            (bool success, ) = msg.sender.call{ value: amount }("");
            if (!success) revert();
        } else {
            (bool success, bytes memory resp) = address(_token).staticcall(
                abi.encodeWithSignature("balanceOf(address)", address(this))
            );
            if (!success) revert();
            uint amount = abi.decode(resp, (uint));
            transferERC20(_token, msg.sender, amount);
        }
    }

    function setOwner(address _owner) external onlyOwner {
        owner = _owner;
    }

    function transferERC20(address _token, address _to, uint _amount) private {
        (bool success, bytes memory response) = address(_token).call(
            abi.encodeWithSignature("transfer(address,uint256)", _to, _amount)
        );
        require(
            success && (response.length == 0 || abi.decode(response, (bool))),
            "Failed send funds"
        );
    }
}

Settings
{
  "viaIR": true,
  "optimizer": {
    "enabled": true,
    "runs": 200
  },
  "metadata": {
    "bytecodeHash": "none"
  },
  "outputSelection": {
    "*": {
      "*": [
        "evm.bytecode",
        "evm.deployedBytecode",
        "devdoc",
        "userdoc",
        "metadata",
        "abi"
      ]
    }
  },
  "libraries": {}
}

Contract Security Audit

Contract ABI

API
[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"inputs":[{"internalType":"address","name":"problem","type":"address"}],"name":"NativeSend","type":"error"},{"inputs":[],"name":"OnlyOwner","type":"error"},{"inputs":[{"internalType":"address","name":"problem","type":"address"}],"name":"TokenSend","type":"error"},{"inputs":[],"name":"WrongArraysLength","type":"error"},{"inputs":[{"components":[{"internalType":"address","name":"token","type":"address"},{"internalType":"address[]","name":"receivers","type":"address[]"},{"internalType":"uint256[]","name":"amounts","type":"uint256[]"}],"internalType":"struct Disperser.Token[]","name":"input","type":"tuple[]"}],"name":"massSend","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_owner","type":"address"}],"name":"setOwner","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_token","type":"address"}],"name":"withdraw","outputs":[],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]

6080806040523461002857600080546001600160a01b0319163317905561073a908161002e8239f35b600080fdfe60806040818152600480361015610021575b505050361561001f57600080fd5b005b600092833560e01c90816313af40351461049c5750806351cff8d9146103125780638da5cb5b146102e657638ec45b760361001157346102e2576020806003193601126102de5781359167ffffffffffffffff938484116102da57366023850112156102da57838201359485116102da57602494858501948636918360051b0101116102d65786546001600160a01b039190821633036102c757875b8181106100c8578880f35b6100d3818389610523565b358381168091036102c35761018c576100f56100f082848a610523565b6105ab565b868101858151519201918251510361017c57805151918b5b83811061012257505050506001905b016100bd565b8c8080808a6101328689516106c1565b511661013f8688516106c1565b51905af161014b6106d5565b50156101595760010161010d565b8888886101688f9487516106c1565b5116905191633c7e14fb60e21b8352820152fd5b855163a3b5229960e01b81528790fd5b61019a6100f082848a610523565b86810180515186830190815151036102b357815151928c5b8d8d8c8b8b8986106101d0575050505050505050505060019061011c565b8761023c8a9461022e8897956101fb8b876101f28f8d9a849151169c516106c1565b511696516106c1565b51905163a9059cbb60e01b9381019384526001600160a01b03909516968501968752602087015290948391604090910190565b03601f19810183528261055b565b51925af16102486106d5565b9015908115610282575b5061025f576001016101b2565b8c8a8a8a61026e8589516106c1565b5116905191633e68c41760e01b8352820152fd5b805180151592508d908361029a575b50505038610252565b6102aa9350820181019101610715565b15388c81610291565b865163a3b5229960e01b81528890fd5b8980fd5b505051635fc483c560e01b8152fd5b8680fd5b8580fd5b8380fd5b8280fd5b50503461030e578160031936011261030e57905490516001600160a01b039091168152602090f35b5080fd5b5090346102e257602090816003193601126102de5761032f6104f4565b84546001600160a01b03908116330361048c57811661036857505050508080808047335af161035c6106d5565b50156103655780f35b80fd5b8151838101906370a0823160e01b8252306024820152602481526060810181811067ffffffffffffffff8211176104795784525186929183918291845afa906103af6106d5565b91156102e25784828051810103126102e25790840151835163a9059cbb60e01b81870190815233602483015260448201929092528392919083906103f6816064810161022e565b51925af16104026106d5565b81610449575b50156104145750505080f35b5162461bcd60e51b81529182015260116024820152704661696c65642073656e642066756e647360781b604482015260649150fd5b80518015925084908315610461575b50505038610408565b6104719350820181019101610715565b388381610458565b634e487b7160e01b885260418752602488fd5b8251635fc483c560e01b81528590fd5b828591346102e25760203660031901126102e2576104b86104f4565b8354926001600160a01b039283851633036104e857505016906bffffffffffffffffffffffff60a01b1617815580f35b635fc483c560e01b8152fd5b600435906001600160a01b038216820361050a57565b600080fd5b35906001600160a01b038216820361050a57565b91908110156105455760051b81013590605e198136030182121561050a570190565b634e487b7160e01b600052603260045260246000fd5b90601f8019910116810190811067ffffffffffffffff82111761057d57604052565b634e487b7160e01b600052604160045260246000fd5b67ffffffffffffffff811161057d5760051b60200190565b60608136031261050a5760408051919067ffffffffffffffff606084018181118582101761057d5782526105de8361050f565b84526020928381013582811161050a57810136601f8201121561050a5780359061060782610593565b916106148651938461055b565b808352868084019160051b8301019136831161050a5787809101915b8383106106a957509150508601528281013591821161050a57019136601f8401121561050a5782359261066284610593565b9361066f8451958661055b565b808552828086019160051b8301019136831161050a578301905b82821061069a575050505082015290565b81358152908301908301610689565b81906106b48461050f565b8152019101908790610630565b80518210156105455760209160051b010190565b3d15610710573d9067ffffffffffffffff821161057d5760405191610704601f8201601f19166020018461055b565b82523d6000602084013e565b606090565b9081602091031261050a5751801515810361050a579056fea164736f6c6343000813000a

Deployed Bytecode

0x60806040818152600480361015610021575b505050361561001f57600080fd5b005b600092833560e01c90816313af40351461049c5750806351cff8d9146103125780638da5cb5b146102e657638ec45b760361001157346102e2576020806003193601126102de5781359167ffffffffffffffff938484116102da57366023850112156102da57838201359485116102da57602494858501948636918360051b0101116102d65786546001600160a01b039190821633036102c757875b8181106100c8578880f35b6100d3818389610523565b358381168091036102c35761018c576100f56100f082848a610523565b6105ab565b868101858151519201918251510361017c57805151918b5b83811061012257505050506001905b016100bd565b8c8080808a6101328689516106c1565b511661013f8688516106c1565b51905af161014b6106d5565b50156101595760010161010d565b8888886101688f9487516106c1565b5116905191633c7e14fb60e21b8352820152fd5b855163a3b5229960e01b81528790fd5b61019a6100f082848a610523565b86810180515186830190815151036102b357815151928c5b8d8d8c8b8b8986106101d0575050505050505050505060019061011c565b8761023c8a9461022e8897956101fb8b876101f28f8d9a849151169c516106c1565b511696516106c1565b51905163a9059cbb60e01b9381019384526001600160a01b03909516968501968752602087015290948391604090910190565b03601f19810183528261055b565b51925af16102486106d5565b9015908115610282575b5061025f576001016101b2565b8c8a8a8a61026e8589516106c1565b5116905191633e68c41760e01b8352820152fd5b805180151592508d908361029a575b50505038610252565b6102aa9350820181019101610715565b15388c81610291565b865163a3b5229960e01b81528890fd5b8980fd5b505051635fc483c560e01b8152fd5b8680fd5b8580fd5b8380fd5b8280fd5b50503461030e578160031936011261030e57905490516001600160a01b039091168152602090f35b5080fd5b5090346102e257602090816003193601126102de5761032f6104f4565b84546001600160a01b03908116330361048c57811661036857505050508080808047335af161035c6106d5565b50156103655780f35b80fd5b8151838101906370a0823160e01b8252306024820152602481526060810181811067ffffffffffffffff8211176104795784525186929183918291845afa906103af6106d5565b91156102e25784828051810103126102e25790840151835163a9059cbb60e01b81870190815233602483015260448201929092528392919083906103f6816064810161022e565b51925af16104026106d5565b81610449575b50156104145750505080f35b5162461bcd60e51b81529182015260116024820152704661696c65642073656e642066756e647360781b604482015260649150fd5b80518015925084908315610461575b50505038610408565b6104719350820181019101610715565b388381610458565b634e487b7160e01b885260418752602488fd5b8251635fc483c560e01b81528590fd5b828591346102e25760203660031901126102e2576104b86104f4565b8354926001600160a01b039283851633036104e857505016906bffffffffffffffffffffffff60a01b1617815580f35b635fc483c560e01b8152fd5b600435906001600160a01b038216820361050a57565b600080fd5b35906001600160a01b038216820361050a57565b91908110156105455760051b81013590605e198136030182121561050a570190565b634e487b7160e01b600052603260045260246000fd5b90601f8019910116810190811067ffffffffffffffff82111761057d57604052565b634e487b7160e01b600052604160045260246000fd5b67ffffffffffffffff811161057d5760051b60200190565b60608136031261050a5760408051919067ffffffffffffffff606084018181118582101761057d5782526105de8361050f565b84526020928381013582811161050a57810136601f8201121561050a5780359061060782610593565b916106148651938461055b565b808352868084019160051b8301019136831161050a5787809101915b8383106106a957509150508601528281013591821161050a57019136601f8401121561050a5782359261066284610593565b9361066f8451958661055b565b808552828086019160051b8301019136831161050a578301905b82821061069a575050505082015290565b81358152908301908301610689565b81906106b48461050f565b8152019101908790610630565b80518210156105455760209160051b010190565b3d15610710573d9067ffffffffffffffff821161057d5760405191610704601f8201601f19166020018461055b565b82523d6000602084013e565b606090565b9081602091031261050a5751801515810361050a579056fea164736f6c6343000813000a

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.