2017年3月4日 星期六

Bitcoin有那些Pool?

在讀完"Mastering Bitcoin"這本書之後,我發現Bitcoin Network裡有許多不同種類的Pool:
  • UTXO Pool
  • Pool of Address
    • Vanity Pool
  • Transaction Pool
    • Orphan Transaction Pool
  • Orphan Block Pool
  • Mining Pool
    • Managed Pool
如果我們無法很清楚地了解這些Pool的含義及差異,表示我們對於Bitcoin Network的認知還不夠。因此,這裡試圖為大家介紹這些Pool。但不能保證大家可以因此而了解整個Bitcoin Network的運作。大家還是要下功夫去學習,求學問,很少能一步登天。大家要不斷地:思考、思考、再思考……。

首先,我們來了解UTXO Pool

UTXO全名是Unspent Transaction Outputs,意思就是尚未花費的Bitcoin。將所有UTXO的值加起來,就是整個Bitcoin的市值。Bitcoin Client會有一個Persistent Storage記錄UTXO Pool。

Transaction Pool v.s. Orphan Transaction Pool

每次新產生的Transaction,被Node驗證後,會先存放在Transaction Pool。Transaction的每一個Input,都要指向一個Parent Transaction。但如果有兩個Transaction,tx1與tx2同時產生, tx1是tx2的父親,如下圖左所示。



(1) 若tx2先進入某一個Node,驗證後,發現tx2的父親還沒進來,那麼,該Node會將它視為孤兒(Orphan),於是就將它放到Orphan Transaction Pool。 (2) 直到tx1進來後,(3) Node找到了tx2的父親,就將tx2從Orphan Transaction Pool移到Transaction Pool。

(最後一段,有誤,己更正。感謝大學同學,益修指正)

總結:


存放在UTXO Pool的Transaction都是被驗證過的(Confirmed),並且是以Persistent Storage形式永久存放的。

存放在Transaction Pool或Orphan Pool是尚未被驗證過的(Unconfirmed),是暫時存在Memory裡。

至於其它Pool,留待下篇講解。

-Count


沒有留言:

張貼留言