主页 > imtoken冷钱包app > 比特币原理分析

比特币原理分析

imtoken冷钱包app 2023-03-04 07:32:58

编辑选择:

本文来自csdn。本文通过介绍比特币的三个基本概念,包括区块链、挖矿和P2P网络,简要介绍了比特币的原理。希望对你的学习有所帮助。

一、比特币背景

关于当下流行的电子货币——比特币系统,朋友圈里有很多介绍文章,也有人试图通过漫画形象地解释比特币的特性,但还是看不懂,总有一些不清楚的问题。了解这些问题后,我最近研究了几本比特币书籍和中本聪本人发表的比特币论文。

二、什么是比特币

比特币是一种通过点对点技术实现的电子现金系统,它允许一个组织直接与另一个组织进行在线支付,而无需中间的权威清算机构。

在比特币的世界里,如果你想拥有比特币,你需要申请一个比特币地址,就像你在银行存款,你需要开一个账户,然后你就拥有了这个账户,拥有自己的帐户,您可以将钱存入您的帐户,其他人可以将钱转入您的帐户。当您需要取款或转账给他人时,您需要出示可以打开此地址的密钥,也就是您的私钥,就像您在 ATM 取款时需要提供相同的密码一样。

与银行发行的法币不同,法币的发行由各国中央银行管理。大家都认为央行是可靠的,不会犯错,不会被攻击。但是,比特币的发行不需要中央银行等权威机构。它允许一笔交易直接从一个机构结算到另一个机构,省去了权威机构的结算,提高了交易和结算的效率,节省了交易量。成本,尤其是跨境交易。

点对点在线交易系统如何保证交易的匿名性、正确性和不变性?以及如何防止双花,防止作弊和攻击?

以下章节将通过最通俗的语言解开比特币的奥秘,让你从逻辑上理解比特币是如何工作的,让你学习比特币不留死角,让比特币的方方面面一目了然。心里。

三、区块链

1、首先我们来看看区块链是如何存储的

比特币的算法很聪明_比特币钱包算法_挖比特币用什么算法

对于现金账户系统,首先要解决的就是如何记账,记账在哪里,如何存账。例如,您在中国银行存款,中国银行为您开立账户,您的账户存储在中国银行的服务器上。如果您在中国建设银行存款,中国建设银行会为您开户,您的账户存放在中国建设银行。在银行的服务器上。如果您需要转账到别人在同一家银行的账户,您需要通过这家银行转账和结算,如果您需要转账到别人在其他银行的账户,您需要转账和结算给您通过银联,虽然普通用户无法感知这么多流程,但这些步骤确实存在。

比特币没有中心化的记账系统,而是通过分布式区块链记录比特币的所有权和交易信息。每个比特币参与者都有一个相同的区块链副本。区块链包含随时间排序的多个块。后一个块通过哈希指针指向前一个块,形成一条链。有了这个指针,可以一直找到顶端到底部的第一个块,第一个块成为创世块。每个区块记录前一个区块的哈希值,其实就是前一个节点头的哈希值。如果你想改变一个区块中包含的交易,你必须改变这个区块之后的所有交易。,由于每个块的生成都需要条件和时间,

区块链示意图如下:

在这里写图片描述

从上图可以看出,区块链是由多个区块组成的。每个区块由区块头和区块体组成。每个块头包含块的元信息,还包含指向前一个块的指针。指向区块头哈希值的指针,是防止区块链被篡改的关键信息。块体包含比特币的交易信息。第一笔交易是特殊交易,是对挖矿节点的奖励。这也是产生比特币的唯一方式,即发行比特币的方式。剩下的Transactions都是转账交易,比特币从一个地址支付到另一个地址,这是比特币价值转移的唯一途径。综上所述,比特币只有两种交易:发行和转让。比特币创建后,只能从一个人转移到另一个人,不能凭空消失。比特币的发行总量是有限的,一共2100万,所以它是一种通货紧缩的货币,我们会在相关文章中详细介绍Bitbin的通货紧缩特性。

2、比特币的所有者如何证明他拥有比特币?

上面介绍了区块链的存储。区块链其实就是比特币的账本,记录了谁拥有多少比特币,但是​​这个账本是存储在互联网上并分发的,并不是由中央组织或服务器来存储的。对于账本,剩下的问题是比特币的所有者如何证明他拥有比特币?这就像在银行开户,当您想将钱转给其他人时,您需要在 ATM 上插入您的卡并输入您的 PIN 码。卡相当于比特币的地址,密码相当于比特币的密钥。有了正确的地址和密钥,您就可以主张自己的比特币权利并将比特币转让给他人。进行转账交易。

在自动柜员机提取一笔现金,输入密码解锁账户,我们相信自动柜员机不会泄露密码。那么在比特币的世界里比特币的算法很聪明,我们如何通过私钥来验证一个地址上比特币的所有权呢?

比特币的所有权是通过加密领域的技术实现的。我们先来了解一下加密领域的原理。加密领域大致经历了三个阶段。第一阶段是拼算法,把加密逻辑写得很高级。在代码中,后来才发现,无论代码写得多么复杂的逻辑,总有能破解的高手。因此,生成了对称密钥加密。对称密钥加密通过对称密钥对数据进行加密,然后传输或保存。在需要时,它通过相同的密钥解密和恢复原始数据。缺点是密钥是共享的。无法安全地存储密钥,尤其是在跨组织场景中。之后,聪明的安全科学家发明了非对称加密算法,例如:RSA。非对称算法有一对密钥,一个公钥和一个私钥。私钥可以推导出公钥,但公钥不能推导出私钥。用公钥加密的数据可以用私钥解密,用私钥加密的数据可以用公钥解密。如果组织 A 将数据传递给组织 B,则组织 A 使用公钥加密,组织 B 使用私钥解密。因此,B 组织需要小心保管私钥,而公钥是公开的。这是典型的非对称加密场景,可以有效防止数据被偷窥和篡改。非对称加密还有另一种场景,即签名。签名是加密场景的逆向场景。商户 B 用自己的私钥加密数据,然后将加密后的数据传输给商户 A。商户 A 用公钥解密。如果数据正确,则说明数据是A发送的,有效保证了数据的防篡改。从这两个场景可以看出,公钥是公开的,可以发给任何人,而私钥是私有的。解密或签名。我们可以看到公钥是公开的,可以发送给任何人,而私钥是私有的。解密或签名。我们可以看到公钥是公开的,可以发送给任何人,而私钥是私有的。解密或签名。

比特币证明所有权示意图如下:

比特币钱包算法_比特币的算法很聪明_挖比特币用什么算法

在这里写图片描述

从上图可以看出,在现实生活中,我们用钥匙开锁,用密码从ATM取款。那么在比特币系统中,我们使用秘钥来转移比特币,实现价值的转移。

更具体地说,比特币交易在一个地址上锁定一定数量的脚本,声明拥有该地址的用户将通过密钥的签名证明他拥有该地址,然后花费比特币,比特币被花费后,它不会消失,它会被锁定在其他人的地址中,其他人可以用同样的方法来花费这个比特币。

从上面的过程中,我们总结了加锁和解锁两个动作,分别对应我们平时的加锁和解锁头,在比特币系统中通过加锁脚本和解锁脚本来实现。

锁定脚本将比特币与比特币地址相关联比特币的算法很聪明,证明比特币属于该地址。

解锁脚本提供了这个地址归我所有的证明,这个比特币也归我所有,我可以用它来支付。

下面我们举一个例子来详细说明:

用户 Alice 在比特币地址 A 拥有 10 个比特币。Alice 和 Bob 想要进行交易。鲍勃把他的车卖给了爱丽丝。Alice 需要支付 Bob 10 个比特币。Bob 的比特币地址是 B。

在之前的交易中,Alice 拥有的 10 个比特币被锁定在 Alice 的比特币地址 A 中,来源可能是挖矿收益,也可能是从他人那里转移过来的。稍后我们将详细介绍如何获取比特币。在这里,我们将只关注证明 Alice 拥有比特币的交易的锁定脚本。

锁定脚本的逻辑格式为:

比特币钱包算法_挖比特币用什么算法_比特币的算法很聪明

比特币数量来源锁定地址

10 挖矿获得的地址A

如果你想用这个锁脚本,你需要的解锁脚本如下:

解锁地址解锁

地址A的地址A的公钥,地址A的私钥对前一个区块头的哈希值的签名

具体解锁流程如下:

使用地址A的公钥推导出地址并与地址A进行比较,如果一致,则证明提供的公钥正确,进入下一步。

使用地址 A 的公钥解密签名,如果得到的值与前一个区块的哈希值一致,则证明解锁成功,可以在该地址上花费 10 个比特币。

实际上,锁定和解锁脚本是由基于堆栈的脚本以反向波兰表示法实现的。由于本文篇幅有限,这里就不一一介绍了。锁定和解锁脚本的原理和流程将在后续文章中详细介绍。

