【比特币专题01】白皮书导读

本文最后更新于:2023年12月17日 下午

论文概述

论文地址:https://bitcoin.org/bitcoin.pdf

由于在“基于信任”模式下的交易,存在交易成本增加、限制了交易额的大小即阻断小额交易、商家欺诈行为等问题,本论文提出解决方案即比特币,这是一个P2P分布式的电子现金交易网络,依靠hash和加盖时间戳,以及工作量证明机制等手段,解决了双重支付问题,并在极大程度上保证了交易的有效性、正确性、抗伪性。论文中也详细介绍了实现所用到的技术、机制、原理等。

主要收获

个人感觉最大的收获就是对比特币的运行机制有了大体的认识,了解了整体流程,虽然可能一些技术的实现细节还是不够明朗。下面就是我对其中各个部分的认识和理解。

  • 在引言介绍部分,引出了比特币的产生背景,基于第三方机构的交易存在的种种问题,并提出比特币这一解决方案。然后接下来的各个章节介绍比特币涉及的主要关键技术。
  • Transactions部分描述了交易是如何被记录的,其中运用了Hash和公私钥,但仅仅记录是无法验证交易的有效性,即存在双重支出问题。
  • Timestamp Server部分描述了具体每个节点(服务器)的工作,即对形成的区块进行Hash,并加盖上时间戳,根据时序进行排列形成链。
  • Proof-of-Work部分描述了进一步说明Timestamp server的实现,即使用工作证明机制,通过找到满足条件的nonce来获得记账权,因为寻找这个nonce依靠CPU算力,CPU算力越高找到的概率越大,即one-CPU-one-vote规则,解决了多数决策中的代表问题。同时这样的方式,也保证了如果攻击者想要篡改某个区块,就先得把这个区块之后的区块都进行修改,而每个区块都是需要靠大量CPU算力来找到nonce,获得记账权进行修改,这样的成本是很大的。
  • Network部分则是描述了比特币网络的工作流程。其中提到的一个很重要的原则就是,所有人是默认最长链是最正确的。而正是有这一前提,才有了只要网络里超过51%的算力属于诚实节点,就能保证区块链里交易信息的正确性,因为诚实节点的算力超过一半,算得比攻击节点快,那么最长链肯定属于诚实节点一方。
  • Incentive部分说明的是激励机制,给予抢到记账权的节点一定的比特币,正是有这样的激励机制,各个节点才会愿意投入算力去争夺记账权,也才能是之前的工作量证明机制正常运行。还有一种就是以交易手续费的方式进行奖励。
  • Reclaiming Disk Space部分说明区块链可以通过Merkel Tree技术方法来压缩数据,减小空间存储。
  • Simplified Payment Verification部分则是说明了如何来检验交易的有效性,因为基于之前最长链总是正确的原则, 因此只要向网络上的节点进行询问,找到最长链就可以验证所有的有效交易记录。
  • Combining and Splitting Value部分描述的是形成交易的细节,是可以有多个输入的,而输出最多是两个。
  • Privacy部分则是说明比特币网络中的隐私相关问题。
  • Calculations部分用具体的数学计算来说明了,当一个攻击者在落后最长链Z个块的情况下,想要追上最长链的概率。结果表明,当落后的块数越多,追上的概率就越小,也就保证了区块链的安全性和稳定性。
  • Conclusion部分则是最后进行了总结。

存在疑问

  • 问题1:怎么理解数字货币中的double-spending problem?

用数字货币交易时,是用先前的交易和下一个拥有者的公钥做Hash,然后用拥有者的私钥进行签名形成这一次交易,比如这次交易A支付给B 1个电子货币,然后A的余额只有1个电子货币,如果没有第三方机构进行监管,确认这个电子货币已经交易出去了,那么A可以继续拿这1个电子货币继续交易,而接受者也无法确认这1个电子货币是否真正的属于他。也就是说,没有第三方监管机构,也没有引入区块链P2P这个网络的话,相当于就没有办法确认交易的有效性,这里产生的交易仅仅起到一个记录的作用。

