The Ethereum blockchain is the operational backbone of major decentralized
finance platforms. As such, it is expected to be exceptionally reliable. In
this paper, we present ChaosETH, a chaos engineering tool for resilience
assessment of Ethereum clients. ChaosETH operates in the following manner:
First, it monitors Ethereum clients to determine their normal behavior. Then,
it injects system call invocation errors into the Ethereum clients and observes
the resulting behavior under perturbation. Finally, ChaosETH compares the
behavior recorded before, during, and after perturbation to assess the impact
of the injected system call invocation errors. The experiments are performed on
the two most popular Ethereum client implementations: GoEthereum and
OpenEthereum. We experiment with 22 different types of system call invocation
errors. We assess their impact on the Ethereum clients with respect to 15
application-level metrics. Our results reveal a broad spectrum of resilience
characteristics of Ethereum clients in the presence of system call invocation
errors, ranging from direct crashes to full resilience. The experiments clearly
demonstrate the feasibility of applying chaos engineering principles to
blockchains