@openzeppelin/miden-multisig-client 0.16.2 → 0.17.0-rc.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 (150) hide show
  1. package/README.md +144 -7
  2. package/dist/account/builder.d.ts.map +1 -1
  3. package/dist/account/builder.js +32 -25
  4. package/dist/account/builder.js.map +1 -1
  5. package/dist/account/builder.test.js +73 -21
  6. package/dist/account/builder.test.js.map +1 -1
  7. package/dist/account/layout.d.ts +31 -0
  8. package/dist/account/layout.d.ts.map +1 -0
  9. package/dist/account/layout.js +31 -0
  10. package/dist/account/layout.js.map +1 -0
  11. package/dist/account/masm/account-components/auth.d.ts +1 -4
  12. package/dist/account/masm/account-components/auth.d.ts.map +1 -1
  13. package/dist/account/masm/account-components/auth.js +36 -53
  14. package/dist/account/masm/account-components/auth.js.map +1 -1
  15. package/dist/account/masm/index.d.ts +0 -1
  16. package/dist/account/masm/index.d.ts.map +1 -1
  17. package/dist/account/masm/index.js +0 -1
  18. package/dist/account/masm/index.js.map +1 -1
  19. package/dist/account/storage.d.ts +4 -0
  20. package/dist/account/storage.d.ts.map +1 -1
  21. package/dist/account/storage.js +9 -20
  22. package/dist/account/storage.js.map +1 -1
  23. package/dist/client.d.ts.map +1 -1
  24. package/dist/client.js +5 -3
  25. package/dist/client.js.map +1 -1
  26. package/dist/client.test.js +68 -15
  27. package/dist/client.test.js.map +1 -1
  28. package/dist/index.d.ts +4 -3
  29. package/dist/index.d.ts.map +1 -1
  30. package/dist/index.js +3 -3
  31. package/dist/index.js.map +1 -1
  32. package/dist/inspector.d.ts +59 -1
  33. package/dist/inspector.d.ts.map +1 -1
  34. package/dist/inspector.js +157 -29
  35. package/dist/inspector.js.map +1 -1
  36. package/dist/inspector.test.js +246 -37
  37. package/dist/inspector.test.js.map +1 -1
  38. package/dist/multisig.d.ts +106 -32
  39. package/dist/multisig.d.ts.map +1 -1
  40. package/dist/multisig.js +289 -95
  41. package/dist/multisig.js.map +1 -1
  42. package/dist/multisig.test.js +581 -58
  43. package/dist/multisig.test.js.map +1 -1
  44. package/dist/procedures.d.ts +6 -7
  45. package/dist/procedures.d.ts.map +1 -1
  46. package/dist/procedures.js +6 -7
  47. package/dist/procedures.js.map +1 -1
  48. package/dist/proposal/metadata.d.ts.map +1 -1
  49. package/dist/proposal/metadata.js +13 -2
  50. package/dist/proposal/metadata.js.map +1 -1
  51. package/dist/proposal/metadata.test.js +57 -0
  52. package/dist/proposal/metadata.test.js.map +1 -1
  53. package/dist/prover/workflow.d.ts +3 -2
  54. package/dist/prover/workflow.d.ts.map +1 -1
  55. package/dist/prover/workflow.js +5 -2
  56. package/dist/prover/workflow.js.map +1 -1
  57. package/dist/prover/workflow.test.js +6 -4
  58. package/dist/prover/workflow.test.js.map +1 -1
  59. package/dist/transaction/index.d.ts +1 -1
  60. package/dist/transaction/index.d.ts.map +1 -1
  61. package/dist/transaction/index.js +1 -1
  62. package/dist/transaction/index.js.map +1 -1
  63. package/dist/transaction/p2id.d.ts +17 -6
  64. package/dist/transaction/p2id.d.ts.map +1 -1
  65. package/dist/transaction/p2id.js +22 -31
  66. package/dist/transaction/p2id.js.map +1 -1
  67. package/dist/transaction/p2id.test.js +62 -24
  68. package/dist/transaction/p2id.test.js.map +1 -1
  69. package/dist/transaction/summary.d.ts +45 -2
  70. package/dist/transaction/summary.d.ts.map +1 -1
  71. package/dist/transaction/summary.js +42 -2
  72. package/dist/transaction/summary.js.map +1 -1
  73. package/dist/transaction/summary.test.d.ts +2 -0
  74. package/dist/transaction/summary.test.d.ts.map +1 -0
  75. package/dist/transaction/summary.test.js +26 -0
  76. package/dist/transaction/summary.test.js.map +1 -0
  77. package/dist/transaction/updateGuardian.d.ts.map +1 -1
  78. package/dist/transaction/updateGuardian.js +16 -18
  79. package/dist/transaction/updateGuardian.js.map +1 -1
  80. package/dist/transaction/updateProcedureThreshold.d.ts.map +1 -1
  81. package/dist/transaction/updateProcedureThreshold.js +15 -17
  82. package/dist/transaction/updateProcedureThreshold.js.map +1 -1
  83. package/dist/transaction/updateSigners.d.ts +6 -1
  84. package/dist/transaction/updateSigners.d.ts.map +1 -1
  85. package/dist/transaction/updateSigners.js +20 -17
  86. package/dist/transaction/updateSigners.js.map +1 -1
  87. package/dist/transaction.d.ts +2 -2
  88. package/dist/transaction.d.ts.map +1 -1
  89. package/dist/transaction.js +1 -1
  90. package/dist/transaction.js.map +1 -1
  91. package/dist/types/proposal.d.ts +28 -4
  92. package/dist/types/proposal.d.ts.map +1 -1
  93. package/dist/types/proposal.js +18 -0
  94. package/dist/types/proposal.js.map +1 -1
  95. package/dist/types.d.ts +0 -1
  96. package/dist/types.d.ts.map +1 -1
  97. package/dist/utils/signature.d.ts +11 -7
  98. package/dist/utils/signature.d.ts.map +1 -1
  99. package/dist/utils/signature.js +24 -58
  100. package/dist/utils/signature.js.map +1 -1
  101. package/dist/utils/word.d.ts +7 -0
  102. package/dist/utils/word.d.ts.map +1 -1
  103. package/dist/utils/word.js +15 -0
  104. package/dist/utils/word.js.map +1 -1
  105. package/masm/account_components/auth/guarded_multisig.masm +42 -0
  106. package/package.json +7 -4
  107. package/src/account/builder.test.ts +111 -45
  108. package/src/account/builder.ts +45 -33
  109. package/src/account/layout.ts +33 -0
  110. package/src/account/masm/account-components/auth.ts +36 -56
  111. package/src/account/masm/index.ts +0 -1
  112. package/src/account/storage.ts +9 -22
  113. package/src/client.test.ts +80 -15
  114. package/src/client.ts +5 -3
  115. package/src/index.ts +26 -1
  116. package/src/inspector.test.ts +330 -38
  117. package/src/inspector.ts +196 -33
  118. package/src/multisig.test.ts +679 -63
  119. package/src/multisig.ts +361 -107
  120. package/src/procedures.ts +6 -7
  121. package/src/proposal/metadata.test.ts +76 -0
  122. package/src/proposal/metadata.ts +13 -2
  123. package/src/prover/workflow.test.ts +9 -4
  124. package/src/prover/workflow.ts +15 -3
  125. package/src/transaction/index.ts +7 -1
  126. package/src/transaction/p2id.test.ts +112 -31
  127. package/src/transaction/p2id.ts +39 -38
  128. package/src/transaction/summary.test.ts +32 -0
  129. package/src/transaction/summary.ts +83 -4
  130. package/src/transaction/updateGuardian.ts +15 -25
  131. package/src/transaction/updateProcedureThreshold.ts +13 -29
  132. package/src/transaction/updateSigners.ts +38 -30
  133. package/src/transaction.ts +8 -1
  134. package/src/types/proposal.ts +43 -4
  135. package/src/types.ts +0 -1
  136. package/src/utils/signature.ts +32 -65
  137. package/src/utils/word.ts +17 -0
  138. package/dist/account/masm/auth.d.ts +0 -5
  139. package/dist/account/masm/auth.d.ts.map +0 -1
  140. package/dist/account/masm/auth.js +0 -1509
  141. package/dist/account/masm/auth.js.map +0 -1
  142. package/masm/account_components/auth/multisig.masm +0 -12
  143. package/masm/account_components/auth/multisig_ecdsa.masm +0 -12
  144. package/masm/account_components/auth/multisig_guardian.masm +0 -16
  145. package/masm/account_components/auth/multisig_guardian_ecdsa.masm +0 -16
  146. package/masm/auth/guardian.masm +0 -199
  147. package/masm/auth/guardian_ecdsa.masm +0 -195
  148. package/masm/auth/multisig.masm +0 -554
  149. package/masm/auth/multisig_ecdsa.masm +0 -554
  150. package/src/account/masm/auth.ts +0 -1512
@@ -1,5 +1,5 @@
1
1
  import { beforeEach, describe, expect, it, vi } from 'vitest';
