Python client SDK for Oasis ROFL.
Project description
oasis-rofl-client
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://orhttps://: Uses HTTP transport - Otherwise: Treats as Unix socket path
- If empty (default): Uses Unix socket at
Methods
get_app_id() -> str
Get app ID.
- Returns: Bech32-encoded ROFL app ID
- Raises:
httpx.HTTPStatusErrorif 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 keykind: Type of key to generate (default:KeyKind.SECP256K1). Available options:KeyKind.RAW_256: Generate 256 bits of entropyKeyKind.RAW_384: Generate 384 bits of entropyKeyKind.ED25519: Generate an Ed25519 private keyKeyKind.SECP256K1: Generate a Secp256k1 private key
- Returns: The private key as a hex string
- Raises:
httpx.HTTPStatusErrorif 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 parametersencrypt: End-to-end encrypt the transaction before submitting (default: True)
- Returns: Deserialized response data object
- Raises:
httpx.HTTPStatusErrorif the request fails - Raises:
cbor2.CBORDecodeValueErrorIf 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.HTTPStatusErrorif 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.HTTPStatusErrorif the request fails
query(method: str, args: bytes) -> bytes
Query the on-chain paratime state.
- Parameters:
method: The query method nameargs: CBOR-encoded query arguments
- Returns: CBOR-encoded response data
- Raises:
httpx.HTTPStatusErrorif 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.
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
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 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
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
439769554baa311c578816b54069bfd3aac82b361859f7d551a9bf2698f5b3c9
|
|
| MD5 |
ff944cd91d7ec00ac955ae93c085c54b
|
|
| BLAKE2b-256 |
c40304bf3b61731d139d4fb808c7af44a3dc8755edb95ade85d603cc9c2a2b42
|
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
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
89fffd9d349beca102be2d8dfeea07233699757f9d981b8293b0eae2cc6c77d0
|
|
| MD5 |
cbcdd7ad2e77c80440ca52fe9df56302
|
|
| BLAKE2b-256 |
b551ed5fc1f37eebd4f8cf117d238b76904b6c68cbd6fc192bf4d17433edf7f1
|