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

Uploaded CPython 3.12Windows x86-64

colibri_stateless-1.1.0-cp312-cp312-manylinux_2_17_x86_64.whl (515.2 kB view details)

Uploaded CPython 3.12manylinux: glibc 2.17+ x86-64

colibri_stateless-1.1.0-cp312-cp312-macosx_15_0_universal2.whl (388.7 kB view details)

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

colibri_stateless-1.1.0-cp38-cp38-win_amd64.whl (414.2 kB view details)

Uploaded CPython 3.8Windows x86-64

colibri_stateless-1.1.0-cp38-cp38-manylinux_2_17_x86_64.whl (512.9 kB view details)

Uploaded CPython 3.8manylinux: glibc 2.17+ x86-64

colibri_stateless-1.1.0-cp38-cp38-macosx_15_0_universal2.whl (387.2 kB view details)

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

File details

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

File metadata

File hashes

Hashes for colibri_stateless-1.1.0-cp312-cp312-win_amd64.whl
Algorithm Hash digest
SHA256 7bde1cbdb6a2a55346c15be1b5d160457419452fd66d4e6ecec243e47cf86ec8
MD5 28c33f65a782a8ba1de61f787362ab3b
BLAKE2b-256 dd879ac4acc6c9a36680826e833c3fb176cd329755051aaa5b433e39e1c236c8

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for colibri_stateless-1.1.0-cp312-cp312-manylinux_2_17_x86_64.whl
Algorithm Hash digest
SHA256 0eba7672c6c468b1234c741a68bb32bf21ebd445b195eec16fb8b9dfed3a59f9
MD5 9f9fb1c13da2fcb126ec2a14db5de012
BLAKE2b-256 a0de5a35f1be0bb471110b042b8d996bd12605275e7705e0a6075693cfdd0906

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for colibri_stateless-1.1.0-cp312-cp312-macosx_15_0_universal2.whl
Algorithm Hash digest
SHA256 58259a67adc126548ff394d2ca50784d011e04411a1c55741a12aa3ed3146ef8
MD5 53025f2a27796c20616220a7dc3bf822
BLAKE2b-256 5ebb292a63ddcd151b3a971844faaf3ad69db3b2c2011e098f6e975b71430329

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for colibri_stateless-1.1.0-cp38-cp38-win_amd64.whl
Algorithm Hash digest
SHA256 c543b26b9fa9e167d7f87755f148cb9078be6cfb422cca9596efdd7109f586c3
MD5 5b9a25027f30bde97a1415f00265f35f
BLAKE2b-256 e2dcd1941d5d2d71a367de636ed335d21117d824666b0edb2e0d96ab3cd63b20

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for colibri_stateless-1.1.0-cp38-cp38-manylinux_2_17_x86_64.whl
Algorithm Hash digest
SHA256 162b8f0219e2988c356b7f853d86bff130a5c22ca0dbffa673aa8e4a9df9cf35
MD5 cacd53c907fe1a983d47a32ddf193bd1
BLAKE2b-256 a5a578f17fd31658015dd427cec71d451a75e80398c8f7cd2229f1fa270ea738

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for colibri_stateless-1.1.0-cp38-cp38-macosx_15_0_universal2.whl
Algorithm Hash digest
SHA256 278907f0025eddb801b3d32abedc8642f5fff5b06cfb0823a4f432e9579da01b
MD5 f6783e965e661423cff5caa612e1f404
BLAKE2b-256 bef5dcce7388a27e2a8df594a9bdf1ca1051f206d99e39db065b45d419a3924d

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