как написать смарт-контракт, чтобы адрес получателя оплачивал комиссию за газ за транзакцию, а не с адреса отправителя. скажем, адрес «A» отправляет 10ETH на адрес «B», если плата за газ за транзакцию составляет 1 ETH, то на адрес «B» будет отправлено только 9ETH. 1 ETH будет возвращен на адрес «А». пожалуйста, у кого-нибудь есть какие-либо идеи, пожалуйста, поделитесь справочной ссылкой или любой статьей, связанной с этим. Заранее спасибо.
Вы можете использовать gasleft() в начале и в конце контракта, чтобы увидеть, сколько газа было использовано. Постоянная стоимость транзакции составляет 21 тысяча и еще 21 тысяча за перевод eth, который необходимо сделать после расчета того, сколько вам нужно «возвратить». Вы можете получить стоимость газа из tx.gasPrice, которую необходимо умножить на сумму, после чего вы получите стоимость контракта.
Вы не можете взять eth с адреса назначения для возмещения, поэтому для этого вы просто вычтете стоимость контрактного газа из суммы. Вы отправляете это по назначению. Затем на балансе контракта у вас есть некоторое количество eth, которое будет комиссией (приблизительно), поэтому вы отправляете весь баланс из кошелька контракта в источник.