良くクリプト界隈の人は自分でノードを走らせるべき、そうしたらdecentralizedだ、みたいなことを言う。これをクリプトを最近始めた人が聞いて「そうなんだ、じゃあ俺もノードを走らせないと。decentralization万歳(ホワホワ)」みたいな流れになることを良く見かける。これは海外のクリプト界隈でも良くみる。
ここで原理原則からもう一度なぜノードを走らせるべきなのかについて再考したい。結論としてはノードを走らせるメリットは極端に低く、ほんの一部の人だけがノードを走らせればいいんじゃないかと思う。
この記事はあくまで直感的な理解を目的に記述しているので技術的な話は一切しない。深く技術的なことを理解しても意味がなく、それよりも経済的な理解の方が重要だと思う。
まず、なぜ人はノードを走らせるのか。良くある回答が1. ネットワークに参加するため、2. ネットワークをより分散化させるため、3. 資産を奪われないため、など色々な回答がある。それぞれざっと見てみよう
ネットワークに参加するためにノードを走らせる必要があるというのは半分正しい。確かにノードを走らせないとノードのネットワークには参加していないと技術的には見做されてしまう。しかし、多くの人はノードを走らせずに暗号資産を送ったり受け取ったりしている。彼らはネットワークに参加していないのだろうか。多くの人は彼らは実質的にはネットワークに参加していると考えるだろう。
ネットワークをより分散化するため。確かにネットワークはノードが多ければ多いほど分散化する。これは間違いない。しかしだからと言って自分個人がノードを走らせるべきかという利己的な理由にはならない。なんらかの個人的な便益が必要であり、自分以外の人がノードを走るのであれば、自分は分散化したネットワークにただ乗りできる。
資産を奪われないため。これは間違い。自分が管理しているウォレットに暗号資産を持っていれば、ノードを走らせていなくても暗号資産は奪われない。これは公開鍵暗号によるものであり、どの暗号資産もその性質を持っている。
これらの理由では多くの人はノードを走らせる理由として納得できないだろう。人々が欲しいのはノードを走らせる合理的な理由である。漫画を買うのは漫画を読むためであり、漫画家を応援するためではないのと一緒である。
じゃあなぜノードを走らせるのか。
答えは暗号資産を受け取ったことをトラストレスに確認するためである。
これはどういうことか。良くある例で説明する。 例えばあなたがどこかの取引所にビットコインを持ってるとする。このビットコインを自分のハードウェアウォレットに送ってドバイに逃亡したいシチュエーションを想像しよう。この時取引所にログインしてビットコインをこのアドレスに送ってくださいとボタンを色々押す。ここまではもちろんブロックチェーンは一切関係ない。 取引所はあなたの出金指示に従って、ビットコインをあなたのウォレットに送る署名をする。このとき取引所は秘密鍵にアクセスする必要があるけど、ノードを持つ必要はない。 マイナーがこのTxを含めたブロックを採掘したとしよう。
ここであなたはどうやってビットコインを受け取ったかをいつも確認しています? 多くの人はここでtrezorかledger nanoのUIを見て確認しましたと言うでしょう。あるいはどこかのブロックチェーンエクスプローラーにアクセスしてtxないしは自分のアドレスを打ち込んでビットコインが送られていることを確認する。 でもこれって第三者を信用していますよね。trezorのUIが正しい保証はないし、ブロックチェーンエクスプローラーも間違えているかもしれない。取引所がtrezorと実はグルであなたの0.01btcを騙し取ろうとしているのかもしれない。考えただけで恐ろしいですね。
しかしノードを走らせていれば他のノードからtxが送られたことを確認することができ、そのtxに問題がないことを確認することができる。
でもこれはどれほど便利なのだろうか。トラストレスに暗号資産を受け取ったことを確認できるのは言い換えると100%の確率で暗号資産を受け取ったことを確認できることである。
しかしEtherscanやTrezorのUIがあなたを騙そうとする確率は実質ほぼゼロである。そのようなことは今まで起きたことがないし、これからも起きる確率は低いだろう。確率に直すと0.000001%とかではないだろうか。 期待値で表すと、(ノードを走らせず第三者を信用した場合に暗号資産を騙される確率)*(そのtxに含まれる暗号資産の金額)が期待損失であり、この機体損失は非常に小さい。ノードを走らせるインセンティブとしては非常に弱い。
ビットコインやイーサリアムにおいてノードを走らせるコストはすでに低いのは多くの読者は知っているかもしれない。ここでビットコインを例にすると、rasberry piされあればビットコインのノードを走らせることができる。$200ほどである。
https://decrypt.co/55510/how-to-run-a-bitcoin-node-on-a-raspberry-pi-2021
すでにビットコインのノードを走らせるコストは非常に低いのである。しかし、それなのにビットコインのノードは16,000ほどしかない。これに対して、ビットコインを保有している人は約1.8億人いると想定され、ノードを走らせてる人は極端に低いことがわかる。
https://earthweb.com/how-many-people-own-bitcoin/
ノードを走らせるコストが非常に低いのに、誰もノードを走らせていないのである。 これはすなわち、ノードを走らせる時に得られる効用が非常に低いことを意味している。
冷静に考えたら当然である。ノードを走らせることのメリットは暗号資産を受け取ったことを100%の確率でトラストレスに確認できることであり、実際はブロックチェーンエクスポーラーやTrezorのUIを信用して全く問題ないのだから。
では将来暗号資産のadoptionが進むにつれてノードを走らせる人は増えるのだろうか。これはYesだと思う。
まずノードを走らせるコストはすでに十分低い。このコストをさらに下げるのは困難で、例え下げることができたとしてもノードを走らせる人は少ないでしょう。従って、これから自主的にノードを走らせようとする人はコストを下げても増えない。
もしmass adoptionが来るとしたら、多分スマホにノードをダウンロードできるようになる、ないしは最初からスマホにノードがダウンロードされた状態になるであろう。こうなった場合は、かなり多くの人がノードを走らせている状態になる。 しかし、ノードを走らせた時に得られる効用が非常に低いことはすでに示した。したがって、例え全世界の人々がノードを走らせたとしても社会全体の厚生はそこまで良くならないのである。
ノードを走らせることで恩恵を最も受ける層はすでにノードを走らせているわけで、これから例えmass adoptionが進んでもこれからノードを走らせる人は全然恩恵を受けないのである。
なお、USDCやUSDTなどのアセットが乗っているチェーンに関してはさらにノードを走らせる理由がない。なぜならUSDCを受け取ったかどうかはCircle次第であり、あなた個人のノードは関係ない。もしそこに齟齬が生じた場合、Circleはもちろん自分のノードが正しいと決めるので、最初からCircleのノードを参照すればいい。
ほとんどの人はノードを走らせる必要がない。またすでに多くの人はそのことに薄々気付いており、ノードの運用コストが非常に低いのにノードを走らせている人が非常に少ないのはそれを裏付けている。

