比特币技术的蓝图(上)
在不断壮大的数字货币领域,Joseph Lubin 可谓声名赫赫,在我(原作者)眼里他总能将事情做到极致但却毫不张扬。
2014 年的冬天,他邀请我到迈阿密参加一个比特币会议,告诉我他们正在创建一个新的项目,名为 Ethereum(以太坊),是他和一群志同道合的加拿朋友刚启动的项目。他雄心勃勃地表示:「我们将会取代保险公司,我们将会取代华尔街!」他们正在试图征服各行各业,比如说在线电影发行平台,像 Netflix 和 Hulu;游戏平台,如 Xbox 和世嘉;即时通讯应用像 Twitter 等;亦或涉猎到日常生活相关的退休金计划,货币兑换,选举投票,知识产权管理和信托基金等。在 Lubin 眼里,这一切的一切,所有根基于互联网或任何数字信号渠道的信息都将因此经历根本性的改变。
他的想法受到了许多数字货币爱好者的追捧。众所周知,比特币交易是完全透明的,几乎没有延时,无需任何第三方审核,也无需授权给任何管理员。所以说,理论上类似的技术应该可以应用在更多复杂的金融服务里,更确切的说,这项技术可能在网络上任何需要储存和处理数字信息的领域得到运用。在过去的一年中,这一理论激发了许多各式各样的项目申请。其中一些创意猜想正在比特币网络上进行实验开发。另有一些项目,如 Ethereum,已经开始在一个名叫 Altcoins 的比特币克隆网络上运作。这些项目吸引了大量的社会投资。像是在今年一月,一个由比特币衍生而来的创业公司 Colu 就从两家知名的风投 Spark Capita 和 Aleph 融到了 250 万美元。通过参加这些正式或非正式的展会和会议,明显可以感觉到,比特币技术的可能性是无限的,数字货币只是这个技术第一个或许是最无聊的实际应用。
虽然这些项目眼花缭乱,但他们都试图让互联网摆脱未知的拥有最高权限的管理员的束缚。现在我们在网上创建的数据和执行的命令都会存储在中央服务器上,而这些服务器大多被企业或政府机构所掌管。我们已经习惯依赖这些服务器,它们可以储存和收发电子邮件;能帮助网站和智能手机 app 识别使用者的身份;会保存购物车记录并处理付款程序。名义上这些数据属于我们,但为了访问或使用它们,我们仍需要穿过多重数字信道,由此可见,我们并没有真正拥有这些数据。
Nick Szabo 关于数字协议和智能财产的理论赢得了许多数字货币信徒的推崇,他经常被误认为是比特币的创始人,他曾在一篇博文里说过:
实际上,我们所用的系统已被默认由一个或一群人来监管控制,他们可以轻易地在计算机上读取、修改、删除或阻止我们的指令。换句话说,我们在这些人面前是毫无缚鸡之力的,只能选择相信他们会如实地执行我们的订单,确保我们的支付等。如果有人在控制端想要忽视或伪造某条指令,还没有什么安全措施可以约束他们。
长久以来,大多数人认为互联网的运作就只能这样了。假如我们的数字世界可以视作一堆数据,我们要更新这些数据并将其复制到另一个地方,保护好这些数据不被腐蚀、篡改是至关重要的。传统的解决方案,就是在物理或虚拟层面上设置访问权限。我们之所以选择信任现有的互联网服务,因为我们认为这些有权限的企业、机构是我们的利益共同体,我们也有随时检举他们的能力。但现实是残酷的,很多情况下他们不再是单纯地为大众提供服务。就像有报道称 Facebook 就曾在后台篡改用户页面数据来进行心理学实验。
大多数人遇到棘手的问题的时候,如果想不到完美的解决方案,通常都会选择危害最小的方法,所以我们情愿让尽可能少的人有权限掌控我们那些虚拟数据。至少,相比于其他的陌生人,这些企业、机构还是更可信的。然而,这恰恰是比特币技术所要打破的观念:一个公共数据库,每个人都可以看到,任何人都可以往里添加数据,但没有人能够破坏它。
作为虚拟货币的比特币早已为世人所知,而真正有着深远意义比特币协议是怎样运作的呢?为什么要相信比特币?协议里假定每参与者都有可能是骗子,但它仍能让他们自动遵守规则,这是怎样做到的呢?
当谈论到比特币技术的时候,需要知道两个概念:一个是 Blockchain(区块链),比特币交易中被输入的交易记录会被打包成数据块,这些数据块会线性增长从而组成了一条 Blockchain。第二个是添加这些数据块的人,他们被称为矿工(Miners)。
当你拥有一笔比特币,这意味着 Blockchain 上会有一条数值记录,伴随着一条数字签名记录。数字签名是一种加密技术,只有正确对应出另一半签名才能解密,这个签名就是你的「私钥」(Private Key),它会存储在你的比特币钱包里。如果你想使用比特币,首先你需要提出一个交易请求。矿工就会根据此打包一个数据块,这个数据块会记录所需支付的金额并链接到之前赚取这些比特币的那笔交易,同时他们核对签名来证明你确实是所有者,在此之后,则会为交易的新主人生成一个新的数字签名,当新主人想花掉它们的时候,则要重复以上动作。
所以说 Blockchain 无非是一长串的交易记录,其中每一个都会联系到一条较早的交易记录,用户们不能直接更新 Blockchain 上的记录。为了将比特币转让给别人,你必须提出请求并将此公布在比特币网站上。然后矿工会根据这个请求,做必要的检查,验证签名,并确保有足够的比特币可以进行交易,然后他们会把这些记录捆绑成数据块添加到 Blockchain 的末端。所有矿工都有自己版本的 Blockchain,并且都是独立工作。当完成一个新的数据块,矿工会将它公布在网络上供其他矿工来检查,要添加新的数据块必须征得其他矿工的同意。但鉴于他们都是陌生人,所以真没什么理由去相信彼此的工作。