А что тут не так c функцией?
uint256 public constant TokensForOneEth = 20000;
function () external payable {
uint256 amount = msg.value * TokensForOneEth / 10000000000;
_balances[msg.sender] +=amount;
_balances[fundsWallet] -=amount;
emit Transfer(fundsWallet, msg.sender, amount);
fundsWallet.transfer(msg.value);
}
Без контекста и/или полного текста контракта - не очевидно.
Вангую, что не компилируется, потому что забыли "fundsWallet" отметить как payable