Bitcoin は、中央管理者への依存を必須とせずに金銭的価値を移転する開かれた仕組みです。同じ名前がプロトコル、参加者のネットワーク、その通貨単位を指します。単位の記号は BTC で、1 BTC は 100 000 000 satoshi に分かれます。理解するには一つの支払いを追うと役立ちます。誰が価値を動かせるのか、その権限をどう受取人へ渡し、他の参加者は共有履歴への取り込みをどう確認するのでしょうか。
銀行残高は銀行が顧客に負う債務を表します。bitcoin を自己管理する場合、手元にあるのはネットワークの特定の記録について支出条件を満たす手段です。プロトコルが記録するのは金額と条件であり、所有者の実名ではありません。ウォレットはこれらの記録を集計して残高を表示します。コイン自体が携帯電話のファイルとして保存されるわけではありません。保管業者や取引所の残高は通常、鍵を管理するサービスに対する請求権を意味します。技術的に支払いへ署名できることだけで、法的所有権は決まりません。 [Bitcoin Developer Guide — Transactions] [Bitcoin.org — Securing your wallet]
受取人はウォレットが生成したアドレスを伝えます。これは特定の支出条件を持つ出力の作り方を示すもので、コインの郵便受けでも秘密のパスワードでもありません。一般的には秘密鍵で作ったデジタル署名が次の支出を認め、その検証に秘密鍵の公開は不要です。条件には複数の署名や待機を含めることもできます。アドレスを知るだけでは支出できません。ただし必要な秘密を得た者は有効な支出を作れます。ネットワークは鍵の盗難と保有者の同意を区別できません。 [Bitcoin Developer Guide — Transactions]
過去の取引でまだ使われていない出力を UTXO と呼びます。通常の取引は入力で選んだ UTXO を参照し、全体を消費して新しい出力を作ります。適切な 100 000 sat の出力があれば、送金者は受取人に 60 000 sat、自分の管理下に戻すお釣りに 39 000 sat を割り当てられます。残りの 1 000 sat は手数料であり、推奨料率ではありません。元の出力は同じ履歴で再使用できません。お釣りのアドレスは元のアドレスと同じである必要はありません。署名前に受取人、金額、手数料を確認します。 [Bitcoin Developer Guide — Transactions]
ウォレットは支払いを作成し署名します。Full Node は合意ルールに従ってデータを検証します。入力が存在し未使用であること、支出条件が満たされること、通常の取引が余分な価値を作らないことなどを確認します。有効な未確認取引をローカルの待機場所 Mempool に受け入れ、他のノードへ中継することがあります。待機場所と中継方針は各ノードに固有で、中継拒否が必ずしもブロック内での無効を意味するわけではありません。ウォレットは自分のノードか情報を提供する外部サーバーを使えます。自分のノードでも盗まれた署名鍵は守れません。 [Bitcoin Developer Guide — Transactions] [Bitcoin Developer Guide — Operating Modes]
正当な鍵の保有者は、同じ UTXO を使う二つの異なる取引に署名できます。どちらの署名も正しく、参加者によって先に見る支払いが異なることがあります。そのため権限だけでなく共通の順序が必要です。二重支出はコインのファイルの複製ではなく、同じ出力の相反する二通りの使用を通そうとすることです。一つの有効な履歴に入れるのは最大でも片方だけです。メッセージの受信時刻、接続ノード数、ウォレットの表示だけでは、この衝突を全体として解決できません。 [Bitcoin: A Peer-to-Peer Electronic Cash System]
採掘者は候補ブロックを組み立て、難易度の目標を満たす Proof of Work を探してハッシュ計算を繰り返します。ブロックは前のブロックを参照するため、古い履歴を変更するには後続の作業をやり直す必要があります。ノードはまずルールを検証し、有効な分岐から累積作業量が最大のものを選びます。ブロック数が最多とは限りません。採掘は順序決定を助けますが、他人の出力を使う権限は与えません。計算能力の過半数でも、変更していないノードに無効なブロックを強制できませんが、順序や確認の得やすさを妨害することはあります。 [Bitcoin Developer Guide — Block Chain]
受け入れたブロックに取引が入ると最初の確認になります。後続ブロックは通常、その履歴を置き換える費用を増やします。ブロック間隔は時刻表ではなく、10分は長期的目標であって支払い時間の約束ではありません。再編成で受け入れ済みブロックが外れ、取引が未確認に戻るか、競合する支出に置き換わることがあります。必要な確認数は支払いの価値とリスクによって異なり、絶対的確実性は与えません。プロトコルには取り消し担当の管理者がいません。自発的な返金は新しい支払いで、手数料を改めて考える必要があります。 [Bitcoin: A Peer-to-Peer Electronic Cash System] [Bitcoin Developer Guide — Block Chain]
ブロックの最初の取引 Coinbase Transaction は、ブロック補助金と収録取引の手数料を採掘者に割り当てられます。新しい単位を作るのは補助金だけで、手数料は既存価値の移転です。補助金の上限は 50 BTC から始まり、210 000 ブロックごとに半減します。この Halving は手数料には適用されません。整数 satoshi への切り捨てにより、認められる補助金の総和は2100万 BTC 未満です。ノードは過大な報酬を拒否します。鍵を失っても将来の発行は増えず、単位数の上限だけで購買力は決まりません。 [Bitcoin Developer Guide — Block Chain]
ソースコードは調べられ、変更は公に提案できます。開発者はソフトウェアを公開し、ノード運営者は検証するルールを選び、採掘者は候補ブロックの内容を選びます。どの役割も単独では全員の決定を代行できず、互換性のない変更はネットワークを分裂させることがあります。ただし参加者の経済的影響力は均等ではありません。限られたブロック容量はデータ検証と伝播の負担を抑えますが、需要が高いと収録の競争になります。手数料は単なる送金額ではなく、取引サイズと収録需要に関係します。 [Bitcoin Developer Guide — Block Chain] [Bitcoin Developer Guide — Transactions]
公開履歴は検証を可能にする一方、取引所の情報などを通じて支払いと身元を結びつけることも可能にします。仮名性は匿名性ではありません。自己管理では業者に署名を頼む必要がなくなる一方、バックアップ、端末の安全、受取人の確認は保有者の責任になります。バックアップは必要な鍵と設定を復元できなければなりません。ウォレットを復元するだけで漏れた秘密が再び秘密になることはありません。自分のノードは履歴確認を助けますが、価格、プライバシー、安全な署名は保証しません。独立検証では、これらのどの問いを確認しているか理解することが大切です。 [Bitcoin.org — Protect your privacy] [Bitcoin.org — Securing your wallet]
理解を深めるには、この項目とあわせて次もお読みください Satoshi Nakamoto, Bitcoin Whitepaper, Genesis Block, Proof of Work, Full Node, 2,100万BTC上限. 次の項目からも参照されています Satoshi Nakamoto, Bitcoin Whitepaper, Genesis Block, Full Node.