2034年末,链源撤销特殊治理身份的公告挂在公共页面上,没有配图,也没有被推到每个人的首页。公告只说,原来由链源优先提出、优先解释的权限从这一天起取消。以后谁要核对目录、比较版本、审计接口,谁就按公开的权限申请;谁不同意一项记录,也可以留下拒绝,不必等一个叫链源的名字替自己说明。
星港旧港区的一间维护室里,岳平把公告读完,又看了一遍下面的版本说明。墙角的暖气坏了,宁禾用一只旧电炉烤手,桌上放着三台来自不同地方的设备。它们都能跑源币客户端,却装着不同年份的工具。
过去,这些工具被打包在一个目录里。目录最上面有“链源”两个字,下面才是目录核对、版本比较、接口审计和授权记录。使用者只要看到那个名字,往往就以为所有说明出自同一个地方,甚至以为这个名字有权替自己解释一条规则。
岳平先把旧目录复制到一只移动存储器。宁禾没有直接删除它,只在旁边新建四个公开目录:目录核对、版本比较、接口审计、授权与拒绝记录。每个目录都有构建方式、适用版本、已知缺陷和维护者的普通联络地址。四个模块都公开来源,可被审计、可被替换,也可分叉;发生分歧时,维护者可以从公开版本分叉,并把差异留在页面上。有人愿意继续使用旧包,仍然可以下载;有人觉得目录核对和接口审计应该一起改,也可以另行维护,并把差异写在页面上。
“还留着这个名字?”宁禾指着旧目录问。
“历史不能靠改文件名消失。”岳平说,“但不能让旧名字挡住新权限。”
他把旧目录移到历史区,在旁边加了一条说明:这份包曾经被广泛使用,不代表当前维护者拥有任何特殊提案权或解释优先权。协议维护共同体没有再设一个总管理员,说明也没有署上“链源”的章,只留下版本、时间和两个人的维护签名。
宁禾打开构建记录。新目录没有一台总服务器替所有人运行,四个模块分在不同的节点和设备上,有的由社区维护,有的由小型服务方维护。要更新,仍然需要电、时间、懂得构建的人和愿意承担故障的人。一个模块可以被暂停、替换或另做一份分叉,公开的只是它做过什么、按什么版本做,以及谁为这一份运行负责。
他们没有召开庆祝会。岳平把电炉往宁禾那边推了推,去检查隔壁的线路。当天傍晚,第一份独立的接口审计模块被挂到公共目录上。没有人收到“链源已上线”的提醒,只有几个使用者看到自己熟悉的字段还在,下面多出了一行来源和维护期限。
第二天清晨,星港南侧的物流配送点先遇到一个小问题。周芹负责把港区的工具和附近居民订的生活用品分到不同车上。那天一批给学校修窗用的折叠窗扣从岚野发来,结算记录已经确认,转运页却仍显示“等待本地受理”。
周芹先看了版本比较模块。模块没有替她把状态改成“已送达”,只把两份记录并排放出来:源币客户端在某个时间确认了转移,转运入口的版本没有接收“已装车”这个字段。差异旁边标着来源和观察时间,没有一句“应当如何处理”。
她拿起电话给岚野的发货人打过去。对方说窗扣已经放在车上,司机却还没有拿到新的路线单。周芹又去找人工调度,才知道另一套分叉工具把“等待本地受理”当成可以装车的前置状态,原来的工具则要求承办人再确认一次。两套工具都没有坏,只是责任边界不一样。
港区的车不能一直停着。周芹让小车先送已经清点好的东西,窗扣这批留在靠墙的架子上。半小时后,人工调度员接过电话,确认由谁接下转运责任,页面才添上一条“已受理,等待装车”的记录。没有模块替她开车,也没有谁因为看到了源币的结算就假定货物已经到了。
旁边的临时工问:“既然自动安排大多数时候更快,为什么还要留这套慢的核对?”
周芹把两条状态指给他看:“今天这批东西,自动那边少等了十分钟,人工这边多问了一句是谁接。快和问清楚,都有人用得上。”
她没有把其中一种写成正确答案。午后,窗扣送到学校,收货人用本地结算付了最后一段搬运费。源币的那笔跨区记录仍在自己的客户端里,两个记录通过公开接口互相看得见,却没有被合成一个新的总账。
同一时间,岚野东边的照护点正在处理另一种拒绝。季兰照看住在坡上的几位老人,点里最近换了一个排班工具。工具可以根据过去的出门时间自动安排陪同,省去每天打电话确认的麻烦。有人觉得方便,授权工具读取当天的路线和时间;也有人只愿意让它知道已经有人接班,不愿意交出具体住址。
其中一位叫范叔。他把“不同意共享位置”按了两次,第一次没有成功,第二次页面才显示拒绝已记录。新来的维护者以为这是空白,想把它退回给季兰补齐。岳平刚发布的授权与拒绝模块在这时被接上,记录旁边出现了“本人拒绝提供”的状态,下面写着下一次人工联系的时间。
季兰没有让工具猜范叔住在哪里。她从点里拿了雨衣,沿着旧路走上坡。路上她接到另一个家庭的自动提醒,那家人已经同意当天路线,系统把陪同时间排得很紧,季兰只需在门口确认。她先去范叔那里,回来时晚了二十分钟,自动排班的那家人多等了一会儿。
“你把同意自动安排的那家放后面了。”同事说。
“我知道。”季兰脱下雨衣,“范叔拒绝给位置,工具就不能假装知道。今天的等待由我补。”
范叔最后没有同意上传位置,只让季兰记住下一次来访的大致时间。照护点在公开记录里只留下拒绝范围、人工承接人和当天是否完成,范叔不愿意说的原因没有被追问。另一家人仍然继续使用自动排班,少等了几次电话。两个选择没有互相取消,承担代价的人也写在各自的记录旁边。
下午,南岬旧街的修理铺收到一台来自星港的照明控制器。店主乔墨打开自己的接口审计工具,发现设备的公开说明写着“可由两种版本读取”,实际送来的构建包却少了一个字段。工具没有去碰设备内部的私有资料,只比较公开构建号、接口调用和缺失字段。
乔墨给客户打电话,说明要多等半天。客户原本以为只要把设备接上就能修好,听见还要等,问能不能直接按旧办法装。他说可以试,但旧版本无法证明这台设备的某个状态,出了问题只能由店里承担。
店里还有一位年轻维护者,他从公共目录拉下了另一份分叉版本。那份工具接受缺失字段,把它标成“来源未确认”,允许继续查看,却不允许自动写回。乔墨看完后让客户自己选:今天先用旧线路临时照明,或者等公开字段补齐再换控制器。客户选择先接临时线路,乔墨在收据上写明这是短期替代,不等于设备已经修复。
“以前不是有一个总工具吗?”年轻人问。
“有过。”乔墨说,“它也有过出错的时候。现在只是把每一层是谁做的写得更清楚。”
第二天,星港的维护者补了字段,乔墨重新比较两个版本,确认新增的内容只涉及设备状态,没有扩大访问范围。他把修理结果交给客户签收。那份接口审计记录可以被别人复核,却没有替店主承诺下一次一定不会坏。
晚上,隐云社区的小杂货铺关门晚了一些。店主收下邻近社区送来的豆子和一卷绝缘胶带,愿意接受源币,也接受当地结算。买东西的人用的是一台旧手机,店里的终端却是另一种客户端。两边通过公开接口确认转移时间和版本,源币只负责把这一笔结算送到,不能替店主决定货物是否合用,也不能替社区分配下一班轮值。
确认比平时慢了几秒。店主没有催买东西的人多交一份资料,只把“已确认”写在当天的收货本上。一个新来的维护者在旁边看着,说现在的链源工具不在这里,出了问题怎么办。
店主把收货本合上:“这里有会修的人,也有会记账的人。工具换了,事情还是要有人接。”
那一晚,隐云收到了李波发来的一条普通消息。他没有谈旧报告,也没有请人替他转发观点,只说木工棚的门框受潮,周四下午轮到他修;如果有人要取工具,先找厨房值班的人。消息被放进社区自己的排班记录,李波的名字和其他轮值人的名字排在同一列。
李晓雨在澜城的公共学习楼见到这条消息时,正在替一名邻居查询一笔结算。她已经结束了轮换协调工作,进门时只按居民身份取号。窗口工作人员没有因为认出她,就把她往前排。她也没有拿出过去的证明,只把对方交给她的版本号读了一遍,等人工承办人核对。
对方要给外区的学习用品店付款,使用的是一套当地结算客户端。店里同时接收源币,所以公开页面只显示两种可选择的结算方式和各自的状态。李晓雨帮邻居看懂“转移已记账”和“对方已受理”之间的差别,随后让邻居自己决定先用哪一种。她没有替他挑,也没有把自己曾经参与过规则审查的经历写进回执。
学习楼的一间教室正在给孩子们上“怎么问一条记录”的课。桌上没有统一的答案卡,老师把三种材料放在一起:一张自动窗口的完成回执,一张人工窗口的等待回执,还有一张只写着“拒绝提供”的授权记录。孩子们轮流找出每张记录能证明什么,不能证明什么。
小满举起手:“如果自动窗口已经很快了,为什么还有人选择人工窗口?”
老师没有把自动窗口说成坏东西。她指着第一张回执:“有人今天赶时间,愿意按它给出的路线办完。人工窗口慢一点,有的人需要先问一句资料看了多久、出了问题找谁,也有人只是想把情况当面讲清楚。选哪一个,要看那个人今天能承担什么。”
“人工窗口是不是更安全?”小满又问。
“不一定。”老师说,“人工的人也会忘记、会迟到。自动安排也能少走弯路。重要的是你能不能知道它们各自做了什么,想换的时候有没有下一步。”
小满低头看着两张回执。她今天借了一套木工课用的工具,自动窗口十分钟就办完了;她的同桌因为授权记录里有一个旧地址,选择人工核对,已经等了半个小时。小满把自己的回执递给同桌看,又没有催对方改选。
课结束前,老师让每个孩子在回执背面写一句自己的理由,愿意写才写,不上传,也不计入课堂评价。小满先写“我选快的”,过了一会儿,把这行划掉,改成“我今天要赶回家”。她把纸折起来,放进自己的铅笔盒。
教室外的公共终端正在同步新的版本目录。它能显示哪一份模块刚刚更新,哪一份分叉仍在维护,哪一条授权被拒绝,不能把孩子那句“要赶回家”推回公共页面。小满没有问谁拥有这句话,她只是把铅笔盒扣好。
那天晚上,澜城几处服务都在使用不同的模块。有的地方只运行目录核对,有的地方把接口审计交给另一组维护者;有人沿用旧客户端,有人换到新的分叉。源币的基础规则仍由多种客户端按公开版本验证,没有一个政治共同体、机构、单台设备、人格或品牌能够单独改动它。每个运行它的人却仍要面对电力、维护、故障和时间,愿意承担多少,决定了自己能提供什么。
在公共目录里,“链源”这个名字逐渐只出现在旧版本的说明中。新的页面不再把任何建议写成必须执行的命令,也不再给某个解释者留一条更宽的入口。维护者可以提交意见,使用者可以采纳、暂缓或另做一份;有人觉得字段太少,便在自己的分叉里补充,并把差异公开。没有谁因此获得替别人签字的权力。
李晓雨后来经过学习楼的门口,看见小满把那张写着理由的纸塞进书包。她没有问孩子写了什么。她只听见老师提醒下一班同学,自动窗口和人工窗口都要留下可核对的办理状态,私人理由可以留在自己手里。
远处的隐云,李波正在把门框下沿垫平。门一时还关不严,他先用木片固定,明天再继续修。旧报告仍能在公共目录里查到,更正也仍然留着;新的请求不会自动找到他。有人需要他的早期记录,就按规定申请;今天厨房缺一双手,他仍然去接那一班。
夜色落下来,公共目录、版本比较、接口审计和授权记录分散在许多人的设备上。它们没有一座可以被指认的中心,却在一扇门、一张收货单、一段照护时间、一笔普通结算和一堂课里各自做着有限的事。它们留下时间、版本和谁承担了哪一段;小满把“我今天要赶回家”留在铅笔盒里,回家以后还要自己解释给妈妈听。
虚构声明
《链》是一部架空近未来小说。文中的人物、国家、城市、机构、货币和事件均属虚构;源币受到公开数字货币思想的启发,但拥有独立的历史与规则。
订阅《链》:https://www.790427.xyz/subscribe.html