Skip to content
Request an audit

Sponsor answers on the three-step vault: who eats a share price move, and why the delay exists

We continued the Sukukfi contest on Code4rena, focusing on the ERC7575 vault contract.

Lesson summary:

  • Asked the sponsor what happens on share price chance in the 3 step process:
  • Q: What happens if the share price changes between fulfilling and depositing (claiming)
  • A: The protocol never promised the shares would maintain value! If the price drops between fulfillment and deposit, user loses, and vice versa. The user still gets the amount of shares which were promised to him at fulfilling.
  • Before: USDC.balanceOf(investmentVault) = 1M (physical tokens) _rBalances[ShareTokenUpgradeable] = 1M (accounting)
  • After adjustrBalance(1M, 500k): USDC.balanceOf(investmentVault) = 1M (UNCHANGED! Still there!) _rBalances[ShareTokenUpgradeable] = 500k (accounting loss)
  • Withdrawals: Alice can withdraw: ✅ Works (USDC is physically there) Bob can withdraw: ✅ Works (USDC is physically there). Both get paid! No insolvency!
  • Q: Why is there a delay, what's the point of having 3 steps (request, fulfill and claim)?
  • A: It gives the Investment Manager discretion over timing - they can delay fulfilling redemptions during market volatility to avoid forced liquidations at losses, and delay deposits until good investment opportunities exist.
Watch the session on YouTube ↗
Message on Telegram All 62 posts