WARNING: Important Disclaimer & Acceptance of Risk
This is a proof-of-concept implementation that has not undergone security auditing. This code is provided "as is" for research and educational purposes only. It may contain vulnerabilities. Do not use this code in production systems or any environment where security is critical without conducting your own thorough security assessment. By using this code, you acknowledge and accept all associated risks, and our company disclaims any liability for damages or losses.
Cavefish is a research-to-engineering prototype that explores how a Cardano light client can construct a transaction without trusting the service provider that builds it.
It is grounded in the academic paper Communication-Optimal Light Client Protocol for UTxO Ledgers and focuses on trustless transaction construction at the Tx level.
Trustless queries are out of scope for this prototype, but they remain an essential complementary capability in the broader light-client landscape.
The repository contains:
- A Haskell implementation of the Tx-Level Strategy (v0.5)
- Zero-knowledge circuit and WBPS components
- Integration scenarios that exercise the end-to-end protocol flow
- Research artifacts and implementation notes
- v0.5 was delivered under SRL 2 -> 3 (Tx-Level Strategy, Single SP Prototype)
- The A.R.C. workstream is paused (stream closed in February 2026)
- Cavefish is not production-ready and has no active delivery roadmap
- The repo is kept public as a research and architectural artifact
For full closure details, rationale, and technical next steps, see the dedicated closing report.
Cavefish is developed by the Research & Development Innovation group at Input Output Global (IOG), the engineering team behind Cardano. Key contributors include researchers in cryptography and protocol design. Being a contributor means aligning with open-source principles, focusing on secure, peer-reviewed innovations for decentralized systems.
For more on IOG: iohk.io.
Before building anything, fetch the Git LFS artefacts (circuit files under
prototype/packages/wbps/setup/): git lfs install && git lfs pull.
Prerequisites and platform notes (prebuilt helper binaries) are listed in
prototype/README.md.
Implementation onboarding is maintained in component-level READMEs:
- Haskell prototype (build, run, test): prototype/README.md
- Consolidated performance results and reproduction notes: docs/benchmarks.md
- ZK component-benchmark harness: benchmarks/README.md
- ZK circuits and WBPS flow: zk-wbps/README.md
- Academic paper build flow: paper/Readme.md
Package-level docs:
- Service Provider package: prototype/packages/server/README.md
- Integration tests package: prototype/packages/tests/README.md
If you want to understand the end-to-end flow first:
- Main executable scenario entry point: prototype/packages/tests/test/Cavefish/Nominal.hs
- Nominal flow:
register -> demonstrate -> prove -> verify/blind-sign -> submit -> fetchTxStatus - Run from prototype/:
cabal test cavefish-tests:test
High-level architecture path:
- prototype/packages/tests (scenario and in-process harness)
- prototype/packages/server (HTTP endpoints and orchestration)
- prototype/packages/wbps (protocol/domain core and persistence)
- Generated event-sourced artifact trace (see prototype execution artefacts)
- prototype/ - Haskell prototype (Tx-Level strategy, single-SP flow)
- zk-wbps/ - Circom circuits and WBPS tooling
- paper/ - LaTeX sources for the academic paper
- publication/ - Built PDF outputs
- Logbook.md - Chronological development record
- Closing-Report.md - Workstream closing report (February 2026)
- Milestones overview
- Delivered milestone (SRL 2 -> 3)
- Closed issues for milestone 1
- Historical project board
- Wiki
- Open issues: https://github.com/input-output-hk/cavefish/issues
- Wiki discussions: https://github.com/input-output-hk/cavefish/wiki
- Community forum: https://forum.cardano.org
Contributions follow standard GitHub workflow: open an issue for larger changes, submit a PR with context, and include relevant build/test evidence.