As stablecoin deposits and redemptions are initiated by approved users the fund administrator (Fortunafi) will take certain actions whether it be making an investment or selling assets to add liquidity to the smart contract. As the PnL of the fund moves throughout it's lifetime the NAV per share is updated on a regular cadence by the administrator. The sections of time between where price is constant in the smart contracts are called epochs, and are programmed to increment every time the price is updated.
The diagram shows the investor's and the admin's interaction with the smart contract throughout the lifetime of the fund. Users make subscription orders by depositing stablecoins into the smart contract. The middle green section between each epoch (DRAIN) is the cutoff for users who will receive their shares on the next price update or the one following it depending on if they got in before or after that call by the admin. This prevents issues of frontrunning the price update as well as ensuring accurate price and share issuance calculations.
After the orders have been initiated by users, they are minted shares for deposits made before the call to drain by the administrator on the next price updated. And for redemptions the admin would call refill to add liquidity to the smart contract before the price update, so they could be filled pro rata over one or more epochs depending on available liquidity.
Flow of Funds:
Stablecoins (USDC) deposited into the fund contract for investment will be taken up by the administrator with the call to drain. From there, they will be transferred to a Circle supported chain in order for the fund to be able to convert the capital to dollars. Depending on the chain, the stablecoins will need to use an appropriate bridge, such the native IBC bridge for Canto. Upon receiving the funds in the Circle/Coinbase account, Fortunafi will transfer them to a brokerage account for investment.
To fill redemptions, the process works in reverse. Capital is moved out of the brokerage account, transferred to Circle, and used to obtain USDC that will be moved into the fund by calling refill before the next epoch is started.