User Experience of setting up a Node from scratch:
As a Node operator I need to select a namespace or set of namespaces to join.
Describe how the software will interface with other software components.
The RChain Node installation software will register itself with systemd, and integrate properly systemd as a daemon such that the systemd-ui works properly with the node software.
Describe how the software will interface with physical systems, ex: ports for communication, which devices are to be supported and any hardware protocols used.
Will software be used in creating the system? If so, indicate what software (name and version), how it is to be used, and any details about how it interfaces with the software being specified.
The RChain team has received feedback from exchanges that they would like to integrate with a JSON API, however, experience has shown that JSON will not meet the forwards/backwards compatibility requirements listed above. Therefore, Protocol Buffers have been selected as the base API. The Protocol buffer API will have the largest surface area of all the API's. Other API's can be created as special projects, as consumers of the Protobuf API by taking its output and passing it to a REST API or JSON API.
Users may interact with the RChain API interface, the Protobuf interface or a REST API interface.
Ethereum API Reference: https://github.com/ethereum/go-ethereum/wiki/Management-APIs (Use to see obvious api's that we will likely need to support also)
Insert the screen specification for the Web Interface here.
Provide a description of the software system, including its functionality and matters relating to the overall system and design. Feel free to split this up into subsections, or use data flow diagrams or process flow diagrams.
The node will run on a linux system as a systemd process (daemon). The primary user interface for the node will be a GRPC Protobuf API. It is desirable to create a utilitarian web interface that will interact with management functions in the API.
The main function of the node implements the System Powerbox -in that there is a block of code that instantiates all the components that make up the RChain Node. These components are:
List any limitations or system constraints that have an impact on the design of the software. These can be any of the following:
Hardware/software environment, End User Environment, Resource availability, Standards Compliance, Interop, Interface/Protocol requirements, Data requirements, Security, Performance, Networking, Verification & validation, means to address quality goals.
Could include software or hardware, Operating systems and platforms, User Personas, Changes in functionality.
Describe any design decisions and/or strategies that affect the overall organization of the system and its higher-level structures. These strategies should provide insight into the key abstractions and mechanisms used in the system architecture. Describe the reasoning employed for each decision and/or strategy (possibly referring to previously stated design goals and principles) and how any design goals or priorities were balanced or traded-off. Such decisions might concern (but are not limited to) things like the following:
This section should provide a high level overview of how the functionality and responsibilities of the the system were partitioned and then assigned to subsystems or components. The main purpose here is to gain a general understanding of how and why the system was decomposed, and how the individual parts work together to provide the desired functionality. If there are diagrams, models, flowcharts, or documented scenarios. This applies only to the scope of the document, not the entire system.