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

Uploaded CPython 3.14Windows x86-64

colibri_stateless-1.1.24-cp314-cp314-manylinux_2_17_x86_64.whl (603.5 kB view details)

Uploaded CPython 3.14manylinux: glibc 2.17+ x86-64

colibri_stateless-1.1.24-cp314-cp314-macosx_15_0_universal2.whl (464.0 kB view details)

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

colibri_stateless-1.1.24-cp312-cp312-win_amd64.whl (499.0 kB view details)

Uploaded CPython 3.12Windows x86-64

colibri_stateless-1.1.24-cp312-cp312-manylinux_2_17_x86_64.whl (603.6 kB view details)

Uploaded CPython 3.12manylinux: glibc 2.17+ x86-64

colibri_stateless-1.1.24-cp312-cp312-macosx_15_0_universal2.whl (463.7 kB view details)

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

File details

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

File metadata

File hashes

Hashes for colibri_stateless-1.1.24-cp314-cp314-win_amd64.whl
Algorithm Hash digest
SHA256 ca5402f865248a0c3e7a97e4f583651239acce2b3807117d190c9a25468a77ba
MD5 542f1bd21064379c80058491c5ab6053
BLAKE2b-256 14aded10cc026350f50d871ff2061ee52c6192be0f5fc78bac5fbce9b7676eea

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for colibri_stateless-1.1.24-cp314-cp314-manylinux_2_17_x86_64.whl
Algorithm Hash digest
SHA256 8d757802470622da6822ede3795aa6a22cb7329157ab2097f848293e672f28bc
MD5 a2254740cc406df9a98a75f199a9eaa6
BLAKE2b-256 af51e7357b673282194de4ca8468450fa7d2660b81826883bdc19f1ccd6a6602

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for colibri_stateless-1.1.24-cp314-cp314-macosx_15_0_universal2.whl
Algorithm Hash digest
SHA256 c1ecd6cb154a883125ce6e16f7e263ebeeab7652fe0f5ca543520fd8e332ba91
MD5 ac9a69b927d50ef50895fdfb427b7073
BLAKE2b-256 21eae329835acea02d1fd9a5ab482e53efd6d14066f2103ef3c91e4e424ad87c

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for colibri_stateless-1.1.24-cp312-cp312-win_amd64.whl
Algorithm Hash digest
SHA256 78b96654191eca540a3f7066108147d0412af5291bd76cd3c696cc8b6094227c
MD5 2c699bded52e94f2a9585d78adc4550e
BLAKE2b-256 46c3d985cfe57de27cc417ec798db5d847068af7f13a9e9b94e39a7f10a0e0b5

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for colibri_stateless-1.1.24-cp312-cp312-manylinux_2_17_x86_64.whl
Algorithm Hash digest
SHA256 18da86d662db90fea2c5928f13c288bb13ece0cdcc5b676a74082d9a632cbe81
MD5 96bf3de3b3ebaa75fb50c6f34cc22136
BLAKE2b-256 6e53e69f868c524207438d6a3e3e624c4f265bf84e8980e92811bafc524d1e2b

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for colibri_stateless-1.1.24-cp312-cp312-macosx_15_0_universal2.whl
Algorithm Hash digest
SHA256 f50ac3826c520416e70b6ab76b1588252f0ece56fc6ea7e79199a51dd4df8b90
MD5 2d6f59200aa21ceb2938e2cd3ec9c6d4
BLAKE2b-256 ef28a2d161fd7df1ad1c1fbc27ea17d1468605079d77a497065e027eae35a175

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