@@ -39,14 +39,14 @@ import (
3939 "github.com/offchainlabs/nitro/util/signature"
4040)
4141
42- // TestEigenDAV2WithReferenceDAFallback tests EigenDA V2 with ReferenceDA as fallback
42+ // TestReferenceDAWithMultiNode tests ReferenceDA with multi-node sync
4343// This comprehensive e2e test validates:
44- // 1. Dual DA provider setup (EigenDA V2 primary, ReferenceDA fallback)
45- // 2. Normal operation using EigenDA V2
46- // 3. Automatic failover to ReferenceDA when V2 is unavailable
47- // 4. Certificate verification for both DA providers in sequencer inbox
48- // 5. Multi-node sync with mixed certificates
49- func TestEigenDAV2WithReferenceDAFallback (t * testing.T ) {
44+ // 1. ReferenceDA as primary DA provider through ALT-DA spec
45+ // 2. Batch posting through ReferenceDA
46+ // 3. Certificate verification in sequencer inbox
47+ // 4. Multi-node sync with ReferenceDA certificates
48+ // Note: For EigenDA V2 testing, see TestEigenDAV2ThroughALTDA
49+ func TestReferenceDAWithMultiNode (t * testing.T ) {
5050 ctx , cancel := context .WithCancel (context .Background ())
5151 defer cancel ()
5252
@@ -65,20 +65,19 @@ func TestEigenDAV2WithReferenceDAFallback(t *testing.T) {
6565 t .Logf ("ReferenceDA fallback server at: %s" , referenceDAAddr )
6666 t .Logf ("Validator contract: %s" , validatorAddr .Hex ())
6767
68- // Configure L2 sequencer with dual DA setup
69- // Primary: EigenDA V2
70- builder .nodeConfig .EigenDA .Enable = true
71- builder .nodeConfig .EigenDA .Rpc = proxyV2URL
68+ // Configure L2 sequencer with ReferenceDA as primary DA provider
69+ // Note: EigenDA V2 uses ALT-DA spec (same as ReferenceDA), so both are accessed
70+ // through the DAProvider interface. The old EigenDA.Enable path is V1-only.
71+ // For proper V2 support, both V2 and ReferenceDA would need to be accessed through
72+ // DAProvider, but Nitro currently only supports one DAProvider at a time.
73+ // TODO(eigenda-v2): Add multi-provider DAProvider support for V2 + ReferenceDA failover
7274
73- // Fallback: ReferenceDA (CustomDA/ ALT DA )
75+ // Use ReferenceDA through DAProvider ( ALT-DA spec )
7476 // Note: referenceDAAddr already includes "http://" prefix
7577 builder .nodeConfig .DAProvider .Enable = true
7678 builder .nodeConfig .DAProvider .RPC .URL = referenceDAAddr
7779 builder .nodeConfig .DAProvider .WithWriter = true
7880
79- // Enable automatic failover from EigenDA to ReferenceDA
80- builder .nodeConfig .BatchPoster .EnableEigenDAFailover = true
81-
8281 builder .L2Info .GenerateAccount ("User2" )
8382 builder .BuildL2OnL1 (t )
8483
@@ -98,13 +97,13 @@ func TestEigenDAV2WithReferenceDAFallback(t *testing.T) {
9897 l2B , cleanupB := builder .Build2ndNode (t , & nodeBParams )
9998 defer cleanupB ()
10099
101- // Test 1: Normal operation - EigenDA V2 should be used
102- t .Log ("=== Phase 1: Testing normal operation with EigenDA V2 ===" )
100+ // Test 1: Normal operation - ReferenceDA should be used
101+ t .Log ("=== Phase 1: Testing normal operation with ReferenceDA ===" )
103102 checkBatchPosting (t , ctx , builder .L1 .Client , builder .L2 .Client ,
104103 builder .L1Info , builder .L2Info , big .NewInt (1e12 ), l2B .Client )
105104
106- // Test 2: Verify certificates in sequencer inbox
107- t .Log ("=== Phase 2: Verifying certificate types in sequencer inbox ===" )
105+ // Test 2: Verify ReferenceDA certificates in sequencer inbox
106+ t .Log ("=== Phase 2: Verifying ReferenceDA certificates in sequencer inbox ===" )
108107 seqInbox , err := arbnode .NewSequencerInbox (builder .L1 .Client , builder .addresses .SequencerInbox , 0 )
109108 Require (t , err )
110109
@@ -115,7 +114,7 @@ func TestEigenDAV2WithReferenceDAFallback(t *testing.T) {
115114 batches , err := seqInbox .LookupBatchesInRange (ctx , big .NewInt (0 ), big .NewInt (int64 (latestBlock )))
116115 Require (t , err )
117116
118- var eigenDASeen , referenceDASeen bool
117+ referenceDASeen := false
119118 for _ , batch := range batches {
120119 serializedBatch , err := batch .Serialize (ctx , builder .L1 .Client )
121120 Require (t , err )
@@ -125,22 +124,18 @@ func TestEigenDAV2WithReferenceDAFallback(t *testing.T) {
125124 }
126125
127126 headerByte := serializedBatch [40 ]
128- if daprovider .IsEigenDAMessageHeaderByte (headerByte ) {
129- eigenDASeen = true
130- t .Log ("✅ Found EigenDA V2 certificate" )
131- } else if daprovider .IsDACertificateMessageHeaderByte (headerByte ) {
127+ if daprovider .IsDACertificateMessageHeaderByte (headerByte ) {
132128 referenceDASeen = true
133129 t .Log ("✅ Found ReferenceDA certificate" )
134130 }
135131 }
136132
137- // At minimum, we should see EigenDA certificates from normal operation
138- if ! eigenDASeen {
139- t .Log ("⚠️ No EigenDA certificates found - this is acceptable if memstore is behaving differently" )
133+ if ! referenceDASeen {
134+ Fatal (t , "No ReferenceDA certificates found in sequencer inbox" )
140135 }
141136
142137 t .Log ("=== Test completed successfully ===" )
143- t .Logf ("Certificates found - EigenDA : %v, ReferenceDA: %v" , eigenDASeen , referenceDASeen )
138+ t .Logf ("ReferenceDA certificates verified : %v" , referenceDASeen )
144139
145140 builder .L2 .cleanup ()
146141}
0 commit comments