Yumeville

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

HolochainとHoloFuelのBug修正リリース、開発者コミュニティはますます素晴らしいものになっています

令和2年8月20日

概要

HoloFuelはテストされ続けており、プレリリーステスターはHoloFuelを使ってテストしており、開発チームはバグを潰し続けています。また、ホストがウェブユーザーにHoloFuelアプリを提供できるようにするHoloPortでホストされたhAppsのアップデートにも取り組んでいます。

Holochain v0.0.51を公開した後、マルチユーザーでのシナリオテストが失敗するバグを発見しました。読者がhAppの開発者であれば、このバグの対処法を読んでみてください。

最後に、コアチームが行ってきたリファクタリング作業の進捗状況を少し共有したいと思います。これも、かなり有望な情報です。

トピック

  1. HoloFuelのテストは順調に進んでいます!
  2. ホスティングされたhAppsのアップデートも順調に進んでいます!
  3. ホロチェーンの既知の問題: hAppテストフレームワークのリグレッション、ネットワーク切断時の一貫性の問題
  4. コアのリファクタリング進捗状況から得られた初期の結果

HoloFuelのテストは順調に進んでいます!

私たちのプレリリーステスターのグループは、HoloFuelを限界までプッシュして、お互いにテスト燃料を交換し、私たちの開発チームが修正すべきエッジケースを発見するのを楽しんでいます。

Image

Image

Image

Image

今回のテストの意図は、テスト者がこれまでに見たことのないバグを発見できるかどうかを確認するために、状況を混沌とさせてみることでした。重要なバグと些細なバグの両方を発見しましたが、バグの数自体は多くありませんでした。現在、私たちはHoloFuelで下記のバグを修正し、テストしています。

  • コンダクターとHoloFuel DNAの問題により、トランザクションエラーが発生することがあるバグ
  • アカウントのアイコンが表示されないバグ
  • アカウントのユーザーネームが変更時に更新されないバグ
  • 検証時の小数点の精度誤差
  • UIの小さな変更点

来週、プレリリーステスターに修正をロールアウトしたいと考えています。そのテストが完了した後に、すべてのHoloPort所有者に展開することを、楽しみにしています!

ホスティングされたhAppsのアップデートも順調に進んでいます!

上記のアップデートと、HoloPort所有者が開発者アクセスのためのリモートSSHアクセスを有効にしたり無効にしたりできるようにするための別のアップデートの他に、私たちはホストされたhAppにも取り組んでいます。これにより、HoloPortオーナーは他のユーザーのためにhAppをホストできるようにもなります。

元々、読者がHoloPortを買ったのはそのためです。独自のアプリのためのプラグアンドプレイのボックスでも良いですが、ホロポートの本来の目的は、他の人のためにアプリをホスティングしてお金を稼ぐことです。他にもいくつかのアップデートを優先して開発していますが、今回のリリースは、ホロポートでアプリをホストできる機能の最初の公開テストともなります。

<iframe width=”673″ height=”378″ src=”https://www.youtube.com/embed/QNryquWbOVM” frameborder=”0″ allow=”accelerometer; autoplay; encrypted-media; gyroscope; picture-in-picture” allowfullscreen></iframe>

では、なぜこれが現にテストされているものと違うのでしょうか?これまでに見てきたHoloFuelのスクリーンショットは、HoloPortの所有者自身のアプリのインスタンスを示しています。上記のビデオは、ウェブユーザーがHoloアカウントを作成し、誰かのHoloPortでHoloFuelのホストされたインスタンスを使用している様子を示しています。ユーザーは、これがHoloPortでホストされたアプリであることに気づきもしませんし、通常のウェブアプリと何も変わらないと思うでしょう。

Holochainにいくつかのパッチを追加してエンドツーエンドの暗号化を強化し、現在は、ユーザーがオフラインになる、ホストがオフラインになる、ユーザーが利用できるホストがいないなどの潜在的障害ケースのすべてを堅牢に処理するために取り組んでいます。

これは、HoloPortの所有者が自分のデバイスの電源を入れてインターネットに接続している限り、自分の実行中のインスタンスを持つことが保証されている、自己ホスト型のhAppの失敗例よりも複雑なものです。上記のシナリオはユーザーの視点から考えなければなりませんが、ホストの視点からも考えなければなりません。なぜなら、Holo上でホストされているhAppでは、ユーザーは自分の資格情報を完全にコントロールしているからです。電子メールとパスワードからブラウザ内で資格情報が生成され、ブラウザが表示されているデバイスからこの資格情報が離れることはありません。つまり、HoloPortがユーザーに代わって保存するデータはすべて、ユーザーのブラウザ上で署名を求めなければなりません。私たちの設計では、この処理は非同期に行われるので、ユーザーが指定したホストに特定のデータへの署名を依頼する前に、誤ってブラウザを閉じてしまう可能性があります。

