主页 > imtoken钱包下载官网 > 简单来说:从比特币交易的生命周期理解区块链技术

简单来说:从比特币交易的生命周期理解区块链技术

imtoken钱包下载官网 2023-07-24 05:16:13

最近看了很多解释区块链的文章,发现也有很多文章

太概念化或者讲一些应用前景和行业判断,或者太专业、晦涩难懂,弄了很多

没有技术基础的小伙伴很难真正了解区块链技术。综合以上原因,希望通过

通过比特币交易的完整生命周期来解释比特币中的区块链技术。在这个具体的

在流程的背景下,我相信区块链会更容易理解。

基础知识:

区块链不等于比特币,区块链只是比特币系统用来记录交易信息的账户

书;

比特币没有账户余额的概念,所有交易只记录资金的来源和去向,所以

账户余额是区块链计算的结果;

挖矿奖励是维护整个系统,鼓励人们使用自己设备的算力资源协同工作

验证每笔交易有效性的奖励;

假设一旦创建了比特币交易 A,它的生命周期就开始了。随后,交易A将

由一个或多个签名加密(这些签名用于表明交易A中的资金流由资金拥有

经所有者许可)。然后,交易A被广播到比特币网络,最快接收到广播信息的就是那个

相邻的2-3个节点,这些节点都会参与交易的验证,同时交易会在网络中重复

广播直到交易 A 被网络中的大多数节点(所有下载比特币客户端的设备)广播

有可能成为这样的节点)接收。

最终,交易 A 由参与挖矿的节点和交易 A 以及其他一些最近创建的代币验证

构造好的交易一起打包成区块B,加入区块链,此时整个区块链就

用新的块 B 扩展。 Block B 在获得超过 6 个“确认”时被视为否

可撤销,因为撤销和重建六个区块需要大量计算,所以交易打包在一起放入

块需要大量的计算来证明,但只需要少量的计算来验证它们是否已被证明。

我们将上面的交易流程描述简单分解为以下6个步骤:

1. 生成新交易

2.签名加密

3.交易通过比特币网络传播

4. 整合交易并构建新区块

5. 挖矿

6.新区块连接到区块链

接下来,我们将详细分析这6个交易步骤的具体细节以及所使用的底层技术,在

在解释每个步骤和具体概念时,我会给出适当的例子来帮助理解,如果仍然没有

如果你看懂了,那你一定是读得太快了……

当隔壁老王想把钱包里的比特币转给老张时,交易被老王阻止了

钱包已建成。

将比特币交易理解为纸质支票有助于我们理解比特币交易是一种资产

一种用于汇款目的的工具,当收款人或持票人带着支票来银行时,银行会无条件的

支付其规定的金额。而且交易的发起人不一定是交易的签字人。

任何人都可以在线或离线创建比特币交易,即使创建交易的人不是账户

帐户的授权签字人。就像公司秘书开的这张支票(发起交易),需要等待

老板签署交易(数字签名)。

需要了解以下4个概念,才能更好地理解“新政建设”的一些细节

部分:

UTXO

交易输出

交易输入

比特币采用区块链技术_比特币区块链扩容技术_区块链与比特币

交易费用

UTXO 很容易理解,就像一个账户余额。它是比特币交易的基本单位,未被使用

一笔交易输出,Unspent Transaction Output,简称UTXO,“未花费交易输出”

Out”。UTXO 不能再分割了,1 个 UTXO 可以是 1 个“satoshi”的任意倍数,就像美元可以分割一样

类似于“cents”,“cents”不能再分了。 UTXO记录在区块链中,比特币

网络监控数以百万计的所有可用 UTXO。

假设此时隔壁老王有1.9个比特币,当隔壁老王收到0.1个比特币时,这金子

金额在区块链中记录为UTXO,现在法老拥有的2个比特币也被视为

UTXO 分布在数百个交易和数百个区块中。事实上,没有地方存放比特币

地址或账户余额在哪里,只有老王(所有者)锁定的去中心化UTXO。

因此,

概念是扫描区块链并聚合所有物品

用户的UTXO来计算用户的余额。

比特币交易是一种具有输入值和输出值的数据结构,其中包含资金的转移

起始地址(输入)到目的地址(输出)的传输代码信息:

.

每笔比特币交易都会产生一个输出,输出记录在比特币账本中。所有输出都可以

创建一定数量的可用于支付的比特币(又名 UTXO)。这些 UTXO 将被整个网络使用

标识其所有者可以在未来交易中使用它们的记录。给隔壁法老发比特币其实是

就是创建一个新的UTXO,他可以用它来进行新的支付。

交易输入是一个指向UTXO的指针,当用户支付时,他的钱包通过选择可用的UTXO来构建

做个交易。

隔壁小王要支付0.015比特币,他的钱包应用会选择一个0.01 UTXO和一个

