Source Code
Overview
ETH Balance
0 ETH
Eth Value
$0.00Latest 25 from a total of 88 transactions
| Transaction Hash |
Method
|
Block
|
From
|
|
To
|
||||
|---|---|---|---|---|---|---|---|---|---|
| Batch Transfer F... | 23657336 | 149 days ago | IN | 0 ETH | 0.00009021 | ||||
| Batch Transfer F... | 23657333 | 149 days ago | IN | 0 ETH | 0.00011913 | ||||
| Batch Transfer F... | 23657332 | 149 days ago | IN | 0 ETH | 0.00011189 | ||||
| Batch Transfer F... | 23657331 | 149 days ago | IN | 0 ETH | 0.00011232 | ||||
| Batch Transfer F... | 23657330 | 149 days ago | IN | 0 ETH | 0.0001128 | ||||
| Batch Transfer F... | 23657329 | 149 days ago | IN | 0 ETH | 0.00010881 | ||||
| Batch Transfer F... | 23657328 | 149 days ago | IN | 0 ETH | 0.00011213 | ||||
| Batch Transfer F... | 23657327 | 149 days ago | IN | 0 ETH | 0.00011666 | ||||
| Batch Transfer F... | 23657326 | 149 days ago | IN | 0 ETH | 0.00011853 | ||||
| Batch Transfer F... | 23657323 | 149 days ago | IN | 0 ETH | 0.00009685 | ||||
| Batch Transfer F... | 23657321 | 149 days ago | IN | 0 ETH | 0.00011153 | ||||
| Batch Transfer F... | 23657320 | 149 days ago | IN | 0 ETH | 0.0001162 | ||||
| Batch Transfer F... | 23657319 | 149 days ago | IN | 0 ETH | 0.00011867 | ||||
| Batch Transfer F... | 23657318 | 149 days ago | IN | 0 ETH | 0.00010787 | ||||
| Batch Transfer F... | 23657316 | 149 days ago | IN | 0 ETH | 0.00011572 | ||||
| Batch Transfer F... | 23657315 | 149 days ago | IN | 0 ETH | 0.00011215 | ||||
| Batch Transfer F... | 23657314 | 149 days ago | IN | 0 ETH | 0.0001146 | ||||
| Batch Transfer F... | 23657313 | 149 days ago | IN | 0 ETH | 0.0001201 | ||||
| Batch Transfer F... | 23644335 | 151 days ago | IN | 0 ETH | 0.00006027 | ||||
| Batch Transfer F... | 23644334 | 151 days ago | IN | 0 ETH | 0.00012887 | ||||
| Batch Transfer F... | 23644332 | 151 days ago | IN | 0 ETH | 0.00012493 | ||||
| Batch Transfer F... | 23644328 | 151 days ago | IN | 0 ETH | 0.00012879 | ||||
| Batch Transfer F... | 23644327 | 151 days ago | IN | 0 ETH | 0.00013654 | ||||
| Batch Transfer F... | 23644326 | 151 days ago | IN | 0 ETH | 0.0001314 | ||||
| Batch Transfer F... | 23644324 | 151 days ago | IN | 0 ETH | 0.00012855 |
Advanced mode: Intended for advanced users or developers and will display all Internal Transactions including zero value transfers.
Latest 25 internal transactions (View All)
Advanced mode:
| Parent Transaction Hash | Method | Block |
From
|
|
To
|
|||
|---|---|---|---|---|---|---|---|---|
| Transfer From | 23657336 | 149 days ago | 0 ETH | |||||
| Transfer From | 23657336 | 149 days ago | 0 ETH | |||||
| Transfer From | 23657336 | 149 days ago | 0 ETH | |||||
| Transfer From | 23657336 | 149 days ago | 0 ETH | |||||
| Transfer From | 23657336 | 149 days ago | 0 ETH | |||||
| Transfer From | 23657336 | 149 days ago | 0 ETH | |||||
| Transfer From | 23657336 | 149 days ago | 0 ETH | |||||
| Transfer From | 23657336 | 149 days ago | 0 ETH | |||||
| Transfer From | 23657336 | 149 days ago | 0 ETH | |||||
| Transfer From | 23657336 | 149 days ago | 0 ETH | |||||
| Transfer From | 23657336 | 149 days ago | 0 ETH | |||||
| Transfer From | 23657336 | 149 days ago | 0 ETH | |||||
| Transfer From | 23657336 | 149 days ago | 0 ETH | |||||
| Transfer From | 23657336 | 149 days ago | 0 ETH | |||||
| Transfer From | 23657336 | 149 days ago | 0 ETH | |||||
| Transfer From | 23657336 | 149 days ago | 0 ETH | |||||
| Transfer From | 23657336 | 149 days ago | 0 ETH | |||||
| Transfer From | 23657336 | 149 days ago | 0 ETH | |||||
| Transfer From | 23657336 | 149 days ago | 0 ETH | |||||
| Transfer From | 23657336 | 149 days ago | 0 ETH | |||||
| Transfer From | 23657336 | 149 days ago | 0 ETH | |||||
| Transfer From | 23657336 | 149 days ago | 0 ETH | |||||
| Transfer From | 23657336 | 149 days ago | 0 ETH | |||||
| Transfer From | 23657336 | 149 days ago | 0 ETH | |||||
| Transfer From | 23657336 | 149 days ago | 0 ETH |
Loading...
Loading
Loading...
Loading
Cross-Chain Transactions
Loading...
Loading
Contract Name:
BatchTransfer
Compiler Version
v0.8.26+commit.8a97fa7a
Optimization Enabled:
No with 200 runs
Other Settings:
cancun EvmVersion
Contract Source Code (Solidity Standard Json-Input format)
// SPDX-License-Identifier: MIT
pragma solidity ^0.8.4;
/**
* @title BatchTransfer
* @notice Gas-efficient batch transfer contract for ERC721 tokens with access control
* @dev Allows ONLY the authorized caller to transfer multiple ERC721 tokens in a single transaction
*
* Security Model:
* 1. Contract is deployed with a single authorized caller address (immutable)
* 2. Safe approves this contract: setApprovalForAll(BatchTransfer, true)
* 3. ONLY the authorized caller can execute batchTransferFrom
* 4. Any other address attempting to call will revert with "Unauthorized"
*
* Usage:
* 1. Deploy with authorizedCaller = EOA operator address
* 2. Safe approves this contract via setApprovalForAll
* 3. EOA operator calls batchTransferFrom to transfer tokens
*
* Gas optimizations:
* - Minimal storage usage (one immutable address)
* - Unchecked iterator increments
* - No events (rely on ERC721 Transfer events)
* - Direct interface calls (no try/catch overhead)
*/
interface IERC721 {
function transferFrom(address from, address to, uint256 tokenId) external;
}
contract BatchTransfer {
/// @notice The only address authorized to call batch transfer functions
/// @dev Immutable for gas efficiency and security - cannot be changed after deployment
address public immutable authorizedCaller;
/// @notice Emitted when contract is deployed
/// @param caller The authorized caller address
event BatchTransferDeployed(address indexed caller);
/// @notice Reverts when msg.sender is not the authorized caller
error Unauthorized();
/**
* @notice Deploy the BatchTransfer contract with a specific authorized caller
* @param _authorizedCaller The address that will be allowed to call batch transfer functions
* @dev The authorized caller cannot be changed after deployment
*/
constructor(address _authorizedCaller) {
require(_authorizedCaller != address(0), "Zero address not allowed");
authorizedCaller = _authorizedCaller;
emit BatchTransferDeployed(_authorizedCaller);
}
/**
* @notice Modifier to restrict function access to authorized caller only
*/
modifier onlyAuthorized() {
if (msg.sender != authorizedCaller) revert Unauthorized();
_;
}
/**
* @notice Batch transfer ERC721 tokens from one address to another
* @param token The ERC721 token contract address
* @param from The address to transfer from (must have approved this contract)
* @param to The address to transfer to
* @param tokenIds Array of token IDs to transfer
*
* @dev Reverts if:
* - Caller is not the authorized caller (Unauthorized)
* - Any tokenId is not owned by `from`
* - This contract is not approved by `from`
* - Any individual transfer fails
*
* All transfers are atomic - if one fails, all revert.
*/
function batchTransferFrom(
address token,
address from,
address to,
uint256[] calldata tokenIds
) external onlyAuthorized {
uint256 length = tokenIds.length;
for (uint256 i; i < length;) {
IERC721(token).transferFrom(from, to, tokenIds[i]);
unchecked {
++i;
}
}
}
/**
* @notice Batch transfer multiple ERC721 collections in one transaction
* @param tokens Array of ERC721 token contract addresses
* @param from The address to transfer from (must have approved this contract for all tokens)
* @param to The address to transfer to
* @param tokenIds Array of arrays - tokenIds[i] contains IDs for tokens[i]
*
* @dev Useful for transferring tokens from multiple collections at once
* Requires tokens.length == tokenIds.length
* Reverts if caller is not the authorized caller (Unauthorized)
*/
function batchTransferFromMultiple(
address[] calldata tokens,
address from,
address to,
uint256[][] calldata tokenIds
) external onlyAuthorized {
uint256 length = tokens.length;
require(length == tokenIds.length, "Length mismatch");
for (uint256 i; i < length;) {
uint256 tokenIdsLength = tokenIds[i].length;
for (uint256 j; j < tokenIdsLength;) {
IERC721(tokens[i]).transferFrom(from, to, tokenIds[i][j]);
unchecked {
++j;
}
}
unchecked {
++i;
}
}
}
}{
"remappings": [
"forge-std/=lib/forge-std/src/",
"solady/=lib/solady/src/"
],
"optimizer": {
"enabled": false,
"runs": 200
},
"metadata": {
"useLiteralContent": false,
"bytecodeHash": "ipfs",
"appendCBOR": true
},
"outputSelection": {
"*": {
"*": [
"evm.bytecode",
"evm.deployedBytecode",
"devdoc",
"userdoc",
"metadata",
"abi"
]
}
},
"evmVersion": "cancun",
"viaIR": false
}Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
Contract ABI
API[{"inputs":[{"internalType":"address","name":"_authorizedCaller","type":"address"}],"stateMutability":"nonpayable","type":"constructor"},{"inputs":[],"name":"Unauthorized","type":"error"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"caller","type":"address"}],"name":"BatchTransferDeployed","type":"event"},{"inputs":[],"name":"authorizedCaller","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"token","type":"address"},{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256[]","name":"tokenIds","type":"uint256[]"}],"name":"batchTransferFrom","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address[]","name":"tokens","type":"address[]"},{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256[][]","name":"tokenIds","type":"uint256[][]"}],"name":"batchTransferFromMultiple","outputs":[],"stateMutability":"nonpayable","type":"function"}]Contract Creation Code
60a060405234801561000f575f80fd5b50604051610aa7380380610aa78339818101604052810190610031919061017a565b5f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff160361009f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610096906101ff565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff1660808173ffffffffffffffffffffffffffffffffffffffff16815250508073ffffffffffffffffffffffffffffffffffffffff167f423b635c70c182348d98799883a201870af43828b18523f3a455146f7ac9879060405160405180910390a25061021d565b5f80fd5b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f61014982610120565b9050919050565b6101598161013f565b8114610163575f80fd5b50565b5f8151905061017481610150565b92915050565b5f6020828403121561018f5761018e61011c565b5b5f61019c84828501610166565b91505092915050565b5f82825260208201905092915050565b7f5a65726f2061646472657373206e6f7420616c6c6f77656400000000000000005f82015250565b5f6101e96018836101a5565b91506101f4826101b5565b602082019050919050565b5f6020820190508181035f830152610216816101dd565b9050919050565b6080516108656102425f395f8181609b0152818161029901526102bd01526108655ff3fe608060405234801561000f575f80fd5b506004361061003f575f3560e01c80637b6728a51461004357806397dc97cb1461005f578063b6b35f8e1461007d575b5f80fd5b61005d60048036038101906100589190610500565b610099565b005b610067610297565b60405161007491906105b2565b60405180910390f35b61009760048036038101906100929190610620565b6102bb565b005b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161461011e576040517f82b4290000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f86869050905082829050811461016a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610161906106fe565b60405180910390fd5b5f5b8181101561028d575f8484838181106101885761018761071c565b5b905060200281019061019a9190610755565b905090505f5b81811015610280578989848181106101bb576101ba61071c565b5b90506020020160208101906101d091906107b7565b73ffffffffffffffffffffffffffffffffffffffff166323b872dd8989898988818110610200576101ff61071c565b5b90506020028101906102129190610755565b868181106102235761022261071c565b5b905060200201356040518463ffffffff1660e01b8152600401610248939291906107fa565b5f604051808303815f87803b15801561025f575f80fd5b505af1158015610271573d5f803e3d5ffd5b505050508060010190506101a0565b508160010191505061016c565b5050505050505050565b7f000000000000000000000000000000000000000000000000000000000000000081565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610340576040517f82b4290000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f8282905090505f5b818110156103df578673ffffffffffffffffffffffffffffffffffffffff166323b872dd87878787868181106103825761038161071c565b5b905060200201356040518463ffffffff1660e01b81526004016103a7939291906107fa565b5f604051808303815f87803b1580156103be575f80fd5b505af11580156103d0573d5f803e3d5ffd5b50505050806001019050610349565b50505050505050565b5f80fd5b5f80fd5b5f80fd5b5f80fd5b5f80fd5b5f8083601f840112610411576104106103f0565b5b8235905067ffffffffffffffff81111561042e5761042d6103f4565b5b60208301915083602082028301111561044a576104496103f8565b5b9250929050565b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f61047a82610451565b9050919050565b61048a81610470565b8114610494575f80fd5b50565b5f813590506104a581610481565b92915050565b5f8083601f8401126104c0576104bf6103f0565b5b8235905067ffffffffffffffff8111156104dd576104dc6103f4565b5b6020830191508360208202830111156104f9576104f86103f8565b5b9250929050565b5f805f805f806080878903121561051a576105196103e8565b5b5f87013567ffffffffffffffff811115610537576105366103ec565b5b61054389828a016103fc565b9650965050602061055689828a01610497565b945050604061056789828a01610497565b935050606087013567ffffffffffffffff811115610588576105876103ec565b5b61059489828a016104ab565b92509250509295509295509295565b6105ac81610470565b82525050565b5f6020820190506105c55f8301846105a3565b92915050565b5f8083601f8401126105e0576105df6103f0565b5b8235905067ffffffffffffffff8111156105fd576105fc6103f4565b5b602083019150836020820283011115610619576106186103f8565b5b9250929050565b5f805f805f60808688031215610639576106386103e8565b5b5f61064688828901610497565b955050602061065788828901610497565b945050604061066888828901610497565b935050606086013567ffffffffffffffff811115610689576106886103ec565b5b610695888289016105cb565b92509250509295509295909350565b5f82825260208201905092915050565b7f4c656e677468206d69736d6174636800000000000000000000000000000000005f82015250565b5f6106e8600f836106a4565b91506106f3826106b4565b602082019050919050565b5f6020820190508181035f830152610715816106dc565b9050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b5f80fd5b5f80fd5b5f80fd5b5f808335600160200384360303811261077157610770610749565b5b80840192508235915067ffffffffffffffff8211156107935761079261074d565b5b6020830192506020820236038313156107af576107ae610751565b5b509250929050565b5f602082840312156107cc576107cb6103e8565b5b5f6107d984828501610497565b91505092915050565b5f819050919050565b6107f4816107e2565b82525050565b5f60608201905061080d5f8301866105a3565b61081a60208301856105a3565b61082760408301846107eb565b94935050505056fea2646970667358221220eb114f90bcc4cc0557094764ae8354adf410a350e0f87bcf0beb9667c8fb07cb64736f6c634300081a003300000000000000000000000087e3b592b10a2bed043109210814f07067fc0336
Deployed Bytecode
0x608060405234801561000f575f80fd5b506004361061003f575f3560e01c80637b6728a51461004357806397dc97cb1461005f578063b6b35f8e1461007d575b5f80fd5b61005d60048036038101906100589190610500565b610099565b005b610067610297565b60405161007491906105b2565b60405180910390f35b61009760048036038101906100929190610620565b6102bb565b005b7f00000000000000000000000087e3b592b10a2bed043109210814f07067fc033673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161461011e576040517f82b4290000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f86869050905082829050811461016a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610161906106fe565b60405180910390fd5b5f5b8181101561028d575f8484838181106101885761018761071c565b5b905060200281019061019a9190610755565b905090505f5b81811015610280578989848181106101bb576101ba61071c565b5b90506020020160208101906101d091906107b7565b73ffffffffffffffffffffffffffffffffffffffff166323b872dd8989898988818110610200576101ff61071c565b5b90506020028101906102129190610755565b868181106102235761022261071c565b5b905060200201356040518463ffffffff1660e01b8152600401610248939291906107fa565b5f604051808303815f87803b15801561025f575f80fd5b505af1158015610271573d5f803e3d5ffd5b505050508060010190506101a0565b508160010191505061016c565b5050505050505050565b7f00000000000000000000000087e3b592b10a2bed043109210814f07067fc033681565b7f00000000000000000000000087e3b592b10a2bed043109210814f07067fc033673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610340576040517f82b4290000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f8282905090505f5b818110156103df578673ffffffffffffffffffffffffffffffffffffffff166323b872dd87878787868181106103825761038161071c565b5b905060200201356040518463ffffffff1660e01b81526004016103a7939291906107fa565b5f604051808303815f87803b1580156103be575f80fd5b505af11580156103d0573d5f803e3d5ffd5b50505050806001019050610349565b50505050505050565b5f80fd5b5f80fd5b5f80fd5b5f80fd5b5f80fd5b5f8083601f840112610411576104106103f0565b5b8235905067ffffffffffffffff81111561042e5761042d6103f4565b5b60208301915083602082028301111561044a576104496103f8565b5b9250929050565b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f61047a82610451565b9050919050565b61048a81610470565b8114610494575f80fd5b50565b5f813590506104a581610481565b92915050565b5f8083601f8401126104c0576104bf6103f0565b5b8235905067ffffffffffffffff8111156104dd576104dc6103f4565b5b6020830191508360208202830111156104f9576104f86103f8565b5b9250929050565b5f805f805f806080878903121561051a576105196103e8565b5b5f87013567ffffffffffffffff811115610537576105366103ec565b5b61054389828a016103fc565b9650965050602061055689828a01610497565b945050604061056789828a01610497565b935050606087013567ffffffffffffffff811115610588576105876103ec565b5b61059489828a016104ab565b92509250509295509295509295565b6105ac81610470565b82525050565b5f6020820190506105c55f8301846105a3565b92915050565b5f8083601f8401126105e0576105df6103f0565b5b8235905067ffffffffffffffff8111156105fd576105fc6103f4565b5b602083019150836020820283011115610619576106186103f8565b5b9250929050565b5f805f805f60808688031215610639576106386103e8565b5b5f61064688828901610497565b955050602061065788828901610497565b945050604061066888828901610497565b935050606086013567ffffffffffffffff811115610689576106886103ec565b5b610695888289016105cb565b92509250509295509295909350565b5f82825260208201905092915050565b7f4c656e677468206d69736d6174636800000000000000000000000000000000005f82015250565b5f6106e8600f836106a4565b91506106f3826106b4565b602082019050919050565b5f6020820190508181035f830152610715816106dc565b9050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b5f80fd5b5f80fd5b5f80fd5b5f808335600160200384360303811261077157610770610749565b5b80840192508235915067ffffffffffffffff8211156107935761079261074d565b5b6020830192506020820236038313156107af576107ae610751565b5b509250929050565b5f602082840312156107cc576107cb6103e8565b5b5f6107d984828501610497565b91505092915050565b5f819050919050565b6107f4816107e2565b82525050565b5f60608201905061080d5f8301866105a3565b61081a60208301856105a3565b61082760408301846107eb565b94935050505056fea2646970667358221220eb114f90bcc4cc0557094764ae8354adf410a350e0f87bcf0beb9667c8fb07cb64736f6c634300081a0033
Constructor Arguments (ABI-Encoded and is the last bytes of the Contract Creation Code above)
00000000000000000000000087e3b592b10a2bed043109210814f07067fc0336
-----Decoded View---------------
Arg [0] : _authorizedCaller (address): 0x87e3b592B10A2BED043109210814f07067fc0336
-----Encoded View---------------
1 Constructor Arguments found :
Arg [0] : 00000000000000000000000087e3b592b10a2bed043109210814f07067fc0336
Loading...
Loading
Loading...
Loading
Net Worth in USD
$0.00
Net Worth in ETH
0
Multichain Portfolio | 33 Chains
| Chain | Token | Portfolio % | Price | Amount | Value |
|---|
Loading...
Loading
Loading...
Loading
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.