Yumeville

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

テスト、テスト、そしてテスト(開発者のためのニュースもあります)

令和3年01月29日

概要

ここ数週間の大きな焦点は、HoloPorts上でElemental Chatをテストすることで、Holochainフレームワークをテストすることでした。パフォーマンスが低下するシナリオを絞り込み、これらのシナリオでHolochainがうまく動作するようにするために修正しています。

また、開発者向けのニュースもあります!ツール、生成中のツール、Holochainフレームワークへの変更点など、開発者の作業を手助けするはずです。

トピック

  1. Holochain、Holoホスティング、Elemental Chatのテスト作業
  2. Holo FuelのUIスクリーンショットと全体的な進捗状況のアップデート
  3. Holochainの変更点 – シリアライズの容易化、新しいアプリのインストール方法
  4. holochain.loveが帰ってきた!
  5. Build It! episode 5: hAppsのためのバージョン管理用hApp
  6. FOSDEMはもう直ぐです!

Holochain、Holoホスティング、Elemental Chatのテスト作業

昨年末、私たちはElemental Chatと呼ばれる基本的なチャットアプリを使ってHoloPorts上でHolochainをテストするのに忙しくしていました。Holochainが想定された通りに動作することを証明するという点では、テストは素晴らしく成功し、すべてのリファクタリング作業がそれだけの価値があることを確認しました。

パフォーマンスの面では、様々な結果が見られました。ローカルでの作業は以前のバージョンよりもはるかに速くなっていましたが、ネットワーク操作は時間の経過とともにパフォーマンスが低下しました。クラウドベースのチャットアプリに期待されるような高速でオペレーションは始まり、より多くのメッセージが送受信されるにつれて劣化していきます。シグナル(速いが信頼性が低い)は低下し、DHT エントリ(遅いが信頼性が高い)は伝播するのに長い時間がかかっていました。重要なのは、DHT が混雑に直面しても回復力を維持するため役目を十分果たしていたということです。しかし、我々はこのパフォーマンスでは満足できませんでした。

今月、私たちはHoloネットワークを深く掘り下げ、減速の原因を探しました。我々を常にサポートしてくれているリリース前のテスターは、コアチームのメンバーと協力して、どのシナリオが最もパフォーマンスダウンしていたかを特定しました。これに加えて、最大500人のユーザーを対象にした実世界での使用を模倣する自動テストも実施しています。これまでのところ、多くのエージェントが常時通信を行っている場合に、最も頻繁に速度低下が発生すると判断しています。

私たちの今の目標は、単純にいくつかの実装しやすい部分を特定すること、つまり小さな最適化を行うことです。これらの修正は、現実の世界に対応した高速で弾力性のあるP2Pアプリの実現という最終目標に辿り着くためのものではありません。我々の実際の目標を達成するためタスク、つまりDHTをシャーディングしたり、ゴシップを深く最適化したり、データベースのパフォーマンスを向上させたりなど、開発サイクルの中で適切な時期が来たときに、後から実装していくでしょう。

自動テストについての興味深い注意点が一つあります。TryCPサーバーを覚えている人もいるかもしれませんが、これはバックエンドコンポーネントで、開発者が複数のデバイス間でTryoramaテストを実行するためのオーケストレーションを行うことができました。初期のHoloFuelテストでは、ボトルネックや障害点を探すために多用していました。開発チームは、TryCPをHolochain RSMで動作するように更新し、自動テストに関与する各HoloPortsにインストールしました。つまり、複数のHoloPortsを様々な構成で動作させるテストスクリプトを書くことができ、実用環境でHoloの全てがどのように動作するかを実感することができます。

将来的には、これを「Tryorama-as-a-service」ツールとして提供することを考えています。開発者は、hAppsのテストのためにたくさんのクラウドインスタンスを立ち上げるのではなく、実際のHoloPortでテストを実行することができるようになります。自動テストのために誰かにお金を払うのであれば、将来的にはアプリを実行している実際のマシンを利用した方が良いかもしれません。この件についての詳細は今後に期待してください!

Holo FuelのUIスクリーンショットと全体的な進捗状況のアップデート

ほとんどの方がスクリーンショットが大好きなので、素敵なスクリーンショットを公開しています。Mary氏の最新のHolo Todayの記事では、HoloFuel UIの最新版を垣間見ることができます。

HoloFuelはウォレットアプリ以上の機能を備えています。Holoホスティングネットワーク内のすべてのホスティングクレジットトランザクションの基盤となるアルゴリズムです。パブリッシャーポータル、ホストコンソール、およびリザーブアカウントコントローラは、すべてこれを使用します。

