@@ -422,35 +422,16 @@ func (x *XDPoS_v2) CalcDifficulty(chain consensus.ChainReader, time uint64, pare
422
422
}
423
423
424
424
func (x * XDPoS_v2 ) IsAuthorisedAddress (chain consensus.ChainReader , header * types.Header , address common.Address ) bool {
425
- x .lock .RLock ()
426
- defer x .lock .RUnlock ()
427
-
428
- _ , round , _ , err := x .getExtraFields (header )
425
+ snap , err := x .GetSnapshot (chain , header )
429
426
if err != nil {
430
- log .Error ("[IsAuthorisedAddress] Fail to decode v2 extra data " , "Hash " , header .Hash (). Hex () , "Extra " , header .Extra , "Error " , err )
427
+ log .Error ("[IsAuthorisedAddress] Can't get snapshot with at " , "number " , header .Number , "hash " , header .Hash (). Hex () , "err " , err )
431
428
return false
432
429
}
433
- blockRound := round
434
-
435
- masterNodes := x .GetMasternodes (chain , header )
436
-
437
- if len (masterNodes ) == 0 {
438
- log .Error ("[IsAuthorisedAddress] Fail to find any master nodes from current block round epoch" , "Hash" , header .Hash ().Hex (), "Round" , blockRound , "Number" , header .Number )
439
- return false
440
- }
441
-
442
- for index , masterNodeAddress := range masterNodes {
443
- if masterNodeAddress == address {
444
- log .Debug ("[IsAuthorisedAddress] Found matching master node address" , "index" , index , "Address" , address , "MasterNodes" , masterNodes )
430
+ for _ , mn := range snap .NextEpochMasterNodes {
431
+ if mn == address {
445
432
return true
446
433
}
447
434
}
448
-
449
- log .Warn ("Not authorised address" , "Address" , address .Hex (), "Hash" , header .Hash ().Hex (), "round" , round )
450
- for index , mn := range masterNodes {
451
- log .Warn ("Master node list item" , "mn" , mn .Hex (), "index" , index )
452
- }
453
-
454
435
return false
455
436
}
456
437
@@ -679,9 +660,9 @@ func (x *XDPoS_v2) ProposedBlockHandler(chain consensus.ChainReader, blockHeader
679
660
return err
680
661
}
681
662
682
- err = x .allowedToSend (chain , blockHeader , "vote" )
683
- if err != nil {
684
- return err
663
+ allow : = x .allowedToSend (chain , blockHeader , "vote" )
664
+ if ! allow {
665
+ return nil
685
666
}
686
667
687
668
verified , err := x .verifyVotingRule (chain , blockInfo , quorumCert )
@@ -1013,8 +994,7 @@ func (x *XDPoS_v2) FindParentBlockToAssign(chain consensus.ChainReader) *types.B
1013
994
return parent
1014
995
}
1015
996
1016
- func (x * XDPoS_v2 ) allowedToSend (chain consensus.ChainReader , blockHeader * types.Header , sendType string ) error {
1017
- allowedToSend := false
997
+ func (x * XDPoS_v2 ) allowedToSend (chain consensus.ChainReader , blockHeader * types.Header , sendType string ) bool {
1018
998
// Don't hold the signFn for the whole signing operation
1019
999
x .signLock .RLock ()
1020
1000
signer := x .signer
@@ -1024,18 +1004,14 @@ func (x *XDPoS_v2) allowedToSend(chain consensus.ChainReader, blockHeader *types
1024
1004
for i , mn := range masterNodes {
1025
1005
if signer == mn {
1026
1006
log .Debug ("[allowedToSend] Yes, I'm allowed to send" , "sendType" , sendType , "MyAddress" , signer .Hex (), "Index in master node list" , i )
1027
- allowedToSend = true
1028
- break
1007
+ return true
1029
1008
}
1030
1009
}
1031
- if ! allowedToSend {
1032
- for _ , mn := range masterNodes {
1033
- log .Debug ("[allowedToSend] Master node list" , "masterNodeAddress" , mn .Hash ())
1034
- }
1035
- log .Warn ("[allowedToSend] Not in the Masternode list, not suppose to send" , "sendType" , sendType , "MyAddress" , signer .Hex ())
1036
- return fmt .Errorf ("Not in the master node list, not suppose to %v" , sendType )
1010
+ for _ , mn := range masterNodes {
1011
+ log .Debug ("[allowedToSend] Master node list" , "masterNodeAddress" , mn .Hash ())
1037
1012
}
1038
- return nil
1013
+ log .Info ("[allowedToSend] Not in the Masternode list, not suppose to send message" , "sendType" , sendType , "MyAddress" , signer .Hex ())
1014
+ return false
1039
1015
}
1040
1016
1041
1017
// Periodlly execution(Attached to engine initialisation during "new"). Used for pool cleaning etc
0 commit comments