The Occam.fi Technical Series: Plutus Pioneers
How We Can Become Engineers Of The Future
Written by @Conorxdevlin, Technical Writer
This post is the third in Occam.fi’s technical series — albeit in a slightly different format as one of our technical writers, Conor Devlin, takes us through his experiences in the Plutus Pioneer Program.
We begin with a general introduction to the Plutus smart contract language and some key functional pillars of Plutus. We will then explain what the Plutus Pioneer Program is, and discover how members of the Cardano community can get more deeply involved in the ecosystem.
This article will also provide a variety of links to various resources to help you on your journey to become more involved in Cardano. At Occam.fi, we highly encourage you to explore them and immerse yourself in the technical aspects of the Cardano ecosystem. Holding tokens is great, but helping projects build is even better — so let’s dive in!
What is Plutus?
Plutus is the smart contract language for Cardano which will arrive on Cardano with the Alonzo hard fork sometime later this year. It is built on Haskell and introduces the ‘Extended’ portion of Cardano’s Extended Unspent Transaction Output (EUTxO) framework. Plutus Contracts consist of code that runs on the Cardano blockchain, known as the ‘on-chain’ code, and code that runs on a user’s machine, known as ‘off-chain’ code.
On-chain and off-chain code are written in Haskell, and you can think of Plutus smart contracts as Haskell programs. To write off-chain code, you can use the Plutus Application Framework (PAF) which can then be compiled via the Glasgow Haskell Compiler. The on-chain code, which is written using Plutus Core, is compiled by the Plutus compiler and Plutus Core can be thought of as a much lower level, in abstraction, form of Haskell.
Plutus Core and the PAF
With the advent of Plutus we introduce the concepts of scripts and data into the UTxO model. The scripts can be written with Plutus Core, the low-level scripting language, but ideally coding will be done in Plutus as the higher abstraction is easier to read than Plutus Core. Plutus Core runs on the settlement and computational layer of the Cardano blockchain.
Moreover, as Plutus compiles into Plutus Core, and retains all the benefits of functional programming, its implementation on the settlement layer is done with simplicity in mind to increase “security by minimizing potential attack vectors”. The scripts themselves are executed by nodes during the validation phase of the transaction on-chain. Basically, as Lars Brunjes puts it: “a smart contract developer will write validator scripts in Haskell, which will then be automatically compiled into Plutus Core.”
The off-chain code is similarly written in Haskell, and deals with the building and submitting of transactions. More importantly, it’s what the business logic of the smart contracts is written in. The off-chain code utilizes the PAF, to easily interface with other Plutus applications, services, and apps written on the PAF are provided with a HTTP and web socket interface so developers may interact with it from a web browser. You can think of the PAF as a way for developers to test and deploy their smart contracts, they will have access to the PAF’s libraries, they will run on the Plutus application backend, and they will have runtime support on the Cardano blockchain.
Marlowe is a subset of Plutus, a domain-specific-language (DSL) if you will, and it is designed for people who are not entirely familiar with Plutus or Haskell but have the skills to model financial instruments and can convert them to smart contracts.
Marlowe is designed for people who are business oriented or subject experts in a field, say copyright lawyers, and it comes with a browser-based contract editor and simulator for people to test their new smart contracts.
The Alonzo Timeline
Pictured below is the official rollout plan for the Alonzo hard fork, which signifies the final completion of the Goguen era. With the Alonzo rollout plan, more and more members of the Cardano developer community are gradually introduced into the testnet as more features are unlocked to the testers. The current phase, Alonzo White, has stake pool operators, Cardano partners, Plutus Pioneers, and now more members of the wider community to perform live product testing, demos of DApps, and the facilitation of benchmarking of Cardano-based programs. Then with completion of Alonzo Black and the staging phase the hard fork combinator event will occur; after which the Shelly era ends and the Goguen Smart Contract era begins.
Who are the ‘Plutus Pioneers’?
Plutus Pioneers is the name given to people who Lars Brunjes, IOHK’s Director of Education, has been educating and giving a crash course on learning Plutus to. There has already been one full cohort that went through the 8-week course and the second cohort began on July 1st. If you still want to throw in your hat for another future cohort you can find out more here.
The Plutus Pioneer course is not for beginner level coders and it is highly advised that entrants have at least a functioning knowledge of Haskell. We recommend that users follow the ‘Learn You a Haskell Guide’, which worked worked really well for me, though I already had a background in programming (C/C++ and Python) so the change from imperative to functional wasn’t that hard; and with Plutus it is really interesting to see a functional language applied in a blockchain use-case.
From there, once you have a basic understanding of Haskell, you can throw your name into the hat to be selected for a future cohort or you can begin actively learning Plutus by following along on Lars’ YouTube channel where he posts all of his lecture for the first and second cohorts! Before I was selected for the second cohort, I went through all of his uploaded material for the first cohort so I could familiarize myself with what I would be learning. Lastly, there is also a free eBook covering Plutus that has been put out by IOHK as well, which can be found here.
How can I get involved?
I’ve found the best way to get involved with the Cardano development community is to obtain a basic understanding of Haskell and how blockchains, especially Cardano, work. Then, you can work through the released Plutus Pioneer lectures mentioned above. At that point, you can get involved in the Cardano Stack Exchange, the Cardano Developers’ Reddit, the Cardano Developers’ Forum and the telegram for Cardano Developers.
Getting on twitter and interact with members of the Cardano community and projects will also do wonders as many projects are looking to on-board new developers. People who know Haskell and Plutus are the hot commodity on the market right now and if you can put forth the effort to immerse yourself in the learning resources and become adept at Plutus and Haskell, you’ll become a valuable resource for many of the projects that are currently building on Cardano.
So, take the next step, go from hodling Cardano to actively supporting and growing the projects building on Cardano to make it the blockchain that continues to revolutionize the industry and paves the way for mass-adoptions around the world!
Read more articles in the Occam.fi technical series: