比特币之问(一)一笔交易如何被写进区块

希望小白们,先不要读我写的东西,可能会有误导。我希望的是带着问题来看我的文章,而不是带着求知的欲望。这样会给你带来绊脚石。


首先我要说的是:目前,一个新的交易,只能被写入一个新产生的区块中。

其次,这篇文章只是用于理解某些概念,由于能力问题,不会出现定量定性的阐述。

第三,你的留言和质疑会促使文章被不断更正。

一个区块的产生(一)

由于人为设置的海量运算,限制了用于存储比特币交易信息的区块链生成新的区块的速度。这个速度我所知道的是大约10分钟产生一个。

一笔交易的产生

你通过某些方式制作了一串包含着完整交易信息的数字流,将其上传到网络中。这个网络可以理解为比特币节点网,也可以指某个可以验证交易的节点。本文中所有使用的“网络”一词,都如此解释。

某几个节点验证了你的交易合法,然后广播到整个比特币节点网中,这种广播是不断验证再次广播的过程。直到这笔交易 A 被网络中大多数节点接收。

需要明白的是,这一过程只是验证,而非记录(确认)。

确认:一笔交易存在于一个公认的区块中,作为第一次确认;这个公认区块下边链接一个新的公认区块,作为第二次确认。当确认数达到6个以上(数目不定)时,理论上因为难以更改,称为“有效确认”,即无法撤销。这里涉及长短链竞争以及新区块的确认,需要进一步了解挖矿过程。

一个区块的产生(二)

我们所说的挖矿,是寻找一个符合要求的数字,这个数字就像 id 一样代表了一个区块。

一笔交易在网络中得到确认后,会保存在挖矿节点中,形成交易池,矿工需要从交易池中挑选一些优先级高的交易形成一个备选区块后,依据这个区块进行挖矿。之所以说是备用区块,因为这个区块里存储的交易信息但是没有id,没有 id 就无法识别同时无法认可。

这一过程可以理解为:生孩子和上户口的关系,不是办了户口生孩子,而是带着新生儿找户口。

在04 整合交易&构建新区块中认为“验证交易后,每个比特币网络节点会将这些交易添加到自己的内存池中”,我认为验证交易的节点可能是非挖矿节点,此节点不具有内存池的功能。

交易费

首先,交易费是不固定的。要理解为什么是不固定的,需要明白一下几个问题:

网络上积淀着一批需要确认的交易,这批交易存在于所有矿工的手里,记录工作由所有矿工根据自己认可的优先级来进行,但是确认工作职能由其中的一个完成。这个矿工就是成功把记录交易的区块添加到主链上的矿工。这个矿工:完成了记录工作,找到一个新的区块,将这个区块成功添加到网络中。

时间以及交易量等多个因素决定交易的优先级,交易费就是其中一项。



进入正题

根据以上描述,总结:

矿工完成交易的确认。

你发起一笔交易,可以指定交易费也可以不指定,交易费的数量直接关系到交易确认的时间。如果没有矿工愿意记录你的这比交易,理论上说你的交易就无法写入区块链,这就意味着无法得到确认。这笔交易就永远无法完成。

假设你的交易最终会写入区块链得到有效确认。

不管你的交易在其他矿工手里如何,首先你的交易达到了确认交易的矿工的要求,被添加进备选区块中,而不是躺在交易池里。

这个包含了你的交易信息的新区块被成功添加进主链,主链得到有效延伸。此时你的交易记录得到有效确认。

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


你可能感兴趣的:(比特币之问(一)一笔交易如何被写进区块)