@@ -28,6 +28,7 @@ import (
2828 "github.com/offchainlabs/nitro/daprovider"
2929 "github.com/offchainlabs/nitro/eigenda"
3030 "github.com/offchainlabs/nitro/solgen/go/bridgegen"
31+ "github.com/offchainlabs/nitro/util/headerreader"
3132 "github.com/pkg/errors"
3233 "github.com/rs/zerolog"
3334 "github.com/rs/zerolog/log"
@@ -86,15 +87,6 @@ func NewProposer(ctx context.Context, cfg *config.Config, metrics *metrics.Metri
8687 msg , wrappedErr := logger .WrapErrorWithMsg ("Failed to create settlement provider" , err )
8788 log .Fatal ().Stack ().Err (wrappedErr ).Msg (msg )
8889 }
89- eigenClient , err := eigenda .NewEigenDA (& eigenda.EigenDAConfig {
90- Enable : true ,
91- Rpc : cfg .EigenRPCUrl ,
92- })
93- if err != nil {
94- msg , wrappedErr := logger .WrapErrorWithMsg ("Failed to create Eigen provider" , err )
95- log .Fatal ().Stack ().Err (wrappedErr ).Msg (msg )
96- }
97-
9890 settlementAuth , err := bind .NewKeyedTransactorWithChainID (cfg .PrivateKey , big .NewInt (int64 (cfg .SettlementChainID )))
9991 if err != nil {
10092 msg , wrappedErr := logger .WrapErrorWithMsg ("Failed to create settlement transactor" , err )
@@ -114,7 +106,7 @@ func NewProposer(ctx context.Context, cfg *config.Config, metrics *metrics.Metri
114106 EnclaveClient : enclaveClient ,
115107 SettlementClient : settlementClient ,
116108 SettlementAuth : * settlementAuth ,
117- DapReaders : []daprovider. Reader { eigenda . NewReaderForEigenDA ( eigenClient )} ,
109+ DapReaders : buildDapReaders ( ctx , cfg , ethereumClient ) ,
118110 TeeModule : teeModule ,
119111 Metrics : metrics ,
120112
@@ -645,3 +637,41 @@ func (p *Proposer) makeTransactOptsCopy(ctx context.Context) *bind.TransactOpts
645637 copy .Nonce = nil // ensure fresh nonce lookup
646638 return & copy
647639}
640+
641+ // buildDapReaders constructs the list of DA provider readers based on configuration
642+ func buildDapReaders (ctx context.Context , cfg * config.Config , ethereumClient * ethclient.Client ) []daprovider.Reader {
643+ var readers []daprovider.Reader
644+
645+ if cfg .EigenRPCUrl != "" {
646+ eigenClient , err := eigenda .NewEigenDA (& eigenda.EigenDAConfig {
647+ Enable : true ,
648+ Rpc : cfg .EigenRPCUrl ,
649+ })
650+ if err != nil {
651+ msg , wrappedErr := logger .WrapErrorWithMsg ("Failed to create Eigen provider" , err )
652+ log .Fatal ().Stack ().Err (wrappedErr ).Msg (msg )
653+ }
654+ readers = append (readers , eigenda .NewReaderForEigenDA (eigenClient ))
655+ }
656+
657+ if cfg .BeaconRPCURL != "" {
658+ blobClient , err := headerreader .NewBlobClient (headerreader.BlobClientConfig {
659+ BeaconUrl : cfg .BeaconRPCURL ,
660+ }, ethereumClient )
661+ if err != nil {
662+ msg , wrappedErr := logger .WrapErrorWithMsg ("Failed to create blob client" , err )
663+ log .Fatal ().Stack ().Err (wrappedErr ).Msg (msg )
664+ }
665+ if err = blobClient .Initialize (ctx ); err != nil {
666+ msg , wrappedErr := logger .WrapErrorWithMsg ("Failed to initialize blob client" , err )
667+ log .Fatal ().Stack ().Err (wrappedErr ).Msg (msg )
668+ }
669+ readers = append (readers , daprovider .NewReaderForBlobReader (blobClient ))
670+ }
671+
672+ if len (readers ) == 0 {
673+ log .Warn ().Msg ("No DA provider has been configured (eigen-rpc-url or beacon-rpc-url)" )
674+ }
675+
676+ return readers
677+ }
0 commit comments