Saito refers to the family of software packages available in our main software repository on Github. The repository contains one directory with Rust-based projects and another with NodeJS software.
Saito Core project includes all the core logic and shared behaviour required by Saito Consensus. This is where the blockchain software lives -- the classes that define how blocks, transactions, UTXO slips and the other core blockchain components hold data and interact.
This directory contains an implementation of a Saito client that is programmed entirely in the Rust programming language. It uses the software in Saito Core directly rather than executing it through a pre-compiled WASM bundle.
Saito needs to be used in both javascript and rust environments. We also wish it to be available to programmers developing in other languages. Therefore for efficiency and correctness reasons, we reuse the saito core functionality by compiling it into a WASM binary that can be used in any programming language that supports WASM.
What follows is a diagram showing how the various software packages connect to service an application running on the network. The diagrams here also provide architectural assistance to those curious about the class and thread structure within our software packages.
Consensus Thread
Consensus Thread handles most of the consensus related code such as managing the blockchain and the mempool
Routing Thread
Routes messages between different threads. A separate thread is used for this purpose to avoid freezing the message flow due to a busy thread.
Verification Threads
Verifies the block or transaction signatures,etc... Since those tasks can be done independent of other tasks, we can create multiple threads as required to increase the throughput of verification tasks.
Mining Thread
Mines for a golden ticket. Since we need to mine continuously until a golden ticket is found, a separate thread is needed.
Network Thread
Manages network related functionalities.