From 9a4f40626cbfdbd00a77125ac57a9c4a8bef4797 Mon Sep 17 00:00:00 2001
From: Pavel Karpy
Date: Mon, 20 Mar 2023 19:58:11 +0300
Subject: [PATCH] [#128] IR: Do not try to emit GAS to nobody
Fix sending GAS to an empty extra wallets receivers list. Also, send GAS to
extra wallets even if netmap is empty.
Signed-off-by: Pavel Karpy
---
.../processors/alphabet/process_emit.go | 33 +++++++++++--------
1 file changed, 19 insertions(+), 14 deletions(-)
diff --git a/pkg/innerring/processors/alphabet/process_emit.go b/pkg/innerring/processors/alphabet/process_emit.go
index 867d96223..10dcf079d 100644
--- a/pkg/innerring/processors/alphabet/process_emit.go
+++ b/pkg/innerring/processors/alphabet/process_emit.go
@@ -50,15 +50,18 @@ func (ap *Processor) processEmit() {
}
nmNodes := networkMap.Nodes()
+ nmLen := len(nmNodes)
+ extraLen := len(ap.parsedWallets)
- ln := len(nmNodes)
- if ln == 0 {
- ap.log.Debug("empty network map, do not emit gas")
+ ap.log.Debug("gas emission",
+ zap.Int("network_map", nmLen),
+ zap.Int("extra_wallets", extraLen))
+ if nmLen+extraLen == 0 {
return
}
- gasPerNode := fixedn.Fixed8(ap.storageEmission / uint64(ln+len(ap.parsedWallets)))
+ gasPerNode := fixedn.Fixed8(ap.storageEmission / uint64(nmLen+extraLen))
for i := range nmNodes {
keyBytes := nmNodes[i].PublicKey()
@@ -81,16 +84,18 @@ func (ap *Processor) processEmit() {
}
}
- err = ap.morphClient.BatchTransferGas(ap.parsedWallets, gasPerNode)
- if err != nil {
- receiversLog := make([]string, len(ap.parsedWallets))
- for i, addr := range ap.parsedWallets {
- receiversLog[i] = addr.StringLE()
+ if extraLen != 0 {
+ err = ap.morphClient.BatchTransferGas(ap.parsedWallets, gasPerNode)
+ if err != nil {
+ receiversLog := make([]string, extraLen)
+ for i, addr := range ap.parsedWallets {
+ receiversLog[i] = addr.StringLE()
+ }
+ ap.log.Warn("can't transfer gas to wallet",
+ zap.Strings("receivers", receiversLog),
+ zap.Int64("amount", int64(gasPerNode)),
+ zap.String("error", err.Error()),
+ )
}
- ap.log.Warn("can't transfer gas to wallet",
- zap.Strings("receivers", receiversLog),
- zap.Int64("amount", int64(gasPerNode)),
- zap.String("error", err.Error()),
- )
}
}