Firmachain Firmachain - Mainnet
Chain ID: colosseum-1 Block Height: Loading...
RPC Status:

Network Overview

FirmaChain

FirmaChain is a blockchain platform merging utility and entertainment through decentralized applications, NFTs, and digital identity. It aims to advance Web 3.0 with user-friendly, scalable solutions for developers and validators in a multichain ecosystem.

https://rpc-firmachain.sychonix.com

https://api-firmachain.sychonix.com

Installation

  • Install Dependencies
sudo apt update && sudo apt upgrade -y
sudo apt install curl iptables build-essential git wget jq make gcc nano tmux htop nvme-cli pkg-config libssl-dev libleveldb-dev tar clang bsdmainutils ncdu unzip libleveldb-dev aria2 -y
  • Install Go
VER="1.21.6"
sudo rm -rf /usr/local/go
curl -Ls https://go.dev/dl/go$VER.linux-amd64.tar.gz | sudo tar -xzf - -C /usr/local
echo "export PATH=$PATH:/usr/local/go/bin:$HOME/go/bin" >> $HOME/.bash_profile
source $HOME/.bash_profile
go version
  • Install the Binary
cd && rm -rf firmachain
git clone https://github.com/firmachain/firmachain
cd firmachain
git checkout v0.3.5-patch
  • Initialize the Node
firmachaind config node tcp://localhost:11457
firmachaind config keyring-backend os
firmachaind config chain-id colosseum-1
firmachaind init "YourName" --chain-id colosseum-1
  • Download Genesis and Addrbook
curl -Ls https://snapshot.sychonix.com/mainnet/firmachain/genesis.json > $HOME/.firmachain/config/genesis.json
curl -Ls https://snapshot.sychonix.com/mainnet/firmachain/addrbook.json > $HOME/.firmachain/config/addrbook.json
  • Configure Seeds and Peers
sed -i -e 's|^seeds *=.*|seeds = "7b3251fa381f170365df33191cfa36b24c63821d@firmachain-mainnet.sychonix.com:11456,f89dcc15241e30323ae6f491011779d53f9a5487@mainnet-seed1.firmachain.dev:26656,04cce0da4cf5ceb5ffc04d158faddfc5dc419154@mainnet-seed2.firmachain.dev:26656,940977bdc070422b3a62e4985f2fe79b7ee737f7@mainnet-seed3.firmachain.dev:26656,20e1000e88125698264454a884812746c2eb4807@seeds.lavenderfive.com:16456,8542cd7e6bf9d260fef543bc49e59be5a3fa9074@seed.publicnode.com:26656,b85358e035343a3b15e77e1102857dcdaf70053b@seeds.bluestake.net:24156,931a7c680d28c84a8a53e4017a6eae0788ee7cf2@firmachain.ramuchi.tech:57656,35b9e0a0818d2c5e9ef187984872c0ad2dbd447c@firma.peer.stavr.tech:1036,637077d431f618181597706810a65c826524fd74@firmachain.rpc.nodeshub.online:16456"|' $HOME/.firmachain/config/config.toml
PEERS="$(curl -sS https://rpc-firmachain.sychonix.com/net_info | jq -r '.result.peers[] | "\(.node_info.id)@\(.remote_ip):\(.node_info.listen_addr)"' | awk -F ':' '{print $1":"$(NF)}' | sed -z 's|\n|,|g;s|.$||')"
sed -i.bak -e "s/^persistent_peers *=.*/persistent_peers = \"$PEERS\"/" $HOME/.firmachain/config/config.toml
  • Update Port Configuration
sed -i -e "s%:1317%:11417%; s%:8080%:11480%; s%:9090%:11490%; s%:9091%:11491%; s%:8545%:11445%; s%:8546%:11446%; s%:6065%:11465%" $HOME/.firmachain/config/app.toml
sed -i -e "s%:26658%:11458%; s%:26657%:11457%; s%:6060%:11460%; s%:26656%:11456%; s%:26660%:11461%" $HOME/.firmachain/config/config.toml
  • Customize Pruning
sed -i \
  -e 's|^pruning *=.*|pruning = "custom"|' \
  -e 's|^pruning-keep-recent *=.*|pruning-keep-recent = "100"|' \
  -e 's|^pruning-interval *=.*|pruning-interval = "17"|' \
  $HOME/.firmachain/config/app.toml
  • Set Minimum Gas Price, Enable Prometheus, and Disable the Indexer
