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

📖 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.15-cp312-cp312-win_amd64.whl (439.3 kB view details)

Uploaded CPython 3.12Windows x86-64

colibri_stateless-1.1.15-cp312-cp312-manylinux_2_17_x86_64.whl (545.4 kB view details)

Uploaded CPython 3.12manylinux: glibc 2.17+ x86-64

colibri_stateless-1.1.15-cp312-cp312-macosx_15_0_universal2.whl (412.2 kB view details)

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

colibri_stateless-1.1.15-cp38-cp38-win_amd64.whl (437.9 kB view details)

Uploaded CPython 3.8Windows x86-64

colibri_stateless-1.1.15-cp38-cp38-manylinux_2_17_x86_64.whl (543.6 kB view details)

Uploaded CPython 3.8manylinux: glibc 2.17+ x86-64

colibri_stateless-1.1.15-cp38-cp38-macosx_15_0_universal2.whl (411.1 kB view details)

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

File details

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

File metadata

File hashes

Hashes for colibri_stateless-1.1.15-cp312-cp312-win_amd64.whl
Algorithm Hash digest
SHA256 a0c8ebc9089f1c44b134f03c1953adc058cebbf41cbff139074ea730e7ab7e0b
MD5 c3dbd6fe602c93db7ca27c0245962518
BLAKE2b-256 a7a46517aebf297429700dad760895d246c113c4e11b6eb3cd52eef233fd3f90

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for colibri_stateless-1.1.15-cp312-cp312-manylinux_2_17_x86_64.whl
Algorithm Hash digest
SHA256 f9f2d619d9e6094d6b64c05f13311f1613fce571b9d266f377c31e5b66bea244
MD5 731ae45fd0f2ffe19c61166bf202147e
BLAKE2b-256 069997758531d96d03077581c9b2ae06079e9a21f3bbf74c37d7ece984b4eb0a

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for colibri_stateless-1.1.15-cp312-cp312-macosx_15_0_universal2.whl
Algorithm Hash digest
SHA256 53afa07c94ef5c99f7c494eea0780158f715b57c2048638a6a50e1437e8f31e3
MD5 8a3488055abdeff9d97e4f9c3ebc6369
BLAKE2b-256 280e8f384435f8d77b0a5decc573d323c0e939bc6db36798ee20e29b37f953c0

See more details on using hashes here.

File details

Details for the file colibri_stateless-1.1.15-cp38-cp38-win_amd64.whl.

File metadata

File hashes

Hashes for colibri_stateless-1.1.15-cp38-cp38-win_amd64.whl
Algorithm Hash digest
SHA256 04b408fb161fda851ec499c3d8c309b839b8e0d1009181733675054ac2261f4b
MD5 d9d14fd540c26ddf4fe05a52c73ca0ef
BLAKE2b-256 8089b537171d4a6ee3399889889002b4c841dc7e1ed9044f1cf273eddb2142af

See more details on using hashes here.

File details

Details for the file colibri_stateless-1.1.15-cp38-cp38-manylinux_2_17_x86_64.whl.

File metadata

File hashes

Hashes for colibri_stateless-1.1.15-cp38-cp38-manylinux_2_17_x86_64.whl
Algorithm Hash digest
SHA256 d732057c96545d628d5bef4f70cb2cc4b7f5510410b866b5da410e1e209c4753
MD5 80e7be86c2ad8d1ce7204281f1cb62bd
BLAKE2b-256 983fb959d5500ec6b2449a22bd7c0624cdd5b09c22798d5b3030441227638d72

See more details on using hashes here.

File details

Details for the file colibri_stateless-1.1.15-cp38-cp38-macosx_15_0_universal2.whl.

File metadata

File hashes

Hashes for colibri_stateless-1.1.15-cp38-cp38-macosx_15_0_universal2.whl
Algorithm Hash digest
SHA256 afdb32b0de67009b969c639ff67a24ff7ed7f8a73f4bc9720857f8faab1af1fc
MD5 cf390f6990b9ba13d0f3529f0d42fc73
BLAKE2b-256 bea6e0228e13667f79a8d119dbf5b6b1120113f02a00bf2366d74ae58f4186cf

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