ウォレットの仕組み。カリフォルニア大学バークレー校 ビットコインと仮想通貨の無料講義超訳|Week4-3

前回までの記事はこちら

ーーーーーーーーーー

こんにちは!クレメア(@cremea_tw)です。

前回に引き続き、カリフォルニア大学バークレー校の無料講義、
「ビットコインと仮想通貨のオンライン講座」で学んだ内容をシェアしていきます。

講義そのものにおいて、

読者対象:ビットコインや仮想通貨について詳しく知りたい全ての人
前提知識:不要

という感じなので、
講義内容を読むだけでもかなり理解が深まるのではないかと思います。

 

文章のスタイルとしては、
翻訳ではなく、個人的解釈バリバリの超訳をしていきます。

荒削りですがスピード重視で、
クレメア的な解釈も交えてお伝えするので、
間違いや意見などあればコメントいただければと思います。

 

また、太字や文字色などの文章の装飾は極力していません。

学びの本質はそこではない、時間がもったいない、あとでできる、
ということで、今回は泣く泣くカットしました。

見辛いかもしれませんが、予めご了承ください。

 

ということで、
講義の内容に沿って進めます。

今回の記事は、
ウォレットの仕組みについてお伝えします。

それでは、本題に入っていきましょう。

イントロ:ウォレットの仕組み

私たちは現在、ウォレットが、
アイデンティティを管理するのを助けることを知っています。

ブレインウォレットやペーパーウォレットの場合、
その背後にあるアイデアは単純なので、特に説明することはありません。

あなたの秘密鍵のコピーを書くかプリントするか、
ニーモニックや秘密鍵を派生させる方法があります。

しかし、ウォレットソフトウェアに関しては、もう少し複雑です。

このセクションでは、いくつかのウォレットの仕組みと、
お気に入りのビットコインウォレットアプリでどのように機能を有効にするかについて説明します。

 

SPV:簡易的な支払い確認

ウォレットソフトウェアを使用すると、
ビットコインブロックチェーン全体をダウンロードする必要はありません。

SPVはSimple Payment Verificationの略で、
すべての取引を含むブロック全体ではなく、
各ブロックのブロックヘッダをダウンロードするだけで、
特定の取引(具体的には自分の取引)がブロックに含まれているかどうかを確認する方法です。

これは、ストレージ容量に制約されているクライアントにとっては、
ブロックチェーン全体を格納せずに動作できるため、特に便利です。

あなたの典型的なビットコインスマートフォンウォレットアプリを想像してみてください。

ブロックチェーン全体が保存されているわけではありません。

代わりに、あなたの鍵を追跡するためのウォレットと、
ビットコインのP2Pプロトコルに接続できる、
ネットワークルーティングコンポーネントがあります。

これはすべてブロックチェーンなしで行われます。

このため、SPVを実行するクライアントを、
軽量クライアントまたはシンクライアントと呼びます。

 

SPVでは、ブロックヘッダを使用することで、
マークルproof of inclusionを実行することができます。

これについては、前のモジュールで、
改ざん防止用データベースのセクションで説明しました。

SPVを使用する際に考慮する必要がある主な理由の1つは、
入ってくるブロックヘッダが誤ったチェーンのものではないということです。

あなたが受け取るブロックヘッダが偽であるか無効である場合、
有効と見なされるトランザクションは実際にはそうではなく、
誰かがあなたを二重支払いにする可能性があります。

ありがたいことに、入ってくるブロックヘッダが、
誤ったチェーンから来たものではないと仮定するのは大丈夫です。

多くの異なるノードに接続する限り、
悪意のあるエンティティによって制御される各ノードの確率が大幅に低下します。

現実的には、電話機やその他の軽量デバイスに、
ブロックチェーン全体を配置する余裕がないため、
シンクライアントをSPVで稼働させることはかなり相応しいトレードオフです。

 

マルチシグ

