ethereum - 未捕获(承诺中)错误:返回错误:方法 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 要求用户解锁他的帐户并连接到网络
解决方案
推荐阅读
- python - 尝试将带有文件的数据表单转发到另一个 Web 服务
- sql-server - 获取开始和结束标志之间的所有行
- influxdb - 聚合函数 sum() 和 count(Distinct()) 需要超过一分钟才能在 influxsql 中返回结果
- codeigniter - 使用带有 codigniter 的 instamojo 付款成功后如何更新数据库中的付款状态
- azure-data-explorer - Kusto - 每个系列的最后一行按时间戳
- java - 在循环中使用java“for each”和“continue”
- azure - azurerm_virtual_machine_extension 创建过程在 Azure Gov 环境中永远不会停止
- angularjs - 将一组文档从 VIEW(控制器 AngularJS)发送到 ASP.net MVC 中的 CONTROLLER
- node.js - request.url 未定义类型,为什么?
- excel - Excel,基于多列创建重复的指标列