@devtion/actions 0.0.0-101d43f → 0.0.0-2ed8e18
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/dist/index.mjs +34 -33
- package/dist/index.node.js +33 -32
- package/dist/types/src/helpers/security.d.ts.map +1 -1
- package/dist/types/src/helpers/utils.d.ts.map +1 -1
- package/dist/types/src/helpers/vm.d.ts.map +1 -1
- package/dist/types/src/types/index.d.ts.map +1 -1
- package/package.json +2 -6
- package/src/helpers/constants.ts +1 -1
- package/src/helpers/functions.ts +1 -1
- package/src/helpers/security.ts +3 -5
- package/src/helpers/services.ts +1 -1
- package/src/helpers/utils.ts +73 -74
- package/src/helpers/vm.ts +9 -3
- package/src/index.ts +2 -2
- package/src/types/index.ts +9 -5
package/dist/index.mjs
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* @module @
|
|
3
|
-
* @version 1.0.
|
|
2
|
+
* @module @devtion/actions
|
|
3
|
+
* @version 1.0.9
|
|
4
4
|
* @file A set of actions and helpers for CLI commands
|
|
5
5
|
* @copyright Ethereum Foundation 2022
|
|
6
6
|
* @license MIT
|
|
@@ -17,8 +17,7 @@ import crypto from 'crypto';
|
|
|
17
17
|
import blake from 'blakejs';
|
|
18
18
|
import { utils } from 'ffjavascript';
|
|
19
19
|
import winston from 'winston';
|
|
20
|
-
import {
|
|
21
|
-
import { pipeline, Readable } from 'stream';
|
|
20
|
+
import { pipeline } from 'stream';
|
|
22
21
|
import { promisify } from 'util';
|
|
23
22
|
import { initializeApp } from 'firebase/app';
|
|
24
23
|
import { signInWithCredential, initializeAuth, getAuth } from 'firebase/auth';
|
|
@@ -340,7 +339,7 @@ const commonTerms = {
|
|
|
340
339
|
finalizeCircuit: "finalizeCircuit",
|
|
341
340
|
finalizeCeremony: "finalizeCeremony",
|
|
342
341
|
downloadCircuitArtifacts: "downloadCircuitArtifacts",
|
|
343
|
-
transferObject: "transferObject"
|
|
342
|
+
transferObject: "transferObject"
|
|
344
343
|
}
|
|
345
344
|
};
|
|
346
345
|
|
|
@@ -1058,7 +1057,8 @@ const parseCeremonyFile = async (path, cleanup = false) => {
|
|
|
1058
1057
|
// read the data
|
|
1059
1058
|
const data = JSON.parse(fs.readFileSync(path).toString());
|
|
1060
1059
|
// verify that the data is correct
|
|
1061
|
-
if (data[
|
|
1060
|
+
if (data["timeoutMechanismType"] !== "DYNAMIC" /* CeremonyTimeoutType.DYNAMIC */ &&
|
|
1061
|
+
data["timeoutMechanismType"] !== "FIXED" /* CeremonyTimeoutType.FIXED */)
|
|
1062
1062
|
throw new Error("Invalid timeout type. Please choose between DYNAMIC and FIXED.");
|
|
1063
1063
|
// validate that we have at least 1 circuit input data
|
|
1064
1064
|
if (!data.circuits || data.circuits.length === 0)
|
|
@@ -1095,30 +1095,22 @@ const parseCeremonyFile = async (path, cleanup = false) => {
|
|
|
1095
1095
|
const localR1csPath = `./${circuitData.name}.r1cs`;
|
|
1096
1096
|
// where we storing the wasm downloaded
|
|
1097
1097
|
const localWasmPath = `./${circuitData.name}.wasm`;
|
|
1098
|
-
// check that the artifacts exist in S3
|
|
1099
|
-
// we don't need any privileges to download this
|
|
1100
|
-
// just the correct region
|
|
1101
|
-
const s3 = new S3Client({
|
|
1102
|
-
region: artifacts.region,
|
|
1103
|
-
credentials: undefined
|
|
1104
|
-
});
|
|
1105
1098
|
// download the r1cs to extract the metadata
|
|
1106
|
-
const command = new GetObjectCommand({ Bucket: artifacts.bucket, Key: artifacts.r1csStoragePath });
|
|
1107
|
-
const response = await s3.send(command);
|
|
1108
1099
|
const streamPipeline = promisify(pipeline);
|
|
1109
|
-
|
|
1100
|
+
// Make the call.
|
|
1101
|
+
const responseR1CS = await fetch(artifacts.r1csStoragePath);
|
|
1102
|
+
// Handle errors.
|
|
1103
|
+
if (!responseR1CS.ok && responseR1CS.status !== 200)
|
|
1110
1104
|
throw new Error(`There was an error while trying to download the r1cs file for circuit ${circuitData.name}. Please check that the file has the correct permissions (public) set.`);
|
|
1111
|
-
|
|
1112
|
-
|
|
1105
|
+
await streamPipeline(responseR1CS.body, createWriteStream(localR1csPath));
|
|
1106
|
+
// Write the file locally
|
|
1113
1107
|
// extract the metadata from the r1cs
|
|
1114
1108
|
const metadata = getR1CSInfo(localR1csPath);
|
|
1115
1109
|
// download wasm too to ensure it's available
|
|
1116
|
-
const
|
|
1117
|
-
|
|
1118
|
-
|
|
1119
|
-
|
|
1120
|
-
if (wasmResponse.Body instanceof Readable)
|
|
1121
|
-
await streamPipeline(wasmResponse.Body, fs.createWriteStream(localWasmPath));
|
|
1110
|
+
const responseWASM = await fetch(artifacts.wasmStoragePath);
|
|
1111
|
+
if (!responseWASM.ok && responseWASM.status !== 200)
|
|
1112
|
+
throw new Error(`There was an error while trying to download the WASM file for circuit ${circuitData.name}. Please check that the file has the correct permissions (public) set.`);
|
|
1113
|
+
await streamPipeline(responseWASM.body, createWriteStream(localWasmPath));
|
|
1122
1114
|
// validate that the circuit hash and template links are valid
|
|
1123
1115
|
const template = circuitData.template;
|
|
1124
1116
|
const URLMatch = template.source.match(urlPattern);
|
|
@@ -1136,7 +1128,7 @@ const parseCeremonyFile = async (path, cleanup = false) => {
|
|
|
1136
1128
|
const wasmCompleteFilename = `${circuitData.name}.wasm`;
|
|
1137
1129
|
const smallestPowersOfTauCompleteFilenameForCircuit = `${potFilenameTemplate}${doubleDigitsPowers}.ptau`;
|
|
1138
1130
|
const firstZkeyCompleteFilename = `${circuitPrefix}_${genesisZkeyIndex}.zkey`;
|
|
1139
|
-
// storage paths
|
|
1131
|
+
// storage paths
|
|
1140
1132
|
const r1csStorageFilePath = getR1csStorageFilePath(circuitPrefix, r1csCompleteFilename);
|
|
1141
1133
|
const wasmStorageFilePath = getWasmStorageFilePath(circuitPrefix, wasmCompleteFilename);
|
|
1142
1134
|
const potStorageFilePath = getPotStorageFilePath(smallestPowersOfTauCompleteFilenameForCircuit);
|
|
@@ -1152,7 +1144,7 @@ const parseCeremonyFile = async (path, cleanup = false) => {
|
|
|
1152
1144
|
initialZkeyStoragePath: zkeyStorageFilePath,
|
|
1153
1145
|
r1csBlake2bHash: r1csBlake2bHash
|
|
1154
1146
|
};
|
|
1155
|
-
// validate that the compiler hash is a valid hash
|
|
1147
|
+
// validate that the compiler hash is a valid hash
|
|
1156
1148
|
const compiler = circuitData.compiler;
|
|
1157
1149
|
const compilerHashMatch = compiler.commitHash.match(commitHashPattern);
|
|
1158
1150
|
if (!compilerHashMatch || compilerHashMatch.length === 0 || compilerHashMatch.length > 1)
|
|
@@ -1187,7 +1179,7 @@ const parseCeremonyFile = async (path, cleanup = false) => {
|
|
|
1187
1179
|
contributionComputation: 0,
|
|
1188
1180
|
fullContribution: 0,
|
|
1189
1181
|
verifyCloudFunction: 0
|
|
1190
|
-
}
|
|
1182
|
+
}
|
|
1191
1183
|
};
|
|
1192
1184
|
}
|
|
1193
1185
|
if (data.timeoutMechanismType === "FIXED" /* CeremonyTimeoutType.FIXED */) {
|
|
@@ -1210,13 +1202,14 @@ const parseCeremonyFile = async (path, cleanup = false) => {
|
|
|
1210
1202
|
contributionComputation: 0,
|
|
1211
1203
|
fullContribution: 0,
|
|
1212
1204
|
verifyCloudFunction: 0
|
|
1213
|
-
}
|
|
1205
|
+
}
|
|
1214
1206
|
};
|
|
1215
1207
|
}
|
|
1216
1208
|
circuits.push(circuit);
|
|
1217
|
-
// remove the local r1cs
|
|
1209
|
+
// remove the local r1cs and wasm downloads (if used for verifying the config only vs setup)
|
|
1218
1210
|
if (cleanup)
|
|
1219
1211
|
fs.unlinkSync(localR1csPath);
|
|
1212
|
+
fs.unlinkSync(localWasmPath);
|
|
1220
1213
|
}
|
|
1221
1214
|
const setupData = {
|
|
1222
1215
|
ceremonyInputData: {
|
|
@@ -1370,7 +1363,9 @@ const getContributionsValidityForContributor = async (firestoreDatabase, circuit
|
|
|
1370
1363
|
* @param isFinalizing <boolean> - true when the coordinator is finalizing the ceremony, otherwise false.
|
|
1371
1364
|
* @returns <string> - the public attestation preamble.
|
|
1372
1365
|
*/
|
|
1373
|
-
const getPublicAttestationPreambleForContributor = (contributorIdentifier, ceremonyName, isFinalizing) => `Hey, I'm ${contributorIdentifier} and I have ${isFinalizing ? "finalized" : "contributed to"} the ${ceremonyName}
|
|
1366
|
+
const getPublicAttestationPreambleForContributor = (contributorIdentifier, ceremonyName, isFinalizing) => `Hey, I'm ${contributorIdentifier} and I have ${isFinalizing ? "finalized" : "contributed to"} the ${ceremonyName}${ceremonyName.toLowerCase().includes("trusted setup") || ceremonyName.toLowerCase().includes("ceremony")
|
|
1367
|
+
? "."
|
|
1368
|
+
: " MPC Phase2 Trusted Setup ceremony."}\nThe following are my contribution signatures:`;
|
|
1374
1369
|
/**
|
|
1375
1370
|
* Check and prepare public attestation for the contributor made only of its valid contributions.
|
|
1376
1371
|
* @param firestoreDatabase <Firestore> - the Firestore service instance associated to the current Firebase application.
|
|
@@ -1826,7 +1821,7 @@ const getFirestoreDatabase = (app) => getFirestore(app);
|
|
|
1826
1821
|
* @param app <FirebaseApp> - the Firebase application.
|
|
1827
1822
|
* @returns <Functions> - the Cloud Functions associated to the application.
|
|
1828
1823
|
*/
|
|
1829
|
-
const getFirebaseFunctions = (app) => getFunctions(app,
|
|
1824
|
+
const getFirebaseFunctions = (app) => getFunctions(app, "europe-west1");
|
|
1830
1825
|
/**
|
|
1831
1826
|
* Retrieve the configuration variables for the AWS services (S3, EC2).
|
|
1832
1827
|
* @returns <AWSVariables> - the values of the AWS services configuration variables.
|
|
@@ -2329,8 +2324,13 @@ const vmDependenciesAndCacheArtifactsCommand = (zKeyPath, potPath, snsTopic, reg
|
|
|
2329
2324
|
// eslint-disable-next-line no-template-curly-in-string
|
|
2330
2325
|
"touch ${MARKER_FILE}",
|
|
2331
2326
|
"sudo yum update -y",
|
|
2332
|
-
"curl -
|
|
2333
|
-
"
|
|
2327
|
+
"curl -O https://nodejs.org/dist/v16.13.0/node-v16.13.0-linux-x64.tar.xz",
|
|
2328
|
+
"tar -xf node-v16.13.0-linux-x64.tar.xz",
|
|
2329
|
+
"mv node-v16.13.0-linux-x64 nodejs",
|
|
2330
|
+
"sudo mv nodejs /opt/",
|
|
2331
|
+
"echo 'export NODEJS_HOME=/opt/nodejs' >> /etc/profile",
|
|
2332
|
+
"echo 'export PATH=$NODEJS_HOME/bin:$PATH' >> /etc/profile",
|
|
2333
|
+
"source /etc/profile",
|
|
2334
2334
|
"npm install -g snarkjs",
|
|
2335
2335
|
`aws s3 cp s3://${zKeyPath} /var/tmp/genesisZkey.zkey`,
|
|
2336
2336
|
`aws s3 cp s3://${potPath} /var/tmp/pot.ptau`,
|
|
@@ -2349,6 +2349,7 @@ const vmDependenciesAndCacheArtifactsCommand = (zKeyPath, potPath, snsTopic, reg
|
|
|
2349
2349
|
* @returns Array<string> - the list of commands for contribution verification.
|
|
2350
2350
|
*/
|
|
2351
2351
|
const vmContributionVerificationCommand = (bucketName, lastZkeyStoragePath, verificationTranscriptStoragePathAndFilename) => [
|
|
2352
|
+
`source /etc/profile`,
|
|
2352
2353
|
`aws s3 cp s3://${bucketName}/${lastZkeyStoragePath} /var/tmp/lastZKey.zkey > /var/tmp/log.txt`,
|
|
2353
2354
|
`snarkjs zkvi /var/tmp/genesisZkey.zkey /var/tmp/pot.ptau /var/tmp/lastZKey.zkey > /var/tmp/verification_transcript.log`,
|
|
2354
2355
|
`aws s3 cp /var/tmp/verification_transcript.log s3://${bucketName}/${verificationTranscriptStoragePathAndFilename} &>/dev/null`,
|
package/dist/index.node.js
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* @module @
|
|
3
|
-
* @version 1.0.
|
|
2
|
+
* @module @devtion/actions
|
|
3
|
+
* @version 1.0.9
|
|
4
4
|
* @file A set of actions and helpers for CLI commands
|
|
5
5
|
* @copyright Ethereum Foundation 2022
|
|
6
6
|
* @license MIT
|
|
@@ -19,7 +19,6 @@ var crypto = require('crypto');
|
|
|
19
19
|
var blake = require('blakejs');
|
|
20
20
|
var ffjavascript = require('ffjavascript');
|
|
21
21
|
var winston = require('winston');
|
|
22
|
-
var clientS3 = require('@aws-sdk/client-s3');
|
|
23
22
|
var stream = require('stream');
|
|
24
23
|
var util = require('util');
|
|
25
24
|
var app = require('firebase/app');
|
|
@@ -342,7 +341,7 @@ const commonTerms = {
|
|
|
342
341
|
finalizeCircuit: "finalizeCircuit",
|
|
343
342
|
finalizeCeremony: "finalizeCeremony",
|
|
344
343
|
downloadCircuitArtifacts: "downloadCircuitArtifacts",
|
|
345
|
-
transferObject: "transferObject"
|
|
344
|
+
transferObject: "transferObject"
|
|
346
345
|
}
|
|
347
346
|
};
|
|
348
347
|
|
|
@@ -1060,7 +1059,8 @@ const parseCeremonyFile = async (path, cleanup = false) => {
|
|
|
1060
1059
|
// read the data
|
|
1061
1060
|
const data = JSON.parse(fs.readFileSync(path).toString());
|
|
1062
1061
|
// verify that the data is correct
|
|
1063
|
-
if (data[
|
|
1062
|
+
if (data["timeoutMechanismType"] !== "DYNAMIC" /* CeremonyTimeoutType.DYNAMIC */ &&
|
|
1063
|
+
data["timeoutMechanismType"] !== "FIXED" /* CeremonyTimeoutType.FIXED */)
|
|
1064
1064
|
throw new Error("Invalid timeout type. Please choose between DYNAMIC and FIXED.");
|
|
1065
1065
|
// validate that we have at least 1 circuit input data
|
|
1066
1066
|
if (!data.circuits || data.circuits.length === 0)
|
|
@@ -1097,30 +1097,22 @@ const parseCeremonyFile = async (path, cleanup = false) => {
|
|
|
1097
1097
|
const localR1csPath = `./${circuitData.name}.r1cs`;
|
|
1098
1098
|
// where we storing the wasm downloaded
|
|
1099
1099
|
const localWasmPath = `./${circuitData.name}.wasm`;
|
|
1100
|
-
// check that the artifacts exist in S3
|
|
1101
|
-
// we don't need any privileges to download this
|
|
1102
|
-
// just the correct region
|
|
1103
|
-
const s3 = new clientS3.S3Client({
|
|
1104
|
-
region: artifacts.region,
|
|
1105
|
-
credentials: undefined
|
|
1106
|
-
});
|
|
1107
1100
|
// download the r1cs to extract the metadata
|
|
1108
|
-
const command = new clientS3.GetObjectCommand({ Bucket: artifacts.bucket, Key: artifacts.r1csStoragePath });
|
|
1109
|
-
const response = await s3.send(command);
|
|
1110
1101
|
const streamPipeline = util.promisify(stream.pipeline);
|
|
1111
|
-
|
|
1102
|
+
// Make the call.
|
|
1103
|
+
const responseR1CS = await fetch(artifacts.r1csStoragePath);
|
|
1104
|
+
// Handle errors.
|
|
1105
|
+
if (!responseR1CS.ok && responseR1CS.status !== 200)
|
|
1112
1106
|
throw new Error(`There was an error while trying to download the r1cs file for circuit ${circuitData.name}. Please check that the file has the correct permissions (public) set.`);
|
|
1113
|
-
|
|
1114
|
-
|
|
1107
|
+
await streamPipeline(responseR1CS.body, fs.createWriteStream(localR1csPath));
|
|
1108
|
+
// Write the file locally
|
|
1115
1109
|
// extract the metadata from the r1cs
|
|
1116
1110
|
const metadata = getR1CSInfo(localR1csPath);
|
|
1117
1111
|
// download wasm too to ensure it's available
|
|
1118
|
-
const
|
|
1119
|
-
|
|
1120
|
-
|
|
1121
|
-
|
|
1122
|
-
if (wasmResponse.Body instanceof stream.Readable)
|
|
1123
|
-
await streamPipeline(wasmResponse.Body, fs.createWriteStream(localWasmPath));
|
|
1112
|
+
const responseWASM = await fetch(artifacts.wasmStoragePath);
|
|
1113
|
+
if (!responseWASM.ok && responseWASM.status !== 200)
|
|
1114
|
+
throw new Error(`There was an error while trying to download the WASM file for circuit ${circuitData.name}. Please check that the file has the correct permissions (public) set.`);
|
|
1115
|
+
await streamPipeline(responseWASM.body, fs.createWriteStream(localWasmPath));
|
|
1124
1116
|
// validate that the circuit hash and template links are valid
|
|
1125
1117
|
const template = circuitData.template;
|
|
1126
1118
|
const URLMatch = template.source.match(urlPattern);
|
|
@@ -1138,7 +1130,7 @@ const parseCeremonyFile = async (path, cleanup = false) => {
|
|
|
1138
1130
|
const wasmCompleteFilename = `${circuitData.name}.wasm`;
|
|
1139
1131
|
const smallestPowersOfTauCompleteFilenameForCircuit = `${potFilenameTemplate}${doubleDigitsPowers}.ptau`;
|
|
1140
1132
|
const firstZkeyCompleteFilename = `${circuitPrefix}_${genesisZkeyIndex}.zkey`;
|
|
1141
|
-
// storage paths
|
|
1133
|
+
// storage paths
|
|
1142
1134
|
const r1csStorageFilePath = getR1csStorageFilePath(circuitPrefix, r1csCompleteFilename);
|
|
1143
1135
|
const wasmStorageFilePath = getWasmStorageFilePath(circuitPrefix, wasmCompleteFilename);
|
|
1144
1136
|
const potStorageFilePath = getPotStorageFilePath(smallestPowersOfTauCompleteFilenameForCircuit);
|
|
@@ -1154,7 +1146,7 @@ const parseCeremonyFile = async (path, cleanup = false) => {
|
|
|
1154
1146
|
initialZkeyStoragePath: zkeyStorageFilePath,
|
|
1155
1147
|
r1csBlake2bHash: r1csBlake2bHash
|
|
1156
1148
|
};
|
|
1157
|
-
// validate that the compiler hash is a valid hash
|
|
1149
|
+
// validate that the compiler hash is a valid hash
|
|
1158
1150
|
const compiler = circuitData.compiler;
|
|
1159
1151
|
const compilerHashMatch = compiler.commitHash.match(commitHashPattern);
|
|
1160
1152
|
if (!compilerHashMatch || compilerHashMatch.length === 0 || compilerHashMatch.length > 1)
|
|
@@ -1189,7 +1181,7 @@ const parseCeremonyFile = async (path, cleanup = false) => {
|
|
|
1189
1181
|
contributionComputation: 0,
|
|
1190
1182
|
fullContribution: 0,
|
|
1191
1183
|
verifyCloudFunction: 0
|
|
1192
|
-
}
|
|
1184
|
+
}
|
|
1193
1185
|
};
|
|
1194
1186
|
}
|
|
1195
1187
|
if (data.timeoutMechanismType === "FIXED" /* CeremonyTimeoutType.FIXED */) {
|
|
@@ -1212,13 +1204,14 @@ const parseCeremonyFile = async (path, cleanup = false) => {
|
|
|
1212
1204
|
contributionComputation: 0,
|
|
1213
1205
|
fullContribution: 0,
|
|
1214
1206
|
verifyCloudFunction: 0
|
|
1215
|
-
}
|
|
1207
|
+
}
|
|
1216
1208
|
};
|
|
1217
1209
|
}
|
|
1218
1210
|
circuits.push(circuit);
|
|
1219
|
-
// remove the local r1cs
|
|
1211
|
+
// remove the local r1cs and wasm downloads (if used for verifying the config only vs setup)
|
|
1220
1212
|
if (cleanup)
|
|
1221
1213
|
fs.unlinkSync(localR1csPath);
|
|
1214
|
+
fs.unlinkSync(localWasmPath);
|
|
1222
1215
|
}
|
|
1223
1216
|
const setupData = {
|
|
1224
1217
|
ceremonyInputData: {
|
|
@@ -1372,7 +1365,9 @@ const getContributionsValidityForContributor = async (firestoreDatabase, circuit
|
|
|
1372
1365
|
* @param isFinalizing <boolean> - true when the coordinator is finalizing the ceremony, otherwise false.
|
|
1373
1366
|
* @returns <string> - the public attestation preamble.
|
|
1374
1367
|
*/
|
|
1375
|
-
const getPublicAttestationPreambleForContributor = (contributorIdentifier, ceremonyName, isFinalizing) => `Hey, I'm ${contributorIdentifier} and I have ${isFinalizing ? "finalized" : "contributed to"} the ${ceremonyName}
|
|
1368
|
+
const getPublicAttestationPreambleForContributor = (contributorIdentifier, ceremonyName, isFinalizing) => `Hey, I'm ${contributorIdentifier} and I have ${isFinalizing ? "finalized" : "contributed to"} the ${ceremonyName}${ceremonyName.toLowerCase().includes("trusted setup") || ceremonyName.toLowerCase().includes("ceremony")
|
|
1369
|
+
? "."
|
|
1370
|
+
: " MPC Phase2 Trusted Setup ceremony."}\nThe following are my contribution signatures:`;
|
|
1376
1371
|
/**
|
|
1377
1372
|
* Check and prepare public attestation for the contributor made only of its valid contributions.
|
|
1378
1373
|
* @param firestoreDatabase <Firestore> - the Firestore service instance associated to the current Firebase application.
|
|
@@ -1828,7 +1823,7 @@ const getFirestoreDatabase = (app) => firestore.getFirestore(app);
|
|
|
1828
1823
|
* @param app <FirebaseApp> - the Firebase application.
|
|
1829
1824
|
* @returns <Functions> - the Cloud Functions associated to the application.
|
|
1830
1825
|
*/
|
|
1831
|
-
const getFirebaseFunctions = (app) => functions.getFunctions(app,
|
|
1826
|
+
const getFirebaseFunctions = (app) => functions.getFunctions(app, "europe-west1");
|
|
1832
1827
|
/**
|
|
1833
1828
|
* Retrieve the configuration variables for the AWS services (S3, EC2).
|
|
1834
1829
|
* @returns <AWSVariables> - the values of the AWS services configuration variables.
|
|
@@ -2331,8 +2326,13 @@ const vmDependenciesAndCacheArtifactsCommand = (zKeyPath, potPath, snsTopic, reg
|
|
|
2331
2326
|
// eslint-disable-next-line no-template-curly-in-string
|
|
2332
2327
|
"touch ${MARKER_FILE}",
|
|
2333
2328
|
"sudo yum update -y",
|
|
2334
|
-
"curl -
|
|
2335
|
-
"
|
|
2329
|
+
"curl -O https://nodejs.org/dist/v16.13.0/node-v16.13.0-linux-x64.tar.xz",
|
|
2330
|
+
"tar -xf node-v16.13.0-linux-x64.tar.xz",
|
|
2331
|
+
"mv node-v16.13.0-linux-x64 nodejs",
|
|
2332
|
+
"sudo mv nodejs /opt/",
|
|
2333
|
+
"echo 'export NODEJS_HOME=/opt/nodejs' >> /etc/profile",
|
|
2334
|
+
"echo 'export PATH=$NODEJS_HOME/bin:$PATH' >> /etc/profile",
|
|
2335
|
+
"source /etc/profile",
|
|
2336
2336
|
"npm install -g snarkjs",
|
|
2337
2337
|
`aws s3 cp s3://${zKeyPath} /var/tmp/genesisZkey.zkey`,
|
|
2338
2338
|
`aws s3 cp s3://${potPath} /var/tmp/pot.ptau`,
|
|
@@ -2351,6 +2351,7 @@ const vmDependenciesAndCacheArtifactsCommand = (zKeyPath, potPath, snsTopic, reg
|
|
|
2351
2351
|
* @returns Array<string> - the list of commands for contribution verification.
|
|
2352
2352
|
*/
|
|
2353
2353
|
const vmContributionVerificationCommand = (bucketName, lastZkeyStoragePath, verificationTranscriptStoragePathAndFilename) => [
|
|
2354
|
+
`source /etc/profile`,
|
|
2354
2355
|
`aws s3 cp s3://${bucketName}/${lastZkeyStoragePath} /var/tmp/lastZKey.zkey > /var/tmp/log.txt`,
|
|
2355
2356
|
`snarkjs zkvi /var/tmp/genesisZkey.zkey /var/tmp/pot.ptau /var/tmp/lastZKey.zkey > /var/tmp/verification_transcript.log`,
|
|
2356
2357
|
`aws s3 cp /var/tmp/verification_transcript.log s3://${bucketName}/${verificationTranscriptStoragePathAndFilename} &>/dev/null`,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"security.d.ts","sourceRoot":"","sources":["../../../../src/helpers/security.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"security.d.ts","sourceRoot":"","sources":["../../../../src/helpers/security.ts"],"names":[],"mappings":"AA4BA;;;;;;;GAOG;AACH,eAAO,MAAM,gBAAgB,cACd,MAAM,4BACS,MAAM,4BACN,MAAM,8BACJ,MAAM,KACnC,QAAQ,GAAG,CAsBb,CAAA"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../../../../src/helpers/utils.ts"],"names":[],"mappings":";AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,oBAAoB,CAAA;AAC9C,OAAW,EAAE,YAAY,
|
|
1
|
+
{"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../../../../src/helpers/utils.ts"],"names":[],"mappings":";AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,oBAAoB,CAAA;AAC9C,OAAW,EAAE,YAAY,EAAqB,MAAM,IAAI,CAAA;AAExD,OAAO,OAAO,EAAE,EAAE,MAAM,EAAE,MAAM,SAAS,CAAA;AAEzC,OAAO,EACH,eAAe,EACf,YAAY,EAGZ,oBAAoB,EACpB,oBAAoB,EACpB,iBAAiB,EAGpB,MAAM,gBAAgB,CAAA;AAmBvB;;;;;;GAMG;AACH,eAAO,MAAM,iBAAiB,SAAgB,MAAM,YAAW,OAAO,KAAW,QAAQ,iBAAiB,CA4NzG,CAAA;AAED;;;;;;;GAOG;AACH,eAAO,MAAM,+BAA+B,iBAAkB,MAAM,UAAU,MAAM,KAAG,MAgBtF,CAAA;AAED;;;;;GAKG;AACH,eAAO,MAAM,oCAAoC,gBAAiB,MAAM,WAAW,MAAM,WAUxF,CAAA;AAED;;;;;GAKG;AACH,eAAO,MAAM,eAAe,aAAc,MAAM,KAAG,MASlD,CAAA;AAED;;;;;GAKG;AACH,eAAO,MAAM,sBAAsB,wBAAyB,MAAM,KAAG,MACH,CAAA;AAElE;;;;;;;GAOG;AACH,eAAO,MAAM,aAAa,QAAS,MAAM,KAAG,MAEsC,CAAA;AAElF;;;;;GAKG;AACH,eAAO,MAAM,mBAAmB,cAAsE,CAAA;AAEtG;;;;;;;GAOG;AACH,eAAO,MAAM,4BAA4B,aAC3B,MAAM,oBAAoB,CAAC,oBACnB,MAAM,KACzB,oBAYF,CAAA;AAED;;;;;GAKG;AACH,eAAO,MAAM,oBAAoB,cAAe,MAAM,WAAW,OAAO,KAAG,MAC1B,CAAA;AAEjD;;;;;;;;GAQG;AACH,eAAO,MAAM,sCAAsC,sBAC5B,SAAS,YAClB,MAAM,oBAAoB,CAAC,cACzB,MAAM,iBACH,MAAM,gBACP,OAAO,KACtB,QAAQ,MAAM,oBAAoB,CAAC,CAmCrC,CAAA;AAED;;;;;;GAMG;AACH,eAAO,MAAM,0CAA0C,0BAC5B,MAAM,gBACf,MAAM,gBACN,OAAO,WAM4B,CAAA;AAErD;;;;;;;;;;;GAWG;AACH,eAAO,MAAM,qCAAqC,sBAC3B,SAAS,YAClB,MAAM,oBAAoB,CAAC,cACzB,MAAM,iBACH,MAAM,4BACK,MAAM,YAAY,CAAC,yBACtB,MAAM,gBACf,MAAM,gBACN,OAAO,KACtB,QAAQ,MAAM,CA2DhB,CAAA;AAED;;;;;GAKG;AACH,eAAO,MAAM,yBAAyB,aAAc,MAAM,UAAS,QAAQ,aAAa,CAAC,OAAO,CAAC,KAAY,MAQvG,CAAA;AAEN;;;;;;;GAOG;AACH,eAAO,MAAM,iBAAiB,kBACX,MAAM,UACb,MAAM,UACN,MAAM,YACJ,YAAY,KACvB,MAYF,CAAA;AAED;;;;;;;;GAQG;AACH,eAAO,MAAM,WAAW,sBAAuB,MAAM,KAAG,eA0IvD,CAAA;AAED;;;;GAIG;AACH,eAAO,MAAM,qBAAqB,WAAY,MAAM,KAAG,MAA0D,CAAA"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"vm.d.ts","sourceRoot":"","sources":["../../../../src/helpers/vm.ts"],"names":[],"mappings":"AAAA,OAAO,EAMH,SAAS,EAEZ,MAAM,qBAAqB,CAAA;AAC5B,OAAO,EAEH,SAAS,EAGZ,MAAM,qBAAqB,CAAA;AAE5B,OAAO,EAAE,aAAa,EAAE,MAAM,KAAK,CAAA;AACnC,OAAO,EAAE,WAAW,EAAE,MAAM,UAAU,CAAA;AAOtC;;;GAGG;AACH,eAAO,MAAM,eAAe,QAAa,QAAQ,SAAS,CAYzD,CAAA;AAED;;;GAGG;AACH,eAAO,MAAM,eAAe,QAAa,QAAQ,SAAS,CAYzD,CAAA;AAED;;;;;GAKG;AACH,eAAO,MAAM,kBAAkB,eAAgB,MAAM,KAAG,MAAM,MAAM,CAInE,CAAA;AAED;;;;;;;GAOG;AACH,eAAO,MAAM,sCAAsC,aACrC,MAAM,WACP,MAAM,YACL,MAAM,UACR,MAAM,KACf,MAAM,MAAM,
|
|
1
|
+
{"version":3,"file":"vm.d.ts","sourceRoot":"","sources":["../../../../src/helpers/vm.ts"],"names":[],"mappings":"AAAA,OAAO,EAMH,SAAS,EAEZ,MAAM,qBAAqB,CAAA;AAC5B,OAAO,EAEH,SAAS,EAGZ,MAAM,qBAAqB,CAAA;AAE5B,OAAO,EAAE,aAAa,EAAE,MAAM,KAAK,CAAA;AACnC,OAAO,EAAE,WAAW,EAAE,MAAM,UAAU,CAAA;AAOtC;;;GAGG;AACH,eAAO,MAAM,eAAe,QAAa,QAAQ,SAAS,CAYzD,CAAA;AAED;;;GAGG;AACH,eAAO,MAAM,eAAe,QAAa,QAAQ,SAAS,CAYzD,CAAA;AAED;;;;;GAKG;AACH,eAAO,MAAM,kBAAkB,eAAgB,MAAM,KAAG,MAAM,MAAM,CAInE,CAAA;AAED;;;;;;;GAOG;AACH,eAAO,MAAM,sCAAsC,aACrC,MAAM,WACP,MAAM,YACL,MAAM,UACR,MAAM,KACf,MAAM,MAAM,CAyBd,CAAA;AAED;;;;;;;GAOG;AACH,eAAO,MAAM,iCAAiC,eAC9B,MAAM,uBACG,MAAM,gDACmB,MAAM,KACrD,MAAM,MAAM,CAOd,CAAA;AAED;;;;;;;GAOG;AACH,eAAO,MAAM,oBAAoB,oBAAqB,MAAM,OAAO,MAAM,KAAG,MACuB,CAAA;AAEnG;;;;;;;;GAQG;AACH,eAAO,MAAM,iBAAiB,QACrB,SAAS,YACJ,MAAM,EAAE,gBACJ,MAAM,cACR,MAAM,YACR,aAAa,KACxB,QAAQ,WAAW,CAgErB,CAAA;AAED;;;;;GAKG;AACH,eAAO,MAAM,cAAc,cAAqB,SAAS,cAAc,MAAM,KAAG,QAAQ,OAAO,CAe9F,CAAA;AAED;;;;;GAKG;AACH,eAAO,MAAM,gBAAgB,QAAe,SAAS,cAAc,MAAM,kBAYxE,CAAA;AAED;;;;;GAKG;AACH,eAAO,MAAM,eAAe,QAAe,SAAS,cAAc,MAAM,kBAYvE,CAAA;AAED;;;;GAIG;AACH,eAAO,MAAM,oBAAoB,QAAe,SAAS,cAAc,MAAM,kBAc5E,CAAA;AAED;;;;;;;;GAQG;AACH,eAAO,MAAM,kBAAkB,QACtB,SAAS,cACF,MAAM,YACR,MAAM,MAAM,CAAC,KACxB,QAAQ,MAAM,CAwBhB,CAAA;AAED;;;;;;GAMG;AACH,eAAO,MAAM,qBAAqB,QAAe,SAAS,cAAc,MAAM,aAAa,MAAM,KAAG,QAAQ,MAAM,CAiBjH,CAAA;AAED;;;;;;GAMG;AACH,eAAO,MAAM,qBAAqB,QAAe,SAAS,cAAc,MAAM,aAAa,MAAM,KAAG,QAAQ,MAAM,CAgBjH,CAAA"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/types/index.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/types/index.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@devtion/actions",
|
|
3
|
-
"version": "0.0.0-
|
|
3
|
+
"version": "0.0.0-2ed8e18",
|
|
4
4
|
"description": "A set of actions and helpers for CLI commands",
|
|
5
5
|
"repository": "git@github.com:privacy-scaling-explorations/p0tion.git",
|
|
6
6
|
"homepage": "https://github.com/privacy-scaling-explorations/p0tion",
|
|
@@ -55,10 +55,6 @@
|
|
|
55
55
|
"firebase": "^9.21.0",
|
|
56
56
|
"firebase-admin": "^11.8.0",
|
|
57
57
|
"googleapis": "^118.0.0",
|
|
58
|
-
"puppeteer": "^20.1.2",
|
|
59
|
-
"puppeteer-extra": "^3.3.6",
|
|
60
|
-
"puppeteer-extra-plugin-anonymize-ua": "^2.4.6",
|
|
61
|
-
"puppeteer-extra-plugin-stealth": "^2.11.2",
|
|
62
58
|
"rimraf": "^5.0.0",
|
|
63
59
|
"rollup": "^3.21.6",
|
|
64
60
|
"snarkjs": "^0.6.11",
|
|
@@ -83,5 +79,5 @@
|
|
|
83
79
|
"publishConfig": {
|
|
84
80
|
"access": "public"
|
|
85
81
|
},
|
|
86
|
-
"gitHead": "
|
|
82
|
+
"gitHead": "8f0026fba3bb69e31e0716c61de58d1e4f513ff2"
|
|
87
83
|
}
|
package/src/helpers/constants.ts
CHANGED
package/src/helpers/functions.ts
CHANGED
package/src/helpers/security.ts
CHANGED
|
@@ -1,5 +1,4 @@
|
|
|
1
1
|
import fetch from "@adobe/node-fetch-retry"
|
|
2
|
-
|
|
3
2
|
/**
|
|
4
3
|
* This function queries the GitHub API to fetch users statistics
|
|
5
4
|
* @param user {string} the user uid
|
|
@@ -12,20 +11,19 @@ const getGitHubStats = async (user: string): Promise<any> => {
|
|
|
12
11
|
Authorization: `token ${process.env.GITHUB_ACCESS_TOKEN!}`
|
|
13
12
|
}
|
|
14
13
|
})
|
|
15
|
-
|
|
16
14
|
if (response.status !== 200)
|
|
17
15
|
throw new Error("It was not possible to retrieve the user's statistic. Please try again.")
|
|
18
16
|
|
|
19
17
|
const jsonData: any = await response.json()
|
|
20
18
|
|
|
21
|
-
const data
|
|
19
|
+
const data = {
|
|
22
20
|
following: jsonData.following,
|
|
23
21
|
followers: jsonData.followers,
|
|
24
22
|
publicRepos: jsonData.public_repos,
|
|
25
23
|
avatarUrl: jsonData.avatar_url
|
|
26
24
|
}
|
|
27
25
|
|
|
28
|
-
return data
|
|
26
|
+
return data
|
|
29
27
|
}
|
|
30
28
|
|
|
31
29
|
/**
|
|
@@ -58,7 +56,7 @@ export const githubReputation = async (
|
|
|
58
56
|
reputable: false,
|
|
59
57
|
avatarUrl: ""
|
|
60
58
|
}
|
|
61
|
-
|
|
59
|
+
|
|
62
60
|
return {
|
|
63
61
|
reputable: true,
|
|
64
62
|
avatarUrl: avatarUrl
|
package/src/helpers/services.ts
CHANGED
|
@@ -22,7 +22,7 @@ export const getFirestoreDatabase = (app: FirebaseApp): Firestore => getFirestor
|
|
|
22
22
|
* @param app <FirebaseApp> - the Firebase application.
|
|
23
23
|
* @returns <Functions> - the Cloud Functions associated to the application.
|
|
24
24
|
*/
|
|
25
|
-
export const getFirebaseFunctions = (app: FirebaseApp): Functions => getFunctions(app,
|
|
25
|
+
export const getFirebaseFunctions = (app: FirebaseApp): Functions => getFunctions(app, "europe-west1")
|
|
26
26
|
|
|
27
27
|
/**
|
|
28
28
|
* Retrieve the configuration variables for the AWS services (S3, EC2).
|
package/src/helpers/utils.ts
CHANGED
|
@@ -1,18 +1,18 @@
|
|
|
1
1
|
import { Firestore } from "firebase/firestore"
|
|
2
|
-
import fs, { ReadPosition } from "fs"
|
|
2
|
+
import fs, { ReadPosition, createWriteStream } from "fs"
|
|
3
3
|
import { utils as ffUtils } from "ffjavascript"
|
|
4
4
|
import winston, { Logger } from "winston"
|
|
5
|
-
import
|
|
6
|
-
import {
|
|
7
|
-
CircuitMetadata,
|
|
8
|
-
Contribution,
|
|
9
|
-
CircuitDocument,
|
|
5
|
+
import fetch from "@adobe/node-fetch-retry"
|
|
6
|
+
import {
|
|
7
|
+
CircuitMetadata,
|
|
8
|
+
Contribution,
|
|
9
|
+
CircuitDocument,
|
|
10
10
|
CircuitInputData,
|
|
11
|
-
ContributionValidity,
|
|
12
|
-
FirebaseDocumentInfo,
|
|
13
|
-
SetupCeremonyData,
|
|
11
|
+
ContributionValidity,
|
|
12
|
+
FirebaseDocumentInfo,
|
|
13
|
+
SetupCeremonyData,
|
|
14
14
|
CeremonySetupTemplate,
|
|
15
|
-
CeremonySetupTemplateCircuitArtifacts
|
|
15
|
+
CeremonySetupTemplateCircuitArtifacts
|
|
16
16
|
} from "../types/index"
|
|
17
17
|
import { finalContributionIndex, genesisZkeyIndex, potFilenameTemplate } from "./constants"
|
|
18
18
|
import {
|
|
@@ -22,14 +22,14 @@ import {
|
|
|
22
22
|
getContributionsCollectionPath
|
|
23
23
|
} from "./database"
|
|
24
24
|
import { CeremonyTimeoutType } from "../types/enums"
|
|
25
|
-
import {
|
|
26
|
-
getPotStorageFilePath,
|
|
27
|
-
getR1csStorageFilePath,
|
|
28
|
-
getWasmStorageFilePath,
|
|
25
|
+
import {
|
|
26
|
+
getPotStorageFilePath,
|
|
27
|
+
getR1csStorageFilePath,
|
|
28
|
+
getWasmStorageFilePath,
|
|
29
29
|
getZkeyStorageFilePath
|
|
30
30
|
} from "./storage"
|
|
31
31
|
import { blake512FromPath } from "./crypto"
|
|
32
|
-
import {
|
|
32
|
+
import { pipeline } from "stream"
|
|
33
33
|
import { promisify } from "util"
|
|
34
34
|
|
|
35
35
|
/**
|
|
@@ -41,23 +41,29 @@ import { promisify } from "util"
|
|
|
41
41
|
*/
|
|
42
42
|
export const parseCeremonyFile = async (path: string, cleanup: boolean = false): Promise<SetupCeremonyData> => {
|
|
43
43
|
// check that the path exists
|
|
44
|
-
if (!fs.existsSync(path))
|
|
45
|
-
|
|
44
|
+
if (!fs.existsSync(path))
|
|
45
|
+
throw new Error(
|
|
46
|
+
"The provided path to the configuration file does not exist. Please provide an absolute path and try again."
|
|
47
|
+
)
|
|
48
|
+
|
|
46
49
|
try {
|
|
47
50
|
// read the data
|
|
48
51
|
const data: CeremonySetupTemplate = JSON.parse(fs.readFileSync(path).toString())
|
|
49
52
|
|
|
50
53
|
// verify that the data is correct
|
|
51
|
-
if (
|
|
54
|
+
if (
|
|
55
|
+
data["timeoutMechanismType"] !== CeremonyTimeoutType.DYNAMIC &&
|
|
56
|
+
data["timeoutMechanismType"] !== CeremonyTimeoutType.FIXED
|
|
57
|
+
)
|
|
52
58
|
throw new Error("Invalid timeout type. Please choose between DYNAMIC and FIXED.")
|
|
53
|
-
|
|
59
|
+
|
|
54
60
|
// validate that we have at least 1 circuit input data
|
|
55
|
-
if (!data.circuits || data.circuits.length === 0)
|
|
61
|
+
if (!data.circuits || data.circuits.length === 0)
|
|
56
62
|
throw new Error("You need to provide the data for at least 1 circuit.")
|
|
57
63
|
|
|
58
64
|
// validate that the end date is in the future
|
|
59
|
-
let endDate: Date
|
|
60
|
-
let startDate: Date
|
|
65
|
+
let endDate: Date
|
|
66
|
+
let startDate: Date
|
|
61
67
|
try {
|
|
62
68
|
endDate = new Date(data.endDate)
|
|
63
69
|
startDate = new Date(data.startDate)
|
|
@@ -66,12 +72,12 @@ export const parseCeremonyFile = async (path: string, cleanup: boolean = false):
|
|
|
66
72
|
}
|
|
67
73
|
|
|
68
74
|
if (endDate <= startDate) throw new Error("The end date should be greater than the start date.")
|
|
69
|
-
|
|
75
|
+
|
|
70
76
|
const currentDate = new Date()
|
|
71
77
|
|
|
72
|
-
if (endDate <= currentDate || startDate <= currentDate)
|
|
78
|
+
if (endDate <= currentDate || startDate <= currentDate)
|
|
73
79
|
throw new Error("The start and end dates should be in the future.")
|
|
74
|
-
|
|
80
|
+
|
|
75
81
|
// validate penalty
|
|
76
82
|
if (data.penalty <= 0) throw new Error("The penalty should be greater than zero.")
|
|
77
83
|
|
|
@@ -93,47 +99,43 @@ export const parseCeremonyFile = async (path: string, cleanup: boolean = false):
|
|
|
93
99
|
// where we storing the wasm downloaded
|
|
94
100
|
const localWasmPath = `./${circuitData.name}.wasm`
|
|
95
101
|
|
|
96
|
-
// check that the artifacts exist in S3
|
|
97
|
-
// we don't need any privileges to download this
|
|
98
|
-
// just the correct region
|
|
99
|
-
const s3 = new S3Client({
|
|
100
|
-
region: artifacts.region,
|
|
101
|
-
credentials: undefined
|
|
102
|
-
})
|
|
103
|
-
|
|
104
102
|
// download the r1cs to extract the metadata
|
|
105
|
-
const command = new GetObjectCommand({ Bucket: artifacts.bucket, Key: artifacts.r1csStoragePath })
|
|
106
|
-
const response = await s3.send(command)
|
|
107
103
|
const streamPipeline = promisify(pipeline)
|
|
108
104
|
|
|
109
|
-
|
|
110
|
-
|
|
105
|
+
// Make the call.
|
|
106
|
+
const responseR1CS = await fetch(artifacts.r1csStoragePath)
|
|
107
|
+
|
|
108
|
+
// Handle errors.
|
|
109
|
+
if (!responseR1CS.ok && responseR1CS.status !== 200)
|
|
110
|
+
throw new Error(
|
|
111
|
+
`There was an error while trying to download the r1cs file for circuit ${circuitData.name}. Please check that the file has the correct permissions (public) set.`
|
|
112
|
+
)
|
|
113
|
+
|
|
114
|
+
await streamPipeline(responseR1CS.body!, createWriteStream(localR1csPath))
|
|
115
|
+
// Write the file locally
|
|
111
116
|
|
|
112
|
-
if (response.Body instanceof Readable)
|
|
113
|
-
await streamPipeline(response.Body, fs.createWriteStream(localR1csPath))
|
|
114
|
-
|
|
115
117
|
// extract the metadata from the r1cs
|
|
116
118
|
const metadata = getR1CSInfo(localR1csPath)
|
|
117
119
|
|
|
118
120
|
// download wasm too to ensure it's available
|
|
119
|
-
const
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
if (wasmResponse.Body instanceof Readable)
|
|
126
|
-
await streamPipeline(wasmResponse.Body, fs.createWriteStream(localWasmPath))
|
|
121
|
+
const responseWASM = await fetch(artifacts.wasmStoragePath)
|
|
122
|
+
if (!responseWASM.ok && responseWASM.status !== 200)
|
|
123
|
+
throw new Error(
|
|
124
|
+
`There was an error while trying to download the WASM file for circuit ${circuitData.name}. Please check that the file has the correct permissions (public) set.`
|
|
125
|
+
)
|
|
126
|
+
await streamPipeline(responseWASM.body!, createWriteStream(localWasmPath))
|
|
127
127
|
|
|
128
128
|
// validate that the circuit hash and template links are valid
|
|
129
129
|
const template = circuitData.template
|
|
130
130
|
|
|
131
131
|
const URLMatch = template.source.match(urlPattern)
|
|
132
|
-
if (!URLMatch || URLMatch.length === 0 || URLMatch.length > 1)
|
|
132
|
+
if (!URLMatch || URLMatch.length === 0 || URLMatch.length > 1)
|
|
133
|
+
throw new Error("You should provide the URL to the circuits templates on GitHub.")
|
|
133
134
|
|
|
134
135
|
const hashMatch = template.commitHash.match(commitHashPattern)
|
|
135
|
-
if (!hashMatch || hashMatch.length === 0 || hashMatch.length > 1)
|
|
136
|
-
|
|
136
|
+
if (!hashMatch || hashMatch.length === 0 || hashMatch.length > 1)
|
|
137
|
+
throw new Error("You should provide a valid commit hash of the circuit templates.")
|
|
138
|
+
|
|
137
139
|
// calculate the hash of the r1cs file
|
|
138
140
|
const r1csBlake2bHash = await blake512FromPath(localR1csPath)
|
|
139
141
|
|
|
@@ -146,12 +148,12 @@ export const parseCeremonyFile = async (path: string, cleanup: boolean = false):
|
|
|
146
148
|
const smallestPowersOfTauCompleteFilenameForCircuit = `${potFilenameTemplate}${doubleDigitsPowers}.ptau`
|
|
147
149
|
const firstZkeyCompleteFilename = `${circuitPrefix}_${genesisZkeyIndex}.zkey`
|
|
148
150
|
|
|
149
|
-
// storage paths
|
|
151
|
+
// storage paths
|
|
150
152
|
const r1csStorageFilePath = getR1csStorageFilePath(circuitPrefix, r1csCompleteFilename)
|
|
151
153
|
const wasmStorageFilePath = getWasmStorageFilePath(circuitPrefix, wasmCompleteFilename)
|
|
152
154
|
const potStorageFilePath = getPotStorageFilePath(smallestPowersOfTauCompleteFilenameForCircuit)
|
|
153
155
|
const zkeyStorageFilePath = getZkeyStorageFilePath(circuitPrefix, firstZkeyCompleteFilename)
|
|
154
|
-
|
|
156
|
+
|
|
155
157
|
const files: any = {
|
|
156
158
|
potFilename: smallestPowersOfTauCompleteFilenameForCircuit,
|
|
157
159
|
r1csFilename: r1csCompleteFilename,
|
|
@@ -164,14 +166,15 @@ export const parseCeremonyFile = async (path: string, cleanup: boolean = false):
|
|
|
164
166
|
r1csBlake2bHash: r1csBlake2bHash
|
|
165
167
|
}
|
|
166
168
|
|
|
167
|
-
// validate that the compiler hash is a valid hash
|
|
169
|
+
// validate that the compiler hash is a valid hash
|
|
168
170
|
const compiler = circuitData.compiler
|
|
169
171
|
const compilerHashMatch = compiler.commitHash.match(commitHashPattern)
|
|
170
|
-
if (!compilerHashMatch || compilerHashMatch.length === 0 || compilerHashMatch.length > 1)
|
|
172
|
+
if (!compilerHashMatch || compilerHashMatch.length === 0 || compilerHashMatch.length > 1)
|
|
173
|
+
throw new Error("You should provide a valid commit hash of the circuit compiler.")
|
|
171
174
|
|
|
172
175
|
// validate that the verification options are valid
|
|
173
176
|
const verification = circuitData.verification
|
|
174
|
-
if (verification.cfOrVm !== "CF" && verification.cfOrVm !== "VM")
|
|
177
|
+
if (verification.cfOrVm !== "CF" && verification.cfOrVm !== "VM")
|
|
175
178
|
throw new Error("Please enter a valid verification mechanism: either CF or VM")
|
|
176
179
|
|
|
177
180
|
// @todo VM parameters verification
|
|
@@ -184,8 +187,7 @@ export const parseCeremonyFile = async (path: string, cleanup: boolean = false):
|
|
|
184
187
|
let circuit: CircuitDocument | CircuitInputData = {} as CircuitDocument | CircuitInputData
|
|
185
188
|
|
|
186
189
|
if (data.timeoutMechanismType === CeremonyTimeoutType.DYNAMIC) {
|
|
187
|
-
if (circuitData.dynamicThreshold <= 0)
|
|
188
|
-
throw new Error("The dynamic threshold should be > 0.")
|
|
190
|
+
if (circuitData.dynamicThreshold <= 0) throw new Error("The dynamic threshold should be > 0.")
|
|
189
191
|
dynamicThreshold = circuitData.dynamicThreshold
|
|
190
192
|
|
|
191
193
|
// the Circuit data for the ceremony setup
|
|
@@ -193,7 +195,7 @@ export const parseCeremonyFile = async (path: string, cleanup: boolean = false):
|
|
|
193
195
|
name: circuitData.name,
|
|
194
196
|
description: circuitData.description,
|
|
195
197
|
prefix: circuitPrefix,
|
|
196
|
-
sequencePosition: i+1,
|
|
198
|
+
sequencePosition: i + 1,
|
|
197
199
|
metadata: metadata,
|
|
198
200
|
files: files,
|
|
199
201
|
template: template,
|
|
@@ -204,23 +206,20 @@ export const parseCeremonyFile = async (path: string, cleanup: boolean = false):
|
|
|
204
206
|
contributionComputation: 0,
|
|
205
207
|
fullContribution: 0,
|
|
206
208
|
verifyCloudFunction: 0
|
|
207
|
-
}
|
|
208
|
-
|
|
209
|
+
}
|
|
209
210
|
}
|
|
210
211
|
}
|
|
211
212
|
|
|
212
213
|
if (data.timeoutMechanismType === CeremonyTimeoutType.FIXED) {
|
|
213
|
-
if (circuitData.fixedTimeWindow <= 0)
|
|
214
|
-
throw new Error("The fixed time window threshold should be > 0.")
|
|
214
|
+
if (circuitData.fixedTimeWindow <= 0) throw new Error("The fixed time window threshold should be > 0.")
|
|
215
215
|
fixedTimeWindow = circuitData.fixedTimeWindow
|
|
216
216
|
|
|
217
|
-
|
|
218
217
|
// the Circuit data for the ceremony setup
|
|
219
218
|
circuit = {
|
|
220
219
|
name: circuitData.name,
|
|
221
220
|
description: circuitData.description,
|
|
222
221
|
prefix: circuitPrefix,
|
|
223
|
-
sequencePosition: i+1,
|
|
222
|
+
sequencePosition: i + 1,
|
|
224
223
|
metadata: metadata,
|
|
225
224
|
files: files,
|
|
226
225
|
template: template,
|
|
@@ -231,16 +230,15 @@ export const parseCeremonyFile = async (path: string, cleanup: boolean = false):
|
|
|
231
230
|
contributionComputation: 0,
|
|
232
231
|
fullContribution: 0,
|
|
233
232
|
verifyCloudFunction: 0
|
|
234
|
-
}
|
|
235
|
-
|
|
233
|
+
}
|
|
236
234
|
}
|
|
237
235
|
}
|
|
238
236
|
|
|
239
|
-
|
|
240
237
|
circuits.push(circuit)
|
|
241
238
|
|
|
242
|
-
// remove the local r1cs
|
|
239
|
+
// remove the local r1cs and wasm downloads (if used for verifying the config only vs setup)
|
|
243
240
|
if (cleanup) fs.unlinkSync(localR1csPath)
|
|
241
|
+
fs.unlinkSync(localWasmPath)
|
|
244
242
|
}
|
|
245
243
|
|
|
246
244
|
const setupData: SetupCeremonyData = {
|
|
@@ -258,7 +256,6 @@ export const parseCeremonyFile = async (path: string, cleanup: boolean = false):
|
|
|
258
256
|
}
|
|
259
257
|
|
|
260
258
|
return setupData
|
|
261
|
-
|
|
262
259
|
} catch (error: any) {
|
|
263
260
|
throw new Error(`Error while parsing up the ceremony setup file. ${error.message}`)
|
|
264
261
|
}
|
|
@@ -452,9 +449,11 @@ export const getPublicAttestationPreambleForContributor = (
|
|
|
452
449
|
ceremonyName: string,
|
|
453
450
|
isFinalizing: boolean
|
|
454
451
|
) =>
|
|
455
|
-
`Hey, I'm ${contributorIdentifier} and I have ${
|
|
456
|
-
|
|
457
|
-
|
|
452
|
+
`Hey, I'm ${contributorIdentifier} and I have ${isFinalizing ? "finalized" : "contributed to"} the ${ceremonyName}${
|
|
453
|
+
ceremonyName.toLowerCase().includes("trusted setup") || ceremonyName.toLowerCase().includes("ceremony")
|
|
454
|
+
? "."
|
|
455
|
+
: " MPC Phase2 Trusted Setup ceremony."
|
|
456
|
+
}\nThe following are my contribution signatures:`
|
|
458
457
|
|
|
459
458
|
/**
|
|
460
459
|
* Check and prepare public attestation for the contributor made only of its valid contributions.
|
|
@@ -735,4 +734,4 @@ export const getR1CSInfo = (localR1CSFilePath: string): CircuitMetadata => {
|
|
|
735
734
|
* @param in <number> - the input number to be converted.
|
|
736
735
|
* @returns <string> - the two digits stringified number derived from the conversion.
|
|
737
736
|
*/
|
|
738
|
-
export const convertToDoubleDigits = (amount: number): string => (amount < 10 ? `0${amount}` : amount.toString())
|
|
737
|
+
export const convertToDoubleDigits = (amount: number): string => (amount < 10 ? `0${amount}` : amount.toString())
|
package/src/helpers/vm.ts
CHANGED
|
@@ -82,7 +82,7 @@ export const vmDependenciesAndCacheArtifactsCommand = (
|
|
|
82
82
|
zKeyPath: string,
|
|
83
83
|
potPath: string,
|
|
84
84
|
snsTopic: string,
|
|
85
|
-
region: string
|
|
85
|
+
region: string
|
|
86
86
|
): Array<string> => [
|
|
87
87
|
"#!/bin/bash",
|
|
88
88
|
'MARKER_FILE="/var/run/my_script_ran"',
|
|
@@ -93,8 +93,13 @@ export const vmDependenciesAndCacheArtifactsCommand = (
|
|
|
93
93
|
// eslint-disable-next-line no-template-curly-in-string
|
|
94
94
|
"touch ${MARKER_FILE}",
|
|
95
95
|
"sudo yum update -y",
|
|
96
|
-
"curl -
|
|
97
|
-
"
|
|
96
|
+
"curl -O https://nodejs.org/dist/v16.13.0/node-v16.13.0-linux-x64.tar.xz",
|
|
97
|
+
"tar -xf node-v16.13.0-linux-x64.tar.xz",
|
|
98
|
+
"mv node-v16.13.0-linux-x64 nodejs",
|
|
99
|
+
"sudo mv nodejs /opt/",
|
|
100
|
+
"echo 'export NODEJS_HOME=/opt/nodejs' >> /etc/profile",
|
|
101
|
+
"echo 'export PATH=$NODEJS_HOME/bin:$PATH' >> /etc/profile",
|
|
102
|
+
"source /etc/profile",
|
|
98
103
|
"npm install -g snarkjs",
|
|
99
104
|
`aws s3 cp s3://${zKeyPath} /var/tmp/genesisZkey.zkey`,
|
|
100
105
|
`aws s3 cp s3://${potPath} /var/tmp/pot.ptau`,
|
|
@@ -118,6 +123,7 @@ export const vmContributionVerificationCommand = (
|
|
|
118
123
|
lastZkeyStoragePath: string,
|
|
119
124
|
verificationTranscriptStoragePathAndFilename: string
|
|
120
125
|
): Array<string> => [
|
|
126
|
+
`source /etc/profile`,
|
|
121
127
|
`aws s3 cp s3://${bucketName}/${lastZkeyStoragePath} /var/tmp/lastZKey.zkey > /var/tmp/log.txt`,
|
|
122
128
|
`snarkjs zkvi /var/tmp/genesisZkey.zkey /var/tmp/pot.ptau /var/tmp/lastZKey.zkey > /var/tmp/verification_transcript.log`,
|
|
123
129
|
`aws s3 cp /var/tmp/verification_transcript.log s3://${bucketName}/${verificationTranscriptStoragePathAndFilename} &>/dev/null`,
|
package/src/index.ts
CHANGED
|
@@ -87,7 +87,7 @@ export {
|
|
|
87
87
|
verifyContribution,
|
|
88
88
|
checkAndPrepareCoordinatorForFinalization,
|
|
89
89
|
finalizeCircuit,
|
|
90
|
-
finalizeCeremony
|
|
90
|
+
finalizeCeremony
|
|
91
91
|
} from "./helpers/functions"
|
|
92
92
|
export { toHex, blake512FromPath, computeSHA256ToHex, compareHashes } from "./helpers/crypto"
|
|
93
93
|
export {
|
|
@@ -159,4 +159,4 @@ export {
|
|
|
159
159
|
createEC2Client,
|
|
160
160
|
vmContributionVerificationCommand,
|
|
161
161
|
retrieveCommandStatus
|
|
162
|
-
} from "./helpers/vm"
|
|
162
|
+
} from "./helpers/vm"
|
package/src/types/index.ts
CHANGED
|
@@ -620,7 +620,6 @@ export type SetupCeremonyData = {
|
|
|
620
620
|
circuitArtifacts: Array<CeremonySetupTemplateCircuitArtifacts>
|
|
621
621
|
}
|
|
622
622
|
|
|
623
|
-
|
|
624
623
|
export type CeremonySetupTemplateCircuitArtifacts = {
|
|
625
624
|
artifacts: {
|
|
626
625
|
bucket: string
|
|
@@ -640,11 +639,16 @@ export type CeremonySetupTemplateCircuitName = {
|
|
|
640
639
|
}
|
|
641
640
|
|
|
642
641
|
export type CeremonySetupTemplate = {
|
|
643
|
-
title: string
|
|
642
|
+
title: string
|
|
644
643
|
description: string
|
|
645
644
|
startDate: string
|
|
646
645
|
endDate: string
|
|
647
646
|
timeoutMechanismType: CeremonyTimeoutType
|
|
648
|
-
penalty: number
|
|
649
|
-
circuits: Array<
|
|
650
|
-
|
|
647
|
+
penalty: number
|
|
648
|
+
circuits: Array<
|
|
649
|
+
CircuitDocument &
|
|
650
|
+
CeremonySetupTemplateCircuitArtifacts &
|
|
651
|
+
CeremonySetupTemplateCircuitTimeout &
|
|
652
|
+
CeremonySetupTemplateCircuitName
|
|
653
|
+
>
|
|
654
|
+
}
|