以前のモジュールでは、
スクリプトハッシュでの支払いに関しての講義で、
マルチシグネチャについて言及しました。

これについて再度説明し、その潜在的な用途について詳述します。

まず、マルチシグは、
M-of-Nトランザクションと呼ばれるものを可能にします。

簡単に言えば、マルチシグは、
参加者間で鍵を暗号的に共有する手段であり、障害点を分散する役割を果たします。

家族や家族と財布を共有したいと思っている場合は、
想像してみてください。

 

たとえば、2-of-3 マルチシグを考えてみましょう。

私は友人のデリックとグロリアと、
2-of-3 のマルチシグを持っていると想像してください。

私たちのうちの2人だけが、
それを送るためにトランザクションでサインオフする必要があります。

3つの鍵のうちの少なくとも2つが必要なので、
誰も私たちのビットコインを持ち逃げすることはできません。

 

次に、例えば、
自分自身で3つのマルチシグをセットアップしたとしましょう。

その場合、私が1つの秘密鍵を失い、
私の資金をすべて失うことはありません。

1つの秘密鍵を失った後、
私はまだ3つの合計キーのうちの2つを持っているので、
私は2-of-3マルチサインスキームで資金にアクセスするのに十分な鍵をまだ持っています。

 

別の例として、一部の取引所およびソフトウェア財布会社は、
2-of-3または3-of-5 multisigサービスを提供しています。

2-of-3 multisigのケースでは、2つの鍵を保持し、
会社などの信頼できる第三者が第3の鍵を保持します。

取引所は1つの鍵しか持っていないので、
あなたの資金を使うことはできませんが、
あなたの鍵の1つを失った場合は、鍵を払い戻して資金を回収することができます。

あなたが想像することができるように、
これは5の3または他の3-of-5 multisigについても同様に機能します。

 

鍵生成の最良事例

一般的に仮名を再利用しないことが、
ベストプラクティスと考えられています。

これを行うには、
トランザクションごとに新しい公開鍵と秘密鍵のペアを生成する必要があります。

あなたは、あなたが所有しているビットコインと、
そのビットコインを費やしていたものを判断することがより難しくなるように、
これをしたいと思っています。

 

また、トランザクションごとに新しい公開鍵と秘密鍵のペアを生成せず、
すべての資金が1つのIDに関連付けられていたとします。

その際、対応する秘密鍵を失うとすぐに、
すべての資金が消えます。

資金を複数のアイデンティティーに分散することが
ベストプラクティスです。

秘密鍵はすべて乱数であるため、
それぞれの鍵は独立して存在しています。

また、公開鍵と秘密鍵は計算的には簡単に生成できるので、
なぜすべてのトランザクションに対して新しい公開鍵と秘密鍵を生成しないのでしょうか?

これはビットコインのユーザーエクスペリエンスを節約するうえで、
潜在的に役立つ可能性がある小さな努力です。

ウォレットソフトウェアは一般にこれを処理して、
ベストプラクティスに準拠するのがずっと簡単です。

 

JBOKウォレット

ベストプラクティスを遵守している場合、
すなわち作成するすべてのトランザクションに対して、
新しい公開鍵と非公開鍵を生成する場合、
自然と発生する問題は次のようなことです。

これは特に頻繁な取引をしている場合に当てはまります。

それはコントロールするべきキーの数が、
管理しきれないほどに増えていく問題です。

従来の方法では、
JBOKウォレットとして知られているものを使用していました。

JBOKは、「単なるキーの束」の頭字語です。

JBOKウォレットの背後にあるアイデアは、
すべてのトランザクションを作成した後、
生成する新しいキーペアの新しいバックアップを作成するということでした。

また、あらかじめ生成された一連のキーで始めることもできます。

ただし、これらのキーをすべて使い切った後も、
より多くのキーを生成する必要があります。

JBOKウォレットは、
各キーのペアをすべて格納する必要があるため、あまり便利ではありません。

あなたが取引所であり、
何千人ものユーザーが絶えず取引している場合を考えてみましょう。

