IPFS(星际文件系统)是基于区块链内容的去中心化存储解决方案。 IPFS主要使用去中心化在许多计算机和节点上的对等网络模进行文件共享。通过这种网络模,文件将分解为不同的部分并存储在网络节点上,然后该节点使用哈希表来跟踪文件。当根据各部分的哈希值再次组合散乱信息时,相当于原始文件的重建过程。
中心化式文件存储和去中心化文件存储之间的区别。
去中心化文件存储
IPFS的核心创新概念是使用分布式哈希表(DHT)进行文件系统的存储和检索。 IPFS与BitTorrent协议相似,但其指向共享文件的方式不同。它将以键值对的形式将文件存储在区块链上。所有数据将被分为256 KB的块,散布在节点或计算机网络中,并且只能有效地协调以支持节点之间的有效访问和搜索。 BitTorrent不使用区块链技术,而是依靠种子文件来指向相应的文件。您可以选择使不同的种子文件指向同一文件,但是在IPFS文件系统中,您只需要指向该文件的哈希地址即可。
在IPFS上发布文件的方式与云发布文件的方式不同。 IPFS上的所有数据都可以通过其哈希地址来寻址。当某人申请访问数据时,他们通过访问哈希地址而不是直接联系实际文件本身来获取数据。换句话说,IPFS提供了文件实际地址的抽象概念,因此实际存储单元与应用程序无关。这个抽象概念为应用程序开发人员消除了复杂性。
IPFS如何跨节点存储文件。
一般来说,文件托管在网络节点上。这种方法的灵感来自IPFS区块链上Filecoin的数字资产。节点可以通过在其计算机或服务器上提供存储空间来托管文件,为相关文件提供哈希地址,然后在网络上分发它们。同一文件可以托管在不同的节点上,此过程等同于**文本。需要该文件的用户将基于最接近其位置的节点的哈希访问该文件。
托管文件的所有节点都将引用根哈希,即相应文件的哈希地址。每当用户申请访问文件时,他都可以使用附近节点的哈希(根据根哈希存储文件)来下载文件。 IPFS系统上不存在重复文件,因为散列哈希总是在上载文件时引用现有文件或文件块。
一旦文件存储在IPFS区块链系统中,它将保持可用状态,直到文件格式化并运行垃圾回收程序将其删除为止。不同的节点可以通过哈希值指向文件本身。只要哈希值可以指向相应的文件,其他节点就可以存储它。 IPFS系统可以随时更新以指向不同的哈希值,但是只要用户具有原始哈希值,仍然可以访问数据,并且至少一个节点将**存储该数据。
内存寻址方案
IPFS系统与典的基于网络的云存储系统之间的区别在于,它是基于内容的(内容寻址),而不是基于地址的(地址寻址)。可寻址存储系统的一个示例是超文本传输协议(HTTP)。如果存储系统基于地址,则需要使用域名服务器的主机名来标识服务器。它可以通过映射到友好用户名的逻辑寻址方案(例如IP地址)跟踪主机。如果主机更改了名称或地址,则还必须在相应的名称服务表中对其进行修改。
基于内容的可寻址存储适用于从网络获取数据。这需要内容标识符来确定文件的实际存储位置。在这种情况下,用户基于密码哈希而不是逻辑地址访问数据,逻辑地址等同于文件的数字指纹。无论是谁上传文件,上传时间和位置有何区别,网络都会根据哈希值返回相同的内容。
在速度和可靠性方面,IPFS系统的性能优于HTTP协议。内容可寻址存储系统无需依赖服务器地址来获取文件,而可以从用户附近的各种服务器(例如IPFS网络上的对等方或节点)提供文件。换句话说,用户可以简单地搜索文件而无需搜索引擎提供坐标,即服务器名称或地址。相反,用户可以通过其哈希值引用该文件,并且可以通过网络附近的可用节点获得相应的文件。
安装IPFS系统
IPFS的常规安装有2个节点选项
1. IPFS桌面可直接从计算机(笔记本电脑或台式机)存储或共享文件。用户可以安装支持IPFS的应用程序,以便他们可以通过Web浏览器访问本地节点。这是对等网络文件共享的安装形式。
2. IPFS群集,用于大规模存储和共享文件,该群集允许在IPFS节点之间排列和协调标识号组合(引脚集)。通过IPFS群集,用户可以使用分布式节点来构建大文件存储系统。
安装基本IPFS桌面后,节点配置从初始化存储库开始。以下是用户从Windows Powershell或Mac / Linux终端外壳输入的命令。
ipfs初始化
gt;在/Users//.go-ipfs处初始化ipfs节点
gt;生成2048位RSA密钥对…已完成
gt;对等身份:Qmcpo2iLBikrdf1d6QU6XuNb6P7hwrbNPW9kLAH8eG67z
gt;要开始,请输入:
gt;
初始化操作是**使用IPFS系统时需要执行的步骤。下一步是运行IPFS程序处理过程,以将节点连接到网络。
ipfs守护程序
gt;初始化守护程序…
gt; API服务器在/ip4/127.0.0.1/tcp/5001上侦听
gt;**服务器在/ip4/127.0.0.1/tcp/8080上侦听
该指令涉及在本地计算机127.0.0.1上初始化并运行程序处理过程。它将启动侦听TCP端口5001的API服务器和侦听TCP端口8080的**服务器。现在,通过发出群集指令,用户可以看到网络上的其他IPFS节点。说明如下:
ipfs群
gt; /ip4/104.131.131.82/tcp/4001/p2p/QmaCpDMGV2BGHeYERUEnRQAwe3N8SzbUtfsqQLuuJ
gt; /ip4/104.236.151.122/tcp/4001/p2p/QmSoLju6m7xTh3DuokT3886QRYqxAzb1kShaanJgW36yx
gt; /ip4/134.121.64.93/tcp/1035/p2p/QmWHyrPWQnsz1wxHR219ooJDYT*yZuDUPSDpdsAoN5
gt; /ip4/178.62.8.190/tcp/4002/p2p/QmdXzZ25cyzSF99csCQmmPZ1NTbWTe8qtKFaZKpZQPdTFB
如IPFS说明中所述,对等方使用的格式为:
/ p2p /
以下是在Internet上获取文件的指令示例:
ipfs cat /ipfs/QmW2WQi7j6c7UgJTarActp7tDNikE4B2qXtFCfLPdsgaTQ/cat.jpggt; cat.jpgopen cat.jpg
该指令将从指定对等体“ cat.jpg”中获取一个对象,并在本地打开它。
IPFS脚本语言
以下是使用Runkit NPM和Infura**(对公众免费)将数据写入IPFS网络的测试代码。
const IPFS = require(1.1.5);
const ipfs = new IPFS({host :, port:5001,protocol:});
const data =“在网络上写测试消息”;
ipfs.add(data,(err,hash)=gt; {
如果(错误){
返回conSOLe.log(err);
}
conSOLe.log(+ hash);
})
在此代码中,用户通过命令功能在Node.上应用“ ipfs-mini”包,配置Infura IPFS**的访问通道“ ipfs.infura.io”,并将数据指定为字符串“ Writing a测试消息“在网络上”然后创建一个条件指令,如果有问题,它将返回错误提示,如果用户需要获取哈希值,则控制台将自动输入**地址和哈希值。
结果将返回唯一的哈希:QmQhadgstSRU7aYnN25kwRBWtxP1gB9Kowdeim32uf8Td
接下来,用户可以输入相应的URL链接:https://ipfs.infura.io/ipfs/QmQhadgstSRU7aYnN25kwRBWtxP1gB9Kowdeim32uf8Td
然后,结果将显示用户刚刚输入到Infura**的数据。当然,数据不会持久存在,但是在几天或几周不活动后会清除。如果用户需要**存储数据,则应在本地或云上使用专用服务器。
如果整个程序没有错误,则可以返回数据的哈希值。
IPFS系统的优势
去中心化文件存储在网络节点上,可以根据哈希表进行引用。通过Filecoin的激励机制,可以刺激节点存储文件。
容错-如果一个节点发生故障,只要有其他节点存储该文件,该文件仍然可用。没有单点故障。
可伸缩性-存储文件的节点越多,网络用户获取信息的能力就越快。
持久存储-IPFS系统的核心内容是数据存储:只要可以访问与原始数据相对应的对象以及任何新版本,就可以检索所有文件的历史记录。由于每个数据块都通过网络本地存储并且可以无限期缓存,这意味着IPFS中的任何数据都可以**存储而无需修改。
**检查-内容上载到IPFS系统后,任何中央机构都无法删除它,因为它散布在整个网络中。仅删除一个节点的数据并不能完全删除该文件,也就是说,备份文件仍存储在其他节点上以供使用。
IPFS系统的缺点
不友好的用户
对于用户而言,在IPFS网络上创建文件索引的方法不是很友好。例如,要通过哈希地址访问文件,请输入:
数据开发人员可以通过链接共享文件,但是就过程而言,这非常繁琐且耗时。 IPFS使用星际命名系统(IPNS)查找文件。 IPNS系统将尝试使用户更容易进行名称解析,就像Internet上的域名服务(DNS)一样。
另一方面,该系统还具有图形用户界面(GUI)和基于Web的派生IPFS应用程序,这使用户访问更加容易和方便。但是,与普通智能手机应用程序的任何“ 何一部分相比,由于学习曲线更加陡峭,其用户友好性和操作简便性仍需要提高。这并不像单击Web链接那样简单。用户必须了解IPFS的工作原理才能使用它。
数据隐私与合规
实际上,使用IPFS系统在共享存储系统上存储客户数据(例如“可识别您的客户(KYC)”之类的个人身份信息)不是**实践,首先,它违反了数据存储的合规性原则,这意味着诸如“了解您的客户”之类的数据不能也不应在公共云或共享存储空间上发布,当然,IPFS系统也包含在此处,在公共云上,数据管理的组织和控制较少对金融机构的严格要求是将数据和数据备份保存在受监管的而不是共享的存储系统上;另一方面,由于所有数据都在公共网络上,因此任何节点都可以承载“了解您的客户”数据。进一步违反严格控制数据存储对象和存储位置的法律和法规。
第二个问题是,如果所有节点都必须遵守整个金融系统的规则和规定,则意味着它们必须具有备份,强大的安全性和容错能力。在公共网络上,节点是随机分布的,它们不必建立在人为设置的任何系统上,也不必按照规则进行操作。即使某些数据被加密,这些节点仍然可以与网络上的其他用户共享数据,因此我们不能阻止恶意参与者访问数据。他们可以自己解密它,然后以其他非法方式使用它。
资料不一致
在整个IPFS网络系统中,该节点势必不会长时间备份和维护数据,因此它可以选择清除缓存的数据以节省空间。这意味着从理论上讲,如果没有其他节点存储相关数据,则该文件可能会随时间“消失”基于当前的采用水平,暂时不是一个难题,但是从长远来看,备份大量数据需要强大的财务动力。
这里的问题是,如果公司选择使用公共IPFS网络来存储文件,那么将来,节点可以选择不随时存储文件。如果所有节点都选择相同,则除非IPFS系统在专用网络上运行,否则该文件将无法长时间保留在网络上。根据IPFS协议,如果用户上载到IPFS网络的文件无法获得很高的访问量,它将自动消失。换句话说,用户数据需要在Internet上变得更加流行才能**保存。如果用户不希望其数据从IPFS网络中消失,则必须将数据固定在该节点上,也就是说,必须确保至少他自己的节点拥有整个网络上的数据。
由于IPFS系统是去中心化的,因此所有存储节点都将具有上载文件的副本。一般而言,如果文件处于非活动状态或不经常使用,它将被缓慢拒绝。无疑这是一个非常有争议的问题,因为有时文件需要存档而不经常使用,有时需要立即删除。当用户更改已经存储在IPFS上的数据时,相应的哈希也必须更改。当然,如果文件有新版本,则用户必须重新上传它,但不会覆盖旧版本。这将影响到文件的现有链接,这意味着原始链接将保持不变,但是用户需要为新文件创建一个新链接。
在更新KYC数据(包括护照和驾照)时,这可能是一个挑战。凭据信息过期后,用户必须上载新版本以替换旧版本。 IPFS系统提供版本控制,但是一旦将其扩展到公共网络,事情就会变得棘手,因为不同的节点可以具有多个版本。旧版本将不会自动更新,只能存档或销毁。 IPFS系统无法以与AWS或Azure相同的方式存档文件。
IPFS具有版本控制系统。这是其Merkle DAG结构的功能,该结构允许用户构建分布式版本控制系统(VCS)。目前****的示例是Github,它使开发人员可以轻松地在项目上同时实现协作。 Github上的文件使用Merkle DAG结构进行存储和版本控制。它允许用户独立**和编辑同一文件的不同版本,存储这些版本,然后将所有编辑的内容合并到原始文件中。但是,根据大多数开发人员的观点,这些内容仅是理论上的,其实用性尚未得到充分测试和验证(截至撰写本文时)。如果我们要实现它,它将需要更多的时间和开发成本,从长远来看,这是值得期待的。
在Web3Studio SoJourn项目中使用IPFS系统(图片来源:Consensys)
项目总结
IPFS系统更适合于长期数据存储,例如数字音乐,艺术品和认证信息(例如证书,文凭,奖励和捐赠证书)。这些数据不需要更改,将其放在基于区块链的存储系统上更有意义。它为创作者或艺术家提供数字证书,没有人可以更改它,并且可以通过基于哈希的系统和目标键值对来证明。
IPFS系统上存储的数据是非常公开的,这要求对数据具有更高的机密性。这可能会违反某些披露私有数据的数据存储法规(例如,通用数据保**规)。 AWS和Azure云上还有可扩展的数据存储解决方案,可以满足用户的隐私,安全性和合规性要求。实际上,由于IPFS存储数据,因此无需发布个人信息。对于公开透明的内容信息,IPFS系统可以为内容所有者提供真实性证明。它可以通过证明创作者(例如艺术品)的所有权来维护其作品的版权,以便我们的用户收取应有的版权费,还可以防止犯罪分子窃取他人的作品并获得荣誉。
IPFS系统似乎为内容提供了快速,安全的容错文件存储。但是,它可能不适用于需要严格规定如何存储和保护数据的财务信息和私人数据。对于需要频繁更新和更改的文件,例如连续记录数据信息的活动日志文件,也不建议使用此系统。在区块链上存储数据的目的不同,IPFS系统将提供相应的解决方案。随着IPFS的发展,它可以使用隐私级别来隐藏静态加密的个人数据,并努力不违反任何公开机密性的法规。
资料来源:小联财经
翻译:Celia
文章标题:IPFS在分布式文件存储系统中的应用
文章链接:https://www.btchangqing.cn/54352.html
更新时间:2020年07月13日
本站大部分内容均收集于网络,若内容若侵犯到您的权益,请联系我们,我们将第一时间处理。