/neo-sharp

Neo-sharp is a new core and node implementation of NEO focused on modular design, best coding practices and testability.

Primary LanguageC#MIT LicenseMIT

neo-sharp

C# Node for the NEO blockchain.

Overview

Neo-sharp is a new core and node implementation of NEO with three main project goals:

  • To break interdependencies in NEO and allow a plug-able modular design to be used by node implementations. The modules will consist in: Network, VM, Persistence and Consensus.

  • To create testing infrastructure for both specification of behavior and benchmark of modifications.

  • To develop an initial fully compatible version and one new experimental high performance module for each component.

This project is not about adding new features to NEO, it is about establishing and adhering coding best practcies, implementing proper design patterns, and ensuring the code is testable with a focus on unit test code coverage.

Projects

  • Application - Composition Route and entry point
    • Client - Console based client
  • BinarySerialization - Binary serialization and deserialization of NEO entities
  • Consensus - NEO Consensus implementation (TODO)
  • Core - Configuration Management, Dependency Injection Framework, Logging Management and Models
    • Cryptography - all crypto based functions
    • Network - Neo p2p protocol
  • DI - Dependency Injection framework
    • SimpleInjector - Module to implement Simple Injector as the DI framework
  • Logging - Logging framework implementation
    • NLog - Logging implementation using NLog
  • Persistence - Disk and in-memory based data storage / persistence
    • RocksDB - RocksDB Repository Implementation
    • RedisDB - Redis Repository Implementation
  • SmartContract - NEO Smart Contract execution engine (TODO)
  • VM - Interop assembly for HyperVM / VM integration (TODO)
  • Wallet - NEO wallet implementation (TODO)

Architecture

Contributing

Feel free to contribute to this project after reading the contributing guidelines.

Before starting to work on a certain topic, create an new issue first, describing the feature/topic you are going to implement. Please submit new pull requests to the development branch.

License

  • Open-source MIT