Chaos Engineering of Ethereum Blockchain Clients
This work addresses the need for resilience testing in blockchain systems, specifically for Ethereum clients, though it is incremental as it applies existing chaos engineering principles to a new domain.
The paper tackled the problem of assessing the resilience of Ethereum blockchain clients by developing ChaosETH, a chaos engineering approach that injects system call errors and monitors their impact, revealing a range of resilience characteristics from crashes to full resilience across 22 errors and 15 metrics on GoEthereum and Nethermind clients.
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.