Durability of data


#1

[www. … link these quotes are from is removed by admin - that link is not launched yet for now :slight_smile: ]

In Aether, things disappear after 6 months. Somebody can save them to keep it, but even if they do, they’d only keep their own local copy. It doesn’t stay on the network.

In Aether, not allowing too old posts to be available on the network is guaranteed because it is part of the protocol every client has to implement. Even if a client changes his own code to keep things for longer, other nodes will not have data beyond the 6-month mark to send. A new node coming into the network afresh and asking for content older than 6 months will get nothing.

What happen if I change the config “LocalMemoryDays” (in backend_config.cfg) from 180 to 360? (or more)
Does it means that it will maintain 1 year of data instead of 6 months?

Also, I see that there is the config “NetworkMemoryDays”, does it means that if I change to 360, then the Aether node will try to ask to the other nodes even data older then 6 months?

I think that i will be interesting to being able to set both value differently for every sub, so the users will be able to choose a global config (as it is now), but also a different config for every sub.


#2

Another question:
How does it work the edit of messages?
What happen when I edit my message? Do users/nodes lose the original message, or do they have both the original and the edited one?

What do you (@b) think about giving the possibility to the nodes, by default, to still download all the hashes of all the messages even older then 180 days?

Is it currently possible to edit an old message (older then 180 days), and showing it as if it was the original one?
By sharing all the hashes of all the messages, even olders, it will impossible to show a fake message as if it was the original one.


#3

I have a more pertinent question: how did you find that link. : )

The content there is definitely a work in progress since that link is not launched yet.

Nevertheless, here are a few short answers:

What happen if I change the config “LocalMemoryDays” (in backend_config.cfg) from 180 to 360? (or more)
Does it means that it will maintain 1 year of data instead of 6 months?

Yes.

Also, I see that there is the config “NetworkMemoryDays”, does it means that if I change to 360, then the Aether node will try to ask to the other nodes even data older then 6 months?

No. It will respond to requests asking for more than 6 months. Aether nodes only explicitly serve out for content for within the network head, which is two weeks by default. I’m starting to feel two weeks might be a little too narrow, though, so I’m currently working on having at least a few nodes in the network whose network head is 6 months.

I think that i will be interesting to being able to set both value differently for every sub, so the users will be able to choose a global config (as it is now), but also a different config for every sub.

I’ve thought of that as well, but it does require some thinking on how to make that non-exploitable. The most basic thing I can think of is a popular board converting their retention timeline from 2 weeks to 2000 years and effectively content-bombing every other board out of the memory. This one is relatively straightforward to deal with, but there are a few more subtle corner cases there.

How does it work the edit of messages?
What happen when I edit my message? Do users/nodes lose the original message, or do they have both the original and the edited one?

The message itself is retained, but the content of the message changes. In other words, the post fingerprint is the same, but the body changes, and a new fingerprint is issued, which refers to the first object. In other words, it becomes a distributed ledger. But the original, content is lost and replaced by the new edit. This is a tradeoff to prevent people from spamming millions of edits on their posts to create invisible, huge payloads for the network to carry. The only valid version of any object is the last known update, the prior versions are overwritten.

What do you (@b) think about giving the possibility to the nodes, by default, to still download all the hashes of all the messages even older then 180 days?

You can download all the data that exists, and your node does that automatically. You can’t download the data that no longer exists. If you want to do that, set your node’s local memory threshold to something like 10000 years, and your node will just keep everything locally, while acting to the network like it still has 6 months of memory.

Local memory: what you keep
Network memory: what you tell to the network you keep
Network head: what you provide to everyone that connects to you by default.

Defaults:

Local memory: 6 months
Network memory: 6 months
Network head: 2 weeks

This means, by default your node will not keep any content that it won’t serve out to the network (local memory and the network memory are the same.)

Examples using the above defaults

  • Remote connects in for sync, never synced before
    Result: Remote gets 2 weeks of data from you

  • Remote connects in for sync, has synced before two days ago
    Result: Remote gets the last 2 days of data from you

  • Remote connects in for sync, and after sync, asks for a board that was last active 3 months ago
    Result: Remote receives that board.

  • Remote connects in for sync, and after sync, asks for a board that was active 7 months ago
    Result: Remote receives nothing, since 7 months is longer than the network memory.
    (This is regardless of whether you have the content it’s asking for, or not — your node will say it doesn’t have it even if it actually does, since it is older than the network memory.)


#4

About the link, I guess that you wrote it somewhere, maybe there was a test for the aether links before the current content.

So, if I want to maintain everything about my subscribed boards, AND I also want to give all the data to other nodes, I need to change both “Local memory” and “Network memory” to a higher number.

It can be a problem if I’m connected to many subs, so it will be very useful to being able to have a different setting for every board :slight_smile:

Maybe it can be useful if I’m an admin of a board and I want to be sure to give all the history to my users.


#5

So, if I want to maintain everything about my subscribed boards, AND I also want to give all the data to other nodes, I need to change both “Local memory” and “Network memory” to a higher number.

Yes, but they won’t ask you that unless their settings are also higher. You can’t give data, you can only make it available, and wait for people to pick it up if they want.

Maybe it can be useful if I’m an admin of a board and I want to be sure to give all the history to my users.

Same as above — users choose what to take. Even if you’re an admin and you make the retention 2000 years, if the user’s retention setting is 6 months, the user will take and transmit only 6 months of data. They’re sovereign over their own node.


#6

Understood.

Maybe, another “feature request” :), it can be another option like “seed the sub”, and by clicking it the user (the node itself) will set the advised setting (from the sub admin) for selected sub only.

It will be like the users that agree to seed bittorrent files, because of their altruism.