siliqua.network.nano_node package

Submodules

siliqua.network.nano_node.base module

class siliqua.network.nano_node.base.NetworkProcessorBase(network_plugin)

Bases: object

NETWORK_ERROR_WAIT_SECONDS = 1
NETWORK_LOOP_WAIT_SECONDS = 0.1
NETWORK_TIMEOUT_SECONDS = 10
REQUIRED_PROTOCOL_VERSION = 17
async do_json_post(url, params)
property work_difficulty
async siliqua.network.nano_node.base.do_json_post(url, params, session)
siliqua.network.nano_node.base.get_block_from_json(block_data)

Deserialize block data received from a node’s JSON response to a Block instance.

JSON response may include extra data such as a timestamp, so include those as well

Deserialize block data received from a node’s JSON response to a LinkBlock instance.

siliqua.network.nano_node.base.get_raw_block_from_json(block_data)

siliqua.network.nano_node.rpc module

class siliqua.network.nano_node.rpc.RPCProcessor(*args, **kwargs)

Bases: siliqua.network.nano_node.base.NetworkProcessorBase

CONFIRMATION_POLL_INTERVAL_SECONDS = 1
CONFIRMATION_TIMEOUT_SECONDS = 300
FAST_POLL_INTERVAL_SECONDS = 5
POLL_INTERVAL_SECONDS = 120
async broadcast_block(block)

Broadcast a single block and wait until it is complete

async check_node_version()

Check the node version in use and return True if the node version is recent enough

async loop()

The main event loop that continues endlessly until the shutdown flag is activated

property poll_interval

Return HTTP poll interval depending on whether a WebSocket connection is active

async update_account_blocks(account_id)

Update an account’s block in two requests: first request to check account’s (unconfirmed) blockchain second request to retrieve related link blocks and check blocks’ confirmation status

async update_active_difficulty()

Check the active difficulty on the network and update accordingly

async update_broadcast_blocks()

Broadcast blocks in the queue one-by-one until the queue is exhausted

async update_new_blocks()

Check the network for any new blocks to add to the queue

async update_pocketable_blocks()

siliqua.network.nano_node.ws module

class siliqua.network.nano_node.ws.WebSocketProcessor(*args, **kwargs)

Bases: siliqua.network.nano_node.base.NetworkProcessorBase

async listen_for_msg()
async loop()

The main event loop that continues endlessly until the shutdown flag is activated

async process_account_block_message(block_data, account_id, subtype)
async process_block_message(response)

Process a block and insert it into the account and/or pocketable queue

async process_pocketable_block_message(block_data, amount)
async update_listen_subscription()

Module contents

class siliqua.network.nano_node.NetworkPlugin(*args, **kwargs)

Bases: siliqua.network.BaseNetworkPlugin

PLUGIN_NAME = 'nano_node'
property started
Returns

Is the network plugin started

Return type

bool

validate_config()

Method that validates the plugin-specific configuration and raises siliqua.exceptions.ConfigurationError for any incomplete or invalid configuration field

siliqua.network.nano_node.run_network_thread(network_plugin)

Start looping RPC and WebSocket asynchronous network tasks

async siliqua.network.nano_node.run_rpc_processor(network_plugin)
async siliqua.network.nano_node.run_websocket_processor(network_plugin)