# [ERC3770] どのチェーンか判別しやすいようにチェーンの短縮名をアドレスにつける仕組みを理解しよう！

> この規格では、ウォレットやDappsがチェーン固有のアドレスを表示するためのアドレス標準を提案しています。各チェーン固有のプレフィックスをアドレスの前につけることで、異なるブロックチェーン上のアドレスを簡単に識別できるようにしています。

- URL: https://cardene.dev/articles/de8ce92b89ee722b37aa
- 公開日: 2024-06-25
- 更新日: 2024-06-25
- トピック: Blockchain
- タグ: ethereum, solidity, smartcontract, ブロックチェーン

## はじめに

初めまして。
**CryptoGames**というブロックチェーンゲーム企業でエンジニアをしている **cardene（かるでね）** です！
スマートコントラクトを書いたり、フロントエンド・バックエンド・インフラと幅広く触れています。

https://cryptogames.co.jp/

代表的なゲームは**クリプトスペルズ**というブロックチェーンゲームです。

https://cryptospells.jp/

今回は、各チェーンで使用されているアドレスに、人が読みやすいようにチェーン識別子を追加する仕組みを提案している**ERC3770**についてまとめていきます！

:::message
以下にまとめられているものを翻訳・要約・補足しながらまとめていきます。
:::

https://eips.ethereum.org/EIPS/eip-3770

他にも様々なEIPについてまとめています。

https://cardene.notion.site/ERC-EIP-2a03fa3ea33d43baa9ed82288f98d4a9?pvs=4

## 概要

この規格では、ウォレットやDappsがチェーン固有のアドレスを表示するためのアドレス標準を提案しています。
各チェーン固有のプレフィックスをアドレスの前につけることで、異なるブロックチェーン上のアドレスを簡単に識別できるようにしています。

## 動機

EVMを使用しているEthereum以外のチェーンの増加に伴いこの規格の必要性が出てきました。
異なるチェーン上で同じアドレスが同じように使用されているとは限りません。
例えば、チェーンXではEOAアドレスだけど、チェーンYではコントラクトアドレスなどの場合です。

これにより、送金ミスによりデプロイされていないコントラクトアドレスに資金を送ってしまい、ゴックスしてしまう可能性があります。
この規格では、各アドレスにユニークなプレフィックスを付与し、アカウントがどのチェーンに存在しているかを示すことを提案しています。
**EIP155**で定義されている`chainId`を使用することも考えられますが、「**人間に読みやすくない**」、「**より直感的で理解しやすい形式のプレフィックスの提供**」という観点から別の仕組みを提案しています。

:::message
**EIP155**については以下の記事を参考にしてください。
:::

[\[EIP155\] Ethereumネットワークでリプレイ攻撃を防ぐ仕組みを理解しよう！](/articles/2526432899353e4a0225)

## 仕様

人が読みやすいようにアドレスを拡張する仕組みを提案しています。
チェーン固有のアドレスはチェーンの短い名前で始まり、「:」で区切られた形式になります。

```
Chain-specific address = “shortName” “:” “address”
```

- `shortName` = `STRING`
- `address` = `STRING`

#### `shortName`

このフィールドは必須であり、有効なチェーンの短縮名である必要があります。
以下のリポジトリから取得できます。

https://github.com/ethereum-lists/chains

#### `address`

このフィールドも必須であり、**ERC55**五巻の16進数のアドレスである必要があります。

:::message
**ERC55**については以下の記事を参考にしてください。
:::

[\[EIP55\] Ethereumアドレスのチェックサムの仕組みを理解しよう！](/articles/985f03760df12929b5f9)

### 例

![examples.png](/images/qiita-e8d11780-0f84-064a-e9f1-111cc131b2f6.webp)

## 補足

マルチチェーンアドレスを使用する時、より識別子やすくするために`chainId`ではなくチェ０んの短縮名を使用しています。

## 互換性

チェーン識別子のないEthereumアドレスの場合、どのチェーンに属するアドレスかを判別するための追加の情報が必要になります。
この問題を解決する方法をこの規格では提案していますが、既存のアドレス形式も引き続きサポートされます。

## セキュリティ

チェーンの短縮名のリストについて、似たような短縮名が存在しないように注意をする必要があります。
似たような名前だと間違って認識されてしまう可能性があります。

## 引用

https://eips.ethereum.org/EIPS/eip-3770

## 最後に

今回は「各チェーンで使用されているアドレスに、人が読みやすいようにチェーン識別子を追加する仕組みを提案している**ERC3770**」についてまとめてきました！
いかがだったでしょうか？

質問などがある方は以下のTwitterのDMなどからお気軽に質問してください！

[Twitter @cardene777](https://twitter.com/cardene777)

他の媒体でも情報発信しているのでぜひ他も見ていってください！

https://chaldene.net/

https://zenn.dev/heku

https://cardene.substack.com/

https://mirror.xyz/0xcE77b9fCd390847627c84359fC1Bc02fC78f0e58

https://cardene.notion.site/ERC-EIP-2a03fa3ea33d43baa9ed82288f98d4a9?pvs=4
