bazooka

command module
v0.0.0-...-94114ed Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Aug 21, 2020 License: GPL-3.0 Imports: 1 Imported by: 0

README

bazooka

Go Report Card

A p2p load testing tool for Ethereum clients.

Overview

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.

Usage

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.yaml
Specifying an Routine

A routine has two main parts: the initialization and routine.

Initialization

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.

Routines

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.

Examples

sample.yaml aa-sample.yaml

Contributions

TODO

Documentation

The Go Gopher

There is no documentation for this package.

Directories

Path Synopsis

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL