From 8865252daf37add7fd8bb16328072f5ababc6640 Mon Sep 17 00:00:00 2001 From: Alex Vanin Date: Mon, 18 Jan 2021 17:59:51 +0300 Subject: [PATCH] [#325] innerring: Fix storage node re-bootstrap approval Netmap snapshot table caches bootstrap `AddPeer` txs so inner ring node does not produce redundant approval txs for bootstrapped nodes. However if node updates states to `Offline`, then such node should be flagged in snapshot table, so re-bootstrap will actually produce approval tx. `ev.PublicKey.String()` returns uncompressed representation of the node's public key, while snapshot contains compressed values. Therefore the node was not flagged and re-bootstrap tx was not approved by inner ring nodes. Signed-off-by: Alex Vanin --- pkg/innerring/processors/netmap/process_peers.go | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pkg/innerring/processors/netmap/process_peers.go b/pkg/innerring/processors/netmap/process_peers.go index d612f35e..5b9453c4 100644 --- a/pkg/innerring/processors/netmap/process_peers.go +++ b/pkg/innerring/processors/netmap/process_peers.go @@ -56,7 +56,7 @@ func (np *Processor) processUpdatePeer(ev netmapEvent.UpdatePeer) { // flag node to remove from local view, so it can be re-bootstrapped // again before new epoch will tick - np.netmapSnapshot.flag(ev.PublicKey().String()) + np.netmapSnapshot.flag(hex.EncodeToString(ev.PublicKey().Bytes())) err := invoke.UpdatePeerState(np.morphClient, np.netmapContract, &invoke.UpdatePeerArgs{