Skip to main content

QUIC transport layer for Bittensor

Project description

Ligh𝞽ning

Rust QUIC transport layer for Bittensor

Persistent QUIC connections with sr25519 handshake authentication for validator-miner communication.

Python

pip install btlightning
from btlightning import Lightning

client = Lightning(wallet_hotkey="5GrwvaEF...")
client.set_python_signer(my_signer_callback)
client.initialize_connections([
    {"hotkey": "5FHneW46...", "ip": "192.168.1.1", "port": 8443}
])
response = client.query_axon(
    {"hotkey": "5FHneW46...", "ip": "192.168.1.1", "port": 8443},
    {"synapse_type": "MyQuery", "data": {"key": "value"}}
)

Rust

[dependencies]
btlightning = "0.1"
use btlightning::{LightningClient, Sr25519Signer, QuicAxonInfo, QuicRequest};

let mut client = LightningClient::new("5GrwvaEF...".into());
client.set_signer(Box::new(Sr25519Signer::from_seed(seed)));
client.initialize_connections(vec![
    QuicAxonInfo::new("5FHneW46...".into(), "192.168.1.1".into(), 8443, 4, 0, 0)
]).await?;

Build from source

cargo build -p btlightning
maturin develop --manifest-path crates/btlightning-py/Cargo.toml

Performance

Benchmarked on Apple Silicon (M-series), macOS, loopback networking. Echo handler returns input unchanged. Connection setup includes first request-response round trip. Lightning authenticates once at connection time and amortizes over all subsequent requests; bittensor signs and verifies every request. Bittensor payloads are base64-encoded (JSON has no binary type), adding ~33% wire overhead beyond the nominal payload size. Source: benchmarks/.

bittensor (dendrite/axon) lightning
Protocol HTTP/1.1 QUIC
Serialization JSON MessagePack
Transport encryption None TLS 1.3
Auth model Per-request Per-connection
Metric bittensor lightning (Python) lightning (Rust)
Connection setup (p50) 114.46 ms 2.68 ms 0.71 ms
Latency p50 (1KB) 24.01 ms 0.08 ms 0.05 ms
Latency p99 (1KB) 28.80 ms 0.09 ms 0.07 ms
Throughput (1KB) 41 req/s 26,539 req/s 68,650 req/s
Wire size (1KB payload) 2,032 bytes 1,052 bytes 1,052 bytes
Color System
bittensor bittensor
lightning-py lightning (Python)
lightning lightning (Rust)

[!NOTE] Charts use log10 scale. Refer to the tables below for raw values.

Latency p50

---
config:
    xyChart:
        plotReservedSpacePercent: 60
    themeVariables:
        xyChart:
            backgroundColor: "#000000"
            plotColorPalette: "#808080, #FF8C00, #FFE000"
            titleColor: "#ffffff"
            xAxisLabelColor: "#aaaaaa"
            xAxisTitleColor: "#cccccc"
            xAxisTickColor: "#666666"
            xAxisLineColor: "#444444"
            yAxisLabelColor: "#aaaaaa"
            yAxisTitleColor: "#cccccc"
            yAxisTickColor: "#666666"
            yAxisLineColor: "#444444"
---
xychart-beta
    x-axis ["256B", "1KB", "10KB", "100KB", "1MB"]
    y-axis "log10(us)" 0 --> 5
    bar "bittensor" [4.39, 4.38, 4.39, 4.42, 4.61]
    bar "lightning (Python)" [1.90, 1.90, 2.36, 3.27, 4.31]
    bar "lightning (Rust)" [1.70, 1.70, 2.04, 2.84, 3.87]

Throughput (req/s)

---
config:
    xyChart:
        plotReservedSpacePercent: 60
    themeVariables:
        xyChart:
            backgroundColor: "#000000"
            plotColorPalette: "#FFE000, #FF8C00, #808080"
            titleColor: "#ffffff"
            xAxisLabelColor: "#aaaaaa"
            xAxisTitleColor: "#cccccc"
            xAxisTickColor: "#666666"
            xAxisLineColor: "#444444"
            yAxisLabelColor: "#aaaaaa"
            yAxisTitleColor: "#cccccc"
            yAxisTickColor: "#666666"
            yAxisLineColor: "#444444"
---
xychart-beta
    x-axis ["256B", "1KB", "10KB", "100KB", "1MB"]
    y-axis "log10(req/s)" 0 --> 5
    bar "lightning (Rust)" [4.92, 4.84, 4.27, 3.26, 2.26]
    bar "lightning (Python)" [4.55, 4.42, 3.83, 2.94, 1.94]
    bar "bittensor" [1.61, 1.61, 1.60, 1.57, 1.40]