0.005个UTXO,一起使用可以获得想要的支付金额。

大多数交易都包含交易费用,旨在补偿比特币矿工的网络安全。大多数

数字钱包自动计算并统计交易费用,由挖出区块的矿工获得并记录在

在此交易的区块链中。交易数据结构没有交易费用字段,这意味着您无法从交易中获取交易

直接在消息中查看交易费用金额。

隔壁老王要消费和支付0.015比特币。为了让矿工优先考虑他的交易,他

想支付0.001比特币作为交易手续费,那么老王的钱包至少需要从区块链记录中整合

至少 0.016 比特币 UTXO。假设他的钱包有一个 0.2 个比特币的 UTXO,那么这个数量

新的交易会产生一个0.2比特币的输入,和两个输出:一个是消耗0.015比特币

手续费金额支付到目标地址,另外输出0.184比特币作为找零支付到老王的钱包

带有0.001 未分配比特币的地址是“隐藏的”交易费用。

一定要定义清楚0.184比特币是输出指向老王自己的钱包,

这样,零钱就会有效地“返还”到老王的钱包里,否则0.184比特币也会变成交易手续费,

这个惊喜“红包”是矿工挖出来的。

一旦比特币交易被创建,它就会由资金的所有者签署(可能有多个所有者)。

如果它是合法创建并签署的,则该交易现在有效。它包含资金转移的所有时间

所需的所有信息。用户的私钥用于生成支付比特币所需的签名以证明资金的所有权

所有权,这样的签名加密是为了保证交易内容不被篡改。

网络中的节点收到交易信息后,会检查交易的合法性,并添加资金所有人的签名

保密是重要的验证依据。在所有检查通过后,该交易将被标记为合法的未确认交易。

网络广播。

比特币区块链扩容技术_区块链与比特币_比特币采用区块链技术

需要了解以下4个概念,才能更深入地理解“签名加密”的一些细节:

私钥

公钥

钱包

交易脚本

一个比特币钱包包含一系列密钥对,每个密钥对包括一个私钥和一个公钥。

私钥是一个数字,通常是随机生成的。对比特币地址中所有资金的控制取决于

对相应私钥的所有权和控制权。私钥一定要保密,因为一旦泄露,就相当于私钥了

比特币也在保护之下丢失了。

通过从加密安全的随机源中获取一串随机字节并使用 SHA256 对其进行散列

操作生成一个 256 位的数字,这样的数字可以用作私钥。十六进制

自定义格式代表一个随机生成的私钥,即:

可以通过椭圆曲线算法从私钥计算出公钥,这是一个不可逆的过程。通过公钥传递

单向密码哈希算法生成的比特币地址以数字“1”开头,比特币地址在交易中

是收件人的地址。

比特币钱包是一个存放私钥的容器,钱包里只包含私钥而不是比特币,每个用户都有一个包

具有多个私钥的钱包。钱包包含一对私钥和公钥,用户使用这些私钥对交易进行签名

简单。

一种常见且典型的钱包是用“助记词”作为种子生成私钥钱

包。一系列这样的词可以重新创建种子并重新创建钱包和所有私钥。在第一个

每次创建钱包时,带有助记码的钱包应用都会向用户生成一个 12-24 的订单

单词,单词的顺序是钱包的备份。

一般来说,每笔交易都会包含两个脚本:

输出脚本 scriptPubKey 和输入脚本 scriptSig。

输出脚本一般是付款人设置锁定交易,用来控制收款人的权限,比如限制

您必须是公钥(比特币地址)的所有者才能使用此交易。

输入脚本(签名脚本)往往包含由用户私钥生成的数字签名,以证明其身份

可以满足交易输出脚本的锁定条件,即交易中比特币资金的所有权。

比特币交易的输入输出并不是简单地对应付款人的私钥和收据

付款人的公钥地址,还包含更多内容,可以通过脚本直接验证交易的有效性

性能,并实现更复杂的交易方式,如“多重签名脚本”,确保只有自己和

输出只能在第三方钱包协签后使用,保证黑客也可以攻击第三方钱包

无法使用用户的比特币。

交易需要先传递到比特币网络,然后才能传播并添加到区块链中。有点

一旦交易被发送到连接到比特币网络的任何人,一次硬币交易只是 300 到 400 字节的数据

的节点,此交易将由该节点验证。如果交易被验证为有效,节点将发送交易

事务被传播到连接到该节点的其他节点。

无论交易有效还是没有被节点验证,交易发起者都会收到一个回执消息,包括交易

返回是否接受 Yi 的信息。在几秒钟内,一个有效的交易可以指数级传播

效率通过网络传播,直到被连接到网络的所有节点接收到。

每个节点在传播之前独立验证每个事务。因此,一个

异常交易只能到达一个节点。因此,比特币网络可以有效的抵御入侵和避免

免受垃圾邮件和有效的拒绝服务攻击。

需要了解以下4个概念,才能更深入地理解“交易传播”的一些细节:

客户

比特币区块链扩容技术_比特币采用区块链技术_区块链与比特币

全节点

轻量级节点 (SPV) 节点

挖矿节点

bitcoin.org 可以下载标准客户端 Bitcoin Core,也称为“Satoshi 客户端”

中本聪客户端。它包含了比特币系统的所有内容:钱包功能、整个交易

账本(区块链)的完整副本,交易确认引擎,P2P比特币网络中的完整网络

节点。

维护完整、最新的区块链副本的节点称为“完整节点”。全节点可以

独立验证所有交易,无需任何外部参考。

只保留区块链的一部分,这是通过一种称为“简单支付验证(SPV)”的方法完成的

进行交易验证的节点称为“SPV节点”,也称为“轻量级节点”。越来越多的用户钱包

都是 SPV 节点,尤其是运行在没有存储空间的智能手机等资源受限设备上

完整的 150G 大小的区块链。

通过在特殊硬件设备上运行的工作量证明算法以竞争方式创建挖矿节点

新区块。部分挖矿节点也是全节点,保留区块链的完整副本;

使用矿池挖矿的节点属于轻量级节点比特币采用区块链技术,必须依赖矿池服务器维护的全节点才能工作

做。

验证交易后,每个比特币网络节点都会将这些交易添加到自己的内存池,mempool

也称为交易池,用于临时存放尚未加入区块的交易记录。除了收集和

除了验证交易之外,这些交易也被打包到候选区块中。

挖矿节点需要为内存池中的每笔交易分配一个优先级,并选择优先级较高的交易

记录用于构建候选块。区块填满后,内存池中剩余的交易将成为下一个区块

候选交易

。例如,一个挖矿节点整合了来自内存池的所有交易,一个新的候选区域

区块包含 418 笔交易,总矿工费为 0.09094925 BTC。

现在已经创建了一个包含 418 个交易的候选区块,挖矿节点已准备好对其进行挖矿。

临时未验证交易池

事务优先级

块结构

矿池

比特币网络中几乎每个节点都维护着一个未确认交易的临时列表,称为内存池

或交易池。节点使用此池来跟踪网络已知但尚未被区块链覆盖的内容

包含的交易。交易池存储在本地内存,而不是硬盘,所以不同的节点

两个池的内容可能有很大的不同。

事务优先级

挖矿节点需要为内存池中的每笔交易分配一个优先级,并选择优先级较高的交易

用于构建候选块的记录。交易的优先级是交易输入所花费的UTXO的交易创建时间

确定具有较高输入值和较早创建时间的交易比具有较新输入值的交易具有更大的价值

高优先级。

如果块中有足够的空间,用于存储交易的块的前 50K 字节将保留给更高优先级的交易

空间,高优先级交易不需要矿工费。矿工费越高,交易优先处理

等级也更高。

块是聚合交易信息容器的数据结构。它由块头和块体组成,块头

80字节,平均交易至少250字节,平均区块包含至少500多个

交易。

比特币采用区块链技术_区块链与比特币_比特币区块链扩容技术

1.用于连接前一个区块的数据,从父区块的哈希值开始索引;

2. 挖矿难度、Nonce(工作量证明算法的计数器)、时间戳;

3.一个能够汇总并快速汇总验证区块中所有交易数据的Merkle树根

数据。

改变了挖矿奖励由获胜的矿工单独获得的状态,并采用团队合作来集中精力

以算力进行挖矿,输出的数字货币根据算力进行分配。

采矿成为一项团队运动,一群矿工于 2010 年 12 月 16 日一起开采了它的雪泥池

第一块。根据他们贡献的工作量,每个矿工都会得到相应的报酬。接下来的两个

在过去的一个月里,slush 矿池的算力从 1 400Mhash/s 增长到了 60Ghash/s。

现在已经创建了一个候选区块,挖矿节点已经准备好进行挖矿了。矿工竞争

完成一个基于密码哈希算法的数学谜题,获胜者有权在区块链上记录交易和

获得奖励。每 10 分钟左右会生成一个大小不超过 1 MB 的新块,此块记录

在 10 分钟内发生和验证的交易内容。矿工在挖矿过程中会得到两种类型

奖励:创建新区块的新硬币奖励,以及包含在区块中的交易的交易费用。

一旦一个挖矿节点赢得算力竞赛并首先得到数学问题的答案,它就会立即

这个块被发送给它的所有邻居,它们正在接收和

在这个新块之后,还有

这个区块会继续传播,每个节点都会将它作为一个新区块添加到自己节点的区块链副本中

.

工作证明

创建硬币

Coinbase 奖励和矿工费

工作量证明,通过计算猜测一个值(随机数)。特定于比特币,矿工必须

