Require on address(this).transfer(msg.value) 抛出错误
Require on address(this).transfer(msg.value) throws error
需要帮助理解为什么 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.There 不需要在 require 中使用传递函数,默认情况下,如果传递没有发生,它会抛出错误。
如果你想保留在 require() 中,你可以使用 .send() 函数。
2.By 通过 payable 函数发送的默认 eth 将存储在合约本身中,因此无需使用 address(this).transfer(msg.value)。相反,您可以使用其他地址来传输以太币。
3.And 将(数据)传递给 transfer() 函数不正确。
需要帮助理解为什么 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.There 不需要在 require 中使用传递函数,默认情况下,如果传递没有发生,它会抛出错误。 如果你想保留在 require() 中,你可以使用 .send() 函数。
2.By 通过 payable 函数发送的默认 eth 将存储在合约本身中,因此无需使用 address(this).transfer(msg.value)。相反,您可以使用其他地址来传输以太币。
3.And 将(数据)传递给 transfer() 函数不正确。