183 / 736NEUTRINO

Neutrino

チェーン全体をダウンロードせずに支払いを探す仕組み

ウォレットが自分の支払いを見つけるために、スマートフォンですべての Bitcoin ブロックを保存する必要はありません。Neutrino は調べる価値のあるブロックを選び、必要なデータをネットワークから取得します。端末の負担は軽くなりますが、フルノードと同じ水準の独立した検証ではありません。

Neutrino は Lightning Labs が Go で開発した Bitcoin の軽量クライアントで、Lightning Network を使うモバイルアプリも想定しています。コンパクトブロックフィルターに BIP 157 と BIP 158 を利用します。特定のソフトウェアライブラリの名前であり、軽量ウォレット全般の呼び名でも、すべてのルールを自分で検証する Full Node の代わりでもありません。

Anna はウォレットを開き、受け取った支払いが表示されるのを待っています。正しい状態を表示するには、アプリが Bitcoin ネットワークのデータを取得して処理しなければなりません。Neutrino は、端末にブロックチェーン全体を永久保存せずにこの役割を担えます。ブロックは、Bitcoin ネットワークの共通の履歴に記録される取引のまとまりです。プログラム上のサービス名は ChainService で、接続、ローカルデータベース、ヘッダーの同期を管理します。ヘッダーはブロックの基本情報をまとめた短いデータです。秘密鍵は、資金の使用を承認する電子署名を作るための秘密の数値です。ただし、Neutrino の利用だけでは、誰が Anna の秘密鍵を持つか、誰が送金を承認するかは分かりません。鍵の管理、画面、利用者のバックアップは、このライブラリを使うウォレット側の役割です。 [1]

コンパクトフィルターは、あるブロックの小さな検索索引のようなものです。ウォレットはそれをダウンロードし、探している内容と一致するか端末内で調べます。実際に比べるのはスクリプト、つまり特定の Bitcoin の出力を使うための条件です。出力は取引の一部で、金額と、その資金を後で使うための条件を定めています。ウォレットは相手に自分のアドレス一覧を丸ごと送る必要はありません。一致があれば該当ブロックを取得し、実際の取引を探します。正しく作られたフィルターでも偽陽性は起こり得ます。探していた項目がなく、不要なブロック取得に終わる場合です。したがって、一致だけでは受け取り、金額、そのお金を使えることのいずれも証明できません。 [1] [2] [3]

Anna がスマートフォンを買い替えてウォレットを復元したとします。以前にも支払いを受けていたなら、今日のブロックから先だけを探しても足りません。アプリは正しい監視対象スクリプトと、十分に古い検索開始点を渡す必要があります。文書によると、開始ブロックを指定しない Rescan は最後に把握したブロックから始まり、自動的に全履歴の最初まで戻るわけではありません。正常なフィルターでも、検索対象にないアドレスや飛ばした期間の支払いは見つけられません。復元の完了と、まだ走査中である状態を区別する必要があります。復元中に一覧が空でも、それだけで資金が消えたとは言えません。 [1]

Neutrino はブロックヘッダーとフィルターヘッダーを同期します。ブロックヘッダーでは、つながりと Proof of Work、つまり計算作業の証明を確認し、累積作業量が最大のチェーンを追えます。サーバーの残高を無条件に信じるよりは多くを検証しますが、Full Node のようにすべての取引とルールを独立して確認するわけではありません。また、両者は別々のヘッダーチェーンです。Bitcoin のブロックヘッダーは、これらのフィルターの正しさを直接保証するコミットメントを含みません。暗号学的な指紋であるハッシュを確認するだけでは、内部的には整合している偽のフィルター群を排除できません。省ける作業には、具体的な信頼上の限界があります。 [2] [4]

ピアは、クライアントがデータを受け取るネットワーク上の別のコンピューターです。BIP 157 は応答を比較し、少なくとも一つの正直なピアがいることで不正なフィルターを見つける設計です。すべての接続を同じ攻撃者が支配していれば、接続数だけでは役に立ちません。同じ偽の返答をしたり、新しい状態を隠したりできます。正直な情報源から切り離すこうした状況は Eclipse Attack に関係します。ウォレットに必要なのは単なる接続ではなく、利用可能で十分に独立した情報源です。接続アイコンが緑でも、最新で完全な支払い履歴がある証拠にはなりません。 [2]

Jan が Anna に送金した直後を考えます。取引はまず、あるノードの未承認取引の集まりである Mempool で待ち、マイナーがブロックに取り込むことがあります。Neutrino の文書にある recvtx と redeemingtx の通知は、Mempool に入った時ではなく、ブロック内で承認された時に届きます。未承認の着金も表示したいアプリには、適切な追加の仕組みが必要です。まだ存在しないブロックのフィルターで、その情報は分かりません。送信、ピアによる受け入れ、ブロック承認は別々の出来事です。通知がないだけでは、Jan が何も送っていないとは断定できません。 [1]

フィルターの一致が役立つのは、必要なブロックも取得できる場合です。ネットワークが今は提供できないなら、正しい表示は「データをまだ取得できていない」であって「残高ゼロ」ではありません。再編成でも状態は変わります。ネットワークが累積作業量の大きい別の枝を採用し、以前つながっていたブロックを切り離す場合です。Rescan はブロックの接続と切断を通知し、アプリが記録を再計算できるようにします。プライバシーも完全ではありません。ピアは検索するアドレス一覧を受け取らなくても、特定ブロックへの要求や接続のネットワーク情報を見ることができます。データの取得方法には引き続き意味があります。 [1] [2]

Lightning Network は Bitcoin 上に構築された決済ネットワークです。支払いチャネルでは、二人の参加者が共有資金の配分を更新し、個々の支払いを毎回 Bitcoin のブロックに記録することを避けられます。Neutrino が提供するのはチェーンのデータです。チャネルの現在の状態を復元するためのデータを、利用者に代わって Neutrino 自体が保管するわけではありません。ウォレットの履歴復元とチャネルの復元は、別の作業です。README には要求したフィルターを保存し、ブロックは取得しても永久保存しないとありますが、実際の要件はアプリのバージョンや設定で確認する必要があります。利用前に、そのウォレット固有のバックアップと復元手順、情報源が止まった場合の動作を理解しておきましょう。端末のデータベースが小さくても、これらの責任はなくなりません。 [1] [4]

理解を深めるには、この項目とあわせて次もお読みください Compact Block Filters, Compact Block Filters, Full Node, Lightning Network, Eclipse Attack, Bitcoin. 次の項目からも参照されています Compact Block Filters, Compact Block Filters.

DOC · 001Lightning Labs — Neutrino README一次資料 DOC · 002BIP 157 — Client Side Block Filtering仕様 DOC · 003BIP 158 — Compact Block Filters仕様 DOC · 004Bitcoin developer guide — Operating Modes文書
改訂日: 一次資料を優先 · 投資助言ではありません