S Price: $0.067853 (+0.49%)
Gas: 55 Gwei

Contract

0x3D5D4557426857CB91ce3fB39f26dFFF310b2591

Overview

S Balance

Sonic LogoSonic LogoSonic Logo0 S

S Value

$0.00

More Info

Private Name Tags

Multichain Info

No addresses found
Transaction Hash
Block
From
To
Airdrop ERC20369719712025-07-03 8:36:10207 days ago1751531770IN
0x3D5D4557...F310b2591
0 S0.0159146655.01
Airdrop ERC20369715162025-07-03 8:31:21207 days ago1751531481IN
0x3D5D4557...F310b2591
0 S0.0040614655.84
Airdrop ERC20312848252025-06-02 8:07:15238 days ago1748851635IN
0x3D5D4557...F310b2591
0 S0.0127030155.01
Airdrop ERC20312838392025-06-02 8:01:24238 days ago1748851284IN
0x3D5D4557...F310b2591
0 S0.0052950455.01
Airdrop ERC20243144682025-05-04 16:27:57267 days ago1746376077IN
0x3D5D4557...F310b2591
0 S0.0056983755.01
Airdrop ERC20230642952025-04-29 11:42:18272 days ago1745926938IN
0x3D5D4557...F310b2591
0 S0.2201137155.01
Airdrop ERC20230637942025-04-29 11:39:17272 days ago1745926757IN
0x3D5D4557...F310b2591
0 S0.0052415959.37
Airdrop ERC20215124792025-04-22 8:07:57279 days ago1745309277IN
0x3D5D4557...F310b2591
0 S0.0090511156
Airdrop ERC20209050732025-04-18 14:57:44283 days ago1744988264IN
0x3D5D4557...F310b2591
0 S0.4583772655.01
Airdrop ERC20209040352025-04-18 14:47:35283 days ago1744987655IN
0x3D5D4557...F310b2591
0 S0.1307417755.01
Airdrop ERC20209038222025-04-18 14:45:22283 days ago1744987522IN
0x3D5D4557...F310b2591
0 S0.00570255.01
Airdrop ERC20187056072025-04-07 10:42:58294 days ago1744022578IN
0x3D5D4557...F310b2591
0 S0.010060660.5
Airdrop ERC20181443152025-04-04 15:25:10297 days ago1743780310IN
0x3D5D4557...F310b2591
0 S0.4745836656.19
Airdrop ERC20181441782025-04-04 15:24:26297 days ago1743780266IN
0x3D5D4557...F310b2591
0 S0.4992141655.15
Airdrop ERC20181426672025-04-04 15:15:56297 days ago1743779756IN
0x3D5D4557...F310b2591
0 S0.0053943361.1
Airdrop ERC20181311072025-04-04 14:08:17297 days ago1743775697IN
0x3D5D4557...F310b2591
0 S0.0034955555.01
Airdrop ERC20181287062025-04-04 13:54:14297 days ago1743774854IN
0x3D5D4557...F310b2591
0 S0.0054773159.34

Latest 1 internal transaction

Advanced mode:
Parent Transaction Hash Block From To
181251282025-04-04 13:32:34297 days ago1743773554  Contract Creation0 S
Cross-Chain Transactions
Loading...
Loading

Contract Source Code Verified (Exact Match)

Contract Name:
GasliteDrop

Compiler Version
v0.8.20+commit.a1b79de6

Optimization Enabled:
Yes with 999999 runs

Other Settings:
shanghai EvmVersion, MIT license
pragma solidity 0.8.20;

