主页 > imtoken国内怎么下 > 5.比特币的共识机制

5.比特币的共识机制

imtoken国内怎么下 2023-03-06 07:48:39

你有没有想过:为什么矿机的算力越大越好? (既然是数学题,为什么不是最好的算法!)为什么比特币总数是2100万?什么是比特币盗窃?如果我不玩比特币,是不是真的和比特币没什么关系...️

比特币背后有许多微妙之处,公众不再陌生。本文介绍了比特币的基本原理和主要原理,并结合一些技术细节的分析来回答上述的一些问题。全文长,约7000字,阅读时间约22分钟。建议收藏后阅读。

文章可分为以下几个部分:

* 比特币先验知识

-- 密码学相关

-- 比特币重要概念

* 交易生命周期

* 区块链组成

* 区块链的成长

--“挖掘”的数学本质

--“矿工”的收入

* 比特币的共识机制

--比特币的去中心化共识

--“最长链优先”原则

* 比特币安全

1.比特币先验知识1.1 密码学相关

比特币作为第一个去中心化的数字货币,在其设计中使用了很多密码学相关知识,主要包括非对称加密技术、哈希函数等。了解这些密码学知识可以帮助我们更好地理解比特币中的一些概念和规则。

对称加密:加密和解密使用相同或可相互计算的密钥。优点是速度快,缺点是分发困难,不能用于认证。

非对称加密:与对称加密相反的概念。它需要一对密钥,一个叫私钥,一个叫公钥;私钥必须由用户严格保管,公钥可以公开。

非对称密钥的重要属性: 1⃣️加密的双向性,公钥和私钥中的任何一个用于加密,另一个用于解密。 2⃣️虽然公钥和私钥之间存在数学关联,但知道公钥并不能推导出私钥。 (只要记住非对称密钥的重要性质,如果想知道其背后的数学原理,可以再查资料)

非对称密钥的应用:1⃣️加密通信:|明文| -> 公钥加密->|密文|->私钥解密->|明文|2⃣️✍️数字签名:发送方将要传输的信息用私钥加密后形成签名(考虑到消息往往很大,公钥密码算法效率不高,所以消息的哈希值一般用私钥加密,只有私钥的拥有者才能完成)并发送给接收方,接收方解密它使用发送者的公钥(因为公钥是公开的,所有用户都可以验证签名)。数字签名可确保发送的消息不可否认,也可用作身份验证。 3⃣️数字证书:本质上是公钥经过认证机构的数字签名,保证公钥的合法性。

散列函数:也称为散列函数,对任意长度的消息或数据进行变换,得到格式固定、长度固定的散列值。这样的哈希值被称为摘要、指纹。散列函数最大的特点是,如果两个散列值不相同(根据同一个函数),那么这两个散列值的原始输入也是不同的。反之则不然:如果两个哈希值相同,那么这两个哈希值的原始输入不一定相同;也就是哈希函数有碰撞的可能。

SHA-256:哈希函数,对于任意长度的消息,SHA256 会生成一个 256 位的哈希值,称为消息摘要。

默克尔树:是一种基于哈希指针的树,可以实现快速便捷的信息完整性验证。比特币使用默克尔树

1.比特币的2个重要概念

以下是比特币的一些定义和概念解释,知道的可以直接跳过~

比特币:货币单位、网络和软件名称。比特币网络中的信息主要是交易信息和区块信息。

比特币中的私钥、公钥、地址:比特币使用椭圆曲线乘法作为其公钥密码学的基础,从私钥开始,使用椭圆曲线乘法(一种单向加密函数),公开密钥可以计算。从公钥开始,可以使用单向加密哈希函数生成比特币地址。比特币地址是一串字母和数字,可以与任何想为你赚钱的人共享,类似于传统支票上的“收款人”。

钱包:数字密钥通常以结构化文件或简单数据库的形式存储在钱包中。数字密钥可以由钱包创建和管理,无需与区块链关联或访问互联网。

