  In this paper, we present ChaosETH, a chaos engineering approach for
resilience assessment of Ethereum blockchain 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 one single
Ethereum client at a time, and observes the behavior resulting from
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 Nethermind. We assess the
impact of 22 different system call errors on those Ethereum clients with
respect to 15 application-level metrics. Our results reveal a broad spectrum of
resilience characteristics of Ethereum clients w.r.t. system call invocation
errors, ranging from direct crashes to full resilience. The experiments clearly
demonstrate the feasibility of applying chaos engineering principles to
blockchain systems.
