- [WIP] Initial neo-vm support #546
- Wrote initial integration with NeoVM
- Identified missing APIs for SmartContracts
I dedicated some time to QA new wallet.
I dedicated some time to QA new wallet.
I present FastBFT implementation of the consensus algorithm as a part of "CoZ Bounty #1: Alternative Consensus Implementations" program.
Why did I pick FastBFT to participate? I was not familiar with this algorithm before. I expected to see multiple submissions of HoneyBadgerBFT and decided to implement any other BFT algorithm. At the end of the day, NEO community will benefit from having of many consensus implementations in its disposal. Meanwhile, could I state this is the world first open source FastBFT implementation? 😉
Before diving deep into FastBFT I would like to talk about the current consensus algorithm used in NEO network.
Today NEO network is using Delegated Byzantine Fault Tolerance (dBFT) algorithm. The next steps are executed by replicas to achieve the consensus on incoming transa
In current design there is a DI folder in every project that contains Package class. This class accepts Container class as a parameter and performs the registration of dependencies. NeoSharp.Application composes of all "Packages" passing a root container to each of them sequentially. Such a straightforward approach has clear limitations.
Every project is dependency management aware. It has to register its services in some container and to make an assumption about their lifecycle (Singleton, Transient, PerThread, etc.). Both of these things are bad. The former defeats Single Responsibility Principle (SRP). The project has not only the goal it was designed for but also a sub goal to register itself in the external container. The latter will bomb when multiple consumers of the same project have different requirements for services' lifecycle.
Every project references SimpleInjector dependency management library and cannot be used without this. In case of the DI