Marketing Bitcoin 「トランザクション」#2、「Bitcoinネットワーク」

このペースだと1冊読むのに時間かかりすぎなのでちょっと加速させていきたい。

トランザクションScript言語

トランザクションスクリプトは、Locking/unlockingの二種類ある。 それぞれ、Scriptという逆ポーランド記法の言語で記述されていて、先頭ビットから順番に読めば解釈できる仕組みになっている。これは、ループや分岐が存在できないためにチューリング不完全である。(実行時間や対攻撃性を考慮しているために意図的にそうしている)

標準的なトランザクション

標準的なものは、pay-to-public-key-hash,pay-to-public-key, pay-to-multi-signature, pay-to-script-hash,data outputの5種類。 * pay-to-public-key-hash:public-keyと署名を受け取ることで検証ができるという解錠方法を示しているlocking script。スクリプトの容量削減のために、公開鍵がハッシュ処理されている。 * pay-to-public-key-hash:public-keyと署名を受け取ることで検証ができるという解錠方法を示しているlocking script。公開鍵がそのまま記載されている。 * pay-to-multi-signature:N個の公開鍵のセットと、そのうち何個認証されれば解錠可能かという条件を設定している * pay-to-script-hash:長いスクリプトをハッシュ化したものをアウトプットに含める。使うときにオリジナルの(ハッシュ化する前の)スクリプトを提供する必要がある。(前のトランザクションを受け取るときにlocking scriptを定義するので、オリジナルのスクリプトはウォレットに別に保存されているという理解をしている) * data output:トランザクション内に、支払いと関係ないデータを付与するためのスクリプト

Bitcoinネットワーク

BitcoinネットワークはP2Pネットワークとして構築されている。つまり、中央集権サーバが存在しない。 Bitcoinネットワークは、Stratumというマイニングや軽量処理用のウォレットに使われるプロトコルでも接続される。 ネットワークは以下の4種類のロールを持つノードから構成される。 * ウォレット:これまでの説明の通り。Bitcoinクライアントの機能として持つ。 * マイナー:トランザクションを検証し、新しいブロックを作り出すことでビットコインを採掘する。 * フルブロックチェーンデータベース:完全なブロックチェーンの管理 * ネットワークルーティング:全てのノードが持つ機能:トランザクションを他のネットワーク参加者に伝える。

気になったこと

  • ブロックチェーンの管理コスト(ネットワーク+DBサイズ)は増大し続けているが、マイナーのような保持に対するメリットを与えていないように見える。