just curious about that and thanks a lot for all of the links especially scroda github and very useful.
Double spend is prevented in the Two-Factor Proof of Knowledge signature scheme which is a form of a commit reveal type transactions, if you take a look at the scheme you see that the sender has to acknowledge the receivers address before being able to reveal their secret key(once in the mempool) in the way the signature scheme works multiple attacks are prevented.
Also yes you can say that Zero-Confirmation transaction and instant transactions are generally the same, this is due to the fact that once a transaction has been broadcasted to the network one has to be sure that it will securely be broadcasted and not be dropped off the block in any manner, thus from this security you can be assured to spend the funds before all the nodes have had a chance to fully verify the transaction.
Let me explain it in more depth,
In Bitcoin or any other blockchain out at the moment we do not see the security to be able to use Zero-Confirmation Transactions due to the fact that all current blockchains verify transactions on a block to block basis. When I say block to block is due to the fact that the winning miner uploads a block and the validators have to take the time to verify that this block is valid and non-malicious.
So say you sent a transaction to the network and Miner A verifies your transaction on his block, Miner B's block could have totally different transactions on his own block, you as a sender or the receiver can not securely say that even though Miner A was able to succesfully verify your transaction on his block, that Miners A's block will be the winning block.
One can see that there is a huge problem verifying transactions on a block to block basis it does not provide security.
Still now with the use of Relay Chains we can see a future where transactions can be verified on a transaction to transaction basis,
this is saying that if you decide to broadcast a transaction to the network that all nodes verify your transaction first before the block is uploaded, so one chain can hold all blocks in wait, and all those blocks that have been verified will be sent to the mainchain to be stored permanently. Now you the sender and the receiver can be assured that once your transaction has been picked up by the network that your transaction will for sure be processed with no worries as there is now security that your transaction is to be processed.
So if you notice the difference in other blockchains concensus is reached after validators verify a block, in the concept that Scroda provides, concensus is reached on many levels before the block is even uploaded.
So now say you the sender sends a transaction to be broadcasted, the sender can instantly verify if it is true before all nodes have a chance to, if the receiver sees that it is true he can be assured that it will be uploaded and thus having instantly verified the transaction once you have broadcasted it, if the receiver sees that the calculations are not true he will know that it will not be processed once the time comes for nodes to reach concensus as the nodes will see that it is a false transaction.
Now this is where you will see the differentiatin between Zero-Confirmation Transaction and Instant Transactions
in Zero-Confirmation Transactions one can be assured that a transaction will be processed from the security provided on transactions, still this does not mean that it will be processed instantly on the blockchain.
Still the receiver can instantly verify the transaction himself if needed once you have broadcasted it to see if it is true or not thus allowing the receiver to instantly be assured if the transaction is valid or not and if it is he can be assured that it will be processed on the blockchain.
I will work on writting a blog on the matter, as I have come to the realisation that not many know the difference between Zero-Confirmation and Instant Transactions, you do not want a blockchain to reach concensus instantly because there will be very little security, you want the seucrity to be there from the start in which the receiver can instantly verify the transaction on his own and be assured that all nodes will process it.