You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
 
 

2.6 KiB

A network dashboard and benchmarking tool

Blockchain nodes participate in a common peer-to-peer network retrieving information, executing and validating transactions and blocks. However, software clients differ in their functionalities and resource consumption. The purpose of this project is to create a tool, benchy that can launch, monitor and benchmark Ethereum networks.

launch-network

At first, we will focus on deploying a private Ethereum network while monitoring the nodes. The nodes can be launched directly or within containers.

  • The network should consist of five nodes named Alice, Bob, Cassandra, Driss, and Elena. The first three are validating nodes. Each node has a corresponding Ethereum address.
  • Two different clients must be used, for instance, Geth and Nethermind
  • The consensus mechanism must be clique.

The network should be launched with the command benchy launch-network. The nodes should be launched in the background and the command should return immediately.

Infos

Using the infos command, Benchy should display information on each node, in the terminal or in a webpage. The information must include:

  • Their latest block
  • Their list of connected peers
  • The number of transactions in their mempool
  • Their current CPU and memory consumption (Hint: the outputs of commands such as docker stats or ps can be used)
  • Their corresponding Ethereum address and its balance.

Scenario

To analyze our network, we need to simulate some transactions. Benchy should propose the following scenarios available with the command benchy scenario X. Each scenario must provide feedback on its execution, including updated balances after transfers. 0. Initialise the network by letting it run for a few minutes. Validating nodes must have Eth available as reward or part of the initial configuration.

  1. Alice sends every 10 seconds 0.1 ETH to Bob
  2. Cassandra deploys an ERC20 smart contract with 3000 tokens BY, and gives 1000 to Driss and 1000 to Elena.
  3. Cassandra tries to send 1 ETH to Driss and immediately tries to cancel it by sending a transaction with a higher fee to send it to Elena.

temporary-failure

To study our network further, benchy can disrupt the current network by randomly stopping one node of the network. The command “temporary-failure X” stops the node X for 40 seconds and puts it back online.

Optional

  • an option `-u [time] runs any command continuously each ‘time’ in seconds, 60 by default.
  • _Add the possibility to connect one node to a testnet network _
    • Infos displays information only about this node
    • Scenario runs the same scenarios on different addresses