这造成了哪些影响:
问题1:比特币网络会因此分成两条链吗?
答:不会。
这只是Bitcoin.com矿池因为意外挖出一个被其他节点拒绝的区块,其他节点会抛弃这个区块继续挖矿,而Bitcoin.com矿池自己也抛弃了这个区块,继续在最新高度上挖矿。
常见的孤块产生原因是因为两个矿池同时挖到同一高度的区块,因必然有一个矿池的广播速度更慢而导致被孤立。这一个孤块产生的原因是区块大于了1M的限制,而被其他节点拒绝。所以略有不同,但同样都是孤块。
如果有SPV挖矿的情况呢,SPV挖矿因为不会去检测上一个区块的大小,所以是有可能接受这个大于1000000bytes的区块的。但目前所有的运行bitcoin unlimited节点挖矿的矿池都是使用接受深度AD6,也就是说除非是spv挖矿能够连续生产6个区块,才有可能被其他bitcoin unlimited矿池接受,这显然是不可能的。
但如果有spv节点在这个区块上成功挖到区块,那结局就是也被孤立,也要受损失。
问题2:会有用户发的交易因此造成了损失和丢币吗?
答:不会。
这个孤块里打包的交易会在后续区块里被打包,不会有任何损失。
因为交易所钱包也是完整节点钱包,也会拒绝掉这个区块,所以也不可能双花这些币。
问题3:这是什么原因导致的。
答:详细的原因报告可能要等更专业的人士做全面分析。我在这里只写我目前了解到的信息,准确性未必特别高,如果有最新的分析报告,我也会及时跟进。
原因大概率是Bitcoin unlimited1.0版本(就是前几天刚发布的版本)的编码有缺陷。Bitcoin Unlimited有两个事关区块大小的参数,一个是矿池可以生产的区块大小上限值,另一个是节点(矿池也是节点)可以接受的最大区块大小上限EB值。Bitcoin unlimited的EB在代码层面使用了bytes来定义,bitcoin.com矿池设置成了1,即为1000000bytes,这是完全不会产生歧义的。但前一个参数,在代码导致应该是使用了MB来定义,bitcoin.com矿池设置成了1MB,因为可以产生大于1000000bytes但小于1024*1024字节的区块。
因此Bitcoin.com矿池本身产生1,000,023字节在它运行的bitcoin unlimited1.0版本自身被认为是合法的。因此被广播出去了。就是这个设置导致了这起事故。
目前经联系Bitcoin.com矿池的负责人,他们已经处理好了。但具体处理方式需要等他们进一步声明。
问题4:使用Bitcoin Unlimited挖矿不安全吗?
答:这个孤块是由Bitcoin Unlimited1.0版本生产出来的,在之前的版本已经被Viabtc等矿池稳定运行了超过3个月了,并没有产生问题。
这件事故给我的警示是,矿池应该承担起更多的软件安全测试。
问题5:BU开发团队还值得信任吗?
答:我自己并不会因为这起事故而选择完全否认BU的开发实力。
任何现代软件工程都会有潜在的bug。我认为针对这起事故更为妥当的做法是矿池加强软件安全测试。如果因为出现bug就要拒绝掉一个开发团队,那我们应该开除所有的开发团队,在历史上产生bug最多的完整节点客户端应该是中本聪开发的那款吧。
我们更应该做到的是有点求证精神,而不是一出事故就到处传谣言。
因为一会儿家里就要来客人了,妈妈在催吃早饭和收拾屋子,先写到这里,有更多的信息我会跟进。各位有最新的信息,望发给我。
如果因为我了解到的信息不全面,而导致有所误导,请指正,我会尽快修正。
谢谢。