QuikNode高性能以太坊节点服务【详细指南】

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

区块链开发课程精选

一、为何要使用QuikNode?

搭建你本身的以太坊节点很是繁琐,存在如下问题:前端

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

二、QuikNode可以提供什么服务?

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

  • 专用节点

使用专用节点帮助你得到更好的区块链访问性能,由于它只接受你的dApp的调用。node

  • 多区域

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

  • 多测试网支持

QuikNode支持几乎全部流行的以太坊测试网,这使得开发者在测试网的选择上有了充分的灵活性,能够在本身喜欢的测试网上进行Dapp的测试。android

  • 归档节点

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

另外,QuikNode同时支持Geth和Parity,你能够根据本身的喜爱来自由选择。web

<a href="https://quiknode.io?tap_a=46941-f71438&tap_s=505567-c2496b" target="_BLANK" rel="nofollow"><img src="https://static.tapfiliate.com/5c9e4b208704d.png?a=46941-f71438&s=505567-c2496b" border="0"></a>mongodb

三、注册QuikNode帐号

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

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

一旦登陆进QuikNode网站,你能够看到相似下图这样的仪表盘:

<a href="https://quiknode.io?tap_a=46941-f71438&tap_s=505567-c2496b" target="_BLANK" rel="nofollow"> <img src="quiknode-intro/dashboard.png" alt="dashboard"> </a>

四、链接QuikNode节点

我已经建立了一个Kovan测试网,选择的区域是印度班加罗尔。记住,你的节点应当是就绪(READY)状态,不然就没法正常工做。若是不是就绪状态的话,你能够重建节点,若是有问题的话能够联系QuikNode团队。

QuikNode同时支持HTTPProvider和WebSockets,咱们下面能够看到这一点。你能够在Dev Tools选项下找到这些连接URL:

<a href="https://quiknode.io?tap_a=46941-f71438&tap_s=505567-c2496b" target="_BLANK" rel="nofollow"> <img src="quiknode-intro/url.png" alt="node url"> </a>

如今让咱们深刻代码。

五、使用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链区块浏览器上查看这个交易。

六、使用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。

<a href="https://quiknode.io?tap_a=46941-f71438&tap_s=505567-c2496b" target="_BLANK" rel="nofollow"> <img src="quiknode-intro/websockets.png" alt="websockets"> </a>

  • 订阅待定交易事件

让咱们看看如何订阅以太坊区块链上的待定交易。你能够看到咱们在初始化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中使用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的统计功能

如今让咱们看一下QuikNode的统计功能,这能够帮助你了解你的DApp的工做状况。

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

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

<a href="https://quiknode.io?tap_a=46941-f71438&tap_s=505567-c2496b" target="_BLANK" rel="nofollow"> <img src="quiknode-intro/stats.png" alt="stats"> </a>

九、QWallet

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

十、结语

QuikNode是以太坊生态系统中出色而且有益的补充,QuikNode的节点很快并且彻底专用。大量高性能的DApp将再也不须要使用本身的节点来得到性能的提高,所须要的就是开箱即用的QuikNode高性能以太坊节点。

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

  • java以太坊开发教程,主要是针对java和android程序员进行区块链以太坊开发的web3j详解。
  • python以太坊,主要是针对python工程师使用web3.py进行区块链以太坊开发的详解。
  • php以太坊,主要是介绍使用php进行智能合约开发交互,进行帐号建立、交易、转帐、代币开发以及过滤器和交易等内容。
  • 以太坊入门教程,主要介绍智能合约与dapp应用开发,适合入门。
  • 以太坊开发进阶教程,主要是介绍使用node.js、mongodb、区块链、ipfs实现去中心化电商DApp实战,适合进阶。
  • ERC721以太坊通证明战,课程以一个数字艺术品创做与分享DApp的实战开发为主线,深刻讲解以太坊非同质化通证的概念、标准与开发方案。内容包含ERC-721标准的自主实现,讲解OpenZeppelin合约代码库二次开发,实战项目采用Truffle,IPFS,实现了通证以及去中心化的通证交易所。
  • C#以太坊,主要讲解如何使用C#开发基于.Net的以太坊应用,包括帐户管理、状态与交易、智能合约开发与交互、过滤器和交易等。
  • java比特币开发教程,本课程面向初学者,内容即涵盖比特币的核心概念,例如区块链存储、去中心化共识机制、密钥与脚本、交易与UTXO等,同时也详细讲解如何在Java代码中集成比特币支持功能,例如建立地址、管理钱包、构造裸交易等,是Java工程师不可多得的比特币开发学习课程。
  • php比特币开发教程,本课程面向初学者,内容即涵盖比特币的核心概念,例如区块链存储、去中心化共识机制、密钥与脚本、交易与UTXO等,同时也详细讲解如何在Php代码中集成比特币支持功能,例如建立地址、管理钱包、构造裸交易等,是Php工程师不可多得的比特币开发学习课程。
  • c#比特币开发教程,本课程面向初学者,内容即涵盖比特币的核心概念,例如区块链存储、去中心化共识机制、密钥与脚本、交易与UTXO等,同时也详细讲解如何在C#代码中集成比特币支持功能,例如建立地址、管理钱包、构造裸交易等,是C#工程师不可多得的比特币开发学习课程。
  • EOS入门教程,本课程帮助你快速入门EOS区块链去中心化应用的开发,内容涵盖EOS工具链、帐户与钱包、发行代币、智能合约开发与部署、使用代码与智能合约交互等核心知识点,最后综合运用各知识点完成一个便签DApp的开发。
  • 深刻浅出玩转EOS钱包开发,本课程以手机EOS钱包的完整开发过程为主线,深刻学习EOS区块链应用开发,课程内容即涵盖帐户、计算资源、智能合约、动做与交易等EOS区块链的核心概念,同时也讲解如何使用eosjs和eosjs-ecc开发包访问EOS区块链,以及如何在React前端应用中集成对EOS区块链的支持。课程内容深刻浅出,很是适合前端工程师深刻学习EOS区块链应用开发。
  • Hyperledger Fabric 区块链开发详解,本课程面向初学者,内容即包含Hyperledger Fabric的身份证书与MSP服务、权限策略、信道配置与启动、链码通讯接口等核心概念,也包含Fabric网络设计、nodejs链码与应用开发的操做实践,是Nodejs工程师学习Fabric区块链开发的最佳选择。
  • Hyperledger Fabric java 区块链开发详解,课程面向初学者,内容即包含Hyperledger Fabric的身份证书与MSP服务、权限策略、信道配置与启动、链码通讯接口等核心概念,也包含Fabric网络设计、java链码与应用开发的操做实践,是java工程师学习Fabric区块链开发的最佳选择。
  • tendermint区块链开发详解,本课程适合但愿使用tendermint进行区块链开发的工程师,课程内容即包括tendermint应用开发模型中的核心概念,例如ABCI接口、默克尔树、多版本状态库等,也包括代币发行等丰富的实操代码,是go语言工程师快速入门区块链开发的最佳选择。

原文:Run your own Ethereum Node

汇智网翻译整理,转载请标明出处

相关文章
相关标签/搜索