Skip to main content

Autonomi client API

Project description

Autonomi Python Bindings

The Autonomi client library provides Python bindings for easy integration with Python applications.

Installation

We recommend using uv for Python environment management:

Make sure you have installed:

  • Python
  • uv

Quick Start

# make sure you are in the autonomi directory
cd autonomi/

# make a virtual environment
uv venv
source .venv/bin/activate
uv sync
maturin develop --uv

# Then you can test with pytest
pytest tests/python/test_bindings.py

# or you can run the examples or your own scripts!
python python/examples/autonomi_pointers.py 
from autonomi_client import *Client, Wallet, PaymentOption*

# Initialize a wallet with a private key
wallet = Wallet.new_from_private_key(Network(True), "0xac0974bec39a17e36ba4a6b4d238ff944bacb478cbed5efcae784d7bf4f2ff80")
print(f"Wallet address: {wallet.address()}")
print(f"Wallet balance: {await wallet.balance()}")

# Connect to the network
client = await Client.init()

# Create payment option using the wallet
payment = PaymentOption.wallet(wallet)

# Upload some data
data = b"Hello, Safe Network!"
[cost, addr] = await client.data_put_public(data, payment)
print(f"Data uploaded to address: {addr}")

# Download the data back
downloaded = await client.data_get_public(addr)
print(f"Downloaded data: {downloaded.decode()}")

API Reference

Client

The main interface to interact with the Autonomi network.

Connection Methods

  • connect(peers: List[str]) -> Client
    • Connect to network nodes
    • peers: List of multiaddresses for initial network nodes

Data Operations

  • data_put_public(data: bytes, payment: PaymentOption) -> str

    • Upload public data to the network
    • Returns address where data is stored
  • data_get_public(addr: str) -> bytes

    • Download public data from the network
    • addr: Address returned from data_put_public
  • data_put(data: bytes, payment: PaymentOption) -> DataMapChunk

    • Store private (encrypted) data
    • Returns access information for later retrieval
  • data_get(access: DataMapChunk) -> bytes

    • Retrieve private data
    • access: DataMapChunk from previous data_put

Pointer Operations

  • pointer_get(address: str) -> Pointer

    • Retrieve pointer from network
    • address: Hex-encoded pointer address
  • pointer_put(pointer: Pointer, wallet: Wallet)

    • Store pointer on network
    • Requires payment via wallet
  • pointer_cost(key: VaultSecretKey) -> str

    • Calculate pointer storage cost
    • Returns cost in atto tokens

Scratchpad

Manage mutable encrypted data on the network.

Scratchpad Class

  • Scratchpad(owner: SecretKey, data_encoding: int, unencrypted_data: bytes, counter: int) -> Scratchpad

    • Create a new scratchpad instance
    • owner: Secret key for encrypting and signing
    • data_encoding: Custom value to identify data type (app-defined)
    • unencrypted_data: Raw data to be encrypted
    • counter: Version counter for tracking updates
  • address() -> ScratchpadAddress

    • Get the address of the scratchpad
  • decrypt_data(sk: SecretKey) -> bytes

    • Decrypt the data using the given secret key

Client Methods for Scratchpad

  • scratchpad_get_from_public_key(public_key: PublicKey) -> Scratchpad

    • Retrieve a scratchpad using owner's public key
  • scratchpad_get(addr: ScratchpadAddress) -> Scratchpad

    • Retrieve a scratchpad by its address
  • scratchpad_check_existance(addr: ScratchpadAddress) -> bool

    • Check if a scratchpad exists on the network
  • scratchpad_put(scratchpad: Scratchpad, payment: PaymentOption) -> Tuple[str, ScratchpadAddress]

    • Store a scratchpad on the network
    • Returns (cost, address)
  • scratchpad_create(owner: SecretKey, content_type: int, initial_data: bytes, payment: PaymentOption) -> Tuple[str, ScratchpadAddress]

    • Create a new scratchpad with a counter of 0
    • Returns (cost, address)
  • scratchpad_update(owner: SecretKey, content_type: int, data: bytes) -> None

    • Update an existing scratchpad
    • Note: Counter is automatically incremented by 1 during update
    • The scratchpad must exist before updating
  • scratchpad_cost(public_key: PublicKey) -> str

    • Calculate the cost to store a scratchpad
    • Returns cost in atto tokens

Important Notes on Scratchpad Counter

  1. When creating a new scratchpad with scratchpad_create, the counter starts at 0
  2. When updating with scratchpad_update, the counter is automatically incremented
  3. If you need to set a specific counter value, create a new Scratchpad instance and use scratchpad_put
  4. Only the scratchpad with the highest counter is kept on the network when there are conflicts

