Join or split nodes

to be able to join or divide nodes, for example, when there is a lot of free space in all the nodes, they can be united only in one, and when they are filling, to be able to divide and grow.
Now I have 3 nodes and they are only 10% used, I could put them all in one and as needed, I activate the other nodes.

1 Like

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.

2 Likes

this could go the wrong way very fast: black market node. Should be necessary some way to justify both nodes are from the same owner.
Anyway, it´s just academic, I don´t see StorJ implementing this, though it would be interesting for SNO

1 Like

You can do the same now by just giving someone all files of your node. It’s not a new vector.

1 Like

Ok, I think I found a way to abuse this idea of mine. Imagine you have a nice old trusted node and a fresh not-yet-vetted node. The fresh node only gets 5% of traffic, so it will take a lot of time before it gets filled. On the other hand, the old node gets 100% of traffic. So by using this idea one could move data to fill the fresh node, and then refill the old node quickly, as opposed of having the old node full and the new one slowly get its own contents.

The idea should still work fine under assumption that the transfer goes between vetted nodes, so for the purpose of joining nodes should be fine. But for splitting the operator would need to wait a long time until they can do so, especially if splitting is behind a single external class C IP block.