大家好!这里是熊猫人~
上回说到区块链分叉
谈及软分叉,硬分叉
这回就来了解了解什么是软硬分叉
什么是向前兼容
硬分叉是指:当系统中出现了新版本的软件(或称协议)
并且和前版本软件不能兼容
老节点无法接受新节点挖出的全部或部分区块,导致同时出现两条链
软分叉是指:当系统中出现了新版本的软件(或称协议)
并且和前版本软件不能兼容
新节点无法接受老节点挖出的全部或部分区块
软分叉和硬分叉都"向后兼容",这样才能保证新节点可以从头验证区块链
向前兼容(forward compatible)
向前兼容是非常有意思的术语,它不同于我们通常说的软件设计中向后兼容(backward compatible)的方式。它要求对于新可能出现的区块形态、共识机制有个预先的判断,并在老的系统中留有余地或后门。当新的节点被部署时,老的节点能够接受新节点所产生的区块。
那么,比特币里是如何实现向前兼容的?
答案是:非标准交易(non-standard transaction)。
比特币中设定了如下规则:
1.将所有交易分类为:标准交易、非标准交易和非法(invalid)三种;
2.如果发现非法交易,一律拒绝,如果该非法交易在某个区块中,则拒绝整个区块;
3.在标准配置下,所有节点对非标准交易采取以下态度:a. 不转发b. 不接受c.不打包
4.对于已经进入区块的非标准交易采取以下态度:接受该区块;对区块中的所有交易,包含该非标准交易按既有规则进行验证;