在Web应用程序的后端,我必须与公共的通信。
在本地开发机器上,我以testrpc的形式运行ganache并连接到这样一行代码:
web3 = new Web3(new Web3.providers.HttpProvider("http://localhost:8545"));
我还发现我可以在RinkeBy测试网上开发
web3 = new Web3(new Web3.providers.HttpProvider("https://rinkeby.infura.io/$thisistheapikey"));
但我如何才能与真正的公共连锁公司沟通呢?我需要在网络服务器上运行geth
并连接到它的实例吗?或者是否有可用的公共网络可供使用?(如果我们能相信它)
发布于 2019-05-17 06:53:56
,但我如何才能与真正的公共连锁公司沟通呢?
为了通过主网络上的远程过程调用(RPC)连接到(一个Ethereum节点),您需要一个Ethereum节点。有几种方法可以做到这一点。您可以使用、Geth、或奇偶校验运行您自己的Ethereum节点。但这需要从公共区块链下载大量数据并保持其同步。那可是件大事。
或者,您可以使用恩弗拉(https://infura.io/)访问Ethereum节点(),而不必自己运行任何节点。恩弗拉免费提供了一个远程以太节点。您所需要做的就是注册并获得一个API密钥和要连接的RPC。
应该如下所示:
https://mainnet.infura.io/YOUR_INFURA_API_KEY
现在您可以使用这个RPC进行通信,如
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')
})
我需要在网络服务器上运行geth并连接到它的实例吗?
在第一个答案中已经提到了,这可以是另一种交流方式。
或是否有可用的公共网络可供使用?(如果我们能相信它)
这里有主网和测试网,其中有真实的令牌事务,也有没有真实世界价值的测试网。在Ethereum区块链上启动项目之前,最好在Test环境中运行整个场景,以查找和修复安全问题。有大量的测试网络服务可用。就像Ropsten,Kovan,Rinkeby等等,只要在互联网上搜索“”就可以了解更多信息。希望有帮助。
https://stackoverflow.com/questions/56115059
复制相似问题