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

Consensus fail after updating validators #2014

Closed
cloud8little opened this issue Oct 23, 2020 · 0 comments · Fixed by #2015
Closed

Consensus fail after updating validators #2014

cloud8little opened this issue Oct 23, 2020 · 0 comments · Fixed by #2015

Comments

@cloud8little
Copy link
Contributor

Describe the bug
A clear and concise description of what the bug is.

To Reproduce
Steps to reproduce the behavior:

  1. Start a CN and normal node.
  2. Register all standby committee as candidate and the original validator as candidate too.
  3. Register another account test1.json as candidate and vote him with 20000000 votes.
  4. After generating another two blocks. consensus node show error.

Expected behavior
It should not show error but show role=WatchOnly.

Screenshots
34e49aefb476ff7b83f77f7bd52ee27

Platform:

  • OS: Windows 10 x64
  • Version master branch, Neo-VM

Root Cause Analysis:

        public void Reset(byte viewNumber)
        {
            if (viewNumber == 0)
            {
                Snapshot?.Dispose();
                Snapshot = Blockchain.Singleton.GetSnapshot();
                Block = new Block
                {
                    PrevHash = Snapshot.CurrentBlockHash,
                    Index = Snapshot.Height + 1,
                    NextConsensus = Blockchain.GetConsensusAddress(NativeContract.NEO.ComputeNextBlockValidators(Snapshot))
                };
                var pv = Validators;
                Validators = NativeContract.NEO.GetNextBlockValidators(Snapshot);
                if (_witnessSize == 0 || (pv != null && pv.Length != Validators.Length))
                {

It was caused by ComputeNextBlockValidators get the new update key, GetNextBlockValidators still get the original validators.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging a pull request may close this issue.

1 participant