Bitcoin

happypeter

有一个经验告诉大家,跟别人推广比特币的时候,千万不要带有狂热的情绪,每次朋友都会笑着跟我说,“Peter, 你又被人家洗脑了吧?”,所以今天我要跟大家分享的都是一些纯粹理性的东西,一点技术干货。

比特币是互联网时代的货币

有人说比特币是他们自 TCP/IP 以来见过的最大的科技创新,也有人说是自工业革命以来最大的创新。所以我准备今天的这个内容,最早是从一个疑问出发的,比特币到底有没有实质性的技术突破?例如,飞机的发明引发一场革命,为啥?因为飞机会飞。那么比特币到底会给我们的日常生活带来怎样的一个物质层面的便利?

有人说这是“凯瑞斯大战哈耶克”,比特币是要复兴“自由经济”,给哈耶克大叔的《货币非国家化》的思想撑腰打气。但是我作为一个程序员,并不是这么看这个问题的。我读了比特币相关的技术资料,发觉里面用到的各项技术,都是互联网上早已经广泛使用的技术了。所谓的“去中心化”思想,也就是互联网的根本思想。比特币总的来说并不支持谁反对谁,就像人们发明拖拉机,并不是为了反对驴子的。工具是中性的,如果未来他能推广应用,就是因为它好用而已。

好了,现在可以在宏观层面上给出一个答案:比特币的突破在于它是首个互联网上的货币,信用卡是50年代的技术了,互联网时代理应有更方便的形式来让人们进行交易。

比特币对互联网基础协议进行了拓展

但是我们把思维再推进一步,比特币是不是仅仅就是传统的互联网技术在货币领域的一个应用呢?答案是 NO,因为比特币对传统的互联网技术进行了突破性的扩展。这也让比特币从根本上区别于以往网上的各种虚拟货币。

现在说说比特币到底是什么。它是互联网上的一个公开的账本,上门记录着每个账户都有多少个比特币。所谓公开,就是任何一个网络上的计算机,都可以免费下载到一个账本的完整的拷贝。可能让人稍有惊讶的是,任何人都有权查看所有账户的资金额。那么隐私怎么办?好在账户名,其实只是 Alice 的收款地址,是一串随机数,而并不是 Alice 本人的真实身份信息。

当一个人拥有了比特币。那么他至少会拥有一个“比特币钱包”。一个比特币钱包其实就是两个随机数,一个是账户地址,一个是这个地址对应的私钥。

基本的转账。如果 Alice 给 Bob 转账,她可以动用私钥 ,这个类似于账户密码了,来从自己的账户中转出一笔比特币给 Bob,同时要把这个消息广播到全网,大家给作证,那么意思就是这个交易生效了。就跟家里兄弟倆分家差不多,要有见证人。这样等互联网上的其他的账本也都更新了两个人的余额,交易就板上钉钉,推不倒了。

说到这里,还没有体现出比特币的实质性的技术突破。扩散到各个网络节点 ,通过的是点对点的技术。通过私钥签名的形式来确定身份,也是很常见的加密通信的操作。

互联网上首次可以不依赖第三方达成共识

真正的突破在于如何在互联网上达成共识,这样就可以让大家共同认可同一份账本了。有人总结说比特币的实质性的技术突破就是在一个不安全的网络上达成共识,是拜占庭将军问题的解决。不过下面我们不把问题聊得这么抽象,只是贴合比特币的实际来浅浅的介绍一下。

如果大家同时认可同一份账本,那么实际上我们就可以实现数字资产的“传递”。所以换一个角度来说。传统的互联网,解决的是一个 “传播”问题(我给你一个东西,那你有了这个东西,但是我也是还有一个备份的,例如发一封电子邮件),比特币是第一次实现了一个东西的“传递”(我给你一个东西,那么你有了,我就没有了)这个就是所谓的“实质性的技术突破”。

有人说,银行转账就是“传递”。我有一百元,转给你了,你就有了,我没有了。但是大家想想一下这个过程其实只是银行的员工改了一下数据库,改了一下他自己那个账本。这种所谓的传递,可以说不是由互联网来完成的:这个过程基本上是有一个“老大”,并且我们必须信任这个老大,于是“老大”说转移了就转移了。而比特币,作为一个好用的工具,要达到的是这样一个效果:第一,我和你交易,不需要老大来作证;第二,我和你只是在互联网上的两个用户,相互之间毫无信任可言,需要比特币系统自动防止交易欺诈行为。

挖矿过程是一个投票过程

回到具体实现。这个共识,也就是维护全网唯一版本的一个账本,是通过“挖矿”来达成的。具体过程是这样,在比特币的网络上有一些运行着专门的挖矿软件的计算机,叫做矿工。矿工会收集最近的所有交易,组成一个“区块”,然后矿工就开始拼命计算一个数学问题,谁先算出答案,这个矿工就有权利把这个区块广播到全网,其他的矿工就会把这个区块添加到自己本地的这个账本上,其实账本还有个学名叫做区块链,意思是由很多区块组成的一条链。可见挖矿的本质就是争夺记账权,之所以叫挖矿,是因为哪位矿工拿到了这个记账权,那么会有一定数目的比特币奖励给他作为酬劳,这也就是所谓的“挖到了比特币”。

矿工每次要算的这个数学问题,是要消耗大量的运算能力的,那么这么做的意义是什么呢。简单来说就是防止欺诈。在比特币网络上,一个规定就是如果区块链由于各种原因发生了分叉,那么最终比较长的那个链会被全网采纳。如果一个骗子矿工想往账本中加入作弊的交易,那么必然会导致区块链的分叉,骗子如果想最终得逞,那它需要让自己的这个叉上面的区块增加的速度比诚实的那个分叉快。这一点是非常难以做到的,他自己的运算能力需要超出全网所有矿工的运算能力总和才行。

所以,挖矿的过程,其实还是一个投票的过程。也就是,既然没有老大了,那我们信谁呢。答案是:相信大多数人。但是如何在网络上定义一个人,又是一个没有完美答案的问题。如果规定一个 IP 代表一个人,那么其实有些人是能够一下子垄断大量的 IP 的。所以稍好一点的方式,是一个 CPU 代表一个人。这样如果,有坏人想要冒充很多人的话,那么他起码要投入很多钱来买运算力的。还是前面说的,如果这个坏人的运算能力不能超过所有诚实的人之和,那么也是没有能力造假的。所以以前我总是很讨厌挖矿,总觉的不够低碳环保。后来想想其实全网的运算能力越强,坏人就越难得逞,所以也值了。看看现在金融系统每年的自身消耗,这点电基本微不足道。

好了,一旦交易达到了不依赖于第三方。那么就打开了一切的可能:超级低的交易手续费,基于基础比特币协议进行创新不需要经过任何一个老大的许可… 就说这么多,谢谢!