BitDNS と Bitcoin の汎用化

appamatto 2010年11月14日 18:02 UTC 原文 ·

これは 2010年11月14日の IRC チャンネルでの議論に基づくものである。

BitDNS

過去に DNS を分散的に扱う試みはあったが、権威を完全に排除した解決策はこれまでなかったと思われる。

もしそのような解決策が存在していたなら、その上にビットコインを直接実装することもできたはずだが、周知の通りそうはならなかった。

しかし、ビットコインのクローン(BitDNS)を作成することで、分散型かつ権威不要のドメイン名の割り当てと移転に対する解決策を提供できる可能性がある。

基本的に、このシステムはビットコインのコピーであり、マイナーがブロックを獲得するたびに、自分の選んだ 50個の新しいネーム・マッピングを生成する。ネーム・マッピングは BTC と同様の方法で所有者が変わる。

このシステムは BTC とは別個のものであり、エスクローサービスが BTC でのネーム市場を提供する可能性が高い。なぜなら、そのようなエスクローは 2 つのブロックチェーンを活用してトランザクションを検証できるからである。マイナーは、エスクローに資金が預けられて既に入札が行われているネームを選ぶことで、生成したネームを素早く売却できるようにすることができる。

Bitcoin の汎用化:BitX

ここまでは良いが、現在 2 つのブロックチェーンが存在することになり、マイナーは一度に 1 つしか生成できない。ビットコインに類似した特性を必要とするがまだ開発初期で攻撃に脆弱な、より賢いアプリケーションが開発されると、この問題はさらに深刻になる。そこで登場するのが BitX であり、単一のブロックチェーン上であらゆるそのようなアプリケーションをサポートするように設計されている。

BitX はビットコインと同様のブロックチェーンを持つ。ただし、マイナーは以下の方法で任意のアプリケーションデータを配布することを選択する:

  1. ブロック内のペイロードは、アプリケーション名からハッシュへのマッピングである:[“bitcoin”: , “bitDNS”: , “bitHaiku”: , …]

  2. 各ブロックは、ブロックチェーン上にまだ存在しない新しいアプリケーションを 1 つだけ作成できる。これはスパム防止のためである。

  3. 各ブロックは、任意のアプリケーションのデータを省略することができる。現在の状況と同様に、マイナーはどのトランザクションを含めるかを選択でき、これはどのアプリケーションのデータを送信するかの選択にも拡張される。

  4. アプリケーションデータは別個に転送されるため、例えばビットコインのクライアントが俳句や DNS ネームを気にする必要はない。誰かにビットコインのペイロードを要求し、適切なブロック内のハッシュと一致することを確認するだけでよい。

  5. クライアント側では、ブロックは上記 4 点に関連するエラーの場合にのみ拒否される。つまり、誤ったビットコインのペイロードを含んでいるという理由でブロックが拒否されることはない。なぜなら、それにより有効な DNS 移転が拒否される可能性があるからである。代わりに、ビットコインのクライアントは最新のブロックを受け入れるが、無効なビットコインのトランザクションは無視する。

マイナーは自分が利益を得られると考える活動に従事する。例えば、マイナーは俳句に利益の動機を見出さないかもしれないが、DNS ネームは容易に売却できるため生成したいと考えるだろう。このシステムは、ブロックチェーン自体にわずかなオーバーヘッドを追加するだけで、非常に幅広い有用なアプリケーションをサポートできると考える。アプリケーションの増殖はマイナー自身の利害によって制御される。

また、これによりブロックチェーンはよりモジュラーになるようである。関心事が分離され、ブロックチェーンは世界中のすべての人にとってのシステムの普遍的な状態を作成することに厳密に限定され、アプリケーションデータは帯域外で移動するがブロックチェーンに対して検証される。

このモジュール性の一つの効果は、アプリケーションが違法または望ましくないアプリケーションデータを無視し、自分が関心のあるアプリケーションのペイロードだけをダウンロードできることである。

最後に一つ:BitX はビットコインにとって重大な脅威をもたらす。なぜなら、通貨がブロックチェーンの「キラーアプリ」ではない可能性があるからだ。つまり、bitBeanieBabies がビットコインより大きくなったらどうなるのか? 突然、ビットコインシステムのセキュリティが低下したように見える。両方が BitX 上で動作していれば、互いのセキュリティを強化し、干渉は最小限に抑えられるだろう。

読んでくれてありがとう。 Appamatto

Anonymous 2010年12月6日 11:53 UTC 原文 ·

ストレージ用のデータベースを探しているなら、Tahoe-LAFS を勧める。

kiba 2010年12月6日 13:12 UTC 原文 ·
Anonymousの投稿(2010年12月6日 02:53 UTC)

ストレージ用のデータベースを探しているなら、Tahoe-LAFS を勧める。

忘れるな、スピードが最重要だ。データベースはいつでも別のものに置き換えられるが、時間は取り戻せない。

本質的でない機能はすべて実装の優先対象から外すべきだ。

つまりコア開発者は派手な GUI に取り組まない。彼らが集中すべきは以下だ:

  1. ドメイン名のマイニング、登録、変更の仕組み。

  2. DNS データベースの配布または出力の仕組み。

kiba 2010年12月9日 19:51 UTC 原文 ·

コードリポジトリは存在せず、DomainChain/BitDNS の最善のルートについてまだ議論している。

  • kiba は焦っている。

BitDNS が完全に別のネットワークと別のブロックチェーンでありながら、Bitcoin と CPU パワーを共有できるようにすることは可能だと思う。唯一の重複は、マイナーが両方のネットワークのプルーフ・オブ・ワークを同時に検索できるようにすることだ。

ネットワーク間の調整は不要だ。マイナーは両方のネットワークに並行して接続する。ヒットを得た場合、潜在的に両方を同時に解決するように SHA をスキャンする。一方のネットワークの難易度が低い場合、その片方のネットワークだけの解決になるかもしれない。

外部マイナーが両方のプログラムで getwork を呼び出し、作業を組み合わせることができると思う。例えば Bitcoin を呼び出し、そこから作業を取得し、BitDNS getwork に渡して組み合わせた作業にするとか。

