What is a fork?
Because bitcoin is open source, anyone can modify its software. You can add new rules or remove old ones to suit different needs. However, not all modifications are equal: some updates will make your node incompatible with the network, while others will be backwards compatible.
Softforcing is a rule change that allows updated nodes to communicate with older nodes. Let's take the block size as an example. Suppose we have a block size of 2 MB and only half of the network decided to accept the upgrade, after which all blocks must not exceed 1 MB. Now the upgraded nodes reject blocks larger than the allowed size.
The old nodes can still accept such blocks or distribute theirs. This means that all nodes remain part of the same network, regardless of which version they use.
A bitcoin update called Segregated Witness (or SegWit) is one example of a softfork. Through clever use of technology, it introduced a new format for blocks and transactions. The old nodes still receive blocks, but they cannot validate the new type of transaction.
In turn, the hardforge is more disruptive. Suppose half the network wants to increase the block size from 2MB to 3MB. If you try to send a 3MB block size to unupdated nodes, they will reject it because the rules clearly state that the maximum size they can accept is 2MB. Since the two networks are no longer compatible, the blockchain splits into two separate networks.
The black chain in the diagram above is the original one. Blockchain 2 is where the hardfork occurred. After the fork, the updated nodes started producing larger blocks (the green ones). The old nodes do not recognise them, so they will continue down a different path. In the aftermath of this event there are two blockchains that share a common transaction history up to block 2.
There are now two different protocols, and each with its own currency. All information is fully duplicated in the new network, meaning that if you had 20 BTC in the original chain, you will also have 20 NewBTC in the new one.
In 2017, bitcoin went through a rather controversial hardforward in a similar scenario. A minority of participants wanted to increase block size to allow for higher throughput and lower fees. The rest of the network felt that this was a rather poor scaling strategy. In the end, the hardfork spawned Bitcoin Cash (BCH), which separated from the bitcoin network and now has its own independent community and roadmap
What is a bitcoin node?
A bitcoin node is a term used to describe a program that is a kind of bridge for user equipment to communicate with the bitcoin network. It can be anything from a mobile phone that controls a bitcoin wallet to a separate computer that stores a complete copy of the blockchain network's records.
There are several types of nodes, each serving a specific function. They all act as an endpoint for communication with the network, whose main task is to transmit transaction and blockchain information in a timely manner.
How does a bitcoin node work?
A full node validates (checks) transactions and blocks against certain network requirements (i.e. follows the rules). Most full nodes use software called Bitcoin Core, which is a reference implementation of the bitcoin protocol.
Bitcoin Core is software created by Satoshi Nakamoto in 2009, at the time it was simply called bitcoin, but was later renamed to avoid confusion. Other implementations of similar software can also be used, as long as they are compatible with Bitcoin Core.
Full nodes are an integral part of bitcoin's decentralised environment. They download and verify blocks and transactions, and then distribute information about the work done to the rest of the network. Because they independently verify the authenticity of the information they are given, the user does not rely on a third party for anything.
If a full node stores a complete copy of the blockchain network, such a data source is called a full node archive. However, some users refuse to store old blockchain information to save space, due to the fact that the bitcoin blockchain contains over 200GB of transaction data.
Simplified nodes are less operational and less resource intensive than full nodes. They allow users to interact with the network, but without performing all of the operations that a full node does
While a full node downloads all blocks for inspection, a simplified node downloads only a part of each block (called a block header). Although the block header is tiny in size.