View a markdown version of this page

为钱包注资并授予代理权限 - 亚马逊基岩 AgentCore

本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。

为钱包注资并授予代理权限

创建支付工具后,最终用户必须使用美元硬币(USDC)为钱包注资,并授予代理签署交易的权限。在最终用户完成这两个步骤之前,流程付款操作会失败,出现客户端异常。

您对第三方钱包提供商的使用受其条款的约束。 AWS 对钱包、资金、数字资产或相关私钥没有保管或控制权,也不对其负责。您应对因使用付款而产生的任何交易、争议或支付责任承担全部责任,并负责根据您的用例实施适当的保障措施(例如人为环监督)。 AgentCore 更多详情,请参阅《服务条款》第 50.15 节(亚马逊基岩 AgentCore 付款)。 AWS

提示

您可以使用 AWS 代理工具包中的 AgentCore 付款技能自动执行此页面上的步骤。该技能是 aws-agents 插件的一部分。借助它,AI 编码代理可以使用 agentcore CLI 创建您的支付管理器、连接器、凭证提供商、支付工具和会话,并为您的代理添加流程付款工具。有关详细信息,请参阅上的 GitHub快速入门和AWS 代理工具包。

Coinbase CDP

当您使用Coinbase CDP连接器创建支付工具时,CreatePaymentInstrumentAPI会返回指向Coinbase的redirectUrl指向 WalletHub,Coinbase是授予代理权限并为钱包提供资金的门户。引导最终用户访问此网址,为他们的钱包注资,并通过单一界面授予代理权限。

使用网 WalletHub 址

redirectUrl来自CreatePaymentInstrument响应的内容会打开Coinbase WalletHub,最终用户可以在其中为钱包注资并向代理授予签名权限。

instrument = dp_client.create_payment_instrument( userId="test-user-123", paymentManagerArn=PAYMENT_MANAGER_ARN, paymentConnectorId=PAYMENT_CONNECTOR_ID, paymentInstrumentType="EMBEDDED_CRYPTO_WALLET", paymentInstrumentDetails={ "embeddedCryptoWallet": { "network": "ETHEREUM", "linkedAccounts": [{"email": {"emailAddress": "user@example.com"}}] } }, clientToken=str(uuid.uuid4()), ) # Direct the end user to this URL wallet_hub_url = instrument["paymentInstrumentDetails"]["redirectUrl"] print(f"Open the WalletHub: {wallet_hub_url}")
Coinbase WalletHub 用于资助和授予权限

或者,您可以将 Coinbase AgentCore 模板部署 GitHub为自托管 Next.js 前端,通过可自定义的用户界面提供相同的资金和权限功能。有关设置说明,请参阅(备选)部署自托管前端。

为钱包注资

从 WalletHub (或自托管前端),最终用户可以使用以下任何一种方法为他们的钱包注资:

方法 说明 可用性

Coinbase 入门之路 () card/bank

通过Coinbase的托管购买流程,使用信用卡、借记卡、苹果支付、谷歌支付或ACH直接购买USDC。

仅限主网

接收(二维码)

显示二维码和钱包地址。用户扫描二维码或复制地址以从外部钱包或交易所汇款。

主网和测试网

从外部钱包转账

连接浏览器扩展钱包(Phantom MetaMask、Coinbase钱包),然后将USDC直接转移到嵌入式钱包。

主网和测试网

对于测试网环境,使用来自C ircle USDC水龙头的测试网USDC为钱包注资。

授予代理权限

Coinbase CDP 中的代理权限使用钱包范围的委托 ——每个钱包都从授权代理签署交易的最终用户那里获得自己的独立、有时限的授权。

  1. 最终用户导航到Coinbase前端仪表板的 “权限” 部分。

  2. 最终用户选择一个或多个钱包(EVM and/or Solana)进行授权。

  3. 最终用户选择授予权限并选择到期期限:7 天、 30 天(默认)、 60 天或 90 天。

一旦获得授权,代理人就可以代表最终用户的钱包签署交易,直到赠款到期。最终用户可以随时从同一个仪表板撤消权限。提供补助金后,继续创建付款会话。

撤消权限

最终用户可以随时从 WalletHub 或前端仪表板的权限部分撤消代理对任何钱包的访问权限。撤销后,在用户授予新权限之前,代理无法再签署该钱包的交易。

(备选)部署自托管前端

