Yumeville

Holochain デベロッパーパルス No.82

Holoホスティングインフラストラクチャの概要

令和2年10月15日

概要

Holochain RSMを搭載したhApp(ホロチェーンアプリ)が数週間以内にHoloPortのテスターに届き、その後すぐにホスティングインフラがデプロイされるので、私はこのインフラが何であるかを説明するのに役立つと思いました。

Holochainコアの開発チームは、Holochain Redux(旧コードベース)のメンテナンス版をもう1つリリースしました。Holochain RSMが使用可能な状態に急速に近づいているにもかかわらず、なぜわざわざこんなことをしているのかも説明しておきます。

トピック

  1. ホロホスティングインフラ
  2. Holochain-Redux v0.0.52-alpha2をリリースしました

ホロホスティングインフラ

Webベースのアプリには無数のバックエンドのコンポーネントが動いています。アプリケーションサーバ、HTTPサーバ、データベース、いくつかのマイクロサービス、UI、プロキシなどです。ほとんどの場合、これらは既製品のコンポーネントであり、開発チームが手間をかけずに十分にテストされたスタックに組み立てることができます。

しかし、スタック自体を構築するのが自分であり、それが全く新しいスタックである場合、そしてそれが従来のウェブを新しい分散型ウェブに橋渡しするためのものであるならば、この仕事は少し厳しいものになります。ウェブ開発者やエンドユーザが使用して快適に感じられるようにするだけでなく、同時に未知の領域を開拓することになります。現代のウェブは分散化のために作られたものではないので、直面する課題やデバッグには独特のものがあります。また、標準的なコンポーネントでは役に立たないので、新しい技術をたくさん発明しなければなりません。

しかし、正しく開発すれば、結果は「特別なものではない」と思われるでしょう。このデベロッパーパルスのために Holoホスティング製品のProduct OwnerであるAlastair氏にインタビューをしていた時、この言葉が私の耳に飛び込んできました。彼が言いたかったのは、ユーザーにとって、ホロでホスティングされたウェブアプリは、中央集中型インフラストラクチャ上に構築された従来のウェブアプリと同じように感じられるということです。ご存知のように、分散型アプリは色々なユーザビリティの問題に悩まされています。(ブラウザのプラグイン?秘密鍵?Trezorを買えばいいのか?そもそもTrezorとは何なのか?笑)ですので、私たちは分散型アプリを「特別なものではない」ものにしたいと考えているのです。

HoloFuelを使用できるように、誰かがHoloの「アカウント」にサインアップしているこのビデオをチェックしてみてください。(これはただのモックアップではないと断言します)かなり普通に見えますよね?

結果を切望している人たちは、なぜ実際に触れることのできる進歩がほとんどないのかと私たちに度々尋ねてきました。不安な気持ちはよくわかります。我々は行っている作業についてはよく話しますが、まだあまり成果が出ていません。ことわざとしてある様に、「プリンの味は食べてみなければわからない」です。そして、このプリンを食べるには、スプーンが必要でしょう。この比喩では、スプーンはHoloPort上で稼働する近日リリース予定の「ホストされたhApps」のリリースです。これにより、HoloPortの所有者は、HoloPort上にホストされたHoloChainのアプリを自分たちで使うことが出来るだけでなく、通常のWebユーザーに提供することができるようになります。これは、私たちがこの1年の間に組み立ててきた目に見えないコンポーネントのすべてを実証することになります。

これが、社内QAテストネットに現在存在しているコンポーネントです。

