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
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
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
|