You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

BSC测试网MetaMask授权ERC20代币时出现-32000服务器错误求助

Ethers调用ERC20授权时出现"unknown account"错误解决

我通过以下ethers代码触发MetaMask弹窗授权ERC20代币,2-3个月前可正常运行,现在调用报错:

const provider = new ethers.providers.JsonRpcProvider(url); // url === bsc testnet rpc
const erco20Contract = new ethers.Contract(
    erco20ContractAddress,
    erc20Abi,
    provider.getSigner(metamaskAddress)
);
await erco20Contract.approve(dappContractAddress, amount);

错误信息:

processing response error (body="{"jsonrpc":"2.0","id":51,"error":{"code":-32000,"message":"unknown account"}}
", error={"code":-32000}, requestBody="{"method":"eth_sendTransaction","params":[{"gas":"0xac9f","from":"<my_metamask_address>","to":"<dapp_address>","data":"0x095ea7b300000000000000000000000078c18d3d5f86c9e3e14c13b8065018acd0d76c11000000000000000000000000000000000000000000000000016345785d8a0000"}],"id":51,"jsonrpc":"2.0"}", requestMethod="POST", url="https://data-seed-prebsc-1-s1.binance.org:8545/", code=SERVER_ERROR, version=web/5.7.0)


问题原因

错误核心是unknown account:你直接使用BSC测试网节点的JsonRpcProvider,并调用getSigner(metamaskAddress),但BSC节点没有你的MetaMask私钥,无法签名交易。旧版ethers可能存在兼容逻辑绕过了这一步,但新版本严格遵循规范后就触发了错误。

修正代码

必须通过MetaMask注入的provider来处理交易签名,正确代码如下:

// 检查MetaMask是否安装
if (!window.ethereum) {
  throw new Error("请安装MetaMask钱包");
}

// 触发MetaMask连接账户弹窗
await window.ethereum.request({ method: 'eth_requestAccounts' });

// 用MetaMask的provider创建ethers实例
const provider = new ethers.providers.Web3Provider(window.ethereum);
const signer = provider.getSigner(); // 获取当前激活的账户签名者

// 初始化ERC20合约
const erco20Contract = new ethers.Contract(
    erco20ContractAddress,
    erc20Abi,
    signer
);

// 发起授权请求,自动触发MetaMask签名弹窗
await erco20Contract.approve(dappContractAddress, amount);

额外检查点

  • 确认MetaMask当前网络切换至BSC测试网,与合约部署网络一致;
  • 检查ethers版本(你的版本是v5.7.0,属于稳定版,无需降级);
  • 核对合约地址、ABI、授权金额参数是否正确。

内容的提问来源于stack exchange,提问作者sdfsdf

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.21 02:24:28