-
Notifications
You must be signed in to change notification settings - Fork 1.7k
IBFT in parity? #9298
Comments
Helpful resources:
|
Ping @rphmeier to comment on that :) |
The on-chain voting algorithm of Clique and Istanbul will probably take some effort to code. Other than that, Istanbul will require the same or similar changes as #8888. We are currently collaborating with POA network to get these baseline changes in, with the intent of including HoneyBadgerBFT as a consensus engine in Parity-Ethereum. Beyond that, it seems that there is a serious demand for these kinds of engines in Parity-Ethereum and we will gladly accept any external contribution to implement them, but they are also a significant undertaking and the resources of the core development team are currently elsewhere. |
Thanks a lot! Good to know. Anyone else? Other opinions?
Yes.
Ah, good, very good.
Prefered over IBFT? Why? Is there also a geth implementation of HoneyBadgerBFT ? Is there any other PoA algorithm which might (soon) run on both platforms, geth and parity? (or: why not?)
As mentioned, we are interested. However, to plug the then new IBFT rust code into the existing parity codebase ... is easier with support from the parity core team. How modular is parity, in terms of swapping out the consensus mechanism?
When might that change? |
Aura seems to be slow at least for smart contract transactions - perhaps that could be another motivation to consider IBFT for parity? |
Just go ahead, do it and submit a PR. Once it's in our code-base you don't have to maintain a fork, only the IBFT parts. |
Worth noting that github.com/paritytech/rhododendron is quite close already to IBFT (only a few fairly small changes would be necessary to transform it into IBFT agreement). You'd still have to write the integration into Parity and validator-set switching mechanism. |
Sorry, I only just found this issue. Our (network-agnostic, not Parity-specific) Honey Badger BFT implementation is here. Feel free to invite me and/or the other developers on related issues! I'm sure there's a lot of overlap with what we're trying to do, and it would be great to collaborate! In terms of Parity integration, we're still exploring what the best path to integration is. One of the complications is that Honey Badger BFT relies heavily on low-latency high-bandwidth single-recipient (not multicast) messages between the validators.
To quote the Honey Badger BFT paper: "(weakly) synchronous protocol such as PBFT […] rely critically on network timing assumptions, and only guarantee liveness when the network behaves as expected. We argue these protocols are ill-suited for this deployment scenario." (Referring to cryptocurrencies.)
For now we are focusing on integrating hbbft with Parity. In the future, getting it into geth, too, or adding more algorithms would be awesome, of course. |
Sorry for the longer silence. An update on this ^
Very probably won't happen. Sorry.
Interesting. Would it hurt much to build those missing pieces? Even if you think IBFT is not yet the best possible solution to the problem, to have a first PoA algo that exists on both clients ... wouldn't that be good? |
cool. I assume it can more easily be included into parity (because rust)? What about porting it to go? Perhaps same approach? Once HBBFT exists in those two languages, there is a real chance for finally both clients being able to run the same PoA algorithm, no?
Sounds very good. Any expectations how it might perform compared to (Aura, Clique, IBFT)? What about an HBBFT EIP like the IBFT EIP-650. |
I agree, having compatible HBBFT implementations in both clients would be awesome! That's why we're focusing only on the Rust/Parity version for now.
We'll only know for sure once we've tried it out in the wild, of course. (Edit: With our simulation example, you can get rough estimates of how the algorithm will perform, given particular network latency, bandwidth, CPU speed, block size, etc.) |
Great. No chance to try it until after devcon, but already linked to it here. |
Closing issue due to its stale state. |
@Tbaut suggested in https://gitter.im/paritytech/parity-poa to post this here; quotes are from there. Please keep this issue open until there is an implementation.
port IBFT from go to rust ?
Thanks.
In case we use IBFT for our next project (however not decided yet), we would like to still use parity - that has always been our Ethereum client of choice here at Electron.org.uk .
I suggest porting the go IBFT (see EIP-650) to rust, and to include it into official parity
Yes, we could do all this alone, but then we must maintain some idiosyncratic fork of parity - and then always having to catch up with the parity master, etc. (For example, the EWF parity client (with the "tobalaba chain") is ~a thousand commits behind. Not ideal.)
We actually do have a rust coder who could possibly (help to) port the existing IBFT go code to rust. But someone who already knows parity inside out would of course get faster results at how exactly to insert another consensus engine into the existing parity client.
Please discuss this in the parity team. Thanks!
With that possible future port of IBFT from go to rust, there would then finally be a PoA which can work in all three clients (quorum, geth, parity). A good step forward, no?
The text was updated successfully, but these errors were encountered: