ox 1.0.0-beta.0 → 1.0.0-beta.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (66) hide show
  1. package/dist/core/Provider.d.ts +7 -7
  2. package/dist/core/Provider.d.ts.map +1 -1
  3. package/dist/core/RpcSchema.d.ts +50 -0
  4. package/dist/core/RpcSchema.d.ts.map +1 -1
  5. package/dist/core/RpcSchema.js.map +1 -1
  6. package/dist/core/RpcTransport.d.ts +2 -2
  7. package/dist/core/RpcTransport.d.ts.map +1 -1
  8. package/dist/core/RpcTransport.js.map +1 -1
  9. package/dist/core/internal/rpcTransport.d.ts +1 -1
  10. package/dist/core/internal/rpcTransport.d.ts.map +1 -1
  11. package/dist/index.d.ts +2 -0
  12. package/dist/index.d.ts.map +1 -1
  13. package/dist/index.js +2 -0
  14. package/dist/index.js.map +1 -1
  15. package/dist/tempo/MultisigConfig.d.ts +79 -16
  16. package/dist/tempo/MultisigConfig.d.ts.map +1 -1
  17. package/dist/tempo/MultisigConfig.js +69 -11
  18. package/dist/tempo/MultisigConfig.js.map +1 -1
  19. package/dist/tempo/SignatureEnvelope.d.ts +83 -19
  20. package/dist/tempo/SignatureEnvelope.d.ts.map +1 -1
  21. package/dist/tempo/SignatureEnvelope.js +99 -30
  22. package/dist/tempo/SignatureEnvelope.js.map +1 -1
  23. package/dist/tempo/index.d.ts +2 -2
  24. package/dist/tempo/index.js +2 -2
  25. package/dist/zod/RpcSchema.d.ts +144 -25
  26. package/dist/zod/RpcSchema.d.ts.map +1 -1
  27. package/dist/zod/RpcSchema.js +85 -13
  28. package/dist/zod/RpcSchema.js.map +1 -1
  29. package/dist/zod/internal/rpcSchemas/Eth.d.ts +12 -12
  30. package/dist/zod/internal/rpcSchemas/Eth.d.ts.map +1 -1
  31. package/dist/zod/internal/rpcSchemas/Eth.js +14 -12
  32. package/dist/zod/internal/rpcSchemas/Eth.js.map +1 -1
  33. package/dist/zod/tempo/AuthorizationTempo.d.ts +6 -6
  34. package/dist/zod/tempo/KeyAuthorization.d.ts +3 -3
  35. package/dist/zod/tempo/RpcSchemaTempo.d.ts +6 -6
  36. package/dist/zod/tempo/SignatureEnvelope.d.ts +3 -3
  37. package/dist/zod/tempo/SignatureEnvelope.js +1 -1
  38. package/dist/zod/tempo/SignatureEnvelope.js.map +1 -1
  39. package/dist/zod/tempo/Transaction.d.ts +6 -6
  40. package/dist/zod/tempo/TransactionRequest.d.ts +6 -6
  41. package/dist/zod/tempo/TxEnvelopeTempo.d.ts +9 -9
  42. package/dist/zod/tempo/ZoneRpcAuthentication.d.ts +3 -3
  43. package/package.json +1 -1
  44. package/src/CHANGELOG.md +6 -0
  45. package/src/core/Provider.ts +7 -7
  46. package/src/core/RpcSchema.ts +60 -0
  47. package/src/core/RpcTransport.ts +7 -4
  48. package/src/core/_test/Provider.test-d.ts +21 -0
  49. package/src/core/_test/RpcSchema.test-d.ts +87 -1
  50. package/src/core/_test/RpcTransport.test-d.ts +43 -0
  51. package/src/core/internal/rpcTransport.ts +1 -1
  52. package/src/index.ts +2 -0
  53. package/src/tempo/MultisigConfig.test.ts +21 -12
  54. package/src/tempo/MultisigConfig.ts +103 -18
  55. package/src/tempo/SignatureEnvelope.test.ts +124 -26
  56. package/src/tempo/SignatureEnvelope.ts +150 -48
  57. package/src/tempo/e2e.test.ts +42 -47
  58. package/src/tempo/index.ts +2 -2
  59. package/src/version.ts +1 -1
  60. package/src/zod/RpcSchema.ts +190 -13
  61. package/src/zod/_test/RpcSchema.test-d.ts +53 -6
  62. package/src/zod/_test/RpcSchema.test.ts +138 -18
  63. package/src/zod/internal/rpcSchemas/Eth.ts +14 -12
  64. package/src/zod/tempo/SignatureEnvelope.ts +1 -1
  65. package/src/zod/tempo/_test/RpcSchemaTempo.test.ts +1 -1
  66. package/src/zod/tempo/_test/SignatureEnvelope.test.ts +23 -0
