高性能以太坊节点服务QuikNode详细介绍

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

随着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网站,你可以看到类似下图这样的仪表盘:

4、连接QuikNode节点

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

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

现在让我们深入代码。

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。

  • 订阅待定交易事件

让我们看看如何订阅以太坊区块链上的待定交易。你可以看到我们在初始化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同时也提供了你的节点已连接的其他节点的信息,以及节点的日志等等。

9、QWallet

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

10、结语

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

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


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

目录
相关文章
|
5月前
|
存储 负载均衡 NoSQL
高速读写、负载均衡:基础架构KV存储项目最佳实践
高速读写、负载均衡:基础架构KV存储项目最佳实践
|
11月前
|
算法 区块链 数据库
区块链101:什么是分布式分类帐?
区块链101:什么是分布式分类帐?
|
存储 供应链 算法
|
区块链 算法 开发者
带你读《深入理解以太坊》之一:以太坊概述
这是一本从原理和实践两个层面系统、深入讲解以太坊技术的专著,从设计理念、技术架构、共识算法、智能合约、以太坊虚拟机、开发工具、DApp开发、企业以太坊解决方案、跨链技术等近10个方面进行了详细讲解,既适合初学者系统学习以太坊的原理和应用开发,又适合有一定基础的开发者深入掌握以太坊的底层运行机制。
|
前端开发
fabric多机多节点部署
fabric balance-transfer多机多节点部署遇到的问题
1901 0
|
存储 程序员 区块链
以太坊DApp如何用IPFS存储并调用数据
正在构建的一个Dapp。Dapp包括一些用户数据,如电子邮件、姓名和个人图片等。我想将用户数据内容存储在IPFS中,通过一个JSON对象,并用IPFS hash处理过。
3961 0
|
区块链 开发工具 数据安全/隐私保护
|
存储 区块链 数据库
区块链应用 | 区块链膨胀:以太坊客户端如何解决存储问题
随着存储的时间和金钱成本的增加,选择运行完整节点的人越来越少,许多人担心这将导致以太坊网络的寡头化。
1065 0