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-0.7.10-cp312-cp312-win_amd64.whl (378.5 kB view details)

Uploaded CPython 3.12Windows x86-64

colibri_stateless-0.7.10-cp312-cp312-manylinux_2_17_x86_64.whl (496.6 kB view details)

Uploaded CPython 3.12manylinux: glibc 2.17+ x86-64

colibri_stateless-0.7.10-cp312-cp312-macosx_15_0_universal2.whl (372.9 kB view details)

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

colibri_stateless-0.7.10-cp38-cp38-win_amd64.whl (376.4 kB view details)

Uploaded CPython 3.8Windows x86-64

colibri_stateless-0.7.10-cp38-cp38-manylinux_2_17_x86_64.whl (493.6 kB view details)

Uploaded CPython 3.8manylinux: glibc 2.17+ x86-64

colibri_stateless-0.7.10-cp38-cp38-macosx_15_0_universal2.whl (371.3 kB view details)

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

File details

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

File metadata

File hashes

Hashes for colibri_stateless-0.7.10-cp312-cp312-win_amd64.whl
Algorithm Hash digest
SHA256 463f30e8e72299096d11e9e064f77a5d66cc2da506512e67134e2b950a45360f
MD5 5c72e03066c590e6c4fb6d52294b05ad
BLAKE2b-256 cb3120bb0d1f25b3551318fbe271e0ce1e721b4209af2f5965999e99160fc570

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for colibri_stateless-0.7.10-cp312-cp312-manylinux_2_17_x86_64.whl
Algorithm Hash digest
SHA256 44be8d1b907d970604621ad4385ae31ef595e474a2b5193362d1bbac52ca852c
MD5 036bc30c0c1d9b762f576bd78112bed6
BLAKE2b-256 9508a0575368082f807ce21252d1ea61c27bcd632da8a1d3cbeb12c3419de097

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for colibri_stateless-0.7.10-cp312-cp312-macosx_15_0_universal2.whl
Algorithm Hash digest
SHA256 f52698933cc16d4fd077c64b72aa3ac94cb08ca18da729d7ce01acb403fc6610
MD5 4c0f1d2a248338fae7282a3eebe22a16
BLAKE2b-256 57d3700872988fb259103a712c3a6b6816f5e0020c0e766e08090f5638daec98

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for colibri_stateless-0.7.10-cp38-cp38-win_amd64.whl
Algorithm Hash digest
SHA256 7fcbba0aa91f2e115ab3e1ce4e217a5f4e243624c05351b2b447d8fe7dad74fe
MD5 07360eafb29def4c1414f16e0a9f4d5c
BLAKE2b-256 c03d81f6fa03c05bf45a8fdc3a9b0bc27ae7138899f11be928f41b7600318281

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for colibri_stateless-0.7.10-cp38-cp38-manylinux_2_17_x86_64.whl
Algorithm Hash digest
SHA256 e903a4c2f3945d9e4b8a71e5c4eec8e2e1e093a58c7f060d7f90af676170aca3
MD5 7068354c9914095cf265141864e408e9
BLAKE2b-256 eb7458bc3ede7c69463e2fbaad17692f9d843dd1bb175d51afb7c7c34713a767

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for colibri_stateless-0.7.10-cp38-cp38-macosx_15_0_universal2.whl
Algorithm Hash digest
SHA256 a218fa65d858608c580bc6ea00608679a210445a39ccc2848cfe2c6e427d34b1
MD5 9df0caaa5a71fb007d4654f306a27391
BLAKE2b-256 42a6aacefd9b54e7fa30b4ad7e5fb027bc09e197ab431a87fd7a003cbb87344c

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