Hey! John Smith wrote: > I think the easiest way to speed this up would be to scan the wallet every > time a block comes in or something else changes in the block chain (or, if > you prefer, some pre-set interval of N minutes). Then go over the entire > wallet and the accumulate balances for all accounts. This could be done in > amortized linear time using a hash_map. That was a good suggestion - thanks! I implemented it along these lines and now the Instawallet server can breath again. Well, more or less at least, as now "sendfrom" starts acting up and I have to look into that next. Here is a branch with the code for the cache: https://github.com/javgh/bitcoin/tree/balancecache . It's currently based on a somewhat old version of the codebase as I'm running with a number of other modifications. So it won't easily apply to something newer. I hope to be able to switch to a recent version at some point (mostly hoping for some improvements in the fee handling area before I do that) and then I can hopefully provide a cleaner version of this patch. For now, I just document it here for anyone who might need this as well and can piece it together themselves (I attached a patch file). Basically I create a list of all account balances every time a new a new block comes in or a transaction that affects my wallet appears. The list is stored in a "map" right now. This seems fast enough for me. I didn't use a hash map for now, because I'm fairly new to C++ and was a little confused on what to use (is there a "standard" hash map to use in the STL? or do people use boost or what?). But my VPS is low on memory anyway, so I guess that's kind of a justification as well to go for a tree-based implementation of map. Cheers! Jan