@shieldedtech/moth-wallet 0.2.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.
- package/README.md +62 -0
- package/dist/contract/args-parser.d.ts +29 -0
- package/dist/contract/args-parser.d.ts.map +1 -0
- package/dist/contract/args-parser.js +123 -0
- package/dist/contract/args-parser.js.map +1 -0
- package/dist/contract/artifact-loader.d.ts +26 -0
- package/dist/contract/artifact-loader.d.ts.map +1 -0
- package/dist/contract/artifact-loader.js +129 -0
- package/dist/contract/artifact-loader.js.map +1 -0
- package/dist/contract/call.d.ts +32 -0
- package/dist/contract/call.d.ts.map +1 -0
- package/dist/contract/call.js +245 -0
- package/dist/contract/call.js.map +1 -0
- package/dist/contract/deploy.d.ts +36 -0
- package/dist/contract/deploy.d.ts.map +1 -0
- package/dist/contract/deploy.js +388 -0
- package/dist/contract/deploy.js.map +1 -0
- package/dist/contract/fungible-token.d.ts +40 -0
- package/dist/contract/fungible-token.d.ts.map +1 -0
- package/dist/contract/fungible-token.js +88 -0
- package/dist/contract/fungible-token.js.map +1 -0
- package/dist/contract/initial-private-state.d.ts +18 -0
- package/dist/contract/initial-private-state.d.ts.map +1 -0
- package/dist/contract/initial-private-state.js +44 -0
- package/dist/contract/initial-private-state.js.map +1 -0
- package/dist/contract/maintenance.d.ts +72 -0
- package/dist/contract/maintenance.d.ts.map +1 -0
- package/dist/contract/maintenance.js +430 -0
- package/dist/contract/maintenance.js.map +1 -0
- package/dist/contract/state.d.ts +16 -0
- package/dist/contract/state.d.ts.map +1 -0
- package/dist/contract/state.js +18 -0
- package/dist/contract/state.js.map +1 -0
- package/dist/contract/witness-loader.d.ts +3 -0
- package/dist/contract/witness-loader.d.ts.map +1 -0
- package/dist/contract/witness-loader.js +27 -0
- package/dist/contract/witness-loader.js.map +1 -0
- package/dist/daemon/api-keys.d.ts +66 -0
- package/dist/daemon/api-keys.d.ts.map +1 -0
- package/dist/daemon/api-keys.js +222 -0
- package/dist/daemon/api-keys.js.map +1 -0
- package/dist/daemon/audit-log.d.ts +65 -0
- package/dist/daemon/audit-log.d.ts.map +1 -0
- package/dist/daemon/audit-log.js +73 -0
- package/dist/daemon/audit-log.js.map +1 -0
- package/dist/daemon/client.d.ts +63 -0
- package/dist/daemon/client.d.ts.map +1 -0
- package/dist/daemon/client.js +214 -0
- package/dist/daemon/client.js.map +1 -0
- package/dist/daemon/confirmation-queue.d.ts +46 -0
- package/dist/daemon/confirmation-queue.d.ts.map +1 -0
- package/dist/daemon/confirmation-queue.js +92 -0
- package/dist/daemon/confirmation-queue.js.map +1 -0
- package/dist/daemon/index.d.ts +23 -0
- package/dist/daemon/index.d.ts.map +1 -0
- package/dist/daemon/index.js +26 -0
- package/dist/daemon/index.js.map +1 -0
- package/dist/daemon/protocol.d.ts +40 -0
- package/dist/daemon/protocol.d.ts.map +1 -0
- package/dist/daemon/protocol.js +104 -0
- package/dist/daemon/protocol.js.map +1 -0
- package/dist/daemon/server.d.ts +158 -0
- package/dist/daemon/server.d.ts.map +1 -0
- package/dist/daemon/server.js +297 -0
- package/dist/daemon/server.js.map +1 -0
- package/dist/daemon/wallet-handlers.d.ts +37 -0
- package/dist/daemon/wallet-handlers.d.ts.map +1 -0
- package/dist/daemon/wallet-handlers.js +533 -0
- package/dist/daemon/wallet-handlers.js.map +1 -0
- package/dist/daemon/wallet-rpc-parsers.d.ts +14 -0
- package/dist/daemon/wallet-rpc-parsers.d.ts.map +1 -0
- package/dist/daemon/wallet-rpc-parsers.js +259 -0
- package/dist/daemon/wallet-rpc-parsers.js.map +1 -0
- package/dist/daemon/wallet-rpc-types.d.ts +138 -0
- package/dist/daemon/wallet-rpc-types.d.ts.map +1 -0
- package/dist/daemon/wallet-rpc-types.js +11 -0
- package/dist/daemon/wallet-rpc-types.js.map +1 -0
- package/dist/diagnostics/fs-timing-store.d.ts +29 -0
- package/dist/diagnostics/fs-timing-store.d.ts.map +1 -0
- package/dist/diagnostics/fs-timing-store.js +81 -0
- package/dist/diagnostics/fs-timing-store.js.map +1 -0
- package/dist/diagnostics/timings.d.ts +64 -0
- package/dist/diagnostics/timings.d.ts.map +1 -0
- package/dist/diagnostics/timings.js +100 -0
- package/dist/diagnostics/timings.js.map +1 -0
- package/dist/index.d.ts +37 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +47 -0
- package/dist/index.js.map +1 -0
- package/dist/network/indexer-client.d.ts +66 -0
- package/dist/network/indexer-client.d.ts.map +1 -0
- package/dist/network/indexer-client.js +112 -0
- package/dist/network/indexer-client.js.map +1 -0
- package/dist/network/node-client.d.ts +27 -0
- package/dist/network/node-client.d.ts.map +1 -0
- package/dist/network/node-client.js +94 -0
- package/dist/network/node-client.js.map +1 -0
- package/dist/proof/client.d.ts +15 -0
- package/dist/proof/client.d.ts.map +1 -0
- package/dist/proof/client.js +77 -0
- package/dist/proof/client.js.map +1 -0
- package/dist/proof/provider.d.ts +12 -0
- package/dist/proof/provider.d.ts.map +1 -0
- package/dist/proof/provider.js +96 -0
- package/dist/proof/provider.js.map +1 -0
- package/dist/providers/index.d.ts +2 -0
- package/dist/providers/index.d.ts.map +1 -0
- package/dist/providers/index.js +2 -0
- package/dist/providers/index.js.map +1 -0
- package/dist/providers/midnight-provider.d.ts +11 -0
- package/dist/providers/midnight-provider.d.ts.map +1 -0
- package/dist/providers/midnight-provider.js +30 -0
- package/dist/providers/midnight-provider.js.map +1 -0
- package/dist/storage/adapter.d.ts +8 -0
- package/dist/storage/adapter.d.ts.map +1 -0
- package/dist/storage/adapter.js +2 -0
- package/dist/storage/adapter.js.map +1 -0
- package/dist/storage/fs-adapter.d.ts +14 -0
- package/dist/storage/fs-adapter.d.ts.map +1 -0
- package/dist/storage/fs-adapter.js +126 -0
- package/dist/storage/fs-adapter.js.map +1 -0
- package/dist/storage/safe-path.d.ts +13 -0
- package/dist/storage/safe-path.d.ts.map +1 -0
- package/dist/storage/safe-path.js +35 -0
- package/dist/storage/safe-path.js.map +1 -0
- package/dist/sync/activity.d.ts +53 -0
- package/dist/sync/activity.d.ts.map +1 -0
- package/dist/sync/activity.js +92 -0
- package/dist/sync/activity.js.map +1 -0
- package/dist/sync/dust-registration-estimate.d.ts +54 -0
- package/dist/sync/dust-registration-estimate.d.ts.map +1 -0
- package/dist/sync/dust-registration-estimate.js +103 -0
- package/dist/sync/dust-registration-estimate.js.map +1 -0
- package/dist/sync/node-sync-store.d.ts +10 -0
- package/dist/sync/node-sync-store.d.ts.map +1 -0
- package/dist/sync/node-sync-store.js +42 -0
- package/dist/sync/node-sync-store.js.map +1 -0
- package/dist/sync/operations.d.ts +138 -0
- package/dist/sync/operations.d.ts.map +1 -0
- package/dist/sync/operations.js +395 -0
- package/dist/sync/operations.js.map +1 -0
- package/dist/sync/preseed-parts.d.ts +18 -0
- package/dist/sync/preseed-parts.d.ts.map +1 -0
- package/dist/sync/preseed-parts.js +33 -0
- package/dist/sync/preseed-parts.js.map +1 -0
- package/dist/sync/preseed.d.ts +95 -0
- package/dist/sync/preseed.d.ts.map +1 -0
- package/dist/sync/preseed.js +365 -0
- package/dist/sync/preseed.js.map +1 -0
- package/dist/sync/progress.d.ts +45 -0
- package/dist/sync/progress.d.ts.map +1 -0
- package/dist/sync/progress.js +51 -0
- package/dist/sync/progress.js.map +1 -0
- package/dist/sync/sdk-dedup.d.ts +53 -0
- package/dist/sync/sdk-dedup.d.ts.map +1 -0
- package/dist/sync/sdk-dedup.js +134 -0
- package/dist/sync/sdk-dedup.js.map +1 -0
- package/dist/sync/sync-store.d.ts +33 -0
- package/dist/sync/sync-store.d.ts.map +1 -0
- package/dist/sync/sync-store.js +45 -0
- package/dist/sync/sync-store.js.map +1 -0
- package/dist/sync/wallet-sync.d.ts +153 -0
- package/dist/sync/wallet-sync.d.ts.map +1 -0
- package/dist/sync/wallet-sync.js +943 -0
- package/dist/sync/wallet-sync.js.map +1 -0
- package/dist/types/errors.d.ts +18 -0
- package/dist/types/errors.d.ts.map +1 -0
- package/dist/types/errors.js +33 -0
- package/dist/types/errors.js.map +1 -0
- package/dist/types/exit-codes.d.ts +8 -0
- package/dist/types/exit-codes.d.ts.map +1 -0
- package/dist/types/exit-codes.js +7 -0
- package/dist/types/exit-codes.js.map +1 -0
- package/dist/types/index.d.ts +6 -0
- package/dist/types/index.d.ts.map +1 -0
- package/dist/types/index.js +3 -0
- package/dist/types/index.js.map +1 -0
- package/dist/types/network.d.ts +65 -0
- package/dist/types/network.d.ts.map +1 -0
- package/dist/types/network.js +108 -0
- package/dist/types/network.js.map +1 -0
- package/dist/types/tokens.d.ts +3 -0
- package/dist/types/tokens.d.ts.map +1 -0
- package/dist/types/tokens.js +11 -0
- package/dist/types/tokens.js.map +1 -0
- package/dist/types/transaction.d.ts +13 -0
- package/dist/types/transaction.d.ts.map +1 -0
- package/dist/types/transaction.js +2 -0
- package/dist/types/transaction.js.map +1 -0
- package/dist/types/wallet.d.ts +82 -0
- package/dist/types/wallet.d.ts.map +1 -0
- package/dist/types/wallet.js +2 -0
- package/dist/types/wallet.js.map +1 -0
- package/dist/wallet/address-validate.d.ts +7 -0
- package/dist/wallet/address-validate.d.ts.map +1 -0
- package/dist/wallet/address-validate.js +28 -0
- package/dist/wallet/address-validate.js.map +1 -0
- package/dist/wallet/address.d.ts +32 -0
- package/dist/wallet/address.d.ts.map +1 -0
- package/dist/wallet/address.js +107 -0
- package/dist/wallet/address.js.map +1 -0
- package/dist/wallet/app-secret.d.ts +15 -0
- package/dist/wallet/app-secret.d.ts.map +1 -0
- package/dist/wallet/app-secret.js +45 -0
- package/dist/wallet/app-secret.js.map +1 -0
- package/dist/wallet/balance-format.d.ts +12 -0
- package/dist/wallet/balance-format.d.ts.map +1 -0
- package/dist/wallet/balance-format.js +51 -0
- package/dist/wallet/balance-format.js.map +1 -0
- package/dist/wallet/batch-transfer.d.ts +36 -0
- package/dist/wallet/batch-transfer.d.ts.map +1 -0
- package/dist/wallet/batch-transfer.js +93 -0
- package/dist/wallet/batch-transfer.js.map +1 -0
- package/dist/wallet/keystore.d.ts +16 -0
- package/dist/wallet/keystore.d.ts.map +1 -0
- package/dist/wallet/keystore.js +76 -0
- package/dist/wallet/keystore.js.map +1 -0
- package/dist/wallet/manager.d.ts +77 -0
- package/dist/wallet/manager.d.ts.map +1 -0
- package/dist/wallet/manager.js +474 -0
- package/dist/wallet/manager.js.map +1 -0
- package/dist/wallet/mnemonic.d.ts +5 -0
- package/dist/wallet/mnemonic.d.ts.map +1 -0
- package/dist/wallet/mnemonic.js +28 -0
- package/dist/wallet/mnemonic.js.map +1 -0
- package/dist/wallet/sign-message.d.ts +20 -0
- package/dist/wallet/sign-message.d.ts.map +1 -0
- package/dist/wallet/sign-message.js +58 -0
- package/dist/wallet/sign-message.js.map +1 -0
- package/package.json +55 -0
|
@@ -0,0 +1,72 @@
|
|
|
1
|
+
import type { TransactionResult } from '../types/transaction.js';
|
|
2
|
+
import { type NetworkConfig } from '../types/network.js';
|
|
3
|
+
import type { DerivedKeys } from '../types/wallet.js';
|
|
4
|
+
import type { SyncedWallet } from '../sync/wallet-sync.js';
|
|
5
|
+
import type { WalletKeys } from '../sync/operations.js';
|
|
6
|
+
export interface InsertVerifierKeyOptions {
|
|
7
|
+
/** Address of the already-deployed contract */
|
|
8
|
+
contractAddress: string;
|
|
9
|
+
/** Name of the circuit whose verifier key is being inserted */
|
|
10
|
+
circuitId: string;
|
|
11
|
+
/** Path to a .verifier file (raw bytes from `compact compile`) */
|
|
12
|
+
verifierKeyPath: string;
|
|
13
|
+
keys: DerivedKeys;
|
|
14
|
+
/** Pre-derived typed key bundle. Preferred over `seedHex` when
|
|
15
|
+
* available — daemon path passes this. See
|
|
16
|
+
* docs/spec/wallet-service/05-key-management.md D-KM-3. */
|
|
17
|
+
walletKeys?: WalletKeys;
|
|
18
|
+
/** BIP-39 hex seed. Required only when `walletKeys` is not supplied. */
|
|
19
|
+
seedHex?: string;
|
|
20
|
+
network: NetworkConfig;
|
|
21
|
+
/**
|
|
22
|
+
* Path to the FULL compiled contract artifact — the one whose source declares
|
|
23
|
+
* the circuit being added. The currently-deployed contract may have been
|
|
24
|
+
* deployed from a stub with fewer circuits.
|
|
25
|
+
*/
|
|
26
|
+
artifactPath: string;
|
|
27
|
+
/** A synced wallet facade — required for balancing transactions */
|
|
28
|
+
syncedWallet?: SyncedWallet;
|
|
29
|
+
/** Project directory for resolving SDK dependencies (typically the contract project) */
|
|
30
|
+
projectDir?: string;
|
|
31
|
+
timeoutMs?: number;
|
|
32
|
+
}
|
|
33
|
+
export declare function insertVerifierKey(options: InsertVerifierKeyOptions): Promise<TransactionResult>;
|
|
34
|
+
export interface InsertVerifierKeysOptions {
|
|
35
|
+
contractAddress: string;
|
|
36
|
+
/** Ordered list of circuits to insert. */
|
|
37
|
+
entries: Array<{
|
|
38
|
+
circuitId: string;
|
|
39
|
+
verifierKeyPath: string;
|
|
40
|
+
}>;
|
|
41
|
+
keys: DerivedKeys;
|
|
42
|
+
/** Pre-derived typed key bundle. Preferred over `seedHex`. D-KM-3. */
|
|
43
|
+
walletKeys?: WalletKeys;
|
|
44
|
+
/** BIP-39 hex seed. Required only when `walletKeys` is not supplied. */
|
|
45
|
+
seedHex?: string;
|
|
46
|
+
network: NetworkConfig;
|
|
47
|
+
artifactPath: string;
|
|
48
|
+
syncedWallet?: SyncedWallet;
|
|
49
|
+
projectDir?: string;
|
|
50
|
+
/** Query the contract before each insert and skip circuits already defined. */
|
|
51
|
+
skipExisting?: boolean;
|
|
52
|
+
/** Per-entry progress callback (after each tx attempt). */
|
|
53
|
+
onProgress?: (e: BatchEntryResult) => void;
|
|
54
|
+
timeoutMs?: number;
|
|
55
|
+
}
|
|
56
|
+
export interface BatchEntryResult {
|
|
57
|
+
circuitId: string;
|
|
58
|
+
status: 'inserted' | 'skipped-existing' | 'failed';
|
|
59
|
+
txHash?: string;
|
|
60
|
+
blockHeight?: number | null;
|
|
61
|
+
error?: string;
|
|
62
|
+
}
|
|
63
|
+
export interface BatchInsertResult {
|
|
64
|
+
contractAddress: string;
|
|
65
|
+
total: number;
|
|
66
|
+
inserted: number;
|
|
67
|
+
skipped: number;
|
|
68
|
+
failed: number;
|
|
69
|
+
entries: BatchEntryResult[];
|
|
70
|
+
}
|
|
71
|
+
export declare function insertVerifierKeys(options: InsertVerifierKeysOptions): Promise<BatchInsertResult>;
|
|
72
|
+
//# sourceMappingURL=maintenance.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"maintenance.d.ts","sourceRoot":"","sources":["../../src/contract/maintenance.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAC,iBAAiB,EAAC,MAAM,yBAAyB,CAAC;AAC/D,OAAO,EAAsB,KAAK,aAAa,EAAC,MAAM,qBAAqB,CAAC;AAC5E,OAAO,KAAK,EAAC,WAAW,EAAC,MAAM,oBAAoB,CAAC;AAWpD,OAAO,KAAK,EAAC,YAAY,EAAC,MAAM,wBAAwB,CAAC;AACzD,OAAO,KAAK,EAAC,UAAU,EAAC,MAAM,uBAAuB,CAAC;AAEtD,MAAM,WAAW,wBAAwB;IACvC,+CAA+C;IAC/C,eAAe,EAAE,MAAM,CAAC;IACxB,+DAA+D;IAC/D,SAAS,EAAE,MAAM,CAAC;IAClB,kEAAkE;IAClE,eAAe,EAAE,MAAM,CAAC;IACxB,IAAI,EAAE,WAAW,CAAC;IAClB;;gEAE4D;IAC5D,UAAU,CAAC,EAAE,UAAU,CAAC;IACxB,wEAAwE;IACxE,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,OAAO,EAAE,aAAa,CAAC;IACvB;;;;OAIG;IACH,YAAY,EAAE,MAAM,CAAC;IACrB,mEAAmE;IACnE,YAAY,CAAC,EAAE,YAAY,CAAC;IAC5B,wFAAwF;IACxF,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED,wBAAsB,iBAAiB,CAAC,OAAO,EAAE,wBAAwB,GAAG,OAAO,CAAC,iBAAiB,CAAC,CA4BrG;AA2LD,MAAM,WAAW,yBAAyB;IACxC,eAAe,EAAE,MAAM,CAAC;IACxB,0CAA0C;IAC1C,OAAO,EAAE,KAAK,CAAC;QAAC,SAAS,EAAE,MAAM,CAAC;QAAC,eAAe,EAAE,MAAM,CAAA;KAAC,CAAC,CAAC;IAC7D,IAAI,EAAE,WAAW,CAAC;IAClB,sEAAsE;IACtE,UAAU,CAAC,EAAE,UAAU,CAAC;IACxB,wEAAwE;IACxE,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,OAAO,EAAE,aAAa,CAAC;IACvB,YAAY,EAAE,MAAM,CAAC;IACrB,YAAY,CAAC,EAAE,YAAY,CAAC;IAC5B,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,+EAA+E;IAC/E,YAAY,CAAC,EAAE,OAAO,CAAC;IACvB,2DAA2D;IAC3D,UAAU,CAAC,EAAE,CAAC,CAAC,EAAE,gBAAgB,KAAK,IAAI,CAAC;IAC3C,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED,MAAM,WAAW,gBAAgB;IAC/B,SAAS,EAAE,MAAM,CAAC;IAClB,MAAM,EAAE,UAAU,GAAG,kBAAkB,GAAG,QAAQ,CAAC;IACnD,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,WAAW,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC5B,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAED,MAAM,WAAW,iBAAiB;IAChC,eAAe,EAAE,MAAM,CAAC;IACxB,KAAK,EAAE,MAAM,CAAC;IACd,QAAQ,EAAE,MAAM,CAAC;IACjB,OAAO,EAAE,MAAM,CAAC;IAChB,MAAM,EAAE,MAAM,CAAC;IACf,OAAO,EAAE,gBAAgB,EAAE,CAAC;CAC7B;AAED,wBAAsB,kBAAkB,CAAC,OAAO,EAAE,yBAAyB,GAAG,OAAO,CAAC,iBAAiB,CAAC,CAiBvG"}
|
|
@@ -0,0 +1,430 @@
|
|
|
1
|
+
// Contract maintenance updates: insert verifier keys, remove verifier keys,
|
|
2
|
+
// replace maintenance authority. Mirrors call.ts: syncs wallet, balances
|
|
3
|
+
// transaction, signs intents, submits.
|
|
4
|
+
import { readFileSync } from 'node:fs';
|
|
5
|
+
import { resolveProverConfig } from '../types/network.js';
|
|
6
|
+
import { createProofProvider, ensureProverReady } from '../proof/provider.js';
|
|
7
|
+
import { NodeZkConfigProvider } from '@midnight-ntwrk/midnight-js-node-zk-config-provider';
|
|
8
|
+
import { createMidnightProvider } from '../providers/midnight-provider.js';
|
|
9
|
+
import { indexerPublicDataProvider } from '@midnight-ntwrk/midnight-js-indexer-public-data-provider';
|
|
10
|
+
import { WalletError } from '../types/errors.js';
|
|
11
|
+
import { setNetworkId } from '@midnight-ntwrk/midnight-js/network-id';
|
|
12
|
+
import * as Rx from 'rxjs';
|
|
13
|
+
import * as ledger from '@midnight-ntwrk/ledger-v8';
|
|
14
|
+
import { HDWallet, Roles } from '@midnightntwrk/wallet-sdk/hd';
|
|
15
|
+
import { createKeystore } from '@midnightntwrk/wallet-sdk/unshielded';
|
|
16
|
+
export async function insertVerifierKey(options) {
|
|
17
|
+
const { contractAddress, circuitId, network, artifactPath, verifierKeyPath } = options;
|
|
18
|
+
if (!artifactPath) {
|
|
19
|
+
throw new WalletError('INVALID_INPUT', 'Maintenance updates require a compiled contract artifact (--artifact). ' +
|
|
20
|
+
'Pass the FULL contract compile — the one that declares this circuit.');
|
|
21
|
+
}
|
|
22
|
+
if (!verifierKeyPath) {
|
|
23
|
+
throw new WalletError('INVALID_INPUT', 'Verifier key file path is required (--vk-file)');
|
|
24
|
+
}
|
|
25
|
+
if (!circuitId) {
|
|
26
|
+
throw new WalletError('INVALID_INPUT', 'Circuit ID is required (--circuit-id)');
|
|
27
|
+
}
|
|
28
|
+
if (!options.syncedWallet?.facade) {
|
|
29
|
+
throw new WalletError('WALLET_ERROR', 'Wallet must be synced before maintenance updates. Unlock and wait for sync.');
|
|
30
|
+
}
|
|
31
|
+
setNetworkId(network.id);
|
|
32
|
+
await ensureProverReady(resolveProverConfig(network));
|
|
33
|
+
return insertViaSDK(options);
|
|
34
|
+
}
|
|
35
|
+
async function insertViaSDK(options) {
|
|
36
|
+
const { contractAddress, circuitId, verifierKeyPath, walletKeys, seedHex, network, artifactPath, syncedWallet, projectDir } = options;
|
|
37
|
+
const { resolve: resolvePath, join, basename } = await import('node:path');
|
|
38
|
+
const { pathToFileURL } = await import('node:url');
|
|
39
|
+
const { createRequire } = await import('node:module');
|
|
40
|
+
const { existsSync } = await import('node:fs');
|
|
41
|
+
const { homedir } = await import('node:os');
|
|
42
|
+
const { levelPrivateStateProvider } = await import('@midnight-ntwrk/midnight-js-level-private-state-provider');
|
|
43
|
+
// Resolve typed key bundle: prefer pre-derived walletKeys (daemon
|
|
44
|
+
// path), fall back to deriving from seedHex (in-process CLI). D-KM-3.
|
|
45
|
+
let shieldedSecretKeys;
|
|
46
|
+
let dustSecretKey;
|
|
47
|
+
let nightExternalKey;
|
|
48
|
+
if (walletKeys) {
|
|
49
|
+
shieldedSecretKeys = walletKeys.shieldedSecretKeys;
|
|
50
|
+
dustSecretKey = walletKeys.dustSecretKey;
|
|
51
|
+
nightExternalKey = walletKeys.nightExternalKey;
|
|
52
|
+
}
|
|
53
|
+
else {
|
|
54
|
+
if (!seedHex) {
|
|
55
|
+
throw new WalletError('WALLET_ERROR', 'insertVerifierKey requires either walletKeys or seedHex');
|
|
56
|
+
}
|
|
57
|
+
const hdWallet = HDWallet.fromSeed(Buffer.from(seedHex, 'hex'));
|
|
58
|
+
if (hdWallet.type !== 'seedOk')
|
|
59
|
+
throw new WalletError('WALLET_ERROR', 'Invalid seed');
|
|
60
|
+
const keyResult = hdWallet.hdWallet
|
|
61
|
+
.selectAccount(0)
|
|
62
|
+
.selectRoles([Roles.Zswap, Roles.NightExternal, Roles.Dust])
|
|
63
|
+
.deriveKeysAt(0);
|
|
64
|
+
if (keyResult.type !== 'keysDerived')
|
|
65
|
+
throw new WalletError('WALLET_ERROR', 'Key derivation failed');
|
|
66
|
+
hdWallet.hdWallet.clear();
|
|
67
|
+
shieldedSecretKeys = ledger.ZswapSecretKeys.fromSeed(keyResult.keys[Roles.Zswap]);
|
|
68
|
+
dustSecretKey = ledger.DustSecretKey.fromSeed(keyResult.keys[Roles.Dust]);
|
|
69
|
+
nightExternalKey = keyResult.keys[Roles.NightExternal];
|
|
70
|
+
}
|
|
71
|
+
const keystore = createKeystore(nightExternalKey, network.id);
|
|
72
|
+
// Wait for wallet sync + dust stabilization (same as call.ts)
|
|
73
|
+
const facade = syncedWallet.facade;
|
|
74
|
+
const state = await Rx.firstValueFrom(facade.state().pipe(Rx.filter((s) => {
|
|
75
|
+
try {
|
|
76
|
+
const unDone = s.unshielded?.progress?.isStrictlyComplete?.() === true;
|
|
77
|
+
const dustDone = s.dust?.progress?.isStrictlyComplete?.() === true;
|
|
78
|
+
if (unDone && dustDone)
|
|
79
|
+
return true;
|
|
80
|
+
}
|
|
81
|
+
catch { }
|
|
82
|
+
return s.isSynced === true;
|
|
83
|
+
}), Rx.bufferCount(2, 1), Rx.filter(([a, b]) => {
|
|
84
|
+
try {
|
|
85
|
+
const dustA = a.dust?.balance?.(new Date()) ?? 0n;
|
|
86
|
+
const dustB = b.dust?.balance?.(new Date()) ?? 0n;
|
|
87
|
+
return dustA === dustB;
|
|
88
|
+
}
|
|
89
|
+
catch {
|
|
90
|
+
return true;
|
|
91
|
+
}
|
|
92
|
+
}), Rx.map(([, b]) => b)));
|
|
93
|
+
const coinPublicKey = state.shielded.coinPublicKey.toHexString();
|
|
94
|
+
const encPublicKey = state.shielded.encryptionPublicKey.toHexString();
|
|
95
|
+
const unshieldedAddr = keystore.getBech32Address().toString();
|
|
96
|
+
// Resolve SDK packages from the project's node_modules — keeps onchain-runtime instance unique.
|
|
97
|
+
const projRoot = projectDir?.trim() || resolvePath(artifactPath, '..', '..');
|
|
98
|
+
const projRequire = createRequire(resolvePath(projRoot, 'node_modules', '_virtual.js'));
|
|
99
|
+
let CompiledContract;
|
|
100
|
+
let submitInsertVerifierKeyTx;
|
|
101
|
+
let createVerifierKey;
|
|
102
|
+
try {
|
|
103
|
+
CompiledContract = projRequire('@midnight-ntwrk/compact-js').CompiledContract;
|
|
104
|
+
submitInsertVerifierKeyTx = projRequire('@midnight-ntwrk/midnight-js/contracts').submitInsertVerifierKeyTx;
|
|
105
|
+
createVerifierKey = projRequire('@midnight-ntwrk/midnight-js/types').createVerifierKey;
|
|
106
|
+
}
|
|
107
|
+
catch {
|
|
108
|
+
const cjs = await import('@midnight-ntwrk/compact-js');
|
|
109
|
+
const contracts = await import('@midnight-ntwrk/midnight-js/contracts');
|
|
110
|
+
const types = await import('@midnight-ntwrk/midnight-js/types');
|
|
111
|
+
CompiledContract = cjs.CompiledContract;
|
|
112
|
+
submitInsertVerifierKeyTx = contracts.submitInsertVerifierKeyTx;
|
|
113
|
+
createVerifierKey = types.createVerifierKey;
|
|
114
|
+
}
|
|
115
|
+
// Load the FULL contract module — its TypeScript binding declares the circuit being added.
|
|
116
|
+
const managedDir = artifactPath;
|
|
117
|
+
const contractName = basename(managedDir);
|
|
118
|
+
const contractJs = join(managedDir, 'contract', 'index.js');
|
|
119
|
+
if (!existsSync(contractJs)) {
|
|
120
|
+
throw new WalletError('INVALID_INPUT', `No compiled contract at ${contractJs}`);
|
|
121
|
+
}
|
|
122
|
+
const contractModule = await import(pathToFileURL(contractJs).href);
|
|
123
|
+
// Build CompiledContract (vacant witnesses are fine — maintenance updates don't run circuits)
|
|
124
|
+
const compiledContract = CompiledContract.make(contractName, contractModule.Contract).pipe(CompiledContract.withVacantWitnesses, CompiledContract.withCompiledFileAssets(managedDir));
|
|
125
|
+
// Load the verifier key bytes from disk and wrap into the SDK type.
|
|
126
|
+
const vkBytes = readFileSync(resolvePath(verifierKeyPath));
|
|
127
|
+
const verifierKey = createVerifierKey(new Uint8Array(vkBytes));
|
|
128
|
+
// Providers — same pattern as call.ts
|
|
129
|
+
const zkConfigProvider = new NodeZkConfigProvider(artifactPath);
|
|
130
|
+
void createMidnightProvider(network); // currently unused but kept for parity
|
|
131
|
+
const indexerHttpUrl = network.indexerUrl;
|
|
132
|
+
const indexerWsUrl = indexerHttpUrl.replace(/^https:/, 'wss:').replace(/^http:/, 'ws:') + '/ws';
|
|
133
|
+
const publicDataProvider = indexerPublicDataProvider(indexerHttpUrl, indexerWsUrl);
|
|
134
|
+
const proofProvider = createProofProvider(resolveProverConfig(network), zkConfigProvider.asKeyMaterialProvider());
|
|
135
|
+
const walletProvider = {
|
|
136
|
+
getCoinPublicKey: () => coinPublicKey,
|
|
137
|
+
getEncryptionPublicKey: () => encPublicKey,
|
|
138
|
+
async balanceTx(tx, ttl) {
|
|
139
|
+
const recipe = await facade.balanceUnboundTransaction(tx, { shieldedSecretKeys, dustSecretKey }, { ttl: ttl ?? new Date(Date.now() + 30 * 60_000) });
|
|
140
|
+
const signFn = (payload) => keystore.signData(payload);
|
|
141
|
+
signTransactionIntents(recipe.baseTransaction, signFn, 'proof');
|
|
142
|
+
if (recipe.balancingTransaction) {
|
|
143
|
+
signTransactionIntents(recipe.balancingTransaction, signFn, 'pre-proof');
|
|
144
|
+
}
|
|
145
|
+
return facade.finalizeRecipe(recipe);
|
|
146
|
+
},
|
|
147
|
+
submitTx: async (tx) => {
|
|
148
|
+
return facade.submitTransaction(tx);
|
|
149
|
+
},
|
|
150
|
+
};
|
|
151
|
+
const levelDbDir = join(homedir(), '.moth', 'level-db', network.id, encPublicKey.slice(0, 16));
|
|
152
|
+
// privateStateStoreName matches what the deploy used. The signing key was stored
|
|
153
|
+
// under the contract NAME the stub was deployed with — which is the deployed
|
|
154
|
+
// contract's name, NOT necessarily contractName. To be safe, default to deployed
|
|
155
|
+
// contract's basename derived from artifactPath. Callers can override by ensuring
|
|
156
|
+
// artifactPath basename matches what moth used at deploy.
|
|
157
|
+
const providers = {
|
|
158
|
+
zkConfigProvider: zkConfigProvider,
|
|
159
|
+
proofProvider: proofProvider,
|
|
160
|
+
walletProvider: walletProvider,
|
|
161
|
+
midnightProvider: walletProvider,
|
|
162
|
+
publicDataProvider: publicDataProvider,
|
|
163
|
+
privateStateProvider: levelPrivateStateProvider({
|
|
164
|
+
midnightDbName: levelDbDir,
|
|
165
|
+
privateStateStoreName: contractName + '-state',
|
|
166
|
+
privateStoragePasswordProvider: () => unshieldedAddr,
|
|
167
|
+
accountId: unshieldedAddr,
|
|
168
|
+
}),
|
|
169
|
+
};
|
|
170
|
+
const result = await submitInsertVerifierKeyTx(providers, compiledContract, contractAddress, circuitId, verifierKey);
|
|
171
|
+
return {
|
|
172
|
+
hash: result?.public?.txId ?? result?.txId ?? '',
|
|
173
|
+
status: 'SUCCESS',
|
|
174
|
+
blockHash: result?.public?.blockHash ?? result?.blockHash ?? null,
|
|
175
|
+
blockHeight: result?.public?.blockHeight ?? result?.blockHeight ?? null,
|
|
176
|
+
contractAddress,
|
|
177
|
+
fees: null,
|
|
178
|
+
};
|
|
179
|
+
}
|
|
180
|
+
export async function insertVerifierKeys(options) {
|
|
181
|
+
const { contractAddress, entries, network, artifactPath, syncedWallet } = options;
|
|
182
|
+
if (!artifactPath) {
|
|
183
|
+
throw new WalletError('INVALID_INPUT', 'Maintenance updates require an artifact (--artifact).');
|
|
184
|
+
}
|
|
185
|
+
if (!entries || entries.length === 0) {
|
|
186
|
+
throw new WalletError('INVALID_INPUT', 'No circuits to insert.');
|
|
187
|
+
}
|
|
188
|
+
if (!syncedWallet?.facade) {
|
|
189
|
+
throw new WalletError('WALLET_ERROR', 'Wallet must be synced before maintenance updates.');
|
|
190
|
+
}
|
|
191
|
+
setNetworkId(network.id);
|
|
192
|
+
await ensureProverReady(resolveProverConfig(network));
|
|
193
|
+
return insertBatchViaSDK(options);
|
|
194
|
+
}
|
|
195
|
+
async function insertBatchViaSDK(options) {
|
|
196
|
+
const { contractAddress, entries, walletKeys, seedHex, network, artifactPath, syncedWallet, projectDir, skipExisting, onProgress } = options;
|
|
197
|
+
const { resolve: resolvePath, join, basename } = await import('node:path');
|
|
198
|
+
const { pathToFileURL } = await import('node:url');
|
|
199
|
+
const { createRequire } = await import('node:module');
|
|
200
|
+
const { existsSync } = await import('node:fs');
|
|
201
|
+
const { homedir } = await import('node:os');
|
|
202
|
+
const { levelPrivateStateProvider } = await import('@midnight-ntwrk/midnight-js-level-private-state-provider');
|
|
203
|
+
// One-time key resolution: prefer pre-derived walletKeys (daemon
|
|
204
|
+
// path), fall back to deriving from seedHex (in-process CLI). D-KM-3.
|
|
205
|
+
let shieldedSecretKeys;
|
|
206
|
+
let dustSecretKey;
|
|
207
|
+
let nightExternalKey;
|
|
208
|
+
if (walletKeys) {
|
|
209
|
+
shieldedSecretKeys = walletKeys.shieldedSecretKeys;
|
|
210
|
+
dustSecretKey = walletKeys.dustSecretKey;
|
|
211
|
+
nightExternalKey = walletKeys.nightExternalKey;
|
|
212
|
+
}
|
|
213
|
+
else {
|
|
214
|
+
if (!seedHex) {
|
|
215
|
+
throw new WalletError('WALLET_ERROR', 'insertVerifierKeys requires either walletKeys or seedHex');
|
|
216
|
+
}
|
|
217
|
+
const hdWallet = HDWallet.fromSeed(Buffer.from(seedHex, 'hex'));
|
|
218
|
+
if (hdWallet.type !== 'seedOk')
|
|
219
|
+
throw new WalletError('WALLET_ERROR', 'Invalid seed');
|
|
220
|
+
const keyResult = hdWallet.hdWallet
|
|
221
|
+
.selectAccount(0)
|
|
222
|
+
.selectRoles([Roles.Zswap, Roles.NightExternal, Roles.Dust])
|
|
223
|
+
.deriveKeysAt(0);
|
|
224
|
+
if (keyResult.type !== 'keysDerived')
|
|
225
|
+
throw new WalletError('WALLET_ERROR', 'Key derivation failed');
|
|
226
|
+
hdWallet.hdWallet.clear();
|
|
227
|
+
shieldedSecretKeys = ledger.ZswapSecretKeys.fromSeed(keyResult.keys[Roles.Zswap]);
|
|
228
|
+
dustSecretKey = ledger.DustSecretKey.fromSeed(keyResult.keys[Roles.Dust]);
|
|
229
|
+
nightExternalKey = keyResult.keys[Roles.NightExternal];
|
|
230
|
+
}
|
|
231
|
+
const keystore = createKeystore(nightExternalKey, network.id);
|
|
232
|
+
const facade = syncedWallet.facade;
|
|
233
|
+
const state = await Rx.firstValueFrom(facade.state().pipe(Rx.filter((s) => {
|
|
234
|
+
try {
|
|
235
|
+
const unDone = s.unshielded?.progress?.isStrictlyComplete?.() === true;
|
|
236
|
+
const dustDone = s.dust?.progress?.isStrictlyComplete?.() === true;
|
|
237
|
+
if (unDone && dustDone)
|
|
238
|
+
return true;
|
|
239
|
+
}
|
|
240
|
+
catch { }
|
|
241
|
+
return s.isSynced === true;
|
|
242
|
+
}), Rx.bufferCount(2, 1), Rx.filter(([a, b]) => {
|
|
243
|
+
try {
|
|
244
|
+
const dustA = a.dust?.balance?.(new Date()) ?? 0n;
|
|
245
|
+
const dustB = b.dust?.balance?.(new Date()) ?? 0n;
|
|
246
|
+
return dustA === dustB;
|
|
247
|
+
}
|
|
248
|
+
catch {
|
|
249
|
+
return true;
|
|
250
|
+
}
|
|
251
|
+
}), Rx.map(([, b]) => b)));
|
|
252
|
+
const coinPublicKey = state.shielded.coinPublicKey.toHexString();
|
|
253
|
+
const encPublicKey = state.shielded.encryptionPublicKey.toHexString();
|
|
254
|
+
const unshieldedAddr = keystore.getBech32Address().toString();
|
|
255
|
+
const projRoot = projectDir?.trim() || resolvePath(artifactPath, '..', '..');
|
|
256
|
+
const projRequire = createRequire(resolvePath(projRoot, 'node_modules', '_virtual.js'));
|
|
257
|
+
let CompiledContract;
|
|
258
|
+
let submitInsertVerifierKeyTx;
|
|
259
|
+
let createVerifierKey;
|
|
260
|
+
try {
|
|
261
|
+
CompiledContract = projRequire('@midnight-ntwrk/compact-js').CompiledContract;
|
|
262
|
+
submitInsertVerifierKeyTx = projRequire('@midnight-ntwrk/midnight-js/contracts').submitInsertVerifierKeyTx;
|
|
263
|
+
createVerifierKey = projRequire('@midnight-ntwrk/midnight-js/types').createVerifierKey;
|
|
264
|
+
}
|
|
265
|
+
catch {
|
|
266
|
+
const cjs = await import('@midnight-ntwrk/compact-js');
|
|
267
|
+
const contracts = await import('@midnight-ntwrk/midnight-js/contracts');
|
|
268
|
+
const types = await import('@midnight-ntwrk/midnight-js/types');
|
|
269
|
+
CompiledContract = cjs.CompiledContract;
|
|
270
|
+
submitInsertVerifierKeyTx = contracts.submitInsertVerifierKeyTx;
|
|
271
|
+
createVerifierKey = types.createVerifierKey;
|
|
272
|
+
}
|
|
273
|
+
const managedDir = artifactPath;
|
|
274
|
+
const contractName = basename(managedDir);
|
|
275
|
+
const contractJs = join(managedDir, 'contract', 'index.js');
|
|
276
|
+
if (!existsSync(contractJs)) {
|
|
277
|
+
throw new WalletError('INVALID_INPUT', `No compiled contract at ${contractJs}`);
|
|
278
|
+
}
|
|
279
|
+
const contractModule = await import(pathToFileURL(contractJs).href);
|
|
280
|
+
const compiledContract = CompiledContract.make(contractName, contractModule.Contract).pipe(CompiledContract.withVacantWitnesses, CompiledContract.withCompiledFileAssets(managedDir));
|
|
281
|
+
const zkConfigProvider = new NodeZkConfigProvider(artifactPath);
|
|
282
|
+
void createMidnightProvider(network);
|
|
283
|
+
const indexerHttpUrl = network.indexerUrl;
|
|
284
|
+
const indexerWsUrl = indexerHttpUrl.replace(/^https:/, 'wss:').replace(/^http:/, 'ws:') + '/ws';
|
|
285
|
+
const publicDataProvider = indexerPublicDataProvider(indexerHttpUrl, indexerWsUrl);
|
|
286
|
+
const proofProvider = createProofProvider(resolveProverConfig(network), zkConfigProvider.asKeyMaterialProvider());
|
|
287
|
+
const walletProvider = {
|
|
288
|
+
getCoinPublicKey: () => coinPublicKey,
|
|
289
|
+
getEncryptionPublicKey: () => encPublicKey,
|
|
290
|
+
async balanceTx(tx, ttl) {
|
|
291
|
+
const recipe = await facade.balanceUnboundTransaction(tx, { shieldedSecretKeys, dustSecretKey }, { ttl: ttl ?? new Date(Date.now() + 30 * 60_000) });
|
|
292
|
+
const signFn = (payload) => keystore.signData(payload);
|
|
293
|
+
signTransactionIntents(recipe.baseTransaction, signFn, 'proof');
|
|
294
|
+
if (recipe.balancingTransaction) {
|
|
295
|
+
signTransactionIntents(recipe.balancingTransaction, signFn, 'pre-proof');
|
|
296
|
+
}
|
|
297
|
+
return facade.finalizeRecipe(recipe);
|
|
298
|
+
},
|
|
299
|
+
submitTx: async (tx) => {
|
|
300
|
+
return facade.submitTransaction(tx);
|
|
301
|
+
},
|
|
302
|
+
};
|
|
303
|
+
const levelDbDir = join(homedir(), '.moth', 'level-db', network.id, encPublicKey.slice(0, 16));
|
|
304
|
+
const providers = {
|
|
305
|
+
zkConfigProvider: zkConfigProvider,
|
|
306
|
+
proofProvider: proofProvider,
|
|
307
|
+
walletProvider: walletProvider,
|
|
308
|
+
midnightProvider: walletProvider,
|
|
309
|
+
publicDataProvider: publicDataProvider,
|
|
310
|
+
privateStateProvider: levelPrivateStateProvider({
|
|
311
|
+
midnightDbName: levelDbDir,
|
|
312
|
+
privateStateStoreName: contractName + '-state',
|
|
313
|
+
privateStoragePasswordProvider: () => unshieldedAddr,
|
|
314
|
+
accountId: unshieldedAddr,
|
|
315
|
+
}),
|
|
316
|
+
};
|
|
317
|
+
// ── Per-entry loop ─────────────────────────────────────────────────────
|
|
318
|
+
// The maintenance authority counter is monotonic per contract, so submits
|
|
319
|
+
// must be sequential. submitInsertVerifierKeyTx awaits finalisation.
|
|
320
|
+
const results = [];
|
|
321
|
+
let inserted = 0, skipped = 0, failed = 0;
|
|
322
|
+
// Pre-query existing operations once if skip-existing is requested.
|
|
323
|
+
let existingOps = new Set();
|
|
324
|
+
if (skipExisting) {
|
|
325
|
+
try {
|
|
326
|
+
const state = await publicDataProvider.queryContractState(contractAddress);
|
|
327
|
+
// ContractState exposes operations as a Map keyed by circuitId — try
|
|
328
|
+
// both common shapes to be resilient to SDK versions.
|
|
329
|
+
const ops = state?.operations;
|
|
330
|
+
if (ops && typeof ops.keys === 'function') {
|
|
331
|
+
for (const k of ops.keys())
|
|
332
|
+
existingOps.add(String(k));
|
|
333
|
+
}
|
|
334
|
+
else if (ops && typeof ops === 'object') {
|
|
335
|
+
for (const k of Object.keys(ops))
|
|
336
|
+
existingOps.add(k);
|
|
337
|
+
}
|
|
338
|
+
}
|
|
339
|
+
catch (e) {
|
|
340
|
+
// Non-fatal — log and continue without skip filtering.
|
|
341
|
+
process.stderr.write(`[maintenance] could not query existing operations, skip-existing disabled: ${e.message}\n`);
|
|
342
|
+
}
|
|
343
|
+
}
|
|
344
|
+
for (const entry of entries) {
|
|
345
|
+
const { circuitId, verifierKeyPath } = entry;
|
|
346
|
+
if (skipExisting && existingOps.has(circuitId)) {
|
|
347
|
+
const r = { circuitId, status: 'skipped-existing' };
|
|
348
|
+
results.push(r);
|
|
349
|
+
skipped++;
|
|
350
|
+
onProgress?.(r);
|
|
351
|
+
continue;
|
|
352
|
+
}
|
|
353
|
+
try {
|
|
354
|
+
const vkBytes = readFileSync(resolvePath(verifierKeyPath));
|
|
355
|
+
const verifierKey = createVerifierKey(new Uint8Array(vkBytes));
|
|
356
|
+
const result = await submitInsertVerifierKeyTx(providers, compiledContract, contractAddress, circuitId, verifierKey);
|
|
357
|
+
const r = {
|
|
358
|
+
circuitId,
|
|
359
|
+
status: 'inserted',
|
|
360
|
+
txHash: result?.public?.txId ?? result?.txId ?? '',
|
|
361
|
+
blockHeight: result?.public?.blockHeight ?? result?.blockHeight ?? null,
|
|
362
|
+
};
|
|
363
|
+
results.push(r);
|
|
364
|
+
inserted++;
|
|
365
|
+
onProgress?.(r);
|
|
366
|
+
}
|
|
367
|
+
catch (err) {
|
|
368
|
+
// Walk the error chain to surface the actual cause (SDK buries it).
|
|
369
|
+
let msg = err?.message ?? String(err);
|
|
370
|
+
let cur = err?.cause;
|
|
371
|
+
for (let i = 0; i < 8 && cur; i++) {
|
|
372
|
+
if (cur.message)
|
|
373
|
+
msg = cur.message;
|
|
374
|
+
if (cur.defect?.message)
|
|
375
|
+
msg = cur.defect.message;
|
|
376
|
+
cur = cur.cause;
|
|
377
|
+
}
|
|
378
|
+
const isAlreadyDefined = /already defined/i.test(msg);
|
|
379
|
+
const r = {
|
|
380
|
+
circuitId,
|
|
381
|
+
status: isAlreadyDefined ? 'skipped-existing' : 'failed',
|
|
382
|
+
error: msg,
|
|
383
|
+
};
|
|
384
|
+
results.push(r);
|
|
385
|
+
if (isAlreadyDefined) {
|
|
386
|
+
skipped++;
|
|
387
|
+
}
|
|
388
|
+
else {
|
|
389
|
+
failed++;
|
|
390
|
+
}
|
|
391
|
+
onProgress?.(r);
|
|
392
|
+
if (!isAlreadyDefined) {
|
|
393
|
+
// Stop on first hard failure — the authority counter is monotonic
|
|
394
|
+
// and a failed submit may leave the wallet in a state where subsequent
|
|
395
|
+
// submits would race against the next counter. Caller can resume.
|
|
396
|
+
break;
|
|
397
|
+
}
|
|
398
|
+
}
|
|
399
|
+
}
|
|
400
|
+
return {
|
|
401
|
+
contractAddress,
|
|
402
|
+
total: entries.length,
|
|
403
|
+
inserted,
|
|
404
|
+
skipped,
|
|
405
|
+
failed,
|
|
406
|
+
entries: results,
|
|
407
|
+
};
|
|
408
|
+
}
|
|
409
|
+
/** Sign unshielded transaction intents (copied from call.ts / deploy.ts) */
|
|
410
|
+
function signTransactionIntents(tx, signFn, proofMarker) {
|
|
411
|
+
if (!tx.intents || tx.intents.size === 0)
|
|
412
|
+
return;
|
|
413
|
+
for (const segment of tx.intents.keys()) {
|
|
414
|
+
const intent = tx.intents.get(segment);
|
|
415
|
+
if (!intent)
|
|
416
|
+
continue;
|
|
417
|
+
const cloned = ledger.Intent.deserialize('signature', proofMarker, 'pre-binding', intent.serialize());
|
|
418
|
+
const signature = signFn(cloned.signatureData(segment));
|
|
419
|
+
if (cloned.fallibleUnshieldedOffer) {
|
|
420
|
+
const sigs = cloned.fallibleUnshieldedOffer.inputs.map((_, i) => cloned.fallibleUnshieldedOffer.signatures.at(i) ?? signature);
|
|
421
|
+
cloned.fallibleUnshieldedOffer = cloned.fallibleUnshieldedOffer.addSignatures(sigs);
|
|
422
|
+
}
|
|
423
|
+
if (cloned.guaranteedUnshieldedOffer) {
|
|
424
|
+
const sigs = cloned.guaranteedUnshieldedOffer.inputs.map((_, i) => cloned.guaranteedUnshieldedOffer.signatures.at(i) ?? signature);
|
|
425
|
+
cloned.guaranteedUnshieldedOffer = cloned.guaranteedUnshieldedOffer.addSignatures(sigs);
|
|
426
|
+
}
|
|
427
|
+
tx.intents.set(segment, cloned);
|
|
428
|
+
}
|
|
429
|
+
}
|
|
430
|
+
//# sourceMappingURL=maintenance.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"maintenance.js","sourceRoot":"","sources":["../../src/contract/maintenance.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
export interface ContractState {
|
|
2
|
+
address: string;
|
|
3
|
+
state: string;
|
|
4
|
+
zswapState: string;
|
|
5
|
+
entryPoint?: string;
|
|
6
|
+
unshieldedBalances: Array<{
|
|
7
|
+
tokenType: string;
|
|
8
|
+
amount: string;
|
|
9
|
+
}>;
|
|
10
|
+
lastUpdated: {
|
|
11
|
+
blockHash: string;
|
|
12
|
+
blockHeight: number;
|
|
13
|
+
} | null;
|
|
14
|
+
}
|
|
15
|
+
export declare function queryContractState(indexerUrl: string, contractAddress: string): Promise<ContractState | null>;
|
|
16
|
+
//# sourceMappingURL=state.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"state.d.ts","sourceRoot":"","sources":["../../src/contract/state.ts"],"names":[],"mappings":"AAEA,MAAM,WAAW,aAAa;IAC5B,OAAO,EAAE,MAAM,CAAC;IAChB,KAAK,EAAE,MAAM,CAAC;IACd,UAAU,EAAE,MAAM,CAAC;IACnB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,kBAAkB,EAAE,KAAK,CAAC;QAAE,SAAS,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;IACjE,WAAW,EAAE;QAAE,SAAS,EAAE,MAAM,CAAC;QAAC,WAAW,EAAE,MAAM,CAAA;KAAE,GAAG,IAAI,CAAC;CAChE;AAED,wBAAsB,kBAAkB,CACtC,UAAU,EAAE,MAAM,EAClB,eAAe,EAAE,MAAM,GACtB,OAAO,CAAC,aAAa,GAAG,IAAI,CAAC,CAgB/B"}
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
import { IndexerClient } from '../network/indexer-client.js';
|
|
2
|
+
export async function queryContractState(indexerUrl, contractAddress) {
|
|
3
|
+
const client = new IndexerClient(indexerUrl);
|
|
4
|
+
const action = await client.getContractAction(contractAddress);
|
|
5
|
+
if (!action)
|
|
6
|
+
return null;
|
|
7
|
+
return {
|
|
8
|
+
address: action.address,
|
|
9
|
+
state: action.state,
|
|
10
|
+
zswapState: action.zswapState,
|
|
11
|
+
entryPoint: action.entryPoint,
|
|
12
|
+
unshieldedBalances: action.unshieldedBalances,
|
|
13
|
+
lastUpdated: action.block
|
|
14
|
+
? { blockHash: action.block.hash, blockHeight: action.block.height }
|
|
15
|
+
: null,
|
|
16
|
+
};
|
|
17
|
+
}
|
|
18
|
+
//# sourceMappingURL=state.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"state.js","sourceRoot":"","sources":["../../src/contract/state.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAuB,MAAM,8BAA8B,CAAC;AAWlF,MAAM,CAAC,KAAK,UAAU,kBAAkB,CACtC,UAAkB,EAClB,eAAuB;IAEvB,MAAM,MAAM,GAAG,IAAI,aAAa,CAAC,UAAU,CAAC,CAAC;IAC7C,MAAM,MAAM,GAAG,MAAM,MAAM,CAAC,iBAAiB,CAAC,eAAe,CAAC,CAAC;IAE/D,IAAI,CAAC,MAAM;QAAE,OAAO,IAAI,CAAC;IAEzB,OAAO;QACL,OAAO,EAAE,MAAM,CAAC,OAAO;QACvB,KAAK,EAAE,MAAM,CAAC,KAAK;QACnB,UAAU,EAAE,MAAM,CAAC,UAAU;QAC7B,UAAU,EAAE,MAAM,CAAC,UAAU;QAC7B,kBAAkB,EAAE,MAAM,CAAC,kBAAkB;QAC7C,WAAW,EAAE,MAAM,CAAC,KAAK;YACvB,CAAC,CAAC,EAAE,SAAS,EAAE,MAAM,CAAC,KAAK,CAAC,IAAI,EAAE,WAAW,EAAE,MAAM,CAAC,KAAK,CAAC,MAAM,EAAE;YACpE,CAAC,CAAC,IAAI;KACT,CAAC;AACJ,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"witness-loader.d.ts","sourceRoot":"","sources":["../../src/contract/witness-loader.ts"],"names":[],"mappings":"AAGA,MAAM,MAAM,eAAe,GAAG,MAAM,CAAC,MAAM,EAAE,CAAC,GAAG,IAAI,EAAE,OAAO,EAAE,KAAK,OAAO,CAAC,CAAC;AAE9E,wBAAsB,mBAAmB,CAAC,WAAW,EAAE,MAAM,GAAG,OAAO,CAAC,eAAe,CAAC,CA2BvF"}
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
import { stat } from 'node:fs/promises';
|
|
2
|
+
import { InvalidInputError } from '../types/errors.js';
|
|
3
|
+
export async function loadWitnessProvider(witnessPath) {
|
|
4
|
+
// Verify file exists
|
|
5
|
+
try {
|
|
6
|
+
const s = await stat(witnessPath);
|
|
7
|
+
if (!s.isFile()) {
|
|
8
|
+
throw new InvalidInputError(`Not a file: ${witnessPath}`);
|
|
9
|
+
}
|
|
10
|
+
}
|
|
11
|
+
catch (err) {
|
|
12
|
+
if (err.code === 'ENOENT') {
|
|
13
|
+
throw new InvalidInputError(`Witness file not found: ${witnessPath}`);
|
|
14
|
+
}
|
|
15
|
+
throw err;
|
|
16
|
+
}
|
|
17
|
+
// Dynamic import
|
|
18
|
+
const moduleUrl = new URL(`file://${witnessPath}`);
|
|
19
|
+
const module = await import(moduleUrl.href);
|
|
20
|
+
// Check for makeWitnesses export
|
|
21
|
+
const makeWitnesses = module.makeWitnesses ?? module.default?.makeWitnesses;
|
|
22
|
+
if (typeof makeWitnesses !== 'function') {
|
|
23
|
+
throw new InvalidInputError(`Witness file ${witnessPath} must export a 'makeWitnesses' function`);
|
|
24
|
+
}
|
|
25
|
+
return module;
|
|
26
|
+
}
|
|
27
|
+
//# sourceMappingURL=witness-loader.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"witness-loader.js","sourceRoot":"","sources":["../../src/contract/witness-loader.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,MAAM,kBAAkB,CAAC;AACxC,OAAO,EAAE,iBAAiB,EAAE,MAAM,oBAAoB,CAAC;AAIvD,MAAM,CAAC,KAAK,UAAU,mBAAmB,CAAC,WAAmB;IAC3D,qBAAqB;IACrB,IAAI,CAAC;QACH,MAAM,CAAC,GAAG,MAAM,IAAI,CAAC,WAAW,CAAC,CAAC;QAClC,IAAI,CAAC,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC;YAChB,MAAM,IAAI,iBAAiB,CAAC,eAAe,WAAW,EAAE,CAAC,CAAC;QAC5D,CAAC;IACH,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,IAAK,GAA6B,CAAC,IAAI,KAAK,QAAQ,EAAE,CAAC;YACrD,MAAM,IAAI,iBAAiB,CAAC,2BAA2B,WAAW,EAAE,CAAC,CAAC;QACxE,CAAC;QACD,MAAM,GAAG,CAAC;IACZ,CAAC;IAED,iBAAiB;IACjB,MAAM,SAAS,GAAG,IAAI,GAAG,CAAC,UAAU,WAAW,EAAE,CAAC,CAAC;IACnD,MAAM,MAAM,GAAG,MAAM,MAAM,CAAC,SAAS,CAAC,IAAI,CAA4B,CAAC;IAEvE,iCAAiC;IACjC,MAAM,aAAa,GAAG,MAAM,CAAC,aAAa,IAAK,MAAM,CAAC,OAAmC,EAAE,aAAa,CAAC;IACzG,IAAI,OAAO,aAAa,KAAK,UAAU,EAAE,CAAC;QACxC,MAAM,IAAI,iBAAiB,CACzB,gBAAgB,WAAW,yCAAyC,CACrE,CAAC;IACJ,CAAC;IAED,OAAO,MAAyB,CAAC;AACnC,CAAC"}
|