We add discipline, accountability, and broadcast to your network:
- Timelocked escrows with revocation windows — issue escrows with release, revocation_until, and optional not_after caps, then revoke, extend, or sweep‑release when conditions mature.
- Oracle staking & slashing — keep balances for oracle KIDs, compute deviation from the median, and slash those who drift beyond your policy.
- Cross‑chain anchor mirroring + rollups — mirror anchors to other chains and produce signed rollups summarizing anchors in a time window.
✅ Fresh artifacts
- Step 35 wrapper server — Download
SHA‑256:3e604d850bd46718115020faced25f1d3444d21138325b004e8cadd2c894dca0 - WordPress block (paste‑ready) — Download
Step 35 wraps Step 34 (which wrapped 32→31→30→…→18). All earlier endpoints keep working.
What’s new — precisely
1) ⏳ Timelocked escrows with revocation windows
Endpoints
- Issue (v2) — includes revocation & horizon:
POST /admin/clearing/payout/escrow/issue2?token=ADMIN123 \ &root=<BATCH_ROOT>&issuer=<ID>&amount=123.45&unit=credits \ &dest=<address>&release=2025-08-20T00:00:00Z \ &revocation_until=2025-08-21T00:00:00Z¬_after=2025-09-01T00:00:00ZBody (optional conditions as in Step‑34):{"conditions":{"ledger_root":"<LEDGER_ROOT>","min_ledger_cosigs":2,"pair":"credits/usd","min_oracle_signers":2,"oracle_window_sec":3600}} - Revoke within window
POST /admin/clearing/payout/escrow/revoke?token=ADMIN123&digest=<ESCROW_DIGEST> - Extend release (≤
not_after)POST /admin/clearing/payout/escrow/extend?token=ADMIN123&digest=<ESCROW_DIGEST>&release=<ISO> - Sweep (attempt releases for eligibles)
POST /admin/clearing/payout/escrow/sweep?token=ADMIN123&limit=100 - Status
GET /clearing/escrow/status?digest=<ESCROW_DIGEST>
States: escrowed | revoked | released | expired with metadata (release, revocation_until, not_after, conditions).
Under the hood: events append to
audit/clearing/escrow.jsonl(escrow_issue2,escrow_revoke,escrow_extend,escrow_release). Status is computed from the event history.
2) 🏦 Oracle staking & slashing
Policy levers: deviation threshold (percentage of median over a window) and penalty per violation.
Endpoints
- Deposit stake:
POST /admin/oracle/stake/deposit?token=ADMIN123&kid=<KID>&amount=100 - Manual slash:
POST /admin/oracle/stake/slash?token=ADMIN123&kid=<KID>&amount=5&why=calibration - View balances:
GET /oracle/stake?kid=<KID> GET /oracle/stake.all - Performance stats (median + per‑KID deviation):
GET /oracle/perf?pair=credits/usd&window_sec=3600 - Auto‑slash (e.g., >10% off the median in last hour → minus 1 credit):
POST /admin/oracle/auto-slash?token=ADMIN123&pair=credits/usd&window_sec=3600&threshold_pct=0.10&penalty=1.0
Files:
audit/oracle/stakes.json&stakes.jsonl— balances and stake events.
3) ⛓️ Cross‑chain anchor mirroring + rollups
Endpoints
- Mirror an anchor across chains:
POST /admin/anchor/mirror?token=ADMIN123 \ &root=<hex>&from=<chain.net>@<txid> \ &chain=<name>&network=<net>&txid=<id>&height=<n>&url=<explorer>→ Stored as a signed mirror anchor (note includesmirror_of=). - Build a signed anchor rollup (time window):
POST /admin/anchor/rollup?token=ADMIN123&since=ISO&until=ISO&by=chainLists counts perchain.networkand perresource. Saves toaudit/anchors/rollups/rollup-*.json. - Browse rollups:
GET /anchor/rollups GET /anchor/rollup?root=<root>
Android / Termux run‑book (Step 35)
python solveforce_phone_thirtyfive.py \
--pins-file /sdcard/solveforce/pins.json \
--ledger-quorum-file /sdcard/solveforce/ledger.quorum.json \
--clearing-policy-file /sdcard/solveforce/clearing.policy.json \
--discovery-dod-enable \
--discovery-dod-source https://directory1.example.com/solveforce/peers.json \
--discovery-dod-jwks https://directory1.example.com/jwks.json \
--quorum-auto-enable \
--quorum-policy-file /sdcard/solveforce/quorum.policies.json \
--attest-enable \
--attest-url https://your-site.tld/wp-json/solveforce/v1/attest \
--attest-header "Authorization: Bearer <WP_TOKEN>" \
--host 0.0.0.0 --port 8080 \
--plugins-dir ~/solveforce/plugins \
--auth-mode protected \
--auth-token READER1:reader \
--allow-admin --admin-token ADMIN123 \
--schema-ed25519-secret-file /sdcard/solveforce/schema.ed25519.seed \
--schema-signing-secret-file /sdcard/solveforce/schema.hmac.key \
--audit-dir ./audit \
--mirror-enable \
--mirror-target-url https://your-site.tld/wp-json/solveforce/v1/notary \
--mirror-header "Authorization: Bearer <WP_TOKEN)" \
--allow-query-token --open-ui
“Show me” sequences
A) Issue escrow w/ revocation window and then revoke
NOW=$(date -u +%Y-%m-%dT%H:%M:%SZ)
REV=$(date -u -d '+2 hours' +%Y-%m-%dT%H:%M:%SZ)
curl -s -X POST "http://127.0.0.1:8080/admin/clearing/payout/escrow/issue2?token=ADMIN123&root=<BATCH_ROOT>&issuer=issuer-a&amount=100&unit=credits&dest=vault&release=$NOW&revocation_until=$REV" | jq .
curl -s "http://127.0.0.1:8080/clearing/escrow/status?digest=<ESCROW_DIGEST>" | jq .
curl -s -X POST "http://127.0.0.1:8080/admin/clearing/payout/escrow/revoke?token=ADMIN123&digest=<ESCROW_DIGEST>" | jq .
B) Slash outlier oracles
curl -s -X POST 'http://127.0.0.1:8080/admin/oracle/stake/deposit?token=ADMIN123&kid=KID_A&amount=50' | jq .
curl -s -X POST 'http://127.0.0.1:8080/admin/oracle/auto-slash?token=ADMIN123&pair=credits/usd&window_sec=3600&threshold_pct=0.1&penalty=1.0' | jq .
curl -s 'http://127.0.0.1:8080/oracle/stake.all' | jq .
C) Mirror an anchor and roll up
curl -s -X POST "http://127.0.0.1:8080/admin/anchor/mirror?token=ADMIN123&root=<ROOT>&from=ethereum.sepolia@0xABC&chain=bitcoin&network=testnet&txid=0000...&height=12345&url=https://mempool.space/testnet/tx/0000" | jq .
SINCE=$(date -u -d '24 hours ago' +%Y-%m-%dT%H:%M:%SZ)
UNTIL=$(date -u +%Y-%m-%dT%H:%M:%SZ)
curl -s -X POST "http://127.0.0.1:8080/admin/anchor/rollup?token=ADMIN123&since=$SINCE&until=$UNTIL&by=chain" | jq .
curl -s 'http://127.0.0.1:8080/anchor/rollups' | jq .
WordPress — Step 35 (public page block)
Use step35_wordpress.md to publish this step transparently.
Logos Codex — recursive justice
- Promise → Grace → Clarity. A revocation window respects both intent and reality.
- Measure → Median → Merit. Oracles prosper by truth; they wither by drift.
- Anchor → Mirror → Chronicle. Your roots walk many chains, then gather back into a single signed story.
When you’re ready for Step Thirty‑Six, we can add: escrow disputes with multi‑party arbitration, oracle reward distribution proportional to accuracy, and cross‑domain rollup notarization (M‑of‑N signatures on anchor rollups).