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 ( This feature is still experimental! )
  • 🔐 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-2.0.0-cp314-cp314-win_amd64.whl (535.8 kB view details)

Uploaded CPython 3.14Windows x86-64

colibri_stateless-2.0.0-cp314-cp314-manylinux_2_17_x86_64.whl (620.7 kB view details)

Uploaded CPython 3.14manylinux: glibc 2.17+ x86-64

colibri_stateless-2.0.0-cp314-cp314-macosx_26_0_universal2.whl (478.4 kB view details)

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

colibri_stateless-2.0.0-cp312-cp312-win_amd64.whl (523.4 kB view details)

Uploaded CPython 3.12Windows x86-64

colibri_stateless-2.0.0-cp312-cp312-manylinux_2_17_x86_64.whl (620.7 kB view details)

Uploaded CPython 3.12manylinux: glibc 2.17+ x86-64

colibri_stateless-2.0.0-cp312-cp312-macosx_26_0_universal2.whl (478.1 kB view details)

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

File details

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

File metadata

File hashes

Hashes for colibri_stateless-2.0.0-cp314-cp314-win_amd64.whl
Algorithm Hash digest
SHA256 6a5490e2358b75dc281896ed3900d1705b530266e710643c5547f2e5be304d89
MD5 f59f13a4fb269864ed870302fb0d3ae0
BLAKE2b-256 843fcdd07ff7bda9d6605a43e71f4e0a9d39818af00cec19d72ab1c493e65d36

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for colibri_stateless-2.0.0-cp314-cp314-manylinux_2_17_x86_64.whl
Algorithm Hash digest
SHA256 c40fe2d6a97fc0a7ca97e60b73b8f289e020b38de63c9855a3d08c45a9c164d9
MD5 d89cd54b8810799ff821050fd372224d
BLAKE2b-256 fa4c34d7a6f8982fe187190a3e9cbc9fa7c6fdda22de1eb380c825f67e12ddb7

See more details on using hashes here.

File details

Details for the file colibri_stateless-2.0.0-cp314-cp314-macosx_26_0_universal2.whl.

File metadata

File hashes

Hashes for colibri_stateless-2.0.0-cp314-cp314-macosx_26_0_universal2.whl
Algorithm Hash digest
SHA256 f53e78b858f5900c90331fd6786ee173c913f8e87a91bc5f6f6d9524240c53df
MD5 feb272584e6f8becbbe90fb1bb30276e
BLAKE2b-256 b727aa876a62c05d9d181e32c855665c10ad1129984d3fd75fa5e2068992c213

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for colibri_stateless-2.0.0-cp312-cp312-win_amd64.whl
Algorithm Hash digest
SHA256 8fe32fb248dc2eaf20264435504c24132e2e9752194dae3a33ba9a41abb9bd5d
MD5 b69a140cd49e9678ab1636831e393c80
BLAKE2b-256 bd015964cb0234d20961fcb87613c17b4792ddfa6f35b621d7983cc5184b070f

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for colibri_stateless-2.0.0-cp312-cp312-manylinux_2_17_x86_64.whl
Algorithm Hash digest
SHA256 97b638c283fec477b84594a85d24a411127ee95fadd0de36e480013b46ab14f4
MD5 082eb8ca6094b34f62e5affcbdb3e85c
BLAKE2b-256 f2b40bba3d367239603ce6fd1f94df8eb1f63c6009d461d1adbb75e61020634c

See more details on using hashes here.

File details

Details for the file colibri_stateless-2.0.0-cp312-cp312-macosx_26_0_universal2.whl.

File metadata

File hashes

Hashes for colibri_stateless-2.0.0-cp312-cp312-macosx_26_0_universal2.whl
Algorithm Hash digest
SHA256 ceb697b6057ec9e5b18a85ee9ba3f44aa12254562523b345d7635a604c7c0de3
MD5 5b7a940fb8e7eb78fb953ead5e6dbede
BLAKE2b-256 50962d5c77c34b417ccff6b564c4a8e5e4fa4576339409a5c515bcf6ed051eb6

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