0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心
发布

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

IPFS节点之间如何进行数据交换?

IPFS滨链 2021-08-30 17:41 次阅读

区块链中最早的数据交换协议当属BitTorrent,这也是大多数区块链节点之间实现交流的基础协议,当然IPFS也必须需要能实现p2p的数据交换协议,IPFS在BitTorrent的基础上实现了自己BitSwap协议,该协议具体在IPFS节点之间如何运用呢?本文将详细介绍。

何为BitSwap协议?

BitSwap协议的定义是IPFS网络中数据块交换方式的基础协议,它是一个基于统一格式的消息对等协议,有别于request/response方式。简单点来说就是在IPFS节点中交换信息,其请求和响应的消息都使用同一类型的消息包。也就是在IPFS网络中所有的Peers(节点身份)都是对等节点,不存在BitTorrent中那样的Tracker服务器,所以通信方式更加简单。

不仅如此BitSwap协议清晰的定义了如何请求数据、如何发送数据、向谁发送数据等策略,并且每个节点都允许拥有自己的策略,将其作为数据交换的核心模块,BitSwap协议还使用一些预期设定好的激励机制来促进网络中数据的流动,通过一个点对点之间的传输记录交易账本来达到互惠的目的,让参与的节点有收益。

Bitswap 的工作原理

大家都知道IPFS将文件分成称为块的块,并且由内容标识符(CID (打开新窗口))。当节点想要运行Bitswap协议想要获取文件,他们会向其他对等方发送“想要的列表”。“想要列表”是对等方想要接收的块的CID列表。每个节点都会记住它的对等方想要哪些块,并且每次节点收到一个块时,它都会检查是否有任何对等方想要该块并将其发送给他们。简单点就是摸清楚每个节点的需求是什么,再就是其节点有哪些文件。

而为了找出哪些对等点拥有构成文件的块,Bitswap节点首先向它所连接的所有对等点发送对根块 CID 的需求。如果节点没有区块,节点将会查询分布式哈希表(DHT)询问谁拥有根块。任何以根块响应的对等点都被添加到会话中。之后Bitswap只向会话中的对等方发送请求,以免请求淹没网络。简单来说就是起到一个寻找的功能,大家可以看成内容寻址,就是文件如果没有切分成块给多个节点存储,那就只有最初存储文件的节点有,其节点就是根块存储所在。

这就是Bitswap协议的主要功能,其功能还有几个重要的策略体系:

BitSwap信用体系:上面说了BitSwap协议会有激励奖励,这正是为了节点去乐于分享或交换数据。其信用体系可以用“有借有还,再借不难”八个字概括,定义来说就是发送给其他节点数据可以增加信用值,从其他节点接受数据降低信用值,说白了就是要分享出去,不要只接受。一个节点如果只接收数据而不分享数据,信用值就会降得很低而被其他节点忽略掉。

BitSwap策略:根据信用体系,BitSwap可以采取不同的策略来实现,每一种策略(大家可以详细去官网查阅)都会对系统的整体性能产生不同的影响。不过其目的都是为了:节点数据交换的整体性能和效率最高,阻止“吃白食”的现象;就是不能够只下载数据不上传数据;可以有效的防止一些攻击行为(比如:女巫攻击);对信任节点建立宽松机制节点等等。

BitSwap账单:BitSwap节点会记录下来和其他节点通信的账单(数据收发),可以保持节点间数据交换的历史和防止篡改。当两个节点之间建立连接的时候,BitSwap会相互交换账单信息,如果账单不匹配,则清除重新记账。恶意节点可能会故意“丢失”账单,以希望清除掉自己的债务。其它交互节点会把这些都记下来,如果总是发生,节点就会被拒绝。

