如何与Web服务器上的公共以太坊区块链通信?

时间:2019-05-13 15:02:06

标签: ethereum geth

在Web应用程序的后端,我必须与公共以太坊区块链进行通信。

在本地开发计算机上,我将ganache作为testrpc运行并连接以下代码行:

web3 = new Web3(new Web3.providers.HttpProvider("http://localhost:8545"));

我还发现我可以使用RinkeBy testnet进行开发

web3 = new Web3(new Web3.providers.HttpProvider("https://rinkeby.infura.io/$thisistheapikey"));

但是我如何与REAL公共区块链通信?我需要在Web服务器上运行geth并连接到其实例吗?还是有可用的公共网络可用? (如果我们可以信任的话)

1 个答案:

答案 0 :(得分:2)

  

但是我如何与REAL公共区块链通信?

为了通过主网上的远程过程调用(RPC)连接到以太坊公共区块链(一个以太坊节点),您需要一个以太坊节点。有几种方法可以做到这一点。您可以使用 Geth Parity 运行自己的以太坊节点。但这需要从公共区块链下载大量数据并保持同步。这是一件大事。

或者,您可以使用Infura(https://infura.io/)访问以太坊节点(以太坊公共区块链),而不必自己运行任何节点。 Infura免费提供了一个远程以太坊节点。您需要做的就是注册并获得API密钥和RPC URL进行连接。

Infura RPC URL应该如下所示:

https://mainnet.infura.io/YOUR_INFURA_API_KEY  

现在,您可以使用此RPC URL进行通信,例如

const Web3 = require('web3')
const rpcURL = '' // Your RPC URL with infura key goes here,i.e. https://mainnet.infura.io/YOUR_INFURA_API_KEY 
const web3 = new Web3(rpcURL)
const address = '' // Your ethereum account address goes here
web3.eth.getBalance(address, (err, wei) => {
  balance = web3.utils.fromWei(wei, 'ether')
})
  

我需要在Web服务器上运行geth并连接到其实例吗?

第一个答案已经涵盖,这可能是另一种交流方式。

  

或者是否有可用的公共网络? (如果我们可以信任的话)

有进行真实令牌交易的以太坊主网和没有真实价值的 Test Net 。在以太坊区块链上启动项目之前,最好在Test Net环境中运行整个场景以发现并解决安全问题。有很多可用的测试网络服务。像Ropsten,Kovan,Rinkeby一样。只需在Internet上搜索“以太坊主网测试网”即可了解更多信息。希望会有所帮助。