MNT Price: $0.85 (+0.50%)

Contract

0x3D5D4557426857CB91ce3fB39f26dFFF310b2591
 

Overview

MNT Balance

Mantle Mainnet Network LogoMantle Mainnet Network LogoMantle Mainnet Network Logo0 MNT

MNT Value

$0.00

More Info

Private Name Tags

Multichain Info

No addresses found
Transaction Hash
Block
From
To
Airdrop ETH792882312025-05-08 12:19:34262 days ago1746706774IN
0x3D5D4557...F310b2591
3,100 MNT0.010432110.03
Airdrop ETH785922782025-04-22 9:41:08279 days ago1745314868IN
0x3D5D4557...F310b2591
20,131.21 MNT0.140427680.03
Airdrop ETH785922232025-04-22 9:39:18279 days ago1745314758IN
0x3D5D4557...F310b2591
1 MNT0.002422210.03
Airdrop ETH785921912025-04-22 9:38:14279 days ago1745314694IN
0x3D5D4557...F310b2591
0.3 MNT0.007585760.03
Airdrop ERC20785920312025-04-22 9:32:54279 days ago1745314374IN
0x3D5D4557...F310b2591
0 MNT0.004403410.03
Airdrop ERC20785912882025-04-22 9:08:08279 days ago1745312888IN
0x3D5D4557...F310b2591
0 MNT0.008227560.03

Latest 25 internal transactions (View All)

Advanced mode:
Parent Transaction Hash Block From To
792882312025-05-08 12:19:34262 days ago1746706774
0x3D5D4557...F310b2591
200 MNT
792882312025-05-08 12:19:34262 days ago1746706774
0x3D5D4557...F310b2591
200 MNT
792882312025-05-08 12:19:34262 days ago1746706774
0x3D5D4557...F310b2591
300 MNT
792882312025-05-08 12:19:34262 days ago1746706774
0x3D5D4557...F310b2591
500 MNT
792882312025-05-08 12:19:34262 days ago1746706774
0x3D5D4557...F310b2591
500 MNT
792882312025-05-08 12:19:34262 days ago1746706774
0x3D5D4557...F310b2591
700 MNT
792882312025-05-08 12:19:34262 days ago1746706774
0x3D5D4557...F310b2591
700 MNT
785922782025-04-22 9:41:08279 days ago1745314868
0x3D5D4557...F310b2591
0 MNT
785922782025-04-22 9:41:08279 days ago1745314868
0x3D5D4557...F310b2591
0 MNT
785922782025-04-22 9:41:08279 days ago1745314868
0x3D5D4557...F310b2591
0 MNT
785922782025-04-22 9:41:08279 days ago1745314868
0x3D5D4557...F310b2591
0 MNT
785922782025-04-22 9:41:08279 days ago1745314868
0x3D5D4557...F310b2591
0 MNT
785922782025-04-22 9:41:08279 days ago1745314868
0x3D5D4557...F310b2591
0 MNT
785922782025-04-22 9:41:08279 days ago1745314868
0x3D5D4557...F310b2591
0 MNT
785922782025-04-22 9:41:08279 days ago1745314868
0x3D5D4557...F310b2591
0 MNT
785922782025-04-22 9:41:08279 days ago1745314868
0x3D5D4557...F310b2591
0 MNT
785922782025-04-22 9:41:08279 days ago1745314868
0x3D5D4557...F310b2591
0 MNT
785922782025-04-22 9:41:08279 days ago1745314868
0x3D5D4557...F310b2591
0 MNT
785922782025-04-22 9:41:08279 days ago1745314868
0x3D5D4557...F310b2591
0 MNT
785922782025-04-22 9:41:08279 days ago1745314868
0x3D5D4557...F310b2591
0 MNT
785922782025-04-22 9:41:08279 days ago1745314868
0x3D5D4557...F310b2591
0 MNT
785922782025-04-22 9:41:08279 days ago1745314868
0x3D5D4557...F310b2591
0 MNT
785922782025-04-22 9:41:08279 days ago1745314868
0x3D5D4557...F310b2591
0 MNT
785922782025-04-22 9:41:08279 days ago1745314868
0x3D5D4557...F310b2591
0 MNT
785922782025-04-22 9:41:08279 days ago1745314868
0x3D5D4557...F310b2591
0 MNT
View All Internal Transactions

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, None 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
}

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 Difficulty 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  ]

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.