为什么我正在同步区块,这个时候miner日志显示挖矿成功了?

1 Like

如果你在节点没有同步到最高区块的时候就开始挖了的话,那么 miner 程序会从一个老区块开始挖矿。这样你就分叉咯。

所以最好等到节点同步到最高区块后再开始挖。

这个目前在 miner 程序那边目前没有加限制,未来会加上。

这样修改后,一个可能的问题是,比如当前链的真实高度是100,但是有个恶意节点声明自己已经到200高度了,那么就会导致诚实节点的挖矿程序自动停下来。
当然这跟块的同步/验证操作有关。
可以让恶意节点把块头广播出来,验证一下块的hash和pow证明,然后再相信这个高度。
但是我理解如果完成了块头的同步,应该就可以出下一个块了,不用等block body都同步完。
所以效果跟当前现状是一样的。

只要开了miner进程就在挖了,只不过没有同步到最新高度的块之前,工作是无效的,其他节点不认的,因为不是最长链。

bitcoin 客户端 如果本地的最高块 小于当前时间超过 24小时,是要强制同步的,
这个期间挖矿进程不能启动

大概印象

一直同步一直挖…

另外名字不错

挖矿不应该是基于最新块来挖吗,没有同步到最新高度的块,也没办法挖吧?

我就是没同步到最新区块就开始挖了,然后查不到余额

那就是我挖的是历史高度的区块,既然我可以明显的知道我没有达到最新高度,那么为什么在同步到最新高度之前要做无用功呢,还浪费资源

这一位矿霸,就是没有同步历史区块到当前高度,然后直接开启了一条新的链 计算机零基础小白是如何在 CKB 测试网上成为矿霸的

如果觉得浪费资源,你就等同步完区块再开始 ckb miner 就好了啊

因为你的 ckb miner 开早了,它直接在一个还没有达到当前高度的时候就开始挖了,挖出了一些分叉区块,但是很快的,你同步到了更高的区块,这些分叉区块就作废了

我也是这个意思,区别在于我想成了在miner这个程序里面做一个控制,而你想成了,由矿工本人确定什么开始执行挖矿的指令,其实差别也不大