@@ -155,7 +155,7 @@ export function fromTuple(tuple) {
155
155
  * ```ts twoslash
156
156
  * import { MultisigConfig } from 'ox/tempo'
157
157
  *
158
- * const config = MultisigConfig.from({
158
+ * const genesisConfig = MultisigConfig.from({
159
159
  * threshold: 1,
160
160
  * owners: [
161
161
  * {
@@ -165,14 +165,31 @@ export function fromTuple(tuple) {
165
165
  * ]
166
166
  * })
167
167
  *
168
- * const address = MultisigConfig.getAddress({ config })
168
+ * const address = MultisigConfig.getAddress(genesisConfig)
169
169
  * ```
170
170
  *
171
- * @param value - The config or config ID to derive the address from.
171
+ * @example
172
+ * ### From an genesis config ID
173
+ *
174
+ * If you already have the permanent `genesisConfigId`, pass it directly:
175
+ *
176
+ * ```ts twoslash
177
+ * import { MultisigConfig } from 'ox/tempo'
178
+ *
179
+ * const genesisConfigId = `0x${'00'.repeat(32)}` as const
180
+ *
181
+ * const address = MultisigConfig.getAddress({
182
+ * genesisConfigId
183
+ * })
184
+ * ```
185
+ *
186
+ * @param value - The genesis config (positional) or `{ genesisConfigId }`.
172
187
  * @returns The multisig account address.
173
188
  */
174
189
  export function getAddress(value) {
175
- const id = 'configId' in value ? value.configId : toId(value.config);
190
+ const id = typeof value === 'object' && 'genesisConfigId' in value
191
+ ? value.genesisConfigId
192
+ : toId(value);
176
193
  const hash = Hash.keccak256(Hex.concat(Hex.fromString(accountDomain), id));
177
194
  return Address.from(Hex.slice(hash, 12, 32));
178
195
  }
@@ -183,11 +200,46 @@ export function getAddress(value) {
183
200
  * where `inner_digest` is the transaction sign payload
184
201
  * ({@link ox#TxEnvelopeTempo.(getSignPayload:function)}).
185
202
  *
203
+ * The digest is always keyed on the permanent `account`/`genesisConfigId`
204
+ * derived from the genesis (bootstrap) config — config updates never change
205
+ * these values, so the genesis config is the correct input even for
206
+ * post-update transactions.
207
+ *
186
208
  * @example
187
209
  * ```ts twoslash
188
210
  * import { MultisigConfig, TxEnvelopeTempo } from 'ox/tempo'
189
211
  *
190
- * const config = MultisigConfig.from({
212
+ * const genesisConfig = MultisigConfig.from({
213
+ * threshold: 1,
214
+ * owners: [
215
+ * {
216
+ * owner: '0x1111111111111111111111111111111111111111',
217
+ * weight: 1
218
+ * }
219
+ * ]
220
+ * })
221
+ *
222
+ * const envelope = TxEnvelopeTempo.from({
223
+ * chainId: 1,
224
+ * calls: []
225
+ * })
226
+ *
227
+ * const digest = MultisigConfig.getSignPayload({
228
+ * payload: TxEnvelopeTempo.getSignPayload(envelope),
229
+ * genesisConfig
230
+ * })
231
+ * ```
232
+ *
233
+ * @example
234
+ * ### From `account` + `genesisConfigId`
235
+ *
236
+ * If you already have the permanent `account` and `genesisConfigId` (for
237
+ * example, recovered from a stored envelope), pass them directly:
238
+ *
239
+ * ```ts twoslash
240
+ * import { MultisigConfig, TxEnvelopeTempo } from 'ox/tempo'
241
+ *
242
+ * const genesisConfig = MultisigConfig.from({
191
243
  * threshold: 1,
192
244
  * owners: [
193
245
  * {
@@ -196,8 +248,8 @@ export function getAddress(value) {
196
248
  * }
197
249
  * ]
198
250
  * })
199
- * const configId = MultisigConfig.toId(config)
200
- * const account = MultisigConfig.getAddress({ configId })
251
+ * const genesisConfigId = MultisigConfig.toId(genesisConfig)
252
+ * const account = MultisigConfig.getAddress(genesisConfig)
201
253
  *
202
254
  * const envelope = TxEnvelopeTempo.from({
203
255
  * chainId: 1,
@@ -207,7 +259,7 @@ export function getAddress(value) {
207
259
  * const digest = MultisigConfig.getSignPayload({
208
260
  * payload: TxEnvelopeTempo.getSignPayload(envelope),
209
261
  * account,
210
- * configId
262
+ * genesisConfigId
211
263
  * })
212
264
  * ```
213
265
  *
@@ -215,8 +267,14 @@ export function getAddress(value) {
215
267
  * @returns The owner approval digest.
216
268
  */
217
269
  export function getSignPayload(value) {
218
- const { payload, account, configId } = value;
219
- return Hash.keccak256(Hex.concat(Hex.fromString(signatureDomain), Hex.from(payload), account, configId));
270
+ const { payload } = value;
271
+ const account = 'account' in value && value.account
272
+ ? value.account
273
+ : getAddress(value.genesisConfig);
274
+ const genesisConfigId = 'genesisConfigId' in value && value.genesisConfigId
275
+ ? value.genesisConfigId
276
+ : toId(value.genesisConfig);
277
+ return Hash.keccak256(Hex.concat(Hex.fromString(signatureDomain), Hex.from(payload), account, genesisConfigId));
220
278
  }
221
279
  /**
222
280
  * Derives the permanent config ID for a native multisig
@@ -239,7 +297,7 @@ export function getSignPayload(value) {
239
297
  * ]
240
298
  * })
241
299
  *
242
- * const configId = MultisigConfig.toId(config)
300
+ * const genesisConfigId = MultisigConfig.toId(config)
243
301
  * ```
244
302
  *
245
303
  * @param config - The multisig config.
@@ -1 +1 @@
1
- {"version":3,"file":"MultisigConfig.js","sourceRoot":"","sources":["../../src/tempo/MultisigConfig.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"MultisigConfig.js","sourceRoot":"","sources":["../../src/tempo/MultisigConfig.ts"],"names":[],"mappings":"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"}
@@ -55,7 +55,7 @@ export type GetType<envelope extends PartialBy<SignatureEnvelope, 'type'> | unkn
55
55
  userAddress: Address.Address;
56
56
  } ? 'keychain' : envelope extends {
57
57
  account: Address.Address;
58
- configId: `0x${string}`;
58
+ genesisConfigId: `0x${string}`;
59
59
  signatures: any;
60
60
  } ? 'multisig' : never;
61
61
  /**
@@ -126,7 +126,7 @@ export type Multisig<numberType = number> = {
126
126
  /** Native multisig account address. */
127
127
  account: Address.Address;
128
128
  /** Permanent config ID derived from the initial multisig config. */
129
- configId: Hex.Hex;
129
+ genesisConfigId: Hex.Hex;
130
130
  /** Primitive owner approvals over the multisig owner approval digest. */
131
131
  signatures: readonly SignatureEnvelope<numberType>[];
132
132
  /**
@@ -139,6 +139,11 @@ export type Multisig<numberType = number> = {
139
139
  export type MultisigRpc = {
140
140
  type: 'multisig';
141
141
  account: Address.Address;
142
+ /**
143
+ * The permanent multisig config ID (TIP-1061 wire field `config_id`).
144
+ * Maps to `genesisConfigId` on the typed
145
+ * {@link ox#SignatureEnvelope.Multisig} envelope.
146
+ */
142
147
  configId: Hex.Hex;
143
148
  /**
144
149
  * Encoded primitive owner approvals (raw serialized signatures), matching the
@@ -447,6 +452,46 @@ export declare function deserialize(value: Serialized): SignatureEnvelope;
447
452
  * })
448
453
  * ```
449
454
  *
455
+ * @example
456
+ * ### Multisig (from genesis config)
457
+ *
458
+ * Pass `genesisConfig` to derive `account` and `genesisConfigId` automatically.
459
+ * Set `init: true` to opt into bootstrap (uses `genesisConfig` as the
460
+ * bootstrap `init`); omit `init` for subsequent (non-bootstrap) transactions.
461
+ *
462
+ * ```ts twoslash
463
+ * import { Secp256k1 } from 'ox'
464
+ * import { MultisigConfig, SignatureEnvelope } from 'ox/tempo'
465
+ *
466
+ * const genesisConfig = MultisigConfig.from({
467
+ * threshold: 1,
468
+ * owners: [
469
+ * {
470
+ * owner: '0x1111111111111111111111111111111111111111',
471
+ * weight: 1
472
+ * }
473
+ * ]
474
+ * })
475
+ *
476
+ * const privateKey = Secp256k1.randomPrivateKey()
477
+ * const signature = SignatureEnvelope.from(
478
+ * Secp256k1.sign({ payload: '0xdeadbeef', privateKey })
479
+ * )
480
+ *
481
+ * // Bootstrap transaction
482
+ * const bootstrap = SignatureEnvelope.from({
483
+ * genesisConfig,
484
+ * signatures: [signature],
485
+ * init: true
486
+ * })
487
+ *
488
+ * // Subsequent (non-bootstrap) transactions
489
+ * const subsequent = SignatureEnvelope.from({
490
+ * genesisConfig,
491
+ * signatures: [signature]
492
+ * })
493
+ * ```
494
+ *
450
495
  * @param value - The value to coerce (either a hex string or signature envelope).
451
496
  * @returns The signature envelope.
452
497
  */
@@ -456,8 +501,20 @@ export declare namespace from {
456
501
  /** Payload that was signed. Used to recover `keyId` for keychain envelopes with secp256k1 inner signatures. */
457
502
  payload?: Hex.Hex | Bytes.Bytes | undefined;
458
503
  };
459
- type Value = UnionPartialBy<SignatureEnvelope, 'prehash' | 'type'> | Secp256k1Flat | Serialized;
460
- type ReturnValue<value extends Value> = Compute<OneOf<value extends Serialized ? SignatureEnvelope : value extends Secp256k1Flat ? Secp256k1 : IsNarrowable<value, SignatureEnvelope> extends true ? SignatureEnvelope : Assign<value, {
504
+ /**
505
+ * Multisig envelope input variant where `account` and `genesisConfigId` are derived
506
+ * from the supplied `genesisConfig`. Pass `init: true` to opt into bootstrap
507
+ * (uses `genesisConfig` as the bootstrap `init`); omit `init` for subsequent
508
+ * (non-bootstrap) transactions.
509
+ */
510
+ type MultisigFromGenesisConfig = {
511
+ type?: 'multisig' | undefined;
512
+ genesisConfig: MultisigConfig.Config;
513
+ signatures: readonly SignatureEnvelope[];
514
+ init?: MultisigConfig.Config | boolean | undefined;
515
+ };
516
+ type Value = UnionPartialBy<SignatureEnvelope, 'prehash' | 'type'> | Secp256k1Flat | Serialized | MultisigFromGenesisConfig;
517
+ type ReturnValue<value extends Value> = Compute<OneOf<value extends Serialized ? SignatureEnvelope : value extends Secp256k1Flat ? Secp256k1 : value extends MultisigFromGenesisConfig ? Multisig : IsNarrowable<value, SignatureEnvelope> extends true ? SignatureEnvelope : Assign<value, {
461
518
  readonly type: GetType<value>;
462
519
  } & (GetType<value> extends 'keychain' ? {
463
520
  keyId?: Address.Address | undefined;
@@ -558,6 +615,9 @@ export declare namespace serialize {
558
615
  * recovered owner address. Works for any owner key type (secp256k1, p256,
559
616
  * webAuthn, keychain).
560
617
  *
618
+ * Config updates never change `account`/`genesisConfigId`, so the genesis
619
+ * config is the correct input even for post-update transactions.
620
+ *
561
621
  * @example
562
622
  * ```ts twoslash
563
623
  * import { Secp256k1 } from 'ox'
@@ -567,7 +627,7 @@ export declare namespace serialize {
567
627
  * TxEnvelopeTempo
568
628
  * } from 'ox/tempo'
569
629
  *
570
- * const config = MultisigConfig.from({
630
+ * const genesisConfig = MultisigConfig.from({
571
631
  * threshold: 2,
572
632
  * owners: [
573
633
  * {
@@ -580,21 +640,18 @@ export declare namespace serialize {
580
640
  * }
581
641
  * ]
582
642
  * })
583
- * const configId = MultisigConfig.toId(config)
584
- * const account = MultisigConfig.getAddress({ configId })
585
643
  *
586
644
  * const tx = TxEnvelopeTempo.from({ chainId: 1, calls: [] })
587
645
  * const payload = TxEnvelopeTempo.getSignPayload(tx)
588
- * const digest = MultisigConfig.getSignPayload({
589
- * payload,
590
- * account,
591
- * configId
592
- * })
593
646
  *
594
647
  * const privateKeys = [
595
648
  * Secp256k1.randomPrivateKey(),
596
649
  * Secp256k1.randomPrivateKey()
597
650
  * ]
651
+ * const digest = MultisigConfig.getSignPayload({
652
+ * payload,
653
+ * genesisConfig
654
+ * })
598
655
  * const signatures = privateKeys.map((privateKey) =>
599
656
  * SignatureEnvelope.from(
600
657
  * Secp256k1.sign({ payload: digest, privateKey })
@@ -603,8 +660,7 @@ export declare namespace serialize {
603
660
  *
604
661
  * const ordered = SignatureEnvelope.sortMultisigApprovals({
605
662
  * // [!code focus]
606
- * account, // [!code focus]
607
- * configId, // [!code focus]
663
+ * genesisConfig, // [!code focus]
608
664
  * payload, // [!code focus]
609
665
  * signatures // [!code focus]
610
666
  * }) // [!code focus]
@@ -616,15 +672,23 @@ export declare namespace serialize {
616
672
  export declare function sortMultisigApprovals(value: sortMultisigApprovals.Value): readonly SignatureEnvelope[];
617
673
  export declare namespace sortMultisigApprovals {
618
674
  type Value = {
619
- /** The native multisig account address. */
620
- account: Address.Address;
621
- /** The permanent config ID. */
622
- configId: Hex.Hex;
623
675
  /** The inner transaction sign payload (`tx.signature_hash()`). */
624
676
  payload: Hex.Hex | Bytes.Bytes;
625
677
  /** The primitive owner approvals to order. */
626
678
  signatures: readonly SignatureEnvelope[];
627
- };
679
+ } & OneOf<{
680
+ /** The native multisig account address. */
681
+ account: Address.Address;
682
+ /** The permanent config ID. */
683
+ genesisConfigId: Hex.Hex;
684
+ } | {
685
+ /**
686
+ * The initial multisig config (the bootstrap config that derived the
687
+ * permanent `account` and `genesisConfigId`). Used to derive both values
688
+ * automatically.
689
+ */
690
+ genesisConfig: MultisigConfig.Config;
691
+ }>;
628
692
  type ErrorType = MultisigConfig.getSignPayload.ErrorType | extractAddress.ErrorType | Errors.GlobalErrorType;
629
693
  }
630
694
  /**
@@ -1 +1 @@
1
- {"version":3,"file":"SignatureEnvelope.d.ts","sourceRoot":"","sources":["../../src/tempo/SignatureEnvelope.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"SignatureEnvelope.d.ts","sourceRoot":"","sources":["../../src/tempo/SignatureEnvelope.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,OAAO,MAAM,oBAAoB,CAAA;AAC7C,OAAO,KAAK,KAAK,KAAK,MAAM,kBAAkB,CAAA;AAC9C,OAAO,KAAK,MAAM,MAAM,mBAAmB,CAAA;AAC3C,OAAO,KAAK,GAAG,MAAM,gBAAgB,CAAA;AACrC,OAAO,KAAK,EACV,MAAM,EACN,OAAO,EACP,YAAY,EACZ,KAAK,EACL,SAAS,EACT,cAAc,EACf,MAAM,2BAA2B,CAAA;AAGlC,OAAO,KAAK,KAAK,SAAS,MAAM,sBAAsB,CAAA;AAEtD,OAAO,KAAK,YAAY,MAAM,sBAAsB,CAAA;AACpD,OAAO,KAAK,SAAS,MAAM,sBAAsB,CAAA;AACjD,OAAO,KAAK,KAAK,YAAY,MAAM,yBAAyB,CAAA;AAE5D,OAAO,KAAK,cAAc,MAAM,qBAAqB,CAAA;AASrD,iEAAiE;AACjE,eAAO,MAAM,UAAU,uEAC+C,CAAA;AAEtE;;;;;;;;;;;;;;GAcG;AACH,MAAM,MAAM,OAAO,CACjB,QAAQ,SAAS,SAAS,CAAC,iBAAiB,EAAE,MAAM,CAAC,GAAG,OAAO,IAC7D,OAAO,SAAS,QAAQ,GACxB,QAAQ,SAAS,OAAO,GACtB,IAAI,GACJ,KAAK,GACP,QAAQ,SAAS;IAAE,IAAI,EAAE,MAAM,CAAC,SAAS,IAAI,CAAA;CAAE,GAC7C,CAAC,GACD,QAAQ,SAAS;IACb,SAAS,EAAE;QAAE,CAAC,EAAE,KAAK,MAAM,EAAE,CAAC;QAAC,CAAC,EAAE,KAAK,MAAM,EAAE,CAAA;KAAE,CAAA;IACjD,OAAO,EAAE,OAAO,CAAA;IAChB,SAAS,EAAE,SAAS,CAAC,SAAS,CAAA;CAC/B,GACD,MAAM,GACN,QAAQ,SAAS;IACb,SAAS,EAAE;QAAE,CAAC,EAAE,KAAK,MAAM,EAAE,CAAC;QAAC,CAAC,EAAE,KAAK,MAAM,EAAE,CAAA;KAAE,CAAA;IACjD,QAAQ,EAAE,GAAG,CAAA;IACb,SAAS,EAAE,SAAS,CAAC,SAAS,CAAA;CAC/B,GACD,UAAU,GACV,QAAQ,SAAS;IACb,CAAC,EAAE,KAAK,MAAM,EAAE,CAAA;IAChB,CAAC,EAAE,KAAK,MAAM,EAAE,CAAA;IAChB,OAAO,EAAE,MAAM,CAAA;CAChB,GACD,WAAW,GACX,QAAQ,SAAS;IACb,SAAS,EAAE;QACT,CAAC,EAAE,KAAK,MAAM,EAAE,CAAA;QAChB,CAAC,EAAE,KAAK,MAAM,EAAE,CAAA;QAChB,OAAO,EAAE,MAAM,CAAA;KAChB,CAAA;CACF,GACD,WAAW,GACX,QAAQ,SAAS;IACb,WAAW,EAAE,OAAO,CAAC,OAAO,CAAA;CAC7B,GACD,UAAU,GACV,QAAQ,SAAS;IACb,OAAO,EAAE,OAAO,CAAC,OAAO,CAAA;IACxB,eAAe,EAAE,KAAK,MAAM,EAAE,CAAA;IAC9B,UAAU,EAAE,GAAG,CAAA;CAChB,GACD,UAAU,GACV,KAAK,CAAA;AAEvB;;;;;;;;;;;;;;;;;;;;;;GAsBG;AACH,MAAM,MAAM,iBAAiB,CAAC,UAAU,GAAG,MAAM,IAAI,KAAK,CACtD,SAAS,CAAC,UAAU,CAAC,GACrB,IAAI,CAAC,UAAU,CAAC,GAChB,QAAQ,CAAC,UAAU,CAAC,GACpB,QAAQ,CAAC,UAAU,CAAC,GACpB,QAAQ,CAAC,UAAU,CAAC,CACvB,CAAA;AAED;;GAEG;AACH,MAAM,MAAM,oBAAoB,GAAG,KAAK,CACtC,YAAY,GAAG,OAAO,GAAG,WAAW,GAAG,WAAW,GAAG,WAAW,CACjE,CAAA;AAED;;;;;;GAMG;AACH,MAAM,MAAM,eAAe,GAAG,IAAI,GAAG,IAAI,CAAA;AAEzC,MAAM,MAAM,QAAQ,CAAC,UAAU,GAAG,MAAM,IAAI;IAC1C,uEAAuE;IACvE,WAAW,EAAE,OAAO,CAAC,OAAO,CAAA;IAC5B,qFAAqF;IACrF,KAAK,EAAE,iBAAiB,CAAC,UAAU,CAAC,CAAA;IACpC,2EAA2E;IAC3E,KAAK,CAAC,EAAE,OAAO,CAAC,OAAO,GAAG,SAAS,CAAA;IACnC,IAAI,EAAE,UAAU,CAAA;IAChB,gDAAgD;IAChD,OAAO,CAAC,EAAE,eAAe,GAAG,SAAS,CAAA;CACtC,CAAA;AAED,MAAM,MAAM,WAAW,GAAG;IACxB,IAAI,EAAE,UAAU,CAAA;IAChB,WAAW,EAAE,OAAO,CAAC,OAAO,CAAA;IAC5B,KAAK,CAAC,EAAE,OAAO,CAAC,OAAO,GAAG,SAAS,CAAA;IACnC,SAAS,EAAE,oBAAoB,CAAA;IAC/B,OAAO,CAAC,EAAE,eAAe,GAAG,SAAS,CAAA;CACtC,CAAA;AAED;;;;;;;;GAQG;AACH,MAAM,MAAM,QAAQ,CAAC,UAAU,GAAG,MAAM,IAAI;IAC1C,IAAI,EAAE,UAAU,CAAA;IAChB,uCAAuC;IACvC,OAAO,EAAE,OAAO,CAAC,OAAO,CAAA;IACxB,oEAAoE;IACpE,eAAe,EAAE,GAAG,CAAC,GAAG,CAAA;IACxB,yEAAyE;IACzE,UAAU,EAAE,SAAS,iBAAiB,CAAC,UAAU,CAAC,EAAE,CAAA;IACpD;;;;OAIG;IACH,IAAI,CAAC,EAAE,cAAc,CAAC,MAAM,CAAC,UAAU,CAAC,GAAG,SAAS,CAAA;CACrD,CAAA;AAED,MAAM,MAAM,WAAW,GAAG;IACxB,IAAI,EAAE,UAAU,CAAA;IAChB,OAAO,EAAE,OAAO,CAAC,OAAO,CAAA;IACxB;;;;OAIG;IACH,QAAQ,EAAE,GAAG,CAAC,GAAG,CAAA;IACjB;;;OAGG;IACH,UAAU,EAAE,SAAS,UAAU,EAAE,CAAA;IACjC,IAAI,CAAC,EAAE,cAAc,CAAC,MAAM,GAAG,SAAS,CAAA;CACzC,CAAA;AAED,MAAM,MAAM,IAAI,CAAC,UAAU,GAAG,MAAM,IAAI;IACtC,OAAO,EAAE,OAAO,CAAA;IAChB,SAAS,EAAE,SAAS,CAAC,SAAS,CAAA;IAC9B,SAAS,EAAE,SAAS,CAAC,SAAS,CAAC,KAAK,EAAE,UAAU,CAAC,CAAA;IACjD,IAAI,EAAE,MAAM,CAAA;CACb,CAAA;AAED,MAAM,MAAM,OAAO,GAAG;IACpB,OAAO,EAAE,OAAO,CAAA;IAChB,OAAO,EAAE,GAAG,CAAC,GAAG,CAAA;IAChB,OAAO,EAAE,GAAG,CAAC,GAAG,CAAA;IAChB,CAAC,EAAE,GAAG,CAAC,GAAG,CAAA;IACV,CAAC,EAAE,GAAG,CAAC,GAAG,CAAA;IACV,IAAI,EAAE,MAAM,CAAA;CACb,CAAA;AAED,MAAM,MAAM,SAAS,CAAC,UAAU,GAAG,MAAM,IAAI;IAC3C,SAAS,EAAE,SAAS,CAAC,SAAS,CAAC,IAAI,EAAE,UAAU,CAAC,CAAA;IAChD,IAAI,EAAE,WAAW,CAAA;CAClB,CAAA;AAED,MAAM,MAAM,YAAY,GAAG,OAAO,CAChC,SAAS,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG;IACpB,CAAC,CAAC,EAAE,GAAG,CAAC,GAAG,GAAG,SAAS,CAAA;IACvB,IAAI,EAAE,WAAW,CAAA;CAClB,CACF,CAAA;AAED,MAAM,MAAM,aAAa,CAAC,UAAU,GAAG,MAAM,IAAI,SAAS,CAAC,SAAS,CAClE,IAAI,EACJ,UAAU,CACX,GAAG;IACF,IAAI,CAAC,EAAE,WAAW,GAAG,SAAS,CAAA;CAC/B,CAAA;AAED,MAAM,MAAM,QAAQ,CAAC,UAAU,GAAG,MAAM,IAAI;IAC1C,QAAQ,EAAE,IAAI,CACZ,YAAY,CAAC,YAAY,EACzB,mBAAmB,GAAG,gBAAgB,CACvC,CAAA;IACD,SAAS,EAAE,SAAS,CAAC,SAAS,CAAC,KAAK,EAAE,UAAU,CAAC,CAAA;IACjD,SAAS,EAAE,SAAS,CAAC,SAAS,CAAA;IAC9B,IAAI,EAAE,UAAU,CAAA;CACjB,CAAA;AAED,MAAM,MAAM,WAAW,GAAG;IACxB,OAAO,EAAE,GAAG,CAAC,GAAG,CAAA;IAChB,OAAO,EAAE,GAAG,CAAC,GAAG,CAAA;IAChB,CAAC,EAAE,GAAG,CAAC,GAAG,CAAA;IACV,CAAC,EAAE,GAAG,CAAC,GAAG,CAAA;IACV,IAAI,EAAE,UAAU,CAAA;IAChB,YAAY,EAAE,GAAG,CAAC,GAAG,CAAA;CACtB,CAAA;AAED,iDAAiD;AACjD,MAAM,MAAM,UAAU,GAAG,GAAG,CAAC,GAAG,CAAA;AAEhC,yCAAyC;AACzC,eAAO,MAAM,KAAK,4CAA6C,CAAA;AAE/D,+CAA+C;AAC/C,MAAM,MAAM,IAAI,GAAG,CAAC,OAAO,KAAK,CAAC,CAAC,MAAM,CAAC,CAAA;AAEzC;;;;;;;;;;;;;;;;;;;GAmBG;AACH,wBAAgB,MAAM,CAAC,QAAQ,EAAE,SAAS,CAAC,iBAAiB,EAAE,MAAM,CAAC,GAAG,IAAI,CAqE3E;AAED,MAAM,CAAC,OAAO,WAAW,MAAM,CAAC;IAC9B,KAAK,SAAS,GACV,aAAa,GACb,sBAAsB,GACtB,cAAc,CAAC,MAAM,CAAC,SAAS,GAC/B,SAAS,CAAC,MAAM,CAAC,SAAS,GAC1B,MAAM,CAAC,eAAe,CAAA;CAC3B;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA4BG;AACH,wBAAgB,cAAc,CAC5B,OAAO,EAAE,cAAc,CAAC,OAAO,GAC9B,cAAc,CAAC,UAAU,CAU3B;AAED,MAAM,CAAC,OAAO,WAAW,cAAc,CAAC;IACtC,KAAK,OAAO,GAAG;QACb,iFAAiF;QACjF,OAAO,EAAE,GAAG,CAAC,GAAG,GAAG,KAAK,CAAC,KAAK,CAAA;QAC9B,8BAA8B;QAC9B,SAAS,EAAE,iBAAiB,CAAA;QAC5B,uHAAuH;QACvH,IAAI,CAAC,EAAE,OAAO,GAAG,SAAS,CAAA;KAC3B,CAAA;IAED,KAAK,UAAU,GAAG,OAAO,CAAC,OAAO,CAAA;IAEjC,KAAK,SAAS,GACV,OAAO,CAAC,aAAa,CAAC,SAAS,GAC/B,gBAAgB,CAAC,SAAS,GAC1B,MAAM,CAAC,eAAe,CAAA;CAC3B;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA4BG;AACH,wBAAgB,gBAAgB,CAC9B,OAAO,EAAE,gBAAgB,CAAC,OAAO,GAChC,gBAAgB,CAAC,UAAU,CAmB7B;AAED,MAAM,CAAC,OAAO,WAAW,gBAAgB,CAAC;IACxC,KAAK,OAAO,GAAG;QACb,iFAAiF;QACjF,OAAO,EAAE,GAAG,CAAC,GAAG,GAAG,KAAK,CAAC,KAAK,CAAA;QAC9B,8BAA8B;QAC9B,SAAS,EAAE,iBAAiB,CAAA;KAC7B,CAAA;IAED,KAAK,UAAU,GAAG,SAAS,CAAC,SAAS,CAAA;IAErC,KAAK,SAAS,GACV,aAAa,GACb,YAAY,CAAC,gBAAgB,CAAC,SAAS,GACvC,MAAM,CAAC,eAAe,CAAA;CAC3B;AAED;;;;;;;;;;;;;;;;;;;;;;GAsBG;AACH,wBAAgB,WAAW,CAAC,KAAK,EAAE,UAAU,GAAG,iBAAiB,CA4IhE;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAuKG;AACH,wBAAgB,IAAI,CAAC,KAAK,CAAC,KAAK,SAAS,IAAI,CAAC,KAAK,EACjD,KAAK,EAAE,KAAK,GAAG,IAAI,CAAC,KAAK,EACzB,OAAO,CAAC,EAAE,IAAI,CAAC,OAAO,GACrB,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC,CAkFzB;AAED,MAAM,CAAC,OAAO,WAAW,IAAI,CAAC;IAC5B,KAAK,OAAO,GAAG;QACb,+GAA+G;QAC/G,OAAO,CAAC,EAAE,GAAG,CAAC,GAAG,GAAG,KAAK,CAAC,KAAK,GAAG,SAAS,CAAA;KAC5C,CAAA;IAED;;;;;OAKG;IACH,KAAK,yBAAyB,GAAG;QAC/B,IAAI,CAAC,EAAE,UAAU,GAAG,SAAS,CAAA;QAC7B,aAAa,EAAE,cAAc,CAAC,MAAM,CAAA;QACpC,UAAU,EAAE,SAAS,iBAAiB,EAAE,CAAA;QACxC,IAAI,CAAC,EAAE,cAAc,CAAC,MAAM,GAAG,OAAO,GAAG,SAAS,CAAA;KACnD,CAAA;IAED,KAAK,KAAK,GACN,cAAc,CAAC,iBAAiB,EAAE,SAAS,GAAG,MAAM,CAAC,GACrD,aAAa,GACb,UAAU,GACV,yBAAyB,CAAA;IAE7B,KAAK,WAAW,CAAC,KAAK,SAAS,KAAK,IAAI,OAAO,CAC7C,KAAK,CACH,KAAK,SAAS,UAAU,GACpB,iBAAiB,GACjB,KAAK,SAAS,aAAa,GACzB,SAAS,GACT,KAAK,SAAS,yBAAyB,GACrC,QAAQ,GACR,YAAY,CAAC,KAAK,EAAE,iBAAiB,CAAC,SAAS,IAAI,GACjD,iBAAiB,GACjB,MAAM,CACJ,KAAK,EACL;QACE,QAAQ,CAAC,IAAI,EAAE,OAAO,CAAC,KAAK,CAAC,CAAA;KAC9B,GAAG,CAAC,OAAO,CAAC,KAAK,CAAC,SAAS,UAAU,GAClC;QAAE,KAAK,CAAC,EAAE,OAAO,CAAC,OAAO,GAAG,SAAS,CAAA;KAAE,GACvC,EAAE,CAAC,CACR,CACZ,CACF,CAAA;CACF;AAED;;;;;;;;;;;;;;;;;GAiBG;AACH,wBAAgB,OAAO,CAAC,QAAQ,EAAE,oBAAoB,GAAG,iBAAiB,CAyGzE;AAED,MAAM,CAAC,OAAO,WAAW,OAAO,CAAC;IAC/B,KAAK,SAAS,GACV,aAAa,GACb,sBAAsB,GACtB,SAAS,CAAC,OAAO,CAAC,SAAS,GAC3B,MAAM,CAAC,eAAe,CAAA;CAC3B;AAED;;;;;;;;;;;;;;;;;;;;GAoBG;AACH,wBAAgB,OAAO,CACrB,QAAQ,SACJ,SAAS,CAAC,iBAAiB,EAAE,MAAM,CAAC,GACpC,aAAa,GACb,OAAO,EACX,QAAQ,EAAE,QAAQ,GAAG,OAAO,CAAC,QAAQ,CAAC,CAsDvC;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA6BG;AACH,wBAAgB,SAAS,CACvB,QAAQ,EAAE,cAAc,CAAC,iBAAiB,EAAE,SAAS,CAAC,EACtD,OAAO,GAAE,SAAS,CAAC,OAAY,GAC9B,UAAU,CA8EZ;AAED,MAAM,CAAC,OAAO,WAAW,SAAS,CAAC;IACjC,KAAK,OAAO,GAAG;QACb;;;WAGG;QACH,KAAK,CAAC,EAAE,OAAO,GAAG,SAAS,CAAA;KAC5B,CAAA;CACF;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAgEG;AACH,wBAAgB,qBAAqB,CACnC,KAAK,EAAE,qBAAqB,CAAC,KAAK,GACjC,SAAS,iBAAiB,EAAE,CAqB9B;AAED,MAAM,CAAC,OAAO,WAAW,qBAAqB,CAAC;IAC7C,KAAK,KAAK,GAAG;QACX,kEAAkE;QAClE,OAAO,EAAE,GAAG,CAAC,GAAG,GAAG,KAAK,CAAC,KAAK,CAAA;QAC9B,8CAA8C;QAC9C,UAAU,EAAE,SAAS,iBAAiB,EAAE,CAAA;KACzC,GAAG,KAAK,CACL;QACE,2CAA2C;QAC3C,OAAO,EAAE,OAAO,CAAC,OAAO,CAAA;QACxB,+BAA+B;QAC/B,eAAe,EAAE,GAAG,CAAC,GAAG,CAAA;KACzB,GACD;QACE;;;;WAIG;QACH,aAAa,EAAE,cAAc,CAAC,MAAM,CAAA;KACrC,CACJ,CAAA;IAED,KAAK,SAAS,GACV,cAAc,CAAC,cAAc,CAAC,SAAS,GACvC,cAAc,CAAC,SAAS,GACxB,MAAM,CAAC,eAAe,CAAA;CAC3B;AAED;;;;;;;;;;;;;;;;;;;GAmBG;AACH,wBAAgB,KAAK,CAAC,QAAQ,EAAE,iBAAiB,GAAG,oBAAoB,CAkEvE;AAED,MAAM,CAAC,OAAO,WAAW,KAAK,CAAC;IAC7B,KAAK,SAAS,GACV,aAAa,GACb,SAAS,CAAC,KAAK,CAAC,SAAS,GACzB,MAAM,CAAC,eAAe,CAAA;CAC3B;AAED;;;;;;;;;;;;;;;;;;;;GAoBG;AACH,wBAAgB,QAAQ,CACtB,QAAQ,EAAE,SAAS,CAAC,iBAAiB,EAAE,MAAM,CAAC,GAC7C,OAAO,CAOT;AAED,MAAM,CAAC,OAAO,WAAW,QAAQ,CAAC;IAChC,KAAK,SAAS,GAAG,MAAM,CAAC,eAAe,CAAA;CACxC;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAqHG;AACH,wBAAgB,MAAM,CACpB,SAAS,EAAE,iBAAiB,EAC5B,UAAU,EAAE,MAAM,CAAC,UAAU,GAC5B,OAAO,CA8CT;AAED,MAAM,CAAC,OAAO,WAAW,MAAM,CAAC;IAC9B,KAAK,UAAU,GAAG;QAChB,+BAA+B;QAC/B,OAAO,EAAE,GAAG,CAAC,GAAG,GAAG,KAAK,CAAC,KAAK,CAAA;KAC/B,GAAG,KAAK,CACL;QACE,0CAA0C;QAC1C,SAAS,EAAE,SAAS,CAAC,SAAS,CAAA;KAC/B,GACD;QACE,uCAAuC;QACvC,OAAO,EAAE,OAAO,CAAC,OAAO,CAAA;KACzB,CACJ,CAAA;CACF;AAED;;GAEG;AACH,qBAAa,aAAc,SAAQ,MAAM,CAAC,SAAS;IACjD,SAAkB,IAAI,qCAAoC;gBAC9C,EAAE,QAAQ,EAAE,EAAE;QAAE,QAAQ,EAAE,OAAO,CAAA;KAAE;CAKhD;AAED;;GAEG;AACH,qBAAa,sBAAuB,SAAQ,MAAM,CAAC,SAAS;IAC1D,SAAkB,IAAI,8CAA6C;gBACvD,EACV,QAAQ,EACR,OAAO,EACP,IAAI,GACL,EAAE;QACD,QAAQ,EAAE,OAAO,CAAA;QACjB,OAAO,EAAE,MAAM,EAAE,CAAA;QACjB,IAAI,EAAE,IAAI,GAAG,UAAU,GAAG,UAAU,CAAA;KACrC;CAKF;AAED;;GAEG;AACH,qBAAa,sBAAuB,SAAQ,MAAM,CAAC,SAAS;IAC1D,SAAkB,IAAI,8CAA6C;gBACvD,EAAE,MAAM,EAAE,UAAU,EAAE,EAAE;QAAE,MAAM,EAAE,MAAM,CAAC;QAAC,UAAU,EAAE,GAAG,CAAC,GAAG,CAAA;KAAE;CAK5E;AAED;;GAEG;AACH,qBAAa,iBAAkB,SAAQ,MAAM,CAAC,SAAS;IACrD,SAAkB,IAAI,yCAAwC;CAC/D"}
@@ -103,8 +103,8 @@ export function assert(envelope) {
103
103
  const missing = [];
104
104
  if (!multisig.account)
105
105
  missing.push('account');
106
- if (!multisig.configId)
107
- missing.push('configId');
106
+ if (!multisig.genesisConfigId)
107
+ missing.push('genesisConfigId');
108
108
  if (!Array.isArray(multisig.signatures))
109
109
  missing.push('signatures');
110
110
  if (missing.length > 0)
@@ -327,14 +327,14 @@ export function deserialize(value) {
327
327
  };
328
328
  }
329
329
  if (typeId === serializedMultisigType) {
330
- // Wire format: `0x05 || rlp([account, configId, signatures, init])`. `init`
330
+ // Wire format: `0x05 || rlp([account, genesisConfigId, signatures, init])`. `init`
331
331
  // is optional: absent when the element is missing or the `0x80` placeholder
332
332
  // (decoded as the empty string `0x`), otherwise the bootstrap config list.
333
- const [account, configId, signatures, init] = Rlp.toHex(data);
333
+ const [account, genesisConfigId, signatures, init] = Rlp.toHex(data);
334
334
  return {
335
335
  type: 'multisig',
336
336
  account,
337
- configId,
337
+ genesisConfigId,
338
338
  signatures: signatures.map((signature) => deserialize(signature)),
339
339
  ...(init && init !== '0x'
340
340
  ? {
@@ -473,6 +473,46 @@ export function deserialize(value) {
473
473
  * })
474
474
  * ```
475
475
  *
476
+ * @example
477
+ * ### Multisig (from genesis config)
478
+ *
479
+ * Pass `genesisConfig` to derive `account` and `genesisConfigId` automatically.
480
+ * Set `init: true` to opt into bootstrap (uses `genesisConfig` as the
481
+ * bootstrap `init`); omit `init` for subsequent (non-bootstrap) transactions.
482
+ *
483
+ * ```ts twoslash
484
+ * import { Secp256k1 } from 'ox'
485
+ * import { MultisigConfig, SignatureEnvelope } from 'ox/tempo'
486
+ *
487
+ * const genesisConfig = MultisigConfig.from({
488
+ * threshold: 1,
489
+ * owners: [
490
+ * {
491
+ * owner: '0x1111111111111111111111111111111111111111',
492
+ * weight: 1
493
+ * }
494
+ * ]
495
+ * })
496
+ *
497
+ * const privateKey = Secp256k1.randomPrivateKey()
498
+ * const signature = SignatureEnvelope.from(
499
+ * Secp256k1.sign({ payload: '0xdeadbeef', privateKey })
500
+ * )
501
+ *
502
+ * // Bootstrap transaction
503
+ * const bootstrap = SignatureEnvelope.from({
504
+ * genesisConfig,
505
+ * signatures: [signature],
506
+ * init: true
507
+ * })
508
+ *
509
+ * // Subsequent (non-bootstrap) transactions
510
+ * const subsequent = SignatureEnvelope.from({
511
+ * genesisConfig,
512
+ * signatures: [signature]
513
+ * })
514
+ * ```
515
+ *
476
516
  * @param value - The value to coerce (either a hex string or signature envelope).
477
517
  * @returns The signature envelope.
478
518
  */
@@ -488,12 +528,35 @@ export function from(value, options) {
488
528
  const type = getType(value);
489
529
  if (type === 'multisig') {
490
530
  const multisig = value;
531
+ const { genesisConfig, init, ...rest } = multisig;
532
+ // Derive `account`/`genesisConfigId` from `genesisConfig` when not provided
533
+ // explicitly.
534
+ const account = (() => {
535
+ if (rest.account)
536
+ return rest.account;
537
+ if (genesisConfig)
538
+ return MultisigConfig.getAddress(genesisConfig);
539
+ return rest.account;
540
+ })();
541
+ const genesisConfigId = (() => {
542
+ if (rest.genesisConfigId)
543
+ return rest.genesisConfigId;
544
+ if (genesisConfig)
545
+ return MultisigConfig.toId(genesisConfig);
546
+ return rest.genesisConfigId;
547
+ })();
548
+ // `init: true` opts into bootstrap using the supplied `genesisConfig`.
549
+ // Otherwise, `init` is treated as the explicit bootstrap config (or
550
+ // omitted).
551
+ const initSource = init === true ? genesisConfig : init || undefined;
491
552
  return {
492
- ...multisig,
493
- signatures: multisig.signatures.map((signature) => from(signature)),
553
+ ...rest,
554
+ account,
555
+ genesisConfigId,
556
+ signatures: rest.signatures.map((signature) => from(signature)),
494
557
  // Normalize the bootstrap config (sorts owners, defaults the salt) so the
495
558
  // in-memory envelope matches what `deserialize` reconstructs.
496
- ...(multisig.init ? { init: MultisigConfig.from(multisig.init) } : {}),
559
+ ...(initSource ? { init: MultisigConfig.from(initSource) } : {}),
497
560
  type,
498
561
  };
499
562
  }
@@ -627,7 +690,9 @@ export function fromRpc(envelope) {
627
690
  return {
628
691
  type: 'multisig',
629
692
  account: multisig.account,
630
- configId: multisig.configId,
693
+ // Map RPC wire field `configId` (TIP-1061 spec name) to the typed
694
+ // envelope's `genesisConfigId`.
695
+ genesisConfigId: multisig.configId,
631
696
  // Owner approvals are raw serialized signatures (node `Vec<Bytes>`).
632
697
  signatures: multisig.signatures.map((signature) => deserialize(signature)),
633
698
  ...(multisig.init ? { init: MultisigConfig.from(multisig.init) } : {}),
@@ -688,8 +753,8 @@ export function getType(envelope) {
688
753
  if ('userAddress' in envelope && 'inner' in envelope)
689
754
  return 'keychain';
690
755
  // Detect Multisig signature
691
- if ('account' in envelope &&
692
- 'configId' in envelope &&
756
+ if ((('account' in envelope && 'genesisConfigId' in envelope) ||
757
+ 'genesisConfig' in envelope) &&
693
758
  'signatures' in envelope)
694
759
  return 'multisig';
695
760
  throw new CoercionError({
@@ -753,13 +818,13 @@ export function serialize(envelope, options = {}) {
753
818
  }
754
819
  if (type === 'multisig') {
755
820
  const multisig = envelope;
756
- // Format: `0x05 || rlp([account, configId, signatures, init])`, where each
821
+ // Format: `0x05 || rlp([account, genesisConfigId, signatures, init])`, where each
757
822
  // owner approval is an encoded primitive signature. `init` is the bootstrap
758
823
  // config (an RLP list) when present, otherwise the canonical empty-string
759
824
  // placeholder (`0x` → RLP `0x80`).
760
825
  return Hex.concat(serializedMultisigType, Rlp.fromHex([
761
826
  multisig.account,
762
- multisig.configId,
827
+ multisig.genesisConfigId,
763
828
  multisig.signatures.map((signature) => serialize(signature)),
764
829
  multisig.init ? MultisigConfig.toTuple(multisig.init) : '0x',
765
830
  ]), options.magic ? magicBytes : '0x');
@@ -777,6 +842,9 @@ export function serialize(envelope, options = {}) {
777
842
  * recovered owner address. Works for any owner key type (secp256k1, p256,
778
843
  * webAuthn, keychain).
779
844
  *
845
+ * Config updates never change `account`/`genesisConfigId`, so the genesis
846
+ * config is the correct input even for post-update transactions.
847
+ *
780
848
  * @example
781
849
  * ```ts twoslash
782
850
  * import { Secp256k1 } from 'ox'
@@ -786,7 +854,7 @@ export function serialize(envelope, options = {}) {
786
854
  * TxEnvelopeTempo
787
855
  * } from 'ox/tempo'
788
856
  *
789
- * const config = MultisigConfig.from({
857
+ * const genesisConfig = MultisigConfig.from({
790
858
  * threshold: 2,
791
859
  * owners: [
792
860
  * {
@@ -799,21 +867,18 @@ export function serialize(envelope, options = {}) {
799
867
  * }
800
868
  * ]
801
869
  * })
802
- * const configId = MultisigConfig.toId(config)
803
- * const account = MultisigConfig.getAddress({ configId })
804
870
  *
805
871
  * const tx = TxEnvelopeTempo.from({ chainId: 1, calls: [] })
806
872
  * const payload = TxEnvelopeTempo.getSignPayload(tx)
807
- * const digest = MultisigConfig.getSignPayload({
808
- * payload,
809
- * account,
810
- * configId
811
- * })
812
873
  *
813
874
  * const privateKeys = [
814
875
  * Secp256k1.randomPrivateKey(),
815
876
  * Secp256k1.randomPrivateKey()
816
877
  * ]
878
+ * const digest = MultisigConfig.getSignPayload({
879
+ * payload,
880
+ * genesisConfig
881
+ * })
817
882
  * const signatures = privateKeys.map((privateKey) =>
818
883
  * SignatureEnvelope.from(
819
884
  * Secp256k1.sign({ payload: digest, privateKey })
@@ -822,8 +887,7 @@ export function serialize(envelope, options = {}) {
822
887
  *
823
888
  * const ordered = SignatureEnvelope.sortMultisigApprovals({
824
889
  * // [!code focus]
825
- * account, // [!code focus]
826
- * configId, // [!code focus]
890
+ * genesisConfig, // [!code focus]
827
891
  * payload, // [!code focus]
828
892
  * signatures // [!code focus]
829
893
  * }) // [!code focus]
@@ -833,12 +897,15 @@ export function serialize(envelope, options = {}) {
833
897
  * @returns The owner approvals ordered ascending by recovered owner address.
834
898
  */
835
899
  export function sortMultisigApprovals(value) {
836
- const { account, configId, payload, signatures } = value;
837
- const digest = MultisigConfig.getSignPayload({
838
- account,
839
- configId,
840
- payload,
841
- });
900
+ const { payload, signatures } = value;
901
+ const digest = MultisigConfig.getSignPayload('genesisConfig' in value && value.genesisConfig
902
+ ? { payload, genesisConfig: value.genesisConfig }
903
+ : {
904
+ payload,
905
+ account: value.account,
906
+ genesisConfigId: value
907
+ .genesisConfigId,
908
+ });
842
909
  // Recover each signer once (decorate–sort–undecorate) rather than inside the
843
910
  // comparator.
844
911
  return signatures
@@ -916,7 +983,9 @@ export function toRpc(envelope) {
916
983
  return {
917
984
  type: 'multisig',
918
985
  account: multisig.account,
919
- configId: multisig.configId,
986
+ // Map the typed envelope's `genesisConfigId` to the RPC wire field
987
+ // `configId` (TIP-1061 spec name).
988
+ configId: multisig.genesisConfigId,
920
989
  // Owner approvals are raw serialized signatures (node `Vec<Bytes>`).
921
990
  signatures: multisig.signatures.map((signature) => serialize(signature)),
922
991
  ...(multisig.init ? { init: multisig.init } : {}),