本文介绍了 Alchemix 和 Gelato 合作推出的 Self-Repaying ENS (SRENS) 服务,该服务通过 Alchemix 的自偿还贷款和 Gelato 的自动化功能,实现了 ENS 域名自动续费,避免用户因忘记续费而失去域名。
BLOG — 用例
每个以太坊用户都知道以太坊域名服务(ENS)域名的价值。这些“人类可读”的地址(如“yourname.eth”)取代了繁琐的十六进制以太坊地址,使交易更加直接。但是,维护这些域名的所有权需要定期续费,这是一项容易被忽视的任务。
忘记续费你的 ENS 可能会导致你失去你的个性化地址,从而导致潜在的混乱和错误的交易。但是,无需担心。我们已经有了一个解决方案:自我偿还 ENS(SRENS)服务,这要感谢 wary 构建此工具作为黑客马拉松的一部分。SRENS 自动化了 ENS 域名续费的过程,有效地消除了失去你独特的 .eth 地址的风险。
这项独特的服务是 Alchemix 和 Gelato 之间的合作。Alchemix 允许用户创建自我偿还贷款,将其 ETH 转换为 alETH 以支付续费费用。同时,Gelato 自动化了续费过程,确保 ENS 域名始终得到更新。
SRENS 利用了四个不同协议的独特功能:Gelato Automation、Alchemix、Curve 和 Ethereum Name System (ENS)。
Alchemix 是一个未来收益支持的合成资产平台,允许用户通过自我偿还贷款提前获得未来收益。在 SRENS 的上下文中,Alchemix 用户利用他们存入的 ETH 来创建 alETH(一种产生收益的 ETH 版本),以支付 ENS 续费费用。
为了促进 alETH 到 ETH 的转换(这是 ENS 续费费用所必需的),SRENS 使用 Curve,这是以太坊上的一个稳定币交换协议。这确保了最有效的转换率,最大限度地降低了续费成本。
ENS 允许用户在以太坊上创建人类可读的地址。但是,这些地址需要每年续费,这正是 SRENS 旨在解决的问题。
这里是自动化发挥作用的地方。Gelato 自动化了续费过程,确保 ENS 域名及时续费,而无需用户进行任何手动干预。
在 Alchemix 中存入资金: 将足够的资金存入 Alchemix 的 alETH 合约中。确保金额足以支付你的 ENS 名称的续费费用。
访问网站 并搜索你要续费的任何 ENS 地址,然后单击要自动续费的每个 ENS 的切换开关。为了让合约发挥作用,请单击大的绿色“批准”按钮,使 SRENS 合约能够代表你从你的 Alchemix 仓位铸造 alETH。
在确认步骤 3 中的批准后,单击大的绿色“订阅”按钮以启用 SRENS 以自动续费你的 ENS,这样你的名称就永远不会过期。
将 Gelato 集成到 SRENS 系统中,可以为自动化 ENS 续费提供解决方案。用户会将他们的 alETH 抵押在 SRENS 合约中,作为续费费用的抵押品。当 ENS 名称即将过期时,Gelato“机器人”会检查条件(ENS 名称是否需要续费)。如果为真,这将触发一个使用抵押的 alETH 续费 ENS 名称的函数。
让我们深入研究一些关键函数:
要启动自动化过程,用户必须允许 SelfRepayingENS 合约铸造足够的 alETH 债务以支付多次续费。这是通过调用 alchemistV2.approveMint() 来完成的。
然后,用户通过调用 srens.subscribe(<name>) 订阅某个名称的 SRENS 服务。他们还可以使用 multicall 功能来订阅或取消订阅多个名称。首次订阅会创建一个 Gelato 任务,该任务会定期检查是否应通过调用 srens.checker() 来续费你的名称。这在内部存储在一个映射中。 subscribe() 函数启动一个 Gelato 任务来监视用户的 ENS 名称到期时间:
if (_taskIds[msg.sender] == 0) {
_taskIds[msg.sender] =
gelatoOps.createTask(address(this), abi.encode(this.renew.selector), _getModuleData(msg.sender), ETH);
}
Gelato 使用 checker() 函数来决定何时执行续费任务:
function checker(address subscriber) external view returns (bool canExec, bytes memory execPayload) {
...
return highestLimit == 0
? (false, bytes("no names to renew"))
: (true, abi.encodeCall(this.renew, (mostExpensiveNameToRenew, subscriber)));
}
function renew(string calldata name, address subscriber) external payable {
...
// 从 `subscriber` Alchemix 帐户借用 `neededETH` 金额的 ETH。
_borrowSelfRepayingETHFrom(subscriber, neededETH);
// 首先为 `name` 的到期数据 + `renewalDuration` 续费。
controller.renew{value: namePrice}(name, renewalDuration);
// 使用剩余的所有 ETH 支付 Gelato 执行者。
(bool success,) = gelato.call{value: address(this).balance}("");
if (!success) revert FailedTransfer();
}
function unsubscribe(string memory name) external {
//不取消 `msg.sender` 的 Gelato 任务会使上次取消订阅和后续订阅更便宜。
// 从 `subscriber` 的要续费的名称中删除 `name`。
bool removed = _subscribedNames[msg.sender].remove(name);
// 如果 `name` 不是 `subscriber` 的要续费的名称的一部分,则还原。
if (!removed) {
revert IllegalArgument();
}
emit Unsubscribe(msg.sender, name, name);
}
总之,自我偿还 ENS 服务巧妙地利用了 Alchemix、Gelato、Curve 和以太坊域名系统的优势,以简化和自动化维护 ENS 域名所有权的过程。
准备好见证 web3 的新时代,Gelato 受到 400 多个 web3 项目的信赖,为 DeFi、NFT 和游戏中的数百万笔交易提供支持。
Gelato 目前提供四项服务:
Web3 Functions:通过运行去中心化的云函数,将你的智能合约连接到链下数据和计算。
Automate:通过以可靠、对开发者友好和去中心化的方式自动执行交易来自动化你的智能合约
Relay:通过易于使用的 API,让你的用户可以访问可靠、强大且可扩展的 Gasless 交易
Gasless Wallet:一个强大的 SDK,使开发者能够通过结合 Gelato Relay + Safe 的智能合约钱包来提供世界一流的 UX,从而实现帐户抽象
见证 Gelato 领导的迈向去中心化未来的持续旅程!
- 原文链接: gelato.cloud/blog/ens-re...
- 登链社区 AI 助手,为大家转译优秀英文文章,如有翻译不通的地方,还请包涵~
如果觉得我的文章对您有用,请随意打赏。你的支持将鼓励我继续创作!