一笔比特币中的区块链技术是什么?(图)

资讯 8个月前 manoon
0


一笔比特币中的区块链技术是什么?(图)

为什么要写这篇文章?最近看了很多讲解区块链的文章,发现很多文章要么过于概念化,要么讲了一些应用前景和行业判断,要么过于专业晦涩,让很多没有技术背景的小伙伴难以真正理解区块链技术。基于以上原因,我希望通过比特币交易的完整生命周期来解释比特币中的区块链技术。在这样一个具体的流程场景中,相信区块链会更容易理解。

基础知识:

交易的完整过程:从新交易的创建到新区块的生成

假设一旦创建了比特币交易 A,它的生命周期就开始了。随后,交易 A 将通过一个或多个签名进行加密(这些签名用于表明交易 A 中的资金流向已获得资金所有者的批准)。然后将交易A广播到比特币网络,最快接收广播信息的是相邻的2-3个节点。这些节点会参与验证交易,同时交易会在网络中再次广播。直到这个交易 A 被网络中的大多数节点接收到(所有下载比特币客户端的设备都可能成为这样的节点)。

最后,交易 A 由参与挖矿的节点验证。交易 A 和其他一些最近创建的交易被打包到一个区块 B 中并添加到区块链中。这时候整个区块链被扩展了,增加了一个新的区块B。区块 B 被“确认”超过 6 次就被认为是不可撤销的,因为撤销和重建六个区块需要大量的计算,而将交易打包并放入其中需要大量的时间块。计算来证明,但只有少量的计算可以验证它们已经被证明。


一笔比特币中的区块链技术是什么?(图)

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

生成新交易,签署加密交易,在比特币网络中传播和整合交易&构建新区块,挖掘新区块,并连接到区块链

接下来,我们将详细分析六个交易步骤的具体细节以及所使用的底层技术。在解释每个步骤和具体概念时,我会引用适当的例子来帮助理解。如果你还没看懂,那一定是你看得太快了……

01 生成新交易

当隔壁老王想把自己钱包里的一个比特币转给老张时,这笔交易就由老王的钱包构建了。

将比特币交易理解为纸质支票有助于我们理解比特币交易是一种以货币转移为目的的工具,就像收款人或持票人持支票去银行时,银行会无条件支付其规定的金额。并且交易发起人不一定是签署交易的人。

任何人都可以在线或离线创建比特币交易,即使创建交易的人不是账户的授权签字人。就像公司秘书签发的这张支票(发起交易)一样,你需要等待老板签署交易(数字签名)。

为了更深入地理解“新交易构建”的一些细节,需要了解四个概念:

UTXO

UTXO 很容易理解,它就像一个账户的余额。它是比特币交易的基本单位,一个未使用的交易输出,Unspent Transaction Output,简称UTXO,“未使用的交易输出”。UTXO 不能再分割了。1 UTXO 可以是 1 Satoshi 的任意倍数,就像美元可以分为“美分”一样,“美分”不能再分了。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个比特币也将成为交易手续费,矿工们将被挖进这个惊喜的“红包”。

02 签名加密

创建比特币交易后,将由基金所有者(可能有多个所有者)签名。如果它是合法创建和签署的,则交易现在有效。它包含转移资金所需的所有信息。用户的私钥用于生成支付比特币所需的签名,以证明资金的所有权。这种签名加密是为了保证交易内容不被篡改。这与前面描述的纸质支票的授权签名具有相同的效果。

网络中的节点收到交易信息后,会检查交易的合法性。基金所有者的签名加密是重要的验证依据。检查通过后,交易将被标记为合法的未经确认的交易,然后才会发布到网络上。广播进来。

为了对“签名加密”的一些细节有更深入的了解,需要了解四个概念:

私钥

一个比特币钱包包含一系列密钥对,每个密钥对包括一个私钥和一个公钥。私钥是一个数字,通常是随机生成的。一个比特币地址中所有资金的控制取决于相应私钥的所有权和控制权。私钥一定要保密,因为一旦泄露,就相当于丢失了私钥保护下的比特币。

通过从加密安全的随机源中取出一串随机字节,使用 SHA256 哈希算法生成一个 256 位的数字,这样的数字可以用作私钥。表示一个随机生成的十六进制格式的私钥,即:

