@@ -205,7 +205,6 @@ func checkLogEvents(t *testing.T, logsCh <-chan []*types.Log, rmLogsCh <-chan co
205
205
func TestInvalidPayloadTimestamp (t * testing.T ) {
206
206
genesis , preMergeBlocks := generatePreMergeChain (10 )
207
207
n , ethservice := startEthService (t , genesis , preMergeBlocks )
208
- ethservice .Merger ().ReachTTD ()
209
208
defer n .Close ()
210
209
var (
211
210
api = NewConsensusAPI (ethservice )
@@ -250,7 +249,6 @@ func TestInvalidPayloadTimestamp(t *testing.T) {
250
249
func TestEth2NewBlock (t * testing.T ) {
251
250
genesis , preMergeBlocks := generatePreMergeChain (10 )
252
251
n , ethservice := startEthService (t , genesis , preMergeBlocks )
253
- ethservice .Merger ().ReachTTD ()
254
252
defer n .Close ()
255
253
256
254
var (
@@ -427,7 +425,6 @@ func startEthService(t *testing.T, genesis *core.Genesis, blocks []*types.Block)
427
425
func TestFullAPI (t * testing.T ) {
428
426
genesis , preMergeBlocks := generatePreMergeChain (10 )
429
427
n , ethservice := startEthService (t , genesis , preMergeBlocks )
430
- ethservice .Merger ().ReachTTD ()
431
428
defer n .Close ()
432
429
var (
433
430
parent = ethservice .BlockChain ().CurrentBlock ()
@@ -480,7 +477,6 @@ func setupBlocks(t *testing.T, ethservice *eth.Ethereum, n int, parent *types.Bl
480
477
func TestExchangeTransitionConfig (t * testing.T ) {
481
478
genesis , preMergeBlocks := generatePreMergeChain (10 )
482
479
n , ethservice := startEthService (t , genesis , preMergeBlocks )
483
- ethservice .Merger ().ReachTTD ()
484
480
defer n .Close ()
485
481
var (
486
482
api = NewConsensusAPI (ethservice )
@@ -543,7 +539,6 @@ CommonAncestor◄─▲── P1 ◄── P2 ◄─ P3 ◄─ ... ◄─ Pn
543
539
func TestNewPayloadOnInvalidChain (t * testing.T ) {
544
540
genesis , preMergeBlocks := generatePreMergeChain (10 )
545
541
n , ethservice := startEthService (t , genesis , preMergeBlocks )
546
- ethservice .Merger ().ReachTTD ()
547
542
defer n .Close ()
548
543
549
544
var (
@@ -618,7 +613,6 @@ func assembleBlock(api *ConsensusAPI, parentHash common.Hash, params *beacon.Pay
618
613
func TestEmptyBlocks (t * testing.T ) {
619
614
genesis , preMergeBlocks := generatePreMergeChain (10 )
620
615
n , ethservice := startEthService (t , genesis , preMergeBlocks )
621
- ethservice .Merger ().ReachTTD ()
622
616
defer n .Close ()
623
617
624
618
commonAncestor := ethservice .BlockChain ().CurrentBlock ()
@@ -734,8 +728,6 @@ func TestTrickRemoteBlockCache(t *testing.T) {
734
728
genesis , preMergeBlocks := generatePreMergeChain (10 )
735
729
nodeA , ethserviceA := startEthService (t , genesis , preMergeBlocks )
736
730
nodeB , ethserviceB := startEthService (t , genesis , preMergeBlocks )
737
- ethserviceA .Merger ().ReachTTD ()
738
- ethserviceB .Merger ().ReachTTD ()
739
731
defer nodeA .Close ()
740
732
defer nodeB .Close ()
741
733
for nodeB .Server ().NodeInfo ().Ports .Listener == 0 {
@@ -794,3 +786,51 @@ func TestTrickRemoteBlockCache(t *testing.T) {
794
786
time .Sleep (100 * time .Millisecond )
795
787
}
796
788
}
789
+
790
+ func TestNewPayloadOnInvalidTerminalBlock (t * testing.T ) {
791
+ genesis , preMergeBlocks := generatePreMergeChain (100 )
792
+ fmt .Println (genesis .Config .TerminalTotalDifficulty )
793
+ genesis .Config .TerminalTotalDifficulty = preMergeBlocks [0 ].Difficulty () //.Sub(genesis.Config.TerminalTotalDifficulty, preMergeBlocks[len(preMergeBlocks)-1].Difficulty())
794
+
795
+ fmt .Println (genesis .Config .TerminalTotalDifficulty )
796
+ n , ethservice := startEthService (t , genesis , preMergeBlocks )
797
+ defer n .Close ()
798
+
799
+ var (
800
+ api = NewConsensusAPI (ethservice )
801
+ parent = preMergeBlocks [len (preMergeBlocks )- 1 ]
802
+ )
803
+
804
+ // Test parent already post TTD in FCU
805
+ fcState := beacon.ForkchoiceStateV1 {
806
+ HeadBlockHash : parent .Hash (),
807
+ SafeBlockHash : common.Hash {},
808
+ FinalizedBlockHash : common.Hash {},
809
+ }
810
+ resp , err := api .ForkchoiceUpdatedV1 (fcState , nil )
811
+ if err != nil {
812
+ t .Fatalf ("error sending forkchoice, err=%v" , err )
813
+ }
814
+ if resp .PayloadStatus != beacon .INVALID_TERMINAL_BLOCK {
815
+ t .Fatalf ("error sending invalid forkchoice, invalid status: %v" , resp .PayloadStatus .Status )
816
+ }
817
+
818
+ // Test parent already post TTD in NewPayload
819
+ params := beacon.PayloadAttributesV1 {
820
+ Timestamp : parent .Time () + 1 ,
821
+ Random : crypto .Keccak256Hash ([]byte {byte (1 )}),
822
+ SuggestedFeeRecipient : parent .Coinbase (),
823
+ }
824
+ empty , err := api .eth .Miner ().GetSealingBlockSync (parent .Hash (), params .Timestamp , params .SuggestedFeeRecipient , params .Random , true )
825
+ if err != nil {
826
+ t .Fatalf ("error preparing payload, err=%v" , err )
827
+ }
828
+ data := * beacon .BlockToExecutableData (empty )
829
+ resp2 , err := api .NewPayloadV1 (data )
830
+ if err != nil {
831
+ t .Fatalf ("error sending NewPayload, err=%v" , err )
832
+ }
833
+ if resp2 != beacon .INVALID_TERMINAL_BLOCK {
834
+ t .Fatalf ("error sending invalid forkchoice, invalid status: %v" , resp .PayloadStatus .Status )
835
+ }
836
+ }
0 commit comments