Alchemix Conversion Bug

Alchemix Finance
2 min readJun 21, 2022
Funds are safu

Recently, some community members noticed discrepancies between the amount of collateral they initially deposited and the amount that they had actively working to repay their debts. After some investigation, the Alchemix core team noticed a small bug in the Alchemist.liquidate() function.

Before unwrapping, the Alchemist converts the amount of shares being liquidated into the necessary amount of yield tokens. This issue was caused by a call to the wrong conversion function, thus causing the Alchemist to liquidate more yield tokens than expected (the underlyingTokens:yieldTokens ratio increases during normal operation), while still decrementing the user’s account by the correct amount of shares. The result was that, for any user that calls the liquidate() function, their shares balance was decremented by the correct amount, but every other depositor was subject to a small loss.

A patch was written and deployed within 24 hours of when the issue was first identified.

The Alchemix core team has run an analysis of all the accounts affected by this bug, and, as of today, has deposited the necessary reimbursements to any affected users’ accounts, no matter how small.

The reimbursed funds were pulled from the Elixir module. All liquidated collateral is sent to the Elixir (via the TransmuterBuffer) from the Alchemist, so these funds were never lost.

All funds are safu.

--

--