構(gòu)建當(dāng)前互聯(lián)網(wǎng)堆棧缺失的協(xié)議:用于實(shí)時(shí)數(shù)據(jù)的去中心化發(fā)布/訂閱網(wǎng)絡(luò)

近期在共識(shí)會(huì)議上推出 Streamr 市場(chǎng)后,我們開發(fā)團(tuán)隊(duì)下一個(gè)戰(zhàn)略重點(diǎn)是構(gòu)建Streamr網(wǎng)絡(luò)的二次迭代,我們?cè)?a target="_blank" rel="nofollow">Transmission#7 中也宣布過這個(gè)計(jì)劃。Streamr 網(wǎng)絡(luò)也是我們近期總結(jié) (retreat) 的關(guān)鍵主題之一。這篇文章將解釋為什么這一層對(duì)于我們實(shí)時(shí)數(shù)據(jù)去中心化的總體目標(biāo),以及制定實(shí)施路線圖(以及未來的挑戰(zhàn))來說如此重要。

Streamr 網(wǎng)絡(luò)是什么?

Streamr網(wǎng)絡(luò)是一個(gè)可擴(kuò)展的實(shí)時(shí)消息傳遞系統(tǒng),該網(wǎng)絡(luò)能夠讓物聯(lián)網(wǎng)傳感器、聯(lián)網(wǎng)汽車等應(yīng)用程序和設(shè)備以及幾乎所有“智能”小工具提供他們生成的數(shù)據(jù),以及監(jiān)聽來自其它應(yīng)用程序和設(shè)備傳入的數(shù)據(jù)。

該網(wǎng)絡(luò)采用發(fā)布/訂閱模式。流(有時(shí)也稱為主題)產(chǎn)生的消息將會(huì)傳遞給實(shí)時(shí)監(jiān)聽該流的所有訂閱者。它有點(diǎn)像為機(jī)器服務(wù)的即時(shí)通訊工具,在 IM Lingo 中支持“群組聊天”(多對(duì)多)、“頻道聊天”(一對(duì)多)以及“私人聊天”(一對(duì)一)的消息傳遞模式。

此種發(fā)布/訂閱網(wǎng)絡(luò)對(duì)于應(yīng)用程序開發(fā)人員來說具有以下優(yōu)勢(shì):

* 數(shù)據(jù)生產(chǎn)者只是“即發(fā)即棄”。無需設(shè)置可能危及安全性的 API、數(shù)據(jù)孤島或開放端口。只需將新數(shù)據(jù)點(diǎn)發(fā)送到網(wǎng)絡(luò)即可。這樣一來,集成就變得非常容易。

*?數(shù)據(jù)消費(fèi)者僅需監(jiān)聽即可。他們不需要知道數(shù)據(jù)源的位置、訪問數(shù)據(jù)源的 IP 地址,或者如何與它們進(jìn)行交互。他們也不需要打開服務(wù)器端口。消費(fèi)者只需連接到網(wǎng)絡(luò),訂閱自己需要的東西,并對(duì)傳輸進(jìn)來的消息做出反應(yīng)即可。

Streamr網(wǎng)絡(luò)提供的應(yīng)用程序示例是我們自己的編輯器獲獎(jiǎng)Streamr 市場(chǎng),除此之外您也可以通過API或客戶端庫在自己的應(yīng)用程序中使用它。(JS available、Java、Go 和Python 庫正處于開發(fā)過程中,如果您想通過工作客戶端庫來提供幫助,請(qǐng)與我們聯(lián)系)。

這樣的協(xié)議難道不存在嗎 ?

其實(shí)不是,在 TCP / IP 堆棧(互聯(lián)網(wǎng)的基礎(chǔ)協(xié)議套件)上沒有在全球范圍內(nèi)提供這樣的消息傳遞模式。目前,即時(shí)通訊、金融市場(chǎng)數(shù)據(jù)交付、多人游戲或由數(shù)據(jù)驅(qū)動(dòng)的物聯(lián)網(wǎng)應(yīng)用等程序的開發(fā)人員都需要使用自己的基礎(chǔ)架構(gòu)或采用能提供所需消息傳遞和存儲(chǔ)功能的中心化云服務(wù)。

我們相信 Streamr 的網(wǎng)絡(luò)不僅有用,而且絕對(duì)必不可少。我們認(rèn)為這是當(dāng)前互聯(lián)網(wǎng)缺失的數(shù)據(jù)協(xié)議。

