On Availability for Blockchain-Based Systems

On Availability for Blockchain-Based Systems

Abstract

探索区块链技术在公共注册中心、供应链、健康记录、投票等领域的广泛应用。

作者们在该论文中从现在两个主流的区块链,以太坊比特币中,发现了区块链可用性的限制,证明了从区块链中读取数据的可用性很高,但是往区块链中写入数据(交易数据管理)的可用性就很低。

以太坊的实验中发现,大量的交易中,有很多交易信息是没有被提交的,区块链中也没有明确的终止交易和重新提交的内在机制,这些交易就一直处于一种等待状态。最后,基于以上这些限制,作者们提出了一些技术来优化这些问题。

1 介绍

区块链是一种新型的复制型数据库(分布式账本),最开始区块链用于支持比特币这种密码货币。第二代的区块链技术则用于记录各种应用领域的交易数据,智能合约,健康记录、投票、能源提供和关键基础建设灯领域。

在记录交易的不易性上,许多基于Nakmoto consensus(中本聪共识)构建的区块链系统在客户端上都只能提供概率性的保证。交易过程中所耗费的时间也是这些区块链系统十分需要去关注的一个问题。

作者在这片论文中会调查交易记录没有被提交的原因以及耗费长时间的原因。

  • 网络重新排序也会造成很大的延迟。
  • 调查研究用户定义的gas pricegas limitblock gas limit变量名所带来的影响。
  • 制定将阻塞在交易池的交易终止的机制的必要性。

2 背景

区块链的基本特点,机制原理,分布式账本,挖矿,电子钱包,工作量证明,奖励机制,每笔交易需要给区块矿工交易费,最长链解决冲突,51%攻击,以太坊中的智能合约。

3 比特币的交易确认

在这部分,作者将探讨影响比特币提交时间的因素,并且发现交易的重组起着很关键的作用。每笔交易都需要给拥有该区块的矿工一定的手续费,作为对矿工的激励机制。因此,矿工更喜欢能提供高手续费的交易,并且将其先写入区块中,因此能提供更高手续费的交易能更快地提交。

作者通过研究发现,在比特币系统中,每笔交易需要有序地到达,如果一笔交易先于其“父母”交易先到达,即该交易的源交易不明,则这笔交易将会被放进内存池等待,超过一定时间甚至会被删除。

locktime锁定时间的设置,带locktimetransaction,指明了transactions在未来的一个区块或者未来的一个时间点,才会被验证并发送到比特币网络上去。

A.数据收集方法

B.比特币交易所需要的时间

  • 更低的手续费并不是造成orphan延迟提交的原因。
  • 锁定时间也不是造成orphan延迟提交的关键因素。

4 以太坊的交易确认

首先解释为什么以太坊交易无法保证提交,无论其有效性如何,然后明确gas pricegas limit和网络对提交时间的影响。

A.以太坊交易处理

以太坊中一笔交易的生命周期为:

  1. 系统中交易的公告
  2. 交易被包含进某个分支链上的一个新挖的区块中。
  3. 包含有该交易的区块被接到主链上。
  4. 在足够的区块被挖出来后,该交易被最终确认。

B.数据收集和基础统计

作者使用geth客户端,将参数gas price设置为0,其它设置为默认,并且允许最多连接500个节点。

区块的时间戳指的是这个区块是什么时候开始挖的,而不是这个区块生成的时间。

C.从首次包含到提交

作者分析了每笔交易首次被包含的延迟时间,第二次被包含的延迟时间,第三次的延迟时间等。越是到后面的延迟时间就越长,越是需要用更多的区块去确认一笔交易,就越需要花费更多的时间。但是几乎不会出现交易不被包含进去的情况,出现的几率很小。

D.用户定义的gas Price和Limit的影响

这部分作者将会研究gas Pricegas Limit对提交时间的影响。特别地,当给矿工提供更高的回报是否能加快每笔交易提交的时间,例如设置更高的gas Price

调查发现,更高的gas Price区段里,延迟更短,但是在25Gwei再往上,更高的gas Price也不会对延迟造成很大的影响。0区段和其它区段的区别是很明显的,gas Price0明显会造成更长的提交时间。

作者在目前调查当中并没有发现gas Limit和提交延迟之间有什么关联。

E.网络延迟的影响

每笔交易都有一串数字编号nonce,但是不同账户之间的nonce是不同的,每个账户的交易的nonce0开始逐1递增,编号n+1的交易在编号为n的交易没有被包含进区块链时,必须在交易池中等待编号n的交易到达。

作者调查发现,gas price对交易的有序和无序影响不大,因此将gas price这个混淆因素排除。

