はじめに
初めまして。
CryptoGamesというブロックチェーンゲーム企業でエンジニアをしている cardene(かるでね) です!
スマートコントラクトを書いたり、フロントエンド・バックエンド・インフラと幅広く触れています。
代表的なゲームはクリプトスペルズというブロックチェーンゲームです。
今回は、各チェーンで使用されているアドレスに、人が読みやすいようにチェーン識別子を追加する仕組みを提案しているERC3770についてまとめていきます!
以下にまとめられているものを翻訳・要約・補足しながらまとめていきます。
他にも様々なEIPについてまとめています。
概要
この規格では、ウォレットやDappsがチェーン固有のアドレスを表示するためのアドレス標準を提案しています。
各チェーン固有のプレフィックスをアドレスの前につけることで、異なるブロックチェーン上のアドレスを簡単に識別できるようにしています。
動機
EVMを使用しているEthereum以外のチェーンの増加に伴いこの規格の必要性が出てきました。
異なるチェーン上で同じアドレスが同じように使用されているとは限りません。
例えば、チェーンXではEOAアドレスだけど、チェーンYではコントラクトアドレスなどの場合です。
これにより、送金ミスによりデプロイされていないコントラクトアドレスに資金を送ってしまい、ゴックスしてしまう可能性があります。
この規格では、各アドレスにユニークなプレフィックスを付与し、アカウントがどのチェーンに存在しているかを示すことを提案しています。
EIP155で定義されているchainId
を使用することも考えられますが、「人間に読みやすくない」、「より直感的で理解しやすい形式のプレフィックスの提供」という観点から別の仕組みを提案しています。
EIP155については以下の記事を参考にしてください。
仕様
人が読みやすいようにアドレスを拡張する仕組みを提案しています。
チェーン固有のアドレスはチェーンの短い名前で始まり、「:」で区切られた形式になります。
Chain-specific address = “shortName” “:” “address”
-
shortName
=STRING
-
address
=STRING
shortName
このフィールドは必須であり、有効なチェーンの短縮名である必要があります。
以下のリポジトリから取得できます。
address
このフィールドも必須であり、ERC55五巻の16進数のアドレスである必要があります。
ERC55については以下の記事を参考にしてください。
例
補足
マルチチェーンアドレスを使用する時、より識別子やすくするためにchainId
ではなくチェ0んの短縮名を使用しています。
互換性
チェーン識別子のないEthereumアドレスの場合、どのチェーンに属するアドレスかを判別するための追加の情報が必要になります。
この問題を解決する方法をこの規格では提案していますが、既存のアドレス形式も引き続きサポートされます。
セキュリティ
チェーンの短縮名のリストについて、似たような短縮名が存在しないように注意をする必要があります。
似たような名前だと間違って認識されてしまう可能性があります。
引用
最後に
今回は「各チェーンで使用されているアドレスに、人が読みやすいようにチェーン識別子を追加する仕組みを提案しているERC3770」についてまとめてきました!
いかがだったでしょうか?
質問などがある方は以下のTwitterのDMなどからお気軽に質問してください!
他の媒体でも情報発信しているのでぜひ他も見ていってください!