Simulating Byzantine behavior in Tendermint local cluster

Hello everyone,

I hope you are doing fine in the pandemic. I am doing a project about Tendermint and I want to perform Byzantine behavior in Tendermint local cluster. As a start, I have four nodes and I would like to simulate a case where one node is Byzantine and the three nodes are trustworthy. I think the best way to perform this task is to edit the Tendermint code base. However, I found the Github repository very intricate and I couldn’t locate individual code blocks where I should perform this task. Could you please help me in this regard? I am also starter in Golang but I’m willing to constantly learn.

Best,
Furkan

Up in the forum posts +

It really depends what kind of Byzantine behaviour you want. One simple/naiive approach is to just run two nodes with the same priv_validator key. Then you will get some sporadic double signing behaviour. But more nuanced behaviour will take more effort.

You can read about some of the Byzantine validator tests Jepsen ran here: https://jepsen.io/analyses/tendermint-0-10-2

There’s also the consensus/byzantine_test.go file which runs some tests with byzantine validators.

Hope that helps!