-
Notifications
You must be signed in to change notification settings - Fork 4
/
Copy pathmeta.yml
106 lines (83 loc) · 3.16 KB
/
meta.yml
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
---
fullname: Giskard Verification
shortname: giskard-verification
opam_name: coq-giskard
organization: runtimeverification
community: false
action: true
dune: true
synopsis: >-
Verified model of the Giskard consensus protocol in Coq
description: |-
The Giskard consensus protocol is used to validate transactions and computations
in the PlatON network. This project provides a model of Giskard in Coq, and formally
proves several key safety properties of the protocol.
authors:
- name: Elaine Li
- name: Karl Palmskog
- name: Mircea Sebe
opam-file-maintainer: palmskog@gmail.com
opam-file-version: dev
license:
fullname: University of Illinois/NCSA Open Source License
identifier: NCSA
file: LICENSE.md
supported_coq_versions:
text: 8.10 or later
opam: '{>= "8.10"}'
tested_coq_opam_versions:
- version: '8.16'
- version: '8.15'
- version: '8.14'
- version: '8.13'
- version: '8.12'
- version: '8.11'
- version: '8.10'
namespace: Giskard
keywords:
- name: Giskard
- name: consensus
- name: blockchain
categories:
- name: Computer Science/Concurrent Systems and Protocols/Theory of concurrent systems
build: |-
## Building instructions
We recommend installing Coq 8.16 via [OPAM](http://opam.ocaml.org/doc/Install.html):
```shell
opam install coq.8.16.0
```
When Coq is installed, use the following commands to obtain and build the project:
```shell
git clone https://github.com/runtimeverification/giskard-verification.git
cd giskard-verification
make # or make -j <number-of-cores-on-your-machine>
```
This will build all model definitions and check all the proofs.
documentation: |-
## Protocol
An overview of the Giskard protocol is provided as part of the
[PlatON Consensus Solution documentation](https://devdocs.platon.network/docs/en/PlatON_Solution/).
The Coq formalization is based on a more abstract [specification](https://arxiv.org/abs/2010.02124)
of the protocol.
## Coq model and proofs
The Coq protocol model aims to capture safety properties of Giskard, and thus omits
many implementation-level details such as on verifiable random functions.
For details on the model and the safety proofs, see the report:
<img src="resources/pdf-icon.png" alt="PDF" width="20" /> *[Verifying Safety of the Giskard Consensus Protocol in Coq](https://github.com/runtimeverification/giskard-verification/blob/master/report/report.pdf)*
## File organization
All Coq code is in the `theories` directory and is organized as follows:
- `lib.v`: supplementary general tactics and results
- `structures.v`: definitions of Giskard datatypes and axioms
- `local.v`: local state operations, properties, and transitions
- `global.v`: global state operations, transitions, and properties
- `prepare.v`: safety property one, prepare stage height injectivity
- `precommit.v`: safety property two, precommit stage height injectivity
- `commit.v`: safety property three, commit stage height injectivity
## Generating documentation
HTML documentation can be generated using `coqdoc` by running the following
command in the repository root:
```
make coqdoc
```
Then, a good entry point for your browser is `docs/coqdoc/toc.html`.
---