From d3efab011b1f2ee34e3bdcd9820f404b8e9526f5 Mon Sep 17 00:00:00 2001 From: Zerui Ge Date: Wed, 9 Oct 2024 15:02:52 -0700 Subject: [PATCH] feat(mint): update mint param type (#182) * feat(mint): update param type * feat(mint): make param value consistent among example and tests --- client/x/mint/README.md | 16 +++--- client/x/mint/keeper/genesis_test.go | 3 +- client/x/mint/types/genesis.go | 2 +- client/x/mint/types/mint.pb.go | 80 +++++++++++++++++----------- client/x/mint/types/mint.proto | 8 ++- client/x/mint/types/params.go | 4 +- 6 files changed, 72 insertions(+), 41 deletions(-) diff --git a/client/x/mint/README.md b/client/x/mint/README.md index 600267c3..33171862 100644 --- a/client/x/mint/README.md +++ b/client/x/mint/README.md @@ -32,7 +32,11 @@ message Params { // type of coin to mint string mint_denom = 1; // inflation amount per year - uint64 inflations_per_year = 2; + string inflations_per_year = 2 [ + (cosmos_proto.scalar) = "cosmos.Dec", + (gogoproto.customtype) = "cosmossdk.io/math.LegacyDec", + (gogoproto.nullable) = false + ]; // expected blocks per year uint64 blocks_per_year = ; } @@ -58,11 +62,11 @@ type InflationCalculationFn func(ctx sdk.Context, minter Minter, params Params, The minting module contains the following parameters: -| Key | Type | Example | -|---------------------|-----------------|------------------------------| -| MintDenom | string | "stake" | -| InflationsPerYear | string (dec) | "24625000000000000" | -| BlocksPerYear | string (uint64) | "6311520" | +| Key | Type | Example | +|---------------------|-----------------|----------------------------------------| +| MintDenom | string | "stake" | +| InflationsPerYear | string (dec) | "24625000000000000.000000000000000000" | +| BlocksPerYear | string (uint64) | "6311520" | ## Events diff --git a/client/x/mint/keeper/genesis_test.go b/client/x/mint/keeper/genesis_test.go index affa5818..f9304eb5 100644 --- a/client/x/mint/keeper/genesis_test.go +++ b/client/x/mint/keeper/genesis_test.go @@ -4,6 +4,7 @@ package keeper_test import ( "testing" + "cosmossdk.io/math" storetypes "cosmossdk.io/store/types" "github.com/cosmos/cosmos-sdk/codec" @@ -62,7 +63,7 @@ func (s *GenesisTestSuite) TestImportExportGenesis() { genesisState := types.DefaultGenesisState() genesisState.Params = types.NewParams( "testDenom", - 24625000_000_000_000, + math.LegacyNewDec(24625000000000000.000000000000000000), uint64(60*60*8766/5), ) diff --git a/client/x/mint/types/genesis.go b/client/x/mint/types/genesis.go index ff80226e..656061ae 100644 --- a/client/x/mint/types/genesis.go +++ b/client/x/mint/types/genesis.go @@ -15,7 +15,7 @@ type InflationCalculationFn func(ctx context.Context, params Params, bondedRatio // DefaultInflationCalculationFn is the default function used to calculate inflation. func DefaultInflationCalculationFn(_ context.Context, params Params, _ math.LegacyDec) math.LegacyDec { - return math.LegacyNewDec(int64(params.InflationsPerYear)).Quo(math.LegacyNewDec(int64(params.BlocksPerYear))) + return params.InflationsPerYear.Quo(math.LegacyNewDec(int64(params.BlocksPerYear))) } // NewGenesisState creates a new GenesisState object. diff --git a/client/x/mint/types/mint.pb.go b/client/x/mint/types/mint.pb.go index 59f0e424..30133b79 100644 --- a/client/x/mint/types/mint.pb.go +++ b/client/x/mint/types/mint.pb.go @@ -4,8 +4,11 @@ package types import ( + cosmossdk_io_math "cosmossdk.io/math" fmt "fmt" + _ "github.com/cosmos/cosmos-proto" _ "github.com/cosmos/cosmos-sdk/types/tx/amino" + _ "github.com/cosmos/gogoproto/gogoproto" proto "github.com/cosmos/gogoproto/proto" io "io" math "math" @@ -28,7 +31,7 @@ type Params struct { // type of coin to mint MintDenom string `protobuf:"bytes,1,opt,name=mint_denom,json=mintDenom,proto3" json:"mint_denom,omitempty"` // inflation amount per year - InflationsPerYear uint64 `protobuf:"varint,2,opt,name=inflations_per_year,json=inflationsPerYear,proto3" json:"inflations_per_year,omitempty"` + InflationsPerYear cosmossdk_io_math.LegacyDec `protobuf:"bytes,2,opt,name=inflations_per_year,json=inflationsPerYear,proto3,customtype=cosmossdk.io/math.LegacyDec" json:"inflations_per_year"` // expected blocks per year BlocksPerYear uint64 `protobuf:"varint,3,opt,name=blocks_per_year,json=blocksPerYear,proto3" json:"blocks_per_year,omitempty"` } @@ -73,13 +76,6 @@ func (m *Params) GetMintDenom() string { return "" } -func (m *Params) GetInflationsPerYear() uint64 { - if m != nil { - return m.InflationsPerYear - } - return 0 -} - func (m *Params) GetBlocksPerYear() uint64 { if m != nil { return m.BlocksPerYear @@ -94,21 +90,26 @@ func init() { func init() { proto.RegisterFile("client/x/mint/types/mint.proto", fileDescriptor_9c6e60aec58f52af) } var fileDescriptor_9c6e60aec58f52af = []byte{ - // 219 bytes of a gzipped FileDescriptorProto + // 290 bytes of a gzipped FileDescriptorProto 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xe2, 0x92, 0x4b, 0xce, 0xc9, 0x4c, 0xcd, 0x2b, 0xd1, 0xaf, 0xd0, 0xcf, 0xcd, 0xcc, 0x2b, 0xd1, 0x2f, 0xa9, 0x2c, 0x48, 0x2d, 0x06, 0x33, 0xf5, 0x0a, 0x8a, 0xf2, 0x4b, 0xf2, 0x85, 0x84, 0x21, 0xf2, 0x7a, 0x15, 0x7a, 0x60, 0x41, - 0xb0, 0xbc, 0x94, 0x60, 0x62, 0x6e, 0x66, 0x5e, 0xbe, 0x3e, 0x98, 0x84, 0xa8, 0x53, 0x9a, 0xc5, - 0xc8, 0xc5, 0x16, 0x90, 0x58, 0x94, 0x98, 0x5b, 0x2c, 0x24, 0xcb, 0xc5, 0x05, 0x52, 0x1b, 0x9f, - 0x92, 0x9a, 0x97, 0x9f, 0x2b, 0xc1, 0xa8, 0xc0, 0xa8, 0xc1, 0x19, 0xc4, 0x09, 0x12, 0x71, 0x01, - 0x09, 0x08, 0xe9, 0x71, 0x09, 0x67, 0xe6, 0xa5, 0xe5, 0x24, 0x96, 0x64, 0xe6, 0xe7, 0x15, 0xc7, - 0x17, 0xa4, 0x16, 0xc5, 0x57, 0xa6, 0x26, 0x16, 0x49, 0x30, 0x29, 0x30, 0x6a, 0xb0, 0x04, 0x09, - 0x22, 0xa4, 0x02, 0x52, 0x8b, 0x22, 0x53, 0x13, 0x8b, 0x84, 0xd4, 0xb8, 0xf8, 0x93, 0x72, 0xf2, - 0x93, 0xb3, 0x91, 0xd4, 0x32, 0x83, 0xd5, 0xf2, 0x42, 0x84, 0xa1, 0xea, 0xac, 0x24, 0xbb, 0x9e, - 0x6f, 0xd0, 0x12, 0x41, 0xf5, 0x0e, 0xc4, 0x45, 0x4e, 0xba, 0x27, 0x1e, 0xc9, 0x31, 0x5e, 0x78, - 0x24, 0xc7, 0xf8, 0xe0, 0x91, 0x1c, 0xe3, 0x84, 0xc7, 0x72, 0x0c, 0x17, 0x1e, 0xcb, 0x31, 0xdc, - 0x78, 0x2c, 0xc7, 0x10, 0x25, 0x8c, 0xc5, 0xfb, 0x49, 0x6c, 0x60, 0x2f, 0x19, 0x03, 0x02, 0x00, - 0x00, 0xff, 0xff, 0xd9, 0x4d, 0x19, 0x4f, 0x1c, 0x01, 0x00, 0x00, + 0xb0, 0xbc, 0x94, 0x60, 0x62, 0x6e, 0x66, 0x5e, 0xbe, 0x3e, 0x98, 0x84, 0xa8, 0x93, 0x92, 0x4c, + 0xce, 0x2f, 0xce, 0xcd, 0x2f, 0x8e, 0x07, 0xf3, 0xf4, 0x21, 0x1c, 0xa8, 0x94, 0x48, 0x7a, 0x7e, + 0x7a, 0x3e, 0x44, 0x1c, 0xc4, 0x82, 0x88, 0x2a, 0x9d, 0x65, 0xe4, 0x62, 0x0b, 0x48, 0x2c, 0x4a, + 0xcc, 0x2d, 0x16, 0x92, 0xe5, 0xe2, 0x02, 0x19, 0x1e, 0x9f, 0x92, 0x9a, 0x97, 0x9f, 0x2b, 0xc1, + 0xa8, 0xc0, 0xa8, 0xc1, 0x19, 0xc4, 0x09, 0x12, 0x71, 0x01, 0x09, 0x08, 0x25, 0x72, 0x09, 0x67, + 0xe6, 0xa5, 0xe5, 0x24, 0x96, 0x64, 0xe6, 0xe7, 0x15, 0xc7, 0x17, 0xa4, 0x16, 0xc5, 0x57, 0xa6, + 0x26, 0x16, 0x49, 0x30, 0x81, 0xd4, 0x39, 0x19, 0x9e, 0xb8, 0x27, 0xcf, 0x70, 0xeb, 0x9e, 0xbc, + 0x34, 0xc4, 0xca, 0xe2, 0x94, 0x6c, 0xbd, 0xcc, 0x7c, 0xfd, 0xdc, 0xc4, 0x92, 0x0c, 0x3d, 0x9f, + 0xd4, 0xf4, 0xc4, 0xe4, 0x4a, 0x97, 0xd4, 0xe4, 0x4b, 0x5b, 0x74, 0xb9, 0xa0, 0x2e, 0x72, 0x49, + 0x4d, 0x0e, 0x12, 0x44, 0x98, 0x16, 0x90, 0x5a, 0x14, 0x99, 0x9a, 0x58, 0x24, 0xa4, 0xc6, 0xc5, + 0x9f, 0x94, 0x93, 0x9f, 0x9c, 0x8d, 0x64, 0x3c, 0xb3, 0x02, 0xa3, 0x06, 0x4b, 0x10, 0x2f, 0x44, + 0x18, 0xaa, 0xce, 0x4a, 0xb2, 0xeb, 0xf9, 0x06, 0x2d, 0x11, 0xd4, 0x20, 0x83, 0x78, 0xc2, 0x49, + 0xf7, 0xc4, 0x23, 0x39, 0xc6, 0x0b, 0x8f, 0xe4, 0x18, 0x1f, 0x3c, 0x92, 0x63, 0x9c, 0xf0, 0x58, + 0x8e, 0xe1, 0xc2, 0x63, 0x39, 0x86, 0x1b, 0x8f, 0xe5, 0x18, 0xa2, 0x84, 0xb1, 0x04, 0x71, 0x12, + 0x1b, 0x38, 0x14, 0x8c, 0x01, 0x01, 0x00, 0x00, 0xff, 0xff, 0x30, 0x59, 0xae, 0xed, 0x80, 0x01, + 0x00, 0x00, } func (m *Params) Marshal() (dAtA []byte, err error) { @@ -136,11 +137,16 @@ func (m *Params) MarshalToSizedBuffer(dAtA []byte) (int, error) { i-- dAtA[i] = 0x18 } - if m.InflationsPerYear != 0 { - i = encodeVarintMint(dAtA, i, uint64(m.InflationsPerYear)) - i-- - dAtA[i] = 0x10 + { + size := m.InflationsPerYear.Size() + i -= size + if _, err := m.InflationsPerYear.MarshalTo(dAtA[i:]); err != nil { + return 0, err + } + i = encodeVarintMint(dAtA, i, uint64(size)) } + i-- + dAtA[i] = 0x12 if len(m.MintDenom) > 0 { i -= len(m.MintDenom) copy(dAtA[i:], m.MintDenom) @@ -172,9 +178,8 @@ func (m *Params) Size() (n int) { if l > 0 { n += 1 + l + sovMint(uint64(l)) } - if m.InflationsPerYear != 0 { - n += 1 + sovMint(uint64(m.InflationsPerYear)) - } + l = m.InflationsPerYear.Size() + n += 1 + l + sovMint(uint64(l)) if m.BlocksPerYear != 0 { n += 1 + sovMint(uint64(m.BlocksPerYear)) } @@ -249,10 +254,10 @@ func (m *Params) Unmarshal(dAtA []byte) error { m.MintDenom = string(dAtA[iNdEx:postIndex]) iNdEx = postIndex case 2: - if wireType != 0 { + if wireType != 2 { return fmt.Errorf("proto: wrong wireType = %d for field InflationsPerYear", wireType) } - m.InflationsPerYear = 0 + var stringLen uint64 for shift := uint(0); ; shift += 7 { if shift >= 64 { return ErrIntOverflowMint @@ -262,11 +267,26 @@ func (m *Params) Unmarshal(dAtA []byte) error { } b := dAtA[iNdEx] iNdEx++ - m.InflationsPerYear |= uint64(b&0x7F) << shift + stringLen |= uint64(b&0x7F) << shift if b < 0x80 { break } } + intStringLen := int(stringLen) + if intStringLen < 0 { + return ErrInvalidLengthMint + } + postIndex := iNdEx + intStringLen + if postIndex < 0 { + return ErrInvalidLengthMint + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + if err := m.InflationsPerYear.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex case 3: if wireType != 0 { return fmt.Errorf("proto: wrong wireType = %d for field BlocksPerYear", wireType) diff --git a/client/x/mint/types/mint.proto b/client/x/mint/types/mint.proto index 509ccd8f..144a51ea 100644 --- a/client/x/mint/types/mint.proto +++ b/client/x/mint/types/mint.proto @@ -4,6 +4,8 @@ package client.x.mint.types; option go_package = "client/x/mint/types"; import "amino/amino.proto"; +import "cosmos_proto/cosmos.proto"; +import "gogoproto/gogo.proto"; // Params defines the parameters for the x/mint module. message Params { @@ -12,7 +14,11 @@ message Params { // type of coin to mint string mint_denom = 1; // inflation amount per year - uint64 inflations_per_year = 2; + string inflations_per_year = 2 [ + (cosmos_proto.scalar) = "cosmos.Dec", + (gogoproto.customtype) = "cosmossdk.io/math.LegacyDec", + (gogoproto.nullable) = false + ]; // expected blocks per year uint64 blocks_per_year = 3; } diff --git a/client/x/mint/types/params.go b/client/x/mint/types/params.go index cc5197a3..20ac574c 100644 --- a/client/x/mint/types/params.go +++ b/client/x/mint/types/params.go @@ -13,7 +13,7 @@ import ( ) // NewParams returns Params instance with the given values. -func NewParams(mintDenom string, inflationsPerYear uint64, blocksPerYear uint64) Params { +func NewParams(mintDenom string, inflationsPerYear math.LegacyDec, blocksPerYear uint64) Params { return Params{ MintDenom: mintDenom, InflationsPerYear: inflationsPerYear, @@ -25,7 +25,7 @@ func NewParams(mintDenom string, inflationsPerYear uint64, blocksPerYear uint64) func DefaultParams() Params { return Params{ MintDenom: sdk.DefaultBondDenom, - InflationsPerYear: 24625000_000_000_000, + InflationsPerYear: math.LegacyNewDec(24625000000000000.000000000000000000), BlocksPerYear: uint64(60 * 60 * 8766 / 5), // assuming 5 second block times } }