client-sdk-python
client-sdk-python copied to clipboard
Python client library for Diem
The official Diem Client SDK for Python.
Pypi package
https://pypi.org/project/diem/
Examples
>>> from diem.jsonrpc import AsyncClient
>>> from diem.testing import JSON_RPC_URL
>>> import asyncio
>>>
>>> async def main():
... # Use with statement to close client after usage
... # or call client.close() when initialized without with statement
... with AsyncClient(JSON_RPC_URL) as client:
... print(await client.get_metadata())
...
>>> asyncio.run(main())
version: 3300304
timestamp: 1601492912847973
chain_id: 2
......
You can find more examples under the examples
directory:
- Create Child VASP account
- Peer To Peer Transfer
- Intent Identifier
For building a wallet application, see MiniWallet Application for example.
Off-chain service example
Checkout MiniWallet implementation for off-chain service implementation example.
MiniWallet and MiniWallet Test Suite
See mini_wallet.md
Build & Test
make init
make test
run specific test:
make test t=<test file / test name match pattern>
run with local docker testnet (requires initializing diem submodule):
make test t=<test file / test name match pattern> dt=1
Re-generate diem_types, stdlib, jsonrpc response data structures
git submodule update --init diem
cd diem
git pull origin main
cd ..
make gen
Modules Overview
SPEC = specification
DIP-X = Diem Improvement Protocol
Root module name: diem
Sub-modules:
-
jsonrpc
: diem JSON-RPC APIs client and API response types. SPEC -
stdlib
: generated code, move stdlib script utils for constructing transaction script playload. -
diem_types
: generated code, Diem on-chain data structure types for encoding and decoding BCS data. -
utils
: utility functions, account address utils, currency code, hashing, hex encoding / decoding, transaction utils. -
AuthKey
|auth_key
: auth key utils -
identifier
: Diem Account Identifier and Diem Intent Identifier. DIP-5 -
txnmetadata
: utils for creating peer to peer transaction metadata. DIP-4 -
testnet
: Testnet utility, minting coins, create Testnet client, chain id, Testnet JSON-RPC URL. -
testing
: Testing utility, MiniWallet application, MiniWallet test suites,LocalAccount
for managing local account keys and generating random local account. -
chain_ids
: list of static chain ids