Skip to content

Latest commit

 

History

History
62 lines (40 loc) · 2.13 KB

ARCHITECTURE.adoc

File metadata and controls

62 lines (40 loc) · 2.13 KB

Architecture of the Plutus apps project

This document is an overview of how the software in the Plutus apps project is structured. Most things are in direct subdirectories of the root, so we will work through those in conceptual order.

Ledger

To write actual Plutus contracts we need a model of the ledger that we’re running on. There are two reasons for this:

  • The on-chain code needs to work with the data: validators are given information about the current transaction being validated.

  • The off-chain code needs to produce transactions to submit.

  • We want to write tests that simulate the "full" behaviour of contracts, i.e. across time, in a multi-agent scenario.

Contract modelling

We want to help people write "contracts". When we say that, we mean both:

  1. A high-level application that exposes a limited API and is suitable for running inside something like a wallet smart contract backend.

  2. An implementation of a conceptual "contract" (e.g. a crowdfunding contract), including both the on-chain code and the eventual contract application.

These packages are geared towards providing the tools to do that, and building up examples to ensure that we have adequate functionality.

Playground

The Plutus Playground is our web-based environment for developing and testing basic Plutus contracts. That means it’s the main way that anyone outside the team has interacted with out product!

Smart Contract Backend

The smart contract backend provides the runtime environment for compiled Plutus contracts. It manages the state of contract instances and brokers messages between them and the nodes, users, and wallets that they interact with.

Build tooling