Skip to content

SWIP-066: Graffiti wall pattern - #107

Open
zelig wants to merge 7 commits into
masterfrom
swip-66-graffiti-wall
Open

SWIP-066: Graffiti wall pattern#107
zelig wants to merge 7 commits into
masterfrom
swip-66-graffiti-wall

Conversation

@zelig

@zelig zelig commented Aug 11, 2026

Copy link
Copy Markdown
Member

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:

  • Motivation enumerates 8 arguments against the shared-key GSOC pattern: the Book's single-owner integrity premise, pull-sync divergence (cf. SWIP-TBA - Chunk checksum for divergent sync #101), the wrapped-address complication in incentives, stamp reuse across versions, closest-node-only retrieval and cache opacity, single-response exhaustion, no censorship resistance, and collisions even on the honest path.
  • Content feeds live one hash deeper: topic H(T) — which equals the anchor — so mined spans can never clash with sequential content ids.
  • Aggregation: a BPS broker on the wall's cohort doubles as the aggregate feed indexer by publishing its own self-indexed (SWIP-065: Self-indexed feeds #106) feed of contributors — after-the-fact reading is a single feed lookup; the broker can withhold but cannot forge.
  • Worked example: tag-based advertising over tag-combination walls.
  • DISC: NO — standard SOC validation, existing PO_MIN rule, 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

zelig and others added 4 commits August 11, 2026 09:13
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>
@zelig

zelig commented Aug 11, 2026

Copy link
Copy Markdown
Member Author

Round 4 (449a964): restored the accidentally omitted H(A‖C) tag combination; the worked example now states that for this ad type no content feed is needed — the entry's existence gives the information — with a matching MAY-be-absent note in mode 3; mining helpers homed in client libraries (bee-js or other JS libs); withhold-never-forge wording confirmed. Remaining (?): broker contributors-feed parameters and dedup granularity.

🤖 Generated with Claude Code

…r key, topic = H(T))

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
@zelig

zelig commented Aug 11, 2026

Copy link
Copy Markdown
Member Author

Broker contributors-feed parameters confirmed: owner = the broker's key, topic = H(T). Last open (?): feed granularity — one update per wall entry observed, or dedup to one per contributor.

🤖 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>
@zelig

zelig commented Aug 12, 2026

Copy link
Copy Markdown
Member Author

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>
@zelig zelig self-assigned this Aug 30, 2026
@zelig
zelig marked this pull request as ready for review August 30, 2026 05:44
Copilot AI lite review requested due to automatic review settings August 30, 2026 05:44

Copilot AI left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

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.

Comment thread SWIPs/swip-66.md
writers ever share a key — and a BPS broker on the wall's cohort doubles as the
**aggregate feed indexer** over all writers.

## Motivation
Comment thread SWIPs/swip-66.md
Comment on lines +118 to +125
**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.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants