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.14-cp312-cp312-win_amd64.whl (439.7 kB view details)

Uploaded CPython 3.12Windows x86-64

colibri_stateless-1.1.14-cp312-cp312-manylinux_2_17_x86_64.whl (545.5 kB view details)

Uploaded CPython 3.12manylinux: glibc 2.17+ x86-64

colibri_stateless-1.1.14-cp312-cp312-macosx_15_0_universal2.whl (412.3 kB view details)

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

colibri_stateless-1.1.14-cp38-cp38-win_amd64.whl (438.3 kB view details)

Uploaded CPython 3.8Windows x86-64

colibri_stateless-1.1.14-cp38-cp38-manylinux_2_17_x86_64.whl (543.5 kB view details)

Uploaded CPython 3.8manylinux: glibc 2.17+ x86-64

colibri_stateless-1.1.14-cp38-cp38-macosx_15_0_universal2.whl (411.2 kB view details)

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

File details

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

File metadata

File hashes

Hashes for colibri_stateless-1.1.14-cp312-cp312-win_amd64.whl
Algorithm Hash digest
SHA256 621b87430243fadf9aa453702dc061bd8d4fc196e45c90de29865f42fbaecaad
MD5 47eece1c71f7e6a87180a1babcdcc6ba
BLAKE2b-256 087014bb0f13b252ad76d5d905a61efc285c55152bccf911351882c7b01a2c34

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for colibri_stateless-1.1.14-cp312-cp312-manylinux_2_17_x86_64.whl
Algorithm Hash digest
SHA256 be8a5849941b7e2b88da949c6909580dbd3dcdebe2d6a61f12087713f25e194f
MD5 8833d330b230124278e4e01ef3f5f4e7
BLAKE2b-256 cd62fe49a30f8c5480f60f434a11a7eb7d57b490ee5f7645a4eb226cc336c4b3

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for colibri_stateless-1.1.14-cp312-cp312-macosx_15_0_universal2.whl
Algorithm Hash digest
SHA256 d94c82abf3de58d9656690c2d3328b6b2dac44e0b3112aae272a43badafa1405
MD5 914a6b5b375ceab533e5f2eae6b6f333
BLAKE2b-256 90973814a75ad94924e60e851b437e2158f72eed89f0400d38b64524d22f6e7f

See more details on using hashes here.

File details

Details for the file colibri_stateless-1.1.14-cp38-cp38-win_amd64.whl.

File metadata

File hashes

Hashes for colibri_stateless-1.1.14-cp38-cp38-win_amd64.whl
Algorithm Hash digest
SHA256 4eedbd8dedefebecffa5dd24b8965809b0de7857733347741c15bd665de58592
MD5 099a0ee2eba2af8508383f37020dd101
BLAKE2b-256 76b8a4d44dcc78545ac18b10d964a537b40d50a33a9b8aad82e06a7e9ac68b39

See more details on using hashes here.

File details

Details for the file colibri_stateless-1.1.14-cp38-cp38-manylinux_2_17_x86_64.whl.

File metadata

File hashes

Hashes for colibri_stateless-1.1.14-cp38-cp38-manylinux_2_17_x86_64.whl
Algorithm Hash digest
SHA256 ce50e57861685382d6d8fb748c8b8f65d2bac4d3f5bd8921c55dd7a80e127f96
MD5 1a19ea66b8dcae90150a9b63d3c21d6d
BLAKE2b-256 ed722ea52d97318ec3365f0c9453db6a955fd14373d1fff2963af5ff145be62e

See more details on using hashes here.

File details

Details for the file colibri_stateless-1.1.14-cp38-cp38-macosx_15_0_universal2.whl.

File metadata

File hashes

Hashes for colibri_stateless-1.1.14-cp38-cp38-macosx_15_0_universal2.whl
Algorithm Hash digest
SHA256 e577717b3a120c51ed473cf40778fc5add07888ace3c62b218ee9fac687692cc
MD5 f7e45f9967108373b83080efd17a7937
BLAKE2b-256 aba65b400945c39e062ee739e305396dd148e4fc1fa2d20838587d120dd35a36

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