ビットコインテクノロジーの原理

目次

ビットコインの台頭

1.物々交換

2. 物理通貨

3. シンボル通貨

4. 中央システム仮想通貨

5. 分散型仮想通貨

ビットコインの原理

3 つの主要な問題

質問 1 - 簿記の必要性

質問 2 - 誰が勝つか

質問 3 - 偽造を防ぐ方法

RSAアルゴリズム

デジタル署名

ビットコインの長所と短所

アドバンテージ:

欠点がある

参考リンク

パワーポイント:

ビットコイン技術の紹介 PPT (xinanzhijia.xyz.)

ビットコインの台頭

ビットコインの上昇は2008年11月1日のオタク論文に端を発しており、著者は今のところ自分の身元を明らかにしていない。この論文は、分散型通貨であるビットコインの概念を提案しています。

このアイデアは、当時の金融危機の状況ではクレイジーだと考えられていましたが、数え切れないほどの愛好家や洞察力のある人々の支援により、今では現実になりました。ビットコインの取引は爆発的に増加しただけでなく、何千もの仮想通貨の誕生にも影響を与えました。

では、なぜ分散化したいのでしょうか? これは最初から始めなければなりません。

1.物々交換

昔、田舎では人々が物々交換の生活をしていました。

2. 物理通貨

価値観が一致しないという問題があるため、私たちは一律に価格を決め、金や貝殻など稀少で割りやすいものを通貨として取引に使用しています。

3. シンボル通貨

現時点ではまだ問題があり、通貨自体が持ち運びに不便であったり、磨耗したりするなど多くの問題があり、錬金術や貝殻収集など通貨の収集には多くの金銭的および物的資源を消費します。このとき、誰かが解決策を提案しました。私たちは本物の金で取引する必要はありません。信頼できる機関 (村の委員会など) を見つけて、「1 グラムの金」が記載された紙幣を発行してください。 -紙幣の偽造マーク 誰もが紙幣を使って取引します。

4. 中央システム仮想通貨

今の問題は明らかに一時的な解決策で根本的な原因ではありませんが、欲深い人間は取引のために紙幣を持ち歩くのが面倒なので、ある人が改善法を提案しました。実際に通貨取引を行う必要はありません。たとえば、現時点で信頼できる代理店を見つけ、村人全員の残高を数え、将来的にはこの信頼できる代理店に取引を直接報告します。この信頼できる機関は、すべての取引を記録し、全員の残高を計算する責任があり、誰もがこの「信頼できる機関」を信頼しています。

5. 分散型仮想通貨

しかし、そんな良い時代も長くは続かず、誰もが信頼していた「信頼できる機関」が汚職問題を起こし、中央システムである仮想通貨システム全体が崩壊しましたが、人々はすっかり「信用できない」生活様式に慣れてしまっていました。現金取引を行っています。どうすればよいでしょうか...

この時、オタクのサトシ・ナカモトがデビューした。

ビットコインの原理

トランザクションをシミュレートします。これは次の台帳の形式に抽象化できます。

支払者 支払金額 受益者 ... (検証フィールド)
アリス 10BTC ボブ
ボブ 5BTC チチ
チチ 2BTC デビッド

誰もがアカウントを保持しており、取引記録を保存するためにブロックを使用します。各ブロックのサイズは 1M で、約 4000 件のトランザクション レコードを保存できます。このブロックを前のブロックに接続すると、ブロックチェーンが形成されます。

  • Pre Hash: 前のブロックのハッシュ値。

  • Nonce: ブロックのハッシュ値が要件を満たす値、つまりマイニング計算の結果。

  • トランザクション データ: ブロック内のトランザクション データ。

3 つの主要な問題

  • なぜアカウントを保持するのですか?

  • 誰が勝つでしょうか?(ネットワーク遅延)

  • 偽造を防ぐにはどうすればよいですか?

質問 1 - 簿記の必要性

