Hello, I've been working on developing an Oracle contract (GitHub link) for Soroban over the past year. In my implementation, prices are stored in a single Map, which is a ledger entry stored in the "instance" storage. There are other implementations that store one price entry per ledger entry as a temporary storage key, but my question applies to both types of implementations.
After some tests, I noticed that a contract invocation call to lastprice(), one of the most critical functions of the contract and likely to be frequently called by consumer contracts, consumes between 200,000 and 290,000 stroops, equivalent to around 0.02 XLM. This is for Testnet.
I tested both my implementation and a few other Oracle implementations that use different approaches to storage. However, the lastprice() invocation consumes almost the same in all contracts.
These fees seem a bit high for just a simple lastprice() call, and I don't observe any implementation that can consume less than 0.02 XLM for invoking that function. Are these fees high because it's Testnet? Is there any estimation of how much this cost may increase or decrease when deployed to Pubnet? I'm a bit concerned about the usability of Oracles inside Soroban due to these high fees. It might become impractical.