Skip to content
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

Invalid block relays #193

Closed
brianlenz opened this issue Mar 14, 2018 · 11 comments
Closed

Invalid block relays #193

brianlenz opened this issue Mar 14, 2018 · 11 comments
Labels
Bug Used to tag confirmed bugs

Comments

@brianlenz
Copy link

It looks like the issue that happened with block 2000190 has happened again:

http://monitor.cityofzion.io/

Over half of the nodes are stuck on block 2022689.

I had originally created CityOfZion/neo-python#302 for this, but it seems like this issue would be better addressed at the system level to prevent invalid blocks from being transmitted in the first place.

It looks like this is the invalid block hash for block 2022689: 1164457854190e4c20c0b805e0bad3f3f9c0fe50bd59308751e8c3541c38ca70

The proper block hash is: 8d23af0e0e30fffdb48bd25ea1a0049add3a48f0d2134de86adf0ce06b650488.

@erikzhang erikzhang added the Bug Used to tag confirmed bugs label Mar 14, 2018
@shivam2901
Copy link

What's solutions for this? Any where I can get that bootstrap?

@erikzhang
Copy link
Member

@ghost
Copy link

ghost commented Mar 15, 2018

From my basic analysis, it appears that the block is being transmitted to the network prior to the leveldb commit finalizing. So when the consensus nodes start up again, they don't have the block.

I have not been able to trace it to a file or line number.

@jsolman
Copy link
Contributor

jsolman commented May 17, 2018

FYI if @coranos comment was correct, this is probably fixed by my pull request here: #237

@jsolman
Copy link
Contributor

jsolman commented Jun 19, 2018

Possibly a timing issue on a consensus node could also cause this issue. Should probably create a scenario that reproduces it on a private net.

@dicarlo2
Copy link

Consensus nodes probably need to listen for blocks from the network for some duration before rejoining consensus, otherwise they may miss a block they've broadcasted but failed to persist.

@ghost
Copy link

ghost commented Jun 22, 2018

Dicarlo2 is correct. They should listen for at least one consensus before rejoining consensus (or wait for 2x the consensus timeout, in case all consensus nodes are down)

Here's how to reproduce the scenario:

  1. Send a new block to the network.
  2. Immediately die, not persisting the block (as you only persist blocks you get from the network).
  3. on restart, try to form a new consensus based on your last block height, which is now stale.

Most networks have uncle block rollback, NEO does not.

@Leondelcrypto
Copy link

neotracker does not track all the Nep 5 tokens !

@f27d
Copy link

f27d commented Jun 27, 2018

@Leondelcrypto this is not a relevant comment on this issue please raise a new issue with the neotracker GitHub repo pls

Thanks

@jsolman
Copy link
Contributor

jsolman commented Dec 5, 2018

It's possible this scenario would not cause nearly as many problems for nodes that include this change:
#489

@erikzhang erikzhang added this to the NEO 3.0 milestone Jan 25, 2019
@vncoelho
Copy link
Member

vncoelho commented Mar 5, 2019

This has been probably solved by avoiding the expose of CN signatures when crashing or after network delays that could cause view to change.

Commit f88c427 probably solved that. Fell free to open it again for further investigation or discussion.

@vncoelho vncoelho closed this as completed Mar 5, 2019
@erikzhang erikzhang removed this from the NEO 3.0 milestone Dec 6, 2019
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
Bug Used to tag confirmed bugs
Projects
None yet
Development

No branches or pull requests

8 participants