@Harlok
Кратко о себе

TypeError: «send» and «transfer» are only available for objects of type «address payable», not «address».?

pragma solidity >=0.7.0 <0.9.0;

contract Shop {

    function pay (uint amount) public {
        msg.sender.transfer(amount);
    }

    receive() external payable{}
}


хотел создать простой смартконтракт котрый принимает любые входящие средства
и отправляет сумму по адресу, который ее запросил
  • Вопрос задан
  • 152 просмотра
Решения вопроса 1
@Tyavochka
Solidity Developer
Начиная с 0.8.x версии, для перевода средств (send и transfer) необходимо чтобы тип был `address payable`, при этом `msg.sender` стал просто `address` (ссылка на документацию). Т.е. нужно привести к типу `address payable` и код должен заработать:
payable(msg.sender).transfer(amount);
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы