Yumeville

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

HoloFuel、ライブラリ、およびツールのためのCPUボトルネックの解消

概要

コアチームは、以前のリリースに続いて、別のHolochainリリースを公開してholochain.loveに追加しました。このリリースは、Rust reduxモデルベースのHolochainの最後の主要なパフォーマンスボトルネックの1つを解消しました。 HoloFuelアプリは、主たるユースケースにより適したものにするために、いくつかのリファクタリング作業を行っています。これにより、コードベースがシンプルになり、取引の解決時間が短縮されます。また、その追加機能の一部をサンプルコードリポジトリに移動して皆さんが使用できるようにする予定です。 共有したいライブラリとツールもいくつかあり、これらは皆さんの開発作業で非常に役立つはずです。

トピック

  1. Holochain v0.0.47がリリースされ、holochain.loveに追加され、Holoscapeにも含まれました
  2. Holochain PlaygroundでDHTの内部がどうなるかを確認できます
  3. 皆さんのプロジェクトで使用できるライブラリ集
  4. 作業中:RADツールとIDEの進捗状況
  5. HoloFuel進捗状況アップデート

Holochain v0.0.47がリリースされ、holochain.loveに追加され、Holoscapeにも含まれました

Holochain v0.0.46をリリースしてからわずか2週間しか経っていませんが、また更に新たなリリースが出来ました。このリリースでは、実際のノードでHoloFuelを積極的にテストした結果、パフォーマンスが大幅に向上しました。確認された問題の1つは最初の複数のトランザクションは非常に迅速に解決されますが、より多くの人が参加し、相互にTest Fuelを送信すると、解決時間は増加することでした。Holochainコアチームは、この問題の原因をソースコードの特定の非同期部分に分離し、バックグラウンドタスクで、取引が解決されているかどうかを確認するために継続的にチェックしていました。取引の解決に長い時間がかかるタスクの場合、不要なCPU時間を大量に消費していることが発覚しました。詳細について知りたい場合は、こちらのプルリクエストで詳細を確認できます。

最新のテスト実行からのCPU使用率。Test Fuelを処理する297ノード(99マシンのそれぞれに3つのインスタンス、22:15から開始)でも、CPUの使用率は低くなっています。

Holochain v0.0.47-alpha1Holonix v0.0.73に含まれています。これはholochain.loveに追加されており、holochain.loveクイックインストール手順(Mac/Linux及びWindows)で利用できます。こちらのツールをすでに使用している場合は、すべてのnix-shellを終了して、再度nix-shell https://holochain.loveを入力するだけで大丈夫です。

このバージョンは、新しくリリースされたmacOSおよびLinux用のHoloscape v0.0.9にも含まれています。 Holoscapeは、エンドユーザーとテスターがHolochainとホロチェーンアプリ(hApp)を簡単にインストールして実行できるようにすることを目的としています。

Holochain v0.0.47-alpha1の概要
  • バグ修正:CPUの過剰消費の原因となるバグ。 #2175
  • バグ修正:ネットワークタイムアウトを再試行ではなく検証エラーとして処理する検証バグ。#2176
  • 変更:Holonix開発者環境では、RADツールのコマンド名がhn-happ-createからhc-happ-createに変更されました。 holonix#151

Holochain PlaygroundでDHTの内部がどうなるかを確認できます

先週まで著者である私も知らなかった非常にエキサイティングなツールを紹介します。バルセロナ出身のHolochainアプリ開発者およびコミュニティオーガナイザーであるGuillem Córdobaが、Holochain Playgroundを作成しました。これは、データをDHTにコミットしたときに何が起こるかを正確に視覚化するためのツールです。これにより、特定のサイズと冗長性レベルのDHTを指定し、エントリとリンクを作成、更新、削除して、エージェントのソースチェーンとDHTで処理されたときの動作を確認できます。このツールには2つのモードがあります。

  • デザイナーモード: DHTのすべてのエントリが、エージェントIDエントリを含め、相互にどのように関連しているかを示します。

  • テクニカルモード: エージェントのソースチェーンとDHTシャードを検査し、公開されたエントリが存在する近隣のノードを確認できます。

