Welcome to the Dash Forum!

Please sign up to discuss the most innovative cryptocurrency!

v0.10.15.x Testing

Discussion in 'Testing' started by eduffield, Oct 7, 2014.

Thread Status:
Not open for further replies.
  1. moli

    moli Grizzled Member

    Joined:
    Aug 5, 2014
    Messages:
    3,261
    Likes Received:
    1,837
    Trophy Points:
    1,183
    Set my target at 10 tdrk/ 4 founds. Ended up with 14 tdrk, 8 rounds. Darksend actually anonymized two batches, first batch 9 tdrk, 4 rounds, second batch 5 tdrk, 4 rounds... Kinda puzzling but other than that, Darksend seems to work great!
     
  2. eduffield

    eduffield Core Developer

    Joined:
    Mar 9, 2014
    Messages:
    1,084
    Likes Received:
    5,319
    Trophy Points:
    183
    My wallet's anonymized perfectly too. I need to do a couple more tests, but then it looks like we're good to release this. Thankyou everyone who helped!
     
    • Like Like x 3
  3. pinestabe

    pinestabe New Member

    Joined:
    May 1, 2014
    Messages:
    26
    Likes Received:
    9
    Trophy Points:
    3
    Thanks for the explanation of how collateral works! Since you're wrapping it up, here's some trivial stuff:
    I noticed in processmessage() for "dsa", there's a version check:
    pfrom->nVersion != darkSendPool.MIN_PEER_PROTO_VERSION
    with a constant that is a bit confusingly named, maybe it should be named PEER_PROTO_VERSION since it must be an exact match
    I get confused easy!
    Also, there are a lot of logprintf messages in RegisterAsMasterNode() that don't have newlines, and the port check in there does exit() instead of what seems like it should be doing is returning.
    There's a typo in the logmessage in main.cpp near line 4098 ( transactione )
    <edit>
    after 1 DS round, my clients get stuck in state 7, so doautomaticdenominate aborts. in CDarkSendPool::Check() where it's supposed to reset after 10 seconds, the state check passes, but not enough time has passed. This check seems to be done only once, so the reset doesn't happen. this could be due to my odd configuration: I have a masternode and 3 clients that I'm forcing to connect to my masternode, all on the same machine. If i restart the clients they work again for 1 round, also works if I just put a sleep for 10sec after checking only for state and not time.
     
    #513 pinestabe, Oct 15, 2014
    Last edited by a moderator: Oct 15, 2014
    • Like Like x 5
  4. stonehedge

    stonehedge Well-known Member
    Foundation Member

    Joined:
    Jul 31, 2014
    Messages:
    696
    Likes Received:
    333
    Trophy Points:
    233
    Thanks for your efforts!

    How are masternode payments looking?

    I've got mixed feelings about your new method. It is definitely fairer but I'm going to miss the occasional bonanza day :D
     
    #514 stonehedge, Oct 15, 2014
    Last edited by a moderator: Oct 15, 2014
  5. moli

    moli Grizzled Member

    Joined:
    Aug 5, 2014
    Messages:
    3,261
    Likes Received:
    1,837
    Trophy Points:
    1,183
    Anonymizing 10,000 tdrk/ 8 rounds, if anyone wants to join in....
     
  6. stonehedge

    stonehedge Well-known Member
    Foundation Member

    Joined:
    Jul 31, 2014
    Messages:
    696
    Likes Received:
    333
    Trophy Points:
    233
    I'd love to but I'm at my day job and can't get to my testnet wallet.
     
  7. BrainShutdown

    BrainShutdown Well-known Member
    Foundation Member

    Joined:
    Apr 8, 2014
    Messages:
    149
    Likes Received:
    71
    Trophy Points:
    188
    Started! We need a 3rd party me thinks...
     
  8. moli

    moli Grizzled Member

    Joined:
    Aug 5, 2014
    Messages:
    3,261
    Likes Received:
    1,837
    Trophy Points:
    1,183
    Sorry, I woke up to find that my laptop was disconnected for some time. The wallet is back up now. Thanks for pairing! :)
    I think on Testnet it takes only 2 or more participants for testing, but on Mainnet it takes 3 or more for Darksend to work.
     
    #518 moli, Oct 15, 2014
    Last edited by a moderator: Oct 15, 2014
  9. TanteStefana

    TanteStefana Grizzled Member
    Foundation Member

    Joined:
    Mar 9, 2014
    Messages:
    2,861
    Likes Received:
    1,854
    Trophy Points:
    1,283
    Hey guys, did we have to do something for the latest wallet (10.15.12)? Mine won't sync the last 10 hours?
     
  10. flare

    flare Administrator
    Dash Core Team Moderator

    Joined:
    May 18, 2014
    Messages:
    2,287
    Likes Received:
    2,406
    Trophy Points:
    1,183
    Try to delete peers.dat and restart the wallet.
     
  11. crowning

    crowning Well-known Member

    Joined:
    May 29, 2014
    Messages:
    1,428
    Likes Received:
    2,005
    Trophy Points:
    183
    eduffield, still no answer whether this will be done or not?

    After thinking about it a second time I find it even WORSE than last time for several reasons:

    1. Forget "anonymous" nodes. Security by obscurity doesn't work (never has, never will; each security guy will tell you that). Someone WILL find them, DDOS them to dead, fire up some own nodes and the payments will be very predictable his. Or hers. Or if I'd hire that guy, mine!
    2. Now that we have almost 1000 Masternodes (which lots of people still consider a kind of centralization) we add _another_ kind of rare, special nodes. Explain THAT to the public.
    3. What do they can do what a normal Masternode can't do?
     
    • Like Like x 3
  12. thelonecrouton

    thelonecrouton Well-known Member
    Foundation Member

    Joined:
    Apr 15, 2014
    Messages:
    1,135
    Likes Received:
    813
    Trophy Points:
    283
    ^^ Maybe the Übernodes are just regular MNs selected ad-hoc to act as such. Would be good to hear more about how this works.
     
  13. eduffield

    eduffield Core Developer

    Joined:
    Mar 9, 2014
    Messages:
    1,084
    Likes Received:
    5,319
    Trophy Points:
    183
    1. Sure, someone might be able to find one of them and DDOS it. But there's more than one. If they find all of them and DDOS them, the system falls back to the way it works now. DDOSing them doesn't give you some special ability to print money and they can be checked by any user on the network to make sure they're working correctly.

    2 & 3. All it can do is sign a special message that the network understands, which will tell the network who to pay for a specific block in the future. The code it uses is deterministic, so someone else can run one and check that the payments are being made correctly.

    The solution I came up with is fantastic, but no one has really looked through the code yet and I haven't written a technical document showing how it works.

    - These nodes are ran by trusted people in the community
    - These nodes can't cheat, it can be detected
    - There is nothing bad that happens if they aren't present, the network continues to pay nodes ... just more randomly.
    - The system can't be exploited by mining pools. They must pay a specific address and a specific amount.
    - These nodes can be 100% anonymous by using the multi-path routing system to talk to the network: https://darkcointalk.org/threads/open-source-announcement-and-future-plans.2528/
     
    • Like Like x 4
  14. oblox

    oblox Well-known Member

    Joined:
    Aug 6, 2014
    Messages:
    1,032
    Likes Received:
    537
    Trophy Points:
    183
    I really do not like the idea of having to rely on trusted parties. The whole concept and process should be trustless by design. Why structurally couldn't the existing population of masternodes do the same task and reach consensus?
     
    • Like Like x 2
  15. moli

    moli Grizzled Member

    Joined:
    Aug 5, 2014
    Messages:
    3,261
    Likes Received:
    1,837
    Trophy Points:
    1,183
    Is this the "round-robin" you talked about before? If so the MN payment isn't going to be a variance system anymore, correct?
     
  16. eduffield

    eduffield Core Developer

    Joined:
    Mar 9, 2014
    Messages:
    1,084
    Likes Received:
    5,319
    Trophy Points:
    183
    It's still trustless due to the deterministic algorithm that determines the payee. It's just a specific set of clients that are allowed to send the message.
     
  17. eduffield

    eduffield Core Developer

    Joined:
    Mar 9, 2014
    Messages:
    1,084
    Likes Received:
    5,319
    Trophy Points:
    183
    Correct, I figured out a way to do deterministic round-robin.
     
  18. oblox

    oblox Well-known Member

    Joined:
    Aug 6, 2014
    Messages:
    1,032
    Likes Received:
    537
    Trophy Points:
    183
    So how come existing masternodes can't serve this purpose in terms of consensus? If all of them are running the same deterministic algorithm and the majority (most likely all) are coming to the same payee, then why the need for special nodes serving this purpose?
     
    • Like Like x 2
  19. crowning

    crowning Well-known Member

    Joined:
    May 29, 2014
    Messages:
    1,428
    Likes Received:
    2,005
    Trophy Points:
    183
    I DDOS yours and run mine, which pay my Masternodes only. Others can check of course, but what can they do against it?

    That's completely orthogonal to a trustless network. I trust no one!

    I do a brute-force for every IP on port 9999 and throw away the known Masternodes from the result. Needs some time, but isn't impossible for a proper botnet.
    And the bad boys HAVE botnets...
     
    • Like Like x 3
  20. moocowmoo

    moocowmoo Bovine Bit-flipper
    Foundation Member

    Joined:
    Jun 15, 2014
    Messages:
    483
    Likes Received:
    603
    Trophy Points:
    263
    Dash Address:
    XmoocowYfrPKUR6p6M5aJZdVntQe71irCX
    I also would feel more comfortable with a system that relies on quorum opposed to selected address signatures.
     
  21. BrainShutdown

    BrainShutdown Well-known Member
    Foundation Member

    Joined:
    Apr 8, 2014
    Messages:
    149
    Likes Received:
    71
    Trophy Points:
    188
    Is there a reason why those nodes cannot be selected randomly among normal MNs in the network each round and use a majority type win...
     
    #531 BrainShutdown, Oct 15, 2014
    Last edited by a moderator: Oct 15, 2014
  22. HinnomTX

    HinnomTX Active Member

    Joined:
    Jul 22, 2014
    Messages:
    166
    Likes Received:
    196
    Trophy Points:
    103
    Sorry, but I don't think this is going to fly. The community is speaking to you and they are saying that the uber nodes run by 'trusted members of the community' are not acceptable. We've already tarnished the decentralized nature of Bitcoin by introducing masternodes. As a community, we have accepted that masternodes are a necessary infrastructure to do what Darkcoin does, and there are future capabilities that will be built using the masternodes. So on the whole they are a benefit more than a hazard.

    Adding a third layer of node hierarchy to fix a problem with masternode payouts is going to be impossible to sell to the larger bitcoin-savvy community. If our goal is to replace Litecoin, we need to consider that our target audience will be highly critical of Darkcoin's construction. They will be looking for 'automatic checkpoints' and 'trusted nodes' to laugh us off the reddit forums and BCT.

    Somehow, the masternode payout system needs to be pushed up to the masternode level (i.e. run by all masternodes, good and bad) and be robust enough to check for bad MNs and ban them for a period of time when they are not agreeing to the deterministic payee.
     
    #532 HinnomTX, Oct 15, 2014
    Last edited by a moderator: Oct 15, 2014
    • Like Like x 6
  23. moli

    moli Grizzled Member

    Joined:
    Aug 5, 2014
    Messages:
    3,261
    Likes Received:
    1,837
    Trophy Points:
    1,183
    I think so many of you guys were asking for a "fair payment" on your MNs.... So I guess you're getting what you asked for and however you want to slice it... someone is going to complain? :tongue:

    Edit: Or however Evan is going to slice it.... lol
     
  24. moocowmoo

    moocowmoo Bovine Bit-flipper
    Foundation Member

    Joined:
    Jun 15, 2014
    Messages:
    483
    Likes Received:
    603
    Trophy Points:
    263
    Dash Address:
    XmoocowYfrPKUR6p6M5aJZdVntQe71irCX
    There is more than one way to accomplish this is all we're saying.
     
    • Like Like x 2
  25. moli

    moli Grizzled Member

    Joined:
    Aug 5, 2014
    Messages:
    3,261
    Likes Received:
    1,837
    Trophy Points:
    1,183
    Maybe someone needs to look at the code and help Evan?
     
    • Like Like x 2
  26. HinnomTX

    HinnomTX Active Member

    Joined:
    Jul 22, 2014
    Messages:
    166
    Likes Received:
    196
    Trophy Points:
    103
    Agreed. Personally, I'm more concerned about fixing the theft of MN payouts from cheating miners and other potential exploits than I'm concerned about low variance payments. As it stands, I would rather keep the flawed but 95% effective high variance (RC5) system we have today than move to a three tiered 'trusted nodes' system to make payouts100% and low variance. I just don't think we can sell that kind of setup outside our own enclave.
     
    • Like Like x 3
  27. TsuyokuNaritai

    TsuyokuNaritai Active Member

    Joined:
    May 24, 2014
    Messages:
    181
    Likes Received:
    102
    Trophy Points:
    103
    Although the solution is good technically, it would be a public relations disaster. Trolls & dummies already scream about "CENTRALIZED masternodes", now the majority will join them, only the already converted who have bothered to understand everything properly would defend us. The perception of the coin would remain tainted even after such a change was reversed. The crypto community *really* doesn't like anything that smells of centralization, even when it's a perfectly brilliant idea in practice.

    Solution: find a way to do it using either all masternodes, or those older than a certain age, or a random subset of such. Maybe require a supermajority to agree to the new deterministic payments, or it reverts back to the way it works now till consensus is restored. No-one will bother trying to game the system if they need 75% of the masternodes to do it.
     
    #537 TsuyokuNaritai, Oct 15, 2014
    Last edited by a moderator: Oct 15, 2014
    • Like Like x 5
  28. illodin

    illodin Member

    Joined:
    Apr 26, 2014
    Messages:
    122
    Likes Received:
    71
    Trophy Points:
    78
    Drop the IPv4 support, IPv6 has more work for brute-forcers. :)
     
  29. oblox

    oblox Well-known Member

    Joined:
    Aug 6, 2014
    Messages:
    1,032
    Likes Received:
    537
    Trophy Points:
    183
    Very well said. For the love of god, lets not go down this road of trusted nodes. The backlash will be far worse than any sort of good out of it. If "trusted nodes" as is are capable, there is no reason that all masternodes can't serve this purpose. I can't see any viable reason that would prevent implementing it into all masternodes vs just a select few, trusted nodes.
     
  30. moocowmoo

    moocowmoo Bovine Bit-flipper
    Foundation Member

    Joined:
    Jun 15, 2014
    Messages:
    483
    Likes Received:
    603
    Trophy Points:
    263
    Dash Address:
    XmoocowYfrPKUR6p6M5aJZdVntQe71irCX
    Here's my stab at a possible solution. Please feel free to rip it apart.

    1) from blockchain: during daemon startup, walk last 4000 blocks, collect paid masternode addresses.
    2) from network: collate all masternode addresses from peers into array 'mnlist'
    3) prune masternode addresses having been paid within length(mnlist) blocks
    4) prune masternode addresses with 1k deposits newer than length(mnlist) from array. (i.e. 3000 active masternodes requires 3000 confirmations to receive payments.)
    5) array now contains nodes due for payment.
    6) sort array by address.
    7) pay top address
    8) GOTO 2

    This will create a deterministic payout list all masternodes can confirm with their peers before accepting.

    This assumes masternode addresses (mnlist contents) are valid/validated and that we haven't yet grown past 4000 masternodes. (step one would be adjusted accordingly.)

    tl;dr: use the historical blockchain payments to prevent dupes, filter out the too-new, alpha sort the to-be-paid and pay the top address.
     
    #540 moocowmoo, Oct 15, 2014
    Last edited by a moderator: Oct 15, 2014
Thread Status:
Not open for further replies.