Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
318 commits
Select commit Hold shift + click to select a range
e513e53
docs: add comprehensive PR summary for permissionless launch
temma02 Mar 25, 2026
6fe0591
Merge pull request #166 from temma02/feat/164-permissionless-launch
Hahfyeex Mar 25, 2026
d6a13c1
Merge pull request #165 from temma02/feat/165-throughput-stress-test
Hahfyeex Mar 25, 2026
12ac6b5
Merge branch 'Default' into feature/confidence-score-analytics
Emmyt24 Mar 25, 2026
fe6e84a
Merge branch 'Default' into feature/dispute-bond-mechanism
Emmyt24 Mar 25, 2026
94eddb5
Merge branch 'Default' into feat/api
Folex1275 Mar 25, 2026
aa6c7a9
Merge pull request #164 from Emmyt24/feature/dispute-bond-mechanism
Hahfyeex Mar 25, 2026
f127b07
Merge pull request #162 from Folex1275/feat/api
Hahfyeex Mar 25, 2026
2278908
Merge pull request #161 from Emmyt24/feature/confidence-score-analytics
Hahfyeex Mar 25, 2026
07dc4f7
feat: implement paginated 'My Positions' endpoint with joined markets…
Emmyt24 Mar 25, 2026
e233cb9
feat: Add a /status endpoint, its corresponding unit tests (#159)
Folex1275 Mar 25, 2026
5a97bc3
feat: Add 'Bet' event emission to the prediction market contract, int…
Folex1275 Mar 25, 2026
ad66a9a
feat: implement vault re-balancing with automated yield re-investment…
temma02 Mar 25, 2026
d1afb9b
feat: implement Soroban TTL extension logic and maintenance worker sc…
Emmyt24 Mar 25, 2026
fb90967
feat: implement Proposed outcome state machine (Issue #24) (#105)
Ejirowebfi Mar 25, 2026
b9c2c9f
#10 Security: The "Emergency Stop" (Circuit Breaker) (#107)
Ejirowebfi Mar 25, 2026
b82c0d1
perf: refactor Soroban storage patterns for gas optimization (#170)
temma02 Mar 25, 2026
774c0e4
#14 Soroban: Role-Based Access Control (RBAC) (#106)
Ejirowebfi Mar 25, 2026
ff3a413
#6 Admin Circuit Breaker (Emergency Pause) (#108)
Ejirowebfi Mar 25, 2026
53c4229
feat: Implement oracle truth score calculation, API endpoints for ora…
Shredder401k Mar 25, 2026
304154f
feat: Semgrep + Secret Scanning CI Pipeline (#<issue number>) (#176)
Idrhas Mar 25, 2026
da4e3fd
feat: implement Firebase App Check for API protection (#62) (#175)
Idrhas Mar 25, 2026
5a829d2
- Form Persistence (#182)
hman38705 Mar 25, 2026
977f11d
- Share Pizza Chart (#180)
hman38705 Mar 25, 2026
d484eaf
feat: implement configurable market creation fee with burn/DAO routin…
summer-0ma Mar 25, 2026
80f38f7
Feat/contract attestation sep0157 (#178)
Idrhas Mar 25, 2026
e469fb7
Adaptive Betting Slip (#179)
hman38705 Mar 25, 2026
364d01a
feat: add WhatIfSimulator P&L projection panel (#177)
hman38705 Mar 25, 2026
bd1b0d3
Add Figma design links for issues 80, 82, and 85 (#191)
darcszn Mar 25, 2026
fdcba5b
feat: implement event-driven liquidity bot hook system (#185)
summer-0ma Mar 25, 2026
84e8747
Add How It Works Onboarding mini-README with Figma link (#188)
Danielodingz Mar 25, 2026
5cef647
feat: implement multi-feed oracle medianizer with outlier detection (…
summer-0ma Mar 25, 2026
c7ea3e9
feat: add DisputeEvidenceUpload component with IPFS pinning via Pinat…
eleven-smg Mar 25, 2026
0424dc9
feat: stabilize protocol access control and implement dynamic fee sca…
Dopezapha Mar 25, 2026
4c46add
Merge branch 'Default' into feat/stabilization-and-fees
Dopezapha Mar 25, 2026
2c524d6
feat: add PayoutTooltip with Soroban simulateTransaction preview
Mar 25, 2026
fd372aa
feat: replace spinners with CSS shimmer skeleton loading states (#197)
Darkdante9 Mar 25, 2026
88a3e4e
feat: enhance mobile pull-to-refresh with comprehensive tests and doc…
Darkdante9 Mar 25, 2026
2b6b51c
feat: Stellar Council governance voting UI (#83) (#198)
Austinaminu2 Mar 25, 2026
583e723
feat: dynamic Oracle fee adjustment via Stellar fee_stats
Mar 25, 2026
d27664e
feat: replace spinners with CSS shimmer skeleton loading states (#201)
Darkdante9 Mar 25, 2026
9eb088e
feat: trending markets endpoint - top 10 by 24h volume
Mar 25, 2026
d0942ff
feat: gas savings widget - Stellar vs Ethereum cost comparison
Mar 25, 2026
550bb53
Feat/149 dynamic theming engine (#260)
Darkdante9 Mar 26, 2026
31bec5e
Merge pull request #1 from Hahfyeex/Default (#259)
Sundayabel222 Mar 26, 2026
610a8ae
chore: scaffold monorepo workspaces + shared constants (#256)
milah-247 Mar 26, 2026
9f29692
Feat/144 contract error boundary (#204)
Austinaminu2 Mar 26, 2026
294a8f5
Feat/124 market discovery cards (#203)
Austinaminu2 Mar 26, 2026
dbb9cab
Feat/142 trustline auto checker (#199)
Austinaminu2 Mar 26, 2026
b31d2c7
feat: implement atomic bulk claim reward logic across multiple market…
petersdt Mar 26, 2026
dddf5b4
feat: implement Freighter SDK atomic transaction batching
Mar 26, 2026
2a5b9fa
feat: implement client-side slippage protection with BigInt math
Mar 26, 2026
a697403
Chore/143 bundle size audit (#270)
Mac-5 Mar 26, 2026
5298e0c
Add files via upload (#273)
Just-Bamford Mar 26, 2026
dc8c420
Feat/position token minting (#272)
Haroldwonder Mar 26, 2026
ca0a005
Feat/154 mercury indexer logic (#269)
Manuel1234477 Mar 26, 2026
6f45e2e
Feat/152 automated resolver (#268)
Manuel1234477 Mar 26, 2026
551d2d8
feat: implement weighted dispute voting mechanism (#271)
sparynx Mar 26, 2026
17387c2
feat: add fuzzy search and filter engine for markets (#265)
Manuel1234477 Mar 26, 2026
858200b
feat: secondary market position token price aggregator (#193)
Sundayabel222 Mar 26, 2026
fb76abd
feat: enforce configurable max and min bet caps
Fidelis900 Mar 26, 2026
eb57a8d
Feat/151 binary market engine (#267)
Manuel1234477 Mar 26, 2026
2ff3820
feat: enforce configurable max and min bet caps (#274)
Fidelis900 Mar 26, 2026
26a071c
feat: implement LMSR scalar AMM pricing model
Fidelis900 Mar 26, 2026
369deb8
Merge branch 'Default' into feat/177-amm-pricing
Fidelis900 Mar 26, 2026
7f6096d
feat: implement LMSR scalar AMM pricing model
Fidelis900 Mar 26, 2026
079e81d
feat: add real-time social proof ticker with Framer Motion
Mystery-CLI Mar 26, 2026
c756c69
Merge branch 'Default' into feat/stabilization-and-fees
Dopezapha Mar 26, 2026
ec2cf14
feat: implement conditional market resolution and void logic
Fidelis900 Mar 26, 2026
81b1d9f
feat: add priority notification inbox with read/unread state
Mystery-CLI Mar 26, 2026
1aa6dfa
feat: implement recurring market factory pattern
Fidelis900 Mar 26, 2026
75909d9
Uiemptystate
bolu26 Mar 26, 2026
bc99c68
feat: implement modular normalization for ZK scalar fields
Mystery-CLI Mar 26, 2026
95bf436
Uiliquityheatmap (#284)
bolu26 Mar 26, 2026
ad4366a
Merge pull request #282 from bolu26/Uiemptystate
Hahfyeex Mar 26, 2026
fa03c7f
Merge branch 'Default' into feat/166-scalar-normalization
Hahfyeex Mar 26, 2026
3ee34e7
Merge pull request #283 from Mystery-CLI/feat/166-scalar-normalization
Hahfyeex Mar 26, 2026
ae39e1f
Merge branch 'Default' into feat/178-conditional-resolution
Hahfyeex Mar 26, 2026
b0794bc
Merge pull request #279 from Fidelis900/feat/178-conditional-resolution
Hahfyeex Mar 26, 2026
f259078
Merge branch 'Default' into feat/136-transaction-batching
Mac-5 Mar 26, 2026
69ca075
Merge branch 'Default' into feat/138-client-side-slippage
Mac-5 Mar 26, 2026
8fc1a0b
Merge branch 'Default' into feat/stabilization-and-fees
Dopezapha Mar 26, 2026
aa6aa7c
Merge pull request #192 from Dopezapha/feat/stabilization-and-fees
Hahfyeex Mar 26, 2026
36867fc
Merge branch 'Default' into feature/payout-tooltip-simulation
joel-metal Mar 26, 2026
a6c0c09
Merge branch 'Default' into feature/dynamic-oracle-fee-adjustment
joel-metal Mar 26, 2026
626b70e
Merge branch 'Default' into feature/trending-markets-endpoint
joel-metal Mar 26, 2026
ab64d54
Merge branch 'Default' into feature/gas-savings-widget
joel-metal Mar 26, 2026
f81765b
Merge pull request #195 from joel-metal/feature/payout-tooltip-simula…
Hahfyeex Mar 26, 2026
acdad57
Merge pull request #255 from joel-metal/feature/dynamic-oracle-fee-ad…
Hahfyeex Mar 26, 2026
7b3eb0f
Merge pull request #257 from joel-metal/feature/trending-markets-endp…
Hahfyeex Mar 26, 2026
1f721b2
Merge pull request #258 from joel-metal/feature/gas-savings-widget
Hahfyeex Mar 26, 2026
10106f0
feat: implement nonce-based signature replay protection (#209)
quratorX Mar 26, 2026
71681d4
betconfiguration
Sundayabel222 Mar 26, 2026
abe2647
feat(oracle): add Soroban TWAP price feed contract
abore9769 Mar 26, 2026
4883180
Merge pull request #289 from observerr411/poly
Hahfyeex Mar 26, 2026
2526407
Merge branch 'Default' into fix/signature-replay-protection-209
Hahfyeex Mar 26, 2026
a46a46c
Merge pull request #286 from quratorX/fix/signature-replay-protection…
Hahfyeex Mar 26, 2026
73a820b
resolve: merge LMSR AMM pricing with conditional resolution from Default
Fidelis900 Mar 26, 2026
39997aa
Merge pull request #281 from Fidelis900/feat/180-market-factory
Hahfyeex Mar 26, 2026
e644954
Merge pull request #287 from Sundayabel222/Default
Hahfyeex Mar 26, 2026
824282d
feat(prediction-market): add partial exit path with LMSR pricing
abore9769 Mar 26, 2026
a53f2ca
feat : implement Fee Distribution Splitter
Bhenzdizma Mar 26, 2026
46cabf7
Merge pull request #291 from Bhenzdizma/BEND
Hahfyeex Mar 26, 2026
5067de7
feat: LP share tracking and fee pool distribution
Mystery-CLI Mar 26, 2026
6617730
Merge branch 'Default' into feat/lp-fee-pool-distribution
Mystery-CLI Mar 26, 2026
cc796aa
Merge pull request #292 from Mystery-CLI/feat/lp-fee-pool-distribution
Hahfyeex Mar 26, 2026
7976fbc
Merge branch 'Default' into market
Hahfyeex Mar 26, 2026
705f5e2
Merge pull request #290 from observerr411/market
Hahfyeex Mar 26, 2026
5c14054
Merge branch 'Default' into feat/bulk-claim-reward
Hahfyeex Mar 26, 2026
9148dd3
Merge pull request #262 from petersdt/feat/bulk-claim-reward
Hahfyeex Mar 26, 2026
e1036d0
feat : Re-Entrancy Guard
Bhenzdizma Mar 26, 2026
8836c6b
Merge branch 'Default' into BEND
Bhenzdizma Mar 26, 2026
7a821f3
Merge pull request #293 from Bhenzdizma/BEND
Hahfyeex Mar 26, 2026
dbcf191
feat : Re-Entrancy Guard test
Bhenzdizma Mar 26, 2026
7f4df35
Merge pull request #294 from Bhenzdizma/BEND
Hahfyeex Mar 26, 2026
f535407
add Figma design link for issue 236
mgtmdccix-oss Mar 26, 2026
001308e
add Figma design link for issue 244
mgtmdccix-oss Mar 26, 2026
16bda70
Merge pull request #296 from mgtmdccix-oss/add-figma-link-issue-244
Hahfyeex Mar 26, 2026
4637abe
Merge pull request #295 from mgtmdccix-oss/add-figma-link-issue-236
Hahfyeex Mar 26, 2026
d483a67
Hardened collateral whitelisting, fixed refund accounting, and stabil…
Dopezapha Mar 26, 2026
63a13c8
Merge branch 'Default' into feature/collateral-whitelisting
Dopezapha Mar 26, 2026
67574e8
feat: reputation badges with tier logic, glow effects and unit tests
AlonsoFi Mar 26, 2026
172e9e3
Merge pull request #298 from AlonsoFi/feat/118-reputation-badges
Hahfyeex Mar 26, 2026
07424fc
Merge pull request #297 from Dopezapha/feature/collateral-whitelisting
Hahfyeex Mar 26, 2026
7c5de7d
Merge branch 'Default' into feat/177-amm-pricing
Hahfyeex Mar 26, 2026
72f868c
Merge pull request #275 from Fidelis900/feat/177-amm-pricing
Hahfyeex Mar 26, 2026
2aed0b4
feat(events): add versioned contract event schema and downstream parser
Mar 26, 2026
81c3770
feat: implement protocol health dashboard with Prometheus and Grafana
JohnOluB Mar 26, 2026
27ab297
feat(oracle): add sports API to on-chain resolution pipeline
Mar 26, 2026
67872f0
Merge branch 'Default' into feat/195-protocol-health-dashboard
JohnOluB Mar 26, 2026
89a5863
feat(security): replace unchecked i128 arithmetic with checked_* ops …
Mar 26, 2026
2b3a8b6
feat(access): replace single admin key with four-role RBAC system
Mar 26, 2026
cbc7324
Merge pull request #303 from Mozez155/poly-3
Hahfyeex Mar 26, 2026
627e16d
Merge pull request #300 from JohnOluB/feat/195-protocol-health-dashboard
Hahfyeex Mar 26, 2026
6b02596
fix(ci): pin cargo-audit version to 0.21.1 for rust 1.79 compatibility
Muyideen-js Mar 26, 2026
ac66130
Leaderboardpageui
bolu26 Mar 26, 2026
d28411e
Marketcountdownui
bolu26 Mar 26, 2026
e07e6cc
Merge pull request #306 from bolu26/Marketcountdownui
Hahfyeex Mar 27, 2026
abff876
Merge pull request #305 from bolu26/Leaderboardpageui
Hahfyeex Mar 27, 2026
ed1d626
Merge pull request #304 from Abolax123/Default
Hahfyeex Mar 27, 2026
9f1f836
Merge pull request #263 from Mac-5/feat/136-transaction-batching
Hahfyeex Mar 27, 2026
0552078
Merge pull request #264 from Mac-5/feat/138-client-side-slippage
Hahfyeex Mar 27, 2026
81f5fd1
Implement 'Betting Vault' (Issue #5) and stabilize market settlement …
Dopezapha Mar 27, 2026
ca11b4c
Merge branch 'Default' into feature/betting-vault-v2
Dopezapha Mar 27, 2026
5a8a37d
Merge pull request #307 from Dopezapha/feature/betting-vault-v2
Hahfyeex Mar 27, 2026
d1644f4
feat: add TVL monitoring service with Prometheus and Grafana (#186)
summer-0ma Mar 27, 2026
d226258
Feat/120 onboarding wizard (#321)
Maki-Zeninn Mar 27, 2026
70dbb53
Feat/207 optimistic UI updates (#320)
Maki-Zeninn Mar 27, 2026
1c0dadb
Feat/203 wallet activity timeline (#319)
Maki-Zeninn Mar 27, 2026
ec90286
feat: implement vote delegation for DAO governance (#318)
Maki-Zeninn Mar 27, 2026
61e0c87
feat: Implement Dynamic Market Detail Page (#12) (#104)
teethaking Mar 27, 2026
3b16e1d
feat: implement real-time GraphQL subscriptions for market events (#332)
scriptnovaa Mar 27, 2026
3e47db3
fix: add graceful shutdown handling to oracle process (#331)
chukwudiikeh Mar 27, 2026
cd492f7
fix: add graceful shutdown handling to oracle process (#330)
Emmanuelluxury Mar 27, 2026
f6e1d54
feat: implement timelock guard for contract upgrades (#329)
scriptnovaa Mar 27, 2026
f377ef1
feat: implement historical market archive service (#322)
scriptnovaa Mar 27, 2026
8f028ea
feat: implement Chainlink-compatible oracle adapter trait (#308)
scriptnovaa Mar 27, 2026
d992fa0
feature:Accessibility Audit and Fixes (#323)
Emmanuelluxury Mar 27, 2026
236185c
feat: Implement self-healing indexer with gap detection and back-fill…
afurious Mar 27, 2026
dad1cd1
Fix/325 326 327 368 auth ttl payout deadline (#385)
Xoulomon Mar 27, 2026
739a6f5
Fix/367 371 372 374 (#388)
Lex-Studios Mar 27, 2026
6e24741
feat: implement reentrancy mutex and CEI pattern for reward distribut…
milah-247 Mar 27, 2026
fdb0c17
Fix/375 376 377 378 (#389)
Hexstar-labs Mar 27, 2026
d26143d
feat: Implement self-healing indexer with gap detection and back-fill…
afurious Mar 27, 2026
b7e599d
feat: implement on-chain DAO proposal and voting engine (#390)
Dopezapha Mar 27, 2026
2919e7f
Fix/369 370 379 380 (#386)
Dev-Vik-Tor Mar 27, 2026
34ed7bb
Feat/201 category filter chips (#402)
Idrhas Mar 27, 2026
bdc6030
feat: implement real-time push notifications via Firebase FCM (#382)
goldemaverick-ui Mar 27, 2026
c99dca3
Feature/dust sweep logic (#405)ë
milah-247 Mar 27, 2026
48bf9b8
feat: implement staking rewards distributor with unbonding period (#383)
fejilaup-cloud Mar 27, 2026
49dd42e
Fix/222 cors origin restriction (#384)
famvilianity-eng Mar 27, 2026
3d8b099
feat: add animated odds ticker with directional color flash (#415)
DegenerateAlchemist Mar 27, 2026
dff237c
Feature/oracle freshness gate (#403)
milah-247 Mar 27, 2026
f7fcb33
Implement Per-outcome Pool Tracking for O(1) Payout Calculation (#416)
DegenerateAlchemist Mar 27, 2026
f8983f8
fix: add pagination to GET /api/markets to prevent full table scan (#…
Neziahtech Mar 27, 2026
43d518f
feat: Resolution Center UI with Admin Access Control & Bet Confirmati…
DegenerateAlchemist Mar 27, 2026
8057ba6
feat: implement configurable platform fee rate in basis points (#395)…
Macnelson9 Mar 27, 2026
45439f6
feat: connect LiveActivityFeed to API with Framer Motion and visibili…
autostack-art Mar 28, 2026
ab715f6
feat: implement global error boundary and custom 404 page (#441)
autostack-art Mar 28, 2026
186f83f
feat: implement bet history table with sortable columns and CSV expor…
autostack-art Mar 28, 2026
0176b5c
feat: implement useMarkets, useMarket, and usePlaceBet hooks with Rea…
autostack-art Mar 28, 2026
c74e989
feat: add bet amount preset buttons with max balance calc (#366)
Jayydy Mar 28, 2026
286ce58
fix: resolve all clippy warnings blocking pre-commit hook (#444)
Sundriveauto Mar 28, 2026
212dcd4
Feat/429 theme toggle (#445)
SYMBAxx Mar 28, 2026
a5cb115
Feat/416 redis caching (#446)
SYMBAxx Mar 28, 2026
0541e84
feat: implement multi-source price aggregator with median and outlier…
SYMBAxx Mar 28, 2026
8d3cc93
Feat/421 health readiness endpoints (#447)
SYMBAxx Mar 28, 2026
fe4bd41
marketbet (#449)
Sundriveauto Mar 28, 2026
b51e93a
feat: implement auto-incrementing market ID counter (#396) (#478)
Macnelson9 Mar 28, 2026
a834ac2
Feat: Enhance Portfolio API, Odds Animation, and Toast Feedback (#475)
walterthesmart Mar 28, 2026
98dc52a
feat: implement PWA manifest and service worker for offline support (…
modrispath Mar 28, 2026
9a73462
feat: implement slippage tolerance setting with BigInt odds compariso…
modrispath Mar 28, 2026
0090841
Feat/458 clipboard copy utility (#481)
modrispath Mar 28, 2026
2cb912f
Feat/460 fuzzy search (#482)
modrispath Mar 28, 2026
17afd51
chore(husky): detect missing cargo and skip clippy (#486)
obanai9 Mar 28, 2026
5b8cb2b
Fix/443 reserves route (#512)
marvs8 Mar 28, 2026
4f63e4e
fix: separate active and resolved markets into tabs on the markets li…
marvs8 Mar 28, 2026
943062a
feat: add high-volatility pulse animation to market cards (#485)
Emmanuelluxury Mar 28, 2026
950b8e0
Feature/issue 77 market detail page (#476)
rahimatonize Mar 28, 2026
db3a818
fix: add early exit and adaptive polling to oracle when no markets ex…
sonoflawal Mar 28, 2026
c0b726b
fix: sanitize backend error responses, validate Stellar addresses, an…
Viv-90 Mar 28, 2026
cfb73c1
Feat/394 admin transfer (#515)
obanai9 Mar 28, 2026
0234e5a
fix: notifications route, soft delete, idempotency keys, and DB pool …
manuelusman73-png Mar 28, 2026
3cf9d74
feat: refactor MarketCard with typed props, skeleton, and resolved ba…
Markodiba Mar 28, 2026
b1ca3b3
Feat/201 category filter chips (#520)
Idrhas Mar 28, 2026
6f3d9ab
feat: document bet amount quick-select presets implementation (#524)
Nonso-Eze Mar 28, 2026
3b8e89f
feat: implement notification inbox dropdown with all notification typ…
Nonso-Eze Mar 28, 2026
49afe33
feat: implement Stellar asset trustline verification before bet (#521)
Nonso-Eze Mar 28, 2026
710e33e
feat: implement responsive two-column market detail layout (#522)
Nonso-Eze Mar 28, 2026
398f3c1
Fix/multiple issues (#526)
wheval Mar 28, 2026
7ab070c
fix: validate market endDate is in the future with min and max durati…
sonoflawal Mar 28, 2026
87a47ba
Implement accessibility audit and aria label fixes (#529)
whiteghost0001 Mar 28, 2026
206183a
fix: disable bet form during pending transaction to prevent double su…
whiteghost0001 Mar 28, 2026
3b4b505
fix: handle null/undefined market.outcomes to prevent crash (#468) (#…
ComputerOracle Mar 28, 2026
f89fa1d
Add Leaderboard and Social Reputation README with Figma link (#171)
Danielodingz Mar 28, 2026
d66e050
Feat/415 431 418 420 all features (#538)
caxtonacollins Mar 28, 2026
1eb1a93
Feat/486 onboarding wizard (#537)
OxDev-max Mar 28, 2026
2cbea02
Feat/484 keyboard shortcuts (#536)
OxDev-max Mar 28, 2026
7ff2b18
Feat/483 share card generator (#535)
OxDev-max Mar 28, 2026
b584d5c
feat: implement skeleton loading screens for all data-dependent pages…
OxDev-max Mar 28, 2026
8e402c8
fix: convert bet amount to stroops before transmission and validate a…
sonoflawal Mar 28, 2026
d5c2f04
feat: add generateMetadata with Open Graph tags and SSR to /markets/[…
sonoflawal Mar 28, 2026
2e31bc0
#129 [FE] #139 - IPFS Resolver (#288)
Jeyvers Mar 28, 2026
fa5941b
feat(#21): standardized i18n error library for smart contract and fro…
petersdt Mar 28, 2026
46b36ab
feat: add collateral asset whitelisting to prevent spam-token bets (#…
daatsuka Mar 28, 2026
e57c1fc
Feature/settlement math (#174)
teethaking Mar 28, 2026
2b6f025
Feat/494 analytics endpoints (#565)
firstJOASH Mar 28, 2026
18774cc
feat: implement bet cancellation within grace period (#564)
utilityjnr Mar 28, 2026
a375dd0
feat: add market resolution history table, logging, and public endpoi…
utilityjnr Mar 28, 2026
0fc5a0b
feat: implement market creation fee with DAO treasury transfer (#560)
firstJOASH Mar 28, 2026
3e185c4
Feat/473 market categories (#561)
williamsokperez-arch Mar 28, 2026
cbe54ea
fix: add non-blocking error handling to triggerNotification utility (…
williamsokperez-arch Mar 28, 2026
d58197c
feat: implement GDPR user data deletion service with audit logging (#…
ShantelPeters Mar 28, 2026
527e17f
feat: implement dispute submission UI with status tracker for resolve…
vitalis200 Mar 29, 2026
837825f
Feat/507 advanced odds chart (#570)
vitalis200 Mar 29, 2026
1e47808
Feat/499 sep10 authentication (#569)
vitalis200 Mar 29, 2026
7bd7b00
language translation (#574)
Jeyvers Mar 29, 2026
16e1c32
#127 live odds sync (#575)
Jeyvers Mar 29, 2026
ff8b8a5
feature:Implement Bet Cancellation UI Within Grace Period (#576)
Emmanuelluxury Mar 29, 2026
27daa9a
Feat/141 virtualized order book (#266)
Mac-5 Mar 29, 2026
3700818
fix(oracle): handle CoinGecko 429 rate limit with retry and API key s…
mgtmdccix-oss Mar 29, 2026
4843af0
feat: automated hourly expiry job for stale markets (#567)
JosephOnuh Mar 29, 2026
5b3cb8e
feat: add gzip response compression with 1KB threshold (#498) (#566)
JosephOnuh Mar 29, 2026
cab9ed1
fix(frontend): handle freighter wallet rejection and rename connectin…
techisigu Mar 29, 2026
2258f14
directory (#598)
Emeka000 Mar 29, 2026
70ad63f
fix: wrap bet form handlers with useCallback and memoize component (#…
ayush99336 Mar 29, 2026
0150d57
feat: implement automated payout distribution after dispute window cl…
idrisososanwo Mar 29, 2026
1af64b5
feat: implement bet export CSV API for tax reporting (#616)
Ndifreke000 Mar 29, 2026
8a2e993
fix: dynamic payout fee / stellar memo / market SEO / anchor-integrat…
yosemite01 Mar 29, 2026
7aea887
feat: implement bet slip summary, oracle circuit breaker, and dispute…
Fahmedo Mar 30, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
The table of contents is too big for display.
Diff view
Diff view
  •  
  •  
  •  
50 changes: 49 additions & 1 deletion .env.example
Original file line number Diff line number Diff line change
@@ -1,6 +1,14 @@
# Backend
PORT=4000
DATABASE_URL=postgresql://user:password@localhost:5432/stella_polymarket
# Redis — used for rate limiting and market query caching.
# Use REDIS_URL for a full connection string (takes precedence over individual vars).
# Example: redis://user:password@host:6379
REDIS_URL=redis://localhost:6379
# Or use individual vars (used when REDIS_URL is not set):
# REDIS_HOST=localhost
# REDIS_PORT=6379
# REDIS_PASSWORD=

# Stellar
STELLAR_NETWORK=testnet
Expand All @@ -9,5 +17,45 @@ CONTRACT_ID=your_contract_id_here

# Oracle
API_URL=http://localhost:4000
SPORTS_API_KEY=your_key_here
SPORTS_API_KEY=your_api_football_key_here
FINANCIAL_API_KEY=your_key_here
SPORTS_API_URL=https://v3.football.api-sports.io
# CoinMarketCap API key — required for the 5th price feed in the multi-source aggregator.
# Get a free key at https://coinmarketcap.com/api/
# NEVER commit this value. Add to your secrets manager / CI env.
CMC_API_KEY=your_coinmarketcap_api_key_here

# CoinGecko API key — optional but recommended to avoid free-tier rate limits (10-30 req/min).
# Get a free Demo key at https://www.coingecko.com/en/api
# NEVER commit this value. Add to your secrets manager / CI env.
COINGECKO_API_KEY=your_coingecko_api_key_here

# Sports Oracle — Stellar on-chain resolution
# ORACLE_SECRET_KEY must NEVER be committed. Add to your secrets manager / CI env.
ORACLE_SECRET_KEY=your_stellar_oracle_secret_key_here
POLL_INTERVAL_MS=60000

# Firebase (Frontend)
NEXT_PUBLIC_FIREBASE_API_KEY=your_firebase_api_key
NEXT_PUBLIC_FIREBASE_AUTH_DOMAIN=your_project.firebaseapp.com
NEXT_PUBLIC_FIREBASE_PROJECT_ID=your_project_id
NEXT_PUBLIC_FIREBASE_STORAGE_BUCKET=your_project.appspot.com
NEXT_PUBLIC_FIREBASE_MESSAGING_SENDER_ID=your_messaging_sender_id
NEXT_PUBLIC_FIREBASE_APP_ID=your_firebase_app_id

# Firebase App Check
# reCAPTCHA Enterprise site key (from Google Cloud Console → reCAPTCHA Enterprise)
# Required in production. Leave empty to disable App Check (not recommended).
NEXT_PUBLIC_RECAPTCHA_ENTERPRISE_KEY=your_recaptcha_enterprise_site_key

# App Check debug token for local development ONLY.
# Generate one via: Firebase Console → App Check → Apps → your app → "..." → Manage debug tokens
# NEVER commit a real debug token. Add this file to .gitignore.
# Only active when NODE_ENV !== 'production'.
NEXT_PUBLIC_APPCHECK_DEBUG_TOKEN=your_debug_token_here

# Firebase Admin (Backend)
# Path to a service account JSON with "Firebase App Check Admin" role.
# In Cloud Run / Cloud Functions leave blank – ADC is used automatically.
GOOGLE_APPLICATION_CREDENTIALS=./service-account.json
FIREBASE_PROJECT_ID=your_project_id
5 changes: 5 additions & 0 deletions .eslintrc.js
Original file line number Diff line number Diff line change
Expand Up @@ -46,6 +46,11 @@ module.exports = {
"@typescript-eslint/no-explicit-any": "off",
},
},
{
// Jest globals for test files
files: ["**/*.test.js", "**/*.test.ts", "**/*.test.tsx", "**/*.spec.js"],
env: { jest: true },
},
],
ignorePatterns: ["node_modules/", ".next/", "dist/", "target/"],
};
78 changes: 57 additions & 21 deletions .github/PULL_REQUEST_TEMPLATE.md
Original file line number Diff line number Diff line change
@@ -1,26 +1,62 @@
## Summary
Brief description of what this PR does.
# Automated Market Settlement Logic (#11)

## Related Issue
Closes #(issue number)
## Description

## Type of Change
- [ ] Bug fix
- [ ] New feature
- [ ] Refactor
- [ ] Documentation update
- [ ] Other (describe):
Implements the automated market settlement logic that processes an Oracle's "Result" and calculates winning shares with precise fixed-point arithmetic.

## Changes Made
-
-
## Changes

### New Files
- [`contracts/prediction_market/src/settlement_math.rs`](contracts/prediction_market/src/settlement_math.rs) - Settlement math module with fixed-point arithmetic
- [`docs/math_spec.md`](docs/math_spec.md) - Mathematical specification and payout formula documentation

### Modified Files
- [`contracts/prediction_market/src/lib.rs`](contracts/prediction_market/src/lib.rs) - Added `distribute_rewards()` and `get_settlement_info()` functions

## Key Features

### Fixed-Point Arithmetic
- Uses 7 decimal places of precision (10^7) for calculations
- No floating-point operations to avoid precision loss
- All monetary values stored as integers

### Payout Formula
```
payout_pool = floor(total_pool × 97 / 100) // 3% platform fee
individual_payout = floor(bet_amount × payout_pool / winning_stake)
```

### Dust Handling
The implementation ensures 100% conservation by redistributing dust (remainder from integer division):
1. Calculate ideal payouts using integer division
2. Track dust: `dust = payout_pool - sum(payouts)`
3. Redistribute dust in 1-unit increments to first N winners

### Market State Transition
- `resolve_market()` transitions market from Locked → Resolved
- `distribute_rewards()` executes payout calculation and transfers

## Testing
Describe how you tested your changes.

## Checklist
- [ ] My code follows the project's style guidelines
- [ ] I have performed a self-review of my code
- [ ] I have commented complex logic where necessary
- [ ] I have updated documentation if needed
- [ ] My changes don't introduce new warnings or errors

**All 15 tests passing:**
- `test_platform_fee` - 3% fee calculation
- `test_payout_pool` - 97% payout pool calculation
- `test_basic_payout` - Single and multiple bettor scenarios
- `test_exact_division` - Cases with no dust
- `test_dust_redistribution` - Dust handling verification
- `test_zero_winning_stake` - Edge case handling
- `test_large_amounts` - Real XLM amount simulation
- `test_conservation_property` - All payouts sum to payout_pool

## Documentation

See [`docs/math_spec.md`](docs/math_spec.md) for:
- Payout formula derivation
- Dust handling algorithm explanation
- Conservation property proof
- Edge case handling
- Security considerations

## Related Issues

Closes #11
188 changes: 188 additions & 0 deletions .github/workflows/contract-attestation.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,188 @@
name: Contract Source Attestation (SEP-0157)

# Triggers on version tags only — e.g. v1.0.0-mvp, v1.2.3
on:
push:
tags:
- 'v*.*.*'

# Required permissions for GitHub Attestations API
permissions:
contents: read
id-token: write # needed to mint the OIDC token for attestation signing
attestations: write # needed to write the attestation to GitHub

env:
RUST_VERSION: "1.79.0"
WASM_PATH: contracts/prediction_market/target/wasm32-unknown-unknown/release/prediction_market.wasm
OPTIMIZED_WASM_PATH: contracts/prediction_market/target/wasm32-unknown-unknown/release/prediction_market.optimized.wasm

jobs:
# ── 1. Reproducible WASM build ────────────────────────────────────────────
build-wasm:
name: Reproducible WASM Build
runs-on: ubuntu-latest

outputs:
wasm-hash: ${{ steps.hash.outputs.wasm-hash }}
tag: ${{ steps.tag.outputs.tag }}

steps:
- name: Checkout repository (full history)
uses: actions/checkout@v4
with:
fetch-depth: 0

- name: Extract tag name
id: tag
run: echo "tag=${GITHUB_REF#refs/tags/}" >> $GITHUB_OUTPUT

- name: Setup Rust toolchain (pinned for reproducibility)
uses: actions-rust-lang/setup-rust-toolchain@v1
with:
toolchain: ${{ env.RUST_VERSION }}
target: wasm32-unknown-unknown
cache: true

- name: Cache Cargo dependencies
uses: Swatinem/rust-cache@v2
with:
workspaces: "contracts/prediction_market"

- name: Build WASM (release)
working-directory: ./contracts/prediction_market
run: |
echo "🔨 Building WASM for tag ${{ steps.tag.outputs.tag }}..."
# Set SOURCE_DATE_EPOCH for reproducible builds
export SOURCE_DATE_EPOCH=$(git log -1 --format=%ct)
cargo build --target wasm32-unknown-unknown --release
echo "✅ WASM build complete"

- name: Install Soroban CLI (for optimization)
run: |
cargo install cargo-binstall --locked
cargo binstall soroban-cli --secure --locked -y

- name: Optimize WASM with soroban contract optimize
working-directory: ./contracts/prediction_market
run: |
soroban contract optimize \
--wasm ${{ env.WASM_PATH }} \
--wasm-out ${{ env.OPTIMIZED_WASM_PATH }}
echo "✅ WASM optimized"

- name: Compute WASM SHA-256 hash
id: hash
run: |
HASH=$(sha256sum ${{ env.OPTIMIZED_WASM_PATH }} | awk '{print $1}')
echo "wasm-hash=$HASH" >> $GITHUB_OUTPUT
echo "### 🔐 WASM SHA-256" >> $GITHUB_STEP_SUMMARY
echo "" >> $GITHUB_STEP_SUMMARY
echo "\`$HASH\`" >> $GITHUB_STEP_SUMMARY
echo "" >> $GITHUB_STEP_SUMMARY
echo "Commit: \`${{ github.sha }}\`" >> $GITHUB_STEP_SUMMARY
echo "Tag: \`${{ steps.tag.outputs.tag }}\`" >> $GITHUB_STEP_SUMMARY

- name: Upload WASM artifact
uses: actions/upload-artifact@v4
with:
name: prediction-market-wasm-${{ steps.tag.outputs.tag }}
path: |
${{ env.WASM_PATH }}
${{ env.OPTIMIZED_WASM_PATH }}
retention-days: 90

# ── 2. GitHub Attestation (SEP-0157) ──────────────────────────────────────
attest:
name: Generate GitHub Attestation
runs-on: ubuntu-latest
needs: build-wasm

steps:
- name: Download WASM artifact
uses: actions/download-artifact@v4
with:
name: prediction-market-wasm-${{ needs.build-wasm.outputs.tag }}
path: ./wasm-output

- name: Generate GitHub build attestation
id: attest
uses: actions/attest-build-provenance@v1
with:
subject-path: ./wasm-output/prediction_market.optimized.wasm

- name: Log attestation details
run: |
echo "### ✅ GitHub Attestation Generated" >> $GITHUB_STEP_SUMMARY
echo "" >> $GITHUB_STEP_SUMMARY
echo "| Field | Value |" >> $GITHUB_STEP_SUMMARY
echo "|-------|-------|" >> $GITHUB_STEP_SUMMARY
echo "| Tag | \`${{ needs.build-wasm.outputs.tag }}\` |" >> $GITHUB_STEP_SUMMARY
echo "| Commit SHA | \`${{ github.sha }}\` |" >> $GITHUB_STEP_SUMMARY
echo "| WASM SHA-256 | \`${{ needs.build-wasm.outputs.wasm-hash }}\` |" >> $GITHUB_STEP_SUMMARY
echo "| Attestation URL | ${{ steps.attest.outputs.bundle-path }} |" >> $GITHUB_STEP_SUMMARY
echo "" >> $GITHUB_STEP_SUMMARY
echo "Verify at: https://github.com/Idrhas/Stellar-PolyMarket/attestations" >> $GITHUB_STEP_SUMMARY

# ── 3. Create GitHub Release with WASM + attestation bundle ──────────────
release:
name: Create GitHub Release
runs-on: ubuntu-latest
needs: [build-wasm, attest]

permissions:
contents: write
attestations: write
id-token: write

steps:
- name: Checkout repository
uses: actions/checkout@v4

- name: Download WASM artifact
uses: actions/download-artifact@v4
with:
name: prediction-market-wasm-${{ needs.build-wasm.outputs.tag }}
path: ./wasm-output

- name: Create release with WASM binary
uses: softprops/action-gh-release@v2
with:
tag_name: ${{ needs.build-wasm.outputs.tag }}
name: "Prediction Market ${{ needs.build-wasm.outputs.tag }}"
body: |
## Prediction Market Contract — ${{ needs.build-wasm.outputs.tag }}

### 🔐 Source Attestation (SEP-0157)
This release includes a GitHub-signed build attestation linking the
compiled WASM binary to commit `${{ github.sha }}`.

**WASM SHA-256:**
```
${{ needs.build-wasm.outputs.wasm-hash }}
```

### Verify the attestation
```bash
# 1. Install Soroban CLI
cargo install soroban-cli --locked

# 2. Download the WASM from this release
curl -L -o prediction_market.optimized.wasm \
https://github.com/Idrhas/Stellar-PolyMarket/releases/download/${{ needs.build-wasm.outputs.tag }}/prediction_market.optimized.wasm

# 3. Hash it locally and compare
sha256sum prediction_market.optimized.wasm

# 4. Verify via GitHub CLI
gh attestation verify prediction_market.optimized.wasm \
--repo Idrhas/Stellar-PolyMarket
```

### View attestation
https://github.com/Idrhas/Stellar-PolyMarket/attestations
files: |
./wasm-output/prediction_market.wasm
./wasm-output/prediction_market.optimized.wasm
draft: false
prerelease: ${{ contains(needs.build-wasm.outputs.tag, 'alpha') || contains(needs.build-wasm.outputs.tag, 'beta') || contains(needs.build-wasm.outputs.tag, 'rc') }}
Loading