交易链示意图

双重支出问题

  • 进一步,那么比特币是怎么解决这个问题的呢?

比特币建立起了一个用工作量证明机制的P2P网络,网络上的节点都可以进行记账(也就是记录交易信息),记账的方式是基于区块链技术,区块上记录着一段时间内的交易信息,然后按时序用链串联起来,就有了所有的交易信息;同时最长的区块链是被网络上的节点所共同认可是正确的,即相当于第三方监管的确认作用,证明某次交易有效。

用上面的例子继续说明A的余额只有一个,然后他又同时和B、C进行交易,这两条交易信息传播到网络上,各个节点进行记录。有节点先收到A给B一个比特币的消息,他们检查余额之后会自动忽略另外一条交易消息(这个检查应该是基于他们当前的链?);同样,会有先收到A给C一个比特币消息的节点,在检查余额之后也会自动忽略另外一条消息。接下来算力最高的(CPU最多的)节点获得记账权,把他记录的区块加到主链上,然后网络上其他节点都会以主链上的交易信息为准。如果放入主链的交易信息是A转给B一个比特币,那么B将会获得比特币,交易的有效性得到确认;同理,如果放入主链的交易信息是A转给C一个比特币,那么C将会获得比特币。

区块链解决双重支出问题

  • 问题2:不过这样又引出一个问题,这个主链是怎么确定下来,或者说找到的呢?是假设大部分节点都是有着相同的最长主链,然后直接在本地的区块链上加上最新的,然后把新产生的区块信息广播出去?然后再根据最长主链正确性的假设前提,其他节点根据该最长主链更新本地的区块链

  • 问题3:在上面的例子里,还有一个问题,怎么去检验一个交易里付款者的余额?或者说怎么找到该付款者之前的所有交易记录?用公私钥的话好像不太行,因为每次都可能变换。还是说这个账户是可以直接找到的,那隐私性是怎么保护?

  • 问题4:文中的网络部分提到了容错性,即有的网络节点可能会丢失之前的区块信息,那么这些节点该怎么找到当前的最长主链?

    • 我理解每次传播的区块都是最新的区块,节点会因此意识到自己丢失了区块信息(这个怎么意识到也是个问题,用最新区块里的的prev hash来验证?),那么怎么来获取丢失的区块信息呢?是从最新区块广播节点那拉取区块吗?
  • 问题5:Merkel Tree剪枝压缩的具体实现

  • 问题6:论文通篇介绍了比特币的实现原理,那么比特币有什么问题,缺点呢?

  • 问题7:在存储部分提到,因为Merkel Tree的技术,存储并不是问题,那么有没有可能用优势来弥补劣势,像是空间换时间?

所思所感

  • 比特币本身没有价值,但是却有着无比昂贵的价格,甚至有大量的电力、算力耗费在这上面,进行所谓的“挖矿”,从中获得真实的金钱财富,这对我来说有些不可思议,难以理解。我自身也说不太清楚,可能这是个哲学问题?一个从计算机里产生的电子货币,对现实世界没有实质性的价值或者说实用性,为什么却能被人们追捧,赋予了天价?把那些花费在找随机数、挖矿的电力和算力用在更需要的地方,会不会能创造有实际价值的事物?
  • 通过阅读本篇论文,了解比特币大致的工作流程,实现原理,也认识到比特币最大的特点就是去中心化,没有了第三方机构,改变以往“基于信任”的交易模式,或许正是这种去中心化的、隐蔽的并且可靠的交易方式满足了一定人群的需求(可能并不正当),逃离政府监管,以我们的国情来说,这是不可接受的,对大部分人或许也不好理解。但是区块链这种技术,这种去中心化的网络不一定要落地在电子货币里,应该会有更广阔的应用场景,也需要我自己再学习了。

【比特币专题01】白皮书导读
https://2017zhangyuxuan.github.io/2021/10/16/2021-10/2021-10-16 比特币专题01-白皮书/
作者
Zhang Yuxuan
发布于
2021年10月16日
许可协议