diff --git a/router/protocol_fee_swap.gno b/router/protocol_fee_swap.gno index 8bead3027..25bc1077a 100644 --- a/router/protocol_fee_swap.gno +++ b/router/protocol_fee_swap.gno @@ -81,12 +81,12 @@ func SetSwapFee(fee uint64) { setSwapFee(fee) - prevAddr, prevRealm := getPrev() + prevAddr, prevPkgPath := getPrev() std.Emit( "SetSwapFee", "prevAddr", prevAddr, - "prevRealm", prevRealm, + "prevRealm", prevPkgPath, "fee", ufmt.Sprintf("%d", fee), ) } @@ -98,7 +98,7 @@ func setSwapFee(fee uint64) { if fee > 10000 { panic(addDetailToError( errInvalidSwapFee, - ufmt.Sprintf("protocol_fee_swap.gno__setSwapFee() || fee(%d) must be in range 0 ~ 10000", fee), + ufmt.Sprintf("fee(%d) must be in range 0 ~ 10000", fee), )) } diff --git a/router/router_dry.gno b/router/router_dry.gno index 6d2699588..d9ad12a98 100644 --- a/router/router_dry.gno +++ b/router/router_dry.gno @@ -16,29 +16,25 @@ import ( func DrySwapRoute( inputToken string, outputToken string, - _amountSpecified string, // int256 + _amountSpecified string, swapType string, - strRouteArr string, // []string - quoteArr string, // []int -) string { // uint256 - if swapType != "EXACT_IN" && swapType != "EXACT_OUT" { - panic(addDetailToError( - errInvalidSwapType, - ufmt.Sprintf("router_dry.gno__DrySwapRoute() || unknown swapType(%s)", swapType), - )) - } + strRouteArr string, + quoteArr string, +) string { + assertNotASwapType(swapType) amountSpecified, err := i256.FromDecimal(_amountSpecified) if err != nil { panic(err.Error()) } + // TODO (@notJoon): Faster using byte comparison rather than strings.Split() in a small size string. routes := strings.Split(strRouteArr, ",") quotes := strings.Split(quoteArr, ",") validateInput(amountSpecified, swapType, routes, quotes) - if swapType == "EXACT_OUT" { + if swapType == ExactOut { amountSpecified = i256.Zero().Neg(amountSpecified) } @@ -46,20 +42,23 @@ func DrySwapRoute( resultAmountOut := u256.Zero() for i, route := range routes { - numHops := strings.Count(route, "*POOL*") + 1 - quote, _ := strconv.Atoi(quotes[i]) - - if numHops < 1 || numHops > 3 { + numHops := strings.Count(route, POOL_SEPARATOR) + 1 + quote, err := strconv.Atoi(quotes[i]) + if err != nil { panic(addDetailToError( errInvalidInput, - ufmt.Sprintf("router_dry.gno__DrySwapRoute() || number of hops(%d) must be 1~3", numHops), + ufmt.Sprintf("quote(%s) is not a valid integer", quotes[i]), )) } + assertHopsInRange(numHops) + toSwap := i256.Zero().Mul(amountSpecified, i256.NewInt(int64(quote))) toSwap = toSwap.Div(toSwap, i256.NewInt(100)) - if numHops == 1 { // SINGLE + // TODO (@notJoon): use pattern matching and fall-through + // TODO (@notJoon): Is it possible for an invalid SwapType to get this far? + if numHops == 1 { amountIn, amountOut := handleSingleSwap(route, toSwap, true) resultAmountIn = new(u256.Uint).Add(resultAmountIn, amountIn) resultAmountOut = new(u256.Uint).Add(resultAmountOut, amountOut) @@ -68,7 +67,6 @@ func DrySwapRoute( resultAmountIn = new(u256.Uint).Add(resultAmountIn, amountIn) resultAmountOut = new(u256.Uint).Add(resultAmountOut, amountOut) } - } return processResult(swapType, resultAmountIn, resultAmountOut, amountSpecified) @@ -76,20 +74,20 @@ func DrySwapRoute( func processResult(swapType string, resultAmountIn, resultAmountOut *u256.Uint, amountSpecified *i256.Int) string { switch swapType { - case "EXACT_IN": + case ExactIn: if !i256.FromUint256(resultAmountIn).Eq(amountSpecified) { return "-1" } return resultAmountOut.ToString() - case "EXACT_OUT": + case ExactOut: if i256.FromUint256(resultAmountOut).Lt(amountSpecified) { return "-1" } return resultAmountIn.ToString() default: - panic(addDetailToError( - errInvalidSwapType, - ufmt.Sprintf("router_dry.gno__processResult() || unknown swapType(%s)", swapType), - )) + assertNotASwapType(swapType) } + + // redundant return. + return "-1" } diff --git a/router/swap_inner.gno b/router/swap_inner.gno index 5e272b39a..e15baf53a 100644 --- a/router/swap_inner.gno +++ b/router/swap_inner.gno @@ -135,7 +135,7 @@ func getMinTick(fee uint32) int32 { default: panic(addDetailToError( errInvalidPoolFeeTier, - ufmt.Sprintf("swap_inner.gno__getMinTick() || unknown fee(%d)", fee), + ufmt.Sprintf("unknown fee(%d)", fee), )) } } @@ -153,7 +153,7 @@ func getMaxTick(fee uint32) int32 { default: panic(addDetailToError( errInvalidPoolFeeTier, - ufmt.Sprintf("swap_inner.gno__getMaxTick() || unknown fee(%d)", fee), + ufmt.Sprintf("unknown fee(%d)", fee), )) } } diff --git a/router/token_register.gno b/router/token_register.gno index ee68bccad..ed6883f9b 100644 --- a/router/token_register.gno +++ b/router/token_register.gno @@ -41,7 +41,7 @@ func RegisterGRC20Interface(pkgPath string, igrc20 GRC20Interface) { if !(prevAddr == consts.TOKEN_REGISTER || prevPath == consts.INIT_REGISTER_PATH || strings.HasPrefix(prevPath, "gno.land/r/g1er355fkjksqpdtwmhf5penwa82p0rhqxkkyhk5")) { panic(addDetailToError( errNoPermission, - ufmt.Sprintf("token_register.gno__RegisterGRC20Interface() || only register(%s) can register token, called from %s", consts.TOKEN_REGISTER, prevAddr), + ufmt.Sprintf("only register(%s) can register token, called from %s", consts.TOKEN_REGISTER, prevAddr), )) } @@ -51,7 +51,7 @@ func RegisterGRC20Interface(pkgPath string, igrc20 GRC20Interface) { if found { panic(addDetailToError( errAlreadyRegistered, - ufmt.Sprintf("token_register.gno__RegisterGRC20Interface() || token(%s) already registered", pkgPath), + ufmt.Sprintf("token(%s) already registered", pkgPath), )) } @@ -84,7 +84,7 @@ func transferByRegisterCall(pkgPath string, to std.Address, amount uint64) bool if !found { panic(addDetailToError( errNotRegistered, - ufmt.Sprintf("token_register.gno__transferByRegisterCall() || token(%s) not registered", pkgPath), + ufmt.Sprintf("token(%s) not registered", pkgPath), )) } @@ -98,7 +98,7 @@ func transferByRegisterCall(pkgPath string, to std.Address, amount uint64) bool } else { panic(addDetailToError( errLocked, - ufmt.Sprintf("token_register.gno__transferByRegisterCall() || expected locked(%t) to be false", locked), + ufmt.Sprintf("expected locked(%t) to be false", locked), )) } @@ -112,7 +112,7 @@ func transferFromByRegisterCall(pkgPath string, from, to std.Address, amount uin if !found { panic(addDetailToError( errNotRegistered, - ufmt.Sprintf("token_register.gno__transferFromByRegisterCall() || token(%s) not registered", pkgPath), + ufmt.Sprintf("token(%s) not registered", pkgPath), )) } @@ -126,7 +126,7 @@ func transferFromByRegisterCall(pkgPath string, from, to std.Address, amount uin } else { panic(addDetailToError( errLocked, - ufmt.Sprintf("token_register.gno__transferFromByRegisterCall() || expected locked(%t) to be false", locked), + ufmt.Sprintf("expected locked(%t) to be false", locked), )) } return true @@ -139,7 +139,7 @@ func balanceOfByRegisterCall(pkgPath string, owner std.Address) uint64 { if !found { panic(addDetailToError( errNotRegistered, - ufmt.Sprintf("token_register.gno__balanceOfByRegisterCall() || token(%s) not registered", pkgPath), + ufmt.Sprintf("token(%s) not registered", pkgPath), )) } @@ -154,7 +154,7 @@ func approveByRegisterCall(pkgPath string, spender std.Address, amount uint64) b if !found { panic(addDetailToError( errNotRegistered, - ufmt.Sprintf("token_register.gno__approveByRegisterCall() || token(%s) not registered", pkgPath), + ufmt.Sprintf("token(%s) not registered", pkgPath), )) } diff --git a/router/wrap_unwrap.gno b/router/wrap_unwrap.gno index fff3c00cf..2ead73164 100644 --- a/router/wrap_unwrap.gno +++ b/router/wrap_unwrap.gno @@ -13,14 +13,14 @@ func wrap(ugnotAmount uint64) { if ugnotAmount <= 0 { panic(addDetailToError( errWrapUnwrap, - ufmt.Sprintf("wrap.gno__wrap() || cannot wrap 0 ugnot"), + ufmt.Sprintf("cannot wrap 0 ugnot"), )) } if ugnotAmount < consts.UGNOT_MIN_DEPOSIT_TO_WRAP { panic(addDetailToError( errWugnotMinimum, - ufmt.Sprintf("wrap.gno__wrap() || amount(%d) < minimum(%d)", ugnotAmount, consts.UGNOT_MIN_DEPOSIT_TO_WRAP), + ufmt.Sprintf("amount(%d) < minimum(%d)", ugnotAmount, consts.UGNOT_MIN_DEPOSIT_TO_WRAP), )) }