logos-blockchain-circuits/CONTRIBUTING.md
2025-10-30 15:22:19 +04:00

63 lines
2.3 KiB
Markdown

# Contributor's Guide
## Triggering a New Release for Nomos Circuits
To trigger a release build:
1. Create and push a tag in the format `vX.Y.Z`.
2. This will automatically trigger the `.github/workflows/build_circuits.yml` workflow.
3. Once the workflow finishes, the generated artifacts will be attached to a new release.
> 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
git tag v1.2.3 -m "Release v1.2.3"
git push --tags
```
## Publishing the Release
After triggering the release, it will appear as a **Draft** and **Pre-Release**.
Before making it public, make sure to:
1. **Review the changelog**
Ensure that all relevant changes are clearly listed and properly formatted.
2. **Confirm the pre-release checklist**
Verify that all required steps have been completed, then remove the checklist from the release notes.
Once everything looks good:
3. **Mark the release as published**
- Uncheck **“This is a pre-release.”**
- Publish the release (removing the Draft state).
> ⚡ **Important:** Nomos builds will only pick up the new circuits once the release is published as **Latest** (i.e. not marked as draft or pre-release).