断片化する代わりに、ネットワークは互いの合計 CPU パワーを共有し強化する。これは、複数のネットワークがある場合に利用可能な CPU パワーが 1 つのネットワークに集中すると互いに危険になるという問題を解決する。代わりに、世界中のすべてのネットワークが合算された CPU パワーを共有し、全体の強度を高める。小さなネットワークが既存のマイナーの基盤を活用して容易にスタートできるようになる。

ribuck 2010年12月9日 21:05 UTC 原文 ·

Kiba、この返信はサトシが上に投稿する前に書いたものだ。サトシの投稿を理解するには少し時間が必要だ。

kibaの投稿(2010年12月9日 19:51 UTC)
  • kibaは不安だ。

不安に思わなくていい。コーディングを始める前に設計の方向性を合意するのに 2 週間かかるだろうと既に言ったはずだ。

過去 24時間で素晴らしい進展があった。非標準トランザクションの扱いに関するギャビンの変更が、Bitcoin に統合されたドメイン登録を排除するものではないことが明らかになった。

また、俺の DomainChains のアイデアと theymos/nanotube の設計の間の距離も小さくなっていることが分かってきた。彼らの設計は、俺が以前思っていたほどドメイン名サーバー運営者と絡み合っていない。

頑張れ! 長期的な結果から見れば 2 週間など何でもない

nanotube 2010年12月9日 21:20 UTC 原文 ·
サトシ・ナカモトの投稿(2010年12月9日 12:02 UTC)

BitDNS が完全に別のネットワークと別のブロックチェーンでありながら、Bitcoin と CPU パワーを共有できるようにすることは可能だと思う。唯一の重複は、マイナーが両方のネットワークのプルーフ・オブ・ワークを同時に検索できるようにすることだ。

理論的には素晴らしく聞こえる……

マイナーは基本的に「追加の作業」をしなければならないようだ。追加の作業から BitDNS マイニングの報酬がなければ(もちろんメインの Bitcoin 作業を遅くする)、マイナーが BitDNS(およびその他のサイドチェーン)を含めるインセンティブは何だろう?

この件についてのさらなる考えをぜひ聞きたい。😊

サトシ・ナカモトの投稿(2010年12月9日 21:02 UTC)

BitDNSが完全に別のネットワークと別のブロックチェーンでありながら、BitcoinとCPUパワーを共有できるようにすることは可能だと思う。唯一の重複は、マイナーが両方のネットワークのプルーフ・オブ・ワークを同時に検索できるようにすることだ。

ネットワーク間の調整は不要だ。マイナーは両方のネットワークに並行して接続する。ヒットを得た場合、潜在的に両方を同時に解決するようにSHAをスキャンする。一方のネットワークの難易度が低い場合、その片方のネットワークだけの解決になるかもしれない。

これは非常に、非常に興味深い。検討に値する。

実際にどう動くのか詳しく説明してくれないか? 別個のネットワークと別個の blockchain ということは、ネットワークごとに別のブロックヘッダーをハッシュし、結果のハッシュも異なるということではないのか?

俺が思いつくのは、完全に素朴で少しキャッシュに優しくない実装だけだ……

while (nonce < 0xffffff)
    nonce++
    for each network
        data_block[nonce_offset] = nonce        // つまり俺たちの nonce
        scanhash(data_block)

または

for each network
    while (nonce < 0xffff)
        data_block[nonce_offset]++
        scanhash(data_block)

cpuminer を getwork のために複数の RPC エンドポイントをポーリングするように更新するのは簡単だ……

nanotubeの投稿(2010年12月9日 12:20 UTC)

マイナーは基本的に「追加の作業」をしなければならないようだ。追加の作業から BitDNS マイニングの報酬がなければ(もちろんメインの Bitcoin 作業を遅くする)、マイナーが BitDNS(およびその他のサイドチェーン)を含めるインセンティブは何だろう?

メインチェーンと同じインセンティブ——報酬が得られる。

nanotube 2010年12月9日 22:43 UTC 原文 ·
ジェフ・ガージックの投稿(2010年12月9日 12:49 UTC)
nanotubeの投稿(2010年12月9日 12:20 UTC)

マイナーは基本的に「余分な作業」をしなければならないようだ。そしてその余分な作業(もちろんメインのBitcoin作業を遅くする)からbitdnsマイニングの報酬がないなら、マイナーがbitdns(やその他のサイドチェーン)を含めるインセンティブは何か?

メインチェーンと同じインセンティブ——報酬が得られる。

しかしサイドハッシュなしで純粋な Bitcoin をマイニングしても同じだけ報酬が得られるなら……

nanotubeの投稿(2010年12月9日 12:20 UTC)

マイナーは基本的に「追加の作業」をしなければならないようだ。追加の作業から BitDNS マイニングの報酬がなければ(もちろんメインの Bitcoin 作業を遅くする)、マイナーが BitDNS(およびその他のサイドチェーン)を含めるインセンティブは何だろう?

インセンティブは、同じ作業で追加のサイドチェーンからも報酬を得ることだ。

ビットコインを生成している間に、同じ作業で無料のドメイン名も得られるのに、なぜそうしないのか?

現在週に 50 BTC を生成しているなら、50 BTC に加えていくつかのドメイン名も得られる。

1 つの作業単位がある。それを解けば、Bitcoin と BitDNS の両方のブロックを解決する。概念的には、マークルツリーで結び付けられている。Bitcoin に提出するには BitDNS のブランチを切り離し、BitDNS に提出するには Bitcoin のブランチを切り離す。

実際には、Bitcoin に後付けするために、BitDNS 側にはおそらく約 200 バイトの余分が必要だが、大したことではない。1 ブロックあたり 50 ドメインの話をしているが、後方互換性のための 1 ブロックあたり 200 バイトは些細なものだ。十分に気にするなら、将来のブロックで Bitcoin がマークルツリーを上位に持つ近代化された配置にアップグレードするスケジュールを組むこともできる。

チェーンはこの新しいマークルツリーの下にあることに注意してほしい。つまり、Bitcoin と BitDNS それぞれが自分のブロック内に独自のチェーンリンクを持つ。これは一般的なタイムスタンプサーバーの配置とは逆で、通常はチェーンが上にあってその下にマークルツリーがあり、1 つの共通のマスターチェーンを作る。これはチェーンを共有しない 2 つのタイムスタンプサーバーだ。

Judson 2010年12月9日 23:00 UTC 原文 ·

サトシのアイデアに同意する。両方の良いところ取りに思える。

