《链》24|被隔离的网络

2022年下半年,韩岚在一间临时借用的资料室里收到杜成送来的纸袋。

纸袋外面没有写项目名称,只用铅笔标着“同一材料”。杜成把它放在桌边,没有立刻松手。

“里面没有个人资料。”他说,“公告、摘要、签名和我们公开过的运行说明都在。只有一项来源,在我这里打不开。”

韩岚问:“为什么打不开?”

“隐私保护工具暂停了新的连接。原来的连接还在,但我没有权限替别的维护区申请。”

他说得很平静,像在完成一次普通交接。韩岚拆开纸袋,看到三份内容几乎相同的摘要。每份都写着一个问题:某个入口是否仍然受理新的请求?摘要末尾各有一份可核验的签名,版本号却不一样。

杜成把手收回去。“别把它们合成一份。”

“我不会。”

“也别把打不开的那一项猜出来。”

“我只记缺失。”

杜成这才坐下。他过去参加过公开资料核对,知道韩岚会把能够证明的部分和暂时没有来源的部分分开。可这次的麻烦不只在文件里。纸袋里的材料都能在某个地方打开,偏偏没有一个地方能看到全部;每个维护区都说自己按公开规则工作,资料和授权却像被几道窄门分开了。

韩岚先看杜成带来的公告。公告说,部分隐私保护工具暂缓新的连接,已经建立的连接按原范围继续;跨域资料需要人工确认;有些入口只接受本地维护者签署的更新。公告没有提到攻击,也没有说网络断开,基础账本的记录仍在增加,源币的基础规则也没有停止。

变化发生在更细的地方。过去,一个公开摘要可以沿着同一条资料链被几个维护区查看;现在,摘要能送到,原通知未必能送到,签名能查到,签名所依据的那一行来源却可能留在另一个区域。有人还可以查账,有人还可以转发,有人只能等待本地维护者重新确认。

韩岚把纸袋里的材料按来源铺开,没有把三份摘要叠在一起。杜成看着她在纸边写下“本地可见”“跨域待确认”“来源缺失”。

“这是分区吗?”杜成问。

“是资料链路出现了分区。基础账本还在运行。”

“听起来差不多。”

“不一样。账本继续记录,不代表每个副本看见同一组材料。”

杜成嗯了一声。他从袋子里取出一张小纸,上面写着三个副本的本地编号:R-24-a、R-24-b、R-24-c。它们运行在不同维护区,工具版本接近,输入范围却不能完全相同。

韩岚问:“谁允许你把这三个副本放在一起核对?”

“各自的维护者同意我把公开摘要和版本号送来。没有人同意打开本地原件。”

“那就只用这两项。”

“如果结果不同呢?”

“先写结果,再写它们看见了什么。”

下午,韩岚把同一个问题抄在三张卡片上,每张卡片的字一模一样:

某入口是否仍受理新的请求?

她没有把纸袋里那项打不开的来源补进问题,也没有替任何副本增加一条解释。每张卡片下方只列公开公告的编号、摘要截止时间和允许使用的版本号。

第一份副本在本地资料中找到一份较新的入口说明。它给出的结构化输出是:公开查询可用,新的受理等待确认。输出下面列着公告编号和观察时间,签名可以查到。

第二份副本没有看到那份较新的说明。它沿用此前被授权保存的一份材料,给出的文字是:需等待入口重新取得授权,当前不判断新的请求能否受理。它附了旧材料的来源和版本,没有把新的公告写成已经看过。

第三份副本收到的摘要里有问题编号和签名,却缺少来源字段。它只回了一行:来源不完整,无法判断。

三个输出排在韩岚面前,没有一个带着姓名,也没有一句在解释自己为什么这样想。第一份能看到较新的公告,第二份拥有旧材料的有效授权,第三份连摘要所依赖的来源都没有拿到。相同的问题经过不同资料和权限,才走到了三个结果。

韩岚把三张卡片按运行先后重新排了一遍,又看了各自的日志。R-24-a在午后两点十六分读取入口说明,三分钟后生成结果;R-24-b的日志停在上午,最后一次成功读取仍是旧资料;R-24-c在收到摘要时只完成了签名格式检查,没有完成来源内容核对。三个副本的工具版本只差一个小修订号,模板的“建议下一步”栏也有细微不同。

她没有把这些小差异当成原因的终点。日志只能说明什么时候读取了什么,不能说明为什么某个跨域连接没有回来。韩岚给本地值守的人发了一条询问,只问公开接口在什么时间停在等待状态。对方回了两个时间和一张状态截图,提醒她截图只代表本地当时看到的页面。

