基于区块链与IPFS的数据共享系统之区块链部分设计

这篇具有很好参考价值的文章主要介绍了基于区块链与IPFS的数据共享系统之区块链部分设计。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

本节对数据共享系统的区块链部分做一个简单的介绍,包括目录结构、文件作用、设计思路。

购买专栏前请认真阅读:《基于区块链与IPFS的数据共享系统》专栏简介

一、区块链部分文件目录简介

├── bin //保存了二进制文件方便启动网络
│   ├── configtxgen //生成创世区块和通道材料
│   └── cryptogen //生成密钥
├── chaincode //链码
│   ├── datashare.go
│   ├── go.mod
│   └── go.sum
├── configtx.yaml //来自byfn
├── crypto-config.yaml //来自byfn
├── docker-compose-byfn.yaml //byfn中的节点配置与IPFS容器配置
├── explorer //区块链浏览器
│   ├── config.json
│   ├── connection-profile
│   └── docker-compose.yaml
├── start.sh //启动网络脚本
├── stop.sh //关闭网络脚本
└── tape //fabric压测工具tape
    ├── config-temp.yaml
    ├── tape
    └── test

二、启动网络脚本 start.sh

启动脚本为启动区块链网络以及IPFS容器,之后使用sed命令更换区块链浏览器、tape配置文件中的私钥。

这里解释一下为什么需要替换私钥文件,因为每次区块链网络重启后都会重新生成私钥文件,区块链浏览器、tape在使用时访问Fabric网络需要使用私钥文件。

具体步骤如下面代码所示,首先是获取私钥文件名称;然后使用模版文件 config-temp.yaml 替换当前的配置文件;使用sed命令替换priv_sk字段,此时配置文件中的私钥就替换好了。

#替换tape配置文件的私钥
priv_sk=$(ls crypto-config/peerOrganizations/org1.example.com/users/User1@org1.example.com/msp/keystore)
cp -rf ./tape/config-temp.yaml ./tape/config.yaml
sed -i "s/priv_sk/$priv_sk/" ./tape/config.yaml

三、关闭网络脚本 ./stop.sh

关闭网络脚本中依次清理区块链网络与区块链浏览器的Docker容器、网络相关材料以及链码容器。

#清理之前的网络
docker-compose -f explorer/docker-compose.yaml down -v
docker-compose -f docker-compose-byfn.yaml down -v
#清理网络相关材料
rm -rf channel-artifacts
rm -rf crypto-config
#清理链码容器
clearContainers
removeUnwantedImages

四、docker-compose-byfn.yaml 文件

这个文件是将BYFN中的first-network默认启动的网络相关的yaml文件整理了一下,整合到了一个yaml文件里,看着会比较清晰。此外,IPFS容器配置也放到了此文件,方便IPFS启动。

五、链码 datashare.go

在本链码中,使用结构体存储数据的传输记录,字段有发送者、接受者、使用发送者公钥加密的文件CID(IPFS Hash)、使用接受者公钥加密的文件CID、文件名称、区块链交易Hash、时间戳。

// 数据传输记录结构体
type Record struct {
	Sender                string `json:"sender"`
	Receiver              string `json:"receiver"`
	SenderEncrypted_cid   string `json:"secid"`
	ReceiverEncrypted_cid string `json:"recid"`
	Filename              string `json:"filename"`
	Txid                  string `json:"txid"`
	Timestamp             string `json:"timestamp"`
}

在invoke中可以看到有两个主要的函数queryRecordsendData,其中queryRecord是用来查询传输记录的,传入的参数为用户的公钥,然后是通过APIstub.GetState()获取Fabric账本中的键为args[0]对应的值。

提示:在Fabric默认使用的levelDB中,数据使用Key-Value键值对存储数据。

sendData函数为负责将传输记录上链,关键代码如下:文章来源地址https://www.toymoban.com/news/detail-550951.html

# 实例化Record结构体并使用传入的参数赋值
var record = Record{Sender: args[0], Receiver: args[1], SenderEncrypted_cid: args[2], ReceiverEncrypted_cid: args[3], Filename: args[4], Timestamp: time, Txid: APIstub.GetTxID()}
# 获取用户当前已存的传输记录
recordsAsBytes, err := APIstub.GetState(args[1])
#使用json反序列化,将json格式的数据转化为结构体,方便操作
json.Unmarshal(recordsAsBytes, &records)
#添加新的记录到所有的传输记录中
records = append(records, record)
#将新的传输记录存储至账本中
APIstub.PutState(args[1], recordsAsBytes)

