Cryo Explorer Ethereum Mainnet

Address Contract Verified

Address 0x7b1323f91Cb82C664ba070c32E57bCC24F9cF6fd
Balance 0 ETH
Nonce 1
Code Size 840 bytes
Indexed Transactions 0
External Etherscan · Sourcify

Contract Bytecode

840 bytes
0x608060405234801561001057600080fd5b506004361061002b5760003560e01c806332be251b14610030575b600080fd5b61004361003e36600461022a565b610045565b005b81518151811461006857604051631f2bc0e360e31b815260040160405180910390fd5b60005b8181101561012d57838181518110610085576100856102fc565b60200260200101516001600160a01b03166342842e0e33878685815181106100af576100af6102fc565b60209081029190910101516040516001600160e01b031960e086901b1681526001600160a01b0393841660048201529290911660248301526044820152606401600060405180830381600087803b15801561010957600080fd5b505af115801561011d573d6000803e3d6000fd5b50506001909201915061006b9050565b5050505050565b80356001600160a01b038116811461014b57600080fd5b919050565b634e487b7160e01b600052604160045260246000fd5b604051601f8201601f1916810167ffffffffffffffff8111828210171561018f5761018f610150565b604052919050565b600067ffffffffffffffff8211156101b1576101b1610150565b5060051b60200190565b600082601f8301126101cc57600080fd5b813560206101e16101dc83610197565b610166565b8083825260208201915060208460051b87010193508684111561020357600080fd5b602086015b8481101561021f5780358352918301918301610208565b509695505050505050565b60008060006060848603121561023f57600080fd5b61024884610134565b925060208085013567ffffffffffffffff8082111561026657600080fd5b818701915087601f83011261027a57600080fd5b81356102886101dc82610197565b81815260059190911b8301840190848101908a8311156102a757600080fd5b938501935b828510156102cc576102bd85610134565b825293850193908501906102ac565b9650505060408701359250808311156102e457600080fd5b50506102f2868287016101bb565b9150509250925092565b634e487b7160e01b600052603260045260246000fdfea2646970667358221220982bcaa4355075574020f72dd5c401aba6c40da08cbeafb3cef1c3edee59aaba64736f6c63430008180033

Verified Source Code Full Match

Compiler: v0.8.24+commit.e11b9ed9 EVM: paris Optimization: Yes (200 runs)
ERC721Multisender.sol 28 lines
// SPDX-License-Identifier: UNLICENSED
pragma solidity 0.8.24;

import { IERC721 } from "@openzeppelin/contracts/token/ERC721/IERC721.sol";

/// @title ERC721Multisender
/// @notice Implementation of given contract allows transfer batches of different nfts in one transaction.
contract ERC721Multisender {
    /// @notice `collections` and `ids` lengths are different.
    error ArraysLengthMissmatch();

    /// @notice given value is unacceptable.
    error UnacceptableValue();

    /// @notice transfers batch of different nfts with different ids to `to` address.
    /// @param to address which will receive all selected nfts.
    /// @param collections array of nft addresses which will be transferred in one interaction.
    /// @param ids ids of nfts which willbe transferred in one interaction.
    /// @dev `collections` length have to be equals `ids` length.
    function batchSafeTransferFrom(address to, address[] memory collections, uint256[] memory ids) external {
        uint256 length = collections.length;

        if (length != ids.length) revert ArraysLengthMissmatch();
        for (uint256 i = 0; i < length; i++) {
            IERC721(collections[i]).safeTransferFrom(msg.sender, to, ids[i]);
        }
    }
}
IERC721.sol 135 lines
// SPDX-License-Identifier: MIT
// OpenZeppelin Contracts (last updated v5.0.0) (token/ERC721/IERC721.sol)

pragma solidity ^0.8.20;

import {IERC165} from "../../utils/introspection/IERC165.sol";

/**
 * @dev Required interface of an ERC721 compliant contract.
 */
interface IERC721 is IERC165 {
    /**
     * @dev Emitted when `tokenId` token is transferred from `from` to `to`.
     */
    event Transfer(address indexed from, address indexed to, uint256 indexed tokenId);

    /**
     * @dev Emitted when `owner` enables `approved` to manage the `tokenId` token.
     */
    event Approval(address indexed owner, address indexed approved, uint256 indexed tokenId);

    /**
     * @dev Emitted when `owner` enables or disables (`approved`) `operator` to manage all of its assets.
     */
    event ApprovalForAll(address indexed owner, address indexed operator, bool approved);

    /**
     * @dev Returns the number of tokens in ``owner``'s account.
     */
    function balanceOf(address owner) external view returns (uint256 balance);

