Quickstart Guide
Get up and running with TACEO:OPRF in minutes. This guide will walk you through installation and your first OPRF computation.
Installation
Option 1: Download Binary (Recommended)
Download the pre-built client from GitHub Releases.
macOS users: You'll need to allow the binary to execute:
xattr -dr com.apple.quarantine taceo-oprf-testnet-client
Option 2: Build from Source
If you prefer to build from source:
# Clone the repository
git clone --recursive https://github.com/TaceoLabs/oprf-testnet.git && cd oprf-testnet
# Install dependencies
# - Rust: https://rust-lang.org/learn/get-started/
# - On Ubuntu: build-essential (name may vary on other platforms)
# Build the client (this takes some time)
cargo build --release
# Copy the binary for convenience into the root folder
mv target/release/taceo-oprf-testnet-client .
Now you'll have a taceo-oprf-testnet-client binary to interact with TACEO:OPRF!
Your First OPRF Computation
We'll demonstrate two different authorization modules that showcase TACEO:OPRF's flexibility.
Example 1: Simple API Key Authorization
This example uses basic API key validation - perfect for getting started.
Run the command:
./taceo-oprf-testnet-client \
--api-key taceo_3ZfE55WkcNWRweh5rcfpUNpi \
basic \
--input 42
What happens:
- Client sends your input (
42) and API key to OPRF nodes - Nodes verify the API key is valid
- Nodes cooperatively compute the OPRF output
- Client receives and displays the final result
Expected output: You'll see the deterministic OPRF output in your terminal. Running the same command again produces the same result - this is the deterministic property of OPRFs.
The OPRF secret key is used to derive the output. Without querying the OPRF nodes with the same input, no one can guess or reproduce this output. This is guaranteed by the cryptographic properties of OPRFs.
Example 2: Wallet Ownership Proof
This advanced example demonstrates zero-knowledge wallet ownership verification.
Prerequisites:
You'll need Barretenberg v3.0.0-nightly.20260102:
# Install bbup
curl -L https://raw.githubusercontent.com/AztecProtocol/aztec-packages/refs/heads/next/barretenberg/bbup/install | bash
# Add to PATH and restart shell, then:
bbup -nv 1.0.0-beta.18
Run the command:
./taceo-oprf-testnet-client \
--api-key taceo_3ZfE55WkcNWRweh5rcfpUNpi \
wallet-ownership
What happens:
- Client generates a fresh Ethereum wallet (private key shown in output)
- Client creates a zero-knowledge proof of wallet ownership
- OPRF nodes verify the proof without learning the wallet address
- Nodes compute OPRF output using the verified wallet as input
- Client receives the final result and ZK proof files
Expected output:
- Private key of the generated wallet
- OPRF output (deterministic nullifier)
proofandpublic_inputsfiles for verification
Verify with existing wallet: You can reuse a previously generated private key:
./taceo-oprf-testnet-client \
--api-key taceo_3ZfE55WkcNWRweh5rcfpUNpi \
wallet-ownership \
--private-key <PREVIOUS_PRIVATE_KEY>
This will produce the same nullifier, demonstrating deterministic output.
Understanding the Results
Proof Verification
Download the verification key:
curl -sSLO https://github.com/TaceoLabs/oprf-testnet/raw/refs/heads/main/oprf-testnet-authentication/verified_oprf_proof.vk
Verify your proof:
bb verify -p proof -i public_inputs -k verified_oprf_proof.vk
What the Proofs Demonstrate
The wallet ownership example uses two zero-knowledge proofs:
1. Blinded Query Proof (source)
- Proves you control the wallet without revealing the address
- Verifies signature against a specific message
- Generates blinded OPRF query
2. Verified OPRF Proof (source)
- Proves correct OPRF computation
- Verifies the nullifier corresponds to your wallet
- Enables third-party verification without revealing inputs
Next Steps
Experiment Locally
Ready to experiment more? Set up your own local OPRF network for development.
Custom Authorization
Want to build your own authorization logic? Learn about Authorization Modules.
Integration
Ready to integrate into your application? Check the API Reference.
Use Cases
Looking for inspiration? Explore our Use Cases & Examples.
Troubleshooting
Common Issues
Binary execution blocked (macOS)
xattr -dr com.apple.quarantine taceo-oprf-testnet-client
Binary execution blocked (linux)
sudo chmod +x taceo-oprf-testnet-client
Missing dependencies Ensure you have Rust and build tools installed:
- Rust installation guide
- Ubuntu:
sudo apt install build-essential
Network connectivity The development API is hosted in EU (Frankfurt). Network latency may vary by location.
Need help?
- Troubleshooting & Support: Join our Discord
- Production Deployment: Contact us to discuss production use