Fungible Token 規格 ICRC-1 の設計と進化(日本語訳)

tokuryoo
DfinityJP
Published in
9 min readSep 11, 2022

Medium の DFINITY 公式の記事 The Design and Evolution of the ICRC-1 Fungible Token Standard(2022/8/23) の日本語訳です。

Internet Computer の fungible token standard(代替性トークン規格)の原理と機能について解説します。

8月14日、NNS の圧倒的多数の投票により、Internet ComputerICRC-1 Fungible Token Standard の提案が採択されました。Ledger & Tokenization Working Group のメンバーとして、コミュニティの信頼とサポートに身の引き締まる思いです。

投票後、多くの人がこの規格についてもっと知りたいと私にコンタクトしたことが、この記事を書く動機となりました。私は、ワーキンググループによる決定の理由を説明し、採択された規格の興味深い機能にハイライトを当て、今後の取り組みについて概説します。

設計原則

もし、5人のプログラマーにそれぞれアプリケーションプログラミングインターフェースの設計を依頼したら、その解決策の多様性に驚くかもしれません。人は、自分の価値観や優先順位に基づいて意思決定を行い、ソフトウェアを設計します。

ワーキンググループが規格を設計する際に従った原則を知ることで、最終的なプロダクトをよりよく理解できます。

相互運用性(インターオペラビリティ)

新しい規格と既存のインフラとの互換性は、ワーキンググループの主要な関心事でした。

何億ドルものトークンが、Internet Computer でホストされている既存の台帳にロックされています。それらの台帳のストレージモデルと互換性のない仕様を作成するには、それらのトークンをラップする必要があります。ラップされたトークンは、ブロックチェーン間の相互運用性のための合理的な妥協点ですが、この解決策を Internet Computer ですでにホストされている台帳に適用すると、多くのデメリットが生じます。

  • エコシステムの分断。一部のアクターはオリジナルの台帳を使い続け、一部のアクターは利便性を求めてラップされたトークンに移行するでしょう。これらの2つのグループは、互換性のないツールとインターフェースを使用し、サポートしなければならないでしょう。
  • ユーザーのフラストレーション。すべてのユーザーは、どのトークンバージョン(ラップされているバージョン または ラップされていないバージョン)を使う必要があるかを決めなければなりません。この精神的負担は不要であり、回避可能です。
  • 運用コスト。ラップしたトークンには、新たなインフラのセットアップと維持が必要でしょう。
  • セキュリティの問題。ブリッジとトークンラッパーは、通常、コストのかかるセキュリティバグの発生源です。

安全性

効率的で安全な実装に従った機能のみを公開すべきです。

例えば、ワーキンググループは、台帳が受取人に通知を送信することを必要とする支払いフローを検討しました。残念ながら、このフローは台帳のアップグレードの安全性を損なう可能性があるため、ワーキンググループは、利便性は低いがより安全な(少なくとも実装の観点から)フローに焦点を当てました。

実用主義

標準は、実験的または新しいプラットフォームの機能に依存してはなりません。

ワーキンググループのメンバーは、カットされなかった多くの素晴らしいアイデアを提案しました。以下は、支払い通知の例の続きです。新しいプラットフォーム機能(例えば名前付きコールバック)を追加することで、アップグレードしても安全な通知の実装を可能にします。とはいえ、1年後に完璧なものを作るより、今、良い標準を持つことの方が重要なので、通知機能は延期することにしました。

単純さ

規格は理解しやすく、実装しやすいものであるべきです。

不必要な複雑さは、ソフトウェアシステムの災いです。ワーキンググループで議論されたいくつかの機能、たとえば2段階送金インターフェースは、安全で実用的ではあるが、正しく実装するのが難しいことで有名です。これらのメカニズムが直ちに必要でないことを考慮し、我々は将来の拡張機能として高度な支払いフローを開発することに合意しました。

機能のハイライト

組み込み

