1、什么是web3钱包
web3钱包是用来存储代币、NFT等数字资产的数字钱包, 我们平时常听到的加密钱包和web3钱包是同一个东西,只是叫法不一样。钱包它也是个人身份凭证,用户可以通过钱包登录各种web3 web应用和DAPP。一定要保管好你的助记词,谁拥有助记词,谁将拥有这个钱包的控制权
2、常用的web3热钱包
市场上很多种类的热钱包,其功能都相差不大,都具备发送数字资产、接受数字资产、作为个人凭证登录web3 Web应用和DAPP的功能,同时和智能合约进行数据通讯。
平时较常用的钱包有MetaMask、TrustWallet。MetaMask主要在Web端,以浏览器插件形式存在。TrustWallet主要在移动端。
3、钱包在和合约交互中的作用
首先我们需要连接一个概念provider,Provider(提供者)是一个用于连接以太坊网络的抽象类,提供了只读形式来访问区块链网络和获取链上状态。在这里ethers默认提供了一个provider,因此我们是可以在不连接钱包的情况在,在智能合约上进行一些查询操作的。例如:查询域名注册状态,查询域名价格等。
我们连接钱包的目的,也是为了获取钱包的RPC,因此可以通过本地写死RPC的形式,来保证一些查询操作的正常进行。
我们Dapp设计原则是,越方便越好,除非必要,不进行连接钱包的强校验。
import { ethers } from "ethers";
// 方法1
const provider = ethers.getDefaultProvider()
// 方法2,将rpc地址替换即可
const providerRpc = new ethers.providers.JsonRpcProvider(`https://mainnet.infura.io/v3/`)
// RPC地址
{
"ethMain": {
"chainId": 1,
"netInfo": {
"chainName": "以太坊主网",
"Nodes": "https://mainnet.infura.io/v3/",
"BlockExplorerUrls": "https://etherscan.io"
},
"nativeCurrency": {
"name": "ETH",
"symbol": "ETH",
"decimals": 18
}
},
"bnbMain": {
"chainId": 56,
"netInfo": {
"chainName": "BSC MAINNET",
"Nodes": "https://bsc-dataseed.binance.org",
"BlockExplorerUrls": ""
},
"nativeCurrency": {
"name": "UNKNOWN",
"symbol": "UNKNOWN",
"decimals": 18
}
},
"ethTest": {
"chainId": 5,
"netInfo": {
"chainName": "ENS TEST",
"Nodes": "https://goerli.infura.io/v3/",
"BlockExplorerUrls": "https://etherscan.io"
},
"nativeCurrency": {
"name": "ETH",
"symbol": "ETH",
"decimals": 18
}
},
"bnbTest": {
"chainId": 97,
"netInfo": {
"chainName": "BSC TEST",
"Nodes": "https://bsc-testnet.public.blastapi.io",
"BlockExplorerUrls": ""
},
"nativeCurrency": {
"name": "tBNB",
"symbol": "tBNB",
"decimals": 18
}
},
"doMain": {
"chainId": 137,
"netInfo": {
"chainName": "BSC MAINNPolygon Mainnet",
"Nodes": "https://polygon-mainnet.infura.io",
"BlockExplorerUrls": "https://polygonscan.com/"
},
"nativeCurrency": {
"name": "MATIC",
"symbol": "MATIC",
"decimals": 18
}
}
}