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版本设计在区块链基础设施领域的相关性。从工业视角来看,本研究成果对运营区块链节点的企业(包括谷歌、ConsenSys及众多其他主流区块链企业)具有极其重要的意义。