【サトシ・ナカモト論文を読む③】
日本はおはモーニング(´・ω・`)でしょうか
相変わらず良い天気が続く今日この頃、皆様いかがお過ごしでございましょうか。クソネミは海外出張のためエジプトに滞在しております。初めてナイル川を見ましたが、感想は以下のようなものでございました。
カイロの街中を移動しながらナイル川を見たけど、第一印象は「汚くて長い川」だった。ピラミッドに期待しよう…その前に仕事しよう…( ˘ω˘)
— (˘ω˘ )クソネミ (@r535m_m) December 19, 2017
語彙力・及び感性が不足しているクソネミめを、どうぞ寛大なお心でお許しくださいませ。
そういえばエジプトは喫煙者が大変多くいらっしゃいます。嫌煙家の方々におかれましては、お越しの際には、ご留意くださいませ。
しかしエジプトは喫煙者がメチャクチャ多いね。ホテル内、路上、車中、どこでもみんなタバコ吸ってるし、吸い殻もぽいぽい捨てまくってる。今までいった国で一番喫煙率高いなぁ。一度観光に来て、タバコが嫌でもう来なくなる人も、一定数いそうだなぁ。
— (˘ω˘ )クソネミ (@r535m_m) 2017年12月20日
目次
振り返り
サトシ・ナカモトの論文を読んでみよう!!と思ったところが、要約の部分で早速つまづいたクソネミでございました。くそぅ、難しいぞ!!
ということで、言葉の意味とか概念を、一つずつ調べたり考えたりするコーナーがこちらになります。
以前ササっと目を通したところ、以下の言葉の意味が分からなかったのでございます。
プルーフ・オブ・ワーク(チェーン)
チェーン
CPUパワー
プール
ノード
プールとノードだけ残っているので、そいつらを調べて、やっと要約が終わるのでございますね・・・道のりは、長く険しいのでございます ( ˘ω˘ )
プールとは?
プール・・・泳ぐのかしら。とりあえずプールで調べると、マイニングプール、memory pool/mem poolなどという言葉が出てきます。
こんな時は、どっちも意味を調べて、論文の文脈に沿う方を採用するマン!!
マイニングプール
まずはビットフライヤーさんのHPから。
マイニングプールは、複数の採掘者(マイナー)で協力して採掘(マイニング)を行う仕組みを指します。マイニングプールでは、大勢が採掘に協力して条件をみたすナンスを探索します。
マイニングプールのサーバーから、ナンス以外のブロックヘッダーが与えられ、条件を満たすナンスを探索します。採掘の結果、得られた採掘報酬(コインベース)を各採掘者の貢献度に応じて分配します。
ふむぅ。論文が発表された当時は、マイナーという概念自体はあっても、マイニングプールという概念はなかったように思うでございますね。ビットコインが出来たばかりの時は、マイニングは個人のパソコンでちょろりちょろりと進んでいた程度のはずでございますので、論文の要約部分で言及されているのは、こちらではない気が致します。
memory pool/mem pool
ネットの世界は便利なものでございまして、このようなサイトがございました。勉強熱心で、且つ情報共有にあふれる皆様の崇高なる精神に、クソネミ感服致しました ( ˘ω˘ )
ビットコインとは何か? 第4回:ビットコインの仕組み(取引承認と採掘) - ビットコインの解説 | Bitcoin日本語情報サイト
ユーザーによって送信された取引は、すぐにメモリプール(memory pool, mempool)と呼ばれる場所に一旦溜め置かれます。メモリプールはマイナー(採掘者)と呼ばれる取引の承認者それぞれのコンピュータ内で別々に構築されます。
マイナーが受信したすべての取引は一時的にメモリプールに入りますが、署名された取引を検証し不正な取引を除外したり、同じアドレスから送金が複数回実行されるような重複する取引(二重支払い)を除外したりすることによって、不正な取引がブロックには組み込まれないようになっています。
ふむぅ。分かるような、分からないような。確か、ブロック(データのかたまり)には、以下のような情報が含まれているという理解で進めておりました。
この取引A, B C...というバラバラの取引が、memory poolという場所に貯めこまれて、承認作業(ナンスの発見競争)が行われるわけでございますね。フムフム。しかしこのサイト、大変勉強になりますな。
じゃあどうやって承認する順番を決めるんだい?というところなのですが、どうやら手数料が高いものから承認作業に組み込まれるようでございます。地獄の沙汰も金次第、ビットコインの送金も金次第、ということでございますね。世知辛いものでございます
( ˘ω˘)
ノードとは
またまたビットフライヤーさんのサイトから。
ビットコイン・ネットワークに参加しているプログラム一つ一つのことです。さらにマイニングを主体とするノード、ウォレット機能を主体とするノード、軽量化ウォレット(SPV)機能を主体とするノードなどの種類があります。
https://bitflyer.jp/ja-jp/glossary/node
安定の意味不明でございます。文系なめとんかい!!
悲しくなるほど、コンピューターとかプログラミングって、難しい言葉が多いでございますなぁ。皆様、こんなにムツカシイ言葉をさらさらーっと理解されているのでございますね。クソネミ、精進致しますぞ。
ネット上の辞書によると、[ Node:〔各部分の集まる〕中心点] とのことです。
天下のNTT様にお聞きしたところ、こんな説明がございました。
コンピュータ・ネットワークの世界で使われている言葉で、基本的にはネットワークの接合点とか中継点、分岐点などのこと。しかし一般に、ネットワークに接続されている機器を指すことも多い。
コンピュータ・ネットワークを木に例えると、幹にあたる幹線ケーブルがあって、そこから枝葉のようにパソコンやプリンタなどが接続されている。そして、幹から枝に分岐している部分がノードということになる。
ノード(node)を辞書で引くと、結び目、集合点、植物の節といった意味が出てくる。なんとなく分かるね。
しかし実際には、たとえば「20ノードのネットワーク」というと、そのコンピュータ・ネットワークに接続されているサーバー、パソコン、プリンタ、ルーターなどの機器が合計20台という意味になることが多い。
そして「50ノード程度」とか「200ノード規模」といえば、どのくらいの大きさのコンピュータ・ネットワーク(LAN)か察しがつく。
ははぁ。ネットワーク上の端末らしきことは、イメージがつくでございますね。でも、「ビットコインのネットワーク」って、具体的にはどこまでを指すのでしょうか。あと、P2Pネットワークの、ノードとピアの違いがよく分からないマンでございますよ。
皆様、こういうのをどうやって勉強されているのでございましょうかね。
ノードについて調べていたら、フルノードとか、SPVがどうとか、アーカイブノードとか、宇宙語が沢山出てまいりましたので、「ノードとはネットワークを繋ぐ節目(の端末)」ぐらいにしておくでございますよ。
おまとめ
3回にわたり、サトシ・ナカモト論文の要約部分だけを見てまいりましたが、いやはや、中々難しい内容でございました。ここらで、素人のクソネミが何とか理解出来た範囲を復習したいのでございます。
Abstract. A purely peer-to-peer version of electronic cash would allow online payments to be sent directly from one party to another without going through a financial institution
要約:純粋なPeer to Peer 電子通貨は、金融機関を経由することなく、ある関係者から別の関係者へ、直接の支払いを可能にする。
うむ、ここは以前も理解出来ていたのでOK。
Digital signatures provide part of the solution, but the main benefits are lost if a trusted third party is still required to prevent double-spending. We propose a solution to the double-spending problem using a peer-to-peer network.
デジタル署名は、限定的な解決策になりうる。しかし、信頼のおける第三者が、二重使用*を防ぐために介入を要求されるのであれば、主要なメリットは失われる。私は、ここでPeer to Peerネットワークを用いた二重使用への解決策を提案する。
ここも恐らく理解出来ていたので、OK。
信頼のおける第三者を取り除き、個人間でどのように(通貨の)やり取りが出来るかを考えていたわけですな。この問題提起だけなら、先行研究が多くありそうでやんすね。
*二重使用とは、一度使った(電子・仮想・暗号)通貨を、再利用することでございます。中身はデータなので、それを再利用できてしまうと、無限に儲かってしまうので、それを防ぐような第三者機関が通常は必要でございますね。
The network timestamps transactions by hashing them into an ongoing chain of hash-based proof-of-work, forming a record that cannot be changed without redoing the proof-of-work.
このネットワークは取引に、ハッシュベースの継続的なプルーフ・オブ・ワークチェーンにハッシュ値として更新日時を記録し、プルーフ・オブ・ワークをやり直さない限り変更できない履歴を作成する。
ココが当初は分からなかったでございますね。あるデータ(例えば前の取引のかたまり)を、ハッシュ関数という一方通行の関数に入力して、出てくるのがハッシュ値。食事とウンチの様な関係でございましょうか。ウンチから食事は作れませんからね。ナンス発見競争をして承認されたブロックが連続することで、取り引き内容が記録されていくと。
The longest chain not only serves as proof of the sequence of events witnessed, but proof that it came from the largest pool of CPU power.
最長のチェーンは、取引履歴を証明するだけでなく、それがCPUパワーの最大のプールから発せられたことを証明する。
あるブロックが承認され、それが連続しているということは、取引履歴が確認されてきたことを証明すると。そして、それはCPU(処理能力)が最も大きい人たちによって承認されていることを示す(から、ズルをした人達によって行われたものではない)、といった感じでございましょうか。
計算能力が低い(CPUパワーが小さい)ものだと、ナンス発見競争には勝てないし、そうするとブロックの承認は行うことが出来ない.・・・。ブロックの承認にはナンス発見競争が必要であり、それを効率的に発見するアルゴリズムが無いため、CPUの能力が高い(計算能力が高い)人が承認できる。だから、ズルをした人ではなく、ちゃんとしたプロセスを経て承認作業が行われていることを示しますよ、ということかしら。
As long as a majority of CPU power is controlled by nodes that are not cooperating to attack the network, they'll generate the longest chain and outpace attackers.
大多数のCPUパワーがネットワークを攻撃していないノードによってコントロールされている限り、最長のチェーンが生成され、攻撃者を凌駕する(上回る)。
ネットワークに攻撃をしていない(ルールにのっとっている)ノード、及びCPUが多数派であれば、正しいチェーンが続いて、記録の改ざんは出来ませんよ、ということでございましょうかね。少しココの理解があいまいでございます・・・。 attack the networkって、どんなことを、どのようにやるのでしょうか。ここらへんが良く分からないなぁ。
The network itself requires minimal structure. Messages are broadcast on a best effort basis, and nodes can leave and rejoin the network at will, accepting the longest proof-of-work chain as proof of what happened while they were gone.
ネットワーク自体は最小限の構成でよい。メッセージは最善努力原則で送信され、ノードはネットワークから離脱、再接続することができ、離脱していた間のイベントの証明として最長のプルーフ・オブ・ワークチェーンを受信する。
ノードとしての機能は、出入り(という表現が正しいのかしら)は自由、離脱後に改めて加わると、それまでに構築されている最新のチェーンを受信する、ということでしょうかね。
感想
ビットコ、難しくないでしょうか?!クソネミは理解するのに、とっても時間がかかってしまいました。その理解も、10%ぐらいの理解が、20%ぐらいになった程度のような気もしております。理解力に乏しいクソネミめを、どうぞお許しくださいませ( ˘ω˘ )
でも同時に、少し分かることが増えると、それによって理解できる文脈が増え、そこから更に理解が進める気もしております。別に技術系のブログではないので深くまでは突っ込めないのですが、クソネミと同じように「技術系の子とは全くわからないけど、なんだか暗号通貨に興味がある!!」というような方々と、面白おかしく少しづつ理解を深めたり、情報を集めたりできればと考えている次第でございます。
それでは皆様、来るクリスマスに控え、どうぞ体調にはお気を付け下さいませ。クソネミはクリスマスイブもクリスマスも関係のないエジプトで、粛々と仕事を進めて参ります・・・。それでは、グッバイなら(´・ω・`)でございます。