feat(propeller): made propeller protocol
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
- [x] I have performed a self-review of my own code
- [x] I have made corresponding changes to the documentation
- [x] 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
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.
@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.