Skip to content

Commit 4414256

Browse files
authored
Add wstETH L2 token implementation (#2)
1 parent 80f8bb8 commit 4414256

File tree

2 files changed

+37
-0
lines changed

2 files changed

+37
-0
lines changed
Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,8 @@
1+
// SPDX-License-Identifier: Apache 2
2+
pragma solidity ^0.8.19;
3+
4+
interface INTTToken {
5+
error CallerNotMinter(address caller);
6+
7+
function mint(address account, uint256 amount) external;
8+
}

src/token/wstETHL2Token.sol

Lines changed: 29 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,29 @@
1+
// SPDX-License-Identifier: MIT
2+
pragma solidity ^0.8.19;
3+
4+
import "openzeppelin-contracts/contracts/token/ERC20/extensions/ERC20Burnable.sol";
5+
import "openzeppelin-contracts/contracts/access/Ownable.sol";
6+
7+
import "../interfaces/external/INTTToken.sol";
8+
9+
contract wstETHL2Token is INTTToken, ERC20Burnable, Ownable {
10+
address immutable _minter;
11+
12+
modifier onlyMinter() {
13+
if (msg.sender != _minter) {
14+
revert CallerNotMinter(msg.sender);
15+
}
16+
_;
17+
}
18+
19+
constructor(string memory name, string memory symbol, address minter, address owner)
20+
ERC20(name, symbol)
21+
Ownable(owner)
22+
{
23+
_minter = minter;
24+
}
25+
26+
function mint(address account, uint256 amount) external onlyMinter {
27+
_mint(account, amount);
28+
}
29+
}

0 commit comments

Comments
 (0)