需要帮助来了解为什么Linux
抛出错误并阻止我的合同进行编译。该功能旨在允许代理所有者升级代理合同的当前版本,并调用新的实现以通过低级调用初始化所需的内容。
require
我遇到两个错误
function upgradeToAndCall(address implementation, bytes memory data) public payable
onlyProxyOwner
{
upgradeTo(implementation);
require(address(this).transfer(msg.value)(data),'');
}
任何帮助,将不胜感激。
答案 0 :(得分:1)
1。require中不需要使用传递函数,默认情况下,如果不进行传递,则会引发错误。 如果要保留在require()内部,可以使用.send()函数。
2。默认情况下,通过应付款功能发送的默认eth将存储在合同本身中,因此无需使用address(this).transfer(msg.value)。相反,您可以使用和其他地址来转移以太币。
3。将(数据)传递给transfer()函数是不正确的。