From 534ca25b8b140d2fa23ebcd5751eb7ddb42bc833 Mon Sep 17 00:00:00 2001 From: Spoorthi Satheesha <9302666+spoo-bar@users.noreply.github.com> Date: Tue, 4 Jul 2023 14:26:43 +0200 Subject: [PATCH 1/4] if rewards address not set, prevent from setting flatfee (but allow to remove flatfee) --- x/rewards/keeper/flat_fee.go | 3 +++ 1 file changed, 3 insertions(+) diff --git a/x/rewards/keeper/flat_fee.go b/x/rewards/keeper/flat_fee.go index b193094d..b44a28bc 100644 --- a/x/rewards/keeper/flat_fee.go +++ b/x/rewards/keeper/flat_fee.go @@ -21,6 +21,9 @@ func (k Keeper) SetFlatFee(ctx sdk.Context, senderAddr sdk.AccAddress, feeUpdate if feeUpdate.FlatFee.Amount.IsZero() { k.state.FlatFee(ctx).RemoveFee(feeUpdate.MustGetContractAddress()) } else { + if contractInfo.RewardsAddress == "" { + return sdkErrors.Wrap(types.ErrMetadataNotFound, "flat_fee can only be when rewards address has been configured") + } k.state.FlatFee(ctx).SetFee(feeUpdate.MustGetContractAddress(), feeUpdate.FlatFee) } From be0e62d01cd97b3aadbff648b6e695fc602e7128 Mon Sep 17 00:00:00 2001 From: Spoorthi Satheesha <9302666+spoo-bar@users.noreply.github.com> Date: Tue, 4 Jul 2023 14:30:59 +0200 Subject: [PATCH 2/4] adding test case for when rewards address is not set, so should fail --- x/rewards/keeper/flat_fee_test.go | 11 +++++++++++ 1 file changed, 11 insertions(+) diff --git a/x/rewards/keeper/flat_fee_test.go b/x/rewards/keeper/flat_fee_test.go index 8c5e3b79..256ddfd5 100644 --- a/x/rewards/keeper/flat_fee_test.go +++ b/x/rewards/keeper/flat_fee_test.go @@ -31,6 +31,17 @@ func (s *KeeperTestSuite) TestSetFlatFee() { metaCurrent.OwnerAddress = contractAdminAcc.Address.String() _ = keeper.SetContractMetadata(ctx, contractAdminAcc.Address, contractAddr, metaCurrent) + s.Run("Fail: rewards address not set", func() { + err := keeper.SetFlatFee(ctx, contractAdminAcc.Address, rewardsTypes.FlatFee{ + ContractAddress: contractAddr.String(), + FlatFee: fee, + }) + s.Assert().ErrorIs(err, rewardsTypes.ErrMetadataNotFound) + }) + + metaCurrent.RewardsAddress = contractAdminAcc.Address.String() + _ = keeper.SetContractMetadata(ctx, contractAdminAcc.Address, contractAddr, metaCurrent) + s.Run("OK: set flat fee", func() { err := keeper.SetFlatFee(ctx, contractAdminAcc.Address, rewardsTypes.FlatFee{ ContractAddress: contractAddr.String(), From 6b5abd0a601c596a2e4d992b8e8ba8bd3062b296 Mon Sep 17 00:00:00 2001 From: Spoorthi Satheesha <9302666+spoo-bar@users.noreply.github.com> Date: Tue, 4 Jul 2023 14:33:03 +0200 Subject: [PATCH 3/4] fixing grpc tests --- x/rewards/keeper/grpc_query_test.go | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/x/rewards/keeper/grpc_query_test.go b/x/rewards/keeper/grpc_query_test.go index 14750353..3b595b17 100644 --- a/x/rewards/keeper/grpc_query_test.go +++ b/x/rewards/keeper/grpc_query_test.go @@ -154,6 +154,7 @@ func (s *KeeperTestSuite) TestGRPC_EstimateTxFees() { err := k.SetContractMetadata(ctx, contractAdminAcc.Address, contractAddr, rewardsTypes.ContractMetadata{ ContractAddress: contractAddr.String(), OwnerAddress: contractAdminAcc.Address.String(), + RewardsAddress: contractAdminAcc.Address.String(), }) s.Require().NoError(err) err = k.SetFlatFee(ctx, contractAdminAcc.Address, types.FlatFee{ @@ -170,7 +171,7 @@ func (s *KeeperTestSuite) TestGRPC_EstimateTxFees() { s.Require().EqualValues(minConsFee.Amount, fees.AmountOf("stake")) }) - s.Run("ok: gets estimated tx fees inclulding contract flat fee(same denom)", func() { + s.Run("ok: gets estimated tx fees including contract flat fee(same denom)", func() { expectedFlatFee := sdk.NewInt64Coin("stake", 123) contractAdminAcc := s.chain.GetAccount(0) contractViewer := testutils.NewMockContractViewer() @@ -180,6 +181,7 @@ func (s *KeeperTestSuite) TestGRPC_EstimateTxFees() { err := k.SetContractMetadata(ctx, contractAdminAcc.Address, contractAddr, rewardsTypes.ContractMetadata{ ContractAddress: contractAddr.String(), OwnerAddress: contractAdminAcc.Address.String(), + RewardsAddress: contractAdminAcc.Address.String(), }) s.Require().NoError(err) err = k.SetFlatFee(ctx, contractAdminAcc.Address, types.FlatFee{ @@ -289,6 +291,7 @@ func (s *KeeperTestSuite) TestGRPC_FlatFee() { err := k.SetContractMetadata(ctx, contractAdminAcc.Address, contractAddr, rewardsTypes.ContractMetadata{ ContractAddress: contractAddr.String(), OwnerAddress: contractAdminAcc.Address.String(), + RewardsAddress: contractAdminAcc.Address.String(), }) s.Require().NoError(err) err = k.SetFlatFee(ctx, contractAdminAcc.Address, types.FlatFee{ From 8be767928bd67ed67357d200540d536ba067ff35 Mon Sep 17 00:00:00 2001 From: Spoorthi Satheesha <9302666+spoo-bar@users.noreply.github.com> Date: Tue, 4 Jul 2023 14:35:56 +0200 Subject: [PATCH 4/4] Update CHANGELOG.md --- CHANGELOG.md | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index dc7902b7..3a053e6d 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -28,6 +28,12 @@ Contains bug fixes. Contains all the PRs that improved the code without changing the behaviours. --> +## [Unreleased] + +### Fixed + +- [#414](https://github.com/archway-network/archway/pull/414) - Preventing user from setting contract flat fee if rewards address is not set + ## [v1.0.1] - [#411](https://github.com/archway-network/archway/pull/411) - Update repository readme with correct docker containers.