作者:Steven Pu
众所周知,即使对技术人员来说,区块链技术白皮书的信息密度也是相当大的。因此,我们编写了一系列文章,尝试把Taraxa白皮书里的技术术语分解成更便于理解的短文并配上了更多图片,从而提高阅读乐趣。
速度vs. 安全性—你想选择哪一边?
对速度的诉求
随着区块链领域的成熟,比特币和以太坊这样的先驱性网络正在陷入性能上的瓶颈,例如:
吞吐量:网络在一定时限内能够处理的交易数量
延迟性:一笔交易从发送到最终确认需要多长的时间
可扩展性:随着网络规模的扩大(例如,节点数量),网络吞吐量和延迟性的降级程度
吞吐量通常用TPS来衡量
在这三个术语中,或许吞吐量是最能引起读者的兴趣的,那么我们首先来谈谈如何改善这个指标。吞吐量的衡量标准通常是一个网络每秒能够处理的交易数量,或者说TPS。
关于安全性
矿工决定“押注”哪个区块成为最长链
像比特币或以太坊这样的系统都是由包含多组交易的区块组成的单链。网络一次向前推进一个块(在给定的平均时限内),这意味着网络在该时限内可以处理的最大交易数量受到区块容量的限制。
在任何给定时间内,总体而言网络产生的不是一个而是多个区块(这种情况发生的频率取决于特定区块链的具体情况)。在单链系统中,矿工积极选择他们希望接受(下注)的区块,并在这个区块上继续构建新的块。最终,只有最长的链,也就是最大的矿工群体所押注的链能够胜出,而其他链条上的区块则会被丢弃,基本上就等于白做功。
区块链并不是一条链,它更像是一棵树,不断地丢弃一些树枝
因此,尽管区块链被描述成一条「单链」,它实际上更像一棵树,有很多枝条的树。但只有一根树枝能存活下来,剩下的树枝都会被丢弃。
试图欺骗网络的攻击者通常会尝试通过击败网络中其余的用户,构建最长的树枝并将恶意交易插入该分支上的区块中来篡改历史记录。例如,攻击者A向B购买了一些东西并向B发送1个币。B向A提供其购买的商品。然后A攻击网络并创建一个更长的链,在这个链上它将币发送给了C而不是B。在这种情况下,A现在得到了B提供的产品,但B从未收到付款。
许多单链网络通常会采取一种简单方法来改善恶意分支,就是延缓网络进程。这样做降低了攻击者通过更少的资源,利用网络延迟产生的临时信息不对称性来误导诚实的节点押注其恶意分支的可能性。例如,在BTC网络中,他们调整了工作量证明的迷题难度,从而设置了网络的出块间隔,并确保这个延迟远远长于一个区块传播到整个网络中的所有节点所需的时间。
一些单纯的提速方案
为了增加TPS,我们提出了两个单纯的解决方案:增加区块可以容纳的交易数量或增加在同一时间段内能够处理的块数。让我们来看看这两个方案的结果。
方案1:更多区块
区块数量的增加能够提高吞吐量吗?
如果同一时段内能够处理的区块数量增加了会怎样?举个例子,假设在每一段时间内平均处理的区块从1块增加到了10快。
请记住,我们仍然只能在每个时间段内选择一个区块。如果你只是简单地增加区块的总数,这意味着每个矿工现在会有更多的选择,但他们仍然只需要选择一个区块,这意味着当有了更多的区块选择,被弃置的区块也会更多。
理所当然地,在同一时段内存在更多的区块选择也会带来更多的「树枝」,让攻击者可以更轻松地利用网络。
这不是一个理想的解决方案。让我们看看下一个。
方案2:更大的区块容量
容量更大的区块能够提高吞吐量吗?
如果我们能够拥有容量大得多的区块链会怎样?举个例子,假设我们现在可以在一个区块中输入20,000笔交易,而不是2,000笔,也就是说我们在同一时间段内能够存储的交易比以前多了很多。
当区块容量变得更大,由于其规模,区块在整个网络中传播的速度就会慢很多。在既定的时间范围内,不同节点在任一时刻看到不同区块的可能性又被提高了。
同样地,这个计划也会产生更多的「树枝」,降低网络的整体安全性。
吞吐量和安全性的艰难权衡
《在比特币网络中确保交易处理速度的高效性》,Sompolinsky和Zohar
在单链网络中,吞吐量和安全性之间似乎始终难以平衡。如果你提高了吞吐量,最终就不得不牺牲安全性,而当你在尝试弥补这些安全漏洞时,最终又会抹杀在吞吐量方面取得的增长。Sompolinsky和Zohar首先在他们的论文中对这种权衡进行了调查,他们的研究也启发了Taraxa的账本设计。
这种困境应该如何解决?我们的选择是从单链拓扑转变为DAG拓扑,具体内容将在下一篇文章中讨论。