首页 > 解决方案 > 未捕获(承诺中)错误:返回错误:方法 eth_sendTransaction 不可用

问题描述

为我的简单测试合同编写简单的前端。 调用方法正常工作,但如果我想发送 tx 它会给我这个错误 Uncaught (in promise) Error: Returned error: the method eth_sendTransaction is not available

前端:

<html>
  <body>
    <button id="setmx">Set Max</button>
<script>

  var contract;
  var acn;

  $(document).ready(function()
  {
    web3 = new Web3(new Web3.providers.HttpProvider('https://api.avax-test.network/ext/bc/C/rpc'));
    var address = "";
    contract = new web3.eth.Contract(abi, address);
    async function getAccounts(callback) {
    var accounts = await ethereum.enable();
    if (typeof(callback) == 'function') {
        callback(accounts);
    }
}
    getAccounts(function(accounts) {
        if (accounts != undefined) {
          acn = accounts[0]
        }
    });
  });
    
  $("#setmx").click(function()
    {
      console.log(contract.methods.current_supply().call()); // works

      var amt = 200;
      contract.methods.SetMaxSupply(amt).send({from : acn}); // does not work
    })


</script>

  </body>
</html>

合同:

// SPDX-License-Identifier: MIT
 
pragma solidity ^0.8.0;
 
 
import "https://github.com/OpenZeppelin/openzeppelin-contracts/blob/master/contracts/access/Ownable.sol";
 
contract Test is Ownable {
 
    uint public max_supply; 
 
     function SetMaxSupply(uint amount) public onlyOwner { 
       max_supply = amount;
   }
 
    function current_supply() public view returns(uint) {
        return max_supply * 3;
    }
 
}

我想这不是合同代码问题。打开网站后,MetaMask 要求用户解锁他的帐户并连接到网络

标签: ethereumsolidityweb3web3jsmetamask

解决方案


推荐阅读