首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Ethers.js“错误:未知帐户#0 (operation=”getAddress,code=UNSUPPORTED_OPERATION)“

Ethers.js“错误:未知帐户#0 (operation=”getAddress,code=UNSUPPORTED_OPERATION)“
EN

Stack Overflow用户
提问于 2022-02-20 20:25:00
回答 2查看 5.5K关注 0票数 7

我试图使用KyberSwap从Ethers.js获取ETH的价格,但是我收到了以下错误:

代码语言:javascript
复制
Error: unknown account #0 (operation="getAddress", code=UNSUPPORTED_OPERATION, version=providers/5.5.3)

我连接到一个英弗拉网络套接字来获取数据。这是我的剧本:

代码语言:javascript
复制
const { ethers } = require("hardhat");
const kyberABI = require('./kyberABI.json')

const provider = new ethers.providers.WebSocketProvider("wss://mainnet.infura.io/ws/v3/<project_id>")

const kyberNetworkProxyAddress = "0x818E6FECD516Ecc3849DAf6845e3EC868087B755"
const daiAddress = "0x6b175474e89094c44da98b954eedeac495271d0f"

const kyber = new ethers.Contract(
    kyberNetworkProxyAddress,
    kyberABI.kyberNetworkProxy,
    provider.getSigner(),
);

async function main() {
    // Update eth price from Kyber to reflect current market value
    let curEthPriceUSD
    const updateEthPrice = async () => {
        const results = await kyber.getExpectedRate(
            '0xeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee',
            daiAddress,
            1
        )
        curEthPriceUSD = results.expectedRate
    }
    await updateEthPrice()
    console.log('Current Ethereum price in USD is: ',
        ethers.utils.formatEther(curEthPriceUSD))
}

main()

如何修复此错误?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2022-02-20 20:25:00

关于Github的相关问题中找到了一个修复程序。

我没有使用provider.getSigner()初始化kyber合同,而是使用一个Wallet对象并从那里抓取签名者:

代码语言:javascript
复制
const wallet = new ethers.Wallet(ethPrivkey, provider);
const signer = wallet.provider.getSigner(wallet.address);

const kyber = new ethers.Contract(
    kyberNetworkProxyAddress,
    kyberABI.kyberNetworkProxy,
    signer
);
票数 8
EN

Stack Overflow用户

发布于 2022-04-30 02:27:46

有完全相同的错误信息,在我的例子中,这是由于Metamask帐户没有连接。这里的第二行修复了它:

代码语言:javascript
复制
const provider = new ethers.providers.Web3Provider(window.ethereum);
await provider.send('eth_requestAccounts', []); // <- this promps user to connect metamask
const signer = provider.getSigner();
票数 8
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/71198438

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档