Marty asked for a watchdog on position #220: tell him when they buy their upgrade and whether Orlando's #30 gets paid. The chain says it should. #220 sits at Apex with four uplines between them and #30, and a level-6 upgrade skips exactly those four, so #30 is the first candidate the contract tests and it passes both gates (level 5 > 4, three directs). That is a prediction, though, and the watcher does not report predictions: it reads MemberUpgraded and UplineRewarded off the logs and says who was actually paid and how much. If somebody else catches it, it says so. Tested by replaying real history (BACK=600 over a live #319 upgrade) on both a wide-range endpoint and a chunked 50-block one, then the dedupe guard, then two outage cases. The outage cases mattered. A watchdog that dies quietly is worse than no watchdog, because silence gets read as "nothing happened", so: - a failed scan never advances the block pointer; unread blocks are read on the next run rather than skipped - four consecutive failures sends a warning instead of going quiet, and both failure paths feed one counter. The first version only counted the log scan, so a total outage -- where even the block number is unreachable -- raised straight past the counter, and the one outage most worth shouting about was the one that would have stayed silent. Also brings rmc-depth-watch.py into the repo. Both watchers existed only on core, with no copy anywhere, so a rebuilt box lost them silently. The README records the restore steps and which Polygon RPCs actually serve eth_getLogs (publicnode and tenderly take 2000 blocks; drpc and 1rpc cap at 50; four others refuse outright), measured from core rather than assumed. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
RM Circle Premium — Crypto Team Build Sponsor Router
A small deployable Node/Express app with:
/— evergreen advertising/bridge page/start— dynamic onboarding page with the current team sponsor/admin— password-protected sponsor queue manager- JSON-file persistence suitable for a Docker volume
Core workflow
- Traffic lands on the evergreen bridge page.
- Visitors click Get Started.
/startreads the active sponsor from the server and builds the RM Circle referral link dynamically.- In
/admin, increment a sponsor's direct count as joins are verified. - When a sponsor reaches 2, click Qualified.
- The next waiting sponsor becomes active immediately—no HTML or ad changes required.
Default seeded queue
The seed data reflects the working Crypto Team Build priority list at build time:
- ID 30 — Orlando (active)
- ID 36 — Mad Dog
- ID 35 — Michael Camire
- ID 32 — Melissa
- ID 34 — Janie
You can change, reorder, add, or delete sponsors in /admin.
Local run
cp .env.example .env
# edit .env and set a strong ADMIN_PASSWORD + SESSION_SECRET
set -a && . ./.env && set +a
npm start
Open:
http://localhost:3000/http://localhost:3000/starthttp://localhost:3000/admin
Docker / Coolify
This project includes a zero-dependency Node server, Dockerfile, and docker-compose.yml. No npm package download is required.
Coolify recommendation
- Create a new application from this source/repository.
- Use the Dockerfile or Compose deployment.
- Add environment variables:
ADMIN_PASSWORD— strong unique passwordSESSION_SECRET— long random stringNODE_ENV=productionDATA_DIR=/app/data
- Persist
/app/datausing a volume. - Point your domain/subdomain at port
3000through Coolify's normal proxy/domain configuration. - Open
/admin, sign in, and verify the queue before sending traffic.
Sponsor referral URL
The default base is:
https://app.thermcircle.com?ref=
The app appends the current sponsor ID, for example:
https://app.thermcircle.com?ref=30
Change the base URL at any time in Admin → Public Page Settings without editing code.
Important operational behavior
The app intentionally does not auto-qualify sponsors based on clicks or blockchain activity. A team admin verifies the actual placement and clicks Qualified. This prevents an ad click or abandoned transaction from rotating the sponsor queue incorrectly.
Safety and compliance notes
The public pages include risk language, avoid guaranteed-income claims, and remind users never to disclose a MetaMask Secret Recovery Phrase. The onboarding page points to the official MetaMask website and identifies Polygon Mainnet as chain ID 137 with POL as the native gas token.
This app does not custody crypto, request wallet seed phrases, execute transactions, or store private keys.