この記事は、Interchain Foundationによる記事、Moving Beyond Simple Token Transfersの翻訳記事です。
Interchain Foundationの許可を得て作成、公開しています。
単純FT転送のその先へ
2021年3月、IBCは、Cosmosに構築された単一のアプリケーション、FTの転送機能(ICS-20)として始まりました。
その数ヵ月後、Cosmos HubとOsmosisが、IBCのマーケティング活動をリードし、その存在を広めました。トークン転送はあらゆるブロックチェーンの相互運用性において重要なポイントとなってきましたが、私たちはこれをさらに一歩進めるための努力をしています。インターチェーンコンポーザビリティ(※1)は、チェーン間だけでなく、チェーン上のモジュール間でもトークンがシームレスに転送される未来を想定しています。
現在、ユーザーはあるチェーンから別のチェーンにトークンを送ることができますが、近い将来、そのトークンを送信先のチェーンでどうするかまで指定して送信することができるようになります。
これは、トークン転送パケットにメモフィールドを追加することで実現されます。
インターチェーンコンポーザビリティとは、Cosmosにおける相互運用性のこと。CosmosはIBCやInterchain Account等の機能をモジュール化して、チェーンによって搭載非搭載を選べるようにし、相互運用しやすくすることを目指している。
メモフィールドとは何か?(技術者向け説明)
直近のICS-20の改善により、構造体: FungibleTokenPacketData
に memo
フィールドが追加されました。
ICSはInterChain Standard(チェーン間標準)の略であり、EthereumにおけるERCのような技術規格です。
memo
フィールドは、今回のICS-20のアップデートによって新たに追加されたFungibleTokenPacketData構造体の新たなメンバー変数 (構造体の要素)です。これが追加されたことによって、後述しますが複数トランザクションを1度の署名に圧縮できるかもしれません。
// NewFungibleTokenPacketData contructs a new FungibleTokenPacketData instance
func NewFungibleTokenPacketData(
denom string, amount string,
sender, receiver string,
memo string,
) FungibleTokenPacketData {
return FungibleTokenPacketData{
Denom: denom,
Amount: amount,
Sender: sender,
Receiver: receiver,
Memo: memo,
}
}
これにより、トークンの転送に伴って任意のデータを文字列として渡すことができるようになりました。例えば、ユーザーアクションやコールデータ、小数点以下の桁数、デノミネーション、ティッカーシンボルなどの情報をメモフィールド内に入れ込めるようになりました。
なお、メモフィールドのメタデータはICS-20自体では使用されず、ミドルウェアやカスタムCosmWasmコントラクトが転送プロトコルを解析しメタデータをwrapして、それを元にカスタムロジックを実行することができます。
メモフィールドはibc-go v6.0.0リリースに含まれ、これはAPIの大きな変更を伴います。
v6.0.0 では、 NewFungibleTokenPacketData
の引数に memo
フィールドを指定することができます[参考]。
バージョン v2.5, v3.4, v4.2, v5.1 では、NewFungibleTokenPacketData
を初期化した後にmemo
フィールドに直接値を代入すれば、API を破壊しない方法でmemo
フィールドを使用できます[参考]。
受信側のチェーンのibc-goがv6.0.0, v2.5, v3.4, v4.2, v5.1以外のバージョンの場合、メモフィールドが空ではないIBCパケットを送信すると宛先でのパケットアンマーシャリングに失敗します。(つまり送信が失敗します)
ユーザーから見てどうなるのか
現在、ユーザーがCosmos HubからOsmosisにATOMを送信し、その後プールに流動性を追加したい場合(またはスワップ/ステーク/担保としてのトークンなど他のアクションを実行したい場合)、ユーザーは2つの異なるトランザクション(一つはOsmosisにATOMを送信するtx、もう一つは流動性を追加するためのtx)に署名し承認しなければなりません。
もし、「ユーザーがトークンを送信し送信先でトークンをどうするか」を1アクションで指定できれば、UXはかなり改善されるはずです。
新しく導入されたメモフィールドは、これを可能にするためのインフラとなります。
ユーザーはこれから、トークンを送信しながらプログラム的な何らかのアクション(スワップ、デポジット、流動性の提供など)を行うことができるようになり、複数のトランザクションを1つに効果的にまとめることができるようになるでしょう。
また、メモフィールドはパケット転送ミドルウェアにも利益をもたらします。現在の設計では、ミドルウェアはパケット構造体からデータ(受信者アドレス)を読み書きし、仲介者から最終宛先までパケットをルーティングしていましたが、最終的な宛先アドレスもメモフィールドで指定できるため、この次善策はもう必要ありません。
その他のICS-20の改善点
転送パケット構造体にメタデータフィールドが追加された以外に、ICS-20では以下のような改善が行われました。
MsgTransferResponse
のときにパケットシーケンスを返すように、デベロッパーのUXが向上。(https://github.com/cosmos/ibc-go/issues/1969)SendTransfer
メソッドをプライベートに変更。(https://github.com/cosmos/ibc-go/issues/1918)
まとめ
流動性と任意のデータをワンアクションで渡すことができるメモフィールドの追加により、ユーザーのクロスチェーンでの取引や資産管理の方法が大きく変わることになります。
クロスチェーンにおけるコンポーザビリティは、常にIBC 開発の中核となる考え方でした。
メタデータのプロトコル内転送の採用により、より多くのチェーン間で、より高度な連携が可能になる日が近いと思われます。
上記のトピックについて質問/フィードバック/批評がある場合、またはICS-20の改善について提案がある場合は、こちらに連絡することをお勧めします。
メモフィールドの実装に貢献したOsmosisのチームに感謝と称賛を。
著者について:
Aditya Ravi Raj は Interchain GmbH で働き、Inter-Blockchain Protocol (IBC) チームのプロトコルアナリストを務めています。
フィードバックとレビューをいただいたSusannah Evans氏とCarlos Rodriguez氏に感謝を。