mirror of
https://github.com/pezkuwichain/pezkuwi-subxt.git
synced 2026-06-19 13:31:04 +00:00
Implement only sending one notification at a time as per RFC 56 (#2813)
cc https://github.com/paritytech/polkadot-sdk/issues/2812 cc https://github.com/polkadot-fellows/RFCs/pull/56 Since this is a one line of code change, and for the sake of this not taking six months to be done, I've opted to open a PR myself. --------- Co-authored-by: Aaro Altonen <48052676+altonen@users.noreply.github.com>
This commit is contained in:
@@ -0,0 +1,11 @@
|
|||||||
|
title: "Implement only sending one notification at a time as per RFC 56"
|
||||||
|
|
||||||
|
doc:
|
||||||
|
- audience: Node Dev
|
||||||
|
description: |
|
||||||
|
Transactions are now gossiped one at a time instead of as batches, as per RFC 56. This
|
||||||
|
allows decoding notifications without knowing how to decode individual transactions, and
|
||||||
|
allows for a more fine grained backpressure.
|
||||||
|
|
||||||
|
crates:
|
||||||
|
- name: "sc-network-transactions"
|
||||||
@@ -475,7 +475,20 @@ where
|
|||||||
propagated_to.entry(hash).or_default().push(who.to_base58());
|
propagated_to.entry(hash).or_default().push(who.to_base58());
|
||||||
}
|
}
|
||||||
trace!(target: "sync", "Sending {} transactions to {}", to_send.len(), who);
|
trace!(target: "sync", "Sending {} transactions to {}", to_send.len(), who);
|
||||||
let _ = self.notification_service.send_sync_notification(who, to_send.encode());
|
// Historically, the format of a notification of the transactions protocol
|
||||||
|
// consisted in a (SCALE-encoded) `Vec<Transaction>`.
|
||||||
|
// After RFC 56, the format was modified in a backwards-compatible way to be
|
||||||
|
// a (SCALE-encoded) tuple `(Compact(1), Transaction)`, which is the same encoding
|
||||||
|
// as a `Vec` of length one. This is no coincidence, as the change was
|
||||||
|
// intentionally done in a backwards-compatible way.
|
||||||
|
// In other words, the `Vec` that is sent below **must** always have only a single
|
||||||
|
// element in it.
|
||||||
|
// See <https://github.com/polkadot-fellows/RFCs/blob/main/text/0056-one-transaction-per-notification.md>
|
||||||
|
for to_send in to_send {
|
||||||
|
let _ = self
|
||||||
|
.notification_service
|
||||||
|
.send_sync_notification(who, vec![to_send].encode());
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user