快速开始
本指南将带你从零开始,将 Turing Wallet 浏览器 API 集成到你的 DApp 中。
前置条件
- 一个前端项目(React、Vue、原生 JS 等均可)
- 你的 DApp 用户需要安装 Turing Wallet 浏览器插件或移动端 App
访问钱包 API
钱包插件会向页面注入 Turing 全局对象,无需安装额外的软件包。
ts
if (!window.Turing) {
throw new Error("未检测到 Turing Wallet");
}
const addresses = await window.Turing.connect();最小 DApp 示例
以下是一个完整的端到端流程 —— 检测钱包 → 连接 → 获取地址 → 发送交易:
ts
// 1. 连接钱包
const addresses = await Turing.connect();
console.log("已连接:", addresses);
// BVM 账户: { tbcAddress, btcAddress }
// EVM 账户: { ethAddress, bnbAddress }
// 2. 检查连接状态
const connected = await Turing.isConnected();
console.log("是否已连接:", connected);
// 3. 获取钱包信息
const { name, platform, version } = await Turing.getInfo();
console.log(`钱包: ${name} v${version} (${platform})`);
// 4. 获取公钥
const { tbcPubKey } = await Turing.getPubKey();
console.log("公钥:", tbcPubKey);
// 5. 发送 P2PKH 交易
try {
const { txid, error } = await Turing.sendTransaction([
{
flag: "P2PKH",
address: "收款地址",
satoshis: 10000,
broadcastEnabled: true,
},
]);
if (txid) {
console.log("交易发送成功!txid:", txid);
}
if (error) {
console.error("交易失败:", error);
}
} catch (err) {
console.error("未知错误:", err);
}
// 6. 断开连接
await Turing.disconnect();支持的链
Turing Wallet 是一个多链钱包。不同的 API 方法对应不同的链:
| 链 | 方法 | 地址字段 |
|---|---|---|
| TBC (Turing BitChain) | sendTransaction, signTransaction, signAssociatedTransaction, sendBatchRequest | tbcAddress |
| BTC (Bitcoin) | btc.sendTransaction, btc.signTransaction, btc.sendBatchRequest | btcAddress |
| Ethereum | evm.sendTransaction | ethAddress |
| BSC | evm.sendTransaction | bnbAddress |
错误处理
大多数 API 方法在失败时返回 error 字段而非抛出异常。务必检查错误:
ts
const result = await Turing.sendTransaction(params);
if (result.error) {
// 处理错误 —— 显示给用户、重试等
console.error("错误:", result.error);
return;
}
// 成功路径
console.log("txid:", result.txid);signMessage、encrypt 和 decrypt 等方法通过抛出异常报告错误,需要使用 try-catch:
ts
try {
const { sig } = await Turing.signMessage({
message: "hello",
encoding: "utf-8",
});
} catch (error) {
console.error("签名失败:", error);
}离线签名(broadcastEnabled)
许多交易方法支持 broadcastEnabled 参数:
true(默认)—— 钱包签名并广播交易,返回txid。false—— 对于非 Merge 请求,钱包通过txraw返回本次请求的业务交易,由你自行广播。
独立的 FT_MERGE、STABLECOIN_MERGE、POOLNFT_MERGE 和 FTLP_MERGE 请求始终广播并返回 txid。如果非 Merge 业务操作返回多笔原始交易,必须按顺序处理。
ts
// 获取签名后的原始交易,不广播
const { txraw } = await Turing.sendTransaction([
{
flag: "P2PKH",
address: "收款地址",
satoshis: 10000,
broadcastEnabled: false,
},
]);
// 后续通过你自己的节点或 API 广播下一步
掌握了基础用法后,可以深入探索完整的 API:
- connect — 连接管理
- sendTransaction — TBC 交易(P2PKH、NFT、FT、PoolNFT、稳定币)
- evm.sendTransaction — Ethereum & BSC 交易
- btc.sendTransaction — Bitcoin 交易
- signMessage — 消息签名与验证
- sendBatchRequest — 批量操作