このツールはDHTをシミュレートしますが、実行中のコンダクターに接続して、実際のDHTが保持しているエントリーを正確に確認することもできます。

このプロジェクトに著者である私は興奮しています。ホロチェーンアプリ(hApp)を介してデータがどのように格納するかを視覚化するのが難しいだけでなく、Holochainの開発者コミュニティが独自に成長している証でもあります。コミュニティーのメンバーがこれらの美しく有用なプロジェクトを作成し、コミュニティの他の人々に提供するのを見るのは素晴らしいことです。

プレイグラウンドを実際に試しGitHubでコードをダウンロードして、フォーラムのディスカッションに参加してください!

(追記:このプレイグラウンドツールは将来のHolochain IDEに組み込まれるる可能性があります。詳細は以下を参照してください!)

Holochain PlaygroundでDHTの内部がどうなるかを確認できます

より再利用可能なライブラリが成熟し、hAppプロジェクトで使用できるようになっています。以下では、すでに紹介されたものも含まれています。 (一部は進行中の作業であり、リリース用にはまだ使用できていないことに注意してください。これらを開発している開発者はあなたの貢献に感謝します!)

holochain/holochain-anchors

アンカーパターンを実装し、この機能を開発者独自のzomeにドロップできるライブラリです。この特定の表現により、アンカーの2段階のツリーを作成できます。これは、ユーザー名、ユーザー権限、ページなどのグローバルフィルターを作成するのに役立ちます。

holochain-open-dev/holochain_entry_utils

Rust構造体をソースチェーンにコミットする準備ができたエントリに変換するために必要なボイラープレートの一部を削減するRustトレイトです。

holochain-open-dev/holochain_events

タイムベースのDHTエントリのクエリを実行する日付範囲のインデックス作成を実装するライブラリ。カレンダー、イベント予約、プロジェクト管理hAppの構築に役立ちます。

holochain-open-dev/generic-tags

アンカーパターンを使用して文字列タグにエントリを添付できる別の分類ライブラリです。

holochain-open-dev/mutual-credit

基本的な相互クレジット通貨の一例。このコードベースは、エントリーの作成と検証の仕組みを示していますが、堅牢なセキュリティ監査やプライバシー対策はまだ実装していません。 ここにはLETSスタイルの通貨のプロトタイプが間もなく追加されます。

holochain-open-dev/social-triangulation

メンバーシップを「友達の友達」に制限するゾームです。このモジュールは、ネットワークに参加するために、エージェントIDが指定された既存のメンバーによって認証される必要があります。メンバーホワイトリストパターン良い例があります。

eyss/holochain_roles

Zomeにユーザー権限のようなロールベースのアクセス制御を追加できるライブラリ。 Progenitorパターンを使用ています。

作業中:RADツールとIDEの進捗状況

読者はノートを作れるホロチェーンアプリ(hApp)を生成して実行する、迅速なアプリケーション開発ツールの最初のプロトタイプについて聞いたことがあるかもしれません。あなたが開発者であれば、このツールを試してみて、どれだ簡単にホロチェーンアプリを生成できるか気付いたかもしれません。

ただし、RADツールとしては、まだまだ足りないものが沢山あります。このツールは、事前に作成されたhApp内のフロントエンドスタックと開発者ツールを開発者に見せることを目的としています。我々は機能を段階的に展開して、次のバージョンで開発者独自の仕様からホロチェーンアプリのコードが生成されるようにしていきます。

現在は、RADツールのために2つのプロジェクトが並行して開発されています。 1つ目は、開発者のスペックファイルからフロントエンドとDNAコードを自動生成するRADツールのバージョン2です。このスペックファイル形式は手動で簡単に記述できるため、ある意味でRADツールのUIになります。

