As all software, blockchain nodes are exposed to faults in their underlying execution stack. Unstable execution environments can disrupt the availability of blockchain nodes interfaces, resulting in downtime for users. This paper introduces the concept of N-version Blockchain nodes. This new type of node relies on simultaneous execution of different implementations of the same blockchain protocol, in the line of Avizienis' N-version programming vision. We design and implement an N-version blockchain node prototype in the context of Ethereum, called N-ETH. We show that N-ETH is able to mitigate the effects of unstable execution environments and significantly enhance availability under environment faults. To simulate unstable execution environments, we perform fault injection at the system-call level. Our results show that existing Ethereum node implementations behave asymmetrically under identical instability scenarios. N-ETH leverages this asymmetric behavior available in the diverse implementations of Ethereum nodes to provide increased availability, even under our most aggressive fault-injection strategies. We are the first to validate the relevance of N-version design in the domain of blockchain infrastructure. From an industrial perspective, our results are of utmost importance for businesses operating blockchain nodes, including Google, ConsenSys, and many other major blockchain companies.
翻译:作为所有软件一样,区块链节点面临着其基础执行栈中的故障。不稳定的执行环境可能会干扰区块链节点接口的可用性,导致用户停机。本文介绍了N版本区块链节点的概念。这种新型节点依赖于对同一区块链协议的不同实现的同时执行,以符合Avizienis的N版本编程愿景。在Ethereum的上下文中设计和实现了N版本区块链节点原型,称为N-ETH。我们展示了N-ETH能够缓解不稳定的执行环境的影响,并显著增强在环境故障下的可用性。为了模拟不稳定的执行环境,我们在系统调用层面进行故障注入。我们的结果表明,现有的以太坊节点实现在相同的不稳定情况下表现出不对称的行为。N-ETH利用Ethereum节点的多样性实现中可用的这种不对称行为来提供更高的可用性,甚至在我们最激进的故障注入策略下。我们是第一个验证N版本设计在区块链基础设施领域中的相关性。从工业角度来看,我们的结果对于运行区块链节点的企业至关重要,包括Google、ConsenSys和许多其他主要的区块链公司。