Motivation
Permits enable a one-transaction transfer flow, removing the approval step. There is a standard for ERC20 Permits EIP-2612 and ERC721 Permits ERC-4494.
ERC1155 is widely adopted; it would make sense to standardise permits for this token type to enable homogeneous support in third-party applications. Further, I’ve seen a few implementations in the wild like t11s’ here: ERC1155Permit.
I’ve put together an example implementation.
You’ll notice a choice to go with bytes sig
rather than uint8 v, bytes32 r, bytes32 s
. This decision was discussed in the ERC4494 thread and the reasoning is that bytes sig
supports smart contract signing.
Given that ERC1155s can be fungible, it makes sense that an address permits an operator to transfer their tokens. This flow is more similar to ERC2612 than ERC4494. This means nonces are indexed by address: nonces(address owner)
.
I’d like to open up this thread for feedback on standardising the ERC1155 Permit flow.