IPFS技术架构

2024-02-02 12:50
文章标签 技术 架构 ipfs

本文主要是介绍IPFS技术架构,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

http://www.btb8.com/fil/1901/34931.html 

部分以合理优化的结构形成整体时,整体功能就大于各部分功能之和。这是适用于任何事物上的经济原理,包括虚拟经济。区块链就是很好的例子,常见的公式加上巧妙的构架,诞生出区块链在虚拟货币上的第一个落地应用,成为互联网3.0的里程碑事件。那IPFS,这个从对外发布就备受瞩目的当红明星项目呢?又具备何种美妙的身体构架和整体设计,让人为之赞叹?我们今天就一起来看看。

  IPFS的身体架构

  IPFS至少有八层子协议栈,从上至下为身份、网络、路由、交换、对象、文件、命名、应用。每个协议栈各司其职,又互相搭配。

  IPFS技术构架图

  身份层和路由层可以一起解释。对等节点身份信息的生成以及路由规则是通过Kademlia协议生成制定。KAD协议实质是构建了一个分布式松散Hash表,简称DHT,每个加入这个DHT网络的人都要生成自己的身份信息,然后才能通过这个身份信息去负责存储这个网络里的资源信息和其他成员的联系信息。如同微信名片分享,在无法通过直接搜索微信号的情况下,如果你要找一个人,可以通过有这个人联系方式的朋友分享名片来建立联系。

  身份层 路由层图

  网络层比较核心,使用的LibP2P可以支持任意传输层协议。NAT技术能让内网中的设备共用同一个外网IP,我们都体验过的家庭路由器就是这个原理。

  交换层是类似迅雷这样的BT工具。迅雷其实是模拟了P2P网络,并创建中心服务器,当服务器登记用户请求资源时,让请求同样资源的用户形成一个小集群swarm,在这里分享数据。这种方式有弊端,一位服务器是由迅雷统一维护,如果出现了故障、宕机时,下载操作无法进行。

  交换层图

  中心化服务还可以限制一些下载请求,人们发明了一种更聪明的方式就是BitTorrent,让每一个种子节点所要存储的数据,通过哈希表存储在里面,BT工具相对不太受监管,服务更加稳定。

  IPFS团队把BitTorrent进行了创新,叫作Bitswap。它增加了信用和帐单体系来激励节点去分享,我推断FILeCoin有很大概率是基于Bitswap,用户在Bitswap里增加数据会增加信用分,分享得越多信用分越高。如果用户只去检索数据而不存数据,信用分会越来越低,其它节点会在嵌入连接时优先选择信用分高的。

  这一设计可以解决女巫攻击,信用分不可能靠机器刷去提高,一直刷检索请求,信用分越刷越低。请求次数和存储量的变量之间有一个比较精妙的算法,类似一个抛物线,前期可以容忍很多东西,达到一定次数后不再信任。

  对象层和文件层适合结合来谈,它们管理的是IPFS上80%的数据结构,大部分数据对象都是以MerkleDag的结构存在,这为内容寻址和去重提供了便利。文件层是一个新的数据结构,和DAG并列,采用Git一样的数据结构来支持版本快照。

  对象层 文件层图

  命名层具有自我验证的特性(当其他用户获取该对象时,使用指纹公钥进行验签,即验证所用的公钥是否与NodeId匹配,这验证了用户发布对象的真实性,同时也获取到了可变状态)。并且加入了IPNS这个巧妙的设计来使得加密后的DAG对象名可定义,增强可阅读性。
 

  最后是应用层,IPFS核心价值就在于上面运行的应用程序,我们可以利用它类似CDN的功能,在成本很低的带宽下,去获得想要的数据,从而提升整个应用程序的效率。

  应用层图

  新的技术取代老的技术,无非就两点:第一,能提高系统效率;第二,能够降低系统成本。IPFS通过以上八层协议把这两点都做到了,但这只是它精妙设计的一方面,另一方面还体现在协议与模块的完美对应。

  IPFS族谱关系图

  IPFS的团队在开发时,采用高度模块集成化的方式,像搭积木一样去开发整个项目。协议实验室团队2015年创立,到17年的时间里都在做IPLD、LibP2P、Multiformats这三个模块的开发,它们服务于IPFS底层。

  从IPFS族谱关系图(纵向数据流图)上看,你能很直观地发现,看似复杂的协议构架,其实每一层的实现都绑定在对应的模块下,合理有序。

  IPFS族谱关系图

  Mutiformats是一系列hash加密算法和自描述方式(从值上就可以知道值是如何生成)的集合,它具有SHA1\SHA256 \SHA512\Blake3B等6种主流的加密方式,用以加密和描述nodeID以及指纹数据的生成。

  Mutiformats

  libp2p是一个模块化的、点到点网络的库。它具有强大的浏览器支持,能够完全在浏览器上,或通过WebSOCkets和WebRTC等协议工作,被认为是IPFS核心中的核心。它面对Quic和Tor传输协议、GO、JavaScript和Rust语言、Polkadot等各式各样的传输层协议以及复杂的网络设备,都可以帮助开发者迅速建立一个可用P2P网络层,快速且节约成本,这也是为什么IPFS技术被众多区块链项目青睐的缘由。

  libp2p图

  libp2p图

  IPLD其实是一个转换中间件,将现有的异构数据结构统一成一种格式,方便不同系统之间的数据交换和互操作。现在IPLD支持的数据结构,是比特币、以太坊的区块数据,也支持IPFS和IPLD。这也是IPFS为什么受到区块链系统欢迎的原因之二,它的IPLD中间件可以把不同的区块结构统一成一个标准进行传递,为开发者提供了成功性比较高的标准,不用担心性能、稳定和bug。

