THUBA专栏 | 《区块链系列课程》1.3比特币简介

原创 Zeo THU学生区块链

点击“阅读全文”,观看完整视频

https://www.bilibili.com/video/BV1nq4y1V7Hu/

  本系列课程是清华大学学生区块链协会THUBA推出,由PlatON赞助的区块链课程,涵盖了从区块链基础学习到深度原理研究等方面。

本系列课程从第一章区块链基础介绍开始,第三节是比特币简介。


图片

2009年1月3日,这天对于英国金融系统乃至世界的金融系统来说都不是一个好日子。席卷全球的金融危机正在蔓延,英吉利海峡也不能阻止,英国财政已经走到危机的边缘。

THUBA专栏 | 《区块链系列课程》1.3比特币简介

据泰晤士报头条报道: 

The Times 03/Jan/2009 Chancellor on brink of second bailout for banks

“财政部长正处于第二轮银行紧急援助的边缘”

同一日,中本聪(Satoshi Nakamoto)在位于芬兰赫尔辛基的一个小型服务器上挖出了上帝区块(创世区块):第一批比特币50个。将泰晤士报头条嵌在该区块中,历经十余年,再难抹去。不知道这是中本聪对银行为代表的旧金融系统的嘲弄,还是作为去中心化货币系统向中心化银行的亮剑,亦或,仅仅作为当天时间戳的证明而已。

这些都已不重要,重要的是,世界上出现了有史以来第一个不需要中心金融机构的货币体系。铸币、发行、持有、交易,人们从未如此自由地使用过货币!

比特币发展历史

隐藏在论坛中的宝藏——比特币的诞生

2018年11月1日,中本聪比特币创世论文《Bitcoin: A peer-to-peer electronic cash system》(《比特币:一种点对点的现金支付系统》)[1] 在隐秘的密码学讨论邮箱列表metzdowd.com发布。

发布之初,该文章并未引起波澜。而今天,这篇论文已经获得5187次引用,超过了99%的正式发表论文,引起了全世界范围研究者的关注。

新时代的曙光——比特币系统的启动

如序中提到,2009年1月3日,比特币系统开始运行。2009年1月12日,比特币系统中创世区块诞生后的第10天,第一笔比特币交易也出现了。

在第一个比特币交易中,中本聪发送了 10 比特币给密码学爱好者,哈尔·芬尼(Hal Finney)。这段时间内,他们之间还保持着密切的邮件通信,后来芬尼参与了比特币项目核心开发组。

这段时间,比特币虽然没有引起大众的关注,但是在小众极客圈子里已经开始挖矿和互相转账的实验,这群技术的狂热爱好者,为比特币系统的完善默默付出着。

史上最贵的披萨 —— 6亿美元

每年的5月22日,一小群“极客”却会庆祝一个冷门小众的节日——“比特披萨节”。这一节日的来源要追溯到2010年。

2010年5月22日,在比特币系统已经出现了一年以后,一个名为拉斯洛·汉耶茨(Laszlo Hanyecz)的程序员用10000枚比特币购买了两块价值25美元的约翰爸爸(Papa John)披萨(一说是价值25美元的披萨优惠券)。这项交易诞生了比特币第一个公允汇率0.0025美元/btc。

此时,一枚比特币折合人民币不足2分钱。在币价突飞猛进的时候,这段历史常常被人拿出来嘲笑一番。兑换的披萨也被称作史上最贵的披萨。如今,10000枚比特币的价值超过6亿美元!

不过Laszlo Hanyecz却说“我倒没感到特别沮丧,但比萨却真的很好吃”。无独有偶,Hanyecz在2018年2月又重新用比特币买了披萨,这次他花费的比特币要少得多:0.00649比特币,兑换了价值62美元的两块披萨。不知道这披萨有没有当年的美味呢?

天下何人能识君 —— 创世神中本聪

创建比特币系统的Satoshi Nakamoto(译名“中本聪”)始终隐匿在电子邮件和比特币论坛之后。从创世块开始,没有人能清楚地知道他掌握了多少比特币,但是所有人都认为这是一笔巨额财富。而明确属于他的地址,没有花费过哪怕一个比特币,所以也没有人知道中本聪到底是何方神圣。

2011年4月23日,中本聪发出最后一封电邮:“我已经开始干别的事了,Gavin和其他人会很好的接手比特币项目。”之后,比特币创世神彻底消失。

或许,他还在世界的某个角落关注着比特币。

或许,他用另一个马甲依然活跃在比特币社区。

THUBA专栏 | 《区块链系列课程》1.3比特币简介

