【问题标题】:How to communicate with public Ethereum Blockchain on a web server?如何在 Web 服务器上与公共以太坊区块链通信?
【发布时间】:2019-05-13 15:02:05
【问题描述】:

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

在本地开发机器上,我运行 ganache 作为 testrpc 并用这样一行代码连接:

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

我还发现我可以使用 RinkeBy 测试网进行开发

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

但是我怎样才能与真正的公共区块链进行通信呢?我是否需要在 Web 服务器上运行 geth 并连接到它的实例?或者是否有任何可用的公共网络可以使用? (如果我们可以信任的话)

【问题讨论】:

  • https://mainnet.infura.io/$thisistheapikey

标签: ethereum geth


【解决方案1】:

但我如何才能与真正的公共区块链通信?

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

或者,您可以使用 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 并连接到它的实例吗?

已经在第一个答案中介绍过,这可以是另一种沟通方式。

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

有以太坊主网发生真正的代币交易,测试网没有实际价值。在以太坊区块链上启动项目之前,最好在测试网环境中运行整个场景以查找和修复安全问题。有很多可用的测试网服务。像 Ropsten、Kovan、Rinkeby 等。只需在互联网上搜索“以太坊主网测试网”即可了解更多信息。希望有所帮助。

【讨论】:

  • 但是 infura 主网的结果与 etherscan.io 中显示的结果不匹配。你能帮我看看这些东西是如何工作的,为什么它们会显示不同的结果。
  • @MaadhavSharma 你正在查看主网或测试网
  • 我想我当时在看主网,最终我用了cloudflare.com/distributed-web-gateway/#ethereum-gateway
猜你喜欢
  • 2022-10-21
  • 2017-08-07
  • 2021-04-28
  • 1970-01-01
  • 2019-12-09
  • 2021-04-25
  • 1970-01-01
  • 2016-12-22
  • 2018-12-05
相关资源
最近更新 更多