← 文档 · 收藏

验证(工作量证明)

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
Spirit CardsBuilt on Robinhood Chain · Collect · Evolve · Stake · Battle// A more elemental tomorrow