Full results (all payload sizes)

Latency (ms)

Payload System p50 p95 p99
256B bittensor 24.50 28.04 35.05
lightning (py) 0.08 0.19 0.23
lightning (rust) 0.05 0.06 0.07
1KB bittensor 24.01 25.57 28.80
lightning (py) 0.08 0.09 0.09
lightning (rust) 0.05 0.06 0.07
10KB bittensor 24.70 25.70 26.59
lightning (py) 0.23 0.24 0.26
lightning (rust) 0.11 0.12 0.13
100KB bittensor 26.13 27.31 29.42
lightning (py) 1.88 2.25 2.37
lightning (rust) 0.69 0.73 0.75
1MB bittensor 40.72 43.11 48.00
lightning (py) 20.55 22.48 23.31
lightning (rust) 7.40 12.36 17.02

Throughput (req/s)

Payload bittensor lightning (Python) lightning (Rust)
256B 41 35,181 83,460
1KB 41 26,539 68,650
10KB 40 6,729 18,686
100KB 38 875 1,819
1MB 25 88 181

Wire overhead (bytes)

Payload bittensor lightning
256B 1,008 284
1KB 2,032 1,052
10KB 14,321 10,268
100KB 137,202 102,430
1MB 1,398,771 1,048,606

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

btlightning-0.1.7.tar.gz (124.7 kB view details)

Uploaded Source

Built Distributions

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

btlightning-0.1.7-cp312-cp312-manylinux_2_38_x86_64.whl (4.8 MB view details)

Uploaded CPython 3.12manylinux: glibc 2.38+ x86-64

btlightning-0.1.7-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (4.4 MB view details)

Uploaded CPython 3.12manylinux: glibc 2.17+ ARM64

btlightning-0.1.7-cp312-cp312-macosx_11_0_arm64.whl (4.4 MB view details)

Uploaded CPython 3.12macOS 11.0+ ARM64

File details

Details for the file btlightning-0.1.7.tar.gz.

File metadata

  • Download URL: btlightning-0.1.7.tar.gz
  • Upload date:
  • Size: 124.7 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.7

File hashes

Hashes for btlightning-0.1.7.tar.gz
Algorithm Hash digest
SHA256 1487265cac638eaadf96ba4e0f6fdfe51517afc8050122bf1ffa715369f64107
MD5 5f3f0e7abbadb36ba45061cd2d373f1c
BLAKE2b-256 193a4cd1a4306abde60ac91ba89acd1b1120055be38cb614af2e926def46fcb2

See more details on using hashes here.

Provenance

The following attestation bundles were made for btlightning-0.1.7.tar.gz:

Publisher: release.yml on inference-labs-inc/btlightning

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file btlightning-0.1.7-cp312-cp312-manylinux_2_38_x86_64.whl.

File metadata

File hashes

Hashes for btlightning-0.1.7-cp312-cp312-manylinux_2_38_x86_64.whl
Algorithm Hash digest
SHA256 183ff6e37a7fd306fbd0752f2b1a0947528b56e0f15da992209b08b057da1bb2
MD5 78d5ee82ca470e9a85f14a97633b8769
BLAKE2b-256 45784b7a12d00993850e38ee5e11b5d7f1f0f07984c8d9289fa92b5f1675d97a

See more details on using hashes here.

Provenance

The following attestation bundles were made for btlightning-0.1.7-cp312-cp312-manylinux_2_38_x86_64.whl:

Publisher: release.yml on inference-labs-inc/btlightning

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file btlightning-0.1.7-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl.

File metadata

File hashes

Hashes for btlightning-0.1.7-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 fecba0cc868b871b173d249119bd032d2a0f4535e2e53fa0a2c8afcd72c9f715
MD5 bc020520726059947d3795967a1646da
BLAKE2b-256 572d40a76a7e851a02534a1565dddbb8d72de73c9319406b7ef8ff6899c511b2

See more details on using hashes here.

Provenance

The following attestation bundles were made for btlightning-0.1.7-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl:

Publisher: release.yml on inference-labs-inc/btlightning

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file btlightning-0.1.7-cp312-cp312-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for btlightning-0.1.7-cp312-cp312-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 bdbdcfcc5d2baa31b72226c655032d6f38bf43dd9194eeb4785d6018be1a3103
MD5 4678aad39197fc6ca3b2119683f74d52
BLAKE2b-256 ada2df4cad6da78c7c59a30b47884b625385ce4fd87a55d424cf20c56d7ff988

See more details on using hashes here.

Provenance

The following attestation bundles were made for btlightning-0.1.7-cp312-cp312-macosx_11_0_arm64.whl:

Publisher: release.yml on inference-labs-inc/btlightning

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

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