// forgefmt: disable-start
/**
 *                                                           bbbbbbbb                                         dddddddd
 *                                                           b::::::b                                         d::::::d
 *                                                           b::::::b                                         d::::::d
 *                                                           b::::::b                                         d::::::d
 *                                                            b:::::b                                         d:::::d
 *    ggggggggg   ggggg aaaaaaaaaaaaa      ssssssssss         b:::::bbbbbbbbb      aaaaaaaaaaaaa      ddddddddd:::::d
 *   g:::::::::ggg::::g a::::::::::::a   ss::::::::::s        b::::::::::::::bb    a::::::::::::a   dd::::::::::::::d
 *  g:::::::::::::::::g aaaaaaaaa:::::ass:::::::::::::s       b::::::::::::::::b   aaaaaaaaa:::::a d::::::::::::::::d
 * g::::::ggggg::::::gg          a::::as::::::ssss:::::s      b:::::bbbbb:::::::b           a::::ad:::::::ddddd:::::d
 * g:::::g     g:::::g    aaaaaaa:::::a s:::::s  ssssss       b:::::b    b::::::b    aaaaaaa:::::ad::::::d    d:::::d
 * g:::::g     g:::::g  aa::::::::::::a   s::::::s            b:::::b     b:::::b  aa::::::::::::ad:::::d     d:::::d
 * g:::::g     g:::::g a::::aaaa::::::a      s::::::s         b:::::b     b:::::b a::::aaaa::::::ad:::::d     d:::::d
 * g::::::g    g:::::ga::::a    a:::::assssss   s:::::s       b:::::b     b:::::ba::::a    a:::::ad:::::d     d:::::d
 * g:::::::ggggg:::::ga::::a    a:::::as:::::ssss::::::s      b:::::bbbbbb::::::ba::::a    a:::::ad::::::ddddd::::::dd
 *  g::::::::::::::::ga:::::aaaa::::::as::::::::::::::s       b::::::::::::::::b a:::::aaaa::::::a d:::::::::::::::::d
 *   gg::::::::::::::g a::::::::::aa:::as:::::::::::ss        b:::::::::::::::b   a::::::::::aa:::a d:::::::::ddd::::d
 *     gggggggg::::::g  aaaaaaaaaa  aaaa sssssssssss          bbbbbbbbbbbbbbbb     aaaaaaaaaa  aaaa  ddddddddd   ddddd
 *             g:::::g
 * gggggg      g:::::g
 * g:::::gg   gg:::::g
 *  g::::::ggg:::::::g
 *   gg:::::::::::::g
 *     ggg::::::ggg
 *        gggggg
 */
// forgefmt: disable-end

/// @title GasliteDrop
/// @notice Turbo gas optimized bulk transfers of ERC20, ERC721, and ETH
/// @author Harrison (@PopPunkOnChain)
/// @author Gaslite (@GasliteGG)
/// @author Pop Punk LLC (@PopPunkLLC)
contract GasliteDrop {
    /// @notice Airdrop ERC721 tokens to a list of addresses
    /// @param _nft The address of the ERC721 contract
    /// @param _addresses The addresses to airdrop to
    /// @param _tokenIds The tokenIds to airdrop
    function airdropERC721(address _nft, address[] calldata _addresses, uint256[] calldata _tokenIds)
        external
        payable
    {
        assembly {
            // Check that the number of addresses matches the number of tokenIds
            if iszero(eq(_tokenIds.length, _addresses.length)) { revert(0, 0) }
            // transferFrom(address from, address to, uint256 tokenId)
            mstore(0x00, hex"23b872dd")
            // from address
            mstore(0x04, caller())

            // end of array
            let end := add(_addresses.offset, shl(5, _addresses.length))
            // diff = _addresses.offset - _tokenIds.offset
            let diff := sub(_addresses.offset, _tokenIds.offset)

            // Loop through the addresses
            for { let addressOffset := _addresses.offset } 1 {} {
                // to address
                mstore(0x24, calldataload(addressOffset))
                // tokenId
                mstore(0x44, calldataload(sub(addressOffset, diff)))
                // transfer the token
                if iszero(call(gas(), _nft, 0, 0x00, 0x64, 0, 0)) { revert(0, 0) }
                // increment the address offset
                addressOffset := add(addressOffset, 0x20)
                // if addressOffset >= end, break
                if iszero(lt(addressOffset, end)) { break }
            }
        }
    }

    /// @notice Airdrop ERC20 tokens to a list of addresses
    /// @param _token The address of the ERC20 contract
    /// @param _addresses The addresses to airdrop to
    /// @param _amounts The amounts to airdrop
    /// @param _totalAmount The total amount to airdrop
    function airdropERC20(
        address _token,
        address[] calldata _addresses,
        uint256[] calldata _amounts,
        uint256 _totalAmount
    ) external payable {
        assembly {
            // Check that the number of addresses matches the number of amounts
            if iszero(eq(_amounts.length, _addresses.length)) { revert(0, 0) }

            // transferFrom(address from, address to, uint256 amount)
            mstore(0x00, hex"23b872dd")
            // from address
            mstore(0x04, caller())
            // to address (this contract)
            mstore(0x24, address())
            // total amount
            mstore(0x44, _totalAmount)

            // transfer total amount to this contract
            if iszero(call(gas(), _token, 0, 0x00, 0x64, 0, 0)) { revert(0, 0) }

            // transfer(address to, uint256 value)
            mstore(0x00, hex"a9059cbb")

            // end of array
            let end := add(_addresses.offset, shl(5, _addresses.length))
            // diff = _addresses.offset - _amounts.offset
            let diff := sub(_addresses.offset, _amounts.offset)

            // Loop through the addresses
            for { let addressOffset := _addresses.offset } 1 {} {
                // to address
                mstore(0x04, calldataload(addressOffset))
                // amount
                mstore(0x24, calldataload(sub(addressOffset, diff)))
                // transfer the tokens
                if iszero(call(gas(), _token, 0, 0x00, 0x64, 0, 0)) { revert(0, 0) }
                // increment the address offset
                addressOffset := add(addressOffset, 0x20)
                // if addressOffset >= end, break
                if iszero(lt(addressOffset, end)) { break }
            }
        }
    }

    /// @notice Airdrop ETH to a list of addresses
    /// @param _addresses The addresses to airdrop to
    /// @param _amounts The amounts to airdrop
    function airdropETH(address[] calldata _addresses, uint256[] calldata _amounts) external payable {
        assembly {
            // Check that the number of addresses matches the number of amounts
            if iszero(eq(_amounts.length, _addresses.length)) { revert(0, 0) }

            // iterator
            let i := _addresses.offset
            // end of array
            let end := add(i, shl(5, _addresses.length))
            // diff = _addresses.offset - _amounts.offset
            let diff := sub(_amounts.offset, _addresses.offset)

            // Loop through the addresses
            for {} 1 {} {
                // transfer the ETH
                if iszero(call(gas(), calldataload(i), calldataload(add(i, diff)), 0x00, 0x00, 0x00, 0x00)) {
                    revert(0x00, 0x00)
                }
                // increment the iterator
                i := add(i, 0x20)
                // if i >= end, break
                if eq(end, i) { break }
            }
        }
    }
}

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

