GOOGLE ADS

вторник, 12 апреля 2022 г.

Как добавить «комиссию за транзакцию» в смарт-контракты ERC20 или BEP20?

Есть новые токены, которые «взимают комиссию за транзакцию» помимо обычной платы за газ 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);
}

Комментариев нет:

Отправить комментарий

Laravel Datatable addColumn returns ID of one record only

Я пытаюсь использовать Yajra Datatable для интеграции DataTable на свой веб-сайт. Я смог отобразить таблицу, но столкнулся с проблемой. В по...