Skip to content
Merged
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
1 change: 1 addition & 0 deletions go.mod
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,7 @@ module github.com/LumeraProtocol/supernode

go 1.24.1

replace "github.com/LumeraProtocol/supernode/supernode" => ./supernode
require (
cosmossdk.io/math v1.5.3
github.com/LumeraProtocol/lumera v0.4.5
Expand Down
2 changes: 2 additions & 0 deletions pkg/logtrace/fields.go
Original file line number Diff line number Diff line change
Expand Up @@ -16,4 +16,6 @@ const (
FieldRequest = "request"
FieldStackTrace = "stack_trace"
FieldTxHash = "tx_hash"
FieldTaskID = "task_id"
FieldActionID = "action_id"
)
21 changes: 12 additions & 9 deletions supernode/node/action/server/cascade/cascade_action_server.go
Original file line number Diff line number Diff line change
Expand Up @@ -11,21 +11,21 @@ import (
"google.golang.org/grpc"
)

type CascadeActionServer struct {
type ActionServer struct {
pb.UnimplementedCascadeServiceServer
service *cascadeService.CascadeService
factory cascadeService.TaskFactory
}

func NewCascadeActionServer(service *cascadeService.CascadeService) *CascadeActionServer {
return &CascadeActionServer{
service: service,
}
// NewCascadeActionServer creates a new CascadeActionServer with injected service
func NewCascadeActionServer(factory cascadeService.TaskFactory) *ActionServer {
return &ActionServer{factory: factory}
}

func (server *CascadeActionServer) Desc() *grpc.ServiceDesc {
func (server *ActionServer) Desc() *grpc.ServiceDesc {
return &pb.CascadeService_ServiceDesc
}
func (server *CascadeActionServer) Register(stream pb.CascadeService_RegisterServer) error {

func (server *ActionServer) Register(stream pb.CascadeService_RegisterServer) error {
fields := logtrace.Fields{
logtrace.FieldMethod: "Register",
logtrace.FieldModule: "CascadeActionServer",
Expand Down Expand Up @@ -77,9 +77,12 @@ func (server *CascadeActionServer) Register(stream pb.CascadeService_RegisterSer
logtrace.Error(ctx, "no metadata received in stream", fields)
return fmt.Errorf("no metadata received")
}
fields[logtrace.FieldTaskID] = metadata.GetTaskId()
fields[logtrace.FieldActionID] = metadata.GetActionId()
logtrace.Info(ctx, "metadata received from action-sdk", fields)

// Process the complete data
task := server.service.NewCascadeRegistrationTask()
task := server.factory.NewCascadeRegistrationTask()
err := task.Register(ctx, &cascadeService.RegisterRequest{
TaskID: metadata.TaskId,
ActionID: metadata.ActionId,
Expand Down
56 changes: 56 additions & 0 deletions supernode/services/cascade/adaptors/lumera.go
Original file line number Diff line number Diff line change
@@ -0,0 +1,56 @@
package adaptors

import (
"context"
actiontypes "github.com/LumeraProtocol/lumera/x/action/types"
sntypes "github.com/LumeraProtocol/lumera/x/supernode/types"
"github.com/LumeraProtocol/supernode/pkg/lumera"
"github.com/LumeraProtocol/supernode/pkg/lumera/modules/action_msg"
)

//go:generate mockgen -destination=mocks/lumera_mock.go -package=cascadeadaptormocks -source=lumera.go

// LumeraClient defines the interface for interacting with Lumera chain data during cascade registration.
type LumeraClient interface {
// SupernodeModule
GetTopSupernodes(ctx context.Context, height uint64) (*sntypes.QueryGetTopSuperNodesForBlockResponse, error)

// Action Module
GetAction(ctx context.Context, actionID string) (*actiontypes.QueryGetActionResponse, error)
GetActionParams(ctx context.Context) (*actiontypes.QueryParamsResponse, error)
FinalizeAction(ctx context.Context, actionID string, rqids []string) (*action_msg.FinalizeActionResult, error)

// Auth
Verify(ctx context.Context, creator string, file []byte, sigBytes []byte) error
}

// Client is the concrete implementation used in production.
type Client struct {
lc lumera.Client
}

func NewLumeraClient(client lumera.Client) LumeraClient {
return &Client{
lc: client,
}
}

func (c *Client) GetAction(ctx context.Context, actionID string) (*actiontypes.QueryGetActionResponse, error) {
return c.lc.Action().GetAction(ctx, actionID)
}

func (c *Client) GetActionParams(ctx context.Context) (*actiontypes.QueryParamsResponse, error) {
return c.lc.Action().GetParams(ctx)
}

func (c *Client) FinalizeAction(ctx context.Context, actionID string, rqids []string) (*action_msg.FinalizeActionResult, error) {
return c.lc.ActionMsg().FinalizeCascadeAction(ctx, actionID, rqids)
}

func (c *Client) GetTopSupernodes(ctx context.Context, height uint64) (*sntypes.QueryGetTopSuperNodesForBlockResponse, error) {
return c.lc.SuperNode().GetTopSuperNodesForBlock(ctx, height)
}

func (c *Client) Verify(ctx context.Context, creator string, file []byte, sigBytes []byte) error {
return c.lc.Auth().Verify(ctx, creator, file, sigBytes)
}
112 changes: 112 additions & 0 deletions supernode/services/cascade/adaptors/mocks/lumera_mock.go

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

51 changes: 51 additions & 0 deletions supernode/services/cascade/adaptors/mocks/p2p_mock.go

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

51 changes: 51 additions & 0 deletions supernode/services/cascade/adaptors/mocks/rq_mock.go

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

Loading