Yumeville

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

稼働しています!

令和2年12月24日

概要

今週はビッグニュースがあります!それは実際にHoloが実際に機能しているということです!現在、約50人のHoloPort所有者、我々のプレリリーステスターが、完全なP2PのHoloChainネットワークを使用してお互いにチャットをしています。これは機能していて、ほとんどの場合動作も速く、最も重要なことは、ネットワーク層ですべてが正しく動作していることです。

私にとっては、これは長い間待ち望んでいたことでした。多くの時を待ち、Holochain Reduxのパフォーマンス問題一貫性のバグに落胆しながら希望の松明を灯し続け、そしてコア開発チームがHolochain RSMの書き換えにすべてのチップを投入しているのを見てドキドキしていました。Holochainアプリが従来のクラウドアプリと同じ速度で動作しているのを見るのはとても素晴らしいことです。

私の最大の残念な点は、欧米国の多くが祝日である時にこのニュースが出てきたことです。このアップデートを現在読んでいる方には感謝いたします。

トピック

  1. HoloPortのElemental Chatは、テストでも無事稼働
  2. HoloPort NanoインストールイメージをHPOS v20.09に更新し、製造テストの準備が整う
  3. HoloPort用USBリカバリーイメージ
  4. 有用なホスト関数を追加しました。remote_signalと暗号化/復号化
  5. Build It! 第2と3エピソード: Vueを使ったhAppを瞬間的に作成し!コミュニティの構築そして個人情報の管理
  6. 開発者のための3つのビデオシリーズ:おさらい
  7. 試作品のJavaScriptのコンダクターは興味深く、もしかしたら読者にも役立つかも!

HoloPortのElemental Chatは、テストでも無事稼働

今年の年末シーズンは、私たちのチームメンバーの喜びで溢れています。私たちはついにHoloportへのElemental Chatのリリースを開始しました!これまでのところ、約50人のプレリリーステスターが利用しており、Holochainが実際のインタラクティブなアプリケーションを扱う準備ができているかどうかを確かめるために、我々のチャットアプリケーションを使用しています。

そして今のところ、すべてのテストで正常に稼働しています。Holochainの約束、つまり中央集権的なインフラストラクチャやブロックチェーン台帳なしでのデータの整合性を保つ可能性は、今のところ維持できる約束であるようです。

データは最終的に正しい場所に到達し、途中で何も失われたり破損したりすることはなく、DNAからコア、ネットワーク層まで、すべてのパイプが正しく機能していることを示しています。

「これはまやかしか?実はすべてのデータを追跡している一元化されたデータベースがあるのではないか?」と疑問に思う人もいるかもしれません。でも、これは本当にP2Pで稼働しているのです。テスト者のブラウザとHoloPortを接続するために使用されるHoloルーティング・インフラストラクチャの他に、唯一の集中化されたポイントはプロキシ・リレーであり、その唯一の目的は、制限のあるファイアウォールを介して個々のピア同士を接続することです。そして、それは便利さのために今は中央集権化されているだけです。(技術的な詳細に興味があれば、プロキシリレーはP2P HolochainゴシップのTURNサーバーのようなものです)

これはHolochain Reduxでは到達できなかった段階です。一貫性やパフォーマンスの問題をすべて解決している間に、DHTのトラフィックを一元的に管理・分析するために、sim2hというスイッチボードサーバのようなものを作らなければならなかったことを覚えているかもしれません。そのため、Holochain RSMがあるべき姿で正確に動作しているのを見るのは、私たちにとってかなりエキサイティングなことです。

しかし、まだバグがないわけではありません。メッセージが表示されるまでに時間がかかったり、UIがHoloPortへの接続を失ったり、(最近修正されました)バグによってHoloPortのファンが大音量で鳴ったりすることがあることにテスターは気づいています。しかし、これらのバグはどれもネットワークやデータの整合性のレベルではありません。いくつかはUIのバグであり、いくつかはHolohainやHPOSの些細なバグであり、いくつかはHolochain自体の最適化が次のステップであることを示しています。

