区块链技术与应用【肖臻老师】笔记整理之------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 forkSoft fork
必须是所有节点都要更新软件,系统才不会产生永久性的分叉,有小部分节点不愿意更新,系统就会产生永久分叉半数以上的算力更新了软件就不会产生永久性的分叉,可能有一些临时性的分叉
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值