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.
  • Local eth_call proofsuse_accesslist=True (default) uses eth_createAccessList; set False for legacy debug_traceCall.
  • 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, use_accesslist / prover mode, and other 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)
  • 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 3.0.0

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 3.0.0
File
colibri_stateless-3.0.0-cp314-cp314-win_amd64.whl CPython 3.14 CPython 3.14 Windows x86-64 Details
colibri_stateless-3.0.0-cp314-cp314-manylinux_2_17_x86_64.whl CPython 3.14 CPython 3.14 Linux glibc 2.17+ x86-64 Details
colibri_stateless-3.0.0-cp314-cp314-macosx_26_0_universal2.whl CPython 3.14 CPython 3.14 macOS 26.0+ universal2 (ARM64, x86-64) Details
colibri_stateless-3.0.0-cp312-cp312-win_amd64.whl CPython 3.12 CPython 3.12 Windows x86-64 Details
colibri_stateless-3.0.0-cp312-cp312-manylinux_2_17_x86_64.whl CPython 3.12 CPython 3.12 Linux glibc 2.17+ x86-64 Details
colibri_stateless-3.0.0-cp312-cp312-macosx_26_0_universal2.whl CPython 3.12 CPython 3.12 macOS 26.0+ universal2 (ARM64, x86-64) Details

Total release size: 4.1 MB

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

Download URL colibri_stateless-3.0.0-cp314-cp314-win_amd64.whl
Size 625.9 kB
Tags CPython 3.14 Windows x86-64
SHA-256 checksum
How to use checksums
4f80f7c968848fd790d986656bafc87d656581ee588f6a2b6934e7cb3b73a39e
BLAKE2b-256 checksum
How to use checksums
e0bd0d55ce1f784ca1b66d538a120ccfd498aac2359b785b743d6f2402e303da
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/7.0.0 CPython/3.10.21

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

Download URL colibri_stateless-3.0.0-cp314-cp314-manylinux_2_17_x86_64.whl
Size 816.1 kB
Tags CPython 3.14 Linux glibc 2.17+ x86-64
SHA-256 checksum
How to use checksums
f58f3a6c5b45e1f011f581e5d494de3dbcb606afe2b11234c6b0b6272a2a8313
BLAKE2b-256 checksum
How to use checksums
1f426d3aa21b6cbac875565e3f44f8e34310897591a8f3473f635e8d10d1290c
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/7.0.0 CPython/3.10.21

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

Download URL colibri_stateless-3.0.0-cp314-cp314-macosx_26_0_universal2.whl
Size 598.9 kB
Tags CPython 3.14 macOS 26.0+ universal2 (ARM64, x86-64)
SHA-256 checksum
How to use checksums
a50d324bc4c121f0a514de15e5c85d1b02e75a656b930f6526bb115acdcd9a8b
BLAKE2b-256 checksum
How to use checksums
3f33310e451fe50c89b4dfb7d0c67f91fa1ed95ab6bd79fc888367400b11a880
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/7.0.0 CPython/3.10.21

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

Download URL colibri_stateless-3.0.0-cp312-cp312-win_amd64.whl
Size 610.0 kB
Tags CPython 3.12 Windows x86-64
SHA-256 checksum
How to use checksums
00f04f8c07856fd8853590a902fbad75b339da6a281692a72f7f9c89fdf8b1e9
BLAKE2b-256 checksum
How to use checksums
afb7ed2e3c7283f21ac1856dd3ef509ea6ffdbb64ea6110e592aa6517de0e617
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/7.0.0 CPython/3.10.21

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

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

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

Download URL colibri_stateless-3.0.0-cp312-cp312-macosx_26_0_universal2.whl
Size 598.6 kB
Tags CPython 3.12 macOS 26.0+ universal2 (ARM64, x86-64)
SHA-256 checksum
How to use checksums
12c0226cf8d09936ed0c2f05e45eb35da8ff177b1c1e731be6959039455efc4a
BLAKE2b-256 checksum
How to use checksums
1a444afa6982ad67818a5aea5cd342f987e29dc8a2ca263bf9cf9e88a66525a1
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/7.0.0 CPython/3.10.21

Release history Release notifications | RSS feed

This release

3.0.0 This release

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

2.0.2

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