Skip to content

Commit

Permalink
deduplicate convert function
Browse files Browse the repository at this point in the history
  • Loading branch information
vgonkivs committed Jan 15, 2025
1 parent cc11220 commit 93dba58
Show file tree
Hide file tree
Showing 3 changed files with 38 additions and 38 deletions.
16 changes: 16 additions & 0 deletions blob/helper.go
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,8 @@ package blob
import (
"sort"

"github.com/celestiaorg/go-square/merkle"
"github.com/celestiaorg/go-square/v2/inclusion"
libshare "github.com/celestiaorg/go-square/v2/share"
)

Expand Down Expand Up @@ -32,6 +34,20 @@ func ToLibBlobs(blobs ...*Blob) []*libshare.Blob {
return libBlobs
}

// ToNodeBlobs converts libshare blob type to the node's specific blob type.
func ToNodeBlobs(blobs ...*libshare.Blob) ([]*Blob, error) {
nodeBlobs := make([]*Blob, len(blobs))
hashFromByteSlices := merkle.HashFromByteSlices
for i, blob := range blobs {
com, err := inclusion.CreateCommitment(blob, hashFromByteSlices, subtreeRootThreshold)
if err != nil {
return nil, err
}
nodeBlobs[i] = &Blob{Blob: blob, Commitment: com, index: -1}
}
return nodeBlobs, nil
}

