Getting Started

Client class is the primary class you will work with.

from lighthive.client import Client

client = Client()

Appbase nodes support different api namespaces.

Client class uses condenser_api as default. Follow the official developer portal’s api definitions to explore available methods.

Automatic Node Selection

If you prefer, you can pass automatic_node_selection flag True to the Client.

That way, lighthive requests a get_dynamic_global_properties call to the each defined node, and sorts nodes by their response time.

2021-12-30 17:20:28,515 lighthive    INFO     Measurements:
https://rpc.ausbit.dev: 0.12 [s]
https://api.openhive.network: 0.12 [s]
https://hive-api.arcange.eu: 0.12 [s]
https://hived.emre.sh: 0.14 [s]
https://api.deathwing.me: 0.15 [s]
https://rpc.ecency.com: 0.16 [s]
https://api.hive.blue: 0.19 [s]
https://api.pharesim.me: 0.28 [s]
https://api.hive.blog: 0.46 [s]
https://techcoderx.com: 0.77 [s]

2021-12-30 17:20:28,516 lighthive    INFO     Automatic node selection took  0.81 seconds.
2021-12-30 17:20:28,516 lighthive    INFO     Node set as https://rpc.ausbit.dev

Since it’s a time-consuming operation, this is an optional flag, and it’s default is False.

Examples

Get Dynamic Global Properties

props = client.get_dynamic_global_properties()

print(props)

Get Current Reserve Ratio

ratio = c('witness_api').get_reserve_ratio()

print(ratio)

Get @emrebeyler’s account history

history = c.get_account_history("emrebeyler", 1000, 10)

for op in history:
    print(op)

Get top 100 witness list

witness_list = client.get_witnesses_by_vote(None, 100)

print(witness_list)

It’s the same convention for every api type and every call on appbase nodes.

Important

Since, api_type is set when the client instance is called, it is not thread-safe to share Client instances between threads.

Optional parameters of Client

Even though, you don’t need to pass any parameters to the Client, you have some options to choose.

__init__(self, nodes=None, keys=None, connect_timeout=3,
read_timeout=30, loglevel=logging.ERROR, chain=None)
param nodes:A list of appbase nodes. (Defaults: “https://api.hive.blog”, “https://api.hivekings.com”,
https://anyx.io”)
param keys:A list of private keys.
param connect_timeout:
 Integer. Connect timeout for nodes. (Default:3 seconds.)
param read_timeout:
 Integer. Read timeout for nodes. (Default: 30 seconds.)
param loglevel:Integer. (Ex: logging.DEBUG)
param chain:String. The blockhain we’re working with. (Default: HIVE)
param automatic_node_selection:
 Bool. True/False (Default: False)

See Broadcasting Transactions to find out how to broadcast transactions into the blockchain.