Skip to content

Commit

Permalink
Merge branch 'main' into ud/ban-wasm-to-evm
Browse files Browse the repository at this point in the history
  • Loading branch information
Unique-Divine authored Jan 10, 2025
2 parents 5ce2608 + 1ed351f commit 3d41225
Show file tree
Hide file tree
Showing 2 changed files with 17 additions and 5 deletions.
1 change: 1 addition & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -75,6 +75,7 @@ needed to include double quotes around the hexadecimal string.
- [#2156](https://github.com/NibiruChain/nibiru/pull/2156) - test(evm-e2e): add E2E test using the Nibiru Oracle's ChainLink impl
- [#2157](https://github.com/NibiruChain/nibiru/pull/2157) - fix(evm): Fix unit inconsistency related to AuthInfo.Fee and txData.Fee using effective fee
- [#2159](https://github.com/NibiruChain/nibiru/pull/2159) - chore(evm): Augment the Wasm msg handler so that wasm contracts cannot send MsgEthereumTx
- [#2160](https://github.com/NibiruChain/nibiru/pull/2160) - fix(evm-precompile): use bank.MsgServer Send in precompile IFunToken.bankMsgSend

#### Nibiru EVM | Before Audit 2 - 2024-12-06

Expand Down
21 changes: 16 additions & 5 deletions x/evm/precompile/funtoken.go
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,8 @@ import (

"cosmossdk.io/math"
sdk "github.com/cosmos/cosmos-sdk/types"
bankkeeper "github.com/cosmos/cosmos-sdk/x/bank/keeper"
bank "github.com/cosmos/cosmos-sdk/x/bank/types"
gethabi "github.com/ethereum/go-ethereum/accounts/abi"
gethcommon "github.com/ethereum/go-ethereum/common"
"github.com/ethereum/go-ethereum/core/vm"
Expand Down Expand Up @@ -125,6 +127,10 @@ type precompileFunToken struct {
// /// @param to the receiving Nibiru base account address as a string
// function sendToBank(address erc20, uint256 amount, string memory to) external;
// ```
//
// Because [sendToBank] uses "SendCoinsFromModuleToAccount" to send Bank Coins,
// this method correctly avoids sending funds to addresses blocked by the Bank
// module.
func (p precompileFunToken) sendToBank(
startResult OnRunStartResult,
caller gethcommon.Address,
Expand Down Expand Up @@ -701,9 +707,6 @@ func (p precompileFunToken) bankMsgSend(
if err != nil {
return nil, ErrInvalidArgs(err)
}
if amount.Sign() != 1 {
return nil, fmt.Errorf("msgSend amount must be positive")
}

// parse toStr (bech32 or hex)
toEthAddr, e := parseToAddr(toStr)
Expand All @@ -715,8 +718,16 @@ func (p precompileFunToken) bankMsgSend(

// do the bank send
coin := sdk.NewCoins(sdk.NewCoin(denom, math.NewIntFromBigInt(amount)))
if err := p.evmKeeper.Bank.SendCoins(
ctx, fromBech32, toBech32, coin,
bankMsg := &bank.MsgSend{
FromAddress: fromBech32.String(),
ToAddress: toBech32.String(),
Amount: coin,
}
if err := bankMsg.ValidateBasic(); err != nil {
return nil, err
}
if _, err := bankkeeper.NewMsgServerImpl(p.evmKeeper.Bank).Send(
sdk.WrapSDKContext(ctx), bankMsg,
); err != nil {
return nil, fmt.Errorf("bankMsgSend: %w", err)
}
Expand Down

0 comments on commit 3d41225

Please sign in to comment.