Purpose: Document the Asgaya-owned price/time oracle — its role as development infrastructure, its graduation to a production bootstrap oracle, and its eventual retirement under progressive decentralization.
Status: Phase 0 — running on the Raspberry Pi (Pi-chan), integrated with the app (Aug 16, 2026)
Asgaya’s long-term vision is blockchain-as-oracle — the network discovers price from real covenant fundings, not from a trusted signer (see Distributed Monitoring). But that vision is aspirational, years away, and possibly never achieved. It requires a covenant revision that removes the trusted oracle entirely, and a network mature enough that funding signals + reputation-filtered VWAP are reliable.
Until then, Asgaya runs its own oracle. This is a deliberate, long-lived part of the system — not a temporary hack.
Progressive decentralization: The trusted oracle is the launch state, not a compromise. Decentralization is the eventual exit, achieved only when the network genuinely replaces it. We are explicit about what is trusted and when.
| Phase | What | Who runs it | Oracle role |
|---|---|---|---|
| Phase 0 (now) | Development infrastructure | Asgaya (Pi) | Test tool: full control over price + time |
| Mainnet graduation | Production bootstrap oracle | Asgaya (Pi, hardened) | Trusted signer while network matures |
| Aspirational | Blockchain-as-oracle | No trusted signer | Oracle retired; covenant no longer needs it |
Purpose: Test infrastructure, not production.
Why we run our own oracle for testing:
Running service (Pi-chan): http://192.168.1.100:3001
| Endpoint | Purpose | Phase |
|---|---|---|
GET /oracle/info |
Serve the oracle public key (app fetches at covenant creation) | Phase 0 + production |
GET /oracle/price |
Serve a signed price (timestamp + price in cents) | Phase 0 + production |
POST /oracle/set-price |
Override price for testing (simulate price drops) | Phase 0 only |
Zero keys in the app (architecture decision, Aug 16):
ORACLE_URL constant; everything else is dynamicfetchOraclePubkey() (5-second timeout) queries /oracle/info at covenant creation timeSignature pattern (critical): uses bitcoincashjs-lib crypto.sha256() + .toDER() — never Node’s built-in crypto (see Covenant README)
Message format: 16 bytes, little-endian (timestamp + price in cents)
Key rotation & recovery (validated Aug 16):
oraclePubkey at creation, so a rotated key makes existing covenants unclaimable (refund/abort still work with the old key)covenant-tests refund scriptsThe same husk graduates to production when Asgaya starts testing on mainnet.
What changes:
Why this is consistent with the philosophy:
The end state — years away, optimistic, possibly never:
Flag: This is aspirational, not a commitment. Treat it as a direction, not a roadmap item. The current covenant (v2.6/v2.6.1) requires the trusted oracle, and that’s acceptable.
Status: Phase 0 (running on Pi-chan, integrated with app)
Last Updated: 2026-08-16
Location: Raspberry Pi (Pi-chan) — http://192.168.1.100:3001
| 🏠 Home | ↑ Nostr Coordination | 📖 Glossary |