SWIP-066: Graffiti wall pattern - #107
Conversation
Anti-GSOC: own-identity writers mine into the anchor neighbourhood (MOC / bare-index-over-BPS / mined span-index modes); motivation enumerates 8 arguments against the shared-key GSOC pattern. Guesses marked (?). Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
… feed (T,O), DISC NO firm, broker as aggregate feed indexer All 7 round-1 question marks resolved from dictation; motivation glosses confirmed and unmarked. New aggregation section (broker-side gloss marked ?). Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
…ntent feed topic H(T)=A, broker publishes self-indexed contributors feed T usually a 32-byte reference; content feeds one hash deeper (no id clash with mined spans); aggregation concretized per SWIP-65 self-indexing with withhold-not-forge trust bound. Remaining guesses marked (?). Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
…tence is the info), mining helpers in client libs, withhold wording confirmed Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
|
Round 4 (449a964): restored the accidentally omitted 🤖 Generated with Claude Code |
…r key, topic = H(T)) Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
|
Broker contributors-feed parameters confirmed: owner = the broker's key, topic = 🤖 Generated with Claude Code |
…amp-key compatible), per-contributor dedup as MAY Last (?) resolved; draft fully slashed. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
|
Granularity resolved: the contributors feed is self-indexing with one update per wall entry observed — the choice most compatible with the pot's default timestamp key — with per-contributor dedup mentioned as a broker MAY. No open question marks remain in the draft. 🤖 Generated with Claude Code |
SWIP-0 specifies `type: Standards Track` with the subcategory in a separate `category:` header (one of Core / Networking / Interface), as swip-19 and swip-20 do. This file carried the category inside `type:`, which is the only form in the repo and may break tooling that parses the front matter. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
There was a problem hiding this comment.
Pull request overview
Adds a new SWIP (SWIP-66) that specifies the “Graffiti wall pattern”: a permissionless public write-board keyed by a topic-derived anchor, where each writer publishes under their own key and uses mining (MOC or a mined span-index) to obtain wall membership, with optional BPS-based aggregation for after-the-fact reading.
Changes:
- Introduces SWIP-66 with the wall model (topic/anchor), writing modes, reading paths, and broker aggregation.
- Defines the span-index (mode-3) construction and validation for self-describing wall entries.
- Adds a conformance section enumerating validity and node/broker requirements.
💡 Add a code-review agent skill or configure MCP servers for context-aware, tailored reviews. Learn more in the docs.
| writers ever share a key — and a BPS broker on the wall's cohort doubles as the | ||
| **aggregate feed indexer** over all writers. | ||
|
|
||
| ## Motivation |
| **Mode 2 — normal feed, bare index, brokered (no mining).** When writers connect in | ||
| publisher role to a broker (BPS, SWIP-60), a normal feed on topic `T` is used and | ||
| frames carry the **bare 8-byte index in the 32-byte id field** — the carriage rule of | ||
| SWIP-65 ([#106](https://github.com/ethersphere/SWIPs/pull/106)). Delivery is by the | ||
| broker, so no anchoring — and hence no mining — is needed. The publisher | ||
| parameterisation of the cohort is immaterial; the point is that both the topic | ||
| (implicit in the channel) and the bare indexes are known, so subscribers can follow. | ||
| Every frame carries the full SOC, so the writer's own key signs as in any feed. |
The anti-GSOC: permissionless public write-boards (walls) named by any topic, where every entry is signed by its writer's own key — no shared graffiti key, ever. Writers buy wall membership with mining effort instead: an ephemeral owner (the MOC pattern, #80), a bare-index feed over a BPS broker (#104, carriage per #106), or a mined span-index — the feed index written into the span field of an empty-payload wrapped chunk, making the entry self-describing (
id = H(T ‖ SPAN), owner recovered from the signature,PO(addr, H(T)) ≥ 16).Highlights:
H(T)— which equals the anchor — so mined spans can never clash with sequential content ids.PO_MINrule, arbitrary-span empty-payload wrapped chunks already allowed.Freestanding pattern in the SWIP-59/60/61/65 family (#103, #104, #105, #106). Work-package format; open guesses are marked (?) in the text and being resolved in dictation rounds.
🤖 Generated with Claude Code