【戴嘉樂(lè)】(進(jìn)階)基于IPFS和Ngrok構(gòu)建自維護(hù)資源網(wǎng)關(guān)

作者簡(jiǎn)介:戴嘉樂(lè)( Mr.Maple ) | 前百度高級(jí)研發(fā)工程師 | IPFS應(yīng)用實(shí)踐者&布道師|
個(gè)人網(wǎng)站:https://www.daijiale.cn
聯(lián)系方式:微信號(hào):daijiale6239料仗。

一唁毒、背景

上篇文章《(入門)基于IPFS和Ngrok構(gòu)建自維護(hù)資源網(wǎng)關(guān)》,我們通過(guò)Ngrok為IPFS節(jié)點(diǎn)配置HTTP Tunnels菲语,充分利用了其NAT穿越的特性户魏,成功搭建了屬于自己的資源網(wǎng)關(guān)媚媒,為他人提供IPFS節(jié)點(diǎn)服務(wù)兰珍。但是這僅僅是一個(gè)雛形温亲,缺陷還很多藕溅,這篇文章來(lái)講解對(duì)資源網(wǎng)關(guān)的種種優(yōu)化和配置匕得。

二、意義

之前一些朋友問(wèn)到了這件事的意義巾表,這邊簡(jiǎn)單梳理了一下汁掠,我認(rèn)為對(duì)于 IPFS這塊的開(kāi)發(fā)者 ,需要 部署私有集群的DevOps 集币,以及未來(lái)想 組建Filecoin礦場(chǎng)的礦工 考阱,這件事情都相對(duì)比較必要,具體如下:

2.1 IPFS資源網(wǎng)關(guān)的意義:

1. 目前主流瀏覽器還未全面支持 ipfs:// 協(xié)議鞠苟,需要安裝專門的客戶端/插件
2. 沒(méi)有安裝IPFS Desktop乞榨,也可以通過(guò)HTTP方式與IPFS網(wǎng)絡(luò)產(chǎn)生交互來(lái)獲取IPFS 網(wǎng)絡(luò)的內(nèi)部資源。

2.2 自維護(hù)的意義:

2.2.1 ipfs.io 默認(rèn)網(wǎng)關(guān)存在DNS污染現(xiàn)象:

ipfs.io IP解析所在的物理位置位于美國(guó) ThePlanet機(jī)房:

在國(guó)內(nèi)当娱,對(duì)ipfs.io的ping請(qǐng)求被解析為31.13.72.34 IP吃既,

此IP所在物理地址為:愛(ài)爾蘭Fackbook分公司,

ipfs.io存在DNS污染現(xiàn)象跨细。

2.2.2 默認(rèn)的Bootstrap都是指向官方提供的節(jié)點(diǎn):DigitalOcean 云計(jì)算中心

如果需要構(gòu)造自己的IPFS私有網(wǎng)絡(luò)鹦倚,需要為本地的私有節(jié)點(diǎn)添加反向代理。

2.2.3 增強(qiáng)網(wǎng)關(guān)訪問(wèn)安全性冀惭,將資源服務(wù)與代理服務(wù)用防火墻隔開(kāi)

2.2.4. 官方提供的 Public Gateway 穩(wěn)定性感人

兩個(gè)月前的:

最近看了一下:

三震叙、優(yōu)化與進(jìn)階

3.1 個(gè)性公網(wǎng)域名+IPNS掛載

上傳Hash為 QmdzsNmvKiKQve8z15gamNo5s31g9bTWhzBg9SKG1YKTow 的IPFS資源,并掛載到本地NodeID為QmeUGXG4K4hbNPbKDUycmNsWrU3nDN69LLgHkWU2yUN6FZ的IPNS上散休,如下圖所示:

開(kāi)放網(wǎng)關(guān)媒楼,進(jìn)行效果對(duì)比測(cè)試:


監(jiān)控NAT請(qǐng)求效果:

一次個(gè)性公網(wǎng)域名(需要在Ngrok付費(fèi)申請(qǐng))+ IPNS掛載就完成了。

多節(jié)點(diǎn) IPNS 更換的方案

這邊也介紹下多節(jié)點(diǎn) IPNS 更換的方案戚丸,方便一些朋友更新網(wǎng)關(guān)資源的同時(shí)也可以保證對(duì)外的IPNS一致性:

  • 1.節(jié)點(diǎn)A創(chuàng)建新公鑰:

