区块链的一个很大问题在于其中会包含所有的历史交易,这样下去整个链的信息会越来越大,我昨天下载区块链的完整信息已经要大于20G了。这样下去肯定不是个办法啊,这个问题有没有好的解决办法?如果不能解决的话会成为区块链协议的最大问题。
1,交易数据量越来越大,安装一个比特币客户端,光钱包数据就要同步好几天,以后会越来越大。
2,交易确认速度太慢,交易处理能力也很弱,每秒钟能处理的交易数无法满足大规模的使用。
3,比特币自身强调分散和去中心化,但是目前越来越依赖中心化
作者:潘志彪
数年来,随着比特币的蓬勃发展,比特币交易数量越来越多,而单个区块体积有1MB的最大值限制,因此区块空余空间显得越来越小。如图所示,区块体积中位数在2015年里得到了翻番,从1月份的292KB快速增长至12月份的749KB。

比特币区块体积大小(来源:区块元http://blockmeta.com)
扩容问题在2015年得到了充分的重视与讨论,在2015年06月左右陆续推出了诸多扩容方案,代表有BIP100,BIP101,BIP102,BIP109,BIP248 等若干方案(表X)。

虽然提出来各种方案,但基本可以划分为两类:长期规则派与短期搁置派。长期派偏理想、规则型,一口气敲定便不再折腾,典型代表BIP101/103,设定一个增长规则,便不再调整。短期派则认为未来不可预测,固定的规则过于简单暴力的解决问题,希望设置一个短期数年方案暂时先避开,搁置至未来解决,代表为BIP100,但由于投票过程复杂,后简化为BIP102/109等,而BIP248则一口推迟至2020年,近几年就简单采取翻番增长。
自2015年06月以来,经过了大半年来的大范围的反复讨论,目前长期规则派基本完败。2015 年12月比特币香港扩容会议由Pieter Wuille提出了隔离见证(Segregated Witness)之后,扩容问题甚至已经简化为仅升级至2MB,但陷入了关于实施时间点的争论之中。
一个看似简单的扩容技术问题,却引发比特币社区花了大半年时间,开了数次全球技术会议、私下打无数口水仗,却依然未有明确定论。其背后深刻原因是,区块限制值上调是无法真正解决比特币扩容问题的。
扩容问题
总的来说,根据对比特币网络的理解,有两个划分:清算系统,现金系统。
清算系统
比特币区块链是全球的、分布式的、有限容量的、代价昂贵的系统。每一笔交易的价值含量是不一样的,当块容量不够用时,我们应该保障高价值的交易进块。高价值的交易有意愿有能力支付足够高的网络手续费,从而获得足够高的优先级进块。
随着比特币的繁荣,交易数量会越来越大,有限的块容量会使得低价值的交易(例如发送1分钱)永远无法进块,因为低价值的交易不可能支付高网络手续费。进而网络退化为清算系统,低价值含量交易被赶出,这些交易由第三方记账系统进行代替完成。
在闪电网络出现之前,第三方记账系统主要是链外钱包提供商。用户信任某第三方钱包平台,把比特币存入其中,同一平台用户之间转账仅带来账户余额变更,并不会产生比特币交易。
现金系统
现金系统意味着所有交易均应该进入区块,那么当块容量不够用时,则应该及时提高块体积限制,对系统进行扩容。短时间可能发生交易入块堵塞,但长期来看所有交易应该均可以入块。人人都享有比特币系统带来的巨大便利和优势。
扩容大小的选择
我们进行一个简单的估算,假设每个交易大小为512字节,手续费单位为0.0004/KB。那么有如下表格:

根据VISA在2015年的记录,全年共产生92,064百万笔支付交易,折合比特币网络数据:

若提高区块体积限制至30MB,最大的问题不是CPU计算能力瓶颈,而是块的传播与存储。
30MB的块可能会导致全网孤块率和空块率大幅上升,一年产出1.5TB的区块链数据也超出大部分节点机器的硬盘容量。基于这1.5TB的数据,区块链浏览器、钱包服务商等则可能膨胀10倍达到15TB,对于目前来说已经远超普通机器/数据库的磁盘容量。
诚然,这些数据对与中性化的系统而言,并不具有多么大的挑战性,但对于一个全球分布式系统而言,则非常具有挑战。会极大削弱节点数量,提高开发接入门槛,使得比特币变得中心化。
扩容争论的最后,还是倾向于2MB,使得升级过程更加可控一些,风险更低一些。
——《区块链:从数字货币到信用社会》(中信出版社)
中本聪应该意识到了这个问题,但他选择逃避,留给后人
而后人也觉得这个问题相当棘手
起因整理一下,中本聪(可能)为了规避这个问题,设定10分钟产生一个区块。
众所周知,交易记录在区块里
如果你拿比特币买了任何一样东西,付钱走人的时候,此时这笔交易还在网络上流动,还没有写到块里去。
也就是说这笔交易可能会失败,被拒绝
店家让你走人就是他承担这个风险
然后由于比特币本身的共识机制,即便写进块里也无法确认是否写进永久记录,一般是写到6个块我们承认不太可能会更改,因为记录失败的可能性到6个块的时候已经非常低
简单计算一下,理论值需要1小时。
事实上因为网络的关系,这个时间是波动很大的
这给工程带来了很大的困扰,就是你写块,读块的时候,你不知道这个数据是不是永久存在的。
第二就是10分钟一个块对工程来说太难受了。
工程需要尽可能的快,需要减少到秒级
这当然也是可以得
结果就是块增加的很快。
第三就是块大小,网络速度,都会在大规模应用下产生瓶颈
不知道大家有没有注意过比特币的交易量
1个块1600笔交易,也就是说10分钟1600笔交易,每秒3笔交易左右
而银联在2016年春节的日交易量破亿,
也就是说每秒1000笔交易级别
每笔交易占用512字节,每5秒产生一个区块
也就是日产生8.6T数据规模
实际工程应用,至少要留出5倍的余量
现在的技术就像开一部玩具车,这部玩具车当然很精巧,很有趣,但是当贸贸然把它开上高速,那就是一场灾难。
现在比较理想的,就是把它退化成一个清算系统
这也可以拿来检测一个人的理论水平,如果TA没有对上述问题做出认识和回答,就贸贸然说,这也可以,那也可以。
那他还是个外行
补充: 2017-12月
中心化交易可能更有前景
腾讯公司主席马化腾日前在一个分享会上表示,区块链的发展方向有两个,一个是公用方向,去中心化,一个私有方向,有类似央行制度,中心制账户。他指出,相对更看好私有方向;数字货币是有可能取代实体货币的。
个人基本同意,未来有可能产生一种跟比特币算法相似的全新的数据货币。每个人只需要保留交易结果就可以了,交易过程交给央行保存,如果全球央行采用统一算法生产和交易数字货币,就能跟比特币一样全球流通了。而且这样好处也有很多:
保留比特币总量不变这个特性。初始区块大小确定,符合比特币算法的数据货币总量就是确定的。央行也不能随意更改。
解决比特币交易频率的限制,完整的交易过程只需要保存在几个大规模数据中心即可,并且也有可能并不需要完整保存交易记录。
每个币都是标识唯一的,交易过程就是可追朔的,将有效防止货币被盗,或被骗的情况。