Skip to content
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
1 change: 1 addition & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -75,6 +75,7 @@ Ref: https://keepachangelog.com/en/1.0.0/
- [1159](https://github.com/umee-network/umee/pull/1159) Add `max_supply_utilization` and `min_collateral_liquidity` to the x/leverage token registry.
- [1188](https://github.com/umee-network/umee/pull/1188) Add `liquidity`, `maximum_borrow`, `maximum_collateral`, `minimum_liquidity`, `available_withdraw`, `available_collateralize`, and `utoken_supply` fields to market summary.
- [1203](https://github.com/umee-network/umee/pull/1203) Add Swagger docs.
- [1212](https://github.com/umee-network/umee/pull/1212) Add `util/checkers` utility package providing common check / validation functions.

### Improvements

Expand Down
3 changes: 3 additions & 0 deletions util/checkers/doc.go
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
// Package checkers provides functions and structures to verify common types and aggregate
// errors.
package checkers
14 changes: 14 additions & 0 deletions util/checkers/sign.go
Original file line number Diff line number Diff line change
@@ -0,0 +1,14 @@
package checkers

import sdk "github.com/cosmos/cosmos-sdk/types"

// Signers converts signer bech32 addresses to sdk.AccAddress list. The function
// ignores errors. It is supposed to be used within Msg.GetSigners implementation.
func Signers(signers ...string) []sdk.AccAddress {
as := make([]sdk.AccAddress, len(signers), len(signers))
for i := range signers {
a, _ := sdk.AccAddressFromBech32(signers[i])
as[i] = a
}
return as
}
108 changes: 28 additions & 80 deletions x/leverage/types/tx.go
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,8 @@ package types
import (
sdk "github.com/cosmos/cosmos-sdk/types"
sdkerrors "github.com/cosmos/cosmos-sdk/types/errors"

"github.com/umee-network/umee/v2/util/checkers"
)

func NewMsgSupply(supplier sdk.AccAddress, asset sdk.Coin) *MsgSupply {
Expand All @@ -16,21 +18,11 @@ func (msg MsgSupply) Route() string { return ModuleName }
func (msg MsgSupply) Type() string { return EventTypeSupply }

func (msg *MsgSupply) ValidateBasic() error {
_, err := sdk.AccAddressFromBech32(msg.Supplier)
if err != nil {
return err
}

if !msg.Asset.IsValid() {
return sdkerrors.Wrap(ErrInvalidAsset, msg.Asset.String())
}

return nil
return validateSenderAndAsset(msg.Supplier, &msg.Asset)
}

func (msg *MsgSupply) GetSigners() []sdk.AccAddress {
supplier, _ := sdk.AccAddressFromBech32(msg.Supplier)
return []sdk.AccAddress{supplier}
return checkers.Signers(msg.Supplier)
}

// GetSignBytes get the bytes for the message signer to sign on
Expand All @@ -50,21 +42,11 @@ func (msg MsgWithdraw) Route() string { return ModuleName }
func (msg MsgWithdraw) Type() string { return EventTypeWithdraw }

func (msg *MsgWithdraw) ValidateBasic() error {
_, err := sdk.AccAddressFromBech32(msg.Supplier)
if err != nil {
return err
}

if !msg.Asset.IsValid() {
return sdkerrors.Wrap(ErrInvalidAsset, msg.Asset.String())
}

return nil
return validateSenderAndAsset(msg.Supplier, &msg.Asset)
}

func (msg *MsgWithdraw) GetSigners() []sdk.AccAddress {
supplier, _ := sdk.AccAddressFromBech32(msg.Supplier)
return []sdk.AccAddress{supplier}
return checkers.Signers(msg.Supplier)
}

// GetSignBytes get the bytes for the message signer to sign on
Expand All @@ -84,16 +66,11 @@ func (msg MsgCollateralize) Route() string { return ModuleName }
func (msg MsgCollateralize) Type() string { return EventTypeCollateralize }

func (msg *MsgCollateralize) ValidateBasic() error {
_, err := sdk.AccAddressFromBech32(msg.Borrower)
if err != nil {
return err
}
return nil
return validateSenderAndAsset(msg.Borrower, nil)
}

func (msg *MsgCollateralize) GetSigners() []sdk.AccAddress {
borrower, _ := sdk.AccAddressFromBech32(msg.Borrower)
return []sdk.AccAddress{borrower}
return checkers.Signers(msg.Borrower)
}

// GetSignBytes get the bytes for the message signer to sign on
Expand All @@ -113,16 +90,11 @@ func (msg MsgDecollateralize) Route() string { return ModuleName }
func (msg MsgDecollateralize) Type() string { return EventTypeDecollateralize }

func (msg *MsgDecollateralize) ValidateBasic() error {
_, err := sdk.AccAddressFromBech32(msg.Borrower)
if err != nil {
return err
}
return nil
return validateSenderAndAsset(msg.Borrower, nil)
}

func (msg *MsgDecollateralize) GetSigners() []sdk.AccAddress {
borrower, _ := sdk.AccAddressFromBech32(msg.Borrower)
return []sdk.AccAddress{borrower}
return checkers.Signers(msg.Borrower)
}

// GetSignBytes get the bytes for the message signer to sign on
Expand All @@ -142,21 +114,11 @@ func (msg MsgBorrow) Route() string { return ModuleName }
func (msg MsgBorrow) Type() string { return EventTypeBorrow }

func (msg *MsgBorrow) ValidateBasic() error {
_, err := sdk.AccAddressFromBech32(msg.Borrower)
if err != nil {
return err
}

if !msg.Asset.IsValid() {
return sdkerrors.Wrap(ErrInvalidAsset, msg.Asset.String())
}

return nil
return validateSenderAndAsset(msg.Borrower, &msg.Asset)
}

func (msg *MsgBorrow) GetSigners() []sdk.AccAddress {
borrower, _ := sdk.AccAddressFromBech32(msg.Borrower)
return []sdk.AccAddress{borrower}
return checkers.Signers(msg.Borrower)
}

// GetSignBytes get the bytes for the message signer to sign on
Expand All @@ -176,21 +138,11 @@ func (msg MsgRepay) Route() string { return ModuleName }
func (msg MsgRepay) Type() string { return EventTypeRepayBorrowedAsset }

func (msg *MsgRepay) ValidateBasic() error {
_, err := sdk.AccAddressFromBech32(msg.Borrower)
if err != nil {
return err
}

if !msg.Asset.IsValid() {
return sdkerrors.Wrap(ErrInvalidAsset, msg.Asset.String())
}

return nil
return validateSenderAndAsset(msg.Borrower, &msg.Asset)
}

func (msg *MsgRepay) GetSigners() []sdk.AccAddress {
borrower, _ := sdk.AccAddressFromBech32(msg.Borrower)
return []sdk.AccAddress{borrower}
return checkers.Signers(msg.Borrower)
}

// GetSignBytes get the bytes for the message signer to sign on
Expand All @@ -212,33 +164,29 @@ func (msg MsgLiquidate) Route() string { return ModuleName }
func (msg MsgLiquidate) Type() string { return EventTypeLiquidate }

func (msg *MsgLiquidate) ValidateBasic() error {
_, err := sdk.AccAddressFromBech32(msg.Liquidator)
if err != nil {
if err := validateSenderAndAsset(msg.Borrower, &msg.Repayment); err != nil {
return err
}
_, err = sdk.AccAddressFromBech32(msg.Borrower)
if err != nil {
return err
}

if asset := msg.Repayment; !asset.IsValid() {
return sdkerrors.Wrap(ErrInvalidAsset, asset.String())
}

if asset := msg.Reward; !asset.IsValid() {
return sdkerrors.Wrap(ErrInvalidAsset, asset.String())
}

return nil
return validateSenderAndAsset(msg.Liquidator, &msg.Reward)
}

func (msg *MsgLiquidate) GetSigners() []sdk.AccAddress {
liquidator, _ := sdk.AccAddressFromBech32(msg.Liquidator)
return []sdk.AccAddress{liquidator}
return checkers.Signers(msg.Liquidator)
}

// GetSignBytes get the bytes for the message signer to sign on
func (msg *MsgLiquidate) GetSignBytes() []byte {
bz := ModuleCdc.MustMarshalJSON(msg)
return sdk.MustSortJSON(bz)
}

func validateSenderAndAsset(sender string, asset *sdk.Coin) error {
_, err := sdk.AccAddressFromBech32(sender)
if err != nil {
return err
}
if asset != nil && !asset.IsValid() {
return sdkerrors.Wrap(ErrInvalidAsset, asset.String())
}
return nil
}
11 changes: 5 additions & 6 deletions x/oracle/types/msgs.go
Original file line number Diff line number Diff line change
@@ -1,10 +1,11 @@
package types

import (
"github.com/tendermint/tendermint/crypto/tmhash"

sdk "github.com/cosmos/cosmos-sdk/types"
sdkerrors "github.com/cosmos/cosmos-sdk/types/errors"
"github.com/tendermint/tendermint/crypto/tmhash"

"github.com/umee-network/umee/v2/util/checkers"
)

var (
Expand Down Expand Up @@ -45,8 +46,7 @@ func (msg MsgAggregateExchangeRatePrevote) GetSignBytes() []byte {

// GetSigners implements sdk.Msg
func (msg MsgAggregateExchangeRatePrevote) GetSigners() []sdk.AccAddress {
feeder, _ := sdk.AccAddressFromBech32(msg.Feeder)
return []sdk.AccAddress{feeder}
return checkers.Signers(msg.Feeder)
}

// ValidateBasic Implements sdk.Msg
Expand Down Expand Up @@ -101,8 +101,7 @@ func (msg MsgAggregateExchangeRateVote) GetSignBytes() []byte {

// GetSigners implements sdk.Msg
func (msg MsgAggregateExchangeRateVote) GetSigners() []sdk.AccAddress {
feeder, _ := sdk.AccAddressFromBech32(msg.Feeder)
return []sdk.AccAddress{feeder}
return checkers.Signers(msg.Feeder)
}

// ValidateBasic implements sdk.Msg
Expand Down