请选择 进入手机版 | 继续访问电脑版

读懂比特币白皮书

[复制链接]

4

主题

28

帖子

68

积分

等待验证会员

积分
68
发表于 2018-9-25 00:17:25 | 显示全部楼层 |阅读模式
比特币是区块链最成功的应用。
什么是比特币网络、交易、双花、时间戳、工作量证明、激励机制、磁盘存储、简单支付校验、交易的组合与分解、隐私和攻击问题?



什么是比特币网络



比特币网络就是一个基于点对点的分布式系统,它依据交易发生的先后顺序,对交易进行打包,在进行记录的同时加入工作量证明和激励机制,只要比特币中诚实节点能够控制整个网络的算力,即诚实节点提供的算力大于比特币网络整体算力的51%,或者说诚实节点的算力大于攻击节点的算力,这个分布式系统就是安全可靠的。

回复

使用道具 举报

4

主题

28

帖子

68

积分

等待验证会员

积分
68
 楼主| 发表于 2018-9-25 00:17:43 | 显示全部楼层
交易




我们说一个人拥有一个比特币,并不是有一个记帐系统来标明这个人名下有一个币。实际上我们说的比特币是比特币系统中的交易,更确切地说是拥有一个未支付的交易输出,即我们经常听到过的UTXO(英文全称是unspent transactions output)。

一个币事实上是一个签名链,链末端的数额表示某个地址拥有币的数量,任何一个币向上追溯都会到达链的起始端,即比特币矿工挖出这个新币时的一个签名点。

一个币的所有者通过交易将币转移给另外一个地址,这时需要对前一个交易及接收地址进行签名来实现,前一个交易里的接收地址得是这个币所有者的地址,实际就是说你能签名的前提是这个币是属于你自己的,交易的验证者会用前接收者的公钥验证这个签名的合法性从而确定这个签名的真伪。
回复 支持 反对

使用道具 举报

4

主题

28

帖子

68

积分

等待验证会员

积分
68
 楼主| 发表于 2018-9-25 00:18:00 | 显示全部楼层
双花




交易的方法有了,但支付系统的另外一个问题就是“双花”(也就是单笔资金双次花费问题)。

比特币网络采用的方法就是把交易公开化,让网络上的每个人都知道发生的交易。让系统的参与者一起来按一定的规则记录交易,同时还得保持记录的一致性,我们不能要求分布式网络的每一个节点都是守规则的节点,但分布式的魅力就在于,只要大多数的节点是诚实地进行记录,最终整个网络上得到的结果就是大多数人想要的结果。

在比特币系统中,交易被打包进一个区块,区块被按一定的次序进行排列,这间接也说明了交易是有次序的。交易有了顺序,加上网络上的一致记录,这样交易的验证者根据这个唯一的交易排序记录就能确定发给自己的币是否已经被支付给了其他人。

那比特币网络又是如何按照一定的证明或规则来记录发生的交易呢?
回复 支持 反对

使用道具 举报

4

主题

28

帖子

68

积分

等待验证会员

积分
68
 楼主| 发表于 2018-9-25 00:18:21 | 显示全部楼层
时间戳


比特币的做法是先对发生的一组交易进行打包,形成一个区块,同时在这个区块上添加这个时刻的时间戳,然后计算出此区块的区块头的哈希值,再把这个哈希值广播到网络中。

在这个过程中主要完成了这么几件事:
1.对交易进行打包,形成一个区块。
2.在区块里加入时间戳,来证明交易发生的时间。
3.计算区块的头哈希。
4.把区块头哈希向全网广播。

接下来生成的每一个区块都会记录前一个区块的哈希值,形成一个区块链。这里我们涉及了两个概念,第一个概念是区块,区块里包含了交易,同时记录了一个时间;第二个概念是区块链,即后一个区块里包含前一个区块的头哈希,使各区块形成一个前向链。这也就提示了比特币网络事实上就是一个区块链系统。

回复 支持 反对

使用道具 举报

4

主题

28

帖子

68

积分

等待验证会员

