主页 > 视点绿色 >以太币DAO事件打破区块链不可逆神话,13亿人都惊呆了 >

以太币DAO事件打破区块链不可逆神话,13亿人都惊呆了


2020-06-17


https://technews.tw/2017/09/29/ethereum-dao-part-1/
以太币DAO事件打破区块链不可逆神话,13亿人都惊呆了
您绝对没有连到内容农场!水电工协会保证您还在正确的网页!这种充满喜感的标题只是笔者看了一时手痒不得不用罢了!本期和大家谈的就是区块链的安全性,所以用轻鬆嬉闹的标题,肯定可让读者有愉快的心情跳下这个火坑。首先这是个标题杀人法,其实在 DAO 事件发生时,以太链的不可逆神话并没有被打破,所有交易都符合区块链基本交易原则!发生问题的是 DAO Token 所属的智慧合约,且发生的问题本质在于智慧合约程式有问题,让骇客找到机会无限制把 DAO 代币放到自创的一个子项目,严格说来它和区块链被破有很大一段差距,不过许多媒体朋友都超译,导致这类标题满天飞,让笔者不得不跟进,不然文章就无法收录到内容农场……呃,是无法得到好的点阅率,日子真是太难过了……再慢着,那幺以太币的处理方法难道不是否认那些攻击发生时的所有区块吗?当然,所有区块链都使用共识型协议,只要多数参与者表决成功,安装新程式,整个链就可否决掉部分交易肯定没错,但这种可逆性是受控且一样需要共识,和区块链安全性被逆转还是有很大差距。不过以太坊这种做法仍被多数矿工批评为无法无天、伪币政策……这也让我们看到一件事:区块链的安全性是否真的无敌?共识型演算法的缺点共识型协议最大的问题在于一旦没有共识就完了,比如这次比特币扩容硬分叉,这件事一直到纽约协议完成后才稳下来,在此之前比特币的价格一路下滑,基本上大家有共识两个方案各行其路,就会让比特币区块链一分为二,所有人在两个新区块链的资产及纪录完全不变,就像股票分割,如果分割后股价又涨回原点,等于大家的资产都增加了一倍!这也是水电工协会写本系列文章之初,一直在讲分裂有点像假议题。比方说笔者在分裂前买了 10 个比特币,当时约值 16,000 美元,现在总值已是10×4,500+10×600 =51,000 美元了,所以只要程式或参与者有共识,价值一定不会被破坏。要达成共识需花时间及某些成本,有些骇客即是精研此道,想破坏区块链安全性。针对共识决议的攻击有几项比较知名的,比如 Double Spend,或是 Greed Miner 等都有可能破坏区块链的完整性。在这之前,我们先来看看最笨的攻击法有没有可能真的破坏最传统的比特币。1/2 Good Miner,PoW 的优缺点一般而言谈到 Proof of Works,直觉上被教育成要有二分之一过半的坏人,比特币的安全性才会受破坏,但事实上我们要很小心定义这个最典型的问题,精确来说是:在一个区块产生的时间内,造假一个大家非得封进去的资料,需要有超过二分之一的计算力才有 100% 成功率。这句话本身就有一堆可思考的问题:如果我没有过半,但是不小心有四分之一的计算力会如何?回顾一下之前提的链长度竞争问题,目前的共识型协议是如果某人的链比较长,且 Hash 值接得起来没有问题,其他挖矿机就会把他公布的链收进来替代本来区块,所以如果旧区块没有再检查或有些检查上的漏洞,或是您封装的资料不是流水帐无法一一检查,那幺是有机会在第 N 个区块产生时造假第 N-1 个区块的资料。要达成这件事的首要目标就是要有连续两个区块都由攻击者解出来。这个机率有多高?如果有一个大矿场被骇,刚好它有四分之一计算力,那幺成功率就是十六分之一;若它有三分之一计算力,成功率高达九分之一。所以并不是没有一个坏人突破二分之一计算力时,区块链就绝对安全。基本上过去区块链安全主要还是因为大家都抱着发财梦,因此守护币值是大家共同的信念。美国矿工每次都在骂中国计算力过高一定会出事,比特币不可信……但这幺久以来,反而中国矿工更有「职业道德」,毕竟在强国讲到赚钱获利,那才是硬道理!说到这,我们回头看看比特币原始社群的坚持,事实上很有道理!比特币主力社群开发者坚持:小型电脑就可以挖矿、不希望有巨大矿池、人人都可以当管理者事实上就是确保比特币安全性的最大保证!在这个坚持下,每台设备好一点的家用电脑就可以挖矿,不必特别的硬体、有多种不同系统,没有人的算力特别大,对攻击者来讲,这真是一个取得计算力的地狱!对想利用现金资源强占比特币社群的企业而言,更是铁板一块!如果真有人成功塞进假的不合法交易资讯进比特币区块,会造成极大损失吗?当然是可能的,不过也没那幺简单,目前最有可能的做法也只有 Double Spend,也就是帐户里只有 1 元但是连续花用多次。如果要假造某个大帐户发送转帐信息,笔者认为不可能,因为骇客无法变造数位签名,一旦他想要花偷来的钱,就会稽核出来。而 PoW 的好处是:即便如此,过去的历史文本仍无法改变。PoW 的区块链只要一旦封存成功,没有被链竞争打掉,基本上无法改变,除非所有参与者都被骇客入侵,更改程式或删除资料。我们接下来看看各种基于共识型协议天生的危险性而出现的攻击手法:Race Attack竞速攻击法?抱歉这个名词一开始就翻得很难理解,事实上就是抢钱攻击法。当 A 用户转帐给 B 用户时,发了一条交易到区块链网路,当然大家都知道讯息一发出去就不可能修改,但也不太可能马上封进区块链,所以短时间之后,如果 A 用户再发一条讯息转大量的帐,大家猜会发生什幺事?结果是在比特币链上,前一条交易会视为非法,后一条交易被视为合法。如果您在买卖中,为了节省时间而不愿多等几个区块产生,那在您一手交货之后,看到的转帐资讯恐怕会是您的收入转帐被取消了。这有点像空头支票,不同的是比特币是自比为现金的流水帐,因此早期安全性论文一直告诉大家,所有交易至少要等几个 confirm 才能成立,也就是真正安全的交易恐怕得等上 1 小时。其他货币有的比较快,但也要等足好多分钟才算安全,因此这些等待的成本都变成数位货币无法取代现金法币的主因之一。Vector 76这个手法同样是 Double spend 只是複杂不少。首先骇客必需有两台挖矿机,其中一台 A 只连到受害者,一台 B 真正在挖矿。挖矿机本身有一定的平均中奬率,好比如果骇客当时买到最新 ASIC 挖矿机,恐怕不用一天就可挖到一个区块,而骇客只要不断透过 A 主机向买卖网站发转帐信息,再透过 B 主机发另一个转帐信息让前笔交易为假。当运气来时,A 主机发了转帐 50BTC 后,B 主机也挖到矿了,B 主机就可在公告该区块后再发第二条转帐信息,此时,交易网站看到的情况是:骇客透过 A 主机公告转帐进来 50BTC,等 10 分钟后,有一个 confirm 了,如果交易网站不想多等,就让这笔转帐视为合法,那幺骇客就有 10 分钟左右时间可把这 50BTC 卖掉换成美元,下个区块出来时大家才会发现这笔交易不合法,会被取消,但网站已受损失了。所以自从这个攻击被发现后,连一个 confirm 都不太够。Alternative history attack这个手法就是前段分析过的:要改变历史需要的计算力及机率。如果有一个骇客在第 N 个区块放了假交易,他自己放个程式在主机上记录这个软分叉,等到他发现再经过 C 个区块后,他自己的软分叉链竟然比主网路的链长了一笔交易,他就可以发布自己的分叉版本,大家多半只能同意。我们可以再看一次:如果只想改变一个区块的历史,而您有全网 X 分之一的计算力,您成功的机率就是 X 分之一的平方;要改变二个区块,您成功的机率就是 X 分之一的 3 次方;如果要改到 6 个区块,机率就降到 X 分之一的 7 次方。基本上,就算成都某大矿场这样,在某时期曾有高达近二分之一计算力的主机被骇,成功机率也会降到一百二十八分之一以下。至于在全网较平衡的情况下,一般挖矿主机大约都仅有全网算力的 1%,大矿场应在 5%~20% 间,所以等待 6 个区块还算是合理推断。Ethereum DAO 事件以太链使用的协议是 GHOST,是个非常爱闹鬼的组织,具备快速反应能力,因此交易速度快过比特币甚多,大多情况下 1 分至 2 分一定有一个新区块产生,也因此不同步的安全问题会很严重。为了提高安全性,GHOST 使用 Uncle 链技术让主链在短时间内可以有多层次分叉,但终究还是会整合回主链,这中间各种智慧合约事件也因系统不同步性,或多或少有作弊空间,DAO 就是最出名的案例。DAO 虽说只是个代币,但大家都知道它是以太币创始社群自己搞出来的,且一开始还是比特币的,所以 DAO 虽然只是智慧合约问题,但却涉及以太币的价值及可能牵连到比特币。总之大家光看内容农场都可以知道发生什幺事:DAO 代币被骇客利用 split 函数的漏洞不断从 DAO 管理者帐户转走,转到数十个不同的以太币帐户,而以太币上所有代币都要用以太币换,也就是代币就可换回以太币,所以一堆钱就这幺被偷走了。笔者一向懒得跟风去写什幺事件始末,不过以太坊社群的处理方法及后续,倒有很多可讨论的地方。

    一段错误的历史应不应该维持,以向世界证明区块链绝对不可逆?以太币这次动用到终极武器 Hard Fork,让这段历史完全消失了,使许多以太坊用户非常失望。虽然不是因为技术问题让区块链历史改变,但终究显示区块链加智慧合约,可能导致不可挽回、非得砍掉重来的大问题。如果不让历史消失,那幺这种大犯罪行为要如何解决?事实上根本无解。现实世界中如果法币被偷了还可以报案想办法拿回来,数位货币大概只能开个公审大会请骇客转回来了,问题是根本不可能。唯一的方法还真的只有让历史消失。像以太坊这种全球性的公开区块链,应不应该有什幺世界警察或系统机制来处理一些破坏体系的骇客行为?当然有的话很好,但如果不是基于共识型协议发展出来的,那幺就会回到集中管理的问题,先不谈权力集中在少数人的政治问题,光是这样,骇客又有新题材可玩了:要玩死以太链,只要针对那几个控制节点就好了,多方便!同样的这件事情,让我们看到智慧合约的複杂性,绝对不是找个程式设计师写写就可以。大额智慧合约未来一定要有专门的人才负责撰写及测试。
    硬分叉后续来点内容农场很少提到的事好了。以太链在处理 DAO 问题硬分叉后,其实新版的挖矿程式有点问题,因为新增删除空户的功能,但删除空户一样动用到 GAS,反正在以太链上做什幺都要瓦斯,结果遇到系统太忙 out-of-gas 时就完了,因为主流挖矿程式有两个,一个是 Geth 一个是 Parity,Geth 根本不管有没有 GAS 可执行就把帐户给删了,但 Parity 会照章行事,等系统有 GAS 可用才准删除。就为了这个鸟问题,以太币刚硬分叉完又来一次,被大家笑称是超不可信的货币、伪币,足足到最近比特币因多家金融机构打算发行相关 ETF 引进资金投资大涨后,以太币才又登上价格新高。以太坊力图改进 CASPER这个很爱闹鬼的团体最近一直在讨论 PoW 有多麻烦、矿工有多贪心不听话、人多嘴杂又吃掉一整个国家的电力……blahblah,于是乎进一步想走向 Proof of Stake。本栏至今大部分时间都在讲 Proof-of-works,基本上 Proof-of-Works 就是利用天量的运算找到一个你永远无法轻易再製的 hash 解,当然利用演算法决定区块正确性也可达到一定程度的安全性,包括 Proof-of-Stake、拜占庭容错法等都是相关技术。我们这次也就顺便来看看 PoW 和 PoS 的安全性及能耗比较。



    上一篇:
    下一篇:


小编推荐