@openzeppelin/miden-multisig-client 0.17.0 → 0.18.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.
- package/README.md +159 -46
- package/dist/account/builder.d.ts +4 -4
- package/dist/account/builder.d.ts.map +1 -1
- package/dist/account/builder.js +17 -7
- package/dist/account/builder.js.map +1 -1
- package/dist/account/layout.d.ts +5 -5
- package/dist/account/layout.d.ts.map +1 -1
- package/dist/account/layout.js +5 -5
- package/dist/account/layout.js.map +1 -1
- package/dist/client.d.ts +18 -1
- package/dist/client.d.ts.map +1 -1
- package/dist/client.js +79 -6
- package/dist/client.js.map +1 -1
- package/dist/index.d.ts +6 -6
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +5 -5
- package/dist/index.js.map +1 -1
- package/dist/multisig/authArgErrors.d.ts +14 -31
- package/dist/multisig/authArgErrors.d.ts.map +1 -1
- package/dist/multisig/authArgErrors.js +22 -46
- package/dist/multisig/authArgErrors.js.map +1 -1
- package/dist/multisig/consumeNotesErrors.d.ts +13 -1
- package/dist/multisig/consumeNotesErrors.d.ts.map +1 -1
- package/dist/multisig/consumeNotesErrors.js +17 -0
- package/dist/multisig/consumeNotesErrors.js.map +1 -1
- package/dist/multisig/signing.d.ts +1 -1
- package/dist/multisig/signing.d.ts.map +1 -1
- package/dist/multisig/signing.js +8 -3
- package/dist/multisig/signing.js.map +1 -1
- package/dist/multisig.d.ts +118 -11
- package/dist/multisig.d.ts.map +1 -1
- package/dist/multisig.js +421 -141
- package/dist/multisig.js.map +1 -1
- package/dist/procedures.d.ts +7 -7
- package/dist/procedures.js +7 -7
- package/dist/proposal/factory.d.ts.map +1 -1
- package/dist/proposal/factory.js +7 -0
- package/dist/proposal/factory.js.map +1 -1
- package/dist/raw-client.d.ts +1 -0
- package/dist/raw-client.d.ts.map +1 -1
- package/dist/raw-client.js +10 -2
- package/dist/raw-client.js.map +1 -1
- package/dist/recovery/publicNoteBackfill.js +1 -1
- package/dist/recovery/publicNoteBackfill.js.map +1 -1
- package/dist/retry/classify.d.ts +3 -0
- package/dist/retry/classify.d.ts.map +1 -1
- package/dist/retry/classify.js +2 -2
- package/dist/retry/classify.js.map +1 -1
- package/dist/signer.d.ts +1 -0
- package/dist/signer.d.ts.map +1 -1
- package/dist/signer.js +1 -0
- package/dist/signer.js.map +1 -1
- package/dist/signers/index.d.ts +1 -0
- package/dist/signers/index.d.ts.map +1 -1
- package/dist/signers/index.js +1 -0
- package/dist/signers/index.js.map +1 -1
- package/dist/signers/ledger.d.ts +25 -0
- package/dist/signers/ledger.d.ts.map +1 -0
- package/dist/signers/ledger.js +96 -0
- package/dist/signers/ledger.js.map +1 -0
- package/dist/state/adopt.d.ts +45 -0
- package/dist/state/adopt.d.ts.map +1 -0
- package/dist/state/adopt.js +101 -0
- package/dist/state/adopt.js.map +1 -0
- package/dist/transaction/authArgs.d.ts +57 -0
- package/dist/transaction/authArgs.d.ts.map +1 -0
- package/dist/transaction/authArgs.js +108 -0
- package/dist/transaction/authArgs.js.map +1 -0
- package/dist/transaction/consumeNotes.d.ts +9 -5
- package/dist/transaction/consumeNotes.d.ts.map +1 -1
- package/dist/transaction/consumeNotes.js +8 -23
- package/dist/transaction/consumeNotes.js.map +1 -1
- package/dist/transaction/noteAuthentication.d.ts +39 -0
- package/dist/transaction/noteAuthentication.d.ts.map +1 -0
- package/dist/transaction/noteAuthentication.js +94 -0
- package/dist/transaction/noteAuthentication.js.map +1 -0
- package/dist/transaction/options.d.ts +25 -0
- package/dist/transaction/options.d.ts.map +1 -1
- package/dist/transaction/p2id.d.ts +3 -2
- package/dist/transaction/p2id.d.ts.map +1 -1
- package/dist/transaction/p2id.js +36 -27
- package/dist/transaction/p2id.js.map +1 -1
- package/dist/transaction/summary.d.ts +41 -15
- package/dist/transaction/summary.d.ts.map +1 -1
- package/dist/transaction/summary.js +71 -19
- package/dist/transaction/summary.js.map +1 -1
- package/dist/transaction/updateGuardian.d.ts +3 -3
- package/dist/transaction/updateGuardian.d.ts.map +1 -1
- package/dist/transaction/updateGuardian.js +5 -16
- package/dist/transaction/updateGuardian.js.map +1 -1
- package/dist/transaction/updateProcedureThreshold.d.ts +3 -3
- package/dist/transaction/updateProcedureThreshold.d.ts.map +1 -1
- package/dist/transaction/updateProcedureThreshold.js +6 -16
- package/dist/transaction/updateProcedureThreshold.js.map +1 -1
- package/dist/transaction/updateSigners.d.ts +3 -3
- package/dist/transaction/updateSigners.d.ts.map +1 -1
- package/dist/transaction/updateSigners.js +9 -16
- package/dist/transaction/updateSigners.js.map +1 -1
- package/dist/transaction.d.ts +3 -2
- package/dist/transaction.d.ts.map +1 -1
- package/dist/transaction.js +3 -2
- package/dist/transaction.js.map +1 -1
- package/dist/types/proposal.d.ts +31 -0
- package/dist/types/proposal.d.ts.map +1 -1
- package/dist/types/proposal.js +8 -0
- package/dist/types/proposal.js.map +1 -1
- package/dist/utils/eip712.d.ts +80 -0
- package/dist/utils/eip712.d.ts.map +1 -0
- package/dist/utils/eip712.js +49 -0
- package/dist/utils/eip712.js.map +1 -0
- package/dist/utils/signature.d.ts +4 -0
- package/dist/utils/signature.d.ts.map +1 -1
- package/dist/utils/signature.js +49 -1
- package/dist/utils/signature.js.map +1 -1
- package/package.json +11 -6
- package/src/account/builder.ts +18 -7
- package/src/account/layout.ts +5 -5
- package/src/client.ts +94 -6
- package/src/index.ts +21 -3
- package/src/multisig/authArgErrors.ts +23 -56
- package/src/multisig/consumeNotesErrors.ts +20 -1
- package/src/multisig/signing.ts +8 -2
- package/src/multisig.ts +530 -183
- package/src/procedures.ts +7 -7
- package/src/proposal/factory.ts +7 -0
- package/src/raw-client.ts +11 -7
- package/src/recovery/publicNoteBackfill.ts +1 -1
- package/src/retry/classify.ts +3 -3
- package/src/signer.ts +1 -0
- package/src/signers/index.ts +1 -0
- package/src/signers/ledger.ts +122 -0
- package/src/state/adopt.ts +132 -0
- package/src/transaction/authArgs.ts +142 -0
- package/src/transaction/consumeNotes.ts +23 -30
- package/src/transaction/noteAuthentication.ts +136 -0
- package/src/transaction/options.ts +27 -0
- package/src/transaction/p2id.ts +45 -34
- package/src/transaction/summary.ts +86 -22
- package/src/transaction/updateGuardian.ts +8 -22
- package/src/transaction/updateProcedureThreshold.ts +8 -20
- package/src/transaction/updateSigners.ts +11 -22
- package/src/transaction.ts +12 -1
- package/src/types/proposal.ts +30 -0
- package/src/utils/eip712.ts +57 -0
- package/src/utils/signature.ts +57 -0
- package/src/prover/test-node.d.ts +0 -6
|
@@ -1,10 +1,10 @@
|
|
|
1
1
|
import { type MidenClient, TransactionRequest, type WasmWebClient, Word } from '@miden-sdk/miden-sdk';
|
|
2
|
-
import type {
|
|
3
|
-
export declare function buildUpdateGuardianTransactionRequest(client: MidenClient, newGuardianPubkey: string, options:
|
|
2
|
+
import type { MidenClientMultisigRequestOptions, MultisigRequestOptions } from './options.js';
|
|
3
|
+
export declare function buildUpdateGuardianTransactionRequest(client: MidenClient, newGuardianPubkey: string, options: MidenClientMultisigRequestOptions): Promise<{
|
|
4
4
|
request: TransactionRequest;
|
|
5
5
|
salt: Word;
|
|
6
6
|
}>;
|
|
7
|
-
export declare function buildUpdateGuardianTransactionRequest(client: WasmWebClient, newGuardianPubkey: string, options
|
|
7
|
+
export declare function buildUpdateGuardianTransactionRequest(client: WasmWebClient, newGuardianPubkey: string, options: MultisigRequestOptions): Promise<{
|
|
8
8
|
request: TransactionRequest;
|
|
9
9
|
salt: Word;
|
|
10
10
|
}>;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"updateGuardian.d.ts","sourceRoot":"","sources":["../../src/transaction/updateGuardian.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,KAAK,WAAW,EAChB,kBAAkB,
|
|
1
|
+
{"version":3,"file":"updateGuardian.d.ts","sourceRoot":"","sources":["../../src/transaction/updateGuardian.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,KAAK,WAAW,EAChB,kBAAkB,EAElB,KAAK,aAAa,EAClB,IAAI,EACL,MAAM,sBAAsB,CAAC;AAK9B,OAAO,KAAK,EAAE,iCAAiC,EAAE,sBAAsB,EAAE,MAAM,cAAc,CAAC;AA8B9F,wBAAgB,qCAAqC,CACnD,MAAM,EAAE,WAAW,EACnB,iBAAiB,EAAE,MAAM,EACzB,OAAO,EAAE,iCAAiC,GACzC,OAAO,CAAC;IAAE,OAAO,EAAE,kBAAkB,CAAC;IAAC,IAAI,EAAE,IAAI,CAAA;CAAE,CAAC,CAAC;AACxD,wBAAgB,qCAAqC,CACnD,MAAM,EAAE,aAAa,EACrB,iBAAiB,EAAE,MAAM,EACzB,OAAO,EAAE,sBAAsB,GAC9B,OAAO,CAAC;IAAE,OAAO,EAAE,kBAAkB,CAAC;IAAC,IAAI,EAAE,IAAI,CAAA;CAAE,CAAC,CAAC"}
|
|
@@ -1,8 +1,7 @@
|
|
|
1
|
-
import { TransactionRequestBuilder, Word as WordType, } from '@miden-sdk/miden-sdk';
|
|
2
1
|
import { compileTxScript } from '../raw-client.js';
|
|
3
2
|
import { normalizeHexWord } from '../utils/encoding.js';
|
|
4
|
-
import { randomWord } from '../utils/random.js';
|
|
5
3
|
import { authSchemeId } from '../utils/signature.js';
|
|
4
|
+
import { buildMultisigRequest, multisigRequestBuilder } from './authArgs.js';
|
|
6
5
|
async function buildUpdateGuardianScript(client, newGuardianPubkey, signatureScheme, midenRpcEndpoint) {
|
|
7
6
|
// A word literal preserves the key's element order on the operand stack.
|
|
8
7
|
const keyLiteral = normalizeHexWord(newGuardianPubkey);
|
|
@@ -22,24 +21,14 @@ end
|
|
|
22
21
|
`;
|
|
23
22
|
return compileTxScript(client, scriptSource, [], midenRpcEndpoint);
|
|
24
23
|
}
|
|
25
|
-
export async function buildUpdateGuardianTransactionRequest(client, newGuardianPubkey, options
|
|
24
|
+
export async function buildUpdateGuardianTransactionRequest(client, newGuardianPubkey, options) {
|
|
26
25
|
const signatureScheme = options.signatureScheme ?? 'falcon';
|
|
27
26
|
const script = await buildUpdateGuardianScript(client, newGuardianPubkey, signatureScheme, options.midenRpcEndpoint);
|
|
28
|
-
const
|
|
29
|
-
|
|
30
|
-
let txBuilder = new TransactionRequestBuilder();
|
|
31
|
-
txBuilder = txBuilder.withCustomScript(script);
|
|
32
|
-
txBuilder = txBuilder.withFeeConversionSalt(authSaltForBuilder);
|
|
33
|
-
// Borrows rather than consumes: the glue passes `__wbg_ptr` without taking it,
|
|
34
|
-
// so the handle stays ours to release once the builder has read it.
|
|
35
|
-
authSaltForBuilder.free?.();
|
|
27
|
+
const { builder, saltHex } = await multisigRequestBuilder(client, options);
|
|
28
|
+
let txBuilder = builder.withCustomScript(script);
|
|
36
29
|
if (options.signatureAdviceMap) {
|
|
37
30
|
txBuilder = txBuilder.extendAdviceMap(options.signatureAdviceMap);
|
|
38
31
|
}
|
|
39
|
-
|
|
40
|
-
return {
|
|
41
|
-
request: txBuilder.build(),
|
|
42
|
-
salt: authSaltForReturn,
|
|
43
|
-
};
|
|
32
|
+
return buildMultisigRequest(txBuilder, saltHex, options.accountId);
|
|
44
33
|
}
|
|
45
34
|
//# sourceMappingURL=updateGuardian.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"updateGuardian.js","sourceRoot":"","sources":["../../src/transaction/updateGuardian.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"updateGuardian.js","sourceRoot":"","sources":["../../src/transaction/updateGuardian.ts"],"names":[],"mappings":"AAOA,OAAO,EAAE,eAAe,EAAE,MAAM,kBAAkB,CAAC;AACnD,OAAO,EAAE,gBAAgB,EAAE,MAAM,sBAAsB,CAAC;AACxD,OAAO,EAAE,YAAY,EAAE,MAAM,uBAAuB,CAAC;AACrD,OAAO,EAAE,oBAAoB,EAAE,sBAAsB,EAAE,MAAM,eAAe,CAAC;AAI7E,KAAK,UAAU,yBAAyB,CACtC,MAAmC,EACnC,iBAAyB,EACzB,eAAgC,EAChC,gBAAyB;IAEzB,yEAAyE;IACzE,MAAM,UAAU,GAAG,gBAAgB,CAAC,iBAAiB,CAAC,CAAC;IACvD,MAAM,QAAQ,GAAG,YAAY,CAAC,eAAe,CAAC,CAAC;IAE/C,qFAAqF;IACrF,MAAM,YAAY,GAAG;;;;;WAKZ,UAAU;WACV,QAAQ;;;;;GAKhB,CAAC;IAEF,OAAO,eAAe,CAAC,MAAM,EAAE,YAAY,EAAE,EAAE,EAAE,gBAAgB,CAAC,CAAC;AACrE,CAAC;AAYD,MAAM,CAAC,KAAK,UAAU,qCAAqC,CACzD,MAAmC,EACnC,iBAAyB,EACzB,OAA+B;IAE/B,MAAM,eAAe,GAAG,OAAO,CAAC,eAAe,IAAI,QAAQ,CAAC;IAC5D,MAAM,MAAM,GAAG,MAAM,yBAAyB,CAC5C,MAAM,EACN,iBAAiB,EACjB,eAAe,EACf,OAAO,CAAC,gBAAgB,CACzB,CAAC;IAEF,MAAM,EAAE,OAAO,EAAE,OAAO,EAAE,GAAG,MAAM,sBAAsB,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAC3E,IAAI,SAAS,GAAG,OAAO,CAAC,gBAAgB,CAAC,MAAM,CAAC,CAAC;IAEjD,IAAI,OAAO,CAAC,kBAAkB,EAAE,CAAC;QAC/B,SAAS,GAAG,SAAS,CAAC,eAAe,CAAC,OAAO,CAAC,kBAAkB,CAAC,CAAC;IACpE,CAAC;IAED,OAAO,oBAAoB,CAAC,SAAS,EAAE,OAAO,EAAE,OAAO,CAAC,SAAS,CAAC,CAAC;AACrE,CAAC"}
|
|
@@ -1,12 +1,12 @@
|
|
|
1
1
|
import { type MidenClient, TransactionRequest, type WasmWebClient, Word } from '@miden-sdk/miden-sdk';
|
|
2
2
|
import { type ProcedureName } from '../procedures.js';
|
|
3
|
-
import type {
|
|
4
|
-
export declare function buildUpdateProcedureThresholdTransactionRequest(client: MidenClient, procedure: ProcedureName, threshold: number, options:
|
|
3
|
+
import type { MidenClientMultisigRequestOptions, MultisigRequestOptions } from './options.js';
|
|
4
|
+
export declare function buildUpdateProcedureThresholdTransactionRequest(client: MidenClient, procedure: ProcedureName, threshold: number, options: MidenClientMultisigRequestOptions): Promise<{
|
|
5
5
|
request: TransactionRequest;
|
|
6
6
|
salt: Word;
|
|
7
7
|
configHash: Word;
|
|
8
8
|
}>;
|
|
9
|
-
export declare function buildUpdateProcedureThresholdTransactionRequest(client: WasmWebClient, procedure: ProcedureName, threshold: number, options
|
|
9
|
+
export declare function buildUpdateProcedureThresholdTransactionRequest(client: WasmWebClient, procedure: ProcedureName, threshold: number, options: MultisigRequestOptions): Promise<{
|
|
10
10
|
request: TransactionRequest;
|
|
11
11
|
salt: Word;
|
|
12
12
|
configHash: Word;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"updateProcedureThreshold.d.ts","sourceRoot":"","sources":["../../src/transaction/updateProcedureThreshold.ts"],"names":[],"mappings":"AAAA,OAAO,EAGL,KAAK,WAAW,EAEhB,kBAAkB,
|
|
1
|
+
{"version":3,"file":"updateProcedureThreshold.d.ts","sourceRoot":"","sources":["../../src/transaction/updateProcedureThreshold.ts"],"names":[],"mappings":"AAAA,OAAO,EAGL,KAAK,WAAW,EAEhB,kBAAkB,EAElB,KAAK,aAAa,EAClB,IAAI,EAEL,MAAM,sBAAsB,CAAC;AAC9B,OAAO,EAAoB,KAAK,aAAa,EAAE,MAAM,kBAAkB,CAAC;AAIxE,OAAO,KAAK,EAAE,iCAAiC,EAAE,sBAAsB,EAAE,MAAM,cAAc,CAAC;AAgD9F,wBAAgB,+CAA+C,CAC7D,MAAM,EAAE,WAAW,EACnB,SAAS,EAAE,aAAa,EACxB,SAAS,EAAE,MAAM,EACjB,OAAO,EAAE,iCAAiC,GACzC,OAAO,CAAC;IAAE,OAAO,EAAE,kBAAkB,CAAC;IAAC,IAAI,EAAE,IAAI,CAAC;IAAC,UAAU,EAAE,IAAI,CAAA;CAAE,CAAC,CAAC;AAC1E,wBAAgB,+CAA+C,CAC7D,MAAM,EAAE,aAAa,EACrB,SAAS,EAAE,aAAa,EACxB,SAAS,EAAE,MAAM,EACjB,OAAO,EAAE,sBAAsB,GAC9B,OAAO,CAAC;IAAE,OAAO,EAAE,kBAAkB,CAAC;IAAC,IAAI,EAAE,IAAI,CAAC;IAAC,UAAU,EAAE,IAAI,CAAA;CAAE,CAAC,CAAC"}
|
|
@@ -1,8 +1,8 @@
|
|
|
1
|
-
import { Felt, FeltArray, Poseidon2,
|
|
1
|
+
import { Felt, FeltArray, Poseidon2, Word as WordType, } from '@miden-sdk/miden-sdk';
|
|
2
2
|
import { getProcedureRoot } from '../procedures.js';
|
|
3
3
|
import { compileTxScript } from '../raw-client.js';
|
|
4
4
|
import { normalizeHexWord } from '../utils/encoding.js';
|
|
5
|
-
import {
|
|
5
|
+
import { buildMultisigRequest, multisigRequestBuilder } from './authArgs.js';
|
|
6
6
|
function buildProcedureThresholdFelts(procedure, threshold) {
|
|
7
7
|
const procedureRoot = WordType.fromHex(normalizeHexWord(getProcedureRoot(procedure)));
|
|
8
8
|
return [
|
|
@@ -37,24 +37,14 @@ end
|
|
|
37
37
|
`;
|
|
38
38
|
return compileTxScript(client, scriptSource, [], midenRpcEndpoint);
|
|
39
39
|
}
|
|
40
|
-
export async function buildUpdateProcedureThresholdTransactionRequest(client, procedure, threshold, options
|
|
40
|
+
export async function buildUpdateProcedureThresholdTransactionRequest(client, procedure, threshold, options) {
|
|
41
41
|
const configHash = buildProcedureThresholdConfigHash(procedure, threshold);
|
|
42
42
|
const script = await buildUpdateProcedureThresholdScript(client, procedure, threshold, options.midenRpcEndpoint);
|
|
43
|
-
const
|
|
44
|
-
|
|
45
|
-
let txBuilder = new TransactionRequestBuilder();
|
|
46
|
-
txBuilder = txBuilder.withCustomScript(script);
|
|
47
|
-
txBuilder = txBuilder.withFeeConversionSalt(authSalt);
|
|
48
|
-
// Borrows rather than consumes: the glue passes `__wbg_ptr` without taking it,
|
|
49
|
-
// so the handle stays ours to release once the builder has read it.
|
|
50
|
-
authSalt.free?.();
|
|
43
|
+
const { builder, saltHex } = await multisigRequestBuilder(client, options);
|
|
44
|
+
let txBuilder = builder.withCustomScript(script);
|
|
51
45
|
if (options.signatureAdviceMap) {
|
|
52
46
|
txBuilder = txBuilder.extendAdviceMap(options.signatureAdviceMap);
|
|
53
47
|
}
|
|
54
|
-
return {
|
|
55
|
-
request: txBuilder.build(),
|
|
56
|
-
salt: WordType.fromHex(normalizeHexWord(authSaltHex)),
|
|
57
|
-
configHash,
|
|
58
|
-
};
|
|
48
|
+
return { ...buildMultisigRequest(txBuilder, saltHex, options.accountId), configHash };
|
|
59
49
|
}
|
|
60
50
|
//# sourceMappingURL=updateProcedureThreshold.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"updateProcedureThreshold.js","sourceRoot":"","sources":["../../src/transaction/updateProcedureThreshold.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,IAAI,EACJ,SAAS,EAET,SAAS,
|
|
1
|
+
{"version":3,"file":"updateProcedureThreshold.js","sourceRoot":"","sources":["../../src/transaction/updateProcedureThreshold.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,IAAI,EACJ,SAAS,EAET,SAAS,EAKT,IAAI,IAAI,QAAQ,GACjB,MAAM,sBAAsB,CAAC;AAC9B,OAAO,EAAE,gBAAgB,EAAsB,MAAM,kBAAkB,CAAC;AACxE,OAAO,EAAE,eAAe,EAAE,MAAM,kBAAkB,CAAC;AACnD,OAAO,EAAE,gBAAgB,EAAE,MAAM,sBAAsB,CAAC;AACxD,OAAO,EAAE,oBAAoB,EAAE,sBAAsB,EAAE,MAAM,eAAe,CAAC;AAG7E,SAAS,4BAA4B,CAAC,SAAwB,EAAE,SAAiB;IAC/E,MAAM,aAAa,GAAG,QAAQ,CAAC,OAAO,CAAC,gBAAgB,CAAC,gBAAgB,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC;IACtF,OAAO;QACL,GAAG,aAAa,CAAC,OAAO,EAAE;QAC1B,IAAI,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC;QAC3B,IAAI,IAAI,CAAC,EAAE,CAAC;QACZ,IAAI,IAAI,CAAC,EAAE,CAAC;QACZ,IAAI,IAAI,CAAC,EAAE,CAAC;KACb,CAAC;AACJ,CAAC;AAED;;;;GAIG;AACH,SAAS,iCAAiC,CAAC,SAAwB,EAAE,SAAiB;IACpF,OAAO,SAAS,CAAC,YAAY,CAC3B,IAAI,SAAS,CAAC,4BAA4B,CAAC,SAAS,EAAE,SAAS,CAAC,CAAC,CAClE,CAAC;AACJ,CAAC;AAED,KAAK,UAAU,mCAAmC,CAChD,MAAmC,EACnC,SAAwB,EACxB,SAAiB,EACjB,gBAAyB;IAEzB,MAAM,aAAa,GAAG,gBAAgB,CAAC,gBAAgB,CAAC,SAAS,CAAC,CAAC,CAAC;IAEpE,MAAM,YAAY,GAAG;;;;;WAKZ,aAAa;WACb,SAAS;;;;;GAKjB,CAAC;IAEF,OAAO,eAAe,CAAC,MAAM,EAAE,YAAY,EAAE,EAAE,EAAE,gBAAgB,CAAC,CAAC;AACrE,CAAC;AAcD,MAAM,CAAC,KAAK,UAAU,+CAA+C,CACnE,MAAmC,EACnC,SAAwB,EACxB,SAAiB,EACjB,OAA+B;IAE/B,MAAM,UAAU,GAAG,iCAAiC,CAAC,SAAS,EAAE,SAAS,CAAC,CAAC;IAE3E,MAAM,MAAM,GAAG,MAAM,mCAAmC,CACtD,MAAM,EACN,SAAS,EACT,SAAS,EACT,OAAO,CAAC,gBAAgB,CACzB,CAAC;IACF,MAAM,EAAE,OAAO,EAAE,OAAO,EAAE,GAAG,MAAM,sBAAsB,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAC3E,IAAI,SAAS,GAAG,OAAO,CAAC,gBAAgB,CAAC,MAAM,CAAC,CAAC;IAEjD,IAAI,OAAO,CAAC,kBAAkB,EAAE,CAAC;QAC/B,SAAS,GAAG,SAAS,CAAC,eAAe,CAAC,OAAO,CAAC,kBAAkB,CAAC,CAAC;IACpE,CAAC;IAED,OAAO,EAAE,GAAG,oBAAoB,CAAC,SAAS,EAAE,OAAO,EAAE,OAAO,CAAC,SAAS,CAAC,EAAE,UAAU,EAAE,CAAC;AACxF,CAAC"}
|
|
@@ -1,16 +1,16 @@
|
|
|
1
1
|
import { FeltArray, type MidenClient, TransactionRequest, type WasmWebClient, Word } from '@miden-sdk/miden-sdk';
|
|
2
|
-
import type {
|
|
2
|
+
import type { MidenClientMultisigRequestOptions, MultisigRequestOptions } from './options.js';
|
|
3
3
|
import type { SignatureScheme } from '../types.js';
|
|
4
4
|
export declare function buildMultisigConfigAdvice(threshold: number, signerCommitments: string[], signatureScheme: SignatureScheme): {
|
|
5
5
|
configHash: Word;
|
|
6
6
|
payload: FeltArray;
|
|
7
7
|
};
|
|
8
|
-
export declare function buildUpdateSignersTransactionRequest(client: MidenClient, threshold: number, signerCommitments: string[], options:
|
|
8
|
+
export declare function buildUpdateSignersTransactionRequest(client: MidenClient, threshold: number, signerCommitments: string[], options: MidenClientMultisigRequestOptions): Promise<{
|
|
9
9
|
request: TransactionRequest;
|
|
10
10
|
salt: Word;
|
|
11
11
|
configHash: Word;
|
|
12
12
|
}>;
|
|
13
|
-
export declare function buildUpdateSignersTransactionRequest(client: WasmWebClient, threshold: number, signerCommitments: string[], options
|
|
13
|
+
export declare function buildUpdateSignersTransactionRequest(client: WasmWebClient, threshold: number, signerCommitments: string[], options: MultisigRequestOptions): Promise<{
|
|
14
14
|
request: TransactionRequest;
|
|
15
15
|
salt: Word;
|
|
16
16
|
configHash: Word;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"updateSigners.d.ts","sourceRoot":"","sources":["../../src/transaction/updateSigners.ts"],"names":[],"mappings":"AAAA,OAAO,EAGL,SAAS,EACT,KAAK,WAAW,EAEhB,kBAAkB,
|
|
1
|
+
{"version":3,"file":"updateSigners.d.ts","sourceRoot":"","sources":["../../src/transaction/updateSigners.ts"],"names":[],"mappings":"AAAA,OAAO,EAGL,SAAS,EACT,KAAK,WAAW,EAEhB,kBAAkB,EAElB,KAAK,aAAa,EAClB,IAAI,EAEL,MAAM,sBAAsB,CAAC;AAK9B,OAAO,KAAK,EAAE,iCAAiC,EAAE,sBAAsB,EAAE,MAAM,cAAc,CAAC;AAC9F,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,aAAa,CAAC;AAwBnD,wBAAgB,yBAAyB,CACvC,SAAS,EAAE,MAAM,EACjB,iBAAiB,EAAE,MAAM,EAAE,EAC3B,eAAe,EAAE,eAAe,GAC/B;IAAE,UAAU,EAAE,IAAI,CAAC;IAAC,OAAO,EAAE,SAAS,CAAA;CAAE,CAW1C;AAkBD,wBAAgB,oCAAoC,CAClD,MAAM,EAAE,WAAW,EACnB,SAAS,EAAE,MAAM,EACjB,iBAAiB,EAAE,MAAM,EAAE,EAC3B,OAAO,EAAE,iCAAiC,GACzC,OAAO,CAAC;IAAE,OAAO,EAAE,kBAAkB,CAAC;IAAC,IAAI,EAAE,IAAI,CAAC;IAAC,UAAU,EAAE,IAAI,CAAA;CAAE,CAAC,CAAC;AAC1E,wBAAgB,oCAAoC,CAClD,MAAM,EAAE,aAAa,EACrB,SAAS,EAAE,MAAM,EACjB,iBAAiB,EAAE,MAAM,EAAE,EAC3B,OAAO,EAAE,sBAAsB,GAC9B,OAAO,CAAC;IAAE,OAAO,EAAE,kBAAkB,CAAC;IAAC,IAAI,EAAE,IAAI,CAAC;IAAC,UAAU,EAAE,IAAI,CAAA;CAAE,CAAC,CAAC"}
|
|
@@ -1,8 +1,8 @@
|
|
|
1
|
-
import { AdviceMap, Felt, FeltArray, Poseidon2,
|
|
1
|
+
import { AdviceMap, Felt, FeltArray, Poseidon2, Word as WordType, } from '@miden-sdk/miden-sdk';
|
|
2
2
|
import { compileTxScript } from '../raw-client.js';
|
|
3
3
|
import { normalizeHexWord } from '../utils/encoding.js';
|
|
4
|
-
import { randomWord } from '../utils/random.js';
|
|
5
4
|
import { authSchemeId } from '../utils/signature.js';
|
|
5
|
+
import { buildMultisigRequest, multisigRequestBuilder } from './authArgs.js';
|
|
6
6
|
function buildMultisigConfigFelts(threshold, signerCommitments, signatureScheme) {
|
|
7
7
|
const numApprovers = signerCommitments.length;
|
|
8
8
|
const schemeId = authSchemeId(signatureScheme);
|
|
@@ -39,7 +39,7 @@ end
|
|
|
39
39
|
`;
|
|
40
40
|
return compileTxScript(client, scriptSource, [], midenRpcEndpoint);
|
|
41
41
|
}
|
|
42
|
-
export async function buildUpdateSignersTransactionRequest(client, threshold, signerCommitments, options
|
|
42
|
+
export async function buildUpdateSignersTransactionRequest(client, threshold, signerCommitments, options) {
|
|
43
43
|
const signatureScheme = options.signatureScheme ?? 'falcon';
|
|
44
44
|
const { configHash: configHashForAdvice, payload } = buildMultisigConfigAdvice(threshold, signerCommitments, signatureScheme);
|
|
45
45
|
const { configHash: configHashForScript } = buildMultisigConfigAdvice(threshold, signerCommitments, signatureScheme);
|
|
@@ -47,23 +47,16 @@ export async function buildUpdateSignersTransactionRequest(client, threshold, si
|
|
|
47
47
|
const advice = new AdviceMap();
|
|
48
48
|
advice.insert(configHashForAdvice, payload);
|
|
49
49
|
const script = await buildUpdateSignersScript(client, options.midenRpcEndpoint);
|
|
50
|
-
const
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
txBuilder = txBuilder.extendAdviceMap(advice);
|
|
56
|
-
txBuilder = txBuilder.withFeeConversionSalt(authSaltForBuilder);
|
|
57
|
-
// Borrows rather than consumes: the glue passes `__wbg_ptr` without taking it,
|
|
58
|
-
// so the handle stays ours to release once the builder has read it.
|
|
59
|
-
authSaltForBuilder.free?.();
|
|
50
|
+
const { builder, saltHex } = await multisigRequestBuilder(client, options);
|
|
51
|
+
let txBuilder = builder
|
|
52
|
+
.withCustomScript(script)
|
|
53
|
+
.withScriptArg(configHashForScript)
|
|
54
|
+
.extendAdviceMap(advice);
|
|
60
55
|
if (options.signatureAdviceMap) {
|
|
61
56
|
txBuilder = txBuilder.extendAdviceMap(options.signatureAdviceMap);
|
|
62
57
|
}
|
|
63
|
-
const authSaltForReturn = WordType.fromHex(normalizeHexWord(authSaltHex));
|
|
64
58
|
return {
|
|
65
|
-
|
|
66
|
-
salt: authSaltForReturn,
|
|
59
|
+
...buildMultisigRequest(txBuilder, saltHex, options.accountId),
|
|
67
60
|
configHash: configHashForReturn,
|
|
68
61
|
};
|
|
69
62
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"updateSigners.js","sourceRoot":"","sources":["../../src/transaction/updateSigners.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,SAAS,EACT,IAAI,EACJ,SAAS,EAET,SAAS,
|
|
1
|
+
{"version":3,"file":"updateSigners.js","sourceRoot":"","sources":["../../src/transaction/updateSigners.ts"],"names":[],"mappings":"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"}
|
package/dist/transaction.d.ts
CHANGED
|
@@ -1,5 +1,6 @@
|
|
|
1
|
-
export {
|
|
2
|
-
export {
|
|
1
|
+
export { MAX_APPROVAL_EXPIRATION_DELTA, buildMultisigRequest, multisigRequestBuilder, requestBoundBlockNum, requestSaltHex, } from './transaction/authArgs.js';
|
|
2
|
+
export { buildConsumeNotesTransactionRequest, buildConsumeNotesTransactionRequestFromNotes, } from './transaction/consumeNotes.js';
|
|
3
|
+
export { chainAnchorBlockNum, chainAnchorFromBase64, chainAnchorToBase64, executeForSummary, executeForSummaryAt, summaryApprovalExpirationBlockNum, summarySalt, SummaryAnchorMismatchError, } from './transaction/summary.js';
|
|
3
4
|
export { buildP2idNoteFromMetadata, buildP2idTransactionRequest, parseP2idNoteType, p2idNoteTypeToMetadata, type P2idTransactionOptions, type P2ideHeightOptions, } from './transaction/p2id.js';
|
|
4
5
|
export { buildUpdateGuardianTransactionRequest, } from './transaction/updateGuardian.js';
|
|
5
6
|
export { buildUpdateProcedureThresholdTransactionRequest, } from './transaction/updateProcedureThreshold.js';
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"transaction.d.ts","sourceRoot":"","sources":["../src/transaction.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,mCAAmC,
|
|
1
|
+
{"version":3,"file":"transaction.d.ts","sourceRoot":"","sources":["../src/transaction.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,6BAA6B,EAC7B,oBAAoB,EACpB,sBAAsB,EACtB,oBAAoB,EACpB,cAAc,GACf,MAAM,2BAA2B,CAAC;AACnC,OAAO,EACL,mCAAmC,EACnC,4CAA4C,GAC7C,MAAM,+BAA+B,CAAC;AACvC,OAAO,EACL,mBAAmB,EACnB,qBAAqB,EACrB,mBAAmB,EACnB,iBAAiB,EACjB,mBAAmB,EACnB,iCAAiC,EACjC,WAAW,EACX,0BAA0B,GAC3B,MAAM,0BAA0B,CAAC;AAClC,OAAO,EACL,yBAAyB,EACzB,2BAA2B,EAC3B,iBAAiB,EACjB,sBAAsB,EACtB,KAAK,sBAAsB,EAC3B,KAAK,kBAAkB,GACxB,MAAM,uBAAuB,CAAC;AAC/B,OAAO,EACL,qCAAqC,GACtC,MAAM,iCAAiC,CAAC;AACzC,OAAO,EACL,+CAA+C,GAChD,MAAM,2CAA2C,CAAC;AACnD,OAAO,EACL,oCAAoC,GACrC,MAAM,gCAAgC,CAAC"}
|
package/dist/transaction.js
CHANGED
|
@@ -1,5 +1,6 @@
|
|
|
1
|
-
export {
|
|
2
|
-
export {
|
|
1
|
+
export { MAX_APPROVAL_EXPIRATION_DELTA, buildMultisigRequest, multisigRequestBuilder, requestBoundBlockNum, requestSaltHex, } from './transaction/authArgs.js';
|
|
2
|
+
export { buildConsumeNotesTransactionRequest, buildConsumeNotesTransactionRequestFromNotes, } from './transaction/consumeNotes.js';
|
|
3
|
+
export { chainAnchorBlockNum, chainAnchorFromBase64, chainAnchorToBase64, executeForSummary, executeForSummaryAt, summaryApprovalExpirationBlockNum, summarySalt, SummaryAnchorMismatchError, } from './transaction/summary.js';
|
|
3
4
|
export { buildP2idNoteFromMetadata, buildP2idTransactionRequest, parseP2idNoteType, p2idNoteTypeToMetadata, } from './transaction/p2id.js';
|
|
4
5
|
export { buildUpdateGuardianTransactionRequest, } from './transaction/updateGuardian.js';
|
|
5
6
|
export { buildUpdateProcedureThresholdTransactionRequest, } from './transaction/updateProcedureThreshold.js';
|
package/dist/transaction.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"transaction.js","sourceRoot":"","sources":["../src/transaction.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,mCAAmC,
|
|
1
|
+
{"version":3,"file":"transaction.js","sourceRoot":"","sources":["../src/transaction.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,6BAA6B,EAC7B,oBAAoB,EACpB,sBAAsB,EACtB,oBAAoB,EACpB,cAAc,GACf,MAAM,2BAA2B,CAAC;AACnC,OAAO,EACL,mCAAmC,EACnC,4CAA4C,GAC7C,MAAM,+BAA+B,CAAC;AACvC,OAAO,EACL,mBAAmB,EACnB,qBAAqB,EACrB,mBAAmB,EACnB,iBAAiB,EACjB,mBAAmB,EACnB,iCAAiC,EACjC,WAAW,EACX,0BAA0B,GAC3B,MAAM,0BAA0B,CAAC;AAClC,OAAO,EACL,yBAAyB,EACzB,2BAA2B,EAC3B,iBAAiB,EACjB,sBAAsB,GAGvB,MAAM,uBAAuB,CAAC;AAC/B,OAAO,EACL,qCAAqC,GACtC,MAAM,iCAAiC,CAAC;AACzC,OAAO,EACL,+CAA+C,GAChD,MAAM,2CAA2C,CAAC;AACnD,OAAO,EACL,oCAAoC,GACrC,MAAM,gCAAgC,CAAC"}
|
package/dist/types/proposal.d.ts
CHANGED
|
@@ -113,7 +113,37 @@ export interface Proposal {
|
|
|
113
113
|
txSummary: string;
|
|
114
114
|
signatures: ProposalSignatureEntry[];
|
|
115
115
|
metadata: ProposalMetadata;
|
|
116
|
+
/**
|
|
117
|
+
* Result of the last summary-binding check on this value. Only the check
|
|
118
|
+
* itself writes `verified`; a freshly parsed or imported proposal is
|
|
119
|
+
* `unchecked`. `syncProposals` surfaces failed proposals instead of
|
|
120
|
+
* failing wholesale (issue #462); `signProposal` and `executeProposal`
|
|
121
|
+
* re-verify and refuse them.
|
|
122
|
+
*/
|
|
123
|
+
verification: ProposalVerification;
|
|
116
124
|
}
|
|
125
|
+
/**
|
|
126
|
+
* Outcome of checking a proposal's metadata against its signed summary.
|
|
127
|
+
* `failed.retryable` is true when the failure came from a transient node or
|
|
128
|
+
* RPC error, so the same proposal may verify on a later sync; false when the
|
|
129
|
+
* proposal itself cannot be reproduced (tampered metadata, an anchor block the
|
|
130
|
+
* node has pruned) and it has to be re-proposed.
|
|
131
|
+
*/
|
|
132
|
+
export type ProposalVerification = {
|
|
133
|
+
status: 'unchecked';
|
|
134
|
+
} | {
|
|
135
|
+
status: 'verified';
|
|
136
|
+
} | {
|
|
137
|
+
status: 'failed';
|
|
138
|
+
retryable: boolean;
|
|
139
|
+
message: string;
|
|
140
|
+
};
|
|
141
|
+
/**
|
|
142
|
+
* True when the proposal is both verified and has met its signature
|
|
143
|
+
* threshold, i.e. it can be executed. `status` alone keeps meaning
|
|
144
|
+
* "threshold met": a fully signed proposal can still be dead.
|
|
145
|
+
*/
|
|
146
|
+
export declare function isProposalActionable(proposal: Proposal): boolean;
|
|
117
147
|
export interface TransactionProposal {
|
|
118
148
|
id: string;
|
|
119
149
|
commitment: string;
|
|
@@ -134,6 +164,7 @@ export interface ExportedProposal {
|
|
|
134
164
|
signatureHex: string;
|
|
135
165
|
scheme?: SignatureScheme;
|
|
136
166
|
publicKey?: string;
|
|
167
|
+
messageFormat?: 'eip712';
|
|
137
168
|
timestamp?: string;
|
|
138
169
|
}>;
|
|
139
170
|
metadata: ProposalMetadata;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"proposal.d.ts","sourceRoot":"","sources":["../../src/types/proposal.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"proposal.d.ts","sourceRoot":"","sources":["../../src/types/proposal.ts"],"names":[],"mappings":"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"}
|
package/dist/types/proposal.js
CHANGED
|
@@ -29,4 +29,12 @@ export function parseP2ideHeight(field, value) {
|
|
|
29
29
|
}
|
|
30
30
|
return value;
|
|
31
31
|
}
|
|
32
|
+
/**
|
|
33
|
+
* True when the proposal is both verified and has met its signature
|
|
34
|
+
* threshold, i.e. it can be executed. `status` alone keeps meaning
|
|
35
|
+
* "threshold met": a fully signed proposal can still be dead.
|
|
36
|
+
*/
|
|
37
|
+
export function isProposalActionable(proposal) {
|
|
38
|
+
return proposal.verification.status === 'verified' && proposal.status === 'ready';
|
|
39
|
+
}
|
|
32
40
|
//# sourceMappingURL=proposal.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"proposal.js","sourceRoot":"","sources":["../../src/types/proposal.ts"],"names":[],"mappings":"AAqEA,gFAAgF;AAChF,MAAM,CAAC,MAAM,iCAAiC,GAAG,CAAU,CAAC;AAE5D,iEAAiE;AACjE,MAAM,CAAC,MAAM,gCAAgC,GAAG,GAAG,GAAG,IAAI,CAAC;AAW3D,MAAM,UAAU,gBAAgB,CAAC,EAAgC;IAC/D,OAAO,EAAE,CAAC,eAAe,KAAK,iCAAiC,CAAC;AAClE,CAAC;AAED,MAAM,UAAU,gBAAgB,CAAC,EAAgC;IAC/D,OAAO,EAAE,CAAC,eAAe,KAAK,SAAS,IAAI,EAAE,CAAC,eAAe,KAAK,CAAC,CAAC;AACtE,CAAC;AAKD,MAAM,UAAU,oBAAoB,CAAC,KAAa;IAChD,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,KAAK,SAAS,CAAC;AACnD,CAAC;AAED,8EAA8E;AAC9E,MAAM,CAAC,MAAM,sBAAsB,GAAG,WAAW,CAAC;AAElD;;;;;;GAMG;AACH,MAAM,UAAU,gBAAgB,CAC9B,KAAyC,EACzC,KAAyB;IAEzB,IAAI,KAAK,KAAK,SAAS,EAAE,CAAC;QACxB,OAAO,SAAS,CAAC;IACnB,CAAC;IACD,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,KAAK,CAAC,IAAI,KAAK,GAAG,CAAC,IAAI,KAAK,GAAG,sBAAsB,EAAE,CAAC;QAC5E,MAAM,IAAI,KAAK,CACb,eAAe,KAAK,KAAK,KAAK,wCAAwC,sBAAsB,EAAE,CAC/F,CAAC;IACJ,CAAC;IACD,OAAO,KAAK,CAAC;AACf,CAAC"}
|
|
1
|
+
{"version":3,"file":"proposal.js","sourceRoot":"","sources":["../../src/types/proposal.ts"],"names":[],"mappings":"AAqEA,gFAAgF;AAChF,MAAM,CAAC,MAAM,iCAAiC,GAAG,CAAU,CAAC;AAE5D,iEAAiE;AACjE,MAAM,CAAC,MAAM,gCAAgC,GAAG,GAAG,GAAG,IAAI,CAAC;AAW3D,MAAM,UAAU,gBAAgB,CAAC,EAAgC;IAC/D,OAAO,EAAE,CAAC,eAAe,KAAK,iCAAiC,CAAC;AAClE,CAAC;AAED,MAAM,UAAU,gBAAgB,CAAC,EAAgC;IAC/D,OAAO,EAAE,CAAC,eAAe,KAAK,SAAS,IAAI,EAAE,CAAC,eAAe,KAAK,CAAC,CAAC;AACtE,CAAC;AAKD,MAAM,UAAU,oBAAoB,CAAC,KAAa;IAChD,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,KAAK,SAAS,CAAC;AACnD,CAAC;AAED,8EAA8E;AAC9E,MAAM,CAAC,MAAM,sBAAsB,GAAG,WAAW,CAAC;AAElD;;;;;;GAMG;AACH,MAAM,UAAU,gBAAgB,CAC9B,KAAyC,EACzC,KAAyB;IAEzB,IAAI,KAAK,KAAK,SAAS,EAAE,CAAC;QACxB,OAAO,SAAS,CAAC;IACnB,CAAC;IACD,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,KAAK,CAAC,IAAI,KAAK,GAAG,CAAC,IAAI,KAAK,GAAG,sBAAsB,EAAE,CAAC;QAC5E,MAAM,IAAI,KAAK,CACb,eAAe,KAAK,KAAK,KAAK,wCAAwC,sBAAsB,EAAE,CAC/F,CAAC;IACJ,CAAC;IACD,OAAO,KAAK,CAAC;AACf,CAAC;AAgED;;;;GAIG;AACH,MAAM,UAAU,oBAAoB,CAAC,QAAkB;IACrD,OAAO,QAAQ,CAAC,YAAY,CAAC,MAAM,KAAK,UAAU,IAAI,QAAQ,CAAC,MAAM,KAAK,OAAO,CAAC;AACpF,CAAC"}
|
|
@@ -0,0 +1,80 @@
|
|
|
1
|
+
type TypedField = {
|
|
2
|
+
name: string;
|
|
3
|
+
type: string;
|
|
4
|
+
};
|
|
5
|
+
declare function typedData(name: string, primaryType: string, fieldName: string, value: string): {
|
|
6
|
+
types: {
|
|
7
|
+
[primaryType]: {
|
|
8
|
+
name: string;
|
|
9
|
+
type: string;
|
|
10
|
+
}[];
|
|
11
|
+
EIP712Domain: TypedField[];
|
|
12
|
+
};
|
|
13
|
+
primaryType: string;
|
|
14
|
+
domain: {
|
|
15
|
+
name: string;
|
|
16
|
+
version: string;
|
|
17
|
+
};
|
|
18
|
+
message: {
|
|
19
|
+
[fieldName]: string;
|
|
20
|
+
};
|
|
21
|
+
};
|
|
22
|
+
export declare function guardianRequestTypedData(requestHash: Uint8Array): {
|
|
23
|
+
types: {
|
|
24
|
+
[x: string]: TypedField[];
|
|
25
|
+
EIP712Domain: TypedField[];
|
|
26
|
+
};
|
|
27
|
+
primaryType: string;
|
|
28
|
+
domain: {
|
|
29
|
+
name: string;
|
|
30
|
+
version: string;
|
|
31
|
+
};
|
|
32
|
+
message: {
|
|
33
|
+
[x: string]: string;
|
|
34
|
+
};
|
|
35
|
+
};
|
|
36
|
+
export declare function guardianLookupTypedData(lookupHash: Uint8Array): {
|
|
37
|
+
types: {
|
|
38
|
+
[x: string]: TypedField[];
|
|
39
|
+
EIP712Domain: TypedField[];
|
|
40
|
+
};
|
|
41
|
+
primaryType: string;
|
|
42
|
+
domain: {
|
|
43
|
+
name: string;
|
|
44
|
+
version: string;
|
|
45
|
+
};
|
|
46
|
+
message: {
|
|
47
|
+
[x: string]: string;
|
|
48
|
+
};
|
|
49
|
+
};
|
|
50
|
+
export declare function midenTransactionTypedData(txSummaryHash: Uint8Array): {
|
|
51
|
+
types: {
|
|
52
|
+
[x: string]: TypedField[];
|
|
53
|
+
EIP712Domain: TypedField[];
|
|
54
|
+
};
|
|
55
|
+
primaryType: string;
|
|
56
|
+
domain: {
|
|
57
|
+
name: string;
|
|
58
|
+
version: string;
|
|
59
|
+
};
|
|
60
|
+
message: {
|
|
61
|
+
[x: string]: string;
|
|
62
|
+
};
|
|
63
|
+
};
|
|
64
|
+
export declare function guardianKeyDiscoveryTypedData(challenge: Uint8Array): {
|
|
65
|
+
types: {
|
|
66
|
+
[x: string]: TypedField[];
|
|
67
|
+
EIP712Domain: TypedField[];
|
|
68
|
+
};
|
|
69
|
+
primaryType: string;
|
|
70
|
+
domain: {
|
|
71
|
+
name: string;
|
|
72
|
+
version: string;
|
|
73
|
+
};
|
|
74
|
+
message: {
|
|
75
|
+
[x: string]: string;
|
|
76
|
+
};
|
|
77
|
+
};
|
|
78
|
+
export declare function typedDataDigest(data: ReturnType<typeof typedData>): Uint8Array;
|
|
79
|
+
export {};
|
|
80
|
+
//# sourceMappingURL=eip712.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"eip712.d.ts","sourceRoot":"","sources":["../../src/utils/eip712.ts"],"names":[],"mappings":"AAGA,KAAK,UAAU,GAAG;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,MAAM,CAAA;CAAE,CAAC;AAUjD,iBAAS,SAAS,CAAC,IAAI,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM;;QAIhF,CAAC,WAAW,CAAC;;;YAAwC;;;;;;;;;QAI5C,CAAC,SAAS,CAAC,SAAO;;EAEhC;AAED,wBAAgB,wBAAwB,CAAC,WAAW,EAAE,UAAU;;;;;;;;;;;;;EAE/D;AAED,wBAAgB,uBAAuB,CAAC,UAAU,EAAE,UAAU;;;;;;;;;;;;;EAE7D;AAED,wBAAgB,yBAAyB,CAAC,aAAa,EAAE,UAAU;;;;;;;;;;;;;EAElE;AAED,wBAAgB,6BAA6B,CAAC,SAAS,EAAE,UAAU;;;;;;;;;;;;;EAElE;AAED,wBAAgB,eAAe,CAAC,IAAI,EAAE,UAAU,CAAC,OAAO,SAAS,CAAC,GAAG,UAAU,CAe9E"}
|
|
@@ -0,0 +1,49 @@
|
|
|
1
|
+
import { keccak_256 } from '@noble/hashes/sha3.js';
|
|
2
|
+
import { bytesToHex, hexToBytes } from './encoding.js';
|
|
3
|
+
const EIP191_PREFIX = 0x19;
|
|
4
|
+
const EIP712_VERSION = 0x01;
|
|
5
|
+
const DOMAIN_VERSION = '1';
|
|
6
|
+
const domainFields = [
|
|
7
|
+
{ name: 'name', type: 'string' },
|
|
8
|
+
{ name: 'version', type: 'string' },
|
|
9
|
+
];
|
|
10
|
+
function typedData(name, primaryType, fieldName, value) {
|
|
11
|
+
return {
|
|
12
|
+
types: {
|
|
13
|
+
EIP712Domain: domainFields,
|
|
14
|
+
[primaryType]: [{ name: fieldName, type: 'bytes32' }],
|
|
15
|
+
},
|
|
16
|
+
primaryType,
|
|
17
|
+
domain: { name, version: DOMAIN_VERSION },
|
|
18
|
+
message: { [fieldName]: value },
|
|
19
|
+
};
|
|
20
|
+
}
|
|
21
|
+
export function guardianRequestTypedData(requestHash) {
|
|
22
|
+
return typedData('Guardian Request', 'GuardianRequest', 'requestHash', bytesToHex(requestHash));
|
|
23
|
+
}
|
|
24
|
+
export function guardianLookupTypedData(lookupHash) {
|
|
25
|
+
return typedData('Guardian Lookup', 'GuardianLookup', 'lookupHash', bytesToHex(lookupHash));
|
|
26
|
+
}
|
|
27
|
+
export function midenTransactionTypedData(txSummaryHash) {
|
|
28
|
+
return typedData('Miden Transaction', 'MidenTransaction', 'txSummaryHash', bytesToHex(txSummaryHash));
|
|
29
|
+
}
|
|
30
|
+
export function guardianKeyDiscoveryTypedData(challenge) {
|
|
31
|
+
return typedData('Guardian Key Discovery', 'GuardianKeyDiscovery', 'challenge', bytesToHex(challenge));
|
|
32
|
+
}
|
|
33
|
+
export function typedDataDigest(data) {
|
|
34
|
+
const domainType = new TextEncoder().encode('EIP712Domain(string name,string version)');
|
|
35
|
+
const primaryType = new TextEncoder().encode(`${data.primaryType}(bytes32 ${Object.keys(data.message)[0]})`);
|
|
36
|
+
const domain = new Uint8Array(96);
|
|
37
|
+
domain.set(keccak_256(domainType));
|
|
38
|
+
domain.set(keccak_256(new TextEncoder().encode(data.domain.name)), 32);
|
|
39
|
+
domain.set(keccak_256(new TextEncoder().encode(data.domain.version)), 64);
|
|
40
|
+
const struct = new Uint8Array(64);
|
|
41
|
+
struct.set(keccak_256(primaryType));
|
|
42
|
+
struct.set(hexToBytes(Object.values(data.message)[0]), 32);
|
|
43
|
+
const preimage = new Uint8Array(66);
|
|
44
|
+
preimage.set([EIP191_PREFIX, EIP712_VERSION]);
|
|
45
|
+
preimage.set(keccak_256(domain), 2);
|
|
46
|
+
preimage.set(keccak_256(struct), 34);
|
|
47
|
+
return keccak_256(preimage);
|
|
48
|
+
}
|
|
49
|
+
//# sourceMappingURL=eip712.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"eip712.js","sourceRoot":"","sources":["../../src/utils/eip712.ts"],"names":[],"mappings":"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"}
|
|
@@ -15,6 +15,10 @@ export declare function buildSignatureAdviceEntry(pubkeyCommitment: Word, messag
|
|
|
15
15
|
key: Word;
|
|
16
16
|
values: Felt[];
|
|
17
17
|
};
|
|
18
|
+
export declare function buildEip712SignatureAdviceEntry(pubkeyCommitment: Word, txSummaryCommitment: Word, signatureHex: string, publicKeyHex: string): {
|
|
19
|
+
key: Word;
|
|
20
|
+
values: Felt[];
|
|
21
|
+
};
|
|
18
22
|
/** Rejects unrecoverable ECDSA signatures before entering WASM. */
|
|
19
23
|
export declare function assertEcdsaSignatureRecoverable(signatureHex: string, messageHex: string, expectedPublicKeyHex: string): void;
|
|
20
24
|
export declare function tryComputeEcdsaCommitmentHex(pubkeyHex: string): string | null;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"signature.d.ts","sourceRoot":"","sources":["../../src/utils/signature.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,IAAI,EAAwB,SAAS,EAAE,IAAI,EAAE,MAAM,sBAAsB,CAAC;
|
|
1
|
+
{"version":3,"file":"signature.d.ts","sourceRoot":"","sources":["../../src/utils/signature.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,IAAI,EAAwB,SAAS,EAAE,IAAI,EAAE,MAAM,sBAAsB,CAAC;AAO9F,OAAO,KAAK,EAAE,sBAAsB,EAAE,eAAe,EAAE,MAAM,aAAa,CAAC;AAE3E,eAAO,MAAM,oBAAoB,IAAI,CAAC;AACtC,eAAO,MAAM,qBAAqB,IAAI,CAAC;AAEvC,wBAAgB,YAAY,CAAC,MAAM,EAAE,eAAe,GAAG,MAAM,CAE5D;AAED,wBAAgB,mBAAmB,CACjC,GAAG,EAAE,MAAM,EACX,MAAM,GAAE,eAA0B,GACjC,UAAU,CAMZ;AAED;;;;;;GAMG;AACH,wBAAgB,yBAAyB,CACvC,gBAAgB,EAAE,IAAI,EACtB,OAAO,EAAE,IAAI,EACb,SAAS,EAAE,SAAS,GACnB;IAAE,GAAG,EAAE,IAAI,CAAC;IAAC,MAAM,EAAE,IAAI,EAAE,CAAA;CAAE,CAQ/B;AAcD,wBAAgB,+BAA+B,CAC7C,gBAAgB,EAAE,IAAI,EACtB,mBAAmB,EAAE,IAAI,EACzB,YAAY,EAAE,MAAM,EACpB,YAAY,EAAE,MAAM,GACnB;IAAE,GAAG,EAAE,IAAI,CAAC;IAAC,MAAM,EAAE,IAAI,EAAE,CAAA;CAAE,CAmC/B;AAED,mEAAmE;AACnE,wBAAgB,+BAA+B,CAC7C,YAAY,EAAE,MAAM,EACpB,UAAU,EAAE,MAAM,EAClB,oBAAoB,EAAE,MAAM,GAC3B,IAAI,CAiBN;AAED,wBAAgB,4BAA4B,CAAC,SAAS,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAE7E;AAED,wBAAgB,uBAAuB,CACrC,SAAS,EAAE,MAAM,EACjB,MAAM,EAAE,eAAe,GACtB,MAAM,GAAG,IAAI,CAaf;AAED,wBAAgB,wBAAwB,CACtC,MAAM,EAAE,SAAS,EACjB,OAAO,EAAE,KAAK,CAAC;IAAE,GAAG,EAAE,IAAI,CAAC;IAAC,MAAM,EAAE,IAAI,EAAE,CAAA;CAAE,CAAC,GAC5C,SAAS,CAKX;AAED,wBAAgB,MAAM,CAAC,GAAG,EAAE,MAAM,GAAG,IAAI,CAExC;AAED,wBAAgB,yBAAyB,CAAC,QAAQ,EAAE,MAAM,GAAG,MAAM,CAUlE;AAED,wBAAgB,qBAAqB,CACnC,SAAS,EAAE,sBAAsB,EACjC,iBAAiB,EAAE,GAAG,CAAC,MAAM,CAAC,GAC7B,sBAAsB,CAexB"}
|
package/dist/utils/signature.js
CHANGED
|
@@ -1,7 +1,10 @@
|
|
|
1
|
-
import { FeltArray, Poseidon2, Word } from '@miden-sdk/miden-sdk';
|
|
1
|
+
import { Felt, FeltArray, Poseidon2, Word } from '@miden-sdk/miden-sdk';
|
|
2
2
|
import * as midenSdk from '@miden-sdk/miden-sdk';
|
|
3
3
|
import { EcdsaFormat } from './ecdsa.js';
|
|
4
|
+
import { midenTransactionTypedData, typedDataDigest } from './eip712.js';
|
|
4
5
|
import { hexToBytes, normalizeHexWord } from './encoding.js';
|
|
6
|
+
import { wordToBytes } from './word.js';
|
|
7
|
+
import { secp256k1 } from '@noble/curves/secp256k1';
|
|
5
8
|
export const ECDSA_AUTH_SCHEME_ID = 1;
|
|
6
9
|
export const FALCON_AUTH_SCHEME_ID = 2;
|
|
7
10
|
export function authSchemeId(scheme) {
|
|
@@ -29,6 +32,51 @@ export function buildSignatureAdviceEntry(pubkeyCommitment, message, signature)
|
|
|
29
32
|
const key = Poseidon2.hashElements(elements);
|
|
30
33
|
return { key, values: signature.toPreparedSignature(message) };
|
|
31
34
|
}
|
|
35
|
+
// Little-endian ASCII "EIP712", matching the protocol advice-key domain.
|
|
36
|
+
const EIP712_SIGNATURE_KEY_DOMAIN = 0x323137504945n;
|
|
37
|
+
function littleEndianU32Limbs(bytes) {
|
|
38
|
+
const limbs = [];
|
|
39
|
+
for (let i = 28; i >= 0; i -= 4) {
|
|
40
|
+
const limb = (bytes[i] << 24) | (bytes[i + 1] << 16) | (bytes[i + 2] << 8) | bytes[i + 3];
|
|
41
|
+
limbs.push(new Felt(BigInt(limb >>> 0)));
|
|
42
|
+
}
|
|
43
|
+
return limbs;
|
|
44
|
+
}
|
|
45
|
+
export function buildEip712SignatureAdviceEntry(pubkeyCommitment, txSummaryCommitment, signatureHex, publicKeyHex) {
|
|
46
|
+
const expectedCommitment = tryComputeEcdsaCommitmentHex(publicKeyHex);
|
|
47
|
+
if (expectedCommitment !== normalizeHexWord(pubkeyCommitment.toHex())) {
|
|
48
|
+
throw new Error('EIP-712 public key commitment mismatch');
|
|
49
|
+
}
|
|
50
|
+
const publicKey = secp256k1.ProjectivePoint.fromHex(publicKeyHex.replace(/^0x/i, ''));
|
|
51
|
+
const uncompressed = publicKey.toRawBytes(false);
|
|
52
|
+
const normalizedSignature = EcdsaFormat.normalizeRecoveryByte(signatureHex);
|
|
53
|
+
if (!/^0x[0-9a-fA-F]{130}$/.test(normalizedSignature)) {
|
|
54
|
+
throw new Error('EIP-712 signature must be 65 hex-encoded bytes');
|
|
55
|
+
}
|
|
56
|
+
const signature = hexToBytes(normalizedSignature);
|
|
57
|
+
if (signature.length !== 65 || (signature[64] !== 0 && signature[64] !== 1)) {
|
|
58
|
+
throw new Error('EIP-712 signature must contain a valid recovery ID');
|
|
59
|
+
}
|
|
60
|
+
const typedData = midenTransactionTypedData(wordToBytes(txSummaryCommitment));
|
|
61
|
+
if (!secp256k1.verify(signature.slice(0, 64), typedDataDigest(typedData), publicKey.toRawBytes(true))) {
|
|
62
|
+
throw new Error('EIP-712 signature does not match the transaction summary');
|
|
63
|
+
}
|
|
64
|
+
const rawKey = Poseidon2.hashElements(new FeltArray([
|
|
65
|
+
...pubkeyCommitment.toFelts(),
|
|
66
|
+
...txSummaryCommitment.toFelts(),
|
|
67
|
+
]));
|
|
68
|
+
const domain = new Word(new BigUint64Array([EIP712_SIGNATURE_KEY_DOMAIN, 0n, 0n, 0n]));
|
|
69
|
+
const key = Poseidon2.hashElements(new FeltArray([...rawKey.toFelts(), ...domain.toFelts()]));
|
|
70
|
+
return {
|
|
71
|
+
key,
|
|
72
|
+
values: [
|
|
73
|
+
...littleEndianU32Limbs(uncompressed.slice(1, 33)),
|
|
74
|
+
...littleEndianU32Limbs(uncompressed.slice(33, 65)),
|
|
75
|
+
...littleEndianU32Limbs(signature.slice(0, 32)),
|
|
76
|
+
...littleEndianU32Limbs(signature.slice(32, 64)),
|
|
77
|
+
],
|
|
78
|
+
};
|
|
79
|
+
}
|
|
32
80
|
/** Rejects unrecoverable ECDSA signatures before entering WASM. */
|
|
33
81
|
export function assertEcdsaSignatureRecoverable(signatureHex, messageHex, expectedPublicKeyHex) {
|
|
34
82
|
let recovered;
|