Update local_testnet.md (#976)
More information on how the local testnet startup and the testing of it works.
This commit is contained in:
parent
6f21c232ae
commit
bc63f99ea6
|
@ -25,20 +25,48 @@ To run the nodes without testing and keep them alive for manual testing:
|
||||||
./fluffy/scripts/launch_local_testnet.sh --enable-htop
|
./fluffy/scripts/launch_local_testnet.sh --enable-htop
|
||||||
```
|
```
|
||||||
|
|
||||||
## Test flow of the local testnet
|
## Details of the test
|
||||||
|
|
||||||
Following testing steps are done for the Discovery v5 network and for the Portal
|
### Initial set-up
|
||||||
networks:
|
|
||||||
1. Attempt to add the ENRs of all the nodes to each node its routing table:
|
|
||||||
This is to quickly simulate a network that has all the nodes propagated
|
|
||||||
around.
|
|
||||||
2. Select at random a node id of one of the nodes. Let every node do a lookup
|
|
||||||
for this node id.
|
|
||||||
|
|
||||||
For the Portal history network a content lookup test is done:
|
Following inital steps are done to set up the Discovery v5 network and the
|
||||||
1. Node 0 stores `n` amount of block headers. Each block header is offered
|
Portal networks:
|
||||||
as content to `x` amount of nodes. The content should get propagated through
|
1. Nodes join the network by providing them all with one and the same
|
||||||
the network via neighborhood gossip.
|
bootstrap node at start-up. TODO: The amount of bootstrap nodes should become
|
||||||
2. For each block header hash, an `eth_getBlockByHash` JSON-RPC request is done
|
configurable.
|
||||||
to each node. A node will either load this from its own database or do a
|
2. Attempt to add the ENRs of all the nodes to each node its routing table:
|
||||||
content lookup and retrieve it from the network.
|
This is done in order to quickly simulate a network that has all the nodes
|
||||||
|
propagated around. A custom JSON-RPC call is used for this.
|
||||||
|
3. Select, at random, a node id of one of the nodes. Let every node do a
|
||||||
|
lookup for this node id.
|
||||||
|
This is done to validate that every node can successfully lookup a specific
|
||||||
|
node in the DHT.
|
||||||
|
|
||||||
|
### Sharing the data around
|
||||||
|
|
||||||
|
How the content gets shared around:
|
||||||
|
|
||||||
|
1. First one node (the bootstrap node) will get triggered by a JSON-RPC call
|
||||||
|
to load a data file that contains `n` amount of blocks (Currently
|
||||||
|
`[header, txs, uncles]`, should probably become
|
||||||
|
`[header, [txs, uncles], receipts]`), and to propagate these over the network.
|
||||||
|
This is done by doing offer request to `x` (=6 currently) neighbours to that
|
||||||
|
content its id. This is practically the neighborhood gossip at work, but then
|
||||||
|
initiated on the read of each block in the provided data file.
|
||||||
|
2. Next, the nodes that accepted and received the content will do the same
|
||||||
|
neighborhood gossip mechanism with the received content. And so on, until no
|
||||||
|
node accepts any offers any more and the gossip dies out. This should
|
||||||
|
propagate the content to (all) the neighbours of that content. TODO: This
|
||||||
|
depends on the radii set and the amount of nodes in the network. More starter
|
||||||
|
nodes are required to propagate with nodes at lower radii.
|
||||||
|
3. The test binary will then read the same data file and, for each block hash,
|
||||||
|
an `eth_getBlockByHash` JSON-RPC request is done to each node. A node will
|
||||||
|
either load the block header or body from its own database or do a content
|
||||||
|
lookup and retrieve them from the network, this depends on its own node id and
|
||||||
|
radius.
|
||||||
|
Following checks are currently done on the response:
|
||||||
|
* Check if the block header and body content was found.
|
||||||
|
* The hash in returned data of eth_getBlockByHash matches the requested
|
||||||
|
one.
|
||||||
|
* In case the block has transactions, check the block hash in the
|
||||||
|
transaction object.
|
||||||
|
|
Loading…
Reference in New Issue