比特币的逻辑 | 猿创征文

Posted 一头小山猪

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了比特币的逻辑 | 猿创征文相关的知识,希望对你有一定的参考价值。

写在前面:博主是一只经过实战开发历练后投身培训事业的“小山猪”,昵称取自动画片《狮子王》中的“彭彭”,总是以乐观、积极的心态对待周边的事物。本人的技术路线从Java全栈工程师一路奔向大数据开发、数据挖掘领域,如今终有小成,愿将昔日所获与大家交流一二,希望对学习路上的你有所助益。同时,博主也想通过此次尝试打造一个完善的技术图书馆,任何与文章技术点有关的异常、错误、注意事项均会在末尾列出,欢迎大家通过各种方式提供素材。

  • 对于文章中出现的任何错误请大家批评指出,一定及时修改。
  • 有任何想要讨论和学习的问题可联系我:zhuyc@vip.163.com。
  • 发布文章的风格因专栏而异,均自成体系,不足之处请大家指正。

比特币的逻辑 | 猿创征文

本文关键字:比特币、区块链、真实性、合法性、持续性

文章目录


特别说明:本文由博主与区块链博士好友交流后共同撰写,大家感兴趣可以加入文末CSDN官方粉丝群。

一、数字货币与比特币

作为区块链技术的重要起源和标志性应用,比特币在其发明后的数年中,被无数人反复研究和讨论。虽然比特币本身的价值和发展,在十年的时间中经历了无数波折与争议,但中本聪关于比特币思想的论文——比特币白皮书,无疑在当时和后来,都有着巨大的影响和研究价值。
在后来的发展中,项目方往往以“数字货币”来作为自己项目的定位。甚至基于“数字”的外延,(比如“数字经济”“数字社会”),有的研究者提出了“币改”、“赋能”等进一步的概念。然而,追本溯源,在比特币白皮书中,其实是以“电子现金(Electronic Cash)”作为比特币的定位。这其中一个相当重要的区别就是,数字货币的概念,往往需要一个中介,或者为系统提供服务的中心服务器。在此我们可以类比支付宝,支付宝可以为你提供账户的余额信息,并验证和确认两个账户间的交易信息。只要支付宝提示支付到账,那么收款方可以完全相信,这笔钱自己一定能够拿到,付款方不会有机会抵赖,支付宝系统本身也不会作弊。反之,一个拥有一百块钱的用户,不可能把这一百块钱同时或先后付给两个收款方,从而导致两个收款方的权益受损。这种良好的支付系统的背后逻辑,是系统本身需要依赖于一个可靠的平台作为中介,这个平台可以保证用户的权益。

而在比特币白皮书中,指出了这种基于信用中介的支付方式(trust based model)的弊端——无法实现“不可逆的交易”(non-reversible transactions)。中本聪认为,在贸易过程中,很多服务和商品是无法退货的,如果支付本身不能做到不可逆,那么这种支付方式就必须要有很强的信用中介来为交易提供背书,从而增大交易的成本,并且限制了实际可行的最小交易规模。这一观点,也被后来人称为“去中介化”思想,并进一步阐发为“去中心化”思想。
而有趣的是,在实际交易环境中,有一种交易方式是可以实现消除中介的交易方式的——现金支付。交易双方一手交钱一手交货,不用担心支付回滚,也不需要第三方平台担保。这也是中本聪将“比特币”命名为电子现金的重要原因。
基于对一种时序上不可逆的电子现金的设计需求,中本聪设计了基于时间戳的机制。这个“时间戳”,后来也被称为“区块高度”,即:在第n个区块上被确认的交易,在第n+1个区块起的账本状态中,都是被认可的,不会被撤销。这样的设计,实现了一种按时序进行交易确认的数据记录方式,同时,每一个“时间戳”,也形成了不同的区块。
然而,这种看似简单的记录方式,(也就是被后来称为“区块链”的账本记录方式),如果希望保证系统运行的一致性和鲁棒性,还有以下几个问题需要解决。

二、被时间戳确认的数据的真实性

