谁能解释一下 currentprovider 和给定provider 之间有什么区别?
我是这样想的。
givenprovider通过网络浏览器连接到区块链,并通过
currentprovider元掩码连接到区块链。
我不确定我的理解是否正确。
你有什么主意吗?
我认为以太坊提供商存在很多混乱,因为一开始就缺乏标准。我想按照我的理解来解决它。
来自 web3 文档:
import Web3 from 'web3';
// "Web3.providers.givenProvider" will be set if in an Ethereum supported browser.
const web3 = new Web3(Web3.givenProvider || 'ws://some.local-or-remote.node:8546', net, options);
Run Code Online (Sandbox Code Playgroud)
请注意,要初始化web3实例,请使用模块givenProvider上的。Web3
让我们看看 MetaMask 文档:
MetaMask 将全局 API 注入到用户在 window.ethereum 访问的网站中(由于遗留原因,也可在 window.web3.currentProvider 上使用)
这是基于ERC1193
基本上,如果提供者符合 ERC1193(如 MetaMask),则Web3分配window.ethereum给属性,如果不符合,则可以执行一些模糊魔法来检测提供者。Web3.givenProvider
按照这个逻辑,实例上web3.currentProvider是 web3 初始化所用的提供程序,而web3.givenProvider是环境注入的提供程序(如window.ethereum)。例如:
import Web3 from 'web3';
export const givenWeb3 = new Web3(Web3.givenProvider)
givenWeb3.currentProvider === givenWeb3.givenProvider // true
export const externalProvider = new Web3('http://localhost:8545')
externalProvider.currentProvider === externalProvider.givenProvider // false
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
2637 次 |
| 最近记录: |