要求工作不正常,始终导致错误状态并带有相应的错误

问题描述

我的dapp中有一个基于引用和获取概念的登录页面注册页面,分别用于对用户进行身份验证和授权。登录部分工作正常,但是当我尝试以0.05乙醚费用向区块链注册一个新帐户时, Metamask弹出并显示ALERT:Transaction Error。合同代码中引发异常。.当我检查etherscan时,我得到的是“用户已经存在”错误。无论我使用哪个地址,该错误均保持不变。

 uint lastUserId = 2;

 struct User {
    uint id;
    address referrer;
    uint partnerCount;
    bool isRegistered;
}

 function userRegisteration(address _userAddress,address _referAddress) private returns(bool) {
    require(msg.value == 0.05 ether,'registeration cost 0.05');
    // require(!isUserExists(_userAddress),"User already exists");
    // require(isUserExists(_referAddress),"Referrer doesn't exist");
    
    require(!users[_userAddress].isRegistered,"User already exists"); //The error I got
    require(users[_userAddress].isRegistered,"Referrer doesn't exist");
    
    User memory user = User({
        id: lastUserId,referrer: _referAddress,partnerCount: 0,isRegistered: true
    });
    
    users[_userAddress] = user;
    users[_userAddress].referrer = _referAddress;
    users[_referAddress].partnerCount++;
    lastUserId++;
    
    emit registerSuccess(_userAddress,_referAddress);
    return true
}

function registeration(address _referAddress) external payable {
    userRegisteration(msg.sender,_referAddress);
}

Web3js

 contract.registeration(
        $("#refer_id").val(),{ value: web3.toWei(0.05),gasPrice: 98e9 },function (err,res) {
          if (err) {
            console.log(err.message);
            $(".tx").show();
            $(".transaction_err").text(err.message);
            return false;
          }
        });

响应

Transaction has been reverted by the EVM:
{
  "blockHash": "0x8338fb44f94cef337879b07ebf8251f99b3c6238489e0c2e10d903cf921a0d1c","blockNumber": 7427013,"contractAddress": null,"cumulativeGasUsed": 22838,"from": "0x8a9bbe43c28a82596f7ae4cff80377a7c8e0c25c","gasUsed": 22838,"logsBloom": "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000","status": false,"to": "0x2d99d6db85b012bdd3ced1c21fc025847c6c2694","transactionHash": "0x07e03803ede8a172db5cbe27f3aafead9668af0a6e9fbe7804802b1bf0c5a6b4","transactionIndex": 0,"events": {}
}

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)