摘要
分布式加密协议,如比特币和以太坊,使用一种被称为区块链的数据结构,在其网络中的节点之间同步全局事件日志。块是对日志进行批量更新的块,引用它们正在扩展的父块,从而形成链的结构。先前的研究表明,区块链和区块传播的机制是受约束的:如果区块的创建速度比它们在网络中的传播时间要快,就会产生许多冲突的区块,性能会受到很大影响。由于需要较低的块创建速率来保持系统在安全参数内,交易需要很长时间来安全确认,并且它们的吞吐量受到极大的限制。
我们提出了另一种结构的链,允许以高得多的速率操作。我们的结构由块的有向无环图(块DAG)组成。创建DAG结构的方法是允许块引用多个前趋,并允许更多“宽容”的事务接受规则,这些规则甚至包括看似冲突的块中的事务。因此,系统可以容忍需要更长时间传播的更大的块,并且可以增加事务量。
我们提出了另一种结构的链,允许以高得多的速率操作。我们的结构由块的有向无环图(块DAG)组成。创建DAG结构的方法是允许块引用多个前趋,并允许更多“宽容”的事务接受规则,这些规则甚至包括看似冲突的块中的事务。因此,系统可以容忍需要更长时间传播的更大的块,并且可以增加事务量。
区块链协议的另一个不足之处是,它们倾向于连接更多的节点,这些节点更快地分布它们的块——它们的块冲突更少。我们表明,通过我们的系统,这种高度连接的矿工的优势大大减少。从负面来看,试图恶意撤销交易的攻击者可以尝试使用DAG结构的宽容特性来降低他们的攻击成本。我们对该协议进行了安全性分析,并表明这种企图可以很容易地被反击。
引言
比特币是一个去中心化的数字货币系统,它的核心是一个分布式数据结构,称为区块链——一个包含所有使用该货币进行的交易的日志。其他几个分布式系统,如通用分布式应用平台以太坊,已经扩展了比特币的功能,但仍然依赖于类似的区块链在节点之间同步信息。
随着比特币、以太坊等获得更广泛的接受,预计在其区块中包含更多数据的压力也将增加。由于带宽限制,较大的块通过网络传播的效率较低,如果包含太多事务,可能会导致性能不佳。这主要是由于不同节点不协调地创建块,从而导致冲突。当前协议规定,当冲突发生时,只使用一个块,其他的都被丢弃。
本文探讨了形成区块链的另一种机制,当块大小较大或经常创建块时,这种机制更适合于此类协议。我们的修改允许包含来自冲突块的事务。因此,我们可以激励节点尝试并包含不同的事务,从而提高吞吐量。
随着比特币、以太坊等获得更广泛的接受,预计在其区块中包含更多数据的压力也将增加。由于带宽限制,较大的块通过网络传播的效率较低,如果包含太多事务,可能会导致性能不佳。这主要是由于不同节点不协调地创建块,从而导致冲突。当前协议规定,当冲突发生时,只使用一个块,其他的都被丢弃。
本文探讨了形成区块链的另一种机制,当块大小较大或经常创建块时,这种机制更适合于此类协议。我们的修改允许包含来自冲突块的事务。因此,我们可以激励节点尝试并包含不同的事务,从而提高吞吐量。
冲突和区块链的结构。每个协议中的区块链被复制到每个节点,并帮助节点对所有“账户”的状态达成共识。组成链的块包含链中前一个块的标识符(加密散列),以及一组根据它们所扩展的链所代表的分类账状态一致的事务。为了避免对交易的审批产生垄断,所有节点都有创建区块的能力。要创建一个块,节点(也称为矿工)必须解决一个计算密集型的工作证明问题(工作计算的证明基本上包括猜测密码哈希函数的输入,它只在概率上成功)。一旦创建了一个块,它就被分发到网络的其他部分。块可能由不同的节点在大约同一时间创建,因此可能扩展相同的父块。这样的区块可能包括不同的交易子集,有些可能是冲突的(冲突的交易是指将相同的资金转移到不同的目的地——它们不允许同时发生)。因此,协议包含了一种选择哪个区块存活以扩展链的机制,而其他冲突的区块则被有效地忽略。比特币使用的机制是这样的:给定当前链的几个扩展,选择最长的链作为采用的版本。另一方面,以太坊使用不同的选择策略,它是GHOST的变体(不熟悉基本比特币协议的读者参阅[9])。
恶意节点可以利用链选择规则来逆转支付,这种攻击被称为双重花费。攻击者可以尝试建立一个不包含交易的秘密区块链,然后如果它的链足够长,就替换主链,从而逆转支付。
之前的研究[6,12]表明,随着区块大小的增加(或区块创建速率的增加),会创建更多陈旧的(脱链)区块。这又会导致几个问题:首先,协议抵御恶意攻击的安全性受到影响。第二,区块大小的增加并不会转化为吞吐量的线性增加(因为脱链区块的内容不包括在分类账中)。最后,区块冲突的情况下,较小的连接较少的矿工处于不利地位:他们赚得比他们各自的奖励份额少,并可能由于与较大的矿工竞争而慢慢被挤出系统,这一事实危及比特币的去中心化。
上述问题构成了区块链协议可扩展性的障碍。如果不增加区块大小,试图进入区块链的交易之间的竞争将会把费用提高到很高的水平,从而阻碍协议的使用。
事实上,以太坊采用的链选择协议是专门设计来提供更强的安全保证,正是在这些高吞吐量设置,但其他问题,如在高速率下倾斜的奖励分配,或由于排除区块造成的吞吐量损失,并没有得到改善。我们建议的修改旨在提供额外的改进,并与GHOST(其变体由以太坊使用)、标准最长链协议,以及事实上,任何选择“主”链的协议都可以很好地工作。
区块DAG和包含协议。我们建议将区块链重构为有向无环图(DAG)结构,允许所有区块的交易都包含在日志中。我们使用一个“包含”规则来实现这一点,该规则从DAG中选择一个主链,然后有选择地将脱链区块的内容合并到日志中,前提是它们与之前包含的内容不冲突。包容性协议的一个重要方面是,它将已接受交易的费用奖励给包含这些交易的区块的创建者——即使该区块本身不是主链的一部分。只有在交易之前没有被包含在链中的情况下,这种支付才会被授予,如果区块发布太慢,这种支付就会减少。
对这种策略的分析远非简单。我们采用了几种游戏理论工具,并考虑了几种解决方案概念,对节点做出了不同的假设(它们是利润最大化者、合作者、贪婪短视者,甚至是偏执狂,并采取安全级策略)。在所有的解决方案概念中,都出现了一个明显的趋势:节点根据概率来最小化冲突,而不是只选择适合其块的最高费用的事务。
我们的建议的一个潜在的负面影响是,试图重复花费的攻击者可能会发布在失败的尝试中生成的块,并且仍然对这些块收费。我们表明,这种策略降低了双重花费攻击的成本,可以通过稍微延长最终交易批准的等待时间来轻松缓解,因为攻击者的成本随着等待时间的增加而显著增加。2我们另外考虑一种新的攻击场景(以前的工作中没有分析过),其中攻击者在链中创建一个公共分支,以便延迟节点对事务的接受。
由于协议产生许多冲突区块,另一个问题是自私开采的问题,其中矿工偏离了比特币提出的增加收益的策略。包容性的协议仍然容易受到这种形式的偏差,并没有解决这个问题。
我们的建议的一个潜在的负面影响是,试图重复花费的攻击者可能会发布在失败的尝试中生成的块,并且仍然对这些块收费。我们表明,这种策略降低了双重花费攻击的成本,可以通过稍微延长最终交易批准的等待时间来轻松缓解,因为攻击者的成本随着等待时间的增加而显著增加。2我们另外考虑一种新的攻击场景(以前的工作中没有分析过),其中攻击者在链中创建一个公共分支,以便延迟节点对事务的接受。
由于协议产生许多冲突区块,另一个问题是自私开采的问题,其中矿工偏离了比特币提出的增加收益的策略。包容性的协议仍然容易受到这种形式的偏差,并没有解决这个问题。
总而言之,我们的主要贡献是:
1. 我们利用块图的有向非循环结构,其中块引用几个前趋,以将来自所有块的内容合并到日志中(过去已经提出了类似的结构,但是不包括链外块的内容)。
2. 我们提供了一个新协议下节点间费用竞争的博弈模型。
3. 我们分析了几个博弈论解决方案概念和假设下的博弈,并表明在每种情况下,节点从更广泛的交易中随机选择交易。这是提高协议性能的关键。
4. 我们证明了包容性协议获得了更高的吞吐量,更大比例的结果,更少地歧视较小的、联系较少的参与者,并且与非包容性协议相比,它们在安全性方面受到的影响很小。
我们既考虑了防止重复消费企图的安全性,也考虑了试图在网络中延迟交易接受的攻击者。
2. 我们提供了一个新协议下节点间费用竞争的博弈模型。
3. 我们分析了几个博弈论解决方案概念和假设下的博弈,并表明在每种情况下,节点从更广泛的交易中随机选择交易。这是提高协议性能的关键。
4. 我们证明了包容性协议获得了更高的吞吐量,更大比例的结果,更少地歧视较小的、联系较少的参与者,并且与非包容性协议相比,它们在安全性方面受到的影响很小。
我们既考虑了防止重复消费企图的安全性,也考虑了试图在网络中延迟交易接受的攻击者。
从树到有向无环图(DAGs)
我们现在开始描述我们提出的对协议的修改。我们首先对模块进行结构上的改变,这将允许进一步的修改。在当前的比特币协议中,每个块都指向单个父节点(通过父节点的哈希),并且由于网络中的自然(或恶意)分叉,这些块形成了一棵树。
相反,我们建议创建块的节点列出它知道的所有子块。当然,这些附加的信息不会有什么坏处;跟踪每个引用并查看哪个引用导致最长的链是很简单的。因此,我们得到了一个有向无环图(DAG),其中每个块都引用了前面块的子集。我们假设当块C引用B时,C的创建者知道B的所有前任(它可以请求它们)。可以从块的引用列表中提取的信息足以模拟潜在的链选择规则:例如,我们可以遵循最长链规则,通过在每个块中递归选择单个链接——通向最长链的链接。
提供这些额外的信息相当于一种“直接揭示机制”:我们不是指示节点选择它们延伸的链,而是简单地要求它们报告所有可能的选择,其他节点可以模拟它们的选择,就像它们已经做出的选择一样(术语“直接揭示”是从经济学中借用的,在机制设计中广泛使用)。
事实上,任何链选择协议都可以以这种方式应用,因为引用提供了确定块创建者在扩展链时将做出的选择所需的所有信息。唯一需要处理的问题是平局决胜(在等长冲突链的情况下)。为此,我们要求节点以某种顺序列出对其他块的引用,然后用这种顺序来打破束缚。请注意,节点只需要列出DAG中的无子节点;不需要列出其他节点,因为只要按下链接就可以访问它们。
形式上,我们用BDAG表示所有有向无环块图,带有顶点和有向边E的集合,其中每个对其所有出方向边都有一个额外的顺序。在我们的设置中,一条边从一个块到它的父块,因此,无子顶点(“叶”)是那些没有传入边的顶点。BDAG中的图要求具有唯一的最大顶点,即“起源块”。我们进一步用表示包含从B可达的G中的所有块的子图。
相反,我们建议创建块的节点列出它知道的所有子块。当然,这些附加的信息不会有什么坏处;跟踪每个引用并查看哪个引用导致最长的链是很简单的。因此,我们得到了一个有向无环图(DAG),其中每个块都引用了前面块的子集。我们假设当块C引用B时,C的创建者知道B的所有前任(它可以请求它们)。可以从块的引用列表中提取的信息足以模拟潜在的链选择规则:例如,我们可以遵循最长链规则,通过在每个块中递归选择单个链接——通向最长链的链接。
提供这些额外的信息相当于一种“直接揭示机制”:我们不是指示节点选择它们延伸的链,而是简单地要求它们报告所有可能的选择,其他节点可以模拟它们的选择,就像它们已经做出的选择一样(术语“直接揭示”是从经济学中借用的,在机制设计中广泛使用)。
事实上,任何链选择协议都可以以这种方式应用,因为引用提供了确定块创建者在扩展链时将做出的选择所需的所有信息。唯一需要处理的问题是平局决胜(在等长冲突链的情况下)。为此,我们要求节点以某种顺序列出对其他块的引用,然后用这种顺序来打破束缚。请注意,节点只需要列出DAG中的无子节点;不需要列出其他节点,因为只要按下链接就可以访问它们。
形式上,我们用BDAG表示所有有向无环块图,带有顶点和有向边E的集合,其中每个对其所有出方向边都有一个额外的顺序。在我们的设置中,一条边从一个块到它的父块,因此,无子顶点(“叶”)是那些没有传入边的顶点。BDAG中的图要求具有唯一的最大顶点,即“起源块”。我们进一步用表示包含从B可达的G中的所有块的子图。
一个潜在的链选择规则F被用来决定DAG中的主链(例如,最长的链或GHOST)。规则F是从区块DAG到区块链的映射,对于任何,F(G)是G中的一个极大(即不可扩展)链。假设的顺序与F一致,在这种意义上,如果A是B的父节点之一,且,那么A在的顺序中是第一位的。
利用DAG结构——包含协议
我们定义了包容性F,即链选择规则F的“包容性”版本,它将不冲突的链下交易合并到给定的区块接受交易集。直观地说,块B对块DAG使用一个后顺序遍历,从而在所有块上形成一个线性顺序。如果出现了两个冲突的事务,则根据此顺序较早出现的事务被认为是已经发生的事务(考虑到它所依赖的所有先前的事务也已经发生)。因此,我们使用块提供的链接上的订单来定义块上的订单,然后我们使用这些订单来订购出现在这些块上的交易,最后,我们根据这个订单来确认交易。
为了使Inclusive算法形式化,我们需要提供一种方法来精确地确定接受的事务集。比特币交易由输入(资金来源)和输出(资金目标)两部分组成。产出反过来又被进一步改变资金方向的投入所消耗。我们定义事务集的一致性,其最大性如下:
定义1。给定一组事务T,如果一个事务的所有输入都是T中事务的输出,且T中没有其他事务将其作为输入,则该事务的tx与T是一致的。我们说T是一致的,如果每个交易与T \ {tx}是一致的。
定义2。如果从一个块DAG G中没有其他一致的事务集T'包含T,则我们说从一个块DAG G中产生的一致事务集T是最大的。
下面的算法对DAG 进行后序遍历。在运行过程中,它会确认任何与目前已接受的事务一致的事务。如果两次访问同一个块,则返回遍历。
调用算法时,参数,所有区块初始设置为False。它的输出是它批准的一组事务。
算法1。
输入:一个DAG G,一个块B,带有指向前一个的指针(根据排序),和一组先前确认的交易T。
- IF visited(B) RETURN T
- SET visited(B):=True
- FOR i = 1 TO m:
- T = Inclusive-F(G,Bi, T)
- FOR EACH tx ∈ B
- IF (tx is consistent with T) THEN T = T ∪ {tx}
- RETURN T
命题1。设T为返回的集合。那么T在中既一致又极大。
证明是直接来源于算法。
该协议的一个重要属性是,一旦一笔交易被G的某个主链区块B批准,只要B还在G的主链中,它就仍然在G的任何扩展区块的批准集合中。这是因为由主链块确认的交易首先会被包含在未来主链块的可接受交易集中。由于在最长链和深埋在主链中的GHOST区块中,被替换的可能性越来越小,所以包含在它们的Inclusive版本中的事务拥有相同的安全保证。
费用和回报。每一笔交易都会奖励给第一个区块的创建者一笔费用,该区块包含在集合t中。形式上,设A是中的某个区块。根据订单,用T(A)表示区块A最先包含的一组交易。然后(根据B的世界观)A的创造者将从每一个中获得一小部分费用。虽然我们天真地想把T(A)的所有费用都给A,但安全目标并不总是允许这样做。这是协议中主要的权衡之一:一方面,我们希望向任何包含新交易的人支付费用。这意味着,网络不发达、发布区块速度较慢的矿工仍将获得奖励。另一方面,脱链区块也可能是恶意行为的结果,包括双花费攻击失败后发布的区块。在这种情况下,我们宁愿不收到报酬。因此,我们允许一个稍微宽容的支付机制,授予区块A一小部分奖励,这取决于区块被主链引用的速度。接下来的分析(在第3节)将证明降低薪酬的必要性。
该协议的一个重要属性是,一旦一笔交易被G的某个主链区块B批准,只要B还在G的主链中,它就仍然在G的任何扩展区块的批准集合中。这是因为由主链块确认的交易首先会被包含在未来主链块的可接受交易集中。由于在最长链和深埋在主链中的GHOST区块中,被替换的可能性越来越小,所以包含在它们的Inclusive版本中的事务拥有相同的安全保证。
费用和回报。每一笔交易都会奖励给第一个区块的创建者一笔费用,该区块包含在集合t中。形式上,设A是中的某个区块。根据订单,用T(A)表示区块A最先包含的一组交易。然后(根据B的世界观)A的创造者将从每一个中获得一小部分费用。虽然我们天真地想把T(A)的所有费用都给A,但安全目标并不总是允许这样做。这是协议中主要的权衡之一:一方面,我们希望向任何包含新交易的人支付费用。这意味着,网络不发达、发布区块速度较慢的矿工仍将获得奖励。另一方面,脱链区块也可能是恶意行为的结果,包括双花费攻击失败后发布的区块。在这种情况下,我们宁愿不收到报酬。因此,我们允许一个稍微宽容的支付机制,授予区块A一小部分奖励,这取决于区块被主链引用的速度。接下来的分析(在第3节)将证明降低薪酬的必要性。
形式上,对于任何区块,通过pre(A)定义从A可达的最新主链区块,通过post(A)定义从A可达的最早主链区块;如果不存在,则视(A)桩为高度为无穷大的“虚拟块”;如果A在主链中,则;是一个区块发布延迟的度量(相对于主链)。
为了根据块的间隙参数对其进行惩罚,我们使用了一个通用的折扣函数,记作γ,它满足:,它是弱递减的,且。区块A(创建者)的支付定义为:,其中是交易费用。换句话说,A只获得其原始报酬的一小部分。为说明问题,考虑以下折扣函数:
例1:
对与主链充分同步的区块给予全额奖励(对于的区块,),而对于长时间未被主链“看不见”的区块,则不给予任何奖励(对于的区块,);在中间区间,一个区块被给予一些交易奖励(对于的区块,)。
货币创造。除了费用,比特币和其他加密货币使用区块创建过程来创建和分发新货币。新铸造的货币也可以以类似于交易费用的方式奖励给链下区块,也就是说,对于没有迅速被纳入主链的区块,金额会减少。因此,区块的奖励可以设置为链上全部奖励的由于我们主要关注的是在区块中包含的交易的选择,为了简单起见,我们假设从这一点开始,没有货币创造发生(也就是说,货币创造已经衰减到微不足道的数量——就像比特币最终会发生的那样)。
既然我们已经定义了Inclusive协议,我们开始分析它的含义。
安全性
Satoshi的原始安全性分析以及其他人的分析都考虑了常规非包容性方案下双花费攻击成功的概率。另一种分析方法可以衡量攻击的成本,而不是它们的成功概率(这两种方法都在[11]中进行了分析)。
下面我们证明,就攻击成功的概率而言,包容性版本的协议至少与非包容性版本的协议一样安全。此外,我们证明了通过适当地修改接受策略,在包容性条件下攻击的代价可以很高。
下面我们证明,就攻击成功的概率而言,包容性版本的协议至少与非包容性版本的协议一样安全。此外,我们证明了通过适当地修改接受策略,在包容性条件下攻击的代价可以很高。
接受政策
给定交易的接收方观察网络发布的区块,需要决定何时考虑“接受”支付,即何时释放交易支付的商品或服务是安全的。他通过确保自己的交易被主链包含并确认,并计算该交易后来被从主链中排除的概率来做到这一点。
攻击成功的概率。现在,我们将常规最长链协议下的成功攻击概率与其包容性版本下的成功攻击概率进行比较。我们的方法也适用于其他主链规则(如GHOST)。回想一下,在包含式(Inclusive)下,这些块形成一个DAG,而当不实现包含式(Inclusive)时,它们形成一棵树(参见第2节)。注意,如果G(t)是t时刻的块DAG,那么如果网络遵循非包含式设置,它的块树T(t)将是G(t)的子图,它是通过删除块引用列表中除主要边(即每个块中的第一个指针)之外的所有边而得到的。对于任何DAG G,根据基本的选择规则F(G也可以是树),让F(G)成为它的主链。
定理2。设G(t)是时刻t的块DAG,设T(t)是由G(t)丢弃非主边得到的块树。对于任意区块,
证明。这直接来自于包容性并不改变主链选择的方式,因此,对于所有的。
作为必然结果,在包容性协议下,一笔交易被排除在主链之外的概率不会变高,因为主链区块的安全保证同样适用于单个交易(参见算法1后面的讨论)。特别是,当实施包容性协议时,资金接收方在遵循非包容性协议(参见,例如[9,11,12])的网络中所采用的任何接受政策都可以安全执行。
成本的攻击。正如本节开头提到的,人们可能更感兴趣的是测量双重花费攻击的成本,而不是它的成功概率。包括来自链下区块的交易的一个潜在缺点是,它减轻了失败的双重花费攻击的成本。双花费攻击通常由攻击者构造的链组成,这些链最初是保密的。块的构造需要计算资源。在非包容性设置下,当攻击者退出攻击时(通常是在构建块的速度低于网络之后),它的块将被丢弃。相反,在包容性协议下,攻击者仍然可以发布其秘密链,并从其中包含的事务中获得一些价值。
然而,资金接收方可以通过等待更长的时间来取消这一影响。事实上,如果攻击者被迫创建较长的秘密链,它的区块会因为函数隐含的较低奖励而遭受一些损失。
为了使其形式化,我们首先提供一些定义和符号。用G(t)表示t时刻发布的开发区块DAG,并假定某主链区块确认交易tx(即)。设是可达的块的集合,用表示顶部的主链(包括自己)。设是满足的块的集合;这些区块可以被攻击者用来逆转事务(即使攻击者不一定创建所有的区块),并且对他们的区块的要求是在之前以G的顺序(不影响未来冲突的解决)从这组区块中排除。
在包容性奖励方案下,用val表示块的预期奖励。在均衡状态下,Val等于创建一个区块的预期成本。我们将通过假设val是常数来简化分析。最后,为了方便起见,我们分析了潜在的链选择规则(F)为GHOST的情况;经过一些小的改变,结果也适用于最长链规则。
引理3。假设攻击者拥有最多q的计算能力的一小部分。如果,,攻击者已经创建了k个秘密块,则攻击失败的代价满足。
证明。对于攻击者来说,最好的情况是,它的区块形成了一个顶部的链。如果是它的第h块(),那么,否则必须引用中的一个块作为它的主要父块(回想一下,块的有序引用列表被迫同意F),特别是它支持tx,不参与攻击。
另外,攻击者的秘密块在接受之前不会发布,因此他们的块高度至少为。我们得出上的折扣参数最多:,
因此其代价至少为。改变参数后,我们得到(3)。
我们现在利用这个结果来表明,遵循[12]中引入的接受策略的收款人可以通过在接受前充分等待,使攻击成本任意高。
推论4。假设tx是G(t)中的一笔交易,并假设攻击者构建了一个不确认tx的秘密链,只要收款人没有批准该交易,攻击就会持续下去。那么,使攻击在预期中有利可图所需的双花费的最小值随t指数增长。
证明。设, , 。具有分数的计算能力已经成功创建k个秘密块最多是,其中是它开始攻击的时间。按照GHOST的动态,收款人可以等待崩溃发生,即被包含在所有诚实节点的主链中。因此,攻击成功的概率上限为。这里我们使用了一个最坏情况的假设,根据这个假设,攻击者能够利用A(t)中的所有块进行攻击。
在成功攻击的情况下,攻击者可以获得双倍花费的利润,我们将其表示为DS,而其区块的利润将被它们的创建成本抵消。另一方面,攻击失败的代价由(3)给出。通过计算攻击代价,我们得到:
对于给定的时间t,网络会在DAGs上产生一个概率分布。这就引出了N=N(t), n=n(t)和m=m(t)的随机变量。随着t的增长,它们变得任意接近它们的期望值(根据大数定律)。因此,我们可以用它的期望替换N,并注意到E[n]随时间增长,E[m]接近一个常数。隔离DS表明它的最小值为了E[attack-cost]是非正的与t呈指数增长(假设γ是非平凡的,即)。
为了说明攻击成本的增长,我们在表1中显示了使攻击在预期中有利可图所需的最小双花费。表项承认使攻击有利可图的最小DS;这里我们固定N,并平均除以t(与之前的推论相反)。此外,为了简单起见,我们假设m=0和n=N,对应于诚实网络不遭受延迟的情况。选取惩罚函数作为例1中的惩罚函数,将块的期望奖励归一化,使val=1。注意,只等待一个或两个区块是完全不安全的,因为攻击者可以很容易地尝试在我们选择的函数下创建更长的链。
表1。为了使攻击在预期中获得收益所需要的最小双花费(由区块的期望奖励,val规范化),作为确认次数和攻击者计算能力的函数。
上面的结果不是很令人满意,因为它们只展示了来自特定类的攻击的成本:我们假设攻击者在收款人接受之前不会退出。可以考虑更复杂的攻击策略,其中攻击者可以更早地退出以降低成本。这里的主要障碍是存在自私的挖掘策略,在这种策略中,即使在非包容性设置[7]下,矿工也可以从扣扣他的一些区块中获利。我们指出,恶意挖掘者可以在使用自私挖掘策略的同时执行双花费攻击,从而保证自己获得预期的正收益。虽然Inclusive协议降低了失败攻击的成本,但我们推测适当的接受策略可以消除这种影响(正如我们在一个攻击概要的推论4中所示)。
延迟服务攻击
另一种可能的攻击形式是延迟服务。上面描述的接受策略意味着,如果支付的接收者在DAG中观察到许多区块,这些区块有可能形成一个竞争的主链,而这些主链不会接受他的交易,它必须延迟接受。因此,攻击者可能会决定故意去链下创建自己的区块,试图增加网络中交易授权的等待时间。
请注意,攻击者永远不能从延迟的服务攻击中获利,比如通过逆转之前的支付,因为它的攻击块会立即发布,因此对任何交易授权者都是透明的。此外,攻击持续的时间越长,代价也越大,因为参与区块的和之间的差距越来越大。
假设攻击者希望延迟对位于某个区块B中的交易的确认,可以通过增加|A(t)|=m来实现,即发布B不可达的区块。尽管有来自A(t)的威胁,诚实的网络可能会给H(t)添加足够的区块,让这些交易被接受。
请注意,攻击者永远不能从延迟的服务攻击中获利,比如通过逆转之前的支付,因为它的攻击块会立即发布,因此对任何交易授权者都是透明的。此外,攻击持续的时间越长,代价也越大,因为参与区块的和之间的差距越来越大。
假设攻击者希望延迟对位于某个区块B中的交易的确认,可以通过增加|A(t)|=m来实现,即发布B不可达的区块。尽管有来自A(t)的威胁,诚实的网络可能会给H(t)添加足够的区块,让这些交易被接受。
我们在一个拥有100个相同矿工的网络上模拟了这种攻击,每个矿工之间的延迟为2秒,创建速度为每秒1个区块。图1描述了攻击者所需的计算能力(占比),作为其目标诱导的等待时间增加的函数。假设收款人使用(4)诱导的政策,q=0.2,DS最多1000·val。
图1所示。攻击者需要保持的计算能力的百分比,作为其目标诱导的等待时间增加的函数。
包含协议下的事务选择
到目前为止,我们还没有考虑包容协议对参与者如何选择他们将在区块中包含的交易的影响。事实上,这些选择非常重要:如果所有节点都选择将相同的事务子集包含在它们的块中,那么并行创建的任何两个块都可能有许多冲突,吞吐量将不会很高。
在本节中,我们将交易选择建模为一种游戏,并表明节点实际上受到了避免冲突的激励。他们会选择费用高的交易,但也会选择碰撞较少的交易,以降低费用。
在本节中,我们将交易选择建模为一种游戏,并表明节点实际上受到了避免冲突的激励。他们会选择费用高的交易,但也会选择碰撞较少的交易,以降低费用。
博弈模型
我们将区块中嵌入交易的过程建模为一个无限延伸的游戏,有N个参与者(矿工),信息不完全,也就是说,参与者可能只部分知道其他参与者的移动(因为他们不能立即看到所有已经创建的区块;这是游戏的重要元素)。游戏以离散的时间步骤t=(1,2,…)进行开发,连续步骤之间的差距表示为Δ(其中Δ很小)。
我们用(或者简单地说)表示一笔交易,并且忽略除费用以外的任何属性,费用被假定为属于n个离散值中的一个,即(例如,比特币的费用以比特币的整个单位为单位)。我们用v(w)表示w的费用。
每次步骤“自然”都会在所有玩家的内存缓冲区(也称为内存池)中同时添加相同的事务。新事务数是一个独立的随机变量,均值为,对。对于某个概率向量r,每次新交易的费用为,概率为rl。如果某个玩家的内存缓冲区的大小超过了其限制,手续费最低的交易被取消。实际上,这意味着自然界在每一个时间步的作用空间是有限的,并且可以映射到。《Nature》还选择了一个(可能是空的)玩家子集,这将在这个时间步骤中创建一个区块。玩家i在某一步创建区块的概率是,其中是网络的区块创建速率。
玩家i只观察到自然行为的部分信号。他看到所有的新交易,以及他是否被选中创建一个区块。如果是这样,他选择一个大小不超过b的内存缓冲区子集,其中b是一个正整数常数,表示每个块的事务数。对于某个N × N整数矩阵(有效地从i和j的内存缓冲区中删除它们),选择的事务将立即从i的操作空间中删除,并在时间步后从玩家j的操作空间中删除。这模拟了块传播中的延迟。
我们特别感兴趣的情况是,事务的传入速率超过了它们被接收到块中的速率(如果没有这个假设,就没有可伸缩性问题,块大小可以减少)。
参与人可以选择使用混合策略,即从他的缓冲区中选择大小为b的子集的分布。与其在这些子集的可能指数上使用分布,不如更方便地为缓冲区中的每个单独事务分配一个概率(在0到1之间),这样概率之和为b。这个方案可以转换为子集上的概率(我们在本文的完整版本中展示了这一点)。我们采用后一种方法,因为它简单。
支付函数。用T(B)表示区块B最先包含的事务集,根据算法1运行诱导的block顺序,记为“≺”。然后B的创造者得到的一部分,由定义。
参与人可以选择使用混合策略,即从他的缓冲区中选择大小为b的子集的分布。与其在这些子集的可能指数上使用分布,不如更方便地为缓冲区中的每个单独事务分配一个概率(在0到1之间),这样概率之和为b。这个方案可以转换为子集上的概率(我们在本文的完整版本中展示了这一点)。我们采用后一种方法,因为它简单。
支付函数。用T(B)表示区块B最先包含的事务集,根据算法1运行诱导的block顺序,记为“≺”。然后B的创造者得到的一部分,由定义。
最后,就像在无限视界游戏中通常所习惯的那样,折扣因子适用于所有奖励,例如,如果玩家创造了在时间步,他从游戏中获得的奖励是。
包容性f博弈中的理性
最符合我们的场景(玩家拥有关于其他人最近行动的部分信息)的解决方案概念是由Kreps和Wilson提出的顺序均衡。这一概念明确地考虑了玩家对于游戏历史和当前状态的信念。直觉上,顺序均衡的概念确保了单个参与者不期望从偏离中获益(给定这些信念)。此外,威胁是“可信的”,行为在时间上是一致的(这类似于子游戏的完美)。最后,玩家对游戏状态的看法必须是“一致的”。
我们将[5]的结果扩展到无限视界设置,并显示存在,对于所有,在我们的博弈中完美顺序均衡(在这个博弈中,偏离的玩家可能获得收益,但不超过)。
引理5。对于每一个,包容F对策中都有一个完美序列均衡。
我们在本文的完整版中证明了这一点。
请注意,可能(并且确实)存在几个均衡,更糟糕的是,虽然存在的证明是建设性的,但它需要探索一个指数级大的状态空间(本质上是枚举未来将进入缓冲区的所有可能的交易子集)。因此,我们希望一个有效的算法,将在实践中表现良好。
请注意,可能(并且确实)存在几个均衡,更糟糕的是,虽然存在的证明是建设性的,但它需要探索一个指数级大的状态空间(本质上是枚举未来将进入缓冲区的所有可能的交易子集)。因此,我们希望一个有效的算法,将在实践中表现良好。
近视的策略
我们将在这一小节中讨论游戏的简化版本,即单次射击游戏。在这个设置中,当玩家为他当前的区块选择交易时,他忽略了这个选择对他下一个区块的交易可能产生的影响。此外,我们假设所有玩家都有相同的交易缓冲区可供选择。最后,我们假设一个块在块DAG中的位置不依赖于它的创建者的身份。
这个简化的模型可以被看作是一个充分分布的网络的一个很好的近似,在这个网络中,单个参与者只拥有总计算能力的一小部分。小玩家不经常创造方块,因此他当前的方块对他未来的奖励影响很小。
一个近视的平衡。对于任何块B,让pconf(B)以“≺”的顺序表示在B之前的块的集合,但不能从它到达。假设所有参与者在他们的区块中包含交易w(如果区块确实创建),边际概率为;那么B选择w的期望奖励为。我们定义,。
我们可以验证是玩家将w嵌入B中的预期奖励。注意,f在中严格递减,因此它的逆存在。
定理6。假设内存缓冲区由费用为的事务组成。用表示每笔交易,它们按照费用降序排列。用表示的指数。边际概率定义了单发包容-f博弈的对称均衡,其中:
- 是的根。
证明被推迟到本文的完整版本。在第5节中,我们展示了这种策略在吞吐量和效用方面表现良好,尽管使用简化的假设来推导它。
除了上面的分析,我们还探索了其他的解决方案概念,即最大化社会福利的安全水平策略和合作策略。在所有情况下,玩家都会使用随机策略为他们的区块选择交易,从而提高吞吐量。
除了上面的分析,我们还探索了其他的解决方案概念,即最大化社会福利的安全水平策略和合作策略。在所有情况下,玩家都会使用随机策略为他们的区块选择交易,从而提高吞吐量。
包容性协议的影响
吞吐量
当实现包容性协议时,系统的吞吐量取决于参与者的行为。我们展示了当玩家根据上述定义的短视策略行动时,通过检查吞吐量,包容性实现显著更高结果的能力。
我们模拟了一个有100个相同玩家的网络。每对玩家之间的距离是恒定的d = 1秒。我们研究了不同的块创建速率λ从0到10块/秒的变化。块大小设置为每个块b=50个事务。交易到达率为每秒65笔交易,其费用统一从[0,1]中抽取。在每个模拟中,我们比较了近视策略和非包容性结果的表现。我们将产生的吞吐量与在没有延迟的集中式网络中实现的最优可达速率进行比较。图2描述了结果,显示了相对于非包容性协议的显著改进。
我们模拟了一个有100个相同玩家的网络。每对玩家之间的距离是恒定的d = 1秒。我们研究了不同的块创建速率λ从0到10块/秒的变化。块大小设置为每个块b=50个事务。交易到达率为每秒65笔交易,其费用统一从[0,1]中抽取。在每个模拟中,我们比较了近视策略和非包容性结果的表现。我们将产生的吞吐量与在没有延迟的集中式网络中实现的最优可达速率进行比较。图2描述了结果,显示了相对于非包容性协议的显著改进。
图2所示。在包含式和非包含式最长链协议中实现的最优吞吐量的百分比。
公平
虽然具有计算能力qλ的矿工在区块DAG中(预期)拥有一小部分q块,但与连接不佳的矿工相比,高连接的矿工在主链中拥有更多的块。这种现象降低了弱玩家的盈利能力,因为他们无法与大玩家获得的投资回报相匹敌,并慢慢推动比特币向越来越集中的挖矿力量发展。给定两个具有相同连通性但散列率不同的矿工,其中较大的矿工也享有优势,因为他立即开始使用比较弱的对手更多的计算能力来扩展自己的块。
包容性协议显著减轻了这一影响。下链区块会以一定的费用奖励所有者,因此,拥有更高比例下链区块的弱势或关系不佳的矿工遭受的损失更少。
例如,考虑一个网络,其中两个强矿工各自拥有总计算能力的0.45,而一个弱矿工拥有0.1。我们模拟了这个场景,并检查了小型矿工的收入。结果作为社会福利的一部分给出,如图3所示,并显示了非线性现象的显著缓解。
包容性协议显著减轻了这一影响。下链区块会以一定的费用奖励所有者,因此,拥有更高比例下链区块的弱势或关系不佳的矿工遭受的损失更少。
例如,考虑一个网络,其中两个强矿工各自拥有总计算能力的0.45,而一个弱矿工拥有0.1。我们模拟了这个场景,并检查了小型矿工的收入。结果作为社会福利的一部分给出,如图3所示,并显示了非线性现象的显著缓解。
图3所示。一个弱矿工(10%)在延迟下获得的奖励的百分比。
相关工作
比特币协议是由中本聪在2008年[9]白皮书中发布的。本文的安全性分析后来在[11]中进行了改进。在[6]中首次研究了大区块在网络中的传播,其中的实证测量和分析表明,较大的区块冲突更频繁,并考虑了一些经济影响,如矿工创建较小区块的愿望。在[12]中对与较大块大小相关的现象进行了额外的分析。在[2]中研究了矿工传播交易的动机。Eyal和Sirer最近的一项研究表明,大型矿工可能会选择不遵循准确的协议,可能会延迟自己区块的传播,以增加他们的收入[7]。在我们自己的协议版本中,这些影响仍然存在,因此我们假设诚实的节点遵循协议,而不需要这样的操作。
减轻网络上交易数量增加的影响的其他技术包括微交易通道的提议(例如,见[4])。这些渠道有效地允许两个交易方通过冻结一笔钱并少量转账来打开一个微支付渠道,有效地更新了一笔交易,包括迄今为止的总转账。经过一段时间后,聚合交易被提交到区块链。微事务通道在第二代协议中没有那么有用,因为它们不适合不能轻易聚合的更新。此外,提前锁定资金的成本和对节点之间通道的限制进一步限制了这种方法的使用。比特币社区的其他讨论包括使用可逆布隆过滤器来减少节点之间传输的信息量。
我们的工作考虑了区块链结构的结构变化,值得一提的是,目前比特币社区正在讨论的侧链[3]等提议。
结论
我们提出了包容性协议,将脱链区块的内容集成到账本中。我们的修正结果激励了节点的行为改变,从而提高了吞吐量,并为弱矿工带来了更好的回报。我们未来的工作计划包括对事务授权策略和等待时间的额外分析,以及对自私挖掘下的协议进行评估。
感谢。作者得到了以色列科学基金会(616/13, 1773/13和1227/12拨款)、以色列科技部(3-6797拨款)和以色列智能电网(ISG)联盟的部分支持。