本文作者:qiaoqingyi

挖矿需要怎样的网络技术(挖矿 网络)

qiaoqingyi 04-13 104

  摘要

  大区块被网络孤立的风险限制了比特币的交易容量,同时缺乏安全的即时交易也限制了比特币的实用性。对这两者任何一项改进都能极大地增加比特币的实用性。本文研究一种使用小难度区块(弱区块weak blocks)创建子链(subchains)连接匹配完整难度区块(强区块)。子链即能通过广播区块内容代替广播整个区块来降低孤块风险,同时通过子链创建弱区块增强了零确认交易的安全性。矿工因为可以打包更多的交易(从而获得更多的手续费)并且不会增加额外的孤块风险而受到激励去合作创建子链。使用子链可以让手续费收入奖励给全网算力,而不是让孤块吞噬手续费。通过嵌套子链,弱区块的确认速度理论上通过未来的技术改进可以接近光速。因为子链是建立在现有比特币之上的,它们不需要修改任何的比特币共识规则。

  简介

  比特币作为一个支付网络的表现是很难让人印象深刻的。在2015年,比特币平均每秒处理的交易量只有1.4笔 ,而商家平均要等待8分钟才能获得第一次来自矿工的确认。 相比之下,Visa网络每秒处理的交易超过2000笔, 使用“芯片密码(PIN-verification)(译者注:本文对一些未在中文广泛应用的专业术语第一次出现时会使用括号加上英文原文,以防止译者本人知识匮乏导致的翻译不准确。)”技术,商家接收授权和密码确认的时间在一秒以下。 和Visa不一样的是,比特币的交易处理量是被矿工不愿意生产更大的区块限制了。 更大的区块在网络上传播非常慢, 这增加了被孤立的风险,一旦区块被孤立矿工就失去了区块奖励。同样和Visa有别的是,比特币交易的第一个确认是由矿工打包区块产生的,而网络平均10分钟才产生一个区块, 更不用说还会受动态调整的网络带宽和延迟影响。在本文中,我们将阐述一种叫子链(subchains)的扩容技术,它利用比特币十分钟一个区块时间内的一小段里建立一个逐层的区块,以此来解决矿工挖矿过程的孤块风险和交易确认时间长的问题。

  在这篇论文,我们做出某些简化假设。 特别地,我们认为:

矿工是理性的,追求短期利润最大化。

在一个给定的区块时间内,全网哈希算力是恒定的。

区块信息传播是按字节传播,并且考虑了一个准确定义的按时间计算的传播阻抗。

