微彩市场

不悦目点 | 如何提防对智能相符约的审阅抨击? | BTC

在智能相符约体系的设计中,一栽常见的模式是请求客户端在某个时间节点前采取某些走为;倘若客户端超过这个时间点(如,某个区块高度)异国回响反映,则智能相符约会采取一些替代走动,而且清淡来说是对逾时的客户端不幸的走动。本文中,吾的关注点是交互式 rollup 制定会用到的相通模式 —— 由某一方挑出 “断言(assertion)”,其他人倘若觉得断言有题目,能够在 “挑衅窗口期” 内挑出挑衅;倘若挑衅期内异国人挑出任何挑衅,则这个断言就会被视为有效的。

这栽设计模式在实践中会遇到的题目是审阅抨击(censorship attack)—— 抨击者阻截其他人在时间窗口内挑出挑衅。在交互式 rollup 制定中,抨击者能够会挑出子虚的 “断言”,同时不准其他人在窗口期发首挑衅,最后导致子虚的断言逆倒成为相符法的。

吾们也倘若,抨击者必须先投入一笔资金,一旦抨击战败,它会失踪这笔钱;云云一来,吾们不必要让体系被成功抨击概率为零,而只要确保抨击成功概率有余幼,就不会有人情愿往尝试抨击整个体系。

下文,吾会总结相关审阅抨击的知识,以及如何对抗审阅抨击,末了给出吾对这栽风险的望法。

  审阅抨击的类型  

审阅抨击主要有四栽: 分叉:矿工串通(或被行贿)舍置包含平常挑衅的区块,并通太甚叉,使另一条异国包含任何挑衅的区块链被批准。 闪躲:矿工密谋(或被行贿)在出块时不打包平常的挑衅。 作梗:抨击者经由过程传统的拒绝服务抨击(DoS),使得其他人无法挑出挑衅(无法发出包含挑衅的营业)。 速攻:抨击者在很短的时间内挑出大量的链上断言,让其他人来不敷在时间窗口内对一切断言进走检查和挑衅。 吾们一个一个别离商议。

  分叉抨击  

分叉抨击是指在做事量表明(PoW)区块链上,抨击者获得大无数挖矿算力,并按照需求行使这些算力来孤立包含挑衅的区块。

由于这类抨击请求抨击者控制绝大片面算力,于是很难发首——倘若抨击者能够容易获得大片面算力,外示这条区块链自己就有很大的题目。或者换个角度想,一个能够控制绝大片面挖矿算力的卡特尔,一方面会导致行家不信任他们所在的区块链,另一方面,能够也会有比审阅抨击能更快从体系中榨出油水来的办法。

你能够会说,慢着!算力垄断者能够并不会高调地传扬,只是鬼鬼祟祟地搞审阅;倘若抨击者有能力这么做,他们能够会在避免整个区块链信用受损的前挑下,通太甚叉进走审阅抨击。

这边引出第一个题目:审阅抨击对于旁不悦目者来说,是否易于察觉?为了表明分叉抨击是显而易见的,吾模拟了分叉。倘若抨击者控制了 60% 的算力,在前三十个区块中,展现三条分叉链,长度别离是 1、6、5;这和清淡的区块链十足迥异。吾又做了一次模拟,这次抨击者控制 55% 的算力,这时候一个较早期的分叉可长达 48 个块。按照浅易的数学模型展望,当垄断了 60% 的算力,则每 2.5 块会发生一次分叉,分叉导致的孤链平均长度为 5 ;当垄断了 55% 的算力,则每 2.2 块会发生一次分叉,分叉导致的孤链平均长度为 10。

能够望到,随着垄断的算力降低,分叉发生的频率及孤链长度逆而增补了;但无论分叉长短,它们的共同之处是(首块共性):在孤立分支上的首个区块必定包含有效挑衅,而最后成为主链的分支则绝对不会包含这个挑衅 —— 挑出该挑衅的人必定会发现这点!(抨击者能够会试图在更遥远进走分叉来避免首块共性,但这会导致分支过长,而最后孤立的分支仍包含该挑衅。)于是审阅抨击一旦发生,就必定会被人发现。

吾不清新你会怎么想,但倘若吾发现区块链中存在算力垄断表象,而且垄断者会时往往行使算力作梗行使层制定,吾会感到专门忧忧郁。倘若其他人也有这栽疑心,整个区块链将不再被用户所信任——任何 51% 算力抨击皆会导致这个效果。

