大部分PoS链都有一个不太愿意被拿出来讨论的问题:谁来出下一个块,这件事到底有多安全?
很多链的做法是提前公布出块者名单,或者通过节点之间互相通信来选人。听起来没毛病,但仔细想想就会发现一个隐患——如果我提前知道下一个出块者是谁,我就可以针对性地发起DDoS攻击,把这个节点打瘫,整条链的出块就卡住了。这不是理论上的风险,以太坊早期信标链测试阶段就出现过类似的讨论。
@Dusk_Foundation 在这个环节的处理方式让我觉得挺有意思。它用了一套叫DS(Deterministic Sortition)的算法,翻译过来就是确定性抽签。每个节点自己在本地算一个分数,这个分数跟你的质押量挂钩,质押越多被选中的概率越大,但又不是纯粹按钱排座次,里面有伪随机的成分。
关键在于"无需交互"这四个字。节点不用跟任何人沟通就能知道自己这轮有没有被选中,别的节点也无法提前知道谁会被选中。等区块提出来的那一刻,大家才知道出块者是谁。你想攻击?你连目标都找不到。#dusk
质押量加权这个设计也比较务实。纯随机的话,一个质押了100万DUSK的节点和质押了100个DUSK的节点有同样的出块概率,那大户凭什么锁仓?但如果完全按质押量排名,又变成了寡头垄断。DS在这两头之间取了一个平衡,质押多的确实概率更大,但不是确定的,小节点依然有机会。$DUSK
不过话说回来,这套机制的实际表现还得看主网长期运行之后的数据。算法层面的公平和现实中的公平之间,往往还隔着节点分布、质押集中度这些变量。设计得再漂亮,最终还是要看跑起来之后大户会不会用别的方式形成事实上的垄断。
你们觉得PoS链的出块者选举,公平性和安全性哪个更难做到?👇
很多链的做法是提前公布出块者名单,或者通过节点之间互相通信来选人。听起来没毛病,但仔细想想就会发现一个隐患——如果我提前知道下一个出块者是谁,我就可以针对性地发起DDoS攻击,把这个节点打瘫,整条链的出块就卡住了。这不是理论上的风险,以太坊早期信标链测试阶段就出现过类似的讨论。
@Dusk_Foundation 在这个环节的处理方式让我觉得挺有意思。它用了一套叫DS(Deterministic Sortition)的算法,翻译过来就是确定性抽签。每个节点自己在本地算一个分数,这个分数跟你的质押量挂钩,质押越多被选中的概率越大,但又不是纯粹按钱排座次,里面有伪随机的成分。
关键在于"无需交互"这四个字。节点不用跟任何人沟通就能知道自己这轮有没有被选中,别的节点也无法提前知道谁会被选中。等区块提出来的那一刻,大家才知道出块者是谁。你想攻击?你连目标都找不到。#dusk
质押量加权这个设计也比较务实。纯随机的话,一个质押了100万DUSK的节点和质押了100个DUSK的节点有同样的出块概率,那大户凭什么锁仓?但如果完全按质押量排名,又变成了寡头垄断。DS在这两头之间取了一个平衡,质押多的确实概率更大,但不是确定的,小节点依然有机会。$DUSK
不过话说回来,这套机制的实际表现还得看主网长期运行之后的数据。算法层面的公平和现实中的公平之间,往往还隔着节点分布、质押集中度这些变量。设计得再漂亮,最终还是要看跑起来之后大户会不会用别的方式形成事实上的垄断。
你们觉得PoS链的出块者选举,公平性和安全性哪个更难做到?👇