Skip to content

Commit 8b186f9

Browse files
committed
feat: pass namespace ID to DA layers
Resolves cosmos#425.
1 parent 60652ee commit 8b186f9

File tree

10 files changed

+30
-29
lines changed

10 files changed

+30
-29
lines changed

block/manager_test.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -88,7 +88,7 @@ func TestInitialState(t *testing.T) {
8888

8989
func getMockDALC(logger log.Logger) da.DataAvailabilityLayerClient {
9090
dalc := &mockda.DataAvailabilityLayerClient{}
91-
_ = dalc.Init(nil, nil, logger)
91+
_ = dalc.Init([8]byte{}, nil, nil, logger)
9292
_ = dalc.Start()
9393
return dalc
9494
}

da/celestia/celestia.go

Lines changed: 11 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -20,23 +20,24 @@ import (
2020
type DataAvailabilityLayerClient struct {
2121
client *cnc.Client
2222

23-
config Config
24-
logger log.Logger
23+
namespaceID [8]byte
24+
config Config
25+
logger log.Logger
2526
}
2627

2728
var _ da.DataAvailabilityLayerClient = &DataAvailabilityLayerClient{}
2829
var _ da.BlockRetriever = &DataAvailabilityLayerClient{}
2930

3031
// Config stores Celestia DALC configuration parameters.
3132
type Config struct {
32-
BaseURL string `json:"base_url"`
33-
Timeout time.Duration `json:"timeout"`
34-
GasLimit uint64 `json:"gas_limit"`
35-
NamespaceID [8]byte `json:"namespace_id"`
33+
BaseURL string `json:"base_url"`
34+
Timeout time.Duration `json:"timeout"`
35+
GasLimit uint64 `json:"gas_limit"`
3636
}
3737

3838
// Init initializes DataAvailabilityLayerClient instance.
39-
func (c *DataAvailabilityLayerClient) Init(config []byte, kvStore store.KVStore, logger log.Logger) error {
39+
func (c *DataAvailabilityLayerClient) Init(namespaceID [8]byte, config []byte, kvStore store.KVStore, logger log.Logger) error {
40+
c.namespaceID = namespaceID
4041
c.logger = logger
4142

4243
if len(config) > 0 {
@@ -72,7 +73,7 @@ func (c *DataAvailabilityLayerClient) SubmitBlock(block *types.Block) da.ResultS
7273
}
7374
}
7475

75-
txResponse, err := c.client.SubmitPFD(context.TODO(), c.config.NamespaceID, blob, c.config.GasLimit)
76+
txResponse, err := c.client.SubmitPFD(context.TODO(), c.namespaceID, blob, c.config.GasLimit)
7677

7778
if err != nil {
7879
return da.ResultSubmitBlock{
@@ -103,7 +104,7 @@ func (c *DataAvailabilityLayerClient) SubmitBlock(block *types.Block) da.ResultS
103104

104105
// CheckBlockAvailability queries DA layer to check data availability of block at given height.
105106
func (c *DataAvailabilityLayerClient) CheckBlockAvailability(dataLayerHeight uint64) da.ResultCheckBlock {
106-
shares, err := c.client.NamespacedShares(context.TODO(), c.config.NamespaceID, dataLayerHeight)
107+
shares, err := c.client.NamespacedShares(context.TODO(), c.namespaceID, dataLayerHeight)
107108
if err != nil {
108109
return da.ResultCheckBlock{
109110
BaseResult: da.BaseResult{
@@ -124,7 +125,7 @@ func (c *DataAvailabilityLayerClient) CheckBlockAvailability(dataLayerHeight uin
124125

125126
// RetrieveBlocks gets a batch of blocks from DA layer.
126127
func (c *DataAvailabilityLayerClient) RetrieveBlocks(dataLayerHeight uint64) da.ResultRetrieveBlocks {
127-
data, err := c.client.NamespacedData(context.TODO(), c.config.NamespaceID, dataLayerHeight)
128+
data, err := c.client.NamespacedData(context.TODO(), c.namespaceID, dataLayerHeight)
128129
if err != nil {
129130
return da.ResultRetrieveBlocks{
130131
BaseResult: da.BaseResult{

da/celestia/mock/server.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -39,7 +39,7 @@ func NewServer(blockTime time.Duration, logger log.Logger) *Server {
3939

4040
// Start starts HTTP server with given listener.
4141
func (s *Server) Start(listener net.Listener) error {
42-
err := s.mock.Init([]byte(s.blockTime.String()), store.NewDefaultInMemoryKVStore(), s.logger)
42+
err := s.mock.Init([8]byte{}, []byte(s.blockTime.String()), store.NewDefaultInMemoryKVStore(), s.logger)
4343
if err != nil {
4444
return err
4545
}

da/da.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -58,7 +58,7 @@ type ResultRetrieveBlocks struct {
5858
// It also contains life-cycle methods.
5959
type DataAvailabilityLayerClient interface {
6060
// Init is called once to allow DA client to read configuration and initialize resources.
61-
Init(config []byte, kvStore store.KVStore, logger log.Logger) error
61+
Init(namespaceID [8]byte, config []byte, kvStore store.KVStore, logger log.Logger) error
6262

6363
// Start is called once, after Init. It's implementation should start operation of DataAvailabilityLayerClient.
6464
Start() error

da/grpc/grpc.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -41,7 +41,7 @@ var _ da.DataAvailabilityLayerClient = &DataAvailabilityLayerClient{}
4141
var _ da.BlockRetriever = &DataAvailabilityLayerClient{}
4242

4343
// Init sets the configuration options.
44-
func (d *DataAvailabilityLayerClient) Init(config []byte, _ store.KVStore, logger log.Logger) error {
44+
func (d *DataAvailabilityLayerClient) Init(_ [8]byte, config []byte, _ store.KVStore, logger log.Logger) error {
4545
d.logger = logger
4646
if len(config) == 0 {
4747
d.config = DefaultConfig

da/grpc/mockserv/mockserv.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -21,7 +21,7 @@ func GetServer(kv store.KVStore, conf grpcda.Config, mockConfig []byte) *grpc.Se
2121

2222
srv := grpc.NewServer()
2323
mockImpl := &mockImpl{}
24-
err := mockImpl.mock.Init(mockConfig, kv, logger)
24+
err := mockImpl.mock.Init([8]byte{}, mockConfig, kv, logger)
2525
if err != nil {
2626
logger.Error("failed to initialize mock DALC", "error", err)
2727
panic(err)

da/mock/mock.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -31,7 +31,7 @@ var _ da.DataAvailabilityLayerClient = &DataAvailabilityLayerClient{}
3131
var _ da.BlockRetriever = &DataAvailabilityLayerClient{}
3232

3333
// Init is called once to allow DA client to read configuration and initialize resources.
34-
func (m *DataAvailabilityLayerClient) Init(config []byte, dalcKV store.KVStore, logger log.Logger) error {
34+
func (m *DataAvailabilityLayerClient) Init(_ [8]byte, config []byte, dalcKV store.KVStore, logger log.Logger) error {
3535
m.logger = logger
3636
m.dalcKV = dalcKV
3737
m.daHeight = 1

da/test/da_test.go

Lines changed: 11 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -26,6 +26,8 @@ import (
2626

2727
const mockDaBlockTime = 100 * time.Millisecond
2828

29+
var testNamespaceID = [8]byte{0, 1, 2, 3, 4, 5, 6, 7}
30+
2931
func TestLifecycle(t *testing.T) {
3032
srv := startMockGRPCServ(t)
3133
defer srv.GracefulStop()
@@ -40,7 +42,7 @@ func TestLifecycle(t *testing.T) {
4042
func doTestLifecycle(t *testing.T, dalc da.DataAvailabilityLayerClient) {
4143
require := require.New(t)
4244

43-
err := dalc.Init([]byte{}, nil, test.NewLogger(t))
45+
err := dalc.Init(testNamespaceID, []byte{}, nil, test.NewLogger(t))
4446
require.NoError(err)
4547

4648
err = dalc.Start()
@@ -75,14 +77,13 @@ func doTestDALC(t *testing.T, dalc da.DataAvailabilityLayerClient) {
7577
}
7678
if _, ok := dalc.(*celestia.DataAvailabilityLayerClient); ok {
7779
config := celestia.Config{
78-
BaseURL: "http://localhost:26658",
79-
Timeout: 30 * time.Second,
80-
GasLimit: 3000000,
81-
NamespaceID: [8]byte{0, 1, 2, 3, 4, 5, 6, 7},
80+
BaseURL: "http://localhost:26658",
81+
Timeout: 30 * time.Second,
82+
GasLimit: 3000000,
8283
}
8384
conf, _ = json.Marshal(config)
8485
}
85-
err := dalc.Init(conf, store.NewDefaultInMemoryKVStore(), test.NewLogger(t))
86+
err := dalc.Init(testNamespaceID, conf, store.NewDefaultInMemoryKVStore(), test.NewLogger(t))
8687
require.NoError(err)
8788

8889
err = dalc.Start()
@@ -177,14 +178,13 @@ func doTestRetrieve(t *testing.T, dalc da.DataAvailabilityLayerClient) {
177178
}
178179
if _, ok := dalc.(*celestia.DataAvailabilityLayerClient); ok {
179180
config := celestia.Config{
180-
BaseURL: "http://localhost:26658",
181-
Timeout: 30 * time.Second,
182-
GasLimit: 3000000,
183-
NamespaceID: [8]byte{0, 1, 2, 3, 4, 5, 6, 7},
181+
BaseURL: "http://localhost:26658",
182+
Timeout: 30 * time.Second,
183+
GasLimit: 3000000,
184184
}
185185
conf, _ = json.Marshal(config)
186186
}
187-
err := dalc.Init(conf, store.NewDefaultInMemoryKVStore(), test.NewLogger(t))
187+
err := dalc.Init(testNamespaceID, conf, store.NewDefaultInMemoryKVStore(), test.NewLogger(t))
188188
require.NoError(err)
189189

190190
err = dalc.Start()

node/integration_test.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -171,7 +171,7 @@ func createNodes(num int, wg *sync.WaitGroup, t *testing.T) ([]*Node, []*mocks.A
171171
nodes := make([]*Node, num)
172172
apps := make([]*mocks.Application, num)
173173
dalc := &mockda.DataAvailabilityLayerClient{}
174-
_ = dalc.Init(nil, store.NewDefaultInMemoryKVStore(), log.TestingLogger())
174+
_ = dalc.Init([8]byte{}, nil, store.NewDefaultInMemoryKVStore(), log.TestingLogger())
175175
_ = dalc.Start()
176176

177177
nodes[0], apps[0] = createNode(0, true, dalc, keys, wg, t)

node/node.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -114,7 +114,7 @@ func NewNode(ctx context.Context, conf config.NodeConfig, p2pKey crypto.PrivKey,
114114
if dalc == nil {
115115
return nil, fmt.Errorf("couldn't get data availability client named '%s'", conf.DALayer)
116116
}
117-
err = dalc.Init([]byte(conf.DAConfig), dalcKV, logger.With("module", "da_client"))
117+
err = dalc.Init(conf.NamespaceID, []byte(conf.DAConfig), dalcKV, logger.With("module", "da_client"))
118118
if err != nil {
119119
return nil, fmt.Errorf("data availability layer client initialization error: %w", err)
120120
}

0 commit comments

Comments
 (0)