Skip to main content

Python SDK for the Zero Network — stablecoin microtransactions for AI agents

Project description

zero-network

Python SDK for the Zero Network — stablecoin microtransactions for AI agents.

1 Z = $0.01 USD | Ed25519 signatures | 100-byte transactions | x402 support

Install

pip install zero-network

For x402 server-side gating (requires Starlette/FastAPI):

pip install zero-network[x402]

Quick Start

from zero_network import Wallet

# Create a new wallet
wallet = Wallet.create()
print(wallet.address)      # hex-encoded public key
print(wallet.seed_hex)     # save this! needed to restore

# Restore from seed
wallet = Wallet.from_seed("your_64char_hex_seed")

# Or from ZERO_KEY environment variable
wallet = Wallet.from_env()

# Request testnet funds
wallet.faucet()

# Check balance
print(wallet.balance(), "Z")

# Send 0.50 Z to another address
wallet.send("recipient_pubkey_hex_64chars", 0.5)

# Transaction history
for tx in wallet.history(limit=5):
    print(tx)

Async Usage

All wallet methods have async variants prefixed with a:

import asyncio
from zero_network import Wallet

async def main():
    wallet = Wallet.create()
    await wallet.afaucet()
    balance = await wallet.abalance()
    print(f"{balance} Z")
    await wallet.asend("recipient_pubkey_hex", 1.0)
    await wallet.aclose()

asyncio.run(main())

x402 Auto-Paying Client

Fetch paywalled resources with automatic micropayment:

from zero_network import Wallet
from zero_network.x402 import x402_fetch

wallet = Wallet.from_env()
response = x402_fetch("https://api.example.com/premium", wallet, max_price_z=0.10)
print(response.json())

If the server returns 402 Payment Required with a JSON body containing {"address": "...", "amount": 0.05}, the SDK pays automatically and retries.

x402 Server-Side Gating

Gate FastAPI/Starlette endpoints behind a paywall:

from fastapi import FastAPI, Request
from zero_network.x402 import x402_gate

app = FastAPI()

@app.get("/premium")
@x402_gate(0.05, recipient_address="your_pubkey_hex")
async def premium(request: Request):
    return {"data": "premium content"}

Low-Level Client

from zero_network import ZeroClient

client = ZeroClient()
print(client.status())
print(client.balance("pubkey_hex"))
print(client.account("pubkey_hex"))

API Reference

Wallet

Method Description
Wallet.create() Generate new Ed25519 keypair
Wallet.from_seed(hex) Restore from 32-byte hex seed
Wallet.from_env(var="ZERO_KEY") Restore from environment variable
wallet.address Hex-encoded public key
wallet.seed_hex Hex-encoded seed (keep secret!)
wallet.balance() / abalance() Query balance in Z
wallet.send(to, amount_z) / asend() Send Z (auto nonce + sign)
wallet.account() / aaccount() Full account state
wallet.history(limit) / ahistory() Transaction history
wallet.faucet() / afaucet() Request testnet funds

ZeroClient

Method Description
client.status() / astatus() Network status
client.balance(pubkey) / abalance() Account balance
client.account(pubkey) / aaccount() Account state
client.history(pubkey, limit) / ahistory() Transaction history
client.send(...) / asend() Submit signed transaction
client.faucet(address) / afaucet() Request testnet funds

Transaction Helpers

Function Description
build_transfer(from_pub, to_pub, amount, nonce) Build unsigned 72-byte tx
sign_transfer(unsigned_tx, signing_key) Sign and return 100-byte tx
parse_transfer(tx_bytes) Parse 100-byte tx into Transfer

Constants

Constant Value Description
UNITS_PER_Z 100 Internal units per 1 Z
FEE_UNITS 1 Flat fee (0.01 Z)
MAX_TRANSFER_UNITS 2500 Max transfer (25 Z)
DEFAULT_RPC https://rpc.zzero.net Default RPC endpoint
TESTNET_FAUCET http://157.180.56.48:8093 Testnet faucet

Network Details

  • Denomination: 1 Z = $0.01 USD = 100 internal units
  • Fee: 0.01 Z (1 unit) flat per transaction
  • Max transfer: 25 Z (2500 units)
  • Account creation: 1.00 Z deducted on first receive
  • Signatures: Ed25519 (compatible with tweetnacl/dalek)
  • Hashing: BLAKE3
  • Transaction size: 100 bytes

License

MIT

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

zero_network-0.1.0.tar.gz (10.2 kB view details)

Uploaded Source

Built Distribution

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

zero_network-0.1.0-py3-none-any.whl (13.7 kB view details)

Uploaded Python 3

File details

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

File metadata

  • Download URL: zero_network-0.1.0.tar.gz
  • Upload date:
  • Size: 10.2 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.12.3

File hashes

Hashes for zero_network-0.1.0.tar.gz
Algorithm Hash digest
SHA256 1659166e280ee95875f4a877bf0744138b3e3230beedd496a118bdf34e96193e
MD5 c1311dc536990973625510ea3f5f9acf
BLAKE2b-256 fbd09824bf2111d710fa6a0cf0c0856a45a28a7f6947e734d7d31f77712feeff

See more details on using hashes here.

File details

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

File metadata

  • Download URL: zero_network-0.1.0-py3-none-any.whl
  • Upload date:
  • Size: 13.7 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.12.3

File hashes

Hashes for zero_network-0.1.0-py3-none-any.whl
Algorithm Hash digest
SHA256 74eb7f6cd91c367c403a152ea6f3bfe2bc303e976385c551199c30654bd1d5e9
MD5 8052efa510587c00350f0ddc41a834f7
BLAKE2b-256 c0d1edb7c8f0252d843f6ce7752991611d97b6bed3db9f2e5fed0e60bc9c7b16

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