Skip to content

Commit 1450d61

Browse files
Proofread + found inconsistent command vs explanation
1 parent b42d5a9 commit 1450d61

File tree

1 file changed

+16
-16
lines changed

1 file changed

+16
-16
lines changed

docs/experimental/node-split.md

Lines changed: 16 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,10 @@
11
# Node split PoC
22

3-
In our ongoing effort to lower the bar for smeshing, we're exploring a new direction for reducing system requirements for smeshers. The idea is to re-architect the internal modules in go-spacemesh, isolating the smeshing logic from the passive consensus code. By dividing the node along these lines, we can enable users to run the lightweight yet sensitive (requiring access to private key) smeshing logic separately from the rest of the node. This allows users with limited resources to use a remote node for their smeshing.
3+
In our ongoing effort to lower the bar for smeshing, we're exploring a new direction for reducing system requirements for smeshers. The idea is to re-architect the internal modules in go-spacemesh, isolating the smeshing logic from the passive consensus code. By dividing the node along these lines, we can enable users to run the lightweight yet sensitive (requiring access to the private key) smeshing logic separately from the rest of the node. This allows users with limited resources to use a remote node for their smeshing.
44

5-
We are demonstrating a PoC of the node split, where the smeshing logic is separated from the rest of the node. The PoC is based on the current go-spacemesh codebase and is intended to demonstrate the feasibility of the node split concept. The PoC is not intended to be a production-ready implementation.
5+
We demonstrate a PoC of the node split, where the smeshing logic is separated from the rest of the node. The PoC is based on the current go-spacemesh codebase and is intended to demonstrate the feasibility of the node split concept. The PoC is not intended to be a production-ready implementation.
66

7-
The PoC itself is still work in progress so please expect changes and improvement in the future.
7+
The PoC itself is still a work in progress so please expect changes and improvement in the future.
88

99
The architecture of the PoC is as follows:
1010

@@ -24,19 +24,19 @@ It's best to watch the [video](https://www.youtube.com/watch?v=d4jBz1krRHg) to g
2424
The current go-spacemesh node is a monolithic application that includes all the logic required for consensus, smeshing, and other services. This makes it difficult to run the node on low-resource devices, as the node requires a significant amount of resources to run. By splitting the node into two separate services, we can enable users to run the smeshing logic on a separate device, while still connecting to a remote node for the rest of the services. This allows users to run the node on low-resource devices, while still participating in the Spacemesh network.
2525

2626
### Benefits
27-
1. **Lower system requirements**: Users can run the smesher service on low-resource devices, while connecting to a more powerfull node for the rest of the services.
28-
2. **Better failover and redundancy**: Currently when you need to restart a node you also need to restart the smesher service. With the node split you can restart the node without affecting the smeshing process. Starting smeshing will be also much quicker because it will *not* need to wait for the node to sync as the node will be running elsewhere. Multiple smesher services can be connected to the same node, and nodes can be hot swapped without affecting the smeshing process.
29-
3. **Lower OpEx**: Smesher service can be shut down wherever not needed to save costs and resources. Additionally, only a single node is required for multiple smeshing services and it can run where it's most cost effective, which is not necessarily where the semshing service runs.
30-
4. **Better node maintanability**: The node can be updated without affecting the smeshing process and the smeshing service can be updated without re-syncing. This makes updates simpler and less risky.
27+
1. **Lower system requirements**: Users can run the smesher service on low-resource devices while connecting to a more powerful node for the rest of the services.
28+
2. **Better failover and redundancy**: Currently when you need to restart a node you also need to restart the smesher service. With the node split you can restart the node without affecting the smeshing process. Starting smeshing will be also much quicker because it will *not* need to wait for the node to sync as the node will be running elsewhere. Multiple smesher services can be connected to the same node, and nodes can be hot-swapped without affecting the smeshing process.
29+
3. **Lower OpEx**: Smesher service can be shut down wherever not needed to save costs and resources. Additionally, only a single node is required for multiple smeshing services and it can run where it's the most cost-effective, which is not necessarily where the smeshing service runs.
30+
4. **Better node maintainability**: The node can be updated without affecting the smeshing process and the smeshing service can be updated without re-syncing. This makes updates simpler and less risky.
3131
## Running the PoC
3232

