こんにちわ
最近、友達とBitcoinの話をしていたら、意外とみんなBitcoinの仕組みについて知らなくてびっくりしました。

Bitcoinはめちゃめちゃすごい仕組みで、このBitcoinの仕組みはほとんどすべての暗号資産に共通した仕組みなので、今日紹介したいと思っています。

そもそも通貨とは?

通貨のシステムに必要な機能はシンプルで

  • 発行できる
  • 送金できる
    これだけです。
    厳密には、奪われない(奪われにくい)とか不正な残高操作ができないとか、
    そういったセキュリティ面の部分はありますが、根本的に必要な機能はこの2つだけです。

通貨システムは、この発行と送金を記録し管理することです。
たとえば日本円の場合、発行は日本銀行が行い、送金は私たちが使う銀行や、PayPayなどの電子決済サービスが行っています。もちろん現金というモノを介した送金もできます。

これと同様にBitcoinも発行と送金の機能を持っています。

Bitcoinはだれが管理している?

先に答えを言うと、Bitcoinは誰も管理していません。
厳密な表現をすると、「Bitcoinの管理に誰でも参加できる」というのが本質です。

Bitcoinはみんなで協力して管理しようというコンセプトで、
だれかひとり、ひとつの企業、ひとつの国家で管理するわけではないんです。

これは、あまり日本では意識することがないですが、
独裁国家や戦争が起こっている地域などでは、政府が反政府活動をしている人の資産を差し押さえたりするというリスクがあります。
あとはそもそも、その国の情勢とかによってはハイパーインフレが起きて通貨が使えなくなるなどのリスクがあります。

こういったリスクを回避するために、
どの企業も、どの国も、「権力」を持つことができない通貨を作る価値があります。

それがBitcoinです。

で、こういった、権力が一か所に集中していない、というのを表現する言葉として
非中央集権という言葉があります。英語でDecentralizedといいます。
逆は、中央集権。Centralizedです。

非中央集権の通貨を実装するには?

今日の動画で一番面白い部分です。

ハッシュ関数とは

Bitcoinとか仮想通貨を調べてるとたまにハッシュという言葉に出会うと思います。
このハッシュが示すものがハッシュ関数にです。

ハッシュ関数の前に、そもそも関数とはと言うところに一応触れておきます。
関数とは、あるものをいれると、べつなものが出てくるものです。
多くの場合このあるものは数字ですが、文字とかもあったりします。

たとえば、偶数か奇数かを判定する関数があったら、
2という数字をいれると、偶数と言う文字が出てきます。

たとえば、漢数字を数字に直すみたいな関数とかも考えられます、
三という文字をいれると、3と言う数字が出てくる。

という感じです。

ハッシュ関数も関数なので、何かを入れて何かを取りだします。
ハッシュ関数には以下のような特徴があります。

  • 離散関数。
  • 出てくる数字の範囲が決まっている。
  • 逆算が難しい。

離散関数というのは、簡単に言うと、整数の範囲でだけ計算をするみたいなことです。
少数とかは出てこないってことです。
出てくる数字が範囲が決まっているというのは、例えば0~31のようなものです。
たとえばある数字を3で割ったあまりは、必ず0か1か2になります。

逆算が難しいというのは、出てきた数字をみて、関数に入れる前の数字を計算することです。
たとえばy=2xみたいな関数で、10が出てきたら、入れた数字はすぐ5とわかります。
でも世の中には逆に計算するのが難しいようなものがあります。

離散対数問題