From 412062bbdd08095cd74a13ca95f0e900f2ca99ba Mon Sep 17 00:00:00 2001 From: Matee ullah Malik Date: Wed, 21 May 2025 05:47:16 +0500 Subject: [PATCH] Calculate fee in Kbs --- supernode/services/cascade/adaptors/lumera.go | 7 +++---- supernode/services/cascade/helper.go | 21 ++++++++++--------- 2 files changed, 14 insertions(+), 14 deletions(-) diff --git a/supernode/services/cascade/adaptors/lumera.go b/supernode/services/cascade/adaptors/lumera.go index f3ed46f2..83a6e9e8 100644 --- a/supernode/services/cascade/adaptors/lumera.go +++ b/supernode/services/cascade/adaptors/lumera.go @@ -18,9 +18,8 @@ type LumeraClient interface { // 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) - + GetActionFee(ctx context.Context, dataSize string) (*actiontypes.QueryGetActionFeeResponse, error) // Auth Verify(ctx context.Context, creator string, file []byte, sigBytes []byte) error } @@ -40,8 +39,8 @@ func (c *Client) GetAction(ctx context.Context, actionID string) (*actiontypes.Q 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) GetActionFee(ctx context.Context, dataSize string) (*actiontypes.QueryGetActionFeeResponse, error) { + return c.lc.Action().GetActionFee(ctx, dataSize) } func (c *Client) FinalizeAction(ctx context.Context, actionID string, rqids []string) (*action_msg.FinalizeActionResult, error) { diff --git a/supernode/services/cascade/helper.go b/supernode/services/cascade/helper.go index 28805da1..c86993be 100644 --- a/supernode/services/cascade/helper.go +++ b/supernode/services/cascade/helper.go @@ -4,6 +4,7 @@ import ( "context" "encoding/base64" "fmt" + "strconv" "strings" "cosmossdk.io/math" @@ -201,21 +202,21 @@ func verifyIDs(ticketMetadata, metadata codec.Layout) error { // verifyActionFee checks if the action fee is sufficient for the given data size // It fetches action parameters, calculates the required fee, and compares it with the action price func (task *CascadeRegistrationTask) verifyActionFee(ctx context.Context, action *actiontypes.Action, dataSize int, fields logtrace.Fields) error { - // Fetch action parameters - params, err := task.lumeraClient.GetActionParams(ctx) + + dataSizeInKBs := dataSize / 1024 + fee, err := task.lumeraClient.GetActionFee(ctx, strconv.Itoa(dataSizeInKBs)) if err != nil { - return task.wrapErr(ctx, "failed to get action parameters", err, fields) + return task.wrapErr(ctx, "failed to get action fee", err, fields) } - // Get base fee and fee per byte - baseFee := params.Params.BaseActionFee - feePerByte := params.Params.FeePerByte.Amount + // Parse fee amount from string to int64 + amount, err := strconv.ParseInt(fee.Amount, 10, 64) + if err != nil { + return task.wrapErr(ctx, "failed to parse fee amount", err, fields) + } // Calculate per-byte fee based on data size - perByteFee := sdk.NewCoin(baseFee.Denom, feePerByte.Mul(math.NewInt(int64(dataSize)))) - - // Calculate total fee - requiredFee := baseFee.Add(perByteFee) + requiredFee := sdk.NewCoin("ulume", math.NewInt(amount)) // Log the calculated fee logtrace.Info(ctx, "calculated required fee", logtrace.Fields{