主页 > imtoken硬件钱包安全吗 > 为什么比特币交易不能实时到账?
为什么比特币交易不能实时到账?
使用过钱包或交易所交易过比特币的用户应该对交易的实时性有深刻的理解:
转账发起后,完成一笔交易至少需要10分钟,有时甚至需要半小时甚至数小时。
实际上,发起转账后大约需要10分钟左右才能完成交易,因为比特币的机制就是这样设计的,无法更改;
有时交易会延迟半小时或几个小时,因为交易量太大(其实这种情况也是比特币机制设计的缺陷造成的,但理论上是可以修改的,后面会讲到关于为什么不将其修改为支持多人交易的机制)。
今天我们就来说说为什么完成一笔交易需要10分钟。
你可能认为一个区块的平均出块时间是10分钟:为什么比特币挖矿10分钟就挖出一个区块? ,其实,其实10分钟完成一笔交易就是因为区块时间。
第一课通俗易懂| 简单了解比特币交易流程一文,我们贴出这张图:
这张图的意思是:红色矿工解决了代号为20014的数学题,获得了将自己打包的区块20014加入主链的权利。
在那篇文章下面,我写了这样一句话:
免责声明:为了理解流程,我按照“验证交易、获取算力、打包区块”的流程来解释,但实际上每个矿工在得知前一个区块被抢区块后,会立即打包下一个区块,但下一个将立即打包的块不是未经身份验证的块。 该区块包含这段时间未确认的交易(unconfirmed transactions,这个词后面会提到,很重要),开始答题,第一个得到答案的矿工,向全网广播,获得认证,加入主链。
其实这个过程并不是①验证交易比特币可以随时提现吗?,②获得权力,③写区块,④发币。
正确的挖矿流程应该是这样的:
①一边验证交易池中已有的未确认交易,一边计算数学题,同时收集新的未进入交易池的未确认交易作为下一个区块的候选验证交易比特币可以随时提现吗?,同时持续监控全网,看有没有人比你自己先算算。
② 解出答案,打包区块,在全网广播区块,将你打包的区块添加到你保存的主链中; 或者你发现有人先计算出结果,然后把别人广播的区块添加到自己保存的主链中。
举例说明:
假设此时全世界所有矿工都在解20013号区块的数学题(比特币矿工在解什么数学题?),我们假设矿工A也参与其中,那么从第20013号开始解数学题。我们将20014年的数学题分为“20013年数学题求解过程中”和“20013年数学题求解过程中”两个时间段,进一步了解矿工A做了什么:
(1)在解决20013号数学题的过程中
矿工A需要做的:
1.解决问题。
拼命算20013号数学题。
2. 验证交易。
矿工 A 需要验证数百笔未确认交易的合法性和真实性。 这些交易从何而来? 在20012区块结束和20013年初之后,矿工A整理了直到20012区块结束的所有未确认交易。此时,矿工A进行了优先排序,挑选出数百笔交易作为一个打包交易附加到区块上20013.
3.收集交易。
在矿工A拼命计算20013号数学题的过程中,一定有普通用户使用钱包交易比特币。 因此,这些新产生的交易会在短时间内传达给矿工 A。 之后,矿工A已经确定了在20013区块中包含哪些交易记录,而新的交易只能在后续的区块中进行验证,所以矿工A首先将这些新的未确认交易记录存储在自己的交易池中。
4. 监控区块。
矿工A拼命计算第20013号数学题,同时监控全网看是否有人抢先解出。 结果有两种,一种是矿工A第一个解决了,一种是听说别人先解决了。 在这两种情况下,我们继续说:
(2) 20013号数学题解决了
· 如果矿工A是第一个解决的,他需要做:
1. 立即将他准备的区块广播到网络中,让其他矿工知道。
2. 将自己的区块写入之前准备好的主链中。
3、开始构建20014号区块。此时,全球任何矿工一旦收到矿工A发布的20013号区块,就可以开始快速构建20014号区块作为候选。 只是这20014个区块都是候选区块,都是无效的。 他们必须等待问题被成功解决并被其他矿工验证后才有效。
4. 从交易池中挑选出数百笔交易放入区块20014,开始验证。 (交易池包括未确认的旧交易,以及20013数学题计算过程中新产生的新交易。)
5.马上开始准备第20014题的计算。
·如果矿工A不是第一个解决的,他需要做:
1.立即扔掉正在计算的20013号数学题。
2、立即放弃自己建立的20013号候选区块。
3、将“20013区块计算过程中现实世界中产生的新交易”放入交易池。
4、去掉自己准备的20013号候选块中的交易,对比实际生效的20013号块中的交易信息。 如果在自己生成的20013号候选区块中有一些交易已经存在于别人生效的20013区块中,这些交易已经被验证过,那么矿工A需要删除这些交易,然后需要删除实际生效的20013年区块中未出现的其余候选区块。 将No.区块中的交易放回交易池,保证自己的交易池都是未确认交易。
5、快完成了,于是矿工A快速构建了20014号区块。(其他矿工也可以创建20014号区块,但是这些20014号区块都是候选区块,都是无效的,必须等待问题必须成功解决并被其他矿工验证后才有效。)
6. 从更新后的交易池中,挑选出数百笔准备打包到区块20014中的交易。
7、开始循环几个步骤【在解题过程中】:解20014号区块的数学题,验证交易,收集交易,监控区块。
至此,一个大流程就完成了。 20014区块、20015区块,乃至之后的所有区块都遵循这个流程,以此类推。
理解之后你会发现,如果张三和李四之间的交易是在矿工们计算20013号数学题的时候发起的,那么这笔交易肯定不会记录在20013号区块中,因为矿工们已经在 20012 年回答问题后选择了哪些交易应该进入区块 20013。因此,这笔交易目前由矿工收集。 需要等到矿工开始计算20014号数学题,才能验证交易,然后20014号数学题解决了,才能真正考虑交易。 是一笔合法的交易,然后钱包居然可以向李四展示10个比特币的余额(张三和李四之间的比特币交易过程)。
细心的读者可能会发现几个问题:
· 为什么要将数百笔交易放在一个区块中? 为什么不能进行数千笔交易?
· 10分钟完成一笔交易与半小时或一个小时完成一笔交易有什么区别?
· 交易慢是网络拥堵造成的吗?
矿工如何验证交易?
这些,我以后再说。
如果您看完这篇文章还有什么不明白的地方,欢迎在下方留言,我会尽力解答您的困惑。