Can you have a password based cryptocurrency? Bitcoin is key based. Although it is possible to convert a password into a key, publishing the public key makes it vulnerable to brute force. Currently, passwords are used with Bitcoin, but only to protect keys (if the key is lost, your money is lost. Publishing the key in a public place is bad idea because brute force.) Is there a way to you can use passwords, but make checking the password require mining a block?

In particular, is there a way to make it so that it is impossible to know if a transaction signed with a password is correct unless its part of a mined block? This way, even if your password only requires 1,000,000 tries to crack, the attacker needs to mine 1,000,000 blocks to bruteforce the password?


In particular, once they have mined a block, if you change the password, the proof of work becomes invalid, and you need to generate a new one before you can check the new password.
Although it is tempting to say that blocks with invalid passwords are invalid (so our malicious miner doesn't even get to keep what he mined), this would put honest miners at risk of receiving invalid transactions and losing their mined coins. Therefore, invalid transactions would just have to be ignored.
Users could change their password by simply creating a new account and transferring their funds to that.


Is this possible? Does any cryptocurrency currently do this?
In particular, is there a way to make it so that it is impossible to know if a transaction signed with a password is correct unless its part of a mined block? This way, even if your password only requires 1,000,000 tries to crack, the attacker needs to mine 1,000,000 blocks to bruteforce the password?


I'm not aware of any cryptographic constructions that would let you do that. The closest thing I can think of is increasing the number of iterations of the password derivation function so that the amount of work required is similar to the amount of work required for creating a block.


  Although it is tempting to say that blocks with invalid passwords are invalid (so our malicious miner doesn't even get to keep what he mined), this would put honest miners at risk of receiving invalid transactions and losing their mined coins. Therefore, invalid transactions would just have to be ignored.


That doesn't completely fix things, though. If someone on the network is trying to bruteforce a password by submitting lots of transactions, the miner is going to see a thousand invalid transactions for each valid one. This means that the honest miners almost never earn fees for their block, and that legitimate transactions almost never go through.



You've got the right idea in trying to prevent an offline attack against a password, though. You should look at Peer Assisted Key Derivation.