Hi there,
Having some trouble with this contract to take an ERC1155 NFT with many copies, and send it to multiple addresses:
//SPDX-License-Identifier: GPL-3.0-or-later
pragma solidity ^0.8.0;
interface IERC1155 {
function balanceOf(address _owner, uint256 _id) external view returns (uint256);
function isApprovedForAll(address _owner, address _operator) external view returns (bool);
function safeBatchTransferFrom(address _from, address _to, string calldata _ids, uint256[] calldata _values, bytes calldata _data) external;
}
contract DisperseNft {
function disperse(IERC1155 token, address[] calldata recipients, string calldata ids, uint256[] calldata values, bytes calldata data) external {
require(token.isApprovedForAll(msg.sender, address(this)), "Sender has not approved disperse contract");
for (uint256 i = 0; i < recipients.length; i++) {
token.safeBatchTransferFrom(msg.sender, recipients[i], ids, values, data);
}
}
}
Here are some example values put in:
token: 0x35368c20f70766d528afa8c91b1b47e2735cc7fc
recipients: [0x618ec80907aec603970cfd4fcdca206839b453db, 0x039FD6616251a5417118bC146FD3A6c63aA6b079, 0xa736E241A4fDc47d9D32168e1afE5173423Edb1a]
ids: [“15652705726004049212572897112425444465251989712766045724244891235464316353425”]
values: [1]
data: 0x
And here is the error:
transact to DisperseNft.disperse errored: Error encoding arguments: Error: types/values length mismatch (count={"types":5,"values":6}, value={"types":["address","address[]","string","uint256[]","bytes"],"values":["0x35368c20f70766d528afa8c91b1b47e2735cc7fc","[0x618ec80907aec603970cfd4fcdca206839b453db,",", 0xa736E241A4fDc47d9D32168e1afE5173423Edb1a]","[“15652705726004049212572897112425444465251989712766045724244891235464316353425”]",[1],"0x"]}, code=INVALID_ARGUMENT, version=abi/5.4.0)
Any ideas?