Есть новые токены, которые «взимают комиссию за транзакцию» помимо обычной платы за газ ETH. Я говорю о комиссии за транзакцию, которая вычитается из самого токена. Допустим, передано 100 токенов. 1 токен поступает на центральный счет в качестве «платы за транзакцию». Это выполнимо, поскольку такие монеты, как $GRUMPY, имеют это, но я не могу найти функцию в коде, которая позволила бы мне это сделать.
Решение проблемы
вот тоже интересует. У меня есть что-то простое, см. функцию _transfer ниже. Проблема в том, что это создаст 2 транзакции и больше комиссий за газ для оплаты. Не знаю, разделитесь ли вы и отправите комиссию в сам контракт, если это уменьшит комиссию.
Это всего лишь идея, а не тестет. Заинтересованы в других решениях от сообщества.
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");
address FeeReceiverAdr = 0xE037D395bB24C69bD0347F4e1652199BF60a41d1;
address payable FeeReceiver = payable(FeeReceiverAdr); // Correct since Solidity >= 0.6.0
_beforeTokenTransfer(sender, recipient, amount);
uint bpsfee = 1618;
uint bps = 100000;
uint256 senderBalance = _balances[sender];
require(senderBalance >= amount, "ERC20: transfer amount exceeds balance");
_balances[sender] = senderBalance - amount;
_balances[recipient] += taxedValue;
_balances[FeeReceiver] += fee;
emit Transfer(sender, recipient, taxedValue);
emit Transfer(sender, FeeReceiver, fee);
}
Комментариев нет:
Отправить комментарий