Vault Operations

  • vault_cost(key: VaultSecretKey) -> str

    • Calculate vault storage cost
  • write_bytes_to_vault(data: bytes, payment: PaymentOption, key: VaultSecretKey, content_type: int) -> str

    • Write data to vault
    • Returns vault address
  • fetch_and_decrypt_vault(key: VaultSecretKey) -> Tuple[bytes, int]

    • Retrieve vault data
    • Returns (data, content_type)
  • get_user_data_from_vault(key: VaultSecretKey) -> UserData

    • Get user data from vault
  • put_user_data_to_vault(key: VaultSecretKey, payment: PaymentOption, user_data: UserData) -> str

    • Store user data in vault
    • Returns vault address

Wallet

Ethereum wallet management for payments.

  • new(private_key: str) -> Wallet

    • Create wallet from private key
    • private_key: 64-char hex string without '0x' prefix
  • address() -> str

    • Get wallet's Ethereum address
  • balance() -> str

    • Get wallet's token balance
  • balance_of_gas() -> str

    • Get wallet's gas balance

PaymentOption

Configure payment methods.

  • wallet(wallet: Wallet) -> PaymentOption
    • Create payment option from wallet

Pointer

Handle network pointers for referencing data.

  • new(target: str) -> Pointer

    • Create new pointer
    • target: Hex-encoded target address
  • address() -> str

    • Get pointer's network address
  • target() -> str

    • Get pointer's target address

VaultSecretKey

Manage vault access keys.

  • new() -> VaultSecretKey

    • Generate new key
  • from_hex(hex: str) -> VaultSecretKey

    • Create from hex string
  • to_hex() -> str

    • Convert to hex string

UserData

Manage user data in vaults.

  • new() -> UserData

    • Create new user data
  • add_file_archive(archive: str) -> Optional[str]

    • Add file archive
    • Returns archive ID if successful
  • add_private_file_archive(archive: str) -> Optional[str]

    • Add private archive
    • Returns archive ID if successful
  • file_archives() -> List[Tuple[str, str]]

    • List archives as (id, address) pairs
  • private_file_archives() -> List[Tuple[str, str]]

    • List private archives as (id, address) pairs

DataMapChunk

Handle private data storage references.

  • from_hex(hex: str) -> DataMapChunk

    • Create from hex string
  • to_hex() -> str

    • Convert to hex string
  • address() -> str

    • Get short reference address

Utility Functions

  • encrypt(data: bytes) -> Tuple[bytes, List[bytes]]
    • Self-encrypt data
    • Returns (data_map, chunks)

Examples

See the examples/ directory for complete examples:

  • autonomi_example.py: Basic data operations
  • autonomi_pointers.py: Working with pointers
  • autonomi_vault.py: Vault operations
  • autonomi_private_data.py: Private data handling
  • autonomi_private_encryption.py: Data encryption
  • autonomi_scratchpad.py: Scratchpad creation and updates (with counter management)
  • autonomi_advanced.py: Advanced usage scenarios

Best Practices

  1. Always handle wallet private keys securely
  2. Check operation costs before executing
  3. Use appropriate error handling
  4. Monitor wallet balance for payments
  5. Use appropriate content types for vault storage
  6. Consider using pointers for updatable references
  7. Properly manage and backup vault keys

For more examples and detailed usage, see the examples in the repository.

Project details


Download files

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

Source Distributions

No source distribution files available for this release.See tutorial on generating distribution archives.

Built Distributions

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

autonomi_client-0.4.4-cp38-abi3-win_amd64.whl (8.7 MB view details)

Uploaded CPython 3.8+Windows x86-64

autonomi_client-0.4.4-cp38-abi3-musllinux_1_2_x86_64.whl (10.6 MB view details)

Uploaded CPython 3.8+musllinux: musl 1.2+ x86-64

autonomi_client-0.4.4-cp38-abi3-musllinux_1_2_armv7l.whl (10.1 MB view details)

Uploaded CPython 3.8+musllinux: musl 1.2+ ARMv7l

autonomi_client-0.4.4-cp38-abi3-musllinux_1_2_aarch64.whl (10.4 MB view details)

Uploaded CPython 3.8+musllinux: musl 1.2+ ARM64

autonomi_client-0.4.4-cp38-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (10.5 MB view details)

Uploaded CPython 3.8+manylinux: glibc 2.17+ x86-64

autonomi_client-0.4.4-cp38-abi3-macosx_11_0_arm64.whl (9.2 MB view details)

Uploaded CPython 3.8+macOS 11.0+ ARM64

autonomi_client-0.4.4-cp38-abi3-macosx_10_12_x86_64.whl (9.5 MB view details)

Uploaded CPython 3.8+macOS 10.12+ x86-64

File details

Details for the file autonomi_client-0.4.4-cp38-abi3-win_amd64.whl.

File metadata

File hashes

Hashes for autonomi_client-0.4.4-cp38-abi3-win_amd64.whl
Algorithm Hash digest
SHA256 571044acf18511c237435c65e397e7187f8e8a4483f8530c3998211429034753
MD5 a2d335c9836c31937d99109637b152ee
BLAKE2b-256 06c60f1a36b43aaa4c83396bca4a3333741cf41d30c1d09fa6b09c05e2119a1f

