Base58 Feature
Pocket

Base58の概要

Base58とはバイナリデータを58種類の文字列で表現するフォーマットです。
ビットコインなどのブロックチェーンではアドレスや秘密鍵の文字列の表現にこのBase58というフォーマットを用いています。

「Base58」は聞いたことがないが、「Base64」であれば聞いたことがあるという人もいると思います。それは、Base64が電子メールや電子掲示板などにおいて、よく使われているフォーマットだからです。例えば電子メールにおいては、送信プロトコルであるSMTPなどの制約により、7ビットで表現されるデータしか送ることが出来ません。そこで、Base64という0から63までの64個の数値を「a-z、A-Z、0-9、 +、/ 」の 64種類の文字で表現できるフォーマットが使われています。特に、画像や音声といった添付ファイルなどのデータを送信する際にBase64が標準的に利用されています。Base58はBase64からの派生で、Base64では64種類の文字で表現されることに対し、58種類の文字で表現するフォーマットです。

Base58のフォーマットでは、Base64で使わていてる文字から「 +、/、0(数字)、O(oの大文字)、I(iの大文字)、l(Lの小文字)」の6文字を除いた58文字が使われています。これらの文字を除く理由は、似ていてまぎらわしく、書き写す際に間違えやすいからです。実際に、「0Oo」、「 Il1」を見分けるのに苦労していた経験がある人も多いと思います。

従って、Base58において使用可能な文字は
「123456789ABCDEFGHJKLMNPQRSTUVWXYZabcdefghijkmnopqrstuvwxyz」
の58文字となります。

ブロックチェーンでは、秘密鍵やアドレスなど間違えてしまうと取り返しのつかないことになるデータを扱うため、このような文字列を排除する工夫をしています。

Base58とBasa64の比較

 

Base58が使われているサービス

Base58の実際に使用されてているサービスの例としては、以下のものが挙げられます。

  • ビットコインのアドレス
  • Rippleのアドレス
  • Flickerの短縮URL

これら3つの応用例において使われている58文字は以下のようになります。

base58の利用例

このように、使用される58種類の文字は同じものですが、サービスによって並び順が違っています。この表では、サービスによって実際に割り当てられている順番が違っていることを表しています。このように、「Base58で」と言っても、一意の変換テーブルにはなっていないので気をつけなくてはなりません。

ビットコインやRippleは台帳技術なので、Base58はアドレスや鍵の表示に使用されますが、Flickerでは、画像の短縮URLを表示するためのエンコーディング形式としてBase58が使用されます。このように、長く複雑な文字列を分かりやすい形で表現できることから、Base58は様々なアプリケーションで利用されています。

ブロックチェーンでは、高度なセキュリティを担保しつつ、使いやすさも重視した仕様になっていることが理解できたかと思います。今後、仮想通貨のアドレスや鍵を目にするときに、Base58という工夫されたフォーマットが使われていることに注目して見てみると、またブロックチェーンが面白くなるかもしれません。ぜひ、注目してみてください。

Pocket

Aram Mine

Gaiax技術マネージャ。研究開発チーム「さきがけ」リーダー。新たな事業のシーズ探しを牽引。2015年11月『イーサリアム(Ethereum)』 デベロッパーカンファレンス in ロンドンに参加しブロックチェーンの持つ可能性に魅入られる。以降ブロックチェーン分野について集中的に取り組む。

Search