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
  • 🔒 Privacy (PAP) - Optional Pragmatic Adaptive Privacy mode (privacy_mode=PrivacyMode.BASIC) to reduce intent leakage

📖 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.23-cp314-cp314-win_amd64.whl (473.9 kB view details)

Uploaded CPython 3.14Windows x86-64

colibri_stateless-1.1.23-cp314-cp314-manylinux_2_17_x86_64.whl (566.5 kB view details)

Uploaded CPython 3.14manylinux: glibc 2.17+ x86-64

colibri_stateless-1.1.23-cp314-cp314-macosx_15_0_universal2.whl (427.1 kB view details)

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

colibri_stateless-1.1.23-cp312-cp312-win_amd64.whl (461.9 kB view details)

Uploaded CPython 3.12Windows x86-64

colibri_stateless-1.1.23-cp312-cp312-manylinux_2_17_x86_64.whl (566.5 kB view details)

Uploaded CPython 3.12manylinux: glibc 2.17+ x86-64

colibri_stateless-1.1.23-cp312-cp312-macosx_15_0_universal2.whl (426.8 kB view details)

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

File details

Details for the file colibri_stateless-1.1.23-cp314-cp314-win_amd64.whl.

File metadata

File hashes

Hashes for colibri_stateless-1.1.23-cp314-cp314-win_amd64.whl
Algorithm Hash digest
SHA256 42fa3599c63af2f72cc7efa39f5c946458febf5ad56454e06bbf28eb1bc5512b
MD5 c6aac9aeb9641601015929022485fc03
BLAKE2b-256 417ef68dcc4fb976480e66d57659ad71e5e3faf72647109c3264e44a052e1bdb

See more details on using hashes here.

File details

Details for the file colibri_stateless-1.1.23-cp314-cp314-manylinux_2_17_x86_64.whl.

File metadata

File hashes

Hashes for colibri_stateless-1.1.23-cp314-cp314-manylinux_2_17_x86_64.whl
Algorithm Hash digest
SHA256 25ec63f3f6229c082000b85790c81cf2d9a25de7ea20398c60d672f9793ab0e5
MD5 808fd4a647a25344b7d07763d6818989
BLAKE2b-256 04f8fa3dc835cbb10c7109955141006208ca7bf4313a80ec8e9207ca9e9ff18e

See more details on using hashes here.

File details

Details for the file colibri_stateless-1.1.23-cp314-cp314-macosx_15_0_universal2.whl.

File metadata

File hashes

Hashes for colibri_stateless-1.1.23-cp314-cp314-macosx_15_0_universal2.whl
Algorithm Hash digest
SHA256 4299628ac607d6fcece533f63c4754c6205f86c5ebfe8d18d087ad63242820f0
MD5 825b7bbd3fab0367f147df440966cb49
BLAKE2b-256 93b0961ab7dba9bfdef4bc2828151775fd9effac92a72728ee007bd7e664b0e8

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for colibri_stateless-1.1.23-cp312-cp312-win_amd64.whl
Algorithm Hash digest
SHA256 ea29f3356674801b006445399c87722d47ade5c9294c8f0282375984388a0dd8
MD5 2e1366c6bebe2d065dd6ad945e24376b
BLAKE2b-256 94e99b9ec35a10e5216ed86aff5d7891fe8e04181a975c2677051a754a783768

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for colibri_stateless-1.1.23-cp312-cp312-manylinux_2_17_x86_64.whl
Algorithm Hash digest
SHA256 d6e771de401fd4b6b070bf3688d3f79893206f70a13469f359a5f0fcfbb4c620
MD5 e81a8759030e688d4aa4ae647ecbe40b
BLAKE2b-256 16f03de884d33ab9783254352c52e9ac636405eda3451a1130871255dbf8d935

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for colibri_stateless-1.1.23-cp312-cp312-macosx_15_0_universal2.whl
Algorithm Hash digest
SHA256 f4410f30f6dddef7c413c688c8629ce4b0eb2662c8b3fd6423dd2601499a9a52
MD5 6b5dab35bf53ef3887c117df64b898ed
BLAKE2b-256 176c5cce668220a79dd138e7396c092cecd2b2f76de4cb58d450cd0f1f041334

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