Skip to content
Open
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
172 changes: 98 additions & 74 deletions docs/contribute-overview.es.md

Large diffs are not rendered by default.

180 changes: 102 additions & 78 deletions docs/contribute-overview.fr.md

Large diffs are not rendered by default.

148 changes: 86 additions & 62 deletions docs/contribute-overview.it.md

Large diffs are not rendered by default.

168 changes: 96 additions & 72 deletions docs/contribute-overview.ja.md

Large diffs are not rendered by default.

212 changes: 118 additions & 94 deletions docs/contribute-overview.ko.md

Large diffs are not rendered by default.

33 changes: 27 additions & 6 deletions docs/contribute-overview.md
Original file line number Diff line number Diff line change
Expand Up @@ -21,16 +21,36 @@ Use this checklist to track your progress. **All items must be complete before y
### Phase 1: Prerequisites
- [ ] DoubleZero CLI installed on a management server
- [ ] Hardware procured and meets [requirements](contribute.md#hardware-requirements)
- [ ] Data center rack space and power available (4U, 4KW recommended)
- [ ] Data center rack space and power available (see [Rack & Power](contribute.md#rack-power-requirements))
- [ ] DZD physically installed with management connectivity
- [ ] Public IPv4 block allocated for DZ protocol (**see [DZ Prefix Rules](#dz-prefix-rules)**)

### Phase 2: Account Setup

This phase alternates between the contributor and DZF. Each **DZF** item has to be confirmed before the next group can start.

**Contributor**

- [ ] GitHub username sent to DZF

**DZF**

- [ ] Access granted to the [malbeclabs/contributors](https://github.com/malbeclabs/contributors) repository

**Contributor**

- [ ] Service keypair generated (`doublezero keygen`)
- [ ] Metrics publisher keypair generated
- [ ] Service key submitted to DZF for authorization
- [ ] Contributor account created onchain (verify with `doublezero contributor list`)
- [ ] Access granted to [malbeclabs/contributors](https://github.com/malbeclabs/contributors) repository
- [ ] Service key **public key** sent to DZF

**DZF**

- [ ] Contributor account created onchain

**Contributor**

- [ ] Contributor account verified (`doublezero contributor list`)
- [ ] Rewards management set up (does not block going live, **see [Rewards Management](https://github.com/malbeclabs/contributors#rewards-management) in the contributors repository**)

### Phase 3: Device Provisioning
- [ ] Base device configuration applied (from contributors repo)
Expand All @@ -51,7 +71,7 @@ Use this checklist to track your progress. **All items must be complete before y

### Phase 5: Link Burn-in
- [ ] All links drained for 24-hour burn-in period
- [ ] [metrics.doublezero.xyz](https://metrics.doublezero.xyz) shows zero loss and zero errors for 24h
- [ ] [Link status dashboard](https://data.doublezero.xyz/status/links) shows zero loss and zero errors for 24h
- [ ] Links undrained after clean burn-in

### Phase 6: Verification & Activation
Expand Down Expand Up @@ -127,6 +147,7 @@ New to DoubleZero? Here are the essential terms (see [full Glossary](glossary.md
| **Telemetry Agent** | Collects TWAMP latency/loss metrics, submits to onchain ledger |
| **Service Key** | Your contributor identity key for CLI operations |
| **Metrics Publisher Key** | Key for signing telemetry submissions onchain |
| **Rewards Manager Key** | Key that controls which wallets receive your rewards (see the contributors repository) |

---

Expand All @@ -137,7 +158,7 @@ New to DoubleZero? Here are the essential terms (see [full Glossary](glossary.md
| Guide | Description |
|-------|-------------|
| [Requirements & Architecture](contribute.md) | Hardware specs, network architecture, bandwidth options |
| [Device Provisioning](contribute-provisioning.md) | Step-by-step: keys → repo access → device → links → agents |
| [Device Provisioning](contribute-provisioning.md) | Step-by-step: repo access → keys → device → links → agents |
| [Operations](contribute-operations.md) | Agent upgrades, link management, monitoring |
| [Geoprobe Deployment](contribute-geolocation.md) | Deploying and configuring geoProbe agents for geolocation |
| [Glossary](glossary.md) | All DoubleZero terminology defined |
Expand Down
178 changes: 101 additions & 77 deletions docs/contribute-overview.pt.md

Large diffs are not rendered by default.

236 changes: 130 additions & 106 deletions docs/contribute-overview.zh.md

Large diffs are not rendered by default.

848 changes: 220 additions & 628 deletions docs/contribute-provisioning.es.md

Large diffs are not rendered by default.

963 changes: 276 additions & 687 deletions docs/contribute-provisioning.fr.md

Large diffs are not rendered by default.

806 changes: 208 additions & 598 deletions docs/contribute-provisioning.it.md

Large diffs are not rendered by default.

998 changes: 256 additions & 742 deletions docs/contribute-provisioning.ja.md

Large diffs are not rendered by default.

973 changes: 214 additions & 759 deletions docs/contribute-provisioning.ko.md

Large diffs are not rendered by default.

77 changes: 51 additions & 26 deletions docs/contribute-provisioning.md
Original file line number Diff line number Diff line change
Expand Up @@ -88,8 +88,8 @@ Before you can provision a device, you need the physical hardware set up and som
| Requirement | Why It's Needed |
|-------------|-----------------|
| **DZD Hardware** | Arista 7280CR3A switch (see [hardware specs](contribute.md#hardware-requirements)) |
| **Rack Space** | 4U with proper airflow |
| **Power** | Redundant feeds, ~4KW recommended |
| **Rack Space** | 2U reserved per DZD (1U in use today), with proper airflow. See [Rack & Power](contribute.md#rack-power-requirements) |
| **Power** | Two independent feeds, each able to carry the whole load on its own. See [Rack & Power](contribute.md#rack-power-requirements) |
| **Management Access** | SSH/console access to configure the switch |
| **Internet Connectivity** | For metrics publishing and to fetch configuration from the controller |
| **Public IPv4 Block** | Minimum /29 for the DZ prefix pool (see below) |
Expand Down Expand Up @@ -163,7 +163,9 @@ flowchart LR

## Phase 2: Account Setup

In this phase, you create the cryptographic keys that identify you and your devices on the network.
In this phase, you create the cryptographic keys that identify you and your devices on the network, and you set up rewards management.

The steps run in this order for a reason: repository access first, because the repository holds the instructions for the later steps, then your keys, then rewards. Some steps need DZF to act before you can continue, and each one below says so.

### Where to Run the CLI

Expand Down Expand Up @@ -199,21 +201,33 @@ Think of keys like secure login credentials:

- **Service Key**: Your contributor identity - used to run CLI commands
- **Metrics Publisher Key**: Your device's identity for submitting telemetry data
- **Rewards Manager Key**: Controls which wallets receive your rewards - see [Rewards Management](https://github.com/malbeclabs/contributors#rewards-management) in the contributors repository

Both are cryptographic keypairs (a public key you share, a private key you keep secret).
All three are cryptographic keypairs (a public key you share, a private key you keep secret).

```mermaid
flowchart LR
subgraph "Your Keys"
SK[Service Key<br/>~/.config/solana/id.json]
MK[Metrics Publisher Key<br/>~/.config/doublezero/metrics-publisher.json]
RK[Rewards Manager Key<br/>keep offline]
end

SK -->|Used for| CLI[CLI Commands<br/>doublezero device create<br/>doublezero link create]
MK -->|Used for| TEL[Telemetry Agent<br/>Submits metrics onchain]
RK -->|Used for| REW[Rewards Portal<br/>Sets recipient wallets]
```

### Step 2.1: Generate Your Service Key
!!! note "Keep the rewards manager key separate"
The service key and metrics publisher key live on your management server and switch. The rewards manager key controls where your money goes, so keep it off those machines. It is only needed when you change your recipient wallets.

### Step 2.1: Request Contributors Repository Access

Contact the DoubleZero Foundation or Malbec Labs and give them your **GitHub username**.

They grant you access to the private [malbeclabs/contributors](https://github.com/malbeclabs/contributors) repository. Do this first: the repository holds the base device configuration, the TCAM and ACL profiles, and the rewards management instructions you need in the steps below.

### Step 2.2: Generate Your Service Key

This is your main identity for interacting with DoubleZero.

Expand All @@ -223,27 +237,24 @@ doublezero keygen

This creates a keypair at the default location. The output shows your **public key** - this is what you'll share with DZF.

### Step 2.2: Generate Your Metrics Publisher Key
### Step 2.3: Generate Your Metrics Publisher Key

This key is used by the Telemetry Agent to sign metric submissions.

```bash
doublezero keygen -o ~/.config/doublezero/metrics-publisher.json
```

### Step 2.3: Submit Keys to DZF

Contact the DoubleZero Foundation or Malbec Labs and provide:
### Step 2.4: Submit Your Service Key to DZF

1. Your **service key public key**
2. Your **GitHub username** (for repo access)
Send DZF your **service key public key**.

They will:
They create your **contributor account** onchain and confirm when it is done.

- Create your **contributor account** onchain
- Grant access to the private **contributors repository**
!!! danger "Public keys only"
Never send a private key or a keypair file to anyone, including DZF. Only the public key is ever needed.

### Step 2.4: Verify Your Account
### Step 2.5: Verify Your Account

Once confirmed, verify your contributor account exists:

Expand All @@ -253,16 +264,14 @@ doublezero contributor list

You should see your contributor code in the list.

### Step 2.5: Access the Contributors Repository
### Step 2.6: Set Up Rewards Management

The [malbeclabs/contributors](https://github.com/malbeclabs/contributors) repository contains:
Rewards management decides which wallets receive the [2Z](glossary.md#2z-token) your contribution earns, and in what proportions.

- Base device configurations
- TCAM profiles
- ACL configurations
- Additional setup instructions
Follow [Rewards Management](https://github.com/malbeclabs/contributors#rewards-management) in the contributors repository, which you now have access to from Step 2.1.

Follow the instructions there for device-specific configuration.
!!! note "This does not block the rest of your setup"
You can provision your device, establish links and start carrying traffic without this in place, so treat the phases below as independent of it.

---

Expand Down Expand Up @@ -947,10 +956,26 @@ You should see "Starting telemetry collector" and "Starting submission loop".
!!! warning "All new links must burn in before carrying traffic"
New links must be **drained for at least 24 hours** before being activated for production traffic. This burn-in requirement is defined in [RFC12: Network Provisioning](https://github.com/malbeclabs/doublezero/blob/main/rfcs/rfc12-network-provisioning.md), which specifies ~200,000 DZ Ledger slots (~20 hours) of clean metrics before a link is ready for service.

With agents installed and running, monitor your links on [metrics.doublezero.xyz](https://metrics.doublezero.xyz) for at least 24 consecutive hours:
With agents installed and running, monitor each new link for at least 24 consecutive hours.

Take the link's account key from the `account` column of `doublezero link list`, then open its page on the data portal:

```
https://data.doublezero.xyz/dz/links/<LINK_ACCOUNT_KEY>
```

The page opens on a 24 hour window, which is the burn-in period. Check that all of these stay clean for the whole window:

| Chart | What to look for |
|-------|------------------|
| **Health** | No red bars. Hover a bar to see why it was flagged |
| **Packet loss** | Flat at zero. Taken from the TWAMP measurements between the two devices |
| **Interface issues** | Nothing plotted at all. Errors, FCS errors, discards and carrier transitions all appear here, with side A above the axis and side Z below it |
| **Latency**, **Jitter** | Steady, with no steps or spikes |

Carrier transitions deserve particular attention: they mean the link went down and came back up, so it is not stable yet even if the other charts look clean.

- **"DoubleZero Device-Link Latencies"** dashboard — verify **zero packet loss** on the link over time
- **"DoubleZero Network Metrics"** dashboard — verify **zero errors** on your links
To check several links at once, use the [link status dashboard](https://data.doublezero.xyz/status/links).

Only undrain the link once the burn-in period shows a clean link with zero loss and zero errors.

Expand All @@ -965,7 +990,7 @@ Run through this checklist to confirm everything is working.

**Before setting `max_users` above 0, you must:**

1. Confirm all links have completed their **24-hour burn-in** with zero loss/errors on [metrics.doublezero.xyz](https://metrics.doublezero.xyz)
1. Confirm all links have completed their **24-hour burn-in** with zero loss/errors on the [link status dashboard](https://data.doublezero.xyz/status/links)
2. **Coordinate with DZ/Malbec Labs** to run a connectivity test:
- Can a test user connect to your device?
- Does the user receive routes over the DZ network?
Expand Down
Loading
Loading