1E99423A4ED27608A15A2616A2B0E9E52CED330AC530EDCC32C8FFC6A526AEDD

公钥

公钥可以通过椭圆曲线算法从私钥计算出来,这是一个不可逆的过程。公钥通过单向加密哈希算法生成的比特币地址以数字“1”开头。在交易中,比特币地址就是收款人的地址。


一笔比特币中的区块链技术是什么?(图)

钱包

比特币钱包是私钥的容器。钱包只包含私钥而不是比特币。每个用户都有一个包含多个私钥的钱包。钱包包含一对私钥和公钥,用户使用这些私钥对交易进行签名。

常见且典型的钱包之一是使用“助记码词汇”作为种子生成私钥的钱包。这样的单词序列可以重新创建种子并重新创建钱包和所有私钥。首次创建钱包时,带有助记码的钱包应用程序会生成一个12到24个单词给用户。字的顺序是钱包的备份。


一笔比特币中的区块链技术是什么?(图)

交易脚本

交易脚本是测试交易是否合法的核心机制。一般每笔交易都会包含两个脚本:输出脚本scriptPubKey和输入脚本scriptSig。

输出脚本一般由付款人设置锁定交易,用于控制收款人的权限。例如,限制某个公钥(比特币地址)的所有者可以花费交易。

输入脚本(签名脚本)往往包含用户私钥生成的数字签名,以证明其能够满足交易输出脚本的锁定条件,即某笔交易中比特币资金的所有权。

值得注意的是,比特币交易的输入输出并不仅仅对应付款人的私钥和收款人的公钥地址,还包含更多的内容,交易的有效性可以直接通过脚本。,并实现更复杂的交易方式,如“多重签名脚本”,确保输出只有与第三方钱包共同签名后才能使用。这确保了黑客即使在攻击第三方钱包后也无法花掉用户的钱。比特币。

03 交易在比特币网络中传播

交易需要先传输到比特币网络,然后才能传播并添加到区块链中。一笔比特币交易只有 300 到 400 字节的数据。一旦交易被发送到连接到比特币网络的任何节点,该交易将被该节点验证。如果交易被验证为有效,则该节点会将交易传播到连接到该节点的其他节点。

无论交易是否被节点验证,交易发起方都会收到回执消息,其中包含交易是否被接受的返回信息。在几秒钟内比特币为什么可以交易,有效交易将以指数扩散效率在网络中传播,直到连接到网络的所有节点都收到它。

值得注意的是,每个节点在传播每笔交易之前都会进行独立的验证。因此,异常交换最多只能到达一个节点。因此,比特币网络可以有效抵御入侵,避免垃圾邮件和有效的拒绝服务攻击。

为了更深入地理解“事务通信”的一些细节,需要了解四个概念:

客户

Bitcoin.org可以下载标准客户端Bitcoin Core,也称为“Satoshi客户端”(satoshi client)。它包含了比特币系统的所有内容:钱包功能、整个交易账本(区块链)的完整副本、交易确认引擎以及P2P比特币网络中的完整网络节点


一笔比特币中的区块链技术是什么?(图)

全节点

维护区块链完整和最新副本的节点称为“完整节点”。全节点可以独立验证所有交易,无需任何外部参考。


一笔比特币中的区块链技术是什么?(图)

轻量级节点/SPV节点

只保留区块链的一部分,通过称为“简单支付验证(SPV)”的方法完成交易验证的节点称为“SPV节点”,也称为“轻量级节点”。越来越多的用户钱包是SPV节点,尤其是运行在智能手机等资源受限设备上的钱包,没有空间存储完整的150G区块链。


一笔比特币中的区块链技术是什么?(图)

挖矿节点

挖矿节点通过运行在特殊硬件设备上的工作量证明算法以竞争方式创建新块。一些挖矿节点也是全节点并保留区块链的完整副本;一些参与矿池挖矿的节点是轻量级节点,必须依赖矿池服务器维护的全节点才能工作。


一笔比特币中的区块链技术是什么?(图)

04 整合交易并构建新区块

在验证交易后,每个比特币网络节点都会将这些交易添加到自己的内存池中。内存池也称为交易池,用于暂时存储尚未加入区块的交易记录。除了收集和验证交易,挖矿节点还会将这些交易打包成一个候选区块。

