ビットコインの中核の技術、ブロックチェーン技術について、あなたは理解していますか?
私の理解は今ひとつで、他の投資案件の理解よりも低いです。
よって、サトシナカモトの論文を読み、ブロックチェーン技術の把握と、問題の識別を行いました。また、どこがこの技術がすごいのかも考察しました。
なお、ビットコインを試用する目的は、以下と設定していました。
- 投資対象としての仮想通貨の把握と問題の識別
- 通貨対象としての機能性の把握と問題の識別
- ブロックチェーン技術の把握と問題の識別
1~2については、すでに記事を書きました。
今回は3についての考察です。
論文を読む前の論点の整理、論文の引用と解釈・問題の識別、ブロックチェーン技術のメリットと今後の課題でまとめてみます。
スポンサーリンク
論文を読む前の論点の整理
今までのブログの記事から整理して、以下の論点としました。
ブロックチェーンの技術ではない、取引所やBitcoin特有の話も入っていると思いますが、ここでは分別せずに論点を列挙しました。
- 多数の計算機が一度に攻撃、あるいは、特殊な故障モードで、自分の仮想追加が消えることはないのか?
- 通貨取引で問題が出た場合、中央集権型ではないので、個別のケースで問題解決対応してくれる組織はないようだが、その運用で問題はないのか?
- リスクは具体的には何か->取引所の情報管理と物理的冗長性が充分でなさそう
- ブロックチェーンの処理時間、ビットコインの場合は10分から1時間長すぎ
- 手数料は、国内送金で1200円程度。高いので利用されない。手数料の考え方は?
- ブロックチェーンでそこまで記録を皆で保有する必要はあるの? 記録が、非常にでかくなるではないか? もっと別の技術はないの?
- 取引所が破綻しても銀行のように資金が保障されない。
一般的なブロックチェーン技術のまとめ
論文を読む前に、一般的なブロックチェーン技術について把握し、以下にまとめました。
読んだときもあなたも、「分かったような、分からないような」感触を持ちませんでしたか?
私は持ちました。
よって、そのもやもやが、何なのかも識別しました。
ブロックチェーン技術とは?
以下が調査したブロックチェーン技術です。いろいろと調べることにより、イメージは沸いてきました。
- 分散型のデータベース/システム
- 中央集権的な管理するシステムはない。
- 分散型のシステムにより、ひとつが壊れても、他のものが代替できる。
- 改ざんを防ぐために、分散システムでチェックできる。
- その代わり分散システムが同期をとり合意を取る(マイニング)必要がある。
- 悪い人も分散システムに入ってくることも可能なオープンネットワークなので合意を取るまで10分以上かかる。
- 合意をとる処理は、一度にすべての取引について実施できないので、切り分けて、取引をまとめたブロック単位に行う。
- ブロックにはタイムスタンプが押され、また前のブロックへのリンクが含まれる。
- ブロックの中には、改ざん防止用に、過去のブロック情報を入れたり、手数料情報が入っている。
- 取引の際は、ブロックを追加する。不正の確認をした上で、特定の一者を、競争により決める。
- 競争は、最初に解答をといた者である。よって計算機の性能が必要。
- 合意形成の方法は、いくつかあるが、上の方法は、Proof Of Work(POW)ともいわれる。
- その一者に報酬が支払われ、その一者が追加したブロックを皆でシェアする。
- ブロックは、どんどんと増え、ブロックが追加されるので、そのイメージをチェーンと呼んでいる。
- ブロックの信憑性は、大元のブロックのハッシュ値に依存している。
- ハッシュ値とは、多くのデータを要約してコンパクトにした値であり、そのデータの要約版として、正しいか否かの検証に用いられる。
- 個人のウォレットは、全世界の分散システムに保有されている。
- 取引履歴も、その分散システムに保有されている。
- 独占やマネーロンダリングに使用される危険を指摘されている。
もやもやは?
上記の調査に対してのもやもやは以下です。
- 合意形成とあるがどういう方法か? 合意が間違うことはないか?
- 悪い人もシステムに参加することが可能ということは、ハッカーなどが参入しやすい危険も逆にあるのではないか?
- 最初に回答をといた人ということは、悪意をもった人がとてつもない計算機の資源で、回答者になった場合は、改ざんリスクがあるのではないか?
- 個人のウォレットは、全世界の分散システム(コンピュータ)で保管とあるが、ここには、個人情報(名前、住所等)はなくて、IDだけだと想定する。すると、そのIDや認証方法が盗まれたら、大金を盗まれる可能性があるのではないか?
論文の引用と解釈・問題の識別
それでは、論文を読んでみます。
論文は、日本語のものが以下のサイトにありました。日本語訳でざっと概要を把握し、具体的には、英語の論文を確認しました。
日本語で読むビットコイン原論文 [by Satoshi Nakamoto]
Bitcoin: A Peer-to-Peer Electronic Cash System
以下引用: Bitcoin: A Peer-to-Peer Electronic Cash System Satoshi Nakamoto
We propose a solution to the double-spending problem using a peer-to-peer network.
上記は、概要の記述の一部です。
論文は、個人名ですが、We proposeで始まっており、複数の人で検討されたものですね。提案は、二重使用の問題を、P2Pで防ぐこととのことです。
P2Pは、集中的なサーバーでなく、コンビュータ通しが互いに通信する方法です。二重使用の問題というのは、たとえば、クレジットカードで、入力を間違えて、二回入力使用すると、二重使用となります。
銀行の取引では、そういうことはまずない集中的な取引になってます。
二重使用というのは言葉を変えると、不正に二重に利用ということでしょう。その不正を許さない仕組みと考えます。
仮想通貨の中核技術は、この二重使用を防ぐことになってます。成りすまし防止とか本人認証の技術ではないです。
The cost of mediation increases transaction costs, limiting the
minimum practical transaction size and cutting off the possibility for small casual transactions
ブロックチェーンの利点ですが、この記述のように、送金に関するトラブルの仲裁のコストがかかるために、(例えば、電話対応や問題解決のためのやりとりです) 小規模の取引ができなくなっているとのことです。
これは、聞いたのはもう15年以上前かもしれませんが、マイクロペイメントという話かと思います。当時はそういう技術やサービスはなかったですが、小額の取引が安いコストでできる、そういうサービスが要求されている時代がありました。
他の国に出稼ぎで来る人には、特に重要なサービスだったと思います。
また、日々の取引で、クレジットカードを受け付けてくれない店舗がありますが、それは手数料を取られるためで、それらが微々たるものになれば、日々の支払いをこれらの店舗も別の手段(マイクロペイメント)で実施できる可能性があります。
この目の付け所はなかなか良いものですね。
The system is secure as long as honest nodes collectively control more CPU power than any cooperating group of attacker nodes.
ここで提案しているシステムが安全である限界については、「正直なノード類が集合的により多くのCPUパワーを制御している時である。それは、攻撃者のノード類よりも多い場合」とあります。
ここで、疑問ですが、POWの考えでは、一番早いひとつのノードを示していたはずです....あとの記述を見ていきましょう。
逆に一番早いノードを攻撃して機能不全にして、そして悪意がある人が沢山のCPUパワーで参加したら、システムの安全が脅かされるのでしょうか。
問題: POWの仕組みは、最大のCPUパワーを持つNodeの数が限られる可能性があり、それらのNodeは、攻撃を受けやすいのではないか?
そられの正直なノードの数ってどう制御しているんでしょうか...集中管理者もいないところが少し気になってます。
Each owner transfers the coin to the next by digitally signing a hash of the previous transaction
ハッシュは、一回きりでなく、コインの取引があるたびに、前回のハッシュを利用して、毎回生成されます。
次に重要なのが、ブロックチェーンの信頼性に関わる重要な考え方と記述です。
少し長いです。
We need a way for the payee to know that the previous owners did not sign any earlier transactions. For our purposes, the earliest transaction is the one that counts, so we don't care about later attempts to double-spend. The only way to confirm the absence of a transaction is to be aware of all transactions. In the mint based model, the mint was aware of all transactions and decided which arrived first. To accomplish this without a trusted party, transactions must be publicly announced [1], and we need a system for participants to agree on a single history of the order in which they were received. The payee needs proof that at the time of each transaction, the majority of nodes agreed it was the first received.
まず、以前のコインのオーナーが、ある取引よりも早く取引されたものに、(二重)サインしてないことを知る方法だということです。
これが二重支払いの解のもととなる考え方です。
ただ、二重でサインするのを防ぐのでなく、自分の口座から引き落とされた、その情報と照合をとれば済むだけではないかとも思います。確かに、自分の口座から引かれて流通されていると分かれば良いのではないでしょうか?
もし、不正により、取引履歴を利用して、それをコピーして、不正利用するとすれば、その防止の技術がダイレクトに記述されていてもいい気がします....
でも、そういう技術ではないんでしょうね。このブロックチェーンは。
問題: 二重支払いのチェックでなくて、自分の口座内の取引から確実に実施されたものと証明できるシステムでも良いのではないか?
そして、この二重支払い問題のためには、最初に取引されたものだけが本物だと、規定しています。また、二重支払いがないか否か確認するためには、すべての取引の履歴を残すこととなってます。
最初に取引されたものは、最初に届いたものを選ぶことです。
ここは、やはり気になりますね。すべての取引まで履歴を残すとありますが、50年たったら、それらの記録は莫大になるのではないでしょうか? もっと簡易なメカニズムがないのでしょうか?
問題: すべての取引の記録は行き過ぎではないか? 計算機の負荷がどんどんと重くなる。
そして、取引においては、大多数のノードが「最初に届いた」というものを採用するとのことです。
確かに改ざんするには、まずもととなるものがあって、それを見てから改ざんしますからね。この考え方は自然です。
この大多数というのは、今までのブロックチェーン記述の説明ではなかったですが、肝ですね。世界中の大多数より勝ち、不正をするには、それらより多い計算機の資源が必要ですので、非常に困難です。
この考え方は、なかなか革新的ですね!
でも、もし、それらの計算機が共通のOSを使っていて、そのバグなどを付いた攻撃を大多数しかけられて、大多数の計算機がのっとられたら、どうなるかはわからないですね。
可能性としては低いかもしれませんが、分散化されており、各々の計算機に対して同時不具合が出ない制御をしてないとすると、ここはやはり、確率は小さいかもしれませんが、気になるところです。
弱点となるのではないでしょうか。
Openにネットワークに接続できるので、それらの大多数の計算機にウィルスを仕込むことに成功したら、どうなるのか.... どうなったとしても、対応・保障してくれる組織もないですね。
実態として、それらのことにならないほど充分に分散されていればそれは杞憂かと思いますが、そこまで今回は調査はしておりません。
The solution we propose begins with a timestamp server. The timestamp proves that the data must have existed at the time, obviously, in order to get into the hash.
このソリューションは、タイムスタンプサーバから始まります。このタイムスタンプが、ブロックのデータがハッシュするために、その時存在したと示します。
ここは、重要なことですね。
このタイムスタンプが正しいためには、世界の計算機の時間が同一で正確である必要がありますね。ここは、管理されているのでしょうか?
Proof of Workについては以下の説明があります。最速の計算をしたものとの今までの説明に合致しているでしょうか?
we will need to use a proof of-work system similar to Adam Back's Hashcash.
For our timestamp network, we implement the proof-of-work by incrementing a nonce in the block until a value is found that gives the block's hash the required zero bits.
これは、少し難しい内容ですね。Adam Backを調べないと本質がわからなさそうです。
ハッシュキャッシュという概念は、Proof of Workとして、Adam Backが考えたもので、スパムメール対応などにも使われてます。この方法は、計算問題を出して、計算負荷をかけることになります。ただ、この答えは簡単にチェックできるものにして検証時間を最小にしてます。
スパムメールの場合は、最初に計算をさせたハッシュスタンプを押した送信にすると、多量のスパムメールを送るのは非常に時間がかかるので困難になります。よってこのメカニズムを入れると対策になります。
ブロックのハッシュが要求されたZeroビットになるまで、nounce(使い捨てのランダムの値)を増加させていく。ようは、その計算のことを表しています。
The proof-of-work also solves the problem of determining representation in majority decision making. Proof-of-work is essentially one-CPU-one-vote.
これは、意外でしたが、CPUパワーというのは、IPアドレスひとつでなく、ひとつのCPUで一つの投票権があるとのことです。
よって、PCが二つCPUもっていたら、二つ投票権があることになりますね。
遅いCPUでも早いCPUでも投票はひとつですね。
If a majority of CPU power is controlled by honest nodes, the honest chain will grow the fastest and outpace any competing chains.
多数のCPUパワーが正直なノード類で制御された場合、その正直なチェーンは、一番早く成長し、いかなる競合するチェーンをも追い出す、とあります。
やはり肝は多数を占めること、この多数を占めることができないと逆に問題ですね。
このあとのロジックはあとの説明で、でてきますが、インセンティブとして最初のブロックを作った人、つまりPOWの問題を解いた人(Node)に報酬が支払えます。
コンピュータ通しで競争をしているようなものです。その多数の競争に打ち勝ったコンピュータ(Node)がいて、次のブロックでも、また最速のコンピュータがいるとして、攻撃者は、これらの最速のコンピュータより早く問題を解く必要があります。
ネットワークの処理は以下になります。
これは、今までの説明と同様です。
1) New transactions are broadcast to all nodes.
2) Each node collects new transactions into a block.
3) Each node works on finding a difficult proof-of-work for its block.
4) When a node finds a proof-of-work, it broadcasts the block to all nodes.
5) Nodes accept the block only if all transactions in it are valid and not already spent.
6) Nodes express their acceptance of the block by working on creating the next block in the chain, using the hash of the accepted block as the previous hash.
次にはインセンティブの箇所です。ここはとても重要です。
革新的ですね。自分でシステムを持たない代わりに、システムを提供した人に報酬を与える制度です。
しかも最初にブロックを生成した人が報酬をもらえるので、計算を早くしようというインセンティブも与えられます。良くこういうことを思いつきましたね。
すばらしいです。
また、そのこと自身が、攻撃者がそりより早い計算機で攻撃するのを困難にしてます。これも良く考えられてます。
6. Incentive
By convention, the first transaction in a block is a special transaction that starts a new coin owned by the creator of the block.
The incentive can also be funded with transaction fees.
また、インセンティブは取引の手数料によっても得られるとあります。
つぎに、取引履歴が膨大になのでは、という疑問については解がありました。
古いものは、捨てることができるとのことです。
7. Reclaiming Disk Space
Once the latest transaction in a coin is buried under enough blocks, the spent transactions before it can be discarded to save disk space.
次に、ネットワークに対する攻撃に対しても対策含めて記述があります。ここでは方法論をすべて紹介するわけではないですが、リスクを考えて処方箋を示しているのは評価できます。
アラートを出すシステムとかビジネス専用のノードを持つとかです。
..but is more vulnerable if the network is overpowered by an attacker.
One strategy to protect against this would be to accept alerts from network nodes when they detect an invalid block, prompting the user's software to download the full block and alerted transactions to confirm the inconsistency.
Businesses that receive frequent payments will probably still want to run their own nodes for more independent security and quicker verification.
プライバシーについては、銀行取引と比べ、匿名性が高いといいますが、以下の記述がありました。
取引してわかりましたが、匿名の公開キーを使うということです。
ただし、問題も記述されており、このキーと個人の関係がわかるとすべての取引がわかるとのことです。
これって、税務署や当局から調べが入って捜査になれば、簡単にできることになるのではないでしょうか?
CPUのオーナも、誰かがコントロールしているわけではないので、調べを拒否できるか否か...
でも、これって普通の人は、調べられても問題はないので対した問題ではないですよね。別に匿名性もなくても良い気がしますが....ヤミ取引をしているわけではないので。
The necessity to announce all transactions publicly precludes this method, but privacy can still be maintained by breaking the flow of information in another place: by keeping public keys anonymous.
The risk is that if the owner of a key is revealed, linking could reveal other transactions that belonged to the same owner.
次には計算についは以下の記述があります。
正当なチェーンより早く代替チェーンを攻撃者が作ることを考慮しています。
でもそういう場合でも、システムがなんでも変えられるとか、値を作るとか、攻撃者に所属してないお金をとることにはならないと言及しています。
実装の仕方はわかりませんが、そうだとすると、冒頭で列挙した「自分の仮想通貨が消える」ということはこの技術の範囲においては、なさそうです。(この技術の範囲外は別です)
11. Calculations
We consider the scenario of an attacker trying to generate an alternate chain faster than the honest chain. Even if this is accomplished, it does not throw the system open to arbitrary changes, such as creating value out of thin air or taking money that never belonged to the attacker.
An attacker can only try to change one of his own transactions to take back money he recently spent.
ただ、個人のパブリックキーと、二重認証の仕組みを盗めたら、自由に送金できますので、そこの仕組みまではブロックチェーンの技術の中にはなく、技術の外になります。
要は、なりすましですね...
よって、この外のものをいかに強く設定できるかが肝でしょう。
攻撃者に唯一できるのは、自分が取引したものについて、お金を取り戻そうとする行為のみとのことです。
これは結構重要なことですね。他の人の取引を変えられるわけではないとのことです。
その仕組みまでは記述されていないので良くわかりません。
確率計算には、ポワソン分布を使用してます。離散型確率分布ですね。
攻撃者の攻撃成功の確率がランダムなポワソン分布と前提をおいてます。
まぁ、妥当な線でしょう。
要点が何かといえば、CPUパワーがまさるか否かであり、ブロックの数の分だけ、指数関数的に不利になる、ということです。
これは重要で、先ほど計算が速いノードにインセンティブが与えられ、最初のブロックを生成できるといいましたが、この瞬間だけでなく、続くノードについても同じことが要求されるので、攻撃者の攻撃がより一層、指数関数的に困難になるということです。
ここがブロックチェォーン技術の肝と考えます。
結論しては、以下が示されています。
攻撃者には、公開履歴の記録を改ざんするのは、計算上、非現実的ということですが、条件として、正直なノード類が"majority of CPU power"となってます。
日本語訳では、「過半数」といわれてますが、そのまま訳すと、「多数」の方がしっくりくると思います。
To solve this, we proposed a peer-to-peer network using proof-of-work to record a public history of transactions that quickly becomes computationally impractical for an attacker to change if honest nodes control a majority of CPU power.
ブロックチェーン技術のメリットと今後の課題
論文を読んで、ずいぶんとすっきりしました。
ブロックチェーン技術のメリットは以下です。
- 自前で計算機を準備しなくても報酬を与える制度により、計算機のリソースを事前に支払い必要なく大量に確保できる。
- 報酬制度により、計算能力の高いマシンが選ばれ、その計算結果がチェーンとして連結されていくので、そのまとまりを改ざんしようとする攻撃者は、それ以上の計算能力と計算機の数が必要となり、改ざんの実行が極めて困難である。
追加で、国内の場合、送金コストが高いと言及しましたが、小額決済をそもそも目指していたので、例えば、500円だとしてみましょう。
手数料を計算すると、
国内送金 0.0005BTC* (1BTC=40万円で200円)
購入手数料 0.1% = 500*0.001 = 0.5円
合計 200.5円。ダメですね。500円に対して200.5円もかかっていては。1万円で200円でも高いですね。ネット銀行がタダでできることを考えるとやはり国内送金やマイクロペイメントには、コンセプトと違って向かないですね。
海外送金向けですね。
今後の課題は以下です。
- マイクロペイメント用に国内送金手数料は、値段に応じて安くなる必要がある。
- 処理の時間が10分から1時間かかるのは長い。
- 悪い人が入りやすいネットワークなので、いろいろなリスクが増えそう。
- ブロックチェーンの技術の外側が脆弱性が保障されない。パブリックキーや本人認証の仕組みが盗まれたらおしまいで、銀行のような対応までは期待できない。
- 口座情報の取引所の管理が弱く、物理的な災害、攻撃を受けた場合、資産が保全されにくい。先進的な管理をしている銀行よりは劣っている模様。
4,5が個人的にはやはり一番気になることです。これは、仮想通貨の取引所だけについていっているのではなく、既存の銀行や証券会社についても調査し、同様の懸念を持っています。
まとめ
サトシナカモトの論文のぱっと見は、複雑そうな計算式もあり、難しそうと思いましたが、調べながら読んでいったら、そうでもないことがわかりました。
確率計算も割りと単純です。
この論文では、わかりませんでしたが、個人の取引を、取引してない攻撃者から改ざんすることはなく、攻撃者が取引したもののみ改ざんの可能性がある。 これをどう実装しているのか、気になりました。
法制度等もまだ充分ではなく、問題があっても技術的に対応できるか否かはグレーですが、サイバー攻撃等の被害を含めて、今後の実績が証明していくものになると予想しています。その中で私の疑問も払拭されることになります。もしかしたら、疑問が的中するかもしれません。
私自身は、海外の案件に投資しているので、それらの為替手数料が、ブロックチェーンの技術を使って半額以下になっていくことを望みます。
投機で儲けることよりも、通貨とサービスの可能を確実にできればとても便利になりそうです。
それては、XRPになるかもしれませんが、仮想通貨内で競争して欲しいと考えます。
関連記事はコチラ↓
追記2017/12/03) 試用くらいはしてください、とのコメントもありましたので資金を投入しはじめました。
かなりの取引所をOpenして、論文を読んだりしています。現状は、Bitcoin中心にオルトコインを複数保有しており、国内取引所ではサービスが良くなり、リスク対応もしているbitFlyerを使うようになりました。
かなりの利益があがるようになりました。
基本的な認識は「ばくち」と思っており、投資割合は抑えてます。このバブルは近々何かの理由で崩壊するかもしれないし、2,3年から4,5年続くかもしれないと考えてます。よっていざという時に売り抜ける臨戦態勢にして資金を投入しております。
追記2018/9/1) 仮想通貨が実用化されてないので、全面撤退しました。マイニング契約等残っているものを細々と続けます。
スポンサーリンク