什么是使用Web3.providers.HttpProvider("")

Div*_*lla 5 ethereum web3js go-ethereum

我想使用web3js与智能合约进行交互.每个示例都将从以下开始

var Web3 = require('web3');
var web3 = new Web3('http://localhost:8545');
// or
var web3 = new Web3(new Web3.providers.HttpProvider('http://localhost:8545'));
Run Code Online (Sandbox Code Playgroud)

我不明白使用Web3.providers.HttpProvider('Address').我的猜测:因此,在建立专用网络时,每个节点都应该提供一个不同的rpcport来识别它,因此它连接到网络.我错了吗?例如,上面的代码用于网站的前端,以便连接前端并在以太坊专用网络中部署合同.因此,前端代码必须是通用的,这意味着它不应该在其代码中添加特定的以太坊节点地址.那么什么是使用Web3.providers.HttpProvider('地址')?

Ada*_*nis 5

它与使用私有区块链和公共区块链无关.

您需要为客户提供连接区块链的方法.具体来说,web3js库需要Provider包含连接协议和您要连接的节点的地址/端口的对象.

Web3js支持3个不同的供应商:HttpProvider,WebsocketProviderIpcProvider.HTTP和WS都需要节点的地址(IPC使用文件).如果您在客户端上运行对等节点(即使用Parity或Geth),则地址本身将是localhost.如果您使用像Infura这样的集中式提供商,您可以使用https://mainnet.infura.io/API_KEY.