You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
{{ message }}
This repository was archived by the owner on Aug 2, 2021. It is now read-only.
At the moment we don't have a formal model of Swarm's syncing protocol. We have it documented in the Orange Papers, and @gbalint made a presentation on it, and then we have the implemented code in swarm-network-rewrite.
I believe it would be very beneficial to implement a formal model of the protocol with TLA+, so that we can run it through a model checker, with at least a small number of nodes, so that we:
Have a simpler explanation and formal documentation of the protocol.
Have higher confidence level that the protocol works and that our assumptions hold.
Here are a few resources for those of you who are not aware of TLA+:
It goes without saying that a formal model of the protocol does not guarantee that we will implement it correctly in Go (or whatever) code, but I think it will be much easier to have a correct Go implementation once we have a defined formal model which does not trigger errors on the model checker.
At the moment we don't have a formal model of Swarm's syncing protocol. We have it documented in the Orange Papers, and @gbalint made a presentation on it, and then we have the implemented code in
swarm-network-rewrite.I believe it would be very beneficial to implement a formal model of the protocol with TLA+, so that we can run it through a model checker, with at least a small number of nodes, so that we:
Here are a few resources for those of you who are not aware of TLA+:
It goes without saying that a formal model of the protocol does not guarantee that we will implement it correctly in Go (or whatever) code, but I think it will be much easier to have a correct Go implementation once we have a defined formal model which does not trigger errors on the model checker.
Let me know what you think.
cc @zelig @nagydani @homotopycolimit
Here are a few repos with more elaborate examples: