与任何区块链一样,节点是 Pi 去中心化的核心。 在 Pi 中,我们决定将节点开放给任何一台计算机连接到互联网的先锋,而不是依赖中心化的机构节点。 借助从移动应用程序的各个先锋安全圈聚合的全局信任图,这些节点将运行共识算法来验证交易和处理区块。 由于节点对 Pi 区块链的去中心化、安全性和持续性至关重要,因此节点操作的先锋将获得额外的挖矿奖励。
节点奖励算力公式 N
N(I) = node_factor • tuning_factor • I
Node_factor = Percent_uptime_last_1_days • (Uptime_factor + Port_open_factor + CPU_factor),
其中
Uptime_factor = (Percent_uptime_last_90_days + 1.5*Percent_uptime_last_360_days(360-90) + 2* Percent_uptime_last_2_years + 3*Percent_uptime_last_10_years),
Port_open_factor = 1 + percent_ports_open_last_90_days + 1.5*percent_ports_open_last_360_days + 2* percent_ports_open_last_2_years + 3*percent_ports_open_last_10_years,
CPU_factor = (1 + avg_CPU_count_last_90_days + 1.5*avg_CPU_count_last_360_days + 2* avg_CPU_count_last_2_years + 3*avg_CPU_count_last_10_years)/4。
Percent_uptime_last_*_days/years
是单个节点处于活动状态并可被网路访问的最后 * 时段的百分比(这个变数的 * 是指天数)
percent_ports_open_last_*_days/years
是单个节点的端口打开以连接到网路的最后 * 时段的百分比
avg_CPU_count_last_*_days/years
是单个节点在最后 * 时段内提供给网路的平均 CPU
Tuning_factor
是一个统计因子,它将 node_factor 归化为 0 到 10 之间的数字
节点奖励取决于正常运行时间因素、端口开放因素、CPU 因素和调和因素。给定时间段内节点的正常运行时间参数是该节点在该时间段内处于活动状态的时间比例。例如,昨天 25% 的正常运行时间参数意味着该节点昨天在 24 小时内总共有 6 小时处于活动状态且可访问。 Pi 节点软体循跡特定节点处于活动状态的时间。从开放主网阶段开始,只有在给定时间点在功能上运行的节点才被认为是活动的。这是节点可靠性的代理。但是,对于与挖矿奖励相关的历史数据,如果节点应用程序打开并连接到互联网,即使它没有正常运行,也可以认为节点处于活动状态。这种对过去表现的豁免承认,运行测试网的社区节点架设者,为全网提供了重要的数据和基础设施,以实现节点软体和测试网的多次迭代,并且他们节点的不运行并非总是节点操作者的错误。
给定时间段内节点的端口开放参数是在该时间段内检测到节点的特定端口可从互联网访问的时间比例。 Pi 节点使用端口 31400 到 31409,使其他节点可以通过这些端口和网路 IP 地址访问它们。端口开放的节点能够响应其他节点发起的通信,而端口封闭的节点无法接收其他节点的此类通信,只能发起通信。 Pi 的共识协议依赖于节点之间发送一系列信息。因此,开放端口节点对于 Pi 区块链的运行至关重要,因此值得挖矿奖励增速。事实上,网路的目标是至少有 1/8 的节点具有开放端口,而拥有开放端口是成为超级节点的先决条件之一。
给定时间段内节点的 CPU 参数是该时间段内计算机上可用的 CPU 内核/线程的平均数。更高的 CPU 参数使区块链为未来的可扩展性做好準备,例如,每个区块处理更多事务或每秒更多事务的能力。 Pi 区块链不是能源和资源密集型区块链。该网路最初设定为大约每 5 秒在一个新区块上运行,最多 1,000 个交易 (T)。因此,该网路能够有效地处理每秒约 200 笔交易 (TPS) 或约 1700 万 T/天。如果未来区块链出现拥塞,可以通过将每个区块的交易量从 1000 次增加到 10,000 次,将此限制增加到 2,000 TPS(约 170M T/天)。 Pi 节点贡献的 CPU 越高,网路未来增长和扩展的空间就越大。此外,来自 Pi 节点的更高集体 CPU 将允许在 Pi Network 上构建新颖的基于点对点节点的应用程序,例如分散的 CPU 共享应用程序,让计算能力密集的应用程序运行或提供分佈式云服务。这些服务将通过这些服务的客户支付的额外 Pi 进一步奖励贡献节点。
最后,一个调整因子将节点奖励归一化为 0 到 10 之间的数字。这意味着使节点奖励与承认对 Pi 网路的其他贡献的其他类型的挖矿奖励相当。在封闭式主网阶段(如路线图部分所述),节点奖励公式预计会迭代。例如,对数或根函数的使用可能潜在地消除对调整因子的需要。
让可靠的节点在很长一段时间内以可预测的方式运行对于区块链的健康至关重要。 这不是一个完成的贡献。 因此,正常运行时间因子、端口开放因子和 CPU 因子都是在不同的时间段内计算的,其中最近时间段的值比更远过去的相同长度的时间段的权重更大。 但是请注意,节点奖励是前一个挖矿週期的正常运行时间因素的倍数。 因此,如果先锋的节点在前一个日历日的整个时间内都处于非活动状态,则他们将不会在给定的挖矿週期中获得任何节点奖励。 与应用程序使用奖励类似,作为节点架设者的过去贡献没有被动奖励。 这也意味着前一个日历日的低正常运行时间因素(即使节点在一天中的一部分时间处于活动状态)将大大减少给定日期的节点奖励,尽管过去的节点贡献很高。
【N】公式
N(I) = ① node_factor • ② tuning_factor • ③ I
节点奖励率(N(I)) = ① 节点运行参数 × ② 加权参数 × ③ 基础奖励率(I)
① Node_factor 节点运行参数
= Percent_uptime_last_1_days
× (Uptime_factor + Port_open_factor + CPU_factor)
= 前一天节点处于可被网路访问的百分比
× (
十年内节点网路处于可被访问的加权后百分比
+ 十年内节点端口处于可被连结(开启)的加权后百分比
+ (十年内节点 CPU
处于可提供网路运算的加权后百分比) / 4
)
② Tuning_factor 统计参数,是将 node_factor 加权为 0 到 10 之间的参数。
③ I(B,L,S) 基础奖励率,由 B(全网基础值),L(锁仓率),S(安全圈)计算而得。
【参数说明】
Uptime_factor
= (
Percent_uptime_last_90_days
+ 1.5×Percent_uptime_last_360_days(360-90)
+ 2.0×Percent_uptime_last_2_years
+ 3.0×Percent_uptime_last_10_years
)
节点可连网参数(Uptime_factor)
= (
最近 90 天可连网百分比
+ 1.5 × 最近一年减去最近 90 天可连网百分比
+ 2.0 × 最近二年可连网百分比
+ 3.0 × 最近十年可连网百分比
)
Port_open_factor = (
1
+ percent_ports_open_last_90_days
+ 1.5×percent_ports_open_last_360_days
+ 2.0×percent_ports_open_last_2_years
+ 3.0×percent_ports_open_last_10_years
)
节点端口开启参数(Port_open_factor)
= (
1
+ 最近 90 天端口开启百分比
+ 1.5 × 最近一年端口开启百分比
+ 2.0 × 最近二年端口开启百分比
+ 3.0 × 最近十年端口开启百分比
)
CPU_factor = (
1
+ avg_CPU_count_last_90_days
+ 1.5×avg_CPU_count_last_360_days
+ 2.0×avg_CPU_count_last_2_years
+ 3.0×avg_CPU_count_last_10_years
)/4
节点 CPU 可提供运算参数(CPU_factor)
= (
1
+ 最近 90 天平均 CPU 可提供运算百分比
+ 1.5 × 最近一年平均 CPU 可提供运算百分比
+ 2.0 × 最近二年平均 CPU 可提供运算百分比
+ 3.0 × 最近十年平均 CPU 可提供运算百分比
)/4
Percent_uptime_last_*_days/years 是单个节点处于活动状态并可被网路访问的最后 * 时段的百分比。
percent_ports_open_last_*_days/years 是单个节点的端口打开以连接到网路的最后 * 时段的百分比。
avg_CPU_count_last_*_days/years 是单个节点在最后 * 时段内提供给网路的平均 CPU。
【分析说明】
① Node_factor 节点运行参数是由:前一天可被网路访问 × 三种状态的加权,计算而成。
一、可见「前一天节点处于可被访问」非常重要。也就是,前一天节点断网或无法连网,则该值为 0、该次的「节点运行参数」为 0,使得「节点奖励率(N(I))」结果为 0。这个分析重点在于,其一,处于可连网的节点就有奖励,而且最重要;其二,表明节点可连网(即使端口没有开启)就是有效节点,可能处于备用(或说备选)状态,因此给予奖励(免得说做白工)。
二、观察「节点端口开启参数(Port_open_factor)」和「节点 CPU 可提供运算参数(CPU_factor)」的运算中,都有基本值 +1,也就是,这两个参数即使端口没有开启、CPU 没有提供算力,还是有 +2 的保底值(不为 0 ),可以看出设计上,以节点电脑电源开启、有连网(必须先前路由广播过),既能获得节点奖励(N),多寡而已。
三、整个参数设计上可以看出,仍然以贡献度为主,尤其可用率时长为主,越早架设,获得的乘数倍数越高,也是奖励早期参与的先锋贡献。
四、在 CPU 的参数设计上,该参数最后会除以 4,我的理解是,以 4 线程多工运算为一个基准,因此,不需要在设备上追求最好的 CPU。
② Tuning_factor 统计参数,是将 node_factor 加权为 0 到 10 之间的参数。
这个加权参数以 node_factor 值作为对标,数值从 0-10,计算方式不明,可能是在对节点运行参数里的各参数再做权重分配,例如端口开启权重占比。
③ 基础奖励率(I)
不再此处说明,自行研读计算方式。
以上分析,是作者个人观点,不代表项目方的意思,仅供参考,正确及最终数值以白皮书所列为准。