From 3811d0f791385695f939f2b03dcd1e411afaadd3 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Lars=20Br=C3=BCnjes?= Date: Tue, 29 Jun 2021 20:19:13 +0200 Subject: [PATCH] updated README --- README.md | 159 ++---------------------------------------------------- 1 file changed, 4 insertions(+), 155 deletions(-) diff --git a/README.md b/README.md index bbf3e15..0d57c16 100644 --- a/README.md +++ b/README.md @@ -2,177 +2,34 @@ ## Lectures -- [Lecture #1](https://youtu.be/IEn6jUo-0vU) +- [Lecture #1](https://youtu.be/_zr3W8cgzIQ) - Welcome - The (E)UTxO-model + - An auction contract in the EUTxO-model - Running an example auction contract on a local Playground - Homework -- [Lecture #2](https://youtu.be/E5KRk5y9KjQ) - - - Triggering change. - - Low-level, untyped on-chain validation scripts. - - High-level, typed on-chain validation scripts. - -- [Lecture #3](https://youtu.be/Lk1eIVm_ZTQ) - - - Script context. - - Time handling. - - Parameterized contracts. - -- [Lecture #4](https://youtu.be/6Reuh0xZDjY) - - - Monads - - The `EmulatorTrace` monad. - - The `Contract` monad. - -- [Lecture #5](https://youtu.be/6VbhY162GQA) - - - Values. - - Native tokens & minting policies. - - NFT's. - -- [Lecture #6](https://youtu.be/wY7R-PJn66g) - - - Oracles. - - Using the PAB. - -- [Lecture #7](https://youtu.be/oJupInqvJUI) - - - Commit schemes. - - State machines. - -- [Lecture #8](https://youtu.be/JMRwkMgaBOg) - - - 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](https://youtu.be/-RpCqHuxfQQ) - - - Marlowe overview ([slides](Marlowe_Plutus_Pioneers_June_2021.pdf)). - - Marlowe in Plutus. - - Marlowe Playground demo. - -- [Lecture #10](https://youtu.be/Dg36h9YPMz4) - - - Uniswap overview. - - Uniswap implementation in Plutus. - - Deploying Uniswap with the PAB. - - Demo. - - Using `curl` to interact with the PAB. - ## Code Examples - Lecture #1: [English Auction](code/week01) -- Lecture #2: [Simple Validation](code/week02) -- Lecture #3: [Validation Context & Parameterized Contracts](code/week03) -- Lecture #4: [Monads, `EmulatorTrace` & `Contract`](code/week04) -- Lecture #5: [Minting Policies](code/week05) -- Lecture #6: [Oracles](code/week06) -- Lecture #7: [State Machines](code/week07) -- Lecture #8: [Testing](code/week08) -- Lecture #9: [Marlowe](code/week09) -- Lecture #10: [Uniswap](code/week10) ## Exercises - Week #1 - - Build the [English Auction](code/week01) contract with `cabal build` (you may need to run `cabal update` first). - Clone the [The Plutus repository](https://github.com/input-output-hk/plutus), check out the correct commit as specified in [cabal.project](code/week01/cabal.project). - Set-up IOHK binary caches [How to set up the IOHK binary caches](https://github.com/input-output-hk/plutus#iohk-binary-cache). "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](code/week01) contract with `cabal build` (you may need to run `cabal update` first). - Go to the `plutus-playground-client` folder. - Start the Playground server with `plutus-playground-server`. - Start the Playground client (in another `nix-shell`) with `npm run start`. - - Copy-paste the auction contract into the Playground editor - don't forget to remove the module header! + - Copy-paste the auction contract into the Playground editor. - Compile. - Simulate various auction scenarios. -- Week #2 - - - Fix and complete the code in the [Homework1](code/week02/src/Week02/Homework1.hs) module. - - Fix and complete the code in the [Homework2](code/week02/src/Week02/Homework2.hs) module. - -- Week #3 - - - Fix and complete the code in the [Homework1](code/week03/src/Week03/Homework1.hs) module. - - Fix and complete the code in the [Homework2](code/week03/src/Week03/Homework2.hs) module. - -- Week #4 - - - Write an appropriate `EmulatorTrace` that uses the `payContract` contract in the [Homework](code/week04/src/Week04/Homework.hs) module. - - Catch errors in the `payContract` contract in the same module. - -- Week #5 - - - Add a deadline to the minting policy in the [Homework1](code/week05/src/Week05/Homework1.hs) module. - - Fix the token name to the empty `ByteString` in the NFT contract in the [Homework2](code/week05/src/Week05/Homework2.hs) 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 (including the NFT). - - 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. - -## Solutions - -- Week #2 - - - [`Homework1`](code/week02/src/Week02/Solution1.hs) - - [`Homework2`](code/week02/src/Week02/Solution2.hs) - -- Week #3 - - - [`Homework1`](code/week03/src/Week03/Solution1.hs) - - [`Homework2`](code/week03/src/Week03/Solution2.hs) - -- Week #4 - - - [`Homework`](code/week04/src/Week04/Solution.hs) - -- Week #5 - - - [`Homework1`](code/week05/src/Week05/Solution1.hs) - - [`Homework2`](code/week05/src/Week05/Solution2.hs) - -- Week #7 - - - [`RockPaperScissors`](code/week07/src/Week07/RockPaperScissors.hs) - - [`TestRockPaperScissors`](code/week07/src/Week07/TestRockPaperScissors.hs) - -- Week #8 - - - [`TokenSaleWithClose`](code/week08/src/Week08/TokenSaleWithClose.hs) - - [`ModelWithClose`](code/week08/test/Spec/ModelWithClose.hs) - - [`TraceWithClose`](code/week08/test/Spec/TraceWithClose.hs) - -- Week #9 - - - [`solution`](code/week09/app/solution.hs) - ## Some Plutus Modules - [`Language.Marlowe.Semantics`](https://github.com/input-output-hk/plutus/blob/master/marlowe/src/Language/Marlowe/Semantics.hs), contains Marlowe types and semantics. @@ -190,14 +47,6 @@ - [`PlutusTx.Data`](https://github.com/input-output-hk/plutus/blob/master/plutus-tx/src/PlutusTx/Data.hs), contains the definition of the `Data` type. - [`PlutusTx.IsData.Class`](https://github.com/input-output-hk/plutus/blob/master/plutus-tx/src/PlutusTx/IsData/Class.hs), defines the `IsData` class. -## Plutus community playground - -- [Week 1 Community Playground(Legacy)](https://playground-week1.plutus-community.com/) -- [Week 2 Community Playground(Legacy)](https://playground-week2.plutus-community.com/) -- [Week 3 Community Playground(Current)](https://playground-week3.plutus-community.com/) -- [Week 4 Community Playground(Current)](https://playground.plutus-community.com/) - - ## Additional Resources - [The Plutus repository](https://github.com/input-output-hk/plutus)