在本系列中,我将向您展示如何利用NodeJS中创建一个简单的加密货币应用程序,同时该应用程序可用于返回有关区块链的数据。此应用程序可以进一步扩展到创建区块链浏览器,钱包,以及其他用例。
先决条件
在继续之前,请确保您首先满足以下先决条件:
1. Node version 8.9.0+
2. NPM version 6.9.0+
3. Postman 7.1.1+
环境配置
开始着手创建一个新项目。对于这个例子,我使用node-rpc-tutorial作为我的项目名称。
在本教程中,我们将使用Divi Project的Divi Core区块链。https://diviproject.org/
Mac,Windows,Linux
下载适用于您的操作系统的最新版Divi。
基于ARM的机器
如果您使用的是ARM体系结构,请下载此版本。https://github.com/DiviProject/divi-smart-node/releases
配置Divi
如果你直接从./divid目录运行,守护程序将返回以下错误:
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
这里的关键部分是我用粗体突出显示的部分。
打开另一个终端选项卡或窗口,并找到到操作系统的相关divi数据目录。在您最喜欢的文本编辑器中打开divi.conf文件,并使用上面错误响应中生成的rpcuserand rpcpassword进行以下编辑:
# divi.conf
rpcuser=divirpc
rpcpassword=UseYourRandomlyGeneratedPWHere
daemon=1
现在回到第一个终端窗口,您可以运行
./divid -addressindex -txindex
addressindex和txindex标志确保您的节点将同步整个网络中的所有事务和地址信息。
配置应用程序
您的节点需要一段时间才能同步,因此在此期间,我们可以设置应用程序。
让我们在编写任何代码之前获取文件系统。
安装依赖项
通过从项目的根目录运行npm init来初始化新的package.json文件,并安装以下依赖项。
npm install --save body-parser path divid-rpc express request request-promise
打开package.json并添加一个启动脚本。
# package.json
{
...
"scripts": {
"start": "node index.js"
}
...
}
构建文件结构
在项目的根目录中创建以下文件:
· keys.js
· index.js
· src/config.js
· src/api.js
如果您使用的是OSX或Linux,则可以复制/粘贴以下行。
touch keys.js index.js && mkdir -p src && touch src/config.js src/api.js
配置验证
在文本编辑器中打开keys.js,并将rpcuser和rpcpassword添加到模块导出的键/值对,如下例所示。
# keys.js
module.exports = {
user: 'YOUR_RPCUSERNAME',
pass: 'YOUR_RPCPASSWORD'
}
打开src / config.js并配置divid-rpc以使用本地节点。
# config.js
const keys = require('../keys')
module.exports = {
config: {
protocol: 'http',
user: keys.user,
pass: keys.pass,
host: '127.0.0.1',
port: '51473'
}
}
现在您的项目已经准备好使用javascript以编程方式向divi守护进程发送/接收RPC消息。
构建API
现在已经配置了应用程序,我们可以开始编写一些将用于我们的区块链资源管理器的端点。让我们从简单的事情开始吧。
/ blockcount端点将返回我们的节点当前已同步的当前块数。
配置服务器
打开index.js并使用Express配置一个简单的服务器
通过从根目录运行npm start来测试服务器。
您应该收到以下回复:
App listening on port: 1337
测试API
在继续之前,请确保divid和服务器都在正常运行。如果在遵循本教程的过程中随时停止守护进程,请返回存储divi可执行文件的解压目录并运行/divid。
打开postman并开始新的GET请求。
在“输入请求URL”字段中,输入
localhost:1337/blockcount
按“sent”,postman将返回类似如下的响应:
{
"blockcount": 384339
}
到此,您已成功在区块链上创建了API应用。