ビットコインプロトコルでは、2016年は非常に特別な数字です。ハッシュを見つけて新しいブロックを作成する「難易度」は、2,016ブロックごとに調整され、2週間に1回の変化を概算します。
この数値が選択された理由は、難易度が調整されて、すべてのブロックが見つかるまで約10分かかり、2週間で2×7×24×6 = 2,016の10分の期間があるためです。
この数値の偶然の一致を記念して、今年の新年の問題はビットコイン、具体的にはブロックに署名するために使用するハッシュアルゴリズムSHA-256についてです。
あなたの仕事は含んでSHA-256ハッシュを生成すること(お好みの形式で)Aナンスのバイトバイト(少なくともASCII)で入力と出力を取るプログラムを作成することで2016
、その中にbase64で元に追加するときの表現をバイト入力。
以下は、人々がすでに生成したエンジンとそれらが生成したハッシュのおかげで、有効なソリューションの例です。
> foo
Nonce: 196870
SHA256 hash: OCUdDDtQ42wUlKz2016x+NROo8P2lbJf8F4yCKedTLE=
> bar
Nonce: 48230
SHA256 hash: CNcaOCQgT7bnlQzQPXNwuBu8/LYEdk2016khRaROyZk=
> happynewyear
Nonce: 1740131
SHA256 hash: XsKke6z2016BzB+wRNCm53LKJ6TW6ir66GwuC8oz1nQ=
> 2016
Nonce: 494069
SHA256 hash: rWAHW2YFhHCr22016zw+Sog6aW76eImgO5Lh72u6o5s=
(note: the nonces don't actually have to be ASCII numbers; you can do
any byte input you find convenient.)
プログラムで使用できる唯一の事前構築済みライブラリ(標準入出力関数以外)は、SHA256(bytes)
base64を含む任意の形式でバイト入力を受け取り、SHA256ハッシュを返す関数です。
ソースコードの最小バイトでこれを行うプログラムが勝ちます。