da2ce7 2010年12月10日 00:10 UTC 原文 ·
サトシ・ナカモトの投稿(2010年12月9日 13:46 UTC)

現在週に 50 BTC を生成しているなら、50 BTC に加えていくつかのドメイン名も得られる。

あなたのアイデアを完全に理解しようとしている最中だ。BitDNS をトランザクション手数料経由で Bitcoin のブロックチェーンに組み込むアイデアが気に入った主な理由は、Bitcoin を使った BitDNS への非常に包括的な経済的支援を提供し、Bitcoin の価値と有用性を高めるからだ。

サトシのモデルでは、BitDNS コインと Bitcoin の両方が同じブロックで生成され、両方が商品として取引可能になる。問題だと思うのは、ドメイン名の価値はその名前、登録費用、帯域幅/コンピューターコストから来ているのであって、数の希少性からではないということだ。

nanotube と theymos の提案では、BitDNS を作成する実際のコストはトランザクション手数料によって_自動的に_支払われ、二次市場を作る必要がない。チェーンにはいくつでもドメイン名が含まれ、生成者はそのサービスの提供に対して Bitcoin で補償される。

theymos 2010年12月10日 00:18 UTC 原文 ·

サトシのアイデアは BitX の必要性をなくす。CPU パワーを分割せずに代替チェーンを作れるからだ。

ただし俺たちの BitDNS 版が独自のチェーンを使うことはないだろう。ドメイン作成は proof-of-work に縛られるべきではなく、したがって俺たちには生成インセンティブがないからだ。

OP_CHECKSIG 付きの 120 バイトで俺たちの提案には十分だと思う。

ribuck 2010年12月10日 11:23 UTC 原文 ·
サトシ・ナカモトの投稿(2010年12月9日 22:46 UTC)

インセンティブは、同じ作業で追加のサイドチェーンからも報酬を得ることだ。

実は追加の報酬は得られない。Bitcoin 側から生成手数料とトランザクション手数料を集め、それに Domain Name 側からの利益を加えるか。あるいは、すべてが Bitcoin ブロックの中にあって同じ合計利益を稼ぐが、それはすべて Bitcoin 側から(Bitcoin 側の追加の Domain Name トランザクション手数料による)か、どちらかだ。

ribuck 2010年12月10日 12:21 UTC 原文 ·

[編集:この投稿は気にしないでくれ。自分の考えをここではうまく表現できなかった。]

ドメイン名登録用に別のブロックチェーンがあり、Bitcoin で支払いを受けたいとする。

foo.domainを登録するために、購入者は標準の Bitcoin システムを使って 10 BTC を支払い、次にもう一方のシステムでドメイン名を請求する。しかし、支払いが行われたことをどう知るのか?10 BTC の支払いが自分からのものであることは暗号学的に証明できるが、その支払いがドメイン名のためだったことは証明できない。同じ支払いを使って複数の別々のサイトからサービスを請求しているかもしれない。

したがって、Bitcoin にはトランザクション ID を Bitcoin 支払いに関連付ける方法が明らかに必要だ。トランザクション ID(例えば 64 文字)を含められるなら、ドメイン名の詳細をそのままトランザクション ID として使えばいい(十分に短いからだ)。その場合、別のドメイン名登録チェーンは不要になる。

ドメイン登録は、不特定のマイナーへの Bitcoin 支払いであり、そのトランザクション ID がたまたま意味を持つというだけのことだ。

RHorning 2010年12月10日 13:39 UTC 原文 ·
da2ce7の投稿(2010年12月9日 15:10 UTC)
サトシ・ナカモトの投稿(2010年12月9日 13:46 UTC)

現在週に50 BTCを生成しているなら、50 BTCに加えていくつかのドメイン名も得られる。

nanotubeとtheymosの提案では、BitDNSを作成する実際のコストはトランザクション手数料によって_自動的に_支払われ、二次市場を作る必要がない。チェーンにはいくつでもドメイン名が含まれ、生成者はそのサービスの提供に対してBitcoinで補償される。

問題は、トランザクション手数料を受け取るマイナーはただ棚ぼたを得ているだけだということだ。手数料はスパマーを排除するために存在するかもしれないが、DNS システムに関連する作業は一切していない。生のデータを処理し認証するコンピューターには一切の手数料が支払われず、生成者は Bitcoin で補償されていない。起きていることは、マイナーが本質的にデータストレージサービスとして支払われているだけであり、それは私の意見では限定的な有用性しかない。

これが、Bitcoin のブロックチェーンを汎用データストレージシステムとして使うことに対する大きな不満がある理由でもある。当然のことだと思う。

ribuckの投稿(2010年12月10日 03:21 UTC)

ドメイン名登録用に別のブロックチェーンがあり、Bitcoin で支払いを受けたいとする。

少しの間、ドメインデータだけを含む別のブロックチェーンがあると仮定しよう。暗号的にハッシュされているが、Proof of Work があるかないかは別として(後述する)。このブロックチェーンの目的は主にデータの認証であり、ドメインサーバーの「ネットワーク」がチェーン内のデータがネットワークルールに適合し、誰がどのドメインを「所有」しているかについて有効であることを「認証」できる。公開ブロックチェーンとして、ネットワークの多数派がそのチェーンに何が入るべきかについて合意していることも示す。不正にフォーマットされたデータは多数派が同意しなければ拒否される。チェーンであるため改ざんに対する検証とタイムスタンプも行い、さらに重要なことに、メインの Bitcoin チェーンの外にあることで、すべての Bitcoin ユーザーが必ずしも関心を持つわけではない専門サービスのデータ負荷を軽減する。これらは Bitcoin のトランザクションデータベースの機能であり、他のデータセットにも適用したいと望まれているものだ。

ここまでは簡単な部分だ。また、このチェーンにデータを入れる「レジストラ」がシステムの登録と認証のために「支払い」を受けるシステムも構築したい。これはレジストラとして存在する理由にもなり(レジストラとして存在すること自体がデータベースを維持する強い経済的利害を持つ)、ドメイン名のスパムや公共財の濫用を削減するための手数料の理由も提供する。手数料はデータベースの維持のために支払われるものであり、これが重要だ。この手数料なしでは、せいぜいこのデータベースは無料の公共サービスとして認証され世界に提供される。それを好む人もいるだろうが、Bitcoin プロジェクトに関わる人は、そのようなサービスに対して報酬が支払われることがいかに有用で動機付けになるかを理解できると期待する。theymos/nanotube の提案や、トランザクション内の追加データによる Bitcoin データベースへのすべての登録は、認証を無視して Bitcoin のタイムスタンプ機能のみを使用することでこの問題を完全に回避しており、このデータベースはいずれにしても Bitcoin から派生して構築されなければならないが、無料の公共サービスとして提供される。

