初窥比特币,革命性的时代骄傲

初窥比特币,革命性的时代骄傲




0. 序:

这是它的创造者中本聪(Satoshi Nakamoto)给出的介绍:

A purely peer-to-peer version of electronic cash would allow online payments to be sent directly from one party to another without going through a financial institution.
译:一个完全通过端对端技术实现的电子现金系统,它允许在线支付可以由一方发起并支付给另一方而不需要通过任何的金融机构。

在2009年1月3日下午六点十五分零五秒,随着比特币的创世区块的诞生,第一批比特币被发掘出来。随后不断加入其中的人们感叹着它设计的精妙。其环环相扣的各种机制,不仅仅是对于支付领域,对于其他领域也具有非常大的启发意义。

在随后的第7年,也就是2016年,比特币迎来了一次“疯涨”,而2016年也被一些媒体称为“比特币之年”。在随后的2017年,比特币的价格更是一度飙升到20,000美元的高度。正是这样的现象,将比特币这样的新鲜事物带到了公众的面前。并受到了各界的广泛关注。

因为笔者本身对比特币并不感冒,所以在疯涨的两年里,没有去了解过,更没有对其进行投资,即便是现在众人惊呼“泡沫破碎”,也没有太大的兴趣。但前两天有一位很好的朋友向笔者询问了一些比特币的问题。所以抽了一些时间进行了一些学习和了解。本文既是对自己学习成果的记录和整理,也是希望借此可以让这样一个新奇的思想和技术能够被更多的人所知道。

在经过了考虑以后,笔者希望就计算机和金融两个领域的意义来分别讲述比特币。

注:阅读本文,有如下建议:
– 如果没有技术背景,文章对部分不易理解的技术细节进行了省略或抽象,不影响在宏观层面理解比特币
– 但本文仍旧保留了对一些技术(包括算法)的部分引用,供有技术背景的读者进行参考
– 由于笔者资历尚浅,希望能够尽力帮助读者领会这项技术中的精华所在,但学习终究不够深入(尤其是部分金融专业上的观点,大多由直接总结其他文章得到),若有所纰漏,欢迎批评指正

1. 技术实现

1.1 背景需求:

贸易在人类历史上已经进行了很久很久,然而放眼整个进化史,我们在贸易上发展的时间实在是短的可怜。所以我们暂时还没能演化出对于贸易的本能反应。(事实上,我们的本能难道不是尽可能占有更多的资源拿住不松手吗)所以,我们在交易中常常担心“被骗”。这也说明交易本身需要在双方信任的基础上进行。

在在线支付这件事情上,前人有过非常多的构想。尤其在于解决双重支付(Double-spending)的问题上我们已经有一套非常常用而且被广泛认可的方式,即借助共同信任的第三方来担任调节工作(Mediating)。例如支付宝、银行等等。因为我们对网线那头的他的约束力是极为有限的,这也就更说明我们需要一个第三方来对我们的交易进行仲裁和管理。不过这样的弊端是显而易见的:

  • 交易双方都需要提供给第三方若干与交易本身不相干的信息,好比购买一个牙刷,但我需要把我的身份证、学生证、驾驶证甚至是出生证明提供给第三方,这显然是对个人隐私的挑战。
  • 交易具有“可逆性”(reversible),这样的可逆性使得这个第三方拥有绝对的权利掌控交易。也因为各种对买家的保护性措施,有的东西是无法退货的,但可逆性使得任何交易都有一定可能被恢复,使得有的时候发生在买家身上的欺诈性事件也让卖家头疼不已。
  • 我们没办法保证这样的一个第三方会永久稳健且诚信地提供服务。因为它掌握的权力实在是太大了。或者说,万一某一天支付宝的机房管理员在吃小笼包的时候打翻了饮料把整层楼烧掉。那么所有的交易也就没有根据了。至于钱……人家心眼好选择相信你就会退还,但不退还其实也无可厚非因为并没有数据保留来证明这笔钱是属于谁的(当然这样的情况在现在的世界太难发生)。

然而,尽管有这样的弊端,我们仍不能否认,在体量足够大和稳健的第三方的支持下,这样的机制是非常令人满意的,至少在目前的中国是这样。

1.2 去中心化

正是在这样的弊端下,有人提出了非常有建设性的意见:

What is needed is an electronic payment system based on cryptographic proof instead of trust, allowing any two willing parties to transact directly with each other without the need for a trusted third party.

译:所以,我们非常需要这样一种电子支付系统,它基于密码学原理而不基于信用,使得任何
达成一致的双方,能够直接进行支付,从而不需要第三方中介的参与。

如此,便是去中心化在这里的意义所在。读者可能会惊呼:“天哪,这简直好似在倒退,会到原始的时代”。那么我们便需要了解“去中心化”到底是怎么样的。

我们在之前有提到支付宝或者银行之类的模式,我们所有的交易都通过他们帮助我们来完成,所有的交易均掌握在他们的手里。这样的模式我们称为中心化。而去中心化,则是让每一个参与到网络里来的用户都可以平等地组建网络。为了帮助读者理解去中心化,如下是一个例子,尽管虽然现实里不可能出现,但是笔者认为非常形象:

在学校中,某个班级内部同学们经常互相交换彼此需要的物品(商品)。而经常有同学认为自己的东西价值更高而不便于交换。聪明的班主任想出了一个办法,她制作了许多特别的曲别针,每一个同学都能把自己的东西兑换成曲别针以后再用曲别针与对方交换,还能够在班级的图书角兑换书籍和其他文具。大家非常认可这样的方案。

而后来,这个体系最终崩溃了。因为有的同学为了得到更多的东西在自己制作曲别针。后来东窗事发,导致大家都不认可这样的曲别针了。

后来班主任改进了这个方法,停止使用实物曲别针,而改用划账的形式。每个同学有自己的账本,而总账放在班长的手里。所有发生的交易,同学们都需要向班长汇报,班长觉得:“嗯,没有问题。”就在总账本上予以记录以认可这项交易。

然而……这个体系最终还是崩溃了。因为有一天有同学发现和班长同桌的女生似乎有用不完的曲别针。这其中不可描述的原因……反正你懂的。

再后来班主任继续改进了这个办法,她给每个同学都分发了一个账本。要求是,不管发生任何交易,不管是否涉及到你,你都应该记录在你的账本上,然后告诉你旁边的同学来记录。在每天放学后,所有同学在一起核对账目看数据是否统一。如果账目有出入(毕竟不是所有人都能够完完全全准确地记录)则按照大多数人的记录为准

如此一来,去中心化的思想就比较容易理解了。它是指每个人(节点)在网络中,都是对等的状态。当交易发生的时候,在自己的账本上记录之后“广播”给其他人(节点)。如此一来,就没有人可以轻易地篡改这些数据了。

上面的例子中,每一个同学,就是一个节点,他们每一个人都拥有一份账单的拷贝。

这样的方式具有一些特点:
– 完全不需要管理员,事实上,没有人能有绝对权限对其进行修改
– 它十分稳健,每一个节点都可以有一份完整的拷贝。所以不必过于担心数据会丢失的问题(看看你的上古种子还能不能下载)

如此一来,我们便解决了交易中的部分取决于信任的问题,的可是单单去中心化对我们来说还很不够,因为这样的机制还很不安全,很不完善,于是我们看到另一项技术。

1.3 区块链

1.3.1 概述

这个词定然是众多读者耳熟能详了。因为它实在是太频繁地出现在我们的视野里。尽管名字很高端,但它的原理实际上十分的简单,甚至可以用粗暴来形容。

译:
Block:区块
Prev Hash:前一区块的随机散列
Nonce:随机数
Tx:交易信息

如上便是一个简单的区块链的节选,我们可以简单地将区块看作是一段时间内发生的交易的集合(是的区块链本身并不记录用户的余额而是记录每一笔交易,尽管记录余额非常符合我们的逻辑)。所以说区块链我们可以将它看作为是账本,每一个参与到这个网络中的人,都维护着这么一份相同的账本,一旦某个节点上发生了交易,就相当于站在原地大喊告诉其他的节点:“我特么刚刚找李四买了一个牙刷!三块钱!给我记上!”,然后旁边的节点收到并验证了这项交易的有效性后,再站起来对旁边喊:“那货刚刚找李四买了一个牙刷!三块钱!没问题你们记上吧!”,于是数秒内,全球的节点都能同步这样的一个交易,也就相当于这个交易被整个网络认可了。当然,单单这样的系统是非常不可靠不安全的。其实区块链本身是一个链条。但它加入了一些工具,使得它具有了不可修改,难以被攻击的特点。如何实现的呢?这需要我们来了解一下图中的“随机散列”以及“随机数”这两个元素。

随机散列是标注区块唯一性的一个指纹(哈希值)(详细了解请参阅1.3.2小节),它基于区块的内容来计算,函数表达为y = hash(block),每一个区块都几乎可以被认为指纹会不一样。不管区块被进行什么样的修改,只要进行了修改,随机散列就可以被认为会发生改变,甚至可能是改变得面目全非,这样的数字指纹非常难以被逆向解密,甚至可以说几乎是不能被解密(虽然现在的一些网站已经提供了一些解密字典来暴力破解,但对于复杂的数据,解密仍是机会渺茫的),所以一旦区块被篡改,那么后面的节点保存的它的哈希值则是不正确的,这将会导致这样的区块不被周围的节点认可,也就是无效的区块。每一个排在后面的区块,都会存储前一个区块的随机散列值用于校验有效性。如此一来,一环套一环,想要修改了区块链中的某一个区块,就意味着接下来的区块全部都需要修改。

说点什么

avatar
  订阅  
提醒

扫码二维码快速访问本页

初窥比特币,革命性的时代骄傲 – 起航天空