Mastering Bitcoin: 5章 トランザクション のまとめ

NO IMAGE

現在、翻訳とまとめ中です。

以下のMastering Bitcoinを参考にして、個人的に重要なところをまとめたものです。
Mastering Bitcoin Chapter 5. Transactions

序文

トランザクション・ライフサイクル

  • origination

トランザクションの生成

小切手のようだ

トランザクションをビットコイン・ネットワークにブロードキャスト

  • トランザクション: 300 – 400 bytes のデータ
  • 送信者を信用する必要がない
  • 安全でないネットワーク上でも送信可能(WiFi, Bluetooth, NFC, Chirp, バーコード, Webフォームへのコピペ)

ビットコイン・ネットワーク上のトランザクションの伝播

  • トランザクションが、invalidの場合、ノードはリジェクトして、リジェクトメッセージを送信者に送り返す

トランザクションの構造

  • データ構造: input, output
  • inputs, outputsは、アカウントやIDとは関係がない
  • inputs, outputs は、ビットコインの量として考えるべき

トランザクションの構造

サイズ フィールド 説明
4 bytes バージョン どのルールに従うかを指定
1–9 bytes (VarInt) 入力カウンタ いくつの入力が含まれるか
Variable 入力 1つ以上のトランザクション入力
1–9 bytes (VarInt) 出力カウンタ いくつの出力が含まれるか
Variable 出力 1つ以上トランザクション出力
4 bytes ロックタイム Unixタイムスタンプか、ブロック番号
  • トランザクション・ロックタイム
    • トランザクションが、ブロックチェーンに追加されうる最も早い時間を定義する
    • ほとんどのトランザクションでは、即時に実行させるため0をセットする
    • ロックタイムが、0でなく5億以下の場合、ブロックの高さという意味に訳される
    • それが意味することは、指定したブロックの高さより前にブロックチェーンに含まれない、ということ
    • ロックタイムが、5億以上の場合、Unix Epochタイムスタンプに訳される
    • 指定した時間より前にトランザクションがブロックチェーンに含まれないということ

トランザクションの出力、入力

  • 未使用出力: UTXO (unspent transaction output)
  • ユーザがビットコイン受け取った時は、その量がUTXOとしてブロックチェーンに記録される
  • ユーザのビットコインは、トランザクションやブロックのあちこちに散らばっているかもしれない
  • 事実上、ビットコイン・アドレスや口座の残高のようなものはない。あるのは、特定所有者にロックされているあちこちに散らばったUXTOだけ
  • ユーザのビットコイン残高は、ウォレット・アプリケーションから作れれている
    • ウォレットは、ブロックチェーンをスキャンし、ユーザ所有の全UXTOををまとめることで、ユーザの残高を計算している
  • 20ビットコインのUXTOを持っていて、1ビットコインを支払いたい場合は、20ビットコインを消費して、2つの出力を作らないといけない。一つは、1ビットコインを送信者へ、もう一つは、19ビットコインをお釣りとして自分のウォレットへ。
  • 結果、ほとんどのビットコイン・トランザクションは、お釣りを生成する

  • トランザクションにより消費されたUTXOを、トランザクション入力と呼ぶ

  • トランザクションにより作られたUTXOを、トランザクション出力と飛ぶ
  • 現在の所有者の署名でアンロックすることで、トランザクションはUTXOを消費する
  • 新しい所有者のビットコイン・アドレスに対してロックすることで、UTXOを作り出す

  • 出力、入力への例外は、コインベース・トランザクションと呼ばれる特殊な種類のトランザクション。各ブロックの最初のトランザクション

  • Tip: どちらが先か?入力か、出力か? コインベース・トランザクションがあるので、出力が先

トランザクション出力

  • UTXO set か、UTXO pool
  • トランザクション出力は、2つのパートからなる
    1. ビットコインの量。最小単位のsatoshi
    2. ロッキング・スクリプト。出力を使うための条件を指定することで上記量をロックするencumbrance(邪魔者?)としても知られる。

トランザクション出力の構造

サイズ フィールド 説明
8 bytes ビットコインの値(satoshis) (10^-8^ bitcoin)
1-9 bytes (VarInt) ロッキングスクリプトのサイズ ロッキング・スクリプトの長さ(bytes)
Variable ロッキング・スクリプト 出力を使うのに必要な条件を指定するスクリプト

