2021Ethereumのアドレスの英字は大小混ざっているMetamaskでアドレスをコピーすると、以下のように、アルファベットに関しては大小入り混じっています。なんで大文字と小文字のアルファベットがあるんや。money)アドレスの導出過程を考えると、アルファベットの大小を区別しているとは考えられません。調べていくうちに、Ethereum独自のチェックサムによるものだということに辿り着きました。Ethereumのチェックサムの前に、まずはBitcoinのアドレスのチェックサムについて見ていきましょう。BitcoinのアドレスのチェックサムBitcoinのアドレスの導出方法はEthereumのそれとは異なります。keyにsha-256を2回適用したものの最初の4bytesをチェックサムとして、アドレスの最後にくっつける点は特徴的です。チェックサムにより、アドレスの写し間違いなどのミスを防げます。Ethereumではどのようにチェックサムを導入しているのでしょうか。Ethereumのアドレスのチェックサム元来、Ethereumのアドレスにはチェックサムはありません。これは、「イーサリアムのアドレスは最終的にシステムの上位レイヤーによって抽象化(ネームサービスなど)されることで隠され、必要に応じて上位レイヤーにチェックサムが追加されると考えられていたことが背景に挙げられます。上位レイヤーの開発は遅く、アドレスのミスタイプ等の問題が発生したそうです。そこで提案されたのが、チェックサム付きエンコーディングEIP-55です。EIP-55ではアドレスの一部を大文字にすることで、チェックサムを提供しています。イーサリアムのアドレスは大文字と小文字の区別をしないという性質を利用して、従来の小文字のみのアドレスとの互換性を保っています。EIP-55によるエンコーディングの具体的な中身を見ていきましょう。小文字のみの従来のアドレスのKeccak-256ハッシュ値を求めます。アドレスとハッシュ値を並べて、ハッシュ値が0x8以上の場合は各アルファベットを大文字にします。実際に私のアドレスで試してみましょう。(ハッシュ値)例えば、13桁目のdに対応するハッシュ値はaなので、dは大文字になります。結果として以下が得られます。0xa276914129adBC1aF2E59d520aF1EbBd842DC676確かに私のアドレスと一致します。アドレスの入力をミスしてしまった場合は、ハッシュ値が大きく異なる値になるためEIP-55エンコーティングの結果と違うものになってしまい、ミスに気づくということです。EIP-55エンコーディングにより、99.975%の精度でエラーを検出できるようです。(なお、Bitcoinのチェックサムの精度には及びません)おわりEthereumのアドレスの謎が解けてスッキリしました。EIPは面白そうな内容ばかりなので、今後も追っていこうと思います。ご精読ありがとうございました。1-64-1会社についてホームページホームページ(英語)サービス概要ページその他お問い合わせ。