I think the block chain is the most brilliant, elegant way I've seen for independent machines to form a consensus. My main issue with it is the delay in confirming transactions.
My idea is to have transactions added to the block chain individually, rather than in blocks. What would happen is that multiple transactions would simultaneously be added to the head of the chain, which ought to be fine as long as they are all mutually compatible. All that's needed is for further transactions to be able to build on multiple compatible transaction streams and merge them, rather than just picking one. It's possible that a transaction gets merged into several different streams, but that actually helps its odds should it ever end up in a stream that ends up getting rejected.
Each transaction includes its own proof-of-work. If there are two parallel streams containing incompatible transactions, the stream with the greatest cumulative proof-of-work in its history becomes valid, and the other is dropped. Therefore peers are motivated to build on as many valid transactions as they know, to decrease the odds of their stream being dropped, meaning they will want to merge all the compatible parallel streams they know of in order to maximize the proof-of-work in their new stream. Peers will also be motivated to include as much proof-of-work as they can in their own transactions, for the same reason.
One benefit of this arrangement is that it doesn't need transaction fees or any other reward to motivate third-party block computations.
Thoughts?
Ryan