积分
68
 楼主| 发表于 2018-9-25 00:18:50 | 显示全部楼层
工作量证明




比特币网络节点都是平等的,每个节点都可以生成区块,如果大家都产生区块,那网络最终采用哪个节点生成的区块呢?在这里比特币引入了工作量证明机制。

什么是比特币的工作量证明呢?一句话概括就是:不断改变区块内容,使得区块头的哈希值小于即定的一个阈值。

在实际工作中,比特币在区块头引入了一个变量,在对区块头做哈希的时候,通过不断改变这个变量来达到修改区块内容的目的,最终使这个区块的区块头哈希值以一个或多个0开头。对工作量证明的要求,可以理解为对区块头的哈希值是以多少个0开头的要求,随着起始0的个数的上升,我们通过改变这个变量进而计算新的哈希值的工作量也会呈指数增长。

在比特币中,由于后续的区块都是基于前面的区块创建的,所以要想修改一个区块,还包括修改这个区块后面的所有区块。计算一个区块的区块头的工作量就已经很大了,可想而知,修改这个区块后面所有区块的内容要付出多大的工作量。虽然我们构建满足一定阈值的区块需要很大的工作量,但我们对这个哈希结果的验证却只需进行一次哈希计算,这正是工作量证明设计巧妙的地方,难产易验。关于支付验证问题,后文会给大家讲到。

工作量证明的另外一个问题是,怎么来确实定难度本身呢,即我们应该怎么设置区块头哈希值的阈值呢?比特币网络采用移动平均目标的方法来决定工作量证明的难度,动态调节这个阈值,使得区块生成的速度为某一个预定的平均数,如果区块生成的速度过快,工作量证明的难度就会提高。现在比特币网络是按照大约10分钟一个新区块的速度在增加。

网络采用哪个节点生成的区块?区块首先要满足区块头哈希阈值的限制,在此基础上谁先产生出新区块,网络就用谁的。所以:区块满足工作量证明的前提下,谁快用谁的。

那如果在某一个时刻同时出现了两个不同的区块怎么办?这时节点会基于先收到的那个区块进行工作,同时会保留后收到的那个区块。这时链就有两个分支,哪一个是最长链,现在是不能下结论的,等收到下一合法的区块时,它的前向指针指向哪个分支,哪个分支就被认为是最长的链。如果这时我们没在最长链上工作的话,那么就要切换进行工作的基础区块,因为这时最长的链条已经自动切换了。补充一下,基于概率问题,一般不会超过2个区块还分辨不出最长链的情况。

回复 支持 反对

使用道具 举报

4

主题

28

帖子

68

积分

等待验证会员

积分
68
 楼主| 发表于 2018-9-25 00:19:12 | 显示全部楼层
激励机制


比特币生成新币消耗的是CPU时间及电力。新币仅仅是矿工奖励的一部分,每笔比特币交易的交易费用也是矿工奖励的一部分,当所有的比特币被挖完后,奖励就会全部来自于交易费用。
回复 支持 反对

使用道具 举报

4

主题

28

帖子

68

积分

等待验证会员

积分
68
 楼主| 发表于 2018-9-25 00:19:29 | 显示全部楼层
磁盘空间




我们并不需要存储区块链的所有交易。如果一个比特币的新的交易签名链已经被足够多的区块所接纳,那么就可以放弃这个比特币之前的数据,从而腾出一定的硬盘空间。

比特币的区块头大小仅有80个字节,现在比特币区块的生成速度为第10分钟一个,那么一年产生的区块头大约是4.2MB。通常我们PC系统的内存都大于2GB,这样即使将所有区块头都存储于内存中都不是问题。

此功能概括一下就是:一个区块中的交易采用Merkle树来排列,区块头只记录树根。这也是比特币的一大特性,树根不发生变化就意味着树上的每个数据都没有发生变动。
回复 支持 反对

使用道具 举报

4

主题

28

帖子

68

积分

等待验证会员

积分
68
 楼主| 发表于 2018-9-25 00:19:55 | 显示全部楼层
简单支付校验


