一方面,由于区块链具有不可篡改性,因此智能合约是无法更新的。
当我们将智能合约与传统软件相比时我们会发现,如果软件中存在漏洞,我们可以修复该软件并发布新版本,而智能合约的漏洞却很难修复,只能通过硬分叉来实现。考虑到智能合约平台上通常附加着大规模的区块链经济,因此智能合约无法更新是一个很大的发展限制。截至2018年6月17日,仅以太坊的市值就约为500亿美元。
另一方面,智能合约在支付计算成本上的燃料机制(gas mechanism)上也区别于传统编程语言。
因此,在编写智能合约时,开发者必须确保其中的每个功能都能不受燃料限制按预期运行。不恰当的资源分析可能会导致智能合约代码的一部分因燃料限制而无法执行,从而出现资金卡住的情况,而在传统的软件系统中却不存在这种约束。
因此,确保部署在区块链上的智能合约是无缺陷且安全的尤为重要。智能合约的安全性特别重要,因为它们是运行在拜占庭式的环境中的,每一个合约参与方都可能是拜占庭的即恶意的。例如,一个参与合约的恶意用户可能想要盗取资金;一个矿工可能在一个区块中刻意排序一些交易,以产生一些意想不到的结果;或者最糟糕的情况是用户在调用合约时引发调用其他合约(比如调用一个库合约),而后者却是由攻击者控制的,因此产生恶意行为等。
作者:Zilliqa爱好者中文社区 链接:https://www.jianshu.com/p/5379e44280f5 来源:简书 著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。