Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

R4R: Update denom's specification #1937

Merged
merged 4 commits into from
Aug 30, 2019
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
6 changes: 3 additions & 3 deletions app/v2/coinswap/alias.go
Original file line number Diff line number Diff line change
Expand Up @@ -41,7 +41,7 @@ var (
)

const (
DefaultCodespace = types.DefaultCodespace
ModuleName = types.ModuleName
FormatUniIdPrefix = types.FormatUniIdPrefix
DefaultCodespace = types.DefaultCodespace
ModuleName = types.ModuleName
FormatUniABSPrefix = types.FormatUniABSPrefix
)
22 changes: 11 additions & 11 deletions app/v2/coinswap/internal/keeper/swap_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -23,10 +23,10 @@ func TestGetUniId(t *testing.T) {
expectResult string
expectPass bool
}{
{"denom1 is native", native, "btc-min", "u-btc", true},
{"denom2 is native", "btc-min", native, "u-btc", true},
{"denom1 equals denom2", "btc-min", "btc-min", "u-btc", false},
{"neither denom is native", "eth-min", "btc-min", "u-btc", false},
{"denom1 is native", native, "btc-min", "uni:btc", true},
{"denom2 is native", "btc-min", native, "uni:btc", true},
{"denom1 equals denom2", "btc-min", "btc-min", "uni:btc", false},
{"neither denom is native", "eth-min", "btc-min", "uni:btc", false},
}

