基于Fabric+IPFS大规模数据上链方案

2023-10-31

基于Fabric+IPFS大规模数据上链方案

更多区块链技术与应用分类:
区块链应用 区块链开发
以太坊 | Fabric | BCOS | 密码技术 | 共识算法 | 比特币 | 其他链
通证经济 | 传统金融场景 | 去中心化金融 | 防伪溯源 | 数据共享 | 可信存证

第一章 系统综述

  区块链是创造信任的机器,但是数据存储与读取的效率十分低下,两者不可兼得的情况下,一种新的方式,既弥补区块链的效率,又能利用其“信任”与“不可篡改”特性。该方案使用区块链+分布式存储。
  Fabric简介、适用场景:Hyperledger Fabric的出现是对传统区块链模型的一种革新,在某种程度上允许创建授权和非授权的区块链,Hyperledger还通过提供一个针对身份识别,可审计、隐私安全和健壮的模型,使得缩短计算周期、提高规模效率和响应各个行业的应用需求成为可能。
  IPFS简介、适用场景:分布式存储。
  Fabric+IPFS优点、适用场景:无需全部数据上链即可产生信任。
  本系统以后台服务开发为核心,作为链接客户端、IPFS及Fabric区块链的服务部件,如图1所示。当大量数据需要可靠实时地存储,并且在未来需要得到验证时,必须将数据以某种形式存入区块链。而传统区块链系统为了“安全”而牺牲“效率”,因此其数据存储的容量与速率非常低下,因此不能存放大规模数据。基于这种考虑,我们可以利用区块链+分布式存储的方式解决大规模数据上链的问题,将原始数据存于类似IPFS等分布式系统中,并将源文件的地址存储于区块链永久保存,用户可以通过区块链上文件的地址信息随时去获取这些数据。同时为了保证IPFS上数据不被篡改,必须将文件的指纹(Hash算法结果)也一并存入区块链,这样用户可以将得到的链上数据进行验证,以确定数据的完整性与可靠性。


在这里插入图片描述
图1-后台服务架构

后台服务采用nodejs编写,总体功能可分为两部分:

  • 数据存储:后台可将数据打包成块并向IPFS发送,所有数据存储在IPFS上,然后将IPFS上文件存储地址以及文件指纹存在Fabric区块链网络上,这样可公开验证数据。
  • 数据查询:客户端可以通过查询内容的方式,即基于内容检索得到Fabric以及IPFS上具体信息。
1.3 运行环境
  • 硬件支持:

    • 本后台服务需要Fabric区块链网络以及IPFS节点的支持。
    • Fabric若以伪集群的方式运行,则推荐配置为四核cpu内存8G,操作系统centos7 /Windows10配置或以上。
    • IPFS运行单节点,推荐配置为单核cpu内存2G操作系统centos7 /Windows10配置或以上。
    • Nodejs服务推荐配置为双核cpu内存2G操作系统centos7 /Windows10配置或以上。
  • 软件支持:

    • go-ipfs version: 0.4.18
    • nodejs version: 8.1.0
    • go version :go1.9.2 windows/amd64
    • docke version: 18.09.2
    • docker-compose version: 1.23.2
    • Hyperledger Fabric version: 1.1.0
    • ipfs version: 0.4.18
第二章 功能详述
2.1 软件功能流程图

  该后台软件主要处理大规模数据上链,因此重在数据存储和数据查询两部分逻辑,整个流程图如图2所示。当数据存储时,后台服务不断收到来自客户端的数据时,每接受一条数据需要先判断是否是正确的传输格式,并统计该客户端发送数据条数。每个不同的客户端有唯一ID,数据以ID作为索引键值,故以“天”为单位进行数据块打包,即一天的数据作为一个独立数据块,这样方便管理和查询。在达到预定义区块大小(一日的数据量)时对客户端数据进行分块打包,每次打包完块后立即存入IPFS,并获取IPFS存储块的地址。然后,将该数据块的IPFS地址以及文件指纹存入Fabric区块链进行保存。
当数据查询时,客户端发起请求获取原始数据,服务启动Fabric链,然后查询链码是否存在该ID、日期下的IPFS地址信息,若不存在,这说明不存在数据,否则继续查询IPFS。根据IPFS上对应数据块文件的Hash地址从IPFS上拿到原始数据,并可以利用Fabric上文件指纹与IPFS上原始数据进行比对验证,若两者一致则可以确定该数据块未被篡改。

