在本系列中,我将向您展示如何利用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应用。