Creator of RaiExchange Describes RaiBlocks Difficulties for Exchanges

The creator of RaiExchange, going by the username "Raix_JayDubs" explained some of the technical difficulties of using RaiBlocks on an exchange recently on Reddit. Some of the best qualities of RaiBlocks for individuals make it a little more difficult for Exchanges that require a large amount of transactions in a short time period. JayDubs described the reason exchanges were having difficulties in his post: 

"The 'short' answer is that RaiBlocks is a different technology with different limiting factors that traditional (mined) coins do not have. Exchanges are used to dealing with the norm, which RaiBlocks is not. Exchanges are generally used to having only one large 'hot wallet' per cryptocurrency along with a cold wallet for offline storage of excess funds. XRB is a completely different technology that does not scale for individual accounts in the way a regular blockchain does, and that's where the majority of the problem lies when you're dealing with sudden surges of deposits and withdrawals.
I want to make something very clear: the XRB protocol still scales. It scales massively. Just not for individual accounts. A single account can do no more than 6 transactions per second with the best hardware in the world. That is by design.
While it's true that there have been software issues in the node such as crashing, desync, and lagging behind, the majority of them have been fixed. The core team has been working their ass off. But again, these are not problems with the XRB protocol. They are growing pains. Simple implementation details.
So, how am I solving these issues then?
There are two variables in scaling RaiBlocks to the level of transactions that exchanges do:
  1. The number of nodes you run
  1. The number of accounts you store your funds in
The benefit of increasing the number of nodes you run is obvious. However, the number of accounts may not be. The reason for needing more accounts is because, as I said earlier, a single account can only do (in theory) 6 transactions per second at best, and more around one transaction every 2 seconds for the average cloud server.
However, combining these two things introduces extra problems that primarily stem from the fact that two nodes very rarely ever have the exact same ledger. For something like an exchange, having data that isn't strongly consistent is a big no no.
As such, you have to have a consensus model. You need to wait until all of your nodes have the exact same set of data on an account before you can reliably transmit further data out. You could just firehose it and hope for the best, but that's shown to be a bad idea. This is not Bitgrail's fault, but that's what they were running into at one point - a node would think it broadcasted a block but the broadcast failed. As such, every block after that was invalid and their entire withdrawal system would fail until they fixed it manually. You would see 'invalid block' in the explorer. This bug has since been fixed.
Assuming your control software isn't singlethreaded and running on a single server, you're going to have to put in a ton of extra work to make sure everything has safe concurrency. Read locks on the data, synchronous writing, and fair queuing to ensure no single request ends up being blocked forever. You also now have to implement automatic systems for internal ledger balancing.
All in all, it requires a lot more work on the software side to ensure scalability but also data integrity.
That's the gist of it."
You can read the entire thread on Reddit here: https://www.reddit.com/r/RaiBlocks/comments/7ozfrh/im_jaydubs_the_creator_of_raiexchange_ask_me/dsdfe17/