Tellor is a decentralized oracle that provides price data on Ethereum using a network of staked miners that compete to solve a PoW challenge and submit its solution along with requested data. We have been delighted to see the growth of the Tellor network since its initial launch in August 2019.
From the get-go we knew that, in order to better serve our customers and future expected demand, Tellor would need to evolve. After talking with potential customers and users over the past year, we know that Tellor needs to get faster and more robust. These proposed upgrades to the Tellor system fit with that model. Our original goal for Tellor was decentralized price feeds for defi and it remains to be the preeminent need on the Ethereum network. Although there are other use cases for oracles (e.g. bridges, data storage, off-chain computation), the most pressing need that still lacks a sufficiently decentralized option is price oracles.
We built Tellor as a system of upgradeable contracts where the Tellor community (TRB token holders) gets to vote on the implementation of the system’s upgrades. Although security and scalability were always part of our vision, it is now that we are happy to share with the community our design for Tellor’s V2 near future updates.
**Please note that all of these improvements are in a draft stage and we are seeking feedback on those listed as well as other improvements that are desired.
TLDR:
Scalability:
- Increase number of data points added per block
- Increase speed (reduce the 10 min difficulty target)
Security:
- Limiting rewards per miner
- No time limit on disputes
- Multiple round disputes
- Allow tips of current ID being mined
Others
- General code improvements
- Removal of on-chain request data
- Token fee burning
Proposed improvements
Scalability
Increase number of data points added per block
Our current system allows for the request with the highest payout to be mined (reported) every 10 minutes. In the V2 version of Tellor, instead of only the value with the highest payout being reported, it would be an array of the top X (current target 5) requests by order of payout amount. From accepting a request ID and its value it would accept two arrays, one with the top X request ID’s and another with the corresponding prices to these. However, adding data to the blockchain is expensive (processing and storage) and we’ll be looking into ways to implement this change as efficiently as possible and balance the various pieces of costs, amount of data added, and scarcity in the network.
Increase speed (Reduce the 10 min difficulty target)
Another scaling effort for Tellor’s V2, is to increase the speed that values are added to the blockchain. The speed in which the values are added is controlled by setting the target mining difficulty, currently 10 minutes, for proof of work mining. However, the target mining difficulty can be changed. This change is trivial in terms of programing, but the main concerns are balancing the inflation rate (tokens minted per time period), security of the system, as well as reducing the number of race solutions (e.g. competing miners submitting the same solution for a given time period (leads to gas race and the losing miner(s) with a failed transaction)). The system has proven that it can get faster, but how much faster is not exact. Our target time as of this proposal is to reduce the Tellor block-times to 2 minutes.
Security
Limiting Rewards per Miner:
Decentralization increases our security. But as mining difficulty increases, PoW mining becomes centralized. To further increase security we can incentivize decentralization by limiting the amount of times an address can win awards per day. The current proposal is to allow each miner to win only once every 30 minutes (remember the lower block times). So if a miner wants to win each 2 minute block, he would be required to stake the 1000 tokens 15 times. We are looking for ways to make sure that those who control the PoW network have the proper stake in the Tellor system. This of course must be balanced with a) cost to join as a validator, and b) proper incentivization of validators.
No Time Limit on Disputes:
Under the current design, the values submitted by the miners can be disputed within a 24 hour period. Our assumption was that the value would have been used by a customer within this 24 hour period and it was a good balance between security and finality of the value. But removing this limitation would incentivize miners to always be “truthful”, instead of just ensuring they don’t get caught within 24 hours. It would also be beneficial in mitigating the risk of a vote passing with very low quorum. Of course, withdraws for miners are 7 days, so even if a dispute could be initiated after 7 days, there would be no reward for the disputer. The incentive is to dispute bad values as quickly as possible, but the purpose of this change is to expand the period in which bad data can be removed from the chain as well as remove any assumptions of finality or time to validity on the Tellor values.
Multiple Round Disputes:
One way that removing the time limitation on disputes could increase the security of the system without causing a large imbalance on finality is by allowing multiple dispute rounds to incentivize more disputes. Disputes rounds will start at a lower fee with a one day voting period and then double in both time and cost to dispute with each round. The current plan is to have disputes cost a lower amount of around 15 TRB (dependent on number of validators in the system) with the voting lasting only one day initially. If that vote is disputed, the next round will cost 30 TRB to initiate and last 2 days and so on.
Allow Tips of Current ID Being Mined
In times of stress on the Ethereum network, gas prices can get very high. This may make it unprofitable for miners to want to submit data to the network. In this extreme case, parties who need faster updates should be able to tip the current ID in order to cover the gas costs of miners.
Others
General code improvements:
We are going to change the code to have better distribution for the “submit mining solution” costs. Currently the last of the first 5 miners to submit the PoW solution, pays a higher Ethereum transaction fee because with this last submission, all miners are paid off(5 transfers), data is saved, and a new challenge is issued. We will be updating the code so that the reward transfer is paid by each successful miner submitting the PoW solution and data. This will decrease the Ethereum transaction fee. However, the fifth miner will still pay a little bit of a higher fee because a new challenge can only be issued once the five values have been recorded and the data been deemed “official”.
We will also update the solidity version of the contracts and utilize newer features of the language.
Tellor will also address the rounding issue in the values’ timestamps. Currently all Tellor values’ timestamps are rounded to the nearest minute. We can become more precise, specifically as will be necessary when moving to faster block times.
The difficulty adjustment time will also shift to be based on when data is requested. Currently the ten minute interval is calculated as lastBlock to newBlock, but it can lead to very long time differences if no data is requested for several hours. In the new system, the difficulty will adjust only based upon the time that the miners are actually mining a challenge, which should help to stabilize the difficulty in the system.
Removal of on-chain Request Data:
Tellor will plan to remove the ability to query single API’s from its protocol. Currently, the details pertaining to the first 50 request IDs are stored off chain. This model makes each request ID flexible enough to handle things such as multiple API medians, volume/time weighted averages, manually inputted data, as well as future implementations of a peer-to-peer model for passing data between Tellor nodes. This upgrade will feature all ID’s becoming PSR’s, making the Tellor system simply an on-chain way for handling enforcement of results(data validation), rather than specifications. This will make Tellor more flexible and further target our ideal use cases and proper usage of oracles which does not include creating the ability for smart contracts to query single API’s.
Token fee burning:
One of the missing pieces in both the Tellor monetary policy and the Ethereum monetary policy is the commoditization of the underlying asset. Similar to how oil is actually used up when consumed, TRB should have a method for self creating scarcity as usage goes up. The plan will be to remove half of tipped TRB from circulation (the other half going to the miner).
Conclusion
Each of these proposals will be explored in more detail as we get closer to prioritizing development, implementation and testing. We look forward to an engaged community that will help us grow Tellor and carry our vision and values of decentralization forward with each step.