実際Elemental Chatとは一体何なのでしょうか?まずこれは、洗練された、生産転用可能なアプリケーションではありません。我々は、HoloFuelの前にこのアプリでHoloネットワークをテストしたいと思いました。理由は3つです。1つ目の理由は、HoloFuelよりもチャットアプリをテストした方が興味深いだろうと思ったこと、2つ目は、Holochainのすべての機能でのバグを見つけられるだろうと思ったこと、3つ目は、パフォーマンスのボトルネックがどこにあるのかを教えてくれるものが欲しかったということです。

エンジニアだけが喜ぶような奇妙なバグもあります。(私はエンジニアなので、フォーラムで、最終的な一貫性の驚くべき性質と、アプリの中でこれを踏まえてどのように設計するかについての記事を書きました)このチャットアプリは、アルファテスト段階を超えて長く運用する計画はありません。(本当のHolochainベースのチャットアプリについては、我々の友人であるKizunaプロジェクトをフォローしたり、クラウドファンディングに寄付したりしてください)。しかし、とりあえずこのElemental Chatは本来の目的を十分に果たしており、Holochainが我々の期待以上のパフォーマンスを発揮していることを示しています。

HoloPort NanoインストールイメージをHPOS v20.09に更新し、製造テストの準備が整う

ハードウェアのスペックが控えめなHoloPort Nanoは、ユニークなエンジニアリング上の課題を提示してきました。開発の初期段階では、Nanoの根幹をなすBanana Pi M64ボード上でNixOS(HoloPortのOSの基盤)を実際に使用していた唯一のプロジェクトでした。そのため、動作させるためには多くの道のりを開拓しなければなりませんでした。

最近では、HoloPortOSの自動アップデーターがNanoの少量のフラッシュストレージを最大にしていました。私は最近、開発チームがこれのための修正を考え出したことを知り、新しいインストールイメージがメーカーに配信されたことを耳にしています。この新しいイメージは最新バージョンのHPOSをベースにしており、NixOSからの大きな変更点と新しいHolochain RSMコンダクターを導入しています。(つまり、あなたが最初にNanoの電源を入れたときに、1 年半に相当するアップデートを待つ必要がないということです)私および少数の他のチーム・メンバーは私達の Nanoをこのイメージでテストし、自動更新していることを確認しました!

私たちの次のステップは、現在起動時にクラッシュしているHolochainコンダクターをデバッグし、さらにテストするためにチームメンバーにいくつかのより多くのユニットを提供することです。すべてがクリアされれば、年明けの生産に向けて動き出します。

HoloPort用USBリカバリーイメージ

Nanoの新しいOSイメージをテストする過程で、HoloチームはUSBリカバリーイメージを作成しました。また、このイメージを使用して、保証期間中に送り返された標準のHoloPortとHoloPort+の修理を行いましたが、多くのケースで成功しているようです。私たちは、これをサポートツールキットの一部にすることを計画しています。不良ユニットが誤って工場から送られてきたり、動作中のユニットが誤って壊れてしまったりするような稀なケースに役立つはずでしょう。

有用なホスト関数を追加しました。remote_signalと暗号化/復号化

Elemental Chatの開発中に、開発者は「signals」と呼ばれるデザインを思いつきました。これは、あなたが慣れ親しんでいるシグナルではなく、あるエージェントのセルが他のオンラインエージェントに送信するメッセージです。これは、DHTを介さず他のエージェントに新メッセージがあることを知らせるため、チャットは高速で反応が良いように感じられます。

