よくわかるような気がする仮想通貨

よくわかるような気がする仮想通貨

この記事は,FUN Advent Calendar 2018の12月9日記事です.

前日の記事は,明石暁くんのコード進行をコーディング with Prologでした. 講義でやった時はすごく好きだったんですけど,使わないと忘れますね,Prolog

案の定Prologおじさんに捕捉されていてちょっと笑いました(Prologおじさんから回ってきた).

この記事で書くこと

覚えていたので仮想通貨(暗号通貨)の話をふわってします. 項目はこんなかんじです.

この記事を書く人

公立箱型近未来大学の修士です. 最近,バイトで仮想通貨にふわっと関わっています.

毎年「自分がわざわざアドベントカレンダーに書くことなんかねー!!!」というスタンスでしたが,本学生でブロックチェーンや仮想通貨周りの人口は少数と見られるため,「書くことあるじゃ〜〜ん」ってなったので仮想通貨周りの概観なんかをにょわ☆にょわ☆します.

f:id:enkiseijin:20181209190819p:plain

スマートコントラクト周りは,どこぞのメカのヲタクの方が詳しいと思います.

仮想通貨とは

仮想通貨と言ったらビットコインリップルモナーなんかは聞いたことがあるんじゃないでしょうか? この投稿では,ビットコインを軸に話を進めていきます.

仮想通貨は英語では"CryptoCurrency"と表記し,直訳すると暗号通貨になります.(界隈ギークは特にこの名称を好むそうです)

日本では仮想通貨という名称がバズワード的に流行しましたが,個人的な予想として,これはビットコイン提唱者のSatoshi Nakamotoが論文中で使用したElectronic CashやElectronic coinからかな〜?と思っています.

仮想通貨は,先述したSatoshi Nakamotoという正体不明の発案者が,暗号界隈のメーリングリストに突如流した論文から誕生します. これは,2008年10月31日のことで,そこから数えると今年で誕生から10年を迎えています. 原論文は,Bitcoin: A Peer-to-Peer Electronic Cash Systemというタイトルで,日本語で読むビットコイン原論文という日本語化されたものも存在しています.

Satoshi Nakamotoは,そのあまりにも画期的なアイデアもさることながら,加味して人種・年齢・性別・個人かどうかなどが一切正体不明の人物であるということもあり,半ば神格化されている部分があります.開発者に宗教か?と問えば宗教ですよという返答もあります(これはマジ).

実際,つい最近にも宗教戦争が起きました. お前,宗教記事ばっか書く身にもなってくれよ〜〜〜〜〜〜

この画像は私のウォレット内の仮想通貨総額です. 私のウォレットには,最近めちゃくちゃ暴落したBitcoin Cashくんが入っています. (自由に名前が付けられたので天才ゲロ可愛ネームを採用しています)

仮想通貨は,その名の通り現実的な物質ではありません. では,なぜ現実に存在しないデータが二円の価値を持つのでしょう?

最近流行った原価の話題にありましたが,日本銀行券の1万円の原価は約20円だそうです. ですが,日本銀行が発行したという信用が残りの価値を担保しています. 仮想通貨は,この信用を電子的に担保することで,現実の紙幣と同等の仕組みをネットワーク上に再現することを可能にしました.

(大学生だとクレカの持ち始めと言うことで,信用が金銭的にどれだけの力を持つかは知っていると思います)

ただし,これだけではただの電子決済となんら変わりがありません. しかし,仮想通貨は信用の担保にブロックチェーンという技術を使用することで,中央銀行のような中央集権型の信用発行機関を不要にしています.

ブロックチェーン

ブロックチェーンは,その名の通りブロックの鎖で以下の手順で構成されています.

  1. 通貨のやりとり(トランザクション)を,まず一つのブロックに入れる
  2. ブロックがいっぱいになると,次のブロックが作成される
  3. 前のブロックの上に積み上がる
  4. 繰り返し

市場では,最もブロックが積み上がったチェーンが信用され,途中で突き崩すことはできません. ブロックおよびトランザクションは,専用のエクスプローラーを使用することで中身を知ることができます. (Genesisブロックの例)

偽のトランザクションを途中で挿入したい時は,それまでのブロックが積み上がったものと同じものを初めから用意し,偽のトランザクションにつながるように最長のチェーンを作ってやる必要があります. これには莫大な計算量がかかるため,その計算量をブロックチェーンの運営に"正直に"利用した方が,費用対効果の点から大変効率的な設計になっています.

これは,ブロックチェーンの維持管理に計算量を使用すると報酬を得ることができるからです. いわゆる,マイニングというものです.

マイニング

マイニング,これはちょっと前に流行りましたね. 本学周りだと狐の先輩とかがやってましたね.

