Normally I try to stick to a weekly update schedule for the tool, but this one’s just too sweet to sit on. And hey — I even finished it earlier than expected!
This update includes a database migration (gulp 😅). I’m not a seasoned developer, so those always make me nervous. I backed up the complete database... and every table into CSVs… just in case. I didn’t want to lose sleep over this, so I just ripped the band-aid off and deployed. Let’s go!
If you’re not into reading the full update and just want to explore what’s new, head over here:
🔗 https://next-land.spl-stats.com/
💰 What’s New? Tradehub Positions for ALL Land Owners
Yep, you heard that right — you can now see Tradehub pool positions for every land owner.
⚠️Quick disclaimer: this new data pulls from a pretty heavy API calls, so it only updates once a week. Since this info shifts slowly anyway, I think that’s more than enough.
🔟 Top 10 Overview per Tradehub
On the page, you’ll see:
- The Top 10 players per pool
- Their share percentage
- A neat little pie chart to visualize it all
You’ll also see a “Total Shares” stat — this one’s important!
I gather data based on land owners, but there are players without land who also contribute to the pools. For example, in the DEC-GRAIN LP, I count 99.89% of shares. That leftover 0.11%? That’s from non-land owners.
If this number grows too much (say >10%), it could mess up the top ten list a bit. But for now, the data feels solid enough.
📋 Want More Detail? Top 200
Beneath the pie chart is a Top 200 leaderboard, for the detail-hungry folks.
In the bracket is the DEC-RESOURCE the player has put into the pool.
🔎 Look Up Any Account
You can also search for any account to see:
- Their current pool shares
- How much they’ve contributed
- Estimated daily and total fee earnings
When a player is selected, their data gets highlighted on the chart.
For me? I'm too small to spot myself 😂
even with the full screen version hard to spot:
But for a bigger holder — like vugtis — it’s much more visible.
And of course how could i forget everybody love some ranking overview (another one to hunt @captaindingus, just kidding)
🛠️ Small Fixes & Improvements
Big thanks to @warrentrx for pointing out that my tax calculations in resource conversion were off. Here’s what changed:
❌ Old Method:
const sell_fee = 0.9;
const buy_fee = 1.1;
const taxed = res === "AURA" ? raw : mode == "buy" ? raw * buy_fee : raw * sell_fee;
✅ New Method (More Accurate):
const fee = 0.9;
const taxed = res === "AURA"
? amount * price
: mode === "buy"
? amount / ((1 / price) * fee)
: amount * (price * fee);
💡 Why is this better?
In the old method, I just added or subtracted 10%, but that’s not how market fees actually work. When you buy, you’re paying more DEC per unit due to the fee — so dividing the amount by (1/price) * fee gives a more realistic number. Same logic for selling — applying the fee after converting makes the estimate more accurate.
🔤 Bonus Fix: Case-Insensitive Player Input
Another shoutout to Paul for this one: player input now automatically converts to lowercase. Especially helpful on mobile where autocaps kick in and mess things up. Simple tweak, but worth it!
🧪 Want to See the Code?
🔍 GitHub Repos (If You Dare):
🐍 Python version (Closing down soon)
⚡ Next.js version
PRs, issues, or just general “what in the spaghetti is this?” reactions welcome — be kind 😅
🙌 Support the Project
✅ Upvote this post – it really helps!
👉 Vote for My SPS Validator Node
💬 Drop a comment or idea – weird edge cases welcome.
⚠️ Final Note
Still just a fun hobby project — built during late-night, caffeine-fueled coding sessions. If something breaks… ping me. I’ll fix it. Eventually. 😂
Let me know what you think of the update — and if you spot any bugs, weird data, or have ideas, I’m all ears! 🙏