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