675 / 736BK59

Bitcoin: A Work in Progress

Sjors Provoost:何気ないビットコイン送金の裏側

アドレスのコピーは一瞬です。しかし、その簡単な操作の裏には、ルール、誤りを見つける仕組み、開発者の仕事があります。Provoost の本は、Bitcoin に継続的な技術面の手入れが必要な理由を説明します。

Bitcoin: A Work in Progress は、開発者 Sjors Provoost が Bitcoin の技術的な発展を扱った本です。ウォレットはアドレスをどう読むのか、ノードはネットワークの新しい情報をどう受け取るのか、なぜ小さな変更にも注意が必要なのか。利用者には見えにくい問題を解説します。

プログラムのコードを知らなくても Bitcoin は使えます。だからといって、改善することがもうないわけではありません。Bitcoin Core に貢献する Sjors Provoost は、ネットワークの発展を支える仕事を読者に紹介します。最初の紙版は 2022 年に Purple Dunes から出版されました。本は当時の技術的な課題を扱っており、後から原稿のソースファイルが更新されても初版の刊行年は変わりません。 [1] [2]

知人から届いたアドレスをウォレットに貼り付ける場面を想像してください。利用者にとっては送金の始まりです。開発者には、入力ミスをどう見つけ、送金先をウォレットにどう明確に伝えるかという課題もあります。これは本への入り口として私たちが用意した例で、プログラミングの知識は不要です。目次はアドレスからノード間通信、ルールの変更へと進みます。難しい章は、こうした基礎を理解してから読むとつながりが見えてきます。 [2]

アドレスは、ある金額を後で使うための条件をウォレットが組み立てる際に使う表記です。その条件は、支払いによって新しく作られる部分であるトランザクション出力に記録されます。後で使う際には、通常は有効なデジタル署名によって条件を満たしたことを示す必要があります。ネットワークが利用者名義の銀行口座を管理する必要はありません。Provoost の章は、人がやり取りするアドレスと、コンピューターが確認するルールを分けて説明します。 [3]

アドレスには、転記ミスの検出を助けるチェックサムが含まれます。ただし、アドレスの持ち主までは確認しません。先ほどの例で、別人の正しく表記されたアドレスを誤って貼り付けた場合、検査を通ることがあります。だから意図した受取人の確認も必要です。ウォレットがエラーを示したら、修正する文字を推測するより、正しいアドレスを改めて入手する方が安全です。 [3] [4]

ここからは少し詳しい話です。Bech32 と Bech32m はアドレスの符号化形式です。BIP 350 は、witness バージョン 0 のネイティブアドレスには Bech32、バージョン 1 から 16 には Bech32m を使うと定めています。witness バージョンは、この種類の出力に適用する検証ルールを区別する番号です。新しい形式は、文字の挿入に関するチェックサムの弱点を解消します。古いアドレスがすべて無効になったり、利用者が手作業で変換すべきだったりするわけではありません。 [4]

ノードは Bitcoin ネットワークに接続するプログラムで、Full Node はトランザクションとブロックのルールを自ら確認します。しかし、新しいデータはどこかから受け取る必要があります。Eclipse Attack では攻撃者がノードの全接続を支配し、ネットワークの動きを一部隠せます。ノードは無効なブロックを拒否し続けますが、情報は不完全です。受信したデータを検証することと、必要なデータをすべて入手できることは違う。この点を本は示しています。 [5]

攻撃者が孤立したノードに好きなブロックを押し付けられるわけではありません。自分の支払いについて有効な承認を示すには、必要な計算上の仕事の証拠である Proof of Work を満たした有効なブロックも必要です。接続が回復すると、ノードは累積作業量がより多い別の有効な分岐を発見する場合があります。そちらへ切り替わり、元の支払いが含まれていなければ、以前の承認は成り立たなくなります。安全性にはルール検証と攻撃に強いネットワーク接続の両方が関わります。 [5]

まずアドレスのような、自分の経験と結び付く疑問から始めてください。その解決策で何ができ、どこに限界があるかを追います。この概説は、奥付、公式目次、アドレスと Eclipse Attack に関する公開部分の抜粋、BIP 350 を基にしています。全巻や、その基となったポッドキャスト全体の書評ではありません。当時のネットワークの数値や開発状況は、現在のソフトウェアと区別して読む必要があります。 [1] [2] [3] [4] [5]

理解を深めるには、この項目とあわせて次もお読みください Bitcoin Core, Taproot, コンセンサスルール, ウォレット.

01プログラミングができなくても学べますか?

アドレスやノードの隔離に関する疑問を理解するために、プログラミングは必要ありません。ただし、本には高度な技術の章もあります。身近な場面から始めて少しずつ詳細を加えてください。この概説が説明するのは一部の話題です。

02正しいアドレスと自分の Full Node があれば、安全な送金を保証できますか?

それぞれが対処する問題は異なります。チェックサムは受取人を確認せず、自分のノードを動かしてもネットワークデータを受け取る必要はなくなりません。アドレスの確認、ルールへの適合、チェーンでの承認は関連していますが、互いの代わりにはなりません。

DOC · 001Sjors Provoost — paperback copyright一次資料 DOC · 002Bitcoin: A Work in Progress — official contents一次資料 DOC · 003Sjors Provoost — What Is a Bitcoin Address?一次資料 DOC · 004BIP 350 — Bech32m一次資料 DOC · 005Sjors Provoost — Eclipse Attacks一次資料
改訂日: 一次資料を優先 · 投資助言ではありません