深入理解 IPFS - 分层架构总览

发布于 2024-09-21 12:20:33 字数 1862 浏览 20 评论 0

我们首先从官方文档中一张比较经典的层级架构图开始,右边是 IPFS 的层级图,左边是对应现实网络中的一些实现形式。

applications 应用层

这个很好理解,就是基于 IPFS 网络开发的应用。我们可以在 awesome 看到一些应用。生态能不能繁荣,肯定是需要开发者参与。

naming 命名

SFS 中文是自我认证文件系统,熟悉其他区块链项目的同学应该很好理解。比如比特币,我们采用非对称加密算法给节点生成了公钥和私钥。通过公钥生成的地址一旦参与转账行为,就会成为比特币网络中一份子,所有节点都知道这个地址。那么怎么证明这个地址是属于你,这就是一个自证明的过程,通过与公钥配对的私钥就可证明所有权。同样对于 IPFS 来说,也采用同样的方式,每个节点的 ID 都是全局唯一的存在,你可以通过 ID 对应的私钥来证明你是这个节点的主人。

举个应用的例子,你有个静态网站想要上传到 IPFS 上,但是网站是需要一直更新内容的,更新后 hash 值变了,在 IPFS 上访问的链接都会变。解决办法是将节点 ID 指向生成的 hash 上。用户访问节点 ID 即可 。

其实不仅仅是文件系统,身份认证(OpenID, OAuth2)可能也会由于区块链的发展出现新的契机。比如 ArcBlock 在推广的 DID。

merkledag

merkledag 是 IPFS 的核心数据结构。比特币中用 merkle tree(默克尔树)快速校验区块数据完整性,使得轻节点钱包无需下载所有交易数据就能校验交易数据。而 merkledag 是一个有向无环图,对象模型和 Git 相似。这部分以后会详细说明。

exchange 块交换

因为 IPFS 是一个全网文件系统,当你上传一个文件的时候,文件会被分割成 block,然后被传输到最近的节点上(XOR)。这样当你再去获取这个文件的时候,节点间就会相互沟通,每个节点都有一个 wantlist 和 havelist,最终找到所有的 block,重新获取到文件。

routing 路由

其实在说到 exchange 的时候,有同学可能发现已经有点熟悉了,这不就是 BitTorrent 么。说的没错,不管是当年的电驴还是现在的迅雷,BT 网络一直很坚挺的存在着。IPFS 的很多设计都是借鉴于它 。说到 BT 的发展,最开始种子是存储到中央 Tracker 服务器上,这样一旦中央服务器挂了,这个种子也就废了,所以发展出了 DHT (分布式哈希表)。节点加入 DHT 网络,所有的资源都通过 hash 来寻址,无需中央节点介入,通过询问自己已知的节点,最终找到目标节点。

对于 IPFS 来说,内容和地址寻址都是同构 hash,这样可以避免转换成本。虽然说 routing 的方式不止 DHT 一种,还有 mdns,DHCP。但是作为一个去中心化的项目来说,DHT 是 IPFS 路由必不可少的一项。

network 网络

IPFS 没有创造新的协议来做节点间通信,而是尽可能的兼容现存的所有协议,包括 tcp, http, quic 等等。兼容是通过一个 self-describing 的方式,如 /ip4/7.7.7.7/tcp/6543 , 这种风格我们在 IPFS 其他 repos 中也都能看到身影,如 MultiHash, MultiAddress。不得不说,这种 self-describing 的形式在之后的协议升级上会有很大的好处。同样,面对各种网络环境,NAT 穿透也是必备的,IPFS 基于 ICE 框架,支持 TURN 和 STUN。

本文对 IPFS 各层做了简单的介绍,细节我们后续再聊。

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。
列表为空,暂无数据

关于作者

不再见

暂无简介

0 文章
0 评论
345 人气
更多

推荐作者

yili302

文章 0 评论 0

晚霞

文章 0 评论 0

LLFFCC

文章 0 评论 0

陌路黄昏

文章 0 评论 0

xiaohuihui

文章 0 评论 0

你与昨日

文章 0 评论 0

    我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
    原文