Amoy Testnet

Contract

0x2ad3E0f6B71FCCABB4f9A20533016063dCC03e17
Source Code Source Code

Overview

POL Balance

Polygon PoS Chain Amoy LogoPolygon PoS Chain Amoy LogoPolygon PoS Chain Amoy Logo0 POL

More Info

Multichain Info

N/A
Transaction Hash
Method
Block
From
To
Amount
Batch Transfer E...134081062024-10-20 15:26:15460 days ago1729437975IN
0x2ad3E0f6...3dCC03e17
2.5 POL0.0092795933.71713318
Batch Transfer E...134078902024-10-20 15:18:37460 days ago1729437517IN
0x2ad3E0f6...3dCC03e17
0.025 POL0.0210805933.71713318
Batch Transfer E...134072892024-10-20 14:57:17460 days ago1729436237IN
0x2ad3E0f6...3dCC03e17
0.2 POL0.0014757933.71713318

Latest 25 internal transactions (View All)

Parent Transaction Hash Block From To Amount
134081062024-10-20 15:26:15460 days ago1729437975
0x2ad3E0f6...3dCC03e17
0.1 POL
134081062024-10-20 15:26:15460 days ago1729437975
0x2ad3E0f6...3dCC03e17
0.1 POL
134081062024-10-20 15:26:15460 days ago1729437975
0x2ad3E0f6...3dCC03e17
0.1 POL
134081062024-10-20 15:26:15460 days ago1729437975
0x2ad3E0f6...3dCC03e17
0.1 POL
134081062024-10-20 15:26:15460 days ago1729437975
0x2ad3E0f6...3dCC03e17
0.1 POL
134081062024-10-20 15:26:15460 days ago1729437975
0x2ad3E0f6...3dCC03e17
0.1 POL
134081062024-10-20 15:26:15460 days ago1729437975
0x2ad3E0f6...3dCC03e17
0.1 POL
134081062024-10-20 15:26:15460 days ago1729437975
0x2ad3E0f6...3dCC03e17
0.1 POL
134081062024-10-20 15:26:15460 days ago1729437975
0x2ad3E0f6...3dCC03e17
0.1 POL
134081062024-10-20 15:26:15460 days ago1729437975
0x2ad3E0f6...3dCC03e17
0.1 POL
134081062024-10-20 15:26:15460 days ago1729437975
0x2ad3E0f6...3dCC03e17
0.1 POL
134081062024-10-20 15:26:15460 days ago1729437975
0x2ad3E0f6...3dCC03e17
0.1 POL
134081062024-10-20 15:26:15460 days ago1729437975
0x2ad3E0f6...3dCC03e17
0.1 POL
134081062024-10-20 15:26:15460 days ago1729437975
0x2ad3E0f6...3dCC03e17
0.1 POL
134081062024-10-20 15:26:15460 days ago1729437975
0x2ad3E0f6...3dCC03e17
0.1 POL
134081062024-10-20 15:26:15460 days ago1729437975
0x2ad3E0f6...3dCC03e17
0.1 POL
134081062024-10-20 15:26:15460 days ago1729437975
0x2ad3E0f6...3dCC03e17
0.1 POL
134081062024-10-20 15:26:15460 days ago1729437975
0x2ad3E0f6...3dCC03e17
0.1 POL
134081062024-10-20 15:26:15460 days ago1729437975
0x2ad3E0f6...3dCC03e17
0.1 POL
134081062024-10-20 15:26:15460 days ago1729437975
0x2ad3E0f6...3dCC03e17
0.1 POL
134081062024-10-20 15:26:15460 days ago1729437975
0x2ad3E0f6...3dCC03e17
0.1 POL
134081062024-10-20 15:26:15460 days ago1729437975
0x2ad3E0f6...3dCC03e17
0.1 POL
134081062024-10-20 15:26:15460 days ago1729437975
0x2ad3E0f6...3dCC03e17
0.1 POL
134081062024-10-20 15:26:15460 days ago1729437975
0x2ad3E0f6...3dCC03e17
0.1 POL
134081062024-10-20 15:26:15460 days ago1729437975
0x2ad3E0f6...3dCC03e17
0.1 POL
View All Internal Transactions
Loading...
Loading

