Bitcoin Forum
June 15, 2024, 05:13:38 AM *
News: Latest Bitcoin Core release: 27.0 [Torrent]
 
   Home   Help Search Login Register More  
Pages: [1]
  Print  
Author Topic: Can I send coins without updating the blockchain?  (Read 960 times)
bitcoinrocks (OP)
Legendary
*
Offline Offline

Activity: 1372
Merit: 1000


View Profile
June 20, 2015, 11:14:14 AM
 #1

I'm on a metered and expensive internet connection right now.  I'd like to send some Namecoin from my desktop wallet but I don't want to pay to download the latest additions to the blockchain.  I'm probably a couple months behind.  Can I somehow send without updating the blockchain?  The Namecoin wallet is just based on bitcoin-qt.
Xialla
Legendary
*
Offline Offline

Activity: 1036
Merit: 1000


/dev/null


View Profile
June 20, 2015, 11:18:06 AM
 #2

better safe then sorry, in crypto this is valid 10x more..I really can't recommend you those "smart" moves in order to save few bucks..
bitcoinrocks (OP)
Legendary
*
Offline Offline

Activity: 1372
Merit: 1000


View Profile
June 20, 2015, 09:18:05 PM
 #3

Why is it a safety issue?  Will my coins transfer if I open the wallet, send, and close the wallet without letting the blockchain finish downloading?
Zetacoin Express
Member
**
Offline Offline

Activity: 68
Merit: 10


View Profile
June 21, 2015, 05:08:14 AM
 #4

Technically possible if you build and sign your own transaction.

1) Using a block explorer, find the inputs you want to use (these would be the outputs of transactions sent to an address you own).
2) Using your QT client's debug console, use 'createrawtransaction' RPC call specifying an array of input's as the first parameter and an array of recipients with amounts as the second parameter.  The will return a serialized HEX encoded transaction.
3) Using the Output from the last step, use the 'signrawtransaction' RPC call specifying the HEX string as the input.  This will return another HEX string.
4) Using the output from the lest step, use the 'sendrawtransaction' RPC call (using any client) specifying the HEX string as the input.  This will return a transaction ID.

I've done this with PHP, it works.  Just keep in mind, any inputs that are unspent will end up being added to a transaction fee.  So if your going to send part of an input, make sure you send yourself change.

Also, make sure to leave a little for fees, otherwise it probably won't get mined.

See: https://en.bitcoin.it/wiki/Raw_Transactions
1986
Full Member
***
Offline Offline

Activity: 165
Merit: 100


View Profile
June 21, 2015, 09:28:02 AM
 #5

Can you not go to a shop or mall that has free wifi? Pretty much any McDonalds or Starbucks does. I only ever go in to download a few films or some new music haha.
benthach
Legendary
*
Offline Offline

Activity: 1764
Merit: 1000


View Profile WWW
June 21, 2015, 11:51:44 PM
 #6

I'm on a metered and expensive internet connection right now.  I'd like to send some Namecoin from my desktop wallet but I don't want to pay to download the latest additions to the blockchain.  I'm probably a couple months behind.  Can I somehow send without updating the blockchain?  The Namecoin wallet is just based on bitcoin-qt.

question; Can I send coins without updating the wallet blockchain?
answer; no

the reason every transaction need to be record on blockchain, by the time you updated your wallet then your transaction already considered as infant because someone already took your block which you have made during your wallet is not up to date

in another way to explain, your wallet is not up-to-date and it stopped on block 1111 but the currrent block is 1200 then when you make transaction in your not up-to-date it would be transaction on block 1112 but block 1112 already taken long ago.

reddit btcwriter1 - twitter kingpininvestor
bitcoinrocks (OP)
Legendary
*
Offline Offline

Activity: 1372
Merit: 1000


View Profile
June 22, 2015, 07:42:12 AM
 #7

OK thanks guys.
Ingatqhvq
Hero Member
*****
Offline Offline

Activity: 532
Merit: 500



View Profile
June 22, 2015, 08:40:47 AM
 #8

you can't, you have to know the latest block to sign your transaction.
                                 
CIYAM
Legendary
*
Offline Offline

Activity: 1890
Merit: 1078


Ian Knowles - CIYAM Lead Developer


View Profile WWW
June 22, 2015, 08:45:30 AM
Last edit: June 22, 2015, 08:57:21 AM by CIYAM
 #9

It's a pity that ad-sig posters and people with no actual experience of this are the ones offering incorrect advice (but not surprising)

You *can* do exactly what you want to do (send coins without "being up to date") you just won't be able to see the tx confirmed locally (but the other party will once it confirms). Also there is no need to get as complicated as "raw transactions" if all you are wanting to do is send some coins you "already have".

Transactions are sent separately to blocks - it is the miners that put them into blocks not the tx creator. Just be sure you have the correct fee (so that the tx doesn't "end up in limbo").

You should be able to trace your transaction via a blockexplorer to be sure that it confirms.

Be aware though that any "change" amounts could complicate things if you are going to do multiple txs (but for just the one tx you should have no problem).

With CIYAM anyone can create 100% generated C++ web applications in literally minutes.

GPG Public Key | 1ciyam3htJit1feGa26p2wQ4aw6KFTejU
lopalcar
Sr. Member
****
Offline Offline

Activity: 312
Merit: 254


View Profile
June 22, 2015, 01:29:03 PM
 #10

It's a pity that ad-sig posters and people with no actual experience of this are the ones offering incorrect advice (but not surprising)

You *can* do exactly what you want to do (send coins without "being up to date") you just won't be able to see the tx confirmed locally (but the other party will once it confirms). Also there is no need to get as complicated as "raw transactions" if all you are wanting to do is send some coins you "already have".

Transactions are sent separately to blocks - it is the miners that put them into blocks not the tx creator. Just be sure you have the correct fee (so that the tx doesn't "end up in limbo").

You should be able to trace your transaction via a blockexplorer to be sure that it confirms.

Be aware though that any "change" amounts could complicate things if you are going to do multiple txs (but for just the one tx you should have no problem).


Thanks for the reply, taking advantage from someone who knows replies, I will ask something more Tongue
1- About the change address issue, if you specify in coin-control panel the change addresses and the input adresses shouldn't be any problem for continue making transactions before full sync, right? This transactions are broadcasted and accepted by the network while you have conected peers and they check the balances are right in the spend address, isn't it?
2- Which makes a BTC transaction become "outdated" I mean, you can get the raw transaction from a view only "online? or could be offline?" wallet and then sign it offline with your private key, so how long will this signed transaction be valid once broadcasted to the network? Is there a timestamp component or something like that which make your transaction become invalid after certain time?
3- When you broadcast the transaction, the online client from where you send it "signed offline" can't derive your private key from it right? Are there accesible bitcoin nodes from where broadcast such transaction?

PD: I'm comparing terms with nxt which I understand a bit better than bitcoin in this aspect, specifically comparing it with Jone's "vapor wallet" functionality, so more or less, my questions are if there is something similar for bitcoin (if you know about that "wallet").
I asked about this in other forum about "send transaction after another tx has been made "Referenced Transaction Hash" and if that could be applied for cross-chain txs" but people there didn't know enought about how btc txs are made, so if you can explain it a bit would be nice to learn about Smiley
CIYAM
Legendary
*
Offline Offline

Activity: 1890
Merit: 1078


Ian Knowles - CIYAM Lead Developer


View Profile WWW
June 22, 2015, 01:50:35 PM
 #11

With a Bitcoin (or clone) tx the issue with "change" depends on your initial UTXO set (the "inputs" if you like which you can see using "coin control").

If you only have one UTXO (for say 10 BTC) and want to send someone 1 BTC then 9 BTC is going to be sent to a "change address". If you later want to send another 1 BTC then the "source" is going to have to be from that "change address" but if your client has not seen the confirmed transaction then it will likely prevent you from using that (this may depend upon the version of the software).

Without your client being up-to-date it is still possible to send further txs from the 9 BTC "change" but you will have to use "raw transactions" to do that (which is not recommended for anyone other than very advanced users).

Bitcoin txs can become "outdated" only generally because they are lacking in sufficient fees to get processed in time (so they'll get dropped from the "memory pool" of each node). If your client is still running then it will generally keep "resending" the tx (which is why it is not a good idea to get your fee wrong as you can end up with your coins in "limbo" if your client doesn't realise it is trying to send a tx with a too low fee). Typically if your tx is in the category of having a "too low fee" to be processed then within 24 hours it will normally have been removed from the memory pool of every node (assuming your client has been stopped).

Note that "dust" txs won't be propagated at all (so they won't even enter the "memory pool") and generally only "out of date" clients will be trying to send those (this kind of issue can be a big problem if you play with "raw transactions" and don't get your fee calculation correct).

You can sign a tx "offline" and then send the signed tx online with no risk about the private key (assuming your offline to online comms are secure for which I'd recommend using QR codes for 100% air-gapped safety).

With CIYAM anyone can create 100% generated C++ web applications in literally minutes.

GPG Public Key | 1ciyam3htJit1feGa26p2wQ4aw6KFTejU
lopalcar
Sr. Member
****
Offline Offline

Activity: 312
Merit: 254


View Profile
June 22, 2015, 02:17:48 PM
 #12

So... Can I for example sign a transaction today, keep it in a qr code in my home and ten years later, if the UTXO balances are still the same, broadcast that transaction and it becomes validated?

I usually use armory, there, I have the option "clean unconfirmed", I understand this only clean my own memory pool but if have not elapsed enought time, this transaction could still be in the memory pool of other nodes and become accepted one day, is then recommendable, in case you have to clean your memory pool due to unconfirmed transaction, make  new transaction to other address with a higher fee invalidating the first one?

And again, which parametres are taken in consideration for make a transaction, can it be made offline if the balances of the offline client and the balances in the updated blockchain are the same? Or when you make the transaction are needed something that only an online node can see?
CIYAM
Legendary
*
Offline Offline

Activity: 1890
Merit: 1078


Ian Knowles - CIYAM Lead Developer


View Profile WWW
June 22, 2015, 02:24:38 PM
 #13

Provided that the UTXOs you are using haven't been used then sure you could create a tx, sign it and then store it as long as you like before actually broadcasting it (not quite sure what the use of that would be apart from perhaps from some sort of "will" that when broadcast would transfer your coins to say a sibling or child).

Note that if you use any of the UTXOs "in the meantime" then the offline signed tx would become an invalid "double spend attempt".

Bitcoin (or clone) txs don't have a "timeout" but instead can have a "nLockTime" (which is a time before which they are not valid to redeem). Note that if you use nLockTime your signed tx can't actually be broadcast (successfully) until that block/time has been reached (before that it will be considered to be "non-standard" and just rejected).

Balances are really something of an illusion that is provided by wallets for end-user simplicity as the Bitcoin protocol itself only works with UTXOs (not *account balances*). In this way Bitcoin is very different to some other alt coins that implement the concept of actual account balances.

With CIYAM anyone can create 100% generated C++ web applications in literally minutes.

GPG Public Key | 1ciyam3htJit1feGa26p2wQ4aw6KFTejU
lopalcar
Sr. Member
****
Offline Offline

Activity: 312
Merit: 254


View Profile
June 22, 2015, 02:50:32 PM
 #14

I was thinking in that use case or something similar instead of swapping wallets method, not really usefull but simply for know if it's possible Smiley

When I say balances I mean the individual balances hold in each private key, I know the wallet total balance is the sum of all the private keys inside my wallet.dat file, I think that my balance word is UTXO hehe, so with this definition, can you answer:

Quote
And again, which parametres are taken in consideration for make a transaction, can it be made offline if the balances of the offline client and the balances in the updated blockchain are the same? Or when you make the transaction are needed something that only an online node can see?

I didn't know about the nlockTime feature, thanks for that info!
CIYAM
Legendary
*
Offline Offline

Activity: 1890
Merit: 1078


Ian Knowles - CIYAM Lead Developer


View Profile WWW
June 22, 2015, 02:59:56 PM
 #15

When you think about UTXOs they are not a single balance for a private key - you can actually have multiple UTXOs for the same address (thus private key).

It is important not to get confused by keys and UTXOs as they are not a one-to-one thing.

With CIYAM anyone can create 100% generated C++ web applications in literally minutes.

GPG Public Key | 1ciyam3htJit1feGa26p2wQ4aw6KFTejU
Pages: [1]
  Print  
 
Jump to:  

Powered by MySQL Powered by PHP Powered by SMF 1.1.19 | SMF © 2006-2009, Simple Machines Valid XHTML 1.0! Valid CSS!