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.
翻译:本文提出了ChaosETH,一种用于评估以太坊区块链客户端韧性的混沌工程方法。ChaosETH的运行方式如下:首先,它监控以太坊客户端以确定其正常行为;然后,每次向单个以太坊客户端注入系统调用调用错误,并观察扰动导致的行为;最后,ChaosETH比较扰动前、中、后记录的行为,以评估所注入系统调用调用错误的影响。实验基于两种最流行的以太坊客户端实现——GoEthereum和Nethermind——展开。我们评估了22种不同系统调用错误对这些以太坊客户端的影响,涉及15个应用层指标。研究结果揭示了以太坊客户端在系统调用调用错误方面的广泛韧性特征,范围从直接崩溃到完全韧性。实验清晰地证明了将混沌工程原理应用于区块链系统的可行性。