このセクションの前の記事では、ピアツーピア ネットワーク上で実行される分散型通貨システムとしてのビットコインのアーキテクチャの概要について説明しました。概要を維持し、アーキテクチャを 2 つの大きなコンポーネントに分割しました。ビットコインが通貨システムとしてどのように機能するかを定義するルール。ソフトウェアの一部と、それを実行するネットワーク参加者の階層として提供されます。
この記事では、重要なシステム機能をさらに詳細に具体化してから、最初のネットワーク参加者であるフル ノードについて見ていきます。フルノードは、ビットコインの中核機能を実現し、他のノードがネットワークに接続できるようにする上で重要な役割を果たします。
中央の仲介者なしで機能する通貨システムを提供するには、ビットコインは次のことを達成する必要があります。
サトシ・ナカモトは、2008 年に作成したオリジナルのリファレンス コードにこれらの関数をカプセル化しました。その後、このコードは更新され、リファレンス クライアントで利用できるようになりました。最も一般的に使用されているのは Bitcoin Core です。
ビットコイン ネットワークには階層はありませんが、必要な機能を多かれ少なかれ満たすさまざまなタイプのノードがあります。
ビットコイン ネットワークの各部分は、そのエコシステムの実行と拡張に積極的に参加する機会を表しますが、フル ノードはビットコイン コアを実行する最も重要なノードであり、デフォルトですべての機能 (マイニングを除く) がネストされています。
Bitcoin Core を実行することで、適度なコンピュータ設定と能力を持つ人なら誰でも Bitcoin ネットワーク上のノードになることができ、重要な機能を果たすのに役立つだけでなく、エコシステムとユーザーの採用を拡大するためのサービスを構築したい人への橋渡しをすることができます。 。
これは、ボランティア チームによって維持および開発されたオープン ソース ソフトウェアであり、紛らわしいことに同じ名前であるビットコイン コアで知られています。
これは C++ で書かれており、Bitcoin.org から無料でダウンロードできます。ビットコインブロックチェーンとして知られる取引台帳のコピーが含まれるため、同期には数日かかります。
完全なビットコイン ブロックチェーンは現在 350 GB を超えていますが、初期ブロックチェーン ダウンロード (IBD) と呼ばれるダウンロードが完了すると、ビットコイン エコシステムのサポートにおいて直接的な役割を果たし始めることができます。
フルノードを実行するということは、ビットコインブロックチェーンとして知られるビットコイントランザクションの台帳の記録を常に更新し続けることを意味します。これは、フル ノードを実行するにはかなりの帯域幅要件があることを意味します。
ビットコイン ブロックチェーンは、その名前が示すように、タイムスタンプ付きの連続したデータ ブロックに記録された過去のビットコイン トランザクションのリンクされたチェーンです。これにより、あらゆる通貨システムに必要な正確な決済履歴記録が提供されます。
ブロックはタイムスタンプと暗号ハッシュを使用して結合され、約 10 分間隔で (マイニング プロセスによって) 作成されます。これを達成するために 2 週間ごとに難易度が調整されます (詳細は後述)。
トランザクションの各ブロックには、ブロックチェーンと呼ばれるブロックの連続パターンを保証する前のトランザクションの整合性を検証するためのハッシュがあります。
ビットコイン ネットワークの最初のブロックは、前のブロックを参照しないため、ジェネシス ブロックと呼ばれます。代わりに、サトシによってソース コードにハードコーディングされました。
各ブロックのサイズは 1MB 以下で、約 4,000 個のトランザクションを収容できる容量があります (各トランザクション サイズは平均 250 バイト)。ストレージが増加すると IBD が大きくなるため、サイズ制限は分散化の目的にとって非常に重要です。
大きすぎると参加できる人が制限されてしまい、開放性や包括性とは相反するものになります。これは、ブロックを生成し、トランザクションを検証および検証するシステム参加者の詳細を入力するときに、より意味のあるものになります。
データベースがモデル化されるのと同じように、ビットコイン ネットワークは複製されたデータベースとして機能し、それぞれに以前のビットコイン トランザクションの同じリストが含まれます。フルノードは、この「トランザクションデータ」(支払い)と「ブロックデータ」(台帳への追加)を伝播します。
ビットコイン アーキテクチャの複雑さは、高度に安全で匿名のネットワークを維持しながら、ノードが互いに独立して動作することを保証することにあります。すべての暗号通貨がビットコイン ネットワーク アーキテクチャに従っているわけではありませんが、これは最初に成功し、現在最大の暗号通貨ネットワークであり、そのルールと機能を適応させて、その後の多くの暗号通貨のモデルとして使用されています。
フルノードには、上で紹介したビットコインブロックチェーンの完全なコピーが含まれているため、送信されたトランザクションを検証します。ビットコイン トランザクションがビットコイン ネットワークに接続されているノードに送信されると、トランザクションはそのノードによって検証されます。
検証はシステム全体の整合性を維持するために非常に重要です。そのため、フル ノードの実行ではビットコインが積極的にサポートされます。検証とは、以下についての合意を確保することを意味します。
有効な場合、各ノードは接続されている他のノードにトランザクションを伝播し、新しいトランザクションの有効性に応じて、成功または失敗のメッセージが同期的に発信者に返されます。
有効なトランザクションであることが証明されると、ノードはトランザクションを他のノードに伝播し、最終的にマイナーによって取得され、必要な Proof of Work が完了した後、次のブロックに追加されます。
この構造により、スパム送信、サービス拒否攻撃、またはビットコイン システムに対するその他の迷惑な攻撃が防止されます。一言で言えば、すべてのノードはトランザクションをさらに伝播する前に、すべてのトランザクションを独立して検証します。
Bitcoin Core はサーバーのように機能します。つまり、上記のすべてのネストされた関数がクライアントからアクセスおよび制御できることを意味します。フル ノードは、あらゆる言語で使用できる JSON-RPC (リモート プロシージャ コール) 形式の set コマンドを使用してこれを行います。したがって、プログラミング スキルがあれば、Bitcoin Core と通信して機能を構築できる可能性があります。
Bitcoin Core には完全なブロックチェーン (ビットコインのトランザクションと残高の履歴台帳全体) が含まれているため、その情報の利用可能性は想像力とプログラミング スキルによってのみ制限されます。
以下は、Bitcoin Core と通信する方法のリストです。
パイソン;ルビー;アーラン; PHP; JAVA;Perl;行く; 。ネット; JS;デノ。コマンドライン; C;クロージュア; C##
詳細については、Bitcoin Wiki をご覧ください。ただし、事前に構築された API の中間層 (クライアント層と呼ばれることもあります) によって、面倒な作業を行ってくれるショートカットが提供されています。
ビットコインノードを実行する利点
フルビットコインノードを実行してもコインの報酬はありませんが、目に見えないメリットが伴います。それらには次のものが含まれます。
ノードを実行することで、代替通貨システムの形成を支援する暗号革命に積極的に参加できます。プロセスを開始する前に、ビットコイン ノードの実行に関連するリスクと要件を理解しておく必要があります。それについて詳しく見てみましょう-
1) ウォレットを保護する
ただし、ビットコイン ノードを実行している場合は、ビットコインをビットコイン コア ウォレットに保存できます。他の暗号通貨ウォレットを実行する場合と同様に、安全対策を講じてください。
2) フルノードの最小要件
注: ほとんどのオペレーティング システムでは、スクリーンセーバーがアクティブになるとすぐにコンピューターが低電力モードに入ることができるため、ラップトップまたはデスクトップが最適な状態で実行されていることを確認してください。これにより、トラフィックが停止または遅くなります。
3) 遭遇する可能性のある問題
3) ビットコインノードを実行するオプション
ビットコイン フル ノードを実行するには 3 つのオプションがあります。
i) 仮想プライベート ネットワーク (VPN) 上で実行します。
ii) Lighting In A Box、Raspiblitz、Nodl、Casa Node などの「すぐに使える」ソリューションで実行します。
iii) Raspberry PI 4 などのカスタマイズされたソリューション上で実行します。Raspberry PI 4 は、ビットコイン ネットワーク上のフル ノードを実行する能力を持つミニ コンピューターです。
4) VPN を使用してコンピューター上でビットコイン ノードを実行するプロセス
ステップ 1: 最初のステップは、ハードウェアをビットコイン ノードを実行できる状態に保つことです。
ステップ 2: ビットコイン ノードの実行に使用するオペレーティング システムを選択します。オプションには、Windows ディストリビューション (7、8、または 10)、Linux ディストリビューション (Debian、Ubuntu など)、および Mac OS があります。
ステップ 3: これらの段階的な手順に従って、ハードウェアにビットコインをインストールします。
ステップ 4: 次の手順に従って、ポート 8333 を許可するようにルーターを設定します。
a) ルーターにログインし、ポート転送(仮想サーバー)セクションを探します。 「NAT」セクションにあります。
b) IP アドレスを入力します。
c) 内部ポート開始と外部ポート開始の両方に「8333」と入力します。
d) 「プロトコル」セクションで TCP/UDP を選択します。
e) 「適用/保存」をクリックします。
ステップ 5: 「earn.com」などの Web サイトで、ビットコイン ノードにアクセスできることを確認します。
エコシステムへの参加ではなく、その背後にあるインフラストラクチャの構築に興味がある場合、それは同様に許可が必要です。
Bitcoin Core は貢献者の自主チームによって維持されており、誰でも自由に変更の提案、コードのテスト、レビュー、コメントを行うことができます。ビットコインコアへの大きな変更は、いわゆるBIP(ビットコイン改善提案)として提案されています。これらには、提案、議論、承認という正式なプロセスが必要です。いわゆるブロックサイズ戦争から生じたSegwitを含む、ビットコインにとって最大のチャンスのいくつかはBIPを通じてもたらされた
小規模なバグ修正やメンテナンスは、重大な脆弱性に対する修正であることがまれにあるため、正式な BIP プロセスを通過する必要はありません。 2018年にはパッチが必要だったので、固定供給上限を超えてビットコインが生成される可能性があり、システム全体の信頼が失墜する可能性があった。
Bitcoin Core の改善を支援するには、必ずしも開発者である必要はありません。ドキュメントの改善、翻訳、プロセスの変更や UI の改善の提案を支援できます。
ビットコイン コアの構築と保守の代替として、ビットコイン アプリケーションを構築するためのオープン ソース C++ ライブラリのコレクションとして機能する、Libbitcoin などのビットコイン プロトコルの完全に別個の実装があります。
Bitcoin Core への貢献について詳しくは、こちらをご覧ください。ただし、これは Bitcoin のサポート チャネルであることに注意してください。次の記事では、ビットコイン ネットワークのサポートにおいてマイナーが果たす役割と、マイニング プロセスに参加する方法について説明します。