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

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

编者语:

在区块链的世界里,大部分链的目的都在于解决彼此间的信任问题,区块链本身也是一个账本,用来记录交易信息。而用户的需求一定不止于简单的账本,还会有图片、视频、博客等等,它们该以什么样的形式存在于区块链中呢?长安链也正在准备兼容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”是国内首个自主可控区块链软硬件技术体系,由微芯研究院联合头部企业和高校共同研发,具有全自主、高性能、强隐私、广协作的突出特点。长安链面向大规模节点组网、高交易处理性能、强数据安全隐私等下一代区块链技术需求,融合区块链专用加速芯片硬件和可装配底层软件平台,为构建高性能、高可信、高安全的数字基础设施提供新的解决方案,为长安链生态联盟提供强有力的区块链技术支撑。取名“长安链”,喻意“长治久安、再创辉煌、链接世界”。

猜你喜欢

转载自blog.csdn.net/weixin_55760491/article/details/119387129