ipfs key gen --type = rsa --size=2048 mykey

  • 2.記錄生成在.ipfs/keystore中的公鑰mykey

  • 3.發(fā)布IPFS資源A划址,得到hashA,掛載A節(jié)點(diǎn)限府,生成IPNS HashA:

    ipfs name publish --key=mykey hashA

  • 4.將節(jié)點(diǎn)A創(chuàng)建的公鑰mykey 復(fù)制到節(jié)點(diǎn) B 的keystore目錄

  • 5.在節(jié)點(diǎn)B猴鲫,發(fā)布IPFS資源B,獲得hashB谣殊,掛載B節(jié)點(diǎn),得到IPNS HashB牺弄,這個(gè)值和IPNS HashA一致:

ipfs name publish --key=mykey hashB

3.2 網(wǎng)關(guān)資源優(yōu)化 (緩存/帶寬優(yōu)化等)

3.2.1 針對(duì)同IPFS網(wǎng)絡(luò)資源請(qǐng)求方:

設(shè)計(jì)了一種緩存自啟動(dòng)方案姻几,解決存儲(chǔ)和請(qǐng)求過(guò)程中的資源復(fù)用消耗:

3.2.2 針對(duì)外部HTTP網(wǎng)絡(luò)資源請(qǐng)求方:

設(shè)計(jì)了一種防作弊,解決過(guò)多帶寬資源消耗的方案:

這塊一定注意區(qū)分兩個(gè)場(chǎng)景概念:

  • 同IPFS網(wǎng)絡(luò)請(qǐng)求場(chǎng)景 是指兩個(gè)節(jié)點(diǎn)共同運(yùn)行,暴露公共網(wǎng)關(guān)的同時(shí)蛇捌,通過(guò)HTTP進(jìn)行對(duì)等連接訪問(wèn)抚恒。
  • 外部HTTP網(wǎng)絡(luò)請(qǐng)求場(chǎng)景 是通過(guò)NAT的形式將本地IPFS節(jié)點(diǎn)存儲(chǔ)的資源暴露在公網(wǎng)下,供各個(gè)應(yīng)用方络拌、設(shè)備方進(jìn)行HTTP訪問(wèn)俭驮,這里的IPFS節(jié)點(diǎn)角色相當(dāng)于一個(gè)中心存儲(chǔ)服務(wù)了,不具備P2P特性春贸。

優(yōu)化方案按照不同場(chǎng)景有不同策略混萝,之前很多朋友搞不清楚(確實(shí),也容易混淆)萍恕。

3.3 自動(dòng)化控制資源的分享權(quán)限

有時(shí)候針對(duì)我們自己構(gòu)建的私有IPFS網(wǎng)絡(luò)逸嘀,需要將資源外放,但是 外放需要策略來(lái)進(jìn)行自動(dòng)化控制(集成在業(yè)務(wù)環(huán)境里)允粤。

3.3.1 舉個(gè)很簡(jiǎn)單的場(chǎng)景實(shí)例

我編寫(xiě)的業(yè)務(wù)應(yīng)用需要 接收到特定以太坊智能合約的轉(zhuǎn)賬回調(diào)函數(shù) 崭倘,來(lái) 自動(dòng)開(kāi)啟對(duì)應(yīng)智能合約中IPFS資源外放的開(kāi)關(guān)

(eg:只有當(dāng)買家遵守以太坊的智能合約支付了一定數(shù)量的ETH或者其他ERC2.0代幣后类垫,才能解鎖獲取到我存儲(chǔ)在IPFS網(wǎng)路中的自拍照)

但這個(gè)IPFS網(wǎng)絡(luò)往往很多時(shí)候是我自己部署的私有集群(不會(huì)搭建私有網(wǎng)絡(luò)的朋友可以參考董哥的:IPFS指南: 私有網(wǎng)絡(luò)(private network)的搭建與使用)司光,默認(rèn)對(duì)外是不提供公共的尋址網(wǎng)關(guān)的,我該如何控制悉患?

3.3.2 資源分享權(quán)限實(shí)現(xiàn)

這邊我們可以充分利用Ngrok的Client Restful API來(lái)對(duì)NAT進(jìn)行自動(dòng)化收放残家,從而實(shí)現(xiàn)整個(gè)業(yè)務(wù)場(chǎng)景下的程序化控制:

3.3.3 Ngrok的Client Restful API Postman測(cè)試

四、IPFS資源網(wǎng)關(guān)應(yīng)用面

  • 配合 微服務(wù)架構(gòu)的后端系統(tǒng) 提供服務(wù)
  • 將IPFS私有網(wǎng)絡(luò)中的 資源靈活外放
  • 制作自己的付費(fèi)資源池(類似OSS存儲(chǔ))
  • 為前后端聯(lián)調(diào)提供API調(diào)試工具购撼,Mock數(shù)據(jù)(需要配置專門的前端瀏覽器插件跪削,例如:FE助手)

