​「Base58ってたまに見るけどよくわからない...」

「むずかしい技術なのかな...」

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

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

この記事を読めば、「Base58」について理解できるだけでなく、ビットコインアドレスなどを見る目が変わるかもしれません!

それでは、「Base58」について、わかりやすく説明していきます!

​Base58とは 

​Base58:文字列を58種類の英数字で表現するフォーマット

​Base58とは、バイナリデータ(コンピューターが扱うデータ、人間が読めないデータ)を58種類の英数字のみを用いて表現するフォーマットです。

仮想通貨では公開鍵秘密鍵アドレスなどを人間が扱える形に変換するところに使われています。

 

​「公開鍵・秘密鍵って何だろう?」「どうして鍵が2つもあるの?」このような疑問を持ったことはありませんか?この記事を読めば公開鍵・秘密鍵の基本を理解することができます。普通に考えれば、1つの錠に対して鍵は1つです。しかし、仮想通貨取引において用いられるこの2つの鍵は性質が全く異なります。鍵が2つあることは情報を保護する上で非常に重要な意味を持っています。一般の鍵のイメージは公開鍵・秘密鍵を理解する中で邪魔になるかもしれません。一旦はそのイメージを脇において読むといいと思います!目次公開鍵・秘密鍵とは​​​​秘密鍵の管理に注意!​秘密鍵の管理方法は?​まとめ​仮想通貨の公開鍵・秘密鍵とは​​​​​公開鍵​公開鍵とは一般に公開されている鍵で、後で説明する秘密鍵から作成されます。流れとしては秘密鍵→公開鍵→アドレスという感じです。しばしば公開鍵とアドレスは同じものとして扱われるのですが、違うものなので注意してください。アドレスは銀行口座で例えるなら口座番号です。例えばA君からB君に1BTC送るとしましょう。B君は1BTCを受け取る際、自分のアドレスをA君に教えればいいだけです。このトランザクションではB君の秘密鍵も公開鍵も必要ありません。現在の銀行を介した取引と仕組みは同じです。一方で、公開鍵は取引の検証のために用いるものです。つまり公開鍵でトランザクション内容が本当に正しいのかを検証することができるということです。上の例でA君の公開鍵を使えば、「A君が自分の秘密鍵を使って送金したこと」「送金額が1BTCのままであること」「B君のアドレスに送金されていること」を誰もが確認することができます。詳しくは電子署名の図で説明します。秘密鍵から公開鍵を作ることは比較的容易にできますが、公開鍵から元の秘密鍵を類推することは非常に困難です。​公開鍵から秘密鍵を作れてしまってはこの暗号方式の意味がありません。この一方向性が非常に重要で、歴史的にみると1960年代、一方向性をもつアルゴリズムが見つからなかったので、公開鍵と秘密鍵を用いた暗号方式は理論の段階にとどまっていました。しかし条件を満たすアルゴリズムが見つかったことで、現在の2つの鍵を用いた暗号方式が可能になりました。とにかく公開鍵を知られたと言って、別に自分のお金が盗まれるというわけではないので安心してください!​秘密鍵​秘密鍵は

 

Base64:58種類の英数字に加えて、記号も使用

Base64は、バイナリデータを、Base58が扱う58種類の英数字を含めた64種類の英数字と記号を用いて表現するフォーマットです。

Base64は電子メール電子掲示版などによく使われています。


Base64を理解すると、それと比較することでBase58がよりわかりやすくなるかと思います。

上の図のように、Base64は、

「数字0~9の10文字」+「大アルファベットA~Zの26文字」+「小アルファベットa~zの26文字」+「記号+と/の2文字」=「64文字」

によって表現されます。

それに対して、Base58は、Base64が扱う64文字から、

  1. 「0」(数字のゼロ)
  2. 「I」(大アルファベットi)
  3. 「O」(大アルファベットo)
  4. 「l」(小アルファベットL)
  5. 「+」(記号のプラス)
  6. 「/」(記号のスラッシュ)

の6文字を除いた、58文字を扱います。

なぜ、上記の6文字を除くのでしょうか?

​それは、人間が目視でデータを読み取って入力したり、ダブルクリック一発で文字列全てを選択して簡単にコピー&ペーストできるようにするためです。

  • 「0」(数字のゼロ)と「O」(大アルファベットo)
  • 「I」(大アルファベットi)と「l」(小アルファベットL)

は見分けにくいですよね?

もし、人間が読み取りミス・入力ミスをしてしまったら大変なことになってしまいます。

Base58では、識別が難しい文字が除かれているということです。

Base58Check:ビットコインアドレスの入力ミスを検出

​仮想通貨はユーザーがアドレスを目で読み取り、手打ちする機会が多いです。

その際に、見間違えや入力ミスが生じる可能性があります。

Base58Checkは打ち間違えられたアドレスなど、無効なアドレス検出してくれるエンコード(符号化)方式です。

Base58Checkでエンコードされたアドレスは末尾に「チェックサム」というアドレスの正誤を判断する文字列があります。


Base58の実装方法

​​では、どのようにしてBase58を実装していくのかを簡単に説明します。

実装するにはJava等のプログラミング言語を扱う必要があるのですが、ここではコードを用いた説明は省略します。

処理手順はとてもシンプルで、エンコード(符号化)実装は4ステップ、デコード(復元)実装は3ステップです。

10進数16進数を用います。

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

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

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

となります。

デコード実装3ステップ

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

以下のような3ステップです。

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

となります。


以上、エンコード処理手順とデコード処理手順を非常に簡潔に説明しました。

「Base58を実装するためには、10進数と16進数が使われている」ということさえ覚えておけば十分かと思います。


Base58の使用例3つ 

​ここでは、Base58が用いられている例を3つ紹介します。

代表的なのは、

  • ビットコイン(bitcoin)のアドレス
  • リップル(ripple)のアドレス
  • Flickerの短縮URL

です。​​

ビットコイン(bitcoin)アドレス ​

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

「1か3」から始まる34文字の英数字でできていて、公開鍵をハッシュ関数という関数にかけることで生成できます。

ビットコインのアドレスは厳密にはBase58ではなく、Base58Checkから生成されます。

先ほども紹介した通り、その文字列の順番は以下のようになっています。

​123456789ABCDEFGHJKLMNPQRSTUVWXYZabcdefghijkmnopqrstuvwxyz


ビットコインアドレスとは ビットコインアドレスとは​ビットコインの口座番号のようなものです。ビットコインアドレスは1か3から始まる34文字の英数字でできていて、公開鍵をハッシュ関数という関数にかけることで生成できます。 秘密鍵と公開鍵とビットコインアドレスの違い 秘密鍵は、自分で決めた整数の羅列です。1~2^256までの数​ならなんでもいいので、5とかでもいいです。(これだと簡単に人に知られてしまいますが)秘密鍵を知られてしまうと、資産が全て取られてしまうので、絶対に人に知られてはいけません。なので、人の意思が関与しないようにして誰にも推測できないようにしなければいけません。 そのために、まず乱数生成器によって秘密鍵を作ります。 そして秘密鍵を作ったら次にこの秘密鍵を用いて公開鍵を作ります。公開鍵は秘密鍵をハッシュ関数にかけて作ります。ハッシュ関数とは一方向の関数で、秘密鍵が分かれば公開鍵は求められるが逆は求められない関数です。 次に、求めた公開鍵を使ってビットコインアドレスを作ります。公開鍵をハッシュ関数にかけたものに、base58checkエンコーディングをして、ヘッドに1か3の文字をつけて、ビットコインアドレスが出来ます。base58checkエンコーディング​とは、ハッシュ値を見やすいように58文字の英数字で表したものです。(58文字とは数字10種、大文字小文字26×2種からl(エル)、I(アイ)O(オー)0(ゼロ)を除いたものです。) ヘッドが1か3の文字をつけるのに、3はマルチシグのアドレスを使っていることを表します。マルチシグとは、そのアドレスからのトランザクションを​、複数の署名がないと送れないようにする技術です。​ ​ マルチシグについて詳しくはこちらの記事を読んで下さい! マルチシグとは?セキュリティが超向上する裏技!使い方・メリットを教えます!セキュリティ対策をするうえで知っておかなければならないマルチシグについて!秘密鍵がハッキングされても、秘密鍵をなくしても大丈夫ってどういうこと!?ネットショッピングやマイクロペイメントにまで影響を与える新技術を解説します。続きを読む ビットコインアドレスの生成・確認方法 coincheck(コインチェック)

 

