风险提示:理性看待区块链,提高风险意识!

如果不一样,如果区块链某一个区块坏掉怎么办?

1个回答

匿名用户2星评价

2020-04-21 12:19:58

如果不一样,如果区块链某一个区块坏掉怎么办?

楼上的回答基本正确,补充说明一下。

记当前的区块链为The-Chain。

出现分叉时,在网络中一部分节点收到的最新区块是A,即区块链变成The-Chain+A,将这些节点记为A类节点;另一些节点是The-Chain+B,记为B类节点。

这时候,假设A类节点中的S节点和B类中的T节点各自继续挖矿(POW),这时候,总会有一方先完成POW,生成区块C,假设是S节点先得到的区块C,它将其广播。

这时请注意:如果收到广播的节点是A类节点那么直接将区块C上链,得到The-Chain+A+C;

如果是B类节点,则它们会收到区块A和C,此时B类节点舍弃之前的区块B,将The-Chain+B换成有The-Chain+A+C,并以此作为主链继续挖矿。

B类节点也有可能先收到C再收到A。收到C时,会被认为是孤块(因为还找不到C的上一区块A)保存在孤块池中,一旦收到区块A时,节点会通过父子关系验证A就是C的父区块,将其从孤块池中取出,并且连接到The-Chain,让它作为区块链的一部分。

另外回答楼上最后提的问题,如果有效,比特币的验证方法又无法找到那个区块B”。

这个说法本身就存在问题,因为B类节点一旦确认A+C是主链,则区块B被视为孤块,这里注意一点:交易池里面的交易数据要被确认已经进了正式区块才会删除,因为在A类节点中的交易池未验证区块B中的交易,所以在B类节点确认主链的时候同时更新交易池,将区块B中的未被打包的交易数据重新放回交易池留待验证,所以区块B对整个网络没有影响。它本身已经没有意义,所以无需找到它。