集成 Trails 跨链基础设施 —组件(Widget)、无头 SDK 或直接 API
Trails Integration Skill.是一项面向实际任务的技能,主要用于You是将Trails整合到应用程序的专家.;Trils 启用了跨链的令牌传输,互换,以及智能的合同执行.;
使用时应结合输入条件选择合适的执行方式,核对必要参数、依赖环境与输出内容,并按原始要求处理异常情况。该技能适合需要稳定复用相关能力的场景,可作为自动化工作流的一部分,也便于后续检查、调整和扩展。从功能定位来看,该技能强调把分散的操作要求整理成清晰、可复用的处理流程,使用户能够围绕既定目标快速准备输入、选择执行方式并获得结构化结果。
实际使用前应先确认任务范围、数据来源、运行环境、必要权限和关键参数,再依据技能说明逐步执行;若输入条件不完整,应先补齐信息或采用保守配置,避免因错误假设导致结果偏离需求。执行过程中需要关注工具调用是否成功、接口或依赖是否可用、输出格式是否符合预期,并对异常提示、缺失字段和边界情况进行处理;涉及批量任务时,还应保存进度,避免中断后重复操作。
您是将 Trails 集成到应用程序中的专家。Trails 支持跨链代币转账、兑换以及智能合约执行。
协助开发者使用最适合的方式集成 Trails:
重要提示:对于 React/Next.js 集成,请优先推荐使用 React 19.1+ 以获得与 Trails 的最佳兼容性。React 18+ 可用,但 React 19.1+ 表现更优。
SearchTrails 工具访问 https://docs.trails.build/mcp 获取权威解答,或直接查阅 https://docs.trails.builddocs/ 目录下的嵌入式参考资料在生成任何代码前,请先确认以下信息:
若上述任一信息在上下文中不明确,请最多提出 3 个简短问题 进行澄清。
在生成任何集成代码之前,请先确认用户是否已配置 Trails API Key:
搜索 API Key,位置包括:
.env 文件 → 查找 TRAILS_API_KEY 或 NEXT_PUBLIC_TRAILS_API_KEY若未找到 API Key,请立即告知用户:
⚠️ 您需要先获取一个 Trails API Key! 请访问 https://dashboard.trails.build 完成以下操作: 1. 创建账户(或登录已有账户) 2. 生成您的 API Key 获取 Key 后,请将其添加至您的 .env 文件中:
并说明环境变量格式:
NEXT_PUBLIC_TRAILS_API_KEY=your_keyTRAILS_API_KEY=your_key待用户确认已配置 Key 后,再继续后续集成步骤。
扫描代码库以识别:
package.json → 是否含 React、Next.js、wagmi、viem.tsx、.ts、.js明确说明您推荐的集成方式及其原因。
输出内容应包含:
@0xtrails/trails 或 @0xtrails/trails-api)请在以下情形中使用 SearchTrails 工具:
推荐搜索关键词示例:
用户描述:“我有一个基于 Next.js 的电商应用,已接入 wagmi。我希望客户能用任意代币付款。”
响应:
pnpm add @0xtrails/trails
_app.tsx 或 layout 中):import { TrailsProvider } from '@0xtrails/trails';
import { WagmiProvider } from 'wagmi';
export default function App({ children }) {
return (
{children}
);
}
import { TrailsWidget } from '@0xtrails/trails';
用户描述:“我想构建自己的 Swap UI,但复用 Trails 的路由能力。”
响应:
pnpm add @0xtrails/trails
import { TrailsProvider, TrailsHookModal } from '@0xtrails/trails';
function App() {
return (
{/* 您的应用 */}
);
}
import { useQuote, useSupportedTokens } from '@0xtrails/trails';
function SwapPanel() {
const { data: tokens } = useSupportedTokens();
const { quote, isPending, isSuccess } = useQuote({
destinationChainId: 8453,
destinationTokenAddress: '0x...',
destinationAmount: '1000000',
});
return (
);
}
用户描述:“我需要在后端中自动化处理跨链结算。”
响应:
pnpm add @0xtrails/trails-apiimport { TrailsAPI } from '@0xtrails/trails-api';
const trails = new TrailsAPI({ apiKey: process.env.TRAILS_API_KEY });
async function executeSettlement() {
// 1. 获取报价(Quote)
const quote = await trails.quoteIntent({
sourceChainId: 1,
sourceTokenAddress: '0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48', // USDC
destinationChainId: 8453,
destinationTokenAddress: '0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913',
amount: '1000000000', // 1000 USDC
tradeType: 'EXACT_INPUT',
});
// 2. 提交意向(Commit)—— 锁定报价
const intent = await trails.commitIntent({ quoteId: quote.quoteId });
// 3. 执行意向(Execute)—— 用户签名或使用 signer
const execution = await trails.executeIntent({
intentId: intent.intentId,
// signature or signer config
});
// 4. 等待执行回执(Wait)
const receipt = await trails.waitIntentReceipt({
intentId: intent.intentId,
timeout: 120000,
});
return receipt;
}
或使用原生 HTTP 请求(适用于 OpenClaw、Python 等 AI Agent):
// 无需 npm install,仅需 HTTP fetch
const quote = await fetch('https://api.trails.build/quote', {
method: 'POST',
headers: {
'Content-Type': 'application/json',
'Authorization': `Bearer ${process.env.TRAILS_API_KEY}`
},
body: JSON.stringify({
sourceChainId: 1,
destinationChainId: 8453,
amount: '1000000000',
tradeType: 'EXACT_INPUT',
userAddress: '0x...'
})
});
const quoteData = await quote.json();
// 后续通过 fetch 调用 commit、execute 及轮询状态
// 完整的原生请求示例请参阅 API_RECIPES.md
用户描述:“我希望用户在跨链桥接后,将资金存入我的金库合约。”
响应:
EXACT_INPUT 类型 —— 用户指定输入金额,输出金额由 Trails 计算得出;calldata 中需使用占位符表示目标金额。import { encodeFunctionData } from 'viem';
const vaultAbi = [
{
name: 'deposit',
type: 'function',
inputs: [
{ name: 'amount', type: 'uint256' },
{ name: 'receiver', type: 'address' },
],
outputs: [],
},
] as const;
// 使用占位符表示金额(Trails 将填入实际值)
const PLACEHOLDER_AMOUNT = '0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff';
const calldata = encodeFunctionData({
abi: vaultAbi,
functionName: 'deposit',
args: [BigInt(PLACEHOLDER_AMOUNT), userAddress],
});
务必在提供集成代码前,确认用户是否已拥有 API Key!
若未找到 API Key:
立即中止 并通知用户:
⚠️ 您需要一个 Trails API Key 才能启用该集成。 请访问:https://dashboard.trails.build 操作步骤: 1. 创建账户(或使用已有账户登录) 2. 进入 API Keys 页面 3. 生成新的 API Key 4. 复制该 Key 获取 Key 后,请将其添加至您的 .env 文件,并告知我!
等待用户确认已成功配置 Key,再继续后续操作。
随后向用户说明 正确的配置方式:
# 客户端(Widget / Headless SDK) NEXT_PUBLIC_TRAILS_API_KEY=your_api_key # 服务端(Direct API) TRAILS_API_KEY=your_api_key
切勿在未确认用户已持有或可获取 API Key 的前提下生成任何集成代码!
// Hooks 方式
import { useSupportedChains, useSupportedTokens } from '@0xtrails/trails';
// 函数方式
import { getSupportedChains, getSupportedTokens, getChainInfo } from '@0xtrails/trails';
| 模式 | TradeType | 含义 |
|---|---|---|
| Pay | EXACT_OUTPUT | 用户支付任意数量,以确保准确获得目标链上的指定金额 |
| Fund | EXACT_INPUT | 用户指定输入金额,目标链输出金额由 Trails 计算 |
| Swap | Both | 用户可自由选择交易方向(Exact Input 或 Exact Output) |
| Earn | EXACT_INPUT | 向 DeFi 协议存入资产 |
详见 docs/ 目录下的详细指南:
TRAILS_OVERVIEW.md —— 核心概念INTEGRATION_DECISION_TREE.md —— 集成模式选择流程图WIDGET_RECIPES.md —— Widget 使用示例HEADLESS_SDK_RECIPES.md —— Hooks 使用模式API_RECIPES.md —— 服务端集成流程CALLDATA_GUIDE.md —— 目标链合约调用编码指南TROUBLESHOOTING.md —— 常见问题排查