mirror of
https://github.com/semaphore-protocol/semaphore.git
synced 2026-01-09 14:48:12 -05:00
@@ -9,66 +9,66 @@ import logger from "js-logger"
|
||||
logger.useDefaults()
|
||||
|
||||
async function exec(command: string) {
|
||||
const { stderr, stdout } = await util.promisify(_exec)(command)
|
||||
const { stderr, stdout } = await util.promisify(_exec)(command)
|
||||
|
||||
if (stderr) {
|
||||
throw new Error(stderr)
|
||||
}
|
||||
if (stderr) {
|
||||
throw new Error(stderr)
|
||||
}
|
||||
|
||||
logger.info(stdout)
|
||||
logger.info(stdout)
|
||||
}
|
||||
|
||||
async function main() {
|
||||
const buildPath = config.paths.build.snark
|
||||
const solidityVersion = config.solidity.version
|
||||
const buildPath = config.paths.build.snark
|
||||
const solidityVersion = config.solidity.version
|
||||
|
||||
if (!fs.existsSync(buildPath)) {
|
||||
fs.mkdirSync(buildPath, { recursive: true })
|
||||
}
|
||||
if (!fs.existsSync(buildPath)) {
|
||||
fs.mkdirSync(buildPath, { recursive: true })
|
||||
}
|
||||
|
||||
if (!fs.existsSync(`${buildPath}/powersOfTau28_hez_final_14.ptau`)) {
|
||||
const url = "https://hermez.s3-eu-west-1.amazonaws.com"
|
||||
const fileName = "powersOfTau28_hez_final_14.ptau"
|
||||
if (!fs.existsSync(`${buildPath}/powersOfTau28_hez_final_14.ptau`)) {
|
||||
const url = "https://hermez.s3-eu-west-1.amazonaws.com"
|
||||
const fileName = "powersOfTau28_hez_final_14.ptau"
|
||||
|
||||
await download(`${url}/${fileName}`, buildPath)
|
||||
}
|
||||
await download(`${url}/${fileName}`, buildPath)
|
||||
}
|
||||
|
||||
await exec(`circom ./circuits/semaphore.circom --r1cs --wasm --sym -o ${buildPath}`)
|
||||
await exec(`circom ./circuits/semaphore.circom --r1cs --wasm --sym -o ${buildPath}`)
|
||||
|
||||
await r1cs.info(`${buildPath}/semaphore.r1cs`, logger)
|
||||
await r1cs.info(`${buildPath}/semaphore.r1cs`, logger)
|
||||
|
||||
await zKey.newZKey(
|
||||
`${buildPath}/semaphore.r1cs`,
|
||||
`${buildPath}/powersOfTau28_hez_final_14.ptau`,
|
||||
`${buildPath}/semaphore_0000.zkey`,
|
||||
logger
|
||||
)
|
||||
await zKey.newZKey(
|
||||
`${buildPath}/semaphore.r1cs`,
|
||||
`${buildPath}/powersOfTau28_hez_final_14.ptau`,
|
||||
`${buildPath}/semaphore_0000.zkey`,
|
||||
logger
|
||||
)
|
||||
|
||||
await zKey.beacon(
|
||||
`${buildPath}/semaphore_0000.zkey`,
|
||||
`${buildPath}/semaphore_final.zkey`,
|
||||
"Final Beacon",
|
||||
"0102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f",
|
||||
10,
|
||||
logger
|
||||
)
|
||||
await zKey.beacon(
|
||||
`${buildPath}/semaphore_0000.zkey`,
|
||||
`${buildPath}/semaphore_final.zkey`,
|
||||
"Final Beacon",
|
||||
"0102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f",
|
||||
10,
|
||||
logger
|
||||
)
|
||||
|
||||
const verificationKey = await zKey.exportVerificationKey(`${buildPath}/semaphore_final.zkey`, logger)
|
||||
const verificationKey = await zKey.exportVerificationKey(`${buildPath}/semaphore_final.zkey`, logger)
|
||||
|
||||
let verifierCode = await zKey.exportSolidityVerifier(
|
||||
`${buildPath}/semaphore_final.zkey`,
|
||||
{ groth16: fs.readFileSync("./node_modules/snarkjs/templates/verifier_groth16.sol.ejs", "utf8") },
|
||||
logger
|
||||
)
|
||||
verifierCode = verifierCode.replace(/pragma solidity \^\d+\.\d+\.\d+/, `pragma solidity ^${solidityVersion}`)
|
||||
let verifierCode = await zKey.exportSolidityVerifier(
|
||||
`${buildPath}/semaphore_final.zkey`,
|
||||
{ groth16: fs.readFileSync("./node_modules/snarkjs/templates/verifier_groth16.sol.ejs", "utf8") },
|
||||
logger
|
||||
)
|
||||
verifierCode = verifierCode.replace(/pragma solidity \^\d+\.\d+\.\d+/, `pragma solidity ^${solidityVersion}`)
|
||||
|
||||
fs.writeFileSync(`${buildPath}/verification_key.json`, JSON.stringify(verificationKey), "utf-8")
|
||||
fs.writeFileSync(`${config.paths.contracts}/Verifier.sol`, verifierCode, "utf-8")
|
||||
fs.writeFileSync(`${buildPath}/verification_key.json`, JSON.stringify(verificationKey), "utf-8")
|
||||
fs.writeFileSync(`${config.paths.contracts}/Verifier.sol`, verifierCode, "utf-8")
|
||||
}
|
||||
|
||||
main()
|
||||
.then(() => process.exit(0))
|
||||
.catch((error) => {
|
||||
console.error(error)
|
||||
process.exit(1)
|
||||
})
|
||||
.then(() => process.exit(0))
|
||||
.catch((error) => {
|
||||
console.error(error)
|
||||
process.exit(1)
|
||||
})
|
||||
|
||||
Reference in New Issue
Block a user