Address Contract Verified
Address
0x644445bccd7bD38717F2bfD1Fd343c63d473300F
Balance
0 ETH
Nonce
1
Code Size
5888 bytes
Creator
0xF8D37142...30CE at tx 0xed416c61...92ac8a
Indexed Transactions
0
Contract Bytecode
5888 bytes
0x608060405234801561000f575f5ffd5b5060043610610060575f3560e01c806311eac8551461006457806386f6318f1461008257806388d695b2146100b25780638da5cb5b146100e2578063e2f5f99814610100578063f2fde38b14610130575b5f5ffd5b61006c61014c565b6040516100799190610b2c565b60405180910390f35b61009c60048036038101906100979190610bc4565b610170565b6040516100a99190610c1c565b60405180910390f35b6100cc60048036038101906100c79190610ceb565b610216565b6040516100d99190610e20565b60405180910390f35b6100ea6108fc565b6040516100f79190610e4f565b60405180910390f35b61011a60048036038101906101159190610e68565b610920565b6040516101279190610ec2565b60405180910390f35b61014a60048036038101906101459190610edb565b610974565b005b7f000000000000000000000000a0b86991c6218b36c1d19d4a2e9eb0ce3606eb4881565b5f817f000000000000000000000000a0b86991c6218b36c1d19d4a2e9eb0ce3606eb4873ffffffffffffffffffffffffffffffffffffffff1663dd62ed3e85306040518363ffffffff1660e01b81526004016101cd929190610f06565b602060405180830381865afa1580156101e8573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061020c9190610f41565b1015905092915050565b6060828290508585905014610260576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161025790610fc6565b60405180910390fd5b5f85859050116102a5576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161029c9061102e565b60405180910390fd5b6101f48585905011156102ed576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016102e490611096565b60405180910390fd5b8484905067ffffffffffffffff81111561030a576103096110b4565b5b6040519080825280602002602001820160405280156103385781602001602082028036833780820191505090505b5090505f5f90505f5f90505f5f90505b878790508110156108b3575f73ffffffffffffffffffffffffffffffffffffffff1688888381811061037d5761037c6110e1565b5b90506020020160208101906103929190610edb565b73ffffffffffffffffffffffffffffffffffffffff16036103e8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016103df90611158565b60405180910390fd5b5f8686838181106103fc576103fb6110e1565b5b9050602002013511610443576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161043a906111c0565b60405180910390fd5b7f000000000000000000000000a0b86991c6218b36c1d19d4a2e9eb0ce3606eb4873ffffffffffffffffffffffffffffffffffffffff166323b872dd338a8a85818110610493576104926110e1565b5b90506020020160208101906104a89190610edb565b8989868181106104bb576104ba6110e1565b5b905060200201356040518463ffffffff1660e01b81526004016104e0939291906111de565b6020604051808303815f875af192505050801561051b57506040513d601f19601f82011682018060405250810190610518919061123d565b60015b61070f57610527611274565b806308c379a003610612575061053b6112d4565b806105465750610614565b5f85838151811061055a576105596110e1565b5b602002602001019015159081151581525050828061057790611390565b93505088888381811061058d5761058c6110e1565b5b90506020020160208101906105a29190610edb565b73ffffffffffffffffffffffffffffffffffffffff167fac8a4ca68d251f5f458c9a041a493153c066f9de8acab5b7f01900850fd385ac8888858181106105ec576105eb6110e1565b5b90506020020135848460405161060493929190611427565b60405180910390a25061070a565b505b3d805f811461063e576040519150601f19603f3d011682016040523d82523d5f602084013e610643565b606091505b505f858381518110610658576106576110e1565b5b602002602001019015159081151581525050828061067590611390565b93505088888381811061068b5761068a6110e1565b5b90506020020160208101906106a09190610edb565b73ffffffffffffffffffffffffffffffffffffffff167fac8a4ca68d251f5f458c9a041a493153c066f9de8acab5b7f01900850fd385ac8888858181106106ea576106e96110e1565b5b90506020020135846040516107009291906114ad565b60405180910390a2505b6108a6565b80156107df57600185838151811061072a576107296110e1565b5b602002602001019015159081151581525050838061074790611390565b94505088888381811061075d5761075c6110e1565b5b90506020020160208101906107729190610edb565b73ffffffffffffffffffffffffffffffffffffffff167f59c245d057da01102b6eb6bfa5f00693193bb842d46b98ad14ba8bddc49cc0ca8888858181106107bc576107bb6110e1565b5b90506020020135846040516107d29291906114e7565b60405180910390a26108a4565b5f8583815181106107f3576107f26110e1565b5b602002602001019015159081151581525050828061081090611390565b935050888883818110610826576108256110e1565b5b905060200201602081019061083b9190610edb565b73ffffffffffffffffffffffffffffffffffffffff167fac8a4ca68d251f5f458c9a041a493153c066f9de8acab5b7f01900850fd385ac888885818110610885576108846110e1565b5b905060200201358460405161089b929190611558565b60405180910390a25b505b8080600101915050610348565b507ffa886bcd0577ece153e11548269e6473536d872c9a678d9bd8a36c78989ef5fc8787905083836040516108ea93929190611592565b60405180910390a15050949350505050565b5f5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b5f5f5f90505f5f90505b8484905081101561096957848482818110610948576109476110e1565b5b905060200201358261095a91906115c7565b9150808060010191505061092a565b508091505092915050565b5f5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610a02576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016109f990611644565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603610a70576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a67906116ac565b60405180910390fd5b805f5f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f819050919050565b5f610af4610aef610aea84610ab2565b610ad1565b610ab2565b9050919050565b5f610b0582610ada565b9050919050565b5f610b1682610afb565b9050919050565b610b2681610b0c565b82525050565b5f602082019050610b3f5f830184610b1d565b92915050565b5f604051905090565b5f5ffd5b5f5ffd5b5f610b6082610ab2565b9050919050565b610b7081610b56565b8114610b7a575f5ffd5b50565b5f81359050610b8b81610b67565b92915050565b5f819050919050565b610ba381610b91565b8114610bad575f5ffd5b50565b5f81359050610bbe81610b9a565b92915050565b5f5f60408385031215610bda57610bd9610b4e565b5b5f610be785828601610b7d565b9250506020610bf885828601610bb0565b9150509250929050565b5f8115159050919050565b610c1681610c02565b82525050565b5f602082019050610c2f5f830184610c0d565b92915050565b5f5ffd5b5f5ffd5b5f5ffd5b5f5f83601f840112610c5657610c55610c35565b5b8235905067ffffffffffffffff811115610c7357610c72610c39565b5b602083019150836020820283011115610c8f57610c8e610c3d565b5b9250929050565b5f5f83601f840112610cab57610caa610c35565b5b8235905067ffffffffffffffff811115610cc857610cc7610c39565b5b602083019150836020820283011115610ce457610ce3610c3d565b5b9250929050565b5f5f5f5f60408587031215610d0357610d02610b4e565b5b5f85013567ffffffffffffffff811115610d2057610d1f610b52565b5b610d2c87828801610c41565b9450945050602085013567ffffffffffffffff811115610d4f57610d4e610b52565b5b610d5b87828801610c96565b925092505092959194509250565b5f81519050919050565b5f82825260208201905092915050565b5f819050602082019050919050565b610d9b81610c02565b82525050565b5f610dac8383610d92565b60208301905092915050565b5f602082019050919050565b5f610dce82610d69565b610dd88185610d73565b9350610de383610d83565b805f5b83811015610e13578151610dfa8882610da1565b9750610e0583610db8565b925050600181019050610de6565b5085935050505092915050565b5f6020820190508181035f830152610e388184610dc4565b905092915050565b610e4981610b56565b82525050565b5f602082019050610e625f830184610e40565b92915050565b5f5f60208385031215610e7e57610e7d610b4e565b5b5f83013567ffffffffffffffff811115610e9b57610e9a610b52565b5b610ea785828601610c96565b92509250509250929050565b610ebc81610b91565b82525050565b5f602082019050610ed55f830184610eb3565b92915050565b5f60208284031215610ef057610eef610b4e565b5b5f610efd84828501610b7d565b91505092915050565b5f604082019050610f195f830185610e40565b610f266020830184610e40565b9392505050565b5f81519050610f3b81610b9a565b92915050565b5f60208284031215610f5657610f55610b4e565b5b5f610f6384828501610f2d565b91505092915050565b5f82825260208201905092915050565b7f4172726179206c656e677468206d69736d6174636800000000000000000000005f82015250565b5f610fb0601583610f6c565b9150610fbb82610f7c565b602082019050919050565b5f6020820190508181035f830152610fdd81610fa4565b9050919050565b7f456d7074792061727261797300000000000000000000000000000000000000005f82015250565b5f611018600c83610f6c565b915061102382610fe4565b602082019050919050565b5f6020820190508181035f8301526110458161100c565b9050919050565b7f426174636820746f6f206c6172676500000000000000000000000000000000005f82015250565b5f611080600f83610f6c565b915061108b8261104c565b602082019050919050565b5f6020820190508181035f8301526110ad81611074565b9050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b7f496e76616c696420726563697069656e742061646472657373000000000000005f82015250565b5f611142601983610f6c565b915061114d8261110e565b602082019050919050565b5f6020820190508181035f83015261116f81611136565b9050919050565b7f416d6f756e74206d7573742062652067726561746572207468616e20300000005f82015250565b5f6111aa601d83610f6c565b91506111b582611176565b602082019050919050565b5f6020820190508181035f8301526111d78161119e565b9050919050565b5f6060820190506111f15f830186610e40565b6111fe6020830185610e40565b61120b6040830184610eb3565b949350505050565b61121c81610c02565b8114611226575f5ffd5b50565b5f8151905061123781611213565b92915050565b5f6020828403121561125257611251610b4e565b5b5f61125f84828501611229565b91505092915050565b5f8160e01c9050919050565b5f60033d11156112905760045f5f3e61128d5f51611268565b90505b90565b5f601f19601f8301169050919050565b6112ac82611293565b810181811067ffffffffffffffff821117156112cb576112ca6110b4565b5b80604052505050565b5f60443d10611360576112e5610b45565b60043d036004823e80513d602482011167ffffffffffffffff8211171561130d575050611360565b808201805167ffffffffffffffff81111561132b5750505050611360565b80602083010160043d038501811115611348575050505050611360565b611357826020018501866112a3565b82955050505050505b90565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f61139a82610b91565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82036113cc576113cb611363565b5b600182019050919050565b5f81519050919050565b8281835e5f83830152505050565b5f6113f9826113d7565b6114038185610f6c565b93506114138185602086016113e1565b61141c81611293565b840191505092915050565b5f60608201905061143a5f830186610eb3565b6114476020830185610eb3565b818103604083015261145981846113ef565b9050949350505050565b7f556e6b6e6f776e206572726f72000000000000000000000000000000000000005f82015250565b5f611497600d83610f6c565b91506114a282611463565b602082019050919050565b5f6060820190506114c05f830185610eb3565b6114cd6020830184610eb3565b81810360408301526114de8161148b565b90509392505050565b5f6040820190506114fa5f830185610eb3565b6115076020830184610eb3565b9392505050565b7f5472616e736665722072657475726e65642066616c73650000000000000000005f82015250565b5f611542601783610f6c565b915061154d8261150e565b602082019050919050565b5f60608201905061156b5f830185610eb3565b6115786020830184610eb3565b818103604083015261158981611536565b90509392505050565b5f6060820190506115a55f830186610eb3565b6115b26020830185610eb3565b6115bf6040830184610eb3565b949350505050565b5f6115d182610b91565b91506115dc83610b91565b92508282019050808211156115f4576115f3611363565b5b92915050565b7f4e6f7420617574686f72697a65640000000000000000000000000000000000005f82015250565b5f61162e600e83610f6c565b9150611639826115fa565b602082019050919050565b5f6020820190508181035f83015261165b81611622565b9050919050565b7f496e76616c6964206e6577206f776e65720000000000000000000000000000005f82015250565b5f611696601183610f6c565b91506116a182611662565b602082019050919050565b5f6020820190508181035f8301526116c38161168a565b905091905056fea2646970667358221220b11054d4953a8adde4fa29717168459c27c16bd7f4e4211f4b9ce886731e802764736f6c634300081e0033
Verified Source Code Full Match
Compiler: v0.8.30+commit.73712a01
EVM: prague
Optimization: No
BatchUSDCDistributor.sol 103 lines
// SPDX-License-Identifier: MIT
pragma solidity ^0.8.20;
interface IERC20 {
function transferFrom(address sender, address recipient, uint256 amount) external returns (bool);
function allowance(address owner, address spender) external view returns (uint256);
}
contract BatchUSDCDistributor {
address public owner;
IERC20 public immutable usdcToken;
event BatchTransferComplete(uint256 totalRecipients, uint256 successCount, uint256 failureCount);
event TransferSuccess(address indexed recipient, uint256 amount, uint256 index);
event TransferFailure(address indexed recipient, uint256 amount, uint256 index, string reason);
modifier onlyOwner() {
require(msg.sender == owner, "Not authorized");
_;
}
constructor(address _usdcToken) {
owner = msg.sender;
usdcToken = IERC20(_usdcToken);
}
/**
* @notice Batch transfer USDC to multiple recipients
* @param recipients Array of recipient addresses
* @param amounts Array of amounts (in USDC base units - 6 decimals)
* @return results Boolean array indicating success/failure for each transfer
*/
function batchTransfer(
address[] calldata recipients,
uint256[] calldata amounts
) external returns (bool[] memory results) {
require(recipients.length == amounts.length, "Array length mismatch");
require(recipients.length > 0, "Empty arrays");
require(recipients.length <= 500, "Batch too large"); // Gas limit protection
results = new bool[](recipients.length);
uint256 successCount = 0;
uint256 failureCount = 0;
for (uint256 i = 0; i < recipients.length; i++) {
require(recipients[i] != address(0), "Invalid recipient address");
require(amounts[i] > 0, "Amount must be greater than 0");
try usdcToken.transferFrom(msg.sender, recipients[i], amounts[i]) returns (bool success) {
if (success) {
results[i] = true;
successCount++;
emit TransferSuccess(recipients[i], amounts[i], i);
} else {
results[i] = false;
failureCount++;
emit TransferFailure(recipients[i], amounts[i], i, "Transfer returned false");
}
} catch Error(string memory reason) {
results[i] = false;
failureCount++;
emit TransferFailure(recipients[i], amounts[i], i, reason);
} catch (bytes memory) {
results[i] = false;
failureCount++;
emit TransferFailure(recipients[i], amounts[i], i, "Unknown error");
}
}
emit BatchTransferComplete(recipients.length, successCount, failureCount);
return results;
}
/**
* @notice Check if sender has sufficient USDC balance and allowance
* @param sender The address that will send USDC
* @param totalAmount Total USDC needed for the batch
*/
function checkSufficientAllowance(address sender, uint256 totalAmount) external view returns (bool) {
return usdcToken.allowance(sender, address(this)) >= totalAmount;
}
/**
* @notice Calculate total amount needed for a batch
* @param amounts Array of amounts
*/
function calculateTotal(uint256[] calldata amounts) external pure returns (uint256) {
uint256 total = 0;
for (uint256 i = 0; i < amounts.length; i++) {
total += amounts[i];
}
return total;
}
/**
* @notice Transfer ownership
*/
function transferOwnership(address newOwner) external onlyOwner {
require(newOwner != address(0), "Invalid new owner");
owner = newOwner;
}
}
Read Contract
calculateTotal 0xe2f5f998 → uint256
checkSufficientAllowance 0x86f6318f → bool
owner 0x8da5cb5b → address
usdcToken 0x11eac855 → address
Write Contract 2 functions
These functions modify contract state and require a wallet transaction to execute.
batchTransfer 0x88d695b2
address[] recipients
uint256[] amounts
returns: bool[]
transferOwnership 0xf2fde38b
address newOwner
Recent Transactions
No transactions found for this address