Skip to content

Commit

Permalink
refactor(share)!: replacing share.Root with header.ExtendedHeader in …
Browse files Browse the repository at this point in the history
…APIS (#2773)
  • Loading branch information
distractedm1nd committed Oct 9, 2023
1 parent 6f083b6 commit d69d3b2
Show file tree
Hide file tree
Showing 39 changed files with 510 additions and 409 deletions.
2 changes: 1 addition & 1 deletion api/gateway/availability.go
Original file line number Diff line number Diff line change
Expand Up @@ -32,7 +32,7 @@ func (h *Handler) handleHeightAvailabilityRequest(w http.ResponseWriter, r *http
return
}

err = h.share.SharesAvailable(r.Context(), header.DAH)
err = h.share.SharesAvailable(r.Context(), header)
switch err {
case nil:
resp, err := json.Marshal(&AvailabilityResponse{Available: true})
Expand Down
2 changes: 1 addition & 1 deletion api/gateway/share.go
Original file line number Diff line number Diff line change
Expand Up @@ -96,7 +96,7 @@ func (h *Handler) getShares(ctx context.Context, height uint64, namespace share.
return nil, err
}

shares, err := h.share.GetSharesByNamespace(ctx, header.DAH, namespace)
shares, err := h.share.GetSharesByNamespace(ctx, header, namespace)
if err != nil {
return nil, err
}
Expand Down
12 changes: 8 additions & 4 deletions blob/service.go
Original file line number Diff line number Diff line change
Expand Up @@ -126,7 +126,7 @@ func (s *Service) GetAll(ctx context.Context, height uint64, namespaces []share.
wg.Add(1)
go func(i int, namespace share.Namespace) {
defer wg.Done()
blobs, err := s.getBlobs(ctx, namespace, header.DAH)
blobs, err := s.getBlobs(ctx, namespace, header)
if err != nil {
resultErr[i] = fmt.Errorf("getting blobs for namespace(%s): %s", namespace.String(), err)
return
Expand Down Expand Up @@ -204,7 +204,7 @@ func (s *Service) getByCommitment(
blobShare *shares.Share
)

namespacedShares, err := s.shareGetter.GetSharesByNamespace(ctx, header.DAH, namespace)
namespacedShares, err := s.shareGetter.GetSharesByNamespace(ctx, header, namespace)
if err != nil {
if errors.Is(err, share.ErrNotFound) {
err = ErrBlobNotFound
Expand Down Expand Up @@ -293,8 +293,12 @@ func (s *Service) getByCommitment(

// getBlobs retrieves the DAH and fetches all shares from the requested Namespace and converts
// them to Blobs.
func (s *Service) getBlobs(ctx context.Context, namespace share.Namespace, root *share.Root) ([]*Blob, error) {
namespacedShares, err := s.shareGetter.GetSharesByNamespace(ctx, root, namespace)
func (s *Service) getBlobs(
ctx context.Context,
namespace share.Namespace,
header *header.ExtendedHeader,
) ([]*Blob, error) {
namespacedShares, err := s.shareGetter.GetSharesByNamespace(ctx, header, namespace)
if err != nil {
return nil, err
}
Expand Down
2 changes: 1 addition & 1 deletion das/daser.go
Original file line number Diff line number Diff line change
Expand Up @@ -147,7 +147,7 @@ func (d *DASer) Stop(ctx context.Context) error {
}

func (d *DASer) sample(ctx context.Context, h *header.ExtendedHeader) error {
err := d.da.SharesAvailable(ctx, h.DAH)
err := d.da.SharesAvailable(ctx, h)
if err != nil {
var byzantineErr *byzantine.ErrByzantine
if errors.As(err, &byzantineErr) {
Expand Down
10 changes: 3 additions & 7 deletions das/daser_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -214,7 +214,7 @@ func TestDASerSampleTimeout(t *testing.T) {
avail := mocks.NewMockAvailability(gomock.NewController(t))
doneCh := make(chan struct{})
avail.EXPECT().SharesAvailable(gomock.Any(), gomock.Any()).DoAndReturn(
func(sampleCtx context.Context, h *share.Root) error {
func(sampleCtx context.Context, h *header.ExtendedHeader) error {
select {
case <-sampleCtx.Done():
close(doneCh)
Expand Down Expand Up @@ -291,9 +291,7 @@ func (m *mockGetter) fillSubWithHeaders(
for i := startHeight; i < endHeight; i++ {
dah := availability_test.RandFillBS(t, 16, bServ)

randHeader := headertest.RandExtendedHeader(t)
randHeader.DataHash = dah.Hash()
randHeader.DAH = dah
randHeader := headertest.RandExtendedHeaderWithRoot(t, dah)
randHeader.RawHeader.Height = int64(i + 1)

sub.Headers[index] = randHeader
Expand All @@ -319,9 +317,7 @@ func (m *mockGetter) generateHeaders(t *testing.T, bServ blockservice.BlockServi
for i := startHeight; i < endHeight; i++ {
dah := availability_test.RandFillBS(t, 16, bServ)

randHeader := headertest.RandExtendedHeader(t)
randHeader.DataHash = dah.Hash()
randHeader.DAH = dah
randHeader := headertest.RandExtendedHeaderWithRoot(t, dah)
randHeader.RawHeader.Height = int64(i + 1)

m.headers[int64(i+1)] = randHeader
Expand Down
17 changes: 8 additions & 9 deletions header/header.go
Original file line number Diff line number Diff line change
Expand Up @@ -12,10 +12,9 @@ import (
core "github.com/tendermint/tendermint/types"

"github.com/celestiaorg/celestia-app/pkg/appconsts"
"github.com/celestiaorg/celestia-app/pkg/da"
libhead "github.com/celestiaorg/go-header"
"github.com/celestiaorg/rsmt2d"

"github.com/celestiaorg/celestia-node/share"
)

// ConstructFn aliases a function that creates an ExtendedHeader.
Expand All @@ -36,9 +35,9 @@ type RawHeader = core.Header
// block headers and perform Data Availability Sampling.
type ExtendedHeader struct {
RawHeader `json:"header"`
Commit *core.Commit `json:"commit"`
ValidatorSet *core.ValidatorSet `json:"validator_set"`
DAH *share.Root `json:"dah"`
Commit *core.Commit `json:"commit"`
ValidatorSet *core.ValidatorSet `json:"validator_set"`
DAH *da.DataAvailabilityHeader `json:"dah"`
}

// MakeExtendedHeader assembles new ExtendedHeader.
Expand All @@ -49,22 +48,22 @@ func MakeExtendedHeader(
eds *rsmt2d.ExtendedDataSquare,
) (*ExtendedHeader, error) {
var (
dah *share.Root
dah da.DataAvailabilityHeader
err error
)
switch eds {
case nil:
dah = share.EmptyRoot()
dah = da.MinDataAvailabilityHeader()
default:
dah, err = share.NewRoot(eds)
dah, err = da.NewDataAvailabilityHeader(eds)
if err != nil {
return nil, err
}
}

eh := &ExtendedHeader{
RawHeader: *h,
DAH: dah,
DAH: &dah,
Commit: comm,
ValidatorSet: vals,
}
Expand Down
14 changes: 11 additions & 3 deletions header/headertest/testing.go
Original file line number Diff line number Diff line change
Expand Up @@ -17,6 +17,7 @@ import (
"github.com/tendermint/tendermint/types"
tmtime "github.com/tendermint/tendermint/types/time"

"github.com/celestiaorg/celestia-app/pkg/da"
libhead "github.com/celestiaorg/go-header"
"github.com/celestiaorg/go-header/headertest"
"github.com/celestiaorg/rsmt2d"
Expand Down Expand Up @@ -202,7 +203,7 @@ func (s *TestSuite) nextProposer() *types.Validator {
}

// RandExtendedHeader provides an ExtendedHeader fixture.
func RandExtendedHeader(t *testing.T) *header.ExtendedHeader {
func RandExtendedHeader(t testing.TB) *header.ExtendedHeader {
dah := share.EmptyRoot()

rh := RandRawHeader(t)
Expand All @@ -224,6 +225,13 @@ func RandExtendedHeader(t *testing.T) *header.ExtendedHeader {
}
}

func RandExtendedHeaderWithRoot(t testing.TB, dah *da.DataAvailabilityHeader) *header.ExtendedHeader {
h := RandExtendedHeader(t)
h.DataHash = dah.Hash()
h.DAH = dah
return h
}

func RandValidatorSet(numValidators int, votingPower int64) (*types.ValidatorSet, []types.PrivValidator) {
var (
valz = make([]*types.Validator, numValidators)
Expand Down Expand Up @@ -256,7 +264,7 @@ func RandValidator(randPower bool, minPower int64) (*types.Validator, types.Priv
}

// RandRawHeader provides a RawHeader fixture.
func RandRawHeader(t *testing.T) *header.RawHeader {
func RandRawHeader(t testing.TB) *header.RawHeader {
return &header.RawHeader{
Version: version.Consensus{Block: 11, App: 1},
ChainID: "test",
Expand All @@ -276,7 +284,7 @@ func RandRawHeader(t *testing.T) *header.RawHeader {
}

// RandBlockID provides a BlockID fixture.
func RandBlockID(*testing.T) types.BlockID {
func RandBlockID(testing.TB) types.BlockID {
bid := types.BlockID{
Hash: make([]byte, 32),
PartSetHeader: types.PartSetHeader{
Expand Down
5 changes: 4 additions & 1 deletion nodebuilder/node_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -13,6 +13,7 @@ import (
collectormetricpb "go.opentelemetry.io/proto/otlp/collector/metrics/v1"
"google.golang.org/protobuf/proto"

"github.com/celestiaorg/celestia-node/header/headertest"
"github.com/celestiaorg/celestia-node/nodebuilder/node"
"github.com/celestiaorg/celestia-node/share"
)
Expand Down Expand Up @@ -143,7 +144,9 @@ func TestEmptyBlockExists(t *testing.T) {
require.NoError(t, err)

// ensure an empty block exists in store
err = node.ShareServ.SharesAvailable(ctx, share.EmptyRoot())

eh := headertest.RandExtendedHeaderWithRoot(t, share.EmptyRoot())
err = node.ShareServ.SharesAvailable(ctx, eh)
require.NoError(t, err)

err = node.Stop(ctx)
Expand Down
35 changes: 17 additions & 18 deletions nodebuilder/share/cmd/share.go
Original file line number Diff line number Diff line change
Expand Up @@ -7,9 +7,8 @@ import (

"github.com/spf13/cobra"

"github.com/celestiaorg/celestia-app/pkg/da"

cmdnode "github.com/celestiaorg/celestia-node/cmd"
"github.com/celestiaorg/celestia-node/header"
"github.com/celestiaorg/celestia-node/share"
)

Expand Down Expand Up @@ -45,13 +44,13 @@ var sharesAvailableCmd = &cobra.Command{
return err
}

root := da.MinDataAvailabilityHeader()
err = json.Unmarshal(raw, &root)
var eh *header.ExtendedHeader
err = json.Unmarshal(raw, &eh)
if err != nil {
return err
}

err = client.Share.SharesAvailable(cmd.Context(), &root)
err = client.Share.SharesAvailable(cmd.Context(), eh)
formatter := func(data interface{}) interface{} {
err, ok := data.(error)
available := false
Expand All @@ -73,7 +72,7 @@ var sharesAvailableCmd = &cobra.Command{
}

var getSharesByNamespaceCmd = &cobra.Command{
Use: "get-by-namespace [dah, namespace]",
Use: "get-by-namespace [extended header, namespace]",
Short: "Gets all shares from an EDS within the given namespace.",
Args: cobra.ExactArgs(2),
RunE: func(cmd *cobra.Command, args []string) error {
Expand All @@ -88,8 +87,8 @@ var getSharesByNamespaceCmd = &cobra.Command{
return err
}

root := da.MinDataAvailabilityHeader()
err = json.Unmarshal(raw, &root)
var eh *header.ExtendedHeader
err = json.Unmarshal(raw, &eh)
if err != nil {
return err
}
Expand All @@ -99,13 +98,13 @@ var getSharesByNamespaceCmd = &cobra.Command{
return err
}

shares, err := client.Share.GetSharesByNamespace(cmd.Context(), &root, ns)
shares, err := client.Share.GetSharesByNamespace(cmd.Context(), eh, ns)
return cmdnode.PrintOutput(shares, err, nil)
},
}

var getShare = &cobra.Command{
Use: "get-share [dah, row, col]",
Use: "get-share [extended header, row, col]",
Short: "Gets a Share by coordinates in EDS.",
Args: cobra.ExactArgs(3),
RunE: func(cmd *cobra.Command, args []string) error {
Expand All @@ -120,8 +119,8 @@ var getShare = &cobra.Command{
return err
}

root := da.MinDataAvailabilityHeader()
err = json.Unmarshal(raw, &root)
var eh *header.ExtendedHeader
err = json.Unmarshal(raw, &eh)
if err != nil {
return err
}
Expand All @@ -136,7 +135,7 @@ var getShare = &cobra.Command{
return err
}

s, err := client.Share.GetShare(cmd.Context(), &root, int(row), int(col))
s, err := client.Share.GetShare(cmd.Context(), eh, int(row), int(col))

formatter := func(data interface{}) interface{} {
sh, ok := data.(share.Share)
Expand All @@ -159,8 +158,8 @@ var getShare = &cobra.Command{
}

var getEDS = &cobra.Command{
Use: "get-eds [dah]",
Short: "Gets the full EDS identified by the given root",
Use: "get-eds [extended header]",
Short: "Gets the full EDS identified by the given extended header",
Args: cobra.ExactArgs(1),
RunE: func(cmd *cobra.Command, args []string) error {
client, err := cmdnode.ParseClientFromCtx(cmd.Context())
Expand All @@ -174,13 +173,13 @@ var getEDS = &cobra.Command{
return err
}

root := da.MinDataAvailabilityHeader()
err = json.Unmarshal(raw, &root)
var eh *header.ExtendedHeader
err = json.Unmarshal(raw, &eh)
if err != nil {
return err
}

shares, err := client.Share.GetEDS(cmd.Context(), &root)
shares, err := client.Share.GetEDS(cmd.Context(), eh)
return cmdnode.PrintOutput(shares, err, nil)
},
}
Expand Down
3 changes: 1 addition & 2 deletions nodebuilder/share/module.go
Original file line number Diff line number Diff line change
Expand Up @@ -98,11 +98,10 @@ func ConstructModule(tp node.Type, cfg *Config, options ...fx.Option) fx.Option
func(
host host.Host,
store *eds.Store,
getter *getters.StoreGetter,
network modp2p.Network,
) (*shrexnd.Server, error) {
cfg.ShrExNDParams.WithNetworkID(network.String())
return shrexnd.NewServer(cfg.ShrExNDParams, host, store, getter)
return shrexnd.NewServer(cfg.ShrExNDParams, host, store)
},
fx.OnStart(func(ctx context.Context, server *shrexnd.Server) error {
return server.Start(ctx)
Expand Down
Loading

0 comments on commit d69d3b2

Please sign in to comment.