Skip to main content

DKG flow

下面是 setUp1setUp2setUp3 之间在分布式密钥生成(DKG)过程中进行的点对点(p2p)消息传递的示意图。这个过程分为三个主要步骤,每个步骤都有特定的消息传递。

Step 1: 生成承诺并发送给其他参与者

每个参与者生成自己的承诺,并将其发送给其他参与者。

setUp1:
msgs1_1 -> setUp2, setUp3

setUp2:
msgs2_1 -> setUp1, setUp3

setUp3:
msgs3_1 -> setUp1, setUp2

Step 2: 接收承诺并生成秘密分享和零知识证明

每个参与者接收其他参与者的承诺,生成秘密分享和零知识证明,并将这些发送给其他参与者。

setUp1:
msgs1_2_in = [msgs2_1[1], msgs3_1[1]]
msgs1_2 -> setUp2, setUp3

setUp2:
msgs2_2_in = [msgs1_1[2], msgs3_1[2]]
msgs2_2 -> setUp1, setUp3

setUp3:
msgs3_2_in = [msgs1_1[3], msgs2_1[3]]
msgs3_2 -> setUp1, setUp2

Step 3: 接收秘密分享和零知识证明并完成密钥生成

每个参与者接收其他参与者的秘密分享和零知识证明,验证这些信息,并计算出最终的密钥份额和公共密钥。

setUp1:
msgs1_3_in = [msgs2_2[1], msgs3_2[1]]
p1SaveData -> (Output)

setUp2:
msgs2_3_in = [msgs1_2[2], msgs3_2[2]]
p2SaveData -> (Output)

setUp3:
msgs3_3_in = [msgs1_2[3], msgs2_2[3]]
p3SaveData -> (Output)

总结

整个过程的消息传递可以用下图表示:

Step 1:
setUp1 --msgs1_1--> setUp2
setUp1 --msgs1_1--> setUp3
setUp2 --msgs2_1--> setUp1
setUp2 --msgs2_1--> setUp3
setUp3 --msgs3_1--> setUp1
setUp3 --msgs3_1--> setUp2

Step 2:
setUp1 --msgs1_2--> setUp2
setUp1 --msgs1_2--> setUp3
setUp2 --msgs2_2--> setUp1
setUp2 --msgs2_2--> setUp3
setUp3 --msgs3_2--> setUp1
setUp3 --msgs3_2--> setUp2

Step 3:
setUp1 --msgs1_3_in--> (Compute p1SaveData)
setUp2 --msgs2_3_in--> (Compute p2SaveData)
setUp3 --msgs3_3_in--> (Compute p3SaveData)

通过这种方式,参与者通过多轮点对点消息传递,最终完成分布式密钥生成过程。