交易:将比特币从一个地址转移到另一个地址。具体来说,交易是一种签名的数据结构,代表价值的转移。创建交易时,当前比特币持有者需要提供公钥和签名以及交易。交易通过比特币网络传输,由矿工收集,验证有效性,然后打包成区块,永久存储在区块链上。

内存池:比特币网络中的几乎每个节点都维护一个临时的未确认交易列表,称为内存池,用于那些已发布到网络但尚未包含在区块链中的交易。跟踪交易。

铸币交易:代表矿工挖矿奖励的特殊交易,一般由矿工自己计算,在计算工作量证明之前添加到区块中。

Block:交易的集合,带有时间戳,包含之前区块的指纹(区块的具体结构见图2)。区块头经过散列生成工作量证明,验证所有交易的有效性,通过网络共识将经过验证的区块添加到主区块链中。

区块链⛓️:有效区块列表,每个都指向其预购区块,直至创世区块。

挖矿:比特币网络节点使用前一个区块的哈希值、当前区块的交易信息、时间戳、随机数等,计算出这个区块的工作量证明。由于系统产生比特币的速度每四年减半,符合天然矿产产出随着开发时间的增加而减少的特点,因此被形象地称为“挖矿”。 “挖矿”是虚拟去中心化票据交换所的主要工作过程,在这个过程中交易被验证和清算。

Mining Node/Miner:用于描述通过重复计算哈希找到有效工作量证明区块的网络节点。

确认:一旦交易被包含在一个区块中,它就有一个确认。当通过挖掘发现同一区块链上的另一个块时,该交易有两个确认。一个区块累积的确认越多,失败的可能性就越小。

2.事务生命周期

在比特币这个创新的支付网络中区块链包含比特币吗,一笔交易的生命周期大致可以分为几个阶段:创建、传播、验证和交错、打包成块并记录在区块链中,并获得更多的确认图 1 说明了这些阶段。

注意:

1⃣️付款人A发起比特币交易时,会使用自己的私钥对交易信息的哈希值进行签名。因此,A向全网广播的内容除了交易信息外,还包括自己的公钥信息和消息上的签名。其他矿工只需要使用 A 的公钥来验证交易,就可以确定它是否真的是由 A 创建的。

2⃣️“交易传播和交易验证”交替是指每个节点根据一定的规则独立验证每笔交易(共识基础1),一个节点只有在认为交易有效的情况下才会将其传播出去。

图1 事务生命周期示意图

3.区块链构成

比特币的底层技术是区块链。区块链系统是一个分布式共识系统,区块链网络中的所有参与节点都会对交易的状态达成一致。

Block 究竟什么是链?你可以把它理解为一个分布式的交易共享账本,以区块为基本单元链接在一起。交易信息将被组织打包并记录在块中。每个区块都包含区块头,后跟交易列表。块头包含 3 组块元数据:前序块哈希(严格来说,是前序块头哈希,因为只有块头用于哈希操作),元数据集(包括难度、时间戳、随机数等) .),一种默克尔树,它基于加密哈希有效地总结了一个块中的所有交易。了解这种结构将有助于我们更好地理解挖掘的数学本质。

图2 区块链结构图

4.区块链增长4.1“挖矿”的数学本质

你可能听说过“挖矿”这个词,或者听说过人们争先恐后地购买矿机致富。但让人不解的是:都说打包块的本质是解决数学问题,但仅仅依靠那些看似简单的机器疯狂地嗡嗡耗电,能否保证解决比特币问题的胜率很高? 在硬币技术原理中,矿工解决的数学问题是蛮力问题吗?

看了一圈,发现矿工解决的问题确实有点蛮力的意思,每次尝试解决的过程中几乎都是无所适从,想碰碰运气。谁有幸打架,谁也能算得上快;如果你数得快,你的尝试和错误越多,你获胜的机会就越大。

