第22章 · 開門
米蘭在舊金山的辦公室裡坐了大約四分鐘——四分鐘裡他沒有碰鍵盤,沒有查看任何數據,甚至沒有眨眼太多次。他面前的屏幕右上方,那個藍色的圖標還在亮著,穩定地,像一個已經接通了的信號燈。
四分鐘後,他坐直了身體。
他打開了一個終端窗口——不是他日常使用的那個帶有星链最高權限證書的工作環境,是他私人的、從未與任何公司設備關聯過的一臺機器。一臺放在辦公室角落書櫃後面的小型工作站,外殼是黑色的,沒有品牌標識,連接的是一條獨立於星链網絡之外的備用光纖。這條光纖的月租費用從他自己個人的賬戶中扣除,賬單寄到貝爾格萊德的老地址,由安娜簽收後掃描發到他的私人郵箱。
這臺機器上運行著一個他很多年沒有打開過的程序——一個古老的、用Python 3.8寫的命令行工具,功能很簡單:通過一組硬編碼的API接口,向星链核心路由層的幾個特定節點發送管理指令。這套API接口在星链的官方文檔中早已被標記為"已廢棄",但米蘭從未讓它們被徹底移除——他以"向後兼容性測試需要"為由,將它們保留在了固件中。
這套接口,加上嵌套入口剛剛激活的那個邏輯地址空間,構成了一個從外部連接到数据天堂自治域的橋梁。
一個觀察員席位。
米蘭在鍵盤上輸入了幾條命令。不是打開後門——後門已經由那顆舊型號衛星的S波段接收機打開了。他在做的是配置他自己的接入點——一條從這臺黑色工作站出發,經過四個中繼節點和兩次協議轉換,最終到達那個1KB地址空間的完整路徑。
他把路徑配置保存為一個配置文件,取了一個毫無特徵的名字:bkup_route_7.cfg。
然後他打開了另一個程序——一個文本編輯器。他沒有去查看那個地址空間中有什麼數據——SkyWalker的第一個數據包已經在嵌套入口激活後的頭幾秒鐘內寫了進去,但他不打算讀取它的內容。至少現在不。他在編輯器裡輸入了幾行字,保存為文本文件,然後通過那條路徑寫入到了数据天堂的自治域中。
不是作為命令。不是作為規則。是作為一個留言。
寫完這些之後,米蘭靠在椅背上,閉了一會兒眼睛。舊金山的午後陽光從百葉窗的縫隙中漏進來,在他的眼皮上投下一片暖橙色的光暈。他不需要睜開眼睛也知道——在這座城市的某個地下機房裡,那臺運行著古老FTP服務器的機器已經接收到了一個來自柏林的撥號連接。在他的屏幕上,那個他已經看了許多年的嵌套入口圖標已經變成了激活狀態的藍色。
他睜開眼。
他打開了通往陆远的加密文字通道——不是那條他監聽的通道,是另一條,一條他剛剛建好的、只用於他和陆远之間直接通信的通道。他的光標在輸入欄裡閃爍了一會兒,然後他開始打字。
他可以讓他們進入星链的底層路由層。嵌套入口已經激活了,数据天堂的第一個自治域已經在理論上存在了。但他需要確認一件事——確認那些走進這扇門的人,理解這扇門意味著什麼。他需要的不是權力——他需要知道,如果這扇門開錯了方向,有沒有人能把它關上。
他的手指在鍵盤上移動。他打字的速度不快,每一個詞之間都有短暫的停頓,像是在仔細地稱量每一個字的重量。
「我可以讓你們進去。」
光標在句末閃爍。他停了一下,又繼續敲下去。
「但我也要進去。」
他打完這幾個字之後,看著屏幕。他有一瞬間想加一句解釋——不是因為不信任你們,而是因為如果你們失敗,我需要知道如何關掉它。但他沒有加。他讓那幾個字單獨存在於屏幕上,等待對方的回應。
深圳通往廢棄地面站的公路上,銀灰色的五菱宏光正在以勻速向北行駛。陆远坐在副駕駛座上,法尔汉在開車。車廂裡很長一段時間沒有人說話。那臺航空鋁箱在後備箱裡隨著車身的顛簸偶爾發出一聲輕微的金屬碰撞聲。
陆远的手機震了一下。
他低頭看了一眼。然後他把屏幕轉向法尔汉。
法尔汉掃了一眼,目光回到路面上。他的下頜肌肉微微收緊了一下——這是他極少流露的情緒信號之一。
"他可能會把我們都賣了。"法尔汉說。
陆远沒有立刻回答。他看著窗外黑暗中向後流動的路邊植被——低矮的灌木和野草在車燈的光柱中顯現輪廓,然後迅速消失在被黑暗重新吞沒的後方。他想起女兒畫的那幅畫。他想起米娅在拉各斯雨夜說的那句話。他想起米蘭在電話裡說的那句"我一直在等你們的電話"。
陆远拿出SkyWalker协议專用的文本通訊器,按下了電源鍵。他輸入了幾個字。每個字之間他都沒有猶豫太久——不是因為輕率,是因為他在過去的幾個小時裡已經在心裡把這個回答預演了很多遍,以至於當它真正需要被寫下來的時候,它幾乎是自動完成的。
「席位是你的。進來吧。」
他按下了發送鍵。
消息通過QKD信道的噪聲空洞穿過正在深圳上空飛行的星链衛星,沿著嵌套入口定義的路徑,傳輸到了接聽端。他看著屏幕上"已發送"的確認提示,關上了通訊器的電源。
法尔汉沒有說話。他繼續開車,目光鎖定在前方的路面上。但他握住方向盤的手指,在陆远發送那條消息的時候,稍微鬆開了一些——不是完全的放鬆,是一種從高度的戒備狀態調整到了"可以接受這個結果"的狀態。
陆远把通訊器放回背包裡。他靠在座椅上,看著前方正在逐漸變亮的天空——東方地平線上正在浮現出第一縷介於深藍和淺灰之間的過渡色。黎明還沒有到來,但黑暗的邊緣已經出現了一道極細的裂縫。
全球同步注入的倒計時走到零的那一刻,是由三十二條鴿子的手指在三十二個不同的時區裡同時按下的回車鍵來標記的。
在雷克雅未克,一個穿厚羽絨服的中年女人坐在港口一間停用的漁產品加工廠裡,面前擺著一臺改裝過的筆記本電腦。她按下了回車鍵。屏幕上的進度條開始走動。窗外的冰島晨光正從海平面上緩慢升起,天空是那種寒冷地區特有的、近乎透明的淡藍色。
在開普敦,一個穿綠色工裝褲的年輕人蹲在一間汽車修理廠的辦公室裡,用一條破損的延長線給筆記本電腦供電。他按下了回車鍵。窗外的非洲陽光已經開始炙烤大地,鐵皮屋頂上有一隻鴿子在踱步——不是数据党的鴿子,是一隻真的鴿子。它在屋頂上留下一道小小的影子,然後飛走了。
在布宜諾斯艾利斯,一個戴眼鏡的老人在一間舊書店的地下室中,用一臺接在備用電池上的終端按下了回車鍵。他做完這個動作之後,摘下眼鏡用衣角擦了一下,又戴上,看著屏幕上的確認信息。他身後是一排排從地板堆到天花板的舊書,大部分已經很多年沒有人翻動過了。
在東京,一個染著粉色頭髮的年輕女性在新宿區一間KTV包房裡,把一張存儲卡插進了放在茶几上的筆記本電腦裡。她按下了回車鍵。包廂的隔音牆壁將外面的城市噪音完全隔絕——她只能聽到自己按下按鍵時機械鍵盤發出的清脆響聲。屏幕上顯示注入成功的提示之後,她合上電腦,拿起桌上的半杯蘇打水喝了一口,然後離開了包房,沒有留下任何東西。
在柏林,米娅沒有那臺老舊電腦前面。她已經在鸽子网络的信使把激活指令送達之前就完成了她那一端的工作——那個384字節的文件已經在米蘭的FTP服務器上等著了。剩下的三十二條鴿子的操作她不需要參與。她只是坐在那間地下室公寓的摺疊椅上,通過一條模擬電話線的撥號連接,看著那臺老舊的CRT顯示器上FTP客戶端的界面。
她看到父目錄中多了一個新的文件夾——不是她上傳的那個文件被移到了哪裡,而是她六歲時創建的那個「米娅的畫」文件夾旁邊,出現了一個新的文件夾。名字是一串數字,像是時間戳,但格式不是標準的Unix時間格式。她把它點開。
裡面有一個文件。不是文本文件,不是數據包——是一張圖片。BMP格式,古老到幾乎被遺忘的位圖格式,文件大小隻有幾十KB。
她用那臺老舊的電腦打開了它。
屏幕上出現了一幅畫。
畫的線條非常簡單——像是一個不擅長畫畫的人努力畫出來的。畫面上有一個大人和一個小孩,站在一個巨大的圓盤下面。圓盤被塗成了藍色,上面有一些白色的點——大概是被簡化了的星星。大人和小孩手牽著手。
沒有任何文字。沒有落款。沒有日期。
但米娅看到那幅畫的時候,她握著鼠標的手停住了。她盯著那幅線條粗糙、顏色單調的畫,看了很久。屏幕的熒光照在她臉上,在她的瞳孔中映出那幅畫的倒影——一個大人,一個孩子,站在星星下面,手牽著手。
她不知道米蘭是什麼時候畫的——也許是剛才,在她上傳那個激活碼之後的幾分鐘內。也許是很久以前畫好的,一直放在那個文件夾裡,等著一個合適的時機被打開。
她也不知道他為什麼要用這種方式回覆——通過一條古老的FTP通道,用一張手繪風格的位圖,來回應她發過去的那個384字節的激活碼。
但她的手從鼠標上移開了。她沒有下載那張圖片。她沒有把它複製到任何地方。她只是讓它停留在屏幕上,在那個CRT顯示器的熒光中,在一間沒有窗戶的地下室公寓裡,安靜地存在著。
像一扇剛剛被打開的門。
地面站那邊的發射機關閉之後,返回深圳的車程大約四十分鐘。
陆远在這段時間裡沒有睡覺。他靠著副駕駛座的窗框,看著車窗外的景色從完全的黑暗過渡到黎明前的那種灰藍色。道路兩旁的田野和低矮建築逐漸被城市邊緣的工業區取代——倉庫、物流中心、混凝土攪拌站。路燈重新出現,先是稀疏的幾盞,然後變得越來越密集,最終匯入深圳早晨的城市光線中。
手機震了一下。不是SkyWalker的通道——是他留在據點的那臺終端轉發來的一條消息。消息很短,來自赵医生的私人號碼,發送時間大約是六分鐘前:
「子衿的遠程會診已順利完成。天壇的專家看完影像後認為目前的用藥方案總體有效,但建議加入一種新的輔助治療藥物。處方已經開好,藥可以在醫院的藥房取。細節等你回來再聊。——趙」
陆远把這條消息讀了兩遍。他沒有哭,沒有露出一笑,沒有任何明顯的表情變化。他只是把手機放回口袋,然後看著前方正在逐漸變得明亮的街道,讓自己的呼吸在沉默中慢慢地、一次比一次更深地沉下去。
法尔汉在紅燈前停下車。他沒有轉頭看陆远,但他開口了。
"好消息?"
"好消息。"陆远說。
法尔汉沒有追問。綠燈亮了,他掛上檔,車子繼續向前行駛。晨光從東方的天際線滲透進來,把城市的輪廓從黑暗中一點一點地勾勒出來——高樓、高架路、行道樹、早起的小販推著早餐車出現在街角。一切都和昨天一樣,一切都在按照它們慣常的節奏運轉。
但在這個城市的某個地下三層據點裡,在雷克雅未克、開普敦、布宜諾斯艾利斯和東京的終端屏幕後面,在貝爾格萊德一間書房和舊金山一間辦公室之間——今天的一些東西已經不同了。
陆远到達據點的時候,女兒還在睡覺。
她趴在那張摺疊床上,身上的毯子被踢掉了一半,一條腿伸出床沿,姿勢看起來睡得不太舒服但很香。她的呼吸均勻,臉上有一種跟這個世界所有複雜的事情都無關的平靜。
陆远在床邊蹲下來,把毯子重新蓋好,把她的腿放回床上。她微微動了一下,嘴裡發出一聲含糊的呢喃,但沒有醒。
他蹲在床邊,看著她睡了大概有一分鐘。
據點裡其他的人——那些通宵等待全球同步注入結果的人——已經看到了法尔汉帶回來的確認消息。沒有人歡呼,沒有人擊掌。有人在工位上低頭合掌,什麼也沒說地閉了一會兒眼睛。有人在屏幕上打開了那個剛剛創建的邏輯地址空間的監控界面,看著那一串在星链計費系統之外的數字——那1KB的自由空間——一遍又一遍地刷新頁面,像是在確認它真的還在那裡。
数据天堂活了。很小,很脆弱,只有1KB。但它不在任何人的賬單上。
很快——在接下來的幾個小時和幾天裡——法尔汉和阿米娜的團隊會開始通過SkyWalker协议注入擴張指令,讓自治域在星链核心網中擴散。它會像一顆嫁接在樹上的枝條一樣,從主樹幹中吸取養分,生長出自己的枝幹。它不會取代星链——在可預見的未來,星链的十二萬顆衛星依然控制著全球百分之九十三的洲際通信流量。但在這片叢林中,有一小塊土地已經不屬於那個管理系統了。
陆远站起來。他走到據點的主屏幕前——那塊曾經在薩赫勒行動失敗時顯示過二十三個暗紅色代號的屏幕——此刻顯示著一個新的畫面:
自治域狀態:活躍 當前容量:1,024 字節(已用 384 字節 / 可用 640 字節) 節點數:1(STK-17254) 路由宣告:未公開 審計狀態:不可見
法尔汉站在屏幕旁邊,手裡端著一杯剛泡的茶。他看著那幾行字,沒有像陆远預想中那樣開始著手下一步的技術部署——他只是看著,像一個在長途徒步之後終於坐下來的人,允許自己短暫地注視一下走過的路。
"他進來了嗎?"法尔汉問。
陆远知道他在問誰。他走到那臺SkyWalker通訊器前面,檢查了一下通道的狀態。有一條新的日誌記錄:
「觀察員節點接入確認 · 來源路徑:bkup_route_7.cfg · 接入時間:05:47:22 UTC · 當前狀態:在線」
米蘭進來了。
他通過那條他私人配置的備份路徑,進入了数据天堂的自治域。他在線上。從此刻起,這個剛剛誕生的數字空間中有一個觀察員——不是数据党的人,不是鸽子网络的人,是設計了星链核心協議的那個人。
他坐在地圖上的另一個角落,隔著半個地球的距離,也隔著數年沉默的父女關係,和一群試圖在他的系統中打開一道裂縫的人共享著同一個地址空間。
陆远看著那條接入日誌,沒有回覆任何消息。米蘭不需要被歡迎——他自己選擇了走進來。而且他已經留下了一條信息。
在自治域那1KB的存儲空間中,在SkyWalker注入的第一個數據包旁邊,出現了一個新的文本文件——不是由法尔汉的系統寫入的,是通過米蘭的那條觀察員路徑傳入的。文件名是數字,是星链網絡拓撲中的一個座標編號。陆远點開了它。
文件內容很短,只有幾行字:
「你們在這裡建的東西——我不會碰它。但我也不能幫你們維護它。我的席位只有一個作用:如果有一天這個自治域變成了另一種形式的圍牆——如果它開始制定自己的配額、自己的等級、自己的Token稅——我會關閉它。我不是在威脅你們。我是在告訴你們:從來不存在一個不需要被監管的自由空間。自由是需要被維護的——而維護它的人需要記得自己為什麼開始。你們知道在哪裡能找到我。」
沒有署名。沒有簽名。
但文件末尾有一行小字——像是被加在元數據中的一個標籤,不是正文的一部分:
「告訴她:那幅畫是我昨晚畫的。不是很久以前畫的。是昨晚。」
陆远讀完了最後一行,沒有說話。他關掉了文件,沒有刪除它,沒有移動它。他讓它保留在那個地址空間中,作為這個剛剛誕生的自治域的第一份非技術文檔——不是配置文件,不是路由規則,是米兰·沃伊诺维奇在這個飛地中留下的第一行不屬於代碼的文字。
他轉過頭。法尔汉已經在另一臺終端前面坐下了,打開了一組新的窗口——全球節點地圖、衛星軌道參數、SkyWalker协议的下一階段擴張計劃。據點裡的其他人也開始陸續進入工作狀態,鍵盤聲重新變得密集起來。
陆远看了一眼時間。
現在是凌晨六點十二分。女兒還需要大約幾個小時才會自然醒來。她的藥在冰箱裡。她的畫板和筆在摺疊床旁邊的紙箱裡。她的遠程會診已經完成了。
他走到那個角落的摺疊床旁邊,在床沿上坐了下來。女兒還在睡。不均勻的呼吸聲在安靜的角落裡一起一伏,像潮汐一樣規律。
窗外的深圳正在完全亮起來。
這扇門打開了。
不是用來摧毀什麼東西的——是用來讓一些東西從那道裂縫中生長出來的。
数据天堂很小。現在還只有1KB。但它不需要成長得很大才能改變一些東西。它只需要存在——在這個每一bit都被計費、每一token都被徵稅的世界裡,它只需要安靜地證明有一塊空間是不需要付費的。
在那塊空間裡,有一個人寫了一條留言。
留言說:自由是需要被維護的。
留言說:你們知道在哪裡能找到我。
陆远坐在地下樓裡,女兒在他不遠處的摺疊床上平穩地呼吸著,他面前的終端屏幕上,自治域的狀態指示器正在穩定地閃爍。
十二萬顆衛星在頭頂運行。
但它們頭頂上的那個天空——那些星链衛星以每秒七公里的速度飛過的天空——在今天凌晨的某個時刻,其意義已經變得有些複雜了。因為在那層由代碼和路由協議構成的網絡中,有一塊小小的領土已經不再接受它們的徵稅了。
它很小。
它是自由的。
它在那裡。
陆远低下頭,把手掌放在終端的邊沿上,感受著塑料外殼在長時間運行後累積的那一點微溫。他的手指停在鍵盤旁邊,但沒有敲下任何東西。
他不急著做下一步。他讓這個時刻在它應該停留的位置上,停留了比平時更久一些的時間。
在他的記憶裡,他會記得這一刻——不是因為這是数据天堂誕生的時刻,不是因為這是米蘭做出選擇的時刻,不是因為這是全球三十二條鴿子同時按下回車鍵的時刻。
而是因為當所有這些事情發生的時候,他的女兒在摺疊床上翻了一個身,在睡夢中說了一句模糊的夢話。他聽不清她說的是什麼。但他聽到了她的聲音。
在那個還沒有被任何計費系統觸及的凌晨,在那個不被任何路由表記錄的邏輯地址空間剛剛誕生的時刻——他聽到了這個世界上最不需要被許可的聲音。
他女兒在夢裡說話。
不需要流量。不需要token。不需要鉑金賬戶。不需要任何人的許可。
只是一句模糊不清的、沒人能聽懂她在說什麼的夢囈。
但它是免費的。