Contract Security Audit

Contract ABI

API
[{"inputs":[{"internalType":"address","name":"_token","type":"address"},{"internalType":"address[]","name":"_addresses","type":"address[]"},{"internalType":"uint256[]","name":"_amounts","type":"uint256[]"},{"internalType":"uint256","name":"_totalAmount","type":"uint256"}],"name":"airdropERC20","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"address","name":"_nft","type":"address"},{"internalType":"address[]","name":"_addresses","type":"address[]"},{"internalType":"uint256[]","name":"_tokenIds","type":"uint256[]"}],"name":"airdropERC721","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"address[]","name":"_addresses","type":"address[]"},{"internalType":"uint256[]","name":"_amounts","type":"uint256[]"}],"name":"airdropETH","outputs":[],"stateMutability":"payable","type":"function"}]

608060405234801561000f575f80fd5b506103d68061001d5f395ff3fe608060405260043610610033575f3560e01c80631d5659fb1461003757806382947abe1461004c578063c1a380061461005f575b5f80fd5b61004a61004536600461023b565b610072565b005b61004a61005a3660046102b6565b6100e0565b61004a61006d366004610339565b61018b565b82811461007d575f80fd5b7f23b872dd000000000000000000000000000000000000000000000000000000005f52336004528260051b8401828503855b8035602452818103356044525f8060645f808c5af16100cc575f80fd5b6020018281106100af575050505050505050565b8382146100eb575f80fd5b7f23b872dd000000000000000000000000000000000000000000000000000000005f523360045230602452806044525f8060645f808a5af161012b575f80fd5b7fa9059cbb000000000000000000000000000000000000000000000000000000005f528360051b8501838603865b8035600452818103356024525f8060645f808d5af1610176575f80fd5b60200182811061015957505050505050505050565b828114610196575f80fd5b838360051b81018584035b5f805f808487013587355af16101b5575f80fd5b6020830192508282036101a15750505050505050565b803573ffffffffffffffffffffffffffffffffffffffff811681146101ee575f80fd5b919050565b5f8083601f840112610203575f80fd5b50813567ffffffffffffffff81111561021a575f80fd5b6020830191508360208260051b8501011115610234575f80fd5b9250929050565b5f805f805f6060868803121561024f575f80fd5b610258866101cb565b9450602086013567ffffffffffffffff80821115610274575f80fd5b61028089838a016101f3565b90965094506040880135915080821115610298575f80fd5b506102a5888289016101f3565b969995985093965092949392505050565b5f805f805f80608087890312156102cb575f80fd5b6102d4876101cb565b9550602087013567ffffffffffffffff808211156102f0575f80fd5b6102fc8a838b016101f3565b90975095506040890135915080821115610314575f80fd5b5061032189828a016101f3565b979a9699509497949695606090950135949350505050565b5f805f806040858703121561034c575f80fd5b843567ffffffffffffffff80821115610363575f80fd5b61036f888389016101f3565b90965094506020870135915080821115610387575f80fd5b50610394878288016101f3565b9598949750955050505056fea264697066735822122095328c8caa91ab93a795758cc7e4f6abb851cb01a368fdb0bfab0bf76698445d64736f6c63430008140033