しかし、私たちはまた、人々が従来の暗号通貨のようにHoloFuelを送受信するための扱いやすいウォレットアプリを作りたいと考えています。新しく更新されたロードマップを見ていただければ、これを前倒しして、予想よりも早くリリースする予定であることがお分かりいただけると思います。

その間、私たちはリザーブアカウントのコントローラー、Holo FuelとHoloトークンの換金を調整するEthereumウォレット、KYCの統合など、リザーブアカウントを動かすためのすべてのインフラストラクチャに取り組んでいます。

Mary氏の記事では、現在のHoloホスティングの現状と、次に取り組むべき課題についても大まかな概要が示されています。それは大変励みになる記事となっています!

Holochainの変更点 – シリアライズの容易化、新しいアプリのインストール方法

Holochain RSMにはまだ公式のリリース番号がありませんが、hAppの開発者からのフィードバックを受けて開発を進めています。最近の変更点をいくつかご紹介します。

WASMの境界線での簡単なシリアル化

以前は、DNAに行き来するデータはすべて `SerializedBytes` のtraitを実装しなければなりませんでした。その要件がなくなり、Serdeが自動的にシリアライズできるものなら何でも受け入れ、そして返すことができるようになりました。つまり、素のTupleやその他のプリミティブをラップしたりする必要がなくなり、より複雑な構造体や列挙型もシンプルにWASMを行き来するようになりました。

新しいエントリ型や結果型など、この変更には他にも多くの変更点があります。

新しいアプリのインストール方法:まずDNAを登録してからアクティベートする

以前は、セルのインスタンス化を行う際にはInstallAppというワンステップで行っていました。`InstallApp`はDNA payloadへのパスを取得し、それを新しいUUIDやプロパティと混合して新しいDNAに ‘フォーク’ し、それをエージェントIDに接続して、エージェントが提供するネットワーク加入証明書(membrane proof)で起動します。

また、RegisterDnaでDNAを事前に登録しておき、オプションで UUUID やプロパティを渡すことができるようになりました。DNAファイルのパスをInstallAppに渡す手法は、この新しいメソッドに変わりました。

また、DNA ファイルのバイト自体をファイルパスではなく InstallAppRegisterDnaに渡すことも可能になりました。

DNAを登録済みのハッシュや生のバイトとして渡すことに対応するために、`InstallApp` エンドポイントにいくつかの小さな変更もあります。最新のHolochainで使用する前にDNAを再構築する必要があります (ただし、WASM バイナリを再コンパイルする必要はありません)。

holochain.loveが帰ってきた!

しばらくの間、Holochain Reduxの時のようにHolochainの開発ツールを簡単に始める方法がありませんでした。今では、古き良きワンライナーを使って、開発ツールのディストリビューションであるHolonixをHolochain RSMで動かすことができるようになりました。

nix-shell https://holochain.love

簡単かつ迅速に作業を開始したい方のために、バイナリキャッシュを使用することで、Holochainのコンパイルに費やす時間をすべて回避することができます。Linuxを使っている人は、このワンライナーを試してみてください。

$(nix-build https://nightly.holochain.love –no-link -A pkgs.holonix)/bin/holonix

以前よりもずっと速くなっていることが感じられるのと、このコマンドを使えばオフラインでもnix-shellに入ることができます。

nix-shell ~/.holonix/shellDrv

この新しい方法との唯一の違いは、最新のHolochainを自動的に更新しないことです。ホロチェーンの更新をするには長いコマンドの方を実行して更新できます。

Build It! episode 5: hAppsのためのバージョン管理用hApp

このエピソードでは、PhilipはDavid氏が我々をhAppsのために構築したソースコード管理ツールのツアーに連れて行ってくれています。現在、Holochain Builder IDE(旧CRISPR)のビジュアルツリービューアと共に、コミット、ブランチ、マージをサポートしています。Philip氏が説明しているように、Gitは分散型のハッシュチェーンベースのリビジョン追跡ツールであり、Holochainが何であるかに酷似しています。

FOSDEMはもう直ぐです!

2月6-7日に開催されるFOSDEM 2021オンラインカンファレンスをカレンダーに入れておくことをお勧めします。私たちは他のDWebの人たちと共同で分散型ウェブトラックを主催していて、Holochainのエコシステムから多くの人が参加するはずです。この種のイベントは、Holochainについて学ぶためだけでなく、他の人とのつながりを作るためにも素晴らしいものだと思います。Secure Scuttlebut、Dat/Hypercore、IPFS、GUNdb、Fluenceなど、多くのプロジェクトが、集中化という同じ問題に対して、少し違いはあるものの、ほとんど同じようなアプローチをとる仲間として存在していることがわかります。多くの気の合う仲間との出会いがあることを確信しています。