Logo
新用户订阅 RPC,首月享 6.5 折优惠查看优惠
OnFinality Learn
集成与开发阅读约 9 分钟

什么是 Crossmint?钱包、稳定币与智能体支付基础设施详解

Crossmint 是一个开发者平台,它将可编程钱包、稳定币支付、法币出入金和合规功能打包到一个 API 中,让团队无需自行搭建区块链底层设施即可添加资金流转功能。

TL;DR

Crossmint 是一个平台,它将可编程钱包、稳定币支付、法币出入金、代币化和合规工具打包在单个 API 之后,面向金融科技公司、企业和 AI 智能体平台。团队无需拼凑钱包 SDK、支付处理器、KYC 供应商和 RPC 访问,而是调用 Crossmint 端点,让平台处理密钥管理、链抽象和受监管的资金流转。本文解释了该产品背后的思维模型,逐步介绍可运行的集成与验证流程,并说明 Crossmint 的边界在哪里,以及你自己的基础设施(例如 RPC 节点)在哪些环节仍然重要。

一段话了解 Crossmint

Crossmint 是一家钱包和稳定币基础设施公司,为开发者提供统一的 API 来持有、转移和消费数字资金。其产品范围涵盖面向最终用户的嵌入式钱包、面向企业的资金钱包、法币出入金、代币结账、代币化和铸造,以及一套较新的面向智能体的产品,让 AI 智能体在可编程支出规则下持有资金并支付商品。

重要的理念是抽象。一个希望用户持有 USDC、用银行卡充值余额并提现到银行账户的团队,原本需要集成钱包库、支付处理器、KYC 提供商、制裁筛查服务以及一个或多个区块链 RPC 端点。Crossmint 将这些关注点打包在单一供应商关系和单一 API 密钥之后,并且仅在你真正需要的地方暴露区块链。

  • 受众:金融科技公司、企业、市场和 AI 智能体平台
  • 核心产品:嵌入式钱包、资金钱包、出入金、结账、代币化、智能体钱包
  • 模式:模块化产品置于单一 API 之后,可单独使用或作为全栈使用
  • 合规:KYC、AML 和制裁筛查内置于受监管产品中

集成前的假设

本演练假设你拥有一个带有服务端 API 密钥的 Crossmint 账户、一个你控制的后端(Node.js 或 Python 即可),以及一个可以创建一次性钱包的测试环境。它还假设你理解托管钱包(提供商代表你持有密钥)和非托管钱包(用户自己持有密钥)之间的区别。Crossmint 的嵌入式钱包设计为最终用户永远不需要管理助记词,这意味着安全模型转向提供商和你自己的 API 密钥处理。

你不需要深入的区块链经验即可跟随操作,但你确实需要知道你的产品将使用哪条链和哪种资产。Crossmint 支持多条链和多种资产;确切列表会随时间变化,因此请在 Crossmint 文档中确认当前支持情况,而不是假设某条链可用。

思维模型:钱包、编排和轨道

将 Crossmint 视为堆叠在一起的三层。底层是轨道:区块链、银行连接和卡网络。中间层是编排:Crossmint 决定给定转账使用哪条轨道,处理 gas 抽象,并路由法币兑换。顶层是产品 API:钱包、结账、付款和智能体支出规则,你的应用程序直接调用。

当用户用信用卡为钱包充值后,请求从你的后端传到 Crossmint,经过支付处理器和 KYC 检查,并结算为 Crossmint 控制或共同控制的钱包中的稳定币余额。当该用户之后向另一个地址发送 USDC 时,Crossmint 在相关链上签名并广播交易。你的应用程序从不接触私钥或原始交易,这是团队选择此模型的主要原因。

  • 轨道层:EVM 链、Solana、Stellar 和法币银行合作伙伴
  • 编排层:路由、gas 抽象、合规检查、重试
  • 产品层:钱包、结账、付款、代币化、智能体支付

通过 API 创建钱包

