From 75977670eb14b7c913d6a057a769a28d0923cc51 Mon Sep 17 00:00:00 2001 From: David Rusu Date: Thu, 30 Oct 2025 15:22:19 +0400 Subject: [PATCH 01/23] feat(zkey): generate proving keys on release --- .github/workflows/build-circuits.yml | 146 +++++++++++++++++++++++++++ CONTRIBUTING.md | 24 +++++ 2 files changed, 170 insertions(+) diff --git a/.github/workflows/build-circuits.yml b/.github/workflows/build-circuits.yml index bdb8a73..253e0c1 100644 --- a/.github/workflows/build-circuits.yml +++ b/.github/workflows/build-circuits.yml @@ -40,6 +40,118 @@ jobs: echo "tag=$TAG" >> $GITHUB_OUTPUT echo "version=$VERSION" >> $GITHUB_OUTPUT + generate-proving-keys: + name: Generate Proving Keys + runs-on: ubuntu-latest + needs: + - setup + env: + VERSION: ${{ needs.setup.outputs.version }} + PTAU_URL: "https://storage.googleapis.com/zkevm/ptau/powersOfTau28_hez_final_21.ptau" + PTAU_FILE: "powersOfTau28_hez_final_21.ptau" + steps: + - name: Install Rust Toolchain + uses: actions-rust-lang/setup-rust-toolchain@fb51252c7ba57d633bc668f941da052e410add48 + with: + toolchain: stable + cache: false + + - name: Install Circom + run: | + git clone https://github.com/iden3/circom.git + cd circom + RUSTFLAGS="-A dead_code" cargo build --release + RUSTFLAGS="-A dead_code" cargo install --path circom + circom --version + + - name: Checkout + uses: actions/checkout@8edcb1bdb4e267140fa742c62e395cd74f332709 + + - name: Initialise Submodules + run: git submodule update --init --recursive + + - name: Setup Node.js + uses: actions/setup-node@1e60f620b9541d16bece96c5465dc8ee9832be0b + with: + node-version: '20' + + - name: Install snarkjs + run: npm install -g snarkjs@latest + + - name: Cache Powers of Tau + id: cache-ptau + uses: actions/cache@13aacd865c20de90d75de3b17ebe84f7a17d57d2 + with: + path: ${{ env.PTAU_FILE }} + key: ptau-${{ env.PTAU_FILE }} + + - name: Download Powers of Tau + if: steps.cache-ptau.outputs.cache-hit != 'true' + run: | + echo "Downloading Powers of Tau file (this may take a while, ~3GB)..." + curl -L -o "${{ env.PTAU_FILE }}" "${{ env.PTAU_URL }}" + echo "Download complete." + + - name: Generate PoL Proving Key + run: | + cd mantle + circom --r1cs --wasm pol.circom + snarkjs groth16 setup pol.r1cs ../${{ env.PTAU_FILE }} pol.zkey + mkdir -p pol-${{ env.VERSION }} + mv pol.zkey pol-${{ env.VERSION }}/ + tar -czf pol-${{ env.VERSION }}.zkey.tar.gz pol-${{ env.VERSION }} + + - name: Generate PoQ Proving Key + run: | + cd blend + circom --r1cs --wasm poq.circom + snarkjs groth16 setup poq.r1cs ../${{ env.PTAU_FILE }} poq.zkey + mkdir -p poq-${{ env.VERSION }} + mv poq.zkey poq-${{ env.VERSION }}/ + tar -czf poq-${{ env.VERSION }}.zkey.tar.gz poq-${{ env.VERSION }} + + - name: Generate ZKSign Proving Key + run: | + cd mantle + circom --r1cs --wasm signature.circom + snarkjs groth16 setup signature.r1cs ../${{ env.PTAU_FILE }} zksign.zkey + mkdir -p zksign-${{ env.VERSION }} + mv zksign.zkey zksign-${{ env.VERSION }}/ + tar -czf zksign-${{ env.VERSION }}.zkey.tar.gz zksign-${{ env.VERSION }} + + - name: Generate PoC Proving Key + run: | + cd mantle + circom --r1cs --wasm poc.circom + snarkjs groth16 setup poc.r1cs ../${{ env.PTAU_FILE }} poc.zkey + mkdir -p poc-${{ env.VERSION }} + mv poc.zkey poc-${{ env.VERSION }}/ + tar -czf poc-${{ env.VERSION }}.zkey.tar.gz poc-${{ env.VERSION }} + + - name: Upload PoL Proving Key + uses: actions/upload-artifact@de65e23aa2b7e23d713bb51fbfcb6d502f8667d8 + with: + name: pol-${{ env.VERSION }}.zkey.tar.gz + path: mantle/pol-${{ env.VERSION }}.zkey.tar.gz + + - name: Upload PoQ Proving Key + uses: actions/upload-artifact@de65e23aa2b7e23d713bb51fbfcb6d502f8667d8 + with: + name: poq-${{ env.VERSION }}.zkey.tar.gz + path: blend/poq-${{ env.VERSION }}.zkey.tar.gz + + - name: Upload ZKSign Proving Key + uses: actions/upload-artifact@de65e23aa2b7e23d713bb51fbfcb6d502f8667d8 + with: + name: zksign-${{ env.VERSION }}.zkey.tar.gz + path: mantle/zksign-${{ env.VERSION }}.zkey.tar.gz + + - name: Upload PoC Proving Key + uses: actions/upload-artifact@de65e23aa2b7e23d713bb51fbfcb6d502f8667d8 + with: + name: poc-${{ env.VERSION }}.zkey.tar.gz + path: mantle/poc-${{ env.VERSION }}.zkey.tar.gz + build-linux: name: Build Linux Binaries (Native) runs-on: ubuntu-latest @@ -461,6 +573,7 @@ jobs: runs-on: ubuntu-latest needs: - setup + - generate-proving-keys - build-linux - build-windows - build-macos @@ -535,3 +648,36 @@ jobs: asset_path: ${{ env.ARTIFACT_NAME }} asset_name: ${{ env.ARTIFACT_NAME }} asset_content_type: application/octet-stream + + upload-zkey-artifacts: + name: Upload Proving Key Artifacts to Release + runs-on: ubuntu-latest + needs: + - setup + - publish-release + strategy: + fail-fast: false + matrix: + circuit: + - pol + - poq + - zksign + - poc + env: + UPLOAD_URL: ${{ needs.publish-release.outputs.upload_url }} + ARTIFACT_NAME: ${{ matrix.circuit }}-${{ needs.setup.outputs.version }}.zkey.tar.gz + steps: + - name: Download Proving Key Artifact + uses: actions/download-artifact@448e3f862ab3ef47aa50ff917776823c9946035b + with: + name: ${{ env.ARTIFACT_NAME }} + + - name: Upload Proving Key to Release + uses: actions/upload-release-asset@ef2adfe8cb8ebfa540930c452c576b3819990faa + env: + GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} + with: + upload_url: ${{ env.UPLOAD_URL }} + asset_path: ${{ env.ARTIFACT_NAME }} + asset_name: ${{ env.ARTIFACT_NAME }} + asset_content_type: application/octet-stream diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index 57b2001..20e0d74 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -10,6 +10,30 @@ To trigger a release build: > Currently, releases published this way are marked as **Draft** and **Pre-Release** to ensure that the changelog and pre-release steps are manually reviewed first. +### Generated Artifacts + +Each release includes the following artifacts: + +#### Platform-Specific Binaries + +For each supported platform (Linux x86_64, macOS aarch64, Windows x86_64): + +- **Prover binaries** (`prover-{version}-{os}-{arch}.tar.gz`) + Rapidsnark prover binaries for generating zk-SNARK proofs + +- **Verifier binaries** (`verifier-{version}-{os}-{arch}.tar.gz`) + Rapidsnark verifier binaries for verifying zk-SNARK proofs + +- **Witness generators** (`{circuit}-{version}-{os}-{arch}.tar.gz`) + Compiled C++ witness generator binaries for each circuit (PoL, PoQ, ZKSign, PoC) + +#### Platform-Independent Proving Keys + +- **Proving keys** (`{circuit}-{version}.zkey.tar.gz`) + Groth16 proving keys (.zkey files) for each circuit, required for generating proofs + +These proving keys are generated using the Hermez Powers of Tau ceremony (`powersOfTau28_hez_final_21.ptau`), which supports circuits with up to 2^21 (~2M) constraints. The keys are platform-independent and can be used with any compatible prover implementation. + ### Example ```bash From 4d214ff2ef5fe84731616d3305b9954670186231 Mon Sep 17 00:00:00 2001 From: David Rusu Date: Thu, 30 Oct 2025 16:41:29 +0400 Subject: [PATCH 02/23] feat(testing): allow test releases in PR --- .github/workflows/build-circuits.yml | 29 +++++++++++++++++++++------- 1 file changed, 22 insertions(+), 7 deletions(-) diff --git a/.github/workflows/build-circuits.yml b/.github/workflows/build-circuits.yml index 253e0c1..d2d36db 100644 --- a/.github/workflows/build-circuits.yml +++ b/.github/workflows/build-circuits.yml @@ -4,6 +4,9 @@ on: push: tags: - "v*.*.*" + pull_request: + branches: + - main workflow_dispatch: inputs: tag: @@ -22,19 +25,25 @@ jobs: id: define-version env: # Use the tag name if it is available, otherwise use the input version. - # If neither is available, default to the commit hash. - TAG: ${{ (github.ref_type == 'tag' && github.ref_name) || inputs.tag || 'v0.0.0' }} + # For PR testing, use a test version based on PR number and commit SHA. + TAG: ${{ (github.ref_type == 'tag' && github.ref_name) || inputs.tag || format('v0.0.0-pr{0}-{1}', github.event.pull_request.number || '0', github.sha) }} run: | if [ -z "$TAG" ]; then echo "Could not determine tag." exit 1 - elif [[ ! "$TAG" =~ ^v[0-9]+\.[0-9]+\.[0-9]+$ ]]; then - echo "TAG must follow the format of 'vX.Y.Z'. Value: '$VERSION'." - exit 2 fi - # Parse Version: Take only the vX.Y.Z part. - VERSION=$(echo $TAG | cut -d'-' -f2) + # For pull requests, allow test versions with format v0.0.0-pr* + if [[ "$TAG" =~ ^v0\.0\.0-pr ]]; then + echo "Using test version for PR: $TAG" + VERSION="$TAG" + elif [[ ! "$TAG" =~ ^v[0-9]+\.[0-9]+\.[0-9]+$ ]]; then + echo "TAG must follow the format of 'vX.Y.Z'. Value: '$TAG'." + exit 2 + else + # Parse Version: Take only the vX.Y.Z part. + VERSION=$(echo $TAG | cut -d'-' -f1) + fi # Export the tag and version. echo "tag=$TAG" >> $GITHUB_OUTPUT @@ -571,6 +580,8 @@ jobs: publish-release: name: Create Release runs-on: ubuntu-latest + # Only create releases for tags, not for PRs + if: github.ref_type == 'tag' || github.event_name == 'workflow_dispatch' needs: - setup - generate-proving-keys @@ -610,6 +621,8 @@ jobs: upload-artifacts: name: Upload Artifacts to Release runs-on: ubuntu-latest + # Only upload to release for tags, not for PRs + if: github.ref_type == 'tag' || github.event_name == 'workflow_dispatch' needs: - setup - publish-release @@ -652,6 +665,8 @@ jobs: upload-zkey-artifacts: name: Upload Proving Key Artifacts to Release runs-on: ubuntu-latest + # Only upload to release for tags, not for PRs + if: github.ref_type == 'tag' || github.event_name == 'workflow_dispatch' needs: - setup - publish-release From b9e8c74d4fa8ef86c7567484290914a8350d4ee3 Mon Sep 17 00:00:00 2001 From: David Rusu Date: Thu, 30 Oct 2025 16:47:08 +0400 Subject: [PATCH 03/23] update cache to v4 --- .github/workflows/build-circuits.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/build-circuits.yml b/.github/workflows/build-circuits.yml index d2d36db..2391557 100644 --- a/.github/workflows/build-circuits.yml +++ b/.github/workflows/build-circuits.yml @@ -89,7 +89,7 @@ jobs: - name: Cache Powers of Tau id: cache-ptau - uses: actions/cache@13aacd865c20de90d75de3b17ebe84f7a17d57d2 + uses: actions/cache@v4 with: path: ${{ env.PTAU_FILE }} key: ptau-${{ env.PTAU_FILE }} From 7e2c5f3ac0dbeef9fb143f448bef4b0909e7b36e Mon Sep 17 00:00:00 2001 From: David Rusu Date: Fri, 31 Oct 2025 10:59:31 +0400 Subject: [PATCH 04/23] feat(release): one artifact per target --- .github/actions/compile-and-bundle/action.yml | 15 +- .github/workflows/build-circuits.yml | 202 ++++++++++++------ 2 files changed, 143 insertions(+), 74 deletions(-) diff --git a/.github/actions/compile-and-bundle/action.yml b/.github/actions/compile-and-bundle/action.yml index ae7c624..808760d 100644 --- a/.github/actions/compile-and-bundle/action.yml +++ b/.github/actions/compile-and-bundle/action.yml @@ -110,19 +110,18 @@ runs: env: CIRCUIT_NAME: ${{ steps.parse-circuit-path.outputs.CIRCUIT_FILESTEM }} PLATFORM_BINARY_NAME: ${{ steps.parse-circuit-path.outputs.PLATFORM_BINARY_NAME }} - BUNDLE_NAME: ${{ inputs.circuit-name-binary }}-${{ steps.parse-circuit-path.outputs.BUNDLE_TRIPLET }} + BUNDLE_NAME: nomos-circuits-${{ inputs.os }}-${{ inputs.arch }}-${{ inputs.version }} + CIRCUIT_NAME_BINARY: ${{ inputs.circuit-name-binary }} WITNESS_GENERATOR_DIR: ${{ steps.parse-circuit-path.outputs.CIRCUIT_CPP_PATH }} run: | - BUNDLE_DIR="${BUNDLE_NAME}/witness-generator" + BUNDLE_DIR="${BUNDLE_NAME}/${CIRCUIT_NAME_BINARY}" mkdir -p "$BUNDLE_DIR" - mv "${WITNESS_GENERATOR_DIR}/${CIRCUIT_NAME}" "$BUNDLE_DIR/${PLATFORM_BINARY_NAME}" - mv "${WITNESS_GENERATOR_DIR}/${CIRCUIT_NAME}.dat" "$BUNDLE_DIR/${PLATFORM_BINARY_NAME}.dat" - - tar -czf "${BUNDLE_NAME}.tar.gz" "${BUNDLE_NAME}" + mv "${WITNESS_GENERATOR_DIR}/${CIRCUIT_NAME}" "$BUNDLE_DIR/witness_generator" + mv "${WITNESS_GENERATOR_DIR}/${CIRCUIT_NAME}.dat" "$BUNDLE_DIR/witness_generator.dat" - name: Upload ${{ inputs.circuit-name-display }} uses: actions/upload-artifact@de65e23aa2b7e23d713bb51fbfcb6d502f8667d8 with: - name: ${{ inputs.circuit-name-binary }}-${{ steps.parse-circuit-path.outputs.BUNDLE_TRIPLET }}.tar.gz - path: ${{ inputs.circuit-name-binary }}-${{ steps.parse-circuit-path.outputs.BUNDLE_TRIPLET }}.tar.gz + name: ${{ inputs.circuit-name-binary }}-${{ inputs.version }}-${{ inputs.os }}-${{ inputs.arch }} + path: nomos-circuits-${{ inputs.os }}-${{ inputs.arch }}-${{ inputs.version }}/${{ inputs.circuit-name-binary }}/ diff --git a/.github/workflows/build-circuits.yml b/.github/workflows/build-circuits.yml index 2391557..51fb905 100644 --- a/.github/workflows/build-circuits.yml +++ b/.github/workflows/build-circuits.yml @@ -106,60 +106,48 @@ jobs: cd mantle circom --r1cs --wasm pol.circom snarkjs groth16 setup pol.r1cs ../${{ env.PTAU_FILE }} pol.zkey - mkdir -p pol-${{ env.VERSION }} - mv pol.zkey pol-${{ env.VERSION }}/ - tar -czf pol-${{ env.VERSION }}.zkey.tar.gz pol-${{ env.VERSION }} - name: Generate PoQ Proving Key run: | cd blend circom --r1cs --wasm poq.circom snarkjs groth16 setup poq.r1cs ../${{ env.PTAU_FILE }} poq.zkey - mkdir -p poq-${{ env.VERSION }} - mv poq.zkey poq-${{ env.VERSION }}/ - tar -czf poq-${{ env.VERSION }}.zkey.tar.gz poq-${{ env.VERSION }} - name: Generate ZKSign Proving Key run: | cd mantle circom --r1cs --wasm signature.circom snarkjs groth16 setup signature.r1cs ../${{ env.PTAU_FILE }} zksign.zkey - mkdir -p zksign-${{ env.VERSION }} - mv zksign.zkey zksign-${{ env.VERSION }}/ - tar -czf zksign-${{ env.VERSION }}.zkey.tar.gz zksign-${{ env.VERSION }} - name: Generate PoC Proving Key run: | cd mantle circom --r1cs --wasm poc.circom snarkjs groth16 setup poc.r1cs ../${{ env.PTAU_FILE }} poc.zkey - mkdir -p poc-${{ env.VERSION }} - mv poc.zkey poc-${{ env.VERSION }}/ - tar -czf poc-${{ env.VERSION }}.zkey.tar.gz poc-${{ env.VERSION }} - name: Upload PoL Proving Key uses: actions/upload-artifact@de65e23aa2b7e23d713bb51fbfcb6d502f8667d8 with: - name: pol-${{ env.VERSION }}.zkey.tar.gz - path: mantle/pol-${{ env.VERSION }}.zkey.tar.gz + name: pol-proving-key + path: mantle/pol.zkey - name: Upload PoQ Proving Key uses: actions/upload-artifact@de65e23aa2b7e23d713bb51fbfcb6d502f8667d8 with: - name: poq-${{ env.VERSION }}.zkey.tar.gz - path: blend/poq-${{ env.VERSION }}.zkey.tar.gz + name: poq-proving-key + path: blend/poq.zkey - name: Upload ZKSign Proving Key uses: actions/upload-artifact@de65e23aa2b7e23d713bb51fbfcb6d502f8667d8 with: - name: zksign-${{ env.VERSION }}.zkey.tar.gz - path: mantle/zksign-${{ env.VERSION }}.zkey.tar.gz + name: zksign-proving-key + path: mantle/zksign.zkey - name: Upload PoC Proving Key uses: actions/upload-artifact@de65e23aa2b7e23d713bb51fbfcb6d502f8667d8 with: - name: poc-${{ env.VERSION }}.zkey.tar.gz - path: mantle/poc-${{ env.VERSION }}.zkey.tar.gz + name: poc-proving-key + path: mantle/poc.zkey build-linux: name: Build Linux Binaries (Native) @@ -288,6 +276,47 @@ jobs: os: ${{ env.OS }} arch: ${{ env.ARCH }} + - name: Download All Witness Generator Artifacts + uses: actions/download-artifact@448e3f862ab3ef47aa50ff917776823c9946035b + with: + pattern: "*-${{ env.VERSION }}-${{ env.OS }}-${{ env.ARCH }}" + path: witness-generators/ + merge-multiple: true + + - name: Download All Proving Key Artifacts + uses: actions/download-artifact@448e3f862ab3ef47aa50ff917776823c9946035b + with: + pattern: "*-proving-key" + path: proving-keys/ + + - name: Create Unified Release Bundle + env: + BUNDLE_NAME: nomos-circuits-${{ env.OS }}-${{ env.ARCH }}-${{ env.VERSION }} + run: | + # Create the bundle directory structure + mkdir -p "${BUNDLE_NAME}" + + # Create VERSION file + echo "${{ env.VERSION }}" > "${BUNDLE_NAME}/VERSION" + + # Move witness generators from artifact download location to bundle + mv witness-generators/nomos-circuits-${{ env.OS }}-${{ env.ARCH }}-${{ env.VERSION }}/* "${BUNDLE_NAME}/" + + # Copy proving keys into each circuit directory + cp proving-keys/pol-proving-key/pol.zkey "${BUNDLE_NAME}/pol/proving_key.zkey" + cp proving-keys/poq-proving-key/poq.zkey "${BUNDLE_NAME}/poq/proving_key.zkey" + cp proving-keys/zksign-proving-key/zksign.zkey "${BUNDLE_NAME}/zksig/proving_key.zkey" + cp proving-keys/poc-proving-key/poc.zkey "${BUNDLE_NAME}/poc/proving_key.zkey" + + # Create tarball + tar -czf "${BUNDLE_NAME}.tar.gz" "${BUNDLE_NAME}" + + - name: Upload Unified Release Bundle + uses: actions/upload-artifact@de65e23aa2b7e23d713bb51fbfcb6d502f8667d8 + with: + name: nomos-circuits-${{ env.OS }}-${{ env.ARCH }}-${{ env.VERSION }}.tar.gz + path: nomos-circuits-${{ env.OS }}-${{ env.ARCH }}-${{ env.VERSION }}.tar.gz + build-windows: name: Build Windows Binaries (Native) runs-on: windows-latest @@ -454,6 +483,48 @@ jobs: os: ${{ env.OS }} arch: ${{ env.ARCH }} + - name: Download All Witness Generator Artifacts + uses: actions/download-artifact@448e3f862ab3ef47aa50ff917776823c9946035b + with: + pattern: "*-${{ env.VERSION }}-${{ env.OS }}-${{ env.ARCH }}" + path: witness-generators/ + merge-multiple: true + + - name: Download All Proving Key Artifacts + uses: actions/download-artifact@448e3f862ab3ef47aa50ff917776823c9946035b + with: + pattern: "*-proving-key" + path: proving-keys/ + + - name: Create Unified Release Bundle + shell: msys2 {0} + env: + BUNDLE_NAME: nomos-circuits-${{ env.OS }}-${{ env.ARCH }}-${{ env.VERSION }} + run: | + # Create the bundle directory structure + mkdir -p "${BUNDLE_NAME}" + + # Create VERSION file + echo "${{ env.VERSION }}" > "${BUNDLE_NAME}/VERSION" + + # Move witness generators from artifact download location to bundle + mv witness-generators/nomos-circuits-${{ env.OS }}-${{ env.ARCH }}-${{ env.VERSION }}/* "${BUNDLE_NAME}/" + + # Copy proving keys into each circuit directory + cp proving-keys/pol-proving-key/pol.zkey "${BUNDLE_NAME}/pol/proving_key.zkey" + cp proving-keys/poq-proving-key/poq.zkey "${BUNDLE_NAME}/poq/proving_key.zkey" + cp proving-keys/zksign-proving-key/zksign.zkey "${BUNDLE_NAME}/zksig/proving_key.zkey" + cp proving-keys/poc-proving-key/poc.zkey "${BUNDLE_NAME}/poc/proving_key.zkey" + + # Create tarball + tar -czf "${BUNDLE_NAME}.tar.gz" "${BUNDLE_NAME}" + + - name: Upload Unified Release Bundle + uses: actions/upload-artifact@de65e23aa2b7e23d713bb51fbfcb6d502f8667d8 + with: + name: nomos-circuits-${{ env.OS }}-${{ env.ARCH }}-${{ env.VERSION }}.tar.gz + path: nomos-circuits-${{ env.OS }}-${{ env.ARCH }}-${{ env.VERSION }}.tar.gz + build-macos: name: Build MacOS Binaries (Native) runs-on: macos-latest @@ -577,6 +648,47 @@ jobs: os: ${{ env.OS }} arch: ${{ env.ARCH }} + - name: Download All Witness Generator Artifacts + uses: actions/download-artifact@448e3f862ab3ef47aa50ff917776823c9946035b + with: + pattern: "*-${{ env.VERSION }}-${{ env.OS }}-${{ env.ARCH }}" + path: witness-generators/ + merge-multiple: true + + - name: Download All Proving Key Artifacts + uses: actions/download-artifact@448e3f862ab3ef47aa50ff917776823c9946035b + with: + pattern: "*-proving-key" + path: proving-keys/ + + - name: Create Unified Release Bundle + env: + BUNDLE_NAME: nomos-circuits-${{ env.OS }}-${{ env.ARCH }}-${{ env.VERSION }} + run: | + # Create the bundle directory structure + mkdir -p "${BUNDLE_NAME}" + + # Create VERSION file + echo "${{ env.VERSION }}" > "${BUNDLE_NAME}/VERSION" + + # Move witness generators from artifact download location to bundle + mv witness-generators/nomos-circuits-${{ env.OS }}-${{ env.ARCH }}-${{ env.VERSION }}/* "${BUNDLE_NAME}/" + + # Copy proving keys into each circuit directory + cp proving-keys/pol-proving-key/pol.zkey "${BUNDLE_NAME}/pol/proving_key.zkey" + cp proving-keys/poq-proving-key/poq.zkey "${BUNDLE_NAME}/poq/proving_key.zkey" + cp proving-keys/zksign-proving-key/zksign.zkey "${BUNDLE_NAME}/zksig/proving_key.zkey" + cp proving-keys/poc-proving-key/poc.zkey "${BUNDLE_NAME}/poc/proving_key.zkey" + + # Create tarball + tar -czf "${BUNDLE_NAME}.tar.gz" "${BUNDLE_NAME}" + + - name: Upload Unified Release Bundle + uses: actions/upload-artifact@de65e23aa2b7e23d713bb51fbfcb6d502f8667d8 + with: + name: nomos-circuits-${{ env.OS }}-${{ env.ARCH }}-${{ env.VERSION }}.tar.gz + path: nomos-circuits-${{ env.OS }}-${{ env.ARCH }}-${{ env.VERSION }}.tar.gz + publish-release: name: Create Release runs-on: ubuntu-latest @@ -619,7 +731,7 @@ jobs: prerelease: true upload-artifacts: - name: Upload Artifacts to Release + name: Upload Unified Bundles to Release runs-on: ubuntu-latest # Only upload to release for tags, not for PRs if: github.ref_type == 'tag' || github.event_name == 'workflow_dispatch' @@ -636,58 +748,16 @@ jobs: arch: aarch64 - os: windows arch: x86_64 - artifact: - - prover - - verifier - - pol - - poq - - zksign - - poc env: UPLOAD_URL: ${{ needs.publish-release.outputs.upload_url }} - ARTIFACT_NAME: ${{ matrix.artifact }}-${{ needs.setup.outputs.version }}-${{ matrix.platform.os }}-${{ matrix.platform.arch }}.tar.gz + ARTIFACT_NAME: nomos-circuits-${{ matrix.platform.os }}-${{ matrix.platform.arch }}-${{ needs.setup.outputs.version }}.tar.gz steps: - - name: Download Artifacts + - name: Download Unified Bundle uses: actions/download-artifact@448e3f862ab3ef47aa50ff917776823c9946035b with: name: ${{ env.ARTIFACT_NAME }} - - name: Upload Artifacts to Release - uses: actions/upload-release-asset@ef2adfe8cb8ebfa540930c452c576b3819990faa - env: - GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} - with: - upload_url: ${{ env.UPLOAD_URL }} - asset_path: ${{ env.ARTIFACT_NAME }} - asset_name: ${{ env.ARTIFACT_NAME }} - asset_content_type: application/octet-stream - - upload-zkey-artifacts: - name: Upload Proving Key Artifacts to Release - runs-on: ubuntu-latest - # Only upload to release for tags, not for PRs - if: github.ref_type == 'tag' || github.event_name == 'workflow_dispatch' - needs: - - setup - - publish-release - strategy: - fail-fast: false - matrix: - circuit: - - pol - - poq - - zksign - - poc - env: - UPLOAD_URL: ${{ needs.publish-release.outputs.upload_url }} - ARTIFACT_NAME: ${{ matrix.circuit }}-${{ needs.setup.outputs.version }}.zkey.tar.gz - steps: - - name: Download Proving Key Artifact - uses: actions/download-artifact@448e3f862ab3ef47aa50ff917776823c9946035b - with: - name: ${{ env.ARTIFACT_NAME }} - - - name: Upload Proving Key to Release + - name: Upload Unified Bundle to Release uses: actions/upload-release-asset@ef2adfe8cb8ebfa540930c452c576b3819990faa env: GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} From 39320d81d249ff20b5a8793aa14e775a7254f847 Mon Sep 17 00:00:00 2001 From: David Rusu Date: Fri, 31 Oct 2025 11:38:38 +0400 Subject: [PATCH 05/23] feat(zkey): add contribution to each zkey --- .github/workflows/build-circuits.yml | 20 ++++++++++++-------- 1 file changed, 12 insertions(+), 8 deletions(-) diff --git a/.github/workflows/build-circuits.yml b/.github/workflows/build-circuits.yml index 51fb905..3cfef33 100644 --- a/.github/workflows/build-circuits.yml +++ b/.github/workflows/build-circuits.yml @@ -104,26 +104,30 @@ jobs: - name: Generate PoL Proving Key run: | cd mantle - circom --r1cs --wasm pol.circom - snarkjs groth16 setup pol.r1cs ../${{ env.PTAU_FILE }} pol.zkey + circom -O2 --r1cs pol.circom + snarkjs groth16 setup pol.r1cs ../${{ env.PTAU_FILE }} pol-0.zkey + head -c 32 /dev/random | snarkjs zkey contribute pol-0.zkey pol.zkey --name="RELEASE" -v - name: Generate PoQ Proving Key run: | cd blend - circom --r1cs --wasm poq.circom - snarkjs groth16 setup poq.r1cs ../${{ env.PTAU_FILE }} poq.zkey + circom -O2 --r1cs poq.circom + snarkjs groth16 setup poq.r1cs ../${{ env.PTAU_FILE }} poq-0.zkey + head -c 32 /dev/random | snarkjs zkey contribute poq-0.zkey poq.zkey --name="RELEASE" -v - name: Generate ZKSign Proving Key run: | cd mantle - circom --r1cs --wasm signature.circom - snarkjs groth16 setup signature.r1cs ../${{ env.PTAU_FILE }} zksign.zkey + circom -O2 --r1cs signature.circom + snarkjs groth16 setup signature.r1cs ../${{ env.PTAU_FILE }} zksign-0.zkey + head -c 32 /dev/random | snarkjs zkey contribute zksign-0.zkey zksign.zkey --name="RELEASE" -v - name: Generate PoC Proving Key run: | cd mantle - circom --r1cs --wasm poc.circom - snarkjs groth16 setup poc.r1cs ../${{ env.PTAU_FILE }} poc.zkey + circom -O2 --r1cs poc.circom + snarkjs groth16 setup poc.r1cs ../${{ env.PTAU_FILE }} poc-0.zkey + head -c 32 /dev/random | snarkjs zkey contribute poc-0.zkey poc.zkey --name="RELEASE" -v - name: Upload PoL Proving Key uses: actions/upload-artifact@de65e23aa2b7e23d713bb51fbfcb6d502f8667d8 From fa779175b185382c72184029cacb0329b99a67a2 Mon Sep 17 00:00:00 2001 From: David Rusu Date: Fri, 31 Oct 2025 11:41:57 +0400 Subject: [PATCH 06/23] feat(release): fix bundling step --- .github/workflows/build-circuits.yml | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/.github/workflows/build-circuits.yml b/.github/workflows/build-circuits.yml index 3cfef33..8a71d8a 100644 --- a/.github/workflows/build-circuits.yml +++ b/.github/workflows/build-circuits.yml @@ -304,7 +304,7 @@ jobs: echo "${{ env.VERSION }}" > "${BUNDLE_NAME}/VERSION" # Move witness generators from artifact download location to bundle - mv witness-generators/nomos-circuits-${{ env.OS }}-${{ env.ARCH }}-${{ env.VERSION }}/* "${BUNDLE_NAME}/" + mv witness-generators/* "${BUNDLE_NAME}/" # Copy proving keys into each circuit directory cp proving-keys/pol-proving-key/pol.zkey "${BUNDLE_NAME}/pol/proving_key.zkey" @@ -512,7 +512,7 @@ jobs: echo "${{ env.VERSION }}" > "${BUNDLE_NAME}/VERSION" # Move witness generators from artifact download location to bundle - mv witness-generators/nomos-circuits-${{ env.OS }}-${{ env.ARCH }}-${{ env.VERSION }}/* "${BUNDLE_NAME}/" + mv witness-generators/* "${BUNDLE_NAME}/" # Copy proving keys into each circuit directory cp proving-keys/pol-proving-key/pol.zkey "${BUNDLE_NAME}/pol/proving_key.zkey" @@ -676,7 +676,7 @@ jobs: echo "${{ env.VERSION }}" > "${BUNDLE_NAME}/VERSION" # Move witness generators from artifact download location to bundle - mv witness-generators/nomos-circuits-${{ env.OS }}-${{ env.ARCH }}-${{ env.VERSION }}/* "${BUNDLE_NAME}/" + mv witness-generators/* "${BUNDLE_NAME}/" # Copy proving keys into each circuit directory cp proving-keys/pol-proving-key/pol.zkey "${BUNDLE_NAME}/pol/proving_key.zkey" From b0bf7aad4c68a44a385a3dcd24bd12522d999495 Mon Sep 17 00:00:00 2001 From: David Rusu Date: Fri, 31 Oct 2025 12:33:36 +0400 Subject: [PATCH 07/23] feat(vk): generate vk's as well; fix --O2 flag --- .github/workflows/build-circuits.yml | 46 +++++++++++++++++++++------- 1 file changed, 35 insertions(+), 11 deletions(-) diff --git a/.github/workflows/build-circuits.yml b/.github/workflows/build-circuits.yml index 8a71d8a..4454b3f 100644 --- a/.github/workflows/build-circuits.yml +++ b/.github/workflows/build-circuits.yml @@ -104,54 +104,66 @@ jobs: - name: Generate PoL Proving Key run: | cd mantle - circom -O2 --r1cs pol.circom + circom --r1cs --O2 pol.circom snarkjs groth16 setup pol.r1cs ../${{ env.PTAU_FILE }} pol-0.zkey head -c 32 /dev/random | snarkjs zkey contribute pol-0.zkey pol.zkey --name="RELEASE" -v + snarkjs zkey export verificationkey pol.zkey pol_verification_key.json - name: Generate PoQ Proving Key run: | cd blend - circom -O2 --r1cs poq.circom + circom --r1cs --O2 poq.circom snarkjs groth16 setup poq.r1cs ../${{ env.PTAU_FILE }} poq-0.zkey head -c 32 /dev/random | snarkjs zkey contribute poq-0.zkey poq.zkey --name="RELEASE" -v + snarkjs zkey export verificationkey poq.zkey poq_verification_key.json - name: Generate ZKSign Proving Key run: | cd mantle - circom -O2 --r1cs signature.circom + circom --r1cs --O2 signature.circom snarkjs groth16 setup signature.r1cs ../${{ env.PTAU_FILE }} zksign-0.zkey head -c 32 /dev/random | snarkjs zkey contribute zksign-0.zkey zksign.zkey --name="RELEASE" -v + snarkjs zkey export verificationkey zksign.zkey zksign_verification_key.json - name: Generate PoC Proving Key run: | cd mantle - circom -O2 --r1cs poc.circom + circom --r1cs --O2 poc.circom snarkjs groth16 setup poc.r1cs ../${{ env.PTAU_FILE }} poc-0.zkey head -c 32 /dev/random | snarkjs zkey contribute poc-0.zkey poc.zkey --name="RELEASE" -v + snarkjs zkey export verificationkey poc.zkey poc_verification_key.json - name: Upload PoL Proving Key uses: actions/upload-artifact@de65e23aa2b7e23d713bb51fbfcb6d502f8667d8 with: name: pol-proving-key - path: mantle/pol.zkey + path: | + mantle/pol.zkey + mantle/pol_verification_key.json - name: Upload PoQ Proving Key uses: actions/upload-artifact@de65e23aa2b7e23d713bb51fbfcb6d502f8667d8 with: name: poq-proving-key - path: blend/poq.zkey + path: | + blend/poq.zkey + blend/poq_verification_key.json - name: Upload ZKSign Proving Key uses: actions/upload-artifact@de65e23aa2b7e23d713bb51fbfcb6d502f8667d8 with: name: zksign-proving-key - path: mantle/zksign.zkey + path: | + mantle/zksign.zkey + mantle/zksign_verification_key.json - name: Upload PoC Proving Key uses: actions/upload-artifact@de65e23aa2b7e23d713bb51fbfcb6d502f8667d8 with: name: poc-proving-key - path: mantle/poc.zkey + path: | + mantle/poc.zkey + mantle/poc_verification_key.json build-linux: name: Build Linux Binaries (Native) @@ -306,11 +318,15 @@ jobs: # Move witness generators from artifact download location to bundle mv witness-generators/* "${BUNDLE_NAME}/" - # Copy proving keys into each circuit directory + # Copy proving keys and verification keys into each circuit directory cp proving-keys/pol-proving-key/pol.zkey "${BUNDLE_NAME}/pol/proving_key.zkey" + cp proving-keys/pol-proving-key/pol_verification_key.json "${BUNDLE_NAME}/pol/verification_key.json" cp proving-keys/poq-proving-key/poq.zkey "${BUNDLE_NAME}/poq/proving_key.zkey" + cp proving-keys/poq-proving-key/poq_verification_key.json "${BUNDLE_NAME}/poq/verification_key.json" cp proving-keys/zksign-proving-key/zksign.zkey "${BUNDLE_NAME}/zksig/proving_key.zkey" + cp proving-keys/zksign-proving-key/zksign_verification_key.json "${BUNDLE_NAME}/zksig/verification_key.json" cp proving-keys/poc-proving-key/poc.zkey "${BUNDLE_NAME}/poc/proving_key.zkey" + cp proving-keys/poc-proving-key/poc_verification_key.json "${BUNDLE_NAME}/poc/verification_key.json" # Create tarball tar -czf "${BUNDLE_NAME}.tar.gz" "${BUNDLE_NAME}" @@ -514,11 +530,15 @@ jobs: # Move witness generators from artifact download location to bundle mv witness-generators/* "${BUNDLE_NAME}/" - # Copy proving keys into each circuit directory + # Copy proving keys and verification keys into each circuit directory cp proving-keys/pol-proving-key/pol.zkey "${BUNDLE_NAME}/pol/proving_key.zkey" + cp proving-keys/pol-proving-key/pol_verification_key.json "${BUNDLE_NAME}/pol/verification_key.json" cp proving-keys/poq-proving-key/poq.zkey "${BUNDLE_NAME}/poq/proving_key.zkey" + cp proving-keys/poq-proving-key/poq_verification_key.json "${BUNDLE_NAME}/poq/verification_key.json" cp proving-keys/zksign-proving-key/zksign.zkey "${BUNDLE_NAME}/zksig/proving_key.zkey" + cp proving-keys/zksign-proving-key/zksign_verification_key.json "${BUNDLE_NAME}/zksig/verification_key.json" cp proving-keys/poc-proving-key/poc.zkey "${BUNDLE_NAME}/poc/proving_key.zkey" + cp proving-keys/poc-proving-key/poc_verification_key.json "${BUNDLE_NAME}/poc/verification_key.json" # Create tarball tar -czf "${BUNDLE_NAME}.tar.gz" "${BUNDLE_NAME}" @@ -678,11 +698,15 @@ jobs: # Move witness generators from artifact download location to bundle mv witness-generators/* "${BUNDLE_NAME}/" - # Copy proving keys into each circuit directory + # Copy proving keys and verification keys into each circuit directory cp proving-keys/pol-proving-key/pol.zkey "${BUNDLE_NAME}/pol/proving_key.zkey" + cp proving-keys/pol-proving-key/pol_verification_key.json "${BUNDLE_NAME}/pol/verification_key.json" cp proving-keys/poq-proving-key/poq.zkey "${BUNDLE_NAME}/poq/proving_key.zkey" + cp proving-keys/poq-proving-key/poq_verification_key.json "${BUNDLE_NAME}/poq/verification_key.json" cp proving-keys/zksign-proving-key/zksign.zkey "${BUNDLE_NAME}/zksig/proving_key.zkey" + cp proving-keys/zksign-proving-key/zksign_verification_key.json "${BUNDLE_NAME}/zksig/verification_key.json" cp proving-keys/poc-proving-key/poc.zkey "${BUNDLE_NAME}/poc/proving_key.zkey" + cp proving-keys/poc-proving-key/poc_verification_key.json "${BUNDLE_NAME}/poc/verification_key.json" # Create tarball tar -czf "${BUNDLE_NAME}.tar.gz" "${BUNDLE_NAME}" From f8da9bf5768e00b320c1f1e99a9b06c61504146e Mon Sep 17 00:00:00 2001 From: David Rusu Date: Fri, 31 Oct 2025 12:51:03 +0400 Subject: [PATCH 08/23] build-circuits depends on key-gen --- .github/workflows/build-circuits.yml | 3 +++ 1 file changed, 3 insertions(+) diff --git a/.github/workflows/build-circuits.yml b/.github/workflows/build-circuits.yml index 4454b3f..511b05a 100644 --- a/.github/workflows/build-circuits.yml +++ b/.github/workflows/build-circuits.yml @@ -170,6 +170,7 @@ jobs: runs-on: ubuntu-latest needs: - setup + - generate-proving-keys env: VERSION: ${{ needs.setup.outputs.version }} OS: linux @@ -342,6 +343,7 @@ jobs: runs-on: windows-latest needs: - setup + - generate-proving-keys env: VERSION: ${{ needs.setup.outputs.version }} OS: windows @@ -554,6 +556,7 @@ jobs: runs-on: macos-latest needs: - setup + - generate-proving-keys env: VERSION: ${{ needs.setup.outputs.version }} ARCH: aarch64 From 30492d29fbfc5d71c833cc69b6a0c8f4c3a8342f Mon Sep 17 00:00:00 2001 From: David Rusu Date: Fri, 31 Oct 2025 14:58:42 +0400 Subject: [PATCH 09/23] replace /dev/random with /dev/urandom --- .github/workflows/build-circuits.yml | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/.github/workflows/build-circuits.yml b/.github/workflows/build-circuits.yml index 511b05a..a386a8e 100644 --- a/.github/workflows/build-circuits.yml +++ b/.github/workflows/build-circuits.yml @@ -106,7 +106,7 @@ jobs: cd mantle circom --r1cs --O2 pol.circom snarkjs groth16 setup pol.r1cs ../${{ env.PTAU_FILE }} pol-0.zkey - head -c 32 /dev/random | snarkjs zkey contribute pol-0.zkey pol.zkey --name="RELEASE" -v + head -c 32 /dev/urandom | snarkjs zkey contribute pol-0.zkey pol.zkey --name="RELEASE" -v snarkjs zkey export verificationkey pol.zkey pol_verification_key.json - name: Generate PoQ Proving Key @@ -114,7 +114,7 @@ jobs: cd blend circom --r1cs --O2 poq.circom snarkjs groth16 setup poq.r1cs ../${{ env.PTAU_FILE }} poq-0.zkey - head -c 32 /dev/random | snarkjs zkey contribute poq-0.zkey poq.zkey --name="RELEASE" -v + head -c 32 /dev/urandom | snarkjs zkey contribute poq-0.zkey poq.zkey --name="RELEASE" -v snarkjs zkey export verificationkey poq.zkey poq_verification_key.json - name: Generate ZKSign Proving Key @@ -122,7 +122,7 @@ jobs: cd mantle circom --r1cs --O2 signature.circom snarkjs groth16 setup signature.r1cs ../${{ env.PTAU_FILE }} zksign-0.zkey - head -c 32 /dev/random | snarkjs zkey contribute zksign-0.zkey zksign.zkey --name="RELEASE" -v + head -c 32 /dev/urandom | snarkjs zkey contribute zksign-0.zkey zksign.zkey --name="RELEASE" -v snarkjs zkey export verificationkey zksign.zkey zksign_verification_key.json - name: Generate PoC Proving Key @@ -130,7 +130,7 @@ jobs: cd mantle circom --r1cs --O2 poc.circom snarkjs groth16 setup poc.r1cs ../${{ env.PTAU_FILE }} poc-0.zkey - head -c 32 /dev/random | snarkjs zkey contribute poc-0.zkey poc.zkey --name="RELEASE" -v + head -c 32 /dev/urandom | snarkjs zkey contribute poc-0.zkey poc.zkey --name="RELEASE" -v snarkjs zkey export verificationkey poc.zkey poc_verification_key.json - name: Upload PoL Proving Key From add22af3dc0d0259d82f67760d909763a8e5854d Mon Sep 17 00:00:00 2001 From: David Rusu Date: Fri, 31 Oct 2025 15:25:59 +0400 Subject: [PATCH 10/23] feat(zkey): hexencode entropy contribution --- .github/workflows/build-circuits.yml | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/.github/workflows/build-circuits.yml b/.github/workflows/build-circuits.yml index a386a8e..2b0b35f 100644 --- a/.github/workflows/build-circuits.yml +++ b/.github/workflows/build-circuits.yml @@ -106,7 +106,7 @@ jobs: cd mantle circom --r1cs --O2 pol.circom snarkjs groth16 setup pol.r1cs ../${{ env.PTAU_FILE }} pol-0.zkey - head -c 32 /dev/urandom | snarkjs zkey contribute pol-0.zkey pol.zkey --name="RELEASE" -v + head -c 32 /dev/urandom | xxd -p -c 256 | snarkjs zkey contribute pol-0.zkey pol.zkey --name="RELEASE" -v snarkjs zkey export verificationkey pol.zkey pol_verification_key.json - name: Generate PoQ Proving Key @@ -114,7 +114,7 @@ jobs: cd blend circom --r1cs --O2 poq.circom snarkjs groth16 setup poq.r1cs ../${{ env.PTAU_FILE }} poq-0.zkey - head -c 32 /dev/urandom | snarkjs zkey contribute poq-0.zkey poq.zkey --name="RELEASE" -v + head -c 32 /dev/urandom | xxd -p -c 256 | snarkjs zkey contribute poq-0.zkey poq.zkey --name="RELEASE" -v snarkjs zkey export verificationkey poq.zkey poq_verification_key.json - name: Generate ZKSign Proving Key @@ -122,7 +122,7 @@ jobs: cd mantle circom --r1cs --O2 signature.circom snarkjs groth16 setup signature.r1cs ../${{ env.PTAU_FILE }} zksign-0.zkey - head -c 32 /dev/urandom | snarkjs zkey contribute zksign-0.zkey zksign.zkey --name="RELEASE" -v + head -c 32 /dev/urandom | xxd -p -c 256 | snarkjs zkey contribute zksign-0.zkey zksign.zkey --name="RELEASE" -v snarkjs zkey export verificationkey zksign.zkey zksign_verification_key.json - name: Generate PoC Proving Key @@ -130,7 +130,7 @@ jobs: cd mantle circom --r1cs --O2 poc.circom snarkjs groth16 setup poc.r1cs ../${{ env.PTAU_FILE }} poc-0.zkey - head -c 32 /dev/urandom | snarkjs zkey contribute poc-0.zkey poc.zkey --name="RELEASE" -v + head -c 32 /dev/urandom | xxd -p -c 256 | snarkjs zkey contribute poc-0.zkey poc.zkey --name="RELEASE" -v snarkjs zkey export verificationkey poc.zkey poc_verification_key.json - name: Upload PoL Proving Key From eb850483ab1a430e239d6b42f70ae77187be659c Mon Sep 17 00:00:00 2001 From: David Rusu Date: Fri, 31 Oct 2025 16:00:28 +0400 Subject: [PATCH 11/23] fix(release): use consistent zksign directory name in bundles --- .github/workflows/build-circuits.yml | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/.github/workflows/build-circuits.yml b/.github/workflows/build-circuits.yml index 2b0b35f..8d19be9 100644 --- a/.github/workflows/build-circuits.yml +++ b/.github/workflows/build-circuits.yml @@ -324,8 +324,8 @@ jobs: cp proving-keys/pol-proving-key/pol_verification_key.json "${BUNDLE_NAME}/pol/verification_key.json" cp proving-keys/poq-proving-key/poq.zkey "${BUNDLE_NAME}/poq/proving_key.zkey" cp proving-keys/poq-proving-key/poq_verification_key.json "${BUNDLE_NAME}/poq/verification_key.json" - cp proving-keys/zksign-proving-key/zksign.zkey "${BUNDLE_NAME}/zksig/proving_key.zkey" - cp proving-keys/zksign-proving-key/zksign_verification_key.json "${BUNDLE_NAME}/zksig/verification_key.json" + cp proving-keys/zksign-proving-key/zksign.zkey "${BUNDLE_NAME}/zksign/proving_key.zkey" + cp proving-keys/zksign-proving-key/zksign_verification_key.json "${BUNDLE_NAME}/zksign/verification_key.json" cp proving-keys/poc-proving-key/poc.zkey "${BUNDLE_NAME}/poc/proving_key.zkey" cp proving-keys/poc-proving-key/poc_verification_key.json "${BUNDLE_NAME}/poc/verification_key.json" @@ -537,8 +537,8 @@ jobs: cp proving-keys/pol-proving-key/pol_verification_key.json "${BUNDLE_NAME}/pol/verification_key.json" cp proving-keys/poq-proving-key/poq.zkey "${BUNDLE_NAME}/poq/proving_key.zkey" cp proving-keys/poq-proving-key/poq_verification_key.json "${BUNDLE_NAME}/poq/verification_key.json" - cp proving-keys/zksign-proving-key/zksign.zkey "${BUNDLE_NAME}/zksig/proving_key.zkey" - cp proving-keys/zksign-proving-key/zksign_verification_key.json "${BUNDLE_NAME}/zksig/verification_key.json" + cp proving-keys/zksign-proving-key/zksign.zkey "${BUNDLE_NAME}/zksign/proving_key.zkey" + cp proving-keys/zksign-proving-key/zksign_verification_key.json "${BUNDLE_NAME}/zksign/verification_key.json" cp proving-keys/poc-proving-key/poc.zkey "${BUNDLE_NAME}/poc/proving_key.zkey" cp proving-keys/poc-proving-key/poc_verification_key.json "${BUNDLE_NAME}/poc/verification_key.json" @@ -706,8 +706,8 @@ jobs: cp proving-keys/pol-proving-key/pol_verification_key.json "${BUNDLE_NAME}/pol/verification_key.json" cp proving-keys/poq-proving-key/poq.zkey "${BUNDLE_NAME}/poq/proving_key.zkey" cp proving-keys/poq-proving-key/poq_verification_key.json "${BUNDLE_NAME}/poq/verification_key.json" - cp proving-keys/zksign-proving-key/zksign.zkey "${BUNDLE_NAME}/zksig/proving_key.zkey" - cp proving-keys/zksign-proving-key/zksign_verification_key.json "${BUNDLE_NAME}/zksig/verification_key.json" + cp proving-keys/zksign-proving-key/zksign.zkey "${BUNDLE_NAME}/zksign/proving_key.zkey" + cp proving-keys/zksign-proving-key/zksign_verification_key.json "${BUNDLE_NAME}/zksign/verification_key.json" cp proving-keys/poc-proving-key/poc.zkey "${BUNDLE_NAME}/poc/proving_key.zkey" cp proving-keys/poc-proving-key/poc_verification_key.json "${BUNDLE_NAME}/poc/verification_key.json" From 1c517f8f59a10e0029a6dc87eafed08370f6742b Mon Sep 17 00:00:00 2001 From: David Rusu Date: Fri, 31 Oct 2025 16:23:36 +0400 Subject: [PATCH 12/23] feat(release): remove trailing slash in upload --- .github/actions/compile-and-bundle/action.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/actions/compile-and-bundle/action.yml b/.github/actions/compile-and-bundle/action.yml index 808760d..50fbceb 100644 --- a/.github/actions/compile-and-bundle/action.yml +++ b/.github/actions/compile-and-bundle/action.yml @@ -124,4 +124,4 @@ runs: uses: actions/upload-artifact@de65e23aa2b7e23d713bb51fbfcb6d502f8667d8 with: name: ${{ inputs.circuit-name-binary }}-${{ inputs.version }}-${{ inputs.os }}-${{ inputs.arch }} - path: nomos-circuits-${{ inputs.os }}-${{ inputs.arch }}-${{ inputs.version }}/${{ inputs.circuit-name-binary }}/ + path: nomos-circuits-${{ inputs.os }}-${{ inputs.arch }}-${{ inputs.version }}/${{ inputs.circuit-name-binary }} From fd3c89ab2d3259f61489abcb765289d06a6cc52a Mon Sep 17 00:00:00 2001 From: David Rusu Date: Fri, 31 Oct 2025 17:08:23 +0400 Subject: [PATCH 13/23] feat(release): manually setup release dir structure --- .github/workflows/build-circuits.yml | 46 ++++++++++++++++++++++++---- 1 file changed, 40 insertions(+), 6 deletions(-) diff --git a/.github/workflows/build-circuits.yml b/.github/workflows/build-circuits.yml index 8d19be9..04be66e 100644 --- a/.github/workflows/build-circuits.yml +++ b/.github/workflows/build-circuits.yml @@ -293,12 +293,29 @@ jobs: os: ${{ env.OS }} arch: ${{ env.ARCH }} - - name: Download All Witness Generator Artifacts + - name: Download PoL Witness Generator uses: actions/download-artifact@448e3f862ab3ef47aa50ff917776823c9946035b with: - pattern: "*-${{ env.VERSION }}-${{ env.OS }}-${{ env.ARCH }}" + name: pol-${{ env.VERSION }}-${{ env.OS }}-${{ env.ARCH }} + path: witness-generators/ + + - name: Download PoQ Witness Generator + uses: actions/download-artifact@448e3f862ab3ef47aa50ff917776823c9946035b + with: + name: poq-${{ env.VERSION }}-${{ env.OS }}-${{ env.ARCH }} + path: witness-generators/ + + - name: Download ZKSign Witness Generator + uses: actions/download-artifact@448e3f862ab3ef47aa50ff917776823c9946035b + with: + name: zksign-${{ env.VERSION }}-${{ env.OS }}-${{ env.ARCH }} + path: witness-generators/ + + - name: Download PoC Witness Generator + uses: actions/download-artifact@448e3f862ab3ef47aa50ff917776823c9946035b + with: + name: poc-${{ env.VERSION }}-${{ env.OS }}-${{ env.ARCH }} path: witness-generators/ - merge-multiple: true - name: Download All Proving Key Artifacts uses: actions/download-artifact@448e3f862ab3ef47aa50ff917776823c9946035b @@ -675,12 +692,29 @@ jobs: os: ${{ env.OS }} arch: ${{ env.ARCH }} - - name: Download All Witness Generator Artifacts + - name: Download PoL Witness Generator uses: actions/download-artifact@448e3f862ab3ef47aa50ff917776823c9946035b with: - pattern: "*-${{ env.VERSION }}-${{ env.OS }}-${{ env.ARCH }}" + name: pol-${{ env.VERSION }}-${{ env.OS }}-${{ env.ARCH }} + path: witness-generators/ + + - name: Download PoQ Witness Generator + uses: actions/download-artifact@448e3f862ab3ef47aa50ff917776823c9946035b + with: + name: poq-${{ env.VERSION }}-${{ env.OS }}-${{ env.ARCH }} + path: witness-generators/ + + - name: Download ZKSign Witness Generator + uses: actions/download-artifact@448e3f862ab3ef47aa50ff917776823c9946035b + with: + name: zksign-${{ env.VERSION }}-${{ env.OS }}-${{ env.ARCH }} + path: witness-generators/ + + - name: Download PoC Witness Generator + uses: actions/download-artifact@448e3f862ab3ef47aa50ff917776823c9946035b + with: + name: poc-${{ env.VERSION }}-${{ env.OS }}-${{ env.ARCH }} path: witness-generators/ - merge-multiple: true - name: Download All Proving Key Artifacts uses: actions/download-artifact@448e3f862ab3ef47aa50ff917776823c9946035b From 98b5c3ba734e50c0383b4eb467f84a372ad16526 Mon Sep 17 00:00:00 2001 From: David Rusu Date: Fri, 31 Oct 2025 17:59:17 +0400 Subject: [PATCH 14/23] feat(release): parallel key gen; download artifacts to distince dirs --- .github/workflows/build-circuits.yml | 118 +++++++++++---------------- 1 file changed, 49 insertions(+), 69 deletions(-) diff --git a/.github/workflows/build-circuits.yml b/.github/workflows/build-circuits.yml index 04be66e..c0bea39 100644 --- a/.github/workflows/build-circuits.yml +++ b/.github/workflows/build-circuits.yml @@ -50,10 +50,30 @@ jobs: echo "version=$VERSION" >> $GITHUB_OUTPUT generate-proving-keys: - name: Generate Proving Keys + name: Generate ${{ matrix.circuit.display }} Proving Key runs-on: ubuntu-latest needs: - setup + strategy: + fail-fast: false + matrix: + circuit: + - name: pol + display: PoL + file: pol.circom + dir: mantle + - name: poq + display: PoQ + file: poq.circom + dir: blend + - name: zksign + display: ZKSign + file: signature.circom + dir: mantle + - name: poc + display: PoC + file: poc.circom + dir: mantle env: VERSION: ${{ needs.setup.outputs.version }} PTAU_URL: "https://storage.googleapis.com/zkevm/ptau/powersOfTau28_hez_final_21.ptau" @@ -101,69 +121,23 @@ jobs: curl -L -o "${{ env.PTAU_FILE }}" "${{ env.PTAU_URL }}" echo "Download complete." - - name: Generate PoL Proving Key + - name: Generate Proving Key run: | - cd mantle - circom --r1cs --O2 pol.circom - snarkjs groth16 setup pol.r1cs ../${{ env.PTAU_FILE }} pol-0.zkey - head -c 32 /dev/urandom | xxd -p -c 256 | snarkjs zkey contribute pol-0.zkey pol.zkey --name="RELEASE" -v - snarkjs zkey export verificationkey pol.zkey pol_verification_key.json + cd ${{ matrix.circuit.dir }} + circom --r1cs --O2 ${{ matrix.circuit.file }} + snarkjs groth16 setup ${CIRCUIT_NAME}.r1cs ../${{ env.PTAU_FILE }} ${{ matrix.circuit.name }}-0.zkey + head -c 32 /dev/urandom | xxd -p -c 256 | snarkjs zkey contribute ${{ matrix.circuit.name }}-0.zkey ${{ matrix.circuit.name }}.zkey --name="RELEASE" -v + snarkjs zkey export verificationkey ${{ matrix.circuit.name }}.zkey ${{ matrix.circuit.name }}_verification_key.json + env: + CIRCUIT_NAME: ${{ matrix.circuit.file == 'signature.circom' && 'signature' || matrix.circuit.name }} - - name: Generate PoQ Proving Key - run: | - cd blend - circom --r1cs --O2 poq.circom - snarkjs groth16 setup poq.r1cs ../${{ env.PTAU_FILE }} poq-0.zkey - head -c 32 /dev/urandom | xxd -p -c 256 | snarkjs zkey contribute poq-0.zkey poq.zkey --name="RELEASE" -v - snarkjs zkey export verificationkey poq.zkey poq_verification_key.json - - - name: Generate ZKSign Proving Key - run: | - cd mantle - circom --r1cs --O2 signature.circom - snarkjs groth16 setup signature.r1cs ../${{ env.PTAU_FILE }} zksign-0.zkey - head -c 32 /dev/urandom | xxd -p -c 256 | snarkjs zkey contribute zksign-0.zkey zksign.zkey --name="RELEASE" -v - snarkjs zkey export verificationkey zksign.zkey zksign_verification_key.json - - - name: Generate PoC Proving Key - run: | - cd mantle - circom --r1cs --O2 poc.circom - snarkjs groth16 setup poc.r1cs ../${{ env.PTAU_FILE }} poc-0.zkey - head -c 32 /dev/urandom | xxd -p -c 256 | snarkjs zkey contribute poc-0.zkey poc.zkey --name="RELEASE" -v - snarkjs zkey export verificationkey poc.zkey poc_verification_key.json - - - name: Upload PoL Proving Key + - name: Upload Proving Key uses: actions/upload-artifact@de65e23aa2b7e23d713bb51fbfcb6d502f8667d8 with: - name: pol-proving-key + name: ${{ matrix.circuit.name }}-proving-key path: | - mantle/pol.zkey - mantle/pol_verification_key.json - - - name: Upload PoQ Proving Key - uses: actions/upload-artifact@de65e23aa2b7e23d713bb51fbfcb6d502f8667d8 - with: - name: poq-proving-key - path: | - blend/poq.zkey - blend/poq_verification_key.json - - - name: Upload ZKSign Proving Key - uses: actions/upload-artifact@de65e23aa2b7e23d713bb51fbfcb6d502f8667d8 - with: - name: zksign-proving-key - path: | - mantle/zksign.zkey - mantle/zksign_verification_key.json - - - name: Upload PoC Proving Key - uses: actions/upload-artifact@de65e23aa2b7e23d713bb51fbfcb6d502f8667d8 - with: - name: poc-proving-key - path: | - mantle/poc.zkey - mantle/poc_verification_key.json + ${{ matrix.circuit.dir }}/${{ matrix.circuit.name }}.zkey + ${{ matrix.circuit.dir }}/${{ matrix.circuit.name }}_verification_key.json build-linux: name: Build Linux Binaries (Native) @@ -297,25 +271,25 @@ jobs: uses: actions/download-artifact@448e3f862ab3ef47aa50ff917776823c9946035b with: name: pol-${{ env.VERSION }}-${{ env.OS }}-${{ env.ARCH }} - path: witness-generators/ + path: witness-generators/pol-artifact - name: Download PoQ Witness Generator uses: actions/download-artifact@448e3f862ab3ef47aa50ff917776823c9946035b with: name: poq-${{ env.VERSION }}-${{ env.OS }}-${{ env.ARCH }} - path: witness-generators/ + path: witness-generators/poq-artifact - name: Download ZKSign Witness Generator uses: actions/download-artifact@448e3f862ab3ef47aa50ff917776823c9946035b with: name: zksign-${{ env.VERSION }}-${{ env.OS }}-${{ env.ARCH }} - path: witness-generators/ + path: witness-generators/zksign-artifact - name: Download PoC Witness Generator uses: actions/download-artifact@448e3f862ab3ef47aa50ff917776823c9946035b with: name: poc-${{ env.VERSION }}-${{ env.OS }}-${{ env.ARCH }} - path: witness-generators/ + path: witness-generators/poc-artifact - name: Download All Proving Key Artifacts uses: actions/download-artifact@448e3f862ab3ef47aa50ff917776823c9946035b @@ -334,7 +308,10 @@ jobs: echo "${{ env.VERSION }}" > "${BUNDLE_NAME}/VERSION" # Move witness generators from artifact download location to bundle - mv witness-generators/* "${BUNDLE_NAME}/" + mv witness-generators/pol-artifact/* "${BUNDLE_NAME}/" + mv witness-generators/poq-artifact/* "${BUNDLE_NAME}/" + mv witness-generators/zksign-artifact/* "${BUNDLE_NAME}/" + mv witness-generators/poc-artifact/* "${BUNDLE_NAME}/" # Copy proving keys and verification keys into each circuit directory cp proving-keys/pol-proving-key/pol.zkey "${BUNDLE_NAME}/pol/proving_key.zkey" @@ -696,25 +673,25 @@ jobs: uses: actions/download-artifact@448e3f862ab3ef47aa50ff917776823c9946035b with: name: pol-${{ env.VERSION }}-${{ env.OS }}-${{ env.ARCH }} - path: witness-generators/ + path: witness-generators/pol-artifact - name: Download PoQ Witness Generator uses: actions/download-artifact@448e3f862ab3ef47aa50ff917776823c9946035b with: name: poq-${{ env.VERSION }}-${{ env.OS }}-${{ env.ARCH }} - path: witness-generators/ + path: witness-generators/poq-artifact - name: Download ZKSign Witness Generator uses: actions/download-artifact@448e3f862ab3ef47aa50ff917776823c9946035b with: name: zksign-${{ env.VERSION }}-${{ env.OS }}-${{ env.ARCH }} - path: witness-generators/ + path: witness-generators/zksign-artifact - name: Download PoC Witness Generator uses: actions/download-artifact@448e3f862ab3ef47aa50ff917776823c9946035b with: name: poc-${{ env.VERSION }}-${{ env.OS }}-${{ env.ARCH }} - path: witness-generators/ + path: witness-generators/poc-artifact - name: Download All Proving Key Artifacts uses: actions/download-artifact@448e3f862ab3ef47aa50ff917776823c9946035b @@ -733,7 +710,10 @@ jobs: echo "${{ env.VERSION }}" > "${BUNDLE_NAME}/VERSION" # Move witness generators from artifact download location to bundle - mv witness-generators/* "${BUNDLE_NAME}/" + mv witness-generators/pol-artifact/* "${BUNDLE_NAME}/" + mv witness-generators/poq-artifact/* "${BUNDLE_NAME}/" + mv witness-generators/zksign-artifact/* "${BUNDLE_NAME}/" + mv witness-generators/poc-artifact/* "${BUNDLE_NAME}/" # Copy proving keys and verification keys into each circuit directory cp proving-keys/pol-proving-key/pol.zkey "${BUNDLE_NAME}/pol/proving_key.zkey" From a374eb1fef941254eeaa6acfd1f9ae18b7059a95 Mon Sep 17 00:00:00 2001 From: David Rusu Date: Fri, 31 Oct 2025 18:26:19 +0400 Subject: [PATCH 15/23] explicit mv --- .github/actions/compile-and-bundle/action.yml | 19 ++--------- .github/workflows/build-circuits.yml | 32 ++++++++++++------- 2 files changed, 23 insertions(+), 28 deletions(-) diff --git a/.github/actions/compile-and-bundle/action.yml b/.github/actions/compile-and-bundle/action.yml index 50fbceb..7246568 100644 --- a/.github/actions/compile-and-bundle/action.yml +++ b/.github/actions/compile-and-bundle/action.yml @@ -105,23 +105,10 @@ runs: OS: ${{ inputs.os }} run: make PROJECT="${CIRCUIT_FILESTEM}" "${OS}" - - name: Bundle ${{ inputs.circuit-name-display }} - shell: bash - env: - CIRCUIT_NAME: ${{ steps.parse-circuit-path.outputs.CIRCUIT_FILESTEM }} - PLATFORM_BINARY_NAME: ${{ steps.parse-circuit-path.outputs.PLATFORM_BINARY_NAME }} - BUNDLE_NAME: nomos-circuits-${{ inputs.os }}-${{ inputs.arch }}-${{ inputs.version }} - CIRCUIT_NAME_BINARY: ${{ inputs.circuit-name-binary }} - WITNESS_GENERATOR_DIR: ${{ steps.parse-circuit-path.outputs.CIRCUIT_CPP_PATH }} - run: | - BUNDLE_DIR="${BUNDLE_NAME}/${CIRCUIT_NAME_BINARY}" - mkdir -p "$BUNDLE_DIR" - - mv "${WITNESS_GENERATOR_DIR}/${CIRCUIT_NAME}" "$BUNDLE_DIR/witness_generator" - mv "${WITNESS_GENERATOR_DIR}/${CIRCUIT_NAME}.dat" "$BUNDLE_DIR/witness_generator.dat" - - name: Upload ${{ inputs.circuit-name-display }} uses: actions/upload-artifact@de65e23aa2b7e23d713bb51fbfcb6d502f8667d8 with: name: ${{ inputs.circuit-name-binary }}-${{ inputs.version }}-${{ inputs.os }}-${{ inputs.arch }} - path: nomos-circuits-${{ inputs.os }}-${{ inputs.arch }}-${{ inputs.version }}/${{ inputs.circuit-name-binary }} + path: | + ${{ steps.parse-circuit-path.outputs.CIRCUIT_CPP_PATH }}/${{ steps.parse-circuit-path.outputs.CIRCUIT_FILESTEM }} + ${{ steps.parse-circuit-path.outputs.CIRCUIT_CPP_PATH }}/${{ steps.parse-circuit-path.outputs.CIRCUIT_FILESTEM }}.dat diff --git a/.github/workflows/build-circuits.yml b/.github/workflows/build-circuits.yml index c0bea39..fc6726b 100644 --- a/.github/workflows/build-circuits.yml +++ b/.github/workflows/build-circuits.yml @@ -302,16 +302,20 @@ jobs: BUNDLE_NAME: nomos-circuits-${{ env.OS }}-${{ env.ARCH }}-${{ env.VERSION }} run: | # Create the bundle directory structure - mkdir -p "${BUNDLE_NAME}" + mkdir -p "${BUNDLE_NAME}"/{pol,poq,zksign,poc} # Create VERSION file echo "${{ env.VERSION }}" > "${BUNDLE_NAME}/VERSION" - # Move witness generators from artifact download location to bundle - mv witness-generators/pol-artifact/* "${BUNDLE_NAME}/" - mv witness-generators/poq-artifact/* "${BUNDLE_NAME}/" - mv witness-generators/zksign-artifact/* "${BUNDLE_NAME}/" - mv witness-generators/poc-artifact/* "${BUNDLE_NAME}/" + # Move witness generators into their respective circuit directories + mv witness-generators/pol-artifact/pol "${BUNDLE_NAME}/pol/witness_generator" + mv witness-generators/pol-artifact/pol.dat "${BUNDLE_NAME}/pol/witness_generator.dat" + mv witness-generators/poq-artifact/poq "${BUNDLE_NAME}/poq/witness_generator" + mv witness-generators/poq-artifact/poq.dat "${BUNDLE_NAME}/poq/witness_generator.dat" + mv witness-generators/zksign-artifact/signature "${BUNDLE_NAME}/zksign/witness_generator" + mv witness-generators/zksign-artifact/signature.dat "${BUNDLE_NAME}/zksign/witness_generator.dat" + mv witness-generators/poc-artifact/poc "${BUNDLE_NAME}/poc/witness_generator" + mv witness-generators/poc-artifact/poc.dat "${BUNDLE_NAME}/poc/witness_generator.dat" # Copy proving keys and verification keys into each circuit directory cp proving-keys/pol-proving-key/pol.zkey "${BUNDLE_NAME}/pol/proving_key.zkey" @@ -704,16 +708,20 @@ jobs: BUNDLE_NAME: nomos-circuits-${{ env.OS }}-${{ env.ARCH }}-${{ env.VERSION }} run: | # Create the bundle directory structure - mkdir -p "${BUNDLE_NAME}" + mkdir -p "${BUNDLE_NAME}"/{pol,poq,zksign,poc} # Create VERSION file echo "${{ env.VERSION }}" > "${BUNDLE_NAME}/VERSION" - # Move witness generators from artifact download location to bundle - mv witness-generators/pol-artifact/* "${BUNDLE_NAME}/" - mv witness-generators/poq-artifact/* "${BUNDLE_NAME}/" - mv witness-generators/zksign-artifact/* "${BUNDLE_NAME}/" - mv witness-generators/poc-artifact/* "${BUNDLE_NAME}/" + # Move witness generators into their respective circuit directories + mv witness-generators/pol-artifact/pol "${BUNDLE_NAME}/pol/witness_generator" + mv witness-generators/pol-artifact/pol.dat "${BUNDLE_NAME}/pol/witness_generator.dat" + mv witness-generators/poq-artifact/poq "${BUNDLE_NAME}/poq/witness_generator" + mv witness-generators/poq-artifact/poq.dat "${BUNDLE_NAME}/poq/witness_generator.dat" + mv witness-generators/zksign-artifact/signature "${BUNDLE_NAME}/zksign/witness_generator" + mv witness-generators/zksign-artifact/signature.dat "${BUNDLE_NAME}/zksign/witness_generator.dat" + mv witness-generators/poc-artifact/poc "${BUNDLE_NAME}/poc/witness_generator" + mv witness-generators/poc-artifact/poc.dat "${BUNDLE_NAME}/poc/witness_generator.dat" # Copy proving keys and verification keys into each circuit directory cp proving-keys/pol-proving-key/pol.zkey "${BUNDLE_NAME}/pol/proving_key.zkey" From 4f29f44fd2a90d643f9a10b3a29b89eda9ea1ca6 Mon Sep 17 00:00:00 2001 From: David Rusu Date: Sat, 1 Nov 2025 08:14:23 +0400 Subject: [PATCH 16/23] fix(release): drop merge-multiple in windows release --- .github/workflows/build-circuits.yml | 38 +++++++++++++++++++++++----- 1 file changed, 31 insertions(+), 7 deletions(-) diff --git a/.github/workflows/build-circuits.yml b/.github/workflows/build-circuits.yml index fc6726b..1aa616e 100644 --- a/.github/workflows/build-circuits.yml +++ b/.github/workflows/build-circuits.yml @@ -503,12 +503,29 @@ jobs: os: ${{ env.OS }} arch: ${{ env.ARCH }} - - name: Download All Witness Generator Artifacts + - name: Download PoL Witness Generator uses: actions/download-artifact@448e3f862ab3ef47aa50ff917776823c9946035b with: - pattern: "*-${{ env.VERSION }}-${{ env.OS }}-${{ env.ARCH }}" - path: witness-generators/ - merge-multiple: true + name: pol-${{ env.VERSION }}-${{ env.OS }}-${{ env.ARCH }} + path: witness-generators/pol-artifact + + - name: Download PoQ Witness Generator + uses: actions/download-artifact@448e3f862ab3ef47aa50ff917776823c9946035b + with: + name: poq-${{ env.VERSION }}-${{ env.OS }}-${{ env.ARCH }} + path: witness-generators/poq-artifact + + - name: Download ZKSign Witness Generator + uses: actions/download-artifact@448e3f862ab3ef47aa50ff917776823c9946035b + with: + name: zksign-${{ env.VERSION }}-${{ env.OS }}-${{ env.ARCH }} + path: witness-generators/zksign-artifact + + - name: Download PoC Witness Generator + uses: actions/download-artifact@448e3f862ab3ef47aa50ff917776823c9946035b + with: + name: poc-${{ env.VERSION }}-${{ env.OS }}-${{ env.ARCH }} + path: witness-generators/poc-artifact - name: Download All Proving Key Artifacts uses: actions/download-artifact@448e3f862ab3ef47aa50ff917776823c9946035b @@ -522,13 +539,20 @@ jobs: BUNDLE_NAME: nomos-circuits-${{ env.OS }}-${{ env.ARCH }}-${{ env.VERSION }} run: | # Create the bundle directory structure - mkdir -p "${BUNDLE_NAME}" + mkdir -p "${BUNDLE_NAME}"/{pol,poq,zksign,poc} # Create VERSION file echo "${{ env.VERSION }}" > "${BUNDLE_NAME}/VERSION" - # Move witness generators from artifact download location to bundle - mv witness-generators/* "${BUNDLE_NAME}/" + # Move witness generators into their respective circuit directories + mv witness-generators/pol-artifact/pol.exe "${BUNDLE_NAME}/pol/witness_generator.exe" + mv witness-generators/pol-artifact/pol.dat "${BUNDLE_NAME}/pol/witness_generator.dat" + mv witness-generators/poq-artifact/poq.exe "${BUNDLE_NAME}/poq/witness_generator.exe" + mv witness-generators/poq-artifact/poq.dat "${BUNDLE_NAME}/poq/witness_generator.dat" + mv witness-generators/zksign-artifact/signature.exe "${BUNDLE_NAME}/zksign/witness_generator.exe" + mv witness-generators/zksign-artifact/signature.dat "${BUNDLE_NAME}/zksign/witness_generator.dat" + mv witness-generators/poc-artifact/poc.exe "${BUNDLE_NAME}/poc/witness_generator.exe" + mv witness-generators/poc-artifact/poc.dat "${BUNDLE_NAME}/poc/witness_generator.dat" # Copy proving keys and verification keys into each circuit directory cp proving-keys/pol-proving-key/pol.zkey "${BUNDLE_NAME}/pol/proving_key.zkey" From d0c7c5df42520d82a4f1be0e7225d4f2b1ecf919 Mon Sep 17 00:00:00 2001 From: David Rusu Date: Sat, 1 Nov 2025 09:18:02 +0400 Subject: [PATCH 17/23] use compiled binary name --- .github/actions/compile-and-bundle/action.yml | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/.github/actions/compile-and-bundle/action.yml b/.github/actions/compile-and-bundle/action.yml index 7246568..e231082 100644 --- a/.github/actions/compile-and-bundle/action.yml +++ b/.github/actions/compile-and-bundle/action.yml @@ -47,10 +47,12 @@ runs: CIRCUIT_CPP_DIRNAME="${CIRCUIT_FILESTEM}_cpp" platform_binary_name="${CIRCUIT_NAME_BINARY}" + compiled_binary_name="${CIRCUIT_FILESTEM}" if [ "${OS}" = "windows" ]; then platform_binary_name="${platform_binary_name}.exe" + compiled_binary_name="${compiled_binary_name}.exe" fi - + { echo "CIRCUIT_DIRECTORY=${CIRCUIT_DIRECTORY}" echo "CIRCUIT_FILENAME=${CIRCUIT_FILENAME}" @@ -60,6 +62,7 @@ runs: echo "WITNESS_GENERATOR_RESOURCES_PATH=${RESOURCES_PATH}/witness-generator" echo "BUNDLE_TRIPLET=${BUNDLE_TRIPLET}" echo "PLATFORM_BINARY_NAME=${platform_binary_name}" + echo "COMPILED_BINARY_NAME=${compiled_binary_name}" } >> "${GITHUB_OUTPUT}" - name: Generate ${{ inputs.circuit-name-display }} @@ -110,5 +113,5 @@ runs: with: name: ${{ inputs.circuit-name-binary }}-${{ inputs.version }}-${{ inputs.os }}-${{ inputs.arch }} path: | - ${{ steps.parse-circuit-path.outputs.CIRCUIT_CPP_PATH }}/${{ steps.parse-circuit-path.outputs.CIRCUIT_FILESTEM }} + ${{ steps.parse-circuit-path.outputs.CIRCUIT_CPP_PATH }}/${{ steps.parse-circuit-path.outputs.COMPILED_BINARY_NAME }} ${{ steps.parse-circuit-path.outputs.CIRCUIT_CPP_PATH }}/${{ steps.parse-circuit-path.outputs.CIRCUIT_FILESTEM }}.dat From 7ce5d3705d36f4c540241cdd56592a53b1e469c8 Mon Sep 17 00:00:00 2001 From: David Rusu Date: Sat, 1 Nov 2025 10:56:16 +0400 Subject: [PATCH 18/23] mark binaries as executable --- .github/workflows/build-circuits.yml | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/.github/workflows/build-circuits.yml b/.github/workflows/build-circuits.yml index 1aa616e..ea05320 100644 --- a/.github/workflows/build-circuits.yml +++ b/.github/workflows/build-circuits.yml @@ -317,6 +317,12 @@ jobs: mv witness-generators/poc-artifact/poc "${BUNDLE_NAME}/poc/witness_generator" mv witness-generators/poc-artifact/poc.dat "${BUNDLE_NAME}/poc/witness_generator.dat" + # Restore execute permissions on witness generators + chmod +x "${BUNDLE_NAME}/pol/witness_generator" + chmod +x "${BUNDLE_NAME}/poq/witness_generator" + chmod +x "${BUNDLE_NAME}/zksign/witness_generator" + chmod +x "${BUNDLE_NAME}/poc/witness_generator" + # Copy proving keys and verification keys into each circuit directory cp proving-keys/pol-proving-key/pol.zkey "${BUNDLE_NAME}/pol/proving_key.zkey" cp proving-keys/pol-proving-key/pol_verification_key.json "${BUNDLE_NAME}/pol/verification_key.json" @@ -747,6 +753,12 @@ jobs: mv witness-generators/poc-artifact/poc "${BUNDLE_NAME}/poc/witness_generator" mv witness-generators/poc-artifact/poc.dat "${BUNDLE_NAME}/poc/witness_generator.dat" + # Restore execute permissions on witness generators + chmod +x "${BUNDLE_NAME}/pol/witness_generator" + chmod +x "${BUNDLE_NAME}/poq/witness_generator" + chmod +x "${BUNDLE_NAME}/zksign/witness_generator" + chmod +x "${BUNDLE_NAME}/poc/witness_generator" + # Copy proving keys and verification keys into each circuit directory cp proving-keys/pol-proving-key/pol.zkey "${BUNDLE_NAME}/pol/proving_key.zkey" cp proving-keys/pol-proving-key/pol_verification_key.json "${BUNDLE_NAME}/pol/verification_key.json" From a281b792cacd8141eac48fbf566eb365f3acf85c Mon Sep 17 00:00:00 2001 From: David Rusu Date: Mon, 3 Nov 2025 12:56:35 +0400 Subject: [PATCH 19/23] fix(zkey): 2^17 ptau rather than 2^21 --- .github/workflows/build-circuits.yml | 4 ++-- CONTRIBUTING.md | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/.github/workflows/build-circuits.yml b/.github/workflows/build-circuits.yml index ea05320..8cc501f 100644 --- a/.github/workflows/build-circuits.yml +++ b/.github/workflows/build-circuits.yml @@ -76,8 +76,8 @@ jobs: dir: mantle env: VERSION: ${{ needs.setup.outputs.version }} - PTAU_URL: "https://storage.googleapis.com/zkevm/ptau/powersOfTau28_hez_final_21.ptau" - PTAU_FILE: "powersOfTau28_hez_final_21.ptau" + PTAU_URL: "https://storage.googleapis.com/zkevm/ptau/powersOfTau28_hez_final_17.ptau" + PTAU_FILE: "powersOfTau28_hez_final_17.ptau" steps: - name: Install Rust Toolchain uses: actions-rust-lang/setup-rust-toolchain@fb51252c7ba57d633bc668f941da052e410add48 diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index 20e0d74..02fd5af 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -32,7 +32,7 @@ For each supported platform (Linux x86_64, macOS aarch64, Windows x86_64): - **Proving keys** (`{circuit}-{version}.zkey.tar.gz`) Groth16 proving keys (.zkey files) for each circuit, required for generating proofs -These proving keys are generated using the Hermez Powers of Tau ceremony (`powersOfTau28_hez_final_21.ptau`), which supports circuits with up to 2^21 (~2M) constraints. The keys are platform-independent and can be used with any compatible prover implementation. +These proving keys are generated using the Hermez Powers of Tau ceremony (`powersOfTau28_hez_final_17.ptau`), which supports circuits with up to 2^17 constraints. The keys are platform-independent and can be used with any compatible prover implementation. ### Example From 9aad3eb159ea9b3e7733e4d5d00af094d58e8e9e Mon Sep 17 00:00:00 2001 From: David Rusu Date: Mon, 3 Nov 2025 16:42:10 +0400 Subject: [PATCH 20/23] remove unused PLATFORM_BINARY_NAME --- .github/actions/compile-and-bundle/action.yml | 3 --- 1 file changed, 3 deletions(-) diff --git a/.github/actions/compile-and-bundle/action.yml b/.github/actions/compile-and-bundle/action.yml index e231082..d092a56 100644 --- a/.github/actions/compile-and-bundle/action.yml +++ b/.github/actions/compile-and-bundle/action.yml @@ -46,10 +46,8 @@ runs: CIRCUIT_FILESTEM="${CIRCUIT_FILENAME%.circom}" CIRCUIT_CPP_DIRNAME="${CIRCUIT_FILESTEM}_cpp" - platform_binary_name="${CIRCUIT_NAME_BINARY}" compiled_binary_name="${CIRCUIT_FILESTEM}" if [ "${OS}" = "windows" ]; then - platform_binary_name="${platform_binary_name}.exe" compiled_binary_name="${compiled_binary_name}.exe" fi @@ -61,7 +59,6 @@ runs: echo "CIRCUIT_CPP_PATH=${CIRCUIT_DIRECTORY}/${CIRCUIT_CPP_DIRNAME}" echo "WITNESS_GENERATOR_RESOURCES_PATH=${RESOURCES_PATH}/witness-generator" echo "BUNDLE_TRIPLET=${BUNDLE_TRIPLET}" - echo "PLATFORM_BINARY_NAME=${platform_binary_name}" echo "COMPILED_BINARY_NAME=${compiled_binary_name}" } >> "${GITHUB_OUTPUT}" From 07572a928ab67a0c71d3d6241b6f1fb34b06c6ff Mon Sep 17 00:00:00 2001 From: David Rusu Date: Mon, 3 Nov 2025 16:47:52 +0400 Subject: [PATCH 21/23] update CONTRIBUTING guide with the new release structure --- CONTRIBUTING.md | 47 +++++++++++++++++++++++++++++++++++------------ 1 file changed, 35 insertions(+), 12 deletions(-) diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index 02fd5af..3294c59 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -12,27 +12,50 @@ To trigger a release build: ### Generated Artifacts -Each release includes the following artifacts: +Each release includes a single unified bundle per platform: -#### Platform-Specific Binaries +#### Unified Release Bundles For each supported platform (Linux x86_64, macOS aarch64, Windows x86_64): -- **Prover binaries** (`prover-{version}-{os}-{arch}.tar.gz`) - Rapidsnark prover binaries for generating zk-SNARK proofs +- **`nomos-circuits-{os}-{arch}-{version}.tar.gz`** -- **Verifier binaries** (`verifier-{version}-{os}-{arch}.tar.gz`) - Rapidsnark verifier binaries for verifying zk-SNARK proofs + A complete bundle containing all components needed to generate and verify proofs for all circuits. -- **Witness generators** (`{circuit}-{version}-{os}-{arch}.tar.gz`) - Compiled C++ witness generator binaries for each circuit (PoL, PoQ, ZKSign, PoC) +**Bundle Structure:** -#### Platform-Independent Proving Keys +``` +nomos-circuits-{os}-{arch}-{version}/ +├── VERSION +├── pol/ +│ ├── witness_generator[.exe] +│ ├── witness_generator.dat +│ ├── proving_key.zkey +│ └── verification_key.json +├── poq/ +│ ├── witness_generator[.exe] +│ ├── witness_generator.dat +│ ├── proving_key.zkey +│ └── verification_key.json +├── zksign/ +│ ├── witness_generator[.exe] +│ ├── witness_generator.dat +│ ├── proving_key.zkey +│ └── verification_key.json +└── poc/ + ├── witness_generator[.exe] + ├── witness_generator.dat + ├── proving_key.zkey + └── verification_key.json +``` -- **Proving keys** (`{circuit}-{version}.zkey.tar.gz`) - Groth16 proving keys (.zkey files) for each circuit, required for generating proofs +Each circuit directory contains: +- **witness_generator**: Compiled C++ binary for generating witnesses from inputs +- **witness_generator.dat**: Required data file for the witness generator +- **proving_key.zkey**: Groth16 proving key for generating zk-SNARK proofs +- **verification_key.json**: Verification key for verifying proofs -These proving keys are generated using the Hermez Powers of Tau ceremony (`powersOfTau28_hez_final_17.ptau`), which supports circuits with up to 2^17 constraints. The keys are platform-independent and can be used with any compatible prover implementation. +The proving keys are generated using the Hermez Powers of Tau ceremony (`powersOfTau28_hez_final_17.ptau`), which supports circuits with up to 2^17 constraints. ### Example From 28ec78840dc12b49f9648ed30faefea7e9acddbb Mon Sep 17 00:00:00 2001 From: David Rusu Date: Mon, 3 Nov 2025 20:07:08 +0400 Subject: [PATCH 22/23] use nomos-circuits-{version}-{os}-{arch} convention --- .github/workflows/build-circuits.yml | 18 +++++++++--------- CONTRIBUTING.md | 4 ++-- 2 files changed, 11 insertions(+), 11 deletions(-) diff --git a/.github/workflows/build-circuits.yml b/.github/workflows/build-circuits.yml index 8cc501f..d35c4bb 100644 --- a/.github/workflows/build-circuits.yml +++ b/.github/workflows/build-circuits.yml @@ -299,7 +299,7 @@ jobs: - name: Create Unified Release Bundle env: - BUNDLE_NAME: nomos-circuits-${{ env.OS }}-${{ env.ARCH }}-${{ env.VERSION }} + BUNDLE_NAME: nomos-circuits-${{ env.VERSION }}-${{ env.OS }}-${{ env.ARCH }} run: | # Create the bundle directory structure mkdir -p "${BUNDLE_NAME}"/{pol,poq,zksign,poc} @@ -339,8 +339,8 @@ jobs: - name: Upload Unified Release Bundle uses: actions/upload-artifact@de65e23aa2b7e23d713bb51fbfcb6d502f8667d8 with: - name: nomos-circuits-${{ env.OS }}-${{ env.ARCH }}-${{ env.VERSION }}.tar.gz - path: nomos-circuits-${{ env.OS }}-${{ env.ARCH }}-${{ env.VERSION }}.tar.gz + name: nomos-circuits-${{ env.VERSION }}-${{ env.OS }}-${{ env.ARCH }}.tar.gz + path: nomos-circuits-${{ env.VERSION }}-${{ env.OS }}-${{ env.ARCH }}.tar.gz build-windows: name: Build Windows Binaries (Native) @@ -576,8 +576,8 @@ jobs: - name: Upload Unified Release Bundle uses: actions/upload-artifact@de65e23aa2b7e23d713bb51fbfcb6d502f8667d8 with: - name: nomos-circuits-${{ env.OS }}-${{ env.ARCH }}-${{ env.VERSION }}.tar.gz - path: nomos-circuits-${{ env.OS }}-${{ env.ARCH }}-${{ env.VERSION }}.tar.gz + name: nomos-circuits-${{ env.VERSION }}-${{ env.OS }}-${{ env.ARCH }}.tar.gz + path: nomos-circuits-${{ env.VERSION }}-${{ env.OS }}-${{ env.ARCH }}.tar.gz build-macos: name: Build MacOS Binaries (Native) @@ -735,7 +735,7 @@ jobs: - name: Create Unified Release Bundle env: - BUNDLE_NAME: nomos-circuits-${{ env.OS }}-${{ env.ARCH }}-${{ env.VERSION }} + BUNDLE_NAME: nomos-circuits-${{ env.VERSION }}-${{ env.OS }}-${{ env.ARCH }} run: | # Create the bundle directory structure mkdir -p "${BUNDLE_NAME}"/{pol,poq,zksign,poc} @@ -775,8 +775,8 @@ jobs: - name: Upload Unified Release Bundle uses: actions/upload-artifact@de65e23aa2b7e23d713bb51fbfcb6d502f8667d8 with: - name: nomos-circuits-${{ env.OS }}-${{ env.ARCH }}-${{ env.VERSION }}.tar.gz - path: nomos-circuits-${{ env.OS }}-${{ env.ARCH }}-${{ env.VERSION }}.tar.gz + name: nomos-circuits-${{ env.VERSION }}-${{ env.OS }}-${{ env.ARCH }}.tar.gz + path: nomos-circuits-${{ env.VERSION }}-${{ env.OS }}-${{ env.ARCH }}.tar.gz publish-release: name: Create Release @@ -839,7 +839,7 @@ jobs: arch: x86_64 env: UPLOAD_URL: ${{ needs.publish-release.outputs.upload_url }} - ARTIFACT_NAME: nomos-circuits-${{ matrix.platform.os }}-${{ matrix.platform.arch }}-${{ needs.setup.outputs.version }}.tar.gz + ARTIFACT_NAME: nomos-circuits-${{ needs.setup.outputs.version }}-${{ matrix.platform.os }}-${{ matrix.platform.arch }}.tar.gz steps: - name: Download Unified Bundle uses: actions/download-artifact@448e3f862ab3ef47aa50ff917776823c9946035b diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index 3294c59..73330c6 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -18,14 +18,14 @@ Each release includes a single unified bundle per platform: For each supported platform (Linux x86_64, macOS aarch64, Windows x86_64): -- **`nomos-circuits-{os}-{arch}-{version}.tar.gz`** +- **`nomos-circuits-{version}-{os}-{arch}.tar.gz`** A complete bundle containing all components needed to generate and verify proofs for all circuits. **Bundle Structure:** ``` -nomos-circuits-{os}-{arch}-{version}/ +nomos-circuits-{version}-{os}-{arch}/ ├── VERSION ├── pol/ │ ├── witness_generator[.exe] From 35a88c3de4e2412d6737aae6d5e6f110067617d2 Mon Sep 17 00:00:00 2001 From: David Rusu Date: Mon, 3 Nov 2025 20:08:05 +0400 Subject: [PATCH 23/23] rename action to `compile-witness-generator` --- .../action.yml | 4 +- .github/workflows/build-circuits.yml | 48 +++++++++---------- 2 files changed, 26 insertions(+), 26 deletions(-) rename .github/actions/{compile-and-bundle => compile-witness-generator}/action.yml (97%) diff --git a/.github/actions/compile-and-bundle/action.yml b/.github/actions/compile-witness-generator/action.yml similarity index 97% rename from .github/actions/compile-and-bundle/action.yml rename to .github/actions/compile-witness-generator/action.yml index d092a56..363aa30 100644 --- a/.github/actions/compile-and-bundle/action.yml +++ b/.github/actions/compile-witness-generator/action.yml @@ -1,5 +1,5 @@ -name: "Compile and Bundle Circuit" -description: "Compiles and bundles the witness generator of a Circom Circuit" +name: "Compile Witness Generator" +description: "Compiles the witness generator of a Circom Circuit" branding: icon: "package" color: "blue" diff --git a/.github/workflows/build-circuits.yml b/.github/workflows/build-circuits.yml index d35c4bb..9fee541 100644 --- a/.github/workflows/build-circuits.yml +++ b/.github/workflows/build-circuits.yml @@ -227,8 +227,8 @@ jobs: name: verifier-${{ env.VERSION }}-${{ env.OS }}-${{ env.ARCH }}.tar.gz path: verifier-${{ env.VERSION }}-${{ env.OS }}-${{ env.ARCH }}.tar.gz - - name: Compile and Bundle PoL - uses: ./.github/actions/compile-and-bundle + - name: Compile PoL Witness Generator + uses: ./.github/actions/compile-witness-generator with: circuit-name-display: "PoL" circuit-name-binary: "pol" @@ -237,8 +237,8 @@ jobs: os: ${{ env.OS }} arch: ${{ env.ARCH }} - - name: Compile and Bundle PoQ - uses: ./.github/actions/compile-and-bundle + - name: Compile PoQ Witness Generator + uses: ./.github/actions/compile-witness-generator with: circuit-name-display: "PoQ" circuit-name-binary: "poq" @@ -247,8 +247,8 @@ jobs: os: ${{ env.OS }} arch: ${{ env.ARCH }} - - name: Compile and Bundle ZKSign - uses: ./.github/actions/compile-and-bundle + - name: Compile ZKSign Witness Generator + uses: ./.github/actions/compile-witness-generator with: circuit-name-display: "ZKSign" circuit-name-binary: "zksign" @@ -257,8 +257,8 @@ jobs: os: ${{ env.OS }} arch: ${{ env.ARCH }} - - name: Compile and Bundle PoC - uses: ./.github/actions/compile-and-bundle + - name: Compile PoC Witness Generator + uses: ./.github/actions/compile-witness-generator with: circuit-name-display: "PoC" circuit-name-binary: "poc" @@ -469,8 +469,8 @@ jobs: name: verifier-${{ env.VERSION }}-${{ env.OS }}-${{ env.ARCH }}.tar.gz path: verifier-${{ env.VERSION }}-${{ env.OS }}-${{ env.ARCH }}.tar.gz - - name: Compile and Bundle PoL - uses: ./.github/actions/compile-and-bundle + - name: Compile PoL Witness Generator + uses: ./.github/actions/compile-witness-generator with: circuit-name-display: "PoL" circuit-name-binary: "pol" @@ -479,8 +479,8 @@ jobs: os: ${{ env.OS }} arch: ${{ env.ARCH }} - - name: Compile and Bundle PoQ - uses: ./.github/actions/compile-and-bundle + - name: Compile PoQ Witness Generator + uses: ./.github/actions/compile-witness-generator with: circuit-name-display: "PoQ" circuit-name-binary: "poq" @@ -489,8 +489,8 @@ jobs: os: ${{ env.OS }} arch: ${{ env.ARCH }} - - name: Compile and Bundle ZKSign - uses: ./.github/actions/compile-and-bundle + - name: Compile ZKSign Witness Generator + uses: ./.github/actions/compile-witness-generator with: circuit-name-display: "ZKSign" circuit-name-binary: "zksign" @@ -499,8 +499,8 @@ jobs: os: ${{ env.OS }} arch: ${{ env.ARCH }} - - name: Compile and Bundle PoC - uses: ./.github/actions/compile-and-bundle + - name: Compile PoC Witness Generator + uses: ./.github/actions/compile-witness-generator with: circuit-name-display: "PoC" circuit-name-binary: "poc" @@ -663,8 +663,8 @@ jobs: name: verifier-${{ env.VERSION }}-${{ env.OS }}-${{ env.ARCH }}.tar.gz path: verifier-${{ env.VERSION }}-${{ env.OS }}-${{ env.ARCH }}.tar.gz - - name: Compile and Bundle PoL - uses: ./.github/actions/compile-and-bundle + - name: Compile PoL Witness Generator + uses: ./.github/actions/compile-witness-generator with: circuit-name-display: "PoL" circuit-name-binary: "pol" @@ -673,8 +673,8 @@ jobs: os: ${{ env.OS }} arch: ${{ env.ARCH }} - - name: Compile and Bundle PoQ - uses: ./.github/actions/compile-and-bundle + - name: Compile PoQ Witness Generator + uses: ./.github/actions/compile-witness-generator with: circuit-name-display: "PoQ" circuit-name-binary: "poq" @@ -683,8 +683,8 @@ jobs: os: ${{ env.OS }} arch: ${{ env.ARCH }} - - name: Compile and Bundle ZKSign - uses: ./.github/actions/compile-and-bundle + - name: Compile ZKSign Witness Generator + uses: ./.github/actions/compile-witness-generator with: circuit-name-display: "ZKSign" circuit-name-binary: "zksign" @@ -693,8 +693,8 @@ jobs: os: ${{ env.OS }} arch: ${{ env.ARCH }} - - name: Compile and Bundle PoC - uses: ./.github/actions/compile-and-bundle + - name: Compile PoC Witness Generator + uses: ./.github/actions/compile-witness-generator with: circuit-name-display: "PoC" circuit-name-binary: "poc"