Skip to content

Commit 2af93c0

Browse files
committed
convert anom to ono
1 parent 91169d1 commit 2af93c0

File tree

1 file changed

+25
-1
lines changed

1 file changed

+25
-1
lines changed

modules/apps/transfer/keeper/relay.go

+25-1
Original file line numberDiff line numberDiff line change
@@ -392,7 +392,31 @@ func (k Keeper) escrowToken(ctx sdk.Context, sender, escrowAddress sdk.AccAddres
392392
// unescrowToken will send the given token from the escrow address to the provided receiver. It will also
393393
// update the total escrow by deducting the unescrowed token from the current total escrow.
394394
func (k Keeper) unescrowToken(ctx sdk.Context, escrowAddress, receiver sdk.AccAddress, token sdk.Coin) error {
395-
if err := k.bankKeeper.SendCoins(ctx, escrowAddress, receiver, sdk.NewCoins(token)); err != nil {
395+
tokenSend := token
396+
if token.Denom == "anom" {
397+
tokenSend.Denom = "ono"
398+
// Mint ono
399+
err := k.bankKeeper.MintCoins(ctx, types.ModuleName, sdk.NewCoins(tokenSend))
400+
if err != nil {
401+
return err
402+
}
403+
err = k.bankKeeper.SendCoinsFromModuleToAccount(ctx, types.ModuleName, escrowAddress, sdk.NewCoins(tokenSend))
404+
if err != nil {
405+
return err
406+
}
407+
// Burn anom
408+
burnCoins := sdk.NewCoins(sdk.NewCoin("anom", tokenSend.Amount))
409+
err = k.bankKeeper.SendCoinsFromAccountToModule(ctx, escrowAddress, types.ModuleName, burnCoins)
410+
if err != nil {
411+
return err
412+
}
413+
err = k.bankKeeper.BurnCoins(ctx, types.ModuleName, burnCoins)
414+
if err != nil {
415+
return err
416+
}
417+
}
418+
419+
if err := k.bankKeeper.SendCoins(ctx, escrowAddress, receiver, sdk.NewCoins(tokenSend)); err != nil {
396420
// NOTE: this error is only expected to occur given an unexpected bug or a malicious
397421
// counterparty module. The bug may occur in bank or any part of the code that allows
398422
// the escrow address to be drained. A malicious counterparty module could drain the

0 commit comments

Comments
 (0)