なぜアカウントを保持するのですか? 簿記をすると報酬があるからです。すべてのビットコインの最終的な供給源は簿記、つまりマイニングです。また、取引の記録には一定の手数料がかかります(現在の銀行手数料よりもはるかに少額です)。ビットコイン トランザクション システムは、10 分ごとにトランザクション ブロックをパッケージ化することを想定しており、2008 年にジェネシス ブロックが登場してからは、パッケージ化されたブロックごとに 50 ビットコインを取得でき、その後 4 年ごとに半分になります。したがって、次のようになります。

50 \times 6 \times 24 \times 365 \times 4 \times(1+\frac{1}{2}+...+\frac{1}{2^n}) \約 2100w

ビットコインは最終的に2100万枚発行される。

質問 2 - 誰が勝つか

この問題を明確に説明するには、マイニングの原理を理解する必要があります。sha256()まず、リンクを使用して次のような関数を導入します。

ハッシュ関数

sha256()任意の文字列を 256 ビットのハッシュ値に変換できるハッシュ アルゴリズムであり、次のような主な特徴があります。

1. 不可逆性

ハッシュ関数は不可逆的であり、具体的な不可逆性は次のように比較できます。

y=x^8+log_6x+sin(x)+cot(x)

x が与えられれば、y を簡単に計算できますが、y を与えて x を反転すると、大惨事になります。

2. 小さな変化、大きな変化

import hashlib
​
message = "Hello, world!" # 待计算哈希值的消息
message2 = "Hello, w0rld!"
hash_object = hashlib.sha256(message.encode('utf-8'))
# 获取哈希值(以16进制表示)
hex_dig = hash_object.hexdigest()
​
print(hex_dig)  # b94d27b9934d3e08a52e52d7da7dabfac484efe37a5380ee9088f7ace2efcde9
print(hex_dig2) # 3FBE0E7AA29A4A4071A2DD78E2A02AD6209D23CEC2F861BE75D24B72462D911B

入力のわずかな変化がハッシュ値に大きな変化を引き起こすことがわかります。

3. 耐衝突性

適切に設計されたハッシュ関数の場合、2 つの異なる値が計算後に同じハッシュ値を生成する確率は非常に低くなります。

採掘プロセス

マイナーはまずトランザクション レコードを取得し、レコードが一定の数に達した後で文字列の計算を開始します。この文字列は、ブロック ヘッダー + 請求書 + 開始時刻 + 乱数で構成されます。

次に、Hash=sha256(sha256(string)) を計算します。ただし、成功したとみなされるには、計算結果のハッシュの最初の n 桁が 0 でなければなりません。

文字列の最初の 3 つの部分は任意に変更できず、ハッシュ関数を元に戻すことはできないため、最初の n 桁がすべて 0 であることを満たす文字列が計算されるまで、乱数を繰り返しテストすることしかできません。その後、マイニングが成功したと見なされます。ハッシュ値は最初の 3 つの項目の影響を受けるため、マイニングはある程度運に関係しますが、さらに重要なのは、対応する乱数を見つけるための計算能力に依存することです。

同様に、n の値が大きくなるほど、マイニングが難しくなることがわかります。マイナーが 10 分以内にブロックを梱包できるようにするため、ただし梱包プロセスはそれほど簡単ではありません。現在、n=66 に設定されています。

ビットコイン マイニングの全体的なフローチャートは次のとおりです。

要約すると、すべてのトランザクションはマイナーによってパッケージ化されたブロックに基づいていると結論付けることができます。

質問 3 - 偽造を防ぐ方法

偽造防止は、非対称的に暗号化されたデジタル署名に基づいています。最も一般的な非対称暗号化は RSA アルゴリズムです。

RSAアルゴリズム

 アルゴリズムの暗号化と復号化のプロセスは次のとおりです。

  1. p、q で示される、等しくない大きな素数のペアを選択します。

  2. 計算するN = p \times q

  3. 計算する\phi(N) = (p-1)\times(q-1)

  4. \ファイ(N)互いに素な整数 e を選択します。

  5. φ(N) に対する e の逆元 d を計算します。

  6. 公開鍵 KU = (e,N)、秘密鍵 KR = (d,N) 括弧内は最大公約数ではなく式であることに注意してください。

