读filebase文档

读filebase文档

IPFS是通信协议,概述了支持IPFS网络存在的工作流程和组件。如IPFS桌面客户端或IPFS CLI等软件提供了IPFS节点与运行相同软件的其他节点互动的能力,从而创建了一个存储和共享文件的节点网络

IPFS在多个方面与HTTP相比具有不同属性和优势。为弥合两种协议的差距,IPFS HTTP网关结合了这两种协议,允许通过HTTP请求访问IPFS网络,使用和构建IPFS

客户端-服务器模型是今天与互联网互动的前沿,但这种模型设计上是中心化的,带来了不可靠、缺乏弹性和单点故障的风险

  • 将所有责任都放在主机服务器上,确保网站始终可用
  • HTTP协议只将您对网站的请求发送到主机服务器,而不会将您的请求发送到可能在主机服务器宕机时能够响应的其他服务器。这是HTTP和IPFS间的根本区别
  • 云服务提供商通过像CDN或存储服务这样的高级抽象,在多个服务器上部署以创建冗余和高可用性。通常这些服务器位于同一个地理位置,大多数时候在同一个服务器架或行内。意味着协议层上可能有更多冗余,但对于数据中心范围内的错误并没有冗余
  • 云服务提供商的解决方案是每个云服务提供商专有的,这意味着它们不是标准化、开源或互操作的,因为这些解决方案是在协议层而不是在硬件或软件层部署的。导致了强大的供应商锁定

IPFS是点对点通信协议,每个客户端(也被称为peer或node)都连接到其他每个peer,允许它同时充当客户端和服务器。任何对等体可以提供任何请求的文件或网站,并成为网络的有效成员,以提供高可用性、可靠性和对网络中断或干扰的弹性。通过IPFS peers能够汇集他们的资源,如存储空间或互联网带宽,确保文件始终可用

IPFS与其他去中心化存储网络不同,它提供了额外的功能和属性,如内容寻址、有向无环图(DAG)和分布式哈希表(DHT)

IPFS上的数据通过其内容地址而不是物理位置来定位的。数据存储在一系列加密片段中,每个片段有独特的内容标识符或哈希,将该片段链接到该数据的所有其他片段

通过哈希识别对象被称为内容寻址。哈希标识符被称为CID。对象被上传到Filebase的IPFS bucket时,IPFS CID会列在对象的元数据中,以便在任何工具或应用程序中轻松引用,或与IPFS网关一起使用

object in IPFS bucket -> object raw binary -> digest -> IPFS CID

IPFS使用Merkle DAG,Merkle DAG是一种自验证数据结构的形式

分布式哈希表(DHT)是一种分布式系统,用于将键映射到关联的值。DHT是键和值的数据库,键和值分布在分布式网络的所有peers上。要定位内容,可以询问网络上的一个peer,它将返回一个DHT,告知哪些peer正在存储构成您请求的数据对象的哪些内容块

CID可代表一个文件或文件夹,如包含静态网站文件的文件夹

可通过IPFS网关访问存储在IPFS上的内容。网关用于为不原生支持IPFS的应用程序提供解决方案

通过内容寻址和内容标识符,任何IPFS peer都可检索任何给定CID,只要有peer在网络上托管该文件。如果从一个IPFS peer请求一个CID,而该peer没有托管该文件,它将在整个IPFS网络中搜索托管该文件的peer。一旦找到,它将获取与CID关联的文件并将其返回

为确保至少有一个peer托管该文件,IPFS提供了pinning功能。IPFS pinning是指定在一个或多个IPFS节点上保留和持久化的数据的过程。pinning确保数据可无限期地访问,且在IPFS垃圾收集过程中不会被删除

文件和数据存储在IPFS网络上时,网络中的节点会缓存它们下载的文件,将这些文件保持可用状态以供其他节点访问。由于节点上存储空间有限,因此必须定期清除每个节点的缓存,称为IPFS垃圾回收过程

Filebase提供IPFS pinning服务,所有上传到Filebase IPFS bucket的文件会自动在Filebase基础设施内3个不同IPFS节点上pinning。确保了Filebase基础设施上所有IPFS固定文件的3倍冗余

