Skip to main content
Colibri Logo

Colibri Stateless — Python

Verify Ethereum RPC data cryptographically — without running a full node.

ETH2.0 Spec Version 1.4.0 License PyPI

Colibri Stateless is a highly efficient prover/verifier for Ethereum (with upcoming support for Layer-2s such as OP-Stack). These Python bindings wrap the C core and give you an async API that verifies every RPC response against the beacon chain — no full node, no continuous sync.

Website · Docs · Whitepaper · Privacy (PAP)

Why Colibri?

  • Stateless — verification needs nothing but the proof and the sync committee it is checked against. The committee is cached locally so it does not have to travel with every request, but it works just as well with an empty cache or none at all. No persistent state, no full node.
  • Cryptographically verified RPC — every RPC response is checked against BLS signatures.
  • Offline verification — proofs are fully self-contained and verify without any network connection, thanks to zk-proofs for the sync committee and signed checkpoints.
  • On-demand, not always-on — work happens only when you make a request; no background sync burning bandwidth, CPU, or battery.
  • Verifies historical data (older than ~27h / 8192 blocks) — via historical_summaries proofs, where other light clients simply fail.
  • eth_getLogs completeness proofs — optional logs_completeness=True proves no matching log was omitted in the requested range.
  • Fully verified local transaction simulation — simulate a transaction against verified state before signing.
  • Privacy-aware — Pragmatic Adaptive Privacy (PAP) mode (privacy_mode=PrivacyMode.BASIC). Experimental.

Quick Start

Installation

python3 -m pip install colibri-stateless

Basic Usage

import asyncio
from colibri import Colibri

async def main():
    # Initialize client for Ethereum Mainnet
    client = Colibri(chain_id=1, provers=["https://mainnet.colibri-proof.tech"])
    
    # Make verified RPC call
    result = await client.rpc("eth_blockNumber", [])
    print(f"Current block: {result}")
    
    # Get account balance with proof verification
    balance = await client.rpc("eth_getBalance", [
        "0x95222290DD7278Aa3Ddd389Cc1E1d165CC4BAfe5", 
        "latest"
    ])
    print(f"Balance: {balance}")

# Run async function
asyncio.run(main())

