From d0cde5c51eadc1461b50a644b2a2b6b14f39c4f2 Mon Sep 17 00:00:00 2001 From: Liam Lai Date: Thu, 14 Apr 2022 02:07:26 -0600 Subject: [PATCH] fix new masternode bug --- common/types.go | 14 +++++++++----- consensus/XDPoS/engines/engine_v2/epochSwitch.go | 4 ++-- 2 files changed, 11 insertions(+), 7 deletions(-) diff --git a/common/types.go b/common/types.go index 4c31429a53..d8db199883 100644 --- a/common/types.go +++ b/common/types.go @@ -279,19 +279,23 @@ func (a UnprefixedAddress) MarshalText() ([]byte, error) { // Extract validators from byte array. func RemoveItemFromArray(array []Address, items []Address) []Address { + // Create newArray to stop append change array value + newArray := make([]Address, len(array)) + copy(newArray, array) + if len(items) == 0 { - return array + return newArray } for _, item := range items { - for i := len(array) - 1; i >= 0; i-- { - if array[i] == item { - array = append(array[:i], array[i+1:]...) + for i := len(newArray) - 1; i >= 0; i-- { + if newArray[i] == item { + newArray = append(newArray[:i], newArray[i+1:]...) } } } - return array + return newArray } // Extract validators from byte array. diff --git a/consensus/XDPoS/engines/engine_v2/epochSwitch.go b/consensus/XDPoS/engines/engine_v2/epochSwitch.go index eb16de6bd5..da7efbcc6d 100644 --- a/consensus/XDPoS/engines/engine_v2/epochSwitch.go +++ b/consensus/XDPoS/engines/engine_v2/epochSwitch.go @@ -88,12 +88,12 @@ func (x *XDPoS_v2) isEpochSwitchAtRound(round utils.Round, parentHeader *types.H return true, epochNum, nil } - _, round, _, err := x.getExtraFields(parentHeader) + _, parentRound, _, err := x.getExtraFields(parentHeader) if err != nil { log.Error("[IsEpochSwitch] decode header error", "err", err, "header", parentHeader, "extra", common.Bytes2Hex(parentHeader.Extra)) return false, 0, err } - parentRound := round + epochStartRound := round - round%utils.Round(x.config.Epoch) return parentRound < epochStartRound, epochNum, nil }