Skip to content

Commit f5e997d

Browse files
authored
Merge pull request #636 from semaphore-protocol/refactor/download-artifacts
0-dependency script to download SNARK artifacts Former-commit-id: a8322fd
2 parents 3542352 + cb4fe9d commit f5e997d

File tree

7 files changed

+59
-15
lines changed

7 files changed

+59
-15
lines changed

packages/circuits/package.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -30,7 +30,7 @@
3030
"devDependencies": {
3131
"@types/mocha": "^10.0.6",
3232
"@zk-kit/eddsa-poseidon": "0.3.1",
33-
"@zk-kit/imt": "^2.0.0-beta",
33+
"@zk-kit/imt": "^2.0.0-beta.1",
3434
"circomkit": "^0.0.19",
3535
"mocha": "^10.2.0",
3636
"poseidon-lite": "^0.2.0"

packages/data/rollup.config.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -19,7 +19,7 @@ export default {
1919
{ file: pkg.exports.require, format: "cjs", banner, exports: "auto" },
2020
{ file: pkg.exports.default, format: "es", banner }
2121
],
22-
external: Object.keys(pkg.dependencies),
22+
external: [...Object.keys(pkg.dependencies), "ethers/contract", "ethers/constants", "ethers/providers"],
2323
plugins: [
2424
json(),
2525
typescript({ tsconfig: "./build.tsconfig.json", useTsconfigDeclarationDir: true }),

packages/proof/package.json

Lines changed: 1 addition & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -54,9 +54,7 @@
5454
},
5555
"dependencies": {
5656
"@types/snarkjs": "0.7.8",
57-
"download": "8.0.0",
5857
"ethers": "6.10.0",
59-
"snarkjs": "0.7.3",
60-
"tmp": "0.2.1"
58+
"snarkjs": "0.7.3"
6159
}
6260
}

packages/proof/rollup.browser.config.ts

Lines changed: 12 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -23,7 +23,18 @@ export default {
2323
banner
2424
}
2525
],
26-
external: Object.keys(pkg.dependencies),
26+
external: [
27+
...Object.keys(pkg.dependencies),
28+
"node:fs",
29+
"node:fs/promises",
30+
"node:os",
31+
"node:path",
32+
"node:stream",
33+
"node:stream/promises",
34+
"ethers/crypto",
35+
"ethers/utils",
36+
"ethers/abi"
37+
],
2738
plugins: [
2839
alias({
2940
entries: [{ find: "./get-snark-artifacts.node", replacement: "./get-snark-artifacts.browser" }]

packages/proof/rollup.node.config.ts

Lines changed: 12 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -28,7 +28,18 @@ export default {
2828
banner
2929
}
3030
],
31-
external: [...Object.keys(pkg.dependencies), "fs"],
31+
external: [
32+
...Object.keys(pkg.dependencies),
33+
"node:fs",
34+
"node:fs/promises",
35+
"node:os",
36+
"node:path",
37+
"node:stream",
38+
"node:stream/promises",
39+
"ethers/crypto",
40+
"ethers/utils",
41+
"ethers/abi"
42+
],
3243
plugins: [
3344
typescript({
3445
tsconfig: "./build.tsconfig.json",

packages/proof/src/get-snark-artifacts.node.ts

Lines changed: 31 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -1,16 +1,40 @@
11
/* istanbul ignore file */
2-
import download from "download"
3-
import fs from "fs"
4-
import tmp from "tmp"
2+
import { createWriteStream, existsSync, readdirSync } from "node:fs"
3+
import { mkdir } from "node:fs/promises"
4+
import os from "node:os"
5+
import { dirname } from "node:path"
6+
import { Readable } from "node:stream"
7+
import { finished } from "node:stream/promises"
58
import { SnarkArtifacts } from "./types"
69

10+
async function download(url: string, outputPath: string) {
11+
const response = await fetch(url)
12+
13+
if (!response.ok) {
14+
throw new Error(`Failed to fetch ${url}: ${response.statusText}`)
15+
}
16+
17+
// Ensure the directory exists.
18+
const dir = dirname(outputPath)
19+
await mkdir(dir, { recursive: true })
20+
21+
const fileStream = createWriteStream(outputPath)
22+
await finished(Readable.fromWeb(response.body as any).pipe(fileStream))
23+
}
24+
725
export default async function getSnarkArtifacts(treeDepth: number): Promise<SnarkArtifacts> {
826
const tmpDir = "semaphore-proof"
9-
const tmpPath = `${tmp.tmpdir}/${tmpDir}-${treeDepth}`
27+
const tmpPath = `${os.tmpdir()}/${tmpDir}-${treeDepth}`
1028

11-
if (!fs.existsSync(tmpPath) || fs.readdirSync(tmpPath).length !== 2) {
12-
await download(`https://semaphore.cedoor.dev/artifacts/${treeDepth}/semaphore.wasm`, tmpPath)
13-
await download(`https://semaphore.cedoor.dev/artifacts/${treeDepth}/semaphore.zkey`, tmpPath)
29+
if (!existsSync(tmpPath) || readdirSync(tmpPath).length !== 2) {
30+
await download(
31+
`https://semaphore.cedoor.dev/artifacts/${treeDepth}/semaphore.wasm`,
32+
`${tmpPath}/semaphore.wasm`
33+
)
34+
await download(
35+
`https://semaphore.cedoor.dev/artifacts/${treeDepth}/semaphore.zkey`,
36+
`${tmpPath}/semaphore.zkey`
37+
)
1438
}
1539

1640
return {

yarn.lock.REMOVED.git-id

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1 +1 @@
1-
0764f553045d18f101b23f70b982ee1b83db9004
1+
c846531c38bcc21c8c7ebc08e5d175f80dc77ac6

0 commit comments

Comments
 (0)