区块链共识:就是各节点共同认同下一个区块,形成区块链,比特币是采用POW算力来实现的,需要100%共识,没有获得共识的新区块会成为孤立区块,无法写入主链。而若持续获得一定共识那么就会形成分叉链。
算力共识:就是算力投票。一般在每个区块的Coinbase字段写入特定支持的字段,或者通过版本号来进行投票。比特币的Classic版本就近似是规定了达到75%的算力共识时,启动2MB硬分叉,而在BIP9规则下,需要达到95%算力共识才会启动软分叉。
社区共识:就像是总统大选的选民民意,通过民意调查只能得到近似的值且会变动,同样社区共识也无法得到准确的值,只能由算力投票、币量投票和节点投票,以及一些社区投票来大致的得到近似。社区共识的主体不仅仅是粉忠,用户,炒币者等自然人,还包括公司组织等,每个个体的观点需要根据其在币圈的地位影响进行加权。
协议共识:比特币交易格式、区块格式和设定规则等。交易格式是每笔交易的格式要求,区块格式是众交易打包形成区块传成链的要求,设定规则是币总量产量减半设定,难度调整设定,手续费的硬性设定等等。当无法形成100%的协议共识时,往往就会形成分叉。
投票社区共识
分叉有区别为普通的升级,普通的升级在升级前后是没有影响协议共识的,也一般不需要社区共识或算力共识的参与。而分叉根据对协议的修改情况分为软分叉和硬分叉。
我觉得不能说哪个定义正确还是错误,具体的定义可以根据已经较大社区共识的两者的区别来自己总结,不需要权威来指定。
硬分叉:没有向前兼容性,之前的版本将不可再用,需要强制升级。
软分叉:有较好的兼容性,之前版本至少部分功能可用,可不升级。
硬分叉:在区块链层面会有分叉的两条链,一条原旧链,一条分叉新链。
软分叉:在区块链层面没有分叉的链,只是组成链的区块,有新区块和旧区块。
硬分叉:需要在某个时间点全部同意分叉升级,不同意的将会进入原旧链。
软分叉:相当长的时间里,可允许不进行升级,继续使用原版本生成旧区块,与新区块并存。
向上兼容,在较低档计算机上编写的程序,可以在同一系列的较高档计算机上运行,或者在某一平台的较低版本环境中编写的程序可以在较高版本的环境中运行。
向下兼容,又称向后兼容(backward compatibility)、回溯兼容,在计算机中指在一个程序和/或库更新到较新版本后,用旧版本程序创建的文档或系统仍能被正常操作或使用(包括写入),或在旧版本库的基础上开发的程序仍能正常编译运行的情况。