pragma solidity ^0.4.23;
contract ApprovalContract {
address public sender;
address public receiver;
address public constant approver = 0x5AEDA56215b167893e80B4fE645BA6d5Bab767DE;
constructor() public {
// tbd
}
function deposit(address _receiver) external payable {
require(msg.value > 0);
sender = msg.sender;
receiver = _receiver;
}
function viewApprover() external pure returns(address){
return(approver);
}
function viewRe() external pure returns(address){
return(receiver);
}
function approve() external payable{
require(msg.sender == approver);
receiver.transfer(address(this).balance); // this line not working
}
}我得到了不可见的传输变量。
成员“传输”后找不到或不可见的后,依赖于参数查找的地址。
发布于 2018-12-05 13:22:33
使用
address payable public receiver;在声明的地址,您希望转移以太在合同。根据坚实的文件:
地址类型有两种类型,它们在很大程度上是相同的:
address:容纳一个20字节的值( Ethereum地址的大小)。address payable:与地址相同,但有额外的成员转移和发送。这种区别背后的想法是,地址付款是一个地址,你可以发送以太,而一个普通的地址不能发送以太。
发布于 2019-03-04 20:58:43
您可以始终将address转换为payable address:
address(uint160(receiver)).transfer(...);发布于 2019-11-18 17:21:17
你可以试试这些..。只是换了最后一行。
function approve() external {
require(msg.sender == approver);
address(this).balance;}}
https://ethereum.stackexchange.com/questions/63618
复制相似问题