首页
学习
活动
专区
圈层
工具
发布

误差
EN

Ethereum用户
提问于 2019-01-26 08:22:21
回答 1查看 270关注 0票数 0

我正试图为Lottary应用程序创建一份合同,但是我遇到了错误,因为

browser/test.sol:103:9: TypeError:成员“传输”在与参数相关的地址查找后未找到或不可见。users.transfer(地址(此).balance);

我试图让address[]用户成为地址可支付的[]用户;在https://stackoverflow.com/questions/53499997/solidity-member-transfer-not-found-or-not-visible-after-argument-dependent中提到过,然后它会产生不同的错误。

代码语言:javascript
复制
pragma solidity ^0.4.24;


/*
Lottery is safe under the assumption that miners do not interfere,
no smart contract can hack me (If You can prove me otherwise :D )
*/
contract LotteryFor10{

address[] users; 
mapping(address => bool) participated;
uint256 public constant WAIT_BLOCKS_LIMIT = 3 ;
uint256 public registeredCount ;
uint256 public _registeredLimit ;
uint256 constant REGISTERING_PARTICIPANTS = 1;
uint256 constant REGISTERING_FINISHED = 2;
uint256 constant WAITING_FOR_RANDOMNESS = 3;
uint256 constant SOLVING_LOTERRY = 4;
uint256 constant LOTTERY_SOLVED = 5;
uint256 public waitingStartBlockNumber;
bool public lotterySolved;

constructor(uint256 _limit) public{
    waitingStartBlockNumber = 0;
    registeredCount = 0;//good habit not to rely on defaults if You do 
 not have to
    _registeredLimit = _limit;
}



function () public payable{

    if(getStage(block.number)==REGISTERING_PARTICIPANTS){
        processAddingUser(msg.sender);
    }
    else{ // this else is crutial so we never enter two stages in same 
   call
        if(getStage(block.number)==REGISTERING_FINISHED){
            require(msg.value == 0,"no additional stake allowed");
            waitingStartBlockNumber = block.number;
            emit ClosingList(waitingStartBlockNumber);
        }
        else{
            if(getStage(block.number)==WAITING_FOR_RANDOMNESS){
                    require(msg.value == 0,"no additional stake 
   allowed");

                    revert("To little time passed, wait at least 
  WAIT_BLOCKS_LIMIT ");
            }
            else{
                if(getStage(block.number)==SOLVING_LOTERRY){
                    require(msg.value == 0,"no additional stake 
                    allowed");
                    processSolvingLottery(block.number);
                }
                else{        
                    revert("Lottery Closed ");
                 }
               }
           }
         }
      }


   function getStage(uint256 blockNum) private view returns(uint256) {
    if(registeredCount<_registeredLimit){
        return REGISTERING_PARTICIPANTS;
    }
    else{
        if(waitingStartBlockNumber==0 //start waiting block has been 
                   never set
            || blockNum-waitingStartBlockNumber>=256 //start waiting 
                block has been set long time ago
            ){
            return REGISTERING_FINISHED;
        }
        else
        {
            if(blockNum-waitingStartBlockNumber
EN

回答 1

Ethereum用户

发布于 2021-06-04 06:48:15

替换

代码语言:javascript
复制
users[luckyNumber].transfer(address(this).balance);

使用

代码语言:javascript
复制
payable(users[luckyNumber]).transfer(address(this).balance);
票数 0
EN
页面原文内容由Ethereum提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

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

复制
相关文章

相似问题

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