Skip to content
Open
Changes from 1 commit
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
70 changes: 70 additions & 0 deletions proposals/00008-personal-sign-for-eip-7702.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,70 @@
---
number: '00008'
title: `personal_sign` Authorization for EIP-7702
authors: Kingter Wang (kingter@piplabs.xyz)
sponsors: Leo Chen (leo@piplabs.xyz)
created: 2025-12-22
type: Standard
status: Accepted
supersedes:
superseded-by:
extends:
---

## Summary

This SIP formalizes support on the Story chain for EIP-7702 authorization signatures produced via `personal_sign`.

Check failure on line 16 in proposals/00008-personal-sign-for-eip-7702.md

View workflow job for this annotation

GitHub Actions / Markdown Linter

Line length [Expected: 80; Actual: 114]

proposals/00008-personal-sign-for-eip-7702.md:16:81 MD013/line-length Line length [Expected: 80; Actual: 114]

The change expands wallet compatibility for EIP-7702 type `0x04` transactions while preserving the existing

Check failure on line 18 in proposals/00008-personal-sign-for-eip-7702.md

View workflow job for this annotation

GitHub Actions / Markdown Linter

Line length [Expected: 80; Actual: 107]

proposals/00008-personal-sign-for-eip-7702.md:18:81 MD013/line-length Line length [Expected: 80; Actual: 107]
authorization semantics and security guarantees.


[forum discussion link](https://forum.story.foundation/t/proposal-support-personal-sign-for-eip-7702-authorization-signatures/37328)

## Motivation

EIP-7702 relies on off-chain authorization signatures to enable delegated execution.

In practice, many widely used wallets—especially modern browser wallets—do not support `eth_sign`,

Check failure on line 28 in proposals/00008-personal-sign-for-eip-7702.md

View workflow job for this annotation

GitHub Actions / Markdown Linter

Line length [Expected: 80; Actual: 99]

proposals/00008-personal-sign-for-eip-7702.md:28:81 MD013/line-length Line length [Expected: 80; Actual: 99]
but do support `personal_sign`. Without accepting `personal_sign`-based authorizations,

Check failure on line 29 in proposals/00008-personal-sign-for-eip-7702.md

View workflow job for this annotation

GitHub Actions / Markdown Linter

Line length [Expected: 80; Actual: 88]

proposals/00008-personal-sign-for-eip-7702.md:29:81 MD013/line-length Line length [Expected: 80; Actual: 88]
these wallets cannot participate in EIP-7702 flows on Story.

This SIP ensures that EIP-7702 remains usable with real-world wallet infrastructure.

## Proposal

The Story execution client SHOULD accept EIP-7702 authorization signatures generated via `personal_sign`.

Check failure on line 36 in proposals/00008-personal-sign-for-eip-7702.md

View workflow job for this annotation

GitHub Actions / Markdown Linter

Line length [Expected: 80; Actual: 105]

proposals/00008-personal-sign-for-eip-7702.md:36:81 MD013/line-length Line length [Expected: 80; Actual: 105]

Such signatures MUST represent a canonical, human-readable authorization message that unambiguously binds:

Check failure on line 38 in proposals/00008-personal-sign-for-eip-7702.md

View workflow job for this annotation

GitHub Actions / Markdown Linter

Line length [Expected: 80; Actual: 106]

proposals/00008-personal-sign-for-eip-7702.md:38:81 MD013/line-length Line length [Expected: 80; Actual: 106]

- the chain ID
- the authorized implementation address
- the authorization nonce

The execution client MUST treat `personal_sign` and `eth_sign` authorizations as semantically equivalent once verified.

Check failure on line 44 in proposals/00008-personal-sign-for-eip-7702.md

View workflow job for this annotation

GitHub Actions / Markdown Linter

Line length [Expected: 80; Actual: 119]

proposals/00008-personal-sign-for-eip-7702.md:44:81 MD013/line-length Line length [Expected: 80; Actual: 119]

Transactions containing `personal_sign` authorizations includes an explicit signaling

Check failure on line 46 in proposals/00008-personal-sign-for-eip-7702.md

View workflow job for this annotation

GitHub Actions / Markdown Linter

Line length [Expected: 80; Actual: 86]

proposals/00008-personal-sign-for-eip-7702.md:46:81 MD013/line-length Line length [Expected: 80; Actual: 86]
Comment thread
kingster-will marked this conversation as resolved.
Outdated
mechanism allowing the execution client to distinguish the signature type during verification.

Check failure on line 47 in proposals/00008-personal-sign-for-eip-7702.md

View workflow job for this annotation

GitHub Actions / Markdown Linter

Line length [Expected: 80; Actual: 94]

proposals/00008-personal-sign-for-eip-7702.md:47:81 MD013/line-length Line length [Expected: 80; Actual: 94]
Comment thread
kingster-will marked this conversation as resolved.
Outdated


### Drawbacks

N/A

### Alternatives Considered

N/A
Comment thread
kingster-will marked this conversation as resolved.

### User Impact

- Enables EIP-7702 usage for modern browser wallets
- Improves onboarding and developer experience
- Requires no changes to user transaction flows
- Does not affect existing users or transactions

## Implementation Considerations

- The change is limited to authorization verification logic in the execution client
- No changes to transaction structure or consensus rules
- Backward compatibility is preserved
- Message construction details are considered implementation-specific
Loading