Skip to content

Niols/plutus-pioneer-program

 
 

Repository files navigation

Plutus Pioneer Program

This clone of the official repository updates it to only contain the second iteration. It also includes the right version of Plutus to use the playground, as well as the right version of Plutus Apps to start a working nix-shell (the instructions in the lecture do not work on NixOS as of January 2022). Finally, this repository include two helper scripts, ./start-playground and ./enter-nix-shell doing exactly what their names suggest.

Lectures

  • Lecture #1

    • Welcome.
    • The (E)UTxO-model.
    • Building the example code.
    • An auction contract in the EUTxO-model.
    • A brief look at the auction code.
    • Running an example auction contract on a local Playground.
    • Homework.
  • Lecture #2

    • Triggering change.
    • Low-level, untyped on-chain validation scripts.
    • High-level, typed on-chain validation scripts.
  • Lecture #3

    • Script contexts.
    • Time handling.
    • Parameterized contracts.
  • Lecture #4

    • Monads.
    • The EmulatorTrace-monad.
    • The Contract-monad.
  • Lecture #5

    • Values.
    • Native Tokens.
    • NFT's.
  • Lecture #6

    • Oracles.
    • Using the PAB.
  • Lecture #7

    • Commit schemes.
    • State machines.
  • Lecture #8

    • Another state machine example: token sale.
    • Automatic testing using emulator traces.
    • Interlude: optics.
    • Property based testing with QuickCheck.
    • Testing Plutus contracts with property based testing.
  • Lecture #9

    • Marlowe overview (slides).
    • Marlowe in Plutus.
    • Marlowe Playground demo.
  • Lecture #10

    • Uniswap overview.
    • Uniswap implementation in Plutus.
    • Deploying Uniswap with the PAB.
    • Demo.
    • Using curl to interact with the PAB.

Code Examples

Exercises

  • Week #1

  • Week #2

    • Fix and complete the code in the Homework1 module.
    • Fix and complete the code in the Homework2 module.
  • Week #3

    • Fix and complete the code in the Homework1 module.
    • Fix and complete the code in the Homework2 module.
  • Week #4

    • Implement function payTrace in the Homework module.
    • Handle exceptions thrown by submitTx in function payContract in the same module.
  • Week #5

    • Add a deadline to the minting policy in the Homework1 module.
    • Fix the token name to the empty ByteString in the NFT contract in the Homework2 module.
  • Week #6

    • Get the Oracle demo running and extend it in some way.
  • Week #7

    • Implement the game of "Rock, Paper, Scissors" using state machines.
  • Week #8

    • Add a new operation close to the TokenSale-contract that allows the seller to close the contract and retrieve all remaining funds.
    • Modify the tests accordingly.
  • Week #9

    • Modify the example Marlowe contract, so that Charlie must put down twice the deposit in the very beginning, which gets split between Alice and Bob if Charlie refuses to make his choice.
  • Week #10

    • Get the Uniswap demo running and extend it in some way.

Some Plutus Modules

Additional Resources

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages

  • Parrot 61.8%
  • Haskell 19.2%
  • Nix 16.9%
  • PureScript 1.7%
  • SCSS 0.2%
  • JavaScript 0.1%
  • Other 0.1%