Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

powLimit attack #2227

Open
zawy12 opened this issue Aug 15, 2018 · 0 comments
Open

powLimit attack #2227

zawy12 opened this issue Aug 15, 2018 · 0 comments

Comments

@zawy12
Copy link

zawy12 commented Aug 15, 2018

DGW appears to have a serious vulnerability due to the powLimit method it inherited from BTC that allows a selfish miner to get an unlimited number of blocks in 2 hours. Dash is very large so it may not be vulnerable to 51% manipulations, but it's something to be aware of and understand if Dash clones start suffering this attack. It is not limited to DGW, but applies to all simple moving averages. Maybe there is some aspect to Dash that prevents this attack that I'm not aware of.

This normally requires a selfish mine by a >51% attacker if the MTP (median time past) is reasonably small like the BTC default of MTP = 11 instead of Cryptonote's default MTP=60. Some immediately say "we can't do anything about >51% attacks, so this is not meaningfully addressable." However, this greatly amplifies the blocks acquired, which pulls 51% attacks into existence. The attack may do things to profit by forcing a chain revert instead of seeking profit from the blocks gained.

For T=120 and N=24 (DGW), the attack takes less than 2*N*T < 2 hours to get unlimited number of blocks. The attack uses a very complicated sequence of timestamps. I've described it here in the "powLimit attack" section. The shortest description of the attack is that it uses the powLimits against themselves. The attack is possible is because a limit on timespan is not really a POW limit, so it's a fundamental logic / reasoning error that goes back to BTC. The limits should have been placed on next_target instead, or just removed because they do not provide any benefit (that I am aware of) unless a coin has such a bad difficulty algorithm that it is suffering bad oscillations (and needs to fork anyway....see current situation in Ravencoin).

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

1 participant