2023年夏末,海岬会谈的纪要寄到研究所时,李波正在给临时工作组刚通过的章程附件编号。
纪要把他的拒签列在“个人异议”一栏,后面紧跟着那条机构专属条款。条款没有因为他的拒签而消失,只在页脚多了一句:不影响后续协商。
李波把纪要翻过来,看见背面印着下一轮材料的提交日期。他没有拿起电话要求更正,也没有把“个人异议”改成源币社区的立场。那四个字至少承认签字的人是他,承认他没有替别人说话。
韩岚从门口进来,手里夹着一只薄文件袋。“下一轮我不去海岬。”
“我也不想回去。”
“那就别再争同一张桌子上的位置。”韩岚把文件袋放到复印机旁,“他们要的是一项可以被承认的入口。我们要问的,是普通人在这项入口上能不能看见、能不能自己保留一部分控制,以及出了暂停以后有没有实际的下一步。”
李波把会谈纪要上的条款抄下来,抄到“只有机构能运行获承认节点”时停了笔。那句话太像一扇关上的门,继续在门上争论谁有钥匙,未必能让门外的人获得另一条路。
“把它改成可以测试的条件。”韩岚说,“每一项都要有公开输入、观察动作和能留下来的结果。”
他们没有重新组织会谈。李波从公开目录里找出协议说明、托管暂停公告和几份愿意被引用的办理记录;韩岚把技术附件按版本和日期排开,删去没有来源的概括。桌面上没有一张代表名单,只有四张空白卡片。
第一张卡片的标题是“公开客户端”。
源币基础程序一直可以从公开目录取得,真正麻烦的是取得以后发生的事。有人能下载代码,却找不到构建方法;有人按说明构建成功,却不知道自己得到的版本有没有被改过;有人把一段可运行的文件转给别人,省略了限制条件,下一位使用者便以为它能够负责维护、赔付和所有入口。
韩岚找来协议开发者梁屿,请他把一份完整构建记录放进公开材料。梁屿没有把文件直接寄给他们,而是把公开目录、构建步骤、工具版本和失败日志一并列出。他在说明页上写明,客户端只负责读取和提交指定范围内的请求,不提供设备、电力、持续维护、争议处理或赔付承诺。
李波照着说明在研究所的旧电脑上构建。第一次到一半就停了,缺少一个已经下线的依赖包。第二次找到镜像,生成的版本却比目录上标出的截止日多了一个字段。他把两次失败都保留下来,没有把后来找到的镜像当成原始构建的一部分。
韩岚核对了公开目录的签名、构建时间、工具版本和输出摘要。她能确认第二次生成的文件对应某个公开版本,不能据此确认它适合所有设备,也不能替梁屿承诺后续维护。
“那公开客户端到底给普通人什么?”李波问。
“给他看得见的起点。”韩岚说,“代码、怎么构建、版本到哪一天、已知限制在哪里。剩下的设备、时间和故障成本,不能藏在‘公开’两个字后面。”
田实把自己的小设备带到资料室。他能让客户端跑起来,却没有条件每周更新。他在纸上写:本地构建成功,使用旧工具链,未承诺持续维护。李波问他要不要把设备日志也放进去。
“只放公开部分。”田实说,“我不想让机器里其他人的资料跟着出去。”
韩岚把这条限制加到条件卡上。梁屿接受公开代码、构建记录、版本和限制的写法,顾远则在转发页下留言,要求注明个人维护者不因此承担机构赔付。资本方的回信也到了:可以接受公开客户端作为起点,但不接受由公开客户端自动产生维护和赔付责任。
四个人的说法没有被压成一句“大家同意”。李波在卡片右上角写下:状态,接受;附加条件,公开限制,不承诺设备、维护和赔付。
公开客户端的页面放出去以后,问题反而更多。有人问旧设备构建失败该找谁,有人问生成版本和目录不一致时能不能先拿去办理,还有人只留下一句:我能看懂说明,却没有一台能持续运行的设备。
梁屿没有把问题转给李波,也没有承诺免费维护。他在页面上补了三项回应:构建失败要附工具版本和日志;版本不一致先停在本地核对;没有设备或时间的人可以只阅读公开记录,不必为了表示支持而运行节点。韩岚核对这些回应的发布日期,把它们作为限制说明附在第一张卡片下方。
李波看着最后一句,想起海岬会谈里个人节点可以运行却未必被承认的争论。公开客户端至少没有把“能看见”伪装成“能承担”。
第二张卡片写的是“个人自托管”。
这个词在海岬纪要里只出现过一次,后面跟着一串风险提示,像是只要把风险提示列完,就可以把钥匙交还给使用者。李波不满意这种写法。他们把测试缩到一笔很小的额度,请三名志愿者在自己的设备上生成并保管密钥,自己签名,再把公开的状态交给报告记录。
测试安排在一间社区教室。窗边堆着折叠椅,墙上还留着上个月课程的胶带痕迹。韩岚先读授权说明,提醒志愿者:李波不接触密钥,不代为保存恢复信息,不替任何人把测试结果扩大成制度承诺;志愿者只公开测试编号、动作时间和状态,不公开地址、账户或密钥材料。
“你不看密钥,怎么知道测试真的做过?”一个志愿者问。
“我只能确认你愿意公开的状态和签名结果。”李波说,“我不能用看见密钥来替你保管它,也不能把看见它当成证明。”
志愿者赵苓把一台离线设备放在自己面前。她没有把屏幕转向李波,只按照公开步骤生成一组新密钥,自己写下保管提示,再用其中一把签了测试请求。韩岚站在旁边,核对的是公开签名、时间和请求状态,没有问她恢复信息放在哪里。
另一个志愿者陈默只想试一次转出。他说自己平时不会运行节点,只想确认持有密钥的人能不能使用公开客户端提交请求。田实在另一间屋里运行验证程序,陈默的设备把请求送到公开入口,二者没有被写成同一个角色。
李波在记录里写下:自托管是密钥由使用者控制,运行节点是参与验证或转发;两者可以同时发生,也可以分开。志愿者自己保管密钥,不表示他必须承担节点维护。
第三位志愿者在一周后发来一条消息,说搬家时把写有恢复信息的纸片当作旧课程材料一起清理了。她没有请求李波寻找,也没有同意公开更多细节,只确认那一笔测试状态仍可查,密钥无法恢复。
李波在状态栏写:密钥遗失,无法自动恢复,未由报告人代找。有人建议把这条改成“测试失败”,让阅读者知道自托管不可靠。
韩岚摇头。“它说明的是恢复边界,不是客户端有没有运行。把遗失写成失败,别人会以为机构应该替她找回;写成成功,又会遮掉她实际失去的控制。”
资本方对个人自托管的回信比对公开客户端谨慎得多。他们愿意承认小额测试可以由使用者保管密钥,却要求正式承认的结算入口必须把密钥放在机构的审计范围内。理由写得很具体:遗失、欺诈、误签和家人代办发生时,机构若无法确认控制链,就难以处理申诉和有限赔付。
顾远认可机构赔付的必要性,却反对把个人节点和个人密钥一起排除。“用户可以选择把钥匙交给服务方,”他在公开回复里写,“不能因为有人选择托管,就规定没人可以自托管。”
沈砚也补了一句:自托管造成的损失不能被简单地全推回用户,至少要说明客户端限制、误操作提醒、替代申诉地址和服务方在何种范围内仍负有解释责任。
李波起初写下“任何遗失由使用者自行承担”,写到第二行便停住。他把句子删掉,改成:遗失后的状态、可请求的说明、服务方是否承诺补救,分别记录,不把其中一项自动推成另外两项。
韩岚在卡片右上角写下:状态,附条件;小额测试允许个人控制密钥,须说明不接触密钥、遗失不可自动恢复、自托管不等于运行节点,正式服务的托管与申诉责任另行核对。
第三张卡片的标题是“可审计储备”。
海岬方面发来的公开材料有一套构成说明、一份托管方名单、两个不同日期的状态页和一段暂停条件。材料没有附私人账户,也没有要求他们去读未公开的账本。韩岚先把每一页的日期和字段抄到同一张纸上,李波只负责记录来源,不替运营方解释缺口。
“可审计,是不是等于储备真实存在?”李波问。
“不是。”韩岚说,“我能核对公开字段有没有互相矛盾,能核对某个日期的负债数字是否被写进对应版本,能确认暂停条件出现在说明里。真实性要由承诺审查的人负责,不能让我用技术核对背书。”
她从第一份材料开始查。构成说明按类别列出储备,托管方名单写着保管地点和责任范围,状态页标出截至日期,负债页却晚了两天。按协议,晚两天的负债可能已经发生,不能直接和较早日期的储备并列。
运营方解释说,状态页每周更新,负债页由另一组人汇总,两个日期不一致是流程安排,不代表隐瞒。韩岚没有判断这份解释是否可信,只在卡片上记下:观察到日期不一致,需补充同一截止时点的对应关系。
赎回顺序也没有写在最初的公开页里。运营方后来补了一页,说明先处理已确认的请求,再处理争议中的请求;若进行储备核对,可以暂停新的提取,并公布暂停原因、预计复核时间和恢复条件。
一位维护者在公开回复里问,审计能不能保证每个用户都立即拿回自己的记录。韩岚回答:审计字段不能承诺即时取回,暂停条件也不能代替赔付决定。能核对的是材料如何写、由谁发布、覆盖哪个日期,以及缺少哪一项公开信息。
资本方愿意公开构成、托管方、日期、负债、赎回顺序和暂停条件,但要求把部分运行细节放在机构内部。公共利益审查接受有限披露,却要求内部限制不能影响用户知道当前状态、异议联系人和可等待的最长时间。
李波把两边意见分开写。他没有把“披露得更多”直接当成“风险变小”,也没有因为材料存在日期差异就宣布储备不实。韩岚在卡片右上角落下:状态,待核对;已核对字段一致性与日期缺口,未对储备真实性背书,待补同一截止时点、负债对应关系及暂停说明的公开来源。
储备材料补交的那天,运营方没有寄来一份更厚的文件,只在公开目录上增加了两个链接。第一个链接指向新的负债清单,第二个链接指向暂停说明的修订版。旧链接仍然可以打开,页面上却没有明显标出它已经被替换。
韩岚把新旧页面并排保存到核对目录,标出发布时间和截至日期。她给运营方写信,要求在标题处说明版本变化,不能让读者自己猜哪一份仍然适用。
对方回信说,保留旧页面是为了让审计者看见历史,若在标题上标“旧”,有人会误以为它不再具备参考价值。他们愿意在页面旁边加上替换时间和适用范围,却不愿把所有内部核对过程公开。
“这可以接受吗?”李波问。
“看他们公开了什么。”韩岚说,“历史页可以留着,当前页也要说清截止时间。审计不是把所有内部文件摊开,而是让别人知道自己正在核对哪一份、缺哪一份。”
她发现新负债清单的日期比储备构成说明晚一天,暂停说明又采用了第三个日期。三份材料并非互相矛盾,却不能被读成同一时点的保证。她在公开记录里写明观察范围,建议运营方补一份对应表。
对方在电话里问:“这样写会不会让用户以为储备出了问题?”
“我没有这么写。”韩岚说,“我只写日期没有对齐。你们若能说明负债与储备分别截至哪一天,读者可以自己判断等待的范围。”
电话那头传来纸张翻动的声音。运营方最后同意补充日期对应和暂停期间的状态更新,但仍不承诺任何请求立即完成,也没有让韩岚为他们的储备背书。
李波把这次往返放进草案附件,标题写成“公开披露字段的修订记录”,没有放进结论页。沈砚看过后留言:用户最需要的不是一句“已经审计”,而是知道何时更新、谁能解释、缺口何时复核。
第四张卡片最难写,标题暂时只叫“退出通道”。
他们决定沿用海岬会谈中那位受损用户的匿名记录,只做一次流程测试,不移动真实资产,不打开账户,也不要求对方重新讲述旧损失。李波先把上一份同意说明拿出来,请对方确认新的授权范围:只公开这次退出申请从哪里发出、收到什么状态、等待多久、由谁答复;不公开地址、账户、服务商内部编号,不代表其他用户。
受损用户甲在回信里补了一句:只要测试不要求我把钥匙交给报告人,可以。
韩岚找来一个仍可访问的替代入口。入口可以接收退出请求,却没有权限直接改动原托管服务的状态。测试申请写得很窄:原服务已暂停提取,用户希望把一项已确认记录转入替代入口;请回复能否受理、缺什么材料、下一次状态更新时间和异议联系人。
替代入口当天回了“已收到”。第二行却写着:需原暂停方确认后继续。
李波看着这句话。“这算退出开始了吗?”
“只能算替代入口收到了申请。”韩岚说,“如果下一步仍由原暂停方批准,用户只是换了一个地方重新申请。”
原暂停方第三天发来状态更新,称正在核对争议记录,没有承诺完成日期,也没有说明如果超过等待时间应向谁提出异议。受损用户甲没有再催,他说自己已经问过一次,不想让测试变成另一种重复证明。
李波把这次等待记录下来。没有人要求他触碰密钥,也没有人因为链上记录仍然存在就假定用户已经能够取回。韩岚核对了请求时间、替代入口的回执、暂停方公开状态页和缺失字段,确认流程确实走到了“等待原暂停方确认”,没有把它写成已经退出。
公共利益审查人沈砚在评论里写,替代入口不能只负责收件,然后把全部等待推回用户;至少要显示当前状态、下一次更新日期、异议联系人和最长等待。超过最长等待以后能否转交另一位审查人,要写成可以核对的安排,不能靠“会有人处理”的保证。
资本方接受状态更新和异议联系人的写法,却拒绝在未完成争议核对前允许不经原暂停方批准的转出。他们担心同一项记录被重复提取,也担心替代入口没有完整资料就先行承诺。维护者承认这些风险,却认为原暂停方拥有最后批准权,会让退出变成被暂停方控制的另一项受理。
李波把“任何人均可自由退出”写进草案,韩岚读到这一句,用铅笔在旁边打了一个问号。
“这句话不够。”她说。
“它至少表达了方向。”
“方向没法测试。谁提出,走哪一个替代入口,原服务方要在多久内更新状态,异议找谁,超过等待以后有什么下一步,这些都没有。若原暂停方仍然可以不说明理由地批准或拒绝,‘自由退出’只是把申请换了一个名字。”
李波把那句删掉,改成:使用者可提出退出申请;替代入口负责确认收件和显示材料要求;原暂停方必须公开当前状态及下一次更新时间;异议联系人和最长等待期单独列出;未达到这些字段,不得把申请写成已完成退出;是否能够取回,仍按相应责任人的公开承诺确认。
韩岚又退回“必须”两个字。“谁有权要求它?”
“那改成‘草案要求原暂停方公开’?”
“可以,但要标记这是一项待核对的要求,不是现行权限。”
他们重新发出一份窄范围测试说明。替代入口收到后,补出了缺少的材料清单和异议地址;原暂停方只确认“复核中”,没有接受最长等待期。测试到这里停止,没有被包装成成功,也没有被说成完全失败。能被看见的是:有替代入口,不代表已经有退出;有状态更新,不代表立刻取回;原暂停方不回应时,缺口会落在提出申请的人身上。
李波在卡片右上角写下:状态,拒绝;拒绝的是仍由原暂停方单独批准、却不提供最长等待和异议路径的版本。修改后的字段留待下一轮核对,不保证立即退出。
四张卡片贴到墙上以后,房间看起来像一间还没有开门的服务窗口。每张卡片下面都有版本号、观察日期和一小块留白,留白不是让人最后统一盖章,而是让不同意见能停在原来的项目旁边。
公开客户端卡片标成“接受”。这个接受只覆盖代码、构建方法、版本和限制可以被公开查找;设备能不能运行、维护由谁承担、出现争议后有没有赔付,另行写明。资本方接受这一项,条件是客户端不能被读成机构责任的自动承诺。梁屿同意,顾远也在卡片上留下自己的补充:公开不等于每个维护者都有时间持续更新。
个人自托管卡片标成“附条件”。三名志愿者可以用自己的密钥完成小额测试,报告人不接触密钥,遗失不能自动恢复,自托管也不要求运行节点。资本方只愿意把它放在小额和自愿范围内,正式承认的服务仍希望由机构掌握托管记录。顾远接受机构可以在承诺范围内赔付,却不同意因此排除个人节点或个人保管密钥。
可审计储备卡片标成“待核对”。构成、托管方、日期、负债、赎回顺序和暂停条件已经列出,但日期对应关系仍有一处缺口,韩岚只能确认公开字段相互怎样对应,不能为储备真实性签字。运营方愿意补材料,公共利益审查则要求补材料不能只为了让报告好看,还要让暂停中的使用者知道下一次回信在哪里。
退出通道卡片标成“拒绝”。被拒绝的是原暂停方仍握着最后批准权,却没有最长等待、异议联系人和替代入口状态的版本。替代入口的收件记录可以保留,测试也可以继续;那一版条款不能进入可采用条件。
李波把四张卡片的状态抄进报告。他写到最后,想给整页加一句:“以上为最低共同条件。”
韩岚从他手里抽走笔,指着“共同”两个字。“谁共同?”
“几方都在看。”
“看过不等于接受。资本方只接受公开客户端,维护者接受机构赔付但反对排除个人节点,公共利益审查还在追问风险不能全部推给使用者。你把‘共同’留在标题里,下一次转发就会只剩这两个字。”
李波盯着那两个字看了一会儿。他想起海岬纪要把拒签写成个人异议,字很小,却被夹在机构专属条款旁边,仿佛个人只要不再发言,条款就能代表所有人。
他删掉“共同”,把标题改成:第一版最低条件草案。
韩岚没有再改标题,只让他在标题下加上三句说明:本草案不改变源币基础规则;不自动授予任何机构或个人制度资格;不代表任何共同体、服务方或制度采纳。
“最低条件是不是也像结论?”李波问。
“所以要写第一版和草案。”韩岚说,“它只能说明哪些条件目前被提出、哪些地方有人接受、哪些地方附带限制、哪些被拒绝、哪些还要核对。”
李波在页脚加上四个状态词,分别对应四张卡片。没有总签名栏,只有项目自己的来源和参与者同意范围。韩岚签技术字段,梁屿签自己提交的构建材料,志愿者签测试授权,资本方在公开客户端和储备披露旁写下有条件意见,顾远在维护说明旁保留异议。谁没有签,旁边就留下未签理由,不用空白推测态度。
周晓云的消息是在这时转来的。她没有评论四张卡片,只附了两份来自澜陆内部的未定意见。一份主张参加下一轮条件核对,另一份主张暂不参加,理由和授权范围都写在各自的页上。两份意见都没有被周晓云归并成共同决定。
李波问她:“需要我们替你选一份吗?”
“这正是我不能让你们做的事。”周晓云回道,“我可以把两份意见转进公开材料,也可以说明各自没有授权到哪里。参加还是不参加,要由有权限的人决定。”
韩岚把两份文件的日期、来源和签署范围核对了一遍。她没有把其中一份较长的文字当成更强的意见,也没有把暂不参加解释为拒绝全部条件。李波把它们放在草案之后,标成未定材料。
夜里,研究所的走廊只亮着一盏灯。李波关掉公开客户端的构建进程,把失败日志和第二次成功日志放进同一目录;那笔自托管测试仍由志愿者自己保管,退出测试没有移动任何真实资产,可审计储备还等着补齐同一日期的对应说明。
他把四张卡片按“接受、附条件、待核对、拒绝”重新排好,最后一张纸上写下:是否参加,尚无授权结论。
虚构声明
《链》是一部架空近未来小说。文中的人物、国家、城市、机构、货币和事件均属虚构;源币受到公开数字货币思想的启发,但拥有独立的历史与规则。
订阅《链》:https://www.790427.xyz/subscribe.html