See more details on using hashes here.

Provenance

The following attestation bundles were made for autonomi_client-0.4.4-cp38-abi3-win_amd64.whl:

Publisher: python-publish-client.yml on dirvine/autonomi

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

File details

Details for the file autonomi_client-0.4.4-cp38-abi3-musllinux_1_2_x86_64.whl.

File metadata

File hashes

Hashes for autonomi_client-0.4.4-cp38-abi3-musllinux_1_2_x86_64.whl
Algorithm Hash digest
SHA256 6f5f6e333d14b12802d5a75d20d2a3b48e45d3f54cca364563bcf6cdf7d3f37b
MD5 5f33aedaf09adc0f0e8d46b601a577a8
BLAKE2b-256 e0ea1c048f6c185d53f768797915038c6e9e37d1fce7d8a4b40ee3133083ce66

See more details on using hashes here.

Provenance

The following attestation bundles were made for autonomi_client-0.4.4-cp38-abi3-musllinux_1_2_x86_64.whl:

Publisher: python-publish-client.yml on dirvine/autonomi

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

File details

Details for the file autonomi_client-0.4.4-cp38-abi3-musllinux_1_2_armv7l.whl.

File metadata

File hashes

Hashes for autonomi_client-0.4.4-cp38-abi3-musllinux_1_2_armv7l.whl
Algorithm Hash digest
SHA256 ebfede787847acfa51eba82824c16e6f4762acc2284735dc55e55644481986da
MD5 5f08af395a669a1806e54cd46ff203dd
BLAKE2b-256 07fd0bb69a6bd4093fe468c915524d37648166fb48715b8e1dcd6f270118aec7

See more details on using hashes here.

Provenance

The following attestation bundles were made for autonomi_client-0.4.4-cp38-abi3-musllinux_1_2_armv7l.whl:

Publisher: python-publish-client.yml on dirvine/autonomi

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

File details

Details for the file autonomi_client-0.4.4-cp38-abi3-musllinux_1_2_aarch64.whl.

File metadata

File hashes

Hashes for autonomi_client-0.4.4-cp38-abi3-musllinux_1_2_aarch64.whl
Algorithm Hash digest
SHA256 5d97fc298c50ae83d89da73a7ce20a2f6a4aa3ddd36396a518461552e739b540
MD5 0e5dbf032419a73cae806a181cccf703
BLAKE2b-256 b466f9fff14287aff49424829b08bd4a86a9a4b75dac2e7a27ada7aebff8d808

See more details on using hashes here.

Provenance

The following attestation bundles were made for autonomi_client-0.4.4-cp38-abi3-musllinux_1_2_aarch64.whl:

Publisher: python-publish-client.yml on dirvine/autonomi

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

File details

Details for the file autonomi_client-0.4.4-cp38-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for autonomi_client-0.4.4-cp38-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 d9dfa4588d07ef0ba5b562473c3ad2178a5e0430c77a058d48307ccd30a4e10f
MD5 32563e87d03f18de787fabbcc9263867
BLAKE2b-256 6bb5d12ebeb5eb51cded5ea1775f1c4957c20f801bd5968e8809a33dba717938

See more details on using hashes here.

Provenance

The following attestation bundles were made for autonomi_client-0.4.4-cp38-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl:

Publisher: python-publish-client.yml on dirvine/autonomi

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

File details

Details for the file autonomi_client-0.4.4-cp38-abi3-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for autonomi_client-0.4.4-cp38-abi3-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 76a44f5edcf8bd9d33acfaa48659f3c9ff549f6f26f9d679ee13aaeaf7674cd1
MD5 ef35dad097f42fc8fb196d3b259179d1
BLAKE2b-256 30f074e9b8e2d1beabac65c116b33087cd284e3280537df11686f3ffa45f2551

See more details on using hashes here.

Provenance

The following attestation bundles were made for autonomi_client-0.4.4-cp38-abi3-macosx_11_0_arm64.whl:

Publisher: python-publish-client.yml on dirvine/autonomi

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

File details

Details for the file autonomi_client-0.4.4-cp38-abi3-macosx_10_12_x86_64.whl.

File metadata

File hashes

Hashes for autonomi_client-0.4.4-cp38-abi3-macosx_10_12_x86_64.whl
Algorithm Hash digest
SHA256 c1391851bae801ee2a8d6a4a9b60a12de0192b67a6ac7f02172b59ded73aa8be
MD5 2680825fa8807fd5f56dfe7c1c024071
BLAKE2b-256 f69b082a9e2be03cad918120c42930366d411c8727cb3f70f2844d0b279cae93

See more details on using hashes here.

Provenance

The following attestation bundles were made for autonomi_client-0.4.4-cp38-abi3-macosx_10_12_x86_64.whl:

Publisher: python-publish-client.yml on dirvine/autonomi

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