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
  • 🔐 Privacy-preserving eth_call - ProverMode.HYBRID + PrivacyMode.BASIC + oblivious_nodes (default empty; e.g. https://rpc.safe-node.com/, API key for testing). Oblivious auto-enables PAP. TEE/ORAM: Oblivious Labs.

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

Uploaded CPython 3.14Windows x86-64

colibri_stateless-1.1.29-cp314-cp314-manylinux_2_17_x86_64.whl (617.1 kB view details)

Uploaded CPython 3.14manylinux: glibc 2.17+ x86-64

colibri_stateless-1.1.29-cp314-cp314-macosx_15_0_universal2.whl (474.4 kB view details)

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

colibri_stateless-1.1.29-cp312-cp312-win_amd64.whl (518.9 kB view details)

Uploaded CPython 3.12Windows x86-64

colibri_stateless-1.1.29-cp312-cp312-manylinux_2_17_x86_64.whl (617.2 kB view details)

Uploaded CPython 3.12manylinux: glibc 2.17+ x86-64

colibri_stateless-1.1.29-cp312-cp312-macosx_15_0_universal2.whl (474.1 kB view details)

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

File details

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

File metadata

File hashes

Hashes for colibri_stateless-1.1.29-cp314-cp314-win_amd64.whl
Algorithm Hash digest
SHA256 7888f7fcce1ebebff301f34d3054100371bfdea85d0fe47125e74dd464d10eea
MD5 ac9e522f5a88d0074860c42f417854f1
BLAKE2b-256 aa8035839ce53944d3e9e7769f1fa0ed753b8a947895377e919eec75d8f8f096

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for colibri_stateless-1.1.29-cp314-cp314-manylinux_2_17_x86_64.whl
Algorithm Hash digest
SHA256 d666ef4faf6afeef9316160429a8af5bba8bc0ca7b437227c09c6ed8a09eda68
MD5 a4c5520ba5202704a6eb5bc3e56f9424
BLAKE2b-256 b4df1d93f25a236daaa90721996e5ff7682011d2499782427dfc5368ac163f2f

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for colibri_stateless-1.1.29-cp314-cp314-macosx_15_0_universal2.whl
Algorithm Hash digest
SHA256 de8bd3b2fe062f98d922c552b316a026026ad294e66c650983438286d07ebcdd
MD5 41d22d108a4ca2dcbb263dbc154215f8
BLAKE2b-256 1ee41f75b522d429c01bc199c2922f2f279fe980743f0e832b5d2f69e1c26b36

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for colibri_stateless-1.1.29-cp312-cp312-win_amd64.whl
Algorithm Hash digest
SHA256 15fa1baf201796e8ca03b41fb1e5610df5e9e72410969fc2d30964b86f51c316
MD5 61b6f4166cf892d31f55c08c563d67a4
BLAKE2b-256 9693bcb77d4975998cdbf479582d65a45746fb70e79dd24e9e19cd344c7c197f

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for colibri_stateless-1.1.29-cp312-cp312-manylinux_2_17_x86_64.whl
Algorithm Hash digest
SHA256 05c3c6580e9f14fcb16dd53f038ce1f08848ebf36307c420ad358ad9a2d4d841
MD5 13deb34356a45a9847d0a9f87a95fde4
BLAKE2b-256 eccccfa510250d008acabb8bf116773c12011b9ecb8c444846ebe1896a8dbbe7

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for colibri_stateless-1.1.29-cp312-cp312-macosx_15_0_universal2.whl
Algorithm Hash digest
SHA256 992e22f77b2d50b1c07a0b22172e342954b28933936143a0cbbd16556ac15577
MD5 0126038626e2115708a7f3d0192d2bbe
BLAKE2b-256 2ecfb557788ce08e094bb3148a1dd5fea83c2c294ed1b66dee91698d92353f27

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