在使用区块链技术存储数据的过程中,我们经常需要对数据进行时间戳签名,以证明数据是在特定的时间点创建或修改的。而 opentimestamps 是一种开源的时间戳服务协议,可以帮助我们实现时间戳签名的功能。而 npm 包 node-red-contrib-opentimestamps 则提供了在 node-red 中使用 opentimestamps 的便捷方法。本文将详细介绍如何使用该 npm 包。
安装
打开终端,进入你的 node-red 项目的目录下,然后执行以下命令:
npm install node-red-contrib-opentimestamps
该命令将会安装 node-red-contrib-opentimestamps 包及其所有依赖项。
使用
1. 添加节点
启动 node-red,然后在对应的流中添加一个 opentimestamps 节点。找到并拖动 opentimestamps 节点到你的流中。如下图:
2. 配置节点
双击添加的节点可以进入节点的设置页面。在页面中你需要填写如下配置信息:
2.1. 接收时间戳请求的 HTTP API 地址
该地址应该指向一个可以接收时间戳请求的 HTTP API。如果你还没有一个可用的 HTTP API,可以试试 opentimestamps.org 提供的在线 API,该 API 仅用于测试和开发环境,不应在生产环境中使用。
2.2. 时间戳请求数据 JSONPath 表达式
该参数用于指定需要签名的数据,可以是一个 msg 对象中的任意一个属性,使用 JSONPath 表达式指定。例如,下面的示例指定了用 msg.payload 中的数据进行签名:
$.payload
2.3. 存储时间戳的 msg 属性
签名成功后将会返回一个时间戳字符串,该属性指定存储该时间戳的 msg 属性的名称。例如,下面的示例指定了将时间戳存储在 msg.timestamp 属性中:
timestamp
3. 发送请求
在配置完成节点后,你可以直接运行你的流,当数据到达 opentimestamps 节点时,节点会将数据发送到指定的 HTTP API 请求签名,并将签名结果存储在你指定的 msg 属性中。
示例代码
下面是一个完整的示例代码,该代码定义了一个包含两个节点的 node-red 流。第一个节点用于生成一个随机数,第二个节点则用于对该随机数进行时间戳签名。
[{"id":"e09eb6d1.f6a0c","type":"random","z":"cfe16342.72df28","name":"","low":"1","high":"100","inte":"true","property":"payload","x":230,"y":200,"wires":[["b8cbe28f.3d3a28"]]},{"id":"b8cbe28f.3d3a28","type":"opentimestamps","z":"cfe16342.72df28","name":"","api":"https://testnet3.opentimestamps.org","reqdata":"$.payload","result":"timestamp","x":530,"y":200,"wires":[["f01781aa.087ef8"]]},{"id":"f01781aa.087ef8","type":"debug","z":"cfe16342.72df28","name":"","active":true,"tosidebar":true,"console":false,"tostatus":false,"complete":"payload","targetType":"msg","x":830,"y":200,"wires":[]}]
该代码可以直接导入到 node-red 中,点击 deploy 按钮即可运行。
小结
本文介绍了如何使用 npm 包 node-red-contrib-opentimestamps 实现时间戳签名的功能。通过本文的介绍,我们可以知道如何添加节点、配置节点及发送请求。希望本文对想要实现时间戳签名的开发者有帮助。
来源:JavaScript中文网 ,转载请注明来源 https://www.javascriptcn.com/post/6005692c81e8991b448e4b80