03

Goguen

Smart Contracts

With the integration of smart contracts, the Goguen era represents a big step forwards in capability for the Cardano network. Where the Shelley era decentralizes the core of the system, Goguen adds the ability to build decentralized applications (DApps) on Cardano's solid foundation of peer-reviewed research and high-assurance development.

The work for Goguen has been under way in parallel with Shelley, and when complete will allow users from technical and non-technical backgrounds to create and execute functional smart contracts on the Cardano network. One of the goals for the Goguen era has been the creation of Plutus, a purpose-built smart contract development language and execution platform using the functional programming language Haskell. Plutus is already available for testing and brings the benefits of functional programming to smart contract creation. It also allows one code base to support both on and off-chain components, improving the coherency and usability of the development experience compared with existing smart contract implementations.

The Goguen era also encompasses work to make Cardano accessible to wider audiences via Marlowe, allowing financial and business experts with no previous technical knowledge to create smart contracts. Marlowe is a high-level, domain-specific language (DSL) for financial contracts which is built on Plutus. Marlowe comes with Meadow, an easy-to-use application-building platform that non-programmers can use to build financial smart contracts. Together, Marlowe and Meadow simplify the process of creating smart contracts for financial applications, allowing subject matter experts to directly contribute without requiring deep programming skills. The combination of Plutus and Marlowe will enable a new class of enterprise-level smart contracts with verified functionality, capable of underpinning large scale implementations in the real world.

As well as adding functionality in the form of smart contracts, Goguen will also see improvements to the core Cardano offering. Most significantly, the addition of a multi-currency ledger will extend the usefulness of Cardano even further, enabling users to create new natively-supported tokens. This will allow the creation of fungible and non-fungible tokens, supporting the creation of new cryptocurrencies on Cardano as well as the tokenization of many types of digital and physical assets. Another benefit will be easier integration of smart contracts and DApps involving multiple cryptocurrencies.

The Goguen era represents a step change in the abilities of Cardano, opening the way to the development of enterprise-level, mission-critical, decentralized smart contract applications, with even more exciting things to come during the Basho and Voltaire eras.

Goguen era research

Towards a Smart Contract-based, Decentralized, Public-Key Infrastructure

This paper proposes a smart contract-based decentralized public-key infrastructure based on the inherent scalability and incentive mechanism of blockchains, formalizing some of the design problems involved using the Universal Composability framework.

[DRAFT] System F in Agda, for fun and profit

This paper presents the first complete intrinsically typed, executable formalization of System F, upon which Plutus Core is based.

[DRAFT] Unraveling recursion: compiling an IR with recursion to System F

This paper presents an intermediate representation (IR) based on System F, providing an extension to its abilities which enables recursion in both functions and data types, allowing it to support higher-level programming applications.

[DRAFT] Functional Blockchain Contracts

This paper presents the Plutus platform, a functional blockchain smart contract system for coding distributed applications on top of the Cardano blockchain, and describes how the broader Plutus library interacts with Plutus Core in both on and off-chain code.

Goguen work scope


PLUTUS

Plutus is a purpose-built development and execution platform using the functional programming language Haskell. Designed to enable the creation of smart contracts on Cardano, Plutus brings the inherent benefits of functional programming – such as reduced ambiguity and easier testing – to smart contracts. During the Goguen era, Plutus will set the stage for smart contracts that are capable of modeling enterprise-level business and finance scenarios. Not only that, but Plutus and Haskell enable the use of the same codebase both on and off-chain, whereas other smart contract implementations often require developers to use two or more different languages, reducing efficiency and increasing the likelihood of costly mistakes.

All the work on Plutus is visible in the Plutus GitHub repository, and the Plutus Playground testbed is available for users to try creating their own smart contracts in Plutus.



PLUTUS CORE

While Plutus is a high-level language for developers, Plutus Core is a low-level scripting language that runs on both Cardano’s settlement layer and computation layer, controlling interactions between scripts and the blockchain itself. All on-chain functionality of smart contracts written in Plutus compiles to Plutus Core, which retains all the benefits of functional programming while remaining simple and concise. Where Plutus Core is implemented in the settlement layer, it is done so in the simplest way possible, improving security by minimizing potential attack vectors.



MARLOWE

Marlowe is a domain-specific language (DSL) for creating financial smart contracts, designed to be accessible to non-technical individuals such as business engineers, subject experts, and financial analysts. Using Marlowe, even someone without any programming experience can create executable smart contracts that interact with real-world data and deploy them on its built-in Cardano emulator, and eventually the Cardano network itself. Whilst Marlowe is necessarily a high-level language, it is built on Plutus and Haskell and continues to benefit from all the assurances that functional programming provides, without affecting ease of use.

All the work on Marlowe is visible in the Marlowe GitHub repository, and the Meadow emulator is available for users to try creating their own financial smart contracts using a simple web-based interface.



PLUTUSFEST

PlutusFest was held at the University of Edinburgh in December 2018 to announce and promote the Plutus and Marlowe programming languages. Interested members of the public and academia gathered for two days of talks and presentations by IOHK engineers, most of which were recorded and can be watched on the IOHK YouTube channel.



PLUTUS AND MARLOWE UDEMY COURSES

