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

Uploaded CPython 3.12Windows x86-64

colibri_stateless-0.7.5-cp312-cp312-manylinux_2_17_x86_64.whl (491.8 kB view details)

Uploaded CPython 3.12manylinux: glibc 2.17+ x86-64

colibri_stateless-0.7.5-cp312-cp312-macosx_15_0_universal2.whl (368.5 kB view details)

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

colibri_stateless-0.7.5-cp38-cp38-win_amd64.whl (373.8 kB view details)

Uploaded CPython 3.8Windows x86-64

colibri_stateless-0.7.5-cp38-cp38-manylinux_2_17_x86_64.whl (489.3 kB view details)

Uploaded CPython 3.8manylinux: glibc 2.17+ x86-64

colibri_stateless-0.7.5-cp38-cp38-macosx_15_0_universal2.whl (366.8 kB view details)

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

File details

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

File metadata

File hashes

Hashes for colibri_stateless-0.7.5-cp312-cp312-win_amd64.whl
Algorithm Hash digest
SHA256 7d0b120859543b14844a971b80a232b583e4e23dadb83146b534cdb5785e2925
MD5 938003fd09a152db46fc6e2338de5820
BLAKE2b-256 a0bd8b0fc0d653f95bc300ce980eb91dbc0ee30ba606f2e392ba5cbd1633157e

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for colibri_stateless-0.7.5-cp312-cp312-manylinux_2_17_x86_64.whl
Algorithm Hash digest
SHA256 178c9a1c0b20a9e4e653fbf0478e39cd6f192cd5a95df6cc1d39b32edee1a226
MD5 33dc52b3c8a48950aa2e9d8689abd33c
BLAKE2b-256 cb666f362004b2e2a892623e24eedab87682b7c7e3157fd328274bc227a3fe44

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for colibri_stateless-0.7.5-cp312-cp312-macosx_15_0_universal2.whl
Algorithm Hash digest
SHA256 7ed99de9bb7fde473882511452dccf0719044f86ec4c75f3a216bcd4fc39235a
MD5 bac549dbb7d6c54f3a791d73495462c6
BLAKE2b-256 dc350912146170a14d9998ae6874ce9cff234e0ff34a20112d30411bee86913a

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for colibri_stateless-0.7.5-cp38-cp38-win_amd64.whl
Algorithm Hash digest
SHA256 e3a36f0d1176841d67f4af43ab63a270a96770abd3930b4aa604c7d3e44a087f
MD5 37952dc33cf3414c5b6770da2250b9df
BLAKE2b-256 6038c64c36e5f60a21a7c5ca250105d2ea5b8b77a5b4b78ffedbbc1ca362ea33

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for colibri_stateless-0.7.5-cp38-cp38-manylinux_2_17_x86_64.whl
Algorithm Hash digest
SHA256 b178af95d1ae31f45918123659b83c47e84e367e1c47ebc20f50206ded029a50
MD5 7c292d1229b331eadd20948b98ef4ff4
BLAKE2b-256 1da02ad52c2b2926c62b487181075c650ec35e943cac08c46813f24252ff1fc8

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for colibri_stateless-0.7.5-cp38-cp38-macosx_15_0_universal2.whl
Algorithm Hash digest
SHA256 20afe2078e5bba5c84ec251f60ce80fccf266258347431d00094da50ef0435f0
MD5 19005c24ac2adc85dabf30ffd85a52cd
BLAKE2b-256 2176544608ef3f2627e3bfc5d0003f3d6118b59e8d56e53946501f29674dc7c5

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