第一个集成步骤通常是为用户创建钱包并读取其地址。确切的端点路径和负载结构是版本化的,因此请将下面的代码视为需要根据当前 Crossmint API 参考进行调整的结构,而不是冻结的契约。将返回的钱包标识符存储在你自己的数据库中,并将其映射到你的内部用户 ID。

以下 curl 调用创建一个钱包并打印响应。将占位符替换为你自己的值;切勿将真实 API 密钥提交到源代码管理中。

curl -X POST "https://staging.crossmint.com/api/2022-06-09/wallets" \
  -H "X-API-KEY: $CROSSMINT_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "type": "smart",
    "chain": "base",
    "owner": "user:YOUR_INTERNAL_USER_ID"
  }'

从后端充值并转移资金

钱包存在后,下一步是充值并转出价值。典型流程是:创建一个入金会话,以便用户可以用卡支付,等待会话结算,然后读取钱包余额以确认稳定币已到账。对于付款,你调用转账端点,提供目标地址或银行账户参考,具体取决于你发送的是稳定币还是法币。

下面的 JavaScript 示例展示了服务端转账请求的结构。它使用环境变量存储密钥,并使用占位符收款地址。在生产环境中,你会添加幂等键、重试逻辑和 webhook 处理器,以便系统对结算事件做出反应,而不是轮询。

const res = await fetch("https://staging.crossmint.com/api/2022-06-09/wallets/WALLET_ID/transfers", {
  method: "POST",
  headers: {
    "X-API-KEY": process.env.CROSSMINT_API_KEY,
    "Content-Type": "application/json"
  },
  body: JSON.stringify({
    recipient: "base:0xRECIPIENT_ADDRESS",
    token: "usdc",
    amount: "10.00"
  })
});

if (!res.ok) {
  const err = await res.text();
  throw new Error(`transfer failed: ${res.status} ${err}`);
}

const transfer = await res.json();
console.log(transfer.id, transfer.status);

在链上和仪表板中验证结果

成功的 API 响应与已结算的交易并不相同。验证应在两个层面进行。首先,检查 Crossmint 仪表板或转账状态端点,以确认平台将转账记录为完成。其次,通过你控制的 RPC 端点查询收款地址或交易哈希,以确认链上效果。

下面的 Python 片段使用 JSON-RPC 调用查询 EVM 链上收款人的 USDC 余额。它针对 USDC 合约的 balanceOf 函数使用 eth_call。你需要你所使用链的正确合约地址,以及一个服务该链的 RPC_URL。如果你还没有,OnFinality RPC 服务和专用节点选项是合理的起点,RPC 端点指南解释了如何在共享访问和专用访问之间进行选择。

import os, json, urllib.request

RPC_URL = os.environ["RPC_URL"]
USDC = "0xUSDC_CONTRACT_ADDRESS"
RECIPIENT = "0xRECIPIENT_ADDRESS"

# balanceOf(address) selector + 32-byte padded address
data = "0x70a08231" + RECIPIENT[2:].rjust(64, "0")

payload = json.dumps({
    "jsonrpc": "2.0",
    "id": 1,
    "method": "eth_call",
    "params": [{"to": USDC, "data": data}, "latest"]
}).encode()

req = urllib.request.Request(RPC_URL, data=payload, headers={"Content-Type": "application/json"})
with urllib.request.urlopen(req, timeout=10) as resp:
    result = json.load(resp)["result"]

print(int(result, 16) / 1e6)  # USDC has 6 decimals

用于你自己的集成测试的结果表

不要相信单次顺利路径的运行。构建一个小型测试矩阵,并将每个案例的结果记录在如下表格中。列是固定的;值由你从自己的运行中填写。这是可复现的测量方法:相同的输入、相同的环境、记录的输出。

测试用例预期状态观察到的状态链上确认备注
创建钱包201不适用
入金 10 美元已结算余额 +10
转账 5 USDC完成收款人 +5
使用错误地址转账4xx无变化
使用相同幂等键的重复请求单次转账单次转账

