Yumeville

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

新しいHolochain

令和2年9月17日

概要

さて、この一週間は私たちにとってビッグニュースの多い一週間でした。Holochainコアの開発チームがHolochainで行ってきたリファクタリング作業幕を開けたことはもう聞いたかと思います。まだ耳にしていない方は、ハイライトを読んでみてください。

トピック

  1. Holochain RSM(リファクタリングされたステートモデル)を公開
  2. 次のステップ
  3. hApp開発者にとってRSMは何を意味するのか?

Holochain RSM(リファクタリングされたステートモデル)を公開

常連の読者は知っていると思いますが、Holo Host Alphaのテストは、自動テストでは不可能な方法でHolochainの様々な問題点を洗い出しました。パフォーマンスのボトルネック、デバッグを妨げてしまうアーキテクチャの選択、そしてもちろんコードのバグについて学びました。アルファテストの非常に早い段階で、私たちは現在のコードベースを大幅にリファクタリングするか、完全に書き換えるかを検討する必要に迫られました。

私たちは後者に決定し、Holochain RSM (Refactored State Model)という新しいホロチェーンを開発しました。わずか6ヶ月の作業で、新しいコードベースはコア機能の面で旧コードベースを上回り、パフォーマンス、保守性、正確性を向上させました。

最大の変更点は、その名の通り、ReactのReduxパターンに触発された内部状態モデルの削除です。コアの開発チームは、基本的なHolochainのステートモデルの上に余分な抽象化レイヤーがあるために、実装の正しさを推論したり、バグを追い詰めたりすることが難しくなっていることを発見しました。このことは、過去数ヶ月間のHoloFuelテストで多くの「保持リストの不一致」、別名「一貫性バグ」を確認したことで、特に明らかになりました。

これで、アプリケーションの状態を表すコンダクターの画像とディスク上の間に、余分な抽象化の層がなくなりました。これにより、フレームワークがより簡潔(つまり、既存のコア開発者チームや将来のホロチェーンへの貢献者が考えることが少なくなったということです)になっただけでなく、ソフトウェアのクラッシュや停電の障害ケースに直面しても、より強固なものになりました。そして、私たちのコードが正式な仕様を正しく実装していることをより確信できるようになりました。

RSMではより簡単に貢献できるようになりました!

他にも開発者が、変化を感じることができる部分があります

  • 新しいWebAssemblyエンジンであるWasmerは、以前のものと比べてコンパイルと実行時間が2桁分速くなっており、その設計の違いにより、内部のパイプを簡素化し、メモリ使用量を節約することができます。
  • 新しいキャッシュメカニズムである「カスケード」は、データの新鮮さよりも可用性を優先してローカルデータを最初にアクセスしようとします。これは、ローカルに書き込まれたエントリや最近取得したばかりのエントリは、ネットワークへの呼び出しなしで、キャッシュから即座にロードされることを意味します。
  • ノード間通信にはWebSocketではなくQUICを使用しています。これにより、(DHTの近所間でのような)多忙なペアワイズ接続でも、転送を多重化し、並列タスクがお互いにブロックし合うのを防ぐことができます。また、QUICは再接続にかかる時間が短いため信頼性の低い接続でも高速です。
  • メモリからの負荷を軽減し、データを素早く取得するために、LMDBをより有効に活用しています
  • これらの変更点を合わせると、前バージョンのHolochainと比較して、パフォーマンスが最大2000倍、40倍のメモリ使用量削減、ネットワークのチャタリングが2500倍減少、そしてコンパイル時間が速くなることが予想されます

ネットワークといえば、新しいHolochainには完全に実装されたDHTが搭載されており、負荷を分散して複数のノード間での共謀を阻止する責任のノード近所間での責任分担のモデルを中心に構築されています。QUICトランスポート部分はまだ完成していませんが(現在のところインスタンスは1つのコンダクター内でしか通信できません)、前バージョンよりもすでに完全なP2Pネットワークに近づいています。つまり、これまで使っていた中央集権型スイッチボードサーバであるsim2hは完全に無くなります。(注: 最初は全てのノードはデバッグする変数の数を減らすために中央のプロキシを経由してトラフィックを誘導しますが、QUICのエンドツーエンドのTLS暗号化により、プロキシはトラフィックの内容を検査することができなくなります。これはsim2hではそうではありませんでした)

