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.
Metadata
Release files for oasis-rofl-client 0.2.0
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | |
|---|---|---|---|
| oasis_rofl_client-0.2.0.tar.gz | 177.7 kB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| oasis_rofl_client-0.2.0-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 186.6 kB
Release files / oasis_rofl_client-0.2.0.tar.gz
| Download URL | oasis_rofl_client-0.2.0.tar.gz |
|---|---|
| Size | 177.7 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
439769554baa311c578816b54069bfd3aac82b361859f7d551a9bf2698f5b3c9
|
|
BLAKE2b-256 checksum How to use checksums |
c40304bf3b61731d139d4fb808c7af44a3dc8755edb95ade85d603cc9c2a2b42
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is 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}
|
Release files / oasis_rofl_client-0.2.0-py3-none-any.whl
| Download URL | oasis_rofl_client-0.2.0-py3-none-any.whl |
|---|---|
| Size | 8.9 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
89fffd9d349beca102be2d8dfeea07233699757f9d981b8293b0eae2cc6c77d0
|
|
BLAKE2b-256 checksum How to use checksums |
b551ed5fc1f37eebd4f8cf117d238b76904b6c68cbd6fc192bf4d17433edf7f1
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is 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}
|