Skip to content

Commit 5f49c30

Browse files
authored
Sequence v3 RC 4 (#82)
* Deploy p256 verifier for Sequence v3 * Use arachnid template * Do not kill anything that says anvil * Patch bad guard response * Update README * Add p256 verifier verification * Use build info creation code * Undo guard patch patch * Add Sequence v3 rc4 * Update readme
1 parent 5707402 commit 5f49c30

File tree

8 files changed

+290
-27
lines changed

8 files changed

+290
-27
lines changed

README.md

Lines changed: 10 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -201,15 +201,16 @@ The following is a list of contracts that are deployed by this script.
201201
│ proxy-hook │ WalletProxyHook │ 0x1f56dbAD5e8319F0DE9a323E24A31b5077dEB1a4 │
202202
│ SEQ-0001 │ SequenceMainModuleUpgradableDuoV1 │ 0x94Fb1E5196B4eE5A1c9ad737a505CE12bAe7Ca85 │
203203
│ SEQ-0001 │ SequenceMainModuleUpgradableDuoV2 │ 0x4f8ce847174b32cBe21b3887Be894e0DEBC28952 │
204-
│ sequence_v3/rc_3 │ GuestV3 │ 0x0000000000601fcA38f0cCA649453F6739436d6C │
205-
│ sequence_v3/rc_3 │ PasskeysV3 │ 0x0000000000dc2d96870dc108c5E15570B715DFD2 │
206-
│ sequence_v3/rc_3 │ RecoveryV3 │ 0x0000000000213697bCA95E7373787a40858a51C7 │
207-
│ sequence_v3/rc_3 │ SequenceV3/rc3FactoryV3 │ 0x00000000000018A77519fcCCa060c2537c9D6d3F │
208-
│ sequence_v3/rc_3 │ SessionsV3 │ 0x0000000000CC58810c33F3a0D78aA1Ed80FaDcD8 │
209-
│ sequence_v3/rc_3 │ Stage1Module433707V3 │ 0x0000000000005A02E3218e820EA45102F84A35C7 │
210-
│ sequence_v3/rc_3 │ Stage1ModuleV3 │ 0x00000000000084fA81809Dd337311297C5594d62 │
211-
│ sequence_v3/rc_3 │ Stage2Module.valueV3 │ 0x7438718F9E4b9B834e305A620EEeCf2B9E6eBE79 │
212-
│ sequence_v3/rc_3 │ Stage2Module433707.valueV3 │ 0x7706aaC0cc2C42C01CE17136F7475b0E46F2ABA1 │
204+
│ sequence_v3/rc_4 │ Erc4337FactoryWrapperV3 │ 0x00000000000003c0C955C8AE06FB13cDd19a7ac6 │
205+
│ sequence_v3/rc_4 │ GuestV3 │ 0x0000000000601fcA38f0cCA649453F6739436d6C │
206+
│ sequence_v3/rc_4 │ PasskeysV3 │ 0x0000000000dc2d96870dc108c5E15570B715DFD2 │
207+
│ sequence_v3/rc_4 │ RecoveryV3 │ 0x0000000000213697bCA95E7373787a40858a51C7 │
208+
│ sequence_v3/rc_4 │ SequenceV3/rc4FactoryV3 │ 0x00000000000018A77519fcCCa060c2537c9D6d3F │
209+
│ sequence_v3/rc_4 │ SessionsV3 │ 0x0000000000007b93614790a8222257b0b19f5712 │
210+
│ sequence_v3/rc_4 │ Stage1Module433707V3 │ 0x0000000000000379Bca7eb0a96fc539606745b73 │
211+
│ sequence_v3/rc_4 │ Stage1ModuleV3 │ 0x00000000000077AD573937a9b09bB2b8212fC808 │
212+
│ sequence_v3/rc_4 │ Stage2Module.valueV3 │ 0x6B251E9bB67d1FD297137b8f901A6Fac7E802544 │
213+
│ sequence_v3/rc_4 │ Stage2Module433707.valueV3 │ 0xb7d5B9402f0051bb6053af182b4Ae242EC280ef3 │
213214
│ sequence-v1 │ GuestModuleV1 │ 0x02390F3E6E5FD1C6786CB78FD3027C117a9955A7 │
214215
│ sequence-v1 │ MainModuleUpgradeableV1 │ 0x7EFE6cE415956c5f80C6530cC6cc81b4808F6118 │
215216
│ sequence-v1 │ MainModuleV1 │ 0xd01F11855bCcb95f88D7A48492F66410d4637313 │

constants.yaml

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -7,4 +7,5 @@ constants:
77
salt-two: "0x0000000000000000000000000000000000000000000000000000000000000002"
88
developer-multisig-01: "0x007a47e6BF40C1e0ed5c01aE42fDC75879140bc4"
99
entrypoint-4337-07: "0x0000000071727de22e5e9d8baf0edac6f37da032"
10+
entrypoint-4337-07-sender-creator: "0xEFC2c1444eBCC4Db75e7613d20C6a62fF67A167C"
1011
era-evm-predeploy-manager: "0x0000000000000000000000000000000000008014"

jobs/sequence_v3/build-info/rc-4/erc4337-factory-wrapper.json

Lines changed: 1 addition & 0 deletions
Large diffs are not rendered by default.

jobs/sequence_v3/build-info/rc-4/sessions.json

Lines changed: 1 addition & 0 deletions
Large diffs are not rendered by default.

jobs/sequence_v3/build-info/rc-4/stage1.json

Lines changed: 1 addition & 0 deletions
Large diffs are not rendered by default.

jobs/sequence_v3/rc-3.yaml

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,8 @@ version: "1"
33
description: "Sequence v3 contracts (release candidate 3) (commit 49559600a79258293a41e956f9b239e64bf135a6) (evm paris)"
44
depends_on: ["p256-verifier"]
55

6+
deprecated: true
7+
68
actions:
79
- name: "factory"
810
template: "erc-2470"

jobs/sequence_v3/rc-4.yaml

Lines changed: 256 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,256 @@
1+
name: "sequence_v3/rc_4"
2+
version: "1"
3+
description: "Sequence v3 contracts (release candidate 3) (commit fa0fae3de26e189cf4f8a554b2d72f0a35297bc0) (evm paris)"
4+
depends_on: ["p256-verifier"]
5+
6+
7+
# Changelog since rc-3
8+
#
9+
# - ERC4337FactoryWrapper
10+
# - Added new ERC4337FactoryWrapper contract wrapping Factory:
11+
# - deploy() gated by a fixed senderCreator address.
12+
# - Precomputes the CREATE2 wallet address and returns it if already deployed,
13+
# otherwise forwards to Factory.deploy().
14+
15+
# - ERC4337v07
16+
# - validateUserOp() now calls isValidSignature(userOpHash, userOp.signature)
17+
# directly instead of this.isValidSignature(...).
18+
#
19+
# - BaseAuth
20+
# - Static-signature branch now sets _payload.noChainId from signatureFlag
21+
# before computing opHash.
22+
# - Updated BaseSig.recover(...) calls to use BaseSig.RecoverMode.Initial.
23+
# - isValidSignature(bytes32,bytes) visibility changed from external to public.
24+
#
25+
# - BaseSig
26+
# - Introduced RecoverMode enum (Initial / UseProvidedCheckpointer / SkipSnapshotRead).
27+
# - recover(...) now takes RecoverMode instead of a boolean ignoreCheckpointer.
28+
# - recoverChained(...) updated to pass the appropriate RecoverMode to nested recover() calls.
29+
# - Added ChainedSignatureNestedInChainedSignature error and revert if a chained
30+
# signature is nested inside another chained signature.
31+
#
32+
# - Sessions (SessionManager / SessionSig)
33+
# - SessionSig.recoverSignature(...) now takes the wallet address as first parameter.
34+
# - Per-call signature hash now uses:
35+
# - payloadHash = Payload.hashFor(payload, wallet)
36+
# - callHash = keccak256(abi.encodePacked(payloadHash, callIdx))
37+
# - Exposed new helper hashPayloadCallIdx(wallet, payload, callIdx) and private
38+
# _hashPayloadHashCallIdx(...); removed hashCallWithReplayProtection(...).
39+
# - SessionManager now passes wallet = msg.sender into SessionSig.recoverSignature(...).
40+
#
41+
# - P256
42+
# - Removed: P256VerificationFailed error declaration, N constant,
43+
# verifySignatureAllowMalleability(...), normalized(...),
44+
# tryDecodePoint(...), tryDecodePointCalldata(...).
45+
# - Library API now consists of verifySignature(...) plus VERIFIER,
46+
# RIP_PRECOMPILE and _HALF_N constants.
47+
#
48+
# - Misc cleanups
49+
# - Removed unused imports:
50+
# - LibBytes from Guest, SessionManager, ExplicitSessionManager.
51+
# - Wallet from Stage2Auth.
52+
# - Payload from ICheckpointer.
53+
# - Removed unused InvalidSignatureType error from Stage1Auth.
54+
55+
56+
actions:
57+
# Remains the same as rc_3
58+
- name: "factory"
59+
template: "erc-2470"
60+
arguments:
61+
salt: "0xd4d338c5d1f6a77bd065d147e9cacd6ac7ed4c6e361a26baf7896a465ed661b4"
62+
creationCode: "{{Contract(./build-info/rc-3/factory.json:Factory).creationCode}}"
63+
output: true
64+
65+
- name: "erc4337-factory-wrapper"
66+
template: "erc-2470"
67+
arguments:
68+
salt: "0x3a947b2bab0180f81253e436c02f6aae86faa744604f17f444e193b47c4bc67a"
69+
creationCode:
70+
type: "constructor-encode"
71+
arguments:
72+
creationCode: "{{Contract(./build-info/rc-4/erc4337-factory-wrapper.json:ERC4337FactoryWrapper).creationCode}}"
73+
types: ["address", "address"]
74+
values: ["{{factory.address}}", "{{entrypoint-4337-07-sender-creator}}"]
75+
output: true
76+
77+
- name: "stage-1-module"
78+
template: "erc-2470"
79+
arguments:
80+
salt: "0xb52f06e3d7f1e22467d8eaa6fe9f9ac69b1cd7029afa654a7c0cf06c7f468bd8"
81+
creationCode:
82+
type: "constructor-encode"
83+
arguments:
84+
creationCode: "{{Contract(./build-info/rc-4/stage1.json:Stage1Module).creationCode}}"
85+
types: ["address", "address"]
86+
values: ["{{factory.address}}", "{{address-zero}}"]
87+
output: true
88+
89+
- name: "stage-1-module-4337-07"
90+
template: "erc-2470"
91+
arguments:
92+
salt: "0x5a071f323c89c67cca81a9d660abd0f3bfd40fd86bd56b22232d80d722698bb3"
93+
creationCode:
94+
type: "constructor-encode"
95+
arguments:
96+
creationCode: "{{Contract(./build-info/rc-4/stage1.json:Stage1Module).creationCode}}"
97+
types: ["address", "address"]
98+
values: ["{{factory.address}}", "{{entrypoint-4337-07}}"]
99+
output: true
100+
101+
- name: "stage-2-module"
102+
depends_on: ["stage-1-module"]
103+
template: "static"
104+
arguments:
105+
value:
106+
type: "call"
107+
arguments:
108+
to: "{{stage-1-module.address}}"
109+
signature: "STAGE_2_IMPLEMENTATION() returns (address)"
110+
values: []
111+
output: true
112+
113+
- name: "stage-2-module-4337-07"
114+
depends_on: ["stage-1-module-4337-07"]
115+
template: "static"
116+
arguments:
117+
value:
118+
type: "call"
119+
arguments:
120+
to: "{{stage-1-module-4337-07.address}}"
121+
signature: "STAGE_2_IMPLEMENTATION() returns (address)"
122+
values: []
123+
output: true
124+
125+
# Remains the same as rc_3
126+
- name: "guest"
127+
template: "erc-2470"
128+
arguments:
129+
salt: "0x5c11a7895a309fa08b06f53784721316f1c7615a976337cd3b9b6251cd25ab9f"
130+
creationCode: "{{Contract(./build-info/rc-3/guest.json:Guest).creationCode}}"
131+
output: true
132+
133+
# Remains the same as rc_3
134+
- name: "passkeys"
135+
template: "erc-2470"
136+
arguments:
137+
salt: "0xa7a24f9823fbc7cd2679235e68fb31422123290d6fb5e2dd8bd697f8d059e179"
138+
creationCode: "{{Contract(./build-info/rc-3/passkeys.json:Passkeys).creationCode}}"
139+
output: true
140+
141+
# Remains the same as rc_3
142+
- name: "recovery"
143+
template: "erc-2470"
144+
arguments:
145+
salt: "0xbf540d938665f3478571647ba4c25eacce75512e9d27fee5d9871a25ba6c43c0"
146+
creationCode: "{{Contract(./build-info/rc-3/recovery.json:Recovery).creationCode}}"
147+
output: true
148+
149+
- name: "sessions"
150+
template: "erc-2470"
151+
arguments:
152+
salt: "0xa30c855ee4f1c7a731235837f23bf85ae0940d396f60ef810cfbfbfdd87389f1"
153+
creationCode: "{{Contract(./build-info/rc-4/sessions.json:SessionManager).creationCode}}"
154+
output: true
155+
156+
- name: "verify-factory"
157+
type: "verify-contract"
158+
depends_on: ["factory"]
159+
arguments:
160+
address: "{{factory.address}}"
161+
contract: "{{Contract(./build-info/rc-3/factory.json:Factory)}}"
162+
output: false
163+
164+
- name: "verify-stage-1-module"
165+
type: "verify-contract"
166+
depends_on: ["stage-1-module"]
167+
arguments:
168+
address: "{{stage-1-module.address}}"
169+
contract: "{{Contract(./build-info/rc-4/stage1.json:Stage1Module)}}"
170+
constructorArguments:
171+
type: "constructor-encode"
172+
arguments:
173+
types: ["address", "address"]
174+
values: ["{{factory.address}}", "{{address-zero}}"]
175+
output: false
176+
177+
- name: "verify-stage-2-module"
178+
type: "verify-contract"
179+
depends_on: ["stage-1-module"]
180+
arguments:
181+
address:
182+
type: "call"
183+
arguments:
184+
to: "{{stage-1-module.address}}"
185+
signature: "STAGE_2_IMPLEMENTATION() returns (address)"
186+
values: []
187+
contract: "{{Contract(./build-info/rc-4/stage1.json:Stage2Module)}}"
188+
constructorArguments:
189+
type: "constructor-encode"
190+
arguments:
191+
types: ["address"]
192+
values: ["{{address-zero}}"]
193+
output: false
194+
195+
- name: "verify-stage-1-module-4337-07"
196+
type: "verify-contract"
197+
depends_on: ["stage-1-module-4337-07"]
198+
arguments:
199+
address: "{{stage-1-module-4337-07.address}}"
200+
contract: "{{Contract(./build-info/rc-4/stage1.json:Stage1Module)}}"
201+
constructorArguments:
202+
type: "constructor-encode"
203+
arguments:
204+
types: ["address", "address"]
205+
values: ["{{factory.address}}", "{{entrypoint-4337-07}}"]
206+
output: false
207+
208+
- name: "verify-stage-2-module-4337-07"
209+
type: "verify-contract"
210+
depends_on: ["stage-1-module-4337-07"]
211+
arguments:
212+
address:
213+
type: "call"
214+
arguments:
215+
to: "{{stage-1-module-4337-07.address}}"
216+
signature: "STAGE_2_IMPLEMENTATION() returns (address)"
217+
values: []
218+
contract: "{{Contract(./build-info/rc-4/stage1.json:Stage2Module)}}"
219+
constructorArguments:
220+
type: "constructor-encode"
221+
arguments:
222+
types: ["address"]
223+
values: ["{{entrypoint-4337-07}}"]
224+
output: false
225+
226+
- name: "verify-guest"
227+
type: "verify-contract"
228+
depends_on: ["guest"]
229+
arguments:
230+
address: "{{guest.address}}"
231+
contract: "{{Contract(./build-info/rc-3/guest.json:Guest)}}"
232+
output: false
233+
234+
- name: "verify-passkeys"
235+
type: "verify-contract"
236+
depends_on: ["passkeys"]
237+
arguments:
238+
address: "{{passkeys.address}}"
239+
contract: "{{Contract(./build-info/rc-3/passkeys.json:Passkeys)}}"
240+
output: false
241+
242+
- name: "verify-recovery"
243+
type: "verify-contract"
244+
depends_on: ["recovery"]
245+
arguments:
246+
address: "{{recovery.address}}"
247+
contract: "{{Contract(./build-info/rc-3/recovery.json:Recovery)}}"
248+
output: false
249+
250+
- name: "verify-sessions"
251+
type: "verify-contract"
252+
depends_on: ["sessions"]
253+
arguments:
254+
address: "{{sessions.address}}"
255+
contract: "{{Contract(./build-info/rc-4/sessions.json:SessionManager)}}"
256+
output: false

0 commit comments

Comments
 (0)