《链》39|异常交易

2028年2月中旬,李晓雨收到一份新的调取申请。

她仍然是限期调查协调人。办公桌上那本登记册已经换过一次封面,里面没有她父亲的受限记录内容,只有上一程序留下的登记号、保管条件和后续调取办法。她先核对签收时间,再把那行“登记缺口,待核验”抄进新的申请索引,没有给它添上身份,也没有把它改成异常结论。

申请来自澜城南边一处屋顶修缮合作点。申请人只愿意提供交易状态和路线变化,不愿意交出完整地址。李晓雨在授权栏里注明范围:可以查看与该笔结算、配送路径和状态更新时间有关的公开记录及经同意的只读日志;点位、住户名单和工人的私人联系方式不在范围内。

她把申请退回一次,请对方把“路线变化”说得更具体。对方隔了一小时补来一行:“原定送到南坡,页面显示已改至西侧临时点,现场没有收到改道说明。”李晓雨将这句话原样保存,连同对方拒绝提供完整地址的选择一起记下。她知道少一项资料会让核对慢一些,也知道不该用调查方便换取别人没有同意交出的东西。

这份补充说明没有署完整姓名,只留下一个可以回拨的公共工作号码。李晓雨按号码打过去,先问对方是否愿意在通话里确认授权范围。电话那头传来电钻声,有人喊着要找扳手。

“我们不是不想说清楚。”发件人说,“只是住户不希望施工点的地址到处留着。你们如果需要知道哪一天、哪条路线,我们可以讲;房顶下面住着谁,不需要写进来。”

李晓雨把这句话重复一遍,请对方确认。得到同意后,她在记录里标出“只授权状态与路线”,又问是否可以把现场等待的时长写进匿名摘要。对方说可以,但不要把工人的姓名和住址带出去。

通话结束,她没有把“合作点”补成某个完整地点。她把回拨号码存成一次性联系信息,设置到期日,随后才继续发出调取申请。

第二天一早,她去了那处修缮点。

那里是一片旧厂房改成的住宅区,楼顶正在换防水板。工人把绳索、卷材和工具箱摊在天台边,等一车从岚野发来的固定件。合作点的领料人唐茵把手机上的结算页递给她看。页面写着“源币结算已确认”,时间在前一天晚上。她说,供货方已经看到记录,自己也按这个状态排了工。

“可货没有来?”李晓雨问。

“车到了西侧临时点。”唐茵指着纸上的手绘图,“那里今天没有施工队。司机说他只按页面的新路线走,页面没有写谁改的,也没有写什么时候改的。”

楼顶上的工人已经等了两个小时。一个年纪较大的工人蹲在卷材旁,把没装上的固定件一颗颗倒回塑料盒。唐茵没有让李晓雨拍摄工人的脸,也没有给她看住户名单,只同意她记录结算状态、原定路线和改道后的页面。

“你们要是把完整地址给出去,能查得快一点吗?”唐茵问。

“可能会多知道一项。”李晓雨说,“但我不能保证会因此得到原因。”

唐茵点点头。“那就先看我们同意看的。工人下午还有别的活,至少别让他们因为等一个说不清的页面,错过下一班。”

李晓雨在现场记录上写下八点四十七分。她向合作点申请路线日志的只读权限,申请里没有写暂停配送,也没有写冻结任何记录。她只要求保留原请求、路线变化和显示时间,等有权限的人解释承办过程。

负责入口的运营者很快回信,要求暂时关闭这条异常路线,理由是继续转送可能让更多材料走错地方。供货方的联络人却说,今天还有两处屋顶等固定件,突然关闭会让已经排好的车全部停下。两封信都送到了李晓雨的工作地址。

她没有替其中一方选择。她把两项请求分别登记,标明提出者、范围和希望生效的时间,再转给原授权的运营决定人。她给唐茵发去一封说明,告诉她调查目前只能保存状态和路线变化,不能让配送暂停,也不能保证下一车按哪一条路走。

