bitcoin アドレスで使われている base58 encoding

Bitcoin ではアドレスや秘密鍵の文字列表現に base58 encoding を使います。

Base58 - Wikipedia, the free encyclopedia

base64 は良く見かけますが、base58 は bitcoin で初めて見ました。

base64a-z, A-Z, 0-9, +/ の 64文字でエンコーディングします。 base62 は base64 の文字から +/ の2文字を除いた 62文字でエンコーディングします。 base58 は base62 の文字から、0 ゼロ、O 大文字o、I 大文字i、l 小文字L の6文字を除いた 58文字でエンコーディングします。

除く理由は読みづらいから。 0Oo (ゼロ、大文字o、小文字o), Il1 (大文字i、小文字L、数字1)あたりはフォントによっては見間違えやすいです。

紙に印刷した秘密鍵を読み取るときに間違えて悲しい思いをしないように、というサトシの心遣いでしょうか。

なお、58文字の並べ方にいろいろあるらしく、「base58 で」と言っただけでは一意にエンコーディングが定まらないらしい。

  • Bitcoin アドレス: 123456789ABCDEFGHJKLMNPQRSTUVWXYZabcdefghijkmnopqrstuvwxyz
  • Ripple アドレス: rpshnaf39wBUDNEGHJKLM4PQRST7VWXYZ2bcdeCg65jkm8oFqi1tuvAxyz
  • Flickr の URL に使われているやつ: 123456789abcdefghijkmnopqrstuvwxyzABCDEFGHJKLMNPQRSTUVWXYZ

BitcoinFlickr のやつは自然にみえますが、Ripple のやつは一見おかしな感じですね。 ランダムなようにも見えますが、よく見ると JKLM PQRST VWXYZ などアルファベット順で連続した文字列も見えます。 いったいどういう順番になっているのでしょう?

Bitcoin と Ripple は暗号通貨ですが、Flickr の URL にも使われているのですねえ。 Flickr の解説 blog が 2009年4月13日にかかれており、bitcoin の論文が2008年10月31日なので、半年くらい Flickr のほうが遅いですか。 当時 bitcoin はまだまだ知名度が低かったのではないかと思いますが、Flickr の人たちは bitcoin を参考にして採用したのでしょうか?