Back to Blog
January 15, 202615 min readBy Brebaje Team

Complete Guide: How to Contribute to Cardano's Perpetual Powers of Tau Ceremony

Step-by-step guide to participating in the Cardano PPOT ceremony using Brebaje CLI. Learn how to install, configure, and make your cryptographic contribution to strengthen Cardano's zero-knowledge infrastructure.

Contributing to a Perpetual Powers of Tau (PPOT) ceremony is one of the most impactful ways to participate in Cardano's zero-knowledge infrastructure. This guide will walk you through the entire process of making a contribution using the Brebaje CLI tool, from installation to final verification.

What is a Perpetual Powers of Tau Ceremony?

The Perpetual Powers of Tau is a cryptographic trusted setup ceremony that generates public parameters required by Zero-Knowledge proof systems like Groth16 and PLONK. It's called 'perpetual' because unlike traditional ceremonies, it can accept contributions continuously over time, strengthening the security with each participant.

For Cardano, we use the BLS12-381 elliptic curve, which is the same curve used across the Cardano blockchain. The ceremony we conducted in October 2024 completed successfully with 40 community participants, establishing a strong foundation for privacy-preserving applications on Cardano.

As long as at least one participant honestly destroys their secret contribution (the 'toxic waste'), the entire system remains secure. Your contribution helps strengthen this trust assumption.

Prerequisites and System Requirements

Before starting, ensure your system meets these minimum requirements:

Hardware Requirements

  • Minimum 16GB RAM (recommended 32GB for faster processing)
  • At least 10GB of free disk space for ceremony files
  • Stable internet connection for uploading/downloading files
  • Estimated contribution time: 3-4 hours on standard computers

Software Requirements

  • Node.js version 22.17.1 or higher
  • pnpm version 9.0.0 or higher (package manager)
  • Git installed and configured
  • GitHub account (for authentication and contribution records)
  • Terminal/command line access

Step 1: Installing Brebaje CLI

The Brebaje CLI is the command-line tool that manages the entire contribution process. Let's install it step by step.

Clone the Repository

First, clone the Brebaje repository to your local machine:

git clone https://github.com/Xtremono/brebaje.git cd brebaje

Install Dependencies

Navigate to the CLI directory and install all required dependencies:

cd apps/cli pnpm install

This will download and install all necessary packages including Commander.js for command handling and snarkjs for cryptographic operations.

Build the CLI

Compile the TypeScript source code to JavaScript:

pnpm build

Install Globally (Optional but Recommended)

For easier access from anywhere on your system, install the CLI globally:

pnpm link --global

After this, you can use 'brebaje-cli' from any directory. If you skip this step, you'll need to run commands using 'node ./build/index.js' instead.

Verify Installation

Confirm the installation was successful:

brebaje-cli --help

You should see a list of available commands and options.

Step 2: GitHub Configuration

The ceremony uses GitHub for authentication and storing contribution records. You'll need to create a GitHub account if you don't have one, and generate a special access token.

Fork the Ceremony Repository

Visit the official Cardano PPOT repository and click the 'Fork' button to create your own copy:

https://github.com/p0tion-tools/cardano-ppot

This creates a fork under your GitHub account where your contribution record will be stored.

Generate a GitHub Classic Token

