Skip to content

Commit

Permalink
Add subdenom verification (#13)
Browse files Browse the repository at this point in the history
* Add subdenom verification

* Remove TODO
  • Loading branch information
ethanfrey authored Mar 22, 2022
1 parent 61cfb64 commit 37830f1
Show file tree
Hide file tree
Showing 2 changed files with 21 additions and 8 deletions.
16 changes: 12 additions & 4 deletions app/wasm/message_plugin.go
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,7 @@ package wasm
import (
"encoding/json"
"fmt"
"regexp"

wasmkeeper "github.com/CosmWasm/wasmd/x/wasm/keeper"
wasmvmtypes "github.com/CosmWasm/wasmvm/types"
Expand Down Expand Up @@ -147,7 +148,6 @@ func GetFullDenom(contract string, subDenom string) (string, error) {
if err != nil {
return "", sdkerrors.Wrap(err, "validate sub-denom")
}
// TODO: Confirm "cw" prefix
fullDenom := fmt.Sprintf("cw/%s/%s", contract, subDenom)

return fullDenom, nil
Expand All @@ -165,10 +165,18 @@ func parseAddress(addr string) (sdk.AccAddress, error) {
return parsed, nil
}

const reSubdenomStr = `^[a-zA-Z][a-zA-Z0-9]{2,31}$`

var reSubdenom *regexp.Regexp

func init() {
reSubdenom = regexp.MustCompile(reSubdenomStr)

}

func ValidateSubDenom(subDenom string) error {
if len(subDenom) == 0 {
return sdkerrors.Wrap(sdkerrors.ErrInvalidRequest, "empty sub-denom")
if !reSubdenom.MatchString(subDenom) {
return fmt.Errorf("invalid subdenom: %s", subDenom)
}
// TODO: Extra validations
return nil
}
13 changes: 9 additions & 4 deletions app/wasm/test/queries_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -24,24 +24,29 @@ func TestFullDenom(t *testing.T) {
}{
"valid address": {
addr: actor.String(),
subDenom: "sub_denom_1",
expFullDenom: fmt.Sprintf("cw/%s/sub_denom_1", actor.String()),
subDenom: "subDenom1",
expFullDenom: fmt.Sprintf("cw/%s/subDenom1", actor.String()),
},
"empty address": {
addr: "",
subDenom: "sub_denom_1",
subDenom: "subDenom1",
expErr: true,
},
"invalid address": {
addr: "invalid",
subDenom: "sub_denom_1",
subDenom: "subDenom1",
expErr: true,
},
"empty sub-denom": {
addr: actor.String(),
subDenom: "",
expErr: true,
},
"invalid sub-denom": {
addr: actor.String(),
subDenom: "sub_denom_1",
expErr: true,
},
}
for name, spec := range specs {
t.Run(name, func(t *testing.T) {
Expand Down

0 comments on commit 37830f1

Please sign in to comment.