Skip to content

Commit

Permalink
Release v1.4.1 (#5714)
Browse files Browse the repository at this point in the history
## Motivation

Prepare release v1.4.1.
  • Loading branch information
fasmat committed Mar 17, 2024
1 parent e4df068 commit e0c6892
Show file tree
Hide file tree
Showing 2 changed files with 46 additions and 17 deletions.
26 changes: 13 additions & 13 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -2,13 +2,7 @@

See [RELEASE](./RELEASE.md) for workflow instructions.

## UNRELEASED

### Upgrade information

### Highlights

### Features
## Release v1.4.1

### Improvements

Expand Down Expand Up @@ -165,14 +159,15 @@ node. For details refer to the [post-service README](https://github.com/spacemes
If you have multiple nodes running and want to migrate to use only one node for all identities:

1. Stop all nodes.
2. Copy the `identity.key` files from the PoST data directories of all nodes to the `data/identities` directory of the
node you want to use for those identities. The choose names for the key files that makes it easy to distinguish which
key belongs to which identity.
3. Start the node managing the identities.
4. For every identity setup a post service to use the existing PoST data for that identity and connect to the node.
2. Convert the nodes to remote nodes by setting `smeshing-start` to `false` in the configuration/cli parameters and
renaming the `local.key` file to a unique name in the PoST data directory.
3. Use the `merge-nodes` CLI tool to merge your remote nodes into one. Follow the instructions of the tool to do so.
It will copy your keys (as long as you gave all of them unique names) and merge your `local.sql` databases.
4. Start the node that you used as target for `merge-nodes` and is now managing the identities.
5. For every identity setup a post service to use the existing PoST data for that identity and connect to the node.
For details refer to the [post-service README](https://github.com/spacemeshos/post-rs/blob/main/service/README.md).

**WARNING:** DO NOT run multiple nodes with the same identity at the same time. This will result in an equivocation
**WARNING:** DO NOT run multiple nodes with the same identity at the same time! This will result in an equivocation
and permanent ineligibility for rewards.

### Highlights
Expand Down Expand Up @@ -248,6 +243,11 @@ and permanent ineligibility for rewards.
}
```

* [#5685](https://github.com/spacemeshos/go-spacemesh/pull/5685) A new tool `merge-nodes` was added to the repository
and release artifact. It can be used to merge multiple nodes into one. This is useful for users that have multiple
nodes running and want to migrate to use only one node for all identities. See the
[Upgrade Information](#migrating-existing-identitiespost-services-to-a-node) for details.

### Features

* [#5678](https://github.com/spacemeshos/go-spacemesh/pull/5678) API to for changing log level without restarting a
Expand Down
37 changes: 33 additions & 4 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -272,8 +272,9 @@ To disable the internal PoST service and disable smeshing on your node you can u
}
```

or use the `--smeshing-start=false` flag. This will disable smeshing on your node causing it not generate any PoST
proofs until a remote post service connects. Be aware that you still need to set your coinbase via
or use the `--smeshing-start=false` flag. Additionally rename the `local.key` in your `data/identities` folder to a
unique name for your node (e.g. `nodeA.key`). This will disable smeshing on your node causing, i.e. it will not generate
any PoST proofs until a remote post service connects. Be aware that you still need to set your coinbase via

```json
"smeshing": {
Expand All @@ -283,8 +284,36 @@ proofs until a remote post service connects. Be aware that you still need to set

or use the `--smeshing-coinbase` CLI parameter, otherwise your node will not be able to receive rewards.

If you want to allow connections from post services on other hosts to your node, you need to set a public endpoint via
the `grpc-tls-listener` configuration parameter and setup TLS for the connection.
Additionally you will have to set `grpc-post-listener` to e.g. `0.0.0.0:9094` in your `api` config to allow the remote
post service to connect to your node.

#### Merging multiple existing nodes into a single one with multiple remote PoST services

To help in the process of merging multiple nodes into a single one, you can use `merge-nodes` tool. This tool will
copy over identities and merge their local states into a single node. Ensure that all nodes are running the latest
version of `go-spacemesh` and were started at least once after upgrading. We recommend to back up the `data` directory
of the nodes you want to merge before running this tool to avoid data loss. Specifically the `local.sql` files and the
`identities` directories.

Stop the two nodes you want to merge and ensure that they have been set up for remote smeshing (i.e. `smeshing-start`
is false and `local.key` has been renamed). `src` is the node that will be merged into `dst`:

```bash
merge-nodes --src /path/to/src/data --dst /path/to/dst/data
```

This will copy over the identities from `src` to `dst` and merge the local states of both nodes. The command will tell
you if it encounters any issues merging the identities or the local states.

You can repeat this process with as many nodes as you want to merge into `dst`. After you have completed the merging
process, you can start `dst`. For every identity setup a post service to use the existing PoST data for that identity
and connect to the node. For details refer to the
[post-service README](https://github.com/spacemeshos/post-rs/blob/main/service/README.md).

#### Using a remote PoST service over insecure connections

If you want to allow connections from post services over the internet to your node, we strongly recommend not to connect
via `grpc-post-listener` but rather use the `grpc-tls-listener` configuration parameter and setup TLS for the connection.

This is useful for example if you want to run a node on a cloud provider with fewer resources and run PoST on a local
machine with more resources. The post service only needs to be online for the initial proof (i.e. when joining the
Expand Down

0 comments on commit e0c6892

Please sign in to comment.