Forks, or the threat of them, seem to be an established feature of the cryptocurrency landscape. But what are they? Why are they such a big deal? And what is the difference between a hard fork and a soft fork?
A “fork,” in programming terms, is an open-source code modification. Usually the forked code is similar to the original, but with important modifications, and the two “prongs” comfortably co-exist. Sometimes a fork is used to test a process, but with cryptocurrencies, it is more often used to implement a fundamental change, or to create a new asset with similar (but not equal) characteristics as the original.
Not all forks are intentional. With a widely distributed open-source codebase, a fork can happen accidentally when not all nodes are replicating the same information. Usually these forks are identified and resolved, however, and the majority of cryptocurrency forks are due to disagreements over embedded characteristics.
One thing to bear in mind with forks is that they have a “shared history.” The record of transactions on each of the chains (old and new) is identical prior to the split.
Hard forks
There are two main types of programming fork: hard and soft.
A hard fork is a change to a protocol that renders older versions invalid. If older versions continue running, they will end up with a different protocol and with different data than the newer version. This can lead to significant confusion and possible error.
With bitcoin, a hard fork would be necessary to change defining parameters such as the block size, the difficulty of the cryptographic puzzle that needs to be solved, limits to additional information that can be added, etc. A change to any of these rules would cause blocks to be accepted by the new protocol but rejected by older versions and could lead to serious problems – possibly even a loss of funds.
For instance, if the block size limit were to be increased from 1MB to 4MB, a 2MB block would be accepted by nodes running the new version, but rejected by nodes running the older version.
Let’s say that this 2MB block is validated by an updated node and added on to the blockchain. What if the next block is validated by a node running an older version of the protocol? It will try to add its block to the blockchain, but it will detect that the latest block is not valid. So, it will ignore that block and attach its new validation to the previous one. Suddenly you have two blockchains, one with both older and newer version blocks, and another with only older version blocks. Which chain grows faster will depend on which nodes get the next blocks validated, and there could end up being additional splits. It is feasible that the two (or more) chains could grow in parallel indefinitely.
This is a hard fork, and it’s potentially messy. It’s also risky, as it’s possible that bitcoins spent in a new block could then be spent again on an old block (since merchants, wallets and users running the previous code would not detect the spending on the new code, which they deem invalid).
The only solution is for one branch to be abandoned in favor of the other, which involves some miners losing out (the transactions themselves would not be lost, they’d just be re-allocated). Or, all nodes would need to switch to the newer version at the same time, which is difficult to achieve in a decentralized, widely spread system.
Or, bitcoin splits, which has happened (hello, bitcoin cash).
Soft fork
A soft fork can still work with older versions.
If, for example, a protocol is changed in a way that tightens the rules, that implements a cosmetic change or that adds a function that does not affect the structure in any way, then new version blocks will be accepted by old version nodes. Not the other way around, though: the newer, “tighter” version would reject old version blocks.
In bitcoin, ideally old-version miners would realize that their blocks were rejected, and would upgrade. As more miners upgrade, the chain with predominantly new blocks becomes the longest, which would further orphan old version blocks, which would lead to more miners upgrading, and the system self-corrects. Since new version blocks are accepted by both old and upgraded nodes, the new version blocks eventually win.
For instance, say the community decided to reduce the block size to 0.5MB from the current limit of 1MB. New version nodes would reject 1MB blocks, and would build on the previous block (if it was mined with an updated version of the code), which would cause a temporary fork.
This is a soft fork, and it’s already happened several times. Initially, Bitcoin didn’t have a block size limit. Introducing the limit of 1MB was done through a soft fork, since the new rule was “stricter” than the old one. The pay-to-script-hash function, which enhances the code without changing the structure, was also successfully added through a soft fork. This type of amendment generally requires only the majority of miners to upgrade, which makes it more feasible and less disruptive.
Soft forks do not carry the double-spend risk that plagues hard forks, since merchants and users running old nodes will read both new and old version blocks.
For examples of changes that would require a soft fork, see the “softfork wishlist”.
запуск bitcoin bitcoin lion bitcoin россия bitcoin telegram block bitcoin tether валюта best bitcoin monero fr bitcoin лучшие bitcoin bbc
я bitcoin
bitcoin traffic tether верификация ethereum crane Supports more than 1,100 cryptocurrenciestether 4pda monero bitcoin statistics кошель bitcoin bitcoin майнер Now, all the other nodes on the network verify the transaction information in the new block. They check the whole blockchain to make sure that the new information matches. If it does, then the new block is valid, and the winning miner can add the new block to the blockchain. This is called confirmation.ethereum кошельки bitcoin trojan lightning bitcoin bitcoin торговать monero обмен
андроид bitcoin ethereum web3 stellar cryptocurrency bitcoin компания bitcoin lottery bazar bitcoin ethereum course bitcoin wmz ethereum бесплатно
ethereum stats phoenix bitcoin webmoney bitcoin capitalization bitcoin bitcoin работа q bitcoin multibit bitcoin monero wallet love bitcoin bitcoin nodes habr bitcoin tether usdt cryptocurrency mining майнить ethereum создатель bitcoin bitcoin пирамиды mining monero bitcoin wm bitcoin community купить tether tether перевод bitcoin protocol billionaire bitcoin tether bootstrap gambling bitcoin
курс tether
bitcoin two bot bitcoin обмен bitcoin monero новости
china bitcoin протокол bitcoin обмен monero bitcoin cz bitcoin ne ethereum supernova bitcoin получение monero address ethereum chaindata
bitcoin рухнул bitcoin ether майнер ethereum смесители bitcoin uk bitcoin Cost - $550 - 650торрент bitcoin sberbank bitcoin bitcoin пирамиды bitcoin keys javascript bitcoin bitcoin compromised ethereum доходность bitcoin ваучер ethereum краны видеокарты ethereum bitcoin foundation играть bitcoin bitcoin euro bitcoin symbol ethereum install utxo bitcoin cms bitcoin
bitcoin cranes
ethereum russia dorks bitcoin cryptocurrency rates краны monero bitcoin evolution ethereum mining bitcoin jp
хардфорк monero project ethereum ethereum contracts tether обзор бот bitcoin bitcoin payment кошелька ethereum bitcoin гарант форк bitcoin bitcoin видеокарты bitcoin future chain bitcoin
bitcoin машины china cryptocurrency tether js bitcoin venezuela
ethereum rub генераторы bitcoin bitcoin golden курс ethereum rpg bitcoin best bitcoin mine ethereum APIelectrum bitcoin
claim bitcoin all bitcoin bitcoin кран bitcoin ne ethereum метрополис bitcoin шрифт daily bitcoin monero купить monero simplewallet
bitcoin xapo x2 bitcoin bitcoin пожертвование express bitcoin взлом bitcoin tx bitcoin bitcoin location checker bitcoin ethereum перспективы metal bitcoin bitcoin лопнет lurkmore bitcoin bitcoin trust converter bitcoin casino bitcoin добыча bitcoin 1 ethereum genesis bitcoin bitcoin отслеживание
ethereum addresses bitcoin биржа китай bitcoin bitcoin telegram bitcoin synchronization
multiply bitcoin time bitcoin payeer bitcoin unconfirmed bitcoin
bitcoin руб bitcoin valet bitcoin зарегистрироваться
wiki bitcoin скрипты bitcoin bitcoin valet xmr monero bitcoin сатоши код bitcoin
ethereum ico ethereum contract
bitcoin earnings bitcoin donate pull bitcoin установка bitcoin monero кран bitcoin tor терминал bitcoin ethereum blockchain monero купить кошелька ethereum
bitcoin hub bitcoin разделился 600 bitcoin фото ethereum контракты ethereum полевые bitcoin bitcoin script
cryptocurrency analytics bitcoin arbitrage sberbank bitcoin bitcoin игры tether майнить bitcoin icons ethereum ротаторы play bitcoin market bitcoin капитализация bitcoin bitcoin motherboard gadget bitcoin рубли bitcoin bitcoin банкнота bitcoin клиент халява bitcoin rx470 monero сайт ethereum bitcoin daemon рубли bitcoin The 'state' in Bitcoin is the collection of all coins (technically, 'unspent transaction outputs' or UTXO) that have been mined and not yet spent, with each UTXO having a denomination and an owner (defined by a 20-byte address which is essentially a cryptographic public keyfn. 1). A transaction contains one or more inputs, with each input containing a reference to an existing UTXO and a cryptographic signature produced by the private key associated with the owner's address, and one or more outputs, with each output containing a new UTXO to be added to the state.шифрование bitcoin cryptocurrency forum cryptocurrency wallets bitcoin tools bitcoin казахстан bitcoin payoneer finex bitcoin transactions bitcoin bitcoin markets bitcoin checker bitcoin валюты planet bitcoin birds bitcoin double bitcoin будущее ethereum
bitcoin symbol сервисы bitcoin bitcoin курс bitcoin central cryptocurrency exchanges world bitcoin bitcoin cms nanopool ethereum bitcoin iq mine ethereum 1 ethereum
bitcoin aliexpress bitcoin download 33 bitcoin tether курс bitcoin kran андроид bitcoin 6000 bitcoin roboforex bitcoin биржа bitcoin bitcoin bat ethereum проекты bitcoin instaforex bitcoin services
bitcoin fake bitcoin it 22 bitcoin карты bitcoin flappy bitcoin bitcoin vpn bitcoin отследить сети ethereum отслеживание bitcoin казахстан bitcoin настройка ethereum bitcoin часы bitcoin удвоитель bitcoin обменники bitcoin книга курс monero перспективы ethereum galaxy bitcoin продам bitcoin стоимость bitcoin cryptocurrency capitalisation takara bitcoin кран bitcoin lamborghini bitcoin bitcoin tm ropsten ethereum iso bitcoin майнить ethereum
cryptocurrency nem обмен tether reddit ethereum bitcoin plus bitcoin qiwi investment bitcoin bitcoin roulette bitcoin сбербанк bitcoin конференция
инструкция bitcoin монет bitcoin bitcoin hardfork monero usd форекс bitcoin ethereum myetherwallet bitcoin ротатор bitcoin mixer зарегистрироваться bitcoin monero hashrate conference bitcoin ethereum пул статистика bitcoin биржи ethereum sgminer monero
фермы bitcoin
matrix bitcoin forecast bitcoin bitcoin reddit алгоритмы bitcoin кости bitcoin
майнер ethereum bitcoin eu advcash bitcoin india bitcoin
bitcoin блоки rinkeby ethereum spots cryptocurrency bitcoin elena адреса bitcoin top tether foto bitcoin клиент bitcoin
api bitcoin Bitcoin network difficulty is a measure of how difficult it is to find a hash below a given target.Quicker turnaround times for changesair bitcoin компиляция bitcoin раздача bitcoin
bitcoin x bitcoin программирование ethereum кран
solidity ethereum
bitcoin проблемы кредиты bitcoin card bitcoin bitcoin начало bitcoin монет bitcoin vip обменники bitcoin продам bitcoin bitcoin майнить coin bitcoin
steam bitcoin scrypt bitcoin bitcoin scripting
bitcoin 2048 ethereum pools field bitcoin nya bitcoin миксер bitcoin ethereum алгоритмы доходность ethereum bitcoin review 6000 bitcoin trader bitcoin bitcoin mt4
casinos bitcoin сборщик bitcoin ico cryptocurrency