一些固定服务提供商不会将提供商记录发布到IPFS DHT(分布式哈希表)上。DHT维护一个分布式系统,将键映射到值,将用户请求的CID与托管该内容的peer进行映射。Filebase将提供商记录发布到IPFS DHT上,以获得最佳性能和CID检索时间

IPFS CIDs - version 0 & version 1

CIDv0是IPFS CIDs是IPFS初始设计的一部分,使用基于58编码的多哈希创建内容标识符值。简单但不如CIDv1灵活。CIDv0仍是各种IPFS应用程序和操作的默认版本,建议在任何开发环境中支持CIDv0

CIDv0的CID长度为46个字符,始终以字符“Qm”开头

CIDv1提供向前兼容性,并支持可用于IPFS CID未来版本的不同格式。CIDv1 CIDs包括:

  • 多基础前缀,指定用于其余CID的编码方法和格式
  • CID版本标识符,指定CID的版本
  • 多编解码器标识符,指示CID旨在识别的内容的格式。这有助于软件和程序在从IPFS节点获取内容后解释内容

CIDv1的前几个字节可用来解释CID的其余部分,并提供有关如何在从IPFS获取后解码内容的信息

新项目建议在开发中使用CIDv1。CIDv1可安全地用于浏览器环境,如通过IPFS子域网关

当通过传统网关访问CIDv0时,域将返回一个HTTP 301重定向到子域,将CIDv0转换为CIDv1

所有上传到IPFS的数据默认公开的,访问它只需要CID。IPFS CIDs没有权限、用户账户或其他安全设置

网关为不原生支持IPFS的应用程序提供解决方案,也可用作数据的共享链接。IPFS网关可以是本地的、私有的或公共的,使用CID提供URL链接以访问存储的内容

通过Filebase存储在IPFS上的所有内容可通过Filebase网关访问,其响应时间比通过其他网关访问内容更快。因为Filebase网关与我们的IPFS节点对等连接。Filebase网关还与其他固定服务的IPFS网关对等连接

网关是一个接受IPFS CIDs的HTTP请求的IPFS节点

IPFS公共网关

Filebase公共IPFS网关是:https://ipfs.filebase.io/ipfs/<CID>

Filebase公共IPFS网关的有效限制率为每分钟200个请求(RPM)

Filebase公共IPFS网关只提供存储在Filebase上的内容

网关可提供文件夹的CID而不仅仅是单个文件,返回一个包含文件夹中文件的文件目录树

私有IPFS网关两种形式:专用和自托管

  • 专用网关由IPFS固定服务提供,允许通过自己的私有专用网关访问在IPFS上固定的CID。专用网关通常不受传统公共网关所限制的传统请求限制
  • 自托管网关指自己托管的IPFS节点,无论是在云端还是在本地机器上,都配置为充当IPFS网关。自托管网关不受请求限制,但需要自己运行和管理IPFS以实现功能。许多用户选择提供专用网关的IPFS固定服务,避免自己托管和维护IPFS节点

使用IPFS HTTP网关发起CID请求时,会发生以下步骤:

  • 网关尝试从IPFS网络检索前检查CID是否已被本地缓存。缓存可以是本地HTTP缓存,也可以是IPFS网关节点的缓存
  • 如果CID尚未被缓存,将从IPFS网络检索CID
  • IPFS节点询问其直接peer是否托管请求CID,然后查询DHT找到当前托管或固定请求CID的peer的peer ID和网络地址

为了保护数据免受垃圾收集过程的影响,必须在IPFS网络上固定数据。这确保了数据永久保存并始终可访问。固定对于各种工作流程很有用,例如在不管理共享权限的情况下从世界各地访问数据文件。由于访问它所需的只是文件的CID,因此上传到IPFS的所有数据默认是公开的。没有权限、用户账户或其他安全设置与IPFS CIDs相关联。

目前使用IPFS固定最流行的工作流程之一是NFT集合。这些集合包括多种文件,包括NFT图像文件及其相关的元数据文件。如果这些文件没有在IPFS上固定,并且被IPFS垃圾收集过程移除,这可能导致“NFT地毯拉动”,这意味着NFT不再存在,无法访问或转移。