Block size limit Bitcoin is a
cryptocurrency, a form of currency using cryptography to keep transactions secure. A collection of bitcoin transactions prefaced by a block header, protected by proof of work, and recorded on a network of computers is called a "block". All blocks are tied together sequentially by using a
cryptographic hash on the previous block and storing its output in the next. This forms a
blockchain. Each block contains information about who sends and receives a given unit of bitcoin (a transaction), as well as the signature(s) that approve each transaction. Originally, there was no limit to the size of blocks. However, this allowed malicious actors to make up fake "block" data that was very long as a form of
denial-of-service attack (DoS attack). These fake blocks would be detected, but doing so would take a very long time, slowing down the whole system. Therefore, a block size limit of 1 MB was introduced. Others have proposed changes to Bitcoin that would reform the block format in a backward-incompatible way. For example, FlexTrans (Flexible Transactions) would make transactions smaller by changing how they are described to a "tag" system, allowing more transactions per block. This is not compatible with systems that do not upgrade.
Malleability A transaction uses unused outputs from a previous transaction(s) known as
unspent transaction outputs (UTXO). This results in a chain of related transactions linked by their transaction identifier. However, it is possible for someone to change (mutate) unconfirmed bitcoin transactions without making them invalid, which changes the transaction's identifier, making child transactions invalid (i.e., link between transactions are broken).
Segregated witnesses as a solution The signature data called the
witness would be separated from the
Merkle tree record of who is sending or receiving the bitcoins. The witness data is moved to the end, and each byte of it would only count as one quarter of a "unit". It also addresses signature malleability, by serializing signatures separately from the rest of the transaction data, so that the transaction ID is no longer malleable. ==Activation==