Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion README.md
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@

Developer documentation site for Konstellation, built with
[Docusaurus](https://docusaurus.io). Public, pre-testnet — most pages are
placeholders until `networks/testnet-1` exists (see `ENGINEERING.md §6.6`
placeholders until `networks/devnet-1` and `networks/testnet-1` exist (see `ENGINEERING.md §6.6`
and `STATUS.md` in the org root for what's real vs. stubbed).

## Local development
Expand Down
4 changes: 2 additions & 2 deletions docs/contracts.md
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,7 @@ sidebar_position: 3
Konstellation ships a set of contracts preinstalled in genesis at their
canonical, deterministic addresses, so existing wallet SDKs and tooling that
hard-code these addresses work unmodified. Every address on this page is
identical on `testnet-1`, `konstellation-1` and a local dev chain.
identical on `devnet-1`, `testnet-1`, `konstellation-1` and a local dev chain.

Two sources of truth, in order:

Expand Down Expand Up @@ -243,7 +243,7 @@ The schedules, on a 1 B KASH genesis supply:

Per-wallet addresses are a function of the beneficiary config
(`script/config/vesting.json`, from `vesting.example.json`; real team beneficiaries and TGE are not yet
filled in). `testnet-1` mirrors the same shape with test addresses. This
filled in). `devnet-1` and `testnet-1` mirror the same shape with test addresses. This
page will list the deployed instances once `networks/<net>/genesis.json`
funds them.

Expand Down
52 changes: 43 additions & 9 deletions docs/quickstart.md
Original file line number Diff line number Diff line change
Expand Up @@ -8,23 +8,40 @@ sidebar_position: 1
# Quickstart

:::caution Pre-testnet
Konstellation has not launched a public network yet. The `testnet-1` RPC
and explorer URLs on this page are placeholders until the genesis is
published in the [`networks`
Konstellation has not launched a public network yet. The `devnet-1` and
`testnet-1` RPC, explorer and faucet URLs on this page are placeholders until
each network's genesis is published in the [`networks`
repo](https://github.com/konstellation-network/networks). Chain ids, token
and the local dev chain are settled; contract addresses that are not
genesis preinstalls (WKASH, vesting) are provisional until deployed on
`testnet-1` and listed in `networks/testnet-1/chain.json`.
genesis preinstalls (WKASH, vesting) are provisional until deployed and
listed in `networks/<network>/chain.json`.
:::

## Which network?

Konstellation runs three public networks. **Dapp developers start on
`devnet-1`.**

| Network | For | Validators | What to expect |
|---|---|---|---|
| **`devnet-1`** | **building and testing dapps** | 1, foundation-run | Runs the same release as mainnet; test KASH from the faucet; rarely reset |
| `testnet-1` | validator operators: upgrade drills, chaos tests, validator admissions | 4, foundation-run | New releases land here first; expect planned disruption |
| `konstellation-1` | mainnet, real value | 4, foundation-run at genesis; more admitted by a permissioned procedure, opening to permissionless by governance | — |

A release reaches `testnet-1` first, then `devnet-1` one to two weeks before
mainnet, then `konstellation-1` — so what works on devnet is what mainnet is
about to run.

## Network parameters

| Field | Value |
|---|---|
| Chain name | Konstellation |
| Cosmos chain-id (devnet) | `devnet-1` |
| Cosmos chain-id (testnet) | `testnet-1` |
| Cosmos chain-id (mainnet) | `konstellation-1` |
| EIP-155 chain ID (mainnet) | `5667` |
| EIP-155 chain ID (devnet) | `56672` |
| EIP-155 chain ID (testnet) | `56671` |
| EIP-155 chain ID (local dev) | `56670` |
| Native token | KASH |
Expand All @@ -33,15 +50,32 @@ genesis preinstalls (WKASH, vesting) are provisional until deployed on

The EIP-155 ids are enforced by the node: a real network's id is used only by
that network, and a local chain can never be given one, so a transaction
signed for a dev chain cannot replay on `testnet-1` or mainnet.
signed for a dev chain cannot replay on `devnet-1`, `testnet-1` or mainnet.

## Add Konstellation to MetaMask

MetaMask → **Settings → Networks → Add a network → Add a network manually**.
Rabby and other EIP-3085 wallets take the same values.

### devnet-1 (start here)

| Field | Value |
|---|---|
| Network name | Konstellation Devnet |
| New RPC URL | **TBD** — published in `networks/devnet-1/chain.json` when the network launches; see [RPC Endpoints](/rpc-endpoints) |
| Chain ID | `56672` |
| Currency symbol | `KASH` |
| Currency decimals | 18 |
| Block explorer URL | **TBD** — Blockscout, see the [`explorer`](https://github.com/konstellation-network/explorer) repo |

Test KASH comes from the devnet-1 faucet (**TBD** — [`faucet`](https://github.com/konstellation-network/faucet) repo).

### testnet-1

Only if you are rehearsing validator operations or want a release before it
reaches devnet — `testnet-1` may be disrupted by upgrade drills and chaos
tests.

| Field | Value |
|---|---|
| Network name | Konstellation Testnet |
Expand All @@ -51,7 +85,7 @@ Rabby and other EIP-3085 wallets take the same values.
| Currency decimals | 18 |
| Block explorer URL | **TBD** — Blockscout, see the [`explorer`](https://github.com/konstellation-network/explorer) repo |

Test KASH comes from the faucet (**TBD** — [`faucet`](https://github.com/konstellation-network/faucet) repo).
testnet-1 has its own faucet too (**TBD**).

### Local dev chain

Expand All @@ -75,7 +109,7 @@ Programmatically (`wallet_addEthereumChain`), for the local chain:
}
```

`0xdd5e` is 56670; `testnet-1`'s `56671` is `0xdd5f`, mainnet's `5667` is `0x1623`.
`0xdd5e` is 56670; `devnet-1`'s `56672` is `0xdd60`, `testnet-1`'s `56671` is `0xdd5f`, mainnet's `5667` is `0x1623`.

## Run a local dev chain

Expand Down Expand Up @@ -104,7 +138,7 @@ starts the node with every API enabled:
| Block time | ~1 s (`timeout_commit = "1s"`); node `minimum-gas-prices` and `evm.min-tip` are 0 |

The dev chain is a real `konstellationd`: the same genesis preinstalls,
precompiles, compliance module and circuit breaker as `testnet-1`, with
precompiles, compliance module and circuit breaker as `devnet-1` and `testnet-1`, with
governance and compliance timelocks shortened to seconds so they can be
exercised in a session (voting period 30 s, compliance timelocks 60 s, the
validator key as the compliance authority).
Expand Down
31 changes: 25 additions & 6 deletions docs/rpc-endpoints.md
Original file line number Diff line number Diff line change
Expand Up @@ -7,9 +7,10 @@ sidebar_position: 2
# RPC Endpoints

:::caution Pre-testnet
No public endpoints exist yet. This page is a placeholder for the table that
will ship with `testnet-1` (see `networks/testnet-1/chain.json` once it
exists).
No public endpoints exist yet. This page is a placeholder for the tables
that will ship with `devnet-1` and `testnet-1` (see
`networks/<network>/chain.json` once they exist). Dapp developers: use
`devnet-1`.
:::

## Local development
Expand All @@ -26,7 +27,7 @@ Started via `./local_node.sh -y` in the `konstellation` repo. Chain ID
`56670` (local/unknown networks only — the node never lets a dev chain run
with a real network's ID; see [Run a Validator](/run-a-validator#the-chain-id-invariant)).

## testnet-1
## devnet-1 — for dapp developers

| Protocol | Endpoint |
|---|---|
Expand All @@ -36,14 +37,32 @@ with a real network's ID; see [Run a Validator](/run-a-validator#the-chain-id-in
| Cosmos gRPC | _TBD_ |
| Tendermint RPC | _TBD_ |
| Explorer | _TBD — see [`explorer`](https://github.com/konstellation-network/explorer)_ |
| Faucet | _TBD — see [`faucet`](https://github.com/konstellation-network/faucet)_ |

Chain ID `56671`. Public endpoints will be published in
Chain ID `56672`. One foundation-run validator, the same release as mainnet,
rarely reset. Public endpoints will be published in
`networks/devnet-1/chain.json` (cosmos chain-registry format) once devnet-1
is live — this table should link there rather than duplicate it.

## testnet-1 — validator and upgrade rehearsals

| Protocol | Endpoint |
|---|---|
| EVM JSON-RPC | _TBD_ |
| EVM WebSocket | _TBD_ |
| Cosmos REST | _TBD_ |
| Cosmos gRPC | _TBD_ |
| Tendermint RPC | _TBD_ |
| Explorer | _TBD — see [`explorer`](https://github.com/konstellation-network/explorer)_ |

Chain ID `56671`. Four foundation-run validators; new releases land here
first and the network may be disrupted by drills. Public endpoints will be published in
`networks/testnet-1/chain.json` (cosmos chain-registry format) once
testnet-1 is live — this table should link there rather than duplicate it.

## konstellation-1 (mainnet)

Not launched. Will follow the same shape as testnet-1 once genesis exists.
Not launched. Will follow the same shape as devnet-1 and testnet-1 once genesis exists.
Chain ID `5667`.

## WebSocket from a browser (`eth_subscribe`)
Expand Down
33 changes: 20 additions & 13 deletions docs/run-a-validator.md
Original file line number Diff line number Diff line change
Expand Up @@ -10,8 +10,10 @@ sidebar_position: 4
There is no validator set to join yet. Everything on this page about the
binary's behaviour is real and verified against the current `konstellationd`;
the `testnet-1` specifics (peers, genesis, release version) are placeholders
until `networks/testnet-1` publishes them. The genesis set on both networks
is 10 foundation-run validators; independent operators are admitted
until `networks/testnet-1` publishes them. The genesis set on `testnet-1`
and `konstellation-1` is 4 foundation-run validators (`devnet-1`, the dapp
developers' network, runs a single foundation validator and takes no
outside validators); independent operators are admitted
afterwards through the permissioned procedure described under
[Become a validator](#become-a-validator) — and are admitted onto
`testnet-1` first precisely so they can find the gaps in this page. If
Expand All @@ -21,7 +23,7 @@ written, that is a docs bug, please report it.

`konstellationd` is one binary for every network. It does not know which
network it is on beyond the chain-id checks described below: everything that
differs between `testnet-1` and `konstellation-1` lives in the network's
differs between `devnet-1`, `testnet-1` and `konstellation-1` lives in the network's
`genesis.json` (in the [`networks`](https://github.com/konstellation-network/networks)
repo) and in your own configuration. The EVM runs the **Prague** (Pectra)
fork from genesis, which is what `cosmos/evm` v0.7.3 activates by default;
Expand Down Expand Up @@ -155,7 +157,7 @@ If a recipe tells you to patch `stake` → `esp`, set `evm-chain-id`, or set
- **`app.toml` `[evm] evm-chain-id` is derived from the genesis.** After
writing `genesis.json`, `init` reads the chain-id back out of it and
reconciles `app.toml`: a known network gets its required EIP-155 id
(`konstellation-1` → `5667`, `testnet-1` → `56671`); any other chain-id
(`konstellation-1` → `5667`, `devnet-1` → `56672`, `testnet-1` → `56671`); any other chain-id
gets the local id `56670`, and never a real network's id. A fresh
`app.toml` is written with the right value directly; one that already
existed (for example created by `konstellationd config set client
Expand All @@ -179,7 +181,7 @@ If a recipe tells you to patch `stake` → `esp`, set `evm-chain-id`, or set

- The `genesis profile:` line tells you which governance timings the
genesis got. Only the exact chain-id `konstellation-1` selects the mainnet
profile (3-day voting, 1 000 / 5 000 KASH deposits); `testnet-1`, local and
profile (3-day voting, 1 000 / 5 000 KASH deposits); `devnet-1`, `testnet-1`, local and
unknown chain-ids get the fast testnet/dev profile (2 h / 30 min, 10 / 50
KASH). Irrelevant when you replace the placeholder genesis with a
published one, but it is why a dev chain and mainnet look different.
Expand Down Expand Up @@ -218,7 +220,7 @@ belongs only to that network, because a transaction signed under it would
replay there:

```
panic: genesis chain-id "my-devnet" is not testnet-1 but app.toml has evm-chain-id 56671, which belongs to testnet-1: a tx signed here would replay there; use 56670 (local) or another unreserved id
panic: genesis chain-id "my-chain" is not testnet-1 but app.toml has evm-chain-id 56671, which belongs to testnet-1: a tx signed here would replay there; use 56670 (local) or another unreserved id
```

If you see any of these, a file in `config/` is stale (usually
Expand Down Expand Up @@ -360,12 +362,13 @@ WantedBy=multi-user.target

## Become a validator

The genesis set is **10 foundation-run validators** created by gentx, on
`testnet-1` and `konstellation-1` alike (`max_validators` is 30, so 20 seats
are empty at genesis). Admission of further validators is **permissioned**
The genesis set is **4 foundation-run validators** created by gentx, on
`testnet-1` and `konstellation-1` alike (`max_validators` is 30, so 26 seats
are empty at genesis). `devnet-1` is not a validator network: it runs one
foundation validator for dapp developers and admits no one. Admission of further validators is **permissioned**
— a recorded decision, opening up in stages by governance — and it is
enforced by the chain, not by policy: `/cosmos.staking.v1beta1.MsgCreateValidator` is
disabled in `x/circuit` genesis state on both networks, so a plain
disabled in `x/circuit` genesis state on every network, so a plain
`tx staking create-validator` is refused at submission:

```
Expand Down Expand Up @@ -472,7 +475,9 @@ install -m 0755 "konstellationd-${VERSION}-linux-amd64" "$DAEMON_HOME/cosmovisor
Cosmovisor swaps at the governance-set halt height; you do not need to be
awake. On mainnet the height comes from a `MsgSoftwareUpgrade` proposal; on
`testnet-1` the foundation's fleet is upgraded with Ansible and the same
proposal is submitted so the governance path is rehearsed. See
proposal is submitted so the governance path is rehearsed. Every release
rolls out in the same order: `testnet-1` first, then `devnet-1` one to two
weeks before mainnet, then `konstellation-1`. See
[Upgrades](/upgrades) for the log of what has shipped.

**Rollback.** The unit above runs with `UNSAFE_SKIP_BACKUP=true`, so your
Expand Down Expand Up @@ -514,12 +519,14 @@ publishes the genesis. The authoritative join page will be
| State sync / snapshots | **TBD** — `networks/testnet-1/snapshots.md` once archive nodes exist |
| Public RPC | **TBD** — see [RPC Endpoints](/rpc-endpoints) |

At genesis the validator set is 10 foundation-run validators
At genesis the validator set is 4 foundation-run validators
(`max_validators` 30); independent operators are admitted afterwards through
the permissioned procedure above — `testnet-1` rehearses
exactly what mainnet runs, admissions included. Governance on `testnet-1` is deliberately
fast (2-hour voting period) so upgrade drills take hours, not days;
everything economic is identical to mainnet.
everything economic is identical to mainnet. `testnet-1` is where new
releases land first and where upgrade drills, chaos tests and halt/restart
drills happen, so expect planned disruption.

If something breaks, [Troubleshooting](/troubleshooting) has the errors we
know about.
2 changes: 1 addition & 1 deletion docs/troubleshooting.md
Original file line number Diff line number Diff line change
Expand Up @@ -188,7 +188,7 @@ Two message families are worth knowing by name:
|---|---|
| `/ibc.applications.transfer.v1.MsgTransfer` | all IBC sends stop, Cosmos and EVM (the ICS20 precompile included) |
| `/cosmos.evm.vm.v1.MsgEthereumTx` | the **entire EVM is paused** — every `eth_sendRawTransaction` is refused until reset |
| `/cosmos.staking.v1beta1.MsgCreateValidator` | **disabled by design from genesis** on both networks: validator admission is permissioned, see [Run a Validator](/run-a-validator#become-a-validator). Not a fault. (Decided; the genesis tooling does not write the entry yet, so a dev chain accepts the message.) |
| `/cosmos.staking.v1beta1.MsgCreateValidator` | **disabled by design from genesis** on every network: validator admission is permissioned, see [Run a Validator](/run-a-validator#become-a-validator). Not a fault. (Decided; the genesis tooling does not write the entry yet, so a dev chain accepts the message.) |

The breaker cannot disable its own messages or governance's, so a trip is
always reversible.
Expand Down
Loading