0.2.1. The current release on PyPI is 1.0.1, which has an async, options-based API that these examples do not cover. Pin 0.2.1 to run the examples as written. The examples also read their keys and URLs from a .env file with python-dotenv:
WrittenTransactionResult (message, receipt) when the SDK signs, or a BuiltEvmTransactionResult (message, tx) / BuiltCallTransactionResult (message, call) when it only builds the transaction. did.read returns a ReadDidResult and the RBAC fetch calls return dataclasses such as FetchResponseData. Read them as attributes, for example response.tx or role.name. Only storage.get_item returns a plain dict.
On Substrate, the public fields of receipt are extrinsic_hash, block_hash, block_number, and finalized. For events, success, and fees, look the extrinsic up by extrinsic_hash on Subscan, or wrap it in substrate-interface’s ExtrinsicReceipt and read is_success, triggered_events, and total_fee_amount.