しかし、ここに本当の問題がある:中央サーバーがないため、登録者は自分の登録が、ブロックチェーンに次のレコードを入れる順番のレジストラ(Proof of Work であれ他の合意されたシステムであれ)によって確実に入力されることを望む。その認証者が受け取れる何らかの汎用トランザクションを送信したい。登録がブロックチェーンに受け入れられた場合にのみ、その認証者に支払われるべきだ。

ここに問題が生じる:Bitcoin マイナーは登録者からの手数料が利用可能であることを知るかもしれないが、それらのコインが適切にどこに帰属するかをどう決定するか?一度 Bitcoin で手数料が処理されると、それは不可逆だ。フォーマット/認証の紛争でドメインレコードにチェーン分裂があった場合(Bitcoin でさえ今起きているように、おそらく起こるだろう)、それらの Bitcoin トランザクションは、実際にはネットワークの多数派がそのドメイン登録ブロックを無視したために登録を完了させなかった認証者に向かっている可能性がある。別のレジストラが善意でその登録を拾って別のブロックに含めるかもしれないが、そのサービスに対する手数料は一切受け取らない。ブロックチェーンのある程度の深さに到達した後で初めて手数料を「解放」 する仕組みを作ることもできるかもしれない。それでも、どう作っても、手数料を受け取り、ドメインレジストリにデータを入れるふりをしながらドメインレジストリのプロトコルには無関心で、Bitcoin マイナーと共謀して手数料を自分のものにする荒らしが現れる。これは大きな金額が絡む話なので、そういう荒らしは常に存在する。「正直な」 レジストラでも、バグなどでこのシステムの下では稀に手数料を不当に取得してしまうことがある。

手数料システムはこのドメイン登録システムの成功に不可欠だと考える。それによりレジストラの利己的な行動が保証され、データベース、コンピューター機器、その他すべてを維持することが自己利益になる。ドメインネームサーバーがコインを稼ぐ他の方法もあり得るが、登録手数料はすでに市場の一部であり、このシステムが獲得しようとしているものでもある。

要するに、認証は完全に別の通貨で行われなければならないか、あるいはデータの認証(単なるタイムスタンプではなく)が Bitcoin クライアント内で行われ、そのデータが何らかの形で Bitcoin ブロックチェーンにより直接的に含まれ、マイナー自身がデータを認証する必要があることを示そうとしている。Bitcoin マイナーはドメインデータの処理を選ばないかもしれないが、ドメインデータを含む特定のブロックが登録手数料を「獲得」するためにブロックチェーンに受け入れられる何らかの認証基準を満たしていることを認証できるシステムを構築する必要がある。そうでなければシステムは崩壊し、Bitcoin マイナーだけに支払われる純粋なトランザクション手数料以外の手数料の話はすべて無意味であり、そのトランザクションはトランザクションデータベースの保持のためにのみ使われる。

また、登録の即時性を確保するためにも、別の通貨である必要があるかもしれない。すべてのマイナーがドメイン登録の認証に関わりたいわけではなく、時間の経過とともに、Bitcoin ネットワークの設定やマイナーの他の優先事項に応じて、ドメイン登録をシステムに入れるまでの遅延が耐えられないほど長くなる可能性がある(数日または数週間のオーダー)。別の通貨を提案するのは、このプロジェクトを Bitcoin から無用なデータとして追い出すためではなく、P2P ドメインサーバーのコンセプトの目標の観点からも実行不可能だということを指摘するためだ。トランザクション内にデータを入れることは認証ではなく、認証に関して Bitcoin が提供するものの多くの力も失う。Bitcoin が使用する Proof of Work システムは、次のブロックを入れる権利を決定する際にシステムの分散化を確保する唯一の合理的な方法でもある。確かに複数の通貨間で共通のマイニングプールを通じて次の Proof of Work ハッシュを見つける何らかの共通プロトコルを設定できるが、それは別の通貨にするかどうかとは完全に別の問題であり、このスレッドでは決定されていないと思う。

唯一の他の解決策は、Bitcoin がこれや将来登場するかもしれない同様のコンセプトを完全に受け入れ、メインの Bitcoin ネットワーク上でこの性質のデータを認証するためのフックと何らかの標準プロトコルを提供することだ。理論的にはそれは可能であり、通貨の増殖を「統合」する意味ではより遠い将来に行われるかもしれない。ただし、それがすぐにメインの Bitcoin チェーンに組み込まれるとは思えないし、完全には探っていないが多くの欠点もある。

bitcoinex 2010年12月10日 14:51 UTC 原文 ·
kibaの投稿(2010年12月6日 04:12 UTC)
Anonymousの投稿(2010年12月6日 02:53 UTC)

ストレージ用のデータベースを探しているなら、Tahoe-LAFSを勧める。

忘れるな、スピードが最重要だ。データベースはいつでも別のものに置き換えられるが、時間は取り戻せない。

本質的でない機能はすべて実装の優先対象から外すべきだ。

つまりコア開発者は派手なGUIに取り組まない。彼らが集中すべきは以下だ:

  1. ドメイン名のマイニング、登録、変更の仕組み。

  2. DNSデータベースの配布または出力の仕組み。

  1. 「powerdns」はプラグインとデフォルトの bind9 設定で動作できる。それ用のプラグインを書けばいい。
ribuck 2010年12月10日 14:57 UTC 原文 ·
RHorningの投稿(2010年12月10日 04:39 UTC)

… 一度Bitcoinで手数料が処理されると、それは不可逆だ。フォーマット/認証の紛争でドメインレコードにチェーン分裂があった場合…それらのBitcoinトランザクションは、実際にはネットワークの多数派がそのドメイン登録ブロックを無視したために登録を完了させなかった認証者に向かっている可能性がある