在这里插入图片描述
图2-软件流程图

2.2 功能设计详细描述
1 数据存储

数据存储功能实现流程图如图3所示,下面是详细步骤:
(1) 客户端通过http-post方式以特定数据格式(Json)向后台服务发送数据
该后端服务会记录每一个连接的客户端处发来数据数目,并更新其数据文件指纹,当达到预设值时,进行打包操作,并使用流的方式向IPFS发送数据。
(2) 数据块存储在IPFS上,然后返回存储地址
(3) 后台服务将先前计算的文件指纹与IPFS文件存储地址组合且生成新的一条上链数据,然后通过调用Fabric链码将信息存储在Peer节点账本上。
(4) Fabric向服务端返回本次存储交易的Hash值。


在这里插入图片描述图3 数据存储功能实现流程图

2 数据查询

数据查询功能实现流程图如图4所示,下面是详细步骤:
(1) 客户端通过唯一ID值和日期等内容查询相关信息,通过http-get方式向服务后台请求数据。例如请求url:http://localhost:60003/querydata?obdid=X7777-S6665&date=2019-4-3 ,是用户查询的接口,意思是ID为X7777-S6665日期为2019-4-3这天的该日数据块。
(2) 后台将会自动启动Fabric链码容器,执行链码中相应的查询方法。
(3) Fabric将匹配正确的数据(包含IPFS文件存储地址以及文件指纹)返回。例如如下信息:
{“obdid”:“X7777-S6665”,“dataDate”:“2019-4-3”,“ipfsAddr”:“QmfQJujeYWgX2Fn15nSLY7xApG7qQo3imz9S3UVxRcRiTi”,“fileFingerprint”:“21358B2F61C5B5DDD515F7046765BA43E8B643DCE26985BFD45A1BD02E9201A8”}
(4) 后台通过Fabric数据中的IPFS文件存储地址去查询IPFS网络,并返回匹配的整个数据块。
(5) IPFS根据Hash地址返回对应的整个数据块的文件信息,随后在服务端可以进行对文件的验证,以检验存储数据是否被篡改。


在这里插入图片描述
图4 数据查询功能实现流程图

2.3 存储结构

(1) Fabric账本结构
Fabric账本结构指的是Fabric网络中相应通道中Peer节点存储数据的格式,如图5所示。Fabric以<k,v>键值对的形式存储及查询数据,因此唯一ID作为主“键”,所有信息存于该键下(采用Json嵌套格式)。这样,每个ID下存储所有该ID相关的所有信息。当查询时,使用唯一ID值便可查出所有该ID下的值。

在这里插入图片描述
图5 Fabric账本结构

(2) IPFS存储结构:
IPFS中存储所有源数据的数据块,数据块存储没有顺序,只是每个数据块与hash地址的关系一一对应,如图6所示。而hash地址与具体信息的映射关系存储于Fabric区块链中。

在这里插入图片描述
图6 IPFS存储结构

第三章 运行说明
3.1 运行说明

(1)客户端上传数据
用户通过http-post方式向服务后台传输Json数据,新客户端向服务端不断发送数据,启动模拟数据服务(每秒向后台发送一次数据),以车辆obd数据上链为例,打印日志如图7所示:

在这里插入图片描述
图7 模拟数据发送日志

(2) 后端接受数据并处理
后台系统网络全部启动完毕之后(Fabric网络启动,IPFS启动),使用命令运行nodejs后台程序:node server.js
当数据块打包完成时,后台日志如图8所示:

在这里插入图片描述
图8 后台服务打包区块时日志

(3) 客户端查询/验证数据
查询fabric区块链网络上相关数据:通过唯一ID(obdid)以及日期来查询fabric上文件存储记录,可以得到IPFS上文件存储地址ipfsAddr,文件的指纹哈希fileFingerprint。http-get获取数据结果如图9所示:


在这里插入图片描述
图9 用户通过内容获取Fabric数据

  查询IPFS上相关数据:将ipfsAddr作为http-post的参数传给服务器,通过该ipfsAddr可以再次查询到IPFS上整个数据块,如图10所示。客户端可以对整个数据块进行指纹验证,计算数据块指纹与fileFingerprint参数比较,若一致,则证明数据完整未被篡改。


