主页 > imtoken新版本 > 区块链学习笔记——比特币区块链的运行模式和共识机制

区块链学习笔记——比特币区块链的运行模式和共识机制

imtoken新版本 2023-06-27 07:03:13

上一篇文章介绍了区块链的概况,提到了区块链是一个点对点的分布式网络系统,其中数据的存储是以区块链连接的形式存储的按块。区块链系统中的所有节点共同维护一条正确且唯一的公链,达到了去中心化的目的。但是,对于区块链分布式系统来说,如何保持各个节点的一致性,保证系统能够正常运行,是一个必须要解决的挑战。

下面以比特币为例,分析比特币系统是如何运行的,解决各个节点的一致性问题。比特币的运行机制可以概括为以下三点:

1.使用数字签名保证交易有效性

2.每个节点都有记账权,实现去中心化

3.通过PoW共识机制实现区块链一致性

使用数字签名确保交易有效性

在比特币系统中,一个账户以“钱包地址”的形式表示,所有转入且未充值的比特币的总和构成了这个“钱包地址”的“余额”。

一笔比特币交易会包含转账地址(可以理解为比特币账户)和转账金额的信息,但是系统如何判断在交易中输入的地址是有效的并且是转让方拥有的呢?地址同时有足够的未使用余额?这就需要介绍比特币地址的生成过程和加密算法。

首先说一下比特币钱包地址的生成过程:

1. 随机数生成器生成一个 256 位的数字。这个数字就是私钥。拥有这个私钥就等于拥有了在对应的比特币地址中操作比特币的全部权利。因此,理论上,私钥只属于比特币地址的所有者,不能被泄露。

2. 通过私钥的非对称加密生成公钥。这里使用的非对称加密算法是椭圆曲线算法SECP256K1。由于是非对称加密,也就是说不能直接从公钥计算出私钥,所以公钥可以在全网公开,其他节点可以使用公钥来验证交易的有效性。

3. 上一步得到公钥后,通过SHA256哈希算法处理公钥得到32字节的哈希值如何运行比特币节点,再使用RIPEMD-160算法得到20字节的哈希值哈希值。段的hash值,对版本号+Hash160组成的21字节数组进行双重SHA256哈希运算,得到的hash值的前4个字节作为校验和放在21字节的末尾大批。这形成了一个 25 位的公钥散列。

4. 然后base58编码公钥哈希得到最终的钱包地址。公钥hash和钱包地址可以通过Base58编解码相互转换,所以可以认为公钥hash等价格就是钱包地址。钱包地址将用于填写交易中的发送者和发送者。

从上述钱包地址生成过程可以看出,公钥、公钥哈希和钱包地址可以通过私钥计算,而公钥哈希和钱包地址只能通过公钥计算。因此,当一笔交易产生时,除了交易本身的信息外,还需要交易的发送方使用私钥对交易进行数字签名,以证明发送方确实拥有使用该交易的权利。转账地址余额。同时需要附上出站地址的公钥,以便其他节点验证交易中的出站地址是否正确。

至此,用于保证交易有效性的非对称算法机制已经引入。

每个节点都有记账权,实现去中心化

交易产生后,会向全网广播。理论上,此时系统中的所有节点都有记账权,最终获得记账权的节点将记录上一个区块生成后系统中发生的所有交易。验证有效的交易被打包成一个新的区块并添加到区块链的末端,然后将最新的区块链同步到下一个节点,下一个节点传播到全网,从而完成一个记账。过程。

那么问题来了,如果每个节点都有记账权,那么特定区块的记账节点是如何选择的,如果每个节点都有记账权如何运行比特币节点,那么系统是如何工作的呢?如何防止恶意节点故意创建错误的分叉区块链?这就引出了下面的第三点,PoW共识机制。

区块链的一致性通过PoW共识机制实现

PoW,全称工作证明(Proof of Work),是比特币和以太坊为了保证系统一致性而选择的一种共识机制。系统会给出哈希值要求(例如指定哈希值开头的0个数),候选记账节点需要穷举计算出满足要求的哈希值,先计算出的节点将获得哈希值。这样,一次只能使用一个有效节点进行记账,从而避免了区块链分裂的问题。对于每个新的块生成重复此过程。比特币系统会根据系统当前的总算力自动调整哈希值的计算难度(例如通过指定哈希值开头的0个数),以保持系统生成一个大约每 10 分钟一个新块。由于比特币是分布式系统,每10分钟维护一个区块,可以为每个节点预留足够的时间同步数据,避免因网络延迟等原因导致节点间数据不一致的问题。

由于哈希函数的特性,PoW机制中的哈希值没有规则可循,只能穷举计算。因此,单个节点获得记账权的概率与其算力成正比。因此,假设系统中的大部分节点都是正常运行的好节点,那么如果一个坏人想要破坏,他至少需要拥有整个网络的 51%。只有算力才有机会控制记账权,并在区块链上强行记错账。但是目前全球有上万个比特币节点,想要拥有超过 51% 的算力是非常困难的,而且 PoW 的计算过程非常耗电,所以当大多数节点都是好节点时但是破坏的代价非常高。

如何保证系统中的大部分节点都是好节点?这是由奖励机制保证的。节点计算出目标哈希值,获得记账权并完成记账后,不仅可以获得交易手续费,还可以获得系统产生的巨额比特币奖励。因此,PoW的哈希计算过程,也称为“挖矿”。

综上所述,由于奖励机制,系统中绝大多数节点都是好节点。好的节点越多,坏节点损坏的成本就越高,损坏的收益甚至比老实说还要低。挖矿收益不如做一个好节点老老实实挖矿。比特币系统因此能够稳定运行至今。

参考文献

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

【区块链概论】相关课程