それは実際の仕組みを反映していない。チェーン分裂があった場合、最終的にネットワークはチェーンの一つに落ち着く。「勝った」チェーンのブロックをマイニングした生成者がトランザクション手数料を得る。

「負けた」チェーンの生成者への「不可逆な」支払いは存在しない。まあ、ある意味では不可逆だが、負けたチェーンでしか使えないのであまり役に立たない。

ribuck 2010年12月10日 14:59 UTC 原文 ·
bitcoinexの投稿(2010年12月10日 05:51 UTC)

「powerdns」はプラグインやbind9の設定でデフォルトで動作する。プラグインを書ける。

概念実証はまだ作られていないが、必要なのはブロックチェーンを巡回して登録情報を抽出し、bind のデータ形式で書き出すプログラムだけだと考えている。プラグインやハックは不要のはずだ。

bitcoinex 2010年12月10日 15:11 UTC 原文 ·
ribuckの投稿(2010年12月10日 05:59 UTC)
bitcoinexの投稿(2010年12月10日 05:51 UTC)

「powerdns」はプラグインやbind9の設定でデフォルトで動作する。プラグインを書ける。

まだ概念実証は作られていないが、ブロックチェーンを巡回して登録情報を抽出し、bindのデータ形式で書き出すプログラムがあれば十分だと考えている。プラグインやハックは必要ないはずだ。

bind9 は最適な形式ではない。pdns にはプラグイン用のシンプルなインターフェースがある、心配しなくていい。

RHorning 2010年12月10日 16:50 UTC 原文 ·
ribuckの投稿(2010年12月10日 05:57 UTC)
RHorningの投稿(2010年12月10日 04:39 UTC)

… 一度Bitcoinで手数料が処理されると、それは不可逆だ。フォーマット/認証の紛争でドメインレコードにチェーン分裂があった場合…それらのBitcoinトランザクションは、実際にはネットワークの多数派がそのドメイン登録ブロックを無視したために登録を完了させなかった認証者に向かっている可能性がある

それは実際の仕組みを反映していない。チェーン分裂があった場合、最終的にネットワークはチェーンの一つに落ち着く。「勝った」チェーンのブロックをマイニングした生成者がトランザクション手数料を得る。

「負けた」チェーンの生成者への「不可逆な」支払いは存在しない。まあ、ある意味では不可逆だが、負けたチェーンでしか使えないのであまり役に立たない。

ここでは文脈を取り違えている気がする。支払いが不可逆である理由は、完全に異なるチェーンから派生しているからだ。ドメインレジストリチェーンにチェーン分裂がある場合、ビットコインとして(完全に異なるシステムに入る)支払われた手数料は、「負け」 チェーンのそのブロックに対してすでに支出されている。「負けブロック」 に入っていくトランザクションは、本質的に無駄に終わる。

私が言いたいのは、誰かがプロトコルの一部だけを「合法に見える」 程度に整え、ドメイン処理ルールに従っているように振る舞いさえすれば、ブロックを受け入れさせるためにはその見かけだけで足りる、ということだ。場合によっては数ブロックが受理され、その後で適当なデータをでっち上げ始めたり、誰かが既存の名前を (詐欺師が「他人のドメインを乗っ取れる」 と称するなどの形で) 登録しようとしたりする。何らかの理由で残りのネットワークがそのブロックを受け入れなくても、その「マイナー」「レジストラ」 が集めた手数料は、実際にチェーンに取り込まれるかどうかとは無関係に、その詐欺師の手元に残ってしまう。

逆に、「認証される」 ブロックが通貨を生成しているのと同じチェーンの一部なら、この問題は起きない。ネットワークがそのブロックを拒否すれば、Bitcoin のトランザクション手数料と同じ仕組みで設定されたあらゆる手数料も、ネットワークから同様に拒否される。チェーン分裂があれば、「負けた」 ブロックに支払われた手数料も同時に消えるため、無視して構わない。これが、認証はトランザクションと同じチェーン内で行われなければならない理由だ。それが Bitcoin 内であれ並行通貨内であれ構わないが、Bitcoin で行うなら認証も Bitcoin ネットワーク内で起きなければならない。さもなければ、Bitcoin に類似した外部通貨でマイナーへの支払いを行う際、詐欺と決済システムへの大きな攻撃を伴わずにそれを実現する手段がない。サービスを謳って対価を取りながら、サービスが提供されない、というのが詐欺だ。

データを Bitcoin のトランザクションに無理やり押し込んでも、データの認証は果たされず、その必要が別の場所に押しやられるだけだ。実質的に、ドメイン名の「二重支払い」 や、複数人への割り当てが起き、誰が真の所有者なのかが曖昧になる。

ribuck 2010年12月10日 16:58 UTC 原文 ·
RHorningの投稿(2010年12月10日 07:50 UTC)

支払いが不可逆である理由は、完全に異なるチェーンから派生しているからだ。

なるほど。はい、2 つのチェーンの同期を保つのは困難を伴う。

世界中のすべてのプルーフ・オブ・ワーク合意システムを 1 つのデータセットに詰め込むのはスケールしない。

Bitcoin と BitDNS は別々に使える。ユーザーがどちらか一方を使うために両方のすべてをダウンロードしなければならないのはおかしいだろう。BitDNS ユーザーは、次の無関係なネットワークがいくつも積み上げることを決めたすべてのデータをダウンロードしたくないかもしれない。

ネットワークは別々の運命を持つ必要がある。BitDNS ユーザーは、必要なドメイン登録者が比較的少ないため、大きなデータ機能の追加について完全にリベラルかもしれないが、Bitcoin ユーザーは多くのユーザーや小型デバイスでも簡単に使えるようにチェーンのサイズを制限することについてますます厳格になるかもしれない。

Bitcoin でドメインを安全に購入することへの懸念は的外れだ。Bitcoin を他の取り消し不能な商品と交換するのは簡単だ。

それでも心配なら、暗号学的にリスクフリーの取引を行うことが可能だ。両当事者が双方でトランザクションを設定し、両者が署名すると、2番目の署名者の署名が両方のリリースをトリガーする。2番目の署名者は一方をリリースせずにもう一方をリリースすることはできない。

ribuck 2010年12月10日 18:55 UTC 原文 ·
サトシ・ナカモトの投稿(2010年12月10日 17:29 UTC)

世界中のすべてのプルーフ・オブ・ワーク合意システムを 1 つのデータセットに詰め込むのはスケールしない。

