本文介绍了 Application Subscriptions 的概念,它允许用户授权第三方代表他们执行操作,并展示了如何使用 Porto SDK 通过智能合约强制执行的策略将操作委托给服务器,以确保安全性。文章还通过一个Live Demo,演示了如何创建账户,将账户访问权限委托给服务器,并安排定期在链上执行的交易。
2025.02.19·实验
在许多用例中,用户希望允许第三方代表他们执行操作:
围绕这些用例构建产品具有挑战性,因为以太坊钱包本身不支持任何围绕操作委托的功能,并且缺乏严格的策略来确保安全性。作为一种解决方法,许多产品将使用中心化服务,这可能会损害用户资金的安全性。
在本实验中,我们展示了下一代以太坊账户 SDK Porto 如何赋能开发者构建此类产品,通过将操作委托给具有智能合约强制执行策略的服务器来确保安全性。
点击下面的实时演示,或查看端到端示例存储库以了解更多信息。
在此演示中,我们将创建一个账户,将账户访问权限委托给服务器(在本例中为 Cloudflare Worker),并安排一个定期交易在链上执行。 此演示概括了任何客户端-服务器设置以及上述所有用例。
我们逐步提供所有内容,以便你可以跟随操作。 在生产环境中,你可以将所有这些步骤合并为一个按钮点击或函数调用。
你可以点击每个步骤中的“原始响应”按钮,以查看 API 响应的外观。
如果这是你第一次看到 Ithaca 实验,请点击“注册”以创建一个新账户,否则点击“登录”以登录到你之前创建的现有账户。
你的账户
现在你有了一个账户,是时候铸造一些代币了。 这些代币没有价值,仅用于演示链上操作的委托。
点击下面的“铸造 100 EXP”!
铸造 EXP
现在你有了一个账户和代币,我们将启动订阅,这包括三个步骤:
安全提示: 对于此演示,服务器在存储前不会加密私钥。不建议在生产环境中使用此方法。
订阅
交易历史
要重置演示并重新开始,请清除浏览器的本地存储并刷新页面,或使用隐私/隐身窗口。
我们知道此演示未向用户显示他们正在签署的内容或他们授予会话密钥的权限。我们有令人兴奋的更新来解决盲签名问题,这些更新正在进行中。你可以在 playground.porto.sh 预览它们,我们将很快分享更多内容。
恭喜!你刚刚使用Porto创建了订阅!
我们在下面介绍委托过程的概要。
使用 Porto,委托过程遵循以下步骤:
experimental_grantPermissions
授予服务器权限,并指定权限和限制。我们将 experimental_grantPermissions
设计为 ERC-7715: 授予权限 API 草案规范的替代方案,
它具有更具范围的 API。我们还利用 ERC-7836: 钱包调用准备 API 来代表用户准备和发送交易。
type Request = {
method: 'experimental_grantPermissions',
params: [{
// .. snip
// 要授予的权限。
permissions: {
// 调用权限。
calls: {
// 函数签名或 4 字节选择器。
signature?: string
// 授权的目标地址。
to?: `0x${string}`
}[],
// 花费权限。
spend: {
// 每个期间的花费限制(以 wei 为单位)。
limit: `0x${string}`,
// 花费限制的期间。
period: 'minute' | 'hour' | 'day' | 'week' | 'month' | 'year'
// 设置限制的 ERC20 代币。
// 如果未提供,则限制将设置为原生代币(例如 ETH)。
token?: `0x${string}`
}[]
// ERC-1271 验证权限。
signatureVerification?: {
// 可以调用
// 帐户的 ERC-1271 `isValidSignature` 函数的授权合约地址。
addresses: readonly `0x${string}`[]
},
},
}]
}
experimental_grantPermissions
调用提供了一个 API,用于通过权限规则对委托的操作进行精细控制。
experimental_grantPermissions
调用的使用者需要指定 至少一个 花费限制 和 至少一个 范围调用。
我们对这个 API 的强大和简单感到非常兴奋,并计划将此实现中的概念贡献
回到标准化流程中。
我们认为应用程序订阅是实现下一代加密应用程序的关键,涵盖 DeFi、消费者应用程序以及使用新接口进行的先锋探索。
本实验演示了将权限委托给服务器的简单应用,展示了用户如何授权服务器代表他们执行交易并施加特定的限制。
如果你喜欢此实验,你可以 fork 我们的端到端示例存储库作为 起点,并构建你自己的应用程序,例如:
我们正在招聘优秀的工程师来帮助我们在 Ithaca 构建下一代加密应用程序。如果你构建了一些很酷的东西, 请联系 join@ithaca.xyz 告诉我们!
- 原文链接: ithaca.xyz/updates/exp-0...
- 登链社区 AI 助手,为大家转译优秀英文文章,如有翻译不通的地方,还请包涵~
如果觉得我的文章对您有用,请随意打赏。你的支持将鼓励我继续创作!