Creating custom builds and extending the feature set¶
The Stratis Full Node has a componentized architecture. This makes it easy to add and remove features and thereby customize a build to your own requirements.
The audience for this document is anyone who wants to create their own custom build of the Full Node. This could involve simply mixing and matching from the existing features. Alternatively, you might want to modify the capabilities of an existing feature or create an entirely new feature. The document begins by looking at how the projects supplied with the Full Node are put together before diving into the code behind one of the features.
A knowledge of C# is assumed. In particular, extension methods, fluid interfaces and lambda functions are used frequently in the feature code, so if any of these topics are new to you, you might want to read up on them. In addition, the dependency injection (DI) software design pattern is used for instantiating all the main classes and interfaces that make up a feature. The Full Node uses the default DI facility available in .NET Core, which you can read more about here.