Plutus components

Plutus is a DApp language, with on-chain and off-chain code.

On-chain - Plutus Tx, Plutus Core

How does PlutusTx target plutus core?

PlutusTx -> PlutusCore (Lambda calculus assembly lang)

Off-chain - Plutus Application Backend (PAB)

Client-side runtime.

HTTP, websocket interface for interacting with Contract instances.

PAB operations (start new instances, call instance endpoints, query instance state) are performed with this interface.

Chain index database

Queries served over HTTP API.

Store data from Cardano transactions. Uses Cardano node’s chain sync protocol . Needs to be co-located with Cardano node. Read-only, can be shared between PABs.

Expressiveness between node which answers queries related to ledger state, and db-sync, which has full history of all transactions, and an expressive database schema for staking and other info.

Alonzo node

PAB subscribes to ledger state updates from the node, using a socket protocol.

Wallet

Balancing transactions

Signing transactions

Example