当前位置:首页 > 交易教程 > 正文内容

比特币的区块机制

2021年06月06日交易教程109

币安Binance数字货币交易平台注册,币安比特币交易所,币安数字货币价格行情

大部分材料都详细分析了挖矿过程,介绍了区块是如何产生的。然而,区块的产生并不是区块链的最终目的,保存交易信息才是区块链的最终目的。所以,更重要的一点是要理解,交易信息是如何被打包进区块链的。

输入和输出

一个交易在系统里被输入和输出表示。输入是指这笔交易所要进行转移的币来自之前的哪些输出。输出是指这些币将会被发送给哪些地址。在区块链上记账,不是告诉你一个账号现在有多少钱,而是告诉你这个账号当前得到了哪些输出。比如一个地址xsw0923sdfew2389dsfw它的相关记录里面,有A、B、C三个输出的目标地址是它,那么它实际上的余额就是这三个输出的金额的总和。

但是现在这个地址的用户要转账了,转账过程不是直接从总和数字中取出一部分进行转移,而是分别从A、B、C三个输出中取出部分或全部,加起来为想要转移的总和的币,进行转移。这个“取出”过程中,A、B、C就变成了输入,转账目标记录才是这次交易的输出。

这样的设计,保证了区块链中的钱从哪里来,到哪里去,一清二楚,绝不含糊。跟会计做账一样,花一笔钱,不单单要记录它花到哪里去了,还要记录这笔钱是从哪里来的,整个资金链是可追溯的,这也保证了交易不可伪造,资金既不会凭空消失,也不会无中生有。

hash

将交易加入到区块里面需要涉及三个hash,一个是交易本身的hash,另一个是当前这个区块所有交易的merkle hash root,还有一个就是区块hash。

上面已经说过输入与输出了,一个交易可能包含多个输入输出,通过将这些输入输出信息进行排列并进行hash运算,就得到一个交易的唯一hash值。

一个区块里面包含了多个交易,包括挖矿奖励交易,这些交易都被通过一个merkle运算,得到一个hash root所包含,对于merkle可以阅读《区块链如何运用merkle tree验证交易真实性》了解。

区块都hash运算里面,merkle hash root作为一个参数,因此,所有交易的信息都体现在了一个区块的hash里面。

挖矿

挖矿过程就是计算上述区块hash的过程,几乎所有的机器都可以挖矿成功。关键在于谁先挖到矿,因为当一台机器挖矿成功就向网络广播,其他挖矿在对这个hash进行校验之后,就停止自己的挖矿,开始基于这个区块挖新的矿。而每一个被挖到区块中记录的第一笔交易是给挖到这个区块的矿工自己的奖励金,所以抢到第一个挖矿成功名额对于矿工来说至关重要。

前面说过,计算区块hash过程里面,会以区块包含的交易的merkle hash root作为计算的一个参数,因此,挖矿时,矿工会事先从自己本地的交易信息里面提炼出merkle hash root,也就是说,在挖矿之前,对于当前这个矿工来说,新区块会包含哪些交易就已经确定好了的。关于这个过程,可以阅读《Merkle Tree》。

打包交易记录

挖矿成功之后,矿工需要将完整的区块向网络广播,这个时候,这个区块里面就打包了所有上述对应的交易。

现在有三个问题:

在打包开始之前,这些交易记录是以什么方式存在于网络?

打包是否会把所有交易记录打包进区块?怎么可能保证所有交易都不被遗漏?

如何防止矿工伪造交易?将伪造的交易打包进区块?

手续费

这里需要知道另外一个概念,即“手续费”。手续费是发起交易的节点决定给的,和小费性质一样。比如A打算转给B0.5个BTC,A手上有一个完整的(来自一个输入)BTC,这时A将这1BTC作为输入,输出包含两条,一条是给B0.5BTC,另一条是给自己0.49BTC(这个过程叫“找零”)。那么这个交易中就有0.01BTC是消失了,消失了的BTC将作为小费奖赏给矿工。

现在我们把自己的角色转换为矿工,当我们从自己的内存中收集所有交易,准备打包区块时,发现这里有一条交易有0.01BTC的小费,于是我把它作为本次打包优先考虑的交易记录。由于每个区块的大小限制在1M左右,所有我只选了那些给小费的交易打包进这次区块。而那些未给交易费的交易,在优先考虑完这些有交易费的交易之后,我才会考虑把它们加进来。

这也就是为什么有些交易被确认很快,有些交易被确认很慢。

确认

