1

Similar to Ethereum's Archive Node:

Stores everything kept in the full node and builds an archive of historical states. Needed if you want to query something like an account balance at block #4,000,000.

Or is it not needed because Full Node is an Archive Node due to Bitcoin's UTXO model?

2

The language used in the Ethereum ecosystem doesn't always entirely align with the language used in the Bitcoin ecosystem.

All full nodes in the Bitcoin ecosystem verify all transactions and blocks from genesis. This is generally not the case in the Ethereum ecosystem as this exercise is much slower and requires significantly more disk operations (i.e. see Jameson Lopp commentary).

Full nodes in the Bitcoin ecosystem can either be pruned or archival. Pruned full nodes don't store data on spent transaction outputs in perpetuity while archival full nodes do. If you want to do something like query the effective balance of a Bitcoin address at block 4,000,000 you would need an archival full node. You would also need software like Electrum Personal Server (EPS) or alternatives that index historical UTXOs by address.

For more details on the different types of full nodes in the Bitcoin ecosystem see this presentation from John Light at London Bitcoin Devs in July 2018.

5
  • Agree with everything except "EPS" part. You can get transactions for any address using scantxoutset in a full node (non pruned/archival). Can also import addresses and use listunspent. – Prayank Jul 3 at 13:50
  • Thanks for this @Prayank. scantxoutset scans the current ie most up to date UTXO set right? You can't use it to scan a historical UTXO set say in January 2015, to see what the effective balance of an address was in January 2015? – Michael Folkson Jul 3 at 14:12
  • Right scantxoutset will only return transactions from current UTXO set so few transactions may be missing if we use it and expect all transactions until now. But if we want to see sum of all UTXOs right now which can be used as effective balance in a wallet, it can be helpful. Example: "total_amount": 0.66940771 for n3GNqMveyvaPvUbH469vDRadqpJMPc84JA using scantxoutset – Prayank Jul 3 at 14:26
  • Cool, so I think my answer is correct for querying historical balances. Though the example given in the question, block 4,000,000 is actually decades in the future ;) – Michael Folkson Jul 3 at 14:32
  • 1
    Yes its correct. Upvoted the answer. – Prayank Jul 3 at 14:59

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.