唐茵回了一个短消息:“知道了。至少我可以告诉工人,今天的等待还没有被写成完成。”

中午以后,屋顶上的活只能改做不需要固定件的部分。一个工人把已经量好的位置重新画了一遍,另一个人坐在水箱旁给下一处工地打电话,问能不能把下午的班往后挪。没人愿意把责任写给送货司机,他也只是照着页面上的路线开车。

唐茵又问李晓雨,原定路线是否还保留在记录里。李晓雨说目前能看到原请求和新路线,但没有看到改道说明。唐茵让她把这句话写进回执,不要只写“运输失败”。

“我们下班前可能还等不到。”唐茵说,“可至少以后有人问起时,知道我们等的是哪一个状态。”

李晓雨把这句话附在现场记录后面,没有把它写成对任何一方的评价。

下午,司机通过合作点留下的公共号码回了一次电话。他说自己出车时看到的也是西侧临时点,页面只给了新的地址标识,没有显示改动由谁发出。司机不愿意把自己的姓名写进调查,也不想为一条他只能照做的路线承担解释。

李晓雨问他是否同意记录这段经过。他说可以,但只保留“司机按当时页面行驶”这一句。她照着写,没有把电话里的停顿和猜测抄进去。挂断后,她把司机的选择和唐茵的授权分开存放,两个记录都只指向同一笔公开请求。

沈明是在那天晚上接到材料的。他作为独立代码取证负责人,只接收经过授权的版本、调用路径和日志摘要,不接触私人地址,不要求任何人交出私有模型,也不替运营方改变路线。

他在一间借用的资料室里铺开四张透明纸。第一张写源币结算,记录确认时间和状态;第二张写跨域网关,记录请求经过的接口版本;第三张写数据预言机输入,记下当时被公开调用的区域状态和时间戳;第四张写风险路由输出,记录页面最后给出的路线字段。

他没有把四张纸叠在一起。每一张旁边都放着来源和授权范围,纸角还压着一枚小夹子,防止有人把后一层的结果抄回前一层。

“先给我你们允许看的部分。”沈明说。

李晓雨把合作点发来的页面、运营者同意的日志摘要和一份删去点位信息的时间记录递给他。沈明先看文件的生成时间,再看日志有没有被二次转存。他发现其中一张页面截图没有原始版本号,便用铅笔写下“来源不完整”,没有用另一张截图替它补齐。

他把公开字段抄到透明纸上,抄完就把原件推回李晓雨面前。“我只在这里工作。原件回到你的受理记录里,不要让我的批注变成新的公开版本。”

李晓雨问:“如果四层之间对不上呢?”

“先保留对不上的样子。”沈明说,“拼成一张顺眼的图,反而看不出是哪一格开始偏了。”

李晓雨站在桌边,把唐茵同意的范围再读一遍。“完整地址没有给你。”

“这不会妨碍我先看路径。”沈明说,“只是我不能把不知道的地点当作已知地点。”

他把第一张纸上的状态圈出来:基础链上结算已经确认,确认记录没有被改写。第二张纸显示,请求经过的网关版本与近期多个公开入口使用的版本相同。第三张纸显示,路由采用的区域状态仍停留在比路线页面早几个小时的时间点;第四张纸则出现了“改至西侧临时点”的输出。

“这四张纸不能合成一件事。”沈明说,“结算确认只说明结算发生过。网关留下调用路径,数据预言机提供当时被读取的输入,风险路由层才把结果写成了路线。现在能确认的是偏差出现在后两层的记录之间,不是源币基础链停止工作。”

“你知道是哪一层先变的吗?”

“还不知道。先后顺序需要更多日志。”

他没有为了补齐顺序去申请私有权重,也没有打开不在授权范围内的模型。李晓雨把请求限定为公开版本和已经获得同意的只读字段,待原授权人确认后再交给沈明。沈明在表上签名时,特意把“意图”一栏留空。

