node/p2p: move createSignedHeartbeat to separate function

This commit is contained in:
tbjump 2023-02-04 00:05:42 +00:00 committed by tbjump
parent c84e37e403
commit f4ec4bfde9
1 changed files with 27 additions and 19 deletions

View File

@ -263,29 +263,15 @@ func Run(
if gov != nil { if gov != nil {
gov.CollectMetrics(heartbeat, gossipSendC, gk, ourAddr) gov.CollectMetrics(heartbeat, gossipSendC, gk, ourAddr)
} }
b, err := proto.Marshal(heartbeat)
if err != nil {
panic(err)
}
DefaultRegistry.mu.Unlock() DefaultRegistry.mu.Unlock()
// Sign the heartbeat using our node's guardian key. msg := gossipv1.GossipMessage{
digest := heartbeatDigest(b) Message: &gossipv1.GossipMessage_SignedHeartbeat{
sig, err := ethcrypto.Sign(digest.Bytes(), gk) SignedHeartbeat: createSignedHeartbeat(gk, heartbeat),
if err != nil { },
panic(err)
} }
msg := gossipv1.GossipMessage{Message: &gossipv1.GossipMessage_SignedHeartbeat{ b, err := proto.Marshal(&msg)
SignedHeartbeat: &gossipv1.SignedHeartbeat{
Heartbeat: b,
Signature: sig,
GuardianAddr: ourAddr.Bytes(),
}}}
b, err = proto.Marshal(&msg)
if err != nil { if err != nil {
panic(err) panic(err)
} }
@ -472,6 +458,28 @@ func Run(
} }
} }
func createSignedHeartbeat(gk *ecdsa.PrivateKey, heartbeat *gossipv1.Heartbeat) *gossipv1.SignedHeartbeat {
ourAddr := ethcrypto.PubkeyToAddress(gk.PublicKey)
b, err := proto.Marshal(heartbeat)
if err != nil {
panic(err)
}
// Sign the heartbeat using our node's guardian key.
digest := heartbeatDigest(b)
sig, err := ethcrypto.Sign(digest.Bytes(), gk)
if err != nil {
panic(err)
}
return &gossipv1.SignedHeartbeat{
Heartbeat: b,
Signature: sig,
GuardianAddr: ourAddr.Bytes(),
}
}
func processSignedHeartbeat(from peer.ID, s *gossipv1.SignedHeartbeat, gs *node_common.GuardianSet, gst *node_common.GuardianSetState, disableVerify bool) (*gossipv1.Heartbeat, error) { func processSignedHeartbeat(from peer.ID, s *gossipv1.SignedHeartbeat, gs *node_common.GuardianSet, gst *node_common.GuardianSetState, disableVerify bool) (*gossipv1.Heartbeat, error) {
envelopeAddr := common.BytesToAddress(s.GuardianAddr) envelopeAddr := common.BytesToAddress(s.GuardianAddr)
idx, ok := gs.KeyIndex(envelopeAddr) idx, ok := gs.KeyIndex(envelopeAddr)