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

Prepare open sourcing repository #233

Merged
1 commit merged into from
Oct 4, 2024
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
46 changes: 1 addition & 45 deletions .github/workflows/ci.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -27,7 +27,7 @@ jobs:
path: /tmp/nixcache
key: ${{ runner.os }}-nix-${{ hashFiles('flake.lock') }}
restore-keys: ${{ runner.os }}-nix-

- name: 🛠️ Install Nix
uses: cachix/install-nix-action@v21
with:
Expand Down Expand Up @@ -150,50 +150,6 @@ jobs:
if: "steps.nix-cache.outputs.cache-hit != 'true'"
run: "nix-store --export $(find /nix/store -maxdepth 1 -name '*-*') > /tmp/nixcache"

test-demo:
name: Test Demo
runs-on: ubuntu-latest # self-hosted
steps:

- name: 📥 Checkout repository
uses: actions/checkout@v4

- name: 💾 Cache Nix store
uses: actions/[email protected]
id: nix-cache
with:
path: /tmp/nixcache
key: ${{ runner.os }}-nix-${{ hashFiles('flake.lock') }}
restore-keys: ${{ runner.os }}-nix-

- name: 🛠️ Install Nix
uses: cachix/install-nix-action@v21
with:
nix_path: nixpkgs=channel:nixos-unstable
install_url: https://releases.nixos.org/nix/nix-2.10.3/install
extra_nix_config: |
allowed-uris = ${{ env.ALLOWED_URIS }}
trusted-public-keys = ${{ env.TRUSTED_PUBLIC_KEYS }}
substituters = ${{ env.SUBSTITUTERS }}
experimental-features = nix-command flakes
accept-flake-config = true

- name: 🏗️ Compile Agda
run: |
nix build .#test-demo-agda

- name: 🏗️ Compile Haskell Library
run: |
nix build .#test-demo

- name: 🏗️ Compile Haskell Executable
run: |
nix build .#test-demo-test

- name: ➤💾 Export Nix store cache
if: "steps.nix-cache.outputs.cache-hit != 'true'"
run: "nix-store --export $(find /nix/store -maxdepth 1 -name '*-*') > /tmp/nixcache"

build-specification:
name: Build HTML Specification
runs-on: ubuntu-latest # self-hosted
Expand Down
5 changes: 0 additions & 5 deletions CHANGELOG.md

This file was deleted.

1 change: 0 additions & 1 deletion Dockerfile
Original file line number Diff line number Diff line change
Expand Up @@ -30,7 +30,6 @@ RUN mkdir /app/peras-simulation && mkdir /app/peras-server
COPY ./peras-simulation/peras-simulation.cabal /app/peras-simulation/peras-simulation.cabal
COPY ./peras-server/peras-server.cabal /app/peras-server/peras-server.cabal
COPY ./peras-delta-q/deltaq.cabal /app/peras-delta-q/deltaq.cabal
COPY ./test-demo/test-demo.cabal /app/test-demo/test-demo.cabal
COPY ./peras-markov/peras-markov.cabal /app/peras-markov/peras-markov.cabal
COPY ./peras-vote/peras-vote.cabal /app/peras-vote/peras-vote.cabal

Expand Down
145 changes: 44 additions & 101 deletions Logbook.md

Large diffs are not rendered by default.

57 changes: 8 additions & 49 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -4,63 +4,22 @@
<a href="https://github.com/input-output-hk/peras-design/actions/workflows/ci.yaml"><img src="https://github.com/input-output-hk/peras-design/actions/workflows/ci.yaml/badge.svg" /></a>
</div>

This repository is intended to host more or less formal specifications, experiments, models for the Ouroboros Peras protocol.

## Roadmap

- Complete proofs.
- Voting strings.
- Liveness of the protocol.
- Soundness of the executable specification.
- Synchronize with Praos formalization.
- Prepare a publication or online supplement.
- Complete conformance suite.
- Tests for non-voting parts of the protocol.
- Serialization format and inter-process communication for testing third-party implementations.
- Package for easy installation and use.
- Recommend parameter values.
- Seek and analyze stakeholder requirements, especially from partner chains.
- Develop a parameter-evaluation tool (based on the Markov-chain simulator) that provides a full set of impact metrics for a given set of parameters.
- Reach out to stakeholders.
- Populate website with latest results.
- Online versions of all analysis, simulation, and visualization tools.
- Organize a stakeholder workshop and/or a Intersect Consensus Technical WG.
- Feedback on specification format.
- Feedback on conformance suite.
- Feedback on and refinement of the draft CIP.
- Tooling fixes and enhancements
- Improve the usability, efficiency, and testing of the ΔQ software.
- Provide out-of-the-box and possibly interactive visualization.
- Provide faster numeric computations (e.g. using discretized CDFs and fast vector operations, possibly offloaded to GPU).
- Provide additional combinators (e.g., quantile-arrival time) for the DSL.
- Improve the protocol visualizer.
- Allow users to inject adversarial behavior or network disruptions (e.g., "split brain" scenarios).
- Make visualization scalable in the browser to long chains (i.e., hours of simulated block production) and large networks.
- Improve the prototype simulator.
- Add an efficient implementation suitable for large networks and long simulations.
- Create a simple DSL for inputting simulation scenarios for both honest and adversarial behavior.
- Improve the Markov-chain analyzer.
- Add a DSL for defining scenarios.
- Add visualization and analysis tools.
- Collaborate with higher-resolution network simulation efforts, potentially implementing Peras on them.
- PeerNet
- ce-netsim
- Move from the "pre-alpha" to the "alpha" version of the protocol.
- Requires completion of the Peras paper.
- Formalize and implement the preagreement YOSO abstraction.
This repository contains the various artifacts (code, diagrams, documentation, website, journal...) from the Peras R&D project.

## Documentation

* [Weekly updates](docs/weekly) provide regular "heartbeat" about the
state of the project and what the team is working on
* [Logbook](Logbook.md) contains a detailed account of problems,
* The [website](https://peras.cardano-scaling.org) provides all relevant documentation, most notably the technical reports published by the project, updates, and links to simulator,
* The [Logbook](Logbook.md) contains a detailed account of problems,
successes, failures, ideas, references and is intended as a tool to
help the team members stay in sync
* We document our main design and architecture decisions along the way
using [Architectural Decision Records](./docs/adr).

## Hacking

> [!IMPORTANT]
>
> As of 2024-11-01, this repository has entered maintenance mode as the project as left the R&D stage and moved under the umbrella of [Intersect MBO]() towards implementation.
> Checkout [CIP](https://github.com/cardano-foundation/CIPs/pull/872) for relevant discussions on the road towards implementing Peras in Cardano.

### Agda

#### With nix
Expand Down
3 changes: 0 additions & 3 deletions Setup.hs

This file was deleted.

1 change: 0 additions & 1 deletion cabal.project
Original file line number Diff line number Diff line change
Expand Up @@ -20,7 +20,6 @@ packages:
peras-server
peras-delta-q
peras-vote
test-demo

tests: True
test-show-details: direct
Expand Down
Loading
Loading