diff --git a/bridge/pkg/p2p/p2p.go b/bridge/pkg/p2p/p2p.go index d04fbba05..e00b786ba 100644 --- a/bridge/pkg/p2p/p2p.go +++ b/bridge/pkg/p2p/p2p.go @@ -176,6 +176,8 @@ func Run(obsvC chan *gossipv1.SignedObservation, sendC chan []byte, rawHeartbeat logger.Info("Node has been started", zap.String("peer_id", h.ID().String()), zap.String("addrs", fmt.Sprintf("%v", h.Addrs()))) + bootTime := time.Now() + go func() { ctr := int64(0) tick := time.NewTicker(15 * time.Second) @@ -193,12 +195,13 @@ func Run(obsvC chan *gossipv1.SignedObservation, sendC chan []byte, rawHeartbeat } heartbeat := &gossipv1.Heartbeat{ - NodeName: nodeName, - Counter: ctr, - Timestamp: time.Now().UnixNano(), - Networks: networks, - Version: version.Version(), - GuardianAddr: DefaultRegistry.guardianAddress, + NodeName: nodeName, + Counter: ctr, + Timestamp: time.Now().UnixNano(), + Networks: networks, + Version: version.Version(), + GuardianAddr: DefaultRegistry.guardianAddress, + BootTimestamp: bootTime.UnixNano(), } ourAddr := ethcrypto.PubkeyToAddress(gk.PublicKey) diff --git a/proto/gossip/v1/gossip.proto b/proto/gossip/v1/gossip.proto index 86ccbc24d..88e69724f 100644 --- a/proto/gossip/v1/gossip.proto +++ b/proto/gossip/v1/gossip.proto @@ -50,6 +50,9 @@ message Heartbeat { // Human-readable representation of the guardian key's address. string guardian_addr = 6; + + // UNIX boot timestamp. + int64 boot_timestamp = 7; } // A SignedObservation is a signed statement by a given guardian node