Programming LanguagesProgramming Languages
Conference40min
INTERMEDIATE

From Lambda to Ledger: A Functional Blockchain DSL Built on Haskell

This talk details the unconventional development of Plinth, an open-source Cardano scripting language reusing Haskell, featuring a three-stage compilation, custom and GHC-inspired optimizations, and a CEK-based runtime with precise cost tracking. It covers design choices, challenges, best practices, and recent advances in language, compiler, and runtime.

Ziyang Liu
Ziyang LiuInput Output Global

talkDetail.whenAndWhere

Friday, April 24, 17:15-17:55
Skalkotas
talks.roomOccupancytalks.noOccupancyInfo
talks.description
This talk reflects on the development of Plinth, an open source scripting language for the Cardano blockchain. Our journey building Plinth has been unconventional in several ways. First, Plinth reuses a subset of Haskell (as opposed to the much more common embedded DSLs), enabling a number of unique advantages. Second, the compilation process is done in three stages, most of which is handled in a compiler plugin - among the most intricate I’ve encountered - augmented by Template Haskell and runtime lifting where appropriate. Third, we implemented a range of compiler optimizations, some inspired by GHC’s own, others deliberately contrasting with them to suit Plinth’s semantics and runtime characteristics. Finally, Plinth’s runtime is a highly optimized implementation of an abstract machine - the CEK machine, equipped with a novel mechanism for precisely and safely tracking execution cost.

I will recount our design choices, outlining effective practices, challenges, and key takeaways, with an emphasis on recent advances in the language, compiler, and runtime.
compiler
plinth
runtime
haskell
talks.speakers
Ziyang Liu

Ziyang Liu

Input Output Global

United States of America

I lead the Plutus team at Input Output, focused on developing smart contract languages for the Cardano blockchain, along with the compilers, interpreters, libraries, and costing tools. Our work is fully open source and available at https://github.com/IntersectMBO/plutus.

talkDetail.rateThisTalk

talkDetail.poortalkDetail.excellent

talkDetail.ratingNotYetAvailable

talkDetail.ratingAvailableWhenStarted

talkDetail.signInRequired

talkDetail.signInToRateDescription

occupancy.title

occupancy.votingNotYetAvailable

occupancy.votingAvailableBeforeStart

talkDetail.signInRequired

occupancy.signInToVoteDescription

comments.title

comments.speakerNotEnabledComments