BUG IS FIXED!
;-) However we need to reset the testnet.- Update your code (git pull)
- Remove your old blockchain (rm -rf nxt_test_db). (!!!!!! IMPORTANT)
- and reconnect.Also, the public testnet node has changed:
http://ec2-52-28-123-208.eu-central-1.compute.amazonaws.com:6876/index.htmlOld clients will no more be able to connect, as the new Elastic version is not 0.2.0Thanks again for crashing.
The Bug was the following:
When a work cancellation was submitted, it checked in the transaction validation routine if the work was still pending.
if (WorkLogicManager.getInstance().isStillPending(attachment.getWorkId(), transaction.getSenderId()) == false) {
throw new NxtException.NotValidException("Cannot cancel already cancelled or finished work");
}
Unfortunately it also checked if the work cancellation was sent by the original author. This was correct earlier before the protocol revamp,
but now we have a work cancellation request (the original author must send this if he wants to cancel before the regular deadline) and the actual work cancellation is created by the one who mines the block. So whenever someone else mins a block which cancels someone else work, it all crashes.
This is by the way how a bug report for a bug bounty must look like! (It must have a good description)
Nonetheless, Lannister I would say you give away 1 BTC (maybe split it up?) to those who found the bug, that means to the one who created the work and the one who mined the block. Would you be OK with that?
I would suggest that bugs that crash the blockchain will be paid with 2 BTC if they inlude a full explanation, and a reproducible transaction/script/whatever! Lannsiter you would have to agree to do the payouts.Happy hacking, and hopefully we find the next bug quick.