> ## Documentation Index
> Fetch the complete documentation index at: https://docs.presschain.io/llms.txt
> Use this file to discover all available pages before exploring further.

# V3 Testnet

> Canonical connection parameters and environment rules for the active PressChain V3 test network.

# V3 Testnet

The active PressChain protocol major is V3. The testnet is the environment developers should use to integrate identity, read chain state, test transaction flows and validate indexers before any mainnet assumptions are introduced.

| Setting              | Value                       |
| -------------------- | --------------------------- |
| Network name         | `presschain-testnet`        |
| Chain ID             | `77117002`                  |
| Chain ID in hex      | `0x498B64A`                 |
| Public RPC           | `https://rpc.presschain.io` |
| Protocol major       | `v3`                        |
| Recovery epoch       | `1`                         |
| Canonical Capsule ID | `bytes32`                   |

<Warning>
  Do not copy testnet contract addresses, balances or genesis assumptions into a future mainnet configuration. Mainnet has an explicit authority and readiness process and will receive a new PRESS asset.
</Warning>

## Verify the network before using it

A client should not trust a label alone. Query the connected endpoint and verify the chain ID before enabling a write action.

```bash theme={null}
curl -s https://rpc.presschain.io \
  -H 'content-type: application/json' \
  --data '{"jsonrpc":"2.0","id":1,"method":"eth_chainId","params":[]}'
```

The expected result is the hexadecimal representation of `77117002`, currently `0x498B64A`.

In a browser application using PressKey:

```ts theme={null}
const provider = window.presschain;
if (!provider?.isPressKey) {
  throw new Error("PressKey is required for this action");
}

const chainId = await provider.request({ method: "eth_chainId" });
if (String(chainId).toLowerCase() !== "0x498b64a") {
  throw new Error(`Unexpected PressChain network: ${chainId}`);
}
```

Your app should show a clear network mismatch state rather than attempting a transaction against the wrong chain.

## What testnet is for

Use the V3 testnet to exercise real protocol semantics:

* resolving identities and role state
* preparing and signing user-authorized transactions
* working with canonical `bytes32` Capsule IDs
* attaching and reading evidence in test flows
* building contributor and attribution interfaces
* indexing logs and testing replay behavior
* validating economic action classification without assuming final mainnet fee amounts

A testnet integration should be production-shaped even when the assets have no mainnet value. That means no private keys in source control, no server-side custody shortcuts and no client logic that silently bypasses protocol permissions.

## Configuration pattern

Keep network configuration explicit and environment-scoped.

```ts theme={null}
export const presschainV3 = {
  name: "presschain-testnet",
  chainId: 77117002,
  chainIdHex: "0x498B64A",
  rpcUrl: "https://rpc.presschain.io",
  protocolMajor: "v3",
} as const;
```

Contract addresses should be loaded from the approved deployment or authority manifest for the environment. Avoid scattering addresses through components. Centralizing them makes it possible to verify a deployment as a unit and prevents one stale constant from silently pointing to an older contract.

## Canonical identifiers

The V3 authority file explicitly selects `bytes32` Capsule IDs and disables legacy `uint256` writes. Preserve these identifiers as strings in JSON and browser code.

Do not run a Capsule ID through `Number()`, `parseInt()` or database columns that cannot safely preserve 256 bits. A lowercased `0x`-prefixed 64-byte hex string is a practical application representation.

## Recovery epoch

The current network authority records recovery epoch `1`. This is useful operational context when comparing old deployments or archived engineering material. Applications should follow the current authority manifest rather than inferring canonical state from the newest-looking historical file.

## Readiness mindset

A successful testnet integration does more than render a balance. It proves the application can survive the conditions that matter in production: RPC timeouts, duplicate submissions, transaction replacement, rejected permissions, stale projections, reorg handling and users locking their signer while an action is being prepared.

Build those failure paths now. Mainnet should be a controlled environment transition, not the first time the application behaves like production software.