好事者们纷纷猜测谁是真正的中本聪。最为公众所熟知的猜测发生在2014年3月6日。新闻周刊记者Leah McGrath Goodman发表文章称自己已经找到真正的中本聪,是一个居住在加利福尼亚州的日裔美国人,名叫多利安·中本聪。

除了名字相同以外,Goodman还找到了一些佐证,当Goodman在当面采访并提出比特币的问题时,多利安的回答看起来确认了其比特币之父的身份:“我已经不再参与它了,不能讨论它。它已经被转交给其他人。他们现在在负责。我已经没有任何联系。

然而在后来的正式访谈中,多利安否认了自己与比特币的全部联系,称自己从未听说过,只是误解了Goodman的提问,以为她问的是自己之前从军方承接的保密性工作。

当天晚些时候,中本聪本人也站出来否认。他在P2P基金会的账户在尘封五年之后发了第一条消息,称:“我不是多利安·中本聪。”[2]

2015年12月,《连线杂志》报道说澳大利亚学者克雷格·史蒂芬·怀特很有可能是中本聪的本尊。同时也指出,也许只是他精心设计的一个高明的骗局想让我们相信他就是中本聪本人。

直到2016年5月2日,澳大利亚企业家克雷格·史蒂芬·怀特公开承认自己就是发明比特币的中本聪。其证据是中本聪的加密签名档,但被质疑该档只要是稍微高端一点的黑客都能在暗网中找到下载,早就在不少电脑高手圈流传。另一证据是早期第1及第9区块比特币地址的私钥,但此私钥如果是早期比特币开发人员或其亲近者都有可能拿到。

最关键证明是导入比特币至2009年的比特币第一笔交易地址,该地址被视为是中本聪所有,并要求表演汇回,BBC记者将0.017个比特币导入,但最终没有汇回。BBC刊登出和他的访谈片段,自称他就是比特币发明者。但克雷格声明与证据的真实性受到普遍的质疑,在最后阶段要求演示关键证据时,克雷格拒绝并发布了一篇顾左右而言他的博客文章。[2]

比特币有毒?—— 冰山下的“暗网”

THUBA专栏 | 《区块链系列课程》1.3比特币简介

2017年5月,在莘莘学子准备毕业论文之际,突然,国内各大高校,甚至部分政府部门中大批Windows系统电脑感染病毒,电脑文件均被加密锁定,攻击者留下用于收取赎金的,却是一个比特币账号。

正因如此,这次席卷全世界的“WannaCry”病毒被大家称为“比特币病毒”。这一事件进一步引爆了比特币的热度,黑客肆无忌惮的使用,恰恰说明了比特币的匿名保护和安全性。

除此之外,臭名昭著的暗网交易平台“丝绸之路”在被查封之前曾大量使用比特币作为流通货币,高峰时期达比特币总流通量的80%。深受黑客与暗网喜爱的比特币,是否从一出生就带有原罪?

带着种种传奇的故事,本文将为大家介绍比特币的底层技术,帮助大家完成对这些模糊概念的深入理解。

比特币的数据结构

区块链的数据结构

比特币区块链中,每个区块都包含上一个区块的哈希值,因此所有历史数据均可以验证,一旦某个区块的数据发生篡改,则其哈希值与下个区块存储不符合,如果进一步篡改下一个区块,则会导致这种不一致向后延伸。因此,每个节点只需要存储最新的哈希值,就可以验证所有的历史数据是否一致。

THUBA专栏 | 《区块链系列课程》1.3比特币简介

区块的数据结构

一个区块分为区块头和主体两部分,其中区块头包含上一个区块的哈希、Nonce值、时间戳以及根哈希值。主体包含所有交易组成的二叉树,该二叉树的根哈希值存在区块头中。为了节省哈希计算的时间,区块哈希仅为区块头的哈希值。时间戳用于标记该区块生成的时间,并且用于进行工作量难度的调整。而Nonce值将用于工作量证明调整哈希值,这些内容我们将在后文介绍。

图片
图片

在主体中,交易的存储方式通过哈希二叉树,也称为默克尔树的结构进行存储。这一好处在于,当我们需要证明某个交易存在该区块中,不需要将所有数据进行哈希计算,仅需要对上图所示部分数据进行哈希计算即可。

交易的数据结构

不同于常见的个人账户到账户的转账交易,比特币的交易更类似传统的黄金白银交易。每次转账,需要将整块黄金拆成两部分,给其他人某一部分,剩下的一部分成为一个新的小块。每个人会持有若干小块的黄金,那么需要支付大额度的时候,可以将多个小块融为一体,然后同样给出去一部分,自己留下一个新的小块。