为了补那一个先后顺序,李晓雨给网关运营者发了一份很窄的请求,只问版本何时被调用、日志保存到哪一天,以及路线字段是否由同一次请求写入。运营者回复说,版本和调用时间可以核对,内部权重与未授权的运行记录不在可提供范围。

沈明看完回复,把能核对的两行抄进对应的透明纸,把其余部分留成空白。“空白会让报告看起来不完整。”李晓雨说。

“报告本来就不该比证据完整。”他说。

她将回复和权限范围一起存档,没有把运营者的拒绝写成阻挠。

三天后,岚野一座公共维修仓也发来申请。

那里负责把一批通用固定件分给几个小型维修队。结算状态都已经写入各自的记录,仓库值班员照着当天的安排把配件装上了车。车到半路,页面把其中一车指向另一处已经完成领料的维修点。真正等配件的队伍在仓库门口等了半天,几名工人因此错过了下午的班次。

仓库里还留着几只没有封口的箱子。值班员把领料单翻来覆去,看不出是自己装错,还是页面后来换了分配点。她给被改走的维修队打电话,对方说已经派人去另一处取货,短时间内不能再折返。

“如果我现在把这条路径停掉,下一车也会停在门口。”值班员说,“可不停,谁知道下一个箱子会不会也走偏?”

她没有要求李晓雨替仓库作决定,只把当天的发车时间和页面变化交给调查。李晓雨在授权记录里写明,仓库只允许核对配件状态和路线时间,不允许把工人的班表作为附带材料。值班员看完后说:“少一张表,可能少一条线索;多一张表,也可能让不该出现的人知道我们什么时候没人。”

这次申请人只同意提供两项资料:配件请求的状态和路线改变的时间。她拒绝让调查人员看仓库的完整地址,也不愿把工人的排班表交出来。

“你们不是要查清楚吗?”她问。

“我们先查你同意的部分。”李晓雨说,“少看的那一部分,会记成缺失,不会用别的资料替你补上。”

她收到授权后,把申请送给沈明。岚野的日志比澜城多出一个公开字段:路由选择使用的区域状态时间戳。那一字段比仓库值班员看到的页面旧了几个小时。网关版本与澜城相同,路线输出里的“替代点”字段也使用同样的格式。

沈明没有急着说两地是同一个问题。他先把两个请求的结算记录并排放在一起,再把网关版本、数据时间和路线字段分列。基础链记录在各自的确认时间后保持不变,跨域请求都经过同一版本的适配层,路由输出都在区域状态时间戳落后时出现了替代点。

“相似不等于相同。”他说,“但相似的字段足够让我们做一次受限复现。”

复现安排在一个没有接入真实服务的沙盒里。沈明用公开版本和两份经过同意的日志摘要,先重放澜城的状态,再重放岚野的状态。两次重放都显示源币结算已确认,网关也按原版本通过;当数据预言机输入停留在较早的时间,风险路由输出就给出替代点。把时间戳更新到页面注明的时段后,输出字段发生变化,但没有任何一步改动基础链上的结算记录。

李晓雨问:“这能说明谁让它这样走吗?”

“只能说明哪些输入和字段重现了结果。”沈明说,“不能从一条日志写出意图,也不能据此改动线上路径。”

他把沙盒窗口的日期贴在墙上,先跑了一次原始摘要,再把数据时间换成页面显示的较新时间,最后只改动路线字段。三次结果各自保存,输出旁边标着“复现材料,不是线上动作”。

第二次运行没有再出现替代点,第三次只改变了结果的写法,基础链确认状态始终相同。沈明没有把这看成已经找到根因。他把版本差异、输入时间和输出字段重新抄了一遍,提醒李晓雨,沙盒可以说明条件,不能替现实承办人作决定。

一名入口维护者在旁边问,能不能把复现结果直接送进生产路由。

