Plutus tools

The Alonzo hard fork brings core smart contract capabilities to the Cardano ledger by establishing the infrastructure and adding tools for functional smart contract development using Plutus. This means that users, developers, and organizations can now securely build decentralized applications (DApps) based on smart contract solutions.

There are different tools that developers can use to evaluate and deploy smart contracts on Cardano. Below we take a look at these tools, their main features and point to the exact sources to use them.

Plutus Playground

The Plutus Playground provides an environment for writing and testing smart contracts before they are released on the Cardano blockchain. It is a lightweight, web-based environment for exploratory Plutus development. As well as providing a web-based simulator for writing and executing smart contracts, the Plutus Playground also allows developers to access popular smart contracts that have already been written. Tutorials are available within the Plutus Playground to help you get started.

The Plutus Playground can be accessed through a web browser and there is no need to install software. The interface is split into three sections:

  • editor
  • simulation
  • transactions

The simulator shows how a contract will behave on the Cardano blockchain. An important aspect of this is that it can act as a training tool for people who do not have advanced developer skills because it demonstrates the working principles. Users can define and modify the wallets that interact with a contract, as well as the actions that affect the outcome. The results can then be evaluated to see what happens on the blockchain and how transactions occur. For more information, watch the Plutus application compiling and testing tutorial or visit the Plutus GitHub repository.

Plutus Application Backend

The Plutus Application Backend (PAB) enables developers to interact with smart contracts. It is an off-chain, backend service for managing and handling the requirements of the application instance throughout its lifecycle. This service includes interaction with external clients (such as wallet frontends) and acts as an intermediary between Plutus applications, the node, the wallet backend, and end users. Such interaction is made possible by PAB commands and mock components that enable convenient simulations and integration of DApps. We will be rolling out a series of versions of the PAB over the coming weeks as we iterate and add new functionality.

The purpose of the PAB is to:

  • provide a standardized environment in which Plutus applications run
  • provide disciplined state management
  • present discoverable interfaces to the external clients
  • track on-chain information for smart contract uses
  • work in an emulated environment
  • deal with requests such as running contract instances, forwarding user input to these instances, and notifying these instances of ledger state change events.

The following diagram provides an overview of the PAB architecture:

pab_schematic

There are two deployment models envisaged for the PAB once it is available:

  • hosted - this option will be supported at the initial release of the PAB. In this scenario, the DApp provider / developer hosts an instance of the PAB alongside the chain index and an Alonzo node. The off-chain code of the Plutus app is run on the DApp provider’s infrastructure.
  • in-browser - this option will be available later, after the initial release.

In addition to the PAB itself, the following components are required:

  • Chain index — the chain index is a database of data gathered from Cardano transactions. It uses the Cardano node’s chain sync protocol and needs to be co-located with a Cardano node. The chain index is a read-only component for the PAB. Multiple instances of the PAB can therefore share a single instance of the chain index. All chain index queries are served over an HTTP API.
  • Alonzo node — the PAB subscribes to ledger state updates from the node, using a socket protocol.

The PAB is another powerful tool on Cardano that makes DApps simpler, more secure, and more cost-effective to develop. By providing information from canonical sources in a usable form, it relieves developers of many routine tasks.

We will share links in due course when these are available.

Plutus fee estimator

The Plutus fee estimator has been developed by IOG performance experts as an in-house tool for price benchmarking and comparison. It uses information from real-world Plutus transactions to predict the fees that will be charged for a transaction. The estimator can be used to calculate fees for actual transactions (e.g., to determine the fees that will be charged if the network parameters change), and also to estimate fees for individual script transactions or complete DApps before or during development. It may be useful to determine the effect of script changes or optimizations on fees.

Fee calculation requires three pieces of information:

  • The total on-chain transaction size in bytes: a simple transaction, for example, is around 300 bytes, the one with metadata is around 650 bytes, and Plutus scripts are typically 4,000-8,000 bytes (future optimizations will reduce this).
  • The number of computational (CPU) steps that the script uses: each step represents 1 picosecond of execution time on a benchmark machine. Typical scripts should consume less than 1,000,000,000 (1 millisecond).
  • The number of memory units that the script uses: this represents the number of bytes that the script allocates. Typical scripts should consume less than 1,000,000 memory units (1MB of memory allocation).

To use an estimator, a user just needs to fill in relative information, which can be obtained from the Plutus compiler after building a script in it. There is also no need to run a node for this, which significantly simplifies the process for general users.

We will share links in due course when these are available.

© IOHK 2015 - 2021


Cardano Logo

Cardano is an open-source project.

Cardano is a software platform ONLY and does not conduct any independent diligence on, or substantive review of, any blockchain asset, digital currency, cryptocurrency or associated funds. You are fully and solely responsible for evaluating your investments, for determining whether you will exchange blockchain assets based on your own judgement, and for all your decisions as to whether to exchange blockchain assets with Cardano. In many cases, blockchain assets you exchange on the basis of your research may not increase in value, and may decrease in value. Similarly, blockchain assets you exchange on the basis of your research may fall or rise in value after your exchange.

Past performance is not indicative of future results. Any investment in blockchain assets involves the risk of loss of part or all of your investment. The value of the blockchain assets you exchange is subject to market and other investment risks