Chainlink Proof of Reserves
Last updated
Last updated
Oracle Contract: 0x32640253a3d0fc25597d8a784a839311ff404c83
Chainlink Proof of Reserve (PoR) adapters and oracles work together to provide a trustless and decentralized method to verify the collateralization of on-chain assets.
The number outputted by the AMKT PoR oracle is denominated in AMKT, the value of this figure denotes the amount of collateral denominated in AMKT, held in AMKT custody accounts backing the index.
While the majority of assets supporting the index are stored in AMKT's cold wallets, some are held in custodial hot wallets, which lack distinct on-chain addresses. Consequently, on-chain addresses can only be published for cold wallets, making it impossible to account for the complete balance of assets backing the index without including hot wallet balances.
Through the integration with Chainlink, AMKT can leverage the network's decentralized oracles, which have access to AMKT's custodial accounts. Oracles are decentralized and independent nodes that retrieve, process, and transmit data from off-chain sources to on-chain smart contracts. In the context of Proof of Reserve, these oracles fetch the required reserve data using PoR adapters and validate the collateralization of the assets backing AMKT.
The Chainlink AMKT PoR oracle works in 5 steps;
Data Retrieval: The Chainlink oracles use the PoR adapters to access the reserve data from the AMKT custody API.
Data Calculation: Each oracle independently retrieves two metrics;
The methodology from the AMKT token contract - stored as an IPFS hash.
Account balances from AMKT's Custodian, Coinbase.
A resulting calculation is then made where each asset is divided by its corresponding weighting in the methodology to derive an AMKT denominated figure for the amount of collateral backing the index.
Data Validation: The aggregation contract consolidates the data from multiple oracles, validates it using consensus algorithms, and calculates a single, reliable data point (e.g., the asset's reserve balance).
Data Transmission: The final, aggregated data is transmitted back to the requesting smart contract or user, providing a trustless and decentralized verification of the asset's collateralization.
There may be some discrepancies between the data provided by Chainlink oracles and the circulating AMKT due to the Chainlink oracle's two properties: heartbeat and deviation threshold. These properties govern when and under what conditions the oracles update their data.
Heartbeat: The heartbeat is a time-based property that dictates how often the oracles should update their data, regardless of any changes in the data itself. For example, if the heartbeat is set to 1 hour, the oracles will update the information every hour, even if the underlying data remains the same. Depending on the timing of the update, the data provided by Chainlink oracles may not always reflect the most recent changes in the circulating AMKT.
Deviation Threshold: The deviation threshold is a value-based property that determines when the oracles should update their data based on significant changes in the underlying data. If the change in data exceeds the deviation threshold, the oracles will update the information to ensure it remains accurate and relevant. However, if the change in data is within the deviation threshold, the oracles may not update their data immediately, leading to potential discrepancies between the Chainlink data and the actual circulating AMKT.
Although minor discrepancies may arise, the oracle currently has a heartbeat of 86400 seconds (24 hours) and a Deviation Threshold of 10%. This means that there can be a 24 hour delay between the current circulating supply of AMKT and the Proof of Reserve oracle.
The code for the AMKT PoR Chainlink external adapter is published publicly and can be found on Chainlink's Github Repository.