TRON アドレス形式:なぜ T で始まる 34 文字なのか
TRON(TRX)アドレスが秘密鍵からどう作られるか、なぜ T で始まるのか、base58 で使える文字、hex の 41… 形式、アドレスの検証方法を解説します。
TRON メインネットのアドレスは TMVQGm1qAQYVdetCeGRRkTWYYrLXuHK2HC のような形です。34 文字で、必ず T で始まり、58 種類の文字を使います。各部分がどこから来るのかを見ていきましょう。
秘密鍵から TRON アドレスへ
- 秘密鍵 — 256 ビットのランダムな数値。ふつう 64 文字の hex で表されます。
- 公開鍵 — secp256k1 楕円曲線(Bitcoin や Ethereum と同じ曲線)上で秘密鍵から計算します。非圧縮形式は接頭辞
04の後の 64 バイトです。 - 公開鍵の Keccak-256 ハッシュ — 32 バイト。最後の 20 バイトがアカウント識別子です(Ethereum アドレスと同じ)。
- バージョンバイト — TRON は先頭に
0x41を付け、21 バイトにします。hex で書くと、API で見かける41…形式です。 - Base58check — 4 バイトのチェックサム(二重 SHA-256)を付け、25 バイトを base58 でエンコードすると
T…の文字列になります。
手順 4 のため、メインネットのアドレスはすべて T で始まり、2 文字目は大文字の A〜Z です(9 は T9y…/T9z… の形だけ)。
使える文字
base58 は数字とアルファベットを使いますが、紛らわしい 4 文字を除いています。
| 除外 | 理由 |
|---|---|
0(ゼロ) | O に似ている |
O(大文字のオー) | 0 に似ている |
I(大文字のアイ) | l に似ている |
l(小文字のエル) | I に似ている |
そのため、バニティアドレスは …Tron や …Money にはできても、…TRON や …MONEY にはできません。大文字の O が存在しないからです。アドレスは大文字と小文字を区別し、…USDT と …usdt は別のアドレスです。
Base58 と hex:同じアドレスの 2 つの表し方
| 形式 | 例 | 見かける場所 |
|---|---|---|
| Base58 | TMVQGm1qAQYVdetCeGRRkTWYYrLXuHK2HC | ウォレット、エクスプローラー、取引所 |
| Hex | 417e5f4552091a69125d5dfcb7b8c2659029395bdf | ノード API、スマートコントラクト |
どちらも同じアカウントを表し、ツールで自由に変換できます。接頭辞 41 を除いた 20 バイトは、同じ鍵の Ethereum 形式アドレスそのものです。
TRON アドレスの検証方法
- 34 文字で、
Tで始まり、base58 の文字だけを含むこと。 - チェックサムが一致すること。base58 をデコードして最後の 4 バイトを取り出し、SHA-256(SHA-256(先頭 21 バイト)) の先頭 4 バイトと比べます。多くのウォレットは自動で行い、打ち間違いをはじきます。
- デコードした最初のバイトが
0x41であること。
チェックサムは打ち間違いを防ぎますが、詐欺は防げません。攻撃者のそっくりアドレスも完全に有効だからです。必ずアドレス全体を比べましょう。アドレスポイズニングをご覧ください。
バニティアドレスにとっての意味
Tの直後のパターンはA〜Zで始める必要があります(9はT9y…/T9z…の形だけ)。T8888…やT9999…は不可能、TTTTT…は可能です。- 単語では
0、O、I、lを避ける必要があります。 - 一致する文字 1 つごとに 58 分の 1 の確率なので、希少性は急速に高まります。TRON バニティアドレスとはをご覧ください。
よくある質問
TRON アドレスは何文字?
base58 形式で 34 文字、hex 形式では 42 文字(21 バイト)です。
TRON アドレスが T で始まるのはなぜ?
TRON は base58 エンコードの前にバージョンバイト 0x41 を付けます。0x41 で始まる 21 バイトの値は、すべて T で始まる文字列にエンコードされます。
TRON アドレスは Ethereum アドレスと同じ?
元になる 20 バイトは同じ鍵から同じ方法で計算されますが、エンコードが違います。Ethereum は 0x + hex、TRON は 41 + base58check です。バイトが同じだからといって、ネットワークをまたいで送金してはいけません。
TRON アドレスは大文字と小文字を区別する?
はい。base58 は大文字と小文字を区別し、どれか 1 文字の大小を変えると別の(たいていは無効な)アドレスになります。