1

So I have started learning bitcoin recently (from Bitcoin and Cryptocurrency course @ Coursera). And I just learnt that there are "Full-Validating Note" out there that are:

  • Permanently connected
  • Store the whole blockchain
  • Hear and forward every node/trans

My question is why the Full Nodes need to store the whole blockchain instead of just saving UTXO set? If I understand correctly, only having UTXO is already sufficient to prevent double spending.

  • 1
    How old is this course? It seems outdated. – Pieter Wuille Dec 23 '19 at 7:58
  • Thanks for the reply @PieterWuille . The course was published in 2015, so, it is pretty old. Could you suggest how Full Node is functioning now? – meowongac Dec 23 '19 at 10:38
  • Also, in my question I said that "only having UTXO is sufficient to prevent double spending". Is that a correct statement? – meowongac Dec 23 '19 at 10:42
5

You are right, and it seems this answer is outdated.

The concept of a UTXO set is more recent than Bitcoin itself. The original software kept a database with information on every transaction output ever created, including whether it was already spent. In that setting, the UTXO set was only defined implicitly by the spentness information in that database.

Bitcoin Core 0.8 (back then still just called Bitcoin) was the first full node software version to make the UTXO set explicit. At the time (2013) it was known that it was possible to also actually delete old block data after validation, as the UTXO set was maintained separately. It was only in 2016 with Bitcoin Core 0.12 that this was actually implemented using a feature known as pruning.

Historically speaking, the answer in the course was not wrong: UTXO maintenance used to imply having the full database. Since the introduction of pruning this is however no longer the case.

| improve this answer | |
  • 1
    Its also worthwhile to highlight that full nodes that store the whole blockchain also help bootstraping new users that join the network. AFAIK, to date, there is no implementation to distribute the UTXO set. – renlord Dec 23 '19 at 10:50
  • @renlord is there any reason to not supporting UTXO set distribution? If every Full Node store only the UTXO set, would it cause any problem? – meowongac Dec 23 '19 at 11:03
  • 2
    You can't verify that a UTXO set is correct without verifying its history. For minimizing trust, the full data must be available. However, it does not mean everyone needs to revalidate the whole thing every time. There is ongoing work on distributing UTXO sets in the assumeutxo project. – Pieter Wuille Dec 23 '19 at 11:05

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

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