来自@地摊小王子?的提问: 打包交易有手续费收入,为什么会有矿工打包空块呢?有人说打包空块的矿工是制造比特币网络拥堵的坏矿工,这种说法对吗?
知矿大学小编@OWEN的回答: 比特币的空块是指,区块中仅打包了创币交易的区块。在《如果区块链会说话》一文介绍过,截止到目前,大约有9万空块,约占目前区块数量的14%。这其中很多空块是在比特币早期产生的,那时候用比特币的用户极少,链上几乎没有交易产生,所以矿工也只能打包空块了。
后来比特币链上交易多了起来,内存池一直有等待矿工打包的交易,这种情况下,为什么矿工还会打包空块?@地摊小王子提问是针对这种情况的,以下的回答也是针对这种情况的。
01 阴谋论 首先,打包空块的矿工是制造比特币网络拥堵的坏矿工,这是彻彻底底的阴谋论。
假设真的有攻击者通过打包空块的方式来造成比特币网络拥堵,这种攻击非常低效,而且需要投入大量的成本。
目前比特币全网算力超过100E,全网矿工每天(24小时)大约挖出144个块,每个块打包交易的上限在4000笔左右。假设恶意矿工想控制10%的算力来进行“空块攻击”,他们需要控制超过10E的算力,这么大的算力规模,不管是通过租用算力,还是买矿机来实现,都是一笔非常巨大的成本支出。
参考crypto51的即时(6月17日)数据来计算发起攻击的成本,crypto51给出了对比特币进行51%算力攻击每小时需要的成本,我们假设的是10%的算力,也就是这个攻击成本的五分之一,每小时大约需要花费¥53万,攻击成本非常高。当然这种攻击,还是可以得到区块奖励回报的。
▲https://www.crypto51.app/?ref=block123
再来说“空块攻击”对比特币网络破坏效果。
空块攻击难以对比特币造成实质性的伤害,最终结果是损人利己、自讨没趣。
假设比特币网络已经很拥堵了,用10%算力进行“空块攻击”,相当于区块大小被恶意矿工人为“缩小“了10%,实际效果是平均每个区块能打包交易数量的上限”下降“了10%。比特币网络如果实在太拥堵,又会反过来降低人们链上交易的需求,网络就变得不再拥堵了,这样一来,“空块攻击”的效果就难以起到持续性效果。
综上,“空块攻击”需要付出高昂的成本代价,在攻击效果上也很难持续,打包空块是矿工发起“空块攻击”的这种言论是不明真相者的阴谋论。
矿工打包空块的真相是什么呢?
02 真相 矿工挖矿是一场比拼速度的竞赛。不仅要看谁先找到了符合系统要求的解,还要把找到的解,尽快广播出去。快,对于矿工来说是一件贯穿始终的事情。
一个区块包含两部分,区块头和区块体。比特币客户端在对区块广播时,是将区块头和区块体分开传播的。区块头包含了版本号、父区块头哈希值、时间戳、默克尔树根哈希值、难度目标、随机数等6部分,它的大小只有80字节。交易信息被打包在区块体里。一个满载的区块大小为1M,它是区块头大小的12500倍。
越多的信息量,传播延时越长。区块头和区块体的大小差异,造成其他矿工会先接收到新区块头数据,一段时间(一般在10秒之内)之后,再收到区块体的数据。
收到区块头数据还没收到区块体数据的这段时间,对于矿工来说,也是有成本的,矿机依旧在运行。
矿工为了充分利用这段时间进行挖矿,就不能往区块里填充交易,也就说矿工只能尝试挖空块。这是因为矿工没有收到父区块打包的交易数据,不知道父区块打包了哪些交易,如果矿工往区块里填充交易,可能会把已经被父区块打包的交易再次打包,这会造成区块数据不合法,之前为此付出努力都变成了无用功。为了避免这种情况发生,在这段时间,矿工明智的做法是不打包交易挖空块。如果这段时间刚好挖到新区块,那么挖出的块就是空块。
粗略统计了一下,在待确认交易内存池持续不空的情况下(从第二次减半之后至今),21万多个区块中,大约有0.75%的空块。另外这部
与比特币一样,以太币(Ethereum)现阶段「挖币」也必须消耗很多电力能源来维护网络信息安全、与此同时建立和派发新的数字货币,在全世界范畴内,以太币挖矿总数一样许多 ,并且也必须选购价值不菲的矿机来处理测算难题并...
伴随着比特币各大网站算率产生在历史上最规模性的转移,销售市场一直在猜想挖矿售卖压力的大小,由于挖矿抛压很可能会给涨价产生摩擦阻力。就现阶段来讲,有两个关键要素很有可能会造成挖矿售卖工作压力提升: ...
区块链可以应用在哪里?举我们为例,我们去医院或诊所,医生会写病历。假设我们今天去:A诊所,只能回顾你A诊所的病历B诊所,只能回顾你B诊所的病历资料是各自独立的,A诊所是一份,B诊所是另一份,诊所只能查阅自己诊所的信息。如...
矿工对他们服务的奖励,矿工将收到包含在他们确认的交易中的佣金和新创建的比特币。矿业是一个专业的、竞争激烈的市场。个人采矿基本上很难盈利。大多数矿工选择使用矿山和云计算平台进行托管、租赁和云计算能力挖掘。一方面,门槛低,操...