sed -i 's|minimum-gas-prices =.*|minimum-gas-prices = "0.1ufct"|g' $HOME/.firmachain/config/app.toml
sed -i -e "s/prometheus = false/prometheus = true/" $HOME/.firmachain/config/config.toml
sed -i -e "s/^indexer *=.*/indexer = \"null\"/" $HOME/.firmachain/config/config.toml
  • Create Service File
sudo tee /etc/systemd/system/firmachaind.service > /dev/null <<EOF
[Unit]
Description=firmachain mainnet node
After=network-online.target
[Service]
User=$USER
ExecStart=$(which firmachaind) start
Restart=always
RestartSec=3
LimitNOFILE=65535
[Install]
WantedBy=multi-user.target
EOF
  • Download Current Snapshot
curl "https://snapshot.sychonix.com/mainnet/firmachain/firmachain-snapshot.tar.lz4" | lz4 -dc - | tar -xf - -C "$HOME/.firmachain"
  • Enable the Service and Start the Node
sudo systemctl daemon-reload
sudo systemctl enable firmachaind.service
sudo systemctl restart firmachaind.service && sudo journalctl -u firmachaind.service -f --no-hostname -o cat

Upgrade

No chain upgrades scheduled yet.

Peers

PEERS="$(curl -sS https://rpc-firmachain.sychonix.com/net_info | jq -r '.result.peers[] | "\(.node_info.id)@\(.remote_ip):\(.node_info.listen_addr)"' | awk -F ':' '{print $1":"$(NF)}' | sed -z 's|\n|,|g;s|.$||')"
sed -i.bak -e "s/^persistent_peers *=.*/persistent_peers = \"$PEERS\"/" $HOME/.firmachain/config/config.toml

Snapshot

Height: Loading... | Last updated: Loading... | Size: Loading...
  • Install dependencies, if needed
sudo apt update && sudo apt install aria2
  • Stop Service
sudo systemctl stop firmachaind
  • Back up priv_validator_state.json
cp $HOME/.firmachain/data/priv_validator_state.json $HOME/.firmachain/priv_validator_state.json.backup
  • Reset the data
firmachaind tendermint unsafe-reset-all --home $HOME/.firmachain --keep-addr-book
  • Download Snapshot
aria2c -x 16 -s 16 -o firmachain-snapshot.tar.lz4 https://snapshot.sychonix.com/mainnet/firmachain/firmachain-snapshot.tar.lz4
lz4 -dc firmachain-snapshot.tar.lz4 | tar -xf - -C $HOME/.firmachain
rm -v firmachain-snapshot.tar.lz4
  • Restore Backup and Restart Service
mv $HOME/.firmachain/priv_validator_state.json.backup $HOME/.firmachain/data/priv_validator_state.json
sudo systemctl restart firmachaind && sudo journalctl -u firmachaind -f -o cat

Addrbook

curl -Ls https://snapshot.sychonix.com/mainnet/firmachain/addrbook.json > $HOME/.firmachain/config/addrbook.json

Genesis

curl -Ls https://snapshot.sychonix.com/mainnet/firmachain/genesis.json > $HOME/.firmachain/config/genesis.json

API

api-firmachain.sychonix.com

RPC

rpc-firmachain.sychonix.com

CLI Cheatsheet

Wallet Management

firmachaind keys add 

firmachaind keys add  --recover

firmachaind keys list 

firmachaind keys delete 

firmachaind keys export 

firmachaind keys import .backup

firmachaind q bank balances $(firmachaind keys show  -a)

Validator Management

Moniker

Identity

Details

Website

Security Contact

Amount

firmachaind tx staking create-validator \
--amount=1000000ufct \
--pubkey=$(firmachaind tendermint show-validator) \
--moniker="" \
--identity="" \
--details="" \
--website="" \
--security-contact= \
--chain-id=colosseum-1 \
--commission-rate=0.05 \
--commission-max-rate=0.20 \
--commission-max-change-rate=0.01 \
--min-self-delegation=1 \
--gas-prices 0.1ufct \
--gas "auto" \
--gas-adjustment "1.5" \
--from wallet \
-y