残念なことに、これは正反対の結果となりました。これは、あるエージェントが別のエージェントのzome関数を呼び出すことができる機能である call_remote を使用していたからです。call_remote は戻り値を待つAPIです。しかし今回のケーでは自分のシグナルが相手に受信されたかどうかを知るために待つ必要がないので、call_remoteは無駄な時間を作ってしまいました。これだけではなく、call_remote は他のzome関数をブロックするので、複数のピアへの並列呼び出しを行うことができないのです。そのため、オンラインになっている人が増えれば増えるほど、すべてが遅くなってしまいます。

そこでHolochain core開発者は新しいホスト関数 remote_signal を追加しました。これは UI シグナルのように、受信者からの応答を待たないノンブロッキングの関数です。これは Elemental Chat のパフォーマンスを非常に向上させ、リアルタイムのコラボレーションアプリを構築したい人にとって有用なツールにもなるでしょう(共有ドキュメントのライブアップデートや、新しいメッセージのping/バッジ、タイピングインジケータなどで使えます)。

前述のフォーラムの投稿を読んでください!Elemental Chatの奇妙な一貫性のバグについて話しています。

コアチームはまた、あなたが遊び始められるように暗号化と復号化機能を追加しました。これらの関数は、秘密のデータを公開して、DHTが提供する回復力と可用性の恩恵を受けられるようにするのに便利です。暗号化には2種類あり、どちらもlibsodiumの「ベストプラクティス」アルゴリズムに基づいています。

  • x_25519_x_salsa20_poly1305_encryptは、単一の受信者向けのメッセージに適しています。これは、保存されている公開鍵 (エントロピーの原因になるので、頻繁に生成した方がいいでしょう) と、受信者があなたに与えた公開鍵のうちの一つを受け取り、それらから共有の暗号化鍵を導き出し、それを使ってメッセージを暗号化します。受信者は姉妹機能である復号化関数を使います。
  • x_salsa20_poly1305_encryptは、複数の受信者を対象としたメッセージに適しています。これは暗号化キーを受け取り、それを使ってメッセージを暗号化します。姉妹関数である復号化関数は同じ鍵を必要とし、最初に安全な経路で受信しなければなりません。秘密はWASMメモリ内にあるため、マルウェアに読まれる可能性があり、そのためこの機能は前の機能よりも安全性が低くなっています。将来的には、この機能をより安全なものにしたいと考えています。

これらの関数は、まだ実装されていない `encrypt` と `decrypt` ホスト関数を置き換えるものです。

Build It! 第2と3エピソード: Vueを使ったhAppを瞬間的に作成しよう!コミュニティの構築そして個人情報の管理

第2話:Vueを使ったhAppを瞬間的に作成しよう

2本目の動画では、フィリップ氏が1本目の動画で紹介したVueを使った作業をさらに披露しています(GitHubリンク:プリセットプラグイン)。これらのツールを使えば、Vueの開発者であれば誰でも、コンダクター付きのシンプルなhAppを瞬時に構築することができます。今回は「Columns & Cards」と呼ばれるより複雑なアプリをデモしていますが、これはKanbanスタイルのアプリを使っている人なら誰でも知っていることでしょう。

Vueには何百万人もの開発者がいますが、Holochainまだまだです。このツールは、GitHubのレポ、Nixのパッケージ、コンパイル、コンフィグなど、新しいhApp開発者にとってはイライラするようなことをすべて排除してくれます。このツールは、Holochainツールを使用する上で最初の経験を良いものにするためのもう一つのステップです。

フィリップ氏は今週末にこのツールをVueの開発者たちと共有したところ、彼らは「すごい!これでHolochainアプリが実際に作れるようになった!」と言ってくれたそうです。

第3話:コミュニティの構築そして個人情報の管理

3つ目のビデオでは、Philip氏がHolochainの本来の目的であるコミュニティを構築するためのhAppをデモしています。Columns & Cardsをテンプレートにして、コミュニティビルダーは、共有の連絡先リストを管理したい人たちのために作られています。

