隨着Web3的演化,開發者已經開始在以太坊區塊鏈上快速開發去中心化應用。雖然 在以太坊上開發dApp很酷,可是要搭建本身的以太坊節點仍是挺使人頭疼的一件事, 這須要不短的時間,並且還須要一些技巧。QuikNode 經過提供高性能的以太坊節點服務解決了這一問題,正如其官網所說,這是運行專用以太坊節點的最快、最簡單的 方法。php
搭建你本身的以太坊節點很是繁瑣,存在如下問題:前端
QuikNode經過直接 提供全節點來解決這一問題,這聽起來相似於Infura,但不一樣的是QuikNode 提供給你的是專用節點,而不是共享的公共節點。QuikNode進行了性能、速度和靈活性的 優化。讓咱們看看QuikNode是如何實現這一點的。java
使用專用節點幫助你得到更好的區塊鏈訪問性能,由於它只接受你的dApp的調用。node
QuikNode支持8個不一樣的區域,這有助於優化網絡調用時間,從而提升你的DApp的速度和性能。python
QuikNode支持幾乎全部流行的以太坊測試網,這使得開發者在測試網的選擇上有了充分的靈活性, 能夠在本身喜歡的測試網上進行Dapp的測試。android
QuikNode同時也提供Parity歸檔節點。一個歸檔節點將保存區塊鏈帳本的完整拷貝,而全節點則 可能因爲磁盤空間的問題進行剪枝處理。對於區塊鏈分析和研究業務來說這是很是重要的特性。程序員
另外,QuikNode同時支持Geth和Parity,你能夠根據本身的喜愛來自由選擇。web
要使用QuikNode的服務,須要首先點擊這裏 註冊一個帳號,別忘了保存你的用戶名和密碼,由於須要這些信息來訪問你的QuikNode節點 以及集成的Web錢包(QWallet)。一旦完成了註冊,就能夠配置你的節點。你能夠選擇網絡、區域、客戶端 以及同步模式。你會看到你的節點的連接URL(相似下面這個),記得保存下來:mongodb
https://quiknode.io/node/86d9e35e-8cdb-47ad-80a4-84f9e9537afa/A-cU-9vjaepXeR6qPC8eOg==
一旦登陸進QuikNode網站,你能夠看到相似下圖這樣的儀表盤:npm
我已經建立了一個Kovan測試網,選擇的區域是印度班加羅爾。記住,你的節點應當是就緒(READY)狀態, 不然就沒法正常工做。若是不是就緒狀態的話,你能夠重建節點,若是有問題的話能夠聯繫QuikNode團隊。
QuikNode同時支持HTTPProvider和WebSockets,咱們下面能夠看到這一點。你能夠在Dev Tools選項下找到 這些連接URL:
如今讓咱們深刻代碼。
讓咱們測試下QuikNode來看看它是如何工做的。首先,咱們用web3js經過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); })
如今讓咱們在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); });
讓咱們使用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); });
如今讓咱們使用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。你能夠在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); });
讓咱們看看如何在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的統計功能,這能夠幫助你瞭解你的DApp的工做狀況。
QuikNode提供不一樣類型的統計,你能夠用來衡量DApp的使用狀況。你能夠查看請求次數、 節點的負載狀況以及Websocket消息等等。QuickNode同時也提供了你的節點已鏈接的 其餘節點的信息,以及節點的日誌等等。
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語言工程師快速入門區塊鏈開發的最佳選擇。