弱気相場におけるテクノロジーの学習—《マイニング = POW = プルーフ・オブ・ワーク》

弱気相場におけるテクノロジーの学習—《マイニング = POW = プルーフ・オブ・ワーク》

「ビットコイン:480,000ページの元帳」では、通貨の本質は会計方法であり、ビットコインは分散型会計方法であると述べられています。では、このアカウントを誰がどのように管理するのか、という疑問が生じます。

回答:マイナーはマイニングによってアカウントを保持します。

「採掘」という言葉を聞くと、人々が最初に抱く印象は、鍬とサーチライトを持ち、暗い地下で掘っている黒い肌の鉱夫たちの集団だろう。無数のカチャカチャという音がした後、突然、鉱夫が透明な宝石や黄金を手に取り、「見つけた、見つけた」と叫びます。これは映画や小説の筋書きです。現実には、ブロックチェーン ネットワークの世界では、「マイニング」という言葉は正確には使用されていません。

しかし、今や「マイニング」という言葉が人々の心に深く根付いてしまったので、これからも語り続けざるを得ません。

「マイニング」とは、実際にはビットコインなどのデジタル通貨の計算と発行を表す比喩的な名前です。この行動の背後にある実際の行動は、インターネット上の無数のコンピュータがアカウントを記録し、特定の問題を解決する権利を求めて競争していることです。問題を最初に解決したコンピューターは、ネットワーク全体のすべてのコンピューターの監視下でアカウンティング(ブロックのパッケージ化)を完了し、ネットワーク報酬としてビットコインを受け取ります。

それで、問題は何でしょうか?

特定のブロックのブロックヘッダーの特別なハッシュ値を見つけることです。この特別なハッシュ値は、事前に設定されたターゲット値よりも小さくなければなりません。

この文章をどう理解しますか?

便宜上、簡単な例を挙げてみましょう。ブロックチェーンの世界では、SHA256と呼ばれるアルゴリズムが使用されています。その特徴は、任意のステートメントが与えられた場合、アルゴリズムを通過するとハッシュ値を取得できることです。

たとえば、「power overlooking」(StarCraft をプレイしたことがある人ならこの人が誰なのか知っているでしょう、笑)と入力すると、SHA256 アルゴリズムの後、32 バイトのハッシュ値が得られます。

'8fe12dec3dc8433bfe04ca1e4381feaa58d30c5ece06d37756d88face23aa3e1'

sha256 アルゴリズムの特殊性により、このステートメント内の文字を変更、追加、または削除すると、出力ハッシュ値が変わります。

たとえば、元の文の後に「1」を追加し、「power overlooking1」と入力すると、新しい 32 バイトのハッシュ値が得られます。

'd9e940764a410ecf7eae1f27a63248070ab45292e41de1cdfc89433ba2c20ac7'

さあ、目標を設定しましょう。ステートメントの末尾の数字を変更することで、出力される 16 進ハッシュ値の最初の桁は 0 になります (256 ビットのバイナリ ハッシュの最初の 4 桁がすべて 0 になるのと同じです)。以下は、文末に異なる数字の繰り返し処理を実装し、要件を満たすハッシュ値をカウントする簡単なコードです。

コードは次のとおりです

図1

プログラムを実行し、ステートメント「power overlooking」と数字「4」をそれぞれ入力します。数字「4」は、対象のハッシュ値の最初の 16 進桁が 0 であることを意味します。

図2

上記の操作結果から、

- ターゲットハッシュ値は次のとおりです。

0×1000000000000000000000000000000000000000000000000000000000000000

- 合計 32 回の計算が行われ、条件を満たすハッシュ値が 2 回出現しました。これは、平均すると 16 回の計算ごとに 1 つのハッシュ値です。これは、16 進数は 0 から 16 (0 から f) までの任意の数字を表すため、要件を満たす末尾の数字が発生する確率は 1/16 になるからです。

プログラムを再度実行して「show me the money」と入力すると、数字「4」が「8」に変更されます。これは、ターゲットハッシュの最初の2ビットがすべて0であることを意味します(または、256ビットバイナリの最初の8ビットがすべて0です)。

- ターゲットハッシュ値は次のとおりです。

0×0100000000000000000000000000000000000000000000000000000000000000

