Skip to content

Instantly share code, notes, and snippets.

@harish551
Last active June 7, 2021 05:00
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save harish551/039a3cd0b717529becd11a1d7d84a12a to your computer and use it in GitHub Desktop.
Save harish551/039a3cd0b717529becd11a1d7d84a12a to your computer and use it in GitHub Desktop.

Run Sifchain Node on Akash DeCloud


Prerequisites

  1. Go (install go)
  2. Akash
  3. Docker (optional) - (install docker ubuntu / debian)

Check Akash Networks info at https://raw.githubusercontent.com/ovrclk/net

This guide is using akash mainnet

Overview

  1. Install Akash
  2. Setup Akash Wallet
  3. Build Sifnode Docker Image (Optional)
  4. Prepare Deploy configuration file
  5. Deployment creation
  6. Check node running status

1). Install Akash

#Akash Mainnet
AKASH_NET="https://raw.githubusercontent.com/ovrclk/net/master/mainnet"
#Choose version
AKASH_VERSION="$(curl -s "$AKASH_NET/version.txt")"

#Install From source (requires go1.16+ installation)

go get -d github.com/ovrclk/akash
cd $GOPATH/src/github.com/ovrclk/akash
git checkout "v$AKASH_VERSION"
make deps-install
make install

(or)
#Download from akash releases page
wget https://github.com/ovrclk/akash/releases/download/v${AKASH_VERSION}/akash_${AKASH_VERSION}_linux_amd64.deb
sudo dpkg -i akash_${AKASH_VERSION}_linux_amd64.deb

(or)

#install using godownloader
curl https://raw.githubusercontent.com/ovrclk/akash/master/godownloader.sh | sh -s -- "v$AKASH_VERSION"

akash will be installed at $GOPATH/bin/akash or /usr/local/bin/akash

#check version
akash version

To install go1.16+ check here

2). Setup Wallet

# come back to home directory
cd ~/

#Create Akash wallet using below command and save mnemonic phrase at safe place

akash keys add mykey

(or)
#Recover your account with previous mnemonic 

akash keys add mykey --recover

#Buy Tokens and Transfer some AKT to above generated address
#make sure you have more than 5AKT 

#Check balance 
#Taking RPC node address directly from akash net repo
AKASH_NODE="$(curl -s "$AKASH_NET/rpc-nodes.txt" | shuf -n 1)" 

akash bank balances <your_wallet_address> --node $AKASH_NODE

3). Build Sifnode Docker Image (requires docker)

This step is optional - you can use pre-built docker image harish1551/sifchain-node:latest

git clone https://github.com/harish551/sifchain-node-docker.git && cd sifchain-node-docker

build docker image using Dockerfile

docker build -t <image-name:image-tag> -f Dockerfile .

This command will take few minutes

Upload docker image to your docker hub

docker login
docker tag <source_image>:<tag> <repo-name>/<image-name>:<tag>
docker push <repo-name>/<image-name>:<tag>

4). Prepare Deployment Configuration File

mkdir -p ~/deploy-sifnode && cd ~/deploy-sifnode

Create deploy-sifnode.yml file with below configuration

deploy-sifnode.yml

---
version: "2.0"
services:
  sifnode:
    image: harish1551/sifchain-node:latest
    expose:
      - port: 26656
        as: 26656
        to:
          - global: true
      - port: 26657
        as: 80
        to:
          - global true
      - port: 1317
        as: 1317
        to:
          - global true
    environment:
      CHAIN_ID: sifchain
      MONIKER: sifnode-akash-1
      PERSISTENT_PEERS: 0d4981bdaf4d5d73bad00af3b1fa9d699e4d3bc0@44.235.108.41:26656,bcc2d07a14a8a0b3aa202e9ac106dec0bef91fda@13.55.247.60:26656,663dec65b754aceef5fcccb864048305208e7eb2@34.248.110.88:26656,0120f0a48e7e81cc98829ef4f5b39480f11ecd5a@52.76.185.17:26656,6535497f0152293d773108774a705b86c2249a9c@44.238.121.65:26656,fdf5cffc2b20a20fab954d3b6785e9c382762d14@34.255.133.248:26656,8c240f71f9e060277ce18dc09d82d3bbb05d1972@13.211.43.177:26656,9fbcb6bd5a7f20a716564157c4f6296d2faf5f64@18.138.208.95:26656
      GENESIS_URL: https://raw.githubusercontent.com/Sifchain/networks/master/mainnet/sifchain/genesis.json
      GAS_PRICE: 0.1rowan

