Требовать по адресу (это) .Transfer (msg.value) выдает ошибку - PullRequest
0 голосов
/ 21 октября 2019

нужна помощь, чтобы понять, почему require выдает ошибку и мешает компилировать мой контракт. Функция предназначена для того, чтобы позволить владельцу прокси обновить текущую версию контракта с прокси и вызвать новую реализацию, чтобы инициализировать все, что нужно, посредством низкоуровневого вызова.

function upgradeToAndCall(address implementation, bytes memory data) public payable
    onlyProxyOwner
    {
      upgradeTo(implementation);
      require(address(this).transfer(msg.value)(data),'');
  }

Две ошибки, которые я получаю

No matching declaration found after argument-dependent lookup.

Type is not callable

Любая помощь с этим будет принята с благодарностью.

1 Ответ

1 голос
/ 22 октября 2019

1. Нет необходимости использовать функцию передачи в require, по умолчанию она выдает ошибку, если передача не происходит. Вы можете использовать функцию .send (), если хотите сохранить внутри require ().

2. По умолчанию eth, отправленный через функцию payable, будет сохранен в самом договоре, поэтому нет необходимости использовать адрес (это).transfer (msg.value). Вместо этого вы можете использовать и другой адрес для передачи эфира.

3. И передача (данные) в функцию Transfer () неверна.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...