shared_coin函数
接收每一轮为签名分片并验证,然后合成签名并验证。
h = PK.hash_message(str((sid, round)))
sig = SK.sign(h)
PK.verify_share(sig, i, h)
合成后的sig = PK.combine_shares(sigs)
( sigs = dict(list(received[r].items())[:f+1]) )
PK.verify_signature(sig, h)
bit = hash(serialize(sig))[0] % 2
这个bit就是第r轮commncoin。
received[r][i] 第r轮的节点i的签名分片
get_coin函数
从outputQueue[round].get()拿到round轮的commoncoin。