Let's say I have a Plutus contract written up. How do I actually submit it to the blockchain and start interacting with it?
The plutus contract that you have written is in template haskell. Now to convert this to something that can be used on chain one needs to compiled it to plutus core.
From an educational point of view I'll explain how this is done with a concrete example. Take for example the lobster smart contract's used in naming the lobster . Note that this project folder structure contains at least the following 3 files,
- A main.hs residing in
- A smart contract residing in
Now what are those files? The
.cabal file is a configuration file that tells the compiler how to build the general haskell program at hand. If you look in it you will see all the dependencies listed for building something to plutus core. Also in the end of this file there are three executable defines, that of the 3 yet to build contracts. Now in this file is also a reference to the smart contact in the
./src/... path. Lastly the
.cabal file also references the
main.hs files for each of those 3 to build contract. If we look into that
main.hs file it is some general format that tells the compiler exactly how to compile the plutus script to plutus core (and the serialization of that).
So now you can test it out! Git clone this repo and type
cabal run all to build all 3 contracts or
cabal run "a name of a executable" as defined at the end of the .cabal file. This will result in 3 contracts in the /scripts/ directory. Note that building this has to be done with ghc version 8.10.4.
Hopes this helps.
As Fermat said, you can follow the lobster example.
Another option is the Exercise 4 of Alonzo-testnet. Exercise 4 - Solution
There you can find:
- Compile hs file
- Build script address
- Build transactions to interact with the validator script
- Sign transactions
- Submit transactions