Skip to content

Commit

Permalink
Merge pull request #5 from bianjieai/sheldon/v1.6.2
Browse files Browse the repository at this point in the history
modify nft tokenId validation rules
  • Loading branch information
towerkyoto authored May 15, 2023
2 parents 651b50b + 6519b89 commit acba076
Show file tree
Hide file tree
Showing 9 changed files with 28 additions and 118 deletions.
1 change: 0 additions & 1 deletion go.mod
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,6 @@ go 1.17

require (
github.com/cosmos/cosmos-sdk v0.45.1
github.com/cosmos/ibc-go v1.1.0
github.com/gogo/protobuf v1.3.3
github.com/golang/protobuf v1.5.2
github.com/gorilla/mux v1.8.0
Expand Down
33 changes: 0 additions & 33 deletions go.sum

Large diffs are not rendered by default.

6 changes: 3 additions & 3 deletions modules/farm/client/cli/query.go
Original file line number Diff line number Diff line change
Expand Up @@ -38,7 +38,7 @@ func GetCmdQueryFarmPools() *cobra.Command {
Example: fmt.Sprintf("$ %s query farm pools", version.AppName),
Short: "Query farm pools by page",
RunE: func(cmd *cobra.Command, args []string) error {
clientCtx, err := client.GetClientTxContext(cmd)
clientCtx, err := client.GetClientQueryContext(cmd)
if err != nil {
return err
}
Expand Down Expand Up @@ -71,7 +71,7 @@ func GetCmdQueryFarmPool() *cobra.Command {
Short: "Query a farm pool",
Args: cobra.ExactArgs(1),
RunE: func(cmd *cobra.Command, args []string) error {
clientCtx, err := client.GetClientTxContext(cmd)
clientCtx, err := client.GetClientQueryContext(cmd)
if err != nil {
return err
}
Expand All @@ -98,7 +98,7 @@ func GetCmdQueryFarmer() *cobra.Command {
Short: "Query farmer reward",
Args: cobra.ExactArgs(1),
RunE: func(cmd *cobra.Command, args []string) error {
clientCtx, err := client.GetClientTxContext(cmd)
clientCtx, err := client.GetClientQueryContext(cmd)
if err != nil {
return err
}
Expand Down
12 changes: 6 additions & 6 deletions modules/mt/client/cli/query.go
Original file line number Diff line number Diff line change
Expand Up @@ -39,7 +39,7 @@ func GetCmdQueryDenoms() *cobra.Command {
Long: "Query all denoms.",
Example: fmt.Sprintf("$ %s query mt denoms", version.AppName),
RunE: func(cmd *cobra.Command, args []string) error {
clientCtx, err := client.GetClientTxContext(cmd)
clientCtx, err := client.GetClientQueryContext(cmd)
if err != nil {
return err
}
Expand Down Expand Up @@ -69,7 +69,7 @@ func GetCmdQueryDenom() *cobra.Command {
Example: fmt.Sprintf("$ %s query mt denom <denom-id>", version.AppName),
Args: cobra.ExactArgs(1),
RunE: func(cmd *cobra.Command, args []string) error {
clientCtx, err := client.GetClientTxContext(cmd)
clientCtx, err := client.GetClientQueryContext(cmd)
if err != nil {
return err
}
Expand Down Expand Up @@ -98,7 +98,7 @@ func GetCmdQueryMTSupply() *cobra.Command {
Example: fmt.Sprintf("$ %s query mt supply <denom-id> <mt-id>", version.AppName),
Args: cobra.ExactArgs(2),
RunE: func(cmd *cobra.Command, args []string) error {
clientCtx, err := client.GetClientTxContext(cmd)
clientCtx, err := client.GetClientQueryContext(cmd)
if err != nil {
return err
}
Expand Down Expand Up @@ -127,7 +127,7 @@ func GetCmdQueryMTs() *cobra.Command {
Example: fmt.Sprintf("$ %s query mt tokens <denom-id>", version.AppName),
Args: cobra.ExactArgs(1),
RunE: func(cmd *cobra.Command, args []string) error {
clientCtx, err := client.GetClientTxContext(cmd)
clientCtx, err := client.GetClientQueryContext(cmd)
if err != nil {
return err
}
Expand Down Expand Up @@ -162,7 +162,7 @@ func GetCmdQueryMT() *cobra.Command {
Example: fmt.Sprintf("$ %s query mt token <denom-id> <mt-id>", version.AppName),
Args: cobra.ExactArgs(2),
RunE: func(cmd *cobra.Command, args []string) error {
clientCtx, err := client.GetClientTxContext(cmd)
clientCtx, err := client.GetClientQueryContext(cmd)
if err != nil {
return err
}
Expand Down Expand Up @@ -191,7 +191,7 @@ func GetCmdQueryBalances() *cobra.Command {
Example: fmt.Sprintf("$ %s query mt balances <owner> <denom-id>", version.AppName),
Args: cobra.ExactArgs(2),
RunE: func(cmd *cobra.Command, args []string) error {
clientCtx, err := client.GetClientTxContext(cmd)
clientCtx, err := client.GetClientQueryContext(cmd)
if err != nil {
return err
}
Expand Down
12 changes: 6 additions & 6 deletions modules/nft/client/cli/query.go
Original file line number Diff line number Diff line change
Expand Up @@ -42,7 +42,7 @@ func GetCmdQuerySupply() *cobra.Command {
Example: fmt.Sprintf("$ %s query nft supply <denom-id>", version.AppName),
Args: cobra.ExactArgs(1),
RunE: func(cmd *cobra.Command, args []string) error {
clientCtx, err := client.GetClientTxContext(cmd)
clientCtx, err := client.GetClientQueryContext(cmd)
if err != nil {
return err
}
Expand Down Expand Up @@ -85,7 +85,7 @@ func GetCmdQueryOwner() *cobra.Command {
Example: fmt.Sprintf("$ %s query nft owner <address> --denom-id=<denom-id>", version.AppName),
Args: cobra.ExactArgs(1),
RunE: func(cmd *cobra.Command, args []string) error {
clientCtx, err := client.GetClientTxContext(cmd)
clientCtx, err := client.GetClientQueryContext(cmd)
if err != nil {
return err
}
Expand Down Expand Up @@ -128,7 +128,7 @@ func GetCmdQueryCollection() *cobra.Command {
Example: fmt.Sprintf("$ %s query nft collection <denom-id>", version.AppName),
Args: cobra.ExactArgs(1),
RunE: func(cmd *cobra.Command, args []string) error {
clientCtx, err := client.GetClientTxContext(cmd)
clientCtx, err := client.GetClientQueryContext(cmd)
if err != nil {
return err
}
Expand Down Expand Up @@ -164,7 +164,7 @@ func GetCmdQueryDenoms() *cobra.Command {
Long: "Query all denominations of all collections of NFTs.",
Example: fmt.Sprintf("$ %s query nft denoms", version.AppName),
RunE: func(cmd *cobra.Command, args []string) error {
clientCtx, err := client.GetClientTxContext(cmd)
clientCtx, err := client.GetClientQueryContext(cmd)
if err != nil {
return err
}
Expand Down Expand Up @@ -194,7 +194,7 @@ func GetCmdQueryDenom() *cobra.Command {
Example: fmt.Sprintf("$ %s query nft denom <denom-id>", version.AppName),
Args: cobra.ExactArgs(1),
RunE: func(cmd *cobra.Command, args []string) error {
clientCtx, err := client.GetClientTxContext(cmd)
clientCtx, err := client.GetClientQueryContext(cmd)
if err != nil {
return err
}
Expand Down Expand Up @@ -223,7 +223,7 @@ func GetCmdQueryNFT() *cobra.Command {
Example: fmt.Sprintf("$ %s query nft token <denom-id> <nft-id>", version.AppName),
Args: cobra.ExactArgs(2),
RunE: func(cmd *cobra.Command, args []string) error {
clientCtx, err := client.GetClientTxContext(cmd)
clientCtx, err := client.GetClientQueryContext(cmd)
if err != nil {
return err
}
Expand Down
2 changes: 1 addition & 1 deletion modules/nft/types/genesis.go
Original file line number Diff line number Diff line change
Expand Up @@ -15,7 +15,7 @@ func NewGenesisState(collections []Collection) *GenesisState {
// error for any failed validation criteria.
func ValidateGenesis(data GenesisState) error {
for _, c := range data.Collections {
if err := ValidateDenomID(c.Denom.Name); err != nil {
if err := ValidateDenomID(c.Denom.Id); err != nil {
return err
}

Expand Down
13 changes: 5 additions & 8 deletions modules/nft/types/validation.go
Original file line number Diff line number Diff line change
Expand Up @@ -29,16 +29,16 @@ var (
// IsBeginWithAlpha only begin with [a-z]
IsBeginWithAlpha = regexp.MustCompile(`^[a-z].*`).MatchString

tokenIdString = `[a-z0-9]{1,128}`
regexpTokenID = regexp.MustCompile(fmt.Sprintf(`^%s$`, tokenIdString)).MatchString

keywords = strings.Join([]string{ReservedPeg, ReservedIBC, ReservedHTLT, ReservedTIBC}, "|")
regexpKeywordsFmt = fmt.Sprintf("^(%s).*", keywords)
regexpKeyword = regexp.MustCompile(regexpKeywordsFmt).MatchString
)

// ValidateDenomID verifies whether the parameters are legal
func ValidateDenomID(denomID string) error {
if len(denomID) < MinDenomLen || len(denomID) > MaxDenomLen {
return sdkerrors.Wrapf(ErrInvalidDenom, "the length of denom(%s) only accepts value [%d, %d]", denomID, MinDenomLen, MaxDenomLen)
}
boolPrifix := strings.HasPrefix(denomID, "tibc-")
if !IsBeginWithAlpha(denomID) || !IsAlphaNumeric(denomID) && !boolPrifix {
return sdkerrors.Wrapf(ErrInvalidDenom, "the denom(%s) only accepts alphanumeric characters, and begin with an english letter", denomID)
Expand All @@ -48,11 +48,8 @@ func ValidateDenomID(denomID string) error {

// ValidateTokenID verify that the tokenID is legal
func ValidateTokenID(tokenID string) error {
if len(tokenID) < MinDenomLen || len(tokenID) > MaxDenomLen {
return sdkerrors.Wrapf(ErrInvalidTokenID, "the length of nft id(%s) only accepts value [%d, %d]", tokenID, MinDenomLen, MaxDenomLen)
}
if !IsBeginWithAlpha(tokenID) || !IsAlphaNumeric(tokenID) {
return sdkerrors.Wrapf(ErrInvalidTokenID, "nft id(%s) only accepts alphanumeric characters, and begin with an english letter", tokenID)
if !regexpTokenID(tokenID) {
return sdkerrors.Wrapf(ErrInvalidTokenID, "tokenID can only accept characters that match the regular expression: (%s),but got (%s)", tokenIdString, tokenID)
}
return nil
}
Expand Down
2 changes: 1 addition & 1 deletion modules/record/client/cli/query.go
Original file line number Diff line number Diff line change
Expand Up @@ -37,7 +37,7 @@ func GetCmdQueryRecord() *cobra.Command {
Short: "Query a record",
Args: cobra.ExactArgs(1),
RunE: func(cmd *cobra.Command, args []string) error {
clientCtx, err := client.GetClientTxContext(cmd)
clientCtx, err := client.GetClientQueryContext(cmd)
if err != nil {
return err
}
Expand Down
65 changes: 6 additions & 59 deletions simapp/app.go
Original file line number Diff line number Diff line change
Expand Up @@ -16,7 +16,6 @@ import (
tmos "github.com/tendermint/tendermint/libs/os"
dbm "github.com/tendermint/tm-db"

vestingtypes "github.com/cosmos/cosmos-sdk/x/auth/vesting/types"
"github.com/cosmos/cosmos-sdk/baseapp"
"github.com/cosmos/cosmos-sdk/client"
"github.com/cosmos/cosmos-sdk/client/grpc/tmservice"
Expand All @@ -40,6 +39,7 @@ import (
authtx "github.com/cosmos/cosmos-sdk/x/auth/tx"
authtypes "github.com/cosmos/cosmos-sdk/x/auth/types"
"github.com/cosmos/cosmos-sdk/x/auth/vesting"
vestingtypes "github.com/cosmos/cosmos-sdk/x/auth/vesting/types"
"github.com/cosmos/cosmos-sdk/x/bank"
bankkeeper "github.com/cosmos/cosmos-sdk/x/bank/keeper"
banktypes "github.com/cosmos/cosmos-sdk/x/bank/types"
Expand Down Expand Up @@ -82,14 +82,6 @@ import (
upgradeclient "github.com/cosmos/cosmos-sdk/x/upgrade/client"
upgradekeeper "github.com/cosmos/cosmos-sdk/x/upgrade/keeper"
upgradetypes "github.com/cosmos/cosmos-sdk/x/upgrade/types"
transfer "github.com/cosmos/ibc-go/modules/apps/transfer"
ibctransferkeeper "github.com/cosmos/ibc-go/modules/apps/transfer/keeper"
ibctransfertypes "github.com/cosmos/ibc-go/modules/apps/transfer/types"
ibc "github.com/cosmos/ibc-go/modules/core"
porttypes "github.com/cosmos/ibc-go/modules/core/05-port/types"
ibchost "github.com/cosmos/ibc-go/modules/core/24-host"
ibckeeper "github.com/cosmos/ibc-go/modules/core/keeper"
ibcmock "github.com/cosmos/ibc-go/testing/mock"

"github.com/irisnet/irismod/modules/coinswap"
coinswapkeeper "github.com/irisnet/irismod/modules/coinswap/keeper"
Expand Down Expand Up @@ -150,10 +142,8 @@ var (
crisis.AppModuleBasic{},
slashing.AppModuleBasic{},
feegrantmodule.AppModuleBasic{},
ibc.AppModuleBasic{},
upgrade.AppModuleBasic{},
evidence.AppModuleBasic{},
transfer.AppModuleBasic{},
vesting.AppModuleBasic{},

token.AppModuleBasic{},
Expand All @@ -175,7 +165,6 @@ var (
stakingtypes.BondedPoolName: {authtypes.Burner, authtypes.Staking},
stakingtypes.NotBondedPoolName: {authtypes.Burner, authtypes.Staking},
govtypes.ModuleName: {authtypes.Burner},
ibctransfertypes.ModuleName: {authtypes.Minter, authtypes.Burner},
tokentypes.ModuleName: {authtypes.Minter, authtypes.Burner},
htlctypes.ModuleName: {authtypes.Minter, authtypes.Burner},
coinswaptypes.ModuleName: {authtypes.Minter, authtypes.Burner},
Expand Down Expand Up @@ -221,9 +210,7 @@ type SimApp struct {
CrisisKeeper crisiskeeper.Keeper
UpgradeKeeper upgradekeeper.Keeper
ParamsKeeper paramskeeper.Keeper
IBCKeeper *ibckeeper.Keeper // IBC Keeper must be a pointer in the app, so we can SetRouter on it correctly
EvidenceKeeper evidencekeeper.Keeper
TransferKeeper ibctransferkeeper.Keeper
FeeGrantKeeper feegrantkeeper.Keeper

// make scoped keepers public for test purposes
Expand Down Expand Up @@ -280,9 +267,9 @@ func NewSimApp(
keys := sdk.NewKVStoreKeys(
authtypes.StoreKey, banktypes.StoreKey, stakingtypes.StoreKey,
minttypes.StoreKey, distrtypes.StoreKey, slashingtypes.StoreKey,
govtypes.StoreKey, paramstypes.StoreKey, ibchost.StoreKey,
govtypes.StoreKey, paramstypes.StoreKey,
upgradetypes.StoreKey, feegrant.StoreKey, evidencetypes.StoreKey,
ibctransfertypes.StoreKey, capabilitytypes.StoreKey, tokentypes.StoreKey,
capabilitytypes.StoreKey, tokentypes.StoreKey,
nfttypes.StoreKey, htlctypes.StoreKey, recordtypes.StoreKey,
coinswaptypes.StoreKey, servicetypes.StoreKey, oracletypes.StoreKey,
randomtypes.StoreKey, farmtypes.StoreKey,
Expand All @@ -308,11 +295,6 @@ func NewSimApp(

// add capability keeper and ScopeToModule for ibc module
app.CapabilityKeeper = capabilitykeeper.NewKeeper(appCodec, keys[capabilitytypes.StoreKey], memKeys[capabilitytypes.MemStoreKey])
scopedIBCKeeper := app.CapabilityKeeper.ScopeToModule(ibchost.ModuleName)
scopedTransferKeeper := app.CapabilityKeeper.ScopeToModule(ibctransfertypes.ModuleName)
// NOTE: the IBC mock keeper and application module is used only for testing core IBC. Do
// note replicate if you do not need to test core IBC or light clients.
scopedIBCMockKeeper := app.CapabilityKeeper.ScopeToModule(ibcmock.ModuleName)

// add keepers
app.AccountKeeper = authkeeper.NewAccountKeeper(
Expand Down Expand Up @@ -347,29 +329,6 @@ func NewSimApp(
stakingtypes.NewMultiStakingHooks(app.DistrKeeper.Hooks(), app.SlashingKeeper.Hooks()),
)

// Create IBC Keeper
app.IBCKeeper = ibckeeper.NewKeeper(
appCodec, keys[ibchost.StoreKey], app.GetSubspace(ibchost.ModuleName), app.StakingKeeper, app.UpgradeKeeper, scopedIBCKeeper,
)

// Create Transfer Keepers
app.TransferKeeper = ibctransferkeeper.NewKeeper(
appCodec, keys[ibctransfertypes.StoreKey], app.GetSubspace(ibctransfertypes.ModuleName),
app.IBCKeeper.ChannelKeeper, &app.IBCKeeper.PortKeeper,
app.AccountKeeper, app.BankKeeper, scopedTransferKeeper,
)
transferModule := transfer.NewAppModule(app.TransferKeeper)

// NOTE: the IBC mock keeper and application module is used only for testing core IBC. Do
// note replicate if you do not need to test core IBC or light clients.
mockModule := ibcmock.NewAppModule(scopedIBCMockKeeper, &app.IBCKeeper.PortKeeper)

// Create static IBC router, add transfer route, then set and seal it
ibcRouter := porttypes.NewRouter()
ibcRouter.AddRoute(ibctransfertypes.ModuleName, transferModule)
ibcRouter.AddRoute(ibcmock.ModuleName, mockModule)
app.IBCKeeper.SetRouter(ibcRouter)

// create evidence keeper with router
evidenceKeeper := evidencekeeper.NewKeeper(
appCodec, keys[evidencetypes.StoreKey], &app.StakingKeeper, app.SlashingKeeper,
Expand Down Expand Up @@ -478,9 +437,7 @@ func NewSimApp(
staking.NewAppModule(appCodec, app.StakingKeeper, app.AccountKeeper, app.BankKeeper),
upgrade.NewAppModule(app.UpgradeKeeper),
evidence.NewAppModule(app.EvidenceKeeper),
ibc.NewAppModule(app.IBCKeeper),
params.NewAppModule(app.ParamsKeeper),
transferModule,
token.NewAppModule(appCodec, app.TokenKeeper, app.AccountKeeper, app.BankKeeper),
record.NewAppModule(appCodec, app.RecordKeeper, app.AccountKeeper, app.BankKeeper),
nft.NewAppModule(appCodec, app.NFTKeeper, app.AccountKeeper, app.BankKeeper),
Expand All @@ -502,7 +459,7 @@ func NewSimApp(
govtypes.ModuleName, minttypes.ModuleName, crisistypes.ModuleName,
genutiltypes.ModuleName, evidencetypes.ModuleName, feegrant.ModuleName,
paramstypes.ModuleName, upgradetypes.ModuleName, vestingtypes.ModuleName,
ibchost.ModuleName, ibctransfertypes.ModuleName, tokentypes.ModuleName,
tokentypes.ModuleName,
nfttypes.ModuleName, htlctypes.ModuleName, recordtypes.ModuleName,
coinswaptypes.ModuleName, servicetypes.ModuleName, oracletypes.ModuleName,
randomtypes.ModuleName, farmtypes.ModuleName, feegrant.ModuleName,
Expand All @@ -513,7 +470,7 @@ func NewSimApp(
govtypes.ModuleName, minttypes.ModuleName, crisistypes.ModuleName,
genutiltypes.ModuleName, evidencetypes.ModuleName, feegrant.ModuleName,
paramstypes.ModuleName, upgradetypes.ModuleName, vestingtypes.ModuleName,
ibchost.ModuleName, ibctransfertypes.ModuleName, tokentypes.ModuleName,
tokentypes.ModuleName,
nfttypes.ModuleName, htlctypes.ModuleName, recordtypes.ModuleName,
coinswaptypes.ModuleName, servicetypes.ModuleName, oracletypes.ModuleName,
randomtypes.ModuleName, farmtypes.ModuleName, feegrant.ModuleName,
Expand All @@ -530,7 +487,7 @@ func NewSimApp(
govtypes.ModuleName, minttypes.ModuleName, crisistypes.ModuleName,
genutiltypes.ModuleName, evidencetypes.ModuleName, feegrant.ModuleName,
paramstypes.ModuleName, upgradetypes.ModuleName, vestingtypes.ModuleName,
ibchost.ModuleName, ibctransfertypes.ModuleName, tokentypes.ModuleName,
tokentypes.ModuleName,
nfttypes.ModuleName, htlctypes.ModuleName, recordtypes.ModuleName,
coinswaptypes.ModuleName, servicetypes.ModuleName, oracletypes.ModuleName,
randomtypes.ModuleName, farmtypes.ModuleName, feegrant.ModuleName,
Expand Down Expand Up @@ -597,14 +554,6 @@ func NewSimApp(
tmos.Exit(err.Error())
}
}

app.ScopedIBCKeeper = scopedIBCKeeper
app.ScopedTransferKeeper = scopedTransferKeeper

// NOTE: the IBC mock keeper and application module is used only for testing core IBC. Do
// note replicate if you do not need to test core IBC or light clients.
app.ScopedIBCMockKeeper = scopedIBCMockKeeper

return app
}

Expand Down Expand Up @@ -779,8 +728,6 @@ func initParamsKeeper(appCodec codec.BinaryCodec, legacyAmino *codec.LegacyAmino
paramsKeeper.Subspace(htlctypes.ModuleName)
paramsKeeper.Subspace(coinswaptypes.ModuleName)
paramsKeeper.Subspace(servicetypes.ModuleName)
paramsKeeper.Subspace(ibctransfertypes.ModuleName)
paramsKeeper.Subspace(ibchost.ModuleName)
paramsKeeper.Subspace(farmtypes.ModuleName)

return paramsKeeper
Expand Down

0 comments on commit acba076

Please sign in to comment.