Skip to content
This repository has been archived by the owner on Dec 2, 2024. It is now read-only.

Latest commit

 

History

History
48 lines (32 loc) · 1.74 KB

ARCHITECTURE.adoc

File metadata and controls

48 lines (32 loc) · 1.74 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.

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