杜成用手指敲了敲R-24-b的版本号。“它不是坏了。”

“目前看不出坏。”

“只是看不到新的东西。”

“看不到也是它现在的运行范围。”

杜成把截图翻到背面,在空白处写下“旧资料仍在授权范围内”。他没有要求维护者把范围扩大,也没有把保持旧资料的选择解释成拒绝更新。

杜成站在她身后,看了很久。

“哪个更像正确答案?”他问。

“这个问题不适合这样问。”

“可维护者要发说明。”

“那就说明每一份输出能支持什么。第一份支持查询可用,受理待确认;第二份支持旧资料要求重新授权;第三份只能支持来源不足。”

“那入口到底收不收?”

韩岚把三张卡片转向他。“我没有一份同时覆盖三个区域的材料。”

杜成皱眉。“如果把第一份当成最新的,大家就能继续做事。”

“如果第一份的来源只在一个区域可见,其他区域不能因为它看起来更新,就把它当成自己的授权。”

他没有再逼她选。桌上的台灯有些松,光线随着电线晃动,在三张卡片的边缘来回移动。

韩岚给每份输出加上同样的四个栏目:本地来源、观察时间、权限范围、缺失材料。第一份的缺失材料写着“跨区人工确认尚未回传”;第二份写着“新公告无法访问”;第三份写着“原通知及签名依据均未获本地读取权限”。

她没有把“无法访问”改成“已经关闭”,也没有把“等待重新授权”改成“入口拒绝”。

杜成问:“如果维护者坚持说自己的版本就是正本呢?”

“让他公开本地依据和权限范围。”

“有人不会公开。”

“那就记录未获授权。”

这个回答听起来很轻,实际做起来却不轻。杜成所在的维护区第二天要发布一份入口状态说明,说明里原本准备写“新的请求暂缓”。可第一份副本说查询和受理处在两个状态,第二份副本说需要重新授权,第三份副本没有足够来源。杜成不愿意把三种状态压成一句话,也不愿让使用者把“暂缓”理解成基础规则发生了变化。

他把发布时间往后推了一班值守。

“我得再联系一遍已经问过的人。”他说,“昨天告诉他们等确认,今天如果改成来源不足,他们会以为我们把资料弄丢了。”

韩岚说:“把昨天的说明保留。”

“那新说明会更长。”

“长一点总比让人看不出哪一段变了好。”

杜成拿出一张新纸,给之前来问过的几个人分别写了回信。第一封说,入口查询仍可进行,新的受理尚待本地维护者确认;第二封说,另一维护区只看见旧资料,新的公告尚未取得读取权限;第三封说,暂时无法判断,不建议把这份副本的输出当作受理承诺。

他写到第三封时停住。“这样会不会让人觉得我们什么都不知道?”

“你们确实不知道那一项。”

“可我们知道基础账本还在,过去的记录也能查。”

“那就写知道的部分。”

杜成把三封信一一折好。下午,他又打电话给两个昨天已经离开的使用者。一个人在电话里问:“所以我今天去不去?”杜成只能说,公开查询可以先做,新的受理要等本地入口更新;另一个人问:“你们三个副本不是同一个吗?”

杜成看了韩岚一眼,按着听筒说:“它们使用相近工具,但看到的资料和权限不完全相同。”

对方沉默了一会儿。“那我应该信谁?”

杜成没有把电话递给韩岚。他说:“先信你能查到的那一份,并看它的时间和范围。其他部分还在核对。”

挂掉后,他把这句话写在发布说明的底部。韩岚读了一遍,提醒他“信”这个字太宽,可以改成“先按可核对范围安排”。

“你连这个字也要改?”杜成问。

“不是要人不相信。是让人知道相信落在哪一份材料上。”

他改了。

第二天早上,一名维护者把那张说明拍下来发回杜成,问能不能把“本地来源”一栏改成“共同来源”。杜成把请求转给韩岚。

韩岚查了附带的版本号,发现这名维护者只拥有本地公告的签署权限,没有获得另一个区域的读取权限。她回信说,可以在“来源”旁边引用共同索引的公开编号,但不能把两个区域写成拥有同一份原件,也不能把摘要的转交写成共同签署。

维护者过了半天才回:“如果不改,使用者会觉得我们互相不信任。”

韩岚没有在回信里解释信任。她只补了一句:“请按本地能够复核的范围发布;另一部分标作外部未确认,等权限变化后再更新。”

