SECOR - Simple Extended Consensus Resolution, AKA Uncle Mining
A key feature of Solo is the implementation of Masari's Simple Extended Consensus Resolution (SECOR, AKA Uncle Mining). SECOR further secures the network by reattaching otherwise orphaned blocks on top of the longest chain. By activating SECOR, faster block times can be achieved without the use of Master Nodes, DAG or some other centralized solution. Faster block times result in more transaction throughput making the blockchain more scalable.
Alt Chains are temporary disagreements about the longest chain, it happens in every Cryptocurrency and with 20 second block times it happens frequently. This happens when there is a slight delay in sending signals to the entire network, the shorter the block time the larger effect the lag has.
Without Alt Chains there can not be a Uncle Block. If two miners find blocks within the same time window instead of dropping one, the solution is added to the chain as an uncle block. The miner producing the uncle block is rewarded 50% of the calculated block reward they would have received for that block. Alt Chains with lower difficulty and/or outside of the window will stay in memory until solod is restarted but the only ones meet certain requirements are added to the chain.
Relevant lines in code:
Reorganize chain to add Uncle https://gitlab.com/solo-project/solo/blob/master/src/cryptonote_core/blockchain.cpp#L1209
Conditions needed to meet Uncle Requirements https://gitlab.com/solo-project/solo/blob/master/src/cryptonote_core/blockchain.cpp#L1982
Orphans can still be rejected if they fall outside of the time window https://gitlab.com/solo-project/solo/blob/master/src/cryptonote_core/blockchain.cpp#L1995