解决“最后一个受托人作恶的问题”
在DPoS随机产生算法中,作恶的受托人可以通过故意错过他负责产生的区块来抛弃不想要的随机结果,这是他们唯一可以做的,但是当随机过程的间隔小于1回合(101个区块)时这会是一个潜在的问题,因为作恶的受托人可以预测他将会在哪个间隔中产生哪个区块,进而通过参与游戏确保在那个区块猜中结果并赢得奖励。
我们可以将BLOCK_TICKET_SALE定义为恶意受托人在一个区块内将会买入的所有彩票。
如果出奖的间隔大于101个区块,表示期间至少会有一次洗牌,那么作恶受托人就无法预测他会分配到生产哪个区块。那么他唯一的策略就是进行猜测或是每个区块都参与。如果是用猜的,他的机会就是1/101,而发动攻击的预期报酬就是他输掉的时候的彩票价格,因为下一位受托人会继续取代他并随机出奖。如果是每个回合都参与以达到至少猜中一次的目的,他的攻击成本就是(101×BLOCK_TICKET_SALE),但是预期的报酬仍然是他在单一区块的奖励汇报,这样一来攻击的期望成本高于期望回报,从概率的角度来看是亏损的。
对于某些游戏来说,101区块的出奖间隔太久,因此需要快速猜测,这时的方案如下,出奖的结果可由两位受托人抽出:第一位受托人的随机数只负责产生1~3的X,以决定在他之后的第X个区块的抽奖随机数,第二位受托人可能作恶并试图发动攻击,但是他无法在4个区块之前预测谁会轮到产生抽奖随机数的区块,因此他的攻击成本是(3×BLOCK_TICKET_SALE),但是预期回报只有1block_ticket_sale,游戏规则唯一需要的就是设置第一个受托人1个区块之前的出奖间隔。


雷达卡



京公网安备 11010802022788号







