请选择 进入手机版 | 继续访问电脑版
客户端

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

所在版块: 区块链技术 2018-01-31 20:25 [复制链接] 查看: 1219|回复: 44

IPFS在BitTorrent的基础上实现了p2p数据交换协议:BitSwap协议
IPFS每一个节点都维护了两个列表:
·        已有的数据块(have_list)
·        想要的数据块(want_list)
当两个节点建立连接后,他们会根据hava_list和want_list互通有无。跟BitTorrent不一样的是:BitSwap获取数据块的时候不限于从同一个torrent里面。也就是说BitSwap可以从不属于本文件的其他文件获取数据块(只要数据块的哈希值一样,数据内容必然是一样的),从全局考虑,这使得BitSwap的效率相比于BitTorrent更高。
我们知道,对于p2p网络,有一个很重要的问题是:如何激励大家分享自己的数据?用过迅雷、BitTorrent、emule等p2p软件的读者应该都知道,如果只下载不上传的话,很快你的节点就无法下载数据了或者下载数据变得很慢。每一个p2p软件都实现了自己的数据分享策略。IPFS也不例外。
IPFS的策略体系由信用、策略、账单组成
BitSwap信用体系
BitSwap协议必须能够激励节点去乐于分享数据,即使这个节点暂时没有数据需求。IPFS根据节点的之间的数据收发建立了一个信用体系:有借有还,再借不难。
·        发送给其他节点数据可以增加信用值
·        从其他节点接受数据降低信用值
如果一个节点只接收数据而不分享数据,信用值就会降得很低而被其他节点忽略掉。简单来讲就是:你乐于分享数据,其它节点也乐于发送数据给你,如果你不愿意分享,那么其它节点也不愿意给你数据。
BitSwap策略
根据上面的信用体系,BitSwap可以采取不同的策略来实现,每一种策略都会对系统的整体性能产生不同的影响。策略的目标是:
1.    节点数据交换的整体性能和效率最高
2.    阻止“吃白食”(freeloaders)的现象。就是不能够只下载数据不上传数据
3.    可以有效的防止一些攻击行为(比如:女巫攻击)
4.    对信任节点建立宽松机制(lenient)
IPFS提供一个可参考的策略机制(实际的实现可以有所变化):
每个节点根据和其他节点的收发数据,计算负债率(debt ratio,r)

r = bytes_sent / (bytes_recv + 1)
节点根据负债率计算出来和这个节点的数据发送率(P)
P (send|r) = 1− 1/(1+exp(6−3r))
根据这两个函数可以发现,当负债率达到某一个值的时候负债率会急剧下降。
这个模型表达的意义:如果一个节点只接受数据不分享数据,别人发送给它数据的概率会越来越低(到达某一个值后就会急剧降低接近0),如果节点持续保持分享数据,别的节点向你发送数据的概率就会越来越大。
BitSwap账单
BitSwap节点会记录下来和其他节点通信的账单(数据收发),可以保持节点间数据交换的历史和防止篡改。当两个节点之间建立连接的时候,BitSwap会相互交换账单信息,如果账单不匹配,则清除重新记账。恶意节点可能会故意“丢失”账单,以希望清除掉自己的债务。其它交互节点会把这些都记下来,如果总是发生,节点就会被拒绝。

回复

使用道具 举报

zhaoshanshan

发表于 2018-1-31 23:44:16 | 显示全部楼层
谢谢分享
回复

使用道具 举报

com

发表于 2018-2-1 12:37:15 | 显示全部楼层
太深奥了看不懂哈哈。
回复

使用道具 举报

hzdmx7307

发表于 2018-2-1 13:41:46 | 显示全部楼层

谢谢分享
回复

使用道具 举报

wusheng75

发表于 2018-2-1 17:20:17 | 显示全部楼层
谢谢分享
回复

使用道具 举报

请输入用户名

发表于 2018-2-1 21:29:43 | 显示全部楼层
666666666666666666666666666666666666
回复

使用道具 举报

zhaoshanshan

发表于 2018-2-1 23:21:54 | 显示全部楼层
谢谢分享
回复

使用道具 举报

zhengxingken

发表于 2018-2-1 23:29:14 | 显示全部楼层
谢谢提供资讯
回复

使用道具 举报

kacusa

发表于 2018-2-2 12:53:01 | 显示全部楼层
有多少人看的明白哦,谢谢  学习了
回复

使用道具 举报

hxy1785

发表于 2018-2-2 13:42:55 | 显示全部楼层

太深奥了看不懂哈哈。
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫描关注微信公众号及微博

Archiver|手机版|小黑屋|铂链BOTTOS社区 | 国内领先的区块链公益社区论坛

GMT+8, 2018-11-14 11:53 , Processed in 0.100070 second(s), 31 queries .

铂链BOTTOS社区 | 国内领先的区块链公益社区论坛

© 2017 bottos

快速回复 返回列表