スマホをノードと呼ぶには、何を証明しなければならないのか
Gene Son • Xode • OMNI node design ·
スマートフォンでブロックチェーンのライトノードを動かすのは難しいものの、実現できます。本当に難しいのは報酬を加える段階です。設計には誠実さと検証可能性が必要です。
「スマホノード」とは何を意味するのか
モバイル DePIN アプリでは「スマホがノードになる」とよく説明されます。しかし実際には、サーバーが定期的に信号を送り、スマホが稼働中と表示するだけの場合もあります。OMNI では状態フラグによってこの違いを示します。
弱い主張: チェーンから直接受信
バックエンドを経由せず、チェーン RPC から最新ブロックを取得した。仲介は減りましたが、誰かに教えられた数字である可能性は残ります。
強い主張: スマホ自身が検証
端末内のライトクライアントがファイナリティを直接確認した。渡された数字を信じるのではなく、スマホ自身がチェーンを検証します。
2つ目のフラグは、ネイティブ smoldot ライトクライアントの Warp Sync が完了したかを示します。値が 0 なら、まだ検証されていません。未検証の状態を検証済みとは呼びません。これは現在の設計における不便であり、大切な点です。
報酬を導入すると問題は変わります。ノードに報酬が出ると、実際に動かすより、動かしているように見せる簡単な方法を探す人が出てきます。
DePIN の難しさは仕事をさせることではなく、仕事をしたと証明させることです。
ハートビートはなぜ嘘をつけるのか
単純なハートビートは、サーバーから通知されたブロック高に署名します。署名が証明するのは誰が応答したかであり、その答えが正しいかではありません。検証する場所によって、ハートビートの意味が変わります。
サーバー → スマホ: 「誰かに教えられた数字に署名した」
チェーン
P2P → スマホ · smoldot
ファイナリティ検証: 「この端末がチェーンを直接追跡した」
検証する場所によって、ハートビートの意味が変わる検証だけですべてが解決するわけではありません。正しく検証できる端末でも、古い状態を報告し続けることがあります。主張を3つの層に分けて考えましょう。
LAYER 1: このノードは実際にチェーンを追跡したか
端末上のライトクライアントがチェーンを検証し、サーバーの応答をそのまま信じません。
LAYER 2: この端末は固有のものか
ハードウェアキーがウォレットと端末を結びつけ、複製やなりすましを難しくします。
LAYER 3: 新しい参加が実際に続いているか
端末が接続され、参加を続けているかを確認します。アカウントが有効でも端末が停止している場合があります。
失敗を正直に伝える
「稼働中」と「検証済み」を一つの状態にまとめないことが重要です。接続中でもライトクライアントが同期中の場合があります。この2つは同じ意味ではありません。
画面の緑のランプは安心感を与えても、ネットワークが証明した事実とは限りません。同じ数字でも、どこから来たかで意味が変わります。
同じ数字でも、出どころが違えば別のことを伝えます。検証方法が違うからです。
バッテリーとデータ通信は現実の制約
スマートフォンはサーバーではありません。バッテリーも通信費も利用者が負担します。ライトクライアントは軽量に設計し、アプリはストレージと通信量を透明に示す必要があります。
初回同期には時間がかかることがあります。Warp Sync が完了するまでは検証済みと表示すべきではありません。正直な状態表示は、ユーザーの信頼を守る一部です。
これは宣伝文句ではなく、DePIN アプリを作るうえでの現実的な条件です。性能と検証の両方を考え、どちらも隠してはいけません。
まとめ
スマホをノードと呼ぶには3つの問いがあります。チェーンを追跡しているか(ライトクライアント)、それを証明できるか(検証と端末の身元)、そして続けられるか(バッテリーと通信量)。
どれか一つが欠ければ、ほかの要素も意味を失います。検証のないノードは誤認を招き、証明のない報酬は不正を招き、コストを隠す設計は長続きしません。