7

https://github.com/ethereum/wiki/wiki/Consortium-Chain-Development

I would like to use PBFT as the consensus mechanism in my locally deployed ethereum network.

as the document specified above, we can use PoA, PBFT, DPoS consensus algorithm in private or consortium ethereum blockchain. Anybody have any clue about how to implement it?

Any suggestions would be appreciated.

  • You may want to check out Eris. They have a Tendermint (PBFT-based) consensus algorithm and a pretty nice toolchain with docker containers for everything. It's based on the EVM, so all functionality is the same as Ethereum – Tjaden Hess Dec 12 '16 at 0:06
  • I think this question is too broad. Quorum and Hydrachain are other examples to get an idea of how to replace PoW (look at their code commits to see how they modify the Geth and Python clients), which is a starting point to implementing a specific algorithm like PBFT. – eth Jan 6 '17 at 1:55
2

Parity supports the Tendermint consensus engine (experimental). You can use it to run a private PBFT-based network, i.e., by adding the following to your chain configuration:

"engine": {
    "tendermint": {
        "params": {
            "gasLimitBoundDivisor": "0x400",
            "validators" : {
                "list": [
                    "0x37f93cfe411fa244b87ff257085ee360fca245e8",
                    "0x610a3a37b98bf0c91c35442e489c246096739324"
                ]
            }
        }
    }
}

"gasLimitBoundDivisor" determines how fast the gas limit should adjust, most of the time 0x400 is fine "validators" is the list of addresses of the entities which will be allowed to issue blocks Optional: "blockReward" determines the reward given to issuing authority "timeoutPropose" "timeoutPrevote" "timeoutPrecommit" "timeoutCommit" "registrar" address of a contract containing registry, used for UI

"seal": {
    "tendermint": {
        "round": "0x0",
        "proposal": "0x0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000",
        "precommits": [
            "0x0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000"
        ]
    }
}

The genesis seal should not be changed unless a hard fork is conducted.

Disclosure, I work for Parity.

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.