主页 > imtoken钱包苹果手机怎么下载 > 关于比特币的事(1)—入门

关于比特币的事(1)—入门

原文链接

图片

概览

2008 年 11 月 1 日,中本聪(Satoshi Nakamoto)在 Metzdowd 的加密技术邮件列表上发表了比特币白皮书:《BitCoin: A Peer-to-Peer Electronic Cash System》,首次提出了比特币(BitCoin,BTC )。

2009 年 1 月 3 日,中本聪在芬兰赫尔辛基的一台小型服务器上挖出了前 50 个比特币。至此,比特币电子现金系统正式诞生。

比特币是一种完全去中心化的电子现金系统,不依赖中央机构进行货币发行、结算和交易验证。区块链是支撑比特币系统的核心技术。

例子

下面,我们将通过一个具体的例子来介绍比特币的工作原理及相关概念。

假设有A、B、C、D四个人,他们之间有3笔交易:

然后,通过在比特币网络中广播,比特币网络中的所有节点都会得到这一系列的交易信息。

图片

这些交易信息最终会被一个节点组装成一个区块,并将这些区块加入到全球区块链中。请注意,每个节点都拥有完整的全球区块链。

这里有三个问题:

接下来,我们将依次回答这些问题,并介绍相关概念。

节点为什么工作?

为什么比特币网络中的节点会创建和添加区块?因为,有奖励,奖励由两部分组成:

rsa是哈希算法吗_比特币原理与挖矿算法_比特币采用的哈希算法是

关于系统的奖励规则,系统规定:

因此,我们可以计算出系统币数所包含的总比特数。

比特币总数 = ((60 分钟 × 24 小时 × 365 天 × 4 年) / 10 分钟) × 50 比特币 × (1 + 1/2 + (1/2)² + (1/2)³ ...) ≈ 2100 万

如何选择节点?

如何选择节点?因为比特币是典型的分布式系统,分布式系统通过共识算法来选择节点。

分布式系统的共识算法有很多,常见的有以下几种:

比特币系统使用工作量证明共识算法。关于工作量证明的详细原理,我们需要先介绍一下哈希函数。

哈希函数

哈希函数可以为任何内容计算一个相同长度的特征值。比特币区块链使用 SHA256 算法作为哈希函数,其哈希特征值为 256 位长。无论原始内容如何,​​最终都会计算出一个 256 位的二进制值。字符串 123 基于 SHA256 的十六进制哈希如下所示:

SHA256("123") = 0xa8fdc205a9f19cc1c7507a60c4f01b13d11d7fd0

哈希函数有一个重要的特点:

这是什么意思?以下面的数学问题为例,从已知的 x 计算 y 的值非常简单。但是从已知的 y 计算 x 的值是非常困难的。所以,如果想通过hash值解出原值,只能暴力破解,一一尝试。

x³ * ln(ln(x)) + x² * sin(x) = y

工作证明

工作量证明实际上是反转哈希值。这是一个非常耗时的过程,因为只能使用蛮力解决方案。但是,一旦一个节点在整个比特币网络中第一次计算出正确的值,就会获得丰厚的奖励,所以工作量证明也称为挖矿。

那么工作量证明试图解决什么样的问题?我们需要从块的结构开始。

如下图所示,是区块链的基本结构——区块。区块主要由两部分组成:

块体

rsa是哈希算法吗_比特币采用的哈希算法是_比特币原理与挖矿算法

图片

理解区块结构之后,我们再来看看工作量证明要解决的问题。题目如下:

SHA256(字符串) -> 符合某个条件的哈希值(小于某个目标值)

字符串由当前区块头 + 当前区块主体 + 生成时间 + 一个随机数组成。求解字符串中的一个随机数,使最终的哈希值小于某个目标值(Target)。这里的随机数也称为 Nonce。

Nonce 是一个 32 位二进制值,很难猜到。目前只能通过穷举法一一完成。

难度系数

在比特币系统中,难度系数(Difficulty)可以控制出块的速度。难度系数可以决定上述目标值的大小。

目标值与难度系数的计算关系如下。可以看出,难度系数越大,目标值越小。因此,符合条件的哈希值范围越小,难度越大。

目标值 = 理论最大哈希值 / 难度系数

恒定速率

比特币系统将区块生成速率设置为每 10 分钟 1 个区块。那么这是怎么做到的呢?

其实本质上是难度系数的动态调整。由于目标值决定了满足条件的值的范围,我们可以计算任意一个随机数满足条件的概率:

任意一个随机数符合条件的概率 = 目标值 / 理论最大哈希值 = 1 / 难度系数

那么,这又是如何控制时间呢?

假设全球有10000台矿机,每台矿机的计算速度为20T/s,即每秒可以进行20T的哈希运算。因此比特币采用的哈希算法是,可以计算出整个世界的计算能力是2×10^17次/s。那么10分钟的算力是:

十分钟的算力 = 10 × 60 × 2 × 10^17 = 1.2 × 10^20 次哈希运算

因为10分钟只能成功一次,所以我们可以通过下面的等式得到最终的难度系数。

rsa是哈希算法吗_比特币采用的哈希算法是_比特币原理与挖矿算法

10 分钟的算力 × 符合条件的概率 = 1 次
即:
1.2 × 10^20 × (1 / 难度系数) = 1
求解 -> 难度系数?

由于世界上的计算能力总是在变化,为了将输出速度控制在10分钟以内,比特币系统规定难度系数是每两周调整一次。如果两周的平均出块速度为 9 分钟(意味着比法定速度快 10%),则将难度系数提高 10%。反之亦然。

如何验证交易内容的真实性?

以例子为例,交易内容的真实性主要包括两个问题:

对于第一个问题,我们需要简单了解一下比特币账户地址的概念。

当比特币用户注册账户时,系统会自动生成一个随机数。使用随机数,系统可以生成一对非对称密钥(公钥+私钥)。比特币账户地址是一个 160 位(20 字节)的字符串,由公钥进行一系列散列和编码操作生成。

用户A发起交易时,会先对交易内容进行哈希运算,得到摘要(Digest);然后用私钥对摘要进行加密,得到数字签名(Signature)。最后向比特币网络广播的内容为:交易内容+公钥+数字签名。

图片

当比特币网络中的其他节点收到消息时,他们会进行验证:

对交易内容进行哈希运算得到摘要1.用公钥解密数字签名得到摘要2.判断摘要1和摘要2是否一致

图片

如果摘要1和摘要2一致,则证明交易内容是真实的,在广播过程中没有被篡改。那么如何证明消息的发起者也是A呢?毕竟,我们不能同意 B 发送一条消息说 C 向 B 支付 10 BTC。消息发起者必须是付款人。

要解释这一点,我们需要了解事务生成。事实上,每笔交易都需要包括几个输入和输出。新交易可以引用未引用的交易输出 (UTXO) 作为其合法输入。已被引用的已用交易输出 (STXO) 不能被新交易引用作为其合法输入。

因此,比特币网络中的合法交易必须是引用一些现有交易(必须属于付款人才能合法引用)的UTXO作为新交易的输入,并生成新交易。 UTXO(将属于收款人)。

一些简单的交易示例如下所示。

交易目的输入输出签名差异

比特币采用的哈希算法是_rsa是哈希算法吗_比特币原理与挖矿算法

T0

A 转移到 B

别人对A的交易输出

B可以参考交易

签名确认

输入减去输出,交易的服务费

T1

B转移给C

T0的输出

C可以引用事务

B签名确认

输入减去输出,即交易服务费

p>

T2

X 去 Y

别人对X的交易输出

Y可以参考交易

X 签名确认

rsa是哈希算法吗_比特币原理与挖矿算法_比特币采用的哈希算法是

输入减去输出,交易服务费

至此,第一个问题已经解决了。注意:这里的解释比较简单。更深入的细节请参考《比特币事物(2)--Transactions)

.

关于第二个问题,A 真的有超过 10 BTC 的资产吗?

这道题的验证很简单,在全球区块链中追踪即可验证。

其他问题经济游戏

图片

假设全球区块链中有一个区块,记录了100 BTC从A到B的转账。交易内容。但是比特币采用的哈希算法是,比特币网络中有一个恶意节点想要篡改这个区块的交易记录,所以在这个区块之前开了一个分叉。那么它最终会成功吗?

为了解释这个问题,我们需要介绍比特币系统的最长链原理。

最长链原则:所有节点默认信任全局区块链中最长的分支。

根据最长链原则,除恶意节点外,所有其他节点都会信任区块链最长的分支。如果一个恶意节点希望其分支成为最长的分支,那么它将占据全球计算能力的 51% 以上,并且可以击败所有其他节点。这是从经济学的角度来说,就是需要付出巨大的成本,却只能获得很小的收益,而且投入和产出严重不匹配。

总结

比特币采用这种区块链。作为底层支撑,分布式数据库从2009年开始运行,并经过了大规模、长期的考验。事实证明是可行的。

虽然区块链具有去中心化和解决信任问题的优点,但它也有明显的缺点:

因此,我们不能妄想一项新技术或技术产品一定要先进,而是要理性看待它的优缺点。

最后,比特币所包含的区块链技术可以在很多场景中扩展应用,值得学习。此外,比特币所包含的分布式系统设计思想和密码学原理也值得深入研究。

参考比特币