mirror of
https://github.com/FiloSpaTeam/plutus-pioneer-program.git
synced 2024-11-22 06:42:00 +01:00
updated README
This commit is contained in:
parent
47e0accd17
commit
3811d0f791
1 changed files with 4 additions and 155 deletions
159
README.md
159
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)
|
||||
|
|
Loading…
Reference in a new issue