Merge pull request #778 from CosmWasm/public_utils

Make type conversion helpers public
This commit is contained in:
Ethan Frey
2022-03-09 12:27:40 +01:00
committed by GitHub
3 changed files with 18 additions and 15 deletions

View File

@@ -185,7 +185,7 @@ func (h IBCRawPacketHandler) DispatchMsg(ctx sdk.Context, _ sdk.AccAddress, cont
contractIBCChannelID,
channelInfo.Counterparty.PortId,
channelInfo.Counterparty.ChannelId,
convertWasmIBCTimeoutHeightToCosmosHeight(msg.IBC.SendPacket.Timeout.Block),
ConvertWasmIBCTimeoutHeightToCosmosHeight(msg.IBC.SendPacket.Timeout.Block),
msg.IBC.SendPacket.Timeout.Timestamp,
)
return nil, nil, h.channelKeeper.SendPacket(ctx, channelCap, packet)
@@ -205,7 +205,7 @@ func (m MessageHandlerFunc) DispatchMsg(ctx sdk.Context, contractAddr sdk.AccAdd
func NewBurnCoinMessageHandler(burner types.Burner) MessageHandlerFunc {
return func(ctx sdk.Context, contractAddr sdk.AccAddress, _ string, msg wasmvmtypes.CosmosMsg) (events []sdk.Event, data [][]byte, err error) {
if msg.Bank != nil && msg.Bank.Burn != nil {
coins, err := convertWasmCoinsToSdkCoins(msg.Bank.Burn.Amount)
coins, err := ConvertWasmCoinsToSdkCoins(msg.Bank.Burn.Amount)
if err != nil {
return nil, nil, err
}

View File

@@ -111,7 +111,7 @@ func EncodeBankMsg(sender sdk.AccAddress, msg *wasmvmtypes.BankMsg) ([]sdk.Msg,
if len(msg.Send.Amount) == 0 {
return nil, nil
}
toSend, err := convertWasmCoinsToSdkCoins(msg.Send.Amount)
toSend, err := ConvertWasmCoinsToSdkCoins(msg.Send.Amount)
if err != nil {
return nil, err
}
@@ -149,7 +149,7 @@ func EncodeDistributionMsg(sender sdk.AccAddress, msg *wasmvmtypes.DistributionM
func EncodeStakingMsg(sender sdk.AccAddress, msg *wasmvmtypes.StakingMsg) ([]sdk.Msg, error) {
switch {
case msg.Delegate != nil:
coin, err := convertWasmCoinToSdkCoin(msg.Delegate.Amount)
coin, err := ConvertWasmCoinToSdkCoin(msg.Delegate.Amount)
if err != nil {
return nil, err
}
@@ -161,7 +161,7 @@ func EncodeStakingMsg(sender sdk.AccAddress, msg *wasmvmtypes.StakingMsg) ([]sdk
return []sdk.Msg{&sdkMsg}, nil
case msg.Redelegate != nil:
coin, err := convertWasmCoinToSdkCoin(msg.Redelegate.Amount)
coin, err := ConvertWasmCoinToSdkCoin(msg.Redelegate.Amount)
if err != nil {
return nil, err
}
@@ -173,7 +173,7 @@ func EncodeStakingMsg(sender sdk.AccAddress, msg *wasmvmtypes.StakingMsg) ([]sdk
}
return []sdk.Msg{&sdkMsg}, nil
case msg.Undelegate != nil:
coin, err := convertWasmCoinToSdkCoin(msg.Undelegate.Amount)
coin, err := ConvertWasmCoinToSdkCoin(msg.Undelegate.Amount)
if err != nil {
return nil, err
}
@@ -208,7 +208,7 @@ func EncodeStargateMsg(unpacker codectypes.AnyUnpacker) StargateEncoder {
func EncodeWasmMsg(sender sdk.AccAddress, msg *wasmvmtypes.WasmMsg) ([]sdk.Msg, error) {
switch {
case msg.Execute != nil:
coins, err := convertWasmCoinsToSdkCoins(msg.Execute.Funds)
coins, err := ConvertWasmCoinsToSdkCoins(msg.Execute.Funds)
if err != nil {
return nil, err
}
@@ -221,7 +221,7 @@ func EncodeWasmMsg(sender sdk.AccAddress, msg *wasmvmtypes.WasmMsg) ([]sdk.Msg,
}
return []sdk.Msg{&sdkMsg}, nil
case msg.Instantiate != nil:
coins, err := convertWasmCoinsToSdkCoins(msg.Instantiate.Funds)
coins, err := ConvertWasmCoinsToSdkCoins(msg.Instantiate.Funds)
if err != nil {
return nil, err
}
@@ -271,7 +271,7 @@ func EncodeIBCMsg(portSource types.ICS20TransferPortSource) func(ctx sdk.Context
Signer: sender.String(),
}}, nil
case msg.Transfer != nil:
amount, err := convertWasmCoinToSdkCoin(msg.Transfer.Amount)
amount, err := ConvertWasmCoinToSdkCoin(msg.Transfer.Amount)
if err != nil {
return nil, sdkerrors.Wrap(err, "amount")
}
@@ -281,7 +281,7 @@ func EncodeIBCMsg(portSource types.ICS20TransferPortSource) func(ctx sdk.Context
Token: amount,
Sender: sender.String(),
Receiver: msg.Transfer.ToAddress,
TimeoutHeight: convertWasmIBCTimeoutHeightToCosmosHeight(msg.Transfer.Timeout.Block),
TimeoutHeight: ConvertWasmIBCTimeoutHeightToCosmosHeight(msg.Transfer.Timeout.Block),
TimeoutTimestamp: msg.Transfer.Timeout.Timestamp,
}
return []sdk.Msg{msg}, nil
@@ -311,17 +311,19 @@ func EncodeGovMsg(sender sdk.AccAddress, msg *wasmvmtypes.GovMsg) ([]sdk.Msg, er
return []sdk.Msg{vote}, nil
}
func convertWasmIBCTimeoutHeightToCosmosHeight(ibcTimeoutBlock *wasmvmtypes.IBCTimeoutBlock) ibcclienttypes.Height {
// ConvertWasmIBCTimeoutHeightToCosmosHeight converts a wasmvm type ibc timeout height to ibc module type height
func ConvertWasmIBCTimeoutHeightToCosmosHeight(ibcTimeoutBlock *wasmvmtypes.IBCTimeoutBlock) ibcclienttypes.Height {
if ibcTimeoutBlock == nil {
return ibcclienttypes.NewHeight(0, 0)
}
return ibcclienttypes.NewHeight(ibcTimeoutBlock.Revision, ibcTimeoutBlock.Height)
}
func convertWasmCoinsToSdkCoins(coins []wasmvmtypes.Coin) (sdk.Coins, error) {
// ConvertWasmCoinsToSdkCoins converts the wasm vm type coins to sdk type coins
func ConvertWasmCoinsToSdkCoins(coins []wasmvmtypes.Coin) (sdk.Coins, error) {
var toSend sdk.Coins
for _, coin := range coins {
c, err := convertWasmCoinToSdkCoin(coin)
c, err := ConvertWasmCoinToSdkCoin(coin)
if err != nil {
return nil, err
}
@@ -330,7 +332,8 @@ func convertWasmCoinsToSdkCoins(coins []wasmvmtypes.Coin) (sdk.Coins, error) {
return toSend, nil
}
func convertWasmCoinToSdkCoin(coin wasmvmtypes.Coin) (sdk.Coin, error) {
// ConvertWasmCoinToSdkCoin converts a wasm vm type coin to sdk type coin
func ConvertWasmCoinToSdkCoin(coin wasmvmtypes.Coin) (sdk.Coin, error) {
amount, ok := sdk.NewIntFromString(coin.Amount)
if !ok {
return sdk.Coin{}, sdkerrors.Wrap(sdkerrors.ErrInvalidCoins, coin.Amount+coin.Denom)

View File

@@ -625,7 +625,7 @@ func TestConvertWasmCoinToSdkCoin(t *testing.T) {
}
for name, spec := range specs {
t.Run(name, func(t *testing.T) {
gotVal, gotErr := convertWasmCoinToSdkCoin(spec.src)
gotVal, gotErr := ConvertWasmCoinToSdkCoin(spec.src)
if spec.expErr {
require.Error(t, gotErr)
return