Closed xandronus closed 4 years ago
It would be great to get some help with the Bitcoin full node.
This is not a bad idea, we did discuss that previously and someone even prepared a PR on stratis that never got merged.
Moving to dotnet core will also open an array of improvements in performance some perf improvements need to be imported from NBitcoin.
Regarding BTC fullnode this is excellent, part of this projects goals is to maintain a bitcoin fullnode. Having some folk to keep the functionality up to date with bitcoin core is much needed.
There are a few tasks that need work to make the node more usable (coindb, mempool fee, walletdb, missing RPC) I hope I will be able to create the pending tasks in the next few days. Some of them are defined in the parent repo and I will port them over.
How about going directly to .NET Core 3.0 as oppose to migrate from .NET Standard to .NET Core 2.2? Some of the projects are already on .NET Core 2.1, it is not everything on .NET Standard.
Are there any significant benefits in 3.0? I know that there are perf improvements just by moving to core from standard.
As long as there are no drawbacks, I don't see why not upgrade to the latest runtime and SDK?
A draw back I can think of is tha low level libraries should stay as lower version as possible so can be referenced by a bigger set of libraries.
Not saying that's a strong argument because our product is end product.
That is a drawback between moving from .NET Standard to .NET Core, I agree on that. Might not be much value in migrating the libraries. It should at least be migrated to .NET Standard 2.1, which is compatible with .NET Core 3.0 and the latest runtimes for Mono, Xamarin. It is not compatible with UWP and Unity yet, and .NET Framework will never support .NET Standard 2.1 or higher.
https://docs.microsoft.com/en-us/dotnet/standard/net-standard
Coming back to this I don't have much issue with upgrading to netcore 2.2 and even actually netcore 3 for that matter, this features are top level components and will probably not be referenced from lower version projects.
@xandronus if you are up for it by all means start a PR, please confirm so we don't have work done in parallel
I will start with 2.2 upgrade PR and see how that goes
3.0 has assembly unloading, which can be used to have dynamic module/plugin/feature load and unload without taking the node offline.
There are some big performance improvements as well, detailed here: https://devblogs.microsoft.com/dotnet/performance-improvements-in-net-core-3-0/
Yeah I agree 2.2 is fairly simple to upgrade @bokobza did it already, 3.0 is more interesting and challenging
@xandronus feel free to also attempt an upgrade to 3.0
Will do. I will use the Stratis PR as a starting point and see how the tests do.
Excellent idea, you'll have to charry-pick the commits for because the masters are different right now.
my position on this is : go for net core 3.0 (3.1 actually) hands down, too many improvements and I don't see reasons to stick to dotnet standard nor upgrade to a lower dotnetcore version
Hi stumbled upon this project. I may be interested in contributing especially around improving the functionality of the bitcoin fullnode.
.NET standard seems to lag core in functionality. Sounds as though its planned to merge core and standard in .net 5 so I'm not sure sticking with standard at this point is worthwhile.
Interested in hearing the maintainers thoughts, if they are in agreement I could possibly look at preparing a PR to upgrade the projects to .net core 2.2