理解比特币白皮书
看了中本聪2008年写的比特币白皮书,有种相见恨晚的感觉,理解BTC后发现这个东西确实存在极大的合理性和价值,去中心化的思想非常美妙。详细文档可看李笑来的github。
文中的具体细节不再赘述,主要记录一些我阅读过程中思考以及理解的要点。
数字货币的概念
文中将一枚数字硬币定义为a chain of digital signatures,即一串数字签名,并且示意图如下:
上图可以这么理解,假如所有者1持有一枚数字货币(即所有者1签署私钥后的数字签名),他向所有者2发起一笔交易,也就是将该枚数字货币传递给所有者2,该过程其实就是在所有者1的数字签名后加上两个信息:
- 该枚货币的上一次交易hash。每一枚数字货币都有一个block(区块,这也是为啥被称为区块链),block记录该枚货币的历史交易信息,这个block的概念很像数据结构中的链表,也是去中心化的核心,下文会讲。
- 所有者2的公钥。这样所有者2就可以验证该枚货币的所属权,再利用自己的私钥进行签署加密。
这个过程总结一下,其实就是一枚货币在一个block上反复传递,通过在数字签名上增加信息来更改所有者。而一个block的初始(第一笔交易)是一个特殊交易,他会生成一个新的数字硬币,该枚硬币属于区块的生成者,也就是所谓的矿工。
显然在这个过程中,我们无法确保double-spend(双重支付)问题,即所有者1将他持有的这枚货币给多个人,因为收款人无法确认自己收到的货币是否在之前已经被使用。于是,中本聪就提出了下文的区块链机制。
区块链机制
整个区块链网络的运行机制如下:
A. 所有新的交易向所有节点广播。
节点就是旷工,负责做计算和存储。
B. 每个节点将新交易打包到一个区块
节点收到交易信息后,基于交易的货币会分发到对应的区块。
C. 每个节点开始为此区块找一个具备难度的工作证明
工作证明(proof of work)是一个很有意思的想法,目的是通过增加计算量的方法降低信息的传输速率,从而提高作弊节点(攻击者)的计算成本。具体过程为: 不断在区块之中增加一个随机数(Nonce),直到一个满足条件的数值被找到。这个条件就是,这个区块的哈希以指定数量的 0 开头。一旦 CPU的耗费算力所获的的结果满足工作证明,那么这个区块将不再能被更改,除非重新完成之前的所有工作量。随着新的区块不断被添加进来,改变当前区块即意味着说要重新完成所有其后区块的工作。可以发现该过程的计算很复杂,但是其他节点验证结果只需要一次运算即可。
工作证明同时解决了如何决定谁能代表大多数做决定的问题。如果所谓的“大多数”是基于“一个IP地址 票”的方式决定的话,那么任何一个可以搞定很多IP 地址的人就可以被认为是“大多数”。工作证明本质上来看,是“一个CPU一票”。所谓的“大多数决定”是由最⻓链所代表的,因为被投入最多工作的链就是它。如果 大多数 CPU 算力被诚实的节点所控制,那么诚实链成⻓最为迅速,其速度会远超其他竞争链。为了更改一 个已经产生的区块,攻击者将不得不重新完成那个区块以及所有其后区块的的工作证明,而后还要追上并超过诚实节点的工作。后文展示为什么一个被拖延了的攻击者能够追上的可能性将随着区块的不断增加而指数级降低。
其他资料中显示最开始的时候,BTC网络一次hash零运算需要花费十分钟,也就是每十分钟产生一枚数字货币。但是该运算时间可以通过控制0开头的数量来控制,BTC网络预计总共产生2100w枚BTC,截止到目前1960w枚(2024-02-18)。
D. 当某个区块找到其工作证明,它就要将此区块广播给所有节点
当某个节点运算成功后,会把区块结果传递给所有节点。
E. 众多其他节点当且只当以下条件满足才会接受这个区块:其中所有的交易都是有效的,且未被双重支付
其他节点验证所接受的区块,验证两个部分:
区块中的所有结果,hash运算是正确的
通过数字硬币的每笔交易时间戳来判定,当且只有最早的一笔交易有效,来保证未被双重支付。
F. 众多节点向网络表示自己接受这个区块的方法是,在创建下一个区块的时候,把被接受区块的哈希当作新区块之前的哈希
其他节点接受了区块后,就会将被接受的区块hash当做下一个区块前的hash,也就是说这个过程中的区块链是不断增长的。
在整个过程中,还有个很重要的机制是:节点始终认为最⻓链是正确的那个,且会不断向其添加新数据。若是有两个节点同时向网络广播了两个不同 版本的“下一个区块”,有些节点会先接收到其中一个,而另外一些节点会先接收到另外一个。这种情况下,节点将在它们先接收到的那个区块上继续工作,但也会把另外一个分支保存下来,以防后者成为最⻓链。当 下一个工作证明被找到,而其中的一个分支成为更⻓的链之后,这个暂时的分歧会被打消,在另外一个分支 上工作的节点们会切换到更⻓的链上。
攻击成本计算
这一部分涉及一些数学概念,例如泊松分布等,具体计算公式不再赘述,我大致梳理下原理:
- 将网络中的诚实节点构成的链称为诚实链,攻击节点构成的链称为攻击链,因为网络机制中节点始终会认为最长链是正确的,所以如果攻击链产生的区块长度大于了诚实链,诚实链才会被攻击链取代,整个网络就被攻击成功了。如果攻击链的区块长度小于诚实链,那么网络就是安全的,用户在确认支付时候,始终是来自最长链上的信息。
- 只有当攻击者的节点数量大于等于整个网络节点量的51%时,攻击才有可能成功,因为攻击节点占大多数的话,攻击链的工作证明就会越快,攻击链找到下一个区块的概率就会高于诚实链找到下一个区块的概率,才有可能让攻击链的长度大于诚实链。显然,这种情况是基本不可能发生的,攻击成本实在太高了,并且随着btc网络规模的扩大,攻击成本越加扩大,并且假设攻击者真能做到这个规模,还不如直接挖矿。
BTC价值总结
总结有几大优势:
- 一个不收第三方机构监管,无视国界的金融工具。这个特性注定了其价值,因为在货币失去金本位之后,任务事物都可以成为货币,支撑货币的就是公信力,每个国家的货币支撑就来源于政府公信力,而数字货币则无需任何国家干预,成为了一个无国界的自由货币。
- 去中心化的机制保证了没有人可以控制BTC,并且保证了交易的安全可靠性。
- 稀缺性导致了没有通货膨胀的可能性,BTC的总量限制为2100w枚,因此其实预见到BTC的价值只会越来越高。