[Paper Weekly外传]比特币的诞生:Bitcoin A Peer-to-Peer Electronic Cash System

本文会提到什么

  1. 比特币是什么?
  2. 比特币系统是如何运转的?
  3. 比特币是怎么交易的?

本文不会提到什么

  1. 到哪儿买比特币?
  2. 怎么挖矿?
  3. 现在买比特币会不会暴富?(如果有内幕消息欢迎私信笔者:)

最近一个非常流行的概念--“比特币”,朋友圈中充斥着各种“某人”通过投资比特币实现了财富自由这样的消息。虽然这种天上掉馅饼不劳而获的新闻过于流行时总是让人嗅到阴谋的味道,但是笔者还是怀着看完论文就可以一夜暴富的理想通读了一遍论文,嘿嘿嘿嘿嘿...
首先比特币能火并不是没有道理,这一切都要依赖于它背后有着一套比较完善的理论。那么这次介绍的这篇论文是Satoshi Nakamoto(中本聪)关于比特币理论基础的奠基之作:Bitcoin: A Peer-to-Peer Electronic Cash System。


王霸天同学的奇思妙想

比特币最简单的解释就是这是一个“分布式的记账系统”。
假设末日降临世界上就剩了三个人,张三李四和王霸天。为了生存他们之间总是要交易一些东西,但是完全的以物易物实在笨拙(比如说张三养了只羊想和李四交换鸡蛋,但是李四刚好没有鸡蛋时,交易就不能进行),只有三个人的话还要制作货币实在太麻烦了。于是聪明的王霸天同学就想出了一个主意:我们三个人可以使用记账的方式交易。
一天,王霸天拿出一堆账本发给三个人,说:“我有一个想法来解决货币的问题,以后把每一笔交易都记录在账本上,以后所有的交易我们都告诉其他人,每个人都把这笔交易抄在自己的账本上,那样的话每个人有多少钱可以用只需要把账本重新过一遍就知道了。”
张三李四不解:“那我们的钱从哪里来呢?”
王霸天说:“记账也是一种劳动嘛,以后每次都给记账最快的那个同学账上多记一块钱作为奖励,直到账面上流通了2100万块钱,记账同学可以用这些钱来换东西。你看,趁你俩不注意我已经记了好几笔账了,现在我快有100块钱了。”
张三和李四压着怒火:“你这么狡猾,万一你做假账怎么办?”
王霸天笑了一下:“咱们所有人手上都有一份账本,我们想确认谁有多少钱时,把每个人手上的账本摆到一起投票,少数服从多数,这样总没得说了吧。”
张三和李四还想反驳,但是一时找不出什么理由,只能暂时答应下来。
于是,一种新的货币系统--比特币的雏形就诞生了。

恩...比特币总的来说就是这么一个东西,如果不想关注具体细节,那么接下来的内容都是废话,请直接跳到最后的问题讨论。

交易

首先,要明确的是,在比特币系统中的比特币到底是什么。
我们将一种数字签名(digital signatures)的链(chain)定义为一种电子货币。每一个数字签名代表了一次交易(transacitions):当数字货币的归属发生转移(所有权从前一个拥有者转移到后一个拥有者)时,通过上一次交易和下一个拥有者的公钥(public key)生成一个哈希散列作为签名添加到货币的末尾。每一次支付都可以通过签名确认电子货币的所有权(即是否到账)。
但是,这样做存在的问题是没有办法验证货币的拥有者是否进行了双重支付,即某一个电子货币的链条是否产生了有歧义的分之。一种解决方式是选择一个可以信赖的机构,对每一次交易的双重支付进行检查。每一次交易中,电子货币不是直接改变所有权,而是被归还给造币厂,再由造币厂产生电子货币,以此来防止双重支付的发生。在这种情况下,所有的交易依然是“中心化”的,即一定要有一个受信任的机构成为造币厂,就像是银行所扮演的角色。
如何才能防止双重支付并且排除第三方机构的干预呢。一种方法是将所有的交易信息向系统中的结点“公开宣布”,并通过一种机制保证交易历史序列的唯一性。一次支付行为在系统中大多数结点都认可时,才被认为是有效的。这种方式就像是所有交易的参与者都拥有自己的账本,上面记录着迄今为止的所有交易,每一笔交易都向所有的参与者公开,参与者通过一定的方式更新账本,当一个交易发生时,收款人向所有的参与者确认,当交易与大多数参与者的账本不产生矛盾时就为有效交易。


交易

任务量证明

