Contract Overview
Balance:
0 GLMR
GLMR Value:
$0.00
My Name Tag:
Not Available, login to update
[ Download CSV Export ]
Contract Name:
MultiSend
Compiler Version
v0.8.13+commit.abaa5c0e
Optimization Enabled:
No with 200 runs
Other Settings:
default evmVersion
Contract Source Code (Solidity Standard Json-Input format)
pragma solidity 0.8.13; import "./../../openzeppelin/token/ERC721/IERC721.sol"; /// @title Multi send is a part of Seascape marketplace platform. /// It allows users to send a batch of nfts to desired address /// @author Nejc Schneider contract MultiSend { function sendNfts( uint amount, address receiver, address[] calldata nftAddresses, uint[] calldata nftIds ) external returns(uint) { require(amount > 1, "minimum 2 nfts are required"); require(amount < 11, "maximum 10 nfts are allowed"); /// set max amount here require(receiver != msg.sender, "receiver cant be same as sender"); for(uint i = 0; i < amount; ++i){ require(IERC721(nftAddresses[i]).ownerOf(nftIds[i]) == msg.sender, "sender not owner of nft"); } for(uint i = 0; i < amount; ++i){ IERC721(nftAddresses[i]).safeTransferFrom(msg.sender, receiver, nftIds[i]); } return amount; } }
// SPDX-License-Identifier: MIT // OpenZeppelin Contracts v4.4.1 (utils/introspection/IERC165.sol) pragma solidity ^0.8.0; /** * @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); }
// SPDX-License-Identifier: MIT // OpenZeppelin Contracts (last updated v4.6.0) (token/ERC721/IERC721.sol) pragma solidity ^0.8.0; import "../../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 be 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: Usage of this method is discouraged, use {safeTransferFrom} whenever possible. * * 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 caller. * * 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); }
{ "remappings": [], "optimizer": { "enabled": false, "runs": 200 }, "evmVersion": "london", "libraries": {}, "outputSelection": { "*": { "*": [ "evm.bytecode", "evm.deployedBytecode", "devdoc", "userdoc", "metadata", "abi" ] } } }
[{"inputs":[{"internalType":"uint256","name":"amount","type":"uint256"},{"internalType":"address","name":"receiver","type":"address"},{"internalType":"address[]","name":"nftAddresses","type":"address[]"},{"internalType":"uint256[]","name":"nftIds","type":"uint256[]"}],"name":"sendNfts","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"nonpayable","type":"function"}]
Contract Creation Code
608060405234801561001057600080fd5b506108ef806100206000396000f3fe608060405234801561001057600080fd5b506004361061002b5760003560e01c8063e295012a14610030575b600080fd5b61004a600480360381019061004591906104cc565b610060565b6040516100579190610582565b60405180910390f35b6000600187116100a5576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161009c906105fa565b60405180910390fd5b600b87106100e8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016100df90610666565b60405180910390fd5b3373ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff1603610156576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161014d906106d2565b60405180910390fd5b60005b87811015610299573373ffffffffffffffffffffffffffffffffffffffff1686868381811061018b5761018a6106f2565b5b90506020020160208101906101a09190610721565b73ffffffffffffffffffffffffffffffffffffffff16636352211e8686858181106101ce576101cd6106f2565b5b905060200201356040518263ffffffff1660e01b81526004016101f19190610582565b602060405180830381865afa15801561020e573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906102329190610763565b73ffffffffffffffffffffffffffffffffffffffff1614610288576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161027f906107dc565b60405180910390fd5b806102929061082b565b9050610159565b5060005b87811015610365578585828181106102b8576102b76106f2565b5b90506020020160208101906102cd9190610721565b73ffffffffffffffffffffffffffffffffffffffff166342842e0e33898787868181106102fd576102fc6106f2565b5b905060200201356040518463ffffffff1660e01b815260040161032293929190610882565b600060405180830381600087803b15801561033c57600080fd5b505af1158015610350573d6000803e3d6000fd5b505050508061035e9061082b565b905061029d565b508690509695505050505050565b600080fd5b600080fd5b6000819050919050565b6103908161037d565b811461039b57600080fd5b50565b6000813590506103ad81610387565b92915050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b60006103de826103b3565b9050919050565b6103ee816103d3565b81146103f957600080fd5b50565b60008135905061040b816103e5565b92915050565b600080fd5b600080fd5b600080fd5b60008083601f84011261043657610435610411565b5b8235905067ffffffffffffffff81111561045357610452610416565b5b60208301915083602082028301111561046f5761046e61041b565b5b9250929050565b60008083601f84011261048c5761048b610411565b5b8235905067ffffffffffffffff8111156104a9576104a8610416565b5b6020830191508360208202830111156104c5576104c461041b565b5b9250929050565b600080600080600080608087890312156104e9576104e8610373565b5b60006104f789828a0161039e565b965050602061050889828a016103fc565b955050604087013567ffffffffffffffff81111561052957610528610378565b5b61053589828a01610420565b9450945050606087013567ffffffffffffffff81111561055857610557610378565b5b61056489828a01610476565b92509250509295509295509295565b61057c8161037d565b82525050565b60006020820190506105976000830184610573565b92915050565b600082825260208201905092915050565b7f6d696e696d756d2032206e667473206172652072657175697265640000000000600082015250565b60006105e4601b8361059d565b91506105ef826105ae565b602082019050919050565b60006020820190508181036000830152610613816105d7565b9050919050565b7f6d6178696d756d203130206e6674732061726520616c6c6f7765640000000000600082015250565b6000610650601b8361059d565b915061065b8261061a565b602082019050919050565b6000602082019050818103600083015261067f81610643565b9050919050565b7f72656365697665722063616e742062652073616d652061732073656e64657200600082015250565b60006106bc601f8361059d565b91506106c782610686565b602082019050919050565b600060208201905081810360008301526106eb816106af565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b60006020828403121561073757610736610373565b5b6000610745848285016103fc565b91505092915050565b60008151905061075d816103e5565b92915050565b60006020828403121561077957610778610373565b5b60006107878482850161074e565b91505092915050565b7f73656e646572206e6f74206f776e6572206f66206e6674000000000000000000600082015250565b60006107c660178361059d565b91506107d182610790565b602082019050919050565b600060208201905081810360008301526107f5816107b9565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60006108368261037d565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8203610868576108676107fc565b5b600182019050919050565b61087c816103d3565b82525050565b60006060820190506108976000830186610873565b6108a46020830185610873565b6108b16040830184610573565b94935050505056fea2646970667358221220e6a2f325fdc01cdca8e325efb311a61882bfdaa17f2634c159a8cf70a02da88064736f6c634300080d0033
Age | Block | Fee Address | BC Fee Address | Voting Power | Jailed | Incoming |
---|
Make sure to use the "Vote Down" button for any spammy posts, and the "Vote Up" for interesting conversations.