Mastering Bitcoinを読む Chapter2 - マイニングの優先順位について

f:id:yzono:20140717212635j:plain

はじめに

Counterpartyプラットフォーム上にアプリケーションを開発する場合、Bitcoinの仕組みを正しく理解しておく必要があります。今回はAndreas(@aantonop)の"Mastering Bitcoin"のChapter2を読んで気になったことを書きます。

目次

  • Mastering Bitcoinとは
  • マイニングの優先順位について

Mastering Bitcoinとは

Bitcoinの内部の仕組みについて整理されている唯一の本です。以前、Early Release Draft版をひととおり読みましたが、紙媒体が届いたのでもう一度最初から読んでみようと思いました。

Mastering Bitcoin

Mastering Bitcoin

オンラインでも同じ内容が読めます。

Mastering Bitcoin

マイニングの優先順位について

Mining Transactions in Blocks

Transactions are added to the new block, 
prioritized by the highest-fee transactions first and a few other criteria. 

マイニング時に新規ブロックに集められるトランザクションには優先度があり、トランザクション手数料といくつかの基準があると書かれていますが、詳しく知りたいのでソースを見ました。

対象のコードはminer.cppに書かれています。

CBlockTemplate* CreateNewBlock(const CScript& scriptPubKeyIn){}

以下1〜3のプロセスによりBlockが作られます。

  1. トランザクションのリストを作成します。トランザクションにはいくつかのInputトランザクションが入っていますが、Inputの値の合計が多いトランザクション順にソートされます。

  2. 起動オプション"-blockprioritysize"の値により、1のリストはトランザクション手数料によるソートが行われます。(-blockprioritysize次第では行われない)

  3. 2のリストをループして、不正なトランザクションの場合は除外します。

まとめ

ビットコインは仮想通貨関連サービスにおいて、デジタル基軸通貨として利用されており必要性が増しています。引き続き他の章も読みます。

参考

What is criteria of mining priority except for transaction-fee?