DEVCOIN2: Christoph Jentzsch:智能合约的安全问题
记者:Cathy
本文为大会演讲速记尝鲜版,给心急的小伙伴们先行浏览,精细校对版将会在大会后逐步发布!
我致力于共识机制和其他工作,过去几个月我意识到了这个问题,智能合约的安全很重要。大家应该都知道DAO的攻击时间617攻击者从DAO盗取350万以太币,借助重入工具来盗窃的,我就不再反复赘述了。
所以通过这个我们能学到什么呢?首先对智能合约进行上限设置,目前智能合约还处于最早阶段,目前还缺乏经验,solidity1.0还没发布,还有mis geth版本很低,而且去中心化程度很低,我们dapp的数量也很少。本来说是一千万美元上限,但是现在还没有具体实现。
我们可以对不变量进行检验,我们可以在每个函数进行检验。我们讲了中心化,比如以太坊有四个开发阶段。
我们有一些中心化,但是我们不会一步到位实现去中心化,DAO也有自己的监管者,但是SplitDAO除外,也就是其出问题的原因。所以谁能控制,对the DAO而言,代币持有人可以控制并管理,比如Digix DAO对其进行控制,我们也可以通过社区多重签名来控制,我们要一步步慢慢来,不能以the DAO盗窃事件就觉得去中心化不可行。
我们要好好学习,比如CALL的深度是1024,我们需要设立返回值。第二我们需要设置区块gas上限,来限制长度循环,我们可以对其他状态进行更新。我们可以制定gas发行的特定数量,还有就是对于区块而言,时间戳可以操纵修改,我们可以采用其他办法,比如区块标号,来代表区块时间戳。
我们要有可更新的合约,我们关于the DAO可更新合约的讨论花了两周时间,问题就是谁有权利进行更新,比如the DAO持有者来更新,也可以用Digix DAO来更新。
如果有时间延迟,那么就可以在延迟时间中做其他事情,减少智能合约的一些风险,另外我们要尽可能使智能合约变得简单,减少复杂度。根据统计,每一千行代码有10-50的bug,不是每个都要进行去中心化。另外我们可以对可实现的代码进行重复使用,比如对代码合约和对基金会多重签名,来证明代码确实是安全,我们使用后就不用有太多担忧。我们希望最终所有框架和安全代码有所使用。
我们需要一定程度的中心化,比如去中心化作为主要功能,比如可以在智能合约里使用多重签名作为中心化机构,目前还在智能合约最初开发阶段。过去三天我和安全方面的专家进行过交流。我们也会很小心翼翼的来写智能合约。我相信未来分布式应用可能会出现问题,不过我们是可以解决的,因为目前毕竟是早期阶段,相信在未来会积累更多经验。
作者:Cathy | 来源:Chainb
微信掃描關注公眾號,及時掌握新動向
2.本文版權歸屬原作所有,僅代表作者本人觀點,不代表比特範的觀點或立場
2.本文版權歸屬原作所有,僅代表作者本人觀點,不代表比特範的觀點或立場