在本文介绍的电子货币系统中,所有的交易数据以区块(block )的形式存储。本文提出了一种时间戳服务器(timestamp server)机制。时间戳服务器将存储数据的区块打上hash时间戳,并向系统内结点广播此hash值。这样的时间戳是该区块数据在某时间点存在的证明。每一个时间戳都包含了之前时间戳的hash值,以此形成一条链(chain)。


timestamp server

为了构建一个点对点的分布式时间戳服务器,工作量证明机制被引入到了该系统中。工作量证明系统引入了在哈希时对一个特定值的扫描(例如一个以一定比特0开始的SHA-256码)。随着所需0比特数的增长,要找到这样一个值的工作量呈指数级增长,但是要验证这样的值只需要进行一次哈希。


工作量证明机制解决了两个问题:统一交易历史序列以及如何定义大多数节点。

  • 统一交易历史序列:对于特定的block,时间戳服务器必须不断尝试找到一个随机数,使得将该随机数引入block后,哈希值出现足够比特数的0。对于特定的block,能满足条件的随机数也是不同的,因此如果要篡改block中的内容,需要重新去完成相应的工作量。又因为对应的区块包含了前一个区块的哈希散列,所以还需要将该区块之后所有区块的工作量全部完成才能形成一条与诚实区块链长度相当的链条。
  • 如何定义大多数节点:如前文所说,如果把比特币看作一个分布式账单系统,那么在比特币系统中,为大部分参与者所接受的账单版本才能去验证交易的有效性。那么如何去定义“大多数”,即如何决定投票权。一种方式是“一IP一票”,但是这样的方式在某些人获得大部分IP分配权时其公平性被破坏,比较容易受到干扰。而工作量证明其正真的内涵是根据计算力分配票权,当大部分计算力掌握在诚实的节点手中时,正确的链条将以最快的速度延长。而企图篡改交易内容的攻击者将很难追上正确链条的延长速度,由于在认证交易时,只采用最长的链条最为基准,攻击者的行为就会失败。攻击者攻击成功的概率,随着落后链条的总长度指数级衰减。综上,哪一个区块链为有效区块链是由参与的节点的计算能力投票产生的。

由于参与区块网络的总的计算量是变化的(原因如硬件计算速度的提升,参与计算的节点数量等),为了保持区块产生的速度,随机数的生成难度(如哈希值零的位数)是随着计算能力的滑动平均变化的。

网络机制

在该系统中,所有参与的节点组成一个网络。网络按照如下机制运行着:

  1. 所有的新交易都向所有节点广播。
  2. 所有的节点都将收集到的交易信息封装为一个区块(block)。
  3. 所有的区块试图找到它所拥有区块的工作量证明(随机数)。
  4. 当一个节点完成工作量证明时(尝试出随机数),会将完成的区块对所有节点进行广播。
  5. 其他节点在确认了区块中的交易信息是有效的并且第一次发生后,接受该区块。
  6. 当一个节点接受一个区块时,他会采用该区块的散列值作为产生下一个区块的前置(previous hash),重新开始尝试产生新的工作量证明。

所有的节点都将最长的区块链作为正确的链条,并根据该链条尝试产生新的区块来延长该链条。当“歧义”产生时,即两个节点几乎同时完成工作,产生了两个不同版本的区块时,不同的节点接收到两个不同版本的区块的先后顺序可能出现差异。那么约定,所有的节点都工作在他最先接受的区块上,并且存储另外一个区块以防止该区块变成最长区块。此时,不同的节点工作在了不同的区块链上,但是当新的工作证明产生时,总会有一条链条成为最长的链条,那么,其他节点又重新回到新的链条上工作。
交易信息不需要被广播到所有的节点中去,只要它被广播到了足够多(有能力生成新工作量证明)的节点后,他总会被整合到新的区块中。而当某一个节点发现自己缺失了区块时,它也可以发起请求下载缺失的区块。

奖励

