Yumeville

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

相互信用通貨アプリを使ってみたり、ホロチェーンのモジュール性について議論する場に参加してみよう

令和2年5月29日

概要

先週、プロトタイプである相互信用通貨が使える新しいHolochain hAppのデモが発表されました。ホロチェーンフォーラムのメンバー同士で試しに使ってみたり、作成者はOpen Coopという、webinarでこのアプリのプレゼンテーションを行いました。 Holochainフォーラムにアクセスして、アプリ作成者や参加者とつながり、新しい価値共有の方法を試してください!

また、コミュニティメンバーは、hApp開発のベストプラクティスを一緒に模索することにも励んでいます。特に、アジア太平洋hackalong group(ホロチェーンやhappsについて議論する場)では、最近共有できるコードのモジュール性について話し合っています。このコラボレーションを成功させるには、多くの開発者の意見と同意が必要になるため、この重要な会話に参加することをお勧めします。

そして最後に、約束されたHolochainリリースの更新と、v0.0.47に戻し、変更の少ない新しいバージョンをリリースする理由があります。

トピック

  1. 他のHolochainユーザーと相互信用通貨アプリを使ってみる
  2. コミュニティ内でhApp開発のベストプラクティスを習得しよう
  3. Holochain v0.0.48がキャンセルされ、Holochain v0.0.49がリリースされました

他のHolochainユーザーと相互信用通貨アプリを使ってみる

ホロチェーンまたはビットコインが存在する以前から、Metacurrency Projectは、最先端技術を使用して、人間の主権を尊重し、世界に存在する多様な形態の富に可視性を与える通貨を利用する方法を模索していました。これらの模索の多くはソフトウェア開発を通して行われ、長年にわたってさまざまな人々によって使用されていました。

およそ10年間の試行錯誤を重ねた後、ビットコインのようなプロジェクトが設計段階で意図していなかった結果に苦しんでいた頃、Metacurrency Projectは、グローバルに繋がっている世界の神経系となるという大きなビジョンを持ったCeptrプロジェクトの1つのコンポーネントの構築とリリースに集中することを決定しました。このコンポーネントはP2Pのデータ整合性エンジンであり、ブロックチェーンの還元性とスケーラビリティの問題に対する解毒剤として提示されました。今ではそれをホロチェーンと呼んでいます。

Holochainの使用目的の1つは、あらゆる種類のP2P通貨を有効にすることです。「通貨」という言葉を聞いたときに最初に思いつくものはお金だと思いますが、Holoチームでは私たちの好きな通貨の種類の1つに相互信用通貨があります。相互信用通貨はP2Pの信用システムと考えることができます。このシステムでは、各参加者は将来の経済に価値を提供するという約束に裏打ちされた通貨単位を発行します。または、グループのすべてのメンバーが生み出せる経済的価値の合計に紐づけられた共有クレジットプールへのアクセス権を各メンバーに付与するグループと考えることもできます。どちらにしても、HolochainのようなP2Pアプリケーションフレームワークに最適です。

相互信用通貨は、私が最初にHolochainに夢中になったきっかけでした。著者である私の個人的な意見ですが、相互信用通貨はそれぞれのコミュニティーに彼らの経済生活の所有権を取得する権限を与える可能性があると思っています。そのため、ホロチェーンで開発された、相互信用通貨の実際に使用できる概念実証を見ると、とてもワクワクします。さまざまな方法コミュニティサポートしてきた世界中の3人の情熱的な開発者であるGuillem Córdoba氏、Hedayat Abedijoo氏、そして佐藤龍弥氏が共同でCommunity Mutual Credit hApp(コミュニティ用相互信用通貨hApp)を開発しました。 UIは理解しやすく、コードには暗号技術を用いたP2P技術に適したデザインパターンの良い例が複数あります。

Holochainでの相互信用通貨アプリがどのようなものか知りたい場合は、我々と一緒に試しに使用してみてください。 macOSまたはLinuxを使用している場合、比較的に簡単に始めることができます(最初にNixパッケージマネージャーをインストールする必要があることに注意してください)。コマンドラインをいじりたくない場合は、近日Holoscapeからすぐに利用できるようになります。

また、Guillem、Hedayat、Grace Rachmany(Holochainの特別寄稿者およびDAOのエキスパート)がOPEN2020ウェビナーで行ったデモをご覧ください。

<iframe width=”800″ height=”450″ src=”https://www.youtube.com/embed/7_VhMTXxr24″ frameborder=”0″ allow=”accelerometer; autoplay; encrypted-media; gyroscope; picture-in-picture” allowfullscreen></iframe>

使用された開発パターンの検証

