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:
URL | Service |
---|---|
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:
- Install Keplr (opens in a new tab). It's OK to use the same seed phrase as on the Penumbra testnet.
- View the Noble testnet in Keplr (opens in a new tab) and click Deposit. Copy the address that's displayed to your clipboard.
- Visit the Circle testnet faucet (opens in a new tab), select Noble Testnet, paste your address, and submit.
- Install Prax. Configure the RPC endpoint to be
https://testnet.plinfra.net
. - Within Prax, click Shield Funds, choose Deposit (Manual), and follow the prompts to transfer in the funds you received from the faucet.
- 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.