首页 > 其他分享 >09 BTC-分叉

09 BTC-分叉

时间:2023-05-02 12:44:40浏览次数:49  
标签:fork UTXO 09 BTC 软件 分叉 区块 节点

《区块链技术与应用》课程链接:https://www.bilibili.com/video/BV1Vt411X7JF/?spm_id_from=333.337.search-card.all.click


09 BTC-分叉

目录

fork

挖矿会产生临时性的分叉,就做state fork。

forking attack

除了deliberate fork,还有一种情况,就是软件升级,在去中心化的系统中,没有办法保证所有节点都升级软件。有可能没有来得及升级,有可能不同意对协议的修改。

不同协议的分叉,就做protocol fork。根据协议内容的不同,可以分成硬分叉(hard fork)和软分叉(soft fork)。


前提:大多数算力掌握在软件升级之后的节点中

hard fork(旧节点不认新节点,新节点认旧的)

没有升级软件的旧节点,不认可这些新特性,认为新特性是非法的。

例子:block size limit,比特币 1M字节。

有人认为区块大小限制了交易的thoughtput,同时增加了交易的延迟(有些交易不得不等到下个区块,一等就是10分钟)。

比如软件更新:1M —> 4M。

旧区块不认可新区块,新区块认可旧区快。

这种分叉就是永久分叉的。(社区分裂)

区块的大小也不是越大越好,底层网络带宽是瓶颈。

以太坊:ETH 和 ETC

分叉之后,如果不采取措施的话,两条链之间会相互影响。

比如:ETH 和 ETC,用户的密钥,账户都是一样的,交易类型都是一样的(所以该交易在两条链上都合法),有人可能会在另一条链上进行交易的回放,收款人会在两个链上收到两笔钱。

所以,之后的解决措施,两条链各加一个chainID。


soft fork(新节点不认旧节点[旧节点奖励作废],旧节点认新节点)

一个去中心化的参数是很难改的,参数的修改,有可能是硬分叉,有可能是软分叉。


软分叉案例:

CoinBase中除了之前讲过的 8 Bytes 的extra nonce,还有很多的字节,有人提出将其作为UTXO集合的根hash值。

目前,UTXO是在全节点内存中维护的一个集合,主要是为了快速查找,判断交易是不是double spending,但是,集合的内容没有写到区块链中。

如果知道一个账户A有多少钱?全节点可以通过查找UTXO中的A相关的交易输出,来进行计算。如果是轻节点,需要询问全节点,全节点返回一个结果,怎么知道结果是不是对的?现在是没有办法证出来的。如果自己不维护一个UTXO集合,没有办法使用类似的Merkle Proof证明出来。

将UTXO集合中的内容,组织成一个Merkle tree,算出一个根hash值来,写到CoinBase域的某个位置中,这样的话,就可以通过Merkle Proof进行认证。

这个是软分叉。(旧节点认可新节点,新节点不认可旧节点[因为旧节点CoinBase域 没有按照要求写])


比特币历史上,一个比较著名的软分叉的例子,叫做P2SH(Pay to Script Hash)。该功能最后通过软分叉方式添加。

(因为P2SH有两阶段验证,旧节点只会做第一阶段的验证,新节点才会做第二阶段的验证,所以,旧节点认为合法的交易,新节点可能认为是非法的;而新节点认为合法的交易,旧节点肯定认为是合法的,因为旧节点只做第一阶段的验证)


soft fork:只要系统中拥有半数以上的节点更新了软件,那么系统就不会出现永久性的分叉,虽然可能会出现一些临时性的分叉。

hard fork:必须是所有的节点都要更新软件,系统才不会出现永久性的分叉。否则,系统会分成两条链。

标签:fork,UTXO,09,BTC,软件,分叉,区块,节点
From: https://www.cnblogs.com/yangyi215/p/17367553.html

相关文章

  • 10 BTC-问答
    《区块链技术与应用》课程链接:https://www.bilibili.com/video/BV1Vt411X7JF/?spm_id_from=333.337.search-card.all.click10BTC-问答转账交易的时候,如果接收者不在线怎么办?没有影响。不需要接收者在线,转账交易在区块链上只是做一个记录。假设全节点收到一个转账交易,有......
  • 11 BTC-匿名性
    《区块链技术与应用》课程链接:https://www.bilibili.com/video/BV1Vt411X7JF/?spm_id_from=333.337.search-card.all.click11BTC-匿名性目录11BTC-匿名性Bitcoinandanonimity比特币是匿名的吗?一般我们认为,匿名与privacy联系起来的。比特币中不要求使用真名,可以使用公钥......
  • 12 BTC-思考
    《区块链技术与应用》课程链接:https://www.bilibili.com/video/BV1Vt411X7JF/?spm_id_from=333.337.search-card.all.click12BTC-思考目录12BTC-思考哈希指针,比特币很多设计使用了hash指针,指针保存的只是本机的内存地址,发送到其他计算机上就没有意义,那么,在发布区块的时候,h......
  • 05 BTC-网络
    《区块链技术与应用》课程链接:https://www.bilibili.com/video/BV1Vt411X7JF/?spm_id_from=333.337.search-card.all.click05BTC-网络目录05BTC-网络TheBitCoinNetwork:applicationlayer:BitCoinBlockchainnetworklayer:P2POverlayNetwork比特币网络中所有节点都是平......
  • 06 BTC-挖矿难度
    《区块链技术与应用》课程链接:https://www.bilibili.com/video/BV1Vt411X7JF/?spm_id_from=333.337.search-card.all.click06BTC-挖矿难度目录06BTC-挖矿难度调整目标空间占输出空间的比例,来调整计算难度值。difficulty_1_target:难度目标为1时候的目标阈值,是一个很大的值......
  • 04 BTC-实现
    《区块链技术与应用》课程链接:https://www.bilibili.com/video/BV1Vt411X7JF/?spm_id_from=333.337.search-card.all.click04BTC-实现目录04BTC-实现比特币系统是transaction-basedledgerUTXO:UpsentTransactionOutputUTXO中的元素需要给出它所在交易的哈希值,以及它是......
  • 01 BTC-密码学原理
    《区块链技术与应用》课程链接:https://www.bilibili.com/video/BV1Vt411X7JF/?spm_id_from=333.337.search-card.all.click01BTC-密码学原理目录01BTC-密码学原理哈希部分签名部分比特币加密货币(crypto-currency)哈希部分:哈希函数(cryptographichashfunction):抗碰......
  • 02 BTC-数据结构
    《区块链技术与应用》课程链接:https://www.bilibili.com/video/BV1Vt411X7JF/?spm_id_from=333.337.search-card.all.click02BTC-数据结构目录02BTC-数据结构hashpointerMerkletreehashpointer:不仅可以找到前区块的位置,还能防止前区块是否被篡改。Blockchainisal......
  • 03 BTC-协议
    《区块链技术与应用》课程链接:https://www.bilibili.com/video/BV1Vt411X7JF/?spm_id_from=333.337.search-card.all.click03BTC-协议目录03BTC-协议数字货币的需要解决的两个主要问题共识机制如果央行(中心化)发行数字货币,使用央行的私钥进行签名,大家交易的时候使用央行......
  • FIT2099场景
    FIT2099assignmentScenarioInEldenRing,severalhostilecreaturesinhabitthe"LandsBetween".Someofthesecreaturesoccupydifferenttypesofenvironmentsandwillattackanyonethatgetstooclosetotheirterritory.Pleasereadthoroughl......