首先在暂存环境中运行每个案例,然后以小额在生产环境中重复。记录时间戳、API 响应代码和交易哈希,以便后续审查者可以复现结果。

排查常见的集成失败

大多数失败分为四类:身份验证、合规、链不匹配和结算时机。身份验证错误通常意味着缺少或错误的 X-API-KEY 头,或者密钥作用域指向错误的环境。当用户未完成 KYC 或制裁筛查标记了某个地址时,会出现合规错误;这些错误不可重试,需要产品层面的响应。

链不匹配发生在你在一條链上创建钱包并尝试在另一条链上转账时,或者当你以错误格式传递收款地址时。结算时机是最常见的混淆来源:入金可能在稳定币余额在链上可见之前就返回成功状态,因此你的验证步骤应使用超时进行轮询,而不是假设即时最终性。

  • 401 或 403:检查 API 密钥、环境和头名称
  • KYC 或制裁拒绝:显示清晰消息,不要盲目重试
  • 无效收款人:在发送前验证地址格式和链前缀
  • 余额不可见:使用有界超时轮询 RPC 端点

Crossmint 的边界与你的基础设施的起点

Crossmint 抽象了很多东西,但它并没有消除你自身系统对可靠链访问的需求。如果你索引交易、核对余额或独立验证结算,你仍然需要你控制的 RPC 端点。共享公共端点适合开发,但生产环境中的对账受益于具有可预测延迟和速率限制的专用节点。

这也是提供商选择重要的地方。Crossmint 是一个资金流转平台;它不是 RPC 提供商。将其与可靠的节点服务配对,可以使你的验证路径独立于转移资金的同一供应商,这是一种有用的关注点分离。关于端点选择,RPC Assistant 涵盖了具体的提供商和网络建议,而 Learn 页面涵盖了方法论。

  • 使用 Crossmint 处理钱包、出入金和合规
  • 使用你自己的 RPC 访问进行对账和链上验证
  • 尽可能保持验证独立于资金流转供应商

局限性与权衡

捆绑模式很方便,但并非没有权衡。你将密钥管理和合规决策委托给第三方,这意味着你的产品的风险状况包括他们的正常运行时间和监管立场。定价基于使用量并因产品而异,因此在承诺之前,请根据预期交易量对成本进行建模。链和资产覆盖范围会随时间变化,因此今天可用的链可能会被弃用,或者会添加新的链;将你的集成固定到有文档记录的、受支持的组合。

还有一个锁定维度。Crossmint 描述了一种开放架构,但任何存储钱包标识符并依赖平台特定 webhook 的集成都需要付出努力才能迁移。设计你的数据模型,使钱包 ID 和转账记录可移植,并保留你自己的资金流动分类账,这样你就不会依赖单一仪表板来获取历史记录。

生产集成的后续步骤

从一个狭窄的切片开始:一条链、一种资产、一个流程,例如入金后转账。从第一天起就用你自己的 RPC 端点构建验证步骤,因为以后改造对账会很痛苦。为结算事件添加 webhook,为每个变更调用添加幂等键,并为失败的转账添加死信队列。然后,一旦核心流程稳定,再扩展到付款和智能体钱包。

对于基础设施方面,查看 OnFinality 网络目录以确认链支持,在 RPC 定价页面上比较共享和专用访问,如果你需要对账的保证吞吐量,请阅读专用节点概述。如果你仍在选择端点,RPC Assistant 的端点指南是获得具体建议的最快途径。

  • 阶段 1:在单条链上创建钱包和入金
  • 阶段 2:具有幂等性和 webhook 处理的转账
  • 阶段 3:付款、资金管理和智能体支出规则
  • 贯穿始终:通过你自己的 RPC 进行独立的链上验证

永远不用担心基础设施

OnFinality 消除了 DevOps 的繁重工作,让您能够更聪明、更快地构建。

开始