在这里插入图片描述
图10 用户通过Hash获取IPFS数据

代码库可进行验证测试,代码链接见原文。(便于偶然变更后同步更新)


原文链接:基于Fabric+IPFS大规模数据上链方案

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

基于Fabric+IPFS大规模数据上链方案 的相关文章

  • 实时获取建材网商品数据:API实现详解与代码示例

    一 引言 随着电子商务的快速发展 实时获取商品数据对于企业决策 市场分析以及数据驱动的营销策略至关重要 建材网作为国内知名的建材信息平台 提供了API接口 使得第三方开发者可以方便地获取商品数据 本文将详细介绍如何使用 建材网的API接口
  • 闵氏距离在文本检索中的应用

    1 背景介绍 文本检索是现代信息处理系统中不可或缺的一部分 它的主要目标是根据用户的查询需求 从海量的文本数据中找出与查询最相关的文档 随着互联网的普及 文本数据的规模不断膨胀 这导致了传统的文本检索方法面临着巨大的挑战 为了解决这些问题
  • 机器智能与人类智能的合作:认知能力的提升

    1 背景介绍 在过去的几十年里 人工智能 AI 技术的发展取得了显著的进展 从早期的规则引擎和专家系统到现代的深度学习和神经网络 AI已经成功地解决了许多复杂的问题 然而 尽管如此 人工智能仍然远远低于人类智能 人类智能的强大之处在于其认知
  • AI大模型应用入门实战与进阶:深入理解Transformer架构

    1 背景介绍 自从2017年的 Attention is All You Need 一文发表以来 Transformer架构已经成为自然语言处理 NLP 领域的主流模型 这篇文章将深入探讨Transformer架构的核心概念 算法原理以及实
  • 慢思维大脑:SOP流程的心理学背景

    1 背景介绍 慢思维大脑 SOP流程的心理学背景 慢思维是指人类大脑在处理复杂问题 做出重要决策时所采用的思考方式 它与快速 自动的快思维相对 主要通过以下几种方式表现 深入思考 慢思维会让人类大脑深入思考问题的本质 从而找出更深层次的解决
  • AI大模型应用入门实战与进阶:从AI模型应用到商业转化

    1 背景介绍 人工智能 AI 已经成为当今世界最热门的技术话题之一 其在各个领域的应用也不断拓展 大型AI模型是人工智能领域的核心 它们在自然语言处理 图像识别 语音识别等方面的表现力和性能都有着重要的作用 然而 如何将这些大型AI模型应用
  • 如何成为一名数据科学家:必须掌握的技能和知识

    1 背景介绍 数据科学家是一种新兴的职业 它结合了计算机科学 统计学 数学和领域知识等多个领域的知识和技能 以解决实际问题 数据科学家的主要任务是收集 清洗 分析和解释大量数据 从中挖掘有价值的信息和知识 并将其应用于决策和预测 数据科学家
  • 机器智能与人类智能的竞争:技术创新的驱动力

    1 背景介绍 人工智能 Artificial Intelligence AI 和机器学习 Machine Learning ML 是最近几年最热门的技术领域之一 随着数据量的增加和计算能力的提高 机器学习技术的发展得到了极大的推动 机器学习
  • 织物密码

    每次结构运行时 它都会要求输入 root 密码 是否可以将其与自动建议一起发送 fab staging test 我知道您已经询问过密码 但是配置系统以便您可以在没有密码的情况下进行结构 即 SSH 不是更好吗 为此 在本地计算机上执行以下
  • spark相关

    提示 文章写完后 目录可以自动生成 如何生成可参考右边的帮助文档 文章目录 前言 一 pandas是什么 二 使用步骤 1 引入库 2 读入数据 总结 前言 提示 这里可以添加本文要记录的大概内容 例如 随着人工智能的不断发展 机器学习这门
  • Django Fabric 同步数据库

    您将如何运行此 django 命令来自动与 Fabric 同步数据库 python manage py syncdb settings app settings test 如果尝试运行 它会卡在 是否要创建超级用户帐户 处 是否可以传递 是
  • 在 Python/Bash 中通过 SSH/Sudo 测试文件/目录是否存在 [重复]

    这个问题在这里已经有答案了 我正在远程服务器上安装证书 并想在覆盖它们之前检查它们是否存在 服务器仅允许通过 ssh 公钥进行非 root 访问 我可以sudo s在 shell 中 root 一次 需要 root 权限 因为其他人无法读取
  • 2024年华数杯国际赛B题:光伏发电功率 思路模型代码解析

    2024年华数杯国际赛B题 光伏发电功率 Photovoltaic Power 一 问题描述 中国的电力构成包括传统能源发电 如煤 油和天然气 可再生能源发电 如水电 风能 太阳能和核能 以及其他形式的电力 这些发电模式在满足中国对电力的巨
  • Soul App:来一场始于“兴趣”,轻松自在的“零糖”社交吧

    岁末年终 回顾2023年 这一年你都做了什么呢 记不清楚没关系 互联网都帮你记录好了 2023年 B站的年轻人当 所见所闻 刷新自身认知时 往往会发送弹幕 啊 来抒发惊叹 这一年 支付宝 小荷包 的用户中00后占了4成 近一半更开启了 自动
  • 什么是充放电振子理论?

    CHAT回复 充放电振子模型 Charging Reversal Oscillator Model 是一种解释ENSO现象的理论模型 这个模型把ENSO现象比喻成一个 热力学振荡系统 在这个模型中 ENSO现象由三个组成部分 充电 Char
  • 使用企业订货软件的担忧与考虑|网上APP订货系统

    使用企业订货软件的担忧与考虑 网上APP订货系统 网上订货系统担心出现的问题 1 如果在订货系统中定错 多 货物了该怎么办 其实这也是很多人在网购或者是现实中经常会犯的一个错误 但是网上订货平台为大家提供了很多的解决方案 其中对于订单的修改
  • 对中国手机作恶的谷歌,印度CEO先后向三星和苹果低头求饶

    日前苹果与谷歌宣布合作 发布了 Find My Device Network 的草案 旨在规范蓝牙追踪器的使用 在以往苹果和谷歌的生态形成鲜明的壁垒 各走各路 如今双方竟然达成合作 发生了什么事 首先是谷歌安卓系统的市场份额显著下滑 数年来
  • Python Fabric:如何响应键盘输入?

    我想自动响应某些程序提示的某些问题 例如 mysql 提示输入密码 或者 apt 询问 是 或 当我想使用 manage pyrebuild index 重建我的干草堆索引时 对于 MySQL 我可以使用 password 开关 并且我确信
  • 将 Fabric env.hosts 字符串作为变量传递在函数中不起作用

    将 Fabric env hosts 字符串作为变量传递在函数中不起作用 demo py usr bin env python from fabric api import env run def deploy hosts command
  • 结构差异 sudo() run('sudo 命令')

    我想知道函数之间有什么区别sudo 和函数run sudo u user smth 文档上有 sudo 在所有运行方式上都是相同的 除了它总是换行 调用 sudo 程序中的给定命令以提供超级用户 特权 但有几次 sudo cmd 提示我输入