区块大小受自由市场的影响,并且小于协议强制的区块大小限制(如果有这么一个限制的话)。

  在第3节,我们将描述子链的技术, 这是弱区块(weak blocks)的一个实际应用 使用利益激励的方式确保矿工和网络的互惠互利。它的实现即不需要软分叉,也不需要硬分叉,但它要起作用是需要全网有显著的算力运行它。我们会解释矿工可以将所有的子链交易打包进他挖到的区块,同时也可以获得所有的子链里的交易手续费,同时也不需要承担孤块的风险,同时矿工还会被更高的手续费而鼓励和其他矿工一起扩展一个子链(第4节)。接下来我们会论证矿工创建子链收到的手续费产生的边际收益要大于其产生的区块被孤立的边际风险,从而在经济上可以促进子链的发展。

  某些研究者认为孤块的风险并不会导致网络安全问题。比如马克斯威尔(Maxwell)就认为,“事实上确认和广播交易需要成本并不是全部,因为所有的人都共同承担,而且工作量证明的机制没有‘人工’成本。” 在第5节我们将使用一张简洁的图表来证明这个观点是错的,图表将显示包含在子链中的交易费对全网的安全性和区块奖励一样重要。只有在子链上新添加新交易产生的手续费(边际收益)覆盖了被孤块的风险(边际成本)才是可行方案。我们接下来会对比使用子链和不使用子链的情况下的孤块率,并且使用明显的图表显示这一技术的优越性(第6节)。

  在第7节我们将讨论近似快区块(fast-block approximation)。这里的近似是假设传播时间是小于目标区块时间。这将让我们可以使用非零这一个术语来解释和量化错误(最大的传输时间)。在第8节我们表述近似快区块如何通过子链来保证确认安全,我们会通过计算双花攻击成功的概率来衡量安全性。通过权衡子链交易的安全性和确认时间,在其他条件不变的情况下,交易的安全和区块大小的平方成正比,由此我们有动机进行链上扩容。在第9节,我们使用图表的方式证明子链如何在确认时间和交易安全之间的权衡,创建一个分形区块链结构,可以几乎不停地处理交易。让我们从定义要使用的符号开始。

  符号列表

  对本文接下来的部分,下面的符号代表的意思如下。

  

  

  子链

  为了能在比特币区块链上添加一个新区块,矿工必须找到有效的工作量证明值。这个过程是计算找到一个随机数,将之前的随机散列值和作为区块内交易的根散列值作为哈希函数的参数进行哈希运算,得到的数值要小于目标值。 我们将满足较少需求的区块定义为弱区块,满足条件如下:

  Hash(之前的随机散列,随机数,根散列)弱目标值

  通过共享这些弱区块,矿工可以合作创建子链 (图. 1)

  

  图1.矿工通过合作创建子链,打包更多的交易,以获得更多的手续费的同时可以避免孤块风险。这张图显示的是四分之一难度的子链(也可以被称为4倍子链)

  依赖于接受一个(强)区块,矿工使用之前已经接受的区块做为散列值做哈希计算进行挖矿以获得下一个区块(图.2a)。当矿工通过工作量证明计算出了一个值满足弱目标值,就可以向全网广播弱区块。当其他矿工确认弱区块后,参与的每个矿工都将分到区块奖励,并且向区块添加交易,计算的根哈希值,然后接着去计算有效的随机数(图.2b)。我们将提到的这些新信息称为矿工的Δ-区块(Δ-block)(图.2f)。 如果矿工再次通过工作量证明计算出一个值满足弱目标值,他就将通过只发送他的Δ-区块和前散列值的哈希值的方式进行广播这个弱区块。通过这种方式,矿工们可以通过只发送新信息和表达子链头部(the subchain’s tip)信息的固定字节大小数据就可以合作创建子链。

  当一个矿工通过工作量证明计算出了一个值满足了强目标值(图.2d),他可以使用和广播弱区块的方式进行广播(例如:只发送他的Δ-区块和前弱区块的哈希值)。 节点会识别这个信息为一个有效的(强)区块,保留随机数和coinbase交易,并且关闭子链。然后矿工在这个最新区块上继续重新创建子链(图.2e)。

  

  图.2. 矿工通过一层一层的方式创建子链(a-c),每一层相当于一个弱区块。广播一个区块(弱或强),矿工只需要发送他们的Δ-区块和一个相关的子链头部信息(f),这减少了传输的字节数。当一个满足强区块的随机数被发现时,子链就被关闭了从面变成一个强区块(d),然后矿工继续创建新的子链(e)。

  构建 Δ-区块

  在标准的子链机制的创建和拓展区块的场景中,矿工可以打包所有的子链内的交易——当然也能获得所有的交易费——而且不会产生额外的孤块的风险(图.3)。每个Δ-区块里的交易费是添加在子链的“罐子(pot)”,这样有效地增加了区块奖励。矿工受到经济的激励有动力去创建包含最多手续费的子链。当所有的矿工都受到激励时,大家就倾向于一起合作拓展区块链。

  矿工确实会担心打包Δ-区块的交易会有被孤块的风险。他挖矿时并不知道他是否能挖到强区块、弱区块,或者根本挖不到块。但矿工一直以来都是只挖强区块的,除非新添加交易带来的收益(和他潜在的收益相比)超过了被孤块的风险,否则矿工就不会打包这些交易。

  

  图.3 每当增加一个Δ-区块时子链里的交易费就上涨,有效地“让罐子成长”。由于矿工挖矿挖子链时并不需要承担额外的被孤块的风险,矿工就有动力去创建包含更高手续费的Δ-区块。然而矿工新添加任何交易孤块的风险确实会增加孤块率。因此,矿只会在新添加交易获得的手续费边际收益大于因新增交易需要增加区块空间而增加的边际成本,才有动力去新打包额外的交易。

  矿工平均生产区块空间, 增加的边际成本归因于孤块风险估计值 ρ_”supply” =zRT^(-1) e^□(?τ/T), 其中R代表区块奖励,T代表区块时间,τ=?τ+τ_0表示传播时间,τ_0是传播延迟。z描述的是区块因新添加一个交易而增加的字节空间需要的网络传播边际时间,我们使用?τ=z?Q来表达,?Q表示矿工挖的Δ-区块大小,在这种情况下表达为:

  在一个完全自由竞争的市场,矿工在新添加交易的边际成本小于边际收益时就会将能收到的所有交易进行打包,从而达到利润最大化(图. 3b)。

  从手续费收益到工作量证明

  手续费有助于提高工作量证明的安全性(在没有块大小限制的情况下)。图.4是图.3a的修正版,考虑了所有矿工的收益和成本,包括区块奖励和挖矿的电费开支。在自由竞争的市场,矿工的边际收益会趋向于零。图.4考虑了这一因素,区块空间的总生产成本一定会增加,因此收益增长线和成本增长线就会相交。如果挖矿行业利润巨大,矿工就倾向于部署更多的算力以竞争获取这些利润,从而将整体生产成本曲线往上移,算力成本增加而利润则下降。如图.4所示,手续费收益显著大于被孤块的风险;这些手续费奖励——包含在子链里的一个个Δ-区块里——相当于增加了区块奖励:这会驱动全网算力增加。

  一个需要注意的是,图.4的矿工收益和成本显示特定的矿工除非让其挖子链块所包含的手续费能达到其期望值,否则矿工是不会去挖子链的。现在的情况是,手续费收入只占区块奖励的极小部分,大部分矿工是无视这部分利润的。然而,当总的手续费持续增加时,相对于区块奖励不再是只占小比例时,我们就可以有希望看到算力会将尽可能地挖Δ-区块(当然也包含其中的手续费),因为矿工只需要增加其矿机消耗的边际电费增加成本。对此现象的进一步讨论超出了本文论述范围。

  

  图.4.如果高手续费能让矿工获得更高的利润,矿工就会部署更多的哈希算力,全网难度也会提高,结果就会抬升算力成本。这会导致生产成本曲线上移,从而降低行业利润。手续费有助于提高工作量证明的安全性。总手续费收益大于增加的孤块风险,虽然边际手续费收益等于孤块率边际风险。

  降低孤块风险

  子链通过解决工作量证明信息传播来降低孤块率。如果一个区块需要τ 时间来传播,在时间间隔 0tτ内网络发现另外一个区块的概率可以使用下面的公式计算:

  

  这里的e 〖1/T e〗^(- □(t/T)) 当然是一个有效的工作量证明确认的时长。矿工合作创建子链以提前广播区块的部分内容,从而最大限度地降低了传播时间,同时降低了孤块发生的机率。

  假设矿工都生产相同大小的Δ-区块,每个Δ-区块的大小是由子链因子缩小,T/ΔT ,比如?Q=ΔT/T Q。传播时间是τ=z?Q+τ_0,从而孤块风险可表达为:

  考虑子链的各个因素以及使用现在网络传播常数的最新数据(z= 17 s/MB and τ_0=10 s), 可将上面的方程图绘成图.5。在相同的孤块率风险下相比于不使用子链,使用子链可多打包X倍的交易,T/ΔT=X 。 最小的子链确认时间时间是有限制的,因为全网还不能达成共识认为子链的速度要比网络延迟快(即,无论技术怎么进步,因为受网络直径(network diameter)和光速的限制,这一延迟大约为0.1s)。

  

  Fig. 5. 图.5. 子链能降低大区块的孤块率以有用助于比特币扩容。这张图是基于最新网络参数估算的(z= 17 s/MB and τ_0=10 s). 举例来说,在相同的孤块率条件下一个38秒确认时间的子链可以比不使用子链的区块每秒时间可多容纳16倍的交易。因为网络延迟,子链的最小确认时间是有限制的(图中的阴影区)。

  近似快-区块

  使用恰当的弱目标值,就可以在每挖出一个强区块的同时挖出若干个弱区块。传播每一个Δ-区块的时间要比强区块被挖出的时间间隔要小:

  τ?T.

  我们将公式(2)定义为近似快-区块,它可以用于快速传播Δ-区块和完整区块。

  举一个近似快-区块的应用案例,考虑公式(1)里的区块空间的边际成本。注意?τ=z?Q, 公式的指数是非常小的(见公式.2),然后我们可以展开右边的幂指数式,考虑?τ=0,从而ρ_”supply” =zRT^(-1) (1+?τ/T+?)。因为?τ/T?1,传播Δ-区块里每字节交易的边际成本就接近为:

  每6秒就大约增加百分之一的传播时间 (我们认为Δ-区块传播是非常快的)。 可以使用同用的方式利用快速区块解决一个公式的非零幂指数展开问题。

  安全零确认

  要想在双花子链里的交易,攻击者必须在全网找到一个强区块 之前生产一个包含比诚实子链更高的手续费的弱区块(图. 6)。生产这种双花区块的成本是非常高的。

  使用偏导数,孤块率,M,可以表示为:

  如果矿工合作创建子链,我们可以使用近似快-区块(公式.2),在这种情况下每字节的边际成本为,ρ=?M/?Q, 这是由公式.3推导出来的。考虑到交易增长速率Q ?=?Q/?t,我们可以将全网发生孤块的概率表示为:

  如果我们假设交易增长率是一个常数,那么孤块风险随时间的推移呈线性增长:

  

  这里的M_0 是孤块已经发生在时间t=0。

  

  图.6.为了成功双花攻击一笔交易,攻击者必须在全网挖出强区块之前挖出一个包含比最好的弱区块更多手续费的弱区块。因为新的Δ-区块会持续添加到子链上,攻击者也必须持续添加高手续费交易到他的区块里(b)。并且攻击者坚持的越长,他的区块被孤立的风险就越大。攻击行为要不是因为攻击者成功挖出一个弱区块(c),就是因为全网挖出一个强区块(或者攻击者放弃攻击)。

  对于攻击者,我们不能使用近似快-区块来分析。如图.6所示,他的攻击区块持续增长(≥Q ?) 以保证形成最高手续费的子链。由于它的传播时间可能违反公式.(2),每字节的边际孤块风险率必须由公式.(1)计算得出。从而导致攻击者所受到的孤块风险率一直在增加。这个风险率是和全网通过合作创建子链来传播区块面临的孤块风险率成比例的:

  在这种不合作的例子里,孤块风险是随时间呈指数增长的:

  

