编辑代码

# coding:utf-8
#JSRUN引擎2.0,支持多达30种语言在线运行,全仿真在线交互输入输出。
# 4a5e1e4baab89f3a32518a88c31bc87f618f76673e2cc77ab2127b7afdeda33b
import hashlib

# 比特币创世区块头字段(小端序处理)
version = bytes.fromhex("00000001")          # 版本号(小端序: 0x1"01000000"prev_block = bytes.fromhex("0000000000000000000000000000000000000000000000000000000000000000")  # 前驱哈希(全0,无需反转)
merkle_root = bytes.fromhex("3ba3edfd7a7b12b27ac72c3e67768f617fc81bc3888a51323a9fb8aa4b1e5e4a")  # Merkle根(大端序转小端序)
timestamp = bytes.fromhex("495fab29")        # 时间戳(小端序: 0x495fab29"29ab5f49"bits = bytes.fromhex("1d00ffff")             # nBits(小端序: 0x1d00ffff → "ffff001d"nonce = bytes.fromhex("7c2bac1d")            # Nonce(小端序: 0x7c2bac1d → "1dbc2c7c"# 拼接区块头字节流(顺序必须严格符合协议)
header_bytes = version + prev_block + merkle_root + timestamp + bits + nonce

# 两次SHA256计算
hash1 = hashlib.sha256(header_bytes).digest()
hash2 = hashlib.sha256(hash1).digest()

# 反转字节序得到最终区块哈希(大端序显示)
block_hash = hash2[::-1].hex()
print("创世区块哈希:", block_hash)  # 应输出:000000000019d6689c085ae165831e934ff763ae46a2a6c172b3f1b60a8ce26f