- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在使用 Ethers.js允许用户将他们的 Metamask 钱包连接到我的应用程序。这是我的代码:
import { ethers } from "ethers"
async function connect() {
const provider = new ethers.providers.Web3Provider(window.ethereum, "any")
await provider.send("eth_requestAccounts", [])
const signer = provider.getSigner()
const address = await signer.getAddress()
// Always prints the address that I first connected with
console.log(address)
}
问题是,一旦我连接了我的一个 Metamask 账户,即使我切换到另一个 Metamask 账户并尝试连接它,我也总是能得到它的钱包地址。
为什么会这样,我应该如何解决这个问题?
最佳答案
获取当前账户,获取eth_requestAccounts
的0
地址:
let accounts = await provider.send("eth_requestAccounts", []);
let account = accounts[0];
要自动更新它,请监听 accountsChanged
事件:
provider.on('accountsChanged', function (accounts) {
account = accounts[0];
});
代码:
import { ethers } from "ethers"
async function connect() {
const provider = new ethers.providers.Web3Provider(window.ethereum, "any");
let accounts = await provider.send("eth_requestAccounts", []);
let account = accounts[0];
provider.on('accountsChanged', function (accounts) {
account = accounts[0];
console.log(address); // Print new address
});
const signer = provider.getSigner();
const address = await signer.getAddress();
console.log(address);
}
我认为问题在于您需要在切换帐户时重新实例化签名者和提供者。
此外,如果我正确阅读了文档,最好在成功调用 eth_requestAccounts
之后实例化签名者。
关于javascript - 即使我切换帐户,Ethers.js 也会返回相同的钱包地址,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/71926834/
假设我运行npm ls ethers来获取hardhat项目中的esers版本,结果如下:-。现在我想要将前5个实体中的ethers版本从[电子邮件受保护]、@onomicFoundation/[电子
我正在使用 Ethers.js允许用户将他们的 Metamask 钱包连接到我的应用程序。这是我的代码: import { ethers } from "ethers" async function
我有一个带有接收函数的智能合约: receive() external payable { Wallets[msg.sender] += msg.value; } 我有一个前端,我想使用 re
在 ethers.js 中,您可以使用 provider.getGasPrice() 来获得您应该支付的 gas 的最佳估计值。有没有什么简单的东西我可以调用或转换到这个值上以获得相当于“快速”交易而
我正在 Hardhat 中开发智能合约并在 RSK Testnet 上进行测试.要创建签名者帐户,我使用助记种子短语以及以下 Hardhat 配置: require('@nomicfoundation
坚固性: function ping() public view returns ( uint ) { return 999999999; } function ping2() public
问题 我正在尝试在测试网络(ropsten)中使用契约(Contract)方法,但由于此错误而失败: reason: 'cannot estimate gas; transaction may fai
我正在使用 ethers.js 文档:https://docs.ethers.io/ethers.js/html/cookbook-providers.html . 设置提供程序时出现错误 -: Un
如何使用 ethers.js 在合约交互中设置 gasPrice?我正在尝试覆盖以下代码中的 gasPrice: let txPromise = contract.populateTransactio
我的 package.json 文件中有: "scripts": { "compile-contract-types": "yarn compile-external-abi-types &
Const Provider=new ethers.Providers.Web3Provider(Connection);。这一行给了我错误。TypeError:无法在异步FetchData(Chat
我正在尝试使用 ethers.js 将交易发送到多边形网络。提交交易后,我 await tx.wait(),但它有 50% 的时间无法解决。我看到其他人也有类似的问题,但这是由于他们的汽油价格太低。我
我正在尝试制作一个简单的 js 机器人,它检查每个区 block 的 eth(或链的主要 token )并将其发送到另一个钱包。 我有一个工作机器人: const { ethers } = requi
请不要评判,我不知道该做什么,该怎么做:) 我的代码:以太.js (^5.6.0) import { ThirdwebSDK } from '@3rdweb/sdk' import { ethers
根据 official docs的 ethers.js ,这应该是如何使用自定义数据连接到特定网络(如 Rinkeby-testnet)的方式: const provider = ethers.ge
安装 Rocks 前端后,我尝试使用以下命令向前端添加新节点 #insert-ethers但我收到此错误: 'bash: insert-ethers: command not found" 我该如何解
有没有办法不仅获取传入消息的正文。还有它的 ether/IP header ?现在我正在使用 gen_tcp 并通过主动控制进程接收消息。 现在套接字是通过'of_driver'以这种方式打开的: g
Ethereal 转储中的 TSV 和 TSER 字段是什么意思?我尝试使用谷歌搜索但找不到答案。 最佳答案 TSV 是 Timestamp Value 字段。它与序列号结合使用以唯一标识段(因为序列
目录 摘要 1 引言 2 提出的TEA-PSE系统 2.1
这是一个非常小的 repo 来显示问题:https://github.com/adamdry/ethers-event-issue 但我也会在这里解释。这是我的契约(Contract): //SPDX
我是一名优秀的程序员,十分优秀!