在本系列中,我將向您展示如何利用NodeJS中創(chuàng)建一個(gè)簡(jiǎn)單的加密貨幣應(yīng)用程序,同時(shí)該應(yīng)用程序可用于返回有關(guān)區(qū)塊鏈的數(shù)據(jù)。此應(yīng)用程序可以進(jìn)一步擴(kuò)展到創(chuàng)建區(qū)塊鏈瀏覽器,錢(qián)包,以及其他用例。
先決條件
在繼續(xù)之前,請(qǐng)確保您首先滿(mǎn)足以下先決條件:
1. Node version 8.9.0+
2. NPM version 6.9.0+
3. Postman 7.1.1+
環(huán)境配置
開(kāi)始著手創(chuàng)建一個(gè)新項(xiàng)目。對(duì)于這個(gè)例子,我使用node-rpc-tutorial作為我的項(xiàng)目名稱(chēng)。
在本教程中,我們將使用Divi Project的Divi Core區(qū)塊鏈。https://diviproject.org/
Mac,Windows,Linux
下載適用于您的操作系統(tǒng)的最新版Divi。
基于ARM的機(jī)器
如果您使用的是ARM體系結(jié)構(gòu),請(qǐng)下載此版本。https://github.com/DiviProject/divi-smart-node/releases
配置Divi
如果你直接從。/divid目錄運(yùn)行,守護(hù)程序?qū)⒎祷匾韵洛e(cuò)誤:
Error: To use divid, or the -server option to divi-qt,
you must set an rpcpassword in the configuration file:
/Users/99darwin/Library/Application Support/DIVI/divi.conf
It is recommended you use the following random password:
rpcuser=divirpc
rpcpassword=3PfKoXerwDMCA7vHv95WbecWsHzL664sfnNpottDH8Uz
(you do not need to remember this password)
The username and password MUST NOT be the same.
If the file does not exist, create it with owner-readable-only file
permissions.
It is also recommended to set alertnotify so you are notified of
problems;
for example: alertnotify=echo %s | mail -s “DIVI Alert” admin@foo.com
這里的關(guān)鍵部分是我用粗體突出顯示的部分。
打開(kāi)另一個(gè)終端選項(xiàng)卡或窗口,并找到到操作系統(tǒng)的相關(guān)divi數(shù)據(jù)目錄。在您最喜歡的文本編輯器中打開(kāi)divi.conf文件,并使用上面錯(cuò)誤響應(yīng)中生成的rpcuserand rpcpassword進(jìn)行以下編輯:
# divi.conf
rpcuser=divirpc
rpcpassword=UseYourRandomlyGeneratedPWHere
daemon=1
現(xiàn)在回到第一個(gè)終端窗口,您可以運(yùn)行
。/divid -addressindex -txindex
addressindex和txindex標(biāo)志確保您的節(jié)點(diǎn)將同步整個(gè)網(wǎng)絡(luò)中的所有事務(wù)和地址信息。
配置應(yīng)用程序
您的節(jié)點(diǎn)需要一段時(shí)間才能同步,因此在此期間,我們可以設(shè)置應(yīng)用程序。
讓我們?cè)诰帉?xiě)任何代碼之前獲取文件系統(tǒng)。
安裝依賴(lài)項(xiàng)
通過(guò)從項(xiàng)目的根目錄運(yùn)行npm init來(lái)初始化新的package.json文件,并安裝以下依賴(lài)項(xiàng)。
npm install --save body-parser path divid-rpc express request request-promise
打開(kāi)package.json并添加一個(gè)啟動(dòng)腳本。
# package.json
{
。..
“scripts”: {
“start”: “node index.js”
}
。..
}
構(gòu)建文件結(jié)構(gòu)
在項(xiàng)目的根目錄中創(chuàng)建以下文件:
· keys.js
· index.js
· src/config.js
· src/api.js
如果您使用的是OSX或Linux,則可以復(fù)制/粘貼以下行。
touch keys.js index.js && mkdir -p src && touch src/config.js src/api.js
配置驗(yàn)證
在文本編輯器中打開(kāi)keys.js,并將rpcuser和rpcpassword添加到模塊導(dǎo)出的鍵/值對(duì),如下例所示。
# keys.js
module.exports = {
user: ‘YOUR_RPCUSERNAME’,
pass: ‘YOUR_RPCPASSWORD’
}
打開(kāi)src / config.js并配置divid-rpc以使用本地節(jié)點(diǎn)。
# config.js
const keys = require(‘。./keys’)
module.exports = {
config: {
protocol: ‘http’,
user: keys.user,
pass: keys.pass,
host: ‘127.0.0.1’,
port: ‘51473’
}
}
現(xiàn)在您的項(xiàng)目已經(jīng)準(zhǔn)備好使用javascript以編程方式向divi守護(hù)進(jìn)程發(fā)送/接收RPC消息。
構(gòu)建API
現(xiàn)在已經(jīng)配置了應(yīng)用程序,我們可以開(kāi)始編寫(xiě)一些將用于我們的區(qū)塊鏈資源管理器的端點(diǎn)。讓我們從簡(jiǎn)單的事情開(kāi)始吧。
/ blockcount端點(diǎn)將返回我們的節(jié)點(diǎn)當(dāng)前已同步的當(dāng)前塊數(shù)。
配置服務(wù)器
打開(kāi)index.js并使用Express配置一個(gè)簡(jiǎn)單的服務(wù)器
通過(guò)從根目錄運(yùn)行npm start來(lái)測(cè)試服務(wù)器。
您應(yīng)該收到以下回復(fù):
App listening on port: 1337
測(cè)試API
在繼續(xù)之前,請(qǐng)確保divid和服務(wù)器都在正常運(yùn)行。如果在遵循本教程的過(guò)程中隨時(shí)停止守護(hù)進(jìn)程,請(qǐng)返回存儲(chǔ)divi可執(zhí)行文件的解壓目錄并運(yùn)行/divid。
打開(kāi)postman并開(kāi)始新的GET請(qǐng)求。
在“輸入請(qǐng)求URL”字段中,輸入
localhost:1337/blockcount
按“sent”,postman將返回類(lèi)似如下的響應(yīng):
{
“blockcount”: 384339
}
到此,您已成功在區(qū)塊鏈上創(chuàng)建了API應(yīng)用。
評(píng)論
查看更多