精通IPFS:IPFS入门简介
来源:
互联网时间:2019-05-22 12:44:04
1、IPFS 是什么
IPFS 是一个可快速索引的版本化的点对点文件系统。- IPFS是一个协议
- 定义了基于内容的寻址文件系统
- 协助内容分发
- 结合了分布式哈希、p2p传输、版本管理系统
- IPFS是一个文件系统
- 有文件夹和文件
- 可挂载文件系统(通过 FUSE)
- IPFS是一个web
- 可以像 web 那样查看文档
- 可能通过
https://ipfs.io/<path>
访问文件 - 浏览器或扩展可以直接支持
ipfs:/
或者dweb:/ipfs/
- 基于哈希确保内容真实性
- IPFS是个模块化
- 通过任何网络协议的连接层
- 路由层,寻找/定位文件所在位置
- 使用路由层的 DHT (kademlia/coral)
- 使用基于路径的命名服务
- 使用 bittorrent-inspired 的区块交换
- IPFS 使用加密
- 加密哈希内容寻址
- 区块级的去重
- 文件完整性和版本控制
- 文件系统级的加密和签名支持
- IPFS是一个p2p系统
- 世界范围内的 p2p 文件传输网络
- 完全分散的架构
- 没有单点失效问题
- IPFS天生是一个CDN
- 文件添加到本地文件系统,将会在全世界可用
- 缓存友好(内容哈希命名)
- 基于 bittorrent 的带宽管理
- IPFS有一个命名服务
- IPNS,一个受SFS启发的名称系统
- 基于PKI的全局命名空间
- 有助于建立信任链
- 与其他NSes兼容
- 可以将DNS,.onion,.bit等映射到IPNS
2、Merkle DAG
IPFS 的核心是 MerkleDAG,一个有向无环图,其链接是哈希。 这为 IPFS 中的所有对象提供了有用的属性:- 认证可以对内容进行哈希处理并根据链接进行验证
- 持久化一旦获取,对象可以永久缓存
- 通用任何数据结构都可以表示为merkledag
- 分布式对象可以由任何人创建,没有集中的编写者
3、节点和网络模型
IPFS网络使用基于身份的 PKI。 IPFS 节点是一个可以查找、发布和复制 merkledag 对象的程序。 其身份由私钥定义。 特别:privateKey, publicKey := keygen() nodeID := multihash(publicKey)
3.1、multihash和可升级的哈希
IPFS 中的所有哈希都使用multihash
进行编码,multihash
是一种自描述哈希格式。使用的实际哈希函数取决于安全性要求。IPFS的密码系统是可升级的,这意味着当哈希函数被破坏时,网络可以转移到更强的哈希值。目前 IPFS 节点必须支持:
- sha2-256
- sha2-512
- sha3
4、协义栈
IPFS 有一个模块化的协义栈,每一个模块都有多种实现,全部在不同的模块中。 此规范仅解决层之间的接口,并简要提及可能的实现。 详细信息留待其他规格。IPFS 有5层:
- 命名自我认证的PKI命名空间(IPNS)
- merkledag数据结构格式
- 交换区块传输和复制
- 路由定位对等体和对象
- 网络在对等体之间建立连接
4.1 网络层
网络层在网络中的任何两个 IPFS 节点之间提供点对点传输。 它处理:- NAT遍历
- 支持多种传输
- 支持加密,签名或清除通信
- 多路复用
4.2、路由
路由层有两个重要的目标:- 节点路由发现其他的节点
- 内容路由发现发布到 IPFS 上的数据
- DHTs
- mdns
- snr
- dns
4.3、区块交换
区块交换负责协商批量数据传输。 一旦节点彼此了解,并且连接,交换协议就会控制内容寻址块的传输方式。区块交换是一种满足各种实现的接口。 例如:
- Bitswap
- HTTP
4.4、Merkledag
理解数据。merkledag 数据结构是:message MDagLink {
bytes Hash = 1; // multihash of the target object
string Name = 2; // utf string name. should be unique per object
uint64 Tsize = 3; // cumulative size of target object
}message MDagNode {
MDagLink Links = 2; // refs to other objects
bytes Data = 1; // opaque user data
}
参考 merkledag 规范和路径解析规范。
4.5、命名-PKI命名空间和可变指针
IPFS 主要关注内容寻址数据,这些数据本质上是不可变的:更改对象会改变其哈希值,从而改变其地址,使其成为一个完全不同的对象。 (将其视为写时复制文件系统)。IPFS命名层(或 IPNS )处理以下内容的创建:
- 可变指向对象的指针
- 人类可读的名字
参考命名规范。
免责声明:
1.本文内容综合整理自互联网,观点仅代表作者本人,不代表本站立场。
2.资讯内容不构成投资建议,投资者应独立决策并自行承担风险。
- 贝佐斯最后一封股东信:宇宙希望你成为普通人,千万别让它成为现实2021-04-19 17:02
- Props,让互联网与区块链无缝对接的「中间件」2021-04-19 17:02
- Coinbase高管到底卖了多少股票?2021-04-19 16:03
- 通往未来之路:下一代互联网与Metaverse2021-04-19 16:03
- 央行前行长周小川谈比特币:要提醒,要小心2021-04-19 15:03
- 链上新知 |电子图片卖出7000万美金,让马斯克都来站台的NFT究竟是什么?2021-04-19 15:02
- Crypto VC,LP怎么投?2021-04-19 13:03
- 周末比特币融资利率跌至-0.03%低点,为7个月以来最低水平2021-04-19 11:02