    /**
     * @dev Returns the owner of the `tokenId` token.
     *
     * Requirements:
     *
     * - `tokenId` must exist.
     */
    function ownerOf(uint256 tokenId) external view returns (address owner);

    /**
     * @dev Safely transfers `tokenId` token from `from` to `to`.
     *
     * Requirements:
     *
     * - `from` cannot be the zero address.
     * - `to` cannot be the zero address.
     * - `tokenId` token must exist and be owned by `from`.
     * - If the caller is not `from`, it must be approved to move this token by either {approve} or {setApprovalForAll}.
     * - If `to` refers to a smart contract, it must implement {IERC721Receiver-onERC721Received}, which is called upon
     *   a safe transfer.
     *
     * Emits a {Transfer} event.
     */
    function safeTransferFrom(address from, address to, uint256 tokenId, bytes calldata data) external;

    /**
     * @dev Safely transfers `tokenId` token from `from` to `to`, checking first that contract recipients
     * are aware of the ERC721 protocol to prevent tokens from being forever locked.
     *
     * Requirements:
     *
     * - `from` cannot be the zero address.
     * - `to` cannot be the zero address.
     * - `tokenId` token must exist and be owned by `from`.
     * - If the caller is not `from`, it must have been allowed to move this token by either {approve} or
     *   {setApprovalForAll}.
     * - If `to` refers to a smart contract, it must implement {IERC721Receiver-onERC721Received}, which is called upon
     *   a safe transfer.
     *
     * Emits a {Transfer} event.
     */
    function safeTransferFrom(address from, address to, uint256 tokenId) external;

    /**
     * @dev Transfers `tokenId` token from `from` to `to`.
     *
     * WARNING: Note that the caller is responsible to confirm that the recipient is capable of receiving ERC721
     * or else they may be permanently lost. Usage of {safeTransferFrom} prevents loss, though the caller must
     * understand this adds an external call which potentially creates a reentrancy vulnerability.
     *
     * Requirements:
     *
     * - `from` cannot be the zero address.
     * - `to` cannot be the zero address.
     * - `tokenId` token must be owned by `from`.
     * - If the caller is not `from`, it must be approved to move this token by either {approve} or {setApprovalForAll}.
     *
     * Emits a {Transfer} event.
     */
    function transferFrom(address from, address to, uint256 tokenId) external;

    /**
     * @dev Gives permission to `to` to transfer `tokenId` token to another account.
     * The approval is cleared when the token is transferred.
     *
     * Only a single account can be approved at a time, so approving the zero address clears previous approvals.
     *
     * Requirements:
     *
     * - The caller must own the token or be an approved operator.
     * - `tokenId` must exist.
     *
     * Emits an {Approval} event.
     */
    function approve(address to, uint256 tokenId) external;

    /**
     * @dev Approve or remove `operator` as an operator for the caller.
     * Operators can call {transferFrom} or {safeTransferFrom} for any token owned by the caller.
     *
     * Requirements:
     *
     * - The `operator` cannot be the address zero.
     *
     * Emits an {ApprovalForAll} event.
     */
    function setApprovalForAll(address operator, bool approved) external;

    /**
     * @dev Returns the account approved for `tokenId` token.
     *
     * Requirements:
     *
     * - `tokenId` must exist.
     */
    function getApproved(uint256 tokenId) external view returns (address operator);

    /**
     * @dev Returns if the `operator` is allowed to manage all of the assets of `owner`.
     *
     * See {setApprovalForAll}
     */
    function isApprovedForAll(address owner, address operator) external view returns (bool);
}
IERC165.sol 25 lines
// SPDX-License-Identifier: MIT
// OpenZeppelin Contracts (last updated v5.0.0) (utils/introspection/IERC165.sol)

pragma solidity ^0.8.20;

/**
 * @dev Interface of the ERC165 standard, as defined in the
 * https://eips.ethereum.org/EIPS/eip-165[EIP].
 *
 * Implementers can declare support of contract interfaces, which can then be
 * queried by others ({ERC165Checker}).
 *
 * For an implementation, see {ERC165}.
 */
interface IERC165 {
    /**
     * @dev Returns true if this contract implements the interface defined by
     * `interfaceId`. See the corresponding
     * https://eips.ethereum.org/EIPS/eip-165#how-interfaces-are-identified[EIP section]
     * to learn more about how these ids are created.
     *
     * This function call must use less than 30 000 gas.
     */
    function supportsInterface(bytes4 interfaceId) external view returns (bool);
}

Write Contract 1 functions

These functions modify contract state and require a wallet transaction to execute.

batchSafeTransferFrom 0x32be251b
address to
address[] collections
uint256[] ids

Recent Transactions

No transactions found for this address