解决问题的背景是本矿节点通过基于工作量证明(Proof-of-Work,POW)的证明操作(共识基础2))独立地将交易聚合成新的区块。矿工从网络收到一个新区块,发现自己输掉了上一轮的竞争,于是立即开始新区块的挖掘过程。块(添加到块中的第一个交易是“铸币交易”,详细信息在第 3.2 节中给出)。接下来是填充字段以创建块头(包括前一个块的块头哈希,交易的默克尔树(Merkel tree),时间戳,难度目标值,随机数),然后开始计算这个新区块的工作量证明。

这个计算的过程很简单,就是对块头进行两次sha256操作,得到一个RESULT。如果 RESULT 符合一定的要求,则该人可以被认为是正确的,并有权记住帐户。满足要求的 RESULT 称为“工作量证明”(在 Satoshi Nakamoto 的论文中称为“工作量证明”)。

                                    SHA256(SHA256(区块头部))=RESULT

关于这个计算过程,强调以下几点:

首先,区块头包含区块头的前序区块Hash、本区块内交易信息的Merkle树、时间戳、难度目标值、随机数等信息(见图2)。

二、hash运算 用“知道y,不可能推导出x使得h(x)=y为真”,“即使输入只改变一点,输出也会差很多”,“使用数据任意长度的输入,生成固定长度的结果。”特性。所以大家不知道什么样的输入可以产生自己想要的结果,矿工只能不断尝试。

第三,如前所述,区块头的哈希值需要满足一个特定的要求,即成为工作量证明——小于某个阈值,或者哈希值包含给定的前缀。阈值的大小与挖矿难度有关:挖矿难度是一个动态参数,数值越大,阈值越小,表示哈希值满足要求的概率越小,矿工的概率越小。可以成为每个计算量较小的工作量证明。比特币有一个自我调整的过程——通过估计现有的挖矿算力来对应调整挖矿难度,可以保证区块链每十分钟出块一个,达到控制发行速度的目的。 (这个过程的基本思路类似于产品笔试中的数据估计题,按照“一供一需”的思想构造一个方程,然后求解一侧的一个因子等式;想了解挖矿难度系统和调整方法的同学可以进一步阅读~)

结合以上三点,为了生成工作量证明,用户基本上会通过调整随机数来试试运气(因为其他字段基本不变),进行多次操作,直到满足要求,没有其他办法。这样,随机数就有了“幸运数字”的含义。因此,平均而言,谁拥有更多的计算能力(尝试次数越多)就越有可能打包一个块。

4.2“矿工”的收入来源

你可能会想,什么样的利益驱使矿工如此愿意花费他们的算力来维护区块链?简单来说,矿工有两种收入来源:1、计算工作量证明,为新区块创造新币奖励; 2、算算矿工费。

4.2.1 新币奖励

作为一名矿工找到工作证明,打包一个新区块,并将该区块传输给他的所有同行。每个挖矿节点独立验证新区块并将合格的新区块整合到区块链中(共识库3),并继续将该区块传递给其对等节点。因此,只有经过验证的区块才会在网络中广泛传播,确保诚实矿工挖出的新区块能够被区块链接受。成功挖矿的单个节点或集体节点可以同时获得新币奖励和记账矿工费。

新币奖励类似于发币。它遵循的规则是,前四年每个新区块产生 50btc,后四年每个新区块产生 25btc,第三四年每个新区块产生 25btc。一个新的区块产生 12.5btc,因此循环索引减少。按照等比数列求和,到 2140 年,比特币的总和约为 21,000,000(所以比特币数量有限,自然收缩)。届时,新的比特币将不再随着区块的产生而添加,矿工将不再拥有第一收益。但在现实中,由于挖矿成本高昂,往往是矿池中的所有参与者都能成功挖矿。收益分配到矿池地址,矿池按照群内算力贡献比例分配收益。

4.2.2 记账矿工费

Bookkeeping Miner Fee,也称为交易费用,计算为交易输入和交易输出之间的差额。形式存在;一个区块的总交易费用是添加到该区块的所有交易(交易输入 - 交易输出)的总和。一般来说,矿工费较高的交易会处理得更快。矿工费在这里起到两个作用,一是奖励矿工,二是防止滥用主链(防止大家发送垃圾交易,因为提出交易是有一定价格的)。

