在 Web 应用程序的后端,我必须与公共以太坊区块链进行通信。
在本地开发机器上,我将 ganache 作为 testrpc 运行并连接到这样一行代码:
web3 = new Web3(new Web3.providers.HttpProvider("http://localhost:8545"));
Run Code Online (Sandbox Code Playgroud)
我还发现我可以针对 RinkeBy 测试网进行开发
web3 = new Web3(new Web3.providers.HttpProvider("https://rinkeby.infura.io/$thisistheapikey"));
Run Code Online (Sandbox Code Playgroud)
但是我怎样才能与真正的公共区块链通信呢?我是否需要geth在 Web 服务器上运行并连接到它的实例?或者有没有可以使用的公共网络?(如果我们可以信任的话)
但是我怎样才能与真正的公共区块链通信呢?
为了通过主网上的远程过程调用 (RPC) 连接到以太坊公共区块链(以太坊节点),您需要一个以太坊节点。有几种方法可以做到这一点。您可以使用Geth或Parity运行您自己的以太坊节点。但这需要从公共区块链下载大量数据并保持同步。这是一件大事。
或者,您可以使用 Infura ( https://infura.io/ ) 访问以太坊节点(以太坊公共区块链),而无需自己运行任何节点。Infura 免费提供远程以太坊节点。您需要做的就是注册并获取 API 密钥和 RPC URL 以进行连接。
Infura RPC URL 应如下所示:
https://mainnet.infura.io/YOUR_INFURA_API_KEY
Run Code Online (Sandbox Code Playgroud)
现在您可以使用此 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')
})
Run Code Online (Sandbox Code Playgroud)
我是否需要在 Web 服务器上运行 geth 并连接到它的实例?
已经在第一个答案中介绍过,这可以是另一种交流方式。
或者有没有可以使用的公共网络?(如果我们可以信任的话)
有发生真实代币交易的以太坊主网和不携带真实世界价值的测试网。在以太坊区块链上启动项目之前,最好在测试网络环境中运行整个场景以查找和修复安全问题。有很多可用的测试网服务。像 Ropsten、Kovan、Rinkeby。只需在互联网上搜索“ethereum mainnet testnet”即可了解更多信息。希望有所帮助。?
| 归档时间: |
|
| 查看次数: |
2116 次 |
| 最近记录: |