blockchain.info APIを呼んで、あるアドレスに関係するUTXOを見つけるスクリプト

# get unspent outputs from blockchain API

import json
import requests

# example address
address = '1Dorian4RoXcnBv9hnQ4Y2C1an6NJ4UrjX'

# The API URL is https://blockchain.info/unspent?active=
# It returns a JSON object with a list "unspent_outputs", containing UTXO, like this: #{ "unspent_outputs":[ # { # "tx_hash":"ebadfaa92f1fd29e2fe296eda702c48bd11ffd52313e986e99ddad9084062167", # "tx_index":51919767, # "tx_output_n": 1, # "script":"76a9148c7e252f8d64b0b6e313985915110fcfefcf4a2d88ac", # "value": 8000000, # "value_hex": "7a1200", # "confirmations":28691 # }, # ... #]} resp = requests.get('https://blockchain.info/unspent?active=%s' % address) utxo_set = json.loads(resp.text)["unspent_outputs"] for utxo in utxo_set: print "%s:%d - %ld Satoshis" % (utxo['tx_hash'], utxo['tx_output_n'], utxo['value'])

支払い条件 (encumbrances)

トランザクション入力

  • 簡単に言えば、トランザクション入力は、UTXOへのポインタ
  • UTXOがブロックチェーンに記録された場所のトランザクション・ハッシュとシーケンス番号へのリファレンスによって、特定のUTXOを指す
  • UTXOを使うために、トランザクション入力はアンロッキング・スクリプトを含む
  • アンロッキング・スクリプトは、通常ロッキング・スクリプトの中に入っているビットコイン・アドレスの所有権を証明する署名
サイズ フィールド 説明
32 bytes トランザクション・ハッシュ 支払い用のUTXOを含むトランザクションへのポインタ
4 bytes 出力インデックス 支払い用UTXOのインデックス番号。最初は0
1-9 bytes (VarInt) アンロッキング・スクリプトのサイズ アンロッキング・スクリプトの長さ(bytes)
Variable アンロッキング・スクリプト UTXOのロッキングスクリプトの条件を満たすスクリプト
4 bytes シーケンス番号 現在、無効なTx-replacement機能, 0xFFFFFFFFに設定
  • Note:

(まとめ途中。1/3位?)

トランザクション・フィー

     

免責事項

本記事に掲載されている記事の内容につきましては、正しい情報を提供することに務めてはおりますが、提供している記事の内容及び参考資料からいかなる損失や損害などの被害が発生したとしても、弊社では責任を負いかねます。実施される際には、法律事務所にご相談ください。

技術・サービス・実装方法等のレビュー、その他解説・分析・意見につきましてはblock-chani.jp運営者の個人的見解です。正確性・正当性を保証するものではありません。本記事掲載の記事内容のご利用は読者様個人の判断により自己責任でお願いいたします。

     

コンセンサス・ベイス(株)とブロックチェーン事業を行なってみませんか?

当サイトを運営するコンセンサス・ベイス株式会社は、2015年設立の国内で最も古いブロックチェーン専門企業です。これまでに、大手企業の顧客を中心に、日本トップクラスのブロックチェーンの開発・コンサルティング実績があります。

ブロックチェーンに関わるビジネスコンサル・システム開発・教育・講演などご希望でしたら、お気軽にお問い合わせください。

     
     

ブロックチェーン学習に最適の書籍の紹介

図解即戦力 ブロックチェーンのしくみと開発がこれ1冊でしっかりわかる教科書

ブロックチェーン イーサリアムへの入り口 第二版 (ブロックチェーン技術書籍)

本書は、ブロックチェーン技術に興味を持ったエンジニアや、その仕組みを学び、自分の仕事に活かしたいビジネスパーソンを対象にして、ブロックチェーンのコア技術とネットワーク維持の仕組みを平易な言葉で解説しています。この本を読んだうえで、実際にコードを書くような専門書、ブロックチェーンビジネスの解説書を読むことで、理解度が飛躍的に高まるでしょう。(はじめにより)

ビットコイン(Bitcoin)カテゴリの最新記事