Skip to content
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
5 changes: 0 additions & 5 deletions api/client/client_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -33,8 +33,6 @@ import (
daMock "github.com/celestiaorg/celestia-node/nodebuilder/da/mocks"
"github.com/celestiaorg/celestia-node/nodebuilder/das"
dasMock "github.com/celestiaorg/celestia-node/nodebuilder/das/mocks"
"github.com/celestiaorg/celestia-node/nodebuilder/fraud"
fraudMock "github.com/celestiaorg/celestia-node/nodebuilder/fraud/mocks"
headerapi "github.com/celestiaorg/celestia-node/nodebuilder/header"
headerMock "github.com/celestiaorg/celestia-node/nodebuilder/header/mocks"
"github.com/celestiaorg/celestia-node/nodebuilder/node"
Expand Down Expand Up @@ -279,7 +277,6 @@ func TestSubmission_QueuedSubmission(t *testing.T) {
type mockAPI struct {
State *stateMock.MockModule
Share *shareMock.MockModule
Fraud *fraudMock.MockModule
Header *headerMock.MockModule
Das *dasMock.MockModule
P2P *p2pMock.MockModule
Expand All @@ -296,7 +293,6 @@ func setupMockRPCServer(t *testing.T, ctx context.Context) (*nodebuilder.Node, *
mockAPI := &mockAPI{
stateMock.NewMockModule(ctrl),
shareMock.NewMockModule(ctrl),
fraudMock.NewMockModule(ctrl),
headerMock.NewMockModule(ctrl),
dasMock.NewMockModule(ctrl),
p2pMock.NewMockModule(ctrl),
Expand All @@ -310,7 +306,6 @@ func setupMockRPCServer(t *testing.T, ctx context.Context) (*nodebuilder.Node, *
// given the behavior of fx.Invoke, this invoke will be called last as it is added at the root
// level module. For further information, check the documentation on fx.Invoke.
invokeRPC := fx.Invoke(func(srv *rpc.Server) {
srv.RegisterService("fraud", mockAPI.Fraud, &fraud.API{})
srv.RegisterService("das", mockAPI.Das, &das.API{})
srv.RegisterService("header", mockAPI.Header, &headerapi.API{})
srv.RegisterService("state", mockAPI.State, &statemod.API{})
Expand Down
10 changes: 0 additions & 10 deletions api/client/read_client.go
Original file line number Diff line number Diff line change
Expand Up @@ -10,7 +10,6 @@ import (
"github.com/celestiaorg/celestia-node/libs/utils"
blobapi "github.com/celestiaorg/celestia-node/nodebuilder/blob"
blobstreamapi "github.com/celestiaorg/celestia-node/nodebuilder/blobstream"
fraudapi "github.com/celestiaorg/celestia-node/nodebuilder/fraud"
headerapi "github.com/celestiaorg/celestia-node/nodebuilder/header"
shareapi "github.com/celestiaorg/celestia-node/nodebuilder/share"
)
Expand All @@ -31,7 +30,6 @@ type ReadClient struct {
Blob blobapi.Module
Header headerapi.Module
Share shareapi.Module
Fraud fraudapi.Module
Blobstream blobstreamapi.Module

closer func() error
Expand Down Expand Up @@ -87,13 +85,6 @@ func NewReadClient(ctx context.Context, cfg ReadConfig) (*ReadClient, error) {
return nil, fmt.Errorf("failed to initialize header client: %w", err)
}

fraudAPI := fraudapi.API{}
fraudCloser, err := jsonrpc.NewClient(
ctx, cfg.BridgeDAAddr, "fraud", &fraudAPI.Internal, cfg.HTTPHeader)
if err != nil {
return nil, fmt.Errorf("failed to initialize fraud client: %w", err)
}

// Initialize blob read client
blobAPI := blobapi.API{}
blobCloser, err := jsonrpc.NewClient(
Expand All @@ -107,7 +98,6 @@ func NewReadClient(ctx context.Context, cfg ReadConfig) (*ReadClient, error) {
shareCloser()
blobstreamCloser()
headerCloser()
fraudCloser()
blobCloser()
return nil
}
Expand Down
14 changes: 0 additions & 14 deletions api/docgen/examples.go
Original file line number Diff line number Diff line change
Expand Up @@ -22,7 +22,6 @@ import (
"golang.org/x/text/cases"
"golang.org/x/text/language"

"github.com/celestiaorg/go-fraud"
libhead "github.com/celestiaorg/go-header"
libshare "github.com/celestiaorg/go-square/v4/share"
"github.com/celestiaorg/rsmt2d"
Expand All @@ -32,7 +31,6 @@ import (
"github.com/celestiaorg/celestia-node/header"
"github.com/celestiaorg/celestia-node/nodebuilder/node"
"github.com/celestiaorg/celestia-node/share"
"github.com/celestiaorg/celestia-node/share/eds/byzantine"
"github.com/celestiaorg/celestia-node/state"
)

Expand Down Expand Up @@ -78,18 +76,6 @@ func init() {
add(time.Second)
add(node.Bridge)
add(auth.Permission("admin"))
add(byzantine.BadEncoding)

// TODO: this case requires more debugging, simple to leave it as it was.
exampleValues[reflect.TypeOf((*fraud.Proof[*header.ExtendedHeader])(nil)).Elem()] = byzantine.CreateBadEncodingProof(
[]byte("bad encoding proof"),
42,
&byzantine.ErrByzantine{
Index: 0,
Shares: []*byzantine.ShareWithProof{},
Axis: rsmt2d.Axis(0),
},
)

add(errors.New("error"))
add(state.Balance{Amount: math.NewInt(42), Denom: "utia"})
Expand Down
3 changes: 0 additions & 3 deletions api/rpc/client/client.go
Original file line number Diff line number Diff line change
Expand Up @@ -12,7 +12,6 @@ import (
"github.com/celestiaorg/celestia-node/nodebuilder/blobstream"
"github.com/celestiaorg/celestia-node/nodebuilder/da"
"github.com/celestiaorg/celestia-node/nodebuilder/das"
"github.com/celestiaorg/celestia-node/nodebuilder/fraud"
"github.com/celestiaorg/celestia-node/nodebuilder/header"
"github.com/celestiaorg/celestia-node/nodebuilder/node"
"github.com/celestiaorg/celestia-node/nodebuilder/p2p"
Expand All @@ -27,7 +26,6 @@ var (
)

type Client struct {
Fraud fraud.API
Header header.API
State state.API
Share share.API
Expand Down Expand Up @@ -93,7 +91,6 @@ func moduleMap(client *Client) map[string]any {
"share": &client.Share.Internal,
"state": &client.State.Internal,
"header": &client.Header.Internal,
"fraud": &client.Fraud.Internal,
"das": &client.DAS.Internal,
"p2p": &client.P2P.Internal,
"node": &client.Node.Internal,
Expand Down
6 changes: 0 additions & 6 deletions api/rpc_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -28,8 +28,6 @@ import (
daMock "github.com/celestiaorg/celestia-node/nodebuilder/da/mocks"
"github.com/celestiaorg/celestia-node/nodebuilder/das"
dasMock "github.com/celestiaorg/celestia-node/nodebuilder/das/mocks"
"github.com/celestiaorg/celestia-node/nodebuilder/fraud"
fraudMock "github.com/celestiaorg/celestia-node/nodebuilder/fraud/mocks"
"github.com/celestiaorg/celestia-node/nodebuilder/header"
headerMock "github.com/celestiaorg/celestia-node/nodebuilder/header/mocks"
"github.com/celestiaorg/celestia-node/nodebuilder/node"
Expand Down Expand Up @@ -128,7 +126,6 @@ func TestRPCCallsTokenExpired(t *testing.T) {
// api contains all modules that are made available as the node's
// public API surface
type api struct {
Fraud fraud.Module
Header header.Module
State statemod.Module
Share share.Module
Expand Down Expand Up @@ -344,7 +341,6 @@ func setupNodeWithAuthedRPC(t *testing.T,
mockAPI := &mockAPI{
stateMock.NewMockModule(ctrl),
shareMock.NewMockModule(ctrl),
fraudMock.NewMockModule(ctrl),
headerMock.NewMockModule(ctrl),
dasMock.NewMockModule(ctrl),
p2pMock.NewMockModule(ctrl),
Expand All @@ -357,7 +353,6 @@ func setupNodeWithAuthedRPC(t *testing.T,
// given the behavior of fx.Invoke, this invoke will be called last as it is added at the root
// level module. For further information, check the documentation on fx.Invoke.
invokeRPC := fx.Invoke(func(srv *rpc.Server) {
srv.RegisterService("fraud", mockAPI.Fraud, &fraud.API{})
srv.RegisterService("das", mockAPI.Das, &das.API{})
srv.RegisterService("header", mockAPI.Header, &header.API{})
srv.RegisterService("state", mockAPI.State, &statemod.API{})
Expand All @@ -384,7 +379,6 @@ func setupNodeWithAuthedRPC(t *testing.T,
type mockAPI struct {
State *stateMock.MockModule
Share *shareMock.MockModule
Fraud *fraudMock.MockModule
Header *headerMock.MockModule
Das *dasMock.MockModule
P2P *p2pMock.MockModule
Expand Down
2 changes: 0 additions & 2 deletions cmd/cel-shed/p2p.go
Original file line number Diff line number Diff line change
Expand Up @@ -16,7 +16,6 @@ import (
"go.uber.org/fx"

"github.com/celestiaorg/celestia-node/nodebuilder"
"github.com/celestiaorg/celestia-node/nodebuilder/fraud"
"github.com/celestiaorg/celestia-node/nodebuilder/node"
"github.com/celestiaorg/celestia-node/nodebuilder/p2p"
)
Expand Down Expand Up @@ -118,7 +117,6 @@ var p2pConnectBootstrappersCmd = &cobra.Command{
app := fx.New(
fx.NopLogger,
modp2p,
fx.Provide(fraud.Unmarshaler),
fx.Provide(cmd.Context),
fx.Provide(store.Keystore),
fx.Provide(store.Datastore),
Expand Down
19 changes: 1 addition & 18 deletions das/daser.go
Original file line number Diff line number Diff line change
Expand Up @@ -9,12 +9,10 @@ import (
"github.com/ipfs/go-datastore"
logging "github.com/ipfs/go-log/v2"

"github.com/celestiaorg/go-fraud"
libhead "github.com/celestiaorg/go-header"

"github.com/celestiaorg/celestia-node/header"
"github.com/celestiaorg/celestia-node/share"
"github.com/celestiaorg/celestia-node/share/eds/byzantine"
"github.com/celestiaorg/celestia-node/share/shwap/p2p/shrex/shrexsub"
)

Expand All @@ -25,7 +23,6 @@ type DASer struct {
params Parameters

da share.Availability
bcast fraud.Broadcaster[*header.ExtendedHeader]
hsub libhead.Subscriber[*header.ExtendedHeader] // listens for new headers in the network
getter libhead.Store[*header.ExtendedHeader] // retrieves past headers

Expand All @@ -48,14 +45,12 @@ func NewDASer(
hsub libhead.Subscriber[*header.ExtendedHeader],
getter libhead.Store[*header.ExtendedHeader],
dstore datastore.Datastore,
bcast fraud.Broadcaster[*header.ExtendedHeader],
shrexBroadcast shrexsub.BroadcastFn,
options ...Option,
) (*DASer, error) {
d := &DASer{
params: DefaultParameters(),
da: da,
bcast: bcast,
hsub: hsub,
getter: getter,
store: newCheckpointStore(dstore),
Expand Down Expand Up @@ -197,19 +192,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)
if err != nil {
var byzantineErr *byzantine.ErrByzantine
if errors.As(err, &byzantineErr) {
log.Warn("Propagating proof...")
sendErr := d.bcast.Broadcast(ctx, byzantine.CreateBadEncodingProof(h.Hash(), h.Height(), byzantineErr))
if sendErr != nil {
log.Errorw("fraud proof propagating failed", "err", sendErr)
}
}
return err
}
return nil
return d.da.SharesAvailable(ctx, h)
}

// SamplingStats returns the current statistics over the DA sampling process.
Expand Down
89 changes: 7 additions & 82 deletions das/daser_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -12,7 +12,6 @@ import (
"github.com/stretchr/testify/assert"
"github.com/stretchr/testify/require"

"github.com/celestiaorg/go-fraud/fraudtest"
libhead "github.com/celestiaorg/go-header"

"github.com/celestiaorg/celestia-node/header"
Expand All @@ -31,12 +30,12 @@ func TestDASerLifecycle(t *testing.T) {
avail := mocks.NewMockAvailability(ctrl)
avail.EXPECT().SharesAvailable(gomock.Any(), gomock.Any()).AnyTimes().Return(nil)
// 15 headers from the past and 15 future headers
mockGet, sub, mockService := createDASerSubcomponents(t, 15, 15)
mockGet, sub := createDASerSubcomponents(t, 15, 15)

ctx, cancel := context.WithTimeout(context.Background(), timeout)
t.Cleanup(cancel)

daser, err := NewDASer(avail, sub, mockGet, ds, mockService, newBroadcastMock(1))
daser, err := NewDASer(avail, sub, mockGet, ds, newBroadcastMock(1))
require.NoError(t, err)

err = daser.Start(ctx)
Expand All @@ -62,12 +61,12 @@ func TestDASer_Restart(t *testing.T) {
avail := mocks.NewMockAvailability(ctrl)
avail.EXPECT().SharesAvailable(gomock.Any(), gomock.Any()).AnyTimes().Return(nil)
// 15 headers from the past and 15 future headers
mockGet, sub, mockService := createDASerSubcomponents(t, 15, 15)
mockGet, sub := createDASerSubcomponents(t, 15, 15)

ctx, cancel := context.WithTimeout(context.Background(), timeout)
t.Cleanup(cancel)

daser, err := NewDASer(avail, sub, mockGet, ds, mockService, newBroadcastMock(1))
daser, err := NewDASer(avail, sub, mockGet, ds, newBroadcastMock(1))
require.NoError(t, err)

err = daser.Start(ctx)
Expand All @@ -88,7 +87,7 @@ func TestDASer_Restart(t *testing.T) {
restartCtx, restartCancel := context.WithTimeout(context.Background(), timeout)
t.Cleanup(restartCancel)

daser, err = NewDASer(avail, sub, mockGet, ds, mockService, newBroadcastMock(1))
daser, err = NewDASer(avail, sub, mockGet, ds, newBroadcastMock(1))
require.NoError(t, err)

err = daser.Start(restartCtx)
Expand All @@ -105,77 +104,6 @@ func TestDASer_Restart(t *testing.T) {
assert.EqualValues(t, 60, checkpoint.SampleFrom-1)
}

// TODO(@walldiss): BEFP test will not work until BEFP-shwap integration
// func TestDASer_stopsAfter_BEFP(t *testing.T) {
// ctx, cancel := context.WithTimeout(context.Background(), time.Second*20)
// t.Cleanup(cancel)
//
// ds := ds_sync.MutexWrap(datastore.NewMapDatastore())
// // create mock network
// net, err := mocknet.FullMeshLinked(1)
// require.NoError(t, err)
// // create pubsub for host
// ps, err := pubsub.NewGossipSub(ctx, net.Hosts()[0],
// pubsub.WithMessageSignaturePolicy(pubsub.StrictNoSign))
// require.NoError(t, err)
//
// ctrl := gomock.NewController(t)
// avail := mocks.NewMockAvailability(ctrl)
// avail.EXPECT().SharesAvailable(gomock.Any(), gomock.Any()).AnyTimes().Return(nil)
// // 15 headers from the past and 15 future headers
// mockGet, sub, _ := createDASerSubcomponents(t, 15, 15)
//
// // create fraud service and break one header
// getter := func(ctx context.Context, height uint64) (*header.ExtendedHeader, error) {
// return mockGet.GetByHeight(ctx, height)
// }
// headGetter := func(ctx context.Context) (*header.ExtendedHeader, error) {
// return mockGet.Head(ctx)
// }
// unmarshaler := fraud.MultiUnmarshaler[*header.ExtendedHeader]{
// Unmarshalers: map[fraud.ProofType]func([]byte) (fraud.Proof[*header.ExtendedHeader], error){
// byzantine.BadEncoding: func(data []byte) (fraud.Proof[*header.ExtendedHeader], error) {
// befp := &byzantine.BadEncodingProof{}
// return befp, befp.UnmarshalBinary(data)
// },
// },
// }
//
// fserv := fraudserv.NewProofService[*header.ExtendedHeader](ps,
// net.Hosts()[0],
// getter,
// headGetter,
// unmarshaler,
// ds,
// false,
// "private",
// )
// require.NoError(t, fserv.Start(ctx))
// mockGet.headers[1] = headerfraud.CreateFraudExtHeader(t, mockGet.headers[1])
// newCtx := context.Background()
//
// // create and start DASer
// daser, err := NewDASer(avail, sub, mockGet, ds, fserv, newBroadcastMock(1))
// require.NoError(t, err)
//
// resultCh := make(chan error)
// go fraud.OnProof[*header.ExtendedHeader](newCtx, fserv, byzantine.BadEncoding,
// func(fraud.Proof[*header.ExtendedHeader]) {
// resultCh <- daser.Stop(newCtx)
// })
//
// require.NoError(t, daser.Start(newCtx))
// // wait for fraud proof will be handled
// select {
// case <-ctx.Done():
// t.Fatal(ctx.Err())
// case res := <-resultCh:
// require.NoError(t, res)
// }
// // wait for manager to finish catchup
// require.False(t, daser.running.Load())
//}

func TestDASerSampleTimeout(t *testing.T) {
ctx, cancel := context.WithTimeout(context.Background(), time.Second*5)
t.Cleanup(cancel)
Expand All @@ -202,10 +130,9 @@ func TestDASerSampleTimeout(t *testing.T) {

ds := ds_sync.MutexWrap(datastore.NewMapDatastore())
sub := new(headertest.Subscriber)
fserv := &fraudtest.DummyService[*header.ExtendedHeader]{}

// create and start DASer
daser, err := NewDASer(avail, sub, getter, ds, fserv, newBroadcastMock(1),
daser, err := NewDASer(avail, sub, getter, ds, newBroadcastMock(1),
WithSampleTimeout(1))
require.NoError(t, err)

Expand All @@ -230,11 +157,9 @@ func createDASerSubcomponents(
) (
libhead.Store[*header.ExtendedHeader],
libhead.Subscriber[*header.ExtendedHeader],
*fraudtest.DummyService[*header.ExtendedHeader],
) {
mockGet, sub := createMockGetterAndSub(t, numGetter, numSub)
fraud := &fraudtest.DummyService[*header.ExtendedHeader]{}
return mockGet, sub, fraud
return mockGet, sub
}

func createMockGetterAndSub(
Expand Down
Loading
Loading