首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

为什么有的区块没有打包交易,是矿工忘记了吗?

白话区块链

从入门到精通,看我就够了!

「白话区块链入门」系列让零基础的小伙伴也能轻松入门,欢迎大家在文末点赞留言,说说你最想了解的区块链小知识,参与有奖哦!

作者 | 晏文春

出品|白话区块链(ID:hellobtc)

白话区块链在《

比特币矿工一天赚多少钱?

》一文介绍过:比特币出块奖励包括两部分:系统奖励(也称Coinbase奖励)和交易手续费奖励(也称矿工费)。矿工打包交易到所挖出的区块里,才能得到该笔交易的手续费。

我们做一个类比,这个问题就非常好理解了:

挖出区块的矿工相当于是客车司机,除了系统会给客车司机奖励以外,客车司机每招揽一名乘客,就能得到一笔乘车费,客车司机好不容易抢到一次发车权,会拼命往车里塞乘客,直到满座(车的容量是有有限的)。

矿工都是理智的,按理说矿工为了利益最大化,在待确认的交易足够多的情况下,每个区块都会被矿工尽可能多地填充交易。为什么有的区块里,除了Coinbase奖励以外没有其他交易呢?事出反常必有妖,我们今天就来“捉妖”吧。

01

天下武功唯快不破

白话区块链在《如果两名矿工同时挖出新区块,出块奖励该给谁呢?》一文介绍了,当矿工挖出区块后,越快将区块发布出去对矿工越有利。

白话区块链在《一个经典的故事,让你3分钟搞懂比特币挖矿》一文介绍了区块的构造:一个区块主要由区块头和区块体两部分组成。区块头的大小,仅占80个字节,一个满载的区块为1M大小,是区块头的12500倍。

我们知道,数据越小,传播和接收就越快,所以挖出新区块的矿工,为了让区块能更快地在全网发布,会把区块头和区块体的信息分开发布,只有80字节的区块头就能以更快的速度传播给其他矿工。

根据上面的介绍,我们知道,当一个新区块被挖出,矿工会更快接收到区块头信息,然后再接收到区块体信息。

02

挖矿争分夺秒

这时候矿工有两种选择:

接收到区块头后,马上构造区块开始挖矿;

继续等待接收区块体,验证区块内所有的交易后,才开始挖矿。

从接收到区块头到接收并验证区块体内所有交易,这中间是有时间差的,我们假设这个时间差是10秒钟。如果这10秒钟选择等待,一方面矿机在空跑,需要耗能;另一方面挖矿是一场竞赛,“时间就是金钱”,矿工会争取这10秒钟时间,如果在这段时间内,找到了合适的随机数,就能挖出新的区块,得到比特币奖励。

选择在这个时间差内挖矿,就必须放弃打包交易。这是因为矿工没有验证上一个区块内的交易,无法确定上一个区块内打包了哪些交易,如果打包的交易和上一个区块重复了,那么即使矿工挖出了新的区块,也会因为重复打包已确认的交易而被判无效。这就是为什么有的区块链只有Coinbase一条交易(就是系统给矿工奖励的那条交易)的原因。

03

总结

我们总结一下:矿工打包空块主要的原因是,矿工为了充分利用矿机,在接收到新区块的区块头信息且还没来得及验证该区块内的交易,在这个时间差内,矿工进行挖矿,如果在这个时间窗口内,刚好挖到区块,矿工就会选择打包空块,发布区块。因为在不清楚上一个区块打包了哪些交易的情况下,矿工打包交易,可能会与前一个区块打包的交易相同,这将导致矿工挖出的区块被判无效(非法),有捡了芝麻丢了西瓜的风险。

矿工挖出区块后,如果明确某一笔交易没有被之前的区块打包,可以将这笔交易添加到当前挖出的区块,然后再发布吗?欢迎到留言区分享你的观点。

——End——

『声明:本文为作者独立观点,不代表白话区块链立场,亦不构成任何投资意见或建议。』

亲,给「白话区块链」加个“星标”

不错过重要推送哦

亲,据说99.9%有品位的人都点了「好看」

  • 发表于:
  • 原文链接https://kuaibao.qq.com/s/20190218B0H21900?refer=cp_1026
  • 腾讯「腾讯云开发者社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 cloudcommunity@tencent.com 删除。

扫码

添加站长 进交流群

领取专属 10元无门槛券

私享最新 技术干货

扫码加入开发者社群
领券