Skip to content

Conversation

sirandreww-starkware
Copy link
Contributor

Description

I implemented a message propagation mechanism that is inspired by turbine (Solana's block propagation procedure). The mechanism I'm suggesting is a simplification of turbine that keeps the fundamental ideas and works within the libp2p constraints. I call this mechanism "propeller". I would be happy to take notes on my implementation, and ecstatic if it is possible to actually add this to the crate.

Notes & open questions

The key differences between propeller and turbine are stated in protocols/propeller/src/lib.rs

Change checklist

  • I have performed a self-review of my own code
  • I have made corresponding changes to the documentation
  • I have added tests that prove my fix is effective or that my feature works
  • A changelog entry has been made in the appropriate crates

I added a new changelog file for this protocol, but did not add a link to it in the repo's changelog

@sirandreww-starkware sirandreww-starkware force-pushed the 09-21-feat_turbine_cloned_gossipsub_and_made_turbine branch 2 times, most recently from cea7564 to 3c8fadb Compare September 30, 2025 10:40
@dariusc93
Copy link
Member

Thanks for the PR. While the concept does seem interesting, unfortunately this is not something we can just add to rust-libp2p unless there been an update to libp2p specs to introduce this there, where it would then possibly be implemented in other implementations of libp2p then we wouldnt be able to just add it here. The best thing to do is first is raise a discussion at https://github.com/libp2p/specs for the protocol youre trying to add here, detail specification, etc., and if it gets approved then we could probably revisit this.

Copy link
Member

@jxs jxs left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Hi Andrew, this looks very interesting. Did you spec'ed this or it's just this implementation? Wrt merging, it's as Darius says, we only contain in this repo what is spec'ed on the specs repo, none the less we mayve could add this to the README.md or in the discussions on a new category for "external" protocols

@sirandreww-starkware sirandreww-starkware force-pushed the 09-21-feat_turbine_cloned_gossipsub_and_made_turbine branch 10 times, most recently from ffcb5c5 to f30e8a0 Compare October 9, 2025 06:27
@sirandreww-starkware
Copy link
Contributor Author

@dariusc93 thank you for the clarification, I don't know if I have the time to do all of that, maybe I'll just publish this as a standalone crate.
@jsx Hey João! I must say your thoughts about how other blockchains do block propagation lead me down this road. I did not create a specification since I didn't know how it'll turn out. I might be able to write one if time permits. I'll update on this matter once I know what I should do with this code.

@sirandreww-starkware sirandreww-starkware force-pushed the 09-21-feat_turbine_cloned_gossipsub_and_made_turbine branch 3 times, most recently from 1d8e620 to 94db13d Compare October 11, 2025 21:42
@sirandreww-starkware sirandreww-starkware force-pushed the 09-21-feat_turbine_cloned_gossipsub_and_made_turbine branch from 94db13d to 6de70b0 Compare October 15, 2025 12:05
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants