摘要

  • genx.net 的项目于 1997 年 3 月结束后,原本暂存工作的代理接过了任务分配和已检查密钥的记录。
  • 本地缓冲、任务回收、统计与带宽共同支撑志愿计算;找到答案的那台桌面机,背后有一整套协作。

电脑愿意干活,志愿者也愿意贡献时间,偏偏负责派活的服务器不见了。1997 年这次密钥搜索,先碰到了一道很有办公室气息的难题:大家都到了,谁拿着工作清单?

这是一场 RSA Labs 设定的公开密钥挑战。参与者测试候选密钥,寻找能解开指定消息的那个答案。distributed.net 的 RC5 项目说明介绍了基本分工:服务器把搜索工作拆成块,交给各台电脑上的程序。每台机器算完的那一份,需要回到整个项目认得的记录里。

临时工接过了总调度

Jeff Lawson 最初写的代理,是给 genx.net 旧项目搭的一块缓冲垫。项目自己的起源记录说,大家原本想把完成的工作先存着,等上游服务器回来再交。后来,这位“等人回来”的临时帮手接了班。

项目时间线把旧密钥服务器消失记在 1997 年 3 月 18 日。3 月 24 日,组织者确认旧项目不再继续;新的代理网络对外开放,Lawson 的代理开始有序分派任务,并跟踪已经检查过的密钥。寄存处变成调度室,工作性质一下子换了。

电脑多,可以同时做许多计算;要让成果累积,就得知道哪些范围已经发出去、哪些结果已经收回来。这份共同记忆若没人接手,再热闹的电脑阵容也可能忙着重复别人的活。服务器的接班,决定了志愿者付出的时间还能往哪里汇。

让电脑带着干粮出门

同一份历史记录列出了 7 月客户端的改进:最多缓存 50 个任务块,收到终止信号时可以在块内暂停,代理出故障后会自动寻找其他代理。参与项目的桌面电脑有自己的日常,网络连接也有自己的脾气。让客户端手里留点活,整个项目就多了一点回旋空间。

记账很快也成了一门正经工作。4 月各服务器运营者各有统计,5 月出现项目范围的统计。到了 9 月,时间线说主协调服务器需要的带宽,已经超过一条 128K ISDN 连接所能提供的容量。算力散在各处,派活和收件却会把压力聚到某个地方。

赢的是一台电脑,分的是一笔人情账

1997 年 10 月 22 日的正式公告宣布,答案已于 10 月 19 日找到,并获得 RSA Labs 确认。找到它的是 Peter Stuer 的 Pentium Pro 200,运行 Windows NT Workstation,为布鲁塞尔的 STARLab Bovine Team 干活。

团队协调者 Jo Hermans 留下了一个很有人味的尾声:他希望胜出的是 Macintosh,因为团队大部分算力来自 Mac;至于奖金,他马上想到了能买多少啤酒。公告安排 1,000 美元给获胜者庆祝,8,000 美元捐给 Project Gutenberg,另外 1,000 美元留给 distributed.net。一场密码挑战,最大的一份奖金最后去帮电子书添砖加瓦。

领奖的桌面机容易进入记忆,3 月的接班却解释了它怎样获得一次有效的尝试。有人一直保管清单,发下一份活,收上一份结果。闲置电脑能贡献计算时间;把时间变成共同进展,需要有人把账记下去。