挖矿节点需要为内存池中的每个交易分配一个优先级,并选择更高优先级的交易记录来构建候选区块。区块被填满后,内存池中剩余的交易将成为该区块的下一个候选交易。例如,一个挖矿节点整合了内存池中的所有交易,新的候选区块包含418个交易,总矿工费为0.09094925比特币。

既然已经创建了一个包含 418 个交易的候选区块,挖矿节点就可以使用它进行挖矿了。

为了更深入地理解“综合交易”的一些细节,需要了解四个概念:

临时未验证交易池

比特币网络中几乎每个节点都维护一个临时的未确认交易列表,称为内存池或交易池。节点使用此池来跟踪和记录网络已知但尚未包含在区块链中的交易。交易池存储在本地内存中,而不是硬盘中,因此不同节点的两个交易池的内容可能会有很大差异。

交易优先级

挖矿节点需要为内存池中的每个交易分配一个优先级,并选择更高优先级的交易记录来构建候选区块。交易的优先级由花费在交易输入上的 UTXO 交易创建时间决定。具有较高交易输入值和较早创建时间的交易比具有更新和较小输入值的交易具有更高的优先级。

用于存储块中事务的前 50K 字节保留用于更高优先级的事务。如果区块中有足够的空间,高优先级的交易将不需要矿工费用。矿工费越高,正在处理的交易的优先级就越高。

块结构

区块是聚合交易信息容器的数据结构。它由块头和块体组成。区块头为 80 字节,平均交易至少 250 字节,每个区块至少包含 500 笔交易。

区块头包含三组元数据:

用于连接前一个区块,并索引父区块的哈希值的数据;挖矿难度,Nonce(工作量证明算法的计数器),时间戳;能够汇总并快速汇总验证区块中的所有交易数据的默克尔树的根数据。矿池

改变了仅由获胜矿工获得的挖矿奖励的原始状态。采用团队合作,集中算力进行挖矿,根据算力分配产出的数字货币

挖矿已经成为一项团队运动,2010 年 12 月 16 日,一群矿工在 slush 矿池中挖出了自己的第一个区块。根据贡献的工作量,每个矿工得到相应的报酬。在接下来的两个月里,slush矿池的算力从1400Mhash/s提升到了60Ghash/s。

05 采矿

现在已经创建了一个候选块,挖矿节点可以使用它进行挖矿了。矿工们竞相完成一个基于加密哈希算法的数学谜题比特币为什么可以交易,获胜者有权在区块链上记录交易并获得奖励。每 10 分钟左右,就会生成一个大小不超过 1 MB 的新块。该区块记录了这 10 分钟内发生并验证的交易内容。矿工在挖矿过程中会获得两种奖励:创建新区块的新货币奖励,以及包含在区块中的交易的交易费。

一旦某个挖矿节点在算力竞争中获胜并首先得到数学难题的答案,它会立即将区块发送给其所有相邻节点。这些节点收到并独立验证新区块后,也会继续传播这个区块,每个节点都会把它作为一个新区块添加到自己节点的区块链副本中。

为了对“确认交易”的一些细节有更深入的了解,需要了解三个概念:

工作证明

工作量证明,通过计算猜测一个值(随机数)。具体到比特币,矿工必须在满足全网目标难度的同时解决SHA256算法。首先完成工作量证明的矿工可以获得比特币奖励。保证在一段时间内,系统中只能出现少数法律提案。

哈希问题是不可逆的,只有通过蛮力计算才能找到问题的答案。一旦得到满足要求的nonce,就意味着相应的算力已经被概率支付了。谁的计算能力越强,谁先解决问题的概率就越大。

硬币交易

区块中的第一笔交易是称为造币交易或 Coinbase 交易的特殊交易。该交易由挖矿节点构建,用于奖励矿工的贡献。

Coinbase 奖励和矿工费

矿工在挖矿过程中会获得两种奖励:创建新区块的新货币奖励,以及包含在区块中的交易的交易费。比特币的货币是通过挖矿发行的,大约每四年减半。2009 年 1 月,每个区块奖励 50 个比特币。到 2012 年 11 月,它减半,每个区块奖励 25 个比特币。现在每个新区块奖励 12.5 个比特币。比特币挖矿奖励呈指数下降,直到 2140 年所有比特币发行完毕,并且不会产生新的比特币。

