-
Notifications
You must be signed in to change notification settings - Fork 19.7k
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Block is lost and no one wrapped it as uncle, even myself #2298
Comments
Took a quick look through the code (on my phone) and I think there's indeed an error when there's a chain reorganization. It appears that when a block gets reverts - because it's deemed "less worth" - it doesn't get announced as I'll have a look tomorrow when I get home. Thanks for reporting the issue. |
Thanks. FYI, following blocks after N were uncle-free, so no limit was reached. |
I agree that's big issue. Up to release 1.3.5 I had 3-7 mined blocks that not in uncles comes.
|
I'll prepare downgrade to 1.3.3 all my servers, at least till 1150000 block. |
This issue is present in all versions of geth. Downgrading does not change anything if only making matters worse. |
Yes, it's in all versions, but since 1.3.5 were 5x more such blocks. |
It won't matter. There's a change in all clients that determines the heaviest chain to prevent selfish mining. Downgrading won't change anything. |
(Unless you can produce more blocks) |
Relevant commit obscuren@5b28366 |
I don't want produce more blocks to destroy somewhat. The miners get less coins if I lost 30 blocks per day. But I'll monitor block situation after downgrade. Tomorrow I'll report it. |
Thanks. Looking forward to seeing the results of your experiment. |
@sammy007 that commit isn't about the "self-uncle-mining". The linked commit shows a change in the chain acceptance code. |
Previously all blocks that were already in our chain were never re announced as potential uncle block (e.g. ChainSideEvent). This is problematic during mining where you want to gather as much possible uncles as possible increasing the profit. This is now addressed in this PR where during reorganisations of chains the old chain is regarded as uncles. Fixed ethereum#2298
@sammy007 if you'd like to experiment try out the linked PR 👍 |
One day of experiment. Downgrading to 1.3.3 doesn't help because of other nodes.
|
@Atrides prolly you can try this PR on one of your nodes, I can't afford testing today, night is coming and I won't be eaten by my whale on morning. |
I have tested the new PR and it looks like it does not solve the problem. I have mined block number 1117390 but suprnova beat me to it. If I look at the consecutive blocks no miner included it as an uncle. Nevertheless what did work was that local uncles will be included in local mined blocks (if you are able to mine one fast enough, see block 1117351). |
Previously all blocks that were already in our chain were never re announced as potential uncle block (e.g. ChainSideEvent). This is problematic during mining where you want to gather as much possible uncles as possible increasing the profit. This is now addressed in this PR where during reorganisations of chains the old chain is regarded as uncles. Fixed ethereum#2298
@ppratscher This fix requires for at least 50% of the miners to update. If only you have this fix only you will include other people their reorganised blocks. It does not, unfortunately, work the other way around. |
If this fix works, upload to upstream and I can update all my nodes. Then we need yet another pool for that, at example ethpool can do it also. |
ethpool has already been updated! Will be interesting to see how it affects the uncle rate of the network. |
@Atrides if you want to help finding out the cause of the high memory use, you can do it as follows:
Using the profile, we can see which part of geth is hogging all the memory. |
@Atrides PR doesn't give you just more uncles. As I described above it doesn't take one minder to update. It's no magic patch |
@fjl http://dwarfpool.com/static/eth/geth.memprofile.gz @obscuren It's not because of more uncles, it's regarding found blocks that marked as lost and not uncles. |
|
I think the memory usage issue with develop will be fixed by #2259. Most of the memory is used in some low-level cache maintained by the HTTP server. My guess is that we are triggering this because somehow connections are not closed properly. |
@Atrides Could you run |
I've build a test program that tests whether uncles get included. The results of the experiment can be found here. In the log output you can see that the uncle that can be an uncle gets properly included and uncles that can not be included get discarded. Please remember that uncles can only be 1 block deep, e.g. |
@Atrides pling |
Is it possible to port patch into stable branch? 1.4 has serious issues, RPC is rewritten and broken, no one will use it for mining, this is money, not a fun. |
@sammy007 It would help us enormously if you'd point out what is broken (in a separate issue, please). |
Please try develop again. Many changes have happened since then |
Wait, let's merge in bas's PR first. #2259 |
Done |
woops |
I remember that I was bitching in gitter about it long ago, my bad that I didn't submit issue so far. Prolly not related to bug bounty, but if yes, I wouldn't resist :p Just curious, is it really a big business to port to master? I really afraid to run 1.4 for mission critical, all my previous attempts was painful. |
1.4 is good for mining. ethpool.org uses it since quite some time. RPC
|
Lost on 1.4-rc, maybe due to different circumstances https://gist.github.com/sammy007/a194612f82274f2c4743facfd4bae5e1 |
I found block at height N. Usually I expect it to be at least an uncle in case of race. But no one included it as uncle in next 7 blocks. Also I found N+5 block and if my block is in the same geth instance block N was not included as uncle in N+5 block. This is weird. Can anyone explain how that happened? I have more than 96 peers for propagation.
This is not a single case, day before that happened too and I remember some lost blocks since ETH launch. Is there unresolved issues in network protocol? If I can't include my own block as uncle in my own block I think it's a design flaw or at least a bug.
The text was updated successfully, but these errors were encountered: