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.
- package/dist/core/Provider.d.ts +7 -7
- package/dist/core/Provider.d.ts.map +1 -1
- package/dist/core/RpcSchema.d.ts +50 -0
- package/dist/core/RpcSchema.d.ts.map +1 -1
- package/dist/core/RpcSchema.js.map +1 -1
- package/dist/core/RpcTransport.d.ts +2 -2
- package/dist/core/RpcTransport.d.ts.map +1 -1
- package/dist/core/RpcTransport.js.map +1 -1
- package/dist/core/internal/rpcTransport.d.ts +1 -1
- package/dist/core/internal/rpcTransport.d.ts.map +1 -1
- package/dist/index.d.ts +2 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +2 -0
- package/dist/index.js.map +1 -1
- package/dist/tempo/MultisigConfig.d.ts +79 -16
- package/dist/tempo/MultisigConfig.d.ts.map +1 -1
- package/dist/tempo/MultisigConfig.js +69 -11
- package/dist/tempo/MultisigConfig.js.map +1 -1
- package/dist/tempo/SignatureEnvelope.d.ts +83 -19
- package/dist/tempo/SignatureEnvelope.d.ts.map +1 -1
- package/dist/tempo/SignatureEnvelope.js +99 -30
- package/dist/tempo/SignatureEnvelope.js.map +1 -1
- package/dist/tempo/index.d.ts +2 -2
- package/dist/tempo/index.js +2 -2
- package/dist/zod/RpcSchema.d.ts +144 -25
- package/dist/zod/RpcSchema.d.ts.map +1 -1
- package/dist/zod/RpcSchema.js +85 -13
- package/dist/zod/RpcSchema.js.map +1 -1
- package/dist/zod/internal/rpcSchemas/Eth.d.ts +12 -12
- package/dist/zod/internal/rpcSchemas/Eth.d.ts.map +1 -1
- package/dist/zod/internal/rpcSchemas/Eth.js +14 -12
- package/dist/zod/internal/rpcSchemas/Eth.js.map +1 -1
- package/dist/zod/tempo/AuthorizationTempo.d.ts +6 -6
- package/dist/zod/tempo/KeyAuthorization.d.ts +3 -3
- package/dist/zod/tempo/RpcSchemaTempo.d.ts +6 -6
- package/dist/zod/tempo/SignatureEnvelope.d.ts +3 -3
- package/dist/zod/tempo/SignatureEnvelope.js +1 -1
- package/dist/zod/tempo/SignatureEnvelope.js.map +1 -1
- package/dist/zod/tempo/Transaction.d.ts +6 -6
- package/dist/zod/tempo/TransactionRequest.d.ts +6 -6
- package/dist/zod/tempo/TxEnvelopeTempo.d.ts +9 -9
- package/dist/zod/tempo/ZoneRpcAuthentication.d.ts +3 -3
- package/package.json +1 -1
- package/src/CHANGELOG.md +6 -0
- package/src/core/Provider.ts +7 -7
- package/src/core/RpcSchema.ts +60 -0
- package/src/core/RpcTransport.ts +7 -4
- package/src/core/_test/Provider.test-d.ts +21 -0
- package/src/core/_test/RpcSchema.test-d.ts +87 -1
- package/src/core/_test/RpcTransport.test-d.ts +43 -0
- package/src/core/internal/rpcTransport.ts +1 -1
- package/src/index.ts +2 -0
- package/src/tempo/MultisigConfig.test.ts +21 -12
- package/src/tempo/MultisigConfig.ts +103 -18
- package/src/tempo/SignatureEnvelope.test.ts +124 -26
- package/src/tempo/SignatureEnvelope.ts +150 -48
- package/src/tempo/e2e.test.ts +42 -47
- package/src/tempo/index.ts +2 -2
- package/src/version.ts +1 -1
- package/src/zod/RpcSchema.ts +190 -13
- package/src/zod/_test/RpcSchema.test-d.ts +53 -6
- package/src/zod/_test/RpcSchema.test.ts +138 -18
- package/src/zod/internal/rpcSchemas/Eth.ts +14 -12
- package/src/zod/tempo/SignatureEnvelope.ts +1 -1
- package/src/zod/tempo/_test/RpcSchemaTempo.test.ts +1 -1
- 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
|
|
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(
|
|
168
|
+
* const address = MultisigConfig.getAddress(genesisConfig)
|
|
169
169
|
* ```
|
|
170
170
|
*
|
|
171
|
-
* @
|
|
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 = '
|
|
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
|
|
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
|
|
200
|
-
* const account = MultisigConfig.getAddress(
|
|
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
|
-
*
|
|
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
|
|
219
|
-
|
|
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
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
460
|
-
|
|
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
|
|
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
|
-
*
|
|
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":"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"}
|
|
@@ -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.
|
|
107
|
-
missing.push('
|
|
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,
|
|
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,
|
|
333
|
+
const [account, genesisConfigId, signatures, init] = Rlp.toHex(data);
|
|
334
334
|
return {
|
|
335
335
|
type: 'multisig',
|
|
336
336
|
account,
|
|
337
|
-
|
|
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
|
-
...
|
|
493
|
-
|
|
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
|
-
...(
|
|
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
|
|
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
|
-
'
|
|
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,
|
|
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.
|
|
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
|
|
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
|
-
*
|
|
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 {
|
|
837
|
-
const digest = MultisigConfig.getSignPayload(
|
|
838
|
-
|
|
839
|
-
|
|
840
|
-
|
|
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
|
-
|
|
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 } : {}),
|