区块链网站|NFTS 区块链技术 简单解释:从一个比特币交易的生命周期来理解区块链技术

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

广告位

深入浅出:从一笔比特币交易的生命周期看懂区块链技术

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

基本常识:

区块链不等于比特币。区块链只是比特币系统用来记录交易信息的账本;没有比特币账户余额的概念。所有交易只记录资金的来源和去向。所谓账户余额,是在区块链计算的结果;挖矿奖励是维护整个系统的奖励,鼓励人们使用自己设备的计算资源,共同验证每笔交易的有效性;

事务的整个过程:从创建一个新事务到生成一个新块。假设比特币交易A一旦创建,其生命周期就开始了。随后,交易A将被一个或多个签名加密(这些签名用于表示交易A的资金流动得到资金所有者的许可)。然后将交易A广播到比特币网络中,最早收到广播信息的两三个邻居节点将参与验证交易,同时交易A将在网络中再次广播,直到交易A被网络中的大部分节点收到(所有下载比特币客户端的设备都可能成为这样的节点)。

最后,事务A被参与挖掘的节点验证。事务A与其他最近创建的事务一起打包到块B中,并添加到区块链中。此时,整个区块链被扩展,并增加了一个新的B区。B块被“确认”超过6次就被认为是不可撤销的,因为取消和重建6个块需要巨大的计算量。当事务被打包在一起放入块中时,证明它们需要巨大的计算量,而验证它们已经被证明只需要很小的计算量。

我们简单地将上述交易流程细分为以下6个步骤:

生成新的交易签名,加密交易,在比特币网络中传播和整合交易,构建新的区块,挖掘新的区块并链接到区块。我们将详细分析六个交易步骤的具体细节以及所采用的底层技术。在解释每个步骤和具体概念的时候,我会举适当的例子来帮助你理解。如果你还没读,那一定是你读得太快了.

01生成新交易当隔壁老王要从钱包里转一个比特币给老张时,这个交易就是老王的钱包构造的。

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

任何人都可以在线或离线创建比特币交易,即使创建该交易的人不是该账户的授权签署人。就像这种企业里秘书写的支票(发起交易),需要等老板签字交易(数字签名)。

要对“新交易构造”的一些细节有更深入的理解,需要理解以下四个概念:

UTXO交易输出交易输入交易费用

UTXOUTXO很容易理解,就像一个账户的余额。它是比特币交易的基本单位,是一种未使用的交易输出,称为未使用的交易输出(简称UTXO),“未使用的交易输出”。UTXO不能再分了。一个UTXO可以是一个“从”的任意倍数,就像美元可以分为“分”一样,“分”也可以。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位的数,这样的数可以用作私钥。以十六进制格式表示随机生成的私钥,即:

1e 99423 a4 ed 27608 a 15 a 2616 a2 b 0 e 9e 52 ced 330 AC 530 edcc 32 c8 ffc 6a 526 aedd

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

比特币钱包是私钥的容器。钱包里只有私钥,没有比特币。每个用户都有一个包含多个私钥的钱包。钱包包含一对私钥和公钥,用户使用这些私钥来签署交易。

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

交易脚本交易脚本是检查交易是否合法的核心机制。一般来说,每个事务包括两个脚本:输出脚本scriptPubKey和输入脚本scriptSig。

一般情况下,输出脚本由付款方设置以锁定交易,用于控制收款方的权限。比如要求某个公钥(比特币地址)的主人消费交易。

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

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

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

无论交易是否被节点确认,交易的发起者都会收到一个包含交易是否被接受的返回信息的回执消息。几秒钟之内,一个有效的事务将在网络中呈指数级传播,直到连接到网络的所有节点都接收到它。

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

为了对“交易沟通”的一些细节有更深入的了解,需要理解以下四个概念:

客户端节点轻型节点(SPV)节点挖掘节点

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

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

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

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

04整合交易构建新块验证交易后,每个比特币网络节点会将这些交易添加到自己的内存池中,内存池也称为交易池,用于临时存储未添加到块中的交易记录。除了收集和验证事务之外,挖掘节点还会将这些事务打包到候选块中。

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

既然已经创建了具有418个事务的候选块,挖掘节点就可以使用它进行挖掘了。

为了对“集成交易”的一些细节有更深入的了解,需要理解以下四个概念:

临时未验证交易池交易优先级块结构挖掘池

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

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

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

块结构块是一种数据结构,它聚集了事务信息的容器。它由块头和块体组成。块头80字节,而平均事务至少250字节,每个块平均包含至少500个以上的事务。

标头包含三组元数据:

用于连接前面的块并从父块的哈希值索引的数据;挖掘难度、Nonce(工作量证明算法的计数器)、时间戳;Merkle(默克尔)根数据,可以汇总并快速汇总验证块中的所有事务数据。

矿池改变了原来采矿奖励由一个获胜的矿工独自获得的状态。采用团队合作的方式集中计算能力进行挖掘,并根据计算能力分配输出的数字货币。

