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 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
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.
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:
⚠️ 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.