開発者としては、クライアント/センターサーバー方式で習得したアプリケーションのデザインパターンをそのままホロチェーンに移植しがちだと思いますが、Holochainはクライアント/センターサーバー方式と異なる部分が非常に多いため、今まで採用してきたデザインパターンをいったん落ち着いて見直す必要があります。ホロチェーンでは、クライアント/センターサーバー方式では不可能なパターンを可能にしつつ、センターサーバー方式では可能ないくつかのパターンの実装を困難にしています。 Holochainの機能を理解すれば、その強みをうまく活用して、ホロチェーンのデザインパターンに反しないものを開発することが出来ます。

Community Mutual Credit hAppで使われているアプリのデザインパターンに興味深いものが2つあります。どちらもエージェント(ユーザー)中心のP2Pアプリに固有のものであり、それ以外のアーキテクチャでは実装をしてもあまり意味を成しません。 1つはSocial Triangulationというパターンであり、もう1つはLobbyという名のパターンです。

これらのパターンは、開発者としての読者に馴染みがないかもしれませんが、おそらく社会的な人間としての読者には馴染みがあると思います。

Social Triangulationパターンにより、DHT(分散型ハッシュテーブル)の既存のメンバーは、このDHTに新たに参加したい人を「保証」することができます。これが、どのように機能するか実際に例えを通して説明します。

  1. 実際に、アリス、ボブ、チャーリー、およびダイアンが良き友達だとしましょう。ボブ、チャーリー、およびダイアンは、彼らの町の相互信用通貨hAppに属しています。そこにアリスも参加したいと思っています。
  2. 相互信用通貨hAppでは、新規のユーザーのDHTへの参加を許可する前に、2人の既存のメンバーがこの新規ユーザーを保証する必要があります。なので新規に参加したいアリスは、ボブとダイアンに彼女の公開鍵を渡し、彼女のことを保証するように彼らに頼みます。
  3. ボブとダイアンは、アリスの公開鍵を含む「保証」エントリーを相互信用通過hAppのDHTにコミットします。
  4. ボブとダイアンは、アリスにDHTへの参加を試すことができることを伝えます。
  5. アリスのアプリが起動した時に、彼女が所有しているDNAのコピーは彼女の公開鍵を含むエージェントIDをDHTに公開します。
  6. アリスのエージェントIDの検証役に選ばれた他のユーザー(英語でpeerと呼びます)は、DHTで彼女の公開鍵に対しての保証エントリーの存在を確認します。そしてボブとダイアンの保証エントリーを確認し、アリスのエージェントIDエントリーに有効であることを示すマークを付けます。
  7. これで、アリスはDHTのメンバーの一部になりました!

このパターンの実装は、このリポジトリ、holochain-open-dev/social-triangulationにあります。(注:このリポジトリの開発者は、Holochainのある既存のバグを回避するために、今後数週間でコードをリファクタリングする予定です。詳細については、下記を参照してください。)

Lobbyパターンは、参加許可を有するDHTのメンバー(上記の町の相互信用通貨hAppなど)が特権を有するDHTの非メンバーと対話するためのパブリックスペースを作成します。ロビーDHT内では、参加許可を有するDHT内に非参加のユーザーが、既存の会員に参加許可を有するDHTへの参加許可を求めることができます。これにより、Holochainを介して直接通信できるため、参加したいユーザーの公開鍵を手動でコピーして貼り付ける手間が省けます。

Guillem氏は、佐藤龍弥氏のユーザー名Zome(holochain-open-dev/profiles-zome)と彼自身のリモートブリッジZome(holochain-open-dev/remote-bridge)を組み合わせることにより、ロビーDNAを作成しました。仕組みは次のとおりです。

  1. 上記のシナリオのように、ボブ、チャーリー、およびダイアンはすでに相互信用DHTに属しています。彼らはロビーDHTにも属しており、相互信用通貨DHTへの「リモートブリッジ」を許可することもロビーDHTのメンバーに宣伝しています。つまり、相互信用通貨DHTにまだ接続していないユーザーは、ボブ、チャーリー、ダイアンに相互信用通貨DHTのZome関数を彼ら代わりに呼んでくれないかとリクエストできます。(Holochainは「エージェント(ユーザー)中心」のフレームワークであることを忘れないでください。つまり、アプリは他のアプリに接続するのではなく、各エージェントが別々のアプリのインスタンスを自分で接続するのです)
  2. アリスは「alice_backyard_chickens」というユーザー名でロビーDHTに参加します。彼女はまだ、相互信用通貨DHTには不参加です。彼女のアプリインスタンスは、彼女のエージェントIDが持っている保証数を数えられるので、足りない場合はさらに要求することができます。
  3. しかし、この情報(アリスのエージェントIDの保証数)は相互信用通貨DHTに隠されているため、彼女のアプリインスタンスはリモートブリッジZomeを使用して、チャーリーのアプリインスタンスに保証数を数えるZome関数の呼び出しを依頼します。チャーリーはアリスに、ボブからの保証が1つだけあると伝えます。
  4. アリスはあと1つ他のユーザーから保証が必要であることを知ったので、ダイアンに、ユーザー名「alice_backyard_chickens」を保証するように依頼します。
  5. ダイアンはアリスのユーザー名を入力します。すると、ダイアンのアプリインスタンスは、そのアリスのユーザー名に添付された公開キーを検索し、相互信用通貨DHTでそれを保証し、アリスに保証したことを通知します。
  6. アリスのアプリインスタンスは、彼女自身の保証カウントを再度チェックし、保証数が十分であることを確認後、相互信用通貨DHTに参加します。彼女のピアは彼女のエージェントIDエントリを検証し、彼女を相互信用通貨DHTに受け入れます。