下午,那名维护者仍然没有公开本地日志。韩岚在记录页上留下“拒绝公开本地资料,未获授权”,没有把这个拒绝改写成藏匿,也没有把它算作对另一副本的反对。

隔离的第二层出现在一个下午。韩岚准备把三份输出送回另外两个维护区,原来的连接却退回全部附件,只允许发送摘要。她删去未获转发许可的本地备注,只留下版本号、摘要文本、公开来源索引和缺失字段。

第一维护区很快回传:“摘要已收到,原公告仍不可访问。”第二维护区把文件标成“外部未确认”,R-24-c只在待人工核对的队列里增加了一个编号。三份状态没有趋同,对照页只是把缺口露得更清楚。

R-24-a的维护者在设备旁贴了一张纸:“摘要已到,原件未到。”转发指示灯照常闪着,这份摘要却仍不能成为本地受理依据。

另一名维护者拒绝转发本地入口说明,也不公开当班日志。韩岚在核对页记下拒绝的范围和日期,缺失栏只写“未获授权”。

杜成问:“他要是一直不公开呢?”

“那就一直保留这个缺口。”

基础账本仍旧有新的记录。韩岚可以从公开路径确认某几笔记录已经写入,却无法从这一点推出新的请求一定会被某个入口受理。维护区之间的公告仍会互相引用,但引用有时只带着摘要和编号,原文停在另一边。有人把这种情况叫网络被切开,韩岚在说明里只写:公开数据链路分区,基础记录继续运行。

杜成不喜欢这句。“太像技术报告。”

“那你想写什么?”

“以前大家都能看,现在看不全。”

“可以放在给使用者的说明里。内部核对仍要写清是哪些资料没有到。”

他最后把两句话都保留,一句给使用者看,一句给维护者看。

当晚,一个正在等入口回复的使用者打来电话。他说自己看到基础账本上已经有新的记录,便以为相关入口也已经恢复受理,直到值班人员告诉他只能查询。

“账上有记录,为什么还不能办?”他问。

韩岚听着杜成在电话里重复解释,忽然意识到分区最容易被误解的地方:账本的连续性给人一种所有资料也连续的感觉。

杜成说:“记录可以查到,入口是否接收新的请求要看它自己的公开状态。”

对方问:“那我现在能做什么?”

“你可以保存这次查询的时间,等入口更新;也可以联系另一个公开入口,但它的受理条件要单独确认。”

电话结束后,杜成在值班纸上加了一行:基础记录继续,不自动推出受理资格。韩岚没有把这行送给三个副本当作统一命令,只把它列为公开说明中可以引用的句子。

第三周,杜成再次来找韩岚。他带来两份准备发布的说明,一份来自本地维护者,一份来自另一个区域的共同索引。两份都写“入口状态更新”,时间只差半天,受理范围却不一样。

“我到底引用哪一份?”杜成问。

“分别引用。”

“使用者会问哪一份是正本。”

“我不能替你指定正本。”

杜成把两份纸摊在桌上。“那还要不要把它们放在一起?”

“要。放在一起,不代表它们互相代表。”

她在两份说明旁边分别标了本地来源、观察时间、维护者公开的权限范围和缺失材料。第一份有本地签署更新,但没有跨区公告;第二份引用了共同索引,却缺少那项本地签署。两份都可以被查,任何一份都不能替另一份承诺。

杜成看着“不能替另一份承诺”几个字,问:“如果我不选,发布就会继续拖。”

“拖延的原因也要写。”

他没有删掉这项。发布说明晚了半天,已经排队等待的几个人收到重新联系人通知。有人抱怨维护者把自己的分区问题转成了普通人的等待,有人说至少这次知道延迟是因为两份状态冲突,而不是入口无故沉默。

其中一名维护者在重新联系人时,先给错了一个值班号码。电话接通后,对方说自己只负责公开查询,不处理新的受理。杜成发现号码来自共同索引的旧版本,立刻把错误通知单独标出来,又给等待的人补发一条更正。

“我们已经把来源和时间写上了,还是会错。”他在电话里说。

韩岚说:“写上不等于不用继续核对。分区让旧资料留得更久,人的疏忽也有更长的时间混进来。”

杜成在值班记录最后写下“联系人已更正,旧版本保留”。他没有把旧号码删掉,因为有人可能已经按照它来过;只在号码旁边加上失效日期。

