区块链

Web3和Metamask的用例 每个区块链开发者都应该知道

作者:CETCIT小编

2022-05-21 10:42:28

Web3和Metamask的用例 每个区块链开发者都应该知道

Metamask是网络上DApps的事实上的标准。它将一个Web3实例注入到一个窗口对象中,使其可用于JavaScript代码。

我们将使用Web3 0.20版本,而不是Web3 1.0。Web3 1.0的代码将是不同的。

每个DApp都有它的使命,但它们与Metamask交互的方式是相似的。在这篇文章中,我们将介绍处理Web3/Metamask交互的十个最常见的做法。

#1. 检测Metamask并实例化Web3

<请遵照这个,这是最好的指南。>

首先,我们检查Web3是否被注入。如果它被注入了,我们就使用注入的提供者创建一个新的实例。这是为什么呢?因为我们想使用我们的库版本,而不是由Metamask注入的版本。

如果Web3不存在,我们尝试连接到一个本地主机提供者,如ganache。

#2. 检查Metamask是否被锁定

Metamask可以被安装或被锁定。为了与用户账户互动并发送交易,用户必须解锁Metamask。

#3. 检查当前的网络

在主网络之外还有许多测试网络。通常,你的合约被部署到某个网络上。你要确保用户在同一网络上运行Metamask。

#4. 获取当前账户

用户可能在Metamask有多个账户,但他们希望DApp能与当前的账户进行交互。

你应该总是从Web3实例中抓取账户。不要保留和重复使用它,因为用户可能会在任何时候改变他们的账户。

#5. 获取往来账户的余额

这里我们使用函数getAccount并调用getBalance,很简单。

#6. 检测当前账户是否有变化

用户可以在任何时候改变他们的账户。你的DApp应该为此做好准备并作出适当的反应。

#7. 检测Metamask是否被锁定/解锁

与#6类似。一个用户可以随时锁定/解锁。你的DApp应该正确地处理它。

#8. 处理取消/确认

一旦用户与你的dApp互动,你必须使用Web3 API发送一个交易。用户可能会按下Metamask弹出窗口上的取消或确认按钮。如果不正确处理,这可能会导致UI不一致。

为了立即返回交易哈希值,请调用contract.methodName.sendTransaction。

#9. 获取交易收据

一旦你的DApp交易被挖掘出来,交易收据就会变得可用。但是没有事件/通知,所以我们必须实现一个投票机制。

#10. 监听Web3事件

总结

无论你的dApp是关于什么的,它仍然要执行常见的任务,如检测Web3,获得账户状态和余额,识别当前网络,以及处理交易和事件。我们已经用十个代码片断介绍了如何做到这一点。

web3.0教程