简单来说,第n+1个区块起,前n个区块的记录内容都是被确认的,但是怎么保证这些被确认的交易是“当时真的被确认了”,而不是“后来修改的”。
对于这一问题,中本聪采用的方案是密码学中经典的Hash加密算法。Hash加密算法的重要特征之一是局部敏感—>即如果对原文局部做一点点的改动,就会导致密文(hash值)完全变化。中本聪利用了这一点,将每一个区块的整体做一个hash,把hash值放在下一个区块中。这样,如果第m个区块所记录的交易被修改,那么第m个区块所生成的hash值,会与第m+1个区块中存储的“第m个区块的hash值”不一致。如果想要同时修改第m+1个区块中存储的“第m个区块的hash值”,那又会导致第m+1个区块的hash值与第m+2个区块中的hash值不一致。因此,各个区块被以一种锁定的类似于“链”的结构,按照时序排列起来,并逐次连接。这也是后来这种数据记录方法被称为“区块链”的原因。

三、微观来看如何保证每一笔交易的合法性

在任何一个系统中,肯定存在希望借助系统漏洞进行牟利的用户。在比特币这样的去中心化交易系统中,怎么保证每一笔被确认的交易都是通过校验的,以及怎么校验一笔交易的合法性,是一个亟待解决的问题。

1. 保证每一笔被确认的交易都是通过校验的

对于这一问题,中本聪设计了“对等服务器”的网络结构。也即,虽然比特币的系统摒弃了传统平台的中心化服务器设计,但是比特币系统并不完全是p2p的,在系统中合法存在多个甚至大量服务器,这些服务器拥有较高的计算能力,能够对每一笔交易的合法性进行快速的计算和检验。这一点虽然在比特币白皮书中没有单列一章,(可能是因为其设计较为直观,不需要在白皮书中专文阐述),但是在比特币的运行过程中起到了较为重要的作用。
在比特币中这些服务器往往被称为“全节点”,它们共同支撑并保证系统的良好运行和快捷服务。这一设计模式在后来产生了巨大的影响——尤其是在山寨币被各国打压之后——后继者们将“去中心化场景中全节点的多方参与模型”抽取出来,辅之以各种机制设计,成为了区块链发展过程中重要的一个分支——不依赖于货币而存在的联盟区块链。

2. 如何校验每一笔交易是不是合法

对于这一问题,中本聪则是采用了“基于UTXO的交易机制”和“基于默克尔树的交易验证方法”共同作用。UTXO机制保证了某一笔钱(也就是第i笔交易的输出)只能被花费一次,花费一次之后,它就作为本笔交易(第j笔交易)的输出而保存下来,下一笔交易如果想花费剩下的钱,只能去花第j笔交易的输出,而不能再次花费第i笔交易的输出。
这种交易方式虽然看似复杂,但是其设计却简化了一个关键过程——“交易检验”,也就是说如果系统需要检验本笔交易是不是合法,只要检验本笔交易中,负责付钱的那个“输入”,同时也是某一笔前置交易的“输出”,是不是已经被花过了。而默克尔树进一步地加速了这个检验过程,它能够快速地提供或定位某笔交易的地址,从而便于检查该笔交易的对应输出是否被花过。

三、宏观来看如何保证每个一区块的合法性

