Keyboard shortcuts

Press ← or β†’ to navigate between chapters

Press S or / to search in the book

Press ? to show this help

Press Esc to hide this help

Example Integrations

Cowboy enables developers to build privacy-preserving proofs about web data using custom integrations. This section gives a high-level overview of how these integrations are structured, how they work, and what they enable.


🎯 Purpose of Integrations

Integrations allow developers to:

  • Prove specific statements about web data (e.g., β€œMy age according to a government website is over 21.”)
  • Embed custom logic that runs inside zero-knowledge proofs.
  • Emit structured public outputs for use in identity systems, scoring mechanisms, credentials, or composable applications.

This is the utility layer of Cowboy, where developers define what they want to verify about web data and how it can be reused across the ecosystem.


πŸ—οΈ Integration Structure

Each integration includes the following key components:

  • A web target β€” An endpoint or page on the internet (e.g., https://pokeapi.co/api/v2/pokemon/jigglypuff) whose request/response will be proven.
  • An application-specific program β€” A zk-STARK circuit written in Rust that verifies the TLSNotary proof (core proof) and checks custom conditions about the fetched data (e.g., checking follower count, extracting specific fields).
  • Public outputs β€” Optional values emitted by the program after verification, used on-chain or by other integration proofs.

These programs are tested using the Cowboy prover container and submitted to the devnet for deployment and interaction.


πŸ§ͺ Example Integration Overview

The example integrations demonstrate both what’s possible and how to use the provided dev tools for building, testing, and uploading integrations. Each includes:

  1. TLSNotary Proof Input
    Each integration expects a TLSNotary proof aligned to a specific URL β€” for example, the TikTok integration requires a proof of a request to www.tiktok.com/aweme/v2/data/insight/. This proof is generated by the browser extension and passed to the prover.

    βœ… Both example integrations come with a working sample proof so you can start developing immediately. You can also generate your own proof using the extension and prover.

  2. Utilities

    • run: Prove your integration locally against a given input. This is useful during development.
    • upload: Deploy your integration to the chain so that others can use it and verify proofs onchain.

Next Steps

Check out the Repo here