HF1903: A Hard Fork on March 21st, 2019
Alex Grintsvayg • Feb 19 2019
The LBRY blockchain will experience a hard fork (named HF1903) on March 21st to fix the way names are compared and claims are grouped.
When content is published to LBRY, the publisher selects a human-readable name to point to their content. Multiple claims for the same name compete with each other, and the claim with the most credits supporting it determines what content is visible at the name. In order to use the system correctly, publishers need clarity on how the name they choose affects the visibility of their content.
At present, every different combination of letters and symbols constitues a unique name. Unicode supports many different alphabets
and there are a lot of symbols that are defined as different but that look very much the same. For example, Amélie and Amélie look like the
same word at first glance. But your computer sees the first as having an
\xc3\xa9 in UTF8) character, while the second has a normal
e followed by a combining accent, which is shown as a single accented character (
\x65\xcc\x81 in UTF-8). Lower-case and
upper-case letters are also treated as distinct, which creates even more gotchas.
To prevent such confusion, the proposed fork will treat similar-looking names as the same when deciding what name a claim is competing for. When checking if two words correspond to the same name, the words will be normalized using standard Unicode string normalization (in NFD mode) and then lowercased using case folding. The original text and casing will still be preserved and used for display purposes, but all comparisons will be done on normalized text.
HF1903 will activate on the mainnet at height 539940, which should take place on March 21st, 2019. The testnet activation will happen today, at block 993380. Regtest activates HF1903 at height 250.
Please note that the block rewards, token distribution, hash algorithms, etc. are all staying the same. Normalization is the only change that affects consensus.
What You Should Do
For most people, nothing needs to be done. The fork will take effect transparently and won't change your experience of LBRY.
If you are running a full node, upgrade to the latest version of lbrycrd as soon as possible. Pre-built binaries are available on the releases page. You will need version 0.12.4 or higher.
If you have published content to LBRY, there is a very small chance that the fork will cause your claims to experience more competition, and they may stop being the highest-amount claims for their names. This affects less than 0.2% of claims (~1000 out of 640,000).
We will post updates about HF1903 to this page. If you want to be notified of news about this fork and future forks, please join the fork mailing list.
The fork has been discussed at length in this pull request, as well as the following issues: 1, 2, 3, 4. Please review the details and the code if you are able to. We pay significant bounties for any bugs found in blockchain code, especially fork-related code. Email firstname.lastname@example.org if you wish to discuss.