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版本编程理念,通过同时执行同一区块链协议的不同实现版本工作。我们在以太坊环境中设计并实现了一个名为N-ETH的N版本区块链节点原型。实验表明,N-ETH能够缓解不稳定执行环境带来的影响,并在环境故障条件下显著增强可用性。为模拟不稳定的执行环境,我们在系统调用层面实施故障注入。结果显示,现有以太坊节点实现在相同的不稳定性场景下表现出非对称行为。N-ETH利用以太坊节点多样化实现中存在的这种非对称行为,即使在我们最激进的故障注入策略下也能提供更高的可用性。我们首次验证了N版本设计在区块链基础设施领域的相关性。从工业视角看,我们的研究成果对包括Google、ConsenSys及众多其他主要区块链公司在内的运营区块链节点的企业具有极其重要的意义。