总体来说Bitswap协议强调的是节点之间的交换,并制定了一些信用或规则来让每一个节点去分享文件,去分享数据,而不是只接受文件,如果有这样的节点存储,最终会被系统给孤立。而且相比较BitTorrent协议在IPFS网络中使用 Bitswap 协议获取数据块一个最大的特点是,请求的数据块是跨文件的,任何类型的数据块,只要其哈希值一样,都可以拿为己用,一个Peer Swarm对应的是整个IPFS网络中的数据,因此所有的数据块都可以被用来使用,实现真正的跨文件数据交换,这也是Bitswap协议的特点。

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表德赢Vwin官网 网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
收藏 人收藏

    评论

    相关推荐

    和利时LX-CU500PLC通过HT3S-ECS-MTP网关 与TWINCAT(EtherCAT)交换数据

    本文主要介绍使用HI-TOP网关 HT3S-ECS-MTP在和利时LX-CU500PLC和TWincat 之间 进行数据交换。 解决的问题:利时LX-CU500PLC做从站与TWincat 进行数据交换
    的头像 发表于06-13 16:51 450次阅读
    和利时LX-CU500PLC通过HT3S-ECS-MTP网关 与TWINCAT(EtherCAT)<b class='flag-5'>交换</b><b class='flag-5'>数据</b>

    PLC和变频器是如何进行通讯

    与变频器 之间需要通过特定的通讯方式 进行数据交换和控制指令的传输。本文将详细阐述PLC与变频器 之间的通讯原理、方法、步骤以及实际应用中的注意事项,以期为工业自动化领域的工程师和技术人员提供参考。
    的头像 发表于05-31 15:20 1334次阅读

    3芯M5接口数据交换如何

    德索工程师说道3芯M5接口在 数据交换方面表现出色,其独特的设计和优越的性能使得它成为工业自动化系统中不可或缺的一部分。以下是对3芯M5接口 数据交换性能的详细探讨:
    的头像 发表于05-09 17:48 203次阅读
    3芯M5接口<b class='flag-5'>数据交换</b>如何

    stm32f105自动生成的USB主机, 如何进行数据的接收?

    stm32f105自动生成的USB 主机, 如 何进行数据的接收? /** * @briefThe function informs user that data have been sent
    发表于03-26 07:29

    交换芯片是什么意思交换芯片的功能有哪些

    交换芯片是网络通信设备中的核心部件,是一种实现 数据交换的集成电路,主要应用于通信网络中的 交换机、路由器等设备。其主要功能包括 数据包的接收、存储、转发和过滤等,以实现不同网络
    的头像 发表于03-18 14:34 1305次阅读

    TC275的core0与core1之间数据交换,需要做保护吗?

    像TC275这种多核的芯片,core0与core1 之间数据交换,需要做保护吗
    发表于02-20 07:18

    WiFi协议如何进行数据交换和通信

    WiFi协议栈主要包括三个层次:物理层(PHY)、 数据链路层(DLL)和网络层(NET)。每个层次都有其特定的功能和协议。
    的头像 发表于02-19 17:04 947次阅读
    WiFi协议如<b class='flag-5'>何进行数据交换</b>和通信

    华为新专利降低数据交换网络能耗和成本

    据专利摘要介绍,这项发明涉及通讯技术领域,旨在降低 数据交换网络的耗能、成本及设备尺寸。其核心部分是一款包含多个 交换晶粒以及与其有直接或间接关联的多个网络处理晶粒的通信芯片。
    的头像 发表于01-19 14:14 406次阅读
    华为新专利降低<b class='flag-5'>数据交换</b>网络能耗和成本

    ZEMAX与MATLAB动态数据交换及其应用

    )通信技术 进行了研究,并将其应用于计算机辅助调腔技术的数值模拟过程中。通过动态 数据交换完成Matlab对Zemax的控制,实现了二者 之间数据传递,即在Matlab的控制下,实现对光学
    的头像 发表于12-25 12:29 854次阅读
    ZEMAX与MATLAB动态<b class='flag-5'>数据交换</b>及其应用

    以太网交换技术讲解

    当前园区网大多使用 交换机组网,使用 交换机组建的网络管理非常灵活,可以根据同一部门或者具有相同管理要求的需要创建虚拟局域网(Vlan)。那么园区内的 交换机是如 何进行数据
    的头像 发表于12-11 10:30 644次阅读
    以太网<b class='flag-5'>交换</b>技术讲解

    不用编程实现西门子PLC和罗克韦尔AB PLC的数据交换

    plc 之间数据交换,并且不需要更改plc里的程序。 2 工作原理 如下图所示,网关设备作为一个桥梁连接在西门子PLC和AB PLC 之间。工作原理是网关分别和两种PLC 进行通信。用户可
    的头像 发表于11-20 09:15 533次阅读
    不用编程实现西门子PLC和罗克韦尔AB PLC的<b class='flag-5'>数据交换</b>

    不用编程,实现西门子,欧姆龙、三菱,AB等PLC之间数据交换的方案

    工控项目中经常遇到西门子、三菱、欧姆龙、AB等不同的PLC,有时候需要实现这些PLC 之间的信息 交换。但是这些PLC 之间的通信协议并不兼容,不能实现两个品牌的PLC 之间的直接通信。在此需
    的头像 发表于11-08 09:32 533次阅读
    不用编程,实现西门子,欧姆龙、三菱,AB等PLC<b class='flag-5'>之间数据交换</b>的方案

    freertos中是如何实现两个任务的数据交换的?

    freertos中是如何实现两个任务的 数据交换
    发表于10-20 06:17

    如何实现西门子、欧姆龙、三菱、AB等PLC之间数据交换

    工控项目中经常遇到西门子、三菱、欧姆龙、AB等不同的PLC,有时候需要实现这些PLC 之间的信息 交换。但是这些PLC 之间的通信协议并不兼容,不能实现两个品牌的PLC 之间的直接通信。在此需
    的头像 发表于10-18 09:57 1280次阅读
    如何实现西门子、欧姆龙、三菱、AB等PLC<b class='flag-5'>之间数据交换</b>

    什么是分布式节点

    讯维分布式 节点是指分布在不同的地理位置或网络拓扑中的计算机或网络设备。这些 节点通过通信协议和网络连接 进行数据交换和协同工作,以实现共同的任务或目标。 在讯维分布式系统中, 节点通常被分为
    的头像 发表于08-28 11:39 4626次阅读
    什么是分布式<b class='flag-5'>节点</b>