图片

如上图所示,矿工挖到一个大金块50个BTC,拆成了0.5个和49.5个BTC,其中0.5个BTC和另外的0.8,0.3个BTC融合,然后分拆为0.8和0.8个BTC。

因此,比特币交易可以包含若干个输入和输出。只要保证每笔交易输入的BTC数量总和大于等于输出BTC的数值即合法。通常情况是大于,而多余部分为矿工的手续费。

UTXO与脚本语言

前文介绍的黄金小块我们通常称为未花费交易输出UTXO(Unspent Transaction Output)。这里还有一个认知的差异。每个黄金小块并不是直接属于某个账户,而是存放在一个保险箱中,只要能提供钥匙打开保险箱的人,即可获取到黄金小块的使用权限。那么每次发送交易将黄金小块进行拆分和融合,需要拿出每个输入的钥匙证明所有权。

图片

如上图所示,保险箱是黄色背景的代码组成,使用的语言为比特币自己设计的堆栈式脚本语言。需要提供钥匙使得这段代码运行无误才能获取保险箱中的黄金。而红色背景的数据即为打开保险箱的钥匙。

由于保险箱的代码是用户自己定义的,可能有恶意代码的出现,导致节点验证该保险箱会陷入死循环。我们也知道不存在算法可以验证图灵完备的程序是否能在规定时间内停止运行,也就是经典的图灵停机问题[3]。

比特币的解决方案为设计非图灵完备的堆栈式编程语言:

•指令集只包含简单指令,不包含跳转、循环指令

•脚本执行开销与脚本长度线性相关

•通过限制脚本长度限制执行开销时间

大家可以思考这是否为唯一的解决方案,下节课我们将会看到以太坊面对这一问题的解决方案。

-如何维持全球唯一的数据账本?-

现在,我们知道单一节点如何存储和管理比特币账本了,那么对于整个比特币网络而言,如果每个节点存储的账本都不相同,则没有公认的世界状态,用户也无法相信区块链上记录的数据。这节我们将介绍比特币如何保证全网所有节点记录数据的一致性。

比特币系统的P2P网络

首先需简单了解比特币网络中存在大量节点,当用户发送一笔交易到某个节点时,该节点会将该交易转发到所有相邻节点,并且这些节点会进一步转发。这种方式类似于大家口耳相传,传播八卦新闻的模式,因此称为gossip协议。

THUBA专栏 | 《区块链系列课程》1.3比特币简介

gossip协议能帮助一笔交易传播到所有节点,但是由于网络延迟、节点故障等原因,无法保证所有节点数据的一致性。

账本一致性

为了保证比特币区块链数据的一致性,我们需要满足两个条件

•创世区块数据的一致性

•新区块数据的一致性

由数学归纳法可知,如果能满足这两个条件,即可满足所有区块链数据的一致性。而前者我们可以依靠代码对创世区块的统一记录来完成,后者则需要设计一套协议,使得在新交易不断出现的场景下也能保证新区块数据的一致性。

THUBA专栏 | 《区块链系列课程》1.3比特币简介

新区块一致性主要需要解决以下几个问题

•新区块能包含哪些交易数据?

•新区块由哪个节点来创建并广播给大家?

•如何保证新区块的唯一性以及可验证?

工作量证明

上节课提到通过利用哈希函数的随机性,当用户提交一个前缀k个0的哈希值,我们可以相信从期望上进行了2的k次方次哈希运算。因此,比特币系统利用这一特性对新区块进行筛选,避免大量节点同时广播新区块,导致数据不一致。

具体来说,每个新区块的哈希值需要低于某个门槛值,该值动态调节,保证比特币系统在全网算力增加或者减少的时候,都能期望上保持10分钟出一个新区块。因此,每过2016个区块(约2周),该门槛值会根据过去这些区块的平均出块时间而调整。如果平均出块时间少于10分钟,意味着当前全网算力超过标准,难度需要适当加大,即门槛值降低,减少符合规定的区块出现的概率;反之则降低难度,增大符合规定的区块出现的概率。

THUBA专栏 | 《区块链系列课程》1.3比特币简介

从最初的爱好者用个人电脑进行新区块的计算,到显卡、FPGA,再到ASIC芯片的专业矿机。比特币网络的每秒哈希计算能力有了飞跃的增长。这使得比特币系统的安全性大幅提升。

图片

比特币的分叉与最长链法则

