今回はネットワーク参加者の1つであるフルノードについて見ていきます。フルノードは、ビットコインの中核的な機能として、他のプレイヤーがネットワークに接続できるようにする上で重要な役割を担っています。
1.ビットコインの機能と参加者
2.フルノードの運営
3.ブロックチェーンの保存
4.取引のルーティング
今回はネットワーク参加者の1つであるフルノードについて見ていきます。フルノードは、ビットコインの中核的な機能として、他のプレイヤーがネットワークに接続できるようにする上で重要な役割を担っています。
ビットコインの通貨システムの主な機能
中央機関を介さず、通貨システムとして機能させるために、ビットコインのネットワーク上にさまざまな参加者が存在します。
そのようにすることで以下のことが実現可能になります。
1.取引と未使用残高の台帳を正確に維持する。
2.ルールに則って確認された新しい取引を検証する。(コンセンサスメカニズム)
3.正しいデータ形式で取引台帳に追加する。
4.新しいビットコインを規定レートで発行する。(現在、新しいブロックごとに6.25BTC)
5.口座が取引を使用、受信し、元帳と同期することを許可する。
6.外部ユーザー/サービスから取引データを参照するサービスとしての機能。
7.P2Pネットワークの参加者間の情報ルーティング。
サトシ・ナカモトは、これらの機能を、2008年に書いたオリジナルのリファレンスコードにまとめました。 その後、ソフトウェアはアップデートされ、リファレンスクライアントとして提供されてました。現在、最も一般的に利用されているのがBitcoin Coreです。
ビットコインネットワークのさまざまな参加者
ビットコインのネットワークに階層はありませんが、様々なタイプのノードがあり、それぞれが以下の機能を果たすようになっています。
・フルノード: 新規ビットコイン発行を除くすべての機能を持つ。
・SPVノード: ルーティング機能とウォレット機能を持つ。
・マイナー: 新規ビットコインの発行および注文、ルーティングを行う。
・APIクライアント: 外部からBitcoin Coreへの接続を提供する。
・第三者機関のサービス: APIクライアント経由でBitcoin Coreに接続、または直接フルノードに接続して外部サービスに供給。
上記のように、ビットコインネットワークに様々な参加者が存在することは、そのシステムの実行と拡大に積極的に参加する機会があるということですが、その中でもフルノードについては、すべての機能(マイニングを除く)を有しています。
フルノードの実行
スペックの高いコンピュータでBitcoin Coreを実行すれば、誰でもビットコインネットワーク上のノードになることができ、システムの重要な機能を維持させることが可能です。また、ユーザーを増やしてシステムを拡大するサービスを構築したい人には、その橋渡しとなることもできるのです。
これは、有志のチームによって維持・開発されているオープンソースのソフトウェアで、同じ名前であるBitcoin Coreとして知られています。これは、C++で書かれており、Bitcoin.orgから無料でダウンロードすることが可能です。ただし、ビットコインブロックチェーンの取引台帳のコピーが含まれているため、同期には数日かかります。
完全なビットコインブロックチェーンのデータ容量は現在350GB以上と多いですが、ダウンロードすれば(イニシャル・ブロックチェーン・ダウンロード(IBD)と言われています)ビットコインのエコシステムを直接的にサポートする役割を担うことができます。フルノードを実行するということは、ブロックチェーンとして知られるビットコイン取引の元帳の記録を、常に更新することです。従って、フルノードを実行するためには、かなりの帯域幅が必要です。
・フルノードは、ブロックチェーンに新しいブロックを追加する前に、各デジタル署名が正しいかどうか検査をする責任があります。
・フルノードは、プロトコルに従わない取引やブロックを拒否する権限を持っています。
ビットコイン・ブロックチェーンの維持
ビットコインのブロックチェーンは、名前の通り、過去のビットコイン取引のリンクチェーンで、データブロックに記録されています。これによって、通貨システムにとって必要な「正確な決済履歴」が閲覧できるのです。ブロックはタイムスタンプと暗号ハッシュを使って結合され、およそ10分間隔で作成され、2週間ごとにマイニングの難易度が調整されます(詳細は後述)。また、各取引のブロックは、前後の取引の整合性を検証するためのハッシュを持っています。
ビットコインネットワークの最初のブロックは、前のブロックを参照していないため、ジェネシスブロックと呼ばれており、サトシ・ナカモトによってソースコードにハードコードされました。各ブロックのサイズは1MB以下で、約4,000件の取引を収容することができます。(各取引のサイズは平均250バイト)。ストレージを増やすとIBDが大きくなり、それにより参加できる人数が制限されます。
ブロックを生成し、取引を検証し、確認するシステム参加者の詳細を突き詰めれば、もっと理解が深まるでしょう。データベースがモデル化されているように、ビットコインネットワークは過去の取引データと同じリストを含んでいる複製されたデータベースとして機能しています。フルノードは、この「取引データ」(支払い)と「ブロックデータ」(台帳への追加)をネットワークに伝播する役割を持ちます。ビットコインの構造の複雑さは、ノードが互いに独立して行動しながらも、高度に安全で匿名性の高いネットワークを維持していることにあります。
すべての暗号通貨がビットコインのネットワーク構造にモデルにしているわけではありませんが、最初に成功し、現在最大の暗号通貨ネットワークであるのがビットコインであり、そのルールと機能を適用して、後続の多くの暗号通貨のモデルとして使用されているのです。
取引のルーティングと保存
フルノードは、ブロックチェーンの完全なコピーを含むため、送信されたすべての取引を検証します。ビットコイン取引がビットコインネットワークに接続されているノードに送信されると、その取引はそのノードによって検証されます。検証はシステム全体の整合性を維持するために重要であり、フルノードを実行することは、ビットコインには欠かせないのです。
検証は、コンセンサスを確保することを意味します。
・各ブロックが作成できるビットコインの数。(現在6.25BTC)
・ビットコインを使用するための正しい署名がある取引。
・取引/ブロックが正しいデータ形式で行われていること。
・ブロックチェーン内で取引の出力が二重になっていないこと。
問題なければ、各ノードは接続されている他のノードに取引を伝播し、その取引が有効であるかどうかを、成功または失敗のいずれかのメッセージで発信者に返されます。有効な取引であることが証明されると、ノードはその取引を他のノードに伝播し、最終的にマイナーによってマイニング作業が行われた後、次のブロックに追加されます。
一言で言えば、各ノードは、取引を伝播する前に、それらを個別に検証する役割を持ちます。この構造により、ビットコインシステムに対するスパム、サービス拒否、その他の迷惑な攻撃を防ぐことができます。
ビットコインコアとの通信と機能の制御
ビットコインコアはサーバーのように動作しています。つまり、上記のようなすべての機能は、クライアントによってアクセスおよび制御することが可能です。フルノードは、あらゆる言語で利用可能なJSON-RPC(リモートプロシージャコール)形式のコマンドを使用して、プログラムを実行しているので、もしもあなたにプログラミングのスキルがあれば、ビットコインコアと通信し、機能を構築することができるかもしれません。
ビットコインコアが完全なブロックチェーン(ビットコインの取引と残高の履歴台帳全体)を含んでいます。つまり、その情報をどう使うことができるかは、あなたの想像力とプログラミングスキル次第です。
以下は、ビットコインコアと通信する方法のリストです。
Python; Ruby; Erlang; PHP; JAVA ;Perl; Go; .Net; JS; Deno; コマンドライン; C; Clojure; C##
詳細はBitcoin Wikiに掲載されています。しかし、仲介層(クライアント層と呼ばれることもあります)が提供するAPIを利用することで、手間を大きく省くこともできます。
ビットコインノードを運営するメリット
ビットコインのフルノードを運営しても報酬はありませんが、以下のようなメリットがあります。
・フルノードを稼働させることで、取引の安全性が高まる。
1日に複数のビットコイン取引を行う場合、取引に関する最新の情報に直接アクセスすることができます。
・フルノードを実行することで、ビットコインのコンセンサスルールを施行し、ルール違反の取引を拒否する権限を持つことができ、さらに、フルノードが増加し、ブロックチェーンのコピーが増えるほど、ネットワークはより強固かつ柔軟になります。つまり、フルノードを運営することは、セキュリティが向上するだけでなく、ビットコインネットワークの強化にもつながるのです。
・トレーダーやホルダーであれば、市場を動かすような大きな取引にすぐにアクセスすることができます。実際、Lennart Ante氏が発表した研究論文では、トレーダーは自らビットコインノードを動かして市場を見極めるべきだと推奨しています。
・ノードを使用しないと、ビットコインの取引は第三者を介して処理されます。もしプライバシーを気にするのであれば、ビットコインのプライバシーシステムを最大限に活用できるよう、自身でノードを実行した方がいいでしょう。
・ハードフォーク(詳しく後述)の際には、どのブロックチェーンに参加するのか選ぶことができます。つまり、フルノードを運営するというのは、ビットコインの幅広い統治プロセスの1つになるということです。
ノードを運営するということ
ビットコインはこれからも、代替通貨として変革していきます。ノードを運営することで、この暗号通貨の革命に参加することができるのです。ですがその前に、ビットコインノードを運営するにあたって、知っておくべき要件とリスクがあります。
以下をご覧ください。
1) ウォレットの保護
ビットコインノードを運営すれば、ビットコインをビットコインコア
ウォレットに保存することができますが、他の暗号ウォレットと同様に
安全策を講じる必要があります。
2) フルノードに必要な最低条件
・最新版のOSがインストールされたデスクトップまたはノートパソコン
・200GB以上の空き容量、最低100mb/sの読み取り/書き込み速度
・2GB以上のRAM
・500kb/秒以上の高速インターネット環境
・アップロード制限のない、またはアップロード制限の緩い接続環境
・ノードを実行するために1日6時間以上稼働させること
注意:ほとんどのOSでは、スクリーンセーバーが起動すると同時にコンピュータが低電力モードになってしまいます。
これはトラフィックを停止させたり、速度を低下させたりしますので、注意する必要があります。
3)発生しうる問題
・法的問題:法律でビットコインが禁止されている可能性があるので確認が必要。
・帯域制限:ビットコインノードの接続を維持できるデータ帯域を確保できるか、プロバイダーに確認が必要。
・ファイアウォールアクセス:他のブロックチェーンと同様に、スパム業者もビットコインブロックチェーンに攻撃をしてきます。しかし、ビットコインのネットワークは安全であり、ハードウェアに影響を与えることはありません。アンチウイルスプログラムによっては、ビットコインノードの実行が困難になる場合がありますので、運営を開始する前に、アンチウイルスソフトウェアを確認してください。
・対象となるリスク:ハッカーやスパム業者は、ビットコインフルノードを弱体化させるために、あらゆる手段を使ってきます。ハードウェアが攻撃されないよう、こちらも十分な予防策を講じてください。
4)ビットコインノードを実行するためのオプション
ビットコインのフルノードを動かすには、3つの方法があります。
・仮想プライベートネットワーク(VPN)上で実行する。
・Lighting In A Box、Raspiblitz、Nodl、Casa Nodeなどの、すぐに利用できるサービスを使う。
・Raspberry PI 4-ビットコインネットワークのフルノードを実行する能力を持つ、カスタマイズされたサービスを使う。
5) VPNでビットコインノードを実行するためのプロセス
ステップ1:まず、ハードウェアを、ビットコインノードが実行できる状態に
しておく必要があります。
ステップ2:ビットコインノードを実行するために使用するOSを選択します。
Windows(7、8、10)、Linux(Debian、Ubuntuなど)、Mac OSなどがあります。
ステップ3: 説明書に沿ってハードウェアにBitcoinをインストールします。
ステップ4:以下の手順に従って、ポート8333を許可するようにルーターを
設定します。
a) ルーターにログインし、ポートフォワーディング(仮想サーバー)セクションを探します。“NAT”セクション下にあります。
b) IPアドレスを入力します。
c) Internal Port StartとExternal Port Startの両方に'8333'と入力します。
d) “Protocol ”セクションでTCP/UDPを選択します。
e) 適用/保存をクリックします。
ステップ 5: “earn.com ”などのウェブサイトで、ビットコインノードが利用可能であるか確認します。
ビットコインコアの構築と保守の支援
もしあなたが、ビットコインの革命に参加することよりも、暗号通貨そのものを構築することに興味があるのであれば、それも同様に参加は自由です。Bitcoin Coreは支持者のボランティアチームによって維持されており、誰でも自由に変更を提案し、コードをテストし、レビューをすることができます。ビットコインへの大きな変更は、BIPs - Bitcoin Improvement Proposalsと呼ばれるもので提案され、議論・承認という正式なプロセスで行われます。
Segwitを含むチャンスは、BIPsを経由してもたらされました。小規模なバグフィクサーによる修正やメンテナンスは、正式なBIPプロセスを経る必要はありません。これは2018年に、固定供給上限を超えたビットコインの生成につながりかねないのです。つまり、ビットコインそのものの信頼性を破壊しうるケースで修正パッチが必要とされたケースです。
ビットコインコアの改善に貢献するためには、必ずしも開発者である必要はありません。
ドキュメントの改善、翻訳、プロセス変更、UIの改善などを提案することができます。
Bitcoin Coreの構築とメンテナンスをする代わりに、Libbitcoinのようなビットコインとはのまた別のプロトコルがあり、アプリケーション構築のためのオープンソースC++ライブラリの一群として機能するものです。Bitcoin Coreへの貢献についての詳細はこちらです。
公式のサポートチャンネルですので注意してください。
免責事項:
このコンテンツの見解は筆者個人的な見解を示すものに過ぎず、当社の投資アドバイスではありません。当サイトは、記事情報の正確性、完全性、適時性を保証するものではなく、情報の使用または関連コンテンツにより生じた、いかなる損失に対しても責任は負いません。
0.00