我的以太坊收到错误:目前状态不可用

Posted

技术标签:

【中文标题】我的以太坊收到错误:目前状态不可用【英文标题】:My ethereum got the error: Status not available at the moment 【发布时间】:2019-12-28 13:08:56 【问题描述】:

当我向 BC 发送交易时,我收到一些错误信息,即“目前状态不可用”。这是什么意思?我该如何解决这个问题?非常感谢。

Solidity 合约代码如下:

  function UserRegister(string memory userName,uint feiyong ) public payable returns(string memory isOK)
       if (bytes(users[userName].name).length==0)

           users[userName].name=userName;
           emit UserRegisterEVENT(msg.sender,"registered");
           return ("registered");
       
       else
       
           emit UserRegisterEVENT(msg.sender,"UserName has been registered");
           return("UserName has been registered");
       
    
    function getUserRegistered(string memory xyz) public view returns (bool non)
    

          if (bytes(users[xyz].name).length==0)

              return false;
          
          else
          
              return true;
          
    

而 web3 客户端代码是:

    var userReg=contract1.methods.UserRegister("LYQ",100).send(from:'0x18244fbf3b47175cd6b4a1183a476c9e70cb7368',gas:900000)  
.on('transactionHash', function(hash)

    console.log("hash="+hash); 

)
.on('confirmation', function(confirmationNumber, receipt)

   //console.log("confirmation number="+confirmationNumber);
)
.on('receipt', function(receipt)

    console.log("receipt="+receipt[0][0]);
     )
.on('error',function(error)

    console.log("error="+error);
)
.on('catch',function(error) 
    console.log("error="+error);

);
console.log("userEeg="+userReg);
var userName="LYQ";
var xyz= contract1.methods.getUserRegistered(userName).call( (error, result) => 
    if(error)
        console.log("error="+error);
    else
        console.log("result="+result);
 );

当我执行代码时,getUserRegistered 返回 false。当 send 函数执行时,remix 会得到以下日志:

 status      Status not available at the moment
 transaction hash   0x1e484dfa3afbbeadbcd1db20c38ef0427f8cf4ab04344045c0f10d24f1055a02
 from   0x18244fbf3b47175cd6b4a1183a476c9e70cb7368
 to     WoTResourceACL.UserRegister(string,uint256) 0x3944fb3e4f97b149689dbf9b1e83d8bd361f02ef
 gas    900000 gas 
 hash   0x1e484dfa3afbbeadbcd1db20c38ef0427f8cf4ab04344045c0f10d24f1055a02
 input  0x39c...00000
 decoded input  
    "string userName": "LYQ",
    "uint256 feiyong": 
        "_hex": "0x64"
    

 decoded output      - 
 logs   [
    
        "from": "0x3944fb3e4f97b149689dbf9b1e83d8bd361f02ef",
        "topic": "0x27948276c58d5b63b61d92a95fe3cf7e2d6cf9c00ecdddac43cbe4a492a011e2",
        "event": "UserRegisterEVENT",
        "args": 
            "0": "0x18244fBF3B47175cD6b4a1183A476c9e70cB7368",
            "1": "registered",
            "myaddr": "0x18244fBF3B47175cD6b4a1183A476c9e70cB7368",
            "result": "registered",
            "length": 2
        
    
]
 value  0 wei 

【问题讨论】:

您使用的是哪个网络?私有区块链? 是的,在一台笔记本电脑上使用 geth。 params 块中获取所有以eip 开头的行,并尝试将其添加到您的私有区块链genesis.json 文件中。如果您在 Geth,则需要对网络进行核攻击并重新开始。如果你在 Parity 上(意味着如果你有 spec.json 文件),你可以只编辑而不用核对网络并重新开始。 github.com/paritytech/parity-ethereum/blob/master/ethcore/res/… 【参考方案1】:

@HeiHei @Zulhilmi Zainudin 我遇到了同样的问题。我尝试过 Zulhilmi Zainudin 的方法,但对我不起作用。 最后我找到了一种让它在我身边工作的方法。我在这里发布它希望可以对其他人有所帮助。 我在 genesis.json 文件中添加了以下几行,并重新创建了私有链,它可以工作了。

"homesteadBlock": 0,
"eip155Block": 0,
"eip158Block": 0,
"eip150Block": 0,
"byzantiumBlock": 0,
"constantinopleBlock": 0,
"petersburgBlock": 0

【讨论】:

以上是关于我的以太坊收到错误:目前状态不可用的主要内容,如果未能解决你的问题,请参考以下文章

该服务目前不可用 Google api

以太坊可用RPC节点列表

以太坊 助记词提取 账户 公钥 私钥 最新实现可用。

从历次升级看以太坊协议的演化

eth入门之网络

智能合约语言 Solidity - 错误处理