Before we can look at InstantSend let’s look at the problem it is trying to solve also known as the double spend problem:
With cash the £10 object in your hand is a unique object and even though there are many other £10 notes in the world and there are (probably) even some very good forgeries, the one in your hand is entirely unique. If you spend that £10 note you cannot spend it again and that transaction is complete.
Now, on your £10 note is a number, on the one I have here it is AJ49234512, hopefully yours is different! Imagine if that number is the only representation of that currency, you could write it on a scrap of paper and give it to someone or type it on an e-mail and send it to someone. How does the person receiving this number know that you haven’t sent it to another person? Or 10? Or that it is even your number to begin with?
The answer to this lies in the Blockchain structure of cryptocurrencies. This contains a log of all of the transactions ever made within a cryptocurrency so, for the last question at least, we know who last received my £10 note and so we know who is allowed to spend it.
But let’s look at the double spend issue. In cryptocurrencies this issue is solved through confirmations. If I email you my £10 code my transaction is put into a pool of transactions and miners on the network confirm that it is a legitimate transaction and, once it is confirmed, this transaction is complete at that point it is impossible for this transaction to fail or be cancelled. I could try and send my £10 again, but the blockchain doesn’t see me the owner of it anymore and so I can not send it.
The issue with this system is that the confirmations are not instant and a malicious customer can instantly send multiple transactions of the same coin of which only one will be confirmed. This means that a malicious customer could send £10 to you and the same £10 to themselves with a higher transaction fee. The £10 transaction to you would show up in your transaction as processing unconfirmed but would eventually fail as the transaction to themselves would take precedence.
So whilst the £10 could not be spent more than once you might think you were receiving it but in fact your transaction would fail because it was already sent somewhere else.
For the low value transactions this isn’t a huge concern. It is technically possible for someone to be cheating the system, but it is also technically possible that the debit card they are using is stolen or the cash they have is a forgery. These are concerns for a business but if it is a low value transaction it is unlikely that someone will commit fraud for a cup of coffee.
Similarly for higher value transactions where time is not critical, e.g. an eBay purchase this is not a concern as the seller can just wait for a transaction to be fully confirmed before releasing goods and if the transactions fails they just wouldn’t ship the product.
This does, however, become an issue when the transaction is for a decent sum of money and the customer expects an instant transaction. Which is where Dash’s InstantSend feature comes in.
InstantSend: How it Works
The full technical details on how InstantSend works are available here. Simply put rather than the transactions going through a node and onto the mining network it is instead handled by the Masternodes who lock and validate the transaction and then push it directly to the miners. This process takes about a second.