Strategies with Validator Nodes - Penumbra

Phase 1 of Penumbra's summoning ceremony, which lasted throughout the year 2023, ended on February 3, with 15’745 distinct contributions from the community.

Penumbra announces the start of Phase 2 with the launch of Testnet 62, which introduces the Four Dimensional Gas Cube concept for building a fee market, moving beyond the flat fee per tx concept made necessary when the first shielded blockchains like ZCash were launched.

But let's proceed in order: what is Penumbra and what is its goal?

Penumbra Zone - Fully Private Network & DEX for Cosmos Ecosystem

Penumbra is a fully private PoS network and integrates privacy through a novel private delegation mechanism that provides on-chain governance with private voting and tax-efficient staking.

Penumbra allows to connect every chain of the Cosmos ecosystem via IBC to its ZSwap, a private AMM DEX supporting sealed-bid batch auctions and UniV3-concentrated liquidity pools.

A sealed-bid batch auctions promises to prevent frontrunning, provide better execution and reveal only net-flow across a pair of assets. Liquidity positions are created anonymously, without revealing users beliefs about prices.

ZSwap allows concentrated liquidity positions, allowing market allocation of liquidity over a price range of a trading pair. Since it’s a fully shielded chain, Penumbra allows market makers to hide the information about their trading strategies and there’s no MEV, since transactions do not leak data about user activity. Penumbra's approach to concentrated liquidity strategies is different than that taken by Uniswap V3 or Carbon, but I recommend you to explore the topic directly from their docs.

Penumbra introduced in Testnet 62 the concept of Four Dimensional Gas Cube

4-Dimensional Gas Cube
4-Dimensional Gas Cube
  • Block space prices bandwidth for full nodes via real-time sync.

  • Compact Block space prices sync bandwidth for clients via catch-up sync.

  • Verification prices stateless & CPU-intensive work that can be parallelized.

  • Execution prices stateful edits to the public chain state sequentially happening.

Why is gas fee management important?

ZCash has always opposed a fee market because fees must necessarily be publicly disclosed and are a vector of leak information from clients, allowing 2 transactions to be traced back to the same user.

Hence the idea of separating the fee calculation for these 4 transaction components, thus making it easier to build a fee market while keeping the information private. Multidimensional design fee markets then lead to an additional benefit: they increase throughput.

Check this paper for more details: Link.

Now, however, let's start with the procedure of installing the validator node in testnet. Let's get started!

Don’t forget to subscribe on Mirror to stay tuned to all future articles.

Penumbra Node Installation - Step-by-Step Guide

To begin the procedure, you need a computer with any Linux distro installed, Ubuntu 22.04 or later will do, an SSD with +200 GB and a fast Internet connection. It’s required to use 22.04 version or newer versions, otherwise your node won’t be installed correctly.

For those without resources capable of supporting a validator node at home, you can fall back on VPS (Virtual Private Server) solutions, that is, you can rent a virtual server.

There are several solutions, which I recommend below:

  • Contabo, I recommend the Cloud VPS M model, with 6 vCPU Cores, 16 GB RAM, 400 GB SSD SATA3;

  • Aeza, I recommend at least the VIEs-3 or PARs-3 model, with 4 vCPU Cores, 8 GB RAM, 120 GB NVMe. This is a Russian VPS service and payment by credit/debit card is not possible from many Western countries, but payments in crypto (BTC, BEP20, ERC20, TRC20, DASH, LTC, XMR...) are possible.

After payment is made, you will receive the IP address to access.

If operating from Windows, open Windows Powershell and launch the following command, entering your IP address instead of IP_ADDRESS:

ssh root@IP_ADDRESS

Give confirmation to save ED25519 key fingerprint to the list of known hosts, available at C:\Users\WINDOWS_USER\.ssh and enter the password of your VPS.

If you have done everything correctly, the following screen will appear:

After login on PuTTy or Powershell on VPS provided by Contabo
After login on PuTTy or Powershell on VPS provided by Contabo

⚠️ Disclaimer ⚠️: Launch every command one by one. Entering more commands together could break the installation process or bring to fatal errors.

Now enter the following commands and execute them:

# Preparation
sudo apt update -y
sudo apt upgrade -y
sudo apt install curl git make screen -y

Install Golang:

# Install Golang
sudo rm -rf /usr/local/go 
curl -Ls https://go.dev/dl/go1.21.5.linux-amd64.tar.gz | sudo tar -xzf - -C /usr/local
eval $(echo 'export PATH=$PATH:/usr/local/go/bin' | sudo tee /etc/profile.d/golang.sh)
eval $(echo 'export PATH=$PATH:$HOME/go/bin' | tee -a $HOME/.profile)

