From cc2c7f209cfc3fce5b34aa4565dd06da28672ea0 Mon Sep 17 00:00:00 2001 From: wenzhenxiang <308260887@qq.com> Date: Tue, 28 Oct 2025 11:20:03 +0800 Subject: [PATCH 01/16] Add ERC-7204 permit extension draft --- ERCS/eip-draft_token-permit.md | 150 +++++++++++++++++++++++++++++++++ 1 file changed, 150 insertions(+) create mode 100644 ERCS/eip-draft_token-permit.md diff --git a/ERCS/eip-draft_token-permit.md b/ERCS/eip-draft_token-permit.md new file mode 100644 index 00000000000..33000a987bd --- /dev/null +++ b/ERCS/eip-draft_token-permit.md @@ -0,0 +1,150 @@ +--- +eip: +title: ERC-7204 Permit Extensions +description: Off-chain permit flow for ERC-7204 token managers +author: Xiang (@wenzhenxiang) +discussions-to: https://ethereum-magicians.org/t/contract-wallet-management-token-permit-extensions/25985 +status: Draft +type: Standards Track +category: ERC +requires: 7204, 712 +created: 2025-03-22 +license: CC0-1.0 +--- + +## Abstract + +This proposal extends [ERC-7204](https://eips.ethereum.org/ERCS/erc-7204) smart-wallet token managers with an off-chain authorization flow similar to `permit`. It introduces nonce-tracked `tokenTransferWithSig`, `tokenApproveWithSig`, and `tokenSetApprovalForAllWithSig` functions so that transfers, individual allowances, and global operators can all be delegated after a typed-data signature is presented by the wallet owner. The extension defines canonical EIP-712 schemas, nonce accounting, and execution requirements for compliant implementations. + +## Motivation + +ERC-7204 describes a token management module for smart contract wallets, but stops short of standardising an off-chain signing workflow. Systems that wish to provide "red packet" transfers or delegated approvals must invent bespoke encodings and nonce tracking, reducing interoperability. A shared permit definition lets wallets, relayers, and user interfaces exchange signed transfer authorisations without bespoke integrations. + +Goals: + +- Allow wallets to hand out single-use, replay-protected transfer rights and operator approvals without on-chain transactions. +- Produce predictable EIP-712 schemas so that wallet UIs, SDKs, and relayers can sign and validate authorisations in a uniform manner. +- Maintain backwards compatibility with existing ERC-7204 deployments that do not implement permit extensions. + +## Specification + +The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT", "SHOULD", "SHOULD NOT", "RECOMMENDED", "MAY", and "OPTIONAL" in this document are to be interpreted as described in RFC 2119 and RFC 8174. + +The following additions are REQUIRED for an ERC-7204 compliant module that implements this extension. + +### Interface + +```solidity +interface IERC7204Permit { + function tokenTransferNonce(address owner, address asset, address caller) external view returns (uint256); + + function tokenTransferWithSig( + address owner, + address asset, + address to, + uint256 value, + uint256 deadline, + bytes calldata signature + ) external returns (bool success); + + function tokenApproveNonce(address owner, address asset, address operator, address caller) + external + view + returns (uint256); + + function tokenApproveWithSig( + address owner, + address asset, + address operator, + uint256 value, + uint256 deadline, + bytes calldata signature + ) external returns (bool success); + + function tokenApprovalForAllNonce(address owner, address caller) external view returns (uint256); + + function tokenSetApprovalForAllWithSig( + address owner, + address operator, + bool approved, + uint256 deadline, + bytes calldata signature + ) external returns (bool success); +} +``` + +- `tokenTransferNonce` MUST return a monotonically increasing nonce scoped to `(owner, asset, caller)`. +- `tokenTransferWithSig` MUST verify the signature via `isValidSignature`, require `msg.sender` to equal the signed `caller`, reject expired signatures (unless `deadline == 0`), increment the nonce before performing the transfer, and execute the same logic as `tokenTransfer` in ERC-7204. +- `tokenApproveWithSig` MUST mirror `tokenApprove`, using a nonce scoped to `(owner, asset, operator, caller)`. +- `tokenSetApprovalForAllWithSig` MUST mirror `tokenApproveForAll`, using a nonce scoped to `(owner, caller)`. + +Implementations MUST support wallets that validate signatures through [ERC-1271](https://eips.ethereum.org/EIPS/eip-1271). Wallets MAY wrap signatures but the module MUST unwrap them prior to verification. + +### Typed Data + +Compliant implementations MUST hash the following payload and pass it to the wallet's signature validation logic. The `wallet` field identifies the smart wallet that owns the module. + +| Function | Primary Type | Fields | +|----------|--------------|--------| +| `tokenTransferWithSig` | `TokenTransferWithSig` | `wallet`, `owner`, `caller`, `asset`, `to`, `value`, `nonce`, `deadline` | +| `tokenApproveWithSig` | `TokenApproveWithSig` | `wallet`, `owner`, `caller`, `asset`, `operator`, `value`, `nonce`, `deadline` | +| `tokenSetApprovalForAllWithSig` | `TokenApprovalForAllWithSig` | `wallet`, `owner`, `caller`, `operator`, `approved`, `nonce`, `deadline` | + +Every permit MUST use the EIP-712 domain: + +- `name = "TokenManager Permit"` +- `version = "1"` +- `chainId` equal to the executing chain +- `verifyingContract = address(this)` + +### Nonce Semantics + +- `tokenTransferNonce` MUST be scoped per `(owner, asset, caller)`. +- `tokenApproveNonce` MUST be scoped per `(owner, asset, operator, caller)` to allow independent relayers. +- `tokenApprovalForAllNonce` MUST be scoped per `(owner, caller)`. + +Each `WithSig` function MUST increment its nonce immediately before state changes and MUST revert on signature reuse. + +### Execution Requirements + +Implementations MUST: + +1. Treat `deadline = 0` as non-expiring; otherwise enforce `block.timestamp <= deadline`. +2. Increment the scoped nonce before invoking the underlying ERC-7204 function. +3. Emit the same events as the underlying ERC-7204 functions. +4. Revert if signature validation fails, inputs mismatch, or deadlines are exceeded. + +Wallets MAY offer helper wrappers, but they MUST NOT alter the semantics described above. + +## Rationale + +- Binding `caller` prevents relayers from reusing signatures intended for other executors. +- Independent nonce scopes prevent cross-operation replay while supporting multiple relayers per owner. +- Reusing the existing ERC-7204 entry points keeps events and accounting compatible with current deployments. + +## Backwards Compatibility + +Existing ERC-7204 modules remain valid. Clients SHOULD feature-detect permit support by checking for `IERC7204Permit` via ERC-165 or probing the new function selectors. + +## Reference Implementation + +A reference implementation will be published after community review. It validates the typed-data digest, increments the scoped nonce before external calls, and delegates to existing ERC-7204 functions so that storage and events remain unchanged. + +## Security Considerations + +- Nonces MUST increment even if downstream token interactions revert. +- Wallet owners SHOULD bound permit deadlines to reduce the risk of long-lived signatures. +- Relayers MUST ensure their transaction sender equals the signed `caller` to avoid wasted gas. + +## Test Cases + +A public test suite will accompany the reference implementation. Implementers are encouraged to cover: + +- successful submissions for transfers, allowances, and operator approvals by authorised relayers, +- rejection of expired, replayed, or mismatched signatures, +- nonce increment behaviour when token interactions revert, +- replay protection across all nonce scopes. + +## Copyright + +Copyright and related rights waived via [CC0-1.0](https://creativecommons.org/publicdomain/zero/1.0/). From 1fccd789ed9b16d63de4fa303c1edb274fa8671e Mon Sep 17 00:00:00 2001 From: xiang <308260887@qq.com> Date: Tue, 28 Oct 2025 15:14:04 +0800 Subject: [PATCH 02/16] Update title and creation date in EIP draft --- ERCS/eip-draft_token-permit.md | 6 ++---- 1 file changed, 2 insertions(+), 4 deletions(-) diff --git a/ERCS/eip-draft_token-permit.md b/ERCS/eip-draft_token-permit.md index 33000a987bd..b922fe4f76f 100644 --- a/ERCS/eip-draft_token-permit.md +++ b/ERCS/eip-draft_token-permit.md @@ -1,6 +1,5 @@ --- -eip: -title: ERC-7204 Permit Extensions +title: ERC-7204 Permit Extension description: Off-chain permit flow for ERC-7204 token managers author: Xiang (@wenzhenxiang) discussions-to: https://ethereum-magicians.org/t/contract-wallet-management-token-permit-extensions/25985 @@ -8,8 +7,7 @@ status: Draft type: Standards Track category: ERC requires: 7204, 712 -created: 2025-03-22 -license: CC0-1.0 +created: 2025-10-28 --- ## Abstract From c949d93da0d30f44628734f9f8f243cbf2cd77ba Mon Sep 17 00:00:00 2001 From: xiang <308260887@qq.com> Date: Tue, 28 Oct 2025 15:18:40 +0800 Subject: [PATCH 03/16] Rename eip-draft_token-permit.md to eip-draft-token-permit.md --- ERCS/{eip-draft_token-permit.md => eip-draft-token-permit.md} | 0 1 file changed, 0 insertions(+), 0 deletions(-) rename ERCS/{eip-draft_token-permit.md => eip-draft-token-permit.md} (100%) diff --git a/ERCS/eip-draft_token-permit.md b/ERCS/eip-draft-token-permit.md similarity index 100% rename from ERCS/eip-draft_token-permit.md rename to ERCS/eip-draft-token-permit.md From f2f3937bf3c386330bdf4af0ded94b5bfc0f1a4c Mon Sep 17 00:00:00 2001 From: xiang <308260887@qq.com> Date: Tue, 28 Oct 2025 15:29:52 +0800 Subject: [PATCH 04/16] Rename eip-draft-token-permit.md to eip-erc-7204_permit_extension.md --- ...-erc-7204_permit_extension.mdeip-erc-7204_permit_extension.md} | 0 1 file changed, 0 insertions(+), 0 deletions(-) rename ERCS/{eip-draft-token-permit.md => eip-erc-7204_permit_extension.mdeip-erc-7204_permit_extension.md} (100%) diff --git a/ERCS/eip-draft-token-permit.md b/ERCS/eip-erc-7204_permit_extension.mdeip-erc-7204_permit_extension.md similarity index 100% rename from ERCS/eip-draft-token-permit.md rename to ERCS/eip-erc-7204_permit_extension.mdeip-erc-7204_permit_extension.md From c861be75d299870dd3660e0cf43c22639a790b47 Mon Sep 17 00:00:00 2001 From: xiang <308260887@qq.com> Date: Tue, 28 Oct 2025 15:32:01 +0800 Subject: [PATCH 05/16] Rename eip-erc-7204_permit_extension.mdeip-erc-7204_permit_extension.md to eip-erc-7204_permit_extension.md --- ...-7204_permit_extension.md => eip-erc-7204_permit_extension.md} | 0 1 file changed, 0 insertions(+), 0 deletions(-) rename ERCS/{eip-erc-7204_permit_extension.mdeip-erc-7204_permit_extension.md => eip-erc-7204_permit_extension.md} (100%) diff --git a/ERCS/eip-erc-7204_permit_extension.mdeip-erc-7204_permit_extension.md b/ERCS/eip-erc-7204_permit_extension.md similarity index 100% rename from ERCS/eip-erc-7204_permit_extension.mdeip-erc-7204_permit_extension.md rename to ERCS/eip-erc-7204_permit_extension.md From 687c5ae1a0ba19dac2acf68eb7ca3f2727094cfa Mon Sep 17 00:00:00 2001 From: xiang <308260887@qq.com> Date: Tue, 28 Oct 2025 16:08:53 +0800 Subject: [PATCH 06/16] Rename eip-erc-7204_permit_extension.md to erc-draft-management-token-permit-extension.md --- ...ension.md => erc-draft-management-token-permit-extension.md} | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) rename ERCS/{eip-erc-7204_permit_extension.md => erc-draft-management-token-permit-extension.md} (99%) diff --git a/ERCS/eip-erc-7204_permit_extension.md b/ERCS/erc-draft-management-token-permit-extension.md similarity index 99% rename from ERCS/eip-erc-7204_permit_extension.md rename to ERCS/erc-draft-management-token-permit-extension.md index b922fe4f76f..25f48ce22cd 100644 --- a/ERCS/eip-erc-7204_permit_extension.md +++ b/ERCS/erc-draft-management-token-permit-extension.md @@ -1,5 +1,5 @@ --- -title: ERC-7204 Permit Extension +title: Management Token Permit Extension description: Off-chain permit flow for ERC-7204 token managers author: Xiang (@wenzhenxiang) discussions-to: https://ethereum-magicians.org/t/contract-wallet-management-token-permit-extensions/25985 From 106d56b878a9d79454f9d3fbd26fecb32409d2c2 Mon Sep 17 00:00:00 2001 From: xiang <308260887@qq.com> Date: Tue, 28 Oct 2025 16:11:55 +0800 Subject: [PATCH 07/16] Rename erc-draft-management-token-permit-extension.md to draft-management-token-permit-extension.md --- ...it-extension.md => draft-management-token-permit-extension.md} | 0 1 file changed, 0 insertions(+), 0 deletions(-) rename ERCS/{erc-draft-management-token-permit-extension.md => draft-management-token-permit-extension.md} (100%) diff --git a/ERCS/erc-draft-management-token-permit-extension.md b/ERCS/draft-management-token-permit-extension.md similarity index 100% rename from ERCS/erc-draft-management-token-permit-extension.md rename to ERCS/draft-management-token-permit-extension.md From 0a9ec55b5d3f8582d78dfb6ca9a6fb707e2a1c15 Mon Sep 17 00:00:00 2001 From: xiang <308260887@qq.com> Date: Tue, 28 Oct 2025 16:23:40 +0800 Subject: [PATCH 08/16] Rename draft-management-token-permit-extension.md to eip-management_token_permit_extension.md --- ...rmit-extension.md => eip-management_token_permit_extension.md} | 0 1 file changed, 0 insertions(+), 0 deletions(-) rename ERCS/{draft-management-token-permit-extension.md => eip-management_token_permit_extension.md} (100%) diff --git a/ERCS/draft-management-token-permit-extension.md b/ERCS/eip-management_token_permit_extension.md similarity index 100% rename from ERCS/draft-management-token-permit-extension.md rename to ERCS/eip-management_token_permit_extension.md From 2157fc6707b6a0db52aebe049e63f178d0a3fe78 Mon Sep 17 00:00:00 2001 From: xiang <308260887@qq.com> Date: Tue, 28 Oct 2025 17:27:13 +0800 Subject: [PATCH 09/16] Rename eip-management_token_permit_extension.md to eip-draft_management_token_permit.md --- ...permit_extension.md => eip-draft_management_token_permit.md} | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) rename ERCS/{eip-management_token_permit_extension.md => eip-draft_management_token_permit.md} (99%) diff --git a/ERCS/eip-management_token_permit_extension.md b/ERCS/eip-draft_management_token_permit.md similarity index 99% rename from ERCS/eip-management_token_permit_extension.md rename to ERCS/eip-draft_management_token_permit.md index 25f48ce22cd..ac56ae7d2aa 100644 --- a/ERCS/eip-management_token_permit_extension.md +++ b/ERCS/eip-draft_management_token_permit.md @@ -1,5 +1,5 @@ --- -title: Management Token Permit Extension +title: Management Token Permit description: Off-chain permit flow for ERC-7204 token managers author: Xiang (@wenzhenxiang) discussions-to: https://ethereum-magicians.org/t/contract-wallet-management-token-permit-extensions/25985 From f00641d57cf1bdd498bf2b4e5b6d76995f1aceca Mon Sep 17 00:00:00 2001 From: xiang <308260887@qq.com> Date: Tue, 28 Oct 2025 17:51:51 +0800 Subject: [PATCH 10/16] Add new ERCS document erc-xx.md --- ERCS/{eip-draft_management_token_permit.md => erc-xx.md} | 0 1 file changed, 0 insertions(+), 0 deletions(-) rename ERCS/{eip-draft_management_token_permit.md => erc-xx.md} (100%) diff --git a/ERCS/eip-draft_management_token_permit.md b/ERCS/erc-xx.md similarity index 100% rename from ERCS/eip-draft_management_token_permit.md rename to ERCS/erc-xx.md From f2cc5744f26d67b90ee027467b6bd90de11ee319 Mon Sep 17 00:00:00 2001 From: xiang <308260887@qq.com> Date: Wed, 29 Oct 2025 10:21:00 +0800 Subject: [PATCH 11/16] Update ERCS/erc-xx.md Co-authored-by: Andrew B Coathup <28278242+abcoathup@users.noreply.github.com> --- ERCS/erc-xx.md | 1 + 1 file changed, 1 insertion(+) diff --git a/ERCS/erc-xx.md b/ERCS/erc-xx.md index ac56ae7d2aa..181600988c1 100644 --- a/ERCS/erc-xx.md +++ b/ERCS/erc-xx.md @@ -1,4 +1,5 @@ --- +eip: 8064 title: Management Token Permit description: Off-chain permit flow for ERC-7204 token managers author: Xiang (@wenzhenxiang) From a92b0b41b42133869ffef108688cb00e9c86c47d Mon Sep 17 00:00:00 2001 From: xiang <308260887@qq.com> Date: Wed, 29 Oct 2025 10:21:07 +0800 Subject: [PATCH 12/16] Update ERCS/erc-xx.md Co-authored-by: Andrew B Coathup <28278242+abcoathup@users.noreply.github.com> --- ERCS/erc-xx.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/ERCS/erc-xx.md b/ERCS/erc-xx.md index 181600988c1..0ed4d46c3f4 100644 --- a/ERCS/erc-xx.md +++ b/ERCS/erc-xx.md @@ -3,7 +3,7 @@ eip: 8064 title: Management Token Permit description: Off-chain permit flow for ERC-7204 token managers author: Xiang (@wenzhenxiang) -discussions-to: https://ethereum-magicians.org/t/contract-wallet-management-token-permit-extensions/25985 +discussions-to: https://ethereum-magicians.org/t/erc-8064-contract-wallet-management-token-permit-extensions/25985 status: Draft type: Standards Track category: ERC From 9294aff27ecfe9f31b7373cdcb0ab7df909d6b67 Mon Sep 17 00:00:00 2001 From: xiang <308260887@qq.com> Date: Wed, 29 Oct 2025 10:22:17 +0800 Subject: [PATCH 13/16] Add new ERCS document for erc-8064 --- ERCS/{erc-xx.md => erc-8064.md} | 0 1 file changed, 0 insertions(+), 0 deletions(-) rename ERCS/{erc-xx.md => erc-8064.md} (100%) diff --git a/ERCS/erc-xx.md b/ERCS/erc-8064.md similarity index 100% rename from ERCS/erc-xx.md rename to ERCS/erc-8064.md From dbaed29a4ef29c851cbefef76cc2316370e31b27 Mon Sep 17 00:00:00 2001 From: xiang <308260887@qq.com> Date: Wed, 29 Oct 2025 10:41:47 +0800 Subject: [PATCH 14/16] Update ERC-8064 with minor corrections and clarifications --- ERCS/erc-8064.md | 22 +++++++++++----------- 1 file changed, 11 insertions(+), 11 deletions(-) diff --git a/ERCS/erc-8064.md b/ERCS/erc-8064.md index 0ed4d46c3f4..ecbcdd2dad9 100644 --- a/ERCS/erc-8064.md +++ b/ERCS/erc-8064.md @@ -7,13 +7,13 @@ discussions-to: https://ethereum-magicians.org/t/erc-8064-contract-wallet-manage status: Draft type: Standards Track category: ERC -requires: 7204, 712 created: 2025-10-28 +requires: 712,7204 --- ## Abstract -This proposal extends [ERC-7204](https://eips.ethereum.org/ERCS/erc-7204) smart-wallet token managers with an off-chain authorization flow similar to `permit`. It introduces nonce-tracked `tokenTransferWithSig`, `tokenApproveWithSig`, and `tokenSetApprovalForAllWithSig` functions so that transfers, individual allowances, and global operators can all be delegated after a typed-data signature is presented by the wallet owner. The extension defines canonical EIP-712 schemas, nonce accounting, and execution requirements for compliant implementations. +This proposal extends [ERC-7204](./eip-7204) smart-wallet token managers with an off-chain authorization flow similar to `permit`. It introduces nonce-tracked `tokenTransferWithSig`, `tokenApproveWithSig`, and `tokenSetApprovalForAllWithSig` functions so that transfers, individual allowances, and global operators can all be delegated after a typed-data signature is presented by the wallet owner. The extension defines canonical [EIP-712](./eip-712) schemas, nonce accounting, and execution requirements for compliant implementations. ## Motivation @@ -34,7 +34,7 @@ The following additions are REQUIRED for an ERC-7204 compliant module that imple ### Interface ```solidity -interface IERC7204Permit { +interface IERC8064 { function tokenTransferNonce(address owner, address asset, address caller) external view returns (uint256); function tokenTransferWithSig( @@ -77,7 +77,7 @@ interface IERC7204Permit { - `tokenApproveWithSig` MUST mirror `tokenApprove`, using a nonce scoped to `(owner, asset, operator, caller)`. - `tokenSetApprovalForAllWithSig` MUST mirror `tokenApproveForAll`, using a nonce scoped to `(owner, caller)`. -Implementations MUST support wallets that validate signatures through [ERC-1271](https://eips.ethereum.org/EIPS/eip-1271). Wallets MAY wrap signatures but the module MUST unwrap them prior to verification. +Implementations MUST support wallets that validate signatures through [ERC-1271](./eip-1271). Wallets MAY wrap signatures but the module MUST unwrap them prior to verification. ### Typed Data @@ -129,12 +129,6 @@ Existing ERC-7204 modules remain valid. Clients SHOULD feature-detect permit sup A reference implementation will be published after community review. It validates the typed-data digest, increments the scoped nonce before external calls, and delegates to existing ERC-7204 functions so that storage and events remain unchanged. -## Security Considerations - -- Nonces MUST increment even if downstream token interactions revert. -- Wallet owners SHOULD bound permit deadlines to reduce the risk of long-lived signatures. -- Relayers MUST ensure their transaction sender equals the signed `caller` to avoid wasted gas. - ## Test Cases A public test suite will accompany the reference implementation. Implementers are encouraged to cover: @@ -144,6 +138,12 @@ A public test suite will accompany the reference implementation. Implementers ar - nonce increment behaviour when token interactions revert, - replay protection across all nonce scopes. +## Security Considerations + +- Nonces MUST increment even if downstream token interactions revert. +- Wallet owners SHOULD bound permit deadlines to reduce the risk of long-lived signatures. +- Relayers MUST ensure their transaction sender equals the signed `caller` to avoid wasted gas. + ## Copyright -Copyright and related rights waived via [CC0-1.0](https://creativecommons.org/publicdomain/zero/1.0/). +Copyright and related rights waived via [CC0](../LICENSE.md). From d60f8035eac1b84982edd829bd1c6094624fb737 Mon Sep 17 00:00:00 2001 From: xiang <308260887@qq.com> Date: Wed, 29 Oct 2025 10:44:51 +0800 Subject: [PATCH 15/16] Fix formatting and enhance references in erc-8064.md Updated formatting and added references in the document. --- ERCS/erc-8064.md | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/ERCS/erc-8064.md b/ERCS/erc-8064.md index ecbcdd2dad9..9989c532a87 100644 --- a/ERCS/erc-8064.md +++ b/ERCS/erc-8064.md @@ -8,7 +8,7 @@ status: Draft type: Standards Track category: ERC created: 2025-10-28 -requires: 712,7204 +requires: 712, 7204 --- ## Abstract @@ -123,11 +123,7 @@ Wallets MAY offer helper wrappers, but they MUST NOT alter the semantics describ ## Backwards Compatibility -Existing ERC-7204 modules remain valid. Clients SHOULD feature-detect permit support by checking for `IERC7204Permit` via ERC-165 or probing the new function selectors. - -## Reference Implementation - -A reference implementation will be published after community review. It validates the typed-data digest, increments the scoped nonce before external calls, and delegates to existing ERC-7204 functions so that storage and events remain unchanged. +Existing ERC-7204 modules remain valid. Clients SHOULD feature-detect permit support by checking for `IERC7204Permit` via [ERC-165](./erc-165) or probing the new function selectors. ## Test Cases @@ -138,6 +134,10 @@ A public test suite will accompany the reference implementation. Implementers ar - nonce increment behaviour when token interactions revert, - replay protection across all nonce scopes. +## Reference Implementation + +A reference implementation will be published after community review. It validates the typed-data digest, increments the scoped nonce before external calls, and delegates to existing ERC-7204 functions so that storage and events remain unchanged. + ## Security Considerations - Nonces MUST increment even if downstream token interactions revert. From fbcdb61c26c7c035a90b5cf93d123120aa240a6c Mon Sep 17 00:00:00 2001 From: xiang <308260887@qq.com> Date: Wed, 29 Oct 2025 11:32:46 +0800 Subject: [PATCH 16/16] Fix markdown links in erc-8064.md --- ERCS/erc-8064.md | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/ERCS/erc-8064.md b/ERCS/erc-8064.md index 9989c532a87..ffaaaf8060b 100644 --- a/ERCS/erc-8064.md +++ b/ERCS/erc-8064.md @@ -13,7 +13,7 @@ requires: 712, 7204 ## Abstract -This proposal extends [ERC-7204](./eip-7204) smart-wallet token managers with an off-chain authorization flow similar to `permit`. It introduces nonce-tracked `tokenTransferWithSig`, `tokenApproveWithSig`, and `tokenSetApprovalForAllWithSig` functions so that transfers, individual allowances, and global operators can all be delegated after a typed-data signature is presented by the wallet owner. The extension defines canonical [EIP-712](./eip-712) schemas, nonce accounting, and execution requirements for compliant implementations. +This proposal extends [ERC-7204](./eip-7204.md) smart-wallet token managers with an off-chain authorization flow similar to `permit`. It introduces nonce-tracked `tokenTransferWithSig`, `tokenApproveWithSig`, and `tokenSetApprovalForAllWithSig` functions so that transfers, individual allowances, and global operators can all be delegated after a typed-data signature is presented by the wallet owner. The extension defines canonical [EIP-712](./eip-712.md) schemas, nonce accounting, and execution requirements for compliant implementations. ## Motivation @@ -77,7 +77,7 @@ interface IERC8064 { - `tokenApproveWithSig` MUST mirror `tokenApprove`, using a nonce scoped to `(owner, asset, operator, caller)`. - `tokenSetApprovalForAllWithSig` MUST mirror `tokenApproveForAll`, using a nonce scoped to `(owner, caller)`. -Implementations MUST support wallets that validate signatures through [ERC-1271](./eip-1271). Wallets MAY wrap signatures but the module MUST unwrap them prior to verification. +Implementations MUST support wallets that validate signatures through [ERC-1271](./eip-1271.md). Wallets MAY wrap signatures but the module MUST unwrap them prior to verification. ### Typed Data @@ -123,7 +123,7 @@ Wallets MAY offer helper wrappers, but they MUST NOT alter the semantics describ ## Backwards Compatibility -Existing ERC-7204 modules remain valid. Clients SHOULD feature-detect permit support by checking for `IERC7204Permit` via [ERC-165](./erc-165) or probing the new function selectors. +Existing ERC-7204 modules remain valid. Clients SHOULD feature-detect permit support by checking for `IERC7204Permit` via [ERC-165](./eip-165.md) or probing the new function selectors. ## Test Cases