问题背景:
对于POS共识而言,验证人选举对于网络安全至关重要。提名人的重要任务是评估和选择最值得信赖和最有能力的验证人。然而,这项任务非常具有挑战性,在多个验证人节点中选出合适的候选人需要大量的技术专长人员参与。对于提名人来说,如何选择提名人能最大程度获得pos的奖励,是一个比较困难的问题。
问题分析:
不妨假设目前有3哥提名者Validator-1,Validator-2,Validator-3。如何选择validator获得最大的提名奖励,显然是一个组合优化问题。即使看出来了是一个组合优化问题,但是要解决之前,需要对参数进行量化建模。
量化建模:
求解问题之前,最重要的一步是量化链上数据。所以,先专注于量化链上数据,因为这些数据可验证且易于处理。 这种纯粹的定量方法应被视为对基于定性数据的选择过程的补充,其中提名者例如根据验证者的身份或在社区中的影响力/参与度为验证者投票。
最基本的链上数据有:Self-stake,Other-Stake,Total-Stake,Commission,Era-Points和Number of Nominators等。但其实这些是不足的,有很关键的量化参数需要建模。一个是performance。参考Jonas Gehrlein的观点,performance可以定义为如下:
解释:从提名人的角度来看,验证人的表现取决于该验证人收集的Era-points、提名人在总权益中的份额以及验证人收取的佣金。基于performance还有很多的衍生参数:
算法
有了这些量化模型参数,我们就可以进行下一步设计提名算法。Jonas Gehrlein引入了UTAStar算法进行求解,这里稍微展开一下。我们定义效用函数,
其中,约束条件是。u 是 0 和 1 之间归一化的非递减函数。假设是提名名单,则
其中, 和 表示上调和下调的误差。不同的需求有不同的目标函数,假如我们需要稳定的pos年化率,寻找一个稳定可靠的节点,那么我们可以定义为如下的最优化目标函数:
当然,我们可以用线性规划来求解这个目标函数:
约束条件有点复杂,展开篇幅就有点大了。文末附上参考链接。
但是,我们更希望优化目标函数还可以兼顾寻找与预测利润最大化的提名序列。所以我们还需要同时把考虑进正则项。
实验
我爬取了DOT近300多个ERA的量化数据作为实验和回测。代码和数据会同时开源。现在还写好。
。。。未完待续
Github链接:https://github.com/shanxuanchen
参考链接:https://w3f-research.readthedocs.io/en/latest/polkadot/economics/1-validator-selection.html