github.com/fibonacci-chain/fbc@v0.0.0-20231124064014-c7636198c1e9/x/params/types/proposal.go (about) 1 package types 2 3 import ( 4 "fmt" 5 "strings" 6 7 "github.com/fibonacci-chain/fbc/libs/cosmos-sdk/x/params/types" 8 9 govtypes "github.com/fibonacci-chain/fbc/x/gov/types" 10 11 sdk "github.com/fibonacci-chain/fbc/libs/cosmos-sdk/types" 12 sdkparams "github.com/fibonacci-chain/fbc/libs/cosmos-sdk/x/params" 13 ) 14 15 // Assert ParameterChangeProposal implements govtypes.Content at compile-time 16 var _ govtypes.Content = ParameterChangeProposal{} 17 18 func init() { 19 govtypes.RegisterProposalType(sdkparams.ProposalTypeChange) 20 govtypes.RegisterProposalTypeCodec(ParameterChangeProposal{}, "fbexchain/params/ParameterChangeProposal") 21 } 22 23 // ParameterChangeProposal is the struct of param change proposal 24 type ParameterChangeProposal struct { 25 sdkparams.ParameterChangeProposal 26 Height uint64 `json:"height" yaml:"height"` 27 } 28 29 // NewParameterChangeProposal creates a new instance of ParameterChangeProposal 30 func NewParameterChangeProposal(title, description string, changes []types.ParamChange, height uint64, 31 ) ParameterChangeProposal { 32 return ParameterChangeProposal{ 33 ParameterChangeProposal: sdkparams.NewParameterChangeProposal(title, description, changes), 34 Height: height, 35 } 36 } 37 38 // ValidateBasic validates the parameter change proposal 39 func (pcp ParameterChangeProposal) ValidateBasic() sdk.Error { 40 if len(strings.TrimSpace(pcp.Title)) == 0 { 41 return govtypes.ErrInvalidProposalContent("title is required") 42 } 43 if len(pcp.Title) > govtypes.MaxTitleLength { 44 return govtypes.ErrInvalidProposalContent("title length is longer than max title length") 45 } 46 47 if len(pcp.Description) == 0 { 48 return govtypes.ErrInvalidProposalContent("description is required") 49 } 50 51 if len(pcp.Description) > govtypes.MaxDescriptionLength { 52 return govtypes.ErrInvalidProposalContent("description length is longer than max DggescriptionLength") 53 } 54 55 if pcp.ProposalType() != sdkparams.ProposalTypeChange { 56 return govtypes.ErrInvalidProposalType(pcp.ProposalType()) 57 } 58 59 if len(pcp.Changes) != 1 { 60 return ErrInvalidParamsNum(DefaultCodespace, fmt.Sprintf("one proposal can only change one pair of parameter")) 61 } 62 63 return sdkparams.ValidateChanges(pcp.Changes) 64 }