既然交易是不可逆的,不可回滚的,那么也即意味着,在区块链系统中,交易一旦打包进入区块,哪怕是非法的,也只能被认可。(虽然后来以太坊背弃了这一初衷,在the DAO事件中回滚了交易状态)。这一设计显然带来了某种“机会”:如果某一用户强行记录一个非法交易——比如悄悄给自己转一笔钱——那么这个被记录到区块中的交易就生效了。
对于这一问题,中本聪的设想是一种民主式思维的解决方法——one CPU one vote,即算力越大话语权越大。(当然后来CPU算力被GPU取代)。中本聪认为,不诚实的“全节点”,不会被大多数“人”所认可。大多数“人”所认可的账本,才是正确的交易数据。为此,中本聪引入了“POW”算法,设计了一种挖矿机制:想要把你认可的交易记录到区块中,你要先证明你不是批量生产的“小号”。虽然后来大多数人诟病“POW”挖矿机制对资源的巨大消耗,但是这种挖矿机制实质上体现了一种重要的信号博弈思想:参与者必须发布一种作弊者无法发布的信号,以证明自己是忠实参与者。在挖矿机制中,这种“信号”就是通过算力强行枚举获得的合法随机数,这一随机数证明了该节点确实是一个服务器式的全节点。
当然,这一机制也有一个问题:在完全去中心化的场景中,可能某一个周期内有两个甚至多个全节点获得了记账权。而他们所选择记账的内容又不一样,这就会导致系统内全节点的数据不一致。在后来的以fabric为首的联盟链中,这一问题得到了优化——通过中心化却无决定权的排序服务节点(orderer 节点)来解决。但是显然比特币的网络结构不允许这样的设计。在这里中本聪实质上采用了一种重要的分布式思想——尽管他没有在白皮书中详述——数据的最终一致性。虽然在网络中,由于地理位置、网络位置等因素,可能会产生区域性的差异,比如不同区域的节点所认可的已有区块不同,但是随着网络的演化,最终大家会采用链条最长的那个账本,并最终达成一致。这也是比特币软分叉的概念。

四、长期来看如何保证系统的持续运行

前文提到,在比特币中,系统的良好运行,依赖于全节点的忠实工作。而全节点想要运行,必须要参与“挖矿”,这种挖矿是要产生实际的资源消耗的。如果想要全节点保持忠诚,就必须补偿这些全节点的资源成本,否则,全节点最终必然走向减少甚至作恶。
在比特币中,中本聪采用了将货币发行与周期奖励相结合的方式。在每一个区块周期中,通过GPU计算获得记账权的全节点,可以获得一笔固定的比特币收入,按照中本聪的预期,这笔收入能够补偿该全节点的计算成本。当然,考虑到对通货膨胀的规避,中本聪采用了通货紧缩的货币发行方式,通过周期性的减半,来实现货币总量的可控。而根据中本聪在比特币白皮书中的阐述,由于每笔交易都有一定数量的手续费,因而即便在比特币被完全发行之后,忠实的全节点也能够通过手续费,继续维持良好的运行。
通过以上问题的解决,中本聪构建了一个简单粗糙,却在后续的十几年中被证明可靠的电子现金系统的完整运行逻辑。当然,在比特币中,有很多有意思的问题值得探究。比如比特币的走势、比特币的交易行为、比特币的地址关联聚类等。在此仅举一例已有成果较少的研究切入点:
比特币的重要设计之一,是基于共识过程的发币激励方式。在论文中,中本聪阐述,激励系统有助于鼓励节点保持诚实,假定一个贪婪的攻击者能够调集比诚实节点加起来还要多的算力,那么他会面临一个选择:要么将其用于诚实工作产生新的电子货币,要么将其用于进行双花攻击。根据中本聪的观点,按照规则行事,诚实地进行工作,是有利可图的。破坏这个系统会使其自身财富的有效性受损。

  • 这里就有一个很有意思的值得探究的点:破坏系统和遵守系统,到底哪个收益会更大?
  • 进一步地:是否存在某个状态,使得破坏系统和遵守系统的收益相等?
  • 再进一步地:如果这个临界状态存在,那么当前比特币的演化路径,是否在接近或者远离这个状态?如果接近或达到这个临界状态,那么是否表示比特币的系统存在巨大的风险?
  • 还可以拓展为:在与比特币类似的去中心化多方参与系统中,尤其是依赖于激励(如通证经济学)的系统,是否可以用某种无限期重复博弈的视角,去分析其安全性和系统演化方向?
    在比特币白皮书的最后,中本聪对这一问题进行了简单的计算,但是随着比特币的演化和比特币网络参与方的延展,这一问题也可能会出现新的变化。

扫描下方二维码,加入官方粉丝微信群,可以与我直接交流,还有更多福利哦~

以上是关于比特币的逻辑 | 猿创征文的主要内容,如果未能解决你的问题,请参考以下文章

从零开始学习区块链

如何防止double spending

以太坊的最全概念攻略解析与案例分享|猿创征文

比特币和区块链:比特币的共识机制

比特币2

p4.BTC-实现