Web3.0ブロックチェーン開発の学びメモ - 2日目
概要
こちらの記事の二日目です!
全体像の再確認
前回まとめたブロックチェーンでの取引の全体像を再度確認します。
- ① アドレスを作成
- ② 取引が発生する(トランザクション)
- ③ ネットワークに取引を伝える
- ④ マイナーがブロックを構築
- マイナーは未検証取引を集めて Nonce という使い捨ての数字の羅列を探しにかかる(これをプルーフオブワークという)
- (上でも説明した通り、Nonce を一番最初に発見したマイナーはビットコインなどで報酬を受ける仕組み。)
- ⑤ マイナーはブロックを構築するとネットワークにブロックを伝える。
- ⑥ 上記で作成されたブロックがネットワーク内で検証され正しいと判断されるとブロックチェーンに取り込まれる。
今回は上記の「① アドレスを作成」の詳細を確認していきます。
「アドレスを作成」の詳細
アドレスとは?
通貨の送付先のこと。銀行でいう、口座番号のようなもの。数字や文字の羅列で表現される。
アドレスはウォレットで電子署名により作成される。
アドレスが電子署名によって作成されることで、なりすまし、改ざん防止の役割を担っている。
ウォレットとは?
スマホアプリや Web サービスで利用される「送金」や「残高確認」ができるアプリケーションのこと。
iPhone にもデフォルトのアプリケーションとして入っていることがありますね。あまり使ったことはありませんが、そのことです。
アドレスの作成に用いられる電子署名とは
ここからは本格的に深掘るとセキュリティの話になって、それだけで年を越しちゃうので軽く触れていきます。
基本情報技術者試験などで問われるレベルの内容を理解していれば分かると思いますので、詳細は省きます。
電子署名は以下の技術により支えられている。
- 公開鍵暗号方式:なりすましを防ぐ
- ハッシュ関数:データの改ざん防止
これらの技術を用いてアドレスを作成することで、データの改ざんと本人によって送信されたか否かをチェックし、安全に取引を行っている。
ウォレットでアドレスが作成される手順
- 秘密鍵の作成
- 公開鍵の作成
- アドレスの作成
の順でアドレスが作成されていく。
公開鍵の生成には秘密鍵が必要であり、アドレスの生成には公開鍵が必要というイメージ!
秘密鍵の作成方法
秘密鍵は OS の乱数生成器と呼ばれるものを用いて作成される。
詳細は省略しますが、簡単に説明するとキーボードやマウスから行われる入力の発生間隔等からを OS は乱数として保持している。
この乱数を用いて 256 ビットの乱数を生成する。これは非常に大きな数字(10 進数で言うと 78 桁の数字の羅列)のため、被る可能性は相当に低い。
公開鍵の作成方法
まず秘密鍵から公開鍵が作成される。しかし、公開鍵から秘密鍵を計算するのは非常に困難であり、現実的な時間では計算できない。
どのような仕組みで上記を実現しているかについては、詳細は省略しますが、楕円曲線暗号という計算方式が使われています。
重要なのは、
・秘密鍵から公開鍵を算出するのは容易。
・公開鍵から秘密鍵を算出することはほぼ不可能。→ よって、公開鍵を公開するからと言って、秘密鍵がバレることはない。
ということです。
アドレスの作成方法
アドレスは公開鍵を元に以下のような手順で作成されます。
- 公開鍵をハッシュ化
- SHA256 と公開鍵にかけ、その後さらに RIPEMD160 をかけてハッシュ化
- ハッシュ化したものを人が読みやすい形に変換する。 - Base58Check と言われる方式で変換。(BASE64 というアルファベット、数字、記号をもとに人の読みやすい形に変換する方式から間違えやすい文字(l と I, o と 0 など)を除いたもの。)
→Base58Check で変換された結果がアドレスとなる
まとめ
- アドレスはウォレットで作成される。
- アドレスは電子署名によって作成される。
- 電子署名では以下の技術が使用されている。
- 公開鍵暗号方式
- ハッシュ化
Discussion