Contract Source Code Verified (Exact Match)

Contract Name:
BatchTransfer

Compiler Version
v0.8.24+commit.e11b9ed9

Optimization Enabled:
Yes with 200 runs

Other Settings:
paris EvmVersion

Contract Source Code (Solidity Standard Json-Input format)

// SPDX-License-Identifier: MIT
pragma solidity ^0.8.24;

interface IERC20 {
    function transferFrom(address sender, address recipient, uint256 amount) external returns (bool);
}

contract BatchTransfer {
    error BatchTransfer__IncorrectEtherSent(uint256 required, uint256 sent);
    error BatchTransfer__EtherTransferFailed();
    error BatchTransfer__ERC20TransferFailed();

    event BatchTransferEtherComplete(uint256 indexed amountSentToEachRecipient, uint256 indexed totalRecipients);
    event BatchTransferERC20Complete(uint256 indexed amountSentToEachRecipient, uint256 indexed totalRecipients);

    // Transfer ether to multiple addresses in a single call
    function batchTransferEther(address[] calldata recipients, uint256 amount) external payable {
        if (msg.value != recipients.length * amount) {
            revert BatchTransfer__IncorrectEtherSent(recipients.length * amount, msg.value);
        }

        for (uint256 i = 0; i < recipients.length; i++) {
            (bool success,) = recipients[i].call{value: amount}("");
            if (!success) {
                revert BatchTransfer__EtherTransferFailed();
            }
        }

        emit BatchTransferEtherComplete(amount, recipients.length);
    }

    // Transfer ERC-20 tokens to multiple addresses in a single call
    function batchTransferERC20(address tokenAddress, address[] calldata recipients, uint256 amount) external {
        IERC20 token = IERC20(tokenAddress);

        for (uint256 i = 0; i < recipients.length; i++) {
            bool success = token.transferFrom(msg.sender, recipients[i], amount);
            if (!success) {
                revert BatchTransfer__ERC20TransferFailed();
            }
        }

        emit BatchTransferERC20Complete(amount, recipients.length);
    }
}

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

Contract ABI

API
[{"inputs":[],"name":"BatchTransfer__ERC20TransferFailed","type":"error"},{"inputs":[],"name":"BatchTransfer__EtherTransferFailed","type":"error"},{"inputs":[{"internalType":"uint256","name":"required","type":"uint256"},{"internalType":"uint256","name":"sent","type":"uint256"}],"name":"BatchTransfer__IncorrectEtherSent","type":"error"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"uint256","name":"amountSentToEachRecipient","type":"uint256"},{"indexed":true,"internalType":"uint256","name":"totalRecipients","type":"uint256"}],"name":"BatchTransferERC20Complete","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"uint256","name":"amountSentToEachRecipient","type":"uint256"},{"indexed":true,"internalType":"uint256","name":"totalRecipients","type":"uint256"}],"name":"BatchTransferEtherComplete","type":"event"},{"inputs":[{"internalType":"address","name":"tokenAddress","type":"address"},{"internalType":"address[]","name":"recipients","type":"address[]"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"batchTransferERC20","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address[]","name":"recipients","type":"address[]"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"batchTransferEther","outputs":[],"stateMutability":"payable","type":"function"}]

