ビット編集長の初心者まるわかり講座 #07「PoWって?」



前回はブロックチェーンの大枠とこれからの応用について解説しました。

そのブロックチェーンについて教えてもらう中で、誰が「取引をまとめて、前のブロックとの整合性をとるのか」はいろいろな方法で決まるというのをカレンちゃんは覚えていました。

今回はビットコインでの承認方法「PoW」について教えてもらうようです。承認方法はいろいろあるのですが、このPoWの問題点を改善する形で生まれてきたものです。

少し難しい内容ではありますが、カレンちゃんと一緒にわかりやすく教えてもらいましょう。

ブロックチェーンをおさらい

カレンちゃん
編集長!この前ブロックチェーンの説明をしてもらったときにわからないことがありました!
ビット編集長
ん?なんだ?
カレンちゃん
たしか、「本を作るときにはたくさんの取引情報をまとめる人がいて、そのめんどくさい作業をしてくれる人を決める方法がたくさんある」って言ってましたよね?
ビット編集長
そうだな。
カレンちゃん
その方法について知りたいんです!
ビット編集長
まあいろいろな種類はあるが、、

それを知ってどうするんだ?

カレンちゃん
そうですね、、、

単純にどういう風にブロックがつながっていくのかを知りたいんです!

ビット編集長
そうか。じゃあ今回は、一番初めに誕生した承認方法である「PoW」について解説していこう。
カレンちゃん
ありがとうございます!
ビット編集長
「PoW」の説明でとくに

  • PoWってなに?
  • ハッシュってなに?
  • ナンスってなに?

を紹介していこう!

PoWってなに?

カレンちゃん
PoWが一番最初に誕生した承認方法ってことは、ビットコインに使われてるってことですか?
ビット編集長
まさしくその通りだ。

基本的に承認方法はめんどくさいからその承認をしてくれた人には報酬が出るんだ。

カレンちゃん
ええ!?報酬が出るんですか?

めっちゃいいじゃないですか!

ビット編集長
その分たいへんってことなんだけどな

PoWとは

カレンちゃん
PoWってなんていう英語の頭文字なんですか?
ビット編集長
Proof of Work」の頭文字だ。
カレンちゃん
「仕事の証明」ですか?あんまりどういう意味かわからないですね、、
ビット編集長
その名前の通り、仕事をしたってことが承認につながるんだ。

前のブロックと今回のブロックがあってるかどうか確認するって言っただろ?

カレンちゃん
はい。
ビット編集長
それを「すごい量の計算をしたら答えが出てくる」っていう確認方法にしてあるのがPoWだ。
カレンちゃん
「すごい量の計算」ですか。めちゃめちゃふわふわしてますね

他にはどんなのがあるんですか?

ビット編集長
「いっぱい持ってる人が選ばれる」PoSとか、「取引に貢献してる人が選ばれる」PoIなどたくさんあるんだ。
カレンちゃん
聞いたけどあんまりわからなかったです。

また今度教えてくださいね!

マイニングは儲かる

ビット編集長
PoWに話を戻そう。
その「すごい量の計算」のことを「マイニング」って言って、マイニングをする人のことを「マイナー」と呼ぶ。
カレンちゃん
マイニングですか、、、

マイニングって英語でどういう意味でしたっけ?

ビット編集長
マイニングは「採掘する」っていう意味だな
カレンちゃん
なんで「採掘」なんていう言い方するんですか?
ビット編集長
さっきも言った通りマイニングをした人には報酬としてビットコインが支払われるんだ
カレンちゃん
めっちゃいいじゃないですよね!
ビット編集長
いま現在、マイニングをしたことによって支払われるビットコインは12.5BTC。日本円でいうと625万円くらいだな。
カレンちゃん
625万!?やばすぎますね…
ビット編集長
でもさっき言ったみたいに、マイニングにはすごい計算量が必要なんだ

ハッシュってなに?

カレンちゃん
私 数学は得意でしたよ!

本気を出せばなんとかなるんじゃ…!

ビット編集長
いや、数学とかそういうのじゃないんだ。

