Cardinal-Cryptography / aleph-node

Node implementation for aleph blockchain built with Substrate framework
Apache License 2.0
77 stars 49 forks source link

Documentation on how to use the subtrate compatible finality-aleph consensus #1726

Open hhamud opened 5 months ago

hhamud commented 5 months ago

I have read your original alephBFT API documentation but I noticed that you also have a subtrate compatible version here. I wanted to know how to integrate that component instead into a subtrate compatible node.

If this is the wrong place to ask such a question then I will delete and ask somewhere else.

Thanks in advance.

ggawryal commented 5 months ago

Hi @hhamud,

The code in AlephBFT repo is a standalone consensus implementation for general purposes, and here we have only its integration with substrate. This integration is done in https://github.com/Cardinal-Cryptography/aleph-node/tree/r-13.3/finality-aleph.

However, our priority was always adding new features to Aleph Zero blockchain, which may make it harder to reuse our substrate integration of our consensus for other blockchains. That being said, not everything used in finality-aleph is absolutely necessary to run a custom blockchain, as well as we might rely too much in some parts of the code on some specific substrate client parts (like Aura).

Nevertheless, the integration includes, inter alia:

You can also see how the blockchain's components, and particularly finality-aleph is initialized there: https://github.com/Cardinal-Cryptography/aleph-node/blob/r-13.3/bin/node/src/service.rs.

hhamud commented 5 months ago

Thanks for the reply. I am fine with it depending on aura for block authorship, in my case I'm mainly concerned with block finalisation.

Could you point to where the code is for the block sync issues?

ggawryal commented 5 months ago

New sync protocol is there: https://github.com/Cardinal-Cryptography/aleph-node/tree/main/finality-aleph/src/sync.

And you can see how it's initialized there: https://github.com/Cardinal-Cryptography/aleph-node/blob/e01ff0523b5a6b4eef50ffffdbf5e4d08245cd9a/finality-aleph/src/nodes.rs#L185

hhamud commented 5 months ago

You are using a forked version of the polkadot-sdk. What version is it forked from and what changes were made to it that were necessary?

Marcin-Radecki commented 5 months ago

Hi, aleph-node 13.3 version is based on polkadot-sdk 1.2.0. You can see all the changes to upstream branch here: https://github.com/paritytech/polkadot-sdk/compare/polkadot-v1.2.0...Cardinal-Cryptography:polkadot-sdk:aleph-v1.2.0