ICRC-1トークン規格は、既存の台帳の実装に組み込むことが可能です。例えば、ICP 台帳 や あらゆる DIP20 互換の台帳であれば、ICRC-1を安全に組み込むことができます。このような組み込みを容易にするために、下記のいくつかの決定がなされました。

  • ICRC-1 アカウントは、台帳が内部表現を選択する際に多くの柔軟性を提供します。例えば、ICP 台帳は ICRC-1 アドレスをアカウント識別子(account identifier)に変換できます。
  • ICRC-1 インターフェースの全てのメソッドには、icrc1_ というプレフィックスが付きます。名前の衝突があっても、開発者が ICRC-1 メソッドを自分のインターフェースに追加することを止めることはないでしょう。
  • ICRC-1 インターフェースは、トランザクションログへのアクセスを指定しないことで、既存の台帳にその(互換性のない)表現を使用する自由を与えています。時には、何かを持たないことが機能になることもあるのです!

ICP の台帳技術を改善

ICP 台帳 は、Internet Computer にデプロイされているトークン台帳の中で最大のものです。安定した堅牢性を備えています。2021 年 5 月上旬のローンチ以来、重大な事故や計画外の停止は発生していません。

この規格は、ICP 台帳の開発・運用の経験を大いに活用し、その有益な特性の多くを受け継いでいます。

  • ICRC-1 では、ユーザーが複数のサブアカウントを持つことができ、透明性を高め、シンプルで安全な支払いフローを可能にします。NNS ガバナンスは、この機能のヘビーユーザーです。
  • ICRC-1 は、信頼性のないネットワーク上で安全な送金を実現するために重要なトランザクションの重複排除機能を継承・改良しています。

同時に、この規格は、より透明性の高いアカウントアドレスや拡張されたメモサイズなど、生活の質を向上させるものでもあります。

レイヤー化されたデザイン

規格の設計目標から、多くの実用的な機能を盛り込むことはできませんでした。ワーキンググループはこれらの機能の重要性を理解し、リーン生産方式の原則に従い、少量で結果を出すことにしました。ICRC-1 規格は、台帳の機能を問い合わせるために icrc1_supported_standards endpoint を提供します。

すでに説明したように、この規格ではトランザクションを取得するためのインターフェイスが規定されていません。このインターフェースがないため、多くの価値ある機能を構築できません。たとえば、トークンウォレットは過去のすべての取引を表示する移植可能な方法を持ちません。

ワーキンググループは、トランザクションログにアクセスするためのオプションの拡張を別途作成することにしました。この仕様の準備が整えば、いくつかの台帳は新しい仕様を実装し、サポートされている標準エンドポイントを通じてそれを宣伝することになるでしょう。ウォレットは拡張機能を台帳に問い合わせ、より良いユーザー体験を提供するために、利用可能になった時点で新しいインターフェースを利用できるようになります。

また、このレイヤー化されたデザインはプラットフォームの進化にも最適です。Internet Computer のプラットフォームには、たくさんのエキサイティングな機能が搭載される予定ですが、拡張メカニズムによって、DeFi のエコシステムはプラットフォームと歩調を合わせて進化していくでしょう。

拡張可能なメタデータ

多くのトークン規格は ERC-20 の例 に倣い、台帳クライアントはトークン名やシンボルなど、トークンに関する情報を問い合わせることができます。しかし、最近のアプリケーションは、良いユーザー体験を提供するために、通常、より多くの情報を要求します。トークンのアイコンを表示するのは良いことだと思いませんか?暗い色と明るい色のテーマで異なるアイコンを表示するのはどうでしょうか?あるいは、トークンの説明を示すリンクを表示するのはどうでしょうか?ワーキンググループが提案するソリューションは、メタデータへの統一されたアクセスを提供することで、アプリケーション開発者が台帳のインターフェースを変更することなく、体験できるようにします。

次のステップ

ICRC-1トークン規格は重要なマイルストーンですが、これは長い旅の始まりにすぎません。台帳・トークン化ワーキンググループは、まだまだやるべきことがたくさんあります。

  • ICRC-1 アカウントのテキスト表現に同意する必要があります。
  • Internet Computer Interface Specification に触発され、開発者が台帳の実装をテストするための受け入れテストスイートを導入したいと考えています。
  • 今後は、トランザクションログのアクセスや高度な決済フローなど、新しいタイプのアプリケーションを可能にする仕様の開発を期待しています。

ご期待ください!
____

internetcomputer.org で構築を開始し、forum.dfinity.org で開発者コミュニティに参加しましょう。

--

--