nimbus-eth1/fluffy/network/wire
Kim De Mey 89023782f3
Let Portal wire protocol adhere to the discv5 packet size limits (#1008)
- Truncate returned number of ENRs in Portal Nodes message to fit
the discv5 max. packet size
- Truncate returned number of ENRs in Portal Content message to
fit the discv5 max. packet size
- Use more detailed packet size calculation for max content payload
in Portal Content message.
- Add metrics to track how many ENRs get packed in the Portal
Nodes and Content messages.
2022-03-24 21:06:13 +01:00
..
README.md Add Portal protocol testing docs and more (#912) 2021-12-13 14:12:51 +01:00
messages.nim Bump nim-ssz-serialization and clean-up fromSszBytes raises (#948) 2022-01-31 21:57:34 +01:00
portal_protocol.nim Let Portal wire protocol adhere to the discv5 packet size limits (#1008) 2022-03-24 21:06:13 +01:00
portal_protocol_config.nim Add Portal protocol config and add config options to fluffy cli (#928) 2022-01-18 09:01:22 +01:00
portal_stream.nim Sharing block header data around in a Portal history network (PoC) (#960) 2022-02-11 14:43:10 +01:00

README.md

Portal Network Wire Protocol

Introduction

The fluffy/network/wire directory holds a Nim implementation of the Portal Network Wire Protocol.

The wire 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 commands:

git clone git@github.com:status-im/nimbus-eth1.git
cd nimbus-eth1

# To bring the git submodules up to date
make update

# Build & run Portal wire protocol encoding test
./env.sh nim c -r ./fluffy/tests/test_portal_wire_encoding
# Build & run Portal wire protocol network test
./env.sh nim c -r ./fluffy/tests/test_portal_wire_protocol

portalcli

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

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 currently. Perhaps in the future some hardcoded data could added and/or 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 Portal message types, wait for the response, and then shut down.

Example usage

git clone git@github.com:status-im/nimbus-eth1.git
cd nimbus-eth1

# Build the fluffy tools
make fluffy-tools

# See all options
./build/portalcli --help
# Example command: Ping another node
./build/portalcli ping enr:<base64 encoding of ENR>
# Example command: Run a discovery + portal node
./build/portalcli --log-level:debug --bootstrap-node:enr:<base64 encoding of ENR>