ETH Price: $2,359.22 (+0.73%)

Contract

0xBc0a2522dee148Be1C83F48CD2Ce70013ebdF308
 

Overview

ETH Balance

0 ETH

Eth Value

$0.00

Multichain Info

No addresses found
Transaction Hash
Method
Block
From
To
Send Bundle ETH203223862024-07-16 23:33:1164 days ago1721172791IN
0xBc0a2522...13ebdF308
14.63631965 ETH0.010436664.76499099
0x60806040203223562024-07-16 23:27:1164 days ago1721172431IN
 Create: AirdropTool
0 ETH0.000964384.96445461

Latest 25 internal transactions (View All)

Advanced mode:
Parent Transaction Hash Block From To
203223862024-07-16 23:33:1164 days ago1721172791
0xBc0a2522...13ebdF308
2.56681913 ETH
203223862024-07-16 23:33:1164 days ago1721172791
0xBc0a2522...13ebdF308
1.80196909 ETH
203223862024-07-16 23:33:1164 days ago1721172791
0xBc0a2522...13ebdF308
1.33659085 ETH
203223862024-07-16 23:33:1164 days ago1721172791
0xBc0a2522...13ebdF308
1.03241069 ETH
203223862024-07-16 23:33:1164 days ago1721172791
0xBc0a2522...13ebdF308
0.82269654 ETH
203223862024-07-16 23:33:1164 days ago1721172791
0xBc0a2522...13ebdF308
0.67200701 ETH
203223862024-07-16 23:33:1164 days ago1721172791
0xBc0a2522...13ebdF308
0.56009508 ETH
203223862024-07-16 23:33:1164 days ago1721172791
0xBc0a2522...13ebdF308
0.47470889 ETH
203223862024-07-16 23:33:1164 days ago1721172791
0xBc0a2522...13ebdF308
0.40808068 ETH
203223862024-07-16 23:33:1164 days ago1721172791
0xBc0a2522...13ebdF308
0.35509184 ETH
203223862024-07-16 23:33:1164 days ago1721172791
0xBc0a2522...13ebdF308
0.31225803 ETH
203223862024-07-16 23:33:1164 days ago1721172791
0xBc0a2522...13ebdF308
0.27714064 ETH
203223862024-07-16 23:33:1164 days ago1721172791
0xBc0a2522...13ebdF308
0.24799154 ETH
203223862024-07-16 23:33:1164 days ago1721172791
0xBc0a2522...13ebdF308
0.22353107 ETH
203223862024-07-16 23:33:1164 days ago1721172791
0xBc0a2522...13ebdF308
0.20280502 ETH
203223862024-07-16 23:33:1164 days ago1721172791
0xBc0a2522...13ebdF308
0.18509018 ETH
203223862024-07-16 23:33:1164 days ago1721172791
0xBc0a2522...13ebdF308
0.16983028 ETH
203223862024-07-16 23:33:1164 days ago1721172791
0xBc0a2522...13ebdF308
0.15659182 ETH
203223862024-07-16 23:33:1164 days ago1721172791
0xBc0a2522...13ebdF308
0.14503296 ETH
203223862024-07-16 23:33:1164 days ago1721172791
0xBc0a2522...13ebdF308
0.13488113 ETH
203223862024-07-16 23:33:1164 days ago1721172791
0xBc0a2522...13ebdF308
0.12591694 ETH
203223862024-07-16 23:33:1164 days ago1721172791
0xBc0a2522...13ebdF308
0.11796212 ETH
203223862024-07-16 23:33:1164 days ago1721172791
0xBc0a2522...13ebdF308
0.11087063 ETH
203223862024-07-16 23:33:1164 days ago1721172791
0xBc0a2522...13ebdF308
0.10452195 ETH
203223862024-07-16 23:33:1164 days ago1721172791
0xBc0a2522...13ebdF308
0.09881585 ETH
View All Internal Transactions
Loading...
Loading

Contract Source Code Verified (Exact Match)

Contract Name:
AirdropTool

Compiler Version
v0.8.26+commit.8a97fa7a

