From dfea49e0871b78d2b6856eec80c5cd5a7f501dff Mon Sep 17 00:00:00 2001 From: tv Date: Mon, 9 Nov 2026 15:24:00 +0000 Subject: signatures: up to 4096 in a message, each actor's latest past them Review 4, F5: a delta, and a message whose changes held more than 256 signatures (a whole document pulled, of any real history), carried each actor's latest signature, the 256 that became latest last. An actor is a node's run, so past 256 runs writing in an epoch, some actors' changes arrived unvouched at the puller under a policy requiring signatures, waited, and every resend carried the same 256: a joiner never finished. A message now carries up to 4096 signatures (`MAX_PER_MESSAGE`, as many as wait for their changes, `MAX_PENDING`: 384 KiB at most), all of its changes' up to there, each actor's latest past it and for a delta, and a receiver takes as many (wire version 47). An epoch with more than 4096 runs writing would still leave some unvouched in such a transfer, which the constant says; sending each actor of the transfer its own latest would need the actors of a delta's changes, which only rebuilding their metadata gives. --- src/transport/wire.rs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'src/transport/wire.rs') diff --git a/src/transport/wire.rs b/src/transport/wire.rs index 450ecb0..6784f8e 100644 --- a/src/transport/wire.rs +++ b/src/transport/wire.rs @@ -14,7 +14,7 @@ use super::{EncodedMessage, MessageKind, ParsedMessage}; /// The wire format's version, the first byte of every payload. Bump it with every change /// to a message type or a codec (`golden_bytes` fails then). -pub(crate) const VERSION: u8 = 46; +pub(crate) const VERSION: u8 = 47; /// What the second byte of a payload says. fn tag(kind: MessageKind) -> u8 { -- cgit v1.3.1