验证(工作量证明)
Spirit Cards 精确的 keccak-256 工作量证明规则。核心合约为 0x0997DB0BEa2c1278063ebBEc0d1cdbecE7B6F021,可调的难度参数位于 Config 合约。任何人都能根据公开的链上数值重新计算卡牌种子。
原像
矿工不断尝试 64 位 nonce,直到该 104 字节原像的 keccak-256 哈希具有足够的前导零位:
work = keccak256(abi.encodePacked(
uint256 chainId, // 32 bytes, big-endian
address core, // 20 bytes
address miner, // 20 bytes
uint256 nonce // 32 bytes, big-endian
))
// 32 + 20 + 20 + 32 = 104 bytes (one Keccak-256 rate block)
// chainId = 4663有效性规则
当 work 哈希的前导零位数不少于 Config.baseBits() 时,该 nonce 有效:
valid <=> leadingZeroBits(work) >= Config.baseBits() // Expected attempts ~= 2^baseBits // Nonces are single-use per wallet (nonceUsed[miner][nonce])
无需交易的验证
在本地重新计算 workFor(miner, nonce) 并比较其前导零位与 baseBits()。链上 core.workFor(miner, nonce) 返回相同哈希。
recompute work = keccak256(chainId, core, miner, nonce) compare leadingZeroBits(work) >= Config.baseBits()
核心合约0x0997DB0BEa2c1278063ebBEc0d1cdbecE7B6F021
配置合约0x678629B80ab8A3Bc049e0FaBca7Aa5De826c8819
链4663