挑战四:需要审核智能合约的代码
DAPP的智能合约代码会写在区块链上,这意味着代码是公开的,可供大众检视,但一般民众看不懂代码,如果真的要确保代码没有问题,势必得要找一个公正的第三方审核代码的安全性。
等等,区块链本身不是就是要「去信任」(trustless)吗?怎么这时候又要找第三方了?
先别说DAPP,退一万步来说,事实上当我们在使用区块链系统的时候,本身都必须建立在对整条链的信任上,我们必须信任BTC跟以太坊的代码没有问题才会去使用它。像BTC或以太坊这种大型开源项目,自然会有很多工程师去审核代码,算是比较安全的,但对于各种智能合约的应用来说,就不是这么一回事了,所以现在才会出现各种智能合约的审查公司(smart contract auditor)。不过这么一来,就只是把信任转嫁给这些审查公司而已,从这个角度来看,区块链永远不可能做到实质含意上的「去信任」。
再者,代码审核这件事本身是很困难的,即便现在检查觉得没问题,也难保之后不会出事。举2016年以太坊著名的The DAO攻击事件为例,The DAO在当时是区块链有史以来最大的众筹项目,但因为被黑客发现其智能合约的漏洞,盗走了约370万个以太币。由于影响者众,当时以太坊创办人V神不得不跳出来主持大局,宣布将发布新版本的软件,把账本回滚到尚未被攻击的状态,有少部分人认为此举违反了区块链「去中心化」的精神,不愿意更新版本,于是留在原地,这就是以太坊首次硬分叉——以太坊经典(Ethereum Classic)的由来。
像The DAO这么火红的项目,其募资的智能合约自然会经过严格的审核,可惜即使经过顶尖程序专家与社群的检视,仍然被黑客发现重大缺陷。智能合约的核心精神——代码即法律(code is law),虽然立意良好,但实务上要执行,还是要克服很多技术以外的问题。
点击关注币海启行微信公众号,了解更多