firmachaind tx staking edit-validator \
--new-moniker="" \
--identity="" \
--details="" \
--website="" \
--chain-id=colosseum-1 \
--commission-rate=0.07 \
--from wallet \
--gas=auto \
--gas-prices 0.1ufct \
-y

firmachaind tx slashing unjail --from wallet --chain-id colosseum-1 --gas auto --gas-adjustment 1.5  

firmachaind query slashing signing-info $(firmachaind tendermint show-validator)

firmachaind q staking validator $(firmachaind keys show wallet --bech val -a)

firmachaind q bank denom-metadata -oj | jq

firmachaind status 2>&1 | jq -r '.SyncInfo.catching_up // .sync_info.catching_up'

firmachaind status 2>&1 | jq -r '.SyncInfo.latest_block_height // .sync_info.latest_block_height'

Token Management

firmachaind tx distribution withdraw-all-rewards --from wallet --chain-id colosseum-1 --gas auto --gas-adjustment 1.5 --gas-prices 0.1ufct -y 

firmachaind tx distribution withdraw-rewards $(firmachaind keys show wallet --bech val -a) --commission --from wallet --chain-id colosseum-1 --gas auto --gas-adjustment 1.5 --gas-prices 0.1ufct -y 

firmachaind tx staking delegate $(firmachaind keys show wallet --bech val -a) 1000000ufct --from wallet --chain-id colosseum-1 --gas auto --gas-adjustment 1.5 --gas-prices 0.1ufct -y 

firmachaind tx staking redelegate $(firmachaind keys show wallet --bech val -a)  1000000ufct --from wallet --chain-id colosseum-1 --gas auto --gas-adjustment 1.5 --gas-prices 0.1ufct -y

firmachaind tx staking delegate  1000000ufct --from  --chain-id colosseum-1 --gas auto --gas-adjustment 1.5 --gas-prices 0.1ufct -y 

firmachaind tx staking unbond $(firmachaind keys show wallet --bech val -a) 1000000ufct --from wallet --chain-id colosseum-1 --gas auto --gas-adjustment 1.5 --gas-prices 0.1ufct -y

firmachaind tx bank send wallet  1000000ufct --from wallet --chain-id colosseum-1 --gas auto --gas-adjustment 1.5 --gas-prices 0.1ufct -y

Service Management

sudo systemctl daemon-reload

sudo systemctl enable firmachaind

sudo systemctl disable firmachaind

sudo systemctl start firmachaind

sudo systemctl stop firmachaind

sudo systemctl restart firmachaind

sudo systemctl status firmachaind

sudo journalctl -u firmachaind -f --no-hostname -o cat

CUSTOM_PORT=
sed -i.bak -e "s%^proxy_app = \"tcp://127.0.0.1:26658\"%proxy_app = \"tcp://127.0.0.1:${CUSTOM_PORT}658\"%; s%^laddr = \"tcp://127.0.0.1:26657\"%laddr = \"tcp://127.0.0.1:${CUSTOM_PORT}657\"%; s%^pprof_laddr = \"localhost:6060\"%pprof_laddr = \"localhost:${CUSTOM_PORT}060\"%; s%^laddr = \"tcp://0.0.0.0:26656\"%laddr = \"tcp://0.0.0.0:${CUSTOM_PORT}656\"%; s%^prometheus_listen_addr = \":26660\"%prometheus_listen_addr = \":${CUSTOM_PORT}660\"%" $HOME/.firmachain/config/config.toml
sed -i.bak -e "s%^address = \"tcp://0.0.0.0:1317\"%address = \"tcp://0.0.0.0:${CUSTOM_PORT}317\"%; s%^address = \":8080\"%address = \":${CUSTOM_PORT}080\"%; s%^address = \"0.0.0.0:9090\"%address = \"0.0.0.0:${CUSTOM_PORT}090\"%; s%^address = \"0.0.0.0:9091\"%address = \"0.0.0.0:${CUSTOM_PORT}091\"%" $HOME/.firmachain/config/app.toml

cd $HOME && sudo systemctl stop firmachaind && sudo systemctl disable firmachaind && sudo rm /etc/systemd/system/firmachaind.service && sudo systemctl daemon-reload && sudo rm -rf $(which firmachaind) && sudo rm -rf $HOME/.firmachain && sudo rm -rf $(which firmachaind)