Signature replay — a valid signature used twice, or on the wrong chain
Signatures without a nonce, domain separator, or chain id can be replayed against the same contract twice or against its twin on another chain — the class EIP-712 exists to close.
Not yet scoped.
Why
The PoC replays a signed permit against a second deployment to show the cross-chain replay, then adds the domain separator that binds the signature to one contract and chain.
How it works
Not yet built.
Where it lands in Jayverse
Wallet: bind every signed message to one contract and one chain id. Session-key grants and permits the embedded wallet produces need an EIP-712 domain separator, checked in simulate-before-sign so a replay attempt is visible before signing.
Bridge/Token: test cross-deployment replay across Devnet and Sepolia. Add a test that replays a signed permit across the bridge's two chains to confirm the domain separator actually blocks it.
Auditor: check every Rabbit and Wallet signing path for nonce, domain separator and chain id. Make it a standing checklist item rather than a one-time review, since this is the exact class EIP-712 exists to close.
Key expressions
Words and phrases from this page worth keeping, with the Korean meaning and the sentence they come from.
Expression
뜻 · 쓰이는 자리
replay (a signature)
서명을 재사용(재전송)하다 · 유효한 서명을 다시 써서 두 번 실행시키는 공격을 가리킴. "can be replayed against the same contract twice"
domain separator
도메인 구분자 · 서명을 특정 컨트랙트·체인에만 유효하도록 묶는 EIP-712 요소. "adds the domain separator that binds the signature"
close the class (of bugs)
(버그·공격) 부류를 아예 막아버리다 · 특정 표준이 존재하는 이유를 설명할 때. "the class EIP-712 exists to close"
bind (to one contract)
(서명을 특정 대상에) 묶다·결속시키다 · 서명이 다른 컨트랙트에서는 무효가 되게 하는 동사. "binds the signature to one contract and chain"
twin (on another chain)
(동일한 구조의) 쌍둥이(복제본) · 다른 체인에 배포된 같은 컨트랙트를 가리키는 비유. "against its twin on another chain"
EIP-712
구조화 데이터 서명 표준(Ethereum typed structured-data signing standard) · 도메인 구분자로 서명을 특정 컨트랙트·체인에 묶어 재사용 공격을 막는 표준. "the class EIP-712 exists to close"