Python-specific features

  • Async/await — modern async API for all network operations.
  • Pluggable storage — customizable storage backends for caching.
  • Easy integrationpip install with pre-built native extensions.
  • Testing utilities — mock HTTP requests and storage for deterministic tests.
  • Multi-chain — Ethereum Mainnet, Sepolia, Gnosis Chain, and more.
  • Privacy-preserving eth_call — combine ProverMode.HYBRID + PrivacyMode.BASIC + oblivious_nodes (default empty; e.g. https://rpc.safe-node.com/, API key for testing). Setting oblivious_nodes auto-enables PAP. TEE/ORAM background: Oblivious Labs.

Documentation

Full documentation: GitBook Guide

  • API Reference — complete class and method documentation
  • Storage System — custom storage implementations
  • Testing Framework — mock data and integration tests
  • Configuration — chain setup and advanced options
  • Building from Source — development and contribution guide

Development

Building from Source

# Clone repository
git clone https://github.com/corpus-core/colibri-stateless.git
cd colibri-stateless/bindings/python

# Build native extension
./build.sh

# Option 1: Use virtual environment (recommended)
python3 -m venv venv
source venv/bin/activate
pip install -e .
pip install -r requirements-dev.txt

# Run tests
pytest tests/ -v

# Deactivate when done
deactivate

Alternative without virtual environment:

# Install test dependencies with --user flag
python3 -m pip install --user pytest pytest-asyncio aiohttp

# Run tests directly with PYTHONPATH
PYTHONPATH=src python3 -m pytest tests/ -v

Quick Debug Build

For faster iteration during development:

# Build in debug mode
./build_debug.sh

# Run tests without installation
PYTHONPATH=src python3 -m pytest tests/ -v

Integration Tests

# Run with real blockchain data (offline)
from colibri.testing import discover_tests, run_test_case

tests = discover_tests()
for test_name, test_config in tests.items():
    result = await run_test_case(test_name, test_config)
    print(f"Test {test_name}: {'PASSED' if result else 'FAILED'}")

System Requirements

  • Python 3.8+
  • CMake 3.20+ (for building from source)
  • C++17 compiler (for building from source)

Related Projects

  • Core Library: colibri-stateless
  • Swift Bindings: iOS/macOS native integration
  • Kotlin Bindings: Android/JVM integration
  • JavaScript Bindings: Web/Node.js integration

License

MIT License - see LICENSE for details.

Contributing

Contributions welcome! Please read our Contributing Guide and check the Development Documentation.

Release files for colibri-stateless 2.0.2

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Built distributions (wheels)

Table of built distributions (wheels) for colibri-stateless 2.0.2
File
colibri_stateless-2.0.2-cp314-cp314-win_amd64.whl CPython 3.14 CPython 3.14 Windows x86-64 Details
colibri_stateless-2.0.2-cp314-cp314-manylinux_2_17_x86_64.whl CPython 3.14 CPython 3.14 Linux glibc 2.17+ x86-64 Details
colibri_stateless-2.0.2-cp314-cp314-macosx_26_0_universal2.whl CPython 3.14 CPython 3.14 macOS 26.0+ universal2 (ARM64, x86-64) Details
colibri_stateless-2.0.2-cp312-cp312-win_amd64.whl CPython 3.12 CPython 3.12 Windows x86-64 Details
colibri_stateless-2.0.2-cp312-cp312-manylinux_2_17_x86_64.whl CPython 3.12 CPython 3.12 Linux glibc 2.17+ x86-64 Details
colibri_stateless-2.0.2-cp312-cp312-macosx_26_0_universal2.whl CPython 3.12 CPython 3.12 macOS 26.0+ universal2 (ARM64, x86-64) Details

Total release size: 3.3 MB

Release files / colibri_stateless-2.0.2-cp314-cp314-win_amd64.whl

Download URL colibri_stateless-2.0.2-cp314-cp314-win_amd64.whl
Size 547.3 kB
Tags CPython 3.14 Windows x86-64
SHA-256 checksum
How to use checksums
a82826072ae97a648ab9a3edd1cb0cfac3ce1215bb2334487462bbe903bddf0f
BLAKE2b-256 checksum
How to use checksums
c2c5ba2f9c429ffff8779246e031a669ff768b5669e79b5be8727f0acc7ffd5d
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/7.0.0 CPython/3.10.20

Release files / colibri_stateless-2.0.2-cp314-cp314-manylinux_2_17_x86_64.whl

Download URL colibri_stateless-2.0.2-cp314-cp314-manylinux_2_17_x86_64.whl
Size 632.1 kB
Tags CPython 3.14 Linux glibc 2.17+ x86-64
SHA-256 checksum
How to use checksums
62198e8ab1525cb56e7aa12faea9992feed8da4c6aca06298a344234d105a1f7
BLAKE2b-256 checksum
How to use checksums
2147f0698f2fe3c2cbe36c62fb65ee212271d2d7ca48ba07453f9b721d866303
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/7.0.0 CPython/3.10.20

Release files / colibri_stateless-2.0.2-cp314-cp314-macosx_26_0_universal2.whl

Download URL colibri_stateless-2.0.2-cp314-cp314-macosx_26_0_universal2.whl
Size 486.1 kB
Tags CPython 3.14 macOS 26.0+ universal2 (ARM64, x86-64)
SHA-256 checksum
How to use checksums
2e9dbafbef7357ae7d0d483594751fea374db3fca94619171834d3e0c9d8f461
BLAKE2b-256 checksum
How to use checksums
af69eca7dc9880d02661170ca1eb0158b4ec220f45727fa2597491adf5cf2a42
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/7.0.0 CPython/3.10.20

Release files / colibri_stateless-2.0.2-cp312-cp312-win_amd64.whl

Download URL colibri_stateless-2.0.2-cp312-cp312-win_amd64.whl
Size 534.0 kB
Tags CPython 3.12 Windows x86-64
SHA-256 checksum
How to use checksums
b5ce6ffcfd2a8b0e63d76d94ca26d695ac937706f8e2f01fb6ece6cfc41c1265
BLAKE2b-256 checksum
How to use checksums
5865a6412c77c8410cb45da0e8070e37b26b31b4976ccb4dbc0dba065322b064
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/7.0.0 CPython/3.10.20

Release files / colibri_stateless-2.0.2-cp312-cp312-manylinux_2_17_x86_64.whl

Download URL colibri_stateless-2.0.2-cp312-cp312-manylinux_2_17_x86_64.whl
Size 632.2 kB
Tags CPython 3.12 Linux glibc 2.17+ x86-64
SHA-256 checksum
How to use checksums
d81de1b1f180a345a08fc39cc0181afad4c3725d4e9d848d155127d202b198e4
BLAKE2b-256 checksum
How to use checksums
c688bfd6aa53501498896d5c79da681442e32753cb4d859c9ba0fbaa05ddc441
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/7.0.0 CPython/3.10.20

Release files / colibri_stateless-2.0.2-cp312-cp312-macosx_26_0_universal2.whl

Download URL colibri_stateless-2.0.2-cp312-cp312-macosx_26_0_universal2.whl
Size 485.6 kB
Tags CPython 3.12 macOS 26.0+ universal2 (ARM64, x86-64)
SHA-256 checksum
How to use checksums
953f64c7c7b8d3a62a4166bc48b2ec722064efd7308d79def82e20fbc1356dc1
BLAKE2b-256 checksum
How to use checksums
b15c7bf2102306bfe94a1f555e6f4c0fe75b0a62d5aa1632488a4bdb3c3f7e41
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/7.0.0 CPython/3.10.20

Release history Release notifications | RSS feed

3.0.0

6 release files

2.0.6

6 release files

2.0.5

6 release files

2.0.4

6 release files

2.0.3

6 release files

This release

2.0.2 This release

6 release files

2.0.1

6 release files

2.0.0

6 release files

1.1.30

6 release files

1.1.27

6 release files

1.1.26

6 release files

1.1.25

6 release files

1.1.24

6 release files

1.1.23

6 release files

1.1.22

6 release files

1.1.21

6 release files

1.1.20

6 release files

1.1.19

6 release files

1.1.15

6 release files

1.1.14

6 release files

1.1.13

6 release files

1.1.12

6 release files

1.1.11

6 release files

1.1.10

6 release files

1.1.9

6 release files

1.1.8

6 release files

1.1.7

6 release files

1.1.6

6 release files

1.1.5

6 release files

1.1.4

6 release files

1.1.3

6 release files

1.1.2

6 release files

1.1.1

6 release files

1.1.0

6 release files

1.0.1

6 release files

1.0.0

6 release files

0.7.10

6 release files

0.7.9

6 release files

0.7.7

6 release files

0.7.6

6 release files

0.7.5

6 release files

0.7.4

6 release files

0.7.3

6 release files

0.7.2

6 release files

0.7.1

6 release files

0.7.0

6 release files

0.6.12

6 release files

0.6.11

6 release files

0.6.10

6 release files

0.6.9

6 release files

0.6.8

6 release files

0.6.6

6 release files

0.6.5

6 release files

0.6.4

6 release files

0.6.3

6 release files

0.6.2

6 release files

0.6.1

6 release files

0.6.0

6 release files

0.5.1

6 release files

0.5.0

6 release files

0.1.1

6 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page