Skip to content

Commit baf2f5c

Browse files
committed
lint
1 parent 781ae8a commit baf2f5c

File tree

1 file changed

+51
-52
lines changed

1 file changed

+51
-52
lines changed

src/content/docs/design/list-record-namespace.mdx

Lines changed: 51 additions & 52 deletions
Original file line numberDiff line numberDiff line change
@@ -2,47 +2,47 @@
22
title: Record Version & Type Namespace Proposal
33
---
44

5-
## **1 Purpose & Scope**
5+
## **1 Purpose & Scope**
66

77
The List Record header contains **two 1‑byte fields**:
88

9-
* **`version`** – serialization format of the record’s payload.
10-
* **`type`** – semantic meaning of the payload (address, URL, ENS name, …).
9+
- **`version`** – serialization format of the record’s payload.
10+
- **`type`** – semantic meaning of the payload (address, URL, ENS name, …).
1111

12-
Until now only `version 0x01` / `type 0x01` (Ethereum Address) have been defined. This proposal unlocks the remaining 254 × 254 combinations while reserving specific ranges for core evolution *and* an explicit **testing sandbox**.
12+
Until now only `version 0x01` / `type 0x01` (Ethereum Address) have been defined. This proposal unlocks the remaining 254x254 combinations while reserving specific ranges for core evolution _and_ an explicit **testing sandbox**.
1313

1414
It additionally provides:
1515

16-
* A formal **field‑level specification** (Section 3\)
17-
* A community **template** for proposing record‑types (Section 4\)
18-
* A **worked example** (Section 5\)
19-
* **Implementation guidance** (Section 6\)
16+
- A formal **field‑level specification** (Section 3\)
17+
- A community **template** for proposing record‑types (Section 4\)
18+
- A **worked example** (Section 5\)
19+
- **Implementation guidance** (Section 6\)
2020

21-
## **2 Namespace, Governance & Testing Space**
21+
## **2 Namespace, Governance & Testing Space**
2222

23-
`version` and `type` are each a single byte (`uint8`). They appear in‑order at the start of every encoded record (`0xVV TT …`).
23+
`version` and `type` are each a single byte (`uint8`). They appear in‑order at the start of every encoded record (`0xVVTT...`).
2424

2525
| Field | Size | Core‑reserved Range | Community Range | Testing | Notes |
26-
| ----- | ----- | ----- | ----- | ----- | ----- |
27-
| `version` | 1 B | `0x00 – 0x7F` | `0x80 – 0xFE` | **`0xFF`** | `0xFF` \= free‑for‑all *testing* version; never assigned by the protocol. |
26+
| --- | --- | --- | --- | --- | --- |
27+
| `version` | 1 B | `0x00 – 0x7F` | `0x80 – 0xFE` | **`0xFF`** | `0xFF` \= free‑for‑all _testing_ version; never assigned by the protocol. |
2828
| `type` | 1 B | `0x00 – 0x7F` | `0x80 – 0xFF` | n/a | When `version = 0xFF`, any `type` value may be used experimentally. |
2929

3030
### **2.1 Allocation workflow**
3131

32-
1. **Core space** (`0x00 – 0x7F`)
33-
* Submit an EFPIP PR to `ethereumfollowprotocol/specs`.
34-
* Requires two maintainer approvals.
35-
* High threshold for acceptance
36-
2. **Community space** (`0x80 – 0xFE`)
37-
* Open a PR adding your filled‑in template (Section 4\) to `community/records/`.
38-
* First PR merged wins the value.
39-
* Frivolous requests will be rejected.
40-
3. **Testing space** (`version 0xFF`)
41-
* No registration required; intended for throw‑away experiments and CI fixtures.
42-
* Records using this version **MUST NOT** appear on production lists intended for end‑users.
43-
4. Dormant allocations (e.g, \>365 days with no contract/use) may be reclaimed.
44-
45-
## **3 Wire Format**
32+
1. **Core space** (`0x00 – 0x7F`)
33+
- Submit an EFPIP PR to `ethereumfollowprotocol/specs`.
34+
- Requires two maintainer approvals.
35+
- High threshold for acceptance
36+
2. **Community space** (`0x80 – 0xFE`)
37+
- Open a PR adding your filled‑in template (Section 4\) to `community/records/`.
38+
- First PR merged wins the value.
39+
- Frivolous requests will be rejected.
40+
3. **Testing space** (`version 0xFF`)
41+
- No registration required; intended for throw‑away experiments and CI fixtures.
42+
- Records using this version **MUST NOT** appear on production lists intended for end‑users.
43+
4. Dormant allocations (e.g, \>365 days with no contract/use) may be reclaimed.
44+
45+
## **3 Wire Format**
4646

4747
```
4848
+----------+----------+---------------------------+
@@ -51,12 +51,12 @@ It additionally provides:
5151
+----------+----------+---------------------------+
5252
```
5353

54-
* **Byte order:** Big‑endian as written (`0xVV TT …`).
55-
* **Record prefix \= `0xVVTT`** for easy ranged queries.
56-
* **`data` length:** Defined per `(version,type)` combo; MUST fit within overall List Op.
57-
* **Testing space:** When `version = 0xFF`, payloads may be *any* format; clients MAY ignore them.
54+
- **Byte order:** Big‑endian as written (`0xVV TT …`).
55+
- **Record prefix \= `0xVVTT`** for easy ranged queries.
56+
- **`data` length:** Defined per `(version,type)` combo; MUST fit within overall List Op.
57+
- **Testing space:** When `version = 0xFF`, payloads may be _any_ format; clients MAY ignore them.
5858

59-
## **4 Template for a New Record‑Type**
59+
## **4 Template for a New Record‑Type**
6060

6161
```
6262
### <Name> Record (version 0xVV, type 0xTT)
@@ -65,7 +65,7 @@ It additionally provides:
6565
* **Field specification:**
6666
| Offset | Size | Type | Description |
6767
|-------:|-----:|------|-------------|
68-
| 0 | …B | … | … |
68+
| 0 | … B | … | … |
6969
| … | … | … | … |
7070
* **Canonical Encoding:** `0xVVTT<data>`
7171
* **Validation Rules:**
@@ -75,13 +75,13 @@ It additionally provides:
7575
* **Reference Implementation:** (optional) Solidity / TS / Rust.
7676
```
7777

78-
## **5 Worked Example – ENS Name Record**
78+
## **5 Worked Example - ENS Name Record**
7979

80-
| Field | Value |
81-
| :---- | :---- |
82-
| `version` | `0x80` *(first community version)* |
83-
| `type` | `0x81` *(ENS Name)* |
84-
| `data` | Normalised ENS label, UTF‑8, ≤ 255 bytes |
80+
| Field | Value |
81+
| :-------- | :---------------------------------------- |
82+
| `version` | `0x80` _(first community version)_ |
83+
| `type` | `0x81` _(ENS Name)_ |
84+
| `data` | Normalised ENS label, UTF‑8, =< 255 bytes |
8585

8686
### **Encoded example (`vitalik.eth`)**
8787

@@ -95,36 +95,35 @@ Hex stream: `0x8081766974616c696b2e657468`
9595

9696
Validation rules:
9797

98-
1. `data.length ≤ 255` bytes.
98+
1. `data.length =<255` bytes.
9999
2. ENS label passes \[EIP‑137\] normalisation.
100100

101-
## **6 Implementation Considerations**
101+
## **6 Implementation Considerations**
102102

103103
### **6.1 Smart‑contracts**
104104

105-
* No storage layout change – still two header bytes.
106-
* Helper libs should expose `uint8 version, uint8 rType`.
107-
* Contracts **SHOULD** reject `version 0xFF` on production networks.
105+
- No storage layout change – still two header bytes.
106+
- Helper libs should expose `uint8 version, uint8 rType`.
107+
- Contracts **SHOULD** reject `version 0xFF` on production networks.
108108

109109
### **6.2 Indexers & APIs**
110110

111-
* Index `version` and `type` separately and combined (`uint16`).
112-
* Records with `version 0xFF` MAY be dropped from public APIs or flagged as experimental.
111+
- Index `version` and `type` separately and combined (`uint16`).
112+
- Records with `version 0xFF` MAY be dropped from public APIs or flagged as experimental.
113113

114114
### **6.3 Wallet / UI**
115115

116-
* Show human‑friendly labels for known codes.
117-
* For unknown or testing codes: "Experimental record 0xVVTT".
116+
- Show human‑friendly labels for known codes.
117+
- For unknown or testing codes: "Experimental record 0xVVTT".
118118

119119
---
120120

121-
## **7 FAQ**
121+
## **7 FAQ**
122122

123-
1. **Why a dedicated testing version?** It guarantees the protocol will never adopt those prefixes, protecting test data from future conflicts.
124-
2. **Can I deploy a list using `version 0xFF`?** Yes for dev/staging; but main‑net indexers & UIs may ignore it.
123+
1. **Why a dedicated testing version?** It guarantees the protocol will never adopt those prefixes, protecting test data from future conflicts.
124+
2. **Can I deploy a list using `version 0xFF`?** Yes for dev/staging; but main‑net indexers & UIs may ignore it.
125125
3. **Can `type 0xFF` ever be core?** Yes – except under `version 0xFF`, all other `(version,type)` combos remain allocatable.
126126

127127
---
128128

129-
*Last updated: 2025‑06‑12*
130-
129+
_Last updated: 2025‑06‑12_

0 commit comments

Comments
 (0)