clETH (ERC20 Token) smart contract is deployed on Ethereum and the LST is given to the user on Ethereum only.


function mint(
       address to,
       uint256 amount
   ) external onlyRole(MINTER_ROLE) ZeroAmount(amount) whenNotPaused {
       _mint(to, amount);
  1. The MINTER_ROLE is assigned to the MSC.

  2. MSC directs clETH SC to mint clETH to a particular address. This happens in two occurrences:

    1. When the user has staked and clETH is to be transferred as LST.

    2. When the user claims rewards, clETH is given as the claimed reward.


function burnFrom(
       address account,
       uint256 amount
   ) public override ZeroAmount(amount) onlyRole(BURNER_ROLE) whenNotPaused {
       uint256 currentAllowance = allowance(account, _msgSender());
       require( currentAllowance >= amount, "ERC20: burn amount exceeds allowance");
       _burn(account, amount);
  1. The BURNER_ROLE is assigned to the MSC.

  2. MSC directs the clETH Smart Contract to burn clETH from a particular address. This happens in 1 occurrence:

    1. When the user claims unstake ETH from ISC.

Pause and Unpause

function pause() public onlyOwner {
function unpause() public onlyOwner {
  1. The PAUSER_ROLE is assigned to the Admin of the smart contract.

  2. The Admin can pause and unpause the minting of clETH.

Last updated