ブロックチェーンはそもそもP2Pネットワークで運用されています. そのため,ネットワークを維持する沢山のノードが必要になります. マイニングは,ブロックチェーンの維持管理資源としてコンピューターの計算力(ハッシュパワー)を使用し,見返りとして報酬を得るものです.

報酬には二種類あります.

ブロックを生成した時にマイナーに支払われる報酬は,コインベーストランザクションとしてそのブロックの一番初めのトランザクションになります. コインベーストランザクションは特殊なトランザクションで,そこから市場に流通する新たなコインが発行されます.

マイニングは,ネットワークの採掘速度によって動的に難易度が調整され,一定時間でブロックが生成されるようになっています. ブロック間隔は通貨によって異なりますが,ビットコインでは10分で一ブロックが生成されます.

マイニングには,ASICやマイニングリグと呼ばれる専用の機材が出回っています. 草コイン(出始め・マイナーなコイン)では事情が変わるでしょうが,ある程度市場価値のある通貨はすでに個人でマイニングするには厳しい難易度になっています. 個人の機器でマイニングする場合は,マイニングプールに所属するのが一般的だそうです. マイニングプールでは,マイナー同士が協力してマイニングを行うためプール内の誰かがブロックを作成できた時,分割した報酬をもらうことができます.

マイニングしたことないのでマイニングプールはよくわかりません.

暗号

めんどくさかったので,ここまであまり触れませんでしたが,CryptoCurrencyというだけあって随所に暗号が使用されています.

まずトランザクションは,公開鍵暗号方式で設計され,検証には楕円曲線暗号が使用されています. そのため,ユーザーは秘密鍵と公開鍵を持っています.

秘密鍵は,1 〜 2^{256}の適当な整数です.

公開鍵は,秘密鍵楕円曲線暗号にかけて生成された値です. (本学のプロジェクトにもありますよね楕円曲線暗号するやつ)

送金などに使用されるアドレスは,平たくいうと公開鍵から生成されています. 解説はしませんが,以下の式で生成されています.

Base58(SHA256(SHA256(00+RIPEMD-160(SHA256(pubkey))))+checksum)

例えば,これはさっきのウォレットのアドレスです.

bitcoincash:qqmra4r3jf2p55ejxhtge65lj3p2kqrnpcrjhsddps

ここにBitcoinCashを送金してくれると,私が受け取れます.

ウォレット

仮想通貨は,ユーザーの鍵で管理されるウォレットに保管されています. ウォレットには以下のような形態があり,ウォレットごとに対応通貨が異なります.

  • オンラインウォレット
  • モバイルウォレット
  • クライアントウォレット
  • ハードウェアウォレット
  • コールドウォレット

上位のものほど手軽に扱うことができ,下位のものほどハッキングリスクが少ないとされています.

ハードウェアウォレットは,USBでPCなどに接続できる専用端末です. また,コールドウォレットは,石や紙など現実世界の物質にアドレスと鍵が印字されたものです.

大きな資産はコールドウォレットに入れておき,使用する分だけ利便性のよいウォレットに入れるのが良いとされています.

ハードフォーク

仮想通貨は,法定通貨とは異なり分裂します.

ブロックチェーンは,P2Pで運営されている以上ブロック追加のタイミングでチェーンのフォークが発生します. フォークしても,最長のチェーンに従うという原則があるため基本的には問題がありません.

また,通貨のプロトコルに変更があった場合にもフォークが発生します. 新旧のプロトコルで互換がある場合にはソフトフォークが,互換がない場合にはハードフォークが発生します.

後者のハードフォークが起こると,ネットワーク上のノード仕様が統一されない場合,2つのチェーンが発生します. 最長チェーンに従うという原則がある以上,いつかはハッシュパワーの高いチェーンが生き残りますが,ここでそれぞれを別のものとして扱うように変更を加えると,チェーンが分裂し新たな通貨が生まれます. ビットコインから分裂していった通貨は,アルトコイン(Alternative Coin)と呼ばれます.

たとえば,所持している通貨が分裂した場合,分裂前に持っていた通貨は通貨Aと通貨Bに分かれます. 元々が同じ2つのチェーンに残高がそれぞれ存在する形になり,平たくいうと所持している通貨量が増えます

ただし,ハードフォークがおきると市場が不安定になる場合があり,量が増えるといっても額面が増える訳ではないので注意が必要です.

わたしのウォレットに入っているBitcoin Cashくんは,ハードフォークのせいで随分とまあ無残なことに....

おわり

何を書くか決めてなかったこともあり,何を書いていいのかよくわからなくなったのでとりあえずここら辺で終わりたいと思います.

本当は,Segwitだとかブロックサイズだとかビットコイン原理主義者とか,もっと話がいっぱいあるのですが長くなるので,なんか思いついたり,要望があったら続きを書きます. あと間違いがあったら教えてください.

あと,欲しいものリストの代わりにチップ(1円)でもよろしくです.

明日は,かわいいかわいい後輩の🍤くんです.