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.20-cp314-cp314-win_amd64.whl (458.6 kB view details)

Uploaded CPython 3.14Windows x86-64

colibri_stateless-1.1.20-cp314-cp314-manylinux_2_17_x86_64.whl (558.5 kB view details)

Uploaded CPython 3.14manylinux: glibc 2.17+ x86-64

colibri_stateless-1.1.20-cp314-cp314-macosx_15_0_universal2.whl (421.5 kB view details)

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

colibri_stateless-1.1.20-cp312-cp312-win_amd64.whl (446.6 kB view details)

Uploaded CPython 3.12Windows x86-64

colibri_stateless-1.1.20-cp312-cp312-manylinux_2_17_x86_64.whl (558.5 kB view details)

Uploaded CPython 3.12manylinux: glibc 2.17+ x86-64

colibri_stateless-1.1.20-cp312-cp312-macosx_15_0_universal2.whl (421.4 kB view details)

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

File details

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

File metadata

File hashes

Hashes for colibri_stateless-1.1.20-cp314-cp314-win_amd64.whl
Algorithm Hash digest
SHA256 d484d6d60186195a1425c24722e5499f7aa7aadf775e4c6f3d4b35dafb27322a
MD5 6b42f28d370db592d4a37b411ea90e8a
BLAKE2b-256 8d94bfe345d847933efd367f30432eb8d150d0a20c10ef0d961b4659bbab68d9

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for colibri_stateless-1.1.20-cp314-cp314-manylinux_2_17_x86_64.whl
Algorithm Hash digest
SHA256 a162c8395e3ac7002b3517a5ee9447d250aa2f2d743ed2f1a6b9fb11d1ae58c2
MD5 738ca6e8b52ed01ad3f3210592b58bc1
BLAKE2b-256 e884fc4b2764ec75d8accfe6fa6b3f1e2db99ea790d2adcffb2c0d24579663d0

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for colibri_stateless-1.1.20-cp314-cp314-macosx_15_0_universal2.whl
Algorithm Hash digest
SHA256 dd73c75e7115cedb01e333f473496ba68723b82dcc267dfe040d3bd2c8377381
MD5 7cef7a5b77357a62fd0861f77ddab414
BLAKE2b-256 6f7b8294a0f25cc26940c3d0b8f11078380413292b33d410e4d76d0b8dd767cc

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for colibri_stateless-1.1.20-cp312-cp312-win_amd64.whl
Algorithm Hash digest
SHA256 690f3e6021f993c26f8c2f3ebe51a0e21a2bd3d012d2f2bb5adea3f6fb76e04f
MD5 c39053919466bb5f375942e37daba215
BLAKE2b-256 3fd60eb028fc793775ef4cd166d425a834a15700a5eb9bae408f0c95ab4d7369

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for colibri_stateless-1.1.20-cp312-cp312-manylinux_2_17_x86_64.whl
Algorithm Hash digest
SHA256 68cf9ecc00cdee1d0fcf36a35687b003b4c15af58a7552c24b44f2ca1df86c20
MD5 132ca2c8fd6b5dd0d8ec07d14f88f244
BLAKE2b-256 f268d068251baa4e901191b64d6ca017f91c475874e59712c4af8204acdfdd0b

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for colibri_stateless-1.1.20-cp312-cp312-macosx_15_0_universal2.whl
Algorithm Hash digest
SHA256 7a2db27e4915dc22c32b40ff25102b79aa0be30942abc74d68a6bd674689565f
MD5 ee7846a4b5d01e8ba50f9d6bd8e52b20
BLAKE2b-256 668c123b04ff02f71b87ec00e64390a9d40fc3303c9fa938ffebb2042c5f5fc5

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