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

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

Uploaded CPython 3.12Windows x86-64

colibri_stateless-1.1.7-cp312-cp312-manylinux_2_17_x86_64.whl (524.2 kB view details)

Uploaded CPython 3.12manylinux: glibc 2.17+ x86-64

colibri_stateless-1.1.7-cp312-cp312-macosx_15_0_universal2.whl (394.8 kB view details)

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

colibri_stateless-1.1.7-cp38-cp38-win_amd64.whl (418.1 kB view details)

Uploaded CPython 3.8Windows x86-64

colibri_stateless-1.1.7-cp38-cp38-manylinux_2_17_x86_64.whl (521.2 kB view details)

Uploaded CPython 3.8manylinux: glibc 2.17+ x86-64

colibri_stateless-1.1.7-cp38-cp38-macosx_15_0_universal2.whl (393.3 kB view details)

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

File details

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

File metadata

File hashes

Hashes for colibri_stateless-1.1.7-cp312-cp312-win_amd64.whl
Algorithm Hash digest
SHA256 6af185aefa10d1e3ede0ccb9752202a50f5199ca0c30a2fd719132222c4c7f3c
MD5 84bffad22dd51855d7fb22020427830a
BLAKE2b-256 dbd4f1230f8f3bcb7976e1270a0d66ec9e7edb2dbbc186045f22a864213cdb7c

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for colibri_stateless-1.1.7-cp312-cp312-manylinux_2_17_x86_64.whl
Algorithm Hash digest
SHA256 7359017b9debe73cc3e92071f6739d4a7cfc308c3cad97f2f31048d0ad2f93d8
MD5 5a57183d383da149bcb7eff731cfa656
BLAKE2b-256 1f82ad619dd7ea592df99208c6b417bde72f96b674cbdc97827de06c4fa9f325

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for colibri_stateless-1.1.7-cp312-cp312-macosx_15_0_universal2.whl
Algorithm Hash digest
SHA256 9617c48b50ed88c64af6567426c627491cf4347c3d3040a45e569fdb5aabf7ee
MD5 17eb030a8e45022b1265f4d7ede3bc32
BLAKE2b-256 ff42da76afe24fdf89f197d57b1ad81f1f2338bea21eea676dacb51339efb7e8

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for colibri_stateless-1.1.7-cp38-cp38-win_amd64.whl
Algorithm Hash digest
SHA256 30fedfed43289f9a79fa8f8757553c9816c0b73707a344a23ffafd9f43351b30
MD5 0cdde2428ee2035afc48756a783d0863
BLAKE2b-256 1c490e2d8bbb3b7f9c039cc532b889562a51f712d803bf654e93b10da6edf4d4

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for colibri_stateless-1.1.7-cp38-cp38-manylinux_2_17_x86_64.whl
Algorithm Hash digest
SHA256 6cc69b292e6fb82451d5c9285d9b6ae5b73fa379f3c64d2738ce7d92c16c34f1
MD5 650f43166cdd7e5828c49dcc77a25426
BLAKE2b-256 1468c832abe8f866477fba4c39bcf76a0f03e955b41ffcdfebbd5079f4c5e00a

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for colibri_stateless-1.1.7-cp38-cp38-macosx_15_0_universal2.whl
Algorithm Hash digest
SHA256 9bd5425b151d68594b2ae355181e56b86db56d10815fe1c8afa4308ac1696f34
MD5 a099bbf39466b59b2942eb2e0c5e3288
BLAKE2b-256 2c53ded3474b837fd45b8093f1b52c9518523cc96f9e1ade2c93f453f6568a1f

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