🍣

Web3.0ブロックチェーン開発の学びメモ - 4日目

2024/01/07に公開

概要

こちらの記事の四日目です!

全体像の再確認

再度ブロックチェーンでの取引の全体像を再度確認します。

  • ① アドレスを作成
  • ② 取引が発生する(トランザクション)
  • ③ ネットワークに取引を伝える
  • ④ マイナーがブロックを構築
    • マイナーは未検証取引を集めて Nonce という使い捨ての数字の羅列を探しにかかる(これをプルーフオブワークという)
    • (上でも説明した通り、Nonce を一番最初に発見したマイナーはビットコインなどで報酬を受ける仕組み。)
  • ⑤ マイナーはブロックを構築するとネットワークにブロックを伝える。
  • ⑥ 上記で作成されたブロックがネットワーク内で検証され正しいと判断されるとブロックチェーンに取り込まれる。

ブロックチェーンの全体の流れ

今回は上記の ④ のネットワークがデータを共有していくところについて詳細を確認していきます。

ネットワークでのデータの共有について

トランザクションの共有

ではまず、③ の取引が発生した際にトランザクションデータをネットワークに伝えるところから見ていきます。
データがネットワークを伝わっていく順序は以下のようになります。

  • トランザクションデータを自分が接続しているどれかのノード(端末)に接続する
  • データを受け取ったノードはさらに他のノードにそれを伝える。
  • それを繰り返していくことでネットワーク全体にデータが伝わる。

このようにネットワークに参加している端末が相互に繋がり合うことを P2P(peer-to-peer)ネットワークという。

ノードの種類

ノードには 4 つの機能があり、どの機能を満たしているかによって、種類が変わってくる。

ノードの機能 4 種

ノードの機能としては以下の 4 つがあ流。

  • ウォレット:ウォレット、お金の支払い等の役割を担う機能
  • マイニング:その名の通り、マイニング機能を担う。
  • フルブロックチェーンデータベース:全てのトランザクションのデータが格納されている。
  • ルーティング:ノードがネットワークに接続するための機能。この機能については、どのノードも持っている。

代表的なノードの種類 3 種

  • フルノード:上記のノードの機能を全て持っているもの。
  • SPV ノード:ウォレットと、ルーティング機能を持つノード。お金の取引に特化したノード。
  • ソロマイナー:マイニング、フルブロックチェーンデータベース、ルーティング機能を持ったノード。名前のの通り、マイニングをするためのノード。

ノード間でトランザクションデータを共有する流れ

上記で記述したとおり、トランザクションが発生するといずれかのノードにトランザクションデータを送信しますが、ノード間では以下の手順でデータを共有していきます。

  1. 新しいトランザクションデータがあることを別のノードに伝える。(A ノード → B ノードへ送る例で考える。)これを inv という。
  2. B ノードから A ノードへデータを取得しにいく。これを getdata という。
  3. A ノードから B ノードへトランザクションデータを送る。これを tx という。
  4. B ノードからまた別のデータに向かって、inv をする。① と同じ。以降同様に次々へとノード間でデータが共有されていく。

ノードの送信イメージ

上記でネットワーク全体へ行き渡ったトランザクションデータはトランザクションプールというものの中にデータが格納される。
これはまだブロックにデータが格納されていないトランザクションデータが全て格納されている DB のようなもの。
このトランザクションプールはフルノードが持っており、データがネットワークへ行き渡る過程で、フルノードに当たった場合、データがプールされていく。

マイナーはこのトランザクションプールから取得し、マイニングしてブロックにデータを格納していく。ブロックにした後は、トランザクションプールのデータは削除する。

まとめ

今回はブロックチェーンのノードやネットワークについて見ていきました。
主要なノード、「フルノード」、「SPV」、「ソロマイナー」があり、それぞれ役割がありました!
またトランザクションデータがネットワークで共有される流れを確認していきました。
今日のところをこれくらいで!

GitHubで編集を提案

Discussion