Dalam protokol Bitcoin, 2016 adalah angka yang sangat istimewa. "Kesulitan" menemukan hash untuk membuat blok baru disesuaikan setiap 2.016 blok untuk perkiraan perubahan setiap dua minggu.
Jumlah ini dipilih karena kesulitan menyesuaikan diri sehingga setiap blok membutuhkan waktu sekitar 10 menit, dan dalam dua minggu, ada 2 × 7 × 24 × 6 = 2.016 periode sepuluh menit.
Untuk memperingati angka kebetulan ini, masalah Tahun Baru tahun ini adalah tentang Bitcoin - khususnya, algoritma hashing yang digunakan untuk menandatangani blok, SHA-256.
Tugas Anda adalah untuk menciptakan sebuah program yang akan mengambil input byte (setidaknya ASCII) dan output Nonce dalam bytes (dalam format pilihan Anda) yang akan menghasilkan SHA-256 hash yang mengandung 2016
di-nya base64 representasi ketika ditambahkan dengan aslinya input byte.
Berikut adalah beberapa contoh solusi yang valid, milik mesin yang telah dihasilkan orang, serta hash yang mereka hasilkan:
> 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.)
Satu-satunya perpustakaan yang dibangun sebelumnya (selain fungsi input dan output standar) yang dapat digunakan oleh program Anda adalah SHA256(bytes)
fungsi yang mengambil input byte dan mengembalikan hash SHA256, dalam format apa pun termasuk base64.
Program untuk melakukan ini dalam bytes kode sumber paling sedikit menang.