ハッシュっていう特別な計算をしないといけない。これは暗号を導くために使われる計算方法なんだ。

カレンちゃん
「ハッシュ」ってどんな計算なんですか?
ビット編集長
例えば「ビットコイン」っていう文字をハッシュ化すると、「544e8c7c057342d9d265248f62b2c26b5f139f4c」っていう不規則な文字列になるんだ。
カレンちゃん
本当にめちゃくちゃですね。

まさしく暗号って感じがします。

ビット編集長
ハッシュっていうのは、「ある文字を不規則な文字列に暗号化すること」っていうのが正しい説明だな。

ハッシュしたことによって出てきた不規則な文字列のことを「ハッシュ値」っていうことも覚えておいてくれ。

カレンちゃん
なるほど!ハッシュの意味はわかりました!

ハッシュの特徴

カレンちゃん
ハッシュがマイニングのときに使われるのはなんでですか?
ビット編集長
さっき言ったみたいに、ビットコインをハッシュ化して出てきたハッシュ値があるだろ?

そのハッシュ値から、もともとの「ビットコイン」っていう文字は逆算できないようになってるんだ。

カレンちゃん
じゃあハッシュ値があってもなにを意味しているのかっていうのはわからないんですね!
ビット編集長
そうだな。これを「不可逆性」っていうんだ。

それとハッシュ値は、もともとの文字が少しでも変わると全く別の値になるんだ。

カレンちゃん
、、、と言いますと?笑
ビット編集長
さっき「ビットコイン」をハッシュ化したら「544e8c7c057342d9d265248f62b2c26b5f139f4c」だっただろ?

今度は「ビットコイン.」をハッシュ化したら「3a83f3bfc03a9b149b4afd5a9fa524a1bd188b18」になるんだ。

カレンちゃん
全く別のものになってます!
ビット編集長
これがハッシュの特徴の2つ目で、少しでも内容が変わったらハッシュ値は全く別のものになってしまうんだ。これによって、改ざんしようとしてもはっきりわかるんだ。

ハッシュとマイニングをおさらい

カレンちゃん
ここまででもう一回 マイニングの説明をしてもらってもいいですか?
ビット編集長
ハッシュを踏まえて説明しよう。

まず、新しいブロックの中には「前回のブロックのハッシュ値」「今回の取引データ(トランザクション)」「ナンス」の3つが入っているんだ。

カレンちゃん
「ナンス」がわからないですけど、とりあえず進んでください。
ビット編集長
その3つの情報が入っている状態のブロックをハッシュ化したらまたハッシュ値が出てくるのはわかるな?
カレンちゃん
そうですね。
ビット編集長
その出てきたハッシュ値がある値よりも小さい数字になったらマイニングは成功で、報酬がもらえるんだ。
カレンちゃん
な、なるほど、、
ビット編集長
前提として、前回のハッシュ値と今回のトランザクションの値はすでにわかっているよな?

思い出して欲しいのが、ハッシュ値は逆算できないってことだ。

カレンちゃん
ある値よりも小さい値をハッシュ値で求めたいのに、逆算できないのはちょっとめんどくさいですね
ビット編集長
そうだ、だからナンスに適当な数字を入れていって、ある値よりも小さい値になったとき、そのナンスが正しいものだと判断されて、マイニングが成功ってなるんだ。
カレンちゃん
完全に不規則にハッシュ値が出てくるから、マイニングに計算量が必要なんですね!
ビット編集長
その通り。計算にかかる仕事量によって承認できるかどうかが決まるからPoWって呼ばれるんだ。

ナンスを求めるって何?

ビット編集長
よし、じゃあマイニングの最終段階だな
さっきも言った通り、マイニングはナンスを求めることを言うんだ。

その説明をしていこう

カレンちゃん
(もう頭がパンクしそう、、)

ナンスとは?

カレンちゃん
ナンスって、そういう単語があるんですか?
ビット編集長
いや、ナンスっていうのは「number used once」のことを略した呼び名だ。
カレンちゃん
「使い捨ての数字」て感じですか?
ビット編集長
まさしくその通りだ。

