Bitcoin XT版本的扩容实施方案及其影响总结
BITCOIN XT版本由加文·安德烈森(Gavin Andresen)和迈克·赫恩(MikeHearn)推出, 旨在解决1M区块容量过小的问题,但由于另外三个比特币核心开发人员未同意,许多比特币企业也未明确同意,因而前途未知。
1、BITCOIN XT的扩容方案
从2016-01-11 00:00:00 UTC开始,起始区块上限是8M。
随着时间变化,区块上限逐渐提高,计算公式如下:
time_start = 1452470400 //起始时间,即2016-01-11 00:00:00 UTC
time_double = 60*60*24*365*2 //两年时间
size_start = 8000000 //起始区块上限8M
如果区块时间大于2036-01-0600:00:00 UTC,则返回size_start* 2 ^10 = 8192M,即最大区块上限为8192M。
如果区块时间在2016-01-11 00:00:00 UTC和2036-01-0600:00:00 UTC之间,则按照以下公式计算区块上限:
区块与起始时间的时间间隔(秒)time_delta = block_timestamp – time_start
区块与起始时间相差整数个两年doublings = time_delta / time_double
区块与起始时间相差整数个两年时的区块上限doublings_size= size_start * 2^doublings
区块与起始时间在两年内的相差时间(秒)remainder = time_delta % time_double
区块与起始时间在两年内区块应该增长的容量interpolate = (size_start * 2^doublings * remainder) / time_double
区块上限max_size = doublings_size + interpolate
以上公式合起来如下所示:max_size = size_start * 2^((block_timestamp - time_start) / time_double) * ( 1+ ((block_timestamp - time_start) % time_double)/time_double)
计算结果:
(1)从2016-01-11 00:00:00 UTC开始,起始区块上限是8M。
(2)每过两年区块上限加倍,如2018年1月11日,区块上限是16M;2020年1月11日,区块上限是32.
(3)到2036-01-0600:00:00 UTC最大区块上限是8192M,之后不变。
2、BITCOIN XT扩容方案的实施方式
矿池如果采用BitcoinXT节点,挖到的区块采用新版本号,以此告诉比特币网络的其他矿工,你已经支持XT。
当最近的1000个区块中有多于750区块是新版本号的区块,就达到扩容条件,留下两周时间作为缓冲,两周后开始生成大于1MB的区块,生成大区块时间不早于2016-01-11 00:00:00 UTC,即如果达到75%新区块且两周后还未到2016-01-11 00:00:00 UTC,则也要推迟到2016-01-11 00:00:00 UTC再生成大区块。
如果到2016-01-11 00:00:00 UTC还未达到75%,则继续等待;
如果永远达不到75%,则永远等待。
产生大于1M的区块后,会遭到Bitcoin Core节点的拒绝,将引起分叉。
3、BITCOIN XT占优后有可能造成的影响
(1)节点将进一步减少,目前有6000个节点,大区块的出现使得维护费用越来越高,企业化维护的可能性越来越大。因而将导致节点中心化,即由几百个比特币企业控制所有节点。
(2)挖矿中心化,大区块的出现使得超级节点(高配置、低延迟、高网速)将大量出现,更有利于传输大区块,更有机会在区块竞争中胜出,因而挖矿成本进一步增加。
(3)大区块攻击,大区块的交易验证和确认时间明显增加,大量消耗节点的计算能力,恶意用户可以构造一些大区块使得许多节点处于繁忙状态,而无暇顾及正常区块。
(4)未花费交易集将显著增加,将占用更多的节点内存。