View a markdown version of this page

向钱包注资并授予代理权限 - Amazon Bedrock AgentCore

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

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

提示

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

Coinbase CDP

当您使用Coinbase CDP连接器创建支付工具时,CreatePaymentInstrumentAPI会返回指向Coinbase的redirectUrl指向 WalletHub,Coinbase是一个用于授予代理权限和为钱包注资的门户。将最终用户引导至此 URL,为其钱包注资,并通过单一界面授予代理权限。

使用网 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 Onramp () card/bank

通过Coinbase的托管购买流程,使用信用卡、借记卡、Apple Pay、Google Pay或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 开发者门户中,将应用程序的网址添加到 “钱包” > “钱包” > Non-custodial “安全” 下的 “允许来源” 列表中。

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

Stripe(Privy)

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

部署前端

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

Privy 仪表板显示了 “应用程序设置” 下的 “域名” 字段,其中 localhost 已添加到允许的来源列表中
  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. 主屏幕显示 Connect 代理安装卡。

  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 水龙头获取测试网 US DC:

    • 为 EVM 钱包选择 Base Sepolia

    • 选择 Solana Devnet 获取 Solana 钱包

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

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

注意

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