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

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

Uploaded CPython 3.12Windows x86-64

colibri_stateless-1.1.4-cp312-cp312-manylinux_2_17_x86_64.whl (523.9 kB view details)

Uploaded CPython 3.12manylinux: glibc 2.17+ x86-64

colibri_stateless-1.1.4-cp312-cp312-macosx_15_0_universal2.whl (394.6 kB view details)

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

colibri_stateless-1.1.4-cp38-cp38-win_amd64.whl (418.3 kB view details)

Uploaded CPython 3.8Windows x86-64

colibri_stateless-1.1.4-cp38-cp38-manylinux_2_17_x86_64.whl (520.9 kB view details)

Uploaded CPython 3.8manylinux: glibc 2.17+ x86-64

colibri_stateless-1.1.4-cp38-cp38-macosx_15_0_universal2.whl (393.1 kB view details)

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

File details

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

File metadata

File hashes

Hashes for colibri_stateless-1.1.4-cp312-cp312-win_amd64.whl
Algorithm Hash digest
SHA256 993ee6aaa6482e344043077b44f4e143d9d0a2e112d07ef3273744f035261ec0
MD5 9883aa176b6a71ba559f403c0bdf06da
BLAKE2b-256 8ef7d9d456b2e76d8e8af6ee634f10795ee4160110b272c5f044b4bbf42023c4

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for colibri_stateless-1.1.4-cp312-cp312-manylinux_2_17_x86_64.whl
Algorithm Hash digest
SHA256 4e8930cc1d84b8cd51522f26a4465dc5ff5a741288b160d25de59336602077b3
MD5 330c1836d75a0b9d9c9797f4aa0ee68c
BLAKE2b-256 6b2c15a86c96a64c162c05c1c12744e31c26f664d5b88bc6f21c2b5c92ec9697

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for colibri_stateless-1.1.4-cp312-cp312-macosx_15_0_universal2.whl
Algorithm Hash digest
SHA256 125ad990a6e04c7b073616c750e8e1c991984d683c08f9f3fc95f0408511e016
MD5 d32253ddbfa7517d76a06c291dd034ae
BLAKE2b-256 0b62e7229309a8a8b0bd57b5bce206cf45bb42ce992c24002f5cae75d5601262

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for colibri_stateless-1.1.4-cp38-cp38-win_amd64.whl
Algorithm Hash digest
SHA256 b9f4ffdceb95870523992575e6fc10fb40b1ad7ddc4855a73d4513ba1d7c4c2d
MD5 82f65d855994d5291f9c622f7134bc20
BLAKE2b-256 bfa93f9c41bade21766a51c53e846e0bfa8c6e5da10661a037ff380175e55acb

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for colibri_stateless-1.1.4-cp38-cp38-manylinux_2_17_x86_64.whl
Algorithm Hash digest
SHA256 2cb2d954f346b0bb4ce7b16c5a32bbb7e746c50b0f456c8bb16b06a7e1593996
MD5 066a71f3566fe61c0e2277279a1f9dcc
BLAKE2b-256 c67bc63b45942f426db39ff0fc310d1c30e5693decd128e650c0ef01ea61b967

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for colibri_stateless-1.1.4-cp38-cp38-macosx_15_0_universal2.whl
Algorithm Hash digest
SHA256 9c50719665ff98873a4782ce3c57137e1a652b2c17cb0d761c6da6f476aff9fd
MD5 d72b0617c27e5a4ac03d8310de3e0880
BLAKE2b-256 e18a4afb26dc4de82267a56ff9443d7a2bf05296397b7606d9f105b5f8b4448f

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