
The Power of Scheduled Transactions: Ritual Network's Time-Based Innovation
Part 2 of the "Ritual-Pilled" Series Ritual Network has introduced several groundbreaking innovations that fundamentally expand what's possible on-chain. Among these innovations, Scheduled Transactions stand out as a particularly powerful primitive that enables an entirely new category of applications and use cases. Having previously explored the case for Ritual Network in the first article of this series, we now dive into one of its most transformative features.Understanding Scheduled T...
Monad: Super Saiyan Ethereum?
Monad is a prospective EVM-equivalent Layer-1 blockchain(PoS) that aims to bring about a “decentralized computation platform that combines the best of performance and portability” offering 10,000 TPS. So it’s Ethereum on steroids. Now one begins to wonder how is this achievable? PEDs?? MaybeMonad, the super saiyan EVM-equivalent Layer-1 blockchain.After doing some extra readings, I found out that they plan to accomplish full compatibility with the Ethereum Virtual Machine (EVM) bytecode while...
HI. I post about my random thoughts.
Setting up a Union node on your VPS involves several steps. This guide will walk you through the process, from preparing your system to running the node.
Prerequisites
Before you begin, ensure your VPS meets the following minimum requirements:
Operating System: Linux-based (Ubuntu recommended)
CPU: 4 vCPUs or CPU cores
RAM: More than 8 GB
Storage: At least 256 GB
These specifications are recommended to ensure optimal performance of your Union node.
STEP 1: UPDATE AND UPGRATE YOUR SYSTEM
Begin by updating your package lists and upgrading existing packages:
sudo apt update && sudo apt full-upgrade -y
sudo apt install build-essential vim jq make git ufw wget -y
STEP 2: SETUP VALIDATOR NAME
Replace YOUR_MONIKER_GOES_HERE with your validator name
MONIKER="YOUR_MONIKER_GOES_HERE"
STEP 3: INSTALL GO (if not installed)
Union testnet requires Go.
Install it with:
cd ~
wget https://go.dev/dl/go1.21.0.linux-amd64.tar.gz
sudo rm -rf /usr/local/go
sudo tar -C /usr/local -xzf go1.21.0.linux-amd64.tar.gz
rm go1.21.0.linux-amd64.tar.gz
Add Go to the system path:
echo "export PATH=$PATH:/usr/local/go/bin" >> ~/.bashrc
source ~/.bashrc
Verify the installation:
go version
STEP 4: DOWNLOAD BINARIES
# Download project binaries
mkdir -p $HOME/.union/cosmovisor/genesis/bin
wget -O $HOME/.union/cosmovisor/genesis/bin/uniond https://snapshots.kjnodes.com/union-testnet/uniond-v0.25.0-linux-amd64
chmod +x $HOME/.union/cosmovisor/genesis/bin/uniond
# Create application symlinks
ln -s $HOME/.union/cosmovisor/genesis $HOME/.union/cosmovisor/current -f
sudo ln -s $HOME/.union/cosmovisor/current/bin/uniond /usr/local/bin/uniond -f
STEP 5: INSTALL COSMOVISOR AND CREATE A SERVICE
# Download and install Cosmovisor
go install cosmossdk.io/tools/cosmovisor/cmd/cosmovisor@v1.6.0
# Create service
sudo tee /etc/systemd/system/union-testnet.service > /dev/null << EOF
[Unit]
Description=union node service
After=network-online.target
[Service]
User=$USER
ExecStart=$(which cosmovisor) run start --home=$HOME/.union
Restart=on-failure
RestartSec=10
LimitNOFILE=65535
Environment="DAEMON_HOME=$HOME/.union"
Environment="DAEMON_NAME=uniond"
Environment="UNSAFE_SKIP_BACKUP=true"
Environment="PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games:/snap/bin:$HOME/.union/cosmovisor/current/bin"
[Install]
WantedBy=multi-user.target
EOF
sudo systemctl daemon-reload
sudo systemctl enable union-testnet.service
STEP 6: INITIALIZE THE NODE
# Workaround mandatory home argument
alias uniond='uniond --home=$HOME/.union/'
# Set node configuration
uniond config set client chain-id union-testnet-9
uniond config set client keyring-backend test
uniond config set client node tcp://localhost:17157
# Initialize the node
uniond init $MONIKER --chain-id union-testnet-9 --home=$HOME/.union
# Download genesis and addrbook
curl -Ls https://snapshots.kjnodes.com/union-testnet/genesis.json > $HOME/.union/config/genesis.json
curl -Ls https://snapshots.kjnodes.com/union-testnet/addrbook.json > $HOME/.union/config/addrbook.json
# Add seeds
sed -i -e "s|^seeds *=.*|seeds = \"3f472746f46493309650e5a033076689996c8881@union-testnet.rpc.kjnodes.com:17159\"|" $HOME/.union/config/config.toml
# Set minimum gas price
sed -i -e "s|^minimum-gas-prices *=.*|minimum-gas-prices = \"0muno\"|" $HOME/.union/config/app.toml
# Set pruning
sed -i \
-e 's|^pruning *=.*|pruning = "custom"|' \
-e 's|^pruning-keep-recent *=.*|pruning-keep-recent = "100"|' \
-e 's|^pruning-keep-every *=.*|pruning-keep-every = "0"|' \
-e 's|^pruning-interval *=.*|pruning-interval = "19"|' \
$HOME/.union/config/app.toml
# Set custom ports
sed -i -e "s%^proxy_app = \"tcp://127.0.0.1:26658\"%proxy_app = \"tcp://127.0.0.1:17158\"%; s%^laddr = \"tcp://127.0.0.1:26657\"%laddr = \"tcp://127.0.0.1:17157\"%; s%^pprof_laddr = \"localhost:6060\"%pprof_laddr = \"localhost:17160\"%; s%^laddr = \"tcp://0.0.0.0:26656\"%laddr = \"tcp://0.0.0.0:17156\"%; s%^prometheus_listen_addr = \":26660\"%prometheus_listen_addr = \":17166\"%" $HOME/.union/config/config.toml
sed -i -e "s%^address = \"tcp://0.0.0.0:1317\"%address = \"tcp://0.0.0.0:17117\"%; s%^address = \":8080\"%address = \":17180\"%; s%^address = \"0.0.0.0:9090\"%address = \"0.0.0.0:17190\"%; s%^address = \"0.0.0.0:9091\"%address = \"0.0.0.0:17191\"%; s%:8545%:17145%; s%:8546%:17146%; s%:6065%:17165%" $HOME/.union/config/app.toml
STEP 6: DOWNLOAD CHAIN’S LATEST SNAPSHOT
curl -L https://snapshots.kjnodes.com/union-testnet/snapshot_latest.tar.lz4 | tar -Ilz4 -xf - -C $HOME/.union
[[ -f $HOME/.union/data/upgrade-info.json ]] && cp $HOME/.union/data/upgrade-info.json $HOME/.union/cosmovisor/genesis/upgrade-info.json
STEP 7: START SERVICE AND CHECK THE LOGS
sudo systemctl start union-testnet.service && sudo journalctl -u union-testnet.service -f --no-hostname -o cat

