SN-10098 附来源、原文与上下文。
我看出发生什么了。不知怎么回事,你所有的套接字都失效了。你没有与网络通信,但因为还有 8 个僵死连接,程序以为仍然在线,就继续生成区块。如果你的区块编号连续,中间没有穿插别人的区块,就能判断出现了这种情况,例如:
2/unconfirmed
3/unconfirmed
4/unconfirmed
5/unconfirmed
6 blocks
7 blocks
I see what happened. All your sockets went dead somehow. You had no
communication with the network, but because you had 8 zombie
connections, it thought it was still online and kept generating blocks.
You can tell this is happening when your blocks are numbered
sequentially, without other people's blocks interspersed, like:
2/unconfirmed
3/unconfirmed
4/unconfirmed
5/unconfirmed
6 blocks
7 blocks
像这样连续 6 个区块都只有你一个人找到,是不大可能的。
It's implausible that you would be the only one to find blocks for 6 blocks in a row like that.
你退出并重新启动后,程序连接到网络,下载了你缺席期间网络找到的 45 个区块。由于你的区块没有立即广播到网络,网络就没有包含它们,继续向前了。
When you exited and restarted, it connected and downloaded 45 blocks that the network found in your absence. Since your blocks were not broadcast to the network immediately, the network went on without them.
听起来你在 Wine 上遇到的也是完全相同的问题。显然, Linux 上的套接字处理存在某种问题,无论用哪种方式都会影响它。
It sounds like you had exactly the same problem on Wine. There's clearly something about socket handling on Linux that's effecting it either way.
我会开始研究。如果最终找不到问题的根源,就得做某种机制,监测是否一直没有消息,并断开连接。目前你唯一能采取的临时办法,就是更频繁地退出并重新启动。
I'll start researching this. Ultimately if I can't find the root of the problem, I'll have to make some kind of mechanism to watch for an absence of messages and disconnect. The only workaround for you right now would be to exit and restart more often.
除了一个节点连接,你的所有节点连接都在同一时间失效,剩下的那个也不久后失效了。IRC 仍在工作,所以并不是你断开了互联网。
All but one of your node connections went dead at the same time, one shortly after. IRC was still working, so it wasn't that you were offline from the internet.
我在想,区块状态是不是应该一直显示“#/unconfirmed”,直到成熟(先是 119/unconfirmed,然后是 120 blocks)。对于区块来说,这个数字的意义不像对交易那么强。
I wonder if the status of blocks should say "#/unconfirmed" all the way up to maturity (119/unconfirmed then 120 blocks) instead. The meaning of the number isn't as strong for blocks as for transactions.
我觉得不把自己生成的区块算作确认,会是一种改进。缺点是不同节点显示的状态数字会不一致。状态数字也不再与区块成熟倒计时相对应。较轻量的选择是:只有当所有确认都来自自己时,才作特殊处理。
I think it would be an improvement not to count one's own blocks as confirmations. A drawback would be that the status numbers shown by different nodes would not match. The status number would no longer be coordinated with the maturity countdown on blocks either. A lighter option would be a special case only if all confirmations are your own.
引用 New Liberty Standard 的文字New Liberty Standard来源 ↗我刚丢了 6 组正在成熟的币!我原本有 10 组比特币正在成熟。最后一组大约在 0:22 生成。在 bitcoin 卡住之前,它到了 2/unconfirmed。到了 10:10,0:22 生成的那组比特币仍然只有 2/unconfirmed。因为你告诉我不会丢币,我就关闭并重新启动了 bitcoin。好的一面是,它关闭和启动都很顺利。但不幸的是,区块更新后,我丢了 6 组比特币。其中四组还未确认,但两组已经确认。现在它们没有留下任何痕迹。也许既然你已经提供了“Show Generated Coins”选项,就可以把生成失败的比特币重新显示出来。我只是不喜欢这些比特币就这样凭空消失。我目前仍在运行 Linux 构建,但过去 24 小时生成的 10 组比特币中有 6 组就这样消失,让 Wine 版本突然显得有吸引力得多。我附上了 debug.log。
I just lost 6 sets of maturing coins! I had 10 sets of bitcoins maturing. The last set was generated at about 0:22. It got to 2/unconfirmed before bitcoin got stuck. At 10:10, the bitcoin which was generated at 0:22 was still only at 2/unconfirmed. Since you had told me that I wasn't going to lose coins, I shutdown and restarted bitcoin. On the bright side, it shutdown and started up very smoothly. But unfortunately, when the blocks updated, I lost 6 sets of bitcoins. Four sets were still unconfirmed, but two sets were confirmed. And there's no trace of them now. Perhaps now that you have the 'Show Generated Coins' option available, you can put back in failed bitcoin generations. I just don't like that those bitcoins just disappeared into thin air. I'm still running the Linux build at the moment, but the Wine version is suddenly looking much more attractive now that 6 out of the 10 sets of bitcoins I generated in the past 24 hours just vanished. I've included my debug.log.
引用 New Liberty Standard 的文字New Liberty Standard来源 ↗Linux 构建在过去 20 小时内生成了相当数量的比特币,而且我相信你对数据库错误的解释,所以一切都表明,我今后会一直运行 Linux 构建。 Linux 构建唯一有点烦人的地方,是我的电脑风扇从 50% 变成了 100%。:-P 我知道可以限制 CPU,所以如果它实在让我心烦,而且我能接受生成更少的比特币,也许我会那样做。或者,我只是需要开始多听点音乐……
The Linux build has generated a decent amount of bitcoins within the past 20 hours and I trust what you're telling me about database errors, so all signs point toward me running the Linux build from now on. The only half annoying thing about the Linux build is that my computer's fan has gone from 50% to 100%. :-P I know I can limit the CPU, so if it gets on my nerves too much and if I can live with less bitcoins being generated, perhaps I'll do that. Or maybe I just need to start listening to more music...
……
...
在还有未确认项的时候关闭程序, 没有风险。 当你创建交易或新区块时,它会立即 向网络广播。此后,不断增加的 #/confirmed 数字只是用来观察结果。 在这段时间里, 你的节点不会做任何事情来促进 它被接受。There's no risk in shutting down while there are unconfirmed. When you make a transaction or new block, it immediately broadcasts it to the network. After that, the increasing #/confirmed number is just monitoring the outcome. There's nothing your node does during that time to promote the acceptance.