Plutus Pioneer Program

Lectures

Lecture #1

Lecture #2

Lecture #3

Lecture #4

Lecture #5

Lecture #6

Lecture #7

Lecture #8

Lecture #9

Lecture #10

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

    • Implement a Mary-era-style minting policy in the Homework1 module.
    • Fix the token name to the empty ByteString in the NFT contract in the Homework2 module.
  • Week #6

    • Try to replicate what is done in the lecture - minting tokens with the cardano-cli and the PAB.
  • 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 #9m

    • 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.

Some Plutus Modules

  • Ledger.Scripts, contains functions related to untyped Plutus scripts.
  • Ledger.Typed.Scripts, contains functions related to typed Plutus scripts.
  • Plutus.Contract, contains definitions and functions for writing offchain code.
  • Plutus.Contract.StateMachine, contains definitions and functions for working with state machines.
  • Plutus.Contract.Test, contains support for automatic tests.
  • Plutus.Contract.Test.ContractModel, contains support for automatic property-based tests using QuickCheck.
  • Plutus.V1.Ledger.Ada, contains definitions and functions related to ADA-values.
  • Plutus.V1.Ledger.Interval, contains the definition of intervals and functions for working with them.
  • Plutus.V1.Ledger.Value, contains definitions and functions related to values.
  • Plutus.V1.Ledger.Time, contains time-related types and functions.
  • PlutusTx, contains important types like Data and BuiltinData.
  • PlutusTx.IsData.Class, contains the ToData and FromData classes and related functions.
  • Wallet.Emulator, contains types and functions for dealing with wallets.

Additional Resources