ホロチェーンチームの元メンバーであり、密接な協力者であるPhilip Beadleも、データスキーマを作成するためのグラフィカルなビルダーを備えたIDE(統合開発環境)に取り組んでいます。 IDEには、上記のGuollemのホロチェーンプレイグラウンドも含まれる可能性があります。 GitHubリポジトリからわかるように、このツールはまだ初期段階ですが、活発に開発されています。ウィキを見て、現在計画されている機能を確認してみてください。

DNAモデラー。すべてのエントリータイプとそれらの間のリンクを、生成されるCRUDコードとともに設計および表示できます。

これらの2つのツールは異なるアプローチを提供し、開発者がコードの「退屈な部分」をすばやく構築できるようにし、非開発者がコードに触れることなくhAppを作成できるようにします。

これらのツールは、私たちの優先的hAppスタックの変化も示す可能性があります。データの配管にはもちろんApollo GraphQLを使用します(そしてもちろん、バックエンドにはHolochainを使用します)。しかしフロントエンドにはReact、Vue、およびプレーンな古いHTMLと互換性のあるコンポーネントライブラリであるLitElementを調査しています。また、_prtclプロジェクト(GuillemとPepo Ospinaによって作成された)やCortexも調べています。これは、データの目的についてスマートな推測を行うことにより、データスキーマから直接LitElementベースのUIを作成することを約束する興味深いフレームワークです。

HoloFuel進捗状況アップデート

今回と前回のデベロッパーパルスで共有したように、アルファテストに向けてHoloFuelを準備する作業の多くは、実際にはHolochainで行われました。実際、HoloFuelはかなり洗練されたhAppであるため、Holochainをテストするための優れた方法になっています。パフォーマンスの問題、検証(バリデーション)ワークフローの誤り、またはデータ整合性モデルにバグがある場合、HoloFuelはそれらを発見できています。コアチームは、すでに共有した作業に加えて、HoloFuelの開発作業で学んだことを反映するために、Holochainのコアの特定の部分を慎重にリファクタリングしています。この作業により、コアワークフローの正当性の推論、デバッグ、保証が容易になります。

しかし、HoloFuel自体にもいくつかの変化が見られます。ソフトウェアで相互信用通貨をモデル化するにはさまざまな方法があり、状況によっては、他の方法よりも適切な方法もあります。与信限度が必要なのか、それともオープンマネーまたはLETSスタイルの通貨が必要なのかなど、コミュニティにとってより効果的な方法が様々あります。迅速な結果整合性と厳密な結果整合性のどちらを好むかも状況によって変わるでしょう。また、常時オンラインのユーザー向けに最適化するのか、それともネットワークの分裂を許容するのかも考えるべきでしょう。つまりすべてのユースケースに当てはまる実装方法はないということです。

HoloFuelのコードベースには、最初は非常に巧妙な5ステップのプロセスがありました。これは、DHTに定期的に接続したりしなかったりするユーザー間の非同期通信に最適でした。

HoloFuelの主な使用例は、常時稼働のHoloPortsとhAppパブリッシャー間の迅速な取引解決、大量の取引認証、そして低価値であるマイクロトランザクションです。つまり、現在の設計は堅牢なものでしたが、実用上のメリットがほとんどないために検証(バリデーション)オーバーヘッドが大幅に増加しました。そのため、Holo Fuelのユースケース用に現在リファクタリングを行っている最中です。しかしこれにより、アルゴリズムがより単純になるという副作用があります。このリファクタリングが完了すると、デベロッパーパルス54号で説明した設計のように機能します。

それまでの間、現在のデザインで実際のテストを継続しており、次のHoloPortOSのメジャーアップデートに含まれる予定です。

開発ステータス

最新版

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

Holonixリリース:v0.0.73

Try-o-rama(エンドツーエンドテストツール)リリース:v0.3.4
Holoscapeリリース:v0.0.8-alpha (Holochain Core 0.0.47-alpha1を使用中)|ダウンロード

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

  • Holonix: 0.0.73
  • Holochain Core: 0.0.47-alpha1

出典:CPU Bottleneck Unblocked for HoloFuel, Libraries and Tools for You