各HoloPortは、左側のピアツーピアのHolochainネットワークと右側のHoloホスティングインフラストラクチャの間のインターフェースに位置します。右側は、従来のWebユーザーを、使用したいアプリを提供するHoloPortのネットワークに接続するものです。ここで私が上記の図で使った用語集を紹介します。

  • マッチメイキングサービス: ホストから稼働時間とパフォーマンスのデータを要求し、それらを使用してどのユーザーをどのホストとペアにするかを決定する集中型サーバー。
  • Holoリゾルバサービス: ホストとのペアリングを希望するウェブユーザーのリクエストを受信し、マッチメイキングサービスに適切なホストのリストを選択するように依頼する一元化されたウェブAPIです。ユーザーがアカウントを作成し、割り当てられたホストが実際にアプリのインスタンスをホストしていることを確認すると、リゾルバサービスはそのホストを公式ホストとして登録し、次回ログイン時に同じホストに再接続できるようにします。
  • ホロルーターサービス: ウェブユーザーと割り当てられたポート間のトラフィックを転送する集中型プロキシです。このサービスはピアツーピアのVPNを介してホストに接続し、制限のあるファイアウォールを突破できるようにします。すべてがエンドツーエンドで暗号化されているため、このプロキシはユーザーのトラフィックの内容を見ることはできません。(ITに詳しい方へ:TLS接続はプロキシではなくホストで終了します)
  • Chaperone: ユーザーのキーペアを生成し、リゾルバサービスと対話し、割り当てられたホストのEnvoyサービスへの安全なトンネルを設定する、ユーザーのブラウザ内の保護された iframeです。また、サインアップ、ログイン、Holo関連のエラーの処理など、Holoホストにされた、アプリのUXの多くをも担当しています。
  • Envoy: コンダクターのためのHTTP/WebSocketインターフェースを提示するホスト上のサーバーです。これにより、ユーザーのブラウザ上でChaperoneがホストにアプリのインスタンスをプロビジョニングしてそのインスタンスと通信するように依頼することができます。(app API Calls)また、ホストがソースチェーンに書き込もうとするデータに署名するようChaperoneに要求します。(Wormhole secure signing

以前のデベロッパーパルスで、これらのコンポーネントがどのように動作するかを説明しました。上記の図にあるものはすべてデプロイされ、現在動作しており、かなりまともに動作しています。では、なぜプレリリーステスターにリリースしていないのと質問したくなると思います。それは図の左側がHolochain Reduxをベースにしていて、新エンジンよりご存知のように遅いからです。人々の実際のトランザクションの履歴の長さにもよりますが、Test Fuelのトランザクションはクリアするのに数秒から数分かかっています。(ビットコインは60倍以上かかりますが、ビットコインよりもずっと上を目指しているのでこれではダメです) これは、アルファテストにサインアップした人にとっても、良いユーザー体験ではないと考えています。

プレリリース前のボランティアと一緒に自分のホロポートでホスティングされたHoloFuelをテストしたり、社内でホスティングインフラストラクチャをテストしたりと、Reduxでは多くのことを学びました。そのおかげで、右側のバグを見つけて潰したり、不完全にマップされたデザイン領域を探ったり(エラーの場合のUXも含めて)、HoloFuelの次期リファクタリングに向けて学びの多い経験でもありました。

Holoチームの設計方法で素晴らしいことは、HoloとHolochainの間に非常に良い関心の分離があるということです。つまり、Holochain ReduxをHolochain RSM(ホロチェーンの新エンジン)でスムーズに置き換えることができるでしょう。

私にとってエキサイティングなことは、このリリースがHoloPortにロールアウトされると、完全に機能する恒久的なHoloテストネットが展開されるということです。(テスターにのみ公開のものですが)つまり、読者がTwitterで “when testnet”(テストネットはいつだ?)と聞かれたら、”今すぐに”と伝えることができるようになるのです。

予想されていたHoloFuelをリリースするのではなく、まずは自己ホスト型とホスト型の両方のhAppsのリリースは、Holoホスティング開発チームとPhilip Beadle氏のコラボレーションによる「Elemental Chat」アプリでアルファテストを迎えることになります。HoloFuelのリファクタリングの一部には、RSMへの移植だけでなく、主要な使用例である常時電源が付いている、ホスティングデバイスのための簡素化と最適化が含まれているからです。私たちはこれを正しく開発するために時間をかけたいと考えています。そして、テスト用の仮想通貨を送るよりも、チャットができた方がテスターにとっても楽しいかもしれないと思っています 😉

「完全に機能する」というのは「全ての機能が完成している」という意味ではないことを明確にしておきたいと思います。多くのコンポーネントはまだ開発中であり、時間が経つにつれて機能が増えていくでしょう。例えば、マッチメイキングサービスは現在ホストのパフォーマンス情報を収集することはなく、単にホストIPをランダムに選択して各ウェブユーザーに提供しています。また、パブリッシャーやホストをサポートするビジネスサービスは、まだ設計と開発が必要です。しかし、ホイップクリームのないかぼちゃパイのように、私には現在のホスティングインフラはかなり「美味しそう」に見えます。

Holochain-Redux v0.0.52-alpha2をリリースしました

これがおそらくHolochain Reduxの最後のリリースになるでしょう。今回のメンテナンスリリースでは、いくつかの整合性エラーとメモリリークを修正し、Holoホストに必要な機能をいくつか追加しました。RSMとHolo Hostに集中したいので、おそらく祝福することはないでしょうが、Holonix用のこの少し長めのインストールコマンドを使うことで手に入れることができます。

nix-shell
https://github.com/holochain/holonix/archive/release-0.0.85.tar.gz

Holochain RSMがすぐそこまで来ているのに、なぜ旧バージョンで別のリリースをしているのでかと質問したい方もいると思います。主に、RSMに必要な機能(ネットワークトランスポートレイヤーなど)が到着するのを待つ間、Holoホスティングインフラストラクチャの内部テストをサポートするためです。しかし、もしあなたが以下のバグに阻まれていて、バイナリのリリースを開始するまでRSMを保留しているのであれば、あなたにも役立つと考え他のでリリースをしました。

Holochain Redux v0.0.52-alpha2の概要
  • ダイレクトメッセージの様々なタイムアウト条件でのメモリリークを修正 #2208
  • sim2h がアスペクトホールディング を要求した際の様々なエラー条件で、ホールディングリスト/CAS の不一致の可能性を修正 #2208
  • add linkのバリデーションが完了する前にリンク削除を保持していたバグを修正 #2208
  • DHT情報にアクセスするための管理画面にget_metaを追加 #2207
  • Sim2hメッセージがセキュリティのためにsslエンコードされ、整合性を単純化したので、コンダクターはJOINメッセージに署名するだけで済む #2203
  • コンダクター署名サービスエラー を追加 #2203
このデベロッパーパルスでHoloホスティングインフラの理解が深まったでしょうか?

Holoホスティングは複雑なブラックボックスのように見えるかもしれません。このインフラへのディープダイブで、すべての部品がどのように稼働しているのか、そしてそれらがHolochainとどのように関係しているのか、ということを理解していただければと思います。他にも質問があれば、私のTwitterに連絡するか、Holochainフォーラムで質問を出してみてください!

開発状況

最新版

https://holochain.loveにて使用可能なバージョン

  • Holonix: 0.0.81
  • Holochain Core: 0.0.51-alpha1
  • hc-happ-scaffold: 0.1.2

出典:A Look at the Holo Hosting Infrastructure