A p2p load testing tool for Ethereum clients.
Like a rocket launcher, bazooka is designed to overwhelm its target. It
carries out pre-defined load testing strategies in a deterministic fashion.
By executing atop devp2p it is portable across all proper Ethereum clients.
Unlike other tools [1]
[2] that focus on consistency &
compliance, bazooka focuses on creating maximally adverse operating
conditions for honest nodes. These conditions can be used to detect performance
regressions and DoS attack vectors in candidate modifications to clients.
To initialize a patched version of Geth and run the sample routine against it, use the following commands:
$ ./run.sh build && ./run.sh run fixtures/sample.yamlA routine has two main parts: the initialization and routine.
The first section allows you to define how many (empty) blocks the chain should
start with and the accounts to generate. The key of the accounts map is the
account's address. This should be derived from either the private key key or
using the create2 formula. The depoyer's
address is 0xD2192C7F2EAEb1f05279c45D19828118e3D6f46C.
There are 4 types of routines:
| id | name | description |
|---|---|---|
| 0 | NewTxs | Announces transactions to the target node |
| 1 | NewBlock | Announces a new block to the target node |
| 2 | Sleep | Sleeps for a certain amount of time |
| 3 | Exit | Ends the current routine |
A script build-aa.sh has also been included to generate input for the sample
AA contract.
TODO