Porto 应用订阅 by ithacaxyz

  • ithaca
  • 发布于 2025-01-31 20:16
  • 阅读 16

本文介绍了 Application Subscriptions 的概念,它允许用户授权第三方代表他们执行操作,并展示了如何使用 Porto SDK 通过智能合约强制执行的策略将操作委托给服务器,以确保安全性。文章还通过一个Live Demo,演示了如何创建账户,将账户访问权限委托给服务器,并安排定期在链上执行的交易。

EXP-0003: 应用订阅

2025.02.19·实验

目录

下一代加密产品需要应用订阅。

在许多用例中,用户希望允许第三方代表他们执行操作:

  • 内容订阅(例如,付费新闻通讯、订阅《纽约客》等)
  • DeFi 操作(例如,收益再平衡、美元成本平均法和支付流)
  • AI 代理和 Telegram 机器人(例如,跟单交易、迷因币交易和复杂的 DeFi 策略)
  • NFT 投放狙击(例如,对时间敏感的投放进行自动铸造)
  • 通过服务器执行的定期交易而无需持续的用户交互来改进用户体验

围绕这些用例构建产品具有挑战性,因为以太坊钱包本身不支持任何围绕操作委托的功能,并且缺乏严格的策略来确保安全性。作为一种解决方法,许多产品将使用中心化服务,这可能会损害用户资金的安全性。

在本实验中,我们展示了下一代以太坊账户 SDK Porto 如何赋能开发者构建此类产品,通过将操作委托给具有智能合约强制执行策略的服务器来确保安全性。

点击下面的实时演示,或查看端到端示例存储库以了解更多信息。

实时演示

在此演示中,我们将创建一个账户,将账户访问权限委托给服务器(在本例中为 Cloudflare Worker),并安排一个定期交易在链上执行。 此演示概括了任何客户端-服务器设置以及上述所有用例。

我们逐步提供所有内容,以便你可以跟随操作。 在生产环境中,你可以将所有这些步骤合并为一个按钮点击或函数调用。

你可以点击每个步骤中的“原始响应”按钮,以查看 API 响应的外观。

1. 初始化账户。

如果这是你第一次看到 Ithaca 实验,请点击“注册”以创建一个新账户,否则点击“登录”以登录到你之前创建的现有账户。

你的账户

请务必尝试 EXP-0001EXP-0002!

2. 铸造一些实验性代币。

现在你有了一个账户,是时候铸造一些代币了。 这些代币没有价值,仅用于演示链上操作的委托。

点击下面的“铸造 100 EXP”!

铸造 EXP

初始化账户

3. 启动订阅。

现在你有了一个账户和代币,我们将启动订阅,这包括三个步骤:

  1. 从服务器请求密钥。这是一个链下操作,成本为 0 美元。
  2. 授予服务器权限。这会将上面生成的服务器密钥添加到账户。这是一个链上操作,在生产环境中花费几美分。
  3. 启动订阅。这是一个链上操作,在生产环境中花费几美分。

安全提示: 对于此演示,服务器在存储前不会加密私钥。不建议在生产环境中使用此方法。

订阅

初始化账户

交易历史

初始化账户

要重置演示并重新开始,请清除浏览器的本地存储并刷新页面,或使用隐私/隐身窗口。

我们知道此演示未向用户显示他们正在签署的内容或他们授予会话密钥的权限。我们有令人兴奋的更新来解决盲签名问题,这些更新正在进行中。你可以在 playground.porto.sh 预览它们,我们将很快分享更多内容。

恭喜!你刚刚使用Porto创建了订阅!

我喜欢这个!它是如何工作的?

我们在下面介绍委托过程的概要。

使用 Porto,委托过程遵循以下步骤:

  1. 用户初始化一个账户,或者创建一个新账户,或者登录到现有账户。
  2. 用户从服务器请求一个唯一的密钥,该密钥将用于服务器委托的操作。
  3. 服务器生成一个随机 P256 密钥对,使用公钥加密私钥以进行安全存储,并将公钥返回给用户。
  4. 用户使用公钥通过调用experimental_grantPermissions授予服务器权限,并指定权限和限制。
  5. 用户将一个委托请求(一个计划的交易)连同任何需要的交易参数和一个时间表发送给服务器。
  6. 服务器安全地存储请求信息,并在指定的时间执行交易。

我们将 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 我们的端到端示例存储库作为 起点,并构建你自己的应用程序,例如:

  • 自动支付内容订阅费用。
  • DeFi 收益再平衡和美元成本平均机器人。
  • 与 AI 代理框架集成。
  • 安全的 Telegram 机器人。
  • NFT 铸造机器人。

我们正在招聘优秀的工程师来帮助我们在 Ithaca 构建下一代加密应用程序。如果你构建了一些很酷的东西, 请联系 join@ithaca.xyz 告诉我们!

链接

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

0 条评论

请先 登录 后评论
ithaca
ithaca
Accelerating the crypto frontier. https://ithaca.xyz/