The math is a bit more complecated. Lets take a simple example. A network with 80 storage nodes. All the storage nodes are holding 2TB. Now 45 storage nodes are going offline. Repair gets trigger. Lets take a look what will happen.
The repair job has 35 pieces per file available. It has to download only 30 pieces to reconstruct the file. In our example it has to repair all files. In total the repair job will download 30 times 2TB. The price for that is 10$ per TB. -> 600$
The repair job is not finished. After reconstructing the file it can reconstruct the lost pieces and upload them to new storage nodes. To get back to 80 pieces the repair job has to upload 45 pieces. Again for all files in our example. A total of 45 * 2TB = 90TB. The repair job doesn’t need to pay the storage nodes for that but the repair job is running on a server and upload traffic has a price. Depending on the location the satellite has to pay something between 1.19€ per TB (Hetzner) and 90$ per TB (Google). -> 107$ - 8100$
Oh man that are some big numbers. How can one storage nodes cover the costs?
Wait a moment. We have lost 45 storage nodes. We can devide the cost by 45. The first storage node will not trigger any repairs but we can say at some point it will.
The damage a 2TB storage nodes can do is something between 16$ and 193$ depending on the satellite.
(Note: Sooner or later we want to seperate the satellite services. At that point the repair job can run on a separate server with cheap upload cost)
Hold on. I am holding 2TB but the held back amount is less than the calculated values. Does that mean the satellite is loosing money?
Yes and No. Hopefully the customer was able to download the file a few hundert times. For every 1$ the customer pays to the satellite 0.4$ are for the storage nodes and 0.6$ to cover the costs including repair. Best for the network are customer with many downloads and storage nodes that stay with us long term.
What does Graceful Exist change?
With gracefull exit we can copy the 45 * 2TB directly from one storage node to another. We are saving a lot of bandwidth and with that we are saving costs. We will download the 2TB from the storage nodes but without having to pay for it. Instead the incentive for the storage node is the held back amount.
Do you have any questions?