3333
There are two distinct configuration/setup methods possible:
3434
1. Using locally running node and smesher service
3535
2. Using remote running node and local smesher service
3636

37-
We will use a Docker Compose based setup for both options. While it's possible to run the PoC without Docker, it's more complicated, so for simplicity we'll use Docker.
37+
We will use a Docker Compose-based setup for both options. While it's possible to run the PoC without Docker, it's more complicated, so for simplicity, we'll use Docker.
3838

39-
Both setups will run two smesher services connecting to the same node. Please note that one smesher service can have multiple post services connected to it, as is currently the case with node and post services. However, in this PoC we're using only one post service per smesher service.
39+
Both setups will run two smesher services connecting to the same node. Please note that one smesher service can have multiple post services connected to it as is currently the case with node and post services. However, in this PoC we're using only one post service per smesher service.
4040

4141
### Using locally running node and smesher service
4242

@@ -67,7 +67,7 @@ git clone https://github.com/spacemeshos/go-spacemesh.git
6767
cd go-spacemesh
6868
git checkout node-split-poc
6969
```
70-
2. Change directory to the demo directory
70+
2. Change the directory to the demo directory
7171
```
7272
cd activation_service_poc/demo
7373
```
@@ -76,12 +76,12 @@ cd activation_service_poc/demo
7676
docker-compose-testnet-both-local.yml
7777
docker-compose-testnet-remote-node.yml
7878
```
79-
4. Run the docker-compose command according to your chosen setup. For example, to run the setup with locally running node and smesher service, run:
79+
4. Run the docker-compose command according to your chosen setup. For example, to run the setup with remote node and smesher service, run:
8080
```
8181
docker-compose -f docker-compose-testnet-remote-node.yml up -d
8282
```
8383

84-
After all the steps are done please give each smesher service a while to initialize POST and generate inital post proof. This may take up to a few minutes.
84+
After all the steps are done please give each smesher service a while to initialize POST and generate initial post proof. This may take up to a few minutes.
8585

8686
If all steps are followed correctly, you should see three new Docker containers running. You can check the status of the containers using:
8787
```
@@ -95,10 +95,10 @@ You'll also be able to connect to the node's UI by visiting `https://smesher-alp
9595

9696
The first time you open the UI it will be mostly empty as you're running a fresh smeshing service and therefore don't yet have eligibility. Testnet epochs are 24 hours long, so you'll need to wait for the next epoch to start smeshing. You can check the epoch number and exact timing in the UI.
9797

98-
Initially it will look like:
98+
Initially, it will look like:
9999
![initial-app-state.png](./../../static/img/node-split/initial-app-state.png)
100100

101-
After a few epochs you should see a UI that looks similar to:
101+
After a few epochs, you should see a UI that looks similar to:
102102
![smesher-app.png](./../../static/img/node-split/smesher-app.png)
103103

104104

@@ -137,7 +137,7 @@ While this is not a final solution and will be replaced with a more secure one i
137137

138138
### Running the PoC without Docker
139139

140-
Use the attached configs, replicate the command line and run the binary files:
140+
Use the attached configs, replicate the command line, and run the binary files:
141141

142142
1. Download the most recent release of node-split-poc go-spacemesh from the [releases page](https://github.com/spacemeshos/go-spacemesh/releases) and look for `node-split-poc` releases.
143143
2. Extract the archive and copy the config files (*.json)
@@ -148,4 +148,4 @@ Use the attached configs, replicate the command line and run the binary files:
148148

149149
The actual differences to the default config are pretty minimal.
150150

151-
The most important are addition of `"node-service-address": "http://0.0.0.0:9099"` in the `main` section, and the definition of `"grpc-local-services": ["smeshing_identities_v2alpha1"]` in the `api` section.
151+
The most important is the addition of `"node-service-address": "http://0.0.0.0:9099"` in the `main` section, and the definition of `"grpc-local-services": ["smeshing_identities_v2alpha1"]` in the `api` section.

0 commit comments

Comments
 (0)