Deployed Bytecode

0x608060405260043610610033575f3560e01c80631d5659fb1461003757806382947abe1461004c578063c1a380061461005f575b5f80fd5b61004a61004536600461023b565b610072565b005b61004a61005a3660046102b6565b6100e0565b61004a61006d366004610339565b61018b565b82811461007d575f80fd5b7f23b872dd000000000000000000000000000000000000000000000000000000005f52336004528260051b8401828503855b8035602452818103356044525f8060645f808c5af16100cc575f80fd5b6020018281106100af575050505050505050565b8382146100eb575f80fd5b7f23b872dd000000000000000000000000000000000000000000000000000000005f523360045230602452806044525f8060645f808a5af161012b575f80fd5b7fa9059cbb000000000000000000000000000000000000000000000000000000005f528360051b8501838603865b8035600452818103356024525f8060645f808d5af1610176575f80fd5b60200182811061015957505050505050505050565b828114610196575f80fd5b838360051b81018584035b5f805f808487013587355af16101b5575f80fd5b6020830192508282036101a15750505050505050565b803573ffffffffffffffffffffffffffffffffffffffff811681146101ee575f80fd5b919050565b5f8083601f840112610203575f80fd5b50813567ffffffffffffffff81111561021a575f80fd5b6020830191508360208260051b8501011115610234575f80fd5b9250929050565b5f805f805f6060868803121561024f575f80fd5b610258866101cb565b9450602086013567ffffffffffffffff80821115610274575f80fd5b61028089838a016101f3565b90965094506040880135915080821115610298575f80fd5b506102a5888289016101f3565b969995985093965092949392505050565b5f805f805f80608087890312156102cb575f80fd5b6102d4876101cb565b9550602087013567ffffffffffffffff808211156102f0575f80fd5b6102fc8a838b016101f3565b90975095506040890135915080821115610314575f80fd5b5061032189828a016101f3565b979a9699509497949695606090950135949350505050565b5f805f806040858703121561034c575f80fd5b843567ffffffffffffffff80821115610363575f80fd5b61036f888389016101f3565b90965094506020870135915080821115610387575f80fd5b50610394878288016101f3565b9598949750955050505056fea264697066735822122095328c8caa91ab93a795758cc7e4f6abb851cb01a368fdb0bfab0bf76698445d64736f6c63430008140033

Deployed Bytecode Sourcemap

