Suggestion for fixing network

DRKLord

Member
Jun 2, 2014
92
94
68
Louisiana
I'm still not an "official" Darkcoin dev, but I've started digging into the source and doing some studying so that I will soon be of some use to the dev team and the Darkcoin project. I am by no means an expert on Darkcoin's code or the Darkcoin / Bitcoin protocols for that matter. But I have a suggestion that may be able to help (or, with some luck, outright fix) the problems the network is experiencing...

It's my understanding that the problem is arising because a large number of users neglected to update their clients, and some are saying p2pool miners failed to update and were thus creating these bad forks and growing them. If this is indeed the case, we're faced with a software incompatability issue here. There's also the possibility that opponents of DRK could be running large numbers of "bad nodes" with incompatible client software to intentionally foil our progress. I doubt there's any "conspiracy" like this really taking place, just saying it's theoretically possible... But in any case, the problem is that we can't force people to update and thus the network is in conflict about what blocks are valid and which are not... However, I may have a solution to this dilemma...

If my understanding of the problem is indeed correct, then I think it would be possible to modify the p2p networking / connection code of the Darkcoin-qt client so that when the new client searches for peers it will ONLY connect to peers running the new, correct client version...

I think that this could be achieved by several different methods, but the simplest and most straight-forward route (IMO, at least) would be to have the client and peers it's attempting to connect to "ping" each other with a "magic number"... similar to the way a file importer/loader checks a file header for the "magic number" field to make sure the file is valid. In this same way, peers can "talk" to each other and make sure they're on the correct version of the client software. Connections to peers running the old/buggy software will be refused. Connections to peers running the correct software will be accepted. In this way, perhaps we can "shut out" all of the "bad nodes" out there running the wrong client.

If this works, we could "shelter" the network from these forking issues and other problems caused by miners and users who have neglected to (or refused to) update, and perhaps we can get Darksend and everything up and running the way it should...

Criticisms, ideas and input welcomed... :)

Regards,

The DRK Lord
 
  • Like
Reactions: jpr

Bizmonger

New Member
Jun 2, 2014
28
4
3
I'm still not an "official" Darkcoin dev, but I've started digging into the source and doing some studying so that I will soon be of some use to the dev team and the Darkcoin project. I am by no means an expert on Darkcoin's code or the Darkcoin / Bitcoin protocols for that matter. But I have a suggestion that may be able to help (or, with some luck, outright fix) the problems the network is experiencing...

It's my understanding that the problem is arising because a large number of users neglected to update their clients, and some are saying p2pool miners failed to update and were thus creating these bad forks and growing them. If this is indeed the case, we're faced with a software incompatability issue here. There's also the possibility that opponents of DRK could be running large numbers of "bad nodes" with incompatible client software to intentionally foil our progress. I doubt there's any "conspiracy" like this really taking place, just saying it's theoretically possible... But in any case, the problem is that we can't force people to update and thus the network is in conflict about what blocks are valid and which are not... However, I may have a solution to this dilemma...

If my understanding of the problem is indeed correct, then I think it would be possible to modify the p2p networking / connection code of the Darkcoin-qt client so that when the new client searches for peers it will ONLY connect to peers running the new, correct client version...

I think that this could be achieved by several different methods, but the simplest and most straight-forward route (IMO, at least) would be to have the client and peers it's attempting to connect to "ping" each other with a "magic number"... similar to the way a file importer/loader checks a file header for the "magic number" field to make sure the file is valid. In this same way, peers can "talk" to each other and make sure they're on the correct version of the client software. Connections to peers running the old/buggy software will be refused. Connections to peers running the correct software will be accepted. In this way, perhaps we can "shut out" all of the "bad nodes" out there running the wrong client.

If this works, we could "shelter" the network from these forking issues and other problems caused by miners and users who have neglected to (or refused to) update, and perhaps we can get Darksend and everything up and running the way it should...

Criticisms, ideas and input welcomed... :)

Regards,

The DRK Lord
It would be nice if the client nodes received push updates in addition to the magical handshake between the network and clients. Pushing build updates on the client node would reduce errors per client and would thus create a manager or orchestrator to ensure clients are on the latest build instead of people like me trying to get up-to-date but instead screw up the network.
 

aadje93

New Member
May 23, 2014
37
4
8
The idea is nice, but i think you still have the same forking problem. The client will search for other clients that it accept it. And create a new secondary chain. Same as now is causing the problems.
 

derk

New Member
Jun 4, 2014
37
20
8
Let the bad forks sprout; let the good fork win. Let people who didn't update waste their time and energy.
 
  • Like
Reactions: jpr

DRKLord

Member
Jun 2, 2014
92
94
68
Louisiana
Let the bad forks sprout; let the good fork win. Let people who didn't update waste their time and energy.
It's not really that simple, unfortunately... Even running the correct client (10.10.02) my wallet is still losing sync with the network and getting stuck on bad forks as a result of this problem. The "let it ride approach" will hurt everyone, and not just those who neglected to update.

@ aadje93:
Well, of course... Nothing is stopping you from creating your own "bad fork" of the Darkcoin network and mining it from now until the end of time. But your chain won't be accepted by the rest of the network and your mined coins will have no value and be impossible to send to anyone (unless of course they used your bad fork also). If my proposed solution was successfully implemented (a "digital handshake" between nodes to confirm client version) those who continued to run (and mine on) the old software would indeed have a different version of the block chain... but our clients would be hard-coded to ignore it and the "bad chain" would be useless and eventually die off.
 

vertoe

Three of Nine
Mar 28, 2014
2,573
1,652
1,283
Unimatrix Zero One
DRKLord that's already happening as far as I know. clients with outdated (pre-fork) protocol versions get disconnected and banned from the newer nodes.
That's working good so far. (At least it did on testnet.)