如何查看web3钱包是否已解锁?



我如何检查是否使用ethers.js解锁元掩码或其他web3钱包

?我现在使用这个:

window.ethereum._metamask.isUnlocked()

但是在元掩码文档中它被报道为实验方法。

我的实验发现,listAccounts返回一个字符串数组,如果钱包没有解锁,它返回一个空数组。

特别是对于MetaMask,我知道你不能没有地址就拥有一个帐户。

因此我想到的函数是:

async function isUnlocked() {
const provider = new ethers.providers.Web3Provider(window.ethereum);
let unlocked;
try {
const accounts = await provider.listAccounts();
unlocked = accounts.length > 0;
} catch (e) {
unlocked = false;
}
return unlocked;
}

这是我自己的分辨率,如果有人需要的话:

isUnlocked$ = new BehaviorSubject<boolean>(false);
async isWalletUnlocked() {
const web3Provider = new ethers.providers.Web3Provider(window.ethereum, 'any');
const signer = await this.web3Provider.getSigner();

signer
.getAddress()
.then((address: string) => {
this.isUnlocked$.next(true);
})
.catch((err) => this.isUnlocked$.next(false));
}

相关内容

  • 没有找到相关文章

最新更新