あなたは非常に多くの鍵やさらに多くのバックアップを扱わなければならないでしょう。
それはかなり扱いにくいと考えられます。

 

HDウォレット

たくさんのキーを持つ代わりに、
もう少し賢い方法を試してみましょう。

元のシード値からキーを導出する方法を、
考え出すことができたらどうでしょうか?

 

それがHDウォレット、
すなわち階層的決定性ウォレットの背後にあるアイデアです。

そこで、ランダムに生成されたシード値から始めます。

これから各単一の鍵をバックアップするのではなく、
オリジナルのシードを知っている限り、新しい鍵のペアを確定的に生成することができます。

このシードをマスターキーと考えることができます。

私たちは最初にマスターキーを生成し、
次に生成する各キーについてマスターキーのハッシュを、
いくつかのカウンターまたはインデックス番号で取得し、
次に派生した子キーに到達します。

 

たとえば、3番目の子キーを生成する場合は、
マスターキーに3を追加して全体をハッシュします。

マスターキーは親キーであると考えることができ、
そこから生成されるキーはすべて子キーです。

また、物事をより面白くするために、
子キーを親キーとして使用して、さらに多くの子キーを生成することもできます。

ランダムにではなく、既知の方法で鍵を生成することで、
すべての鍵を追跡しなければならないWalletの負荷を大幅に軽減します。

特に取引所などの何千もの鍵を扱う場合は特にそうです。

もちろん、取引所はHDウォレットを使用して負荷を大幅に削減できますが、
HDウォレットは他の場所でも便利です。

 

階層構造を持つ組織を想像してください。
大統領にマスターキーをコントロールさせてもらうと想像してください。

マスターキーから、
各部門ヘッドの子キーを生成することができます。

部門長のキーから、
部門の従業員ごとに子キーを再度生成することができます。

鍵は階層的な方法で導出されるため、
親鍵を管理する誰かが子鍵を派生させることができ、
その鍵を支出することができます。

私たちの階層組織では、
組織内の全員が以前定義したHDウォレットを持っていれば、
部長は部門ヘッドのキーから従業員キーが生成されたので、
部署の従業員の財布から消費することができます。

そして大統領が最も力を発揮することが考えられます。

誰の鍵も何らかの形で大統領のマスターキーから生まれたので、
大統領は誰の財布からも支出することができます。

 

Quick Check 1

次のうち、ウォレット頭字語とそれらの語句が正確に一致するものはどれですか?

  • JBOK: Just a Bunch of Keys
  • JBOK: Just Bitcoin Online Keys
  • HD: High Definition
  • HD: Heckin’ Doggos
  • HD: Hierarchical Deterministic

 

あとがき

 

暗号通貨はやはり、
秘密鍵の管理が一番ネックですね。

リスクが不透明なのと、
ユーザーが前提知識を有してないのもあり、
今後も色々と問題が起きてきそうな気がします。

 

逆に、秘密鍵の管理について、
有効な手段が出てきたら、
より一層暗号通貨が世に浸透していきそうですね。

 

ってことで、
今回はこの辺で失礼します。

このブログを書く僕の目的は、
「ファンを作ること・仲間を増やすこと」です。

趣味が合う、気が合う、考え方が合う。
なんかええなーと思ったら、気軽にメッセージください。喜びます。

終わり。

 

次の記事
マイニングの仕組み。カリフォルニア大学バークレー校 ビットコインと仮想通貨の無料講義超訳|Week4-4

コメントを残す

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

このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください

ABOUTこの記事をかいた人

物語の引き金を引く男 / 「てめえの人生に火をつける」 / プロ火付け役 / 腐れニートからの再始動 / 見知らぬ人にMacBook Proを買った人 / 32日で100記事達成 / ただの足跡を伝説に変えていく男 / Youtubeで #クレメアラジオ 不定期配信 / サロン「裏世界」オーナー 参加希望者はDMまで