supra-push-oracle
Supra S-Value push oracle on Hedera. Use when reading getSvalue price feeds on Hedera (testnet 296 / mainnet 295), mapping pair IDs, converting millisecond timestamps to unix seconds, or quoting USDT pairs where USD is unavailable.
How do I install this agent skill?
npx skills add https://github.com/hedera-dev/hedera-skills --skill supra-push-oracleIs this agent skill safe to install?
- Gen Agent Trust Hubpass
The skill provides technical documentation and Solidity implementation guidelines for integrating Supra price feeds on the Hedera network. It focuses on security best practices for developers, such as timestamp normalization and price validation. No security risks or malicious patterns were identified.
- Socketpass
No alerts
- Snykpass
Risk: LOW · No issues
What does this agent skill do?
Supra Push Oracle (Hedera)
Push S-Value pattern: Supra updates an on-chain feed; readers call getSvalue(pairId) and must reject empty, zero, or stale quotes.
Supra push oracle → getSvalue(pairId) → consumer
Consumers may wrap the feed behind a local interface; that is optional. Do not assume a project-specific adapter name.
Quick Reference
| Piece | Role |
|---|---|
| Push oracle | Immutable ISupraSValueFeed address for the network |
| Pair ID | Numeric Supra pair id (not an EVM aggregator address) |
| Read | getSvalue(pairId) → price, decimals, time |
| Time | Often milliseconds on Hedera — convert when time > 1e10 |
| Quote asset | Hedera feeds are often USDT, not USD |
| Freshness | Compare unix seconds to a max staleness |
Hedera chain IDs: testnet 296, mainnet 295.
See references/hedera-feeds.md for where to source push-oracle addresses and pair IDs. See references/examples.md for read sketches.
Critical: Millisecond Timestamps
Supra time on Hedera is frequently milliseconds. Treat values > 10_000_000_000 as ms and convert before staleness checks:
uint256 updatedAt = pf.time > 10_000_000_000 ? pf.time / 1_000 : pf.time;
if (block.timestamp - updatedAt > maxStaleness) revert StalePrice(updatedAt, maxStaleness);
Comparing a millisecond timestamp to block.timestamp (seconds) will look “in the future” or skip staleness incorrectly.
Critical: USDT Pairs On Hedera
Current Hedera Supra feeds often quote USDT, not USD. Pair keys / symbols must match the actual quote (HBAR/USDT, BTC/USDT). Do not label a USDT feed as USD.
Completeness And Invalid Prices
Revert when:
| Condition | Why |
|---|---|
pf.time == 0 | No successful update |
pf.price == 0 | Invalid price |
| Stale after converting to seconds | Older than maxStaleness |
| Unknown pair ID | Do not return zero |
Normalize pf.price with pf.decimals to the consumer scale (often 18).
Checklist
When implementing or reviewing Supra reads on Hedera:
- Push-oracle address and pair IDs taken from Supra Hedera docs (not Ethereum)
- Timestamps converted to unix seconds when they look like milliseconds
- Pair symbols match the real quote asset (often USDT)
- Zero / missing updates revert
- Staleness bound is enforced in seconds
- Decimals normalized to the consumer scale
References
- references/examples.md —
getSvalueand timestamp sketches - references/hedera-feeds.md — where to source push-oracle addresses and pair IDs
- Supra push oracle networks
- Supra data feeds index
How can the creator link this skill?
Add the canonical catalog link to the repository README so users can inspect current installs and available audits. The publishing guide covers the complete discovery path.
<a href="https://skillzs.dev/skills/hedera-dev/hedera-skills/supra-push-oracle">View supra-push-oracle on skillZs</a>