The Revolution Will Not Be Centralized
Denovo will eventually be a very flexible and easy to use tool with lots of features from a simple offline tool to handle keys and transaction signing to a full client
capable of working as a full node or a SPV node and ultimately a second layer node (such as Lightning network node).
Currently Denovo is in beta and has very limited features listed below:
- TestNet miner: a simple but powerful miner to mine testnet blocks and broadcast them used only for testing things that can not be tested otherwise.
- Message encryption: encrypt and decrypt messages using Elliptic Curve Integrated Encryption Scheme (ECIES).
- Transaction verifier: verify any bitcoin transaction by entering its raw hex and all its UTXOs.
- WIF helper: an experimental feature to convert WIFs to mnemonic and back
- Push transaction: broadcast transactions to other bitcoin nodes on mainnet and testnet
Using the latest .net core version with AvaloniaUI Denovo can run on any operating systems.
The backbone of Denovo, Bitcoin.net is a stand alone bitcoin library written completely in C# and from scratch (no code translating)
with no dependencies.
It is released as a different project so that it could be used by any other third party projects.
Check out releases for the current version (versioning convention).
The current implementation is covering almost the entire bitcoin protocol, there may be some missing parts or some bugs.
Please report any problems that you encounter or any feedback that you may have.
Using Package manager in Visual Studio:
Install-Package Autarkysoft.Bitcoin
Using .Net CLI:
dotnet add package Autarkysoft.Bitcoin
- Full xml documentation of the code explaining what each member does, exception that may be thrown, examples if needed,...
- Neatly categorized namespaces for ease of access:
Blockchain
,Cryptography
,P2PNetwork
are the 3 main ones and there areEncoders
,ImprovementProposals
covering the rest. - Near 100% test coverage (for finished parts only, for now).
- Loosely coupled implementation of blocks, transactions and scripts making it easy to test and scale.
- Stand alone cryptography namespace making it possible to optimize functions for bitcoin
(only some parts are currently optimized:
Hashing
andKeyDerivationFunctions
namespaces)- Asymmetric: ECC (unoptimized and untested)
- Hashing: SHA-1 (unoptimized), SHA-2 (256/512), HMAC-SHA (256/512), RIPEMD160, RIPEMD160 of SHA256 (aka Hash160) all optimized
- KeyDerivationFunctions: PBKDF2, Scrypt both optimized
- RFC-6979: Optimized. Also an extra entropy is added so that signer can grind to find low R values to a fixed length (<32).
- Implementation of improvement proposals, consensus related BIPs are part of the library and optional bips (eg. BIP-32) are in separate classes. Currently:
- Optimization of the library
- Complete testing of remaining parts
- Add more relevant and useful BIPs
- Add support for Lightning Network
- Explore more ideas for a better Bitcoin (eg. block compressions and P2P protocol) to add under
Experimental
namespace.
Please check out conventions for information about coding styles, versioning, making pull requests, and more.