Lightclient implementation library for witnet node
Project description
Witnet Library
This library is light client implementation for witnet node, capable of directly interacting with witnet node. ( See Witnet.io for more information )
Features
- Allows sending proto messages to witnet node.
- Performs handshake with witnet node.
- Iterates over the nodes in witnet network in a DAG(directed acyclic graph) fashion
How to use
Performing handshake with witnet node.
from witnet_lib.witnet_client import WitnetClient
from witnet_lib.utils import AttrDict
# Setting config
config = AttrDict({
"genesis_sec": 1599555600,
"magic": 3029,
"sender_addr": "127.0.0.1:21341",
"time_per_epoch": 45,
})
client = WitnetClient(config)
client.handshake("127.0.0.1:21337")
client.close()
Listening to messages from witnet node.
#After performing handshake with node.
msg = client.receive_msg() # this returns serialized message from node
parsed_msg = client.msg_handler.parse_msg(msg) # we need to parse the message
print(parsed_msg)
print(parsed_msg.kind)
The connection is of keep alive
type, so messages are continually sent from witnet node. To listen for all messages:
while True:
msg = client.receive_msg() # this returns serialized message from node
parsed_msg = client.msg_handler.parse_msg(msg)
print(parsed_msg)
Sending message to witnet node.
#After performing handshake with node.
cmd = client.msg_handler.version_cmd("127.0.0.1:21337") # this returns a version message
print(cmd)
msg = client.msg_handler.serialize(cmd)# this returns serialized messsage ready to be sent to node
client.send_msg(msg)
msg_from_node = client.receive_msg() # this returns only one whole message from node
msg_from_node_with_msg_len, reced_or_not = client.tcp_handler.receive(30) # this returns x bytes from connection stream
Mapping all nodes in the network (DAG fashion)
from witnet_lib import utils
from witnet_lib.map_nodes import MapNodes
config = utils.AttrDict({
"genesis_sec": 1599555600,
"magic": 3029,
"sender_addr": "127.0.0.1:21341",
"time_per_epoch": 45,
})
mapper = MapNodes(config, ["127.0.0.1:21337"]) # provide initialisation peers
all_nodes, active_map = mapper.start_mapping_workers(3) # number of connections allowed to be created in parallel
print(all_nodes)
print(active_map) # it contains node id with the list of its peers
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
witnet_lib-0.0.8.tar.gz
(18.7 kB
view hashes)
Built Distribution
witnet_lib-0.0.8-py3-none-any.whl
(20.7 kB
view hashes)
Close
Hashes for witnet_lib-0.0.8-py3-none-any.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | f954739d7455e152dc9f4b9999c4246a9dfdf7cf24225c5c5b6bcb684ae1a0bf |
|
MD5 | f9fb1667cf2e7a0a6f7513282998163d |
|
BLAKE2b-256 | 9f1b309ff241af4ea5299ee02d00570b732f6d19ea619a714b8247da432ce54c |