Smart contract interactions
Kiln DeFi Vault smart contracts respect the ERC4626 vault, which is very straightforward to integrate. When the user deposits tokens in the vault, it receives shares representing its position. For better UX, we recommend to abstract any assets <> shares conversion (if needed) from the user and always show the asset amounts on the UI and not the shares amounts.
Here is the ABI of the Vault contract:
1. Depositing
To deposit an amount of the vault's ERC20, transaction sender as to call the deposit(uint256 assets, address receiver)
function where assets
is the amount of ERC20 to deposit in the strategy and receiver
the address that should own the deposited position.
(optional) If you need to compute the amount of shares the user will receive before doing a deposit, you can preview the amount by calling previewDeposit(uint256 assets)
where assets
is the amount of ERC20 to deposit.
2. Get the balance in assets
3. Exiting a position
Case 1: exit part of a position
In this case we expect the user to input the amount of ERC20 it wants to withdraw and then call the withdraw(uint256 assets, address receiver, address owner)
where assets
is the amount of ERC20 to withdraw, receiver
the address that will receive the redeemed ERC20 and owner
the address of the position sender (the same as the tx sender).
Case 2: exit a position fully
To exit all the position, the best way is to get the shares amount of the user position using:
the
balanceOf(address owner)
function whereowner
is the address of the position owner.the
redeem(uint256 shares, address receiver, address owner)
whereshares
is the shares amount,receiver
the address that will receive the redeemed ERC20 andowner
the address of the position sender (the same as the tx sender).
Using the withdraw instead of the redeem function for this may cause the user to not exit all its position (as shares <> assets rate might change between the input and the actual block the transaction is included in).
Last updated