Token Tokenomics will be like this: Buy: 0% Sell/Transfer: 5% and 5% goes to charity address. This is the token contract:https://bscscan.com/address/0xfe03a2004648886987cf4b8fd433b1b132740121#code This token already applied the 0 buy fee and 5% fee on sell, but the missing puzzle is the fee for transferring token from one address to another. Any help or advice willbe a big help.
Asked
Active
Viewed 1,136 times
1
-
You may need to use a fixed-point math library. See PRBMath. – Paul Razvan Berg Sep 02 '22 at 10:32
1 Answers
1
This should work
function _transfer(
address sender,
address recipient,
uint256 amount
) internal virtual {
require(sender != address(0), "ERC20: transfer from the zero address");
require(recipient != address(0), "ERC20: transfer to the zero address");
uint256 senderBalance = _balances[sender];
require(senderBalance >= amount, "ERC20: transfer amount exceeds balance");
unchecked {
_balances[sender] = senderBalance.sub(amount);
}
bool takeFee = true;
if (_isExcludedFromFee[sender]) {
takeFee = false;
}
if(sender == pairAddress || !takeFee){ //checks if the sender is the uniswap pair or if its excluded from fees, doesnt take any fees if one of these conditions are true.
_balances[recipient] = _balances[recipient].add(amount);
emit Transfer(sender, recipient, amount);
}
else { // takes the fees normally otherwise
uint256 taxFee = amount.mul(dexTaxFee).div(10000);
_balances[taxAddress] = _balances[taxAddress].add(taxFee);
emit Transfer(sender, taxAddress, taxFee);
amount = amount.sub(taxFee);
_balances[recipient] = _balances[recipient].add(amount);
emit Transfer(sender, recipient, amount);
}
}
Foxxxey
- 4,307
- 1
- 6
- 22
-
hi @Foxxxey, does changing the
transfer()function break the ERC20 convention? Will you still be able to add your token to Dex after that? – foufrix Oct 06 '22 at 16:32 -
It doesn't break the spec in itself, but it makes it so when you're transferring tokens, the amount received is less than the amount sent, which can certainly break some contracts. For example, uniswap v2 supports that but uniswap v3 doesnt (well, the router doesnt). – Foxxxey Oct 06 '22 at 19:23
-
ok thanks for the specification, so depends on dex, and need to check manually where it will break. – foufrix Oct 07 '22 at 07:44