区块链技术与应用【肖臻老师】笔记整理之------10-BTC-分叉

注:没有全部复原,抽取了主体知识,加入了一些自己的理解,强烈建议去学习肖臻老师的课程,这绝对算得上是国内区块链讲解的顶级教程,纯学术和技术

分叉:原来是一条链,现在变成了两条链

产生分叉的原因

  • state fork:出现了不同的块状态,例如两个区块同时被挖出,产生了分叉
    • forking attatck :分叉攻击也属于state fork,这个是属于故意造成的,所以也叫deliberate fork
  • protocal fork :因为对比特币协议产生分歧而产生的分叉,可能是因为不支持新的协议,或者是还没有同步协议
    • hard fork:扩展新的功能等,例子:BTC中的区块大小限制,BTC区块1MB,一个交易大概250B,每秒钟七笔交易,所有有人提出增加Block size limit。如果要改变区块的大小比如变为4M,只要旧节点不更新,那么就会产生永久的分叉,即使新节点可以认可旧节点,但是旧节点却不会认可新节点。ETC和ETH分叉加入了Chian ID否则会产生双花问题,在一条链上花的钱到另一条链上还可能再花一次。
    • soft fork:对协议进行一些限制,原来合法的交易现在是非法的,比如将block size limit将1M变为0.5M,这样就会产生软分叉,但是实际是不会这样做的。挖出来的小块旧节点是认可的,但是新节点不认可小块,但是只会产生临时的分叉,最后旧节点的还会接在0.5MB后面继续挖,但是旧节点挖出的区块不被认可,它会白挖,所以逼着它会更新,挖小区块。这种情况可能会出现临时分叉,但是不会永久分叉。

软分叉的实例,coinbase域可以作为extra nonce。block header的nonce只有4bytes,最多只有2^32种可能,搜索空间不够大,实际使用过程中,coinbase的前八个字节也可以作为nonce,合在一起就成了2^96,作为挖矿难度是够的,

merkle proof 证明某个节点在区块里面

证明某个账户里面有多少钱,目前在区块链里是证不出来的,所以有人提出将coinbase域里面的其他部分存取UTXO的hash值,这样的升级就是软升级。旧节点认可新节点的内容,但是新节点不认可旧节点的内容,这样就会造成软分叉

BTC最出名的软分叉的例子:P2SH Pay to Script Hash这个是后续加进去的

支付的时候不是付给一个Public key 的 hash,而是付给一个赎回脚本的哈希redeemScript

旧节点只验证第一阶段,新节点两个阶段都验证。所以旧节点认为合法的交易新节点可能认为是非法的

Hard fork Soft fork
必须是所有节点都要更新软件,系统才不会产生永久性的分叉,有小部分节点不愿意更新,系统就会产生永久分叉 半数以上的算力更新了软件就不会产生永久性的分叉,可能有一些临时性的分叉

你可能感兴趣的:(区块链,区块链,分叉)