解决SHA256算法,同时满足全网目标难度。优先考虑工作量证明的矿工可以

获得比特币奖励。保证一段时间内只有少数合法提案可以出现在系统中。

哈希问题是不可逆的,只能通过蛮力计算找到问题的答案。一旦合规

所需的nonce表示以概率支付相应的计算能力。谁的算力多比特币采用区块链技术,谁先解决问题

概率越大。

区块中的第一笔交易是特殊交易,称为coinbase交易或Coinbase交易,本次交易

由挖矿节点构建,用于奖励矿工的贡献。

投币交易的输入:投币交易与其他交易的区别在于交易输入没有

UTXO,也没有“输入脚本”。该字段替换为 Coinbase 数据,开头除外

除了几个字节,矿工可以自由使用Coinbase的其他部分,随意填写任意数字

数据。因此,中本聪在创世区块的 Coinbase 中填充了数据“The

Times 03/Jan/ 2009 总理处于第二轮救助的边缘

银行。

硬币交易的输出:由获胜矿工构建并支付硬币奖励和矿工费

支付到他们自己的比特币钱包地址。

矿工在挖矿过程中获得两种奖励:创建新区块的新币和区块

包含在交易中的交易费用

。比特币的货币是通过挖矿发行的,大约每四年减半。

2009 年 1 月每块 50 个比特币,2012 年 11 月每块 25 个比特币减半

硬币,现在每个新区块奖励 12.5 个比特币。比特币挖矿奖励呈指数级下降,直到

2140年,所有比特币都会发行,不会再创造新的比特币。

比特币采用区块链技术_区块链与比特币_比特币区块链扩容技术

例如:隔壁老王的挖矿节点构建了一个创币交易,并支付了自己12.59094928比特

币,其中 12.5 个比特币是 Coinbase 奖励,0.09094928 个比特币是矿工费。

比特币交易生命周期的最后一步是将新区块链接到具有最大工作量证明的链上。一个

一旦节点验证了一个新区块,它将尝试将新区块连接到现有区块链组

安装它。

节点维护着三种区块:第一种是连接到主链的区块,第二种是来自主链的分支

的(备用链)块,即在已知链中未找到已知父块的最后一个块。验证过程中

中,一旦发现不合规,验证失败,该区块会被节点拒绝,不会被添加

进入任何链条。

如果一个节点接收到一个有效的区块,并且在现有区块链中没有找到它的父区块,那么

该块被视为“孤儿”。孤立块被保留在孤立块池中,直到它们的父块被删除

收到节点。

每个节点总是选择并尝试扩展代表累积最大工作量证明的区块链,即

累积难度最长或最大的链,只要所有节点选择累积难度最长的区块链,就整

比特币网络最终会收敛到一个一致的状态。

创世区块

难度目标和难度调整

区块链的分叉

区块浏览器

区块链中的第一个区块创建于 2009 年,称为创世区块。是区块链中的所有领域

区块的共同祖先,意思是你从任何一个区块往回走,沿着链走,最终你会到达创世区

阻止。

创世块的哈希值为:

000000000019d6689c085ae165831e934ff763ae46a2a6c172b3f1b60a8ce26f

在区块浏览器网站(blockchain.info)上搜索这个区块哈希,你会找到这个哈希

描述此块内容的页面:

比特币区块平均每 10 分钟生成一次。这是比特币的货币发行率和交易速度

度数的基础必须始终保持不变。随着技术的发展,计算机的性能将迅速提高。此外,

参与挖矿的人和计算机也在不断变化。为了保持每 10 分钟生成一次新块

速率,挖矿难度必须根据这些变化进行调整。

2009 年 12 月 30 日,比特币挖矿难度首次增加。寻找一个比特币区块需要整个网络

耗时10分钟,每找到2016个区块,按照前2016个区块的完成时间进行判断

要调整的度数。

新难度 = 旧难度 *(2016 年最后一个区块的实际时间/

20160 分钟)

当两个矿工在相对较短的时间内各自拥有工作量证明解决方案时,就会发生分叉。两个

一旦矿工在他们各自的候选区块中找到解决方案,他们就会立即将他们的“获胜”区块传播到网络,首先

传播到相邻节点,然后传播到整个网络。

因为每个矿工的区块数据不同,解决问题得到的结果也不同,都是

是正确的答案,只是块不同。此刻在区块链中,有两个不同点满足要求

块。不同的矿工依次看到这两个区块。通常,矿工会自动

先复制你看过的区块,然后在这个区块开始新的挖矿作业。这时候分叉是

生成。

由于分叉区块,分叉链上的矿工数量不同,所以算力也不同。两条链

增长速度也不同,总有一条链比另一条长。当矿工发现全网有

更长的链,他将放弃当前的分叉链,继续在更长的主链上挖矿

工作。