Overview of Multicurrency EUTXO
masterutxoma paper.repository·master·Indexed 23 days ago
https://github.com/intersectmbo/plutusA repository featuring the Plutus Cost Model Visualization tool for analyzing Plutus Core built-in functions using Plotly.js, and the Constitution Script, a Plutus smart contract designed to automate parts of the Cardano Constitution. It includes tools for building the constitution script JSON envelope, configuring rules via JSON, and managing a Docusaurus-based documentation site.
utxoma paper.The Plutus Core Conformance Test Suite is an official test suite designed to ensure that Plutus implementations conform to the specified behavior. It covers the Haskell and Agda implementations of:
tplc-typecheck-test)Users can use this suite to validate their own alternative implementations of Plutus Core evaluators by running them against the provided input files and comparing results against the expected outputs.
This formalization implements a two-part compilation process for Intermediate Representation (IR) into System F-omega-mu:
Note on Data Types: While IR data types are compiled at the type level, their constructors are not currently compiled at the term level. This is a known limitation due to the complexity of ensuring compiled constructors match the compiled types exactly.
The Plutus Core (PLC) formalisation is an intrinsically typed implementation of the Plutus Core language. It is organized into several layers of abstraction to support different stages of the programming lifecycle:
certify function, using translation relations to ensure compiler optimizations behave according to specification. This supports the --certify flag in the Plinth compiler and UPLC CLI tool.The plutus-benchmark/lists directory provides implementations of simple list algorithms in Plutus, categorized into two main sets: sort and sum.
sort: Contains implementations of insertion sort, merge sort, and quicksort designed for Scott-encoded lists. These are used to evaluate the performance and scalability of sorting in Plutus Core.sum: Contains benchmarks for summing lists of integers. These benchmarks compare the efficiency of different list types and folding methods, specifically comparing compiled and hand-written folds across Scott lists and built-in lists (Haskell lists accessed as a built-in type in Plutus Core).The UPLC Benchmarking Interface is an asynchronous SSH/file-based system used to submit Untyped Plutus Core (UPLC) programs for evaluation and retrieve execution metrics.
Clients interact with the service by placing files in a specific input directory and monitoring an output directory for results or errors.
The plutus-core Haskell package provides a suite of tools for manipulating Plutus Core programs according to the Plutus Core language specification. The primary exported interface is the PlutusCore module, which includes:
flat package for serializing and deserializing programs.Plutus contract validation benchmarks measure the performance of transaction validations. These benchmarks use transactions derived from contracts located in the plutus-use-cases directory, which are obtained during contract execution on the blockchain emulator.
Validation scripts are located in the data directory.