@openzeppelin/miden-multisig-client 0.14.9 → 0.15.0-rc.0

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 (67) hide show
  1. package/dist/account/builder.d.ts.map +1 -1
  2. package/dist/account/builder.js +4 -3
  3. package/dist/account/builder.js.map +1 -1
  4. package/dist/account/builder.test.js +0 -3
  5. package/dist/account/builder.test.js.map +1 -1
  6. package/dist/account/masm/auth.d.ts +2 -2
  7. package/dist/account/masm/auth.d.ts.map +1 -1
  8. package/dist/account/masm/auth.js +22 -10
  9. package/dist/account/masm/auth.js.map +1 -1
  10. package/dist/account/masm/authLibraries.d.ts +6 -0
  11. package/dist/account/masm/authLibraries.d.ts.map +1 -0
  12. package/dist/account/masm/authLibraries.js +17 -0
  13. package/dist/account/masm/authLibraries.js.map +1 -0
  14. package/dist/lookupAuth.d.ts +4 -3
  15. package/dist/lookupAuth.d.ts.map +1 -1
  16. package/dist/lookupAuth.js +8 -7
  17. package/dist/lookupAuth.js.map +1 -1
  18. package/dist/lookupAuth.test.js +3 -2
  19. package/dist/lookupAuth.test.js.map +1 -1
  20. package/dist/multisig.d.ts.map +1 -1
  21. package/dist/multisig.js +34 -13
  22. package/dist/multisig.js.map +1 -1
  23. package/dist/multisig.test.js +118 -4
  24. package/dist/multisig.test.js.map +1 -1
  25. package/dist/procedures.d.ts +7 -7
  26. package/dist/procedures.js +7 -7
  27. package/dist/raw-client.d.ts.map +1 -1
  28. package/dist/raw-client.js +4 -4
  29. package/dist/raw-client.js.map +1 -1
  30. package/dist/transaction/updateProcedureThreshold.d.ts.map +1 -1
  31. package/dist/transaction/updateProcedureThreshold.js +10 -4
  32. package/dist/transaction/updateProcedureThreshold.js.map +1 -1
  33. package/dist/transaction/updateSigners.d.ts.map +1 -1
  34. package/dist/transaction/updateSigners.js +9 -3
  35. package/dist/transaction/updateSigners.js.map +1 -1
  36. package/dist/utils/digest.d.ts.map +1 -1
  37. package/dist/utils/digest.js +4 -3
  38. package/dist/utils/digest.js.map +1 -1
  39. package/dist/utils/felt.d.ts +12 -0
  40. package/dist/utils/felt.d.ts.map +1 -0
  41. package/dist/utils/felt.js +19 -0
  42. package/dist/utils/felt.js.map +1 -0
  43. package/dist/utils/index.d.ts +1 -0
  44. package/dist/utils/index.d.ts.map +1 -1
  45. package/dist/utils/index.js +1 -0
  46. package/dist/utils/index.js.map +1 -1
  47. package/dist/utils/word.d.ts.map +1 -1
  48. package/dist/utils/word.js +7 -2
  49. package/dist/utils/word.js.map +1 -1
  50. package/masm/auth/multisig.masm +11 -5
  51. package/masm/auth/multisig_ecdsa.masm +11 -5
  52. package/package.json +3 -3
  53. package/src/account/builder.test.ts +0 -3
  54. package/src/account/builder.ts +3 -3
  55. package/src/account/masm/auth.ts +22 -10
  56. package/src/lookupAuth.test.ts +3 -2
  57. package/src/lookupAuth.ts +7 -6
  58. package/src/multisig.test.ts +123 -4
  59. package/src/multisig.ts +38 -14
  60. package/src/procedures.ts +7 -7
  61. package/src/raw-client.ts +4 -4
  62. package/src/transaction/updateProcedureThreshold.ts +16 -7
  63. package/src/transaction/updateSigners.ts +15 -6
  64. package/src/utils/digest.ts +4 -3
  65. package/src/utils/felt.ts +20 -0
  66. package/src/utils/index.ts +1 -0
  67. package/src/utils/word.ts +8 -2
