IPFS: Merkle DAG数据结构

今天带大家来深入探索一下IPFS的核心数据结构Merkle DAG
什么是 Merkle DAG?
Merkle DAG是IPFS系统的核心概念之一,当然Merkle DAG并不是IPFS团队发明的,它来来自于Git数据结构,ipfs团队进行了改造(这一点ipfs团队一直是一个很努力的团队,并不是直接拿来使用,而是在此基础上修改更适合项目的使用)。
Merkle DAG的全称是 Merkle directed acyclic graph(默克有向无环图)。它是在Merkle tree基础上构建的,Merkle tree是由美国计算机学家merkle于1979年申请的专利。Merkle DAG跟Merkle tree很相似,但不完全一样,比如:Merkle DAG不需要进行树的平衡操作,非叶子节点允许包含数据等。

Merkle DAG
Merkle DAG拥有如下的功能:
内容寻址:使用多重哈希来唯一识别一个数据块的内容
防篡改:可以方便的检查哈希值来确认数据是否被篡改
去重:由于内容相同的数据块哈希是相同的,可以很容去掉重复的数据,节省存储空间
IPFS的数据对象格式如下:
type IPFSLink struct {
Name string // link 的名字
Hash Multihash // 数据的加密哈希
Size int // 数据大小
}
Type IPFSObject struct {
links []IPFSLink // link数组
data []byte // 数据内容
}
IPFS让应用可以完全控制对象的数据字段,也就是说应用可以随意定义自己的data类型和结构,甚至可以是一些IPFS系统无法理解的数据结构,灵活度非常的大。
下面以
前两篇介绍了IPFS的基本概念, 那么IPFS都可以用来做什么? 如果你认为仅仅是CDN, 永久的web? Are you kidding me ? IPFS可是要 --改变世界的... --变世界的 ... 摘要 星际文件系统是一种点对点的分布式文件系统, 旨在连接所有有相同的文件系统的计算机设备.在某些方面, IPFS类似于web, 但web 是中心化的,而IPFS是一个单一的Bittorrent 群集 ... ipfs是什么? 它是一个协议也是一个网络,已经运行了2年半,并非虚无缥缈的空气. 它像比特币网络一样,并没有发明什么新技术,他只是将很多种技术(P2P网络技术,bt传输技术,Git版本控制,自证明文 ... /*最近在看Ethereum,其中一个重要的概念是Merkle Tree,以前从来没有听说过,所以查了些资料,学习了Merkle Tree的知识,因为接触时间不长,对Merkle Tree的理解也不是 ... Merkle Tree 概念 来源 https://www.cnblogs.com/fengzhiwu/p/5524324.html /*最近在看Ethereum,其中一个重要的概念是Merkle T ... Merkle Tree概念 Merkle Tree,通常也被称作Hash Tree,顾名思义,就是存储hash值的一棵树.Merkle树的叶子是数据块(例如,文件或者文件的集合)的hash值.非叶节点 ... Merkle Tree概念 Merkle Tree,通常也被称作Hash Tree,顾名思义,就是存储hash值的一棵树.Merkle树的叶子是数据块(例如,文件或者文件的集合)的hash值.非叶节 ... 转载~Merkle Tree(默克尔树)算法解析 /*最近在看Ethereum,其中一个重要的概念是Merkle Tree,以前从来没有听说过,所以查了些资料,学习了Merkle Tree的知识,因为 ... 虽然区块链有很多令人兴奋的特性,但是也有其固有的缺点.比如,文件或者长度较长的文本信息就不适合存储在链上.那么如何解决这个缺点呢?一个解决方案就是IPFS(Interplanetary File Sy ... 原题链接 Tick and Tick 题意 计算时针.分针.秒针24小时之内三个指针之间相差大于等于n度一天内所占百分比. 思路 每隔12小时时针.分针.秒针全部指向0,那么只需要计算12小时内的百分 ... 1.基本语法 playbook文件格式为yaml语法.示例如下: 1.1 nginx.yaml --- - hosts: all tasks: - name: Install Nginx Packag ... 今天开发微信公众平台的时候 使用file_get_contents 去获得token 结果一直返回false.百度了一下,大部分都是说用curl 偶然发现可能是openssl没有开启的问题,开启ope ... 1.错误描述 org.hibernate.exception.SQLGrammarException: error executing work at org.hibernate.exception. ... 1.错误描述 2014-07-08 10:27:13,939 ERROR(com.you.conn.JDBCConnection:104) -com.mysql.jdbc.exceptions.jdb ... 1.错误描述 2.错误原因 安装的是64位数据库,由于在设置数据库配置密码时用的是数字开头,取消时出现这个错误 3.解决办法 重新安装Oracle HTML5中的checkbox 1.选中checkbox (1)<input type="checkbox" checked/> (2)<input type=& ... 1.echo $? 输出结果为0 表示命令执行成功 场景:判断上一个命令是否成功 扩展 0:成功 2 :权限拒绝 1~125:表示运行失败 126:找到命令,但是无法执行 127:未找到要运行的命令 ... 摘要: 本人微信和易信公众号: 微软动态CRM专家罗勇 ,回复268或者20180311可方便获取本文,同时可以在第一间得到我发布的最新的博文信息,follow me!我的网站是 www.luoyon ... 这里需要说明一下,笔者不建议在Windows环境下进行深度学习的研究,一方面是因为Windows所对应的框架搭建的依赖过多,社区设定不完全:另一方面,Linux系统下对显卡支持.内存释放以及存储空间调 ...IPFS: Merkle DAG数据结构的更多相关文章
随机推荐