这篇关于IPFS技术架构的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/670763

相关文章

Spring Boot分层架构详解之从Controller到Service再到Mapper的完整流程(用户管理系统为例)

《SpringBoot分层架构详解之从Controller到Service再到Mapper的完整流程(用户管理系统为例)》本文将以一个实际案例(用户管理系统)为例,详细解析SpringBoot中Co... 目录引言:为什么学习Spring Boot分层架构?第一部分:Spring Boot的整体架构1.1

Java中的Schema校验技术与实践示例详解

《Java中的Schema校验技术与实践示例详解》本主题详细介绍了在Java环境下进行XMLSchema和JSONSchema校验的方法,包括使用JAXP、JAXB以及专门的JSON校验库等技术,本文... 目录1. XML和jsON的Schema校验概念1.1 XML和JSON校验的必要性1.2 Sche

Python中高级文本模式匹配与查找技术指南

《Python中高级文本模式匹配与查找技术指南》文本处理是编程世界的永恒主题,而模式匹配则是文本处理的基石,本文将深度剖析PythonCookbook中的核心匹配技术,并结合实际工程案例展示其应用,希... 目录引言一、基础工具:字符串方法与序列匹配二、正则表达式:模式匹配的瑞士军刀2.1 re模块核心AP

springboot自定义注解RateLimiter限流注解技术文档详解

《springboot自定义注解RateLimiter限流注解技术文档详解》文章介绍了限流技术的概念、作用及实现方式,通过SpringAOP拦截方法、缓存存储计数器,结合注解、枚举、异常类等核心组件,... 目录什么是限流系统架构核心组件详解1. 限流注解 (@RateLimiter)2. 限流类型枚举 (

Python实现PDF按页分割的技术指南

《Python实现PDF按页分割的技术指南》PDF文件处理是日常工作中的常见需求,特别是当我们需要将大型PDF文档拆分为多个部分时,下面我们就来看看如何使用Python创建一个灵活的PDF分割工具吧... 目录需求分析技术方案工具选择安装依赖完整代码实现使用说明基本用法示例命令输出示例技术亮点实际应用场景扩

Knife4j+Axios+Redis前后端分离架构下的 API 管理与会话方案(最新推荐)

《Knife4j+Axios+Redis前后端分离架构下的API管理与会话方案(最新推荐)》本文主要介绍了Swagger与Knife4j的配置要点、前后端对接方法以及分布式Session实现原理,... 目录一、Swagger 与 Knife4j 的深度理解及配置要点Knife4j 配置关键要点1.Spri

mysql中的服务器架构详解

《mysql中的服务器架构详解》:本文主要介绍mysql中的服务器架构,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录1、背景2、mysql服务器架构解释3、总结1、背景简单理解一下mysqphpl的服务器架构。2、mysjsql服务器架构解释mysql的架

Qt如何实现文本编辑器光标高亮技术

《Qt如何实现文本编辑器光标高亮技术》这篇文章主要为大家详细介绍了Qt如何实现文本编辑器光标高亮技术,文中的示例代码讲解详细,具有一定的借鉴价值,有需要的小伙伴可以了解下... 目录实现代码函数作用概述代码详解 + 注释使用 QTextEdit 的高亮技术(重点)总结用到的关键技术点应用场景举例示例优化建议

k8s上运行的mysql、mariadb数据库的备份记录(支持x86和arm两种架构)

《k8s上运行的mysql、mariadb数据库的备份记录(支持x86和arm两种架构)》本文记录在K8s上运行的MySQL/MariaDB备份方案,通过工具容器执行mysqldump,结合定时任务实... 目录前言一、获取需要备份的数据库的信息二、备份步骤1.准备工作(X86)1.准备工作(arm)2.手

Java中的登录技术保姆级详细教程

《Java中的登录技术保姆级详细教程》:本文主要介绍Java中登录技术保姆级详细教程的相关资料,在Java中我们可以使用各种技术和框架来实现这些功能,文中通过代码介绍的非常详细,需要的朋友可以参考... 目录1.登录思路2.登录标记1.会话技术2.会话跟踪1.Cookie技术2.Session技术3.令牌技