比特币交易拥堵是怎么回事?

昨天我们了解了比特币交易为什么不能实时到账?,是因为区块每10分钟生成一个导致的,但是为什么有时候半个小时、一个小时甚至几个小时也不能到账?

因为交易量实在是太多了!

由于每次矿工在打包新区块时,最多也就能打包几千条交易信息。所以以前交易量没那么多时,一般等到下一个区块打包完(在比特币交易为什么不能实时到账?里讲解过为什么新交易必须要等到下一个区块打包完才能完成交易。),就能到账了,也就是10分钟左右就到账了;但是一旦交易量上去了,那么对不起,这次甚至下次打包新区块时,估计都不能打包上这笔新交易了。因为前面还有好多交易都在排着队等着被打包被验证呢!

故事我们了解完了,下面我们了解一下在币圈中非常经典的问题:

为什么一个区块最多只能打包几千条信息?

现在一个区块的大小差不多是1MB,也就是1000KB,可以把一个区块比做一个书包的大小。一笔交易差不多是250B,也就是0.25KB,可以把一笔交易比做一根铅笔的大小。现在要往1000KB的书包里放0.25KB的铅笔,能放多少根笔?不难算出,是4000根:

即,一个区块,最多也就包含差不多4000笔交易。

所以这个现实的因素导致的问题是,假如现在平均10分钟会产生8000笔的交易,那么当第20013个区块被计算完毕时,矿工A发现他的交易池中新存储的竟然有8000笔交易,再算上之前存储的假设5000笔交易,现在交易池中总共有13000笔交易,他在计算20014号区块时,最多只能从13000里拿出4000笔进行验证,因为一个区块实在存不下更多笔交易了。剩余的9000笔交易,只能放在后面,再和新生成的8000笔交易一起存放在交易池中,等下一次计算20015号区块时再取出其中的4000笔交易。

有人会问:书包太小了,换个大书包吧!

也有人会说:交易能不能压缩一下啊,铅笔再小一点!

没错,这些都是解决目前交易拥堵的方式。即:

1.扩大区块的大小,从1MB提升到2MB甚至4MB甚至更大。

2.交易压缩,将没用的信息去掉,节约每笔交易的空间,好让区块里能存放更多的交易。

对于第一个解决方案,扩大区块大小,从几年前起,比特币社区、矿场、比特币主要核心开发人员之间就开始讨论了。但最后由于核心开发人员的反对意见,不希望将区块扩容,最终扩容方案失败了。

对于第二个解决方案,人们确实找到了可以压缩交易的方法,压缩的方式有两种:

1)存储一半的公钥。

这是因为私钥在生成公钥时,采用的是椭圆曲线加密法,最开始人们都没当回事,后来受交易拥堵的影响,有人关注到,因为是椭圆算法的,所以是对称的,所以只需要存储一半的公钥,就能表达出之前的意思,这样既没有什么影响,又能节省空间,让一个区块包含更多的交易,何乐而不为?于是大家就开始接受压缩公钥的方式了。

2)将一笔交易的交易部分和签名部分拆开。

开发者们发现,一笔0.25KB的交易记录中,实际交易信息占了一小部分,还有一部分叫做签名信息,这签名信息占了一大部分,于是开发者们把签名信息从交易记录中剥离出去,单独开发了一块空间存储签名信息。于是之前一个区块里包含了众多交易的交易信息和签名信息,现在一个区块里只需要包含这些交易记录的交易信息就好了,签名信息在另一个附属的块中捆绑在区块上,一并发给其他矿工。这样的话,也能节省出来一部分空间。

有人会问,为何不再开发一个空间,多存些交易信息?那么这个问题又回到了第一个解决方案的问题上了,这是比特币核心开发团队反对的,是不希望扩大块的空间或者再多一块的。

具体为什么反对扩容,目前也没有人知道实际原因。这就导致了矿场和社区反对比特币核心开发团队,于是自行硬分叉了比特币,创立了BCH、BTG、BTW等等各种分叉货币。

如果当你看完这篇文章,仍有不懂的地方,请在下方留言,我会尽量解答你的困惑。

关注【通俗易懂区块链】,学懂区块链

  • 发表于:
  • 原文链接http://kuaibao.qq.com/s/20180124G0PGAP00?refer=cp_1026
  • 腾讯「云+社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 yunjia_community@tencent.com 删除。

扫码关注云+社区

领取腾讯云代金券