>仮想通貨サトシナカモトの論文の読解~ブロックチェーン技術の把握と問題の識別2019年1月29日Tweetビットコインの中核の技術、ブロックチェーン技術について、あなたは理解していますか?私の理解は今ひとつで、他の投資案件の理解よりも低いです。よって、サトシナカモトの論文を読み、ブロックチェーン技術の把握と、問題の識別を行いました。どこがこの技術がすごいのかも考察しました。ビットコインを試用する目的は、以下と設定していました。通貨対象としての機能性の把握と問題の識別ブロックチェーン技術の把握と問題の識別1~2については、すでに記事を書きました。今回は3についての考察です。論文を読む前の論点の整理、論文の引用と解釈・問題の識別、ブロックチェーン技術のメリットと今後の課題でまとめてみます。今までのブログの記事から整理して、以下の論点としました。ブロックチェーンの技術ではない、取引所やBitcoin特有の話も入っていると思いますが、ここでは分別せずに論点を列挙しました。多数の計算機が一度に攻撃、あるいは、特殊な故障モードで、自分の仮想追加が消えることはないのか?通貨取引で問題が出た場合、中央集権型ではないので、個別のケースで問題解決対応してくれる組織はないようだが、その運用で問題はないのか?リスクは具体的には何か->取引所の情報管理と物理的冗長性が充分でなさそうブロックチェーンの処理時間、ビットコインの場合は10分から1時間長すぎ手数料は、国内送金で1200円程度。高いので利用されない。別の技術はないの?取引所が破綻しても銀行のように資金が保障されない。一般的なブロックチェーン技術のまとめ論文を読む前に、一般的なブロックチェーン技術について把握し、以下にまとめました。読んだときもあなたも、「分かったような、分からないような」感触を持ちませんでしたか?私は持ちました。よって、そのもやもやが、何なのかも識別しました。ブロックチェーン技術とは?以下が調査したブロックチェーン技術です。調べることにより、イメージは沸いてきました。分散型のデータベース/システム中央集権的な管理するシステムはない。分散型のシステムにより、ひとつが壊れても、他のものが代替できる。改ざんを防ぐために、分散システムでチェックできる。その代わり分散システムが同期をとり合意を取る(マイニング)必要がある。悪い人も分散システムに入ってくることも可能なオープンネットワークなので合意を取るまで10分以上かかる。合意をとる処理は、一度にすべての取引について実施できないので、切り分けて、取引をまとめたブロック単位に行う。ブロックにはタイムスタンプが押され、また前のブロックへのリンクが含まれる。ブロックの中には、改ざん防止用に、過去のブロック情報を入れたり、手数料情報が入っている。取引の際は、ブロックを追加する。不正の確認をした上で、特定の一者を、競争により決める。競争は、最初に解答をといた者である。よって計算機の性能が必要。Work(POW)ともいわれる。その一者に報酬が支払われ、その一者が追加したブロックを皆でシェアする。ブロックは、どんどんと増え、ブロックが追加されるので、そのイメージをチェーンと呼んでいる。ブロックの信憑性は、大元のブロックのハッシュ値に依存している。ハッシュ値とは、多くのデータを要約してコンパクトにした値であり、そのデータの要約版として、正しいか否かの検証に用いられる。個人のウォレットは、全世界の分散システムに保有されている。取引履歴も、その分散システムに保有されている。独占やマネーロンダリングに使用される危険を指摘されている。もやもやは?上記の調査に対してのもやもやは以下です。合意が間違うことはないか?悪い人もシステムに参加することが可能ということは、ハッカーなどが参入しやすい危険も逆にあるのではないか?最初に回答をといた人ということは、悪意をもった人がとてつもない計算機の資源で、回答者になった場合は、改ざんリスクがあるのではないか?個人のウォレットは、全世界の分散システム(コンピュータ)で保管とあるが、ここには、個人情報(名前、住所等)はなくて、IDだけだと想定する。すると、そのIDや認証方法が盗まれたら、大金を盗まれる可能性があるのではないか?論文の引用と解釈・問題の識別それでは、論文を読んでみます。論文は、日本語のものが以下のサイトにありました。日本語訳でざっと概要を把握し、具体的には、英語の論文を確認しました。network.上記は、概要の記述の一部です。proposeで始まっており、複数の人で検討されたものですね。提案は、二重使用の問題を、P2Pで防ぐこととのことです。P2Pは、集中的なサーバーでなく、コンビュータ通しが互いに通信する方法です。二重使用の問題というのは、たとえば、クレジットカードで、入力を間違えて、二回入力使用すると、二重使用となります。銀行の取引では、そういうことはまずない集中的な取引になってます。二重使用というのは言葉を変えると、不正に二重に利用ということでしょう。その不正を許さない仕組みと考えます。仮想通貨の中核技術は、この二重使用を防ぐことになってます。成りすまし防止とか本人認証の技術ではないです。小規模の取引ができなくなっているとのことです。これは、聞いたのはもう15年以上前かもしれませんが、マイクロペイメントという話かと思います。当時はそういう技術やサービスはなかったですが、小額の取引が安いコストでできる、そういうサービスが要求されている時代がありました。他の国に出稼ぎで来る人には、特に重要なサービスだったと思います。日々の取引で、クレジットカードを受け付けてくれない店舗がありますが、それは手数料を取られるためで、それらが微々たるものになれば、日々の支払いをこれらの店舗も別の手段(マイクロペイメント)で実施できる可能性があります。この目の付け所はなかなか良いものですね。nodes.ここで提案しているシステムが安全である限界については、「正直なノード類が集合的により多くのCPUパワーを制御している時である。それは、攻撃者のノード類よりも多い場合」とあります。ここで、疑問ですが、POWの考えでは、一番早いひとつのノードを示していたはずです....あとの記述を見ていきましょう。逆に一番早いノードを攻撃して機能不全にして、そして悪意がある人が沢山のCPUパワーで参加したら、システムの安全が脅かされるのでしょうか。POWの仕組みは、最大のCPUパワーを持つNodeの数が限られる可能性があり、それらのNodeは、攻撃を受けやすいのではないか?そられの正直なノードの数ってどう制御しているんでしょうか...集中管理者もいないところが少し気になってます。transactionハッシュは、一回きりでなく、コインの取引があるたびに、前回のハッシュを利用して、毎回生成されます。次に重要なのが、ブロックチェーンの信頼性に関わる重要な考え方と記述です。received.まず、以前のコインのオーナーが、ある取引よりも早く取引されたものに、(二重)サインしてないことを知る方法だということです。これが二重支払いの解のもととなる考え方です。二重でサインするのを防ぐのでなく、自分の口座から引き落とされた、その情報と照合をとれば済むだけではないかとも思います。確かに、自分の口座から引かれて流通されていると分かれば良いのではないでしょうか?もし、不正により、取引履歴を利用して、それをコピーして、不正利用するとすれば、その防止の技術がダイレクトに記述されていてもいい気がします....でも、そういう技術ではないんでしょうね。このブロックチェーンは。二重支払いのチェックでなくて、自分の口座内の取引から確実に実施されたものと証明できるシステムでも良いのではないか?そして、この二重支払い問題のためには、最初に取引されたものだけが本物だと、規定しています。二重支払いがないか否か確認するためには、すべての取引の履歴を残すこととなってます。最初に取引されたものは、最初に届いたものを選ぶことです。ここは、やはり気になりますね。計算機の負荷がどんどんと重くなる。取引においては、大多数のノードが「最初に届いた」というものを採用するとのことです。確かに改ざんするには、まずもととなるものがあって、それを見てから改ざんしますからね。この考え方は自然です。この大多数というのは、今までのブロックチェーン記述の説明ではなかったですが、肝ですね。世界中の大多数より勝ち、不正をするには、それらより多い計算機の資源が必要ですので、非常に困難です。この考え方は、なかなか革新的ですね!でも、もし、それらの計算機が共通のOSを使っていて、そのバグなどを付いた攻撃を大多数しかけられて、大多数の計算機がのっとられたら、どうなるかはわからないですね。可能性としては低いかもしれませんが、分散化されており、各々の計算機に対して同時不具合が出ない制御をしてないとすると、ここはやはり、確率は小さいかもしれませんが、気になるところです。弱点となるのではないでしょうか。なったとしても、対応・保障してくれる組織もないですね。実態として、それらのことにならないほど充分に分散されていればそれは杞憂かと思いますが、そこまで今回は調査はしておりません。hash.このソリューションは、タイムスタンプサーバから始まります。このタイムスタンプが、ブロックのデータがハッシュするために、その時存在したと示します。ここは、重要なことですね。このタイムスタンプが正しいためには、世界の計算機の時間が同一で正確である必要がありますね。Workについては以下の説明があります。bits.これは、少し難しい内容ですね。Backを調べないと本質がわからなさそうです。Backが考えたもので、スパムメール対応などにも使われてます。この方法は、計算問題を出して、計算負荷をかけることになります。この答えは簡単にチェックできるものにして検証時間を最小にしてます。スパムメールの場合は、最初に計算をさせたハッシュスタンプを押した送信にすると、多量のスパムメールを送るのは非常に時間がかかるので困難になります。よってこのメカニズムを入れると対策になります。ブロックのハッシュが要求されたZeroビットになるまで、nounce(使い捨てのランダムの値)を増加させていく。ようは、その計算のことを表しています。one-CPU-one-vote.これは、意外でしたが、CPUパワーというのは、IPアドレスひとつでなく、ひとつのCPUで一つの投票権があるとのことです。よって、PCが二つCPUもっていたら、二つ投票権があることになりますね。遅いCPUでも早いCPUでも投票はひとつですね。chains.多数のCPUパワーが正直なノード類で制御された場合、その正直なチェーンは、一番早く成長し、いかなる競合するチェーンをも追い出す、とあります。肝は多数を占めること、この多数を占めることができないと逆に問題ですね。このあとのロジックはあとの説明で、でてきますが、インセンティブとして最初のブロックを作った人、つまりPOWの問題を解いた人(Node)に報酬が支払えます。コンピュータ通しで競争をしているようなものです。その多数の競争に打ち勝ったコンピュータ(Node)がいて、次のブロックでも、また最速のコンピュータがいるとして、攻撃者は、これらの最速のコンピュータより早く問題を解く必要があります。ネットワークの処理は以下になります。これは、今までの説明と同様です。hash.次にはインセンティブの箇所です。ここはとても重要です。自分でシステムを持たない代わりに、システムを提供した人に報酬を与える制度です。最初にブロックを生成した人が報酬をもらえるので、計算を早くしようというインセンティブも与えられます。良くこういうことを思いつきましたね。そのこと自身が、攻撃者がそりより早い計算機で攻撃するのを困難にしてます。これも良く考えられてます。fees.また、インセンティブは取引の手数料によっても得られるとあります。つぎに、取引履歴が膨大になのでは、という疑問については解がありました。古いものは、捨てることができるとのことです。space.次に、ネットワークに対する攻撃に対しても対策含めて記述があります。ここでは方法論をすべて紹介するわけではないですが、リスクを考えて処方箋を示しているのは評価できます。アラートを出すシステムとかビジネス専用のノードを持つとかです。verification.プライバシーについては、銀行取引と比べ、匿名性が高いといいますが、以下の記述がありました。取引してわかりましたが、匿名の公開キーを使うということです。問題も記述されており、このキーと個人の関係がわかるとすべての取引がわかるとのことです。これって、税務署や当局から調べが入って捜査になれば、簡単にできることになるのではないでしょうか?CPUのオーナも、誰かがコントロールしているわけではないので、調べを拒否できるか否か...でも、これって普通の人は、調べられても問題はないので対した問題ではないですよね。別に匿名性もなくても良い気がしますが....ヤミ取引をしているわけではないので。owner.次には計算についは以下の記述があります。正当なチェーンより早く代替チェーンを攻撃者が作ることを考慮しています。いう場合でも、システムがなんでも変えられるとか、値を作るとか、攻撃者に所属してないお金をとることにはならないと言及しています。実装の仕方はわかりませんが、そうだとすると、冒頭で列挙した「自分の仮想通貨が消える」ということはこの技術の範囲においては、なさそうです。spent.ただ、個人のパブリックキーと、二重認証の仕組みを盗めたら、自由に送金できますので、そこの仕組みまではブロックチェーンの技術の中にはなく、技術の外になります。要は、なりすましですね...よって、この外のものをいかに強く設定できるかが肝でしょう。攻撃者に唯一できるのは、自分が取引したものについて、お金を取り戻そうとする行為のみとのことです。これは結構重要なことですね。他の人の取引を変えられるわけではないとのことです。その仕組みまでは記述されていないので良くわかりません。確率計算には、ポワソン分布を使用してます。離散型確率分布ですね。攻撃者の攻撃成功の確率がランダムなポワソン分布と前提をおいてます。要点が何かといえば、CPUパワーがまさるか否かであり、ブロックの数の分だけ、指数関数的に不利になる、ということです。これは重要で、先ほど計算が速いノードにインセンティブが与えられ、最初のブロックを生成できるといいましたが、この瞬間だけでなく、続くノードについても同じことが要求されるので、攻撃者の攻撃がより一層、指数関数的に困難になるということです。ここがブロックチェォーン技術の肝と考えます。結論しては、以下が示されています。power"となってます。日本語訳では、「過半数」といわれてますが、そのまま訳すと、「多数」の方がしっくりくると思います。論文を読んで、ずいぶんとすっきりしました。ブロックチェーン技術のメリットは以下です。自前で計算機を準備しなくても報酬を与える制度により、計算機のリソースを事前に支払い必要なく大量に確保できる。報酬制度により、計算能力の高いマシンが選ばれ、その計算結果がチェーンとして連結されていくので、そのまとまりを改ざんしようとする攻撃者は、それ以上の計算能力と計算機の数が必要となり、改ざんの実行が極めて困難である。追加で、国内の場合、送金コストが高いと言及しましたが、小額決済をそもそも目指していたので、例えば、500円だとしてみましょう。