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

Uploaded CPython 3.12Windows x86-64

colibri_stateless-1.1.2-cp312-cp312-manylinux_2_17_x86_64.whl (523.9 kB view details)

Uploaded CPython 3.12manylinux: glibc 2.17+ x86-64

colibri_stateless-1.1.2-cp312-cp312-macosx_15_0_universal2.whl (394.6 kB view details)

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

colibri_stateless-1.1.2-cp38-cp38-win_amd64.whl (418.3 kB view details)

Uploaded CPython 3.8Windows x86-64

colibri_stateless-1.1.2-cp38-cp38-manylinux_2_17_x86_64.whl (520.9 kB view details)

Uploaded CPython 3.8manylinux: glibc 2.17+ x86-64

colibri_stateless-1.1.2-cp38-cp38-macosx_15_0_universal2.whl (393.2 kB view details)

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

File details

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

File metadata

File hashes

Hashes for colibri_stateless-1.1.2-cp312-cp312-win_amd64.whl
Algorithm Hash digest
SHA256 6dcb5fc2c72cdbdd0898701c41bd884d0b67734931119a4842fb318de9263907
MD5 d235c162b11b03dc769c45605da8aa06
BLAKE2b-256 4b54c427f21e6e83878f0e5827072c0c2e505f16792fb8cc0b4cf502e01b2f53

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for colibri_stateless-1.1.2-cp312-cp312-manylinux_2_17_x86_64.whl
Algorithm Hash digest
SHA256 96c77911388df4bb944de5d839ccda2b6c9940907504aa13ceeebca3341442df
MD5 a07dd5add32dc7b7e7c3d1ea6de8c04c
BLAKE2b-256 25d2842410b5fe8e93e23627bdf01e999ed49934e659a834dc16bc2fdab51022

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for colibri_stateless-1.1.2-cp312-cp312-macosx_15_0_universal2.whl
Algorithm Hash digest
SHA256 42f68f0ea1e7a635a72ce3af901c90499d876aa1448ac414a9f00917c26dc13f
MD5 0097b4237c93d2ac688cea97ca1d9553
BLAKE2b-256 3ebf7641e4ad7f128614c8963f4b3c7ee35ad1c4aa0eb1bdb50de910f4e549c5

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for colibri_stateless-1.1.2-cp38-cp38-win_amd64.whl
Algorithm Hash digest
SHA256 e388edb285c119c926f147d495c48f08290a369e0bbc690706fb19db628985b8
MD5 22e22474fc35d576018ba0152d126396
BLAKE2b-256 013af1664e8a2596985d9d04fc6a3a8a1b0f132c3c97481ea2fbb9bfa9d354e2

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for colibri_stateless-1.1.2-cp38-cp38-manylinux_2_17_x86_64.whl
Algorithm Hash digest
SHA256 15efc80e50257ba60f3e294208befc6953a1357993dbf28ada469d306d47a9c0
MD5 12bab739c833338f61dfee7491b87f1b
BLAKE2b-256 9b34151ec9a21dd1018adc6f2e4484b448b770fe2921ed594f9606bf7ff49ca7

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for colibri_stateless-1.1.2-cp38-cp38-macosx_15_0_universal2.whl
Algorithm Hash digest
SHA256 c846745049fe3659017ff30bdbdd270424a370856ffd4c0f880dbb5b5097083e
MD5 3aee139ba8be85b7c3389ea7484d01a6
BLAKE2b-256 20c9d28c53a20d829500e53213ff2e9de19f4d759fc92d2fa6026fd5ac9c86d2

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