リップル(ripple)アドレス

​​リップルアドレスとは、リップルの「口座番号」のようなものです。

「r」から始まる32桁の英数字で構成される文字列です。

こちらは、ビットコインの場合とは異なり、英数字が以下のように不規則な順番で並んでいます。

​rpshnaf39wBUDNEGHJKLM4PQRST7VWXYZ2bcdeCg65jkm8oFqi1tuvAxyz​


リップルって聞いたことはあるけどいまいちどういう仮想通貨なのかわからないままでいませんか?そんなあなたは得するチャンスを逃しているかも⁉︎この記事を読めば意外と知られていないリップルの詳しい仕組みだけでなく、あまり書かれることのないデメリットまでわかり、読み終わる頃にはきっとリップルについて知らないことはなくなっています!リップルが大好きな現役東大生がリサーチにリサーチを重ね、図とともにわかりやすく解説しているのでスルスルと知識を身につけることができます!もうにわかとは言わせません!リップルオタクになって自信をもってリップルで「億り人(=仮想通貨のトレードで資産が1億円以上になった人)」を目指しましょう!リップル(XRP)ってなに?新しい送金・決済システムの名称!多くの巨大企業が注目していて、将来性バツグン!このサービスで扱われる通貨の名称でもある!決済速度が極めて速く、手数料も安い!ブロックチェーンを使わない珍しいタイプの仮想通貨!リップラーと呼ばれるリップル大好きな仲間もいっぱい!コインオタクでは30人の東大生トレーダーと利率25%超えのAIによるリップルの価格予想を会員様限定に毎日公開しています。またリップルの価格変動があった際にアラートを配信するサービスも提供しています。初心者では判断しにくい仮想通貨投資は東大生とAIの力を借りて勝ち切りましょう!いまなら初月無料! CoinOtakuプレミアムを1ヶ月無料トライアル!目次仮想通貨リップル(XRP)とは?時価総額3位の超大型コイン!RTXPとは?RTXP① ILP(インターレジャープロトコル)の仕組みRTXP② XRP Ledgerの仕組み実は仮想通貨ではない⁉︎XRPの仕組み XRPの役割は?XRPを使ってできることRippleNetの仕組み リップルのメリットリップルのデメリット リップル(XRP)チャート分析!ニュースが価格に与えた影響は? 今後のイベントは?XRPの今後の価格推移を予想!仲間もいっぱい!熱狂的なリップラーのみなさん 【リップルの購入方法】おすすめ取引所・販売所3選 【リップルの保管方法】おすすめウォレット3選 

 

Flickerの短縮URL

​Flicker(フリッカー)とは、写真の共有を目的としたコミュニティサイトです。

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

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

​123456789abcdefghijkmnopqrstuvwxyzABCDEFGHJKLMNPQRSTUVWXYZ​


以上、Base58が使われているサービスを3つ紹介しました。

使われている58種類の英数字は同じですが、サービスによって順番が異なりますね

​アプリケーション​対応文字
​ビットコインアドレス​123456789ABCDEFGHJKLMNPQRSTUVWXYZabcdefghijkmnopqrstuvwxyz​
​リップルアドレス​rpshnaf39wBUDNEGHJKLM4PQRST7VWXYZ2bcdeCg65jkm8oFqi1tuvAxyz​​
​Flickerの短縮URL​​123456789abcdefghijkmnopqrstuvwxyzABCDEFGHJKLMNPQRSTUVWXYZ​​


まとめ

いかがでしたでしょうか?

Base58とはバイナリデータを58種類の英数字のみを用いて表現するフォーマットです。

言い換えれば、長く複雑なデータを人間が扱いやすい形で表現できるフォーマットとも言えます!

Base58は様々なアプリケーションで使われていくでしょう!