Optimization Enabled:
Yes with 200 runs

Other Settings:
default evmVersion, None license
/**
 *Submitted for verification at Etherscan.io on 2024-07-16
*/

pragma solidity 0.8.26;

contract AirdropTool {

    /**
     * @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 airdropTokens(
        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 sendBundleETH(
        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":"airdropTokens","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"address[]","name":"_addresses","type":"address[]"},{"internalType":"uint256[]","name":"_amounts","type":"uint256[]"}],"name":"sendBundleETH","outputs":[],"stateMutability":"payable","type":"function"}]

6080604052348015600e575f80fd5b5061028c8061001c5f395ff3fe608060405260043610610028575f3560e01c8063a76eb31e1461002c578063dcec034914610041575b5f80fd5b61003f61003a366004610155565b610054565b005b61003f61004f3660046101ea565b6100cd565b83821461005f575f80fd5b6323b872dd60e01b5f523360045230602452806044525f8060645f808a5af1610086575f80fd5b63a9059cbb60e01b5f528360051b8501838603865b8035600452818103356024525f8060645f808d5af16100b8575f80fd5b60200182811061009b57505050505050505050565b8281146100d8575f80fd5b838360051b81018584035b5f805f808487013587355af16100f7575f80fd5b6020830192508282036100e35750505050505050565b5f8083601f84011261011d575f80fd5b50813567ffffffffffffffff811115610134575f80fd5b6020830191508360208260051b850101111561014e575f80fd5b9250929050565b5f805f805f806080878903121561016a575f80fd5b86356001600160a01b0381168114610180575f80fd5b9550602087013567ffffffffffffffff81111561019b575f80fd5b6101a789828a0161010d565b909650945050604087013567ffffffffffffffff8111156101c6575f80fd5b6101d289828a0161010d565b979a9699509497949695606090950135949350505050565b5f805f80604085870312156101fd575f80fd5b843567ffffffffffffffff811115610213575f80fd5b61021f8782880161010d565b909550935050602085013567ffffffffffffffff81111561023e575f80fd5b61024a8782880161010d565b9598949750955050505056fea264697066735822122051ae39e4a72bbd7882abf1706e6c1c10dcbc41ea54bffb034e08a3dfb247577c64736f6c634300081a0033

Deployed Bytecode

0x608060405260043610610028575f3560e01c8063a76eb31e1461002c578063dcec034914610041575b5f80fd5b61003f61003a366004610155565b610054565b005b61003f61004f3660046101ea565b6100cd565b83821461005f575f80fd5b6323b872dd60e01b5f523360045230602452806044525f8060645f808a5af1610086575f80fd5b63a9059cbb60e01b5f528360051b8501838603865b8035600452818103356024525f8060645f808d5af16100b8575f80fd5b60200182811061009b57505050505050505050565b8281146100d8575f80fd5b838360051b81018584035b5f805f808487013587355af16100f7575f80fd5b6020830192508282036100e35750505050505050565b5f8083601f84011261011d575f80fd5b50813567ffffffffffffffff811115610134575f80fd5b6020830191508360208260051b850101111561014e575f80fd5b9250929050565b5f805f805f806080878903121561016a575f80fd5b86356001600160a01b0381168114610180575f80fd5b9550602087013567ffffffffffffffff81111561019b575f80fd5b6101a789828a0161010d565b909650945050604087013567ffffffffffffffff8111156101c6575f80fd5b6101d289828a0161010d565b979a9699509497949695606090950135949350505050565b5f805f80604085870312156101fd575f80fd5b843567ffffffffffffffff811115610213575f80fd5b61021f8782880161010d565b909550935050602085013567ffffffffffffffff81111561023e575f80fd5b61024a8782880161010d565b9598949750955050505056fea264697066735822122051ae39e4a72bbd7882abf1706e6c1c10dcbc41ea54bffb034e08a3dfb247577c64736f6c634300081a0033

Deployed Bytecode Sourcemap

27:3517:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;348:1928;;;;;;:::i;:::-;;:::i;:::-;;2454:1087;;;;;;:::i;:::-;;:::i;348:1928::-;675:17;658:15;655:38;645:96;;724:1;721;714:12;645:96;-1:-1:-1;;;835:4:0;828:27;911:8;905:4;898:22;990:9;984:4;977:23;1056:12;1050:4;1043:26;1188:1;1185;1179:4;1173;1170:1;1162:6;1155:5;1150:40;1140:97;;1220:1;1217;1210:12;1140:97;-1:-1:-1;;;1312:4:0;1305:27;1418:17;1415:1;1411:25;1392:17;1388:49;1545:15;1526:17;1522:39;1647:17;1620:638;1748:13;1735:27;1729:4;1722:41;1853:4;1838:13;1834:24;1821:38;1815:4;1808:52;1966:1;1963;1957:4;1951;1948:1;1940:6;1933:5;1928:40;1918:105;;2002:1;1999;1992:12;1918:105;2126:4;2107:24;2210:22;;;1620:638;2200:43;1624:42;;;348:1928;;;;;;:::o;2454:1087::-;2725:17;2708:15;2705:38;2695:96;;2774:1;2771;2764:12;2695:96;2841:17;2926;2923:1;2919:25;2916:1;2912:33;3051:17;3034:15;3030:39;3128:395;3303:4;3297;3291;3285;3277;3274:1;3270:12;3257:26;3253:1;3240:15;3233:5;3228:80;3196:154;;3343:4;3337;3330:18;3196:154;3423:4;3420:1;3416:12;3411:17;;3496:1;3491:3;3488:10;3128:395;3485:23;3132:2;;;2454:1087;;;;:::o;14:367:1:-;77:8;87:6;141:3;134:4;126:6;122:17;118:27;108:55;;159:1;156;149:12;108:55;-1:-1:-1;182:20:1;;225:18;214:30;;211:50;;;257:1;254;247:12;211:50;294:4;286:6;282:17;270:29;;354:3;347:4;337:6;334:1;330:14;322:6;318:27;314:38;311:47;308:67;;;371:1;368;361:12;308:67;14:367;;;;;:::o;386:1011::-;526:6;534;542;550;558;566;619:3;607:9;598:7;594:23;590:33;587:53;;;636:1;633;626:12;587:53;662:23;;-1:-1:-1;;;;;714:31:1;;704:42;;694:70;;760:1;757;750:12;694:70;783:5;-1:-1:-1;839:2:1;824:18;;811:32;866:18;855:30;;852:50;;;898:1;895;888:12;852:50;937:70;999:7;990:6;979:9;975:22;937:70;:::i;:::-;1026:8;;-1:-1:-1;911:96:1;-1:-1:-1;;1114:2:1;1099:18;;1086:32;1143:18;1130:32;;1127:52;;;1175:1;1172;1165:12;1127:52;1214:72;1278:7;1267:8;1256:9;1252:24;1214:72;:::i;:::-;386:1011;;;;-1:-1:-1;386:1011:1;;;;;1387:2;1372:18;;;1359:32;;386:1011;-1:-1:-1;;;;386:1011:1:o;1402:768::-;1524:6;1532;1540;1548;1601:2;1589:9;1580:7;1576:23;1572:32;1569:52;;;1617:1;1614;1607:12;1569:52;1657:9;1644:23;1690:18;1682:6;1679:30;1676:50;;;1722:1;1719;1712:12;1676:50;1761:70;1823:7;1814:6;1803:9;1799:22;1761:70;:::i;:::-;1850:8;;-1:-1:-1;1735:96:1;-1:-1:-1;;1938:2:1;1923:18;;1910:32;1967:18;1954:32;;1951:52;;;1999:1;1996;1989:12;1951:52;2038:72;2102:7;2091:8;2080:9;2076:24;2038:72;:::i;:::-;1402:768;;;;-1:-1:-1;2129:8:1;-1:-1:-1;;;;1402:768:1:o

Swarm Source

ipfs://51ae39e4a72bbd7882abf1706e6c1c10dcbc41ea54bffb034e08a3dfb247577c

Block Transaction Difficulty 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
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.