挖矿需要怎样的网络技术(挖矿 网络)

  

  图.7.假设交易量以恒定的增长率增长,矿工如果通过合作的方式创建子链所面临的孤块风险是恒定速率增长的,但如果矿工不合作创建子链,就要面临指数增长的孤块风险。一个企图发起双花攻击的矿工 需要承担如图所示更高的成本,因为他的区块体积坚持在增长。因为攻击者不是通过合作来创建子链,他就必须以单独的信息来广播他的大的攻击区块。这两条曲线显示了发动攻击的成本。

  如图.7所示的两条曲线。攻击者需要承担的攻击成本是单独挖矿(在他的攻击区块上)的风险减去他和其他矿工合作来创建子链的风险。考虑到攻击者只需要运行全网算力的一部分算力,攻击成本可以 由下面的公式给出:

  

  为了进一步说明,这一次近似快-区块再一次帮忙。攻击者传播他的Δ-区块的总时间是?τ=zQ ?t, 这种情况下公式.(5)里的指数可以使用?τ?T代替。即使攻击区块花1分钟时间来广播(承担不合理的大孤块率),这一指数依然明显小于1。将公式.(4)和(5)代入公式.(6),并且使用t=0 (参见附录A)进行指数展开,无论是常数项还是线性项都消失,只剩下:

  

  公式.(7)里的第一项代表了攻击区块的传播时间在一分钟以内,精度是百分之三。 此公式显示攻击成本是随攻击时间的平方成比例增长。

  如果攻击者走好运,他或者能快速挖到一个弱区块,并且成本很低;如果攻击者不走运,他或许需要花很长时间才能挖到块,并且成本很高。成功攻击的预计成本是考虑攻击时间加权值的成功攻击概率值,P_attack (t), 攻击区块的时间在t 和 t+dt,之间,完整的攻击时间t值为:

  

  为了确定P_attack (t),考虑到挖到一个强区块的分布概率是由指数式〖1/T e〗^(- □(t/T))决定的。挖到弱区块遵行同样的规律,但是新增更容易挖到的子链因子T/ΔT,和更难于被网络攻击的算力比例因子, H/h。因此在弱区块被攻击的分布概率计算中使用如下因子替换T→H/h ?T/T T ,结果是 :

  在附录A中,我将公式.(7)和(9)代入公式.(8)中,最终确定的攻击成本是:

  

  这里的Q_”avg” =Q ?T 是区块的平均大小,Q_”c” ≡z^(-1) T 是全网区块大小的极限(这由需要整整10分钟来传播的区块大小来决定)。6

  表1列举了公式.(10)的计算结果,使用的参数是R= 25 ,全网区块大小最大值是Q_”c” = 35 MB (估计 z= 17 s/MB)。6,9 因为攻击者在挖到一个弱区块之前,全网就可以挖到一个强区块,表格也计算了按标准的泊松分布来计算成功的概率。结果显示如果区块为500kB,确认时间为一分钟,实现一次双花攻击需要攻击者掌握10%的全网算力,攻击交易的手续费为$0.20 (510 μ?); 然而,如果区块大小为8M,相同的双花攻击交易手续费成本就要超过$50 (130,000 μ?)。虽然这样的安全级别依然太低,但其安全性是和比特币的价格成线性关系的。

  

  嵌套子链

  矿工为了合作创建子链就必须在弱目标值上达成共识。乍一看,这似乎是一个意义重大的权衡:目标值太大意味着高孤块率和子链确认时间慢,而低目标值代表了容易受到双花攻击。有一可能的解决方案是使用嵌套子链(nested subchains)(图.8)。(另一个可能的解决方案是使用“幽灵协议”版本(GHOST protocol)。 )

  

  图.8. 子链可以通过嵌套的方式来计算确认时间和安全性之间的权衡。这张图显示了三重Δ-区块的嵌套(图中使用圆圈来代表)。圆圈的直径代表了Δ-区块的确认时间,而面积代表了双花攻击的成本。

  一个嵌套子链是一个子链内含一个子链。当矿工通过计算满足了子链难度成功找到一个区块,那内层的子链就被关闭了,而更内一层的子链又被创建。 在相同层的子链中矿工会优创建手续费更高的子链,但即使是下一层子链的手续费更高,也不会被优先创建。使用嵌套,改进了矿工间的连通性,从而降低了子链的确认时间,而最后限制确认时间达到光速的只有网络延迟了。

  结论

  我们提出了一个叫子链的比特币扩容技术,可以降低大区块的孤块风险,同时提高0确认交易的安全性。子链由一系列弱区块构成,新的弱区块是通过在之前的弱区块上构建一个新的交易层(我们称之为Δ-区块)来创建。矿工广播区块(包括弱区块和强区块)只需要传播Δ-区块和固定字节数的子链头部信息。

  矿工通过合作扩展一条单一的子链,以获取子链的交易手续费最大化,这些手续费会包括在各个矿工挖出来的区块中,并且不会增加孤块风险。有趣的是,子链只会造成非常小的边际成本。虽然这一技术降低了大区块的孤块风险,但并不会降低矿工挖出相同区块的总手续费。 结论是,交易手续费提高了工作量证明的安全发生,而不是被孤块吞噬了。

  新交易通过快速堆叠到子链里原有的交易,可以快速获得安全性,为了推广比特币使用是需要快速确认时间的。双花攻击一个子链内的交易的成本是随确认时间的平方值增长的。子链可以通过嵌套的方式来协调安全性和确认时间之间的权衡。安全性还随着区块增大而更安全,从而让社区有动力推进链上扩容。随着子链的应用和其复杂性的发展,在用户层面上,“区块”和“确认时间”的概念就会消失,或许有一天区块链能实现交易的持续不断,任意新的交易都可以安全并且瞬间添加到之前的交易上面。

  部署子链即不需要硬分叉也不需要软分叉;然而要想让这一技术获得明显的效果是需要全网很大一部分算力加入的。全网范围级别的支持子链可显著增加全网交易容量,也可以改善用户体验,有助于进一步推广比特币。

  附录

  双花攻击中考虑攻击时间的幂级数展开——第8节中的攻击子链的成本分析:

  

  

  

  

作者:Peter R. Rizun

译者:黄世亮

  【 发布文章时价格 买价:¥3906 卖价:¥3907 】(数据来源:Bitfirst比特币交易平台)

阅读
分享