13

I have a cold storage wallet that I have only used to receive payments.

After recovering my wallet with my mnemonic seed, do I need to synchronize the entire blockchain before I can send a transaction?

If I know the block-height when I received my first Monero payment, is there a way I can save time by synchronizing only past that point?

3 Answers 3

9

I will try to combine the above answers and my own information into one answer.

After recovering my wallet with my mnemonic seed, do I need to synchronize the entire blockchain before I can send a transaction?

Once you have your wallet, all you need is access to a monero blockchain with the proper data to send a transaction. Access to a monero blockchain with proper data can occur in three ways, the first of 2 are practical (as in, they exist) and the 3rd is theoretical (as in, it hasn't been created yet).

Possible Now

  1. You synchronize with the network on your own device and connect your simplewallet instance to your own blockchain (the daemon). This means downloading the entire blockchain.

  2. You connect your instance of simplewallet to a remote daemon using --daemon-host host:port, or --daemon-port port, and --daemon-ip ip when you load simplewallet (i.e., these flags are entered on the command line directly after the word simplewallet. For example, in windows the command would look like simplewallet.exe --daemon-host host:port. This allows you to use someone elses blockchain data. There are privacy and security risks when using a remote daemon that are not relevant to your question.

Possible in future, pending implementation

  1. You connect your instance of simplewallet to a light version of the blockchain (includes outputs you own and some random outputs from the chain). Again, this is theoretical, because this type of blockchain data reduction has not been created yet. This is more-or-less what you refer to in the second part of the question, "If I know the block-height when I received my first Monero payment, is there a way I can save time by synchronizing only past that point?"
8

Logan is correct, but I'll go into more details about the first question:

You technically do not need to sync the whole blockchain, though you'll want to do it to save headaches. What you need to is sync enough to (1) get your owned outputs (or at least the ones which you will be sending), (2) get the transactions spending your outputs (or at least the ones spending the outouts you'd have tried to send otherwise), and (3) enough other outputs of matching amounts to fill up the ring signtures (to meet the minimum mixin).

If you happen to have those data, then you are able to spend your outputs just fine. This may seem to be pedantic, but it may be the way to make a lightweight client at some point.

2
  1. Yes you must sync before you send a transaction.
  2. If you build from GitHub you can use the --restore-height flag to save time and restore starting with a block-height you specify
1
  • "If you build from GitHub you can use the --restore-height flag to save time and restore starting with a block-height you specify" This is wrong - this will reduce the time that simplewallet takes to scan the blockchain, it does not address the original question of whether a user has to download the entire blockchain. For instance, this part of the original question "If I know the block-height when I received my first Monero payment, is there a way I can save time by synchronizing only past that point?" has to do with a block height on the blockchain for synchronizing the blockchain.
    – Ginger Ale
    Jul 20, 2016 at 9:56

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Not the answer you're looking for? Browse other questions tagged or ask your own question.