众妙之门——2 梦断分布式
2001年,卡普尔携500万美元和一支牛人队伍启动开源项目Chandler,不缺钱、不缺人、没有deadline,六年却拿不出1.0。《梦断代码》写尽其过程,却轻轻放过一个关键细节:坚持纯P2P、无中心。拜占庭将军与女巫攻击这道难题,要到2009年才由中本聪用区块链解开。

题图:Landscape | Jean Victor Bertin
目录
天网的软肋 / Skynet’s Vulnerability
梦断分布式 / Dreaming in Distributed
千亿计算机 / Hundreds of Billions of Computers
升维进化 / Dimension Upgrade Evolution
众妙之门 / The Doorway(whence issued all secret essences)
众妙之门2
梦断分布式 / Dreaming in Distributed
2001年夏天,卡普尔(Mitchell Kapor)创建了开源应用基金会,宣布开发一个革命性的开源的个人信息管理(PIM)系统,命名为Chandler。注意,这个名字不是来自《老友记》(Friends)里面的那个时胖时瘦经常讲一些只能把自己逗笑的冷幽默的那个Chandler,而是来自卡普尔喜欢的一位叫做Raymond Chandler的推理小说家。
卡普尔在硅谷可谓大名鼎鼎——莲花(Lotus)软件公司的创始人,个人电脑上第一个杀手应用Lotus1-2-3的设计者,电子前哨基金会的共同创始人,后来还当过Mozilla基金会的主席。作为风险投资者,卡普尔投过Uber这样的独pei角qian兽huo公司。
Chandler项目雄心勃勃——Python语言开发,源码开放,数据格式标准开放,跨平台,分布式无中心,架构可扩展,确保安全和隐私;将具备的功能包括日历、邮件、通讯录、任务管理、记事本和即时消息等等。
卡普尔很有影响力,项目一宣布,开源社区一片欢腾,媒体报道铺天盖地,认为这个项目将是开源社区对微软Exchange和Outlook的有力回答。卡普尔以其一呼百应的号召力,在互联网泡沫刚刚破裂的时代,很快就拉起一支牛人云集的程序员队伍。这些牛人里有Macintosh的前核心开发者,有NeXT软件开发的前负责人,Netscape浏览器关键代码的开发者等等。因为是要做开源软件,所以甚至有人作为志愿者加入,不领工资。
卡普尔一出手就是500万美元,不缺钱;有了这么牛的一支队伍,所以也不缺技术和人才。雄心勃勃,时间充裕,没有deadline。万事俱备,只待东风一起,鼓帆远航了。
但是,Chandler项目最终一败涂地。
2001年项目启动,一直到2007年一本名为《梦断代码》(Dreaming in Code)的书出版的时候,Chandler1.0还没有发布。这本书是记者兼作家罗森伯格(Scott Rosenberg)从2003年开始,像做田野调查一样深入Chandler项目写出的一本400页的书,专写Chandler的开发过程。书的封面上写着:“两打程序员,三年,4732个bugs,和对非凡软件的不懈追求。”
如果一个软件开发项目不成功,可以说是因为需求不清晰,或者需求经常变更;也可以归罪于预算紧张,资源受限,人手不够;也可以抱怨说时间太紧,deadline逼死人。但,这些失败的借口在这个项目上完全不适用。那到底为什么Chandler会失败如此?罗森伯格的书里写了很多,包括过程,包括分析,都有。
但有一个原因在我看来其实非常关键,但罗森伯格显然忽略了。有一个非常重要的细节,罗森伯格在书里只是简单提起——Chandler项目决定用P2P的方式实现所有功能,不依赖任何中心服务器。这个目标好高骛远,显然没有估计难度如何。也许是因为Napster的成功在前,大家就认为用P2P也应该没问题。但实际上,用P2P的方式完成个人信息共享、邮件存储和收发、即时通信等功能是非常困难的问题。只有雄心而没有经验,项目成员也从未致力于开发P2P相关算法或协议,甚至没怎么讨论过,直到P2P的需求被彻底放弃之后,Chandler才有0.x的小版本发布出来。一个软件,发布时间一拖再拖,发布出来的版本又舍弃了关键特性,怎么可能成功?
人类的文明运行于软件之上,但人们却把软件看成艺术品。这句话的前半句是C++的发明者Bjarne Stroustrup说的,后半句是高纳德Knuth的观点(他的名著叫做《计算机编程的艺术》,你体会一下)。
软件乃是人类自以为最有把握,实则最难掌控的技术。这句是罗森伯格在书里写的,还举了一大堆例子来佐证这个说法,从美国联邦调查局FBI的Trilogy项目,国内税务局IRS的三次系统升级项目,到企业界的麦当劳Innovate项目,福特公司的Everest,从失败到失败。最严重的是IBM为联邦航空管理局FAA建设的先进自主系统AAS,“1981年启动,在花费了几十亿美元之后于1994年宣布终止,颗粒无收。”这个项目中被挫败感压垮的成员“有的砸烂自己的汽车,有的发疯,有的自杀身亡。一位项目经理吃纸上瘾……”
这样的状况之下,说人类能通过软件和算法制造出无所不能的天网,你相信吗?
当然,Chandler虽然没做出来,却还不至于让人发疯。2001年,Napster虽然已经火了一年多,但并不是完全的P2P,还必须依赖中心服务器。BitTorrent协议刚刚出现,但Chandler项目不仅要分布式、无中心的架构,还要在其上实现复杂的功能。这在当时,即便不是不可能,也必定存在巨大的困难,仅有BitTorrent协议远远不够。
事实上,Chandler项目雄心勃勃想做到的事情,需要在P2P同步技术基础上采用非对称密码技术,每个消息发送方对自己发出的消息进行签名,公钥和消息数据全局同步。用这种方法,首先将P2P通信中的共识问题——“拜占庭将军”问题化简为投票问题,以票数多者为共识基础,然后用工作量证明等方法将投票权与稀缺资源绑定,避免参与投票者被伪造,无法鉴别,投票机制被滥用——此之谓“女巫攻击”——等行为,才能形成一个全局性可信赖的数据基础,从而完成P2P之上的日历、通讯录等功能。
工作量证明(POW, Proof of Work)是一个将投票权与资源绑定起来的可靠的机制,可用于在点对点系统中形成共识。举个具体的例子来说明一下这个概念。比如,指定一个1M的数据块,要求找到一个随机数,让这个数据块加上这个随机数的哈希值前20位都是零。这需要进行(统计意义上的)极多次数的哈希计算,算出的哈希值和对应的随机数就是进行了巨量指定哈希计算的工作量证明,无法伪造。能够进行快速、巨量哈希计算的计算资源自然是稀缺的。当然,有可能运气非常好,算了很少的次数就得到这样一个随机数,但是次数多了谁也不能保证运气总是那么好。所以工作量证明的机制是很牢靠的。
只能说,Chandler想法太超前,就像骑着自行车想上月球一样脱离时代。众所周知的是,这样的技术直到2009年才由一个叫Satoshi Nakamoto人第一次实现出来。罗森伯格用“梦断代码”来形容Chandler项目的失败,在我看来,可以从技术上更准确(可能有些以偏概全)地指出这一失败——梦断分布式。
2015年1月,经过长时间地研究和观察,罗森伯格发表了一篇名为“There’s a blockchain for that”的文章(http://t.cn/RZobvJK),浓墨重彩地写了曾让Chandler梦断的技术——区块链(Blockchain)。我在想,这片文章标题里的”that”,有没有特指Chandler的意思?
(待续)
今天不玩赞赏议员的游戏了,这好的日子,一起唱支歌吧。
Do you hear the people sing?
Singing the song of angry men? It is the music of the people Who will not be slaves again! When the beating of your heart Echoes the beating of the drums There is a life about to start When tomorrow comes.
Combeferre: Will you join in our crusade? Who will be strong and stand with me? Beyond the barricade Is there a world you long to see?
Courfeyrac: Then join in the fight That will give you the right to be free!
All: Do you hear the people sing? Singing the song of angry men It is the music of the people Who will not be slaves again! When the beating of your heart Echoes the beating of the drums There is a life about to start When tomorrow comes!
Feuilly: Will you give all you can give So that our banner may advance Some will fall and some will live Will you stand up and take your chance? The blood of the martyrs Will water the meadows of France!
All: Do you hear the people sing! Singing the song of angry men? It is the music of the people Who will not be slaves again! When the beating of your heart Echoes the beating of the drums There is a life about to start When tomorrow comes!
原载于微信公众号「网安志异」,2015-09-02 · 原文
留言