360 Secure SkillHub
360 安全技能中心

supra-push-oracle

该 Skill 提供在 Hedera 上读取 Supra S-Value 推送预言机的指导,涵盖 getSvalue(pairId) 调用、毫秒时间戳转换、陈旧价格检查、USDT 报价识别与小数位归一化,并附 Solidity 片段、检查清单和引用文件。

hedera-dev
热度 0.00
最近更新 2026-10-18 23:42:48
分类:开发依赖:纯提示词应用场景:代码生成 / 代码审查 / API 集成

安装技能

复制下面的话术发给你的 Agent,它会通过 secure-skills 检索并安装该技能。

执行命令安装此 skill: npx secure-skills-cli add hedera-dev/hedera-skills/supra-push-oracle
Metadata
name
supra-push-oracle
description
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.

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