第五屆網路社會年會 | 多米尼克 . 塔爾:讓我們重寫網路

點擊文末「 閱讀原文 」 進入 ins 網站即可觀看多米尼克 . 塔爾《讓我們重寫網路》演講視頻(中英字幕)

本文根據多米尼克 . 塔爾 [Dominic Tarr] 發表於第五屆網路社會年會「實踐智慧之網」主題三「分散式網路」的主題演講整理而成。講題原文為「Let’s Rewrite the Web」。本文作者多米尼克 . 塔爾為去中心化 Gossip 平台「Scuttlebutt」創始人。

(全文約 5600 字)

**
**

**
**

讓我們重寫網路

文:[紐西蘭] 多米尼克 . 塔爾 [Dominic Tarr]

譯:張晉琿

編 校:翠玉

摘要:網路已經在發展中伴隨我們近 30 年了,其普及性和複雜性也與日俱增。到此為止,我們已經擁有了大量的關於網路的知識。我認為目前我們已經增持了足夠多的、可以簡單地回看從網路誕生以來發生的一切的經驗。現在,如果我們從 Scratch 這樣簡易的編程工具開始會怎樣?我將在本次演講中分享一些對此的看法。

Abstract:The web has been with us nearly 3 decades, and it』s evolved a lot in that time. It』s also grown massively in complexity. In that time, we have learnt a lot. I think we now have enough experience to look back on everything that has happened in computing since the internet began and simplify it down significantly. So, what would it be like if we just started over from scratch right now? I have some ideas and will share these with you.

第五屆網路社會年會 | 多米尼克 . 塔爾:讓我們重寫網路

本文作者 Dominic Tarr 於第五屆網路社會年會現場

大家好,我今天演講的主題是 「重寫網路」。雖然主持人已經多次提到我的名字,但我還是要介紹一下自己的聯繫方式——你可以在網路上搜索 「Dominic Tarr」 來找到我,我創建了一個新的 Github 主頁;除此之外,我創建了許多 JavaScript 模塊,你也可以通過這些網址聯繫我。

「重寫網路」 是 Scuttlebutt 所引發的項目。Scuttlebutt 是一個安全的點對點(p2p)資料庫,它可以運行用戶關注者所推送的數據。這與社交搜索網路的運作方式非常相似——用戶可以和他人共享推送,構建各種應用程序。做 Scuttlebutt 時,總有一個想法在我腦海中出現,那就是希望這個系統能永遠保持安全;這需要一個允許用戶在其中構建和部署應用程序的沙箱系統。這樣一來,用戶可以通過 Scuttlebutt 創建應用程序,也可以在其上載入應用程序。

第五屆網路社會年會 | 多米尼克 . 塔爾:讓我們重寫網路

