Ethereum web3.js中的currentprovider和givenprovider有什么区别
有人能解释一下currentprovider和givenprovider的区别吗 我是这样想的。Ethereum web3.js中的currentprovider和givenprovider有什么区别,ethereum,web3js,Ethereum,Web3js,有人能解释一下currentprovider和givenprovider的区别吗 我是这样想的。 givenprovider通过web浏览器连接到区块链,并且 currentprovider通过元掩码连接到区块链 我不确定我的理解是否正确 你有什么想法吗?我认为以太坊供应商在一开始就缺乏标准,这是一个很大的困惑。据我所知,我想把它整理一下 从web3文档: import Web3 from 'web3'; // "Web3.providers.givenProvider" will be se
givenprovider
通过web浏览器连接到区块链,并且
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);
请不要使用web3
模块上的givenProvider
初始化web3
实例
让我们看看MetaMask文档:
MetaMask将一个全局API注入到其用户访问的网站中
window.ethereum(也可从window.web3.currentProvider获得
遗留原因)
这是基于
基本上,Web3
将window.ethereum
分配给Web3.givenProvider
属性,如果提供程序符合ERC1193(作为元掩码),则可以执行一些模糊魔术来检测提供程序(如果不符合)
按照此逻辑,在实例上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
非常感谢。我需要时间来理解两者的区别。