Skip to content

Commit

Permalink
feat: pass namespace ID to DA layers
Browse files Browse the repository at this point in the history
Resolves cosmos#425.
  • Loading branch information
tzdybal committed Aug 17, 2022
1 parent 60652ee commit 8b186f9
Show file tree
Hide file tree
Showing 10 changed files with 30 additions and 29 deletions.
2 changes: 1 addition & 1 deletion block/manager_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -88,7 +88,7 @@ func TestInitialState(t *testing.T) {

func getMockDALC(logger log.Logger) da.DataAvailabilityLayerClient {
dalc := &mockda.DataAvailabilityLayerClient{}
_ = dalc.Init(nil, nil, logger)
_ = dalc.Init([8]byte{}, nil, nil, logger)
_ = dalc.Start()
return dalc
}
Expand Down
21 changes: 11 additions & 10 deletions da/celestia/celestia.go
Original file line number Diff line number Diff line change
Expand Up @@ -20,23 +20,24 @@ import (
type DataAvailabilityLayerClient struct {
client *cnc.Client

config Config
logger log.Logger
namespaceID [8]byte
config Config
logger log.Logger
}

var _ da.DataAvailabilityLayerClient = &DataAvailabilityLayerClient{}
var _ da.BlockRetriever = &DataAvailabilityLayerClient{}

// Config stores Celestia DALC configuration parameters.
type Config struct {
BaseURL string `json:"base_url"`
Timeout time.Duration `json:"timeout"`
GasLimit uint64 `json:"gas_limit"`
NamespaceID [8]byte `json:"namespace_id"`
BaseURL string `json:"base_url"`
Timeout time.Duration `json:"timeout"`
GasLimit uint64 `json:"gas_limit"`
}

// Init initializes DataAvailabilityLayerClient instance.
func (c *DataAvailabilityLayerClient) Init(config []byte, kvStore store.KVStore, logger log.Logger) error {
func (c *DataAvailabilityLayerClient) Init(namespaceID [8]byte, config []byte, kvStore store.KVStore, logger log.Logger) error {
c.namespaceID = namespaceID
c.logger = logger

if len(config) > 0 {
Expand Down Expand Up @@ -72,7 +73,7 @@ func (c *DataAvailabilityLayerClient) SubmitBlock(block *types.Block) da.ResultS
}
}

txResponse, err := c.client.SubmitPFD(context.TODO(), c.config.NamespaceID, blob, c.config.GasLimit)
txResponse, err := c.client.SubmitPFD(context.TODO(), c.namespaceID, blob, c.config.GasLimit)

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

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

// RetrieveBlocks gets a batch of blocks from DA layer.
func (c *DataAvailabilityLayerClient) RetrieveBlocks(dataLayerHeight uint64) da.ResultRetrieveBlocks {
data, err := c.client.NamespacedData(context.TODO(), c.config.NamespaceID, dataLayerHeight)
data, err := c.client.NamespacedData(context.TODO(), c.namespaceID, dataLayerHeight)
if err != nil {
return da.ResultRetrieveBlocks{
BaseResult: da.BaseResult{
Expand Down
2 changes: 1 addition & 1 deletion da/celestia/mock/server.go
Original file line number Diff line number Diff line change
Expand Up @@ -39,7 +39,7 @@ func NewServer(blockTime time.Duration, logger log.Logger) *Server {

// Start starts HTTP server with given listener.
func (s *Server) Start(listener net.Listener) error {
err := s.mock.Init([]byte(s.blockTime.String()), store.NewDefaultInMemoryKVStore(), s.logger)
err := s.mock.Init([8]byte{}, []byte(s.blockTime.String()), store.NewDefaultInMemoryKVStore(), s.logger)
if err != nil {
return err
}
Expand Down
2 changes: 1 addition & 1 deletion da/da.go
Original file line number Diff line number Diff line change
Expand Up @@ -58,7 +58,7 @@ type ResultRetrieveBlocks struct {
// It also contains life-cycle methods.
type DataAvailabilityLayerClient interface {
// Init is called once to allow DA client to read configuration and initialize resources.
Init(config []byte, kvStore store.KVStore, logger log.Logger) error
Init(namespaceID [8]byte, config []byte, kvStore store.KVStore, logger log.Logger) error

// Start is called once, after Init. It's implementation should start operation of DataAvailabilityLayerClient.
Start() error
Expand Down
2 changes: 1 addition & 1 deletion da/grpc/grpc.go
Original file line number Diff line number Diff line change
Expand Up @@ -41,7 +41,7 @@ var _ da.DataAvailabilityLayerClient = &DataAvailabilityLayerClient{}
var _ da.BlockRetriever = &DataAvailabilityLayerClient{}

// Init sets the configuration options.
func (d *DataAvailabilityLayerClient) Init(config []byte, _ store.KVStore, logger log.Logger) error {
func (d *DataAvailabilityLayerClient) Init(_ [8]byte, config []byte, _ store.KVStore, logger log.Logger) error {
d.logger = logger
if len(config) == 0 {
d.config = DefaultConfig
Expand Down
2 changes: 1 addition & 1 deletion da/grpc/mockserv/mockserv.go
Original file line number Diff line number Diff line change
Expand Up @@ -21,7 +21,7 @@ func GetServer(kv store.KVStore, conf grpcda.Config, mockConfig []byte) *grpc.Se

srv := grpc.NewServer()
mockImpl := &mockImpl{}
err := mockImpl.mock.Init(mockConfig, kv, logger)
err := mockImpl.mock.Init([8]byte{}, mockConfig, kv, logger)
if err != nil {
logger.Error("failed to initialize mock DALC", "error", err)
panic(err)
Expand Down
2 changes: 1 addition & 1 deletion da/mock/mock.go
Original file line number Diff line number Diff line change
Expand Up @@ -31,7 +31,7 @@ var _ da.DataAvailabilityLayerClient = &DataAvailabilityLayerClient{}
var _ da.BlockRetriever = &DataAvailabilityLayerClient{}

// Init is called once to allow DA client to read configuration and initialize resources.
func (m *DataAvailabilityLayerClient) Init(config []byte, dalcKV store.KVStore, logger log.Logger) error {
func (m *DataAvailabilityLayerClient) Init(_ [8]byte, config []byte, dalcKV store.KVStore, logger log.Logger) error {
m.logger = logger
m.dalcKV = dalcKV
m.daHeight = 1
Expand Down
22 changes: 11 additions & 11 deletions da/test/da_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -26,6 +26,8 @@ import (

const mockDaBlockTime = 100 * time.Millisecond

var testNamespaceID = [8]byte{0, 1, 2, 3, 4, 5, 6, 7}

func TestLifecycle(t *testing.T) {
srv := startMockGRPCServ(t)
defer srv.GracefulStop()
Expand All @@ -40,7 +42,7 @@ func TestLifecycle(t *testing.T) {
func doTestLifecycle(t *testing.T, dalc da.DataAvailabilityLayerClient) {
require := require.New(t)

err := dalc.Init([]byte{}, nil, test.NewLogger(t))
err := dalc.Init(testNamespaceID, []byte{}, nil, test.NewLogger(t))
require.NoError(err)

err = dalc.Start()
Expand Down Expand Up @@ -75,14 +77,13 @@ func doTestDALC(t *testing.T, dalc da.DataAvailabilityLayerClient) {
}
if _, ok := dalc.(*celestia.DataAvailabilityLayerClient); ok {
config := celestia.Config{
BaseURL: "http://localhost:26658",
Timeout: 30 * time.Second,
GasLimit: 3000000,
NamespaceID: [8]byte{0, 1, 2, 3, 4, 5, 6, 7},
BaseURL: "http://localhost:26658",
Timeout: 30 * time.Second,
GasLimit: 3000000,
}
conf, _ = json.Marshal(config)
}
err := dalc.Init(conf, store.NewDefaultInMemoryKVStore(), test.NewLogger(t))
err := dalc.Init(testNamespaceID, conf, store.NewDefaultInMemoryKVStore(), test.NewLogger(t))
require.NoError(err)

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

err = dalc.Start()
Expand Down
2 changes: 1 addition & 1 deletion node/integration_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -171,7 +171,7 @@ func createNodes(num int, wg *sync.WaitGroup, t *testing.T) ([]*Node, []*mocks.A
nodes := make([]*Node, num)
apps := make([]*mocks.Application, num)
dalc := &mockda.DataAvailabilityLayerClient{}
_ = dalc.Init(nil, store.NewDefaultInMemoryKVStore(), log.TestingLogger())
_ = dalc.Init([8]byte{}, nil, store.NewDefaultInMemoryKVStore(), log.TestingLogger())
_ = dalc.Start()

nodes[0], apps[0] = createNode(0, true, dalc, keys, wg, t)
Expand Down
2 changes: 1 addition & 1 deletion node/node.go
Original file line number Diff line number Diff line change
Expand Up @@ -114,7 +114,7 @@ func NewNode(ctx context.Context, conf config.NodeConfig, p2pKey crypto.PrivKey,
if dalc == nil {
return nil, fmt.Errorf("couldn't get data availability client named '%s'", conf.DALayer)
}
err = dalc.Init([]byte(conf.DAConfig), dalcKV, logger.With("module", "da_client"))
err = dalc.Init(conf.NamespaceID, []byte(conf.DAConfig), dalcKV, logger.With("module", "da_client"))
if err != nil {
return nil, fmt.Errorf("data availability layer client initialization error: %w", err)
}
Expand Down

0 comments on commit 8b186f9

Please sign in to comment.