节点总数固定,如何用最少的通信轮数得到共识的不可预测的随机数? - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
请不要在回答技术问题时复制粘贴 AI 生成的内容
yodi
V2EX    程序员

节点总数固定,如何用最少的通信轮数得到共识的不可预测的随机数?

  •   yodi 197 天前 1356 次点击
    这是一个创建于 197 天前的主题,其中的信息可能已经有所发展或是发生改变。

    节点总数固定,每个节点有自己的私钥和其他所有节点的公钥。 网络通信质量不稳定,有丢包的可能,各个节点间延时不均匀。 用什么方式可以在少数节点宕机、丢包、延时情况下依然能用最少的通信轮次共识出不被预测的随机数?

    节点 N 有 i 个。 当 N 得到出上一个已共识的随机数时,将自己产生的随机数 r 的 hash 与签名 Ni(hash(r),sig)广播 N 陆续收到其他节点 Ni(hash,sig),公钥验证后追加保存在 S 里,当 S 中累计到 i/2+1 个 sig 后签名并广播 S N 陆续收到 Si,这时由于网络质量在极端情况下会使每个 N 的 S 是不同的(比如 12347 ,23456 ,13456 )而无法达成共识,我觉得思路不对,原计划在 hash 达成共识后再公示出 r ,但现在 S 无法达成共识。

    求老哥们指点一下思路,可以忽略我的想法。

    4 条回复    2025-05-15 07:44:27 +08:00
    jingniao
        1
    jingniao  
       197 天前 via Android
    分布式共识算法 raft paxos 之类的?
    rekulas
        2
    rekulas  
       197 天前
    有多个节点的话可以走选举模式,例如每 3 个节点一个组,每一个小组内部协商一个种子+salt 例如 5aa9ad69aa9e7ecdca+salt 然后广播计算的 hash,所有组广播完成后再广播种子然后将所有种子排序组装成最终随机数
    这种情况下由于每个组有 3 个成员即使其中 1 2 个节点临时不通也不影响结果,不过也存在一定的风险,例如某个组织恰巧控制了某个组所有节点就可能发起攻击,针对这种情况对于节点需要有奖惩机制以尽量降低攻击可能性

    还有一种方法,延迟随机数方向,例如各个节点需要在 3 秒内广播自己产生的种子,然后将有效时间内的所有种子进行排序计算最终随机数-但这个计算过程需花费 N 秒,N>>3,通过调整 N 的值即可让攻击成本上升到一个无法接受的水平,从而保证安全性

    其他方向还有包括门限签名等分布式算法
    yodi
        3
    yodi  
    OP
       197 天前 via iPhone
    @rekulas 预设的条件是网络质量不佳,把节点分组协商种子的意义是什么?协商会消耗更多的时间。另一种方法中,介于通信质量差,每个节点收到的种子的节点可能不完全一致,甚至于完全不一致。我没懂您的意思,待我多消化消化。


    @jingniao 是的,但是我不太确定这种场景下应该用哪种共识算法,raft 的话如果恶意节点做 leader 是否能避免他作恶? BFT 就会好一些,投票机制可以容忍部分节点瞎投或者不投票。但我不知道该用哪种 BFT ,有点难理解。
    jingniao
        4
    jingniao  
       196 天前 via Android
    你都用签名了,leader 节点最多不提交共识,跟随节点可以验证数据有效吧,leader 节点不工作的就超时降级重选吧。
    另外你这不就是区块链中联盟链吗,可以找资料看看。
    关于     帮助文档     自助推广系统     博客     API     FAQ     Solana     898 人在线   最高记录 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 24ms UTC 20:26 PVG 04:26 LAX 12:26 JFK 15:26
    Do have faith in what you're doing.
    ubao msn snddm index pchome yahoo rakuten mypaper meadowduck bidyahoo youbao zxmzxm asda bnvcg cvbfg dfscv mmhjk xxddc yybgb zznbn ccubao uaitu acv GXCV ET GDG YH FG BCVB FJFH CBRE CBC GDG ET54 WRWR RWER WREW WRWER RWER SDG EW SF DSFSF fbbs ubao fhd dfg ewr dg df ewwr ewwr et ruyut utut dfg fgd gdfgt etg dfgt dfgd ert4 gd fgg wr 235 wer3 we vsdf sdf gdf ert xcv sdf rwer hfd dfg cvb rwf afb dfh jgh bmn lgh rty gfds cxv xcv xcs vdas fdf fgd cv sdf tert sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf shasha9178 shasha9178 shasha9178 shasha9178 shasha9178 liflif2 liflif2 liflif2 liflif2 liflif2 liblib3 liblib3 liblib3 liblib3 liblib3 zhazha444 zhazha444 zhazha444 zhazha444 zhazha444 dende5 dende denden denden2 denden21 fenfen9 fenf619 fen619 fenfe9 fe619 sdf sdf sdf sdf sdf zhazh90 zhazh0 zhaa50 zha90 zh590 zho zhoz zhozh zhozho zhozho2 lislis lls95 lili95 lils5 liss9 sdf0ty987 sdft876 sdft9876 sdf09876 sd0t9876 sdf0ty98 sdf0976 sdf0ty986 sdf0ty96 sdf0t76 sdf0876 df0ty98 sf0t876 sd0ty76 sdy76 sdf76 sdf0t76 sdf0ty9 sdf0ty98 sdf0ty987 sdf0ty98 sdf6676 sdf876 sd876 sd876 sdf6 sdf6 sdf9876 sdf0t sdf06 sdf0ty9776 sdf0ty9776 sdf0ty76 sdf8876 sdf0t sd6 sdf06 s688876 sd688 sdf86