IPFS協(xié)議層深入分析9——交換層3 Receive Blocks

根據(jù)上一節(jié)的內(nèi)容,內(nèi)容提供者將自己存儲的內(nèi)容通過網(wǎng)絡(luò)層發(fā)出缸逃,內(nèi)容的接收者接收到數(shù)據(jù)之后厂抽,首先通過Engine的一個賬單系統(tǒng)筷凤,統(tǒng)計(jì)一下本節(jié)點(diǎn)與發(fā)送數(shù)據(jù)節(jié)點(diǎn)之間的數(shù)據(jù)交互統(tǒng)計(jì),然后查找一下Engine中緩存的WantList信息挪丢,如果還有其它節(jié)點(diǎn)也在請求本節(jié)點(diǎn)剛剛接收到的數(shù)據(jù)乾蓬,則將該數(shù)據(jù)放入peerRequestQueue中去慎恒,這樣本節(jié)點(diǎn)也會馬上成為內(nèi)容的提供者。

隨后本節(jié)點(diǎn)會將數(shù)據(jù)存儲在本地的存儲空間上死嗦,這樣既能夠?yàn)楸竟?jié)點(diǎn)的訪問者越除,再次訪問數(shù)據(jù)的時候提供數(shù)據(jù)緩存,也能夠成為其他節(jié)點(diǎn)的數(shù)據(jù)訪問者提供數(shù)據(jù)的存儲服務(wù)翼雀。

在數(shù)據(jù)交互層第一節(jié)中我們講到骡澈,訪問數(shù)據(jù)的節(jié)點(diǎn)會subscribe一些列的key锅纺,這些key是要查找的數(shù)據(jù)對應(yīng)的索引肋殴,因此當(dāng)我們接收到數(shù)據(jù)之后护锤,應(yīng)該對這些訂閱者廣播一下最新接收到的數(shù)據(jù)酿傍,步驟4就是publish這樣的消息到相關(guān)的頻道上。

當(dāng)以上操作完成后氯析,本節(jié)點(diǎn)檢查Want Manager隊(duì)列中的數(shù)據(jù)掩缓,如果接受到的數(shù)據(jù)被其他節(jié)點(diǎn)訪問遵岩,則會將數(shù)據(jù)提供給完了中的其它節(jié)點(diǎn)尘执,這是步驟5的工作內(nèi)容。本節(jié)點(diǎn)接收到數(shù)據(jù)之后表悬,會將Want Manager中關(guān)于該節(jié)點(diǎn)的請求從Want List中刪除丧靡,如果本節(jié)點(diǎn)是最初的數(shù)據(jù)請求發(fā)起者窘行,為了避免多個節(jié)點(diǎn)重復(fù)的發(fā)送同一份數(shù)據(jù)罐盔,并在網(wǎng)絡(luò)中傳播,在接受到數(shù)據(jù)之后應(yīng)該發(fā)起Cancel命令捏顺,通知其它節(jié)點(diǎn)不要再對本數(shù)據(jù)進(jìn)行全網(wǎng)查找幅骄。Cancel的邏輯與GetBlock相似拆座。有興趣的同學(xué)可以自己研究一下就提的代碼實(shí)現(xiàn)邏輯挪凑。

代碼路徑如下:

除了以上查找邏輯,數(shù)據(jù)交換層的Engine還有一個功能搞旭,就是根據(jù)本節(jié)點(diǎn)與其他節(jié)點(diǎn)的數(shù)據(jù)交換多少菇绵,來決定是否繼續(xù)為自己的鄰居節(jié)點(diǎn)提供服務(wù)咬最,如果一個節(jié)點(diǎn)接受的數(shù)據(jù)很多丹诀,貢獻(xiàn)的數(shù)據(jù)很少,那么它很可能被視為惡意節(jié)點(diǎn)铆遭,被大家加入Frozen賬號枚荣,我們上一節(jié)介紹PeerRequestQueue的時候提到過這個Map結(jié)構(gòu)。數(shù)據(jù)首發(fā)的邏輯關(guān)系如下圖衙伶。

第一個公式r表示發(fā)送的數(shù)據(jù)與接收的數(shù)據(jù)的比例關(guān)系。

第二個公式P表示繼續(xù)給對方節(jié)點(diǎn)發(fā)送數(shù)據(jù)的概率

如果我們對方節(jié)點(diǎn)發(fā)送了很多數(shù)據(jù)慌随,但是從對方接收的數(shù)據(jù)很少,那么r值會很大蹋艺,概率P就會變小黄刚,即,如果我們對對方貢獻(xiàn)的數(shù)據(jù)多涛救,接收的數(shù)據(jù)少州叠,那么我們會認(rèn)為對方有可能是攻擊節(jié)點(diǎn)凶赁∈蓿或者是惡意節(jié)點(diǎn)咏窿。反之我們應(yīng)該以更高的概率服務(wù)那些給我們提供更多服務(wù)的節(jié)點(diǎn)素征。不過這一些列的引擎設(shè)計(jì)對于Filecoin這樣的帶激勵的區(qū)塊鏈架構(gòu)方案沒有太多參考價值集嵌,因此本文沒有展開詳細(xì)的論述。在Filecoin的設(shè)計(jì)原則這御毅,只要提供代幣服務(wù)根欧,就可以享受更高的帶寬和存儲服務(wù),而服務(wù)的提供者為了獲取更多的代幣端蛆,會非常歡迎這樣的節(jié)點(diǎn)凤粗。