如果使用自己的基礎(chǔ)架構(gòu),即使是最簡單的應(yīng)用程序,開發(fā)人員也必須承擔(dān)相當(dāng)高的成本。這會(huì)減少競(jìng)爭,降低創(chuàng)造能力。使用中心化云服務(wù)的后果是,世界上大部分?jǐn)?shù)據(jù)最終都會(huì)被少數(shù)互聯(lián)網(wǎng)巨頭掌控,這樣他們擁有的權(quán)力會(huì)讓消費(fèi)者的隱私不再安全。

那么,在廣泛使用的模式中,這種結(jié)構(gòu)缺陷為何在過去的至少 20年內(nèi)仍未得到解決?這是因?yàn)椋F(xiàn)有的諸如 IP 多播之類的廣播協(xié)議缺乏對(duì)互聯(lián)網(wǎng)服務(wù)提供商和大型商業(yè)玩家的激勵(lì)機(jī)制。 此外,由于技術(shù)限制,這些協(xié)議很難擴(kuò)展到潛在的數(shù)百萬接收者。

而這種結(jié)構(gòu)性赤字會(huì)變得愈加明顯,因?yàn)橄M(fèi)者對(duì)實(shí)時(shí)數(shù)據(jù)經(jīng)濟(jì)的需求即將爆發(fā)。連接到互聯(lián)網(wǎng)的設(shè)備數(shù)量有望達(dá)到數(shù)千億臺(tái),而每臺(tái)設(shè)備都會(huì)產(chǎn)生數(shù)據(jù)。所有這些信息都需要進(jìn)行安全傳輸、存儲(chǔ),并能夠提供給他人,以創(chuàng)建一個(gè)由數(shù)據(jù)驅(qū)動(dòng)的價(jià)值生態(tài)系統(tǒng)。

從這個(gè)角度來看,我們相信 Streamr 的網(wǎng)絡(luò)不僅有用,而且絕對(duì)必不可少。我們認(rèn)為這是當(dāng)前互聯(lián)網(wǎng)缺失的數(shù)據(jù)協(xié)議。

Streamr構(gòu)建基礎(chǔ)設(shè)施以支持百萬輛互聯(lián)的智能汽車 ?

Streamr 如何解決可擴(kuò)展性和經(jīng)濟(jì)激勵(lì)的問題?

Streamr 通過使用對(duì)等 (P2P) 網(wǎng)絡(luò)架構(gòu)來解決廣播消息傳遞協(xié)議的可擴(kuò)展性問題。從技術(shù)上來講,您可能會(huì)將其視為實(shí)時(shí)數(shù)據(jù)流的 BitTorrent,而非靜態(tài)文件。隨著網(wǎng)絡(luò)中節(jié)點(diǎn)數(shù)量的增加,網(wǎng)絡(luò)吞吐量可以實(shí)現(xiàn)線性擴(kuò)展。

Streamr 通過使用加密貨幣、加密驗(yàn)證和博弈論來激勵(lì)人們和組織在網(wǎng)絡(luò)中運(yùn)行節(jié)點(diǎn)(稱為代理節(jié)點(diǎn)),以此來解決經(jīng)濟(jì)激勵(lì)問題。Streamr DATAcoin,或者 DATA,它是一種加密令牌,能夠在 Streamr 生態(tài)系統(tǒng)中表示價(jià)值,它在以太坊區(qū)塊鏈上是 ERC-20 令牌。伴隨區(qū)塊鏈用于價(jià)值結(jié)算、身份以及權(quán)限控制,而數(shù)據(jù)本身則保留在可擴(kuò)展的 Streamr 網(wǎng)絡(luò)中。

代理節(jié)點(diǎn)為網(wǎng)絡(luò)提供帶寬和存儲(chǔ),并通過網(wǎng)絡(luò)用戶交費(fèi)獲得DATA。從某種意義上講,運(yùn)行代理節(jié)點(diǎn)與挖礦相當(dāng),但是節(jié)點(diǎn)并不是解決CPU / GPU 限制的人為問題或浪費(fèi)能源問題,而是提供有用的網(wǎng)絡(luò)資源,通過使用 Streamr 協(xié)議共同產(chǎn)生可用于應(yīng)用程序的消息傳輸服務(wù)。

P2P 結(jié)構(gòu)和激勵(lì)機(jī)制共同實(shí)現(xiàn)了去中心化。這意味著網(wǎng)絡(luò)在沒有任何中央方的情況下也可以運(yùn)行,我們不會(huì)控制您的數(shù)據(jù)或從中牟取利益。

這符合 Streamr 的總體目標(biāo):確保世界上的實(shí)時(shí)數(shù)據(jù)由生產(chǎn)它的人掌控。

