- Part 1 - Welcome and Introduction
- Part 2 - The EUTxO-Model
- Part 3 - Building the Example Code
- Part 4 - Auction Contract in the EUTxO-Model
- Part 5 - Auction Contract on the Playground
- Part 6 - Homework
- Part 1 - Triggering Change
- Part 2 - Low Level, Untyped Validation Scripts
- Part 3 - High Level, Typed Validation Scripts
- Part 4 - Summary
- Part 5 - Homework
- Part 1 - Configuring Playground Time Out
- Part 2 - Script Contexts
- Part 3 - Handling Time
- Part 4 - A Vesting Example
- Part 5 - Parameterized Contracts
- Part 6 - Deploying to the Cardano Testnet
- Part 7 - Homework
- Part 8 - Summary
- Part 1 - Introduction
- Part 2 - Monads
- Part 3 - The EmulatorTrace Monad
- Part 4 - The Contract Monad
- Part 5 - Homework & Summary
- Part 1 - Start
- Part 2 - Values
- Part 3 - A Simple Minting Policy
- Part 4 - A More Realistic Minting Policy
- Part 5 - NFT's
- Part 6 - Homework
- Part 1 - Introduction
- Part 2 - The Minting Policy
- Part 3 - Minting with the CLI
- Part 4 - Deployment Scenarios
- Part 5 - The Contracts
- Part 6 - Minting with the PAB
- Part 7 - Summary
- Part 1 - Introduction
- Part 2 - Commit Schemes
- Part 3 - Implementation without State Machines
- Part 4 - State Machines
- Part 5 - Homework
- Part 1 - Introduction
- Part 2 - Another State Machine Example: Token Sale
- Part 3 - Automatic Testing using Emulator Traces
- Part 4 - Test Coverage
- Part 5 - Interlude: Optics
- Part 6 - Property-Based Testing with QuickCheck
- Part 7 - Property-Based Testing of Plutus Contracts
- Part 8 - Homework
- Part 1 - Introduction
- Part 2 - Simon Thompson: Marlowe Overview
- Part 3 - Alexander Nemish: Marlowe in Plutus
- Part 4 - Brian Bush: The Marlowe CLI
- Part 5 - Marlowe Playground Demo
- Part 6 - Homework
- Part 1 - Introduction
- Part 2 - The Private Testnet
- Part 3 - Plutus & Staking
- Part 4 - Trying it on the Testnet
- Part 5 - Conclusion
- Lecture #1: English Auction
- Lecture #2: Simple Validation
- Lecture #3: Script Contexts & Parameterized Contracts
- Lecture #4: Monads, Traces & Contracts
- Lecture #5: Native Tokens
- Lecture #6: Deployment
- Lecture #7: State Machines
- Lecture #8: Testing
- Lecture #9: Marlowe
- Lecture #10: Staking
-
Week #1
- Clone the The Plutus-Apps repository, check out the correct commit as specified in cabal.project.
- Install NixOS cross-referencing the following resources.
- https://nixos.org/download.html
- https://docs.plutus-community.com
- A few resources to understand the what and why regarding NixOS
- Set-up IOHK binary caches How to set up the IOHK binary caches. "If you do not do this, you will end up building GHC, which takes several hours. If you find yourself building GHC, stop and fix the cache."
- Enter a
nix-shell
. - Build the English Auction contract with
cabal build
(you may need to runcabal update
first). - Go to the
plutus-playground-client
folder in theplutus-apps
repository. - Start the Playground server with
plutus-playground-server
. - Start the Playground client (in another
nix-shell
) withnpm start
. - Copy-paste the auction contract into the Playground editor, do not forget to remove the module header.
- Compile.
- Simulate various auction scenarios.
-
Week #2
-
Week #3
-
Week #4
- Implement function
payTrace
in the Homework module. - Handle exceptions thrown by
submitTx
in functionpayContract
in the same module.
- Implement function
-
Week #5
-
Week #6
- Try to replicate what is done in the lecture - minting tokens with the
cardano-cli
and the PAB.
- Try to replicate what is done in the lecture - minting tokens with the
-
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.
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 usingQuickCheck
.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 likeData
andBuiltinData
.PlutusTx.IsData.Class
, contains theToData
andFromData
classes and related functions.Wallet.Emulator
, contains types and functions for dealing with wallets.
- The Plutus repository
- The Plutus-Apps repository
- Learn You a Haskell for Great Good: original, remastered and interactive notebook
- Haskell & Cryptocurrencies course Mongolia
- Private Testnet Setup