nim-eth/eth/p2p/portal
kdeme 1c400e3f0e
Improve Portal message tracing
2021-06-09 14:57:35 +02:00
..
README.md Add Portal wire readme doc 2021-06-09 14:57:35 +02:00
messages.nim Add implementation of Portal wire protocol 2021-06-09 14:57:30 +02:00
portalcli.nim Add implementation of Portal wire protocol 2021-06-09 14:57:30 +02:00
protocol.nim Improve Portal message tracing 2021-06-09 14:57:35 +02:00

README.md

Portal Network Wire Protocol

Introduction

The eth/p2p/portal directory holds a Nim implementation of the Portal Network Wire Protocol.

Both specification, at above link, and implementations are still WIP.

The protocol builds on top of the Node Discovery v5.1 protocol its talkreq and talkresp messages.

For further information on the Nim implementation of the Node Discovery v5.1 protocol check out the discv5 page.

Test suite

To run the test suite specifically for the Portal wire protocol, run following command:

# Install required modules
nimble install
# Run only Portal tests
nimble test_portal

portalcli

This is a small command line application that allows you to run a Discovery v5.1 + Portal node.

Note: Its objective is only to test the protocol wire component, not to actually serve content. This means it will always return empty lists on content requests. Perhaps in the future some hardcoded data could added and maybe some test vectors can be created in such form.

The portalcli application allows you to either run a node, or to specifically send one of the message types, wait for the response, and then shut down.

Example usage

# Install required modules
# Make sure you have the latest modules, do NOT trust nimble on this.
nimble install
# Build portalcli
nimble build_portalcli
# See all options
./eth/p2p/portal/portalcli --help
# Example command: Ping another node
./eth/p2p/portal/portalcli ping enr:<base64 encoding of ENR>
# Example command: Run discovery + portal node
./eth/p2p/portal/portalcli --log-level:debug --bootnode:enr:<base64 encoding of ENR>