I've been wondering why a blockchain is necessary at all.
Ripple doesn't have one (I haven't looked closely at their
implementation but it seems reasonable to go without one).
When you do blockchain based transaction confirmations, you give
full authority to the miner that finds the transaction block. That miner
gets to decide which transactions are real and which transactions are
fraudulent, and even has the option to not include any particular
transaction (maybe they used dirty coins, or something like that). The
advantage to using a blockchain is that any tough decisions to choose
between two conflicting transactions can be decided in an easy manner.
The person who finds the next block picks their favorite and tells
everybody else.
But this has a huge downside: network confirmation can take
more than 10 minutes (for an unlucky block). If you really want to be
certain, a confirmation can take more than an hour (multi-block
confirmations).
For a transaction with no conflict, the network should be
able to confirm the transaction within a few seconds, because the
information can propagate to all of the nodes that quickly. The new
issue is that if conflicting transactions appear on opposite sides of
the network, there needs to be some way for the network to determine
which transaction gets priority. Right now the method is to wait for a
miner to find a block and then go with his decision, but perhaps there's
some way to resolve a double spend conflict without waiting for a
block.
All you really need is for 51% of the nodes in the
network to confirm a transaction as legitimate in order for it to be
'confirmed' by the entire network. Malicious nodes (nodes that confirm
both conflicting transactions, or nodes that refuse to confirm a
transaction even though there are no conflicts) can be excommunicated.
The two challenges then would be
1. telling everybody when a transaction has hit 51% confirmation
2. dealing with a triple-or-more spend: A has 25% confirmation, B has 40% confirmation, C has 35% confirmation, who wins?
For the first problem, each node only needs to see the
transaction twice: once when the node sees it for the first time and
confirms it, and a second time after the transaction hits 51% and is
announced to the network as confirmed. The first node to see the
transaction hit 51% will make the announcement.
The second problem could be reduced to a majority-wins
problem. If a node sees that 94% of votes are in, and one of the
transactions is more than 6% ahead of the others, that transaction is
the winner.
If for whatever reason a clear majority is not hit by the
time the next mining block is found, the miner could just choose the
transaction that had the most votes when it saw it. It may be outdated
but would clear up any issues. This delay would only occur for a
transaction if the spender of the coins was attempting a double spend,
and would indicate dishonesty to the merchants. They could then choose
to wait and see if their account is the winner or they could just refuse
to give out their goods.