使用 Tierion、RethinkDB 和 PubNub 在区块链中证明存在性
介绍
在本教程中,我们将使用Node.js、Tierion、RethinkDB、PubNub和jsreport-core创建一个与存在证明和来源戳非常相似的 Web 应用程序。
简而言之,这些网站允许您将文件的哈希值存储在比特币的区块链中,以便任何人都可以证明该文件在特定时间存在。
这具有以下优点:
- 它表明了数据所有权,但无需透露实际数据。
- 它检查文档的完整性。
- 使用区块链,您可以证明文档的存在,而无需中央权威机构。
- 实际上,这种分散的证明是无法被任何人抹去或修改的。
- 它是匿名的,因此其他人无法识别您或您的数据。
本页对存在证明进行了更详尽的解释,并涵盖了更多致力于实现存在证明的网站。
使用我们的应用程序,我们将能够通过将文件拖放到标记区域来上传文件。然后,将使用Tierion Hash API计算其SHA256 摘要并将其发送到区块链
请注意最后注册的文档列表是如何实时更新的;我们将使用PubNub 的存储和播放来实现实时同步。
文件的哈希值和 Tierion 提供的区块链收据存储在 RethinkDB 中,这是一个具有实时功能的 NoSQL 数据库。当 Tierion 提醒我们已处理完哈希块时,我们会使用RethinkDB 的 changefeed实时更新验证页面(以及已验证文档的列表):
如您所见,一旦哈希锚定到区块链,我们就可以使用Block Explorer或Blockchain.info等网站进行检查,并使用 jsreport-core 获取 PDF 格式的收据。
您还可以通过选择“验证”选项来验证文件是否已在区块链中认证:
如果你遇到困难或者想跳过前面的内容,可以在Github上找到本教程的源代码。
区块链
在深入研究代码之前,我们先来解释一下什么是比特币的区块链(简称区块链)。
Tierion 创始人兼首席执行官Wayne Vaughan在2016 年共识黑客马拉松期间发起了一项挑战:什么是区块链?获胜者是Lilia Vershinina,她回答道:
“区块链是互联网的信任层”。
很有趣。让我们看看能否澄清这个说法。顺便说一句,您可以在此处查看这背后的整个故事(以及其他答案)。
比特币背后的主要理念之一是去中心化。比特币不信任单一一方(如政府或机构)来管理和生产货币,而是一个没有中心故障点的点对点系统。因此,区块链是一个分布在全球节点网络中的比特币交易公共数据库。
区块链包含自 2009 年比特币诞生以来的所有比特币交易,这些交易以相互链接的区块链的形式表示。这些交易涵盖从创世区块(即区块链的第一个区块)到最新区块。
当比特币交易被广播时,矿工会在本地拾取这些交易以形成比特币区块。矿工使用指定的数学公式来验证这个区块。
哈希值用于表示区块的验证。此哈希值使用此区块和前一个区块的哈希值计算得出,从而形成哈希链。您可以在这里看到信任的概念;如果任何交易被修改或作废,则哈希值以及链的其余部分将变为无效。
因此,随着区块链的增长和矿工保存的副本数量增加,修改区块链的难度也会随之增加。此外,挖矿难度的增加导致区块生成速度大约为每十分钟一次,这是一个相当缓慢的速度。
这是对区块链的(非常)高层次的概述。有无数的文章和书籍对此进行了解释和讨论。如果您想了解更多信息,请尝试此搜索。
现在我们了解了区块、区块链、比特币和挖矿,让我们深入了解我们的 Web 应用程序。
必备条件
蒂里翁
重新思考数据库
您需要安装 RethinkDB 服务器。更简单的安装方法是使用官方软件包之一。
本教程不会介绍 RethinkDB 的基础知识,但如果您还没有使用过RethinkDB,可以查阅其十分钟指南或我的入门指南。
PubNub
前往 https://admin.pubnub.com/#/register 并登录。如有必要,创建一个新帐户。登录后,您将看到以下屏幕:
您可以创建新应用或使用演示应用。单击它时,您将看到以下内容:
保存您的发布和订阅密钥,因为我们稍后会需要它们。现在单击密钥集面板,然后转到应用程序附加组件部分以启用存储和播放。Pubnub 的存储和播放将让我们确定我们希望存储消息的时间段。同时启用Stream Controller附加组件。最后,保存更改:
我们将使用全新的 PubNub SDK for Javascript 版本 4,它与版本 3 略有不同。这是Node.js 文档和Javascript(Web)文档。
恩格罗克
当哈希块已锚定在区块链中时,Tierion 将触发 webhook(类似于回调)。将向我们的服务器发出 HTTP 请求,因此我们需要在云端部署我们的应用程序或将其保存在本地并使用 ngrok 之类的服务。
Ngrok 通过创建安全隧道并为您提供公共 URL 将外部请求代理到您的本地机器。
ngrok 是一个 Go 程序,以单个可执行文件的形式分发(无需其他依赖项)。目前,只需从 https://ngrok.com/download 下载并解压压缩文件即可。
Node.js
您还需要安装 Node.js 和 npm。您可以在此处下载适合您平台的安装程序。
满足要求后,我们就可以开始使用该应用程序了。
设置项目
目录和依赖项
创建一个新目录并进入该目录:
mkdir blockchain-proof && cd blockchain-proof
现在创建一个package.json文件,可以使用以下方式:
npm init
或者接受默认值:
npm init -y
免责声明:本内容来源于第三方作者授权、网友推荐或互联网整理,旨在为广大用户提供学习与参考之用。所有文本和图片版权归原创网站或作者本人所有,其观点并不代表本站立场。如有任何版权侵犯或转载不当之情况,请与我们取得联系,我们将尽快进行相关处理与修改。感谢您的理解与支持!
请先 登录后发表评论 ~