Unless I have to register on the forums of DRK and ask there, I would like to get some input from Evan or some developer on this.
There are two things that concern me:
1. Outputs can still be linked to addresses. If you send 20 DRK and it sends all these other outputs along with it to obfuscate, the 20 DRK still ends up in someone's address. That this can be observed on the blockchain means that analysis is easy, and we all know how often people leak addresses associated with their wallet (eg. posting it up for giveaways etc. etc.) This is an immutable problem in any Bitcoin-forked cryptocurrency that exists, as the solution (stealth addresses computed w/random data) has to be enforced for every transaction from the genesis block. If you enforce it halfway through you're stuck with old outputs that don't use stealth addresses, which makes it exceedingly complex to ensure the anonymityset is not at-risk.
2. Masternodes are an Achilles' heel. Let us say that there are 10 000 masternodes on the network. Their IP addresses and the port they operate on is, by necessity, known to the network. Let's assume that an attacker controls 5 masternodes of the 10 000. Let's also assume that each of the masternodes on the network is on a dedicated server (none of them use a VPS, because a VPS could be trivially owned by the host operating system) and each of these servers is on a 1gbps unmetered, dedicated port (clearly not the case right now, but I'm talking about a future time). How hard would it be for an attacker to knock the other 9995 masternodes off the network, leaving theirs as the only accessible masternodes (and thus not only earning them all the fees, but giving them perfect insight into transactions moving within their controlled group)? Well, NTP amplification attacks have let attackers launch 400Gbps attacks against a single machine from a sole 2mbps connection. SNMP has a theoretical 650x amplification factor. All an attacker needs to do is max out the unmetered port in an obvious attack, and the datacenter will have to react. Even straight up LOIC-style / botnet SYN floods to the port that the masternode has open will lead to the the DC null-routing traffic to that box, typically for 6 hours whilst they wait for the attack to stop. Mitigating this is an extremely difficult and expensive operation for each masternode to individually undertake, and not all DCs will even be able to provide DDoS mitigation at this level. An unsophisticated attacker using extremely traditional tools can knock all of the masternodes off the network except those they control. This is a threat to anonymity.
Incidentally, the other problem with masternodes that nobody seems to have thought of is that the limited number of them will mean they're in direct competition with each other. It is in a masternode operator's financial interests to make life difficult for the rest of them - DDoS attacks, reporting the box to the datacenter, anything that can knock a single competitor off the masternode network means more fees for the remaining masternodes. This is different to PoW mining where, for instance, knocking the pools offline doesn't mean you'll get more transaction fees, as miners always have backup pools. I'm not sure how sustainable this is as a system if it unmistakably pitches operators against each other to fight for fees. Given the cost and capital required to own a masternode, it's appreciable that this will happen as a natural result of wanting to maximise masternode profits.
Anyone considering this FUD or something is an ignorant idiot. This is just objective input from another developer who obviously has high knowledge.
Im no Evan nor (cryptocoin) developer, but anyway...
Regardin MN dos:
What if the Darkcoin wallet was monitoring the state of the network, and if the running masternode count fell for example 50% in a short period of time, it would stop denominating funds (denomination is the anonymization process which runs in the background). This wouldn't affect people sending or receiving coins because they already have them denominated/anonymized. It would only prevent people from re-sending received funds during this ddos period.
And also, dos attack sounds highly inefficient because even if you'd get all the other nodes out, the data you're grabbing with your own nodes will mostly be uninteresting to you, and the trail will end very soon because the funds are constantly being anonymized. A script which monitors your node's status and launches a new node on a different service operator if needed could also be developed.
I don't know whether masternode owners turning against each other is plausible, as that kind of activity would affect the coin valuation negatively, so I doubt the incentive is there, but we'll see.
I don't really understand what's the problem with 1. is though. People use different addresses for different purposes. Those who don't, won't risk other users unless I'm misunderstanding something.