7500ノード達成のストーリー、試してみた5つのhAppについて
概要
今回のデベロッパーパルスでは、同時稼働ノード数が5000(現在は7500)に達した経緯、そしてこれが実際に意味すること、それが重要である理由、および次に何があるのかをお話します。また、ダウンロードして今日お試しいただけるhAppをいくつか紹介します!
ここ数週間は、様々なホロチェーンアプリ(hApp)がクロッカスのように発芽しているのを見てきました。より多くの開発者が自分のhAppをホロチェーンアプリインデックス(アプリストアの様なもの)に追加して他の人が試すことができるようにしており、オープンソースなコードモジュールを共有して新しいhAppの開発を開始しています。これは、特に最近のDevCampの期間中、開発者コミュニティを育成している人々の努力のおかげです。私たちはこの有機的な成長に本当にワクワクしています。ホロチェーンの新しい章が近づいていることを感じます。
トピック
- 5000(現在は7500)ノード達成のストーリー
- 様々なhAppの最初の芽 – 試してみてください!
- Holochain Core:バグ修正、パフォーマンスの向上、および今後の変更
- hAppを構築していますか?他の開発者と力を合わせてみましょう
- DevCamp 6:参加者が体験を共有
5000(現在は7500)ノード達成のストーリー
昨年7月に、私たちは野心的な目標を公に掲げることを決めました。HoloAlphaテストにむけて万全な体勢をとるには、Holochainが1つのネットワークで同時に動作する5000ノードをサポートするのに十分な速度である必要があります。当時は機能しているネットワークスタックがなかったため、これはあの時点で特に野心的な目標でした。
そして新年になりご存知のように、ほぼ2か月前にその目標を達成しました。その後まもなく、高負荷の状況で1500ノードを制限する回帰(修正したバグの先祖返り)が発生しましたが、そのバグを再修正した後、最大で7500ノードまで1つのネットワークで稼働可能になりました。
なぜ5000ノードなのか?これが何を意味するのか?
この5000と言う数字は、これまでに注文したHoloPortの総数よりも多いため、このターゲットを選択しました。アルファテストに万全な大勢で臨むには、機能的なHolochainランタイムが、すべてのHoloPort所有者と現実的なレベルのやり取りを行い、多数のネイティブなHolochainユーザーが参加しているアプリネットワークをサポートできる必要があると考えました。
これは実際にはどういう意味なのでしょうか?私たちが狙っている理想は、分散型ピアツーピアネットワークのすべての利点を提供しながら、Holochainアプリの使用経験が従来のクラウドアプリと同等かそれ以上であることです。ブロックチェーンのスケーラビリティは、意図的なアーキテクチャの構造によって制限されますが、ホロチェーンはユーザーの数に応じて拡大するように設計されています。誰もが独自の処理能力と、ネットワークを維持するためにDHTの断片を格納します。つまり、理論的には、Holochainアプリは本来の人間のニーズを満たすために無限に拡大できるということです。つまり、アプリを軽快でレスポンシブが高いものにして、ユーザーである人間が従来の生活を続けることができるように設計しています。私たちの目標は、これが実践でも正しいことを証明することです。
ユーザーエクスペリエンスの品質の最も重要なメトリックはレイテンシー、つまり「1つの処理にどのくらいの時間がかかるのか?」です。したがって、P2Pアプリでありながら実際に使用可能なアプリフレームワークを作成するという目標を達成するために、Holochainが現実的な状況でレスポンシブであることを維持できることを証明する必要がありました。
Tryoramaテストフレームワークを使用して、「5000人が一斉に1つのネットワークに参加したとしても、ネットワークは直ちに一貫性のある動きをすることができるか」という質問に答えるテストを設計しました。これは一般的にはあまり起きないことかもしれませんが、Holochainが非常にネットワークにストレスの大きい圧力がかかった時にどのように処理するかを測定するための良い基準になります。この負荷の大きいケースが処理できれば、より一般的な状況も処理できるはずです。
我々が次にやるべきことは、Holochainのパフォーマンスが時間とともにどのように向上するかを測定するテストシナリオのコレクションを作成することです。メインのシステムの遅延(レイテンシー)は、次のようないくつかの要因から生じます。
- ホロチェーンコアおよびネットワークコードの効率
- DHTのサイズ
- 1ノードのDHTでの近所のサイズ
- アクティブユーザー数
- 生成されるデータの量とサイズ
- ハードウェアとネットワークの仕様
これらの要因のいくつかは、特定のアプリまたはシナリオに固有のものかまたは起因しています。そのため、できるだけ実際のhAppと現実的なシナリオでストレステストを行いたいと思っています。前述のように、私たちのストレステスト用のインフラストラクチャは、いくつかのTryoramaテストが記述されているすべてのホロチェーンアプリをテストできます。現在の焦点は、基本的なシナリオ(常時オンラインの場合、ネットワークの切断と再接続、クラッシュしたコンダクターなど)の下での基本的なHolochain機能(ネットワークへの参加、データのDHTへの公開、データの取得、ダイレクトメッセージ)です。また、HoloFuelアプリは、テスト計画の「最終試験」の一環としてテストしています。これは、Holochain自体がHoloホストのアルファテストに対応できるかどうかを判断するものです。
どのようにして目標を達成したのか?
我々が、初めて実際のネットワークを起動したとき、インターネットなどの安定性の低いネットワークにおける無制限の数の孤立したマシンの相互作用について推論したりテストすることは困難であることがわかりました。大きなバグがすべて解消された後も、一部のデータが滞っていたり、Holochainが10のノードを超えて拡大するのに苦労していました。ネットワーク全体のトラフィックを把握する必要があり(分散型システムでは特に難しいこと)、データが行き詰まっている原因と場所を正確に特定し、その原因に関する理論を形成することが必要でした。
そこで、DHT全体を中央データベースに保持するP2Pネットワークシミュレータであるsim1hを導入しました。これは、ゴシップのルーティングを集中的に処理しながら、各ノード自体にDHTの断片を保持させるsim2hに置き換えられました。これらの2つのツールを使用して、ネットワークが一貫性に到達できなかったいくつかのトリッキーな問題の原因を特定できるようになりました。
一貫性の問題が解決された後、ボトルネックを特定して解消したところ、パフォーマンスが急速に向上しました。これらの多くはマルチスレッディングに関連していたため、Holochainがスレッドをより効率的に使用するように細心の注意を払いました。これらのホットスポットに取り組むにつれ、10ノードから100ノード、1000ノード、5000ノード、7500ノードにかなり迅速にノード数が増えました。
私たちの計画は、sim2hの一部を、動作することが証明されたlib3h(完全なP2Pネットワーキングソリューション)の分散型の部分に段階的に置き換えることです。最終的には、おそらく制限的なファイアウォールの背後にいる人々のためのプロキシを除いて、sim2hはほとんど残りません。ただし、独自のテストシミュレーションとして使用することはできます。
様々なhAppの最初の芽 – 試してみてください!
Holochainのサポーターは、「いつ実際にhAppを使うことができるようになるのか」という質問をよく耳にすると思います。実はすでに試すことができます!ユーザーフレンドリーなHolochainデスクトップアプリであるHoloscapeを使用すると、システム管理者でなくてもhAppをインストールして実行できます。コミュニティで作成されたいくつかのhAppと、我々のチームが作成しているhAppがすでに含まれている基本的なアプリストアも付属しています。完全にサーバーレスでプライバシーを尊重するアプリケーションの外観を友達や家族に見せたい場合は、Holoscape v0.0.7をダウンロードして、以下の5つのアプリのいずれかを試してください。
注:Holochainは参加型のエクスペリエンスを対象としているため、これらのアプリは、友達などのグループと一緒に試してみると、はるかに興味深いものになります。また、Holoscapeと私たちが共有したアプリの両方が、さまざまなアルファ段階または概念実証段階にあることを忘れずに試してみてください。問題を見つけた場合、プロジェクトの開発者はおそらくバグレポートやプルリクエストをしてもらうと嬉しいはずです!
- __holo.txt: Kristofer Lundによって作成されたリアルタイムな共同テキストエディター
- Communities: Holochainを使用したHyloアプリのフォーク、および将来のHolo Hostエコシステムのフラグシップアプリ
- Basic Chat: Holo開発者によって構築された概念実証用のチャットアプリ
- Acorn: Harris-Braun Enterprisesによって作成され、Holochainコアチームの業務慣行に基づいたコラボレーションプランニングアプリです。
- Identity Manager: 他のhApp間でデバイスキーと個人情報を管理するのに役立つ2つのHolochain「コアアプリ」のUI
Holochainコア:バグ修正、パフォーマンスの向上、および今後の変更
今週初め(3月6日頃)に、Holochain v0.0.44-alpha3をリリースしました。このリリースはまだhttps://holochain.loveコマンドを使ったインストールからはまだ利用できません(ただし、すぐに追加されると予想しています)。それまでの間、バイナリパッケージをダウンロードして、リリースをテストすることができます。
変更や修正概要は次のとおりです。
- バグ修正:高負荷の状況で情報交換手順で落ちることがなくなりました!これにより、5000ノード以上をサポートできるようになりました。 ->#2137
- バグ修正:ネットワークに参加するときの安定性の改善 ->#2115#2120
- バグ修正:オフラインモードでのより良いDHTルックアップ ->#2119
- 重大な変更:リンクのクエリーで正規表現(regex)一致がサポートされなくなった#2133
- 既知の問題:ダイレクトメッセージのタイムアウトが引き続き発生し、Holochain側か特定のhApp側なのかどちらに関連しているかを調査しています。
特に、重大な変更についてのフィードバックを皆さんからお待ちしています。この重大な変更は、攻撃者がリンクを保持するDHTノードに多大な負荷をかけ、パフォーマンスの問題とDoS攻撃を引き起こす正規表現(regex)を作成するのではないかと懸念して、リンクの正規表現フィルタリングを削除したことです。 DHT側のリンクをフィルタリングするために正規表現に依存している場合は、このフォーラムスレッドでお知らせください。便利なリンクフィルタリングツールを作成できるように、皆さんのリンクタグの使用状況に関するフィードバックをお待ちしています。
さらに、新しいWebAssemblyエンジンの作業は順調に進んでいます。これをHolochainコアデータフローに接続し、単純なDNAを実行し始めました。完全に統合されると、次の2つの点で新しいWebAssemblyエンジンが役立つことが期待されます。
- DNA実行の高速化:現在使用しているWebAssemblyエンジンであるwasmiはインタープリターです。新しいエンジンwasmerは、WebAssemblyバイトコードをマシンコードにコンパイルします。つまり、DNAコードはネイティブに近い速度で実行されます。私たちはまだこの改善を測定できる段階にありませんが、wasmerプロジェクトのベンチマークは、wasmiよりも通常100倍速くコードを実行することを示しています。
- メモリ処理の改善:実際のhAppが構築されていくにつれて、開発者は現在のWebAssemblyコードのメモリ処理コードの制限に達しています。新しいエンジンをサポートするコードは、数ギガバイトの関数入力をサポートします。
hAppを構築していますか?他の開発者と力を合わせてみましょう
最近、多くの開発者が新しいhAppの開発に取り掛かっています。ただし、特にエコシステムがまだかなり若いため、開始方法を知るのは難しい場合があります。更には、始めるために利用できるサードパーティのライブラリはまだ多くありません。多くの人々が同じ機能を必要としており、それを自分で構築することを検討している人も多いでしょう。
初心者の皆さまのために、新しいフォーラムカテゴリ「New Project」を作成しました。新規および経験豊富なhApp開発者が参加し、他のユーザーとチームを組み、共有できる機能において共同作業する機会を見つけることをお勧めします。また、このアンケートにご協力ください。我々が将来、開発者の皆さんを様々なリソースを使用して最大限にサポートする方法を理解するのに役立つだけでなく、コミュニティの他の開発者と連絡を取り、つながりを深めることもできます。
DevCamp 6:参加者が体験を共有
最後にDevCampの参加者が私たちと共有したいくつかのフィードバックを皆さんにも共有したいと思います。
開発ステータス
最新版
Holochain Coreリリース: 0.0.44-alpha3| 変更ログ
Holoscapeリリース:v0.0.7-alpha (Holochain Core 0.0.42-alpha5を使用中)
Holonixリリース:v0.0.67
Try-o-rama(エンドツーエンドテストツール)リリース:v0.3.2
https://holochain.loveにて使用可能なバージョン
- Holonix: 0.0.62
- Holochain Core: 0.0.42-alpha