diff --git a/pages/_meta.json b/pages/_meta.json index fa24ddd..1918e57 100644 --- a/pages/_meta.json +++ b/pages/_meta.json @@ -6,4 +6,4 @@ "frontend": "Running a frontend", "dev": "Development", "resources": "Resources" -} \ No newline at end of file +} diff --git a/pages/dev.md b/pages/dev.md index 40c132c..f3ffc9d 100644 --- a/pages/dev.md +++ b/pages/dev.md @@ -1 +1,11 @@ -This section is for developers working on Penumbra source code. +This section is for developers, either working on Penumbra source code itself, +or writing services that interact with Penumbra. + + diff --git a/pages/dev/_meta.json b/pages/dev/_meta.json index ba69421..7d097ba 100644 --- a/pages/dev/_meta.json +++ b/pages/dev/_meta.json @@ -1,11 +1,13 @@ { - "build": "Compiling from source", - "devnet-quickstart": "Devnet Quickstart", + "dev-env": "Developer environment", + "devnet-quickstart": "Devnet quickstart", "sql": "Working with SQLite", "docs": "Building documentation", "protobuf": "Building protobuf", "metrics": "Metrics", - "parameter_setup": "Zero Knowledge Proofs", + "parameter_setup": "Zero-knowledge proofs", "rpc": "RPC access", - "ibc": "Testing IBC" + "ibc": "Testing IBC", + "build": "Compiling from source", + "privacy": "Privacy" } diff --git a/pages/dev/build.md b/pages/dev/build.md index c3b08e5..36fb36d 100644 --- a/pages/dev/build.md +++ b/pages/dev/build.md @@ -1,8 +1,12 @@ -Penumbra is written in Rust. To build it, you will need a recent +Penumbra is written in [Rust]. To build it, you will need a recent stable version of Rust, as well as a few OS-level dependencies. We don't support building on Windows. If you need to use Windows, consider using [WSL] instead. +This page aims to describe the steps necessary to work on Penumbra when +settings up the build environment manually, without using [Nix]. +If you want an easy-to-use setup, see the docs on [developer environments](./dev-env.md). + ### Installing the Rust toolchain This requires that you install a recent (>= 1.75) stable version @@ -119,7 +123,7 @@ git submodule update --init # Build snappy using cmake. mkdir build -cd build && cmake .. && make +cd build && cmake ../ -DSNAPPY_BUILD_BENCHMARKS=OFF && make # Add an environment variable pointing to the build/ directory. SNAPPY_LIB_DIR=`pwd` @@ -130,6 +134,8 @@ SNAPPY_LIB_DIR=`pwd` Once you've built rocksdb and set the environment variable, the `librocksdb-sys` crate will search in that directory for the compiled `librocksdb.a` static library when it is rebuilt. +[Rust]: https://www.rust-lang.org/ [snappy-build]: https://github.com/google/snappy?tab=readme-ov-file#building [protoc-install]: https://grpc.io/docs/protoc-installation/ [WSL]: https://learn.microsoft.com/en-us/windows/wsl/install +[Nix]: https://nixos.org/ diff --git a/pages/dev/dev-env.md b/pages/dev/dev-env.md new file mode 100644 index 0000000..0379c34 --- /dev/null +++ b/pages/dev/dev-env.md @@ -0,0 +1,70 @@ +To get started working on Penumbra, you'll need a few dependencies on your workstation. +Running tests and local services is more involved. The project uses [Nix] to automate +the creation of developer environments with suitable tooling. If you'd prefer not to use +Nix, and instead configure your environment manually, see the docs on +[compiling from source](./build.md). + +## Installation OS-level packages +You'll need `git` and `git-lfs` to clone the Penumbra protocol repository. +Install these via your package manager of choice: + +```bash +# for macos +brew install git-lfs +# for linux debian/ubuntu +sudo apt install -y git-lfs +# for linux fedora +sudo dnf install -y git-lfs +``` + +Then, for all platforms, make sure to run `git lfs install`. Now you're ready to clone the +Penumbra protocol repo: + +``` +git clone https://github.com/penumbra-zone/penumbra +``` + +## Using `nix develop` for project dependencies + + + +Install [Nix]. After restarting your shell, create a config file to enable +Nix flakes: + +``` +mkdir -p ~/.config/nix +echo 'experimental-features = nix-command flakes' >> ~/.config/nix/nix.conf +``` + +Now hop into the Penumbra directory and activate the env: + +``` +cd penumbra +nix develop +``` + +You'll have to wait a bit for packages to be built and installed. Once it finishes, +your active shell will have access to Penumbra project dependencies, like a compatible +version of `cometbft`, and other dev tooling, like `grpcurl` and `mdbook`. +You can run `exit` to return to your normal shell, without those tools, which have been installed to `/nix/store/`. + +## Using `direnv` + +If you use [direnv], you can copy the example `.envrc` file to automatically activate +the Penumbra nix environment when you cd to the repository: + +``` +cp .envrc.example .envrc +direnv allow +``` + +The `.envrc` path is intentionally git-ignored, so you can customize it as you see fit. +If you don't use `direnv`, you'll need to run `nix develop` in any terminal window +where you want access to the Penumbra dev env. Using `direnv` will make shell startup +a bit slower, so choose what's best for you. + +[Nix]: https://nixos.org/ +[direnv]: https://direnv.net/ diff --git a/pages/dev/devnet-quickstart.md b/pages/dev/devnet-quickstart.md index 42b1a81..ffbb134 100644 --- a/pages/dev/devnet-quickstart.md +++ b/pages/dev/devnet-quickstart.md @@ -1,46 +1,35 @@ -This page describes a quickstart method for running `pd`+`cometbft` to test -changes during development. +This page assumes you've set up a [Penumbra developer environment](./dev-env.md), +as it references several commands like `cometbft` in order to work. +It describes how to run a Penumbra fullnode on your local workstation, for building +and testing Penumbra and related services. -To start, you'll need to install a [specific version of CometBFT](../node/pd/install.md#installing-cometbft). +## Running a local devnet -## Generating configs - -To generate a clean set of configs, run - -```shell -cargo run --release --bin pd -- network generate -``` - -This will write configs to `~/.penumbra/network_data/`. - -## Running `pd` - -You'll probably want to set `RUST_LOG`. Here's one suggestion that's quite verbose: - -```shell -# Optional. Expect about 20GB/week of log data for pd with settings below. -export RUST_LOG="info,pd=debug,penumbra=debug,jmt=debug" -``` - -To run `pd`, run +To generate a devnet genesis and run a Penumbra fullnode locally, run: ```shell -cargo run --release --bin pd -- start +just dev ``` -This will start but won't do anything yet, because CometBFT isn't running. - -## Running `cometbft` +Running that command will: + + 1. build the local rust code from th elatest version on-disk + 2. generate a genesis file, writing configs to `~/.penumbra/network_data/` + 3. run the locally-built version of `pd` + 4. run `cometbft` alongside `pd`, communicating over ABCI + 5. run a prometheus/grafana [metrics setup](./metrics.md) -To run CometBFT, run - -```shell -cometbft --home ~/.penumbra/network_data/node0/cometbft/ start -``` - -in another terminal window. +You can use the [process-compose] interface to view logs from any individual service. +Use `ctrl+c` to halt the setup, and run `just dev` to start it again from the latest +local source code. ## Running `pcli` + To interact with the chain, configure a wallet pointing at the localhost node: @@ -66,7 +55,10 @@ edit the `genesis.json` to add your address. After making changes, you may want to reset and restart the devnet: ```shell -cargo run --release --bin pd -- testnet unsafe-reset-all +# stop the running node via process-compose: +ctrl+c +# destroy local network state: +cargo run --release --bin pd -- network unsafe-reset-all ``` You'll probably also want to reset your wallet state: @@ -76,14 +68,14 @@ cargo run --release --bin pcli -- --home ~/.local/share/pcli-localhost view rese ``` At this point you're ready to generate new configs, and restart both `pd` and -`cometbft`. The order they're started in doesn't particularly matter for -correctness, because `cometbft` will retry connecting to the ABCI server until -it succeeds. +`cometbft`, which you can do by running `just dev` again. Note that running `just dev` +will _reuse_ any existing state in `~/.penumbra/network_data/`. You must manually `unsafe-reset-all` +to purge that pre-existing config. -## Optional: running smoke-tests - -Once you have a working devnet running, you should be able to run the [smoke tests](https://en.wikipedia.org/wiki/Smoke_testing_(software)) successfully. This can be useful if you are looking to contribute to Penumbra, or if you need to check that your setup is correct. +## Running smoke tests (optional) +Once you have a working devnet running, you should be able to run the [smoke tests](https://en.wikipedia.org/wiki/Smoke_testing_(software)) +successfully. This can be useful if you are looking to contribute to Penumbra, or if you need to check that your setup is correct. To run the smoke tests: 1. Make sure you have a devnet running (see previous steps) @@ -92,8 +84,9 @@ To run the smoke tests: PENUMBRA_NODE_PD_URL=http://127.0.0.1:8080 PCLI_UNLEASH_DANGER=yes cargo test --package pcli -- --ignored --test-threads 1 ``` -Find the exact commands for each binary's smoke tests in `deployments/compose/process-compose-smoke-test.yml`. -You can also run the entire smoke test suite end-to-end via `just smoke`, including setup and teardown of the network. +You can also run the entire smoke test suite with an automatic fullnode. If you do so, +make sure to stop any fullnode running via `just dev`, as they'll conflict. Then run `just smoke`. If you want to execute the tests against an already-running devnet, however, use manual invocations like -the `cargo test` example above. You'll need to install [process-compose](https://github.com/F1bonacc1/process-compose/) -to use the automated setup. +the `cargo test` example above. + +[process-compose]: https://f1bonacc1.github.io/process-compose/launcher/ diff --git a/pages/dev/ibc.md b/pages/dev/ibc.md index f7c34af..780eb8b 100644 --- a/pages/dev/ibc.md +++ b/pages/dev/ibc.md @@ -49,8 +49,7 @@ You can view account history for the shared Osmosis testnet account here: Change the address at the end of the URL to your account to confirm that your test transfer worked. ## Updating Hermes config for a new testnet -See the [procedure in the wiki](https://github.com/penumbra-zone/penumbra/wiki/Updating-Hermes) -for up to date information. +See the [relayer config guide](../node/relayer/hermes.md) for up to date information. Use the [IBC user docs](../pcli/transaction.md#ibc-withdrawals) to make a test transaction, to ensure that relaying is working. In the future, we should consider posting the newly created diff --git a/pages/dev/metrics.md b/pages/dev/metrics.md index c0e091c..045e1c6 100644 --- a/pages/dev/metrics.md +++ b/pages/dev/metrics.md @@ -1,15 +1,5 @@ Metrics are an important part of observability, allowing us to understand what -the Penumbra software is doing. Penumbra Labs runs Grafana instances for the public deployments: - - * https://grafana.testnet.penumbra.zone - * https://grafana.testnet-preview.penumbra.zone - -There's a more comprehensive WIP dashboard, gated by basic auth for PL team: - - * https://metrics.penumbra.zone - -Check the usual place for credentials. Eventually those views should be exported -as public references. +the Penumbra software is doing. ## Adding Metrics @@ -67,15 +57,7 @@ we use for maintaining our dashboards. ## Editing metrics locally -To facilitate working with metrics locally, first run a `pd` node on your machine with the metrics endpoint -exposed. Then, you can spin up a metrics sidecar deployment: - -```bash -just metrics -``` - -Note that this setup only works on Linux hosts, due to the use of host networking, so the metrics -containers can reach network ports on the host machine. +A minimal metrics setup will be automatically provisioned as part of the [devnet quickstart](./devnet-quickstart.md). -To add new Grafana visualizations, open http://localhost:3000 and edit the existing dashboards. -When you're happy with what you've got, follow the "Backing up Grafana" instructions above to save your work. +To add new Grafana visualizations, open [http://127.0.0.1:3000](http://127.0.0.1:3000) and edit the existing dashboards. +When you're happy with what you've got, follow the [Backing up Grafana](./metrics.md#backing-up-grafana) instructions above to save your work. diff --git a/pages/dev/privacy.md b/pages/dev/privacy.md new file mode 100644 index 0000000..407ed45 --- /dev/null +++ b/pages/dev/privacy.md @@ -0,0 +1,31 @@ +# Privacy + +This document describes the privacy features of the Penumbra protocol, as well as conditions that must be true for privacy to be preserved. + +## Transfers + +Transfers do not reveal the asset, amount, sender or recipient identity. Transfers are also unlinkable to each other. + +## Swaps + +Initiating a swap does not reveal the identity of the swapper or the pre-paid claim fee, but it does reveal the assets and amounts in the swap. + +Claiming a swap does not reveal the amounts, asset types or the identity of the claimant. + +An observer of the chain will see that an anonymous account minted shielded outputs of a swap in a trading pair, but those outputs can't be linked to the claimant. + +## Governance Voting + +During a vote, the voting power (amount and asset type of the staked note that's used for voting), +the vote itself, the identity of the validator (equivalent to the asset type), as well as the proposal being voted on are **revealed** during a delegator vote. +However, the address of the voter is hidden, which renders the information revealed anonymous. + + diff --git a/pages/dev/protobuf.md b/pages/dev/protobuf.md index 5e8ed80..0ac194a 100644 --- a/pages/dev/protobuf.md +++ b/pages/dev/protobuf.md @@ -1,3 +1,5 @@ +# Maintaining protobuf specs + The Penumbra project dynamically generates code for interfacing with [gRPC]. The following locations within the repository are relevant: diff --git a/pages/dev/rpc.md b/pages/dev/rpc.md index 9e771a1..34b1723 100644 --- a/pages/dev/rpc.md +++ b/pages/dev/rpc.md @@ -1,3 +1,5 @@ +# Working with gRPC for Penumbra + The Penumbra [`pd`](../node/pd.md) application exposes a [gRPC] service for integration with other tools, such as [`pcli`](../pcli.md) or the [web extension](../web.md). A solid understanding of how the gRPC methods work is helpful when diff --git a/pages/dev/sql.md b/pages/dev/sql.md index 8aa31c1..261e029 100644 --- a/pages/dev/sql.md +++ b/pages/dev/sql.md @@ -1,3 +1,5 @@ +# Working with SQLite + The view server uses [SQLite3](https://sqlite.org) to store client state locally. During debugging, you may wish to interact with the sqlite db directly. To do so: diff --git a/pages/node.md b/pages/node.md index 537bb9b..f8faf21 100644 --- a/pages/node.md +++ b/pages/node.md @@ -1,3 +1,5 @@ +# Running a node + Running a node is not necessary to use the protocol. Both the web extension and `pcli` are designed to operate with any RPC endpoint. However, we've tried to make it as easy as possible to run nodes so that users can host their own RPC. diff --git a/pages/node/_meta.json b/pages/node/_meta.json index 5916274..7348a02 100644 --- a/pages/node/_meta.json +++ b/pages/node/_meta.json @@ -1,4 +1,4 @@ { "pd": "Full node: pd", "pclientd": "Ultralight node: pclientd" -} \ No newline at end of file +} diff --git a/pages/node/pclientd.md b/pages/node/pclientd.md index dfe4795..16f9abd 100644 --- a/pages/node/pclientd.md +++ b/pages/node/pclientd.md @@ -1,3 +1,5 @@ +# Local RPC with `pclientd` + Penumbra's architecture separates public shared state from private per-user state. Each user's state is known only to them and other parties they disclose it to. While this provides many advantages -- and enables the core features of diff --git a/pages/node/pclientd/build_transaction.md b/pages/node/pclientd/build_transaction.md index 8dc8902..b3ffcc9 100644 --- a/pages/node/pclientd/build_transaction.md +++ b/pages/node/pclientd/build_transaction.md @@ -1,3 +1,5 @@ +# Building Transactions + Using the view and custody services to construct a transaction has four steps. ## Plan the Transaction diff --git a/pages/node/pclientd/configure.md b/pages/node/pclientd/configure.md index dee7fd8..f53d2a4 100644 --- a/pages/node/pclientd/configure.md +++ b/pages/node/pclientd/configure.md @@ -1,3 +1,5 @@ +# Configuring `pclientd` + First, install `pclientd` following the [instructions for installing `pcli`](../../pcli/install.md) but downloading `pclientd` rather than `pcli`. diff --git a/pages/node/pclientd/rpc.md b/pages/node/pclientd/rpc.md index 73462dd..53c54ac 100644 --- a/pages/node/pclientd/rpc.md +++ b/pages/node/pclientd/rpc.md @@ -1,3 +1,5 @@ +# Making RPC requests + `pclientd` exposes a GRPC and GRPC-web endpoint at its `bind_addr`. Several services are available. diff --git a/pages/node/pd/chain-upgrade.md b/pages/node/pd/chain-upgrade.md index 63ac658..0a5c5c1 100644 --- a/pages/node/pd/chain-upgrade.md +++ b/pages/node/pd/chain-upgrade.md @@ -1,3 +1,5 @@ +# Performing chain upgrades + When consensus-breaking changes are made to the Penumbra protocol, node operators must coordinate upgrading to the new version of the software at the same time. Penumbra uses a governance proposal for scheduling upgrades diff --git a/pages/node/pd/debugging.md b/pages/node/pd/debugging.md index d62136e..8d4dbff 100644 --- a/pages/node/pd/debugging.md +++ b/pages/node/pd/debugging.md @@ -1,3 +1,5 @@ +# Debugging a Penumbra node + Below are a list of FAQs about running a Penumbra node. ## How do I check whether my node is connected to other peers? diff --git a/pages/node/pd/indexing-events.md b/pages/node/pd/indexing-events.md index ac63d03..33c5a46 100644 --- a/pages/node/pd/indexing-events.md +++ b/pages/node/pd/indexing-events.md @@ -1,3 +1,5 @@ +# Indexing ABCI events + The `pd` software emits ABCI events while processing blocks. By default, these blocks are stored in CometBFT's key-value database locally, but node operators can opt-in to writing the events to an external PostgreSQL database. diff --git a/pages/node/pd/install.md b/pages/node/pd/install.md new file mode 100644 index 0000000..dd50472 --- /dev/null +++ b/pages/node/pd/install.md @@ -0,0 +1,31 @@ +# Installing pd +There are many ways to configure and run Penumbra. The easiest is to download +binaries for `pd` and `cometbft` on a Linux system. For alternatives, see +[deployment strategies](./requirements.md#deployment-strategies). +If you want a detailed guide, see the [tutorial on running a node](../../tutorials/running-node.md). + +## Quickstart +Download prebuilt binaries from the [Penumbra releases page on Github](https://github.com/penumbra-zone/penumbra/releases). +Make sure to use the most recent version available, as the version of `pd` must +match the software currently running on the network, to choose the correct platform for your machine. + +After downloading the `.tar.gz` file, extract it, and copy its contents to your `$PATH`. For example: + +``` +curl -sSfL -O https://github.com/penumbra-zone/penumbra/releases/download/{{ #include ../../penumbra_version.md }}/pd-x86_64-unknown-linux-gnu.tar.gz +tar -xf pd-x86_64-unknown-linux-gnu.tar.gz +sudo mv pd-x86_64-unknown-linux-gnu/pd /usr/local/bin/ + +# confirm the pd binary is installed by running: +pd --version +``` + +There's also a one-liner install script available on the release page, which will install `pd` to `$HOME/.cargo/bin/`. + +### Installing CometBFT + +You'll need to have [CometBFT installed](https://docs.cometbft.com/v0.37/guides/install) on your system to join your node to the testnet. +You must use a compatible version of CometBFT. Any version in the `v0.37.x` series will work, such as `{{ #include ../../cometbft_version.md }}`, +which you can download [from the CometBFT releases page](https://github.com/cometbft/cometbft/releases/tag/{{ #include ../../cometbft_version.md }}). +If you prefer to compile from source instead, make sure you are compiling the correct version by checking out its tag +in the CometBFT repo before building. diff --git a/pages/node/pd/join-network.md b/pages/node/pd/join-network.md index 89f6bff..d2a1a08 100644 --- a/pages/node/pd/join-network.md +++ b/pages/node/pd/join-network.md @@ -1,3 +1,5 @@ +# Joining a network + We provide instructions for running both fullnode deployments and validator deployments. A fullnode will sync with the network but will not have any voting power, and will not be eligible for staking or funding stream rewards. For more information on diff --git a/pages/node/pd/requirements.md b/pages/node/pd/requirements.md index e22b06a..be68bd9 100644 --- a/pages/node/pd/requirements.md +++ b/pages/node/pd/requirements.md @@ -1,3 +1,5 @@ +# Requirements for running a node + In order to run a Penumbra fullnode, you'll need a machine with sufficient resources. See specifics below. diff --git a/pages/node/pd/validator.md b/pages/node/pd/validator.md index 97a04a4..0fa72ca 100644 --- a/pages/node/pd/validator.md +++ b/pages/node/pd/validator.md @@ -1,3 +1,5 @@ +# Becoming a validator + After [starting your node](./join-network.md), you should now be participating in the network as a fullnode. If you wish to run a validator, you'll need to perform additional steps. diff --git a/pages/node/relayer.md b/pages/node/relayer.md new file mode 100644 index 0000000..038573e --- /dev/null +++ b/pages/node/relayer.md @@ -0,0 +1,17 @@ +# IBC relayer + +In order for Penumbra to interact with the broader [Cosmos] ecosystem, the community must +run [IBC] relaying software, to transmit packets between chains. Relaying is by design +permissionless. Some examples of relayer software are: + + * [hermes], maintained by [Informal Systems] + * [relayer], maintained by [Strangelove] + +This guide provides a tutorial for [setting up Hermes for use with Penumbra](relayer/hermes.md). + +[Cosmos]: https://cosmos.network +[IBC]: https://ibc.cosmos.network +[hermes]: https://hermes.informal.systems +[relayer]: https://github.com/cosmos/relayer +[Informal Systems]: https://informal.systems +[Strangelove]: https://strange.love diff --git a/pages/node/relayer/hermes.md b/pages/node/relayer/hermes.md new file mode 100644 index 0000000..82b9308 --- /dev/null +++ b/pages/node/relayer/hermes.md @@ -0,0 +1,74 @@ +# Hermes and Penumbra + +## Using a compatible Hermes version +Penumbra-compatibility exists in a fork of the Hermes software, available at: +[https://github.com/penumbra-zone/hermes](https://github.com/penumbra-zone/hermes). + +```shell +git clone https://github.com/penumbra-zone/hermes +cd hermes +cargo build --release +cp -v ./target/release/hermes /usr/local/bin/hermes +``` + +Use the latest commit in that repo. +Eventually the necessary changes will be upstreamed to the parent repo. +Until that happens, use the forked version. + +## Prerequisites + +In order to run a Hermes instance for Penumbra, you'll need to prepare the following: + +* The chain ID of the Penumbra network +* The chain ID of the counterparty network +* A funded Penumbra wallet, to pay fees on Penumbra (the host chain) +* A funded counterparty wallet, to pay fees on the counterparty chain +* Two (2) API endpoints for Penumbra node, `pd` gRPC and CometBFT JSON-RPC +* Two (2) API endpoints for counterparty node, app gRPC and CometBFT JSON-RPC +* A compatible version of `hermes`, built as described above. + +Crucially, the wallets should be unique, dedicated solely to this instance of Hermes, +and not used by any other clients. When you have the above information, you're ready to proceed. + +## Configuring Hermes + +For the most part, you can follow the [official Hermes docs on configuration](https://hermes.informal.systems/documentation/configuration/configure-hermes.html). +There are two Penumbra-specific exceptions: 1) key support; and 2) on-disk view database support. + +### Penumbra spend keys +The Penumbra integration does Hermes does not support the [`hermes keys add`](https://hermes.informal.systems/documentation/commands/keys/index.html) +flow for Penumbra chains. Instead, you should add the Penumbra wallet spendkey directly to the generated `config.toml` file, like so: + +```toml +# Replace "XXXXXXXX" with the spend key for the Penumbra wallet. +kms_config = { spend_key = "XXXXXXXX" } +``` + +To find the wallet's spend key, you can view `~/.local/share/pcli/config.toml`. + +### Penumbra view database +Then, to configure on-disk persistence of the Penumbra view database, add this line to your config: + +```toml +# Update the path below as appropriate for your system, +# and make sure to create the directory before starting Hermes. +view_service_storage_dir = "/home/hermes/.local/share/pcli-hermes-1" +``` + +Consider naming the directory `pcli-hermes-`, where counterparty is the name of the counterparty chain. +If you do not set this option, `hermes` will still work, but it will need to resync with the chain on startup, +which can take a long time, depending on how many blocks exist. + +## Path setup + +Again, see the [official Hermes docs on path setup](https://hermes.informal.systems/documentation/commands/path-setup/index.html). +In order to validate that the channels are visible on host chain, use `pcli query ibc channels` and confirm they match +what was output from the `hermes create` commands. + +## Best practices + +Consult the official Hermes docs for [running in production](https://hermes.informal.systems/tutorials/production/index.html), +as well as the [telemetry guide](https://hermes.informal.systems/documentation/telemetry/index.html). +You'll need to communicate the channels that you maintain to the community. How you do so is up to you. + +[hermes]: https://hermes.informal.systems diff --git a/pages/pcli/governance.md b/pages/pcli/governance.md index f01bf47..1a98ef1 100644 --- a/pages/pcli/governance.md +++ b/pages/pcli/governance.md @@ -106,8 +106,8 @@ from being slashed. This is usually used when a proposal has been superseded by alternative. - - + + In the above, rounded grey boxes are actions submitted by the proposal author, rectangular colored diff --git a/pages/pcli/install.md b/pages/pcli/install.md index 5e8efc5..c1913fb 100644 --- a/pages/pcli/install.md +++ b/pages/pcli/install.md @@ -4,7 +4,7 @@ match the software currently running on the network. Make sure choose the correct platform for your machine. Or, you can use a one-liner install script: -``` +```shell curl --proto '=https' --tlsv1.2 -LsSf https://github.com/penumbra-zone/penumbra/releases/download/{{ #include ../penumbra_version.md }}/pcli-installer.sh | sh # confirm the pcli binary is installed by running: diff --git a/pages/pcli/transaction.md b/pages/pcli/transaction.md index 44cd5b4..79fe03b 100644 --- a/pages/pcli/transaction.md +++ b/pages/pcli/transaction.md @@ -174,18 +174,11 @@ There are other pairs available that you can try this tool on, for example `gm:g -Penumbra aims to implement full IBC support for cross-chain asset transfers. For now, however, -we're only running a relayer between the Penumbra testnet and the [Osmosis testnet] chains. -For Testnet 69 Deimos, the channel is `0`: - - +Penumbra aims to implement full IBC support for cross-chain asset transfers. You can use a command +like `pcli query ibc channels` to view the available channels: ``` +------------+----------+--------------+-------------------------+-------+-----------------+---------------+ @@ -195,17 +188,15 @@ during setup. +------------+----------+--------------+-------------------------+-------+-----------------+---------------+ ``` -You can see this yourself by running `pcli query ibc channels` and comparing the output you see -with what's shown above. It's possible the output will include mention of other chains. +You should see something comparable to the example output above. It's possible the output will include mention of other chains. -The output above shows that the IBC channel id on Penumbra is 0, and on Osmosis it's 6105. +The output above shows that the IBC channel id on Penumbra is 0, and on the [Osmosis testnet] it's 6105. To initiate an IBC withdrawal from Penumbra testnet to Osmosis testnet: ```bash pcli tx withdraw --to --channel 5gm ``` -Unfortunately the CLI tooling for Osmosis is cumbersome. For now, use `hermes` as a user agent -for the Osmosis testnet, as described in the [IBC dev docs](../dev/ibc.md). +You should only use channels that you trust, otherwise transfers could fail, leading to loss of funds. [Osmosis testnet]: https://docs.osmosis.zone/overview/endpoints#testnet-networks diff --git a/pages/web.md b/pages/web.md index 5a17b8e..66e818c 100644 --- a/pages/web.md +++ b/pages/web.md @@ -33,8 +33,8 @@ The image files will become out of data quickly, requiring maintenance, and bloa --> - - + + ## Obtaining funds @@ -64,10 +64,6 @@ click **Connect**, then authorize the extension to work with the site. After doing so, you'll see buttons for actions such as **Receive**, **Send**, and **Exchange**. -As of Testnet 53, only the **Send** action is supported. Check back on -subsequent versions to follow progress as we implement more advanced -functionality in the web wallet. - ## Upgrading to a new testnet When a new testnet is released, you'll need to clear the existing state diff --git a/public/images/governance-dark.png b/public/images/governance-dark.png new file mode 100644 index 0000000..e0a420e Binary files /dev/null and b/public/images/governance-dark.png differ diff --git a/public/images/governance-light.png b/public/images/governance-light.png new file mode 100644 index 0000000..953b296 Binary files /dev/null and b/public/images/governance-light.png differ diff --git a/public/images/web-extension-sync-progress.png b/public/images/web-extension-sync-progress.png new file mode 100644 index 0000000..98a454b Binary files /dev/null and b/public/images/web-extension-sync-progress.png differ diff --git a/theme.config.jsx b/theme.config.jsx index 2a4c567..8ebcf9c 100644 --- a/theme.config.jsx +++ b/theme.config.jsx @@ -8,4 +8,11 @@ export default { }, docsRepositoryBase: 'https://github.com/penumbra-zone/guide', // ... other theme options + useNextSeoProps() { + return { + // Set "Penumbra Guide" in page titles, rather than default "Nextra". + // The `%s` is the title of the markdown document being displayed. + titleTemplate: '%s – Penumbra Guide' + } + }, }