OREStats API v1
Ücretli uç noktalar /api/v1/* altındadır. Hepsi Authorization: Bearer ore_… gerektirir. Şuradan abone olun: /pricing.
API üzerinden abonelik
- POST /api/v1/subscribe — gövde:
{ ownerPubkey }— sunucu benzersiz bir nonce + ORE miktarı döner. - 1. adımdan gelen priceOre miktarını hazine adresine (aynı yanıtta dönülür) gönderin; nonce'u SPL Memo komutu olarak ekleyin.
- PUT /api/v1/subscribe — gövde:
{ nonce, txSig, ownerPubkey }— sunucu zincir üstü doğrular, aboneliği etkinleştirir, API anahtarınızı döner. - Tüm /api/v1/* çağrılarında
Authorization: Bearer ore_…başlığını kullanın.
Ödeme ayrıntıları
A9HLwE6wCm7Hedo7771nwsX8TyArv7rgdVQMo9dgDGZForeoU2P8bN6jkk3jbaiVxYnG1dCXcYxwhwyK9jSybcp/api/v1/pricinghalka açıkamaç: Bir aylık erişim için mevcut fiyat (ORE cinsinden). Daha fazla abone katıldıkça fiyat kademeli yükselir — yanıt ayrıca bir sonraki eşiği ve ötesindeki fiyatı da söyler.
{
"activeSubs": 17,
"oreNow": 0.1,
"nextThreshold": 100,
"oreAtNextThreshold": 0.2,
"treasury": "...",
"oreMint": "..."
}/api/v1/subscribehalka açıkamaç: Aboneliğin 1. adımı. Sahip cüzdanla imzalayıp Solana'da yayınlamanız gereken tek seferlik bir SPL transfer komutu (memo + miktar) döner.
ownerPubkey— API anahtarına sahip olacak base58 Solana pubkey
{ "ownerPubkey": "..." }{
"nonce": "ore-pay-...",
"priceOre": 0.1,
"instructions": { "to": "...", "memo": "ore-pay-...", "amountBaseUnits": "10000000000", "mint": "..." },
"expiresAt": "..."
}/api/v1/subscribehalka açıkamaç: Aboneliğin 2. adımı. SPL transferi onaylandıktan sonra, API anahtarınızı oluşturmak için tx imzasını gönderin. Düz metin anahtar yalnızca BİR KEZ gösterilir.
nonce— POST /subscribe'den dönen değertxSig— 1. adımdaki memo'yu taşıyan onaylanmış SPL transfer imzasıownerPubkey— ödeyen cüzdanla (ve POST'a geçirilenle) eşleşmelidir
{ "nonce": "...", "txSig": "...", "ownerPubkey": "..." }{
"apiKey": "ore_xxx (shown ONCE)",
"subscriberId": "sub_...",
"paidUntil": "..."
}/api/v1/liveücretli (Bearer)amaç: Mevcut tur anlık görüntüsü — her karenin şu an ne tuttuğu, kalan saniyeler ve son turun sonucu. Hafiftir; 1-2 sn aralıkla yoklamak güvenlidir.
mevcut tur anlık görüntüsü (deployed, count, secondsLeft, prevRound)
/api/v1/streamücretli (Bearer)amaç: /live için SSE akışı. Zincir üstü tahta veya tur hesabı her değiştiğinde taze anlık görüntü iter. İstediğiniz an yeniden bağlanın — bir sonraki olay her zaman en güncel durumdur.
sunucu tarafı olaylar; her zincir üstü tahta / tur hesabı değişikliğinde anlık görüntü iter
/api/v1/statsücretli (Bearer)amaç: Toplu ızgara istatistikleri: kümülatif isabetler üzerinde ki-kare, kare başına isabet sayısı ve yatırılan SOL, şimdiye dek yatırılan toplam SOL, etkin salon avantajı.
toplu (ki-kare, perGrid, totalDeployedSol, effectiveHouseEdge)
/api/v1/rounds?limit=100ücretli (Bearer)amaç: Son N indekslenmiş tur, en yenisi önce. Toplu içe alım için bunu kullanın; düşük gecikmeli yeni tur uyarıları için /events/stream'i kullanın.
limit— döndürülecek tur sayısı; varsayılan 100, maks 10000
indekslenmiş son N tur (id, deployed[25], count[25], winningSquare, totalDeployed, totalWinnings)
/api/v1/rounds/{id}ücretli (Bearer)amaç: Tek tur ayrıntısı, geçmişte imleçle gezinme için önceki/sonraki id'lerle birlikte.
id— tur id (yol segmenti)
tek tur + önceki/sonraki id'ler
/api/v1/grid/{n}?limit=200ücretli (Bearer)amaç: Kare başına istatistik artı grafik için son isabet/ıska serisi (1 = isabet, 0 = ıska).
n— kare indeksi 0..24 (yol segmenti)limit— seri uzunluğu; varsayılan 200
ızgara başına istatistik + son isabet/ıska serisi (1 ≤ n ≤ 25)
/api/v1/events?since=N&limit=M&kind=Xücretli (Bearer)amaç: Yoklamalı olay günlüğü. drought-broken, big-round, tier-crossing, milestones, abonelik değişikliklerini içerir. `since` imlecinden daha yeni olayları çekin.
since— id imleci; yalnızca id > since olan olaylar dönerlimit— çağrı başına maks olay; varsayılan 100kind— isteğe bağlı filtre: drought_broken | big_round | tier | milestone | subscription
{
"count": 12,
"lastId": 47,
"events": [
{ "id": 47, "ts": "...", "kind": "drought_broken", "grid": 8, "drought": 91, "roundId": 247101 },
{ "id": 48, "ts": "...", "kind": "big_round", "roundId": 247155, "deployedSol": 8.94, "thresholdSol": 8.15, "multiplier": 1.10, "winningSquare": 12, "totalMiners": 209 },
...
]
}/api/v1/events/stream?since=N&kind=Xücretli (Bearer)amaç: /events ile aynı olay günlüğünün SSE akışı. Bağlanınca son 50 olayı (veya imleçten beri olanları) tekrar oynatır, ardından her yeni olayı canlı iter.
since— isteğe bağlı tekrar oynatma imleci; atlanırsa son 50 oynatılırkind— isteğe bağlı filtre (/events ile aynı küme)
server-sent events; replays last 50 (or events since cursor) on connect, then pushes each new event as it fires (drought / streak / big round / tier / milestone / subscription).
/api/v1/dump?from=X&to=Y&limit=10000ücretli (Bearer)amaç: Toplu tarihsel dışa aktarma — tüm indekslenmiş turları `from` / `nextFrom` imleçleriyle sayfalayın. Bunu kendi veritabanınızı bootstrap etmek için kullanın, ardından artımlı güncellemeler için /events/stream'e geçin.
from— başlangıç tur id (dahil)to— isteğe bağlı bitiş tur id (dahil)limit— sayfa boyutu; varsayılan 5000, maks 10000
{
"count": 5000,
"from": 228237,
"to": 233236,
"hasMore": true,
"nextFrom": 233237,
"rounds": [ { id, deployed[25], count[25], winningSquare, totalDeployed, totalWinnings }, ... ]
}/api/v1/reissuehalka açıkamaç: API anahtarı rotasyonunun 1. adımı. Aktif aboneliğe sahip cüzdanla imzalamanız gereken bir mesaj döner.
ownerPubkey— başlangıçta abone olan cüzdan
{ "ownerPubkey": "..." }{ "nonce": "ore-reissue-...", "message": "OREStats reissue ... @ ...", "expiresAt": "..." }/api/v1/reissuehalka açıkamaç: Rotasyonun 2. adımı. Cüzdan imzasını gönderin; eski anahtar derhal iptal edilir ve yeni bir anahtar dönülür (yine yalnızca BİR KEZ gösterilir).
nonce— POST /reissue'den dönen değerownerPubkey— POST ile aynı cüzdansignatureBase64— mesaj dizesinin base64 kodlu ed25519 imzası
{ "nonce": "...", "ownerPubkey": "...", "signatureBase64": "..." }{ "apiKey": "ore_xxx (NEW, old key revoked)", "subscriberId": "sub_...", "paidUntil": "..." }Strateji Lab'ı
Parametreli stratejiler oluşturun, geriye dönük ve ileri test edin. create / backtest / analytics uç noktaları tek bir DSL şeklini paylaşır — bu bölümün altındaki değer referansına bakın.
/api/v1/lab/strategiesücretli (Bearer)amaç: Bir strateji oluşturun. Aktif olduğunda OREStats her yeni tur için otomatik olarak kâğıt-ticaret tahmini kaydeder ve ileri test istatistiklerini sunar.
name— görünen etiket, boş olmayan dizedsl— tam Strateji DSL — base_strategy, params, isteğe bağlı filters[]. Aşağıdaki değer referansına bakın.
{
"name": "my cold-5",
"dsl": {
"base_strategy": "cold",
"params": {
"bet_size_lamports": 200000,
"num_squares": 5,
"sizing_mode": "flat",
"max_bet_per_square_lamports": 5000000,
"tx_fee_lamports": 10000
},
"filters": [
{ "metric": "current_drought_min", "op": ">=", "value": 30 }
]
}
}{
"strategy": {
"id": "...", "owner": "...", "name": "...",
"dsl": { "base_strategy": "...", "params": { ... }, "filters": [ ... ] },
"createdAt": "...", "updatedAt": "...", "active": true
}
}/api/v1/lab/strategiesücretli (Bearer)amaç: Sahip olduğunuz stratejileri canlı ileri test istatistikleriyle birlikte listele (sonuçlanan turlar, kazanma sayısı, gerçek tur sonuçlarına dayalı ROI).
{
"count": 3,
"strategies": [
{
"id": "...", "name": "...", "dsl": { ... }, "active": true,
"stats": { "roundsSettled": 412, "roundsWon": 88, "netProfitSol": 0.123, "roiPercent": 4.7 }
},
...
]
}/api/v1/lab/strategies/{id}ücretli (Bearer)amaç: Sahip olduğunuz tek bir stratejiyi tahmin sayısıyla birlikte getirin.
id— strateji id (yol segmenti)
{ "strategy": { ... }, "predictionCount": 412 }/api/v1/lab/strategies/{id}ücretli (Bearer)amaç: Bir stratejiyi yeniden adlandırın veya aktif bayrağını değiştirin. Pasif stratejilerin yeni turlarda tahmini durur ancak geçmişleri korunur.
name— yeni görünen ad (isteğe bağlı)active— tahminlere devam etmek için true, duraklatmak için false (isteğe bağlı)
{ "name": "renamed", "active": false }{ "strategy": { ... } }/api/v1/lab/strategies/{id}ücretli (Bearer)amaç: Sahip olduğunuz bir stratejiyi tamamen silin. Bağlı tüm tahminler kaldırılır; varsa liderlik tablosu girdisi kaybolur.
id— strateji id (yol segmenti)
{ "ok": true }/api/v1/lab/strategies/{id}/forwardücretli (Bearer)amaç: Bir strateji için ileri test istatistikleri: net SOL, ROI, kazanma oranı, sermaye eğrisi, maksimum drawdown, maksimum kayıp serisi, bekleyen sonuçlanmamış turlar.
id— strateji id (yol segmenti)
{
"strategyId": "...",
"roundsObserved": 432,
"roundsBet": 412, "roundsWon": 88,
"squaresBet": 2060, "squaresWon": 92,
"netProfitSol": 0.12, "totalStakeSol": 2.6,
"roiPercent": 4.7, "winRate": 0.21, "perSquareWinRate": 0.045,
"maxDrawdownSol": 0.08, "maxStreak": 12,
"equityCurve": [{ "round": 247001, "balanceLamports": 0 }, ...],
"pendingCount": 1
}/api/v1/lab/backtestücretli (Bearer)amaç: Bir DSL'i indekslenmiş tarihsel turlar üzerinde yeniden oynatın. Tur başına PnL, kare başına katkı, sermaye eğrisi ve erken çıkış sebebi dahil tam BacktestResult döner.
dsl— Strateji DSL (create ile aynı şekil)fromRoundId— isteğe bağlı yeniden oynatma penceresinin dahil alt sınırıtoRoundId— isteğe bağlı dahil üst sınır
{
"dsl": { "base_strategy": "...", "params": { ... }, "filters": [ ... ] },
"fromRoundId": 200000,
"toRoundId": 247000
}{
"result": {
"totalRounds": 47000, "roundsBet": 9200, "roundsWon": 1800,
"squaresBet": 46000, "squaresWonOn": 1900,
"netProfitLamports": ..., "netProfitSol": ...,
"totalStakeLamports": ..., "totalStakeSol": ...,
"totalRecoveryLamports": ..., "totalRecoverySol": ...,
"roiPercent": ..., "winRate": ..., "perSquareWinRate": ...,
"maxStreak": ..., "capHits": ..., "totalCapLossSol": ...,
"minWalletSol": ..., "maxDrawdownSol": ...,
"rangeMin": 200000, "rangeMax": 247000,
"exitedEarly": null,
"exitRoundId": 0,
"equityCurve": [{ "round": ..., "balanceLamports": ... }, ...],
"perSquare": [{ "square": 0, "betCount": ..., "winCount": ..., "netLamports": ... }, ...],
"perRoundPnlLamports": [...],
"streakRunLengths": [...]
}
}/api/v1/lab/analyticsücretli (Bearer)amaç: Ağır analitik paketi — Monte-Carlo güven aralıkları artı parametre taramaları üzerinde iç içe dört geriye dönük test. İlk çağrıda 3-6 sn, sıcak önbellekte saniye altı bekleyin. Önbellek anahtarı DSL'dir.
dsl— Strateji DSL (backtest ile aynı şekil)
{ "dsl": { ... } }{ "analytics": { ... } }/api/v1/lab/leaderboardhalka açıkamaç: Halka açık en iyi stratejiler listesi. Yalnızca ROI / örneklem boyutu açıktır; DSL, bir abone ayrıntı uç noktasını görüntüleyene kadar gizlidir.
{
"generatedAt": "...",
"minRoundsToQualify": 1000,
"count": 14,
"entries": [
{ "id": "...", "name": "...", "ownerShort": "abcd...wxyz", "roiPercent": ..., "roundsSettled": ... },
...
]
}/api/v1/lab/leaderboard/{id}ücretli (Bearer)amaç: Tek bir liderlik tablosu girdisinin tam DSL'i, ileri test özeti ve sermaye eğrisi. Abonelere kapatılmıştır — halka açık kullanıcılar yalnızca üst düzey ROI'yi görür.
id— strateji id (yol segmenti)
{
"strategy": {
"id": "...", "name": "...", "ownerShort": "abcd...wxyz",
"dsl": { ... },
"createdAt": "..."
},
"forwardTest": {
"roundsSettled": ...,
"netProfitSol": ...,
"equityCurve": [{ "round": ..., "balanceLamports": ... }, ...]
}
}Strateji DSL — kabul edilen değerler
base_strategy — cold, spread, drought, custom_squares, hot, top_hit_rate, bottom_hit_rate, recent_winners, anti_spread, min_miners, corners, edges, center_block, diagonal_main, diagonal_anti, row, column, checkerboard, all_25
params.sizing_mode — flat, martingale, reverse_martingale, fibonacci, dalembert, kelly
filters[].metric — rounds_since_last_big, consecutive_losses, current_drought_min, current_drought_max, total_deployed_pctile, total_miners, rounds_since_big_round, chi_square_p_recent
filters[].op — < , <= , > , >= , ==
params.* sayısal aralıklar (sunucu menzil dışı değerleri kırpar): bet_size_lamports required, (0, 1e8] num_squares 1..25 drought_threshold 1..1000 custom_squares int[] in 0..24 hit_rate_lookback 50..20000 row_index, column_index 0..4 martingale_multiplier 1..10 loss_streak_threshold 1..100 dalembert_step_lamports 1..1e6 kelly_fraction 0.0001..1 kelly_bankroll_lamports >= 1 max_bet_per_square_lamports 1..1e8 tx_fee_lamports 0..1e7 stop_loss_streak 1..1000 cooldown_after_loss_rounds 0..500 take_profit_lamports >= 0 session_stop_loss_lamports >= 0 kotalar: max 100 strategies per account
Limitler ve adil kullanım
- API anahtarı başına: 5 istek/sn (patlama 60). Aşımda
Retry-Afterile 429. - Başlıktaki API anahtarı tek kullanımlık düz metindir: saklayın — yalnızca özet (hash) tutulur.
- Anahtar paylaşımı algılanabilir (eşzamanlı IP'ler) ve iptale yol açabilir.
- Panel uç noktaları (
/api/live*) tarayıcı oturumu + Origin eşleşmesi gerektirir — programatik kullanım için değildir.