When an RChain node starts up, one of the first things it has to do is find an RChain network to connect with. The node should start by looking for bootstrap nodes that represent a starting point of an RChain network. Each of the bootstrap nodes should have an associated RChain network name. When a network is selected, the node locates a bootstrap node in that network (fastest response time) and connects to it. Then the node downloads the information it needs from the bootstrap node to connect to the network.
Describe the issues which need to be addressed or resolved before attempting to devise a complete design.
Describe how the software will interface with other software components.
TODO - sort this section out.
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.
What is the user interface for the software? How will users interact with the software? List out all the aspects involved in making the UI better for all users that will interact or support the software.
How will the software use any communications interfaces?
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.
List any limitations or system constraints that have an impact on the design of the software. These can be any of the following:
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.