From 938db0afcc21ddc8f42014f0ac5e7ecb982ef197 Mon Sep 17 00:00:00 2001 From: Liam Date: Sun, 20 Aug 2023 10:56:08 +1000 Subject: [PATCH] Bug Fix: V2 getSigner API (#313) --- consensus/XDPoS/XDPoS.go | 2 +- consensus/XDPoS/engines/engine_v2/utils.go | 6 ++++++ internal/ethapi/api.go | 3 +++ 3 files changed, 10 insertions(+), 1 deletion(-) diff --git a/consensus/XDPoS/XDPoS.go b/consensus/XDPoS/XDPoS.go index 118aacbed7..ca76b0d000 100644 --- a/consensus/XDPoS/XDPoS.go +++ b/consensus/XDPoS/XDPoS.go @@ -459,7 +459,7 @@ func (x *XDPoS) GetSnapshot(chain consensus.ChainReader, header *types.Header) ( func (x *XDPoS) GetAuthorisedSignersFromSnapshot(chain consensus.ChainReader, header *types.Header) ([]common.Address, error) { switch x.config.BlockConsensusVersion(header.Number, header.Extra, ExtraFieldCheck) { case params.ConsensusEngineVersion2: - return []common.Address{}, nil + return x.EngineV2.GetSignersFromSnapshot(chain, header) default: // Default "v1" return x.EngineV1.GetAuthorisedSignersFromSnapshot(chain, header) } diff --git a/consensus/XDPoS/engines/engine_v2/utils.go b/consensus/XDPoS/engines/engine_v2/utils.go index 88f2f40b68..1c3497ad60 100644 --- a/consensus/XDPoS/engines/engine_v2/utils.go +++ b/consensus/XDPoS/engines/engine_v2/utils.go @@ -5,6 +5,7 @@ import ( "github.com/XinFinOrg/XDPoSChain/accounts" "github.com/XinFinOrg/XDPoSChain/common" + "github.com/XinFinOrg/XDPoSChain/consensus" "github.com/XinFinOrg/XDPoSChain/consensus/XDPoS/utils" "github.com/XinFinOrg/XDPoSChain/core/types" "github.com/XinFinOrg/XDPoSChain/crypto" @@ -157,3 +158,8 @@ func (x *XDPoS_v2) GetRoundNumber(header *types.Header) (types.Round, error) { return decodedExtraField.Round, nil } } + +func (x *XDPoS_v2) GetSignersFromSnapshot(chain consensus.ChainReader, header *types.Header) ([]common.Address, error) { + snap, err := x.getSnapshot(chain, header.Number.Uint64(), false) + return snap.NextEpochMasterNodes, err +} diff --git a/internal/ethapi/api.go b/internal/ethapi/api.go index 0b3b727c81..9facea5937 100644 --- a/internal/ethapi/api.go +++ b/internal/ethapi/api.go @@ -3035,6 +3035,9 @@ func GetSignersFromBlocks(b Backend, blockNumber uint64, blockHash common.Hash, return addrs, err } blockData, err := b.BlockByNumber(nil, rpc.BlockNumber(i)) + if err != nil { + return addrs, err + } signTxs := engine.CacheSigningTxs(header.Hash(), blockData.Transactions()) for _, signtx := range signTxs { blkHash := common.BytesToHash(signtx.Data()[len(signtx.Data())-32:])