Skip to main content

罚没规则

与工作量证明(PoW) 不同的是,PoS系统在出块/投票时已经付出了链下的资本支出,因此需要一个风险资本来防止多链投票的逻辑/最佳策略。 我们打算实施严格的规则,如果这些规则被破坏,将导致某些违规验证节点的质押从流通中删除。 考虑到PoH数据结构的排序属性,我们认为可以将罚没规则简化为每个投票分配的投票锁定时间。

举例说明 每个投票都有一个关联的锁定时间(PoH持续时间),表示来自该验证节点的任何其他投票的持续时间必须在包含原始投票的PoH中,或者该验证节点的部分质押是可罚没的。 该持续时间是初始投票PoH计数和所有其他投票PoH计数的函数。 它可能采用以下形式:

Lockouti\(PoHi, PoHj\) = PoHj + K \* exp\(\(PoHj - PoHi\) / K\)

其中PoHi是要应用锁定的投票的高度,而PoHj是同一分叉上当前投票的高度。 如果验证节点对任何PoHk上的不同PoH分支(其中 k > j > i 和 PoHk < Lockout(PoHi, PoHj))进行投票,则该验证节点的部分质押有被罚没的风险。

除了上述功能形式锁定之外,早期实现还可以基于先进先出(FIFO) 数据结构和类似以下逻辑的数值:

  • 每个有效验证节点拥有32票的FIFO队列
  • 将新的投票推入队列(push_front) 的顶部
  • 过期的选票弹出顶部(pop_front)
  • 将选票推入队列时,每个排队选票的锁定都会加倍
  • 如果queue.len() > 32,则从队列后面删除投票
  • 应该存储从队列后面移走的最早和最新的高度

可能会向任何证明已违反PoH罚没条件的节点提供一定百分比的罚没报酬。

部分罚没#

在到目前为止描述的模式中,当验证节点对给定的PoH流进行投票时,他们将在投票锁定的时间内提交到该分叉。 一个悬而未决的问题是,如果认为处罚对于诚实的错误或轻率的行为过于严厉,验证节点是否会犹豫对可用的分叉进行投票。

解决此问题的一种方法是实施部分罚没,根据以下任何一种情况进行一部分罚没:

  1. 验证节点在总验证节点池中所占的比例,在同一时间段(alaCasper)
  2. 自投票开始以来的时间量(例如,随着时间的推移,可存入的总金额线性增加的百分比),或两种都有。

这是目前正在探索的领域。