mcpField
S
supra-push-oracle

supra-push-oracle

github.com/hedera-dev開発28463 回インストール8 週間前に更新
リポジトリ

supra-push-oracle について

supra-push-oracleは、HederaでSupraのプッシュ型オラクルを利用するためのスキルです。価格の読み取りと検証に加え、タイムスタンプの単位、クォート資産、小数精度の扱いを説明します。

主な機能

  1. 01getSvalue(pairId)による価格取得
  2. 02ミリ秒タイムスタンプの秒への変換
  3. 03鮮度とゼロ値の検証
  4. 04decimalsに基づく価格精度の正規化

活用シーン

  1. 01HederaコントラクトへのSupra価格フィード導入
  2. 02価格取得処理の時刻処理レビュー
  3. 03古い価格や無効な価格の排除

インストール

コマンドをコピーしてターミナルで実行します。

$npx skills add https://github.com/hedera-dev/hedera-skills --skill supra-push-oracle

インストール後、Claude Code で/supra-push-oracleを入力して読み込まれたか確認します。

同梱ファイルreferences/examples.mdreferences/hedera-feeds.md

詳細

Supra Push Oracle(Hedera)

Push S-Value パターン: Supra がオンチェーンフィードを更新し、読み取り側は getSvalue(pairId) を呼び出して、空、ゼロ、または古い価格を拒否する必要があります。

Supra push oracle → getSvalue(pairId) → consumer

コンシューマーはフィードをローカルインターフェースの背後にラップできますが、これは任意です。プロジェクト固有のアダプター名を前提にしないでください。

クイックリファレンス

構成要素役割
Push オラクルネットワーク用の不変な ISupraSValueFeed アドレス
ペア ID数値の Supra ペア ID(EVM アグリゲーターアドレスではありません)
読み取りgetSvalue(pairId) → 価格、桁数、時刻
時刻Hedera ではミリ秒の場合がよくあります — time > 1e10 のときに変換してください
クオート資産Hedera のフィードは USD ではなく、USDT の場合がよくあります
鮮度unix 秒を最大経過時間と比較します

Hedera のチェーン ID: testnet 296、mainnet 295。

Push オラクルのアドレスとペア ID の取得元については、references/hedera-feeds.md を参照してください。読み取り例については、references/examples.md を参照してください。

重要:ミリ秒のタイムスタンプ

Hedera では、Supra の time がミリ秒であることがよくあります。> 10_000_000_000 の値はミリ秒として扱い、鮮度チェックの前に変換してください。

uint256 updatedAt = pf.time > 10_000_000_000 ? pf.time / 1_000 : pf.time;
if (block.timestamp - updatedAt > maxStaleness) revert StalePrice(updatedAt, maxStaleness);

ミリ秒のタイムスタンプを block.timestamp(秒)と比較すると、時刻が「未来」にあるように見えたり、鮮度チェックが正しく行われなかったりします。

重要:Hedera 上の USDT ペア

現在の Hedera Supra フィードは、USD ではなくUSDTをクオートすることがよくあります。ペアキー/シンボルは実際のクオート資産(HBAR/USDT、BTC/USDT)と一致させてください。USDT フィードを USD として表示しないでください。

完全性と無効な価格

次の場合はリバートしてください。

条件理由
pf.time == 0更新が成功していません
pf.price == 0無効な価格です
秒に変換した後も古いmaxStaleness より古い値です
不明なペア IDゼロを返さないでください

pf.price を pf.decimals に基づいてコンシューマーのスケール(多くの場合 18)に正規化してください。

チェックリスト

Hedera 上で Supra の読み取りを実装またはレビューする際は、次を確認してください。

  • Push オラクルのアドレスとペア ID は Ethereum ではなく、Supra Hedera のドキュメントから取得している
  • ミリ秒のように見えるタイムスタンプは unix 秒に変換している
  • ペアシンボルは実際のクオート資産(多くの場合 USDT)と一致している
  • ゼロ/更新なしの場合はリバートする
  • 鮮度の上限を秒単位で適用している
  • 桁数をコンシューマーのスケールに正規化している

参考資料

コメント