目前也存在一些去中心化發(fā)布/訂閱協(xié)議,例如以太坊堆棧中的 Whisper 和 IPFS 堆棧中IPFS pubsub,但它們非常簡單且具有實(shí)驗(yàn)性,并不適合于實(shí)現(xiàn)大規(guī)模的機(jī)器數(shù)據(jù)經(jīng)濟(jì)。

如今的 Streamr 網(wǎng)絡(luò)是什么,路線圖又是什么 ?

Streamr 網(wǎng)絡(luò)的第一個(gè)版本已經(jīng)啟動(dòng),并正在運(yùn)行中。您可以看到,它為 Streamr 市場(chǎng)、編輯器和用戶創(chuàng)建的應(yīng)用程序提供支持。目前,該網(wǎng)絡(luò)每天處理數(shù)千萬個(gè)數(shù)據(jù)點(diǎn)。現(xiàn)有系統(tǒng)已經(jīng)提供了發(fā)布/訂閱消息傳遞功能,以及用于連接到應(yīng)用程序的 API。長遠(yuǎn)來看,這個(gè)功能接近我們想要實(shí)現(xiàn)的目標(biāo) - 然而,我們需要進(jìn)行大規(guī)模的改進(jìn)才能實(shí)現(xiàn)去中心。

下面,我將詳細(xì)介紹我們現(xiàn)在所處的位置,以及我們目前設(shè)想的未來網(wǎng)絡(luò)的主要版本??偟膩碚f,我們遵循漸進(jìn)式去中心化的原則,這樣,我們就可以隨時(shí)維護(hù)一個(gè)功能齊全的平臺(tái),新的版本會(huì)越來越多地放棄對(duì)網(wǎng)絡(luò)的控制。

我們以最喜歡的爵士鋼琴家命名我們的網(wǎng)絡(luò)里程碑:Monk、Corea、Brubeck 和 Tatum。

Monk(當(dāng)前版本)

當(dāng)前的網(wǎng)絡(luò)利用了開源大數(shù)據(jù)框架,如 Apache KafkaApache Cassandra。這些框架雖然是去中心化的,并且具有可擴(kuò)展性,但它們不是去中心化系統(tǒng)的構(gòu)建塊,因?yàn)檫@些框架依賴于所有受信任的節(jié)點(diǎn)。必須設(shè)計(jì)一個(gè)去中心化系統(tǒng)來容忍不可信和具有潛在惡意的行為者。

一般來說,Monk 缺少以下三個(gè)主要組件,因此可以讓網(wǎng)絡(luò)去中心化:

1. P2P 網(wǎng)絡(luò):網(wǎng)絡(luò)拓?fù)浜拖⒘鞅仨毎l(fā)生于沒有中央服務(wù)器控制的情況下。

2. 端到端加密:數(shù)據(jù)將通過去中心化網(wǎng)絡(luò)中不受信任的節(jié)點(diǎn),這意味著所有非公共數(shù)據(jù)都需要端到端加密以保證數(shù)據(jù)隱私。

3. 激勵(lì)計(jì)劃:運(yùn)行節(jié)點(diǎn)的用戶需要因此而獲得獎(jiǎng)勵(lì)。相反,不必要的行為必須得到抑制。

以下三個(gè)主要版本將重點(diǎn)實(shí)現(xiàn)上述三個(gè)主要功能其中之一。

Corea (WIP)

當(dāng)前的 Monk 網(wǎng)絡(luò)將會(huì)被實(shí)現(xiàn) P2P 網(wǎng)絡(luò)拓?fù)洳U(kuò)展 Monk 中Streamr 協(xié)議的網(wǎng)絡(luò)所替換。由于尚未建立必要的加密機(jī)制和激勵(lì)機(jī)制,Corea 網(wǎng)絡(luò)中的所有節(jié)點(diǎn)仍將由我們運(yùn)行。但是,這一更新會(huì)為網(wǎng)絡(luò)架構(gòu)去中心化做好準(zhǔn)備。

到目前為止,我們已經(jīng)完成了研究并構(gòu)建了一些原型來決定采用哪些路徑和技術(shù)。我們通過使用 libp2p 來獲取一些潛在有用的功能,如 DHTs 和 即用 NAT 遍歷。我們決定把節(jié)點(diǎn)寫在 JS 中,這樣,我們主要的競(jìng)爭者是 Go。如果 Go能夠帶來性能優(yōu)勢(shì)或能夠提供更成熟的庫,我們有可能會(huì)在以后進(jìn)行語言切換或創(chuàng)建并行實(shí)現(xiàn)。目前,JS 加速了開發(fā),因?yàn)樵S多協(xié)議和 API 代碼都可以從 Monk 網(wǎng)絡(luò)的數(shù)據(jù)API 中重新使用。

