如何配置Substrate PoA网络中Aura验证者的奖励额度
Substrate Aura验证者奖励配置方案
首先明确核心前提:pallet-aura本身只负责共识层的出块权限校验、验证者轮次排序,没有内置任何原生奖励发放逻辑。你运行的网络如果已经存在验证者奖励,说明已经接入了自定义经济逻辑,调整奖励数值按你实际用的奖励实现方式对应修改即可:
如果你是最常见的、在runtime hook里写死固定出块奖励的实现:
直接打开runtime/src/lib.rs,找到区块生命周期钩子(on_initialize/on_finalize)里的奖励发放代码,直接修改写死的奖励常量即可,示例代码段参考:// 每个区块执行到最终阶段时触发 fn on_finalize(n: BlockNumberFor<T>) { // 获取当前区块的Aura出块作者 let block_author = pallet_aura::Pallet::<T>::author().unwrap(); // 👇 这里就是你要改的单块奖励数值,单位是链上最小精度 const BLOCK_REWARD: u128 = 1_000 * 10u128.pow(12); // 例:单块奖励1000个精度12位的代币 // 给作者铸造奖励的逻辑 pallet_balances::Pallet::<T>::mint_into(&block_author, BLOCK_REWARD.into()).ok(); }修改完成后重新编译runtime,通过
set_code交易做无分叉runtime升级就能生效,不要直接替换节点二进制硬分叉,会导致链分裂。如果你的奖励来自交易手续费分成:
这类实现一般会把用户支付的交易手续费按比例分给出块验证者,剩余部分销毁/进入国库,你只需要找到手续费分流逻辑里的分成比例、基础手续费换算系数两个参数调整即可,不需要动Aura相关配置。如果你是把Aura和
pallet-staking绑定做质押奖励(PoA网络也可以用staking管理验证者集合和奖励):
Aura本身不处理奖励逻辑,你直接调整staking pallet的对应参数即可:包括每个周期(Era)的总奖励额度、验证者佣金比例、奖励释放周期这些配置,改完升级runtime生效。
不要修改
pallet-aura源码来嵌入奖励逻辑,Aura的定位就是纯共识组件,经济逻辑和共识逻辑耦合会给后续链升级埋很大隐患。
内容的提问来源于stack exchange,提问作者hgminerva
相关产品推荐
相关产品推荐