このhAppには、他にも多くの興味深いデザインパターンと再利用可能なライブラリがあります。コードを探索したい場合は、リポジトリholochain-open-dev/community-mutual-creditをチェックしてください。

コミュニティ内でhApp開発のベストプラクティスを習得しよう

Holochain開発者エコシステムが成熟するにつれて、開発者が再利用可能なオープンソースコードのモジュールを互いに共有することがますます重要になります。最も成功しているエコシステムは、イノベーションを加速し、被るモジュールをなるべく削減する「コードバザー」の様なものがあります。現在、ホロチェーンのエコシステムでのhApp開発の初期段階にあるので、コードを共有する場合、適切に設計された再利用可能なモジュールがどの様なものになるべきか、サードパーティの開発者が期待できるホロチェーンでの開発においての規則や、現在最も必要なモジュールが何であるのかについて合意することはとても重要です。

アジア太平洋Holochainコミュニティは、さまざまな高度なトピックに焦点を当てて、ホロチェーンユーザー向けに毎週「ハッカロン(hackalong)」を開催しています。最近、進行中の議論はモジュール性に焦点を当てています

現在進行中の議論場
  1. セッション1ビデオ:モジュール性に関するオープンなディスカッション
  2. セッション2のビデオ:特別貢献者のPhilip Beadleが、ユーザーがhAppを変更したり混合できる統合開発環境を備えたhAppランタイムコンテナーであるChimera+CRISPRプロジェクトを紹介しています。
  3. Holochainでのモジュール性とオープンソース開発に関するTelegramでの議論
  4. モジュール性に関するフォーラムディスカッション

Holochain v0.0.48がキャンセルされ、Holochain v0.0.49がリリースされました

先週、パフォーマンス改善してバグを修正するHolochainの次期リリースを約束しました。この作業中に、私たちはsim2hサーバーと個人のノード間で、誰がどのデータを保持しているかについて必ずしも同意しない機能後退が発生しました。したがって、まずはv0.0.48にアップグレードしないことをお勧めします。代わりに、Holochain v0.0.47-alpha1にロールバックし、v0.0.47-alphaと基本的に同じである新しいリリースv0.0.49-alpha1をリリースしました。唯一の違いは、サードパーティのライブラリの依存関係に対するいくつかの変更で、Zomeのコンパイルの失敗を修正したことです。

この新しいバージョンはまだholochain.loveには含まれていません。来週には含む予定です。それまでの間、高度なインストール手順を使用して、Holochain v0.0.49-alpha1を含むHolonix 0.0.75にアップグレードすることができます。

Holochain v0.0.49-alpha1の概要
  • 変更:v0.0.48からの変更がロールバックされました
  • バグ修正:upstreamバグを解決するためにFutures Crateの依存関係が更新されました。これで、Zomeをコンパイルできない問題を修正しています
既知の問題点
  • あるエージェント(ユーザー)がエントリの著者である場合でも、そのエントリーのリンクを取得しようとすると、コンダクターは常に必要ない場合でもDHTから取得しようとします。これにより、エージェントIDエントリが非同期通知のアンカーとして使用される場合にパフォーマンスに問題が発生します。
  • 長時間実行するzome呼び出しは他の呼び出しをブロックしてしまい、UIの動作を遅くしてしまっています。

開発ステータス

最新版

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

Holonixリリース:v0.0.75

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

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

  • Holonix: 0.0.73
  • Holochain Core: 0.0.47-alpha1

出典:Play with a mutual credit currency and join the modularity discussion