You x Tech 初の連載企画です。今回から数回かけてブロックチェーンを実装してみます。
先日説明したブロックチェーンについて実際にコードを書いて理解を深めてみましょう。
僕 python しか書けないから python がいい!
いいですよ。それでは python で実装していきましょうか。
ブロックチェーンに必要な機能
まずはブロックチェーンについてのおさらいからです。
どんな機能が必要だったか覚えていますか?
えっと、デジタル署名とハッシュ化、あとPoW!
お。いいですね。
では PoW の部分だけ補足説明をしますね。
ブロックチェーンではPoWとして特定の数値をくっつけることでハッシュ値の先頭n桁を0にできるその数値を探すことを採用しています。
ハッシュ値の先頭n桁を0にするの?
それって逆算したら簡単なんじゃないの?
いいえ。そうではないんです。
ブロックチェーンの説明では脱線してしまうので話さなかったのですが、ハッシュ化というのは限りなく逆算が難しい処理なんです。
逆算はできないのか…
え。したらどうやって探すの?
ランダムもしくは0から探します。
それじゃあ早く見つけられるかは運じゃん
はい。運です。
えぇ…
ここが PoW として使われる理由ですね。
処理能力だけによらないため誰かが一人勝ちしづらくなっています。
ここまでをまとめるとブロックチェーンに必要なのは
1. デジタル署名
2. ハッシュ化
3. PoW (先頭n桁を0にする特定値の探索)
という3つですね。
デジタル署名
でもデジタル署名ってなんなの?
そうですね。デジタル署名についてはここで少し解説しておきましょうか。
デジタル署名とは公開鍵暗号方式で実現される、作成者の証明と文章の改ざんがされていないことの証明を行える技術です。
公開鍵暗号方式?
公開鍵暗号方式とは、2つの鍵を使う暗号化・複合技術です。
一方の鍵で暗号化を行うともう一方の鍵で復元できます。
公開鍵暗号方式では、片方の鍵を公開します。
この時、公開する鍵を公開鍵、公開しない鍵を秘密鍵と言います。
秘密鍵で暗号化された文章は公開鍵でのみ復号ができるので、正しく復号ができると作成者であることが証明できるんですね。
今回のまとめ
今回は、ブロックチェーンを実装するにあたって必要な知識を補足しました。
デジタル署名・ハッシュ化・PoWについてだったね!
そうです!
これらの知識を用いて次回から実際にコードを書いてみましょうか。
コメント