挖比特币用什么算法_比特币钱包算法_比特币的算法很聪明

四、挖矿

上一节介绍了比特币使用分布式存储区块链作为记账系统,还介绍了如何申领比特币所有权和向他人支付比特币的过程。现在我们遇到了一个新问题。既然区块链是一个分布式记账系统,每个参与节点都有一份副本,那么谁负责将一笔交易记录到区块链上呢?

这就不得不引入一个新概念,即共识机制。比特币通过工作量证明的共识机制确定记账权。一般来说,谁证明自己的工作量最大,谁就负责记账。

工作量证明示意图如下:

工作量的大小通过计算满足一定标准的比特币区块头的哈希值来体现。试图争夺记账权的节点称为挖矿节点。挖矿节点会对网络节点发出的交易进行验证(网络传播机制将在下一节介绍)。经过验证后,将它们存储在缓冲区中,形成一定的交易存储结构(交易存储在 Merkle 树中,后面有各种介绍),放入块体中,然后根据基本的构造块头块的信息。区块头通常包含前一个区块的哈希值。、Merkle 根(更多内容在后续文章中)、时间戳、难度目标和填充的随机值。这里的随机值是随机生成并填充的。挖矿的过程就是找一个可以填充块头的随机值,使块头的哈希值符合一定的标准,例如:哈希值的哈希值有的第一个位为0,而难度目标是用来表示哈希值标准的难度系数。通过概率算法可以计算出难度值和挖矿成功的概率。

网络上的每个矿工接收并验证一批交易,然后开始挖矿。View 计算满足一定难度值的区块头的哈希值。如果计算成功,则挖矿成功。网络广播挖矿收益后,全网节点验证通过后,区块连接到区块顶部,全网达成一致。矿机需要反复测试随机填充值才能解决。一般是生成随机数,尝试将生成的随机数填充到块头中,然后计算哈希。后续文章会介绍矿机联盟,矿机联盟会生成随机数。划分多个小区域,分配给联盟成员,

除了上面介绍的工作量证明机制之外,还有权益证明、基于份额的权益证明共识机制等,我将在共识机制专文中与大家分享。

五、P2P网络

前两节介绍了比特币的账户体系和记账机制。在本节中,我们将讨论比特币的分布式区块链账本是如何在网络上传输的,以及交易是如何在网络上传输和验证的。

比特币网络中的节点都是点对点的,没有中心化的服务器。节点有不同的类型,不同的类型有不同的职责。我们将在以后的文章中详细介绍它们。这里我们只介绍全节点。这就是比特币核心客户端的工作方式。

比特币钱包算法_挖比特币用什么算法_比特币的算法很聪明

比特币中的全节点除了存储完整的区块链外,还兼有矿工、钱包、路由节点等角色,其职责如下:

矿工:

就像矿工一样,做体力劳动,不断尝试用数字填充构建的区块头的随机字段,以找到满足一定条件的哈希值,如果找到,将这个区块连接到区块链的顶端,并发送合法的区块链到相邻节点。

钱包:

区块链记录造币交易和转账交易,不同于通常意义上的账户体系。通常意义上的账户系统记录的是账户余额,而区块链只记录没有余额的交易。在区块链中,计算一个地址拥有的区块的余额。如果你学过关系型数据库,可以把区块链理解为数据库的索引,也可以把它看成是一本书的目录。

路由节点:

负责在去中心化的网络环境中传输交易和区块。一个节点创建一个事务并将其发送到相邻节点。相邻节点验证后,发送给相邻节点,很快就会传播开来。互联网。如果一个节点通过挖矿发现了一个符合标准的区块,这个节点也会以同样的方式将它传递给相邻节点,然后相邻节点会继续传播,从而使网络中的所有节点达成一致。

P2P网络传播示意图如下:

我们将在后续文章中详细介绍比特币P2P网络的工作机制,包括节点分类、节点发现、节点连接和广播。

六、总结

由于篇幅有限,本文介绍了比特币的三个基本概念,包括区块链、挖矿和P2P网络。稍后,它将详细解释比特币的各个方面,包括如何防止双重支付、智能合约、区块链分叉、通货紧缩特性、锁定和解锁脚本、交易的默克尔树存储、交易的存储格式、区块链的概率被攻击、挖矿难度和挖矿成功时间、更多共识机制、创币交易和转账交易、比特币性能、不同类型的挖矿节点、比特币应用场景等。