首先是简单支付校验。在使用比特币进行交易时,需要对已经发生的交易进行校验。对支付的验证,并不一定要运行一个保存有全部交易的全节点。用户只需要保存所有区块的区块头,再结合这个区块中的有关此交易的Merkle路径即可确认支付的有效性。
回复 支持 反对

使用道具 举报

4

主题

28

帖子

68

积分

等待验证会员

积分
68
 楼主| 发表于 2018-9-25 00:20:12 | 显示全部楼层
交易的组合与分解





比特币网络允许一个交易有多个输入及多个输出,这样就可以对比特币进组合或者分解。一笔交易的输入既可以是另外一个复杂交易的其中一个输出,也可以是多个交易的输出组合。

这里值得注意的是,中本聪给出的白皮书里介绍交易输出最多是两个,一个指向接收者,代表支付。另外一个指向自己,代表找零。其实这种情况只是大多数比特币客户端给出的交易形式,真实可行的交易可以有多个输出,这种多输出交易形式的一个特殊应用场合就是矿场给参与挖矿的矿工们分发比特币。
回复 支持 反对

使用道具 举报

4

主题

28

帖子

68

积分

等待验证会员

积分
68
 楼主| 发表于 2018-9-25 00:20:30 | 显示全部楼层
隐私





比特币交易是发到整个网络上的,比特币用密钥地址代替了帐户地址,提供了另外一种保护隐私的方式。

如果交易用户还想再增加一些安全性,就可以在每次接收比特币的时候采用一个新密钥对,这样一个人就会有多个密钥对,其它用户也很难把这些分散的多个密钥对联系到一个人的身上。这种隐私保护的特点就在于,你看到了比特币地址,但你很难将其与个人信息关联起来。
回复 支持 反对

使用道具 举报

4

主题

28

帖子

68

积分

等待验证会员

积分
68
 楼主| 发表于 2018-9-25 00:20:50 | 显示全部楼层
攻击问题





最后,我们分析一下攻击。想象一下比特币网络被攻击,攻击者的算力超过了诚实节点的算力,有能力更快地制造出更长的链,使之成为全网公认的链,这时会发生什么事?攻击者所能做的就是更改自己的交易信息,试图拿回已经支付给别人的钱。攻击者是不能凭空造出比特币的,也不可能把其他人的比特币划归到自己的名下,因为他没有其他地址对应的私钥信息。

对于诚实链与攻击者链条之间的竞争,我们可以用二叉树随机漫步来描述(所谓二叉树,就是每个节点最多有两个子树的树结构。而随机游走是一种数学统计模型,它由一连串轨迹所组成。其中每一次都是随机的,它能用来表示不规则的变动形式)。诚实链每增加一个新区块,会使其领先性增加1,而攻击者每产生一个新区块会使其与诚实链之间的差距缩小1。攻击者的进攻时机总是在诚实链生成新的区块以后,也就是说攻击者要努力追赶上诚实链,才能真正完成攻击,修改已经在诚实链上生效了的隶属于自己的交易。

通过计算我们发现,在攻击过程中,如果攻击者产生下一个区块的概率大于诚实节点产生新区块的概率,那攻击就会有效。如果攻击者产生新区块的概率小于诚实链条产生新区块的概率,那它追上诚实链的概率会随着诚实链区块的增加呈指数级地下降。



回复 支持 反对

使用道具 举报

4

主题

28

帖子

68

积分

等待验证会员

积分
68
 楼主| 发表于 2018-9-25 00:21:17 | 显示全部楼层
总结



以上所说的就是比特币的本质,概括起来就是四个核心点:货币所有权、交易排序、工作量证明、激励机制,这四个方面保证了比特币网络能健康长久地发展下去。

在分布式系统中,“双花”问题的关键在于交易的顺序,只要交易有了顺序,“双花”也就解决了。

比特币网络的每个节点都是平等的,都有权利去生成一个合法的区块。那么用谁的区块呢?比特币在这个问题上的处理非常简单,即合法的基础上比速度,也就是说谁先生产出合法的区块就用谁的。

