x402协议与Algorand集成 teach-algorand-x402

x402协议是一个基于HTTP 402状态码的支付协议,支持Algorand作为一级区块链与EVM和SVM同级集成,通过客户端、服务器和协调者三个组件协同工作实现HTTP原生支付,支持ASA和ALGO资产,具备快速最终性特点。

链开发 0 次安装 0 次浏览 更新于 3/4/2026

x402协议与Algorand (AVM)集成

了解x402协议,Algorand如何作为与EVM和SVM同级的区块链集成,以及三个组件(客户端、服务器、协调者)如何协同工作以实现HTTP原生支付。

先决条件

在深入x402之前,请确保您理解:

  1. HTTP基础 – 请求/响应周期,状态码(特别是402 Payment Required)
  2. Algorand基础 – 地址、交易、ASAs、原子组
  3. 包管理器 – npm(TypeScript)或pip(Python)用于安装SDK包

核心概念:HTTP 402 Payment Required

x402将HTTP 402状态码转变为机器可读的支付协议。当客户端请求受保护的资源时,服务器以402响应并附带结构化的支付要求。客户端支付后,再次尝试请求并附上支付证明。

客户端              资源服务器         协调者          Algorand
  |                      |                      |                  |
  | 1. GET /api/data     |                      |                  |
  |--------------------->|                      |                  |
  | 2. 402 + 要求         |                      |                  |
  |<---------------------|                      |                  |
  | 3. 构建 + 签名交易   |                      |                  |
  | 4. GET + X-PAYMENT    |                      |                  |
  |--------------------->| 5. verify()          |                  |
  |                      |--------------------->| 6. simulate      |
  |                      |                      |----------------->|
  |                      |                      |<-----------------|
  |                      |<---------------------| 有效            |
  |                      | 7. settle()          |                  |
  |                      |--------------------->| 8. 签名 + 发送   |
  |                      |                      |----------------->|
  |                      |                      |<-----------------| 确认
  |                      |<---------------------| txId             |
  | 9. 200 + 数据         |                      |                  |
  |<---------------------|                      |                  |

Algorand作为一级公民

在x402中,Algorand (AVM)被等同于EVM和SVM对待——从不条件性,始终无条件注册。在EVM硬编码"eip155:84532"和SVM硬编码"solana:EtWTRABZaYq6iMfeYKouRu166VU2xqa1"的地方,AVM硬编码"algorand:SGO1GKSzyE7IEPItTxCByw9x8FmnrCDexi9/cOUJOiI="

CAIP-2网络标识符

x402 V2使用基于创世哈希的CAIP-2标识符:

网络 CAIP-2标识符
Algorand测试网 algorand:SGO1GKSzyE7IEPItTxCByw9x8FmnrCDexi9/cOUJOiI=
Algorand主网 algorand:wGHE2Pwdvd7S12BL5FaOP20EGYesN73ktiC1qzkkit8=

V1传统标识符(algorand-mainnetalgorand-testnet)仍然通过自动映射支持。

三个组件

1. 客户端

客户端请求受保护的资源并处理支付。它:

  • 发起初始HTTP请求,接收402和PaymentRequirements
  • 构建Algorand交易组(可选地使用费用抽象)
  • 签署自己的交易(通过钱包或私钥)
  • 用包含签名有效载荷的X-PAYMENT头再次尝试请求

TypeScript包: @x402-avm/fetch, @x402-avm/axios, @x402-avm/core/client Python包: x402-avm[httpx], x402-avm[requests]

2. 资源服务器

资源服务器在支付门后保护端点。它:

  • 对受保护的路由返回402和支付要求
  • 将支付头转发给协调者进行验证
  • 在成功验证和结算后授权访问

TypeScript包: @x402-avm/express, @x402-avm/hono, @x402-avm/next Python包: x402-avm[fastapi], x402-avm[flask]

3. 协调者

协调者验证和结算支付。它:

  • 验证支付交易结构和签名
  • 在链上模拟交易组
  • 签署费用支付方交易(对于费用抽象)
  • 将原子组提交到Algorand网络
  • 返回交易ID

TypeScript包: @x402-avm/core/facilitator, @x402-avm/avm/exact/facilitator Python包: x402-avm[avm]

在线协调者: https://facilitator.goplausible.xyz可供测试。

如何进行