608060405234801561001057600080fd5b50610469806100206000396000f3fe6080604052600436106100295760003560e01c8063309e60051461002e578063beeae2a614610043575b600080fd5b61004161003c3660046102ec565b610063565b005b34801561004f57600080fd5b5061004161005e366004610354565b610185565b61006d81836103ae565b34146100a45761007d81836103ae565b604051633c405c6960e21b8152600481019190915234602482015260440160405180910390fd5b60005b828110156101525760008484838181106100c3576100c36103d9565b90506020020160208101906100d891906103ef565b6001600160a01b03168360405160006040518083038185875af1925050503d8060008114610122576040519150601f19603f3d011682016040523d82523d6000602084013e610127565b606091505b50509050806101495760405163a318e8c360e01b815260040160405180910390fd5b506001016100a7565b50604051829082907ff468e558752ea565cbb2ddf78f3ddafc56c8593fefc2c348d36182e6f2d8497a90600090a3505050565b8360005b8381101561026b576000826001600160a01b03166323b872dd338888868181106101b5576101b56103d9565b90506020020160208101906101ca91906103ef565b6040516001600160e01b031960e085901b1681526001600160a01b03928316600482015291166024820152604481018790526064016020604051808303816000875af115801561021e573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906102429190610411565b9050806102625760405163023e083b60e21b815260040160405180910390fd5b50600101610189565b50604051839083907f399b2ab057f387c1ad4317bf2c7cb9d1dfe3ce0ce384de6c0f2118afb87cf91e90600090a35050505050565b60008083601f8401126102b257600080fd5b50813567ffffffffffffffff8111156102ca57600080fd5b6020830191508360208260051b85010111156102e557600080fd5b9250929050565b60008060006040848603121561030157600080fd5b833567ffffffffffffffff81111561031857600080fd5b610324868287016102a0565b909790965060209590950135949350505050565b80356001600160a01b038116811461034f57600080fd5b919050565b6000806000806060858703121561036a57600080fd5b61037385610338565b9350602085013567ffffffffffffffff81111561038f57600080fd5b61039b878288016102a0565b9598909750949560400135949350505050565b80820281158282048414176103d357634e487b7160e01b600052601160045260246000fd5b92915050565b634e487b7160e01b600052603260045260246000fd5b60006020828403121561040157600080fd5b61040a82610338565b9392505050565b60006020828403121561042357600080fd5b8151801515811461040a57600080fdfea2646970667358221220510346409adcdb215e782ec7665a4b6ad8c548bb4351feb6b4834a44f2d5dc5e64736f6c63430008180033

Deployed Bytecode

0x6080604052600436106100295760003560e01c8063309e60051461002e578063beeae2a614610043575b600080fd5b61004161003c3660046102ec565b610063565b005b34801561004f57600080fd5b5061004161005e366004610354565b610185565b61006d81836103ae565b34146100a45761007d81836103ae565b604051633c405c6960e21b8152600481019190915234602482015260440160405180910390fd5b60005b828110156101525760008484838181106100c3576100c36103d9565b90506020020160208101906100d891906103ef565b6001600160a01b03168360405160006040518083038185875af1925050503d8060008114610122576040519150601f19603f3d011682016040523d82523d6000602084013e610127565b606091505b50509050806101495760405163a318e8c360e01b815260040160405180910390fd5b506001016100a7565b50604051829082907ff468e558752ea565cbb2ddf78f3ddafc56c8593fefc2c348d36182e6f2d8497a90600090a3505050565b8360005b8381101561026b576000826001600160a01b03166323b872dd338888868181106101b5576101b56103d9565b90506020020160208101906101ca91906103ef565b6040516001600160e01b031960e085901b1681526001600160a01b03928316600482015291166024820152604481018790526064016020604051808303816000875af115801561021e573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906102429190610411565b9050806102625760405163023e083b60e21b815260040160405180910390fd5b50600101610189565b50604051839083907f399b2ab057f387c1ad4317bf2c7cb9d1dfe3ce0ce384de6c0f2118afb87cf91e90600090a35050505050565b60008083601f8401126102b257600080fd5b50813567ffffffffffffffff8111156102ca57600080fd5b6020830191508360208260051b85010111156102e557600080fd5b9250929050565b60008060006040848603121561030157600080fd5b833567ffffffffffffffff81111561031857600080fd5b610324868287016102a0565b909790965060209590950135949350505050565b80356001600160a01b038116811461034f57600080fd5b919050565b6000806000806060858703121561036a57600080fd5b61037385610338565b9350602085013567ffffffffffffffff81111561038f57600080fd5b61039b878288016102a0565b9598909750949560400135949350505050565b80820281158282048414176103d357634e487b7160e01b600052601160045260246000fd5b92915050565b634e487b7160e01b600052603260045260246000fd5b60006020828403121561040157600080fd5b61040a82610338565b9392505050565b60006020828403121561042357600080fd5b8151801515811461040a57600080fdfea2646970667358221220510346409adcdb215e782ec7665a4b6ad8c548bb4351feb6b4834a44f2d5dc5e64736f6c63430008180033

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
0x2ad3E0f6B71FCCABB4f9A20533016063dCC03e17
Loading...
Loading
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.