Web3.0ブロックチェーン開発の学びメモ - 4日目
概要
こちらの記事の四日目です!
全体像の再確認
再度ブロックチェーンでの取引の全体像を再度確認します。
- ① アドレスを作成
- ② 取引が発生する(トランザクション)
- ③ ネットワークに取引を伝える
- ④ マイナーがブロックを構築
- マイナーは未検証取引を集めて Nonce という使い捨ての数字の羅列を探しにかかる(これをプルーフオブワークという)
- (上でも説明した通り、Nonce を一番最初に発見したマイナーはビットコインなどで報酬を受ける仕組み。)
- ⑤ マイナーはブロックを構築するとネットワークにブロックを伝える。
- ⑥ 上記で作成されたブロックがネットワーク内で検証され正しいと判断されるとブロックチェーンに取り込まれる。
今回は上記の ④ のネットワークがデータを共有していくところについて詳細を確認していきます。
ネットワークでのデータの共有について
トランザクションの共有
ではまず、③ の取引が発生した際にトランザクションデータをネットワークに伝えるところから見ていきます。
データがネットワークを伝わっていく順序は以下のようになります。
- トランザクションデータを自分が接続しているどれかのノード(端末)に接続する
- データを受け取ったノードはさらに他のノードにそれを伝える。
- それを繰り返していくことでネットワーク全体にデータが伝わる。
このようにネットワークに参加している端末が相互に繋がり合うことを P2P(peer-to-peer)ネットワークという。
ノードの種類
ノードには 4 つの機能があり、どの機能を満たしているかによって、種類が変わってくる。
ノードの機能 4 種
ノードの機能としては以下の 4 つがあ流。
- ウォレット:ウォレット、お金の支払い等の役割を担う機能
- マイニング:その名の通り、マイニング機能を担う。
- フルブロックチェーンデータベース:全てのトランザクションのデータが格納されている。
- ルーティング:ノードがネットワークに接続するための機能。この機能については、どのノードも持っている。
代表的なノードの種類 3 種
- フルノード:上記のノードの機能を全て持っているもの。
- SPV ノード:ウォレットと、ルーティング機能を持つノード。お金の取引に特化したノード。
- ソロマイナー:マイニング、フルブロックチェーンデータベース、ルーティング機能を持ったノード。名前のの通り、マイニングをするためのノード。
ノード間でトランザクションデータを共有する流れ
上記で記述したとおり、トランザクションが発生するといずれかのノードにトランザクションデータを送信しますが、ノード間では以下の手順でデータを共有していきます。
- 新しいトランザクションデータがあることを別のノードに伝える。(A ノード → B ノードへ送る例で考える。)これを inv という。
- B ノードから A ノードへデータを取得しにいく。これを getdata という。
- A ノードから B ノードへトランザクションデータを送る。これを tx という。
- B ノードからまた別のデータに向かって、inv をする。① と同じ。以降同様に次々へとノード間でデータが共有されていく。
上記でネットワーク全体へ行き渡ったトランザクションデータはトランザクションプールというものの中にデータが格納される。
これはまだブロックにデータが格納されていないトランザクションデータが全て格納されている DB のようなもの。
このトランザクションプールはフルノードが持っており、データがネットワークへ行き渡る過程で、フルノードに当たった場合、データがプールされていく。
マイナーはこのトランザクションプールから取得し、マイニングしてブロックにデータを格納していく。ブロックにした後は、トランザクションプールのデータは削除する。
まとめ
今回はブロックチェーンのノードやネットワークについて見ていきました。
主要なノード、「フルノード」、「SPV」、「ソロマイナー」があり、それぞれ役割がありました!
またトランザクションデータがネットワークで共有される流れを確認していきました。
今日のところをこれくらいで!
Discussion