Blockchain recently became very popular due to its use in cryptocurrencies and potential application in various domains (e.g., retail, healthcare, insurance). The smart contract is a key part of blockchain systems and specifies an agreement between transaction participants. Nowadays, smart contracts are being deployed carrying residual faults, including severe vulnerabilities that lead to different types of failures at runtime. Fault detection tools can be used to detect faults that may then be removed from the code before deployment. However, in the case of smart contracts, the common opinion is that tools are immature and ineffective. In this work, we carry out a fault injection campaign to empirically analyze the runtime impact that realistic faults present in smart contracts may have on the reliability of blockchain systems. We place particular attention on the faults that elude popular smart contract verification tools and show if and in which ways the faults lead the blockchain system to fail at runtime. Results show general poor detection and, to some extent, complementary performance by the three tools used. The results also show that several elusive faults are responsible for severe blockchain failures.
翻译:区块链最近由于在加密货币中的使用和在零售、医疗保健、保险等各个领域的潜在应用而变得非常受欢迎。智能合约是区块链系统的关键部分,它规定了交易参与者之间的协议。目前,发布携带残留缺陷的智能合约,包括导致在运行时发生不同类型故障的严重漏洞,已成为常态。可以使用故障检测工具检测可能从代码中删除的故障,然后再部署。然而,在智能合约的情况下,普遍的看法是工具不成熟并且效果不佳。在这项工作中,我们进行了一个故障注入运动,以经验性地分析实际存在于智能合约中的缺陷对区块链系统可靠性的运行时影响。我们特别关注那些难以识别的故障,并表明这些故障是否及以何种方式导致了区块链系统在运行时失败。结果显示三种工具的普遍性能差,同时在一定程度上互补。结果还表明,几个难以检测的故障导致了严重的区块链故障。