Scuttlebutt 主頁 Logo ( Scuttlebutt: https://scuttlebutt.nz

雖然還處在構思的階段,但我確信我們應該創造一個全新的、更加安全的 Scuttlebutt,尤其要在我們之前成果的基礎上進行一些提升。比如,在重建安全等級的同時實施點對點協議。這就是我不把此項目稱為安全盾牌的沙箱,而是稱之為「重寫網路」的原因。「重寫」 即 「推倒一切重新開始」,它不僅針對點對點系統,還針對其他的,像是網路操作系統之類的東西。現存的網路已經持續了三十多年,我們早已知道它更好的發展方向大概是什麼樣。我不想做重複的事,而是想創造全新的東西。

第五屆網路社會年會 | 多米尼克 . 塔爾:讓我們重寫網路

現在的網路有許多太過複雜的、實際上並不必要的冗餘(Bloat)。HTML 的說明規範就稱得上是互聯網上最無聊的部分,它有 1312 頁。可以想見,通讀全文並真正了解這些東西運行原理的人一定很少。但是像 JavaScript 這樣可以做很多事情的東西就只有說 71 頁的說明——就算沒看過,我也能很好地了解它的工作原理。我認為有一千多頁說明的 HTML 是不可接受的,更別提除說明之外,如今的互聯網上還有諸如 IndexedDB 之類的一大堆臃腫的協議。現在的網路環境對創新並不友好,很多東西都被捆綁在一起,瀏覽器則是組成了一個超級單調的巨無霸(monolithic)——所有供應商都需要統一想法,任何創新的設計都會被視為麻煩。包括網路音頻(Web Audio)也是個非常臃腫的 API,它包括了太多未被刪除的多餘之物。想要通過在這些東西上添添補補來改變網路環境顯然不是個好主意;我們真正需要的是大量持有不同想法的人分別進行實踐,看看哪種方法能夠變得流行。

今天的網路(web)是如何形成的?90 年代初期,所謂的網路只是一個網路化的文檔查看器。90 年代中期,JavaScript 被添加了進來,而如今,它是網路上最主要的編碼語言。現在的網路操作系統實際上是一個不太好用的 JavaScript 應用程序平台,它不是被精心設計出來,而是意外演變而成的。基於此,我希望做一個更好的操作系統。這個系統可以有某些統一性(Unifying Concepts)——在我看來,除了網址(url)和鏈接(links),現在的網路上非常缺乏統一性。

第五屆網路社會年會 | 多米尼克 . 塔爾:讓我們重寫網路

Unix 是一個相對良好的操作系統。誕生於 60 年代末的 Unix 具有一點統一性,即「一切都是文件」。Unix 是一個位元組流,它在創建之初主要被用於處理文本,其核心概念是操縱並結合文本流的信息。Unix 所輸入的內容可以是文件或程序,這些內容會通過多種方式被處理和再輸出。現在幾乎所有的操作系統都構建在這一操作系統之上。例如,基於 Unix 的 Linux 就是時下最流行的伺服器操作系統。Android 也基於 Linux,Mac OS 則是基於 FreeBSD——Unix 的一個分支。現在還有一些針對 Linux 的 Windows 分支系統。有些人覺得,在未來,一個 Windows 系統的最新版本可能就是一個完全不同交互界面的 Linux。要是真有這麼一天,我也完全不會感到意外。

但是,行至今日,很多事情都已經改變了。「所有東西都是文件」的想法不再絕對有意義了;現在,我甚至願意說:「所有東西都不是文件」。在 1969 年,一個大型組織可能只有一台計算機,用戶通過終端連接到同一台計算機,但用戶之間不存在聯繫;但在 2020 年,一個人可以擁有多台計算機——除了筆記本電腦和手機之外,你可能還會擁有智能手錶之類其他精美的東西;甚至於你屋內像是相機和 WiFi 路由器這樣普通物品內部的計算機也都能通過 Unix 連接在一起。

所以現在,我認為最重要的概念是「一切都是網路」。網路中每台電腦內部都有許多子電腦,也就是所有的 CPU 內核。這些 CPU 內核上運行著虛擬機應用程序。在這些應用程序內部,嵌入著類似於另一台嵌套計算機(Nested Computer)的語言,你永遠可以成為計算機的製造者之一。在邏輯上,我將計算機定義為「可以模擬為任何其他機器的機器」。只要一台計算機正常工作,組成這些計算機的所有子計算機之間所組成的網路就可以被稱作網路。所以,每台計算機都是計算機網路。但很遺憾,現在的操作系統並不基於這樣的想法,網路瀏覽器實際上是瀏覽網路的一個應用程序,瀏覽網路意味著要執行安裝應用程序的步驟。

如今,每瀏覽一個網站就意味著要重新安裝一次網頁應用程序。在客戶端上,每個頁面都在瀏覽器的單獨選項卡中運行,某一選項卡不知道其他選項卡正在運行什麼頁面。這就像是數據中心的伺服器端運行著一台單獨的計算機,而這台單獨的虛擬機上則運行著程序。這些虛擬機可能運行在同一台計算機上,也可能分布於不同計算機。但是這對於開發者來說沒什麼不同——唯一的區別是客戶端瀏覽器和伺服器端數據中心分別由客戶端發出「拉取請求」和發出「推送請求」。就邏輯來說,「使編碼器運行」和「在伺服器端發出一個推送」幾乎是同一件事,而眼下,我們需要一個新模型,以更好的敘述當前世界所發生的變化。

第五屆網路社會年會 | 多米尼克 . 塔爾:讓我們重寫網路

我們現有的 Actor 模型(Actor Model)是在 70 年代創立的,它就像一個數據交接性質的計算單元,被用於描述分散式計算的模型。Actors 有地址,人們可以將消息發送到那兒,讓其他 Actor 接收信息。雖然信息的收取常常亂序,一些現實上的限制(Realistic Limitations)甚至會令 Actor 難以收到這些信息——比如,交易所性的分組網路中會導出大量信息,這些信息會丟失,順序也可能被打亂改;但是,我們可以在此基礎上建立協議,創建可靠性。舉個例子,CP/IP 就是一個能進行數據包重複的協議,它可以修正最底層的錯誤,我們正應該借鑒這點。

既然 Actor 模型本身不足以描述我們正在進行的嘗試,我於是想到了「 Actor/Script」模型。這個模型與 Actor 模型沒有任何矛盾,只是對其進行了進一步編寫。我們或許可以根據被發送的信息中包含的腳本創建新的 Actor,腳本只是 Actor 的代碼,它甚至可以在運行之前就被修改。這些 Actor 的層次結構是相互嵌套的。一個母 Actor 其中可以被創建子 Actor (Heirachical Actors),這意味著系統的 API 和網路之類的東西可以像 Actor 一樣被解決。子 Actor 的代碼可被修改,修改母級代碼的子 Actors 可被攔截,信息則被首先傳遞給母 Actor。這意味著人們總是可以通過修改子 Actor 的代碼來查看子 Actor 的消息,以便將其先發送到母 Actor。在 Actor/Script 模型中,您可以發送 Actor 到其他 Actor,但您不能保證他們真的發送了一切內容——他們可能會運行某些不太一樣的信息。

雖然信息稍有不同,但您可以構建智能合約(Smart Contract)。若我們將網路前端構建成 Actor/Script 模型,則客戶端會將消息發送到伺服器,請求獲取伺服器用以下腳本響應的頁面:客戶在網頁上創建的新標籤或新 Actor,即 Web 後端,也就是適合這個網路模型的 Actor。當開發人員向包含 Actor 的數據中心發送消息時,數據中心將會創建作為 Actor 的 Web 伺服器,然後將客戶端請求路由到新的 Actor。雖然在這個模型中,客戶端只能與發送他們數據的原始伺服器交易所,無法與其他客戶端或者任意其他的伺服器通信,但這個層面的交易所限制較少,我們實際上可以用很多方法完成原本模型中無法完成的工作。比如,我們可以去部署一個作為 Actor/Script 模型的智能合約,並將其發送給所有 Actor。該合約被網路中每個 Actor 驗證後,整個網路都可以被當做某單一的 Actor。但是實話說,我覺得這個想法嚴重限制了數據吞吐量和效率,而您知道我們可以創造的遠不止於一台非常大卻也非常慢的計算機。

有時候,病毒和計算機漏洞(Bug)之類的東西就是一種 Actor/Script ,它就像是一個網路蠕蟲(Network Worm)般的自我複製的腳本,一旦被接受,就會自行掃描本地系統以查找它可以繼續發送的任何新地址,並將自己發送出去。Actor 和殭屍網路 (Botnet) 也可能是蠕蟲,接受著來自中央 Actor (即控制者)的腳本。但這或許也是 Actor/Script 模型的有用之處——它甚至可以描述我們不希望遇見的事物。

另外一點也是蠻有意思的,就是我們建立在命名和數據網路基礎上的命名函數網路 (Named Function Networking)。就像學術版 IPFS,通過命名請求的數據通常是其內容的哈希(Content Hash)和命名函數網路,您可以通過其哈希值引用代碼,然後請求在命名數據(Named Data)上輸出命名函數網路,並通過它來編譯代碼或對數據和其他內容執行查詢。那麼,一個更好的操作系統看起來就應該像 WebAssembly 一樣。

WebAssembly 是一種腳本語言,它允許 Actor 之間互通信息。Actor 的地址基本上是任意位元組的字元串,母地址是子地址的前綴。WebAssembly 使系統 API 像其他任何 Actor 一樣被定址和運作;這相對靈活。因此,WebAssembly 幾乎是完美的選擇,一個低水平的編譯目標;它是一個跨平台的低層級虛擬機,比 Java 虛擬機的層級低,但是比 LLVM 的層級高。WebAssembly 本就已經存在於整個既有系統的外部,所以我們也就不需要額外說服任何人使用 WebAssembly 了。

此外,WebAssembly 還是一個很好的沙箱模型,它有很多防止別人修改腳本的方式。例如,除非用戶自行令地址匹配一個函數,並為它提供一種詢問時間的方法,訪問某些 API 的 Web 程序集的時間甚至是不可知的,因此它是完全確定的。此外,代碼存儲與數據存儲器不同,一個 Unix 可執行文件可能編譯了一些程序,但它可能還會運行一些其他的內存。一個流程結束後,另一個流程上實際上有代碼,但代碼可以將指針指向代碼存儲器,還可以對其進行修改,所以它很適合被用來應對病毒和惡意黑客之類的東西。

就算它因為種種原因無法做到這點,Actor/Script 模型也能提供很多改進過的沙箱,用戶可以在這些沙箱中進行大量實驗,比如禁止將消息發送到某些前綴的 Actor 中。由於文件系統被設置的前綴將是該目錄和文件夾中所有文件的前綴,於是,你完全可以限制特定文件系統對消息的接收。此外,你也可以通過將數據發送到某特定的、可以創建子 Actor 的系統 Actor,來禁止其他前綴創建相對應的新 Actor,以建立一個更可靠的、類似「p2p」的網路 。

在這樣可靠的系統上,腳本被發給 Actor 時,子 Actor a1 也將被創造出來,而第二個被發送的腳本則會創造出 Actor b1 。第二個 Actor 可以檢查第一個 Actor,而第一個 Actor 不知道此過程。Actor 行為上的錯誤會是可被檢測的,因此,你可以提升它的可靠性。若你故意將錯誤代碼發送給 a1,要求 b1 對其進行檢查,那麼,我們可以通過統計被 b1 檢測為錯誤的數據來確保問題儘可能完整地被發現。這是一個是高度可信任的代碼的網路,由於這些代碼只關聯到三台電腦,而不是整個互聯網的所有計算機,所以取消運行這些代碼也很容易。

最後是一個決定性的建構。想必你會儘可能保證你的代碼不被篡改,且不包含任何惡意內容;於是,你可能會把某源代碼廣播給所有的伺服器,讓它們來運行代碼,並檢查它們的輸出是否完全相同。你可以創建一個地址相對穩定的代理 Actor,將其重新路由,重寫消息,再把信息發送給子 Actor,並根據相關的規則改變此 Actor 的行為 。此外,你還可以做資料庫查詢。你可以把發送給數據,掃描此數據並執行各種功能。這在代碼相對較小但數據卻很大的情況下尤其好用——一小部分代碼就足以在不將數據發送給客戶端的情況下處理大量的數據。

許可權系統的一大問題是如何決定許可權內容。我認為,較好的處理的方法不是對所有許可權選擇「是」或「否」,或允許某個第三方應用獲得某些信息,畢竟,這些都是審核員應該做的事;問題在於判斷並理解問題的合理許可權是什麼——這可能比直接查詢源代碼要容易得多。既然某個程序能在不必查看網路的情況下查看您的文件,那麼它就不應該僅僅被用於取消工作。你可以訂閱您信任的訂閱源所設的特定應用程式的許可權,而不必設定每一個應用程式的許可——如果你不同意某許可,也可以換一個更能滿足你需要的訂閱源。

第五屆網路社會年會 | 多米尼克 . 塔爾:讓我們重寫網路

本文作者

第五屆網路社會年會 | 多米尼克 . 塔爾:讓我們重寫網路

多米尼克 . 塔爾

Dominic Tarr

去中心化 Gossip 平台「Scuttlebutt」創始人

第五屆網路社會年會 | 多米尼克 . 塔爾:讓我們重寫網路

第五屆網路社會年會專題回顧

Panel3 DWeb

第五屆網路社會年會 | 馬克 . 納達爾:如何建立與架構去中心化網路

第五屆網路社會年會 | 迪倫 . 瑞柏林:看見不可見的——去中心化網路的深描

第五屆網路社會年會 | 劉懌斯:在不信任中建立信任——以 Mask 為例

Panel 2 網際網路檔案館

第五屆網路社會年會 | 山姆 . 威廉姆斯:打造一個永不遺忘的網

第五屆網路社會年會 | 林亦凌:萬花筒般的當代:亞洲藝術文獻庫的典藏

第五屆網路社會年會 | 周蓬岸:網頁里的電腦博物館——為中文社區重建具有歷史價值的數字體驗

Panel 1 基進市場

第五屆網路社會年會 | 格倫 . 韋爾:基進改變的政治哲學

第五屆網路社會年會 | 維塔利克 . 布特林:以太坊社群治理與 Gitcoin 的二次方募資

會議日程及簡介

實踐智慧之網 | Panel 4 加密貨幣主義 會議介紹與參與方式

實踐智慧之網 | Panel 3 分散式網路 DWeb 會議介紹與參與方式

實踐智慧之網 | 青年學者論壇 &Panel; 2:網際網路檔案館的講題及時間表

實踐智慧之網 | 網狀網路工作坊回顧

實踐智慧之網 | Panel 1: 基進市場 Radical Market 講者及講題介紹

2020 第五屆網路社會年會 | 實踐智慧之網 The Web of Phronesis

會議簡介與主題徵稿說明 | 第五屆網路社會年會「實踐智慧之網」(The Web of Phronsis)

第五屆網路社會年會 | 多米尼克 . 塔爾:讓我們重寫網路

第五屆網路社會年會 | 多米尼克 . 塔爾:讓我們重寫網路

中國美術學院 網路社會研究所

聲明:以上內容採集自互聯網,作品版權歸原創作者所有內容均以傳遞信息為目的,不代表本站同意其觀點,不作為任何投資指導。幣圈有風險,投資需謹慎
提示:投資有風險,入市需謹慎,本資訊不作為投資理財建議。請理性投資,切實提高風險防範意識;如有發現的違法犯罪線索,可積極向有關部門舉報反映。
你可能還喜歡