Oracle Integrations
Overview
Section titled “Overview”Ashen ships reference oracle contracts in contracts/ that verify external
attestations on-chain. These are Zig contracts intended as production-grade
starting points:
- Pyth: ed25519 publisher attestations
- RedStone: secp256k1 data package attestations
- Chainlink OCR2: multi-signature report verification
Each contract manages its own signer set, threshold, and replay protection.
Build + Deploy (Shared)
Section titled “Build + Deploy (Shared)”# Build (Zig)cd contracts/<oracle_contract>zig build -Doptimize=ReleaseSmall
# Bundle + deploynode contract bundle \ --elf contracts/<oracle_contract>/zig-out/bin/<oracle_contract> \ --idl contracts/<oracle_contract>/<oracle_contract>.idl \ --out ./oracle.bundle
node contract deploy --bundle ./oracle.bundle --key $ASHEN_PRIVATE_KEY --waitPyth (ed25519 attestations)
Section titled “Pyth (ed25519 attestations)”Contract: contracts/pyth_oracle_v1
Capabilities:
- Publisher set management with threshold
- Attestation parsing and median aggregation
- Timestamp validity window (5 minutes)
- Replay protection
Attestation format (per contract comments):
magic(4) = "PYTH"+version(1)+num_attestations(1)- Each attestation: publisher pubkey (32) + signature (64) + feed_id (32) + price (i64 BE) + confidence (u64 BE) + exponent (i32 BE) + publish_time (i64 BE)
Flow:
- Initialize owner + threshold
- Update publisher set
- Submit attestations for verification
RedStone (secp256k1 data packages)
Section titled “RedStone (secp256k1 data packages)”Contract: contracts/redstone_oracle_v1
Capabilities:
- Signer set management with threshold
- RedStone data package parsing
- secp256k1 signature verification (EIP-191)
- Median aggregation
- Timestamp validity window (15 minutes)
- Replay protection
Flow:
- Initialize owner + threshold
- Update signer set (sorted addresses)
- Submit RedStone packages for verification
Chainlink OCR2
Section titled “Chainlink OCR2”Contract: contracts/chainlink_ocr2_v1
Capabilities:
- OCR2 report verification
- Config management (signer set, f)
- Replay protection
- Supports up to 31 signers
Flow:
- Initialize owner
- Set signer configuration (
f, signer set) - Verify OCR2 reports
Operational Tips
Section titled “Operational Tips”- Keep signer sets up to date: stale keys will fail verification.
- Validate timestamps: on-chain windows are strict.
- Use replay protection: each contract enforces it; don’t reuse packets.
- Simulate first: use
tx_simulatebefore submission.
Related
Section titled “Related”/contracts/examples/for oracle contract references/guides/tx-simulation/for simulation workflow/reference/precompiles/for crypto syscall details