From a3eadeeeff9f4ae8ce91251e51d8312a6ffbc2ca Mon Sep 17 00:00:00 2001 From: tv Date: Sun, 8 Nov 2026 21:49:45 +0000 Subject: roots: a joiner takes a root once its seeds named it Review 3, R2: the root pin was set by the first HELLO_REPLY, and the first sync, a round trip later, took that root; a peer naming another afterwards was refused as another history. So the seed that answered first decided, not "none while they disagree", and a malicious seed makes itself fastest. A node joining with an empty document of the first epoch now takes no root (RootPin::Awaiting, roots left for later) until each of its seeds named one, or ROOT_WAIT (10 s) passed since the first did; then the one they name, none while they differ, as before. With --genesis-root it takes that one alone, at once. access.md, the option's help and example.toml say so; switching roots later, while the joiner holds nothing of its own, is postponed. --- src/node.rs | 1 + 1 file changed, 1 insertion(+) (limited to 'src/node.rs') diff --git a/src/node.rs b/src/node.rs index c74d7c0..91a9c62 100644 --- a/src/node.rs +++ b/src/node.rs @@ -175,6 +175,7 @@ impl Node { crate::access::screen::Screening::pinned(crate::swarm::roots::pin( config.genesis_root, &Default::default(), + false, )), )), roots: Default::default(), -- cgit v1.3.1