Error Message
"tar (grandchild): lz4: Cannot exec: No such file or directory"
Fix: Install lz4 manually:
sudo apt install lz4 -y
Then retry snapshot extraction.
Setting up a Union node on your VPS involves several steps. This guide will walk you through the process, from preparing your system to running the node.
Prerequisites
Before you begin, ensure your VPS meets the following minimum requirements:
Operating System: Linux-based (Ubuntu recommended)
CPU: 4 vCPUs or CPU cores
RAM: More than 8 GB
Storage: At least 256 GB
These specifications are recommended to ensure optimal performance of your Union node.
STEP 1: UPDATE AND UPGRATE YOUR SYSTEM
Begin by updating your package lists and upgrading existing packages:
sudo apt update && sudo apt full-upgrade -y
sudo apt install build-essential vim jq make git ufw wget -y
STEP 2: SETUP VALIDATOR NAME
Replace YOUR_MONIKER_GOES_HERE with your validator name
MONIKER="YOUR_MONIKER_GOES_HERE"
STEP 3: INSTALL GO (if not installed)
Union testnet requires Go.
Install it with:
cd ~
wget https://go.dev/dl/go1.21.0.linux-amd64.tar.gz
sudo rm -rf /usr/local/go
sudo tar -C /usr/local -xzf go1.21.0.linux-amd64.tar.gz
rm go1.21.0.linux-amd64.tar.gz
Add Go to the system path:
echo "export PATH=$PATH:/usr/local/go/bin" >> ~/.bashrc
source ~/.bashrc
Verify the installation:
go version
STEP 4: DOWNLOAD BINARIES
# Download project binaries
mkdir -p $HOME/.union/cosmovisor/genesis/bin
wget -O $HOME/.union/cosmovisor/genesis/bin/uniond https://snapshots.kjnodes.com/union-testnet/uniond-v0.25.0-linux-amd64
chmod +x $HOME/.union/cosmovisor/genesis/bin/uniond
# Create application symlinks
ln -s $HOME/.union/cosmovisor/genesis $HOME/.union/cosmovisor/current -f
sudo ln -s $HOME/.union/cosmovisor/current/bin/uniond /usr/local/bin/uniond -f
STEP 5: INSTALL COSMOVISOR AND CREATE A SERVICE
# Download and install Cosmovisor
go install cosmossdk.io/tools/cosmovisor/cmd/cosmovisor@v1.6.0
# Create service
sudo tee /etc/systemd/system/union-testnet.service > /dev/null << EOF
[Unit]
Description=union node service
After=network-online.target
[Service]
User=$USER
ExecStart=$(which cosmovisor) run start --home=$HOME/.union
Restart=on-failure
RestartSec=10
LimitNOFILE=65535
Environment="DAEMON_HOME=$HOME/.union"
Environment="DAEMON_NAME=uniond"
Environment="UNSAFE_SKIP_BACKUP=true"
Environment="PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games:/snap/bin:$HOME/.union/cosmovisor/current/bin"
[Install]
WantedBy=multi-user.target
EOF
sudo systemctl daemon-reload
sudo systemctl enable union-testnet.service
STEP 6: INITIALIZE THE NODE
# Workaround mandatory home argument
alias uniond='uniond --home=$HOME/.union/'
# Set node configuration
uniond config set client chain-id union-testnet-9
uniond config set client keyring-backend test
uniond config set client node tcp://localhost:17157
# Initialize the node
uniond init $MONIKER --chain-id union-testnet-9 --home=$HOME/.union
# Download genesis and addrbook
curl -Ls https://snapshots.kjnodes.com/union-testnet/genesis.json > $HOME/.union/config/genesis.json
curl -Ls https://snapshots.kjnodes.com/union-testnet/addrbook.json > $HOME/.union/config/addrbook.json
# Add seeds
sed -i -e "s|^seeds *=.*|seeds = \"3f472746f46493309650e5a033076689996c8881@union-testnet.rpc.kjnodes.com:17159\"|" $HOME/.union/config/config.toml
# Set minimum gas price
sed -i -e "s|^minimum-gas-prices *=.*|minimum-gas-prices = \"0muno\"|" $HOME/.union/config/app.toml
# Set pruning
sed -i \
-e 's|^pruning *=.*|pruning = "custom"|' \
-e 's|^pruning-keep-recent *=.*|pruning-keep-recent = "100"|' \
-e 's|^pruning-keep-every *=.*|pruning-keep-every = "0"|' \
-e 's|^pruning-interval *=.*|pruning-interval = "19"|' \
$HOME/.union/config/app.toml
# Set custom ports
sed -i -e "s%^proxy_app = \"tcp://127.0.0.1:26658\"%proxy_app = \"tcp://127.0.0.1:17158\"%; s%^laddr = \"tcp://127.0.0.1:26657\"%laddr = \"tcp://127.0.0.1:17157\"%; s%^pprof_laddr = \"localhost:6060\"%pprof_laddr = \"localhost:17160\"%; s%^laddr = \"tcp://0.0.0.0:26656\"%laddr = \"tcp://0.0.0.0:17156\"%; s%^prometheus_listen_addr = \":26660\"%prometheus_listen_addr = \":17166\"%" $HOME/.union/config/config.toml
sed -i -e "s%^address = \"tcp://0.0.0.0:1317\"%address = \"tcp://0.0.0.0:17117\"%; s%^address = \":8080\"%address = \":17180\"%; s%^address = \"0.0.0.0:9090\"%address = \"0.0.0.0:17190\"%; s%^address = \"0.0.0.0:9091\"%address = \"0.0.0.0:17191\"%; s%:8545%:17145%; s%:8546%:17146%; s%:6065%:17165%" $HOME/.union/config/app.toml
STEP 6: DOWNLOAD CHAIN’S LATEST SNAPSHOT
curl -L https://snapshots.kjnodes.com/union-testnet/snapshot_latest.tar.lz4 | tar -Ilz4 -xf - -C $HOME/.union
[[ -f $HOME/.union/data/upgrade-info.json ]] && cp $HOME/.union/data/upgrade-info.json $HOME/.union/cosmovisor/genesis/upgrade-info.json
STEP 7: START SERVICE AND CHECK THE LOGS
sudo systemctl start union-testnet.service && sudo journalctl -u union-testnet.service -f --no-hostname -o cat

Error Message
"tar (grandchild): lz4: Cannot exec: No such file or directory"
Fix: Install lz4 manually:
sudo apt install lz4 -y
Then retry snapshot extraction.

The Power of Scheduled Transactions: Ritual Network's Time-Based Innovation
Part 2 of the "Ritual-Pilled" Series Ritual Network has introduced several groundbreaking innovations that fundamentally expand what's possible on-chain. Among these innovations, Scheduled Transactions stand out as a particularly powerful primitive that enables an entirely new category of applications and use cases. Having previously explored the case for Ritual Network in the first article of this series, we now dive into one of its most transformative features.Understanding Scheduled T...
Monad: Super Saiyan Ethereum?
Monad is a prospective EVM-equivalent Layer-1 blockchain(PoS) that aims to bring about a “decentralized computation platform that combines the best of performance and portability” offering 10,000 TPS. So it’s Ethereum on steroids. Now one begins to wonder how is this achievable? PEDs?? MaybeMonad, the super saiyan EVM-equivalent Layer-1 blockchain.After doing some extra readings, I found out that they plan to accomplish full compatibility with the Ethereum Virtual Machine (EVM) bytecode while...
Share Dialog
Share Dialog
HI. I post about my random thoughts.
Subscribe to NerdyNedo
Subscribe to NerdyNedo
<100 subscribers
<100 subscribers
No activity yet