マイニングと同様に、ビットコインマイナーは実際に何を解決していますか?彼らがハッシュを解決していると読みましたが、それは本当にどういう意味ですか。彼らが何を解決しているのかわかりますか?誰かがビットコインマイニングマシンが解決しようとしていることの例を挙げてもらえますか?
コメント
- 関連: bitcoin.stackexchange.com/q/148/153
- わかりましたが、どのデータをマイニングしていますか?誰も知らないようです。 ‘どのように機能するかは気にしません。ビットマイニングからデータがどこから来ているのかを知りたいのですが、復号化または暗号化です。
回答
ブロックに入るランダムなナンス(少しランダムなデータ)を見つけようとし、ブロックに(SHA256)ハッシュを(バイナリで)持たせます)は、特定の量の0から始まります。ゼロが多いほど、ハッシュはまれになります。適切なハッシュの結果は予測できないため、適切なナンスを見つけるために何度も試行する必要があります。
ゼロの量は、ブロックを見つけるのがどれほど難しいかによって決まります。ビットコインでは、10分ごとに新しいブロックを持つように調整されます(平均して、前のブロックが見つかる速度を考えると)。
興味深い:ハッシュは予測できないため、ナンスがどのように変化するかは問題ではありません。 !ほとんどの場合、0から上向きに数えるだけです!
回答
これは非常にです問題の簡略化されたスケッチですが、問題が何であるかについてかなり良いアイデアが得られるはずです。
データ:
これは最新のブロックのハッシュです(30文字に短縮):
00000000000001adf44c7d69767585
これら含まれるのを待っているいくつかの有効なトランザクションのハッシュです(短縮されています)。
5572eca4dd4 db7d0c0b845
これは、作成したばかりの1つの特別なトランザクションのハッシュで、25BTCになります。 (現在の報酬)自分へ:
916d849af76
次のブロックの構築:
ここで、新しいブロックがどのように見えるかについての大まかな概算を使用しましょう(実際のブロックはバイナリ形式を使用します)。これには、前のブロックのハッシュとこれら3つのトランザクションのハッシュが含まれています。
00000000000001adf44c7d69767585--5572eca4dd4-db7d0c0b845-916d849af76--
では、手動でマイニングを実行しましょう。これを完了することが目標です。新しいブロックのハッシュが13個のゼロで始まるようなナンス(ゴミの一部)でブロックします(前のハッシュを考慮すると、13個のゼロが現在の難しさのようです!)。
マイニング(このブロックを完成させようとしています):
nonce = 1で試して、ハッシュを計算しましょうブロックの(私はmd5ハッシュアルゴリズムを使用していますが、ビットコインはダブルsha256を使用しています):
> echo "00000000000001adf44c7d69767585--5572eca4dd4-db7d0c0b845-916d849af76--1" | md5sum 8b9b994dcf57f8f90194d82e234b72ac
運が悪い、ハッシュは0で始まらない…nonce = 2で試してみましょう
> echo "00000000000001adf44c7d69767585--5572eca4dd4-db7d0c0b845-916d849af76--2" | md5sum 5b7ce5bcc07a2822f227fcae7792fd90
運がない…
…
nonce = 16の場合、最初の先行ゼロを取得します。
> echo "00000000000001adf44c7d69767585--5572eca4dd4-db7d0c0b845-916d849af76--16" | md5sum 03b80c7a34b060b33dd8fbbece79cee3
nonce = 208の場合、2つの先行ゼロを取得します!
> echo "00000000000001adf44c7d69767585--5572eca4dd4-db7d0c0b845-916d849af76--208" | md5sum 0055e55df5758517c9bed0981b52ce4a
このように続けます…最終的に13個の先行ゼロを持つハッシュを見つけたら…あなたは勝者です!他の鉱夫があなたのブロックの上に構築されます。あなたは「25BTCを手に入れました。
しかし、あなたは速くなければなりません!
ステップ1に戻る…
誰かがあなたの前にブロックを構築することに成功した場合、あなたは新しいブロックから最初からやり直す必要があります「ハッシュ(勝者の1つ)。
コメント
- また、あなたの例は概念的に正しい方向に向かっていますが、本当の成功はヘッダーのsha256ハッシュがターゲットよりも小さい場合。ターゲットの例:
00000000000001ae00000000000000
が00000000000001adf44c7d69767585
<より大きい-これは有効なハッシュになります。 - @Reonarudo、正確ではありませんが、これは実際に行われていることの非常に単純化されたスケッチです。トランザクションは、多くの場合アドレスから作成されるスクリプトを使用して行われます。ビットコインwikiで詳細を確認できます。
- これは基本的には素晴らしい(簡略化された)要約のように聞こえますが、ビットコインネットワークはどの時点でこれを受け入れますか次の有効なブロックとして、2人の異なる鉱夫がほぼ同時に有効なブロックを送信することができた(ありそうもない)イベントではどうなりますか?
- うわー、素晴らしい答えです! ‘まだ頭を動かすことができなかったことがいくつかあります’ ‘は、’が6分間解決策を探していて、新しいトランザクションが発生したと言います。 1)今何が起こっていますか?私が最初からやり直す必要がある場合、それは誰もが最初からやり直さなければならないように聞こえます。それでは、ブロックチェーンはどのようにして約10分でブロックを見つけることを保証できますか? 2)とにかく、そのトランザクションはどのようにして私にもたらされますか?3)このブロックの解決策を見つけた後、閉じたばかりのブロックでそれを受け入れた他のノードから新しいトランザクションが届いた場合はどうなりますか?
- 1)はい、ビルドすると、全員が最初からやり直します。古いブロックの上に’ブロックがより長いチェーンの一部になり、ネットワークの他の部分から無視される可能性はほとんどありません。ブロックが10分以内に見つかるという保証はありません。’は単なる平均的な統計結果です。 2)どのような取引ですか?ブロックは、それらをマイニングした人によってブロードキャストされ、他のノードによって中継されます。 3)保留中のすべてのトランザクションを含める必要はありませんが、含めるトランザクションが多いほど、徴収できる料金も多くなります。
回答
以下は、10分程度ごとに行われるグローバルな統計的ギャンブルの説明です。ゲームの間隔は、間隔ごとに必要な「ハッシュ」の数を示す難易度によって制御されます。
つまり、difficulty
とtarget
は、「家のオッズ」を定義します。勝利したSHAハッシュ。 nonce
は「スクラッチオフ」領域です。
各ハッシュは電力を消費し、熱を放出するため、追加の冷却が必要です。
これは各ハッシュで行われることです:
ステップ1
高レベルでは、マイナーソフトウェアはアクティブなトランザクションのリストを取得し、それらを「ブロック」と呼ばれるものにグループ化します。
またはより正確に言うと:マイナーソフトウェアは、すべてのトランザクションを「マークルルート」と呼ばれる要約ビューに変換し、トランザクションを表すハッシュします。 p>
ステップ2
次に、マイニングソフトウェアはこれをと呼ばれるバイナリ形式に変換します。 ブロックヘッダー。これは前のブロック(チェーンとも呼ばれます)も参照します。
Field Purpose Updated when... Size (Bytes) Version Block version number You upgrade the software and 4 it specifies a new version hashPrevBlock 256-bit hash of the previous A new block comes in 32 block header hashMerkleRoot 256-bit hash based on all A transaction is accepted 32 the transactions in the block Time Current timestamp as seconds Every few seconds 4 since 1970-01-01T00:00 UTC Bits Current target in compact format The difficulty is adjusted 4 Nonce 32-bit number (starts at 0) A hash is tried (increments) 4
ステップ3:
マイナーハードウェアは、「nonce」と呼ばれるこのブロックの小さな部分を変更します。
ステップ4:
ブロックヘッダーはハッシュ化され、ターゲットと比較されます。まるで10,000,000> 7,000,000(実際の数値)のような単なる大きな数値であるかのように比較されます。はるかに大きく、16進)。ターゲットは圧縮され、ビットと呼ばれるフィールドの各ブロックに格納されます。
展開されたターゲットは次のようになります:
Target 0000000000000083ef00000000000000000000000000000000000000000000000
そして目標は、ブロックの SHA256ハッシュがこの値よりも小さいことを確認することです。以下の例では、「83ee
」は「83ef
」よりも小さいです
この概念を単純化するために、ボールパークできます先行ゼロを数えることによるターゲット(ここでの他の答えが説明しているように)。次に例を示します。
これはBlockChain.infoで表示できるトランザクションのサンプルブロックです。右上隅を見てください。このハッシュのWebページの例:
Hash 0000000000000083ee9371ddff055eed7f02348e4eda36c741a2fc62c85bc5cf
その前のハッシュは今日のものであり、14個の先行ゼロがあります。それを3年前に必要だったものと比較してみましょう。ブロック100 には8つの先行ゼロがあります。
Hash 00000000a8ed5e960dccdf309f2ee2132badcc9247755c32a4b7081422d51899
概要
つまり、結局のところ、すべての鉱夫はは次のとおりです。
- 入力としてブロックヘッダーを取得します
- ノンスを変更します
- ブロックヘッダーがハッシュがターゲットよりも小さいです。そうである場合は、勝ちます。
- ステップ2に進みます(または、他の誰かがブロックに勝った場合は、ステップ1に進みます)
Bitcoin-QTがブロックを見つけたときに何をするのか知りたいですか?… ここに投稿しました。。この投稿の情報は何が起こったのかを理解するのに役立ちます。
コメント
- ‘ナンス(32ビット)まで小さすぎて、14個の先行ゼロ(14×4 = 56ビット)で開始する必要があるハッシュを見つけることができませんか?そのようなハッシュを見つけるには、平均2 ^ 56/2回の試行が必要であり、32ビットは必要ありません。可能なすべてのナンス値が使い果たされる前に、2 ^ 32回の試行しか可能ではないためです。編集:時間は毎秒変化するので、これはハッシュレートが4 GH /秒を超える場合にのみ当てはまると思います(そうだと思います…)
- うん、あなた’正解です…ブロックヘッダーのURLから:
Whenever Nonce overflows (which it does frequently), the extraNonce portion of the generation transaction is incremented, which changes the Merkle root.
回答
マイニングは、トランザクション台帳がどのように見えるかについて合意に達し、だれも不正行為をしていないことを知る方法を提供します。
これはマイニングの非技術的な定義です。 。
二重支払いの「権限」はブロックチェーンです。ブロックチェーンは、ブロックチェーン内のすべてのブロックの履歴とトランザクションの次のブロックで構成されます。報酬補助金は現在、次のブロックを提出する当事者への25BTCです。しかしねえ…あなたは私が他のみんなと同じようにその25BTC(現在約$ 825の価値がある)を望みます。では、どうやって私が自分でブロックをだまして主張できないようにするのですか?
まあ、あなたはあなたと私が競争しなければならないシステムを導入します。それが仕事の証拠です。 -報酬を請求するときに、実際に関連する作業を行ったことを簡単に証明できるようになります。したがって、ブロックを解決する可能性が2%になるには、マイニング作業の2%を投入する必要があります。すべての作業の2%未満を投入し、それでも少なくとも2%の時間(平均)でブロックを解決する方法はありません。
したがって、結果として、トランザクションがブロックされるとが提出されると、すべてのピアは、二重支払いがなかったこと、適切な金額の補助金が請求されたこと、および提出者がそのソリューションに必要な作業を本当に費やしたことを確認します。これらの3つのルールを使用すると、必要はありません。プロセスを管理する、または結果を管理できる中央機関。