Rapid dAPP Prototyping on ARK Blockchain with Node-Red

This tutorial will show how to setup a Node-Red development environment to prototype dAPPs running on the ARK Public Blockchain Network or an ARK Bridgechain. The ARK Typescript SDK will be used to interact with the blockchain however ARK also provides an extensive SDK available in 6 programming languages.

The ARK Public Network powered by ARK Core uses DPoS(delegated proof of stake) consensus, making it one of the fastest, efficient, and scalable Blockchain networks available.
ARK has created a suite of easy to use open source wallets and tools which make it easy to launch your own sovereign blockchain(referred to as a Bridgechain) based on their core technology. ARK’s Deployer tool removes the heavy lifting making the deployment of your blockchain simple and quick.

Basic knowledge of Linux and Node-Red is assumed however I have tried to provide as much detail as possible to make protoyping very accessible. The ARK SDK will be accessed via a Node-Red fuction node. Small snippets of Javascript will be used. High level familiarity with Javascript is useful however it is not required to be an experienced developer.

This guide is written for installation on Raspberry Pi 4 running Ubuntu 21.10 however setup would be nearly identical on a basic VPS. A $5/month VPS from Digital Ocean would be sufficient for this project.

I have previously published a guide for using Node-Red to read blockchain data via the ARK REST API. It might be useful to go through that tutorial prior to this one.

Table of Contents

    1. Install Ubuntu Server 21.10

    See this guide for a secure basic installation of Ubuntu 21.10.

    2. Install Node-Red (Tested with Version 2.1.4)

    See this guide for installation of Node-Red

    3. Install Ark Core Crypto and Client Modules

    The SDK consists of 2 parts. The Client module is used for reading and writing from the blockchain. The Crypto module is used for creating transactions and other functions such as message signing.
    The following steps are used to download the SDK for a Version 3.0 ARK blockchain.

    1. Change to Node-Red directory in user account(not root)
      cd ~/.node-red
    2. Install @arkecosystem/crypto NodeJS module
      npm install @arkecosystem/crypto
    3. Install @arkecosystem/client NodeJS module
      npm install @arkecosystem/client

    4. Install Additional Node-Red Nodes

    1. Install node-red-contrib-config Node. This node is used for setting flow and global context values at start up.
      npm install node-red-contrib-config
    2. Restart Node-Red
      node-red-restart

    5. Create ARK Devnet Wallet

    The example flow provided in step 6 include private passphrase for a wallet that can be used for testing on the ARK Devnet(Development). Including wallet keys like this is of course a terrible thing to do when securing cryptocurrency assets for a “real” network.

    It is easy to get ARK devnet tokens for your own wallet. Create a devnet wallet in the ARK Wallet and you can go to the official ARK discord to get test tokens via a faucet.

    ARK Devnet Test Wallet:
    Address: DPC85FDUbhM6QepPEjW7Soprujq1Nz2BqA
    Public Key: 0376690fba1b908459d4d4fcf63b1e52b788c46fc32165b909404baba9d03dd3c4
    Private Passphrase: group evolve roast cattle vessel tray clump calm practice velvet awake cream

    6. Importing Node-Red Example Flow

    If you are new to Node-Red then I recommend starting with this tutorial to learn about the development environment with some basic examples.
    https://nodered.org/docs/tutorials/first-flow

    I have created an example flow that configures the ARK SDK for the ARK Devnet chain and provides a template showing how to use common blockchain functions.

    Download this example flow from the following link and import it into Node-Red:
    https://gateway.pinata.cloud/ipfs/QmaYuX8kroCqyBZWdcTA4emosk5syY5EsgMwDmZNnNoan8

    Use this guide for help with importing flows.
    https://nodered.org/docs/user-guide/editor/workspace/import-export

    7. Example Flow Tutorial

    The example flow will look like the following:
    Functions are labeled with a number for easy reference in the rest of this guide.

    Node-Red ARK Blockchain SDK example Flow

    Functions

    1. Configure Blockchain Relay Node IP address
    2. Configure Sender Wallet Passphrase, Address, TX fee
    3. Configure Explorer URL
    4. Configure Recipient Address
    5. Network Configuration that runs automatically at start of script
    6. Retrieves Relay Node’s status
    7. Retrieve list of other peers
    8. Get Nonce of the sender wallet
    9. Send standard transaction
    10. Send IPFS transaction
    11. Check for Valid wallet address
    12. Sign message using ECDSA and Verify
    13. Sign message using Schnorr and Verify