Finally, I finished working on the newest Riecoin Core version. It was planned for a few months ago, around Bitcoin Core 24's release, but I could only work on it starting from mid March (and the timing was also unfortunate as Bitcoin 25 will be out soon...). I was hoping for a release on the first half of April, as this Riecoin version will be in some way a turning point, but I wanted to put more effort than on other releases to have a better foundation for future Riecoin Core developments, so it is rather now at the month's end that Riecoin 23.04 is released. At least, I still made it for April so it will not have to be renamed to 23.05.
As explained in the previous post, Riecoin 23.04 will be the last version that is ported directly from Bitcoin (take Bitcoin Source Code and then make all the changes required to have a proper Riecoin client). Such porting is a daunting task, and countless hours are consumed simply by having to do a lot of testing to make sure everything works and nothing has been missed. Historically, there were some notable updates/SoftForks, on top of lots of small changes, so taking the Bitcoin's latest code was probably still a more efficient and safer way to make new Riecoin releases than incrementally applying the Bitcoin's Commits to the Riecoin's code.
After the major Taproot/Schnorr Signatures SoftFork and a pretty much "finalized" Descriptor Wallets implementation, it seems to be a good time to do the latter procedure instead starting from now. A drawback of porting from Bitcoin was that it required to retain a Riecoin Code that is very similar to Bitcoin's, otherwise it would make the ports even more tricky and increase risks of bugs.
So, Riecoin 23.04 will in this sense be a turning point. Rather than basically starting over every couple Bitcoin releases or so from its code, I will regularly check and catch up with the improvements to Bitcoin's Code (as long as they still apply for Riecoin Core). Testing and Riecoin Core development in general will be much more practical and enjoyable this way. The code no longer having to remain similar to Bitcoin's will allow us to make interesting additions and modifications to Riecoin Core that would not have been practical previously. I am already thinking about some useful tools that could be added to Riecoin Core...
Now, let's talk about the concrete changes from Riecoin 22.03 and give some rationales.
- Riecoin 23.04 is now based on Bitcoin Core 24.0.1 (instead of 22.0). Actually, it is based on 24.1 RC2, which is basically 24.0.1 with a few very small Bug Fixes and improvements;
- The Legacy/BDB Wallet support was completely dropped. Bitcoin and so many other coins will certainly be haunted by Legacy Wallets for still a lot of years given how slow so many actors (like Pools and Exchanges) are upgrading... We must take advantage of the fact there are only a handful of such actors in Riecoin, so maintaining a Legacy burden just for the sake of compatibility is less important. This also guaranties that every new Riecoin user will use Descriptor Wallets and will not have to experience the possible pain of upgrading from Legacy Wallets. The code cleanup will definitively pay off for the long term;
- Wallets are now always in a "wallets" folder (if no -walletdir was specified). Previously, you could have Wallet.dat files or their folders in the root of the Data Directory (next to things like the Riecoin.conf or the Blocks folder). It is more practical to have everything at the right place, and we can now simply say that "all your wallets are in the "wallets" folder". The drawback is that people must if needed manually move the wallets to that folder, though I think that the change is worth it.
- By default, generated addresses are now in the "Bech32M" type ("Taproot Addresses" or "P2TR Addresses"): Taproot and Schnorr Signatures were activated a while ago in Riecoin, though we did not actually benefit much from these features so far. This technology was back then quite young and it was not even trivial to generate Bech32M Addresses. Now, it is mature enough to make Riecoin Core generate such addresses by default. You can recognize them with the prefix "ric1p" rather then "ric1q", and they are longer. Besides benefitting from the Taproot and Schnorr Signatures advantages, generalizing their use reduces Blockchain space usage: making a P2TR Output takes about 12 bytes more that before, but spending a P2TR Input saves about 41 bytes (concrete example: spending a P2TR Input Vs a P2WKH Input - 150 bytes instead of 191 bytes)! In terms of Virtual Bytes, P2TR takes about 1-2 VBytes more considering Input + Output, but that is not the actual blockchain space taken;
- It is no longer possible to generate addresses that are not Bech32. There is just no reason to use "R" or "T" Addresses anymore, and basically nobody does that anymore except (unfortunately) SouthXchange (who are still running Riecoin 0.21 for some reason). One day, support for these Addresses will be dropped, like it happened a long time ago for P2KH Addresses (notice how the Riecoin.dev Explorer says "N/A" for such "Address" in the Block 1);
- Private keys are now prefixed with `prv` rather than being plain hexadecimal strings: previously, it was enough to consider the length to distinguish Private Keys (64 bytes) from Public Keys (66 bytes), but now in some cases, Public Keys can also be 64 bytes, so the prefix was added. It also makes things more readable;
- Many deprecated or compatibility RPC commands or fields were removed. Similar rationale as dropping the Legacy Wallets, we are here encouraging developers to maintain their code up to date. Just deprecating stuff encourages them to procrastinate...
Here are the
Release Notes for Riecoin 23.04. Please read them carefully if you are upgrading from a previous version since some changes above require action. If you are have questions or are unsure of anything, the I will be glad to assist you for the upgrade. As always, it is recommended to do it as soon as possible, though there is also no hurry, just find a time where you are comfortable to properly understand the instructions and perform the upgrade. The wallet changes were quite exceptional and future upgrades will usually not require particular interventions like for this release.
23.04 binaries were already available since yesterday and latest ones can always be downloaded
here.