"旋转序列。组合。改进。永不完美。完美是不断变化的目标。"
— Abathur,《星际争霸 II:虫群之心》
KERRIGAN 是一种多算法工作量证明加密货币,结合了硬件多样性、零知识隐私以及名为 Hivemind Protocol 的新型封印共识层。四种挖矿算法(X11、KawPoW、Equihash 200,9 和 Equihash 192,7)从创世区块起同时运行,每种算法拥有独立的难度调整机制,该机制源自 DigiByte 的多算法方案。Sapling zk-SNARK 隐私交易为用户提供了完全交易隐私的选项。Hivemind Protocol 在 PoW 之上增加了第二个共识维度,矿工通过 BLS 签名证明和可验证随机委员会选择来集体封印区块。V1 作为以挖矿为核心的区块链启动,配备主节点和链上治理。V2 将网络扩展至面向 AI 推理的 GPU 计算,将区块奖励重新分配以激励推理提供者和矿工。
大多数工作量证明区块链依赖单一挖矿算法。这造成了一个脆弱的网络——一家硬件制造商或一种 ASIC 设计就能主导算力,一个算法漏洞就能危及整条链。比特币的 SHA-256 几乎完全由专用 ASIC 矿机挖掘。以太坊经典的 Ethash 在 GPU 矿工迁移至权益证明的以太坊后,遭受了多次 51% 攻击。单算法链将风险集中化。
隐私是另一个缺口。透明的 PoW 链将每笔交易暴露在公开分析之下。链分析公司可以追踪跨跳转的资金、将地址与身份关联,并建立完整的财务档案。一些链将可选隐私功能作为事后补丁;另一些则完全牺牲透明性。两种极端都无法很好地服务用户。
KERRIGAN 同时解决了这两个问题。四种挖矿算法确保没有单一硬件类别能垄断区块生产。ASIC 矿工在 X11 上竞争,GPU 矿工则分布在 KawPoW、Equihash 200,9 和 Equihash 192,7 上。每种算法都有自己的难度调整,因此算法间的算力转移不会破坏网络稳定。Sapling zk-SNARK 隐私交易为需要隐私的用户提供密码学保护,同时不移除透明交易层。
该链构建于 Dash 分叉之上,继承了确定性主节点列表(DIP3)、基于法定人数的服务(LLMQ)以及用于安全功能激活的 spork 系统。我们剔除了不需要的部分,替换了不合适的部分,并在继承代码不足之处构建了新系统。多算法 PoW 引擎、Sapling 集成以及 Hivemind Protocol 均为 KERRIGAN 原创。
KERRIGAN 并行运行四种挖矿算法,全部从创世区块起激活。每个区块仅由一种算法挖出,算法信息直接编码在区块版本字段中。
X11 是 Dash 的原生哈希函数:由十一种链式密码函数组成(BLAKE、BMW、Groestl、JH、Keccak、Skein、Luffa、CubeHash、SHAvite、SIMD、ECHO)。它可以用 ASIC 挖掘,这意味着 X11 算力很可能由专用硬件主导。这是有意为之。ASIC 提供稳定的高吞吐量哈希运算,从而稳定基础层。
KawPoW 是 Ravencoin 的 ProgPoW 变体,一种 GPU 优化算法,通过随机程序生成来抵抗 ASIC 开发。KERRIGAN 的 KawPoW 实现与 Ravencoin 线缆兼容,这意味着现有的 RVN 矿工只需最少配置即可将矿机指向 KERRIGAN 矿池。KawPoW 区块携带额外的区块头字段:nHeight、nNonce64(8 字节 nonce)和 mix_hash(32 字节)。
Equihash 200,9 是 Zcash 的内存密集型算法。(200,9) 参数要求每次求解尝试大约 700 MB 工作内存。Equihash 200,9 确实存在 ASIC 矿机(特别是 Bitmain Z9 系列),因此这条赛道并非严格仅限 GPU。KERRIGAN 使用与 Zcash 兼容的 140 字节区块头格式:来自 CEquihashInput 的 108 字节(版本、前一区块哈希、默克尔根、保留哈希、时间、难度位)加上 32 字节的 nNonce256。解决方案序列化上限为 1400 字节。
Equihash 192,7 使用不同的参数,与 (200,9) 相比降低了内存需求,同时保持 ASIC 抗性。(192,7) 参数集由 ZClassic 及其他 Equihash 分叉推广。区块头格式与 Equihash 200,9 相同,但具有独立的解空间和难度曲线。
挖矿算法编码在区块 nVersion 字段的第 8 至 11 位中,使用掩码 0x0F00:
| 算法 | 内部枚举 | 版本位 | 十六进制 |
|---|---|---|---|
| X11 | ALGO_X11 = 0 | 0 << 8 | 0x0000 |
| KawPoW | ALGO_KAWPOW = 1 | 2 << 8 | 0x0200 |
| Equihash 200,9 | ALGO_EQUIHASH_200 = 2 | 4 << 8 | 0x0400 |
| Equihash 192,7 | ALGO_EQUIHASH_192 = 3 | 6 << 8 | 0x0600 |
内部枚举值(0-3)在代码中用于数组索引。版本位使用均匀间距(0、2、4、6),为未来算法留出空间。它们之间的映射是查找表,而非枚举值的直接位移。
任何检查 nVersion 进行 BIP9 软分叉信号的代码必须首先剥离第 8-11 位。WarningBitsConditionChecker 会跳过这些位以避免误报。
KERRIGAN 对每个区块使用两种不同的哈希:用于索引的身份哈希和用于挖矿验证的工作量证明哈希。
身份哈希是对区块基础头部计算的 X11。对于 X11 和 KawPoW 区块,这是标准的 80 字节头部(版本、前一区块哈希、默克尔根、时间、难度位、nonce)。对于 Equihash 区块,则是 140 字节(版本、前一区块哈希、默克尔根、hashReserved、时间、难度位、nNonce256)。这是 hashPrevBlock 引用的内容,也是 RPC 返回和链索引使用的内容。所有算法都使用 X11 进行身份哈希,以确保每个节点以相同方式索引每个区块。
工作量证明哈希是特定于算法的,并提交该算法所有共识关键字段:
这种双哈希设计意味着:身份哈希提供了跨所有算法的稳定、统一的区块 ID,而 PoW 哈希确保特定于算法的字段(解决方案、mix 哈希、扩展 nonce)被完全提交且防篡改。详见附录 A 中各算法的精确序列化字节布局。
每种算法拥有独立的难度,使用源自 DigiByte 多算法难度(DigiShield v4)的方案进行调整。参数如下:
这种每算法独立难度意味着 KawPoW 上突然涌入的 GPU 矿工不会影响 X11 难度或 Equihash 难度。每种算法独立找到自己的平衡点。
供应量遵循标准减半计划:前 1,051,200 个区块 25 KRGN,然后 12.5,再然后 6.25,以此类推。该几何级数收敛至总量 52,560,000 KRGN。
每个区块的 coinbase 交易将 25 KRGN 奖励分为五部分:
| 接收方 | 份额 | KRGN/区块 | 托管方式 | 用途 |
|---|---|---|---|---|
| 增长基金 | 40% | 10.00 | 共识锁定托管 | 交易所上市、合作伙伴关系、生态系统发展 |
| 矿工 | 20% | 5.00 | 立即释放 | PoW 区块奖励 |
| 主节点 | 20% | 5.00 | 立即释放 | 网络服务(无主节点注册时归矿工) |
| 国库 | 15% | 3.75 | 2-of-3 多签 | 运营成本、市场营销、社区、团队薪酬 |
| 开发/创始人 | 5% | 1.25 | 立即释放 | 创始人补偿和持续项目承诺 |
增长基金不是国库。它是一个共识锁定的托管账户,团队未经主节点批准无法支出(见第 3.4 节)。国库和开发/创始人分配(合计 20%)是项目的运营预算,类似于 Zcash 历史上的 20% 开发基金。国库地址是一个 2-of-3 P2SH 多签钱包,需要三名密钥持有者中的两名授权才能支出。如果网络上没有注册主节点,20% 的主节点份额将作为优雅降级机制留给矿工。
KERRIGAN 没有风险投资支持,没有 ICO,没有预挖,也没有代币销售。硬件自掏腰包运行。代码由团队编写。没有来自种子轮的 500 万美元战争基金存放在多签钱包中。
这意味着网络必须自行资助增长。交易所上市、流动性供给、跨链桥部署和合作伙伴协议都需要真金白银,没有外部资金的情况下,链本身是唯一来源。增长托管是将挖出的代币转化为可交易资产的机制。没有交易所上市就意味着没有流动性。没有流动性意味着矿工赚取的代币毫无价值。
增长托管每区块累积 10 KRGN:
以下是在不同 KRGN 价格下的情况,假设典型的二线交易所上市费用为 150,000 美元,三线交易所为 30,000 美元:
| KRGN 价格 | 每月托管 | 达到三线上市($30K)的时间 | 达到二线上市($150K)的时间 |
|---|---|---|---|
| $0.01 | $2,160 | 约 14 个月 | 约 69 个月 |
| $0.05 | $10,800 | 约 3 个月 | 约 14 个月 |
| $0.10 | $21,600 | 约 6 周 | 约 7 个月 |
| $0.50 | $108,000 | 约 8 天 | 约 6 周 |
| $1.00 | $216,000 | 约 4 天 | 约 3 周 |
即使 KRGN 价格为 $0.05,托管也能在一个季度内为三线交易所上市提供资金。在 $0.10 时,二线上市在第一年内即可实现。
托管是临时性的。它在第 262,800 个区块(约 12 个月)有硬性上限。其中每枚代币从铸造之时起即被锁定。未经主节点投票批准特定支出,任何代币都不会离开托管。为早期增长提供资金的矿工将获得一个运作良好的生态系统和一个在真实交易所交易的代币作为回报。
增长基金的 40% 分配在每个区块铸造并发送至共识锁定的托管地址。这些代币存在于链上,计入总供应量,且完全可审计——但它们无法被支出。没有多签签名者、没有团队成员、没有任何单一实体可以移动它们。支出需要主节点网络批准特定提案。
续期投票:每个超级区块周期(16,616 个区块,约 23 天),托管的持续累积也必须通过主节点投票续期。如果续期投票未通过,40% 的 coinbase 输出在下一个周期将被销毁而非进入托管。没有投票就没有累积。冷漠杀死基金,而非行动。
到期时会发生什么:当增长托管结束时(因续期投票失败或在第 262,800 个区块达到硬性上限),剩余锁定代币通过 OP_RETURN 销毁。此后所有区块的 40% coinbase 分配将被销毁。这不会重定向给矿工、主节点或任何其他方。被销毁的代币减少流通供应,平等地惠及所有持有者。V2 区块奖励重组(第 3.6 节)是一个单独的共识升级,将 40% 重定向给 AI 推理提供者。
区块奖励中剩余的 20%(国库 15% + 开发/创始人 5%)是项目的运营预算。这些代币正常释放,不受托管锁定。
国库(15% / 每区块 3.75 KRGN):维持项目运行的运营成本。市场营销、社区管理、版主薪酬、服务器成本、空投、赠品和合作伙伴费用。国库地址是一个 2-of-3 P2SH 多签钱包,需要三名密钥持有者中的两名授权才能支出。
开发/创始人(5% / 每区块 1.25 KRGN):对从零开始构建 KERRIGAN 以及持续维护和开发协议的补偿。直接释放,无锁定。
这 20% 的运营预算与 Zcash 历史上 20% 的开发基金相当。区别在于:KERRIGAN 的增长资金(另外 40%)存放在共识锁定的托管中,团队未经网络批准无法访问。只有 20% 可自由支出。
V2 将区块奖励围绕 AI 推理网络进行重组。GPU 运营者在区块奖励份额之上获得按次推理收入,使 KERRIGAN 挖矿硬件在出块间隙也能产生效益:
| 接收方 | V1 份额 | V2 份额 | 备注 |
|---|---|---|---|
| AI GPU 推理 | 0% | 40% | 在按次推理收入之上叠加 |
| 挖矿 | 20% | 20% | 不变 |
| 主节点 | 20% | 20% | 不变 |
| 国库 | 15% | 15% | 不变 |
| 开发/创始人 | 5% | 5% | 不变 |
| 增长基金 | 40% | 0% | 已完成其使命 |
生态系统建立后,增长基金降至零。资助早期交易所上市和合作伙伴关系的 40% 重定向给 AI GPU 推理参与者,将 KERRIGAN 转变为双用途链:挖矿保护网络,同时 GPU 计算服务 AI 工作负载。40% 的推理分配叠加在直接按次推理费用之上,为 GPU 运营者提供同一硬件的两个收入来源。
KERRIGAN 集成了 Zcash 的 Sapling 协议用于零知识隐私交易。用户可以使用 Groth16 zk-SNARK 证明在透明地址(以 'K' 开头)和隐私地址之间转移资金,该证明不会泄露发送者、接收者或金额的任何信息。
隐私交易使用 nType = 10(TRANSACTION_SAPLING)。额外载荷包含:
每笔交易最多支持 500 个花费描述和 500 个输出描述。Rust Sapling 构建器将输出包填充至最少 2 个输出(必要时添加虚拟输出),以防止基于输出数量的交易图分析。
Sapling 电路运行在嵌入 BLS12-381 内的 Jubjub 椭圆曲线上。证明通过 Rust FFI 桥使用 bellman、jubjub 和 group crate 生成和验证,通过 CXX 编译到 C++ 节点中。
关键原语:
默克尔树前沿(追加新叶子所需的最小数据)按区块存储在 LevelDB 中。钱包端的见证跟踪每个票据的认证路径以用于花费证明。
可信设置:KERRIGAN 重用 Zcash 的 Sapling 参数(由 Zcash Powers of Tau 仪式和 Sapling MPC 生成的证明和验证密钥)。电路与 Zcash Sapling 完全相同。隐私交易不需要新的可信设置仪式。
交易签名遵循 ZIP 243 风格的签名哈希方案。签名哈希预像包含 hashPrevouts、hashSequence 和 hashOutputs,覆盖透明和隐私组件。这防止了签名可塑性,并确保交易的透明和隐私部分在密码学上绑定在一起。
隐私交易使用基于操作数量的费用模型:
Sapling 在主网第 500 个区块激活,大约在创世后 16 小时。九个 RPC 提供完整的钱包功能:
| RPC | 功能 |
|---|---|
| z_getnewaddress | 生成新的隐私地址 |
| z_listaddresses | 列出钱包中所有隐私地址 |
| z_getbalance | 获取某个地址的隐私余额 |
| z_listunspent | 列出未花费的隐私票据 |
| z_sendmany | 向/从隐私地址发送(t 到 z、z 到 z、z 到 t) |
| z_exportkey | 导出隐私花费密钥 |
| z_importkey | 导入隐私花费密钥 |
| z_exportviewingkey | 导出 Sapling 完整查看密钥 |
| z_importviewingkey | 导入 Sapling 完整查看密钥 |
KERRIGAN 支持继承自 Dash 演进框架的两个主节点层级:
| 类型 | 抵押品 | 投票权重 |
|---|---|---|
| 普通 | 10,000 KRGN | 1x |
| Evo (HPMN) | 40,000 KRGN | 4x |
主节点通过 DIP3 确定性注册交易在链上注册:
确定性主节点列表完全由链上交易推导。每个节点从相同的链状态计算相同的列表,消除了困扰非确定性主节点系统的共识分歧。
长期存续主节点法定人数(LLMQ)启用两项关键服务:
InstantSend 在数秒内锁定交易输入,防止双花尝试。一组主节点法定人数签署锁定消息,任何冲突交易都会被网络拒绝。
ChainLocks 通过让法定人数签署每个高度看到的第一个区块来最终确认区块。一旦 ChainLock 签名传播,该区块就无法被重组出去,即使被 51% 攻击者攻击也不行。
这两项服务都由 spork 控制,在创世时禁用。LLMQ 需要最低数量的注册主节点才能形成法定人数,因此这些功能在主节点集达到临界规模后通过 spork 激活:
主节点运营者可以提交预算提案并投票。提案在 YES - NO >= max(10, weighted_masternode_count / 10) 时通过。治理系统处理社区提案、市场营销活动和基础设施资金。它还控制增长基金续期投票(第 3.4 节):40% 的增长基金分配必须每个超级区块周期(约 23 天)由主节点投票主动续期,否则将自动销毁。
在真实的蜂群中,每个成员都携带化学标记来标识自己属于蜂巢。没有哪一只蜜蜂产生整个蜂群的气味。它是集体涌现的。Hivemind Protocol 以同样的方式工作:矿池集体产生一种密码学"信息素",编织进每个区块。就像混合颜料,蓝色、黄色和红色放进去,你会得到特定色调的棕色。你可以验证棕色是正确的。你无法将其分解提取出各个颜色。但如果有人试图在没有蓝色的情况下制造那种棕色,那就是错误的色调。立即可以检测出来。
HMP 建立在工作量证明之上。PoW 决定谁来挖区块。HMP 决定网络的活跃矿工是否为该区块担保。秘密分叉链的攻击者无法带走蜂群的信息素,因为诚实矿工从未参与过分叉。攻击链的气味是错误的。
一个关键设计要求:无需修改挖矿软件。HMP 完全在守护进程内部运行。矿池软件(s-nomp、Miningcore 或任何兼容 Stratum 的栈)通过标准 getblocktemplate 和 submitblock RPC 与守护进程通信。守护进程内部处理身份管理、封印签名、封印组装、承诺广播和 P2P 中继。区块模板已经在 coinbase 交易中包含了嵌入的 HMP 封印数据,与 BIP34(coinbase 中的区块高度)、SegWit(coinbase 中的见证根)和合并挖矿(coinbase 中的 AuxPoW)使用的模式相同。矿工盲目对模板进行哈希。Stratum 协议不变。
每个守护进程在首次运行时生成一个持久的 BLS 密钥对(存储为 hmp_identity.dat)。该身份在启动时自动加载。随着守护进程挖掘区块并参与封印,它会建立特权记录:
| 层级 | 要求 | 能力 |
|---|---|---|
| UNKNOWN | 无历史记录,或在 10 区块预热期内 | 无法封印 |
| NEW | 完成预热,正在参与 | 可以标准权重封印 |
| ELDER | 解决 10 个以上区块且在 100 区块窗口内参与封印 | 完整权重,有资格获得跨算法奖励 |
特权窗口为 100 个区块。停止参与的矿工在滑出窗口后将退回 UNKNOWN 级别。特权需要真实的工作:不实际解决区块就无法成为 ELDER,这将任何女巫攻击转化为昂贵的诚实挖矿操作。
在封印之前,守护进程必须在链上提交其 BLS 公钥。可以把这想象成签到表。每个想要参与的守护进程广播其公钥。这些密钥通过两种方式到达链上:隐式(通过挖掘区块,将矿工的公钥嵌入 CCbTx v4 的 minerIdentity 字段)或显式(每个区块最多 16 个额外的公钥承诺在 CCbTx v5 的 vCommitments 字段中)。
已提交的密钥必须成熟 10 个区块后签名者才有资格。这是预热惩罚。如果像 NiceHash 这样的利润切换服务以短于预热时间(约 20 分钟)的突发方式切入,这些矿工永远不会对信息素做出贡献。他们挖矿、赚取奖励、离开。对蜂群身份零影响。
如果一个已提交的密钥停留足够长时间以获得特权,它就成为蜂群中的一个平等声音。当它离开时,一个声音消失。蜂群的气味几乎不会改变。
当新区块到达时,守护进程自动检查资格、计算 VRF 证明、用其 BLS 密钥签署区块哈希,并将封印份额广播到网络。这在 ConnectBlock 中发生,无需矿池参与。
每个封印份额包含:
签名者在最近的高度知晓公共链状态,承诺是在观察到该状态后生成的(防止预计算),密钥材料对于本轮是新鲜的(防止重放)。
签名者的具体算力、他们观察的确切时间以及承诺中使用的私钥材料。注意,封印份额包含签名者的公钥(伪匿名身份对特权跟踪可见),但零知识证明确保操作细节和密钥材料保持私密。
挖掘秘密分叉的攻击者无法产生有效证明,因为他们在所需时刻没有观察公共链。证明输入引用的是仅存在于诚实链上的从公共链状态导出的熵。证明绑定到特定区块哈希,因此无法在链之间移植。
封印份额通过 SEALSHARE P2P 消息传播。在 5 秒的签名窗口后,守护进程将收集的份额组装成带有聚合 BLS 签名的 CAssembledSeal。区块 N 的封印嵌入区块 N+2 的 coinbase 中,给网络足够时间收集份额而不会停滞区块生产。挖矿永远不等待签名。
HMP 证明的设置:MiMC 承诺电路在 BLS12-381 上使用 Groth16。该电路故意设计得较小(商用硬件上证明时间 <2 秒,验证时间 <50 毫秒,证明大小 <256 字节)。证明和验证密钥通过多方计算仪式生成。安全假设是 Groth16 的标准假设:如果至少一名仪式参与者是诚实的并销毁了有毒废料,则设置是安全的。仪式记录和参数哈希已发布供验证。
HMP 通过在标准累积 PoW 之上为每个区块添加封印奖励来修改链选择:
对于每个区块,封印乘数以基点值计算并应用于 block_pow_work:
封印乘数使用分级层级系统。只有 algoId 与区块挖矿算法匹配的 ELDER 级签名才计入同算法完整度。在每个层级内,乘数根据当前 Elder 与该算法总 Elder 的比率进行线性插值。跨算法奖励在区块自身算法之外每增加一个 ELDER 算法域加 500 个基点,上限为 +1500 基点(所有 4 种算法都有代表)。一个完全封印且涵盖所有 4 种算法域的区块达到其 PoW 工作量的 1.95 倍。未封印的区块价值为 1.0 倍。经过数百个区块的累积,信息素持续完整的链将积累显著更多的权重,即使原始 PoW 相当。
所需的签名者一致性随每算法 ELDER 数量而变化:
| Elder 数(每算法) | 所需一致性 | 理由 |
|---|---|---|
| 6+ | 80% | 完全安全,可吸收个别故障 |
| 4-5 | 75% | 强安全,略有容忍度 |
| 3 | 66%(3 中取 2) | 降级但可用 |
| 2 | 100%(两者均需) | 最大谨慎 |
| 0-1 | 不适用,纯 PoW 模式 | 蜂群尚未建立 |
这意味着网络以纯 PoW 模式启动,并随着挖矿蜂群的壮大有机过渡到 HMP 保护的共识。安全性源于参与,而非预设日期。
并非每个注册签名者都参与每次封印。BLS-VRF(可验证随机函数)控制哪些签名者的份额在 P2P 网络中中继。前一个区块的哈希作为 VRF 的种子。每个合格的守护进程用其长期密钥运行 VRF。选择是确定性的(所有节点都可以验证谁有资格),但不可预测(取决于无人能提前预测的区块哈希)。
在 V1 中,VRF 是中继层过滤器,不是共识规则。节点丢弃未通过 VRF 资格检查的签名者的封印份额,减少网络带宽,并使攻击者更难磨损或洪泛份额池。链选择评分计算组装封印中所有有效的 BLS 签名,无论 VRF 状态如何(见附录 A.4)。未来的协议升级可能将 VRF 资格提升为共识级别的封印有效性检查。
如果一个矿池在最近 100 个区块中解决了一个区块,或者它是该算法上最近 6 个不同解块矿池之一(以更远的回溯为准),则该矿池享有特权。这意味着任何算法上的特权集永远不会缩减到 6 个以下(假设已有 6 个不同的矿池曾挖掘过该算法)。
如果一个大型利润切换矿池连续挖掘了 100 个 KawPoW 区块,在该连胜之前最近解决过 KawPoW 区块的其他 5 个矿池仍被视为享有特权。它们的声音仍留在蜂群中。扩展回溯上限为 1,000 个区块(约 33 小时)。超过这个时间,参与已过于陈旧而不予计算。
KERRIGAN 继承了 Dash 的 ChainLock 系统(基于 LLMQ 的主节点区块最终确认),一旦有足够的主节点注册,将通过 spork 激活。但 ChainLocks 需要一个运作良好的主节点法定人数,这在创世后需要时间来建立。HMP 填补了这个空白:它从第一天起就利用已经在网络上的矿工提供重组抵抗力。随着主节点集的增长,ChainLocks 在 HMP 之上叠加以提供额外的最终性。它们相互补充。
你在电影院里。你中途离开去买爆米花。出去时,你注意到门口有个穿红衬衫的人,第三排有一对老年夫妇,前排有一群青少年。你买了爆米花,走回来,立刻感觉不对劲。红衬衫不见了。老年夫妇换了位置。青少年消失了。没有一张脸是对的。你走错了放映厅。不需要任何人告诉你——你只是注意到你期望看到的人不在那里。
这就是 HMP 检测攻击链的方式。网络知道哪些矿工一直在出现——解决区块、参与封印、获得 ELDER 状态。当一条竞争链出现时,协议检查那些熟悉的面孔是否在场。如果常客缺席,这条链的气味就不对。不需要跨链比较。你只是走错了房间。
现在将其扩展到四个房间。KERRIGAN 不是运行一个放映——而是运行一个四厅影院。X11、KawPoW、Equihash 200,9 和 Equihash 192,7 各有自己的房间和自己的常客。一个 X11 矿池在 X11 房间赢得声誉。一个 KawPoW 矿池在 KawPoW 房间赢得声誉。它们是拥有完全不同硬件的完全独立社区。
当多个房间的常客为一个区块背书时,该区块最强。仅由 KawPoW 常客背书的 KawPoW 区块获得部分奖励。加上 X11 常客、Equihash 200,9 常客和 Equihash 192,7 常客的签名,该区块获得跨算法奖励(第 6.6 节),最高可达其原始 PoW 权重的 1.95 倍。攻击者需要同时在所有四个房间填满令人信服的面孔——四个独立的人群、四个独立的硬件生态系统、四个独立的诚实挖矿历史,全部同时伪造。
考虑最精密的攻击者:无限预算、技术专长、耐心。
这些层级不是独立的障碍。它们相互强化。不诚实挖矿就无法获得特权,而诚实挖矿会增强你试图攻击的链。无法在秘密分叉上产生有效信息素,因为诚实矿池从未贡献他们的颜料。攻击者面对的不是七个问题。他们面对的是从七个角度看到的一个不可能问题:你能同时既是孤立的又是协作的吗?
HMP 是一种协调机制,而协调机制可以被滥用。控制足够特权以填满 expected_signers 的 ELDER 签名者卡特尔可以选择性地对目标矿池的区块扣留封印。目标矿池的区块将积累更少的链权重(更低的完整度比率),使其在与封印区块的重组竞争中更容易失败。
以下因素限制了这种攻击面:
诚实评估:HMP 大幅增加了 51% 攻击的成本,但它引入了一个纯 PoW 所没有的协调面。一个由修改过的守护进程组成的足够大的卡特尔可以利用封印扣留作为软审查工具。上述缓解措施使这变得昂贵且可检测,但并非不可能。这种权衡是有意为之的。替代方案(没有 HMP 的纯 PoW)对更简单、更便宜的算力租赁攻击严格来说更加脆弱。
HMP 在主网上分阶段激活:
| 阶段 | 高度 | 描述 |
|---|---|---|
| 阶段 2 | 第 100 个区块 | 公钥承诺开放 |
| 阶段 3 | 第 300 个区块 | 软封印开始(仅正向权重) |
| 阶段 4 | 第 500 个区块 | 完整 HMP,包含负向证明 |
正向与负向证明:在阶段 3,封印区块获得额外的链权重(正向证明:"此区块拥有蜂群支持")。在阶段 4,预期签名者的缺席也成为信号(负向证明:"此链缺少我们知道应该在这里的矿工")。
负向证明仅从候选链本身确定性计算,无需跨链比较。每条链携带自己的特权状态:ELDER 签名者集合从该链的区块历史中推导(谁解决了区块、谁参与了封印、在回溯窗口内)。如果一条链的特权追踪器显示 KawPoW 有 6 个 ELDER 签名者,但最近区块的封印只包含其中 2 个,完整度比率就很低,封印奖励就是部分的。不需要引用任何其他链。节点使用该链自身的状态独立评估每条候选链。
这就是第 6.10 节的影院测试:你走错了放映厅,常客不在他们的座位上。不需要比较——你只是注意到谁不在。
在 V1 中,负向证明仅影响链权重评分。它们是选择启发式,而非硬性有效性规则。缺少签名者的链不是无效的;它只是比预期签名者在场的链积累更少的权重。这种保守方法避免了在网络分区或短暂连接问题下的错误惩罚。未来的协议升级可能会随着网络成熟而收紧负向证明执行。
运行时终止开关(SPORK_25_HMP_ENABLED)允许在上线后出现问题时紧急停用。
| 参数 | 值 |
|---|---|
| 公钥地址前缀 | K(字节 45) |
| 脚本地址前缀 | 7(字节 16) |
| Sapling bech32m HRP | ks |
| BIP44 币种类型 | 99888(未注册;正式 SLIP-0044 注册待定) |
| 网络魔数 | 0x4B 0x52 0x47 0x4E("KRGN") |
| 网络 | P2P 端口 | RPC 端口 |
|---|---|---|
| 主网 | 7120 | 7121 |
| 测试网 | 17120 | 17121 |
| 开发网 | 37120 | 19798 |
| 回归测试 | 27120 | 19898 |
四个地理分布的种子节点处理初始节点发现:
| 种子节点 | 区域 |
|---|---|
| seed1.kerrigan.network | 美国 |
| seed2.kerrigan.network | 印度 |
| seed3.kerrigan.network | 日本 |
| seed4.kerrigan.network | 德国 |
KERRIGAN 定义了基于 DIP25 的压缩区块头,并为多算法字段进行了扩展。压缩头目前因多算法反序列化边缘情况待解决而被禁用;初始区块下载使用完整头。一个单字节位域控制包含哪些字段:
这在初始区块下载期间显著减少了头部带宽,因为只有一小部分区块需要传输完整的 Equihash 解决方案或 KawPoW 数据。
| 参数 | 值 |
|---|---|
| 时间戳 | 1,773,446,400(2026 年 3 月 11 日 12:00 UTC) |
| Nonce | 1,338,121 |
| Bits | 0x1e0ffff0 |
| 补贴 | 25 KRGN |
| 哈希 | 0x00000444f8dbee14c599ac723b35cc8021b12d48d092c7ac67d45f6d8a0b9c32 |
四种挖矿算法最直接的安全收益是抵抗单一向量攻击。控制 51% X11 算力的攻击者大约只控制网络总区块生产的 25%。要执行持续的 51% 攻击,他们需要同时主导至少两种算法,或者压倒一种算法的同时在其他算法上超过诚实矿工。Hivemind Protocol 使这更加困难:当链选择还要权衡来自已注册、已承诺签名者的封印证明时,仅有算力是不够的。
Sapling 的作废器集防止隐私票据的双花。每个票据都有一个唯一的作废器,由其在默克尔树中的位置和花费密钥导出。一旦作废器出现在链上,任何试图花费同一票据的交易都会在共识层面被拒绝。Groth16 证明在 BLS12-381 上的离散对数假设下是计算安全的;在不知道见证的情况下伪造证明是不可行的。
从 P2P 网络反序列化的所有数据在驱动内存分配、循环迭代或数组索引之前都会进行边界检查。Equihash 解决方案上限为 1,400 字节。封印签名者列表上限为 200 条。零知识证明上限为 256 字节。公钥承诺列表每区块上限为 16 个。网络数据中的任何字段都无法触发无界分配。
spork 系统允许开发团队在生产环境中禁用功能而无需硬分叉。关键 spork 包括:
Spork 密钥使用 2-of-3 阈值,需要三名密钥持有者中的两名授权才能进行任何 spork 更改。
V1 是以挖矿为核心的发布,所有核心系统处于活跃状态:
V2 将 KERRIGAN 从纯挖矿链扩展为面向 AI 推理的 GPU 计算网络。核心开发估计约为 12 周,总时间线 48 周,包括测试、审计和生态系统准备。架构是模块化的,因此 V2 可以在准备就绪后立即发布;12 个月的估计是保守的,不是承诺。
V2 组件:
推理提供者注册:GPU 运营者在链上注册,需要质押要求、硬件证明和服务端点。注册交易遵循与 DIP3 主节点相同的确定性列表模式,确保每个节点计算相同的提供者集合。
P2P 作业分发:推理请求通过 gossip 协议分发给提供者。作业分配使用基于 VRF 的选择,按提供者质押和性能历史加权。结果以哈希证明提交到链上用于争议解决。
可验证计算:提供者提交可被其他提供者抽查的计算证明。不正确的结果触发对提供者质押的削减。验证方案在吞吐量(并非每个结果都被验证)和安全性(作弊在统计上被检测和惩罚)之间取得平衡。
区块奖励重组:coinbase 分配变更为将 40% 的区块奖励分配给 AI GPU 推理参与者,在其按次推理收入之上叠加。挖矿保持 20%,主节点 20%,国库 15%,开发/创始人 5%。增长基金降至零,在 V1 发布阶段已完成其使命。
V1 和 V2 完成后,重点转向生态系统成熟:
KERRIGAN 通过让四种挖矿算法在各自独立的难度曲线上并行竞争,解决了硬件中心化问题。Sapling 隐私交易为用户提供了由 Groth16 零知识证明支撑的真正隐私。Hivemind Protocol 增加了第二个共识维度,要求来自已承诺、经验证矿工的封印证明,使 51% 攻击变得更加困难。
40% 增长基金确保项目在任何代币价格水平下都拥有建立交易所存在和生态系统基础设施所需的财务资源。V1 作为完整的、以挖矿为核心的区块链发布。V2 将相同的 GPU 基础设施扩展到 AI 推理,将挖矿硬件转变为通用计算资源。
代码是开源的。链参数已固定。挖矿从创世开始。
| 组件 | 源文件 |
|---|---|
| 多算法 PoW | src/primitives/block.h、src/primitives/block.cpp、src/pow.cpp |
| 代币经济学 | src/chainparams.cpp、src/masternode/payments.cpp |
| Sapling | src/sapling/、src/rust/src/bridge.rs、src/sapling/sapling_tx_payload.h |
| 主节点 | src/evo/dmn_types.h、src/evo/deterministicmns.h |
| HMP | src/hmp/、src/rust/src/hmp/ |
| 网络参数 | src/chainparams.cpp、src/chainparamsbase.cpp |
| 压缩头 | src/primitives/block.h(CompressibleBlockHeader) |
身份哈希:X11(上述)。PoW 哈希:相同。
身份哈希:X11(前 80 字节)。PoW 哈希:ProgPoW(sha256d(前 80 字节), nHeight, nNonce64) 对照 mix_hash 验证。ProgPoW 种子哈希是 sha256d(非 X11),与所有 KawPoW 矿工使用的 Ravencoin 标准匹配。字节序:ethash 使用大端序(bytes[0] = MSB),比特币使用小端序(begin() = LSB)。在每个转换边界进行字节反转。
身份哈希:X11(version + prevHash + merkleRoot + hashReserved + time + bits + nNonce256,140 字节布局)。PoW 哈希:对同一 140 字节输入验证 Equihash 解决方案。解决方案在区块的完整序列化中提交。
Equihash 身份哈希输入:Equihash 区块使用 140 字节输入(包括 hashReserved 和 nNonce256)进行身份哈希,而非标准的 80 字节区块头。4 字节的 nNonce 字段在 Equihash 区块中未使用。由于身份哈希直接提交 nNonce256,挖矿 nonce 和区块 ID 之间不存在可塑性。
区块 ID(由下一个区块中的 hashPrevBlock 引用)是身份哈希:对区块基础头部进行 X11(X11/KawPoW 为 80 字节,Equihash 变体为 140 字节)。所有算法都使用 X11 进行身份哈希。
唯一性保证:80 字节区块头包含默克尔根,它提交完整的 coinbase 交易。coinbase 包含:BIP34 强制的区块高度、矿工的支付地址、HMP 身份数据(CCbTx v4+ 包含矿工的 BLS 公钥)、嵌入的封印数据和矿池特定的 extranonce。在同一高度独立挖掘的两个区块将始终产生不同的 coinbase 交易(不同的矿工、不同的 extranonce、不同的 HMP 身份),因此产生不同的默克尔根,进而产生不同的身份哈希。
为在协议层面使这一保证显式化:KERRIGAN 要求 coinbase 交易在 CCbTx minerIdentity 字段中包含挖矿守护进程的 HMP 公钥(v4 HMP_SEAL 和 v5 HMP_COMMITMENT,在 HMP 阶段 3 于第 300 个区块激活后)。由于每个守护进程都有唯一的 BLS 密钥对,coinbase 保证每个守护进程在每个高度都是唯一的。激活前(第 0-299 区块),唯一性依赖标准的 BIP34 高度 + extranonce 机制,这对于低竞争的早期链已经足够。在阶段 2(第 100-299 区块),矿工通过隐式和显式承诺注册身份,但执行推迟以给生态系统留出采用时间。
共识执行:节点拒绝 HMP 阶段 3 激活高度及以上缺少有效 minerIdentity 字段的 CCbTx 的任何区块。这是共识规则,而非关于矿工行为的假设。阶段 3 激活后没有矿工身份的区块无效,句号。
算法特定字段提交:Equihash 解决方案、KawPoW mix 哈希和扩展 nonce 通过 PoW 验证检查提交,而非通过区块 ID。更改任何算法特定字段都会使 PoW 证明无效。链连接(prevHash)是统一的且与算法无关的。
多个有效见证:在天文概率极低的情况下,单个矿工为同一 80 字节区块头找到两个有效的 PoW 解决方案(相同的身份哈希,不同的算法特定见证),协议将它们视为同一区块。收到的第一个有效见证被接受;对已知身份哈希的后续见证被忽略。这是安全的,因为身份哈希提交默克尔根(因此提交所有交易),所以两个见证代表具有相同经济效果的相同区块内容。
无效区块投毒缓解:由于身份哈希不提交算法特定字段,恶意中继理论上可以变异有效区块的 Equihash 解决方案或 KawPoW mix_hash,产生具有相同身份哈希的无效区块。如果节点缓存"此哈希无效"并稍后收到真实区块,可能会拒绝它。KERRIGAN 通过在将区块头提交到索引之前验证算法特定的 PoW 证明来缓解此问题。PoW 检查失败的区块在网络层被丢弃,不会污染区块索引。这与 DigiByte 和其他将身份哈希与 PoW 验证分离的多算法链使用的方法相同。
elders_present、elder_count 和 block_pow_work 在第 A.4 节中定义。当比较同一高度的两条竞争链时,total_chain_weight 更高的链获胜。
| Elder 数(每算法) | 所需一致性 | required_count(示例) |
|---|---|---|
| 6 | 80% | ceil(0.80 * 6) = 5 |
| 5 | 75% | ceil(0.75 * 5) = 4 |
| 4 | 75% | ceil(0.75 * 4) = 3 |
| 3 | 66% | ceil(0.66 * 3) = 2 |
| 2 | 100% | ceil(1.00 * 2) = 2 |
| 0-1 | 不适用 | 纯 PoW 模式(所有区块的 seal_multiplier = 10000) |
VRF 委员会选择和 Groth16 零知识证明包含在 P2P 层的封印份额中,用作反 DoS 和反磨损保护。在 V1 中,它们不是共识关键的:封印的有效性仅取决于上述列出的 BLS 签名、承诺成熟度和特权检查。节点在中继封印份额之前验证 VRF 和零知识证明(无效证明在网络层被丢弃),但 coinbase 中的组装封印纯粹根据其 BLS 签名评分。这种保守方法在发布时保持共识规则最小化。未来的协议升级可能在证明系统经过主网实战测试后将 VRF 资格和零知识证明验证提升为共识规则。
区块 N 的封印嵌入区块 N+2 的 coinbase 中(nHMPSealTrailingDepth = 2)。这意味着:
节点在处理具有算法特定 PoW 字段的区块时遵循以下规则:
| 组件 | 参数 | 来源 |
|---|---|---|
| Sapling(隐私交易) | BLS12-381 上的 Groth16 证明/验证密钥 | Zcash Powers of Tau + Sapling MPC(重用,电路完全相同) |
| HMP MiMC 电路 | BLS12-381 上的 Groth16 证明/验证密钥 | 多方计算仪式;至少一名参与者诚实即安全;记录已发布 |