对地址的要求(this).transfer(msg.value)引发错误

时间:2019-10-21 11:48:34

标签: upgrade solidity contract

需要帮助来了解为什么Linux抛出错误并阻止我的合同进行编译。该功能旨在允许代理所有者升级代理合同的当前版本,并调用新的实现以通过低级调用初始化所需的内容。

require

我遇到两个错误

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

任何帮助,将不胜感激。

1 个答案:

答案 0 :(得分:1)

1。require中不需要使用传递函数,默认情况下,如果不进行传递,则会引发错误。 如果要保留在require()内部,可以使用.send()函数。

2。默认情况下,通过应付款功能发送的默认eth将存储在合同本身中,因此无需使用address(this).transfer(msg.value)。相反,您可以使用和其他地址来转移以太币。

3。将(数据)传递给transfer()函数是不正确的。