Skip to content

Latest commit

 

History

History
102 lines (67 loc) · 3.16 KB

HACKING.md

File metadata and controls

102 lines (67 loc) · 3.16 KB

Hacking

This document explains how to run Juno locally.

Table of Contents

Local Development

Before you begin developing and contributing to Juno, ensure the following tools are installed on your machine:

Setting Up Your Environment

  1. Clone the repository and install dependencies:
git clone https://github.com/junobuild/juno
cd juno
npm ci

Running the Development Environment

  1. Start the emulator: This command runs a local emulator that replicates the behavior of the Internet Computer blockchain, deploying necessary smart contracts using a custom Docker image (repo) developed specifically for Juno.
npm run emulator
  1. Launch the front-end administration console: Open another terminal window and start the console, which is configured to interact with the emulator.
npm run dev

Tip

Both the emulator and the front-end server support live reloading, facilitating a smoother development experience.

Building the Modules

Note

In addition to Cargo, a few additional tools are required to build the modules. See Required Tools for details.

You can manually build the smart contracts using standard Rust and Cargo commands targeting wasm32-unknown-unknown. For example:

cargo build --target wasm32-unknown-unknown -p console --release

However, these commands do not instruct the emulator to redeploy the resulting builds. Therefore, to automate both build and deployment, we provide the following npm commands:

npm run build:console
npm run build:observatory
npm run build:satellite
npm run build:mission-control
npm run build:orbiter

Required Tools

The following additional tools are required when building the modules:

junobuild-didc

didc is required to generate Candid files.

cargo install junobuild-didc

candid-extractor

candid-extractor is needed to extract Candid interfaces. Install it with:

cargo install candid-extractor

wasi2ic

wasi2ic is required to convert the Wasm of the Sputnik crate for compatibility with the Internet Computer. This is necessary because this module must be built with the wasm32-wasip1 target.

cargo install wasi2ic

Useful Administration Commands

Here are a few commands that can be useful when developing and contributing to Juno:

Command Description
npm run ledger:transfer Transfer 55 ICP to a Mission Control (Wallet).