Following the context of #260, users of applications that authenticate through their ENS names might want to withdraw assets from the execution layer to the base layer. To do so, there has to be some ENS name resolution logic running at output execution time.
āļø Solution
Through DELEGATECALL vouchers (#258), we can create libraries that perform very specific tasks in the context of the application contract. In our case, we'd like to withdraw assets to addresses identified by their ENS names. The supported assets are:
Ether
ERC-20 tokens
ERC-721 tokens
ERC-1155 tokens
For each of these assets, there will be an associated library that takes the ENS name of the recipient and transfer function arguments (except the recipient address). The library will then resolve the ENS name to an Ethereum address, and perform the transfer safely (*).
(*) In the particular case of ERC-20 tokens, it will check whether transfer returns true.
š Context
Following the context of #260, users of applications that authenticate through their ENS names might want to withdraw assets from the execution layer to the base layer. To do so, there has to be some ENS name resolution logic running at output execution time.
āļø Solution
Through
DELEGATECALL
vouchers (#258), we can create libraries that perform very specific tasks in the context of the application contract. In our case, we'd like to withdraw assets to addresses identified by their ENS names. The supported assets are:For each of these assets, there will be an associated library that takes the ENS name of the recipient and transfer function arguments (except the recipient address). The library will then resolve the ENS name to an Ethereum address, and perform the transfer safely (*).
(*) In the particular case of ERC-20 tokens, it will check whether
transfer
returnstrue
.They will be called:
LibEtherForENS
LibERC20ForENS
LibERC721ForENS
LibERC1155ForENS