メンテナンス以外の開発は、すでにかなりの期間、RSM に集中していました。今では公開され、私たちの開発活動のダッシュボードには、実際に組織で何が起きているかが反映されています。

次のステップ

今のところ、RSMのレポを公開したりTryoramaのテストフレームワークを更新したり、新しいJavaScriptクライアントを書いたりしただけです。まだまだやらなければならないことがたくさんあります。

  • 古いHolochainのバグ修正リリースがあと1つか2つありますが、今はHolochain Reduxと呼んでいます。私たちはまだHolo Host AlphaのテストでHolochain Reduxを使用しています。
  • その間に、Holo関係のアプリ (HoloFuel, Service Logger, Host Console, Publisher Portal) と HoloPort OS を RSM を使用するように移植していきます。
  • RSMは、ブリッジング、アプリレベルのデータ暗号化、シグナリングなど、Reduxで利用可能だったいくつかのAPI機能の実装をまだ必要としています。
  • 開発者のツールを以前のバージョンと同じレベルにするためには、もう少しやるべきことがあります。
  • Reduxが正式に非推奨になると、RSMはバージョン番号を取得し、holochain.love (Holonix開発ツールディストリビューション)とcrates.ioに公開されます。
  • ドキュメントと開発者のサポートは進行中の作業です。現在のところ、README、HackMD、RSMにホロチェーンアプリを移植している開発者からのメモなどがあります。RSMのAPIとHDKはすでに十分に文書化されています。RSMが正式にサポートされた後、これをdocs.rsに公開する予定です。
  • RSM が開発者コミュニティに定着したら、カウンターサイン、拡張性、ユーザーフレンドリーなランタイム、コアなホロチェーアプリなどの新機能に移行する予定です。

hApp開発者にとってRSMは何を意味するのか?

注意: これはまだリリースではありません。アーリーアクセスのパートナーはすでに1、2ヶ月間使用していますが、私たちがリリースをカットし始めるまでは、常に正常に動作することを保証することはできません。特に、macOS上でインストールに失敗する原因となる最近のリグレッションの証拠を見てきました。この問題を解決するために、レポジトリのメインのreadmeは特別な指示で更新される予定です。

新規開発者は

もしあなたが DevCamp に参加していてまだビルドを始めていない場合や、Holochain に全く慣れていない場合は、最初からRSMを学ぶことをお勧めします。Redux のドキュメントを読むこともできますが、Holochain の普遍的な概念を超えて、その多くは不適用になることを知っておいてください。すぐにRSMを使い始めると、最初の一歩は少し揺らいでしまうかもしれませんが、ツールやドキュメントを展開していけばすぐに良くなっていくでしょう。

既存のhAppsを開発している開発者

コアAPI、HDK、admin APIが変更されました。基本的には、これは良いことです。RSMに早くからアクセスしている開発者は、holochain reduxの約⅓でDNAの機能を書き換えることができると言っています。しかし、これはあなたのDNAのソースコードを書き換えなければならないことを意味します。近いうちにHolochain Open Devのブログで移行ガイドを探してみてください!

また、Holochainフォーラムに行って、私たちやhApp開発者のコミュニティとつながることをお勧めします。彼らの中には、RSMレポへの早期アクセスが与えられ、数ヶ月間RSMを使ってビルドしている人もいます。私たちはあなたがRSMで開発を開始するのを喜んでお手伝いします。

全ての開発者

RSMでは多くの変更点があり、急速に安定してきていますが今は、APIはまだ不安定です。そして、先に述べたように、ドキュメントはまだ書かれている最中です。それまでの間、公式リリースの前にRSMに飛び込みたい場合は、コア開発チームとコミュニティのリソースをチェックしてください。

開発状況

最新版

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

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

出典:A Fresh New Holochain