Re: プルーフ・オブ・ワーク難易度の上昇

参加者: DataWraith

Quote from: laszlo on May 11, 2010, 01:13:07 PM

この統計/数学に多少のバックグラウンドがある人が教えてくれないか。

この仕組みは、(基本的にランダムな)データブロックを取り、その中の32ビットフィールドを1から始めてインクリメントして変更する。データブロックにはタイムスタンプも含まれており、混ぜ合わせるためにたまにインクリメントされる(ただしタイムスタンプが更新されてもインクリメントフィールドはリスタートされない)。ネットワークから新しいブロックを受け取ると、インクリメントフィールドを1からやり直すことになるが…しかし他のデータもすべて変わっているので、ハッシュしているものは同じではない。

俺の理解では、ハッシュされるデータはほぼランダムで、ハッシュアルゴリズムは「雪崩効果」を示すため、1から始めてインクリメントし続けるか、擬似ランダム値を代わりに使うかはおそらく関係ないと思うのだが、誰かこれを支持するか反証してくれないだろうか。

入力データのその部分を単純に順次インクリメントする以外のことをして、低い数値のハッシュを見つける可能性を高められるのか? あるいは、これはサイコロで6を出す確率を反対の手を使って上げようとするのと同じことか?

そう、その理解は正しい。何がハッシュされるかは関係なく、いいえ、まずSHA-256を破らない限りはズルはできない。それは困難とされている。

暗号学的ハッシュ関数の重要な特性は、決定論的でありながら可能な限りランダムであることだ。その強度はそれに依存する――結局のところ、ランダムでなければ、明らかなパターンがあれば、そこから破られてしまう。理想的なハッシュ関数は乱数生成器のように振る舞う。何を入力しても、タイムスタンプがあろうがなかろうが、何を入れようと、ハッシュはランダムに振る舞うべきだ(つまり、すべての可能な結果が同じ事前確率を持つ)。1ずつインクリメントするのは、毎ステップですべてを完全に変更するのと同じくらいうまくいく(これは雪崩特性から導かれる)。ただし、インクリメントを始める前の初期値は(擬似)ランダムに選ばなければならない。そうしないとすべてのコンピュータが同じ地点から開始し、最速のものが常に勝つことになる。それはここで望まれていることではない。