これらのケースを技術的に正しい方法だけでなく、ユーザーフレンドリーな方法で処理することが重要になります。すべてのホロ上でホストされたhAppはこの作業の恩恵を受けることになりますが、何か問題が起きたときでも、エンドユーザがこれらのhAppとのやりとりの方法を理解できるようになった時は、私たちは正しいことをやり遂げたと実感できるでしょう。

ホロチェーンの既知の問題: hAppテストフレームワークのリグレッション、ネットワーク切断時の一貫性の問題

先週、Holochain v0.0.0.51-alpha1 をリリースした後、マルチユーザーシナリオをテストするためのフレームワークであるTryoramaの問題を発見しました。このバージョンに導入されたバグ修正は、Tryoramaが分散型ハッシュテーブル(DHT)が一貫性を持つようになるまで待つ方法を壊しています。この問題を回避する方法を見つけるには、開発者フォーラムをご覧ください。私たちは `s.consistency()` を廃止し、DHTでデータの伝播をテストする新しい方法を導入する予定です。

また、ノードが部分的にオフラインモードでデータを公開した後にシャットダウンした場合に発生する可能性のある保持リストの不一致を発見しました。この修正は今週、HoloFuelのプレリリーステスターによってテストされており、近日中にリリースされる予定です。

コアなリファクタリングの進捗状況から得られた初期の結果

HoloFuelのテストによって、HoloCainのコアをどのように我々が設計したかをじっくり検証することになったことについて、ここ数ヶ月の間に多くのヒントを提供してきました。これまでのところ、リファクタリング作業の実際の詳細についてはあまり触れていなかったので、いくつかの心強いニュースをお伝えしたいと思います。

この作業の大きな目標は、正確性、保守性、パフォーマンスです。正確性とは単純に正確であるかないかのどちらなので、複雑ではありません。しかし、内部構造が単純化されたことで、コア開発者がソースチェーンと分散型ハッシュテーブル(DHT)のアクションが正しい動作をしているかどうかを推論したり、正しくない場合に問題の原因を特定したりするのが非常に簡単になったと言いたいと思います。また、保守性は無形のものであることが多く、より「感じられる」ものに近いため、説明をするのは困難です。

パフォーマンスについては、数値を示すことができるので、説明しやすくなります。これらは初期の数値であり、機能を追加したり非効率性を削ったりすることで上下する可能性があることをお忘れなく。

  • Holochain バイナリはまだ同じサイズ(~15 MB)で推移していますが、より効率的にメモリを処理しており、DNAコードはZome関数の呼び出しを行うときにのみ持ち込まれ、頻繁に使用される場合にのみメモリに保存されます。これは誰にとっても素晴らしいことですが、HoloPort Nanoにとっては非常に重要になります。
  • Zomeをコンパイルするのに数分かかるのが数秒になりました。
  • 写真のようなバイナリデータは、保存および送信時に使用するスペースを25%削減できます。
  • Zomeとバリデーション関数の呼び出しは、新しいWebAssemblyエンジンであるwasmerでオーバーヘッドが1ms以下になり、wasmiと比較して大幅に減少しました。また、非IOバウンド関数呼び出しの実際の実行時間は100倍短縮されるでしょう。
  • 実行中であるZome関数は、現在の設計では約100KBに制限されているのに対し、新しい設計ではWASMランタイムの4GBのメモリをフルに利用できるようになりました。WASMの性能が向上したことで、画像処理や検証、分散型AI(DHT上でのGPTのようなもの)、ホモモルフィック暗号化ゼロ知識証明などの重いタスクをDNA内で直接実行することが可能になるかもしれません。

(注: 以前の記事では、ストレージバックエンドのより高速な代替としてLMDBをテストしていることを述べましたが、実際はHolochainは10月からそれを使っていたことが判明しました。1件だけパフォーマンスが向上したように見えるので、ほとんどの改善は他の部分から来ているのではないかと著者である私は推測しています)

また、私たちが統合している大規模な作業のすべてについて、パフォーマンスのリグレッションテストを実行しています。これらのテストは、パフォーマンスに影響を与える変更があった場合に我々に警告してくれます。我々はHolochainを高速で無駄のないフレームワークに維持することに本気で取り組んでいます。

この結果には、著者である私は本当に興奮しています。ホロチェーンコアと関連するHoloのhAppsの両方の公式リリースに統合し、オープンアルファバージョンへの旅を続けていく中で、現在のパフォーマンスの数値を上回る素晴らしい状態になるはずです。

最新版

Holochain Coreリリース: 0.0.51-alpha1| 変更ログ 

Holonixリリース:v0.0.81 | 変更ログ

Try-o-rama(エンドツーエンドテストツール)リリース:v0.3.4

hc-happ-scaffold: 0.1.0 (https://holochain.loveにて使用可能) | Project

Holoscapeリリース:v0.0.9-alpha (Holochain Core 0.0.47-alpha1を使用中)|ダウンロード

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

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

出典:HoloFuel Progress Report