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

Uploaded CPython 3.14Windows x86-64

colibri_stateless-1.1.25-cp314-cp314-manylinux_2_17_x86_64.whl (604.4 kB view details)

Uploaded CPython 3.14manylinux: glibc 2.17+ x86-64

colibri_stateless-1.1.25-cp314-cp314-macosx_15_0_universal2.whl (464.6 kB view details)

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

colibri_stateless-1.1.25-cp312-cp312-win_amd64.whl (503.9 kB view details)

Uploaded CPython 3.12Windows x86-64

colibri_stateless-1.1.25-cp312-cp312-manylinux_2_17_x86_64.whl (604.4 kB view details)

Uploaded CPython 3.12manylinux: glibc 2.17+ x86-64

colibri_stateless-1.1.25-cp312-cp312-macosx_15_0_universal2.whl (464.3 kB view details)

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

File details

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

File metadata

File hashes

Hashes for colibri_stateless-1.1.25-cp314-cp314-win_amd64.whl
Algorithm Hash digest
SHA256 b8118fd682525337c6eb4c81968ed2124250394b3a3e61c48ab776dc940189e8
MD5 d37a338d34e1c6f0e1f22a4d7ec448e5
BLAKE2b-256 bb653d0d05a828b706888292a43f12cb0add8218170e93472de1598287434326

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for colibri_stateless-1.1.25-cp314-cp314-manylinux_2_17_x86_64.whl
Algorithm Hash digest
SHA256 0446192f773fd42f457c8453aea85f17f5ad192021e1d679f9388e9a001216bc
MD5 33ac568198f5f7e2ff7d11dc2322f954
BLAKE2b-256 b04d532b47c2d0bf24b0512b91295a1a7cb92d6b1090c41ab665071f5416d893

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for colibri_stateless-1.1.25-cp314-cp314-macosx_15_0_universal2.whl
Algorithm Hash digest
SHA256 f38db1d9128e704ba89e7ade4af26194062ed9b1a3761be8fb2875d896e19d69
MD5 2dfcb0c79f7cc1ac9bdcaf28ed7ab4ba
BLAKE2b-256 d802340097d4d63a914b1847362f70c9a60d2c604956f30c7ccad62d092c7d25

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for colibri_stateless-1.1.25-cp312-cp312-win_amd64.whl
Algorithm Hash digest
SHA256 16cb6dbe59599138d068574db765e914de3d76bebecf05d6553e77cbd461d962
MD5 3b62ce704c65bd5859aae784b318bb52
BLAKE2b-256 c50ba822dda4498a22ae17045cc7f5c0f188116160007d1e2a1d11434ee6f7c4

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for colibri_stateless-1.1.25-cp312-cp312-manylinux_2_17_x86_64.whl
Algorithm Hash digest
SHA256 131b04759a52cefa41e32ac1814e3dff0c124cba699fd6f54b744c631730145d
MD5 42ee287faae1aa52166ea13131bdbcdd
BLAKE2b-256 3df4b777f6f81ac17921d4eb8f18a9c607f183fc3e741cee20e91fd596a7bbb8

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for colibri_stateless-1.1.25-cp312-cp312-macosx_15_0_universal2.whl
Algorithm Hash digest
SHA256 cfab6f93b9a310ace95460764f80869494c7538e51522781b6682afb9046a3c1
MD5 994a7930eeb3c7c4f56437d63858b975
BLAKE2b-256 24e5ac433eea796efe7a86926bda93ac725d95f9285a127201d21d9f0f4ea05c

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