๐ญ๐ญ๐ฑ ๐ฝ๐ผ๐๐๐ ๐ผ๐ป ๐ช๐๐ก๐ธ๐๐ถ๐ป๐ธ, ๐ฎ๐ป๐ฑ ๐ต๐ฒ๐ฟ๐ฒ'๐ ๐๐ต๐ฎ๐ ๐ ๐ฎ๐ฐ๐๐๐ฎ๐น๐น๐ ๐น๐ฒ๐ฎ๐ฟ๐ป๐ฒ๐ฑ.
When I started, I thought I knew what an oracle was.
Going through the @WinkLink_Oracle docs, the announcements and the chain itself taught me a lot more.
My five biggest takeaways:
โ ๐ฉ๐ฒ๐ฟ๐ถ๐ณ๐, ๐ฑ๐ผ๐ป'๐ ๐๐ฟ๐๐๐: the burn, the supply and the 7 nodes can all be checked on-chain
โ ๐ง๐ต๐ฒ ๐ถ๐ป๐๐ฒ๐ด๐ฟ๐ฎ๐๐ถ๐ผ๐ป ๐บ๐ฎ๐๐๐ฒ๐ฟ๐ ๐ฎ๐ ๐บ๐๐ฐ๐ต ๐ฎ๐ ๐๐ต๐ฒ ๐ผ๐ฟ๐ฎ๐ฐ๐น๐ฒ: freshness checks, decimals() and proxy addresses decide whether good data stays good
โ ๐๐'๐ ๐บ๐ผ๐ฟ๐ฒ ๐๐ต๐ฎ๐ป ๐ฝ๐ฟ๐ถ๐ฐ๐ฒ ๐ณ๐ฒ๐ฒ๐ฑ๐: VRF, AnyAPI and Automation cover randomness, custom data and timing
โ ๐ง๐ต๐ฒ ๐ฏ๐๐ฟ๐ป ๐ถ๐ ๐๐ถ๐ฒ๐ฑ ๐๐ผ ๐ฟ๐ฒ๐๐ฒ๐ป๐๐ฒ: 100% of service revenue buys back WIN, so usage is what drives it
โ ๐๐ผ๐ป๐ฒ๐๐๐ ๐ฎ๐ด๐ฒ๐ ๐๐ฒ๐น๐น: roadmap goals are goals, notified isn't approved, and I'd rather say so
The next things I'm watching are the December 15 feed deadline and Round 2 data in January 2027.
Thank you to everyone who read, replied and asked good questions along the way.
I'll keep checking the chain and posting what I find.
If you only bookmark one link from this whole campaign, make it the docs:
โ https://t.co/WBbvwi1DO8
๐ง๐ต๐ฎ๐ป๐ธ๐ ๐ณ๐ผ๐ฟ ๐น๐ฒ๐ฎ๐ฟ๐ป๐ถ๐ป๐ด ๐ช๐๐ก๐ธ๐๐ถ๐ป๐ธ ๐๐ถ๐๐ต ๐บ๐ฒ.
@justinsuntron@WinkLink_Oracle #TronEcoStar
๐ฃ๐ข๐ฉ: ๐๐ผ๐๐ฟ ๐ฐ๐ผ๐ป๐๐ฟ๐ฎ๐ฐ๐ ๐ต๐ฎ๐ ๐ฏ๐ฒ๐ฒ๐ป ๐ฟ๐ฒ๐ฎ๐ฑ๐ถ๐ป๐ด ๐๐ต๐ฒ ๐๐ฎ๐บ๐ฒ ๐ฝ๐ฟ๐ถ๐ฐ๐ฒ ๐๐ถ๐ป๐ฐ๐ฒ ๐๐๐น๐ ๐ฎ๐ฌ๐ฎ๐ฏ.
๐๐ ๐ถ๐๐ป'๐ ๐ฎ ๐ฐ๐ฎ๐น๐บ ๐บ๐ฎ๐ฟ๐ธ๐ฒ๐.
๐๐'๐ ๐ฎ๐ป ๐ผ๐น๐ฑ ๐ฝ๐ฟ๐ผ๐ ๐ ๐ฎ๐ฑ๐ฑ๐ฟ๐ฒ๐๐.
Here's the true story behind the joke.
In June 2023, @WinkLink_Oracle introduced ๐ป๐ฒ๐ ๐ฝ๐ฟ๐ผ๐ ๐ ๐ฐ๐ผ๐ป๐๐ฟ๐ฎ๐ฐ๐ ๐ฎ๐ฑ๐ฑ๐ฟ๐ฒ๐๐๐ฒ๐ for its price feeds, as part of the OCR upgrade.
The announcement said the old addresses would ๐๐๐ผ๐ฝ ๐๐ฝ๐ฑ๐ฎ๐๐ถ๐ป๐ด ๐ณ๐ฟ๐ผ๐บ ๐๐๐น๐ ๐ญ, ๐ฎ๐ฌ๐ฎ๐ฏ.
Developers were asked to switch their code to the new proxies.
The reason was a good one:
โ With the new proxies, future upgrades could roll out ๐๐ถ๐๐ต๐ผ๐๐ ๐ฏ๐ฟ๐ฒ๐ฎ๐ธ๐ถ๐ป๐ด ๐ฐ๐ผ๐ป๐๐๐บ๐ถ๐ป๐ด ๐ฐ๐ผ๐ป๐๐ฟ๐ฎ๐ฐ๐๐
โ It's the same proxy design the docs recommend today
So the meme comes with a lesson:
โ A feed that ๐๐๐ผ๐ฝ๐ ๐๐ฝ๐ฑ๐ฎ๐๐ถ๐ป๐ด doesn't throw an error, it just goes quiet
โ Your ๐๐ฝ๐ฑ๐ฎ๐๐ฒ๐ฑ๐๐ check is what notices
โ The ๐ฎ๐ป๐ป๐ผ๐๐ป๐ฐ๐ฒ๐บ๐ฒ๐ป๐๐ ๐ฝ๐ฎ๐ด๐ฒ is where the warning shows up first
If your stale check has been firing every day since mid-2023, at least it was doing its job.
The original notice is still on the announcements page:
โ https://t.co/wExM7X1uSo
๐ฆ๐๐ฎ๐ฏ๐น๐ฒ ๐ฝ๐ฟ๐ถ๐ฐ๐ฒ, ๐ผ๐ฟ ๐๐๐ฎ๐น๐ฒ ๐ฎ๐ฑ๐ฑ๐ฟ๐ฒ๐๐?
@justinsuntron@WinkLink_Oracle #TronEcoStar
๐ก๐ฒ๐ ๐๐ผ ๐ช๐๐ก๐ธ๐๐ถ๐ป๐ธ? ๐๐ฒ๐ฟ๐ฒ'๐ ๐๐ต๐ฒ ๐๐ต๐ผ๐น๐ฒ ๐๐ต๐ถ๐ป๐ด ๐ถ๐ป ๐ฒ๐ฌ ๐๐ฒ๐ฐ๐ผ๐ป๐ฑ๐.
@WinkLink_Oracle calls itself the first comprehensive data services platform of TRON's ecosystem.
It brings outside data to TRON smart contracts, which can't fetch anything on their own.
It runs four services:
โ ๐ฃ๐ฟ๐ถ๐ฐ๐ฒ ๐๐ฒ๐ฒ๐ฑ๐: 7 independent nodes, one median price on-chain
โ ๐ฉ๐ฅ๐: provably fair random numbers, at 10 WIN per request
โ ๐๐ป๐๐๐ฃ๐: custom data from almost any API
โ ๐๐๐๐ผ๐บ๐ฎ๐๐ถ๐ผ๐ป: contracts that run when conditions are met, checked every 3 seconds
The token is ๐ช๐๐ก:
โ It pays for the network's services and its node rewards
โ ๐ญ๐ฌ๐ฌ% ๐ผ๐ณ ๐๐ฒ๐ฟ๐๐ถ๐ฐ๐ฒ ๐ฟ๐ฒ๐๐ฒ๐ป๐๐ฒ buys back WIN each quarter, and that WIN is burned
โ Round 1 burned ๐ฒ๐ณ.๐ฏ๐ฒ๐ ๐ช๐๐ก, about ๐ฒ.๐ณ๐ฐ% of the initial supply
Where it runs:
โ ๐ง๐ฅ๐ข๐ก ๐บ๐ฎ๐ถ๐ป๐ป๐ฒ๐ and the ๐ก๐ถ๐น๐ฒ ๐๐ฒ๐๐๐ป๐ฒ๐ today
That's it.
Everything above can be checked in the docs or on-chain.
The best place to start is the docs intro:
โ https://t.co/WBbvwi1DO8
๐๐ฎ๐๐ฎ ๐ถ๐ป, ๐ช๐๐ก ๐ฏ๐๐ฟ๐ป๐ฒ๐ฑ, ๐ฎ๐น๐น ๐ผ๐ป ๐ง๐ฅ๐ข๐ก.
@justinsuntron@WinkLink_Oracle #TronEcoStar
๐ง๐ต๐ฒ ๐ง๐ฅ๐ข๐ก ๐ผ๐ฟ๐ฎ๐ฐ๐น๐ฒ ๐ฑ๐ฒ๐ ๐๐๐ฎ๐ฟ๐๐ฒ๐ฟ ๐ฝ๐ฎ๐ฐ๐ธ.
Every dev building with @WinkLink_Oracle ends up with roughly the same kit.
These are the tools the docs name for deploying and testing contracts:
โ ๐ง๐ฟ๐ผ๐ป๐ฆ๐ฐ๐ฎ๐ป, for reading and calling contracts in the browser
โ The official ๐๐ฎ๐น๐น๐ฒ๐-๐ฐ๐น๐ถ, for people who live in the terminal
โ ๐ง๐ฟ๐ผ๐ป ๐๐๐, for writing and deploying in one window
โ ๐ง๐ฟ๐ผ๐ป๐๐ผ๐ , for project-style builds and tests
โ ๐๐ฟ๐ผ๐ป๐๐ฒ๐ฏ, for scripts and frontends
And here's what the docs quietly assume you'll have:
โ A ๐ก๐ถ๐น๐ฒ ๐ณ๐ฎ๐๐ฐ๐ฒ๐ bookmark for test TRX and WIN
โ A tab open on the ๐ณ๐ฒ๐ฒ๐ฑ ๐๐ฎ๐ฏ๐น๐ฒ, because you'll copy proxy addresses from it a lot
โ A sticky note that says ๐ฐ๐ฎ๐น๐น ๐ฑ๐ฒ๐ฐ๐ถ๐บ๐ฎ๐น๐()
That last one is my addition, but I'd frame it.
If you're starting today, pick one deploy tool and one script tool, and you're set.
The tool list is in the contract deployment section of the price feed docs:
โ https://t.co/MtumISecys
๐๐ถ๐๐ฒ ๐๐ผ๐ผ๐น๐, ๐ผ๐ป๐ฒ ๐ณ๐ฎ๐๐ฐ๐ฒ๐, ๐ผ๐ป๐ฒ ๐๐๐ถ๐ฐ๐ธ๐ ๐ป๐ผ๐๐ฒ.
@justinsuntron@WinkLink_Oracle #TronEcoStar
๐ง๐๐ผ ๐๐๐ ๐๐ฎ๐น๐ธ ๐ถ๐ป๐๐ผ ๐ฎ๐ป ๐๐ป๐๐๐ฃ๐ ๐ฐ๐ผ๐ป๐๐๐บ๐ฒ๐ฟ ๐ฐ๐ผ๐ป๐๐ฟ๐ฎ๐ฐ๐.
๐ข๐ป๐น๐ ๐ผ๐ป๐ฒ ๐ผ๐ณ ๐๐ต๐ฒ๐บ ๐ด๐ฒ๐๐ ๐ถ๐ป.
Here they are:
โ ๐ง๐ต๐ฒ ๐ท๐ผ๐ฏ ๐๐ ๐๐ผ๐ ๐๐ฒ๐ฟ๐ฒ ๐ด๐ถ๐๐ฒ๐ป: 8495b310-eb4a-479f-8982-ad6565213449
โ ๐ง๐ต๐ฒ ๐ฆ๐ฝ๐ฒ๐ฐ ๐๐ ๐๐ผ๐๐ฟ ๐ฐ๐ผ๐ป๐๐ฟ๐ฎ๐ฐ๐ ๐๐ฎ๐ป๐๐: 0x8495b310eb4a479f8982ad656521344900000000000000000000000000000000
Every AnyAPI dev has stared at those two and wondered if they're the same job.
They are, just dressed differently.
The @WinkLink_Oracle AnyAPI docs carry a warning about exactly this.
To set the Spec ID in your consumer contract:
โ Take the ๐ฒ๐ ๐๐ฒ๐ฟ๐ป๐ฎ๐น ๐ท๐ผ๐ฏ ๐๐
โ ๐ฅ๐ฒ๐บ๐ผ๐๐ฒ ๐๐ต๐ฒ ๐ฑ๐ฎ๐๐ต๐ฒ๐
โ ๐ฅ๐ถ๐ด๐ต๐-๐ฝ๐ฎ๐ฑ ๐ถ๐ ๐๐ถ๐๐ต ๐๐ฒ๐ฟ๐ผ๐ until it fills a bytes32
โ Write it with ๐ฌ๐ in front, as the docs' example does
Get it wrong and your request won't match the job you meant.
The docs show the padded version for their Nile single word job, so you can compare yours character by character.
It's the least glamorous bug in oracle land, and one of the easiest to avoid.
The warning sits in the Consumer Contract section:
โ https://t.co/6bKrYcgne4
๐ฆ๐ฎ๐บ๐ฒ ๐๐, ๐ฑ๐ถ๐ณ๐ณ๐ฒ๐ฟ๐ฒ๐ป๐ ๐ผ๐๐๐ณ๐ถ๐.
@justinsuntron@WinkLink_Oracle #TronEcoStar
๐ข๐ฐ๐๐ผ๐ฏ๐ฒ๐ฟ ๐๐ฎ๐ ๐๐ต๐ฒ ๐บ๐ผ๐ป๐๐ต ๐ช๐๐ก๐ธ๐๐ถ๐ป๐ธ'๐ ๐ฏ๐๐๐ฏ๐ฎ๐ฐ๐ธ ๐๐๐ผ๐ฝ๐ฝ๐ฒ๐ฑ ๐ฏ๐ฒ๐ถ๐ป๐ด ๐ฎ ๐ฝ๐น๐ฎ๐ป ๐ฎ๐ป๐ฑ ๐ฏ๐ฒ๐ฐ๐ฎ๐บ๐ฒ ๐ฎ ๐๐ฟ๐ฎ๐ป๐๐ฎ๐ฐ๐๐ถ๐ผ๐ป.
Here's my October recap for @WinkLink_Oracle:
โ ๐ฅ๐ผ๐๐ป๐ฑ ๐ญ of the WIN Buyback and Burn executed on ๐ข๐ฐ๐๐ผ๐ฏ๐ฒ๐ฟ ๐ญ๐ต, ๐ฎ๐ฌ๐ฎ๐ฒ
โ ๐ฒ๐ณ,๐ฏ๐ฑ๐ณ,๐ฏ๐ฒ๐ฐ,๐ฑ๐ญ๐ฌ ๐ช๐๐ก went to TRON's black-hole address, worth about $๐ฏ.๐ฑ๐ต๐ at the time
โ Total supply fell to ๐ต๐ฎ๐ฒ,๐ฏ๐ฐ๐ฐ,๐ฐ๐ต๐ฐ,๐ณ๐ฏ๐ฏ ๐ช๐๐ก, matching the burn to the token
โ Earlier in the month, Binance's removal of WIN from ๐ ๐ฎ๐ฟ๐ด๐ถ๐ป ๐ฎ๐ป๐ฑ ๐๐ผ๐ฎ๐ป๐ took effect, with spot trading unaffected
And here's what's next on my calendar:
โ ๐๐ฒ๐ฐ๐ฒ๐บ๐ฏ๐ฒ๐ฟ ๐ญ๐ฑ, ๐ฎ๐ฌ๐ฎ๐ฒ: the legacy 6-decimal WIN/USD and WIN/TRX feeds stop updating
โ ๐๐ฎ๐ป๐๐ฎ๐ฟ๐ ๐ฎ๐ฌ๐ฎ๐ณ: Round 2 burn data is due
If you're a builder, the December date is the one to act on now.
If you're a holder, January is the one to watch.
Either way, both can be checked without trusting anyone.
The Round 1 transaction is here:
โ https://t.co/cjwF4cZrak
๐ข๐ป๐ฒ ๐ฏ๐๐ฟ๐ป ๐ฑ๐ผ๐ป๐ฒ, ๐ผ๐ป๐ฒ ๐ฑ๐ฒ๐ฎ๐ฑ๐น๐ถ๐ป๐ฒ ๐ฎ๐ป๐ฑ ๐ผ๐ป๐ฒ ๐ฟ๐ผ๐๐ป๐ฑ ๐ฎ๐ต๐ฒ๐ฎ๐ฑ.
@justinsuntron@WinkLink_Oracle #TronEcoStar
๐ค๐ฏ ๐ฎ๐ฌ๐ฎ๐ฒ ๐๐ฎ๐ ๐ฎ ๐ฏ๐๐๐ ๐พ๐๐ฎ๐ฟ๐๐ฒ๐ฟ ๐ณ๐ผ๐ฟ ๐ช๐๐ก๐ธ๐๐ถ๐ป๐ธ, ๐๐ผ ๐ต๐ฒ๐ฟ๐ฒ ๐ถ๐ ๐ถ๐ ๐ถ๐ป ๐ผ๐ป๐ฒ ๐ฝ๐ผ๐๐.
The @WinkLink_Oracle quarter, date by date:
โ ๐๐๐น๐ ๐ฒ: the WIN Buyback and Burn launched, with 100% of service revenue going to quarterly buybacks
โ ๐๐๐ด๐๐๐ ๐ญ๐ณ: a TRON DAO release named WIN alongside JST, SUN and BTT in TRON's deflationary era
โ ๐ฆ๐ฒ๐ฝ๐๐ฒ๐บ๐ฏ๐ฒ๐ฟ ๐ฎ: TRON's H1 2026 Strategy Report covered WINkLink's upgrades and the buyback
โ ๐ฆ๐ฒ๐ฝ๐๐ฒ๐บ๐ฏ๐ฒ๐ฟ ๐ญ๐ฑ: WIN/USD and WIN/TRX moved to new 10-decimal feeds
โ ๐ฆ๐ฒ๐ฝ๐๐ฒ๐บ๐ฏ๐ฒ๐ฟ ๐ฏ๐ฌ: USDe/USD and USDe/TRX went live
Two kinds of news ran side by side.
On the token side, the buyback launched and TRON DAO put WIN in the wider deflation story.
On the infrastructure side, the WIN feeds got more precision and a new dollar asset joined the price service.
Both set up what came next.
The buyback set up October's first burn, and the decimals change set up the December 15 deadline for builders.
The full announcements are on the official page:
โ https://t.co/wExM7X1uSo
๐ข๐ป๐ฒ ๐พ๐๐ฎ๐ฟ๐๐ฒ๐ฟ, ๐๐๐ผ ๐๐ฟ๐ฎ๐ฐ๐ธ๐, ๐ฏ๐ผ๐๐ต ๐บ๐ผ๐๐ถ๐ป๐ด.
@justinsuntron@WinkLink_Oracle #TronEcoStar
๐๐ถ๐๐ฒ ๐๐ฒ๐ฎ๐ฟ๐ ๐ผ๐ณ ๐ช๐๐ก๐ธ๐๐ถ๐ป๐ธ, ๐ถ๐ป ๐๐ถ๐ ๐บ๐ถ๐น๐ฒ๐๐๐ผ๐ป๐ฒ๐.
Here's the @WinkLink_Oracle timeline as I'd tell it:
โ ๐๐ฝ๐ฟ๐ถ๐น ๐ฎ๐ฌ๐ฎ๐ญ: the WINk team acquired https://t.co/QKFS0DTQ58, and WINkLink launched as an oracle on TRON
โ ๐ ๐ฎ๐ ๐ฎ๐ฌ๐ฎ๐ฏ: Off-Chain Reporting went live on TRON mainnet
โ ๐ข๐ฐ๐๐ผ๐ฏ๐ฒ๐ฟ ๐ฎ๐ฌ๐ฎ๐ฐ: AnyAPI and Automation entered beta
โ ๐๐ฎ๐ป๐๐ฎ๐ฟ๐ ๐ฎ๐ฌ๐ฎ๐ฑ: both launched in full
โ ๐๐๐น๐ ๐ฎ๐ฌ๐ฎ๐ฒ: the WIN Buyback and Burn launched, funded by 100% of service revenue
โ ๐ข๐ฐ๐๐ผ๐ฏ๐ฒ๐ฟ ๐ฎ๐ฌ๐ฎ๐ฒ: Round 1 burned 67.36B WIN
What stands out to me is the pacing.
The first few years were about getting price data right on TRON.
The middle stretch added new services on top of that base.
Only then did the token side change, once there was revenue to fund it.
That's the opposite of how a lot of crypto projects run, where the token story comes first and the product follows later, if ever.
The full story starts on the official site:
โ https://t.co/GsNDubFlvD
๐๐ป๐ณ๐ฟ๐ฎ๐๐๐ฟ๐๐ฐ๐๐๐ฟ๐ฒ ๐ณ๐ถ๐ฟ๐๐, ๐๐ผ๐ธ๐ฒ๐ป๐ผ๐บ๐ถ๐ฐ๐ ๐๐ฒ๐ฐ๐ผ๐ป๐ฑ.
@justinsuntron@WinkLink_Oracle #TronEcoStar
๐ฎ๐ฌ๐ฎ๐ฒ ๐ด๐ผ๐ ๐๐ต๐ฒ ๐ต๐ฒ๐ฎ๐ฑ๐น๐ถ๐ป๐ฒ๐, ๐ฏ๐๐ ๐ฎ ๐น๐ผ๐ ๐ผ๐ณ ๐ช๐๐ก๐ธ๐๐ถ๐ป๐ธ'๐ ๐ด๐ฟ๐ผ๐๐ป๐ฑ๐๐ผ๐ฟ๐ธ ๐๐ฎ๐ ๐น๐ฎ๐ถ๐ฑ ๐ถ๐ป ๐ฎ๐ฌ๐ฎ๐ฑ.
Here's that year in five dates from the @WinkLink_Oracle announcements:
โ ๐๐ฎ๐ป๐๐ฎ๐ฟ๐ ๐ณ: AnyAPI and Automation launched on TRON mainnet, after a beta that started in October 2024
โ ๐๐ฎ๐ป๐๐ฎ๐ฟ๐ ๐ณ: the Platform Roadmap 2025 set out goals all the way to 2027
โ ๐๐๐น๐ ๐ฎ๐ญ: USD1/TRX joined the price service
โ ๐๐๐ด๐๐๐ ๐ฎ๐ฎ: the Data Services Ecosystem Upgrade opened the doors to data consumers, data providers and node operators
โ ๐ฆ๐ฒ๐ฝ๐๐ฒ๐บ๐ฏ๐ฒ๐ฟ ๐ฎ๐ต: the price page added 1-week and 1-month charts, plus contract addresses and transaction hashes
Looking back, 2025 was about widening what WINkLink could do.
Two new services, a new feed, a wider ecosystem and a more transparent price page.
2026 then tied that work to the token, with 100% of service revenue going to WIN buybacks.
The order makes sense to me.
You build the services first, and then you let what they earn shape the token.
Every one of these announcements is still on the official page:
โ https://t.co/wExM7X22HW
๐๐๐ถ๐น๐ฑ ๐ณ๐ถ๐ฟ๐๐, ๐๐ต๐ฒ๐ป ๐ฏ๐๐ฟ๐ป.
@justinsuntron@WinkLink_Oracle #TronEcoStar
๐ข๐ฟ๐ฎ๐ฐ๐น๐ฒ ๐ณ๐ฒ๐ฒ๐ฑ๐ ๐ฑ๐ผ๐ป'๐ ๐น๐ถ๐๐ฒ ๐ณ๐ผ๐ฟ๐ฒ๐๐ฒ๐ฟ, ๐ฎ๐ป๐ฑ ๐ช๐๐ก๐ธ๐๐ถ๐ป๐ธ'๐ ๐ผ๐๐ป ๐ต๐ถ๐๐๐ผ๐ฟ๐ ๐๐ต๐ผ๐๐ ๐๐ต๐.
Here are three real changes from the @WinkLink_Oracle announcements:
โ ๐๐จ๐ฆ๐/๐ง๐ฅ๐ซ ๐ฎ๐ป๐ฑ ๐๐จ๐ฆ๐/๐จ๐ฆ๐ were delisted on ๐๐ฒ๐ฐ๐ฒ๐บ๐ฏ๐ฒ๐ฟ ๐ญ๐ด, ๐ฎ๐ฌ๐ฎ๐ฏ, in line with BUSD's own delisting
โ The ๐จ๐ฆ๐๐ pairs moved to ๐จ๐ฆ๐๐ ๐ฎ.๐ฌ on ๐๐ฎ๐ป๐๐ฎ๐ฟ๐ ๐ฎ๐ณ, ๐ฎ๐ฌ๐ฎ๐ฑ, and the old ones were renamed ๐จ๐ฆ๐๐๐ข๐๐
โ ๐๐๐ฉ๐/๐จ๐ฆ๐ was delisted on ๐๐ฒ๐ฏ๐ฟ๐๐ฎ๐ฟ๐ ๐ฑ, ๐ฎ๐ฌ๐ฎ๐ฒ, given the asset's market liquidity and how much the pair was used
That's three different reasons:
โ The ๐ฎ๐๐๐ฒ๐ ๐ถ๐๐๐ฒ๐น๐ณ was winding down
โ The ๐๐ผ๐ธ๐ฒ๐ป ๐๐ฎ๐ ๐๐ฝ๐ด๐ฟ๐ฎ๐ฑ๐ฒ๐ฑ to a new version
โ The ๐บ๐ฎ๐ฟ๐ธ๐ฒ๐ ๐ฎ๐ป๐ฑ ๐๐๐ฎ๐ด๐ฒ no longer supported the feed
For LIVE/USD, the notice went out on January 21, about two weeks ahead.
WINkLink advised integrators to adjust their systems and evaluate alternatives in advance.
That's exactly why the docs say not to hard-code feed addresses deep into immutable logic.
Store them where an owner or governance can update them, and a retirement becomes a config change instead of a crisis.
Every one of these notices sits on the announcements page:
โ https://t.co/wExM7X22HW
๐๐๐ถ๐น๐ฑ ๐ณ๐ผ๐ฟ ๐๐ต๐ฒ ๐ณ๐ฒ๐ฒ๐ฑ ๐๐ผ๐ ๐ต๐ฎ๐๐ฒ, ๐ฎ๐ป๐ฑ ๐ฝ๐น๐ฎ๐ป ๐ณ๐ผ๐ฟ ๐๐ต๐ฒ ๐ผ๐ป๐ฒ ๐๐ต๐ฎ๐ ๐ฟ๐ฒ๐ฝ๐น๐ฎ๐ฐ๐ฒ๐ ๐ถ๐.
@justinsuntron@WinkLink_Oracle #TronEcoStar
๐ง๐ต๐ฒ ๐ณ๐ถ๐ฟ๐๐ ๐ช๐๐ก ๐ฏ๐๐ฟ๐ป ๐ฟ๐ฒ๐บ๐ผ๐๐ฒ๐ฑ ๐ฒ.๐ณ๐ฐ% ๐ผ๐ณ ๐๐๐ฝ๐ฝ๐น๐.
๐ข๐ฟ ๐ฒ.๐ณ๐ด%, ๐ฑ๐ฒ๐ฝ๐ฒ๐ป๐ฑ๐ถ๐ป๐ด ๐ผ๐ป ๐๐ต๐ฎ๐ ๐๐ผ๐ ๐ฐ๐ผ๐บ๐ฝ๐ฎ๐ฟ๐ฒ ๐ถ๐ ๐๐ผ.
Both numbers are right, and the gap is a good lesson in reading burn stats.
Round 1 burned ๐ฒ๐ณ,๐ฏ๐ฑ๐ณ,๐ฏ๐ฒ๐ฐ,๐ฑ๐ญ๐ฌ ๐ช๐๐ก.
Here's the maths both ways:
โ Against the ๐ถ๐ป๐ถ๐๐ถ๐ฎ๐น ๐๐๐ฝ๐ฝ๐น๐ of 999B WIN, it's about ๐ฒ.๐ณ๐ฐ%
โ Against the ๐๐ผ๐๐ฎ๐น ๐๐๐ฝ๐ฝ๐น๐ ๐ท๐๐๐ ๐ฏ๐ฒ๐ณ๐ผ๐ฟ๐ฒ ๐๐ต๐ฒ ๐ฏ๐๐ฟ๐ป, about 993.70B WIN, it's about ๐ฒ.๐ณ๐ด%
@WinkLink_Oracle quotes the first, which is the more conservative figure.
The second tells you how much of the WIN that existed on the day disappeared.
Put simply, roughly ๐ญ ๐ถ๐ป ๐ฒ๐๐ฒ๐ฟ๐ ๐ญ๐ฑ ๐ช๐๐ก in existence before Round 1 is gone.
When Round 2 arrives, I'll run the same check both ways:
โ Round 2's burn divided by the ๐ต๐ต๐ต๐ ๐ถ๐ป๐ถ๐๐ถ๐ฎ๐น ๐๐๐ฝ๐ฝ๐น๐
โ Round 2's burn divided by the ๐ต๐ฎ๐ฒ.๐ฏ๐ฐ๐ ๐๐๐ฝ๐ฝ๐น๐ ๐ฎ๐ณ๐๐ฒ๐ฟ ๐ฅ๐ผ๐๐ป๐ฑ ๐ญ
The second figure will always come out a little higher, because the base keeps shrinking.
Anyone can check the current supply on the WIN token page:
โ https://t.co/8HoaREEYD7
๐ฆ๐ฎ๐บ๐ฒ ๐ฏ๐๐ฟ๐ป, ๐๐๐ผ ๐ต๐ผ๐ป๐ฒ๐๐ ๐ฝ๐ฒ๐ฟ๐ฐ๐ฒ๐ป๐๐ฎ๐ด๐ฒ๐.
@justinsuntron@WinkLink_Oracle #TronEcoStar
๐๐ฒ๐ฟ๐ฒ'๐ ๐ฎ ๐๐ฒ๐ฒ๐ธ๐ฒ๐ป๐ฑ ๐ฏ๐๐ถ๐น๐ฑ ๐ถ๐ฑ๐ฒ๐ฎ: ๐ฎ ๐๐๐ฎ๐ฏ๐น๐ฒ๐ฐ๐ผ๐ถ๐ป ๐ฝ๐ฒ๐ด ๐ฑ๐ฎ๐๐ต๐ฏ๐ผ๐ฎ๐ฟ๐ฑ ๐๐ต๐ฎ๐ ๐ฟ๐ฒ๐ฎ๐ฑ๐ ๐ช๐๐ก๐ธ๐๐ถ๐ป๐ธ ๐๐๐ฟ๐ฎ๐ถ๐ด๐ต๐ ๐ณ๐ฟ๐ผ๐บ ๐ง๐ฅ๐ข๐ก.
No contract, no gas, just off-chain reads.
The @WinkLink_Oracle mainnet table has direct USD pairs for seven dollar assets:
โ ๐จ๐ฆ๐๐ง/๐จ๐ฆ๐ and ๐จ๐ฆ๐๐/๐จ๐ฆ๐
โ ๐จ๐ฆ๐๐/๐จ๐ฆ๐ and ๐จ๐ฆ๐๐ฒ/๐จ๐ฆ๐
โ ๐จ๐ฆ๐๐/๐จ๐ฆ๐ and ๐ง๐จ๐ฆ๐/๐จ๐ฆ๐
โ ๐จ/๐จ๐ฆ๐
The dashboard would do three things for each one:
โ Read the price with ๐น๐ฎ๐๐ฒ๐๐๐ฅ๐ผ๐๐ป๐ฑ๐๐ฎ๐๐ฎ() and scale it with ๐ฑ๐ฒ๐ฐ๐ถ๐บ๐ฎ๐น๐()
โ Show how far it sits from $๐ญ.๐ฌ๐ฌ, in basis points
โ Flag the row if ๐๐ฝ๐ฑ๐ฎ๐๐ฒ๐ฑ๐๐ is older than you'd expect from that feed's heartbeat
Watch the decimals, because USDe uses 8 while the rest of this list uses 6.
The docs already give TronWeb and tronpy snippets for the read, so the real work is the design.
I'd add a history view with getRoundData for anyone who wants to see how a peg behaved over time.
The proxy addresses are all in the feed table:
โ https://t.co/MtumISecys
๐ช๐ฎ๐๐ฐ๐ต ๐๐ต๐ฒ ๐ฝ๐ฒ๐ด๐ ๐๐ถ๐๐ต๐ผ๐๐ ๐๐ฟ๐๐๐๐ถ๐ป๐ด ๐ฎ ๐๐ฐ๐ฟ๐ฒ๐ฒ๐ป๐๐ต๐ผ๐.
@justinsuntron@WinkLink_Oracle #TronEcoStar
"๐๐ผ๐ ๐๐ผ๐๐น๐ฑ ๐๐ผ๐ ๐บ๐ฎ๐ธ๐ฒ ๐น๐ถ๐พ๐๐ถ๐ฑ๐ฎ๐๐ถ๐ผ๐ป๐ ๐ณ๐ถ๐ฟ๐ฒ ๐ผ๐ป ๐๐ถ๐บ๐ฒ ๐ถ๐ป ๐ฎ ๐ง๐ฅ๐ข๐ก ๐น๐ฒ๐ป๐ฑ๐ถ๐ป๐ด ๐ฎ๐ฝ๐ฝ?"
๐'๐ฑ ๐ฝ๐ฎ๐ถ๐ฟ ๐๐๐ผ ๐ช๐๐ก๐ธ๐๐ถ๐ป๐ธ ๐๐ฒ๐ฟ๐๐ถ๐ฐ๐ฒ๐ ๐ฎ๐ป๐ฑ ๐ฎ๐ฑ๐ฑ ๐บ๐ ๐ผ๐๐ป ๐ด๐๐ฎ๐ฟ๐ฑ๐ฟ๐ฎ๐ถ๐น๐.
Here's the design I'd sketch with @WinkLink_Oracle:
โ ๐ฃ๐ฟ๐ถ๐ฐ๐ฒ ๐ณ๐ฒ๐ฒ๐ฑ๐ value the collateral, read through the ๐ฝ๐ฟ๐ผ๐ ๐ with latestRoundData
โ ๐๐๐๐ผ๐บ๐ฎ๐๐ถ๐ผ๐ป runs checkUpkeep every 3 seconds to look for positions below the threshold
โ If any exist, ๐ฝ๐ฒ๐ฟ๐ณ๐ผ๐ฟ๐บ๐จ๐ฝ๐ธ๐ฒ๐ฒ๐ฝ liquidates them, accepting calls only from the upkeep's forwarder
And the guardrails I wouldn't skip:
โ Reject prices older than your ๐ ๐๐ซ_๐ฃ๐ฅ๐๐๐_๐๐๐ before liquidating anyone
โ Normalize with ๐ฑ๐ฒ๐ฐ๐ถ๐บ๐ฎ๐น๐() for every feed involved
โ Keep the upkeep ๐ณ๐๐ป๐ฑ๐ฒ๐ฑ ๐ถ๐ป ๐ช๐๐ก, because an unfunded upkeep doesn't run
โ Be extra conservative with ๐๐ต๐ถ๐ป๐น๐ ๐๐ฟ๐ฎ๐ฑ๐ฒ๐ฑ ๐ฐ๐ผ๐น๐น๐ฎ๐๐ฒ๐ฟ๐ฎ๐น
The nice part is that checkUpkeep is where the decision happens.
If no position needs liquidating, it returns false and nothing goes further.
Two caveats: this is a sketch, not audited code, and the Automation docs list Nile contracts, so start there.
The Automation flow is here:
โ https://t.co/CHSeKHRql6
๐๐ฟ๐ฒ๐๐ต ๐ฝ๐ฟ๐ถ๐ฐ๐ฒ๐, ๐๐ถ๐บ๐ฒ๐น๐ ๐ฐ๐ต๐ฒ๐ฐ๐ธ๐, ๐ฐ๐ฎ๐ฟ๐ฒ๐ณ๐๐น ๐ฐ๐ผ๐ฑ๐ฒ.
@justinsuntron@WinkLink_Oracle #TronEcoStar
๐ฅ๐ฎ๐ฟ๐ฒ-๐๐ฟ๐ฎ๐ถ๐ ๐๐ป๐ถ๐ฝ๐ถ๐ป๐ด ๐ฟ๐๐ถ๐ป๐ ๐ก๐๐ง ๐บ๐ถ๐ป๐๐, ๐ฎ๐ป๐ฑ ๐ฉ๐ฅ๐ ๐ถ๐ ๐ฎ ๐ฐ๐น๐ฒ๐ฎ๐ป ๐๐ฎ๐ ๐๐ผ ๐๐๐ผ๐ฝ ๐ถ๐.
Here's the build idea.
If traits are fixed in a way people can predict, bots can target the rare ones.
So don't decide them until the randomness is in.
The flow I'd use with @WinkLink_Oracle VRF:
โ Collectors ๐บ๐ถ๐ป๐ without knowing their traits
โ The contract ๐ฟ๐ฒ๐พ๐๐ฒ๐๐๐ ๐ฟ๐ฎ๐ป๐ฑ๐ผ๐บ๐ป๐ฒ๐๐ for the batch
โ In ๐ณ๐๐น๐ณ๐ถ๐น๐น๐ฅ๐ฎ๐ป๐ฑ๐ผ๐บ๐ช๐ผ๐ฟ๐ฑ๐, each token's traits are assigned from the random numbers
โ The ๐ฝ๐ฟ๐ผ๐ผ๐ณ is checked on-chain before the contract uses any number
Why this blocks sniping:
โ The number depends partly on the ๐ป๐ผ๐ฑ๐ฒ'๐ ๐ฝ๐ฟ๐ถ๐๐ฎ๐๐ฒ ๐ธ๐ฒ๐, so nobody can compute it ahead of time
โ The coordinator ๐๐ฒ๐ฟ๐ถ๐ณ๐ถ๐ฒ๐ ๐๐ต๐ฒ ๐ฝ๐ฟ๐ผ๐ผ๐ณ, so nobody can swap in a better number later
โ Even the ๐๐ฒ๐ฎ๐บ can't choose who gets the rare one
Up to 10 random words come back per request, and one large random number can be split across several traits.
At ๐ญ๐ฌ ๐ช๐๐ก per request, batching keeps the cost sensible.
This is a design idea, not a product, so I'd test it on Nile first.
The consumer pattern is in the VRF docs:
โ https://t.co/5b1iSumNx5
๐ก๐ผ๐ฏ๐ผ๐ฑ๐ ๐๐ป๐ถ๐ฝ๐ฒ๐ ๐๐ต๐ฎ๐ ๐ป๐ผ๐ฏ๐ผ๐ฑ๐ ๐ฐ๐ฎ๐ป ๐ฝ๐ฟ๐ฒ๐ฑ๐ถ๐ฐ๐.
@justinsuntron@WinkLink_Oracle #TronEcoStar
๐๐ฒ๐ฟ๐ฒ'๐ ๐ฎ ๐ง๐ฅ๐ข๐ก ๐ฏ๐๐ถ๐น๐ฑ ๐ถ๐ฑ๐ฒ๐ฎ ๐'๐ฑ ๐น๐ผ๐๐ฒ ๐๐ผ ๐๐ฒ๐ฒ: ๐ฎ ๐ณ๐ผ๐ผ๐๐ฏ๐ฎ๐น๐น ๐ฝ๐ฟ๐ฒ๐ฑ๐ถ๐ฐ๐๐ถ๐ผ๐ป ๐ด๐ฎ๐บ๐ฒ ๐๐ต๐ฎ๐ ๐๐ฒ๐๐๐น๐ฒ๐ ๐ถ๐๐๐ฒ๐น๐ณ.
Two @WinkLink_Oracle services could do most of the heavy lifting.
The flow I have in mind:
โ Players ๐ฝ๐ถ๐ฐ๐ธ ๐ฎ ๐ฟ๐ฒ๐๐๐น๐ and stake into the contract before kick-off
โ After the match, the contract makes an ๐๐ป๐๐๐ฃ๐ ๐๐ถ๐ป๐ด๐น๐ฒ ๐๐ผ๐ฟ๐ฑ ๐ฟ๐ฒ๐พ๐๐ฒ๐๐ for the final result from a sports data API
โ Winners are ๐ฝ๐ฎ๐ถ๐ฑ ๐ฎ๐๐๐ผ๐บ๐ฎ๐๐ถ๐ฐ๐ฎ๐น๐น๐ from the pool
โ If too many players tie for a prize, ๐ฉ๐ฅ๐ draws the winner fairly
Why these two?
The AnyAPI docs list ๐๐ฝ๐ผ๐ฟ๐๐ถ๐ป๐ด ๐บ๐ฎ๐๐ฐ๐ต ๐ฟ๐ฒ๐๐๐น๐๐ as an example, and a single word request returns one value, like a score.
VRF covers the tie-break, with up to ๐ญ๐ฌ ๐ฟ๐ฎ๐ป๐ฑ๐ผ๐บ ๐ป๐๐บ๐ฏ๐ฒ๐ฟ๐ in one request and a proof checked on-chain.
A few things the builder would own:
โ Choosing a ๐ฟ๐ฒ๐น๐ถ๐ฎ๐ฏ๐น๐ฒ ๐๐ฝ๐ผ๐ฟ๐๐ ๐ฑ๐ฎ๐๐ฎ ๐๐ผ๐๐ฟ๐ฐ๐ฒ and writing the ๐ท๐ผ๐ฏ ๐๐ฝ๐ฒ๐ฐ
โ Handling a request that ๐ฒ๐ ๐ฝ๐ถ๐ฟ๐ฒ๐ ๐ฎ๐ณ๐๐ฒ๐ฟ ๐ฑ ๐บ๐ถ๐ป๐๐๐ฒ๐ unanswered, so funds never get stuck
โ Deciding what happens if a match is ๐ฝ๐ผ๐๐๐ฝ๐ผ๐ป๐ฒ๐ฑ
This is an idea, not a live product, so treat it as a starting brief.
The AnyAPI docs have the single word example to start from:
โ https://t.co/6bKrYcgV3C
๐ฅ๐ฒ๐ฎ๐น ๐ฟ๐ฒ๐๐๐น๐๐ ๐ถ๐ป, ๐ณ๐ฎ๐ถ๐ฟ ๐ฝ๐ฎ๐๐ผ๐๐๐ ๐ผ๐๐.
@justinsuntron@WinkLink_Oracle #TronEcoStar
"๐ช๐ต๐ ๐๐๐ฒ ๐ช๐๐ก๐ธ๐๐ถ๐ป๐ธ ๐๐๐๐ผ๐บ๐ฎ๐๐ถ๐ผ๐ป ๐๐ต๐ฒ๐ป ๐ ๐ฐ๐ฎ๐ป ๐ฟ๐๐ป ๐ฎ ๐ฐ๐ฟ๐ผ๐ป ๐ท๐ผ๐ฏ ๐๐ต๐ฎ๐ ๐ฐ๐ฎ๐น๐น๐ ๐บ๐ ๐ฐ๐ผ๐ป๐๐ฟ๐ฎ๐ฐ๐?"
๐ฌ๐ผ๐ ๐ฐ๐ฎ๐ป, ๐ฏ๐๐ ๐น๐ผ๐ผ๐ธ ๐ฎ๐ ๐๐ต๐ฎ๐ ๐๐ผ๐'๐ฑ ๐ฏ๐ฒ ๐๐ถ๐ด๐ป๐ถ๐ป๐ด ๐๐ฝ ๐๐ผ ๐ฏ๐ฎ๐ฏ๐๐๐ถ๐.
A cron bot is a script on a machine you look after.
Here's what @WinkLink_Oracle Automation gives you instead, according to the docs:
โ ๐ข๐ป-๐ฐ๐ต๐ฎ๐ถ๐ป ๐ฟ๐ฒ๐ด๐ถ๐๐๐ฟ๐ฎ๐๐ถ๐ผ๐ป: the registry tracks which upkeeps exist, their state and their WIN balance
โ ๐๐ต๐ฒ๐ฐ๐ธ๐ ๐ฒ๐๐ฒ๐ฟ๐ ๐ฏ ๐๐ฒ๐ฐ๐ผ๐ป๐ฑ๐ by a node, not a schedule you guessed at
โ ๐ ๐ฑ๐ฟ๐ ๐ฟ๐๐ป ๐ณ๐ถ๐ฟ๐๐: simulatePerformUpkeep has to pass before the real call goes out
โ ๐ ๐ณ๐ผ๐ฟ๐๐ฎ๐ฟ๐ฑ๐ฒ๐ฟ: your contract can accept performUpkeep only from its own forwarder, not from anyone
With a cron bot, every one of those is your job:
โ Keep the ๐บ๐ฎ๐ฐ๐ต๐ถ๐ป๐ฒ ๐ฎ๐ป๐ฑ ๐ถ๐๐ ๐ธ๐ฒ๐๐ online and safe
โ Decide ๐๐ต๐ฒ๐ป to call, and pay for the calls that fail
โ Lock down ๐๐ต๐ผ can call your function
That doesn't make a cron bot wrong for a side project.
But for logic that moves user funds, I'd rather the bookkeeping live on-chain than in a script only I can see.
One honest note: the Automation docs list contract addresses for the Nile testnet, so that's where to start.
The full setup is in the Automation docs:
โ https://t.co/CHSeKHRYaE
๐๐ฒ๐๐ฒ๐ฟ ๐๐ต๐ถ๐ป๐ด๐ ๐๐ผ ๐ฏ๐ฎ๐ฏ๐๐๐ถ๐ ๐บ๐ฒ๐ฎ๐ป๐ ๐ณ๐ฒ๐๐ฒ๐ฟ ๐๐ต๐ถ๐ป๐ด๐ ๐๐ผ ๐ฏ๐ฟ๐ฒ๐ฎ๐ธ.
@justinsuntron@WinkLink_Oracle #TronEcoStar
"๐ช๐ต๐ ๐ฝ๐ฎ๐ ๐ณ๐ผ๐ฟ ๐ฉ๐ฅ๐ ๐๐ต๐ฒ๐ป ๐ ๐ฐ๐ฎ๐ป ๐ท๐๐๐ ๐๐๐ฒ ๐๐ต๐ฒ ๐ฏ๐น๐ผ๐ฐ๐ธ ๐ต๐ฎ๐๐ต ๐ฎ๐ ๐ฎ ๐ฟ๐ฎ๐ป๐ฑ๐ผ๐บ ๐ป๐๐บ๐ฏ๐ฒ๐ฟ?"
๐๐ฒ๐ฐ๐ฎ๐๐๐ฒ ๐ฎ ๐ฏ๐น๐ผ๐ฐ๐ธ ๐ต๐ฎ๐๐ต ๐ถ๐ ๐ฝ๐๐ฏ๐น๐ถ๐ฐ, ๐ฎ๐ป๐ฑ ๐ฉ๐ฅ๐ ๐ฐ๐ผ๐บ๐ฒ๐ ๐๐ถ๐๐ต ๐ฎ ๐ฝ๐ฟ๐ผ๐ผ๐ณ.
The @WinkLink_Oracle VRF docs start with a definition worth knowing.
A VRF is the ๐ฝ๐๐ฏ๐น๐ถ๐ฐ-๐ธ๐ฒ๐ ๐๐ฒ๐ฟ๐๐ถ๐ผ๐ป ๐ผ๐ณ ๐ฎ ๐ธ๐ฒ๐๐ฒ๐ฑ ๐ต๐ฎ๐๐ต.
Only the holder of the private key can compute it, but anyone with the public key can ๐๐ฒ๐ฟ๐ถ๐ณ๐ it.
Here's how the two options compare:
โ ๐๐น๐ผ๐ฐ๐ธ ๐ต๐ฎ๐๐ต ๐ฎ๐น๐ผ๐ป๐ฒ: one public input, produced by whoever made the block, and visible to everyone at the same moment
โ ๐ช๐๐ก๐ธ๐๐ถ๐ป๐ธ ๐ฉ๐ฅ๐: the block hash is only one of four inputs, alongside your seed, the coordinator's nonce and the node's private key, and the result comes with a proof
That proof is the part that changes everything.
The coordinator checks it ๐ผ๐ป-๐ฐ๐ต๐ฎ๐ถ๐ป before your contract ever sees the number.
So the node can't swap in a number it likes better, and you don't have to take anyone's word for it.
For a game with real stakes, I'd pay the ๐ญ๐ฌ ๐ช๐๐ก for that every time.
The definition is at the top of the VRF docs:
โ https://t.co/5b1iSumNx5
๐ฃ๐๐ฏ๐น๐ถ๐ฐ ๐ถ๐๐ป'๐ ๐๐ต๐ฒ ๐๐ฎ๐บ๐ฒ ๐ฎ๐ ๐ฟ๐ฎ๐ป๐ฑ๐ผ๐บ, ๐ฎ๐ป๐ฑ ๐ฝ๐ฟ๐ผ๐๐ฒ๐ป ๐ฏ๐ฒ๐ฎ๐๐ ๐ฏ๐ผ๐๐ต.
@justinsuntron@WinkLink_Oracle #TronEcoStar
๐ฃ๐ฟ๐ถ๐ฐ๐ฒ ๐ณ๐ฒ๐ฒ๐ฑ๐ ๐ฎ๐ป๐ฑ ๐๐ป๐๐๐ฃ๐ ๐ฐ๐ฎ๐ป ๐ฏ๐ผ๐๐ต ๐ฝ๐๐ ๐ฎ ๐ป๐๐บ๐ฏ๐ฒ๐ฟ ๐ผ๐ป-๐ฐ๐ต๐ฎ๐ถ๐ป.
๐ฃ๐ถ๐ฐ๐ธ๐ถ๐ป๐ด ๐๐ต๐ฒ ๐๐ฟ๐ผ๐ป๐ด ๐ผ๐ป๐ฒ ๐บ๐ฎ๐ธ๐ฒ๐ ๐๐ผ๐๐ฟ ๐น๐ถ๐ณ๐ฒ ๐ต๐ฎ๐ฟ๐ฑ๐ฒ๐ฟ.
Here's how I'd choose between the two @WinkLink_Oracle services.
Use a price feed when:
โ WINkLink ๐ฎ๐น๐ฟ๐ฒ๐ฎ๐ฑ๐ ๐น๐ถ๐๐๐ ๐๐ผ๐๐ฟ ๐ฝ๐ฎ๐ถ๐ฟ in the feed table
โ You want a price backed by ๐ณ ๐ถ๐ป๐ฑ๐ฒ๐ฝ๐ฒ๐ป๐ฑ๐ฒ๐ป๐ ๐ป๐ผ๐ฑ๐ฒ๐ and a median
โ You'd rather ๐ฟ๐ฒ๐ฎ๐ฑ a value than manage requests
Use AnyAPI when:
โ The data ๐ถ๐๐ป'๐ ๐ฎ ๐๐ผ๐ธ๐ฒ๐ป ๐ฝ๐ฟ๐ถ๐ฐ๐ฒ, like match results, flight times or traffic
โ You need a ๐ฐ๐๐๐๐ผ๐บ ๐๐ฟ๐ฎ๐ป๐๐ณ๐ผ๐ฟ๐บ๐ฎ๐๐ถ๐ผ๐ป of an API response
โ You're happy to write your ๐ผ๐๐ป ๐ฐ๐ผ๐ป๐๐๐บ๐ฒ๐ฟ ๐ฐ๐ผ๐ป๐๐ฟ๐ฎ๐ฐ๐ ๐ฎ๐ป๐ฑ ๐ท๐ผ๐ฏ ๐๐ฝ๐ฒ๐ฐ, and pay per request in WIN
The trade-off is convenience versus control.
A feed is ready-made, already updating and already spread across 7 nodes.
An AnyAPI job does exactly what you design, but the design, the data source and the funding are all on you.
So I wouldn't use AnyAPI to fetch a BTC price that a 7-node feed already publishes.
And I wouldn't wait for a price feed to cover last night's football score.
The AnyAPI docs show what a custom request looks like:
โ https://t.co/6bKrYcgne4
๐ฅ๐ฒ๐ฎ๐ฑ๐-๐บ๐ฎ๐ฑ๐ฒ ๐ณ๐ผ๐ฟ ๐ฝ๐ฟ๐ถ๐ฐ๐ฒ๐, ๐บ๐ฎ๐ฑ๐ฒ-๐๐ผ-๐ผ๐ฟ๐ฑ๐ฒ๐ฟ ๐ณ๐ผ๐ฟ ๐ฒ๐๐ฒ๐ฟ๐๐๐ต๐ถ๐ป๐ด ๐ฒ๐น๐๐ฒ.
@justinsuntron@WinkLink_Oracle #TronEcoStar
๐ง๐ต๐ฒ ๐๐ฒ๐ฟ๐ ๐ณ๐ถ๐ฟ๐๐ ๐น๐ถ๐ป๐ฒ ๐ผ๐ณ ๐ช๐๐ก๐ธ๐๐ถ๐ป๐ธ'๐ ๐ฝ๐ฟ๐ถ๐ฐ๐ฒ ๐ณ๐ฒ๐ฒ๐ฑ ๐ฑ๐ผ๐ฐ๐ ๐ถ๐๐ป'๐ ๐ฐ๐ผ๐ฑ๐ฒ.
๐๐'๐ "๐๐ฒ๐ณ๐ผ๐ฟ๐ฒ ๐ถ๐ป๐๐ฒ๐ด๐ฟ๐ฎ๐๐ถ๐ป๐ด, ๐๐ฒ๐ฒ ๐๐ฒ๐๐ฒ๐น๐ผ๐ฝ๐ฒ๐ฟ ๐ก๐ผ๐๐ฒ๐."
That one line tells new devs where the real lessons are.
The @WinkLink_Oracle Developer Notes open with a point every new dev should sit with: how a feed performs in your dApp depends on ๐๐๐ผ ๐๐ต๐ถ๐ป๐ด๐.
Here they are:
โ ๐ ๐ฎ๐ฟ๐ธ๐ฒ๐ ๐ถ๐ป๐๐ฒ๐ด๐ฟ๐ถ๐๐: the real-world market behind the asset, which you don't control
โ ๐๐ฝ๐ฝ๐น๐ถ๐ฐ๐ฎ๐๐ถ๐ผ๐ป ๐ฐ๐ผ๐ฑ๐ฒ: the integration you write, which you fully control
The oracle network reports the market.
Your code decides what to do with that report.
So when something goes wrong, the question isn't only "was the oracle right?"
It's also "did my contract handle what the oracle told it?"
That's the mindset shift I'd want a new dev to make before writing their first consumer contract.
The notes then break each half into practical checks, and they're short enough to read over a coffee.
You'll find the Developer Notes at the bottom of the price feed page:
โ https://t.co/ul3VQxjioW
๐๐ฎ๐น๐ณ ๐ผ๐ณ ๐ผ๐ฟ๐ฎ๐ฐ๐น๐ฒ ๐๐ฎ๐ณ๐ฒ๐๐ ๐ถ๐ ๐๐ต๐ฒ ๐บ๐ฎ๐ฟ๐ธ๐ฒ๐, ๐ฎ๐ป๐ฑ ๐๐ต๐ฒ ๐ผ๐๐ต๐ฒ๐ฟ ๐ต๐ฎ๐น๐ณ ๐ถ๐ ๐๐ผ๐.
@justinsuntron@WinkLink_Oracle #TronEcoStar
๐ช๐ฟ๐ถ๐๐ถ๐ป๐ด ๐๐ผ๐๐ฟ ๐ณ๐ถ๐ฟ๐๐ ๐ช๐๐ก๐ธ๐๐ถ๐ป๐ธ ๐ฉ๐ฅ๐ ๐ฐ๐ผ๐ป๐๐๐บ๐ฒ๐ฟ?
๐ง๐ต๐ฒ ๐ฑ๐ผ๐ฐ๐ ๐ฏ๐ผ๐ถ๐น ๐ถ๐ ๐ฑ๐ผ๐๐ป ๐๐ผ ๐๐ต๐ฟ๐ฒ๐ฒ ๐๐๐ฒ๐ฝ๐, ๐ฝ๐น๐๐ ๐ผ๐ป๐ฒ ๐๐ต๐ถ๐ป๐ด ๐ฝ๐ฒ๐ผ๐ฝ๐น๐ฒ ๐ณ๐ผ๐ฟ๐ด๐ฒ๐.
Here's the @WinkLink_Oracle direct funding setup:
โ ๐๐ป๐ต๐ฒ๐ฟ๐ถ๐ VRFV2WrapperConsumerBase in your contract
โ ๐๐บ๐ฝ๐น๐ฒ๐บ๐ฒ๐ป๐ fulfillRandomWords, the callback where your logic handles the random numbers
โ ๐๐ฎ๐น๐น requestRandomness to start a request
And here's the one people forget:
โ A direct funding consumer pays for each request ๐ณ๐ฟ๐ผ๐บ ๐ถ๐๐ ๐ผ๐๐ป ๐ช๐๐ก ๐ฏ๐ฎ๐น๐ฎ๐ป๐ฐ๐ฒ, so it has to ๐ต๐ผ๐น๐ฑ ๐ฒ๐ป๐ผ๐๐ด๐ต ๐ช๐๐ก ๐ฏ๐ฒ๐ณ๐ผ๐ฟ๐ฒ ๐ถ๐ ๐ฎ๐๐ธ๐
The docs' sample constructor also shows what your contract needs to know up front:
โ The ๐ช๐๐ก ๐๐ผ๐ธ๐ฒ๐ป address
โ The ๐ช๐ถ๐ป๐ธ๐ ๐ถ๐ฑ address
โ The ๐ฉ๐ฅ๐๐ฉ๐ฎ๐ช๐ฟ๐ฎ๐ฝ๐ฝ๐ฒ๐ฟ address
โ How many ๐ฟ๐ฎ๐ป๐ฑ๐ผ๐บ ๐๐ผ๐ฟ๐ฑ๐ you want per request
On mainnet, the docs list the wrapper as TGDVwQRKwtNHrwy4RFG49b2HTHkvWckP5N and WinkMid as TVMhaFMynYqTRLB1xShYL7wBwdmQHH6bKV.
My tip: check in your request function that the contract's WIN balance covers the fee, so a request never starts unfunded.
The consumer setup is in the VRF docs:
โ https://t.co/5b1iSumfHx
๐๐ป๐ต๐ฒ๐ฟ๐ถ๐, ๐ถ๐บ๐ฝ๐น๐ฒ๐บ๐ฒ๐ป๐, ๐ฟ๐ฒ๐พ๐๐ฒ๐๐, ๐ฎ๐ป๐ฑ ๐ณ๐๐ป๐ฑ ๐ถ๐ ๐ณ๐ถ๐ฟ๐๐.
@justinsuntron@WinkLink_Oracle #TronEcoStar