QuikNode -Infura的高性能替代服务

随着Web3的演化,开发者已经开始在以太坊区块链上快速开发去中心化应用。虽然在以太坊上开发dApp很酷,但是要搭建自己的以太坊节点还是挺令人头疼的一件事,这需要不短的时间,而且还需要一些技巧。QuikNode通过提供高性能的以太坊节点服务解决了这一问题,正如其官网所说,这是运行专用以太坊节点的最快、最简单的方法

要快速掌握区块链开发,推荐汇智网的区块链开发在线互动教程

1、为什么要使用QuikNode?

搭建你自己的以太坊节点非常繁琐,存在以下问题:

  • 占空间:区块链是分布式账本,一个全节点意味着你需要账本的完整拷贝。这已经不太可能使用家用计算机来完成全节点的同步了,因为目前以太坊区块链的数据大约有670GB,即使快速同步模式也需要120GB。
  • 耗时:取决于你的网速,第一次同步以太坊主网数据可能需要好几天的时间
  • 技能要求:最令人担心的还是节点的安全问题。你需要一些网络安全技能来保护你的节点。

2、QuikNode能够提供什么服务?

QuikNode通过直接提供全节点来解决这一问题,这听起来类似于Infura,但不同的是QuikNode提供给你的是专用节点,而不是共享的公共节点。QuikNode进行了性能、速度和灵活性的优化。让我们看看QuikNode是如何实现这一点的。

  • 专用节点

使用专用节点帮助你获得更好的区块链访问性能,因为它只接受你的dApp的调用。

  • 多区域

QuikNode支持8个不同的区域,这有助于优化网络调用时间,从而提高你的DApp的速度和性能。

  • 多测试网支持

QuikNode支持几乎所有流行的以太坊测试网,这使得开发者在测试网的选择上有了充分的灵活性,可以在自己喜欢的测试网上进行Dapp的测试。

  • 归档节点

QuikNode同时也提供Parity归档节点。一个归档节点将保存区块链账本的完整拷贝,而全节点则可能由于磁盘空间的问题进行剪枝处理。对于区块链分析和研究业务来讲这是非常重要的特性。

另外,QuikNode同时支持Geth和Parity,你可以根据自己的喜好来自由选择。

3、注册QuikNode账号

要使用QuikNode的服务,需要首先点击这里注册一个账号,别忘了保存你的用户名和密码,因为需要这些信息来访问你的QuikNode节点以及集成的Web钱包(QWallet)。一旦完成了注册,就可以配置你的节点。你可以选择网络、区域、客户端以及同步模式。你会看到你的节点的链接URL(类似下面这个),记得保存下来:

https://quiknode.io/node/86d9e35e-8cdb-47ad-80a4-84f9e9537afa/A-cU-9vjaepXeR6qPC8eOg==

一旦登录进QuikNode网站,你可以看到类似下图这样的仪表盘:

QuikNode -Infura的高性能替代服务_第1张图片

4、连接QuikNode节点

我已经创建了一个Kovan测试网,选择的区域是印度班加罗尔。记住,你的节点应当是就绪(READY)状态,否则就无法正常工作。如果不是就绪状态的话,你可以重建节点,如果有问题的话可以联系QuikNode团队。

QuikNode同时支持HTTPProvider和WebSockets,我们下面可以看到这一点。你可以在Dev Tools选项下找到这些链接URL:

QuikNode -Infura的高性能替代服务_第2张图片

现在让我们深入代码。

5、使用web3js和QuikNode发送以太坊交易

让我们测试下QuikNode来看看它是如何工作的。首先,我们用web3js通过QuikNode广播一个裸交易:

5.1 配置web3使用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);
})

5.2 创建一个账号

现在让我们在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);
});

5.3 签名以太坊交易

让我们使用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);
});

5.4 发送交易

现在让我们使用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链区块浏览器上查看这个交易。

6、使用QuikNode的WebSockets连接

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。

QuikNode -Infura的高性能替代服务_第3张图片

  • 订阅待定交易事件

让我们看看如何订阅以太坊区块链上的待定交易。你可以看到我们在初始化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);
    });

7、在Truffle中使用QuikNode

让我们看看如何在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
        }
    }
};

8、QuikNode的统计功能

现在让我们看一下QuikNode的统计功能,这可以帮助你了解你的DApp的工作情况。

  • 统计/已连接节点/节点日志

QuikNode提供不同类型的统计,你可以用来衡量DApp的使用情况。你可以查看请求次数、节点的负载情况以及Websocket消息等等。QuickNode同时也提供了你的节点已连接的其他节点的信息,以及节点的日志等等。

QuikNode -Infura的高性能替代服务_第4张图片

9、QWallet

QuikNode同时也为你的节点集成了一个Web钱包。QuikNode使用的是开源的MyEtherWallet。这个钱包软件会自动连接到你的节点,你可以使用登录QuikNode的用户名/密码来访问这个钱包。其他的钱包网站或其节点可能会下线,但是你始终可以使用你的QuikNode节点来
广播交易!

10、结语

QuikNode是以太坊生态系统中出色并且有益的补充,QuikNode的节点很快而且完全专用。大量高性能的DApp将不再需要使用自己的节点来获得性能的提升,所需要的就是开箱即用的QuikNode高性能以太坊节点。

如果你想学习区块链并在Blockchain Technologies建立职业生涯,那么请查看我们分享的一些以太坊、比特币、EOS、Fabric、Tendermint等区块链相关的交互式在线编程实战教程:


原文:QuikNode高性能以太坊节点服务【详细指南】- 汇智网

你可能感兴趣的:(以太坊)