ビットコインを学ぶ

カテゴリ:IT

コメント(0) / この記事のURL

先日受けたストレングスファインダーで、一番の強みが学習欲であることがわかったので、存分に興味のある分野を学んでいこうと思います。



今一番関心があるのはブロックチェーンという仕組みです。
最近話題のビットコインの中核となる技術ですが、
非中央集権な仕組みはこれから様々な分野に波及していくと考えています。

システムの維持コストを、利用している人で分担するという考え方はとても合理的だと思いますし、システム自体がオープンソースで公開されて、様々な人の手によってアップデートされていっている点にも可能性を感じています。

ビットコインの概要


ビットコイン自体は2009年に開始したらしく、調べてみると解説してくれているサイトがたくさんあります。
概要をまとめると以下のような感じです。間違い等があればご指摘いただけると幸いです。

・サトシ・ナカモトと名乗る人物によって投稿された論文を元に、2009年にソフトウェアが公開されて運用開始。

・ソフトウェアはBitcoin Core(旧:Bitcoin-QT)と呼ばれ、GitHubで全ソースが公開されています。
 ソフトウェアのダウンロード:https://bitcoin.org/ja/download
 ソースコード:https://github.com/bitcoin/bitcoin

・誰が誰にいくら送金したという情報が、システム開始から全てわかれば、誰が現在いくら持っているかを確認することができます。
 銀行などの中央集権な仕組みの場合、この取引情報を特定の組織が維持・管理を行っていますが、当然管理するためのコストがかかります。
 ビットコインの場合は、この取引情報を特定の組織が管理するのではなく、利用する人それぞれで保持することで、非中央集権な仕組みを実現しています。

・例えば、Aさんが、ビットコインのソフトウェアに対して、AさんからBさんへ1ビットコイン送金するという処理を依頼したとします。
 ソフトウェアからインターネットに向けて、この取引情報が送信され、利用する人それぞれで持っている取引情報の最後に「AさんからBさんへ1ビットコイン送金した」という情報が追加され、結果として、AさんBさんの所持金を確認することができます。

・取引情報は全員がそれぞれ持つことになるので、すべての取引は公開され、誰でも確認することができます。
 ただ、AさんからBさんへの送金と例を出しましたが、実際にはビットコインのソフトウェア上では個人情報を全く保持しないため、誰が誰に送金したかは確認することができません。
 わかるのは、abcという口座から、defという口座に1ビットコイン移動したという情報のみです。
 abcという口座がAさんの口座であるということは、Aさんにしかわかりません。

・ただ、単純に取引情報をそれぞれで保持しているだけだと、Aさんが、10ビットコイン保存してあるdefという誰かの口座から、自分の口座abcへ10ビットコイン送金するという処理の依頼を出すこともできてしまいます。
 これを防ぐために、電子署名の仕組みが取り入れられています。
 詳しい仕組みは省きますが、電子署名においては、本人しか知りえない秘密鍵と、誰でも確認できるように公開する公開鍵の2つを利用します。
 秘密鍵で変換した取引情報は、公開鍵でしか復元できないという性質(RSA暗号の性質)を利用して、その取引情報がAさんが依頼したものであることを証明し、同時に取引情報の改ざんが行われていないことを証明できます。
 要は、Aさんの秘密鍵がなければ、Aさんの口座から他の口座への送金はできないということです。
 逆に言うと、秘密鍵がばれてしまえば誰でも送金ができてしまうため、この秘密鍵の管理がとても重要であるということがわかります。

・電子署名により、自分以外の口座から送金することはできなくなりましたが、自分の口座からの送金を改ざんするということは可能です。
 秘密鍵はいくつでも作成可能なので、Aさんの口座はいくつでも好きに作成することが可能です。(実際、秘密鍵の再利用は非推奨のため、取引のたびに新しい鍵を使用するような動きのようです)
 ビットコインを利用可能なビックカメラで、Aさんが何かを購入したとします。
 当然、取引情報に、Aさんの口座abcからビックカメラの口座xyzへビットコインを送金したという情報が登録されます。
 商品を受け取った後、取引情報の履歴はすべて自分の手元にあるため、「Aさんの口座abcからビックカメラの口座xyzへ送金」という情報を、「Aさんの口座abcからAさんの口座defへ送金」という情報へ改ざんしたとします。
 すると、Aさんの持っている取引履歴と、ほかの人の持っている取引履歴に差が出てしまいます。
 こういう時、ブロックチェーンでは長さの一番長い取引履歴を採用するというルールがあります。
 そこで、Aさんが自分で改ざんした取引履歴を正しいものとして採用してもらうには、取引履歴を伸ばして、一番長くする必要があります。
 単純に取引履歴を長くするだけなら、自分から自分の口座への送金情報をたくさん追加していけばよさそうですが、それができないように、ビットコインではPoW(プルーフオブワーク)という仕組みを取り入れています。

