Upcoming Major Riecoin 0.20 UpgradeA new major Riecoin upgrade is planned, and includes a hard fork. I worked on it during the last few weeks.
The first step of this upgrade was to update the base code to Bitcoin's 0.20, which is done. You can find the experimental code at the
Github repository. I also built
experimental binaries. Despite their prerelease status, they should work fine and be fully compatible with current 0.16 nodes, though please backup your wallets if you plan to use 0.20, just in case. Feedback is welcome!
Pool operators and other advanced Riecoin users should start looking into the changes and update their software accordingly, as well as closely follow the Riecoin Core development.
Here is a list of notable changes from 0.16.3.1.
- There were inconsistencies regarding the nTime and nBits positions in the Block Header. For example the SubmitBlock and GetBlockHeader commands were inconsistent regarding this. This is now fixed, with nTime always coming before nBits like for Bitcoin. Internally, when hashing for mining or to get a block hash, nBits must still come before nTime (I really don't know what Gatra did, this swap was just unnecessary). Riecoin related software should be updated accordingly. This includes rieMiner, which current stable version is no longer compatible with 0.20, but the latest source code is;
- Testnet was reset. I only know about 2 active Testnet nodes, and both forked for some reason, so it was clear that a fresh start was needed. Additionally, the constellations for Testnet are no longer sextuplets, but quadruplets, and the minimum Difficulty was raised to 600 rather than 304. Testnet nodes are needed, as well as continuous spare mining power to mine test blocks and make Testnet a decent simulation of Mainnet. Please use the Testnet bootstrap found here;
- The "getnetworkhashps" command was replaced by "getnetworkminingpower" (and fixed: previously it only relied on the current Difficulty, now it works properly with lookup blocks). A new metric is used, and is standardized such that 1 correspond to mining a minimum difficulty block (Difficulty 304 in Mainnet or 600 in Testnet) every 150 s. For now it is proportional to the Difficulty^(constellationLength + 2.3), in accordance to observations with rieMiner; the formula may be improved later at any time. The Block Proofs/Chainwork are also now using a similar calculation;
- The GetBlockTemplate's "primes" field is replaced by "constellations", which gives a list of accepted constellations for mining rather than just a constellation size. The "segwit" rule is now mandatory;
- The "getprimes" RPC call is replaced by "getresult" and gives directly the base prime number, instead of all the prime numbers. It will be completed later to include information about the PoW;
- Generated addresses are now Bech32 by default;
- The RegTest is now properly implemented (the PoW here is simply prime numbers). Most of the test units were ported to Riecoin;
- And of course, all the Bitcoin features and bug fixes since 0.17 are now included in Riecoin. Read the Bitcoin Core change logs for more information.
The base code upgrade is pretty much done, though some help is still needed in order to complete the
build system and the
test units.
No seed node nor DNS seed node IP were hardcoded yet, so one needs to add nodes in the riecoin.conf (there is a template in the binaries page). Please support the network by
providing reliable Riecoin nodes and DNS seeders for the long term and share them for hardcoding! This will make initial sync possible without having to add some nodes in the configuration file.
The next step will be the hard fork, in order to improve Riecoin in multiple ways. Early discussions took place
here, as well as in Discord and a few posts here somewhat far in the past. Here are planned changes.
- The constellation pattern will be changed from sextuplets to septuplets (quintuplets in Testnet). Both possible patterns will be accepted, so the blockchain will provide more diverse results. One of them will have a chance to be a 8-tuple or longer, which would help a lot to beat records and improve the Riecoin's scientific usefulness. In contrast, the sextuplets cannot be part of longer tuples, which is really a shame. Moreover, longer constellations are also better because they make verification even easier in comparison to finding them, which make them more practical as PoW;
- The SuperBlock system will be removed. While records have indeed been broken this way, it also has significant drawbacks, like freezing the network during an hour every week and a complicated implementation that also confuses a lot of people;
- The Difficulty Adjustment Algorithm will be improved. No particular algorithm has been chosen yet. The chosen one should not be too complicated to implement, while improving resistance to attacks like Selfish Mining or Timestamp Manipulations, proposing smooth Difficulty updates (often enough and without sudden variations) and well respecting the 2.5 minute average for the long term. The discussion is open and DAA Suggestions are welcome!
- The nOffset encoding will be updated in order to allow offsets > 2^256, which allows more efficient mining. Some PoW information like the constellation type may also use this field. See a former rieMiner's developer suggestion about this.
Once the development is advanced enough, a date will be chosen for the hard fork. Testnet will be hardforked first to ensure the well functioning of the implementation (that is also why a proper Testnet network is needed). Stay tuned!
By the way, I am thinking about creating a new BitcoinTalk topic with updated first post (it is clear that Gatra will never come back to update the post, and having outdated information in such an important post does not give a good image of Riecoin and is a source of confusion), and will proceed soon unless some community members are opposed to this.