换言之,这栽抨击的题目并不是有人会审阅你的行使层的营业,而是你所处的区块链存在算力垄断者,它能够为了益处不受收敛地损坏规则。对于任何区块链行使来说,岂论 TA 是否采用窗口期设计模式,只要展现了这栽算力垄断,就是熄灭性的抨击。

倘若你所在的区块链能够展现分叉抨击,你答考虑迁移到其他区块链。

  闪躲抨击  

倘若算力垄断者不采用容易被发现的分叉抨击,还有别的阴谋吗?有的,就是闪躲抨击。凶意矿工只要在出块时,拒绝打包包含挑衅的营业就走了;只要确保挑衅窗口期内所产的区块,都由凶意矿工产出,抨击就能成功。

闪躲抨击成功的能够性有众大?能够这么注释:当垄断者控制的算力比例为 f ,挑衅窗口期为 n 个区块,则抨击成功率为 f n 。举例来说,垄断者控制了 90% 的算力,挑衅窗口期为 50 个区块,则抨击成功率为 0.5 %(倘若控制了 95% 的算力,抨击成功率还要维持在 0.5 %,则窗口期要增补为 100 个区块)。倘若抨击者要为抨击战败支付大量罚金 —— 就像 rolluo 制定所设计的那样 —— 他们就不会堂堂皇皇地抨击;而且倘若罚没的钱能返给受害者,行家还会喜闻笑见这些未遂的抨击。

于是答对闪躲抨击的办法是确保挑衅窗口期有余长,使得抨击成功概率矮至用户能批准的周围;倘若你能批准的抨击成功率为 r ,抨击者至众能控制 f 的算力,则坦然的挑衅窗口期为 log(r)/log(f) 个区块。

这个提出在现实中也是相符理的;倘若抨击者能够垄断 99% 的算力,要保证抨击成功率矮至 0.1%,则挑衅窗口期起码要等于 log(0.001)/log(0.99) = 687 个区块,对于以太坊来说只必要不到三幼时。

  作梗抨击  

在作梗抨击情况下,抨击者经由过程“传统的拒绝服务抨击”,来不准其他人发出挑衅;也就是“以 DoS 进走审阅抨击”。

作梗抨击的题目是,抨击者必须不准 “一切” 能够挑交挑衅的参与方,倘若这些参与方有余众,则作梗抨击就很难成功。

对于抨击者来说还有个坏新闻是,其他益处相关方能够会黑中招聘监视者 —— 一个黑中不悦目察制定运走的中间方,在参与者来不敷或难以发出挑衅时介入,对无效的断言发首挑衅。抨击者没办法辨别这些暗藏的监视者,也就没办法对他们发首 DoS 。

综上,对于抨击者来说,作梗抨击益像不是个益选择。

  速攻  

速攻指的是,抨击者发布大量的断言,使得其他人来不敷在挑衅窗口期内检查一切断言。

任何的 rollup 制定都必要有退守速攻的机制,其中一栽形式是对挑出断言的频率进走局限,保证制定在设定的挑衅窗口期内的任何时间点,全网都有有余的能力往检查待处理的断言或挑衅。

这类机制会在一条 rollup 区块链上,针对智能相符约的处理能力实走一栽 “速限手法” ——即使存在某个能迅速挑出大量断言的人,他最后也不得不慢下来,确保其他平常参与者能跟上。

于是要衡量一个 rollup 体系的可扩展性,其中一个很主要的指标就是它在保证坦然的前挑下的最大速度局限;速限指的是一个体系能坦然处理事务的速率,而不是某个参与者能够产出断言的极限速率。

  总结  

综上所述,有三栽审阅抨击能够经由过程相符理的设计或实践来避免。 提防闪躲抨击:评估抨击者的资源和风险承受能力,制定相符理的挑衅窗口期。 提防作梗抨击:自走招聘(或经由过程可信的权威方招聘)暗藏的监视者,当你出差池的时候这些监视者能够代替你发首挑衅。 提防速攻:更详细的设计 rollup 制定。 关于分叉类型的审阅抨击则很难分析;由于某栽水平上来说,成功的分叉抨击会留下清晰的证据,表明该链上存在算力垄断者,而这些算力垄断者会更情愿采取其他更快获得收入的抨击 —— 比如双花。任何存在算力垄断的区块链都已经病入膏肓,那又何必为这栽情况下的审阅抨击而操心呢?

 

(完)

原文链接: https://medium.com/offchainlabs/fighting-censorship-attacks-on-smart-contracts-c026a7c0ff02 作者: Ed Felten 翻译&校对: IAN LIU & 阿剑

本文由作者授权 EthFans 翻译及再出版。

 


Powered by 微彩app @2018 RSS地图 html地图