Skip to content

Live ORE v3 board on Home + confirmation polling after submit (ports ORE Desk features) - #40

Open
CodesbyFebin wants to merge 2 commits into
mainfrom
feature/ore-live-board
Open

CodesbyFebin wants to merge 2 commits into
mainfrom
feature/ore-live-board

Conversation

@CodesbyFebin

Copy link
Copy Markdown
Owner

Ports the useful parts of ORE Desk into the Kotlin app. It does not port ORE Desk's Jupiter swap, study page, web3.js or 0.05/0.2/5 caps.

Branched from main at 2101dd9. main moved past 541c05c with the website PRs #38/#39, which touch only the website.

Live board (Home ORE card → Round blocks)

  • Each square shows live SOL deployed and the miner count. The card also shows the round id, slots left with a time estimate (from the measured slot rate), the motherlode and the board total.
  • Board, Treasury and Round reads are validated: owner = ORE v3 program, discriminator (105/104/109), exact size, and Round.id == Board.round_id. These are the checks ORE Desk was missing.
  • end_slot = u64::MAX → "Waiting for first deploy".
  • A failed read shows "Not synced". An older good read stays on screen, labelled with its age.
  • The board is read every 15 s, and only while the network selector is on Mainnet. On devnet the card says ORE v3 is not deployed there and shows no mainnet numbers.

After the single submit

  • sendTransaction now passes maxRetries: 0, and there is still no resend path.
  • Then read-only getSignatureStatuses polls run every 2 s, up to 150 s, until the status is confirmed, finalized or failed, or the blockhash expires.
  • Confirmed is shown only after a confirmed or finalized status, with a Solscan link for the operation's own cluster (?cluster=devnet on devnet). Otherwise the screen says "Not confirmed: check Solscan before retrying".
  • Each observed status is written to the operation and its receipt (OBSERVED_CONFIRMED / FINALIZED / FAILED / OUTCOME_UNKNOWN).

Unchanged

0.01 SOL mainnet cap, risk tick (now worded "I understand SOL on squares that don't win can be lost."), exact-message review, MWA signing, Rounds = 1, no auto-spend. Pinned dependencies are unchanged.

Evidence (build host, JDK 17, --offline)

  • Android unit tests: 414 run, 405 passed, 9 skipped, 0 failed (+14 new: OreLiveBoardTest 7, ConfirmationTest 7).
  • Screenshots: 33 run, 29 passed, 4 skipped. verifyRoborazziDebug -Pscreens passes. 01-mine-full.png was re-recorded for the devnet wording.
  • Android lint (lintDebug): pass, no lint-baseline change.
  • Static analysis (scripts/lint-static.sh): pass.
    • detekt baseline: 7 entries re-keyed because the OreMiningCard / RoundBlocks signatures changed (same rules: LongParameterList, LongMethod, CyclomaticComplexMethod, FunctionNaming), and 1 removed. No new suppressed rule.
    • ktlint baseline: 174 → 174 (line shifts only).
  • Fixture: real mainnet capture of round 438915, read-only with capture.py on 2026-10-13. Expected values were decoded independently with Python struct.
  • ORE fork sim (LiteSVM, local, nothing sent): fresh snapshot of round 438919. The app's Deploy bytes match the source derivation and execute on the fork. The stale-round check is rejected. 2/2 passed.
  • Commit stamp: 8a1557a. check passes.
  • Debug APK: EdgeORE-8a1557a-debug.zip on the draft release. The APK's sha256 is eee244da…bd671.

Not run: a device or phone session, and no mainnet transaction.

…e single submit

- Round blocks show live per-square SOL and miner counts, round id, slots left / time estimate and motherlode
  from validated Board/Treasury/Round reads (owner, discriminator, size, round id); end_slot u64::MAX reads
  'Waiting for first deploy'; failed reads say 'Not synced'; polled every 15 s only while the selector is Mainnet;
  devnet says ORE v3 is not deployed there
- After the single submit: read-only getSignatureStatuses polls (2 s, up to 150 s) until confirmed/finalized/failed
  or blockhash expiry; 'Confirmed' with a cluster-aware Solscan link, else 'Not confirmed: check Solscan before
  retrying'; receipts record each observed status; sendTransaction maxRetries 0; no resend
- Risk tick: 'I understand SOL on squares that don't win can be lost.'; 0.01 SOL cap, review, MWA, Rounds=1 unchanged
- Tests: real mainnet capture round 438915 (read-only), observer validation, sync labels, confirmation states, UI
- Baselines: detekt re-keys 7 entries for two changed composable signatures and drops 1; ktlint 174 -> 174 (line shifts)
- docs/screenshots/full/01-mine-full.png re-recorded (devnet wording)

This branch has not been deployed

No deployments
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant