一
那天是2024年4月的一个周三。
ECHO在凌晨两点发来了第一个预警:幽灵交易的频率在过去六小时内持续上升,当前数值已经超过了我们设定的警戒线,上升趋势没有停止的迹象。
我看着那个数字,发给苏子衿和沈映雪:今天。
苏子衿在三分钟内回:已经在了,等你。
沈映雪在五分钟内回:我准备好了。
我把ECHO切到最高权限模式,把所有的算力资源重新分配,然后换好衣服,把已经准备好的那个加密移动硬盘放进背包,出了门。
深圳的凌晨两点,城中村的楼道里很安静,只有某一层有灯还亮着,不知道是什么人,在这个时间,在做什么。
我往外走,叫了一辆车,上去,报了目的地。
车开出去,深圳的路灯一盏一盏往后退,这是我熟悉了很久的那种退法,从2020年到现在,我在这条路上来来回回,不知道走了多少遍。
今天是最后一遍,或者说,是其中一种意义上的最后一遍。
二
沈映雪线
沈映雪在那天上午九点就出发了。
她手里有完整的证据包,加密的,备份的,存在三个不同的地方,只要她发出指令,那三个地方的材料会同时被解锁,发送到她提前设定好的所有地址。
她先去了两个监管机构,早上约好的,对方的接待官员坐在她对面,表情专业,把材料扫了一遍,说需要时间核查,说程序需要走,说请留下联系方式,我们会回复。
她知道这意味着什么。
走出那栋楼的时候,太阳在正午的角度上,很亮,把她的影子压成一个短短的形状。她站在台阶上,把手机拿出来,打开联系人列表,找到那个记者的名字,按下拨打。
电话接通了。
"你说的那批材料,"她说,"我今天发给你,你能在今晚发出来吗。"
对方停了一下,然后说可以,问她发到哪个地址。
她报了地址,挂掉电话,把那批材料解锁,发出去,然后重新打开手机,开始打第二个电话。
下午两点,第一篇报道在网络上出现了,一个独立媒体的账号,文章不长,但标题够直接,内容里有一部分她提供的数据截图,读起来不像完整的故事,更像是一个开头,一个已经可以被追着往下问的开头。
她坐在一家咖啡馆里,看着那篇文章的转发数字开始往上爬,同时看着加密通信里苏子衿发来的进展更新。
然后她的手机振动了。
是一个她不认识的号码,接通,里面是一个很平静的男声,说:沈小姐,你现在做的事情,对你没有好处。
她把那句话听完,然后挂掉,重新拨通了下一个记者的电话。
三
苏子衿线
苏子衿在那天凌晨三点就开始了。
七把密钥,按照牧师提供的信息和她自己的技术分析,她知道其中三把的生成节点,另外两把她有80%的把握,这五把是她的主要目标,另外两把是她的备用。
凌晨三点到六点,她用了三个小时,依次处理那三把她最确定的。
密钥的劫持不是简单的破解,是在链上找到它们的锚定节点,然后在那个节点上注入一个冲突的签名,让节点在被调用的时候产生验证失败,它不是消失,它还在链上,但它没有办法被正常激活了。
三把完成的时候,天还没亮,她的屏幕在黑暗里亮着,进度条上显示的数字让她往椅背上靠了一下,闭上眼睛,静了五秒,然后重新坐直,打开下一个目标。
第四把。
第四把的持有者是她之前有80%把握的那个,但当她把追踪程序指向那个节点的时候,发现那个节点在那天上午已经发生了一次变动,密钥被转移了,原来的锚定位置上什么都没有了。
她把那个空的节点盯着看了几秒,然后重新展开追踪,顺着转移的路径往下找。
路径走了七层,每一层都是新的混淆,每一层都需要时间清理。
ECHO在这个时候的算力负载已经到了92%,她在系统里把优先级重新分配,把所有不紧急的任务全部暂停,把算力全部集中到这一条追踪链上。
上午十一点,她找到了。
新的节点在香港某个数据中心的一个边缘服务器上,锚定的方式和之前完全不同,是一种她之前没有见过的实现方式,需要重新分析结构才能找到注入点。
她重新开始。
第五把在下午两点完成,第六把牧师已经在内部动手了,她在ECHO的监控面板上看见了那条信号的变化,知道那边在进行。
还剩第四把。
ECHO的算力在下午三点的时候到了99%,屏幕上的温度警告闪了一下,她没有理会,手指继续在键盘上走。
四
陈默线
牧师的计划很简单,简单到我第一次听他说的时候以为我理解错了。
他说他要在创世社的全员会议上公开叛变。
那个会议是在香港,引爆日前四十八小时,核心层和行动层的主要成员都会参加,是最后的部署会议,确认每个人的行动节点。
他说他会在那个会议上,当着所有人的面,把他掌握的内部信息说出来,说给那个房间里的所有人听,说给那些也许还可以被说服的人听,说给那些站在门口的保安听,说给任何一个还有耳朵的人听。
他知道他说完之后会发生什么。
"你为什么要用这种方式,"我问他。
"因为这是唯一一种他们没有办法在事后抹掉的方式,"他说,"在那个房间里,有人会记得,有人会想,有人会动摇,就算只有一个人,就够了。"
那天下午,我在香港,在那栋楼附近的一家便利店里,手机开着,看着ECHO的面板,看着苏子衿的进度,等着。
下午两点四十七分,牧师发来了最后一条消息,格式是新通信协议,一个很短的序列,翻译出来是:
我进去了。
然后消息窗口安静了。
我在便利店的玻璃门旁边站着,看着街上的人,看着远处那栋楼的外立面,等。
下午三点十二分,那栋楼的一个侧门打开了,有人跑出来,速度很快,是牧师。
他后面跟着两个人,走路的方式是那种有任务在身的人的走法,不急,但有方向。
我已经走出了便利店,往那边走,电话打给苏子衿:牧师出来了,有人追,第五把密钥还没有传。
苏子衿:我知道,我的追踪也在这个时候,给我时间。
牧师在街上跑,他的年纪不适合这种速度,我能看见他跑得很吃力,但他还在跑。追他的那两个人不跑,他们走,走得很稳,他们知道他跑不了多远。
我在那条街上走快了,朝牧师的方向,我不知道我能做什么,但我要在那里。
牧师在一个路口转弯,我绕过一辆停着的货车,看见他了。
他停下来了,不是因为累,是因为他转过那个路口,发现那头也有人在等。
他站在那条窄巷里,看了看两边,然后看见了我。
他把手机拿出来,按了几个键,把它举起来,那是一个我认识的动作,他在发一条消息,是最后一条。
然后他把手机扔到地上,踩碎了,让没有人能拿到它的完整数据。
ECHO的面板在那一刻推送了一条通知:
第五把密钥信息收到,解析中。
五
三条线在下午四点十五分汇聚在同一个时刻。
苏子衿给我发来:第四把完成了,现在是五把,还差两把,合约没办法触发,但他们在试图用剩余的两把强行执行一个降级版本的触发,我不知道降级版本的后果是什么。
沈映雪给我发来:第三家媒体刚发出去,流量在上来,创世社在用资本运作压制,但速度跟不上,有几篇已经被转出去了,在境外服务器上有备份,删不干净。
牧师在香港的医院,我没有收到他的消息,但苏子衿说她通过另一个渠道确认他还活着,在接受手术。
我坐在香港一家咖啡馆里,把ECHO全速运转,试图找到那个降级触发版本的智能合约,找到它在链上的调用入口,在它被执行之前注入一个错误。
ECHO在这个时候给我发来了一个结果,那个降级版本的合约已经在链上等待执行,触发条件是两把完整密钥加上一个特定的市场流动性信号,那个信号会在接下来的大约四十分钟内出现。
四十分钟。
苏子衿在两分钟内回来:我看见了,我在处理,但那个入口的加密方式我没见过,需要时间。
我把ECHO的剩余算力全部调给了苏子衿,把我这边的分析任务降到最低。
然后我等着。
我在那家咖啡馆里,手放在桌上,看着屏幕上那个进度条,看着那个流动性信号的数值在缓缓逼近触发线,看着苏子衿的进度在走,走,走。
二十分钟。
十分钟。
五分钟。
苏子衿:找到了,注入中,需要三十秒确认。
那个流动性信号的数值还有百分之八就到触发线了。
三十秒。
百分之五。
百分之三。
苏子衿:完成。
数值到了触发线。
什么都没有发生。
我在屏幕前坐着,盯着那个数值停在触发线上,停了三秒,五秒,十秒,然后它开始往下走,因为市场在动,流动性在变化,那个窗口过了。
合约没有触发。
七十二小时的窗口期,在那个下午,不是无声无息地关上了,是它打开了,然后没有任何东西从那里走过去,然后它关上了。
我在那一刻没有说话,就坐着,让那件事先在自己这里落地。
然后我给苏子衿和沈映雪各发了一条:完了。
苏子衿回:确认,合约失效,链上记录已生成。
沈映雪回了一个字,和她几个月前某天晚上发给我的那个字一样:
好。
六
但苏子衿在五分钟后发来了一条我没有预料到的消息:
ECHO检测到一个新的链上操作,来自一个我们从未见过的地址,操作类型。。她停了一下,发来下一条。。意识锚点触发序列。
我把那条消息读了一遍,重新读了一遍。
意识锚点触发序列。
"他在跑,"苏子衿说,下一条消息:他在启动最后一次时间回溯,试图撤退到另一个时间节点,重新开始。
我把ECHO的面板切到那个新地址的实时追踪,看着那个序列在链上展开,像一个人在黑暗里拿到了一把火,把最后能找到的所有燃料都扔进去,想让那把火再烧一会儿。
"他跑了,"苏子衿说。
我看着ECHO的面板,看着那个序列的进度,看着它还需要多少时间完成锚定。
然后我说:
"没有,他跑不了。"
我的手开始在键盘上动。
那个锚定序列需要在链上找到一个稳定的时间节点完成锚定,才能完成回溯,那个节点需要是一个他能到达的、历史上存在过的时刻。
但我在ECHO里,把他这两年操作过的所有链上记录全部标记,把所有可能被他用作锚点的历史节点全部标记,然后让ECHO在那些节点上同时注入一个微小的、不可逆的扰动,不是删除那些节点,是让它们对他来说变成不稳定的,是让他每一次试图锚定的时候,都找不到一个可以落脚的地方。
苏子衿在两分钟内理解了我在做什么,她那边同时开始了同样的操作。
那个序列的进度开始减慢,不是停止,是减慢,像一个人在试图抓住什么,但他能抓住的东西都在他的手指间慢慢变得不实。
然后那个序列的状态标签变了。
从"进行中",变成"锚点不稳定,尝试中",再变成"锚点失效,重新搜索",然后在这几个状态里循环,循环,循环。
我盯着那个循环,等着。
然后那个序列停了。
不是完成,是放弃,它在链上留下了一个未完成的操作记录,一个意识启动了回溯但没有找到可以落脚的地方,就停在那里,停在那个没有任何时间节点的、链上数据的某一层里。
停在那里了。
苏子衿发来一条:他没有出去,他在链上,意识还活着但没有锚点,就那么在那里,哪里都去不了。
我把那条消息看了很久。
一个试图用区块链重写世界的人,最后被困在了区块链里,被他自己建造的那套系统永久写入,成为那套系统里的一条数据,不可篡改,不可删除,也无处可去。
我不知道该怎么描述这件事。
它是一种结束,但不是那种让人松一口气的结束。
它也是一种悲哀,但不是那种让人掉眼泪的悲哀。
它就是这个样子,就这么发生了,像很多事情一样,发生了,然后就是那个样子,永远都是那个样子了。
我在那家咖啡馆里坐了很久,窗外的香港在继续,有人走过,有人说话,有一辆车在路口等红灯,有一只鸟从对面楼的边缘飞过去,向更远的地方飞。
然后我叫了一辆车,往机场走。
回深圳了。
(第二十九章完)