|
| 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