Hello, I am currently working on a middleman contract that will accept erc1155 tokens and return erc20 token.
I started with attempting to make the contract receive 1155 but I get an error about my implementation.
I have done it before with ERC721 reciever but that didn't give me any issues.
/// SPDX-License-Identifier: UNLICENSED
pragma solidity 0.8.7;
import "@openzeppelin/contracts/token/ERC1155/IERC1155Receiver.sol";
contract middleMan is IERC1155Receiver {
function onERC1155Received(
address operator,
address from,
uint256 id,
uint256 value,
bytes calldata data
) external virtual override returns (bytes4);
function onERC1155BatchReceived(
address operator,
address from,
uint256[] calldata ids,
uint256[] calldata values,
bytes calldata data
) external virtual override returns (bytes4);
function supportsInterface(bytes4 interfaceID) external override view returns (bool) {
return interfaceID == 0x01ffc9a7 || // ERC-165 support (i.e. `bytes4(keccak256('supportsInterface(bytes4)'))`).
interfaceID == 0x4e2312e0; // ERC-1155 `ERC1155TokenReceiver` support (i.e. `bytes4(keccak256("onERC1155Received(address,address,uint256,uint256,bytes)")) ^ bytes4(keccak256("onERC1155BatchReceived(address,address,uint256[],uint256[],bytes)"))`).
}
}
It says that i should mark it as abstract as i am missing implementations.