FIP-06: 联合挖矿
作者: Izimmerma <izimer@ohstr.com>
状态: 已定稿 (Final)
创建日期: 2025-08-15
摘要
Lokichain 采用了辅助工作量证明 (Auxiliary Proof-of-Work, AuxPoW),使矿工能够重复使用在父 PoW 链上找到的工作量。AuxPoW 包封提供了父区块头、coinbase 承诺以及所需的默克尔证明,以证明 Lokichain 区块头已嵌入到父区块的工作量中。
动机
联合挖矿允许 Lokichain 继承更大网络的算力,而无需矿工分散精力。遵循成熟的 AuxPoW 惯例可以减轻矿池的集成负担,同时保持共识的清晰性。
术语
- 父区块链 (Parent blockchain): 其有效的区块头和工作量证明被 Lokichain 重复使用的网络(例如,任何 scrypt 系列的 PoW 链)。
- 辅助区块链 (Auxiliary blockchain): 即 Lokichain,它验证 AuxPoW 数据并接受父链的工作量作为自己的工作量。
- AuxPoW 区块: 一个 Lokichain 区块,它本身可能不满足子链的难度目标,但包含了证明父区块工作量满足该目标的证明。
- 辅助工作默克尔树 (Aux work merkle tree): 植根于父链 coinbase 的承诺结构,它产生了 coinbase 分支(进入父链默克尔根)和链分支(向下到 Lokichain 区块头承诺),使得多个辅助链可以共享同一个父区块。
规格
Lokichain 通过设置版本字段的第 8 位 (VersionAuxPow) 并将 6 位链标识符写入第 [16..21] 位,将区块头标记为已启用 AuxPoW。当此标志存在时,节点会在 80 字节的基础区块头之后、交易向量之前立即附加以下负载:
| 字段 | 类型 | 用途 |
|---|---|---|
aux_version | 1 字节 | AuxPoW 负载版本。Lokichain 使用 0x00。 |
parent_coinbase_tx | 序列化交易 | 包含联合挖矿承诺的完整父链 coinbase 交易。 |
coinbase_branch | 默克尔分支 (var_int 长度, 32 字节哈希, 32 位侧掩码) | 证明 coinbase 交易包含在父链默克尔根中。 |
chain_branch | 默克尔分支 (可选) | 证明辅助工作默克尔树中的 Lokichain 承诺;当父区块仅为 Lokichain 服务时为空。 |
parent_header | 80 字节序列化区块头 | 父链区块头,其工作量证明将根据 Lokichain 的要求进行验证。 |