Skip to main content

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


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)

Uploaded Source

Built Distribution

witnet_lib-1.0.0-py3-none-any.whl (21.1 kB view details)

Uploaded Python 3

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

Hashes for witnet_lib-1.0.0.tar.gz
Algorithm Hash digest
SHA256 059c04a91819948256915fa983d3516f1078166796da07defb71e8d5275fe7f0
MD5 f84bea324583c2357156ac9d4df29fc4
BLAKE2b-256 55506772d99564379f6aedb4072321e93f3391b0e3d40ada607d56a912969760

See more details on using hashes here.

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

Hashes for witnet_lib-1.0.0-py3-none-any.whl
Algorithm Hash digest
SHA256 8bf92898f3b3bc8c71983a46d0a6a5d1f6ac4a3485583b8fe6e25115d0e63ef9
MD5 5d3832d521075d655cd24337a60ad070
BLAKE2b-256 51a2bb53d5550ec62457fa31b8030fe96eafcb7045472f64b629bfeba68b8649

See more details on using hashes here.

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page