Skip to content

This repository hosts an opshin/python implementation of the lectures of the Plutus Pioneers Program, a training course for Cardano Smart Contract Engineers.

License

Notifications You must be signed in to change notification settings

utilcoin/opshin-pioneer-program

 
 

Repository files navigation

Opshin Pioneer Program

This repository implements many educational Cardano Smart Contracts in Python using opshin. It also comes with off-chain code using PyCardano and a host of test cases to ensure high quality of the resulting contracts. Most of the code is in a similar format to the plutus-pioneer-program. Join the opshin discord server for Q/A and interact with other opshin pioneers!

Installation

  1. Install Python 3.9, 3.10 or 3.11 (if it not already installed on your operating system). Python3.11 Installer download.

  2. Install python poetry. Follow the official documentation here.

  3. Install a python virtual environment with poetry:

# clone the repository including the config submodule necessary for running the node
git clone --recurse-submodules -j8 https://github.com/OpShin/opshin-pioneer-program.git
cd opshin-pioneer-program

# Optional. Use a specific python version
# replace <version> with 3.8, 3.9, 3.10, or 3.11
# for this to work, python<version> must be accessible in your command line
# alternatively provide the path to your python executable
poetry env use <version>

# install python dependencies
poetry install

# run a shell with the virtual environment activated
poetry shell

# If you're not in a shell, you can run python scripts with `poetry run`
poetry run python <script-path>

Cardano Node and Ogmios

Quick setup

Simply run the following to use some publicly available nodes hosted by demeter.run. These nodes are already fully synced and ready to use. Note that as public endpoints, these nodes may be slow to respond and occasionally fail.

Note also that production environments should always host their own node in order to guard themselves from failures.

export OGMIOS_API_PROTOCOL=wss
export OGMIOS_API_HOST=ogmios-preview-api-public-e79b24.us1.demeter.run
export OGMIOS_API_PORT=443
export KUPO_API_PROTOCOL=https
export KUPO_API_HOST=kupo-preview-api-public-e79b24.us1.demeter.run
export KUPO_API_PORT=443
export CHAIN_BACKEND=kupo

If you want to host the node on your local computer, follow the steps in Local Setup

How to Follow the Pioneer Lectures and Code

As mentioned before, this repository follows the official Plutus Pioneer Program. The lectures/videos are the same as in the Plutus Pioneer Program. All covered contracts are (to be) implemented in OpShin in this repository. The repository contains presented contracts and empty files for homework in the main branch and a correct solution for homework in the solution branch.

Here's a rough mapping of the original lecture videos and what parts of this repository you can work on for each week. Some files may not be documented thoroughly so try to infer the purpose by referring the structure of the lectures.

This lecture is about alternative offchain solutions. We use pycardano, but you can compare and contrast alternatives.

This week introduces Marlowe. There won't be any relevant opshin code for this week.

Additional Material

Local setup

Minimum Specs for Preview Network:

  • 2 Core CPU
  • 4GB memory
  • 16GB free storage

First install Docker. Follow the official documentation here.

To start a Cardano Node and Ogmios API use docker-compose in your terminal:

# make sure your node configurations are up to date
git submodule update --init
# starts a cardano node and ogmios api on the preview testnet
docker compose up

You can then access the cardano-cli using the docker image:

docker run --rm -it \
  --entrypoint cardano-cli \
  -e CARDANO_NODE_SOCKET_PATH=/ipc/node.socket \
  -v opshin-pioneer-program_node-db:/data \
  -v opshin-pioneer-program_node-ipc:/ipc \
  inputoutput/cardano-node

Kupo (Optional)

Kupo is a database that supports fast queries to the Cardano blockchain. Although not needed for simple use cases, it can offer more speed in exchange for more storage and memory usage. This adds ~2GB storage and ~2GB memory on the preview network.

# starts the cardano node and ogmios with kupo (disabled by default)
docker compose --profile kupo up

# set the environment variable to use the ogmios + kupo backend
export CHAIN_BACKEND=kupo

You can check kupo synchronization by checking comparing the last slot number in http://localhost:1442/checkpoints to ogmios at http://localhost:1337/

About

This repository hosts an opshin/python implementation of the lectures of the Plutus Pioneers Program, a training course for Cardano Smart Contract Engineers.

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages

  • Python 95.7%
  • Shell 4.3%