Для любого биткойн-блока мы объединяем различные поля заголовка, чтобы создать строку, которая является входом для двухпроходного алгоритма SHA. Результирующий хэш должен совпадать с хэшем в заголовке блока, чтобы блок был действительным.
Чтобы проверить эту логику, а также алгоритм SHA, я использовал заголовок блока с номером 695877 (https://blockchain.info/rawblock/695877?format=json), чтобы создать строку ввода 04008020546C359986812644420E453113E209AFEAEEB316F3A0700000000000000000000B8FA13B3FCA087C14567111111111111111111111111111111111111111111111111111111111111111111111111117BFFC1543333.F83A47EAE821A326F17E0FFFC15433333AEEAE821A326F17E0FFFC1543333.B83A421A326F17.
Теперь, когда я применяю двухпроходный алгоритм SHA, результирующий хеш совпадает с хэшем в блоке (на данный момент игнорируя часть Endian).
Расчетный хэш: 629ef98d63e12f6b01476419a5a71efa8814dea40aec090000000000000000000
Хэш блока: 00000000000000000009ec0aa4de1488fa1ea7a5196447016b2fe1638df99e62
Но когда я добавляю заголовок вручную, прежде чем передать его двухпроходному алгоритму SHA, выполните следующие действия: 04008020546c359986812644420e453113e209afeaaeeb316f3a07000000000000000000b8fa13b3fca087c1456daac626ab9b8a47eae821a326f17e0ffffc15433df709b0f718610b1812175a5c9544800000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000280 Это приводит к неправильному хэшу.
Я не вижу, что не так в прокладке. Может кто-нибудь указать это?