mirror of
https://github.com/ethereum/go-ethereum.git
synced 2026-06-27 08:56:18 +00:00
finish YourTurn handling v1->v2 switch, add test (#44)
This commit is contained in:
parent
e063f67f34
commit
05d315d2e3
2 changed files with 14 additions and 2 deletions
|
|
@ -343,7 +343,13 @@ func (x *XDPoS_v2) YourTurn(chain consensus.ChainReader, parent *types.Header, s
|
|||
var masterNodes []common.Address
|
||||
if isEpochSwitch {
|
||||
if x.config.XDPoSV2Block.Cmp(parent.Number) == 0 {
|
||||
// TODO: read v1 master nodes
|
||||
snap, err := x.getSnapshot(chain, x.config.XDPoSV2Block.Uint64())
|
||||
if err != nil {
|
||||
log.Error("[YourTurn]Cannot find snapshot at gap num of last V1", "err", err, "number", x.config.XDPoSV2Block.Uint64())
|
||||
return false, err
|
||||
}
|
||||
// the initial snapshot of v1->v2 switch does not need penalty
|
||||
masterNodes = snap.NextEpochMasterNodes
|
||||
} else {
|
||||
// TODO: calc master nodes by smart contract - penalty
|
||||
// TODO: related to snapshot
|
||||
|
|
|
|||
|
|
@ -35,7 +35,13 @@ func TestYourTurnInitialV2(t *testing.T) {
|
|||
}
|
||||
|
||||
// YourTurn is called before mine first v2 block
|
||||
adaptor.YourTurn(blockchain, block900.Header(), common.HexToAddress("xdc0278C350152e15fa6FFC712a5A73D704Ce73E2E1"))
|
||||
b, err := adaptor.YourTurn(blockchain, block900.Header(), common.HexToAddress("xdc0278C350152e15fa6FFC712a5A73D704Ce73E2E1"))
|
||||
assert.Nil(t, err)
|
||||
assert.False(t, b)
|
||||
b, err = adaptor.YourTurn(blockchain, block900.Header(), common.HexToAddress("xdc03d9e17Ae3fF2c6712E44e25B09Ac5ee91f6c9ff"))
|
||||
assert.Nil(t, err)
|
||||
// round=1, so masternode[1] has YourTurn = True
|
||||
assert.True(t, b)
|
||||
assert.Equal(t, adaptor.EngineV2.GetCurrentRound(), utils.Round(1))
|
||||
|
||||
snap, err := adaptor.EngineV2.GetSnapshot(blockchain, block900.Header())
|
||||
|
|
|
|||
Loading…
Reference in a new issue