profiles:
  compute:
    sifnode:
      resources:
        cpu:
          units: 1
        memory:
          size: 2Gi
        storage:
          size: 30Gi
  placement:
    dc1:
      attributes:
        datacenter: equinix-metal-ewr1
      signedBy:
       anyOf:
        - "akash1365yvmc4s7awdyj3n2sav7xfx76adc6dnmlx63"
      pricing:
        sifnode: 
          denom: uakt
          amount: 5
deployment:
  sifnode:
    dc1:
      profile: sifnode
      count: 1    
    

if you want to use your own docker image change image: <your docker image> set MONIKER and GAS_PRICES

Using

  • 1 CPU
  • 2GB RAM
  • 30GB Storage With price 5uakt per block

That means

1AKT = 10^6 uakt Daily Blocks ~ 14000 (blocktime - 6.18 sec) Per Day Cost ~ 140005 = 70000uakt (0.07AKT) ~ $0.21 Per Month Cost ~ 7000030 = 2100000 (2.1AKT) ~ $6.3

You should use your node specification recommended by Sifchain network

5). Deployment Creation

setup akash environment

# mainnet
AKASH_NET="https://raw.githubusercontent.com/ovrclk/net/master/mainnet"
AKASH_NODE="$(curl -s "$AKASH_NET/rpc-nodes.txt" | shuf -n 1)"
AKASH_CHAIN_ID="$(curl -s "$AKASH_NET/chain-id.txt")"
AKASH_ACCOUNT_ADDRESS=<your wallet address>
AKASH_KEY_NAME=<your wallet-key name>

Create Certificate

akash tx cert create client \
--chain-id $AKASH_CHAIN_ID \
--from $AKASH_KEY_NAME \
--node $AKASH_NODE \
--fees 500uakt

Create Deployment

akash tx deployment create deploy-sifnode.yml \
--from $AKASH_KEY_NAME \
--node $AKASH_NODE \
--chain-id $AKASH_CHAIN_ID \
--fees 500uakt \
-b sync -y

Query Transaction

use 'txHash' from above response

akash q tx <txHash> --node $AKASH_NODE

Copy Required Variables

AKASH_DSEQ=<DSEQ value from above response>
AKASH_OSEQ=1
AKASH_GSEQ=1
echo $AKASH_DSEQ $AKASH_OSEQ $AKASH_GSEQ

Verify Deployment

akash query deployment get --owner $AKASH_ACCOUNT_ADDRESS \
--node $AKASH_NODE --dseq $AKASH_DSEQ

View Order

akash query market order get --node $AKASH_NODE \
--owner $AKASH_ACCOUNT_ADDRESS --dseq $AKASH_DSEQ \
--oseq $AKASH_OSEQ --gseq $AKASH_GSEQ

View Bids

akash query market bid list --owner=$AKASH_ACCOUNT_ADDRESS \
 --node $AKASH_NODE --dseq $AKASH_DSEQ

Choose Bid by Selecting a Provider

AKASH_PROVIDER=<selected provider address from above bids>

Create Lease

akash tx market lease create --chain-id $AKASH_CHAIN_ID \
--node $AKASH_NODE --owner $AKASH_ACCOUNT_ADDRESS \
--dseq $AKASH_DSEQ --gseq $AKASH_GSEQ --oseq $AKASH_OSEQ \
--provider $AKASH_PROVIDER --from $AKASH_KEY_NAME --fees 500uakt

List Leases

akash query market lease list \
--owner $AKASH_ACCOUNT_ADDRESS \
--node $AKASH_NODE \
--dseq $AKASH_DSEQ

Upload Manifest

akash provider send-manifest deploy-sifnode.yml \
--node $AKASH_NODE \
--dseq $AKASH_DSEQ \
--provider $AKASH_PROVIDER \
--from $AKASH_KEY_NAME

You should get empty response for successful execution

Check Lease Status

akash provider lease-status \
--node $AKASH_NODE \
--dseq $AKASH_DSEQ \
--from $AKASH_KEY_NAME \
--provider $AKASH_PROVIDER

copy host addresses and external ports from above response

HOST=<host address from above response>

Check Logs

akash provider lease-logs \
--node "$AKASH_NODE" \
--dseq "$AKASH_DSEQ" \
--gseq "$AKASH_GSEQ" \
--oseq "$AKASH_OSEQ" \
--provider "$AKASH_PROVIDER" \
--from "$AKASH_KEY_NAME"

You should get logs of sifnode blocks

6). Check Node Status

To check rpc node status - request address of akash host of your deployment

curl -s http://${HOST}

...

Know more about sifchain & Akash

Sifchain

  1. Official Website - https://sifchain.finance/
  2. Github Source Code - https://github.com/Sifchain/sifnode
  3. Block Explorer - https://blockexplorer.sifchain.finance/

Akash

  1. Official Website - https://akash.network
  2. Documentation - https://docs.akash.network
  3. Github - https://github.com/ovrclk/
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment