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

  说就像是账户的余额UTXO易于理解的。易的基本单位它是比特币交,一个交易输出是未经使用的,action OutputUnspent Trans,TXO简称U,交易输出”“未花费的。不能再分割UTXO, 1“聪” 的任意倍1 个UTXO可以是,割成“美分”一样就像美元可以被分,可以再分割了“分”就不。录于区块链中UTXO被记,单位的所有可用的UTXO比特币网络监测着以百万为。

  递至比特币网络一笔交易需要传,被传播才能,入区块链中也才能加。0 到 400 字节的数据一笔比特币交易只是 30,个连接至比特币网络的节点一旦交易被发送到任意一,被该节点验证这笔交易将会。被验证有效如果交易,到这个节点所连接的其他节点该节点将会将这笔交易传播。

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

  交易创造输出每一笔比特币,币账簿记录下来输出都会被比特。于支付的比特币(也就是UTXO)所有的输出都能创造一定数量的可用。整个网络所识别记录这些UTXO会被,的交易中使用它们其所有者可在未来。际上是创造新的UTXO给隔壁老王发送比特币实,用于新的支付并且能被他。

  UTXO的指针交易输入是指向,付款时当用户,UTXO来构造一笔交易他的钱包通过选择可用的。

  此因,币余额”这个概念“隔壁老王的比特,用户的UTXO来计算该用户的余额是通过扫描区块链并聚合所有属于该。

  到交易信息后网络中节点收,法性进行检查会对交易的合,密是重要的验证依据资金所有者的签名加,通过后检查都,合法的未确认交易则将交易标记为,中进行广播才会在网络。

  个胜出矿工独自获得的状态改变了原来挖矿奖励由一,来集中算力进行挖矿采用团队协作方式,按照算力进行分配对产出的数字货币。

  款方对交易设置锁定输出脚本一般由付,进行权限控制用来对收款方,地址) 的拥有者才能花费这笔交易例如限制必须是某个公钥 (比特币。

  的区块起从分叉,矿工的数量不同由于分叉的链上,也有差别因此算力,度也是不一样的两条链的增长速,度要超过另一条总有一条链的长。有一条更长的链时当矿工发现全网,当前分叉的链他就会抛弃他,链上进行挖矿工作而继续在更长的主。

  包含交易费大多数交易,面给比特币矿工一种补偿这是为了在网络安全方。计算并计入交易费大多数钱包自动,个区块的矿工得到交易费被挖出这,交易的区块链中并且记录在这个。没有交易费的字段交易的数据结构,中直接看到交易费的金额意味着你无法从交易信息。

  奖励和矿工费一起支付给了自己的比特币钱包地址创币交易的输出:由挖矿胜出的矿工构建并将创币。

  播每一笔交易之前均进行独立验证值得注意的是:每一个节点在传。此因,达的节点不会超过一个一个异常交易所能到。以所,有效抵御入侵比特币网络能,和有效拒绝服务攻击避免垃圾信息的滥发。

  维护一份未确认交易的临时列表比特币网络中几乎每个节点都会,池或交易池被称为内存。络所知晓但还未被区块链所包含的交易节点们利用这个池来追踪记录那些被网。在本地内存中交易池是存储,储在硬盘里并不是存,内容可能有很大差别因此不同节点的两池。

  4 比特币是一个指向老王自己钱包的输出值得说明的是:一定要定义清楚0。 18,退回”给老王的钱包这样找零才会有效“,特币也都将成为交易费否则0。 184 比,惊喜的“红包”被矿工挖到这份。

   418 笔交易的候选区块现在既然创建好了一个包含,备拿它来挖矿挖矿节点就准。

  概念需要展开理解有以下 4 个,区块连接到链”的一些细节用以更加深入的理解“新:

  of WorkProof ,数值(nonce)通过计算来猜测一个。比特币具体到,的情况下求解SHA256 算法矿工必须要在满足全网目标难度。矿工可以获得比特币奖励优先完成工作量证明的。段时间内保证在一,现少数合法提案系统中只能出。

   10 分钟生成一个比特币的区块平均每。率和交易达成速度的基础这就是比特币货币发行速,保持恒定必须始终。术发展随着技,将飞速提升计算机性能。外此,算机也会不断变化参与挖矿的人和计。10 分钟一个的产生速率为了能让新区块的保持 ,据这些变化进行调整挖矿的难度必须根。

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

  概念需要展开理解有以下 4 个,交易传播”的一些细节用以更加深入的理解“:

  是否合法的核心机制交易脚本是检验交易。括两个脚本:输出脚本一般每个交易都会包,bKey和输入脚本scriptPu,ptSigscri。

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

  创建于 2009 年区块链里的第一个区块,创世区块被称为。有区块的共同祖先它是区块链里面所,从任一区块这意味着你,后回溯循链向,达创世区块最终都将到。

  纸质支票有助于我们的理解将一笔比特币交易理解成,有着货币转移目的工具一笔比特币交易是一个,人拿着支票到银行时如同当收款人或持票,其规定数量的金额银行会无条件支付。定是签署该笔交易的人并且交易发起人并不一。

  支付0。 015 比特币例如:隔壁老王想要消费,被矿工优先处理为了自己的交易,1 比特币作为交易费他愿意支付0。 00,整合至少0。 016 比特币的UTXO那么老王的钱包至少需要从区块链记录中。2 比特币的UTXO可用假设他的钱包有一个0。 ,一个0。 2 比特币的输入那么这笔新的交易就会产生,比特币的消费金额被支付给目标地址和两个输出:一个是0。 015 ,出作为找零支付给老王的钱包地址另一个0。 184 比特币的输,1 比特币未分配其中有0。 00,的”交易费用就是“隐藏。

  拷贝的节点被称为“完整节点”保有一份完整的、最新的区块链。自主地校验所有交易完整节点能够独立,任何外部参照而不需借由。

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

  何人在线上或线下创建比特币交易可以被任,是这个账户的授权签字人即便创建这笔交易的人不。的这张支票(发起交易)就像一家企业中秘书开出,该笔交易(数字签名)需要等待Boss签署。

  不可逆的特点哈希问题具有,算找到问题的答案只有通过暴力计。求的nonce一旦获得符合要,付出了对应的算力说明在概率上是。算力多谁的,题的概率就越大谁最先解决问。

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

  览区块链信息用户想要浏,块链浏览器就得用区。以从区块链浏览器上进行查阅每一个区块所记载的内容都可。块链信息浏览的主要窗口区块链浏览器可以说是区。

  工在较短的时间内分叉发生在两名矿,作量证明解的时候各自都算得了工。候选区块一发现解两个矿工在各自的,获胜”区块到网络中便立即传播自己的“,点而后传播到整个网络先是传播给邻近的节。

  的不同点在于其交易输入没有UTXO创币交易的输入:创币交易于其他交易,输入脚本”也没有“。nbase数据替代这个字段被Coi,几个字节外除开始的,inbase的其他部分矿工可以任意使用Co,任何数据随意填充。此因,9 Chancellor on brink of secondbailout for banks”中本聪在创世区块的Coinbase中填入了这样的数据 “The Times 03/Jan/ 200。

  项团队运动采矿成为一,日一起在slush矿池挖出了它的第一个区块一群矿工于 2010 年 12 月 16 。献的工作量根据其所贡,得了相应的报酬每位矿工都获。两个月间此后的,ash/s增长到了60Ghash/sslush矿池的算力从1 400Mh。

  有 1。9 比特币假设隔壁老王此时拥, 0。1 比特币时当隔壁老王接收到,XO记录到区块链里这个金额被当作UT,有的 2 比特币现在老王一共拥,到数百个交易和数百个区块中同样都被当作UTXO分散。际上实,的地址或账户余额的地方并不存在一个储存比特币,锁住的、分散的UTXO只有被老王(所有者)。

  概念需要展开理解有以下 4 个,整合交易”的一些细节用以更加深入的理解“:

  随机源中取出一串随机字节通过在一个密码学安全的,6 哈希算法进行运算对其使用SHA25,56 位的数字生成了一个 2,就可以作为私钥这样的一个数字。一个随机生成的私钥以十六进制格式表示,即:

  构和算法不在此继续赘述了对于区块链深度的数据结,区块链老垚”欢迎关注“,享区块链天天分。

  易信息容器的数据结构区块是一种聚合了交。区块主体组成由区块头和,80 字节区块头是 ,少是 250 字节而平均每个交易至,含超过 500 个交易而且平均每个区块至少包。

  件设备上的工作量证明算法挖矿节点通过运行在特殊硬,式创建新的区块以相互竞争的方。同时也是全节点一些挖矿节点,的完整拷贝保有区块链;矿的节点是轻量级节点还有一些参与矿池挖,器维护的全节点进行工作它们必须依赖矿池服务。

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

  概念需要展开理解有以下 4 个,签名加密”的一些细节用以更加深入的理解“:

  终最,在参与挖矿的节点验证交易 A 被一个正,的交易一起被打包到一个区块 B 中交易 A 连同其它一些近期被创建,到区块链上并被添加,并新增了一个区块 B 这时整个区块链就被延长。“确认”时就被认为是不可撤销的区块 B 获得 6 次以上的,个区块需要巨量的计算因为要撤销和重建六,中时需要极大的计算量来证明交易被打包在一起放进区块,能验证它们已被证明但只需少量计算就。

  有一个被用户的私钥生成的数字签名输入脚本 (签名脚本) 常常含,交易输出脚本的锁定条件用来证明自己可以满足,特币资金的拥有权即对某笔交易中比。

  概念需要展开理解有以下 3 个,确认交易”的一些细节用以更加深入的理解“:

  输入值和输出值的数据结构一笔比特币交易是一个含有,)的代码信息:版本规则、输入&其数量、输出&其数量、时间戳其中包含了将一笔资金从初始地址(输入)转移至目标地址(输出。

  型的奖励:创建新区块的新币奖励矿工们在挖矿过程中会得到两种类,含交易的交易费以及区块中所。通过挖矿发行的比特币的货币是,年减少一半大约每四。区块奖励 50 个比特币2009 年 1 月每个,为每个区块奖励 25 个比特币到 2012 年 11 月减半,12。 5 个比特币现在每个新区块奖励。以指数方式递减比特币挖矿奖励,有的比特币全部发行完毕直到 2140 年所,的比特币产生不会再有新。

  区块数据都不一样由于每个矿工的,的结果也是不一样的所以他们解题得出,确答案都是正,块不同只是区。这个时刻区块链在,足要求的不同区块出现了两个都满。个区块是有先后顺序的不同的矿工看到这两,情况下通常,看到的区块复制过来矿工们会把自己先,块开始新的挖矿工作然后接着在这个区。就产生了这时分叉。

  一个有效的区块如果节点收到了,却未找到它的父区块而在现有的区块链中,认为是“孤块”那么这个区块被。存在孤块池中孤块会被保,区块被节点收到直到它们的父。

  数据的Merkle(默克尔)树根数据能够总结并快速归纳校验区块中所有交易。

  被节点验证有效无论交易是否,到一条回执消息交易发起者会收,否被接受的返回信息包含了此笔交易是。钟之内在几秒,级扩散的效率在网络中传播一笔有效的交易就会呈指数,络的节点都接收到它直到所有连接到网。

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

  块链的一部分只保留了区,式来完成交易验证的节点被称为“SPV节点”通过一种名为“简易支付验证(SPV)”的方,量节点”又叫“轻。包都是SPV节点越来越多的用户钱,机等资源受限设备上尤其是运行于智能手,的 150G 大小的区块链这些设备没有空间存储完整。

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

  易一旦被创建一笔比特币交,能存在多位所有者)签名它就会被资金所有者(可。创建并签名的如果它是合法,在就是有效的则该笔交易现。所需要的所有信息它包含资金转移时。付比特币所必需的签名用户的私钥用于生成支,金的所有权来证明资,确保交易内容不被篡改这样的签名加密是为了。票的授权签字效果相同这和前面介绍的纸质支。

  户余额的概念比特币没有账,资金的来源和去向所有的交易只记录,链中计算出来的结果所谓账户余额是区块;

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

  概念需要展开理解有以下 4 个,新交易构建”的一些细节用以更加深入地理解“:

  下来接,中的具体细节和所采用到的底层技术我们将详细分析 6 个交易步骤,和具体的概念时在解释每个步骤,的例子来帮助理解我都将举出适当,没有读懂如果依然,看的太快了…那肯定是你…

  的每笔交易分配一个优先级挖矿节点需要为内存池中,易记录来构建候选区块并选择较高优先级的交,被填满后在区块,为下一个区块的候选交易内存池中的剩余交易会成。如例,中整合到了全部的交易一个挖矿节点从内存池,有 418 笔交易新的候选区块包含,094925 个比特币总的矿工费为0。 09。

  的算力资源来共同验证每笔交易的有效性而给予的奖励挖矿奖励是为了维护整个系统鼓励人们利用自己设备;

  节点构造了一个创币交易例如:隔壁老王的挖矿,094928 枚比特币支付给自己12。 59,币是Coinbase奖励其中12。 5 个比特,28 比特币是矿工费0。 090949。

  付0。 015 比特币例如:隔壁老王想要支,UTXO和一个 0。005 UTXO他的钱包应用会选择一个 0。01 ,得到想要的付款金额使用它们加在一起来。

  搜索这个区块哈希值在区块浏览网站 ,描述这一区块内容的页面你会发现这个哈希值来:

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

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

  是使用“助记码词汇”做为种子其中一种常见且典型的钱包就,钥的钱包而生成私。可以重新创建种子这样的单词的序列,包以及所有私钥并重新创造钱。建钱包时在首次创,者生成一个 12 至 24 个单词带有助记码的钱包应用程序将会向使用,是钱包的备份单词的顺序就。

  中的一个比特币转账给老张时当隔壁老王想要将自己钱包,王的钱包所构建了这个交易就被老。

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

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

  字节是保留给较高优先级交易的区块中用来存储交易的前50K,有足够的空间如果区块中,为将不需要矿工费高优先级的交易行。费越高矿工,优先级也越高交易被处理的。

  交易是笔特殊交易区块中的第一笔,oinbase交易称为创币交易或者C,用来奖励矿工们所做的贡献的这个交易是挖矿节点构造并。

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

分享: