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": 1602666000,
"magic": 40941,
"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": 1602666000,
"magic": 40941,
"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-1.0.0.tar.gz
(19.2 kB
view details)
Built Distribution
File details
Details for the file witnet_lib-1.0.0.tar.gz
.
File metadata
- Download URL: witnet_lib-1.0.0.tar.gz
- Upload date:
- Size: 19.2 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/1.13.0 pkginfo/1.5.0.1 requests/2.24.0 setuptools/49.6.0 requests-toolbelt/0.9.1 tqdm/4.48.2 CPython/3.6.9
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | 059c04a91819948256915fa983d3516f1078166796da07defb71e8d5275fe7f0 |
|
MD5 | f84bea324583c2357156ac9d4df29fc4 |
|
BLAKE2b-256 | 55506772d99564379f6aedb4072321e93f3391b0e3d40ada607d56a912969760 |
File details
Details for the file witnet_lib-1.0.0-py3-none-any.whl
.
File metadata
- Download URL: witnet_lib-1.0.0-py3-none-any.whl
- Upload date:
- Size: 21.1 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/1.13.0 pkginfo/1.5.0.1 requests/2.24.0 setuptools/49.6.0 requests-toolbelt/0.9.1 tqdm/4.48.2 CPython/3.6.9
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | 8bf92898f3b3bc8c71983a46d0a6a5d1f6ac4a3485583b8fe6e25115d0e63ef9 |
|
MD5 | 5d3832d521075d655cd24337a60ad070 |
|
BLAKE2b-256 | 51a2bb53d5550ec62457fa31b8030fe96eafcb7045472f64b629bfeba68b8649 |