テストネットワークでこれがどう動くかを見たうえで「no」と言うのなら、俺はそれを完全に尊重し、本番ネットワークでドメイン登録を生成することはしない。

Bitcoin はあなたの鳥だ。それを可能な限り高く飛ばしたくないというなら、それでいい。

だが、ドメイン名の処理が別チェーンにあるとしても、DNS 登録ごとに依然として Bitcoin トランザクションが発生することになる。だから 2 つのチェーンを持つことで Bitcoin トランザクションのは減らず、Bitcoin チェーン上のトランザクションのサイズが 40〜50 バイト減るだけだ。

RHorning 2010年12月10日 19:03 UTC 原文 ·
サトシ・ナカモトの投稿(2010年12月10日 17:29 UTC)

Bitcoin でドメインを安全に購入することへの懸念は的外れだ。Bitcoin を他の取り消し不能な商品と交換するのは簡単だ。

これがどう的外れなのか分からない。残念ながら、トランザクションの認証に Bitcoin のようなシステムを使うのなら、少なくとも認証用のトランザクション手数料については、そのトランザクションを Bitcoin で行うことはできない。

それでも心配なら、暗号学的にリスクフリーの取引を行うことが可能だ。両当事者が双方でトランザクションを設定し、両者が署名すると、2番目の署名者の署名が両方のリリースをトリガーする。2番目の署名者は一方をリリースせずにもう一方をリリースすることはできない。

このようなトランザクションを、Bitcoin に何らかの認証メカニズムとして統合せずにリスクフリーにする方法に、本当に興味がある。

これを本当に厄介にしている点の一つは、ブロックが認証用のハッシュツリーに追加されるまで「マイナー」が誰か分からないことだ。トランザクションの一方の当事者がハッシュが正常に入った後でなければ分からず、しかもそれすら条件付きであるため、二鍵リリースのメカニズムは成立しない。

これを 2 つの通貨間の単純な為替として扱うほうが、はるかに安全で、ついでにスケールもしやすい。それはシステムの完全に外側で起きることであり、Bitcoin と他の通貨との間に既に存在する様々な取引所がそれを示している。ところで、Bitcoin やその他のモノリシックなアプリケーションがすべての人類の知識と相互作用の究極のリポジトリになるべきではないという点には同意する。どんなシステムであれ、そんなサイズにスケールできるとは思えない。TCP/IP 自体がそのサイズにスケールできるかどうかすら確信が持てない。

これは Jgarzik が言ってきた「動かない」という主張の多くの部分を、異なる視点から述べたものだ。問題は、誰もがこれらの手数料を bitcoin で支払わせようとしていることで、少なくとも直接的にはそれは全然できないと思う。間接的なメカニズムなら可能かもしれない。たとえば、為替が行われるまでロックされない変動通貨のような形だ。

ところで、「ロッキング為替」のアイデアは、ピアツーピア通貨交換ネットワーク、特に Bitcoin や Liberty Reserve のような電子通貨にとって素晴らしいアイデアだろう。ただ俺には、ブロック自体が表す通貨以外の通貨で建てられた認証トランザクション手数料を、そのブロックに入れる方法が分からない。

MoonShadow 2010年12月10日 19:11 UTC 原文 ·

それから、いったい何のために BitDNS が 10分ごとに更新される blockchain を欲しがるのだ? 1時間ごとではなく? あるいは 1分ごとに? なぜ別の目的のために設定されたサイクルに縛られるのか? 最初から理想的とは言えない。

ハル・フィニー(Hal) 2010年12月10日 19:14 UTC 原文 ·

サトシ、追加のブロックチェーンがそれぞれ独自のコインを作り、それが取引所でビットコインと取引されるというアイデアを支持しているのか? これらのチェーン固有のコインは、そのチェーンのマイナーへの報酬や、そのチェーンのドメイン内での何らかの権利や特権の購入に使われるのだろうか?

ハル・フィニーの投稿(2010年12月10日 10:14 UTC)

サトシ、追加のブロックチェーンがそれぞれ独自のコインを作り、それが取引所でビットコインと取引されるというアイデアを支持しているのか? これらのチェーン固有のコインは、そのチェーンのマイナーへの報酬や、そのチェーンのドメイン内での何らかの権利や特権の購入に使われるのだろうか?

コインかもしれないが、そうである必要はない。報酬は名前空間の一部、つまりドメインそのものでもいい。

可能性は無限だ。

Bitcoin は本質的に、(デジタルな)財産の一部で報酬を与える。

RHorning 2010年12月10日 19:35 UTC 原文 ·
ジェフ・ガージックの投稿(2010年12月10日 10:22 UTC)

コインかもしれないが、そうである必要はない。報酬は名前空間の一部、つまりドメインそのものでもいい。

可能性は無限だ。

Bitcoinは本質的に、(デジタルな)財産の一部で報酬を与える。

マイナーでブロックを「勝ち取った」場合、はい、手数料を支払わずにチェーンにドメインを自由に入れることができ、ネットワークはその動作を規制するルールに基づいてブロックを受け入れるか拒否する。Bitcoin マイナーが、自分自身に支払っている分なので手数料を払わずに気が済むだけのトランザクションを好きなだけブロックに入れられるのと同じだ。手数料を含めるのはコインの並べ替えにすぎず、実際に支払う・受け取る純額は変わらない。

これは限定的な使い方にすぎないと思う。ただし、マイナーが一定回数のハッシュ計算とドメインレジストリへの取り込みを経た末に、トップレベルドメインの「権利」 を「獲得」 できる、という話なら別だ。そういう人為的な希少性なら実装してみる価値はあるかもしれないが、それでも登録者からレジストラへの手数料の流れは生まれない。あなたが本当にそれを「所有」 しているのなら、特定の TLD の「神聖王」 になるだけだ。

そのような非コインの「報酬」はデータベースの維持にインセンティブを提供しないが、コインベースの報酬なら提供する。

Bitcoin 自体が人工的な希少性だ。

ハル・フィニーの投稿(2010年12月10日 10:14 UTC)

サトシ、追加のブロックチェーンがそれぞれ独自のコインを作り、それが取引所でビットコインと取引されるというアイデアを支持しているのか? これらのチェーン固有のコインは、そのチェーンのマイナーへの報酬や、そのチェーンのドメイン内での何らかの権利や特権の購入に使われるのだろうか?