2
- const { mockFromVaultKey, mockFungibleAssetConstructor, mockHashElements, mockNormalizeHexWord, mockRandomWord, mockWordFromHex, noteMetadataCalls, saltFelts, } = vi.hoisted(() => {
2
+ const { mockFungibleAssetConstructor, mockHashElements, mockNormalizeHexWord, mockRandomWord, mockWordFromHex, noteMetadataCalls, noteRecipientCalls, noteStorageCalls, saltFelts, } = vi.hoisted(() => {
3
3
  const saltFelts = [
4
4
  { id: 'felt-0' },
5
5
  { id: 'felt-1' },
@@ -7,13 +7,10 @@ const { mockFromVaultKey, mockFungibleAssetConstructor, mockHashElements, mockNo
7
7
  { id: 'felt-3' },
8
8
  ];
9
9
  return {
10
- mockFromVaultKey: vi.fn((vaultKey, amount) => ({
11
- kind: 'asset-from-vault-key',
12
- vaultKey,
13
- amount,
14
- })),
15
10
  mockFungibleAssetConstructor: vi.fn(),
16
11
  noteMetadataCalls: [],
12
+ noteRecipientCalls: [],
13
+ noteStorageCalls: [],
17
14
  mockHashElements: vi.fn().mockReturnValue({ toString: () => 'serial' }),
18
15
  mockNormalizeHexWord: vi.fn((hex) => hex),
19
16
  mockRandomWord: vi.fn().mockReturnValue({
@@ -53,7 +50,9 @@ vi.mock('@miden-sdk/miden-sdk', () => {
53
50
  constructor(_assets) { }
54
51
  }
55
52
  class NoteStorage {
56
- constructor(_inputs) { }
53
+ constructor(inputs) {
54
+ noteStorageCalls.push([inputs]);
55
+ }
57
56
  }
58
57
  class NoteMetadata {
59
58
  constructor(sender, noteType, noteTag) {
@@ -61,7 +60,9 @@ vi.mock('@miden-sdk/miden-sdk', () => {
61
60
  }
62
61
  }
63
62
  class NoteRecipient {
64
- constructor(_serialNum, _noteScript, _noteInputs) { }
63
+ constructor(serialNum, noteScript, noteInputs) {
64
+ noteRecipientCalls.push([serialNum, noteScript, noteInputs]);
65
+ }
65
66
  }
66
67
  class Note {
67
68
  constructor(_assets, _metadata, _recipient) { }
@@ -70,7 +71,6 @@ vi.mock('@miden-sdk/miden-sdk', () => {
70
71
  constructor(faucet, amount) {
71
72
  mockFungibleAssetConstructor(faucet, amount);
72
73
  }
73
- static fromVaultKey = mockFromVaultKey;
74
74
  }
75
75
  class NoteArray {
76
76
  constructor(_notes) { }
@@ -111,6 +111,7 @@ vi.mock('@miden-sdk/miden-sdk', () => {
111
111
  NoteStorage,
112
112
  NoteScript: {
113
113
  p2id: vi.fn(() => ({ kind: 'p2id-script' })),
114
+ p2ide: vi.fn(() => ({ kind: 'p2ide-script' })),
114
115
  },
115
116
  NoteTag: {
116
117
  withAccountTarget: vi.fn(() => ({ kind: 'tag' })),
@@ -138,31 +139,22 @@ vi.mock('../utils/random.js', () => ({
138
139
  randomWord: mockRandomWord,
139
140
  }));
140
141
  import { buildP2idTransactionRequest, parseP2idNoteType, p2idNoteTypeToMetadata } from './p2id.js';
141
- const FAUCET_ID = '0x7bfb0f38b0fafa103f86a805594171';
142
- const mockAccount = {
143
- vault: () => ({
144
- fungibleAssets: () => [
145
- {
146
- faucetId: () => ({ toString: () => FAUCET_ID }),
147
- vaultKey: () => ({ kind: 'vault-key' }),
148
- },
149
- ],
150
- }),
151
- };
152
142
  import { NoteType } from '@miden-sdk/miden-sdk';
143
+ const FAUCET_ID = '0x7bfb0f38b0fafa103f86a805594171';
153
144
  describe('buildP2idTransactionRequest', () => {
154
145
  beforeEach(() => {
155
- mockFromVaultKey.mockClear();
156
146
  mockFungibleAssetConstructor.mockClear();
157
147
  mockHashElements.mockClear();
158
148
  mockNormalizeHexWord.mockClear();
159
149
  mockRandomWord.mockClear();
160
150
  mockWordFromHex.mockClear();
161
151
  noteMetadataCalls.length = 0;
152
+ noteRecipientCalls.length = 0;
153
+ noteStorageCalls.length = 0;
162
154
  });
163
155
  it('derives serial number from salt felts plus four zero felts', () => {
164
156
  const salt = { toHex: () => '0x' + '11'.repeat(32) };
165
- buildP2idTransactionRequest('0x7bfb0f38b0fafa103f86a805594170', '0x8a65fc5a39e4cd106d648e3eb4ab5f', FAUCET_ID, 10n, mockAccount, { salt });
157
+ buildP2idTransactionRequest('0x7bfb0f38b0fafa103f86a805594170', '0x8a65fc5a39e4cd106d648e3eb4ab5f', FAUCET_ID, 10n, { salt });
166
158
  expect(mockRandomWord).not.toHaveBeenCalled();
167
159
  expect(mockHashElements).toHaveBeenCalledTimes(1);
168
160
  const [feltArrayArg] = mockHashElements.mock.calls[0];
@@ -174,15 +166,61 @@ describe('buildP2idTransactionRequest', () => {
174
166
  }
175
167
  });
176
168
  it('creates a public note by default (issue #322)', () => {
177
- buildP2idTransactionRequest('0x7bfb0f38b0fafa103f86a805594170', '0x8a65fc5a39e4cd106d648e3eb4ab5f', '0x7bfb0f38b0fafa103f86a805594171', 10n, mockAccount);
169
+ buildP2idTransactionRequest('0x7bfb0f38b0fafa103f86a805594170', '0x8a65fc5a39e4cd106d648e3eb4ab5f', FAUCET_ID, 10n);
178
170
  expect(noteMetadataCalls).toHaveLength(1);
179
171
  expect(noteMetadataCalls[0][1]).toBe(NoteType.Public);
180
172
  });
173
+ it('builds the asset from the faucet id, whose callback flag it carries since Miden 0.16', () => {
174
+ buildP2idTransactionRequest('0x7bfb0f38b0fafa103f86a805594170', '0x8a65fc5a39e4cd106d648e3eb4ab5f', FAUCET_ID, 10n);
175
+ expect(mockFungibleAssetConstructor).toHaveBeenCalledTimes(1);
176
+ const [faucet, amount] = mockFungibleAssetConstructor.mock.calls[0];
177
+ expect(faucet.hex).toBe(FAUCET_ID);
178
+ expect(amount).toBe(10n);
179
+ });
181
180
  it('threads the requested noteType into the note metadata (issue #322)', () => {
182
- buildP2idTransactionRequest('0x7bfb0f38b0fafa103f86a805594170', '0x8a65fc5a39e4cd106d648e3eb4ab5f', '0x7bfb0f38b0fafa103f86a805594171', 10n, mockAccount, { noteType: NoteType.Private });
181
+ buildP2idTransactionRequest('0x7bfb0f38b0fafa103f86a805594170', '0x8a65fc5a39e4cd106d648e3eb4ab5f', '0x7bfb0f38b0fafa103f86a805594171', 10n, { noteType: NoteType.Private });
183
182
  expect(noteMetadataCalls).toHaveLength(1);
184
183
  expect(noteMetadataCalls[0][1]).toBe(NoteType.Private);
185
184
  });
185
+ it('builds a plain P2ID note without heights: p2id script, 2 storage items', () => {
186
+ buildP2idTransactionRequest('0x7bfb0f38b0fafa103f86a805594170', '0x8a65fc5a39e4cd106d648e3eb4ab5f', FAUCET_ID, 10n);
187
+ expect(noteRecipientCalls).toHaveLength(1);
188
+ expect(noteRecipientCalls[0][1]).toEqual({ kind: 'p2id-script' });
189
+ const [storageInputs] = noteStorageCalls[0];
190
+ expect(storageInputs.values).toEqual([2, 1]);
191
+ });
192
+ it('builds a P2IDE note when reclaimHeight is set (issue #366)', () => {
193
+ buildP2idTransactionRequest('0x7bfb0f38b0fafa103f86a805594170', '0x8a65fc5a39e4cd106d648e3eb4ab5f', FAUCET_ID, 10n, { reclaimHeight: 12345 });
194
+ expect(noteRecipientCalls).toHaveLength(1);
195
+ expect(noteRecipientCalls[0][1]).toEqual({ kind: 'p2ide-script' });
196
+ // P2IDE storage layout: [suffix, prefix, reclaim, timelock], 0 = unset.
197
+ const [storageInputs] = noteStorageCalls[0];
198
+ expect(storageInputs.values).toHaveLength(4);
199
+ expect(storageInputs.values.slice(0, 2)).toEqual([2, 1]);
200
+ expect(storageInputs.values[2].value).toBe(12345n);
201
+ expect(storageInputs.values[3].value).toBe(0n);
202
+ });
203
+ it('builds a P2IDE note when only timelockHeight is set (issue #366)', () => {
204
+ buildP2idTransactionRequest('0x7bfb0f38b0fafa103f86a805594170', '0x8a65fc5a39e4cd106d648e3eb4ab5f', FAUCET_ID, 10n, { timelockHeight: 777 });
205
+ expect(noteRecipientCalls[0][1]).toEqual({ kind: 'p2ide-script' });
206
+ const [storageInputs] = noteStorageCalls[0];
207
+ expect(storageInputs.values[2].value).toBe(0n);
208
+ expect(storageInputs.values[3].value).toBe(777n);
209
+ });
210
+ it('carries both heights into the P2IDE storage (issue #366)', () => {
211
+ buildP2idTransactionRequest('0x7bfb0f38b0fafa103f86a805594170', '0x8a65fc5a39e4cd106d648e3eb4ab5f', FAUCET_ID, 10n, { reclaimHeight: 500, timelockHeight: 400 });
212
+ const [storageInputs] = noteStorageCalls[0];
213
+ expect(storageInputs.values[2].value).toBe(500n);
214
+ expect(storageInputs.values[3].value).toBe(400n);
215
+ });
216
+ it.each([
217
+ ['zero', 0],
218
+ ['negative', -5],
219
+ ['fractional', 1.5],
220
+ ['above u32::MAX', 0x1_0000_0000],
221
+ ])('rejects a %s height instead of building a divergent note (issue #366)', (_label, height) => {
222
+ expect(() => buildP2idTransactionRequest('0x7bfb0f38b0fafa103f86a805594170', '0x8a65fc5a39e4cd106d648e3eb4ab5f', FAUCET_ID, 10n, { reclaimHeight: height })).toThrow(/unsupported reclaimHeight/);
223
+ });
186
224
  });
187
225
  describe('parseP2idNoteType', () => {
188
226
  it('maps absent to Public (pre-#322 proposals)', () => {
@@ -1 +1 @@
1
- {"version":3,"file":"p2id.test.js","sourceRoot":"","sources":["../../src/transaction/p2id.test.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"p2id.test.js","sourceRoot":"","sources":["../../src/transaction/p2id.test.ts"],"names":[],"mappings":"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"}
@@ -1,4 +1,47 @@
1
1
  import type { MidenClient, TransactionRequest, TransactionSummary, WasmWebClient } from '@miden-sdk/miden-sdk';
2
- export declare function executeForSummary(client: MidenClient, accountId: string, txRequest: TransactionRequest, midenRpcEndpoint: string): Promise<TransactionSummary>;
3
- export declare function executeForSummary(client: WasmWebClient, accountId: string, txRequest: TransactionRequest, midenRpcEndpoint?: string): Promise<TransactionSummary>;
2
+ import { ChainAnchor, Word } from '@miden-sdk/miden-sdk';
3
+ /**
4
+ * Captures a `ChainAnchor` for the request at the current sync height and
5
+ * executes the transaction against it to obtain the summary awaiting
6
+ * authorization. The anchor is returned alongside the summary so the proposer
7
+ * can ship it with the signed data; cosigners and the executor then reproduce
8
+ * the summary — which binds the reference block commitment since protocol
9
+ * 0.16 — with {@link executeForSummaryAt} regardless of their own sync height.
10
+ */
11
+ export declare function executeForSummary(client: MidenClient, accountId: string, txRequest: TransactionRequest, midenRpcEndpoint: string): Promise<{
12
+ summary: TransactionSummary;
13
+ anchor: ChainAnchor;
14
+ }>;
15
+ export declare function executeForSummary(client: WasmWebClient, accountId: string, txRequest: TransactionRequest, midenRpcEndpoint?: string): Promise<{
16
+ summary: TransactionSummary;
17
+ anchor: ChainAnchor;
18
+ }>;
19
+ /**
20
+ * Executes a transaction at the given `ChainAnchor`'s reference block to
21
+ * obtain the summary awaiting authorization — the anchored counterpart of
22
+ * {@link executeForSummary} for cosigners and executors holding a proposal's
23
+ * anchor.
24
+ */
25
+ export declare function executeForSummaryAt(client: MidenClient, accountId: string, txRequest: TransactionRequest, anchor: ChainAnchor, midenRpcEndpoint: string): Promise<TransactionSummary>;
26
+ export declare function executeForSummaryAt(client: WasmWebClient, accountId: string, txRequest: TransactionRequest, anchor: ChainAnchor, midenRpcEndpoint?: string): Promise<TransactionSummary>;
27
+ /**
28
+ * Serializes a `ChainAnchor` to base64 for the proposal wire payload.
29
+ */
30
+ export declare function chainAnchorToBase64(anchor: ChainAnchor): string;
31
+ /**
32
+ * Deserializes a `ChainAnchor` from its base64 wire form. `ChainAnchor`
33
+ * deserialization validates the header/chain consistency internally, so a
34
+ * decoded anchor only needs its block commitment checked against the signed
35
+ * transaction summary before it is safe to execute against.
36
+ */
37
+ export declare function chainAnchorFromBase64(anchorBase64: string): ChainAnchor;
38
+ /**
39
+ * Reads the auth-arg salt back out of a transaction summary.
40
+ *
41
+ * Since miden-protocol 0.16-rc the summary binds seven user-defined elements
42
+ * instead of a dedicated salt word. The guarded-multisig auth component zeroes
43
+ * the leading three and passes the auth args as the trailing four, so the salt
44
+ * is the tail of `userParams()`.
45
+ */
46
+ export declare function summarySalt(summary: TransactionSummary): Word;
4
47
  //# sourceMappingURL=summary.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"summary.d.ts","sourceRoot":"","sources":["../../src/transaction/summary.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,WAAW,EACX,kBAAkB,EAClB,kBAAkB,EAClB,aAAa,EACd,MAAM,sBAAsB,CAAC;AAI9B,wBAAgB,iBAAiB,CAC/B,MAAM,EAAE,WAAW,EACnB,SAAS,EAAE,MAAM,EACjB,SAAS,EAAE,kBAAkB,EAC7B,gBAAgB,EAAE,MAAM,GACvB,OAAO,CAAC,kBAAkB,CAAC,CAAC;AAC/B,wBAAgB,iBAAiB,CAC/B,MAAM,EAAE,aAAa,EACrB,SAAS,EAAE,MAAM,EACjB,SAAS,EAAE,kBAAkB,EAC7B,gBAAgB,CAAC,EAAE,MAAM,GACxB,OAAO,CAAC,kBAAkB,CAAC,CAAC"}
1
+ {"version":3,"file":"summary.d.ts","sourceRoot":"","sources":["../../src/transaction/summary.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,WAAW,EACX,kBAAkB,EAClB,kBAAkB,EAClB,aAAa,EACd,MAAM,sBAAsB,CAAC;AAC9B,OAAO,EAAa,WAAW,EAAE,IAAI,EAAE,MAAM,sBAAsB,CAAC;AAWpE;;;;;;;GAOG;AACH,wBAAgB,iBAAiB,CAC/B,MAAM,EAAE,WAAW,EACnB,SAAS,EAAE,MAAM,EACjB,SAAS,EAAE,kBAAkB,EAC7B,gBAAgB,EAAE,MAAM,GACvB,OAAO,CAAC;IAAE,OAAO,EAAE,kBAAkB,CAAC;IAAC,MAAM,EAAE,WAAW,CAAA;CAAE,CAAC,CAAC;AACjE,wBAAgB,iBAAiB,CAC/B,MAAM,EAAE,aAAa,EACrB,SAAS,EAAE,MAAM,EACjB,SAAS,EAAE,kBAAkB,EAC7B,gBAAgB,CAAC,EAAE,MAAM,GACxB,OAAO,CAAC;IAAE,OAAO,EAAE,kBAAkB,CAAC;IAAC,MAAM,EAAE,WAAW,CAAA;CAAE,CAAC,CAAC;AAcjE;;;;;GAKG;AACH,wBAAgB,mBAAmB,CACjC,MAAM,EAAE,WAAW,EACnB,SAAS,EAAE,MAAM,EACjB,SAAS,EAAE,kBAAkB,EAC7B,MAAM,EAAE,WAAW,EACnB,gBAAgB,EAAE,MAAM,GACvB,OAAO,CAAC,kBAAkB,CAAC,CAAC;AAC/B,wBAAgB,mBAAmB,CACjC,MAAM,EAAE,aAAa,EACrB,SAAS,EAAE,MAAM,EACjB,SAAS,EAAE,kBAAkB,EAC7B,MAAM,EAAE,WAAW,EACnB,gBAAgB,CAAC,EAAE,MAAM,GACxB,OAAO,CAAC,kBAAkB,CAAC,CAAC;AAa/B;;GAEG;AACH,wBAAgB,mBAAmB,CAAC,MAAM,EAAE,WAAW,GAAG,MAAM,CAE/D;AAED;;;;;GAKG;AACH,wBAAgB,qBAAqB,CAAC,YAAY,EAAE,MAAM,GAAG,WAAW,CAEvE;AAED;;;;;;;GAOG;AACH,wBAAgB,WAAW,CAAC,OAAO,EAAE,kBAAkB,GAAG,IAAI,CAE7D"}
@@ -1,8 +1,48 @@
1
- import { AccountId } from '@miden-sdk/miden-sdk';
1
+ import { AccountId, ChainAnchor, Word } from '@miden-sdk/miden-sdk';
2
2
  import { getRawMidenClient } from '../raw-client.js';
3
+ import { base64ToUint8Array, uint8ArrayToBase64 } from '../utils/encoding.js';
4
+ /**
5
+ * Index of the first user param carrying the auth-arg salt. The guarded-multisig
6
+ * auth component zeroes user params 0-2 and fills 3-6 with the auth args, matching
7
+ * `push.0.0.0` ahead of `multisig::auth_tx` in `guarded_multisig.masm`.
8
+ */
9
+ const SALT_USER_PARAM_OFFSET = 3;
3
10
  export async function executeForSummary(client, accountId, txRequest, midenRpcEndpoint) {
4
11
  const acc = AccountId.fromHex(accountId);
5
12
  const rawClient = await getRawMidenClient(client, midenRpcEndpoint);
6
- return rawClient.executeForSummary(acc, txRequest);
13
+ const anchor = await rawClient.chainAnchorForRequest(txRequest);
14
+ const summary = await rawClient.executeForSummaryAt(acc, txRequest, anchor);
15
+ return { summary, anchor };
16
+ }
17
+ export async function executeForSummaryAt(client, accountId, txRequest, anchor, midenRpcEndpoint) {
18
+ const acc = AccountId.fromHex(accountId);
19
+ const rawClient = await getRawMidenClient(client, midenRpcEndpoint);
20
+ return rawClient.executeForSummaryAt(acc, txRequest, anchor);
21
+ }
22
+ /**
23
+ * Serializes a `ChainAnchor` to base64 for the proposal wire payload.
24
+ */
25
+ export function chainAnchorToBase64(anchor) {
26
+ return uint8ArrayToBase64(anchor.serialize());
27
+ }
28
+ /**
29
+ * Deserializes a `ChainAnchor` from its base64 wire form. `ChainAnchor`
30
+ * deserialization validates the header/chain consistency internally, so a
31
+ * decoded anchor only needs its block commitment checked against the signed
32
+ * transaction summary before it is safe to execute against.
33
+ */
34
+ export function chainAnchorFromBase64(anchorBase64) {
35
+ return ChainAnchor.deserialize(base64ToUint8Array(anchorBase64));
36
+ }
37
+ /**
38
+ * Reads the auth-arg salt back out of a transaction summary.
39
+ *
40
+ * Since miden-protocol 0.16-rc the summary binds seven user-defined elements
41
+ * instead of a dedicated salt word. The guarded-multisig auth component zeroes
42
+ * the leading three and passes the auth args as the trailing four, so the salt
43
+ * is the tail of `userParams()`.
44
+ */
45
+ export function summarySalt(summary) {
46
+ return Word.newFromFelts(summary.userParams().slice(SALT_USER_PARAM_OFFSET));
7
47
  }
8
48
  //# sourceMappingURL=summary.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"summary.js","sourceRoot":"","sources":["../../src/transaction/summary.ts"],"names":[],"mappings":"AAMA,OAAO,EAAE,SAAS,EAAE,MAAM,sBAAsB,CAAC;AACjD,OAAO,EAAE,iBAAiB,EAAE,MAAM,kBAAkB,CAAC;AAcrD,MAAM,CAAC,KAAK,UAAU,iBAAiB,CACrC,MAAmC,EACnC,SAAiB,EACjB,SAA6B,EAC7B,gBAAyB;IAEzB,MAAM,GAAG,GAAG,SAAS,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC;IACzC,MAAM,SAAS,GAAG,MAAM,iBAAiB,CAAC,MAAM,EAAE,gBAAgB,CAAC,CAAC;IACpE,OAAO,SAAS,CAAC,iBAAiB,CAAC,GAAG,EAAE,SAAS,CAAC,CAAC;AACrD,CAAC"}
1
+ {"version":3,"file":"summary.js","sourceRoot":"","sources":["../../src/transaction/summary.ts"],"names":[],"mappings":"AAMA,OAAO,EAAE,SAAS,EAAE,WAAW,EAAE,IAAI,EAAE,MAAM,sBAAsB,CAAC;AACpE,OAAO,EAAE,iBAAiB,EAAE,MAAM,kBAAkB,CAAC;AACrD,OAAO,EAAE,kBAAkB,EAAE,kBAAkB,EAAE,MAAM,sBAAsB,CAAC;AAE9E;;;;GAIG;AACH,MAAM,sBAAsB,GAAG,CAAC,CAAC;AAsBjC,MAAM,CAAC,KAAK,UAAU,iBAAiB,CACrC,MAAmC,EACnC,SAAiB,EACjB,SAA6B,EAC7B,gBAAyB;IAEzB,MAAM,GAAG,GAAG,SAAS,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC;IACzC,MAAM,SAAS,GAAG,MAAM,iBAAiB,CAAC,MAAM,EAAE,gBAAgB,CAAC,CAAC;IACpE,MAAM,MAAM,GAAG,MAAM,SAAS,CAAC,qBAAqB,CAAC,SAAS,CAAC,CAAC;IAChE,MAAM,OAAO,GAAG,MAAM,SAAS,CAAC,mBAAmB,CAAC,GAAG,EAAE,SAAS,EAAE,MAAM,CAAC,CAAC;IAC5E,OAAO,EAAE,OAAO,EAAE,MAAM,EAAE,CAAC;AAC7B,CAAC;AAsBD,MAAM,CAAC,KAAK,UAAU,mBAAmB,CACvC,MAAmC,EACnC,SAAiB,EACjB,SAA6B,EAC7B,MAAmB,EACnB,gBAAyB;IAEzB,MAAM,GAAG,GAAG,SAAS,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC;IACzC,MAAM,SAAS,GAAG,MAAM,iBAAiB,CAAC,MAAM,EAAE,gBAAgB,CAAC,CAAC;IACpE,OAAO,SAAS,CAAC,mBAAmB,CAAC,GAAG,EAAE,SAAS,EAAE,MAAM,CAAC,CAAC;AAC/D,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,mBAAmB,CAAC,MAAmB;IACrD,OAAO,kBAAkB,CAAC,MAAM,CAAC,SAAS,EAAE,CAAC,CAAC;AAChD,CAAC;AAED;;;;;GAKG;AACH,MAAM,UAAU,qBAAqB,CAAC,YAAoB;IACxD,OAAO,WAAW,CAAC,WAAW,CAAC,kBAAkB,CAAC,YAAY,CAAC,CAAC,CAAC;AACnE,CAAC;AAED;;;;;;;GAOG;AACH,MAAM,UAAU,WAAW,CAAC,OAA2B;IACrD,OAAO,IAAI,CAAC,YAAY,CAAC,OAAO,CAAC,UAAU,EAAE,CAAC,KAAK,CAAC,sBAAsB,CAAC,CAAC,CAAC;AAC/E,CAAC"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=summary.test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"summary.test.d.ts","sourceRoot":"","sources":["../../src/transaction/summary.test.ts"],"names":[],"mappings":""}
@@ -0,0 +1,26 @@
1
+ import { describe, expect, it, vi } from 'vitest';
2
+ vi.mock('@miden-sdk/miden-sdk', () => ({
3
+ AccountId: { fromHex: vi.fn() },
4
+ Word: {
5
+ newFromFelts: vi.fn((felts) => ({ felts })),
6
+ },
7
+ }));
8
+ vi.mock('../raw-client.js', () => ({
9
+ getRawMidenClient: vi.fn(),
10
+ }));
11
+ const { summarySalt } = await import('./summary.js');
12
+ describe('summarySalt', () => {
13
+ it('reads the salt from the trailing four user params', () => {
14
+ const summary = {
15
+ userParams: () => [0, 0, 0, 11, 22, 33, 44],
16
+ };
17
+ expect(summarySalt(summary)).toEqual({ felts: [11, 22, 33, 44] });
18
+ });
19
+ it('ignores the leading three user params the auth component zeroes', () => {
20
+ const summary = {
21
+ userParams: () => [7, 8, 9, 11, 22, 33, 44],
22
+ };
23
+ expect(summarySalt(summary)).toEqual({ felts: [11, 22, 33, 44] });
24
+ });
25
+ });
26
+ //# sourceMappingURL=summary.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"summary.test.js","sourceRoot":"","sources":["../../src/transaction/summary.test.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,EAAE,EAAE,EAAE,EAAE,EAAE,MAAM,QAAQ,CAAC;AAElD,EAAE,CAAC,IAAI,CAAC,sBAAsB,EAAE,GAAG,EAAE,CAAC,CAAC;IACrC,SAAS,EAAE,EAAE,OAAO,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE;IAC/B,IAAI,EAAE;QACJ,YAAY,EAAE,EAAE,CAAC,EAAE,CAAC,CAAC,KAAgB,EAAE,EAAE,CAAC,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC;KACvD;CACF,CAAC,CAAC,CAAC;AAEJ,EAAE,CAAC,IAAI,CAAC,kBAAkB,EAAE,GAAG,EAAE,CAAC,CAAC;IACjC,iBAAiB,EAAE,EAAE,CAAC,EAAE,EAAE;CAC3B,CAAC,CAAC,CAAC;AAEJ,MAAM,EAAE,WAAW,EAAE,GAAG,MAAM,MAAM,CAAC,cAAc,CAAC,CAAC;AAErD,QAAQ,CAAC,aAAa,EAAE,GAAG,EAAE;IAC3B,EAAE,CAAC,mDAAmD,EAAE,GAAG,EAAE;QAC3D,MAAM,OAAO,GAAG;YACd,UAAU,EAAE,GAAG,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC;SACnC,CAAC;QAEX,MAAM,CAAC,WAAW,CAAC,OAAO,CAAC,CAAC,CAAC,OAAO,CAAC,EAAE,KAAK,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,CAAC;IACpE,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,iEAAiE,EAAE,GAAG,EAAE;QACzE,MAAM,OAAO,GAAG;YACd,UAAU,EAAE,GAAG,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC;SACnC,CAAC;QAEX,MAAM,CAAC,WAAW,CAAC,OAAO,CAAC,CAAC,CAAC,OAAO,CAAC,EAAE,KAAK,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,CAAC;IACpE,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"updateGuardian.d.ts","sourceRoot":"","sources":["../../src/transaction/updateGuardian.ts"],"names":[],"mappings":"AAAA,OAAO,EAGL,KAAK,WAAW,EAChB,kBAAkB,EAGlB,KAAK,aAAa,EAClB,IAAI,EAEL,MAAM,sBAAsB,CAAC;AAK9B,OAAO,KAAK,EAAE,2BAA2B,EAAE,gBAAgB,EAAE,MAAM,cAAc,CAAC;AA6BlF,wBAAgB,qCAAqC,CACnD,MAAM,EAAE,WAAW,EACnB,iBAAiB,EAAE,MAAM,EACzB,OAAO,EAAE,2BAA2B,GACnC,OAAO,CAAC;IAAE,OAAO,EAAE,kBAAkB,CAAC;IAAC,IAAI,EAAE,IAAI,CAAA;CAAE,CAAC,CAAC;AACxD,wBAAgB,qCAAqC,CACnD,MAAM,EAAE,aAAa,EACrB,iBAAiB,EAAE,MAAM,EACzB,OAAO,CAAC,EAAE,gBAAgB,GACzB,OAAO,CAAC;IAAE,OAAO,EAAE,kBAAkB,CAAC;IAAC,IAAI,EAAE,IAAI,CAAA;CAAE,CAAC,CAAC"}
1
+ {"version":3,"file":"updateGuardian.d.ts","sourceRoot":"","sources":["../../src/transaction/updateGuardian.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,KAAK,WAAW,EAChB,kBAAkB,EAGlB,KAAK,aAAa,EAClB,IAAI,EAEL,MAAM,sBAAsB,CAAC;AAK9B,OAAO,KAAK,EAAE,2BAA2B,EAAE,gBAAgB,EAAE,MAAM,cAAc,CAAC;AA8BlF,wBAAgB,qCAAqC,CACnD,MAAM,EAAE,WAAW,EACnB,iBAAiB,EAAE,MAAM,EACzB,OAAO,EAAE,2BAA2B,GACnC,OAAO,CAAC;IAAE,OAAO,EAAE,kBAAkB,CAAC;IAAC,IAAI,EAAE,IAAI,CAAA;CAAE,CAAC,CAAC;AACxD,wBAAgB,qCAAqC,CACnD,MAAM,EAAE,aAAa,EACrB,iBAAiB,EAAE,MAAM,EACzB,OAAO,CAAC,EAAE,gBAAgB,GACzB,OAAO,CAAC;IAAE,OAAO,EAAE,kBAAkB,CAAC;IAAC,IAAI,EAAE,IAAI,CAAA;CAAE,CAAC,CAAC"}
@@ -1,36 +1,34 @@
1
- import { AdviceMap, FeltArray, TransactionRequestBuilder, Word as WordType, } from '@miden-sdk/miden-sdk';
2
- import { GUARDIAN_ECDSA_MASM, GUARDIAN_MASM } from '../account/masm/auth.js';
1
+ import { TransactionRequestBuilder, Word as WordType, } from '@miden-sdk/miden-sdk';
3
2
  import { compileTxScript } from '../raw-client.js';
4
3
  import { normalizeHexWord } from '../utils/encoding.js';
5
4
  import { randomWord } from '../utils/random.js';
6
- async function buildUpdateGuardianScript(client, signatureScheme, midenRpcEndpoint) {
7
- const guardianLibraryPath = 'oz_guardian::guardian';
8
- const guardianMasm = signatureScheme === 'ecdsa' ? GUARDIAN_ECDSA_MASM : GUARDIAN_MASM;
5
+ import { authSchemeId } from '../utils/signature.js';
6
+ async function buildUpdateGuardianScript(client, newGuardianPubkey, signatureScheme, midenRpcEndpoint) {
7
+ // A word literal preserves the key's element order on the operand stack.
8
+ const keyLiteral = normalizeHexWord(newGuardianPubkey);
9
+ const schemeId = authSchemeId(signatureScheme);
10
+ // Calling the origin procedure yields the same MAST root as its component re-export.
9
11
  const scriptSource = `
10
- use oz_guardian::guardian
12
+ use miden::standards::auth::guardian
11
13
 
12
- begin
13
- adv.push_mapval
14
- dropw
14
+ @transaction_script
15
+ pub proc main
16
+ push.${keyLiteral}
17
+ push.${schemeId}
15
18
  call.guardian::update_guardian_public_key
19
+ drop
20
+ dropw
16
21
  end
17
22
  `;
18
- return compileTxScript(client, scriptSource, [{ namespace: guardianLibraryPath, code: guardianMasm }], midenRpcEndpoint);
23
+ return compileTxScript(client, scriptSource, [], midenRpcEndpoint);
19
24
  }
20
25
  export async function buildUpdateGuardianTransactionRequest(client, newGuardianPubkey, options = {}) {
21
26
  const signatureScheme = options.signatureScheme ?? 'falcon';
22
- const script = await buildUpdateGuardianScript(client, signatureScheme, options.midenRpcEndpoint);
27
+ const script = await buildUpdateGuardianScript(client, newGuardianPubkey, signatureScheme, options.midenRpcEndpoint);
23
28
  const authSaltHex = options.salt ? options.salt.toHex() : randomWord().toHex();
24
- const pubkeyWordForAdvice = WordType.fromHex(normalizeHexWord(newGuardianPubkey));
25
- const pubkeyWordForFelts = WordType.fromHex(normalizeHexWord(newGuardianPubkey));
26
- const pubkeyWordForScript = WordType.fromHex(normalizeHexWord(newGuardianPubkey));
27
- const advice = new AdviceMap();
28
- advice.insert(pubkeyWordForAdvice, new FeltArray(pubkeyWordForFelts.toFelts()));
29
29
  const authSaltForBuilder = WordType.fromHex(normalizeHexWord(authSaltHex));
30
30
  let txBuilder = new TransactionRequestBuilder();
31
31
  txBuilder = txBuilder.withCustomScript(script);
32
- txBuilder = txBuilder.withScriptArg(pubkeyWordForScript);
33
- txBuilder = txBuilder.extendAdviceMap(advice);
34
32
  txBuilder = txBuilder.withAuthArg(authSaltForBuilder);
35
33
  if (options.signatureAdviceMap) {
36
34
  txBuilder = txBuilder.extendAdviceMap(options.signatureAdviceMap);
@@ -1 +1 @@
1
- {"version":3,"file":"updateGuardian.js","sourceRoot":"","sources":["../../src/transaction/updateGuardian.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,SAAS,EACT,SAAS,EAGT,yBAAyB,EAIzB,IAAI,IAAI,QAAQ,GACjB,MAAM,sBAAsB,CAAC;AAC9B,OAAO,EAAE,mBAAmB,EAAE,aAAa,EAAE,MAAM,yBAAyB,CAAC;AAC7E,OAAO,EAAE,eAAe,EAAE,MAAM,kBAAkB,CAAC;AACnD,OAAO,EAAE,gBAAgB,EAAE,MAAM,sBAAsB,CAAC;AACxD,OAAO,EAAE,UAAU,EAAE,MAAM,oBAAoB,CAAC;AAIhD,KAAK,UAAU,yBAAyB,CACtC,MAAmC,EACnC,eAAgC,EAChC,gBAAyB;IAEzB,MAAM,mBAAmB,GAAG,uBAAuB,CAAC;IACpD,MAAM,YAAY,GAAG,eAAe,KAAK,OAAO,CAAC,CAAC,CAAC,mBAAmB,CAAC,CAAC,CAAC,aAAa,CAAC;IAEvF,MAAM,YAAY,GAAG;;;;;;;;GAQpB,CAAC;IAEF,OAAO,eAAe,CACpB,MAAM,EACN,YAAY,EACZ,CAAC,EAAE,SAAS,EAAE,mBAAmB,EAAE,IAAI,EAAE,YAAY,EAAE,CAAC,EACxD,gBAAgB,CACjB,CAAC;AACJ,CAAC;AAYD,MAAM,CAAC,KAAK,UAAU,qCAAqC,CACzD,MAAmC,EACnC,iBAAyB,EACzB,UAA4B,EAAE;IAE9B,MAAM,eAAe,GAAG,OAAO,CAAC,eAAe,IAAI,QAAQ,CAAC;IAC5D,MAAM,MAAM,GAAG,MAAM,yBAAyB,CAC5C,MAAM,EACN,eAAe,EACf,OAAO,CAAC,gBAAgB,CACzB,CAAC;IAEF,MAAM,WAAW,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC,UAAU,EAAE,CAAC,KAAK,EAAE,CAAC;IAE/E,MAAM,mBAAmB,GAAG,QAAQ,CAAC,OAAO,CAAC,gBAAgB,CAAC,iBAAiB,CAAC,CAAC,CAAC;IAClF,MAAM,kBAAkB,GAAG,QAAQ,CAAC,OAAO,CAAC,gBAAgB,CAAC,iBAAiB,CAAC,CAAC,CAAC;IACjF,MAAM,mBAAmB,GAAG,QAAQ,CAAC,OAAO,CAAC,gBAAgB,CAAC,iBAAiB,CAAC,CAAC,CAAC;IAElF,MAAM,MAAM,GAAG,IAAI,SAAS,EAAE,CAAC;IAC/B,MAAM,CAAC,MAAM,CAAC,mBAAmB,EAAE,IAAI,SAAS,CAAC,kBAAkB,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC;IAEhF,MAAM,kBAAkB,GAAG,QAAQ,CAAC,OAAO,CAAC,gBAAgB,CAAC,WAAW,CAAC,CAAC,CAAC;IAE3E,IAAI,SAAS,GAAG,IAAI,yBAAyB,EAAE,CAAC;IAChD,SAAS,GAAG,SAAS,CAAC,gBAAgB,CAAC,MAAM,CAAC,CAAC;IAC/C,SAAS,GAAG,SAAS,CAAC,aAAa,CAAC,mBAAmB,CAAC,CAAC;IACzD,SAAS,GAAG,SAAS,CAAC,eAAe,CAAC,MAAM,CAAC,CAAC;IAC9C,SAAS,GAAG,SAAS,CAAC,WAAW,CAAC,kBAAkB,CAAC,CAAC;IAEtD,IAAI,OAAO,CAAC,kBAAkB,EAAE,CAAC;QAC/B,SAAS,GAAG,SAAS,CAAC,eAAe,CAAC,OAAO,CAAC,kBAAkB,CAAC,CAAC;IACpE,CAAC;IAED,MAAM,iBAAiB,GAAG,QAAQ,CAAC,OAAO,CAAC,gBAAgB,CAAC,WAAW,CAAC,CAAC,CAAC;IAE1E,OAAO;QACL,OAAO,EAAE,SAAS,CAAC,KAAK,EAAE;QAC1B,IAAI,EAAE,iBAAiB;KACxB,CAAC;AACJ,CAAC"}
1
+ {"version":3,"file":"updateGuardian.js","sourceRoot":"","sources":["../../src/transaction/updateGuardian.ts"],"names":[],"mappings":"AAAA,OAAO,EAGL,yBAAyB,EAIzB,IAAI,IAAI,QAAQ,GACjB,MAAM,sBAAsB,CAAC;AAC9B,OAAO,EAAE,eAAe,EAAE,MAAM,kBAAkB,CAAC;AACnD,OAAO,EAAE,gBAAgB,EAAE,MAAM,sBAAsB,CAAC;AACxD,OAAO,EAAE,UAAU,EAAE,MAAM,oBAAoB,CAAC;AAChD,OAAO,EAAE,YAAY,EAAE,MAAM,uBAAuB,CAAC;AAIrD,KAAK,UAAU,yBAAyB,CACtC,MAAmC,EACnC,iBAAyB,EACzB,eAAgC,EAChC,gBAAyB;IAEzB,yEAAyE;IACzE,MAAM,UAAU,GAAG,gBAAgB,CAAC,iBAAiB,CAAC,CAAC;IACvD,MAAM,QAAQ,GAAG,YAAY,CAAC,eAAe,CAAC,CAAC;IAE/C,qFAAqF;IACrF,MAAM,YAAY,GAAG;;;;;WAKZ,UAAU;WACV,QAAQ;;;;;GAKhB,CAAC;IAEF,OAAO,eAAe,CAAC,MAAM,EAAE,YAAY,EAAE,EAAE,EAAE,gBAAgB,CAAC,CAAC;AACrE,CAAC;AAYD,MAAM,CAAC,KAAK,UAAU,qCAAqC,CACzD,MAAmC,EACnC,iBAAyB,EACzB,UAA4B,EAAE;IAE9B,MAAM,eAAe,GAAG,OAAO,CAAC,eAAe,IAAI,QAAQ,CAAC;IAC5D,MAAM,MAAM,GAAG,MAAM,yBAAyB,CAC5C,MAAM,EACN,iBAAiB,EACjB,eAAe,EACf,OAAO,CAAC,gBAAgB,CACzB,CAAC;IAEF,MAAM,WAAW,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC,UAAU,EAAE,CAAC,KAAK,EAAE,CAAC;IAC/E,MAAM,kBAAkB,GAAG,QAAQ,CAAC,OAAO,CAAC,gBAAgB,CAAC,WAAW,CAAC,CAAC,CAAC;IAE3E,IAAI,SAAS,GAAG,IAAI,yBAAyB,EAAE,CAAC;IAChD,SAAS,GAAG,SAAS,CAAC,gBAAgB,CAAC,MAAM,CAAC,CAAC;IAC/C,SAAS,GAAG,SAAS,CAAC,WAAW,CAAC,kBAAkB,CAAC,CAAC;IAEtD,IAAI,OAAO,CAAC,kBAAkB,EAAE,CAAC;QAC/B,SAAS,GAAG,SAAS,CAAC,eAAe,CAAC,OAAO,CAAC,kBAAkB,CAAC,CAAC;IACpE,CAAC;IAED,MAAM,iBAAiB,GAAG,QAAQ,CAAC,OAAO,CAAC,gBAAgB,CAAC,WAAW,CAAC,CAAC,CAAC;IAE1E,OAAO;QACL,OAAO,EAAE,SAAS,CAAC,KAAK,EAAE;QAC1B,IAAI,EAAE,iBAAiB;KACxB,CAAC;AACJ,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"updateProcedureThreshold.d.ts","sourceRoot":"","sources":["../../src/transaction/updateProcedureThreshold.ts"],"names":[],"mappings":"AAAA,OAAO,EAGL,KAAK,WAAW,EAEhB,kBAAkB,EAGlB,KAAK,aAAa,EAClB,IAAI,EAEL,MAAM,sBAAsB,CAAC;AAK9B,OAAO,EAAoB,KAAK,aAAa,EAAE,MAAM,kBAAkB,CAAC;AAIxE,OAAO,KAAK,EAAE,2BAA2B,EAAE,gBAAgB,EAAE,MAAM,cAAc,CAAC;AA0DlF,wBAAgB,+CAA+C,CAC7D,MAAM,EAAE,WAAW,EACnB,SAAS,EAAE,aAAa,EACxB,SAAS,EAAE,MAAM,EACjB,OAAO,EAAE,2BAA2B,GACnC,OAAO,CAAC;IAAE,OAAO,EAAE,kBAAkB,CAAC;IAAC,IAAI,EAAE,IAAI,CAAC;IAAC,UAAU,EAAE,IAAI,CAAA;CAAE,CAAC,CAAC;AAC1E,wBAAgB,+CAA+C,CAC7D,MAAM,EAAE,aAAa,EACrB,SAAS,EAAE,aAAa,EACxB,SAAS,EAAE,MAAM,EACjB,OAAO,CAAC,EAAE,gBAAgB,GACzB,OAAO,CAAC;IAAE,OAAO,EAAE,kBAAkB,CAAC;IAAC,IAAI,EAAE,IAAI,CAAC;IAAC,UAAU,EAAE,IAAI,CAAA;CAAE,CAAC,CAAC"}
1
+ {"version":3,"file":"updateProcedureThreshold.d.ts","sourceRoot":"","sources":["../../src/transaction/updateProcedureThreshold.ts"],"names":[],"mappings":"AAAA,OAAO,EAGL,KAAK,WAAW,EAEhB,kBAAkB,EAGlB,KAAK,aAAa,EAClB,IAAI,EAEL,MAAM,sBAAsB,CAAC;AAC9B,OAAO,EAAoB,KAAK,aAAa,EAAE,MAAM,kBAAkB,CAAC;AAIxE,OAAO,KAAK,EAAE,2BAA2B,EAAE,gBAAgB,EAAE,MAAM,cAAc,CAAC;AAgDlF,wBAAgB,+CAA+C,CAC7D,MAAM,EAAE,WAAW,EACnB,SAAS,EAAE,aAAa,EACxB,SAAS,EAAE,MAAM,EACjB,OAAO,EAAE,2BAA2B,GACnC,OAAO,CAAC;IAAE,OAAO,EAAE,kBAAkB,CAAC;IAAC,IAAI,EAAE,IAAI,CAAC;IAAC,UAAU,EAAE,IAAI,CAAA;CAAE,CAAC,CAAC;AAC1E,wBAAgB,+CAA+C,CAC7D,MAAM,EAAE,aAAa,EACrB,SAAS,EAAE,aAAa,EACxB,SAAS,EAAE,MAAM,EACjB,OAAO,CAAC,EAAE,gBAAgB,GACzB,OAAO,CAAC;IAAE,OAAO,EAAE,kBAAkB,CAAC;IAAC,IAAI,EAAE,IAAI,CAAC;IAAC,UAAU,EAAE,IAAI,CAAA;CAAE,CAAC,CAAC"}
@@ -1,5 +1,4 @@
1
1
  import { Felt, FeltArray, Poseidon2, TransactionRequestBuilder, Word as WordType, } from '@miden-sdk/miden-sdk';
2
- import { MULTISIG_ECDSA_MASM, MULTISIG_MASM, } from '../account/masm/auth.js';
3
2
  import { getProcedureRoot } from '../procedures.js';
4
3
  import { compileTxScript } from '../raw-client.js';
5
4
  import { normalizeHexWord } from '../utils/encoding.js';
@@ -14,34 +13,33 @@ function buildProcedureThresholdFelts(procedure, threshold) {
14
13
  new Felt(0n),
15
14
  ];
16
15
  }
17
- function buildProcedureThresholdAdvice(procedure, threshold) {
18
- // `Poseidon2.hashElements` consumes (frees) its `FeltArray` by value, so the
19
- // advice payload must be a freshly built one — reusing the hashed array
20
- // surfaces as "null pointer passed to rust" at the later `advice.insert`.
21
- const configHash = Poseidon2.hashElements(new FeltArray(buildProcedureThresholdFelts(procedure, threshold)));
22
- const payload = new FeltArray(buildProcedureThresholdFelts(procedure, threshold));
23
- return { configHash, payload };
16
+ /**
17
+ * `set_procedure_threshold` reads its `[proc_threshold, PROC_ROOT]` inputs from the operand stack
18
+ * (pushed by the script), so no advice-map entry is attached; this hash is returned only for
19
+ * caller bookkeeping.
20
+ */
21
+ function buildProcedureThresholdConfigHash(procedure, threshold) {
22
+ return Poseidon2.hashElements(new FeltArray(buildProcedureThresholdFelts(procedure, threshold)));
24
23
  }
25
- async function buildUpdateProcedureThresholdScript(client, procedure, threshold, signatureScheme, midenRpcEndpoint) {
26
- const multisigMasm = signatureScheme === 'ecdsa' ? MULTISIG_ECDSA_MASM : MULTISIG_MASM;
24
+ async function buildUpdateProcedureThresholdScript(client, procedure, threshold, midenRpcEndpoint) {
27
25
  const procedureRoot = normalizeHexWord(getProcedureRoot(procedure));
28
26
  const scriptSource = `
29
- use oz_multisig::multisig
27
+ use miden::standards::auth::multisig
30
28
 
31
- begin
29
+ @transaction_script
30
+ pub proc main
32
31
  push.${procedureRoot}
33
32
  push.${threshold}
34
- call.multisig::update_procedure_threshold
33
+ call.multisig::set_procedure_threshold
35
34
  dropw
36
35
  drop
37
36
  end
38
37
  `;
39
- return compileTxScript(client, scriptSource, [{ namespace: 'oz_multisig::multisig', code: multisigMasm }], midenRpcEndpoint);
38
+ return compileTxScript(client, scriptSource, [], midenRpcEndpoint);
40
39
  }
41
40
  export async function buildUpdateProcedureThresholdTransactionRequest(client, procedure, threshold, options = {}) {
42
- const signatureScheme = options.signatureScheme ?? 'falcon';
43
- const { configHash } = buildProcedureThresholdAdvice(procedure, threshold);
44
- const script = await buildUpdateProcedureThresholdScript(client, procedure, threshold, signatureScheme, options.midenRpcEndpoint);
41
+ const configHash = buildProcedureThresholdConfigHash(procedure, threshold);
42
+ const script = await buildUpdateProcedureThresholdScript(client, procedure, threshold, options.midenRpcEndpoint);
45
43
  const authSaltHex = options.salt ? options.salt.toHex() : randomWord().toHex();
46
44
  const authSalt = WordType.fromHex(normalizeHexWord(authSaltHex));
47
45
  let txBuilder = new TransactionRequestBuilder();
@@ -1 +1 @@
1
- {"version":3,"file":"updateProcedureThreshold.js","sourceRoot":"","sources":["../../src/transaction/updateProcedureThreshold.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"updateProcedureThreshold.js","sourceRoot":"","sources":["../../src/transaction/updateProcedureThreshold.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,IAAI,EACJ,SAAS,EAET,SAAS,EAET,yBAAyB,EAIzB,IAAI,IAAI,QAAQ,GACjB,MAAM,sBAAsB,CAAC;AAC9B,OAAO,EAAE,gBAAgB,EAAsB,MAAM,kBAAkB,CAAC;AACxE,OAAO,EAAE,eAAe,EAAE,MAAM,kBAAkB,CAAC;AACnD,OAAO,EAAE,gBAAgB,EAAE,MAAM,sBAAsB,CAAC;AACxD,OAAO,EAAE,UAAU,EAAE,MAAM,oBAAoB,CAAC;AAGhD,SAAS,4BAA4B,CAAC,SAAwB,EAAE,SAAiB;IAC/E,MAAM,aAAa,GAAG,QAAQ,CAAC,OAAO,CAAC,gBAAgB,CAAC,gBAAgB,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC;IACtF,OAAO;QACL,GAAG,aAAa,CAAC,OAAO,EAAE;QAC1B,IAAI,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC;QAC3B,IAAI,IAAI,CAAC,EAAE,CAAC;QACZ,IAAI,IAAI,CAAC,EAAE,CAAC;QACZ,IAAI,IAAI,CAAC,EAAE,CAAC;KACb,CAAC;AACJ,CAAC;AAED;;;;GAIG;AACH,SAAS,iCAAiC,CAAC,SAAwB,EAAE,SAAiB;IACpF,OAAO,SAAS,CAAC,YAAY,CAC3B,IAAI,SAAS,CAAC,4BAA4B,CAAC,SAAS,EAAE,SAAS,CAAC,CAAC,CAClE,CAAC;AACJ,CAAC;AAED,KAAK,UAAU,mCAAmC,CAChD,MAAmC,EACnC,SAAwB,EACxB,SAAiB,EACjB,gBAAyB;IAEzB,MAAM,aAAa,GAAG,gBAAgB,CAAC,gBAAgB,CAAC,SAAS,CAAC,CAAC,CAAC;IAEpE,MAAM,YAAY,GAAG;;;;;WAKZ,aAAa;WACb,SAAS;;;;;GAKjB,CAAC;IAEF,OAAO,eAAe,CAAC,MAAM,EAAE,YAAY,EAAE,EAAE,EAAE,gBAAgB,CAAC,CAAC;AACrE,CAAC;AAcD,MAAM,CAAC,KAAK,UAAU,+CAA+C,CACnE,MAAmC,EACnC,SAAwB,EACxB,SAAiB,EACjB,UAA4B,EAAE;IAE9B,MAAM,UAAU,GAAG,iCAAiC,CAAC,SAAS,EAAE,SAAS,CAAC,CAAC;IAE3E,MAAM,MAAM,GAAG,MAAM,mCAAmC,CACtD,MAAM,EACN,SAAS,EACT,SAAS,EACT,OAAO,CAAC,gBAAgB,CACzB,CAAC;IACF,MAAM,WAAW,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC,UAAU,EAAE,CAAC,KAAK,EAAE,CAAC;IAC/E,MAAM,QAAQ,GAAG,QAAQ,CAAC,OAAO,CAAC,gBAAgB,CAAC,WAAW,CAAC,CAAC,CAAC;IAEjE,IAAI,SAAS,GAAG,IAAI,yBAAyB,EAAE,CAAC;IAChD,SAAS,GAAG,SAAS,CAAC,gBAAgB,CAAC,MAAM,CAAC,CAAC;IAC/C,SAAS,GAAG,SAAS,CAAC,WAAW,CAAC,QAAQ,CAAC,CAAC;IAE5C,IAAI,OAAO,CAAC,kBAAkB,EAAE,CAAC;QAC/B,SAAS,GAAG,SAAS,CAAC,eAAe,CAAC,OAAO,CAAC,kBAAkB,CAAC,CAAC;IACpE,CAAC;IAED,OAAO;QACL,OAAO,EAAE,SAAS,CAAC,KAAK,EAAE;QAC1B,IAAI,EAAE,QAAQ,CAAC,OAAO,CAAC,gBAAgB,CAAC,WAAW,CAAC,CAAC;QACrD,UAAU;KACX,CAAC;AACJ,CAAC"}
@@ -1,5 +1,10 @@
1
- import { type MidenClient, TransactionRequest, type WasmWebClient, Word } from '@miden-sdk/miden-sdk';
1
+ import { FeltArray, type MidenClient, TransactionRequest, type WasmWebClient, Word } from '@miden-sdk/miden-sdk';
2
2
  import type { MidenClientSignatureOptions, SignatureOptions } from './options.js';
3
+ import type { SignatureScheme } from '../types.js';
4
+ export declare function buildMultisigConfigAdvice(threshold: number, signerCommitments: string[], signatureScheme: SignatureScheme): {
5
+ configHash: Word;
6
+ payload: FeltArray;
7
+ };
3
8
  export declare function buildUpdateSignersTransactionRequest(client: MidenClient, threshold: number, signerCommitments: string[], options: MidenClientSignatureOptions): Promise<{
4
9
  request: TransactionRequest;
5
10
  salt: Word;
@@ -1 +1 @@
1
- {"version":3,"file":"updateSigners.d.ts","sourceRoot":"","sources":["../../src/transaction/updateSigners.ts"],"names":[],"mappings":"AAAA,OAAO,EAIL,KAAK,WAAW,EAEhB,kBAAkB,EAGlB,KAAK,aAAa,EAClB,IAAI,EAEL,MAAM,sBAAsB,CAAC;AAQ9B,OAAO,KAAK,EAAE,2BAA2B,EAAE,gBAAgB,EAAE,MAAM,cAAc,CAAC;AAuDlF,wBAAgB,oCAAoC,CAClD,MAAM,EAAE,WAAW,EACnB,SAAS,EAAE,MAAM,EACjB,iBAAiB,EAAE,MAAM,EAAE,EAC3B,OAAO,EAAE,2BAA2B,GACnC,OAAO,CAAC;IAAE,OAAO,EAAE,kBAAkB,CAAC;IAAC,IAAI,EAAE,IAAI,CAAC;IAAC,UAAU,EAAE,IAAI,CAAA;CAAE,CAAC,CAAC;AAC1E,wBAAgB,oCAAoC,CAClD,MAAM,EAAE,aAAa,EACrB,SAAS,EAAE,MAAM,EACjB,iBAAiB,EAAE,MAAM,EAAE,EAC3B,OAAO,CAAC,EAAE,gBAAgB,GACzB,OAAO,CAAC;IAAE,OAAO,EAAE,kBAAkB,CAAC;IAAC,IAAI,EAAE,IAAI,CAAC;IAAC,UAAU,EAAE,IAAI,CAAA;CAAE,CAAC,CAAC"}
1
+ {"version":3,"file":"updateSigners.d.ts","sourceRoot":"","sources":["../../src/transaction/updateSigners.ts"],"names":[],"mappings":"AAAA,OAAO,EAGL,SAAS,EACT,KAAK,WAAW,EAEhB,kBAAkB,EAGlB,KAAK,aAAa,EAClB,IAAI,EAEL,MAAM,sBAAsB,CAAC;AAK9B,OAAO,KAAK,EAAE,2BAA2B,EAAE,gBAAgB,EAAE,MAAM,cAAc,CAAC;AAClF,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,aAAa,CAAC;AAwBnD,wBAAgB,yBAAyB,CACvC,SAAS,EAAE,MAAM,EACjB,iBAAiB,EAAE,MAAM,EAAE,EAC3B,eAAe,EAAE,eAAe,GAC/B;IAAE,UAAU,EAAE,IAAI,CAAC;IAAC,OAAO,EAAE,SAAS,CAAA;CAAE,CAW1C;AAkBD,wBAAgB,oCAAoC,CAClD,MAAM,EAAE,WAAW,EACnB,SAAS,EAAE,MAAM,EACjB,iBAAiB,EAAE,MAAM,EAAE,EAC3B,OAAO,EAAE,2BAA2B,GACnC,OAAO,CAAC;IAAE,OAAO,EAAE,kBAAkB,CAAC;IAAC,IAAI,EAAE,IAAI,CAAC;IAAC,UAAU,EAAE,IAAI,CAAA;CAAE,CAAC,CAAC;AAC1E,wBAAgB,oCAAoC,CAClD,MAAM,EAAE,aAAa,EACrB,SAAS,EAAE,MAAM,EACjB,iBAAiB,EAAE,MAAM,EAAE,EAC3B,OAAO,CAAC,EAAE,gBAAgB,GACzB,OAAO,CAAC;IAAE,OAAO,EAAE,kBAAkB,CAAC;IAAC,IAAI,EAAE,IAAI,CAAC;IAAC,UAAU,EAAE,IAAI,CAAA;CAAE,CAAC,CAAC"}
@@ -1,49 +1,52 @@
1
1
  import { AdviceMap, Felt, FeltArray, Poseidon2, TransactionRequestBuilder, Word as WordType, } from '@miden-sdk/miden-sdk';
2
- import { MULTISIG_ECDSA_MASM, MULTISIG_MASM, } from '../account/masm/auth.js';
3
2
  import { compileTxScript } from '../raw-client.js';
4
3
  import { normalizeHexWord } from '../utils/encoding.js';
5
4
  import { randomWord } from '../utils/random.js';
6
- function buildMultisigConfigFelts(threshold, signerCommitments) {
5
+ import { authSchemeId } from '../utils/signature.js';
6
+ function buildMultisigConfigFelts(threshold, signerCommitments, signatureScheme) {
7
7
  const numApprovers = signerCommitments.length;
8
+ const schemeId = authSchemeId(signatureScheme);
8
9
  const felts = [
9
10
  new Felt(BigInt(threshold)),
10
11
  new Felt(BigInt(numApprovers)),
11
12
  new Felt(0n),
12
13
  new Felt(0n),
13
14
  ];
15
+ // Interleave [PUB_KEY, SCHEME_ID] per approver, in reverse index order.
14
16
  for (const commitment of [...signerCommitments].reverse()) {
15
17
  const word = WordType.fromHex(normalizeHexWord(commitment));
16
18
  felts.push(...word.toFelts());
19
+ felts.push(new Felt(BigInt(schemeId)), new Felt(0n), new Felt(0n), new Felt(0n));
17
20
  }
18
21
  return felts;
19
22
  }
20
- function buildMultisigConfigAdvice(threshold, signerCommitments) {
21
- // `Poseidon2.hashElements` consumes (frees) its `FeltArray` by value, so the
22
- // advice payload must be a freshly built one — reusing the hashed array
23
- // surfaces as "null pointer passed to rust" at the later `advice.insert`.
24
- const configHash = Poseidon2.hashElements(new FeltArray(buildMultisigConfigFelts(threshold, signerCommitments)));
25
- const payload = new FeltArray(buildMultisigConfigFelts(threshold, signerCommitments));
23
+ export function buildMultisigConfigAdvice(threshold, signerCommitments, signatureScheme) {
24
+ // `Poseidon2.hashElements` consumes (frees) its `FeltArray` by value, so the advice payload
25
+ // must be a separately built array — reusing the hashed array surfaces as "null pointer
26
+ // passed to rust" at the later `advice.insert`.
27
+ const configHash = Poseidon2.hashElements(new FeltArray(buildMultisigConfigFelts(threshold, signerCommitments, signatureScheme)));
28
+ const payload = new FeltArray(buildMultisigConfigFelts(threshold, signerCommitments, signatureScheme));
26
29
  return { configHash, payload };
27
30
  }
28
- async function buildUpdateSignersScript(client, signatureScheme, midenRpcEndpoint) {
29
- const multisigMasm = signatureScheme === 'ecdsa' ? MULTISIG_ECDSA_MASM : MULTISIG_MASM;
31
+ async function buildUpdateSignersScript(client, midenRpcEndpoint) {
30
32
  const scriptSource = `
31
- use oz_multisig::multisig
33
+ use miden::standards::auth::multisig
32
34
 
33
- begin
35
+ @transaction_script
36
+ pub proc main
34
37
  call.multisig::update_signers_and_threshold
35
38
  end
36
39
  `;
37
- return compileTxScript(client, scriptSource, [{ namespace: 'oz_multisig::multisig', code: multisigMasm }], midenRpcEndpoint);
40
+ return compileTxScript(client, scriptSource, [], midenRpcEndpoint);
38
41
  }
39
42
  export async function buildUpdateSignersTransactionRequest(client, threshold, signerCommitments, options = {}) {
40
43
  const signatureScheme = options.signatureScheme ?? 'falcon';
41
- const { configHash: configHashForAdvice, payload } = buildMultisigConfigAdvice(threshold, signerCommitments);
42
- const { configHash: configHashForScript } = buildMultisigConfigAdvice(threshold, signerCommitments);
43
- const { configHash: configHashForReturn } = buildMultisigConfigAdvice(threshold, signerCommitments);
44
+ const { configHash: configHashForAdvice, payload } = buildMultisigConfigAdvice(threshold, signerCommitments, signatureScheme);
45
+ const { configHash: configHashForScript } = buildMultisigConfigAdvice(threshold, signerCommitments, signatureScheme);
46
+ const { configHash: configHashForReturn } = buildMultisigConfigAdvice(threshold, signerCommitments, signatureScheme);
44
47
  const advice = new AdviceMap();
45
48
  advice.insert(configHashForAdvice, payload);
46
- const script = await buildUpdateSignersScript(client, signatureScheme, options.midenRpcEndpoint);
49
+ const script = await buildUpdateSignersScript(client, options.midenRpcEndpoint);
47
50
  const authSaltHex = options.salt ? options.salt.toHex() : randomWord().toHex();
48
51
  const authSaltForBuilder = WordType.fromHex(normalizeHexWord(authSaltHex));
49
52
  let txBuilder = new TransactionRequestBuilder();