Skip to main content

Python: Getting Started

notareum is the official Python SDK for the Notareum Protocol. It supports Python 3.10+ and is built on top of web3.py v7 and eth_account. This page installs the package, configures a provider and account, and produces a signed .nota file.

Install

web3 and eth_account are pulled in as direct dependencies. Production deployments typically also want httpx or requests for custom transports.

Requirements

  • Python 3.10 or newer (| union types and match statements are used internally).
  • An Ethereum JSON-RPC endpoint.
  • Optional: an eth_account.Account instance for write operations.

Create a Notareum instance

Contract addresses for the current deployment are listed in Contract Addresses.

Your first .nota file

.nota file creation is purely local. No network calls are made.
The resulting string is canonical, deterministic JSON safe to send over any channel: HTTP, email, QR code, or a file on disk. Recipients (in Python, TS, or Rust) will see the same bytes and verify the same signature.

Read a contract

No account is required for reads:

Write a contract

The SDK sends the transaction, waits on the default behavior for the RPC, and returns the hash as a hex string. For advanced transaction management (gas pricing, nonce tracking, batching) use web3.py directly with the SDK’s exposed contract addresses.

Sync and async

The Python SDK is synchronous by design: it integrates naturally with FastAPI via threadpool offloading, Celery workers, Django views, and scripts. An explicit async wrapper ships with notareum.asyncio.Notareum for projects that prefer async/await.

Next steps