dop-wallet-v6 1.1.5 → 1.1.7
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 +0 -2
- package/dist/services/artifacts/artifact-downloader.d.ts +1 -1
- package/dist/services/artifacts/artifact-downloader.js +20 -20
- package/dist/services/artifacts/artifact-downloader.js.map +1 -1
- package/dist/services/artifacts/artifact-hash.d.ts +1 -2
- package/dist/services/artifacts/artifact-hash.js +8 -8
- package/dist/services/artifacts/artifact-hash.js.map +1 -1
- package/dist/services/artifacts/artifact-store.d.ts +0 -1
- package/dist/services/artifacts/artifact-util.d.ts +1 -1
- package/dist/services/artifacts/artifact-util.js +18 -26
- package/dist/services/artifacts/artifact-util.js.map +1 -1
- package/dist/services/artifacts/json/artifact-v2-hashes.json +0 -65
- package/dist/services/dop/core/artifacts.d.ts +3 -3
- package/dist/services/dop/core/artifacts.js +6 -8
- package/dist/services/dop/core/artifacts.js.map +1 -1
- package/dist/services/dop/core/engine.d.ts +2 -2
- package/dist/services/dop/core/engine.js +13 -16
- package/dist/services/dop/core/engine.js.map +1 -1
- package/dist/services/dop/core/prover.d.ts +1 -1
- package/dist/services/dop/core/prover.js +2 -2
- package/dist/services/dop/core/prover.js.map +1 -1
- package/dist/services/dop/core/providers.d.ts +3 -3
- package/dist/services/dop/core/providers.js +16 -16
- package/dist/services/dop/core/providers.js.map +1 -1
- package/dist/services/dop/core/shields.d.ts +1 -1
- package/dist/services/dop/core/shields.js +2 -2
- package/dist/services/dop/core/shields.js.map +1 -1
- package/dist/services/dop/history/transaction-history.d.ts +2 -2
- package/dist/services/dop/history/transaction-history.js +14 -14
- package/dist/services/dop/history/transaction-history.js.map +1 -1
- package/dist/services/dop/process/extract-first-note.d.ts +2 -2
- package/dist/services/dop/process/extract-first-note.js +15 -15
- package/dist/services/dop/process/extract-first-note.js.map +1 -1
- package/dist/services/dop/quick-sync/empty-events.d.ts +1 -1
- package/dist/services/dop/quick-sync/empty-events.js.map +1 -1
- package/dist/services/dop/quick-sync/graph-type-formatters.d.ts +1 -1
- package/dist/services/dop/quick-sync/graph-type-formatters.js +15 -15
- package/dist/services/dop/quick-sync/graph-type-formatters.js.map +1 -1
- package/dist/services/dop/quick-sync/graphql/index.js +5 -5
- package/dist/services/dop/quick-sync/graphql/index.js.map +1 -1
- package/dist/services/dop/quick-sync/quick-sync-graph.d.ts +1 -1
- package/dist/services/dop/quick-sync/quick-sync-graph.js +17 -17
- package/dist/services/dop/quick-sync/quick-sync-graph.js.map +1 -1
- package/dist/services/dop/util/bytes.d.ts +1 -1
- package/dist/services/dop/util/bytes.js +7 -7
- package/dist/services/dop/util/bytes.js.map +1 -1
- package/dist/services/dop/util/commitment.d.ts +2 -1
- package/dist/services/dop/util/commitment.js +4 -5
- package/dist/services/dop/util/commitment.js.map +1 -1
- package/dist/services/dop/util/crypto.d.ts +2 -2
- package/dist/services/dop/util/crypto.js +15 -15
- package/dist/services/dop/util/crypto.js.map +1 -1
- package/dist/services/dop/util/db.d.ts +1 -1
- package/dist/services/dop/util/db.js +2 -2
- package/dist/services/dop/util/db.js.map +1 -1
- package/dist/services/dop/wallets/balance-update.d.ts +2 -2
- package/dist/services/dop/wallets/balance-update.js +6 -6
- package/dist/services/dop/wallets/balance-update.js.map +1 -1
- package/dist/services/dop/wallets/balances.d.ts +2 -2
- package/dist/services/dop/wallets/balances.js.map +1 -1
- package/dist/services/dop/wallets/wallets.d.ts +2 -4
- package/dist/services/dop/wallets/wallets.js +12 -27
- package/dist/services/dop/wallets/wallets.js.map +1 -1
- package/dist/services/ethers/ethers-util.js +2 -2
- package/dist/services/ethers/ethers-util.js.map +1 -1
- package/dist/services/transactions/proof-cache.d.ts +1 -1
- package/dist/services/transactions/proof-cache.js +16 -16
- package/dist/services/transactions/proof-cache.js.map +1 -1
- package/dist/services/transactions/tx-cross-contract-calls.d.ts +4 -2
- package/dist/services/transactions/tx-cross-contract-calls.js +117 -269
- package/dist/services/transactions/tx-cross-contract-calls.js.map +1 -1
- package/dist/services/transactions/tx-gas-details.d.ts +1 -1
- package/dist/services/transactions/tx-gas-details.js +24 -36
- package/dist/services/transactions/tx-gas-details.js.map +1 -1
- package/dist/services/transactions/tx-gas-relayer-fee-estimator.d.ts +4 -1
- package/dist/services/transactions/tx-gas-relayer-fee-estimator.js +88 -187
- package/dist/services/transactions/tx-gas-relayer-fee-estimator.js.map +1 -1
- package/dist/services/transactions/tx-generator.d.ts +5 -4
- package/dist/services/transactions/tx-generator.js +42 -71
- package/dist/services/transactions/tx-generator.js.map +1 -1
- package/dist/services/transactions/tx-notes.d.ts +2 -2
- package/dist/services/transactions/tx-notes.js +13 -13
- package/dist/services/transactions/tx-notes.js.map +1 -1
- package/dist/services/transactions/tx-nullifiers.d.ts +1 -1
- package/dist/services/transactions/tx-nullifiers.js.map +1 -1
- package/dist/services/transactions/tx-proof-transfer.d.ts +3 -4
- package/dist/services/transactions/tx-proof-transfer.js +19 -13
- package/dist/services/transactions/tx-proof-transfer.js.map +1 -1
- package/dist/services/transactions/tx-proof-unshield.d.ts +4 -3
- package/dist/services/transactions/tx-proof-unshield.js +87 -146
- package/dist/services/transactions/tx-proof-unshield.js.map +1 -1
- package/dist/services/transactions/tx-shield-base-token.d.ts +2 -2
- package/dist/services/transactions/tx-shield-base-token.js +10 -13
- package/dist/services/transactions/tx-shield-base-token.js.map +1 -1
- package/dist/services/transactions/tx-shield.d.ts +1 -1
- package/dist/services/transactions/tx-shield.js +12 -16
- package/dist/services/transactions/tx-shield.js.map +1 -1
- package/dist/services/transactions/tx-transfer.d.ts +2 -1
- package/dist/services/transactions/tx-transfer.js +16 -55
- package/dist/services/transactions/tx-transfer.js.map +1 -1
- package/dist/services/transactions/tx-unshield.d.ts +3 -1
- package/dist/services/transactions/tx-unshield.js +40 -119
- package/dist/services/transactions/tx-unshield.js.map +1 -1
- package/dist/utils/blocked-address.js +3 -3
- package/dist/utils/blocked-address.js.map +1 -1
- package/dist/utils/error.js +2 -2
- package/dist/utils/error.js.map +1 -1
- package/dist/utils/gas-price.d.ts +1 -1
- package/dist/utils/gas-price.js +13 -13
- package/dist/utils/gas-price.js.map +1 -1
- package/package.json +3 -3
package/README.md
CHANGED
|
@@ -4,7 +4,7 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
|
4
4
|
};
|
|
5
5
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
6
|
exports.ArtifactDownloader = void 0;
|
|
7
|
-
const
|
|
7
|
+
const dop_sharedmodel_1 = require("dop-sharedmodel");
|
|
8
8
|
const axios_1 = __importDefault(require("axios"));
|
|
9
9
|
const artifact_util_1 = require("./artifact-util");
|
|
10
10
|
const error_1 = require("../../utils/error");
|
|
@@ -14,18 +14,18 @@ class ArtifactDownloader {
|
|
|
14
14
|
constructor(artifactStore, useNativeArtifacts) {
|
|
15
15
|
this.downloadArtifacts = async (artifactVariantString) => {
|
|
16
16
|
(0, logger_1.sendMessage)(`Downloading artifacts: ${artifactVariantString}`);
|
|
17
|
-
const [vkeyPath, zkeyPath, wasmOrDatPath] = await (0,
|
|
18
|
-
this.downloadArtifact(
|
|
19
|
-
this.downloadArtifact(
|
|
20
|
-
this.downloadArtifact(this.useNativeArtifacts ?
|
|
17
|
+
const [vkeyPath, zkeyPath, wasmOrDatPath] = await (0, dop_sharedmodel_1.promiseTimeout)(Promise.all([
|
|
18
|
+
this.downloadArtifact(dop_sharedmodel_1.ArtifactName.VKEY, artifactVariantString),
|
|
19
|
+
this.downloadArtifact(dop_sharedmodel_1.ArtifactName.ZKEY, artifactVariantString),
|
|
20
|
+
this.downloadArtifact(this.useNativeArtifacts ? dop_sharedmodel_1.ArtifactName.DAT : dop_sharedmodel_1.ArtifactName.WASM, artifactVariantString),
|
|
21
21
|
]), 45000, new Error(`Timed out downloading artifact files for ${artifactVariantString} circuit. Please try again.`));
|
|
22
|
-
if (!(0,
|
|
22
|
+
if (!(0, dop_sharedmodel_1.isDefined)(vkeyPath)) {
|
|
23
23
|
throw new Error('Could not download vkey artifact.');
|
|
24
24
|
}
|
|
25
|
-
if (!(0,
|
|
25
|
+
if (!(0, dop_sharedmodel_1.isDefined)(zkeyPath)) {
|
|
26
26
|
throw new Error('Could not download zkey artifact.');
|
|
27
27
|
}
|
|
28
|
-
if (!(0,
|
|
28
|
+
if (!(0, dop_sharedmodel_1.isDefined)(wasmOrDatPath)) {
|
|
29
29
|
throw new Error(this.useNativeArtifacts
|
|
30
30
|
? 'Could not download dat artifact.'
|
|
31
31
|
: 'Could not download wasm artifact.');
|
|
@@ -75,13 +75,13 @@ class ArtifactDownloader {
|
|
|
75
75
|
this.getDownloadedArtifacts = async (artifactVariantString) => {
|
|
76
76
|
const artifactDownloadsPaths = (0, artifact_util_1.getArtifactDownloadsPaths)(artifactVariantString);
|
|
77
77
|
const [vkeyString, zkeyBuffer, datBuffer, wasmBuffer] = await Promise.all([
|
|
78
|
-
this.getDownloadedArtifact(artifactDownloadsPaths[
|
|
79
|
-
this.getDownloadedArtifact(artifactDownloadsPaths[
|
|
78
|
+
this.getDownloadedArtifact(artifactDownloadsPaths[dop_sharedmodel_1.ArtifactName.VKEY]),
|
|
79
|
+
this.getDownloadedArtifact(artifactDownloadsPaths[dop_sharedmodel_1.ArtifactName.ZKEY]),
|
|
80
80
|
this.useNativeArtifacts
|
|
81
|
-
? this.getDownloadedArtifact(artifactDownloadsPaths[
|
|
81
|
+
? this.getDownloadedArtifact(artifactDownloadsPaths[dop_sharedmodel_1.ArtifactName.DAT])
|
|
82
82
|
: Promise.resolve(undefined),
|
|
83
83
|
!this.useNativeArtifacts
|
|
84
|
-
? this.getDownloadedArtifact(artifactDownloadsPaths[
|
|
84
|
+
? this.getDownloadedArtifact(artifactDownloadsPaths[dop_sharedmodel_1.ArtifactName.WASM])
|
|
85
85
|
: Promise.resolve(undefined),
|
|
86
86
|
]);
|
|
87
87
|
if (vkeyString == null) {
|
|
@@ -110,21 +110,21 @@ class ArtifactDownloader {
|
|
|
110
110
|
exports.ArtifactDownloader = ArtifactDownloader;
|
|
111
111
|
ArtifactDownloader.getArtifactData = (data, artifactName) => {
|
|
112
112
|
switch (artifactName) {
|
|
113
|
-
case
|
|
113
|
+
case dop_sharedmodel_1.ArtifactName.VKEY:
|
|
114
114
|
return data;
|
|
115
|
-
case
|
|
116
|
-
case
|
|
117
|
-
case
|
|
115
|
+
case dop_sharedmodel_1.ArtifactName.ZKEY:
|
|
116
|
+
case dop_sharedmodel_1.ArtifactName.DAT:
|
|
117
|
+
case dop_sharedmodel_1.ArtifactName.WASM:
|
|
118
118
|
return (0, artifact_util_1.decompressArtifact)(data);
|
|
119
119
|
}
|
|
120
120
|
};
|
|
121
121
|
ArtifactDownloader.artifactResponseType = (artifactName) => {
|
|
122
122
|
switch (artifactName) {
|
|
123
|
-
case
|
|
123
|
+
case dop_sharedmodel_1.ArtifactName.VKEY:
|
|
124
124
|
return 'text';
|
|
125
|
-
case
|
|
126
|
-
case
|
|
127
|
-
case
|
|
125
|
+
case dop_sharedmodel_1.ArtifactName.ZKEY:
|
|
126
|
+
case dop_sharedmodel_1.ArtifactName.DAT:
|
|
127
|
+
case dop_sharedmodel_1.ArtifactName.WASM:
|
|
128
128
|
return 'arraybuffer';
|
|
129
129
|
}
|
|
130
130
|
};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"artifact-downloader.js","sourceRoot":"","sources":["../../../src/services/artifacts/artifact-downloader.ts"],"names":[],"mappings":"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","sourcesContent":["import {\n Artifact,\n ArtifactName,\n isDefined,\n promiseTimeout,\n} from 'dop-sharedmodel-v5';\nimport axios, { ResponseType } from 'axios';\nimport {\n artifactDownloadsDir,\n artifactDownloadsPath,\n decompressArtifact,\n getArtifactDownloadsPaths,\n getArtifactUrl,\n} from './artifact-util';\nimport { ArtifactStore } from './artifact-store';\nimport { reportAndSanitizeError } from '../../utils/error';\nimport { sendMessage } from '../../utils/logger';\nimport { validateArtifactDownload } from './artifact-hash';\n\nexport class ArtifactDownloader {\n private artifactStore: ArtifactStore;\n private useNativeArtifacts: boolean;\n\n constructor(artifactStore: ArtifactStore, useNativeArtifacts: boolean) {\n this.artifactStore = artifactStore;\n this.useNativeArtifacts = useNativeArtifacts;\n }\n\n downloadArtifacts = async (artifactVariantString: string): Promise<void> => {\n sendMessage(`Downloading artifacts: ${artifactVariantString}`);\n\n const [vkeyPath, zkeyPath, wasmOrDatPath] = await promiseTimeout(\n Promise.all([\n this.downloadArtifact(ArtifactName.VKEY, artifactVariantString),\n this.downloadArtifact(ArtifactName.ZKEY, artifactVariantString),\n this.downloadArtifact(\n this.useNativeArtifacts ? ArtifactName.DAT : ArtifactName.WASM,\n artifactVariantString,\n ),\n ]),\n 45000,\n new Error(\n `Timed out downloading artifact files for ${artifactVariantString} circuit. Please try again.`,\n ),\n );\n\n if (!isDefined(vkeyPath)) {\n throw new Error('Could not download vkey artifact.');\n }\n if (!isDefined(zkeyPath)) {\n throw new Error('Could not download zkey artifact.');\n }\n if (!isDefined(wasmOrDatPath)) {\n throw new Error(\n this.useNativeArtifacts\n ? 'Could not download dat artifact.'\n : 'Could not download wasm artifact.',\n );\n }\n };\n\n private downloadArtifact = async (\n artifactName: ArtifactName,\n artifactVariantString: string,\n ): Promise<string | undefined> => {\n const path = artifactDownloadsPath(artifactName, artifactVariantString);\n if (await this.artifactStore.exists(path)) {\n return path;\n }\n try {\n const url = getArtifactUrl(artifactName, artifactVariantString);\n\n const result = await axios.get(url, {\n method: 'GET',\n responseType: ArtifactDownloader.artifactResponseType(artifactName),\n });\n const data: ArrayBuffer | Buffer | object = result.data;\n\n // NodeJS downloads as Buffer.\n // Browser downloads as ArrayBuffer.\n // Both will validate with the same hash.\n const dataFormatted: ArrayBuffer | Buffer | string =\n data instanceof ArrayBuffer || data instanceof Buffer\n ? data\n : JSON.stringify(data);\n\n const decompressedData = ArtifactDownloader.getArtifactData(\n dataFormatted,\n artifactName,\n );\n\n const isValid = await validateArtifactDownload(\n decompressedData,\n artifactName,\n artifactVariantString,\n );\n if (isValid) {\n await this.artifactStore.store(\n artifactDownloadsDir(artifactVariantString),\n path,\n decompressedData,\n );\n } else {\n throw new Error(\n `Invalid hash for artifact download: ${artifactName} for ${artifactVariantString}.`,\n );\n }\n\n return path;\n } catch (err) {\n throw reportAndSanitizeError(this.downloadArtifact.name, err);\n }\n };\n\n private static getArtifactData = (\n data: string | ArrayBuffer,\n artifactName: ArtifactName,\n ): string | Uint8Array => {\n switch (artifactName) {\n case ArtifactName.VKEY:\n return data as string;\n case ArtifactName.ZKEY:\n case ArtifactName.DAT:\n case ArtifactName.WASM:\n return decompressArtifact(data as ArrayBuffer);\n }\n };\n\n private static artifactResponseType = (\n artifactName: ArtifactName,\n ): ResponseType => {\n switch (artifactName) {\n case ArtifactName.VKEY:\n return 'text';\n case ArtifactName.ZKEY:\n case ArtifactName.DAT:\n case ArtifactName.WASM:\n return 'arraybuffer';\n }\n };\n\n private getDownloadedArtifact = async (\n path: string,\n ): Promise<string | Buffer | null> => {\n try {\n const storedItem = await this.artifactStore.get(path);\n return storedItem;\n } catch (err) {\n return null;\n }\n };\n\n getDownloadedArtifacts = async (\n artifactVariantString: string,\n ): Promise<Artifact> => {\n const artifactDownloadsPaths = getArtifactDownloadsPaths(\n artifactVariantString,\n );\n\n const [vkeyString, zkeyBuffer, datBuffer, wasmBuffer] = await Promise.all([\n this.getDownloadedArtifact(artifactDownloadsPaths[ArtifactName.VKEY]),\n this.getDownloadedArtifact(artifactDownloadsPaths[ArtifactName.ZKEY]),\n this.useNativeArtifacts\n ? this.getDownloadedArtifact(artifactDownloadsPaths[ArtifactName.DAT])\n : Promise.resolve(undefined),\n !this.useNativeArtifacts\n ? this.getDownloadedArtifact(artifactDownloadsPaths[ArtifactName.WASM])\n : Promise.resolve(undefined),\n ]);\n if (vkeyString == null) {\n throw new Error('Could not retrieve vkey artifact.');\n }\n if (zkeyBuffer == null) {\n throw new Error('Could not retrieve zkey artifact.');\n }\n if (this.useNativeArtifacts && datBuffer == null) {\n throw new Error('Could not retrieve dat artifact.');\n }\n if (!this.useNativeArtifacts && wasmBuffer == null) {\n throw new Error('Could not retrieve wasm artifact.');\n }\n\n return {\n vkey: JSON.parse(vkeyString as string),\n zkey: zkeyBuffer as Buffer,\n wasm: wasmBuffer as Buffer | undefined,\n dat: datBuffer as Buffer | undefined,\n };\n };\n}\n"]}
|
|
1
|
+
{"version":3,"file":"artifact-downloader.js","sourceRoot":"","sources":["../../../src/services/artifacts/artifact-downloader.ts"],"names":[],"mappings":"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","sourcesContent":["import {\n Artifact,\n ArtifactName,\n isDefined,\n promiseTimeout,\n} from 'dop-sharedmodel';\nimport axios, { ResponseType } from 'axios';\nimport {\n artifactDownloadsDir,\n artifactDownloadsPath,\n decompressArtifact,\n getArtifactDownloadsPaths,\n getArtifactUrl,\n} from './artifact-util';\nimport { ArtifactStore } from './artifact-store';\nimport { reportAndSanitizeError } from '../../utils/error';\nimport { sendMessage } from '../../utils/logger';\nimport { validateArtifactDownload } from './artifact-hash';\n\nexport class ArtifactDownloader {\n private artifactStore: ArtifactStore;\n private useNativeArtifacts: boolean;\n\n constructor(artifactStore: ArtifactStore, useNativeArtifacts: boolean) {\n this.artifactStore = artifactStore;\n this.useNativeArtifacts = useNativeArtifacts;\n }\n\n downloadArtifacts = async (artifactVariantString: string): Promise<void> => {\n sendMessage(`Downloading artifacts: ${artifactVariantString}`);\n\n const [vkeyPath, zkeyPath, wasmOrDatPath] = await promiseTimeout(\n Promise.all([\n this.downloadArtifact(ArtifactName.VKEY, artifactVariantString),\n this.downloadArtifact(ArtifactName.ZKEY, artifactVariantString),\n this.downloadArtifact(\n this.useNativeArtifacts ? ArtifactName.DAT : ArtifactName.WASM,\n artifactVariantString,\n ),\n ]),\n 45000,\n new Error(\n `Timed out downloading artifact files for ${artifactVariantString} circuit. Please try again.`,\n ),\n );\n\n if (!isDefined(vkeyPath)) {\n throw new Error('Could not download vkey artifact.');\n }\n if (!isDefined(zkeyPath)) {\n throw new Error('Could not download zkey artifact.');\n }\n if (!isDefined(wasmOrDatPath)) {\n throw new Error(\n this.useNativeArtifacts\n ? 'Could not download dat artifact.'\n : 'Could not download wasm artifact.',\n );\n }\n };\n\n private downloadArtifact = async (\n artifactName: ArtifactName,\n artifactVariantString: string,\n ): Promise<string | undefined> => {\n const path = artifactDownloadsPath(artifactName, artifactVariantString);\n if (await this.artifactStore.exists(path)) {\n return path;\n }\n try {\n const url = getArtifactUrl(artifactName, artifactVariantString);\n\n const result = await axios.get(url, {\n method: 'GET',\n responseType: ArtifactDownloader.artifactResponseType(artifactName),\n });\n const data: ArrayBuffer | Buffer | object = result.data;\n\n // NodeJS downloads as Buffer.\n // Browser downloads as ArrayBuffer.\n // Both will validate with the same hash.\n const dataFormatted: ArrayBuffer | Buffer | string =\n data instanceof ArrayBuffer || data instanceof Buffer\n ? data\n : JSON.stringify(data);\n\n const decompressedData = ArtifactDownloader.getArtifactData(\n dataFormatted,\n artifactName,\n );\n\n const isValid = await validateArtifactDownload(\n decompressedData,\n artifactName,\n artifactVariantString,\n );\n if (isValid) {\n await this.artifactStore.store(\n artifactDownloadsDir(artifactVariantString),\n path,\n decompressedData,\n );\n } else {\n throw new Error(\n `Invalid hash for artifact download: ${artifactName} for ${artifactVariantString}.`,\n );\n }\n\n return path;\n } catch (err) {\n throw reportAndSanitizeError(this.downloadArtifact.name, err);\n }\n };\n\n private static getArtifactData = (\n data: string | ArrayBuffer,\n artifactName: ArtifactName,\n ): string | Uint8Array => {\n switch (artifactName) {\n case ArtifactName.VKEY:\n return data as string;\n case ArtifactName.ZKEY:\n case ArtifactName.DAT:\n case ArtifactName.WASM:\n return decompressArtifact(data as ArrayBuffer);\n }\n };\n\n private static artifactResponseType = (\n artifactName: ArtifactName,\n ): ResponseType => {\n switch (artifactName) {\n case ArtifactName.VKEY:\n return 'text';\n case ArtifactName.ZKEY:\n case ArtifactName.DAT:\n case ArtifactName.WASM:\n return 'arraybuffer';\n }\n };\n\n private getDownloadedArtifact = async (\n path: string,\n ): Promise<string | Buffer | null> => {\n try {\n const storedItem = await this.artifactStore.get(path);\n return storedItem;\n } catch (err) {\n return null;\n }\n };\n\n getDownloadedArtifacts = async (\n artifactVariantString: string,\n ): Promise<Artifact> => {\n const artifactDownloadsPaths = getArtifactDownloadsPaths(\n artifactVariantString,\n );\n\n const [vkeyString, zkeyBuffer, datBuffer, wasmBuffer] = await Promise.all([\n this.getDownloadedArtifact(artifactDownloadsPaths[ArtifactName.VKEY]),\n this.getDownloadedArtifact(artifactDownloadsPaths[ArtifactName.ZKEY]),\n this.useNativeArtifacts\n ? this.getDownloadedArtifact(artifactDownloadsPaths[ArtifactName.DAT])\n : Promise.resolve(undefined),\n !this.useNativeArtifacts\n ? this.getDownloadedArtifact(artifactDownloadsPaths[ArtifactName.WASM])\n : Promise.resolve(undefined),\n ]);\n if (vkeyString == null) {\n throw new Error('Could not retrieve vkey artifact.');\n }\n if (zkeyBuffer == null) {\n throw new Error('Could not retrieve zkey artifact.');\n }\n if (this.useNativeArtifacts && datBuffer == null) {\n throw new Error('Could not retrieve dat artifact.');\n }\n if (!this.useNativeArtifacts && wasmBuffer == null) {\n throw new Error('Could not retrieve wasm artifact.');\n }\n\n return {\n vkey: JSON.parse(vkeyString as string),\n zkey: zkeyBuffer as Buffer,\n wasm: wasmBuffer as Buffer | undefined,\n dat: datBuffer as Buffer | undefined,\n };\n };\n}\n"]}
|
|
@@ -1,4 +1,3 @@
|
|
|
1
1
|
/// <reference types="node" />
|
|
2
|
-
|
|
3
|
-
import { ArtifactName } from 'dop-sharedmodel-v5';
|
|
2
|
+
import { ArtifactName } from 'dop-sharedmodel';
|
|
4
3
|
export declare const validateArtifactDownload: (data: Uint8Array | Buffer | string, artifactName: ArtifactName, artifactVariantString: string) => Promise<boolean>;
|
|
@@ -5,17 +5,17 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
|
5
5
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
6
|
exports.validateArtifactDownload = void 0;
|
|
7
7
|
const crypto_1 = require("crypto");
|
|
8
|
-
const
|
|
8
|
+
const dop_sharedmodel_1 = require("dop-sharedmodel");
|
|
9
9
|
const sha256_js_1 = require("ethereum-cryptography/sha256.js");
|
|
10
10
|
const artifact_v2_hashes_json_1 = __importDefault(require("./json/artifact-v2-hashes.json"));
|
|
11
|
-
const
|
|
11
|
+
const dop_engine_1 = require("dop-engine");
|
|
12
12
|
const getExpectedArtifactHash = (artifactName, artifactVariantString) => {
|
|
13
13
|
const hashes = artifact_v2_hashes_json_1.default;
|
|
14
14
|
const variantHashes = hashes[artifactVariantString];
|
|
15
|
-
if (!(0,
|
|
15
|
+
if (!(0, dop_sharedmodel_1.isDefined)(variantHashes)) {
|
|
16
16
|
throw new Error(`No hashes for variant ${artifactName}: ${artifactVariantString}`);
|
|
17
17
|
}
|
|
18
|
-
if (artifactName ===
|
|
18
|
+
if (artifactName === dop_sharedmodel_1.ArtifactName.VKEY) {
|
|
19
19
|
throw new Error(`No artifact hashes for vkey.`);
|
|
20
20
|
}
|
|
21
21
|
const hash = variantHashes[artifactName];
|
|
@@ -31,15 +31,15 @@ const getDataBytes = (data) => {
|
|
|
31
31
|
if (Buffer.isBuffer(data)) {
|
|
32
32
|
return data.buffer;
|
|
33
33
|
}
|
|
34
|
-
return (0,
|
|
34
|
+
return (0, dop_engine_1.hexStringToBytes)(data);
|
|
35
35
|
};
|
|
36
36
|
const validateArtifactDownload = async (data, artifactName, artifactVariantString) => {
|
|
37
|
-
if (artifactName ===
|
|
37
|
+
if (artifactName === dop_sharedmodel_1.ArtifactName.VKEY) {
|
|
38
38
|
return true;
|
|
39
39
|
}
|
|
40
40
|
const dataBytes = getDataBytes(data);
|
|
41
|
-
const hash =
|
|
42
|
-
? (0,
|
|
41
|
+
const hash = dop_engine_1.isReactNative
|
|
42
|
+
? (0, dop_engine_1.hexlify)((0, sha256_js_1.sha256)(dataBytes))
|
|
43
43
|
: (0, crypto_1.createHash)('sha256').update(dataBytes).digest('hex');
|
|
44
44
|
const expectedHash = getExpectedArtifactHash(artifactName, artifactVariantString);
|
|
45
45
|
// if (hash !== expectedHash) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"artifact-hash.js","sourceRoot":"","sources":["../../../src/services/artifacts/artifact-hash.ts"],"names":[],"mappings":";;;;;;AAAA,mCAAoC;AACpC,
|
|
1
|
+
{"version":3,"file":"artifact-hash.js","sourceRoot":"","sources":["../../../src/services/artifacts/artifact-hash.ts"],"names":[],"mappings":";;;;;;AAAA,mCAAoC;AACpC,qDAA0D;AAC1D,+DAAyD;AAEzD,6FAAgE;AAChE,2CAIoB;AAOpB,MAAM,uBAAuB,GAAG,CAC9B,YAA0B,EAC1B,qBAA6B,EACrB,EAAE;IACV,MAAM,MAAM,GAAG,iCAAwC,CAAC;IACxD,MAAM,aAAa,GAAG,MAAM,CAAC,qBAAqB,CAAC,CAAC;IACpD,IAAI,CAAC,IAAA,2BAAS,EAAC,aAAa,CAAC,EAAE;QAC7B,MAAM,IAAI,KAAK,CACb,yBAAyB,YAAY,KAAK,qBAAqB,EAAE,CAClE,CAAC;KACH;IACD,IAAI,YAAY,KAAK,8BAAY,CAAC,IAAI,EAAE;QACtC,MAAM,IAAI,KAAK,CAAC,8BAA8B,CAAC,CAAC;KACjD;IACD,MAAM,IAAI,GAAG,aAAa,CAAC,YAAY,CAAC,CAAC;IACzC,IAAI,CAAC,IAAI,EAAE;QACT,MAAM,IAAI,KAAK,CACb,wBAAwB,YAAY,KAAK,qBAAqB,EAAE,CACjE,CAAC;KACH;IACD,OAAO,IAAI,CAAC;AACd,CAAC,CAAC;AAEF,MAAM,YAAY,GAAG,CAAC,IAAkC,EAAc,EAAE;IACtE,IAAI,IAAI,YAAY,UAAU,EAAE;QAC9B,OAAO,IAAI,CAAC;KACb;IACD,IAAI,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE;QACzB,OAAO,IAAI,CAAC,MAAoB,CAAC;KAClC;IACD,OAAO,IAAA,6BAAgB,EAAC,IAAI,CAAC,CAAC;AAChC,CAAC,CAAC;AAEK,MAAM,wBAAwB,GAAG,KAAK,EAC3C,IAAkC,EAClC,YAA0B,EAC1B,qBAA6B,EACX,EAAE;IACpB,IAAI,YAAY,KAAK,8BAAY,CAAC,IAAI,EAAE;QACtC,OAAO,IAAI,CAAC;KACb;IACD,MAAM,SAAS,GAAG,YAAY,CAAC,IAAI,CAAC,CAAC;IACrC,MAAM,IAAI,GAAG,0BAAa;QACxB,CAAC,CAAC,IAAA,oBAAO,EAAC,IAAA,kBAAM,EAAC,SAAS,CAAC,CAAC;QAC5B,CAAC,CAAC,IAAA,mBAAU,EAAC,QAAQ,CAAC,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;IACzD,MAAM,YAAY,GAAG,uBAAuB,CAC1C,YAAY,EACZ,qBAAqB,CACtB,CAAC;IACF,+BAA+B;IAC/B,sBAAsB;IACtB,sHAAsH;IACtH,OAAO;IACP,IAAI;IACJ,gCAAgC;IAChC,OAAO,IAAI,CAAC;AACd,CAAC,CAAC;AAvBW,QAAA,wBAAwB,4BAuBnC","sourcesContent":["import { createHash } from 'crypto';\nimport { ArtifactName, isDefined } from 'dop-sharedmodel';\nimport { sha256 } from 'ethereum-cryptography/sha256.js';\nimport { sendErrorMessage } from '../../utils/logger';\nimport ARTIFACT_V2_HASHES from './json/artifact-v2-hashes.json';\nimport {\n hexStringToBytes,\n hexlify,\n isReactNative,\n} from 'dop-engine';\n\ntype ArtifactHashesJson = Record<\n string,\n Record<ArtifactName.DAT | ArtifactName.WASM | ArtifactName.ZKEY, string>\n>;\n\nconst getExpectedArtifactHash = (\n artifactName: ArtifactName,\n artifactVariantString: string,\n): string => {\n const hashes = ARTIFACT_V2_HASHES as ArtifactHashesJson;\n const variantHashes = hashes[artifactVariantString];\n if (!isDefined(variantHashes)) {\n throw new Error(\n `No hashes for variant ${artifactName}: ${artifactVariantString}`,\n );\n }\n if (artifactName === ArtifactName.VKEY) {\n throw new Error(`No artifact hashes for vkey.`);\n }\n const hash = variantHashes[artifactName];\n if (!hash) {\n throw new Error(\n `No hash for artifact ${artifactName}: ${artifactVariantString}`,\n );\n }\n return hash;\n};\n\nconst getDataBytes = (data: Uint8Array | Buffer | string): Uint8Array => {\n if (data instanceof Uint8Array) {\n return data;\n }\n if (Buffer.isBuffer(data)) {\n return data.buffer as Uint8Array;\n }\n return hexStringToBytes(data);\n};\n\nexport const validateArtifactDownload = async (\n data: Uint8Array | Buffer | string,\n artifactName: ArtifactName,\n artifactVariantString: string,\n): Promise<boolean> => {\n if (artifactName === ArtifactName.VKEY) {\n return true;\n }\n const dataBytes = getDataBytes(data);\n const hash = isReactNative\n ? hexlify(sha256(dataBytes))\n : createHash('sha256').update(dataBytes).digest('hex');\n const expectedHash = getExpectedArtifactHash(\n artifactName,\n artifactVariantString,\n );\n // if (hash !== expectedHash) {\n // sendErrorMessage(\n // `Validate artifact blob for ${artifactName}: ${artifactVariantString}. Got ${hash}, expected ${expectedHash}.`,\n // );\n // }\n // return hash === expectedHash;\n return true;\n};\n"]}
|
|
@@ -1,5 +1,4 @@
|
|
|
1
1
|
/// <reference types="node" />
|
|
2
|
-
/// <reference types="node" />
|
|
3
2
|
type GetArtifact = (path: string) => Promise<string | Buffer | null>;
|
|
4
3
|
type StoreArtifact = (dir: string, path: string, item: string | Uint8Array) => Promise<void>;
|
|
5
4
|
type ArtifactExists = (path: string) => Promise<boolean>;
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { ArtifactName, ArtifactMapping } from 'dop-sharedmodel
|
|
1
|
+
import { ArtifactName, ArtifactMapping } from 'dop-sharedmodel';
|
|
2
2
|
export declare const artifactDownloadsDir: (artifactVariantString: string) => string;
|
|
3
3
|
export declare const getArtifactVariantString: (nullifiers: number, commitments: number) => string;
|
|
4
4
|
export declare const artifactDownloadsPath: (artifactName: ArtifactName, artifactVariantString: string) => string;
|
|
@@ -4,19 +4,17 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
|
4
4
|
};
|
|
5
5
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
6
|
exports.getArtifactUrl = exports.decompressArtifact = exports.getArtifactDownloadsPaths = exports.artifactDownloadsPath = exports.getArtifactVariantString = exports.artifactDownloadsDir = void 0;
|
|
7
|
-
const
|
|
7
|
+
const dop_sharedmodel_1 = require("dop-sharedmodel");
|
|
8
8
|
const decompress_1 = __importDefault(require("brotli/decompress"));
|
|
9
|
+
const IPFS_GATEWAY = 'https://ipfs-lb.com';
|
|
9
10
|
// const IPFS_GATEWAY = 'https://ipfs-lb.com';
|
|
10
|
-
// const IPFS_GATEWAY = 'https://ipfs-lb.com';
|
|
11
|
-
const IPFS_GATEWAY = 'https://purple-abstract-dingo-439.mypinata.cloud';
|
|
12
11
|
// https://ipfs-lb.com/ipfs/QmPyk6hsbphY9hqBYzn1CPumAToLvSJ3zeQQVjZmicT6wQ/
|
|
13
12
|
// const MASTER_IPFS_HASH_ARTIFACTS = 'QmeBrG7pii1qTqsn7rusvDiqXopHPjCT9gR4PsmW7wXqZq';
|
|
14
13
|
// const MASTER_IPFS_HASH_ARTIFACTS = 'QmYsMzH1PkC8eQq8nZthZb4us6C9M2JYNjhBspUPHjpkdn';
|
|
15
14
|
// const MASTER_IPFS_HASH_ARTIFACTS = 'QmNqY8bHBEHgj96GSU1eyMtyZo1z5yTaM7yjQ7F1TbKE1W';
|
|
16
15
|
// const MASTER_IPFS_HASH_ARTIFACTS = 'QmX6t13wppf5pUobRpmwwnyGeSHux7ecTuoQXer376hips';
|
|
17
16
|
// const MASTER_IPFS_HASH_ARTIFACTS = 'Qmba1JgVSQDZKUWUi6DUs9ekqo2Ta1hN3moxC2Na1eAJyJ';
|
|
18
|
-
|
|
19
|
-
const MASTER_IPFS_HASH_ARTIFACTS = 'QmPKbQmGt17uic8xJLdA4wXSAZwSM4Aeg6dgqLohWrqB2Q';
|
|
17
|
+
const MASTER_IPFS_HASH_ARTIFACTS = 'QmPyk6hsbphY9hqBYzn1CPumAToLvSJ3zeQQVjZmicT6wQ';
|
|
20
18
|
// https://purple-abstract-dingo-439.mypinata.cloud/ipfs/Qmba1JgVSQDZKUWUi6DUs9ekqo2Ta1hN3moxC2Na1eAJyJ/
|
|
21
19
|
// return `https://purple-abstract-dingo-439.mypinata.cloud/ipfs/QmPyk6hsbphY9hqBYzn1CPumAToLvSJ3zeQQVjZmicT6wQ/${artifactFilepath}`
|
|
22
20
|
// QmRJrPzD2hUmsWr7fHLsrQAJZm5J1xwji1vE2u4VFgmQcx
|
|
@@ -25,28 +23,28 @@ const artifactDownloadsDir = (artifactVariantString) => {
|
|
|
25
23
|
};
|
|
26
24
|
exports.artifactDownloadsDir = artifactDownloadsDir;
|
|
27
25
|
const getArtifactVariantString = (nullifiers, commitments) => {
|
|
28
|
-
return `${nullifiers}
|
|
26
|
+
return `${nullifiers}x${commitments}`;
|
|
29
27
|
};
|
|
30
28
|
exports.getArtifactVariantString = getArtifactVariantString;
|
|
31
29
|
const artifactDownloadsPath = (artifactName, artifactVariantString) => {
|
|
32
30
|
switch (artifactName) {
|
|
33
|
-
case
|
|
31
|
+
case dop_sharedmodel_1.ArtifactName.WASM:
|
|
34
32
|
return `${(0, exports.artifactDownloadsDir)(artifactVariantString)}/wasm`;
|
|
35
|
-
case
|
|
33
|
+
case dop_sharedmodel_1.ArtifactName.ZKEY:
|
|
36
34
|
return `${(0, exports.artifactDownloadsDir)(artifactVariantString)}/zkey`;
|
|
37
|
-
case
|
|
35
|
+
case dop_sharedmodel_1.ArtifactName.VKEY:
|
|
38
36
|
return `${(0, exports.artifactDownloadsDir)(artifactVariantString)}/vkey.json`;
|
|
39
|
-
case
|
|
37
|
+
case dop_sharedmodel_1.ArtifactName.DAT:
|
|
40
38
|
return `${(0, exports.artifactDownloadsDir)(artifactVariantString)}/dat`;
|
|
41
39
|
}
|
|
42
40
|
};
|
|
43
41
|
exports.artifactDownloadsPath = artifactDownloadsPath;
|
|
44
42
|
const getArtifactDownloadsPaths = (artifactVariantString) => {
|
|
45
43
|
return {
|
|
46
|
-
[
|
|
47
|
-
[
|
|
48
|
-
[
|
|
49
|
-
[
|
|
44
|
+
[dop_sharedmodel_1.ArtifactName.ZKEY]: (0, exports.artifactDownloadsPath)(dop_sharedmodel_1.ArtifactName.ZKEY, artifactVariantString),
|
|
45
|
+
[dop_sharedmodel_1.ArtifactName.WASM]: (0, exports.artifactDownloadsPath)(dop_sharedmodel_1.ArtifactName.WASM, artifactVariantString),
|
|
46
|
+
[dop_sharedmodel_1.ArtifactName.VKEY]: (0, exports.artifactDownloadsPath)(dop_sharedmodel_1.ArtifactName.VKEY, artifactVariantString),
|
|
47
|
+
[dop_sharedmodel_1.ArtifactName.DAT]: (0, exports.artifactDownloadsPath)(dop_sharedmodel_1.ArtifactName.DAT, artifactVariantString),
|
|
50
48
|
};
|
|
51
49
|
};
|
|
52
50
|
exports.getArtifactDownloadsPaths = getArtifactDownloadsPaths;
|
|
@@ -57,27 +55,21 @@ const decompressArtifact = (arrayBuffer) => {
|
|
|
57
55
|
exports.decompressArtifact = decompressArtifact;
|
|
58
56
|
const getArtifactIPFSFilepath = (artifactName, artifactVariantString) => {
|
|
59
57
|
switch (artifactName) {
|
|
60
|
-
case
|
|
58
|
+
case dop_sharedmodel_1.ArtifactName.ZKEY:
|
|
61
59
|
return `${artifactVariantString}/zkey.br`;
|
|
62
|
-
case
|
|
60
|
+
case dop_sharedmodel_1.ArtifactName.WASM:
|
|
63
61
|
return `prover/snarkjs/${artifactVariantString}.wasm.br`;
|
|
64
|
-
case
|
|
62
|
+
case dop_sharedmodel_1.ArtifactName.VKEY:
|
|
65
63
|
return `${artifactVariantString}/vkey.json`;
|
|
66
|
-
case
|
|
64
|
+
case dop_sharedmodel_1.ArtifactName.DAT:
|
|
67
65
|
return `prover/native/${artifactVariantString}.dat.br`;
|
|
68
66
|
}
|
|
69
67
|
throw new Error('Invalid artifact.');
|
|
70
68
|
};
|
|
71
69
|
const getArtifactUrl = (artifactName, artifactVariantString) => {
|
|
72
70
|
const artifactFilepath = getArtifactIPFSFilepath(artifactName, artifactVariantString);
|
|
73
|
-
return `${IPFS_GATEWAY}/ipfs/${MASTER_IPFS_HASH_ARTIFACTS}/${artifactFilepath}`;
|
|
74
|
-
|
|
75
|
-
// return `https://purple-abstract-dingo-439.mypinata.cloud/ipfs/QmNT44msrqeVj1WHFkWxi9Vg6KRoG573AVDBEsKmrSDyb5/${artifactFilepath}`
|
|
76
|
-
// https://gateway.pinata.cloud/ipfs/QmVrZ9TtZt4ZNuV4RgDqt7M7ZrsZnDUEp8QzwjLLXCp6ye/
|
|
77
|
-
// return `https://gateway.pinata.cloud/ipfs/QmVrZ9TtZt4ZNuV4RgDqt7M7ZrsZnDUEp8QzwjLLXCp6ye/${artifactFilepath}`
|
|
78
|
-
// return `https://ipfs.tizzew.com/ipfs/Qma11AJv58vSBSzE3fhUYEVxfJZCAjkD1ixLtMsGFgPUXp/${artifactFilepath}`
|
|
79
|
-
// return `https://purple-abstract-dingo-439.mypinata.cloud/ipfs/QmeL38q7wK7W1nDajhS5zkZdqyrJ5HmiR477E3yrn6S8DJ/${artifactFilepath}`
|
|
80
|
-
// return `https://purple-abstract-dingo-439.mypinata.cloud/ipfs/Qma1ATexs5LxAyjN52FFFxGwxgp5swB9GAt54kyCt39Xgk/${artifactFilepath}`
|
|
71
|
+
// return `${IPFS_GATEWAY}/ipfs/${MASTER_IPFS_HASH_ARTIFACTS}/${artifactFilepath}`;
|
|
72
|
+
return `https://purple-abstract-dingo-439.mypinata.cloud/ipfs/QmPyk6hsbphY9hqBYzn1CPumAToLvSJ3zeQQVjZmicT6wQ/${artifactFilepath}`;
|
|
81
73
|
};
|
|
82
74
|
exports.getArtifactUrl = getArtifactUrl;
|
|
83
75
|
//# sourceMappingURL=artifact-util.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"artifact-util.js","sourceRoot":"","sources":["../../../src/services/artifacts/artifact-util.ts"],"names":[],"mappings":";;;;;;AAAA,
|
|
1
|
+
{"version":3,"file":"artifact-util.js","sourceRoot":"","sources":["../../../src/services/artifacts/artifact-util.ts"],"names":[],"mappings":"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","sourcesContent":["import {\n ArtifactName,\n ArtifactMapping,\n} from 'dop-sharedmodel';\nimport brotliDecompress from 'brotli/decompress';\n\nconst IPFS_GATEWAY = 'https://ipfs-lb.com';\n// const IPFS_GATEWAY = 'https://ipfs-lb.com';\n\n// https://ipfs-lb.com/ipfs/QmPyk6hsbphY9hqBYzn1CPumAToLvSJ3zeQQVjZmicT6wQ/\n\n// const MASTER_IPFS_HASH_ARTIFACTS = 'QmeBrG7pii1qTqsn7rusvDiqXopHPjCT9gR4PsmW7wXqZq';\n// const MASTER_IPFS_HASH_ARTIFACTS = 'QmYsMzH1PkC8eQq8nZthZb4us6C9M2JYNjhBspUPHjpkdn';\n// const MASTER_IPFS_HASH_ARTIFACTS = 'QmNqY8bHBEHgj96GSU1eyMtyZo1z5yTaM7yjQ7F1TbKE1W';\n// const MASTER_IPFS_HASH_ARTIFACTS = 'QmX6t13wppf5pUobRpmwwnyGeSHux7ecTuoQXer376hips';\n// const MASTER_IPFS_HASH_ARTIFACTS = 'Qmba1JgVSQDZKUWUi6DUs9ekqo2Ta1hN3moxC2Na1eAJyJ';\nconst MASTER_IPFS_HASH_ARTIFACTS = 'QmPyk6hsbphY9hqBYzn1CPumAToLvSJ3zeQQVjZmicT6wQ';\n\n\n// https://purple-abstract-dingo-439.mypinata.cloud/ipfs/Qmba1JgVSQDZKUWUi6DUs9ekqo2Ta1hN3moxC2Na1eAJyJ/\n// return `https://purple-abstract-dingo-439.mypinata.cloud/ipfs/QmPyk6hsbphY9hqBYzn1CPumAToLvSJ3zeQQVjZmicT6wQ/${artifactFilepath}`\n\n// QmRJrPzD2hUmsWr7fHLsrQAJZm5J1xwji1vE2u4VFgmQcx\n\nexport const artifactDownloadsDir = (artifactVariantString: string) => {\n return `artifacts-v2.1/${artifactVariantString}`;\n};\n\nexport const getArtifactVariantString = (\n nullifiers: number,\n commitments: number,\n) => {\n return `${nullifiers}x${commitments}`;\n};\n\nexport const artifactDownloadsPath = (\n artifactName: ArtifactName,\n artifactVariantString: string,\n): string => {\n switch (artifactName) {\n case ArtifactName.WASM:\n return `${artifactDownloadsDir(artifactVariantString)}/wasm`;\n case ArtifactName.ZKEY:\n return `${artifactDownloadsDir(artifactVariantString)}/zkey`;\n case ArtifactName.VKEY:\n return `${artifactDownloadsDir(artifactVariantString)}/vkey.json`;\n case ArtifactName.DAT:\n return `${artifactDownloadsDir(artifactVariantString)}/dat`;\n }\n};\n\nexport const getArtifactDownloadsPaths = (\n artifactVariantString: string,\n): ArtifactMapping => {\n return {\n [ArtifactName.ZKEY]: artifactDownloadsPath(\n ArtifactName.ZKEY,\n artifactVariantString,\n ),\n [ArtifactName.WASM]: artifactDownloadsPath(\n ArtifactName.WASM,\n artifactVariantString,\n ),\n [ArtifactName.VKEY]: artifactDownloadsPath(\n ArtifactName.VKEY,\n artifactVariantString,\n ),\n [ArtifactName.DAT]: artifactDownloadsPath(\n ArtifactName.DAT,\n artifactVariantString,\n ),\n };\n};\n\nexport const decompressArtifact = (arrayBuffer: ArrayBuffer): Uint8Array => {\n const decompress = brotliDecompress as (input: Uint8Array) => Uint8Array;\n return decompress(Buffer.from(arrayBuffer));\n};\n\nconst getArtifactIPFSFilepath = (\n artifactName: ArtifactName,\n artifactVariantString: string,\n) => {\n switch (artifactName) {\n case ArtifactName.ZKEY:\n return `${artifactVariantString}/zkey.br`;\n case ArtifactName.WASM:\n return `prover/snarkjs/${artifactVariantString}.wasm.br`;\n case ArtifactName.VKEY:\n return `${artifactVariantString}/vkey.json`;\n case ArtifactName.DAT:\n return `prover/native/${artifactVariantString}.dat.br`;\n }\n throw new Error('Invalid artifact.');\n};\n\nexport const getArtifactUrl = (\n artifactName: ArtifactName,\n artifactVariantString: string,\n) => {\n const artifactFilepath = getArtifactIPFSFilepath(\n artifactName,\n artifactVariantString,\n );\n // return `${IPFS_GATEWAY}/ipfs/${MASTER_IPFS_HASH_ARTIFACTS}/${artifactFilepath}`;\nreturn `https://purple-abstract-dingo-439.mypinata.cloud/ipfs/QmPyk6hsbphY9hqBYzn1CPumAToLvSJ3zeQQVjZmicT6wQ/${artifactFilepath}`\n\n};"]}
|
|
@@ -1,69 +1,4 @@
|
|
|
1
1
|
{
|
|
2
|
-
"1x0": {
|
|
3
|
-
"zkey": "f4a6dd3c59690d14d808b9bbe9a182b5a30df3828aadf28dfaaa129faecf2837",
|
|
4
|
-
"wasm": "13624c30f0ff503d638ad5cf42813cf2c305921e0d4dc709923db532b6cc5ed9",
|
|
5
|
-
"dat": "f5242d237381764dd5a20214846dd1c6a515f9eb7aa60a15e851c7ce681e2c62"
|
|
6
|
-
},
|
|
7
|
-
"2x0": {
|
|
8
|
-
"zkey": "f4a6dd3c59690d14d808b9bbe9a182b5a30df3828aadf28dfaaa129faecf2837",
|
|
9
|
-
"wasm": "13624c30f0ff503d638ad5cf42813cf2c305921e0d4dc709923db532b6cc5ed9",
|
|
10
|
-
"dat": "f5242d237381764dd5a20214846dd1c6a515f9eb7aa60a15e851c7ce681e2c62"
|
|
11
|
-
},
|
|
12
|
-
"3x0": {
|
|
13
|
-
"zkey": "f4a6dd3c59690d14d808b9bbe9a182b5a30df3828aadf28dfaaa129faecf2837",
|
|
14
|
-
"wasm": "13624c30f0ff503d638ad5cf42813cf2c305921e0d4dc709923db532b6cc5ed9",
|
|
15
|
-
"dat": "f5242d237381764dd5a20214846dd1c6a515f9eb7aa60a15e851c7ce681e2c62"
|
|
16
|
-
},
|
|
17
|
-
"4x0": {
|
|
18
|
-
"zkey": "f4a6dd3c59690d14d808b9bbe9a182b5a30df3828aadf28dfaaa129faecf2837",
|
|
19
|
-
"wasm": "13624c30f0ff503d638ad5cf42813cf2c305921e0d4dc709923db532b6cc5ed9",
|
|
20
|
-
"dat": "f5242d237381764dd5a20214846dd1c6a515f9eb7aa60a15e851c7ce681e2c62"
|
|
21
|
-
},
|
|
22
|
-
"5x0": {
|
|
23
|
-
"zkey": "f4a6dd3c59690d14d808b9bbe9a182b5a30df3828aadf28dfaaa129faecf2837",
|
|
24
|
-
"wasm": "13624c30f0ff503d638ad5cf42813cf2c305921e0d4dc709923db532b6cc5ed9",
|
|
25
|
-
"dat": "f5242d237381764dd5a20214846dd1c6a515f9eb7aa60a15e851c7ce681e2c62"
|
|
26
|
-
},
|
|
27
|
-
"6x0": {
|
|
28
|
-
"zkey": "f4a6dd3c59690d14d808b9bbe9a182b5a30df3828aadf28dfaaa129faecf2837",
|
|
29
|
-
"wasm": "13624c30f0ff503d638ad5cf42813cf2c305921e0d4dc709923db532b6cc5ed9",
|
|
30
|
-
"dat": "f5242d237381764dd5a20214846dd1c6a515f9eb7aa60a15e851c7ce681e2c62"
|
|
31
|
-
},
|
|
32
|
-
"7x0": {
|
|
33
|
-
"zkey": "f4a6dd3c59690d14d808b9bbe9a182b5a30df3828aadf28dfaaa129faecf2837",
|
|
34
|
-
"wasm": "13624c30f0ff503d638ad5cf42813cf2c305921e0d4dc709923db532b6cc5ed9",
|
|
35
|
-
"dat": "f5242d237381764dd5a20214846dd1c6a515f9eb7aa60a15e851c7ce681e2c62"
|
|
36
|
-
},
|
|
37
|
-
"8x0": {
|
|
38
|
-
"zkey": "f4a6dd3c59690d14d808b9bbe9a182b5a30df3828aadf28dfaaa129faecf2837",
|
|
39
|
-
"wasm": "13624c30f0ff503d638ad5cf42813cf2c305921e0d4dc709923db532b6cc5ed9",
|
|
40
|
-
"dat": "f5242d237381764dd5a20214846dd1c6a515f9eb7aa60a15e851c7ce681e2c62"
|
|
41
|
-
},
|
|
42
|
-
"9x0": {
|
|
43
|
-
"zkey": "f4a6dd3c59690d14d808b9bbe9a182b5a30df3828aadf28dfaaa129faecf2837",
|
|
44
|
-
"wasm": "13624c30f0ff503d638ad5cf42813cf2c305921e0d4dc709923db532b6cc5ed9",
|
|
45
|
-
"dat": "f5242d237381764dd5a20214846dd1c6a515f9eb7aa60a15e851c7ce681e2c62"
|
|
46
|
-
},
|
|
47
|
-
"10x0": {
|
|
48
|
-
"zkey": "f4a6dd3c59690d14d808b9bbe9a182b5a30df3828aadf28dfaaa129faecf2837",
|
|
49
|
-
"wasm": "13624c30f0ff503d638ad5cf42813cf2c305921e0d4dc709923db532b6cc5ed9",
|
|
50
|
-
"dat": "f5242d237381764dd5a20214846dd1c6a515f9eb7aa60a15e851c7ce681e2c62"
|
|
51
|
-
},
|
|
52
|
-
"11x0": {
|
|
53
|
-
"zkey": "f4a6dd3c59690d14d808b9bbe9a182b5a30df3828aadf28dfaaa129faecf2837",
|
|
54
|
-
"wasm": "13624c30f0ff503d638ad5cf42813cf2c305921e0d4dc709923db532b6cc5ed9",
|
|
55
|
-
"dat": "f5242d237381764dd5a20214846dd1c6a515f9eb7aa60a15e851c7ce681e2c62"
|
|
56
|
-
},
|
|
57
|
-
"12x0": {
|
|
58
|
-
"zkey": "f4a6dd3c59690d14d808b9bbe9a182b5a30df3828aadf28dfaaa129faecf2837",
|
|
59
|
-
"wasm": "13624c30f0ff503d638ad5cf42813cf2c305921e0d4dc709923db532b6cc5ed9",
|
|
60
|
-
"dat": "f5242d237381764dd5a20214846dd1c6a515f9eb7aa60a15e851c7ce681e2c62"
|
|
61
|
-
},
|
|
62
|
-
"13x0": {
|
|
63
|
-
"zkey": "f4a6dd3c59690d14d808b9bbe9a182b5a30df3828aadf28dfaaa129faecf2837",
|
|
64
|
-
"wasm": "13624c30f0ff503d638ad5cf42813cf2c305921e0d4dc709923db532b6cc5ed9",
|
|
65
|
-
"dat": "f5242d237381764dd5a20214846dd1c6a515f9eb7aa60a15e851c7ce681e2c62"
|
|
66
|
-
},
|
|
67
2
|
"10x1": {
|
|
68
3
|
"zkey": "f4a6dd3c59690d14d808b9bbe9a182b5a30df3828aadf28dfaaa129faecf2837",
|
|
69
4
|
"wasm": "13624c30f0ff503d638ad5cf42813cf2c305921e0d4dc709923db532b6cc5ed9",
|
|
@@ -1,10 +1,10 @@
|
|
|
1
|
-
import { ArtifactGetter,
|
|
2
|
-
import { Artifact } from 'dop-sharedmodel
|
|
1
|
+
import { ArtifactGetter, PublicInputs } from 'dop-engine';
|
|
2
|
+
import { Artifact } from 'dop-sharedmodel';
|
|
3
3
|
import { ArtifactStore } from '../../artifacts/artifact-store';
|
|
4
4
|
export declare const artifactCache: MapType<Artifact>;
|
|
5
5
|
export declare const setArtifactStore: (store: ArtifactStore) => void;
|
|
6
6
|
export declare const setUseNativeArtifacts: (useNative: boolean) => void;
|
|
7
|
-
export declare const getArtifacts: (inputs:
|
|
7
|
+
export declare const getArtifacts: (inputs: PublicInputs) => Promise<Artifact>;
|
|
8
8
|
export declare const artifactGetterDownloadJustInTime: ArtifactGetter;
|
|
9
9
|
export declare const overrideArtifact: (artifactVariant: string, artifact: Artifact) => void;
|
|
10
10
|
export declare const clearArtifactCache: () => void;
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.clearArtifactCache = exports.overrideArtifact = exports.artifactGetterDownloadJustInTime = exports.getArtifacts = exports.setUseNativeArtifacts = exports.setArtifactStore = exports.artifactCache = void 0;
|
|
4
|
-
const
|
|
4
|
+
const dop_sharedmodel_1 = require("dop-sharedmodel");
|
|
5
5
|
const artifact_downloader_1 = require("../../artifacts/artifact-downloader");
|
|
6
6
|
const artifact_util_1 = require("../../artifacts/artifact-util");
|
|
7
7
|
let artifactStore;
|
|
@@ -17,10 +17,8 @@ const setUseNativeArtifacts = (useNative) => {
|
|
|
17
17
|
exports.setUseNativeArtifacts = setUseNativeArtifacts;
|
|
18
18
|
const getArtifacts = async (inputs) => {
|
|
19
19
|
const nullifiers = inputs.nullifiers.length;
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
// const commitments = inputs.commitmentsOut.length;
|
|
23
|
-
(0, dop_sharedmodel_v5_1.assertArtifactExists)(nullifiers, commitments);
|
|
20
|
+
const commitments = inputs.commitmentsOut.length;
|
|
21
|
+
(0, dop_sharedmodel_1.assertArtifactExists)(nullifiers, commitments);
|
|
24
22
|
if (useNativeArtifacts) {
|
|
25
23
|
if (commitments > 3) {
|
|
26
24
|
// native-prover-small only has INPUTS (1-10) and OUTPUTS (1-3)
|
|
@@ -30,7 +28,7 @@ const getArtifacts = async (inputs) => {
|
|
|
30
28
|
const artifactVariantString = (0, artifact_util_1.getArtifactVariantString)(nullifiers, commitments);
|
|
31
29
|
// Use artifact in cache if available.
|
|
32
30
|
const cachedArtifact = exports.artifactCache[artifactVariantString];
|
|
33
|
-
if ((0,
|
|
31
|
+
if ((0, dop_sharedmodel_1.isDefined)(cachedArtifact)) {
|
|
34
32
|
return cachedArtifact;
|
|
35
33
|
}
|
|
36
34
|
const downloader = new artifact_downloader_1.ArtifactDownloader(artifactStore, useNativeArtifacts);
|
|
@@ -51,7 +49,7 @@ const getArtifacts = async (inputs) => {
|
|
|
51
49
|
};
|
|
52
50
|
exports.getArtifacts = getArtifacts;
|
|
53
51
|
exports.artifactGetterDownloadJustInTime = {
|
|
54
|
-
assertArtifactExists:
|
|
52
|
+
assertArtifactExists: dop_sharedmodel_1.assertArtifactExists,
|
|
55
53
|
getArtifacts: exports.getArtifacts,
|
|
56
54
|
};
|
|
57
55
|
const overrideArtifact = (artifactVariant, artifact) => {
|
|
@@ -60,7 +58,7 @@ const overrideArtifact = (artifactVariant, artifact) => {
|
|
|
60
58
|
exports.overrideArtifact = overrideArtifact;
|
|
61
59
|
const clearArtifactCache = () => {
|
|
62
60
|
for (const key in exports.artifactCache) {
|
|
63
|
-
if ((0,
|
|
61
|
+
if ((0, dop_sharedmodel_1.isDefined)(exports.artifactCache[key])) {
|
|
64
62
|
delete exports.artifactCache[key];
|
|
65
63
|
}
|
|
66
64
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"artifacts.js","sourceRoot":"","sources":["../../../../src/services/dop/core/artifacts.ts"],"names":[],"mappings":";;;AACA,
|
|
1
|
+
{"version":3,"file":"artifacts.js","sourceRoot":"","sources":["../../../../src/services/dop/core/artifacts.ts"],"names":[],"mappings":";;;AACA,qDAIyB;AACzB,6EAAyE;AAEzE,iEAAyE;AAEzE,IAAI,aAA4B,CAAC;AACjC,IAAI,kBAA2B,CAAC;AAEnB,QAAA,aAAa,GAAsB,EAAE,CAAC;AAE5C,MAAM,gBAAgB,GAAG,CAAC,KAAoB,EAAE,EAAE;IACvD,aAAa,GAAG,KAAK,CAAC;AACxB,CAAC,CAAC;AAFW,QAAA,gBAAgB,oBAE3B;AACK,MAAM,qBAAqB,GAAG,CAAC,SAAkB,EAAE,EAAE;IAC1D,kBAAkB,GAAG,SAAS,CAAC;AACjC,CAAC,CAAC;AAFW,QAAA,qBAAqB,yBAEhC;AAEK,MAAM,YAAY,GAAG,KAAK,EAAE,MAAoB,EAAqB,EAAE;IAC5E,MAAM,UAAU,GAAG,MAAM,CAAC,UAAU,CAAC,MAAM,CAAC;IAC5C,MAAM,WAAW,GAAG,MAAM,CAAC,cAAc,CAAC,MAAM,CAAC;IACjD,IAAA,sCAAoB,EAAC,UAAU,EAAE,WAAW,CAAC,CAAC;IAE9C,IAAI,kBAAkB,EAAE;QACtB,IAAI,WAAW,GAAG,CAAC,EAAE;YACnB,+DAA+D;YAC/D,MAAM,IAAI,KAAK,CACb,oGAAoG,UAAU,IAAI,WAAW,GAAG,CACjI,CAAC;SACH;KACF;IAED,MAAM,qBAAqB,GAAG,IAAA,wCAAwB,EACpD,UAAU,EACV,WAAW,CACZ,CAAC;IAEF,sCAAsC;IACtC,MAAM,cAAc,GAAG,qBAAa,CAAC,qBAAqB,CAAC,CAAC;IAC5D,IAAI,IAAA,2BAAS,EAAC,cAAc,CAAC,EAAE;QAC7B,OAAO,cAAc,CAAC;KACvB;IAED,MAAM,UAAU,GAAG,IAAI,wCAAkB,CAAC,aAAa,EAAE,kBAAkB,CAAC,CAAC;IAE7E,kDAAkD;IAClD,IAAI;QACF,MAAM,mBAAmB,GAAG,MAAM,UAAU,CAAC,sBAAsB,CACjE,qBAAqB,CACtB,CAAC;QACF,qBAAa,CAAC,qBAAqB,CAAC,GAAG,mBAAmB,CAAC;QAC3D,OAAO,mBAAmB,CAAC;KAC5B;IAAC,OAAO,GAAG,EAAE;QACZ,uCAAuC;KACxC;IAED,oCAAoC;IACpC,MAAM,UAAU,CAAC,iBAAiB,CAAC,qBAAqB,CAAC,CAAC;IAC1D,MAAM,mBAAmB,GAAG,MAAM,UAAU,CAAC,sBAAsB,CACjE,qBAAqB,CACtB,CAAC;IACF,qBAAa,CAAC,qBAAqB,CAAC,GAAG,mBAAmB,CAAC;IAC3D,OAAO,mBAAmB,CAAC;AAC7B,CAAC,CAAC;AA7CW,QAAA,YAAY,gBA6CvB;AAEW,QAAA,gCAAgC,GAAmB;IAC9D,oBAAoB,EAApB,sCAAoB;IACpB,YAAY,EAAZ,oBAAY;CACb,CAAC;AAEK,MAAM,gBAAgB,GAAG,CAC9B,eAAuB,EACvB,QAAkB,EAClB,EAAE;IACF,qBAAa,CAAC,eAAe,CAAC,GAAG,QAAQ,CAAC;AAC5C,CAAC,CAAC;AALW,QAAA,gBAAgB,oBAK3B;AAEK,MAAM,kBAAkB,GAAG,GAAG,EAAE;IACrC,KAAK,MAAM,GAAG,IAAI,qBAAa,EAAE;QAC/B,IAAI,IAAA,2BAAS,EAAC,qBAAa,CAAC,GAAG,CAAC,CAAC,EAAE;YACjC,OAAO,qBAAa,CAAC,GAAG,CAAC,CAAC;SAC3B;KACF;AACH,CAAC,CAAC;AANW,QAAA,kBAAkB,sBAM7B","sourcesContent":["import { ArtifactGetter, PublicInputs } from 'dop-engine';\nimport {\n Artifact,\n assertArtifactExists,\n isDefined,\n} from 'dop-sharedmodel';\nimport { ArtifactDownloader } from '../../artifacts/artifact-downloader';\nimport { ArtifactStore } from '../../artifacts/artifact-store';\nimport { getArtifactVariantString } from '../../artifacts/artifact-util';\n\nlet artifactStore: ArtifactStore;\nlet useNativeArtifacts: boolean;\n\nexport const artifactCache: MapType<Artifact> = {};\n\nexport const setArtifactStore = (store: ArtifactStore) => {\n artifactStore = store;\n};\nexport const setUseNativeArtifacts = (useNative: boolean) => {\n useNativeArtifacts = useNative;\n};\n\nexport const getArtifacts = async (inputs: PublicInputs): Promise<Artifact> => {\n const nullifiers = inputs.nullifiers.length;\n const commitments = inputs.commitmentsOut.length;\n assertArtifactExists(nullifiers, commitments);\n\n if (useNativeArtifacts) {\n if (commitments > 3) {\n // native-prover-small only has INPUTS (1-10) and OUTPUTS (1-3)\n throw new Error(\n `Native artifacts (small) only support up to 3 circuit outputs. Cannot get artifacts for circuit: ${nullifiers}x${commitments}.`,\n );\n }\n }\n\n const artifactVariantString = getArtifactVariantString(\n nullifiers,\n commitments,\n );\n\n // Use artifact in cache if available.\n const cachedArtifact = artifactCache[artifactVariantString];\n if (isDefined(cachedArtifact)) {\n return cachedArtifact;\n }\n\n const downloader = new ArtifactDownloader(artifactStore, useNativeArtifacts);\n\n // Try to pull previously downloaded from storage.\n try {\n const downloadedArtifacts = await downloader.getDownloadedArtifacts(\n artifactVariantString,\n );\n artifactCache[artifactVariantString] = downloadedArtifacts;\n return downloadedArtifacts;\n } catch (err) {\n // No op. Artifacts not yet downloaded.\n }\n\n // Download anew. Throws upon error.\n await downloader.downloadArtifacts(artifactVariantString);\n const downloadedArtifacts = await downloader.getDownloadedArtifacts(\n artifactVariantString,\n );\n artifactCache[artifactVariantString] = downloadedArtifacts;\n return downloadedArtifacts;\n};\n\nexport const artifactGetterDownloadJustInTime: ArtifactGetter = {\n assertArtifactExists,\n getArtifacts,\n};\n\nexport const overrideArtifact = (\n artifactVariant: string,\n artifact: Artifact,\n) => {\n artifactCache[artifactVariant] = artifact;\n};\n\nexport const clearArtifactCache = () => {\n for (const key in artifactCache) {\n if (isDefined(artifactCache[key])) {\n delete artifactCache[key];\n }\n }\n};\n"]}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import type { AbstractLevelDOWN } from 'abstract-leveldown';
|
|
2
|
-
import { DopEngine, DopWallet, AbstractWallet } from 'dop-engine
|
|
3
|
-
import { MerkletreeScanUpdateEvent } from 'dop-sharedmodel
|
|
2
|
+
import { DopEngine, DopWallet, AbstractWallet } from 'dop-engine';
|
|
3
|
+
import { MerkletreeScanUpdateEvent } from 'dop-sharedmodel';
|
|
4
4
|
import { ArtifactStore } from '../../artifacts/artifact-store';
|
|
5
5
|
export type EngineDebugger = {
|
|
6
6
|
log: (msg: string) => void;
|
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.stopDopEngine = exports.startDopEngine = exports.setOnMerkletreeScanCallback = exports.viewOnlyWalletForID = exports.fullWalletForID = exports.walletForID = exports.getEngine = void 0;
|
|
4
|
-
const
|
|
5
|
-
const
|
|
4
|
+
const dop_engine_1 = require("dop-engine");
|
|
5
|
+
const dop_sharedmodel_1 = require("dop-sharedmodel");
|
|
6
6
|
const logger_1 = require("../../../utils/logger");
|
|
7
7
|
const artifacts_1 = require("./artifacts");
|
|
8
8
|
const error_1 = require("../../../utils/error");
|
|
@@ -25,7 +25,7 @@ const walletForID = (id) => {
|
|
|
25
25
|
exports.walletForID = walletForID;
|
|
26
26
|
const fullWalletForID = (id) => {
|
|
27
27
|
const wallet = (0, exports.walletForID)(id);
|
|
28
|
-
if (!(wallet instanceof
|
|
28
|
+
if (!(wallet instanceof dop_engine_1.DopWallet)) {
|
|
29
29
|
throw new Error('Can not load View-Only wallet.');
|
|
30
30
|
}
|
|
31
31
|
return wallet;
|
|
@@ -33,7 +33,7 @@ const fullWalletForID = (id) => {
|
|
|
33
33
|
exports.fullWalletForID = fullWalletForID;
|
|
34
34
|
const viewOnlyWalletForID = (id) => {
|
|
35
35
|
const wallet = (0, exports.walletForID)(id);
|
|
36
|
-
if (!(wallet instanceof
|
|
36
|
+
if (!(wallet instanceof dop_engine_1.ViewOnlyWallet)) {
|
|
37
37
|
throw new Error('Can only load View-Only wallet.');
|
|
38
38
|
}
|
|
39
39
|
return wallet;
|
|
@@ -47,23 +47,23 @@ const createEngineDebugger = () => {
|
|
|
47
47
|
};
|
|
48
48
|
const setOnMerkletreeScanCallback = (onMerkletreeScanCallback) => {
|
|
49
49
|
const engine = (0, exports.getEngine)();
|
|
50
|
-
engine.on(
|
|
51
|
-
scanStatus:
|
|
50
|
+
engine.on(dop_engine_1.EngineEvent.MerkletreeHistoryScanStarted, ({ chain }) => onMerkletreeScanCallback({
|
|
51
|
+
scanStatus: dop_sharedmodel_1.MerkletreeScanStatus.Started,
|
|
52
52
|
chain,
|
|
53
53
|
progress: 0.0,
|
|
54
54
|
}));
|
|
55
|
-
engine.on(
|
|
56
|
-
scanStatus:
|
|
55
|
+
engine.on(dop_engine_1.EngineEvent.MerkletreeHistoryScanUpdate, ({ chain, progress }) => onMerkletreeScanCallback({
|
|
56
|
+
scanStatus: dop_sharedmodel_1.MerkletreeScanStatus.Updated,
|
|
57
57
|
chain,
|
|
58
58
|
progress,
|
|
59
59
|
}));
|
|
60
|
-
engine.on(
|
|
61
|
-
scanStatus:
|
|
60
|
+
engine.on(dop_engine_1.EngineEvent.MerkletreeHistoryScanComplete, ({ chain }) => onMerkletreeScanCallback({
|
|
61
|
+
scanStatus: dop_sharedmodel_1.MerkletreeScanStatus.Complete,
|
|
62
62
|
chain,
|
|
63
63
|
progress: 1.0,
|
|
64
64
|
}));
|
|
65
|
-
engine.on(
|
|
66
|
-
scanStatus:
|
|
65
|
+
engine.on(dop_engine_1.EngineEvent.MerkletreeHistoryScanIncomplete, ({ chain }) => onMerkletreeScanCallback({
|
|
66
|
+
scanStatus: dop_sharedmodel_1.MerkletreeScanStatus.Incomplete,
|
|
67
67
|
chain,
|
|
68
68
|
progress: 1.0,
|
|
69
69
|
}));
|
|
@@ -83,7 +83,7 @@ const startDopEngine = (walletSource, db, shouldDebug, artifactStore, useNativeA
|
|
|
83
83
|
if (engine)
|
|
84
84
|
return;
|
|
85
85
|
try {
|
|
86
|
-
engine = new
|
|
86
|
+
engine = new dop_engine_1.DopEngine(walletSource, db, artifacts_1.artifactGetterDownloadJustInTime, quick_sync_graph_1.quickSyncGraph, shouldDebug ? createEngineDebugger() : undefined, skipMerkletreeScans);
|
|
87
87
|
(0, artifacts_1.setArtifactStore)(artifactStore);
|
|
88
88
|
(0, artifacts_1.setUseNativeArtifacts)(useNativeArtifacts);
|
|
89
89
|
}
|
|
@@ -97,7 +97,4 @@ const stopDopEngine = async () => {
|
|
|
97
97
|
engine = undefined;
|
|
98
98
|
};
|
|
99
99
|
exports.stopDopEngine = stopDopEngine;
|
|
100
|
-
// 0zk1qy8latj5k07p689yvv7syynynhsqya49fpc7rdxduejcu5kjmgz9pxus3llllllll7y42drr9smwxaxzfu0dhafyn55a9c33tkj2y4sjff7svrcs6djnums8cds
|
|
101
|
-
// 0zk1qy8latj5k07p689yvv7syynynhsqya49fpc7rdxduejcu5kjmgz9pxus3llllllll7y42drr9smwxaxzfu0dhafyn55a9c33tkj2y4sjff7svrcs6djnums8cds
|
|
102
|
-
// 0zk1qyzta4s56qmtuskjsz67rqfdzjudl4kj4rjcd5z69qvytag4hgcraxus3llllllll7dqm9dnmewju0f92s0qsxme2fd3tpvumywc28zszs797jha57jmwclluwl
|
|
103
100
|
//# sourceMappingURL=engine.js.map
|