・合計1024回の計算が行われ、条件を満たすハッシュ値が5回出現しました。データの量が十分ではありません。十分に大きい場合、発生確率は 1/256 になるはずです。

したがって、ルールは非常に明白です。ハッシュ値の 0 ビットが多くなるほど、目標を達成するために必要な計算が多くなります。たとえば、ビットコイン ブロックチェーンのブロック 477016 のデータの場合、そのハッシュ値は次のようになります。

00000000000000000097cf400e2634e1b42cb0b55bbd25476a3e97a5e0d481d5

バイナリに変換すると 72 ビット必要となり、正しいハッシュ値はおよそ 4.7×10^21 回の計算ごとに 1 回出現することになります。正しいハッシュ値を得るために末尾の値を変更して計算を繰り返し実行するこの方法は、プルーフ・オブ・ワーク・メカニズム (POW プルーフ・オブ・ワーク) と呼ばれ、末尾の継続的に繰り返される数値はノンス値と呼ばれます。

では、実際のブロック ヘッダー ハッシュはどのように計算されるのでしょうか?

ブロック ヘッダー ハッシュ値の実際の計算には、次の 6 つのデータが使用されます。

図3

最初の 5 つは既知の値で、バージョン番号、前のブロックのハッシュ値、ジェネシス ブロックから現在までのタイムスタンプ、ルート マークル値、難易度マークです。

マークル値は、ブロックにパッケージ化されるのを待機しているすべてのトランザクションによって再帰的に生成される値です。詳細については、Day2 の記事を参照してください。さまざまな理由により、ネットワーク上の異なるマイニング マシンでは、パッケージ化を待機しているブロックに異なるトランザクション レコードとタイムスタンプが存在する場合があります。

ビット難易度マークは、ビットコイン ネットワーク全体が自ら調整するパラメーターです。調整の基準となるのはビットコインの総量と年間生産量です。サトシ・ナカモトの計画によれば、ビットコインの総量は2100万で、採掘量は4年ごとに半減する。このパラメータは、このリズムを維持するために作成されます。 2 つの機能があります。

まず、ネットワーク全体のハッシュ レートがどれだけ高速であっても、2 つのブロックの生成間隔が常に約 10 分に保たれるようにします。

2 番目に、このパラメータは、パッケージ化を待機しているブロックのターゲット ハッシュ値でもあります。

ブロック番号 477016 に戻ると、その難易度目標は 18015dcc です。最初の 2 桁は累乗で、最後の 6 桁は係数です。次の式を展開すると、目的の HASH 値を取得できます。

