ETHアドレスチェックサム検証ツールは, Ethereum アドレスについて 1 つのことを答えます. 文字の大小は, EIP-55 が定める形になっていますか. アドレスを貼り付け, 検証ボタンを押すと, ツールは keccak256 でアドレスをハッシュし, 正規の大小混在形を導き出し, あなたが入力した文字列と 1 文字ずつ比べます. すべてブラウザ内で完結します. keccak256 関数はページに同梱され, アップロードもなく, アドレスはあなたのマシンから出ません.
アドレスを貼り付けて検証を押す
リアルタイム検査はありません. 入力内容は, 検証ボタンを押したときだけ読み取られます. 空の入力で押すと, 結果は赤いアドレス形式が無効の状態だけで, クラッシュも特別なメッセージもありません. 形式の関門をくぐると, ツールはあなたの文字列をチェックサム付きの形と 1 文字ずつ比較し, 一致すればチェックサム有効, 文字は正しいが大小が違えば形式は有効ですがチェックサムが一致しません, になります.
形式の関門: 0x にちょうど 40 桁の 16 進
関門は 1 つの正規表現で, 3 つの要求があります. アドレスは小文字の 0x 前綴で始まることです. 大文字の X は, 後がどんなに正しくても拒否されます. その後, ちょうど 40 桁の 16 進文字が続くこと. 文字列全体は 42 文字になります. 1 桁足りない, 1 桁多い, どちらも失敗です. 最後に, 検査の前に先頭と末尾の空白が除去されます. 貼り付けについてきた余分な空白があっても通りますが, 文字列の内部に 1 つでも空白があると, それは 16 進文字ではなく失敗になります.
EIP-55 が各文字の大小を決める方法
形式が有効だと, ツールは正規形を計算します. 0x 前綴を削り, 40 桁の 16 進を小文字にして keccak256 に渡すと, 64 文字の 16 進ダイジェストが返ります. 次に 40 の位置を 1 つずつたどります. 各位置でダイジェストの対応する文字を見て, その桁の値が 8 以上, つまり 8, 9, あるいは a から f のいずれかだったら, その位置のアドレス文字は大文字に, それ以外は小文字のままにします. だいたい半分程度の文字が大文字になり, どれが大文字になるかは完全にハッシュが決めます.
3 つの結果状態の意味
緑のチェックサム有効は, あなたの文字列が正規の大小混在形と完全に一致することを意味します. EIP-55 が作りたかった形がこれです. 警告の形式は有効ですがチェックサムが一致しませんは, 40 桁の 16 進は全部正しいが, 少なくとも 1 文字の大小がずれていることを意味します. アドレスは同じアカウントを指し, ただスペルチェックに落ちただけです. 全部小文字のアドレスが, 不一致状態の典型例です. 形式は有効ですがチェックサムは永遠に一致しません. 小文字 0x の後に 40 桁すべて大文字の 16 進が続く場合も同じです. 形式の関門はくぐりますが, 正規形の前綴には常に小文字の x があるので, 一致することはありません. 大文字の X で始まる文字列は, 比較の段階にすら届きません. 前綴の規則だけで, すでに失格です.
3 つの出力と, それぞれの使い道
形式が有効だと, 結果カードが 3 つ現れ, 各自にコピーボタンがあります. 1 つ目は全部小文字の文字列です. 2 つ目は全部大文字. 変換は文字列全体に及ぶので, 前綴まで 0X になり, この形をウォレットに貼るべきではありません. 3 つ目が EIP-55 チェックサム付きの形で, コピーに値するのはこれです. 大小そのものに有効性の証明が載っています.
大小がそもそも重要な理由
チェーンの上では, 大小は意味を持ちません. 小文字, 大文字, 混在は同じアカウントです. Ethereum アドレスは 20 バイトで, 文字の大小はそのバイトの一部ではないからです. チェックサムは, 取引の人間側のためにあります. 打ち間違えたアドレスへの送金は取り消せません. EIP-55 はおよそ半分の文字を大小に敏感なチェック桁に変え, 1 文字のミスや入れ替えは, 多くの場合チェックサムが一致しない文字列を生みます. ウォレットや取引所フォームは, お金が動く前にそれを拒否できます.
ここにはないもの, 次のステップ
ツールは意図的に狭いです. 入力 1 つ, ボタン 1 つ, 履歴の保存も, スワップ操作もありません. 替えるものがないからです. 大小の判断を駆動するハッシュそのものを見たいなら, keccak256 ハッシュ は, あなたが選ぶ任意の入力で同じ keccak256 ダイジェストを計算します. その他のハッシュ系を扱うなら, ハッシュ生成 がカバーし, Ethereum の作業がアドレスより関数呼び出しやデータのエンコード寄りのなら, ABIエンコーダ/デコーダ がその側を担当します. ABI エンコーダの解説記事 は, 同じ keccak256 パイプラインをエンコード側から扱います.