Base58とは<初心者向け記事>

初心者ファイル
Pocket

暗号資産初心者向けの記事です。本記事ではBase58についてわかりやすく解説していきます。

はじめに

みなさんはBase58について知っていますか?

ビットコインの秘密鍵や公開鍵を作成する仕組みについて学んだことのある方であれば、1度は見たことのある言葉かと思います。

「Base58ってたまに見るけどよくわからない…」「むずかしい技術なのかな…」

そのように思っている方も多いのではないでしょうか?

それでは早速、解説していきます!

Base58とは?

Base58はバイナリデータを文字列として扱えるようにするエンコード方式を指します。

Base64はWEBでも知られていますが、それと同様にバイナリデータを58種類の文字で表現するのがこのBase58となっています。Base58はビットコインなどの暗号資産のアドレスを作成するときに使われるエンコード方式であるものの、アドレスの打ち間違いを検知する機能も搭載されているため、暗号資産を構成するシステムのいろいろな場所で使用されています。

Base58とBase64の違い

かつて電子メールなどで用いられていたプロトコルでは7ビットのみ送信可能となっていました。そのためメールなどで画像や音声などのデータをやり取りする場合は、英文字のみ対応のSMTPでは送受信が不可能とされてきたのです。

この問題を解決するために作られたのがBase64という変換方法です。Base58はBase64からの派生で、扱う文字数が違うだけでなく、ヒューマンエラーを減らすために開発されたフォーマットとなっています。つまりBase58は、Base64では変換可能となる大きいバイナリデータをエンコードすることには向いていないフォーマットであると言えます。

実装方法

次にどのようにしてBase58を実装していくのか簡単に説明します。実装方法は以下の2つです。

  • エンコード実装4ステップ
  • デコード実装3ステップ

それでは解説していきます。

エンコード実装4ステップ

​Base58のエンコード処理手順は次の4ステップです。

  1. バイナリデータを16進数に変換する
  2. 16進数を10進数に変換する
  3. 10進数を58種類の文字列に変換する
  4. 文字列を逆順にする​

デコード実装3ステップ

​次に、Base58のデコード処理手順を説明します。

この方法は3ステップとなっています。

  1. ​エンコード文字列を10進数に戻す
  2. 10進数を16進数に変換する
  3. 16進数をバイナリデータに戻す

Base58の使用例

それでは最後にBase58が用いられている例を3つ紹介していきます。

  • ビットコインアドレス
  • リップルアドレス
  • Flickrの短縮URL

それでは1つずつ説明していきます!

ビットコイン

​ビットコインアドレスとは、ビットコインの口座番号のようなものです。

「1か3」から始まる34文字の英数字でできていて、公開鍵をハッシュ関数という関数にかけることで生成できます。ビットコインのアドレスは厳密にはBase58ではなく、Base58Checkから生成されます。

リップル

​​リップルアドレスもビットコイン同様、リップルの口座番号のようなものとなっています。

「r」から始まる32桁の英数字で構成される文字列です。こちらは、ビットコインの場合とは異なり、英数字が以下のように不規則に並んでいます。

Flickrの短縮URL

そして最後は​Flickrです。Flickrとは写真の共有を目的としたコミュニティサイトです。

画像の短縮URLを表示するためにフォーマットとしてBase58が使用されています。

文字列はビットコインのものと似ていますが、Flickrのものは小文字のアルファベットが大文字のアルファベットよりも先に並んでいます。

最後に

本記事ではBase58について解説してきました。

上記でもご紹介した通り、Base58とはバイナリデータを58種類の英数字のみを用いて表現するフォーマットです。言い換えれば、長く複雑なデータを人間が扱いやすい形で表現できるフォーマットとも言えます!

Base58は様々なアプリケーションで使われていくでしょう。暗号資産分野は現在、様々な情報が更新されている最中です。そのため情報に取り残されないように勉強を重ねていきましょう!