v0.10.16 - Onyx v2

oblox

Well-known Member
Aug 6, 2014
1,032
537
183
I think removal will cause a lot more bloat if they're ever used more in the future.
I wouldn't imagine it would be any worse than the 1s and 10s. Do you have any statistics on how often the 500s have been used? They seem to be rare as is causing the lag in waiting for DS to complete. From that standpoint, the pool of suitable peers round after round would be slim and easier to narrow to addresses involved, would it not?
 

flare

Administrator
Dash Core Team
Moderator
May 18, 2014
2,286
2,404
1,183
Germany
I am using start-many. Or I was... I've given up, for now... Too much wasted time, no docs... That which works for everyone else, does not work for me, etc...

I did try starting them all at once a while ago. They all just fell off the network, no pings... Startup, never communicate again. Doing a few here and there is just a thing I started today...
I repeat: start-many is alpha and does not work at the moment - it will select any 1000DRK vin it finds in your wallet, get a line from the masternode.conf and send out a dsee-message to the network. The selection is random and will mess up your setup on the next start-many command.

You may even end up with multiple vins associated with one IP, which is not supported by the masternode --> entries drop off the network.

Because of the above there is no official doc and i discourage usage of this feature at the moment. It does more harm and frustration than good...
 
  • Like
Reactions: onetime

camosoul

Grizzled Member
Sep 19, 2014
2,261
1,130
1,183
The selection is random and will mess up your setup on the next start-many command.
And with the clue that it can only be issued once and you better be ready, all nodes are active and pinging inside of 10 minutes. No more drops.

People who actually know because they wrote it == as close to docs as we can get right now... Of course, no sense documenting something that is intended to have major changes made to it by the time it is officially supported...
 

flare

Administrator
Dash Core Team
Moderator
May 18, 2014
2,286
2,404
1,183
Germany
And with the clue that it can only be issued once and you better be ready, all nodes are active and pinging inside of 10 minutes.
Actually this is the only use case of start-many in its current version i can think of: Initial startup of many nodes. Never ever use the command twice on already running nodes.

I fu**** up my own setup that way and had a wonderful time, sorting what vin went to what IP - and ended up doing it from scratch with new IPs.

There is a cause why its not officially supported yet: Its utterly not ready for production!
 

crowning

Well-known Member
May 29, 2014
1,414
1,997
183
Alpha Centauri Bc
Hmmm... This is going popular...
Code:
darkcoind masternode list | sort | uniq -c | grep -v "1 "
      2     "107.170.242.110:9999" : 1,
      3     "108.61.172.141:9999" : 1,
      2     "188.226.196.182:9999" : 1,
