pull down to refresh

Bitcoin Improvement Proposal 34 (BIP34), proposed by Gavin Andresen and Peter Wuille, aimed to address a fundamental issue with the Bitcoin protocol's block versioning system.
Before BIP34 was introduced, there was a concern that the original design of the Bitcoin block versioning system didn't allow an upgrade procedure that could be followed by the entire network. Specifically, blocks didn't have a way to signal the version of the rules they were following, which could lead to problems when a portion of the network upgraded to a new version of the rules while others hadn't. This could potentially lead to network forks and various issues with transaction validation.
BIP34 introduced a new mechanism that included the block height in the coinbase transaction, which is the first transaction in a block. This provided a way for the Bitcoin network to enforce that blocks have a certain version number once a certain block height is reached. This effectively acted as a version signaling mechanism, allowing all nodes on the network to know when a certain percentage of blocks had upgraded to a new version of the rules. Once a certain percentage (usually 95%) of recent blocks signal the new version, all nodes start enforcing the new rules.
In the process, BIP34 also solved another potential issue. Before this proposal, it was possible (though highly unlikely) that two miners could independently solve a block at the same time without knowing about the other's block. This could lead to duplicate coinbase transactions, which have the same transaction id (txid). By including the block height in the coinbase transaction, every block on the blockchain is guaranteed to have a unique coinbase transaction, thus eliminating the possibility of two coinbase transactions having the same txid.
In summary, BIP34 improved the Bitcoin protocol by providing a robust mechanism for rule version upgrades and ensuring that every coinbase transaction is unique.