Skip to content

Commit

Permalink
fix: depositEth & redeemEth flow (#230)
Browse files Browse the repository at this point in the history
  • Loading branch information
r0ohafza committed Oct 1, 2022
1 parent ee9a0fd commit f368491
Show file tree
Hide file tree
Showing 3 changed files with 15 additions and 7 deletions.
4 changes: 2 additions & 2 deletions src/interface/tokens/ILEther.sol
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,6 @@ pragma solidity ^0.8.17;
import {ILToken} from "./ILToken.sol";

interface ILEther is ILToken {
function depositEth() external payable;
function redeemEth(uint shares) external;
function depositEth() external payable returns (uint);
function redeemEth(uint shares) external returns (uint);
}
16 changes: 11 additions & 5 deletions src/tokens/LEther.sol
Original file line number Diff line number Diff line change
Expand Up @@ -28,11 +28,14 @@ contract LEther is LToken {
Transfers shares to the user denoting the amount of Eth deposited
@dev Emits Deposit(caller, owner, assets, shares)
*/
function depositEth() external payable {
function depositEth() external payable returns (uint shares) {
uint assets = msg.value;
uint shares = previewDeposit(assets);
require(shares != 0, "ZERO_SHARES");

beforeDeposit(assets, shares);
if ((shares = previewDeposit(assets)) == 0) revert Errors.ZeroShares();

IWETH(address(asset)).deposit{value: assets}();

_mint(msg.sender, shares);
emit Deposit(msg.sender, msg.sender, assets, shares);
}
Expand All @@ -44,10 +47,13 @@ contract LEther is LToken {
@dev Emits Withdraw(caller, receiver, owner, assets, shares);
@param shares Amount of shares to redeem
*/
function redeemEth(uint shares) external {
uint assets = previewRedeem(shares);
function redeemEth(uint shares) external returns (uint assets) {
if ((assets = previewRedeem(shares)) == 0) revert Errors.ZeroAssets();
beforeWithdraw(assets, shares);

_burn(msg.sender, shares);
emit Withdraw(msg.sender, msg.sender, msg.sender, assets, shares);

IWETH(address(asset)).withdraw(assets);
msg.sender.safeTransferEth(assets);
}
Expand Down
2 changes: 2 additions & 0 deletions src/utils/Errors.sol
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,8 @@ pragma solidity ^0.8.17;

library Errors {
error AdminOnly();
error ZeroShares();
error ZeroAssets();
error ZeroAddress();
error ContractPaused();
error OutstandingDebt();
Expand Down

0 comments on commit f368491

Please sign in to comment.