例如:隔壁老王的挖矿节点构建了一个造币交易,给自己支付了12.59094928比特币,其中12.5比特币是Coinbase奖励,0.09094928比特币是矿工的费用。

06 新区块上链


一笔比特币中的区块链技术是什么?(图)

比特币交易生命周期的最后一步是将新区块连接到具有最大工作量证明的链上。一旦节点验证了一个新块,它将尝试将新块连接到现有区块链并组装它。

节点维护三种类型的块:第一种是连接到主链的块,第二种是从主链(备份链)分支出来的块,最后一种是在已知链中没有找到块。已知父块。在验证过程中,一旦发现不符合标准的地方,验证将失败,该区块将被节点拒绝,不会加入任何链。

如果一个节点收到一个有效的区块,但在现有区块链中没有找到它的父区块,那么这个区块就被认为是一个“孤块”。孤块将被保存在孤块池中,直到节点接收到它们的父块。

每个节点总是选择并尝试扩展代表最大累积工作量证明的区块链,即最长或最大累积难度链,只要所有节点都选择累积难度最长的区块链,整个比特币网络最终会收敛到一致状态。

有四个概念需要理解,才能更深入地理解“新区块上链”的细节:

创世区块

区块链中的第一个区块创建于 2009 年,称为创世区块。它是区块链中所有区块的共同祖先,这意味着你最终会从任何区块到达创世区块并返回链。

创世区块的哈希值为:000000000019d6689c085ae165831e934ff763ae46a2a6c172b3f1b60a8ce26f

在区块浏览网站(blockchain.info)上搜索这个区块的hash值,你会发现一个页面,通过hash值描述了这个区块的内容:


一笔比特币中的区块链技术是什么?(图)

难度目标和难度调整

平均而言,比特币区块每 10 分钟生成一次。这是比特币货币发行率和交易完成率的基础,必须始终保持不变。随着科技的发展,计算机的性能会迅速提高。此外,参与挖矿的人和计算机也会不断变化。为了保持每 10 分钟的新区块生成率,必须根据这些变化调整挖矿难度。

2009年12月30日,比特币挖矿难度首次提升。寻找一个比特币区块需要整个网络花费 10 分钟的时间来处理。每发现2,016个区块,难度会根据前2,016个区块的完成时间进行调整。

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


一笔比特币中的区块链技术是什么?(图)

区块链的分叉

当两个矿工在相对较短的时间内各自拥有工作量证明解决方案时,就会发生分歧。一旦两个矿工在各自的候选区块中找到解决方案,他们就会立即将他们的“获胜”区块传播到网络,首先传播到相邻节点,然后传播到整个网络。

由于每个矿工的区块数据不同,他们解决问题得到的结果也不同,都是正确的答案,只是区块不同。此时区块链中,出现了两个不同的符合要求的区块。不同的矿工按顺序看到这两个区块。正常情况下,矿工会先复制他们看到的区块,然后在这个区块开始新的挖矿。这时候分叉就出现了。

从分叉区块开始,由于分叉链上的矿工数量不同,计算能力也不同。两条链的增长速度也不同。总会有一条链比另一条长。当矿工发现全网存在更长的链时,他会放弃当前的分叉链,在更长的主链上继续挖矿。

区块浏览器

如果用户想要浏览区块链信息,他们必须使用区块链浏览器。每个区块记录的内容可以在区块链浏览器上查看。区块链浏览器可以说是浏览区块链信息的主窗口。

以太坊区块浏览器如下图所示


一笔比特币中的区块链技术是什么?(图)

总结

比特币挖矿通过人性解决了区块链维护的问题,这也解释了为什么比特币系统能够稳定运行8年,也让比特币成为区块链技术众多应用中最具活力的一种。“中本聪”对人性的利用,让人们在挖矿获利的同时,可以维持这个系统的运行。但是矿机的出现让比特币的去中心化不完善,所以比特币的创新和改进从未停止。想了解更多可以看我上一篇文章《看透500多这种数字货币真正有价值的技术创新有哪些》,介绍了如何进一步解决矿机对整个矿机的影响区块链网络。

对区块链技术的深刻理解

版权声明:manoon 发表于 2021-11-19 1:56:53。
转载请注明:一笔比特币中的区块链技术是什么?(图) | 198区块链导航

暂无评论

暂无评论...