Thanks...I fixed those bugs... I was missing a validation rule on the instant trade form.
But, I want to re-write parts of the site to optimize the app for the way GAE datastore works.
I would not recommend GAE for something like making an exchange due to the difficulties in writing to a distributed database...but since I'm in for a nickle, I might as well be in for a dime.
It's pretty tricky coding to make transactions work consistently on Big Table because it is distributed across many servers globally. It's very different than working with MySql where you can simply lock a table and do a transaction. There is no such thing as table locks on Big Table. And there is no such thing as querys with joins and you must forget everything you have already learned about relational database management.
There is however a concept of 'entity groups' which are automatically locked when you use them in a transaction. You 'could' put all your users accounts into the same entity group so that when you perform a transaction, all the accounts are locked until the transaction completes and comitted to Big Table.
That would seem ok, but there is a huge latency writing to Big Table and you can only do 5-10 writes per second to a single entity group. After that, your DB puts start to fail and return errors. If you don't implement transactions properly, things gets really nasty when only half of the transaction fails. This approach obviously does not scale well.
There are solutions to this using methods of rolling back transactions that fail and rolling forward transactions that succeed. So, before I start round 2, I'm going to be optimizing the site to ensure this thing will scale properly to ensure I don't have to lock the entire user database to make each transaction.
I found a decent article that explains the problem and has some sample code that I will be implementing before I open for testing again. http://blog.notdot.net/2009/9/Distributed-Transactions-on-App-Engine