Consensus issue, sync. stuck at "Synchronizing sporks - 25%" - PIVX fork

Consensus issue, sync. stuck at "Synchronizing sporks - 25%" - PIVX fork

I've been working on a PIVX fork for some time, to better understand blockchain infrastructure and coding in general. I have been able to modify all parameters, remove checkpoints, set up a new genesis block for blockchain and both enable PoW & disable PoW/switch to PoS and masternode succesfully.

I am somewhat stuck however, on this last piece of the puzzle - spork synchronization. After setting up a seed node, I can continue synchronization from 12% to 25%, yet it will never go past that instance.

The feeling I have is that it has to do with spork activation times (in spork.h), yet changing these values around have not worked in getting the synchronization to complete. I am aware that I may not understand how those sporks are supposed to synchronize well enough, so I hope someone can point me in the right direction.

Any help is much appreciated.

I've been working on a PIVX fork for some time, to better understand blockchain infrastructure and coding in general. I have been able to modify all parameters, remove checkpoints, set up a new genesis block for blockchain and both enable PoW & disable PoW/switch to PoS and masternode succesfully.

I am somewhat stuck however, on this last piece of the puzzle - spork synchronization. After setting up a seed node, I can continue synchronization from 12% to 25%, yet it will never go past that instance.

The feeling I have is that it has to do with spork activation times (in spork.h), yet changing these values around have not worked in getting the synchronization to complete. I am aware that I may not understand how those sporks are supposed to synchronize well enough, so I hope someone can point me in the right direction.

Any help is much appreciated.

Looking through masternode-sync.cpp, I find these instances:

    case (MASTERNODE_SYNC_SPORKS):
    RequestedMasternodeAssets = MASTERNODE_SYNC_LIST; 
    break;
[....]
    BOOST_FOREACH (CNode* pnode, vNodes) {
    pnode->ClearFulfilledRequest("getspork");
[....]
    if (mnodeman.CountEnabled() == 0 ) {
        if(syncCount < 2){
            Reset();
            syncCount++;
        }
    } else
        return;
[....]
    if (RequestedMasternodeAssets == MASTERNODE_SYNC_SPORKS) {
        if (pnode->HasFulfilledRequest("getspork")) continue;
        pnode->FulfilledRequest("getspork");

        pnode->PushMessage("getsporks"); //get current network sporks
        if (RequestedMasternodeAttempt >= 2) GetNextAsset();
        RequestedMasternodeAttempt++;

        return;
[....]
        //set to synced
    if (RequestedMasternodeAssets == MASTERNODE_SYNC_SPORKS) {
        if (pnode->HasFulfilledRequest("getspork")) continue;
        pnode->FulfilledRequest("getspork");

        pnode->PushMessage("getsporks"); //get current network sporks
        if (RequestedMasternodeAttempt >= 2) GetNextAsset();
        RequestedMasternodeAttempt++;

        return;
    }

They seem to corrobarate that is indeed a lack of nodes; it seems at least 2 nodes needed in order to complete syncing the sporks?

https://ift.tt/2r5HMAZ

Comments

Post a Comment

Popular posts from this blog

Nonce usage in ECDSA signing algorithm

The Importance Of Owning Crypto