Base58

提供: tezos-wiki
移動先: 案内検索

Base58は、データを58種類の印字可能な英数字のみを用いて、 それ以外の文字を扱うことの出来ない通信環境にてマルチバイト文字や バイナリデータを扱うためのエンコード方式である。Base64に似ているが 英数字以外の文字や印刷した場合に違いのわかりにくい文字を排するような 変更がなされている。これは生身の人間であるユーザーが手動でデータを入力したり 視覚的な情報源から目でコピーすることを想定しているほか、ダブルクリック一発で 文字列すべてを選択し楽にコピー&ペーストができるように設計されているためである。 Base58ではBase64から数字の0と大文字のO、大文字のIと小文字のlの英数字といった 区別しづらい文字や、英数字以外の特殊文字である+(プラス)/(スラッシュ)を取り除いた 文字セットで表現される。 Base58はエンコード時のデータの分割単位が58と2の冪の数ではないため Base64のように元データをビット毎に分割することができない。 このため大きいバイナリデータをエンコードすることは不得手であり 専ら大きな整数をエンコードするのに用いられる。 後述の例のように文字セットの 並び順の正しい規定が存在せず個別の実装に依存しており、同じ"Base58"という 名前でも複数のフォーマットが存在する。派生フォーマットとして文字セットか ら更に数字の1と小文字のoの2文字を取り除いたBase56というものも存在する。 Base58Checkは最初と最後の数文字でそれぞれデータ種別とエラー検出符号を付加す るBase58エンコードフォーマットであり、ビットコインのアドレスはこの形式をとっている。