在Web应用程序的后端,我必须与公共的通信。
在本地开发机器上,我以testrpc的形式运行ganache并连接到这样一行代码:
web3 = new Web3(new Web3.providers.HttpProvider("http://localhost:8545"));
我还发现,我可以使用以下方法开发针对的程序:
web3 = new Web3(new Web3.providers.HttpProvider("https://rinkeby.infura.io/$thisistheapikey"));
但我如何才能与真正的公共连锁公司沟通呢?我需要在网络服务器上运行geth
并连接到它的实例吗?或者是否有可用的公共网络可以使用(如果我们可以信任它)?
发布于 2019-05-16 10:06:30
嗯,Rinkeby是一个公开的测试网,但是把真正的Eth和真正的fiat捆绑在一起的链叫做Mainnet
。
你可以通过恩弗拉连接到它:
web3 = new Web3(new Web3.providers.HttpProvider("https://mainnet.infura.io/$thisistheapikey"));
在后端,您可以为您选择的后端语言使用Web3库的实现。您也可以运行您自己的Mainnet
节点,但是除了Web3连接字符串之外,它不会改变您的代码。
web3 = new Web3(new Web3.providers.HttpProvider("http://my-mainnet-node.dev.local:8545"));
拥有您自己的geth
节点的优点是可以控制您自己的环境,并且它在任何负载下都是免费的,这与恩弗拉不同。
这种方法的缺点包括必须管理您自己的节点,在一个好的服务器上托管您的节点(您将需要一个好的SSD,大容量的SSD,用于快速同步的大量RAM,以及一个处理txs并在很大负载下保持正常的处理器)。
希望能帮上忙。
发布于 2019-05-16 10:08:24
我想,所谓“真正的”区块链,指的是以太的主干网。
有几种方法可以连接到Ethereum的主干网。最简单的方法是通过因弗拉,就像你上面所说的。唯一的区别是您将从url中删除单词rinkeby
。您应该使用以下方法:
web3 = new Web3(new Web3.providers.HttpProvider("https://infura.io/$thisistheapikey"));
这很好,并将允许您执行所有的因弗拉允许你表演。
为了不依赖于恩弗拉,你需要运行一个节点。这可以是geth
、parity
或您选择的任何其他虚设节点。这比简单地依赖恩弗拉更难,但它将允许你完全控制你的节点交互。
另外,您也可以使用geth
和parity
运行任何测试网,只需设置某些标志即可。
https://ethereum.stackexchange.com/questions/70759
复制相似问题