計算式:ターゲットハッシュ=係数*2^(8*(指数-3)

係数=0x015dcc

指数=0×18

ターゲットハッシュ=

0x00000000000000000015dcc00000000000000000000000000000000000000000000

次に、ブロックヘッダーのノンス値を反復し、目標値より小さいハッシュを見つけます。

式は次のとおりです。

ハッシュ=SHA256(SHA256(ブロックヘッダー))

ブロック ヘッダー = 16 進リトルエンディアン (バージョン情報 + 前のブロック ヘッダー + ルート マークル + タイムスタンプ + 難易度ターゲット + nonce 値)

ただし、16 進数のターゲット ハッシュには合計 17 個のゼロがあるため、2 進数に変換すると、0 ビットは 72 個になります。 4.7×10^21 回の計算ごとに、およそ 1 つの正しいハッシュ値が生成されますが、これは非常に異常なことです。ただし、ビットコイン ネットワーク全体の現在のハッシュ パワーは -6200Ph/s であり、これは 1 秒あたり 6.2×10^18 回のハッシュ計算を実行できることを意味します。したがって、各ブロックの生成時間は約 750 秒、つまり 12.5 分となり、これはビットコインの各ブロックの生成時間 -10 分よりもわずかに長くなります。このリズムはビットコイン ネットワークの鼓動です。

一般的なラップトップの計算能力は約 1*10^8 回/秒です。このデータは正確ではないかもしれませんが、それは問題ではありません。なぜなら、このような異常なハッシュ計算能力の要件によれば、ゼロが 1 つ多いか 1 つ少ないかによって、15 万年または 150 万年の違いが生じるからです。これは、人間の短命な存在にとっても同じです。

ただし、正しい nonce が見つかり、ハッシュ値がターゲットより小さいと計算されると、誰もが同じパラメータ セットを使用して計算が正しいかどうかを確認できます。例えば、ブロック477016の場合、そのブロックヘッダー情報は次のようになります。

図4

式 hash=SHA256(SHA256(ブロック ヘッダー)) に従って、Python コードを次のように記述します。

図5

実行後、以下の6つの情報をそれぞれ入力します。

バージョン情報

前のブロックヘッダー

ルートマークル

タイムスタンプ

難易度ターゲット

ノンス値

ブロック番号477016のハッシュ値と等しいハッシュ値を取得します。

00000000000000000097cf400e2634e1b42cb0b55bbd25476a3e97a5e0d481d5

図6

マイニング マシンが正しいハッシュ値を計算すると、ブロックのブロック ヘッダーが正常にパッケージ化されたことを意味し、成功したマイナーはネットワークからビットコインの報酬を受け取ります。失敗したマイニングマシンは次のブロックの計算を開始し、上記のプロセスを繰り返します。

まさに計算量が膨大であるからこそ、いわゆるプロフェッショナルマイニングマシンが登場したのです。これらはすべて、ビッグデータ コンピューティングに非常によく似たプロフェッショナル GPU アレイを備えています。実際、このような大量の同種データは、GPU を使用するとより高速かつ効率的に移動できます。ビットコインの鉱山は通常このように見えます。非常に多くのプロフェッショナルなマイニングマシンが連携して稼働すると、エネルギー消費量は驚くほどになります。
図7

前述のように、ビットコイン ネットワーク全体のハッシュ パワーは -6200Ph/s です。この電力により、世界中のマイニングファームは1時間あたり230万kWh以上、年間190億kWhの電力を消費します。現在の国内の民間電力消費量は約0.55元/kWhです。この価格に基づくと、年間の電力消費量は105億人民元となる。現在のビットコインの年間生産量は約66万で、1コインあたりの価格が2万8000人民元なので、その価値は約180億人民元になります。

電力消費量が非常に大きいため、コストを削減するために、ほとんどの鉱山は、電気料金が約0.35元/kWhである中国南西部などの水力発電が豊富な地域に建設されています。下の写真は西部の奥地にある鉱山の外観です。周囲の景色と相まって、本当に「鉱山」のように見えます。
図8


以下は上記のコードです。 Python インターフェースをお持ちの場合は、自宅に持ち帰って試してみることができます。

#ハッシュノンス
ハッシュライブラリをインポートする

text = raw_input(“文章を入力してください:”)
# nonce を 0 から xxx まで反復する
難しい = raw_input(“0~32の数字を入力してください:”)
bit=int(難しい)
カウント=0
リスト=[]
ターゲット=2**(256ビット)
hextar=hex(ターゲット)
xrange(4*(2**bit))内のnonceの場合:
# テキストの末尾に nonce を追加します
入力 = テキスト + str(nonce)

# 入力のSHA-256ハッシュを計算します(テキスト+ノンス)
ハッシュ = hashlib.sha256(入力).hexdigest()
# 入力とハッシュ結果を表示
入力を印刷、'=>'、ハッシュ
long(ハッシュ、16)<ターゲット:
カウント=カウント+1
リストに追加(ハッシュ)

print "ターゲットを満たすハッシュが %d 個あります"%(count)
print "ターゲットハッシュは:", hextar
「次のハッシュはターゲットを満たしています:」と出力します
in リストの場合:
印刷する

#ハッシュカル
ハッシュライブラリをインポートする

#入力を求める
ver = raw_input(“バージョン番号の6桁を入力してください:”)
phash = raw_input(“前のブロックのハッシュを入力してください:”)
rmerkle = raw_input(“ルートマークル値を入力してください:”)
t = raw_input(“時間をデジタルで入力してください:”)
bits = raw_input(“16進数のビット数を16進数で入力してください:”)
nonce = raw_input(“デジタル nonce 値を入力してください:”)
#時間とノンスをintに変換する
t = int(t) です。
n = int(ノンス)
#すべての入力を16進数形式に変換し、小数点以下を省略
sver=”0x”+str(ver)
hexver = sver[2::].decode('hex')[::-1].encode('hex')
hexphash = phash.decode('hex')[::-1].encode('hex')
hexrmerkle = rmerkle.decode('hex')[::-1].encode('hex')
hextime=hex(t)[2::].decode('hex')[::-1].encode('hex')
hexbits = bits.decode('hex')[::-1].encode('hex')
hexnonce = hex(n)[2::].decode('hex')[::-1].encode('hex')
「hexver は:」と印刷します。hexver
「hexphash は:」と印刷します。hexphash
「hexrmerkle is:」と印刷します。hexrmerkle
「hextime is:」と印刷します。hextime
「hexbits is:」と表示します。hexbits
「hexnonce は:」と出力します。hexnonce
#ハッシュ値を計算する
header_hex=(hexver+hexphash+hexrmerkle+hextime+hexbits+hexnonce)
header_bin = header_hex.decode('hex')
ハッシュ = hashlib.sha256(hashlib.sha256(header_bin).digest()).digest()
new_hash = ハッシュ[::-1].encode('hex_codec')
「ハッシュは:」と出力します。new_hash

冬が近づいています。テクノロジーについてもっと学び、次の春に備えましょう


<<:  Huobi.comとOKCoinがすべての仮想通貨事業を停止。プラットフォーム管理者は一時的に北京を離れることが許可されていない

>>:  JPモルガン・チェースは、ヨーロッパでビットコインを秘密裏に低価格で購入したことを否定。顧客が自ら購入したのだ!

推薦する

カナダ、デジタル通貨マイニング規制を制定する可能性

BTCMANAGERによると、カナダのピエール・モローエネルギー大臣は5月30日、ケベック州の水力発...

サトシ・ナカモトの真正性をめぐる論争は50億ドルを巻き起こした。デイブ・クライマンは暗い人生に立ち向かう戦士だ

過去2日間、オーストラリア人の「サトシ・ナカモト」クレイグ・ライト氏が再び問題を起こしている。まず、...

「Xiyu.com」仮想通貨投資詐欺が発覚

「Xiyu.com」仮想通貨投資詐欺が発覚-----沙湾の100人以上がKコインの「富の神話」の夢を...

セイシェル警察、23万ビットコインの送金を捜査するよう要請

セイシェル警察は、ワンコイン・ポンジー・スキームとされる23万ビットコインの送金事件の捜査を要請され...

3032人が起訴:最高人民検察院の報告書で初めて仮想通貨マネーロンダリングに言及

3月8日、最高人民検察院の検察総長である応勇氏は第14期全国人民代表大会第3回会議で報告を行った。報...

ブロックチェーン技術と法律専門職の4つのレベル

ブロックチェーンは、新しいネットワーク情報技術として、最近私たちの視野に頻繁に登場し、クラウドコンピ...

楽天のアンケートでお金とポイントを稼ぎ、現金報酬と交換しましょう

有料オンラインアンケート調査プラットフォーム「楽天インサイト」は、楽天グループ傘下の専門的な市場調査...

元ビットコイン保険ブローカーがセキュリティ詐欺で告発される

1年前、ビットコイン業界はまだ初期段階にあり、プラットフォームはユーザーの資金を適切に保護することが...

ニューヨーク州のビットコインライセンスは依然として有効、テオッキーノ氏のNYDFSに対する訴訟は却下

ゴールデンファイナンスニュース - 5月4日、ビットコイン財団のエグゼクティブディレクターは、ルーシ...

ブロックチェーンデジタル認証プラットフォームWISeID: 2030年までにすべての人に合法的なデジタルIDを提供

6月7日、スイスのサイバーセキュリティ企業WISeKeyは、ブロックチェーン技術をベースにしたデジタ...

日本におけるビットコイン規制:新たな規制枠組みが暗号通貨の促進要因となる可能性

暗号資産の盗難に遭った人々がハードドライブを梱包する光景は、スマートな服装をした銀行員が荷物箱とオフ...

米国のインフレデータは「混乱」を引き起こすだろう 今週ビットコインについて知っておくべき5つのこと

ビットコインの価格が低迷する中、CPIなどの強力なデータの組み合わせにより、今週は問題のある週となっ...