4.3 收益验证

矿工的收入以什么形式进行验证?这里不得不提一下“铸币交易”。每个计算机节点在执行工作量证明计算之前添加到块中的第一笔交易是“铸币交易”。这笔交易从零开始产生比特币,金额为新币奖励和账本费之和,并支付到矿工自己的比特币地址。如果矿工找到工作量证明使区块有效,他将赢得奖励,因为他构建的“铸币交易”是有效的。

关于铸币交易和“新币奖励”,之前有读者问我:矿工发布挖到新区块的消息,他的工作量证明不会被别人抄袭吗?

就个人而言区块链包含比特币吗,至少“铸造交易”可以防止这种情况发生。让我们重申计算工作量证明的过程——矿工 E 在一个新区块中添加一个奖励自己的“造币交易”,并使用时间戳、前一个区块头的哈希、随机数、交易价值当前块。默克尔树等信息计算出满足要求的工作量证明。

在这个过程中,默克尔树的样子取决于这个区块中的所有交易信息,包括“铸币交易”。因此,铸币交易可视为工作量证明的间接变量之一。那么,即使其他人得到了E的工作量证明,这个工作量证明也与印有E印记的造币交易有关,他人不能自用。

您还可以通过设想以下场景来加深对共识基础2“挖矿节点通过基于工作量证明算法的证明操作将交易独立聚合成新块”的理解。

为什么挖出新区块的矿工在出块之初不隐瞒铸币交易金额为 1000BTC?原因是每个节点都根据相同的规则独立验证块。矿工必须创建完美的区块,符合公共规则,并正确遵循工作量证明方法;无效的铸币交易使整个区块无效,从其他节点拒绝它,并且永远不会成为分类帐的一部分。可以预见,为了产生这个工作量证明,矿工们投入了巨大的算力和电力进行挖矿。如果因涉嫌欺诈而被拒绝,则挖矿成本将付之东流。

综上所述,矿工不能虚拿别人的奖励,获得奖励的矿工只能拿规定的金额。

5.比特币的共识机制5.1 比特币的去中心化共识

比特币的卓越之处在于建立了一个中心化的自发共识。这种共识是自发产生的,由数千个节点按照网络中的共同规则在异步交互中形成,不依赖于任何中央机构的调解和干预。

关于比特币的4个主要共识基础,本文在解释相应细节时提到,这里是一个整合:

共识基础1:基于规则的完整列表,每个Node独立验证每笔交易

共识基础2:挖矿节点通过工作量证明算法PoW证明操作独立将交易聚合成新区块

共识基础3:每个挖矿节点独立验证新区块,并将合格的新区块整合到区块链中。

共识基础4:当比特币计费链分叉时,每个矿工会独立选择积累最多工作量证明的链

这四个过程相互补充、相互作用,形成全网自发的共识,促使全网的节点组合成一个可信、公开、权威的总账。

5.2“最长链优先”原则

你可能认为比特币是一种去中心化的、基于信任的、依赖于人群的力量来操作事物的东西。如果一些矿工被坏人收购怎么办? “51% 攻击”指的是什么?比特币交易所要求的“6 次确认”是怎么回事?

这里首先要提的是比特币“最长链优先”的规则。这意味着当比特币计费链分叉时,每个矿工将独立选择长链(积累了最多的工作量证明)并在其上继续挖矿(共识基础4)。

这个原则主要涉及两个问题:

5.2.1 区块链自然分叉

当有两个矿工A和B同时挖矿成功时(计算出符合要求的数学答案),他们分别用自己计算的工作量证明作为下一个区块的前序区块哈希,并生成一个块连接到原链的后面,出现两个分支。

此时,两个成功的矿工广播了他们打包成功的消息。由于区块链是去中心化的数据结构,区块消息到达不同节点的时间点是不一致的,所以不同的节点可能对区块链有不同的看法——有的矿工会先收到来自A的消息,有的会先收到来自B的消息。解决这个问题,接收到消息的矿工遵循一个原则:选择并尝试拉长最长的链。

