Skip to main content

oasis-rofl-client

PyPI version

Python client SDK for Oasis ROFL.

Installation

pip install oasis-rofl-client

Or using uv:

uv add install oasis-rofl-client

The package requires Python 3.9+ and depends on httpx for async HTTP operations.

Quickstart

RoflClient provides methods for interacting with ROFL services:

from oasis_rofl_client import RoflClient

client = RoflClient()

key = client.generate_key("my-key-id")
print(f"Generated SECP256K1 key: {key}")

You can also use an async version:

import asyncio
from oasis_rofl_client import AsyncRoflClient

async def main():
    client = AsyncRoflClient()

    key = await client.generate_key("my-key-id")
    print(f"Generated SECP256K1 key: {key}")

asyncio.run(main())

API Reference

RoflClient

The main client class for interacting with ROFL runtime services.

Constructor

RoflClient(url: str = '')
  • url: Optional URL or Unix socket path
    • If empty (default): Uses Unix socket at /run/rofl-appd.sock
    • If starts with http:// or https://: Uses HTTP transport
    • Otherwise: Treats as Unix socket path

Methods

get_app_id() -> str

Get app ID.

  • Returns: Bech32-encoded ROFL app ID
  • Raises: httpx.HTTPStatusError if the request fails
generate_key(key_id: str, kind: KeyKind = KeyKind.SECP256K1) -> str

Fetches or generates a cryptographic key from ROFL.

  • Parameters:
    • key_id: Identifier for the key
    • kind: Type of key to generate (default: KeyKind.SECP256K1). Available options:
      • KeyKind.RAW_256: Generate 256 bits of entropy
      • KeyKind.RAW_384: Generate 384 bits of entropy
      • KeyKind.ED25519: Generate an Ed25519 private key
      • KeyKind.SECP256K1: Generate a Secp256k1 private key
  • Returns: The private key as a hex string
  • Raises: httpx.HTTPStatusError if the request fails
sign_submit(tx: TxParams, encrypt: bool = True) -> dict[str, Any]

Sign the given Ethereum transaction with an endorsed ephemeral key and submit it to Sapphire.

Note: Transaction nonce and gas price are ignored.

  • Parameters:
    • tx: Transaction parameters
    • encrypt: End-to-end encrypt the transaction before submitting (default: True)
  • Returns: Deserialized response data object
  • Raises: httpx.HTTPStatusError if the request fails
  • Raises: cbor2.CBORDecodeValueError If the response data is invalid
get_metadata() -> dict[str, str]

Get all user-set metadata key-value pairs.

  • Returns: Dictionary of metadata key-value pairs
  • Raises: httpx.HTTPStatusError if the request fails
set_metadata(metadata: dict[str, str]) -> None

Set metadata key-value pairs.

This replaces all existing app-provided metadata. Will trigger a registration refresh if the metadata has changed.

  • Parameters:
    • metadata: Dictionary of metadata key-value pairs to set
  • Raises: httpx.HTTPStatusError if the request fails
query(method: str, args: bytes) -> bytes

Query the on-chain paratime state.

  • Parameters:
    • method: The query method name
    • args: CBOR-encoded query arguments
  • Returns: CBOR-encoded response data
  • Raises: httpx.HTTPStatusError if the request fails

Examples

For a complete working example, see examples/basic_usage.py.

Release Process

Publishing to PyPI is fully automated via GitHub Actions.

License

Licensed under the Apache License, Version 2.0. See LICENSE for details or visit http://www.apache.org/licenses/LICENSE-2.0.

Download files

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

Source Distribution

oasis_rofl_client-0.2.0.tar.gz (177.7 kB view details)

Uploaded Source

Built Distribution

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

oasis_rofl_client-0.2.0-py3-none-any.whl (8.9 kB view details)

Uploaded Python 3

File details

Details for the file oasis_rofl_client-0.2.0.tar.gz.

File metadata

  • Download URL: oasis_rofl_client-0.2.0.tar.gz
  • Upload date:
  • Size: 177.7 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: uv/0.9.22 {"installer":{"name":"uv","version":"0.9.22","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}

File hashes

Hashes for oasis_rofl_client-0.2.0.tar.gz
Algorithm Hash digest
SHA256 439769554baa311c578816b54069bfd3aac82b361859f7d551a9bf2698f5b3c9
MD5 ff944cd91d7ec00ac955ae93c085c54b
BLAKE2b-256 c40304bf3b61731d139d4fb808c7af44a3dc8755edb95ade85d603cc9c2a2b42

See more details on using hashes here.

File details

Details for the file oasis_rofl_client-0.2.0-py3-none-any.whl.

File metadata

  • Download URL: oasis_rofl_client-0.2.0-py3-none-any.whl
  • Upload date:
  • Size: 8.9 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: uv/0.9.22 {"installer":{"name":"uv","version":"0.9.22","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}

File hashes

Hashes for oasis_rofl_client-0.2.0-py3-none-any.whl
Algorithm Hash digest
SHA256 89fffd9d349beca102be2d8dfeea07233699757f9d981b8293b0eae2cc6c77d0
MD5 cbcdd7ad2e77c80440ca52fe9df56302
BLAKE2b-256 b551ed5fc1f37eebd4f8cf117d238b76904b6c68cbd6fc192bf4d17433edf7f1

See more details on using hashes here.

Release history Release notifications | RSS feed

This release

0.2.0 This release

2 files

0.1.7

2 files

0.1.6

2 files

0.1.5

2 files

0.1.4

2 files

0.0.0

2 files

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page