for _, tc := range cases {
Expand Down Expand Up @@ -132,23 +132,23 @@ func TestKeeperSwap(t *testing.T) {
_, err = keeper.HandleSwap(ctx, msg1)
require.Nil(t, err)
reservePoolBalances = keeper.ak.GetAccount(ctx, reservePoolAddr).GetCoins()
require.Equal(t, "900btc-min,1112iris-atto,1000u-btc-min", reservePoolBalances.String())
require.Equal(t, "900btc-min,1112iris-atto,1000uni:btc-min", reservePoolBalances.String())
senderBlances = keeper.ak.GetAccount(ctx, sender).GetCoins()
require.Equal(t, "99999100btc-min,99998888iris-atto,1000u-btc-min", senderBlances.String())
require.Equal(t, "99999100btc-min,99998888iris-atto,1000uni:btc-min", senderBlances.String())

// second swap
_, err = keeper.HandleSwap(ctx, msg1)
require.Nil(t, err)
reservePoolBalances = keeper.ak.GetAccount(ctx, reservePoolAddr).GetCoins()
require.Equal(t, "800btc-min,1252iris-atto,1000u-btc-min", reservePoolBalances.String())
require.Equal(t, "800btc-min,1252iris-atto,1000uni:btc-min", reservePoolBalances.String())
senderBlances = keeper.ak.GetAccount(ctx, sender).GetCoins()
require.Equal(t, "99999200btc-min,99998748iris-atto,1000u-btc-min", senderBlances.String())
require.Equal(t, "99999200btc-min,99998748iris-atto,1000uni:btc-min", senderBlances.String())

// third swap
_, err = keeper.HandleSwap(ctx, msg1)
require.Nil(t, err)
reservePoolBalances = keeper.ak.GetAccount(ctx, reservePoolAddr).GetCoins()
require.Equal(t, "700btc-min,1432iris-atto,1000u-btc-min", reservePoolBalances.String())
require.Equal(t, "700btc-min,1432iris-atto,1000uni:btc-min", reservePoolBalances.String())
}

func createReservePool(t *testing.T) (sdk.Context, Keeper, sdk.AccAddress, sdk.AccAddress, sdk.Error, sdk.Coins, sdk.Coins) {
Expand All @@ -170,9 +170,9 @@ func createReservePool(t *testing.T) (sdk.Context, Keeper, sdk.AccAddress, sdk.A
//assert
require.Nil(t, err)
reservePoolBalances := keeper.ak.GetAccount(ctx, reservePoolAddr).GetCoins()
require.Equal(t, "1000btc-min,1000iris-atto,1000u-btc-min", reservePoolBalances.String())
require.Equal(t, "1000btc-min,1000iris-atto,1000uni:btc-min", reservePoolBalances.String())
senderBlances := keeper.ak.GetAccount(ctx, sender).GetCoins()
require.Equal(t, "99999000btc-min,99999000iris-atto,1000u-btc-min", senderBlances.String())
require.Equal(t, "99999000btc-min,99999000iris-atto,1000uni:btc-min", senderBlances.String())
return ctx, keeper, sender, reservePoolAddr, err, reservePoolBalances, senderBlances
}

Expand Down
10 changes: 5 additions & 5 deletions app/v2/coinswap/internal/types/msgs.go
Original file line number Diff line number Diff line change
Expand Up @@ -12,8 +12,8 @@ var (
)

const (
FormatUniIdPrefix = "u-"
FormatUniId = FormatUniIdPrefix + "%s"
FormatUniABSPrefix = "uni:"
FormatUniId = FormatUniABSPrefix + "%s"
)

/* --------------------------------------------------------------------------- */
Expand Down Expand Up @@ -66,13 +66,13 @@ func (msg MsgSwapOrder) ValidateBasic() sdk.Error {
if !(msg.Input.Coin.IsValid() && msg.Input.Coin.IsPositive()) {
return sdk.ErrInvalidCoins("input coin is invalid: " + msg.Input.Coin.String())
}
if strings.HasPrefix(msg.Input.Coin.Denom, FormatUniIdPrefix) {
if strings.HasPrefix(msg.Input.Coin.Denom, FormatUniABSPrefix) {
return sdk.ErrInvalidCoins("unsupported input coin type: " + msg.Input.Coin.String())
}
if !(msg.Output.Coin.IsValid() && msg.Output.Coin.IsPositive()) {
return sdk.ErrInvalidCoins("output coin is invalid: " + msg.Output.Coin.String())
}
if strings.HasPrefix(msg.Output.Coin.Denom, FormatUniIdPrefix) {
if strings.HasPrefix(msg.Output.Coin.Denom, FormatUniABSPrefix) {
return sdk.ErrInvalidCoins("unsupported output coin type: " + msg.Output.Coin.String())
}
if msg.Input.Coin.Denom == msg.Output.Coin.Denom {
Expand Down Expand Up @@ -139,7 +139,7 @@ func (msg MsgAddLiquidity) ValidateBasic() sdk.Error {
if msg.MaxToken.Denom == sdk.IrisAtto {
return sdk.ErrInvalidCoins("max token must be non-iris token")
}
if strings.HasPrefix(msg.MaxToken.Denom, FormatUniIdPrefix) {
if strings.HasPrefix(msg.MaxToken.Denom, FormatUniABSPrefix) {
return sdk.ErrInvalidCoins("max token must be non-liquidity token")
}
if msg.ExactIrisAmt.IsNil() || !msg.ExactIrisAmt.IsPositive() {
Expand Down
2 changes: 1 addition & 1 deletion app/v2/coinswap/internal/types/test_common.go
Original file line number Diff line number Diff line change
Expand Up @@ -18,7 +18,7 @@ var (

denom0 = "atom-min"
denom1 = "btc-min"
unidenom = "u-btc-min"
unidenom = FormatUniABSPrefix + "btc-min"

input = sdk.NewCoin(denom0, sdk.NewInt(1000))
output = sdk.NewCoin(denom1, sdk.NewInt(500))
Expand Down
6 changes: 3 additions & 3 deletions app/v2/coinswap/internal/types/utils.go
Original file line number Diff line number Diff line change
Expand Up @@ -35,7 +35,7 @@ func GetCoinMinDenomFromUniDenom(uniDenom string) (string, sdk.Error) {
if err != nil {
return "", err
}
return strings.TrimPrefix(uniDenom, FormatUniIdPrefix), nil
return strings.TrimPrefix(uniDenom, FormatUniABSPrefix), nil
}

// GetUniCoinType returns the uni coin type
Expand All @@ -56,15 +56,15 @@ func GetUniCoinType(uniId string) (sdk.CoinType, sdk.Error) {

// CheckUniDenom returns nil if the uni denom is valid
func CheckUniDenom(uniDenom string) sdk.Error {
if !sdk.IsCoinMinDenomValid(uniDenom) || !strings.HasPrefix(uniDenom, FormatUniIdPrefix) {
if !sdk.IsCoinMinDenomValid(uniDenom) || !strings.HasPrefix(uniDenom, FormatUniABSPrefix) {
return ErrIllegalDenom(fmt.Sprintf("illegal liquidity denomnation: %s", uniDenom))
}
return nil
}

// CheckUniId returns nil if the uni id is valid
func CheckUniId(uniId string) sdk.Error {
if !sdk.IsCoinNameValid(uniId) || !strings.HasPrefix(uniId, FormatUniIdPrefix) {
if !sdk.IsCoinNameValid(uniId) || !strings.HasPrefix(uniId, FormatUniABSPrefix) {
return ErrIllegalUniId(fmt.Sprintf("illegal liquidity id: %s", uniId))
}
return nil
Expand Down
2 changes: 1 addition & 1 deletion client/context/context.go
Original file line number Diff line number Diff line change
Expand Up @@ -243,7 +243,7 @@ func (cliCtx CLIContext) GetCoinType(coinName string) (sdk.CoinType, error) {
}
if coinName == sdk.Iris {
coinType = sdk.IrisCoinType
} else if strings.HasPrefix(coinName, coinswap.FormatUniIdPrefix) {
} else if strings.HasPrefix(coinName, coinswap.FormatUniABSPrefix) {
return coinswap.GetUniCoinType(coinName)
} else {
params := asset.QueryTokenParams{
Expand Down
3 changes: 2 additions & 1 deletion types/coin.go
Original file line number Diff line number Diff line change
Expand Up @@ -564,7 +564,8 @@ func (coins Coins) Sort() Coins {

var (
// Denominations can be 3 ~ 21 characters long.
reCoinName = `(u\-)?(([a-z][a-z0-9]{2,7}|x)\.)?([a-z][a-z0-9]{2,7})`
reABS = `([a-z][0-9a-z]{2}[:])?`
reCoinName = reABS + `(([a-z][a-z0-9]{2,7}|x)\.)?([a-z][a-z0-9]{2,7})`
reDenom = reCoinName + `(-[a-z]{3,5})?`
reAmount = `[0-9]+(\.[0-9]+)?`
reSpace = `[[:space:]]*`
Expand Down
10 changes: 8 additions & 2 deletions types/coin_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -407,6 +407,12 @@ func TestParse(t *testing.T) {
{"11me coin, 12you coin", false, nil}, // no spaces in coin names
{"1.2btc", false, nil}, // amount must be integer
{"5foo-bar", true, Coins{{"foo-bar", NewInt(5)}}},
{"5uni:gdex.eth-min", true, Coins{{"uni:gdex.eth-min", NewInt(5)}}},
{"1un:x.btc", false, Coins{{"un:x.btc", NewInt(1)}}},
{"1uni:x.btc", true, Coins{{"uni:x.btc", NewInt(1)}}},
{"1 uni:x.btc", true, Coins{{"uni:x.btc", NewInt(1)}}},
{"1uni:x.btc-min", true, Coins{{"uni:x.btc-min", NewInt(1)}}},
{"1uni:iris-atto", true, Coins{{"uni:iris-atto", NewInt(1)}}},
}

for tcIndex, tc := range cases {
Expand Down Expand Up @@ -518,7 +524,7 @@ func TestIsCoinNameValid(t *testing.T) {
{"standard native", "abc", true},
{"standard external", "x.abc", true},
{"standard gateway", "gdex.abc", true},
{"standard uni", "u-gdex.abc", true},
{"standard uni", "uni:gdex.abc", true},
{"with-suffix", "iris-atto", false},
{"with-suffix-min", "abc-min", false},
}
Expand All @@ -544,7 +550,7 @@ func TestIsCoinMinDenomValid(t *testing.T) {
{"standard native", "abc-min", true},
{"standard external", "x.abc-min", true},
{"standard gateway", "gdex.abc-min", true},
{"standard uni", "u-gdex.abc-min", true},
{"standard uni", "uni:gdex.abc-min", true},
{"non-suffix", "iris", false},
{"non-suffix !iris", "abc", false},
}
Expand Down
7 changes: 3 additions & 4 deletions types/coin_type_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -61,15 +61,15 @@ func TestGetCoin(t *testing.T) {
func TestGetCoinName(t *testing.T) {
testData := []struct {
name, coinStr, expectName string
expectPass bool
expectPass bool
}{
{"standard", "1000iris", "iris", true},
{"with -", "1000iris-atto", "iris", true},
{"with gateway", "1000gdex.btc-min", "gdex.btc", true},
{"with x.", "1000x.btc-min", "x.btc", true},
{"with decimal", "1000.001gdex.btc-min", "gdex.btc", true},
{"with decimal and numeric", "1000.001gdex1.btc1d-min", "gdex1.btc1d", true},
{"with u-", "1000.001u-btc-min", "u-btc", true},
{"with uni:", "1000.001uni:btc-min", "uni:btc", true},
{"invalid", "1000.001iris-min", "", false},
}

Expand All @@ -92,10 +92,9 @@ func TestGetCoinNameByDenom(t *testing.T) {
{"with -", "iris-atto", "iris", true},
{"with gateway", "gdex.btc-min", "gdex.btc", true},
{"with x.", "x.btc-min", "x.btc", true},
{"with u-", "u-btc-min", "u-btc", true},
{"with uni:", "uni:btc-min", "uni:btc", true},
{"invalid 1", "iris-min", "", false},
{"invalid 2", "iris", "iris", false},

}

for _, td := range testData {
Expand Down