作者通过先将编号n+1的交易先发布,然后再发布编号n的交易,将其所得到的结果与有序的交易发布作比较,发现有延迟的交易只能被很少的节点所知道。因此表明网络的连通性对交易的广播有一定的消极的影响。

5 以太坊的区块gas limit的影响

如果gas limit太小而低于一笔交易所需要的费用,则这笔交易则不能被包含进区块当中。该限制是为了通过限制算力的总数来防止网络上的DoS(Denial-of-Service)攻击。

作者通过调查发生在DoS攻击之前的交易,主要的gas被用于三种类型的交易:financial transfer转账、regular function calls to contracts合同的规则调用、contract creation合同的创建。

  • 每笔转账交易只会消耗最基本的21,000gas,加上一小部分gas用于攻击数据。
  • 大部分的合约功能规则调用最多需要消耗200,000gas,只有剩下的很小一部分即使gas limit500,000还是不够。这说明现在在使用的大部分功能规则不是计算密集的。
  • DDoS攻击前,一半的合约创建时gas limit设置为500,000,而另一半则需要更多。这证明了作者的假设,当gas limit在一定值时,许多合约无法展开(使用)。

6 以太坊中的交易中止

这部分作者将提出人工地中止交易的机制。该机制可用于提高软件客户端或者钱包的用户友好性。

  • 如果用户想中止一个超过预期时间的交易,可发起一个接收者为自己的新的交易,新的交易与超时交易的编号一样,且交易金额为0,如果新的交易提交成功,超时交易将过期,如果超时交易在新的交易成功提交之前成功提交了,则与一开始的目的一样,没有任何问题。
  • 用户也可以重新发起一次新的交易,新的交易包含与之前的交易一样的数据,因此新的交易的数字特征和哈希值与之前的交易不一样,可以被矿工认为是另一次交易。但是如果重传之前的交易而不做任何改变,则还是会被矿工认为与之前一次的交易是一样的,导致矿工还是会做出一样的处理。如果两次交易同时到达,则二者只会有一个是有效的,因为它们的编号是一样的。

作者在3种场景下测试了以上的规则。

  1. 一笔交易在常规时间内没有被包含进区块中。
  2. 客户端改变了主意想回溯之前的交易。
  3. 一笔交易由于费用不足而无期限地等待。

7 相关工作

CAP(Consistency一致性, Availability可用性, Partition tolerance分区容忍性)理论,任何分布式系统只可同时满足两点,无法三者兼顾。

作者通过观察惊讶地发现许多主流的区块链只提供有限的可用性,鉴于它们通常是不保证一致性的。看起来这些区块链只依靠概率性变化的网络环境去确保其一致性。

鉴于实验是在私有链上进行的,因此提交时间会与实际的有明显区别。

8 结论

作者对影响区块链提交时间的因素进行了详细的分析,并且提出了明确的限制这种消极影响的中止机制。发现网络重新排序对提交时间造成的明显影响,且这种影响甚至能抵消交易手续费和gas price造成的影响。另外以太坊应对DoS攻击所采取的措施对电子合约的创建也有很大的影响。

未来,作者将会研究可用性问题是如何影响以太坊中越来越重要的智能合约的执行。

心得体会

作者先对比特币和以太坊这两种当前主流的区块链系统进行简单的介绍,并从这两者的具体运行机制去探讨目前区块链系统所常见的一个问题,就是交易的提交需要消耗大量时间,且每笔交易都只能被概率性地保证成功实施。

在比特币系统中,影响交易提交时间的因素有一下几点:

  1. 手续费的高低。
  2. 交易的有序性。
  3. 每笔交易所设置的锁定时间。
  4. 网络问题。

对于以太坊,作者探讨了gas pricegas limit和网络对于提交时间的影响:

  1. gas price对于提交时间的影响有限,超过一定值后几乎不产任何影响。
  2. gas limit与提交时间并没有很大的联系。
  3. 由于每笔交易的有序性要求,网络延迟容易造成交易出现乱序,因此导致提交时间的增加。

同时,作者对gas limit的作用也做出了研究,gas limit主要用于防止DDoS攻击,但是太小的gas limit也容易造成一些合约无法正常工作。

最后作者也提出了可用于以太坊系统中中止交易的机制,用于改善客户端软件和电子钱包。

总结以上发现,当前区块链技术可应用于许多场景,但是由于其现有机制的问题导致了数据提交的时候,需要耗费一定的时间,且提交的成功与否具有不确定性,造成了一定不便。因此可将如何缩短数据提交所需要的时间,以及提高成功提交的概率作为区块链技术研究的主要方向。

你可能感兴趣的:(On Availability for Blockchain-Based Systems)