สำหรับบล็อก bitcoin ใด ๆ เรารวมฟิลด์ส่วนหัวต่าง ๆ เพื่อสร้างสตริงซึ่งเป็นอินพุตของอัลกอริทึม 2 pass SHA แฮชที่เป็นผลลัพธ์ต้องตรงกับแฮชในส่วนหัวของบล็อก เพื่อให้การบล็อกถูกต้อง
เพื่อทดสอบตรรกะนี้รวมถึงอัลกอริทึม SHA ฉันใช้ส่วนหัวของหมายเลขบล็อก 695877 (https://blockchain.info/rawblock/695877?format=json) เพื่อสร้างสตริงอินพุต 04008020546C359986812644420E453113E209AFEAEEB316F3A0700000000000000000000B8FA13B3FCA087C1456DAAC626AB9B8A47EAEEE82103263
ตอนนี้เมื่อฉันใช้อัลกอริทึม 2 pass SHA แฮชผลลัพธ์จะตรงกับแฮชในบล็อก (โดยไม่สนใจส่วน Endian ในขณะนี้)
แฮชที่คำนวณได้: 629ef98d63e12f6b01476419a5a71efa8814dea40aec09000000000000000000
แฮชบล็อก: 00000000000000000009ec0aa4de1488fa1ea7a5196447016b2fe1638df99e62
แต่เมื่อฉันใส่ส่วนหัวด้วยตนเองก่อนที่จะส่งต่อไปยัง 2 ผ่านอัลกอริทึม SHA ดังนี้: 04008020546c359986812644420e453113e209afeaaeeb316f3a07000000000000000000b8fa13b3fca087c1456daac626ab9b8a47eae821a326f17e0ffffc15433df709b0f718610b1812175a5c9544800000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000280 สิ่งนี้ส่งผลให้เกิดแฮชที่ไม่ถูกต้อง
ฉันไม่เห็นว่ามีอะไรผิดปกติในช่องว่างภายใน ใครช่วยกรุณาชี้ให้เห็นได้ไหม