Today we are proud to announce the culmination of a major milestone in our development roadmap, the release of the Stratis Bitcoin Full Node Daemon on testnet and is now ready for public testing by developers here: https://github.com/stratisproject/StratisBitcoinFullNode/releases/tag/V0.1
This is a historical release not only for Stratis but to Bitcoin as a whole. This constitutes the first Bitcoin full node written in C# for the .NET Core platform.
It puts Stratis on a league of its own, where newest implementations and improvements proposals to Bitcoin core protocol can be tested and implemented in a production environment. As a result, Stratis will become the testbed for the most innovative technologies such as Tumblebit and Segwit, just to name a few.
A full node allows the participation of network peers in the validation of blocks. Additionally full nodes make possible the connection through the Stratis peer-to-peer network. This mechanism, based on economic incentives to the participants is what makes the Stratis Platform secure and stable.
Developed by Bitcoin core developer Nicolas Dorier and based on his NBitcoin framework, the Stratis Bitcoin Full Node is the most complete and portable library for developing blockchain applications and platforms in C# and Microsoft’s .NET framework .
With Stratis I have an opportunity to experiment the idea how I would design LibConsensus in C#. Nicolas Dorier
What it does
The daemon is a full implementation of the Stratis Bitcoin Full Node, with the following characteristics:
- Full blockchain validation
- Blockchain database
- Mempool
- Wallet system & wallet database (HD keys w/ bip44 derivation)
- Bitcoind-compatible JSON rpc api
- A TransactionBuilder supporting Stealth, Open Asset, and all standard transactions
- Full script evaluation and parsing
- A SPV Wallet implementation with sample
- The parsing of standard scripts and creation of custom ones
- The serialization of blocks, transactions and script
- The signing and verification with private keys (with support for compact signatures) for proving ownership
- Bloom filters and partial merkle trees
- Segregated Witness (BIP 141, BIP 143, BIP 144)
- Mnemonic code for generating deterministic keys (BIP 39), credits to Thasshiznets
- Hierarchical Deterministic Wallets (BIP 32)
- Payment Protocol (BIP 70)
- Payment URLs (BIP 21,BIP 72)
- Two-Factor keys (BIP 38)
- Stealth Addresses (Also on codeproject)
Built on .NET Core Platform
At present, the most popular Bitcoin node is called Bitcoin Core and is developed in C++. The Bitcoin Core team is a group of highly skilled developers who generally adopt a very conservative approach to accepting improvements. One of the reasons for this is that a full node is such a critical component for Bitcoin that any new features require extensive reviews and testing. Contributors to Bitcoin Core generally work on it for free, and their review time is valuable but limited.
We believe that one way to allow improvements to be implemented faster is to develop a full node in C# instead of C++. Highly skilled C++ engineers are in short supply in the corporate world, which tends to prefer higher-level languages like C# or Java. Higher level languages are also easier to review and learn, and it is harder to make coding mistakes.
The Stratis Bitcoin node is developed for the .NET Core framework from Microsoft and allows for the creation of cross-platform blockchain applications, supporting Windows, macOS and Linux, and can be used in device, cloud, and embedded/IoT scenarios.
Adopting the .NET Core platform removes major obstacles with licensing and associated costs by being no longer locked in to using Microsoft Operating Systems.
Additionally it opens up the possibility of introducing millions of C# and .NET developers to blockchain development, with familiar, time-proven development tools , such as Visual Studio, and already installed enterprise capabilities.
Security Comes First
To guarantee that the tokens secured by the Stratis Blockchain are properly secured,we plan to have the code rigorously tested before it is released on mainnet. Latest code can be found here:https://github.com/stratisproject/StratisBitcoinFullNode/releases/tag/V0.1 We welcome feedback from anyone who wants to help with the process of ensuring the network remains secure and stable, while adhering to the consensus rules imposed by the Bitcoin core client. We will be offering bounties to anyone who can produce a security bug and will be announced in a short time. All testers will be enterd into a prize draw to win a Stratis Ledger Wallets Genesis Edition. Please join our Slack and look for the #FullNodeTest channel to learn the details.
In the words of Chris Trew, Founder and CEO of Stratis:
“This achievement is the single major step in the development of the Stratis infrastructure. This is the stepping block for Stratis to rise above all other cryptos by opening capabilities to offer the most solid, proven and future-proof blockchain solution to companies around the world.”
Next Steps
The next step is porting the Stratis Bitcoin Full Node for the Stratis blockchain, this will give Stratis a powerful full node framework in C# which can be expanded with the Stratis bespoke functionality. We expect to have this accomplished by the middle of Febuary
Acknowledgements
We want specially thank Nicolas Dorier for his outstanding work on the Stratis Bitcoin Full Node. Also we would like to give a special thanks to Dan Gershony and Bitcoin Core developer whose extensive work on expanding the Bitcoin client has enabled the next generation of innovation around blockchain technology. This release is another major milestone Stratis, by providing C# developers with the tools required to develop decentralized applications in native C#. We also want to thank you guys in advance for the feedback on the Stratis Bitcoin Full Node.