eduffield , what about a quick fix here to get rid of those duplicate entries? https://github.com/darkcoin/darkcoin/blob/master/src/masternode.cpp#L140:
Code:
  if(tx.AcceptableInputs(state, true)){
    LogPrintf("dsee - Accepted masternode entry %i %i\n", count, current);

  if(GetInputAge(vin) < MASTERNODE_MIN_CONFIRMATIONS){
    LogPrintf("dsee - Input must have least %d confirmations\n", MASTERNODE_MIN_CONFIRMATIONS);
    pfrom->Misbehaving(20);
    return;
  }

  addrman.Add(CAddress(addr), pfrom->addr, 2*60*60);
// Fix start
  BOOST_FOREACH(CMasterNode& mn, darkSendMasterNodes) {
    if(mn.addr == addr){
      LogPrintf("Duplicate master node entry - rejected %s \n", mn.addr.ToString().c_str());
      return;
    }
  }
// Fix end
 
Last edited by a moderator:

flare

Administrator
Dash Core Team
Moderator
May 18, 2014
2,286
2,404
1,183
Germany
eduffield , what about a quick fix here to get rid of those duplicate entries? https://github.com/darkcoin/darkcoin/blob/master/src/masternode.cpp#L140:
Code:
  if(tx.AcceptableInputs(state, true)){
    LogPrintf("dsee - Accepted masternode entry %i %i\n", count, current);

  if(GetInputAge(vin) < MASTERNODE_MIN_CONFIRMATIONS){
    LogPrintf("dsee - Input must have least %d confirmations\n", MASTERNODE_MIN_CONFIRMATIONS);
    pfrom->Misbehaving(20);
    return;
  }

  addrman.Add(CAddress(addr), pfrom->addr, 2*60*60);
// Fix start
  BOOST_FOREACH(CMasterNode& mn, darkSendMasterNodes) {
    if(mn.addr == addr){
      LogPrintf("Duplicate master node entry - rejected %s \n", mn.addr.ToString().c_str());
      return;
    }
  }
// Fix end
This needs a protocolversion change, otherwise we'll get into trouble...
 

yidakee

Well-known Member
Foundation Member
Apr 16, 2014
1,812
1,168
283
:tongue:Hey... who flipped the switch ?

darkcoind getcheckpoint
{
"synccheckpoint" : "0000000000026c3cd95dcb540d1f3cc611a6ce798257cffbf4ad10834c0da392",
"height" : 171644,
"timestamp" : 1416304598,
"subscribemode" : "enforce",
"enforcing" : "on"
 
Last edited by a moderator:

thelonecrouton

Well-known Member
Foundation Member
Apr 15, 2014
1,135
813
283
He's gonna hate me :eek:

I hereby officially deny having made above post, and the proposal to add him to the development team as well.

My account was hacked.

Wasn't me...

REALLY!
Hey, you might be next on the list for an offer you can't refuse... :D
 
  • Like
Reactions: UdjinM6

TsuyokuNaritai

Active Member
May 24, 2014
181
102
103
There is a cause why its not officially supported yet: Its utterly not ready for production!
Does using it trigger a warning to the user/operator? Anything like this should cause a big impossible-to-miss equivalent of hands coming out of the screen to shake you awake and make sure you know what you're doing because you're stepping off the path and into the scary dark forest to get lost and eaten by wolves.
 
Last edited by a moderator:
  • Like
Reactions: fernando

flare

Administrator
Dash Core Team
Moderator
May 18, 2014
2,286
2,404
1,183
Germany
Does using it trigger a warning to the user/operator? Anything like this should cause a big impossible-to-miss equivalent of hands coming out of the screen to shake you awake and make sure you know what you're doing because you're stepping off the path and into the scary dark forest to get lost and eaten by wolves.
You are right, there should be a warning IN CAPITAL LETTERS...
 

Scriptiee

Member
Apr 24, 2014
44
20
48
Out of this world
Does using it trigger a warning to the user/operator? Anything like this should cause a big impossible-to-miss equivalent of hands coming out of the screen to shake you awake and make sure you know what you're doing because you're stepping off the path and into the scary dark forest to get lost and eaten by wolves.
Don't use features you don't know about/havent seen documentation and you'll be grand... aimed at you as well camosoul

As always a relevant http://xkcd.com/293/
 
  • Like
Reactions: yidakee and moli

eduffield

Core Developer
Mar 9, 2014
1,084
5,320
183
eduffield , what about a quick fix here to get rid of those duplicate entries? https://github.com/darkcoin/darkcoin/blob/master/src/masternode.cpp#L140:
Code:
  if(tx.AcceptableInputs(state, true)){
    LogPrintf("dsee - Accepted masternode entry %i %i\n", count, current);

  if(GetInputAge(vin) < MASTERNODE_MIN_CONFIRMATIONS){
    LogPrintf("dsee - Input must have least %d confirmations\n", MASTERNODE_MIN_CONFIRMATIONS);
    pfrom->Misbehaving(20);
    return;
  }

  addrman.Add(CAddress(addr), pfrom->addr, 2*60*60);
// Fix start
  BOOST_FOREACH(CMasterNode& mn, darkSendMasterNodes) {
    if(mn.addr == addr){
      LogPrintf("Duplicate master node entry - rejected %s \n", mn.addr.ToString().c_str());
      return;
    }
  }
// Fix end
Making the code only accept unique masternodes is really easy, but it's also exploitable. For example, what if you started a masternode with someone else's address during a protocol change. That would allow you to register and they wouldn't be able to after that. There's really no way to prove you own that ip address beyond my proof-of-service concept.

One of the next versions of the protocol will start to encrypt all messages sent to and from masternodes using their masternodeprivkeys, this means if you don't control that IP, it won't be able to talk to anyone on the network. After that, proof-of-service will kick in and start banning those nodes.
 

JGCMiner

Moderator
Jun 8, 2014
364
217
113
Hmm, having trouble mixing again with v.15. Lots of the "last Darksend was too recent" errors...
 

crowning

Well-known Member
May 29, 2014
1,414
1,997
183
Alpha Centauri Bc
Making the code only accept unique masternodes is really easy, but it's also exploitable. For example, what if you started a masternode with someone else's address during a protocol change. That would allow you to register and they wouldn't be able to after that. There's really no way to prove you own that ip address beyond my proof-of-service concept.
Quick idea (right now I'm at work and can't test this):

When the bad node registers let the other nodes ask THAT IP-address for the corresponding vin (or pubkey or whatever else is easy to access).

  1. it's a honest node -> it will give you the correct answer
  2. it's the bad node -> the 'good' node (which owns the physical address) is connected (we don't talk about IP-spoofing here, don't we?) and gives you the wrong answer (it can't return the bad node's vin/pubkey/etc. because it has no idea what's going on).
No correct answer, node not accepted.
 

oblox

Well-known Member
Aug 6, 2014
1,032
537
183
Hmm, having trouble mixing again with v.15. Lots of the "last Darksend was too recent" errors...
Mine sat about 18 hours with no activity with one remaining 500 denomination. I'm now moving along, but still not finished compared to my 10s, and 1s.
 

oblox

Well-known Member
Aug 6, 2014
1,032
537
183
Quick idea (right now I'm at work and can't test this):

When the bad node registers let the other nodes ask THAT IP-address for the corresponding vin (or pubkey or whatever else is easy to access).

  1. it's a honest node -> it will give you the correct answer
  2. it's the bad node -> the 'good' node (which owns the physical address) is connected (we don't talk about IP-spoofing here, don't we?) and gives you the wrong answer (it can't return the bad node's vin/pubkey/etc. because it has no idea what's going on).
No correct answer, node not accepted.
Seems like a logical approach... there would be no other way for the fake node to get the key generated from the masternode genkey command unless you were the one generating it (or logged their computer). ;)

But couldn't you use a legit masternode to grab the genkeys from other nodes (from the check) and then use those same keys to claim ownership for future 1000 coin vins? Doesn't that put you back at square one?
 

JGCMiner

Moderator
Jun 8, 2014
364
217
113
Same here :-(
8 hrs running .16.15 and still sitting at 1% (which I think really means 0%, since that what it started at).
Yeah. It is especially odd since the older v12 worked fine except for the high fees. Not sure what is going on.

Anyway will run overnight to see if it mixes.
 

oblox

Well-known Member
Aug 6, 2014
1,032
537
183
Same here :-(
8 hrs running .16.15 and still sitting at 1% (which I think really means 0%, since that what it started at).
Look at your coin control. Are your coins put into denomations in powers of 2 (1024, 512, 256, 128, 64, 32, 16, 8, 4, 2)? If so, you'll want to select all and send to a fresh address in the wallet. Not sure why it is doing that but it would never start when the coins were broken up like that.

Any idea on why this happens eduffield ? It has happened on multiple occasions for me.
 
  • Like
Reactions: moocowmoo