昨天晚上10:00点钟睡不着我又翻开$DUSK 白皮书第2节说Kadcast的路由表按XOR距离分桶,每个桶存多个对等节点
我一开始没想通一个问题,节点ID是160位的,理论上距离范围很大,分桶策略怎么确定?Kademlia的做法是每段距离一个桶,离自己越近的桶越小,越远的桶越大。这个设计在Kadcast里沿用,但有一个地方我反复看了两遍才确认,Kadcast的广播不向所有桶里的节点发,只向递增XOR距离的选定节点转发,相当于每个节点只负责把消息传给离自己更远的那一层,不做横向扩散
这个逻辑的好处我后来才想清楚,它把传统Gossip的消息扩散变成了消息接力,每个节点只做一次接力,不重复转发。但这样对路由表的准确性要求很高,如果某个节点离线了但路由表没更新,消息就会断掉。白皮书里说bucket内多个peer的冗余设计可以解决这个问题,但我没看到具体数据,比如一个bucket里存几个peer才够,刷新间隔是多少
看完全文后我想到一个问题。@Dusk_Foundation 在做隐私交易的同时也在做隐私P2P,这两个层面之间有一种关系。交易层用Phoenix隐藏交易内容,网络层用Kadcast隐藏传播路径,如果只做了一层而另一层不做,攻击者就能从没有被保护的那一层找到突破口。比如交易层用zk-SNARKs隐藏了金额,但网络层用标准Gossip的话,IP地址和传播时间这些信息还是能暴露交易活动。Kadcast的存在让网络层不成为隐私链条里的薄弱环节,这个判断比广播效率优化更能说明它的价值
#dusk
但这个做法的成本是路由表维护的复杂性。如果网络规模大、节点进出频繁,Kadcast能不能保持这个效果,我还需要看更多资料才能判断。白皮书目前没有提供长期数据
我一开始没想通一个问题,节点ID是160位的,理论上距离范围很大,分桶策略怎么确定?Kademlia的做法是每段距离一个桶,离自己越近的桶越小,越远的桶越大。这个设计在Kadcast里沿用,但有一个地方我反复看了两遍才确认,Kadcast的广播不向所有桶里的节点发,只向递增XOR距离的选定节点转发,相当于每个节点只负责把消息传给离自己更远的那一层,不做横向扩散
这个逻辑的好处我后来才想清楚,它把传统Gossip的消息扩散变成了消息接力,每个节点只做一次接力,不重复转发。但这样对路由表的准确性要求很高,如果某个节点离线了但路由表没更新,消息就会断掉。白皮书里说bucket内多个peer的冗余设计可以解决这个问题,但我没看到具体数据,比如一个bucket里存几个peer才够,刷新间隔是多少
看完全文后我想到一个问题。@Dusk_Foundation 在做隐私交易的同时也在做隐私P2P,这两个层面之间有一种关系。交易层用Phoenix隐藏交易内容,网络层用Kadcast隐藏传播路径,如果只做了一层而另一层不做,攻击者就能从没有被保护的那一层找到突破口。比如交易层用zk-SNARKs隐藏了金额,但网络层用标准Gossip的话,IP地址和传播时间这些信息还是能暴露交易活动。Kadcast的存在让网络层不成为隐私链条里的薄弱环节,这个判断比广播效率优化更能说明它的价值
#dusk
但这个做法的成本是路由表维护的复杂性。如果网络规模大、节点进出频繁,Kadcast能不能保持这个效果,我还需要看更多资料才能判断。白皮书目前没有提供长期数据