go version
# go version go1.21.5 linux/amd64

Downoload Penumbra CLI (Command Line Interface) and install it.

# Download Penumbra CLI from Github
curl -O -L https://github.com/penumbra-zone/penumbra/releases/download/v0.67.0/pcli-x86_64-unknown-linux-gnu.tar.xz

# Decompress PCLI & Move it to the /usr/local/bin directory
unxz pcli-x86_64-unknown-linux-gnu.tar.xz
tar -xf pcli-x86_64-unknown-linux-gnu.tar
sudo mv pcli-x86_64-unknown-linux-gnu/pcli /usr/local/bin/

# Verify PCLI installation has been completed successfully
pcli --version

Using PCLI, generate a new wallet. I don’t recommend to import an older one, since Penumbra with the latest ceremony started using BIP44-compliant mechanism for deriving wallets from seed phrases.

Legacy derivation is still supported, but it’s recommended to regenerate wallets.

Join Penumbra Discord and claim faucet tokens in #-testnet-faucet channel by pasting your wallet address generated: Link.

# Generate a new wallet
pcli init soft-kms generate
pcli view address

# Sync with the blockchain & Check your wallet balance
pcli view sync
pcli view balance

Install Penumbra and CometBFT:

# Download Penumbra file from Github
curl -O -L https://github.com/penumbra-zone/penumbra/releases/download/v0.67.0/pd-x86_64-unknown-linux-gnu.tar.xz

# Unzip it & Move it to the /usr/local/bin/ directory
unxz pd-x86_64-unknown-linux-gnu.tar.xz
tar -xf pd-x86_64-unknown-linux-gnu.tar
sudo mv pd-x86_64-unknown-linux-gnu/pd /usr/local/bin/

# Verify installation of Penumbra
pd --version

# Export Golang PATH & Execute /.bash_profile
echo export GOPATH=\"\$HOME/go\" >> ~/.bash_profile
echo export PATH=\"\$PATH:\$GOPATH/bin\" >> ~/.bash_profile
source ~/.bash_profile

# Install CometBFT
git clone --branch v0.37.2 https://github.com/cometbft/cometbft.git
cd cometbft
make install

# Verify installation of CometBFT
cometbft version

Now we’re ready to generate the configuration files and initialize the node by replacing IP_ADDRESS with your VPS’ IP address and MONIKER with the name you want to assign to your node (in my case 0xOuterGod)

pd testnet join
pd testnet join --external-address IP_ADDRESS:26656 --moniker MONIKER

It’s necessary to keep the node launched in the background and we can do it by using a session of Screen. Let’s create a new background Screen session for Penumbra:

# Launch a penumbra session
screen -S penumbra
pd testnet join
pd start

Press Ctrl + A + D to exit from the Screen session and create a new one to run CometBFT.

# Launch a cometbft session
screen -S cometbft
cometbft start --home ~/.penumbra/testnet_data/node0/cometbft

Press Ctrl + A + D to exit from the CometBFT Screen session.

Now it’s necessary to turn the full node into a validator node by providing a configuration file and delegating some tokens to become active.

# Find & Copy the value of consensus_key
grep -A3 pub_key ~/.penumbra/testnet_data/node0/cometbft/config/priv_validator_key.json

# "pub_key@: {
#   "type": "tendermint/PubKeyEd25519",
#   "value": <VALUE_CONSENSUS_KEY>

# Generate configuration file & Copy the entire text to validator.toml
pcli validator definition template
nano validator.toml

In validator.toml edit the missing values:

  • replace the value in [consensus_key] with VALUE_CONSENSUS_KEY;

  • change in enabled=true.

# Register your validator
pcli validator definition upload --file validator.toml

# Find your validator address & Save it
pcli validator identity
pcli tx delegate 1penumbra --to <VALIDATOR_ADDRESS>
pcli view balance

# Check if your validator is active
pcli query validator list --detailed

Congratulations, you have successfully completed the installation of your node!

The guide you read is for educational purposes. Penumbra has not released any information about its tokenomics nor airdrop, so this is an educational content. If you like my work, I suggest you to subscribe and mint the entry in order to support my work.

Subscribe to 0xOuterGod
Receive the latest updates directly to your inbox.
Mint this entry as an NFT to add it to your collection.
Verification
This entry has been permanently stored onchain and signed by its creator.