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

Uploaded CPython 3.12Windows x86-64

colibri_stateless-1.0.0-cp312-cp312-manylinux_2_17_x86_64.whl (496.5 kB view details)

Uploaded CPython 3.12manylinux: glibc 2.17+ x86-64

colibri_stateless-1.0.0-cp312-cp312-macosx_15_0_universal2.whl (372.8 kB view details)

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

colibri_stateless-1.0.0-cp38-cp38-win_amd64.whl (376.4 kB view details)

Uploaded CPython 3.8Windows x86-64

colibri_stateless-1.0.0-cp38-cp38-manylinux_2_17_x86_64.whl (493.6 kB view details)

Uploaded CPython 3.8manylinux: glibc 2.17+ x86-64

colibri_stateless-1.0.0-cp38-cp38-macosx_15_0_universal2.whl (371.3 kB view details)

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

File details

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

File metadata

File hashes

Hashes for colibri_stateless-1.0.0-cp312-cp312-win_amd64.whl
Algorithm Hash digest
SHA256 2353b26be559d9bc5d4a16898ced3e0a234e86421389b96690a0cf92f0f0a835
MD5 158b1f616fc103944792d1de135ddc85
BLAKE2b-256 c624456d5c0de912eb43825632a7180f254ab6adc97e4b8097259a959c51ba84

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for colibri_stateless-1.0.0-cp312-cp312-manylinux_2_17_x86_64.whl
Algorithm Hash digest
SHA256 1dcd453930473257b10e0896339c5a2957380ddec313b962532288a87476aa30
MD5 8b3f114786929203a48ae9fea119a390
BLAKE2b-256 da94371352ec984a5de95bc5ad418540aeee03bf3448a2db17a80cf8a04dfeb6

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for colibri_stateless-1.0.0-cp312-cp312-macosx_15_0_universal2.whl
Algorithm Hash digest
SHA256 acf6383b6f395b7f3a4d4ba360a5fc23078f06f76a700ff707b426afa96f64c6
MD5 c99837edf7006449c234f0ef0d1b006b
BLAKE2b-256 92ebffa6d4107a95b97f7c8ca20c930e3818bf8044ed3db625d273754a8091ee

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for colibri_stateless-1.0.0-cp38-cp38-win_amd64.whl
Algorithm Hash digest
SHA256 0bd8de32b4bcf48de11954be2b0f7dc7ed13cc7d03d544730bdc6e0aeef3e58e
MD5 f114846c938a277fc4b3122e1642d971
BLAKE2b-256 33227433dd72617ffc997a8b29dfeaee70018f322f3808db811d226740217f5b

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for colibri_stateless-1.0.0-cp38-cp38-manylinux_2_17_x86_64.whl
Algorithm Hash digest
SHA256 e56db5c5d15e11a975987467f91ddccac3d197ad11dfd57529e1d44e59874c8e
MD5 50bff1c796841417b0785cab0f1257d4
BLAKE2b-256 0b2ac1c2b328bf5c6f35c5df3c43f9061753844ef4fb0e6e88811a572a8399f0

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for colibri_stateless-1.0.0-cp38-cp38-macosx_15_0_universal2.whl
Algorithm Hash digest
SHA256 f64fe01f53027b55bde651925683846419403c391182e478d68758c99fb71cd5
MD5 8fddf091a87b5e6f7574d01b800260b7
BLAKE2b-256 f2a337a3c13d3eb882c1f0bfc49d21acda3a35a8104cfed7e0b0033696d4903e

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