I began using bitcoinj after it was recommended in the thread, steering away from fully writing everything. i finally have a base understanding of it, but a very small base.
Its been working great, but i see some issues. Wallets must be saved all the time, if a save is missed due to some issue, the wallet will show messed up balances and give restrictions on available inputs. i prefer a more live approach where i can verify the inputs/outputs against the chain that is already downloaded, but bitcoinj seems to only allow a one time update so to speak. if you dont save the wallet to disk when the tx comes in or is replayed, its non existent to your wallet. no "quick check" of the block store to be sure. maybe i am wrong, but its what it seems like. i spent days trying to get a balance to persist without saving the wallet to disk when the TX comes in, and only saving the SPV store and the wallet keys, i dont think its possible with the current setup of bitcoinj for the balance to persist using a live sync without re-download. it seems i must completely delete the chain file, re-download block chain and finally re-populate wallet. could be very time consuming on mainnet correct?
I like bitcoin j, i like how its set up and give a lot of control, but i dont like how i am unable to have a full node. i want a node that i can scan TXs against the downloaded chain, update immediate, but also replay without issues. the point of bitcoinj is that its a light client, so i think i have the wrong tool for the job.
this being said, does any of what i said make sense? is it a valid concern or do i just have no understanding of what i actually need?
if this is a valid concern, is bitcoinj still a viable library for a server side app? or is there a tool better suited for this?
i read some material on writing a client from "scratch", its just too involved. So if i shouldn't continue to use bitcoinj server-side, is there an equivilent that is also pretty low level and allows for "infinite" wallet creation?
Viable and useful are two different things. There is no reason to use that for anything when there are plenty of other options out there that are better coded than that one. I had to pick it apart the first time track more than six bugs to get it going and when I have to re-write the software for it to work, that is not worth it for me or you.