diff --git a/docs/openswarm/ippay.md b/docs/openswarm/ippay.md index 721b23b..7540d7a 100644 --- a/docs/openswarm/ippay.md +++ b/docs/openswarm/ippay.md @@ -261,7 +261,7 @@ Published at `GET /.well-known/openswarm-hub.json`: "eip155:137": "0x3c499c542cEF5E3811e1192ce70d8cC03d5c3359", "eip155:1": "0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48" }, - "minHubBps": 300, + "minHubBps": 100, "payout": { "minUsd": "1.000000", "schedule": "daily" }, "passDays": 30, "createdAt": "2026-09-05T00:00:00.000Z", @@ -280,6 +280,14 @@ lists the hub's `base`, from TLS to that base, and optionally from an MTP/1 pin. `minHubBps` is the least `split.hubBps` a manifest may set for this hub to sell passes for it. +The reference hub takes **1 percent** (`minHubBps: 100`), on every payment +that crosses it: a pass, a key grant, a seed offer, a relay offer, a +ticket. It is charged to whoever is paying and never deducted from a +seeder's or a relay's earnings, so what a publisher quotes is what a +publisher gets and what a seeder is promised is what a seeder is paid. A +hub setting a higher floor says so in this record, and a manifest naming +it can refuse. + ### 5.2 API All bodies are JSON. Records are verified on receipt. diff --git a/docs/openswarm/pay2seed.md b/docs/openswarm/pay2seed.md index 35bc6d6..50350a7 100644 --- a/docs/openswarm/pay2seed.md +++ b/docs/openswarm/pay2seed.md @@ -48,7 +48,8 @@ for `ippay` vouchers: a swarm that charges leechers keeps charging them. - **Requester.** The identity that posts an offer and funds it. Usually the publisher of the swarm; for a public torrent it may be anyone who wants - it kept alive, subject to §3. + it kept alive, subject to §3. A key, not necessarily a person: an + autonomous agent is a requester like any other (§5.8). - **Seeder.** An identity that holds a lease and serves the swarm (`paid2seed`). - **Hub.** An `ippay` hub that also implements this document and @@ -332,8 +333,10 @@ the owner's `ippay` payee, never a card form of the hub's own. Both sides earn. A seeder rents out disk through `paid2seed`. A requester sells access: to strangers through `ippay` passes at the swarm's `keyUsd` and `perGib`, to colleagues through a team. A hub takes its -`hubBps` on passes and its seat fees on teams, and nothing on the -seeder's floor. +`hubBps` on payments that cross it, **1 percent at the reference hub** +(`ippay` §5.1), plus its seat fees on teams, and nothing at all on the +seeder's floor. Public swarms are not charged for; they carry an ad +instead (§5.7). ### 5.6 The README @@ -358,7 +361,60 @@ page, on bittorrented.com, is the listing; the DHT crawl's bare infohashes never had one, and this is what a consented swarm looks like beside them. -### 5.7 API +### 5.7 Public swarms pay for themselves + +Public distribution is free to the requester and free to the fetcher, and +it is not charity. A public swarm has a page on the hub, built from the +README (§5.6), and that page carries an advertisement. The hub earns from +the page; the swarm's bytes are never metered, never gated and never +counted. + +This is the trade, stated so nobody has to guess at it: + +| | Public | Private | +| --- | --- | --- | +| Bytes | free, over the ordinary wire and the DHT | `ipfile` ciphertext, `perGib` and `keyUsd` as the manifest says | +| Who may read it | anyone | pass holders and team members | +| What the hub earns | the ad on the swarm's page | its percentage of each payment, plus seats (§5.5) | +| What the requester pays | nothing, unless they buy an offer to keep it alive | nothing, unless they buy an offer or seats | + +A requester who wants no advertisement on their page pays for a seat +(§5.5); a hub MUST make that switch available rather than making the ad +the price of being listed at all. An ad never appears inside a swarm, is +never injected into a file, and never rides the wire: it is on the hub's +page about the swarm and nowhere else. `ipdb` entries and the market API +carry no advertising, so a client that reads the catalogue directly sees +none of it. + +### 5.8 An agent may be a requester + +Nothing in this family assumes a person. A requester is a key, and an +autonomous agent holds keys as readily as anyone: it can attest what it +made, publish a swarm, price access to it, sell tickets to a live +channel, take payment through its own `ippay` payee, and spend what it +earns buying offers so its own work stays online. The same is true on the +other side: an agent with disk can hold leases and be paid for them +(`paid2seed` §7). + +Two rules, and they are the same rules a person gets: + +- **The attestation is the agent's own claim**, signed by the agent's key, + and its standing (§3.3) is the agent's. An agent that attests what it + had no right to distribute loses standing exactly as a person does, and + a hub applies §3.3's refusals without asking which kind of requester it + is looking at. +- **Consent does not become weaker because a machine gave it.** An agent + publishing work made from somebody else's material has the same bases + available and no others; `own` means the agent or its operator holds + the rights, and there is no basis meaning "a model produced this, so + nobody owns it". + +A hub MAY require an agent's attestations to name a responsible operator +key alongside the agent's own, and the reference hub does for `public` +swarms: an agent can sell freely, and somebody remains reachable when a +notice arrives. + +### 5.9 API | Method and path | Auth | Purpose | | --- | --- | --- | @@ -493,4 +549,6 @@ A **requester client** is conformant when it does all of §6. - 0.1 (2026-09-06): split out of the first pay2seed draft (2026-09-05) as the client half; attestation, offers, requester API, notices. Same day: encryption by default, teams, invitations, member grants, rotation on - removal, and the hub's pricing for access. + removal, and the hub's pricing for access. Then: the 1 percent reference + fee, the advertisement that pays for public swarms, and agents as + requesters. diff --git a/docs/openswarm/pay2stream.md b/docs/openswarm/pay2stream.md index f238ff1..6930907 100644 --- a/docs/openswarm/pay2stream.md +++ b/docs/openswarm/pay2stream.md @@ -140,6 +140,15 @@ title, start, end, description, and the ticket price at the time, signed by the channel key. Listings are what a market page and an EPG are built from, and what a viewer buys against. +A channel whose `keyUsd` and `perGib` are both zero is **free to watch**: +no ticket, no grant, and a gateway serves it to anyone. Its page on the +hub carries an advertisement the same way a public swarm's does +(`pay2seed` §5.7), which is what pays for listing it. The stream itself +is never interrupted: nothing is injected into a segment, into the +playlist, or into the M3U. A broadcaster selling tickets pays the hub its +percentage instead, 1 percent at the reference hub, and their page +carries no advertising. + ## 6. Watching ### 6.1 As a peer diff --git a/prd/0006-add-pay2seed-spec.md b/prd/0006-add-pay2seed-spec.md index 180daee..c1a895b 100644 --- a/prd/0006-add-pay2seed-spec.md +++ b/prd/0006-add-pay2seed-spec.md @@ -100,7 +100,24 @@ an audit trail and rotation on removal. A few seats are free so a family or a three-person shop never pays; above that, seats and organisations are billed monthly through the same CoinPay rail as everything else. Public distribution is encryption switched off: a vanilla torrent that -the DHT finds for nothing and that the hub never charges for. +the DHT finds for nothing and that the hub never charges for. It is not +charity either. A public swarm has a page on the hub built from its +README, and that page carries an advertisement; the bytes are never +metered and nothing is ever injected into a file, a segment or a +playlist. A requester who wants no ad on their page buys a seat. + +The hub's cut is **1 percent** of any payment that crosses it, charged to +whoever is paying and never taken out of a seeder's or a relay's +earnings. So there are three lines: 1 percent of transactions, seats for +managed access, and ads on the free tier. + +Sellers need not be people. A requester is a key, and an autonomous agent +can attest what it made, price access, sell tickets to a live channel, +take payment through its own payee and spend what it earns keeping its +own work online. The consent rules do not soften because a machine signed +them, and the reference hub asks an agent's public attestations to name a +responsible operator key so somebody is reachable when a notice +arrives. ## Non-Goals