Web3.0ブロックチェーン開発の学びメモ - 3日目
概要
こちらの記事の三日目です!
全体像の再確認
再度ブロックチェーンでの取引の全体像を再度確認します。
- ① アドレスを作成
- ② 取引が発生する(トランザクション)
- ③ ネットワークに取引を伝える
- ④ マイナーがブロックを構築
- マイナーは未検証取引を集めて Nonce という使い捨ての数字の羅列を探しにかかる(これをプルーフオブワークという)
- (上でも説明した通り、Nonce を一番最初に発見したマイナーはビットコインなどで報酬を受ける仕組み。)
- ⑤ マイナーはブロックを構築するとネットワークにブロックを伝える。
- ⑥ 上記で作成されたブロックがネットワーク内で検証され正しいと判断されるとブロックチェーンに取り込まれる。
今回は上記の「② トランザクション」について詳細を確認していきます。
「トランザクション」の詳細
トランザクションとは
こちらはいいですね!実際に行われる取引のこと、またはその内容のことです!
トランザクションの流れ
- 取引が実行される。→ トランザクションデータが作成され、本人によって署名される。
- ネットワークに取引を伝えられる。
- マイナーが未検証の取引を集めて、ブロックに記録する。
- データが記録されたブロックがネットワークに伝えられる。
- 十分な数のノードに承認されると、トランザクションが受け入れられチェーンに繋がる。→ 取引成立。
トランザクションの構造
- input
- 送り主の電子署名と公開鍵
- 送金の金額情報
- output
- 送り先のアドレス
- 送金の金額情報 - 送り主のアドレスとお釣りの金額
ここで疑問なのですが、なぜ output にお釣りが発生するの?ちょど送ればいいじゃん?って思ったんですが、どうやらそれには UTXO という未使用残高を管理する仕組みが関係しているようです。
未使用残高を管理する UTXO とは
UTXO はブロックチェーン上で残高を管理する仕組みです。
上記でなぜお釣りが発生するのか?と疑問を持ちましたが、イメージとして UTXO は一つのまとまりでお金を管理し、そのまとまりで使用されます。
例:
例として A さんが 10BitCoint 持っており、 B さんに 5BitCoin 送る場合を想定してみます。
上記のように A さんは 10BitCoin をそのまま送金し、その差分をお釣りで受け取ります。上記の通り、トランザクションが成立する毎にマイナーに対する手数料がかかるので、B さんに送るコイン+マイナーに対する手数料が A さんが支払う合計になります。
実際のやり取りはもう少し複雑で、A さんが 10BitCoin 持っていた場合、2, 3, 5 のように UTXO の中で分けて管理されているイメージです。
要は output が毎回 UTXO に 1 レコードとして登録されていくイメージですね!
その 1 レコード毎でしか使用できない。1 レコードに記録されている金額の半分だけ使うみたいなことはできないってことですね!
手数料の決まり方
上記で少し記述しましたが、トランザクション毎にマイナーに対する報酬として手数料が発生します。
この手数料は不要なトランザクションを避けるためのスパム防止にもなっています。
手数料は高いほど、マイニングの優先順位が上がります。つまり手数料が高いほど早く取引が成立できるというわけです!
まとめ
今回はトランザクションについて概要を学びました。
Discussion