Week3まとめ。カリフォルニア大学バークレー校 ビットコインと仮想通貨の無料講義超訳|Week3-6

前回までの記事はこちら

ーーーーーーーーーー

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

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

講義そのものにおいて、

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

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

 

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

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

 

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

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

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

 

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

今回の記事は、
Week3まとめについてお伝えします。

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

講義の要約

I. 暗号学的ハッシュ関数

今回の講義では、
ビットコインの仕組みについて説明しました。

ビットコインは分散型ネットワークが、
コンセンサスに達することを可能にした点が革新的でした。

それは不正改ざんの防止により達成されました。
つまり、ビットコインネットワークを通過する情報を変更することはできますが、
何らかの変更が加わったことが明らかになる仕組みがあるということです。

この改ざん防止システムにより、
ビットコインのアップデートが全ての人で同じであることを確認することができます。

 

私たちは、データの標準化されたランダムな「指紋」を生成するために、
暗号ハッシュ関数を使用して改ざん防止可能なシステムを実現しています。

データが変更された場合、指紋も変更されます。
暗号学的ハッシュ関数は、以下を実行します。

 

暗号学的ハッシュ関数は擬似ランダムです。

任意の入力に対する出力がランダムであるように見えますが、
出力はその入力に対して一貫しています。

 

暗号学的ハッシュ関数の暗号学的ハッシュ関数の重要な特性は以下の通りです。

  1. 原像計算困難性:H(x)が与えられた時、xの値を見つけることは計算上困難である。
  2. 第2原像計算困難性:xが与えられた時、H(x)=H(x’)となるような値x’を見つけることは計算上困難である。
  3. 衝突困難性:H(x)= H(y)となるようにxとyを見つけることは計算上困難である。

 

これらの特性は雪崩効果を生成します。
入力の小さな変化でも、出力の擬似乱数が大幅に変化します。

ビットコインが使用する特定のハッシュ関数はSHA256です。
これは2^64ビット未満のサイズの入力を受け取り、
256ビットの固定サイズの出力を生成します。

 

II. 改ざん防止用データベース

この暗号学的ハッシュ関数は、
ビットコインで改ざん防止されたデータベース全体を作成するために使用されます。

ビットコイン上のブロックのブロックヘッダは、
ブロック内の多くのコンテンツのハッシュです。

特に、マークルルート、前のブロックハッシュ、
およびナンスフィールドがあります。

マークルルートはトランザクションの要約を表し、
前のブロックハッシュは連鎖を表し、ナンスはProof-of-Workを表します。

 

マークルルートは、
以前のすべてのトランザクションのハッシュのバイナリツリー、
マークルツリーの頭です。

前のブロックハッシュは、
前のブロックのハッシュを含んでいます。

以前のトランザクションまたはブロックのいずれかが変更された場合、
これらのハッシュは両方とも変更されます。

 

ナンスはビットコインでのProof-of-Workを表しています。

それは部分的な画像のハッシュパズルを解くために、
見つけ出さなければならない数値です。

マイナーはブロックヘッダ(入力)全体をハッシュし、
ハッシュパズルを解決する出力が見つかるまで、
ナンスとコインベースを調整し続けます。

 

ハッシュパズルは次の3つの特徴を持つ必要があります。

  1. 計算上困難:ハッシュパズルの解を簡単に見つけることはできません。
  2. パラメータ設定可能:ハッシュパズルの難易度は調整可能です。
  3. 検証が容易:コンピュータがあまりに多くの作業をしなくても、答えが正しいことを確認することができます。

 

ビットコインのハッシュパズルの難しさは次の通りです。

difficulty = difficulty * two weeks / time to mine previous 2016 blocks

マイナーがパズルを解決すると、
コインベース取引でビットコインを受け取ります。

マイナーがブロックを生成するたびに、
まずマークルツリーの最初のトランザクションである、
コインベーストランザクションが作成されます。

 

暗号学的ハッシュ関数を使用して、
前のブロックが改ざんされていないことを確認します。

デジタル署名がどのようにして、
現在のトランザクションが、改ざんされていないかを確認するのに、
役立つかどうかに注目します。

ビットコインの公開鍵と秘密鍵は、
ECDSA(楕円曲線デジタル署名アルゴリズム)を使用して生成されます。

ECDSAには3つの重要な特性があります:

  1. 暗号化されたメッセージと送信者の公開鍵が与えられると、受信者はメッセージの発信元を特定できるはずです。 メッセージは送信者の秘密鍵で署名されているため、公開鍵を使用して暗号化する機能により、元の送信者がこのメッセージを承認したことが示されます。
  2. デジタル署名方式では、否認防止も保証する必要があります。送信者がメッセージに署名すると、元に戻すことはできません。
  3. 最後に、スキームは完全性を維持する必要があります。 メッセージは秘密鍵で署名されているため、署名後に変更することはできません。

ビットコインのアイデンティティは、
ランダムに生成される秘密鍵から派生します。

公開鍵は、曲線上の既知のジェネレーターポイントに対する、
秘密鍵の楕円曲線点乗算の結果です。

公開鍵が与えられれば、
秘密鍵に到達することは計算上不可能です。

 

私たちは秘密鍵と公開鍵の概念を適用して、
ビットコインのトランザクションの仕組みを理解することができます。

あなたが正当な償還者であるという証拠を付けて、
前回のトランザクションアウトプットを償還した後、
あなたが作成中のトランザクションのアウトプットを償還できる人物を指定する行為です。

 