“确认”这个概念也要解释一下,一个区块产生之后,它不是立即可信的,网络上的节点总是相信最长的区块链,当一条交易记录被打包进一个区块之后,就有了一个确认,而这个区块所在的链后面被再加入一个区块,就是第二个确认,如此下去,一个交易有了6个确认,我们就认为这个交易已经确定了,会被永远记录在区块链中。为什么是6个确认呢?因为每一个确认就是一个挖矿过程,都需要提供非常严格的计算,因此,这6个区块被同一个矿工创建的可能性微乎其微(可以说是不可能),因此矿工伪造交易也基本不可能。

由于比特币的区块平均产生时间是10分钟,所以一个交易要1小时左右才能保证成功(最快),不过也不是所有的系统都这样认为,有些网站在接受比特币支付时,认为4个确认就可以给客户发货了。如果不幸这个交易在创建的时候,没有被打包进最近的那个区块,那就要延迟10分钟,如此下去,如果后面过了好几个区块,交易都没有被打包进区块链,那就悲剧了。

广播交易

不过也不用着急,比特币系统中只留给了这种优先级高的交易50k的存储空间,即使你没有给交易费,也可能在24小时内被打包进区块。不过也不一定,有些交易可能永远都进不了区块,因为矿工是从自己都内存中获取自己暂存的交易信息,一旦这些内存被释放,那么这些交易信息就会被清空。为了解决这个问题,比特币钱包需要不断对自己发起的交易进行检查,如果发现没有被打包进最新的区块,就要对网络广播,这样,这个交易就会在网络里不断被提起,矿工又可以把这笔交易写进自己的内存里暂时放着,等到下次打包区块时,选择是否把它打包进去。

小结

本文讲解了对于一个交易而言,“创建(输入输出)-广播-挖矿-打包-确认”的整个过程,读完你应该可以理解交易是怎么被打包进区块的了。


欧易OKEx交易平台注册,欧易比特币交易所,欧易数字货币价格行情

火币网Huobi交易平台注册,火币比特币交易所,火币数字货币价格行情

风险提示:数字资产交易是一种高风险的交易方式,可能导致部分或全部损失。请用户谨慎参与,在决定买卖之前慎重考虑交易数字资产的经验和能够承受风险的程度。投资有风险,入市须谨慎。本内容不作为投资建议。风险预警

本文链接:https://www.jys.net.cn/?id=110

标签: 比特币区块

相关文章

初级进阶:USDT是什么?如何通过USDT来避险?

  USDT是全球通用的1:1兑美元的数字资产,即你始终可以用1美元和1USDT进行互换。目前受到全球数百个知名交易平台如火币Pro、Bitfinex、Poloniex、Bittrex、Kraken等交易兑换支持,受到广泛应用。并且可以作为...

新手入门:如何购买比特币?

(提醒:不要投资会超过你的承受能力的资金——加密货币价格易变,价格可能会暴涨暴跌。)  比特币可以在交易所购买,也可以通过OTC市场直接从其他人那里购买。您可以通过多种方式付款,从现金到信用卡和借记卡再到电汇,甚至使用其他加密货币兑换成比特...

比特币的手续费机制

人们宣传比特币的时候常常会讲:“可以向各种张三李四免费转账。”其实不一定,有时还是需要手续费的。2013年,一个比特币的价格为20美元。2017年,转一个比特币要花20美元。手续费的目的一来为激励矿工不辍挖矿,二来以维护比特币网络安全(维稳...

推荐:数字货币交易所使用教程攻略汇总

一、币安Binance数字货币交易平台(教程汇总)(1)币安:3分钟极速了解法币交易(2)币安:如何购买数字货币(3)币安:如何出售数字货币(4)币安:如何玩转杠杆交易(5)币安:如何在币安官网进行现货交易二、欧易OKEx交易平台(教程汇总...

新手入门:比特币是如何挖矿的?比特币的挖矿原理解释

  当您听说比特币“挖矿”时,您会想到将硬币从地下面挖出来。但是比特币不是物理的实体,你看不见,摸不着,那么为什么我们称其为挖矿呢?因为它类似于金银开采,比特币存在于协议的设计中(就像黄金存在于地下一样),但是它们尚未被发现(就像尚未挖出的...

初级进阶:区块链行业词典,听不懂的词,可以在这里搜

区块链简介  2008 年,中本聪发表了《比特币:一种点对点的电子现金系统》白皮书,以区块链技术 为核心,使得在线支付能够直接由一方发起并支付给另一方,中间不需要通过任何的金 融机构。这份文件被视为区块链技术的开端。  简言之,区块链技术是...