接触到比特币的人对“挖矿”这个词应该不会太陌生,那么广大的矿工们挖到的比特币是从哪里产生的,这里就要说到比特币系统的“奖励”机制。在比特币系统中,区块中的第一笔交易被特殊化为:将一个新的比特币的拥有权修改为该区块的创建者。通过这种机制,鼓励节点为了得到新的电子货币而加入到网络中。同时实现了一种去中心化的电子货币发行方式。通过消耗资源(如电力、时间和硬件设施)来是新的电子货币加入到系统中的情形,就像是人类挖掘金矿来讲新的黄金加入流通一样。
奖励机制的另外一个基础是“交易费(transaction fees)”。当一个交易的输出价值小于它的输入价值,那么其中的差额就作为交易付费被添加到存储该笔交易的区块中。当流通中的货币存量达到一定量级时,奖励机制就可以完全依靠交易费来实现,同时,由于不再发行新的比特币,该流通系统完全没有了通货膨胀。
由于奖励机制的存在,企图通过参与网络获利的人面临着两种选择:一是诚实劳动来获得奖励;二是尝试攻击修改交易来使他付出的钱重新回到他手中。就像前面介绍的,第二种方式有着很大的难度,同时攻击行为也会破坏整个网络的信用反过来侵害攻击者的利益基础。所以,奖励机制也鼓励了通过诚实劳动来维护系统公平的行为。
现阶段比特币矿工所做的事情其实就是帮助比特币系统“记账”,努力成为第一个工作证明的提交者,从而获得对区块产生时新电子货币的所有权。另外提一下,比特币的总共有2100万枚,这个总量是限定的。

压缩方式

由于交易也是链式的,那么其实在进行验证时,只需要验证最近的交易信息,多余的交易信息被丢弃。为了保证在丢弃信息的同时,区块的信息不被修改,交易信息以默克尔树(Merkle tree)的形式进行组织,区块只保存了根节点的随机散列。那么分支节点的信息就可以随意裁剪而不更改区块的数据。


默克尔树

支付验证

在支付验证时,收款方需要验证的是输入交易的有效性,从而确认所有权。用户不停地向网络询问,从而确信自己存储的工作量证明链(区块链)是最长的工作量证明链(区块链),并找到将该交易封装到区块中的默克尔树分支。一个节点无法独自验证交易的有效性,但是通过回溯,他可以找到某一个节点接收过该交易的证据,同时最长链条也验证了整个网络接收了这笔交易,那么该笔交易就是有效交易。


交易验证

比特币如何找零

黄金之所以能够成为货币一个很关键的优势就是黄金是便于分割的。之前所说的比特币都是一枚一枚产生的,如果他不能能够进行有效的价值分割,那么也很难成为一种有效的货币。文中提到的方法是将每一笔交易设计为多输入多输出。一个交易的输入为一个价值较大的前次交易,或多个价值较小的前次交易,输出为两个:支付输出和找零输出。由此,价值被有效的分割开来,同时每一笔交易的验证也只需要去查找与这笔交易相关的交易。

比特币系统的机制基本就是前文这些,剩下的是我在最初看到比特币这个事物时脑袋里的一些问题,和读完论文后对这些问题的一些看法。

问题

  1. 比特币是不是一个骗局?
    答:目前,从理论的角度,不是。比特币是一种设计非常精妙,拥有替代法币潜力的系统。但是从投资的角度,没准。
  2. 比特币为什么可以被当成一种货币?
    答:比特币的系统机制决定了它的一些特点:可验证的所有权归属、稀缺性(总量固定)、流通性。这些特性只要有了,只要你“愿意”就可以成为一般等价物。
  3. 比特币的价值基础是什么?
    答:比特币的价值基础几个方面:一方面来自于信念,即大家相信这个东西有成为一种货币的潜质(比如我);另一方面来自于投机倒把的欲望,比如中国大妈会买;还有一方面来自于它确实有它的优势,比如说国际转账,比如说洗黑钱。
    总之,比特币的价值来自于大家都愿意用真钱去换虚拟的比特币。
  4. 比特币的风险有多大?
    答:比特币的风险我觉得分为两种:
    一是比特币系统的风险,有很多因素会导致比特币系统失效,比如说比特币所依赖的密码理论被破解时,比特币将失效;当攻击者掌握了超过50%的计算资源伪造交易时,比特币会失效等等。
    二是比特币的投资风险,即人们认为比特币值多少钱。当大多数人都看涨比特币时,拥有者就会持币观望,市场上可流通的比特币稀缺,比特币就会继续上涨,但如果大多数人都看跌比特币时,持有者大量抛售,比特币就会疯狂下跌。
    其实,我还是比较看好比特币的理论,即比特币系统出现风险的概率比较低。而投资风险还是很大的,特别在比特币价值总量没那么大时,人为因素可以轻易控制涨跌,请怀着跟庄家喝喝汤的心态参与,并且做好随时被收割韭菜的心理准备。
  5. 现在去当矿工能赚钱么?
    答:不能,请别去作死。专业矿池的硬件设备效率是你cpu、gpu的成百上千倍,不专业只会亏。
  6. 现在去买比特币能一夜暴富么?
    答:不好意思,我也想知道。如果有内幕消息请联系我。

你可能感兴趣的:([Paper Weekly外传]比特币的诞生:Bitcoin A Peer-to-Peer Electronic Cash System)