From 56f08ad2d6c8baec66617202f0463f66c9b0fdfe Mon Sep 17 00:00:00 2001 From: John Letey Date: Fri, 13 Sep 2024 09:55:46 -0400 Subject: [PATCH] feat: prepare `v7.0.0` (#405) --- .../features/403-signerless-forwarding.md | 1 - .changelog/v7.0.0/bug-fixes/405-bump-halo.md | 1 + .../improvements/399-module-path.md | 0 .changelog/v7.0.0/summary.md | 11 ++++++++ CHANGELOG.md | 22 +++++++++++++++ Makefile | 2 +- app/ante.go | 10 +------ app/app.go | 10 +++---- app/upgrades/numus/store.go | 2 +- app/upgrades/numus/upgrade.go | 7 +++-- go.mod | 6 ++-- go.sum | 12 ++++---- interchaintest/forwarding_test.go | 28 ------------------- interchaintest/go.mod | 2 +- interchaintest/go.sum | 4 +-- interchaintest/upgrade_grand-1_test.go | 2 +- x/globalfee/ante/fee.go | 2 +- x/globalfee/ante/fee_utils.go | 16 ----------- 18 files changed, 60 insertions(+), 78 deletions(-) delete mode 100644 .changelog/unreleased/features/403-signerless-forwarding.md create mode 100644 .changelog/v7.0.0/bug-fixes/405-bump-halo.md rename .changelog/{unreleased => v7.0.0}/improvements/399-module-path.md (100%) create mode 100644 .changelog/v7.0.0/summary.md diff --git a/.changelog/unreleased/features/403-signerless-forwarding.md b/.changelog/unreleased/features/403-signerless-forwarding.md deleted file mode 100644 index 2f307fe3..00000000 --- a/.changelog/unreleased/features/403-signerless-forwarding.md +++ /dev/null @@ -1 +0,0 @@ -- Update `x/fowarding` to support signerless account registration. ([#403](https://github.com/noble-assets/noble/pull/403)) diff --git a/.changelog/v7.0.0/bug-fixes/405-bump-halo.md b/.changelog/v7.0.0/bug-fixes/405-bump-halo.md new file mode 100644 index 00000000..ed845e85 --- /dev/null +++ b/.changelog/v7.0.0/bug-fixes/405-bump-halo.md @@ -0,0 +1 @@ +- Update `x/halo` to correctly check recipient role when trading to fiat. ([#405](https://github.com/noble-assets/noble/pull/405)) diff --git a/.changelog/unreleased/improvements/399-module-path.md b/.changelog/v7.0.0/improvements/399-module-path.md similarity index 100% rename from .changelog/unreleased/improvements/399-module-path.md rename to .changelog/v7.0.0/improvements/399-module-path.md diff --git a/.changelog/v7.0.0/summary.md b/.changelog/v7.0.0/summary.md new file mode 100644 index 00000000..b8c22118 --- /dev/null +++ b/.changelog/v7.0.0/summary.md @@ -0,0 +1,11 @@ +*Sep 13, 2024* + +This is the Numus major release of Noble. It introduces a new `x/florin` module +that enables the native issuance of [Monerium's EUR emoney (**EURe**)][eure] +asset. EURe is issued by Monerium EMI, a regulated entity, licensed in the EEA. +E-money is recognized as a digital alternative to cash, 1:1 backed in +high-quality liquid assets and is unconditionally redeemable on demand. + +Other notable changes are documented below. + +[eure]: https://monerium.com diff --git a/CHANGELOG.md b/CHANGELOG.md index 587bfd7e..8286e8a2 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,5 +1,27 @@ # CHANGELOG +## v7.0.0 + +*Sep 13, 2024* + +This is the Numus major release of Noble. It introduces a new `x/florin` module +that enables the native issuance of [Monerium's EUR emoney (**EURe**)][eure] +asset. EURe is issued by Monerium EMI, a regulated entity, licensed in the EEA. +E-money is recognized as a digital alternative to cash, 1:1 backed in +high-quality liquid assets and is unconditionally redeemable on demand. + +Other notable changes are documented below. + +[eure]: https://monerium.com + +### BUG FIXES + +- Update `x/halo` to correctly check recipient role when trading to fiat. ([#405](https://github.com/noble-assets/noble/pull/405)) + +### IMPROVEMENTS + +- Update module path for v7 release line. ([#399](https://github.com/noble-assets/noble/pull/399)) + ## v6.0.0 *Aug 27, 2024* diff --git a/Makefile b/Makefile index 1704ac7a..cbae3beb 100644 --- a/Makefile +++ b/Makefile @@ -123,7 +123,7 @@ endif ### Protobuf ### ############################################################################### -BUF_VERSION=1.39 +BUF_VERSION=1.40 proto-all: proto-format proto-lint proto-gen diff --git a/app/ante.go b/app/ante.go index c120ed4c..bd1ae20a 100644 --- a/app/ante.go +++ b/app/ante.go @@ -7,21 +7,14 @@ import ( sdk "github.com/cosmos/cosmos-sdk/types" sdkerrors "github.com/cosmos/cosmos-sdk/types/errors" "github.com/cosmos/cosmos-sdk/x/auth/ante" - authtypes "github.com/cosmos/cosmos-sdk/x/auth/types" paramtypes "github.com/cosmos/cosmos-sdk/x/params/types" ibcante "github.com/cosmos/ibc-go/v4/modules/core/ante" ibckeeper "github.com/cosmos/ibc-go/v4/modules/core/keeper" "github.com/noble-assets/forwarding/x/forwarding" forwardingkeeper "github.com/noble-assets/forwarding/x/forwarding/keeper" - forwardingtypes "github.com/noble-assets/forwarding/x/forwarding/types" feeante "github.com/noble-assets/noble/v7/x/globalfee/ante" ) -type BankKeeper interface { - authtypes.BankKeeper - forwardingtypes.BankKeeper -} - type HandlerOptions struct { ante.HandlerOptions cdc codec.Codec @@ -29,7 +22,6 @@ type HandlerOptions struct { IBCKeeper *ibckeeper.Keeper GlobalFeeSubspace paramtypes.Subspace StakingSubspace paramtypes.Subspace - BankKeeper BankKeeper ForwardingKeeper *forwardingkeeper.Keeper } @@ -75,7 +67,7 @@ func NewAnteHandler(options HandlerOptions) (sdk.AnteHandler, error) { ante.NewSetPubKeyDecorator(options.AccountKeeper), // SetPubKeyDecorator must be called before all signature verification decorators ante.NewValidateSigCountDecorator(options.AccountKeeper), ante.NewSigGasConsumeDecorator(options.AccountKeeper, sigGasConsumer), - forwarding.NewSigVerificationDecorator(options.AccountKeeper, options.BankKeeper, options.SignModeHandler), + ante.NewSigVerificationDecorator(options.AccountKeeper, options.SignModeHandler), ante.NewIncrementSequenceDecorator(options.AccountKeeper), ibcante.NewAnteDecorator(options.IBCKeeper), } diff --git a/app/app.go b/app/app.go index 41e99f38..afe81b51 100644 --- a/app/app.go +++ b/app/app.go @@ -121,9 +121,9 @@ import ( halokeeper "github.com/noble-assets/halo/x/halo/keeper" halotypes "github.com/noble-assets/halo/x/halo/types" - "github.com/noble-assets/florin/x/florin" - florinkeeper "github.com/noble-assets/florin/x/florin/keeper" - florintypes "github.com/noble-assets/florin/x/florin/types" + "github.com/monerium/module-noble/x/florin" + florinkeeper "github.com/monerium/module-noble/x/florin/keeper" + florintypes "github.com/monerium/module-noble/x/florin/types" ) const ( @@ -740,9 +740,10 @@ func New( HandlerOptions{ HandlerOptions: ante.HandlerOptions{ AccountKeeper: app.AccountKeeper, + BankKeeper: app.BankKeeper, FeegrantKeeper: app.FeeGrantKeeper, SignModeHandler: encodingConfig.TxConfig.SignModeHandler(), - SigGasConsumer: forwarding.SigVerificationGasConsumer, + SigGasConsumer: ante.DefaultSigVerificationGasConsumer, }, cdc: appCodec, fiatTokenFactoryKeeper: app.FiatTokenFactoryKeeper, @@ -751,7 +752,6 @@ func New( GlobalFeeSubspace: app.GetSubspace(globalfee.ModuleName), StakingSubspace: app.GetSubspace(stakingtypes.ModuleName), - BankKeeper: app.BankKeeper, ForwardingKeeper: app.ForwardingKeeper, }, ) diff --git a/app/upgrades/numus/store.go b/app/upgrades/numus/store.go index f428f9b7..f1ac84e7 100644 --- a/app/upgrades/numus/store.go +++ b/app/upgrades/numus/store.go @@ -4,7 +4,7 @@ import ( "github.com/cosmos/cosmos-sdk/baseapp" storetypes "github.com/cosmos/cosmos-sdk/store/types" upgradetypes "github.com/cosmos/cosmos-sdk/x/upgrade/types" - florintypes "github.com/noble-assets/florin/x/florin/types" + florintypes "github.com/monerium/module-noble/x/florin/types" ) func CreateStoreLoader(upgradeHeight int64) baseapp.StoreLoader { diff --git a/app/upgrades/numus/upgrade.go b/app/upgrades/numus/upgrade.go index d053193d..9076e3ce 100644 --- a/app/upgrades/numus/upgrade.go +++ b/app/upgrades/numus/upgrade.go @@ -2,12 +2,13 @@ package numus import ( "fmt" + sdk "github.com/cosmos/cosmos-sdk/types" "github.com/cosmos/cosmos-sdk/types/module" bankkeeper "github.com/cosmos/cosmos-sdk/x/bank/keeper" banktypes "github.com/cosmos/cosmos-sdk/x/bank/types" upgradetypes "github.com/cosmos/cosmos-sdk/x/upgrade/types" - florinkeeper "github.com/noble-assets/florin/x/florin/keeper" + florinkeeper "github.com/monerium/module-noble/x/florin/keeper" paramskeeper "github.com/strangelove-ventures/paramauthority/x/params/keeper" ) @@ -32,8 +33,8 @@ func CreateUpgradeHandler( florinKeeper.SetOwner(ctx, "ueure", "noble1tv9u97jln0k3anpzhahkeahh66u74dug302pyn") florinKeeper.SetBlacklistOwner(ctx, "noble1tv9u97jln0k3anpzhahkeahh66u74dug302pyn") case MainnetChainID: - florinKeeper.SetOwner(ctx, "ueure", "") // TODO - florinKeeper.SetBlacklistOwner(ctx, "") // TODO + florinKeeper.SetOwner(ctx, "ueure", "noble1ya7ggnwv78qcnkv89lte30yge54ztzst3usgmw") + florinKeeper.SetBlacklistOwner(ctx, "noble1ya7ggnwv78qcnkv89lte30yge54ztzst3usgmw") default: return vm, fmt.Errorf("%s upgrade not allowed to execute on %s chain", UpgradeName, ctx.ChainID()) } diff --git a/go.mod b/go.mod index d54450b5..818c1a1f 100644 --- a/go.mod +++ b/go.mod @@ -13,9 +13,9 @@ require ( github.com/golang/protobuf v1.5.3 github.com/gorilla/mux v1.8.0 github.com/grpc-ecosystem/grpc-gateway v1.16.0 - github.com/noble-assets/florin v1.0.0-rc.1 - github.com/noble-assets/forwarding v1.2.0-rc.0 - github.com/noble-assets/halo v1.0.0 + github.com/monerium/module-noble v1.0.0 + github.com/noble-assets/forwarding v1.1.0 + github.com/noble-assets/halo v1.0.1 github.com/ondoprotocol/usdy-noble v1.0.0 github.com/rs/zerolog v1.27.0 github.com/spf13/cast v1.5.1 diff --git a/go.sum b/go.sum index a5990cfc..b83a8a6c 100644 --- a/go.sum +++ b/go.sum @@ -936,6 +936,8 @@ github.com/modern-go/reflect2 v1.0.1/go.mod h1:bx2lNnkwVCuqBIxFjflWJWanXIb3Rllmb github.com/modern-go/reflect2 v1.0.2 h1:xBagoLtFs94CBntxluKeaWgTMpvLxC4ur3nMaC9Gz0M= github.com/modern-go/reflect2 v1.0.2/go.mod h1:yWuevngMOJpCy52FWWMvUC8ws7m/LJsjYzDa0/r8luk= github.com/modocache/gover v0.0.0-20171022184752-b58185e213c5/go.mod h1:caMODM3PzxT8aQXRPkAt8xlV/e7d7w8GM5g0fa5F0D8= +github.com/monerium/module-noble v1.0.0 h1:MSdGacwXDMeV11MedvIjtfAKJ4QLOTKWpCRJBs+uvjI= +github.com/monerium/module-noble v1.0.0/go.mod h1:eg2ur9ZGvnASANV5iNvyGT2JPbg/499+UZOCB843j1c= github.com/moricho/tparallel v0.3.1 h1:fQKD4U1wRMAYNngDonW5XupoB/ZGJHdpzrWqgyg9krA= github.com/moricho/tparallel v0.3.1/go.mod h1:leENX2cUv7Sv2qDgdi0D0fCftN8fRC67Bcn8pqzeYNI= github.com/moul/http2curl v1.0.0/go.mod h1:8UbvGypXm98wA/IqH45anm5Y2Z6ep6O31QGOAZ3H0fQ= @@ -965,12 +967,10 @@ github.com/nishanths/predeclared v0.2.2 h1:V2EPdZPliZymNAn79T8RkNApBjMmVKh5XRpLm github.com/nishanths/predeclared v0.2.2/go.mod h1:RROzoN6TnGQupbC+lqggsOlcgysk3LMK/HI84Mp280c= github.com/noble-assets/cosmos-sdk v0.45.16-send-restrictions h1:oQwbCoejkXp2/ozQSwc//A6UW9wJl71YgP7o04MsYq0= github.com/noble-assets/cosmos-sdk v0.45.16-send-restrictions/go.mod h1:bScuNwWAP0TZJpUf+SHXRU3xGoUPp+X9nAzfeIXts40= -github.com/noble-assets/florin v1.0.0-rc.1 h1:0O8Xr0Jqos7lvyvdtQE8Y0WcNH5PvfIJsocPeYLufh8= -github.com/noble-assets/florin v1.0.0-rc.1/go.mod h1:W+6DjaZdSRQe2oqv8eCHQtbyp36LUNImGRCLdPNSA2o= -github.com/noble-assets/forwarding v1.2.0-rc.0 h1:f/bL/cicvhNUp9SuueiqqqSVRRn7CQxTKOesVUKrSyQ= -github.com/noble-assets/forwarding v1.2.0-rc.0/go.mod h1:o64ZfzCHteRDhOlkpi7GeKAcjlcbWUihC7Y34Er2/3U= -github.com/noble-assets/halo v1.0.0 h1:JG5TAZZcuLArYgl/9dgwJJ9KAOIo2f03/S010WRVNV8= -github.com/noble-assets/halo v1.0.0/go.mod h1:AUFdixNgPdce0soYfT6aNggwW9PUVFxaIkCC83M26Sk= +github.com/noble-assets/forwarding v1.1.0 h1:2TXBs2Y9vWqgHyDKtdcHht6i7OT+pLaVHE3bPvfpmJY= +github.com/noble-assets/forwarding v1.1.0/go.mod h1:o64ZfzCHteRDhOlkpi7GeKAcjlcbWUihC7Y34Er2/3U= +github.com/noble-assets/halo v1.0.1 h1:Fndy4JaAAvEd5SDGECnkoWJ2uVG1XCF47L67Px9ickE= +github.com/noble-assets/halo v1.0.1/go.mod h1:AUFdixNgPdce0soYfT6aNggwW9PUVFxaIkCC83M26Sk= github.com/nunnatsa/ginkgolinter v0.14.0 h1:XQPNmw+kZz5cC/HbFK3mQutpjzAQv1dHregRA+4CGGg= github.com/nunnatsa/ginkgolinter v0.14.0/go.mod h1:cm2xaqCUCRd7qcP4DqbVvpcyEMkuLM9CF0wY6VASohk= github.com/nxadm/tail v1.4.4 h1:DQuhQpB1tVlglWS2hLQ5OV6B5r8aGxSrPc5Qo6uTN78= diff --git a/interchaintest/forwarding_test.go b/interchaintest/forwarding_test.go index 434a998b..098ed1a9 100644 --- a/interchaintest/forwarding_test.go +++ b/interchaintest/forwarding_test.go @@ -65,34 +65,6 @@ func TestForwarding_RegisterOnNoble(t *testing.T) { require.Equal(t, sdk.NewCoins(sdk.NewCoin("uusdc", sdk.NewInt(1_000_000))), stats.TotalForwarded) } -func TestForwarding_RegisterSignerlessly(t *testing.T) { - t.Parallel() - - ctx, wrapper, _, _, _, sender, receiver := ForwardingSuite(t) - validator := wrapper.chain.Validators[0] - - address, exists := ForwardingAccount(t, ctx, validator, receiver) - require.False(t, exists) - - require.NoError(t, validator.SendFunds(ctx, sender.KeyName(), ibc.WalletAmount{ - Address: address, - Denom: "uusdc", - Amount: 1_000_000, - })) - - _, exists = ForwardingAccount(t, ctx, validator, receiver) - require.False(t, exists) - - // NOTE: The keyName argument is intentionally left blank here. If - // everything is working correctly, this shouldn't error as we don't need - // to interact with the keyring. - _, err := validator.ExecTx(ctx, "", "forwarding", "register-account-signerlessly", "channel-0", receiver.FormattedAddress()) - require.NoError(t, err) - - _, exists = ForwardingAccount(t, ctx, validator, receiver) - require.True(t, exists) -} - func TestForwarding_RegisterViaTransfer(t *testing.T) { t.Parallel() diff --git a/interchaintest/go.mod b/interchaintest/go.mod index 9d4d5af3..05383967 100644 --- a/interchaintest/go.mod +++ b/interchaintest/go.mod @@ -11,7 +11,7 @@ require ( github.com/ethereum/go-ethereum v1.12.2 github.com/gogo/protobuf v1.3.3 github.com/icza/dyno v0.0.0-20220812133438-f0b6f8a18845 - github.com/noble-assets/forwarding v1.2.0-rc.0 + github.com/noble-assets/forwarding v1.1.0 github.com/noble-assets/noble/v7 v7.0.0 github.com/strangelove-ventures/interchaintest/v4 v4.0.0-20231026153934-334934f17a68 github.com/strangelove-ventures/paramauthority v1.1.0 diff --git a/interchaintest/go.sum b/interchaintest/go.sum index b0f3b63d..c9ecb685 100644 --- a/interchaintest/go.sum +++ b/interchaintest/go.sum @@ -808,8 +808,8 @@ github.com/nats-io/nkeys v0.1.3/go.mod h1:xpnFELMwJABBLVhffcfd1MZx6VsNRFpEugbxzi github.com/nats-io/nuid v1.0.1/go.mod h1:19wcPz3Ph3q0Jbyiqsd0kePYG7A95tJPxeL+1OSON2c= github.com/neilotoole/errgroup v0.1.6/go.mod h1:Q2nLGf+594h0CLBs/Mbg6qOr7GtqDK7C2S41udRnToE= github.com/niemeyer/pretty v0.0.0-20200227124842-a10e7caefd8e/go.mod h1:zD1mROLANZcx1PVRCS0qkT7pwLkGfwJo4zjcN/Tysno= -github.com/noble-assets/forwarding v1.2.0-rc.0 h1:f/bL/cicvhNUp9SuueiqqqSVRRn7CQxTKOesVUKrSyQ= -github.com/noble-assets/forwarding v1.2.0-rc.0/go.mod h1:o64ZfzCHteRDhOlkpi7GeKAcjlcbWUihC7Y34Er2/3U= +github.com/noble-assets/forwarding v1.1.0 h1:2TXBs2Y9vWqgHyDKtdcHht6i7OT+pLaVHE3bPvfpmJY= +github.com/noble-assets/forwarding v1.1.0/go.mod h1:o64ZfzCHteRDhOlkpi7GeKAcjlcbWUihC7Y34Er2/3U= github.com/nxadm/tail v1.4.4 h1:DQuhQpB1tVlglWS2hLQ5OV6B5r8aGxSrPc5Qo6uTN78= github.com/nxadm/tail v1.4.4/go.mod h1:kenIhsEOeOJmVchQTgglprH7qJGnHDVpk1VPCcaMI8A= github.com/oklog/oklog v0.3.2/go.mod h1:FCV+B7mhrz4o+ueLpx+KqkyXRGMWOYEvfiXtdGtbWGs= diff --git a/interchaintest/upgrade_grand-1_test.go b/interchaintest/upgrade_grand-1_test.go index 938fd942..ffa33576 100644 --- a/interchaintest/upgrade_grand-1_test.go +++ b/interchaintest/upgrade_grand-1_test.go @@ -158,7 +158,7 @@ func TestGrand1ChainUpgrade(t *testing.T) { { // numus is a major release that introduced the florin module. upgradeName: "numus", - image: nobleImageInfo[0], + image: ghcrImage("v7.0.0-rc.0"), }, } diff --git a/x/globalfee/ante/fee.go b/x/globalfee/ante/fee.go index 259ee8bd..e39c16c0 100644 --- a/x/globalfee/ante/fee.go +++ b/x/globalfee/ante/fee.go @@ -64,7 +64,7 @@ func (mfd FeeDecorator) AnteHandle(ctx sdk.Context, tx sdk.Tx, simulate bool, ne // i.e., totalGas <= MaxTotalBypassMinFeeMsgGasUsage // Otherwise, minimum fees and global fees are checked to prevent spam. doesNotExceedMaxGasUsage := gas <= mfd.MaxTotalBypassMinFeeMsgGasUsage - allowedToBypassMinFee := (mfd.containsOnlyBypassMinFeeMsgs(ctx, msgs) || mfd.isSignerlessForwardingRegistration(msgs)) && doesNotExceedMaxGasUsage + allowedToBypassMinFee := mfd.containsOnlyBypassMinFeeMsgs(ctx, msgs) && doesNotExceedMaxGasUsage var allFees sdk.Coins requiredGlobalFees, err := mfd.getGlobalFee(ctx, feeTx) diff --git a/x/globalfee/ante/fee_utils.go b/x/globalfee/ante/fee_utils.go index bedab685..752d227f 100644 --- a/x/globalfee/ante/fee_utils.go +++ b/x/globalfee/ante/fee_utils.go @@ -4,7 +4,6 @@ import ( "math" sdk "github.com/cosmos/cosmos-sdk/types" - forwardingtypes "github.com/noble-assets/forwarding/x/forwarding/types" globalfeetypes "github.com/noble-assets/noble/v7/x/globalfee/types" tmstrings "github.com/tendermint/tendermint/libs/strings" ) @@ -46,21 +45,6 @@ func (mfd FeeDecorator) containsOnlyBypassMinFeeMsgs(ctx sdk.Context, msgs []sdk return true } -func (mfd FeeDecorator) isSignerlessForwardingRegistration(msgs []sdk.Msg) bool { - if len(msgs) != 1 { - return false - } - - msg, ok := msgs[0].(*forwardingtypes.MsgRegisterAccount) - if !ok { - return false - } - - address := forwardingtypes.GenerateAddress(msg.Channel, msg.Recipient) - - return msg.Signer == address.String() -} - // DenomsSubsetOfIncludingZero and IsAnyGTEIncludingZero are similar to DenomsSubsetOf and IsAnyGTE in sdk. Since we allow zero coins in global fee(zero coins means the chain does not want to set a global fee but still want to define the fee's denom) // // overwrite DenomsSubsetOfIncludingZero from sdk, to allow zero amt coins in superset. e.g. 1stake is DenomsSubsetOfIncludingZero 0stake. [] is the DenomsSubsetOfIncludingZero of [0stake] but not [1stake].