ETH Price: $3,223.62 (+0.84%)

Contract

0xe231Aa7183862CEe136D8414E5638764c4297E79

Overview

ETH Balance

0 ETH

ETH Value

$0.00

Multichain Info

No addresses found
Transaction Hash
Method
Block
From
To

There are no matching entries

1 Internal Transaction found.

Latest 1 internal transaction

Parent Transaction Hash Block From To
72024-10-30 14:24:5492 days ago1730298294  Contract Creation0 ETH
Loading...
Loading

Contract Source Code Verified (Exact Match)

Contract Name:
GasliteDrop

Compiler Version
v0.8.19+commit.7dd6d404

ZkSolc Version
v1.5.4

Optimization Enabled:
Yes with Mode 3

Other Settings:
default evmVersion, None license
/**
 *Submitted for verification at abscan.org on 2024-11-20
*/

pragma solidity 0.8.19;

/**

                                                          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
 */

/**
 * @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
                }
            }
        }
    }
}

Contract Security Audit

Contract ABI

[{"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"}]

9c4d535b000000000000000000000000000000000000000000000000000000000000000001000059252bb42d04403da02c392ef03f57ea23428037f1ea812615748dea4900000000000000000000000000000000000000000000000000000000000000600000000000000000000000000000000000000000000000000000000000000000

Deployed Bytecode

0x0001000000000002000500000000000200000000000103550000008003000039000000400030043f00000001002001900000004e0000c13d000000000201001900000060022002700000004d02200197000000040020008c000001280000413d000000000301043b000000e0033002700000004f0030009c000000560000613d000000500030009c0000009c0000613d000000510030009c000001280000c13d000000640020008c000001280000413d0000000403100370000000000303043b000400000003001d000000540030009c000001280000213d0000002403100370000000000303043b000000520030009c000001280000213d0000002304300039000000000024004b000001280000813d0000000404300039000000000441034f000000000504043b000000520050009c000001280000213d000000240730003900000005045002100000000008740019000000000028004b000001280000213d0000004404100370000000000404043b000000520040009c000001280000213d0000002306400039000000000026004b000001280000813d0000000406400039000000000661034f000000000606043b000000520060009c000001280000213d000000000056004b000001280000c13d000000050560021000000000055400190000002405500039000000000025004b000001280000213d0000005502000041000000000020043f0000000002000411000000040020043f00000000053400490000000402000029000000040020008c0000010e0000c13d0000004402000039000000240400003900000000030700190000002007300039000000000087004b000000490000413d000000dd0000013d0000000001000416000000000001004b000001280000c13d0000002001000039000001000010044300000120000004430000004e01000041000001300001042e000000440020008c000001280000413d0000000403100370000000000303043b000000520030009c000001280000213d0000002304300039000000000024004b000001280000813d0000000404300039000000000441034f000000000404043b000000520040009c000001280000213d000000240730003900000005054002100000000008750019000000000028004b000001280000213d0000002405100370000000000505043b000000520050009c000001280000213d0000002306500039000000000026004b000001280000813d0000000406500039000000000161034f000000000101043b000000520010009c000001280000213d000000000041004b000001280000c13d000000050110021000000000011500190000002401100039000000000021004b000001280000213d0000000005350049000400000008001d000300000005001d0000008c0000013d00000053011001c700008009020000390000000005000019012f012a0000040f0000000100200190000000050700002900000004080000290000000305000029000001280000613d0000002007700039000000000078004b000000e40000613d000000000175001900000000047003670000000001100367000000000301043b000000000404043b0000000001000414000000040040008c000000890000613d000500000007001d0000004d0010009c0000004d01008041000000c001100210000000000003004b000000800000c13d0000000002040019000000830000013d000000840020008c000001280000413d0000000403100370000000000303043b000400000003001d000000540030009c000001280000213d0000002403100370000000000703043b000000520070009c000001280000213d0000002303700039000000000023004b000001280000813d0000000403700039000000000331034f000000000303043b000000520030009c000001280000213d000000240570003900000005043002100000000006540019000000000026004b000001280000213d0000004404100370000000000804043b000000520080009c000001280000213d0000002304800039000000000024004b000001280000813d0000000404800039000000000441034f000000000404043b000000520040009c000001280000213d000000000034004b000001280000c13d000000050340021000000000033800190000002403300039000000000023004b000001280000213d0000005502000041000000000020043f0000000002000411000000040020043f0000000002000410000000240020043f0000006402100370000000000202043b000000440020043f00000000030004140000000402000029000000040020008c000000e60000c13d0000005702000041000000000020043f00000000030500190000002005300039000000000065004b000000d60000413d0000000005780049000000240200003900000004040000390000000005350019000000000331034f000000000151034f000000000101043b000000000303043b000000000034043500000000001204350000000001000019000001300001042e0000004d0030009c0000004d03008041000000c00130021000000056011001c7000500000005001d000300000006001d000200000007001d000100000008001d012f012a0000040f0000000105000029000000020400002900000005030000290000000100200190000001280000613d0000005701000041000000000010043f0002000000450051000500000003001d0000000002300367000000000202043b000000040020043f00000002023000290000000001200367000000000101043b000000240010043f00000000010004140000004d0010009c0000004d01008041000000c00110021000000056011001c70000000402000029012f012a0000040f000000050300002900000001002001900000000301000029000001280000613d0000002003300039000000000013004b000000f70000413d000000e40000013d000300000008001d000200000005001d000500000007001d0000000002700367000000000202043b000000240020043f00000000025700190000000001200367000000000101043b000000440010043f00000000010004140000004d0010009c0000004d01008041000000c00110021000000056011001c70000000402000029012f012a0000040f000000050700002900000001002001900000000301000029000001280000613d0000002007700039000000000017004b0000000205000029000001100000413d000000e40000013d000000000100001900000131000104300000012d002104210000000102000039000000000001042d0000000002000019000000000001042d0000012f00000432000001300001042e00000131000104300000000000000000000000000000000000000000000000000000000000000000000000000000000000000000ffffffff000000020000000000000000000000000000004000000100000000000000000000000000000000000000000000000000000000000000000000000000c1a380060000000000000000000000000000000000000000000000000000000082947abe000000000000000000000000000000000000000000000000000000001d5659fb000000000000000000000000000000000000000000000000ffffffffffffffff0200000000000000000000000000000000000000000000000000000000000000000000000000000000000000ffffffffffffffffffffffffffffffffffffffff23b872dd000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000064000000000000000000000000a9059cbb000000000000000000000000000000000000000000000000000000000b54055fcbb012d2738197ca704f44a9158017ef0b64b2ce288c8ed299cffaa8

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.