StarkNet ID 自动续订说明 - Chainsecurity

本文解释了StarkNet ID的自动续订功能,该功能通过智能合约实现用户域名续费。文章详细阐述了用户如何设置续订的“限制价格”和ETH“授权额度”来保护资金,并说明了自动续订的条件及终止方式,强调了该机制在保障用户资金安全方面的设计。

a penguin wearing sunglasses

StarkNetID 自动续订解释器

StarkNet ID 最近为用户推出了订阅功能。一个自动续订合约已被部署,以方便用户域名的续订。本文解释了我们智能合约审计中审查的此订阅功能的核心功能。

TLDR: 我为合约批准的 ETH 是否能免受特权角色的侵害?

是的。智能合约旨在防止未经授权的 ETH 从用户账户转移,即使已经授予了代币 allowance

一名 admin 负责监督此 Auto-Renewal contract,而 renewer 则负责在用户指定的 limiting priceallowance 下触发续订。

最显著的潜在风险是 admin 在命名合约上将域名价格提高到上限,即用户指定的 limiting price。然而,即使有足够的 allowance,admin 也不能每年代表用户花费超过 limiting price 的金额。

技术解释器:添加订阅时会发生什么?

要添加订阅,用户需要与两个合约进行交互:

1 – Auto-Renewal Contract:用户创建一个支出流(enable_renewals()),其中指定了用户愿意为年度订阅支付的 limiting price

2 – StarkGate ETH Contract:用户需要授权(approve())Auto-Renewal contract 足够的 ETH allowance 以支付年度订阅费用。

请注意,limiting price 和 allowance 都限制了续订的 ETH 支出。续订将在以下两种情况中的任何一种下失败:

1 – 如果域名成本高于 limiting price,以下检查将失败。

let total_price = domain_price + tax_price;
assert(allowance >= total_price, '续订 allowance 不足');

2 – 如果代币 allowance 已用尽,对 StarkGate ETH transferFrom() 的调用将 revert。

// 转移 allowance(包括税费),如果 tx 失败将被取消
IERC20CamelDispatcher{ contract_address: erc20 }.transferFrom(renewer, contract, total_price);

例如,对于 10 年订阅,用户应至少为 Auto-Renewal contract 分配 $10 \times (\text{domain_price} + \text{tax_price})$ 的 allowance。10 年后,ETH allowance 不足将导致订阅失效。

此外,续订只能在以下条件下发生:

1 – 每年一次(带有一天的余量)。

// 364 是因为我们不断给现有月份增加一天的余量,
// 如果续订时间超过一天,余量会缩小。
assert(block_timestamp - last_renewed > 86400_u64 * 364_u64, '域名已续订');

2 – 如果域名将在一个月内到期。

// 检查域名是否设置在一个月内到期
let expiry: u64 = INamingDispatcher{ contract_address: naming }
    .domain_to_data(array![root_domain].span()).expiry;
assert(expiry <= block_timestamp + (86400_u64 * 30_u64), '域名未设置到期');

技术解释器:终止订阅时会发生什么?

用户可以随时通过以下两种方法之一终止订阅:

  1. Auto-Renewal Contract:用户可以禁用支出流(disable_renewals()),将 limiting price 设置为 $0$。
  2. StarkGate ETH Contract:用户可以通过向 StarkGate ETH 进行另一次 approve(approve())调用,将 Auto-Renewal contract 的 allowance 减少到 $0$ 或低于续订成本。

任何一种方法都将中断续订流程,导致后续的续订尝试失败。

关于 ChainSecurity

ChainSecurity 自 2017 年以来一直致力于保护智能合约。我们的客户包括蓝筹 DeFi 协议、有前途的新 Web3 项目、中央银行和大型组织。

阅读我们已发布的审计报告。

预约通话讨论审计前景。

延伸阅读

StarkNet ID 审计报告

StarknetID 网站

外部链接

  • 原文链接: chainsecurity.com/blog/s...
  • 登链社区 AI 助手,为大家转译优秀英文文章,如有翻译不通的地方,还请包涵~
点赞 0
收藏 0
分享
本文参与登链社区写作激励计划 ,好文好收益,欢迎正在阅读的你也加入。

0 条评论

请先 登录 后评论
chainsecurity
chainsecurity
江湖只有他的大名,没有他的介绍。