Choosing the architecture of your private deployment
Setting up the different services that are a part of a private deployment, requires configuration based on the operational setup you have.
The services that is needed for a private deployment are
- 4 Block producer nodes
For the Fast-track consensus protocol to be secure, you must have at least 4 block producer nodes. You can as many block producer as you need in your system architecture.
To have a better view of the contracts, transactions, blocks and events that are being executed by the blockchain, add the browser to index the blockchain data and have it available to view in your browser. The browser has 3 running services, that needs to be configured to run.
The services are
- Browser Frontend
- Browser Backend
- A Postgres Database
To enable your deployment to do Multi Party Computations, add the following services to your deployment.
- 4 MPC nodes
The MPC nodes are the ones responsible for handling secret shares and running the secret computations on the shares. There must be at least 4 MPC nodes for the MPC protocol to be secure. The MPC nodes requires that there is a block producing node, that they can use for reading the state of the chain, and send transactions to the blockchain, when they need to verify inputs and commit to the results of a computation.
Accessing the data from the chain, can be done by sending HTTP requests to the block producer nodes, however that would increase the load on the services running the chain. To remove the need to send requests directly to the block producing nodes, you can instead deploy a Reader node, which is updated just like a block producer node, however it does not produce blocks for the system. The Reader node can then be the designated blockchain data source. You can spin up multiple Reader nodes to increase accessibility of data for different services.
Recommend minimal amount of services
- 4 MPC nodes
- 4 Block producer nodes
- Reader node(s)
- The Browser
- Browser Frontend
- Browser Backend
- Postgres Database
Each Block producer node should be deployed in different locations for security purpose. We recommend each MPC node is deployed in the same location as one of the Block Producer nodes, since the MPC nodes uses a TCP connection to a Block producer node, to get chain updates. The MPC nodes should not be running in the same geographical location as another MPC node, to make sure that even if one of the MPC nodes is corrupted, the hacker cannot extract any valuable information from the secrets.
The reader node should be used for applications that access the chain. Deploy the amount needed for good availability for all the applications and servers requesting information and sending transactions. This removes the load from your Block producer nodes, so they solely focus on producing blocks on the chain.
To better understand the transactions and events on the chain, we would recommend deploying an instance of the browser. Having a clear view of the order of events in an explorable application helps when debugging and understanding errors and unexpected behavior.