我的以太坊收到错误:目前状态不可用
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
【讨论】:
以上是关于我的以太坊收到错误:目前状态不可用的主要内容,如果未能解决你的问题,请参考以下文章