Lecture notes based on the first ever official Plutus-Pioneer program. This notes follow the YouTube lecture 2.
Before getting started you should clone the Plutus repository into your local machine. To follow this guide first create a master directory. Inside this directory we will clone both the main Plutus and the Plutus-Pioneer repo.
$ mkdir Cardano-King && cd Cardano-King
$ git clone https://github.com/input-output-hk/plutus.git
$ git clone https://github.com/input-output-hk/plutus-pioneer-program.git
- [Get started with the cabal repl] (<#secc:get-started>)
- Implement our first validator
Since we are not installing cabal locally, bacause it is much more convenient to use it from nix-shell (this is included in Nix), we will navigate to the plutus-pioneer/week02 git-cloned repo inside a nix environment. However, nix must be started first from the plutus root repo.
$ cd ./plutus/
$ nix-shell
nix$ cd ../plutus-pioneer-program/code/week02
nix$ cabal repl
Now we are isnide the cabal repl (takes a while the first time). Its time to test some varaibles defined in the plutus libraries that eventually we will get very familiar with
repl$ import PlutusTx
Some examples seeing the type of Data and create bite-string on the fly (use literal strings to create byte strings), and then test it (:t B ...
)
repl$ :i Data
repl$ :set -XOverloadedStrings ## allows to include extremely large strings (literal-string to byte-strings)
repl$ :t B "Haskellanians"
Start a Haskell module "Week02.Gift" where the script imports all the necessary language extensions that plutus needs. (first 8 lines {-#...#-}
) and other modules that we refer to (lines 12-28) from the ./week01/EnglishAuction.hs
script.
Go back to the repl and load Gift.hs. Then we will see what a Monoid in haskell ()
repl$ :l ./src/Week02/Gift.hs
repl$ :t ()
We can open Gift.hs in a text editor and see that lines 31-35 contain the implementation of Monoid referring to the [#secc:get-sstarted] section above.