Testnet

There's a long-running testnet chain available, intended for developers to test code and practice integrating their software with the Penumbra stack.

🚧

The PL-run testnet was chain was reset on 2025-04-15. See notes below on compatibility.

Compatibility

The current testnet chain penumbra-testnet-phobos-3 was created on 2025-04-15. It is running a candidate protocol upgrade related to LQT (opens in a new tab), and as such, as is not compatible with mainnet. In order to interact with the testnet, developers should build client software from the protocol/lqt_branch (opens in a new tab) for compatibility.

Services available

The following public services are available:

URLService
https://testnet.plinfra.net (opens in a new tab)primary pd gRPC endpoint, running most recently released stable tag from the protocol repo (opens in a new tab)
https://testnet-preview.plinfra.net (opens in a new tab)secondary pd gRPC endpoint, running the most recent commit on the main branch in the protocol repo (opens in a new tab)
https://dex-explorer.testnet.plinfra.net (opens in a new tab)a DEX explorer (opens in a new tab) instance, showing testnet market activity
https://cuiloa.testnet.plinfra.net (opens in a new tab)a block explorer, based on cuiloa (opens in a new tab)

Joining the testnet

You can run a node on the public testnet like so:

# clean up any pre-existing network state
cargo run --release --bin pd -- network unsafe-reset-all
# generate network configs for the testnet chain
cargo run --release --bin pd -- network join http://testnet.plinfra.net:26657

That network join command will initialize node state directories locally. Then fetch the most recent snapshot to backfill blocks from before the most recent testnet chain upgrade:

curl -O https://artifacts.plinfra.net/penumbra-testnet-phobos-2/penumbra-node-archive-latest.tar.gz
tar -xzf penumbra-node-archive-latest.tar.gz -C ~/.penumbra/network_data/node0/

After that, if you've set up the Penumbra developer environment, you can run a fullnode locally via:

just dev

For a more persistent setup, consult the tutorial on running a node.

Running pcli

To interact with the chain, configure a wallet pointing at the testnet node:

cargo run --release --bin pcli -- --home ~/.local/share/pcli-testnet view reset
cargo run --release --bin pcli -- init --grpc-url https://testnet.plinfra.net soft-kms generate
# or, to reuse an existing seed phrase:
cargo run --release --bin pcli -- init --grpc-url https://testnet.plinfra.net soft-kms import-phrase

and then pass the --home flag to any commands you run to point pcli at your local node, e.g.,

cargo run --release --bin pcli -- --home ~/.local/share/pcli-testnet view balance

You'll be able to run queries like pcli query validator list, but by default you won't be able to create transactions, as an empty wallet will lack funds to pay gas fees.

Obtaining funds on the testnet

Typically projects will provide a "faucet" bot that distributes testnet tokens for developers to use. Penumbra works a bit differently. Given how central IBC connections to other chains are in Penumbra, the recommended procedure to get funds on the testnet is to bridge in assets via IBC:

  1. Install Keplr (opens in a new tab). It's OK to use the same seed phrase as on the Penumbra testnet.
  2. View the Noble testnet in Keplr (opens in a new tab) and click Deposit. Copy the address that's displayed to your clipboard.
  3. Visit the Circle testnet faucet (opens in a new tab), select Noble Testnet, paste your address, and submit.
  4. Install Prax. Configure the RPC endpoint to be https://testnet.plinfra.net.
  5. Within Prax, click Shield Funds, choose Deposit (Manual), and follow the prompts to transfer in the funds you received from the faucet.
  6. After seeing a confirmation message, check Assets to see your newly bridged in assets.

You now have a balance on the testnet! You can try swapping the asset for other tokens.