I can think of 4 options off the tip of my head:
- Use createrawtransaction/signrawtransaction/sendrawtransaction in the "Console" interface in Bitcoin-Qt
Thank you very much for this reply. May you elaborate a bit on this topic. Why does making raw transaction solve my problem of not wanting to download the blockchain.
The other suggestions you made are also interesting, I will check them out.
I'm pretty sure that createrawtransaction will allow you to create a transaction without having the inputs that you want to spend in your blockchain yet. Of course you have to know what those inputs are, but you can look them up elsewhere (such as blockexplorer.com or blockchain.info).
Note: You need to make sure you know exactly what you are doing if you use createrawtransaction. It is very easy to mess it up and lose all your bitcoins. This is an advanced function for technically knowledgeable people.This is a bit cumbersome, is there another way, that doesnt require to download the whole blockchain each time.
Note also that using createrawtransaction is cumbersome. Perhaps not as cumbersome as waiting several days for a download, but certainly much more risky, and more cumbersome than clicking a button that says "send coins".
Assuming you decide that you've learned enough about it and you are sure you know exactly what you are doing, you can issue a createrawtransaction command to spend some inputs and send the value to new outputs (wherever is it that you are trying to send it).
Here's an example.
Lets say you previously received a transaction output for 1.08336887 BTC to an address 19Mz366CWAdi84587ZEDVUAui1nztH5MSn in the first (zeroth) output of a transaction with a transactionID of c3fb2a38ff0d1d8f60a9887c8909c85172268596a7b6d2a6b1c7966549471500. For example this transaction:
http://blockchain.info/tx/c3fb2a38ff0d1d8f60a9887c8909c85172268596a7b6d2a6b1c7966549471500Now lets say you want to spend that output, and sent 0.9 BTC to address 1DhBKMWrMnZwMkvWsVpD7XWY3qBux1py5o
Lets also say you want to send the change back to your address of 19Mz366CWAdi84587ZEDVUAui1nztH5MSn
You could issue:
createrawtransaction [{\"txid\":\"c3fb2a38ff0d1d8f60a9887c8909c85172268596a7b6d2a6b1c7966549471500\",\"vout\":0}] {\"1DhBKMWrMnZwMkvWsVpD7XWY3qBux1py5o\":0.90000000,\"19Mz366CWAdi84587ZEDVUAui1nztH5MSn\":0.18286887}
This would create a transaction that would send 0.9 BTC to 1DhBKMWrMnZwMkvWsVpD7XWY3qBux1py5o and 0.18286887 BTC of change to 19Mz366CWAdi84587ZEDVUAui1nztH5MSn leaving 0.0005 as a transaction fee. For example this transaction:
https://blockchain.info/tx/3ad09ee01058e568c08c2431d1ef6f7c6390417325f66c13110d573384216e6bYou will end up with a sequence of hex characters:
0100000001001547496596c7b1a6d2b6a79685267251c809897c88a9608f1d0dff382afbc30000000000ffffffff02804a5d05000000001976a9148b3ac275cc063ea5f02ecb62d07567d857333ff088ac27091701000000001976a9145bb8efcf57d0f98e1c4b591ac1c9ced0fdb4708688ac00000000
This is the unsigned raw transaction.
Next step is to sign the transaction to provide proof that you own the private key to the 19Mz366CWAdi84587ZEDVUAui1nztH5MSn address.
To do this you can issue the following command:
signrawtransaction 0100000001001547496596c7b1a6d2b6a79685267251c809897c88a9608f1d0dff382afbc30000000000ffffffff02804a5d05000000001976a9148b3ac275cc063ea5f02ecb62d07567d857333ff088ac27091701000000001976a9145bb8efcf57d0f98e1c4b591ac1c9ced0fdb4708688ac00000000 [{\"txid\":\"c3fb2a38ff0d1d8f60a9887c8909c85172268596a7b6d2a6b1c7966549471500\",\"vout\":0,"scriptPubKey":\"OP_DUP OP_HASH160 yourPublicKeyHashHere OP_EQUALVERIFY OP_CHECKSIG\"}] [\"yourPrivateKeyHere\"]
Replacing the text:
- "OP_DUP " with "76"
- "OP_HASH160 " with "a9"
- "yourPublicKeyHashHere" with your public key hashed first with SHA-256 and then the result of that hashed with RIPEMD-160 (in this case 5bb8efcf57d0f98e1c4b591ac1c9ced0fdb47086)
- "OP_EQUALVERIFY " with "88"
- "OP_CHECKSIG" with "ac"
- "yourPrivateKeyHere" with your actual private key to the 19Mz366CWAdi84587ZEDVUAui1nztH5MSn address
- Remove all blankspace between the 76 at the beginning of the script and the ac at the end of the script.
.
Now, I've never tried this signrawtransaction step with a blockchain that isn't caught up, so I suppose there is a chance that this step won't work. Hopefully someone with more knowledge or experience than me can stop by and either confirm or deny that this step will work, but I would expect that it should.
Assuming it works, you'll end up with an updated sequence of hex characters. In this case:
0100000001001547496596c7b1a6d2b6a79685267251c809897c88a9608f1d0dff382afbc3000000008c493046022100e6c5c80b094bbb3a3a62cc0c059615b129ebb1fccc92295ac840486a45cdaa12022100e8e6fa0c8b3f361e6d966805732069c2854f10222a33f7d253e508185e27f11f0141046f4d347032fceb46395513be9223d4d23db7f0765cd9fb1701ca44cca7a4aab1d8a28ca5b7de3c43d19099a0bc14c1096226140077c1005b1359830877a3674affffffff02804a5d05000000001976a9148b3ac275cc063ea5f02ecb62d07567d857333ff088ac27091701000000001976a9145bb8efcf57d0f98e1c4b591ac1c9ced0fdb4708688ac00000000
You can then issue the command:
sendrawtransaction 0100000001001547496596c7b1a6d2b6a79685267251c809897c88a9608f1d0dff382afbc3000000008c493046022100e6c5c80b094bbb3a3a62cc0c059615b129ebb1fccc92295ac840486a45cdaa12022100e8e6fa0c8b3f361e6d966805732069c2854f10222a33f7d253e508185e27f11f0141046f4d347032fceb46395513be9223d4d23db7f0765cd9fb1701ca44cca7a4aab1d8a28ca5b7de3c43d19099a0bc14c1096226140077c1005b1359830877a3674affffffff02804a5d05000000001976a9148b3ac275cc063ea5f02ecb62d07567d857333ff088ac27091701000000001976a9145bb8efcf57d0f98e1c4b591ac1c9ced0fdb4708688ac00000000
To broadcast that transaction to the network.
Of course if you have some programming skills, it might be a lot easier to do this with a computer program that handles most of the steps.