From c9f28048850e95a010a59134ba2c83325de84a19 Mon Sep 17 00:00:00 2001 From: Alex Vanin Date: Tue, 16 Nov 2021 19:20:47 +0300 Subject: [PATCH] [#976] innerring: Ignore non-HALT netmap.AddPeer notary invocations Signed-off-by: Alex Vanin --- pkg/innerring/processors/netmap/process_peers.go | 13 +++++++++++++ 1 file changed, 13 insertions(+) diff --git a/pkg/innerring/processors/netmap/process_peers.go b/pkg/innerring/processors/netmap/process_peers.go index ad2ddd34..1fc3a0e7 100644 --- a/pkg/innerring/processors/netmap/process_peers.go +++ b/pkg/innerring/processors/netmap/process_peers.go @@ -18,6 +18,19 @@ func (np *Processor) processAddPeer(ev netmapEvent.AddPeer) { return } + // check if notary transaction is valid, see #976 + if originalRequest := ev.NotaryRequest(); originalRequest != nil { + tx := originalRequest.MainTransaction + ok, err := np.netmapClient.Morph().IsValidScript(tx.Script, tx.Signers) + if err != nil || !ok { + np.log.Warn("non-halt notary transaction", + zap.String("method", "netmap.AddPeer"), + zap.String("hash", tx.Hash().StringLE()), + zap.Error(err)) + return + } + } + // unmarshal node info nodeInfo := netmap.NewNodeInfo() if err := nodeInfo.Unmarshal(ev.Node()); err != nil {