This week we deployed a small but important update to the Tellor contracts and we’d like to highlight the key points for you here.
First, a bit of technical context about Tellor’s smart contract structure: Tellor uses proxy contracts and delegate calls. What this means is that we have a main contract (Tellor Master) that contains the token and oracle data storage, but the functionality of the Tellor system exists in a separate contract called a proxy. The main contract then calls this proxy to use the logic and functions it contains. The purpose of this arrangement is so the Tellor system can share both immutable and upgradable characteristics. Since Tellor’s launch to mainnet Ethereum we have deployed several upgrades successfully, yet on Feb 15th, 2021, we had a major error in our upgrade process freezing the Tellor system and forcing us to migrate the token to a new master contract. The purpose of the tellor3 upgrade is to ensure this never happens again, and to transition away from the migration protocol we’ve been undertaking.
The tellor3 upgrade has two main aspects:
- Improved upgrade procedures
- Removal of migrator contract
Improved Upgrade Procedures
The contract we migrated to in order to fix the Tellor system after the February 15th error contains an admin privileges, which was included to get Tellor back up and running quickly and ensure the token migration went smoothly. Once we achieved this we began working on ways to more robustly verify the processes in our upgrade procedure. We’ve successfully added this new verification method that will entirely prevent another major error of this kind.
Removal of Migrator Contract
Part of the migration to the new Tellor contract that fixed our system was the addition of a contract that contained certain functions allowing holders of TRB to migrate their old tokens to the new TRB. Now that the token supply is nearly fully migrated, the tellor3 upgrade is getting rid of the migrator contract to minimize potential vulnerabilities. Independent of the migrator contract there will remain two accessible migration functions: ‘migrate’ which any user can call and ‘migrateFor’ that helps the team transition users locked in unique contracts or pools. Both of these functions still exist for those yet to migrate.
One of our main goals in this entire migration process was to make sure we came out of this better than ever. Ultimately, this tellor3 upgrade is a step forward in the maturity and strength of Tellor, by providing us with a secure path back to token governance.