2458:4851:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2704:1376;;;;;;:::i;:::-;;:::i;:::-;;4359:1787;;;;;;:::i;:::-;;:::i;6304:1003::-;;;;;;:::i;:::-;;:::i;2704:1376::-;2984:17;2966:16;2963:39;2953:67;;3016:1;3013;3006:12;2953:67;3117:13;3111:4;3104:27;3185:8;3179:4;3172:22;3277:17;3274:1;3270:25;3251:17;3247:49;3403:16;3384:17;3380:40;3503:17;3476:588;3602:13;3589:27;3583:4;3576:41;3706:4;3691:13;3687:24;3674:38;3668:4;3661:52;3814:1;3811;3805:4;3799;3796:1;3790:4;3783:5;3778:38;3768:66;;3830:1;3827;3820:12;3768:66;3935:4;3916:24;4017:22;;;3476:588;4007:43;3480:42;;;2704:1376;;;;;:::o;4359:1787::-;4677:17;4660:15;4657:38;4647:66;;4709:1;4706;4699:12;4647:66;4810:13;4804:4;4797:27;4878:8;4872:4;4865:22;4955:9;4949:4;4942:23;5019:12;5013:4;5006:26;5148:1;5145;5139:4;5133;5130:1;5122:6;5115:5;5110:40;5100:68;;5164:1;5161;5154:12;5100:68;5246:13;5240:4;5233:27;5343:17;5340:1;5336:25;5317:17;5313:49;5468:15;5449:17;5445:39;5567:17;5540:590;5666:13;5653:27;5647:4;5640:41;5769:4;5754:13;5750:24;5737:38;5731:4;5724:52;5880:1;5877;5871:4;5865;5862:1;5854:6;5847:5;5842:40;5832:68;;5896:1;5893;5886:12;5832:68;6001:4;5982:24;6083:22;;;5540:590;6073:43;5544:42;;;4359:1787;;;;;;:::o;6304:1003::-;6544:17;6527:15;6524:38;6514:66;;6576:1;6573;6566:12;6514:66;6627:17;6710;6707:1;6703:25;6700:1;6696:33;6833:17;6816:15;6812:39;6907:384;7058:4;7052;7046;7040;7032;7029:1;7025:12;7012:26;7008:1;6995:15;6988:5;6983:80;6973:150;;7100:4;7094;7087:18;6973:150;7194:4;7191:1;7187:12;7182:17;;7265:1;7260:3;7257:10;6907:384;7254:23;6911:2;;;6304:1003;;;;:::o;14:196:1:-;82:20;;142:42;131:54;;121:65;;111:93;;200:1;197;190:12;111:93;14:196;;;:::o;215:367::-;278:8;288:6;342:3;335:4;327:6;323:17;319:27;309:55;;360:1;357;350:12;309:55;-1:-1:-1;383:20:1;;426:18;415:30;;412:50;;;458:1;455;448:12;412:50;495:4;487:6;483:17;471:29;;555:3;548:4;538:6;535:1;531:14;523:6;519:27;515:38;512:47;509:67;;;572:1;569;562:12;509:67;215:367;;;;;:::o;587:847::-;718:6;726;734;742;750;803:2;791:9;782:7;778:23;774:32;771:52;;;819:1;816;809:12;771:52;842:29;861:9;842:29;:::i;:::-;832:39;;922:2;911:9;907:18;894:32;945:18;986:2;978:6;975:14;972:34;;;1002:1;999;992:12;972:34;1041:70;1103:7;1094:6;1083:9;1079:22;1041:70;:::i;:::-;1130:8;;-1:-1:-1;1015:96:1;-1:-1:-1;1218:2:1;1203:18;;1190:32;;-1:-1:-1;1234:16:1;;;1231:36;;;1263:1;1260;1253:12;1231:36;;1302:72;1366:7;1355:8;1344:9;1340:24;1302:72;:::i;:::-;587:847;;;;-1:-1:-1;587:847:1;;-1:-1:-1;1393:8:1;;1276:98;587:847;-1:-1:-1;;;587:847:1:o;1439:916::-;1579:6;1587;1595;1603;1611;1619;1672:3;1660:9;1651:7;1647:23;1643:33;1640:53;;;1689:1;1686;1679:12;1640:53;1712:29;1731:9;1712:29;:::i;:::-;1702:39;;1792:2;1781:9;1777:18;1764:32;1815:18;1856:2;1848:6;1845:14;1842:34;;;1872:1;1869;1862:12;1842:34;1911:70;1973:7;1964:6;1953:9;1949:22;1911:70;:::i;:::-;2000:8;;-1:-1:-1;1885:96:1;-1:-1:-1;2088:2:1;2073:18;;2060:32;;-1:-1:-1;2104:16:1;;;2101:36;;;2133:1;2130;2123:12;2101:36;;2172:72;2236:7;2225:8;2214:9;2210:24;2172:72;:::i;:::-;1439:916;;;;-1:-1:-1;1439:916:1;;;;;2345:2;2330:18;;;2317:32;;1439:916;-1:-1:-1;;;;1439:916:1:o;2360:773::-;2482:6;2490;2498;2506;2559:2;2547:9;2538:7;2534:23;2530:32;2527:52;;;2575:1;2572;2565:12;2527:52;2615:9;2602:23;2644:18;2685:2;2677:6;2674:14;2671:34;;;2701:1;2698;2691:12;2671:34;2740:70;2802:7;2793:6;2782:9;2778:22;2740:70;:::i;:::-;2829:8;;-1:-1:-1;2714:96:1;-1:-1:-1;2917:2:1;2902:18;;2889:32;;-1:-1:-1;2933:16:1;;;2930:36;;;2962:1;2959;2952:12;2930:36;;3001:72;3065:7;3054:8;3043:9;3039:24;3001:72;:::i;:::-;2360:773;;;;-1:-1:-1;3092:8:1;-1:-1:-1;;;;2360:773:1:o

Swarm Source

ipfs://95328c8caa91ab93a795758cc7e4f6abb851cb01a368fdb0bfab0bf76698445d

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  ]
[ 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.