1. 程式人生 > >QuikNode -Infura高配版

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網站,你可以看到類似下圖這樣的儀表盤:

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等區塊鏈相關的互動式線上程式設計實戰教程:

  • 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語言工程師快速入門區塊鏈開發的最佳選擇。

原文:QuikNode高效能以太坊節點服務【詳細指