Bitcoin Fork

分叉的理由

從比特幣交易運作說起

假設這是一筆合法交易

(其實不是,BTC使用的是UTXO格式)

From Alice to Bob 1.5 BTC <sig>

發布的交易會先進mempool

From Alice to Bob 0.5 BTC <sig>

From Eve to Bob 2.26 BTC <sig>

From Bob to Eve 0.03 BTC <sig>

From Alice to Charlie 1 BTC <sig>

From Dave to Bob 0.87 BTC <sig>

From Alice to Bob 1.5 BTC <sig>

........

BTC資料結構中模擬暫存記憶體的功能

由礦工打包數筆交易成為block

平均 10 mins 打包一塊

From Alice to Bob 0.5 BTC <sig>

From Eve to Bob 2.26 BTC <sig>

From Bob to Eve 0.03 BTC <sig>

From Alice to Charlie 1 BTC <sig>

From Alice to Bob 1.5 BTC <sig>

 

Nonce : 1287550755

但區塊大小有限制 <1MB

From Alice to Bob 0.5 BTC <sig>

From Eve to Bob 2.26 BTC <sig>

From Bob to Eve 0.03 BTC <sig>

From Alice to Charlie 1 BTC <sig>

From Alice to Bob 1.5 BTC <sig>

 

Nonce : 1287550755

它現在快要已經爆炸了

這樣送出的交易要等很久/付更多手續費才能被寫入區塊鏈中

很不方便

打包更多交易──

單位時間內能有更多筆交易被確認

可能的方法

  1. 提升打包block的頻率 (導致通膨
  2. 把block的上限從1MB提升到更大
  3. 讓每個交易占用的空間變小

 

SegWit

隔離驗證

Bitcoin Core

掌握話語權的一坨核心開發者

把簽名移出交易格式外

From Alice to Bob 1.5 BTC <sig>

From Alice to Bob 1.5 BTC

Bitcoin Unlimited

Hard fork vs Soft Fork

分叉會變成兩種幣嗎?

如果 BU 執行硬分叉

一個 BU 節點挖出 2 MB 的"新"塊

並試著將它廣播給整個網路的其他節點

舊版節點拒絕納入該區塊

並持續尋找 1MB 的"合法"區塊,分岔出現

如果新版節點算力較高

新鏈持續變長,舊鏈較短

但因為舊節點不承認 2MB 區塊,雙方各自發展

如果舊版節點算力較高

新鏈變長,但舊鏈更長

基於最長鏈原則,新節點持續放棄挖出的 2MB 區塊

分叉的投票表決

算力即權力

成功的分岔需要礦工用算力支持

事前民調

事前民調

礦工將支持方案標註在挖出的區塊

U

U

C

C

U

U

Bitcoin Core:

如果在 1000 個新挖出的區塊中有 950 個

顯示支持 SegWit,大家就啟動它吧。

舊鏈的自然死亡

假如 BU 以80% 算力分岔成功

舊版節點 : 20%

新版節點 : 80%

新鏈可以產生更多區塊

但舊鏈將變得難用無比

Bitcoin 每 2016 塊更新一次難度

在那之前每 50 分鐘才會產生一個塊

而且這樣的情形會持續 70 天 (2016*50/1440)

.....

?

使用者只好改用新鏈

→幣價下跌  →算力進一步流失

新鏈殺死舊鏈

網路效應

高中數學 :

已知鑽石的價值和重量呈平方正比

現有一顆價值 100 萬的鑽石

摔裂成 8:2 的兩塊,請問共損失多少價值?

Ans: 32 萬

只好人道毀滅舊鏈了

╮(╯_╰)╭

比特幣分叉

By Ping Chen

比特幣分叉

  • 254