マイニングでは、このナンスを誰よりも速く計算した人がマイニング成功になるんだ。

ナンスとハッシュの関係性

カレンちゃん
具体的にはナンスとハッシュには関係があるんでしたっけ?
ビット編集長
よし、マイニングの流れに沿って説明していくぞ。

ブロックの中にはなんのデータが入っていたか覚えているか?

カレンちゃん
「前回のブロックのハッシュ」と「今回の取引データ(トランザクション)」と「ナンス」の3つでしたね。
ビット編集長
そのとおり。マイナーたちは、その3つのデータをハッシュすることで新しくハッシュ値を求めるんだったな。
カレンちゃん
ハッシュ値がある値よりも小さい数字になればいいんでしたっけ?
ビット編集長
そうだ。具体的に言うと「00000000000bb33e4503837cd4f5da63」のように0がたくさん前についているこの数字よりも小さいハッシュ値になるようなナンスを求めるんだ。
カレンちゃん
ハッシュ値は不可逆性があるから、条件を満たすようなナンスを求めるには適当な数字をナンスに入れていくしかないんですよね
ビット編集長
だから、いかにたくさん計算をするのかが、誰よりも速くナンスを見つけることにつながるんだ。
カレンちゃん
それがPoWなんですね!
ビット編集長
ここまでPoWについて勉強してきたらわかると思うが、この膨大な量の計算量があるからこそ、データの改ざん防止につながるんだ

ナンスを求める過程にヒントがあるんだがわかるかな?

カレンちゃん
ブロックのデータで書き換えをする場合ってトランザクションの内容を変更しますよね?

っていうことは、ハッシュの特性でそのブロック全体のハッシュ値が変わってしまうから、ナンスの値も当然変わってきますよね?

ビット編集長
完ぺきだ。
カレンちゃん
ナンスの値が変わるってことは、「最初に与えられたある値よりも小さい値にする」っていうのが守られていない状態になってしまうってことですよね?
ビット編集長
そうだ。それは問題だな。
カレンちゃん
だから、改ざんする人は最適なナンスを求めなおさなきゃいけない。でもそれには時間がかかるから改ざんできないってことですね。
ビット編集長
そうだな、そのブロックの書き換えが済んだとしても、その次にあるブロックにはその改ざんしたブロックのハッシュ値も入っているから、その次のブロックのナンスも変更しないといけない。

そんなことをしている間にもブロックの生成は行われているから、改ざんするインセンティブがないってことだ。

カレンちゃん
コンピュータをがんがんに使っているから電気代もすごいですしね

第5回をまとめる

カレンちゃん
今回勉強したのはPoWについてでした!
とくに

  • PoW
  • ハッシュ
  • ナンス

について教えてもらいました!

ビット編集長
今回勉強したことはすべてPoWの仕組みについてだったな。

ハッシュやナンスという言葉はかなり専門的な内容になるから、マイニングの流れにおいてその単語はどこを指しているのか、はっきりと理解しておく必要があるな。

カレンちゃん
この仕組みを勉強したことって使うときありますかね?
ビット編集長
直接この内容をつかうことはあまりないかもしれないな。

だが、PoWなどの承認方法についてはいろいろな場面で使うことがあるから、その仕組みまで理解できていることは話の理解につながるだろう。

カレンちゃん
次はPoW以外の承認方法も教えてもらいたいです!

カレンちゃんはPoWに関してしっかりと理解したうえでほかの承認方法についても知りたくなったようです。

ビット編集長も言った通り、ハッシュやナンスといった知識を使うことは少ないかもしれませんが、それを知っておくことでほかの承認方法についても理解がより深まるものだと思います。

しっかりと復習しておいてくださいね!

次回はPoSやPoIなどの承認方法について解説します!




Coin Infoの公式Twitterアカウントをフォローする

Coin Infoの公式Twitterアカウントをフォローすることで、ニュースなどの速報情報や、Coin Infoの新着記事の通知などを受け取ることができます。

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です