Skip to content

Commit f5f55f8

Browse files
Merge pull request #3992 from OffchainLabs/v3.9.x-remove-internal-daprovider-server
Remove internal daprovider server for AnyTrust (#3989)
2 parents ea4cf11 + a811273 commit f5f55f8

File tree

1 file changed

+50
-35
lines changed

1 file changed

+50
-35
lines changed

arbnode/node.go

Lines changed: 50 additions & 35 deletions
Original file line numberDiff line numberDiff line change
@@ -9,9 +9,6 @@ import (
99
"errors"
1010
"fmt"
1111
"math/big"
12-
"os"
13-
"path"
14-
"path/filepath"
1512
"strings"
1613

1714
"github.com/spf13/pflag"
@@ -36,12 +33,11 @@ import (
3633
"github.com/offchainlabs/nitro/broadcastclients"
3734
"github.com/offchainlabs/nitro/broadcaster"
3835
"github.com/offchainlabs/nitro/cmd/chaininfo"
39-
"github.com/offchainlabs/nitro/cmd/genericconf"
4036
"github.com/offchainlabs/nitro/daprovider"
4137
"github.com/offchainlabs/nitro/daprovider/daclient"
4238
"github.com/offchainlabs/nitro/daprovider/das"
4339
"github.com/offchainlabs/nitro/daprovider/data_streaming"
44-
"github.com/offchainlabs/nitro/daprovider/server"
40+
"github.com/offchainlabs/nitro/daprovider/factory"
4541
"github.com/offchainlabs/nitro/execution"
4642
"github.com/offchainlabs/nitro/execution/gethexec"
4743
"github.com/offchainlabs/nitro/solgen/go/bridgegen"
@@ -581,6 +577,8 @@ func getDAS(
581577

582578
var err error
583579
var daClient *daclient.Client
580+
var anytrustWriter daprovider.Writer
581+
var anytrustReader daprovider.Reader
584582
var withDAWriter bool
585583
var dasServerCloseFn func()
586584
if config.DAProvider.Enable {
@@ -591,51 +589,57 @@ func getDAS(
591589
// Only allow dawriter if batchposter is enabled
592590
withDAWriter = config.DAProvider.WithWriter && config.BatchPoster.Enable
593591
} else if config.DataAvailability.Enable {
594-
jwtPath := path.Join(filepath.Dir(stack.InstanceDir()), "dasserver-jwtsecret")
595-
if err := genericconf.TryCreatingJWTSecret(jwtPath); err != nil {
596-
return nil, nil, nil, fmt.Errorf("error writing ephemeral jwtsecret of dasserver to file: %w", err)
592+
// Create AnyTrust factory
593+
daFactory, err := factory.NewDAProviderFactory(
594+
factory.ModeAnyTrust,
595+
&config.DataAvailability,
596+
nil, // referencedaCfg
597+
dataSigner,
598+
l1client,
599+
l1Reader,
600+
deployInfo.SequencerInbox,
601+
config.BatchPoster.Enable,
602+
)
603+
if err != nil {
604+
return nil, nil, nil, err
597605
}
598-
log.Info("Generated ephemeral JWT secret for dasserver", "jwtPath", jwtPath)
599-
// JWTSecret is no longer needed, cleanup when returning
600-
defer func() {
601-
if err := os.Remove(jwtPath); err != nil {
602-
log.Error("error deleting generated ephemeral JWT secret of dasserver", "jwtPath", jwtPath)
603-
}
604-
}()
605606

606-
serverConfig := dapserver.DefaultDASServerConfig
607-
serverConfig.Port = 0 // Initializes server at a random available port
608-
serverConfig.DataAvailability = config.DataAvailability
609-
serverConfig.EnableDAWriter = config.BatchPoster.Enable
610-
serverConfig.JWTSecret = jwtPath
611-
withDAWriter = config.BatchPoster.Enable
612-
dasServer, closeFn, err := dapserver.NewServerForDAS(ctx, &serverConfig, dataSigner, l1client, l1Reader, deployInfo.SequencerInbox)
613-
if err != nil {
607+
if err := daFactory.ValidateConfig(); err != nil {
614608
return nil, nil, nil, err
615609
}
616-
rpcClientConfig := rpcclient.DefaultClientConfig
617-
rpcClientConfig.URL = dasServer.Addr
618-
rpcClientConfig.JWTSecret = jwtPath
619610

620-
daClientConfig := config.DAProvider
621-
daClientConfig.RPC = rpcClientConfig
611+
// Create writer if batch poster is enabled
612+
var writerCleanup func()
613+
if config.BatchPoster.Enable {
614+
anytrustWriter, writerCleanup, err = daFactory.CreateWriter(ctx)
615+
if err != nil {
616+
return nil, nil, nil, err
617+
}
618+
withDAWriter = true
619+
}
622620

623-
daClient, err = daclient.NewClient(ctx, &daClientConfig, data_streaming.PayloadCommiter())
621+
// Create reader
622+
var readerCleanup func()
623+
anytrustReader, readerCleanup, err = daFactory.CreateReader(ctx)
624624
if err != nil {
625625
return nil, nil, nil, err
626626
}
627+
628+
// Set up cleanup function
627629
dasServerCloseFn = func() {
628-
_ = dasServer.Shutdown(ctx)
629-
if closeFn != nil {
630-
closeFn()
630+
if writerCleanup != nil {
631+
writerCleanup()
632+
}
633+
if readerCleanup != nil {
634+
readerCleanup()
631635
}
632636
}
633637
} else if l2Config.ArbitrumChainParams.DataAvailabilityCommittee {
634638
return nil, nil, nil, errors.New("a data availability service is required for this chain, but it was not configured")
635639
}
636640

637641
// We support a nil txStreamer for the pruning code
638-
if txStreamer != nil && txStreamer.chainConfig.ArbitrumChainParams.DataAvailabilityCommittee && daClient == nil {
642+
if txStreamer != nil && txStreamer.chainConfig.ArbitrumChainParams.DataAvailabilityCommittee && daClient == nil && anytrustReader == nil {
639643
return nil, nil, nil, errors.New("data availability service required but unconfigured")
640644
}
641645

@@ -650,15 +654,26 @@ func getDAS(
650654
return nil, nil, nil, fmt.Errorf("failed to register DA client: %w", err)
651655
}
652656
}
657+
if anytrustReader != nil {
658+
headerBytes := []byte{
659+
daprovider.DASMessageHeaderFlag,
660+
daprovider.DASMessageHeaderFlag | daprovider.TreeDASMessageHeaderFlag,
661+
}
662+
if err := dapReaders.RegisterAll(headerBytes, anytrustReader); err != nil {
663+
return nil, nil, nil, fmt.Errorf("failed to register AnyTrust reader: %w", err)
664+
}
665+
}
653666
if blobReader != nil {
654667
if err := dapReaders.SetupBlobReader(daprovider.NewReaderForBlobReader(blobReader)); err != nil {
655668
return nil, nil, nil, fmt.Errorf("failed to register blob reader: %w", err)
656669
}
657670
}
658-
// AnyTrust now always uses the daClient, which is already registered,
659-
// so we don't need to register it separately here.
660671

661672
if withDAWriter {
673+
// Return anytrustWriter if it exists, otherwise daClient
674+
if anytrustWriter != nil {
675+
return anytrustWriter, dasServerCloseFn, dapReaders, nil
676+
}
662677
return daClient, dasServerCloseFn, dapReaders, nil
663678
}
664679
return nil, dasServerCloseFn, dapReaders, nil

0 commit comments

Comments
 (0)