随着Web3的演化,开发者已经开始在以太坊区块链上快速开发去中心化应用。虽然在以太坊上开发dApp很酷,但是要搭建自己的以太坊节点还是挺令人头疼的一件事,这需要不短的时间,而且还需要一些技巧。QuikNode通过提供高性能的以太坊节点服务解决了这一问题,正如其官网所说,这是运行专用以太坊节点的最快、最简单的方法。
要快速掌握区块链开发,推荐汇智网的区块链开发在线互动教程
搭建你自己的以太坊节点非常繁琐,存在以下问题:
QuikNode通过直接提供全节点来解决这一问题,这听起来类似于Infura,但不同的是QuikNode提供给你的是专用节点,而不是共享的公共节点。QuikNode进行了性能、速度和灵活性的优化。让我们看看QuikNode是如何实现这一点的。
使用专用节点帮助你获得更好的区块链访问性能,因为它只接受你的dApp的调用。
QuikNode支持8个不同的区域,这有助于优化网络调用时间,从而提高你的DApp的速度和性能。
QuikNode支持几乎所有流行的以太坊测试网,这使得开发者在测试网的选择上有了充分的灵活性,可以在自己喜欢的测试网上进行Dapp的测试。
QuikNode同时也提供Parity归档节点。一个归档节点将保存区块链账本的完整拷贝,而全节点则可能由于磁盘空间的问题进行剪枝处理。对于区块链分析和研究业务来讲这是非常重要的特性。
另外,QuikNode同时支持Geth和Parity,你可以根据自己的喜好来自由选择。
要使用QuikNode的服务,需要首先点击这里注册一个账号,别忘了保存你的用户名和密码,因为需要这些信息来访问你的QuikNode节点以及集成的Web钱包(QWallet)。一旦完成了注册,就可以配置你的节点。你可以选择网络、区域、客户端以及同步模式。你会看到你的节点的链接URL(类似下面这个),记得保存下来:
https://quiknode.io/node/86d9e35e-8cdb-47ad-80a4-84f9e9537afa/A-cU-9vjaepXeR6qPC8eOg==
一旦登录进QuikNode网站,你可以看到类似下图这样的仪表盘:
我已经创建了一个Kovan测试网,选择的区域是印度班加罗尔。记住,你的节点应当是就绪(READY)状态,否则就无法正常工作。如果不是就绪状态的话,你可以重建节点,如果有问题的话可以联系QuikNode团队。
QuikNode同时支持HTTPProvider和WebSockets,我们下面可以看到这一点。你可以在Dev Tools选项下找到这些链接URL:
现在让我们深入代码。
让我们测试下QuikNode来看看它是如何工作的。首先,我们用web3js通过QuikNode广播一个裸交易:
让我们创建一个node.js项目并安装web3js包。创建项目目录然后运行下面的命令:
~$ mkdir quiknode
~/quiknode$ cd quiknode
~/quiknode$ npm init
~/quiknode$ npm install web3
接下来让我们创建一个Index.js文件并安装web3。正如你看到的,我们使用QuikNode 的HttpProvider连接来接入我们的节点,并访问Kovan链:
const Web3 = require('web3')
const httpProvider = "https://mistakenly-smart-jay.quiknode.io/86d9e35e-8cdb-47ad-80a4-84f9e9537afa/C0_tKUunhUc0rM_i1HMxHA==/"
var web3 = new Web3(new Web3.providers.HttpProvider(httpProvider));
然后添加如下的代码来测试网络并检查网络ID,kovan的网络ID是42:
web3.eth.net.getId(function(err, data){
console.log(data);
})
现在让我们在KOVan网络上创建一个以太坊账号:
var addressData =web3.eth.accounts.create(web3.utils.randomHex(32));
console.log(addressData);
这将会得到一个私钥和地址,我们将使用这个私钥来创建裸交易。
首先看一下账号的余额:
web3.eth.getBalance('0x75E18d32f2DbEEfaF4055aD709BDe98eCB57C379', (err, wei) => {
balance = web3.utils.fromWei(wei, 'ether')
console.log(balance);
});
让我们使用Kovan链的Faucet获取一些测试链的以太币,然后进行交易的签名。你可以创建一个新地址作为收款方,或者使用Kovan区块浏览器中的任何地址:
web3.eth.accounts.signTransaction({
from: address, // our address
to: address2, // any other kovan network address you want to send
value: '2000000000000000',
gas: '8000000'
}, privateKey, function(err, data) {
console.log(data);
});
现在让我们使用QuikNode广播签名的交易:
web3.eth.accounts.signTransaction({
from: address,
to: address2,
value: '2000000000000000',
gas: '8000000'
}, privateKey, function(err, data) {
web3.eth.sendSignedTransaction(data.rawTransaction, function(err, receipt) {
console.log("receipt", receipt);
web3.eth.getTransaction(receipt, function(err, data) {
console.log("transaction", data);
})
});
});
我们已经成功地通过QuikNode在Kovan链上发送了一个交易,你可以在Kovan链区块浏览器上查看这个交易。
QuikNode也支持WebSockets。你可以在Dev Tools选项下找到webSockets连接的URL。或者你也可以很使用HTTPs Auth或Token Auth。Token auth链接看起来像下面这样:
- Token auth: wss://mistakenly-smart-jay.quiknode.io/86d9e35e-8cdb-47ad-80a4-84f9e9537afa/C0_tKUunhUc0rM_i1HMxHA==/
WebSockets在任何时刻都允许服务端和客户端同时推送消息,这与HTTP每次请求都需要建立与服务端的连接。WebSocket连接只需要创建一次,然后服务端和客户端就可以在这个连接上推送消息了。对于基于事件的系统而言,websockets是最合适的选择,几乎所有的浏览器都支持websockets。
让我们看看如何订阅以太坊区块链上的待定交易。你可以看到我们在初始化web3时传入了QuikNode的WebSocket连接URI:
const Web3 = require('web3')
const webSocket = "wss://mistakenly-smart-jay.quiknode.io/86d9e35e-8cdb-47ad-80a4-84f9e9537afa/C0_tKUunhUc0rM_i1HMxHA==/"
var web3 = new Web3(webSocket);
var subscription = web3.eth.subscribe('pendingTransactions', function(error, result) {
if (!error)
console.log(result);
})
.on("data", function(transaction) {
console.log(transaction);
});
让我们看看如何在Truffle中使用QuikNode来部署智能合约。为此我们先下载Truffle的petshop示例代码,我们直接拉取petshop模板然后使用QuikNode部署:
~/petshop$ truffle unbox pet-shop
我们将使用truffle-HD-wallet来部署我们的pet-shop智能合约。因此你需要同时安装这个NPM包:
~/petshop$ npm install truffle-hdwallet-provider
现在让我们看看Truffle的配置文件。我们只需要如下添加QuikNode的HttpProvider连接URI:
var HDWalletProvider = require("truffle-hdwallet-provider");
var mnemonic = "YOUR_MEMONICS"; // use a funded wallet
module.exports = {
networks: {
development: {
host: "127.0.0.1",
port: 7545,
network_id: "*" // Match any network id
},
kovan: {
provider: function() {
return new HDWalletProvider(mnemonic, "https://mistakenly-smart-jay.quiknode.io/86d9e35e-8cdb-47ad-80a4-84f9e9537afa/C0_tKUunhUc0rM_i1HMxHA==/")
},
network_id: 42
}
}
};
现在让我们看一下QuikNode的统计功能,这可以帮助你了解你的DApp的工作情况。
QuikNode提供不同类型的统计,你可以用来衡量DApp的使用情况。你可以查看请求次数、节点的负载情况以及Websocket消息等等。QuickNode同时也提供了你的节点已连接的其他节点的信息,以及节点的日志等等。
QuikNode同时也为你的节点集成了一个Web钱包。QuikNode使用的是开源的MyEtherWallet。这个钱包软件会自动连接到你的节点,你可以使用登录QuikNode的用户名/密码来访问这个钱包。其他的钱包网站或其节点可能会下线,但是你始终可以使用你的QuikNode节点来
广播交易!
QuikNode是以太坊生态系统中出色并且有益的补充,QuikNode的节点很快而且完全专用。大量高性能的DApp将不再需要使用自己的节点来获得性能的提升,所需要的就是开箱即用的QuikNode高性能以太坊节点。
如果你想学习区块链并在Blockchain Technologies建立职业生涯,那么请查看我们分享的一些以太坊、比特币、EOS、Fabric、Tendermint等区块链相关的交互式在线编程实战教程:
原文:QuikNode高性能以太坊节点服务【详细指南】- 汇智网