All Projects β†’ tezedge β†’ tezedge-specification

tezedge / tezedge-specification

Licence: MIT license
TLA+ specs and models for the TezEdge node's p2p overlay network, shell, and consensus

Programming Languages

TLA
29 projects
java
68154 projects - #9 most used programming language

Projects that are alternatives of or similar to tezedge-specification

pytezos
🐍 Python SDK & CLI for Tezos | Michelson REPL and testing framework
Stars: ✭ 93 (+389.47%)
Mutual labels:  tezos, tezos-blockchain
harbinger
Harbinger is a decentralized price oracle solution for price feeds on the Tezos network. This repository contains top level documentation for the project.
Stars: ✭ 39 (+105.26%)
Mutual labels:  tezos, tezos-blockchain
CommunityModules
TLA+ snippets, operators, and modules contributed and curated by the TLA+ community
Stars: ✭ 167 (+778.95%)
Mutual labels:  tlaplus, tla-specification
objkt-swap
Hic et Nunc smart contracts. FA2 multiassets: hDAO, OBJKTs, Marketplace, SUBJKTs and Unregistry.
Stars: ✭ 67 (+252.63%)
Mutual labels:  tezos, tezos-blockchain
tezedge
Tezos node/shell in Rust. Unfortunately dev has ceased. If you are interested in resurrecting, please contact @drchrispinnock
Stars: ✭ 147 (+673.68%)
Mutual labels:  tezos, tezos-blockchain
netezos
Netezos is a cross-platform Tezos SDK for .NET developers, simplifying the access and interaction with the Tezos blockchain
Stars: ✭ 32 (+68.42%)
Mutual labels:  tezos, tezos-blockchain
granary
Tezos smart contract & dapp development toolkit
Stars: ✭ 67 (+252.63%)
Mutual labels:  tezos, tezos-blockchain
tezart
Tezart helps to interact with ​Tezos blockchain.
Stars: ✭ 19 (+0%)
Mutual labels:  tezos, tezos-blockchain
tzindex
Tezos Blockchain Indexer
Stars: ✭ 64 (+236.84%)
Mutual labels:  tezos
fm-notes
Unassorted scribbles on formal methods, type theory, category theory, and so on, and so on
Stars: ✭ 19 (+0%)
Mutual labels:  formal-verification
bcdhub
Better Call Dev backend
Stars: ✭ 30 (+57.89%)
Mutual labels:  tezos
crypto-code-school-inside-tezos
Interactive Code School for onboarding newcomers to build DApps on Tezos using SmartPy
Stars: ✭ 48 (+152.63%)
Mutual labels:  tezos
tezos-k8s
Deploy a Tezos Blockchain on Kubernetes
Stars: ✭ 43 (+126.32%)
Mutual labels:  tezos
TZComet
Contract Metadata Viewer on Tezos
Stars: ✭ 24 (+26.32%)
Mutual labels:  tezos
tlacli
A script for running TLA+/TLC from the command line
Stars: ✭ 75 (+294.74%)
Mutual labels:  tlaplus
quipuswap-core
πŸ§™β€β™‚οΈ Repository containing QuipuSwap liquidity protocol smart-contracts written in Ligo language
Stars: ✭ 48 (+152.63%)
Mutual labels:  tezos
Tezos-Developer-Resources
Resources for Tezos Developers
Stars: ✭ 34 (+78.95%)
Mutual labels:  tezos
tezbridge-legacy
This is the legacy code base of TezBridge
Stars: ✭ 13 (-31.58%)
Mutual labels:  tezos
high-assurance-legacy
Legacy code connected to the high-assurance implementation of the Ouroboros protocol family
Stars: ✭ 81 (+326.32%)
Mutual labels:  formal-verification
reasonml-tic-tac-toe
www.imandra.ai
Stars: ✭ 19 (+0%)
Mutual labels:  formal-verification

tezedge-specification

This project contains various formal specifications and models for different aspects of the Tezedge node's p2p overlay network, shell, and consensus.

In the security-critical realm of blockchains, it is not enough to simply test our software. Since these systems contain sensitive financial information and business logic, we believe that it is absolutely necessary to formally verify the code we write.

Part of the formal verification process focuses on the design we intend to implement in our code. This is the realm of formal specification and model checking. TLA+, our formal specification language of choice, is well-known, widely used, and particularly well-suited to reasoning about concurrent and distributed algorithms.

Formal specification and model checking give us assurance and verification that our algorithms have the intended properties and no undesirable behavior. Formal specification is, of course, not a replacement for testing, but a necessary companion and counterpart. TLA+ gives one the ability to exhaustively check all possible behaviors of a system.

See project navigation for a brief description of each directory's contents.

Quick start

TLA+

Download and install the latest release of the TLA+ toolbox.

TLA+ is our chosen specification language. It enables one to encode the specification of a state machine, as well as its safety and liveness properties, in the language of temporal logic of actions. TLA+ comes with an explicit state model checker, TLC, which exhaustively checks all behaviors of the specified state machine, verifies its properties, and provides counterexamples to violated properties.

Apalache

Apalache is a symbolic model checker for TLA+; Apalache translates TLA+ into the logic supported by SMT solvers such as Z3.

We use Apalache extensively in this project to typecheck specifications and verify inductive (safety) invariants (see Apalache docs). The easiest way to get and run Apalache is with docker:

  1. Pull the unstable image (one may use the latest image, but unstable provides more features)
$ docker pull apalache/mc:unstable
  1. Set an alias for the unstable image (if you're using Linux or macOS)
$ alias apalache='docker run --rm -v $(pwd):/var/apalache apalache/mc:unstable'
  1. Verify that the setup works
$ apalache version

Note that this command will generate a detailed.log file in the directory in which it is run.

Specific instructions to verify inductive invariants are provided in the corresponding spec's directory.

TLA+ command line tool

The default way to write TLA+ specs and run the model checker (TLC) is through the (graphical) toolbox. However, for the ease of running TLC on a remote server, one may be interested in also getting the TLA+ command line tool tla-bin. Installation instructions are provided in that repo.

TLA+ VSCode extension

For those who prefer to work in VSCode, there is the extension vscode-tlaplus which is well-maintained and highly recommended.

Project navigation

There are three main objects of focus for our specifications, corresponding to the three layers in Tezos: p2p, shell, and consensus

p2p

This project contains specifications and models related to the p2p overlay network:

  • hanshaking
  • I/O resource management
    • counter
    • scheduler

shell

This project contains specifications and models related to the shell:

consensus

This project contains specifications and models related to consensus:

utils

This project contains TLA+ functions and operators used extensively in the other projects

Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].