@openzeppelin/miden-multisig-client 0.16.1 → 0.17.0-rc.1

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 (207) hide show
  1. package/README.md +192 -11
  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 +4 -0
  24. package/dist/client.d.ts.map +1 -1
  25. package/dist/client.js +10 -5
  26. package/dist/client.js.map +1 -1
  27. package/dist/client.test.js +74 -16
  28. package/dist/client.test.js.map +1 -1
  29. package/dist/index.d.ts +5 -3
  30. package/dist/index.d.ts.map +1 -1
  31. package/dist/index.js +3 -3
  32. package/dist/index.js.map +1 -1
  33. package/dist/inspector.d.ts +59 -1
  34. package/dist/inspector.d.ts.map +1 -1
  35. package/dist/inspector.js +157 -29
  36. package/dist/inspector.js.map +1 -1
  37. package/dist/inspector.test.js +246 -37
  38. package/dist/inspector.test.js.map +1 -1
  39. package/dist/multisig.d.ts +109 -33
  40. package/dist/multisig.d.ts.map +1 -1
  41. package/dist/multisig.js +307 -104
  42. package/dist/multisig.js.map +1 -1
  43. package/dist/multisig.test.js +582 -58
  44. package/dist/multisig.test.js.map +1 -1
  45. package/dist/procedures.d.ts +6 -7
  46. package/dist/procedures.d.ts.map +1 -1
  47. package/dist/procedures.js +6 -7
  48. package/dist/procedures.js.map +1 -1
  49. package/dist/proposal/metadata.d.ts.map +1 -1
  50. package/dist/proposal/metadata.js +13 -2
  51. package/dist/proposal/metadata.js.map +1 -1
  52. package/dist/proposal/metadata.test.js +57 -0
  53. package/dist/proposal/metadata.test.js.map +1 -1
  54. package/dist/prover/errors.d.ts +5 -0
  55. package/dist/prover/errors.d.ts.map +1 -1
  56. package/dist/prover/errors.js +7 -155
  57. package/dist/prover/errors.js.map +1 -1
  58. package/dist/prover/errors.test.js +5 -0
  59. package/dist/prover/errors.test.js.map +1 -1
  60. package/dist/prover/retry.d.ts +1 -6
  61. package/dist/prover/retry.d.ts.map +1 -1
  62. package/dist/prover/retry.js +5 -28
  63. package/dist/prover/retry.js.map +1 -1
  64. package/dist/prover/retry.test.js +1 -1
  65. package/dist/prover/retry.test.js.map +1 -1
  66. package/dist/prover/workflow.d.ts +4 -3
  67. package/dist/prover/workflow.d.ts.map +1 -1
  68. package/dist/prover/workflow.js +5 -2
  69. package/dist/prover/workflow.js.map +1 -1
  70. package/dist/prover/workflow.test.js +28 -3
  71. package/dist/prover/workflow.test.js.map +1 -1
  72. package/dist/retry/classify.d.ts +16 -0
  73. package/dist/retry/classify.d.ts.map +1 -0
  74. package/dist/retry/classify.js +187 -0
  75. package/dist/retry/classify.js.map +1 -0
  76. package/dist/retry/runtime.d.ts +13 -0
  77. package/dist/retry/runtime.d.ts.map +1 -0
  78. package/dist/retry/runtime.js +33 -0
  79. package/dist/retry/runtime.js.map +1 -0
  80. package/dist/rpc/config.d.ts +11 -0
  81. package/dist/rpc/config.d.ts.map +1 -0
  82. package/dist/rpc/config.js +17 -0
  83. package/dist/rpc/config.js.map +1 -0
  84. package/dist/rpc/config.test.d.ts +2 -0
  85. package/dist/rpc/config.test.d.ts.map +1 -0
  86. package/dist/rpc/config.test.js +24 -0
  87. package/dist/rpc/config.test.js.map +1 -0
  88. package/dist/rpc/errors.d.ts +2 -0
  89. package/dist/rpc/errors.d.ts.map +1 -0
  90. package/dist/rpc/errors.js +11 -0
  91. package/dist/rpc/errors.js.map +1 -0
  92. package/dist/rpc/errors.test.d.ts +2 -0
  93. package/dist/rpc/errors.test.d.ts.map +1 -0
  94. package/dist/rpc/errors.test.js +34 -0
  95. package/dist/rpc/errors.test.js.map +1 -0
  96. package/dist/rpc/retry.d.ts +4 -0
  97. package/dist/rpc/retry.d.ts.map +1 -0
  98. package/dist/rpc/retry.js +6 -0
  99. package/dist/rpc/retry.js.map +1 -0
  100. package/dist/rpc/retry.test.d.ts +2 -0
  101. package/dist/rpc/retry.test.d.ts.map +1 -0
  102. package/dist/rpc/retry.test.js +98 -0
  103. package/dist/rpc/retry.test.js.map +1 -0
  104. package/dist/transaction/index.d.ts +1 -1
  105. package/dist/transaction/index.d.ts.map +1 -1
  106. package/dist/transaction/index.js +1 -1
  107. package/dist/transaction/index.js.map +1 -1
  108. package/dist/transaction/p2id.d.ts +17 -6
  109. package/dist/transaction/p2id.d.ts.map +1 -1
  110. package/dist/transaction/p2id.js +22 -31
  111. package/dist/transaction/p2id.js.map +1 -1
  112. package/dist/transaction/p2id.test.js +62 -24
  113. package/dist/transaction/p2id.test.js.map +1 -1
  114. package/dist/transaction/summary.d.ts +45 -2
  115. package/dist/transaction/summary.d.ts.map +1 -1
  116. package/dist/transaction/summary.js +42 -2
  117. package/dist/transaction/summary.js.map +1 -1
  118. package/dist/transaction/summary.test.d.ts +2 -0
  119. package/dist/transaction/summary.test.d.ts.map +1 -0
  120. package/dist/transaction/summary.test.js +26 -0
  121. package/dist/transaction/summary.test.js.map +1 -0
  122. package/dist/transaction/updateGuardian.d.ts.map +1 -1
  123. package/dist/transaction/updateGuardian.js +16 -18
  124. package/dist/transaction/updateGuardian.js.map +1 -1
  125. package/dist/transaction/updateProcedureThreshold.d.ts.map +1 -1
  126. package/dist/transaction/updateProcedureThreshold.js +15 -17
  127. package/dist/transaction/updateProcedureThreshold.js.map +1 -1
  128. package/dist/transaction/updateSigners.d.ts +6 -1
  129. package/dist/transaction/updateSigners.d.ts.map +1 -1
  130. package/dist/transaction/updateSigners.js +20 -17
  131. package/dist/transaction/updateSigners.js.map +1 -1
  132. package/dist/transaction.d.ts +2 -2
  133. package/dist/transaction.d.ts.map +1 -1
  134. package/dist/transaction.js +1 -1
  135. package/dist/transaction.js.map +1 -1
  136. package/dist/types/proposal.d.ts +28 -4
  137. package/dist/types/proposal.d.ts.map +1 -1
  138. package/dist/types/proposal.js +18 -0
  139. package/dist/types/proposal.js.map +1 -1
  140. package/dist/types.d.ts +0 -1
  141. package/dist/types.d.ts.map +1 -1
  142. package/dist/utils/signature.d.ts +11 -7
  143. package/dist/utils/signature.d.ts.map +1 -1
  144. package/dist/utils/signature.js +24 -58
  145. package/dist/utils/signature.js.map +1 -1
  146. package/dist/utils/word.d.ts +7 -0
  147. package/dist/utils/word.d.ts.map +1 -1
  148. package/dist/utils/word.js +15 -0
  149. package/dist/utils/word.js.map +1 -1
  150. package/masm/account_components/auth/guarded_multisig.masm +42 -0
  151. package/package.json +7 -4
  152. package/src/account/builder.test.ts +111 -45
  153. package/src/account/builder.ts +45 -33
  154. package/src/account/layout.ts +33 -0
  155. package/src/account/masm/account-components/auth.ts +36 -56
  156. package/src/account/masm/index.ts +0 -1
  157. package/src/account/storage.ts +9 -22
  158. package/src/client.test.ts +87 -16
  159. package/src/client.ts +16 -3
  160. package/src/index.ts +27 -1
  161. package/src/inspector.test.ts +330 -38
  162. package/src/inspector.ts +196 -33
  163. package/src/multisig.test.ts +680 -63
  164. package/src/multisig.ts +400 -115
  165. package/src/procedures.ts +6 -7
  166. package/src/proposal/metadata.test.ts +76 -0
  167. package/src/proposal/metadata.ts +13 -2
  168. package/src/prover/errors.test.ts +8 -0
  169. package/src/prover/errors.ts +7 -175
  170. package/src/prover/retry.test.ts +1 -1
  171. package/src/prover/retry.ts +10 -35
  172. package/src/prover/workflow.test.ts +40 -4
  173. package/src/prover/workflow.ts +16 -4
  174. package/src/retry/classify.ts +220 -0
  175. package/src/retry/runtime.ts +45 -0
  176. package/src/rpc/config.test.ts +45 -0
  177. package/src/rpc/config.ts +30 -0
  178. package/src/rpc/errors.test.ts +69 -0
  179. package/src/rpc/errors.ts +12 -0
  180. package/src/rpc/retry.test.ts +144 -0
  181. package/src/rpc/retry.ts +12 -0
  182. package/src/transaction/index.ts +7 -1
  183. package/src/transaction/p2id.test.ts +112 -31
  184. package/src/transaction/p2id.ts +39 -38
  185. package/src/transaction/summary.test.ts +32 -0
  186. package/src/transaction/summary.ts +83 -4
  187. package/src/transaction/updateGuardian.ts +15 -25
  188. package/src/transaction/updateProcedureThreshold.ts +13 -29
  189. package/src/transaction/updateSigners.ts +38 -30
  190. package/src/transaction.ts +8 -1
  191. package/src/types/proposal.ts +43 -4
  192. package/src/types.ts +0 -1
  193. package/src/utils/signature.ts +32 -65
  194. package/src/utils/word.ts +17 -0
  195. package/dist/account/masm/auth.d.ts +0 -5
  196. package/dist/account/masm/auth.d.ts.map +0 -1
  197. package/dist/account/masm/auth.js +0 -1509
  198. package/dist/account/masm/auth.js.map +0 -1
  199. package/masm/account_components/auth/multisig.masm +0 -12
  200. package/masm/account_components/auth/multisig_ecdsa.masm +0 -12
  201. package/masm/account_components/auth/multisig_guardian.masm +0 -16
  202. package/masm/account_components/auth/multisig_guardian_ecdsa.masm +0 -16
  203. package/masm/auth/guardian.masm +0 -199
  204. package/masm/auth/guardian_ecdsa.masm +0 -195
  205. package/masm/auth/multisig.masm +0 -554
  206. package/masm/auth/multisig_ecdsa.masm +0 -554
  207. package/src/account/masm/auth.ts +0 -1512