これは、再設計されたPersonas hAppを展示する絶好の機会であり、すべてのhAppにまたがって個人情報を管理するためのものです。Personasは、元々はPersonas & Profilesと呼ばれ、後にIdentity Managerという名前で再ブランド化されました(最初のバージョンはこちら)

Personas は、個人情報を変更すると個人情報の詳細を要求されたhAppの中で、個人情報が自動更新されます。名前から察しがついたかもしれませんが、家族、仕事、ボランティアなどの生活領域ごとに、それぞれ異なる名前、電話番号、メールアドレス、好みのユーザー名などを設定して、別々のプロフィールを作成することができます。最終的には、どのアプリがその情報を要求してきたのか、またその情報を使って何をしているのかを確認することもできます。

私は同じ情報を何度も何度も何度も記入するのが嫌いですし皆さんも同じように感じたことがあるでしょう。確かに最近はウェブブラウザがやってくれますが、住所や電話番号が変わってもFirefoxが全てのウェブサイトに行って情報を更新してくれるわけではありません。hAppsでこれが可能な唯一の理由は、それらがすべて私のデバイス上で稼働していて、それらをお互いに通信させるのが簡単だからです。私はこれは無数の異なるサービスのアカウントを持っている人にとっては大した機能になると思います。

開発者のための3つのビデオシリーズ:おさらい

最近、いろいろなクリエイターの方にお会いして、Holochainが自分たちにどのように関係しているのかを垣間見てもらおうと、新しいビデオシリーズをたくさん作っています。他の人が自分のプロジェクトについて話しているのを聞きながら、お手本を見て学びたいと思っているなら、少なくとも1つのシリーズは面白いと思います…でも、どれがいいのかな?ここに便利なガイドがあります。

  • Ecosystem Sessionとは、長年に渡ってhAppを作ってきた人たちと、進捗状況や信念、哲学などについての長い時間をかけた会話を録画したものです。このような人たちは、すでにHolochainを念頭に置いてビジネスモデルを作り始めていたり、コーディングを始めていたりしますが、会話は経済、社会、エコロジー、政治など人間的な層を中心に会話が展開されます。
  • Build It!は、ラピッドアプリケーション開発ツールを使って、Holochain上で動くアプリを素早く開発する方法について、短いライブのガイド付きツアーになっています。通常、ビデオが終わる頃には稼働するアプリが出来上がっていることが多いです。あなたが開発者であれば、これらから多くのことを得ることができるでしょう。
  • Low-Code Zone (リンク未定)では、Holochainが実際のプロジェクトで可能にしていることを探ります。エージェント中心の考えを通して、トリッキーな社会技術的な問題を直視し、手元のツールの具体的な適用方法を調査します。起業家、CTO、その他の中程度の技術的な意思決定者がHolochainの良い理解を得られることを期待しています。

試作品のJavaScriptのコンダクターは興味深く、もしかしたら読者にも役立つかも!

Holo Hostの開発チームは、テストで使用するためのモック可能なコンダクターライブラリを作成しました。モック機能を持った Holo-Host/mock-conductorをロードして、実際のコンダクターへのWebSocket接続の代わりに配置し、UIのユニットテストを行うことができます。これはEnvoyとChaperoneをテストするために作成されましたが、開発者の中には「ありがとう、これが必要だったんだ!」と言ってくれる人もいるだろうと思ったので、皆さんに共有してます。

最後に

ふー、報告すべきニュースがたくさんあってよかったです。私を含めて、私たちは年末の間に少し休むことになりますが、Holochainのフォーラムツイッター、Elemental Chat(プレリリーステスターの方は)、その他どこでも私たちと連絡を取り合うことをお勧めします。いつものようには対応できないかもしれませんが、年始には普通に戻るでしょう。

新しい年にまたお会いしましょう。それまでは、体調管理に気をつけて、魂を休める時間を見つけて、本当に大変な一年に直面して乗り切ったことを祝い、明るい未来を願って頑張りましょう!