LinkSpin test area: InstantAdPay engine fork rebranded, network registry, sponsor carry-over with engine activation and claim window, rotator with /r/ redirects, link-domain mini-sites
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
This commit is contained in:
@@ -0,0 +1,32 @@
|
||||
# LinkSpin — site
|
||||
|
||||
Membership advertising with immutable on-chain settlement. Zero-dependency
|
||||
Node server (RM Circle pattern): static pages + JSON API + SSE ledger.
|
||||
|
||||
## Architecture
|
||||
|
||||
- `server.js` — http server: pages, `/api/*`, `/join/<id>` sponsor links, SSE feed
|
||||
- `chain.js` — contract reader + persistent event indexer (free public RPCs)
|
||||
- `auth.js` — SIWE wallet sign-in (EIP-4361), sessions in the volume
|
||||
- `accounts.js` — site-side records only (free members, last-touch sponsor
|
||||
attribution, handles). The CHAIN is the source of truth for money/credits.
|
||||
- `public/` — landing, live ledger, member area; no client libraries
|
||||
|
||||
## Chain flip (rehearsal → mainnet)
|
||||
|
||||
Everything chain-specific lives in `data/config.json` (volume):
|
||||
`{contract, chainId, chainName, explorer, rpcs, deployBlock}`.
|
||||
Defaults point at the **Amoy rehearsal** deployment. Launch = deploy the
|
||||
mainnet contract, wipe `accounts.json`/`sessions.json`/`chain-index.json`,
|
||||
PATCH `/api/admin/chain` with the mainnet values, set `rehearsal:false` via
|
||||
`/api/admin/site`. Same code, different config.
|
||||
|
||||
## Run
|
||||
|
||||
```
|
||||
PORT=3100 node server.js # DATA_DIR defaults to ./data
|
||||
```
|
||||
|
||||
Admin API auth: `Authorization: Bearer $ADMIN_PASSWORD`.
|
||||
|
||||
Spec: `../CONTRACT-SPEC.md` (v1.0.3-frozen). Contracts: `../contracts/`.
|
||||
Reference in New Issue
Block a user