随机推荐

  • AndroidMainfest.xml详解——

    语法
  • 【二分+贪心】用 N 根绳子裁剪出 M 根等长绳子

    有 N 根绳子 第 i 根绳子的长度为 l i 现在需要 M 根等长的绳子 你可以对这 N 根绳子进行任意裁剪 不能拼接 请你计算出这 M 根绳子最长的长度 输入描述 第一行包括两个整数 N M 含义如题所述 1 lt N M lt 100
  • Vulkan入门精要

    Vulkan入门精要 fuxiii github io https fuxiii github io Essentials of Vulkan
  • mysql中drop、truncate、delete的区别

    DELETE DELETE是一种数据操作语言 DDL 命令 CREATE DROP ALTER TRUNCAT 使用DELETE 无法删除整个表的约束 索引 只删除数据 1 每次从表中删除一行 并且同时将该行的的删除操作记录在redo和un
  • 用JAVA写一个贪吃蛇的代码

    我很乐意为你编写一段贪吃蛇的JAVA代码 public class SnakeGame public static void main String args 创建一个SnakeGame对象 SnakeGame game new Snake
  • 用matlab画散点图并用光滑曲线连接(样条插值)

    上接 http blog csdn net cantjie article details 70216642 用matlab画散点图并用光滑曲线连接 exp10 m clc clear format short Num xlsread ex
  • MySQL的windows安装与配置

    目录 MySQL的简介 MySQL的安装 一 下载安装包 二 配置初始化文件与密码修改 三 配置环境变量 四 检验 MySQL的简介 MySQL是一种可以处理数据库的关系数据库管理系统 Relational Database Managem
  • Python实现对Mysql数据库的增删改查

    客户需求 使用Python脚本实现对对Mysql数据库的增删改查 import pymysql 显示 def readTable cursor 选择全部 cursor execute select from premoney 获得返回值 返
  • 如何通过国内网络下载安装Mac版VSCode

    最近被公司同事安利了VSCode 被它轻巧的身姿和强大的插件深深吸引 于是准备周末在自家Macbook上也安装一个 却遇到了一些问题 一般安装VSCode都是通过VSCode官网免费安装 VSCode官网链接 点击Download Mac
  • Zotero如何按照文献年份排序,如何二次排序

    https www zotero org support sorting 在文献管理的过程中 导入后 一大堆文献令人眼花缭乱 尤其研究后期 文献数量更是超出想象 除了创建文件夹和子文件夹 如何让这么多文献有序地展示出来呢 我们可以通过排列和
  • 膜拜大佬!阿里内部都在强推的K8S(kubernetes)学习指南,不能再详细了

    过去几年 以 docker kubernetes 为代表的容器技术已发展为一项通用技术 BAT 滴滴 京东 头条等大厂 都争相把容器和 k8s 项目作为技术重心 试图 放长线钓大鱼 就说阿里吧 目前基本所有业务都跑在云上 其中有一半已迁移到
  • hive环境搭建提示: java.lang.NoSuchMethodError: com.google.common.base.Preconditions.checkArgument

    提示的错误信息 SLF4J Actual binding is of type org apache logging slf4j Log4jLoggerFactory Exception in thread main java lang N
  • 虚拟机防火墙状态

    虚拟机无故挂掉可以采用的办法 CentOS 7 0默认使用的是firewall作为防火墙 1 关闭firewall systemctl stop firewalld service 停止firewall systemctl disable
  • 支付宝系统架构参考(架构图)

    转自微信公众号支付圈 支付宝是中国支付行业的一个标兵 无论是业务能力还是产品创都引领者中国支付行业的前沿 作为支付业务的基础系统的复杂性和稳定性是支付业务是否能够及时快速安全处理的根本 在此收集了支付宝的系统架构图包含 清算 客服 处理 资
  • unity屏幕截图功能

    1 在Editor文件夹新建脚本ScreenTest cs using UnityEditor using UnityEngine public class ScreenTest MonoBehaviour MenuItem Tools 截
  • ros/ros_control/controller_manager介绍

    ros robot operation system 机器人操作系统中控制管理器 controller manager 的介绍 维基翻译 原文 http wiki ros org controller manager distro indi
  • 全新Thinkphp养我吧宠物区块链网站源码+可封装APP源码 免费下载 源码搭建教程

    这里写自定义目录标题 欢迎使用Markdown编辑器 新的改变 功能快捷键 合理的创建标题 有助于目录的生成 如何改变文本的样式 插入链接与图片 如何插入一段漂亮的代码片 生成一个适合你的列表 创建一个表格 设定内容居中 居左 居右 Sma
  • Node.js的包、npm、yarn

    包 相当于java中的一个jar包 NPM全称是Node js package Manage 包的管理工具 是一个命令行软件 常用命令 npm init 初始化package json文件 npm install 包名 安装一个包 npm
  • 千分位逗号分隔

    toLocaleString 123456489656456 toLocaleString en US 带小数 但是toString toLocaleString只能保留两位 123456489656456 45764655 toLocal
  • 基于Fabric+IPFS大规模数据上链方案

    基于Fabric IPFS大规模数据上链方案 更多区块链技术与应用分类 区块链应用 区块链开发 以太坊 Fabric BCOS 密码技术 共识算法 比特币 其他链 通证经济 传统金融场景 去中心化金融 防伪溯源 数据共享 可信存证 第一章