・PoWとは、取引情報を承認するための仕組みで、ビットコインの場合は一定量のパソコンの処理が承認のための条件となっています。
 簡単に言うと、ビットコインに参加しているたくさんの人のパソコンで頑張って計算して、10分ぐらいかかってやっと解ける計算問題が出されます。
 この計算問題を解く競争に参加することを、「マイニング」と言い、一番最初に問題を解いた人に報酬としてビットコインが与えられます。
 同時に、その10分間で行われた取引情報が、承認されたものとして登録されます。
 つまり、取引履歴を伸ばしていくためには、このマイニングの作業を繰り返していく必要があるわけです。

・この計算問題の式には、承認対象の取引履歴の情報が含まれるため、取引履歴を改ざんすると、当然この計算問題の答えも変わってきます。
 つまり、Aさんが改ざんした取引情報を正しい情報として受け入れてもらうためには、この計算問題を、全世界のマイニングしている人の計算処理スピードよりも速く解いていく必要があるわけです。
 しかも、10分ごとに取引履歴は伸びていくため、時間がたてばたつほど追いつくのは困難になります。
 これを実現しようとすると、単純に考えれば、全世界のマイニング人口の50%以上を味方につける必要があります。
 半分以上の人が、Aさんの改ざんした取引情報を支持してくれるのであれば、改ざんは可能になるということです。
 その条件はかなり難しいということが、ビットコインの信頼性となっています。



・上記で秘密鍵の管理が重要だと書きましたが、この秘密鍵等を管理するソフトウェアを最近はウォレットと呼ぶようです。
 Bitcoin Coreも秘密鍵を管理して、送金等の処理ができるので、ウォレットの一種です。
 試しにBitcoin Coreをダウンロードしてみましたが、なんと今現在で取引履歴の容量が169GBにも達しています。
 起動のたびに取引情報をダウンロードする必要もあるので、なかなか気軽に使える感じではありませんね…。
 上記で取引履歴を利用者それぞれで保持すると書きましたが、最近は全ての取引情報のダウンロードは行わず、直近の情報のみで動作するSPVウォレットというものが主流のようです。
 容量を必要としないため、スマホなどでも動作するウォレットアプリがいろいろと出ているようです。
 ウォレット自体は、秘密鍵が管理できればなんでもありなので、Bitcoin coreのようなPC上で管理するデスクトップウォレット、Web上に秘密鍵を預けるWebウォレット、USBのような専用のハードに保存するハードウォレット、秘密鍵自体を紙に印刷するペーパーウォレットなど様々です。

・Webウォレットはネット上に秘密鍵を置く方式で、取引所などにビットコインを預けているのもこのWebウォレットに該当します。
 金額が多く、セキュリティが高くても狙われやすいため、個人で管理するほうが確実かもしれません。

・マイニングは現在競争が激しく、電気代の安い中国等に集中しているようです。
 初期のころは個人でもマイニング可能だったらしいですが、現在はほぼ不可能なようです。(やってみてはないのでわかりませんが)
 かわりにマイニングプールという、複数人でマイニングし、報酬を分配するという方式が多くなってきているようです。

・ビットコインはPoWを採用していますが、ほかの仮想通貨のイーサリアムではPoSが採用さされていたり、NEMではPoIなど別の方式が採用されています。
 ブロックチェーン自体はソフトウェアですから、用途に合わせて様々なアイディアが採用できるというところも面白いところです。

・時間がたてばたつほど改ざんは難しくなるので、取引履歴を最初から全てもたなくても、ある時点での口座情報を確定させることで、それまでの履歴は保持しなくてもよくなるのではないか…という気がするけれど、問題があるのだろうか。
 今後も取引履歴は容量は増え続けていくと思うので、いろいろと対策は必要になってきそうですね。
 GitHubを見るとすでに16000回以上のコミットが行われているので、当然いろいろな対策が打たれているのだとは思います。
 そのあたりも含め、もう少し理解を進めていきたいですね。


概要としてはこんな感じでしょうか。
掘り下げるとまだわからない部分も多いので、
次回はソースも追いながら勉強していきたいと思います。


■参考サイト
・ビットコインの原論文を読む:http://kogarashi.net/pitchblende/bitcoinwhitepaper
・ビットコインの仕組みを学ぶための教材紹介https://altcoins.blue/bitcoinstudy/


コメント(0) / この記事のURL


コメントする

お名前
コメント