Skip to content

Commit

Permalink
refactor: clean a bit
Browse files Browse the repository at this point in the history
  • Loading branch information
MerlinEgalite committed Oct 9, 2024
1 parent ba7127a commit f70d373
Show file tree
Hide file tree
Showing 5 changed files with 33 additions and 136 deletions.
17 changes: 10 additions & 7 deletions src/MorphoTokenVotesNoWrapper.sol → src/MorphoToken.sol
Original file line number Diff line number Diff line change
Expand Up @@ -11,19 +11,22 @@ import {
NoncesUpgradeable
} from "lib/openzeppelin-contracts-upgradeable/contracts/token/ERC20/extensions/ERC20PermitUpgradeable.sol";

contract MorphoTokenVotesNoWrapper is ERC20VotesUpgradeable, ERC20PermitUpgradeable, Ownable2StepUpgradeable {
string constant NAME = "Morpho";
string constant SYMBOL = "Morpho";
address constant DAO = address(0x0);
address constant LEGACY_MORPHO = address(0x0);
// TODO:
// - add natspecs
// - add events?
// - add error messages
// - update license
contract MorphoToken is ERC20VotesUpgradeable, ERC20PermitUpgradeable, Ownable2StepUpgradeable {
string constant NAME = "Morpho Token";
string constant SYMBOL = "MORPHO";

function initialize() public initializer {
function initialize(address wrapper) public initializer {
ERC20VotesUpgradeable.__ERC20Votes_init_unchained();
ERC20Upgradeable.__ERC20_init_unchained(NAME, SYMBOL);
Ownable2StepUpgradeable.__Ownable2Step_init();
ERC20PermitUpgradeable.__ERC20Permit_init(NAME);

_mint(DAO, 1_000_000_000e18); // Mint 1B to the DAO.
_mint(wrapper, 1_000_000_000e18); // Mint 1B to the wrapper contract.
}

function _update(address from, address to, uint256 value)
Expand Down
59 changes: 0 additions & 59 deletions src/MorphoTokenVotesWrapper.sol

This file was deleted.

59 changes: 0 additions & 59 deletions src/MorphoTokenVotesWrapperMinimalist.sol

This file was deleted.

30 changes: 21 additions & 9 deletions src/Wrapper.sol
Original file line number Diff line number Diff line change
Expand Up @@ -3,20 +3,32 @@ pragma solidity ^0.8.13;

import {IERC20} from "@openzeppelin/contracts/token/ERC20/IERC20.sol";

interface IBurn {
function burn(uint256 amount) external;
}

// TODO:
// - add natspecs
// - add events?
// - add error messages
// - update license
contract Wrapper {
address public constant LEGACY_MORPHO = address(0x0);
address public constant DAO = address(0x0);
address public constant MORPHO = address(0x0);
address public constant LEGACY_MORPHO = address(0x9994E35Db50125E0DF82e4c2dde62496CE330999);

address public immutable NEW_MORPHO;

// @dev morphoToken address can be precomputed using create2.
constructor(address morphoToken) {
require(morphoToken != address(0), "Wrapper: zero address"); // TODO: clean errors

NEW_MORPHO = morphoToken;
}

// Compliant to ERC20Wrapper for convenience.
function depositFor(address account, uint256 amount) public returns (bool) {
IERC20(LEGACY_MORPHO).transferFrom(msg.sender, address(this), amount);
IBurn(LEGACY_MORPHO).burn(amount);
IERC20(MORPHO).transferFrom(DAO, account, amount);
IERC20(NEW_MORPHO).transfer(account, amount);
return true;
}

/// @dev To ease wrapping via the bundler contract: https://github.com/morpho-org/morpho-blue-bundlers/blob/main/src/ERC20WrapperBundler.sol
function underlying() public pure returns (address) {
return LEGACY_MORPHO;
}
}
4 changes: 2 additions & 2 deletions test/Counter.t.sol
Original file line number Diff line number Diff line change
Expand Up @@ -2,10 +2,10 @@
pragma solidity ^0.8.13;

import {Test, console} from "forge-std/Test.sol";
import {MorphoTokenVotesWrapper} from "../src/MorphoTokenVotesWrapper.sol";
import {MorphoToken} from "../src/MorphoToken.sol";

contract CounterTest is Test {
MorphoTokenVotesWrapper public token;
MorphoToken public token;

function setUp() public {}
}

0 comments on commit f70d373

Please sign in to comment.