name: Generates circuit assets on: pull_request: 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' 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: | ENTROPY="asdf" echo "Entropy: $ENTROPY" 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=$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 -y build -d:release cli cd ../../../ # # - name: Compile the circuit # run: | # mkdir -p workflow/build # cd workflow/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 # mv proof_main_0000.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