Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Byzantine node simulation #7

Open
AndrejMitrovic opened this issue Feb 26, 2020 · 1 comment
Open

Byzantine node simulation #7

AndrejMitrovic opened this issue Feb 26, 2020 · 1 comment

Comments

@AndrejMitrovic
Copy link

Hi @bobg ,

Interesting project you have here!

Does your code also simulate byzantine / faulty nodes? The protocol itself probably handles it, but I am wondering about the tests. Would it be hard to add a faulty node test, maybe in the lunch.go sample code?

@bobg
Copy link
Owner

bobg commented Sep 5, 2020

My focus is elsewhere these days, but if you wanted to add faulty-node simulation, it seems to me that there are two good ways of doing it: an easy way and a fancier way.

The easy way is just to add a new field to the Node struct that indicates in what way it's supposed to be faulty - dropping or delaying messages some portion of the time, producing erroneous results, etc. - and then consulting that field in Node.handle in order to tweak the outbound value that gets produced there.

The fancier way is to define an abstract node interface that is satisfied by *Node but also by a variety of other kinds of node, each of which behaves differently in its own particular way from what the protocol strictly requires.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

2 participants