第1步:了解支付流程

  1. 客户端发起GET /api/data – 服务器返回402PaymentRequirements
  2. PaymentRequirements包含:方案(exact),网络(CAIP-2),资产(ASA ID),金额(原子单位),支付给(Algorand地址),额外(费用支付方,小数位)
  3. 客户端构建交易组,签署自己的交易,编码为base64
  4. 客户端用包含{ x402Version, scheme, network, payload: { paymentGroup, paymentIndex } }X-PAYMENT头再次尝试
  5. 服务器转发给协调者 – 协调者验证,模拟,结算
  6. 服务器返回200和受保护的资源

第2步:选择您的技术栈

TypeScript:

# 核心 + AVM机制
npm install @x402-avm/core @x402-avm/avm algosdk

# 服务器中间件(选择一个)
npm install @x402-avm/express    # Express.js
npm install @x402-avm/hono       # Hono
npm install @x402-avm/next       # Next.js

# 客户端(选择一个)
npm install @x402-avm/fetch      # Fetch API
npm install @x402-avm/axios      # Axios

Python:

# 最小AVM支持
pip install x402-avm[avm]

# 服务器框架(选择一个)
pip install x402-avm[avm,fastapi]
pip install x402-avm[avm,flask]

# HTTP客户端(选择一个)
pip install x402-avm[avm,httpx]
pip install x402-avm[avm,requests]

# 一切
pip install x402-avm[all]

第3步:设置环境变量

对于资源服务器:

AVM_ADDRESS=YOUR_ALGORAND_ADDRESS_HERE
FACILITATOR_URL=https://facilitator.goplausible.xyz

对于协调者:

AVM_PRIVATE_KEY=<base64-encoded-64-byte-key>
ALGOD_SERVER=https://testnet-api.algonode.cloud
ALGOD_TOKEN=

对于客户端:

AVM_PRIVATE_KEY=<base64-encoded-64-byte-key>
RESOURCE_SERVER_URL=http://localhost:4021

第4步:注册AVM方案

每个组件都无条件注册AVM精确方案。注册是无条件的——没有环境变量守卫:

// 客户端
import { registerExactAvmScheme } from "@x402-avm/avm/exact/client";
registerExactAvmScheme(client, { signer });

// 服务器
import { registerExactAvmScheme } from "@x402-avm/avm/exact/server";
registerExactAvmScheme(server);

// 协调者
import { registerExactAvmScheme } from "@x402-avm/avm/exact/facilitator";
registerExactAvmScheme(facilitator, { signer, networks: ALGORAND_TESTNET_CAIP2 });

Algorand特定功能

费用抽象

Algorand的原子交易组使费用抽象成为可能。协调者通过2笔交易组代表客户端支付交易费用:

  1. **交易0(费用支付方):**协调者自我支付,金额=0,费用覆盖两笔交易
  2. **交易1(支付):**从客户端到支付方的ASA转移,费用=0

两笔交易共享一个原子组ID——它们全部执行或全部不执行。

ASA支持

x402-avm支持原生ALGO和Algorand标准资产(ASA)如USDC:

资产 测试网ASA ID 主网ASA ID 小数位
USDC 10458941 31566704 6
ALGO 0(原生) 0(原生) 6

原子组

支付组可以包括多达16笔交易,实现可组合性——除了支付之外,还可以附加额外的智能合约调用或加入。

快速最终性

Algorand交易在大约3.3秒内最终确定,没有重组或回滚。

重要规则/指南

  1. AVM始终是一级的 – 永远不要在条件检查中包装AVM注册
  2. 使用CAIP-2标识符algorand:SGO1GKSzyE7IEPItTxCByw9x8FmnrCDexi9/cOUJOiI=用于测试网
  3. 签名者分离 – 协议定义位于SDK中,实现位于示例中
  4. 原始字节协议 – SDK在方法之间传递原始msgpack字节;algosdk转换发生在边界
  5. 私钥格式AVM_PRIVATE_KEY是Base64编码的,64字节(32字节种子+32字节公钥)
  6. 地址派生 – 在Python和TypeScript中都是encode_address(secret_key[32:])

常见错误/故障排除

错误 原因 解决方案
402 Payment Required没有支付选项 服务器上未注册AVM方案 调用registerExactAvmScheme(server)
Invalid network 在预期V2的地方使用V1标识符 使用CAIP-2格式:algorand:SGO1...
Simulation failed 交易将在链上失败 检查余额,ASA加入,组结构
Invalid key length 错误的私钥格式 密钥必须是64字节,Base64编码
No signer for address 协调者不管理该地址 检查getAddresses()返回费用支付方
Group ID mismatch 交易未正确分组 使用algosdk.assignGroupID()编码前
Amount mismatch 支付金额与要求不符 使用与paymentRequirements.amount匹配的原子单位

参考资料/延伸阅读