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

Uploaded CPython 3.12Windows x86-64

colibri_stateless-0.7.6-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.6-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.6-cp38-cp38-win_amd64.whl (373.8 kB view details)

Uploaded CPython 3.8Windows x86-64

colibri_stateless-0.7.6-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.6-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.6-cp312-cp312-win_amd64.whl.

File metadata

File hashes

Hashes for colibri_stateless-0.7.6-cp312-cp312-win_amd64.whl
Algorithm Hash digest
SHA256 457f50a1d3aefabea82369a68a22341409cddd5aadb33c504081885361095723
MD5 700f64de1178b187f80d218814b88053
BLAKE2b-256 cec96912eadf1eaee4fd41305f926b2fbe07a79bb1b00d5516fed139475ec932

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for colibri_stateless-0.7.6-cp312-cp312-manylinux_2_17_x86_64.whl
Algorithm Hash digest
SHA256 e6031c38e9f49d60485fe7c0574fc69dad5ddf8f63a510eb9d530dfe466a1154
MD5 27423744b64b955fc8acc89abc152531
BLAKE2b-256 9ce2e7fecb558113ec6103c39648af44bd44b79c5684aa17ac076791ff8803d8

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for colibri_stateless-0.7.6-cp312-cp312-macosx_15_0_universal2.whl
Algorithm Hash digest
SHA256 d304677af5ae9d5dd5d7621e7d3463bfc881c237cb861f74a364ed6b8d64665e
MD5 89b9a282e04fc4e0920c62a0f09dbb2e
BLAKE2b-256 22c2a1af842687aa17ee455fed0ee38d754b905b924aad3735a1d1aebe9bdf6d

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for colibri_stateless-0.7.6-cp38-cp38-win_amd64.whl
Algorithm Hash digest
SHA256 fe1e165173a4e0a0a324dca8400b223185af2c20ba5da4dbfad1c7f087331911
MD5 4440a950e0d5f6bb494b2d5e665bbeac
BLAKE2b-256 091e7e1d8cc9c7307aebd63be5d051353bb3908a9e3686102908befe6d263285

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for colibri_stateless-0.7.6-cp38-cp38-manylinux_2_17_x86_64.whl
Algorithm Hash digest
SHA256 bce64851210cefe44b6c2bd5eef3c7c2edb8dd33253228cd59183c1b52196386
MD5 814a875f7c5d6e3f100c1a9fbc342504
BLAKE2b-256 9989b86efcd996a5fd9d7ba4886b481fba8af1b180fb737275dea17d839f9bad

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for colibri_stateless-0.7.6-cp38-cp38-macosx_15_0_universal2.whl
Algorithm Hash digest
SHA256 ad7887a225acbe9547b0e4d098248f1b52d4f4cd76741ada70924494fe707507
MD5 1a28fa704f31c960053486a97708bc57
BLAKE2b-256 bc3e7361dd822287a5557e057d83bddf44adc72a04eadffe70dfb30b8e7335e9

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