第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。不需要铂金账户。不需要任何人的许可。
只是一句模糊不清的、没人能听懂她在说什么的梦呓。
但它是免费的。