トランザクションには3つの主要セクションがあります。

  1. メタデータ:ハウスキーピングデータ、このトランザクションの一意のID、ロックタイム、サイズが含まれている。
  2. インプット:以前に作成されたUTXOのリストと、このお金を引き換える資格の証明が含まれている。
  3. アウトプット:新しいアドレスに送信される新しいUTXOのリストが含まれている。 これらの値は、意図された償還者がロックを解除できるスクリプトによってのみロックされます。

 

ビットコインは、
スタックベースのチューリング-不完全言語のスクリプトを使用して、
トランザクションを作成します。

ロックおよびロック解除スクリプトは、
トランザクション入力および以前のトランザクション出力に含まれ、
以前のトランザクションの出力を引き換えたり、
トランザクションを引き換えるための要件を指定したりするために使用されます。

送信者はロックスクリプトを指定し、
受信者はロック解除スクリプトを指定します。

受取人は、Pay-to-Pub-Key-Hash(P2PKH)では、
「この公開鍵のハッシュにコインを送ってください」といいます。

受取人は、Pay-to-Script-Hash(P2SH)では、
「あなたのコインをこのスクリプトのハッシュに送ってください。
私はコインを償還するときにスクリプトを真と評価するための、
スクリプトとデータを提供します。」といいます。

後者はベンダー(受取人)が、
スクリプトの作成を担当する顧客とベンダー間の取引で一般的です。

 

Reading

Where is Double hashing performed in Bitcoin?

Princeton Textbook 5.1-5.4 (pg. 131 – 157) 

Bitcoin Wallets Explained: How to Choose the Best Wallet for You

(Optional) Bitcoin Developer Guide(There’s a lot; don’t try to read it all in one day) 

(Optional) Tech explained: Hash puzzles and proofs of work

(Optional) Secure Hash Standard (SHS)(Insane math: a blessing or curse depending on your preference)

 

宿題: ハッシュが衝突するとき

ビットコインは、
正当な計算能力の大部分などの特定の前提の下で動作します。

この最後の講義で説明した前提は、暗号化ハッシュが固有であり、
原像計算困難性、第2原像計算困難性、衝突困難性の特性を考慮したものです。

私たちが知っているようにコンピュータサイエンスを壊し、
あなたの好みの出力のように入力を見せる方法を考案したとしましょう。

正式には、あなたはあなたが好むようにH(y)の値を制御できるように、
常に入力yを構築することができます。

あなたは自由に衝突を作成することができます。
どのようにしてビットコインプロトコルを操作することができますか?

いくつかの答えがありますが、1つの例を示すだけでOKです。

以下のディスカッション掲示板のトピックでお互いの話し合いを自由にしてください。
テキスト入力に貼り付ける回答を採点します。

 

Week3 クイズ

Question 1

ビットコインで暗号化ハッシュ関数が必要なのはなぜですか?

  • Cryptographic hash functions make Bitcoin identities quantum resistant.
  • Cryptographic hash functions allow us to define a partial-preimage hash puzzle and the Proof-of-Work consensus mechanism.
  • Cryptographic hash functions make Bitcoin have a faster block time.
  • Cryptographic hash functions are a means of achieving standardized randomness.
  • Cryptographic hash functions are deterministic.
  • Cryptographic hash functions make Bitcoin turing complete

 

Question 2

SHA256dとはなんですか?

  • The fourth iteration of SHA256, after SHA256a, SHA256b, and SHA256c
  • The doubled result of a SHA256 hash (i.e. H(x) * 2)
  • Two concatenated SHA256 hashes (i.e. H(x) || H(x))
  • Running SHA256 twice consecutively on an input (i.e. H(H(x)) or H^2(x))

 

Question 3

 Proof of Inclusion とはなんですか?

  • In the context of cryptographic hash functions, the desired property of an arbitrarily large (inclusive) input space
  • In the context of Merkle Trees, a proof that a certain transaction has been included in the block
  • In the context of block headers, a proof that a nonce has been included in the block
  • In the context of blocks, a proof that a block is included within the blockchain

 

Question 4

secp256k1とはなんですか?

  • After SHA256 and RIPEMD160, Bitcoin’s third most significant cryptographic hash function
  • The elliptic curve used in all instances of ECDSA
  • The particular elliptic curve used for Bitcoin’s digital signature schemes
  • An instruction (opcode) in Bitcoin Script that verifies ownership of a public key

 

Question 5

この講義で触れたように、次のうちどれが Proof-of-Burnの最も良い記述ですか?

  • Taking a picture of your burning bitcoins as a means of establishing dominance on social media
  • An alternative name for Proof-of-Work, where miners “burn” computational resources
  • A proof that a double spend attack was successfully conducted by a miner or group of miners
  • The act of making some bitcoin permanently unusable (burning) for the sake of “etching” a message into the Bitcoin blockchain

 

あとがき

 

今週でやっと講義が折り返しです。

正直、今週のテーマは、
理解度が全然追いつきませんでしたね。

 

時間を見つけて、
リライトしたりするだろうなーと思っています。

次週はウォレット、マイニングについてなので、
もう少しわかりやすいことを期待します。

 

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

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

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

終わり。

 

次の記事
ビットコインユーザーの種類。カリフォルニア大学バークレー校 ビットコインと仮想通貨の無料講義超訳|Week4-1

コメントを残す

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

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

ABOUTこの記事をかいた人

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