如果您需要可自定义的用户界面而不是托管用户界面 WalletHub,请将 Coinbase AgentCore 模板部署为自托管应用程序 Next.js 。

  1. 克隆存储库:

    git clone https://github.com/coinbase/cdp-agentcore-template.git cd cdp-agentcore-template
  2. 使用您的 CDP 证书创建.env.local文件:

    NEXT_PUBLIC_CDP_PROJECT_ID=<YOUR_CDP_PROJECT_ID> CDP_API_KEY_ID=<YOUR_CDP_API_KEY_ID> CDP_API_KEY_SECRET=<YOUR_CDP_API_KEY_SECRET> CDP_WALLET_SECRET=<YOUR_CDP_WALLET_SECRET> NEXT_PUBLIC_NETWORK_MODE=testnet
  3. 安装依赖项并启动应用程序:

    npm install npm run dev
  4. 在 Coinbase 开发者门户中,将您的应用程序的 URL 添加到 “钱包” > “钱包” > Non-custodial “安全” 下的 “允许的来源” 列表中。

自托管前端提供与上述相同的资金和权限授予流程,完全控制样式和用户体验。

Stripe(Privy)

Privy AgentCore SDK on GitHub 是一个 Next.js 参考前端,它使最终用户能够通过引导式设置流程进行身份验证、为钱包注资和授予代理权限。

部署前端

  1. 在 Privy 仪表板的 “应用程序设置” > “基础知识” > “域” 下将本地主机端点列入许可名单

Privy 仪表板显示了 “应用程序设置” 下的 “域名” 字段,将本地主机添加到允许的来源列表中
  1. 克隆存储库:

    git clone https://github.com/privy-io/aws-agentcore-sdk.git cd aws-agentcore-sdk
  2. 使用您的 Privy 凭据创建.env.local文件:

    NEXT_PUBLIC_PRIVY_APP_ID=<YOUR_PRIVY_APP_ID> PRIVY_APP_SECRET=<YOUR_PRIVY_APP_SECRET> NEXT_PUBLIC_PRIVY_SIGNER_ID=<YOUR_PRIVY_AUTHORIZATION_ID> NEXT_PUBLIC_NETWORK_MODE=testnet

    该NEXT_PUBLIC_PRIVY_SIGNER_ID值是您的 Privy 控制面板 “钱包基础架构” > “授权” 下的授权 ID(密钥 ID)。这是一个公共标识符,可以安全地公开客户端。

  3. 安装依赖项并启动应用程序:

    pnpm install pnpm dev

为钱包注资

当最终用户通过 Privy 前端进行身份验证时,会自动为 Base (EVM) 和 Solana 网络创建嵌入式钱包。最终用户可以使用以下任何一种方法为其钱包注资:

方法 说明 可用性

用卡付款(Stripe)

通过Stripe托管的加密入口使用信用卡或借记卡购买USDC,网址为。crypto.link.com

仅限主网

接收(二维码)

使用 EIP-681 (EVM) 或 Solana Pay URI 格式显示二维码和钱包地址。用户扫描二维码或复制地址以从外部钱包或交易所汇款。

主网和测试网

从外部钱包转账

连接浏览器扩展钱包(MetaMask 适用于Base,Phantom用于Solana),然后将USDC直接转移到嵌入式钱包。

主网和测试网

对于测试网环境,使用来自C ircle USDC水龙头的测试网USDC为钱包注资。

授予代理权限

Privy 中的代理权限使用会话签名者(也称为授权密钥)——最终用户在每个嵌入式钱包上注册代理的授权密钥,授予代理无需每笔交易批准即可签署交易的权限。

  1. 在 Privy 前端,最终用户登录并创建自动嵌入式钱包(一个 EVM,一个 Solana)。

  2. 主屏幕显示连接代理设置卡。

  3. 最终用户选择 Connect 代理,然后显示一个模式:“让您的代理访问您的钱包。”

  4. 最终用户选择 “授予访问权限”。

前端调用 addSessionSigners Privy SDK,在每个嵌入式钱包上注册代理的授权密钥。该操作是指数等效的——如果签名者已经注册,则不会返回任何错误。

连接后,代理可以代表用户的钱包签署交易。权限在明确撤销之前一直有效。

(可选)验证代理连接

前端通过调用 Privy API 来验证权限是否有效:

GET https://auth.privy.io/api/v1/wallets/{walletId} Authorization: Basic <base64(appId:appSecret)>

响应包含一个additional_signers数组。如果配置的授权 ID 出现在此阵列中,则表示代理已连接。

提供补助金后,继续创建付款会话。

使用测试网 USDC 进行测试

要进行开发和测试,请使用带有测试USDC的测试网络和资金钱包:

  1. NEXT_PUBLIC_NETWORK_MODE=testnet在前端.env.local文件中设置。

  2. 从 C ircle USDC 水龙头获取测试网 USDC:

    • 为 EVM 钱包选择 Base Sepolia

    • 为 Solana 钱包选择 Solana Dev net

  3. 将嵌入式钱包地址(显示在前端仪表板或二维码屏幕中)粘贴到水龙头中。

  4. 水龙头会在几秒钟内将测试的USDC分发到您的钱包中。

注意

Stripe card onramp(Privy)和 Coinbase Onramp 在测试网上不可用。使用 Circle 水龙头、外部钱包转账或直接地址转账进行测试网融资。