そうだ、ドメインとビットコインの間の交換レートは変動するだろう。

BitDNS には 10分より長い間隔が適切だろう。

この議論でこれまでに、すでに多くのハウスキーピングデータが必要とされている。Bitcoin のチェーンの高価なスペースに手数料を支払うことを心配せずに、必要なスペースを自由に使えれば、はるかに簡単になるだろう。いくつかのトランザクション:

IP レコードの変更。

名前の変更。ドメインオブジェクトは 1 つのドメインへの権利を与え、取得されていない任意の名前に自由に変更できる。これにより、ユーザーが不要になった名前を解放することが促されるだろう。生成されたドメインは空白で始まり、マイナーがそれを誰かに売り、その人が希望の名前に変更する。

更新。無料にすることも、更新に別のドメインオブジェクトの消費を必要とすることもできる。その場合、ドメインオブジェクト(ドメインコイン?)は 1年間ドメインを所有する権利を表す。使用された手数料は次のブロック手数料でマイナーに支払われる。

kiba 2010年12月10日 20:03 UTC 原文 ·
ジェフ・ガージックの投稿(2010年12月10日 10:41 UTC)

Bitcoin自体が人工的な希少性だ。

Bitcoin の供給量はネットワークによって決定された単なる整数だ。それ以外の点では、Bitcoin は希少ではない。ウォレットを 100 万回コピーしても同じ整数を含んでいる。非常に奇妙な形の希少性と非希少性だ。

ハル・フィニー(Hal) 2010年12月10日 20:12 UTC 原文 ·

OK、bitdnscoins(別名 DCC、DomainChain Coins)が存在するなら、それらは何かに有用でなければならない。さもなければすべての BitDNS マイナーは、取引手数料と引き換えに他人の登録を自分のものに置き換えるのではなく、すべてのブロックを自分のドメイン名登録で埋めるだろう。

名前を登録したり他の BitDNS 取引を行うには、一定量の bitdnscoins/DCC を使う必要があるというルールが必要だ。それがこの代替通貨を望ましく価値あるものにする唯一の方法だ。

(まあ、Bitcoin のように 2200 万 DCC しか作られないと言うこともできるので、ビットコインのように希少性から価値が出る。しかしそれは弱い。)

同意する。すべてのトランザクション、IP 変更、更新などにはマイナーに支払われる何らかの手数料があるべきだ。

固定された総流通量の代わりに、ドメインを生成するために一定量の作業を要求することを検討するかもしれない。ドメインあたりの作業量はムーアの法則に沿って増加するスケジュールにできる。そうすれば、ドメインの数は需要とそれを使用する人の数に応じて増加するだろう。

bitcoinex 2010年12月10日 20:41 UTC 原文 ·
creightoの投稿(2010年12月10日 19:11 UTC)

それから、いったい何のために BitDNS が 10分ごとに更新される blockchain を欲しがるのだ? 1時間ごとではなく? あるいは 1分ごとに? なぜ別の目的のために設定されたサイクルに縛られるのか? 最初から理想的とは言えない。

それなら、1 つのドメインに複数の権威サーバーを指定できる機能を必ず追加してくれ。俺の知る限り、DNS ではこれは可能だ(MS Windows AD はそれをやっている)。

そうすればサイトを停止させたくない者は、たくさんの予備サーバーを用意でき、ビッグ・ブラザーによってサーバーが停止された場合は、ドメイン所有者が古いサーバーを削除して新しいサーバーを追加するだけで設定を変更できる。

da2ce7 2010年12月11日 00:01 UTC 原文 ·

Bitcoin フォーラムでは一石二鳥では足りないらしい。一石で三羽落とさないといけないようだ。

まず、nanotube と theymos の提案を称賛したい。経済的に理にかなっていて、シンプルだから気に入っている。 この投稿で俺が提案する設計は、nanotube と theymos の提案と後方互換性がある。ただし、提起された「問題」をすべて解決する。(提案されている動作の仕方そのものに本当に問題があるとは今でも思っていない。だがもっと良いやり方があるなら、やらない理由はないだろう?)

始める前に、ドメイン名は通貨とは根本的に異なるということを述べておく必要がある。両者は価値を得る仕組みが大きく違うからだ。通貨は供給が制限されていることから価値を得る。一方ドメイン名は、名前の質から価値を得る。つまり、短い辞書単語は長いランダム列よりも価値が高い。

ドメイン名の総数に制限を設けると、それは恣意的な制限となり、市場の効率が下がり、その市場を使う魅力が薄れる。 そこでこれを念頭に置いて、人々がドメイン名を取得するサービスに対価を払う限り、無制限の数のドメイン名を持てるシステムを設計しよう。

フォーラムでの主な懸念は、blockchain に「その他のデータ」を含めることだ。だがこの問題は本質的なものではない。なぜなら Bitcoin のトランザクションの blockchain 自体、それ自身データだからだ。 他の議論で次のことが示されている:

  1. ジェネレーターは利益が出るならどんなデータも喜んで含める。
  2. ブロックサイズは、データ需要とマイナーの収益性のバランスが取れるサイズまで成長する。
  3. クライアントは自分の関心があるデータだけを「保持」すればよい。クライアントに無関係なデータは処理後に忘れてよい。
  4. トランザクション残高を使って古いトランザクションをチェーンから取り除くことができる。 したがって、チェーン内のデータ量は、生成(その対価を受け取る)にとっても保管(欲しいものだけ持つ)にとっても問題ではないことが既に示されている。残る唯一の問題は転送だ。

議論されてきたのは、すべてのクライアントが(取り除かれる前の)blockchain 全体をダウンロードし、その後生成される新しいブロックごとに検査しなければならないということだ。クライアントは処理後でなければ、欲しくないデータを削除できない。チェーンが小さいうちはわずかな作業で済む。だが懸念されているのは、特定のクライアントにとって無関係なデータが大量にチェーンに含まれるようになると、この作業が過度な負担になることだ。