到了这里,关于基于区块链与IPFS的数据共享系统之区块链部分设计的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 基于区块链与IPFS的数据共享搭建步骤

    购买专栏前请认真阅读:《基于区块链与IPFS的数据共享系统》专栏简介 视频演示: https://www.bilibili.com/video/BV1y24y1v7RX 系统简介: 本系统使用RSA算法生成密钥对, RSA私钥用于用户身份认证;用户发送的数据将存储于IPFS, IPFS返回的CID(IPFS Hash)使用用户的RSA公钥加密后存储于

    2024年02月03日
    浏览(41)
  • 基于区块链与IPFS的视频版权存证系统搭建步骤

    购买专栏前请认真阅读:《基于区块链与IPFS的视频版权存证系统》专栏简介 系统简介: 本系统使用RSA算法生成密钥对, RSA私钥用于用户身份认证,这里的用户包括普通用户(创作者)与机构;用户登记版权的视频将存储于IPFS, IPFS返回的CID(IPFS Hash)以及详细的版权信息存

    2024年02月04日
    浏览(45)
  • 基于区块链与函数加密的隐私数据安全共享模型研究

    李懿 1,2,3 , 王劲松 1,2,3 , 张洪玮 1,2,3 1 天津理工大学计算机科学与工程学院,天津 300384 2 智能计算机及软件新技术天津市重点实验室,天津 300384 3 计算机病毒防治技术国家工程实验室,天津 300457 摘要 : 区块链技术给数据共享中的数据确权、数据溯源、数据可信、数据可

    2024年01月20日
    浏览(54)
  • 基于区块链/Hyperledger Fabric与IPFS的电子病历数据传输系统搭建流程

    购买专栏前请认真阅读:《Fabric项目学习笔记》专栏介绍 从0开始的搭建视频请看介绍内的QQ群获取 原项目链接:https://github.com/the-chain/airmedfoundation-terminal 本项目链接 https://gitee.com/real__cool/data_transfer 项目视频演示 https://www.bilibili.com/video/BV1f34y1v7hM 可以同时参考原项目的搭建

    2023年04月10日
    浏览(50)
  • 基于区块链/Hyperledger Fabric与IPFS的电子病历数据传输系统搭建流程与视频

    购买专栏前请认真阅读:《Fabric项目学习笔记》专栏介绍 从0开始的搭建视频请看介绍内的QQ群获取 原项目链接:https://github.com/the-chain/airmedfoundation-terminal 本项目链接 https://gitee.com/real__cool/data_transfer 项目视频演示 https://www.bilibili.com/video/BV1f34y1v7hM 可以同时参考原项目的搭建

    2023年04月20日
    浏览(42)
  • 区块链与算力网络:创造未来网络的安全与共享

    在数字革命的浪潮下,网络技术正焕发着前所未有的活力,而算力网络以其独特的区块链技术应用,为网络的安全性和资源共享带来了新的可能性。本文将带您深入探索算力网络中区块链技术的神奇应用,为您呈现这个充满活力和创新的网络未来。 **安全与信任的保障:区块

    2024年02月12日
    浏览(59)
  • 区块链共享数据架构设计

    实现基于区块链的数据共享平台,通过数据三权分置策略,建构相应的制度规则来予以规范,利用区块链技术管理整个共享交换的过程,促进建立一个政府主导、多方监管、共同协作的更加开放完善的数字经济系统,实现更加强有力的监管科技能力体系。  

    2024年02月11日
    浏览(40)
  • 【区块链 | IPFS】浅谈 | IPFS数据存储原理

    IPFS在数据存储方面采用的是分散式的文件存储,区别于HTTP协议的位置寻址,IPFS是基于内容寻址,当文件上传到IPFS节点存储时,节点会对文件进行Merkle DAG(默克尔有向无环图)的格式组织分块存储,在存储完毕后,文件将以Merkle DAG的根哈希数来表示该文件,用户可以从IPF

    2024年02月10日
    浏览(37)
  • Fabric V2.5 通用溯源系统——区块链部分设计

    本节对Fabric V2.5 通用溯源系统的区块链部分做一个简单的介绍,包括目录结构、文件作用、设计思路。 此节内容免费发布在TrueTechLabs Fabric学习交流QQ群。 购买专栏前请认真阅读:《Fabric项目学习笔记》专栏介绍 TrueTechLabs Fabric学习交流QQ群:

    2024年04月28日
    浏览(35)
  • 基于区块链的数据共享访问控制模型

    摘  要: 在大数据时代,不同企业或者部门间迫切需要进行数据共享。针对共享数据如何进行细粒 度控制、数据的追溯和机密性保护等问题,提出了基于区块链的数据共享访问控制模型。本模型首 先采用区块链技术保证数据溯源和不可篡改;其次使用联盟链的智能合约机

    2024年01月25日
    浏览(53)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包