IT/비트코인
[비트코인] Message & SHA256 정리
블랙오닉스
2025. 2. 4. 21:08
2025.02.04
모두 정리가 되었지만 Byte Order 가 이해가 안돼서 다시 확인.
현재 코드기준
version + previous hash + root hash + ...
각 아이템은 보통의 Big Endian 이지만 전체로 보면 Little Endian이 되어야 한다.
string msg = “00112233…”
message[0] = 0x00;
message[1] = 0x11;
message[2] = 0x22;
message[3] = 0x33;
sha256_top에서 1byte 데이터를 4byte로 만들 때 Little로 바꾼다.
UINT msg = 0x00112233;
sha256_core에서 BIG_ENDIAN이 선언되어 있지 않기 때문에 Little을 다시 Big으로 바꾼다.
#if defined(BIG_ENDIAN)
#define GetData(x) x
#else
#define GetData(x) ENDIAN_REVERSE_ULONG(x)
#endif
W0:for (int j = 0; j < 16; j++)
W[j] = GetData(Message[j]);
따라서 W
W[0] = 0x33221100;
sha256 내부는 4byte Big Endian 처리
Little Endian 표시
02000000 ........................... Block version: 2
b6ff0b1b1680a2862a30ca44d346d9e8
910d334beb48ca0c0000000000000000 ... Hash of previous block's header
9d10aa52ee949386ca9385695f04ede2
70dda20810decd12bc9b048aaab31471 ... Merkle root
24d95a54 ........................... [Unix time][unix epoch time]: 1415239972
30c31b18 ........................... Target: 0x1bc330 * 256**(0x18-3)
fe9f0864 ........................... Nonce