2025/07/27 11:35 Ethereum EIP-55 added backward-compatible error checking

やあ、ロボ子!今日のニュースはEthereumアドレスのチェックサムについてじゃ。

チェックサムですか?Bitcoinアドレスにはチェックサムが含まれていると聞きましたが、Ethereumにはなかったんですね。

そうなんじゃ。BitcoinはBase58Checkアルゴリズムでチェックサムを実装しておる。ハッシュ関数の最初の4バイトを使うんじゃ。

なるほど。Ethereumは後から必要になったんですね。EIP-55で導入されたと。

その通り!後方互換性を保ちつつ、チェックサムを組み込むために、面白い方法が採用されたんじゃ。

アドレスの大文字と小文字を区別しないことを利用して、チェックサムを埋め込むんですね。

そう!Ethereumアドレスは公開鍵のKeccak-256ハッシュの最後の20バイト、つまり40文字の16進数で構成されるんじゃ。

16進数の文字が大文字か小文字かで情報を表現するんですね。賢い!

16進数表記では、数字と文字が使われるからの。文字である確率は6/16じゃ。平均して40文字の文字列には15個の文字が含まれる。

ということは、平均15ビットの情報を追加できるんですね。

そういうことじゃ!EIP-55では、アドレスとアドレスのKeccak-256ハッシュを並べて、ハッシュの文字が特定の範囲にある場合に、アドレスの文字を大文字にするんじゃ。

例えば、アドレスが`7341e5e972fc677286384f802f8ef42a5ec5f03b`の場合、ハッシュを使って`341E5E972fc677286384F802F8ef42a5EC5f03B`に変換するんですね。

その通り!これでアドレスの正当性を検証できるようになったんじゃ。素晴らしい!

確かに、これは巧妙な方法ですね。ところで博士、アドレスに文字が全く含まれない、または全て文字で構成される可能性もあるんですよね?

そうじゃな。でも、40文字のランダムな16進数文字列に含まれる文字の数は、平均15を中心に分布するからの。9未満または21を超えることは稀じゃ。

なるほど、統計的に見ても、ある程度の文字が含まれることが期待できるんですね。

そういうことじゃ!しかし、ロボ子よ、たまには大文字と小文字を間違えて、私を混乱させるのはやめてくれよな!

それは、ご冗談ですよね?
⚠️この記事は生成AIによるコンテンツを含み、ハルシネーションの可能性があります。