當(dāng)然這塊還有很多的實(shí)踐價(jià)值和我未曾想到的場(chǎng)景,歡迎對(duì)這塊有興趣繼續(xù)研究的朋友一起交流迂求,聯(lián)系方式在文尾碾盐。

五、參考文獻(xiàn)


相關(guān)文章和視頻推薦

【戴嘉樂(lè)】(入門)基于IPFS和Ngrok構(gòu)建自維護(hù)資源網(wǎng)關(guān)

圓方圓學(xué)院匯集大批區(qū)塊鏈名師揩局,打造精品的區(qū)塊鏈技術(shù)課程毫玖。 在各大平臺(tái)都長(zhǎng)期有優(yōu)質(zhì)免費(fèi)公開(kāi)課,歡迎報(bào)名收看凌盯。
公開(kāi)課地址:https://ke.qq.com/course/345101

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末付枫,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子驰怎,更是在濱河造成了極大的恐慌阐滩,老刑警劉巖,帶你破解...
    沈念sama閱讀 218,386評(píng)論 6 506
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件县忌,死亡現(xiàn)場(chǎng)離奇詭異掂榔,居然都是意外死亡继效,警方通過(guò)查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,142評(píng)論 3 394
  • 文/潘曉璐 我一進(jìn)店門装获,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)瑞信,“玉大人,你說(shuō)我怎么就攤上這事穴豫》布颍” “怎么了?”我有些...
    開(kāi)封第一講書(shū)人閱讀 164,704評(píng)論 0 353
  • 文/不壞的土叔 我叫張陵精肃,是天一觀的道長(zhǎng)秤涩。 經(jīng)常有香客問(wèn)我,道長(zhǎng)肋杖,這世上最難降的妖魔是什么溉仑? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 58,702評(píng)論 1 294
  • 正文 為了忘掉前任,我火速辦了婚禮状植,結(jié)果婚禮上浊竟,老公的妹妹穿的比我還像新娘。我一直安慰自己津畸,他們只是感情好振定,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,716評(píng)論 6 392
  • 文/花漫 我一把揭開(kāi)白布。 她就那樣靜靜地躺著肉拓,像睡著了一般后频。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上暖途,一...
    開(kāi)封第一講書(shū)人閱讀 51,573評(píng)論 1 305
  • 那天卑惜,我揣著相機(jī)與錄音,去河邊找鬼驻售。 笑死露久,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的欺栗。 我是一名探鬼主播毫痕,決...
    沈念sama閱讀 40,314評(píng)論 3 418
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼迟几!你這毒婦竟也來(lái)了消请?” 一聲冷哼從身側(cè)響起,我...
    開(kāi)封第一講書(shū)人閱讀 39,230評(píng)論 0 276
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤类腮,失蹤者是張志新(化名)和其女友劉穎臊泰,沒(méi)想到半個(gè)月后,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體蚜枢,經(jīng)...
    沈念sama閱讀 45,680評(píng)論 1 314
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡因宇,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,873評(píng)論 3 336
  • 正文 我和宋清朗相戀三年七婴,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片察滑。...
    茶點(diǎn)故事閱讀 39,991評(píng)論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖修肠,靈堂內(nèi)的尸體忽然破棺而出贺辰,到底是詐尸還是另有隱情,我是刑警寧澤嵌施,帶...
    沈念sama閱讀 35,706評(píng)論 5 346
  • 正文 年R本政府宣布饲化,位于F島的核電站,受9級(jí)特大地震影響吗伤,放射性物質(zhì)發(fā)生泄漏吃靠。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,329評(píng)論 3 330
  • 文/蒙蒙 一足淆、第九天 我趴在偏房一處隱蔽的房頂上張望巢块。 院中可真熱鬧,春花似錦巧号、人聲如沸族奢。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 31,910評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)越走。三九已至,卻和暖如春靠欢,著一層夾襖步出監(jiān)牢的瞬間廊敌,已是汗流浹背。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 33,038評(píng)論 1 270
  • 我被黑心中介騙來(lái)泰國(guó)打工门怪, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留骡澈,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 48,158評(píng)論 3 370
  • 正文 我出身青樓薪缆,卻偏偏與公主長(zhǎng)得像秧廉,于是被迫代替她去往敵國(guó)和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子拣帽,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,941評(píng)論 2 355

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