RIG FIELD
MANUAL.
Know the instruments.
Understand the operation.
The offshore operation
RIG is a Solana drilling experience: configure a deployment, explore a depth, and follow a server-resolved outcome through onchain settlement.
From operator to settlement
- Connect walletSolana operator account
- Scan reservoirRead OIL reward reserves
- Select & deployDepth, amount, wallet approval
- Drill & resolveBackend WIN or dry well
- Settle onchainReward / buyback / burn
The control room presents three physical monitors in a persistent 3D environment. A FastAPI backend assesses reserves, records mining sessions, resolves WIN/LOSS outcomes and runs reward, buyback and burn stages. PostgreSQL keeps the session and settlement records.
- OIL rewards
- A successful drill has a calculated reward-token obligation. Reward amounts use the actual mint’s decimal precision.
- Protocol activity
- WIN and LOSS allocate part of deployed SOL to token buybacks. Transaction-attributed tokens feed the burn policy.
- $RIG dashboard
- Market telemetry and a DexScreener embed sit alongside mining tools. The chart reference, public token configuration and reward mint are separate identities.
Your first drilling session
A complete operator checklist, from connecting a wallet to inspecting the settlement.
Preflight → deployment → review
- Connect a Solana wallet
Use a supported Wallet Standard account, such as Phantom, Solflare or the available MetaMask connection. Connection shares your public address; deploying is a separate approval.
- Enter the control room
Open Mining and use Overview or a monitor’s FOCUS button to orient yourself.
- Scan reward reserves
On the left monitor, initiate the reserve scan. The four-second presentation can wait longer for live RPC data.
- Select a depth
After a sufficient scan, open depth selection. Compare the multiplier and probability range; each drill has its own outcome.
- Enter SOL deployment
Set a positive amount in the right monitor, with up to nine decimal places. Retain SOL for network fees.
- Review reserve assessment
Start Drilling first requests a deployment-specific assessment. If reserves are insufficient, the UI stops before asking for a transfer.
- Authorize SOL deployment
The wallet submits your SOL transfer to the displayed Vault. The client waits for confirmed transaction data and checks the destination and amount before recording the session.
- Follow the drilling sequence
Startup, descent and reservoir analysis run over 15 seconds. Wait for the backend result; the animation does not choose it.
- Read discovery results
OIL DISCOVERED is a WIN. DRY WELL is a LOSS and skips the reward transfer stage.
- Inspect settlement signatures
Use each Reward, Buyback and Burn link to check its own Solscan transaction. A submitted status is not proof of finalization.
- Continue when eligible
Continue Drilling resets the presentation for another reserve scan while capacity remains. After the fourth resolved drill, cooldown applies.
Three instruments. One operation.
The monitor frames and camera stay in place while dashboard modes change the information inside them.
Monitor stations
Read reserves
Select drilling depth
Follow the drill
Inspect settlement
Configure SOL
Authorize deployment
Dashboard modes
- Drilling
- Default mode: reserve scanner, drilling operation and deployment console.
- Economic
- Vault health probability model, economic explanation and a depth-by-depth expected reward/distribution simulation.
- Mining Stats
- Public leaderboard, production buyback/burn submissions and recent recorded WINs. Refreshes every 30 seconds while open.
- $RIG
- Full-monitor DexScreener chart, configured-token market telemetry and a lightweight ambient rig illustration.
The three mode buttons sit below Target Depth on the center monitor. BACK TO DRILLING returns to the operational displays. Presentation mode does not reset an active drill, settlement request, selected depth, wallet or camera.
Camera and monitor interaction
Use the bottom station toolbar or each monitor’s FOCUS control. Inputs, links and internal monitor scrolling remain interactive; scroll over the room background to adjust camera zoom.
Read the reward reserve
The scanner is a view into OIL reward reserves—not a geological prediction engine.
What the scan reads
The frontend requests readiness and economics together. The Vault service reads SOL balance, reward-token accounts and mint precision through Solana RPC. Without a deployment amount, readiness checks that OIL reserves are positive; it does not reserve a payout.
Readiness versus a session assessment
A sufficient scan unlocks depth selection. Before deployment, a new assessment compares the Vault’s reward value with that specific drill’s rounded reward obligation. Coverage below 1× is insufficient. Reward reservations are not tracked, so a reading is a snapshot rather than a guarantee of future availability.
Depth is a risk–reward choice
Deeper drilling increases the WIN reward multiplier while lowering the configured probability range.
Compare all supported depths
Code-reference depth defaults below; these are not a live deployment assessment.
500 M pairs a 1× WIN reward multiplier with a 15%–60% configured range. A larger multiplier is paired with a lower maximum chance.
Read the assessed probability
The range is not one universal WIN rate. Vault coverage positions the drill within its depth’s range. The deployment flow requests an assessment before the wallet transfer, and a session records the probability used for resolution. Repeated drills do not inherit a guaranteed result from previous attempts.
The drilling lifecycle
A 15-second instrument sequence presents the operation. The backend determines the actual outcome.
Scrub the operational timeline
No real drill is started. Startup 0–3s, descent 3–10s, analysis 10–15s; discovery follows the backend response.
Resolution is a server event
The frontend requests resolution after the session’s 15-second minimum. The backend uses the persisted probability and stores one resolved outcome. Retrieving an already resolved session returns the existing result. The outcome is not revealed early by the visual timeline, and API latency can extend the wait.
Capacity and thermal recovery
Four resolved drills consume a capacity cycle. The backend starts a 120-second cooldown at the fourth resolution.
A four-drill cycle
COOLDOWN
WINs and dry wells both consume capacity when resolved. During cooldown, configuration is locked. Once the backend cooldown expires, capacity can reset to four. The frontend keeps a per-wallet cooldown deadline in browser storage to preserve the visible countdown across refresh.
What refresh can recover
Reconnect the same wallet to load backend capacity, cooldown and an unresolved session. The client also retries recording a pending deposit if it was saved after transfer verification. Resolved-session settlement can be looked up by its session ID, but the current wallet-state endpoint does not list completed sessions; automatic recovery of every completed result is not guaranteed.
A probability model tied to reserves
The same depth can have a different assessed WIN chance as reward coverage changes.
Coverage is relative to this drill
Coverage Ratio = available reward value ÷ the session’s required reward value. The denominator is the configured OIL obligation after downward rounding to the mint’s atomic precision, valued at the configured reward-token price. It is not the entire SOL deposit or an arbitrary global reserve target.
coverageRatio = availableRewardValueUsd / requiredRewardValueUsd
vaultHealth = clamp((coverageRatio - coverageMin) / (coverageMax - coverageMin), 0, 1)
probabilityFactor = 0.25 + 0.75 * vaultHealth
winProbability = depthMaxProbability * probabilityFactorThe implementation uses a 0.25–1 probability factor. The coverage thresholds come from configuration. With 1× and 10× thresholds, health is clamp((coverageRatio − 1) / 9, 0, 1): health 0%, 50%, 100% corresponds to factors 0.25, 0.625, 1.
Explore every depth
Uses each depth’s configured minimum/maximum. When the feed is unavailable, the verified code-reference defaults are used. No reserve, session or wallet state changes.
From SOL deployment to OIL reward
Reward value combines deployment, configured USD prices, the WIN reward share and the selected depth multiplier.
The production calculation
Loading configured economics…
depositValueUsd = deploySol × configuredSolPriceUsd
rewardValueUsd = depositValueUsd × winRewardShare × depthMultiplier
rewardTokens = rewardValueUsd / configuredRewardTokenPriceUsd
rewardAtomic = floor(rewardTokens × 10**mintDecimals)
payableOil = rewardAtomic / 10**mintDecimalsThe commonly configured WIN reward share is 60%; the current feed supplies the deployed value. Pricing is backend-configured rather than an automatically refreshed spot quote. The current settlement runner calculates the transfer with the active server economics at settlement time, so an earlier estimate is not a fixed-price payout promise.
An interactive calculation
- Calculated WIN value
- Unavailable
- Mint-rounded OIL calculation
- Unavailable
The rounded token value comes from a read-only readiness request without a wallet. It is a calculation, not a payout or a guaranteed discovery.
Decimals are a unit conversion
Atomic units are the smallest indivisible units of a mint. A hypothetical mint with eight decimals turns 64,864 atomic units into 0.00064864 tokens—not 64,864 whole tokens. The actual transfer reads the actual mint precision; eight is only an example, not a hardcoded OIL assumption.
- Estimated reward
- A simulation using selected inputs and the currently available economics configuration.
- Calculated obligation
- The reward calculation rounded down to the mint’s indivisible atomic units.
- Submitted payout
- A persisted reward transfer with a submitted status and a real transaction signature.
- Confirmed transfer
- A separate onchain outcome supported by transaction status and execution details. Submission alone does not prove it.
Two outcomes. Two allocation paths.
The allocation model describes nominal shares of the deposited SOL. The depth multiplier scales the WIN reward value separately.
Compare WIN and LOSS
The WIN reward value is then multiplied by depth and paid in OIL. These nominal shares are not a promise that the multiplied reward and other allocations add up to the original SOL deposit.
The intended WIN split is 60% reward value, 30% buyback + burn and 10% Vault. LOSS skips a reward and uses 80% buyback + burn and 20% Vault. The selector reads the deployed shares from economics. The backend rounds nominal reward/buyback allocations down in lamports, then assigns the remainder to the Vault allocation.
How the Vault fits
The reward Vault funds the token obligation. Higher depth multipliers can create reward value greater than the nominal reward share of a single deposit. Buybacks use their own allocation; burning the acquired tokens is not a second SOL charge. These mechanics do not establish profitability, reserve sustainability under every condition, or guaranteed token appreciation.
Follow the buyback and burn pipeline
One production settlement record links a resolved mining session to its reward, buyback and burn signatures.
WIN and LOSS sequencing
WIN
- Reward transfer
- 5s gate
- Buyback
- 5s gate
- Balance check
- 10s gate
- BurnChecked
LOSS
- Buyback
- 5s gate
- Balance check
- 10s gate
- BurnChecked
These are persisted eligibility gates, not exact completion guarantees. A normal request waits through eligible stages in one API call. Preparation, RPC visibility and submission can add time. On WIN, the reward-to-buyback gate is set when the signed reward is persisted; the buyback-to-balance gate uses its persisted buyback timestamp.
Purchase, attribute, then burn
- PumpPortal Local
- Builds the token-purchase transaction using the configured buyback mint and the session’s SOL allocation. The service signs and submits it.
- Transaction attribution
- The balance check uses the buyback transaction’s token balance changes. It does not treat an unrelated entire Vault balance as tokens acquired by this drill.
- RPC visibility window
- Unavailable transaction data is retried every two seconds for up to 30 seconds within the request. An expired lookup window returns a pending state; it does not submit another buyback.
- BurnChecked
- Reads the actual token program and mint decimals, verifies source-token-account availability, and constructs checked burn instructions after the burn gate.
The five-token execution policy
burnAtomic = max(0, acquiredAtomic - 5 * 10**buybackMintDecimals)
// A zero amount returns insufficient-burn-amount; no invalid burn is built.The deduction is five whole buyback tokens—not five atomic units. It is RIG’s current execution policy, not a universal Solana requirement. The reward-token mint and buyback-token mint may differ.
Public production activity
Loading public activity…
View Mining Stats in the control room →Read the public operations record
Mining Stats reuses the three monitors for operator ranking, submitted transaction activity and recorded discoveries.
Leaderboard rules
Only resolved mining sessions count as drills. Ranking uses known submitted OIL payouts on WIN sessions, then WIN count, then drill count, then a stable wallet-address ordering. The global rank continues across pages. Retries do not create extra reward entries for the same settlement.
Missing historical reward precision is not guessed. Such payouts are omitted from the known reward sum and counted in reward_amount_unavailable_count. A displayed known total of zero can therefore coexist with recorded WINs.
Winners and submitted events
Winners are resolved oil_discovered sessions ordered by resolution time, newest first. A WIN can appear before a reward is submitted. Public buyback/burn activity includes production records with submitted status and a recorded signature, excluding debug operations and uncertain prepared-only states.
Submitted burn totals are grouped by mint and decimals. The singular total is unavailable if mints differ or amounts are unknown. Missing submission times use an explicitly marked settlement-record timestamp, not a fabricated transaction time. The UI refreshes every 30 seconds while this mode is active and supports loading additional records.
GET /api/stats/leaderboardGET /api/stats/buyback-burnGET /api/stats/winnersThe $RIG market instrument
The token dashboard is a market-information view. It does not determine a mining outcome or prove a reward payout.
Main token and mining reward
The main project token is RIG. Mining rewards are paid in OIL using the backend’s configured reward mint. Both public identities are defined separately in the shared token configuration; neither is the DexScreener pair address.
XsaHND8sHyfMfsWPj6kSdd5VwvCayZvjYgKmmcNL5qhThe configured buyback target is a third identity and can differ from both tokens. Burn activity uses the mint attached to each transaction record. The chart link below uses the preserved pair reference, while the project market link above uses the main token contract.
Chart and market telemetry
The chart fills its physical monitor and remains interactive. Available chart/trade panels are supplied by DexScreener. The chart uses its own pair reference; telemetry looks up Solana pairs for the configured token contract, preferring that reference when it belongs to the configured base token. Otherwise it selects a matching liquid pair.
Telemetry can show USD price, market capitalization, FDV, liquidity, 24-hour volume/change and buy/sell counts. Missing fields stay unavailable. Polling runs every 30 seconds while the panel is mounted. Liquidity, market cap and FDV are distinct measures.
Open the configured DexScreener chartNo supply, tax, governance, utility entitlement or security-audit claim is implied by this manual or the market panel.
The protocol behind the instruments
The 3D room is the interface; the API and persisted transaction records carry the operation’s state.
System map
Persistence and idempotency
Wallet Standard handles the deployment approval. Next.js and React Three Fiber render the room and call FastAPI. The API stores sessions and per-wallet capacity in PostgreSQL. Reward transfer construction uses the reward mint’s token program and actual decimals; PumpPortal Local provides the buyback construction path; BurnChecked handles the checked token burn.
Settlement signs and persists transaction bytes and a deterministic signature before broadcast. Subsequent requests reuse existing operation identity and avoid building duplicate transactions for a persisted signature. Persistence is not proof of broadcast or success: an uncertain send can require reconciliation, and a repeated request does not guarantee that every stalled stage can automatically resume.
Public API reference
The implemented FastAPI routes used by the frontend. This reference describes reads and state-changing operations separately.
Contract conventions
Financial human-readable amounts are decimal strings unless a field explicitly identifies atomic units or lamports. Timestamps are ISO-8601. Public statistics require no connected wallet. A wallet parameter identifies a session owner; do not treat a supplied public address as a cryptographic proof of identity.
Open the configured backend Swagger referenceEndpoint index
GET/api/economics
Configured prices, allocation shares, depth ranges and operational limits.
- Parameters
- None.
- Response fields
- status; prices.{sol_usd,reward_token_usd,source}; vault; probability (including depths, coverage thresholds and factor bounds); allocations.{win,loss}; drilling.
- Errors & caveats
- 503 when the Solana Vault reading is unavailable.
GET /api/economics{
"status": "ok",
"prices": {
"sol_usd": "<configured_decimal>",
"reward_token_usd": "<configured_decimal>",
"source": "configured"
},
"probability": {
"policy": "vault_adaptive",
"global_current_probability": null,
"depths": [
{
"meters": 1000,
"multiplier": 2,
"min_win_chance": "<fraction>",
"max_win_chance": "<fraction>"
}
]
},
"drilling": {
"duration_seconds": 15,
"max_drills": 4,
"cooldown_seconds": 120
}
}GET/api/vault
Read the configured reward Vault through Solana RPC.
- Parameters
- None.
- Response fields
- vault_address; sol_balance_lamports; sol_balance; oil_mint; oil_balance; oil_decimals; status; checked_at; economic_value; reserve.
- Errors & caveats
- 503 on unavailable or inconsistent RPC data.
GET /api/vault{
"vault_address": "<public_vault_address>",
"sol_balance_lamports": 0,
"sol_balance": "0",
"oil_mint": "<reward_mint>",
"oil_balance": "0",
"oil_decimals": 8,
"status": "ok",
"checked_at": "<ISO-8601 timestamp>",
"reserve": {
"status": "empty",
"coverage_ratio": null,
"health_policy": "<reserve_policy>"
}
}GET/api/mining/readiness
Read reserve readiness; optionally assess a specific deployment.
- Parameters
- Query: deploy_amount_lamports (positive integer) and depth (supported metres) must be provided together. wallet is optional. Wallet-associated sufficient assessments can return assessment_id.
- Response fields
- status; vault.{oil_balance,available_oil}; readiness; probability; assessment (reward calculation, allocations and probability); assessment_id; checked_at.
- Errors & caveats
- 422 for invalid wallet, depth, amount or an incomplete amount/depth pair; 503 for RPC unavailability. Insufficient reserves return status unavailable with sufficient=false.
GET /api/mining/readiness{
"status": "unavailable",
"vault": {
"oil_balance": "0",
"available_oil": "0"
},
"readiness": {
"sufficient": false,
"reserve_status": "empty",
"reward_vault_value_usd": "0",
"available_reward_value_usd": "0",
"coverage_ratio": null,
"reservations_tracked": false,
"health_policy": "<reserve_policy>"
},
"probability": {
"policy": "vault_adaptive",
"dynamic_policy_configured": true,
"coverage_minimum": "<configured_decimal>",
"coverage_maximum": "<configured_decimal>",
"global_current_probability": null
},
"assessment": null,
"assessment_id": null,
"checked_at": "<ISO-8601 timestamp>"
}GET/api/mining/wallet/{wallet_address}
Read wallet capacity, cooldown and an unresolved session if present.
- Parameters
- Path: wallet_address, a valid Solana public address.
- Response fields
- wallet; status; current_session; drilling.{used,remaining,max}; cooldown.{active,ends_at,remaining_seconds}.
- Errors & caveats
- 422 for an invalid wallet address.
GET /api/mining/wallet/{wallet_address}{
"wallet": "<wallet_address>",
"status": "ready",
"current_session": null,
"drilling": {
"used": 0,
"remaining": 4,
"max": 4
},
"cooldown": {
"active": false,
"ends_at": null,
"remaining_seconds": 0
}
}POST/api/mining/start
Record a session after the normal UI has submitted and verified the SOL deployment.
- Parameters
- JSON: wallet (string), deposit_signature (string), depth (integer), deploy_amount_lamports (positive integer); optional assessment_id (string|null). Reuse the same matching deposit identity for a retry.
- Response fields
- Public session fields plus drilling.{used,remaining,max}. Matching deposit retries return the existing session.
- Errors & caveats
- 422 for invalid input; 409 for deposit reuse with different inputs, active cooldown, exhausted capacity or an unresolved session. A session response is not independent proof of a SOL transfer.
POST /api/mining/start{
"session_id": "<session_id>",
"status": "ready",
"wallet": "<wallet_address>",
"depth": 1000,
"deploy_amount_lamports": 1000000,
"deploy_amount_sol": "0.001",
"deposit_signature": "<deposit_signature>",
"started_at": "<ISO-8601 timestamp>",
"resolved_at": null,
"drilling_duration": 15,
"result": null,
"success": null,
"probability": {
"policy": "vault_adaptive",
"effective_win_chance": "<assessed_fraction>",
"vault_health": "<health_fraction>",
"factor": "<probability_factor>"
},
"drilling": {
"used": 0,
"remaining": 4,
"max": 4
}
}GET/api/mining/session/{session_id}
Read a specific mining session.
- Parameters
- Path: session_id.
- Response fields
- session_id; status; wallet; depth; deploy_amount_lamports; deploy_amount_sol; deposit_signature; started_at; resolved_at; drilling_duration; result; success; probability; drilling; cooldown.
- Errors & caveats
- 404 for an unknown session.
GET /api/mining/session/{session_id}{
"session_id": "<session_id>",
"status": "ready",
"wallet": "<wallet_address>",
"depth": 1000,
"deploy_amount_lamports": 1000000,
"deploy_amount_sol": "0.001",
"deposit_signature": "<deposit_signature>",
"started_at": "<ISO-8601 timestamp>",
"resolved_at": null,
"drilling_duration": 15,
"result": null,
"success": null,
"probability": {
"policy": "vault_adaptive",
"effective_win_chance": "<assessed_fraction>",
"vault_health": "<health_fraction>",
"factor": "<probability_factor>"
},
"drilling": {
"used": 0,
"remaining": 4,
"max": 4
},
"cooldown": {
"active": false,
"ends_at": null,
"remaining_seconds": 0
}
}POST/api/mining/resolve
Resolve a drill after its minimum duration, or retrieve the existing result.
- Parameters
- JSON: session_id and wallet (strings).
- Response fields
- Public session response with result=oil_discovered|dry_well, success, resolved_at, drilling and cooldown.
- Errors & caveats
- 422 for invalid input; 404 for unknown session; 403 for wallet mismatch; 409 before the drill duration has elapsed.
POST /api/mining/resolve{
"session_id": "<session_id>",
"status": "resolved",
"wallet": "<wallet_address>",
"depth": 1000,
"deploy_amount_lamports": 1000000,
"deploy_amount_sol": "0.001",
"deposit_signature": "<deposit_signature>",
"started_at": "<ISO-8601 timestamp>",
"resolved_at": "<ISO-8601 timestamp>",
"drilling_duration": 15,
"result": "dry_well",
"success": false,
"probability": {
"policy": "vault_adaptive",
"effective_win_chance": "<assessed_fraction>",
"vault_health": "<health_fraction>",
"factor": "<probability_factor>"
},
"drilling": {
"used": 1,
"remaining": 3,
"max": 4
},
"cooldown": {
"active": false,
"ends_at": null,
"remaining_seconds": 0
}
}POST/api/mining/session/{session_id}/settlement
Run eligible production reward/buyback/balance/burn stages for a resolved session.
- Parameters
- Path: session_id. Required query: wallet. This is a state-changing financial operation, not a read-only status check.
- Response fields
- settlement_id; session_id; stage; resume_at; reward.{status,signature,amount,amount_atomic_units,decimals}; buyback.{status,allocation_lamports,signature}; balance_check.{status,amount}; burn.{status,signature,amount}; error; continue_drilling.
- Errors & caveats
- 404 unknown session; 403 wallet mismatch; 409 unresolved session; 422 invalid wallet. Execution errors can return HTTP 200 with stage status and error populated. Inspect the body.
POST /api/mining/session/{session_id}/settlement{
"settlement_id": "<settlement_id>",
"session_id": "<session_id>",
"stage": "balance_check",
"resume_at": null,
"reward": {
"status": "not_required",
"signature": null,
"amount": null,
"amount_atomic_units": null,
"decimals": null
},
"buyback": {
"status": "submitted",
"allocation_lamports": 800000,
"signature": "<actual_buyback_signature>"
},
"balance_check": {
"status": "pending",
"amount": null
},
"burn": {
"status": "pending",
"signature": null,
"amount": null
},
"error": null,
"continue_drilling": true
}GET/api/mining/session/{session_id}/settlement
Read the existing settlement without submitting another operation.
- Parameters
- Path: session_id. Required query: wallet.
- Response fields
- Same settlement contract as POST. Reward amount is a human-readable decimal string; balance_check.amount and legacy burn.amount are atomic integers.
- Errors & caveats
- 404 if the session/settlement does not exist; 403 wallet mismatch; 422 invalid wallet. stage=complete and continue_drilling do not establish finality; continue_drilling currently signals that a buyback signature exists.
GET /api/mining/session/{session_id}/settlement{
"settlement_id": "<settlement_id>",
"session_id": "<session_id>",
"stage": "reward",
"resume_at": null,
"reward": {
"status": "pending",
"signature": null,
"amount": null,
"amount_atomic_units": null,
"decimals": null
},
"buyback": {
"status": "pending",
"allocation_lamports": 300000,
"signature": null
},
"balance_check": {
"status": "pending",
"amount": null
},
"burn": {
"status": "pending",
"signature": null,
"amount": null
},
"error": null,
"continue_drilling": false
}GET/api/stats/leaderboard
Global operator ranks from resolved production mining records.
- Parameters
- Optional query: limit=20 (1–100), offset=0 (nonnegative). No wallet connection required.
- Response fields
- items[].{rank,wallet,total_drills,total_wins,total_losses,total_reward_oil,reward_amount_unavailable_count,total_deployed_sol,win_rate_percent}; total; limit; offset.
- Errors & caveats
- 422 invalid pagination; 503 database temporarily unavailable. Reward totals include only known submitted amounts with valid persisted decimals.
GET /api/stats/leaderboard{
"items": [],
"total": 0,
"limit": 20,
"offset": 0
}GET/api/stats/buyback-burn
Unified production submitted-activity feed with per-mint totals.
- Parameters
- Optional query: limit=20 (1–100), offset=0 (nonnegative).
- Response fields
- items[].{id,type,session_id,wallet,token_mint,amount_sol,amount_tokens,amount_atomic_units,decimals,signature,status,verified_onchain,created_at,timestamp_source,amount_source}; summary; total; limit; offset.
- Errors & caveats
- 422 invalid pagination; 503 database unavailable. Unknown burn amounts are null. Mixed mints are not combined into one token sum.
GET /api/stats/buyback-burn{
"items": [],
"total": 0,
"limit": 20,
"offset": 0,
"summary": {
"total_buyback_submitted_sol": "0",
"total_burn_submitted_tokens": "0",
"burn_submitted_by_mint": [],
"buyback_count": 0,
"burn_count": 0,
"burn_amount_unavailable_count": 0,
"verified_onchain": false
}
}GET/api/stats/winners
Newest resolved production WINs, including ones with incomplete payout data.
- Parameters
- Optional query: limit=20 (1–100), offset=0 (nonnegative).
- Response fields
- items[].{session_id,wallet,depth,deployed_sol,reward_oil,reward_signature,reward_status,won_at}; total; limit; offset.
- Errors & caveats
- 422 invalid pagination; 503 database unavailable. Unknown or not-submitted reward quantities are null.
GET /api/stats/winners{
"items": [],
"total": 0,
"limit": 20,
"offset": 0
}Submission and read-only calls
Use GET settlement to inspect a record. POST settlement can execute financial stages and may remain open while gates and transaction visibility retries run. A successful HTTP response is not a confirmation guarantee; inspect the returned stage/status/error fields and transaction evidence. Operator-only debug routes are not part of this public reference.
Read a signature correctly
A transaction reference is useful evidence to inspect—not a guarantee that an operation succeeded.
Wallet authorization
Connecting a wallet and approving a transfer are separate actions. The normal deployment flow asks Wallet Standard to sign and send a SOL transfer, then checks confirmed transaction data for the intended destination and amount. Later settlement transfers are performed by backend transaction services. This manual never requests a wallet signature.
Execution vocabulary
- Prepared / submitting
- Signed transaction bytes and a signature can already be persisted before any successful RPC broadcast.
- Submitted
- The service recorded the transaction submission. This does not establish successful execution or finalization.
- Available
- Required transaction data, such as token balance changes, is visible to the balance-check stage. It is not a blanket finality claim.
- Confirmed / verified
- A separate conclusion supported by onchain transaction evidence. The public activity feed currently labels submitted intent and does not assert verification.
- Failed
- A stage reported an error. Inspect the response and existing signature before deciding what needs recovery.
- Reconciliation required
- A broadcast result is uncertain. A stored signature must be investigated; automatically constructing a replacement could duplicate financial intent.
Inspection and interrupted operations
Open each real signature at Solscan and inspect its status and instruction details. GET settlement reads the persisted state; an explicit retry of the normal settlement flow may progress eligible work while reusing existing signatures. A signature can also be stuck in an uncertain state that requires investigation. Neither the UI’s complete stage nor Continue Drilling is proof of onchain finality.
Operator troubleshooting
Practical answers for scans, delayed transactions, incomplete records and interrupted sessions.
Frequently asked questions
Why can’t I select a depth?
Complete a sufficient reserve scan first, then open depth selection. Configuration is locked during an active drill, settlement, result view or cooldown. Continue Drilling and rescan when eligible.
What does Reservoir Scan check?
It reads configured OIL reward reserves and readiness through the API. It does not detect a real offshore reservoir or predict a mining outcome.
Why can the WIN probability change?
The backend assesses reward coverage for the deployment and depth. Coverage changes the factor within that depth’s configured probability range; the session records its resolution probability.
What happens when drilling loses?
A dry well receives no reward transfer. The LOSS allocation routes the configured shares toward buyback + burn and the Vault. The resolved drill still consumes capacity.
How do I check my reward transaction?
Open the Reward transaction link on the result monitor, or a winner’s reward link when present. Check the actual mint, recipient, amount, execution result and confirmation status on Solscan. A missing link means no signature is available in that response.
Why is a transaction pending?
A signed operation, broadcast submission and RPC-visible transaction are different states. Network/RPC visibility delays or an execution error may keep the operation pending. Check the original signature before authorizing any additional deposit.
Why hasn’t Burn appeared yet?
Burn follows buyback attribution and the persisted burn gate. Transaction data may still be unavailable; source tokens may be unavailable; a send may require reconciliation; or the amount after the five-token deduction may be zero. Use the settlement status and actual signatures rather than assuming a second transaction will be generated.
What happens after four drills?
After the fourth resolution, the backend starts a 120-second cooldown. Configuration remains locked while cooling. Expiration restores the capacity cycle; scan reserves again before the next deployment.
What happens if I refresh?
Reconnect the same wallet. The client can retrieve an unresolved session and backend capacity/cooldown, and uses stored pending-deposit information when available. It cannot guarantee automatic recovery of every completed result; preserve the session ID and original signatures.
What if the Vault has insufficient reserves?
An insufficient initial scan leaves depth selection locked. A deployment-specific assessment with insufficient reward coverage stops the normal UI before it requests the SOL transfer. Reserve readings are snapshots and do not reserve future tokens.
Does mining guarantee OIL rewards?
No. Only a recorded WIN has a reward obligation, and the transfer still needs to be submitted and execute successfully. A displayed calculation, healthy reserve or submitted signature is not a guarantee of a confirmed reward.
Where can I view Buyback & Burn history?
Choose Mining Stats in the control room, or use the public /api/stats/buyback-burn endpoint. That feed contains submitted production activity, not debug operations or a universal list of verified token destruction.
Why does a winner have an unavailable reward?
A WIN can exist before reward submission. Historical payouts may also lack trustworthy mint-decimal metadata. The statistics API returns null rather than scaling an atomic integer with an assumed decimal count.
Does switching dashboard modes stop my drill?
No. Dashboard presentation state is independent of the gameplay hook. The existing operation continues while you inspect economics, statistics or the token dashboard.