Published on: 2016-02-29T11:49:57+00:00
One proposal to enhance the efficiency of bitcoin nodes suggests building the UTXO set in reverse, starting from the newest block and working backwards. The UTXO set consists of unspent transaction outputs (UTXOs) and unfunded transaction inputs (UFTXIs). The proposed procedure involves checking each transaction in a last-to-first order. For each output, it will be checked if it is part of the UFTXI set. If it is not, the signatures will be validated, and the output will be added to the UTXO set. Each input will be added to the UFTXI set. When a transaction is received, all its inputs will be checked. If they are in the UTXO set, the transaction will be marked as confirmed; otherwise, it will be marked as having "unknown inputs." Additionally, a counter will keep track of the number of blocks validated.Transactions with unfunded inputs will be considered validated back to the block they were included in, while transactions will be considered confirmed up to their ancestor with the newest validation time. A reference client can mark transactions with six or more output confirms and 1000 or more input confirms as confirmed. Once the genesis block is reached, all transactions will be marked as confirmed and the second number can be dropped.Another proposal aims to reduce node bootstrap time and network usage by loading a pre-generated UTXO-set datafile. To achieve this, full node clients like Bitcoin-core need to provide a feature that allows freezing the UTXO-set at a specified height and linearizing it in an unspecified data-serializing format. Along with this, a serialized form of the current chain-index up to the specified height will be appended to the pre-generated UTXO-set-datafile. This combined data will be hashed using double SHA256 and signed by a group of developers who sign deterministic builds.To ensure the integrity of developer pubkeys and signatures, methods like the current gitian build must be used. Full node client implementations supporting bootstrapping from a pre-generated UTXO-set should include trusted developer pubkeys, the hash (or hashes) of the pre-generated UTXO-set-datafile(s), and n signatures of the hash(es) from a subset of developers defined earlier.New nodes can download a copy of the pre-generated UTXO-set, verify its hash against the allowed UTXO-sets, and check the ECDSA signatures from various developers. If the user accepts the number of valid signatures, the node can continue bootstrapping from the specified height. Sharing of the pre-generated UTXO-set can be done through CDNs, BitTorrent, or other file hosting solutions. Additionally, it is possible to extend the bitcoin peer-to-peer layer with features to distribute and share such a pre-generated UTXO-set.
Updated on: 2023-08-01T17:53:48.366090+00:00