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

Uploaded CPython 3.12Windows x86-64

colibri_stateless-1.1.1-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.1-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.1-cp38-cp38-win_amd64.whl (413.6 kB view details)

Uploaded CPython 3.8Windows x86-64

colibri_stateless-1.1.1-cp38-cp38-manylinux_2_17_x86_64.whl (512.8 kB view details)

Uploaded CPython 3.8manylinux: glibc 2.17+ x86-64

colibri_stateless-1.1.1-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.1-cp312-cp312-win_amd64.whl.

File metadata

File hashes

Hashes for colibri_stateless-1.1.1-cp312-cp312-win_amd64.whl
Algorithm Hash digest
SHA256 660b9ac587d868760817ab1e4c03e2f6f5eb5f5d36b1ea27a2cda57276c64710
MD5 3c8ac7f0be5218d0535e097c801edf94
BLAKE2b-256 235dedec8f7feaa762c979eb6e21a89c4d4f5de653fe92bbf31feeb357f3992d

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for colibri_stateless-1.1.1-cp312-cp312-manylinux_2_17_x86_64.whl
Algorithm Hash digest
SHA256 ec5382a821f09c131ef246f61862f312b6c6772be128f66e10b5a1188bfe29d7
MD5 d0ced236fdd0e04ade587b6f955721a2
BLAKE2b-256 60c3dfda22c63f64a8fbac6992732abaca8ec181f6c62c4d4822da2777c09507

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for colibri_stateless-1.1.1-cp312-cp312-macosx_15_0_universal2.whl
Algorithm Hash digest
SHA256 424298398db353a783ef7744ecb4a6912dba1448accc7c21bc8b52ed2a7c78c2
MD5 f306fd7311d5775fa2bd684ca1d4f4a1
BLAKE2b-256 6df2c94fcdd015879995d84951fc6604240d6d06f01a328fe1a1e7f43c36c6b3

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for colibri_stateless-1.1.1-cp38-cp38-win_amd64.whl
Algorithm Hash digest
SHA256 316e496370780582aee8be1af38b2fd25c8de73c3b0d4221aed2668ebf1232e4
MD5 59cab83b655a6b182d24d231b47bde86
BLAKE2b-256 4177f4ba702c638d81161004849cff90adda1162624ab28880c2a25a7eb5083d

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for colibri_stateless-1.1.1-cp38-cp38-manylinux_2_17_x86_64.whl
Algorithm Hash digest
SHA256 380443f4f44dc2bad32819f2a117aa028c28cd32d09514e94cee0d10d5671d16
MD5 cf03572815990d39c5ce009e68460db8
BLAKE2b-256 3c363833604f21baf548c3137880941600627155ffde60b88932d067c13ad38b

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for colibri_stateless-1.1.1-cp38-cp38-macosx_15_0_universal2.whl
Algorithm Hash digest
SHA256 495c0857a7ae975b26ec2a7250516571c162fb073873668cd5d9cf72433fff1f
MD5 9b41ddfd1e6a9a955d0497d39aea2ef0
BLAKE2b-256 ae07e2065c2612e086a494deecdc7c1b8d9f00e1666843e21bb73b8e5cf950f0

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