Collateral is a concept introduced by Symbiotic that brings capital efficiency and scale by enabling assets used to secure Symbiotic networks to be held outside of the Symbiotic protocol itself - e.g., in DeFi positions on networks other than Ethereum itself.
Symbiotic achieves this by separating the ability to slash assets from the underlying asset itself, similar to how liquid staking tokens create tokenized representations of underlying staked positions. Technically, collateral positions in Symbiotic are ERC-20 tokens with extended functionality to handle slashing incidents if applicable. In other words, if the collateral token aims to support slashing, it should be possible to create a Burner
responsible for proper burning of the asset.
For example, if asset is ETH LST it can be used as a collateral if it's possible to create Burner
contract that withdraw ETH from beaconchain and burn it, if asset is native e.g. governance token it also can be used as collateral since burner might be implemented as "black-hole" contract or address.
We've implemented default Burners for the assets restaked at Symbiotic, which need "unwrapping" (and allow it in a permissionless way):
An asset transfered to the Burner - wstETH
-
Trigger withdrawal
- Unwrap wstETH into stETH via wstETH contract
- Create requests with acceptable by the Lido Withdrawal Queue amounts
- Send withdrawal requests to the Lido Withdrawal Queue
-
Trigger burn
- Claim withdrawal request by its ID
- Burn ETH by
selfdestruct()
Deployment script: click
forge script script/deploy/wstETH_Burner.s.sol:wstETH_BurnerScript --broadcast --rpc-url=$ETH_RPC_URL
An asset transfered to the Burner - rETH
-
Trigger burn
- Unwrap rETH into ETH via rETH contract
- Burn ETH by
selfdestruct()
Deployment script: click
forge script script/deploy/rETH_Burner.s.sol:rETH_BurnerScript --broadcast --rpc-url=$ETH_RPC_URL
An asset transfered to the Burner - mETH
-
Trigger withdrawal
- Send a withdrawal request to the Mantle Staking contract
-
Trigger burn
- Claim withdrawal request by its ID
- Burn ETH by
selfdestruct()
Deployment script: click
forge script script/deploy/mETH_Burner.s.sol:mETH_BurnerScript --broadcast --rpc-url=$ETH_RPC_URL
An asset transfered to the Burner - swETH
-
Trigger withdrawal
- Create requests with acceptable by the Swell Exit contract amounts
- Send withdrawal requests to the Swell Exit contract
-
Trigger burn
- Claim withdrawal request by its ID
- Burn ETH by
selfdestruct()
Deployment script: click
forge script script/deploy/swETH_Burner.s.sol:swETH_BurnerScript --broadcast --rpc-url=$ETH_RPC_URL
An asset transfered to the Burner - sfrxETH
-
Trigger withdrawal
- Send a withdrawal request to the frxETH Redemption Queue
-
Trigger burn
- Claim withdrawal request by its ID
- Burn ETH by
selfdestruct()
Deployment script: click
forge script script/deploy/sfrxETH_Burner.s.sol:sfrxETH_BurnerScript --broadcast --rpc-url=$ETH_RPC_URL
An asset transfered to the Burner - ETHx
-
Trigger withdrawal
- Create requests with acceptable by the User Withdraw Manager contract amounts
- Send withdrawal requests to the User Withdraw Manager contract
-
Trigger burn
- Claim withdrawal request by its ID
- Burn ETH by
selfdestruct()
Deployment script: click
forge script script/deploy/ETHx_Burner.s.sol:ETHx_BurnerScript --broadcast --rpc-url=$ETH_RPC_URL