一旦某个区块计算出下一个合法的区块,便会将该区块向全网广播,其他矿工会放弃当前的区块,在新区块之后重新尝试计算下一个区块。但尽管现在比特币系统计算下一个区块需要花费巨额的算力,但仍然存在两个节点同时或者在相近时间计算出合法区块。此时,网络中存在两个相同高度的合法区块。

图片
图片

此时,比特币协议对节点选择某个区块并无要求,仅需要在自己最早听到的区块后计算下一个区块即可。一旦某个分支率先计算出下一个区块,所有节点应当放弃较短的分支,到较长分支后进行新区块计算。这也就是比特币的“最长链法则”

经济激励

不同于传统的计算机安全强调无法作恶,比特币系统强调作恶的后果会给作恶者带来经济上的损失。原因在于传统分布式系统所有节点均为同一组织内部管理,出现宕机故障或者恶意节点是一个小概率事件,因此可以用概率模型作为安全假设。但是区块链系统的代码部署在互不信任的节点上,一旦节点篡改代码能带来更大的收益,所有节点都会篡改代码。

为了保证所有节点按照比特币协议进行,比特币设计了如下的经济激励手段。矿工正常生成区块可以获得区块奖励加上该区块中所有交易的手续费,区块奖励每 4 年减半,保障了比特币总数2100万个,避免通货膨胀。

比特币面临的攻击-

粉尘攻击

定义:发送大量交易,每一条都包含极少数的比特币,再通过掺入数额大的比特币,从而免除交易费,并使得网络拥堵,甚至可以窃取用户隐私。

防范方式:

· 矿工选择更高交易费

· 为每笔交易使用不同地址

· 标记并丢弃粉尘金额

日蚀攻击

定义:囤积和霸占受害者的点对点连接间隙,将该节点保留在隔离的网络中,从而使得节点不断接收攻击者的错误数据,可能会发生双花、削弱矿工竞争等问题。

防范方式:

随机选择新的连接

提升地址的存储空间

拒绝服务攻击

定义:通过大流量或者漏洞的方式攻击节点,使网络中部分节点网络瘫痪,从而使得总算力受损,更容易遭受51%攻击。

防范方式:

防火墙限制SYN最大连接数、限制特定IP地址访问等

访问控制列表(ACL)过滤、设置SYN数据包流量速率等

-总结-

比特币中的主要技术和特点

1.利用SHA-256算法和非对称加密法制作数字签名

2.利用区块链中的区块存储比特币交易记录

3.设置额外的工作从而控制单位时间内生成区块的个数,同时保护比特币网络

4.将一定数额的比特币和区块内的所有交易费奖励给成功生成该区块的矿工,激励更多矿工加入比特币网络,促进比特币网络的稳定与发展

5.比特币转账不依赖银行或其他金融机构

6.比特币网络内比特币的总量不会超过2100万比特币

比特币的不足之处

性能

比特币每10分钟产生一个新区块,每个区块容量为1MB,平均每个交易大小为250B,因此每个区块最大能打包4000余个,平均每秒能处理7笔交易。这大大低于支付宝、VISA等现有中心化交易系统(能处理每秒上万笔交易)。

功能

由于比特币系统仅仅设计为支付系统,其脚本语言能实现的功能极为有限,因此比特币系统仅能实现转账以及简单的脚本功能。

隐私

由于比特币系统所有历史交易数据公开可见。这一特性在保障安全、可验证的同时,导致恶意攻击者可以直接获取区块链账本中记录的数据,并通过分析数据窥探用户隐私。比特币设计了假名账号系统,用户可以为每笔交易创建一个新的账号,但是由于账号之间的关联关系,攻击者仍能找出同一用户的所有账号。

能耗

比特币采用的工作量证明,随着比特币价格的暴涨,会导致大量的算力集中在该系统中,但是这些算力仅仅保障了比特币的安全性,不能产生其他的价值。

[1] Nakamoto, Satoshi. “Bitcoin: A peer-to-peer electronic cash system.” Decentralized Business Review (2008): 21260.

[2] https://zh.wikipedia.org/zh-hans/%E4%B8%AD%E6%9C%AC%E8%81%AA

[3] https://zhuanlan.zhihu.com/p/91228457


END

文稿&视频 | Zeo

编辑 | 杜立恒

审核 | Celia

THUBA专栏 | 《区块链系列课程》1.3比特币简介

本文转载自https://mp.weixin.qq.com/s/aJXy3stRHHH8VG0TxNenIQ

(1)
上一篇 11月 1, 2021 10:12
下一篇 11月 1, 2021 14:56

相关推荐

发表评论

登录后才能评论