關(guān)于數(shù)據(jù)交換層,我們僅僅以GetBlocks這個比較有代表性的接口今豆,來講解整個的數(shù)據(jù)處理業(yè)務(wù)邏輯嫌拣,整個數(shù)據(jù)交換層需要解決的問題很多,難度也是最大的呆躲,在一個去中心化的存儲體系里面异逐,你很難有效的通知其他節(jié)點(diǎn),數(shù)據(jù)是否有效以及存儲的位置變化插掂,這將是IPFS面臨的一大挑戰(zhàn)灰瞻。

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末袍祖,一起剝皮案震驚了整個濱河市捐凭,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌,老刑警劉巖,帶你破解...
    沈念sama閱讀 218,941評論 6 508
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異,居然都是意外死亡欠气,警方通過查閱死者的電腦和手機(jī)琐鲁,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,397評論 3 395
  • 文/潘曉璐 我一進(jìn)店門奈泪,熙熙樓的掌柜王于貴愁眉苦臉地迎上來烙样,“玉大人壁却,你說我怎么就攤上這事赔硫。” “怎么了僵芹?”我有些...
    開封第一講書人閱讀 165,345評論 0 356
  • 文/不壞的土叔 我叫張陵,是天一觀的道長。 經(jīng)常有香客問我,道長,這世上最難降的妖魔是什么溜歪? 我笑而不...
    開封第一講書人閱讀 58,851評論 1 295
  • 正文 為了忘掉前任嚎莉,我火速辦了婚禮琼懊,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘饶米。我一直安慰自己丧慈,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,868評論 6 392
  • 文/花漫 我一把揭開白布吟税。 她就那樣靜靜地躺著藤韵,像睡著了一般。 火紅的嫁衣襯著肌膚如雪天试。 梳的紋絲不亂的頭發(fā)上带兜,一...
    開封第一講書人閱讀 51,688評論 1 305
  • 那天,我揣著相機(jī)與錄音,去河邊找鬼薄风。 笑死,一個胖子當(dāng)著我的面吹牛脆侮,可吹牛的內(nèi)容都是我干的锌畸。 我是一名探鬼主播盆犁,決...
    沈念sama閱讀 40,414評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼谐岁,長吁一口氣:“原來是場噩夢啊……” “哼航揉!你這毒婦竟也來了漠秋?” 一聲冷哼從身側(cè)響起捅位,我...
    開封第一講書人閱讀 39,319評論 0 276
  • 序言:老撾萬榮一對情侶失蹤烁峭,失蹤者是張志新(化名)和其女友劉穎秕铛,沒想到半個月后约郁,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體缩挑,經(jīng)...
    沈念sama閱讀 45,775評論 1 315
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,945評論 3 336
  • 正文 我和宋清朗相戀三年棍现,在試婚紗的時候發(fā)現(xiàn)自己被綠了调煎。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 40,096評論 1 350
  • 序言:一個原本活蹦亂跳的男人離奇死亡己肮,死狀恐怖士袄,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情谎僻,我是刑警寧澤娄柳,帶...
    沈念sama閱讀 35,789評論 5 346
  • 正文 年R本政府宣布,位于F島的核電站艘绍,受9級特大地震影響赤拒,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜诱鞠,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,437評論 3 331
  • 文/蒙蒙 一挎挖、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧航夺,春花似錦蕉朵、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,993評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至缭保,卻和暖如春汛闸,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背艺骂。 一陣腳步聲響...
    開封第一講書人閱讀 33,107評論 1 271
  • 我被黑心中介騙來泰國打工诸老, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人彻亲。 一個月前我還...
    沈念sama閱讀 48,308評論 3 372
  • 正文 我出身青樓孕锄,卻偏偏與公主長得像,于是被迫代替她去往敵國和親苞尝。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,037評論 2 355

推薦閱讀更多精彩內(nèi)容

  • 關(guān)于Mongodb的全面總結(jié) MongoDB的內(nèi)部構(gòu)造《MongoDB The Definitive Guide》...
    中v中閱讀 31,938評論 2 89
  • 國家電網(wǎng)公司企業(yè)標(biāo)準(zhǔn)(Q/GDW)- 面向?qū)ο蟮挠秒娦畔?shù)據(jù)交換協(xié)議 - 報批稿:20170802 前言: 排版 ...
    庭說閱讀 10,985評論 6 13
  • Spring Cloud為開發(fā)人員提供了快速構(gòu)建分布式系統(tǒng)中一些常見模式的工具(例如配置管理宦芦,服務(wù)發(fā)現(xiàn)宙址,斷路器,智...
    卡卡羅2017閱讀 134,659評論 18 139
  • 最近閱讀一本關(guān)于犬儒主義者的書大咱。讀著讀著忽然自問,讀了這么多關(guān)于犬儒主義的討論注益,我自己是一個犬儒主義者嗎碴巾?我想說答...
    我是一只悲傷的大象閱讀 1,831評論 3 0
  • 運(yùn)動講科學(xué) 很多愛運(yùn)動的朋友被問到運(yùn)動強(qiáng)度的話題時有些懵。中國居民膳食指南2016版建議每周至少5天中等強(qiáng)度身體活...
    陽光燦爛_cce4閱讀 728評論 0 0