星际文件系统
介绍:
IPFS(星际文件系统)是一个对等、版本控制、内容寻址的文件系统。它利用了分布式哈希表、BitSwap(受 BitTorrent 启发)、MerkleDag(受 Git 协议启发)等计算机科学概念。
历史:
IPFS 由协议实验室的 Juan Bennet 于 2015 年创建。目前有多个应用程序正在 IPFS 之上构建。
描述:
当前通过 Internet 交换数据的默认方式是 HTTP,但在某些情况下会失败。大文件不能使用 HTTP 传输,数据在 HTTP 上不是永久的,HTTP 主要使用 Client-Server 协议,延迟低,难以建立点对点连接,实时媒体流在 HTTP 上也很困难.使用 IPFS 可以克服所有这些故障。
与 IP 寻址的 HTTP 不同,IPFS 网络是内容寻址的。这意味着,当任何数据上传到 IPFS 网络时,它会返回一个哈希,然后使用该哈希请求数据。任何人都可以在 IPFS 网络上提供存储,并且每个人都受到加密代币的激励。数据在整个网络中分布和复制,从而导致数据持久性。在请求数据时,它会搜索该数据的最近副本,这会导致高延迟并克服任何瓶颈点。由于数据是完全分布式的,它没有数据集中的空间。
IPFS 可以被视为单个 BitTorrent 群,在一个 Git 存储库中交换对象。
-Juan Bennet(IPFS 白皮书)
IPFS 中使用的概念:
- 分布式哈希表:
它用于跨网络节点存储和检索数据。它是一个类似于哈希表的类。使用 DHT,网络上的任何节点都可以请求与哈希键对应的值。 - 块交换:
它在 BitTorrent 协议(也称为 BitSwap)中用于在节点之间交换数据。它是一种点对点文件共享协议,用于协调不受信任的群体之间的数据交换。它采用针锋相对的策略,奖励相互贡献的节点,惩罚只请求资源的节点。这有助于 IPFS 节点并行检索数据的多个部分。 - 默克尔 DAG:
它使用类似于 Git 版本控制系统中使用的 Merkle 树或 Merkle DAG。它用于以分布式友好的方式跟踪网络上文件的更改。数据通过内容的加密散列进行内容寻址。
IPFS 节点:
网络上的每个节点都使用 NodeID 进行标识,该 NodeID 只不过是其公钥的散列。网络上的每个人都可以将文件存储在他们的本地存储中,并且他们被激励这样做。每个节点都维护一个 DHT,用于找出网络上其他对等点的 ID 以及这些对等点可以提供哪些数据。
IPFS 入门:
要进入 IPFS 网络,我们可以从官方网站安装 IPFS。
- 根据给定的说明安装后,可以在终端或命令行中使用
>ipfs init
输出:
initializing IPFS node at /home/omkar/snap/ipfs/1170/.ipfs
generating 2048-bit RSA keypair…done
peer identity: QmX8TxRjpSZeTXZ1gEF6Jy3Hq7A8PYyBMECX911tRrnXqQ
to get started, enter:
ipfs cat /ipfs/QmS4ustL54uo8FzR9455qaxZwuMiUhyvMcX9Ba8nUH4uVv/readme
- 守护进程可以作为终端执行
>ipfs daemon
输出:
Initializing daemon…
go-ipfs version: 0.4.21-8ca278f45
Repo version: 7
System version: amd64/linux
Golang version: go1.12.6
Swarm listening on /ip4/127.0.0.1/tcp/4001
Swarm listening on /ip4/192.168.0.107/tcp/4001
Swarm listening on /ip6/::1/tcp/4001
Swarm listening on /p2p-circuit
Swarm announcing /ip4/127.0.0.1/tcp/4001
Swarm announcing /ip4/192.168.0.107/tcp/4001
Swarm announcing /ip6/::1/tcp/4001
API server listening on /ip4/127.0.0.1/tcp/5001
WebUI: http://127.0.0.1:5001/webui
Gateway (readonly) server listening on /ip4/127.0.0.1/tcp/8080
Daemon is ready
- 现在,一旦您在线,您就可以使用 HTTP 到 IPFS 门户网站访问网络。此外,您可以使用终端获取同行的 ID
>ipfs swarm peers
输出:
/ip4/170.11.91.8/tcp/4001/ipfs/QmaCpDMGvV2BGHeYERUEnRQAwe3N8SzbUtfsmvsqQLuvuJ
/ip4/191.236.12.16/tcp/4002/ipfs/QmW2WQi7j6c7UgJTarActp7tDNikE4B2qXtFCfLPdsgaTQ
/ip4/131.121.91.93/tcp/4001/ipfs/QmWHyrPWQnsz1wxHR219ooJDYTvxJPyZuDUPSDpdsAovN5
/ip4/174.12.28.10/tcp/4001/ipfs/QmdXzZ25cyzSF99csCQmmPZ1NTbWTe8qtKFaZKpZQPdTFB
您还可以在 WebUI(地址 http://127.0.0.1:5001/webui)上找到有关您的节点和对等节点的信息。
IPFS 的优势:
- 即使广域网由于某种原因被阻塞,局域网中的用户也可以相互通信。
- 由于不需要服务器,创作者可以免费分发他们的作品。
- 数据加载速度更快,因为它具有更高的带宽。
IPFS的缺点:
- IPFS 安装有很多麻烦,一点也不友好。
- IPFS 会消耗大量带宽,而按流量计费的互联网用户并不喜欢这种带宽。
- IPFS目前被技术爱好者使用,普通人不倾向于建立自己的节点,这导致网络上的节点短缺。
结论
IPFS 综合了迄今为止最好的各种系统和协议。 IPFS 是新的去中心化互联网基础设施的雄心勃勃的愿景,未来可以在此基础上构建许多不同类型的应用程序。