Skip to content

Commit

Permalink
Update EIP-3074: explain nonce and chainId in rationale
Browse files Browse the repository at this point in the history
Merged by EIP-Bot.
  • Loading branch information
SamWilsn authored Apr 14, 2024
1 parent 560ea93 commit 614dfc9
Showing 1 changed file with 1 addition and 1 deletion.
2 changes: 1 addition & 1 deletion EIPS/eip-3074.md
Original file line number Diff line number Diff line change
Expand Up @@ -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`.

Expand Down

0 comments on commit 614dfc9

Please sign in to comment.