Skip to main content

Lightweight Python client for querying blockchain data from SQD Network

Project description

sqd_py

A lightweight Python client for querying blockchain data from the SQD Network. Supports EVM chains (Ethereum, Binance, etc.) and Solana.

Features

  • 🚀 Async-first - Built on aiohttp for efficient concurrent data fetching
  • 🔗 Multi-chain support - Query Ethereum, Binance, Solana and more
  • 📦 Type-safe - Full type hints with Pydantic models
  • 🎯 Flexible queries - Filter transactions, logs, and more with a fluent API

Installation

pip install sqd_py

Or with uv:

uv add sqd_py

Quick Start

import asyncio
from sqd import SQD, Dataset, EvmFields

async def main():
    # Create client for Ethereum mainnet
    sqd = SQD(dataset=Dataset.ETHEREUM, portal_url="https://portal.sqd.dev")
    
    # Query transactions
    query = sqd.get_transactions(
        address="0x742d35Cc6634C0532925a3b844Bc454e4438f44e",
        from_block=17_000_000,
        to_block=17_000_010,
        include_fields=[
            EvmFields.TransactionField.hash,
            EvmFields.TransactionField.from_,
            EvmFields.TransactionField.gasUsed,
        ],
    )
    
    # Stream results asynchronously
    async for transaction in query:
        print(transaction)

if __name__ == "__main__":
    asyncio.run(main())

Querying Logs

from sqd import SQD, Dataset, EvmFields

sqd = SQD(dataset=Dataset.ETHEREUM)

# Query ERC-20 Transfer events
query = sqd.get_logs(
    address="0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48",  # USDC
    from_block=17_000_000,
    to_block=17_000_100,
    topic0="0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef",  # Transfer
    include_fields=[
        EvmFields.LogField.logIndex,
        EvmFields.LogField.transactionHash,
    ],
)

Chaining Queries

# Build complex queries by chaining
query = sqd.get_transactions(
    address="0x...",
    from_block=17_000_000,
    to_block=17_000_010,
).get_logs(
    address="0x...",
    topic0="0x...",
)

async for data in query:
    print(data)

Solana Support

from sqd import SQD, Dataset, SolanaFields

sqd = SQD(dataset=Dataset.SOLANA)
# Query Solana data similarly...

Supported Datasets

Chain Dataset Enum
Ethereum Dataset.ETHEREUM
Binance Smart Chain Dataset.BINANCE
Solana Dataset.SOLANA

You can also use string identifiers like "ethereum-mainnet", "binance-mainnet", etc.

API Reference

SQD(dataset, portal_url, stream_type)

Main entry point for creating queries.

Parameter Type Default Description
dataset Dataset | str required The blockchain dataset to query
portal_url str "https://portal.sqd.dev" SQD portal URL
stream_type "finalized" | "realtime" "realtime" Data stream type

Query Methods

  • get_transactions(address, from_block, to_block, include_fields) - Query transactions
  • get_logs(address, from_block, to_block, topic0, include_fields) - Query event logs

Requirements

  • Python 3.10+
  • aiohttp >= 3.9.0

License

MIT License - see LICENSE for details.

Contributing

Contributions are welcome! Please feel free to submit a Pull Request.

Links

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

sqd_py-0.1.0.tar.gz (23.8 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

sqd_py-0.1.0-py3-none-any.whl (30.8 kB view details)

Uploaded Python 3

File details

Details for the file sqd_py-0.1.0.tar.gz.

File metadata

  • Download URL: sqd_py-0.1.0.tar.gz
  • Upload date:
  • Size: 23.8 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: uv/0.9.17 {"installer":{"name":"uv","version":"0.9.17","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"macOS","version":null,"id":null,"libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":null}

File hashes

Hashes for sqd_py-0.1.0.tar.gz
Algorithm Hash digest
SHA256 daa7ddab3ae9697223881f91bfbfe6dffff45e7cc843aeedfe4a3339ef935bae
MD5 6dc26fd8798ef99c0055c4a856a49f7d
BLAKE2b-256 aa3ee3eb4c31b28f2e5fa8abc43a79b4d0067cc8a8327e85ad0f1ef1e865c2f1

See more details on using hashes here.

File details

Details for the file sqd_py-0.1.0-py3-none-any.whl.

File metadata

  • Download URL: sqd_py-0.1.0-py3-none-any.whl
  • Upload date:
  • Size: 30.8 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: uv/0.9.17 {"installer":{"name":"uv","version":"0.9.17","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"macOS","version":null,"id":null,"libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":null}

File hashes

Hashes for sqd_py-0.1.0-py3-none-any.whl
Algorithm Hash digest
SHA256 9b4f2d7c9dbdedb85fac619b4cdd24a3b26b8de638c58b5fe601b83c868e13a1
MD5 2201c42805763b4d3312f4c82f5768e7
BLAKE2b-256 e6f21166e7934c227b3522a4d8c0fc09f8b956180cd97d7a5fafeb03d9c68eba

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