首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >address.transfer不工作

address.transfer不工作
EN

Ethereum用户
提问于 2018-12-05 13:17:05
回答 6查看 7.4K关注 0票数 10
代码语言:javascript
复制
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

}
}

我得到了不可见的传输变量。

成员“传输”后找不到或不可见的后,依赖于参数查找的地址。

EN

回答 6

Ethereum用户

发布于 2018-12-05 13:22:33

使用

代码语言:javascript
复制
address payable public receiver;

在声明的地址,您希望转移以太在合同。根据坚实的文件:

地址类型有两种类型,它们在很大程度上是相同的:address:容纳一个20字节的值( Ethereum地址的大小)。address payable:与地址相同,但有额外的成员转移和发送。这种区别背后的想法是,地址付款是一个地址,你可以发送以太,而一个普通的地址不能发送以太。

票数 17
EN

Ethereum用户

发布于 2019-03-04 20:58:43

您可以始终将address转换为payable address

代码语言:javascript
复制
address(uint160(receiver)).transfer(...);
票数 4
EN

Ethereum用户

发布于 2019-11-18 17:21:17

你可以试试这些..。只是换了最后一行。

代码语言:javascript
复制
 function approve() external {
require(msg.sender == approver);
address(this).balance;

}}

票数 0
EN
页面原文内容由Ethereum提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://ethereum.stackexchange.com/questions/63618

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档