@@ -0,0 +1,98 @@
1
+ import { readFileSync } from 'node:fs';
2
+ import { describe, expect, it, vi } from 'vitest';
3
+ import { resolveRpcConfig } from './config.js';
4
+ import { retryRpcRead } from './retry.js';
5
+ import { retryDelay } from '../retry/runtime.js';
6
+ function fixtures() {
7
+ return JSON.parse(readFileSync(new URL('../../../../fixtures/miden-multisig-client/rpc-policy-fixtures.json', import.meta.url), 'utf8'));
8
+ }
9
+ function recordingRuntime() {
10
+ const sleeps = [];
11
+ return {
12
+ sleeps,
13
+ sleep: (delayMs) => {
14
+ sleeps.push(delayMs);
15
+ return Promise.resolve();
16
+ },
17
+ unitRandom: () => 0.5,
18
+ };
19
+ }
20
+ function rateLimitError() {
21
+ return Object.assign(new Error('Too Many Requests!'), {
22
+ code: 'ResourceExhausted',
23
+ });
24
+ }
25
+ describe('retryRpcRead', () => {
26
+ it('matches every shared delay vector', () => {
27
+ for (const fixture of fixtures().delays) {
28
+ expect(retryDelay(fixture.retryIndex, fixture.unitRandom)).toBe(fixture.delayMs);
29
+ }
30
+ });
31
+ it('waits out rate limiting and returns the eventual result', async () => {
32
+ const runtime = recordingRuntime();
33
+ const operation = vi
34
+ .fn()
35
+ .mockRejectedValueOnce(rateLimitError())
36
+ .mockRejectedValueOnce(rateLimitError())
37
+ .mockResolvedValueOnce('synced');
38
+ const result = await retryRpcRead(operation, resolveRpcConfig({ retry: { maxAttempts: 3 } }), runtime);
39
+ expect(result).toBe('synced');
40
+ expect(operation).toHaveBeenCalledTimes(3);
41
+ expect(runtime.sleeps).toEqual([retryDelay(0, 0.5), retryDelay(1, 0.5)]);
42
+ });
43
+ it('throws a permanent error immediately without sleeping', async () => {
44
+ const runtime = recordingRuntime();
45
+ const permanent = Object.assign(new Error('malformed account id'), {
46
+ code: 'InvalidArgument',
47
+ });
48
+ const operation = vi.fn().mockRejectedValue(permanent);
49
+ await expect(retryRpcRead(operation, resolveRpcConfig({ retry: { maxAttempts: 5 } }), runtime)).rejects.toBe(permanent);
50
+ expect(operation).toHaveBeenCalledTimes(1);
51
+ expect(runtime.sleeps).toEqual([]);
52
+ });
53
+ it('rethrows the final upstream error unchanged after budget exhaustion', async () => {
54
+ const runtime = recordingRuntime();
55
+ const final = Object.assign(new Error('still rate limited'), {
56
+ code: 'ResourceExhausted',
57
+ });
58
+ const operation = vi
59
+ .fn()
60
+ .mockRejectedValueOnce(rateLimitError())
61
+ .mockRejectedValueOnce(final);
62
+ await expect(retryRpcRead(operation, resolveRpcConfig({ retry: { maxAttempts: 2 } }), runtime)).rejects.toBe(final);
63
+ expect(operation).toHaveBeenCalledTimes(2);
64
+ expect(runtime.sleeps).toHaveLength(1);
65
+ });
66
+ it('retries a transient read once under the default config', async () => {
67
+ const runtime = recordingRuntime();
68
+ const operation = vi
69
+ .fn()
70
+ .mockRejectedValueOnce(rateLimitError())
71
+ .mockResolvedValueOnce('synced');
72
+ await expect(retryRpcRead(operation, resolveRpcConfig(undefined), runtime)).resolves.toBe('synced');
73
+ expect(operation).toHaveBeenCalledTimes(2);
74
+ expect(runtime.sleeps).toHaveLength(1);
75
+ });
76
+ it('never retries under an explicit single-attempt config', async () => {
77
+ const runtime = recordingRuntime();
78
+ const operation = vi.fn().mockRejectedValue(rateLimitError());
79
+ await expect(retryRpcRead(operation, resolveRpcConfig({ retry: { maxAttempts: 1 } }), runtime)).rejects.toThrow('Too Many Requests!');
80
+ expect(operation).toHaveBeenCalledTimes(1);
81
+ expect(runtime.sleeps).toEqual([]);
82
+ });
83
+ it('completes 64 concurrent reads against a rate-limited node', async () => {
84
+ const runtime = recordingRuntime();
85
+ let rejected = 0;
86
+ const operation = () => {
87
+ if (rejected < 40) {
88
+ rejected += 1;
89
+ return Promise.reject(rateLimitError());
90
+ }
91
+ return Promise.resolve('synced');
92
+ };
93
+ const results = await Promise.all(Array.from({ length: 64 }, () => retryRpcRead(operation, resolveRpcConfig({ retry: { maxAttempts: 4 } }), runtime)));
94
+ expect(results).toEqual(Array.from({ length: 64 }, () => 'synced'));
95
+ expect(rejected).toBe(40);
96
+ });
97
+ });
98
+ //# sourceMappingURL=retry.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"retry.test.js","sourceRoot":"","sources":["../../src/rpc/retry.test.ts"],"names":[],"mappings":"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"}
@@ -1,4 +1,4 @@
1
- export { executeForSummary } from './summary.js';
1
+ export { chainAnchorFromBase64, chainAnchorToBase64, executeForSummary, executeForSummaryAt, summarySalt, } from './summary.js';
2
2
  export { buildUpdateSignersTransactionRequest } from './updateSigners.js';
3
3
  export { buildUpdateProcedureThresholdTransactionRequest } from './updateProcedureThreshold.js';
4
4
  export { buildUpdateGuardianTransactionRequest } from './updateGuardian.js';
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/transaction/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,iBAAiB,EAAE,MAAM,cAAc,CAAC;AACjD,OAAO,EAAE,oCAAoC,EAAE,MAAM,oBAAoB,CAAC;AAC1E,OAAO,EAAE,+CAA+C,EAAE,MAAM,+BAA+B,CAAC;AAChG,OAAO,EAAE,qCAAqC,EAAE,MAAM,qBAAqB,CAAC;AAC5E,OAAO,EAAE,mCAAmC,EAAE,MAAM,mBAAmB,CAAC;AACxE,OAAO,EAAE,2BAA2B,EAAE,MAAM,WAAW,CAAC;AACxD,YAAY,EAAE,gBAAgB,EAAE,MAAM,cAAc,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/transaction/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,qBAAqB,EACrB,mBAAmB,EACnB,iBAAiB,EACjB,mBAAmB,EACnB,WAAW,GACZ,MAAM,cAAc,CAAC;AACtB,OAAO,EAAE,oCAAoC,EAAE,MAAM,oBAAoB,CAAC;AAC1E,OAAO,EAAE,+CAA+C,EAAE,MAAM,+BAA+B,CAAC;AAChG,OAAO,EAAE,qCAAqC,EAAE,MAAM,qBAAqB,CAAC;AAC5E,OAAO,EAAE,mCAAmC,EAAE,MAAM,mBAAmB,CAAC;AACxE,OAAO,EAAE,2BAA2B,EAAE,MAAM,WAAW,CAAC;AACxD,YAAY,EAAE,gBAAgB,EAAE,MAAM,cAAc,CAAC"}
@@ -1,4 +1,4 @@
1
- export { executeForSummary } from './summary.js';
1
+ export { chainAnchorFromBase64, chainAnchorToBase64, executeForSummary, executeForSummaryAt, summarySalt, } from './summary.js';
2
2
  export { buildUpdateSignersTransactionRequest } from './updateSigners.js';
3
3
  export { buildUpdateProcedureThresholdTransactionRequest } from './updateProcedureThreshold.js';
4
4
  export { buildUpdateGuardianTransactionRequest } from './updateGuardian.js';
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/transaction/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,iBAAiB,EAAE,MAAM,cAAc,CAAC;AACjD,OAAO,EAAE,oCAAoC,EAAE,MAAM,oBAAoB,CAAC;AAC1E,OAAO,EAAE,+CAA+C,EAAE,MAAM,+BAA+B,CAAC;AAChG,OAAO,EAAE,qCAAqC,EAAE,MAAM,qBAAqB,CAAC;AAC5E,OAAO,EAAE,mCAAmC,EAAE,MAAM,mBAAmB,CAAC;AACxE,OAAO,EAAE,2BAA2B,EAAE,MAAM,WAAW,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/transaction/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,qBAAqB,EACrB,mBAAmB,EACnB,iBAAiB,EACjB,mBAAmB,EACnB,WAAW,GACZ,MAAM,cAAc,CAAC;AACtB,OAAO,EAAE,oCAAoC,EAAE,MAAM,oBAAoB,CAAC;AAC1E,OAAO,EAAE,+CAA+C,EAAE,MAAM,+BAA+B,CAAC;AAChG,OAAO,EAAE,qCAAqC,EAAE,MAAM,qBAAqB,CAAC;AAC5E,OAAO,EAAE,mCAAmC,EAAE,MAAM,mBAAmB,CAAC;AACxE,OAAO,EAAE,2BAA2B,EAAE,MAAM,WAAW,CAAC"}
@@ -1,8 +1,19 @@
1
- import type { Account, TransactionRequest, Word } from '@miden-sdk/miden-sdk';
1
+ import type { TransactionRequest, Word } from '@miden-sdk/miden-sdk';
2
2
  import { Note, NoteType } from '@miden-sdk/miden-sdk';
