Python SDK for the SmartBlocks Network — Atlas frontier provisioning, GEC compute, SnapChore integrity, governance, and more.
Project description
SmartBlocks Network Python SDK
Canonical Python client for the SBN infrastructure. Covers the full network surface — gateway, SnapChore, console, and control plane.
The same package also ships the shared pgdag execution kernel used by Tower
products and workflow runtimes:
from pgdag import PGDAGRunner, DAGTemplate, DAGNode
Install
pip install sbn-sdk
# or from source
cd sdk/python && pip install -e .
Quick start
from sbn import SbnClient
client = SbnClient(base_url="https://api.smartblocks.network")
client.authenticate_api_key("sbn_live_abc123")
# SnapChore — capture, verify, seal
block = client.snapchore.capture({"event": "signup", "user": "u-42"})
client.snapchore.verify(block["snapchore_hash"], {"event": "signup", "user": "u-42"})
client.snapchore.seal(block["snapchore_hash"], {"event": "signup", "user": "u-42"})
# Gateway — slots, receipts, attestations
slot = client.gateway.create_slot(worker_id="w-1", task_type="classify")
receipt = client.gateway.fetch_receipt(slot.receipt_id)
# Console — API keys, usage, billing
keys = client.console.list_api_keys("proj-123")
usage = client.console.get_usage("proj-123")
# Control plane — rate plans, tenants, validators
plans = client.control_plane.list_rate_plans()
client.control_plane.create_tenant(
name="Acme Corp",
contact_email="ops@acme.co",
aggregator_endpoint="https://agg.acme.co",
rate_plan_id=plans[0].id,
)
Event streaming wrapper
For telemetry-style frontiers, use the slot session wrapper instead of manually wiring slot open, BitBlock submission, and close on every project.
from sbn import SbnClient
client = SbnClient(base_url="https://api.smartblocks.network")
client.authenticate_api_key("sbn_live_abc123")
client.set_tenant("tower-agents")
with client.open_slot(
worker_id="tower-agents",
task_type="grid.atomic_rentals",
domain="grid.atomic_rentals.streaming",
generation_interval=1800, # 30 minutes
metadata={"frontier_hint": "grid.atomic_rentals.streaming"},
) as stream:
stream.event(
{
"event_type": "delivery_picked_up",
"booking_id": "bk_123",
"status": "picked_up",
},
metadata={"interaction_id": "rental-123"},
)
stream.event(
{
"event_type": "delivery_complete",
"booking_id": "bk_123",
"status": "complete",
},
metadata={"interaction_id": "rental-123"},
)
close_receipt = stream.receipt
Explicit attestation
Slot closure and validator-facing attestation are modeled separately on purpose. When you need billable / quorum attestation, request it explicitly with the hash you want routed through the attestation pipeline.
from sbn import SbnClient
client = SbnClient(base_url="https://api.smartblocks.network")
client.authenticate_api_key("sbn_live_abc123")
client.set_tenant("tower-agents")
with client.open_slot(
worker_id="tower-agents",
task_type="grid.atomic_rentals",
domain="grid.atomic_rentals.streaming",
) as stream:
stream.event({"event_type": "delivery_complete", "booking_id": "bk_123"})
final = stream.finalize(
request_attestation=True,
snap_hash="sha256:your-snap-hash",
frontier_id="grid.atomic_rentals.streaming",
metadata={
"type": "LaborBlock",
"domain": "grid",
"event_type": "delivery_complete",
},
)
print(final.close.receipt_id)
print(final.attestation)
Auth methods
# API key (most common for external devs)
client.authenticate_api_key("sbn_live_...")
# Bearer token (console sessions, service-to-service)
client.authenticate_bearer("eyJ...")
# Ed25519 signing key (auto-refreshing JWTs for agents)
from sbn import SigningKey
key = SigningKey.from_pem("/path/to/key.pem", issuer="my-svc", audience="sbn")
client.authenticate_signing_key(key, scopes=["attest.write", "snapchore.seal"])
Sub-clients
| Property | Domain | Key operations |
|---|---|---|
client.gateway |
Slots & receipts | create_slot, close_slot, fetch_receipt, request_attestation |
client.snapchore |
Hash capture | capture, verify, seal, create_chain, append_to_chain |
client.console |
Developer console | list_api_keys, create_api_key, get_usage, get_billing_status |
client.control_plane |
Multi-tenancy | list_rate_plans, create_tenant, register_validator |
Legacy compatibility
The original sbn_gateway.py single-file SDK is preserved for backward
compatibility. New integrations should use from sbn import SbnClient.
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file sbn_sdk-0.12.0.tar.gz.
File metadata
- Download URL: sbn_sdk-0.12.0.tar.gz
- Upload date:
- Size: 108.7 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.13.5
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
fbeaf183fac66cfb1e12f51a9a4237f1b856a7cb541dc97f1ab5125ffecc1a85
|
|
| MD5 |
563d6bcee7a817bcdd3ad116c81ae59d
|
|
| BLAKE2b-256 |
95c5078bbe87cd770692f5ce3f3cf987c02e2865e3d7b70ba6be08fb99e9afa5
|
File details
Details for the file sbn_sdk-0.12.0-py3-none-any.whl.
File metadata
- Download URL: sbn_sdk-0.12.0-py3-none-any.whl
- Upload date:
- Size: 144.5 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.13.5
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
4fdd3aa806b5f642a8b87a565e4d8cda5d29c30f5d4b433baa2f5a8dc9395c12
|
|
| MD5 |
217d679322276fd37f3ddcae3960749a
|
|
| BLAKE2b-256 |
95d80a84879f4441fc7a3f9c0b5216005b912da52d35adcad7be3dc573ef9541
|