The CLI needs a GitHub token to post contribution records as gists. Here's how to create one:

  • Go to GitHub Settings → Developer settings → Personal access tokens → Tokens (classic)
  • Click 'Generate new token (classic)'
  • Give it a descriptive name like 'Brebaje PPOT Contribution'
  • Set expiration (recommend 90 days or no expiration for ongoing ceremonies)
  • Select ONLY the 'gist' permission scope
  • Click 'Generate token' and copy it immediately (you won't see it again)

Configure the Token in Brebaje CLI

Store your GitHub token securely in the CLI:

brebaje-cli setup gh-token YOUR_GITHUB_TOKEN_HERE

This saves the token locally so you don't have to enter it for each contribution. Keep this token secret and never share it publicly.

Step 3: Making Your Contribution (Automatic Method)

The easiest way to contribute is using the automated flow. This single command handles the entire process for you.

Run Auto-Contribute

Execute the automated contribution command:

brebaje-cli ppot auto-contribute

This command will automatically:

  • Download the latest challenge file from the ceremony
  • Generate your cryptographic contribution using secure randomness
  • Upload your contribution response to cloud storage
  • Post a contribution record to GitHub Gist with your contribution hash
  • Generate URLs for creating a pull request

The process typically takes 3-4 hours depending on your system. You can monitor progress through the detailed logs shown in your terminal.

What Happens During Auto-Contribute

Understanding what the tool does helps you verify the process is working correctly:

  • Download Phase: Fetches the current ceremony state file (usually several GB)
  • Contribution Phase: Runs snarkjs to apply your random entropy to the ceremony parameters
  • Upload Phase: Securely uploads your contribution using pre-signed URLs
  • Record Phase: Creates a permanent public record of your contribution on GitHub Gist

Step 4: Making Your Contribution (Manual Method)

For more control or if you need to troubleshoot, you can execute each step manually.

Download the Challenge File

First, obtain the download URL from ceremony coordinators, then download the file:

brebaje-cli ppot download https://ceremony-storage.url/challenge.ptau

This downloads the current ceremony state to your local 'output' directory.

Generate Your Contribution

Create your cryptographic contribution:

brebaje-cli ppot contribute

This process uses snarkjs internally to:

  • Read the challenge file from the output directory
  • Generate secure random values (your secret entropy)
  • Apply multi-party computation to create new ceremony parameters
  • Save your contribution response file
  • Display your contribution hash for verification

Upload Your Contribution

After generation completes, upload your contribution (you'll receive an upload URL from coordinators):

brebaje-cli ppot upload https://ceremony-storage.url/upload-url

Post Your Contribution Record

Create a permanent public record of your contribution:

brebaje-cli ppot post-record

This creates a GitHub Gist containing your contribution metadata including hashes, timestamps, and system information.

Step 5: Completing Your Contribution

After the automatic or manual contribution process finishes, there are critical final steps you must complete.

Create a Pull Request

The CLI will provide a pull request URL. You MUST:

  • Click the provided GitHub PR URL in your terminal output
  • Review the contribution details in the PR description
  • Click the green 'Create pull request' button on GitHub
  • Wait for ceremony coordinators to review and merge your contribution

Without creating the PR, your contribution won't be officially included in the ceremony!

Share Your Participation (Optional)

The CLI generates a social media sharing link. Consider sharing your participation to:

  • Increase transparency and community awareness
  • Encourage others to participate
  • Demonstrate the decentralized nature of the ceremony
  • Build trust in Cardano's zero-knowledge infrastructure

Verify Your Contribution (Recommended)

Optionally verify your contribution was computed correctly:

brebaje-cli ppot verify ./output/your-contribution.ptau

This runs cryptographic verification to ensure your contribution file is valid and correctly computed.

Understanding the Output Files

After contributing, you'll have several files in your output directory:

  • Input file: The challenge file you downloaded (e.g., challenge_0040.ptau)
  • Output file: Your contribution response (e.g., response_0041.ptau)
  • Contribution record: JSON file with metadata and hashes
  • Attestation: Proof of your contribution including your contribution hash

You can keep these files for your records, but the most important data is already publicly recorded on GitHub.

Security Best Practices

Contributing to a trusted setup ceremony is a responsibility. Follow these security practices:

Toxic Waste Disposal

The most critical security requirement:

  • Your computer's random entropy during contribution is the 'toxic waste'
  • This randomness must be permanently destroyed after contributing
  • The CLI handles this automatically, but for extra security consider rebooting your machine after contributing
  • Never attempt to recover or save the random values used during contribution

GitHub Token Security

  • Never share your GitHub token publicly or commit it to version control
  • Use tokens with minimal permissions (only 'gist' scope required)
  • Rotate tokens periodically for long-running ceremonies
  • Revoke tokens immediately if compromised

Network Security

  • Use a trusted network connection (avoid public WiFi)
  • Verify download URLs are from official ceremony coordinators
  • Check file hashes match expected values when provided
  • Monitor upload progress to ensure complete file transfer

Troubleshooting Common Issues

Out of Memory Errors

If the contribution process crashes with memory errors:

  • Ensure you have at least 16GB RAM (32GB recommended)
  • Close other applications to free memory
  • Increase Node.js memory limit: NODE_OPTIONS='--max-old-space-size=8192' brebaje-cli ppot contribute
  • Consider using a more powerful machine for contribution

Download/Upload Failures

If file transfers fail:

  • Check your internet connection stability
  • Verify the provided URLs are not expired (pre-signed URLs have time limits)
  • Request new download/upload URLs from ceremony coordinators
  • Try again during off-peak hours for better network performance

GitHub Authentication Issues

If posting records fails:

  • Verify your GitHub token has 'gist' permissions
  • Check token hasn't expired
  • Reconfigure token: brebaje-cli setup gh-token NEW_TOKEN
  • Ensure you're authenticated with GitHub (try logging out and back in)

Advanced: For Ceremony Coordinators

If you're coordinating a ceremony, the CLI provides additional commands:

Generate Pre-signed URLs

Create time-limited upload and download URLs for participants:

brebaje-cli ppot generate-urls challenge_0040.ptau --download-filename response_0041.ptau --expiration 1440

This generates both URLs with 24-hour expiration (1440 minutes).

Apply Beacon Randomness

For finalizing a ceremony with public randomness:

brebaje-cli ppot beacon input.ptau BEACON_HEX 10000 'Final Ceremony'

This applies beacon randomness to ensure no single party could have predicted the final parameters.

Initialize New Ceremony

Start a fresh PPOT ceremony:

brebaje-cli ppot new

This creates the initial ceremony parameters for the first contributor.

Why Your Contribution Matters

Every contribution to the Perpetual Powers of Tau ceremony strengthens Cardano's zero-knowledge infrastructure. Here's the impact you're making:

  • Enabling Privacy: Your contribution helps create the foundation for privacy-preserving applications on Cardano
  • Strengthening Security: More contributors mean stronger security assumptions for the entire ecosystem
  • Supporting Developers: Projects building ZK-SNARKs applications benefit from your contribution
  • Building Trust: Public participation demonstrates the decentralized nature of the trusted setup
  • Advancing Technology: Contributing to cutting-edge cryptographic infrastructure

The Cardano PPOT ceremony with 40 participants established one of the most robust trusted setups in the blockchain space. Every additional contributor makes it even stronger.

Next Steps After Contributing

After successfully contributing to the ceremony:

  • Monitor your pull request for coordinator approval and merge
  • Join the community discussion about zero-knowledge development on Cardano
  • Explore building ZK-SNARK applications using the ceremony parameters
  • Consider contributing to additional ceremonies as they launch
  • Share your experience to encourage more community participation

Additional Resources

To learn more about PPOT ceremonies and zero-knowledge proofs:

Official Ceremony Guidelines: Complete reference documentation from the P0tion Tools collective

  • Brebaje Documentation: Complete technical documentation for all CLI commands and API endpoints
  • Cardano PPOT Repository: Official ceremony repository with contribution guidelines and ceremony history
  • P0tion Tools: Multi-chain collaboration for trusted setup infrastructure and ceremony coordination
  • snarkjs Documentation: Understanding the cryptographic tools and algorithms behind the ceremony
  • Zero-Knowledge Proofs on Cardano: Educational resources about ZK implementation and PlutusV3 support

Conclusion

Contributing to the Cardano Perpetual Powers of Tau ceremony is a meaningful way to participate in building privacy-preserving infrastructure. While the process involves several technical steps, the Brebaje CLI tool automates most of the complexity, making it accessible to anyone with basic command-line skills.

By following this guide, you've learned how to install the CLI, configure GitHub authentication, make a contribution using both automatic and manual methods, and complete the necessary verification steps. Your contribution joins dozens of others in creating a robust foundation for zero-knowledge applications on Cardano.

Remember: the security of the entire system relies on at least one participant honestly destroying their toxic waste. By participating and following best practices, you're helping build a more private and secure blockchain ecosystem for everyone.

Written byBrebaje Team
Share this article

Explore More Articles

Discover more insights about zero-knowledge proofs, cryptographic ceremonies, and blockchain technology.

View All Articles