mirror of
https://github.com/ethereum/go-ethereum.git
synced 2026-06-22 06:34:32 +00:00
adding sort to masternode list
This commit is contained in:
parent
5afb844e0a
commit
4962300b5e
1 changed files with 11 additions and 2 deletions
|
|
@ -26,6 +26,7 @@ import (
|
|||
"sync"
|
||||
"sync/atomic"
|
||||
"time"
|
||||
"sort"
|
||||
|
||||
"github.com/ethereum/go-ethereum/accounts/abi/bind"
|
||||
"github.com/ethereum/go-ethereum/common"
|
||||
|
|
@ -62,6 +63,7 @@ const (
|
|||
maxTimeFutureBlocks = 30
|
||||
badBlockLimit = 10
|
||||
triesInMemory = 128
|
||||
masterNodeLimit = 150
|
||||
|
||||
// BlockChainVersion ensures that an incompatible database forces a resync from scratch.
|
||||
BlockChainVersion = 3
|
||||
|
|
@ -1627,7 +1629,7 @@ func (bc *BlockChain) UpdateM1() error {
|
|||
}
|
||||
//TODO: smart contract shouldn't return "0x0000000000000000000000000000000000000000"
|
||||
if candidate.String() != "0x0000000000000000000000000000000000000000" {
|
||||
ms = append(ms, XDPoS.Masternode{Address: candidate, Stake: v.String()})
|
||||
ms = append(ms, XDPoS.Masternode{Address: candidate, Stake: v.Uint64()})
|
||||
}
|
||||
}
|
||||
log.Info("Ordered list of masternode candidates")
|
||||
|
|
@ -1637,9 +1639,16 @@ func (bc *BlockChain) UpdateM1() error {
|
|||
if len(ms) == 0 {
|
||||
log.Info("No masternode candidates found. Keep the current masternodes set for the next epoch")
|
||||
} else {
|
||||
sort.Slice(ms, func(i, j int) bool {
|
||||
return ms[i].Stake >= ms[j].Stake
|
||||
})
|
||||
// update masternodes
|
||||
log.Info("Updating new set of masternodes")
|
||||
err = engine.UpdateMasternodes(bc, bc.CurrentHeader(), ms)
|
||||
if len(ms) > masterNodeLimit {
|
||||
err = engine.UpdateMasternodes(bc, bc.CurrentHeader(), ms[:masterNodeLimit])
|
||||
} else {
|
||||
err = engine.UpdateMasternodes(bc, bc.CurrentHeader(), ms)
|
||||
}
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
|
|
|
|||
Loading…
Reference in a new issue