Setup a Local Node

Installing Substrate Dependencies

Substrate is a modular framework that enables you to create purpose-built blockchains by composing custom or pre-built components. Below is a markdown document that you can use as a template for creating a guide on installing Substrate dependencies.

1. Install Rust

Substrate is developed using Rust; hence, Rust is a prerequisite for Substrate. Install Rust using rustup by running the following command in your terminal:

curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh

After completing the installation, restart your terminal and run:

source $HOME/.cargo/env

Or, add the following line to your shell profile file (e.g., ~/.bashrc or ~/.zshrc):

export PATH=$HOME/.cargo/bin:$PATH

Update Rust

Keep your Rust installation up to date by running:

rustup update

2. Install Additional Libraries

Substrate has several library dependencies. Install them using the appropriate commands for your operating system:

For Ubuntu

sudo apt update
sudo apt install -y cmake pkg-config libssl-dev git build-essential clang libclang-dev

For macOS

brew install cmake pkg-config openssl git llvm

3. Install Substrate

With Rust and the necessary libraries installed, proceed to install Substrate:

curl https://getsubstrate.io -sSf | bash -s -- --fast

4. Verify Installation

Check your Substrate installation by running:

substrate --version

This command should output the installed Substrate version.

5. Configure Rust Toolchain

Configure the Rust toolchain for Substrate by running:

rustup default nightly
rustup target add wasm32-unknown-unknown --toolchain nightly

Completion

At this point, you should have a working Substrate development environment. Regularly check for updates and keep your installations current by running rustup update and cargo update.

Remember to replace the placeholder text with the actual content, and feel free to modify the structure and formatting to suit your preferences and requirements.

Start the Magnet Node

To start Magnet, you will need a proper Substrate development environment.

If you need a refresher setting up your Substrate environment, see Substrate's Getting Started Guide.

I. Launching the Local Relay Chain

Using the custom-spec-raw.json file provided by substrate.

1.Build the relay chain node

Clone the most recent release branch of the Polkadot repository to prepare a stable working environment.

git clone --branch release-v1.1.0 https://github.com/paritytech/polkadot-sdk.git

Change to the root of the polkadot directory by running the following command:

cd polkadot

Build the relay chain node by running the following command:

cargo build --release

Compiling the node can take 15 to 60 minuets to complete.

Verify the node built correctly by running the following command:

./target/release/polkadot --help

If command-line help is displayed, the node is ready to configure.

2. Create the First Node

nohup ./target/release/polkadot --alice --validator --chain custom-spec-raw.json --port 30333 --rpc-port 9944  --rpc-cors all --unsafe-rpc-external >alice.log 2>&1 &

3. Create the Second Node

nohup ./target/release/polkadot --bob --validator --chain custom-spec-raw.json --port 30334 --rpc-port 9945 --rpc-cors all --unsafe-rpc-external >bob.log 2>&1 &

II. Connecting to the Local Parachain

1. Build the Magnet Node from Source Code

This method involves cloning the Magnet project repository from GitHub and compiling the project using Cargo, the package manager and build tool for Rust. Follow these steps:

# Clone the repository
git clone https://github.com/Magport/Magnet.git

# Navigate to the project directory
cd Magnet

# Build the project using Cargo
cargo build --release

Compiling the node may take about 30 minutes to complete, depending on your system's performance.

2. Run the Pre-Compiled Executable from GitHub

If you prefer not to build from source, you can directly download the pre-compiled executable file of the Magnet node from GitHub. This is usually faster as it bypasses the compilation process. Follow these steps:

  1. Visit the Magnet project's GitHub releases page: Magnet Releases .

  2. Select the latest version and download the pre-compiled executable suitable for your operating system.

  3. After downloading, you may need to grant execution permissions to the file, depending on your operating system. On Linux or macOS, you can use the following command:

chmod +x magnet_executable # Replace with the actual name of the downloaded file
  1. Run the executable to start the Magnet node:

./magnet_executable # Replace with the actual name of the downloaded file

3. Create a new paraid in the browser

  • c. Choose an account and submit.

  • d. The registered paraid for this session is 2000.

4. Modify the Default Chain Specification

  • a. Generate the default chain specification:

./target/release/parachain-magnet-node build-spec --disable-default-bootnode >magnet-2000.json

Modify the magnet-2000.json file, change para_id to 2000 and parachainid to 2000.

  • b. Convert the spec file to a raw file:

./target/release/parachain-magnet-node build-spec --disable-default-bootnode --chain magnet-2000.json --raw>raw-magnet-2000.json

5. Prepare the Parachain Collator

  • a. Export the wasm file:

./target/release/parachain-magnet-node export-genesis-wasm --chain raw-magnet-2000.json magnet-2000-wasm
  • b. Generate the genesis state of the parachain:

./target/release/parachain-magnet-node export-genesis-state --chain raw-magnet-2000.json magnet-2000-state
  • c. Start the collator node:

nohup ./target/release/parachain-magnet-node --alice --collator --force-authoring --chain raw-magnet-2000.json --base-path ./alice --port 40333 --rpc-port 8844 --rpc-cors all --unsafe-rpc-external -- --execution wasm --chain ../polkadot-sdk/rococo/raw-rococo-local.json  --port 30343 --rpc-port 9977 > magnet-2000.log 2>&1 &

6. Register on the Local Relay Chain

7. Test Parachain Block Production

Using polkadot.js, connect to port 8844, initiate a transfer, and verify that blocks are generated as expected.

Last updated