비트 코인 프로토콜에서 2016 은 매우 특별한 숫자입니다. 새로운 블록을 생성하기 위해 해시를 찾는 "난이도"는 2,016 블록마다 2 주마다 한 번씩 변화를 근사하도록 조정됩니다.
이 숫자는 모든 블록을 발견하는 데 약 10 분이 걸리고 난이도 자체 조정이 이루어지기 때문에 선택되었으며, 2 주 안에 2 × 7 × 24 × 6 = 2,016 개의 10 분 간격이 있습니다.
이러한 수치 적 우연의 일치를 기념하기 위해 올해의 새해 문제는 비트 코인, 특히 블록 서명에 사용되는 해싱 알고리즘 인 SHA-256에 관한 것입니다.
당신의 임무는 바이트 입력 (적어도 ASCII)을 취하고 원본에 추가 될 때 base64 표현에 포함 2016
된 SHA-256 해시를 생성하는 nonce를 바이트 단위로 (선택한 형식으로) 출력하는 프로그램을 만드는 것입니다. 바이트 입력.
다음은 사람들이 이미 생성 한 엔진과 그들이 만든 해시를 통해 유효한 솔루션의 예입니다.
> 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 해시를 반환하는 함수입니다.
가장 적은 바이트의 소스 코드에서이를 수행하는 프로그램이 이깁니다.