2022-07-14 21:06:12 +05:30
2022-06-20 07:51:53 +05:30
2022-06-10 06:53:28 +05:30
2022-06-20 07:51:53 +05:30

Hot Pocket developer toolkit

Developer toolkit for Hot Pocket smart contract development. This toolkit makes use of Docker to provide a cross-platform development tools for developers. Using the toolkit, developers can spin-up local Hot Pocket clusters on their developer machines and test Hot Pocket smart contracts.

We use Docker containers to run Hot Pocket and smart contracts in a Linux environment. We also use Docker containers to distribute developer tools so developers can use the tools on any platform as long as they install Docker.

image

Public documentation

Available here

Prerequisites

Docker build

Docker image containing cross-platform cluster management scripts.

Local build

cd docker
docker build -t evernodedev/hpdevkit .

Push to Docker hub

docker push evernodedev/hpdevkit

Run

docker run -it --rm --mount type=bind,src=/var/run/docker.sock,dst=/var/run/docker.sock evernodedev/hpdevkit cluster create 2

Windows build

Contains windows launcher scripts. Written using powershell and compiled to exe using ps2exe.

Prerequisites

Install-Module ps2exe

Powershell script usage

# Deploy contract to single-node cluster.
.\hpdevkit.ps1 deploy <contract files directory>

# Stop and cleanup everything (required for changing cluster size)
.\hpdevkit.ps1 clean

# Use different cluster size.
$env:HP_CLUSTER_SIZE = 3
.\hpdevkit.ps1 deploy <contract files directory>

# Look at specific node's logs.
.\hpdevkit.ps1 logs <node number>

# Start/stop all nodes.
.\hpdevkit.ps1 start
.\hpdevkit.ps1 stop

# Start/stop specific node.
.\hpdevkit.ps1 start <node number>
.\hpdevkit.ps1 stop <node number>

If the contract files directory also contains a file named hp.cfg.override, it will be used to override the hp.cfg of all nodes. This can be used to set contract specific parameters like 'bin_path' and 'bin_args'

Example hp.cfg.override for a nodejs application:

{
    "contract": {
        "bin_path": "/usr/bin/node",
        "bin_args": "app.js"
    }
}

Code generator

# Generate nodejs starter contract project
.\hpdevkit.ps1 gen nodejs starter-contract <project name>

Generate executable

cd windows
Invoke-ps2exe .\hpdevkit.ps1 hpdevkit.exe

The executable can be distributed to be run as a CLI tool on developer machine.

Environment variables

Name Description Default value
HP_CLUSTER_SIZE Number of nodes in the cluster. Applied with 'deploy' command. 1
HP_DEFAULT_NODE The node the 'deploy' command uses to display logs. 1
HP_DEVKIT_IMAGE Docker image to be used for devkit cluster management. evernodedev/hpdevkit
HP_INSTANCE_IMAGE Docker image to be used for Hot Pocket instances. evernodedev/hotpocket:latest-ubt.20.04-njs.16
Description
Developer toolkit for Hot Pocket smart contract development.
Readme 483 KiB
Languages
JavaScript 80.8%
Shell 17.8%
Dockerfile 1.4%