Two free Mooc courses have been released on Udemy covering the Plutus and Marlowe programming languages. Created and managed by IOHK’s in-house education team, the courses provide an introductory resource for anyone interested in learning how to experiment with smart contracts using Plutus and Marlowe.



MULTI-CURRENCY LEDGER

The introduction of a multi-currency ledger model into Cardano will allow the network to support additional cryptocurrencies in an ERC20-like way, but cheaply, more securely, and without the need for a complex scripting system thanks to native support in the settlement layer. Not only will users be able to create their own fungible tokens on the Cardano network, but a multi-currency ledger will also allow for tokenization with the creation of non-fungible tokens, plus easier integration with smart contracts involving multiple cryptocurrencies.



KEVM

KEVM is a high-quality, formally-verified smart contract virtual machine compatible with the Ethereum virtual machine (EVM). Formally specified in the K framework, the KEVM uses formal semantics for elements such as the configuration and transition rules of EVM, resulting in a more secure virtual machine for smart contracts. IOHK paused its collaboration in the K framework project in order to focus on other priorities, but is enthusiastic about the vision and may participate again in the future.



IELE

IELE is a virtual machine based on the research behind KEVM. As a low-level platform, IELE enables the translation and execution of smart contracts from higher-level languages with a uniform gas model across languages. As a compile target for Solidity code or integrated directly into Cardano, this can facilitate smart contract interoperability and may provide a high-assurance pathway to delivering Ethereum integration. After significant contribution to the project, IOHK has paused its collaboration on IELE to focus on other priorities for the time being , but is enthusiastic about potentially returning to the project in the future.



Plutus is a purpose-built development and execution platform using the functional programming language Haskell. Designed to enable the creation of smart contracts on Cardano, Plutus brings the inherent benefits of functional programming – such as reduced ambiguity and easier testing – to smart contracts. During the Goguen era, Plutus will set the stage for smart contracts that are capable of modeling enterprise-level business and finance scenarios. Not only that, but Plutus and Haskell enable the use of the same codebase both on and off-chain, whereas other smart contract implementations often require developers to use two or more different languages, reducing efficiency and increasing the likelihood of costly mistakes.

All the work on Plutus is visible in the Plutus GitHub repository, and the Plutus Playground testbed is available for users to try creating their own smart contracts in Plutus.


While Plutus is a high-level language for developers, Plutus Core is a low-level scripting language that runs on both Cardano’s settlement layer and computation layer, controlling interactions between scripts and the blockchain itself. All on-chain functionality of smart contracts written in Plutus compiles to Plutus Core, which retains all the benefits of functional programming while remaining simple and concise. Where Plutus Core is implemented in the settlement layer, it is done so in the simplest way possible, improving security by minimizing potential attack vectors.


Marlowe is a domain-specific language (DSL) for creating financial smart contracts, designed to be accessible to non-technical individuals such as business engineers, subject experts, and financial analysts. Using Marlowe, even someone without any programming experience can create executable smart contracts that interact with real-world data and deploy them on its built-in Cardano emulator, and eventually the Cardano network itself. Whilst Marlowe is necessarily a high-level language, it is built on Plutus and Haskell and continues to benefit from all the assurances that functional programming provides, without affecting ease of use.

All the work on Marlowe is visible in the Marlowe GitHub repository, and the Meadow emulator is available for users to try creating their own financial smart contracts using a simple web-based interface.


PlutusFest was held at the University of Edinburgh in December 2018 to announce and promote the Plutus and Marlowe programming languages. Interested members of the public and academia gathered for two days of talks and presentations by IOHK engineers, most of which were recorded and can be watched on the IOHK YouTube channel.


Two free Mooc courses have been released on Udemy covering the Plutus and Marlowe programming languages. Created and managed by IOHK’s in-house education team, the courses provide an introductory resource for anyone interested in learning how to experiment with smart contracts using Plutus and Marlowe.


The introduction of a multi-currency ledger model into Cardano will allow the network to support additional cryptocurrencies in an ERC20-like way, but cheaply, more securely, and without the need for a complex scripting system thanks to native support in the settlement layer. Not only will users be able to create their own fungible tokens on the Cardano network, but a multi-currency ledger will also allow for tokenization with the creation of non-fungible tokens, plus easier integration with smart contracts involving multiple cryptocurrencies.


KEVM is a high-quality, formally-verified smart contract virtual machine compatible with the Ethereum virtual machine (EVM). Formally specified in the K framework, the KEVM uses formal semantics for elements such as the configuration and transition rules of EVM, resulting in a more secure virtual machine for smart contracts. IOHK paused its collaboration in the K framework project in order to focus on other priorities, but is enthusiastic about the vision and may participate again in the future.


IELE is a virtual machine based on the research behind KEVM. As a low-level platform, IELE enables the translation and execution of smart contracts from higher-level languages with a uniform gas model across languages. As a compile target for Solidity code or integrated directly into Cardano, this can facilitate smart contract interoperability and may provide a high-assurance pathway to delivering Ethereum integration. After significant contribution to the project, IOHK has paused its collaboration on IELE to focus on other priorities for the time being , but is enthusiastic about potentially returning to the project in the future.


Medusa

github.com/input-output-hk/plutus

View historical and real-time GitHub commits


Explore