“不能。”沈明合上记录,“复现只能让人知道要查哪几格。线上是否调整,得由原有授权的人决定。”

他在取证记录上写下四层名称,旁边标明每层的授权范围。最后一栏不是“责任人”,而是“待原承办程序回应”。李晓雨看见后,把自己的协调记录贴在另一页,避免两种记录被装订成一份结论。

与此同时,澜城的入口运营者再次来信。他们想把所有经过该版本的异常请求暂时停掉,直到有人确认数据时间是否可靠。岚野的维修负责人不同意全面停用,说仓库里还有当天必须发出的配件,停掉转接会让已经确认的请求无法继续安排。

两边都没有请求李晓雨替他们改基础协议。他们只是把现实的两种压力交到她手上:继续走,可能重复误分;停下来,已经等候的人还要再等。

李晓雨没有权限冻结请求,也没有权限决定哪一方的连续性更重要。她把请求范围缩小为两个动作:保留已经发生的状态和路线记录;把是否暂停某个入口交给原授权方决定。她向各方说明,取证期间不会改变交易状态,不会转移配件,也不会把一份地方日志说成其他地方的授权。

一个岚野的领料人只愿意接受一段短信说明,不愿在调查表里留下姓名。李晓雨把他的选择记作“仅同意状态和路线的口头确认”,没有追问身份。那人问:“如果你们最后说不清,我是不是连等过这半天都没有记录?”

“会有记录。”李晓雨说,“只是记录里会写你没有同意公开更多资料。”

那人收起手机,回到仓库门口。她没有承诺记录一定带来补发,也没有把这段谈话写成受影响者同意调查全部范围的证明。

接下来的两周,沈明只在授权范围内比对公开版本、只读日志、页面时间和调用路径。澜城和岚野各自的记录并未被合并成一个公共文件,申请人能看到的仍是自己的受理状态和允许公开的摘要。李晓雨把每次调取的时间、授权人和退回的字段列在程序记录里,遇到缺少地址或完整排班,就标成缺失,不再另找相似资料填空。

一份公开诊断在几个协作频道里被重复转发。诊断把“结算已确认但路线改变”直接写成“基础链错误”,没有引用网关版本、数据时间或路线字段。李晓雨没有把未公开的完整日志放出去纠正,也没有要求频道删除那段话。她将已公开的状态说明和四层记录的范围说明送入既有审计通道,请求按原问题重走一次:同一笔结算状态与路线改变之间,公开资料能够核对到哪一步。

通道先返回了原本应有的几项字段:结算状态、请求版本、观察时间、路线输出和缺少的授权说明。过了一会儿,结果底部多出一段原请求没有要求的结构化记录。那一段把四层状态分开写明,注明数据预言机输入的时间、风险路由输出的字段,以及“未授权动作:无”。

那段文字没有改变原来的状态,也没有生成暂停或转交按钮。它把“结算已确认”“网关版本”“输入时间”“路线字段”各自放在单独的行里,另加一行“原因说明:缺失”,以及一行“请求外动作:未执行”。这些只是通道返回的字段,不是调查对权限问题作出的结论。李晓雨回看原始请求,确认申请人只要求核对状态和路线,并没有要求通道替他们整理一份新的判断。

她把追加记录交给沈明复核公开字段。沈明只看生成时间、版本和调用顺序,指出这段信息确实是在原请求之后出现的,除此以外不替它说明来源。李晓雨将这项事实写入程序记录,保留追加前后的两个版本。

李晓雨没有把它当成回答,更没有把它当成谁在主动表态。她只核对生成时间、通道版本和已获授权的字段,发现追加段末尾带着与受限技术附页相同、却无法在公开登记表中找到对应项的模型签名。

她把原请求、追加段、权限说明和缺失字段一起保存,只在事实栏写下一句:未登记签名在原请求之外追加信息;身份、来源与原因待核验。

虚构声明

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

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

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

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