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 transfer fee (0.01 Z)
BRIDGE_OUT_FEE_UNITS 50 Bridge-out fee (0.5 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
  • Transfer fee: 0.01 Z (1 unit) flat per transaction
  • Bridge-out fee: 0.5 Z (50 units) per withdrawal
  • 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.2.1.tar.gz (11.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.2.1-py3-none-any.whl (14.5 kB view details)

Uploaded Python 3

File details

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

File metadata

  • Download URL: zero_network-0.2.1.tar.gz
  • Upload date:
  • Size: 11.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.2.1.tar.gz
Algorithm Hash digest
SHA256 3d77275280f112c39d79ddf631d14c3a43dfe5a8cc0b88eba09d6e146a2337a1
MD5 da8905ed68948efe012776518069cb7a
BLAKE2b-256 fc84a18935c981c7e9f6b4c74ed46d46b0da0ba7cafa02daeac728ef1c7032ee

See more details on using hashes here.

File details

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

File metadata

  • Download URL: zero_network-0.2.1-py3-none-any.whl
  • Upload date:
  • Size: 14.5 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.2.1-py3-none-any.whl
Algorithm Hash digest
SHA256 e9ef518dfe515b8d29248ebd68fd303edcb230dc7674ab8fbdf0924d4e56500f
MD5 493d5675f33158635f2d295cf509e297
BLAKE2b-256 7ec1529cfe21e947ed6e8a1f3afd7716174632b8b65675eee1be5d901ab82616

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