Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/intersectmbo/formal-ledger-specifications
Formal specifications of the cardano ledger
https://github.com/intersectmbo/formal-ledger-specifications
agda cardano-node formal-methods
Last synced: about 1 month ago
JSON representation
Formal specifications of the cardano ledger
- Host: GitHub
- URL: https://github.com/intersectmbo/formal-ledger-specifications
- Owner: IntersectMBO
- License: apache-2.0
- Created: 2022-07-06T13:06:07.000Z (over 2 years ago)
- Default Branch: master
- Last Pushed: 2024-11-06T21:07:06.000Z (about 2 months ago)
- Last Synced: 2024-11-06T22:19:21.434Z (about 2 months ago)
- Topics: agda, cardano-node, formal-methods
- Language: Agda
- Homepage:
- Size: 161 MB
- Stars: 37
- Watchers: 18
- Forks: 13
- Open Issues: 81
-
Metadata Files:
- Readme: README.md
- Changelog: CHANGELOG.md
- Contributing: CONTRIBUTING.md
- License: LICENSE
- Code of conduct: CODE-OF-CONDUCT.md
- Codeowners: CODEOWNERS
- Security: SECURITY.md
Awesome Lists containing this project
README
# Formal ledger specifications
This repository contains the formal ledger specifications that are intended to eventually replace the existing formal specifications of the Cardano ledger found [here](https://github.com/IntersectMBO/cardano-ledger). This project is currently incomplete and work in progress.
This repository currently contains two specifications---the work in progress specification for Cardano (up to and including the Conway era) and a small example that was produced for the Midnight project (but is unrelated to any actual Midnight code/features). Each specification is executable and contains some documentation in the form of a PDF document. They can be built by following the steps below.
Formal Specification | HTML Version | Haskell Tests |
----------------------|--------------|---------------|
[Full Cardano Ledger](https://IntersectMBO.github.io/formal-ledger-specifications/pdfs/cardano-ledger.pdf) | [Ledger.PDF](https://IntersectMBO.github.io/formal-ledger-specifications/html/Ledger.PDF.html) | [UTXOW test](https://IntersectMBO.github.io/formal-ledger-specifications/haskell/Ledger/test/UtxowSpec.hs) |
[Conway](https://IntersectMBO.github.io/formal-ledger-specifications/pdfs/conway-ledger.pdf) | [Ledger.PDF](https://IntersectMBO.github.io/formal-ledger-specifications/html/Ledger.PDF.html) | [UTXOW test](https://IntersectMBO.github.io/formal-ledger-specifications/haskell/Ledger/test/UtxowSpec.hs) |
[Midnight Example](https://IntersectMBO.github.io/formal-ledger-specifications/pdfs/midnight-example.pdf) | [MidnightExample.PDF](https://IntersectMBO.github.io/formal-ledger-specifications/html/MidnightExample.PDF.html) | [LEDGER test](https://IntersectMBO.github.io/formal-ledger-specifications/haskell/MidnightExample/test/LedgerSpec.hs) |Note: the HTML versions of the specifications are interactive, but many modules currently contain LaTeX code which is used to generate the PDF. We intend to fix this eventually.
--------------------
## Build and Test the Formal Spec
### Clone this repository and enter its directory
```
git clone https://github.com/IntersectMBO/formal-ledger-specifications.git
cd formal-ledger-specifications
```### Build the spec using nix-build
Invoke the following `nix-build` commands from inside the `formal-ledger-specifications` directory.
```
nix-build -A ledger.docs # generate the PDF spec of the Cardano ledger
nix-build -A midnight.docs # generate the PDF spec of the Midnight example
nix-build -A ledger.hsSrc # extract the Haskell code of the Cardano ledger
nix-build -A midnight.hsSrc # extract the Haskell code of the Midnight example
```### Test the spec using nix-shell
The `hsExe` is a `cabal` package, which can be loaded into GHCI like this:
```
nix-shell -A run --command "cabal repl --build-depends 'cardano-ledger'"
λ> :m Lib
λ> :i UTxOState
```Building the `hsExe` derivation will also run the test suite, which you can manually do using `cabal test`.
## Contributions and Feedback
If you would like more detailed information and/or you want to contribute to the Agda formalization of the spec, please see the [CONTRIBUTING.md](CONTRIBUTING.md) file.
Please [submit a new issue][] if you find problems with, and/or wish to comment on, this repository.
[submit a new issue]: https://github.com/IntersectMBO/formal-ledger-specifications/issues/new/choose