@@ -7,15 +7,15 @@ export function resolveMidenRpcEndpoint(endpoint) {
7
7
  function isPublicMidenClient(client) {
8
8
  return 'accounts' in client && 'sync' in client;
9
9
  }
10
- export function getRawMidenClient(client, rpcUrl) {
10
+ export async function getRawMidenClient(client, rpcUrl) {
11
11
  if (!isPublicMidenClient(client)) {
12
- return Promise.resolve(client);
12
+ return client;
13
13
  }
14
14
  const cached = rawClientCache.get(client);
15
15
  if (cached) {
16
16
  return cached;
17
17
  }
18
- const rawClient = WasmWebClient.createClient(resolveMidenRpcEndpoint(rpcUrl), undefined, undefined, client.storeIdentifier());
18
+ const rawClient = WasmWebClient.createClient(resolveMidenRpcEndpoint(rpcUrl), undefined, undefined, await client.storeIdentifier());
19
19
  rawClientCache.set(client, rawClient);
20
20
  return rawClient;
21
21
  }
@@ -27,7 +27,7 @@ export async function compileTxScript(client, code, libraries = [], rpcUrl) {
27
27
  return client.compile.txScript({ code, libraries });
28
28
  }
29
29
  const rawClient = await getRawMidenClient(client, rpcUrl);
30
- const builder = rawClient.createCodeBuilder();
30
+ const builder = await rawClient.createCodeBuilder();
31
31
  for (const library of libraries) {
32
32
  const builtLibrary = builder.buildLibrary(library.namespace, library.code);
33
33
  if (library.linking === 'static') {
@@ -1 +1 @@
1
- {"version":3,"file":"raw-client.js","sourceRoot":"","sources":["../src/raw-client.ts"],"names":[],"mappings":"AAAA,OAAO,EAIL,aAAa,GACd,MAAM,sBAAsB,CAAC;AAE9B,MAAM,CAAC,MAAM,qBAAqB,GAAG,6BAA6B,CAAC;AASnE,MAAM,cAAc,GAAG,IAAI,OAAO,EAAuC,CAAC;AAE1E,MAAM,UAAU,uBAAuB,CAAC,QAAiB;IACvD,OAAO,QAAQ,IAAI,qBAAqB,CAAC;AAC3C,CAAC;AAED,SAAS,mBAAmB,CAAC,MAAuB;IAClD,OAAO,UAAU,IAAI,MAAM,IAAI,MAAM,IAAI,MAAM,CAAC;AAClD,CAAC;AAED,MAAM,UAAU,iBAAiB,CAC/B,MAAuB,EACvB,MAAe;IAEf,IAAI,CAAC,mBAAmB,CAAC,MAAM,CAAC,EAAE,CAAC;QACjC,OAAO,OAAO,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;IACjC,CAAC;IAED,MAAM,MAAM,GAAG,cAAc,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;IAC1C,IAAI,MAAM,EAAE,CAAC;QACX,OAAO,MAAM,CAAC;IAChB,CAAC;IAED,MAAM,SAAS,GAAG,aAAa,CAAC,YAAY,CAC1C,uBAAuB,CAAC,MAAM,CAAC,EAC/B,SAAS,EACT,SAAS,EACT,MAAM,CAAC,eAAe,EAAE,CACzB,CAAC;IACF,cAAc,CAAC,GAAG,CAAC,MAAM,EAAE,SAAS,CAAC,CAAC;IACtC,OAAO,SAAS,CAAC;AACnB,CAAC;AAED,MAAM,UAAU,oBAAoB,CAAC,MAAuB;IAC1D,OAAO,mBAAmB,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,aAAa,CAAC,CAAC,CAAC,IAAI,CAAC;AACnE,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,eAAe,CACnC,MAAuB,EACvB,IAAY,EACZ,YAAmC,EAAE,EACrC,MAAe;IAEf,IAAI,mBAAmB,CAAC,MAAM,CAAC,EAAE,CAAC;QAChC,OAAO,MAAM,CAAC,OAAO,CAAC,QAAQ,CAAC,EAAE,IAAI,EAAE,SAAS,EAAE,CAAC,CAAC;IACtD,CAAC;IAED,MAAM,SAAS,GAAG,MAAM,iBAAiB,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAC1D,MAAM,OAAO,GAAG,SAAS,CAAC,iBAAiB,EAAE,CAAC;IAC9C,KAAK,MAAM,OAAO,IAAI,SAAS,EAAE,CAAC;QAChC,MAAM,YAAY,GAAG,OAAO,CAAC,YAAY,CAAC,OAAO,CAAC,SAAS,EAAE,OAAO,CAAC,IAAI,CAAC,CAAC;QAC3E,IAAI,OAAO,CAAC,OAAO,KAAK,QAAQ,EAAE,CAAC;YACjC,OAAO,CAAC,iBAAiB,CAAC,YAAY,CAAC,CAAC;QAC1C,CAAC;aAAM,CAAC;YACN,OAAO,CAAC,kBAAkB,CAAC,YAAY,CAAC,CAAC;QAC3C,CAAC;IACH,CAAC;IACD,OAAO,OAAO,CAAC,eAAe,CAAC,IAAI,CAAC,CAAC;AACvC,CAAC"}
1
+ {"version":3,"file":"raw-client.js","sourceRoot":"","sources":["../src/raw-client.ts"],"names":[],"mappings":"AAAA,OAAO,EAIL,aAAa,GACd,MAAM,sBAAsB,CAAC;AAE9B,MAAM,CAAC,MAAM,qBAAqB,GAAG,6BAA6B,CAAC;AASnE,MAAM,cAAc,GAAG,IAAI,OAAO,EAAuC,CAAC;AAE1E,MAAM,UAAU,uBAAuB,CAAC,QAAiB;IACvD,OAAO,QAAQ,IAAI,qBAAqB,CAAC;AAC3C,CAAC;AAED,SAAS,mBAAmB,CAAC,MAAuB;IAClD,OAAO,UAAU,IAAI,MAAM,IAAI,MAAM,IAAI,MAAM,CAAC;AAClD,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,iBAAiB,CACrC,MAAuB,EACvB,MAAe;IAEf,IAAI,CAAC,mBAAmB,CAAC,MAAM,CAAC,EAAE,CAAC;QACjC,OAAO,MAAM,CAAC;IAChB,CAAC;IAED,MAAM,MAAM,GAAG,cAAc,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;IAC1C,IAAI,MAAM,EAAE,CAAC;QACX,OAAO,MAAM,CAAC;IAChB,CAAC;IAED,MAAM,SAAS,GAAG,aAAa,CAAC,YAAY,CAC1C,uBAAuB,CAAC,MAAM,CAAC,EAC/B,SAAS,EACT,SAAS,EACT,MAAM,MAAM,CAAC,eAAe,EAAE,CAC/B,CAAC;IACF,cAAc,CAAC,GAAG,CAAC,MAAM,EAAE,SAAS,CAAC,CAAC;IACtC,OAAO,SAAS,CAAC;AACnB,CAAC;AAED,MAAM,UAAU,oBAAoB,CAAC,MAAuB;IAC1D,OAAO,mBAAmB,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,aAAa,CAAC,CAAC,CAAC,IAAI,CAAC;AACnE,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,eAAe,CACnC,MAAuB,EACvB,IAAY,EACZ,YAAmC,EAAE,EACrC,MAAe;IAEf,IAAI,mBAAmB,CAAC,MAAM,CAAC,EAAE,CAAC;QAChC,OAAO,MAAM,CAAC,OAAO,CAAC,QAAQ,CAAC,EAAE,IAAI,EAAE,SAAS,EAAE,CAAC,CAAC;IACtD,CAAC;IAED,MAAM,SAAS,GAAG,MAAM,iBAAiB,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAC1D,MAAM,OAAO,GAAG,MAAM,SAAS,CAAC,iBAAiB,EAAE,CAAC;IACpD,KAAK,MAAM,OAAO,IAAI,SAAS,EAAE,CAAC;QAChC,MAAM,YAAY,GAAG,OAAO,CAAC,YAAY,CAAC,OAAO,CAAC,SAAS,EAAE,OAAO,CAAC,IAAI,CAAC,CAAC;QAC3E,IAAI,OAAO,CAAC,OAAO,KAAK,QAAQ,EAAE,CAAC;YACjC,OAAO,CAAC,iBAAiB,CAAC,YAAY,CAAC,CAAC;QAC1C,CAAC;aAAM,CAAC;YACN,OAAO,CAAC,kBAAkB,CAAC,YAAY,CAAC,CAAC;QAC3C,CAAC;IACH,CAAC;IACD,OAAO,OAAO,CAAC,eAAe,CAAC,IAAI,CAAC,CAAC;AACvC,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,gBAAgB,EAAE,MAAM,cAAc,CAAC;AAiDrD,wBAAsB,+CAA+C,CACnE,MAAM,EAAE,WAAW,GAAG,aAAa,EACnC,SAAS,EAAE,aAAa,EACxB,SAAS,EAAE,MAAM,EACjB,OAAO,GAAE,gBAAqB,GAC7B,OAAO,CAAC;IAAE,OAAO,EAAE,kBAAkB,CAAC;IAAC,IAAI,EAAE,IAAI,CAAC;IAAC,UAAU,EAAE,IAAI,CAAA;CAAE,CAAC,CA2BxE"}
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,gBAAgB,EAAE,MAAM,cAAc,CAAC;AA0DrD,wBAAsB,+CAA+C,CACnE,MAAM,EAAE,WAAW,GAAG,aAAa,EACnC,SAAS,EAAE,aAAa,EACxB,SAAS,EAAE,MAAM,EACjB,OAAO,GAAE,gBAAqB,GAC7B,OAAO,CAAC;IAAE,OAAO,EAAE,kBAAkB,CAAC;IAAC,IAAI,EAAE,IAAI,CAAC;IAAC,UAAU,EAAE,IAAI,CAAA;CAAE,CAAC,CA2BxE"}
@@ -4,16 +4,22 @@ import { getProcedureRoot } from '../procedures.js';
4
4
  import { compileTxScript } from '../raw-client.js';
5
5
  import { normalizeHexWord } from '../utils/encoding.js';
6
6
  import { randomWord } from '../utils/random.js';
7
- function buildProcedureThresholdAdvice(procedure, threshold) {
7
+ function buildProcedureThresholdFelts(procedure, threshold) {
8
8
  const procedureRoot = WordType.fromHex(normalizeHexWord(getProcedureRoot(procedure)));
9
- const payload = new FeltArray([
9
+ return [
10
10
  ...procedureRoot.toFelts(),
11
11
  new Felt(BigInt(threshold)),
12
12
  new Felt(0n),
13
13
  new Felt(0n),
14
14
  new Felt(0n),
15
- ]);
16
- const configHash = Poseidon2.hashElements(payload);
15
+ ];
16
+ }
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));
17
23
  return { configHash, payload };
18
24
  }
19
25
  async function buildUpdateProcedureThresholdScript(client, procedure, threshold, signatureScheme, midenRpcEndpoint) {
@@ -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":"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"}
@@ -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,gBAAgB,EAAE,MAAM,cAAc,CAAC;AA8CrD,wBAAsB,oCAAoC,CACxD,MAAM,EAAE,WAAW,GAAG,aAAa,EACnC,SAAS,EAAE,MAAM,EACjB,iBAAiB,EAAE,MAAM,EAAE,EAC3B,OAAO,GAAE,gBAAqB,GAC7B,OAAO,CAAC;IAAE,OAAO,EAAE,kBAAkB,CAAC;IAAC,IAAI,EAAE,IAAI,CAAC;IAAC,UAAU,EAAE,IAAI,CAAA;CAAE,CAAC,CAsCxE"}
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,gBAAgB,EAAE,MAAM,cAAc,CAAC;AAuDrD,wBAAsB,oCAAoC,CACxD,MAAM,EAAE,WAAW,GAAG,aAAa,EACnC,SAAS,EAAE,MAAM,EACjB,iBAAiB,EAAE,MAAM,EAAE,EAC3B,OAAO,GAAE,gBAAqB,GAC7B,OAAO,CAAC;IAAE,OAAO,EAAE,kBAAkB,CAAC;IAAC,IAAI,EAAE,IAAI,CAAC;IAAC,UAAU,EAAE,IAAI,CAAA;CAAE,CAAC,CAsCxE"}
@@ -3,7 +3,7 @@ import { MULTISIG_ECDSA_MASM, MULTISIG_MASM, } from '../account/masm/auth.js';
3
3
  import { compileTxScript } from '../raw-client.js';
4
4
  import { normalizeHexWord } from '../utils/encoding.js';
5
5
  import { randomWord } from '../utils/random.js';
6
- function buildMultisigConfigAdvice(threshold, signerCommitments) {
6
+ function buildMultisigConfigFelts(threshold, signerCommitments) {
7
7
  const numApprovers = signerCommitments.length;
8
8
  const felts = [
9
9
  new Felt(BigInt(threshold)),
@@ -15,8 +15,14 @@ function buildMultisigConfigAdvice(threshold, signerCommitments) {
15
15
  const word = WordType.fromHex(normalizeHexWord(commitment));
16
16
  felts.push(...word.toFelts());
17
17
  }
18
- const payload = new FeltArray(felts);
19
- const configHash = Poseidon2.hashElements(payload);
18
+ return felts;
19
+ }
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));
20
26
  return { configHash, payload };
21
27
  }
22
28
  async function buildUpdateSignersScript(client, signatureScheme, midenRpcEndpoint) {
@@ -1 +1 @@
1
- {"version":3,"file":"updateSigners.js","sourceRoot":"","sources":["../../src/transaction/updateSigners.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"updateSigners.js","sourceRoot":"","sources":["../../src/transaction/updateSigners.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"digest.d.ts","sourceRoot":"","sources":["../../src/utils/digest.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,+BAA+B,CAAC;AACxE,OAAO,EAAsC,IAAI,EAAE,MAAM,sBAAsB,CAAC;AAEhF,qBAAa,UAAU;IACrB,MAAM,CAAC,0BAA0B,CAAC,SAAS,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,GAAG,IAAI;IAgB7E,MAAM,CAAC,WAAW,CAAC,SAAS,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,EAAE,cAAc,EAAE,kBAAkB,GAAG,IAAI;IAQlG,OAAO,CAAC,MAAM,CAAC,oCAAoC;IAoBnD,MAAM,CAAC,iBAAiB,CAAC,aAAa,EAAE,MAAM,GAAG,IAAI;IAMrD,OAAO,CAAC,MAAM,CAAC,gBAAgB;IAI/B,OAAO,CAAC,MAAM,CAAC,oBAAoB;CAgBpC"}
1
+ {"version":3,"file":"digest.d.ts","sourceRoot":"","sources":["../../src/utils/digest.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,+BAA+B,CAAC;AACxE,OAAO,EAAsC,IAAI,EAAE,MAAM,sBAAsB,CAAC;AAGhF,qBAAa,UAAU;IACrB,MAAM,CAAC,0BAA0B,CAAC,SAAS,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,GAAG,IAAI;IAgB7E,MAAM,CAAC,WAAW,CAAC,SAAS,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,EAAE,cAAc,EAAE,kBAAkB,GAAG,IAAI;IAQlG,OAAO,CAAC,MAAM,CAAC,oCAAoC;IAoBnD,MAAM,CAAC,iBAAiB,CAAC,aAAa,EAAE,MAAM,GAAG,IAAI;IAMrD,OAAO,CAAC,MAAM,CAAC,gBAAgB;IAI/B,OAAO,CAAC,MAAM,CAAC,oBAAoB;CAgBpC"}
@@ -1,4 +1,5 @@
1
1
  import { AccountId, Felt, FeltArray, Rpo256, Word } from '@miden-sdk/miden-sdk';
2
+ import { feltFromU64Reduced } from './felt.js';
2
3
  export class AuthDigest {
3
4
  static fromAccountIdWithTimestamp(accountId, timestamp) {
4
5
  const paddedHex = accountId.startsWith('0x') ? accountId : `0x${accountId}`;
@@ -8,7 +9,7 @@ export class AuthDigest {
8
9
  const feltArray = new FeltArray([
9
10
  prefix,
10
11
  suffix,
11
- new Felt(BigInt(timestamp)),
12
+ feltFromU64Reduced(BigInt(timestamp)),
12
13
  new Felt(0n),
13
14
  ]);
14
15
  return Rpo256.hashElements(feltArray);
@@ -24,7 +25,7 @@ export class AuthDigest {
24
25
  const feltArray = new FeltArray([
25
26
  prefix,
26
27
  suffix,
27
- new Felt(BigInt(timestamp)),
28
+ feltFromU64Reduced(BigInt(timestamp)),
28
29
  ...payloadWord.toFelts(),
29
30
  ]);
30
31
  return Rpo256.hashElements(feltArray);
@@ -47,7 +48,7 @@ export class AuthDigest {
47
48
  for (let j = 0; j < 8 && i + j < bytes.length; j += 1) {
48
49
  packed |= BigInt(bytes[i + j]) << (8n * BigInt(j));
49
50
  }
50
- payloadElements.push(new Felt(packed));
51
+ payloadElements.push(feltFromU64Reduced(packed));
51
52
  }
52
53
  return Rpo256.hashElements(new FeltArray(payloadElements));
53
54
  }
@@ -1 +1 @@
1
- {"version":3,"file":"digest.js","sourceRoot":"","sources":["../../src/utils/digest.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"digest.js","sourceRoot":"","sources":["../../src/utils/digest.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,12 @@
1
+ import { Felt } from '@miden-sdk/miden-sdk';
2
+ /**
3
+ * Maps an arbitrary `u64` onto a canonical field element by reducing modulo the
4
+ * field order, mirroring `guardian_shared::felt::felt_from_u64_reduced`.
5
+ *
6
+ * Miden 0.15's `Felt` constructor rejects non-canonical inputs (values
7
+ * `>= FELT_ORDER`), whereas 0.14 reduced silently. Byte-packed digest inputs are
8
+ * arbitrary `u64`s, so reducing here preserves the original digest layout, keeps
9
+ * construction infallible, and stays byte-identical to server-side signing.
10
+ */
11
+ export declare function feltFromU64Reduced(value: bigint): Felt;
12
+ //# sourceMappingURL=felt.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"felt.d.ts","sourceRoot":"","sources":["../../src/utils/felt.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,MAAM,sBAAsB,CAAC;AAQ5C;;;;;;;;GAQG;AACH,wBAAgB,kBAAkB,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI,CAEtD"}
@@ -0,0 +1,19 @@
1
+ import { Felt } from '@miden-sdk/miden-sdk';
2
+ /**
3
+ * Goldilocks field order (`2^64 - 2^32 + 1`), matching `Felt::ORDER` in
4
+ * `miden-protocol`.
5
+ */
6
+ const FELT_ORDER = 18446744069414584321n;
7
+ /**
8
+ * Maps an arbitrary `u64` onto a canonical field element by reducing modulo the
9
+ * field order, mirroring `guardian_shared::felt::felt_from_u64_reduced`.
10
+ *
11
+ * Miden 0.15's `Felt` constructor rejects non-canonical inputs (values
12
+ * `>= FELT_ORDER`), whereas 0.14 reduced silently. Byte-packed digest inputs are
13
+ * arbitrary `u64`s, so reducing here preserves the original digest layout, keeps
14
+ * construction infallible, and stays byte-identical to server-side signing.
15
+ */
16
+ export function feltFromU64Reduced(value) {
17
+ return new Felt(BigInt.asUintN(64, value) % FELT_ORDER);
18
+ }
19
+ //# sourceMappingURL=felt.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"felt.js","sourceRoot":"","sources":["../../src/utils/felt.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,MAAM,sBAAsB,CAAC;AAE5C;;;GAGG;AACH,MAAM,UAAU,GAAG,qBAAqB,CAAC;AAEzC;;;;;;;;GAQG;AACH,MAAM,UAAU,kBAAkB,CAAC,KAAa;IAC9C,OAAO,IAAI,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,EAAE,EAAE,KAAK,CAAC,GAAG,UAAU,CAAC,CAAC;AAC1D,CAAC"}
@@ -1,4 +1,5 @@
1
1
  export * from './encoding.js';
2
+ export * from './felt.js';
2
3
  export * from './random.js';
3
4
  export * from './signature.js';
4
5
  export * from './word.js';
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/utils/index.ts"],"names":[],"mappings":"AAAA,cAAc,eAAe,CAAC;AAC9B,cAAc,aAAa,CAAC;AAC5B,cAAc,gBAAgB,CAAC;AAC/B,cAAc,WAAW,CAAC;AAC1B,cAAc,UAAU,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/utils/index.ts"],"names":[],"mappings":"AAAA,cAAc,eAAe,CAAC;AAC9B,cAAc,WAAW,CAAC;AAC1B,cAAc,aAAa,CAAC;AAC5B,cAAc,gBAAgB,CAAC;AAC/B,cAAc,WAAW,CAAC;AAC1B,cAAc,UAAU,CAAC"}
@@ -1,4 +1,5 @@
1
1
  export * from './encoding.js';
2
+ export * from './felt.js';
2
3
  export * from './random.js';
3
4
  export * from './signature.js';
4
5
  export * from './word.js';
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/utils/index.ts"],"names":[],"mappings":"AAAA,cAAc,eAAe,CAAC;AAC9B,cAAc,aAAa,CAAC;AAC5B,cAAc,gBAAgB,CAAC;AAC/B,cAAc,WAAW,CAAC;AAC1B,cAAc,UAAU,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/utils/index.ts"],"names":[],"mappings":"AAAA,cAAc,eAAe,CAAC;AAC9B,cAAc,WAAW,CAAC;AAC1B,cAAc,aAAa,CAAC;AAC5B,cAAc,gBAAgB,CAAC;AAC/B,cAAc,WAAW,CAAC;AAC1B,cAAc,UAAU,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"word.d.ts","sourceRoot":"","sources":["../../src/utils/word.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,MAAM,sBAAsB,CAAC;AAE5C,wBAAgB,SAAS,CAAC,IAAI,EAAE,IAAI,GAAG,MAAM,CAE5C;AAED,wBAAgB,mBAAmB,CAAC,IAAI,EAAE,IAAI,EAAE,KAAK,EAAE,MAAM,GAAG,MAAM,CAGrE;AAED,wBAAgB,WAAW,CAAC,IAAI,EAAE;IAAE,OAAO,EAAE,MAAM,KAAK,CAAC;QAAE,KAAK,EAAE,MAAM,MAAM,CAAA;KAAE,CAAC,CAAA;CAAE,GAAG,UAAU,CAU/F"}
1
+ {"version":3,"file":"word.d.ts","sourceRoot":"","sources":["../../src/utils/word.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,MAAM,sBAAsB,CAAC;AAE5C,wBAAgB,SAAS,CAAC,IAAI,EAAE,IAAI,GAAG,MAAM,CAE5C;AAED,wBAAgB,mBAAmB,CAAC,IAAI,EAAE,IAAI,EAAE,KAAK,EAAE,MAAM,GAAG,MAAM,CASrE;AAED,wBAAgB,WAAW,CAAC,IAAI,EAAE;IAAE,OAAO,EAAE,MAAM,KAAK,CAAC;QAAE,KAAK,EAAE,MAAM,MAAM,CAAA;KAAE,CAAC,CAAA;CAAE,GAAG,UAAU,CAU/F"}
@@ -2,8 +2,13 @@ export function wordToHex(word) {
2
2
  return word.toHex();
3
3
  }
4
4
  export function wordElementToBigInt(word, index) {
5
- const elements = word.toU64s();
6
- return index >= 0 && index < elements.length ? elements[index] : 0n;
5
+ if (index < 0 || index > 3) {
6
+ return 0n;
7
+ }
8
+ // The wallet-embedded 0.15 SDK lacks `toU64s()` on storage-read Words; fall
9
+ // back to `toFelts()`, which has the same element order.
10
+ const elements = typeof word.toU64s === 'function' ? word.toU64s() : word.toFelts().map(f => f.asInt());
11
+ return index < elements.length ? elements[index] : 0n;
7
12
  }
8
13
  export function wordToBytes(word) {
9
14
  const felts = word.toFelts();
@@ -1 +1 @@
1
- {"version":3,"file":"word.js","sourceRoot":"","sources":["../../src/utils/word.ts"],"names":[],"mappings":"AAEA,MAAM,UAAU,SAAS,CAAC,IAAU;IAClC,OAAO,IAAI,CAAC,KAAK,EAAE,CAAC;AACtB,CAAC;AAED,MAAM,UAAU,mBAAmB,CAAC,IAAU,EAAE,KAAa;IAC3D,MAAM,QAAQ,GAAG,IAAI,CAAC,MAAM,EAAE,CAAC;IAC/B,OAAO,KAAK,IAAI,CAAC,IAAI,KAAK,GAAG,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;AACtE,CAAC;AAED,MAAM,UAAU,WAAW,CAAC,IAAuD;IACjF,MAAM,KAAK,GAAG,IAAI,CAAC,OAAO,EAAE,CAAC;IAC7B,MAAM,GAAG,GAAG,IAAI,UAAU,CAAC,EAAE,CAAC,CAAC;IAC/B,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC;QAC3B,MAAM,GAAG,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,EAAE,CAAC;QAC7B,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC;YAC3B,GAAG,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,GAAG,MAAM,CAAC,CAAC,GAAG,IAAI,MAAM,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC;QACjE,CAAC;IACH,CAAC;IACD,OAAO,GAAG,CAAC;AACb,CAAC"}
1
+ {"version":3,"file":"word.js","sourceRoot":"","sources":["../../src/utils/word.ts"],"names":[],"mappings":"AAEA,MAAM,UAAU,SAAS,CAAC,IAAU;IAClC,OAAO,IAAI,CAAC,KAAK,EAAE,CAAC;AACtB,CAAC;AAED,MAAM,UAAU,mBAAmB,CAAC,IAAU,EAAE,KAAa;IAC3D,IAAI,KAAK,GAAG,CAAC,IAAI,KAAK,GAAG,CAAC,EAAE,CAAC;QAC3B,OAAO,EAAE,CAAC;IACZ,CAAC;IACD,4EAA4E;IAC5E,yDAAyD;IACzD,MAAM,QAAQ,GACZ,OAAO,IAAI,CAAC,MAAM,KAAK,UAAU,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,KAAK,EAAE,CAAC,CAAC;IACzF,OAAO,KAAK,GAAG,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;AACxD,CAAC;AAED,MAAM,UAAU,WAAW,CAAC,IAAuD;IACjF,MAAM,KAAK,GAAG,IAAI,CAAC,OAAO,EAAE,CAAC;IAC7B,MAAM,GAAG,GAAG,IAAI,UAAU,CAAC,EAAE,CAAC,CAAC;IAC/B,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC;QAC3B,MAAM,GAAG,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,EAAE,CAAC;QAC7B,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC;YAC3B,GAAG,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,GAAG,MAAM,CAAC,CAAC,GAAG,IAAI,MAAM,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC;QACjE,CAAC;IACH,CAAC;IACD,OAAO,GAAG,CAAC;AACb,CAAC"}
@@ -349,14 +349,20 @@ pub proc update_signers_and_threshold(multisig_config_hash: word)
349
349
  drop
350
350
  # => [pad(12)]
351
351
 
352
- # compare initial vs current multisig config
353
-
354
- # load init_num_of_approvers & new_num_of_approvers
355
352
  loc_load.0 loc_load.1
356
353
  # => [init_num_of_approvers, new_num_of_approvers, pad(12)]
357
354
 
358
- exec.cleanup_pubkey_mapping
359
- # => [pad(12)]
355
+ dup.1 dup.1
356
+ u32assert2 u32lt
357
+ # => [should_cleanup, init_num_of_approvers, new_num_of_approvers, pad(12)]
358
+
359
+ if.true
360
+ exec.cleanup_pubkey_mapping
361
+ # => [pad(12)]
362
+ else
363
+ drop drop
364
+ # => [pad(12)]
365
+ end
360
366
  end
361
367
 
362
368
  #! Update or clear the threshold override for a specific procedure.
@@ -349,14 +349,20 @@ pub proc update_signers_and_threshold(multisig_config_hash: word)
349
349
  drop
350
350
  # => [pad(12)]
351
351
 
352
- # compare initial vs current multisig config
353
-
354
- # load init_num_of_approvers & new_num_of_approvers
355
352
  loc_load.0 loc_load.1
356
353
  # => [init_num_of_approvers, new_num_of_approvers, pad(12)]
357
354
 
358
- exec.cleanup_pubkey_mapping
359
- # => [pad(12)]
355
+ dup.1 dup.1
356
+ u32assert2 u32lt
357
+ # => [should_cleanup, init_num_of_approvers, new_num_of_approvers, pad(12)]
358
+
359
+ if.true
360
+ exec.cleanup_pubkey_mapping
361
+ # => [pad(12)]
362
+ else
363
+ drop drop
364
+ # => [pad(12)]
365
+ end
360
366
  end
361
367
 
362
368
  #! Update or clear the threshold override for a specific procedure.
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@openzeppelin/miden-multisig-client",
3
- "version": "0.14.9",
3
+ "version": "0.15.0-rc.0",
4
4
  "description": "TypeScript SDK for Miden multisig accounts with GUARDIAN integration",
5
5
  "type": "module",
6
6
  "main": "./dist/index.js",
@@ -28,9 +28,9 @@
28
28
  },
29
29
  "dependencies": {
30
30
  "@noble/curves": "^1.9.7",
31
- "@miden-sdk/miden-sdk": "0.14.5",
31
+ "@miden-sdk/miden-sdk": "^0.15.0",
32
32
  "@noble/hashes": "^2.0.1",
33
- "@openzeppelin/guardian-client": "^0.14.9"
33
+ "@openzeppelin/guardian-client": "^0.15.0-rc.0"
34
34
  },
35
35
  "devDependencies": {
36
36
  "typescript": "^5.7.2",
@@ -74,9 +74,6 @@ vi.mock('@miden-sdk/miden-sdk', () => ({
74
74
  AccountComponent: {
75
75
  compile: compileComponent,
76
76
  },
77
- AccountType: {
78
- RegularAccountUpdatableCode: 'regular',
79
- },
80
77
  AccountStorageMode: {
81
78
  public: () => 'public',
82
79
  private: () => 'private',
@@ -7,7 +7,6 @@
7
7
  import {
8
8
  AccountBuilder,
9
9
  AccountComponent,
10
- AccountType,
11
10
  AccountStorageMode,
12
11
  type MidenClient,
13
12
  } from '@miden-sdk/miden-sdk';
@@ -57,7 +56,7 @@ export async function createMultisigAccount(
57
56
  ? 'openzeppelin::auth::multisig_ecdsa'
58
57
  : 'openzeppelin::auth::multisig';
59
58
 
60
- const authBuilder = rawClient.createCodeBuilder();
59
+ const authBuilder = await rawClient.createCodeBuilder();
61
60
  authBuilder.linkModule(guardianLibraryPath, guardianMasm);
62
61
  authBuilder.linkModule(multisigLibraryPath, multisigMasm);
63
62
  const authComponentCode = authBuilder.compileAccountComponentCode(authComponentMasm);
@@ -75,8 +74,9 @@ export async function createMultisigAccount(
75
74
  ? AccountStorageMode.public()
76
75
  : AccountStorageMode.private();
77
76
 
77
+ // Miden 0.15: the account-ID no longer encodes account type; visibility is set
78
+ // via `storageMode()`, so the former `.accountType(...)` call is gone.
78
79
  const accountBuilder = new AccountBuilder(seed)
79
- .accountType(AccountType.RegularAccountUpdatableCode)
80
80
  .storageMode(storageMode)
81
81
  .withAuthComponent(authComponent)
82
82
  .withBasicWalletComponent();
@@ -352,14 +352,20 @@ pub proc update_signers_and_threshold(multisig_config_hash: word)
352
352
  drop
353
353
  # => [pad(12)]
354
354
 
355
- # compare initial vs current multisig config
356
-
357
- # load init_num_of_approvers & new_num_of_approvers
358
355
  loc_load.0 loc_load.1
359
356
  # => [init_num_of_approvers, new_num_of_approvers, pad(12)]
360
357
 
361
- exec.cleanup_pubkey_mapping
362
- # => [pad(12)]
358
+ dup.1 dup.1
359
+ u32assert2 u32lt
360
+ # => [should_cleanup, init_num_of_approvers, new_num_of_approvers, pad(12)]
361
+
362
+ if.true
363
+ exec.cleanup_pubkey_mapping
364
+ # => [pad(12)]
365
+ else
366
+ drop drop
367
+ # => [pad(12)]
368
+ end
363
369
  end
364
370
 
365
371
  #! Update or clear the threshold override for a specific procedure.
@@ -902,14 +908,20 @@ pub proc update_signers_and_threshold(multisig_config_hash: word)
902
908
  drop
903
909
  # => [pad(12)]
904
910
 
905
- # compare initial vs current multisig config
906
-
907
- # load init_num_of_approvers & new_num_of_approvers
908
911
  loc_load.0 loc_load.1
909
912
  # => [init_num_of_approvers, new_num_of_approvers, pad(12)]
910
913
 
911
- exec.cleanup_pubkey_mapping
912
- # => [pad(12)]
914
+ dup.1 dup.1
915
+ u32assert2 u32lt
916
+ # => [should_cleanup, init_num_of_approvers, new_num_of_approvers, pad(12)]
917
+
918
+ if.true
919
+ exec.cleanup_pubkey_mapping
920
+ # => [pad(12)]
921
+ else
922
+ drop drop
923
+ # => [pad(12)]
924
+ end
913
925
  end
914
926
 
915
927
  #! Update or clear the threshold override for a specific procedure.
@@ -156,8 +156,9 @@ describe('lookupAuthDigest', () => {
156
156
  lookupAuthDigest(-1, keyCommitmentHex);
157
157
 
158
158
  const messageCall = hashCalls[hashCalls.length - 1];
159
- // -1 cast to u64 is 0xFFFFFFFFFFFFFFFF.
160
- expect(messageCall.input[4].value).toBe(0xFFFFFFFFFFFFFFFFn);
159
+ // -1 casts to u64 0xFFFFFFFFFFFFFFFF, then reduces mod the Goldilocks prime
160
+ // (matching Rust `felt_from_u64_reduced`): 0xFFFFFFFFFFFFFFFF - (2^64 - 2^32 + 1) = 0xFFFFFFFE.
161
+ expect(messageCall.input[4].value).toBe(0xFFFFFFFEn);
161
162
  });
162
163
 
163
164
  it('produces distinct digest inputs for distinct commitments', () => {
package/src/lookupAuth.ts CHANGED
@@ -1,4 +1,5 @@
1
1
  import { Felt, FeltArray, Rpo256, Word } from '@miden-sdk/miden-sdk';
2
+ import { feltFromU64Reduced } from './utils/felt.js';
2
3
 
3
4
  /**
4
5
  * Lookup-bound message format used to sign requests against the Guardian
@@ -25,7 +26,7 @@ function bytesToFelts(bytes: Uint8Array): Felt[] {
25
26
  const byte = offset + i < bytes.length ? bytes[offset + i] : 0;
26
27
  value |= BigInt(byte) << BigInt(8 * i);
27
28
  }
28
- felts.push(new Felt(value));
29
+ felts.push(feltFromU64Reduced(value));
29
30
  }
30
31
  return felts;
31
32
  }
@@ -56,9 +57,10 @@ function lookupDomainTag(): Word {
56
57
  * ```
57
58
  *
58
59
  * @param timestampMs Unix milliseconds. Reinterpreted as `u64` to match the
59
- * Rust `as u64` cast (so negative inputs wrap into the
60
- * high range, then are reduced mod the Goldilocks prime by
61
- * the Felt constructor).
60
+ * Rust `as u64` cast (so negative inputs wrap into the high
61
+ * range), then reduced mod the Goldilocks prime via
62
+ * `feltFromU64Reduced` (Miden 0.15's `Felt` constructor
63
+ * rejects non-canonical inputs instead of reducing).
62
64
  * @param keyCommitmentHex `0x`-prefixed 32-byte hex string for the queried
63
65
  * commitment.
64
66
  */
@@ -66,8 +68,7 @@ export function lookupAuthDigest(timestampMs: number | bigint, keyCommitmentHex:
66
68
  const tag = lookupDomainTag().toFelts();
67
69
  const kc = Word.fromHex(keyCommitmentHex).toFelts();
68
70
  const tsBigInt = typeof timestampMs === 'bigint' ? timestampMs : BigInt(timestampMs);
69
- const timestampU64 = BigInt.asUintN(64, tsBigInt);
70
- const timestampFelt = new Felt(timestampU64);
71
+ const timestampFelt = feltFromU64Reduced(tsBigInt);
71
72
 
72
73
  const message = new FeltArray([
73
74
  tag[0],