PoA (Proof-of-Authority) setup

Hello guys,

So we are planning to use PoA instead of PoS for our upcoming project due to the fact that we are aiming for a more private blockchain app, where only select few can join as validators.

I couldn’t seem to get any information regarding any required modifications/setup to make it work, as all examples including the official ‘nameservice’ app seems to run on PoS. What crossed my mind is that there should be somewhere in the config that I can use to “whitelist” addresses so we know which validator addresses are valid (and not just anyone can become a validator).

Any hints would very helpful, thanks in advance!

What would be necessary is writing a “proof of authority” module for the SDK.

This would be possibly a system where the validator set changes via governance proposal. Leveraging the existing governance module.

Can we get some more help with this? Can an issue ticket be created and or module stub get started for us?

My company is working on this problem now, we would like to launch a PoA network on the Tendermint core / ABCI consensus engine, and eventually be able to connect to the IBC network. This is one of my current work tasks, and I can share the finished module as open-source.

I need first to create a roadmap, it seems that I should be able to essentially clone the staking module and alter it, it should be simplified to not worry about the amount of tokens that validators have, but instead only give them one vote each as long as they are on the validator list already, during EndBlock calls that propose new validator sets. Sound about right?

The approach of taking the staking module and removing the notion of token is the approach I took. There are many ways you could use to add validators but it depends on your use case

Yes, that’s what I’ll be working on this week, I suppose. Can you share any code back to the Tendermint repos, as a PR, or in a public repo, Marbar?

If I can get this working, we may switch the Government Blockchain Association over to a Tendermint PoA chain, also… Mainly these are private chains where all the validators are members of a private network, and we just need standard 2/3 consensus, for each block/round and for validator set changes.

Here is an example, I started and for the most part completed it but never got around to testing it. https://github.com/cosmos/modules/pull/5 It is for an older version of the cosmos-sdk so the main task will be updating if you decide to use this code

This is appreciated help, thank you. I’ll make a PR when I get it working :slight_smile:

This is very necessary move! A lot of institutions are considering adoption of tendermint and cosmos-sdk so we should provide well working PoA version of cosmos-sdk for many potential blockchain usage by governments and institutions.

1 Like