From 614dfc96bacaf5997d1d04192ebec38391caaca0 Mon Sep 17 00:00:00 2001 From: Sam Wilson <57262657+SamWilsn@users.noreply.github.com> Date: Sun, 14 Apr 2024 09:48:49 -0400 Subject: [PATCH] Update EIP-3074: explain `nonce` and `chainId` in rationale Merged by EIP-Bot. --- EIPS/eip-3074.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/EIPS/eip-3074.md b/EIPS/eip-3074.md index 7ab63a6f5aa2b5..8c301fc5105083 100644 --- a/EIPS/eip-3074.md +++ b/EIPS/eip-3074.md @@ -229,7 +229,7 @@ More logic can be implemented around the `AUTHCALL` instruction, giving more con ### What to Sign? -As originally written, this proposal specified a precompile with storage to track nonces. Since a precompile with storage is unprecedented, a revision moved replay protection into the invoker contract, necessitating a certain level of user trust in the invoker. Expanding on this idea of trusted invokers, the other signed fields were eventually eliminated, one by one, until only `invoker` and `commit` remained. +As originally written, this proposal specified a precompile with storage to track nonces. Since a precompile with storage is unprecedented, a revision moved replay protection into the invoker contract, necessitating a certain level of user trust in the invoker. Expanding on this idea of trusted invokers, the other signed fields were eventually eliminated, one by one, until only `invoker` and `commit` remained. To appease concerns about cross-chain replay attacks and irrevocable signatures, the `chainId` and `nonce` fields returned to the signed message. The `invoker` binds a particular signed message to a single invoker. If invoker was not part of the message, any invoker could reuse the signature to completely compromise the EOA. This allows users to trust that their message will be validated as they expect, particularly the values committed to in `commit`.