Possible implementation:
- take graceful exit,
- make it „partial” (IIRC it’s a planned feature),
- allow defining a specific target node for data migration, as opposed to nodes chosen by the satellite. Stripes where the target node also stores same-chunk stripes are not migrated.
Then:
- joining nodes is a full graceful exit with one of the nodes defined as target + a full graceful exit to get rid of the same-chunk stripes,
- splitting nodes is (1) creating a new node, (2) a partial graceful exit from the first node with the target being second node.
For consideration:
- How does splitting/joining nodes affect vetting? IMO the simplest answer, “it doesn’t”, is good enough.
- How does splitting/joining nodes affect held-out amounts? IMO the simplest answer, “it doesn’t”, might be good enough.
In both cases, as far as I understand, the only vector for abuse would be when a more vetted node/node after 15 months of operation receives data from more fresh nodes. But we already know this more vetted node can be trusted, so this should be a good thing from the perspective of the network?
On the other side, in the case of splitting nodes, SNO is effectively giving up on some of the benefits of having a long-trusted node, which might be a cost adequate to the cost induced by the graceful exit process on the satellite itself.