@openzeppelin/miden-multisig-client 0.13.1 → 0.13.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +98 -119
- package/dist/account/builder.d.ts +18 -0
- package/dist/account/builder.d.ts.map +1 -1
- package/dist/account/builder.js +59 -29
- package/dist/account/builder.js.map +1 -1
- package/dist/account/builder.test.js +108 -32
- package/dist/account/builder.test.js.map +1 -1
- package/dist/account/index.d.ts +1 -1
- package/dist/account/index.d.ts.map +1 -1
- package/dist/account/index.js +1 -1
- package/dist/account/index.js.map +1 -1
- package/dist/account/masm/account-components/auth.d.ts +5 -0
- package/dist/account/masm/account-components/auth.d.ts.map +1 -0
- package/dist/account/masm/account-components/auth.js +67 -0
- package/dist/account/masm/account-components/auth.js.map +1 -0
- package/dist/account/masm/auth.d.ts +5 -0
- package/dist/account/masm/auth.d.ts.map +1 -0
- package/dist/account/masm/auth.js +1395 -0
- package/dist/account/masm/auth.js.map +1 -0
- package/dist/account/masm/index.d.ts +3 -0
- package/dist/account/masm/index.d.ts.map +1 -0
- package/dist/account/masm/index.js +5 -0
- package/dist/account/masm/index.js.map +1 -0
- package/dist/account/masm.d.ts +1 -4
- package/dist/account/masm.d.ts.map +1 -1
- package/dist/account/masm.js +3 -1034
- package/dist/account/masm.js.map +1 -1
- package/dist/account/storage.d.ts +2 -2
- package/dist/account/storage.d.ts.map +1 -1
- package/dist/account/storage.js +18 -16
- package/dist/account/storage.js.map +1 -1
- package/dist/client.d.ts +67 -9
- package/dist/client.d.ts.map +1 -1
- package/dist/client.js +73 -22
- package/dist/client.js.map +1 -1
- package/dist/client.test.js +31 -32
- package/dist/client.test.js.map +1 -1
- package/dist/index.d.ts +54 -12
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +53 -9
- package/dist/index.js.map +1 -1
- package/dist/inspector.d.ts +32 -6
- package/dist/inspector.d.ts.map +1 -1
- package/dist/inspector.js +58 -23
- package/dist/inspector.js.map +1 -1
- package/dist/inspector.test.js +18 -18
- package/dist/inspector.test.js.map +1 -1
- package/dist/multisig/proposal/execution.d.ts +4 -4
- package/dist/multisig/proposal/execution.d.ts.map +1 -1
- package/dist/multisig/proposal/execution.js +42 -31
- package/dist/multisig/proposal/execution.js.map +1 -1
- package/dist/multisig/proposal/parser.d.ts +3 -3
- package/dist/multisig/proposal/parser.d.ts.map +1 -1
- package/dist/multisig/proposal/parser.js +23 -23
- package/dist/multisig/proposal/parser.js.map +1 -1
- package/dist/multisig/signing.d.ts +3 -3
- package/dist/multisig/signing.d.ts.map +1 -1
- package/dist/multisig/signing.js +3 -3
- package/dist/multisig/signing.js.map +1 -1
- package/dist/multisig.d.ts +188 -48
- package/dist/multisig.d.ts.map +1 -1
- package/dist/multisig.js +650 -308
- package/dist/multisig.js.map +1 -1
- package/dist/multisig.test.js +1680 -241
- package/dist/multisig.test.js.map +1 -1
- package/dist/procedures.d.ts +46 -24
- package/dist/procedures.d.ts.map +1 -1
- package/dist/procedures.js +46 -21
- package/dist/procedures.js.map +1 -1
- package/dist/proposal/factory.d.ts +18 -0
- package/dist/proposal/factory.d.ts.map +1 -0
- package/dist/proposal/factory.js +99 -0
- package/dist/proposal/factory.js.map +1 -0
- package/dist/proposal/metadata.d.ts +5 -12
- package/dist/proposal/metadata.d.ts.map +1 -1
- package/dist/proposal/metadata.js +118 -174
- package/dist/proposal/metadata.js.map +1 -1
- package/dist/proposal/signatures.d.ts +10 -0
- package/dist/proposal/signatures.d.ts.map +1 -0
- package/dist/proposal/signatures.js +54 -0
- package/dist/proposal/signatures.js.map +1 -0
- package/dist/signer.d.ts +2 -0
- package/dist/signer.d.ts.map +1 -1
- package/dist/signer.js +2 -0
- package/dist/signer.js.map +1 -1
- package/dist/signers/ecdsa.d.ts +3 -0
- package/dist/signers/ecdsa.d.ts.map +1 -1
- package/dist/signers/ecdsa.js +8 -4
- package/dist/signers/ecdsa.js.map +1 -1
- package/dist/signers/ecdsa.test.d.ts +2 -0
- package/dist/signers/ecdsa.test.d.ts.map +1 -0
- package/dist/signers/ecdsa.test.js +65 -0
- package/dist/signers/ecdsa.test.js.map +1 -0
- package/dist/signers/falcon.d.ts +3 -0
- package/dist/signers/falcon.d.ts.map +1 -1
- package/dist/signers/falcon.js +8 -4
- package/dist/signers/falcon.js.map +1 -1
- package/dist/signers/falcon.test.js +12 -0
- package/dist/signers/falcon.test.js.map +1 -1
- package/dist/signers/miden-wallet.d.ts +3 -1
- package/dist/signers/miden-wallet.d.ts.map +1 -1
- package/dist/signers/miden-wallet.js +11 -2
- package/dist/signers/miden-wallet.js.map +1 -1
- package/dist/signers/miden-wallet.test.js +26 -0
- package/dist/signers/miden-wallet.test.js.map +1 -1
- package/dist/signers/para.d.ts +3 -3
- package/dist/signers/para.d.ts.map +1 -1
- package/dist/signers/para.js +15 -6
- package/dist/signers/para.js.map +1 -1
- package/dist/signers/para.test.js +39 -0
- package/dist/signers/para.test.js.map +1 -1
- package/dist/transaction/consumeNotes.d.ts.map +1 -1
- package/dist/transaction/consumeNotes.js +1 -0
- package/dist/transaction/consumeNotes.js.map +1 -1
- package/dist/transaction/index.d.ts +2 -1
- package/dist/transaction/index.d.ts.map +1 -1
- package/dist/transaction/index.js +2 -1
- package/dist/transaction/index.js.map +1 -1
- package/dist/transaction/options.d.ts +1 -1
- package/dist/transaction/options.d.ts.map +1 -1
- package/dist/transaction/p2id.d.ts +1 -0
- package/dist/transaction/p2id.d.ts.map +1 -1
- package/dist/transaction/p2id.js +9 -3
- package/dist/transaction/p2id.js.map +1 -1
- package/dist/transaction/updateGuardian.d.ts +7 -0
- package/dist/transaction/updateGuardian.d.ts.map +1 -0
- package/dist/transaction/{updatePsm.js → updateGuardian.js} +15 -29
- package/dist/transaction/updateGuardian.js.map +1 -0
- package/dist/transaction/updateProcedureThreshold.d.ts +9 -0
- package/dist/transaction/updateProcedureThreshold.d.ts.map +1 -0
- package/dist/transaction/updateProcedureThreshold.js +55 -0
- package/dist/transaction/updateProcedureThreshold.js.map +1 -0
- package/dist/transaction/updateSigners.d.ts.map +1 -1
- package/dist/transaction/updateSigners.js +5 -23
- package/dist/transaction/updateSigners.js.map +1 -1
- package/dist/transaction.d.ts +2 -1
- package/dist/transaction.d.ts.map +1 -1
- package/dist/transaction.js +2 -1
- package/dist/transaction.js.map +1 -1
- package/dist/types/proposal.d.ts +32 -15
- package/dist/types/proposal.d.ts.map +1 -1
- package/dist/types.d.ts +24 -7
- package/dist/types.d.ts.map +1 -1
- package/dist/utils/digest.d.ts +5 -0
- package/dist/utils/digest.d.ts.map +1 -1
- package/dist/utils/digest.js +34 -1
- package/dist/utils/digest.js.map +1 -1
- package/dist/utils/digest.test.d.ts +2 -0
- package/dist/utils/digest.test.d.ts.map +1 -0
- package/dist/utils/digest.test.js +48 -0
- package/dist/utils/digest.test.js.map +1 -0
- package/dist/utils/signature.d.ts +3 -1
- package/dist/utils/signature.d.ts.map +1 -1
- package/dist/utils/signature.js +31 -6
- package/dist/utils/signature.js.map +1 -1
- package/dist/utils/word.test.js +1 -52
- package/dist/utils/word.test.js.map +1 -1
- package/masm/account_components/auth/multisig.masm +13 -0
- package/masm/account_components/auth/multisig_ecdsa.masm +13 -0
- package/masm/account_components/auth/multisig_guardian.masm +17 -0
- package/masm/account_components/auth/multisig_guardian_ecdsa.masm +17 -0
- package/masm/auth/guardian.masm +177 -0
- package/masm/auth/guardian_ecdsa.masm +178 -0
- package/masm/{multisig.masm → auth/multisig.masm} +149 -55
- package/masm/{multisig_ecdsa.masm → auth/multisig_ecdsa.masm} +148 -56
- package/package.json +11 -9
- package/src/account/builder.test.ts +165 -0
- package/src/account/builder.ts +71 -34
- package/src/account/index.ts +1 -1
- package/src/account/masm/account-components/auth.ts +70 -0
- package/src/account/masm/auth.ts +1398 -0
- package/src/account/masm/index.ts +5 -0
- package/src/account/masm.ts +3 -1040
- package/src/account/storage.ts +18 -16
- package/src/client.test.ts +31 -35
- package/src/client.ts +98 -26
- package/src/index.ts +84 -22
- package/src/inspector.test.ts +17 -17
- package/src/inspector.ts +63 -29
- package/src/multisig/proposal/execution.ts +66 -49
- package/src/multisig/proposal/parser.ts +26 -26
- package/src/multisig/signing.ts +4 -4
- package/src/multisig.test.ts +2097 -248
- package/src/multisig.ts +882 -388
- package/src/procedures.ts +50 -26
- package/src/proposal/factory.ts +171 -0
- package/src/proposal/metadata.ts +165 -0
- package/src/proposal/signatures.ts +68 -0
- package/src/signer.ts +2 -0
- package/src/signers/ecdsa.test.ts +80 -0
- package/src/signers/ecdsa.ts +15 -4
- package/src/signers/falcon.test.ts +19 -0
- package/src/signers/falcon.ts +16 -5
- package/src/signers/miden-wallet.test.ts +47 -0
- package/src/signers/miden-wallet.ts +18 -1
- package/src/signers/para.test.ts +57 -0
- package/src/signers/para.ts +26 -7
- package/src/transaction/consumeNotes.ts +1 -0
- package/src/transaction/index.ts +2 -2
- package/src/transaction/options.ts +1 -2
- package/src/transaction/p2id.test.ts +190 -0
- package/src/transaction/p2id.ts +11 -5
- package/src/transaction/rpoRandomCoin.test.ts +64 -0
- package/src/transaction/rpoRandomCoin.ts +24 -0
- package/src/transaction/{updatePsm.ts → updateGuardian.ts} +19 -32
- package/src/transaction/updateProcedureThreshold.ts +97 -0
- package/src/transaction/updateSigners.ts +12 -27
- package/src/transaction.ts +5 -3
- package/src/types/proposal.ts +43 -11
- package/src/types.ts +29 -11
- package/src/utils/digest.test.ts +55 -0
- package/src/utils/digest.ts +51 -1
- package/src/utils/signature.ts +47 -9
- package/src/utils/word.test.ts +1 -55
- package/dist/account.d.ts +0 -104
- package/dist/account.d.ts.map +0 -1
- package/dist/account.js +0 -136
- package/dist/account.js.map +0 -1
- package/dist/builder.d.ts +0 -54
- package/dist/builder.d.ts.map +0 -1
- package/dist/builder.js +0 -78
- package/dist/builder.js.map +0 -1
- package/dist/http.d.ts +0 -64
- package/dist/http.d.ts.map +0 -1
- package/dist/http.js +0 -162
- package/dist/http.js.map +0 -1
- package/dist/keystore.d.ts +0 -65
- package/dist/keystore.d.ts.map +0 -1
- package/dist/keystore.js +0 -121
- package/dist/keystore.js.map +0 -1
- package/dist/miden.d.ts +0 -9
- package/dist/miden.d.ts.map +0 -1
- package/dist/miden.js +0 -26
- package/dist/miden.js.map +0 -1
- package/dist/multisig/metadata.d.ts +0 -18
- package/dist/multisig/metadata.d.ts.map +0 -1
- package/dist/multisig/metadata.js +0 -100
- package/dist/multisig/metadata.js.map +0 -1
- package/dist/multisig/metadata.test.d.ts +0 -2
- package/dist/multisig/metadata.test.d.ts.map +0 -1
- package/dist/multisig/metadata.test.js +0 -323
- package/dist/multisig/metadata.test.js.map +0 -1
- package/dist/proposal/exported.d.ts +0 -12
- package/dist/proposal/exported.d.ts.map +0 -1
- package/dist/proposal/exported.js +0 -88
- package/dist/proposal/exported.js.map +0 -1
- package/dist/signer.test.d.ts +0 -2
- package/dist/signer.test.d.ts.map +0 -1
- package/dist/signer.test.js +0 -123
- package/dist/signer.test.js.map +0 -1
- package/dist/transaction/p2id.interop.test.d.ts +0 -2
- package/dist/transaction/p2id.interop.test.d.ts.map +0 -1
- package/dist/transaction/p2id.interop.test.js +0 -36
- package/dist/transaction/p2id.interop.test.js.map +0 -1
- package/dist/transaction/updatePsm.d.ts +0 -7
- package/dist/transaction/updatePsm.d.ts.map +0 -1
- package/dist/transaction/updatePsm.js.map +0 -1
- package/dist/transport/http.d.ts +0 -64
- package/dist/transport/http.d.ts.map +0 -1
- package/dist/transport/http.js +0 -162
- package/dist/transport/http.js.map +0 -1
- package/dist/transport/index.d.ts +0 -5
- package/dist/transport/index.d.ts.map +0 -1
- package/dist/transport/index.js +0 -5
- package/dist/transport/index.js.map +0 -1
- package/dist/utils/state-validation.d.ts +0 -5
- package/dist/utils/state-validation.d.ts.map +0 -1
- package/dist/utils/state-validation.js +0 -30
- package/dist/utils/state-validation.js.map +0 -1
- package/dist/utils/validation.d.ts +0 -6
- package/dist/utils/validation.d.ts.map +0 -1
- package/dist/utils/validation.js +0 -52
- package/dist/utils/validation.js.map +0 -1
- package/masm/psm.masm +0 -178
- package/masm/psm_ecdsa.masm +0 -179
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,KAAK,oBAAoB,EAAE,MAAM,aAAa,CAAC;AACxE,OAAO,EAAE,QAAQ,EAAE,KAAK,YAAY,EAAE,MAAM,eAAe,CAAC;AAC5D,OAAO,EAAE,gBAAgB,EAAE,KAAK,sBAAsB,EAAE,KAAK,YAAY,EAAE,MAAM,gBAAgB,CAAC;AAClG,OAAO,EACL,iBAAiB,EACjB,oCAAoC,EACpC,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA6CG;AAEH,OAAO,EAAE,cAAc,EAAE,KAAK,oBAAoB,EAAE,MAAM,aAAa,CAAC;AACxE,OAAO,EAAE,QAAQ,EAAE,KAAK,YAAY,EAAE,MAAM,eAAe,CAAC;AAC5D,OAAO,EAAE,gBAAgB,EAAE,KAAK,sBAAsB,EAAE,KAAK,YAAY,EAAE,MAAM,gBAAgB,CAAC;AAClG,OAAO,EACL,iBAAiB,EACjB,oCAAoC,EACpC,+CAA+C,EAC/C,qCAAqC,EACrC,mCAAmC,EACnC,2BAA2B,GAC5B,MAAM,kBAAkB,CAAC;AAE1B,OAAO,EAAE,kBAAkB,EAAE,iBAAiB,EAAE,MAAM,+BAA+B,CAAC;AAEtF,OAAO,EACL,YAAY,EACZ,WAAW,EACX,UAAU,EACV,iBAAiB,EACjB,KAAK,kBAAkB,EACvB,KAAK,oBAAoB,GAC1B,MAAM,aAAa,CAAC;AACrB,OAAO,EAAE,eAAe,EAAE,MAAM,gBAAgB,CAAC;AACjD,OAAO,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AAC/C,OAAO,EAAE,4BAA4B,EAAE,MAAM,sBAAsB,CAAC;AAEpE,OAAO,EACL,qBAAqB,EACrB,sBAAsB,EACtB,yBAAyB,EACzB,yBAAyB,EACzB,oBAAoB,EACpB,oBAAoB,GACrB,MAAM,oBAAoB,CAAC;AAE5B,OAAO,EACL,eAAe,EACf,gBAAgB,EAChB,eAAe,EACf,iBAAiB,EACjB,KAAK,aAAa,GACnB,MAAM,iBAAiB,CAAC;AAEzB,YAAY,EAEV,oBAAoB,EACpB,cAAc,EACd,mBAAmB,EACnB,kBAAkB,EAGlB,QAAQ,EACR,cAAc,EACd,sBAAsB,EACtB,gBAAgB,EAChB,YAAY,EACZ,gBAAgB,EAChB,2BAA2B,EAC3B,6BAA6B,EAC7B,mBAAmB,EACnB,4BAA4B,EAC5B,yBAAyB,EAGzB,eAAe,EAGf,cAAc,EACd,SAAS,EAGT,eAAe,EACf,MAAM,EACN,eAAe,EAGf,UAAU,EACV,WAAW,EACX,WAAW,EACX,WAAW,EACX,iBAAiB,EAGjB,gBAAgB,EAChB,iBAAiB,EACjB,oBAAoB,EACpB,qBAAqB,EACrB,iBAAiB,EACjB,cAAc,EACd,mBAAmB,GACpB,MAAM,YAAY,CAAC"}
|
package/dist/index.js
CHANGED
|
@@ -1,14 +1,58 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @openzeppelin/miden-multisig-client
|
|
3
|
+
*
|
|
4
|
+
* TypeScript SDK for Miden multisig accounts with Guardian integration.
|
|
5
|
+
*
|
|
6
|
+
* @example
|
|
7
|
+
* ```typescript
|
|
8
|
+
* import {
|
|
9
|
+
* MultisigClient,
|
|
10
|
+
* FalconSigner,
|
|
11
|
+
* } from '@openzeppelin/miden-multisig-client';
|
|
12
|
+
* import { WebClient, SecretKey } from '@miden-sdk/miden-sdk';
|
|
13
|
+
*
|
|
14
|
+
* // Initialize WebClient
|
|
15
|
+
* const webClient = await WebClient.createClient('https://rpc.testnet.miden.io:443');
|
|
16
|
+
* await webClient.syncState();
|
|
17
|
+
*
|
|
18
|
+
* // Generate a key dynamically
|
|
19
|
+
* const seed = new Uint8Array(32);
|
|
20
|
+
* crypto.getRandomValues(seed);
|
|
21
|
+
* const secretKey = SecretKey.rpoFalconWithRNG(seed);
|
|
22
|
+
*
|
|
23
|
+
* // Store in miden-sdk's keystore
|
|
24
|
+
* await webClient.addAccountSecretKeyToWebStore(secretKey);
|
|
25
|
+
*
|
|
26
|
+
* // Create a signer
|
|
27
|
+
* const signer = new FalconSigner(secretKey);
|
|
28
|
+
*
|
|
29
|
+
* // Create multisig client
|
|
30
|
+
* const client = new MultisigClient(webClient, {
|
|
31
|
+
* guardianEndpoint: 'http://localhost:3000',
|
|
32
|
+
* midenRpcEndpoint: 'https://rpc.testnet.miden.io:443',
|
|
33
|
+
* });
|
|
34
|
+
*
|
|
35
|
+
* // Get GUARDIAN pubkey for config
|
|
36
|
+
* const guardianCommitment = await client.guardianClient.getPubkey();
|
|
37
|
+
*
|
|
38
|
+
* // Create multisig account
|
|
39
|
+
* const config = { threshold: 2, signerCommitments: [signer.commitment, ...], guardianCommitment };
|
|
40
|
+
* const multisig = await client.create(config, signer);
|
|
41
|
+
*
|
|
42
|
+
* // Register on GUARDIAN and work with proposals
|
|
43
|
+
* await multisig.registerOnGuardian();
|
|
44
|
+
* await multisig.syncProposals();
|
|
45
|
+
* ```
|
|
46
|
+
*/
|
|
1
47
|
export { MultisigClient } from './client.js';
|
|
2
48
|
export { Multisig } from './multisig.js';
|
|
3
49
|
export { AccountInspector } from './inspector.js';
|
|
4
|
-
export { executeForSummary, buildUpdateSignersTransactionRequest,
|
|
5
|
-
export {
|
|
6
|
-
export { FalconSigner, EcdsaSigner, ParaSigner, MidenWalletSigner } from './
|
|
7
|
-
export { AuthDigest } from './utils/digest.js';
|
|
8
|
-
export { EcdsaFormat } from './utils/ecdsa.js';
|
|
50
|
+
export { executeForSummary, buildUpdateSignersTransactionRequest, buildUpdateProcedureThresholdTransactionRequest, buildUpdateGuardianTransactionRequest, buildConsumeNotesTransactionRequest, buildP2idTransactionRequest, } from './transaction.js';
|
|
51
|
+
export { GuardianHttpClient, GuardianHttpError } from '@openzeppelin/guardian-client';
|
|
52
|
+
export { FalconSigner, EcdsaSigner, ParaSigner, MidenWalletSigner, } from './signer.js';
|
|
9
53
|
export { PublicKeyFormat } from './utils/key.js';
|
|
10
|
-
export {
|
|
11
|
-
export { tryComputeEcdsaCommitmentHex
|
|
12
|
-
export { createMultisigAccount, validateMultisigConfig, buildMultisigStorageSlots,
|
|
13
|
-
export { PROCEDURE_ROOTS,
|
|
54
|
+
export { EcdsaFormat } from './utils/ecdsa.js';
|
|
55
|
+
export { tryComputeEcdsaCommitmentHex } from './utils/signature.js';
|
|
56
|
+
export { createMultisigAccount, validateMultisigConfig, buildMultisigStorageSlots, buildGuardianStorageSlots, storageLayoutBuilder, StorageLayoutBuilder, } from './account/index.js';
|
|
57
|
+
export { PROCEDURE_ROOTS, getProcedureRoot, isProcedureName, getProcedureNames, } from './procedures.js';
|
|
14
58
|
//# sourceMappingURL=index.js.map
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAA6B,MAAM,aAAa,CAAC;AACxE,OAAO,EAAE,QAAQ,EAAqB,MAAM,eAAe,CAAC;AAC5D,OAAO,EAAE,gBAAgB,EAAkD,MAAM,gBAAgB,CAAC;AAClG,OAAO,EACL,iBAAiB,EACjB,oCAAoC,EACpC,
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA6CG;AAEH,OAAO,EAAE,cAAc,EAA6B,MAAM,aAAa,CAAC;AACxE,OAAO,EAAE,QAAQ,EAAqB,MAAM,eAAe,CAAC;AAC5D,OAAO,EAAE,gBAAgB,EAAkD,MAAM,gBAAgB,CAAC;AAClG,OAAO,EACL,iBAAiB,EACjB,oCAAoC,EACpC,+CAA+C,EAC/C,qCAAqC,EACrC,mCAAmC,EACnC,2BAA2B,GAC5B,MAAM,kBAAkB,CAAC;AAE1B,OAAO,EAAE,kBAAkB,EAAE,iBAAiB,EAAE,MAAM,+BAA+B,CAAC;AAEtF,OAAO,EACL,YAAY,EACZ,WAAW,EACX,UAAU,EACV,iBAAiB,GAGlB,MAAM,aAAa,CAAC;AACrB,OAAO,EAAE,eAAe,EAAE,MAAM,gBAAgB,CAAC;AACjD,OAAO,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AAC/C,OAAO,EAAE,4BAA4B,EAAE,MAAM,sBAAsB,CAAC;AAEpE,OAAO,EACL,qBAAqB,EACrB,sBAAsB,EACtB,yBAAyB,EACzB,yBAAyB,EACzB,oBAAoB,EACpB,oBAAoB,GACrB,MAAM,oBAAoB,CAAC;AAE5B,OAAO,EACL,eAAe,EACf,gBAAgB,EAChB,eAAe,EACf,iBAAiB,GAElB,MAAM,iBAAiB,CAAC"}
|
package/dist/inspector.d.ts
CHANGED
|
@@ -1,6 +1,8 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Account Inspector - Inspects account storage to detect multisig configuration.
|
|
3
|
+
*/
|
|
1
4
|
import { Account } from '@miden-sdk/miden-sdk';
|
|
2
5
|
import { type ProcedureName } from './procedures.js';
|
|
3
|
-
import type { SignatureScheme } from './types.js';
|
|
4
6
|
export interface VaultBalance {
|
|
5
7
|
faucetId: string;
|
|
6
8
|
amount: bigint;
|
|
@@ -9,15 +11,39 @@ export interface DetectedMultisigConfig {
|
|
|
9
11
|
threshold: number;
|
|
10
12
|
numSigners: number;
|
|
11
13
|
signerCommitments: string[];
|
|
12
|
-
|
|
13
|
-
|
|
14
|
+
guardianEnabled: boolean;
|
|
15
|
+
guardianCommitment: string | null;
|
|
14
16
|
vaultBalances: VaultBalance[];
|
|
15
17
|
procedureThresholds: Map<ProcedureName, number>;
|
|
16
|
-
signatureScheme: SignatureScheme;
|
|
17
18
|
}
|
|
19
|
+
/**
|
|
20
|
+
* Inspects an account to detect its multisig configuration.
|
|
21
|
+
*
|
|
22
|
+
* @example
|
|
23
|
+
* ```typescript
|
|
24
|
+
* // From base64-encoded state
|
|
25
|
+
* const config = AccountInspector.fromBase64(stateDataBase64);
|
|
26
|
+
* console.log(`${config.threshold}-of-${config.numSigners} multisig`);
|
|
27
|
+
*
|
|
28
|
+
* // From Miden SDK Account
|
|
29
|
+
* const config = AccountInspector.fromAccount(account);
|
|
30
|
+
* ```
|
|
31
|
+
*/
|
|
18
32
|
export declare class AccountInspector {
|
|
19
33
|
private constructor();
|
|
20
|
-
|
|
21
|
-
|
|
34
|
+
/**
|
|
35
|
+
* Inspect a base64-encoded serialized account.
|
|
36
|
+
*
|
|
37
|
+
* @param base64Data - Base64-encoded Account bytes
|
|
38
|
+
* @returns Detected multisig configuration
|
|
39
|
+
*/
|
|
40
|
+
static fromBase64(base64Data: string): DetectedMultisigConfig;
|
|
41
|
+
/**
|
|
42
|
+
* Inspect a Miden SDK Account object.
|
|
43
|
+
*
|
|
44
|
+
* @param account - The Account object from Miden SDK
|
|
45
|
+
* @returns Detected multisig configuration
|
|
46
|
+
*/
|
|
47
|
+
static fromAccount(account: Account): DetectedMultisigConfig;
|
|
22
48
|
}
|
|
23
49
|
//# sourceMappingURL=inspector.d.ts.map
|
package/dist/inspector.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"inspector.d.ts","sourceRoot":"","sources":["../src/inspector.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAQ,MAAM,sBAAsB,CAAC;AAGrD,OAAO,EAAuC,KAAK,aAAa,EAAE,MAAM,iBAAiB,CAAC;
|
|
1
|
+
{"version":3,"file":"inspector.d.ts","sourceRoot":"","sources":["../src/inspector.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,OAAO,EAAQ,MAAM,sBAAsB,CAAC;AAGrD,OAAO,EAAuC,KAAK,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAe1F,MAAM,WAAW,YAAY;IAC3B,QAAQ,EAAE,MAAM,CAAC;IACjB,MAAM,EAAE,MAAM,CAAC;CAChB;AAED,MAAM,WAAW,sBAAsB;IACrC,SAAS,EAAE,MAAM,CAAC;IAClB,UAAU,EAAE,MAAM,CAAC;IACnB,iBAAiB,EAAE,MAAM,EAAE,CAAC;IAC5B,eAAe,EAAE,OAAO,CAAC;IACzB,kBAAkB,EAAE,MAAM,GAAG,IAAI,CAAC;IAClC,aAAa,EAAE,YAAY,EAAE,CAAC;IAC9B,mBAAmB,EAAE,GAAG,CAAC,aAAa,EAAE,MAAM,CAAC,CAAC;CACjD;AAED;;;;;;;;;;;;GAYG;AACH,qBAAa,gBAAgB;IAC3B,OAAO;IAEP;;;;;OAKG;IACH,MAAM,CAAC,UAAU,CAAC,UAAU,EAAE,MAAM,GAAG,sBAAsB;IAM7D;;;;;OAKG;IAEH,MAAM,CAAC,WAAW,CAAC,OAAO,EAAE,OAAO,GAAG,sBAAsB;CAkF7D"}
|
package/dist/inspector.js
CHANGED
|
@@ -1,25 +1,55 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Account Inspector - Inspects account storage to detect multisig configuration.
|
|
3
|
+
*/
|
|
1
4
|
import { Account, Word } from '@miden-sdk/miden-sdk';
|
|
2
5
|
import { base64ToUint8Array } from './utils/encoding.js';
|
|
3
6
|
import { wordElementToBigInt, wordToHex } from './utils/word.js';
|
|
4
7
|
import { getProcedureRoot, getProcedureNames } from './procedures.js';
|
|
8
|
+
// Storage slot names matching the MASM definitions
|
|
5
9
|
const MULTISIG_SLOT_NAMES = {
|
|
6
10
|
THRESHOLD_CONFIG: 'openzeppelin::multisig::threshold_config',
|
|
7
11
|
SIGNER_PUBLIC_KEYS: 'openzeppelin::multisig::signer_public_keys',
|
|
8
12
|
EXECUTED_TRANSACTIONS: 'openzeppelin::multisig::executed_transactions',
|
|
9
13
|
PROCEDURE_THRESHOLDS: 'openzeppelin::multisig::procedure_thresholds',
|
|
10
14
|
};
|
|
11
|
-
const
|
|
12
|
-
SELECTOR: 'openzeppelin::
|
|
13
|
-
PUBLIC_KEY: 'openzeppelin::
|
|
15
|
+
const GUARDIAN_SLOT_NAMES = {
|
|
16
|
+
SELECTOR: 'openzeppelin::guardian::selector',
|
|
17
|
+
PUBLIC_KEY: 'openzeppelin::guardian::public_key',
|
|
14
18
|
};
|
|
19
|
+
/**
|
|
20
|
+
* Inspects an account to detect its multisig configuration.
|
|
21
|
+
*
|
|
22
|
+
* @example
|
|
23
|
+
* ```typescript
|
|
24
|
+
* // From base64-encoded state
|
|
25
|
+
* const config = AccountInspector.fromBase64(stateDataBase64);
|
|
26
|
+
* console.log(`${config.threshold}-of-${config.numSigners} multisig`);
|
|
27
|
+
*
|
|
28
|
+
* // From Miden SDK Account
|
|
29
|
+
* const config = AccountInspector.fromAccount(account);
|
|
30
|
+
* ```
|
|
31
|
+
*/
|
|
15
32
|
export class AccountInspector {
|
|
16
33
|
constructor() { }
|
|
17
|
-
|
|
34
|
+
/**
|
|
35
|
+
* Inspect a base64-encoded serialized account.
|
|
36
|
+
*
|
|
37
|
+
* @param base64Data - Base64-encoded Account bytes
|
|
38
|
+
* @returns Detected multisig configuration
|
|
39
|
+
*/
|
|
40
|
+
static fromBase64(base64Data) {
|
|
18
41
|
const bytes = base64ToUint8Array(base64Data);
|
|
19
42
|
const account = Account.deserialize(bytes);
|
|
20
|
-
return AccountInspector.fromAccount(account
|
|
43
|
+
return AccountInspector.fromAccount(account);
|
|
21
44
|
}
|
|
22
|
-
|
|
45
|
+
/**
|
|
46
|
+
* Inspect a Miden SDK Account object.
|
|
47
|
+
*
|
|
48
|
+
* @param account - The Account object from Miden SDK
|
|
49
|
+
* @returns Detected multisig configuration
|
|
50
|
+
*/
|
|
51
|
+
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
52
|
+
static fromAccount(account) {
|
|
23
53
|
const storage = account.storage();
|
|
24
54
|
const slot0 = storage.getItem(MULTISIG_SLOT_NAMES.THRESHOLD_CONFIG);
|
|
25
55
|
const threshold = Number(wordElementToBigInt(slot0, 0));
|
|
@@ -33,24 +63,26 @@ export class AccountInspector {
|
|
|
33
63
|
signerCommitments.push(wordToHex(commitment));
|
|
34
64
|
}
|
|
35
65
|
}
|
|
36
|
-
catch {
|
|
66
|
+
catch (error) {
|
|
67
|
+
console.warn(error);
|
|
37
68
|
}
|
|
38
69
|
}
|
|
39
|
-
let
|
|
40
|
-
let
|
|
70
|
+
let guardianEnabled = false;
|
|
71
|
+
let guardianCommitment = null;
|
|
41
72
|
try {
|
|
42
|
-
const
|
|
43
|
-
const selector = Number(wordElementToBigInt(
|
|
44
|
-
|
|
45
|
-
if (
|
|
73
|
+
const guardianSlot0 = storage.getItem(GUARDIAN_SLOT_NAMES.SELECTOR);
|
|
74
|
+
const selector = Number(wordElementToBigInt(guardianSlot0, 0));
|
|
75
|
+
guardianEnabled = selector === 1;
|
|
76
|
+
if (guardianEnabled) {
|
|
46
77
|
const zeroKey = new Word(new BigUint64Array([0n, 0n, 0n, 0n]));
|
|
47
|
-
const
|
|
48
|
-
if (
|
|
49
|
-
|
|
78
|
+
const guardianKey = storage.getMapItem(GUARDIAN_SLOT_NAMES.PUBLIC_KEY, zeroKey);
|
|
79
|
+
if (guardianKey) {
|
|
80
|
+
guardianCommitment = wordToHex(guardianKey);
|
|
50
81
|
}
|
|
51
82
|
}
|
|
52
83
|
}
|
|
53
|
-
catch {
|
|
84
|
+
catch (error) {
|
|
85
|
+
console.warn(error);
|
|
54
86
|
}
|
|
55
87
|
const vaultBalances = [];
|
|
56
88
|
try {
|
|
@@ -63,12 +95,15 @@ export class AccountInspector {
|
|
|
63
95
|
});
|
|
64
96
|
}
|
|
65
97
|
}
|
|
66
|
-
catch {
|
|
98
|
+
catch (error) {
|
|
99
|
+
console.warn(error);
|
|
67
100
|
}
|
|
101
|
+
// Read procedure threshold overrides from storage slot 3
|
|
102
|
+
// Storage layout: slot 3 is a map of PROC_ROOT => [threshold, 0, 0, 0]
|
|
68
103
|
const procedureThresholds = new Map();
|
|
69
|
-
for (const procName of getProcedureNames(
|
|
104
|
+
for (const procName of getProcedureNames()) {
|
|
70
105
|
try {
|
|
71
|
-
const rootHex = getProcedureRoot(procName
|
|
106
|
+
const rootHex = getProcedureRoot(procName);
|
|
72
107
|
const rootWord = Word.fromHex(rootHex);
|
|
73
108
|
const value = storage.getMapItem(MULTISIG_SLOT_NAMES.PROCEDURE_THRESHOLDS, rootWord);
|
|
74
109
|
if (value) {
|
|
@@ -79,17 +114,17 @@ export class AccountInspector {
|
|
|
79
114
|
}
|
|
80
115
|
}
|
|
81
116
|
catch {
|
|
117
|
+
// Procedure threshold not set - use default
|
|
82
118
|
}
|
|
83
119
|
}
|
|
84
120
|
return {
|
|
85
121
|
threshold,
|
|
86
122
|
numSigners,
|
|
87
123
|
signerCommitments,
|
|
88
|
-
|
|
89
|
-
|
|
124
|
+
guardianEnabled,
|
|
125
|
+
guardianCommitment,
|
|
90
126
|
vaultBalances,
|
|
91
127
|
procedureThresholds,
|
|
92
|
-
signatureScheme,
|
|
93
128
|
};
|
|
94
129
|
}
|
|
95
130
|
}
|
package/dist/inspector.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"inspector.js","sourceRoot":"","sources":["../src/inspector.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,sBAAsB,CAAC;AACrD,OAAO,EAAE,kBAAkB,EAAE,MAAM,qBAAqB,CAAC;AACzD,OAAO,EAAE,mBAAmB,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AACjE,OAAO,EAAE,gBAAgB,EAAE,iBAAiB,EAAsB,MAAM,iBAAiB,CAAC;
|
|
1
|
+
{"version":3,"file":"inspector.js","sourceRoot":"","sources":["../src/inspector.ts"],"names":[],"mappings":"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"}
|
package/dist/inspector.test.js
CHANGED
|
@@ -7,9 +7,9 @@ const MULTISIG_SLOT_NAMES = {
|
|
|
7
7
|
EXECUTED_TRANSACTIONS: 'openzeppelin::multisig::executed_transactions',
|
|
8
8
|
PROCEDURE_THRESHOLDS: 'openzeppelin::multisig::procedure_thresholds',
|
|
9
9
|
};
|
|
10
|
-
const
|
|
11
|
-
SELECTOR: 'openzeppelin::
|
|
12
|
-
PUBLIC_KEY: 'openzeppelin::
|
|
10
|
+
const GUARDIAN_SLOT_NAMES = {
|
|
11
|
+
SELECTOR: 'openzeppelin::guardian::selector',
|
|
12
|
+
PUBLIC_KEY: 'openzeppelin::guardian::public_key',
|
|
13
13
|
};
|
|
14
14
|
// Mock the Miden SDK
|
|
15
15
|
vi.mock('@miden-sdk/miden-sdk', () => {
|
|
@@ -40,21 +40,21 @@ vi.mock('@miden-sdk/miden-sdk', () => {
|
|
|
40
40
|
Account: {
|
|
41
41
|
deserialize: vi.fn((bytes) => {
|
|
42
42
|
// Return different mocked accounts based on test scenario
|
|
43
|
-
// Default: 2-of-3 multisig with
|
|
43
|
+
// Default: 2-of-3 multisig with GUARDIAN enabled
|
|
44
44
|
const slot0 = createMockWord([2n, 3n, 0n, 0n]); // threshold=2, numSigners=3
|
|
45
|
-
const slot4 = createMockWord([1n, 0n, 0n, 0n]); //
|
|
45
|
+
const slot4 = createMockWord([1n, 0n, 0n, 0n]); // GUARDIAN enabled
|
|
46
46
|
const signerMap = new Map();
|
|
47
47
|
signerMap.set('0', createMockWord([BigInt('0x1111111111111111'), BigInt('0x2222222222222222'), BigInt('0x3333333333333333'), BigInt('0x4444444444444444')]));
|
|
48
48
|
signerMap.set('1', createMockWord([BigInt('0x5555555555555555'), BigInt('0x6666666666666666'), BigInt('0x7777777777777777'), BigInt('0x8888888888888888')]));
|
|
49
49
|
signerMap.set('2', createMockWord([BigInt('0xaaaaaaaaaaaaaaaa'), BigInt('0xbbbbbbbbbbbbbbbb'), BigInt('0xcccccccccccccccc'), BigInt('0xdddddddddddddddd')]));
|
|
50
|
-
const
|
|
51
|
-
|
|
50
|
+
const guardianMap = new Map();
|
|
51
|
+
guardianMap.set('0', createMockWord([BigInt('0xeeeeeeeeeeeeeeee'), BigInt('0xffffffffffffffff'), BigInt('0x0000000000000001'), BigInt('0x0000000000000002')]));
|
|
52
52
|
const slots = new Map();
|
|
53
53
|
slots.set('openzeppelin::multisig::threshold_config', slot0);
|
|
54
|
-
slots.set('openzeppelin::
|
|
54
|
+
slots.set('openzeppelin::guardian::selector', slot4);
|
|
55
55
|
const maps = new Map();
|
|
56
56
|
maps.set('openzeppelin::multisig::signer_public_keys', signerMap);
|
|
57
|
-
maps.set('openzeppelin::
|
|
57
|
+
maps.set('openzeppelin::guardian::public_key', guardianMap);
|
|
58
58
|
return {
|
|
59
59
|
storage: () => createMockStorage(slots, maps),
|
|
60
60
|
vault: () => createMockVault([
|
|
@@ -81,11 +81,11 @@ describe('AccountInspector', () => {
|
|
|
81
81
|
expect(config.threshold).toBe(2);
|
|
82
82
|
expect(config.numSigners).toBe(3);
|
|
83
83
|
});
|
|
84
|
-
it('extracts
|
|
84
|
+
it('extracts GUARDIAN status', () => {
|
|
85
85
|
const base64 = btoa(String.fromCharCode(...new Uint8Array([1, 2, 3])));
|
|
86
86
|
const config = AccountInspector.fromBase64(base64);
|
|
87
|
-
expect(config.
|
|
88
|
-
expect(config.
|
|
87
|
+
expect(config.guardianEnabled).toBe(true);
|
|
88
|
+
expect(config.guardianCommitment).toMatch(/^0x[a-f0-9]+$/);
|
|
89
89
|
});
|
|
90
90
|
it('extracts signer commitments', () => {
|
|
91
91
|
const base64 = btoa(String.fromCharCode(...new Uint8Array([1, 2, 3])));
|
|
@@ -122,7 +122,7 @@ describe('AccountInspector edge cases', () => {
|
|
|
122
122
|
beforeEach(() => {
|
|
123
123
|
vi.clearAllMocks();
|
|
124
124
|
});
|
|
125
|
-
it('handles account with
|
|
125
|
+
it('handles account with GUARDIAN disabled', async () => {
|
|
126
126
|
const { Account } = await import('@miden-sdk/miden-sdk');
|
|
127
127
|
// Override mock for this test
|
|
128
128
|
vi.mocked(Account.deserialize).mockReturnValueOnce({
|
|
@@ -130,8 +130,8 @@ describe('AccountInspector edge cases', () => {
|
|
|
130
130
|
getItem: (slotName) => {
|
|
131
131
|
if (slotName === 'openzeppelin::multisig::threshold_config')
|
|
132
132
|
return { toU64s: () => [1n, 1n, 0n, 0n] };
|
|
133
|
-
if (slotName === 'openzeppelin::
|
|
134
|
-
return { toU64s: () => [0n, 0n, 0n, 0n] }; //
|
|
133
|
+
if (slotName === 'openzeppelin::guardian::selector')
|
|
134
|
+
return { toU64s: () => [0n, 0n, 0n, 0n] }; // GUARDIAN disabled
|
|
135
135
|
return { toU64s: () => [0n, 0n, 0n, 0n] };
|
|
136
136
|
},
|
|
137
137
|
getMapItem: (slotName, key) => {
|
|
@@ -150,8 +150,8 @@ describe('AccountInspector edge cases', () => {
|
|
|
150
150
|
});
|
|
151
151
|
const account = Account.deserialize(new Uint8Array([1, 2, 3]));
|
|
152
152
|
const config = AccountInspector.fromAccount(account);
|
|
153
|
-
expect(config.
|
|
154
|
-
expect(config.
|
|
153
|
+
expect(config.guardianEnabled).toBe(false);
|
|
154
|
+
expect(config.guardianCommitment).toBeNull();
|
|
155
155
|
});
|
|
156
156
|
it('handles account with empty vault', async () => {
|
|
157
157
|
const { Account } = await import('@miden-sdk/miden-sdk');
|
|
@@ -177,7 +177,7 @@ describe('AccountInspector edge cases', () => {
|
|
|
177
177
|
getItem: (slotName) => {
|
|
178
178
|
if (slotName === 'openzeppelin::multisig::threshold_config')
|
|
179
179
|
return { toU64s: () => [2n, 5n, 0n, 0n] }; // threshold=2, numSigners=5
|
|
180
|
-
if (slotName === 'openzeppelin::
|
|
180
|
+
if (slotName === 'openzeppelin::guardian::selector')
|
|
181
181
|
return { toU64s: () => [0n, 0n, 0n, 0n] };
|
|
182
182
|
return { toU64s: () => [0n, 0n, 0n, 0n] };
|
|
183
183
|
},
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"inspector.test.js","sourceRoot":"","sources":["../src/inspector.test.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"inspector.test.js","sourceRoot":"","sources":["../src/inspector.test.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { type
|
|
1
|
+
import { type GuardianHttpClient } from '@openzeppelin/guardian-client';
|
|
2
2
|
import type { WebClient, TransactionRequest } from '@miden-sdk/miden-sdk';
|
|
3
3
|
import type { ProposalType, TransactionProposal } from '../../types.js';
|
|
4
4
|
interface ExecuteProposalWorkflowParams {
|
|
@@ -6,11 +6,11 @@ interface ExecuteProposalWorkflowParams {
|
|
|
6
6
|
accountId: string;
|
|
7
7
|
threshold: number;
|
|
8
8
|
signerCommitments: string[];
|
|
9
|
-
|
|
10
|
-
|
|
9
|
+
guardianCommitment: string;
|
|
10
|
+
guardianPublicKey?: string;
|
|
11
11
|
signatureScheme: 'falcon' | 'ecdsa';
|
|
12
12
|
getEffectiveThreshold: (proposalType: ProposalType) => number;
|
|
13
|
-
|
|
13
|
+
guardian: GuardianHttpClient;
|
|
14
14
|
webClient: WebClient;
|
|
15
15
|
}
|
|
16
16
|
export declare function executeProposalWorkflow(params: ExecuteProposalWorkflowParams): Promise<void>;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"execution.d.ts","sourceRoot":"","sources":["../../../src/multisig/proposal/execution.ts"],"names":[],"mappings":"AAAA,OAAO,EAAoB,KAAK,
|
|
1
|
+
{"version":3,"file":"execution.d.ts","sourceRoot":"","sources":["../../../src/multisig/proposal/execution.ts"],"names":[],"mappings":"AAAA,OAAO,EAAoB,KAAK,kBAAkB,EAAE,MAAM,+BAA+B,CAAC;AAC1F,OAAO,KAAK,EAAE,SAAS,EAAE,kBAAkB,EAAE,MAAM,sBAAsB,CAAC;AAS1E,OAAO,KAAK,EAAE,YAAY,EAAE,mBAAmB,EAAE,MAAM,gBAAgB,CAAC;AA2BxE,UAAU,6BAA6B;IACrC,QAAQ,EAAE,mBAAmB,CAAC;IAC9B,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,EAAE,MAAM,CAAC;IAClB,iBAAiB,EAAE,MAAM,EAAE,CAAC;IAC5B,kBAAkB,EAAE,MAAM,CAAC;IAC3B,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAC3B,eAAe,EAAE,QAAQ,GAAG,OAAO,CAAC;IACpC,qBAAqB,EAAE,CAAC,YAAY,EAAE,YAAY,KAAK,MAAM,CAAC;IAC9D,QAAQ,EAAE,kBAAkB,CAAC;IAC7B,SAAS,EAAE,SAAS,CAAC;CACtB;AAED,wBAAsB,uBAAuB,CAC3C,MAAM,EAAE,6BAA6B,GACpC,OAAO,CAAC,IAAI,CAAC,CAwCf;AAGD,wBAAsB,gCAAgC,CACpD,MAAM,EAAE,6BAA6B,GACpC,OAAO,CAAC,kBAAkB,CAAC,CAuC7B"}
|
|
@@ -1,28 +1,28 @@
|
|
|
1
1
|
import { AccountId, AdviceMap, FeltArray, Signature, TransactionSummary, Word, } from '@miden-sdk/miden-sdk';
|
|
2
|
-
import { buildConsumeNotesTransactionRequest, buildP2idTransactionRequest,
|
|
2
|
+
import { buildConsumeNotesTransactionRequest, buildP2idTransactionRequest, buildUpdateGuardianTransactionRequest, buildUpdateProcedureThresholdTransactionRequest, buildUpdateSignersTransactionRequest, } from '../../transaction.js';
|
|
3
3
|
import { base64ToUint8Array, normalizeHexWord } from '../../utils/encoding.js';
|
|
4
4
|
import { buildSignatureAdviceEntry, signatureHexToBytes, tryComputeEcdsaCommitmentHex, } from '../../utils/signature.js';
|
|
5
5
|
import { computeCommitmentFromTxSummary } from '../helpers.js';
|
|
6
6
|
export async function executeProposalWorkflow(params) {
|
|
7
7
|
ensureProposalReady(params.proposal, params.threshold, params.getEffectiveThreshold);
|
|
8
|
-
const
|
|
9
|
-
const executionSource = await resolveExecutionSource(params.
|
|
8
|
+
const isSwitchGuardian = params.proposal.metadata.proposalType === 'switch_guardian';
|
|
9
|
+
const executionSource = await resolveExecutionSource(params.guardian, params.accountId, params.proposal, isSwitchGuardian);
|
|
10
10
|
const executionData = prepareExecutionData(executionSource.txSummaryBase64);
|
|
11
11
|
const adviceMap = buildCosignerAdviceMap(params.proposal, params.signerCommitments, executionData.txCommitmentHex);
|
|
12
|
-
if (!
|
|
13
|
-
await
|
|
12
|
+
if (!isSwitchGuardian && executionSource.delta) {
|
|
13
|
+
await appendGuardianAckAdvice(params.guardian, executionSource.delta, params.guardianCommitment, params.guardianPublicKey, params.signatureScheme, executionData.txCommitmentHex, adviceMap);
|
|
14
14
|
}
|
|
15
15
|
const finalRequest = await buildFinalRequest(params, executionData.saltHex, adviceMap);
|
|
16
16
|
await submitTransaction(params.webClient, params.accountId, finalRequest);
|
|
17
17
|
}
|
|
18
18
|
export async function createTransactionProposalRequest(params) {
|
|
19
19
|
ensureProposalReady(params.proposal, params.threshold, params.getEffectiveThreshold);
|
|
20
|
-
const
|
|
21
|
-
const executionSource = await resolveExecutionSource(params.
|
|
20
|
+
const isSwitchGuardian = params.proposal.metadata.proposalType === 'switch_guardian';
|
|
21
|
+
const executionSource = await resolveExecutionSource(params.guardian, params.accountId, params.proposal, isSwitchGuardian);
|
|
22
22
|
const executionData = prepareExecutionData(executionSource.txSummaryBase64);
|
|
23
23
|
const adviceMap = buildCosignerAdviceMap(params.proposal, params.signerCommitments, executionData.txCommitmentHex);
|
|
24
|
-
if (!
|
|
25
|
-
await
|
|
24
|
+
if (!isSwitchGuardian && executionSource.delta) {
|
|
25
|
+
await appendGuardianAckAdvice(params.guardian, executionSource.delta, params.guardianCommitment, params.guardianPublicKey, params.signatureScheme, executionData.txCommitmentHex, adviceMap);
|
|
26
26
|
}
|
|
27
27
|
return await buildFinalRequest(params, executionData.saltHex, adviceMap);
|
|
28
28
|
}
|
|
@@ -35,11 +35,11 @@ function ensureProposalReady(proposal, defaultThreshold, getEffectiveThreshold)
|
|
|
35
35
|
throw new Error('Proposal is not ready for execution. Still pending signatures.');
|
|
36
36
|
}
|
|
37
37
|
}
|
|
38
|
-
async function resolveExecutionSource(
|
|
39
|
-
if (
|
|
38
|
+
async function resolveExecutionSource(guardian, accountId, proposal, isSwitchGuardian) {
|
|
39
|
+
if (isSwitchGuardian) {
|
|
40
40
|
return { txSummaryBase64: proposal.txSummary };
|
|
41
41
|
}
|
|
42
|
-
const deltas = await
|
|
42
|
+
const deltas = await guardian.getDeltaProposals(accountId);
|
|
43
43
|
const delta = deltas.find((d) => computeCommitmentFromTxSummary(d.deltaPayload.txSummary.data) === proposal.commitment);
|
|
44
44
|
if (!delta) {
|
|
45
45
|
throw new Error(`Proposal not found on server: ${proposal.commitment}`);
|
|
@@ -74,37 +74,40 @@ function buildCosignerAdviceMap(proposal, signerCommitments, txCommitmentHex) {
|
|
|
74
74
|
const sigBytes = signatureHexToBytes(cosignerSig.signature.signature, cosignerSig.signature.scheme);
|
|
75
75
|
const signature = Signature.deserialize(sigBytes);
|
|
76
76
|
const txCommitment = Word.fromHex(normalizeHexWord(txCommitmentHex));
|
|
77
|
-
const
|
|
78
|
-
|
|
77
|
+
const ecdsaPublicKey = cosignerSig.signature.scheme === 'ecdsa'
|
|
78
|
+
? cosignerSig.signature.publicKey
|
|
79
|
+
: undefined;
|
|
80
|
+
const isEcdsa = cosignerSig.signature.scheme === 'ecdsa' && Boolean(ecdsaPublicKey);
|
|
81
|
+
const { key, values } = buildSignatureAdviceEntry(signerCommitment, txCommitment, signature, ecdsaPublicKey, isEcdsa ? cosignerSig.signature.signature : undefined);
|
|
79
82
|
adviceMap.insert(key, new FeltArray(values));
|
|
80
83
|
}
|
|
81
84
|
return adviceMap;
|
|
82
85
|
}
|
|
83
|
-
async function
|
|
86
|
+
async function appendGuardianAckAdvice(guardian, delta, guardianCommitmentHex, guardianPublicKey, defaultAckScheme, txCommitmentHex, adviceMap) {
|
|
84
87
|
const executionDelta = {
|
|
85
88
|
...delta,
|
|
86
89
|
deltaPayload: delta.deltaPayload.txSummary,
|
|
87
90
|
};
|
|
88
|
-
const pushResult = await
|
|
91
|
+
const pushResult = await guardian.pushDelta(executionDelta);
|
|
89
92
|
const ackSigHex = pushResult.ackSig;
|
|
90
93
|
if (!ackSigHex) {
|
|
91
|
-
throw new Error('
|
|
94
|
+
throw new Error('GUARDIAN did not return acknowledgment signature');
|
|
92
95
|
}
|
|
93
|
-
const
|
|
94
|
-
const ackPubkey = pushResult.ackPubkey ||
|
|
95
|
-
const
|
|
96
|
-
if (
|
|
96
|
+
const guardianAckScheme = pushResult.ackScheme || defaultAckScheme;
|
|
97
|
+
const ackPubkey = pushResult.ackPubkey || guardianPublicKey;
|
|
98
|
+
const normalizedGuardianCommitment = normalizeHexWord(guardianCommitmentHex);
|
|
99
|
+
if (guardianAckScheme === 'ecdsa' && ackPubkey) {
|
|
97
100
|
const derived = tryComputeEcdsaCommitmentHex(ackPubkey);
|
|
98
|
-
if (derived && derived !==
|
|
99
|
-
throw new Error('
|
|
101
|
+
if (derived && derived !== normalizedGuardianCommitment) {
|
|
102
|
+
throw new Error('GUARDIAN public key commitment mismatch');
|
|
100
103
|
}
|
|
101
104
|
}
|
|
102
|
-
const
|
|
103
|
-
const ackSigBytes = signatureHexToBytes(ackSigHex,
|
|
105
|
+
const guardianCommitment = Word.fromHex(normalizedGuardianCommitment);
|
|
106
|
+
const ackSigBytes = signatureHexToBytes(ackSigHex, guardianAckScheme);
|
|
104
107
|
const ackSignature = Signature.deserialize(ackSigBytes);
|
|
105
108
|
const txCommitment = Word.fromHex(normalizeHexWord(txCommitmentHex));
|
|
106
|
-
const isAckEcdsa =
|
|
107
|
-
const { key, values } = buildSignatureAdviceEntry(
|
|
109
|
+
const isAckEcdsa = guardianAckScheme === 'ecdsa' && ackPubkey;
|
|
110
|
+
const { key, values } = buildSignatureAdviceEntry(guardianCommitment, txCommitment, ackSignature, isAckEcdsa ? ackPubkey : undefined, isAckEcdsa ? ackSigHex : undefined);
|
|
108
111
|
adviceMap.insert(key, new FeltArray(values));
|
|
109
112
|
}
|
|
110
113
|
async function buildFinalRequest(params, saltHex, adviceMap) {
|
|
@@ -118,11 +121,19 @@ async function buildFinalRequest(params, saltHex, adviceMap) {
|
|
|
118
121
|
const { request } = await buildConsumeNotesTransactionRequest(params.webClient, metadata.noteIds, { salt: normalizedSalt, signatureAdviceMap: adviceMap });
|
|
119
122
|
return request;
|
|
120
123
|
}
|
|
121
|
-
case '
|
|
122
|
-
if (!metadata.
|
|
123
|
-
throw new Error('Proposal missing
|
|
124
|
+
case 'switch_guardian': {
|
|
125
|
+
if (!metadata.newGuardianPubkey) {
|
|
126
|
+
throw new Error('Proposal missing newGuardianPubkey. Was it created with createSwitchGuardianProposal?');
|
|
124
127
|
}
|
|
125
|
-
const { request } = await
|
|
128
|
+
const { request } = await buildUpdateGuardianTransactionRequest(params.webClient, metadata.newGuardianPubkey, {
|
|
129
|
+
salt: normalizedSalt,
|
|
130
|
+
signatureAdviceMap: adviceMap,
|
|
131
|
+
signatureScheme: params.signatureScheme,
|
|
132
|
+
});
|
|
133
|
+
return request;
|
|
134
|
+
}
|
|
135
|
+
case 'update_procedure_threshold': {
|
|
136
|
+
const { request } = await buildUpdateProcedureThresholdTransactionRequest(params.webClient, metadata.targetProcedure, metadata.targetThreshold, {
|
|
126
137
|
salt: normalizedSalt,
|
|
127
138
|
signatureAdviceMap: adviceMap,
|
|
128
139
|
signatureScheme: params.signatureScheme,
|