因此,两个分支将各自增长一小段时间,直到它们的长度不同(长度不可能一直相同)),例如,其中一个链的矿工将打包一个块后支链更快。根据“最长链优先”的规则,较短的链将被丢弃,最初在短链上工作的矿工将被丢弃。他们都回到长链上工作。

换句话说,一个分叉只是不同节点之间的暂时不一致,当一个新的区块被添加到其中一个分支时,最终的收敛将解决这个问题。 【读者大家可以思考一下为什么区块链设置为每十分钟挖一个块:时间短的话,是不是增加了生成的分支数量?时间长了,是不是交易结算效率太低了? ]

5.2.2双花问题

双花的本质其实是区块链的一个分叉,而这个分叉是“非自然恶意”的产物。

我们假设小敏是合谋双花的一方,她先把自己仅有的10BTC给了小强并兑换了一块金币,等待这笔交易将信息P打包进区块Q后,她得到了来自小强的黄金。这时,小敏做了一个计划,她要偷偷抹掉和篡改区块Q上的交易信息P,“白嫖”。金子。为了达到这个目的,根据“最长链优先”的规则,小米必须去掉交易P,重新做结算工作,集中算力形成一个分叉,让分叉增长更快,超越和取代主Q所在的链。如果小民真的可以让分叉更长,那么这个分叉就会成为主链,其他节点会移动到新的主链上继续工作。就这样,小强付出了黄金,却没有收到这10个比特币,“丢妻丢兵”。

在这个过程中,小民需要配合原链进行“战斗”,让新的分叉成为最长的主链,称为“共识攻击”。 “共识攻击”本质上是对下一个区块的竞争。攻击者越“强”,算力越大,越容易成功。

“共识攻击”成功的可能性有多大?

大多数比特币交易所规定,一笔交易在传输到区块链后需要6次“确认”才能完成交易的验证。这个规定的依据是,假设打算造假的矿工有10%的算力(挖矿成功的概率0.1),那么假矿工至少要构造成功另一个假链实现长度超限。挖矿6次。那么原链被替换和废弃的概率大约是0.1的6次方,接近于0。你可以把比特币理解为一个地质结构层,表层可能会因季节变化而发生变化,有些变化甚至会被风吹走,但一旦深入地下,地质层就更加稳定不受干扰。

并且假设有一群矿工拥有 51% 的算力,他们控制着全网一半以上的算力,可以在区块链中故意分叉和双花交易。但事实是,随着全网算力的大幅提升,单个矿工控制1%几乎是不可能的(但集中控制矿池带来的算力,存在一定的风险) )。更何况,如果有这么强大算力的组织,他可以利用自己强大的算力投资挖矿。诚实挖矿比双花获得开发新区块的比特币奖励更有利可图。

虽然不存在51%攻击问题,但不可否认的是,算力集中违背了比特币去中心化的初衷,成为其持续发展的一大隐患。

6.比特币安全事件

A 系统的安全性往往取决于系统安全性中最薄弱的环节,也就是所谓的“木桶原则”。与区块链系统相关的安全问题包括但不限于:

(1)区块链上广泛使用的公钥系统基本是安全的,但量子算法理论上可以破解公钥系统;因此,区块链的算法安全性是相对的。

(2)区块链协议本身存在逻辑缺陷,比如被黑的区块链系统的共识机制。

(3)所有数字货币系统高度依赖私钥,私钥在存储和使用方面的安全性已成为区块链系统安全的关键部分。

虽然区块链是一个去中心化的系统,但目前绝大多数数字交易所都是中心化的,存在人的安全漏洞和技术安全漏洞。这些数字交易所拥有存储大量加密货币的私钥,这无疑是黑客最瞩目的目标;只要黑客窃取了这些私钥,就可以获得这些加密货币。

7.结论

作者会继续阅读相关资料,完善这篇文章,以完成一篇通俗易懂的比特币科普文章为目标。 :)

**本文是网上资料和个人理解的结合。如有偏差和误读,欢迎读者指出。也欢迎提供文章结构方面的信息