前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >长安链ChainMaker存储兼容IPFS方案浅析

长安链ChainMaker存储兼容IPFS方案浅析

作者头像
bengbengsu
发布2022-04-26 19:52:43
6700
发布2022-04-26 19:52:43
举报
文章被收录于专栏:腾讯云区块链腾讯云区块链

文章内容源自“长安链ChainMaker”官方微信公众号

本文作者为长安链核心开发工程师周厚发。

编者语:

在区块链的世界里,大部分链的目的都在于解决彼此间的信任问题,区块链本身也是一个账本,用来记录交易信息。而用户的需求一定不止于简单的账本,还会有图片、视频、博客等等,它们该以什么样的形式存在于区块链中呢?长安链也正在准备兼容IPFS,今天我们和大家一起了解下长安链对IPFS的兼容方案。了解IPFS首先就要了解什么是去中心化存储。

1. 什么是去中心化存储

去中心化存储,技术上不同于分布式存储。去中心化存储是在一个更加分散、更加不可信的网络环境中,满足一个更加安全、更加可信、更加可控的存储需求。

2. 长安链节点数据存储

2.1 长安链目前已经支持leveldb/rocksdb/mysql,同时满足kv型和关系型数据库,未来将支持IPFS,完成对去中心化分布式数据库的支持。

2.2 长安链节点数据库包含blockdb,statedb,resultdb,historydb。

2.3 ChainMaker存储架构:

3. IPFS数据存储

3.1 IPFS(Inter Planetary File System, 星际文件系统)是底层协议、是分布式系统、也是网络。

3.2 IPFS协议不是基于IP寻址,而是基于内容寻址。在IPFS系统的文件是碎片化的,每个碎片都进行Hash运算(复杂的数学运算)最终有个hash值,把整个文件所有的碎片再hash拼接在一起就可以得到整个文件Hash值,然后大众可以通过最终的Hash值直接浏览完整的文件。文件碎片不是存在一个服务器,而是众多服务器,去中心化的。

3.3 IPFS架构

3.3.1 badger 类似于leveldb的kv数据库,对SDD更友好,但默认还是使用leveldb;

3.3.2 flatfs IPFS自定义的一种类git的文件管理系统;

3.3.3 unixfs IPFS自定义的一种管理管理系统,它的实现就是flatfs + mfs;

3.3.4 mfs mutable IPFS filesystem,可修改的文件管理系统,使得Unixfs中的文件可以修改;

3.3.5 namesys/ipns CID<--> name的映射, 类似于域名和IP地址的映射;

3.3.6 IPFS将文件切割成一个个小块(block),抽象成IPLD(IPFS linked data)格式,计算出区块的hash,即CID, 唯一标识该文件块。使用Blance/Trikle两种方式将各个小块组织起来。

3.4 Block结构

3.4.1 Object IPLD(IPFS Linked Data),将数据抽象成一个个IPLD,再放入到IPFS中;

3.4.2 type 该object类型;

3.4.3 data 该ipld的存储的内容;

2.4.4blockSize 该节点的子节点分别占用的磁盘大小;

3.4.5 Links/0 or Links/1: 该节点子节点的CID,CID对应的IPLD,也会有该Object同样的结构。

4. 将长安链的区块数据放到IPFS上

4.1 我们可以将长安链的Block,也转化成IPLD,之后放到IPFS上, Block结构如下:

4.2将每个Block和Transaction的成员变量都转换成一个IPLD,同时记录转换后的CID。

5. 将数据落盘

5.1 数据落盘时采用IPFS同样的方式,将区块数据压缩后存入本地磁盘;

5.2 用区块信息转成IPLD之后的CID作为区块在IPFS中的唯一标识;

5.3 IPFS采用flatfs作为本地文件管理系统,区块存入flatfs时,根据CID的倒数第二个第三个字母作为文件夹名字,文件名为CID.data。如下图:

6. 获取区块

6.1 从IPFS上获取区块时,从保存好的数据中找到对应高度的CID,使用CID向IPFS获取数据;

6.2 IPFS先从本地flatfs的中找到对应的文件夹,然后再查看该文件夹下面是否存在对应的CID.data;

6.3 如果存在,则将数据返回给请求方;

6.4 如果不存在,就说明本地IPFS节点不没有保存该区块信息,需要向网络中的其他节点获取数据。

结语:

长安链在兼容IPFS过程中,将区块数据转换为IPFS的格式,用户即可以在IPFS上获得链上的信息,后续更将支撑在长安链上上传下载文件,也为长安链在探索兼容更多去中心化存储中更向前一步。

Tips

更多长安链开源项目QA,可登陆开源社区、技术文档库查看。

下载源码

https://git.chainmaker.org.cn/chainmaker/chainmaker-go

查阅文档

https://docs.chainmaker.org.cn/

更多社区权益申请

https://wj.qq.com/s2/8620064/7abd

“长安链ChainMaker”是在科技部、工信部、国资委等国家部委及北京市政府的指导下发布的国内首个自主可控区块链软硬件技术体系,由微芯研究院联合清华、北航、腾讯等头部企业和高校共同研发,具有全自主、高性能、强隐私、广协作的突出特点。长安链面向大规模节点组网、高交易处理性能、强数据安全隐私等下一代区块链技术需求,融合区块链专用加速芯片硬件和可装配底层软件平台,为构建高性能、高可信、高安全的数字基础设施提供新的解决方案,为长安链生态联盟提供强有力的区块链技术支撑。取名“长安链”,喻意“长治久安、再创辉煌、链接世界”。

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2021-08-03,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 腾讯云区块链 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
对象存储
对象存储(Cloud Object Storage,COS)是由腾讯云推出的无目录层次结构、无数据格式限制,可容纳海量数据且支持 HTTP/HTTPS 协议访问的分布式存储服务。腾讯云 COS 的存储桶空间无容量上限,无需分区管理,适用于 CDN 数据分发、数据万象处理或大数据计算与分析的数据湖等多种场景。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档