@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 CHANGED
@@ -1,6 +1,6 @@
1
1
  /**
2
- * @module @p0tion/actions
3
- * @version 1.0.6
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 { S3Client, GetObjectCommand } from '@aws-sdk/client-s3';
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['timeoutMechanismType'] !== "DYNAMIC" /* CeremonyTimeoutType.DYNAMIC */ && data['timeoutMechanismType'] !== "FIXED" /* CeremonyTimeoutType.FIXED */)
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
- if (response.$metadata.httpStatusCode !== 200)
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
- if (response.Body instanceof Readable)
1112
- await streamPipeline(response.Body, fs.createWriteStream(localR1csPath));
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 wasmCommand = new GetObjectCommand({ Bucket: artifacts.bucket, Key: artifacts.wasmStoragePath });
1117
- const wasmResponse = await s3.send(wasmCommand);
1118
- if (wasmResponse.$metadata.httpStatusCode !== 200)
1119
- 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.`);
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 download (if used for verifying the config only vs setup)
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} MPC Phase2 Trusted Setup ceremony.\nThe following are my contribution signatures:`;
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, 'europe-west1');
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 -sL https://rpm.nodesource.com/setup_16.x | sudo bash - ",
2333
- "sudo yum install -y nodejs",
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`,
@@ -1,6 +1,6 @@
1
1
  /**
2
- * @module @p0tion/actions
3
- * @version 1.0.6
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['timeoutMechanismType'] !== "DYNAMIC" /* CeremonyTimeoutType.DYNAMIC */ && data['timeoutMechanismType'] !== "FIXED" /* CeremonyTimeoutType.FIXED */)
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
- if (response.$metadata.httpStatusCode !== 200)
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
- if (response.Body instanceof stream.Readable)
1114
- await streamPipeline(response.Body, fs.createWriteStream(localR1csPath));
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 wasmCommand = new clientS3.GetObjectCommand({ Bucket: artifacts.bucket, Key: artifacts.wasmStoragePath });
1119
- const wasmResponse = await s3.send(wasmCommand);
1120
- if (wasmResponse.$metadata.httpStatusCode !== 200)
1121
- 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.`);
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 download (if used for verifying the config only vs setup)
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} MPC Phase2 Trusted Setup ceremony.\nThe following are my contribution signatures:`;
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, 'europe-west1');
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 -sL https://rpm.nodesource.com/setup_16.x | sudo bash - ",
2335
- "sudo yum install -y nodejs",
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":"AA8BA;;;;;;;GAOG;AACH,eAAO,MAAM,gBAAgB,cACd,MAAM,4BACS,MAAM,4BACN,MAAM,8BACJ,MAAM,KACnC,QAAQ,GAAG,CAsBb,CAAA"}
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,EAAE,MAAM,IAAI,CAAA;AAErC,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,CA+NzG,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,WAImF,CAAA;AAE5G;;;;;;;;;;;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
+ {"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,CAoBd,CAAA;AAED;;;;;;;GAOG;AACH,eAAO,MAAM,iCAAiC,eAC9B,MAAM,uBACG,MAAM,gDACmB,MAAM,KACrD,MAAM,MAAM,CAMd,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
+ {"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-101d43f",
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": "2e6569587be6eeb1bbc2e65563eb247c100e9d66"
82
+ "gitHead": "8f0026fba3bb69e31e0716c61de58d1e4f513ff2"
87
83
  }
@@ -313,6 +313,6 @@ export const commonTerms = {
313
313
  finalizeCircuit: "finalizeCircuit",
314
314
  finalizeCeremony: "finalizeCeremony",
315
315
  downloadCircuitArtifacts: "downloadCircuitArtifacts",
316
- transferObject: "transferObject",
316
+ transferObject: "transferObject"
317
317
  }
318
318
  }
@@ -435,4 +435,4 @@ export const finalizeCeremony = async (functions: Functions, ceremonyId: string)
435
435
  await cf({
436
436
  ceremonyId
437
437
  })
438
- }
438
+ }
@@ -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
@@ -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, 'europe-west1')
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).
@@ -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 { S3Client, GetObjectCommand, HeadObjectCommand } from "@aws-sdk/client-s3"
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 { Readable, pipeline } from "stream"
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)) throw new Error("The provided path to the configuration file does not exist. Please provide an absolute path and try again.")
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 (data['timeoutMechanismType'] !== CeremonyTimeoutType.DYNAMIC && data['timeoutMechanismType'] !== CeremonyTimeoutType.FIXED)
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
- if (response.$metadata.httpStatusCode !== 200)
110
- 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.`)
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 wasmCommand = new GetObjectCommand({ Bucket: artifacts.bucket, Key: artifacts.wasmStoragePath })
120
- const wasmResponse = await s3.send(wasmCommand)
121
-
122
- if (wasmResponse.$metadata.httpStatusCode !== 200)
123
- 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.`)
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) throw new Error("You should provide the URL to the circuits templates on GitHub.")
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) throw new Error("You should provide a valid commit hash of the circuit templates.")
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) throw new Error("You should provide a valid commit hash of the circuit compiler.")
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 download (if used for verifying the config only vs setup)
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
- isFinalizing ? "finalized" : "contributed to"
457
- } the ${ceremonyName} MPC Phase2 Trusted Setup ceremony.\nThe following are my contribution signatures:`
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 -sL https://rpm.nodesource.com/setup_16.x | sudo bash - ",
97
- "sudo yum install -y nodejs",
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"
@@ -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<CircuitDocument & CeremonySetupTemplateCircuitArtifacts & CeremonySetupTemplateCircuitTimeout & CeremonySetupTemplateCircuitName>
650
- }
647
+ penalty: number
648
+ circuits: Array<
649
+ CircuitDocument &
650
+ CeremonySetupTemplateCircuitArtifacts &
651
+ CeremonySetupTemplateCircuitTimeout &
652
+ CeremonySetupTemplateCircuitName
653
+ >
654
+ }