func calculateIndex(rowLength, blobIndex int) (row, col int) {
row = blobIndex / rowLength
col = blobIndex - (row * rowLength)
Expand Down
42 changes: 16 additions & 26 deletions nodebuilder/tests/blob_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -30,13 +30,9 @@ func TestBlobModule(t *testing.T) {
require.NoError(t, err)
libBlobs1, err := libshare.GenerateV0Blobs([]int{4}, false)
require.NoError(t, err)
blobs := make([]*blob.Blob, 0, len(libBlobs0)+len(libBlobs1))

for _, libBlob := range append(libBlobs0, libBlobs1...) {
blob, err := convert(libBlob)
require.NoError(t, err)
blobs = append(blobs, blob)
}
blobs, err := blob.ToNodeBlobs(append(libBlobs0, libBlobs1...)...)
require.NoError(t, err)

bridge := sw.NewBridgeNode()
require.NoError(t, bridge.Start(ctx))
Expand Down Expand Up @@ -68,9 +64,9 @@ func TestBlobModule(t *testing.T) {
)
require.NoError(t, err)

v1, err := convert(v1Blob)
v1, err := blob.ToNodeBlobs(v1Blob)
require.NoError(t, err)
blobs = append(blobs, v1)
blobs = append(blobs, v1[0])

height, err := fullClient.Blob.Submit(ctx, blobs, state.NewTxConfig())
require.NoError(t, err)
Expand Down Expand Up @@ -109,12 +105,12 @@ func TestBlobModule(t *testing.T) {
{
name: "Get BlobV1",
doFn: func(t *testing.T) {
blobV1, err := fullClient.Blob.Get(ctx, height, v1.Namespace(), v1.Commitment)
blobV1, err := fullClient.Blob.Get(ctx, height, v1[0].Namespace(), v1[0].Commitment)
require.NoError(t, err)
assert.Equal(t, libshare.ShareVersionOne, blobV1.ShareVersion())
assert.Equal(t, v1.Commitment, blobV1.Commitment)
assert.Equal(t, v1[0].Commitment, blobV1.Commitment)
assert.NotNil(t, blobV1.Signer())
assert.Equal(t, blobV1.Signer(), v1.Signer())
assert.Equal(t, blobV1.Signer(), v1[0].Signer())

},
},
Expand All @@ -140,15 +136,15 @@ func TestBlobModule(t *testing.T) {
doFn: func(t *testing.T) {
libBlob, err := libshare.GenerateV0Blobs([]int{4}, false)
require.NoError(t, err)
newBlob, err := convert(libBlob[0])
newBlob, err := blob.ToNodeBlobs(libBlob[0])
require.NoError(t, err)

b, err := fullClient.Blob.Get(ctx, height, newBlob.Namespace(), newBlob.Commitment)
b, err := fullClient.Blob.Get(ctx, height, newBlob[0].Namespace(), newBlob[0].Commitment)
assert.Nil(t, b)
require.Error(t, err)
require.ErrorContains(t, err, blob.ErrBlobNotFound.Error())

blobs, err := fullClient.Blob.GetAll(ctx, height, []libshare.Namespace{newBlob.Namespace()})
blobs, err := fullClient.Blob.GetAll(ctx, height, []libshare.Namespace{newBlob[0].Namespace()})
require.NoError(t, err)
assert.Empty(t, blobs)
},
Expand All @@ -158,23 +154,23 @@ func TestBlobModule(t *testing.T) {
doFn: func(t *testing.T) {
libBlob, err := libshare.GenerateV0Blobs([]int{8, 4}, true)
require.NoError(t, err)
b, err := convert(libBlob[0])
b, err := blob.ToNodeBlobs(libBlob[0])
require.NoError(t, err)

height, err := fullClient.Blob.Submit(ctx, []*blob.Blob{b, b}, state.NewTxConfig())
height, err := fullClient.Blob.Submit(ctx, []*blob.Blob{b[0], b[0]}, state.NewTxConfig())
require.NoError(t, err)

_, err = fullClient.Header.WaitForHeight(ctx, height)
require.NoError(t, err)

b0, err := fullClient.Blob.Get(ctx, height, b.Namespace(), b.Commitment)
b0, err := fullClient.Blob.Get(ctx, height, b[0].Namespace(), b[0].Commitment)
require.NoError(t, err)
require.Equal(t, b.Commitment, b0.Commitment)
require.Equal(t, b[0].Commitment, b0.Commitment)

proof, err := fullClient.Blob.GetProof(ctx, height, b.Namespace(), b.Commitment)
proof, err := fullClient.Blob.GetProof(ctx, height, b[0].Namespace(), b[0].Commitment)
require.NoError(t, err)

included, err := fullClient.Blob.Included(ctx, height, b.Namespace(), proof, b.Commitment)
included, err := fullClient.Blob.Included(ctx, height, b[0].Namespace(), proof, b[0].Commitment)
require.NoError(t, err)
require.True(t, included)
},
Expand Down Expand Up @@ -212,9 +208,3 @@ func TestBlobModule(t *testing.T) {
})
}
}

// convert converts a libshare.Blob to a blob.Blob.
// convert may be deduplicated with convertBlobs from the blob package.
func convert(libBlob *libshare.Blob) (nodeBlob *blob.Blob, err error) {
return blob.NewBlob(libBlob.ShareVersion(), libBlob.Namespace(), libBlob.Data(), libBlob.Signer())
}
18 changes: 6 additions & 12 deletions nodebuilder/tests/share_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -30,7 +30,7 @@ func TestShareModule(t *testing.T) {
libBlob, err := libshare.GenerateV0Blobs([]int{blobSize}, true)
require.NoError(t, err)

nodeBlob, err := convert(libBlob[0])
nodeBlob, err := blob.ToNodeBlobs(libBlob[0])
require.NoError(t, err)

bridge := sw.NewBridgeNode()
Expand All @@ -54,15 +54,15 @@ func TestShareModule(t *testing.T) {
fullClient := getAdminClient(ctx, fullNode, t)
lightClient := getAdminClient(ctx, lightNode, t)

height, err := fullClient.Blob.Submit(ctx, []*blob.Blob{nodeBlob}, state.NewTxConfig())
height, err := fullClient.Blob.Submit(ctx, nodeBlob, state.NewTxConfig())
require.NoError(t, err)

_, err = fullClient.Header.WaitForHeight(ctx, height)
require.NoError(t, err)
_, err = lightClient.Header.WaitForHeight(ctx, height)
require.NoError(t, err)

sampledBlob, err := fullClient.Blob.Get(ctx, height, nodeBlob.Namespace(), nodeBlob.Commitment)
sampledBlob, err := fullClient.Blob.Get(ctx, height, nodeBlob[0].Namespace(), nodeBlob[0].Commitment)
require.NoError(t, err)

hdr, err := fullClient.Header.GetByHeight(ctx, height)
Expand Down Expand Up @@ -194,11 +194,11 @@ func TestShareModule(t *testing.T) {
dah := hdr.DAH
err = nsData.Verify(dah, blobAsShares[0].Namespace())
require.NoError(t, err)
blob, err := libshare.ParseBlobs(nsData.Flatten())
b, err := libshare.ParseBlobs(nsData.Flatten())
require.NoError(t, err)
blb, err := convert(blob[0])
blb, err := blob.ToNodeBlobs(b[0])
require.NoError(t, err)
require.Equal(t, nodeBlob.Commitment, blb.Commitment)
require.Equal(t, nodeBlob[0].Commitment, blb[0].Commitment)
},
},
}
Expand All @@ -209,9 +209,3 @@ func TestShareModule(t *testing.T) {
})
}
}

// convert converts a libshare.Blob to a blob.Blob.
// convert may be deduplicated with convertBlobs from the blob package.
func convert(libBlob *libshare.Blob) (nodeBlob *blob.Blob, err error) {
return blob.NewBlob(libBlob.ShareVersion(), libBlob.Namespace(), libBlob.Data(), libBlob.Signer())
}

0 comments on commit 93dba58

Please sign in to comment.