与现实社会不同,分布式系统中存在的是一个个程序。如何让恶意的程序与正常的程序付出的成本一样多呢?程序的复制与传输是不需要太多的成本的,而程序运行最大的成本就是硬件和能源。基于这一点,比特币引入了哈希256算法,也就是计算区块头哈希的算法,再加上对目标哈希值设定阈值,使得要想得到一个符合标准的哈希值,节点就得付出足够多的计算机CPU算力,同时也会消耗一定的电力。这些就是生成一个区块付出的代价:CPU算力和电力。

另外,纵观过往,包括寻找火星人计划等等,我们试图建立一个没有激励机制的去中心化系统是行不通的,要维持一个P2P系统长久、稳定、良性地运行,必须要有足够多的节点参与,而这种参与一定得是持久的忠诚而不是短暂的激情,而最好的激励机制莫过于直接的经济奖励。无数事实证明了,以利益纽带维持的系统是最牢固的。而中本聪看到了一点,所以,比特币系统的精髓便是:以激情开始,以利益维持的分布式网络系统。

回复 支持 反对

使用道具 举报

1

主题

81

帖子

514

积分

等待验证会员

积分
514
发表于 2018-12-30 17:56:39 | 显示全部楼层
BTC 相关阅读——


比特币BTC 中文社区
http://www.oldleek.com/forum.php ... p;fid=37&page=1

BTC已挖出1700万个,近400万个遗失,约2040年挖完
http://www.oldleek.com/forum.php ... 042&fromuid=420
(出处: 老韭)

这人世间,多少人有BTC?
http://www.oldleek.com/forum.php ... 937&fromuid=420
(出处: 老韭)

USDT又成“新闻热点”,BTC现突然拉升。。。
http://www.oldleek.com/forum.php ... 035&fromuid=419
(出处: 老韭)

1%“大户”持有55%比特币?
http://www.oldleek.com/forum.php ... 912&fromuid=420
(出处: 老韭)

读懂比特币白皮书

http://www.oldleek.com/forum.php ... 955&fromuid=420
(出处: 老韭)

经济学人:如何看透比特币
http://www.oldleek.com/forum.php ... 923&fromuid=420
(出处: 老韭)

这个新闻值得细阅!BTC的伟大是可以对抗腐烂的政府
http://www.oldleek.com/forum.php ... 890&fromuid=420
(出处: 老韭)

这么多年,“丢”了多少 BTC?
http://www.oldleek.com/forum.php ... 759&fromuid=420
(出处: 老韭)

比特币的扩容历史以及背后的原因
http://www.oldleek.com/forum.php ... 542&fromuid=420
(出处: 老韭)

呵呵,关于中国退出BTC后的统计数字
http://www.oldleek.com/forum.php ... 427&fromuid=420
(出处: 老韭)

比特币 的 暴跌史
http://www.oldleek.com/forum.php ... 344&fromuid=420
(出处: 老韭)

2017年比特币大涨,是价格操纵的结果。。。
http://www.oldleek.com/forum.php ... =63&fromuid=420
(出处: 老韭)

效力于真正的区块链——老韭社区
www.oldleek.com

细思极恐——当你拿着纸币能向货币发行方兑换什么?
http://www.oldleek.com/forum.php ... 348&fromuid=420
(出处: 老韭)

对币圈失去信心了? 可以看一看(不断补充中)
http://www.oldleek.com/forum.php ... 219&fromuid=420
(出处: 老韭)


密码朋克宣言:我们的代码,对全球所有人免费
http://www.oldleek.com/forum.php ... 121&fromuid=479
(出处: 老韭)


2018年末BTC大跌的原因,以及止跌位
http://www.oldleek.com/forum.php ... 1202&fromuid=39
(出处: 老韭)

BTC 十年!10年之前?10年之后?
http://www.oldleek.com/forum.php ... 1099&fromuid=39
(出处: 老韭)



回复 支持 反对

使用道具 举报

12

主题

52

帖子

145

积分

等待验证会员

积分
145
发表于 2020-2-26 19:23:15 | 显示全部楼层
只能说真是天才的设计
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

1
QQ