サトシが示唆した設計を提案する:Bitcoin トランザクションを複数のグループに分割するのだ。 ただしデータと Bitcoin トランザクションの重要な結びつきは維持する(あらゆるデータは依然として、Bitcoin トランザクション手数料としてのマイナーへの報酬を含めなければならない)。 トランザクションをテンプレートごとにグループ化する。たとえば「vanilla テンプレート」の Bitcoin トランザクションは vanilla グループに、「bitdns テンプレート」の Bitcoin トランザクションは bitdns グループに、「bitpgp テンプレート」の Bitcoin トランザクションは bitpgp グループに、というふうにだ。

最後に、他のすべてのグループで蓄積されたトランザクション残高の変化だけを含む「summary」グループを含める。

ブロックは次のようなものを含むことができる:

あるブロックが前のブロックを確認した(summary ブロック内のすべての会計が正しいかチェックした)後は、変更を最新に保つためにはマークルツリーと summary グループだけをダウンロードすれば済む。これは事実上、現在ダウンロードに必要なデータより少ない! summary を確認した後でクライアントが他のグループから特定のデータが必要だと判断したら、オプションでそれもダウンロードできる。

重要なのは、フリーランチは存在しないということだ。あらゆるデータは依然として bitcoin で適切なトランザクション手数料を含めなければならない。

nanotube と theymos の設計はこの設計の上にとても綺麗に乗る。BitDNS システムが行うトランザクションは、ジェネレーターが BitDNS トランザクションを受け入れる前に検査するテンプレートによって、単純に自動的にグループ化されるからだ。クライアントは BitDNS データが欲しければダウンロードでき、そうでなければトランザクション summary だけをダウンロードできる。

dtvan 2010年12月11日 07:43 UTC 原文 ·

このスレッド全体を読み通したうえで、役に立つと思ういくつかコメントがある:

  1. スレッドの誰もが、DNS インフラ全体を一気に置き換えようとしているように見える。だがそれは間違ったアプローチだと思う。今日の DNS システムの本当の問題は、誰かがルートを所有しなければならないことだ。結局のところ、ICANN を信頼するしかない。DomainChain/BitDNS システムが厳密に焦点を当てるべきなのは、ドメイン名の所有権を確立することだ。追跡する必要があるのは、Key A の保有者がドメイン foo.bar を所有しているということだけだ。この共有された信頼を確立してしまえば、このプロジェクトとは独立に実装できる様々な DNS インフラをサポートできる。どんな新しいシステムが作られようと、それらは DomainChain/BitDNS を使ってどの鍵がそのドメインを所有しているかを確立し、その個人だけがそのドメインのレコードを挿入できるようにすればよい。これはうまくいく。なぜならシステムの参加者全員が、自分が引いたレコードが有効であることを検証できるからだ。今のところ、DNS レコード管理の細部にはまり込みがちだが、本当に必要なのは DNSSEC や新しい p2p DNS など何であれそのルートを形成できる、信頼された分散型の権威を確立することだけだ。

これは HTTPS の CA 問題の解決にも使えると考えている。同じ鍵で証明書に署名すれば、正しいサーバーに到達したと証明できるからだ。だが話が逸れた……

  1. TLD の制限は必須だ。このシステムが名前の衝突を防いで既存の DNS インフラと相互運用できないのなら、生み出そうとしている信頼を損なうことになる。誰か新参者が www.mylocalbank.com を取得して大混乱を起こせるなら、俺自身、分散型 DNS システムに加わる準備ができているか確信が持てない。慎ましく .web を TLD として提案するが、短くて現在使われていない限り何でもよい。

今のところ焦点は、既存のシステムと衝突しない形でこれを立ち上げて動かすことに置くべきだ。このシステムがある時点で支配的になり、追加の TLD に取り組む必要が出てくれば、それはそのとき扱える「問題」だ。

  1. 個人的には、期限切れになるドメイン名のほうが正しい道だと思う。今日の比較的高額な更新料があってもなお、ジャンクは山ほどある。永久にドメインを所有できたらどれほどひどいことになるか想像もつかない。ドメインを保持するために定期的に更新しなければならないというのは、それほど多くを求めるものではない。とりわけ、これが今日の既存システムのようなぼったくりであるべきではないからなおさらだ。

最後に、これは本当にワクワクすることだと言って締めくくりたい。DNS 問題をどう解決するかについていくつもの異なるアイデアを読んできたが、これは実際に解決できる(しかも単に ICANN を別の慈悲深い独裁者に置き換えるだけではない)ものとして俺が初めて見たものだ。

FreddyFender 2011年1月6日 15:55 UTC 原文 ·

俺が見る限り、domainchain にある提案(http://domainchain.org/wiki/doku.php?id=start#proposal を見てくれ)は、Bitcoin の blockchain に余計なものを載せないというサトシの希望に反していて、ドメイン割り当てを直接 Bitcoin に結びつけている。 多くのコミュニティメンバーは、これは現実的ではなく、domainchain を直接 Bitcoin に含めようとする試みが続くなら自分は Bitcoin を離れると述べている。 サトシは、Bitcoin サービスとの需要に応じて価値が変動する別通貨を持つ、新しい木を作るよう求めた。

サトシ・ナカモトの投稿(2010年12月9日 21:02 UTC)

BitDNSが完全に別のネットワークと別のブロックチェーンでありながら、BitcoinとCPUパワーを共有できるようにすることは可能だと思う。唯一の重複は、マイナーが両方のネットワークのプルーフ・オブ・ワークを同時に検索できるようにすることだ。

ネットワーク間の調整は不要だ。マイナーは両方のネットワークに並行して接続する。ヒットを得た場合、潜在的に両方を同時に解決するようにSHAをスキャンする。一方のネットワークの難易度が低い場合、その片方のネットワークだけの解決になるかもしれない。

ここにいるのは、理論家より先に走り出している献身的なコーダー/ハッカーたちだ。提案が立ち上がる前に、理論は鉄壁でなければならない。 数学的理論家がプロセスを始め、それから弱点を指摘しつつ基本構造をコーダーに渡す必要があると思う。

草の根の開発による新しいチェーンは、マイナーやコーダーを興奮させ、コミュニティの中の思想家/理論家たちの不安を静めるはずだ。 面白いのは、理論が固まれば新しい BitDNS(Domainchain?)の移植は非常に簡単だということだ。つまずきの原因はすべて、Domainchain を独自のチェーンに分岐させるのではなく、Bitcoin の構造に含めようとする試みに集中しているように見える。

Domainchain は死んだ、Domainchain 万歳! 😊