10

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

var Web3 = require('web3');
var web3 = new Web3('http://localhost:8545');
// or
var web3 = new Web3(new Web3.providers.HttpProvider('http://localhost:8545'));

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

4

2 回答 2

14

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

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

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

于 2018-03-15T16:32:39.273 回答
1

它不链接到私有和公共区块链。在以太坊网络上,所有节点都相互连接。当 a 执行交易时,然后使用 Web3 提供程序通知其他节点有关此智能的信息。

于 2019-08-28T07:57:11.420 回答