就內(nèi)部而言,我們希望在 6-9 個(gè)月內(nèi)可以切換到 Corea。

Brubeck

這一版本添加了端到端加密和密鑰分發(fā)機(jī)制。因此,受信方(例如,我們的合作伙伴或選定的社區(qū)成員)可以在生產(chǎn)網(wǎng)絡(luò)中運(yùn)行節(jié)點(diǎn)。在這個(gè)階段,還沒有激勵(lì)機(jī)制來阻止不良行為,因此節(jié)點(diǎn)需要被信任。端到端加密提供了數(shù)據(jù)隱私,首次允許去中心化控制網(wǎng)絡(luò)(即使它尚未達(dá)到完全信任)。

Tatum

在這個(gè)高級(jí)階段,任何人都可以參與網(wǎng)絡(luò)運(yùn)行,包括意圖不誠實(shí)的人。該版本增加了節(jié)點(diǎn)激勵(lì)機(jī)制(表現(xiàn)良好賺取DATA,表現(xiàn)不良丟失 DATA),以實(shí)現(xiàn)網(wǎng)絡(luò)的進(jìn)一步去中心化,并能夠在需要的時(shí)候繼續(xù)運(yùn)行,且完全獨(dú)立于其創(chuàng)建者。

從 Brubeck 到 Tatum 的更新最為困難,并且最為耗時(shí)。在我們開始研究 Tatum 時(shí),由于空間上的一些障礙已經(jīng)被其它基礎(chǔ)設(shè)施所解決,因此我們的研究將更加方便。以下是幾個(gè)令人興奮的發(fā)展示例,包括用于側(cè)鏈縮放的 Plasma ,用于BFT 共識(shí)的Tendermint,以及幾種區(qū)塊鏈間協(xié)議,它們慢慢朝著向生產(chǎn)準(zhǔn)備的方向發(fā)展。

從左到右:上個(gè)月在 Streamr retreat (總結(jié)) 中的Juha、Aapeli、Jarmo、Kare 和 Henri。

我們一直在尋找可以應(yīng)用的技術(shù),以求更好地實(shí)現(xiàn)我們的目標(biāo)。作為一般經(jīng)驗(yàn)法則,我們的目標(biāo)是提供支持、保持合作,并在現(xiàn)有最佳技術(shù)和生態(tài)系統(tǒng)(如以太坊)的基礎(chǔ)上進(jìn)行構(gòu)建。

因此,所有這些都是令人興奮的東西,它們必定會(huì)吸引那些熱愛軟件開發(fā)和架構(gòu)、熱衷于去中心化,或者喜歡大數(shù)據(jù)和物聯(lián)網(wǎng)的人。接下來的三個(gè)季度將非常有趣,敬請(qǐng)期待更多更新。如果您此時(shí)還沒有這樣做,為什么不立即開始使用當(dāng)前的網(wǎng)絡(luò)、市場(chǎng)和編輯器應(yīng)用程序?

關(guān)注 Streamr 的 Twitter,sub-Reddit,或在 Telegram 上聯(lián)系我們。

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • Spring Cloud為開發(fā)人員提供了快速構(gòu)建分布式系統(tǒng)中一些常見模式的工具(例如配置管理,服務(wù)發(fā)現(xiàn),斷路器,智...
    卡卡羅2017閱讀 136,680評(píng)論 19 139
  • 關(guān)于Mongodb的全面總結(jié) MongoDB的內(nèi)部構(gòu)造《MongoDB The Definitive Guide》...
    中v中閱讀 32,315評(píng)論 2 89
  • 家長與孩子之間的良好關(guān)系,對(duì)促進(jìn)孩子的學(xué)習(xí)有至關(guān)重要的作用。 我有意識(shí)地了解過初中、高中的孩子,他們認(rèn)為初三、高三...
    一夜春風(fēng)cf閱讀 439評(píng)論 4 11
  • 我一個(gè)在云南生活的同學(xué)截了一幅圖給我,昆明持續(xù)低溫,在一堆三十多度的城市里顯得十分扎眼。她說雨下得她都快發(fā)霉了。 ...
    崴呀原來是小白閱讀 303評(píng)論 0 0
  • 我叔叔是一個(gè)很精明的生意人,今年過年回家我跟他說要跟他學(xué)習(xí),他跟我說起一次尋找店面的經(jīng)歷。他在北京為了尋找合適的店...
    寧潔閱讀 151評(píng)論 0 1

友情鏈接更多精彩內(nèi)容