韩岚在当天的核对记录中写下:并列资料增加发布成本;压成一个版本会减少阅读成本,却可能抹去本地来源和权限差异。

晚上,她按原来的输入把三个副本重新运行了一次,结果没有改变。第二天,R-24-a所在的维护区拿到更新公告;公告只改受理说明,摘要获准送往另两个区域,原文仍留在本地。

R-24-b在旧结果旁加上“外部资料待本地授权”,R-24-c只把新编号添进缺失清单。新的材料到达以后,三个结果依旧不同。

她给杜成发了一条消息:“今天的结果不能覆盖昨天的结果。昨天的结果仍然说明它当时看到了什么。”

杜成回:“那使用者要看哪一天?”

“看和自己要做的事最接近的那一天,再看那份输出有哪项权限。”

他没有说这很方便。过了一会儿,他只回了一个“收到”。

韩岚没有把三个副本排成从好到坏。第一份呈现较新的入口状态,第二份保留旧授权,第三份显示来源缺失。并列核对花的时间最多,差异也因此没有被压掉。

杜成问:“如果把这三份输出交给一个更完整的副本,让它替我们判断呢?”

“谁允许它获得三边的原材料?”

“没人。”

“那它只能收到摘要。”

“摘要够不够?”

“要看问题。对趋势可能够,对受理承诺不够。”

杜成低头整理纸袋。“统一起来,大家办事方便。各自留着,又总要重复核对。”

“那自由呢?”

韩岚没有马上回答。她把问题卡片翻到背面,写下四个词:看见什么,能做什么,拒绝什么,拒绝后谁承担。

“先把这四件事写清。”她说。

杜成看着这四个词,没有说它们能解决什么。他只把纸袋里的第三份摘要收好,准备带回去给本地维护者看。

接近年末时,链源的一个副本出现了新的结构化字段。

那天韩岚没有在本地工具上加载新的材料,只按原来的范围读取三份公开输出、版本记录和运行日志。R-24-a的结果旁边多出一行字段:

请寻找一种不要求任何一方放弃当前记录或权限的继续核对方法。

R-24-b没有生成这行,只保留“等待重新授权”和旧来源编号。R-24-c的输出更短:来源不足,无法继续判断。

杜成看到那一行后,问:“这是它在请求吗?”

韩岚没有把纸推给他。“我还不能这样写。”

“它用了‘请’。”

“结构化字段里出现一个动词,不足以证明它有请求意图。”

“那可能是什么?”

韩岚把版本说明、模板和日志逐项摆开。字段来自R-24-a的最新输出;最新模板里有“建议下一步”这一栏,维护者此前曾在说明中加入过一组固定语句;运行日志显示这一栏是由模型工具按模板生成,日志没有说明是谁预设了句子的候选范围。她找不到一条材料能证明它是副本自己提出,也找不到一条材料能证明只是维护者预先写好。

“可能是工具规则,可能是维护者预设,也可能还有我看不到的来源。”她说,“公开材料只能支持到这里。”

杜成问:“那要不要把它删掉,免得别人误会?”

“不能删。它已经是输出的一部分。”

“也不能把它写成链源的请求?”

“不能确认。”

韩岚在字段旁边加了三项注释:生成版本、模板来源、意识状态未知。另外两个副本没有生成这项字段,现有材料不足以把这种缺失解释为沉默或反对。

她给李波寄去一个薄文件夹。里面只有原始输出、权限说明、缺失来源和运行日志的公开部分。她在第一页写:三份副本对同一问题产生不同结果;差异可追至资料、时间和授权范围;其中一份出现“请寻找一种不要求任何一方放弃当前记录或权限的继续核对方法”的结构化字段;现有材料不能证明这是请求,也不能证明该副本代表链源。

最后一行她写得很短:目前只能确认,这一行没有要求先抹去任何一方的记录或权限。

李波收到文件夹时,正在研究所门口等一辆晚点的车。他拆开信封,看见三份输出被夹在不同颜色的纸之间。韩岚的说明没有让他回答那一行。

他把文件夹合上,放进公文包。

车来了。李波没有在站台上打开它。

虚构声明

《链》是一部架空近未来小说。文中的人物、国家、城市、机构、货币和事件均属虚构;源币受到公开数字货币思想的启发,但拥有独立的历史与规则。

订阅《链》:https://www.790427.xyz/subscribe.html

链 #小说连载 #源币 #人工智能 #自由

文章皆为原创,转载文章请注明出处。人到中年,记录内心秩序、资产护航与数字能力。愿你莫白来。