Full node

提供: tezos-wiki
移動先: 案内検索

Bitcoin networkに接続するコンピュータはすべて「ノード」と呼ばれます。 Bitcoinのすべてのルールを完全に検証するノードは、「フルノード」と呼ばれます。 最も一般的なフルノードのソフトウェア実装は、Bitcoin Coreと呼ばれ、最新リリースは[githubページの[1]にあります。

完全なノードを作るには?[編集]

完全なノードはすべてのブロックとトランザクションをダウンロードし、Bitcoinのコンセンサスルールと照らし合わせてチェックします。コンセンサスのルールの例ですが、さらに多くのものがあります:

  • ブロックは特定のビットコイン数だけ作成することができます。 (現在ブロックあたり12.5 BTC)
  • トランザクションは、使用されるビットコインに対して正しい署名を持っていなければなりません。
  • トランザクション/ブロックは正しいデータ形式でなければなりません。
  • 単一のブロックチェーン内で、トランザクション出力を二重に使うことはできません。

トランザクションまたはブロックがコンセンサスルールに違反すると、ネットワーク上の他のすべてのノードがそれが有効であると考える場合でも、それは絶対に拒否されます。これは完全なノードの最も重要な特性の1つです。つまり、「何があっても」正しいことを行います。フルノードの場合、鉱夫は実際にはかなり制限された電力しか持っていません。トランザクションの順序付けや削除は、多くのコンピューティングパワーを費やすことによってのみ可能です。強力な鉱夫はいくつかの深刻な攻撃を実行することができますが、フルノードはいくつかの理由だけで鉱夫に依存しているため、鉱夫はBitcoinを完全に変更または破棄できませんでした。

異なる 'コンセンサス'のルールを持つノードは、実際には2つの異なるネットワーク/通貨を使用しています。コンセンサスのルールを変更するには、ハードフォークが必要です。これは、新しい通貨を作成し、誰もがそれに移動すると考えることができます。コンセンサスのルールは、ノードやマイナーが特定のことをどのように優先順位付けするかを決める「ポリシー」ルールとは異なります。ポリシールールは自由に変更することができ、異なるノードは異なるポリシールールを持つことができます。すべてのフルノードは相互に互換性を保つために同じコンセンサスルールを使用しなければならないので、最初のコンセンサスルールにバグや奇妙さを複製しても、完全なノードをゼロから作成することは非常に困難で危険です。したがって、完全なノードを実行することを望む人は、正しく動作することが保証されている唯一のクライアントである参照クライアントに基づくソフトウェアを使用することをお勧めします。

少なくとも、完全なノードは、今までに発生したすべてのトランザクション、すべての新しいトランザクション、およびすべてのブロックヘッダーをダウンロードする必要があります。さらに、フルノードは、未使用のトランザクション出力がすべて消費されるまでその情報を格納する必要があります。デフォルトでは、完全なノードは、新しいトランザクションを少なくとも2回ダウンロードするという点で非効率的であり、使用されないトランザクション出力(<2 GB)だけが必要であってもブロックチェーン全体(20180214時点で165 GB以上) -blocksonly </ code>モードを有効にして[2]を有効にすると、 #wallet-pruning pruning]を実行します。

アーカイブノード[編集]

フルノードのサブセットは、着信接続を受け入れ、古いブロックをネットワーク上の他のピアにアップロードします。これは、ソフトウェアがデフォルトで<code> -listen = 1 </ code>で実行されている場合に発生します。いくつかのよくある誤解とは対照的に、アーカイブノードはフルノードである必要はありません。ユーザーの帯域幅が制限されている場合、ディスクスペースに制約がある場合、刈り込みを使用でき、ビットコインのコンセンサスルールを適用し完全に有効なノードである場合は、<code> -listen = 0 </ code>ビットコインの全体的なセキュリティに

完全なノードを実行する理由は何ですか[編集]

要約[編集]

Bitcoinを信頼できない方法で使用できる唯一の方法は、フルノードを実行することです。 Bitcoinのすべてのルールが確実に実行されていることがわかります。たとえば、ビットコインが所有者に属していない、コインが2回使われていない、 scheduleの外でインフレが発生していない、システムを動作させるために必要なすべてのルール(例えば、[[難しさ])に従うこと。現在フルノードはBitcoinを使用するための最も private方法であり、誰もあなたに属しているBitcoin addressesを学習していません。フルノードはBitcoinを使用するための最も安全な方法です。軽量の財布に影響する多くの攻撃に悩まされることはありません。

経済力[編集]

これは、完全なノードを実行するための最も重要な理由ですが、理解するのは少し難しいです。

前に説明したように、完全なノードは何があってもコンセンサスルールを強制します。しかし、軽量ノードはこれをしません。軽量ノードは、大部分の鉱業権が何を言っているかを問わない。したがって、鉱夫の大半がブロック報酬を増やすために一緒になった場合、軽量ノードはそれに伴って盲目的になります。これが起こった場合、ネットワークは、軽量ノードと完全ノードが別々の通貨を使用して別々のネットワーク上に終わるように分割されます。軽量ノードを使用する人は、フルノードを使用する人とは取引できません。すべての企業や多くのユーザーがフルノードを使用している場合、このネットワーク分割は「重要」な問題ではありません。軽量クライアントのユーザーは、ほとんどの人とビットコインを送受信できない通常はビジネスを行うので、悪用された鉱夫が克服されるまでBitcoinの使用を止めます。これは適切な対応です。しかし、ネットワーク上のほとんどすべての人がこの状況で軽量ノードを使用しているとすれば、誰もがお互いに取引できるようになり、Bitcoinは邪悪な鉱夫によって「ハイジャック」することになります。

実際には、鉱夫が多額の資金を失うため、完全なノードが普及している限り、鉱夫は上記のシナリオのようなものを試すことはまずありません。しかし、誰も軽量ノードを使用すると、インセンティブは完全に変化します。その場合、鉱山労働者は間違いなくBitcoinのルールを変更するインセンティブがあります。 Bitcoinの経済のほとんどが完全なノードを使用するため、軽量ノードを使用するのは合理的に安全です。

したがって、Bitcoinの生存には、Bitcoin経済の大半が、軽量ノードではなく、フル・ノードによってサポートされることが不可欠です。これは、より経済的なウェートを持つBitcoinビジネスにとって特に重要です。 Bitcoinの経済的強みに貢献するためには、実際のトランザクションに完全ノードを使用する必要があります(または、個人的に管理する完全ノードに接続された軽量ノードを使用する必要があります)。どこかのサーバー上で完全なノードを実行しても、Bitcoinの経済力には寄与しません。

詳細https://www.reddit.com/r/BitcoinBeginners/comments/3eq3y7/full_node_question/ctk4lnd

プライバシー[編集]

あなたのハードドライブに格納されたブロックチェーンを持つことは、財布を持っている最もプライベートな方法です。他のすべての軽量ソリューションでは、サードパーティのサーバーにクエリを実行する必要があるため、どのアドレスが自分のものであるかに関する情報が漏洩します。 Electrumサーバーはどのアドレスがあなたに属しているかを知り、一緒にリンクすることができます。ブルームフィルタリングにもかかわらず、BitcoinJに基づくSPVノードは、ウォレットに直接接続しているノードに対してプライバシーを提供しません<ref> BitcoinJのプライバシー </ ref>

多くのユースケースでは、このようなプライバシーは必要ない場合があります。しかし、完全なノードを実行してウォレットとして使用する重要な理由は、完全なプライバシーの利点を得ることです。

セキュリティ[編集]

軽量ノードは、実際には有効でないトランザクションやブロックを受け入れることに一時的に騙されることがあります。これにより、特にBitcoinトランザクションを自動的に処理するWebサイトに重大な損害を与える可能性があります。完全なノードは最大限のセキュリティを提供します。したがって、すべての企業で使用する必要があります。通常のユーザーは、いつでも使用することができます。

ネットワークサービス[編集]

完全なノードは、他のネットワーク参加者に(ソフトウェアが<code> -listen = 1 </ code>でデフォルトで実行されている場合)さまざまなサービスを提供する可能性があります。軽量ノードでは特に重要です。

これらのサービスは次のとおりです。 軽量ノードが、独自のトランザクションを見つけるためにネットワーク上で行われたすべてのトランザクションをダウンロードする必要がないように、軽量ノードに代わってトランザクションとブロックをフィルタリングします。

  • しばらくの間オフラインになっていたノードへの履歴フルブロックの配信。
  • ユーザーから鉱夫に新しい取引を送信する。
  • 鉱夫から他のノードに新しいブロックをブロードキャストします。

ほとんどの場合、これらのサービスは、ポート8333でリッスンしている完全ノードによってのみ有効に実行されます。着信接続を受け入れるノードがいっぱいになるほど、Bitcoinネットワークでサポートできるユーザーが増えます。不足が残っていても、安価にVPSまたはAWSスペースをレンタルすることで、多数のアーカイブノードを簡単に作成できます。

一部はそれを刺激している[編集]

Bitnodesは2015年末までフルノードオペレータにインセンティブを与えるプログラムを実行しました。<ref> first -incentives-node-operators/ BitnodesプロジェクトはノードJoel Dalasによる[http://bitcoinmagazine.com/ Bitcoin Magazine </ i>のオペレータ; cf. https://blog.bitcoinfoundation.org/bitnodes-project-2015-q1-report-peer-index-and-incentivized-full-nodes/ </ ref>

完全なノードを実行する方法[編集]

Bitcoin Core / Bitcoindウォレットを実行すると、完全なノードが実行されています。ポート8333を開くと、ネットワークの容量に貢献します。ウォレット機能を実際に使用している場合や、MultiBitのような軽量クライアントを使用して完全ノードにのみ接続するように構成すると、ネットワークの経済的な強さに貢献し、軽量ノード。

代替フルノード実装がいくつかありますが、コンセンサス規則を100%正確に実装するかどうかを判断することは現時点では困難なため、重大な使用はお勧めしません。ごくわずかな不正確さであっても、これらの代替クライアントのユーザーにとって深刻な問題を引き起こす可能性があります。実装例Bitcorelibbitcoinbtcd

ノードを動かすためのヒントと秘訣[編集]

Bitcoin Coreの場合:

  • 外部ハードディスクにブロックチェーンファイルを保存するには `-datadir`を使います。例えば`-datadir = / path / to / your / bitcoin / directory`

関連項目:Bitcoinの実行中

関連項目[編集]

参考文献[編集]

<リファレンス/>

Category:技術