采矿成为了一项团队运动,2010年12月16日,一群矿工在雪泥矿池中一起挖出了第一块石头。根据他贡献的工作量,每个矿工都得到了相应的报酬。在接下来的两个月里,slush mine池的计算能力从1400 hash/s提升到60 g hash/s。

05挖掘现在已经创建了候选块,挖掘节点准备好利用它进行挖掘。矿工们比赛完成一个基于加密哈希算法的数学问题,获胜者有权在区块链上记录交易并获得奖励。每隔10分钟左右就会生成一个大小不超过1 MB的新块,这个块记录了这10分钟内发生并被验证的交易内容。矿工在采矿的过程中会获得两种奖励:创造新区块的新币奖励,以及区块所包含的交易的交易费。

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

要更深入地理解“确认交易”的一些细节,需要理解以下三个概念:

工作量证明铸币交易比特币基地奖励和矿工费

工作量证明工作的证明,通过计算猜测一个数值(nonce)。说到比特币,矿工们在满足全网难度的同时,必须解决SHA256算法。完成优先工作量证书的矿工可以获得比特币奖励。确保在一定时间内,系统中只能出现少数合法的提案。

哈希问题是不可逆的,只有通过暴力计算才能找到它的答案。一旦获得了所需的nonce,就意味着相应的计算能力是按概率支付的。谁的计算能力更强,谁先解决问题的概率就更大。

造币交易块中的第一个交易是一个特殊的交易,称为造币交易或比特币基地交易,由挖矿节点构造,用于奖励矿工的贡献。

造币交易的输入:造币交易与其他交易的区别在于,它的交易输入没有UTXO,没有“输入脚本”。该字段被比特币基地数据替换。除了前几个字节,矿工可以随意使用比特币基地的其他部分,随意填写任何数据。因此,中本聪在创世区块比特币基地填写了“时代03/01/2009”等数据。造币交易的产出:由中奖矿工建立,连同造币奖励和矿工费一起支付到其比特币钱包地址。

比特币基地奖励和矿工费矿工在采矿的过程中会获得两种奖励:创造新区块的新硬币奖励,以及区块所包含的交易的交易费。比特币的货币是通过挖矿发行的,每四年减少一半左右。2009年1月,每个街区奖励50个比特币。到2012年11月,每个街区奖励50个比特币。现在,每个新区块奖励12.5个比特币。比特币挖矿奖励呈指数递减,直到2140年所有比特币发行完毕,不再产生新的比特币。

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

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

一个节点维护三种块:第一种是连接到主链的块,第二种是从主链(备用链)生成分支的块,最后一种是在已知链中没有找到其已知父节点的块。在验证的过程中,一旦发现不符合标准的东西,验证就会失败,该块会被节点拒绝,不会被添加到任何链中。

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

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

要对“新块接链”的一些细节有更深的理解,需要理解以下四个概念:

创建区块难度目标和难度调整区块链分叉区块浏览器

创世区块链的第一个区块成立于2009年,名为创世区块。它是区块链中所有区块的共同祖先,这意味着您将沿着链从任何区块返回,并最终到达创造区块。

创世块的Hash值为:00000000019d 6689 c 085 AE 165831 e 934 ff 763 AE 46 a2 a6 c 172 B3 f1 b 60 A8 ce 26 f。

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

难度和难度调整平均每10分钟产生一个比特币块。这是比特币货币发行率和交易完成率的基础,必须永远不变。随着技术的发展,计算机的性能将会迅速提高。此外,参与采矿的人和计算机将不断变化。为了保持新块10分钟的生产速度,必须根据这些变化调整开采难度。

2009年12月30日,比特币的挖矿难度首次提高。整个网络寻找一个比特币块需要10分钟,每找到2016个块,会根据前2016个块的完成时间调整难度。

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

当两个矿工在短时间内计算出他们的工作量证明解时,就会出现区块链分叉。一旦这两个矿工在他们的候选区块中找到了解决方案,他们就立即将他们的“获胜”区块传播到网络,首先传播到邻近节点,然后传播到整个网络。

因为每个矿工的块数据不一样,他们解决问题的结果也不一样。都是正确答案,只是块不一样。区块链此时此刻,有两个不同的区块都符合要求。不同的矿工依次看到这两个区块。通常,矿工会先复制他们看到的区块,然后在这个区块开始新的采矿工作。这时,分叉就发生了。

从分叉块开始,由于分叉链中矿工的数量不同,计算能力也不同,两条链的增长率也不同。总有一条链的长度超过另一条。当一个矿工发现整个网络中存在一个更长的链时,他会放弃自己当前的支链,继续在更长的主链上挖掘。

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

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

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

对区块链技术的深刻理解

广告位
本文来自网络,不代表区块链网站|NFTS立场,转载请注明出处:https://www.qklwz.com/qkl/jishu/24313.html
上一篇
下一篇

发表回复

您的电子邮箱地址不会被公开。 必填项已用 * 标注

返回顶部