Skip to main content

Python bindings for Colibri stateless Ethereum proof library

Project description

C4 Logo

Colibri Python Bindings (corpus core colibri client)

ETH2.0_Spec_Version 1.4.0

The colibri client is a stateless and trustless ethereum client, which is optimized for the mobile apps or embedded devices, because it does not hols the state, but verifies on demand.

🚀 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())

✨ Key Features

  • 🔐 Cryptographic Verification - All RPC responses verified with Merkle proofs
  • 🚀 Async/Await Support - Modern Python async support for network operations
  • 💾 Pluggable Storage - Customizable storage backends for caching
  • 🧪 Comprehensive Testing - Mock HTTP requests and storage for testing
  • 🌐 Multi-Chain Support - Ethereum Mainnet, Sepolia, Gnosis Chain, and more
  • 📦 Easy Integration - Simple pip install with pre-built native extensions
  • 🔒 Privacy (PAP) - Optional Pragmatic Adaptive Privacy mode (privacy_mode=PrivacyMode.BASIC) to reduce intent leakage
  • 🔐 Privacy-preserving eth_call - ProverMode.HYBRID + PrivacyMode.BASIC + oblivious_nodes (default empty; e.g. https://rpc.safe-node.com/, API key for testing). Oblivious auto-enables PAP. TEE/ORAM: 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.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distributions

No source distribution files available for this release.See tutorial on generating distribution archives.

Built Distributions

If you're not sure about the file name format, learn more about wheel file names.

colibri_stateless-1.1.27-cp314-cp314-win_amd64.whl (530.2 kB view details)

Uploaded CPython 3.14Windows x86-64

colibri_stateless-1.1.27-cp314-cp314-manylinux_2_17_x86_64.whl (613.9 kB view details)

Uploaded CPython 3.14manylinux: glibc 2.17+ x86-64

colibri_stateless-1.1.27-cp314-cp314-macosx_15_0_universal2.whl (471.9 kB view details)

Uploaded CPython 3.14macOS 15.0+ universal2 (ARM64, x86-64)

colibri_stateless-1.1.27-cp312-cp312-win_amd64.whl (516.3 kB view details)

Uploaded CPython 3.12Windows x86-64

colibri_stateless-1.1.27-cp312-cp312-manylinux_2_17_x86_64.whl (613.8 kB view details)

Uploaded CPython 3.12manylinux: glibc 2.17+ x86-64

colibri_stateless-1.1.27-cp312-cp312-macosx_15_0_universal2.whl (471.6 kB view details)

Uploaded CPython 3.12macOS 15.0+ universal2 (ARM64, x86-64)

File details

Details for the file colibri_stateless-1.1.27-cp314-cp314-win_amd64.whl.

File metadata

File hashes

Hashes for colibri_stateless-1.1.27-cp314-cp314-win_amd64.whl
Algorithm Hash digest
SHA256 5f4b624f11d523cef10b15373967e9e53a0f84f92824ccaef492b7cf194147ec
MD5 fa66aaab7c39cdd48cba5e569f30e511
BLAKE2b-256 e85c324818c4bf3ca1d19b0187baa386bef07efdf27377a3548dbb70c1225e55

See more details on using hashes here.

File details

Details for the file colibri_stateless-1.1.27-cp314-cp314-manylinux_2_17_x86_64.whl.

File metadata

File hashes

Hashes for colibri_stateless-1.1.27-cp314-cp314-manylinux_2_17_x86_64.whl
Algorithm Hash digest
SHA256 ba4091fcc2e78212ed8876a9721c47e882306c2af230ade41ed4a6e3b98ecbc2
MD5 86c287120fdebecb1e8d1034bb19b97a
BLAKE2b-256 cd33c44708bd8eacb49cbb488c46e47db0183b2a3c8782b873ae48a80795c9c8

See more details on using hashes here.

File details

Details for the file colibri_stateless-1.1.27-cp314-cp314-macosx_15_0_universal2.whl.

File metadata

File hashes

Hashes for colibri_stateless-1.1.27-cp314-cp314-macosx_15_0_universal2.whl
Algorithm Hash digest
SHA256 0fad4b74c17f7d470eee2aff949c97f8622df9077b611a6354f152dd1b2b0ee9
MD5 ff55840af86a3a66275507ad4af8ddbf
BLAKE2b-256 5662b46d3584e28a579c81466b1f10ae1abf15f9c3d3e553629027787fe58d08

See more details on using hashes here.

File details

Details for the file colibri_stateless-1.1.27-cp312-cp312-win_amd64.whl.

File metadata

File hashes

Hashes for colibri_stateless-1.1.27-cp312-cp312-win_amd64.whl
Algorithm Hash digest
SHA256 cf8cf7e603e524c2e38fcda057343e40988b50147bd05264d3a1c0872b9d260b
MD5 54adee838fd56a3c9e0926abc9f40aaa
BLAKE2b-256 8de0b6ccaf15634e5cb93df1882d697a396d64d6b966bc34f96889568e07a0da

See more details on using hashes here.

File details

Details for the file colibri_stateless-1.1.27-cp312-cp312-manylinux_2_17_x86_64.whl.

File metadata

File hashes

Hashes for colibri_stateless-1.1.27-cp312-cp312-manylinux_2_17_x86_64.whl
Algorithm Hash digest
SHA256 088866e745ea722fc404db9ef9d2bd2ac87dc1b33dd63784fc00a6332350cd7f
MD5 1f6112697b7de4e5d19f3a9e419f6071
BLAKE2b-256 05940f4f11080f13c9068c4100a4b0a5ab690628bd711b36f599f60cf9cdbf03

See more details on using hashes here.

File details

Details for the file colibri_stateless-1.1.27-cp312-cp312-macosx_15_0_universal2.whl.

File metadata

File hashes

Hashes for colibri_stateless-1.1.27-cp312-cp312-macosx_15_0_universal2.whl
Algorithm Hash digest
SHA256 57c8617afe6ee118656c7dde7ad19272c236b6e496d08110b708aa0a2ae86044
MD5 37f736c1ba6e5479b128a1967760566c
BLAKE2b-256 8d83997fa38dfe75199408b4055d6ba0b9e8d23455d6075f011d282c286d9a70

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page