Skip to content

Commit

Permalink
ci: workflow to generate setupped circuit
Browse files Browse the repository at this point in the history
  • Loading branch information
AuHau committed Dec 20, 2023
1 parent c03b432 commit 6afda4f
Showing 1 changed file with 119 additions and 0 deletions.
119 changes: 119 additions & 0 deletions .github/workflows/generate.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,119 @@
name: Generates circuit assets
on:
workflow_dispatch:
inputs:
maxDepth:
description: 'Maximum depth of the slot tree'
default: '32'

maxSlots:
description: 'Maximum number of slots'
default: '256'

cellSize:
description: 'Cell size in bytes'
default: '2048'

blockSize:
description: 'Block size in bytes'
default: '65536'

nSamples:
description: 'Number of samples to prove'
default: '5'

entropy:
description: 'External randomness'
default: '1234567'

seed:
description: 'Seed for creating fake data'
default: '12345'

nSlots:
description: 'Number of slots in the dataset'
default: '11'

slotIndex:
description: 'Which slot we prove (0..NSLOTS-1)'
default: '3'

nCells:
description: 'Number of cells in this slot'
default: '512'

ceremonyContribution:
description: 'Input into the circuit ceremony setup'
default: 'Let the Codex rock!'

env:
nim_version: 1.6.14
nodejs_version: 18.15
ceremony_source: https://storage.googleapis.com/zkevm/ptau/powersOfTau28_hez_final_21.ptau
jobs:
build:
defaults:
run:
shell: bash --noprofile --norc -e -o pipefail {0}

# runs-on: buildjet-16vcpu-ubuntu-2204
runs-on: ubuntu-latest
timeout-minutes: 80
steps:
- name: Checkout sources
uses: actions/checkout@v3

- name: Setup Circom
uses: baptiste0928/cargo-install@v2
with:
crate: circom
git: https://github.com/iden3/circom.git

- name: Setup Nim
uses: jiro4989/setup-nim-action@v1
with:
nim-version: ${{ env.nim_version }}

- name: Setup Node.js
uses: actions/setup-node@v3
with:
node-version: ${{ env.nodejs_version }}

- name: Install SnarkJS
run: npm install -g snarkjs

- name: Setup CLI arguments
run: |
echo "CLI_ARGS=--maxDepth=${{ github.event.inputs.maxDepth }} --maxSlots=${{ github.event.inputs.maxSlots }} --cellSize=${{ github.event.inputs.cellSize }} --blockSize=${{ github.event.inputs.blockSize }} --nSamples=${{ github.event.inputs.nSamples }} --entropy=${{ github.event.inputs.entropy }} --seed=${{ github.event.inputs.seed }} --nSlots=${{ github.event.inputs.nSlots }} --slotIndex=${{ github.event.inputs.slotIndex }} --nCells=${{ github.event.inputs.nCells }}" >> $GITHUB_ENV
- name: Build CLI Proof Generator
run: |
cd ../reference/nim/proof_input/
nimble build -d:release cli
cd ../../../
- name: Compile the circuit
run: |
cd workflow
mkdir -p build
cd build
../../reference/nim/proof_input/cli $CLI_ARGS -v --circom="proof_main.circom"
circom --r1cs --wasm --O2 -l../../circuit proof_main.circom
- name: Circuit setup
run: |
wget -O ceremony.ptau -P .. ${{ env.ceremony_source }}
NODE_OPTIONS="--max-old-space-size=8192" snarkjs groth16 setup proof_main.r1cs ../ceremony.ptau proof_main_0000.zkey
NODE_OPTIONS="--max-old-space-size=8192" snarkjs zkey contribute proof_main_0000.zkey proof_main_0001.zkey --name="External Contribution" -e="${{ github.event.inputs.ceremonyContribution }}"
rm proof_main_0000.zkey
mv proof_main_0001.zkey proof_main.zkey
snarkjs zkey export verificationkey proof_main.zkey proof_main_verification_key.json
snarkjs zkey export solidityverifier proof_main.zkey verifier.sol
cd ..
- name: Upload artifact
uses: actions/upload-artifact@v3
with:
name: circuit-assets
path: build/
retention-days: 5

0 comments on commit 6afda4f

Please sign in to comment.