本文へスキップ
buybitcoinsmart

用語集 / ノードとソフトウェア

DNSシード

DNSシードとは?
DNSシードとは、到達可能なビットコインのノードのIPアドレスを返すドメイン名のことで、インストールしたばかりのノードが最初の接続を行う宛先を提供します。

ビットコインにはディレクトリサーバーがないため、新しいソフトウェアは問い合わせてネットワークを見つける必要があります。Bitcoin Coreは、シードのホスト名の短いリストをハードコードして同梱しており、それを一度だけ名前解決し、ポート8333で8本の外向き接続を開き、その後はそれらを使いません。最初のハンドシェイク以降のすべては、ピア自身から学習します。

仕組み

各シードのホスト名の背後には、静的なファイルではなくクローラーがあります。

運営者は、ピアツーピアネットワークを巡回し、耳にしたすべてのアドレスへの接続を試み、最近応答したものを記録するソフトウェアを動かしています。ホスト名はそのプールから取り出したAレコードとAAAAレコードに解決され、1回の問い合わせにつき数十個のアドレスが返り、TTL(有効期間)が短いため回答は入れ替わり続けます。一部のシードはサービスのビットによる絞り込みにも対応しており、コンパクトブロックフィルターを提供するピアを必要とするノードは、それだけを返すサブドメインを問い合わせることができます。

ホスト名はBitcoin Coreのソースのkernel/chainparams.cppにあり、ネットワークごとに別々のリストになっています。メインネットのリストは実名の個人によって維持されています。seed.bitcoin.sipa.beはPieter Wuilleが、dnsseed.bluematt.meはMatt Coralloが、seed.btc.petertodd.netはPeter Toddが運営しています。リストを短く、誰が運営しているか分かる形に保つのは意図的なもので、シードの運営者があなたが誰と出会うかを選ぶからです。

初回起動時に、ノードはこれらの名前を解決し、アドレスマネージャーを埋め、完全リレーの外向き接続8本に加えて、トランザクションの伝播を行わず監視者に見つかりにくいブロックリレー専用の接続2本を開きます。その後はgetaddrメッセージとaddrメッセージを通じてアドレスを集め、peers.datにキャッシュするため、以降の再起動では名前解決を完全に省きます。すべてのシードに到達できない場合、Coreはバイナリに組み込まれた固定ノードアドレスのリストに切り替えます。また、dnsseed=0と、すでに信頼しているピアを指すseednodeまたはaddnodeの項目を設定すれば、この仕組み全体を迂回できます。

目にする場面

ほとんどの人がDNSシードに気づくのは、ノードのデバッグログの最初の数行だけです。

peers.datのないマシンでbitcoindを起動すると、ログにDNSシードからアドレスを読み込んでいることが記録され、その後接続数がゼロから増えていきます。ターミナルからdigを使って同じ問い合わせを自分で行うこともでき、ノードが受け取るのと同じ、入れ替わり続けるIPアドレスの集合が返ります。

知っておく価値のあるプライバシー上のコストがあります。この問い合わせは通常の暗号化されていないDNSクエリであるため、あなたのリゾルバーとインターネットプロバイダーは、あなたの回線でビットコインのノードが起動していることを見ることができます。ただし、その問い合わせからあなたのウォレットや残高に関する情報は何も明らかになりません。それが気になる場合は、Tor経由でノードを実行するか、dnsseed=0を設定して最初のピアを自分で用意してください。

信頼の問題は見た目より限定的です。悪意のあるシードはブロックやトランザクションを偽造できません。あなたのノードは受け取るすべてを、自分自身のルールの写しに照らして検証するからです。それができるのは、自分が管理するアドレスだけを返して、あなたを正直なネットワークから孤立させることです。だからこそCoreは複数のシードに問い合わせ、接続を異なるネットワーク範囲に分散させ、それらのブロックリレー専用の接続を静かな第二の意見として維持しています。

DNSシードvsシードフレーズ

DNSシードはピアを見つけるための公開されたホスト名であり、シードフレーズはあなたのコインを管理する12語または24語の秘密の単語です。両者は言葉を1つ共有するだけで、それ以外に共通点はありません。DNSシードは何も秘密ではなく、あなたのウォレットに触れることもなく、正当な設定手順がネットワーク設定画面にリカバリー用の単語を入力させようとすることは決してありません。

混同しやすい用語

よくある質問

DNSシードはシードフレーズと同じものですか?

いいえ、両者は言葉以外に共通点がありません。DNSシードは、あなたのノードが他のノードを見つけるために問い合わせる公開されたホスト名です。シードフレーズは、あなたのビットコインを使用できる秘密の単語のリストであり、ネットワーク設定に近づくことは決してありません。

DNSシードの運営者は私のコインを盗んだり、偽のブロックを送りつけたりできますか?

いいえ。シードが提供するのはピアのIPアドレスだけであり、あなたのノードはすべてのブロックとトランザクションを自分自身で検証します。現実的なリスクは孤立であり、悪意のあるシードが自分のノードだけを返す状況のことです。Bitcoin Coreは複数のシードに問い合わせ、接続を分散させることでこれに対抗しています。

関連用語

ノードとソフトウェアのその他の用語

このページを英語で読む