Re: BitcoinのURIスキーム

参加者: Karmicads

このアイデアについて誰か何かしているのか気になっている。このスレッドとここで説明されている素晴らしい開発に従って、インターネットブラウザ機能の実装の可能性を調査しているところだ。まずこれを試して、Firefoxアドオンが発展する中で他の機能と一緒に含めるのが、より簡単な最初の一歩かもしれない(学びながら進めている)。

これが実現する前に、URIがどのような形式を取るかについてコンセンサスが必要だ。URIスキームについて少し調査したが、W3Cの承認なしのほとんどのアプローチは好ましくないとされている。W3Cが暫定的なURIスキームを承認して保留にするカテゴリーがあるが、保証はない(仮特許のようなもの)。しかし、最も適切なスキームはマグネットURIのようだ。特定のアドレスではなく、コンテンツの一意性から生成されるハッシュによってリソースを見つけるよう設計されている。マグネットはピアツーピアネットワーク上のアプリケーションでの使用を意図しており、アプリケーション固有のデータへの参照用の予約パラメータがある。基本的に、アプリケーション固有のパラメータの前にxを付けるだけだ。例:xbitcoin1:?

新しいトップレベルURIスキームの実装を試みないのが良いかもしれない。普遍的に認識されていなければ、即興的な手法と見なされるからだ。マグネットシステムの採用はこれを回避するが、マグネット自体も非公式の未登録スキームだ。マグネットの利点は共有可能でオープンなことだ。

これは非常に良さそうに見えるかもしれない。bitcoinは結局P2Pアプリケーションであり、そのネットワークは似た原理で動作しているからだ。しかし、リンクをクリックする人がbitcoinユーザーでない場合はどうか? 既存のネットワークに含まれない情報、例えば販売する商品、配送情報、その他の問題を組み込みたい場合はどうか。bitcoinはトランザクション自体のみを処理するという理解なので、ユーザーは他のすべての取り決め、契約、コミュニケーションをbitcoinとは独立に行う必要がある。ここで匿名性が損なわれる。従来の「階層的なハードワイヤード、または非匿名の技術」に頼る傾向があるからだ。これはbitcoinへの批判ではまったくない。bitcoinは素晴らしいトランザクション方法だ。しかし、トランザクションはコインの片面にすぎない(このひどいダジャレを許してくれ)。Grin

URIの調査過程でfreenetと彼らが使うマグネットに似たシステムを思い出し、結局そこに戻ってチェックした。freenetが情報保存を意図したユーザー/アイデンティティ空間であるなら、各ユーザーに固有の人間可読なデータファイルのリポジトリとしても使えないだろうか。トランザクションの補足に使いたい任意の形式のデータを組み込める。これをURIからアプリケーション固有のリッチなデータベースに接続するために使えないだろうか。bitcoinノードが実際のトランザクションを処理する間、freenetノードが個別のデータの提示を処理する。

これにより、すべてが同じ種類の暗号P2Pインフラストラクチャの下に保たれ、アプリケーション固有のコンテキストの無限の多様性が可能になるはずだ。ユニークなURIハッシュキーは、freenet+bitcoinのハッシュの組み合わせから生まれ、freenetキーで暗号化されたファイルはbitcoinキーで復号して見つけ、bitcoinノードにはその逆でアドレスできるのではないか。正しいだろうか? もちろん、一方で実名を使えば、もう一方でも実名が明らかになるだろう。

いずれにしても、何らかの方法があるはずだ。繰り返すが、freenetも未登録のURIスキームを使っているが、マグネットの変形が採用されればそれは問題にならない。残る疑問は、bitcoinが正式に認められた通貨として非常に正当なものになることを望むなら、他のすべてのインターネットプロトコルへの厳格な準拠が望ましいかもしれないということだ。マグネット/freenetのようなURIスキームの登録を妨げるものは特に見当たらなかった。すべてを検索してはいないが、既に存在するかもしれない。そうでなければ、なぜ登録しないのか?

URIスキームの分類(どの種類のマグネットなのか、正式/公式にするかどうか)とレイアウトの形式について合意する必要がある:

URIの構成要素

これはMozillaがURIのパース時に考慮する規則に関するものだ。

典型的なマグネットURIはこのようになる:

magnet:?xt=urn:sha1:YNCKHTQCWBTRNJIV4WNAE52SJUQCZO5C

freenet URIはこのようなものだ:

http://127.0.0.1:8888/USK@oshw3DxmJUt7q4ThF4dCez5IXbc9hCGcv0VuwLRCmeQ,ckeXv20F1gBzkqssB4RXHZ2nB1YRT8Pb8KYZk8wj-bs,AQACAAE/occamsrazor/6/f.pdf

認識されるためにはfreenetプログラムをインストールする必要があり、これにはリソースをlocalhostのアイデンティティ空間のアイテムとして認識するJava搭載のウェブサーバーが含まれる。つまり、ブラウザからはfreenet全体が自分のマシン上にあるように見える。ユーザーがウェブサーバーを実行せずにこのアイデンティティ空間をアドレス可能にできるかは分からないが、サーバーはウェブページの提供とlocalhostをトップレベルドメインとして認識するためだけに必要だと思われる。「http:」はfreenet URI自体が特別なものではないことを示しているが、IPアドレス(localhost)は確かに特別だ。プログラムがウェブサーバーを組み込まずにfreenetユーザー空間にアクセスでき、ユニバーサルリンクはマグネットURIとして作成できるのではないかと思う。bitcoinがインストールされていない人に対して、そのリンクの訪問者をbitcoinのSourceForgeダウンロードにリダイレクトするデフォルトのフォールバックをURIに持たせる方法は分からない。コード内で実装し、bitcoinの存在を記録するためにcookieや環境変数を設定する必要があるかもしれない。

この調査中に訪れた他の関連サイト:

アイデア/コメント/フィードバックは歓迎する。Wink Steve