質問の例は次のとおりです。

  1. p=3、q=11 とします。

  2. N=p \times q = 33

  3. \phi(N) = (p-1)(q-1) = 20

  4. \phi(N) と比較的素な数を選択します。e=3 を選択します。

  5. 次のような d を見つけますed \equiv 1 \mod \phi(N)。解決策は次のとおりです。d \equiv 7 \mod 20

  6. 公開鍵 KU = (e,n) = (3,33) 、秘密鍵 KR = (d,n) = (7,33)

平文 M=20 の場合、暗号化は20^3 \mod 33 = 14、復号化はです。14^7 \mod 33 = 20

デジタル署名

ビットコインの取引プロセスにおけるデジタル署名の操作プロセスは次のとおりです。

まず、A はビットコイン アカウントを登録し、自分の公開鍵と秘密鍵のペアを取得します。A は自分の取引情報をハッシュして要約を取得し、その要約を自分の鍵で暗号化して暗号文を取得します。

その後、A は一連の情報をインターネットにブロードキャストし、トランザクション情報 + 自分の公開キー + 暗号化された暗号文というメッセージの認証を全員に求めます。

他のユーザーは、まずトランザクション情報に対してハッシュ演算を実行して要約 1 を取得し、次に A の公開鍵を使用して暗号文を復号し、復号された平文の要約 2 を取得します。ダイジェスト 1 とダイジェスト 2 が同じであれば、トランザクションは true です。ブロードキャスト メッセージを偽造したい場合、暗号文を作成できないため、ハッシュ関数を元に戻すことができないため、暗号解読の結果は偽のトランザクション メッセージになります。同じ理由で、このメッセージは A によってのみ送信できます。なぜなら、この暗号文を作成するための独自の秘密鍵を持っているのは A だけだからです。

ビットコインの長所と短所

アドバンテージ:

  1. 分散化: ビットコインは中央機関や政府によって規制されておらず、トランザクションはネットワーク内のノードによって維持および検証されます。

  2. プライバシーの保護: ビットコインは公開鍵暗号化技術を使用してユーザー情報とプライバシーを保護します。

  3. トレーサビリティ: すべてのビットコイン取引はブロックチェーンに記録され、取引履歴を追跡できます。

  4. 低いインフレ率:ビットコインの総量は約2,100万枚に制限されているため、インフレ率は非常に低く、一定の価値維持機能を持っています。

欠点がある

  1. セキュリティの問題: ビットコインの盗難、紛失、ハッキングのリスクは依然として存在しており、ユーザーは自分のビットコイン秘密鍵を保持する必要があります。

  2. トランザクション速度の制限: ビットコイントランザクションはブロックにパッケージ化され、トランザクションが確実に成功するまで6ブロック待つ必要があります。4,000 件のトランザクション レコードが 10 分ごとにパッケージ化されますが、1 秒あたり約 7 件のトランザクションしか完了できません。現在、この問題を解決するために、ビットコインはブロックを 1M から 8M に変更することを目指して新しいプロトコルを立ち上げており、そのプロトコルは現在も推進されています。

参考リンク

codingLabs - ビットコインがどのように機能し、どのように機能するかを物語で説明します

https://coinmarketcap.com/zh/rankings/exchanges/

https://assets.pubpub.org/d8wct41f/31611263538139.pdf

<iframe src="//player.bilibili.com/player.html?aid=45247943&bvid=BV1Bb411B7dq&cid=79224469&page=1" scrolling="no" border="0" frameborder="no" framespacing="0" allowfullscreen="true"> </iframe>
<iframe src="//player.bilibili.com/player.html?aid=45597148&bvid=BV12b411q7ku&cid=79839195&page=1" scrolling="no" border="0" frameborder="no" framespacing="0" allowfullscreen="true"> </iframe>
<iframe width="560" height="315" src="https://www.youtube.com/embed/bBC-nXj3Ng4" title="YouTube video player" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share" allowfullscreen></iframe>
<iframe width="560" height="315" src="https://www.youtube.com/embed/BODyqM-V71E" title="YouTube video player" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share" allowfullscreen></iframe>

おすすめ

転載: blog.csdn.net/qq_52504945/article/details/130330925