USDI
Last updated
Last updated
USDI is a currency indexed to the inflation in the US. For the value of inflation, the consumer price index for all urban consumers of all products (CPIAUCSL) is taken as a reference, which can be consulted at the following link:
The index, with a base of 100 in the years 1982-1984, is updated monthly. The percentage changes in the index measure the rate of change of inflation between any two periods. For example, in January 2010 the index had a value of 217,488, and in November 2022 it was 298,349, which means that accumulated inflation in that period has been 37,19%.
USDI does not take its value directly from the CPI, since the data is published with a month of delay. Instead, the prediction of the index that will be published in the following month is calculated, whose value corresponds to the current month, and the value of said prediction is used as the reference target value of the token.
In cases where the new target value is below the current value (deflation), the USDI reference value remains constant, so that in no case does its value fall against the dollar. This distinction is what makes the USDI a deflationary currency per se and not just a tokenized inflation index. The figure shows how it is quite common for deflationary periods to appear, sometimes lasting several years, in which the reference value of the USDI remains constant while the target value does not recover its previous maximum.
The USDI token was designed so that its peg value could be updated in a decentralized way. The system is based on the use of the Any API service of the Chainlink oracle network, which allows calls to any API from a blockchain application and receives the response data in a verifiable way. For more information consult the Chainlink documentation:
The operation of the update mechanism however is complex and involves four different contracts:
Contract ChainlinkFredRelease. It allows making calls to the Federal Reserve API through the Chainlink network to obtain the date of the next publication of the data of the consumer price index (CPI).
Contract ChainlinkFredObservation. It allows calls to be made to the Federal Reserve API through the Chainlink network to obtain the value of the last published data of the Consumer Price Index (CPI).
PredictIndex contract. Reads from the two previous contracts the value of the next published data and the value of the last published data, and uses them to calculate the prediction of the next data to be published on that date and update the target value.
USDI contract. Reads the new target value from the PredictIndex contract, checks that it is valid, and updates its values for the target.
The upgrade procedure is decentralized and can be carried out by anyone willing to pay the gas and Chainlink network fees. A total of five transactions are required to complete the process:
Two transactions to deposit LINK tokens into the ChainlinkFredRelease and ChainlinkFredObservation contracts via the depositLink() function to pay Chainlink's commission for API calls.
A transaction using the requestData() function of the PredictIndex contract to make the API calls via the ChainlinkFredRelease and ChainlinkFredObservation contracts.
A transaction using the fetchData() function of the PredictIndex contract to read from the ChainlinkFredRelease and ChainlinkFredObservation contracts the data obtained from the API calls and update the index predictions.
A transaction using the token's updateTarget() function to update the target value. Anyone can call this function, as the contract automatically checks if it should be updated and reverts the transaction if not. This function is also called automatically from the SCMinter contract every time a transaction involving the USDI is carried out, which guarantees that an updated reference value is always operated.
The PredictIndex contract also has an auxiliary mechanism that allows the owner to manually update the reference inflation index and next release date values in case the main mechanism is unavailable for some reason. This procedure requires only two transactions:
A transaction using the provideData() function of the PredictIndex contract associated with the USDI token, providing the values of the date of the next publication of the inflation data and the date of the last published data. Only an address authorized by the contract owner can execute this action.
A transaction using the token's updateTarget() function to update the target value, just like in the previous section.
The USDI token contract is prepared to work completely autonomously. Even if no one ever updates the target value of the PredictIndex contract, the updateTarget() function can perform a fallback update using a default value. This value is 0.2% per month, which is equivalent to 2.68% annualized. The monthly rate of change slowly converges towards that value if the reference index values stop updating. See the previous page on inflation-indexed currencies for more information on how this backup value is calculated.