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

Uploaded CPython 3.12Windows x86-64

colibri_stateless-1.1.9-cp312-cp312-manylinux_2_17_x86_64.whl (532.2 kB view details)

Uploaded CPython 3.12manylinux: glibc 2.17+ x86-64

colibri_stateless-1.1.9-cp312-cp312-macosx_15_0_universal2.whl (402.2 kB view details)

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

colibri_stateless-1.1.9-cp38-cp38-win_amd64.whl (424.8 kB view details)

Uploaded CPython 3.8Windows x86-64

colibri_stateless-1.1.9-cp38-cp38-manylinux_2_17_x86_64.whl (530.6 kB view details)

Uploaded CPython 3.8manylinux: glibc 2.17+ x86-64

colibri_stateless-1.1.9-cp38-cp38-macosx_15_0_universal2.whl (400.9 kB view details)

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

File details

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

File metadata

File hashes

Hashes for colibri_stateless-1.1.9-cp312-cp312-win_amd64.whl
Algorithm Hash digest
SHA256 9c6315408d05d7438c6408379f33869e92141abd2202a87701ab4e548a25a99f
MD5 c2fd40a402ed1bc37b707146d9aa8ac9
BLAKE2b-256 af3955ccaf57b84d0c7e93ea693b7764730309c76e131df7e73d044f851c084c

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for colibri_stateless-1.1.9-cp312-cp312-manylinux_2_17_x86_64.whl
Algorithm Hash digest
SHA256 4beaade3366861cfed09b8652b8a5d69c9acc394160a7a03cccdbef9bd404ec9
MD5 a265bae04cc38ad30d9b75de0f4c0f4d
BLAKE2b-256 8ec745be5160fee3289df67638aa1834fae720a23a9d8495571cc028242fc7f2

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for colibri_stateless-1.1.9-cp312-cp312-macosx_15_0_universal2.whl
Algorithm Hash digest
SHA256 a0fa548d047290e80ad5453b66df6b7d80c87ab819f4e8635c719bcca2bea796
MD5 de5df326f95b4c8a86445c2dd19b0108
BLAKE2b-256 5f30684ec291b90f1e8483645877aaf0f7a1ca8058947a31a50574ce082752d2

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for colibri_stateless-1.1.9-cp38-cp38-win_amd64.whl
Algorithm Hash digest
SHA256 3ed7e33a2fdc1d9791df42f190f60b3cade579f0019f373064b650d682fa0335
MD5 d17a0b9afad68627f9fa04a478bfe4f2
BLAKE2b-256 31bf49bbced422316cb3be039490584115c26696678c1efbb648edad2409ca93

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for colibri_stateless-1.1.9-cp38-cp38-manylinux_2_17_x86_64.whl
Algorithm Hash digest
SHA256 5c29c676abf12e5b0768d49ff9a6edde87ff502d9934f8fb43249b671e9fb611
MD5 68e8766f73f4ef37e06408b11a935e1b
BLAKE2b-256 88a9886eff345eb35e32b24490b9cd5c9acb1a7e019a882a89fafcbc632a13b2

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for colibri_stateless-1.1.9-cp38-cp38-macosx_15_0_universal2.whl
Algorithm Hash digest
SHA256 a0018d61c3b7fb00955e858318d03e0fad61af743e21d5f2be0a62fcef229df1
MD5 f0dd33cd4f53d82bef736e530a3efece
BLAKE2b-256 809639e86825ee1ac67e9a9bb92ceb54326571be1e6aff9ca6713632d009325d

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