こんにちは、GMOアドマーケティングの開発本部のS.Rです。
皆さん、仮想通貨ビットコインをご存知ですか?
2016年から、ビットコインをUSドルに換金すると価格が10倍以上になるほどビットコインの価値が大きくなりました。
今後ビットコインは世界の経済に大きな影響を与えるでしょう。
そこで、今回はビットコインの基本知識を皆さんへ説明いたします。
1.通貨の歴史と概念
ビットコインを理解するためには、まずは通貨の歴史と概念を理解する必要があります。
まずはじめに、通貨に関する三つの概念を皆さんへ説明いたします。
1.1 通貨
通貨の定義は以下のWikipediaの記事を参考にして下さい。
”通貨(つうか、英: currency)とは、流通貨幣の略称で、国家もしくは、その地の統治主体によって価値が保証された、決済のための価値交換媒体。 政府は租税の算定にあたって通貨を利用する(法定通貨⇔仮想通貨、地域通貨)。”
引用元 : 通貨、2017年09月23日 、ウィキペディア日本語版、https://ja.wikipedia.org/wiki/%E9%80%9A%E8%B2%A8
なぜ通貨が必要なのか、通貨が存在している理由は何なのか、皆さんは考えたことがありますか?
簡単に説明すると、通貨の目的は多くの商品交換を実現するためだと私は考えます。
もし、通貨が存在しない世界で商品交換を実現するには以下の2つの問題があります。
-
- 自分が欲しいものを誰が持っているか、第三者が何を必要としているかを知る必要がある
- 欲しい物を手に入れるために別の物を交換しなければならない可能性がある
上記の問題点を具体的に説明すると、仮に商品を交換したい人が3名いるとします(図1)。
Aさんはリンゴを持っていて欲しいものは本です。
Bさんは肉を持っていてリンゴを必要としており、Cさんは本を持ち、肉が欲しいとします。
この状況ではそれぞれが持っている物で欲しい物を直接交換することができません。
例えばAさんが本を交換するためには二回商品を交換する必要があります(Bさんと肉を交換し、その後Cさんと本を交換する)。
図1:通貨がない世界での商品交換
上記の例では登場人物が三名なのでそれほど複雑ではありませんでしたが、大人数で商品を交換する際に上記2つの条件を満たすのは非常に困難です。
実際に、世の中には商品の種類は数え切れないほど存在し、さらに商品を交換したい人は何億人も存在します。
通貨はこの問題を解決するのために生まれたと私は考えます。
図2:通貨による商品交換
通貨での商品交換を実現するには、まず通貨を発行して市場に投入する必要があります。
通貨と商品を交換したい人は、自分が持っている物を市場に売ることでお金(通貨)を受け取ることができます(図2左)。
次にお金(通貨)で欲しい商品を買います(図2右)。
なお、商品の値段は市場での需給関係によって決まります。
市場で商品を交換する人からすると、通貨の本質は”信用”です。
また、通貨を流通させるには、人々が通貨の価値を信用しているという前提が必要です。
通貨が信用される大きな理由は2つあると私は考えます。
- 市場に投入された通貨の総量と商品の割合が安定している
- 偽造が難しい
この二つ条件を満たすことにより商品の値段が安定するため、利用者は通貨の価値を信用することができます。
また、通貨の発行方法は大きくわけて二種類存在しています。
1.2 中央銀行が管理する通貨
中央銀行が管理する通貨は、皆さんが信用できる”中央銀行”から発行されます(図3)。
この通貨の信用は国の信用により保証されており、その”信用”は主に以下の三つにより成り立っています。
- 法律を制定し、法執行機関として通貨を偽造する行為を禁止している
- 偽造防止技術を利用して通貨を偽造を困難にしている
- 経済学の研究機関を設立し、通貨の発行量の合理性を確保している
図3:中央銀行が管理する通貨
世界中の主な通貨はこのような形で発行されていますが、以下のような欠点があります。
- 通貨の価値が国の”信用”に依存しているが、国によって”信用”の格差が大きいため、国際投資の不安定性が高くなる。例えば、国際市場である国の政府は自分の立場から勝手に通貨の換金率を調整できるため、その国での投資のリスクが高くなる。
- 政府は経済の状況を正しく把握できでないことがあるため、通貨の発行量が必ずしも正しいとは限らない。現に、各国で通貨を発行しすぎている実例が多く存在する。
- 国ごとに通貨が違うため、国をまたいで投資をするときに換金をする必要がある。そのため、国をまたいだ投資のコストが高くなる。
1.3 特定の管理者が存在しない通貨
管理者が存在しない通貨は、通貨の発行と管理は誰にも依頼せず、通貨の発行と信用は通貨自身の品質に依存します。
このような通貨は、中央銀行が管理するような通貨が誕生するさらに前から存在します。
金などの貴金属がこのような通貨の代表例です。
貴金属は紙幣と比較すると下記のデメリットがあります。
- 酸化するため、貯蔵しにくい。
- 貴金属そのものの流通コストが高い。
- 貴金属は重いため、携帯性が悪く日常生活では使いにくい。
仮想通貨も特定の管理者が存在しませんが、貴金属のようなデメリットを持ちません。
次の章では、仮想通貨の代表である”ビットコイン”を皆さんへ紹介します。
2. ビットコイン
2.1 歴史
ビットコインの歴史についてはWikipedia(ビットコイン、2017年12月09日 、ウィキペディア日本語版、https://ja.wikipedia.org/wiki/ビットコイン)を参考にして下さい。
2.2 ビットコインの流通
通貨を流通させるための条件の一つに「通貨の取引履歴を偽造しにくい」というものがあります。
この条件はビットコインが誕生する前の仮想通貨は解決していませんでした。
2008年、実用可能な仮想通貨のソリューションを「ビットコイン」という名前でサトシ・ナカモト氏が提案しました。
ビットコインは特殊な記録方法「ブロックチェーン」により、通貨の取引履歴の偽造を防止しています。
まずは、ビットコインにおける取引履歴を記録する流れを簡単に紹介します。
※ ブロックチェーンについては章2.3〜2.4で紹介します。
- AさんからBさんへ1コインを送金するリクエストを作成します。
なお、送金請求のリクエストにはAさんやBさんの認証情報(ssh public key)、コインを交換する情報(A->B:1コイン)と今回の送金手数料の三つの情報を含んでいます。 - 送金請求を全てのMinerへ転送します。
- 各Minerは新しい送金請求のリクエストを自分が持っているPoolに格納します。
このとき、送金請求の状態は”未定”(Unconfirmed Transactions)です。 - 各Minerは送金請求を手数料の高い順で”1ブロック”に適切に格納する件数で抽出します。
この件数は計算の速さ(件数が少ないの方が計算は速い)と送金請求の手数料(件数が多い方が手数料が安い)の二つ点を考慮して決定します。現在1ブロックは約2700件として設定されています。このWebsiteではブロックの詳細情報をリアルタイムで確認することが出来ます。興味がある方はご覧ください。 - 各Minerは数学の問題を計算し、計算の競争に勝利したMinerは新しい取引履歴をブロックチェーンへ追加することで報償を受け取ります。今回の例では、勝利したMinerはEなので、Eのブロックをブロックチェーンへ追加します。
図4:ビットコインの交換
このような仕組みでビットコインの取引履歴がMinerによって記録されていますが、この「Miner」は必ず信用できるというわけではないので、全てのMinerがこの取引履歴を偽造する可能性があると想定しています。
Minerたちの目的はビットコインの取引履歴を更新することによって自分の利益を最大化することです。
この「Minerは信用できない」という前提から、ビットコインにマイニングの競争システムが導入されました。
この競争の目的は、競争で利益を得る可能性より、取引履歴の偽造によって利益を得る可能性を低くすることです。
このようなルールがあることで、利益を追求しているMinerたちが取引履歴の偽造をしなくなります。
2.3 Hash関数
ブロックチェーンを支える重要な技術の一つに「Hash関数」というものがあります。
Hash関数は主に二つの特徴があります。
- テキスト変数InputTextとNonceからHash値を計算するのが容易
- テキスト変数InputTextと一定の規則(先頭に連続した0)で並ぶHash値でNonceを特定するのが非常に困難(図5)
※ この計算の難易度は先頭の”0″の数により調整可能
図5:Hash関数
この二つの特徴を利用してマイニング(数学的な計算競争)設定します。
この計算競争では、問題の正解の確認には時間はかかりませんが、計算そのものには多くの時間がかかります。
その他Hash関数の詳細はWikipedia(ハッシュ関数、2017年10月22日 、ウィキペディア日本語版、https://ja.wikipedia.org/wiki/%E3%83%8F%E3%83%83%E3%82%B7%E3%83%A5%E9%96%A2%E6%95%B0)を参考にしてください。
2.4 ブロックチェーン
図6はブロックチェーンの説明図です。
ビットコインの取引履歴は連続した”Block”に格納されています。
一つ”Block”はおよそ1MBで、その中に約2600件の送金請求情報を含んでいます。
それぞれのブロックは三つ数値で連携しています。
図6:ブロックチェーン
図6の詳細は下記の通りです。
- merkleroot: 当ブロックのHash値です。
- prevHashCode: 前のブロックでの計算結果です。
prevHashCodeは前のブロックのmerkleroot、Nonceによって導かれた64桁のHash値です。
prevHashCodeは先頭に連続した”0″が必要です。
例えば最初のblockのprevHashCodeは”000000000019d6689c085ae165831e934ff763ae46a2a6c172b3f1b60a8ce26f”のような値になります。
0の数によってMiningの計算難易度を調整できます。(0の数値を増やすことで、計算の難易度が高くなります)
この調整は、ブロックを更新する速度を”10分”に調整することが目的です。
当ブログの執筆時点では一つブロックを追加するには約240億回の計算を必要とします。 - Nonce: Minerが計算の正解を求めるために生成する変数です。
Nonceを生成するフローは図7の通りです。
次のブロックのprevHashCodeを求めるために、正解が求まるまでNonceを0から1ずつ増やします。
図7:Nonceの計算
ブロックチェーンは、全てのブロックが”鎖”のようにつながっています。
そのため、1つブロックの内容を変更する場合、そのブロックの後のブロックを全て変更する必要があります。
ある不審なMinerがビットコインの取引履歴を偽造する場合、対象のブロックとそのブロック以後のブロックを競争問題を再計算する必要があります。
つまり、通常の取引履歴を更新する計算量より、取引履歴を偽造する計算量の方が非常に多くなります。
そのため、不審なMinerが誠実なMinerに勝つ可能性が極めて低くなります。
しかし、ビットコインの取引履歴を絶対に偽造できないということはありません。
仮にある一人のMinerの計算力が、その他全てのMinerの計算力の総量を超えた場合、取引履歴の偽造は可能です。
2.5 ビットコインの採掘
最初に発行された50個のビットコイン以外は、全てマイニング(取引履歴を更新する計算)によって発行されています。
Minerは取引履歴を更新する競争に勝つことで報酬を得ます。
Minerが得る報酬には主に2種類あります。
- 送金手数料。この手数料は送金請求を出すときにユーザー自身が決めます。
- ブロックを更新する報償。ブロックの更新は約10分に1回です。
毎回の更新で一定量のビットコインが勝利したMinerに支払われます。
この量は最初は50でしたが、4年ごとに半分になります。
ビットコインを分割する最小の単位は0.00000001なので、2140年になると、ブロックの更新によって発行される報償がなくなります。
※ ビットコインの総量は2100万です。
「ビットコインのマイニングは一体何を採掘しているのですか?」という質問をよく聞きます。
ビットコインのマイニングの価値は、ビットコインの全システムの信用を守ることでしょう。
また、マイニングによって得られたビットコインや送金請求の手数料はMinerの仕事に対しての報償になります。
3. まとめ
今回はビットコインの基本知識を紹介しました。いかがだったでしょうか。
私はビットコインは通貨の革命だと考えます。
ビットコインの登場により、今後、銀行産業、金融産業、IT産業でたくさんのチャンスがうまれるでしょう。
今回のブログが皆さんのビットコインの理解のお役に立てれば幸いです。