3
3
  import type { SignatureOptions } from './options.js';
4
4
  import type { P2idNoteVisibility } from '../types/proposal.js';
5
- export interface P2idTransactionOptions extends SignatureOptions {
5
+ /**
6
+ * P2IDE execution constraints (issue #366). Presence of either height builds
7
+ * a P2IDE note instead of a plain P2ID note, mirroring the Miden SDK's
8
+ * `reclaimAfter`/`timelockUntil` semantics on `SendOptions`.
9
+ */
10
+ export interface P2ideHeightOptions {
11
+ /** Absolute block height at which the sender may reclaim the note. */
12
+ reclaimHeight?: number;
13
+ /** Absolute block height before which the note cannot be consumed. */
14
+ timelockHeight?: number;
15
+ }
16
+ export interface P2idTransactionOptions extends SignatureOptions, P2ideHeightOptions {
6
17
  /** Visibility of the created note. Defaults to `NoteType.Public`. */
7
18
  noteType?: NoteType;
8
19
  }
@@ -22,11 +33,11 @@ export declare function deriveP2idSerialNumber(salt: Word): Word;
22
33
  /**
23
34
  * Rebuilds the P2ID note a proposal creates, from its metadata fields. The
24
35
  * note is deterministic in the salt, so the resulting ID matches the note the
25
- * proposal produces on execution (issue #356). The asset is derived from the
26
- * account's current vault state, so call this before the transfer executes.
36
+ * proposal produces on execution. Since Miden 0.16, the asset
37
+ * callback flag is encoded in the faucet account ID.
27
38
  */
28
- export declare function buildP2idNoteFromMetadata(senderId: string, recipientId: string, faucetId: string, amount: bigint, account: Account, noteType: NoteType, saltHex: string): Note;
29
- export declare function buildP2idTransactionRequest(senderId: string, recipientId: string, faucetId: string, amount: bigint, account: Account, options?: P2idTransactionOptions): {
39
+ export declare function buildP2idNoteFromMetadata(senderId: string, recipientId: string, faucetId: string, amount: bigint, noteType: NoteType, saltHex: string, heights?: P2ideHeightOptions): Note;
40
+ export declare function buildP2idTransactionRequest(senderId: string, recipientId: string, faucetId: string, amount: bigint, options?: P2idTransactionOptions): {
30
41
  request: TransactionRequest;
31
42
  salt: Word;
32
43
  };
@@ -1 +1 @@
1
- {"version":3,"file":"p2id.d.ts","sourceRoot":"","sources":["../../src/transaction/p2id.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,kBAAkB,EAAE,IAAI,EAAE,MAAM,sBAAsB,CAAC;AAC9E,OAAO,EAKL,IAAI,EAOJ,QAAQ,EAIT,MAAM,sBAAsB,CAAC;AAG9B,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,cAAc,CAAC;AACrD,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,sBAAsB,CAAC;AAE/D,MAAM,WAAW,sBAAuB,SAAQ,gBAAgB;IAC9D,qEAAqE;IACrE,QAAQ,CAAC,EAAE,QAAQ,CAAC;CACrB;AAED;;;;;GAKG;AACH,wBAAgB,iBAAiB,CAAC,KAAK,EAAE,MAAM,GAAG,SAAS,GAAG,QAAQ,CAUrE;AAED;;;GAGG;AACH,wBAAgB,sBAAsB,CAAC,QAAQ,EAAE,QAAQ,GAAG,SAAS,GAAG,kBAAkB,GAAG,SAAS,CAErG;AAED,wBAAgB,sBAAsB,CAAC,IAAI,EAAE,IAAI,GAAG,IAAI,CAMvD;AAwDD;;;;;GAKG;AACH,wBAAgB,yBAAyB,CACvC,QAAQ,EAAE,MAAM,EAChB,WAAW,EAAE,MAAM,EACnB,QAAQ,EAAE,MAAM,EAChB,MAAM,EAAE,MAAM,EACd,OAAO,EAAE,OAAO,EAChB,QAAQ,EAAE,QAAQ,EAClB,OAAO,EAAE,MAAM,GACd,IAAI,CASN;AAED,wBAAgB,2BAA2B,CACzC,QAAQ,EAAE,MAAM,EAChB,WAAW,EAAE,MAAM,EACnB,QAAQ,EAAE,MAAM,EAChB,MAAM,EAAE,MAAM,EACd,OAAO,EAAE,OAAO,EAChB,OAAO,GAAE,sBAA2B,GACnC;IAAE,OAAO,EAAE,kBAAkB,CAAC;IAAC,IAAI,EAAE,IAAI,CAAA;CAAE,CA+B7C"}
1
+ {"version":3,"file":"p2id.d.ts","sourceRoot":"","sources":["../../src/transaction/p2id.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,kBAAkB,EAAE,IAAI,EAAE,MAAM,sBAAsB,CAAC;AACrE,OAAO,EAML,IAAI,EAOJ,QAAQ,EAIT,MAAM,sBAAsB,CAAC;AAG9B,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,cAAc,CAAC;AACrD,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,sBAAsB,CAAC;AAG/D;;;;GAIG;AACH,MAAM,WAAW,kBAAkB;IACjC,sEAAsE;IACtE,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,sEAAsE;IACtE,cAAc,CAAC,EAAE,MAAM,CAAC;CACzB;AAED,MAAM,WAAW,sBAAuB,SAAQ,gBAAgB,EAAE,kBAAkB;IAClF,qEAAqE;IACrE,QAAQ,CAAC,EAAE,QAAQ,CAAC;CACrB;AAED;;;;;GAKG;AACH,wBAAgB,iBAAiB,CAAC,KAAK,EAAE,MAAM,GAAG,SAAS,GAAG,QAAQ,CAUrE;AAED;;;GAGG;AACH,wBAAgB,sBAAsB,CAAC,QAAQ,EAAE,QAAQ,GAAG,SAAS,GAAG,kBAAkB,GAAG,SAAS,CAErG;AAED,wBAAgB,sBAAsB,CAAC,IAAI,EAAE,IAAI,GAAG,IAAI,CAMvD;AA4CD;;;;;GAKG;AACH,wBAAgB,yBAAyB,CACvC,QAAQ,EAAE,MAAM,EAChB,WAAW,EAAE,MAAM,EACnB,QAAQ,EAAE,MAAM,EAChB,MAAM,EAAE,MAAM,EACd,QAAQ,EAAE,QAAQ,EAClB,OAAO,EAAE,MAAM,EACf,OAAO,GAAE,kBAAuB,GAC/B,IAAI,CASN;AAED,wBAAgB,2BAA2B,CACzC,QAAQ,EAAE,MAAM,EAChB,WAAW,EAAE,MAAM,EACnB,QAAQ,EAAE,MAAM,EAChB,MAAM,EAAE,MAAM,EACd,OAAO,GAAE,sBAA2B,GACnC;IAAE,OAAO,EAAE,kBAAkB,CAAC;IAAC,IAAI,EAAE,IAAI,CAAA;CAAE,CA+B7C"}
@@ -1,6 +1,7 @@
1
- import { AccountId, FeltArray, FungibleAsset, MidenArrays, Note, NoteAssets, NoteMetadata, NoteRecipient, NoteScript, NoteStorage, NoteTag, NoteType, Poseidon2, TransactionRequestBuilder, Word as WordType, } from '@miden-sdk/miden-sdk';
1
+ import { AccountId, Felt, FeltArray, FungibleAsset, MidenArrays, Note, NoteAssets, NoteMetadata, NoteRecipient, NoteScript, NoteStorage, NoteTag, NoteType, Poseidon2, TransactionRequestBuilder, Word as WordType, } from '@miden-sdk/miden-sdk';
2
2
  import { randomWord } from '../utils/random.js';
3
3
  import { normalizeHexWord } from '../utils/encoding.js';
4
+ import { parseP2ideHeight } from '../types/proposal.js';
4
5
  /**
5
6
  * Parses the metadata wire value for a P2ID note visibility (issue #322).
6
7
  * Absent => public, the only behavior before the field existed. An unknown
@@ -32,33 +33,23 @@ export function deriveP2idSerialNumber(salt) {
32
33
  ...zeroWord.toFelts(),
33
34
  ]));
34
35
  }
35
- /**
36
- * Builds the fungible asset to transfer, sourcing the callback flag from the held asset.
37
- *
38
- * In Miden 0.15 the callback flag is part of the vault key, so rebuilding the asset from
39
- * `faucet`/`amount` with the default flag would not match the held asset and the transfer
40
- * would abort. When the faucet is absent the default flag is used, surfacing the
41
- * missing-asset error during execution.
42
- */
43
- function resolveFungibleAssetFromVault(account, faucet, amount) {
44
- const faucetHex = faucet.toString();
45
- const assetFromVault = account
46
- .vault()
47
- .fungibleAssets()
48
- .find(asset => asset.faucetId().toString() === faucetHex);
49
- if (!assetFromVault) {
50
- return new FungibleAsset(faucet, amount);
51
- }
52
- return FungibleAsset.fromVaultKey(assetFromVault.vaultKey(), amount);
53
- }
54
- function buildP2idNote(sender, recipient, noteAssets, noteType, saltHex) {
36
+ function buildP2idNote(sender, recipient, noteAssets, noteType, saltHex, heights = {}) {
55
37
  const salt = WordType.fromHex(normalizeHexWord(saltHex));
56
38
  const serialNum = deriveP2idSerialNumber(salt);
57
- const noteScript = NoteScript.p2id();
58
- const noteStorage = new NoteStorage(new FeltArray([
39
+ const reclaimHeight = parseP2ideHeight('reclaimHeight', heights.reclaimHeight);
40
+ const timelockHeight = parseP2ideHeight('timelockHeight', heights.timelockHeight);
41
+ const isP2ide = reclaimHeight !== undefined || timelockHeight !== undefined;
42
+ // P2IDE storage layout (miden-standards `P2ideNoteStorage`): the P2ID
43
+ // storage plus reclaim/timelock heights as felts, 0 encoding "unset".
44
+ const noteScript = isP2ide ? NoteScript.p2ide() : NoteScript.p2id();
45
+ const storageFelts = [
59
46
  recipient.suffix(),
60
47
  recipient.prefix(),
61
- ]));
48
+ ];
49
+ if (isP2ide) {
50
+ storageFelts.push(new Felt(BigInt(reclaimHeight ?? 0)), new Felt(BigInt(timelockHeight ?? 0)));
51
+ }
52
+ const noteStorage = new NoteStorage(new FeltArray(storageFelts));
62
53
  const noteRecipient = new NoteRecipient(serialNum, noteScript, noteStorage);
63
54
  const noteTag = NoteTag.withAccountTarget(recipient);
64
55
  const noteMetadata = new NoteMetadata(sender, noteType, noteTag);
@@ -67,20 +58,20 @@ function buildP2idNote(sender, recipient, noteAssets, noteType, saltHex) {
67
58
  /**
68
59
  * Rebuilds the P2ID note a proposal creates, from its metadata fields. The
69
60
  * note is deterministic in the salt, so the resulting ID matches the note the
70
- * proposal produces on execution (issue #356). The asset is derived from the
71
- * account's current vault state, so call this before the transfer executes.
61
+ * proposal produces on execution. Since Miden 0.16, the asset
62
+ * callback flag is encoded in the faucet account ID.
72
63
  */
73
- export function buildP2idNoteFromMetadata(senderId, recipientId, faucetId, amount, account, noteType, saltHex) {
64
+ export function buildP2idNoteFromMetadata(senderId, recipientId, faucetId, amount, noteType, saltHex, heights = {}) {
74
65
  const sender = AccountId.fromHex(senderId);
75
66
  const recipient = AccountId.fromHex(recipientId);
76
67
  const faucet = AccountId.fromHex(faucetId);
77
- const asset = resolveFungibleAssetFromVault(account, faucet, amount);
68
+ const asset = new FungibleAsset(faucet, amount);
78
69
  const noteAssets = new NoteAssets([asset]);
79
- return buildP2idNote(sender, recipient, noteAssets, noteType, saltHex);
70
+ return buildP2idNote(sender, recipient, noteAssets, noteType, saltHex, heights);
80
71
  }
81
- export function buildP2idTransactionRequest(senderId, recipientId, faucetId, amount, account, options = {}) {
72
+ export function buildP2idTransactionRequest(senderId, recipientId, faucetId, amount, options = {}) {
82
73
  const authSaltHex = options.salt ? options.salt.toHex() : randomWord().toHex();
83
- const note = buildP2idNoteFromMetadata(senderId, recipientId, faucetId, amount, account, options.noteType ?? NoteType.Public, authSaltHex);
74
+ const note = buildP2idNoteFromMetadata(senderId, recipientId, faucetId, amount, options.noteType ?? NoteType.Public, authSaltHex, { reclaimHeight: options.reclaimHeight, timelockHeight: options.timelockHeight });
84
75
  const outputNotes = new MidenArrays.NoteArray([note]);
85
76
  const authSaltForBuilder = WordType.fromHex(normalizeHexWord(authSaltHex));
86
77
  let txBuilder = new TransactionRequestBuilder();
@@ -1 +1 @@
1
- {"version":3,"file":"p2id.js","sourceRoot":"","sources":["../../src/transaction/p2id.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"p2id.js","sourceRoot":"","sources":["../../src/transaction/p2id.ts"],"names":[],"mappings":"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"}
@@ -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":""}