Interact with RPC Daemon¶
MoneroDaemonRpc offers a MoneroDaemon implementation that interacts with monero-rpc server using calls to RPC, JSON-RPC and Binary interfaces.
Creating a MoneroDaemonRpc instance is very simple:
from monero import MoneroDaemonRpc
# create RPC daemon connected to `monerod-rpc` server
daemon = MoneroDaemonRpc("http://monerod_rpc_uri:18081")
It can also be done using a MoneroRpcConnection instance:
from monero import MoneroRpcConnection, MoneroDaemonRpc
# create rpc connection
connection = MoneroRpcConnection("http://monerod_rpc_uri:18081")
# create daemon using RPC connection
daemon = MoneroDaemonRpc(connection)
Fetch daemon info and status:
# get general daemon rpc info
daemon_info = daemon.get_info()
print(f"Daemon info: {daemon_info.serialize()}")
# get daemon specific sync info
sync_info = daemon.get_sync_info()
print(f"Sync info: {sync_info.serialize()}")
# get peer bans
bans = daemon.get_peer_bans()
for ban in bans:
print(f"Banned peer: {peer.serialize()}")
Query blocks and txs on blockchain:
# get last block header added to blockchain
last_block = daemon.get_last_block_header()
print(f"Last block header: {last_block.serialize()}")
# get specific block by height
block = daemon.get_block_by_height(1520000)
print(f"Block fetched by height: {block.serialize()}")
# get specific block by hash
block = daemon.get_block_by_hash("...block hash...")
print(f"Block fetched by hash: {block.serialize()}")
# get alternative chains seen by the daemon
chains = daemon.get_alt_chains()
print(f"Found {len(chains)} alternative chains")
# get unconfirmed txs in pool
tx_pool = daemon.get_tx_pool()
for tx in tx_pool:
print(f"Found tx in pool: {tx.serialize()}")
# get specific tx added to chain
tx = daemon.get_tx("...tx hash...")
print(f"Fetched tx: {tx.serialize()}")
Relay mined blocks and signed txs:
# submit a mined block
daemon.submit_block("...block blob...")
# submit a signed tx
tx: Monerotx = ...
daemon.submit_tx(tx.full_hex)