I wonder if this is possible and the solution to your question but take a bitcoind in the conf make the max connections 0, then use the create raw tx (createrawtransaction), then use blockchain api to push it (
http://blockchain.info/pushtx) this would be the only way to do it.
Interesting, didn't know of the blockchain tx transmission API. That might be an excellent answer.
I think bitcoinj will suffice, don't need a bitcoind for that (I'll be working in Java/Scala, so bitcoinj is a perfect fit).
Stratum is a proposal for an open source client-server "Overlay" protocol that enables thin clients (currently used by Electrum client).
There is also
BCCAPI, the server backend to BitcoinSpinner.
Interesting, if the server was open source it would be a perfect fit.
I
asked whether the server code can be open sourced.
If you don't mind including a headers-only blockchain (currently 23.7 MB) you can get pretty close with bitcoinj now that bloom filters are available. (Uses bitcoind v0.8.0rc1 + bitcoinj v0.7-SNAPSHOT).
You can:
1) connect to whichever bitcoinds you like.
2) use fastcatchup to 'topup' your headers only blockchain (very quick).
3) set up a bloom filter for whatever you are interested in (very small bandwidth, quick)
4) send tx as you like.
It is not exactly trustless as the bitcoinds could 'overfilter' your tx of interest but with judicious use of a PeerGroup I think you could get round that (if you want to be completely trustless you are going to end up with a bitcoind I think).
The code to do all this is in bitcoinj/ MultiBit already so you could just take it and use it. No development required.
Hmm, very interesting but I'm not sure this is sufficient.
I want to build a service that needs to do bitcoin tx, and I would want to architect it so it is as simple as possible.
The simplest architecture I can think of is having just a stateless set of web servers with a bitcoin client library (a-la BCCAIP). I want the servers to be able to start as fast as possible from zero previous data/state. While downloading 23.7 MB might be "almost instant", a pure stateless client library is even better.
I guess that out of the approaches above, perhaps the best one is:
1. Using blockchain.info for queries
2.
Using bitcoinj to sign transactions3. Using blockchain.info broadcast API to broadcast transactions
Blockchain.info is such a huge service that I can trust it to be reliable and secure - I can trust that it won't lie to me and its servers will be up 99.9% of the time.