How does blast l2 receive and claim ETH yield

How does blast l2 receive and claim ETH yield

1.overview

One of the key differences between Blast L2 and other Layer 2 solutions is that in Blast L2, ETH functions as a native rebasing token.

1.1 what is rebasing token?

A rebasing token in the Ethereum Virtual Machine (EVM) context is a type of cryptocurrency whose supply automatically adjusts, or rebases periodically to maintain a target price or peg. This mechanism is designed to achieve certain economic goals, such as price stability or controlled inflation/deflation.

1.2 why blast l2 ?

  • Blast users and smart contracts can earn ~4% from beacon chain staking yield
  • Blast redirects sequencer fees to the dapps that induced them

2.three options for yield modes

Smart contract must interact with 0x4300000000000000000000000000000000000002 to change their gas mode.

2.1 Void (DEFAULT)

Void is default yield modes for smart contract which deploy on blast l2. The balance of smart contract never changes, no yield is earned . Any normal dapp can be deploy on blast without any changes.
Thus if you already have smart contract you can just move it to blast.

2.2 Automatic

Since eth is native rebasing on blast l2 , if deposit 1 eth into smart contract, the contract’s balance will grow to 1.04 ETH in a year.

2.3 Claimable

For claimable mode, if deposit 1 eth into smart contract , the contract’s balance will emain at 1 eth even after a year. We can implement two functions to claim yield:

  • claimYield
  • claimAllYield
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
interface IBlast{
// See IBlast interface source code below
}

contract MyContract {
constructor() {
IBlast(0x43...02).configureClaimableYield()
}

function claimYield(address recipient, uint256 amount) external {
//This function is public meaning anyone can claim the yield
IBlast(0x43...02).claimYield(address(this), recipient, amount);
}

function claimAllYield(address recipient) external {
//This function is public meaning anyone can claim the yield
IBlast(0x43...02).claimAllYield(address(this), recipient);
}
}

Comments